Package Summary
Tags | No category tags. |
Version | 1.7.1 |
License | BSD |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/tsid.git |
VCS Type | git |
VCS Version | devel |
Last Updated | 2024-10-30 |
Dev Status | MAINTAINED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guilhem Saurel
Authors
- Andrea Del Prete
- Justin Carpentier
TSID - Task Space Inverse Dynamics
TSID is a C++ library for optimization-based inverse-dynamics control based on the rigid multi-body dynamics library Pinocchio.
Documentation
- Take a look at the project wiki for an overview of the design of the library.
- In the exercises folder you can find several examples of how to use TSID in Python with robot manipulators, humanoids, or quadrupeds.
- On the website of Andrea Del Prete you can find slides and video lessons on TSID.
- Memmo 2020 summer school
Installation with Conda
If you want to directly dive into TSID in Python, only one single line is sufficient (assuming you have Conda installed):
conda install tsid -c conda-forge
Installation from Debian/Ubuntu packages, with robotpkg
If you have never added robotpkg’s software repository you can do it with the following commands:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update
You can install TSID and its python bindings (replace * with you Python version) with:
sudo apt install robotpkg-py3*-tsid
Installation from sources
First you need to install the following dependencies:
- boost (unit_test_framework)
- eigen3
- pinocchio
- eiquadprog
- example-robot-data (only for running the examples)
To install eigen3 on Ubuntu you can use apt-get:
sudo apt-get install libeigen3-dev
To install pinocchio follow the instruction on its website.
To compile TSID:
cd $DEVEL/openrobots/src/
git clone --recursive git@github.com:stack-of-tasks/tsid.git
cd tsid
mkdir _build-RELEASE
cd _build-RELEASE
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$DEVEL/openrobots
make install
Python Bindings
To use this library in python, we offer python bindings based on Boost.Python and EigenPy.
To install EigenPy you can compile the source code:
git clone https://github.com/stack-of-tasks/eigenpy
or, on Ubuntu, you can use apt-get:
sudo apt-get install robotpkg-py3*-eigenpy
For testing the python bindings, you can run the unit test scripts in the script
folder, for instance:
ipython script/test_formulation.py
To run the demo using gepetto-viewer:
ipython demo/demo_romeo.py
Credits
This package is authored by:
- Andrea Del Prete (University of Trento)
- Justin Carpentier (INRIA)
It includes key contributions from:
- Julian Viereck (Max Planck Institute, New York University)
- Sanghyun Kim (Seoul National University)
- Eloise Dalin (LORIA, INRIA Lorraine)
- Noelie Ramuzat (LAAS, CNRS)
- Pierre Fernbach (LAAS, CNRS)
- Aurelie Bonnefoy (LAAS, CNRS)
- Etienne Arlaud (INRIA)
- Fabian Schramm (INRIA)
And is maintained by:
- Guilhem Saurel (LAAS-CNRS)
Citing
If you are (or not) happy with TSID and want to cite it, please use the following citation:
@inproceedings {adelprete:jnrh:2016,
title = {Implementing Torque Control with High-Ratio Gear Boxes and without Joint-Torque Sensors},
booktitle = {Int. Journal of Humanoid Robotics},
year = {2016},
pages = {1550044},
url = {https://hal.archives-ouvertes.fr/hal-01136936/document},
author = {Andrea Del Prete, Nicolas Mansard, Oscar E Ramos, Olivier Stasse, Francesco Nori}
}
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
1.7.1 - 2024-08-26
- Fix a typo in ex_4_walking
- check solver status, set eps_abs to 1e-6, fix seed
- CMake: require >= 3.10
- add changelog
- setup ruff & fix isort pre-commit config
- update ROS CI
1.7.0 - 2023-05-13
- expose SE3ToVector and vectorToSE3
- remove warnings
- Enhance Python target packaging
- Add CI with GitHub Action for conda
- Add support for proxqp and osqp solver
- Clean and update contributors list
- pre-commit autoupdate
- Expose TaskJointPosVelAccBounds
- Expose AddMotionTask for TaskJointPosVelAccBounds
- Fix qpmad
- Add clang-format Google style
- Add Measured force as an external force task with moving objects
- update CMake: fetch submodule, set default build type, fix RPATH
- fix for eigenpy v3
- np.matrix → np.array
- tooling: setup black isort & toml-sort
1.6.3 - 2022-11-02
- Require C++17
- fix tests in 18.04
- update pinocchio use
1.6.2 - 2022-09-05
- update python tests for np array
- add task actuation equality
- use generated headers
- Choose floating-base (or not) when creating a robot wrapper
- Add optional support of qpmad solver
- update packaging for eigenpy 2.7.12
1.6.1 - 2021-10-19
This new release is mostly a maintenance release, including fixes for the recent version of Eigen 3.4.
1.6.0 - 2021-03-18
- Add bindings for method Contact6d::getMotionTask
- Add Center of Pressure Taks
- fix warnings
1.5.0 - 2021-03-03
- [py] Add config variable to specify whether end-effector task should be formulated in local frame or world frame.
- [C++] Standardize names of methods to get and set mask in motion tasks.
- [py] Add accessors masks in TaskCOM and TaskSE3Equality.
- bugfixes
1.4.2 - 2020-11-26
- Add a mask to task-com-equality
- Fix bug in Contact6d::setRegularizationTaskWeightVector
- CMake: fix configure without tests
1.4.1 - 2020-09-25
- fix memory leaks thanks to shared_ptr
- fix warnings
- fix package.xml for ROS
1.4.0 - 2020-09-09
- add setGravity
- stop using StdVec in python to make code more user friendly
- add 6d contact with motion constraint at priority level 1 in python
- use example-robot-data in notebooks
1.3.1 - 2020-06-05
- fix license
- fix generated tsid.pc
1.3.0 - 2020-05-26
- reactive test
- add package.xml
- add CheatSheet
- updates for numpy.array & python 3
- updateRigidContactWeights: fix and add to python API
- use eiquadprog
- fix compatibility with pinocchio v2.4.5
1.2.3 - 2020-03-30
- renamed tests dir
- fix python tests
- CMake: export project and use exports from dependencies
- CMake: keep minimal required instructions
1.2.2 - 2020-03-01
- add angular momentum equality task
- update to pinocchio changes
- Python 3 compatibility
- add some documentation
- fix python issue
1.2.1 - 2019-09-19
- fix compatibility with recent pinocchio versions
1.2.0 - 2019-03-06
- Pinocchio v2, fix #31
- Fix demo_romeo for pinocchio v2
- Pull request for use TSID in python.
- Add missing includes, fix #18
1.1.0 - 2018-10-10
This release updates to non backward-compatibles changes in pinocchio v1.3.0
1.0.2 - 2018-06-12
This release is mostly a maintenance release. It fixes some bug with respect to Pinocchio. It also fixes some issues with respect to the packaging.
1.0.1 - 2018-01-12
- [joint-posture-task] Fix bug in computation of task matrix from mask
- [task-se3-equality] Add method to get frame-id
- [Robot] Add missing evaluation of the center of mass acceleration provided zero joint acceleration
- [Math] Fix bug related to Eigen undefined function set_is_malloc_allowed
- [CMake] Correct minimal version of Eigen3
- [inv-dyn-form-acc-force] Fix potential bug in removal of contact constraint
- [task-se3-equality] Fix small bug in computaiton of acceleration (just used for debugging)
- [contact-6d] Add methods to set reference force and weight vector
- [inv-dyn-form-acc-force] Fix bug: weight of force regularization task was not updated
- [robot-wrapper] Fix bug in mass matrix: copy upper triangular part to lower triangular part (before this it was set to zero)
- [formulations] Remove debug prints
- [formulations] Fix bug in update of task weights
- [robot-wrapper] BUG FIX: compute center of mass acceleration in computeAllTerms (before it was not computed so we were introducing random number in the CoM task)
- [tsid-formulations] Add method to change the weight of a task.
- [eigquadprog-fast] In DEBUG, in case a constraint is not verified, set the status flag to ERROR (even if the solver said the problem has been solved)
- [task-com-equality] Fix little bugs in methods to get pos/vel references and errors, and in method to get desired acceleration
- [math-utils] Add function to check if matrix/vector contains NaN
- [math-utils] Pass JacobiSVD by reference in function solveWithDampingFromSvd
- [math-utils] Add function to solve linear system of equations from svd decomposition
1.0.0 - 2017-06-16
This is the first release of TSID. This release includes minimal features for the torque control of humanoid robots such as HRP-2.
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tsid at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.7.1 |
License | BSD |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/tsid.git |
VCS Type | git |
VCS Version | devel |
Last Updated | 2024-10-30 |
Dev Status | MAINTAINED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guilhem Saurel
Authors
- Andrea Del Prete
- Justin Carpentier
TSID - Task Space Inverse Dynamics
TSID is a C++ library for optimization-based inverse-dynamics control based on the rigid multi-body dynamics library Pinocchio.
Documentation
- Take a look at the project wiki for an overview of the design of the library.
- In the exercises folder you can find several examples of how to use TSID in Python with robot manipulators, humanoids, or quadrupeds.
- On the website of Andrea Del Prete you can find slides and video lessons on TSID.
- Memmo 2020 summer school
Installation with Conda
If you want to directly dive into TSID in Python, only one single line is sufficient (assuming you have Conda installed):
conda install tsid -c conda-forge
Installation from Debian/Ubuntu packages, with robotpkg
If you have never added robotpkg’s software repository you can do it with the following commands:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update
You can install TSID and its python bindings (replace * with you Python version) with:
sudo apt install robotpkg-py3*-tsid
Installation from sources
First you need to install the following dependencies:
- boost (unit_test_framework)
- eigen3
- pinocchio
- eiquadprog
- example-robot-data (only for running the examples)
To install eigen3 on Ubuntu you can use apt-get:
sudo apt-get install libeigen3-dev
To install pinocchio follow the instruction on its website.
To compile TSID:
cd $DEVEL/openrobots/src/
git clone --recursive git@github.com:stack-of-tasks/tsid.git
cd tsid
mkdir _build-RELEASE
cd _build-RELEASE
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$DEVEL/openrobots
make install
Python Bindings
To use this library in python, we offer python bindings based on Boost.Python and EigenPy.
To install EigenPy you can compile the source code:
git clone https://github.com/stack-of-tasks/eigenpy
or, on Ubuntu, you can use apt-get:
sudo apt-get install robotpkg-py3*-eigenpy
For testing the python bindings, you can run the unit test scripts in the script
folder, for instance:
ipython script/test_formulation.py
To run the demo using gepetto-viewer:
ipython demo/demo_romeo.py
Credits
This package is authored by:
- Andrea Del Prete (University of Trento)
- Justin Carpentier (INRIA)
It includes key contributions from:
- Julian Viereck (Max Planck Institute, New York University)
- Sanghyun Kim (Seoul National University)
- Eloise Dalin (LORIA, INRIA Lorraine)
- Noelie Ramuzat (LAAS, CNRS)
- Pierre Fernbach (LAAS, CNRS)
- Aurelie Bonnefoy (LAAS, CNRS)
- Etienne Arlaud (INRIA)
- Fabian Schramm (INRIA)
And is maintained by:
- Guilhem Saurel (LAAS-CNRS)
Citing
If you are (or not) happy with TSID and want to cite it, please use the following citation:
@inproceedings {adelprete:jnrh:2016,
title = {Implementing Torque Control with High-Ratio Gear Boxes and without Joint-Torque Sensors},
booktitle = {Int. Journal of Humanoid Robotics},
year = {2016},
pages = {1550044},
url = {https://hal.archives-ouvertes.fr/hal-01136936/document},
author = {Andrea Del Prete, Nicolas Mansard, Oscar E Ramos, Olivier Stasse, Francesco Nori}
}
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
1.7.1 - 2024-08-26
- Fix a typo in ex_4_walking
- check solver status, set eps_abs to 1e-6, fix seed
- CMake: require >= 3.10
- add changelog
- setup ruff & fix isort pre-commit config
- update ROS CI
1.7.0 - 2023-05-13
- expose SE3ToVector and vectorToSE3
- remove warnings
- Enhance Python target packaging
- Add CI with GitHub Action for conda
- Add support for proxqp and osqp solver
- Clean and update contributors list
- pre-commit autoupdate
- Expose TaskJointPosVelAccBounds
- Expose AddMotionTask for TaskJointPosVelAccBounds
- Fix qpmad
- Add clang-format Google style
- Add Measured force as an external force task with moving objects
- update CMake: fetch submodule, set default build type, fix RPATH
- fix for eigenpy v3
- np.matrix → np.array
- tooling: setup black isort & toml-sort
1.6.3 - 2022-11-02
- Require C++17
- fix tests in 18.04
- update pinocchio use
1.6.2 - 2022-09-05
- update python tests for np array
- add task actuation equality
- use generated headers
- Choose floating-base (or not) when creating a robot wrapper
- Add optional support of qpmad solver
- update packaging for eigenpy 2.7.12
1.6.1 - 2021-10-19
This new release is mostly a maintenance release, including fixes for the recent version of Eigen 3.4.
1.6.0 - 2021-03-18
- Add bindings for method Contact6d::getMotionTask
- Add Center of Pressure Taks
- fix warnings
1.5.0 - 2021-03-03
- [py] Add config variable to specify whether end-effector task should be formulated in local frame or world frame.
- [C++] Standardize names of methods to get and set mask in motion tasks.
- [py] Add accessors masks in TaskCOM and TaskSE3Equality.
- bugfixes
1.4.2 - 2020-11-26
- Add a mask to task-com-equality
- Fix bug in Contact6d::setRegularizationTaskWeightVector
- CMake: fix configure without tests
1.4.1 - 2020-09-25
- fix memory leaks thanks to shared_ptr
- fix warnings
- fix package.xml for ROS
1.4.0 - 2020-09-09
- add setGravity
- stop using StdVec in python to make code more user friendly
- add 6d contact with motion constraint at priority level 1 in python
- use example-robot-data in notebooks
1.3.1 - 2020-06-05
- fix license
- fix generated tsid.pc
1.3.0 - 2020-05-26
- reactive test
- add package.xml
- add CheatSheet
- updates for numpy.array & python 3
- updateRigidContactWeights: fix and add to python API
- use eiquadprog
- fix compatibility with pinocchio v2.4.5
1.2.3 - 2020-03-30
- renamed tests dir
- fix python tests
- CMake: export project and use exports from dependencies
- CMake: keep minimal required instructions
1.2.2 - 2020-03-01
- add angular momentum equality task
- update to pinocchio changes
- Python 3 compatibility
- add some documentation
- fix python issue
1.2.1 - 2019-09-19
- fix compatibility with recent pinocchio versions
1.2.0 - 2019-03-06
- Pinocchio v2, fix #31
- Fix demo_romeo for pinocchio v2
- Pull request for use TSID in python.
- Add missing includes, fix #18
1.1.0 - 2018-10-10
This release updates to non backward-compatibles changes in pinocchio v1.3.0
1.0.2 - 2018-06-12
This release is mostly a maintenance release. It fixes some bug with respect to Pinocchio. It also fixes some issues with respect to the packaging.
1.0.1 - 2018-01-12
- [joint-posture-task] Fix bug in computation of task matrix from mask
- [task-se3-equality] Add method to get frame-id
- [Robot] Add missing evaluation of the center of mass acceleration provided zero joint acceleration
- [Math] Fix bug related to Eigen undefined function set_is_malloc_allowed
- [CMake] Correct minimal version of Eigen3
- [inv-dyn-form-acc-force] Fix potential bug in removal of contact constraint
- [task-se3-equality] Fix small bug in computaiton of acceleration (just used for debugging)
- [contact-6d] Add methods to set reference force and weight vector
- [inv-dyn-form-acc-force] Fix bug: weight of force regularization task was not updated
- [robot-wrapper] Fix bug in mass matrix: copy upper triangular part to lower triangular part (before this it was set to zero)
- [formulations] Remove debug prints
- [formulations] Fix bug in update of task weights
- [robot-wrapper] BUG FIX: compute center of mass acceleration in computeAllTerms (before it was not computed so we were introducing random number in the CoM task)
- [tsid-formulations] Add method to change the weight of a task.
- [eigquadprog-fast] In DEBUG, in case a constraint is not verified, set the status flag to ERROR (even if the solver said the problem has been solved)
- [task-com-equality] Fix little bugs in methods to get pos/vel references and errors, and in method to get desired acceleration
- [math-utils] Add function to check if matrix/vector contains NaN
- [math-utils] Pass JacobiSVD by reference in function solveWithDampingFromSvd
- [math-utils] Add function to solve linear system of equations from svd decomposition
1.0.0 - 2017-06-16
This is the first release of TSID. This release includes minimal features for the torque control of humanoid robots such as HRP-2.