# Simulation Tools

## Getting a Handle on Simulation Requirements

Aaron, here. I think we could all benefit from a little discussion of the purpose of simulation and each groups interests in various simulation software features and capabilities. For us, as designers of highly capable mobile platforms, we're biased toward thinking of simulation in terms of accurate multi-body dynamics (rigid and possibly soft bodies), collision detection, and visualization. So, with that intro, let me lay out what I see as key components of simulation software that interest us.

**Modeling/Model Importing**- How easy is it design a model in the software or import an existing solid model?**Rigid body/component Simulation**- This is stuff like robot bodies, legs, surfaces, obstacles, etc.**Constraints**- Can the engine handle generic 6DOF joints, hinge joints, prismatic joints, etc?**Physics**- Are the passive dynamics believable? Can we integrate control inputs easily? Is the machinery for handling constraints stable?**Collision Detection**- (This is sort of a subset of physics.) What collision geometries are available? How are collisions handled? Can the exact time of collision be computed in order to insert custom contact or friction models? Does the collision detection rely on a constraint solver to push interpenetrating bodies apart?**Hardware abstraction**- Can controllers be developed in simulation and be seamlessly transferred to hardware? Our hardware will probably be really specialized - so, does it even matter?**Control simulation**- Can control loops be easily coded and executed in simulation with predictable results?**Sensor simulation**- What kind of sensors are available or can be easily implemented? (cameras, laser range finders, GPS, IMU, etc...)**High level planning**- Okay, I don't really know what this encompasses, but I suspect it could wind up being important.

As you can probably tell from the feature categories I focused on above, we're mostly interested in simulation as a design tool. We'd like to explore a huge space of design variables and parameters quickly to enable us to actually build capable platforms. So, simulation is more of a tool for us than a research objective in and of itself. To that end, we're currently using some coarse, but free simulation tools in the form of the open source modeling tool, Blender and the open source physics engine now included with it, Bullet. Some main advantages are 1) that it closes the solid modeling/simulation loop. 2) It provides a nice visualization environment. 3) Bullet's physics are reasonably accurate; its collision detection algorithm is very fast, and it provides a variety of handy collision geometries. 4) It interfaces very nicely with Python and all its attendant modules like Numpy (linear algebra), OpenCV (vision), ML (machine learning), etc. 5) It's free and open source.

## Physics Engines:

- ODE: Open Dynamics Engine - an open source rigid body dynamics simulator that provides collision detection and simple contact force models
- Bullet: open-source physics-engine that comes with blender
**A good review paper**- PhysicsEngines.pdf

## Simulation Tools:

**Dynamics**

**Player/Stage/Gazebo**: Originally developed in DARPA Distributed Robotics program. Now open source.**Official MAST simulation environment in AM3**- Player: abstract interface for robot sensing, communication, and control
- Stage: 2D simulation environment designed to interface with Player
- Gazebo: 3D simulation environment designed to interface with Player; dynamics provided by ODE
- See the MAST-specific page

**USARSim:**Unified System for Automation and Robot Simulation - based on a gaming engine originally developed by NIST**Official MAST simulation environment in Integration Center**- See http://www.cc.gatech.edu/ai/robot-lab/mast/instructions.html for details about MAST-specific installations

**Digital Biomechanics:**Rigid body simulator from Boston Dynamics**SolidWorks Motion:**Originally the ADAMS dynamics solver, then Mechanical Dynamics, then CosmosMotion then SolidWorks Motion- rigid body dynamics modeling tool that runs inside of the SolidWorks environment GUI , re-written from scratch for SolidWorks 2008
- can both make animations and give numerical forces, moments, displacements, etc.
- free with SolidWorks Office Premium

**Blender**: open-source solid modeling/animation tool which includes a game engine with python scripting suitable for rigid body simulation**Working Model 2D:**quick concept modeling and simulation of mechanisms**GUF**: Grand Unified Fly (fruit fly simulator for aerodynamics and vision control from Caltech)**SIMM:**3D modeling of bones, muscles, ligaments, etc.**Open-SIMM:**Open source version of SIMM, can be interfaced to Matlab**Adams:**General dynamics package. Capable of analyzing musculoskeletal systems**Arachi:**Used to simulate multi-body dynamics**Real World**: most amazing gaming engine in the world, demoed at DARPATech 2007 by Total Immersion Software in Alameda, CA**PyDSTool**: python-based dynamical systems simulation tool developed by the Center for Applied Mathematics at Cornell**DARTS**: "High-fidelity, flexible, multi-body dynamics simulator" developed by JPL for use in spacecraft mission simulation.

**High-Level Planning**

**Mission Lab**: Mission simulator from GaTech which has been evolved over many DARPA programs.**Official mission planner in MAST**. To download a virtual machine with MissionLab and Gazebo pre-installed, check out MissionLab VM- See also the MAST-specific page

**MIDAS:**Microsystems Integration Design Analysis & Simulation tool - being developed at GaTech under this MAST program

**FEM**

**ANSYS:**Finite element code from Ansys Corp.**COMSOL:**Finite element code from Comsol Corp.**SolidWorks CosmosWorks:**Finite element program that runs inside of SolidWorks, from Cosmos Corp.**FEFLO:**3D unsteady unstructured grid CFD code for flapping flight etc. by Naval Research Lab

**Circuits**

**Pspice A/D:**Circuit simulator, part of the Orcad/Cadence package

## Design Tools

**Mechanical Design**

**SolidWorks:**3D mechanical design tool

**Circuits**

**SolidWorks CircuitWorks:**3rd party to SolidWorks, but bought by SolidWorks, reads in EDIF to model circuit boards in 3D**Orcad Capture:**Printed circuit board design schematic capture tool. Bought by Cadence, renamed Allegro Capture**Orcad Layout:**Printed circuit board layout tool. Bought by Cadence and end-of-lifed. Replace by Allegro PCB Editor- Gerber: The name of format of printed circuit board files to be sent to the board manufacturer
- EDIF: The format for the file from PCB design that hold 3D information for import into mechanical CAD tools

## Computational Tools:

**MATLAB:**Mathematical programming tool from The Mathworks- Simulink: Control system modeling tool that runs inside of MATLAB

**Mathematica****Mathcad:**Mathematical programming/scratchpad environment with automatic unit conversions in equations by PTC Software**Sage**: python-based open source mathematics package (free alternative to MATLAB/Mathematica/Maple)- incorporates many standard free and open source mathematics packages, including SciPy/NumPy, Octave, Maxima, MatPlobLib, ...
- SciPy: Open-source software for mathematics, science, and engineering (alternative to Matlab).

## Data Acquisition and Processing Tools:

**Labview:**dataflow graphical programming environment for test & measurement and more recently for control and connections to SolidWorks Motion