1261.17 분산 로봇 시스템에서의 통신 요구사항
1. 분산 로봇 시스템의 개념
분산 로봇 시스템(distributed robot system)이란 로봇의 감지(sensing), 계산(computation), 행동(actuation) 기능이 복수의 연산 노드(computing node)에 분산되어 실행되는 시스템 구조를 의미한다. 단일 로봇 내에서도 복수의 연산 장치(예: 센서 처리용 GPU, 제어용 실시간 프로세서, 고수준 계획용 범용 프로세서)가 네트워크로 연결되어 협업하는 구조가 일반적이며, 다중 로봇 시스템에서는 이러한 분산이 물리적으로 상이한 로봇 간에 확장된다.
Coulouris 등(2011)은 Distributed Systems: Concepts and Design에서 분산 시스템의 핵심 특성으로 동시성(concurrency), 독립적 장애(independent failure), 그리고 공유 시계의 부재(absence of a global clock)를 제시하였다. 이러한 특성은 분산 로봇 시스템의 통신 설계에 직접적인 제약 조건을 부과한다.
2. 기능적 통신 요구사항
2.1 센서 데이터의 실시간 전달
분산 로봇 시스템에서 센서 드라이버와 인지 모듈이 상이한 연산 노드에서 실행되는 경우, 센서 데이터의 네트워크 전송이 필수적이다. 이 데이터 흐름은 다음의 요구사항을 충족하여야 한다.
높은 대역폭(High Bandwidth): 카메라 영상, LiDAR 점군, IMU 데이터 등 대용량 센서 데이터의 실시간 전송에 충분한 대역폭이 확보되어야 한다. 예를 들어, 640×480 해상도의 RGB 영상을 30 fps로 전송하는 데 약 27.6 MB/s의 대역폭이 요구된다.
B_{\text{camera}} = W \times H \times C \times f = 640 \times 480 \times 3 \times 30 \approx 27.6 \text{ MB/s}
여기서 W는 가로 해상도, H는 세로 해상도, C는 채널 수, f는 프레임률이다.
낮은 지연 시간(Low Latency): 센서 데이터가 행동 결정에 반영되기까지의 종단간 지연(end-to-end latency)이 제어 루프의 주기 이내여야 한다.
시간 정렬(Temporal Alignment): 다종 센서의 데이터가 상이한 노드에서 발생하는 경우, 이들 간의 시간적 동기화(temporal synchronization)가 보장되어야 한다.
2.2 제어 명령의 신뢰성 있는 전달
행동 제어기에서 액추에이터 드라이버로의 제어 명령 전달은 다음의 요구사항을 가진다.
전달 보장(Delivery Guarantee): 제어 명령의 손실은 로봇 행동의 비정상적 중단을 초래할 수 있으므로, 신뢰성 있는 전달 메커니즘이 요구된다.
순서 보장(Ordering Guarantee): 제어 명령은 발행 순서대로 수신되어야 하며, 순서 역전(out-of-order delivery)은 허용되지 않는다.
결정론적 지연(Deterministic Latency): 제어 명령의 전달 지연이 사전에 정해진 상한을 초과하지 않아야 하며, 지연의 분산(jitter)이 최소화되어야 한다.
2.3 상태 정보의 공유
분산 시스템의 각 노드는 로봇의 현재 상태(위치, 속도, 배터리 수준, 행동 상태 등)에 대한 일관된 관점(consistent view)을 유지하여야 한다. 이를 위하여 상태 정보의 주기적 발행과 이력 유지(historical retention)가 필요하다.
3. 비기능적 통신 요구사항
3.1 확장성 (Scalability)
통신 인프라는 노드 수의 증가에 따라 선형적으로 확장 가능하여야 한다. 노드 수가 N일 때, 전대전(all-to-all) 통신의 연결 수는 O(N^2)으로 증가하므로, 발행-구독 패턴과 같은 간접적 통신 모형이 확장성 확보에 유리하다.
3.2 장애 허용성 (Fault Tolerance)
분산 시스템에서는 개별 노드의 장애, 네트워크 단절, 메시지 손실 등의 부분적 장애(partial failure)가 발생할 수 있다. 통신 인프라는 이러한 부분적 장애에도 불구하고 시스템의 전체적인 동작이 유지되도록 하는 장애 허용 메커니즘을 제공하여야 한다.
장애 허용을 위한 통신 설계 원칙으로는 다음을 들 수 있다.
- 하트비트(heartbeat) 메커니즘에 의한 노드 생존 감시
- 타임아웃(timeout)에 의한 통신 장애 감지
- 서비스 발견(service discovery)에 의한 자동 재연결
- 메시지 이력(message history) 보존에 의한 늦은 참여자(late joiner) 지원
3.3 보안성 (Security)
네트워크를 통한 통신은 도청(eavesdropping), 메시지 위조(message forgery), 재전송 공격(replay attack) 등의 위협에 노출된다. 특히 산업 환경이나 공공 영역에서 운용되는 로봇의 경우, 통신의 기밀성(confidentiality), 무결성(integrity), 그리고 인증(authentication)이 보장되어야 한다. DDS Security 명세는 이러한 보안 요구사항에 대한 표준화된 해법을 제공한다.
3.4 자원 효율성 (Resource Efficiency)
로봇 시스템에서 연산 자원과 네트워크 대역폭은 유한하다. 통신 프로토콜은 메시지 직렬화의 오버헤드, 헤더의 크기, 그리고 프로토콜 처리에 소요되는 CPU 자원을 최소화하도록 설계되어야 한다. 임베디드 환경의 로봇에서는 이러한 자원 효율성이 특히 중요하다.
4. 분산 통신의 핵심 과제
4.1 시간 동기화 (Time Synchronization)
분산 로봇 시스템에서 각 노드는 독립적인 시스템 시계(system clock)를 가지며, 이들 간의 시간 편차(clock offset)와 시간 표류(clock drift)가 존재한다. 센서 데이터의 정확한 시간 표기(timestamping)와 다종 센서 데이터의 융합을 위하여 노드 간 시간 동기화가 필수적이다.
NTP(Network Time Protocol)는 수십 밀리초 수준의 동기화 정밀도를 제공하며, PTP(Precision Time Protocol, IEEE 1588)는 마이크로초 수준의 정밀도를 달성한다. 로봇 행동 제어의 시간적 요구사항에 따라 적절한 시간 동기화 프로토콜을 선택하여야 한다.
4.2 네트워크 분할 (Network Partition)
네트워크 장애에 의해 분산 시스템이 복수의 격리된 부분 시스템으로 분할되는 현상을 네트워크 분할(network partition)이라 한다. CAP 정리(Brewer, 2000)에 의하면, 네트워크 분할이 발생하는 경우 일관성(Consistency)과 가용성(Availability)을 동시에 완전하게 보장하는 것은 불가능하다. 로봇 행동 제어 시스템에서는 안전성을 최우선으로 하여, 네트워크 분할 시 각 부분 시스템이 독립적으로 안전 상태(safe state)로 전이할 수 있는 정책을 수립하여야 한다.
4.3 서비스 발견 (Service Discovery)
분산 로봇 시스템에서 새로운 노드의 추가 또는 기존 노드의 제거가 동적으로 발생할 수 있다. 통신 인프라는 중앙 관리자(central broker)의 개입 없이 통신 참여자를 자동으로 발견하는 메커니즘을 제공하여야 한다. DDS의 참여자 발견 프로토콜(Participant Discovery Protocol, PDP)과 종단점 발견 프로토콜(Endpoint Discovery Protocol, EDP)은 이러한 자동 발견을 지원하는 표준 메커니즘이다.
5. ROS2에서의 분산 통신 지원
ROS2는 DDS 미들웨어에 기반하여 분산 로봇 시스템의 통신 요구사항을 체계적으로 지원한다. DDS의 데이터 중심적(data-centric) 통신 모형은 발행자와 구독자의 물리적 위치를 은닉하며, 동일 호스트 내의 통신과 네트워크를 경유하는 원격 통신의 구분 없이 동일한 프로그래밍 인터페이스를 제공한다.
ROS2의 도메인(domain) 개념은 동일 네트워크 내에서 논리적으로 격리된 통신 공간을 정의하여, 복수의 로봇 시스템이 동일 네트워크를 공유하면서도 통신 간섭을 방지할 수 있게 한다. ROS_DOMAIN_ID 환경 변수의 설정에 의해 도메인이 지정되며, 상이한 도메인 ID를 사용하는 노드 간에는 통신이 발생하지 않는다.
분산 로봇 시스템에서의 통신 요구사항에 대한 체계적 분석은 안정적이고 확장 가능한 로봇 행동 제어 아키텍처의 설계를 위한 필수적인 선행 과정이다.