ROS 2 コマンドラインツール#
概要#
ROS 2では,さまざまなコマンドラインツールを使用してノードやトピック,サービスなどを管理・デバッグできる.ROS 2はマスターレスアーキテクチャを採用しているため,ROS 1で必要だったroscoreの起動は不要である.
ROS 2のコマンドラインツールについての詳細は,公式ドキュメントを参照すること.
主要コマンド#
ros2 run#
ros2 runコマンドは,任意のパッケージの中の実行ファイルを,その場所に移動することなく実行するためのコマンドである.
# 使用法
$ ros2 run <package_name> <executable_name>
# 例:talkerノードを実行
$ ros2 run demo_nodes_cpp talker
# 例:listenerノードを実行
$ ros2 run demo_nodes_cpp listener
ros2 launch#
ros2 launchコマンドは,launchファイルに記載された複数のノードを一度に起動するためのコマンドである.ROS 2では,launchファイルをPython,XML,YAMLで記述できる.
# 使用法
$ ros2 launch <package_name> <launch_file>
# 例:MoveIt2のデモを起動
$ ros2 launch moveit2_tutorials demo.launch.py
詳細はLaunch Tutorialを参照すること.
ros2 node#
ros2 nodeコマンドは,実行中のノード情報やノード間の接続を確認するためのコマンドである.
# 現在実行中のノード一覧を表示
$ ros2 node list
# ノードの詳細情報を表示(購読・出版しているトピックなど)
$ ros2 node info <node_name>
# ライフサイクル管理に対応したノードを終了
$ ros2 lifecycle set <node_name> shutdown
通常のノードはCtrl+Cで終了することも可能である.
ros2 topic#
ros2 topicコマンドは,実行中のトピックの情報やトピックに送られたメッセージを表示できる.
# トピック一覧を表示
$ ros2 topic list
# トピックのメッセージをリアルタイムで表示
$ ros2 topic echo <topic_name>
# トピックの詳細情報を表示
$ ros2 topic info <topic_name>
$ ros2 topic info <topic_name> -v # より詳細な情報
# トピックにメッセージを送信
$ ros2 topic pub <topic_name> <msg_type> <data>
# 例:chatterトピックのメッセージを表示
$ ros2 topic echo /chatter
ros2 service#
ros2 serviceコマンドは,実行中のサービスに関する情報を表示し,サービスを呼び出すことができる.
# サービス一覧を表示
$ ros2 service list
# サービスの型を表示
$ ros2 service type <service_name>
# サービスを呼び出す
$ ros2 service call <service_name> <service_type> <data>
# 例:2つの整数を加算するサービスを呼び出す
$ ros2 service call /add_two_ints \
example_interfaces/srv/AddTwoInts "{a: 1, b: 2}"
ros2 interface#
ros2 interfaceコマンドは,メッセージ,サービス,アクションのデータ構造を表示する.ROS 2では統一されたinterfaceコマンドでこれらすべてを扱える.
# 利用可能なインターフェース一覧を表示
$ ros2 interface list
# インターフェースの詳細を表示
$ ros2 interface show <interface_name>
# 例:画像メッセージの構造を表示
$ ros2 interface show sensor_msgs/msg/Image
# 例:サービスの構造を表示
$ ros2 interface show example_interfaces/srv/AddTwoInts
ros2 pkg#
ros2 pkgコマンドは,パッケージに関する情報を取得するためのコマンドである.
# インストール済みパッケージ一覧を表示
$ ros2 pkg list
# パッケージのパスを表示
$ ros2 pkg prefix <package_name>
# パッケージの実行可能ファイル一覧を表示
$ ros2 pkg executables <package_name>
# 例:demo_nodes_cppパッケージの情報を取得
$ ros2 pkg prefix demo_nodes_cpp
$ ros2 pkg executables demo_nodes_cpp
ros2 param#
ros2 paramコマンドは,ノードのパラメータに値をセットしたり取得したりできる.パラメータはYAML形式で扱われる.
# パラメータ一覧を表示
$ ros2 param list
# パラメータの値を取得
$ ros2 param get <node_name> <param_name>
# パラメータの値を設定
$ ros2 param set <node_name> <param_name> <value>
# 例:teleop_turtleノードのパラメータを操作
$ ros2 param get /teleop_turtle scale_linear
$ ros2 param set /teleop_turtle scale_linear 3.0
ros2 bag#
ros2 bagコマンドは,トピックの記録や再生を行うためのコマンドである.トピックをバッグファイルに保存し,後で再生することができる.
# トピックを記録
$ ros2 bag record <topic_name>
# 複数のトピックを記録
$ ros2 bag record <topic1> <topic2> <topic3>
# すべてのトピックを記録
$ ros2 bag record -a
# バッグファイルを再生
$ ros2 bag play <bag_file>
# バッグファイルの情報を表示
$ ros2 bag info <bag_file>
# 例:cmd_velトピックを記録して再生
$ ros2 bag record /turtle1/cmd_vel
$ ros2 bag play my_bag
$ ros2 bag info my_bag
ros2 daemon#
ros2 daemonコマンドは,ROS 2のバックグラウンドデーモンを管理する.デーモンはノードディスカバリーを支援する.
# デーモンの状態を確認
$ ros2 daemon status
# デーモンを停止
$ ros2 daemon stop
# デーモンを開始
$ ros2 daemon start
ヘルプの表示#
各コマンドの詳細なヘルプは,--helpオプションで表示できる.
# 例:ros2 runのヘルプを表示
$ ros2 run --help
# 例:ros2 topicのサブコマンド一覧を表示
$ ros2 topic --help