본문으로 건너뛰기

M05.05 · tf2·RViz·rqt와 rosbag2/MCAP 입문

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 변환의 source·target·시각을 명시하고 가상 좌표계 연결에서 점을 변환한다.
  • RViz·rqt·원시 메시지 관측의 역할을 구별하여 표시 실패에 필요한 증거를 선택한다.
  • rosbag2와 MCAP의 역할을 설명하고 기록 범위·재생 배속·시간 조건에서 재현 주장의 한계를 판정한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M02.02의 좌표 변환과 M05.01~04의 이름·QoS·시각 기록을 사용한다. 기본 실습은 종이 변환과 합성 메타데이터 해석이다. 실제 bag 재생이나 로봇 명령 송신은 하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

점에는 좌표계뿐 아니라 시각도 붙는다

tf2는 여러 좌표계의 관계를 시간에 따라 관리하고 변환을 조회하는 라이브러리다. M02.02에서 정의한 변환을 ROS 시스템에서 필요한 시각에 찾아 쓰는 역할로 연결하면 이해하기 쉽다. 변환의 방향은 ‘카메라에서 베이스로’ 같은 말만 암기하지 말고 입력 자료의 좌표계인 source와 결과를 표현할 target을 적는다. target=base, source=camera인 조회는 camera로 표현한 점을 base로 바꾸는 데 필요한 변환을 구하는 질문이다.

TF·표시·기록의 다른 역할: TF → RViz → rqt → rosbag2/MCAP.그림 원본 크기로 보기

그림 M05.05-1. 각 칸은 서로 다른 역할/근거다. 나란히 비교할 항목이며 위아래가 시간 순서를 뜻하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

가상 센서 camera가 base에서 x방향 0.2 m 앞에 있고 축 방향은 같다고 하자. camera에서 본 점 (1,0,0) m는 base에서 (1.2,0,0) m다. base가 world에서 (2,0,0) m에 있고 방향도 같으면 world에서는 (3.2,0,0) m다. 역으로 world 점에서 camera 좌표를 구하려면 총 이동 2.2 m를 빼서 (1,0,0) m로 돌아온다. 회전이 있으면 이동을 무조건 더하는 계산을 사용할 수 없으며 행렬의 합성·역변환 순서를 따라야 한다.

동적 변환은 시각에 따라 달라진다. 위 수치가 관측 시각 t=1.0 s의 관계인데, 현재 t=1.2 s의 base 위치가 x=2.1 m라고 하자. 과거 센서 관측을 현재 변환으로 옮기면 world의 x는 3.3 m가 되어 같은 시각의 계산보다 0.1 m 다르다. 물체가 그만큼 움직였다고 바로 결론 내릴 수 없다. 서로 다른 시각의 프레임을 섞은 것이다. tf2의 버퍼에 필요한 시각의 연결 정보가 없으면 조회가 실패할 수 있고, 요청 시각이 보관 범위 밖이면 시간 외삽 문제가 생길 수 있다. ‘최신 변환을 쓰면 해결’은 의미를 바꾸므로 정확한 해결책이 아닐 수 있다.

물리적으로 고정된 장착 관계는 정적 변환으로, 움직이는 관절이나 베이스 관계는 동적 변환으로 표현한다. 하지만 데이터가 정적 채널로 왔다는 사실이 실제 장착의 정확성을 보증하지는 않는다. 오프셋·축 방향·단위·프레임 이름을 검증해야 한다. 기존 2.2 변환 설명과 4.2 센서 프레임은 이 기하와 실제 파이프라인을 잇는 자료다.

화면이 보여 주는 것은 어떤 증거인가

RViz는 ROS 자료를 3차원으로 시각화하는 도구이며 물리 시뮬레이터가 아니다. Fixed Frame은 자료를 모아 표현하는 기준 좌표계다. 선택한 표시 항목이 센서 프레임의 자료를 Fixed Frame으로 바꾸려면 해당 시각의 변환 연결이 필요하다. 점군 메시지가 도착해도 변환이 없으면 기대 위치에 표시되지 않을 수 있다. 표시 항목의 상태·Topic·타입·QoS·frame_id·stamp와 Fixed Frame을 함께 확인한다. 화면에 로봇이 예쁘게 보인다는 사실만으로 질량·충돌·구동·센서 보정이 검증된 것도 아니다.

rqt는 여러 ROS 관측·조작 도구를 플러그인으로 제공하는 GUI 틀이다. 그래프를 보는 플러그인과 값을 그리는 도구는 관찰 대상이 다르다. 연결 그림에 선이 있다고 매 표본이 제시간에 처리되거나 단위가 맞는다는 뜻은 아니다. 원시 메시지의 필드와 타임스탬프, Endpoint 정보, 표시 도구의 상태를 나누어 읽어야 한다. 이 단위에서는 도구 화면을 실제로 열지 않고 ‘이 관찰로 무엇을 알 수 있는가’를 판단한다. GUI에는 명령을 보내는 기능도 있으므로 시각화와 제어 동작을 같은 것으로 취급하지 않는다.

가상 장애에서 노드/Topic의 연결은 보이고 점군의 수신 개수도 늘지만, RViz 상태에 필요한 프레임 연결이 없다고 나온다면 먼저 tf 연결과 요청 시각을 조사한다. 생산자가 아무 자료도 보내지 않는다는 결론은 기존 증거와 맞지 않는다. 반대로 원시 수신조차 확인되지 않았다면 표시 설정만 바꾸기 전에 이름·타입·QoS·발견 단계부터 점검한다. 원인 후보를 증거 순서로 좁히는 것이 도구를 많이 켜는 것보다 중요하다.

기록은 세계 전체의 복사본이 아니다

rosbag2는 ROS 통신 자료를 기록하고 재생하는 도구다. MCAP은 사용할 수 있는 저장 형식이고 rosbag2_storage_mcap은 그 형식을 지원하는 플러그인이다. 파일 확장자가 .mcap이라고 실제 환경 전체가 기록된 것은 아니다. 어떤 Topic과 타입, 어느 시간 범위, 어떤 QoS와 시계 및 설정으로 기록했는지를 함께 남긴다. 기록기가 자료를 받지 못했거나 디스크 처리가 따라가지 못한 상황은 저장 형식만으로 없어지지 않는다.

가상 bag에 /camera/points와 /joint_states만 있고 /tf와 /tf_static 및 외부 보정 파일이 없다면, 나중에 점군을 world로 옮길 근거가 충분하지 않을 수 있다. 정적 보정을 별도 문서로 보존했다면 일부를 보완할 수 있지만 무엇을 복구했는지 명시해야 한다. 파일의 메시지 개수는 저장된 개수이지 센서가 원래 생성한 전체 개수와 자동으로 같지 않다. 원본 생성 카운터나 누락 기록이 있어야 손실을 판정할 수 있다.

재생 배속 2는 기록의 시간 간격을 두 배 빠르게 진행하려는 설정이다. 기록상 0.0, 0.1, 0.2 s의 세 사건은 이상적인 일정 배속에서 시작 대비 0, 0.05, 0.10 s의 벽시계 간격에 대응한다. 실제 스케줄과 소비자의 처리 속도 때문에 정확한 전달 시각이 보장되는 것은 아니다. 메시지 내부의 획득 stamp가 자동으로 현재 벽시계로 바뀐다고도 가정하지 않는다. 소비자의 use_sim_time과 재생 /clock을 포함한 시계 정합은 M05.06에서 다룬다.

재생은 저장된 자료를 다시 발행할 수 있어 외부 실행기가 연결된 환경에서는 단순한 동영상 감상과 다르다. 이 단위의 기본 활동은 표를 읽는 것이며 실제 재생 명령을 실행하지 않는다. 입력을 다시 넣어 같은 분석을 비교하는 것과 새로운 물리 환경에서 성능이 검증된 것은 구분한다. 모델·설정·버전·시계·누락 범위를 남겨야 어떤 결과를 재현했다고 주장하는지 명확해진다.

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    4.3 TF2 트리 설계

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    4.5 rosbag2와 MCAP 원본 기록

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 요약 레슨 · 관련 기존 자료 · 보충 참고

    TF2 프레임 계약과 timestamp

    목표 일부 관련

    핵심 요약 레슨입니다. 자세한 유도·수식·코드는 연결된 상세 본문을 함께 읽으세요.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

합성 변환은 t=1.0 s에서 world의 base 위치 x=2.0 m, base의 camera 위치 x=0.2 m이며 모든 축은 같다. camera 점은 (1,0,0) m다. t=1.2 s에서는 base 위치만 x=2.1 m다. 가상 관측 도구는 점군 3개 수신을 보고하지만 RViz 상태는 ‘필요한 프레임 연결 없음’이다. bag 메타데이터에는 /camera/points와 /joint_states만 있고 변환과 보정 파일은 없다. 세 자료의 기록 시각은 0.0/0.1/0.2 s다.

  1. target=world/source=camera와 관측 시각을 명시하고 점의 world 좌표를 구한다. 현재 변환을 섞으면 생기는 차이와 역변환 결과를 계산한다.
  2. RViz 미표시를 생산자의 미발행으로 단정할 수 있는지 판정한다. Fixed Frame·frame_id·요청 시각·Topic/QoS 중 우선 확인할 증거와 그 이유를 쓴다.
  3. bag만으로 world 좌표의 시각화를 재현하기에 빠진 자료를 찾는다. 배속 2의 이상적인 상대 벽시계 시각을 구하고, 이것이 실제 전달 기한이나 실물 성능의 증거인지 설명한다.

관찰 대상은 합성 표다. bag 재생이나 명령 발행은 하지 않는다. 막히면 프레임 연결과 시각을 그림에 적고 저장된 자료와 외부 설정을 구분한다. 누락된 변환을 임의의 0으로 채우지 않는다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

관련 기존 자료 · 보충해서 읽기

  • 기존 실습 원고 · 관련 기존 자료 · 보충 참고

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

    목표 일부 관련

    실습 원고 참조. 로컬/ROS/Isaac/GPU/실물 실행과 장비 없는 기본 경로의 목표 검수는 미실시. 연결된 원고의 환경·절차를 확인하세요. 원고 열람은 실습 수행을 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/package.xml

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/resource/sensor_pipeline

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/sensor_pipeline/__init__.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/sensor_pipeline/approx_sync.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/sensor_pipeline/static_camera_tf.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/sensor_pipeline/synthetic_sensors.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/setup.cfg

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    04_sensor_data_pipeline/code/ros2_jazzy/sensor_pipeline/setup.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

축 방향이 같고 같은 시각에 base의 camera 이동이 (0.3,0,0) m다. camera 점 (0.7,0,0) m를 base로 바꾸고 역변환해 보라. 필요한 과거 변환이 없을 때 최신 변환으로 바꾸는 것이 항상 타당한가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

rqt의 연결 그림에는 선이 있지만 RViz에는 자료가 안 보인다. 이 사실만으로 무엇을 확정할 수 없는가? 원시 수신과 변환 및 표시 설정을 구분하여 요청할 증거를 제안하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

기록 시각이 0/0.2/0.4 s인 가상 MCAP을 배속 0.5로 해석한다. 이상적인 상대 벽시계 시각은 무엇인가? MCAP 파일 하나만으로 원본의 모든 표본·시계·보정·실물 성능이 재현되었다고 할 수 있는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

관련 기존 자료 · 보충해서 읽기

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    TF2에서 camera frame에 두 parent가 생기면 안 되는 이유는 무엇인가?

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    기존 교재 해설·평가 기준을 참고할 수 있습니다. 답안 평가 후 화면의 비교 항목도 확인하세요.

  • 기존 보고서 · 관련 기존 자료 · 보충 참고

    실습 보고서 · 기존 원고와 평가 안내

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 요약 점검 · 관련 기존 자료 · 보충 참고

    한 child frame에 parent가 두 개면 안 되는 이유는?

    목표 일부 관련

    단답은 키워드 포함 여부이며 의미 이해를 보장하지 않음

    기존 교재 해설·평가 기준을 참고할 수 있습니다. 답안 평가 후 화면의 비교 항목도 확인하세요.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.