GY801 don't work with this code so you need to use only odometry and it's not really accurate on slope or with RFID tag use.
It's actualy GY88 fully tested for 2 years.
I have tested a GY87 but it's really more complex with PCB1.3.
BUT the most important to understand is the difference between GYRO/ACCEL and COMPASS
GY88,GY87 and GY801 use the same Compass -> HMC5883L (it read the magnetic field of Earth ) so the result is the same and Always very bad (except if you can put the module at 50 CM of the mower
hmy:
hmy: )
GY88,GY87 and GY521 use the same GYRO/ACCEL ->MPU6050 (they read weightlessness of the earth) and inside there is a DMP ,so the complex compute for YAW are not made by the DUE and very accurate on relative position.(Unfortunatly the YAW drift over the time)
GY801 use L3G4201D/ADXL345 but the DUE need to make the fusion between Accel and Gyro , and it's very complex. but no drift on yaw And for me it's less accurate than the MPU6050.
You can Also use a GY521 and a separate Compass -> HMC5883L locate inside a GPS module like BN880.
All this can work if you have the correct I2C adress
On GY87 the issue is that the I2C adress is fixed and same as RTC so you can't connect it on normal I2c PCB1.3 port , You need to Use I2C1 connector on PCB1.3
Also compass is hidden and the code need to be adjust.
Now on the software part:
Azurit 1.09 use a fusion of all the data CYRO/ACCEL/COMPASS infortunatly the compass destroy the accuracy but no drift over time with the compass
AzuritBer use only GYRO/ACCEL for a relative 1 or 2 degres accuracy ,but a drift occur over time and i need to read the compass each 10 or 20 minutes for absolute position.