Syllabus for a mini-course in programming and simulating robots

Spring 2020

Course description

This is a mini-course introduction to programming and simulating robots. The programming framework is a Python client library of the open-source Robot Operating System (ROS). Some familiarity with programming is required, but experience with Python or ROS is not.


Morgan Quigley, Brian Gerkey, William Smart. Programming Robots with ROS: A Practical Introduction to the Robot Operating System. O’Reilly Media, 2015. (Required. Henceforth: Qu)

Homebrew text and notes

A partial texts (with fill-ins) I’m writing will be posted on the _Robotics: programming and simulation (henceforth: Ro) page.


Everyone is required to join the messaging service called “Slack.” We’ll use it to communicate with each other during the semester. The Slack team you need to join is called drrico. That’s a signup link. Be sure to join the channel #577-general-2020.

Video lectures

Most lectures will be available online on my YouTube channel. I recommend subscribing and familiarizing yourself with the playlist for this course.


The following schedule is tentative. Bonus lectures denoted “+” are optional, but so is this class.

day lectures (Ro) week reading due
05.00 Introducing ROS
05.01 ROS methodology
Resource 1.1 Setting up VirtualBox+Ubuntu
Resource 1.2 Setting up ROS dev env: ROS
Resource 1.3 Setting up a Python ROS dev. env.
1 Qu Ch 1
06.01 ROS graphs
06.02 ROS packages
06.03 Running and launching ROS nodes
06.04 Coordinate transformations and tf2
2 Qu Ch 2 Ass. 1
Resources 2+3 Textbook code and git
07.01 Publishing to ROS topics
07.02 Subscribing to ROS topics
07.03 Custom ROS messages
07.04 Other ROS topics considerations
3 Qu Ch 3 Ass. 2
08.01 ROS services introduction
08.02 Serving and calling a ROS service
4 Qu Chs 4, 5 Ass. 3
09.01 ROS actions introduction
09.02 Serving and calling a ROS action
5 Qu Ch 6 Ass. 4
6 Qu Chs 7 Ass. 5
final project due 7


Assignments are due Monday of the week they appear in the schedule.

Assignment #1

Assignment #2

Assignment #3

Assignment #4

Final project

The final project will be due at the end (midnight) of Thursday of the final exam week.


The project is to write your own ROS packages covered in Ro. If you’ve been following along, making your own my_topics, my_services, and my_actions, you only have a few things left to do!

Submission format

If you do not want your repository to be public, create a private repository and add me (username: ricopicone) as a collaborator on the repository.