Recently, we had a situation where our GPS rebooted in the middle of a flight. Of course, this shouldn’t happen. However, after looking at the dataflash log, we are puzzled by the way the EKF behaved.
Indeed, looking at the graph below, we can see that the GPS status went from 3D_FIX to NO_GPS at time 615s. Then, the communication was established again at time 622s (NO_FIX status) and we finally had the 3D_FIX again at time 626s.
The problem is that once the communication was established again with the GPS (NO_GPS -> NO_FIX), then the Kalman filter integrated the measurement of the GPS, which was (0,0).
This led to a position jump of about 3 600 000 meters.
So, how can the EKF integrate such a bad measurement, especially when the status is NO_FIX? Maybe this is related to some logic when a new GPS backend is detected, which is what happened in this case because it rebooted.
ArduCopter Version: 3.5.4
Log file available here.