CS 154 Homework #2
Due Wednesday, February 10

Reading for HW 2:

Experiments in Automatic Flock Control by R. Vaughan, N. Sumpter, A. Frost, and S. Cameron,
   Proceedings, 1998 Symposium on Intelligent Robotic Systems, Edinburgh, UK.

Getting moving!


This assignment is about getting started with your robot platform...

An important quote to keep in mind is the following, borrowed from roboticist Erann Gat's quote collection:

Furious activity is no substitute for understanding.

Of course, furious activity might lead to understanding -- in which case it would be considered a good thing. But it is a also good idea to step back and reflect on a project even while you're working on it... .

To-do list for this assignment:

  • Build/familiarize yourself with your robot.
  • Write/use the software interface to your robot and at least one sensor.
  • Write/use an interface that gives you remote-control access to the robot and its available sensors.
  • Create a finite-state machine that controls your robot's actuators and sensors. In the absence of another task of your own design, a good starting task is obstacle-avoidance and wandering.
  • Document and write-up your progress on your project's wiki pages. Be sure to have a write-up (it does not have to be extensive) of any insights and difficulties encountered. Also, include
    • pictures of your robot and/or team in action or under development
    • at least one video of your robot's finite state machine in action
    • a diagram explaining your robot's finite-state machine
    • a description of things you'd like to add in the future, if any

Some additional details on these items:

  • First build or otherwise familiarize yourself with your hardware!     Be sure to include pictures of your final platform in your write-up, as well as any insights from building it. Nowadays every team tends to have a cell phone camera available, but if you need a camera, let me know. If you're doing a lot of building, consider taking pictures every so often in the process to document your progress.

    Although it might seems odd at the time, it's important to have a "BEFORE" picture to compare later in the term with your "AFTER" result. Large carpetfulls of random lego pieces, a bunch of unassembled parts, a picture of nothing at all... any of these will offer an excellent contrast with the system you've created by the project's end!

    Movies are important, too -- and especially valued if things go wrong! even more welcome than pictures, particularly of your final product moving around... .


  • Get moving, sensing, and visualizing...     Your choice of platform will be determined by your project and the computer(s) you might have at your disposal. The key for this assignment is to demonstrate that you can program your robot to move around and to read from and print out the values of all of its sensors.

    In particular, it would be best to first write a program that gives you remote-control access to all of the movement commands and sensory data that the platform has to offer. The key for this assignment is the completeness of access you can achieve, not the elegance of the interface. The interface will change later in any case... . Thus, being able to print out sensor values is wonderful. If you're inspired to plot them in some way, all the better - but that will be more important in the third assignment, which is on robot localization.


  • Wandering around     The other main task for this assignment is to create a finite-state-machine controller for your platform so that it can autonomously wander around and avoid obstacles. If you have another task in mind that uses at least four states, that is OK instead. In fact, your robot is welcome to run into obstacles, if that is important to its interaction with the environment, e.g,. for the Roomba/Create platform. But the key is that it should not get stuck in a single place or a single state.

    This part of the project will vary according to the platforms used and the tasks that they're seeking to accomplish! More detail will be worked out on a team-by-team basis. However, a few guidelines apply to all:

    • There should be at least four states in your state machine. More is certainly OK!
    • If it's wandering, your system should be able to wander through an area considerably larger than itself -- say, at least an order of magnitude.
    • Your system should indicate what state it is in, e.g., print it out each time there is a state change.
    • Include a state-transition diagram (as an image) in your write-up. This is an opportunity to revisit JFLAP, if you'd like! :-)



  • Be sure to describe your progress on your webpage as you go along...     This is where I'll go to read the current status of your project. In addition, I'll ask each team to demonstrate their platform during the week of February 8th, though not necessarily before Wed. the 10th.

    Always admired is any documentation (words, pictures, movies) of things going wrong... . This is both fun (sometimes!) and, more importantly, another great way to convey the work you have done by the end of the project!



  • Optional: looking ahead at a longer-term project

    I would encourage you to consider a website layout in which your HWs and project progress are organized and accessible - several of the previous projects had easy-to-use layouts you might consider. Creativity (or, perhaps, creative copying) is welcome for your website layout.

    The following is a rough, general guide to putting together a technical report on a robotics project, e.g., for submission to a conference. Particular projects may omit some of these points and include others. (Most will be very similar for the first half of the term, however!) You don't have to have any particular subset of these sections right now except the Progress and Media -- and you're welcome to organize those as you see fit. This larger outline is simply looking ahead, especially for projects that are different than the default "navigate/localize/map" sequence we'll be looking at in class.

    • Introduction/Vision
      • What problem are you addressing?
      • What are the primary objectives of your work?
      • How does this project relate to previous work? (cite)
      • Why is this project new, interesting, and/or important?

    • Background
      • What makes this problem difficult?
      • What have others done or what are various possible approaches? (cite)
      • Motivate the features of the problem that your solution will focus on.
      • In what ways are you limiting the scope of the problem to make it more tractable?
      • Include any background equations or less-formal relationships here, or anything else a reader might need to be reminded of.

    • Approach
      • What were the key design decisions you made?
      • Why did you choose your approach over other possible approaches?
      • What were the difficulties your approach entailed?
      • How did you get around them?
      • Diagrams are often excellent summaries.

    • Progress and Performance Results
      • Provide images and/or data, along with descriptions and explanations of them.
      • When constructing systems or processing data, before-and-after pictures of the robot (or raw/processed data) are often excellent summaries of progress.

    • Perspective
      • How well did your system perform?
      • What were some of the key factors in its success or failure?
      • What could be done to improve your system?
      • What other interesting problems or areas of investigation does this project and its results suggest?

    • Media
      • Here would be pictures, screen shots, movies, or other media (audio clips?) that document your progress on your project.
      • Insights, errors, bloopers, etc. are not only welcome, they're important to keep around!

    • References
      • Here you'd reference papers and other resources used along the way...