This repository is about using iterative learning control (ILC) for robot reference trajectory tracking problem with the situation of model mismatch. Model Predictive Control (MPC) is also used for comparison. It is initiated by the final project of MECHENG 599 - Data Driven Methods for Control Systems (2024 Winter) at University of Michigan - Ann Arbor.
Disclaimer: This is NOT a research project. Some part might not be rigorous and suggestions are welcomed.
ILC and MPC Overview
ILC Initial Iteration and MPC Result
ILC-QP (Example)
Clone the project
git clone https://github.com/lihanlian/trajectory-tracking-ilc
Go to the project directory
- run get_reference_trajectory.m to generate mat file that stores vector of reference trajectories (reference_trajectory.mat)
- run get_initial_control_input.m to generate mat file that stores vector of initial control input solved by direct collocation, which will then be used for ILC iteration. (initial_control_input.mat)
- run get_ilc_matrix.m to generate mat file that stores necessary matrices within ILC iteration loop. (ilc_matrix_nominal.mat and ilc_matrix_actual.mat)
- run controller_mpc.m to check the tracking performance using MPC controller.
- run controller_ilc*.m to check the tracking performance using different ILC algorithms.
The author would like to appreciate the course instructor Professor Uduak Inyang-Udoh for his help throughout the semester and discussion during office hours. The author would also like to thank Professor Zachary Manchester and Professor Pranav Bhounsule for the open course CMU 16-745 and open course on Robotics. Below are some good resources might be helpful on related topics.
- Lecture on Iterative Learning Control - Prof. Zachary Manchester [YouTube]
- Lecture on Trajectory Optimization (Direct Collocation and Shooting Method) - Prof. Pranav Bhounsule [YouTube]
- MATLAB Example for Iterative Learning Control
- Blog about Direct Collocation
- Reinforcement Learning - "DDPG" explained [YouTube]