前提:
source /opt/ros/<distro>/setup.bash済み(例:jazzy)
ワークスペース使用時:source ~/ros2_ws/install/setup.bash
0. 基本:環境・前提確認
# ROS 2 ディストロ確認(設定されていれば出る)
echo $ROS_DISTRO
# ドメインID(同一ネットワーク内で分離する番号)
echo $ROS_DOMAIN_ID
# RMW 実装(DDSの実装選択)
echo $RMW_IMPLEMENTATION
1. グラフ全体(何が動いてる?)
# ノード一覧
ros2 node list
# トピック一覧
ros2 topic list
# トピック一覧(型つき)
ros2 topic list -t
# サービス一覧
ros2 service list
# アクション一覧
ros2 action list
2. ノード(このノードが何を使ってる?)
# ノードの詳細(Pub/Sub/Service/Action/Params)
ros2 node info /talker
ros2 node info /listener
- ノードが「欲する topic」= Subscribers に出る topic
- ノードが「出す topic」= Publishers に出る topic
3. トピック(つながってる?流れてる?)
# topic の接続状況(Publisher/Subscriber 数)
ros2 topic info /chatter
# topic の接続状況(QoS/エンドポイント詳細まで)
ros2 topic info /chatter -v
# topic を覗く(流れてるか確認)
ros2 topic echo /chatter
# 周波数を見る(例:Hz)
ros2 topic hz /chatter
# 帯域を見る
ros2 topic bw /chatter
# 1回だけ読む(デバッグ用)
ros2 topic echo /chatter --once
publish / subscribe の即席テスト
# publish(1回)
ros2 topic pub --once /chatter std_msgs/msg/String "{data: 'hello'}"
# publish(繰り返し、1Hz)
ros2 topic pub -r 1 /chatter std_msgs/msg/String "{data: 'hello'}"
# subscribe(受信)
ros2 topic echo /chatter
4. QoS(届かない時の最優先チェック)
# topic 側の QoS とエンドポイントを見る
ros2 topic info /chatter -v
echo 側で QoS を合わせる例(典型の救済策):
# best_effort / volatile などに合わせたい場合の例
ros2 topic echo /some_topic --qos-reliability best_effort --qos-durability volatile
5. メッセージ型・インターフェース(型って何?)
# パッケージ一覧
ros2 pkg list
# インターフェース一覧(msg/srv/action を含む)
ros2 interface list
# 型の中身を表示
ros2 interface show std_msgs/msg/String
ros2 interface show rcl_interfaces/msg/Log
6. サービス(request/response)
# サービス一覧
ros2 service list
# サービスの型
ros2 service type /some_service
# 型の中身
ros2 interface show <pkg>/srv/<ServiceName>
# 呼び出し(引数は型に合わせる)
ros2 service call /some_service <pkg>/srv/<ServiceName> "{...}"
7. アクション(長い処理+フィードバック+結果)
# アクション一覧
ros2 action list
# アクション情報(型など)
ros2 action info /some_action
# 送信(goal を投げる)
ros2 action send_goal /some_action <pkg>/action/<ActionName> "{...}"
# フィードバック表示つき
ros2 action send_goal /some_action <pkg>/action/<ActionName> "{...}" --feedback
8. パラメータ(ノード設定の読み書き)
# そのノードのパラメータ一覧
ros2 param list /some_node
# 取得
ros2 param get /some_node <param_name>
# 設定
ros2 param set /some_node <param_name> <value>
# 全パラメータをダンプ(YAML)
ros2 param dump /some_node
# YAML をロード
ros2 param load /some_node params.yaml
9. ログ(/rosout)
# /rosout を覗く(大量に出るので注意)
ros2 topic echo /rosout
10. Launch(複数ノード起動)
# 起動
ros2 launch <pkg> <file>.launch.py
# launch 引数や説明が出る場合がある
ros2 launch <pkg> <file>.launch.py --show-args
11. rosbag(記録/再生)
# 記録(全部)
ros2 bag record -a
# 記録(指定トピックのみ)
ros2 bag record /chatter /tf
# 情報
ros2 bag info <bag_dir>
# 再生
ros2 bag play <bag_dir>
# 再生(ループ)
ros2 bag play <bag_dir> --loop
12. colcon(ビルド)
# ワークスペース(例:~/ros2_ws)で
cd ~/ros2_ws
# ビルド
colcon build
# ビルド(特定パッケージだけ)
colcon build --packages-select <pkg_name>
# ビルド後の反映
source install/setup.bash
13. パッケージ作成(C++例)
cd ~/ros2_ws/src
# C++ パッケージ作成(rclcpp)
ros2 pkg create --build-type ament_cmake <pkg_name> --dependencies rclcpp std_msgs
# その後
cd ~/ros2_ws
colcon build --packages-select <pkg_name>
source install/setup.bash
14. デバッグの定番手順(最短ルート)
- ノードが生きてるか
ros2 node list
- ノードが何を Pub/Sub してるか
ros2 node info /some_node
- 問題の topic が存在し、型が合うか
ros2 topic list -t
- 接続が成立してるか(QoS含む)
ros2 topic info /some_topic -v
- 実際にデータが流れてるか
ros2 topic echo /some_topic
ros2 topic hz /some_topic