ros2/rmw_zenoh

RMW for ROS 2 using Zenoh as the middleware

해결하는 문제

rmw_zenoh는 Zenoh 기반의 ROS 2 미들웨어(RMW) 구현체를 제공하여 기본적인 DDS 기반 통신 계층의 대안을 제시합니다. 다양한 호스트, 컨테이너, 네트워크 간의 발견 및 통신을 단순화하며, 로컬 통신에 고성능 옵션을 제공합니다.

작동 방식

zenoh-cpp 바인딩을 사용하여 ROS 2 RMW 인터페이스를 구현합니다. 시스템은 Zenoh 세션과 선택적 Zenoh 라우터를 사용하여 발견 및 메시지 라우팅을 관리합니다.

주요 메커니즘:

  • Zenoh 라우터: 중앙 집중식 발견 및 고프 전달을 담당하며, 기본적으로 비활성화된 멀티캐스트 발견에 의존하지 않고 노드 간 상호 탐색이 가능하게 합니다.
  • 공유 메모리(SHM): 로컬 노드 간 메시지 전달에 대해 암묵적인 최적화를 제공하여 네트워크 스택을 사용하지 않고 공유 메모리 세그먼트에 데이터를 쓰는 방식으로 대용량 데이터의 지연과 CPU 사용량을 줄입니다.
  • 직렬화 버퍼 풀: 전송 중 버퍼를 재사용하여 메모리 사용량을 제한하고 효율성을 향상시킵니다.
  • 구성: .json5 구성 파일과 환경 변수 오버라이드를 사용하여 세션 동작, 라우터 엔드포인트, 보안 설정을 관리합니다.

대상 사용자

다수의 호스트 또는 Docker 컨테이너 환경에서 작동하는 ROS 2를 사용하는 로봇 개발자로, 유연하고 고성능 통신 미들웨어를 필요로 하는 분들입니다.

주요 특징

  • 암묵적 공유 메모리: 특별한 API 호출 없이 대용량 데이터의 로컬 통신을 자동으로 최적화합니다.
  • 유연한 발견: 라우터 기반 발견과 멀티캐스트 스카우팅을 모두 지원하여 피어 투 피어 발견을 가능하게 합니다.
  • 크로스호스트 브리징: Zenoh 라우터를 통해 서로 다른 머신 간의 ROS 2 노드를 간편하게 연결할 수 있습니다.
  • 통합 보안: zenoh_security_tools를 통해 접근 제어, 인증, 암호화를 지원합니다.
  • 메모리 효율성: 직렬화 버퍼 풀을 구현하여 버퍼 재사용을 통해 메모리 무제한 증가를 방지합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트