ちなみにこのROSと並行して、2015年から「ROS 2.0」の開発も進んでいる。最初のリリース(alpha 1)は2015年8月にあり、2016年12月にはbeta 1がリリース、現在は最新のbeta 3(2017年9月)が出ており、2017年12月にはbetaの付かない最初のオフィシャルリリースが予定されている。
ROSとROS2の間に互換性はない(共存は可能)が、これには訳がある。1つは分散型通信システムの問題、1つはROSの使われ方の変化だ。
ROSの開発当時、適切な分散型通信システムは存在していなかったので、ROSはこれを独自に開発した。ただその後、幾つかの分散型リアルタイム通信システムが普及を見せたこともあり、ROS 2.0ではその1つである「DDS(Data Distribution Service)」を採用している。DDSの採用によって、ROSとROS2に互換性は無くなっている。
もう1つ、ROSのAPIそのものが、設計時の想定と実際の使われ方に距離が生まれてきたことも互換性が確保されなかった理由といえる。APIそのものを変更すれば実態に即したものとなるが、既存ソフトウェアは動作しなくなる。そのため、別のAPIを設計する方が適切と判断されたのだ。
具体的にいえばROSはユースケースとして、「1体のロボットの制御」「ワークステーションクラスの制御ボードを使って管理」「リアルタイム性は特に求めない」「ネットワークが常につながっている」「主に研究などの目的」といったユースケースや要件を想定していた。
登場時はこれで十分であったが、昨今はよりニーズが多様化している。これに向けてROS 2.0ではユースケースや要件として、「複数ロボットによる協調動作のサポート」「マイコンレベルのコントローラーを直接利用可能」「リアルタイム動作のサポート」「劣悪なネットワーク環境でも動作可能」「製品レベルでの利用」を挙げており、こうしたニーズには既存のROSを拡張するよりも、新しく開発したほうが良いと判断されたためだ。
そんな訳でROSは主にロボットの形をした機器の制御に使われるが、実は分散型システムでは広くROSを利用する余地があり、意外なところでもROS(や今後はROS 2.0)が動いている、ということになるだろう。
「ロボット開発」に関するさらに詳しい情報をお求めの方は、MONOistに掲載された記事を再編集した無料電子ブックレット『あのロボットが私のハードウェア予算を食っている!』をぜひご覧ください。「未知の地形を滑らかに歩かせる」を例に、エンベデッドシステム化するロボットについて考えます。 ⇒ダウンロードはこちら
Copyright © ITmedia, Inc. All Rights Reserved.
豊富なホワイトペーパーの中から、製品・サービス導入の検討に役立つ技術情報や導入事例などを簡単に入手できます。