13.9.3.3 로컬 연산 해방(Cloud Offloading) 및 제어 명령의 DDS 망 브로드캐스팅 재주입 전술

13.9.3.3 로컬 연산 해방(Cloud Offloading) 및 제어 명령의 DDS 망 브로드캐스팅 재주입 전술

ROS 2 데이터를 스팅(Sniffing)하여 파이프라인(Zenoh-Flow) 내부에 우겨넣고 거대한 딥러닝 판단(Offloading)을 클라우드 안에서 끝마쳤다 한들(13.9.3.2장 참조), 결국 자율주행 모터에 “조향각 -15도 회전!” 이라는 피의 물리 연산을 집행시키는 엔드포인트 코드는 로봇 보드 내부의 구시대적 ROS 2 하드웨어 드라이버 노드들이다.

파이프라인 우주 안에서 1ms 의 마이크로 시계열을 타고 계산을 끝맞춘 Output Tensor 캡슐은, 종착역의 관문(Sink)을 나서는 순간 다시 낡고 거대한 로컬 ROS 2 DDS Topic (/cmd_vel) 망 속으로 타락하여 기어 들어가야만 한다.
본 절에서는 파이프라인 연산이 끝난 고귀한 하드 리얼타임 결괏값을 거꾸로 ROS 2 멀티캐스트 로컬망 어항 속으로 폭력적으로 방류(Eject)시켜 버리는 DDS 재주입(Sink Reverse-Injection) 런북을 갈파한다.

1. 프레임워크 락인(Lock-in)의 공포와 싱크(Sink) 타격의 이원화

Zenoh-Flow 만 쓰도록 강제하는 것이 최악의 아키텍처다. 브레이크, 모터 제어(Actuator)를 관장하는 C++ 코드들까지 파이프라인의 틀 안으로 멱살 잡아 끌고 오려면 기존 로봇 양산 코드를 다 버려야 한다.
가장 우아한 통치 철학은, 연산만 파이프라인(Dataflow) 폐쇄망에서 쾌적하게 꿀을 빨고, 그 결론 데이터는 파이프라인 꼬리(Sink)에 달린 DDS 주사기를 통해 로봇 통신망(Localhost ROS 2)으로 다시 브로드캐스팅(Publishing)시켜 버리는 것이다.
이렇게 되면 레거시 모터 드라이버(ROS Node)는 자기가 구닥다리 ROS 알고리즘 서버와 놀고 있는지, 아니면 거대 분산 Zenoh 클라우드의 지도를 받고 있는지 전혀 눈치채지도 못한 채 멍청하게 토픽만 구독받아 바퀴를 굴리게 된다.

2. 매니페스트(YAML) 기반 ROS 2 토픽의 배리(Pub) 런북

아키텍트는 오퍼레이터(Operator) 딥러닝 판단의 포인터 종단 꼬리에, ROS 2 통신망을 향해 폭주하는 거대 포방패(Push Sink)를 YAML 단 몇 줄로 구축한다.

# [Zenoh-Flow의 결론을 ROS2 구시대 망으로 토해버리는 분출 런북]
sinks:
  - id: "Motor_Command_Ejector"
    uri: "file:///opt/zenoh_flow/builtin_sinks/zenoh_dds_sink.so" 
    
    configuration:
      # 파이프라인의 최종 결괏값 캡슐을 가차 없이 아래의 ROS 2 토픽 패킷으로 형질 변환한다!
      # 이 토픽은 로컬 허브망에 멀티캐스트로 살포(Broadcasting) 된다.
      dds_topic_name: "rt/robot_base/cmd_vel"
      dds_type_name: "geometry_msgs::msg::Twist" 

3. 메모리 강제 매핑(Memory Cast)과 이기종 브로드캐스트의 융해

관문 플러그인 zenoh_dds_sink.so 가 파이프라인 꼬리망에 로드되어 돌아가기 시작하면 무슨 작용이 터지는가?
클라우드 딥러닝 연산에서 넘어온 Zenoh-Flow 캡슐(zflow::Data) 이 싱크 포트로 떨어지는 찰나!

  1. 플러그인은 캡슐 안에 남은 플랫 바이트 버퍼를 찢어발긴 후, geometry_msgs::msg::Twist 구조체의 C++ 메모리 레이아웃(Memory Offset) 위에 폭력적으로 들이붓는다(Casting).
  2. 구조체가 모양을 갖추면, 거기에 귀찮은 RTPS 전송 헤더(Header) 옷을 억지로 한 겹 입혀버린다.
  3. 그리고 Zenoh 엔진단은 이 패킷을 걷어차서 리눅스 운영체제의 일반 UDP/네트워크 스택으로 던져버린다. 로컬 호스트망에 Zero-Copy 의 우아함은 포기한 채 거대한 브로드캐스트 폭발음이 친다.

cmd_vel 브로드캐스트 파장(Wave)을 얻어맞은 수많은 ROS 2 모터 드라이버 노드와 계기판 대시보드들은 일제히 깨어나 각자의 액추에이터 전압 펌프를 당긴다.
폐쇄적인 하드 리얼타임 데이터플로우(Zenoh-Flow)라는 미라큘러스한 우주가, 결국 마지막 한 방의 타격을 위해 자신의 고고함을 버리고 로보틱스의 밑바닥 진흙탕 프로토콜(ROS/DDS) 규격의 포장지를 뒤집어쓰고 강제 투하(Injection)하는 행위. 연산의 무결성은 극단의 최신 통신 메커니즘으로 사수(Off-loading)하되, 현실 물리계의 제어 배관은 레거시의 더러움에 기꺼이 타협해(Bridging)버리는 이 믹스매치(Mix-match) 시스템 구조가 진정한 야전 엔지니어링 생존 확률(Reliability)을 100퍼센트로 전향시킨다.