Project 03
Tethys Robotics
Visual SLAM for underwater robotics
- Project
- Tethys Robotics
- Role
- Bachelor's thesis
- Organisation
- Mobile Robotics Lab, ETH Zürich · Tethys Robotics
- Period
- Autumn 2025
- Dwg no.
- CVW-03
- Rev
- B

1Problem
Once submerged, a robot has no GPS. Underwater platforms therefore rely mostly on acoustic navigation — USBL, Doppler velocity logs, sonar — which works, but is costly, depends on the environment and offers limited spatial resolution.
Cameras are compact, cheap and already on board most inspection robots. The catch is the imagery: turbidity, scattering, blur and a strong blue-green cast reduce contrast and texture, which is exactly what visual tracking depends on.
The question of the thesis: is monocular visual SLAM reliable in underwater scenarios, and how can its robustness be improved under real operating constraints?
2My role
Bachelor's thesis at the Mobile Robotics Lab, ETH Zürich (Prof. Dr. Stefan Leutenegger), in collaboration with Tethys Robotics, building on the SWARM focus project.
I reviewed visual SLAM methods for underwater suitability, built an underwater-adapted monocular pipeline on ORB-SLAM3, integrated a learned feature front end, and evaluated it against ORB-SLAM3, SuperPoint and DROID-SLAM on underwater sequences from Tethys Robotics.
3System overview
Raw monocular frames are converted to grayscale, enhanced with CLAHE (contrast-limited adaptive histogram equalisation) and passed to a SuperPoint-style feature extractor running UFEN weights. UFEN — Underwater Feature Extraction Network — distils SuperPoint into a model trained for underwater degradation; here it is used as a drop-in replacement for the SuperPoint weights.
The network runs as a TorchScript model on the GPU. Its 256-dimensional descriptors are binarised and packed into 32 bytes so the unchanged ORB-SLAM3 back end — Hamming matching, tracking, local mapping, loop closing — can consume them. Non-maximum suppression keeps a capped set of strong, well-spread keypoints.
- 01Input frames
- 02CLAHE contrast enhancement
- 03UFEN extractor
- 04Tracking & keypoint matching
- 05Local mapping
- 06Loop & map merging
- 07Pose estimation
| Parameter | Value | Note |
|---|---|---|
| Base framework | ORB-SLAM3 | Fork: SUPER_SLAM3 |
| Camera setup | Monocular | |
| Pre-processing | CLAHE | Local, clip-limited contrast enhancement |
| Feature extraction | SuperPoint-style network with UFEN weights | TorchScript on GPU |
| Descriptors | 256-d, binarised to 32 bytes | Compatible with ORB-SLAM3 Hamming matching |
| Baselines | ORB-SLAM3 · SuperPoint · DROID-SLAM | |
| Datasets | 3 underwater sequences from Tethys Robotics | Repmus Motorbike, Oceanpact Box, Orsted Encirclement |
| Reference | Photogrammetry-based trajectory | |
| Metric | Mean absolute pose error (APE) | After Sim(3) Umeyama alignment, evaluated with evo |
4Key decisions & trade-offs
- 4.1
Build on ORB-SLAM3, not a learned SLAM system
In initial validation on the underwater sequences, ORB-SLAM3 tracked more stably than DROID-SLAM. Learned SLAM can reach high peak accuracy when deployment matches its training data, but it degrades under domain shift and needs more compute. On the monotone, low-texture Orsted Encirclement sequence DROID-SLAM diverged (mean APE 1.513 m). So the robust ORB-SLAM3 back end stays, and only the most sensitive stages — pre-processing and feature extraction — are changed.
- 4.2
CLAHE before feature extraction
Attenuation and scattering wash out local contrast, which hurts keypoint repeatability. CLAHE equalises contrast per tile and clips the histogram so it does not amplify noise and backscatter. With UFEN weights fixed, enabling CLAHE cut mean APE by about 24 % on Repmus Motorbike and 16 % on Oceanpact; on Orsted Encirclement it made no measurable difference.
- 4.3
UFEN features instead of ORB
The feature front end is the main sensitivity point underwater, so it is swapped while the back end stays fixed to isolate its effect. Non-maximum suppression favours fewer, better-distributed keypoints over ORB-SLAM3's larger feature budget. The trade-off showed in the results: the learned front end won on Oceanpact but not everywhere, and it requires a GPU.
- 4.4
Binarised descriptors to reuse the back end
SuperPoint-style descriptors are continuous, while ORB-SLAM3 expects binary ones. Binarising and packing them into 32 bytes keeps Hamming matching and every downstream module unchanged, instead of rewriting the SLAM system around a new descriptor type.
5Results
- Monocular visual SLAM is feasible underwater in structured, sufficiently visible scenes; reliability drops under low contrast, blur and repetitive appearance.
- The UFEN + CLAHE pipeline achieved the best result on Oceanpact (0.0478 m vs. 0.0488 m mean APE for ORB-SLAM3) and stayed close to ORB-SLAM3 on the other two sequences.
- Classical feature-based pipelines held up better than learned SLAM under typical underwater conditions; DROID-SLAM failed on Orsted Encirclement.
- Next steps: fine-tune the feature extractor on representative underwater data, and add inertial or stereo sensing to resolve monocular scale and reduce drift.
| Method | Repmus Motorbike | Oceanpact | Orsted Encirclement |
|---|---|---|---|
| DROID-SLAM | Repmus Motorbike0.072 | Oceanpact0.212 | Orsted Encirclement1.513 |
| ORB-SLAM3 | Repmus Motorbike0.042 | Oceanpact0.049 | Orsted Encirclement0.180 |
| SuperPoint | Repmus Motorbike0.065 | Oceanpact0.052 | Orsted Encirclement0.237 |
| UFEN + CLAHE (ours) | Repmus Motorbike0.047 | Oceanpact0.048 | Orsted Encirclement0.198 |
| Front end | Repmus Motorbike | Oceanpact | Orsted Encirclement |
|---|---|---|---|
| UFEN | Repmus Motorbike0.063 | Oceanpact0.057 | Orsted Encirclement0.197 |
| UFEN + CLAHE | Repmus Motorbike0.047 | Oceanpact0.048 | Orsted Encirclement0.198 |


