CMU RI 16-711: KDC: Assignment 3


This assignment explores designing nonlinear behavior using optimization.

In the last assignment we gave you a bipedal walking simulation. Now we would like you to design/tune a controller using optimization. First you must define an appropriate optimization criterion. Then you must set up the optimization process. Note that the optimization process is likely to be slow, so you should start on the assingment early.

Part 1: Minimize torque magnitudes while walking at a defined speed (1.0m/s): Find a steady state walking pattern that minimizes torques. We would like to minimize the maximum torques. It may be easier to minimize the sum of squared torques.

Part 2: Do 1 of:

2A) Maximize efficiency. Let's assume that torque is proportional to electric current, and that the "fuel" is electrons stored in a battery. Find a gait that maximizes the distance travelled given a fixed amount of electrons, which seems to imply a fixed amount of the sum( abs( torque ) ). This is a very simplistic model (no back-EMF braking, no regeneration or charging of the battery). You can propose a more realistic model and optimize that.

2B) Jump as high as possible from a standing start.

2C) Jump as far as possible from a standing start.

2D) Jump as high as possible from a running start.

2E) Jump as far as possible from a running start.

Part 3: Maximze robustness. First define what this might mean. Intuitively, I would like a controller to work on different robots that are slightly different, and handle a wide range of initial conditions and perturbations. What optimization criterion and optimization process would find such a controller?

There are many sources of optimization routines available free on the web. One is the Gnu Scientific Library. A test program for the Amoeba (Nelder-Mead) optimizer is available here. It includes instructions on how to install GSL on Windows.



Here is a multiple model simulator that will run faster than the assignment 2 simulator (walk03.zip). You can copy the new and modified files into your version of walk03. What changed?

In walk04/walk/

New files
dynamics-impact.c: multiple model dynamics
sdfast: multiple new sdfast generated subroutines
lu.c: LU solver: solve for x in matrix equation Ax = b

Modified files
Makefile
main.h
parameters.c




What to turn in?

Generate a web page describing what you did. Include links to your source and compiled code in either .zip, .tar, or .tar.gz format. Be sure to list the names of all the members of your group. Mail the URL of your web page to sanan@cmu.xxx and cc cga@cmu.xxx [You complete the address, we are trying to avoid spam.] The writeup is more important than the code. What did you do? Why did it work? What didn't work?


You can use any type of computer/OS/language you want. You can work in groups or alone.


Questions