PX4-Autopilot: Feeding mocap pose as vision pose into EKF2 does not wrok
Since mocap position fusion is not supported in EKF2, I tried to feed it as vision position using vision_pose
plugin in MAVROS. For that, I did the following.
- I set EKF aid mask to fuse vision position and yaw from vision, and not to fuse GPS
- I used
vrpn_client_ros
plugin to get mocap data which is published as pose stamped in ENU - I relayed the pose to
/mavros/vision_pose/pose
which is the same type (pose stamped) - I see a message on QGC saying something like ’ IMU quaternion detected…’
- I check the
LOCAL_POSITION_NED
in QGC and the position does not match mocap at all - The horizon starts to diverge in QGC and does react as expected
If I used LPE and set the params accordingly, I could get mocap data correctly.
So what could be the problem on the EKF2 side? Am I missing more params settings, or this method does not work in the first place? I am using PX4 v1.7, Ubuntu 16 on Odroid XU4, mavros Kinetic version
Thanks.
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 31 (31 by maintainers)
The innovation sequences look reasonable, however if you are looking for additional accuracy improvements you can set EKF2_IMU_POS_X,Y,Z and EKF2_EV_POS_X,Y,Z to the position of the IMU sensor and mocap reference point. Setting them to the nearest 0.01m (1 cm) should be good enough.
Once that has been done, the observation noise parameter EKF2_EVP_NOISE could then be reduced. Then, depending on how well the time delay has been tuned you may need to increase the innovation consistency gate EKF2_EV_GATE to prevent transients caused by timing errors resulting in measurement rejection.