DVL position message (mavlink LOCAL_POSITION_NED) is not published

After a little while after starting the ROV, the position based on Dead Reckoning by DVL and IMU in the ROV should be displayed as a mavlink message on the QGC, but often it is not displayed even after waiting for a long time. (sometimes correctly displayed position message)

What could be the cause?
Is there a solution?

Is this occurring while the DVL has a lock, and is reporting valid velocity measurements in the DVL page? If you haven’t checked that, my guess would be that it just doesn’t have a lock on the bottom, so the vehicle can’t send position updates.

Also make sure the relevant parameters are set, although I don’t expect that’s the issue since it’s apparently working correctly sometimes.

When I access the DVL page the velocity is not valid, the DVL is fixed on the bottom of the vehicle.

I have verified that the parameters are set correctly.

Is the reason why the velocity is not valid is because it is not stable in the air due to the difference between underwater and the speed of sound, as we have now confirmed that it works in the air?

If the velocities are invalid it won’t send position updates (because they can’t be trusted).

I don’t understand what you mean by this. A “lock” for the DVL is when it’s getting consistent readings from the surface it is measuring against. Are you saying you’re pointing your DVL at the vehicle and it achieves a lock while doing that, or are you just stating how the DVL is mounted on the vehicle?

I have no idea if the Water Linked DVL would work (at all) in air - I’m not sure how the transducers are manufactured, and don’t know whether there would be algorithmic issues when handling the very different speed of sound.

If the DVL has a poor lock while in water then it’s generally because the surface it’s reflecting against is either a poor reflector (e.g. density similar to water), too far away, or reflecting all the sound away from the DVL (e.g. a smooth spike underneath it).