ROS2で知っておくと便利なコマンドをまとめました。
多くはROS2(Foxy)公式チュートリアル[1]https://docs.ros.org/en/foxy/Tutorials.htmlに準拠してますが、一部情報を付け加えています[2]ハイライトは個人的に特におさえておきたい項目です。
トピック/サービス/アクション
ros2 topic list
でシステムでアクティベートされている全てのトピックを確認できる。このとき-t
オプションで、トピックの型情報も一緒に表示させられる(サービス/アクションでも同様)。- トピックにパブリッシュされてるデータを見るには
ros2 topic echo <topic_name>
、またはrqt
のトピックモニター(後述)を使う。
ros2 topic pub <topic_name> <msg_type> "<YAMLで書いたデータ>"
でトピックにコマンドラインから直接データ(メッセージ)をpublishできる(サービスやアクションも同様)。
(例:ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
)--once
オプションは一度だけpublish、--rate 1
だと1Hzでpublishし続ける。- 任意のtopicにpublishされてるデータの周期は
ros2 topic hz <topic_name>
で確認できる。
rqt
- rqtはROSでのGUIソフト開発向けのフレームワーク。
ros2 run
で利用可能なプラグインをスタンドアロンで実行できる。 - トピックに流れてるデータを見るのに
rqt
のトピックモニター (rqt起動後plugin>Topics>Topic Monitor)が便利。 rqt_graph
はノードやトピックの繋がりなどを視覚的に確認できる。 使用時の注意として、コマンドラインで何か変更を加えてもrqt_graphには自動的に反映されないので、左上のrefreshボタンを適宜押す必要。ros2 run rqt_plot rqt_plot
は配信されてるデータの時系列のグラフを表示できる。ros2 run rqt_console rqt_console
はログメッセージをしっかり調査するときに便利。
データを収録する
ros2 bag record <topic_name> <topic_name> …
を使うと、トピックにpublishされるデータをレコードしてカレントディレクトリに保存できる。レコーディングを終了するときはCtrl+C
。
- 全てのトピックを保存したいときは
-a
オプションをつける。 -o <保存したい名前>
で別名保存できる。- 再生するときは
ros2 bag play <bag_file_name>
- ROS1のような
--clock
オプションは無い模様[3]https://github.com/ros2/rosbag2/issues/99。
ROS2で発生している問題のチェック
- ROS2で何か問題が発生したら
ros2doctor
が助けになる。ネットワークや動いてるシステムに発生している問題など、あらゆる面をチェックしてくれる。 例えば、あるノードがpublishしているのにsubscribeされていないという状況を検知できる。 --report
オプションで発生している問題の詳細を表示。
その他:パッケージ間の移動を楽にする設定
- パッケージのディレクトリに移動するために、毎回
cd ~/<workspace_name>/src/some_ros_package
と打つのは面倒くさい。
以下をbashrcに追加すると、colcon_cd some_ros_package
という短いコマンドで移動できる。
source /usr/share/colcon_cd/function/colcon_cd.sh
_colcon_cd_root=~/<workspace_name>
注釈
↩1 | https://docs.ros.org/en/foxy/Tutorials.html |
---|---|
↩2 | ハイライトは個人的に特におさえておきたい項目です。 |
↩3 | https://github.com/ros2/rosbag2/issues/99 |
コメント