Awesome Robotics Libraries

A curated list of robotics simulators and libraries.

Table of Contents

Simulators

Free or Open Source
  • AI2-THOR - Python framework with a Unity backend, providing interaction, navigation, and manipulation support for household based robotic agents [github AI2-THOR]
  • AirSim - Simulator based on Unreal Engine for autonomous vehicles [github AirSim]
  • ARGoS - Physics-based simulator designed to simulate large-scale robot swarms [github ilpincy/argos3]
  • ARTE - Matlab toolbox focussed on robotic manipulators [github 4rtur1t0/ARTE]
  • AVIS Engine - Autonomous Vehicles Intelligent simulation software, A Fast and robust simulator software for Autonomous vehicle development. [github AvisEngine/AVIS-Engine-Python-API]
  • CARLA - Open-source simulator for autonomous driving research [github carla-simulator/carla]
  • CoppeliaSim - Formaly V-REP. Virtual robot experimentation platform [github CoppeliaRobotics/CoppeliaSimLib]
  • Gazebo - Dynamic multi-robot simulator [github osrf/gazebo]
  • GraspIt! - Simulator for grasping research that can accommodate arbitrary hand and robot designs [github graspit]
  • Habitat-Sim - Simulation platform for research in embodied artificial intelligence [github facebookresearch/habitat-sim]
  • Hexapod Robot Simulator - Open-source hexapod robot inverse kinematics and gaits visualizer [github mithi/hexapod]
  • Ignition Gazebo - Open source robotics simulator [github ignitionrobotics/ign-gazebo]
  • Isaac Sim - Nvidia's robotic simulation environment with GPU physics simulation and ray tracing
  • MORSE - Modular open robots simulation engine [github morse]
  • 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 bullet3]
  • PyBullet_Industrial - A extension to PyBullet that allows for the simulation of various robotic manufacturing processes such as milling or 3D-printing. [github pybullet_industrial]
  • Robot Gui - A three.js based 3D robot interface [github glumb/robot-gui]
  • SAPIEN - A realistic and physics-rich simulated environment that hosts a large-scale set for articulated objects. [github haosulab/SAPIEN]
  • 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 Unity-Technologies/Unity-Robotics-Hub]
  • Webots - A complete development environment to model, program and simulate robots, vehicles and mechanical systems [github cyberbotics/webots]
Commercial
Cloud
  • AWS RoboMaker - Service that makes it easy to develop, test, and deploy intelligent robotics applications at scale

Libraries

Dynamics Simulation

:warning: The following table is not complete. Please feel free to report if you find something incorrect or missing.

NameModelsFeaturesLanguagesLicensesCodePopularity
ARCSimsoftC++
Bulletrigid, softik, id, urdf, sdfC++, PythonZlibgithubbullet3
CHRONO::ENGINErigid, soft, granular, fluidik, urdfC++, PythonBSD-3-Clausegithubchrono
DARTrigid, softik, id, plan, urdf, sdfC++, PythonBSD-2-Clausegithubdart
Drakerigid, aero, fluidik, trj-opt, planC++, MatlabBSD-3-Clausegithubdrake
Flexrigid, soft, particle, fluidC++githubNVIDIAGameWorks/FleX
FROSTrigidMATLABBSD-3-Clausegithubayonga/frost-dev
IBDSrigid, particleC++Zlib
idyntreerigididC++, Python, Matlab, LuaLGPL-2.1githubidyntree
KDLrigidikC++LGPL-2.1githuborocos_kinematics_dynamics
kindrrigid(todo)C++, MatlabBSD-3-Clausegithubkindr
Klampt(todo)(todo)C++, PythonBSD-3-ClausegithubKlampt
LibrePilotuav, vehicles(todo)C++GPL-3.0bitbucket, githubLibrePilot
MARS(todo)(todo)C++, PythonLGPL-3.0githubmars
MBDyn(todo)(todo)C++GPL-2.1download
MBSim(todo)(todo)C++(not specified)githubmbsim-env/mbsim
MBSlib(todo)(todo)C++LGPL-3.0githubmbslib
metapod(todo)(todo)C++LGPL-3.0githubmetapod
MobyrigididC++GPL-2.0githubMoby
mrptvehicleslam, cvC++, Python, MatlabBSD-3-Clausegithubmrpt
MuJoCo(todo)idC++, Pythonlicensesclosed source
mvsimvehicle(todo)C++GPL-3.0githubual-arm-ros-pkg/mvsim
Newton Dynamics(todo)(todo)C++Zlibgithubnewton-dynamics
nphysics(todo)(todo)RustBSD-3-Clausegithubsebcrozet/nphysics
ODErigidC++LGPL-2.1 or BSD-3-Clausebitbucket
OpenRAVE(todo)(todo)C++, PythonLGPL-3.0githubopenrave
pinocchiorigidik, id, urdf, analytical derivatives, code generationC++, PythonBSD-2-Clausegithubpinocchio
PositionBasedDynamics(todo)(todo)C++MITgithubPositionBasedDynamics
PhysX(todo)(todo)C++unknowngithubNVIDIAGameWorks/PhysX
PyDy(todo)(todo)PythonBSD-3-Clausegithubpydy
RBDLrigidik,id,urdfC++, PythonZlibgithubrbdl
RBDynrigid(todo)C++, PythonLGPL-3.0githubRBDyn
RaiSim(todo)(todo)C++customgithubleggedrobotics/raisimLib
ReactPhysics3d(todo)(todo)C++Zlibgithubreactphysics3d
RigidBodyDynamics.jlrigid(todo)JuliaMIT "Expat"githubRigidBodyDynamics.jl
Rigs of Rodsrigid, soft, vehicle(todo)C++GPL-3.0githubRigsOfRods/rigs-of-rods
Robopy(todo)(todo)Python 3MITgithubadityadua24/robopy
Robotics Library(todo)(todo)C++GPL-3.0 or BSD-2-Clausegithubrl
RobWork(todo)(todo)C++Apache-2.0gitlab
siconos(todo)(todo)C++, PythonApache-2.0githubsiconos
Simbodyrigid, moleculesid, urdfC++Apache-2.0githubsimbody
SOFArigid, soft, medical(todo)C++LGPL-2.1githubsofa
Tiny Differentiable Simulatorrigid(todo)C++, PythonApache-2.0githubgoogle-research/tiny-differentiable-simulator
treprigiddm, trj-optC, PythonGPL-3.0githubtrep
qu3erigid-C++Zlibgithubqu3e

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

Inverse Kinematics

  • IKBT - A python package to solve robot arm inverse kinematics in symbolic form [github uw-biorobotics/IKBT]
  • Lively - A highly configurable toolkit for commanding robots in mixed modalities [github Wisc-HCI/lively]
  • RelaxedIK - Real-time Synthesis of Accurate and Feasible Robot Arm Motion [github uwgraphics/relaxed_ik]
  • Trip - A python package that solves inverse kinematics of parallel-, serial- or hybrid-robots [github TriPed-Robot/TriP]

Machine Learning

  • AllenAct - Python/PyTorch-based Research Framework for Embodied AI [github wichtounet/dll]
  • DLL - Deep Learning Library (DLL) for C++ [github wichtounet/dll]
  • DyNet - The Dynamic Neural Network Toolkit [github clab/dynet]
  • Fido - Lightweight C++ machine learning library for embedded electronics and robotics [github FidoProject/Fido]
  • Ivy - Unified Machine Learning Framework [github unifyai/ivy]
  • LeRobot - State-of-the-art approaches, pretrained models, datasets, and simulation environments for real-world robotics in PyTorch. [github huggingface/lerobot]
  • MiniDNN - A header-only C++ library for deep neural networks [github yixuan/MiniDNN]
  • mlpack - Scalable C++ machine learning library [github mlpack/mlpack]
  • OpenAI Gym - Developing and comparing reinforcement learning algorithms [github gym]
  • RLLib - Temporal-difference learning algorithms in reinforcement learning [github samindaa/RLLib]
  • robosuite - A modular simulation framework and benchmark for robot learning [github ARISE-Initiative/robosuite]
  • tiny-dnn - Header only, dependency-free deep learning framework in C++14 [github tiny-dnn/tiny-dnn]

Motion Planning and Control

  • AIKIDO - Solving robotic motion planning and decision making problems. [github aikido]
  • Bioptim - Bioptim, a Python Framework for Musculoskeletal Optimal Control in Biomechanics [github pyomeca/bioptim]
  • 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 nvlabs/curobo]
  • Control Toolbox - Open-Source C++ Library for Robotics, Optimal and Model Predictive Control [github ethz-adrl/control-toolbox]
  • Crocoddyl - Optimal control library for robot control under contact sequence [github loco-3d/crocoddyl]
  • Fields2Cover - Robust and efficient coverage paths for autonomous agricultural vehicles [github Fields2Cover/Fields2Cover]
  • GPMP2 - Gaussian Process Motion Planner 2 [github gtrll/gpmp2]
  • HPP - Path planning for kinematic chains in environments cluttered with obstacles [github]
  • MoveIt! - Motion planning framework [github moveit]
  • OMPL - Open motion planning library [bitbucket, github ompl]
  • OCS2 - Efficient continuous and discrete time optimal control implementation [bitbucket]
  • pymanoid - Humanoid robotics prototyping environment based on OpenRAVE [github stephane-caron/pymanoid]
  • ROS Behavior Tree - [github miccol/ROS-Behavior-Tree]
  • Ruckig - Real-time, time-optimal and jerk-constrained online trajectory generation. [github ruckig]
  • The Kautham Project - A robot simulation toolkit for motion planning [github kautham]
  • TOPP-RA - Time-parameterizing robot trajectories subject to kinematic and dynamic constraints [github hungpham2511/toppra]
  • Ungar - Expressive and efficient implementation of optimal control problems using template metaprogramming [github fdevinc/ungar]
Motion Optimizer
  • TopiCo - Time-optimal Trajectory Generation and Control [github AIS-Bonn/TopiCo]
  • towr - A light-weight, Eigen-based C++ library for trajectory optimization for legged robots [github ethz-adrl/towr]
  • TrajectoryOptimization - A fast trajectory optimization library written in Julia [github RoboticExplorationLab/TrajectoryOptimization.jl]
  • trajopt - Framework for generating robot trajectories by local optimization [github joschu/trajopt]
Nearest Neighbor
3D Mapping
  • libpointmatcher - Iterative Closest Point library for 2-D/3-D mapping in Robotics [github ethz-asl/libpointmatcher]
  • Octree - Fast radius neighbor search with an Octree [github jbehley/octree]
  • OctoMap - Efficient Probabilistic 3D Mapping Framework Based on Octrees [github octomap]
  • PCL - 2D/3D image and point cloud processing [github PointCloudLibrary/pcl]
  • Treexy - Brutally fast, sparse, 3D Voxel Grid [github Treexy]
  • voxblox - Flexible voxel-based mapping focusing on truncated and Euclidean signed distance fields [github voxblox]
  • wavemap - Fast, efficient and accurate multi-resolution, multi-sensor 3D occupancy mapping [github wavemap]
  • Utility Software
    • Goxel - Free and open source 3D voxel editor [github guillaumechereau/goxel]

Optimization

  • CasADi - Symbolic framework for algorithmic differentiation and numeric optimization [github casadi]
  • Ceres Solver - Large scale nonlinear optimization library [github ceres-solver]
  • eigen-qld - Interface to use the QLD QP solver with the Eigen3 library [github jrl-umi3218/eigen-qld]
  • EXOTica - Generic optimisation toolset for robotics platforms [github ipab-slmc/exotica]
  • hpipm - High-performance interior-point-method QP solvers (Ipopt, Snopt) [github giaf/hpipm]
  • HYPRE - Parallel solvers for sparse linear systems featuring multigrid methods [github hypre-space/hypre]
  • ifopt - An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt) [github ifopt]
  • Ipopt - Large scale nonlinear optimization library [github Ipopt]
  • libcmaes - Blackbox stochastic optimization using the CMA-ES algorithm [github beniz/libcmaes]
  • limbo - Gaussian processes and Bayesian optimization of black-box functions [github resibots/limbo]
  • lpsolvers - Linear Programming solvers in Python with a unified API [github lpsolvers]
  • NLopt - Nonlinear optimization [github nlopt]
  • OptimLib - Lightweight C++ library of numerical optimization methods for nonlinear functions [github kthohr/optim]
  • OSQP - The Operator Splitting QP Solver [github osqp/osqp]
  • Pagmo - Scientific library for massively parallel optimization [github esa/pagmo2]
  • ProxSuite - The Advanced Proximal Optimization Toolbox [github Simple-Robotics/ProxSuite]
  • pymoo - Multi-objective Optimization in Python [github msu-coinlab/pymoo]
  • qpsolvers - Quadratic Programming solvers in Python with a unified API [github qpsolvers]
  • RobOptim - Numerical Optimization for Robotics. [github roboptim/roboptim-core]
  • SCS - Numerical optimization for solving large-scale convex cone problems [github scs]
  • SHOT - A solver for mixed-integer nonlinear optimization problems [github coin-or/SHOT]
  • sferes2 - Evolutionary computation [github sferes2/sferes2]

Robot Modeling

Robot Model Description Format
  • SDF - XML format that describes objects and environments for robot simulators, visualization, and control (bitbucket)
  • urdf - XML format for representing a robot model [github ros/urdfdom]
Utility to Build Robot Models
  • onshape-to-robot - Converting OnShape assembly to robot definition (SDF or URDF) through OnShape API [github phobos]
  • phobos - Add-on for Blender creating URDF and SMURF robot models [github phobos]

Robot Platform

SLAM

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

SLAM Dataset

Vision

Fluid

Multiphysics

  • Kratos - Framework for building parallel multi-disciplinary simulation software [github KratosMultiphysics/Kratos]

Math

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

ETC

  • fuse - General architecture for performing sensor fusion live on a robot [github locusrobotics/fuse]
  • 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.

Other Awesome Lists

Contributing

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

License

CC0