Slide 1

Slide 1 text

ROS Japan UG #40 ROS World 2020 参加報告会 @Google Meet micro-ROS 関連の発表 2 件について報告 2020.11.27 報告者: MAEHARA Keisuke note: This is ROS World 2020 Recap for developers in Japan.

Slide 2

Slide 2 text

Dronecode Session micro-ROS:closing the bridge between ROS2 and PX4

Slide 3

Slide 3 text

全体所感 micro-ROS そのものへの contribution の話ではな く, DDS と親和性の高いシステム(組み込みを含 む)を ROS2 DDS に migration していく手順の紹介

Slide 4

Slide 4 text

migration 前のシステムの姿 ・左側がドローン(マイコン)側,右側がコンピュータ側 ・この段階では直接 ROS2 Node とおしゃべりできない 出典: https://vimeo.com/showcase/ 7812155/video/480477960 よりスクリーンショット

Slide 5

Slide 5 text

ROS2 DDS 参画フェーズ ・ eProsima Integration service により ROS2 DDS がおしゃべりに参  画できるようになる.既存システムはそのまま残っている ・ DDS participant の機能を徐々に ROS2 Node として書き直す段階  と考えられる 出典: https://vimeo.com/showcase/ 7812155/video/480477960 よりスクリーンショット

Slide 6

Slide 6 text

ROS2 DDS 参画フェーズ +α ・ Integration service を利用すれば ROS1 もおしゃべりに参画できる  ようになる ・このプロジェクトで ROS1 の機能をどう使っているのかはよくわか  らなかったが, ROS1 から ROS2 への migration 手法の参考になる 出典: https://vimeo.com/showcase/ 7812155/video/480477960 よりスクリーンショット

Slide 7

Slide 7 text

microXRCE-DDS から micro-ROS への移行フェーズ ・ Integration service と既存の DDS を経由するオーバーヘッドがな  くなる ・ Bridge を自前開発から標準技術( micro-ROS )に置き換えること  と,ドローン側の開発において ROS2 のメッセージ型をベースにし  たコーディングができるようになることが狙いと考えられる 出典: https://vimeo.com/showcase/ 7812155/video/480477960 よりスクリーンショット

Slide 8

Slide 8 text

FIWARE Session micro-ROS: bringing ROS2 to MCUs

Slide 9

Slide 9 text

全体所感 ・ Micro-XRCE の本家とも言える eProsima の中の  人による micro-ROS の紹介(報告は省略) ・主に WIP な話   - ビルドシステム刷新   - MoveIt2 にも繋がります!   - Agent discovery   - Graph support   - P2P functionality   - AIoT Board

Slide 10

Slide 10 text

ビルドシステム刷新 ・ Dashing の頃は micro_ros_setup という巨大な ROS2 パッケージ  で様々なプラットフォームのコンフィギュレーションを行っていた ・ Foxy くらいになって,それぞれのビルドシステムに対するライブ  ラリとして提供されるようにもなった 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 11

Slide 11 text

MoveIt2 にも繋がります!( 1/2 ) ・評価ボード上の IMU の出力から並進 / 回転の変位を計算し, /tf と  して時々刻々と Publish する ・ /tf は仮想ロボットのベース座標系に対するフランジ座標系の位置  姿勢を表現しているようである 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 12

Slide 12 text

MoveIt2 にも繋がります!( 2/2 ) ・ボードを動かして並進 / 回転の変位を与えると MoveIt2 への入力  (フランジ座標系の目標位置姿勢)と RViz の GUI に反映される ・ボタン押下で /trigger_moveit2 が Publish され, MoveIt2 への入力  がキャプチャされて軌道計画の計算が始まる ・計算結果に従って仮想ロボットを駆動する ・(所感)実際の用途として micro-ROS を使う必然性はあまりない  と感じられるが,ロボットシステムを構成するソフトウェア群を階  層的に捉えたときに,上位階層に位置する軌道計画と下位階層に位  置するセンサ処理を同じフレームワークの中で繋げられますよ!と  アピールしたいのだろう

Slide 13

Slide 13 text

Agent discovery ・これまでは Client 側が Agent のアドレス(とポート)を静的に持っ  ていたが, UDP マルチキャストを使って最初に応答した Agent が  紐付く機能が追加された  ※報告者注:これまでも Agent 側には discovery 対応機能はあった  ようで,今回は Client 側への実装と思われる 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 14

Slide 14 text

Graph support ・ ROS2 DDS の要素(ノードやトピック)を Agent がスキャンして  収集, Client の RMW 層に送る. Pub 先のノードをチェックして   Pub するなどの分岐処理が目的と考えられる ・同様に Client の情報も ROS2 DDS に共有される 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 15

Slide 15 text

P2P functionality ・ WiFi UDP をサポートするプラットフォーム限定で, Client 同士が  通信できるようになる 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 16

Slide 16 text

AIoT Board ・ DepthAI というプロジェクトに採用された(詳細は Appendix ) 出典: https://vimeo.com/showcase/ 7812155/video/480473016 よりスクリーンショット

Slide 17

Slide 17 text

Appendix 報告者による追加調査

Slide 18

Slide 18 text

eProsima Integration Service とは ・異なる方言のミドルウェア同士を翻訳する(らしい) ・ ROS1/ROS2 ともにサポートされているので,うまく使えば ROS1  から ROS2 への移行に活用できそう 出典: https://integration-service.doc s.eprosima.com/en/latest/

Slide 19

Slide 19 text

micro-ROS の新しく追加されたビルドシステム( 1/2 ) ・公式サイトでは Secondary build system tools と紹介されている - https://github.com/micro-ROS/micro_ros_setup#secondary-build-system-tools ・ ArduinoIDE 向けの開発も始まっている(危うし ros2arduino !)

Slide 20

Slide 20 text

micro-ROS の新しく追加されたビルドシステム( 2/2 ) ・ ArduinoIDE サンプル micro_ros_publisher をビルドしてみた ・ Arduino Zero がサポートされているが,同じ SoC を搭載した MKR   ZERO としてビルドし,手元の Seeeduino XIAO で動作した

Slide 21

Slide 21 text

MoveIt2 との連携デモについて ・説明とコードが Github に上がっている   - https://github.com/micro-ROS/micro-ROS_moveit2_demo ・マイコン側のコードも上がっている   - https://github.com/micro-ROS/zephyr_apps ・マイコン側のコードを読むと, IMU の出力から並進 / 回転の変位を  推定するのに Madgwick Filter が使用されていることがわかる 出典: https://github.com/micro-ROS /micro-ROS_moveit2_demo

Slide 22

Slide 22 text

DepthAI について ・深度推定は Myriad X が担う( Host CPU のリソースはユーザアプ  リに 100% 使える) ・今回 micro-ROS が採用されたのは Host CPU として ESP32 を用い  たプラットフォーム ・開発の構想からプロトタイプが仕上がるまでの経緯が Issue に上  がっていて面白い   - https://github.com/luxonis/depthai-hardware/issues/10 出典: https://luxonis.com/depthai