A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Project description
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}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for tsid-1.7.0-1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52ea4214910f3a5bc171deab8aea6e4e84a5d04d07746397aff59ec466e272dc |
|
MD5 | 72877bf779741f509efa40b2942e8628 |
|
BLAKE2b-256 | 69d9cc0e76b1feaad60371d9ab133471b682a4c88425b6cdcff15597bd6b309b |
Hashes for tsid-1.7.0-1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5650d956b8c757e1307b3741e9ec2626601a4cb697ce055084f596c60ce3721 |
|
MD5 | 6c8c3ebccc266a2931f2efe2c9951db1 |
|
BLAKE2b-256 | 46070a312463088202cfbb3ec19ac1e425b36833bdc03b73d821f443d12db85a |
Hashes for tsid-1.7.0-1-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 846d8c2e6abb92c4e49f684542788f45dee63c2ca05c681181bf1d59bf6c16ac |
|
MD5 | f047a5dc6614541d9cfa648f774bb71c |
|
BLAKE2b-256 | cfad491bd6ecf8dbef07e8f752a5b85c2408f5495e05db4e9b87fbaebf47ecaf |
Hashes for tsid-1.7.0-1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01a201667d7c0ea25264082427baf11e06f474105d691df1e0545bb682b27240 |
|
MD5 | 112a08cd4c7ea0434c955b1407b76089 |
|
BLAKE2b-256 | daab32c91ed56707e2725587394f42288c415be0ad927a7ae3875d30618c66ed |
Hashes for tsid-1.7.0-1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0893d30cb9b4c27dbb6a999b77f1f36def06c609b93cb2e1503b9877fb792dcb |
|
MD5 | 5442bea10c0ccf994179996a6c2f8ecf |
|
BLAKE2b-256 | c992e02fbce76f4cbcd69a653fae57b366760cf8a968eca5371b5d6a7b3999c3 |
Hashes for tsid-1.7.0-1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 511468e9bc57abc9ad3559237e15a96ae356342fe9b2b5c51dba4060683587dd |
|
MD5 | 8af4e8be0fc6d7d48addfce8bd628b48 |
|
BLAKE2b-256 | 4ef429295be1583f42fd46ab4ecccc1a99fc11cd1098afcd04c6e87ddb30a0f6 |
Hashes for tsid-1.7.0-1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e57a6d3105b760fb871710fdbf64e4221828a83e63fc3a8de442ec9f337dd289 |
|
MD5 | 91894b7801996b08d324e2033b195500 |
|
BLAKE2b-256 | e51509e7ca3b5d0ac9075570557d3c4adba611679170459ba4d3751ecb684a88 |
Hashes for tsid-1.7.0-1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80fd9368b0d38e7ab5417a90a2b3749c2c1caf2719348f58f5c63e863be4fdad |
|
MD5 | dc12c432ae6b717244cd3879a3d6ebdb |
|
BLAKE2b-256 | 61d0e92885686d9f75a6014c5d3b1bf1f297d39cc140eac1fdfd771c28fe05ad |
Hashes for tsid-1.7.0-1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bf838290ef09d4380660c2bf8fe57e50271df292d91ccb07e6d1b0d05edaf36 |
|
MD5 | 3b73f5603c92c789565a9192a9cf2cbc |
|
BLAKE2b-256 | 5d0f0b792415d87f0fd7872f12aa5576a610fa2fdaac56ec30b657749793fd44 |
Hashes for tsid-1.7.0-1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85ef586bda586f15b4ff1a0e7cd3b7a97338a25fd5941774943cb40c2d31e05a |
|
MD5 | c91e815e24e8bf987bf1c33a2e10f909 |
|
BLAKE2b-256 | 59ab6cd892978add3649dcb3f1bbfe71012cf4b9526bb2d35611688d1f6c9f0d |
Hashes for tsid-1.7.0-1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46484af31c01a3049b2c430a53f57b8d0d4f467bc5b5cd8b99b72157339bf9cc |
|
MD5 | 220864fb88f29c17af34dd2650d9e4d6 |
|
BLAKE2b-256 | 1579bfb509fe4d8372d9943b30fd7a8d5596832d158563a653db922761e81851 |
Hashes for tsid-1.7.0-1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5be7411beda018fbbde065337515106042187bff6d79443ea3766953d6bece42 |
|
MD5 | 69f1f0c6ab1323f36b07289da2702478 |
|
BLAKE2b-256 | ef2661c98a00f9dd105f1f604eaba3df8dfcebf6db148040d48049b733caaad1 |
Hashes for tsid-1.7.0-1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d2243fb1971baadb97b7bc4c6d3809c272bcb3e385d3173a8d558afc2ff00da |
|
MD5 | ca89cd0657a87339cd1cd05cf873422e |
|
BLAKE2b-256 | ffe9c3656c1780642518e0a74e47d1e5e81b495f40eb349858565a860797c747 |
Hashes for tsid-1.7.0-1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5086af237e4e40520455f658e4c3b5c4e442d8b85f6e436626a80bec8075492e |
|
MD5 | 953854e827e8e7943b8d5d0da7e61af3 |
|
BLAKE2b-256 | d0c84880caa78e62e32c33dfa725be89f4d146ce89a8f4a23e62cf60111f245e |
Hashes for tsid-1.7.0-1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c044ff4c575ee5ff0de288b1b293a3ab34bb384c8499c515be21ca0a669df0f4 |
|
MD5 | 9c4485012333801545564eb6ba5b0669 |
|
BLAKE2b-256 | 4d5461d22d01cf2824ea54e115bec65fe01d48b5716fd361b4bd11486141a062 |
Hashes for tsid-1.7.0-1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 847eadb3dc4a11720ff2ef7316a315540637734beef9ac0bb0105cd3dbc53c65 |
|
MD5 | e3f04256ec699f2f34c1ca8e78e9b3c3 |
|
BLAKE2b-256 | b34c274ea0cece92da13c635a1453d5a8b5440f7214eb6441c036f1904956cfa |
Hashes for tsid-1.7.0-1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f8518abb0f95711b8bb0a171c08c45dc5ccf015c95c4605fcebd3ec40fb5faa |
|
MD5 | a97fbf1039f48dd412a7d30124eb7ee7 |
|
BLAKE2b-256 | fa1f344ab90a436eae68f0437db849cc0c7bd074fbe86c6239d85e28091a72c5 |
Hashes for tsid-1.7.0-1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a292f72a3f95d56ae2126d228acb9ba019e8a8604bcc00bfd0086304fcc9b20f |
|
MD5 | 44cebff2397f260980be72e638713890 |
|
BLAKE2b-256 | a9419be19103b7c56b54b3cca415ae2c11bca38c339a11970357aaeb90329c6f |
Hashes for tsid-1.7.0-1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffaecdc76c5e9284f3c667db73fe455e4f65abe6bbffa46bc409462a5dfae1fc |
|
MD5 | 01b50f26a292661f0f67a976c8283999 |
|
BLAKE2b-256 | 9a2ab57a9719b4052c4607c573cd30ab2c796eb23fa356a6b13a59c29657213f |
Hashes for tsid-1.7.0-1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2177ad4a92f3b9731680da292a33a370f911a488fdf323a720bc8a230ddfd186 |
|
MD5 | 17a33a414fcd2f5ea281113194977277 |
|
BLAKE2b-256 | 3ea0b7f25ed8a2a9b46aed267b49f1b6189541a1e1a92308ae27aca96bceadd3 |
Hashes for tsid-1.7.0-1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73880cce6f1fa1f4832c33e8d175e5096ca47a871ef09ad9dd315ffbe48bcc1e |
|
MD5 | 7ad51144303b4cdab3c73c3892769260 |
|
BLAKE2b-256 | 59d74ba1200f2f124ee5bc4e430c2bae430326f0a5f568950da748ee28197883 |
Hashes for tsid-1.7.0-1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a32eea2f343a0fcacd5f3380b99862a4733985dd3261adc066c70269b4484a39 |
|
MD5 | 39e7dc28e4f458580a25591b2488590d |
|
BLAKE2b-256 | d4942a915508d76fbac022490f37a8314d92b030c94ad7f8e4c13f7760add356 |