ethz-adrl / towr

A light-weight, Eigen-based C++ library for trajectory optimization for legged robots.
http://wiki.ros.org/towr
BSD 3-Clause "New" or "Revised" License
933 stars 234 forks source link
biped collocation computer-graphics eigen ifopt ipopt legged-robots locomotion motion-planning nonlinear-programming physics-based-animation quadruped robot ros snopt trajectory-optimization xpp

A light-weight and extensible C++ library for trajectory optimization for legged robots.

Build Status Documentation ROS hosting CodeFactor License BSD-3-Clause

A base-set of variables, costs and constraints that can be combined and extended to formulate trajectory optimization problems for legged systems. These implementations have been used to generate a variety of motions such as monoped hopping, biped walking, or a complete quadruped trotting cycle, while optimizing over the gait and step durations in less than 100ms (paper).

Features:
:heavy_check_mark: Intuitive and efficient formulation of variables, cost and constraints using Eigen.
:heavy_check_mark: ifopt enables using the high-performance solvers Ipopt and Snopt.
:heavy_check_mark: Elegant rviz visualization of motion plans using xpp.
:heavy_check_mark: ROS/catkin integration (optional).
:heavy_check_mark: Light-weight (~6k lines of code) makes it easy to use and extend.


InstallRunDevelopContributePublicationsAuthors

Install

The easiest way to install is through the ROS binaries:

sudo apt-get install ros-<ros-distro>-towr-ros

In case these don't yet exist for your distro, there are two ways to build this code from source:

Building with CMake

Building with catkin

We provide a ROS-wrapper for the pure cmake towr library, which adds a keyboard interface to modify goal state and motion types as well as visualizes the produces motions plans in rviz using xpp.

Run

Launch the program using

  roslaunch towr_ros towr_ros.launch  # debug:=true  (to debug with gdb)

Click in the xterm terminal and hit 'o'.

Information about how to tune the paramters can be found here.

Develop

Library overview

Problem formulation

Add your own variables, costs and constraints

Add your own robot

Contribute

We love pull request, whether its new constraint formulations, additional robot models, bug fixes, unit tests or updating the documentation. Please have a look at CONTRIBUTING.md for more information.
See here the list of contributors who participated in this project.

Projects using towr

Publications

All publications underlying this code can be found here. The core paper is:

@article{winkler18,
  author    = {Winkler, Alexander W and Bellicoso, Dario C and 
               Hutter, Marco and Buchli, Jonas},
  title     = {Gait and Trajectory Optimization for Legged Systems 
               through Phase-based End-Effector Parameterization},
  journal   = {IEEE Robotics and Automation Letters (RA-L)},
  year      = {2018},
  month     = {July},
  pages     = {1560-1567},
  volume    = {3},
  doi       = {10.1109/LRA.2018.2798285},
}

A broader overview of the topic of Trajectory optimization and derivation of the Single-Rigid-Body Dynamics model used in this work: DOI 10.3929/ethz-b-000272432

Authors

Alexander W. Winkler - Initial Work/Maintainer

The work was carried out at the following institutions: