Project 2 -- Hybrid Deliberative/Reactive Systems

Thursday and Friday, April 11 and 12: Demonstrations

Monday and Wednesday, April 15 and 17: Presentations

Wednesday, April 17: Write up

NOTE: The hard copy of the write up for this assignment is due at the beginning of the class period. This means that if you are even a minute late, you lose 20%. If you are worried about potentially being late, turn in your write up ahead of time. Do this by submitting it to me during office hours or by sliding it under my office door. Do not leave it in my departmental mail box.

One problem with purely reactive systems is that they are limited to acting based on their current sensory information. This is a problem because that information may not be sufficient for the robot to efficiently accomplish the task given to it. For example, if you want a robot to get from point A to point B but the robot is unable to sense B from A, then there must be some other way for the robot to know which way to head next or the robot will be likely to take a very inefficient route, if it manages to find B at all. Because it is impractical to create a set of reactive behaviors that will overcome this problem in the general case, robotics researchers often add a deliberative component to the system. This deliberative component can plan an appropriate sequence of actions to carry out based on information not directly available to the robot through its sensors. Such information may be given to the robot from an outside source or recorded by the robot during its previous activities.

This project asks you to design, build, program, and demonstrate a robot that accomplishes a task very similar to the one from the previous project. To accomplish this task you will again need to have the robot autonomously carry out several different activities at appropriate times and in appropriate ways based on its sensing. However, in the present project, you will be graded in part on how efficiently your robot carries out the task. Use of a hybrid deliberative/reactive robotic paradigm is suggested, but not required, for this project.

Goals of this project:

The Assignment

You will design, build, program, and demonstrate an autonomous robotic system that carries out the following task: Efficiently finding a target object in the environment and returning it to the robot's base station. You will also turn in written material regarding team structure and organization, timelines and milestones, design and implementation of the robot and its software, and evaluations of team members. One or more team members will present information to the class about their robot.

Details of the task (most were described in class) follow:

What to turn in.
Task allocation proposal.

You will turn in a proposal for what tasks need to be carried out and who will carry out each one. This should include reasons for carrying each task as well as for assigning them to particular people, with an eye towards balancing the amount of work each team member has to complete. After this there will be one more project: the final project.

This should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page). This should be turned in Monday, April 8.

Timeline with milestones.

You will turn in a list describing milestones to be accomplished and an associated timeline showing when each milestone is to be completed. You will also include a fallback plan describing what will be done in the event that a milestone is not reached on time.

This should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page). This should be turned in Monday, April 8.

Robot design

You will turn in a document describing the physical robot design, including its body, suspension, gearing, motors, sensors, and the layout of these components. This does not need to be detailed enough for an exact replica to be made (that is, you don't need to get to the level of the individual Lego pieces). Instead, it should give a high-level description of the parts used and how they are put together. This is the level of description I am looking for (taken with modifications from a description in my Ph.D. thesis of a real robot, constructed for a different task):

"This robot consists of two parts, a truck cab unit and a trailer unit. The cab is an Ackerman-steering 4-wheeled vehicle with rear-wheel differential drive. The front of the cab has a binary bumper switch that lets the robot know when it has contacted something from the front. The trailer is attached to the cab by a hitch constructed from a single-turn potentiometer. A servo with a set of photoresistors (CdS cells) is mounted on the back of the trailer so that the robot can keep track of the goal (a light bulb). The trailer also has a binary bumper switch on its rear to tell the robot when it is in contact with the goal.

"The potentiometer on the hitch measures the angle that the trailer makes with the cab. Valid angles that the trailer can make are within a 180 degree arc due to the physical constraints of the system. The light tracking servo on the trailer is also limited to a 180 degree arc."

This should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page). This will be turned in Wednesday April 17.

Robot (and base station) code

You will turn in the actual code you have written to control this robot. This will be written in Interactive C. If your base station is also programmed in any way, you will turn in all code that runs on your base station as well. You will turn in both a hard copy and an electronic copy of all code. Electronic copies should be mailed to as mime enclosures.

Your source code should be well structured and well commented. It should conform to good coding standards (e.g., no memory leaks).

This will be turned in Wednesday April 17.

Robot code documentation

You will turn in a document explaining the data structures and algorithms used in your code.

This should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page). This will be turned in Wednesday April 17.

Notes on this assignment

You will demonstrate your robot during a half hour period between 9:00 am and 5:30 pm on Thursday, April 11 and/or Friday, April 12 (or on an earlier date, if you so choose). You may schedule up to two demonstration periods total on either the same or different days. The half hour will include set up and clean up times. You must be ready to demonstrate your robot when your scheduled time arrives.

Your demonstration will be video-taped for later use, including your use in your presentation (see below), if you so choose.

You will also have one or more group members present to the class the key features of your robot, including both its hardware and its software. This presentation will last 8 minutes and will be followed by a 1 minute question and answer period. Your group will be selected for presentation in a random order. You must be ready to present when your group number is called. If you will be using a laptop for your presentation, you should ensure that it works with the departmental projector before April 15.

You will be graded on the following issues:

How well the robot accomplishes its task will be scored in each test as follows:

The page limitations given above do not include figures, which are encouraged and may take up any amount of space.


You may write your programs from scratch or may start from programs for which the source code is freely available (such as on the web or from friends or student organizations). If you do not start from scratch, you must give a complete and accurate accounting of where all of your code came from and indicate which parts are original or changed, and which you got from which other source. Failure to give credit where credit is due is academic fraud and will be dealt with accordingly.