ROS 2 — 로봇 소프트웨어의 대화법¶
ROS 2(Robot Operating System)는 로봇 소프트웨어를 짜는 산업 표준입니다: 거대한 프로그램 하나가 아니라, 이름 붙은 채널로 대화하는 작은 프로그램 여럿. PhysiCar는 Ubuntu 26.04 위에서 ROS 2 Lyrical을 돌립니다 — 실전 로봇과 같은 스택.
노드와 토픽¶
- 노드는 한 가지 일을 하는 프로그램 하나: 카메라 읽기, 라이다 필터, 바퀴 구동.
- 토픽은 이름 붙은 스트림: 한 노드가 발행(publish)하면 몇 개든 되는 노드가
구독(subscribe)합니다. 카메라 노드가
/camera/image를 발행하고, 내 노드가 구독해 반응합니다. - 메시지는 타입이 있습니다(
Float64,LaserScan,Image, ...) — 양쪽이 모양을 약속합니다.
ros2 topic list # 뭐가 있나
ros2 topic echo /scan --once # 메시지 하나 보기
ros2 topic hz /camera/image # 얼마나 빨리 흐르나
서비스와 액션¶
- 서비스는 요청/응답: 한 번 묻고 한 번 답 (노드 간 함수 호출 같은 것).
- 액션은 피드백·취소가 있는 장기 목표 — "X까지 가라"가 도착할 때까지 진행률을 보고합니다.
감각적 규칙: 스트림 → 토픽, 질문 → 서비스, 임무 → 액션.
이 설계가 이기는 이유¶
디커플링: 노드는 누가 듣는지 모릅니다. 같은 주행 노드가 프레임이 시뮬레이터에서 오든 실제 카메라에서 오든 그대로 동작합니다 — PhysiCar의 Sim2Real이 정확히 이 원리입니다. 세계를 바꿔도 그래프는 그대로.
PhysiCar의 정확한 토픽 계약 → physicar-ros 레퍼런스 · 실습 → API 사용하기