BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース iRobotがLinuxベースの組み込みプラットフォームでのROS2実行を評価

iRobotがLinuxベースの組み込みプラットフォームでのROS2実行を評価

ブックマーク

ROSCon 2019で、iRobotのAlberto Soragna、Juan Oxoby、Dhiraj Goelの3氏が、低価格の組み込みプラットフォームでのRobot Operating System 2(ROS 2)の使用経験について講演した。さまざまなDDS(Data Distribution Service)実装を試験することで、氏らは、アプリケーションのCPUおよびメモリ使用量を削減し、それによってパフォーマンスを向上することができた。 

iRobotでは、一般消費者向けのロボットを自社製の低コスト組み込みプラットフォームで製造しているので、自社の組み込みハードウェア上にROS 2を使用するための調査を行った。ROS 2はデスクトップコンピュータやマイクロコントローラの上では良好に動作するが、小規模なLinuxコンピュータでROSを使用するのはそれよりも難しい。iRobotでは、ロボットに搭載されているものと同等のプラットフォームとして、1ギガバイトのRAMと900MHzにクアッドコアARM cortex A7 CPUを搭載したRaspberry Pi 2を使用することにした。ROS2が同社にとって選択可能なオプションであることを判断するために、ROSによる消費オーバヘッドがCPU20%およびRAM20MB未満であること、メッセージのレイテンシが許容範囲内でメッセージ 紛失が発生しないこと、この2つを受け入れるための条件とした。

iRobotが直面した大きな問題は、プロトタイプフェーズにおいて、約1,000台のロボットが同じネットワークに接続されていることだった。これは大きな通信オーバーヘッドを発生させる可能性があるため、独自開発のツールを使って分析することにした。このツールを同社では、分析データの生成の他、時刻通り到着したメッセージ、遅延したメッセージ、遅延し過ぎたメッセージの数の計測にも使用している。 

講演の中で氏らは、CPU使用量とメモリ使用量について同社が設定した目標を、現時点ではすべて超過している、と述べた。CPU使用量のオーバーヘッドは33パーセント、RAMの最大値は20MBどころか153MBにまで達していたのだ。オーバーヘッドの大部分はDS通信層を発生源としていた。この層をcyclone DDSに置き換えたところ、結果は改善し、同社サンプルアプリの最大CPU使用量とメモリ使用量がれぞれ13パーセントと15.82MB低下した。つまりパフォーマンスを大幅に向上させたければ、使用しているDDS実装を確認して、別のDDS実装への切り替えを考える必要がある、ということだ。

iRobotが統計値を改善した第2の方法は、オーバーヘッドの真因を探ることだった。RAM使用量が高いのは、DDSがROS内のオブジェクト毎にプロセスを生成して、他のトピックと通信を可能にしていたことが原因だ。これについては、ブラックリスト処理を追加することで、互いに検索する必要のあるノードだけを対象にするように通信を制限することが可能になった。この対策によってRAMの使用量は、変更前の45パーセントにまで減少した。

最後に彼らが目を付けたのは、ROS 2のイントラプロセスマネージャだった。ROS 2の現行のリリースのイントラプロセスマネージャであるDashing Diademataは、RMW層を経由してメタメッセージを送信する。iRoboでtは、通信オーバーヘッドの全体量を削減するイントラプロセスマネージャを新たに設けて、レイテンシとCPU使用率を減少させた。このオプションはCPU使用量を45パーセント減少させたが、RAMメモリのオーバーヘッドは依然として大きなままだ。新しいイントラプロセスマネージャは、ROS 2のマスタバージョンには既に追加されていて、次のリリースに含まれる予定である。

より詳細な情報は、 パフォーマンス分析の制作に使用されたツールを参照してほしい。ROS 2が提供するさまざまなサービス品質(quality of service)ポリシを確認して、期待するサービス品質を設定することも可能である。ロボットアプリケーションに必要な通信を確保する上で、この設定は有用だ。

この記事に星をつける

おすすめ度
スタイル

BT