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:
- 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.
General information
Software | Developers | Development status | License | 3D rendering engine | Physics engine | 3D modeller | Platforms supported |
---|
class="table-rh" | Gazebo | Open Source Robotics Foundation (OSRF) | Active | | OGRE | ODE, Bullet, Simbody, DART | Internal | Linux, macOS, Windows |
---|
class="table-rh" | RoboDK | RoboDK | Active | | 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 |
class="table-rh" | Webots | Cyberbotics Ltd. | Active | | Internal (WREN) | Fork of ODE | Internal | Linux, macOS, Windows |
---|
class="table-rh" | OpenRAVE | OpenRAVE Community | Active | GNU LGPL | Coin3D, OpenSceneGraph | ODE, Bullet | Internal | Linux, macOS, Windows |
class="table-rh" | 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 | C++ | SDF[1] /URDF,[2] OBJ, STL, COLLADA | Plug-ins (C++) | C++ | ROS, Player, sockets (protobuf messages) | GUI | |
---|
| 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 | |
---|
| SimSpark | C++, Ruby | Ruby Scene Graphs | Mods (C++) | Network (sexpr) | Sockets (sexpr) | GUI, sockets | |
---|
class="table-rh" | 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 | [5] |
---|
| OpenRAVE | C++, Python | XML, VRML, OBJ, COLLADA | Plug-ins (C++), API | C/C++, Python, Matlab | Sockets, ROS, YARP | GUI, sockets | |
---|
class="table-rh" | 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 | |
---|
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 | gtest and qtest | 77.0% | 53.3% | 320k | 106k | Jenkins |
---|
| RoboDK | | | | | | | | |
---|
| SimSpark | | | | | | | | |
---|
| Webots | cppcheck[37] | clang-format[38] | unit tests[39] | 100% of API functions[40] | master,[41] develop[42] | ~200k | ~50k | GitHub Actions |
---|
| OpenRAVE | | | Python nose | | | | | Jenkins[43] |
---|
| CoppeliaSim | | | | | | | | |
---|
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 | | | | | |
---|
class="table-rh" | RoboDK | | | | | |
---|
| SimSpark | | | | | |
---|
| Webots | | | | | |
---|
| OpenRAVE | | | | | |
---|
| CoppeliaSim | | | | | |
---|
Software | CAD to motion | Dynamic collision avoidance | Relative end effectors | Off-line programming | Real-time streaming control | |
---|
Robot families
Supported actuators
Supported sensors
Notes and References
- Web site: SDF. 2019-04-27. sdformat.org. OSRF.
- Web site: urdf - ROS Wiki. 2017-10-06. wiki.ros.org.
- Web site: RoboDK API. . 22 October 2021.
- Web site: RoboDK Plug-In Interface. . 16 October 2021.
- However, requires a connection on an X server for 3D rendering
- Web site: Gazebo Community. 2019-04-27. en.
- Web site: Gazebo API. 2019-04-27. Gazebo Community. en.
- Web site: Gazebo Answers. 2019-04-27. Gazebo Community. en.
- Web site: Gazebo Tutorials. 2019-04-27. Gazebo Community. en.
- Web site: Gazebo Issue Tracker. 2019-04-27. Gazebo Community. en.
- https://robodk.com/subscribe RoboDK mailing list
- https://robodk.com/doc/en/PythonAPI/intro.html RoboDK API Documentation
- http://robodk.com/forum/ RoboDK Forum
- https://robodk.com/doc/en/ RoboDK Documentation
- http://robodk.com/forum/Forum-RoboDK-bugs RoboDK Bug tracker
- http://sourceforge.net/p/simspark/mailman/ SimSpark mailing lists
- 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 .
- 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 .
- http://sourceforge.net/p/simspark/bugs/ SimSpark Tracker
- http://simspark.sourceforge.net/wiki/ SimSpark Wiki
- https://cyberbotics.com/reference Webots Reference Manual
- Web site: Discussions · cyberbotics/Webots . .
- https://cyberbotics.com/guide Webots User Guide
- https://github.com/omichel/webots/issues Webots issues on GitHub
- https://github.com/omichel/webots/wiki Webots technical wiki on GitHub
- https://discordapp.com/invite/nTWbN9m Webots Discord channel
- https://lists.sourceforge.net/lists/listinfo/openrave-users OpenRAVE mailing list
- http://openrave.org/docs/latest_stable/coreapihtml/index.html OpenRAVE API
- https://github.com/rdiankov/openrave/issues OpenRAVE Issue Tracker
- http://www.openrave.org/docs/latest_stable/ OpenRAVE User Guide
- http://openrave.programmingvision.com/wiki/index.php/Main_Page OpenRAVE Wiki
- https://www.coppeliarobotics.com/helpFiles/en/apiOverview.htm CoppeliaSim API
- https://forum.coppeliarobotics.com Coppelia Robotics Forum
- https://coppeliarobotics.com/helpFiles/ CoppeliaSim User Manual
- https://forum.coppeliarobotics.com/viewforum.php?f=5 Coppelia Robotics bug reports
- Web site: Gazebo. 2019-04-27. gazebosim.org. OSRF.
- https://github.com/omichel/webots/blob/develop/tests/sources/test_cppcheck.py CppCheck
- https://github.com/omichel/webots/blob/develop/tests/sources/test_clang_format.py Clang Format
- https://github.com/omichel/webots/tree/develop/tests Unit tests
- https://github.com/omichel/webots/tree/develop/tests/api API tests
- https://github.com/omichel/webots/tree/master Webots master
- https://github.com/omichel/webots/tree/develop Webots develop
- http://openrave.org/docs/latest_stable/devel/testing/ Source
- Web site: Gazebo : Tutorial : Beginner: Model Editor. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : Tutorial : Aerodynamics. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : Tutorial : Hydrodynamics. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : ARIAC. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : HAPTIX. 2019-04-27. gazebosim.org. OSRF.
- Web site: DARPA's legacy: Open source simulation for robotics development and testing. 2019-04-27. Robohub.org. en-US.
- Web site: Gazebo : Tutorial : Make an animated model (actor). 2019-04-27. gazebosim.org. OSRF.
- https://robodk.com/library RoboDK robot library
- including Salamander robot
- including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
- https://www.cyberbotics.com/doc/guide/robots Webots robot models
- https://www.coppeliarobotics.com/helpFiles/en/coppeliaSimFeatures.htm CoppeliaSim main features
- http://openrave.programmingvision.com/wiki/index.php/Format:XML#Closed-chains_and_Mimic_Joints OpenRAVE Closed chains
- http://openrave.programmingvision.com/wiki/index.php/Format:XML#Dual-arm_example OpenRAVE Dual-arm example
- Web site: Gazebo : Tutorial : Contact Sensor. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : Tutorial : Camera Distortion. 2019-04-27. gazebosim.org. OSRF.
- Web site: Gazebo : Tutorial : Intermediate: Velodyne. 2019-04-27. gazebosim.org. OSRF.
- Collision detection uses a simplified model
- Possible, no model for noise