ようこそ、 名無し ID:TJTZR3EG さん(ゲスト)

← コマンド一覧へ戻る

ROS2 基本コマンド集

投稿日: 2026-03-31 / 投稿者: 管理者 / タグ: ROS2, Ubuntu, Linux, セットアップ, コマンド

ROS2開発で頻出の「調べる・動かす・切り分ける」ための基本コマンドをまとめました。困ったときは、まず node / topic / param の3系統で“何が動いていて何が流れているか”を確認すると、原因が絞れます。

1. 前提条件:ROS 2環境のロード

ROS 2のコマンドを実行するための前提条件として、ターミナルを開くたびに環境変数を読み込む(ソースする)必要があります。(※例としてディストリビューションが humble の場合)
毎回入力するのが手間な場合は、echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc を実行して自動化しておくと便利です。

source /opt/ros/humble/setup.bash

2. ノード(プログラム)の実行

指定したパッケージ内の実行可能ファイル(ノード)を起動します。ROS 2の最も基本的な実行コマンドです。

ros2 run <パッケージ名> <実行ファイル名>

3. 一括起動(Launch)

複数のノードやパラメータをまとめて起動する場合に使用します。

ros2 launch <パッケージ名> <ローンチファイル名>

4. トピックの確認とデバッグ

ノード間でやり取りされているデータ(トピック)の状態を確認したり、実際の値をターミナル上に表示したりします。

# 現在アクティブなトピックの一覧を表示
ros2 topic list

# 特定のトピックに流れているデータをリアルタイムで表示
ros2 topic echo /<トピック名>

# トピックの通信頻度(Hz)を確認
ros2 topic hz /<トピック名>

5. ワークスペースのビルド

自作したパッケージや、クローンしてきたソースコードをコンパイルします。必ずワークスペースのルートディレクトリ(例: ~/ros2_ws)に移動してから実行します。

# ワークスペース内の全パッケージをビルド
colcon build

# 特定のパッケージのみをビルド(時短に便利です)
colcon build --packages-select <パッケージ名>

6. 新規パッケージの作成

新しいROS 2パッケージの雛形(ディレクトリと必須ファイル)を作成します。使用する言語(C++ または Python)に合わせてビルドタイプを指定します。

# C++(CMake)用パッケージを作成する場合
ros2 pkg create --build-type ament_cmake <パッケージ名>

# Python用パッケージを作成する場合
ros2 pkg create --build-type ament_python <パッケージ名>

7. 起動中ノードの確認(まずは事実を見る)

「ノードが起動しているか」「どんなPublish/Subscribeを持っているか」を確認します。通信がうまくいかないときの第一歩です。

ros2 node list
ros2 node info /<ノード名>

8. パラメータの確認と変更(動作を外から切り替える)

パラメータはノードの動作を外部から設定する仕組みです。起動引数で渡すだけでなく、実行中に確認・変更できます(ノード実装によります)。

ros2 param list /<ノード名>
ros2 param get /<ノード名> <パラメータ名>
ros2 param set /<ノード名> <パラメータ名> <値>

補足: 起動時にまとめて設定する場合は、YAMLファイルやlaunch側の記述が一般的です。

9. サービス(Service)の確認と呼び出し

Serviceはリクエスト/レスポンス型の通信です。状態リセットや設定変更など、同期的な操作に使われます。

ros2 service list
ros2 service type /<サービス名>
ros2 service call /<サービス名> <サービス型> "{...}"

ポイント: 型名やリクエスト形式は ros2 interface show で確認できます。

10. アクション(Action)の確認と実行

Actionは時間のかかる処理(進捗付き)に向いた通信です。ナビゲーションなどで頻出します。

ros2 action list
ros2 action info /<アクション名>
ros2 action send_goal /<アクション名> <アクション型> "{...}"

補足: 実際のオプションや入力形式は ros2 action send_goal -h で確認してください。

11. メッセージ/サービス型の確認(interface)

「このトピックは何型?」「このServiceのリクエスト形式は?」を調べるときに使います。

ros2 interface list
ros2 interface show std_msgs/msg/String

12. Topicの送信(pub)とQoSトラブルの切り分け

トピック通信が怪しいときは「流れているか」と同時に「QoSが合っているか」を疑います。まずは詳細情報の表示から始めると安全です。

ros2 topic info -v /<トピック名>

手動でPublishして動作確認したい場合は ros2 topic pub を使います。

ros2 topic pub /<トピック名> <型> "{...}"

補足: QoS関連のオプションはバージョン差が出やすいので、必要なら ros2 topic echo -h / ros2 topic pub -h で確認してください。

13. 診断コマンド(doctor / daemon)

環境が壊れているか、探索がうまくいっていないかを切り分けるのに役立ちます。

ros2 doctor --report
ros2 daemon stop
ros2 daemon start

14. データの記録と再生(bag)

センサーデータやトピック通信を記録し、あとから再生することで再現性の高いデバッグができます。ここでは最小限のコマンドに絞り、運用の注意点(容量・記録時間・再生条件など)は別途追記します。

ros2 bag record -a
ros2 bag info <bagフォルダ>
ros2 bag play <bagフォルダ>

15. 困ったときの最短チェックリスト

最後に、コマンドを打つ順番を固定しておくと迷いません。

  • 環境: source /opt/ros/<distro>/setup.bash と、ワークスペースを使うなら source install/setup.bash を実行したか
  • 起動: ros2 node list に対象ノードが出るか
  • 通信: ros2 topic listros2 topic echo で流れている事実が確認できるか
  • 設定: ros2 param list / get で期待どおりの値か
  • 型: ros2 interface show で型を確認したか

16. 複数環境の分離(ROS_DOMAIN_ID)

同じネットワーク上に複数のROS2システムがあると、意図しないノード同士が見えてしまうことがあります。ROS_DOMAIN_ID を分けると、通信を論理的に分離できます(同じID同士だけが見える)。

# 現在値の確認
echo $ROS_DOMAIN_ID

# 例: ドメインIDを1に設定(ターミナル単位)
export ROS_DOMAIN_ID=1

補足: チームで使う場合は「どのロボット/どの環境が何番か」を決め、必要なら ~/.bashrc に書いて統一します。

17. 環境変数の確認(通信が見えないとき)

通信が見えない/急に見えなくなったときは、環境変数の差分が原因のことがあります。まずは事実を確認します。

printenv | grep -E '^ROS|^RMW'
echo $ROS_DISTRO
echo $RMW_IMPLEMENTATION

18. ログレベルを上げる(デバッグ時)

挙動が怪しいときは、ログレベルを上げるだけで原因が見えることがあります。ノード起動時に指定できます。

# 例: debugログで実行
ros2 run <パッケージ名> <実行ファイル名> --ros-args --log-level debug

# 例: warn以上に絞る
ros2 run <パッケージ名> <実行ファイル名> --ros-args --log-level warn