Tasks
June 3, 2026 · View on GitHub
Tasks is library for real time control of robots and kinematic trees using constrained optimization. It has been used extensively to control humanoid robots such as HOAP-3, HRP-2, HRP-4 and Atlas.
Documentation
Features:
- Support Kinematics Tree with Revolute/Prismatic/Spherical/Free/Planar/Cylindrical joints
- Dynamic motion (motion must fulfill the equation of motion)
- Contact forces in friction cones
- Static contacts
- Articular position, speed and torque limits
- Collision avoidance
- Multi-robot contact (can solve problems involving multiple robots in contact)
- Tasks:
- Posture target (articular position target, mandatory if you want avoid singularity issues)
- Link Position/Orientation target
- Link Velocity target
- Center of Mass (CoM) target
- Momentum target
- Contact force target
To make sure that Tasks works as intended, unit tests are available for each algorithm.
The SpaceVecAlg and RBDyn tutorial is also a big resources to understand how to use Tasks by providing a lot of IPython Notebook that will present real use case.
An online documentation can be found online.
Installing
Nix
Run python interpreter
To get a python interpreter, use
nix run github:jrl-umi3218/Tasks
and use it with
import tasks
# ...
Build
To build this software simply use
nix build github:jrl-umi3218/Tasks#tasks
Develop
To work on the project, use a development shell
gh repo clone jrl-umi3218/Tasks
cd Tasks
direnv allow # or nix develop
cmake -B build $cmakeFlags
cmake --build build
Overlay
To use in your own nix flakes, you may use the overlay provided in https://github.com/mc-rtc/nixpkgs or add this repository's flake to your flake inputs.
Ubuntu LTS (22.04, 24.04, 26.04)
You must first setup our package mirror:
curl -1sLf \
'https://dl.cloudsmith.io/public/mc-rtc/stable/setup.deb.sh' \
| sudo -E bash
You can also choose the head mirror which will have the latest version of this package:
curl -1sLf \
'https://dl.cloudsmith.io/public/mc-rtc/head/setup.deb.sh' \
| sudo -E bash
You can then install the package:
sudo apt install libtasks-dev python-tasks python3-tasks
Conan
Install the latest version using conan
conan remote add multi-contact https://api.bintray.com/conan/gergondet/multi-contact
# Install the latest release
conan install Tasks/latest@multi-contact/stable
# Or install the latest development version
# conan install Tasks/latest@multi-contact/dev
Manually build from source
Dependencies
To compile you need the following tools and libraries:
- Git
- CMake >= 2.8
- pkg-config
- doxygen
- g++ >= 4.7 (for C++11 support)
- Boost >= 1.49
- Eigen >= 3.2
- SpaceVecAlg
- RBDyn
- eigen-qld
- eigen-lssol (Optional, if you have the LSSOL licence ask us this library)
- sch-core
For Python bindings:
- Cython >= 0.2
- Eigen3ToPython
- sch-core-python
Building
git clone --recursive https://github.com/jrl-umi3218/Tasks
cd Tasks
mkdir _build
cd _build
cmake [options] ..
make && make intall
CMake options
By default, the build will use the python and pip command to install the bindings for the default system version (this behaviour can be used to build the bindings in a given virtualenv). The following options allow to control this behaviour:
PYTHON_BINDINGBuild the python binding (ON/OFF, default: ON)PYTHON_BINDING_FORCE_PYTHON2: usepython2andpip2instead ofpythonandpipPYTHON_BINDING_FORCE_PYTHON3: usepython3andpip3instead ofpythonandpipPYTHON_BINDING_BUILD_PYTHON2_AND_PYTHON3: builds two sets of bindings one withpython2andpip2, the other withpython3andpip3BUILD_TESTINGEnable unit tests building (ON/OFF, default: ON)