# Using VO with EKF in Ardusub

**URL:** <https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574>\
**Category:** ArduSub\
**Created:** [March 6, 2026, 7:52am UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574 "2026-03-06T07:52:42Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Haadi](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@Haadi](https://discuss.bluerobotics.com/u/Haadi)\
**Post date:** [March 6, 2026, 7:52am UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574/1 "2026-03-06T07:52:42Z")

</div>

Hi! Me and my team are actually trying to use the EKF implemented in Ardusub to get a telemetry for our AUV. We are actually thinking of using VO to provide inforamtion as update step for the EKF. But I am currently not able to know where to start from? Can anyone please provide some guidance who has done this earlier? Like direct me to an already existing thread that tackles this problem or outline an approach that I should follow? I have a 9-axis IMU too. And for starting, we are currently trying to experiment with various VO algorithms available to test which of them work well underwater.  
All kinds of approaches and advices are highly appreciated and would be crucial!

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/18385_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [March 6, 2026, 3:51pm UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574/2 "2026-03-06T15:51:08Z")

</div>

Hi @Haadi -  
I don’t know what “VO” is- perhaps visual odometery? It’s always a good idea to spell out acronyms!  
Not a lot had been done with AUVs and ArduSub, I made a [vertical profiling one recently but things like control surfaces are not natively](https://youtu.be/ALsI3aQH8dU?si=MnV8LIZgZI6eaCO-) supported yet …

---

<div class="post-metadata">

**Author:** ![Haadi](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@Haadi](https://discuss.bluerobotics.com/u/Haadi)\
**Post date:** [April 1, 2026, 4:52pm UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574/3 "2026-04-01T16:52:27Z")

</div>

I am so sorry for getting back after so many days. I got busy with my academic committments. Yeah, I meant Visual Odometry by VO. I am sorry I’ll take care next time.

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [April 1, 2026, 7:25pm UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574/4 "2026-04-01T19:25:08Z")

</div>

Hi @Haadi,

ArduPilot’s [Non-GPS Position Estimation](https://ardupilot.org/dev/docs/mavlink-nongps-position-estimation.html) docs may be worth a read.

I’m unsure whether all such features are available in ArduSub, but I’m at least aware that BlueOS Extensions like [this one](https://github.com/bluerobotics/BlueOS-Water-Linked-DVL/tree/master) make use of MAVLink’s [`VISION_POSITION_DELTA`](https://mavlink.io/en/messages/ardupilotmega.html#VISION_POSITION_DELTA) message to integrate a DVL (an acoustic velocity-measuring / positioning device).

[Searching the forums](https://discuss.bluerobotics.com/search?expanded=true&q=visual%20odometry) may also yield some insight into what others have tried before 🙂

---

<div class="post-metadata">

**Author:** ![Haadi](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@Haadi](https://discuss.bluerobotics.com/u/Haadi)\
**Post date:** [April 4, 2026, 8:28am UTC](https://discuss.bluerobotics.com/t/using-vo-with-ekf-in-ardusub/22574/5 "2026-04-04T08:28:56Z")

</div>

Thank you so much for your response. I’ll surely look into it.
