A robotics simulator is a simulator used to create an application for a physical robot without depending on the physical machine, thus saving cost and time. In some case, such applications can be transferred onto a physical robot (or rebuilt) without modification.
The term robotics simulator can refer to several different robotics simulation applications. For example, in mobile robotics applications, behavior-based robotics simulators allow users to create simple worlds of rigid objects and light sources and to program robots to interact with these worlds. Behavior-based simulation allows for actions that are more biotic in nature when compared to simulators that are more binary, or computational. Also, behavior-based simulators may learn from mistakes and can demonstrate the anthropomorphic quality of tenacity.
One of the most popular applications for robotics simulators is for 3D modeling and rendering of a robot and its environment. This type of robotics software has a simulator that is a virtual robot, which can emulate the motion of a physical robot in a real work envelope. Some robotics simulators use a physics engine for more realistic motion generation of the robot. The use of a robotics simulator to develop a robotics control program is highly recommended regardless of whether a physical robot is available or not. The simulator allows for robotics programs to be conveniently written and debugged off-line with the final version of the program tested on a physical robot. This applies mainly to industrial robotic applications, since the success of off-line programming depends on how similar the physical environment of a robot is to a simulated environment.
Sensor-based robot actions are much more difficult to simulate and/or to program off-line, since the robot motion depends on instantaneous sensor readings in the real world.
Features
Modern simulators tend to provide the following features:
- Fast robot prototyping:
- Using the own simulator as creation tool
- Using external tools
- Physics engines for realistic movements: Most simulators use Bullet, ODE or PhysX.
- Realistic 3d rendering: Standard 3d modeling tools or third-party tools can be used to build the environments.
- Dynamic robot bodies with scripting: C, C++, Perl, Python, Java, URBI, and MATLAB languages used by Webots; C++ used by Gazebo.
Simulators
Among the newest technologies available today for programming are those which use a virtual simulation. Simulations with the use of virtual models of the working environment and the robots themselves can offer advantages to both the company and programmer. By using a simulation, costs are reduced, and robots can be programmed off-line which eliminates any down-time for an assembly line. Robot actions and assembly parts can be visualized in a three-dimensional virtual environment months before prototypes are even produced. Writing code for a simulation is also easier than writing code for a physical robot. While the move toward virtual simulations for programming robots is a step forward in user interface design, many such applications are only in their infancy.
Software
|
Developers
|
Development status
|
License
|
3D rendering engine
|
Physics engine
|
3D modeller
|
Platforms supported
|
Gazebo
|
Open Source Robotics Foundation (OSRF)
|
Active
|
Apache 2.0
|
OGRE
|
ODE, Bullet, Simbody, DART
|
Internal
|
Linux, macOS, Windows
|
RoboDK
|
RoboDK
|
Active
|
Proprietary
|
OpenGL
|
Gravity plug-in
|
Internal
|
Linux, macOS, Windows, Android, iOS, Debian
|
SimSpark
|
O. Obst et al. (+26)
|
Active
|
GNU GPL (v2)
|
Internal
|
ODE
|
None
|
Linux, macOS, Windows
|
Webots
|
Cyberbotics Ltd.
|
Active
|
Apache 2.0
|
Internal (WREN)
|
Fork of ODE
|
Internal
|
Linux, macOS, Windows
|
OpenRAVE
|
OpenRAVE Community
|
Active
|
GNU LGPL
|
Coin3D, OpenSceneGraph
|
ODE, Bullet
|
Internal
|
Linux, macOS, Windows
|
CoppeliaSim
|
Coppelia Robotics
|
Active
|
Dual: commercial, GNU GPL
|
Internal
|
MuJoCo, Bullet, ODE, Vortex, Newton
|
Internal
|
Linux, macOS, Windows
|
Software
|
Developers
|
Development status
|
License
|
3D rendering engine
|
Physics engine
|
3D modeller
|
Platforms supported
|
Software
|
Main programming language
|
Formats support
|
Extensibility
|
External APIs
|
Robotics middleware support
|
Primary user interface
|
Headless simulation
|
Gazebo
|
C++
|
SDF[1]/URDF,[2] OBJ, STL, COLLADA
|
Plug-ins (C++)
|
C++
|
ROS, Player, sockets (protobuf messages)
|
GUI
|
Yes
|
RoboDK
|
Python
|
SLDPRT, SLDASM, STEP, OBJ, STL, 3DS, COLLADA, VRML, Robot Operating System URDF, Rhinoceros 3D, ...
|
API,[3] Plug-In Interface[4]
|
Python, C/C++, C#, Matlab, ...
|
Socket
|
GUI
|
Yes
|
SimSpark
|
C++, Ruby
|
Ruby Scene Graphs
|
Mods (C++)
|
Network (sexpr)
|
Sockets (sexpr)
|
GUI, sockets
|
Unknown
|
Webots
|
C++
|
WBT, VRML, X3D, 3DS, Blender, BVH, COLLADA, FBX, STL, OBJ, URDF
|
API, PROTOs, plug-ins (C/C++)
|
C, C++, Python, Java, Matlab, ROS
|
Sockets, ROS, NaoQI
|
GUI
|
Yes[5]
|
OpenRAVE
|
C++, Python
|
XML, VRML, OBJ, COLLADA
|
Plug-ins (C++), API
|
C/C++, Python, Matlab
|
Sockets, ROS, YARP
|
GUI, sockets
|
Yes
|
CoppeliaSim
|
C++, Python, Lua
|
3DS, Blender, COLLADA, STL, OBJ, URDF, SDF, GLTF, XML
|
Plug-ins (C/C++), embedded scripts (Python, Lua), remote API (C, C++, Python, Java, MATLAB, Octave), add-ons (Python, Lua)
|
C, C++, Python, Java, MATLAB, Octave, ROS, ROS 2.0
|
Sockets, ROS, ROS 2.0, ZeroMQ
|
GUI
|
Yes
|
Software
|
Main programming language
|
Formats support
|
Extensibility
|
External APIs
|
Robotic middleware support
|
Primary user interface
|
Headless simulation
|
Infrastructure
Support
Code quality
Software
|
Static code checker
|
Style checker
|
Test system(s)
|
Test function coverage
|
Test branch coverage
|
Lines of code
|
Lines of comments
|
Continuous integration
|
Gazebo
|
cppcheck[36]
|
cpplint[36]
|
gtest and qtest[36]
|
77.0%[36]
|
53.3%[36]
|
320k[36]
|
106k[36]
|
Jenkins[36]
|
RoboDK
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
SimSpark
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Webots
|
cppcheck[37]
|
clang-format[38]
|
unit tests[39]
|
100% of API functions[40]
|
master,[41] develop[42]
|
~200k
|
~50k
|
GitHub Actions
|
OpenRAVE
|
Unknown
|
Unknown
|
Python nose
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Jenkins[43]
|
CoppeliaSim
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Software
|
Static code checker
|
Style checker
|
Test system(s)
|
Test function coverage
|
Test branch coverage
|
Lines of code
|
Lines of comments
|
Continuous integration
|
Features
Software
|
CAD to motion
|
Dynamic collision avoidance
|
Relative end effectors
|
Off-line programming
|
Real-time streaming control of hardware
|
Gazebo
|
Unknown
|
Yes
|
Yes
|
Yes
|
Yes
|
RoboDK
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
SimSpark
|
Unknown
|
No
|
Unknown
|
No
|
No
|
Webots
|
Unknown
|
Yes
|
Yes
|
Yes
|
Yes
|
OpenRAVE
|
Unknown
|
No
|
Unknown
|
No
|
No
|
CoppeliaSim
|
Unknown
|
Yes
|
Yes
|
Yes
|
Yes
|
Software
|
CAD to motion
|
Dynamic collision avoidance
|
Relative end effectors
|
Off-line programming
|
Real-time streaming control
|
Robot families
Software
|
UGV (ground mobile robot)
|
UAV (aerial robots)
|
AUV (underwater robots)
|
Robotic arms
|
Robotic hands (grasping simulation)
|
Humanoid robots
|
Human avatars
|
Full list
|
Gazebo
|
Yes[44]
|
Yes[45]
|
Yes[46]
|
Yes[47]
|
Yes[48]
|
Yes[49]
|
Yes[50]
|
|
RoboDK
|
No
|
No
|
No
|
Yes[51]
|
No
|
No
|
No
|
Yes[51]
|
SimSpark
|
Yes
|
No
|
No
|
Maybe
|
Maybe
|
Yes
|
No
|
|
Webots
|
Yes
|
Yes
|
Yes[52]
|
Yes
|
Yes
|
Yes[53]
|
Yes
|
Yes[54]
|
OpenRAVE
|
Yes
|
Unknown
|
Unknown
|
Yes
|
Yes
|
Yes
|
Yes
|
CoppeliaSim
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes[55]
|
Software
|
UGV (ground mobile robot)
|
UAV (aerial robots)
|
AUV (underwater robots)
|
Robotic arms
|
Robotic hands (grasping simulation)
|
Humanoid robots
|
Human avatars
|
Full list
|
Supported actuators
Software
|
Generic kinematic chains
|
Force-controlled motion
|
Full list
|
Circular kinematic chains
|
Kinematically redundant chains
|
Bifurcated kinematic chains
|
Gazebo
|
Yes
|
Yes
|
|
Yes
|
Yes
|
Yes
|
RoboDK
|
Unknown
|
Unknown
|
|
Unknown
|
Unknown
|
Unknown
|
SimSpark
|
Yes
|
No
|
SimSpark effectors
|
Unknown
|
Unknown
|
Unknown
|
Webots
|
Yes
|
Yes
|
Webots actuators
|
Yes
|
Yes
|
Yes
|
OpenRAVE
|
Yes
|
Yes
|
Joints,Extra Actuators
|
Yes[56]
|
Yes
|
Yes[57]
|
CoppeliaSim
|
Yes
|
Yes
|
|
Yes
|
Yes
|
Yes
|
Software
|
Generic kinematic chains
|
Force-controlled motion
|
Full list
|
Circular kinematic chains
|
Kinematically redundant chains
|
Bifurcated kinematic chains
|
Supported sensors
Software
|
Odometry
|
IMU
|
Collision
|
GPS
|
Monocular cameras
|
Stereo cameras
|
Depth cameras
|
Omnidirectional cameras
|
2D laser scanners
|
3D laser scanners
|
Full list
|
Gazebo
|
Yes
|
Yes
|
Yes[58]
|
Yes
|
Yes[59]
|
Yes
|
Yes
|
Yes
|
Yes[60]
|
Yes[60]
|
|
RoboDK
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Unknown
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
|
SimSpark
|
Yes
|
Yes
|
Yes[61]
|
Partial[62]
|
Yes
|
Partial
|
Unknown
|
Unknown
|
No
|
No
|
SimSpark perceptors
|
Webots
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Webots sensors
|
OpenRAVE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Unknown
|
Yes
|
Yes
|
CoppeliaSim
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Software
|
Odometry
|
IMU
|
Collision
|
GPS
|
Monocular cameras
|
Stereo cameras
|
Depth cameras
|
Omnidirectional cameras
|
2D laser scanners
|
3D laser scanners
|
Full list
|
References