realsense ros2 parameter

About_work·2024년 9월 9일
0

realsense

목록 보기
2/3

0. 교훈

ros2 launch realsense2_camera rs_launch.py \
depth_module.depth_profile:=640x480x30 \
rgb_camera.color_profile:=1280x720x30 \
depth_module.depth_format:=Z16 \
rgb_camera.color_format:=RGB8 \
enable_color:=true \
enable_depth:=true \
enable_sync:=true \
serial_no:=_831612073525 \
usb_port_id:=4-1 \
device_type:=d435 \
reconnect_timeout:=10.0 \
wait_for_device_timeout:=60.0 \
initial_reset:=true \
clip_distance:=1.5
ros2 launch realsense2_camera rs_launch.py \
depth_module.depth_profile:=640x480x30 \
rgb_camera.color_profile:=1280x720x30 \
depth_module.depth_format:=Z16 \
rgb_camera.color_format:=RGB8 \
enable_color:=true \
enable_depth:=true \
enable_sync:=true \
serial_no:=_034422070213 \
device_type:=d435 \
reconnect_timeout:=10.0 \
wait_for_device_timeout:=60.0 \
initial_reset:=true \
clip_distance:=1.5

0.1. 아래 내용을 명령어 입력 시 주입하려면?

depth_module.depth_profile:=640x480x30
rgb_camera.color_profile:=1280x720x30
depth_module.depth_format:=Z16
rgb_camera.color_format:=RGB8
  • enable_<stream_name>
    • enable_color
    • enable_depth
  • enable_sync
    • 적외선, 컬러, 깊이 등의 서로 다른 센서 프레임을 가장 근접한 시간에 모아 동일한 타임태그로 전송
    • pointcloud 같은 필터가 활성화된 경우 자동으로 수행

  • serial_no:

    • 주어진 시리얼 번호(serial_no)를 가진 장치에 연결합니다.
    • 기본적으로, 첫 번째 RealSense 장치에 연결합니다.
    • 주의: 시리얼 번호는 "_" 접두사를 사용하여 정의해야 합니다. 이는 ROS2의 숫자 문자열 자동 변환 문제에 대한 임시 해결책입니다.
    • 예시: 시리얼 번호 831612073525는 다음과 같이 설정할 수 있습니다:
      serial_no:=_831612073525
  • usb_port_id:

    • 주어진 USB 포트(usb_port_id)에 연결된 장치에 연결합니다.
    • 예시: usb_port_id:=4-1 또는 usb_port_id:=4-2
    • 기본적으로, 장치 선택 시 USB 포트를 무시합니다.
  • device_type:

    • 주어진 device_type 정규 표현식 패턴과 일치하는 이름을 가진 장치에 연결합니다.
    • 기본적으로, 장치 유형을 무시합니다.
    • 예시:
      • device_type:=d435는 d435 및 d435i와 일치합니다.
      • device_type:=d435(?!i)는 d435와 일치하지만 d435i와는 일치하지 않습니다.
  • reconnect_timeout:

    • 드라이버가 장치에 연결할 수 없을 때, 지정된 초 후에 다시 연결을 시도합니다.
    • 예시: reconnect_timeout:=10
  • wait_for_device_timeout:

    • 지정된 장치를 찾을 수 없는 경우, 종료하기 전까지 wait_for_device_timeout 초 동안 대기합니다.
    • 기본값: wait_for_device_timeout < 0은 무한정 대기함을 의미합니다.
    • 예시: wait_for_device_timeout:=60
  • initial_reset:

    • 장치가 올바르게 종료되지 않았고, 펌웨어 문제로 인해 리셋이 필요한 경우 이 파라미터를 true로 설정하면 사용 전에 장치가 리셋됩니다.
    • 예시: initial_reset:=true
  • base_frame_id:

    • 모든 정적 변환이 참조하는 frame_id를 정의합니다.
  • clip_distance:

    • 깊이 이미지에서 주어진 값을 초과하는 모든 값을 제거합니다 (단위: 미터). 비활성화하려면 음수 값을 설정하세요.
    • 예시: clip_distance:=1.5

1. 파라미터

1.1. 사용 가능한 파라미터:

  • 전체 파라미터 목록을 보려면 다음 명령어를 입력하세요:

    ros2 param list
  • 특정 파라미터 값을 읽으려면:

    ros2 param get <노드 이름> <파라미터 이름>

    예시:

    ros2 param get /camera/camera depth_module.emitter_enabled
  • 파라미터 값을 설정하려면:

    ros2 param set <노드 이름> <파라미터 이름> <>

    예시:

    ros2 param set /camera/camera depth_module.emitter_enabled 1

1.2. 런타임 중 수정 가능한 파라미터:

  • 모든 필터 및 센서 내부 파라미터.

  • 비디오 센서 파라미터: (depth_module 및 rgb_camera)

    • 적어도 <stream_type>_profile 파라미터를 포함합니다.
    • 프로필 파라미터는 다음 형식의 문자열입니다: <width>X<height>X<fps> (구분자는 X, x 또는 ","가 될 수 있으며, 공백은 무시됩니다.)
    • 예시:
      depth_module.depth_profile:=640x480x30
      depth_module.infra_profile:=640x480x30
      rgb_camera.color_profile:=1280x720x30
    • 주의: depth_module.infra_profile은 모든 적외선 스트림(infra 0, 1, 2)에 공통으로 적용됩니다.
    • 지정된 파라미터 조합이 장치에서 지원되지 않으면 기본값 또는 이전에 설정된 구성이 사용됩니다.
    • 지원되는 프로필 목록을 얻으려면:
      ros2 param describe <노드 이름> <파라미터 이름>
  • <stream_name>_format:

    • 이 파라미터는 스트림 형식을 선택하는 데 사용되는 문자열입니다.

    • <stream_name>은 infra, infra1, infra2, color, depth 중 하나일 수 있습니다.

    • 예시:

      depth_module.depth_format:=Z16
      depth_module.infra1_format:=y8
      rgb_camera.color_format:=RGB8
    • 지원되는 형식 목록을 얻으려면:

      ros2 param describe <노드 이름> <파라미터 이름>
  • 지원되지 않는 프로필 형식이나 값이 지정되면 경고 메시지가 나타납니다. 프로필 설정을 업데이트하고 스트림을 다시 활성화해야 변경 사항이 적용됩니다.

  • 연결된 센서에서 지원되는 프로필 목록을 확인하려면 rs-enumerate-devices 명령어를 실행하세요.

1.3. enable_<stream_name>:

  • 특정 스트림을 활성화할지 여부를 선택합니다. 기본적으로 이미지 스트림은 true이며, 방향 스트림(gyro, accel 등)은 false입니다.
  • 예시:
    enable_infra1:=true
    enable_color:=false

1.4. enable_sync:

  • 적외선, 컬러, 깊이 등의 서로 다른 센서 프레임을 가장 근접한 시간에 모아 동일한 타임태그로 전송합니다.
  • pointcloud 같은 필터가 활성화된 경우 자동으로 수행됩니다.

1.5. <stream_type>_qos:

  • 토픽이 게시되는 QoS(품질 서비스)를 설정합니다.

  • <stream_type>은 infra, infra1, infra2, color, depth, gyro, accel 중 하나일 수 있습니다.

  • 사용 가능한 값: SYSTEM_DEFAULT, DEFAULT, PARAMETER_EVENTS, SERVICES_DEFAULT, PARAMETERS, SENSOR_DATA.

  • 예시:

    depth_qos:=SENSOR_DATA
  • Pointcloud의 QoS는 pointcloud 필터의 pointcloud.pointcloud_qos 파라미터로 제어됩니다. 자세한 내용은 후처리 필터 섹션을 참조하세요.

1.6. tf_publish_rate:

  • 동적 변환이 게시되는 주기(Hz)를 설정합니다. 기본값은 0.0 Hz로, 이는 동적 TF가 게시되지 않음을 의미합니다.
  • 이 파라미터는 publish_tf 파라미터에 의존합니다.
  • 만약 publish_tf가 false로 설정되어 있으면, tf_publish_rate 값이 0.0 Hz보다 크더라도 TF는 게시되지 않습니다.
  • 만약 publish_tf가 true이고 tf_publish_rate가 0.0 Hz보다 크다면, 지정된 주기로 동적 TF가 게시됩니다.

1.7. unite_imu_method:

  • D400 카메라에서 IMU(자이로 및 가속도) 데이터를 결합하여 /camera/camera/imu 토픽에 게시하는 방법을 설정합니다.

  • 값:

    • 0: IMU 토픽을 생성하지 않음.
    • 1: 자이로 메시지에 가장 최근의 가속도 메시지를 첨부.
    • 2: 자이로 메시지에 가속도 데이터를 시간에 맞춰 보간하여 첨부.
  • 이 파라미터가 동적으로 업데이트되면, 변경 사항을 적용하려면 자이로 또는 가속도 스트림을 다시 활성화해야 합니다.

1.8. accelerate_gpu_with_glsl:

  • GPU 가속을 활성화하는지 여부를 설정합니다. 필터 처리 중 GPU 가속화를 지원합니다.
  • 이 파라미터가 동적으로 업데이트될 때, 노드는 다음 과정을 거칩니다:
    • 비디오 센서를 중지합니다.
    • 필요한 GLSL 구성을 수행합니다.
    • 비디오 센서를 다시 시작합니다.
  • GPU 가속을 활성화하려면 빌드 중에 BUILD_ACCELERATE_GPU_WITH_GLSL을 활성화해야 합니다:
    colcon build --cmake-args '-DBUILD_ACCELERATE_GPU_WITH_GLSL=ON'

1.9. 런타임 중 변경할 수 없는 파라미터:

  • serial_no:

    • 주어진 시리얼 번호(serial_no)를 가진 장치에 연결합니다.
    • 기본적으로, 첫 번째 RealSense 장치에 연결합니다.
    • 주의: 시리얼 번호는 "_" 접두사를 사용하여 정의해야 합니다. 이는 ROS2의 숫자 문자열 자동 변환 문제에 대한 임시 해결책입니다.
    • 예시: 시리얼 번호 831612073525는 다음과 같이 설정할 수 있습니다:
      serial_no:=_831612073525
  • usb_port_id:

    • 주어진 USB 포트(usb_port_id)에 연결된 장치에 연결합니다.
    • 예시: usb_port_id:=4-1 또는 usb_port_id:=4-2
    • 기본적으로, 장치 선택 시 USB 포트를 무시합니다.
  • device_type:

    • 주어진 device_type 정규 표현식 패턴과 일치하는 이름을 가진 장치에 연결합니다.
    • 기본적으로, 장치 유형을 무시합니다.
    • 예시:
      • device_type:=d435는 d435 및 d435i와 일치합니다.
      • device_type:=d435(?!i)는 d435와 일치하지만 d435i와는 일치하지 않습니다.
  • reconnect_timeout:

    • 드라이버가 장치에 연결할 수 없을 때, 지정된 초 후에 다시 연결을 시도합니다.
    • 예시: reconnect_timeout:=10
  • wait_for_device_timeout:

    • 지정된 장치를 찾을 수 없는 경우, 종료하기 전까지 wait_for_device_timeout 초 동안 대기합니다.
    • 기본값: wait_for_device_timeout < 0은 무한정 대기함을 의미합니다.
    • 예시: wait_for_device_timeout:=60
  • rosbag_filename:

    • rosbag 파일에서 토픽을 게시합니다. rosbag 파일을 로드하는 두 가지 방법이 있습니다:
      • 명령줄:
        ros2 run realsense2_camera realsense2_camera_node -p rosbag_filename:="/full/path/to/rosbag.bag"
      • Launch 파일:
        rosbag 파일의 전체 경로로 rosbag_filename 파라미터를 설정합니다 (참고: realsense2_camera/launch/rs_launch.py).
  • initial_reset:

    • 장치가 올바르게 종료되지 않았고, 펌웨어 문제로 인해 리셋이 필요한 경우 이 파라미터를 true로 설정하면 사용 전에 장치가 리셋됩니다.
    • 예시: initial_reset:=true
  • base_frame_id:

    • 모든 정적 변환이 참조하는 frame_id를 정의합니다.
  • clip_distance:

    • 깊이 이미지에서 주어진 값을 초과하는 모든 값을 제거합니다 (단위: 미터). 비활성화하려면 음수 값을 설정하세요.
    • 예시: clip_distance:=1.5
  • linear_accel_cov, angular_velocity_cov:

    • IMU 읽기에 적용되는 분산 값을 설정합니다.
  • hold_back_imu_for_frames:

    • 이미지 처리는 시간이 걸리므로, 이미지가 래퍼에 도착한 순간과 ROS 환경에 게시되는 순간 사이에 시간 차이가 발생합니다. 이 시간 동안 IMU 메시지가 계속 도착하며, IMU 메시지가 더 늦은 타임스탬프로 이미지보다 먼저 게시되는 상황이 발생할 수 있습니다. 만약 이것이 문제가 된다면, 이 파라미터를 true로 설정하여 IMU 메시지를 이미지 처리가 끝날 때까지 보류하고, 한 번에 모두 게시하여 도착 순서대로 게시되도록 할 수 있습니다. 이 경우에도 각 메시지의 헤더에 있는 타임스탬프는 원래의 시간을 반영합니다.
  • publish_tf:

    • 정적 및 동적 TF 게시를 활성화/비활성화하는 boolean 값입니다. 기본값은 true입니다.
    • 따라서 기본적으로 정적 TF는 게시됩니다.
    • 동적 TF가 필요하면, tf_publish_rate 파라미터를 0.0 Hz보다 큰 값으로 설정해야 합니다.
    • 이 파라미터가 false로 설정되면, tf_publish_rate 값이 0.0 Hz보다 크더라도 정적 및 동적 TF는 게시되지 않습니다.
  • diagnostics_period:

    • /diagnostics 토픽에서 진단 업데이트 사이의 기간을 설정하는 양의 실수 값입니다.
    • 0 또는 음수 값은 진단 토픽이 게시되지 않음을 의미합니다. 기본값은 0입니다.
    • /diagnostics 토픽에는 장치 온도와 활성화된 스트림의 실제 주파수에 대한 정보가 포함됩니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글