RobotX - Sub Software
RobotX 2026 > Sub Software
Architecture
Our codebase is developed in Python and organized into modular components for scalability and maintainability. The primary modules include Sensor Core, Localization Core, Robot Control Core, and Mission Planner Core. We utilize the Robot Operating System (ROS) to facilitate interprocess communication across these modules.
Sensor data from the IMU (Inertial Measurement Unit), FOG (Fiber-Optic Gyroscope), DVL (Doppler Velocity Log), and barometer are published to ROS topics and received by the RobotControl class via custom APIs. This data, combined with PID (Proportional-Integral-Derivative) controllers, determines the appropriate directional and magnitude commands for both translational and rotational movements. These commands are published to a MAVROS topic and interpreted by the flight controller, which converts them into PWM (Pulse Width Modulation) signals for the thrusters.
Click on image to zoom in!
Localization & Navigation
Filtered dataset of acceleration vs time
Our navigation algorithm mirrors real-world mission planning by dividing the competition field into a grid and executing a predefined sequence of movements. Translational motion is monitored using a DVL, while the IMU and the FOG provide accurate azimuth heading data.
This system enables the UUV to travel to the vicinity of each mission target, where it relies on onboard cameras to detect objects within its limited range. Upon arrival, the UUV initiates a search routine by yawing within a defined angular sweep relative to the expected target position.
The VectorNav IMU is integrated into our software system using its official Software Development Kit (SDK). To enhance data accuracy, we performed bench-top evaluations simulating thruster-induced vibrations using MATLAB. These experiments verified the effectiveness of a single-stage, low-pass Finite Impulse Response (FIR) filter, which we subsequently implemented in the UUV software.
Computer Vision (CV)
Running Computer Vision on remote control footage.
We developed a robust object detection system leveraging OpenCV and YOLOv26 (You Only Look Once, version 26). Given the challenges posed by underwater environments—such as fluctuating sunlight angles and pervasive blue hues—we prioritized shape and pattern recognition over color-based methods, which tend to be less reliable under these conditions.
To streamline the training process, we implemented HSV (Hue, Saturation, Value)-based color segmentations. This enabled rapid generation of training data and improved detection accuracy in complex lighting environments.
Mission Planing
Our strategy for Task 2 (Infrastructure Survey and Repair) involves communication between all three vehicles. The bottom and forward facing cameras of the UUV are active throughout the mission, tracking a bright LED beacon installed on the USV’s underside to follow it through the buoy field. Once at the correct site, the UUV utilizes computer vision (CV) to locate the pipeline, identify the damaged red section, and perform the repair.
After repair is complete the UUV uses CV to detect what color the pipeline begins flashing. The sub surfaces above the pipeline to report the color sequence to RoboCommand, and sends the sequence to the UAV via the USV acting as a relay, so the UAV can retrieve the correct tin and deliver it to the matching color circle.
Testing
We followed a systems engineering approach, breaking down mission requirements into simple components to structure our testing. Unit and component tests—conducted via in-air and bench setups—enable quick validation before integration. Subsystem tests assess individual functions or simple missions (e.g., Coin Toss), while system-level tests evaluate full mission sequencing and sensor integration.. Check out our RobotX Testing Page for more details!