CS 163: Main Class Project
Our main class project is a robot that can play soccer. By the end of
the semester, the robot will be able to find the ball, dribble, shoot,
and navigate around the field.
At the end of this project, you should be able to:
- design and implement physical interfaces that involve digital
and analog signal generation and processing;
- design, implement, and use serial protocols for device-to-device
- implement control loops that integrate sensing systems with
- implement mid-level image processing algorithms;
- document and communicate your designs within a collaborative
group, as well as with external observers; and
- debug and test real-time systems.
The development of this system will nominally be split into five
distinct milestones. At each milestone, a group is responsible
demonstrating a specific minimum level of capability, and for
producing documented code and other supporting documentation.
Although project work will be performed in groups of 3-4,
grades will be assessed in two components: personal work and group
- Personal work: during the course of the semester, each student
must be a primary contributor to 2 (4163) or 3 (5163) major system
components. There will be 2-4 such major components that are
required for each of the milestones. In addition,
individuals/groups may suggest other major components (these
need to be approved ahead of time).
Unless otherwise specified, each major component will be worth
one credit. In order to receive full credit for a major
component, you must be the one group member who performs the
design and implementation of the subsystem. Your other group members
should be involved in reviewing your design, testing your
implementation, and helping you to debug. But - a primary
contributor will have a significantly larger role in the
subsystem (in particular, this person will be able to discuss
any aspect of the associated code). Note that two group
members may take on a single major component. In this case,
each will receive half of the credit available.
A list of possible major components is listed below. Although
you should not stress out about the assignment of major
components, it will be good to begin discussing possible
assignments as early as possible with your fellow group
In general, major component implementations may not be shared
across groups, as this will be considered cheating. There are
a couple of exceptions that are noted below. When in doubt, ask.
The value of a particular major component is based on my
heuristic assessment of the difficulty of the task. I am open
to negotiating higher values, but your case needs to be with
respect to the difficulty of the problem (not the amount of
time you have left before the deadline)
- Group work: milestones 1-5 represent important steps
bringing your robot up to speed. Points will be
awarded for demonstrating functionality for the milestone and
for properly documenting the work. Hence, if the primary
contributors are doing their job, the group work will
focus on system integration, testing, and documentation.
However, if the primary contributor fails to complete their
task (or no one has stepped up to perform the task), then the
group grade will suffer.
Milestones and Major Components
Certain major components are to be demonstrated as part of a
milestone (M1-M5). These required components are noted
- Milestone 1: Due March 9
- 1A. Reactive obstacle avoidance: turn away from
contacted obstacles; if no obstacles, move forward
- 1B. Camera: track a ball as it is moved in front of the camera
- CREATE (robot) base control
- Vision I
- Milestone 2: Due March 25
- 2A. Heading: Given an arbitrary initial heading, orient to and
drive down a specified heading.
- 2B. Move to Ball: given that the ball is in view, orient
to and move toward it.
- I2C slave
- Motion Control I
- Milestone 3: April 6
- 3A. Approach ball from a direction that allows alignment
of ball to a specified heading while avoiding obstacles.
Dribble the ball along this heading
- 3B. Track ball and robots using overhead camera(s)
- Motion Control II
- Blob tracking
- Wireless communication
- Milestone 4: April 20
- 4A. Shooting along a given axis
- 4B. Global navigation: given that the ball is anywhere
in the field of play, plan and execute a path toward it
- Milestone 5: May 4
Full game play
- High-level control
Each Milestone: What to Hand In
All components of the project are due on the date listed on the
- Demonstration/Presentation: All group members need to be
present for this phase; demonstrations/presentations may be
done for either me or the TAs
- Presentation: Describe in brief the design and the
organization of the major components using 2-3 printed or
computer-displayed slides (not hand written). Upload a copy of
these slides to the subversion tree.
- Demonstration: show that your circuit and software work
as specified for the milestone. Multiple tests and
testing under various conditions will be "par for the
course". Prepare appropriately.
- Code discussion: be prepared to address any questions
about the code implementation.
- Documented code: Turn in your documented code to the
subversion tree. Function-level documentation must be done using Doxygen markup.
- Group report: You should view this as a "living" design
document on your group's wiki page. Here, you should discuss
how the major components
are implemented and how they fit together (i.e., what are the
electrical and protocol-level interfaces?). You should
include sufficient detail that would enable a new team member
to jump into the project and begin contributing. This document
will evolve with each milestone. Make sure that you indicate
what material is new for the current milestone.
- Personal report: must be turned in via D2L by each group
member in TEXT format.
Assess the following:
- Major components: assess the contribution of the major
components by the student(s) responsible for each of
these. Note that a student does not have to be the
sole contributor to the major component. However, they
should take the primary responsibility for its design,
implementation and testing.
- Group work: state the relative contribution of you
and your group members. Ideally,
all group members are contributing equally.
- 25%: Demonstration:
Does it work under a variety of conditions?
- 50%: Implementation
Is the code well organized, clean and correct?
- 25%: Internal documentation
The implementation should be clear to someone who is familiar
with the hardware and problems to be solved (i.e., you do not
need to document for an inexperienced programmer).
- 25%: Presentation and implementation discussion
- 25%: Demonstration (pieces that do not necessarily fall within a
- 25%: Implementation (again, non-major components)
- 25%: Group report
- An individual's grade may be influenced by the personal
reports of his/her peers.
- Grades will not be assigned if personal reports are not handed in.
fagg [[at]] cs.ou.edu
Last modified: Sun Jan 17 00:56:28 2010