PmWiki
pmwiki.org
edit SideBar

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 multibody 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: opensource physicsengine 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
 USARSim: Unified System for Automation and Robot Simulation  based on a gaming engine originally developed by NIST Official MAST simulation environment in Integration Center
 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 , rewritten from scratch for SolidWorks 2008
 can both make animations and give numerical forces, moments, displacements, etc.
 free with SolidWorks Office Premium
 Blender: opensource 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.
 OpenSIMM: Open source version of SIMM, can be interfaced to Matlab
 Adams: General dynamics package. Capable of analyzing musculoskeletal systems
 Arachi:Used to simulate multibody dynamics
 Real World: most amazing gaming engine in the world, demoed at DARPATech 2007 by Total Immersion Software in Alameda, CA
 PyDSTool: pythonbased dynamical systems simulation tool developed by the Center for Applied Mathematics at Cornell
 DARTS: "Highfidelity, flexible, multibody dynamics simulator" developed by JPL for use in spacecraft mission simulation.
HighLevel 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 preinstalled, check out MissionLab VM
 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 endoflifed. 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: pythonbased 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: Opensource 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
