

Abstract
This project focuses on the design and development of a next-generation Remotely Operated Vehicle (ROV) built from the ground up at Potential Engineering, blending mechanical design, electronics, and autonomy. From architecting a ROS based controller using PixHawk and MavROS to implementing multimodal sensor fusion for underwater localization, this was an end-to-end challenge in harsh aquatic environments. My work spanned hardware prototyping, custom ROS-based architectures, thruster testing, and a web-based digital twin UI all aimed at pushing underwater robotics closer to reliable real-world deployment.
Introduction
Underwater environments are hostile to everything robotics relies on: low visibility, no GPS, no wireless communications, high drag, and constant hardware stress. At Potential Engineering, I led the software development of a full-stack ROV platform designed and built entirely from scratch. One that could handle these challenges while providing accurate localization, reliable control, and intuitive operator interfaces.

Motivation
PotROV was built for customers who needed reliable underwater surveillance and mapping in environments where humans simply cannot operate. Deep water, murky visibility, dangerous or inaccessible areas where sending a diver is either impossible or not worth the risk. The demand for this kind of capability is real across industries like infrastructure inspection, search and rescue, marine research, and defense. The challenge was building a platform robust enough to actually deliver on that promise in real field conditions, not just in a controlled pool.
System Overview
ROV Control
The control system was built around a PixHawk PX4 running MavROS, bridged into a custom ROS architecture that tied together every subsystem on the vehicle. CAN J1939 protocol was added for power monitoring and cross-system communications.
Key integrations:
DVL, SideScan Sonar, Ping360, and Bar30 depth sensor
VESC ESCs and thruster control
Power supply monitoring and management
Localization & State Estimation
Localization started with DVL-based dead reckoning and quickly ran into its limits in real water. Accumulated integration error over time, heading bias from the IMU, and DVL bottom lock loss in turbid conditions all compound into position drift with no absolute reference to correct against. The solution was expanding to full multimodal EKF sensor fusion, bringing localization error down from 3 meters to 1 meter, validated against ArUco marker ground truth in pool testing.
Sensors fused:
Doppler Velocity Log (DVL)
Onboard IMU
Bar30 Pressure Sensor
On top of state estimation, a PID-based stabilization system used real-time roll, pitch, and yaw data for closed-loop control. This actively counteracted external disturbances and thruster noise across three axes, meaningfully improving hover stability and station-keeping performance in turbulent water.
Software Architecture
The ROS control stack was the backbone of everything running on PotROV. I designed and implemented the full communication architecture handling:
Sensor integration across all onboard systems
Thruster feedback loops via VESC
Power pack monitoring (J1979 CAN Protocol)
Control systems and exception handling
The Control module supported four modes of operation:
Manual mode with joystick control
Stabilized mode with IMU-based disturbance rejection
Position Hold and Depth Hold via PID control
Waypoint Navigation leveraging DVL dead reckoning
Before any behavior went into the water it was validated in OpenROV, a custom underwater simulation environment built in ROS using UUV Simulator. This let us catch navigation and search behavior failures in simulation before committing to hardware testing.
The operator-facing side of the stack was PotOS (Currently Not included in Production), a fully custom ground control station built using Flask, Python, React, and ThreeJS. It consolidated every subsystem into a single interface:
Live camera feeds with real-time telemetry overlay
3D digital twin synced to real vehicle orientation
Per-thruster VESC telemetry
Dual power monitoring across 1000 meters of tether
Real-time Ping360 and Cerulean SideScan Sonar visualization
Real-time fault detection and operator alerts
Built-in terminal for on-the-fly debugging
Buoyancy Testing:
Electronics Stack
Sensing
Water Linked DVL A50 for velocity based positioning
Ping360 sonar for 360 degree acoustic scanning
Cerulean OmniScan for side scan acoustic imaging
ZED 2i Stereo Camera for depth perception
1080p Camera for live video feed
Compute
Jetson Nano for high level compute and ROS
Pixhawk PX4 for low level thruster and sensor control
VESC (Vedder ESC) for per-thruster motor control
Arduino UNO for auxiliary I/O
Thrusters
Flipsky Brushless DC Motors
Power Management
The power system was built around a high voltage DC supply stepping down from 800V at 5A to 22V at 150A through a 4000W SMPS switching power supply, controlled over J1939 CAN protocol. This architecture allowed stable high power delivery across 1000 meters of tether while maintaining the ability to monitor and adjust power remotely from the ground station. Buck converters handled final voltage regulation to individual subsystems. We also had a switchable bottom container containing a custom battery pack for backup power.

Pipeline Diagram
Pixhawk PX4 + MavROS → Thruster control and low level sensor feedback
Sensor Suite (Water Linked DVL A50, Ping360, Cerulean OmniScan 450ss, ZED 2i, Bar30)
ROS Communication Layer → Synchronizes data across all subsystems on the Jetson Nano
Digital Twin UI (React + Flask + ThreeJS) → Operator visualization and monitoring via PotOS
ROV Hardware → Real-time actuation and closed loop feedback
Thruster Test Bench
One of the key pieces of hardware I developed was a thruster benchmarking test bench. I designed and built a modular but low cost rig to mount and test different thruster models instrumented with sensors to measure thrust, torque, and power draw. The bench was used to compare commercial thrusters against in-house 3D printed designs developed by the team, evaluating Thrust and Power Draw. The data from these tests directly informed the final thruster selection on PotROV, eliminating guesswork and reducing wasted cost on underperforming units.
Results
Reduced localization error from 3 meters to 1 meter through EKF-based fusion of DVL, IMU, ZED 2i, and Bar30 sensor data
Built and validated a thruster test bench comparing commercial and in-house 3D printed thruster designs
Deployed PotOS as a fully functional ground control station with live digital twin, sonar visualization, and real-time telemetry
Successfully integrated a multi-sensor ROS architecture including J1939 CAN-based power monitoring across 1000 meters of tether
Underwater mapping was scoped and the sonar integration was completed but full mapping capability was not achieved within the project timeline
PotOS
PotOS is the nerve center of the PotROV platform. It is a fully custom-built ground control station engineered to give operators complete situational awareness across every subsystem of the vehicle. Designed for real operational conditions, it consolidates live sensor feeds, power telemetry, acoustic sonar, autonomous navigation, and vehicle state into a single unified interface. Whether running a manual dive or executing a fully autonomous waypoint mission, operators have everything they need to stay in control through 1000 meters of tether.
PotOS was built entirely from scratch using Flask, Python, React, and ThreeJS.
One thing worth noting: the UI screenshots shown here are running on mock data. Full hardware integration was validated during pool and lake testing.


Features
Live camera feed with real-time telemetry overlay
Dual power monitoring tracking supply from the ground station and power delivered to the ROV through 1000 meters of tether
Per-thruster thrust readout via VESC motor controllers
Speed, depth, and DVL-based velocity displays
Compass for continuous heading reference
Ping360 sonar feed for 360 degree acoustic scanning
Cerulean SideScan Sonar feed for lateral seabed imaging
Waypoint navigation using DVL dead reckoning for autonomous mission planning and execution in GPS-denied environments
3D digital twin rendering live ROV orientation in the browser
Exception handling with real-time fault detection and operator alerts
Built-in terminal for direct system access and on-the-fly debugging
Conclusion
Building PotROV from the ground up taught me that real systems fail at the boundaries between subsystems, not inside them. The ROS node works in isolation. The sensor works on the bench. The thruster calibration is perfect on dry land. It is only when everything runs together underwater, through 1000 meters of tether, with no GPS and no wireless fallback, that you find out what the engineering is actually worth. Every problem we solved on PotROV made me a better systems engineer, and that is something no simulation can replicate.




