ROSCon 2019で発表された"ROS 2 for Consumer Robotics: the iRobot Use-Case"(邦題:消費者向けロボットにおけるROS 2 iRobotのユースケース)の発表紹介です。
https://roscon.ros.org/2019/#day-2-november-1st
消費者向けロボットにおけるROS 2iRobotのユースケースROS 2 for Consumer Robotics: the iRobot Use-Case近藤 豊 Alberto Sorogna, Juan Oxoby, Dhiraj Goel (iRobot)1
View Slide
⾃⼰紹介近藤 豊• 博⼠(⼯学)• ~2018カワダロボティクス• 2018~Preferred Networks• 2019.8.13世界初のROS2本出版2
ROS 2の計算資源デスクトップ:ROS 2• いわゆる普通のROS 2マイクロコントローラ:micro-ROS• マイコン⽤のROS 2• DDS-XRCEによるブローカを介したROS 2ネットワーク参加• https://micro-ros.github.ioその中間の計算資源では?• 低コスト、LINUXベース、組み込みハードウェア• 単⼀プロセスアプリケーション• 同⼀ネットワークに数百ロボット参加3
RasPi 2を使った性能評価許容オーバヘッド• 20%のCPU負荷増加• 20MBのRAM増加• ⼗分速い応答速度• 通信の無⽋損ROS 2 PerformanceFramework• 任意のユーザ定義ROS 2プログラムの性能評価• 可読性が⾼いログ• https://github.com/irobot-ros/ros2-performance4
⼊⼒5
出⼒6
Fast-RTPSを使った評価結果メッセージの⽋落RAMの使いすぎ7⻘:実測値 ⾚:許容値
CyclonDDSを使った評価結果すべての値が許容値内Raspberry Piでも許容可能な性能8⻘:実測値 ⾚:許容値
新しいプロセス内通信を使った性能評価CPU使⽤率の半減応答性の改善メッセージの⽋落なし9⻘:実測値 ⾚:許容値
新しいプロセス間通信iRobotによる改善RMW層での共有メモリ実装ではなく、rclcppでの共有メモリ実装⼩さなメッセージでも効果⼤10https://github.com/irobot-ros/ros2-performance/blob/master/proposals/intraprocess_communication.md
現実課題への適⽤課題設定• ~1000台のロボットの同⼀ネットワーク参加• 1台あたり~35トピック送信• ~5のサブネット接続11
解決策12解1:デフォルトのDDS設定• 遅い• 信頼性の低い相互接続• ネットワーク過負荷解2:環境変数ROS_DOMAIN_IDの設定• ROS_DOMAIN_IDの枯渇問題解3:マルチキャスト検出機能の無効化• 接続先のIPアドレスを使ったユニキャスト
CycleDDSを使ってみる(おまけ)https://index.ros.org/doc/ros2/Tutorials/Working-with-Eclipse-CycloneDDS/$ sudo apt install ros-${ROS_DISTRO}-rmw-cyclonedds-cpp$ exportRMW_IMPLEMENTATION=rmw_cyclonedds_cpp$ ros2 run demo_nodes_cpp talker13
14