| |
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...
|