Skip to content
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

Optimized extrinsic parameters T_SCi do not converge #84

Open
JzHuai0108 opened this issue Aug 17, 2019 · 0 comments
Open

Optimized extrinsic parameters T_SCi do not converge #84

JzHuai0108 opened this issue Aug 17, 2019 · 0 comments

Comments

@JzHuai0108
Copy link

JzHuai0108 commented Aug 17, 2019

Dear Sir,

I am estimating the extrinsic parameter between a camera and an IMU in a rigid sensor rig. Your ijrr 2015 paper argues that OKVIS is capable of calibrating online the extrinsic parameters. So I did a brief test to get a feel. But the estimated extrinsic parameters are not very satisfactory.

The okvis_app_synchronous built from the minor-modified okvis master branch was used to process the MH_01_easy from the EUROC dataset. The input config yaml for EUROC was changed as below to init the translation of T_SC0 to zero and to let loose the extrinsic parameters. Note the original values for these noise parameters were zero.

cameras:
     - {T_SC:
        [ 0.0148655429818, -0.999880929698, 0.00414029679422, 0,
          0.999557249008, 0.0149672133247, 0.025715529948, 0,
          -0.0257744366974, 0.00375618835797, 0.999660727178, 0,
           0.0, 0.0, 0.0, 1.0],

......................

   sigma_absolute_translation: 0.01 # The standard deviation of the camera extrinsics translation, e.g. 1.0e-10 for online-calib [m].
    sigma_absolute_orientation: 0.001 # The standard deviation of the camera extrinsics orientation, e.g. 1.0e-3 for online-calib [rad].
    sigma_c_relative_translation: 1.0e-6 # The std. dev. of the cam. extr. transl. change between frames, e.g. 1.0e-6 for adaptive online calib (not less for numerics) [m].
    sigma_c_relative_orientation: 1.0e-6 # The std. dev. of the cam. extr. orient. change between frames, e.g. 1.0e-6 for adaptive online calib (not less for numerics) [rad].

The translation part of T_SC0 was recorded by registering a callback to the publisherLoop.

The below figure shows the reference extrinsic translation from the EUROC dataset, the one estimated by okvis, and the one estimated by VINS-Mono with the config file.

okvis_continuous

If both sigma_c_relative_translation and sigma_c_relative_orientation were set to zero, the estimated extrinsic translation by okvis is shown as below.

okvis_randconst

For both cases, the estimated extrinsic translation was strange. Can you please share your thoughts on this?

Edit: I did a grid search over the extrinsic noise parameters, the best estimates for t_SC came with [0.05, 0.001, 1.0e-4, 1.0e-4] as shown in the below figure, though still with unexpected spikes over time.

okvis_continuous_best

I also tried to comment out the prior term for the extrinsic parameters as I believe it may be unnecessary and hamper convergence. But this change did not help much in obtaining better calibration estimates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant