EKF2 Tuning for precise Mocap tracking


I’ve got some troubles understanding the performance of the EKF2 when using an high precession optical tracking system. I’m using an Mocap system, that provides a tracking accuracy of ~1 mm. The data is streamed to the FCU via Mavlink and then used for the position estimation. The resulting position estimate is depicted in the image below.

Although the drone is standing and disarmed the estimation of the EKF2 (red) oscillates way more then the data provided by the mocap system. I already reduced the EKF2_EVA_NOISE and EKF2_EVP_NOISE params to 0.001 but the output didn’t improve.
I tried the same configuration as SITL simulation using Gazebo and got similar results. The corresponding logfile can be found here: Flight Review

Could anyone provide some help how I need to tune the EKF2 in order to archive better positions estimations.

Thanks in advance!

@MarLi What rates are you streaming the mocap data to the FCU and how?

The plot has no dimensions but if it is in [m] given that the oscillation is 5mm it seems reasonable.

@Jaeyoung-Lim We can stream up to 100 Hz. With the real system we stream at about 50 Hz, in the simulation I used 100 Hz. We stream the data to the vision_pose topic using ROS and mavros.

Yes, the dimensions of the plot are in [m]. Is there any limit of the EKF2 or is it possible to tune the EKF2 to archive a better estimation.


I can confirm that I have seen the same issue as MarLi with our Mocap system. It does not seem to affect flight quality that much though.