Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZenohのROS 2向け対応の現状と方向性 (just my thought)

takasehideki
February 09, 2024

ZenohのROS 2向け対応の現状と方向性 (just my thought)

ROS Japan UG #54 関西ROSJP
2024/02/09
https://rosjp.connpass.com/event/304753/

YouTube Live(アーカイブ 0:51:42頃から)
https://youtu.be/7YsMriT5IUY?t=3102

takasehideki

February 09, 2024
Tweet

More Decks by takasehideki

Other Decks in Technology

Transcript

  1. Hobby Recent R&D Affiliation Mission あらゆる モノ・コトと ヒトを繋げる 設計基盤の 確⽴

    最適化 設計技術 良いモノ を 誰でも楽に つくることができる世界へ 組込み/IoTコンピューティング基盤を⽀える プラットフォーム技術と設計⽅法論 @takasehideki ശ ఉ ϩʔΧϧ؀ڥ ηϯγϯά ̇ ̇ ̇ ө૾ Ի Թ౓ ࣪౓ ѹྗ ৼಈ Edge AI ޯ഑ܭࢉɾߋ৽ -PTT 8FJHIU ਪ࿦ ੍ޚ ΢ΣΞϥϒϧ σόΠεɾ ϔϧεέΞ ϩϘοτ ϞϏϦςΟ ೖྗ ग़ྗ ϑΟʔυ όοΫ Edge AI Edge AI Edge AI Edge AI Fog AI ू໿ ෼഑ ϩʔΧϧ؀ڥ Fog AI Edge AI Edge AI ϩʔΧϧ؀ڥ Fog AI Edge AI Edge AI Cloud MEC BEAM クラウド BEAM エッジ BEAM 最適配分アルゴリズム 透過型分散プラットフォーム BEAM システム開発者 デプロイされる コード ① ③ ② ③ ③ ❤ 評価アプリ ❤ 評価アプリ ④ ④ ❤ 評価アプリ ④ ② ② ❤ 評価アプリ ④ ② ② ② ②
  2. 24! ど こ で や る か な ! ?

    発 表 内 容 は 今 か ら 考 え ま し ょ う ! •講演申し込み開始︓2024年4⽉1⽇ •講演申し込み締切︓2024年5⽉24⽇ •講演採択発表︓2024年7⽉10⽇ •参加登録開始︓2024年6⽉24⽇ •早期登録締切︓2024年8⽉9⽇ •事前登録締切︓2024年9⽉13⽇ •講習会︓2024年9⽉24⽇(⽕) •ROSCon JP 2024︓2024年9⽉25⽇(⽔) •会場︓ 東京都⽴産業貿易センター 台東館 https://roscon.jp/
  3. • Zero Overhead Pub/Sub, Store/Query and Compute. — Zero network

    overhead protocol — ネットワーク内ではDDSライク, ネットワーク間ではMQTTライクな通信ミドルウェア — GitHub : https://github.com/eclipse-zenoh/ üEclipse Public License 2.0 and/or Apache 2.0 — 当初はOCaml実装,2020/10- 頃からRustに移⾏ • 開発主体︓ZettaScale Technology — CEO/CTO︓Angelo Corsaro さん — ADLINK(CycloneDDS開発主体)から独⽴︖ 7
  4. 8 • Pub / Sub (Push) • Pub / Sub

    (Pull) • Pub / Store / Get • Get / Reply Peer Peer Peer Peer Peer Peer Peer Peer Pub Sub(callback) Sub(Pull) Pub Pub Get Reply Pull
  5. 10 なんでもつかえる︕ QUIC, TLS, TCP, UDP Unicast, UDP Multicast IPv4,

    IPv6 6LoWPAN WiFi, Ethernet, Thread, Bluetooth, Serial • https://github.com/eclipse-zenoh/zenoh-python • https://github.com/eclipse-zenoh/zenoh-cpp • https://github.com/eclipse-zenoh/zenoh-c • https://github.com/eclipse-zenoh/zenoh-java • https://github.com/eclipse-zenoh/zenoh-kotlin • https://github.com/eclipse-zenoh/zenoh-csharp • https://github.com/eclipse-zenoh/zenoh-go とりあえず Pythonじゃね?? https://zenoh.io/docs/ getting-started/first-app/
  6. 11 だったらElixirじゃね︖︖ 2012年に登場した新しめの関数型⾔語 BEAM (Erlang VM) 上で動作 • ⾼い並⾏/並列性能を誇る •

    軽量かつ頑強なプロセスモデル • 耐障害性が極めて⾼い Rubyを基にした⾔語設計 • 習得しやすく⽣産性が向上する • 通信応答性能が極めて⾼い • Web/IoT/AI FW. を備える Programming should be about transforming data .1 1 ( 0 ) . .1 ) 11 .1 ) ) &0 1(. &0 1 Elixir Zen Style Ø データフローと並列処理を Enum Flow |> で直感的に記述できる ※各⾔語・フレームワークのロゴの権利は それぞれの作成者に帰属しています
  7. • Zenohex = Zenoh + Elixir https://github.com/b5g-ex/zenohex Zenoh Protocol by

    Rust Erlang VM Elixir node1 Elixir node2 process Rustler github.com/rusterlium/rustler Rust謹製のZenoh APIを Elixir/Erlangから利⽤ Python node2 Erlangプロセスなので 軽量かつ堅牢︕︕ C++ node1 だったらElixirじゃね︖︖
  8. 14 いろいろつながる︕ Peer Peer Peer Peer Router Peer Peer Peer

    client Peer Peer Router client Router Peer to peer Clique Mesh Brokered Routed Router Router Router Router client client Router client client client client
  9. 16 とりま いごかしてみます!! 論よりRUN!! "ron yori run" The RUN is

    mightier than the word https://github.com/takasehideki/zenoh_ros2trial?tab= readme-ov-file#demo-1-review-of-fa_study18
  10. 18 つまり,こうなる︕(はず) … … rclcpp rclpy node.cpp node.py RCL (ROS

    Client Library) RMW (ROS MiddleWare) DDS B DDS A General Purpose OS rclrs node.rs Zenoh?? DDSと同じようにZenohを 選択できるようになる DDSと同じレイヤに Zenohが追加される ユーザアプリ/クライアントライブラリの レベルでは影響なし
  11. 19 ros2/rmw_zenoh • ROS 2がZenohでつながる —現状の対象は Iron/Rolling もちろん Jazzy にも

    rolling 予定︕ —開発主体 (Organization)︓ros2 <- ATOLabs (ZettaScale) ütransferred ownership in Sep 2023, but soon Initial commit from scratch;( —maintainers: üYadunund Vijay (@Yadunund Iron ROS Boss) üChris Lalancette (@clalancette ROS 2 Technical Lead)
  12. 20 ros2/rmw_zenoh • メカニズム —zenoh-c (C API for Zenoh) の

    binding として実装 階層︓RMW(C++) |> API(C) |> Zenoh(Rust) —ROS 2 node = Zenoh Session Zenoh Router で discovery |> P2P で pub/sub ü現状は Router の⽴ち上げが必須(将来的には不要に︖) • できること — Topic, Service — basic QoS [PR#91] —limited ros2cli • WiP/できないこと — Events [PR#103] — DDSノードとの通信
  13. 21 ros2/rmw_zenoh • ビルド • 実⾏ — Zenoh ルータの⽴ち上げ curl

    --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh mkdir ~/ws_rmw_zenoh/src -p && cd ~/ws_rmw_zenoh/src git clone https://github.com/ros2/rmw_zenoh.git cd ~/ws_rmw_zenoh && rosdep install --from-paths src --ignore-src --rosdistro <DISTRO> -y source /opt/ros/<DISTRO>/setup.bash colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release source ~/ws_rmw_zenoh/install/setup.bash ros2 run rmw_zenoh_cpp init_rmw_zenoh_router source ~/ws_rmw_zenoh/install/setup.bash export RMW_IMPLEMENTATION=rmw_zenoh_cpp ros2 run demo_nodes_cpp talker source ~/ws_rmw_zenoh/install/setup.bash export RMW_IMPLEMENTATION=rmw_zenoh_cpp ros2 run demo_nodes_cpp listener
  14. 22 ほんまかいな︕︖ 論よりRUN!! "ron yori run" The RUN is mightier

    than the word https://github.com/takasehideki/zenoh_ros2trial?tab= readme-ov-file#demo-2-rmw_zenoh
  15. あれっこの話しは︖ ROSJP#53「ROSCon 2023参加報告︓Real-Time Workshop & Zenohʻs Current Status and Forecast」

    https://speakerdeck.com/takasehideki/roscon-2023can-jia-bao- gao-real-time-workshop-and-zenohs-current-status-and-forecast https://www.youtube.com/watch?v=TZaYVL8xeBs&t=2426s
  16. 24 zenoh-plugin-ros2dds • ZenohでROS 2がつながる —zenoh-plugin-dds から派⽣ —より ROS 2

    フレンドリーに︕ —plugin: router にロードして使う —bridge: スタンドアロンで動作する —maintainers: üJulien Enoch (@JEnoch Senior Solutions Architect at ZettaScale)
  17. 25 • インストール — GitHub Releases からダウンロードしちゃうほうが楽かも,,, • 実⾏ —

    Zenoh ブリッジの⽴ち上げ echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" | sudo tee -a /etc/apt/sources.list > /dev/null sudo apt install zenoh-plugin-ros2dds sudo apt install zenoh-bridge-ros2dds export RMW_IMPLEMENTATION= export ROS_DOMAIN_ID=2 zenoh-bridge-ros2dds export RMW_IMPLEMENTATION= export ROS_DOMAIN_ID=2 ros2 run demo_nodes_cpp talker export RMW_IMPLEMENTATION= export ROS_DOMAIN_ID=4 ros2 run demo_nodes_cpp listener zenoh-plugin-ros2dds export RMW_IMPLEMENTATION= export ROS_DOMAIN_ID=4 zenoh-bridge-ros2dds
  18. 26 うせやろ︖︖ ほんならくらうどともいけんちゃう︖︖ 論よりRUN!! "ron yori run" The RUN is

    mightier than the word https://github.com/takasehideki/zenoh_ros2trial?tab= readme-ov-file#demo-3-zenoh_ros2dds https://github.com/takasehideki/zenoh_ros2trial?tab= readme-ov-file#demo-4-connect-to-the-cloud
  19. 27 まとめると,,, • ROS 2がZenohでつながる • 最⾼なのでは︖︖ • ZenohでROS 2がつながる

    • 最強なのでは︖︖ https://youtu.be/wXzVXhLEUjQ https://projects.eclipse.org/projects/iot.zenoh/releases/1.0.0
  20. 28 Thank you! merci!! Arigato!!! @takasehideki A part of this

    work is supported by the commissioned research (04001) by National Institute of Information and Communications Technology (NICT) , Japan.