Software

Server Hierarchy

Drifters connect over the GSM cellular phone network using the TCP/IP protocol to a central Internet server. The server manages inter-drifter communications and provides access to the fleet for server-side clients. Some of these clients subscribe to the drifter's GPS measurements, others may want to control the drifters.

A particular client is one that takes GPS and salinity measurements and uses an inverse modelling technique to estimate flow and salinity conditions in the delta. Connections to a U.C. Berkeley supercomputing cluster and the U.S. Geological Survey provide the compute power and additional data to further improve the estimate.

On-board Drifter Software

The software on-board the drifter unit is written almost entirely in Python. This allows the code to be run on a standard PC and facilitates quick development cycles.

The architecture is based on functional modules, each of which runs in a separate Linux process for robustness. They communicate with each other using UNIX Socket IPC methods. Google protocol buffers are used for serialization and deserialization of messages between modules.

The module architecture isolates the rest of the system if a particular module fails and also allows remote reconfiguration of the system by enabling/disabling modules.

It also allows us to run a Software-In-The-Loop (SIL) simulator by writing fake GPS and cell phone modules and connecting these to the actual code.

Centerline Control

The drifters actively avoid becoming stranded on the shoreline or running into obstacles. The intelligence behind this autonomous operation is provided by a heading-hold controller which is guided by instructions from a "centerline" controller. The centerline controller utilizes solutions to Hamilton-Jacobi-Bellman-Isaacs (HJBI) partial differential equations. For each point, the technique will calculate the danger of the point and give a bearing back to the center.

Logic can determine if the drifter is in imminent danger of reaching an obstacle or the shoreline and navigates the drifter back to the safe center of the water channel. If the drifter is not in danger, the motors remain unpowered so as not to disturb the Lagrangian nature of the sensors.