CMU RI 16-711: KDC: Assignment 3


This assignment explores designing nonlinear behavior using optimization.

Designing a Regulator

Part 1a: Manual Planar Balance Control: Manually design a controller that keeps the planar two link robot in assignment 1 (part 4) balanced while standing. What guided your design?

Part 1b: LQR Planar Balance Control: Use the LQR design approach to design a controller for standing balance. Use Q = 0.1*I and R = I. Why is this design good? Why is it bad? How can you minimize the gains? What are the minimal gains? Why aren't the minimal gains zero?

Part 1c: Robust Control: Design a controller that is robust to modeling error. We have talked about friction, delay, kinematic calibration errors, and mass calibration errors. What other types of modeling error are likely? Which type of modeling error is the biggest problem? How can you specify the possible size of modeling error you can handle, and how can you design a controller that actually handles that range of modeling error?

Dynamic Planning

For this part of the assignment you will be working with a one link robot (a rod), with mass = 1, length = 1, and width = 0.1.

The desired behavior for the robot is swingup. It starts hanging down, and is swung up by applying a torque at the base of the robot, ending up balancing on top of its base.

Part 2a: Optimize the trajectory of this pendulum. The criteria is an LQ criteria: Q = 0.1*I and R = I, with the desired state being an inverted pendulum.

Part 2b: Redo Part 2a with an unknown initial starting point (angle and angular velocity). You can make the initial state command line arguments or the TA can edit your code (please make it obvious how to do this) to change the initial state. We want to be able to re-plan in "real time" so any recalculation is limited to 10 seconds.

Part 2c: Once again, what about robustness? Make your planner robust to the types of modeling error discussed in Part 1c. How would you specify the range of modeling error your plan can handle? How would the planner handle it?

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. Numerical Recipes in C is an inexpensive numerical library. Matlab is also very useful.


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 ewhitman@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