Robotics simulator
A robotics simulator is 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 (or rebuilt) 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.
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. Of course, 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:
- Fast robot prototyping
- Physics engines for realistic movements. Most simulators use ODE (Gazebo, LpzRobots, Marilou, Webots) or PhysX (Microsoft Robotics Studio, 4DV-Sim).
- 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, MATLAB languages used by Webots, Python 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 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.
Software |
Developers |
Development status |
License |
3D rendering engine |
Physics engine |
3D modeller |
Platforms supported |
Actin |
Energid Technologies |
Active |
Proprietary |
OpenGL |
Proprietary |
Proprietary |
Windows, macOS, Linux, VxWorks, and RTOS-32. (RTX and QNX Planned) |
ARS |
RAL |
Active |
BSD |
VTK |
ODE |
None |
Linux, macOS, Windows |
Gazebo |
Open Source Robotics Foundation(OSRF)[1] |
Active |
Apache 2.0 |
OGRE |
ODE/Bullet/Simbody/DART |
Internal |
Linux, macOS, Windows |
MORSE |
Academic community[2] |
Active |
BSD |
Blender game engine |
Bullet |
Blender |
Linux, BSD*, macOS |
OpenHRP |
AIST |
Active |
Eclipse |
Java3D |
ODE/Internal |
Internal[3] |
Linux, Windows |
RoboDK |
RoboDK |
Active |
Proprietary |
OpenGL |
none |
Internal |
Linux, macOS, Windows, Android |
SimSpark |
O. Obst et al. (+26) |
Active |
GNU GPL (v2) |
Internal |
ODE |
None |
Linux, macOS, Windows |
V-Rep |
Coppelia Robotics |
Active |
Proprietary/GNU GPL |
Internal |
ODE/Bullet/Vortex/Newton |
Internal |
Linux, macOS, Windows |
Webots |
Cyberbotics |
Active |
Proprietary |
OGRE |
custom version of ODE |
Internal |
Linux, macOS, Windows |
4DV-Sim |
4D Virtualiz |
Active |
Proprietary |
OGRE |
PhysX |
Internal |
Linux |
OpenRAVE |
OpenRAVE Community |
Active |
GNU LGPL |
Coin3D/OpenSceneGraph |
ODE/Bullet |
Internal |
Linux, macOS, Windows |
Software |
Developers |
Development status |
License |
3D rendering engine |
Physics engine |
3D modeller |
Platforms supported |
Software |
Main programming language |
Formats support |
Extensibility |
External APIs |
Robotics middleware support |
Primary user interface |
Headless simulation |
Actin |
C++ |
SLDPRT, SLDASM, STEP, OBJ, STL, 3DS, Collada, VRML, URDF, XML, ECD, ECP, ECW, ECX, ECZ, |
Plugins (C++), API |
Unknown |
None |
GUI |
Yes (ActinRT) |
ARS |
Python |
Unknown |
Python |
Unknown |
None |
Unknown |
Unknown |
Gazebo |
C++ |
SDF[4]/URDF[5] |
Plugins (C++) |
C++ |
ROS, Player, Sockets (protobuf messages) |
GUI |
Yes |
MORSE |
Python |
Unknown |
Python |
Python[6] |
Sockets, YARP, ROS, Pocolibs, MOOS |
Command-line |
Yes[7] |
OpenHRP |
C++ |
VRML |
Plugins (C++), API |
C/C++, Python, Java |
OpenRTM-aist |
GUI |
Unknown |
RoboDK |
Python |
STEP, IGES, STL, WRML |
Plugins (C++), API |
C/C++, Python, Matlab |
Socket |
GUI |
Unknown |
SimSpark |
C++, Ruby |
Ruby Scene Graphs |
Mods (C++) |
Network (sexpr) |
Sockets (sexpr) |
GUI, Sockets |
Unknown |
V-Rep |
LUA |
OBJ, STL, DXF, 3DS, Collada,[8] URDF[5][9] |
API, Add-ons, Plugins |
C/C++, Python, Java, Urbi, Matlab/Octave |
Sockets, ROS |
GUI |
Yes[10] |
Webots |
C++ |
WBT, VRML'97 |
Plugins (C++), API |
C/C++, Python, Java, Matlab |
ROS, URBI, NaoQI |
GUI |
Yes[11] |
4DV-Sim |
C++ |
3DS, OBJ, Mesh |
Plugins (C++), API |
FMI/FMU, Matlab |
ROS, Sockets, Plug & Play interfaces[12] |
GUI |
Yes |
OpenRAVE |
C++, Python |
XML, VRML, OBJ, Collada |
Plugins (C++), API |
C/C++, Python, Matlab |
Sockets, ROS, YARP |
GUI, Sockets |
Yes |
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 |
Actin |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Jenkins |
ARS |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Gazebo |
cppcheck |
cpplint |
gtest and qtest |
46.1% |
34.3% |
190.7k |
60.45k |
Jenkins |
MORSE |
N/A |
pylint |
Python unittests |
Unknown |
Unknown |
31.4k[52] |
9.0k |
Jenkins, Travis |
OpenHRP |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
RoboDK |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
SimSpark |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
V-Rep |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Webots |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
4DV-Sim |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
OpenRAVE |
Unknown |
Unknown |
Python nose |
Unknown |
Unknown |
Unknown |
Unknown |
Jenkins [53] |
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 |
Actin |
(Tool Paths)] |
Yes |
Yes |
Yes |
Yes |
ARS |
Unknown |
No |
Unknown |
No |
No |
Gazebo |
Unknown |
No |
Unknown |
No |
No |
MORSE |
Unknown |
No |
Unknown |
No |
No |
OpenHRP |
Unknown |
No |
Unknown |
No |
No |
RoboDK |
Unknown |
No |
Unknown |
Yes |
No |
SimSpark |
Unknown |
No |
Unknown |
No |
No |
V-Rep |
Unknown |
No |
Unknown |
No |
No |
Webots |
Unknown |
No |
Unknown |
No |
No |
4DV-Sim |
Unknown |
No |
Unknown |
No |
No |
OpenRAVE |
Unknown |
No |
Unknown |
No |
No |
Software |
CAD to Motion |
Dynamic Collision Avoidance |
Relative End Effectors |
Off-line Programming |
Real-time Streaming Control |
Families of robots
Software |
UGV (ground mobile robot) |
UAV (aerial robots) |
AUV (underwater robots) |
Robotic arms |
Robotic hands (grasping simulation) |
Humanoid robots |
Human avatars |
Actin |
Yes (Can Include Manipulators) |
Yes (Can Include Manipulators) |
Yes (Can Include Manipulators) |
Yes |
Yes |
Yes |
Yes |
ARS |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Gazebo |
Yes |
Yes |
Yes[54] |
Yes |
Yes |
Yes |
Yes |
MORSE |
Yes |
Yes |
Partial[55] |
Some[56] |
No |
No |
Yes |
OpenHRP |
Yes |
No |
No |
Yes |
Yes |
Yes |
Yes |
RoboDK |
No |
No |
No |
Yes[57] |
No |
No |
No |
SimSpark |
Yes |
No |
No |
Maybe |
Maybe |
Yes |
No |
V-Rep |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
Yes |
Webots |
Yes |
Yes |
Yes[58] |
Yes |
Yes |
Yes[59] |
Yes |
4DV-Sim |
Yes |
Yes |
No |
Yes |
Maybe |
No |
Yes |
OpenRAVE |
Yes |
Unknown |
Unknown |
Yes |
Yes |
Yes |
Yes |
Software |
UGV (ground mobile robot) |
UAV (aerial robots) |
AUV (underwater robots) |
Robotic arms |
Robotic hands (grasping simulation) |
Humanoid robots |
Human avatars |
Supported actuators
Software |
Generic kinematic chains |
Force-controlled motion |
Full list |
Circular kinematic chains |
Kinematically redundant chains |
Bifurcated kinematic chains |
Actin |
Yes |
Yes |
Motion Constraints |
Yes |
Yes |
Yes |
ARS |
Unknown |
Unknown |
|
Unknown |
Unknown |
Unknown |
Gazebo |
Yes |
Yes |
|
Unknown |
Unknown |
Unknown |
MORSE |
Yes[60] |
Yes |
MORSE actuators |
Unknown |
Unknown |
Unknown |
OpenHRP |
Yes |
Yes |
|
Unknown |
Unknown |
Unknown |
RoboDK |
Unknown |
Unknown |
|
Unknown |
Unknown |
Unknown |
SimSpark |
Yes |
No |
SimSpark effectors |
Unknown |
Unknown |
Unknown |
V-Rep |
Yes |
Yes |
|
Unknown |
Unknown |
Unknown |
Webots |
Yes |
Yes |
|
Unknown |
Unknown |
Unknown |
4DV-Sim |
Yes |
Yes |
|
Unknown |
Unknown |
Unknown |
OpenRAVE |
Yes |
Yes |
Joints,Extra Actuators |
Yes[61] |
Yes |
Yes[62] |
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 |
Actin |
Yes |
Yes |
Yes |
Unknown |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
ARS |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
|
Gazebo |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Unknown |
Yes |
Yes |
|
MORSE |
Yes |
Yes |
Yes |
Yes |
Yes |
Unknown |
Yes |
Unknown |
Yes |
Yes[63] |
MORSE sensors |
OpenHRP |
Unknown |
Yes[64] |
Yes |
Unknown |
Yes |
Unknown |
Yes |
Unknown |
Yes |
Yes[65] |
OpenHRP sensors |
RoboDK |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
Unknown |
|
SimSpark |
Yes |
Yes |
Yes[66] |
Partial[67] |
Yes |
Partial |
Unknown |
Unknown |
No |
No |
SimSpark perceptors |
V-Rep |
Unknown |
Yes |
Yes |
Yes |
Yes |
Unknown |
Yes |
Unknown |
Yes |
Yes |
|
Webots |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Unknown |
Yes |
Yes |
|
4DV-Sim |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
OpenRAVE |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Unknown |
Yes |
Yes |
|
Software |
Odometry |
IMU |
Collision |
GPS |
Monocular cameras |
Stereo cameras |
Depth cameras |
Omnidirectional cameras |
2D laser scanners |
3D laser scanners |
Full list |
Other simulators
Open source simulators
- breve: a 3D-world multi-agent simulator in Python.
- EZPhysics: Combination of Ogre3D and ODE physics, GUI exposes all of ODE's objects data, network closed loop remote control optionally via Matlab/Simulink.
- Khepera Simulator an open-source Windows simulator for the Khepera robot predating Webots.
- Klamp't : a simulator introduced in 2013 specializing in stable trimesh-trimesh contact. Supports legged locomotion and manipulation.
- LpzRobots: a 3D-physics robot simulator developed at the University of Leipzig.
- miniBloq: This robot programing software for Arduino boards has a new simulator.
- Moby: a rigid-body dynamics library written in C++.
- OpenSim Simulator for articulated and wheeled robots with a wide range of characteristics. Further development stopped in the year 2006.
- Robotics Toolbox for MATLAB is Free Software that provides functionality for representing pose (homogeneous transformations, Euler and RPY angles, quaternions), arm robots (forward/inverse kinematics, dynamics, simulation, animation) and mobile robots (control, localisation, planning and animation).
- ARTE A Robotics Toolbox for Education (ARTE) is a Free Software educational tool based on Matlab. It provides functions to represent position and orientation. As well, includes functions to simulate robotic arms (direct/inverse kinematics, dynamics, path planning and more). The toolbox includes a large set of 3D robotic models that can be viewed and simulated inside a robotic cell.
- Simbad 3d Robot Simulator Java based simulator
- SimRobot: A robot simulator software package developed at the Universität Bremen and the German Research Center for Artificial Intelligence.
- Stage: 2.5D simulator often used with Player to form the Player/Stage system. Part of the Player Project
- STDR Simulator A simple, flexible and scalable 2D multi-robot simulator for use within Robot Operating System.
- UCHILSIM: A physics based simulator for AIBO Robots introduced in RoboCup 2004.
- UWSim : an UnderWater SIMulator for marine robotics research and development which incorporates sensor, dynamic and physics simulation.
Closed-source and proprietary simulators
- anyKode Marilou
- ORCA-Sim: a (Windows) 3D robot simulator using the Newton Game Dynamics physics engine.
References
- ↑ The development is led by 13+ full-time developers with graduate-level backgrounds in physics, rendering, robot control, human-robot interaction, user-interface design, communication protocols, and multi-robot coordination.
- ↑ The development is led by 10+ universities/research institutes including LAAS-CNRS, TUM, ONERA, DLR. See the AUTHORS list for the complete list.
- ↑
- ↑ Simulation Description Format
- 1 2 Universal Robot Description Format
- ↑ pymorse
- ↑ Only when running on a X server; relies on Xvfb.
- ↑ See the V-Rep documentation
- ↑ Can import URDF files through bundled plugin
- ↑ Versions >= 3.1.0 V-rep Command line options
- ↑ However, requires a connection on an X server for 3D rendering
- ↑ Emulate the real sensors protocols and media (Ethernet, Serial, CAN,etc.)
- ↑ Actin User Guide
- ↑ Gazebo mailing list
- ↑ Gazebo API
- ↑ Gazebo Answers
- ↑ Gazebo User Guide
- ↑ Gazebo Issue Tracker
- ↑ Gazebo Wiki
- ↑ MORSE users mailing list, MORSE developers mailing list
- ↑ MORSE documentation
- ↑ MORSE issue tracker
- ↑
- ↑
- ↑
- ↑
- ↑ RoboDK mailing list
- ↑ RoboDK API examples
- ↑ RoboDK quick help
- ↑ SimSpark mailing lists
- ↑ SimSpark client protocols
- ↑ SimSpark user manual (Wiki)
- ↑ SimSpark Tracker
- ↑ SimSpark Wiki
- ↑ v-rep API framework
- ↑ v-rep forum
- ↑ v-rep User Manual
- ↑ Webots Reference Manual
- ↑ Webots Forum
- ↑ Webots User Guide
- ↑ Webots bug report
- ↑ Cyberbotics Robot Curriculum
- ↑ support{AT}4d-virtualiz.com
- ↑ support{AT}4d-virtualiz.com
- ↑ Bug report
- ↑ OpenRAVE mailing list
- ↑ OpenRAVE API
- ↑ OpenRAVE Issue Tracker
- ↑ OpenRAVE User Guide
- ↑ OpenRAVE Issue Tracker
- ↑ OpenRAVE Wiki
- ↑ Source: Ohloh
- ↑ Source:
- ↑ Hydrodynamic plugin available in Gazebo6+
- ↑ Submarine model available, but no dynamic model.
- ↑ Kuka-LWR and Mitsubishi PA-10 included. Other non-concurrent arms can be simulated via the kinematic chains actuator.
- ↑ Complete library of industrial robots
- ↑ including Salamander robot
- ↑ including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
- ↑ Joint control (position/velocity only, no force control) and inverse kinematics
- ↑ OpenRAVE Closed chains
- ↑ OpenRAVE Dual-arm example
- ↑ Velodyne 3D laser scanner
- ↑ Acceleration and Gyro sensors
- ↑ OpenHRP sensors
- ↑ Collision detection uses a simplified model
- ↑ Possible, no model for noise
External links
|
---|
Main articles | | |
---|
Types | |
---|
Classifications | |
---|
Locomotion | |
---|
Research | |
---|
Related | |
---|
- Category
- Portal
|