You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While working on improving our handling of external position estimate I found these places in the EKF2/EKF3 where we are doing direct comparisons of the system time (instead of comparison of elapsed system time) meaning the checks probably fail after the system time wraps (which happens after 72day I think):
NavEKF3's position reset handling after core change in NavEKF3::getLastPosNorthEastReset. directly compares system times (lastCorePosReset_ms and lastPosReset_ms)
EKF3's getBodyFrameOdomDebug uses a MAX on absolute times which is probably incorrect although this may only cause problems if both wheel odometry and vision-position-delta messages have been passed in since startup and these are probably not compatible.
EKF2's and EKF3's writeExtNavData make the same make as above by using a MAX when setting timeStamp_ms (see here for EKF2 and here for EKF3)
EKF2's and EKF3's NavEKF3_core::readRangeFinder() methods have incorrect checks like below.
// don't allow time to go backwards
if (storedRngMeasTime_ms[sensorIndex][midIndex] > rangeDataNew.time_ms) {
rangeDataNew.time_ms = storedRngMeasTime_ms[sensorIndex][midIndex];
}
System time wrap can be tested in SITL by changing SIM_Aircraft.cpp as shown below so that the time wraps about 30 seconds after starting SITL
rmackay9
changed the title
EKF2/EKF3: features probably not working after system time wrap
EKF2/EKF3: yaw reset probably not working after system time wrap
Apr 11, 2020
rmackay9
changed the title
EKF2/EKF3: yaw reset probably not working after system time wrap
EKF2/EKF3: bugs that appear after system time wrap
May 12, 2020
While working on improving our handling of external position estimate I found these places in the EKF2/EKF3 where we are doing direct comparisons of the system time (instead of comparison of elapsed system time) meaning the checks probably fail after the system time wraps (which happens after 72day I think):
System time wrap can be tested in SITL by changing SIM_Aircraft.cpp as shown below so that the time wraps about 30 seconds after starting SITL
These are fixed:
The text was updated successfully, but these errors were encountered: