NOTE: The hard copies of the documents for this assignment are due at the beginning of the class period on the date given above. This means that if you are even a minute late, you lose 20%. If you are worried about potentially being late, turn in these documents ahead of time. Do this by submitting them to me during office hours or by sliding them under my office door. Do not leave them in my departmental mail box.
NOTE: Electronic copies of all of the documents for this assignment are due within 24 hours of the time that the hard copies are due. Note that this is 24 hours from the start of the class period. This is not 24 hours from the end of the day in which the hard copy was due.
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 somewhat different than 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:
You will design, build, program, and demonstrate an autonomous robotic system that carries out the following task: To efficiently find and move a set of target objects in the environment to one or more locations within the environment and, if possible, to find and disable a moving dynamic object. You will also turn in written material regarding team structure and organization, timelines and milestones, and design and implementation of the robot and its software. You will complete online evaluations of team members and other teams. One or more team members will present information to the class about their team's robot.
Details of the task (many are similar to those discussed in class) follow:
x1,y1,x2,y2,...x21,y21where:
xi,yi
is one set of
coordinates,x1,y1
through
x16,y16
are the coordinates of up to
sixteen target objects,x17,y17
through
x20,y20
are the coordinates of up to
four destination locations, andx21,y21
is the coordinate pair of
robot's starting position.
The coordinates will be measured in feet with a resolution of one half foot. The x coordinate will measure distance from the north edge of the enclosure. The y coordinate will measure distance from the east end of the enclosure.
As an example, one coordinate pair might be 3,6.5, indicating the object is 3 feet from the north edge and 6.5 feet from the east end of the enclosure. You would not get coordinates such as 7.3 or 2.25, which are not multiples of six inches.
The special coordinates -1,-1 will indicate that no information is known
about that object. For example, I might only provide the coordinates of
ten target objects. If I choose to do this, I would provide these
coordinates in x1,y1
through
x10,y10
. Then for
x11,y11
through
x16,y16
I would enter -1,-1 for each
one. It might be the case that there are only ten target objects in the
arena at the start of the demonstration or there might be fewer or more
such objects (see below). The number of -1,-1 pairs given should not be
taken to imply the number of actual objects found in the arena.
I would prefer to enter these coordinates directly into your laptop in this format. If you would like your system to receive the coordinates in some other way, you will need to have this approved in advance.
You will turn in a proposal for how your team will be organized, 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. You should note here any changes from your previous team organization and method of task allocation with indications for why you are making these changes and where your new ideas originate. Keep in mind that after this there will be no more projects where team members will switch tasks.
This should be from 2 to 2.5 pages in length (roughly 80 characters per line, 50 lines per page). This is due Friday, April 11.
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 is due Friday, April 11.
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 is due Wednesday, April 30.
You will turn in the actual code you have written to control this robot. This will be written in Interactive C. Your source code should be well structured and well commented. It should conform to good coding standards (e.g., no memory leaks).
This is due Wednesday, April 30.
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 is due Wednesday, April 30.
If you choose to use a computer or overhead projector for your presentation, you should turn in a copy of your slides. If you choose to use the board or simply talk, you should turn in an outline of your talk and any notes you use during your presentation.
This is due Wednesday, April 30.
You will turn in a document evaluating how well your team organization worked and giving a plan of what you would do the same and differently if you could do it over again. The plan should be agreed upon by all members. The evaluation can either be a consensus document or individual team members may give independent evaluations.
This should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page). This is due Friday, May 2.
You will be given access to web-based evaluation forms for your team members and for the other teams. These are due before class time on Friday, May 2.
You will turn in both a hard copy and an electronic copy of all documentation, including code. Electronic copies should be mailed to hougen@ou.edu as mime enclosures. The electronic copies should be in a format that is stable and easily readable for people using software on a wide variety of operating systems. PostScript and PDF are good candidates for this. MS Word and PowerPoint are not.
You will test your robot during a 30 minute period between 9:00 am and 5:30 pm on Friday, April 25 and/or Monday, April 28 (or on an earlier date, if you so choose). You may schedule up to two test periods, one on each day. The thirty minutes will include set up and clean up times. You must be ready to test your robot when your scheduled time arrives.
Your demonstration will be video-taped for later use, including your use in your presentation 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 classroom projector before April 30.
You will be graded on the following issues:
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.