Hi @John_Sonardyne, welcome to the forum
Our vehicles have a Linux-based onboard computer that runs BlueOS, and a flight controller board running an ArduPilot autopilot firmware (ArduSub for our ROVs, and ArduRover for the BlueBoat).
Somehow the data from the device needs to get to the autopilot, which can be achieved via one of:
- A direct serial/I2C connection to the flight controller board, with a corresponding (C++ or Lua) driver in the ArduPilot codebase
- @williangalvani’s suggestion of an external AHRS driver would likely be the most appropriate and straightforward way of doing this
- this approach offers the lowest latency, but requires any relevant configuration to be done either automatically as part of the driver, or via autopilot parameter values
- A serial/USB/ethernet connection to the onboard computer, using a BlueOS Extension to talk to the device and send appropriate MAVLink messages to the autopilot
- This can have an optional browser-based interface, where a user could see whether the device is connected, and perform relevant configuration and/or calibrations
- As this is less direct, there is some additional latency involved, and the available data pathways may be more restricted by the messages present in the MAVLink protocol
- A combination of the two, whereby the main connection and driver are handled by the autopilot, but an optional BlueOS extension could provide an interface to help with setting parameters (perhaps with options for some different pre-sets)
- For vehicles using our Navigator flight controller[1] it is possible for the BlueOS user to determine whether a serial-compatible port is owned by BlueOS or the autopilot, in which case a BlueOS extension could potentially be used for complex calibrations and configuration before access is switched to the autopilot, which could then have a more basic driver that only needs to interpret the sensor / position estimation data
This is the case for the vehicles we currently sell, but not all our older vehicles, and is not guaranteed to be used if some other company makes a water-based vehicle, even if they choose to use ArduPilot firmware and/or BlueOS. ↩︎