Skip to content
/ towr Public

A light-weight, Eigen-based C++ library for trajectory optimization for legged robots.

License

Notifications You must be signed in to change notification settings

ethz-adrl/towr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOWR - Trajectory Optimizer for Walking Robots, generates physically feasible motions for legged robots by solving an optimization problem. A Centroidal model of the dynamics, physical constraints as well as a desired goal position are given to the solver that then generates the motion plan. TOWR generates 5 step monoped hopping, biped walking, or a complete quadruped trotting cycle, while optimizing over the gait and step durations, in less than 100ms.

Author/Maintainer: Alexander W. Winkler

               

Overview

  • towr_core (API): The core algorithm formulates the legged locomotion optimization problem using ifopt, which can then be solved with any solver. Therefore the dependencies of the core algorithm are:

    • Eigen: Library for linear algebra.
    • ifopt_core: Eigen-based interface to Nonlinear Programming solvers such as Ipopt and Snopt.
  • towr_examples: Provides an example executable solving towr_core with Ipopt to generate a one-legged hopper motion-plan. Additional dependencies:

    • Ipopt: 3rd party NLP solver, Snopt can also be used.
  • towr_ros (API): Formulates a variety of robots (Monoped, biped, HyQ, ANYmal) and terrains and a keyboard user interface to switch between them. It also allows to visualize the produced motions in rviz using xpp. Additional dependencies:

Building

Prior to building this, install ifopt and one of the NLP solvers and make sure the example runs (!). Then, install additional libraries, clone this repo into your catkin workspace and compile.

sudo apt-get libncurses5-dev libncursesw5-dev xterm
sudo apt-get install ros-kinetic-desktop-full
sudo apt-get install ros-kinetic-xpp

cd catkin_workspace/src
git clone https://github.com/ethz-adrl/towr.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release

Unit Tests

Make sure everything installed correctly by running the unit tests through

catkin_make run_tests

Usage

To run the simplest example

rosrun towr_examples towr_ipopt_example

For a more advanced example with interactive keyboard input and ROS visualization, launch the file below and then hit 'o' for "optimize"

roslaunch towr_ros towr_ros.launch

Publications

Previous versions of this code have been used for a variety of publications. For the respective code and the corresponding paper, see Releases. The theory on the current Release can be cited through this paper:

A. W. Winkler, D. Bellicoso, M. Hutter, J. Buchli, Gait and Trajectory Optimization for Legged Systems through Phase-based End-Effector Parameterization, IEEE Robotics and Automation Letters (RA-L), 2018:

@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     = {may},
  pages     = {},
  doi       = {},
}

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.