Slide 1

Slide 1 text

消費者向けロボットにおけるROS 2 iRobotのユースケース ROS 2 for Consumer Robotics: the iRobot Use-Case 近藤 豊 Alberto Sorogna, Juan Oxoby, Dhiraj Goel (iRobot) 1

Slide 2

Slide 2 text

⾃⼰紹介 近藤 豊 • 博⼠(⼯学) • ~2018 カワダロボティクス • 2018~ Preferred Networks • 2019.8.13 世界初のROS2本出版 2

Slide 3

Slide 3 text

ROS 2の計算資源 デスクトップ:ROS 2 • いわゆる普通のROS 2 マイクロコントローラ:micro-ROS • マイコン⽤のROS 2 • DDS-XRCEによるブローカを介したROS 2ネットワーク参加 • https://micro-ros.github.io その中間の計算資源では? • 低コスト、LINUXベース、組み込みハードウェア • 単⼀プロセスアプリケーション • 同⼀ネットワークに数百ロボット参加 3

Slide 4

Slide 4 text

RasPi 2を 使った性能評価 許容オーバヘッド • 20%のCPU負荷増加 • 20MBのRAM増加 • ⼗分速い応答速度 • 通信の無⽋損 ROS 2 Performance Framework • 任意のユーザ定義ROS 2 プログラムの性能評価 • 可読性が⾼いログ • https://github.com/irobot- ros/ros2-performance 4

Slide 5

Slide 5 text

⼊⼒ 5

Slide 6

Slide 6 text

出⼒ 6

Slide 7

Slide 7 text

Fast-RTPSを 使った評価結果 メッセージの⽋落 RAMの使いすぎ 7 ⻘:実測値 ⾚:許容値

Slide 8

Slide 8 text

CyclonDDSを 使った評価結果 すべての値が許容値内 Raspberry Piでも許容 可能な性能 8 ⻘:実測値 ⾚:許容値

Slide 9

Slide 9 text

新しいプロセス 内通信を使った 性能評価 CPU使⽤率の半減 応答性の改善 メッセージの⽋落なし 9 ⻘:実測値 ⾚:許容値

Slide 10

Slide 10 text

新しいプロセス 間通信 iRobotによる改善 RMW層での共有メモリ 実装ではなく、rclcpp での共有メモリ実装 ⼩さなメッセージでも 効果⼤ 10 https://github.com/irobot-ros/ros2-performance/blob/master/proposals/intraprocess_communication.md

Slide 11

Slide 11 text

現実課題への 適⽤ 課題設定 • ~1000台のロボットの同⼀ ネットワーク参加 • 1台あたり~35トピック送信 • ~5のサブネット接続 11

Slide 12

Slide 12 text

解決策 12 解1:デフォルトのDDS設定 • 遅い • 信頼性の低い相互接続 • ネットワーク過負荷 解2:環境変数 ROS_DOMAIN_IDの設定 • ROS_DOMAIN_IDの枯渇問題 解3:マルチキャスト検出機能 の無効化 • 接続先のIPアドレスを使ったユニ キャスト

Slide 13

Slide 13 text

CycleDDSを使ってみる(おまけ) https://index.ros.org/doc/ros2/Tutorials/Working- with-Eclipse-CycloneDDS/ $ sudo apt install ros- ${ROS_DISTRO}-rmw-cyclonedds- cpp $ export RMW_IMPLEMENTATION=rmw_cyclone dds_cpp $ ros2 run demo_nodes_cpp talker 13

Slide 14

Slide 14 text

14