CSE 550A: Mobile Robotics

Fall 2011

[What] [Who] [Where] [Textbook] [Collaboration] [Grading]
[Lectures] [Labs]
[ROS] [Robots]
[Reserve a TurtleBot] [Google Group]


What

CSE 550A is a broad introduction to the field of mobile robotics, from a software perspective. We will cover the basics of mobile robot control, software architectures, navigation and localization algorithms, and survey some common application areas.

From the course catalog:

An introduction to the design and implementation of intelligent mobile robot systems. This course will cover the fundamental elements of mobile robot systems from a computational standpoint. Issues such as software control architectures, sensor interpretation, map building and navigation will be covered, drawing from current research in the field. Students will also design and build a small mobile robot and program it to perform simple tasks in real-world environments. Class size limited to 20. Prerequisites: CSE 131/CS 101G, SSM 326A, Math 320 or permission of instructor.


Who

Instructor:
Bill Smart (wds@cse.wustl.edu)


When and Where

Classes:
Tuesday and Thursday, 11:30am-1:00pm, Lopata 103

Office Hours:
Tuesday/Thursday, 1pm to 2pm in Lopata 516. You should reserve a slot to make sure I'm free.


Textbook

The textbook for the class is "Introduction to Autonomous Mobile Robots" (second edition), Roland Siegwart, Illah R. Nourbakhsh and Davide Scaramuzza. Bradford Books, 2011. ISBN 0262015358. We will also be handing out addition reading material throughout the semester, from a variety of sources. The first edition of this textbook (the one with the white cover) has some of the material that the second one does, but it's lacking some of the more up-to-date material. If you're going to get the textbook, you should really get the second edition.

The textbook has a web site with some extra materials on it. We won't be using any of these materials for the class, but you might find some interesting supplementary material here.

Although they are not required for the class, there are a couple of other texts that you might find useful if you're interested in digging more deeply into some of the material that we cover.

The class has a software focus, but there are a number of good books on actually building robots. Here's a brief and incomplete sampling.


Collaboration Policy

This is a 500-level class, and you are encouraged to discuss the course material with other students. Discussing the material, and talking about the general form of solutions to the labs is a key part of the class. Since, for many of the assignments, there is no single "right" answer, talking to other students is a good thing. However, everything that you turn in should be your own work, unless we tell you otherwise. You should feel free to discuss the lecture material, and the general form of your solutions with other students. If you talk about assignments with another student, then you need to explicitly tell us on the hand-in. There are no penalties for talking to others, but we'd like to know the scope of the interaction. There will be more specific instructions on the assignment hand-outs. The "official" statement on collaboration is given below:
Unless explicitly instructed otherwise, everything that you turn in for this course must be your own work. If you willfully misrepresent someone else's work as your own, you are guilty of cheating. Cheating, in any form, will not be tolerated in this class.

If you are guilty of cheating on any assignment or exam, you will be penalized the number of points that the assignment is worth. For example, if you are guilty of cheating on an assignment worth 10 points, your score on that assignment will be -10. If you copy from anyone in the class all parties involved will be penalized, regardless of which direction the information flowed. Two or more instances of cheating in the course will result in a grade of F for the class, and will be referred to the School of Engineering Discipline Committee.

We will follow the guidelines of the University Undergradate Academic Integrity Policy, but we reserve the right to make the final determination of what constitutes cheating for this class. If you suspect that you may be entering an ambiguous situation, it is your responsibility to clarify it before we detect it. If in doubt, please ask.

You are also encouraged to look things up on the web. While there's a lot of information out there, there's also a lot of nonsense. You should always exercise caution before using anything you find on the web. You should never download and use code if you do not understand how it works. For several of the assignments, you will be asked to write code that you might reasonably find on the web. If you download and use code (even if you're just "inspired" by it, and don't use it character-for-character), you must tell us. Using other's code is fine, but if you do not tell us that you did it, you will be considered to have cheated, and will be subject to the integrity policy, above.


Grading

Your grade for this class will be calculated based on a combination of written and lab work.
Quizzes: 30%
Each of the three quizzes are have equal weight (10% of your final grade).
Labs: 70%
Each of the labs have an equal weight, unless otherwise specified.

Grades in this class will be assigned as follows:

85%     A
75% B
65% C
50% D
0% F

The late policy for the class is 10% per day late, up to a maximum of three days. If you're more than three days late on an assignment, you get zero points for that assignment. If you have some valid reason for needing more time on an assignment, then you should contact me at least two days before the deadline to request an extension. Last-minute requests will only be considered in exceptional circumstances.


ROS

All of the code you write in this class will use the
ROS framework. There are many ROS resources on the web, and you are encouraged to make use of them. You can get started at ros.org. Another useful site is the community-based answer site answers.ros.org.

ROS is installed on the CEC Linux Lab machines. If you want to install it on your own personal machine, there are instructions. If you can, we recommend using Ubuntu Linux and not doing a source-based install. This is the path of least pain. Trust us. If you must use some other system, or want to do a source-based install, talk to us first. If you install your own version of ROS, make sure you install diamondback and not the newer electric release. There are differences between the two, and we'll be using diamondback for the class. You can install diamondback by following the instructions for electric, and replacing all occurrences of the word "electric" by the word "diamondback".

ROS is open-source software. Although the development is led by Willow Garage, there are many active developers in the larger robotics community. You can see the current list of contributing sites and a list of the available packages.

If you use ROS and develop something useful, then you should really consider contributing it back to the ROS community. Instructions on how to do that are here. Open source software only works if people contribute back their code for others to use.

If you want to contribute your code back to the ROS community let me know, and we can talk about adding it to our repository at WU.


Lectures

You can get a detailed syllabus for the class, along with other information about the lectures, on the
lectures page.


Labs

You can get the lab assignments, and example solutions for old labs, on the
labs page.


Robots

We will be working with both simulated and real robots for this class. Our real robots are
Turtlebots. They all run the ROS Diamondback release.
Page written by Bill Smart.