Robot Operating System
ROSの起源は、アメリカのスタンフォード大学の学生で人工知能研究所の Stanford AI Robot (STAIR) プロジェクトに参加していたモーガン・クィグリー (Morgan Quigley) が開発した「Switchyard」システムである。Switchyardは、ロボット用ソフトウェアを開発するためのフレームワークであり、認識・計画・制御といった知能情報処理をロボット内外で分散処理できるよう並列計算を前提とし、各計算プロセスはピア・ツー・ピアネットワークで非同期通信を行う設計であった。複数の研究者による利用を前提としたモジュール性有し、新しいハードウェアへの適用を考えて、ロボットのハードウェアに依存する部分としない部分を明確に分けた設計がされた。また、Switchyardではソースコードの審美性も重要視されたほか、デプロイシステムを導入するなど、のちに繋がるアイディアが含まれていた。
ROSを使うためには、ソフトウェアを開発したりロボットを制御したりするコンピュータにROSをインストールする。
ROSが動作するOSはUbuntuやLinux MintなどのLinux系OSが中心で、macOS、Windows、Androidでも一部の機能が対応している。主要なOSについては、ROS Wiki でROSのインストール方法が説明されている。特にUbuntuは、パッケージ管理システムに対応したインストールが可能で、ROS開発チームによるテストが行われることもあり、多く利用されているOSである。
Windows向けには、マイクロソフト社が「ROS1 for Windows」を開発し試験リリースした。ROSのインストールやノードの実行が可能であれば、様々なOS上で、異なる言語で実装されたノードを組み合わせてシステムを構築することができる。各ディストリビューションが対応しているプラットフォームは、ROSの公式サイト等で確認できる。
ROSのアプリケーションプログラムは「パッケージ」と呼ばれる基本単位で管理される。パッケージは、ROSソフトウェアの基本単位であり、最小実行単位である「ノード」(#計算グラフ上の仕組み参照)を1つ以上持つか、他のパッケージのノードを実行するための設定ファイルを含む。各パッケージにはパッケージ情報の管理ファイル、ビルドで用いる設定ファイル、ノードのソースコード、ノード間通信のための設定ファイルなどが含まれる。共通の目的のもと複数のパッケージをグループ化した「メタパッケージ」と呼ばれるものもある。
ROSのパッケージは公式なものだけでも2,000以上ある。ロボット本体の制御に関するパッケージ、センサに関するパッケージ、駆動部のためのモータ制御に関するパッケージなどがある。センサパッケージはカメラ、深度カメラ、レーザ距離センサ、力/トルクセンサ、音声認識、RFIDなど様々なデバイスに対応したものが公開されている。