ME 224: Computational Methods for Robotics (Fall 2022)

This is an introductory course providing the students with the mathematical and computational tools used in diverse areas of robotics. Topics include introductions to linear algebra, numerical root finding, convex optimization, and nonlinear programming.


Course Objective: The overall objective of this course is to provide the students with the necessary mathematical knowledge and computational tools to understand and solve various problems in robotics. This class is foundational for any student interested in taking interdisciplinary classes in the areas of controls and dynamical systems, robotics, machine learning, and signal processing. The course content will be motivated by examples from robotics but the focus is on the mathematical concepts.

The specific learning objectives for the student are to:
● understand some of the mathematical and computational foundations of robotics;
● understand the fundamentals of linear algebra and matrix theory;
● understand the fundamentals of numerical methods for solving nonlinear systems of equations;
● understand optimization algorithms, their properties, and common solution algorithms;
● be able to use common computational tools and computing languages, particularly Python;
● be able to implement numerical algorithms for data analysis, matrix analysis, and optimization algorithms using Python.


Instructor: Erfan Nozari (erfan.nozari@ucr.edu)


TA: Gagan Acharya (gacha002@ucr.edu)


Lecture Times & Location: MW, 9:30 - 10:50am; via Zoom (link announced on Canvas)


Lab Times & Location: MW, 11:00am - 12:20pm; in-person in North District A1002


Instructor Office Hours: TBD.


Source material: Provided lecture notes, lab notebooks, and presented material during lectures and labs

Lecture Notes:
Lecture 1: Linear Algebra


Textbooks (optional):
● Mark W. Spong et al, "Robot Modeling and Control", 2nd Ed.
● C. T. Chen, "Linear System Theory and Design", 3rd Ed.
● Gilbert Strang, "Introduction to Linear Algebra", 5th Ed.
● Timmy Siauw et al, "An Introduction to MATLAB Programming and Numerical Methods for Engineers"
● Dimitri P. Bertsekas, "Nonlinear programming", 3rd Ed.


Grading: midterm & final: 30%/50% or 40%/40% (whichever helps you), homeworks: 20% + 7% extra, course evaluations: 3% extra


Homeworks: 8 sets (6 sets + 2 sets extra grade), about one per week; due on Mondays at 9:30am via Gradescope


Schedule (tentative):
Week 1 (9/26, 9/28): Vectors and matrices
Week 2 (10/3, 10/5): Vector spaces, change of basis
Week 3 (10/10, 10/12): Systems of linear equations
Week 4, 5a (10/17, 10/19, 10/24): Matrix Decompositions
Week 5b (10/26): Symmetric Matrices
Week 6a (10/31): Numerical root finding
Week 6b (11/2): MIDTERM EXAM: from the material covered in weeks 1-5, during normal class and lab time (9:30-12:20)
Week 7 (11/7, 11/9): Basic definitions in nonlinear programming, gradient descent
Week 8 (11/14, 11/16): Newton's method, Gauss-Newton Algorithm
Week 9 (11/21, 11/23): Conjugate gradient methods, quasi-Newton methods
Week 10 (11/28, 11/30): Constrained optimization
FINAL EXAM: Monday, December 5, 7:00pm - 10:00pm