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.
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_BINDING Build the python binding (ON/OFF, default: ON)
PYTHON_BINDING_FORCE_PYTHON2: use python2 and pip2 instead of python and pip
PYTHON_BINDING_FORCE_PYTHON3: use python3 and pip3 instead of python and pip
PYTHON_BINDING_BUILD_PYTHON2_AND_PYTHON3: builds two sets of bindings one with python2 and pip2, the other with python3 and pip3
BUILD_TESTING Enable unit tests building (ON/OFF, default: ON)