ROS2의 통신 방식
ROS2는 분산 시스템에서 통신을 원활하게 하기 위해 데이터 분배 서비스(DDS, Data Distribution Service)를 사용한다. 이 통신 메커니즘은 ROS1의 통신 모델과는 달리 QoS(Quality of Service) 정책을 정의하여 시스템의 신뢰성과 성능을 보장할 수 있도록 개선되었다. ROS2는 노드 간의 통신을 여러 방식으로 지원하며, 대표적으로 토픽(Topic), 서비스(Service), 액션(Action)이 있다. 이 섹션에서는 이 세 가지 통신 메커니즘의 동작 원리를 수학적 표현과 함께 자세히 설명한다.
토픽 (Topic)
토픽은 ROS2의 퍼블리시/서브스크라이브(Publish/Subscribe) 통신 모델을 구현한 것이다. 퍼블리셔(발행자) 노드가 메시지를 보내고, 서브스크라이버(구독자) 노드가 해당 메시지를 수신한다. 이러한 방식은 비동기적으로 동작하며, 노드 간의 명시적인 연결 없이 데이터를 교환할 수 있도록 한다.
- 퍼블리셔는 메시지를 특정 주제(Topic)에 발행하고, 서브스크라이버는 해당 주제를 구독하여 데이터를 수신한다.
- 토픽 통신은 비연결형 통신 방식이며, 퍼블리셔와 서브스크라이버는 서로 독립적이다.
토픽을 통해 주고받는 메시지의 수학적 표현은 다음과 같다.
- 퍼블리셔에서 발행하는 메시지:
여기서 \mathbf{m}(t)는 시간 t에 발행된 메시지 벡터를 나타내며, m_i(t)는 i-번째 데이터 요소이다.
퍼블리셔와 서브스크라이버 사이의 통신을 표현한 간단한 메커니즘은 다음과 같이 다이어그램으로 나타낼 수 있다:
ROS2는 DDS를 통해 토픽의 QoS를 설정할 수 있으며, 이는 퍼블리셔와 서브스크라이버 간의 통신 신뢰성에 영향을 미친다. ROS2에서 사용할 수 있는 QoS 정책 중 대표적인 항목들은 다음과 같다:
- 신뢰성(Reliability): 통신이 손실 없이 이루어지도록 보장하는지 여부.
RELIABLE
: 메시지의 손실 없이 정확하게 전송될 것을 보장.-
BEST_EFFORT
: 가능한 한 메시지를 전송하지만 손실이 발생할 수 있음. -
내구성(Durability): 구독자가 후에 연결되어도 메시지를 받을 수 있는지 여부.
VOLATILE
: 구독자가 연결된 이후부터 메시지를 받음.-
TRANSIENT_LOCAL
: 퍼블리셔가 발행한 메시지를 서브스크라이버가 나중에 연결되어도 수신 가능. -
이력(History): 버퍼에 저장되는 메시지의 개수.
KEEP_LAST
: 마지막 N개의 메시지만 저장.KEEP_ALL
: 모든 메시지를 저장.
위의 QoS 설정은 토픽 통신의 효율성과 신뢰성에 영향을 미치므로, 시스템 요구 사항에 따라 적절하게 선택해야 한다.
서비스 (Service)
서비스는 요청-응답(Request-Response) 통신 모델을 제공한다. 이는 비동기적인 토픽과는 달리, 동기적인 통신 방식을 사용한다. 서비스 서버가 클라이언트로부터 요청을 수신하면, 그 요청을 처리한 후 응답을 반환한다.
서비스 통신은 다음과 같은 구조로 표현될 수 있다:
- 클라이언트(Client)가 요청(Request)을 전송한다.
- 서버(Server)가 요청을 처리하고 응답(Response)을 반환한다.
이를 수학적으로 표현하면, 클라이언트에서 서버로의 요청은 함수 f로 나타낼 수 있다.
- 요청:
여기서 R(t)는 시간 t에서 클라이언트가 서버에 요청한 함수이며, x_1, x_2, \dots, x_n는 입력 값들이다.
- 응답:
S(t)는 서버가 클라이언트에 반환한 응답 값이며, 이는 요청 R(t)에 대한 함수 g로 처리된다.
서비스 통신의 구조를 다이어그램으로 나타내면 다음과 같다:
서비스는 요청과 응답이 한 쌍을 이루는 구조이기 때문에, 이는 요청이 필요할 때마다 정확하게 처리되고, 클라이언트가 명시적으로 응답을 받을 때까지 대기한다.
서비스 통신은 다음과 같은 상황에서 유용하다: - 로봇 제어에서 특정 명령에 대한 즉각적인 피드백이 필요한 경우 - 계산 비용이 큰 작업을 요청하고 그 결과를 기다릴 때
액션 (Action)
액션은 서비스와 유사하지만, 요청-응답 모델과 비동기적 데이터 전송을 결합한 형태로, 장시간이 걸리는 작업이나 중간 피드백이 필요한 작업에 적합하다. 액션 서버는 클라이언트로부터 목표(goal)를 수신하고, 이 목표를 수행하는 동안 주기적으로 피드백(feedback)을 제공하며, 최종적으로 결과(result)를 반환한다.
액션 통신을 수학적으로 표현하면 다음과 같다:
- 목표(Goal)는 클라이언트가 액션 서버에 보내는 명령을 나타내며, 시간 t에서 목표 G(t)는 다음과 같이 정의된다:
여기서 G(t)는 목표를 구성하는 여러 파라미터들로 이루어진 벡터이다.
- 피드백(Feedback)은 액션 서버가 클라이언트에 중간 상태를 전달하는 것을 의미하며, 피드백 벡터는 다음과 같이 표현할 수 있다:
F(t)는 시간 t에서 목표 진행 상태를 나타내는 여러 피드백 요소들이다.
- 결과(Result)는 액션 서버가 목표를 완료한 후 클라이언트에 전송하는 최종 결과를 나타낸다. 이 결과는 다음과 같이 정의할 수 있다:
여기서 h는 목표 G(t)에 대한 함수로, 최종적인 결과를 반환하는 역할을 한다.
액션 통신 메커니즘을 다이어그램으로 표현하면 다음과 같다:
이 통신 모델에서 액션은 다음과 같은 단계를 따른다:
- 목표 전송: 클라이언트는 특정 목표를 설정하고 이를 액션 서버에 전송한다.
- 피드백 제공: 액션 서버는 목표를 수행하는 동안 주기적으로 클라이언트에 진행 상황을 피드백으로 전송한다.
- 결과 반환: 목표가 완료되면, 액션 서버는 최종 결과를 클라이언트로 반환한다.
액션의 QoS
액션 통신 역시 ROS2의 QoS 정책을 적용할 수 있으며, 특히 장시간이 걸리는 작업에 대해 효율적이고 신뢰성 있는 통신을 보장한다. 주요 QoS 설정은 다음과 같다:
- 신뢰성(Reliability): 목표나 결과가 손실 없이 정확하게 전송될 수 있도록 보장한다.
- 이력(History): 목표와 피드백의 저장 상태를 관리하여, 클라이언트가 나중에 연결되더라도 중간 피드백을 받을 수 있도록 한다.
ROS2 통신의 비교
토픽, 서비스, 액션 통신 메커니즘은 각각의 특성과 용도에 따라 다른 방식으로 활용된다. 이를 수학적으로 요약하면, 각 메커니즘은 다음과 같은 통신 방식을 따른다:
- 토픽: 비동기 퍼블리시/서브스크라이브 모델
- 서비스: 동기 요청-응답 모델
- 액션: 비동기 목표-피드백-결과 모델
각 통신 메커니즘은 사용 사례에 따라 장점과 단점이 있다. 짧은 시간 내에 데이터를 주고받아야 하는 경우에는 토픽 통신이 적합하며, 명확한 요청과 응답이 필요한 경우에는 서비스가 더 유리하다. 반면, 장시간의 작업에서 중간 피드백과 최종 결과가 필요한 경우 액션 통신이 효과적이다.
토픽, 서비스, 액션의 구조적 차이점
토픽
- 퍼블리셔와 서브스크라이버 간의 비동기적인 통신 방식.
- 데이터의 지속적인 전송을 지원하며, QoS에 따라 신뢰성 조정 가능.
서비스
- 클라이언트와 서버 간의 동기적인 통신 방식.
- 명확한 요청-응답 구조로 즉각적인 피드백을 제공.
액션
- 클라이언트와 서버 간의 비동기적인 통신 방식.
- 중간 피드백과 최종 결과를 모두 제공하는 복합적인 통신 모델.