Table of Contents Categories
  • Robotics suites
  •   Encyclosphere.org ENCYCLOREADER
      supported by EncyclosphereKSF

    Robotics simulator

    From Handwiki - Reading time: 7 min

    Short description: Simulator to create applications for physical robots


    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, 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

    1. OSRF. "SDF". sdformat.org. http://sdformat.org. 
    2. "urdf - ROS Wiki". wiki.ros.org. http://wiki.ros.org/urdf. 
    3. "RoboDK API". 22 October 2021. https://github.com/RoboDK/RoboDK-API. 
    4. "RoboDK Plug-In Interface". 16 October 2021. https://github.com/RoboDK/Plug-In-Interface. 
    5. However, requires a connection on an X server for 3D rendering
    6. "Gazebo Community" (in en). https://community.gazebosim.org. 
    7. "Gazebo API" (in en). Gazebo Community. http://gazebosim.org/api.html. 
    8. "Gazebo Answers" (in en). Gazebo Community. http://answers.gazebosim.org. 
    9. "Gazebo Tutorials" (in en). Gazebo Community. http://gazebosim.org/tutorials. 
    10. "Gazebo Issue Tracker" (in en). Gazebo Community. http://bitbucket.org/osrf/gazebo/issues. 
    11. RoboDK mailing list
    12. RoboDK API Documentation
    13. RoboDK Forum
    14. RoboDK Documentation
    15. RoboDK Bug tracker
    16. SimSpark mailing lists
    17. SimSpark client protocols
    18. SimSpark user manual (Wiki)
    19. SimSpark Tracker
    20. SimSpark Wiki
    21. Webots Reference Manual
    22. "Discussions · cyberbotics/Webots". https://github.com/cyberbotics/webots/discussions. 
    23. Webots User Guide
    24. Webots issues on GitHub
    25. Webots technical wiki on GitHub
    26. Webots Discord channel
    27. OpenRAVE mailing list
    28. OpenRAVE API
    29. 29.0 29.1 OpenRAVE Issue Tracker
    30. OpenRAVE User Guide
    31. OpenRAVE Wiki
    32. CoppeliaSim API
    33. Coppelia Robotics Forum
    34. CoppeliaSim User Manual
    35. Coppelia Robotics bug reports
    36. 36.0 36.1 36.2 36.3 36.4 36.5 36.6 36.7 OSRF. "Gazebo". gazebosim.org. http://gazebosim.org/statistics. 
    37. CppCheck
    38. Clang Format
    39. Unit tests
    40. API tests
    41. Webots master
    42. Webots develop
    43. Source
    44. OSRF. "Gazebo : Tutorial : Beginner: Model Editor". gazebosim.org. http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3. 
    45. OSRF. "Gazebo : Tutorial : Aerodynamics". gazebosim.org. http://gazebosim.org/tutorials?tut=aerodynamics&cat=physics. 
    46. OSRF. "Gazebo : Tutorial : Hydrodynamics". gazebosim.org. http://gazebosim.org/tutorials?tut=hydrodynamics&cat=physics. 
    47. OSRF. "Gazebo : ARIAC". gazebosim.org. http://gazebosim.org/ariac. 
    48. OSRF. "Gazebo : HAPTIX". gazebosim.org. http://gazebosim.org/haptix. 
    49. "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/. 
    50. OSRF. "Gazebo : Tutorial : Make an animated model (actor)". gazebosim.org. http://gazebosim.org/tutorials?tut=actor&cat=build_robot. 
    51. 51.0 51.1 RoboDK robot library
    52. including Salamander robot
    53. including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
    54. Webots robot models
    55. CoppeliaSim main features
    56. OpenRAVE Closed chains
    57. OpenRAVE Dual-arm example
    58. OSRF. "Gazebo : Tutorial : Contact Sensor". gazebosim.org. http://gazebosim.org/tutorials?tut=contact_sensor&cat=sensors. 
    59. OSRF. "Gazebo : Tutorial : Camera Distortion". gazebosim.org. http://gazebosim.org/tutorials?tut=camera_distortion&cat=sensors. 
    60. 60.0 60.1 OSRF. "Gazebo : Tutorial : Intermediate: Velodyne". gazebosim.org. http://gazebosim.org/tutorials?tut=guided_i1. 
    61. Collision detection uses a simplified model
    62. Possible, no model for noise



    This article is licensed under CC BY-SA 3.0.
    Original source: https://handwiki.org/wiki/Robotics simulator
    Status: article is cached
    Encyclosphere.org EncycloReader is supported by the EncyclosphereKSF