ROS2の便利なコマンドまとめ

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

コメント