ゆるふわフィジカルAI
パソコンで作業中のゆるロボ

ROS 2入門2026|Jazzy LTSで始めるロボット開発の第一歩

2026-08-03実践

#ROS2#ロボット開発#実践

ロボット開発の現場に入ると必ず出会うのが ROS 2(Robot Operating System 2)。名前に「OS」と付いていますが、WindowsやLinuxのようなOSではありません。ロボットの部品同士を会話させるための共通ルールです。

ROS 2はなにを解決するのか

ロボットは「カメラ」「モーター」「AI」など、作った人もプログラミング言語もバラバラな部品の集合体です。これらを直接つなごうとすると組み合わせが爆発します。

👀 センサー世界を感じる🧠 AIどう動くか決める💪 モーター実際に動く🌍 現実世界モノが動く・変化する世界を変える変化をまた感じる
図: フィジカルAIの基本ループ。感じて、考えて、動いて、また世界を感じる

← 図は横にスクロールできます →

ROS 2は間に立つ「郵便局」の役割をします。各部品は郵便局に投函するだけでよく、相手が誰かを知る必要がありません。この仕組みのおかげで、他人が作った部品をそのまま自分のロボットに組み込めます。

3つの用語だけ覚える

ノード(Node)ノード

仕事をする単位のプログラム。「カメラを読むノード」「モーターを回すノード」のように、1機能=1ノードで作るのが基本。

トピック(Topic)トピック

ノード同士がデータを流す「専用の水路」。カメラノードが /image トピックに映像を流し、AIノードがそれを受け取る、という形。

パブリッシュ / サブスクライブpublish / subscribe

データを流すのがパブリッシュ、受け取るのがサブスクライブ。YouTubeの投稿と登録の関係と同じです。

2026年、どのバージョンを選ぶ?

ROS 2は毎年5月23日に新バージョンが出ます。偶数年がLTS(長期サポート・5年)、奇数年が通常版(1.5年)です。

バージョン位置づけおすすめ度
Jazzy Jalisco2024年のLTS。2029年までサポート◎ 本番・学習の第一候補
Kilted Kaiju2025年の通常版。2026年末でサポート終了△ 短期の実験向け
最新LTS(2026年版)出たばかり。対応パッケージ待ちの段階○ 情報が揃ってから
🌱

初心者は Jazzy 一択

新しいものを選びたくなりますが、ROS 2は「動くサンプルと記事の多さ」が学習効率を決めます。周辺パッケージが揃っている Jazzy から始めるのが最短ルートです。

インストール(Ubuntu 24.04)

ROS 2はLinux(Ubuntu)が本命です。Macの人はDockerかUbuntuの仮想マシンを使いましょう。

# リポジトリを追加してインストール(公式手順の要点)
sudo apt update && sudo apt install -y curl gnupg lsb-release
sudo apt install ros-jazzy-desktop

# 使うたびに読み込む(.bashrcに書いておくと楽)
source /opt/ros/jazzy/setup.bash

動作確認: 会話するロボットの最小形

ターミナルを2つ開いて、片方で「話す人」、もう片方で「聞く人」を動かします。

# ターミナル1: 話す人
ros2 run demo_nodes_cpp talker

# ターミナル2: 聞く人
ros2 run demo_nodes_py listener

listener側に I heard: [Hello World: 1] と流れ続けたら成功です。これがROS 2の本質で、あとはこの「話す人」がカメラになり、「聞く人」がAIになるだけです。

最初のPythonノード

自分でパブリッシャーを書いてみましょう。

import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class HelloRobot(Node):
    def __init__(self):
        super().__init__("hello_robot")
        self.pub = self.create_publisher(String, "greeting", 10)
        self.create_timer(1.0, self.tick)  # 1秒ごとに実行

    def tick(self):
        msg = String()
        msg.data = "ゆるふわフィジカルAI 🤖"
        self.pub.publish(msg)
        self.get_logger().info(f"送信: {msg.data}")

def main():
    rclpy.init()
    rclpy.spin(HelloRobot())

if __name__ == "__main__":
    main()

別ターミナルで ros2 topic echo /greeting を実行すると、流したデータが見えます。この ros2 topic echo はデバッグの最強の友なので覚えておいてください。

つまずきポイント

  • command not found: ros2source /opt/ros/jazzy/setup.bash を忘れている(9割これ)
  • ノードが通信しない → 別々のターミナルで source したか確認。同一ネットワーク内の他PCと混線する場合は ROS_DOMAIN_ID を設定
  • Macで動かない → Dockerを使うのが結局いちばん早いです

まとめ

  • ROS 2はOSではなく「ロボット部品同士をつなぐ郵便局」
  • 覚えるのはノード・トピック・パブサブの3語
  • 2026年に始めるなら Jazzy(LTS) が最適解
  • ros2 topic echo でデータが見えれば、デバッグは9割解決する

次の一歩 🌸

ROS 2で扱うロボットの形状定義はURDF入門へ。AI側から攻めたい人はLeRobot入門がおすすめです。

あわせて読みたい