ROS とは
ROS(Robot Operating System)は、オープンソースのロボットソフトウェアプラットフォームです。
ROSは、ロボット用アプリケーションプログラムの開発に必要なハードウェアの抽象化や低レベルのデバイス制御のみならず、センサ信号処理と認識、学習、位置推定や地図作成(SLAM), ナビゲーション、マニピュレーション等の高度な制御、及びパッケージ管理、ソフトウェア開発に必要な様々なライブラリや開発環境、デバッグ用ツールが含まれます。
ROSの代表的なツール・ライブラリ
ROSが提供するツールやライブラリのうち、代表的なものをいくつか紹介します。
・rviz
rvizは、ロボットの姿勢やセンサから得られたデータ、プログラム内で計算されたデータなどを可視化するツールです。
複数のロボットやユニットを同じ仮想空間上に可視化することも可能で、生産ライン全体の視覚的な状況把握にも役立ちます。
・Gazebo
Gazeboは、ROSで標準的に使用されるシミュレータです。
ロボット外部の環境をシミュレータ上に構築することができ、さまざまな状況におけるカメラやセンサの働き、ロボットの挙動などの確認に役立ちます。
・MoveIt
MoveItは、ROSで標準的に使用される軌道計算ライブラリです。
ROS2が生まれた背景
ROSの開発が始まったのは2007年ですが、当初、ROSは主に研究用途での利用を想定し、以下の前提のもと設計されました。
・単一のロボットであること
・ワークステーションクラスの計算資源が利用できること
・リアルタイム処理は不要であること
・高速で安定したネットワーク環境であること
・研究、学術用途で用いられること
・規制や禁止事項がなく、最大限の柔軟性があること
しかし、2010年のリリース以降、他のロボット用フレームワークと比べて急速にユーザー数が増えると、やがて製造・農業・商業分野のロボットに利用する動きも見られるようになります。ROSの利用範囲はその後も着々と拡大し、ROSを搭載したロボットが製品として市場に登場するまでになりました。
当初の想定を超える形で利用分野が拡大した結果、ROSの利用が適さない状況が目立つようになったのです。当時のROSが抱えていた課題は、次のようなものでした。
・通信基盤やROSパッケージの信頼性が低いため製品化が難しい
・リアルタイム対応が難しい
・単一障害点があるためモータードライバーなど決定的なシステムに利用できない
・Ubuntu(Linux)でないと使いにくい
上記の課題に対し、既存のROSが抱えている問題を解決するためにスタートしたのがROS2プロジェクトです。
ROS2の特徴
同時利用数
ROS1では、メッセージ通信の仲介役を担うROSマスタは単一でしか存在できません。単一障害点であるROSマスタがもしも不具合を起こしてしまうと、その影響はROSネットワーク全体に伝番し、すべてのロボットが動作不能になってしまう欠点があります。
それに対して、ROSではこのROSマスタという仲介役が必要なくなりました。そのため、単一障害点は存在せず、複数台のロボットがROSネットワークの障害で一度に不具合を起こすことはありません。
計算資源
ROS1は核となる構成要素の実装にC++言語を用いています。そのため、C言語のプログラムの実行環境しか持たないマイコンのような組み込みプラットフォームでは、動作させることが非常に困難です。
一方、ROS2は核となる構成要素をC言語で実装しています。さらに、メッセージ通信もプラットフォームとして実装されており、軽量化できるように部分的な機能のみを提供できる枠組みになっています。
リアルタイム制御
ROS1は基本的にリアルタイム性を考慮していません。メッセージ通信はTCPを基本としています。
RO1のTCP通信に対して、ROS2はUDP通信ベースとするプロトコルであるため、送信を完全にリアルタイム周期で行うことができます。
ネットワーク品質
ROS2はQoS (Quality of Service)を備えています。これは、受信データは必ず受信者に届くことを保証します。ROS2の通信プロトコルUDPとQoSの機能を組み合わせて、非常に頑健なネットワークを構築できます。
ROSで動くロボット事例
最後に、ROSを活用したロボットの開発事例を紹介します。
Amazon
Amazonが使用しているKivaロボットには、ROS (Robot Operating System)が使用されています。ROSは、Kivaロボットの制御やセンサーデータの処理など、さまざまな機能に使用されています。
ROSを使用することで、Kivaロボットの開発者やメンテナンススタッフは、標準化されたインターフェースを使用して、ロボットの制御やデバッグを容易に行うことができます。また、ROSを使用することで、ロボットの制御プログラムやセンサーデータの処理プログラムを簡単に開発できます。
例えば、Kivaロボットの制御システムは、ROSのNavigation Stackを使用しています。Navigation Stackは、ロボットの自律ナビゲーションをサポートするための一連のROSパッケージであり、Kivaロボットが物流センター内を自律的に移動するために必要なプログラムを提供します。
Autoware
Autowareは、自動運転車の開発に使用されるオープンソースのソフトウェアプラットフォームであり、ROS (Robot Operating System)が使用されています。
Autowareは、LIDAR、カメラ、GNSSなどのセンサーデータを収集し、自動運転車の制御や認識、ローカリゼーションなどの機能を提供するために、ROS上で実行されます。
Autowareは、ROSの多くの機能を活用しています。例えば、ROSのNavigation Stackを使用して、自動運転車の自律ナビゲーションをサポートしています。Navigation Stackは、自動運転車が自己位置推定や障害物検知などを行い、目的地に自律的に到達するための機能を提供するために使用されます。
また、Autowareは、ROSのパッケージを活用して、センサーデータの処理や車両の制御を行います。例えば、Autowareは、ROSのPointCloud Library (PCL)を使用して、LIDARセンサーデータを処理します。また、Autowareは、ROSのTwist型メッセージを使用して、自動運転車の速度や方向などを制御します。
ROSを活用した開発・導入を総合的に支援します
ROSを活用したシステム構築・ソフトウェア開発はハチエックスにお任せください。
受託開発から組込みシステムへの適用、商用化まで総合的にご支援します。
Comments