Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

元ネタ: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 あれ・・資料公開されてるなら、この発表いらんのでは・・?

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

通信方式 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

Slide 5

Slide 5 text

ネットワーク構造 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 機能は同じ要素っぽい。 メッセージの送受をする 中継のみ

Slide 6

Slide 6 text

通信レイヤ、対応言語  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

Slide 7

Slide 7 text

相互運用性・拡張性

Slide 8

Slide 8 text

性能  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/

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

zenoh-bridge-dds

Slide 12

Slide 12 text

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に翻訳して通信

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

ROS 2とZenohの併用

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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