CMSC 20600: Introduction to Robotics

Spring 2021

The University of Chicago's CMSC 20600 Introduction to Robotics course gives students a hands-on introduction to robot programming covering topics including sensing in real-world environments, sensory-motor control, state estimation, localization, forward/inverse kinematics, vision, and reinforcement learning. This course is centered around 3 mini projects exploring central concepts to robot programming and 1 final project whose topic is chosen by the students. Each of these mini projects will involve students programming real, physical robots interacting with the real world. The use of physical robots and real-world environments is essential in order for students to 1) see the result of their programs ‘come to life’ in a physical environment and 2) gain experience facing and overcoming the challenges of programming robots (e.g., sensor noise, edge cases due to environment variability, physical constraints of the robot and environment).

For Spring 2021, this course will be conducted completely online using a simulated version of the Turtlebot3 robot (pictured below) that we will use use once the class can be conducted in-person. This simulated robot will not give students the same hands-on experience as working with an in-person robot would, but is the best we can do under the current circumstances.

Topics in HRI

Course Info

Course Projects

wall follow example
Warmup Project

The Warmup Project introduces students to robot programming in ROS (the Robot Operating System). This project serves as students' first application of processing sensor data, sending commands to the robot's motors, and implementing sensory-motor control. This project involves programming a robot to drive in a square, follow a person, and follow along a wall in an enclosed room.

particle filter example
Particle Filter Localization Project

The Particle Filter Localization project gives students the opportunity to implement a solution to the localization problem using a particle filter. This project is designed to give students the opportunity to learn about probabilistic approaches within robotics and to continue to grow their skills in robot programming.

q-learning example
Q-Learning Project

The Q-Learning project involves implementing a reinforcement learning algorithm (specifically Q-learning) to give your robot the ability to learn how to organize items in its environment. This project will also involves components of both 1) perception - detecting the items to organize and the locations for drop-off and 2) control - enabling the robot arm pick up the items and then navigate to the locations where they are to be dropped off.

final project example
Final Project

The final project gives students the opportunity to explore a robotics topic in-depth of their own choosing. Students will see this project through from start (coming up with a good idea) to finish (implementing their idea on a real robot), exploring a robotics algorithm in greater depth than was covered in class. The example pictured on the left shows a student final project from Winter 2021: a reinforcement learning robot soccer goalie.

Teaching Team

Sarah Sebo

Sarah Sebo (she/her/hers)
Call me by my first name.

Pouya Mahdi Gholami

Pouya Mahdi Gholami (he/him/his)
Call me by my first name.
It is pronounced POO-YAH.


Yves Shum (he/him/his)
Call me by my first name.
It is pronounced Eve.