Waterlinked UGPS and DVL driver potential conflict

The DVL extension backend can send either VISION_POSITION_DELTA or VISION_SPEED_ESTIMATE MAVLink messages to the autopilot. Speed estimate messages make the most sense (since it’s what the DVL is actually measuring), but there’s an issue with the MAVLink2REST mechanism currently used in BlueOS that means those messages can’t be sent properly right now, so position delta messages are the only option that’s currently usable, and the speed estimate option is left as implemented but not “available” to use.

If we set EK3_SRC1_VELXY to ExternalNav (while sending VISION_POSITION_DELTAs) I expect it will either

  1. Ignore it
    • in which case VISION_SPEED_ESTIMATE would be the only way for the values to have a chance of being used while a GPS source is also available
  2. Internally convert the position delta estimates into speed estimates by dividing by the time since the previous one, and then use them
    • which should work, it’s just a bit silly to do (since it’s reversing the calculation work that the extension had to do to create the position deltas to start with), and may introduce some unnecessary error

I’d guess that EK3_SRCn_POS* parameters would make use of position deltas and position estimates, while EK3_SRCn_VEL* parameters would make use of speed estimates, since that involves the least amount of work for the autopilot, but I could definitely be wrong about that. It’s likely worth testing, or trying to find and understand the relevant code in the ArduPilot source.