Dyuichi Blog

ROS (Robot Operating System) について

ロボットソフトウェアプラットフォーム

ロボットソフトウェアプラットフォームの誕生

従来,ロボット用アプリ開発者は,ロボットのハードウェアを強く意識してソフトウェアを開発する必要があった.しかし,汎用的なロボットオペレーティングシステム,あるいはソフトウェアプラットフォームが開発されれば,アプリ開発者はそこで動作するアプリケーション開発に資源を集中できるようになる.

そこで,ロボットソフトウェアプラットフォームが誕生した.

ロボットソフトウェアプラットフォームの誕生により,ソフトウェアに精通した多様な人材がロボットアプリケーション開発に参加しやすくなった.また,ハードウェア開発者は,ソフトウェアプラットフォームで提供するインタフェースに合わせてハードウェアを設計すればよい.これにより,ロボットメーカーはアプリケーションの開発時間や管理コストを削減でき,ロボット分野が急速に発展するきっかけとなった.

ロボットソフトウェアプラットフォームの例
  • ERSP, Evolution Robotics
  • MSRDS, Microsoft
  • MARIE, LABORIUS
  • URBI, Gostai
  • ROS, Open Source Robotics Foundation, (OSRF, アメリカ)
  • OpenRTM, 産業技術総合研究所 (AIST, 日本)
  • OROCOS, KU Lenven, LASS, KTHなどのヨーロッパ連合 (ヨーロッパ)
  • OPRoS, ETRL, KIST, KITECH, 江原大学 (韓国)
  • NAOqi, ソフトバンク (日本), Aldebaran (フランス)

このように様々なロボットソフトウェアプラットフォームがあるが,使いやすいコンポーネントの追加機能や通信機能,可視化,シミュレータ,リアルタイム性など,各プラットフォームがそれぞれユニークな機能を提供しているため優劣をつけることは難しい.

ROSはこれらロボットソフトウェアプラットフォームの中でも,ユーザー数,提供ライブラリの種類と数,拡張性の高さ,開発の容易さなどの点で優れている.

さらに,ROSの開発には,大学の研究者,企業の開発者,趣味で活動するハーベスト,さらにはロボットを専門とする人々だけでなく,コンピュータサイエンス.コンピュータビジョン,あるいは通信ネットワークの専門家など,多様な人々が開発に携わっている点が特徴的である.

ROS

ROSとは

ROS Wiki では,ROSは以下のように定義されている.

ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しています. 具体的には, ハードウェア抽象化, デバイスドライバ,ライブラリ,視覚化ツール, メッセージ通信,パッケージ管理などが提供されています. ROSはオープンソースの一つ, BSDライセンスにより, ライセンス化されています.

上述されている機能については以下で解説.

つまり,ROSは異なるハードウェアでも共通して使用できるロボットオペレーティングシステムであり,アプリケーション開発のための様々なツールを備えたソフトウェアプラットフォームである.

Web業界では,昨今マイクロサービスという概念が叫ばれるようになった.ROSの仕組みはこの概念に非常に似ている.マイクロサービスではなくノードという言葉を使っているが,同じく再利用可能な一つ一つの機能が実装されている.これらのノード間を上述のメッセージ通信で相互接続したものがROSアプリケーションである.

ROSとOSの違い

ROSを正確に表現すると,メタ・オペレーティングシステムである.OSとは異なる.

ROSとは,既存の伝統的なオペレーティングシステムを利用しながら,ロボットアプリケーションの開発に必須となるロボットやセンサの制御システムを,ハードウェア抽象化の概念に基づいてパッケージ化したものである.

また,ROSでプロセス間通信に使用されるメッセージは,異なるオペレーティングシステムや異なるハードウェア上のプロセス間でも自由に情報をやり取りすることができる.したがって,ROSは,様々なハードウェアから構成される複雑なロボット開発にも適したオペレーティングシステムである.

ROSの歴史
いつ出来事
2007年5月米国のスタンフォード大学人工知能研究所(AI LAB)が実施したSTAIR(Stanford AI Robot)プロジェクトにおいて,Morgan Quigleyが開発したSwitchyardに端を発する.
2007年11月米国のロボット専門企業Willow GarageがSwitchyardを引き継ぎ,ROSの名前で開発を始める.
2010年1月ROSの開発者向けプレスリリース版であるROS1.0を発表.
2010年3月公式バージョンであるROS Box Turtleがリリースされる.
2014年ROS2の開発開始.

ROS2

ROS2の開発背景

ROS1が多くの開発者に利用されるに従い,ROS1の開発当初には想定していなかったようなユースケースに対応する必要性が生じた.

ROS1が抱えていた課題は,次のようなものである.

  • 通信基盤やROSパッケージの信頼性が低いため製品化が難しい
  • リアルタイム対応が難しい
  • 単一障害点があるためモータードライバなど決定的なシステムに利用できない
  • Ubuntuでないと使いにくい
  • 単体で組込みシステムに利用できない

これらの課題を解決するためにスタートしたのがROS2プロジェクトである.

ROS1とROS2の違い
ROS1ROS2
ロボットの同時利用数単体ロボットのみ対応複数台ロボットにも対応
計算資源高性能計算機のみ対応組み込みプラットフォームにも対応
リアルタイム制御特別な作法に従う必要あり一般的なプロセス内・プロセス間通信
ネットワーク品質理想的かつ安定的な高品質ネットワーク環境のみ対応不安定な通信環境下での利用にも対応(欠損や遅延も許容)
プログラミング形式最大限にユーザの自由柔軟性を残しながらも形式を固定
アプリケーション研究,学術用途のみ対応製品化にも対応
OSUbuntu(/ Windows)Ubuntu / Windows / Mac

ROS活用例

参考文献