Camera instrinsic calibration
Camera instrinsic calibration
Camera Calibratin
calibration 이란?
💡
- 나는 ros2 에서 제공해주는 calibration 패키지를 통해 카메라의 캘리브레이션을 수행했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo apt install ros-humble-camera-calibration-parsers
sudo apt install ros-humble-camera-info-manager
sudo apt install ros-humble-launch-testing-ament-cmake
# 이 전에 내 ssh키를 github에 등록하도록 하자
ssh-keygen -t ed25519 -C "[email protected]"
cd ~/colcon_ws/src
git clone -b <ros2-distro> [email protected]:ros-perception/image_pipeline.git
cd ..
colcon build
source install/setup.bash
- 먼저 필요한 패키지를 다운 받는다. 이후 빌드를 진행한다.
1
2
3
ros2 topic list
ros2 topic hz /camera/image_raw
- 이런식으로 내 카메라 토픽이 ros2에서 잘 나오고 있는지 확인한다.
1
2
ros2 run camera_calibration cameracalibrator --size 9x9 --square 0.07 --ros-args -r image:=/usb_cam/image_raw -p camera:=/my_camera
파라미터들
📌 카메라 이름 관련
**c**,**-camera_name**→ 보정(calibration) 결과 YAML 파일 안에 저장될 카메라 이름을 지정합니다.(예:
--camera_name=my_camera→ 저장되는 파일의 루트 키가my_camera로 들어감)
📌 체스보드(패턴) 관련 옵션
**p**,**-pattern**→ 사용할 보정 패턴 종류 선택'chessboard': 일반 체스보드'circles': 원 패턴'acircles': 비대칭 원 배열(asymmetric circles)'charuco': ChArUco 패턴
**s SIZE**,**-size=SIZE**→ 체스보드의 내부 코너 개수 (예: 7x9 체스보드면--size 7x9)여기서 NxM은 “사각형 개수”가 아니라 “내부 교차점 개수”임에 주의!
**q SQUARE**,**-square=SQUARE**→ 한 칸의 실제 크기(단위: m).예: 20mm 정사각형이면
--square 0.02
📌 ROS 통신 관련 옵션
**-approximate=SECS**→ 스테레오 카메라처럼 두 이미지가 약간 시간 차이 있을 때, 몇 초까지 허용할지 지정.**-no-service-check**→ 실행 시set_camera_info서비스가 켜져 있는지 확인하는 과정을 생략. —
📌 최적화 관련 옵션
**-fix-principal-point**→ 주점(principal point)을 이미지 중앙으로 고정. (cx, cy를 변수가 아니라 고정값으로 둠)**-fix-aspect-ratio**→ 초점거리 fx, fy를 같게 맞춤 (픽셀 비율 1:1로 강제).**-zero-tangent-dist**→ 왜곡 보정에서 접선 왜곡(p1, p2)을 0으로 고정.**k NUM_COEFFS**,**-k-coefficients=NUM_COEFFS**→ 반径 왜곡 계수(k1~k6) 몇 개 쓸지 선택 (기본은 2개 k1, k2만).**-disable_calib_cb_fast_check**→ OpenCV 체스보드 코너 찾기에서 빠른 실패 검사(Fast check) 비활성화.(체스보드가 제대로 안 잡힐 때 이 옵션 켜면 더 정확히 찾을 수 있음, 대신 느려짐)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.





