Closed flaviopinzarrone closed 1 year ago
To handle the stationary case, you need to enable the zero velocity update (e.g. try_zupt
). But it shouldn't fly away as soon as you pick it up. Looking at your IMU noise, it seems to be very large and seems a bit suspicious. Have you calibrated these noises? I recommend the following tool:
https://github.com/ori-drs/allan_variance_ros
EDIT: you can also try directly using the EuRoC mav IMU noises to see how it performs then. Otherwise it might be your camera-IMU calibration. Can you post your Kalibr resulting PDF file?
Sure, here you find the calibration report. In the meantime I'm looking into your suggestions, thanks a lot!
It looks like the angular velocity has very large errors.
Also with this reprojection errors, I think there is no hope to run VINS with this calibration. I recommend re-calibrating with Kalibr.
Thanks, I’ll try recalibrating as you suggest. About calibration, I followed your guide and I have one question. You suggest to record the camera-imu sequence at 20-30 Hz for the camera and 200-500 Hz for the IMU, is this the case even if at runtime the desired frequencies are higher? Or should the calibration and runtime frequencies match?
I am not sure if there will be an accuracy difference, but the higher frequency will cause Kalibr to take longer. You can try both and see if the results vary.
On Mon, Mar 13, 2023 at 12:50 AM Flavio Pinzarrone @.***> wrote:
Thanks, I’ll try recalibrating as you suggest. About calibration, I followed your guide and I have one question. You suggest to record the camera-imu sequence at 20-30 Hz for the camera and 200-500 Hz for the IMU, is this the case even if at runtime the desired frequencies are higher? Or should the calibration and runtime frequencies match?
— Reply to this email directly, view it on GitHub https://github.com/rpng/open_vins/issues/315#issuecomment-1465505842, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQ6TYURXSSKS62PNVVLXNLW32RS7ANCNFSM6AAAAAAVTY7EJ4 . You are receiving this because you commented.Message ID: @.***>
Hi, I recalibrated the system using the maximum frequencies, the --scale-misalignment as the imu model and --perform-synchronization flag and these are the results of the calibration: imu_cam_calib-report-imucam.pdf The odometry still drifts and the linear velocities estimated on the odomimu topic grow very high (in the order of hundreds of m/s) after 20/30 seconds of execution. Output: output.txt
I noticed from the output high values of ms between each update with respect to supported dataset benchmarks, could this be the problem (poor synchronization)?
The image reprojection in that calibration still is very bad (3-4 pixels is very hard to use). You can also see that there might be something wrong with the IMU timestamps. If you have a 900Hz IMU, then you should get a "flat line" at 1.1ms, but you have a very very large range there.
Your IMU might be "batching" the IMU readings and thus be providing bad timestamps. Sometimes sequential IMU readings have a 10ms difference which equates to a 100Hz IMU, while it seems that other times it is even faster then 1.1ms. You might also try a lower IMU rate to see if this fixes the problem here.
I performed the calibration again and the results of the camera calibration seem quite good. You can find them here.
I then tried to fix the problem of the IMU sampling variance reducing its rate to 500 Hz and I recalibrated them. Here you can see the results.
The mean reprojection error is low but in the last graph seems quite large. The odometry is still drifting as soon I lift the drone and I'm struggling to understand if it is a problem of synchronization or still a poor calibration.
The time dt of the IMU seem more reasonable now. But the pattern on the reprojection error hits that there is still an issue. Are you able to perform calibration with an april-tag grid? Maybe there is issues with the checkerboard flipping. Sorry that I can't help that much more on this.
Feel free to reopen once you are able to re-calibrate things a bit better with your hardware. Good luck!
Hello, first of all thanks for your amazing work and the effort you put in maintaining it! I am trying to run openVINS on a real drone with a kakute h7 v2 flight controller (containing a BMI270 IMU, running at approximately 900 Hz) and an arducam imx 219 camera, running at 30 fps and 640x480 resolution.
I performed the calibration following your tutorial using kalibr and these are the resulting files.
I also report here the
estimator_config.yaml
I calibrated the
init_window_time
and theinit_imu_thresh
so that the static initialization works fine. Indeed when I manually lift the drone it triggers the initialization and the state estimation begins. The problem is that it instantly starts drifting away even if I put it back down on a flat surface.Here you find an output example log.txt