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. Students in Robotics 102 will be introduced to the foundations of AI and programming by implementing algorithms for autonomous omni-drive robots. The course provides an introduction to C++ and Python through the lens of robotics.

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.

Students in Robotics 102 will complete projects throughout the semester which provide exposure to foundational concepts in autonomous decision making, including:

  • Controlling an omni-drive robot,
  • Reading and processing robot sensor data,
  • Wall following using feedback control,
  • Local navigation using finite state machines,
  • Pathfinding using graph search algorithms,
  • Image classification using machine learning.

Robotics 102 is a new course being offered as part of the emerging Michigan Robotics Undergraduate Program. A pilot course was offered in Fall 2021. See what the first class of Robotics 102 students got up to!

Schedule (Fall 2022)

The course schedule for Fall 2022 can be found below. Links to lecture material, projects, and other relevant recourses will be added as they are released. The schedule is subject to change.

Date Lecture In-class Activities Project
Week 1
Aug 30 Course Initialization Overview [Slides] Fetch Robot Demo Out: Project 0 (Pocket Calculator)
Sept 1 Lecture Video: Hello World! [Slides] First C++ Program [Slides]
Teleoperated Robot Racing
Sept 2 Lab cancelled
Week 2
Sept 6 Lecture Video: Operators and Variables [Slides] Laser range conversion [Slides]
Practice: Variables & Operators
Sept 8 Lecture Video: C++ Functions [Slides]
Lecture Video: Branching and Iterators [Slides]
Follow Me (with the robot!) [Slides]
Sept 9 Lab: Introduction to the MBot-Omni [Slides] Out: Project 1 (Wall Follower)
Week 3
Sept 13 Lecture Video: C++ Vectors and Structs [Slides] Find Minimum Ray [Slides]
Sept 15 Follow Me (2D) [Slides]
Sept 16 Lab: Wall Following [Slides]
Week 4
Sept 20 C++ Review [Slides] [Replit]
Sept 22 Quiz 1 Due: Project 0 (Pocket Calculator)
Sept 23 Lab Hours
Week 5
Sept 27 Project 1 (Wall Following) Hacking
Sept 29 Demo Day: Project 1 (Wall Follower) Due: Project 1 (Wall Follower)
Sept 30 Lab cancelled
Week 6
Oct 4 Super Mario State Machine [Slides] [Turnstile FSM Code] Out: Project 2 (Bug Navigation)
Oct 6 Lecture (In-class): Coordinate Frames [Slides] P2.1: Robot Hits the Spot
Oct 7 Lab: Odometry [Slides] [Odometry Derivation]
Week 7
Oct 11 Lecture Video: Bug Algorithm & State Machines [Slides]
Oct 13 Quiz 2
Oct 14 Lab Hours
Week 8
Oct 18 Fall Break - No class
Oct 20 Lecture Video: Mapping & Local Search [Slides] Pair Navigation
Oct 21 Lab Hours
Week 9
Oct 25 Lecture Video: Global Search: Breadth First Search & A-Star Path Planning [Slides] Demo Day: Project 2 (Bug Navigation) Due: Project 2 (Bug Navigation)
Oct 27 Pathfinding in Michigan [Lecture Video] [Slides] [Handout]
Oct 28 Lab: Graph Search in C++ [Slides]
Week 10
Nov 1 Extended Office Hours Out: Project 3 (Path Planning)
Nov 3 Autonomous Navigation Review
Nov 5 Lab: Robot Localization Workflow [Slides]
Week 11
Nov 8 Quiz 3
Nov 10 Lecture Video: Machine Learning & Image Classification [Slides]
Nov 11 Lab: Programming in Python [Slides]
Week 12
Nov 15 Lecture Video: Introduction to Python [Slides] Pocket Calculator in Python
Nov 17 Lecture Video: Nearest Neighbors [Slides] Object Detection with Deep Learning
Nov 18 Lab: Python Matrices and using NumPy [Slides] Image Distance in Python
Week 13
Nov 22 Demo Day: Project 3 (Path Planning) Out: Project 4 (Machine Learning)
Due: Project 3 (Path Planning)
Nov 24 Thanksgiving - No class
Nov 25 Thanksgiving - No lab
Week 14
Nov 29 Lecture Video: Optimzation & Neural Networks [Slides]
F21 Lectures (optional): Linear Classifiers & Gradient Descent [Slides], Neural Networks [Slides]
Dec 1 Quiz 4
Dec 3 Lab Hours
Week 15
Dec 6 Course Recap & Feedback Session
Dec 8 Demo Day: Project 4 (Machine Learning)
Dec 9 Lab Hours Due: Advanced Extensions
Due: Project & Activity Resubmissions for Regrading
Week 16
Dec 16 Due: Project 4 (Machine Learning)

Office Hours

The office hour schedule for Fall 2022 can be found below. You must be logged in to your UM account in order to see the event details. You can also access the calendar or add it to your calendar using  GCal  this link.

Course Staff

Prof. Chad Jenkins
Instructor

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

Jana Pavlasek
Co-Instructor

Office Hours: TuTh 2-3PM @ FRB 2171
pavlasek [at] umich [dot] edu

Brody Riopelle
Head Instructional Aide (Platform)

broderio [at] umich [dot] edu

Max Topping
Head Instructional Aide (Student Experience)

toppingm [at] umich [dot] edu

Jardine Allen
Instructional Aide

olita [at] umich [dot] edu

Omer Benharush
Instructional Aide

omerb [at] umich [dot] edu

Laasya Chukka
Instructional Aide

lchukka [at] umich [dot] edu

Isaac Madhavaram
Instructional Aide

imadhav [at] umich [dot] edu

Andre Nandi
Instructional Aide

andrenan [at] umich [dot] edu

Michael Robinson
Instructional Aide

mbrobin [at] umich [dot] edu

Joseph Taylor
Instructional Aide

joesphut [at] umich [dot] edu

Franklin Volcic
Instructional Aide

fvolcic [at] umich [dot] edu

Connor Williams
Instructional Aide

willcon [at] umich [dot] edu