I was assuming it would be auto-detected once connected to an appropriate port, but that may not be the case. I’ve since been told
We have apparently previously tried to integrate an “xsense mti” during Navigator testing, but ran out of time to get it fully working. “yost” and “PNI” are other potentially relevant suppliers, but I don’t believe either has an existing integration with ArduPilot.
Per your last response, we went ahead and purchased an ADIS16475 IMU to integrate into the blueROV2. This IMU has a driver written for it already in AP_InertialSensor.
Are you saying that there is not going to be any hope to integrate this IMU into the system even with the driver already existing in Ardupilot?
If that is the case, we are within our return window, so we could return it and go for a vectornav AHRS system that has driver in AP_ExternalAHRS. Am I correct in understanding that even with the AHRS, there are no examples of someone successfully integrating an external AHRS into the blueROV?
After some reasonably extensive internal discussion, my latest understanding is:
ArduPilot’s AP_InertialSensor libraries can only be used by autopilot boards
To use one of the supported sensors externally would require defining a custom board that includes the sensor(s) that you’re interested in using
i.e. pretend that it’s actually included in the board being used
ArduPilot’s AP_ExternalAHRS libraries support External AHRS systems, which can be used to completely replace the AHRS, or to replace some inputs to ArduPilot’s EKF
Replacing ArduPilot’s AHRS would also require integrating the DVL with the external AHRS, so it would likely make more sense to follow the latter approach instead
It’s not so much “no hope of integrating” as “integration would require some firmware changes, so you can’t just plug it in and set some parameters to get it working”.
We’re not aware of any examples of it. That said, the one we were trying to integrate wasn’t already supported by ArduPilot - it should be simpler to set up an external AHRS that already has firmware support, and that will have been done successfully with other vehicle types (otherwise the option wouldn’t already be available).
Everything you said there makes sense. I guess I would prefer to integrate the IMU into the system since we already have it. I found in AP_InertialSensor.cpp around line 1000, there’s a switch statement with different board types and each type calls one or two of the existing InertialSensor drivers. Could you not just change out the Pixhawk IMU for the ADIS1647x?
If this may be difficult and an external AHRS would be much easier, just say the word and we will opt to go that route, but I’m willing to change some firmware around to make the ADIS1647x work if anyone there has an idea of what path to take
I have added lines to probe for the ADIS1647x IMU. My issues are that I am unsure how to determine the last argument of probe, which is drdy_gpio (data ready gpio). My understanding is that this is the GPIO of the SPI port on Pixhawk that will be connected to Data Ready pin of sensor.
If this understanding is correct, I can go ahead and hook up the IMU to the SPI port and run the generic_INS example located at /ardupilot/libraries/AP_InertialSensor/examples/