BlueBoat Setup: Surveyor 240-16 + External GNSS | Influence of Offsets on EKF3

Hi everyone,
I’m new to this technology and I appreciate any guidance or advice you can offer.

I’m currently configuring a BlueBoat equipped with: Cerulean Surveyor 240-16, Ping, External high-precision GNSS Leica GS18 (NRTK mode).

The goal is to use:

  1. the Leica GS18 to improve the position accuracy of the Surveyor 240-16 surveys.

  2. the IMU + AK09915 compass for heading.

The GPS is connected via serial port to the Navigator to send NMEA data.

The GPS is positioned physically offset from the IMU, Surveyor 240-16, and Ping.
Therefore, our plan is to configure sensor offsets IMU, GPS, and Ping (GPS_POS_X/Y/Z, INS_POS1_X/Y/Z, etc.) relative to the vehicle’s center of gravity and Z offset relative to the waterline.

My questions are:

  1. Does ArduPilot/EKF3 automatically account for the relative position (offset) of sensors from the vehicle’s center of gravity when fusing IMU, GPS, and other sensors?

    • For example, if the sonar is mounted far from the CG, will its measured accelerations due to pitch/roll rotations be automatically corrected based on its offset, or do I need to apply manual software corrections?
  2. Are the coordinates sent via MAVLink to SonarView, where I integrate the Surveyor 240-16 data, already corrected for the GPS offsets set in ArduPilot parameters, or are they transmitted as raw sensor measurements without corrections?

    • I need this to know which reference point to use when setting the Surveyor 240-16 offsets inside SonarView.

    • Also, how can I concretely verify whether the coordinates arriving in SonarView are already corrected for GPS offsets or not?
      For example, from what I read, I would expect GLOBAL_POSITION_INT values to differ from GPS_RAW_INT depending on the GPS offsets set in BlueOS.
      However, as you can see from the image, I set a Z offset but I don’t see any difference in altitude. What am I doing wrong?

Thanks for your insights!

Hi @Yuri_Rage ,

sorry to disturb you, but I would really appreciate your opinion on the following.

Regarding what I wrote above, with a BlueBoat, if I understand correctly:

  • The offsets INS_POS_X/Y/Z, GPS1_POS_X/Y/Z, and RNGFND1_POS_X/Y/Z must all be set relative to the vehicle’s center of gravity.

  • For the Z reference, can I use the waterline as the zero point?

If this is correct, I would like to confirm the following:

  1. Is the GLOBAL_POSITION_INT message (which SonarView uses as input) referenced to the vehicle’s center of gravity?

  2. Are the GLOBAL_POSITION_INT values corrected by the EKF3 filter, taking into account GPS, compass, and IMU data, while also applying the configured sensor offsets?

  3. Does the same logic also apply to the ATTITUDE message?

Additionally:

  • SonarView (the MBEAM survey software) receives from ArduPilot the messages LOCAL_POSITION_NED, GLOBAL_POSITION_INT, and ATTITUDE.

  • SonarView also uses the IMU integrated in the MBEAM to apply motion corrections directly to the MBEAM measurements.

Given this, SonarView ends up applying a second correction for yaw, pitch, and roll on top of the corrections already done in ArduPilot with EKF3 filter.
Does this “double correction” introduce redundancy and potentially degrade the positional accuracy of the processed MBEAM data?

Thank you very much for your help!

Yes.

Yes, and all of the MavLink messages from the autopilot so far mentioned will be fused EKF position and attitude.

As for your sonar’s internal system conflicting with ArduPilot’s filtered output, I don’t have an exact answer. However, I think it’s best to at least test the system as plug-and-play, as it seems designed to work as such. I doubt forcing a more raw data source into the mix will be helpful.