[Goal]

  • Kalibr package를 사용하여 Camera intrinsic & extrinsic parameter를 찾는 것을 목적으로 한다.

[Github]


[Calibration 순서]

(1) 실제로 Aprilgrid의 영상을 딴 Camera data와 IMU data가 담겨 있는 bag file record


(2) Camera intrinsic parameter를 구하기 위해 Aprilgrid의 yaml file을 얻는다.


(3) /kalibr/aslam_offline_calibration/kalibr/python/ 로 들어가서 camera data로만 camera intrinsic parameter를 구한다.

# In kalibr/aslam_offline_calibration/kalibr/python

# --bag   : Directory where the camera and imu bag data are containing Aprilgrid images 
# --topics: Camera topics in the bag data (If the bag data has stereo, then write two topics)
# --models: Write camera models (If the used camera is stereo, then write two times same model name)
# --target: Directory where the aprilgrid configuration is 

$ kalibr_calibrate_cameras --bag ($ Camera-IMU).bag --topics /zed/left/image_rect_color /zed/right/image_rect_color --models pinhole-radtan pinhole-radtan --target ($ aprilgrid).yaml
  • kalibr_calibrate_camera 실행 → 이때 결과는 pdf 및 yaml file이 생성
    • yaml file안의 이미지 size의 절반 정도가 대략적으로 projection_parameter값으로 나타난다면 올바르게 intrinsic parameter를 구했다고 생각할 수 있다. (bag data image는 640 * 480 기준)
    • 만약, 같은 로봇에 이미지 사이즈가 다르게 취득된다면 다시 intrinsic parameter를 얻어주어야 한다!
  • [주의]
    • 구하는 과정에서 --models pinhole-equi 로 작성하는 경우를 볼 것이다. 그런데 camera model을 **pinhole_equi → pinhole_radtan**으로 해야한다.

(4) IMU intrinsic parameter 들이 담겨 있는 yaml file 을 준비한다.


(5) /kalibr/aslam_offline_calibration/kalibr/python/ 로 들어가서 앞서 얻은 camera intrinsic yaml & aprilgrid yaml & imu intrinsic yaml & bag file을 모두 이용하여 camera와 imu간의 extrinsic parameter를 구한다.

# In kalibr/aslam_offline_calibration/kalibr/python

# --bag   : Directory where the camera and imu bag data are containing Aprilgrid images 
# --topics: Camera topics in the bag data (If the bag data has stereo, then write two topics)
# --models: Write camera models (If the used camera is stereo, then write two times same model name)
# --target: Directory where the aprilgrid configuration is 
# --cam   : Directory where the camera intrinsic configuration is 
# --imu   : Directory where the imu configuration is 

$ kalibr_calibrate_imu_camera --bag ($ Camera-IMU).bag --cam camchain-Kalibr_data.yaml --imu ($ imu).yaml --target ($ aprilgrid).yaml

[참고]

  • 최근 kalibr version pdf 결과에는 camera-to-imu matrix도 있지만 imu-to-camera matrix도 있다.
    • (Tip) 이들 중에서 4x4 matrix에서 마지막 column에 해당하는 position이 실제로 camera와 imu 사이의 거리가 맞는 것을 사용하면 된다. (cam_to_imu 이걸 사용!)



[Error Related]

[1] `fatal error: libv4l2.h: No such file or directory`

$ sudo apt update
$ sudo apt install libv4l-dev

[2] `ImportError: No module named igraph`

  • [Solve]
$ sudo apt update
$ sudo apt install python-igraph

[3] `ImportError: No module named scipy.optimize`

$ sudo apt-get install gfortran
# If the python version is 2, otherwise python version is 3 then use pip3 
$ sudo -H pip install scipy

+ Recent posts