ROSって何?

781443_R

ROSって何?

ROSは「Robot Operating System」の略ですが、「S」には「Source」の意味も含まれているようです。2007年ごろから、スタンフォード大学のScott Hassan によって前年にシリコンバレーに設立されたWillow Garage社を中心に開発が進められ、今はOSRF(OpenSource Robotics Foundation)が維持運営しています。OSRFとは2012年4月に、Willow Garage社からのROSプロジェクトのスピンアウトにより設立した非営利公益法人です。

ROSは、スタンフォード大学人工知能研究所(AI LAB)がSTAIR(STanford Artificial Intelligence Robot)プロジェクトで開発したSwitchyardが元になっています。2007年11月にWillow Garage社がSwitchyardを引き継いでROSの名前で開発を始めました。現在ROSは、欧米を中心にユーザ数が拡大しており、最も標準的なロボットソフトウェアプラットフォームとなっています。

ROSの公式サイトであるROS Wikiでは、ROSを以下のように定義しています。

ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.
(ROSはオープンソースで提供されるロボット向けのメタ・オペレーティングシステムです。ハードウェア抽象化、低レベルなデバイス制御、一般的な機能性、プロセス間通信、そして、パッケージ管理など、一般的なオペレーティングシステムに要求されるサービスを提供します。)
(http://wiki.ros.org/ROS/Introduction より)

Robot Operating Systemという名前から、Windows、LinuxのようなOperating Systemを想像してしまいますが、そうではなく「メタ・オペレーティングシステム(Meta-Operating System)」と述べています。

ROSについては、いろいろな説明がなされています。簡単なものでは「ROSはOSSのロボット用ミドルウェア」「ロボット開発を楽にするための枠組み」「ロボット開発で用いられる様々なセンサ,ロボット本体,アルゴリズムを統一的に利用するためのソフトウエアプラットホーム」といった説明があります。もう少し詳しくは下記の説明もあります。

ROSは異なるハードウェアでも共通して使用できるロボットオペレーティングシステムであり、アプリケーション開発のための様々なツールを備えたソフトウェアプラットフォームである。
(詳説ROS ロボットプログラミング ー導入からSLAM、Gazebo、Moveitまでー 著者:表允晳、倉爪亮、渡邊裕太 出版日:2015年11月30日(初版)出版社:Kurazume Laboratory より)

ROSではロボット開発のための機能部品を、パッケージ(Packages)やスタック(Stacks)としてWiki形式で配布しています。パッケージの⼤部分はフリーソフトウェアの代表的なライセンス体系であるBSDライセンス(Berkeley Software Distribution License)で提供されています。BSD ライセンスとは、誰でも修正、再利用、再配布が自由に行え、ソースの供給者に対してライセンス料の支払いが不要を宣言したものです。
パッケージやスタックの違いについては、ROSの公式サイトであるROS Wikiには次のように説明されています。

Packages are the lowest level of ROS software organization. They can contain anything: libraries, tools, executables, etc.
(パッケージは ROS ソフトウェア構成の一番基礎となる水準です。ここにはライブラリやツール・実行ファイル等何でも含まれます。)
Stacks are collections of packages that form a higher-level library.
(スタックは高レベルのライブラリを形成するパッケージ の集合です。)
(http://library.isr.ist.utl.pt/docs/roswiki/ROS(2f)Tutorials(2f)NavigatingTheFilesystem.html より)

ROSの他には?

ミドルウェアは、オペレーティング-システム(OS)とアプリケーションソフトウェアとの間にあってOS上で動作し、アプリケーションに共通する機能や処理を提供しています。これによって、アプリケーションは共通部分の開発を省くことができるためシステム開発の効率化を図ることができ、さらに、OSやハードウェアなどの下位層の違いを吸収して互換性を高められるというメリットがあります。

前述のROSはオープンソースのロボット用ミドルウェアで、ROSの場合は通信や移動や認識などのライブラリ群としてのミドルウェアの機能の他に、ソフトのツールとソフトの発表と流通のためのコミュニティーが提供されているところが特徴となっています。

ロボット用オープンソース・ミドルウエアには、ROS(Robot Operating System)の他にいろいろなものが提案されています。

日本では、産業技術総合研究所が主体となって開発したOpenRTM、日本のロボットメーカを中心とする協議会にて策定してきたORiN(Open Robot/Resource interface for the Network)、「未踏プロジェクト」から開発がスターしたV-Sidoなどがあります。

海外では、C++で書かれたリアルタイム・ソフトウェア・コンポーネントを構築するためのツールを提供する欧州のOrocos(Open Robot Control Software)、IIT (Istituto Italiano di Tecnologia:イタリア工科大学)で開発された人間型ロボットiCubのためのソフトウエアプラットフォームのYARP(Yet Another Robot Platform)、フランスGostai社の開発したGostai RTCなどがあります。
これらの他にも、マイクロソフトのWindowsベースのMSRDS(Microsoft Robotics Studio)、JAVAベースの分散オブジェクト技術HORBを利用して構築されたORCA(Open Robot Controller architecture)、韓国のKUST(韓国科学技術研究院)などが開発しているOPRoS(Open Platform for Robotic Services)などがあります。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です