px4_sim
ros2 run rtabmap_odom rgbd_odometry
정지홍
2025. 9. 30. 11:49
ros2 run rtabmap_odom rgbd_odometry
- RTAB-MAP의 RGB-D odometry node를 실행한다.
- 이 노드는 "RGB + Depth"를 이용해서 odometry를 계산함. ( imu선택적으로 사용 )
- 뒤에 오는 -p는 파라미터를 의미. -r은 remap을 의미.
ros2 run rtabmap_odom rgbd_odometry --ros-args -p frame_id:=base_link -p odom_frame_id:=odom -p publish_tf:=true -p wait_for_transform:=0.8 -p approx_sync:=true -p approx_sync_max_interval:=0.02 -p qos:=2 -p qos_camera_info:=2 -r rgb/image:=/camera/camera/color/image_raw -r depth/image:=/camera/camera/depth/image_rect_raw -r rgb/camera_info:=/camera/camera/color/camera_info -r depth/camera_info:=/camera/camera/depth/camera_info
-r odom:=/rtabmap/odom -r imu:=/mavros/imu/data
- p 파라미터 옵션을 의미
- 프레임 및 TF 관련 파라미터
- frame_id:=base_link
- 이 노드가 내보낼 자식프레임( 기체/로봇 바디 프레임 ).
- publish_tf:=true라면 odom_frame_id ---> frame_id의 TF가 발행된다.
- 따라서 카메라에서 frame_id까지의 정적 TF가 반드시 존재해야함.
- odom_frame_id:=odom
- odometry의 부모 프레임이다. ( 기본은 odom을 많이 사용함 )
- 즉, TF는 odom ---> base_link가 된다. ( 다른 odometry가 이미 odom ---> base_link를 쓴다면 충돌발생함 )
- publish_tf:=true
- 위에서 말한 TF( odom ---> base_link )를 해당 노드가 직접 발행한다.
- 다른 것과 충돌날것 같아서 끄고 싶으면 false로 설정.
- wait_for_transform:=0.8
- 센서 header timestamp기준으로, 필요한 TF를 최대 0.8초까지 기다린다.
- 오래기다리면 지연이 커지며, 너무 짧으면 변환 실패가 늘어난다.
==> 잠깐 늦게 올라와도 프레임 미존재 에러를 줄여준다.
- frame_id:=base_link
- 시간 동기화 파라미터
- approx_sync:=true
- RGB , Depth , CameraInfo가 정확한 동기화가 아닐때, 근사 동기화로 묶어서 처리한다.
- approx_sync_max_interval:=0.02
- 근사 동기화에서 허용하는 최대 timestamp 간격.(초 단위)
- 드롭이 많다면, 0.03~0.05로 조금 키우고, 지연이 크면 줄인다.
- 만약 30FPS라면 0.02~0.03을 추천.... 60fps라면 0.01~0.015.....
- approx_sync:=true
- Qos 파라미터
- qos:=2
- 이는 image / depth / point 같은 센터 스트림 구독 QoS를 지정한다.
- 0 : system의 default QoS
- 1 : Default Qos ( usaully Reliable )
- 2 : Sensor Data Qos ( best effort , 큐가 작음 )
- 카메라 정보도 센서 토픽과 같게 맞춰야 함.
- 이는 image / depth / point 같은 센터 스트림 구독 QoS를 지정한다.
- qos:=2
- 기타
- topic_queue_size (int) : 이미지/depth subscriber 큐의 크기 ( 기본 1 )
- sync_queue_size (int) : 타임 동기 큐의 크기 ( 기본 5 )
- subscibe_rgbd (bool) : 분리된 RGB/Depth 대신에 한 묶음으로 받기
- rgbd_cameras (int) : 멀티 카메라 개수
-r 옵션은 토픽 remap에 관한 옵션이다.
- rgb/image :=
- 컬러 이미지 입력을 뒤에 따라오는 토픽으로 remap한다.
- depth/image :=
- depth image입력을 뒤에 따라오는 topic으로 remap한다.
- rgb/camera_info :=
- '내부 + 외부' 파라미터가 들어있는 카메라 정보
- odom :=
- 노드가 내보내는 odometry의 출력 topic이름을 지정
- 이 topic을 EKF/local planner등에 바로 연결이 가능하다.
- imu :=
- 선택입력. 회전 안정화와 단기 모션 예측에 도움을 줌.
- 단, 카메라와 같은 timestamp여야한다.