ROS 2とは何か?――ロボット開発のデファクト・ミドルウェアの仕組みから、DDS・ノード・トピックの基礎とROS 1との違いまで徹底解説
はじめに
「ROS 2」という言葉はよく聞くのに、「OSなのかフレームワークなのか、いまひとつ違いが分からない」と感じていませんか。正式名称はRobot Operating System 2ですが、実際はOSではなく、ロボットアプリケーション開発を支えるミドルウェア+ツール+ライブラリの集まりです。もともとROSは大学などの研究用途を中心に発展し、研究分野で広く採用されてきました。リアルタイム性やセキュリティを強化して再設計されたROS 2の登場により、その舞台は研究から産業・商用へと広がっています。ファナックの公式解説記事でも「産業用途ではROS 2採用が急速に進む」と紹介されており、採用事例が産業へ広がっています。本記事では、ROS 2の正しい定義から、ノード・トピックといった中核概念、通信基盤DDS、ROS 1との違い、開発ツール、産業での活用事例、そして実際の始め方までを順に解説します。
ROS 2とは何か――OSではなく「ミドルウェア+ツール+ライブラリ」
「ROS(Robot Operating System)」という名前から、ロボット用のOSだと誤解されがちです。しかしROS 2は、公式の定義どおり「ロボットアプリケーション構築を支援するソフトウェアライブラリとツールのセット」であり、LinuxなどのOSの上で動作するミドルウェアです。
ros.orgはROSのエコシステムを「Plumbing(通信の配管)+Tools+Capabilities+Community」という式で説明します。Plumbingは、カメラ・センサー・モーターといった部品をパブリッシュ・サブスクライブ方式でつなぐ通信の土台です。Toolsは、可視化・デバッグなど開発を支える道具群です。そしてCapabilitiesは、ゼロから開発すれば数ヶ月〜数年かかる機能を標準で提供するライブラリ群で、自律移動のNav2、動作計画のMoveIt 2、ハードウェア抽象化とリアルタイム制御を担うros2_controlが代表例です。
では、なぜROS 2が使われるのでしょうか。第一に、通信などの共通基盤を自作せずに済み、開発工数を削減できること。第二に、機能を部品単位に分割でき、分業しやすいこと。第三に、オープンソースであるため特定メーカーへのロックインを避けられ、拡張性も高いことです。研究分野で広く採用されてきたこの仕組みは、いま産業・商用ロボットの開発基盤としても採用事例が広がっています。
中核概念:ノード・トピック・サービス・アクション・パラメータ
ROS 2アプリケーションは、単一目的を持つプロセス単位「ノード」を組み合わせて構成します。機能を分割することで再利用性・分業性が高まり、実装にはC++用のrclcpp、Python用のrclpyを使います。
ノード間通信の基本がトピックです。パブリッシュ・サブスクライブ方式により、送受信側はトピック名とメッセージ型だけで疎結合につながり、非同期・多対多でデータを配信できます。カメラ→認識→制御のような継続的なセンサデータの流れに適します。
graph LR
A[カメラノード] -->|画像| B[認識ノード]
B -->|結果| C[制御ノード]
状態取得や設定適用のような、短時間で完了する処理には、要求・応答型の通信であるサービス(.srv)が向いています。なお、クライアント側が応答をどう待つか(同期的・非同期的)はAPI・実装によるため、「同期RPC」と単純に断定はできません。ナビゲーションや軌道実行など、進捗確認や中断(キャンセル)が必要な長時間タスクにはアクションが適し、ゴール/フィードバック/結果の3要素(.action)で構成します。これらのデータ構造は.msg/.srv/.actionで定義し、ビルド時に各言語向けコードを生成します。また、各ノードは実行時に取得・変更できるパラメータを持ち、チューニングや構成管理に役立ちます。
| 項目 | トピック | サービス | アクション |
|---|---|---|---|
| 通信モデル | 非同期・多対多pub/sub | 要求・応答型 | ゴール/フィードバック/結果 |
| 主な用途 | センサデータ配信 | 状態取得・設定適用 | ナビ・軌道実行 |
| 中断 | 不可 | 不可 | 可能 |
通信基盤DDSとQoS――分散発見とリアルタイム性
ROS 2の通信の中核を担うのがDDS(Data Distribution Service)です。OMG標準の分散データ配信ミドルウェアで、最大の特徴は中央Master不要の分散自動発見です。ノード同士がピアツーピアでトピックを自動発見します。ROS 1では中央サーバのroscoreが停止するとシステム全体へ影響が及びやすい構成でしたが、ROS 2は中央Master不在のため単一障害点がなく、設計次第でネットワークの一部に障害が起きても残りのシステムの継続動作を見込めます。
通信品質はQoSポリシーでトピック単位に調整します。reliability(RELIABLE=再送保証/BEST_EFFORT=低遅延優先)やdurability(TRANSIENT_LOCAL=後から参加した購読者へ過去データを配信)、history/depthなどを選び、信頼性と低遅延のトレードオフを用途に応じて設定します。
リアルタイム性については、ファナックの公式解説記事でも「ミリ秒単位の制御」に言及されていますが、ROS 2はリアルタイム対応の前提となる設計を可能にするもので、適切なOS設定・実装・検証と合わせて初めて実現します。ROS 2を導入するだけで制御周期が保証されるわけではない点は押さえておきましょう。
セキュリティはDDS Securityに基づくSROS 2が認証・暗号化・アクセス制御を担います。DDS実装はrmw抽象化レイヤ経由で差し替え可能で、Fast DDS、Cyclone DDS、RTI Connextから選択できます。さらにmicro-ROSにより、ZephyrやFreeRTOS等のRTOS上のマイコンとも相互運用できます。
ROS 1との違い――比較表で読む進化点
ROS 2はROS 1の単なるバージョンアップではなく、産業・商用利用のニーズ(リアルタイム性・セキュリティ・マルチプラットフォーム)に応えるためにゼロから再設計された後継です。両者の進化点を、代表的な項目で比較表にまとめました。
| 項目 | ROS 1 | ROS 2 |
|---|---|---|
| 主な用途 | 研究・プロトタイプ開発 | 研究に加え、製品化・産業用途まで |
| 通信方式 | TCPROS/UDPROS(独自規格) | DDS(データ配信サービスの国際標準規格) |
| 中央サーバ | roscore必須(停止時はシステム全体へ影響が及びやすい) | 不要(DDSの分散自動発見) |
| 対応OS | Linux(Ubuntu)中心 | Linux / Windows / macOS+RTOS(micro-ROS) |
| リアルタイム性 | 前提となる仕組みなし | 条件付きで対応可能 ※ |
| セキュリティ | 限定的 | SROS 2による認証・暗号化 |
| ビルド・起動 | catkin/roslaunch | colcon/ros2 launch |
※リアルタイム対応は、適切なOS設定・実装・検証と合わせて初めて実現するものであり、ROS 2の導入自体が制御周期を保証するわけではありません。
特筆すべきは通信アーキテクチャの転換です。ROS 1では中央サーバのroscoreが名前解決と接続の仲介を担っており、これが停止するとシステム全体へ影響が及びやすい構成でした。ROS 2ではDDSがピアツーピアでノードを自動発見するため中央サーバが不要になり、設計次第で一部に障害が起きてもシステム全体への影響を抑えた継続動作を見込めます。独自規格だった通信はDDSという国際標準に置き換わり、Fast DDSやCyclone DDSなど実装の差し替えも可能です。ツールチェーンも刷新され、ビルドはcatkinからcolconへ、起動はroslaunchからros2 launchへ移行しました。
なお、ROS 1の最終バージョンNoetic Ninjemysは、一般に公表されている情報では2025年5月にサポート終了(EOL)を迎えています。そのため、これからロボット開発を学ぶならROS 2を優先するのが妥当です。
開発ツール――RViz・Gazebo・rqt・rosbag・colcon
ROS 2の強みは、通信の仕組みだけでなく、開発を支えるツール群が一体でそろっている点です。
可視化を担うのがRVizで、ロボットが捉えたセンサ情報や地図を3D空間上にリアルタイムに表示し、「ロボットが今何を見ているか」を確認できます。動作検証には物理演算ベースの3DシミュレータGazeboが使えます。実機がなくてもテストでき、ハードウェアの完成前から開発を進められるのが大きな利点です。システム全体の構造把握には、ノード同士のつながりを図示するrqt_graphなど、rqtのGUIツール群が便利です。
rosbag2(ros2 bagコマンド)はトピックデータを記録・再生するツールで、現場で発生した不具合をラボで再現・解析する際に不可欠です。ビルドはROS 2の標準ツールcolconで行い、複数ノードの一括起動はros2 launch、個々のトピックやノードの確認にはros2 CLIを使います。
さらに、自律移動を実現するNav2、マニピュレーションの動作計画を担うMoveIt 2、ハードウェア抽象化を提供するros2_controlといった機能群を組み合わせれば、高度なロボットアプリケーションをゼロから書かずに構築できます。
産業での使われ方――FANUC対応・ROS-Industrial・自律走行・ドローン
ROS 2は、研究現場にとどまらず産業分野への裾野を広げています。
FANUCのROS 2対応
産業用ロボット大手のファナックは、ROS 2ドライバのソースコードをGitHubで公開しています。ファナックの公式解説記事(2026年2月公開)では、このドライバが「業界最高水準の1ms超高速制御」を実現し、緻密なAI制御の実装を可能にするとして紹介されています。対応機種は協働ロボットCRXシリーズを含む可搬質量3kg〜2300kgの幅広いラインアップに及ぶと紹介されており、同社は「フィジカルAI」実現に向けてオープンプラットフォーム対応を強化し、AI開発者との共創を推進しています。なお、1msが通信周期・制御周期のどちらを指すかを含め、通信・制御周期の詳細条件や対応機種・サポート内容は、同社のROS 2ドライバ資料(GitHub)で確認できます。
ROS-Industrial
産業用ロボットとROSをつなぐ国際的なオープンソースプロジェクトがROS-Industrialです。産業分野でのROS利用を推進しています。
自律走行とドローン
自動運転では、オープンソースの自律運転プラットフォームAutowareがROS 2ベースで開発されています。ドローンでは、フライトコントローラPX4とROS 2を接続するエコシステムが整備され、研究開発で広く利用されています。
なぜ産業はROS 2を採用するのか
鍵は、適切な設計・検証と合わせて実現できるリアルタイム対応、SROS 2によるセキュリティ、メーカーに依存しないオープンな標準、そして活発なコミュニティです。オープンソースの柔軟性とメーカーの信頼性の両立こそ、ROS 2が産業の現場で選ばれる理由といえるでしょう。
始め方――Ubuntuでのインストールからパブサブまで
導入から最初のパブサブまでを5ステップで紹介します。
Step 1: 環境を選ぶ
一般的に公表されている情報では、Ubuntu 24.04と対応するLTS版Jazzy Jalisco(EOL 2029年5月と公告)の組み合わせが案内されています。DockerやRaspberry Piでも動作します。サポート期間や対応OSは更新されるため、公式のサポート期間・対応OS表で最新情報を確認してください。
Step 2: aptでインストールする
リポジトリ追加後、次のコマンドでインストールします。
sudo apt install ros-jazzy-desktop
source /opt/ros/jazzy/setup.bash
sourceコマンドを.bashrcに追記しておけば、毎回の手入力は不要です。
Step 3: 動作確認はパブサブで
ターミナルを2つ開き、それぞれ実行します。
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener
talkerのメッセージをlistenerが受け取れば成功です。中央サーバなしで自動接続されます。
Step 4: Pythonで最初のノードを作る
最初のノードはPythonのrclpyで書けます。PublisherとSubscriberを数行ずつ実装し、colcon buildでビルドしましょう。
Step 5: 公式チュートリアルへ進む
Service・Action、RVizやGazeboでの可視化・シミュレーションへ進みましょう。
よくある質問(FAQ)
Q: ROS 2はOSですか? いいえ。ロボットアプリ構築を支援するライブラリとツール群で、LinuxなどのOS上で動くミドルウェアです。
Q: これから学ぶならROS 1とROS 2どっち? 新規学習ではROS 2を優先するのが妥当です。ROS 1最終版Noeticは2025年5月にEOLを迎えたと公表されており、新規開発はROS 2が前提です。
Q: ROS 2は無料ですか?ライセンスは? オープンソースとして無償公開されています。誰でもダウンロードして利用できます。
Q: WindowsやmacOSでも動きますか? 動作しますが、標準的なのはLinux(Ubuntu)です。マイコン向けはmicro-ROSで連携できます。
Q: プログラミング言語は何を使いますか? C++はrclcpp、Pythonはrclpyが標準ライブラリです。入門はPythonからが定石です。
Q: ロボットを持っていなくても学べますか? 学べます。シミュレータGazeboとRVizを使えば、実機なしで開発・動作確認が可能です。
Q: DDSとは何の略ですか? Data Distribution Serviceの略です。OMG標準の分散データ配信ミドルウェアで、ROS 2通信の中核です。
Q: 産業用ロボットでも使われていますか? はい。ファナックがROS 2ドライバをGitHubで公開し、公式解説記事では1ms超高速制御に対応すると紹介されています。ROS-IndustrialやAutowareでも採用事例があります。
まとめ
本記事では、ROS 2の正体から通信基盤DDS、産業での活用までを解説しました。ROS 2はOSではなく、ロボットアプリケーション構築を支援するミドルウェア+ツール+ライブラリの集合体です。通信基盤にDDSを採用したことで、中央サーバに依存しない分散通信を実現し、適切な設計・検証と合わせたリアルタイム対応、セキュリティ、マルチプラットフォーム対応を備えました。FANUCがROS 2ドライバを公開するなど、ROS 2は研究分野から産業分野へと採用事例が広がっています。これから学ぶ方は、UbuntuにJazzyをインストールし、talker/listenerでパブサブを体験し、公式チュートリアルへ進むのがおすすめです。通信・ツール・機能・コミュニティのエコシステムを味方につけることが、ロボット開発成功の鍵です。
参考文献
- ROS公式サイト: https://www.ros.org/
- FANUC「ROS 2 (ROS)とは?」: https://www.fanuc.co.jp/ja/product/robot/academia/5min-basics/what-is-ros.html
- ROS 2ドキュメント: https://docs.ros.org/
- ROS-Industrial: https://rosindustrial.org/
- micro-ROS: https://micro.ros.org/
- Autoware: https://www.autoware.org/
関連記事
- ROS 2が切り拓くロボティクス開発の新時代:Kilted Kaiju・Zenoh・GPU加速で変わるロボットソフトウェアの地図
- なぜ中国のロボットは人類より速く走れるのか——北京ハーフマラソン「閃電」50分26秒が意味するフィジカルAI戦国時代
※技術仕様・サポート期間の詳細は、ROS 2公式ドキュメント(Concepts / QoS / Security / Distributions / Installation)で最新情報を確認してください。