ROS Camera Calibration

OpenJR·2022년 5월 23일
0

사용환경

  • Ubuntu 18.04
  • ROS Melodic
  • Camera topic = usb_cam/image_raw

ROS에 내장되어 있는 패키지를 사용해 손 쉽게 카메라 캘리브레이션을 진행 할 수 있다.
순서는 아래와 같이 진행된다.

  1. roscorerosrun 명령어를 통해 카메라 노드를 실행시키거나, roslaunch로 카메라 노드를 실행 시켜 카메라 토픽을 발행한다.
  2. 로스에 내장되어 있는 camera_calibration 패키지에서 cameracalibrator.py을 실행시킨다.
  3. 체커보드를 이리 저리 움직이며 x, y, size, skew 바가 초록색이 되도록 한다.
  4. calibrate 버튼은 누른다.

1, 2 단계는 조금 더 부연 설명을 하고자 한다.

1. 카메라 노드 실행

각 실행시키려하는 카메라 노드를 실행시킨다. 필자의 경우 usb_cam이라는 패키지에 카메라를 실행시키는 런치파일이 존재하므로 아래와 같이 카메라 노드를 실행시켰다.
$ roslaunch usb_cam usb_cam-test.launch

2. 카메라 캘리브레이션 노드 실행시키기

카메라 토픽이 발행 중이므로, 이 토픽을 받아 카메라 캘리브레이션을 진행할 노드를 실행시킨다. 이 노드는 camera_calibration이라는 패키지 안에 cameracalibrator.py 파일로 존재하므로 rosrun으로 실행시킨다.
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/usb_cam/image_raw camera:=/usb_cam

인자에 대해서 설명을 하자면,

  • --size: 체커보드의 코너들의 개수. 여기선, 가로로 코너가 8개, 세로로 6개 있음을 의미. 사용자 환경에 맞게 바꿔줄 수 있음.
  • --square: 체커보드에 있는 정사각형의 실측 길이. m 단위이므로 여기선 10.8cm를 의미. 사용자 환경에 맞게 바꿔줄 수 있음.
  • image:=: 카메라 토픽을 받아와야하므로, 카메라 토픽을 적어주면 된다. 사용자 환경에 맞게 바꿔줄 수 있음.
  • camera:=: 카메라 토픽이 발행되는 패키지 이름. (필자가 확인한 결과 안적어주어도 무방하다)

이 후,

3, 4, 단계를 실행하면 $ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/usb_cam/image_raw camera:=/usb_cam를 입력했던 터미널에서 카메라 Intrinsic Matrics와 Distortion coefficient 값이 출력 된다.

profile
Jacob

0개의 댓글