0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS2 勉強⓪(ROS2 概要)

0
Last updated at Posted at 2026-03-06

Geminiと壁打ちしながらの内容なので、もし間違いなどがあればコメントいただけると幸いです。

Introduction: ROS2とは何か? なぜ必要なのか?

ROS (Robot Operating System) の正体

「ROS」という名前にはOS(オペレーティングシステム)と付いていますが、WindowsやLinuxのようなOSそのものではありません。正しくは、OSの上で動く 「ロボット開発用フレームワーク(ミドルウェア)」 です。

複雑なロボットシステムを効率的に構築するための土台となり、以下の「開発を加速させる3本柱」を提供します。

  1. 通信基盤: センサーやモーター制御など、バラバラのプログラム同士を簡単かつ安全に連携させます
  2. ツール群: 3D空間でロボットの状態を確認できる「RViz」や、物理シミュレータ「Gazebo」、ロボットの構造を定義する標準フォーマット(URDF)など、強力な開発ツールが充実しています
  3. エコシステム: 自動運転やナビゲーション、画像認識など、世界中の最先端アルゴリズムがパッケージ化されており、誰でも無料で利用可能です

なぜ今「ROS2」なのか?(ROS1の限界)

前身である「ROS1」は研究・学術用途で大成功を収めましたが、実際のビジネスや製品に組み込む(商用化・実用化)にあたり、以下の大きな壁がありました。

  • 単一障害点 (SPOF): roscore と呼ばれる通信の親分がダウンすると、システム全体が通信不能になり停止してしまう
  • リアルタイム性の欠如: 通信の遅延時間が保証されず、精密なミリ秒単位の制御が困難
  • ネットワークの制約: 単一の安定したWi-Fi環境などを前提としており、通信が途切れる環境に弱い
  • セキュリティの不在: 通信の暗号化やアクセス制御機能が標準で存在せず、悪意のあるハッキングに対して無防備

ROS2の3つの大きな進化

ROS1の課題を克服するため、ROS2は根本から再設計されました。

  1. 完全な分散型通信: マスター(roscore)が廃止され、各プログラム(ノード)が自律的に通信相手を発見する仕組みになりました。一部がクラッシュしても全体は動き続ける堅牢なシステムです
  2. 高信頼・リアルタイム (DDS採用): 金融システムや航空宇宙産業でも実績のある国際通信規格「DDS (Data Distribution Service)」を標準採用。データの到達保証や遅延のコントロールが可能になりました
  3. 商用利用への対応: LinuxだけでなくWindowsやmacOS、さらには組み込みOSにも対応。「SROS2」により通信の暗号化や認証機能も標準装備され、安全に製品化できます

Core Concepts: ROS2の基本概念と構成要素

ROS2を用いた開発では、システム全体を以下の要素に分割して考えます。

  • ノード (Node)

    • カメラ画像の取得、モーターへの速度指示など、単一の明確な機能を持つ最小の実行プログラム単位です
    • ひとつの巨大なプログラムを作るのではなく、小さなノードを組み合わせて1つのロボットを作ります
  • パッケージ (Package)

    • 関連する複数のノードや、設定ファイル、依存関係の情報をまとめたソフトウェアの配布・保存単位です
    • 例えば、カメラを使うための image_transport パッケージや、LiDARを扱う sensor_msgs パッケージなど、コミュニティが公開する膨大なパッケージを apt install や colcon build で取り込んで使います
    • 自分のプログラムも「パッケージ」として作ります
  • グラフ (Graph)

    • システム内で稼働しているすべてのノードが、後述する通信モデルを通じて相互接続し合う**ネットワーク全体の構造(関係図)**を指します
    • 例えば、ロボット開発者が rqt_graph というツールを使うと、「どのノードが、どのトピックを通じて、どのノードと繋がっているか」を視覚的に確認でき、この全体像をグラフと呼びます
  • ワークスペース (Workspace)colcon

    • 作成したパッケージや、外部から持ってきたパッケージをひとまとめにして管理・ビルド(コンパイル)するための作業フォルダになります
    • ROS2では主に「colcon」というビルドツールを使って、ワークスペース内のプログラムを一括でビルドします
  • パラメータ (Parameter)

    • 各ノードの挙動を、プログラムを書き換えることなく外部から調整するための「設定値」です
    • 例えば、SLAM(自己位置推定と環境地図作成)を実行する際のセンサーの閾値や、カメラの解像度などを柔軟に変更する際に活躍します
  • ローンチ (Launch)

    • 実際のロボット開発では、センサー、自律移動(ナビゲーション)アルゴリズム、モーター制御など、数十個のノードが同時に動作しますが、これらを設定ファイル(パラメータ)を読み込みながら、必要なノード群をボタン一つ(1つのコマンド)で一斉に起動・管理する仕組みです

ROS2の3大通信モデル

ノード同士がデータをやり取り(通信)する方法は、用途に合わせて主に3種類用意されています。

通信モデル ① トピック (Topic)

【特徴】 1対多の非同期通信(データの垂れ流し)

  • 用途: センサーデータ(カメラ画像やレーザーの距離データ)など、連続したデータストリームの送信
  • イメージ: 「テレビやラジオの放送」
  • 構成要素:
    • パブリッシャー (Publisher / 送信者): 特定のトピック(例: /camera_image)宛に、データを一方的に送信し続けます。誰が受け取っているかは気にしません
    • サブスクライバー (Subscriber / 受信者): 興味のあるトピックを購読(受信)します。データが届いた瞬間に、決められた処理を実行します

通信モデル ② サービス (Service)

【特徴】 1対1の同期型通信(リクエストとレスポンス)

  • 用途: 設定の変更依頼や、計算の依頼など、確実な返答が必要な一時的な処理
  • イメージ: 「レストランでの注文」
  • 構成要素:
    • クライアント (Client / 依頼者): サーバーに処理の実行を依頼します。トピックと違い、結果(レスポンス)が返ってくるまで処理を一時待機(ブロック)します
      • ROS2では call_async() を使った非同期呼び出しも標準でサポートされており、公式チュートリアルでも推奨されています。ブロッキングになるかどうかは呼び出し方次第です。
    • サーバー (Server / 提供者): 依頼を受け取ると処理(例: 地図の保存)を実行し、その結果をクライアントに返します

通信モデル ③ アクション (Action)

【特徴】 完了までに時間がかかる非同期処理

  • 用途: 目標位置への移動指示や、ロボットアームのピッキング動作など
  • イメージ: 「タクシーの配車(目的地を伝え、経過を見守り、到着を知る)」
  • 構成要素:
    • アクションクライアント (Action Client / 依頼者): サーバーに目標(ゴール)を送信します。サービスと異なり、結果を待つ間も別の作業を進めることができ、途中でキャンセルすることも可能です
    • アクションサーバー (Action Server / 実行者): 目標を受け取って長時間の処理を開始します。処理中は定期的に進捗状況(フィードバック)をクライアントに報告し、最終的に処理が終わると結果(リザルト)を返します

補足:QoS (Quality of Service) による柔軟な通信制御

ROS2の通信(DDS)では、用途に合わせて通信の品質を細かくチューニングできます。
例えば、重要な指示は「確実に届ける(Reliable)」設定にし、LiDARなどの連続する大容量センサーデータは「多少取りこぼしても最新のデータを優先する(Best Effort)」設定にするといった使い分けが可能です。
これにより、ESP32などのマイコンを利用したmicro-ROS環境や、工場のWi-Fiなど通信帯域が不安定な環境でも、システムを破綻させずに運用できるようになっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?