$30 off During Our Annual Pro Sale. View Details »

ROS jp 2022/11/21 What's the zenoh?

ROS jp 2022/11/21 What's the zenoh?

ROSCon2022で見かけた面白そうな通信ミドルウェアのZenohについて紹介します。

Shintaro Hosoai

November 21, 2022
Tweet

More Decks by Shintaro Hosoai

Other Decks in Technology

Transcript

  1. 細合 晋太郎(東京大学)
    Zenohってなに?
    ROS Japan UG #48 ROSCon 2022ふりかえり会
    Twitter : @ShintaroHosoai
    GitHub : s-hosoai

    View Slide

  2. 元ネタ:ROSCon2022 10/20, Fleet Management Track
    Zenoh: How to Make ROS 2 Work at any Scale
    and Integrate with Anything
    Slide: http://download.ros.org/downloads/roscon/2022/Zenoh%20How%20to%20Make%20ROS2%20Work%20at%20any%20Scale%20and%20Integrate%20with%20Anything.pdf
    あれ・・資料公開されてるなら、この発表いらんのでは・・?

    View Slide

  3. Zenoh
     The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
     Zetta Scale社の通信ミドルウェア
     当初Ocamlで実装されていたものをRustに移植(2020/10-)
     Eclipse Foundation
     Github : https://github.com/eclipse-zenoh/zenoh
     Web : https://zenoh.io

    View Slide

  4. 通信方式 Pub / Sub
     Pub / Sub (Push) : ROSと同様のPub/Sub
     Pub / Sub (Pull):Sub時に一時保管され、任意のタイミングでPull可
     Pub / Store / Get:上記Pullの一時保管場所がRouter上になったもの
     Get / Reply:ROSのService相当。RPC
    Peer Peer
    Peer Peer
    Peer Peer
    Peer Peer
    Pub
    sub(callback)
    sub(Pull)
    Pub
    Pub
    Get
    Reply
    Pull

    View Slide

  5. ネットワーク構造
    Peer
    Peer Peer
    Peer
    Router
    Peer
    Peer
    Peer client
    client
    Peer
    Peer
    Router
    client
    client
    Router
    Peer to peer
    Clique Mesh
    Brokered Routed
    Router Router Router
    Router
    client
    client
    Router
    client
    client
    Peer Router
    client 機能は同じ要素っぽい。
    メッセージの送受をする
    中継のみ

    View Slide

  6. 通信レイヤ、対応言語
     ZenohはRust実装で、Rust, Python, Cのク
    ライアントライブラリあり
     各ネットワークレイヤが綺麗に抽象化されており、
    様々なネットワークレイヤの上で動作可能
     https://zenoh.io/blog/2022-08-12-
    zenoh-serial/
    QUIC, TLS, TCP,
    UDP Unicast,
    UDP Multicast
    IPc4, IPv6
    6LoWPAN
    WiFi, Ethernet,
    Thread, Bluetooth,
    Serial

    View Slide

  7. 相互運用性・拡張性

    View Slide

  8. 性能
     8byteのペイロードで4.2M msg/s
     1MBペイロードで51GB/s
     無負荷時、最小15 μsecのレイテンシ
     パケットのオーバーヘッドは5 byte
    (状況によってはもうちょっと増える)
     https://zenoh.io/blog/
    2022-09-30-zenoh-bahamut/
     https://zenoh.io/blog/
    2021-07-05-zenoh-overhead/

    View Slide

  9. Zenoh Client Library:examples (Rust)
    Publisher
    Subscriber
    Resolve
    (builder pattern)
    Future Some
    セッション作成
    Publish
    セッション終了
    セッション作成
    Subscriber作成
    非同期でメッセージ待ち

    View Slide

  10. Zenoh-pico
     Cで再実装した組込みボード向け軽量Zenoh
     かなりええ感じの性能が出ているらしい
    2.2.1. Zephyr
    Note: tested with reel_board, nucleo-f767zi, nucleo-f420zi,
    and nRF52840 boards.
    2.2.2. Arduino
    Note: tested with az-delivery-devkit-v4 ESP32 board
    2.2.3. ESP-IDF
    Note: tested with az-delivery-devkit-v4 ESP32 board
    2.2.4. MbedOS
    Note: tested with nucleo-f747zi and nucleo-f429zi boards
    2.2.5. OpenCR
    Note: tested with ROBOTIS OpenCR 1.0 board
    https://github.com/eclipse-zenoh/zenoh-pico

    View Slide

  11. zenoh-bridge-dds

    View Slide

  12. Robot 2
    Robot 1
    Zenohを使ったROS 2のNAT越え
    Zenoh-bridge-dds Zenoh-bridge-dds
    Zenoh router
    ROS 2
    Node
    ROS 2
    Node
    NAT NAT
    bridgeでzenohに翻訳して通信

    View Slide

  13. Zenoh-bridge-ddsとZenohdの導入方法
     グローバルIPの取れるどこかのクラウドVMなどにZenoh Routerをインストール
     各クライアントにzenoh-bridge-ddsをインストール
     各クライアントで別プロセスやバックグラウンドとしてzenoh-bridge-ddsを実行しておく、こ
    の時Zenoh routerのアドレス:ポートを指定する。
     あとは各クライアントでROS 2を実行すればつーつーで話せる。
     詳細はQitta記事をミテネー。
     https://qiita.com/Shintaro_Hosoai
    /items/a2f6c253a5b4599b056c

    View Slide

  14. ROS 2とZenohの併用

    View Slide

  15. ROS 2とZenohとElixirの併用
    Raspberry Pi 4
    Ubuntu 20.04
    ROS 2 foxy
    Raspberry Pi 4
    Nerves
    Rclex
    turtlesim
    ?
    ?
    Zenoh
    dds-bridge
    Azure VM
    Ubuntu 20.04
    Zenoh Router
    Code BEAM America
    高瀬先生のライブデモ
    日本で寝起きの細合
    https://twitter.com/loreniuxmr/status/1588318378724237312

    View Slide

  16. おわりに
     Zenohは、
     主要な通信メソッド(Pub/Sub, Get, Store, Query)が揃ってる
     ネットワーク形態も自由自在
     言語対応も多く、多様な通信層にも対応
     相互運用性に優れ、多様なプロトコルに対応、組込みボードにも載せられる。
     通信性能も高い
    と、かなりつおいです。
     一方、ROSのようなツールやライブラリは揃ってなさそうです。他と繋いでこそ真価を発揮するかと
     ROSと繋がるなんかええ感じの通信ミドルウェアないかなーって時に、
    ぜひ候補に覚えておいてください

    View Slide

  17. さいごに
    ROSjpなのにROSの話を殆どしなくて
    誠に申し訳ございません

    View Slide