A curated list of robotics simulators and libraries.

- AirSim - Simulator based on Unreal Engine for autonomous vehicles [github ]
- ARGoS - Physics-based simulator designed to simulate large-scale robot swarms [github ]
- ARTE - Matlab toolbox focussed on robotic manipulators [github ]
- CARLA - Open-source simulator for autonomous driving research [github ]
- CoppeliaSim - Formaly V-REP. Virtual robot experimentation platform [github ]
- Gazebo - Dynamic multi-robot simulator [github ]
- GraspIt! - Simulator for grasping research that can accommodate arbitrary hand and robot designs [github ]
- Ignition Gazebo - Open source robotics simulator [github ]
- Habitat-Sim - Simulation platform for research in embodied artificial intelligence [github ]
- Isaac - Nvidia’s virtual simulator for robots
- MORSE - Modular open robots simulation engine [github ]
- Neurorobotics Platform - Internet-accessible simulation of robots controlled by spiking neural networks [bitbucket]
- PyBullet - An easy to use simulator for robotics and deep reinforcement learning [github ]
- Webots - Robot simulator that provides a complete development environment [github ]

- Actin Simulation
- Kineo - Path planning and trajectory optimization for industrial robotics and digital mock-up review applications
- RobotDK - Simulation and OLP for robots
- RobotStudio
- Robot Virtual Worlds
- Virtual Robotics Toolkit
- Visual Components

- AWS RoboMaker - Service that makes it easy to develop, test, and deploy intelligent robotics applications at scale

:warning: 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 |
---|---|---|---|---|---|---|

ARCSim | soft | C++ | ||||

Bullet | rigid, soft | ik, id, urdf, sdf | 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 | |

mvsim | vehicle | (todo) | C++ | GPL-3.0 | github | |

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, urdf, analytical derivatives, code generation | C++, Python | BSD-2-Clause | github | |

PositionBasedDynamics | (todo) | (todo) | C++ | MIT | github | |

PhysX | (todo) | (todo) | C++ | unknown | github | |

PyDy | (todo) | (todo) | Python | BSD-3-Clause | github | |

RBDL | rigid | ik,id,urdf | C++, Python | Zlib | github | |

RBDyn | rigid | (todo) | C++, Python | LGPL-3.0 | github | |

RaiSim | (todo) | (todo) | C++ | custom | github | |

ReactPhysics3d | (todo) | (todo) | C++ | Zlib | github | |

RigidBodyDynamics.jl | rigid | (todo) | Julia | MIT “Expat” | github | |

Rigs of Rods | rigid, soft, vehicle | (todo) | C++ | GPL-3.0 | 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 | gitlab | |

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

Tiny Differentiable Simulator | rigid | (todo) | C++, Python | Apache-2.0 | 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 (please find IK specialized packages in this list)
- id: inverse dynamics
- slam: simultaneous localization and mapping
- trj-opt: trajectory optimization
- plan: motion planning algorithms
- cv: computer vision
- urdf: urdf parser
- sdf: sdf parser

- IKBT - A python package to solve robot arm inverse kinematics in symbolic form [github ]
- RelaxedIK - Real-time Synthesis of Accurate and Feasible Robot Arm Motion [github ]

- DLL - Deep Learning Library (DLL) for C++ [github ]
- DyNet - The Dynamic Neural Network Toolkit [github ]
- Fido - Lightweight C++ machine learning library for embedded electronics and robotics [github ]
- MiniDNN - A header-only C++ library for deep neural networks [github ]
- mlpack - Scalable C++ machine learning library [github ]
- OpenAI Gym - Developing and comparing reinforcement learning algorithms [github ]
- RLLib - Temporal-difference learning algorithms in reinforcement learning [github ]
- tiny-dnn - Header only, dependency-free deep learning framework in C++14 [github ]

- AIKIDO - Solving robotic motion planning and decision making problems. [github ]
- CuiKSuite - Applications to solve position analysis and path planning problems
- Control Toolbox - Open-Source C++ Library for Robotics, Optimal and Model Predictive Control [github ]
- GPMP2 - Gaussian Process Motion Planner 2 [github ]
- HPP - Path planning for kinematic chains in environments cluttered with obstacles [github]
- MoveIt! - Motion planning framework [github ]
- OMPL - Open motion planning library [bitbucket, github ]
- pymanoid - Humanoid robotics prototyping environment based on OpenRAVE [github ]
- ROS Behavior Tree - [github ]
- The Kautham Project - A robot simulation toolkit for motion planning [github ]
- TOPP-RA - Time-parameterizing robot trajectories subject to kinematic and dynamic constraints [github ]

- opt_control - Time-optimal Trajectory Generation and Control [github ]
- towr - A light-weight, Eigen-based C++ library for trajectory optimization for legged robots [github ]
- trajopt - Framework for generating robot trajectories by local optimization [github ]

- Cover-Tree - Cover tree data structure for quick k-nearest-neighbor search [github ]
- Faster cover trees by Mike Izbicki et al., ICML 2015.

- FLANN - Fast Library for Approximate Nearest Neighbors [github ]
- nanoflann - Nearest Neighbor search with KD-trees [github ]

- libpointmatcher - Iterative Closest Point library for 2-D/3-D mapping in Robotics [github ]
- Octree - Fast radius neighbor search with an Octree [github ]
- OctoMap - Efficient Probabilistic 3D Mapping Framework Based on Octrees [github ]
- PCL - 2D/3D image and point cloud processing [github ]
- voxblox - Flexible voxel-based mapping focusing on truncated and Euclidean signed distance fields [github ]
- Utility Software

- CasADi - Symbolic framework for algorithmic differentiation and numeric optimization [github ]
- Ceres Solver - Large scale nonlinear optimization library [github ]
- eigen-qld - Interface to use the QLD QP solver with the Eigen3 library [github ]
- EXOTica - Generic optimisation toolset for robotics platforms [github ]
- hpipm - High-performance interior-point-method QP solvers (Ipopt, Snopt) [github ]
- HYPRE - Parallel solvers for sparse linear systems featuring multigrid methods [github ]
- ifopt - An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt) [github ]
- Ipopt - Large scale nonlinear optimization library [github ]
- libcmaes - Blackbox stochastic optimization using the CMA-ES algorithm [github ]
- limbo - Gaussian processes and Bayesian optimization of black-box functions [github ]
- lpsolvers - Linear Programming solvers in Python with a unified API [github ]
- NLopt - Nonlinear optimization [github ]
- OptimLib - Lightweight C++ library of numerical optimization methods for nonlinear functions [github ]
- Pagmo - Scientific library for massively parallel optimization [github ]
- pymoo - Multi-objective Optimization in Python [github ]
- qpsolvers - Quadratic Programming solvers in Python with a unified API [github ]
- RobOptim - Numerical Optimization for Robotics. [github ]
- SCS - Numerical optimization for solving large-scale convex cone problems [github ]
- sferes2 - 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 - Add-on for Blender creating URDF and SMURF robot models [github ]

- AutoRally - High-performance testbed for advanced perception and control research [github ]
- Linorobot - ROS compatible ground robots [github ]
- Rock - Software framework for robotic systems
- ROS - Flexible framework for writing robot software [github repos]
- ROS 2 - Version 2.0 of the Robot Operating System (ROS) software stack [github repos]
- YARP - Communication and device interfaces applicable from humanoids to embedded devices [github ]

- Cartographer - Real-time SLAM in 2D and 3D across multiple platforms and sensor configurations [github ]
- DSO - Novel direct and sparse formulation for Visual Odometry [github ]
- ElasticFusion - Real-time dense visual SLAM system [github ]
- fiducials - Simultaneous localization and mapping using fiducial markers [github ]
- GTSAM - Smoothing and mapping (SAM) in robotics and vision [bitbucket]
- Kintinuous - Real-time large scale dense visual SLAM system [github ]
- LSD-SLAM - Real-time monocular SLAM [github ]
- ORB-SLAM2 - Real-time SLAM library for Monocular, Stereo and RGB-D cameras [github ]
- RTAP-Map - RGB-D Graph SLAM approach based on a global Bayesian loop closure detector [github ]
- SRBA - Solving SLAM/BA in relative coordinates with flexibility for different submapping strategies [github ]

- Fluid Engine Dev - Jet - Fluid simulation engine for computer graphics applications [github ]

- Fastor - Light-weight high performance tensor algebra framework in C++11/14/17 [github ]
- linalg.h - Single header public domain linear algebra library for C++11 [github ]
- manif - Small c++11 header-only library for Lie theory. [github ]
- Sophus - Lie groups using Eigen [github ]
- SpaceVelAlg - Spatial vector algebra with the Eigen3 [github ]

- fuse - General architecture for performing sensor fusion live on a robot [github ]

- Awesome Robotics (Kiloreux)
- Awesome Robotics (ahundt)
- Awesome Robotic Tooling
- Awesome Artificial Intelligence
- Awesome Collision Detection
- Awesome Computer Vision
- Awesome Machine Learning
- Awesome Deep Learning
- Awesome Gazebo
- Awesome Grasping
- Awesome Human Robot Interaction
- PythonRobotics - Python sample codes for robotics algorithms

Contributions are very welcome! Please read the contribution guidelines first. Also, please feel free to report any error.