| Software - Command and Control |
SPSU - AUV 2005 |
Member: Andy Linnenkohl
Member: Michael Dendy
Member: Breneman Whitfield
Member: Chris Walker
Software
Introduction
The Command and Control subsystem is responsible for a bulk of the processing and intake of information, decision making and
control of the various subsystems on the AUVSI submarine. As such, the software of the Command and Control subsystem is
quite voluminous and varied in nature. It falls, however, into two major categories. The first of these categories is the
Main Program code that is used to drive the submarine through the AUVSI course. The second category consists of the interface
drivers and various other control code used for specific purposes in various ways throughout the submarine design.
Main Program Code
The main program code used by the SPSU AUVSI sub to navigate the course
by reading sensor data from one of the six subsystems and comparing
that data to set parameters. This code then sends control signals to
other subsystems to alter one aspect or another of submarine operation
to better navigation the course.
The program code for the submarine is written in Sun
Microsystems Java Development language and runs on the Linux based
operating system on the PC104 Processing card.
The steps the program code takes are outlined in the pseudo code list below:
- The submarine is turned on using the external power button
- The vertical motors are turned on to submerge the submarine to a depth of 3 feet
- The current heading from the TCM 2.6 is checked to assure the sub is facing the entry gate
- The horizontal motors are turn on to drive the submarine forward and drive it under the gate
- The velocity sensor is monitored and calculations are made to assure the sub is driven completely through the gate
- The horizontal motors are turned off once the gate has been cleared
- The vision system is activated and begins scanning for the beacon light
- One horizontal motor is turned on to begin a turn to assist in the search for the light
- A feedback loop is used to continue turning the sub while the vision system scans for the light
- Once the light is found, the TCM 2.6 is consulted to determine the heading of the light
- Using the TCM heading, the horizontal motors are turned on and the sub is driven to the light
- When the magnetic bumper is activated (indicating contact with the floating beacon), the motors are turned off
- The vision system is again activated, scanning the bottom of the pool for the virtual pipeline
- Using preprogrammed directions the submarine is moved using the horizontal motors while the vision system continues to scan for the pipe
- When the data from the vision system indicates that the pipe has been found the motors are stopped
- The pipe tracking software is started which controls the movement of the submarine as it tracks the pipe
- While the pipe is being tracked the Command and Control system is scanning for the black and white marker drop area
- When the black and white marker drop area is found a control signal is sent to the Marker Launch system that releases one of the markers
- The vision system data is reprocessed to assure the sub is still located over the marker launch area and the second marker is dropped
- The sonar subsystem is activated and the data is examined to find the surface area
- The Command and Control system analyzes the sonar information in conjunction with the TCM heading and a direction toward the surface area is determined
- The horizontal motors are used (independently) to turn the sub toward the surface area
- Using the TCM to maintain the heading, the horizontal motors are used to drive the sub into the surface area
- When the sonar information indicates a close proximity to the beacon the horizontal motors are turned off
- The vertical motors are turned on and the depth sensor is monitored to determine when the submarine has surfaced
Interface Drivers
The primary additional code used by the Command and Control
subsystem is the ISA bus driver used by the Command and Control system
to interface between the custom PC104 cards and the Processing card.
These drivers, written to allow the Java Main Program code and Linux
operating system to interface with the hardware PC104 ISA bus, set
forth the parameters used in the Main Program Code to send data to and
from the Navigation and Sonar cards.