2025-2026 Software Subsystem Diagram
Goals
For our onboard software, our focus this year was primarily on improving aspects of our existing subsystems, particularly our object detection models.
For our robot controller, we had previously been relying on velocity control, which required additional complexity in other subsystems to achieve proper positioning. This year, we moved to using cascaded position-velocity PID controllers, keeping in place our existing design of assigning an independent controller to each degree of freedom of our robot. To test the real-life performance of our controller, we did pool testing in order to gather performance data and tune our controller parameters accordingly. To test, we would disturb our robot (either via a physical push, or by attaching additional buoyant material), then record our robot’s position and orientation error as it attempted to return to steady state.
Control diagram for a cascaded PID controller [1]
An example underdamped error curve observed during testing
Vision
For our vision software, building on last year's simulation pipeline, this year's efforts focused on aligning our synthetic training data with real-life conditions to better prepare the model for real-life competition conditions. On the rendering side, the Unity environment was enhanced with reverse projection caustics to produce the flickering light patterns characteristic of real underwater environments. Water clarity was also increased to better reflect competition water conditions.
To further close the gap between synthetic and real data, we experimented with Fast Fourier Transform (FFT)-based domain adaptation. By replacing the lower-order frequencies in our synthetic images with the lower-order frequencies of real competition images, we can better align the underlying color distribution of our synthetic images with the actual underwater footage [3]. By aligning our synthetic data with real data, we thereby reduce the visual shift the model would otherwise experience at competition.
This year, we trained our main vision model to identify the gate, bin, slalom, and tagging elements. In addition, we are developing a dedicated secondary model specifically for the torpedo task. This model operates exclusively within the torpedo target's bounding box as identified by the primary tagging detector, treating the cropped region as its input. This way, the secondary model can focus on the fine-grained spatial detail needed to reliably localize individual holes.
For vision testing, our testing set was kept entirely separate from both training and validation data, drawing primarily from video footage and images captured at last year's competition. Given that the core game elements have remained largely consistent between years (with exceptions), this footage provided us a strong real-world benchmark for evaluating model performance.
Fourier domain adaptation in action
A synthetic image from our dataset (with labels)
Other Improvements
Another subject of testing was our behavior tree-based mission manager. To test it, we used a series of prespecified inputs to ensure that the output behaviors matched our expectations. We tested several tasks/missions – for each mission, a prewritten set of inputs were provided, and the resulting commands from the mission manager were compared to our expectation. We also did some exploratory work integrating the Gazebo simulation suite into our testing process for proper physical simulation, though we have not yet incorporated simulated game objects.
Outside of these changes, another new addition this year was the integration of Docker, a software virtualization platform, into our testing framework. This has helped us greatly by allowing us to conduct any purely-software tests within a highly reproducible closed development environment. Notably, we did some exploratory work this year to integrate Gazebo, a physical simulation, into our testing process.
Groot, a BehaviorTree.CPP visualizer [2]
An image of our simulated robot in Gazebo
References
[1] A. M. El-Dalatony, T. Attia, H. Ragheb, and A. M. Sharaf, “Cascaded pid trajectory tracking control for quadruped robotic leg,” International Journal of Mechanical Engineering and Robotics Research, vol. 12, no. 1, pp. 40–47, Jan. 2023.
[2] “Groot2 | BehaviorTree.CPP.” Accessed: May 28, 2026. [Online]. Available: https://www.behaviortree.dev/groot/
[3] Y. Yang and S. Soatto, “FDA: Fourier Domain Adaptation for Semantic Segmentation,” presented at the Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2020, pp. 4085–4095. Accessed: May 26, 2026. [Online].