Computer Science
Our computer science department is responsible for all of the systems that navigate the boat. We use a depth-sensing camera to detect buoys and other obstacles, GPS to make sure that we're always on the right course, and LiDAR to detect obstacles in the water. We also have various other sensors to detect movement, heading, and other important data. We use Python and ROS2 to control the boat and process the data from the sensors. We have a CV model that we use to detect buoys and other obstacles. To make the CV model, we use Roboflow to label the data and then we use transfer learning to train the model on top of YOLOv11s. The LiDAR data is clustered to detect obstacles in the water. Once we have our CV and LiDAR data, we detect the angle and distance to the buoys and obstacles to correlate what our camera sees with what our LiDAR sees. We then use this data to navigate the boat around the obstacles and to the buoys.
mhsboat_ctrl
This is the control system for the MHSeals boat. It is built on ROS 2 Humble and Ubuntu 22.04, and requires Python >= 3.8. We use custom messages for communication between nodes.
Principles
- Boat-Centric Coordinates: All coordinates and movements are relative to the boat, simplifying calculations and ensuring consistency.
- Modularity: The system is modular, allowing for easy addition and modification of tasks.
- Simulation Support: The system supports running in simulation mode for testing and development without physical hardware.
Task System
Tasks are modular and live in the mhsboat_ctrl/tasks
directory.
Each task is a separate class that inherits from the Task
class
in mhsboat_ctrl/tasks/task.py
. Tasks are automatically
detected and loaded by the control system.
Main Loop
The main loop of the control system is in mhsboat_ctrl/mhsboat_ctrl.py
. It searches for the next task to run, runs it, and repeats. Tasks use
sensor data to make decisions.
Sensors
The Sensors
class in mhsboat_ctrl/sensors.py
subscribes
to various sensor topics and processes the incoming data for use by tasks.
Simulation
To run the control system in simulation mode, pass the use_simulated_map
and map_file
parameters to the mhsboat_ctrl node.
Computer vision model detecting buoys