Break up
It is my feeling that this project is composed of five subprojects. Each of these projects is semi-autonomous and can be developed concurrently. For the beginning though, there are three projects that need to be done first. The other two are dependent on the data and interfaces provided by these projects. Once these first three subprojects are well into development, then the last two should be started. These subprojects are as follows:
- Navigation
- Autonomous path finding, i.e. D* algorithm
- Way point paths
- Obstacle recognition — namely is there something in front of me
- If an obstacle is encountered it should send a message the overseer asking “what should I do?” The overseer will respond in one of three ways
- The obstacle is a wall, backtrack (requires data from the path constructor)
- The obstacle is an object, go around.
- The obstacle may be an object, gather more information.
- If a branch is encountered contact the overseer so that it can update the path constructor, and proceed via D* algorithm
- Otherwise move in a straight line.
- Object Recognition
- Identify specific objects by type, from an images/sonar
- Path Construction
- Isometric paths
- Constructed from obstacle encounters and branches
- Waypoint marking
- Needs certain data from the Object Recognition module to mark objects on the path.
- Overseer
- Ties it all together
- Manages messages and data between the five.
- Offers up web services to perform these tasks
- Client Side
- Some app for the client.
- The app only talks to the overseer.

Some Available Online Research
- Navigation
- Path Construction
- Object Recognition
Goals???
Stage 1:
- Navigation
- Implement an A* and D* algorithm in java
- Path Construction
- Create a path with way points (try making it straight and then add turns)
- Display that path some how
- Object Recognition
- Implement a package that given an image, horizontal limits (if findable from sonar) of the object, recognize the 2D shape, i.e. rectangle and oval