Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
dmronga authored Aug 29, 2023
1 parent f9e631b commit e698dda
Showing 1 changed file with 2 additions and 29 deletions.
31 changes: 2 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,15 @@ WBC was initiated and is currently developed at the [Robotics Innovation Center]

<img src="https://github.com/ARC-OPT/wbc/blob/master/doc/images/DFKI_Logo_e_schrift.jpg" width="400" >

## Motivation

WBC is a standalone library for optimization-based control of redundant robots. It contains various implementations of whole-body feedback control approaches on velocity-, acceleration- and force/torque-level. WBC is meant for controlling robots with redundant degrees of freedom, like humanoids or other legged robots with floating base, but also fixed-base systems like mobile manipulators, dual-arm systems or even simple manipulators. It is also meant for controlling multiple tasks simultaneously while taking into account the physical constraints of the robot. E.g., on a humanoid robot do ... (1) keep balance (2) Grasp an object with one arm (3) maintaining an upright body posture (4) Consider the joint torque limits, etc... WBC is a purely reactive approach, i.e., it does not involve any motion planning or trajectory optimization. However, it can be used to stabilize trajectories coming from a motion planner or trajectory optimizer and integrate them with other objectives and physical constraints of the robot.

The library is written in C++, with Python bindings for most functionalities. The general idea of optimization-based robot control is to formulate simultaneously running robot tasks as constraints or within the cost function of an instantaneous optimization problem.
Now, in each control cycle ...

* The constraints/cost functions are updated with the current robot state/control reference
* The optimization problem is solved
* The solution is applied to the actuators of the robot

The online solution of this problem is the robot joint control signal that complies with all tasks, while integrating physical constraints like actuator limits. An advantage of this approach is that complex tasks can be composed from low-dimensional descriptors, which are typically easier to specify and control than the complete task are once. Also, the redundancy of the robot is nicely exploited utilizing all the dof of the system (whole body).

## Getting Started

Please check out the tutorials section in the [documentation](https://arc-opt.github.io/Documentation/) for examples of usage.

## Requirements / Dependencies

Currently supported OS: Ubuntu20.04, Ubuntu22.04

Since WBC can be considered as an integrative framework that facilitates the composition of different robot control approaches, there is a number of dependencies:

* WBC has initially been developed for the [Robot Construction Kit (Rock)](https://www.rock-robotics.org/), thus it requires a couple of Rock core libraries, namely [base-cmake](https://github.com/rock-core/base-cmake), [base-types](https://github.com/rock-core/base-types) and [base-logging](https://github.com/rock-core/base-logging)
* For robot modeling we use [Orocos KDL](https://github.com/orocos/orocos_kinematics_dynamics)
* For model persistence, [URDF](https://github.com/ros/urdfdom) is used, for parsing from URDF into KDL, we use the [kdl_parser](https://github.com/rock-control/control-kdl_parser)
* The only currently supported solver is [qpOASES](https://github.com/coin-or/qpOASES)

Optional:

* For python bindings: python-dev, libboost-python-dev, libboost-numpy-dev, python-numpy
* To support robot architectures with closed loops (series-parallel hybrid systems): [rbdl](https://git.hb.dfki.de/dfki-mechanics/hyrodyn/rbdl), [hyrodyn](https://git.hb.dfki.de/dfki-mechanics/hyrodyn/hyrodyn)
See the [manifest.xml](https://github.com/ARC-OPT/wbc/blob/master/manifest.xml) for required and optional dependencies.

## Installation

[Standalone](https://arc-opt.github.io/Documentation/installation/installation_no_rock.html) | [Using Rock](https://arc-opt.github.io/Documentation/installation/installation_rock.html)
[Installation instructions](https://arc-opt.github.io/Documentation/installation/installation_no_rock.html)

## Testing

Expand Down

0 comments on commit e698dda

Please sign in to comment.