Robot Operating System
ROSのディストリビューションは、2番目の「Box Turtle」以降いずれも亀にちなんでおり、頭文字がアルファベット順になっている。ROSのディストリビューションには、それぞれ亀のアイコンが作成されている。また、ROSのロゴにある9個の点も亀の甲羅に由来している。ROSが亀を象徴としたのは、亀の上に乗った象が大地を支えているとする古代の宇宙観にちなんで、知能ロボットの世界においてROSが亀のような役割を果たすようにとの願いが込められている。
ROSディストリビューションのポスター
Melodic Morenia
Lunar Loggerhead
Kinetic Kame
Jade Turtle
Indigo Igloo
Hydro Medusa
Groovy Galapagos
Fuerte Turtle
Electric Emys
Diamondback
C Turtle
Box Turtle
ノード間の接続情報を管理するプログラムを「マスタ」と呼び、登録されたノードが他のノードから見えるようにする役割を担う。コアユーティリティに含まれるプログラム「roscore」を実行することでマスタが起動される。各ノードの起動時に、ノード名やURI、ポート番号といった通信に必要な情報がマスタに登録される。マスタはノードから要求があった際に相手先ノードの情報を返し、それを元にノードは相手先ノードとピア・ツー・ピア接続を確立する。ROSシステムを実行するためには、ROSネットワークを構築する何れかのホストでマスタを必ず1つ起動しておく必要がある。マスタは1つのROSネットワークを構築・管理し、同一のROSネットワーク内で複数のroscoreは起動できない。マスタが異なるネットワーク間でノード接続を行う場合は別途通信の仕組みを構築する必要がある。
ROSは、もともと以下の前提のもと設計された。
単一のロボットであること
ワークステーションクラスの計算資源が利用できること
リアルタイム処理は不要であること
十分高速で安定したネットワーク接続環境であること
学術分野を主とした研究用アプリケーションであること
規制や禁止事項がなく、最大限の柔軟性があること
これらは、2007年の開発開始時に設定されたものであり、その後のROSコミュニティの発展により、その利用範囲は製造・農業・商業分野に広がり、ROSを搭載したロボットが製品化されるようになった。利用分野の拡大によって、ROSに以下のような新たな要望が寄せられるようになった。
複数ロボットの同時制御
組み込みシステム用の小型コンピュータのサポート
リアルタイム制御への対応
貧弱なWi-fi環境などの不安定なネットワークへの対応
製品利用への対応
また、ROSでは配信-購読型のメッセージ通信基盤を独自開発していたが、その後の技術の発展により、Zeroconf、Protocol Buffers、Data Distribution Service (DDS) といったROSの要件に合ったオープンソースの通信ミドルウェア等が登場した。ROSの開発者らは、ROSの次世代化のあり方を検討した結果、既存のROSを問題なく利用しているユーザへの影響を抑えるため、既存のROSと切り離して次世代バージョン「ROS 2」を開発することとなった。
Robot Operating System (ROS) とは、ロボット用のソフトウェアプラットフォームである。ROSはその名に「Operating System」を含むが、Microsoft WindowsやiOSのようなコンピュータのオペレーティングシステム (OS) ではなく、既存のOS上で動くミドルウェアやソフトウェアフレームワークの一種であり、「メタオペレーティングシステム」 (meta-operating system) とも説明される。
ROSはロボットソフトウェアの共同開発を世界規模で推進することを目指している。スタンフォード大学の学生が開発した「Switchyard」プロジェクトを起源にもち、それを引き継いだアメリカのウィローガレージ社が2007年に本格開発を開始し、2010年に最初のリリース版が公開された。その後、非営利団体「オープンソースロボット財団」(現「オープンロボティクス」)が設立され、ROSの開発を主導する役割が引き継がれた。オープンソースソフトウェアとして開発・公開されており、世界中から多くの人々が開発に参加している。
ROSが動作するOSはUbuntuやLinux MintなどのLinuxが中心で、macOS、Windows、Androidでも一部の機能が対応している。
ソースコードから目的のコードを生成(ビルド)するため、ROSはビルドシステムを有する。初期のビルドシステムは「rosbuild」と呼ばれるものであったが、のちに「catkin」と名付けられた新システムが開発された。ディストリビューション「Groovy Galapagos」からcatkinへの切り替えが始まり、「Hydro Medusa」以降は全システムがcatkinに対応した。catkinはCMakeを修正・拡張したもので、パッケージのビルド、パッケージ管理、依存関係パッケージの自動インストールなどが行える。catkin はビルド結果をソースコードと異なるディレクトリに保存するアウトソースビルド方式を採用し、パッケージの再配布やクロスコンパイルをサポートしたことでソフトウェアの移植性が向上した。
「catkin」という名前は、開発したウィローガレージ社のウィロー(Willow = ヤナギ)の木にみられる尾状花序 (英: catkin) に由来する。