Project Overview
Mission Statement
“Team Kanaloa shall complete two or more challenges in the upcoming December 2020 RobotX competition at Sand Island to promote maritime research and development of autonomous robotics for the University of Hawaiʻi at Mānoa.”
Organizational Structure
- Project Manager (PM) – Responsible for managing the project’s time budget. The PM organizes and follows a detailed plan to ensure the project is running on schedule. The goal of the PM is to get the job done on time.
- Systems Integrator (SI) – Responsible for the integration between subsystems. The SI forms a bridge of communication between each subsystem, and ensures that all components and modules work together without issues.
- Chief Engineer (CE) – Responsible for managing the project’s performance budget. Power, mass, and error budgets make up the performance budget. The CE allocates power and mass budgets to each subsystem, and enforces the error budgets to achieve the desired performance.
- Financial Manager (FM) – Responsible for managing the monetary budget. The FM organizes funding opportunities, and tracks the spending allowance of each subsystem.
- Subsystems
- Mechanical – Provides the structural support needed to secure all components.
- Hardware – Handles the operation and control of all electrical equipment.
- Sensor Fusion – Interprets and processes data gathered from sensors to develop an autonomous system.
Objectives
- Objective 1: Develop and Implement a GNC system
- Objective 2: Object Detection, Classification and Avoidance
- Objective 3: Color Recognition
- Objective 4: Stationkeeping
Technical Overview and Developments
Software
The WAM-V utilizes Robot Operating System (ROS), an open-source operating system for the team’s software platform. ROS allows the team to use drivers and packages that are already developed and add onto it, alleviating the amount of programming needed for the WAM-V.
Color Recognition
Our color recognition program is powered by the OpenCV2 (Open Source Computer Vision Library) environment, and is written in Python. Python and OpenCV2 were chosen due to the ease of programming that comes with Python and the vast array of documentation for OpenCV. The code itself subscribes to a node from our Neural Network that publishes the bounding box coordinates of the object. Integration with a neural network was chosen to reduce the error of the color recognition program labeling the wrong item. ROS subscribes to these coordinates and the code identifies color in the image through HSV thresholding. A color label is then applied to the object that was detected by the Neural Network. For example the Neural Network will identify a buoy and color recognition will label it as a green buoy because of the large amount of green pixels it sees within the bounding box.
A simulation of the RobotX competition on the platform Gazebo was used for testing. The simulation, Virtual Maritime RobotX Competition (VMRC), contains a model of the WAMV used at competition, sensors such as cameras, GPS, and IMU, and obstacles found at the competition. Most importantly is the “Scan the Code” obstacle: the light buoy. VMRC’s light buoy can be programmed to display any color or pattern of colors; which can be then captured by the simulated camera attached to our WAMV into a compressed image format. This simulated data was ideal for testing because of its ease of programming and availability.
The camera’s used for this, and other vision software on the WAM-V, were Logitech HD Pro Webcams. These were chosen due to their low price and USB compatibility. A ROS package, usb_cam, creates a node that interfaces with usb cameras and can publish image data to the onboard computer. This image data can then be sent to a second package, image_transport, which turns the raw image data into a compressed format. Compressing the images allows for less bandwidth being used over the wireless communication system and smoother live data at the ground station.
Image Recognition
The Image Recognition code is being developed in YOLO. Chosen because we were able to get a Neural network running on it. An alternative was Tensorflow but they are transferring to tensorflow v2 which currently has a lot of broken packages. The team decided to use an R-CNN detector, which allowed them to train a neural network with images of the competition’s buoys and light totems. We retrieved the images from the Virtual RobotX environment. The detector returns the location of the objects with a labeled bounding box.
Robot Localization
The Robot localization code was developed in ROS. A ROS package called robot_loclization, meant to fuse multiple sensors from the sensor suite, 2 IMUs and a GPS, attached to the WAMV. The data is run through an extended Kalman Filter to produce a pose state estimate of the WAM-V’s position, orientation, linear and angular velocity. Once the code is activated its position at that time is used for the origin of the local and map frame for the code.
Waypoint Navigation
The Waypoint Navigation code is being developed in python, and designed to communicate with ROS. The position, orientation and velocity of the WAM-V is published in ROS; the python code creates its own ROS subscriber to receive this data. The code also creates publishers to the motor inputs and goal inputs in ROS. The goal inputs are simply the x and y position and orientation desired for the WAM-V.
Once the code has its odometry data it calculates the error in position and orientation; as well as the distance, in length and arc, to the goal inputs. From these errors the WAM-V is determined to be in one of 6 states. These states can be set into two main categories: facing correct heading or not. Each of these categories are then broken into sub-categories: outside approach radius, inside approach radius but outside goal radius, and inside goal radius. First the code rotates the WAM-V to face the goal. Then the code is set to drive the WAM-V forward and control the path heading toward the goal. Once the WAM-V is within the goal radius and facing the correct heading the code cuts off the thrusters. The radiuses can be adjusted depending on the precision of movement of the WAM-V and accuracy of the sensors. As of right now based on the accuracy of the GPS the goal radius is set to 3 meters. The code controls the speed of the WAM-V by sending messages for the thruster’s voltages to the Arduino controlling the propulsion system.
Hardware
Since the WAM-V returned to the lab in February, the hardware team has focused on repair and maintenance of all of the onboard electronics. This includes documenting the changes in hardware that took place before the Rhode Island & Portugal trip, checking for rusted cables/ports, reconfiguring modems, and recharging any remaining functional batteries. One pressing issue that came in Portugal was difficulty having our high and low current boxes communicate via I2C over distances that would cause noise in the system that renders the data unreliable. This problem is further complicated by having different ground potentials between the high and low current sides of our electronics. This issue is currently being addressed with a full solution on its way.
Mechanical
Maintenance
The WAM-V returned to the lab from an overseas demonstration, but due to the length of time it spent away from the lab, components such as the bolts in the pontoons, modular mounting rack, and thruster mounts, as well as some parts of the modular mounting rack’s structure were corroded and needed to be replaced. A list of everything that required maintenance was compiled and subsequently repaired and replaced. Marine grease was also applied to applicable components such as fasteners and motor shafts in order to resist corrosion in the future.
Propulsion
The WAM-V’s differential drive consisting of two 80 lb thrusters enabled the vessel to move quickly in the surge direction, but with limited yaw and no sway. This configuration was changed in favor of a holonomic drive consisting of four 80 lb thrusters in order to provide the WAM-V with the ability to move with three degrees of freedom and with a tighter turning radius to allow for precise maneuverability at the cost of some additional propulsion in the surge direction. The thruster configuration that was decided upon for the holonomic drive consisted of two thrusters at the back of the WAM-V and mounted to the buoyancy pods, as well as two thrusters at the front of the WAM-V. The forward thrusters were supported by an aluminum rail spanning across both pontoons, with the thrusters themselves mounted on sliders attached to each pontoon. The sliders would allow the thrusters to be locked into position when it was in the water, and shifted upwards when the WAM-V was being transported over land, which allowed the whole system to be moved from place to place much more easily, as well as providing a precise and repeatable method of bringing the thrusters into place while still remaining durable enough to withstand the forces acting upon the thrusters and its mounts when operating in the ocean.
Schedule and Finance
Gantt Chart
Budget
FUNDING AWARD | PROPOSED FUNDS | STATUS | DATE COMPLETED |
UHM Undergraduate Research Opportunity Program | $4,960 | Denied | 03/03/2020 |
ASUH | $750 | In-Progress | 02/18/2020 |
Fundraisers (i.e. Krispy Kreme, Pandas, etc.) | $3000 | To-Do | N/A |
College of Engineering Funding Opportunity | $2,000 | At hand | N/A |
TOTAL | $10,710 |
Team Members
Leads
- Paul Baessler – Project manager, Hardware Subsystem Lead
- Dominic Gaspar – Subsystem Integrator
- Paula Penullar – Finance manager
- Gian Carla Lazo – Chief Engineer
- Jordan Dalessandro – Sensor Fusion Subsystem Lead
- Tyler Wilfhart – Mechanical Subsystem Lead
Sensor Fusion Subsystem
- Jordan Dalessandro – Lead
- Judy Phan
- Marisa Matsuo
- Alexandra Makaiau
- Tiffany Williams
- Tyler Higashionna
- Anh Le
- Jin Wu
- Jeff Wong
Hardware Subsystem
- Paul Baessler – Lead
- Paula Penullar
- Matt Bowers
Mechanical Subsystem
- Tyler Wilfhart – Lead
- Thomas West
- Gian Lazo
- Micah Dela Cruz
- Kekoa Data
- Le Yang
Cooperating Graduate Student
- Kai Jones
Advisor
- Dr. A Zachary Trimble
Contact Us
How to contact us
Looking to contact us? Send an email to our advisor Dr. A Zachary Trimble at atrimble@hawaii.edu or our PM, Paul Baessler at baessler@hawaii.edu