ROS2とは
Robot Operating System 2 / ROS 2
ロボットアプリケーション開発向けのオープンソースミドルウェア/フレームワーク
ひとことで言うと
ロボットのソフトウェアを作るためのオープンソースの土台。センサーやモーターを制御するプログラム同士をつなぐ役割を持つ。
概要
ROS2(Robot Operating System 2)は、ロボットアプリケーションを開発するためのオープンソースミドルウェア/フレームワーク。 センサー入力・モーター制御・経路計画といった機能を担う個々のプログラム(ノード)を、パブリッシュ/サブスクライブ型のメッセージング、サービス(同期的なリクエスト/レスポンス)、アクション(非同期な長時間タスク)といった通信の仕組みで疎結合に連携させる。前身のROS(ROS1)がプロトタイピング・研究用途中心だったのに対し、ROS2は産業用途・商用製品での利用を念頭に、リアルタイム性、マルチロボット構成、セキュリティ、複数OSへの対応を強化して設計されている。
背景
ROS1は研究・プロトタイピング用途で広く普及した一方、単一マスターノード(roscore)への依存、リアルタイム制御の弱さ、マルチロボット構成のサポート不足、セキュリティ機構の欠如といった課題が、商用・産業用ロボットへの適用時に顕在化した。ROS2はこれらの課題を解決するため、通信層をDDS(Data Distribution Service)ベースの分散アーキテクチャに置き換えるなど、設計を刷新して開発された。
歴史
2014年ごろ、Open Source Robotics Foundation(OSRF、現Open Robotics)によりROS2の開発が発表された。2017年12月、最初の正式ディストリビューションであるArdent Apaloneがリリースされた。以降、Foxy Fitzroy(2020年、LTS)、Humble Hawksbill(2022年、LTS)、Jazzy Jalisco(2024年、LTS)など、動物名を冠したディストリビューションが定期的にリリースされている。
アーキテクチャ
通信層にDDS(Data Distribution Service)を採用し、単一障害点となるマスターノードを持たない分散型のパブリッシュ/サブスクライブ通信を実現する。個々の処理単位である「ノード」がトピック(非同期メッセージング)、サービス(同期リクエスト/レスポンス)、アクション(進捗フィードバック付きの非同期タスク)を介して通信する。通信品質はQoS(Quality of Service)設定でトピックごとに調整可能で、SROS2によるアクセス制御・暗号化などのセキュリティ機構も備える。
利点
- DDSベースの分散通信によりマスターノードへの単一障害点依存がなく、マルチロボット構成に対応しやすい
- QoS設定によりネットワーク環境や用途に応じた通信の信頼性・リアルタイム性を調整できる
- SROS2によるセキュリティ機構、Linux/Windows/macOSへの対応など商用・産業用途を意識した設計になっている
欠点
- DDSレイヤーの導入により概念・設定項目が増え、ROS1と比べ学習コストが高い
- DDS実装ベンダーによって挙動やパフォーマンス特性に差があり、選定・チューニングが必要になる場合がある
- ROS1向けに蓄積された既存パッケージ・ノウハウの一部は移植作業が必要になる
関連用語
参考文献
- Official WebsiteROS 2
- DocumentationROS 2 Documentation
- GitHubros2/ros2