Software:Robotics simulator
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 |
---|---|---|---|---|---|---|---|
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 |
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 | 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
Software | Mailing list | API documentation | Public forum, help system | User manual | Issue tracker | Wiki | Chat |
---|---|---|---|---|---|---|---|
Gazebo | Yes[6] | Yes[7] | Yes[8] | Yes[9] | Yes[10] | No | |
RoboDK | Yes[11] | Yes[12] | Yes[13] | Yes[14] | Yes[15] | No | Unknown |
SimSpark | Yes[16] | Yes[17] | No | Yes[18] | Yes[19] | Yes[20] | Unknown |
Webots | No | Yes[21] | Yes[22] | Yes[23] | Yes[24] | Yes[25] | Yes[26] |
OpenRAVE | Yes[27] | Yes[28] | Yes[29] | Yes[30] | Yes[29] | Yes[31] | Unknown |
CoppeliaSim | No | Yes[32] | Yes[33] | Yes[34] | Yes[35] | Unknown | 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 | 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
- ↑ OSRF. "SDF". sdformat.org. http://sdformat.org.
- ↑ "urdf - ROS Wiki". wiki.ros.org. http://wiki.ros.org/urdf.
- ↑ "RoboDK API". 22 October 2021. https://github.com/RoboDK/RoboDK-API.
- ↑ "RoboDK Plug-In Interface". 16 October 2021. https://github.com/RoboDK/Plug-In-Interface.
- ↑ However, requires a connection on an X server for 3D rendering
- ↑ "Gazebo Community" (in en). https://community.gazebosim.org.
- ↑ "Gazebo API" (in en). Gazebo Community. http://gazebosim.org/api.html.
- ↑ "Gazebo Answers" (in en). Gazebo Community. http://answers.gazebosim.org.
- ↑ "Gazebo Tutorials" (in en). Gazebo Community. http://gazebosim.org/tutorials.
- ↑ "Gazebo Issue Tracker" (in en). Gazebo Community. http://bitbucket.org/osrf/gazebo/issues.
- ↑ RoboDK mailing list
- ↑ RoboDK API Documentation
- ↑ RoboDK Forum
- ↑ RoboDK Documentation
- ↑ RoboDK Bug tracker
- ↑ SimSpark mailing lists
- ↑ SimSpark client protocols
- ↑ SimSpark user manual (Wiki)
- ↑ SimSpark Tracker
- ↑ SimSpark Wiki
- ↑ Webots Reference Manual
- ↑ "Discussions · cyberbotics/Webots". https://github.com/cyberbotics/webots/discussions.
- ↑ Webots User Guide
- ↑ Webots issues on GitHub
- ↑ Webots technical wiki on GitHub
- ↑ Webots Discord channel
- ↑ OpenRAVE mailing list
- ↑ OpenRAVE API
- ↑ 29.0 29.1 OpenRAVE Issue Tracker
- ↑ OpenRAVE User Guide
- ↑ OpenRAVE Wiki
- ↑ CoppeliaSim API
- ↑ Coppelia Robotics Forum
- ↑ CoppeliaSim User Manual
- ↑ Coppelia Robotics bug reports
- ↑ 36.0 36.1 36.2 36.3 36.4 36.5 36.6 36.7 OSRF. "Gazebo". gazebosim.org. http://gazebosim.org/statistics.
- ↑ CppCheck
- ↑ Clang Format
- ↑ Unit tests
- ↑ API tests
- ↑ Webots master
- ↑ Webots develop
- ↑ Source
- ↑ OSRF. "Gazebo : Tutorial : Beginner: Model Editor". gazebosim.org. http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3.
- ↑ OSRF. "Gazebo : Tutorial : Aerodynamics". gazebosim.org. http://gazebosim.org/tutorials?tut=aerodynamics&cat=physics.
- ↑ OSRF. "Gazebo : Tutorial : Hydrodynamics". gazebosim.org. http://gazebosim.org/tutorials?tut=hydrodynamics&cat=physics.
- ↑ OSRF. "Gazebo : ARIAC". gazebosim.org. http://gazebosim.org/ariac.
- ↑ OSRF. "Gazebo : HAPTIX". gazebosim.org. http://gazebosim.org/haptix.
- ↑ "DARPA's legacy: Open source simulation for robotics development and testing" (in en-US). Robohub.org. http://robohub.org/darpas-legacy-open-source-simulation-for-robotics-development-and-testing/.
- ↑ OSRF. "Gazebo : Tutorial : Make an animated model (actor)". gazebosim.org. http://gazebosim.org/tutorials?tut=actor&cat=build_robot.
- ↑ 51.0 51.1 RoboDK robot library
- ↑ including Salamander robot
- ↑ including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
- ↑ Webots robot models
- ↑ CoppeliaSim main features
- ↑ OpenRAVE Closed chains
- ↑ OpenRAVE Dual-arm example
- ↑ OSRF. "Gazebo : Tutorial : Contact Sensor". gazebosim.org. http://gazebosim.org/tutorials?tut=contact_sensor&cat=sensors.
- ↑ OSRF. "Gazebo : Tutorial : Camera Distortion". gazebosim.org. http://gazebosim.org/tutorials?tut=camera_distortion&cat=sensors.
- ↑ 60.0 60.1 OSRF. "Gazebo : Tutorial : Intermediate: Velodyne". gazebosim.org. http://gazebosim.org/tutorials?tut=guided_i1.
- ↑ Collision detection uses a simplified model
- ↑ Possible, no model for noise
Original source: https://en.wikipedia.org/wiki/Robotics simulator.
Read more |