Skip to main content

Multibody Dynamics Library designed for Free Floating Robots.

Project description

iDynTree License ZenHub

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::ExtWrenchesAndJointTorquesEstimator and 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), check matlab-whole-body-simulator. If you need a simulator that is differentiable and runs on GPU, check jaxsim or 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 adam robotics library.

Contents

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 online help that is tipically available by passing the -h flag.

idyntree-model-info

Tool that reads a model from a file, and print some useful information as specified via the command line.

Example: Print the total mass of a given model

idyntree-model-info -m <location-of-the-model> --total-mass

idyntree-model-view

Tool that reads a model from a file and visualize it using the idyntree-visualizer library

Example: Visualize a given model

idyntree-model-view -m <location-of-the-model>

idyntree-model-simplify-shapes

Tool that reads a model from a file, and returns in output the same model, but with all solid shapes of the model (both collision and visual) substituted with a primitive shape that approximates in some way the original solid shape. At the moment, the only conversion type provided is to approximate each solid shape of the model with its axis aligned bounding box.

Example: Approximate a given model

idyntree-model-simplify-shapes -m <location-of-the-input-model> -o <desired-location-of-the-output-model>

Reference Documentation

The documentation for the complete API of iDynTree is automatically extracted from the C++ code using Doxygen, and is available at the URL : https://robotology.github.io/idyntree.

Announcements

Announcements on new releases, API changes or other news are done on robotology/QA GitHub repository. You can watch that repository to get all the iDynTree-related announcements, that will always tagged with the announcement tag.

Developer Documentation

If you want to contribute to iDynTree development, please check the Developer's FAQ.

Reference paper

A paper describing some of the algorithms implemented in iDynTree and their use in a real world scenario can be downloaded here . If you're going to use this library for your work, please quote it within any resulting publication:

F. Nori, S. Traversaro, J. Eljaik, F. Romano, A. Del Prete, D. Pucci "iCub whole-body control through force regulation on rigid non-coplanar contacts", Frontiers in Robotics and AI, 2015.

The bibtex code for including this citation is provided:

@ARTICLE{10.3389/frobt.2015.00006,
  AUTHOR={Nori, Francesco  and  Traversaro, Silvio  and  Eljaik, Jorhabib  and  Romano, Francesco  and  Del Prete, Andrea  and  Pucci, Daniele},
  TITLE={iCub Whole-body Control through Force Regulation on Rigid Noncoplanar Contacts},
  JOURNAL={Frontiers in Robotics and AI},
  VOLUME={2},
  YEAR={2015},
  NUMBER={6},
  URL={http://www.frontiersin.org/humanoid_robotics/10.3389/frobt.2015.00006/abstract},
  DOI={10.3389/frobt.2015.00006},
  ISSN={2296-9144}}

Acknowledgments

The initial development of iDynTree was supported by the FP7 EU projects CoDyCo (No. 600716 ICT 2011.2.1 Cognitive Systems and Robotics) and Koroibot (No. 611909 ICT- 2013.2.1 Cognitive Systems and Robotics).

The development is now supported by the Artificial Mechanical Intelligence research line at the Italian Institute of Technology.

License

iDynTree is licensed under either the BSD-3-Clause license : https://spdx.org/licenses/BSD-3-Clause.html .

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idyntree-15.1.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

idyntree-15.1.0-cp313-cp313-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

idyntree-15.1.0-cp312-cp312-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

idyntree-15.1.0-cp311-cp311-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

idyntree-15.1.0-cp310-cp310-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

idyntree-15.1.0-cp39-cp39-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

Details for the file idyntree-15.1.0.tar.gz.

File metadata

  • Download URL: idyntree-15.1.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for idyntree-15.1.0.tar.gz
Algorithm Hash digest
SHA256 1316c651ee2de6e892b3e7823c96165c95bb223b0219805d32f7b46d015bef35
MD5 6154c1bc0898a4974db79cdfa6703c7e
BLAKE2b-256 4219ed292f0b8d6ce70c060d3df61b27b5ed025dfc07861d0456935970d0b385

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0.tar.gz:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idyntree-15.1.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for idyntree-15.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf594de33149a16a36e5c5dfcb53a62d5bd181e6e0d5d4dd76b8a7081c9cecc8
MD5 874d0c480775709a1812ad76a05c3d09
BLAKE2b-256 405b89edcc21b957d0e82421a31e34a837a159f4d1514a3170f141ae126fabfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idyntree-15.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for idyntree-15.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f807f515609cf7cf586001ad07b330373a13cabd5814abcbe2d684e341bf4c47
MD5 4ea699993979fcbc8933f227b295d003
BLAKE2b-256 333e6a7290c527e8387f68d3648887612e29be0602411dbb656025948187988d

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idyntree-15.1.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for idyntree-15.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b5f66bc3f5929618cb017b6f4d551c35c9f39993c7bcbcdba8941397ce1c10b1
MD5 f0d0a7321dabf8390acd5e7da99453dc
BLAKE2b-256 5cccdf5a3713890bf365aa81d210ec51d73ceec66f0b0b2cbe7ba74bcfaccdb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idyntree-15.1.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for idyntree-15.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 903adce8460f52d262cb1313fe549d11dae852ca80a9acdb80721c4cc1cf12d1
MD5 03f78f0e5fde587cd5df84c2b360c36f
BLAKE2b-256 59ca3ce19c4938fbc0c2115f57c7b10fdac9cbe26f1362514b5d47e07c6b3a0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idyntree-15.1.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for idyntree-15.1.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c6646f3b09b1d8776ff02e34172703d1a8095371de9c0613d2715ebe9e58b3d2
MD5 62c3de10295c0788e1dd37031e37abf7
BLAKE2b-256 b8e11be3caf4bfa5e05a77735c274b0f1737075591690f78176cb9cf0c4e9d02

See more details on using hashes here.

Provenance

The following attestation bundles were made for idyntree-15.1.0-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: python.yml on gbionics/idyntree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page