Software
Our computer's operating system is based on Debian GNU/Linux. Heavy modifications result in dramatically decreased boot time and power consumption. All onboard storage use vibration resistant flash memory, again decreasing power consumption and increasing speed.
Shared Memory
The software architecture is built in three broad layers. The shared memory architecture based on existing Linux code stores all of the vehicle's status data (sensor readings, thruster commands, etc). The next layer of code interacts solely through this shared memory.
At the hardware end, serial drivers interact with the various
peripheral electronics like sensors and thrusters. Data from these devices are written to shared memory, and outgoing commands to those devices are read from shared memory. This simple interface allows code reuse and simplifies the process of writing drivers.
Vehicle Abstraction Layer
The vehicle abstraction layer builds a Python language wrapper around all of the shared variables, creating an abstract ''Vehicle'' object in Python. This Vehicle not only has access to physical sensors which write data to shared memory, but can also create virtual hybrid sensors that combine data from multiple real or simulated sources. This feature allows us to create a new virtual sensor like ''water depth'' by combining data from the real depth and altitude sensor. It also allows mission code to be tested using data from a simulator which writes data to virtual sensors.
Vision
Our vision processing system this year is built on top of the OpenCV library. This library contains an extensive collection of image transformation algorithms and has been highly optimized.
Separate code exists for bin, buoy, and recovery object detection. The bin detection code is a representative algorithm and explained here. First, the image is thresholded to identify regions of interest. Contours are detected and then filtered for ones that are rectangular. The filtered rectangles are statistically averaged to result in the final probable bin location.



