Robotics simulator


A robotics simulator is a simulator used to create application for a physical robot without depending on the actual machine, thus saving cost and time. In some case, these applications can be transferred onto the physical robot without modifications.
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 biological in nature when compared to simulators that are more binary, or computational. In addition, behavior-based simulators may "learn" from mistakes and are capable of demonstrating the anthropomorphic quality of tenacity.
robotics simulator.|thumb|right
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 is capable of emulating the motion of an actual 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 for development of a robotics control program is highly recommended regardless of whether an actual 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 an actual robot. This primarily holds for industrial robotic applications only, since the success of off-line programming depends on how similar the real environment of the robot is to the simulated environment.
Sensor-based robot actions are much more difficult to simulate and/or to program off-line, since the robot motion depends on the instantaneous sensor readings in the real world.

Features

Modern simulators tend to provide the following features:
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

SoftwareDevelopersDevelopment statusLicense3D rendering enginePhysics engine3D modellerPlatforms supported
GazeboOpen Source Robotics FoundationActiveOGREODE/Bullet/Simbody/DARTInternalLinux, macOS, Windows
RoboDKRoboDKActiveOpenGLGravity pluginInternalLinux, macOS, Windows, Android, iOS, Debian
SimSparkO. Obst et al. ActiveGNU GPL InternalODE-Linux, macOS, Windows
WebotsCyberbotics Ltd.ActiveInternal Fork of ODEInternalLinux, macOS, Windows
OpenRAVEOpenRAVE CommunityActiveGNU LGPLCoin3D/OpenSceneGraphODE/BulletInternalLinux, macOS, 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, ColladaPlugins C++ROS, Player, Sockets GUI
RoboDKPythonSLDPRT, SLDASM, STEP, OBJ, STL, 3DS, Collada, VRML, URDF, Rhinoceros_3D,...API, Plug-In InterfacePython, C/C++, C#, Matlab,...SocketGUI
SimSparkC++, RubyRuby Scene GraphsMods Network Sockets GUI, Sockets
WebotsC++WBT, VRML, X3D, 3DS, Blender, BVH, Collada, FBX, STL, OBJ, URDFAPI, PROTOs, Plugins C, C++, Python, Java, Matlab, ROSSockets, ROS, NaoQIGUI
OpenRAVEC++, PythonXML, VRML, OBJ, ColladaPlugins, APIC/C++, Python, MatlabSockets, ROS, YARPGUI, Sockets
SoftwareMain programming languageFormats supportExtensibilityExternal APIsRobotic middleware supportPrimary user interfaceHeadless simulation

Infrastructure

Support

SoftwareMailing ListAPI DocumentationPublic Forum/Help SystemUser ManualIssue TrackerWikiChat
Gazebo-
RoboDK
SimSpark
Webots
OpenRAVE
SoftwareMailing ListAPI DocumentationPublic Forum/Help SystemUser ManualIssue TrackerWiki-

Code Quality

SoftwareStatic Code CheckerStyle CheckerTest SystemTest Function coverageTest Branch coverageLines of CodeLines of CommentsContinuous Integration
Gazebocppcheckcpplintgtest and qtest77.0%53.3%320k106kJenkins
RoboDK
SimSpark
Webotscppcheckclang-formatunit tests100% of API functionsmaster, develop~200k~50kTravis, AppVeyor, GitGuardian, Github Actions
OpenRAVEPython noseJenkins
SoftwareStatic Code CheckerStyle CheckerTest SystemTest Function coverageTest Branch coverageLines of CodeLines of CommentsContinuous Integration

Features

Families of robots

SoftwareUGV UAV AUV Robotic armsRobotic hands Humanoid robotsHuman avatarsFull list
Gazebo
RoboDK
SimSpark
Webots
OpenRAVE
SoftwareUGV UAV AUV Robotic armsRobotic hands Humanoid robotsHuman avatarsFull list

Supported actuators

SoftwareGeneric kinematic chainsForce-controlled motionFull listCircular kinematic chainsKinematically redundant chainsBifurcated kinematic chains
Gazebo
RoboDK
SimSpark
Webots
OpenRAVE,
SoftwareGeneric kinematic chainsForce-controlled motionFull listCircular kinematic chainsKinematically redundant chainsBifurcated kinematic chains

Supported sensors

SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list
Gazebo
RoboDK
SimSpark
Webots
OpenRAVE
SoftwareOdometryIMUCollisionGPSMonocular camerasStereo camerasDepth camerasOmnidirectional cameras2D laser scanners3D laser scannersFull list