13.9.3.1 지상 로봇의 병목 분산을 위한 ROS2 Action-Service 이계 전송 브릿지 구축
로보틱스 생태계의 패권을 장악한 미들웨어인 ROS 2 는 DDS(Data Distribution Service) 기반의 훌륭한 생태계를 갖추고 있으나, 카메라 비전 텐서(1억 픽셀) 전송이나 멀티 클라우드로 이어지는 지연 민감형 복합 파이프라인망을 구축할 때는 그 무겁디무거운 UDP 발견(Discovery) 멀티캐스트 오버헤드 때문에 처참하게 무너져 내린다.
그 한계를 파괴하기 위해 Zenoh-Flow 가 엣지 보드 위에 강림하지만, ROS 2로 잘 짜인 수천 개의 “로봇 바퀴 구동 패키지(Nav2 등)” 코드를 하루아침에 갈아엎을 수는 없는 노릇이다.
본 절에서는 낡은 ROS 2 DDS의 대륙과 초고속 Zenoh Dataflow 의 대륙을 영구적으로 용접(Welding)하여, 무거운 연산은 클라우드의 Zenoh 가 삼키고 그 결괏값을 ROS 2 제어 액션(Action-Service)망으로 우그려 넣는 이계 종단(Trans-dimensional Bridge) 분산 런북을 갈파한다.
1. ROS 2 Service/Action 의 국소주의 타파 및 클라우드 견인
ROS 2의 꽃은 단순히 데이터를 뿌리는 Topic Pub/Sub 이 아니다. 로봇에게 “방향을 틀고 목적지까지 도달할 때까지 10초간 행동하라” 고 명령하는 비동기 피드백 모형인 Action 과, 동기식 질의응답인 Service 로직이다.
기존 아키텍처는 이 액션 서버가 작은 로봇 보드 내부(Localhost)에만 갇혀 연산을 처리하느라, 로봇 보드의 CPU가 초토화되는 비극을 낳았다.
클라우드 뇌관 이식을 시도하는 아키텍트는, 이 ROS 2의 Action 호명을 로봇 보드 안에 두지 않고 Zenoh Bridge 를 타고 멀리 떨어진 거대한 Amazon AWS 의 서버팜(Cloud)으로 끌어올려 버린다.
2. Zenoh-Bridge-DDS 런타임의 주입과 Action 프록시화
개발자는 C++ 소스 코드를 단 한 줄도 건드리지 않는다!
로봇 엣지 쪽에 zenoh-bridge-dds 라는 마법의 프록시 데몬 하나만 백그라운드로 띄워버리면 그 즉시 이계의 문이 열린다.
# [로봇 엣지 장비 단에서의 브릿지(Bridge) 점화 런북]
# 이 데몬은 로봇 보드의 ROS 2(DDS) 네트워크 패킷을 갈취하여
# 클라우드의 Zenoh 코어 라우터 방향으로 TCP 포워딩해버리는 웜홀이다!
zenoh-bridge-dds -e tcp/192.168.1.100:7447 --allow="/nav2_navigate_to_pose/*"
위 명령줄에서 --allow 선언은 ROS 2의 무거운 토픽들이 다 클라우드로 날아가는 것을 배제하고, 오프로딩시킬 nav2 액션 도메인만 억지로 도려내어(Slicing) 인터넷 해저 케이블로 쏘아버리는 거친 방어막이다.
3. 원격 Action-Server 오프로딩(Off-loading) 통치 기전
이 웜홀이 뚫리는 순간 토폴로지는 끔찍할 정도로 아름답게 왜곡된다.
- 로봇 안의 단순한 파이썬 스크립트(Client)가
rclpy.action.ActionClient(..., 'nav2_navigate_to_pose')를 호출한다. - 클라이언트는 당연히 이 명령을 수신할 무거운 네비게이션 서버 엔진(Action Server)이 자기 보드 안에 같이 돌고 있다고 착각한다.
- 하지만 로컬망의 ROS 2 패킷은
zenoh-bridge-dds에게 즉시 흡입 당한다. 이 프록시는 ROS 2의 무거운 DDS 디스커버리 찌꺼기들을 전부 도려내고 알맹이(Action Request)만 뽑아내어 초경량Zenoh RPC규격으로 직렬화한 뒤 AWS 클라우드로 광속 사출한다! - AWS 클라우드에서는 100개의 코어를 가진 거대한
Zenoh-Flow데몬 혹은 원격 ROS 2 노드가 기다리고 있다가 이 연산을 넘겨받아 복잡한 A* 최단 경로 라우팅 수학 연산을 순식간에 끝마친다. - 연산 결과 패킷(Action Result/Feedback)은 다시 케이블을 타고 역류하여 로봇 ボ드에 도달하고, 프록시가 이 바이트들을 “순수한 ROS 2 DDS 패킷” 인 양 위장(Spoofing)하여 로컬에 던져 놓는다.
로봇 센서 노드는 ROS 코어 밖으로 나간 적이 없다고 착각하며, AWS 클라우드의 거대한 괴물 노드 역시 그저 Zenoh 규격으로 질의응답을 받은 것으로 안다.
양측의 폐쇄적인 L7 프로토콜(DDS vs Zenoh)의 이데올로기를 중간의 투명한 C++ 브릿지 레이어 계층에서 패킷 껍질 가르기와 재포장으로 기만해 버리는 행위. 엣지의 조악한 컴퓨팅 파워를 클라우드의 무한 코어로 영구 전이(Offloading)시키면서도 기존 수십만 줄의 ROS 2 레거시 코드를 단 한 줄도 손상시키지 않는 궁극적 브릿지 접합술(Welding)의 완성이다.