Project 2, CS 106

In this project, you will work to solve one of two multi-agent problems. The first challenge is to have a robot follow another. The second challenge is to let one robot talk to another. You are encouraged to work in groups and you do not have to be in the same lab periods. Below is a rough guide to how I will grade each project. It's up to you if the additional/time effort is worth the higher grade.

Extra Credit: For either of the two challenges, produce a 30-90 second video that describes how your program(s) work. Your target audience is someone without previous programming experience who is thinking about taking CS 106.
This video would be useful to me for (at least) three possible reasons, with your permission. First, I could use these videos to help students see what CS106 is about at the start of the spring term. Second, I could add them to my website because videos are awesome. Third, if your video is really good, I can enter it into an annual competion for "AI Education" videos. Fame could be yours!

Leaders & Followers:

One scribbler will be controlled by a human using the joystick() method (a leader robot). A second scribbler (a follower robot) should use blob tracking to follow the leader.

C: The follower correctly moves towards the leader, but often crashes into it.
B: The follower can maintain a distance from the leader. If the leader stops, it stops correctly (before crashing into it).
A-: The follower code works for multiple robots (i.e., 2 followers).
A: The follower code works for 3 followers (i.e., 4 robots in total) and all followers maintain a (reasonably) fixed distance from each other.


Communication:

On one computer, BlueJ will prompt a human to type something in. The robot connected to this computer (the speaker robot) will convey this information to a second robot (the listener robot), which is connected to a second computer. The second computer will display the text as the listener receives it.

There are multiple ways to accomplish this. One idea is to use Morse code on the back LED of the speaker robot, which the listener decodes. A second idea is to have the speaker robot make different movements, corresponding to the dot-dash of Morse code, or corresponding to the alphabet.

C: The speaker and listener are put into a pre-arranged configuration by the human. The speaker needs to only handle four letters. (E.g., the human can only choose to type in a, s, d, or f.)
B: The speaker can handle all lowercase letters.
A-: The speaker and listener can be put in any setup where the listener can see the speaker. It moves to the correct position and then receives input from the speaker.
A: The listener can determine when the speaker has concluded transmission. After displaying the message on the listener robot's computer, it will prompt the human for a reply, which it transmits back to the (original) speaker, displaying it on the screen of the first computer.


Submission and Demonstration:

Submit your java code via moodle by 11:59pm on Saturday May 12. If you worked in a group, clearly specify this in your code.

At least one member of your group must demonstrate your project to Matt in person. Keep this in mind when deciding whether to leave this project to the last minute, depending on when you're planning on leaving campus. Seniors: Because senior grades are due by noon on 5/15, you must demonstrate you project by noon on 5/14.