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!
==Detailed Specifications==
===Design Goals and Deliverables===
thumb|right
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
==Current Design==
===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.
===Torpedo Launchers===
The sub has two pneumatically controlled torpedo launchers pointing forward. They are actuated by signals from one of the microcontrollers. The compressed air canister that powers the launchers is situated so that it can be quickly and easily replaced.
===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.
==Team Members==
Picture	Bio	Discipline
center 	Chris Pratt:
 I'm a senior undergraduate and am dual majoring in mechanical engineering and math.
 I'm looking to go into graduate school to get a masters in robotics after I graduate.
 I have done robotics competitions in the past and have had a decent amount
 of experience with both programming and designing.	ME
center 	Ingrid Kooda:
 I’m a senior mechanical engineering student at the University of Idaho. I’ve had
 four previous internships: two at the Idaho National laboratory, one at the NASA
 Ames research center, and last summer I worked at BP Alaska. I’m fairly involved
 on campus working as a senior resident assistant in the residence halls. I serve
 as a senior rep for the Idaho branch of the American Society of Mechanical
 Engineers, the flight systems engineer for the Vandal Atmospheric Science Team, and
 the vice president of the Society of Women Engineers. I enjoy showing my dogs, skiing,
 fishing, and adventures.	ME
center 	Kyle Newell:
 I am a senior at the University of Idaho working toward my Bachelor of Science in
 Mechanical Engineering and will graduate in the Spring of 2014. I chose the field of
 mechanical engineering because I really enjoyed my math and physics classes in high school,
 and I wanted to further that knowledge and apply it to design projects. In my free time I
 enjoy biking, photography, listening to music, and cooking.	ME
center 	Michelle Spear:
 I'm a senior studying mechanical engineering at the University of Idaho. I've had two
 internships previously. The first was two summers ago where I was a production control intern
 for B/E Aerospace in Marysville, Washington. My second internship was last summer where I was
 an intern in the process and process safety group for BP in Anchorage, Alaska. Some of my hobbies
 include skiing, hunting, and flying airplanes.	ME
center 	Alex Rowson:
 I am a senior pursuing a B.S. in Electrical Engineering at the University of Idaho. For the past two
 years, I have been an intern with Avista Utilities working on a wide variety of tasks including GIS
 mapping, field work, and coding. I chose this project due to a personal interest in robotics. Most of
 my free time is spent playing music including classical guitar and electronic music production.	EE
center 	Sean Heagerty:
 I am a senior at the University of Idaho. I am expecting to graduate in May of 2014 with a computer science
 degree. I am originally from Kent, Washington, and my interests include videogames, studying history, watching
 movies/TV shows, and socializing.	CS
center 	Tanis Lopez:
 I am a computer science senior at the University of Idaho. I have previous experience on projects using
 software engineering and multiple computing languages. I hope to learn more about working with hardware
 while on the RoboSub team as well as be part of a team producing a better performing sub.	CS
==Appendices==
===Glossary of terms===
===Design Documents===
===Resources===
===External Links===
===References===