A curated list of open source robotics simulators and libraries.
- AirSim - Open source simulator based on Unreal Engine for autonomous vehicles from Microsoft AI & Research. [github ]
- ARTE - A Matlab toolbox focussed on robotic manipulators, both serial and parallel mechanisms are included. [github ]
- Gazebo - A dynamic multi-robot simulator from Open Robotics. [bitbucket]
- GraspIt! - A simulator for grasping research that can accommodate arbitrary hand and robot designs developed by the Columbia University Robotics Group. [github ]
- Isaac - Nvidia's virtual simulator for robots
- MORSE - The Modular OpenRobots Simulation Engine. [github ]
- V-REP - Virtual robot experimentation platform.
- Actin Simulation
- RobotDK - Simulation and OLP for robots
- RobotStudio
- Robot Virtual Worlds
- Virtual Robotics Toolkit
- Visual Components
- Webots - A commercial robot simulator used in more than 1200 companies, universities and research centers worldwide for R&D, education and research.
⚠️ The following table is not complete. Please feel free to report if you find something incorrect or missing.
Name | Models | Features | Languages | Licenses | Code | Popularity |
---|---|---|---|---|---|---|
Bullet | rigid, soft | ik, id | C++, Python | Zlib | github | |
CHRONO::ENGINE | rigid, soft, granular, fluid | ik, urdf | C++, Python | BSD-3-Clause | github | |
DART | rigid, soft | ik, id, plan, urdf, sdf | C++, Python | BSD-2-Clause | github | |
Drake | rigid, aero, fluid | ik, trj-opt, plan | C++, Matlab | BSD-3-Clause | github | |
Flex | rigid, soft, particle, fluid | C++ | github | |||
FROST | rigid | MATLAB | BSD-3-Clause | github | ||
IBDS | rigid, particle | C++ | Zlib | |||
idyntree | rigid | id | C++, Python, Matlab, Lua | LGPL-2.1 | github | |
KDL | rigid | ik | C++ | LGPL-2.1 | github | |
kindr | rigid | (todo) | C++, Matlab | BSD-3-Clause | github | |
Klampt | (todo) | (todo) | C++, Python | BSD-3-Clause | github | |
LibrePilot | uav, vehicles | (todo) | C++ | GPL-3.0 | bitbucket, github | |
MARS | (todo) | (todo) | C++, Python | LGPL-3.0 | github | |
MBDyn | (todo) | (todo) | C++ | GPL-2.1 | download | |
MBSim | (todo) | (todo) | C++ | (not specified) | github | |
MBSlib | (todo) | (todo) | C++ | LGPL-3.0 | github | |
metapod | (todo) | (todo) | C++ | LGPL-3.0 | github | |
Moby | rigid | id | C++ | GPL-2.0 | github | |
mrpt | vehicle | slam, cv | C++, Python, Matlab | BSD-3-Clause | github | |
MuJoCo | (todo) | id | C++, Python | licenses | closed source | |
Newton Dynamics | (todo) | (todo) | C++ | Zlib | github | |
nphysics | (todo) | (todo) | Rust | BSD-3-Clause | github | |
ODE | rigid | C++ | LGPL-2.1 or BSD-3-Clause | bitbucket | ||
OpenRAVE | (todo) | (todo) | C++, Python | LGPL-3.0 | github | |
pinocchio | rigid | ik, id | C++, Python | LGPL-3.0 | github | |
PositionBasedDynamics | (todo) | (todo) | C++ | MIT | github | |
PyDy | (todo) | (todo) | Python | BSD-3-Clause | github | |
RBDL | rigid | ik | C++, Python | LGPL-3.0 | bitbucket | |
RBDyn | rigid | (todo) | C++, Python | LGPL-3.0 | github | |
ReactPhysics3d | (todo) | (todo) | C++ | Zlib | github | |
Robopy | (todo) | (todo) | Python 3 | MIT | github | |
Robotics Library | (todo) | (todo) | C++ | GPL-3.0 or BSD-2-Clause | github | |
RobWork | (todo) | (todo) | C++ | Apache-2.0 | SVN (id/pw required) | |
siconos | (todo) | (todo) | C++, Python | Apache-2.0 | github | |
Simbody | rigid, molecules | id, urdf | C++ | Apache-2.0 | github | |
SOFA | rigid, soft, medical | (todo) | C++ | LGPL-2.1 | github | |
trep | rigid | dm, trj-opt | C, Python | GPL-3.0 | github | |
qu3e | rigid | - | C++ | Zlib | github |
For simplicity, shortened names are used to represent the supported models and features as
-
Supported Models
- rigid: rigid bodies
- soft: soft bodies
- aero: aerodynamics
- granular: granular materials (like sand)
- fluid: fluid dynamics
- vehicles
- uav: unmanned aerial vehicles (like drones)
- medical
- molecules
- parallel: parallel mechanism (like Stewart platform)
-
Features on Simulation, Analysis, Planning, Control Design
- dm: discrete mechanics
- ik: inverse kinematics solvers
- id: inverse dynamics
- slam: simultaneous localization and mapping
- trj-opt: trajectory optimization
- plan: motion planning algorithms
- cv: computer visionn
- urdf: urdf parser
- sdf: sdf parser
- OpenAI Gym - A toolkit for developing and comparing reinforcement learning algorithms. It supports teaching agents everything from walking to playing games like Pong or Go. [github ]
- OpenAI Gym with DART [github ]
- Aikido - A C++ library for solving robotic motion planning and decision making problems. [github ]
- CuiKSuite - A set of applications to solve position analysis and path planning problems with applications mainly to robotics, but also to molecular biology
- Control Toolbox - An efficient C++ library for control, estimation, optimization and motion planning in robotics. [bitbucket]
- HPP - Humanoid Path Planner: a C++ Software Developement Kit implementing path planning for kinematic chains in environments cluttered with obstacles. [github]
- MoveIt! - State of the art software for mobile manipulation, incorporating the latest advances in motion planning, manipulation, 3D perception, kinematics, control and navigation. [github ]
- OMPL - The Open Motion Planning Library. [bitbucket, github ]
- Cover-Tree - A well-documented C++ implementation of the cover tree datastructure for quick k-nearest-neighbor search. [github ]
- Faster cover tree by Mike Izbicki et al., ICML 2015.
- FLANN - Fast Library for Approximate Nearest Neighbors. [github ]
- nanoflann - C++ header-only library for Nearest Neighbor (NN) search wih KD-trees. [github ]
-
OctoMap - An Efficient Probabilistic 3D Mapping Framework Based on Octrees. Contains the main OctoMap library, the viewer octovis, and dynamicEDT3D. [github ]
-
voxblox - A library for flexible voxel-based mapping, mainly focusing on truncated and Euclidean signed distance fields. [github ]
- CasADi - A symbolic framework for algorithmic (a.k.a. automatic) differentiation and numeric optimization. [github ]
- Ceres Solver - A large scale non-linear optimization library . Ceres Solver has been used in production at Google for more than four years now. It is clean, extensively tested and well documented code that is actively developed and supported. [github ]
- Ipopt - Ipopt (Interior Point OPTimizer, pronounced eye-pea-Opt) is a software package for large-scale nonlinear optimization. [github ]
- libcmaes - A multithreaded C++11 library with Python bindings for high performance blackbox stochastic optimization using the CMA-ES algorithm for Covariance Matrix Adaptation Evolution Strategy. [github ]
- limbo - A lightweight framework for Gaussian processes and Bayesian optimization of black-box functions. [github ]
- NLopt - NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. [github ]
- SCS - SCS (Splitting Conic Solver) is a numerical optimization package for solving large-scale convex cone problems, based on our paper Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding. [github ]
- sferes2 - A high-performance, multi-core, lightweight, generic C++98 framework for evolutionary computation. [github ]
- SDF - XML format that describes objects and environments for robot simulators, visualization, and control. (bitbucket)
- urdf - XML format for representing a robot model. [github ]
- phobos - An add-on for Blender allowing to create URDF and SMURF robot models in a WYSIWYG environment. [github ]
- ROS - A set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. [github repos]
- YARP - A library and toolkit for communication and device interfaces, used on everything from humanoids to embedded devices. [github ]
- Linorobot - A suite of Open Source ROS compatible robots that aims to provide students, developers, and researchers a low-cost platform in creating new exciting applications on top of ROS. [github ]
- onine - Service Robot based on Linorobot and Braccio Arm [github ]
- Cartographer - A system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations. [github ]
- DSO - DSO is a novel direct and sparse formulation for Visual Odometry. [github ]
- ElasticFusion - Real-time dense visual SLAM system capable of capturing comprehensive dense globally consistent surfel-based maps of room scale environments explored using an RGB-D camera. [github ]
- Kintinuous - Real-time dense visual SLAM system capable of producing high quality globally consistent point and mesh reconstructions over hundreds of metres in real-time with only a low-cost commodity RGB-D sensor. [github ]
- LSD-SLAM - LSD-SLAM is a novel approach to real-time monocular SLAM. It is fully direct (i.e. does not use keypoints / features) and creates large-scale, semi-dense maps in real-time on a laptop. [github ]
- ORB-SLAM2 - A real-time SLAM library for Monocular, Stereo and RGB-D cameras that computes the camera trajectory and a sparse 3D reconstruction (in the stereo and RGB-D case with true scale). [github ]
- SRBA - Sparser Relative Bundle Adjustment (SRBA) is a header-only C++ library for solving SLAM/BA in relative coordinates with flexibility for different submapping strategies and aimed at constant time local graph update. BSD 3-Clause License. [github ]
- ViSP - A cross-platform library that allows prototyping and developing applications using visual tracking and visual servoing technics at the heart of the researches done by Inria Lagadic team. [github ]
- Awesome Robotics - This is a list of various books, courses and other resources for robotics. It's an attempt to gather useful material in one place for everybody who wants to learn more about the field.
- Awesome Robotics - Awesome links and software libraries that are useful for robots.
- Awesome Artificial Intelligence
- Awesome Collision Detection
- Awesome Computer Vision
- Awesome Machine Learning
- Awesome Deep Learning
- Awesome Gazebo
Contributions are very welcome! Please read the contribution guidelines first. Also, please feel free to report any error.