Learn how to code by making robots navigate autonomously!

The objective for Robotics 102 is the implementation and understanding of autonomous navigation algorithms for mobile robots. Through building autonomous navigation algorithms for an omni-drive robot, students in Robotics 102 will be introduced to the foundations of AI and how to program computers for AI algorithms. Students will gain exposure to modeling AI problems as graphs and performing inference though graph algorithms in C++ and Julia.

Robotics 102 gives Engineering students early exposure to Robotics and AI as a foundation for a general engineering education as well as preparation for deeper study in Robotics and AI.

Robotics 102 shares the objective of Engineering 101 as a first-year semester course to gain fluency in computer programming and algorithmic thinking. Algorithms are an organized means to construct the solution of a problem, structured as a well-defined set of steps that can be carried out by a mechanism such as a computer. Robotics 102 focuses on the development of algorithms to solve problems of relevance in robotics and artificial intelligence and implementation of these algorithms using high-level computer languages.

In the context of autonomous navigation, Robotics 102 will provide concrete examples in robotics and AI that provide exposure to foundational concepts in autonomous decision making, including:

  • Sense-Plan-Act paradigm
  • Finite state machines and Reactive automata
  • Feedback control
  • Wall following and Subsumption architectures
  • Potential Field navigation and Optimization algorithms
  • A-Star algorithm and Graph search
  • Neural networks and Image classification

Robotics 102 is a new course being offered as part of the emerging Michigan Robotics Undergraduate Program. Robotics 102 for Fall 2021 is part of a new Distributed Teaching Collaborative offered in collaboration with Berea College.


All lecture slides are available here. They will be linked in the schedule once they are available.

Course Schedule (UMich, F21)

Date Topic In-class Activities Project
Week 1
Aug 30 Course Initialization Overview [Slides] Out: Project 0
Sept 1 Lecture Video: Hello World! [Slides] C++ Hello World (online)
Pair Navigation
(and fast teleop navigation run)
Sept 3 Lab: Coding Workflow [Slides]
Week 2
Sept 6 Labor Day - No class
Sept 8 Lecture Video: C++ Operators and Variables [Slides]
Lecture Video: C++ Functions [Slides]
Laser ray conversion
Sept 10 Lab Cancelled: Robotics Building Dedication Ceremony
Week 3
Sept 13 Lecture Video: C++ Branching and Iteration [Slides] Bang-Bang Control (1)
Sept 15 Bang-Bang Control (2)
(on a robot!)
Out: Project 1
Sept 17 Lab: Robot Workflow [Slides]
Week 4
Sept 20 Lecture Video: C++ Vectors & Structs [Slides]
Sept 22 2D Control (on a robot!)
Code linked on Slack
Sept 24 Lab: Wall Following [Slides]
Week 5
Sept 27 Quiz 0 (Practice Quiz) C++ Review
Sept 29 Project 1 (Wall Following) Hacking
Oct 1 Lab: Project 1 (Wall Following) Hacking
Week 6
Oct 4 Lecture Video: Autonomous Navigation: Local Search [Slides]
Quiz 1
Due: Project 0
Due: Project 1
Oct 6 Demo Day: Project 0 & Project 1
Oct 8 Lab: Navigation Workflow [Slides] Out: Project 2
Week 7
Oct 11 Lecture Video: Potential Field Navigation: Distance Transform [Slides] Potential Field Navigation (on a robot!)
Potential Field Demo
Code linked on Slack
Oct 13 Distance Transform in C++
Template Code
Oct 15 Lab: Potential Field Navigation [Slides]
Week 8
Oct 18 Fall Break - No class
Oct 20 Lecture Video: Potential Field Navigation [Slides] More time to complete:
Potential Field Navigation
Oct 22 Field Trip to MCity (12-1 PM)
Lab: Project 2 (Potential Field Control) Hacking
Week 9
Oct 25 Project 2 (Potential Field Control) Hacking
Oct 27 Check-in: Attractive Field Robot Navigation
Oct 29 Lab: Project 2 (Potential Field Control) Hacking
Week 10
Nov 1 Feedback Session
Quiz 2
Due: Project 2
Nov 3 Demo Day: Project 2
Nov 5 Lab: Cancelled
Week 11
Nov 8 Lecture Video: Autonomous Navigation: Global Search [Slides] Out: Project 3
Nov 10 Breadth First Search (1)
[Template Code, Graph Data, Handout]
Nov 12 Lab: Graph Search [Slides]
Week 12
Nov 15 Graph Search Activity (2)
Nov 17 Lecture: Machine Learning & Image Classification [Slides, Recording (UM Only)]
Nov 19 Lab: Julia and Jupyter Notebooks [Slides, Recording (UM Only) ]
Week 13
Nov 22 Lecture Video: Machine Learning: Nearest Neighbors [Slides]
Demo Day: Project 3
Due: Project 3
Out: Project 4
Nov 24 Thanksgiving - No class
Nov 26 Thanksgiving - No lab
Week 14
Nov 29 Lecture Video: Machine Learning: Linear Classifiers & Gradient Descent [Slides] Pocket Calculator (Julia)
Dec 1 Lecture Video: Machine Learning: Neural Networks [Slides] Object Detection Demo
Matrices in Julia
Dec 3 Lab: Project 4 (Machine Learning) Hacking
Week 15
Dec 6 Fairness and Ethics in AI
Dec 8 Lab Hours
Dec 10 Lab Hours Due: Project 4

Course Staff

Prof. Chad Jenkins

Office Hours: MW 1-3PM @ FRB 2236
ocj [at] umich [dot] edu

Prof. Jasmine Jones
Instructor (Berea College)

jonesj2 [at] berea [dot] edu

Jana Pavlasek

Office Hours: Tu 10AM-12PM, W 3-5PM @ FRB 2000
pavlasek [at] umich [dot] edu

Prof. Jan Pearce
Instructor (Berea College)

pearcej [at] berea [dot] edu

Tommy Cohn
Instructional Aide

Office Hours: F 10AM-12PM @ FRB 2000
cohnt [at] umich [dot] edu

Tom Gao
Instructional Aide

Office Hours: Th 11AM-1PM @ FRB 2000
zimingg [at] umich [dot] edu

Brody Riopelle
Instructional Aide

Office Hours: Th 12-1PM, F 11AM-12PM @ FRB 2000
broderio [at] umich [dot] edu

Max Topping
Instructional Aide

Office Hours: Tu 2-4 PM @ FRB 2000
toppingm [at] umich [dot] edu