AEGLOSLAB ROS 2 Jazzy 대전

부록 부록

A.3 REP 색인

A.3.1 이 부록의 사용법

REP(ROS Enhancement Proposal)는 ROS의 설계 결정이 기록되는 문서다. 규약이 왜 그렇게 정해졌는지, 어떤 대안이 검토되고 기각되었는지가 여기 남는다(15.5.3).

이 부록은 이 책이 참조한 REP들의 색인이며, 각각이 무엇을 다루고 이 책의 어느 장과 연결되는지를 정리한다.

정직: REP 번호와 제목은 원문으로 반드시 확인하라(확인 필요). 이 색인은 기억과 관행에 기댄 개관이며, 번호가 틀렸거나 제목이 다를 수 있다. REP는 개정·대체되기도 하므로 현재 상태를 확인해야 한다. 이 책은 REP 원문을 인용하지 않으며, 여기 적힌 요약은 해당 REP를 찾아가기 위한 실마리로만 사용하라. 이 환경에서 확인하지 않았다(목차 3).

REP를 찾는 법:

방법설명
공식 REP 색인전체 목록·상태
번호로 직접REP 번호를 알 때
검색주제어 + "REP"
관련 패키지 문서종종 REP를 인용

A.3.2 좌표·단위·센서 규약

이 책에서 가장 자주 인용한 REP들이다.

REP(확인 필요)주제이 책의 장
REP 103표준 단위와 좌표 규약(SI, 오른손 z-up)7.1.2·5.1
REP 105이동 플랫폼 좌표 프레임(map·odom·base_link)5.1.7·7.1.3
REP 145IMU 드라이버 규약7.1.5·7.6
REP 117거리 측정의 정보 표현(무한·범위 밖)7.5
REP 118깊이 이미지 표현7.2·7.4

견해: REP 103과 105는 이 책 전체의 전제다. 단위(미터·라디안·초), 축 방향(x 전방·y 좌측·z 상방), 프레임 계층(map → odom → base_link)이 여기서 나온다. 로봇 소프트웨어를 쓰는 사람이라면 이 둘은 읽어 볼 가치가 있다 — 짧고, 이후의 많은 혼란을 예방한다.

견해: REP 145(IMU)를 모르면 융합이 안 맞는다(7.6). 방향·중력 포함 여부·공분산 규약이 여기 있고, 이것을 어긴 드라이버가 실제로 존재한다(7.1.8). IMU를 다룬다면 확인이 필요하다.

견해: REP 117의 "범위 밖 표현"이 실무에서 자주 문제가 된다(7.5). 측정 실패를 0으로 채우는 드라이버와 무한대로 채우는 드라이버가 섞여 있어, 어느 규약인지 확인하지 않으면 장애물이 없는 곳에 있다고 판단할 수 있다.

A.3.3 패키지·빌드·배포

REP(확인 필요)주제이 책의 장
REP 127 / 140 / 149package.xml 형식 1·2·34.4
REP 144ROS 패키지 명명 규칙 — 이 책은 규칙 자체를 다루지 않는다(원문 확인)4.4(패키지 이름의 쓰임)
REP 2000ROS 2 릴리스와 대상 플랫폼(Tier)0.3·15.2.2
REP 2004패키지 품질 수준14.7.2
REP 2001패키지 변형(ros_core·ros_base·desktop·desktop_full이 각각 무엇을 포함하나)0.4.5·7.2.12(플러그인이 어느 변형에 딸리나)

견해: REP 2000이 배포판 계획의 근거 문서다(0.3). 어느 배포판이 어느 OS·아키텍처를 어느 Tier로 지원하는지가 여기 정리되며, 이행 계획(15.1)을 세울 때 확인할 첫 문서다.

견해: REP 2004(품질 수준)는 의존성 평가의 출발점이다(14.7.2). 다만 자기 선언이며 외부 감사가 아니라는 점(14.7.3)을 함께 기억해야 한다.

A.3.4 ROS 2 아키텍처·인터페이스

REP(확인 필요)주제이 책의 장
REP 2007타입 적응(type adaptation)(확인 필요: 번호)1.3.12
REP 2011타입 해시(RIHS)와 타입 서술 — rcl/type_hash.h가 "설계 근거는 REP-2011"이라 적고, GetTypeDescription.srv도 해시를 "REP-2011 RIHS hash string"이라 부른다(원문 확인. REP 본문은 미대조(확인 필요))1.3.5·1.3.13
REP 2016(확인 필요: 번호)타입 서술 배포(~/get_type_description) — 0.3이 이 번호로 적었으나 원문을 대조하지 못했다0.3.6·1.3.13
인터페이스 정의 관련IDL·메시지 표현1.2·1.3
실행 모델 관련실행기·콜백(확인 필요: 해당 REP 존재 여부)2.2~2.4
보안 관련SROS 2 설계(확인 필요)13.2

정직: ROS 2의 여러 설계 결정이 REP가 아니라 설계 문서·디스커션·구현으로 정해진 경우도 많다. "이 주제에 REP가 있을 것"이라고 가정하지 말고, 없으면 설계 문서와 소스를 보는 것(15.5.4)이 실용적이다.

견해: 타입 적응은 GPU·커스텀 표현을 다룰 때 유용한 개념이다(1.3.12). 메시지 타입과 내부 표현을 분리해 불필요한 변환을 줄이는 메커니즘이며, 대용량 데이터 파이프라인에서 검토할 가치가 있다. Jazzy에서 rclcpp::TypeAdapter가 동작하는 것은 실행 확인했다(1.3.12) — 다만 REP 번호 자체는 원문을 대조하지 못했다(확인 필요: 번호).

A.3.5 로봇 응용 규약

REP(확인 필요)주제이 책의 장
REP 107진단 시스템6.9
REP 147항공기 표준 인터페이스— (이 책의 범위 밖)
매니퓰레이터·액션 관련궤적·제어 인터페이스(확인 필요)6.5·9.2
내비게이션 관련인터페이스 규약(확인 필요)8.1~8.8

견해: REP 107(진단)이 이 책이 반복적으로 권한 /diagnostics 규약의 근거다(6.9). 메시지 구조·집계 방식·상태 값의 의미가 여기서 나오며, 규약을 따르면 rqt_robot_monitor 같은 기존 도구가 그대로 연동된다(11.5.2).

A.3.6 REP를 읽는 법

절무엇이 있나
초록·동기왜 필요했는가
명세실제 규약
근거(rationale)왜 이렇게 정했는가
대안기각된 선택지
참조 구현코드
상태Draft·Active·Final·Deprecated 등(확인 필요)

견해: "근거"와 "대안" 절이 가장 유익하다. 명세만 읽으면 규칙을 알지만, 근거를 읽으면 왜 그 규칙이 있는지를 알게 되어 경계 상황에서 판단할 수 있다. 7.1.6에서 "규약을 지키라"고 했을 때, 그 규약의 이유를 아는 것이 이 부분이다.

견해: 상태를 확인하라. Deprecated나 Superseded인 REP를 근거로 삼으면 낡은 규약을 따르게 된다. 번호가 낮은 REP일수록 상태 확인이 필요하다.

견해: 전부 읽을 필요는 없다. 이 책이 인용한 것들 중 REP 103·105·145·107 정도가 실무자가 직접 읽어 볼 만한 것이며, 나머지는 필요할 때 찾으면 된다.

A.3.7 규약 준수 점검

이 책의 여러 장이 REP 준수를 확인하라고 했다. 그 목록이다.

확인대상장
단위(m·rad·s)모든 메시지7.1.6
축 방향(x 전방·z 상방)프레임7.1.2
프레임 이름·계층tf 트리5.1.7
optical frame3D 센서7.1.4
IMU 방향·중력·공분산IMU7.1.5·7.6
범위 밖 값 표현거리 센서7.1.7
진단 메시지 구조/diagnostics6.9.3
패키지 명명·메타데이터package.xml4.4
# 실무 점검 (7.1.9)
ros2 interface show sensor_msgs/msg/Imu     # 규약 주석 확인
ros2 topic echo /imu --once                 # 실제 값 확인
ros2 run tf2_tools view_frames              # 프레임 이름·계층

견해: "드라이버가 REP를 지키는지 확인"이 센서 통합의 첫 단계다(7.1.9). 어긴 드라이버가 실제로 있고, 그것을 모른 채 융합하면 결과가 조용히 틀린다. 초기에 30분 확인하는 것이 나중의 며칠을 아낀다.

A.3.8 REP가 없는 영역

모든 것이 REP로 정해져 있지는 않다.

영역사실상의 규약 출처
Nav2 인터페이스프로젝트 문서·코드
MoveIt 규약프로젝트 문서
ros2_control 인터페이스 이름프로젝트 문서(6.2.4)
시뮬레이터 연동각 프로젝트
다중 로봇 규약관행·프로젝트별

견해: "관행"이 규약처럼 작동하는 영역이 많다. /cmd_vel·/odom·/scan 같은 토픽 이름은 REP가 아니라 관행이지만, 어기면 기존 도구·패키지와 연동되지 않는다. 관행을 따르는 것이 상호운용의 실질적 조건이다(1.1.4).

견해: 관행을 어길 이유가 있다면 문서화하라(14.1.5). "우리는 /cmd_vel 대신 다른 이름을 쓴다"는 결정 자체는 가능하지만, 왜 그런지 적혀 있지 않으면 나중에 온 사람이 실수로 되돌리거나 혼란을 겪는다.

A.3.9 이 책과 REP의 관계

이 책은 REP를 대체하지 않는다.

이 책이 하는 것REP가 하는 것
규약을 왜 지켜야 하는지 설명규약을 정의
어겼을 때의 증상 제시정확한 명세
실무 확인 방법근거·대안 기록
장 간 연결단일 주제 심층

견해: 규약이 애매하거나 이 책과 다르게 보이면 REP 원문이 우선이다. 이 책은 이해를 돕기 위해 요약·의역했으므로, 정확성이 필요한 순간에는 원문을 확인해야 한다. 목차 3에서 밝힌 정직성 원칙이 여기서도 적용된다.