/awesome-robotics-libraries

:sunglasses: A curated list of open source robotics libraries and software

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Robotics Libraries

A curated list of open source robotics simulators and libraries.

Table of Contents

Free or Open Source
  • AirSim - Open source simulator based on Unreal Engine for autonomous vehicles from Microsoft AI & Research. [github AirSim]
  • ARTE - A Matlab toolbox focussed on robotic manipulators, both serial and parallel mechanisms are included. [github 4rtur1t0/ARTE]
  • 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 graspit]
  • Isaac - Nvidia's virtual simulator for robots
  • MORSE - The Modular OpenRobots Simulation Engine. [github morse]
  • V-REP - Virtual robot experimentation platform.
Commercial

⚠️ 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 bullet3
CHRONO::ENGINE rigid, soft, granular, fluid ik, urdf C++, Python BSD-3-Clause github chrono
DART rigid, soft ik, id, plan, urdf, sdf C++, Python BSD-2-Clause github dart
Drake rigid, aero, fluid ik, trj-opt, plan C++, Matlab BSD-3-Clause github drake
Flex rigid, soft, particle, fluid C++ github NVIDIAGameWorks/FleX
FROST rigid MATLAB BSD-3-Clause github ayonga/frost-dev
IBDS rigid, particle C++ Zlib
idyntree rigid id C++, Python, Matlab, Lua LGPL-2.1 github idyntree
KDL rigid ik C++ LGPL-2.1 github orocos_kinematics_dynamics
kindr rigid (todo) C++, Matlab BSD-3-Clause github kindr
Klampt (todo) (todo) C++, Python BSD-3-Clause github Klampt
LibrePilot uav, vehicles (todo) C++ GPL-3.0 bitbucket, github LibrePilot
MARS (todo) (todo) C++, Python LGPL-3.0 github mars
MBDyn (todo) (todo) C++ GPL-2.1 download
MBSim (todo) (todo) C++ (not specified) github mbsim-env/mbsim
MBSlib (todo) (todo) C++ LGPL-3.0 github mbslib
metapod (todo) (todo) C++ LGPL-3.0 github metapod
Moby rigid id C++ GPL-2.0 github Moby
mrpt vehicle slam, cv C++, Python, Matlab BSD-3-Clause github mrpt
MuJoCo (todo) id C++, Python licenses closed source
Newton Dynamics (todo) (todo) C++ Zlib github newton-dynamics
nphysics (todo) (todo) Rust BSD-3-Clause github sebcrozet/nphysics
ODE rigid C++ LGPL-2.1 or BSD-3-Clause bitbucket
OpenRAVE (todo) (todo) C++, Python LGPL-3.0 github openrave
pinocchio rigid ik, id C++, Python LGPL-3.0 github pinocchio
PositionBasedDynamics (todo) (todo) C++ MIT github PositionBasedDynamics
PyDy (todo) (todo) Python BSD-3-Clause github pydy
RBDL rigid ik C++, Python LGPL-3.0 bitbucket
RBDyn rigid (todo) C++, Python LGPL-3.0 github RBDyn
ReactPhysics3d (todo) (todo) C++ Zlib github reactphysics3d
Robopy (todo) (todo) Python 3 MIT github adityadua24/robopy
Robotics Library (todo) (todo) C++ GPL-3.0 or BSD-2-Clause github rl
RobWork (todo) (todo) C++ Apache-2.0 SVN (id/pw required)
siconos (todo) (todo) C++, Python Apache-2.0 github siconos
Simbody rigid, molecules id, urdf C++ Apache-2.0 github simbody
SOFA rigid, soft, medical (todo) C++ LGPL-2.1 github sofa
trep rigid dm, trj-opt C, Python GPL-3.0 github trep
qu3e rigid - C++ Zlib github qu3e

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

  • 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 gym]
  • OpenAI Gym with DART [github dart-env]
  • Aikido - A C++ library for solving robotic motion planning and decision making problems. [github aikido]
  • 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 moveit]
  • OMPL - The Open Motion Planning Library. [bitbucket, github ompl]
Motion Optimizer
  • trajopt - A software framework for generating robot trajectories by local optimization. [github joschu/trajopt]
Nearest Neighbor
  • Cover-Tree - A well-documented C++ implementation of the cover tree datastructure for quick k-nearest-neighbor search. [github Cover-Tree]
  • FLANN - Fast Library for Approximate Nearest Neighbors. [github flann]
  • nanoflann - C++ header-only library for Nearest Neighbor (NN) search wih KD-trees. [github nanoflann]
3D Mapping
  • OctoMap - An Efficient Probabilistic 3D Mapping Framework Based on Octrees. Contains the main OctoMap library, the viewer octovis, and dynamicEDT3D. [github octomap]

  • voxblox - A library for flexible voxel-based mapping, mainly focusing on truncated and Euclidean signed distance fields. [github voxblox]

  • CasADi - A symbolic framework for algorithmic (a.k.a. automatic) differentiation and numeric optimization. [github casadi]
  • 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 ceres-solver]
  • Ipopt - Ipopt (Interior Point OPTimizer, pronounced eye-pea-Opt) is a software package for large-scale nonlinear optimization. [github Ipopt]
  • 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 beniz/libcmaes]
  • limbo - A lightweight framework for Gaussian processes and Bayesian optimization of black-box functions. [github resibots/limbo]
  • 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 nlopt]
  • 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 scs]
  • sferes2 - A high-performance, multi-core, lightweight, generic C++98 framework for evolutionary computation. [github sferes2/sferes2]
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
  • phobos - An add-on for Blender allowing to create URDF and SMURF robot models in a WYSIWYG environment. [github phobos]
  • 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 robotology/yarp]
  • 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 linorobot/linorobot]
  • Cartographer - A system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations. [github cartographer]
  • DSO - DSO is a novel direct and sparse formulation for Visual Odometry. [github dso]
  • 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 ElasticFusion]
  • 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 Kintinuous]
  • 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 lsdslam]
  • 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 ORB_SLAM2]
  • 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 srba]
  • 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 lagadic/visp]

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

CC0