All of Defiance’s high level functionality, including completing the obstacle tasks, image processing and object detection, serial communication, mission planning, 3D modeling and animation, and navigation are accomplished through the vehicle’s software system.
These functions are implemented in our customizable graphical user interface (GUI). It is built upon a Windows 7 Professional PC and is primarily written in Python, with other features using the C programming language.
The software system uses an ASUS mini-ITX motherboard equipped with an Intel i7-4790k Quad-Core Processor, 8GB of Memory, and a 256GB SSD. The computer’s size makes it efficient for space management in the main hull and the fast processor allows for seamless execution of the software GUI.
Our GUI is customazible, user-friendly, and allows team members to: create user profiles, customize graphic gauges, select parameters for image processing and mission planning, manually control the vehicle, communicate with our embedded systems, and display a 3D model of the vehicle in its environment.
It also displays gauges of Defiance’s status.
Defiance uses image processing to run through the obstacle course autonomously, which is accomplished with the GUI using OpenCV and Python. Our team develops algorithms for detecting objects that contain a specific hue, saturation, and value, as well as a certain number of contours.
Our mission planner can choose from a list which missions Defiance executes, what order it executes them in, and have users enter in various parameters for each task by having predefined blocks of code written for each mission.
Embedded Device Communication
The communications tab makes for easy debugging as it allows us to automatically see which PIC24F boards are connected to the PC and send various commands to the embedded devices that a user can select from a list.
control & navigation
To accurately control and navigate the sub underwater, the DVL, Pressure Transducers, and AHRS’s are used to create a closed loop control system. PID controllers are used to prevent overshoot as well as keeping the vehicle on track if it gets off course.
The console log is responsible for various sensor readings or general data display in the GUI. It allows users to select what data they are interested in displaying in live time to the GUI console.
The roboclaw tab allows the sub to control a four degree of freedom robotic arm by interfacing with its servos using a half-duplex universal asynchronous receiver/transmitter.
The user controls the claw’s movement by changing x, y, and z coordinates or changing the angles between the servos.