ethz-asl / rovio

Other
1.12k stars 506 forks source link

Rovio feature tracking configuration #186

Open npal1008 opened 6 years ago

npal1008 commented 6 years ago

Hi all,

I am trying to setup a simple hardware in order to use rovio as odometry software in real time. My goal is to achieve a stable odometry and the best possible with my hardware. Currently I am using a See3Cam_CU135 with fisheye lens (154°) and a BNO055 based IMU. Since the camera accepts external hardware trigger, I setup a microcontroller that reads the IMU measurement via I2C and triggers the camera in order to achieve better timesync.

Now I have to adjust the config parameters of ROVIO which is quite difficult. The camera intrinsics and the camera-IMU extrinsics are quite good, but all other parameters (like covariance, noise, imgupdate etc) are not perfect, because my odometry isn't good (I saw that ROVIO can do better).

I especially noticed that the feature tracking is not so good. It looses often features resulting in using more than 6000 features in few meters. I think that this can be disturbing for the odometry

Are there any guidelines or tutorials or calibration processes that can help to find the best parameters for my configuration?

Thank you in advance

Edit: currently my Imu publishes at 100 Hz and the camera at 20 Hz

npal1008 commented 6 years ago

I did some test. Is it possible that the poor feature tracking result is due to a rolling shutter effect?

bloesch commented 6 years ago

Rolling shutter could disturb the tracking, but if you move slowly that should be negligible. If you have more than 6000 features for a few meters then something seems wrong. Are you sure about the extrinsics/intrisics? The standard noise parameters usually work for various hardware setups. One thing you could also do is increase the IMU related noise parameters (vel, acb, gyb, att).

npal1008 commented 6 years ago

How about the timing? I am using a configuration very similar to the one described in this example:

grauonline.de/wordpress/?page_id=1951

I am using the hardware trigger function of the camera, but maybe I am doing something wrong, because if I remove the trigger the results are better.

Is there a way to check how good the timing is?

bloesch commented 6 years ago

If you remove the trigger the results get better something is probably wrong with the triggering setup. There is no rovio tool to check this, but you could https://github.com/ethz-asl/kalibr to calibrate the time offset. Also, be sure not to have any spurious timestamps at the beginning.