Sensor/Camera

[ROS] Visual-Inertial Calibration Using Kalibr

전두선 2021. 1. 20. 21:25

Kalibr

Kalibr is a toolbox that solves the following calibration problems:

  1. Multiple camera calibration: intrinsic and extrinsic calibration of a camera-systems with non-globally shared overlapping fields of view
  2. Visual-inertial calibration calibration (camera-IMU): spatial and temporal calibration of an IMU w.r.t a camera-system
  3. Rolling Shutter Camera calibration: full intrinsic calibration (projection, distortion and shutter parameters) of rolling shutter cameras

github.com/ethz-asl/kalibr

 

ethz-asl/kalibr

The Kalibr visual-inertial calibration toolbox. Contribute to ethz-asl/kalibr development by creating an account on GitHub.

github.com

 

1. imu calibration

github.com/gaowenliang/imu_utils

 

gaowenliang/imu_utils

A ROS package tool to analyze the IMU performance. - gaowenliang/imu_utils

github.com

%YAML:1.0
---
type: IMU
name: d435i
Gyr:
   unit: " rad/s"
   avg-axis:
      gyr_n: 3.0247286551398204e-03
      gyr_w: 2.2901170839457266e-05
   x-axis:
      gyr_n: 3.0486121293259861e-03
      gyr_w: 2.3588043857742811e-05
   y-axis:
      gyr_n: 3.9906956275203298e-03
      gyr_w: 3.8510954801834231e-05
   z-axis:
      gyr_n: 2.0348782085731448e-03
      gyr_w: 6.6045138587947500e-06
Acc:
   unit: " m/s^2"
   avg-axis:
      acc_n: 2.8949600741350223e-02
      acc_w: 4.5552273079824281e-04
   x-axis:
      acc_n: 2.4870413946165581e-02
      acc_w: 3.5175805157083910e-04
   y-axis:
      acc_n: 2.7808521377206314e-02
      acc_w: 4.8805723243924246e-04
   z-axis:
      acc_n: 3.4169866900678782e-02
      acc_w: 5.2675290838464703e-04

Then copy the first set of average data of Acc and Gyr to the imu.yml file corresponding to kalibr.

rostopic: /camera/imu
update_rate: 200.0 #Hz
 
accelerometer_noise_density: 2.89e-01 #continous
accelerometer_random_walk: 4.55e-04 
gyroscope_noise_density: 3.02e-03 #continous
gyroscope_random_walk: 2.29e-05

 

2. camera calibration

  • --bag filename.bag
    ROS bag containing the data
  • --topics TOPIC_0 ... TOPIC_N
    list of all camera topics in the bag. matches the ordering of --models
  • --models MODEL_0 ... MODEL_N
    list of camera/distortion models to be fitted. matches the ordering of --topics (see Supported models)
  • --target target.yaml
    the calibration target configuration (see Calibration targets)
$ kalibr_calibrate_cameras --bag [filename.bag] --topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N] --target [target.yaml]

 

3. camera-imu calibration

  • --bag filename.bag
    ROS bag containing the image and IMU data
  • --cam camchain.yaml
    intrinsic and extrinsic calibration parameters of the camera system. The output of the multiple-camera-calibration tool can be used here. (see YAML formats)
  • --imu imu.yaml
    contains the IMU statistics and the IMU's topic (see YAML formats)
  • --target target.yaml
    the calibration target configuration (see Cailbration targets)
$ kalibr_calibrate_imu_camera --bag [filename.bag] --cam [camchain.yaml] --imu [imu.yaml] --target [target.yaml]

 

Experiment

  • OS : Ubuntu 18.04 ROS melodic
  • Camera: logitech c920, 640x480, 20Hz
  • IMU : bosch BNO055, uart, 200Hz
  • Calibration target: Aprilgrid 6x6

 

 

 

'Sensor > Camera' 카테고리의 다른 글

[ROS] ORB SLAM3_Mono Camera  (1) 2021.01.12
[Python OpenCV] Perspective Transform example  (2) 2020.11.01
[OpenCV] Vanishing point detection  (0) 2020.09.08
Homography or Projective Transformation  (0) 2020.08.17