30代エンジニアの備忘録のカバー画像

30代エンジニアの備忘録

組み込み開発・信号処理・プログラミングの技術メモと短編小説

🤖 【ROS2入門①】ROS2とは?ロボット開発フレームワークの全体像

シリーズ この記事は「ROS2入門シリーズ」の一部です。 シリーズ目次を見る

組み込み・ロボット開発に初めて触れる方向けに、ROS 2(Robot Operating System 2)がミドルウェアとして担う役割を整理します。Windows/Linux 上のデスクトップ OS ではなく、ノード間通信やツール群を束ねる層だと捉えると後続記事に進みやすいです。

読了後はノード・トピック・サービス・アクションの関係を口頭で説明でき、ROS 2入門シリーズ目次 の②環境構築へ進める状態を目指します。ディストリビューションの EOL は作業前に Humble 公式ドキュメント で確認してください。


なぜ ROS2 が生まれたのか?ROS1 の限界と設計の違い

ROS1の限界

ROS 1(2007年〜)は研究用ロボット向けに設計され、多くの実績を持ちます。一方で製品利用やマルチプラットフォーム、セキュリティ面では限界も指摘されてきました。詳細は ROS 2 Concepts も参照してください。

課題 内容
リアルタイム性 タイミング保証が難しい
セキュリティ 通信の暗号化なし
マルチロボット 複数ロボットの連携が困難
組み込みサポート マイコンへの対応が弱い
Windowsサポート Linux専用
ROS2の登場(2017年〜)

これらの課題に向き合い、通信基盤を含めて設計し直したのが ROS 2 です(名前は「OS」ですが、デスクトップ OS の代替ではありません)。

[ ROS1 ]                        [ ROS2 ]
  研究・プロトタイプ向け      →  製品利用も視野に入れた設計目標
  Linux が主な舞台           →  Linux / Windows / macOS など
  中央集権型の通信が主流      →  DDS 等を介した分散型通信
  標準では暗号化が弱い        →  セキュリティ機構を載せやすい

ROS1 vs ROS2 比較図
ROS1 vs ROS2 比較図

ROS2 のディストリビューションとは?Humble の選び方

ROS 2 は約1年ごとに新バージョン(ディストリビューション)がリリースされます。リリース一覧 で EOL を確認してから選びましょう。

バージョン名 対応OS EOL 推奨度
Humble Hawksbill Ubuntu 22.04 2027年5月 ★★★ おすすめ
Iron Irwin Ubuntu 22.04 2024年11月(EOL 済み) 参考
Jazzy Jalisco Ubuntu 24.04 2029年5月 ★★★ 最新
ディストリビューションの選び方: Ubuntu 22.04 なら Humble が手順書・情報と相性が良いことが多いです。Ubuntu 24.04 なら Jazzy を検討します。EOL や推奨は時期で変わるので、作業前に ディストリビューション一覧 を確認してください。

ROS2 のアーキテクチャとは?DDS と主要コンポーネント

ROS2アーキテクチャ図
ROS2アーキテクチャ図

ROS 2 の通信基盤は DDS(Data Distribution Service)という標準規格です。同一 LAN 上のノードがお互いを見つける仕組みもここに含まれます。詳細は About middleware vendors を参照してください。

ROS2アーキテクチャ層図
ROS2アーキテクチャ層図
主要コンポーネント

ノード(Node)

最小実行単位。センサー読み取り、計算、モーター制御など、1つの役割を担うプログラムです。

トピック(Topic)

ノード間の非同期通信チャンネル。カメラ画像やセンサーデータをリアルタイムで流します。

サービス(Service)

リクエスト/レスポンス型の同期通信。「扉を開けて」→「開けました」のような一対一のやり取りです。

アクション(Action)

時間がかかる処理の非同期実行。「目標地点まで移動して(途中進捗も教えて)」のような長時間タスク向けです。


ROS2 で何ができる?産業・研究での活用例

産業・研究分野での活用例
  • 自動運転車: LiDARやカメラ処理、経路計画
  • 産業ロボット: 工場での搬送、組み立て作業
  • ドローン: 自律飛行、障害物回避
  • 医療ロボット: 手術支援、リハビリ支援
  • 家庭用ロボット: 掃除ロボット、配膳ロボット
有名なROS2対応ロボット
┌──────────────────────────────────────────┐
│ TurtleBot3         │ 学習・研究向けの小型ロボットの例     │
│ Spot (Boston Dyn.) │ 四足歩行ロボットの例               │
│ Universal Robots   │ 産業用アームの例                   │
│ Navigation2 (NAV2) │ 自律移動のソフトウェア・スタック     │
└──────────────────────────────────────────┘

ROS2 入門の学習手順は?シリーズ①〜⑪の進め方

このシリーズでは ROS 2入門目次 の順番で学習を進めます。

ROS2入門学習ロードマップ(①〜⑪)
ROS2入門学習ロードマップ(①〜⑪)

ROS2 入門①のまとめ

  • ROS 2 はロボット向けのミドルウェアとして、ノードと通信の型(トピック等)でシステムを組み立てる
  • ROS 1 の延長ではなく、設計目標が異なるため「置き換え」より別系統として学ぶと整理しやすい
  • 用語の骨格(ノード・トピック・サービス・アクション)を掴んだら、次は 環境構築で手を動かす

検証環境とつまずきやすい点

この記事は概念整理が中心で、特定ロボット実機での End-to-End 検証はしていません。バージョンや OS で前提が変わるので、作業前に 対応表 を確認してください。

  • シリーズの手順メモは Ubuntu 22.04 + ROS 2 Humble を土台にしている
  • TurtleBot3 の実機セットアップは 別シリーズで扱う(本稿は全体像の整理)