RoboBoat 2025 > Software
RoboBoat - Software
Overview
We leveraged lessons learned from RoboSub 2024 and RobotX 2024 to overhaul our RoboBoat codebase, creating a wholly new software system. We shifted from using ROS/ROS2 as our communications system to python threading, to maximize the amount of developer control over data accessibility from our various sensors. We split our software architecture into three main stacks: API (Application Programming Interface), perception, and GNC (Guidance, Navigation, Control), which can be modified independently of one another. This decision was made to enable future team efforts to scale up our sensor packages and/or increase the number of actuators on the ASV without having to radically change our general architecture. To see our entire codebase, visit our open-source GitHub.
High-level software execution stack of Barco Polo for RoboBoat 2025.
API Stack
The API stack consists of a series of APIs which independently access a specific sensor or actuator. In the case of sensors, data is collected. In the case of actuators, the API simply creates a connection to the microcontroller which controls the actuator, and waits for a command from the GNC stack to fire signals through the microcontroller, thereby actuating the intended servo.
API Stack Architecture. Note that each API is specialized for one type of device.
The perception stack handles the processing of data from sensors to perceive which objects are located in Barco Polo’s environment. Barco Polo’s current perception capabilities entail running YOLOv8 (You Only Look Once) models on Barco Polo’s cameras. The team uses RoboFlow to create high-quality datasets for training purposes, and models are trained using Ultralytics’s Google Colab Notebooks. In the future, the team would like to implement Light Detection and Ranging (LiDAR) capabilities, using an occupancy grid to further enhance our ASV’s situational awareness.
Perception Stack
Perception Workflow Stack. Team Inspiration uses two separate workflows — one to train the Machine Learning (ML) models used, and the other to run the model on real-time camera streams.
GNC (Guidance, Navigation, Control) Stack
The GNC stack consists of three substacks: the Guidance substack, the Navigation substack, and the Control substack. The Guidance sub-stack contains a mission planner to determine the order of mission completion based on mission importance and time elapsed in a given mission. The Navigation sub-stack utilizes differential Global Positioning System (GPS) to track Barco Polo’s position and heading, while the OAK-D Long Range PoE Camera has a stereoscopic capability that obtains the distance of nearby objects from the ASV. This allows the sub-stack to maintain an internal map of the course and make waypoint calculations. The Control sub-stack utilizes a Kalman filter to calculate Pulse Width Modulations (PWM) based on GPS and Inertial Measurement Unit (IMU) data. This assists with waypoint navigation and station keeping.
Diagram of the interconnections of the GNC substacks and how they integrate with the rest of the software system. Note the task separations for the navigation, guidance, and control stacks.
Remote Testing
This season presented unique challenges for the team, as for the first time in Team Inspiration’s history, our core software team was located on the West Coast of Florida. In order to test software on Barco Polo, located at our home lab in San Diego, California, it was vital to create a new remote protocol for team members to conveniently access Barco Polo’s computer via Secure Shell (SSH) protocol to validate packages. Our solution was a novel private Mesh Virtual Private Network (VPN) to remote base station setup: We used Tailscale’s VPN (a tailnet) as a medium to connect a Raspberry Pi 3B+, located in San Diego, with a developer’s computer. The Raspberry Pi is used as a jumping-off point in order to SSH with Barco Polo’s computer, the Jetson Xavier NX. The setup allowed any member with a solid WiFi connection, no matter where in the world, to download and run software on Barco Polo.
Team Inspiration’s VPN setup supporting remote software development.