Quarter: Winter, 2019

Class times: Tuesday & Thursday, 11:30-12:50pm

Office hours:

    • Monday, 1:30-3pm (Ethan)
    • Wednesday, 1:30-3pm (Ethan), by appointment
    • Thursday, 12:50-2:20pm (Nick)

Location: CSE2 130 a.k.a. "capstone room" (lectures and office hours)

Webpage: www.cs.washington.edu/cse481c

Canvas: https://canvas.uw.edu/courses/1254732

Tumblr: https://cse481wi19news.tumblr.com/

Github: https://github.com/cse481wi19/cse481wi19/wiki


Maya Cakmak, Instructor

e-mail: mcakmak@cs | github: @mayacakmak | office: CSE2 236

Ethan Gordon, Teaching Assistant

e-mail: ekgordon@cs | github: @egordon | office: CSE2 Robotics Lab, G060B

Nick Walker, Teaching Assistant

e-mail: nswalker@cs | github: @nickswalker | office: CSE2 Robotics Lab, G060B


The main goal of this course is to open up new career options in robotics for computer science and engineering students. To that end, the course will teach you the basics of robotics and give you implementation experience. You will learn to use libraries and tools within the most popular robot programming framework ROS (Robot Operating System). We will touch on robot motion, navigation, perception, planning, and interaction through mini-lectures, labs and assignments, eventually integrating these components to create autonomous or semi-autonomous robotic functionalities. The project will give you team-work experience with large scale software integration and it will get you thinking about opportunities for using robots to make people's lives easier. At the end of the quarter students are expected to:

  • Understand basics of robot navigation, perception, planning, interaction; have a sense of challenging problems in robotics
  • Know how to use important tools in ROS, be able to contribute to ROS, have awareness of available packages in ROS
  • Be comfortable operating a robot platform, have experience using ROS tools to control a robot platform
  • Understand the importance of interface design and robustness of functionalities in robotics
  • Be prepared to interview for a robotics job

Find out more about general capstone objectives here.

Links to webpages of previous offerings of the robotics capstone: Winter 2018, Spring 2017, Spring 2016, Autumn 2014, Autumn 2013


Robots that can assist people in everyday tasks and challenges can bring independence to people with disabilities, enable aging in place, and more generally improve the quality of our lives. In this capstone you will develop an assistive robot that helps address challenges faced by a disadvantaged user group, such as:

  • older adults or persons with age-related disabilities,
  • persons with sensory or motor impairments (e.g. hearing, vision, mobility, use of limbs),
  • persons with Autism spectrum disorders,
  • persons with chronic health conditions (e.g. asthma, diabetes).

Depending on the nature of the challenge being addressed, the assistance provided by the robot can fall into different categories:

Your projects will similarly fall into one or both of these two broad categories. You will have two robot platform options:

Although the Fetch more naturally fits physical assistance tasks, it can easily provide other types of assistance. Similarly, although the Kuri does not have a manipulator, it could be augmented with a backpack, tray, or simple manipulator arm for transporting objects. In addition to programming and possibly physically augmenting the two robot platforms, your projects will likely involve structuring the robot's environment to enable functionalities that might not be possible in environments that are designed for humans.

Besides solving technical problems for your project, you will work on identifying needs or pain points of your chosen user group, evaluating usability of your solution, and ensuring its potential business viability.

What tools and resources are available to you?

  • We will have an Ubuntu desktop for each team
  • We will have one Fetch mobile manipulator robot for teams to share
  • You can request an Android tablet and/or a mobile smartphone that can be attached to the robot or used for controlling the robot
  • You can request Arduino or Raspberry Pi kits
  • You can request servo motors, LEDs, or other actuators
  • You will have access to the CoMotion Makerspace for 3D printing, laser cutting, and other tools; you can request fabrication materials
  • You can request additional sensors or peripherals for the robot
  • You can request special controllers or wearables
  • You can request home automation tools
  • You can request furniture related to the robot's functionality

We will mainly support software development within ROS but you will get the opportunity to learn or practice web, Android, or embedded programming if you wish to do so.

You will do projects in teams. The number of teams and persons per team will be determined based on total number of registered students. Team structure is flexible, but we recommend an even distribution of the following roles among team members:

  • ROS guru: Understands the nitty gritty details of ROS (e.g. what's the difference between a topic and a message?) and knows how to use different ROS tools.
  • Perception guru: Understands sensor data and can write software for processing it.
  • Hardware guru: Understand the hardware, is not afraid of using a screw-driver or a 3D printer.
  • Design and fabrication guru: Makes sketches of ideas, knows 2D and 3D computer-aided design tools, knows how to operate the laser cutter and 3D printer.
  • User interface guru: Understands human factors and usability, makes things look good.
  • Manager: Makes sure every team member is on the same page at all times. Help make decisions (layout pros and cons). Enforce "interface agreements" so components can be easily integrated.
  • Documentation and communications: Makes videos, takes notes, writes blog posts, gives presentations and acts as spokesperson.


Please keep in mind:

  • Collaboration:
    • Our main collaboration platform will be GitHub. If you do not yet have an account please create one.
    • One member from your team should create a repository for the class project and add the others as collaborators.
    • Use the wiki for internal documentation.
  • Assignments:
    • You will give a weekly update every week in the form of a blog post on your Tumblr page.
    • Each week we will give you a list of things we would like to see in the blog post and tell you how the blog post will be reviewed and graded, here.
    • Your blog posts are due on the following Monday at 5pm. The teaching staff will review and grade blogs immediately after this deadline.
    • One member from each team should submit a link to the post on Canvas by this deadline.
    • You will have a total of 5 "grace days" for late submissions. Late posts will be reviewed the following week. If you are out of grace days, you will receive 1/2^n of the total grade, where n is the number of weeks that the post is late for.
  • Lecture versus lab: We will have mini-lectures (~30min) during some classes and use the rest of the lecture time for labs and feedback from the instructors.
  • Office hours: There will be an office hour with one of the TAs once a week on Thursday afternoons. Notify the instructors if no one from your team is able to make it to the office hour. If you are having team issues or feel lost in terms of your project direction, you can schedule a team meeting with the instructor from this calendar.
  • Robotics news of the day: At the beginning of Tuesday lectures at least one person will give a two-minute presentation of a robotics-related news or fun-fact. You can volunteer for this by sending the instructors a link to a news and a 1 or 2 sentence blurb about the link, which will be posted on the course Tumblr page.
  • Sharing the robot: Six teams will need to share one robot! To make this as smooth as possible please reserve time on the robot google calendar in blocks of at most 1h30m. We recommend that you use the robot simulator to test and debug your work before trying things on the physical robot.
  • E-mails: When you email the instructor and/or the TA, please remember to include the word "CSE481" in your subject line.
  • Discussions: Please use Canvas discussion boards for questions that might be relevant for the rest of the class.
  • Sharing the driver's seat: All labs and assignments will be done in teams. Please make sure that the lead programmer role rotates among team members, no matter how slow you type or how little experience you have.


The distribution of your grades will be as follows:

60% Weekly blog posts

20% Final project demo and video

20% Participation and teamwork

Grades will be available on Canvas.