Chapter 11.10 ROS 2 특화 Zenoh 모니터링 및 시각화 연계
복잡계(Complex System)에 속하는 자율주행 및 로보틱스 시스템에 있어서 지표 기반의 가시성(Observability)은 선택이 아닌 필수 공학적 요구사항이다. 기존 로컬 네트워크 중심의 통신 미들웨어를 Zenoh 기반의 전역 라우팅 패브릭(Global Routing Fabric)으로 교체할 경우, ROS 2에 종속적인 기존의 식별 도구(rqt_graph, ros2 node list 등)들이 논리적 토폴로지를 정상적으로 렌더링하지 못하는 비가시성(Invisibility) 문제가 대두된다.
본 11.10장에서는 기존 ROS 2 생태계의 디버깅 툴체인(Toolchain)이 지닌 구조적 맹점을 극복하고, Prometheus와 Grafana를 관통하는 측정 지표(Metrics) 파이프라인과 차세대 웹 기반 클라이언트인 Foxglove Studio를 연계하여 초저지연(Ultra-low Latency) 상태 관제 대시보드(Dashboard)를 구축하는 아키텍처 런북(Runbook)을 전개한다.
1. 분산 노드 토폴로지 및 라우터 제어 평면 모니터링 (Control Plane Monitoring)
기존 멀티캐스트 기반의 DDS 환경에서는 노드 간 피어 투 피어(Peer-to-Peer) 연결 관계가 로컬 네트워크 상에서 명시적으로 노출되었다. 그러나 zenoh-bridge-dds 브릿지 노드를 도입하게 되면, 외부의 관찰자 시점에서는 복수의 하위 노드들이 브릿지라는 단일 진입점(Single Entry Point)으로 응집(Aggregation)된 별 모양(Star Topology)의 축소된 그래프로 관측된다. 시스템 엔지니어는 시스템의 내부 투명성을 확보하기 위해 Zenoh 라우터의 내장 제어 평면(Control Plane) API를 적극 활용해야 한다.
1.0.1 런북(Runbook): 라우터 세션 진단 및 토폴로지 가시화 전술
Zenoh 코어 라우터는 고유한 관리용 키 표현식(Admin Key Expressions; e.g., @/router/...)을 통하여 내부 세션 및 라우팅 테이블 상태를 외부에 동적으로 노출한다.
1. 상태 질의 인터페이스(Query Interface)를 통한 원시 덤프 수집
CLI(Command Line Interface) 도구를 활용하여 라우터의 세션 테이블을 실시간으로 질의(Query)할 수 있다.
# 로컬 라우터에 접속된 활성 세션 노드들의 설정 및 지연 상태(RTT) 질의
z_get -m get "tcp/localhost:7447" "@/router/*/session/*"
명령어 수행 결과로 반환되는 JSON 포맷의 데이터 구조에는 현재 라우터와 세션을 수립한 피어(Peer) 노드들의 IP 주소, 식별자(UUID), 세션 프로토콜 및 왕복 지연시간(Round-Trip Time) 등의 핵심 메타데이터가 포함된다.
2. Zenoh Admin Web UI를 통한 지형도 시각화
시각적 직관성이 요구되는 경우, 라우터 데몬(zenohd) 기동 시 관리자용 웹 플러그인을 바인딩(Binding)하라.
zenohd --admin-http-port 8080
시스템 운영자는 대시보드 엔드포인트(http://<ROUTER_IP>:8080)에 접속하여, 분산된 ROS 2 노드들이 어떠한 키 표현식(e.g., ros2/rt/...)을 퍼블리시(Publish)하고 서브스크라이브(Subscribe)하는지를 통계적 그래프 뷰로 조망할 수 있다.
2. 트래픽 시각화 도구를 활용한 병목(Bottleneck) 구간 진단
관제 시스템 상에서 라이다(LiDAR) 포인트 클라우드나 카메라 스트리밍과 같은 고대역폭 센서 데이터의 렌더링 주기가 불연속적으로 지연(Stuttering)되거나 중단되는 현상은, 네트워크 파이프라인 상의 병목(Bottleneck) 발생을 시사한다. 이는 송신 측의 발송량(Throughput)을 수신 측의 비즈니스 로직(e.g., Python 스크립트 등)이 제때 처리하지 못하면서 라우터 혹은 브릿지의 메모리 소켓 큐(Queue)가 포화되어 패킷 드롭(Packet Drop)이 유발되는 전형적인 생산자-소비자(Producer-Consumer) 불균형 사태이다.
2.0.1 런북(Runbook): 측정 지표(Metrics) 기반 네트워크 포화도 분석 전술
- Prometheus 호환 REST 엔드포인트 개방
라우터는 구동 시--rest-http-port인자를 전달받아, 자신의 통신 헬스체크 및 통계 데이터를 REST API로 개방할 수 있다.zenohd --rest-http-port 8000
2. **Grafana 연계 모니터링 및 Throttling 제어**
해당 엔드포인트를 Prometheus 스크래핑(Scraping) 타겟으로 등록하고, 수집된 시계열 데이터를 Grafana로 렌더링하라.
이때 가장 주시해야 할 핵심 지표(Key Metric)는 `zenoh_router_drop_count`이다. 해당 지수 곡선이 안정적인 '0'을 유지하지 못하고 상승하는 추세를 보인다면, 백프레셔(Backpressure) 통계가 한계치에 도달하여 시스템이 최신 트래픽을 의도적으로 누락 시키는 중재(Throttling)를 단행하고 있다는 의미이다. 아키텍트는 즉시 센서의 전송 주파수(Hz)를 하향 점검하거나 처리 노드에 자원을 추가 스케일 아웃(Scale-out)해야 한다.
## 3. Foxglove Studio와 Zenoh 네트워크의 네이티브(Native) 통합 아키텍처
로보틱스 표준 3D 시각화 도구인 RViz2나 차세대 웹 기반 관제 플랫폼인 Foxglove Studio를 지리적으로 격리된 장격리(Long-distance) 분산 환경의 대상 로봇과 지연 없이 연동하기 위해서는 고도의 브릿징 토폴로지 설계가 요구된다.
```mermaid
graph TD
classDef ROS2 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px;
classDef Zenoh_Core fill:#f3e5f5,stroke:#6a1b9a,stroke-width:2px;
classDef VIZ fill:#fff3e0,stroke:#e65100,stroke-width:2px;
subgraph "Robot Edge (On-board)"
RN[ROS 2 Nav & Sensor Nodes]
ZB_Edge[[zenoh-bridge-dds]]
RN -->|DDS Multicast| ZB_Edge
end
subgraph "Cloud / WAN Backbone"
ZR((Zenoh Cloud Router<br>with WebSocket Plugin))
end
subgraph "Legacy Setup: Local Operator"
ZB_Local[[zenoh-bridge-dds]]
RViz[RViz2 Application]
ZB_Local -->|DDS Multicast| RViz
end
subgraph "Modern Setup: Foxglove Data Platform"
Foxglove[Foxglove Studio<br>Web / Desktop Client]
end
ZB_Edge <-->|Zenoh Protocol over TCP| ZR
ZR <-->|Zenoh Protocol over TCP| ZB_Local
ZR <-->|Native Foxglove-Zenoh<br>WebSocket Connection| Foxglove
class RN,RViz ROS2;
class ZB_Edge,ZB_Local,ZR Zenoh_Core;
class Foxglove VIZ;
3.0.1 런북(Runbook): 관제 모니터링 토폴로지 하이퍼링크(Hyperlink) 전술
1. 전통적인 RViz2 연동 토폴로지
가장 보편적인 접근법은 관제용 로컬 머신에도 zenoh-bridge-dds를 기동하는 대칭형(Symmetric) 구조이다. 원격 로봇의 데이터가 클라우드 라우터를 경유하여 운영자의 로컬 노트북으로 들어오면, 로컬 브릿지가 이를 다시 DDS 패킷으로 번역하여 로컬 망에 멀티캐스트로 뿌린다. RViz2는 이러한 배경 흐름을 인지하지 못한 채 동일 로컬 망에 위치한 가상의 목적지와 통신하는 것처럼 렌더링 작업을 수행하게 된다.
2. 차세대 Foxglove Studio 브릿지리스(Bridgeless) 직결 전술
최근 산업계에서 각광받는 Foxglove Studio(Web/Electron 어플리케이션) 생태계는 rosbridge와 같은 무거운 미들웨어를 중간에 두는 대신, Zenoh 프로토콜과의 네이티브 커넥션을 공식 지원하기 시작했다.
이러한 모던 아키텍처 하에서는 운영자의 로컬 머신에 ROS 2 스택 전체나 무거운 RViz2 패키지를 설치할 필요가 완전히 소거된다.
운영자는 클라우드 라우터 데몬 실행 시 웹소켓(WebSocket) 수신 플러그인을 결합하여 배포하고, Foxglove Studio의 데이터 소스 연결(Data Source Connection) 설정에서 ‘Zenoh’ 커넥터를 직접 선택하여 라우터의 IP 주소를 지정하기만 하면 된다. 이를 통해 브라우저 기반의 경량화된 클라이언트가 중간 번역 과정(DDS 브릿징 오버헤드)을 생략한 채, TCP 소켓 레이어 위에서 원격지 로봇의 고해상도 3D 공간 데이터를 실시간(Real-time)으로 고속 렌더링하는 진정한 분산 관제 시스템 통합을 성취할 수 있다.