Robot Operating System とは

ロボットオペレーティングシステム(ROS)は、ロボットミドルウェア(すなわち、ロボットソフトウェア開発のためのソフトウェアフレームワークの集合体)である。 ROSはオペレーティングシステムではありませんが、ハードウェア抽象化、低レベルデバイス制御、一般的な機能の実装、プロセス間のメッセージ転送、パッケージ管理など、異機種コンピュータクラスタ用に設計されたサービスを提供します。 ROSベースのプロセスの実行セットは、センサ、制御、状態、計画、アクチュエータおよびその他のメッセージを受信し、ポストし、多重化する可能性のあるノードで処理が行われるグラフアーキテクチャで表されます。 ROSとリアルタイム制御コードを統合することは可能ですが、ロボット制御の反応性とレイテンシの重要性にもかかわらず、ROS自体はリアルタイムOS(RTOS)ではありません。リアルタイムシステムのサポートの欠如は、ROS 2.0の作成で対処されています。
ROSエコシステムのソフトウェアは、3つのグループに分けることができます。
 ROSベースのソフトウェアの構築と配布に使用される言語とプラットフォームに依存しないツール。 roscpp、rospy、roslispなどのROSクライアントライブラリ実装。 1つ以上のROSクライアントライブラリを使用するアプリケーション関連のコードを含むパッケージ。
言語に依存しないツールと主要なクライアントライブラリ(C ++、Python、およびLisp)は、BSDライセンスの条項の下で公開されており、オープンソースソフトウェアであり、商用および研究用の両方で無料です。その他のパッケージの大半は、さまざまなオープンソースライセンスの下でライセンスされています。これらの他のパッケージは、ハードウェアドライバ、ロボットモデル、データ型、計画、認識、同時ローカライゼーションとマッピング、シミュレーションツール、およびその他のアルゴリズムなど、一般的に使用される機能とアプリケーションを実装します。
主なROSクライアントライブラリ(C ++、Python、およびLisp)は、主としてオープンソースソフトウェアの依存関係の大規模な集合に依存しているため、Unixライクなシステムに対応しています。これらのクライアントライブラリの場合、Ubuntu Linuxは「サポート対象」として、Fedora Linux、macOS、Microsoft Windowsなどの他の種類は「実験的」と指定され、コミュニティによってサポートされています。ただし、ネイティブJava ROSクライアントライブラリrosjavaはこれらの制限を共有しておらず、ROSベースのソフトウェアをAndroid OS用に作成することができました。 rosjavaは、Linux、macOS、およびMicrosoft Windowsで使用できる正式にサポートされているMATLABツールボックスにROSを統合することも可能にしました。 JavaScriptクライアントライブラリroslibjsも開発されており、標準に準拠したWebブラウザ経由でソフトウェアをROSシステムに統合することができます。