Skip to content

Wrong translation after optimization #736

Open
@mertturanli

Description

@mertturanli

Hello,

I are using ADIS16465 (at 200 Hz) with a global shutter IMX296C camera (at 20 Hz). I am trying to calibrate the two sensors.

The camera exposure is about 250 us.

I have found the IMU parameters by using allen variance ros package:

#Accelerometer
accelerometer_noise_density: 0.00033127302958302297 
accelerometer_random_walk: 1.6739947458148897e-05 

#Gyroscope
gyroscope_noise_density: 9.604669366832576e-05 
gyroscope_random_walk: 5.719943734231837e-06 

From Kalibr optimization, the IMU timestamp plot is as below:

Image

Acceleration and angular velocity errors are below:

Image

Image

Biases are diverging as it can be seen from plots:

Image

Image

The rotation - translation results are: (Reprojection errors are large, I think)

Calibration results
===================
Normalized Residuals
----------------------------
Reprojection error (cam0): mean 4.79977270529738, median 3.141631542264498, std: 4.967430359053858
Gyroscope error (imu0):
mean 47.653033299298144, median 19.886827651927263, std: 60.417841739725574
Accelerometer error (imu0): mean 19.759625302700755, median 11.860697573814445, std: 19.67053022496295
Residuals
----------------------------
Reprojection error (cam0) [px]: mean 4.79977270529738, median 3.141631542264498, std: 4.967430359053858
Gyroscope error (imu0) [rad/s]: mean 0.06472757737689143, median 0.02701247090686218, std:
0.08206614050338883
Accelerometer error (imu0) [m/s^2]: mean 0.09257202888744648, median 0.05556627828759213, std:
0.09215462663493784
Transformation (cam0):
-----------------------
T_ci: (imu0 to cam0):
[[-0.99529745 0.09250315 -0.02874285 0.07599826]
[ 0.02507502 -0.040572 -0.99886193 0.70906997]
[-0.09356403 -0.99488546 0.03806169 0.6298935 ]
[ 0.
0.
0.
1.
]]
T_ic: (cam0 to imu0):
[[-0.99529745 0.02507502 -0.09356403 0.11679631]
[ 0.09250315 -0.040572 -0.99488546 0.64841019]
[-0.02874285 -0.99886193 0.03806169 0.68647259]
[ 0.
0.
0.
1.
]]
timeshift cam0 to imu0: [s] (t_imu = t_cam + shift)
-0.02027950589880055
Gravity vector in target coords: [m/s^2]
[ 0.1995748 -9.80366865 -0.12912739]

The rotation is correct but translation gives wrong results. For example, for the camera z axis, it should be about -5 cm along that axis.

I have used Kalibr for MTI-630 and AR0234 camera before, and got good results with correct translations.

What am I missing?

Thanks in advance.

Best regards,
Mert T.

Metadata

Metadata

Assignees

No one assigned

    Labels

    user-platformUser has trouble running on their own dataset

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions