Robosub

The RoboSub project has the goal of developing an autonomous underwater vehicle (AUV) for the AUVSI Foundation and ONR's International RoboSub Competition.

Design Task
The RoboSub must be capable of autonomously accomplishing a series of tasks including:
 * Going through a starting gate
 * Navigating from task site to task site on a course using visual and audio cues
 * Dropping markers at specified locations
 * Picking up, carrying, and dropping specified objects
 * Accurately deploying torpedos at targets
 * Completing physical puzzles using a manipulative arm

Accurate completion of each task contributes to the final score.

Our major project goals are:

 * Designing and building a sub frame that is light, maneuverable, durable, and properly bouyant with room for all necessary electrical and mechanical components.
 * Designing and building the mechanical devices necessary for task completion such as grabbing arms and torpedo launchers and integrating them with the electrical system and structural frame.
 * Assisting the WSU team in the design and implementation of the electrical system including power, motors, sensors, and communication.
 * First prize in the final competition!

Design Goals and Deliverables
1. Statically and dynamically stable in the water.


 * A layout that positions denser components toward the bottom of the sub to keep the center of mass below the center of buoyancy
 * A system that allows for weights to be added at appropriate locations to help balance the sub

2. Positively buoyant by 0.5% of total mass


 * A complete sub that displaces the appropriate amount of water to make it buoyant by 0.5% of its mass
 * A system that allows for adjustments to buoyancy using high or low density additions, e.g. metal weights or foam

3. Parts that can be replaced in a matter of minutes
 * Standard and reusable fasteners instead of adhesives, welds, or other permanent solutions
 * Component layouts that do not block access to important parts

4. Modular sub-systems and components
 * Quick releases, latches, and easy-to-use connectors and mounts between systems and components

5. Easy to transport and store
 * Handles or something similar that is easy to grasp
 * A stand that has been specifically designed to support the sub
 * A container that is built to safely store the sub during transport

6. Safe to operate and work on
 * Thrusters and other electronics that are designed to operate below 30 VDC
 * Shrouds and guards the shield the thruster props
 * Kill switches that are easily operated and highly visible

7. Watertight hull and other housings
 * Accurately manufactured housing components and appropriate use of o-rings and waterproofing techniques

8. Electronics that remain adequately cool
 * A heat mitigation system using liquid and/or air cooling if needed
 * Heat sinks on crucial components

9. Outside dimensions that meet competition requirements
 * Compact construction and packaging of components
 * Accurate measurements of components and overall dimensions of sub

10. Overall weight that is 84 lb or less
 * Lightweight materials for frame, hull, and other components when possible

11. Torpedo launchers that can launch a torpedo into a 12 in target
 * Neutrally buoyant torpedoes that can possibly be adjusted with weights
 * A retention system that prevents torpedoes from launching prematurely
 * Fins or other solution for stabilization
 * Proper barrel porting and size to increase accuracy

12.Marker droppers that can drop a marker within a 6 in radius
 * A retention system that prevents the markers from being dropped prematurely
 * Negatively buoyant markers that readily sink
 * Fins to stabilize markers if needed

13. Complete control over linear movement and yaw
 * Position six thrusters for needed control

14. Minor corrective control over pitch and roll
 * Diving planes, fins, position of thrusters, or inherently stable

15. Corrosion resistant.
 * Corrosion-resistant materials such as stainless steel and plastics

16. Allow the sub to respond to keyboard input
 * Include program that will accept keyboard and act on keyboard input

17. Thrusters will respond to input from the sub
 * Program will activate the thrusters to execute a task

Sub Frame
The frame is constructed principally from extruded aluminum beams to which the various other components will be secured. The battery packs and the control system of the sub will be enclosed respectively in two waterproof cylinders. The external sensors and motors of the sub will be attached to the frame. All connections between power, control, and sensors will be done with cables running through through waterproof ports.

Thrusters
The sub is outfitted with six thrusters which will be able to control all movement in the xyz plane as well as roll (rotating around forward axis) and pitch/yaw (incline from fore to aft). The thrusters will be directly controlled by the microcontrollers based on commands sent from the PC.

Sensors
The sub is outfitted with numerous sensors including audio (three hydrophones), visual (four cameras), accelerometer, magnetometer (compass), thermometer, depth sensor, gyroscope. All sensors other than visual/audio, which feed directly into the PC, will be polled by a microcontroller at regular intervals. The microcontroller will create a packet with the sensor reading and device information which will be sent to the PC.

Grabbing Arms
The sub has two grabbing arms, each of which is controlled with a stepper motor; one in front and one on the bottom. The front claw also functions as the marker dropper. As the marker dropper tasks will be completed before the grabbing tasks, the arm will being at fully open and then as it closes will drop the first and then the second marker before closing fully. By telling the arm to close only a certain amount the dropping of the first and second markers can be controlled.

Control System
All sensor and motor functions within the sub are managed by PIC32 microcontrollers, with the exception of the visual and audio sensors which are fed directly to the PC. The PIC32 polls each sensor in series at times based on timer interrupts, packages the data with an identifying header and sends it to the PC through an I2C connection. The PC processes the data and the AI software identifies which motor commands are required. The command packet is sent to the PIC32s over in I2C bus. The packet contains a header specifying the target devices so that the microcontroller will know where to send it.

Movement Module Prototype
The movement module prototype is required to do the following to be useful to the system that was previously described:
 * Gather key events from a keyboard, including single key events, or a polling event in the case of a continuously held key.
 * Regulate the amount of events processed and data broadcasted as to not overload the socket communication module with too many requests. This feature is required to share the broadcaster and socket communication with the other parallel executing modules.
 * Evaluate the appropriate movement logic to execute a maneuver effectively.
 * Produce the required data to be broadcasted back to the micro-controller which will control the thrusters by providing a values to activate each thruster and the its power level.

User Input Movement Module: Tested
The user input movement module has been rewritten to integrate with the other python modules and the updated architecture.
 * Movement is now handled as X,Y,Z values over three fields: location, orientation, and velocity
 * The updated architecture has removed the broadcaster and now relies on inter-module communication handled by 0MQ and

a message process called the "grapevine" which communicates messages to the new logging module and others.
 * The new X,Y,Z values are contained within Python dictionaries with the intent of being more friendly to future implementation of automated movement and AI integration.