Tools
Simulation plays a vital role in optimization and in understanding evolutionary dynamics. SimER focuses on rigid-body dynamics, but we’ve listed a few related ideas below as well.
Creating a simulation is called “modeling.” In robotics, modeling is used for simulation, state estimation, prediction, and model-based algorithms (e.g., model predictive control, model-based reinforcement learning).
Broadly, we can list the following forms of simulation as it relates to evolutionary robotics (ER)
- analytical (closed-form) dynamics,
- rigid-body dynamics (aka physical simulation or physics engine),
- soft-body dynamics,
- finite-element analysis, and
- digital evolution (e.g., Avida).
Often, an increase in accuracy comes at the cost of an increase in complexity and compute time. Analytical simulations are often only useful for toy problems (i.e., they are not even expressive enough to simulate a double pendulum system). Numerical systems are much broader—in some sense, they encapsulate rigid-body and soft-body dynamics—but they are often slower and less powerful compared to rigid-body and soft-body simulators. For example, a nonholonomic system cannot be described by a closed-form solution. In this case, a numerical or physical simulation is required.
Here are things to consider when selecting your simulation tool:
- computation efficiency: how long does it take to run a simulation?
- cost: do you need to purchase a license? or is it open-source?
- features: does it support the features you need? (e.g., 3d, sensors, actuators, controllers, etc.)
- simplicity: how easy is it to use?
- robustness: how well does it handle edge cases?
- accuracy: how close is the simulation to reality?
- determinism: does it produce the same results given the same inputs?
- support: is there a community or documentation to help you?
- interactive: can you interact with the simulation in real-time?
- headless: can you run the simulation without a GUI?
Robot Simulators
- Gazebo
- CoppeliaSim (V-REP replacement)
- Webots
- Isaac Sim
- Vortex Studio
- Drake
- RoboDK
- MARS
- Simscape Multibody
- RaiSim
Game Engines
Physics Engines
- Game focused
- Research/Robotics focused