16-299: Introduction to Feedback Control Systems
Spring 2026
Instructor: Chris Atkeson,
cga@cmu.edu, Youtube channel
TA: Henry Liao,
hzl@andrew
TA Office hours: In-person and zoom office hours (at the same time) from 10-noon in NSH 1609 on Thursdays.
Class time: MW 11-12:20PM
Zoom (Passcode: 208553)
Place: WEH 5415
Units: 12
Piazza
Sign up for Piazza
We are revising this course to better fit the new Robotics Major.
The new title and course description will be.
Making Decisions: Robot Control, Planning, and Learning
This undergraduate robotics course covers the fundamental concepts of feedback control and planning algorithms for robotics. The course presents a unified approach to feedback control/policy design, optimal control, planning, and reinforcement learning. Topics include robot dynamics, PID control, LQR control, state estimation including Kalman filters, insight from frequency domain techniques, path planning algorithms such as A* and Rapidly-Exploring Random Trees (RRT), dynamic programming, and reinforcement learning. Students will gain practical experience in designing and implementing feedback control and planning both in simulation and on a real system. The course includes lectures, assignments, work with a real robot, and a project. By the end of the course, students will have a strong foundation in feedback control and planning algorithms for robotics, including reinforcement learning, and have gained insight into how to make decisions and choose actions.
Events
Starship test flight soon
Videos
-
Atlas 1, Atlas 2
-
Starship 5 booster catch, Another view, showing thrust vectoring,
closeup
-
Starship 6 landing (in ocean)
-
Falcon 9 landings,
-
Falcon Heavy
-
Does this make a good project?
-
SpaceX fails
-
Chinese test flight
-
Goodby HD Atlas
-
Electric Atlas autonomous
-
Atlas,
Behind the scenes,
-
Older Atlas video,
Older Behind the scenes,
Writeup
-
Robot learning pole balancing,
Robot learning swingup
Of Interest
TBA
Textbook
K.J. Astrom and R.M. Murray, Feedback Systems: An Introduction for Scientists and Engineers, (2nd ed.) PDF is available on the web.
There is a second book I urge you to read and the PDF is available from the CMU library:
Feedback Control for Everyone
Schedule
-
Jan 12:
Atkeson introduction. Atkeson Youtube channel.
Go over class web page
Introduction to the course:
How would you program the SpaceX rockets?
Intuition and a useful mental model:
Springs and dampers, natural frequency, damping ratio
Examples: Thermostat, body temperature, breathing, blood pressure, gaze, driving (direction, cruise control), rockets (including landing), game-playing (alpha-zero), ...
Assignment 0
Read Textbook: Chapter 1 - Introduction
Zoom recording Passcode: U&Bk4e*K
Recording lost from 59-64 minutes.
-
Jan 14:
Aside: Muscle spring-like properties
Intuition: The Math
Simulation
Wikipedia
Zoom recording failed.
-
Jan 21:
Preview installing Arduino IDE.
Assignment 2
Matlab example.
Genesis simulator
Zoom recording Passcode: 3#8?GI%?
-
Jan 26:
Assignment 2. Rerun sim_twip.
Models, states, actions/controls,
continuous and discrete time dynamics functions,
What do you want? Goals/optimization_functions/rewards, and control laws/policies.
Slides
Zoom recording Passcode: &g7$7oPP
-
Jan 28: Build our lab robots.
Bring laptop. Try to install Arduino IDE in advance.
-
Feb 2:
How does the robot work (sensors, motors, motor drivers, computer).
Slides
Zoom recording Passcode: rkyd1w*Z
-
Feb 4:
Modeling the motor-wheel system
Deriving dynamics: Intro slides,
Actuated inverted pendulum,
My derivation of TWIP dynamics,
ChatGPT's derivation of TWIP dynamics and linearizing TWIP dynamics,
older slides: CGA Lecture 10
Linearizing dynamics
The state space approach:
CGA Lecture 4
Read Textbook: Chapter 6 - Linear Systems
Zoom recording Passcode: Wjw4a+b^
-
Feb 9:
How do we collect data from the robot?
Zoom recording Passcode: ^x$nV9!m
-
Feb 11:
Fitting a model by hand using simulation.
Modeling the static relationship of commands to torques.
Time domain/state space modeling.
Frequency domain modeling.
Is the picoencoder velocity estimate accurate?
Value functions.
Dynamic programs.
Linear Quadratic Regulators (LQR)
Read Textbook: Chapter 7 - State Feedback
No zoom recording.
-
Feb 16: Unifying ideas:
Thinking in the frequency domain.
CGA Lecture 9
Zoom recording Passcode: x!EOYLq3 Lost audio about halfway through.
-
Feb 18:
State-estimation, Linear State Observers: Observability; Observer derivation and design, Kalman Filters
CGA Lecture 6
Read Textbook: Chapter 8 - Output Feedback
Zoom recording Passcode: M8N^D+EZ
-
Feb 23: Making Decisions: Function Optimization:
kinematics example.
Redundant inverse kinematics:
Unconstrained optimization: Using Matlab's fminsearch and fminunc.
Unconstrained optimization with soft constraints: Using Matlab's fminsearch and fminunc, with
desired posture.
Constrained optimization: Using Matlab's fmincon.
Zoom recording Passcode: @Vt8EQYb
-
Feb 25: Making Decisions
Enumerating and evaluating options,
forward search, how computers play games,
value/heuristic functions,
dynamic programming.
Zoom recording Passcode: 4her8n$^
-
Mar 9: Project Presentations
-
Mar 11: Project Presentations
-
Mar 16: Discussion of lab1 and balancing template code
balance_template.ino code
Zoom recording Passcode: Akf5y^q9
-
Mar 18: Dynamic programming
-
Mar 23: Feedforward control
-
Mar 25: Guest lecture
-
Mar 30: Balance hackfest
-
Apr 1: Where are we (in the course)?
Slides
What ChatGPT has to say
ChatGPT version of the slides (PDF)
ChatGPT version of the slides (PPTX)
-
What is a plan?
Indexing on state or time (you can include time as an element of the state).
Compare to using state feedback to implement a plan.
Open loop whipping
Feedforward control.
Swingup
When do we need feedback?
Paddle juggling w/ vision,
Paddle juggling w/ vision 10 years later,
Rizzi paddle juggling,
3 ball blind paddle juggling
-
Apr 6:
-
Apr 8:
-
Apr 13:
-
Apr 15:
-
April 20: Project presentations
-
April 22: Project presentations
-
May 5 - Graduating students have to have turned everything in.
-
May 10 - All students have to have turned everything in.
Topics
-
UNDER CONSTRUCTION
What you see are previous year's topics.
-
Unit 0: Intuition, PID
-
Unit I: State Space
-
Unit II: Frequency Domain Previous year's notes
-
Read Textbook: Chapter 2 - Feedback Principles
-
Mathematical models: ODEs, diff. equations, and transfer functions.
Previous year's notes.
-
Conceptual overview, complex variables
-
Transfer Functions: frequency response, linearity
Read Textbook: Chapter 9 - Transfer Functions
-
Complex Plane Intuition: 2nd order systems, moving poles with P and D
Read Textbook: Chapter 10 - Frequency Domain Analysis
-
Frequency Domain Design
Read Textbook: Chapter 12 - Frequency Domain Design
-
Integral Control: steady state error rejection, benefits of added state
-
Unit III: Nonlinear Systems
Nonlinear EOMs, eq. points, and linearization.
-
Revisit ODE models, attractors (equilibrium points), saddle points, repellers, and stability;
-
Dynamic programming
-
Nonlinear Stability: Lyapunov methods: introduction and simple cases.
Read Textbook: Chapter 5 - Dynamic Behavior
Previous year's notes
-
Trajectory Following: pure pursuit, tubes: linearization about a trajectory;
-
Unit IV: Additional topics: class suggests more and decides which to talk about.
-
System identification
-
Adaptive control
-
Optimal control and reinforcement learning, dynamic programming
-
Robust control
Read Textbook: Chapter 13 - Robust Performance
-
Fundamental limits
Read Textbook: Chapter 14 - Fundamental Limits
-
Architecture (top-down, bottom-up), system, and control design, interaction
Adaptation, Learning and Cognition
Textbook: Chapter 15 - Architecture and System Design
-
Hybrid systems (Discrete and continuous states)
-
Case studies: class suggests more and decides which to talk about.
-
Textbook: Chapter 3, 4, and 15
-
scribbled models from previous years
-
Inverted pendulums: the ballbot, rocket control and landing
-
Vehicle Modeling: kinematic models, nonholonomic constraints;
-
UAVs - equations of motion, decomposition, differential flatness, architecture, trajectory planning, controller design
-
Humanoid Robots
Assignments
-
Assignment 0: Due Jan 20.
Send email to Chris and the TA:
Who are you? Why are you here?
Done any control (in simulation or on physical machines)?
Any ideas about the project you want to do? ("I don't know what project
I want to do." is okay.)
What topics would you like the course to cover?
Google and send us some interesting URLs. What example of control really
impressed you (Boston Dynamics Atlas jumping around, SpaceX landing rockets
on a barge, ...; send URLs of web pages or videos)? Are there other versions of this course at other places
or useful web pages
we should look at (send URLs)?
Be sure your name is obvious in the email, and you mention the course
name or number in the subject line.
I teach more than one course, and a random email from
robotlover@cs.cmu.edu is hard for us to process.
-
Assignment 1: Due Jan 20.
Get access to MATLAB. Download these Matlab examples. Play with the example mass-kb-manual by changing the stiffness and damping.
Nothing to turn in.
-
Assignment 2: Due Feb 3.
-
Assignment 3: Due March 13.
Make a linear model model (x_next = A*x + B*u) of the robot wheel systems (both left and right wheels), by collecting data and analyzing it. The state includes wheel angle and wheel angular velocity,
as well as any other variables you think improve the prediction of the next
state.
You can use a time domain or frequency domain approach.
The code you need to collect data is in 16299-26-3,
which corrects bugs found in the previous releases 16299-26-2 and 16299-26-1, so discard
that code if you have already downloaded it. The Arduino
libraries have not changed from the 16299-26-1 release.
-
Assignment 4: Due March 29.
Get your robot to successfully balance.
3/30 version of example code: balance_template.zip
3/30 versions of more useful code: putty-stuff.zip, imu_zeros.zip
3/30 versions of example balancing data for two different robots: FL1 robot,
PIT1 robot
Pre-flight checklist:
-
Prepare robot: strain relief USB cable and put on training sticks.
-
Get signs right so rolling forward is positive for encoders and motors.
test_picoencoder, test_motor.
-
Calibrate_encoders.
-
Tune body angle observer.
// measurement update
body_angle -= Kf_body*(body_angle - (ASCALE*ACC_TO_RAD)*((float) the_ay));
What is a good Kf_body? Get data by holding wheels still relative to ground and swaying robot. Encoders tell you true angle. Adjust Kf_body until estimate matches reality. Minimize effect of noisy accelerometer. Pay attention to units (radians). Use imu_zeros to subtract out bias.
-
Use what you did in assignment 2 (balance simulated robot) to estimate some gains. Manual adjustment or LQR.
Manual approach to finding gains: Tune these first:
float body_angle_gain = 0.0; // command/radian
float body_angular_velocity_gain = 0.0; // command/(radians/second)
LQR approach: linearize model, choose Q and R, try resulting controller,
iterate.
Project
We will work out the project topics together.
The ideal project would involve modeling and controlling a real physical system.
It would be cool to have a learning component.
Second best is doing everything in simulation.
We can help you buy a real physical system, if we don't have what you want already.
We can help you get access to robots.
See the deadlines in the schedule (above).
You can work in groups or alone.
The "deliverables" include
a web page along the lines of an
instructables web page
explaining how others could do your project and improve on your results.
You will also present your project, and ideally the presentation should
be made public as part of your web page. There will be intermediate
deliverables including draft web pages and practice presentations.
More Resources