ロボット開発の現場に入ると必ず出会うのが ROS 2(Robot Operating System 2)。名前に「OS」と付いていますが、WindowsやLinuxのようなOSではありません。ロボットの部品同士を会話させるための共通ルールです。
ROS 2はなにを解決するのか
ロボットは「カメラ」「モーター」「AI」など、作った人もプログラミング言語もバラバラな部品の集合体です。これらを直接つなごうとすると組み合わせが爆発します。
← 図は横にスクロールできます →
ROS 2は間に立つ「郵便局」の役割をします。各部品は郵便局に投函するだけでよく、相手が誰かを知る必要がありません。この仕組みのおかげで、他人が作った部品をそのまま自分のロボットに組み込めます。
3つの用語だけ覚える
ノード(Node)(ノード)
仕事をする単位のプログラム。「カメラを読むノード」「モーターを回すノード」のように、1機能=1ノードで作るのが基本。
トピック(Topic)(トピック)
ノード同士がデータを流す「専用の水路」。カメラノードが /image トピックに映像を流し、AIノードがそれを受け取る、という形。
パブリッシュ / サブスクライブ(publish / subscribe)
データを流すのがパブリッシュ、受け取るのがサブスクライブ。YouTubeの投稿と登録の関係と同じです。
2026年、どのバージョンを選ぶ?
ROS 2は毎年5月23日に新バージョンが出ます。偶数年がLTS(長期サポート・5年)、奇数年が通常版(1.5年)です。
| バージョン | 位置づけ | おすすめ度 |
|---|---|---|
| Jazzy Jalisco | 2024年のLTS。2029年までサポート | ◎ 本番・学習の第一候補 |
| Kilted Kaiju | 2025年の通常版。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: ros2→source /opt/ros/jazzy/setup.bashを忘れている(9割これ)- ノードが通信しない → 別々のターミナルで
sourceしたか確認。同一ネットワーク内の他PCと混線する場合はROS_DOMAIN_IDを設定 - Macで動かない → Dockerを使うのが結局いちばん早いです
まとめ
- ROS 2はOSではなく「ロボット部品同士をつなぐ郵便局」
- 覚えるのはノード・トピック・パブサブの3語
- 2026年に始めるなら Jazzy(LTS) が最適解
ros2 topic echoでデータが見えれば、デバッグは9割解決する
ゆるふわフィジカルAI