From d8f2d0cf8d17bd6e6fe0fa53a340c4b49581c00a Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Wed, 15 Jul 2020 15:02:50 +0900 Subject: [PATCH] AP_NavEKF3: max delay includes visual odometry --- libraries/AP_NavEKF3/AP_NavEKF3_core.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/AP_NavEKF3/AP_NavEKF3_core.cpp b/libraries/AP_NavEKF3/AP_NavEKF3_core.cpp index 4628ee2817..c7ad326349 100644 --- a/libraries/AP_NavEKF3/AP_NavEKF3_core.cpp +++ b/libraries/AP_NavEKF3/AP_NavEKF3_core.cpp @@ -6,6 +6,7 @@ #include #include #include +#include extern const AP_HAL::HAL& hal; @@ -93,6 +94,14 @@ bool NavEKF3_core::setup_core(uint8_t _imu_index, uint8_t _core_index) maxTimeDelay_ms = MAX(maxTimeDelay_ms , frontend->tasDelay_ms); } +#if HAL_VISUALODOM_ENABLED + // include delay from visual odometry if enabled + AP_VisualOdom *visual_odom = AP::visualodom(); + if ((visual_odom != nullptr) && visual_odom->enabled()) { + maxTimeDelay_ms = MAX(maxTimeDelay_ms, MIN(visual_odom->get_delay_ms(), 250)); + } +#endif + // calculate the IMU buffer length required to accommodate the maximum delay with some allowance for jitter imu_buffer_length = (maxTimeDelay_ms / (uint16_t)(EKF_TARGET_DT_MS)) + 1;