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

SoftwareDevelopersDevelopment statusLicense3D rendering enginePhysics engine3D modellerPlatforms supported
GazeboOpen Source Robotics Foundation (OSRF)ActiveApache 2.0OGREODE, Bullet, Simbody, DARTInternalLinux, macOS, Windows
RoboDKRoboDKActiveProprietaryOpenGLGravity plug-inInternalLinux, macOS, Windows, Android, iOS, Debian
SimSparkO. Obst et al. (+26)ActiveGNU GPL (v2)InternalODENoneLinux, macOS, Windows
WebotsCyberbotics Ltd.ActiveApache 2.0Internal (WREN)Fork of ODEInternalLinux, macOS, Windows
OpenRAVEOpenRAVE CommunityActiveGNU LGPLCoin3D, OpenSceneGraphODE, BulletInternalLinux, macOS, Windows
CoppeliaSimCoppelia RoboticsActiveDual: commercial, GNU GPLInternalMuJoCo, Bullet, ODE, Vortex, NewtonInternalLinux, macOS, Windows
ENCY RobotENCY SoftwareActiveProprietaryInternal (proprietary ENCY X platform)Internal (3D modeling)Windows
SoftwareDevelopersDevelopment statusLicense3D rendering enginePhysics engine3D modellerPlatforms supported

Technical information

SoftwareMain programming languageFormats supportExtensibilityExternal APIsRobotics middleware supportPrimary user interfaceHeadless simulation
GazeboC++SDF/URDF, OBJ, STL, COLLADAPlug-ins (C++)C++ROS, Player, sockets (protobuf messages)GUIYes
RoboDKPythonSLDPRT, SLDASM, STEP, OBJ, STL, 3DS, COLLADA, VRML, Robot Operating System URDF, Rhinoceros 3D, ...API, Plug-In InterfacePython, C/C++, C#, Matlab, ...SocketGUIYes
SimSparkC++, RubyRuby Scene GraphsMods (C++)Network (sexpr)Sockets (sexpr)GUI, socketsUnknown
WebotsC++WBT, VRML, X3D, 3DS, Blender, BVH, COLLADA, FBX, STL, OBJ, URDFAPI, PROTOs, plug-ins (C/C++)C, C++, Python, Java, Matlab, ROSSockets, ROS, NaoQIGUIYes
OpenRAVEC++, PythonXML, VRML, OBJ, COLLADAPlug-ins (C++), APIC/C++, Python, MatlabSockets, ROS, YARPGUI, socketsYes
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, ZeroMQGUIYes
ENCY RobotDelphi, C#, C++IGES, STEP, STL, DXF, VRML, Rhinoceros (3DM), Parasolid (x_t/x_b), SolidWorks (SLDPRT/SLDASM), Solid Edge (PAR/PSM/ASM/PWR), PLY, AMF, JT, PLMXML (and others) Add-ins: Alibre Design, Autodesk Inventor, IronCAD, CADbro, CAXA 3D, FreeCAD, KeyCreator, Siemens NX, Rhinoceros, SolidCAM, SolidEdge, SOLIDWORKS, SpaceClaim, ZW3D, OnshapeAPI; scriptingC#, Delphi, C++ (CAMIPC / IPC)NoneGUIYes
SoftwareMain programming languageFormats supportExtensibilityExternal APIsRobotic middleware supportPrimary user interfaceHeadless simulation

Infrastructure

Support

SoftwareMailing listAPI documentationPublic forum, help systemUser manualIssue trackerWikiChat
GazeboYesYesYesYesYesNo
RoboDKYesYesYesYesYesNoUnknown
SimSparkYesYesNoYesYesYesUnknown
WebotsNoYesYesYesYesYesYes
OpenRAVEYesYesYesYesYesYesUnknown
CoppeliaSimNoYesYesYesYesUnknownNo
ENCY RobotYesYesYesYesUnknownNoYes
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
Gazebocppcheckcpplintgtest and qtest77.0%53.3%320k106kJenkins
RoboDKUnknownUnknownUnknownUnknownUnknownUnknownUnknownUnknown
SimSparkUnknownUnknownUnknownUnknownUnknownUnknownUnknownUnknown
Webotscppcheckclang-formatunit tests100% of API functionsmaster, develop~200k~50kGitHub Actions
OpenRAVEUnknownUnknownPython noseUnknownUnknownUnknownUnknownJenkins
CoppeliaSimUnknownUnknownUnknownUnknownUnknownUnknownUnknownUnknown
ENCY RobotUnknownUnknownUnknownUnknownUnknownUnknownUnknownUnknown
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
GazeboUnknownYesYesYesYes
RoboDKYesYesYesYesYes
SimSparkUnknownNoUnknownNoNo
WebotsUnknownYesYesYesYes
OpenRAVEUnknownNoUnknownNoNo
CoppeliaSimUnknownYesYesYesYes
ENCY RobotYesYesYes (Tool-to-part / part-to-tool)YesYes (via ENCY Hyper real-time execution)
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
GazeboYesYesYesYesYesYesYes
RoboDKNoNoNoYesNoNoNoYes
SimSparkYesNoNoMaybeMaybeYesNo
WebotsYesYesYesYesYesYesYesYes
OpenRAVEYesUnknownUnknownYesYesYesYes
CoppeliaSimYesYesYesYesYesYesYesYes
ENCY RobotNoNoNoYesNoNoNoNo
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
GazeboYesYesYesYesYes
RoboDKUnknownUnknownUnknownUnknownUnknown
SimSparkYesNoUnknownUnknownUnknown
WebotsYesYesYesYesYes
OpenRAVEYesYes,YesYesYes
CoppeliaSimYesYesYesYesYes
ENCY RobotYesNoUnknownYes (redundancy / external axes)Unknown
SoftwareGeneric kinematic chainsForce-controlled motionFull listCircular kinematic chainsKinematically redundant chainsBifurcated kinematic chains

Supported sensors

SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list
GazeboYesYesYesYesYesYesYesYesYesYes
RoboDKUnknownUnknownUnknownUnknownUnknownYesYesYesYesYes
SimSparkYesYesYesPartialYesPartialUnknownUnknownNoNo
WebotsYesYesYesYesYesYesYesYesYesYes
OpenRAVEYesYesYesYesYesYesYesUnknownYesYes
CoppeliaSimYesYesYesYesYesYesYesYesYesYes
ENCY RobotUnknownUnknownYesUnknownUnknownUnknownUnknownUnknownUnknownUnknown
SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list