px4_sim

ros2 run rtabmap_odom rgbd_odometry

정지홍 2025. 9. 30. 11:49

ros2  run  rtabmap_odom  rgbd_odometry

  • RTAB-MAPRGB-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초까지 기다린다.
      • 오래기다리면 지연이 커지며, 너무 짧으면 변환 실패가 늘어난다.
        ==> 잠깐 늦게 올라와도 프레임 미존재 에러를 줄여준다.

  • 시간 동기화 파라미터 
    •  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.....
  • Qos 파라미터 
    •  qos:=2
      • 이는 image / depth / point 같은 센터 스트림 구독 QoS를 지정한다.
        • 0 : system의 default QoS
        • 1 : Default Qos ( usaully Reliable )
        • 2 : Sensor Data Qos ( best effort , 큐가 작음 ) 
      • 카메라 정보도 센서 토픽과 같게 맞춰야 함.

  • 기타
    • 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여야한다.