-
Notifications
You must be signed in to change notification settings - Fork 13.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EKF2 velocity estimate wrong - v1.11-beta #14735
Comments
ECL changes: PX4/PX4-ECL@230c865...47624a0 PX4/Firmware side the biggest change is the driver for your primary IMU (icm20689), which you can see from the perf counters or work_queue status. Last good log: https://logs.px4.io/plot_app?log=ff62827a-7eff-45c6-b2e6-6ea22cd087c6mpu6k_duplicates: 49567 events
mpu6k_reset: 0 events
mpu6k_bad_reg: 0 events
mpu6k_bad_trans: 0 events
mpu6k_read: 247571 events, 10724754us elapsed, 43.32us avg, min 40us max 78us 6.933us rms First new log:icm20689: DRDY interval: 5044 events, 125.01 avg, min 108us max 142us 2.316us rms
icm20689: FIFO reset: 1 events
icm20689: FIFO overflow: 0 events
icm20689: FIFO empty: 0 events
icm20689: bad transfer: 0 events
icm20689: bad register: 0 events
icm20689: transfer: 630 events, 87645us elapsed, 139.12us avg, min 132us max 296us 15.753us rms You can also tell from the vibration metrics with the sensor side DLPF disabled (low pass with 98 Hz cutoff). |
The accel (icm20649) calibration changed quite a bit. Notably there's no longer a huge x offset. This was also seen in #14676 (comment). I'd say there was something bogus in the old mpu6000 driver. EDIT: typo icm20649 should have said icm20689 Old
New
|
@dagar I would add code to wipe the params on update. The factory calibration of the ICM20649 is so good that you're better off having none. |
@RomanBapst @bresch @kamilritz @jkflying Can you have a look? |
The integrated data in the accel x axis looks questionable in sensor_combined. This is preflight while the system is still. This is where the estimated bias (~0.2 m/s) is coming from. I've tried to replicate this on another fmu-v5, but no success so far. It seems like it could be a numerical problem. |
Happened again on master: https://logs.px4.io/plot_app?log=6a006545-b3bf-446f-9baf-f89c5fcfb542 Same vehicle, with @dagar's new fix attempts, and a fixed companion computer fan (so lower vibrations on ground) |
@mhkabir Your VIO system seems to provide a velocity estimate with a variance of 5 m2/s2 (std dev: 2.2m/s). A typical GPS gives velocity aiding with an accuracy of 0.5m/s. |
@bresch Good catch with the variances. What you're looking at is actually the position variance, thanks to the above bug. This is fishy regardless (such a large position variance is not right), and seems to be something on our side, looking into it. |
There seem to have been a bunch of issues in play simultaneously here:
Thanks for all the help everyone! |
Describe the bug
We are flying in indoor environments with VIO, and while testing recently, discovered that the EKF's velocity estimate significantly differed from that provided by the vision system. We don't know if this is a new issue, or whether this already existed before, since we have not flown this setup so extensively before. We also only recently plumbed the vision system's velocity estimate through to PX4, so it's easy to confirm the issue now.
EDIT: older logs (~1 mo old - upstream
d7a9b123e6b84df4a7c01daaac64706c39abd3d7
) don't show this velocity offset, and have lower vibration levels. I think the on-sensor DLPF was disabled between then and now. https://logs.px4.io/plot_app?log=ff62827a-7eff-45c6-b2e6-6ea22cd087c6Expected behavior
The velocity estimate matches the one provided by the vision system, which is accurate and has been benchmarked against groundtruth. Also the vehicle was flying in a straight line, and that velocity offset wasn't actually there in real life.
Log Files and Screenshots
Here are two logs from boot illustrating the issue. The first one is without velocity fusion enabled, and the second one is with velocity fusion enabled (which doesn't make much of a difference).
These are both replayable. Our branch is based on upstream
746b3124abe9df486c6d88a3d9ec0c438e63654d
First log
Accel bias estimate:
![image](https://user-images.githubusercontent.com/5557676/80014423-470db000-849e-11ea-9028-a36471ee2864.png)
Velocity estimates:
![image](https://user-images.githubusercontent.com/5557676/80014748-bb485380-849e-11ea-9c1d-a0703bd55958.png)
Second log
Accel bias estimate:
![image](https://user-images.githubusercontent.com/5557676/80014567-7a503f00-849e-11ea-940e-11f289aad6bf.png)
Velocity estimate:
![image](https://user-images.githubusercontent.com/5557676/80014810-d6b35e80-849e-11ea-9c49-2de800e50f8d.png)
Last good log
https://logs.px4.io/plot_app?log=ff62827a-7eff-45c6-b2e6-6ea22cd087c6
Based on upstream
d7a9b123e6b84df4a7c01daaac64706c39abd3d7
Drone (please complete the following information):
The text was updated successfully, but these errors were encountered: