image_pipeline
표준 ROS 카메라 스택: 캘리브레이션, 렉티피케이션, 스테레오, 깊이
라이선스
BSD-3-Clause
개요
image_pipeline은 ros-perception이 유지 관리하는 ROS의 표준 카메라 처리 스택입니다. 이 패키지들은 로봇 카메라의 원시 드라이버 출력을 캘리브레이션되고 렉티파이된 이미지와 3D 데이터로 변환합니다: camera_calibration(대화형 체커보드 캘리브레이션), image_proc(디베이어링과 렉티피케이션), stereo_image_proc(디스패리티와 포인트 클라우드), depth_image_proc(깊이-포인트 클라우드 변환 및 정합), image_view. 카메라가 달린 거의 모든 ROS 로봇이 이 파이프라인의 일부를 실행합니다.
이 스택은 image_transport 토픽과 camera_info 캘리브레이션 메시지로 연결된 컴포저블 ROS 2 노드들로 구성됩니다. camera_calibration은 체커보드 뷰에서 단안 또는 스테레오 내부 파라미터를 계산해 카메라 드라이버에 기록하는 고전적인 대화형 GUI를 제공합니다. image_proc은 원시 이미지와 camera_info를 받아 mono/color 및 렉티파이 변형을 출력하며 Bayer 디모자이킹과 왜곡 제거를 처리합니다; crop/resize/decimate 노드는 스트림을 저비용으로 재구성합니다. stereo_image_proc은 렉티파이된 쌍 사이에서 블록 매칭 디스패리티를 계산해 스테레오 포인트 클라우드를 생성하고, depth_image_proc은 RGB-D 센서의 깊이 이미지를 포인트 클라우드로 변환하고 깊이를 컬러 프레임에 정합하며 metric/quantized 인코딩을 변환합니다. 모든 노드가 ROS 2의 제로카피 인트라 프로세스 파이프라인을 위한 런타임 컴포지션을 지원하며, 이 스택이 확립한 관례 — camera_info 의미론, image_raw/image_rect 토픽 네이밍 — 는 ROS 생태계 전반에서 카메라 드라이버와 인식 코드 사이의 사실상의 계약입니다.
중요한 이유
image_pipeline은 ROS에서 카메라가 동작하는 방식을 정의합니다: 대부분의 로보틱스 엔지니어가 첫 카메라를 캘리브레이션한 곳이 바로 이 캘리브레이션 GUI이며, 그 토픽과 camera_info 관례는 어떤 ROS 카메라 드라이버든 어떤 ROS 인식 스택과도 대화할 수 있게 하는 계약입니다.
해결하는 문제
원시 카메라 출력은 캘리브레이션되지 않고, 왜곡되어 있으며, Bayer 패턴의 2D 데이터입니다. image_pipeline은 이를 표준 컴포저블 노드로 캘리브레이션·렉티파이된 이미지, 디스패리티 맵, 포인트 클라우드로 바꿉니다 — 인식 코드가 카메라 배관 작업을 다시 구현할 필요가 없도록 말입니다.
핵심 요점
- 단안 및 스테레오 카메라를 위한 대화형 체커보드 캘리브레이션 GUI
- image_proc: camera_info 기반 디베이어링, 왜곡 제거, 렉티피케이션
- stereo_image_proc: 블록 매칭 디스패리티와 스테레오 포인트 클라우드
- depth_image_proc: 깊이-포인트 클라우드 변환과 깊이-컬러 정합
- 제로카피 인트라 프로세스 파이프라인을 지원하는 컴포저블 ROS 2 노드
대상
- 카메라를 통합하는 ROS 개발자
- 스테레오/RGB-D 파이프라인을 구축하는 인식 엔지니어
- 첫 카메라를 캘리브레이션하는 로보틱스 학생
- ROS 관례를 따르는 카메라 드라이버 작성자
한계
- 고전적인 블록 매칭 스테레오는 학습 기반 또는 SGM 기반 매처에 비해 구식
- 캘리브레이션 GUI 워크플로는 수동 — 타깃 없는 자동 캘리브레이션 없음
- 성능 튜닝(QoS, 컴포지션)은 통합하는 사람의 몫