This repository contains all code used to produce the results of my Bachelor's thesis.
The code works, but is not actively maintained. Thanks to the friendly folks at ORB for helping me make this happen.
-
Install Python 2.7, virtualenv and pip
-
Create and activate a virtual environment and install Python-level dependencies with
pip install -r requirements.txt
-
Install custom RBDL version with the modified IK and improved Python wrapper by K. Stein, M. Kudruss, P. Manns and myself from the dev branch available here: https://bitbucket.org/mkudruss/rbdl/
If you are on Arch Linux, install the
lua51
package and run cmake with the following options:cmake .. -DRBDL_BUILD_ADDON_LUAMODEL=ON -DRBDL_BUILD_ADDON_URDFREADER=ON \ -DRBDL_BUILD_PYTHON_WRAPPER=ON -DLUA_INCLUDE_DIR=/usr/include/lua5.1 \
Make sure to execute cmake and make within your Python virtualenv, then the python versions will be automatically correct.
-
Set your PYTHONPATH such that it includes the build/python/ directory from RBDL, e.g.
export PYTHONPATH=../rbdl/build/python:$PYTHONPATH
The repository contains two executable Python scripts, patterngenerator.py
and
main.py
. Both take a similar set of options.
Currently, the following models are available in this repository:
-
heicub
-- A model of the HeiCub robot available at ORB -
simple
-- A model of a very simple walking robot -
simplelx2
-- Same assimple
, but with 2x heavier legs -
simplelx5
-- Same assimple
, but with 5x heavier legs -
simplelx10
-- Same assimple
, but with 10x heavier legs
This repository comes with a very simple pattern generator that can be invoked with
python patterngenerator.py [options ...]
It has the following options:
--model [simple|heicub|simplelx5|simplelx10|simplelx2]
Model
--out-dir TEXT Output directory
--help Show this message and exit.
It will output plots and a trajectory file to out/pg_data.txt
by default.
The main script supports a number of commandline options and subcommands. It can be invoked in the following way:
python main.py [toplevel options ...] subcommand [command options ...]
Currently, the following values can be set as top-level options:
--model [simple|heicub|simplelx5|simplelx10|simplelx2]
Model
--trajectory TEXT Trajectory file [required]
--csv-delim TEXT CSV delimiter of trajectory file
--out-dir TEXT Output directory
--show Open plot windows
-w / --show-warnings Show warnings
--help Show this message and exit.
There are multiple subcommands. The most important one is filter
, which performs
the full set of actions required to evaluate the results of the dynamic filter, that
means it:
-
Calculates the inverse kinematics on the pattern generator data and calculates the ZMP trajectory from that using inverse dynamics
-
Applies the dynamic filter
-
Calculates a ZMP trajectory again
-
Creates MeshUp animation files
-
Creates a lot of plots.
It again takes a number of options, as a number of interpolation and filter methods are currently implemented.
--filter-method [steepestdescent|gaussnewton|newton|pc]
Filter method
--ik-method [numerical|analytical]
IK method
--iterations INTEGER RANGE Number of filter iterations
--interpolate [none|savgol] Apply interpolation to filter result
--help Show this message and exit.
The other subcommands, compare_ik
and compare_interpolation
are for
evaluation purposes of parts of the codebase. evaluate
creates plots for
a huge number of filter configurations at once, evaluate_speed
evaluates
the performance of the algorithms, evaluate_zmp_accuracy
compares two
different ZMP computation algorithms and plot_error
creates a plot of the
raw result without any filters applied.
You can get more information on their options using e.g.
python main.py --trajectory out/pc_data.txt compare_interpolation --help
The Makefile included runs a number of batch tasks that together generate (nearly) all plots used in my thesis -- and a lot more.