Ubuntu 22.04以降、または2025年6月以降、公式はROS1のアップグレードサポートを基本終了し、ROS2システムの使用を推奨しています。ROS 2はアーキテクチャ、リアルタイム性、セキュリティ、エコシステムの拡張性においてROS 1より大幅に優れています。新規プロジェクト開発の場合はROS2を直接使用することを推奨しますが、移行が必要な場合は既存リソースと長期的な利益を比較検討してください。詳細なUbuntuバージョンのサポート関係はリンクを参照してください。 ROSとUbuntuの異なるバージョン間の関係、以下に2つのフレームワークの比較分析を示します。
| ROS 2バージョン | Ubuntuバージョン | LTSかどうか | リリース時期 |
| Jazzy | 24.04 (Noble) | はい(LTS) | 2024 |
| Kilted | 24.04 (Noble) | いいえ | 2025-05 |
歴史と開発
- ROS1:スタンフォード大学とウィロー・ガレージによって開発され、研究とプロトタイピングに重点を置いている。
- ROS22014年に開始。産業グレードのロボティクスを対象とし、DDSミドルウェアを採用してリアルタイム性、クロスプラットフォーム対応、セキュリティを向上。
結論: ROS1は研究・プロトタイピング用途に適しており、ROS2は産業用・商業用の導入に最適です。
2システムアーキテクチャ
| 寸法 | ROS1 | ROS2 |
| コアアーキテクチャ | 集中型アーキテクチャを採用し、Masterノード(ノードマネージャ)に依存してノードの登録と通信を実現。 | 分散アーキテクチャを採用し、ノード間で直接通信するためマスターが不要で、動的ディスカバリメカニズムに対応している。 |
| 通信モデル | TCP/UDPプロトコルに基づくカスタマイズ通信システム。遅延、パケットロス、暗号化不可などの問題があります。 | DDSに基づく標準化された通信プロトコルを採用し、リアルタイム性、暗号化、クロスプラットフォームの相互作用をサポート。 |
| 信頼性 | TCPに依存したピアツーピア通信のため、パケットロスが発生しやすい。 | QoSポリシー(例:Reliable)により信頼性の高い伝送を保証。 |
| コンパイルシステム | rosbuild(初期)およびcatkinコンパイルシステムを使用。 | 自動化されたコンパイルシステムを導入し、より柔軟な依存関係管理とマルチ言語ビルドをサポート。 |
33. ユーザーエクスペリエンス
| 寸法 | ROS1 | ROS2 |
| 学習曲線 | 豊富なコミュニティリソースと成熟したドキュメントにより、導入に適しています。 | 新機能により学習コストが増加します(例:DDS設定、リアルタイムデバッグ)が、長期的には保守性が向上します。 |
| 移行コスト | ROS 1プロジェクトをROS 2へ移行するには、通信ロジック、ノード管理、コンパイルシステムのリファクタリングが必要です。 | 移行ツール(例:ros1_bridge)を利用して、ROS 1とROS 2のノード間で相互運用が可能。 |
| デバッグとツールチェーン | roslaunchやrvizなどのツールに依存しており、デバッグプロセスはより従来的。 | 新しいlaunchフレームワーク(Python設定をサポート)、組み込みのログシステム、およびより優れたテストツールを導入。 |
| コミュニティとエコシステム | エコシステムは大規模だが、アーキテクチャの制限により拡張が難しい機能もある。 | 新機能の統合が容易になり(例:GazeboやWebテクノロジーとの統合が深まる)、エコシステムは拡大し続けている。 |
4.キーテクノロジーの比較
| 寸法 | ROS1 | ROS2 |
| ノード通信 | ピアツーピアのコミュニケーションはマスター登録によって確立される。 | ノードはDDSを介して自動的にお互いを発見し、直接通信する。 |
| メッセージング | カスタムメッセージタイプ(.msg)を使用し、roscpp/rospy実装に依存する。 | IDL (Interface Definition Language)に基づいて多言語メッセージを生成し、互換性を向上。 |
| フォールトトレランス(耐障害性) | Masterの障害により、システム全体がダウンする可能性がある。 | 単一障害点を回避する分散アーキテクチャを採用し、ノードは動的に参加・離脱できます。 |
5構文の違い
| 寸法 | ROS1 | ROS2 |
| ノード生成構文 | ros::NodeHandleを使用してノードを管理し、集中管理マネージャーを起動するためにroscoreに依存。 | rclcpp::Nodeまたはrclpy::Nodeを使用して、roscoreなしで直接ノードを作成できる。分散アーキテクチャをサポートする。 |
| 通信メカニズム | カスタマイズされたTCP/UDPプロトコルに基づく通信を実現し、ノードの登録とディスカバリーを手動で管理する必要があります。 | DDS(データ配信サービス)規格に基づき、各ノードは自動的に相互を検出し、通信を行います。. |
| メッセージ定義 | .msgファイルを使用してメッセージ型を定義し、roscpp/rospy実装に依存。 | IDL (Interface Definition Language)を使用して多言語メッセージを生成し、互換性を高める。 |
| ローンチファイル | XMLを使用して.launchファイルを作成。単一機能で、動的設定が困難。 | Pythonを使用して.launch.pyファイルを作成し、動的ロジック(条件分岐、パラメータ受け渡しなど)をサポート。 |
6実使用上の違い
| 寸法 | ROS1 | ROS2 |
| 多言語サポート | 主にC++とPythonをサポートしており、その他の言語は対応が必要である。 | 追加の言語(Rust、Javaなど)に対するサポートの拡充、およびインターフェース定義言語(IDL)による言語間の互換性の実現。. |
| コンパイルシステム | catkinコンパイルシステムに依存しており、ワークスペース構造を厳密に遵守する必要がある。 | amentビルドシステムを使用し、より柔軟な依存関係管理とマルチ言語ビルドを実現。 |
| リアルタイムサポート | リアルタイム性能が低く、産業用リアルタイム制御のニーズを満たすことが難しい。 | リアルタイムシステムのサポートを改善(例:ROS 2のrclcppはリアルタイムスレッドスケジューリングを提供)。 |
| セキュリティ | ネイティブの暗号化および認証メカニズムが欠如している。 | DDSセキュリティ拡張(DDS-Security)に対応し、認証、データ暗号化、アクセス制御を提供します。 |
| クロスプラットフォームサポート | 主にLinuxシステムで動作し、Windows/macOSのサポートは限定的。 | Linux、Windows、macOS、RTOSなどの複数のプラットフォームをサポートし、プラットフォームをTier 1(公式に積極サポート)とTier 2(コミュニティサポート)に明確に分類することで、クロスシステム互換性を強化している。 |
| デバッグツール | roslaunch や rviz などの従来ツールに依存しており、ロギングシステムは比較的基本的です。 | 組み込みのロギングシステム(例:RCLCPP_INFO)、Pythonスクリプトのサポート、およびより優れたテストツールを提供する。 |
| フォールトトレランス(耐障害性) | roscoreに障害が発生すると、システム全体がダウンする可能性がある。 | 単一障害点を回避する分散アーキテクチャを採用し、ノードは動的に参加・離脱できます。 |
7.典型的なアプリケーションシナリオ
- ROS 1:教育、研究プロジェクト(例:移動ロボットのナビゲーション、SLAM)、高いリアルタイム性能とセキュリティを必要としないシナリオ。プロジェクトが成熟しており、リアルタイム性、セキュリティ、クロスプラットフォーム機能を必要とせず、多数のROS 1エコロジーリソースに依存している場合は、ROS 1を使い続けること。
- ROS 2:産業オートメーション、自動運転、ドローンなど、高いリアルタイム性、セキュリティ、クロスプラットフォームサポートを必要とするシナリオ、および大規模プロジェクトの長期的なメンテナンス(例: 配送 ロボット、i産業用ロボット(医療ロボットなど)。産業グレードの安定性、リアルタイム制御、セキュアな暗号化、またはクロスプラットフォーム展開を必要とするプロジェクトでは、ROS 2が推奨されます。
8. ハードウェアとプラットフォームの互換性
- 主にLinux(Ubuntu)をサポートしている。
- RO ネイティブにLinux、Windows、macOS、および組み込みプラットフォームをサポートしている。
9. エコシステムとコミュニティ支援
- ROS1:豊富なパッケージと活発なコミュニティ。.
- ROS2:急速に成長しているエコシステムだが、パッケージ数はまだ追いついていない。
結論: ROS1は成熟したエコシステムを有しており、ROS2も急速に追いついています。
10. 移行とアップグレードのコスト
- APIに互換性がなく、コードの書き直しが必要。
- ドライバの適応が必要な場合がある。ros1_bridgeを使用すると段階的な移行に役立つ。
結論: 移行コストは高いが、段階的なアップグレードによってリスクを軽減できる。
11. セキュリティと工業規格
- ROS1:ネイティブのセキュリティメカニズムがない。
- ROS2DDSセキュリティ標準に準拠し、OPC UAおよびTSNと統合できる。
結論: ROS2は、セキュリティが重要視される産業用アプリケーションにより適している。
将来のトレンドとロードマップ
- ROS1Noeticが最終リリースであり、2025年までメンテナンスされる。
- ROS2 長期サポート(LTS)戦略に従い、活発な機能更新が行われる。
結論: トレンドは明らかにROS2に傾いている。
結論と推奨事項
について 研究者または初心者、ROS1は成熟した安定した選択肢であり続ける。 産業用ユーザーまたは商業チームROS2は分散システム、リアルタイム性能、セキュリティ面での利点により、長期的な価値を提供する。
実践的なアドバイス: プロジェクト計画の初期段階でROSのバージョンを評価し、エコシステムの成熟度とチームの能力に基づいて判断します。

