# 통신 프로토콜 (Communication Protocols)

통신 프로토콜은 로봇 시스템이 데이터를 효율적이고 안정적으로 교환하기 위해 사용하는 표준화된 규칙 집합이다. 이러한 프로토콜은 로봇 시스템 간, 로봇과 클라우드, 로봇과 인간 간의 상호작용을 지원하며, 시스템의 복잡성과 확장성을 관리하는 데 중요한 역할을 한다.

**기본 통신 모델**

로봇의 통신 프로토콜은 일반적으로 클라이언트-서버 모델, 발행자-구독자 모델, 또는 혼합 모델을 따른다. 클라이언트-서버 모델은 요청-응답 구조로, 서버가 서비스를 제공하고 클라이언트가 요청을 보낸다. 발행자-구독자 모델에서는 데이터가 특정 주제(topic)에 퍼블리싱되며, 이를 구독한 노드들이 데이터를 수신한다. 이러한 모델은 로봇 시스템의 설계 요구에 따라 선택된다.

**로봇 운영체제(ROS)와 통신 프로토콜**

로봇 운영체제(ROS)는 발행자-구독자 모델을 기본으로 하는 통신 프로토콜을 제공한다. ROS는 노드 간의 메시지 교환을 위해 TCP/IP 기반의 ROS 통신 프로토콜을 사용한다. ROS 1에서는 주로 TCPROS와 UDPROS가 사용되며, TCPROS는 신뢰성 높은 전송을, UDPROS는 저지연 전송을 목표로 한다. ROS 2는 DDS(데이터 분산 서비스) 프로토콜을 채택하여 실시간성과 QoS(서비스 품질) 기능을 향상시켰다.

**실시간 통신 프로토콜**

로봇 응용에서 실시간 통신이 중요할 때는, DDS와 같은 실시간 통신 프로토콜이 선호된다. DDS는 발행자-구독자 모델을 따르며, 데이터 전달의 신뢰성, 순서 보장, 실시간 QoS 조절이 가능한다. 이는 특히 자율주행 차량, 제조업 로봇 등의 응용에서 필수적이다. DDS의 QoS 정책은 신뢰성, 우선순위, 타임아웃, 자원 제한 등의 다양한 파라미터를 설정할 수 있어 다양한 통신 시나리오를 지원한다.

**보안 통신 프로토콜**

로봇 시스템의 보안은 통신 프로토콜 설계 시 중요한 요소이다. TLS(전송 계층 보안)와 DTLS(데이터그램 전송 계층 보안)는 로봇 통신에서 흔히 사용되는 보안 프로토콜이다. TLS는 TCP 기반 통신에서 사용되며, DTLS는 UDP 기반 통신에서 사용된다. 이들 프로토콜은 데이터의 기밀성, 무결성, 인증을 보장하여, 악의적인 공격으로부터 로봇 시스템을 보호한다. ROS 2는 DDS 보안 모델을 사용하여, 기본적으로 메시지 암호화, 인증, 접근 제어를 지원한다.

**메시지 시리얼화 및 데이터 포맷**

로봇 통신에서 데이터의 효율적 전송을 위해 메시지 시리얼화와 데이터 포맷이 중요하다. 일반적으로 사용되는 시리얼화 포맷으로는 JSON, XML, Protocol Buffers, 그리고 ROS 자체의 메시지 포맷이 있다. Protocol Buffers는 구글에서 개발한 시리얼라이제이션 포맷으로, 속도와 효율성이 뛰어나다. ROS 메시지 포맷은 로봇 간의 상호운용성을 높이기 위해 설계되었으며, 데이터 필드를 미리 정의하여 구조화된 데이터 교환을 지원한다.

**네트워크 토폴로지와 라우팅**

로봇 시스템의 통신은 네트워크 토폴로지와 라우팅 프로토콜에 따라 크게 달라진다. 메쉬 네트워크, 스타 토폴로지, 계층형 네트워크 등이 로봇 통신에서 사용된다. 메쉬 네트워크는 각 노드가 다른 노드와 직접 통신할 수 있어, 네트워크의 유연성과 강인성을 제공한다. 라우팅 프로토콜로는 AODV(Ad hoc On-Demand Distance Vector)와 같은 Ad hoc 네트워크 프로토콜이 사용될 수 있다. 이러한 프로토콜은 로봇 노드 간의 효율적인 데이터 전송 경로를 동적으로 설정한다.

**지연 및 대역폭 관리**

로봇 통신에서 지연(Latency)과 대역폭(Bandwidth)은 중요한 성능 지표이다. 실시간 시스템에서는 지연을 최소화하는 것이 중요하며, 이를 위해 UDP 기반 프로토콜이나 QoS 설정이 사용된다. 대역폭 관리에는 트래픽 쉐이핑, 데이터 압축, 멀티캐스팅 등의 기술이 사용된다. 특히 멀티캐스팅은 동일한 데이터를 여러 노드에 동시에 전달할 때 대역폭을 효율적으로 사용할 수 있는 방법이다.

**통신 오류 처리**

로봇 통신에서는 통신 오류가 발생할 수 있으며, 이를 효율적으로 처리하는 메커니즘이 필요하다. 오류 처리 프로토콜로는 재전송, 오류 검출 코드, ACK/NACK 메커니즘이 포함된다. TCP 프로토콜은 신뢰성 있는 전송을 위해 오류 발생 시 자동 재전송을 수행하지만, 이는 지연을 초래할 수 있다. UDP는 빠른 전송을 제공하지만, 오류 처리가 내재되어 있지 않기 때문에 상위 계층에서 별도의 오류 처리 메커니즘을 구현해야 한다.

**동기화 프로토콜**

다중 로봇 시스템에서 시간 동기화는 매우 중요하다. PTP(Precision Time Protocol)와 NTP(Network Time Protocol)는 네트워크 상의 노드 간 시간을 동기화하는 데 사용된다. PTP는 하드웨어 기반 타임스탬프를 사용하여 높은 정밀도의 동기화를 제공하며, 이는 산업용 로봇이나 협업 로봇 시스템에서 중요하다. NTP는 소프트웨어 기반 동기화 프로토콜로, 인터넷을 통해 동기화할 때 사용된다.

***

관련 자료:

* OMG, Data Distribution Service (DDS) for Real-time Systems Specification, Version 1.4, Object Management Group, 2015.
* Quigley, M., et al., ROS: An open-source Robot Operating System, ICRA Workshop on Open Source Software, 2009.
* Postel, J., Transmission Control Protocol, RFC 793, Internet Engineering Task Force, 1981.
* Shannon, C. E., A Mathematical Theory of Communication, Bell System Technical Journal, 1948.
