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.
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.
Use the multi-contact-unstable ppa:
sudo add-apt-repository ppa:pierre-gergondet+ppa/multi-contact-unstable
sudo apt-get update
sudo apt-get install libtasks-dev libtasks-qld-doc
Install from the command line using Homebrew:
# install homebrew package manager
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install caskroom application manager
brew install caskroom/cask/brew-cask
# tap homebrew-science package repository
brew tap homebrew/science
# tap ahundt-robotics repository
brew tap ahundt/robotics
# install tasks and all its dependencies
brew install tasks
To compile you need the following tools:
- 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.25
- Eigen3ToPython
- sch-core-python
git clone --recursive https://github.com/jrl-umi3218/Tasks
cd Tasks
mkdir _build
cd _build
cmake [options] ..
make && make intall
Where the main options are:
-DCMAKE_BUIlD_TYPE=Release
Build in Release mode-DCMAKE_INSTALL_PREFIX=some/path/to/install
default is/usr/local
-DPYTHON_BINDING=ON
Build the python binding-DUNIT_TESTS=ON
Build unit tests.-DPYTHON_DEB_LAYOUT=OFF
install python library insite-packages
(ON will install indist-packages
)
To update cmake or .travis directory with their upstream git repository:
git fetch git://github.com/jrl-umi3218/jrl-cmakemodules.git master
git subtree pull --prefix cmake git://github.com/jrl-umi3218/jrl-cmakemodules.git master --squash
git fetch git://github.com/jrl-umi3218/jrl-travis.git master
git subtree pull --prefix .travis git://github.com/jrl-umi3218/jrl-travis.git master --squash