プラットフォームハブ

ROS 2とOpen Robotics

大半のロボットメーカーがドライバを提供している、オープンなミドルウェア・シミュレータ・計画スタックです。無料で、コアはApache-2.0です。LTSリリースは5年の固定サイクルで提供されます。

組織Open Source Robotics Foundation, Inc.(カリフォルニア州の非営利法人、Open Roboticsの名称で活動)。プロジェクトはOpen Source Robotics Allianceを通じて運営
ウェブサイトwww.openrobotics.org/
ライセンスROS 2のコアパッケージとGazeboはApache-2.0、MoveIt 2はBSD-3-Clause、Nav2はパッケージによりApache-2.0・BSD-3-Clause・LGPL-2.1-or-laterが混在
価格ダウンロード・利用とも無料。本稿執筆時点で、Open Roboticsによる有料プランはない
更新2026年11月14日

製品と提供内容 #

名称種類位置づけ
ROS 2
現行のLTSリリースはJazzy Jalisco(2029年5月まで)とLyrical Luth(2031年5月まで)
フレームワークDDSまたはZenoh上で動作するミドルウェア、ビルドツール、クライアントライブラリ(rclcpp、rclpy)
Gazebo
Jetty(LTS、2031年5月まで)はLyricalと、Harmonic(LTS、2029年5月まで)はJazzyと組み合わせる
シミュレータセンサモデルとROS 2ブリッジを備えた剛体シミュレータ
Nav2ライブラリ移動ロボット向けのナビゲーションスタック(自己位置推定、コストマップ、プランナ、コントローラ、ビヘイビアツリー)
MoveIt 2ライブラリアーム向けの動作計画・運動学・衝突判定。デフォルトのプランナはOMPL
ros2_controlフレームワーク大半のアームドライバが組み込まれるハードウェア抽象化層とコントローラマネージャ
Open-RMFフレームワーク複数種のロボットが混在するフリートと施設を統合するための仕組み

どんな組織か

このハブは、ロボットのソフトウェア基盤を選ぶ人と、ロボティクス・フィールドガイドの他のページで紹介しているメーカーのハードウェアを統合する人に向けたものです。2022年の発表によれば、Open Source Robotics Foundationは2012年にROSを管理する非営利団体として設立されました。2022年12月、Intrinsicが同財団の営利子会社の資産を買収しました。ROS、Gazebo、Open-RMFは非営利の財団に残りました。2024年3月、財団はOpen Source Robotics Alliance(OSRA)を設立しました。OSRAは財団の慈善プログラムで、これら3つのプロジェクトの技術ガバナンスを担っています。

ROS 2は、当サイトで扱うほぼすべての要素の土台にあります。ROS 2はオペレーティングシステムではありません。ライブラリ群、ビルドシステム(colconとament)、メッセージ形式、パブリッシュ・サブスクライブ層の集合です。このモデルの詳細はROSとミドルウェアのトピックで解説しています。

ツールとAPI

インストールするのはバージョンではなくディストリビューションです。ROS 2 Jazzy Jalisco(LTS、2024年5月)は2029年5月までサポートされます。REP 2000では、amd64とarm64のUbuntu 24.04、およびWindows 10がTier 1プラットフォームです。ROS 2 Lyrical Luth(LTS、2026年5月22日リリース)は2031年5月までサポートされます。LyricalのTier 1プラットフォームはUbuntu 26.04(amd64とarm64)とWindows 11で、RHEL 10はTier 2です。LyricalではUbuntu 24.04、Debian 13、macOSはTier 3で、ソースからのビルドが必要です。サポートプラットフォームのページによれば、LyricalにはC++20とPython 3.12から3.14が必要です。LTSではないKilted Kaiju(2025年5月)は2026年末に、Humble Hawksbill(LTS、2022年5月)は2027年5月にサポート終了を迎えます。

Lyricalのデフォルトのミドルウェアは eProsima Fast DDS(rmw_fastrtps_cpp)です。Cyclone DDS、RTI Connext、Zenoh(rmw_zenoh_cpp)もTier 1です。切り替えには環境変数RMW_IMPLEMENTATIONを使います。システム内のすべてのノードは、互換性のある実装をそろえる必要があります。用語は用語集のDDSとQoSの項目で解説しています。

コアの上に、必要な部品を追加します。Gazeboのリリース表によれば、Gazebo JettyはLyricalと、Gazebo HarmonicはJazzyと組み合わせます。Nav2は移動ロボットのナビゲーションを、MoveIt 2はアームの動作計画を担います。ros2_controlは、ベンダーのドライバが実装するインタフェースです。ros2_controlのハードウェアインタフェースを公開するドライバは、標準のジョイントトラジェクトリコントローラやMoveIt 2と、つなぎのコードなしで連携できます。コマンドの一覧はROS 2 CLIチートシートにあります。Hello ROS 2のレッスンはゼロから始めます。

すべて無料です。商用サポートはOpen Roboticsではなく、インテグレータや個々のパッケージを保守する企業が提供しています。

難点もあります。バイナリはディストリビューションごと、Ubuntuのリリースごとにビルドされます。そのため、OSをアップグレードするとROSのアップグレードも必要になります。DDSのディスカバリはマルチキャストに依存しますが、管理されたネットワークやWi-Fiではマルチキャストがブロックされることがよくあります。ソースからビルドしたワークスペースと、同期日の異なるaptパッケージを混在させると、ABIエラーが起きやすくなります。

移行メモ

  • 単位と座標系。 ROSはREP 103に従い、SI単位と右手系の座標系(x前方、y左、z上)を使います。移動ロボットはREP 105に従い、map、odom、base_linkを使います。ドローンのスタックは代わりにNEDとFRDを使います(ドローンのハブを参照)。カメラの光学座標系ではz軸が前方を向きます。
  • 四元数。 geometry_msgs/Quaternionは(x, y, z, w)の順で格納します。MuJoCo、Spot SDK、spatialmathはwを先頭に置きます。境界で並べ替えてください。回転表現のチートシートも参照してください。
  • ロボット記述。 ROSはURDFを使い、通常はxacroから生成します。GazeboはSDFを推奨し、読み込み時にURDFを変換します。MuJoCoはMJCFを、Isaac SimはUSDを使います。違いはURDFとMJCFのチートシートで解説しています。
  • JazzyからLyricalへ。 Ubuntu 26.04とC++20への移行が必要になると考えてください。切り替える前に、依存しているベンダードライバのそれぞれにLyrical用のブランチがあることを確認してください。

注意点

  • サポート期間は固定。 LTSディストリビューションのサポート期間は5年間です。LTSではないKiltedは、2025年5月から2026年末までです。Humbleをまだ使っている場合は、2027年5月に終了するため、今のうちに移行を計画してください。
  • ライセンスはパッケージごとに異なる。 スタックの大半はApache-2.0またはBSDです。ただしNav2のライセンスファイルによれば、一部のNav2パッケージはLGPL-2.1-or-laterです。クローズドな製品を出荷する前に、各package.xmlを確認してください。
  • ベンダードライバは遅れる。 新しいディストリビューションが使えるのは、アーム、カメラ、LiDARのドライバが追いついてからです。一度に1つのディストリビューションしかサポートしないメーカーもあります。
  • 安全機能は別の場所に置く。 ROS 2は安全関連ではないソフトウェアとして扱ってください。安全と規格のトピックで説明しているとおり、安全機能はロボットコントローラか認証済みの安全PLCに実装します。