1261.23 ROS2 토픽(Topic) 통신의 원리

1. 토픽 통신의 개념

ROS2에서 토픽(Topic) 통신은 발행-구독(publish-subscribe) 패턴을 구현하는 핵심 통신 메커니즘이다. 토픽은 명명된 논리적 데이터 채널(named logical data channel)으로, 발행자(Publisher)가 특정 토픽에 메시지를 발행하면 해당 토픽을 구독하는 모든 구독자(Subscriber)에게 메시지가 자동으로 전달된다.

토픽 통신은 ROS2에서 가장 빈번히 사용되는 통신 패러다임으로, 센서 데이터의 전송, 제어 명령의 전달, 상태 정보의 공유 등 연속적인 데이터 스트리밍이 요구되는 모든 데이터 흐름에 적용된다.

2. 토픽의 구성 요소

2.1 토픽 이름 (Topic Name)

토픽은 슬래시(/)로 구분되는 계층적 이름 공간(hierarchical namespace)에 의해 식별된다. 예를 들어, /robot1/sensor/imurobot1 로봇의 sensor 범주에 속하는 imu 데이터 채널을 나타낸다. 토픽 이름은 네임스페이스(namespace)와 리매핑(remapping) 메커니즘을 통해 런타임에 동적으로 변경할 수 있다.

2.2 메시지 타입 (Message Type)

각 토픽은 하나의 메시지 타입(message type)과 연관된다. 메시지 타입은 .msg 파일에 정의되며, 기본 자료형(primitive types: bool, int32, float64, string 등)과 복합 자료형의 조합으로 구성된다. 동일 토픽에 접속하는 발행자와 구독자는 동일한 메시지 타입을 사용하여야 하며, 타입 불일치 시 연결이 거부된다.

2.3 발행자와 구독자

하나의 토픽에 복수의 발행자와 복수의 구독자가 동시에 존재할 수 있다. 이러한 다대다(many-to-many) 구조는 복잡한 로봇 시스템에서의 유연한 데이터 흐름 구성을 가능하게 한다.

3. 토픽 통신의 내부 동작 원리

3.1 참여자 발견 (Participant Discovery)

ROS2의 토픽 통신은 DDS의 자동 발견(automatic discovery) 메커니즘에 의존한다. 노드가 실행되면 DDS 참여자(DDS Participant)가 생성되고, 참여자 발견 프로토콜(Participant Discovery Protocol, PDP)을 통해 동일 네트워크 내의 다른 참여자를 자동으로 감지한다. 이어서 종단점 발견 프로토콜(Endpoint Discovery Protocol, EDP)에 의해 발행자와 구독자의 토픽 이름, 메시지 타입, QoS 정책이 교환되고, 호환성이 확인되면 데이터 연결이 자동으로 수립된다.

이 발견 과정은 중앙 관리 서버(broker)의 개입 없이 분산적(decentralized)으로 이루어지며, 이는 ROS1의 마스터(Master) 노드에 대한 의존성을 제거한 ROS2의 핵심 설계 개선이다.

3.2 메시지의 직렬화와 전송

발행자가 메시지를 발행하면 다음의 과정이 수행된다.

  1. 직렬화(Serialization): 메시지 객체가 직렬화 형식(CDR, Common Data Representation)의 바이트 스트림으로 변환된다.
  2. DDS DataWriter: 직렬화된 데이터가 DDS DataWriter에 의해 하위 전송 계층에 전달된다.
  3. 전송(Transport): UDP 멀티캐스트, 유니캐스트, 또는 공유 메모리(shared memory) 전송 메커니즘을 통해 구독자에게 전달된다.
  4. 역직렬화(Deserialization): 수신 측의 DDS DataReader가 바이트 스트림을 수신하고, 이를 메시지 객체로 역직렬화한다.
  5. 콜백 호출(Callback Invocation): 역직렬화된 메시지가 구독자에 등록된 콜백 함수에 전달되어 처리된다.

3.3 QoS 호환성 검사

발행자와 구독자 간의 연결은 QoS 정책의 호환성 검사를 통과한 후에만 수립된다. ROS2에서의 QoS 호환성 규칙은 다음과 같다.

발행자 QoS구독자 QoS호환성
ReliableReliable호환
ReliableBest Effort호환
Best EffortReliable비호환
Best EffortBest Effort호환

신뢰성 정책에서 발행자가 Best Effort이고 구독자가 Reliable인 경우에는 구독자의 신뢰성 요구를 발행자가 충족할 수 없으므로 연결이 수립되지 않는다.

4. 토픽 통신의 데이터 흐름 모형

토픽 통신의 데이터 흐름은 다음과 같이 모형화할 수 있다. 발행자 P가 주기 T로 메시지를 발행하고, 구독자 S가 콜백 함수 f_{\text{cb}}에 의해 메시지를 처리하는 경우, 데이터 흐름은 다음의 시간적 구조를 갖는다.

P : m_k \xrightarrow{t = kT} \text{Topic} \xrightarrow{\tau_{\text{transport}}} S : f_{\text{cb}}(m_k)

여기서 m_kk번째 메시지, \tau_{\text{transport}}는 전송 지연이다. 구독자의 콜백 처리 시간 \tau_{\text{cb}}가 발행 주기 T를 초과하는 경우, 메시지 큐에 메시지가 축적되며, History QoS 정책에 의해 큐의 크기가 관리된다.

5. 토픽 통신의 활용 패턴

5.1 주기적 데이터 스트리밍

가장 전형적인 활용 패턴으로, 센서 드라이버가 일정 주기로 센서 데이터를 발행하고, 하나 이상의 처리 모듈이 이를 구독하여 활용한다. IMU 데이터(100~1000 Hz), LiDAR 스캔(10~30 Hz), 카메라 영상(15~60 Hz) 등이 이 패턴에 해당한다.

5.2 이벤트 기반 발행

특정 이벤트의 발생 시에만 메시지를 발행하는 패턴이다. 장애물 감지, 행동 상태 변경, 배터리 경고 등이 이 패턴에 해당하며, 발행 빈도가 불규칙하다.

5.3 명령 채널

행동 제어기에서 하위 수준의 제어기 또는 액추에이터 드라이버로의 제어 명령 전달에 토픽이 사용된다. geometry_msgs/msg/Twist 타입의 /cmd_vel 토픽이 대표적인 사례이다.

6. 프로세스 내 통신 최적화

동일 프로세스 내에서 실행되는 노드 간의 토픽 통신에서는 프로세스 내 통신(intra-process communication) 최적화를 적용할 수 있다. 이 최적화는 직렬화·역직렬화 과정을 생략하고 메시지 객체의 포인터를 직접 전달하여, 데이터 복사 오버헤드를 제거한다. 대용량 영상 데이터나 점군 데이터의 노드 간 전달에서 현저한 성능 향상을 제공한다.

토픽 통신의 원리에 대한 정확한 이해는 로봇 행동 제어 시스템에서의 효과적인 데이터 흐름 설계와 성능 최적화를 위한 기본 전제가 된다.