Rover only intermittently accepting GPS data

Hello, I hope you are all having a good day!

I am having an issue that I do not understand with an ArduRover 4.0.0 setup on a HexCube Black working as a controller for a boat. The essence of the problem is that the flight controller seems to not be consistently able to integrate the GPS position and heading data being fed to it.

Initially it was a lot worse, but I have messed around with things and currently it will update its position and GPS heading every time the Mission Planner map updates for 4 seconds, then will stop for about 8 seconds, then jump and update for 4 seconds, then stop again. As a result the internal inertial sensors to the HexCube do not have enough time to converge with the GPS heading and just spin around. It does get pulled towards the GPS heading but the 4 seconds of regular updates are just not enough. As a result the autopilot is not functional.

I have tried a lot of different combinations, but currently I am sending the autopilot GGA and VTG at 38400 five times a second. I have tried HDT and RMC as well but those seem to decrease the performance. I have tried every standard baud rate from 9600 to 115200, and update rates from 1 Hz to 10 Hz to no avail. I have tried messing about with all the settings related to the EKF and GPS, also to no avail.

The GPS data being sent is of very high quality, coming from a survey grade satellite/inertial positioning system (Coda Octopus F185) via a hydrographic data acquisition software suite (QPS Qinsy) which has an NMEA output driver. I have checked the NMEA output from the program and it is not corrupted.

Also, the dataflash logs are not getting the current time when they are being named, instead defaulting to Dec 31 1979 at 8:00pm, and in them, the GPS section shows all zeros, whereas the AHRS, and POS sections show the position updating as indicated above. There are no other position sensors on the vessel, so the GPS is being used…

I have spent a couple weeks trying to sort this out, but have not been able to get it working. We really want the autopilot working for the vessel to allow us to collect higher quality multibeam sonar data, but currently it is manual all the way!

Adding to my confusion is that I have tried sending simulated GPS data to the autopilot, and it produces a different but also not ideal behavior. In this case I was sending the same sentences using the same settings on the same cable. With the simulated data it does find the time for the log files, and it does update the position every time the map updates, however it only ever updates either the lat or the long, never both together, producing a sawtoothed pattern. In this case however the regular updates let the IMU become aligned with the GPS heading consistently which is good.

I am hoping you lovely folks might have some tips or ideas of how to get me pointed in the right direction!

I have attached a few log files below.

Telemetry log from testing outdoors with real GPS data incoming (Until about 55% in I was just messing about with settings. The boat was on a cart that was being dragged around in the parking lot.):

Flash log from the same time as the above telemetry log:

Flash log from indoor testing with simulated GPS data:

Any and all help is very much appreciated!!!


PS. If anyone is curious, the vessel is a modified Seafloor Systems Echoboat. We are running the aforementioned Coda Octopus F185 for positioning and motion, a Kongsberg M3 multibeam sonar, and a Velodyne VLP-16 Puck LiDAR as the primary sensors on the boat. We also have a small sidescan and single beam sonar that can be run on the boat as well, as well as a retinue of small auxiliary sensors such as a sound speed sensor, temperature sensors, ect. The picture below was before we got the LiDAR on her. Thanks again!!

Did you ever get to the bottom of this, im seeing similar behaviour with my NMEA GPS. it just switches between 3d fix and no GPS every few seconds.