Awesome Robotics Libraries
A curated list of robotics simulators and libraries.
Table of Contents
Free or Open Source
- AI2-THOR - Python framework with a Unity backend, providing interaction, navigation, and manipulation support for household based robotic agents [github
]
- 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
]
- AVIS Engine - Autonomous Vehicles Intelligent simulation software, A Fast and robust simulator software for Autonomous vehicle development. [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
]
- Habitat-Sim - Simulation platform for research in embodied artificial intelligence [github
]
- Hexapod Robot Simulator - Open-source hexapod robot inverse kinematics and gaits visualizer [github
]
- Ignition Gazebo - Open source robotics simulator [github
]
- Isaac Sim - Nvidia’s robotic simulation environment with GPU physics simulation and ray tracing
- 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
]
- PyBullet_Industrial - A extension to PyBullet that allows for the simulation of various robotic manufacturing processes such as milling or 3D-printing. [github
]
- Robot Gui - A three.js based 3D robot interface [github
]
- SAPIEN - A realistic and physics-rich simulated environment that hosts a large-scale set for articulated objects. [github
]
- Simbad - A Java 3D robot simulator, enables to write own robot controller with modifying environment using available sensors.
- Unity - Popular game engine that now offers open-source tools, tutorials, and resources for robotics simulation [github
]
- Webots - A complete development environment to model, program and simulate robots, vehicles and mechanical systems [github
]
Commercial
Cloud
- 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
- IKBT - A python package to solve robot arm inverse kinematics in symbolic form [github
]
- Lively - A highly configurable toolkit for commanding robots in mixed modalities [github
]
- RelaxedIK - Real-time Synthesis of Accurate and Feasible Robot Arm Motion [github
]
- Trip - A python package that solves inverse kinematics of parallel-, serial- or hybrid-robots [github
]
- AllenAct - Python/PyTorch-based Research Framework for Embodied AI [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
]
- Ivy - Unified Machine Learning Framework [github
]
- LeRobot - State-of-the-art approaches, pretrained models, datasets, and simulation environments for real-world robotics in PyTorch. [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
]
- robosuite - A modular simulation framework and benchmark for robot 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
]
- Bioptim - Bioptim, a Python Framework for Musculoskeletal Optimal Control in Biomechanics [github
]
- CuiKSuite - Applications to solve position analysis and path planning problems
- cuRobo - A CUDA accelerated library containing a suite of robotics algorithms that run significantly faster. [github
]
- Control Toolbox - Open-Source C++ Library for Robotics, Optimal and Model Predictive Control [github
]
- Crocoddyl - Optimal control library for robot control under contact sequence [github
]
- Fields2Cover - Robust and efficient coverage paths for autonomous agricultural vehicles [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
]
- OCS2 - Efficient continuous and discrete time optimal control implementation [bitbucket]
- pymanoid - Humanoid robotics prototyping environment based on OpenRAVE [github
]
- ROS Behavior Tree - [github
]
- Ruckig - Real-time, time-optimal and jerk-constrained online trajectory generation. [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
]
- Ungar - Expressive and efficient implementation of optimal control problems using template metaprogramming [github
]
Motion Optimizer
- TopiCo - Time-optimal Trajectory Generation and Control [github
]
- towr - A light-weight, Eigen-based C++ library for trajectory optimization for legged robots [github
]
- TrajectoryOptimization - A fast trajectory optimization library written in Julia [github
]
- trajopt - Framework for generating robot trajectories by local optimization [github
]
Nearest Neighbor
3D Mapping
- 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
]
- Treexy - Brutally fast, sparse, 3D Voxel Grid [github
]
- voxblox - Flexible voxel-based mapping focusing on truncated and Euclidean signed distance fields [github
]
- wavemap - Fast, efficient and accurate multi-resolution, multi-sensor 3D occupancy mapping [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
]
- OSQP - The Operator Splitting QP Solver [github
]
- Pagmo - Scientific library for massively parallel optimization [github
]
- ProxSuite - The Advanced Proximal Optimization Toolbox [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
]
- SHOT - A solver for mixed-integer nonlinear optimization 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
]
Utility to Build Robot Models
- onshape-to-robot - Converting OnShape assembly to robot definition (SDF or URDF) through OnShape API [github
]
- phobos - Add-on for Blender creating URDF and SMURF robot models [github
]
- AprilSAM - Real-time smoothing and mapping [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 [github
]
- 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
]
SLAM Dataset
- Kratos - Framework for building parallel multi-disciplinary simulation software [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
]
- Foxglove Studio – A fully integrated visualization and debugging desktop app for your robotics data. Combines functionality of tools like
rviz
, rqt
, and more. Also available via web app.
Contributions are very welcome! Please read the contribution guidelines first. Also, please feel free to report any error.
