Robotics simulator explained

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:

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.

General information

SoftwareDevelopersDevelopment statusLicense3D rendering enginePhysics engine3D modellerPlatforms supported
class="table-rh" GazeboOpen Source Robotics Foundation (OSRF)ActiveOGREODE, Bullet, Simbody, DARTInternalLinux, macOS, Windows
class="table-rh" RoboDKRoboDKActiveOpenGLGravity plug-inInternalLinux, macOS, Windows, Android, iOS, Debian
SimSparkO. Obst et al. (+26)ActiveGNU GPL (v2)InternalODENoneLinux, macOS, Windows
class="table-rh" WebotsCyberbotics Ltd.ActiveInternal (WREN)Fork of ODEInternalLinux, macOS, Windows
class="table-rh" OpenRAVEOpenRAVE CommunityActiveGNU LGPLCoin3D, OpenSceneGraphODE, BulletInternalLinux, macOS, Windows
class="table-rh" CoppeliaSimCoppelia RoboticsActiveDual: commercial, GNU GPLInternalMuJoCo, Bullet, ODE, Vortex, NewtonInternalLinux, macOS, Windows
SoftwareDevelopersDevelopment statusLicense3D rendering enginePhysics engine3D modellerPlatforms supported

Technical information

SoftwareMain programming languageFormats supportExtensibilityExternal APIsRobotics middleware supportPrimary user interfaceHeadless simulation
GazeboC++SDF[1] /URDF,[2] OBJ, STL, COLLADAPlug-ins (C++)C++ROS, Player, sockets (protobuf messages)GUI
RoboDKPythonSLDPRT, SLDASM, STEP, OBJ, STL, 3DS, COLLADA, VRML, Robot Operating System URDF, Rhinoceros 3D, ...API,[3] Plug-In Interface[4] Python, C/C++, C#, Matlab, ...SocketGUI
SimSparkC++, RubyRuby Scene GraphsMods (C++)Network (sexpr)Sockets (sexpr)GUI, sockets
class="table-rh" WebotsC++WBT, VRML, X3D, 3DS, Blender, BVH, COLLADA, FBX, STL, OBJ, URDFAPI, PROTOs, plug-ins (C/C++)C, C++, Python, Java, Matlab, ROSSockets, ROS, NaoQIGUI[5]
OpenRAVEC++, PythonXML, VRML, OBJ, COLLADAPlug-ins (C++), APIC/C++, Python, MatlabSockets, ROS, YARPGUI, sockets
class="table-rh" CoppeliaSimC++, Python, Lua3DS, Blender, COLLADA, STL, OBJ, URDF, SDF, GLTF, XMLPlug-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.0Sockets, ROS, ROS 2.0, ZeroMQGUI
SoftwareMain programming languageFormats supportExtensibilityExternal APIsRobotic middleware supportPrimary user interfaceHeadless simulation

Infrastructure

Support

SoftwareMailing listAPI documentationPublic forum, help systemUser manualIssue trackerWikiChat
Gazebo[6] [7] [8] [9] [10]
RoboDK[11] [12] [13] [14] [15]
SimSpark[16] [17] [18] [19] [20]
Webots[21] [22] [23] [24] [25] [26]
OpenRAVE[27] [28] [29] [30] [31]
CoppeliaSim[32] [33] [34] [35]
SoftwareMailing listAPI documentationPublic forum, help systemUser manualIssue trackerWiki

Code quality

SoftwareStatic code checkerStyle checkerTest system(s)Test function coverageTest branch coverageLines of codeLines of commentsContinuous integration
Gazebocppcheck[36] cpplintgtest and qtest77.0%53.3%320k106kJenkins
RoboDK
SimSpark
Webotscppcheck[37] clang-format[38] unit tests[39] 100% of API functions[40] master,[41] develop[42] ~200k~50kGitHub Actions
OpenRAVEPython noseJenkins[43]
CoppeliaSim
SoftwareStatic code checkerStyle checkerTest system(s)Test function coverageTest branch coverageLines of codeLines of commentsContinuous integration

Features

SoftwareCAD to motionDynamic collision avoidanceRelative end effectorsOff-line programmingReal-time streaming control of hardware
Gazebo
class="table-rh" RoboDK
SimSpark
Webots
OpenRAVE
CoppeliaSim
SoftwareCAD to motionDynamic collision avoidanceRelative end effectorsOff-line programmingReal-time streaming control

Robot families

SoftwareUGV (ground mobile robot)UAV (aerial robots)AUV (underwater robots)Robotic armsRobotic hands (grasping simulation)Humanoid robotsHuman avatarsFull list
Gazebo[44] [45] [46] [47] [48] [49] [50]
RoboDK[51]
SimSpark
Webots[52] [53] [54]
OpenRAVE
CoppeliaSim[55]
SoftwareUGV (ground mobile robot)UAV (aerial robots)AUV (underwater robots)Robotic armsRobotic hands (grasping simulation)Humanoid robotsHuman avatarsFull list

Supported actuators

SoftwareGeneric kinematic chainsForce-controlled motionFull listCircular kinematic chainsKinematically redundant chainsBifurcated kinematic chains
Gazebo
RoboDK
SimSparkSimSpark effectors
WebotsWebots actuators
OpenRAVEJoints,Extra Actuators[56] [57]
CoppeliaSim
SoftwareGeneric kinematic chainsForce-controlled motionFull listCircular kinematic chainsKinematically redundant chainsBifurcated kinematic chains

Supported sensors

SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list
Gazebo[58] [59] [60]
RoboDK
SimSpark[61] [62] SimSpark perceptors
WebotsWebots sensors
OpenRAVE
CoppeliaSim
SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list

Notes and References

  1. Web site: SDF. 2019-04-27. sdformat.org. OSRF.
  2. Web site: urdf - ROS Wiki. 2017-10-06. wiki.ros.org.
  3. Web site: RoboDK API. . 22 October 2021.
  4. Web site: RoboDK Plug-In Interface. . 16 October 2021.
  5. However, requires a connection on an X server for 3D rendering
  6. Web site: Gazebo Community. 2019-04-27. en.
  7. Web site: Gazebo API. 2019-04-27. Gazebo Community. en.
  8. Web site: Gazebo Answers. 2019-04-27. Gazebo Community. en.
  9. Web site: Gazebo Tutorials. 2019-04-27. Gazebo Community. en.
  10. Web site: Gazebo Issue Tracker. 2019-04-27. Gazebo Community. en.
  11. https://robodk.com/subscribe RoboDK mailing list
  12. https://robodk.com/doc/en/PythonAPI/intro.html RoboDK API Documentation
  13. http://robodk.com/forum/ RoboDK Forum
  14. https://robodk.com/doc/en/ RoboDK Documentation
  15. http://robodk.com/forum/Forum-RoboDK-bugs RoboDK Bug tracker
  16. http://sourceforge.net/p/simspark/mailman/ SimSpark mailing lists
  17. Web site: SimSpark client protocols . 2015-04-08 . 2016-02-25 . https://web.archive.org/web/20160225172352/http://simspark.sourceforge.net/wiki/index.php/Network_Protocol . dead .
  18. Web site: SimSpark user manual (Wiki) . 2015-04-08 . 2015-02-25 . https://web.archive.org/web/20150225121132/http://simspark.sourceforge.net/wiki/index.php/Users_Manual . dead .
  19. http://sourceforge.net/p/simspark/bugs/ SimSpark Tracker
  20. http://simspark.sourceforge.net/wiki/ SimSpark Wiki
  21. https://cyberbotics.com/reference Webots Reference Manual
  22. Web site: Discussions · cyberbotics/Webots . .
  23. https://cyberbotics.com/guide Webots User Guide
  24. https://github.com/omichel/webots/issues Webots issues on GitHub
  25. https://github.com/omichel/webots/wiki Webots technical wiki on GitHub
  26. https://discordapp.com/invite/nTWbN9m Webots Discord channel
  27. https://lists.sourceforge.net/lists/listinfo/openrave-users OpenRAVE mailing list
  28. http://openrave.org/docs/latest_stable/coreapihtml/index.html OpenRAVE API
  29. https://github.com/rdiankov/openrave/issues OpenRAVE Issue Tracker
  30. http://www.openrave.org/docs/latest_stable/ OpenRAVE User Guide
  31. http://openrave.programmingvision.com/wiki/index.php/Main_Page OpenRAVE Wiki
  32. https://www.coppeliarobotics.com/helpFiles/en/apiOverview.htm CoppeliaSim API
  33. https://forum.coppeliarobotics.com Coppelia Robotics Forum
  34. https://coppeliarobotics.com/helpFiles/ CoppeliaSim User Manual
  35. https://forum.coppeliarobotics.com/viewforum.php?f=5 Coppelia Robotics bug reports
  36. Web site: Gazebo. 2019-04-27. gazebosim.org. OSRF.
  37. https://github.com/omichel/webots/blob/develop/tests/sources/test_cppcheck.py CppCheck
  38. https://github.com/omichel/webots/blob/develop/tests/sources/test_clang_format.py Clang Format
  39. https://github.com/omichel/webots/tree/develop/tests Unit tests
  40. https://github.com/omichel/webots/tree/develop/tests/api API tests
  41. https://github.com/omichel/webots/tree/master Webots master
  42. https://github.com/omichel/webots/tree/develop Webots develop
  43. http://openrave.org/docs/latest_stable/devel/testing/ Source
  44. Web site: Gazebo : Tutorial : Beginner: Model Editor. 2019-04-27. gazebosim.org. OSRF.
  45. Web site: Gazebo : Tutorial : Aerodynamics. 2019-04-27. gazebosim.org. OSRF.
  46. Web site: Gazebo : Tutorial : Hydrodynamics. 2019-04-27. gazebosim.org. OSRF.
  47. Web site: Gazebo : ARIAC. 2019-04-27. gazebosim.org. OSRF.
  48. Web site: Gazebo : HAPTIX. 2019-04-27. gazebosim.org. OSRF.
  49. Web site: DARPA's legacy: Open source simulation for robotics development and testing. 2019-04-27. Robohub.org. en-US.
  50. Web site: Gazebo : Tutorial : Make an animated model (actor). 2019-04-27. gazebosim.org. OSRF.
  51. https://robodk.com/library RoboDK robot library
  52. including Salamander robot
  53. including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
  54. https://www.cyberbotics.com/doc/guide/robots Webots robot models
  55. https://www.coppeliarobotics.com/helpFiles/en/coppeliaSimFeatures.htm CoppeliaSim main features
  56. http://openrave.programmingvision.com/wiki/index.php/Format:XML#Closed-chains_and_Mimic_Joints OpenRAVE Closed chains
  57. http://openrave.programmingvision.com/wiki/index.php/Format:XML#Dual-arm_example OpenRAVE Dual-arm example
  58. Web site: Gazebo : Tutorial : Contact Sensor. 2019-04-27. gazebosim.org. OSRF.
  59. Web site: Gazebo : Tutorial : Camera Distortion. 2019-04-27. gazebosim.org. OSRF.
  60. Web site: Gazebo : Tutorial : Intermediate: Velodyne. 2019-04-27. gazebosim.org. OSRF.
  61. Collision detection uses a simplified model
  62. Possible, no model for noise