CSSE 120R Final Python Robotics Project—Spring 2009-2010

Project Requirements

The final project for the Python part of this course is to design and implement:

Your project must satisfy these core requirements for a passing grade:

  1. Your GUI remote control can make the robot:

    Note: The simplest GUI is to use rectangles as buttons: use getMouse to get a click and then see which rectangle the click lies within.

  2. Your robot can follow a reasonably wide black line that forms a simple oval track.
  3. You have a screen layout that shows your GUI.
  4. You implement your project using an iterative enhancement plan.
  5. Your design uses procedural decomposition and documented stubs.
  6. Your code has good style and is commented appropriately.
  7. All team members contribute to and understand all major aspects of the project.

    In particular, each team member should be the lead developer of:

    Also, each team member should contribute substantially to the screen layout, the iterative enhancement plan, the procedural decomposition, the style requirements and the documentation.

    Some division of labor is appropriate, as long as the above requirements are met. Each team member should contribute their “fair share” of the total programming effort AND their “fair share” of the overall effort.

For full marks, in addition to the above:

  1. The remote control implements additional commands, e.g. speed controls, forward-until-bump, play a song, etc.
  2. The GUI features controls beyond mere buttons, e.g. a slider and/or keyboard shortcuts.
  3. When the robot is not under direct remote-control (e.g. when it is line-following), the remote-control commands (stop, move forward, etc) interrupt whatever the robot was doing.
  4. The robot does PID line-following, as described in this article on PID control for line-following using Lego NXT robots .

Milestones

You will have at least half (and generally more than half) of each session to work on your project. Use your in-class time to:

You will do your work in a repository that you and your teammates share. That repository will have 3 modules:

Put into “your” module EVERY function for which you are the lead developer.

Each milestone is due at the end of the listed session (to allow you time for integration during the session), except that the last milestone is due at the beginning of the session. For each milestone, your work should be committed to the repository with a clear commit message indicating that the milestone is completed.

Grading

I will supply this section ASAP, but you can already see from the above what is required for a C and an A, respectively.

Suggestions