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
-
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:
-
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:
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
Make sure everything installed correctly by running the unit tests through
catkin_make run_tests
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
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 = {},
}
Please report bugs and request features using the Issue Tracker.