[SIM] 실습 4-2: TF2와 ApproximateTime

cd ebook/book/04_sensor_data_pipeline
source /opt/ros/jazzy/setup.bash
cd code/ros2_jazzy
colcon build --symlink-install --packages-select sensor_pipeline
source install/setup.bash

새 터미널마다 위의 ROS 환경과 install/setup.bash를 source한 뒤 다음을 실행한다.

# 터미널 A: 30 Hz Image + 50 Hz JointState
ros2 run sensor_pipeline synthetic_sensors

# 터미널 B: 고정 카메라 TF
ros2 run sensor_pipeline static_camera_tf

# 터미널 C: 근사 동기화
ros2 run sensor_pipeline approx_sync --ros-args -p slop_s:=0.015

목표

카메라 TF 트리를 확인하고 image-joint timestamp 차이를 측정한다.

절차

  1. ros2 run sensor_pipeline synthetic_sensors로 30 Hz Image와 50 Hz JointState를 생성한다.
  2. static_camera_tf를 실행하고 tf2_echo로 변환을 확인한다.
  3. 별도 터미널에서 approx_sync의 slop_s를 0.005, 0.015, 0.050으로 바꾼다.
  4. 각 설정의 pair 수, delta p95, 최대 delta를 기록한다.
  5. synthetic_sensors의 image_offset_ms와 jitter_ms를 바꾸고 callback 비율을 비교한다.
  6. publisher와 subscriber QoS를 일부러 다르게 하고 ros2 topic info -v로 진단한다.

제출물

  • TF tree 그림
  • slop별 품질 표
  • 선택한 운영 slop과 근거

장비 없이 먼저 해보기

가상실습

실제 장비의 정밀한 동작을 재현하는 대신, 제어값을 바꾸고 결과를 관찰하는 실습 흐름을 안전하게 연습합니다.

Browser simulation

멀티레이트 센서 시간 정합

서로 다른 주기의 카메라와 관절 상태 메시지를 timestamp 기준으로 짝지어 데이터셋에 넣을지 판단합니다.

개념 모형
실습 과제: offset을 줄이거나 허용 오차를 조절하여 채택률을 높이고, 너무 큰 허용 오차가 데이터 의미를 흐릴 수 있는 이유를 설명해 보세요.
Camera 15 Hztimestamp stream
Joint 50 Hztimestamp stream

image stamp

0.000s

joint stamp

0.042s

현재 Δt

42ms

허용 오차

30ms

정합 판정

폐기

동기화 범위 밖

  • ›대기: 허용 오차와 timestamp offset을 비교하세요.
단순화 안내: 지연, 마찰, 백래시, 센서 비선형성 등 실제 장비의 모든 특성을 재현하지 않습니다. 실물 적용 전에는 저속·제한된 작업공간·비상 정지 조건에서 다시 검증하세요.
가상실습 해설과 적용 범위

센서 주기와 시간 오프셋을 달리해 같은 시각의 표본이 언제 사라지는지 관찰하세요. 허용 시간 차이를 키우면 매칭 수는 늘어도 서로 다른 순간의 데이터를 묶을 위험이 커집니다. 실제 센서 좌표 변환과 rosbag 기록 전체를 재현하는 도구는 아닙니다.

직접 답하고 피드백 받기

답안은 이 브라우저에 저장됩니다. AI 평가는 학습을 위한 피드백이며 실제 코드 실행이나 장비 동작을 검증하지 않습니다.

1. 수행 결과와 근거

위 과제를 수행하고 설정값, 관찰 결과, 해석과 개선안을 작성하세요. 실제 장비 없이 한 경우 가상실습 결과임을 명시하세요.

0 / 8,000자 · 최소 10자
이 장의 예제 코드·설정 파일 (12)

이 장의 자가 점검·가상실습