Category | Difficulty (out of 5) |
---|---|
HW | 3 |
Quizzes | 2 |
Project | 3 |
The course provides a hands-on approach to design control algorithms that make robots move and interact with the environment efficiently and robustly. It covers a broad range of topics, including reinforcement learning, system identification, state estimation, numerical optimization, classical optimal control, linear systems theory, and nonlinear dynamics. It is more an optimal control class with a little taste of learning approaches.
- Two lectures per week.
- Each week there is a quiz with questions related to the previous week's lectures.
- You get to work on 4 assignments in Julia programming language.
- Final project required.
- At the end of the semester, there 3 case studies that are analyzed in class (How to land a rocket, how to drive a car, how to walk).
- This class is traditionally offered in Spring.
Taking into consideration the varied backgrounds of the students in the lecture, the course is organized to start each topic with a gradual and accommodating introduction and ends with a code implementation of the algorithms.
Overview of topics covered are:
- Dynamics, Stability, Discrete-Time Dynamics Intro
- Optimization Intro and Numerical Optimization Methods
- Optimal Control Intro, Pontryagin, Shooting Methods, & LQR Intro
- Dynamic Programming & Intro to Convexity
- Convex Model-Predictive Control
- Intro to Trajectory Optimization, Iterative LQR, & DDP
- Direct Trajectory Optimization, Collocation, & SQP
- Attitude Intro: SO(3) & Quaternions
- Trajectory Optimization for Hybrid Systems
- Data-Driven Methods & Iterative Learning Control
- Stochastic Optimal Control & LQG
- Robust Control & Minimax DDP
- RL from an Optimal Control Perspective
- Practical Tips & Tricks, Control History
- Case studies: How to land a rocket, how to drive a car, how to walk
The course also has a recitation which discusses in-depth the concepts taught in class, and also a going through the HWs.
You are expected to submit your homework every two weeks, and the assignments are not excessively difficult, allowing ample time to work on them. The course employs the programming language Julia. If you are unfamiliar with Julia, there is no need to worry, as there is a HW0 designed to acquaint you with the language, as well as a tutorial at the beginning of the semester. The homework assignments comprise of 2-3 questions in the format of Jupyter notebooks, which require you to complete certain TODOs and, on occasion, carry out some equation derivations.
Quizzes typically comprise questions related to the content covered in the previous week's lectures. While some questions may simply reiterate fundamental concepts, others may demand a deeper comprehension of the methods discussed.
The final project consists of applying the methods and tools learned in class to control a robot. You can form a team of up to 5 people. The project is very open-ended, as you may align your it with your research or even endeavor to undertake a project that you find enjoyable.
- Pay attention to lectures and ask questions. Commonly, instructors in CMU take great interest in providing thorough responses and finds pleasure in engaging with the class.
- Attend recitations; they are a great complement to lectures and can further assist you in reviewing concepts, particularly if you do not have a strong background in linear systems and control.
- Brush up on your Julia skills.
- Start the final project early.
- Have a lot of fun! I really enjoyed this course.