The purpose of the project was to design, develop and implement a vehicle that would be able to navigate itself on a lake, taking temperature measurements at various depths, at previously selected waypoints, and return to the point of origin to download the data to a PC, and do it completely autonomously.
The time allotted for this project was approximately three and a half weeks, and was completed by two senior Computer Engineering (CSE) students, Matt Cosand and Kevin Nichols, as a CSE 466 "Embedded Systems" class final project.





   Two primary aspects of the project were (obviously) the hardware and the software. The hardware aspect of the project was greatly simplified by the availability of an existing platform (the boat) and the use of breadboard construction for all of the circuits. The software aspect was the major focus, and this was further broken into two sub-tasks: a "pilot" task and a "navigator" task.

   Breaking the software development into two sub-tasks was done primarily because there were two of us working on the project. By splitting the code, we believed that we would be able to work relatively independantly and concurrently. It was also a logical way to think about how the software would interact with the hardware. An unexpected bonus was great joy of investigating the intricacies of interprocessor communications techniques.

   The method we decided upon for development of the software was a bottom-up or building-block approach. We initially drew up an overall functional diagram, which roughly identified all of the major components, and how they would interact in general. This told us what components would need to be developed, and we then spent most of the project time working on the individual software components. Another reason we did this was in order to help ensure that when we brought all the pieces together into a final system, finding any bugs would be localized to the system integration part of the task. For instance, one of the first things we did was to write & debug the LCD interface drivers for each of the chips (89c55 & 2333). We then used these LCD drivers while developing the other software components (such as the PC, GPS, and EEPROM interfaces, etc.) in order to show the state of the processor, variable contents, and other debugging information.





   Because we were attempting such a large project in such a short amount of time, it was necessary to evaluate our risks early in the project. (It was also a required homework assignment.) You can look at a copy here: risk_items.doc



December 2000 - Matt Cosand, Kevin Nichols