AP_NavEKF2: Fix timing offset in position reset calculation
the correction for GPS latency now uses the correct time for that observation
This commit is contained in:
parent
803817821d
commit
d6f7156f4e
@ -62,8 +62,8 @@ void NavEKF2_core::ResetPosition(void)
|
|||||||
stateStruct.position.y = lastKnownPositionNE.y;
|
stateStruct.position.y = lastKnownPositionNE.y;
|
||||||
} else if (!gpsNotAvailable) {
|
} else if (!gpsNotAvailable) {
|
||||||
// write to state vector and compensate for offset between last GPs measurement and the EKF time horizon
|
// write to state vector and compensate for offset between last GPs measurement and the EKF time horizon
|
||||||
stateStruct.position.x = gpsDataNew.pos.x + 0.001f*gpsDataNew.vel.x*(float(imuDataDelayed.time_ms) - float(lastTimeGpsReceived_ms));
|
stateStruct.position.x = gpsDataNew.pos.x + 0.001f*gpsDataNew.vel.x*(float(imuDataDelayed.time_ms) - float(gpsDataNew.time_ms));
|
||||||
stateStruct.position.y = gpsDataNew.pos.y + 0.001f*gpsDataNew.vel.y*(float(imuDataDelayed.time_ms) - float(lastTimeGpsReceived_ms));
|
stateStruct.position.y = gpsDataNew.pos.y + 0.001f*gpsDataNew.vel.y*(float(imuDataDelayed.time_ms) - float(gpsDataNew.time_ms));
|
||||||
}
|
}
|
||||||
for (uint8_t i=0; i<IMU_BUFFER_LENGTH; i++) {
|
for (uint8_t i=0; i<IMU_BUFFER_LENGTH; i++) {
|
||||||
storedOutput[i].position.x = stateStruct.position.x;
|
storedOutput[i].position.x = stateStruct.position.x;
|
||||||
|
Loading…
Reference in New Issue
Block a user