ROS/ROS2 開発: Open Roboticsの群制御ソフトウェア「Robotics Middleware Framework(RMF)」のご紹介

Twitter
Facebook
Hatena
ROS/ROS2 開発: Open Roboticsの群制御ソフトウェア「Robotics Middleware Framework(RMF)」のご紹介

はじめに

近年、ロボット技術の発達・普及に伴い、様々な産業で自律移動ロボットの導入が進んでいます。運搬や清掃など、ロボットの役割も多岐にわたります。複数台、複数社のロボットを組み合わせて同じ環境に配備することも珍しいことではなくなりました。そのような現場では、「複数台のロボットを効率的に制御する」、「複数社のロボットを一括管理する」といった課題を抱えているのではないでしょうか。
そこで役立つ手法が、群制御という技術です。

このコラムでは、ROS/ROS2やGazeboの開発元であるOpen Roboticsが開発中の群制御ソフトウェア「Robotics Middleware Framework(RMF)」を紹介します。 まずは、群制御とはどのような技術なのか、RMFが開発された目的について説明します。

(参考)
ROS(Robot Operating System)を使ったソフトウェア開発
ロボットシミュレータ「Gazebo」
Open Robotics

群制御とは

群制御とは、複数のロボットの動きを一つのソフトウェアで管理・制御するシステムです。
物流や工場等、ロボットを複数台使う業界では、生産性を高めるためにロボットをいかに効率よく動かすかが重要です。そのために考慮すべき要素は多くあります。例えば、各ロボットがどの位置にいるのか、他と衝突せずに目的地へ向かうためにどのような経路で向かえばいいのか、充電量は十分か、等です。
そのため、情報を一元化しながら制御を行う群制御が必要です。

群制御の課題とRMF

配備しているロボットのベンダーが1社だけであれば、その会社が開発した群制御ライブラリを用いることで制御できるかもしれません。しかし、そもそも群制御ライブラリが提供されていない場合は、1からライブラリを作るには考慮すべきことが多く困難です。
また、複数社のロボット群を制御したい場合、各社が提供するライブラリは独自のAPIを使用しているため、統一することも難しいです。
群制御できなければ、他社のロボットの位置を把握できず、衝突などのリスクが生じます。

複数社のロボットを制御する製品としては、既に、株式会社リンクスのNavitrolやNECのマルチロボットコントローラ等があります。しかしOpen Roboticsは、オープンソースソフトウェアとして群制御ソフトウェア「RMF」を提供し、問題を解消しようしています。これは協調領域化によるソフトウェアのさらなる進化や導入コストの削減が狙いと考えられます。

RMFの機能構成

RMFとは、ROS2で動作するオープンソースの群制御ソフトウェアです。ロボットだけでなく、自動ドアやエレベータといったインフラとも連動するように設計されています。シンガポールの病院や空港と提携し、実証検証が進められています。

RMFは3つの機能で構成されています。
・タスク管理・割当
・運行管理
・Fleet Adapter(RMFと各ロボットの群制御ライブラリとの接続機能)

ロボットによっては群制御ライブラリが存在しないものもありますが、Free Fleetというライブラリを使用すればRMFとロボットを接続できます。

構成図
図:RMFの機能構成

タスク管理・割当

群制御ではゴールに最も近いロボットや充電が十分なロボットなど、状況に応じたタスクに最適なロボットを割り当てる必要があります。 RMFのタスク管理・割当機能はユーザーが「指定した場所に移動する」などのタスクを送った際に、そのタスクの実行に最適なロボットを割り当てる機能です。

タスクの割り当て機構は、タスク通知→完了コスト計算→コストからタスク割り当てという順序で動作します。まず、RMFがタスクを受信すると、接続されている各Fleet Adapterにそのタスクを通知します。タスクを受け取ったFleet Adapterは、そのタスクを完了するためのコストを計算します。
ここでのコストとは、最短ルートや所要秒数等のことを意味します。各Fleet Adapterの計算したコストを元に、最適なロボットを選定し、タスクを割り当てます。

また、RMFのバッテリー管理とも連動しており、ロボットの充電量が閾値以下になった場合、そのロボットに充電場所へ戻るようなタスクを自動で割り当てることが可能です。

運行管理

複数のロボットを動かす際には、ロボット同士が接触しないよう、重複しない経路選択などの運行管理が必要になってきます。RMFの運行管理機能は「運行管理データベース」と「接触予測」の2つです。

運行管理データベース

運行管理データベースは、各ロボットから取得した現在位置や経路の情報をデータベースとして管理しています。RMFがロボットの経路計画を行う際は、これらの情報を元に衝突を回避する経路を計画します。

接触予測

接触予測ではデータベース内でロボット同士が将来衝突する可能性が予測された場合、そのロボットと接続しているFleet Adapterへ接触通知を行います。
その後、Fleet Adapterが回避経路を提案し、どの経路を採用するかを決定します。

Fleet Adapter(RMFと各ロボットの群制御ライブラリとの接続)

各ベンダーのロボットがRMFの機能の恩恵を受けるためには、ロボット側のAPIとRMFとの接続が必要です。Fleet Adapterは、ロボットの群制御ライブラリが上記2つの機能と接続できるようにするための機能です。

Fleet Adapterの役割には経路生成と情報取得もあります。経路生成はロボットがタスクを行う際の経路計画や衝突回避の回避経路生成を行うという機能です。そして、情報取得はタスクを実行するための目標を接続元の群制御ライブラリへ伝えたり、ロボットの位置や経路情報をRMFの運行管理へ送信したりします。

Fleet Adapterの種類は群制御ライブラリの権限に応じて複数あります。経路計画まで制御できるFull Control、一時停止/再開 制御までのTraffic Light、情報取得のみのRead Onlyの3種です。

接続方法としてはC++とPythonのAPIが用意されています。Pythonに関しては接続用のテンプレートがあり、指定位置にロボットの制御APIを記述するだけでフルスクラッチせずともRMFと接続できます。

Free Fleet

ロボットによっては群制御ライブラリが存在しないものもあります。
そういったロボットでもFree Fleetというライブラリを使用すればRMFとロボットを接続することが可能です。
現在はROSのNavigation Stack、ROS2のNavigation2がサポートされています。

まとめ

Open Roboticsが開発した群制御ソフトウェア「RMF」の概要を紹介しました。RMFはROS2のOSSライブラリとして運行管理、タスク割当といった群制御に必要な機能を備えています。

その他にも便利な機能が存在します。
RMFの設定ファイルを作成しながらシミュレーションファイルを出力できるGUIツール「Traffic Editor」や、Webベースのタスク送信・情報管理ツール「RMF Panel」といったものです。
RMFのGitHubでは様々なシチュエーションでのシミュレーションデモが公開されています。ぜひご参照ください。

当社は、将来に繋がる次世代技術を調査研究しています。RMFについても、今後、群制御の重要性が高まると予想され、調査・検証を行っています。
また当社は、産業用ロボット・協働ロボットやAGV、ドローンなどのROS/ROS2対応、現場導入・運用保守、環境構築支援といったソフトウェア開発を含むROSソリューションを提供しています。

関連サービスについて、詳しくは以下のページをご覧ください

ROS開発支援サービス

 

 

この記事の執筆者

清水 健吾Kengo Shimizu

技術管理統括部 先端技術支援部
ロボットインテグレーション室
リーダー / マスター

RMF ROS ROS2