Classes for Adding External IMU and Navigation Data

Hi All!

After looking around the ArduSub forums and code!! I have not been able to find a solution!

We would like to make a small ROV and would like to use the ArduSub pilot for all the vehicle controls, however we would like to use an external IMU system which will provide a nicely filtered attitude estimation as well as an improvisation for dead reckoning.

The data will come in over ethernet, and we are using a RPi to process the data and maybe a PixHawk or something else for the motor control (not entirely sure just now).

Anyway, I have been looking over the ArduSub code and have been trying to find the point at which I can override the internal EKF/AHRS calculations. I have been looking/testing for far too long now with no success, I can get the data in to where I think it should go but the gauges in QGC dont respond. (Ive not tested the motor output just yet)

So I am wondering does anyone know at which point a can sneakily change to the classes to inject our data? Im hoping to add Roll, Pitch, Yaw, Position (x,y,z) from arming, their velocities, eventually a current direction and speed of current ect.

Thank you very much, all input is appreciated!


Hi Tom,

Thanks for the post. I’m not familiar with a way to do this, unfortunately. I think it might be worthwhile to ask on the main ArduPilot forums. There are a lot more developers there and I’m sure there is someone who has done something similar.


Hi Tom,

I’m also interesting in adding an external IMU for the Bluerov2, do you have any news on how to do this?


See here: External IMU with pixhawk