Jump to content

Robotics simulator

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by AnomieBOT (talk | contribs) at 12:11, 27 April 2023 (Rescuing orphaned refs ("urdfref" from rev 1151965212)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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.

Robologix robotics simulator

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, 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 visualised in a 3-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

Software Developers Development status License 3D rendering engine Physics engine 3D modeller Platforms supported
Gazebo Classic Open Source Robotics Foundation (OSRF) Maintenance (EOL 2025) Apache 2.0 OGRE ODE, Bullet, Simbody, DART Internal Linux, macOS, Windows
Gazebo (former Ignition) Open Source Robotics Foundation (OSRF) Active Apache 2.0 OGRE v1.x, OGRE v2.x, OptiX, Isaac Sim[1] DART, Bullet, TPE[2], Isaac Sim[1], Project Chrono [3], MuJoCo [4] 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

Technical information

Software Main programming language Formats support Extensibility External APIs Robotics middleware support Primary user interface Headless simulation
Gazebo Classic C++ SDF[5], URDF[6], OBJ, STL, COLLADA Plug-ins (C++) C++ ROS, Player, sockets (protobuf messages) GUI Yes
Gazebo (former Ignition) C++ SDF[5], URDF[6], USD[7], OBJ, STL, COLLADA Plug-ins (C++) C++, Python ROS, ROS 2, sockets (protobuf messages), Protocol buffers[8], ZeroMQ[8] GUI Yes
RoboDK Python SLDPRT, SLDASM, STEP, OBJ, STL, 3DS, COLLADA, VRML, URDF, Rhinoceros 3D, ... API,[9] Plug-In Interface[10] Python, C/C++, C#, Matlab, ... Socket GUI Yes
SimSpark C++, Ruby Ruby Scene Graphs Mods (C++) Network (sexpr) Sockets (sexpr) GUI, sockets Un­known
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[11]
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[6], SDF[5], 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

Software Mailing list API documentation Public forum, help system User manual Issue tracker Wiki Chat
Gazebo Classic Yes[12] Yes[13] Yes[14] Yes[15] Yes[16] No
Gazebo (former Ignition) Yes[17] Yes[18] Yes[19] Yes[20] Yes[21] No
RoboDK Yes[22] Yes[23] Yes[24] Yes[25] Yes[26] No Un­known
SimSpark Yes[27] Yes[28] No Yes[29] Yes[30] Yes[31] Un­known
Webots No Yes[32] Yes[33] Yes[34] Yes[35] Yes[36] Yes[37]
OpenRAVE Yes[38] Yes[39] Yes[40] Yes[41] Yes[40] Yes[42] Un­known
CoppeliaSim No Yes[43] Yes[44] Yes[45] Yes[46] Un­known No
Software Mailing list API documentation Public forum, help system User manual Issue tracker Wiki

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 Classic cppcheck[47] cpplint[47] gtest and qtest[47] 77.0%[47] 53.3%[47] 320k[47] 106k[47] Jenkins[47]
Gazebo (former Ignition) cppcheck[48] cpplint[49] GoogleTest 58% to 99%[50] every release branch > 100k Un­known GitHub Actions
RoboDK Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known
SimSpark Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known
Webots cppcheck[51] clang-format[52] unit tests[53] 100% of API functions[54] master,[55] develop[56] ~200k ~50k GitHub Actions
OpenRAVE Un­known Un­known Python nose Un­known Un­known Un­known Un­known Jenkins[57]
CoppeliaSim Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known
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 Classic Un­known Yes Yes Yes Yes
Gazebo (former Igniton) Un­known Yes Yes Yes Yes
RoboDK Yes Yes Yes Yes Yes
SimSpark Un­known No Un­known No No
Webots Un­known Yes Yes Yes Yes
OpenRAVE Un­known No Un­known No No
CoppeliaSim Un­known 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 Classic Yes[58] Yes[59] Yes[60] Yes[61] Yes[62] Yes[63] Yes[64]
Gazebo (former Ignition) Yes[65] Yes[66] Yes[67] Yes[68] Yes[69] Yes[70] Yes[71] Yes[72]
RoboDK No No No Yes[73] No No No Yes[73]
SimSpark Yes No No Maybe Maybe Yes No
Webots Yes Yes Yes[74] Yes Yes Yes[75] Yes Yes[76]
OpenRAVE Yes Un­known Un­known Yes Yes Yes Yes
CoppeliaSim Yes Yes Yes Yes Yes Yes Yes Yes[77]
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 Classic Yes Yes Yes Yes Yes
Gazebo (former Ignition) Yes Yes Yes Yes Yes
RoboDK Un­known Un­known Un­known Un­known Un­known
SimSpark Yes No SimSpark effectors Un­known Un­known Un­known
Webots Yes Yes Webots actuators Yes Yes Yes
OpenRAVE Yes Yes Joints,Extra Actuators Yes[78] Yes Yes[79]
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 Classic Yes Yes Yes[80] Yes Yes[81] Yes Yes Yes Yes[82] Yes[82]
Gazebo (former Ignition) Yes Yes Yes[83] Yes Yes[84] Yes Yes Yes Yes[82] Yes[82]
RoboDK Un­known Un­known Un­known Un­known Un­known Yes Yes Yes Yes Yes
SimSpark Yes Yes Yes[85] Partial[86] Yes Partial Un­known Un­known 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 Un­known 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

  1. ^ a b OSRF. "Ign-Omni is available". gazebosim.org. Retrieved 2023-04-27.
  2. ^ OSRF. "Announcing new physics engine TPE (Trivial Physics Engine)". gazebosim.org. Retrieved 2023-04-25.
  3. ^ OSRF. "Connects Gazebo with the Project Chrono Physics Engine". github.com. Retrieved 2023-04-27.
  4. ^ OSRF. "gz-mujoco". github.com. Retrieved 2023-04-27.
  5. ^ a b c OSRF. "SDF". sdformat.org. Retrieved 2019-04-27.
  6. ^ a b c "urdf - ROS Wiki". wiki.ros.org. Retrieved 2017-10-06.
  7. ^ OSRF. "gz-usd". Command line tools to convert SDFormat to USD and viceversa. Retrieved 2023-04-27.
  8. ^ a b OSRF. "Transport library for component communication based on publication/subscription and service calls". github.com. Retrieved 2023-04-27.
  9. ^ "RoboDK API". GitHub. 22 October 2021.
  10. ^ "RoboDK Plug-In Interface". GitHub. 16 October 2021.
  11. ^ However, requires a connection on an X server for 3D rendering
  12. ^ "Gazebo Community". Retrieved 2019-04-27.
  13. ^ "Gazebo API". Gazebo Community. Retrieved 2019-04-27.
  14. ^ "Gazebo Answers". Gazebo Community. Retrieved 2019-04-27.
  15. ^ "Gazebo Tutorials". Gazebo Community. Retrieved 2019-04-27.
  16. ^ "Gazebo Issue Tracker". Gazebo Community. Retrieved 2019-04-27.
  17. ^ "Gazebo Community". Retrieved 2023-04-25.
  18. ^ "Gazebo Libs". Gazebo Community. Retrieved 2023-04-25.
  19. ^ "Gazebo Answers". Gazebo Community. Retrieved 2019-04-27.
  20. ^ "Gazebo Docs". Gazebo Community. Retrieved 2023-04-25.
  21. ^ "Gazebo". Gazebo Community. Retrieved 2023-04-25.
  22. ^ RoboDK mailing list
  23. ^ RoboDK API Documentation
  24. ^ RoboDK Forum
  25. ^ RoboDK Documentation
  26. ^ RoboDK Bug tracker
  27. ^ SimSpark mailing lists
  28. ^ SimSpark client protocols
  29. ^ SimSpark user manual (Wiki)
  30. ^ SimSpark Tracker
  31. ^ SimSpark Wiki
  32. ^ Webots Reference Manual
  33. ^ "Discussions · cyberbotics/Webots". GitHub.
  34. ^ Webots User Guide
  35. ^ Webots issues on GitHub
  36. ^ Webots technical wiki on GitHub
  37. ^ Webots Discord channel
  38. ^ OpenRAVE mailing list
  39. ^ OpenRAVE API
  40. ^ a b OpenRAVE Issue Tracker
  41. ^ OpenRAVE User Guide
  42. ^ OpenRAVE Wiki
  43. ^ CoppeliaSim API
  44. ^ Coppelia Robotics Forum
  45. ^ CoppeliaSim User Manual
  46. ^ Coppelia Robotics bug reports
  47. ^ a b c d e f g h OSRF. "Gazebo". gazebosim.org. Retrieved 2019-04-27.
  48. ^ GitHub Workflows
  49. ^ GitHub Workflows
  50. ^ Codecov
  51. ^ CppCheck
  52. ^ Clang Format
  53. ^ Unit tests
  54. ^ API tests
  55. ^ Webots master
  56. ^ Webots develop
  57. ^ Source
  58. ^ OSRF. "Gazebo : Tutorial : Beginner: Model Editor". gazebosim.org. Retrieved 2019-04-27.
  59. ^ OSRF. "Gazebo : Tutorial : Aerodynamics". gazebosim.org. Retrieved 2019-04-27.
  60. ^ OSRF. "Gazebo : Tutorial : Hydrodynamics". gazebosim.org. Retrieved 2019-04-27.
  61. ^ OSRF. "Gazebo : ARIAC". gazebosim.org. Retrieved 2019-04-27.
  62. ^ OSRF. "Gazebo : HAPTIX". gazebosim.org. Retrieved 2019-04-27.
  63. ^ "DARPA's legacy: Open source simulation for robotics development and testing". Robohub.org. Retrieved 2019-04-27.
  64. ^ OSRF. "Gazebo : Tutorial : Make an animated model (actor)". gazebosim.org. Retrieved 2019-04-27.
  65. ^ OSRF. "Gazebo : Tutorial : Beginner: Model Editor". gazebosim.org. Retrieved 2019-04-27.
  66. ^ OSRF. "Gazebo : Tutorial : Aerodynamics". gazebosim.org. Retrieved 2019-04-27.
  67. ^ OSRF. "Gazebo : Tutorial : Hydrodynamics". gazebosim.org. Retrieved 2019-04-27.
  68. ^ OSRF. "Gazebo : ARIAC". gazebosim.org. Retrieved 2019-04-27.
  69. ^ OSRF. "Gazebo : HAPTIX". gazebosim.org. Retrieved 2019-04-27.
  70. ^ "DARPA's legacy: Open source simulation for robotics development and testing". Robohub.org. Retrieved 2019-04-27.
  71. ^ OSRF. "Gazebo : Tutorial : Make an animated model (actor)". gazebosim.org. Retrieved 2019-04-27.
  72. ^ OSRF. "Gazebo - Latest models". gazebosim.org. Retrieved 2023-04-25.
  73. ^ a b RoboDK robot library
  74. ^ including Salamander robot
  75. ^ including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
  76. ^ Webots robot models
  77. ^ CoppeliaSim main features
  78. ^ OpenRAVE Closed chains
  79. ^ OpenRAVE Dual-arm example
  80. ^ OSRF. "Gazebo : Tutorial : Contact Sensor". gazebosim.org. Retrieved 2019-04-27.
  81. ^ OSRF. "Gazebo : Tutorial : Camera Distortion". gazebosim.org. Retrieved 2019-04-27.
  82. ^ a b c d OSRF. "Gazebo : Tutorial : Intermediate: Velodyne". gazebosim.org. Retrieved 2019-04-27.
  83. ^ OSRF. "Gazebo : Tutorial : Contact Sensor". gazebosim.org. Retrieved 2019-04-27.
  84. ^ OSRF. "Gazebo : Tutorial : Camera Distortion". gazebosim.org. Retrieved 2019-04-27.
  85. ^ Collision detection uses a simplified model
  86. ^ Possible, no model for noise