🧪 新しいチュートリアルを公開中 — ロボットアームからセンサーまで
コンテンツへスキップ

ROS 入門チュートリアル

ROS を初めて触る開発者向け。Ubuntu 22.04 + ROS 2 Humble ベースで、Juxi Technology の IMU モジュールと SO-ARM101 アームを使ったハンズオン例を交えて解説します。

1. ROS とは?

ROS(Robot Operating System)はロボット開発の事実上の標準ミドルウェアです:

  • トピック (Topic): パブリッシュ/サブスクライブ通信(例: IMU データストリーム)
  • サービス (Service): リクエスト/レスポンス(例: アクションのトリガー)
  • Launch: 複数ノードを一括起動

ROS 2 (Humble) は、リアルタイム性・マルチマシン対応・セキュリティの改善を備えた現在の主流バージョンです。

2. 環境構築

Ubuntu 22.04 + ROS 2 Humble

bash
# ROS 2 リポジトリを追加
sudo apt update && sudo apt install -y curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
  -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | \
  sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# インストール
sudo apt update
sudo apt install -y ros-humble-desktop

# 環境を読み込む(新しいターミナルごと、または ~/.bashrc に追記)
source /opt/ros/humble/setup.bash

動作確認

bash
# ターミナル 1
ros2 run demo_nodes_cpp talker

# ターミナル 2
ros2 run demo_nodes_py listener

Hello World: N が繰り返し表示されれば成功です。

3. コアコンセプト

概念説明
ノード独立したプロセスIMU ノード、ロボットアームノード
トピックパブリッシュ/サブスクライブのデータストリーム/imu/data 姿勢
メッセージトピックのデータ型sensor_msgs/Imu
サービスリクエスト/レスポンスサーボリセットのトリガー
Launch ファイル複数ノード起動のオーケストレーションimu_launch.py

4. Juxi 製品での実践

IMU モジュール (ROS 2)

bash
git clone https://github.com/Juxi-Technology/ICM42670P-High-Precision-IMU-Module.git
cd ICM42670P-High-Precision-IMU-Module
colcon build
source install/setup.bash

ros2 launch icm42670p imu_launch.py

# データを表示
ros2 topic echo /imu/data

KWS モジュール (RViz2)

5. コマンド早見表

bash
ros2 node list                 # ノード一覧
ros2 topic list                # トピック一覧
ros2 topic echo /topic         # トピックデータを表示
ros2 service list              # サービス一覧
ros2 launch pkg file.launch.py # 起動

FAQ

Q: source /opt/ros/humble/setup.bash でエラーが出る?

A: インストール済みのバージョンとパスを確認してください。Jetson で conda を使用している場合は、先に conda を有効化してください。

Q: ポートの権限エラー?

A: sudo chmod 666 /dev/ttyACM* を実行します。

Q: Jetson を使用している場合?

A: PyTorch の互換性に注意してください — Jetson での PyTorch 非互換問題 を参照してください。


サポート