Idyntree
Multibody Dynamics Library designed for Free Floating Robots
Install / Use
/learn @gbionics/IdyntreeREADME
iDynTree

iDynTree is a library of robots dynamics algorithms for control, estimation and simulation. It is specifically designed for free-floating robots, but it is possible to use it also with fixed-base robots.
The major characteristic features of iDynTree are:
- It is written in C++, with Python and MATLAB bindings.
- It uses an undirected graph data structure (
iDynTree::Model) that is used to represent robots, to easily change the base link that you are using for your kinematics and dynamics computations without the need to reload your model or change your joint or link serializations. This is done as iDynTree was developed for floating-base robots such as humanoids, in which the most convenient choice of base link can change. - It contains support for reading and writing URDF files and reading SDFormat files from a
iDynTree::Model, making it useful to write tools that modify robot models and saves them back to file. This is done as iDynTree was meant to develop tools for identification of kinematics and dynamics parameters. - It defaults to use the mixed representation to represent link quantities (including the velocity and acceleration of the base link), but it can optionally use also body (left-trivialized) or inertial (right-trivialized) representation if requested. This is done because iDynTree was developed to satisfy the needs of research in synthesis of floating-base whole-body controllers. If you are not familiar with the different representation for 6D quantities, check Section 6 of "Multibody dynamics notation (version 2)".
- It contains an implementation of the algorithm used in the iCub humanoid robot to estimate the joint torques without the need of collocated joint torque sensors, exploting the specific undirected graph data structure . This is done as this was one of the originally goal for the implementation of iDynTree. See the class
iDynTree::ExtWrenchesAndJointTorquesEstimatorand Chapter 6 of "Modelling, Estimation and Identification of Humanoid Robots Dynamics".
To avoid confusion, it is also useful to clarify what iDynTree is not:
- It is not the fastest C++ library for kinematics and dynamics multibody computations for robotics. It is not slow, but if have an application in which you need the absolute fastest library, check out Pinocchio.
- It is not a multibody simulator library. It provides the building blocks that you could use to build a multibody simulator, but it is not a multibody simulator per se. If you need a simulator library in C++, check out DART, Simbody, Drake, MuJoCo or the abstraction layer
Gazebo Physics. If you need a simulator implemented in MATLAB/Simulink (built on iDynTree), checkmatlab-whole-body-simulator. If you need a simulator that is differentiable and runs on GPU, checkjaxsimor MuJoCo XLA (mjx). - It does not provide algorithms in a form in which they can be used in CasADi, JAX or PyTorch. For a Python library with an interface inspired by iDynTree that provides algorithms compatible with these frameworks, check
adamrobotics library.
Contents
- Installation
- Library Usage
- Tools Usage
- Reference Documentation
- Announcements
- Developer Documentation
- Reference Paper
- Acknowledgments
Installation
conda (recommended)
You can easily install the C++ and Python library with via conda-forge using the following command
conda install -c conda-forge idyntree
If you need to install also the MATLAB bindings, you can install them with:
conda install -c conda-forge -c robotology idyntree-matlab-bindings
If you are not familiar with conda or conda-forge, you can read an introduction document in conda-forge overview.
robotology-superbuild (advanced)
If you are installing iDynTree for use as part of iCub humanoid robot software installation, you may want to install iDynTree through the robotology-superbuild, an easy way to download, compile and install the robotology software on multiple operating systems, using the CMake build system and its extension YCM. To get iDynTree when using the robotology-superbuild, please enable the ROBOTOLOGY_ENABLE_DYNAMICS CMake option of the superbuild. If you want to install also iDynTree Python or MATLAB bindings, remember to enable the ROBOTOLOGY_USES_PYTHON or ROBOTOLOGY_USES_MATLAB options.
Build from source (advanced)
If you want to build iDynTree directly from source, you can check the documentation in doc/build-from-source.md.
Library Usage
Usage in C++
Once the library is installed, you can link it in C++ programs using CMake with as little effort as writing the following line of code in your project's CMakeLists.txt:
find_package(iDynTree REQUIRED)
target_link_libraries(<target> PRIVATE iDynTree::idyntree-high-level iDynTree::idyntree-estimation)
See CMake's reference documentation if you need more info on the find_package or target_link_libraries CMake commands.
Usage in MATLAB
To make sure that iDynTree is available in MATLAB, try to run some simple code that uses it:
p = iDynTree.Position()
If this is not working, make sure that you are launching matlab after having activated the conda environment (if you installed iDynTree via conda) or after having sourced por executed the correct setup script (if you installed iDynTree via the robotology-superbuild).
Tutorials
These tutorials describe how to use specific parts of iDynTree. Are you interested in a tutorial on a specific feature or algorithm that you can't find in this list? Just request it on an enhancement issue.
| Topic | Location | Language | |:------:|:--------:|:---------:| | Basic usage of the KinDynComputations class together with the Eigen C++ Matrix library to compute kinematics and dynamics quantities such as forward kinematics, inverse dynamics, mass matrix. | examples/cxx/KinDynComputationsWithEigen/main.cpp | C++ | | How to use the InverseKinematics class for the IK of an industrial fixed-base manipulator. | examples/cxx/InverseKinematics/README.md | C++ | | Use of the ExtWrenchesAndJointTorquesEstimator class for computing offset for FT sensors | examples/matlab/SixAxisFTOffsetEstimation/SixAxisFTOffsetEstimation.m | MATLAB | | How to get the axis of a revolute joint expressed in a arbitary frame using the KinDynComputations class | examples/matlab/SensorsListParsing/SensorsListParsing.m | MATLAB | | How to read the Six Axis Force Torque sensors information contained in a URDF model. | examples/matlab/GetJointAxesInWorldFrame.m | MATLAB | | Usage of the MATLAB-native visualizer using the MATLAB high-level wrappers. | examples/matlab/iDynTreeWrappers/visualizeRobot.m | MATLAB | | Basic usage of the KinDynComputations class. | examples/python/KinDynComputationsTutorial.py | Python | | Basic usage of the MeshcatVisualizer class. | examples/python/MeshcatVisualizerExample.ipynb | Python |
Tools Usage
iDynTree also includes some command line tools to use some of the functionality of the library without writing any line of code. The available command line tools are listed in the following, and each tool also includes an onlin
Related Skills
claude-opus-4-5-migration
84.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
340.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
diffs
340.2kUse the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
TrendRadar
49.9k⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
