Code API | Full Documentation | Scientific Paper | ROS 2 Interface
WBC is C++ library for optimization-based control of redundant robots. The idea of WBC is to describe a control problem as costs and constraints of an optimization problem (typically a quadratic program or QP) and design a set of feedback controllers around it. The QP minimizes the control errors, trading off the different objectives and produces a joint space command on velocity, acceleration or torque level, which is applied to the robot actuators. WBC is meant for
- Controlling redundant robots, particularly floating base systems like humanoids or quadrupeds
- Controlling multiple tasks simultaneously
- reactive robot control, i.e. it does not plan ahead the next robot control actions
WBC was initiated and is currently developed at the Robotics Innovation Center of the German Research Center for Artificial Intelligence (DFKI) in Bremen. Also see the ARC-OPT website of the Robotics Innovation Center.
There are multiple other libraries for Whole-Body Control, e.g., TSID or ControlIt!. Compared to these, the ARC-OPT Whole-Body Control library provides various WBC implementations on velocity, acceleration, and torque level. It is modular as it separates modeling, QP problem specification, and solving, allowing to evaluate and benchmark different robot models, QP solvers, and various WBC implementations. Furthermore, it implements a WBC approach for robots with closed-loop structures as described in this paper (will be made open-source soon).
Currently supported OS: Ubuntu20.04, Ubuntu22.04, Ubuntu24.04
See the manifest.xml for required and optional dependencies.
ROS 2 support for the WBC library can be found here
This will install the WBC core library with a single robot model (pinocchio) and QP solver (qpoases) respectively. Download this install script, store it in a folder of your choice (e.g., arc-opt) and execute it:
mkdir ~/arc-opt && cd ~/arc-opt
wget https://raw.githubusercontent.com/ARC-OPT/wbc/master/scripts/install.sh
sh install.sh
This will install the WBC core library plus multiple robot models and solvers. Download this install script, store it in a folder of your choice (e.g., arc-opt) and execute it:
mkdir ~/arc-opt && cd ~/arc-opt
wget https://raw.githubusercontent.com/ARC-OPT/wbc/master/scripts/full_install.sh
sh full_install.sh
To execute unit tests for the WBC library, run
make test
from the library's build folder. This will execute unit tests for all installed components, e.g. solvers, robot models, etc...
You can also check the tutorials to for some comprehensive examples.
Please use the issue tracker to submit bug reports and feature requests. Please use merge requests as described here to add/adapt functionality.
WBC is distributed under the 3-clause BSD license.
If you use WBC within your scientific work, please cite this paper.
WBC has been developed in the research projects TransFit (Grant number 50RA1701) and BesMan (Grant number 50RA1216) funded by the German Aerospace Center (DLR) with funds from the German Federal Ministry for Economic Affairs and Climate Action (BMWK). It is further developed in the M-Rock (Grant number 01IW21002) and VeryHuman (Grant number 01IW20004) projects funded by the German Aerospace Center (DLR) with federal funds from the German Federal Ministry of Education and Research (BMBF).
Dennis Mronga, dennis.mronga@dfki.de
Copyright 2017, DFKI GmbH / Robotics Innovation Center