Why EFK2_EV_DELAY limited to 300 ms?

Hi everyone,

I am using a Pixhawk 2.1 Cube flight controller running PX4 1.8.2 on a Tarot 680. We are using the vision estimator where I provided a position (geometry_msgs/poseStamped) into the vision_pose/pose topic of mavros.

Results were ok, but while using the system-wide replay for the EKF2. I realized the estimation would be perfect with EKF2_EV_DELAY = 525ms.

I had 2 questions concerning the EKF2_EV_DELAY parameters.

  1. I’ve followed the ekf2_ev_delay tuning section of the documentation. Following the guide, I would need an approximate parameters of 425 ms, which is bigger than the maximum allowed by QGroundControl. Why is the buffer limited to 300 ms? Is it a RAM limitation? Would it be dangerous to allow a longer buffer? (See first log)

  2. Second question, my vision position and estimator are synchronize,but it seems like my local position (fusion of the data) is delayed in time of a couple of hundred of ms? Why is my local position late from my estimator and SLAM data?

Here’s a picture of the estimation at 300 ms (EKF2_EV_DELAY)


Here’s a picture of the estimation at 525 ms (EKF2_EV_DELAY)

Log 1 : https://logs.px4.io/plot_app?log=c3a795c7-ee51-4ccd-90d3-a042167ebd32
Log 2 : https://logs.px4.io/plot_app?log=f2ad84a7-160c-43ff-a55b-17767ee238dc

Didn’t find why there’s a lag between local_position and (vision + estimate), but I found the EKF2_EV_DELAY is not limited to 300 ms. You can actually force the parameters to be higher than the maximum shown in QGroundControl by entering you value and saving it, a new box appears to force the value.

Post partially answered (1/2)