ROS2で既にプログラミングされた実行可能ファイルを使うために勉強したメモです.
現状,勉強した使い方は以下の内容です.
- A.graph全般
- launch
- rqt
- package
- B.node関連
- node
- parameter
- C.topicなど接続関連
- topic
- service
- action
A.graph全般
launchを使う.
(既に〜launch.py
ファイルは作成済みと仮定して)
launchファイルに記述したros2システムを起動
cd launch
ros2 launch <〜launch.py>
[Note]
起動ファイルはpackageで提供することもできる.
ros2 launch <package_name> <launch_file_name>
rqtを使う.
ROS graphを表示する.
rqt_graph
packageを使う.
packageを使う.
1. packageを使う準備
新しいパッケージと実行可能ファイルを使用するために,workspaceのルートで以下を実行する.
. install/setup.bash
これで,workspaceがパスに追加されたので、新しいpackageの実行可能ファイルを使用できるようになる.
2. 使う.
ros2 run <package_name> <node_name>
ここで,<node_name>
はpkg create
したとき,--node-name
引数で命名した名前,あるいはpkgを調べたときに見つけたnode名を指す.
packageを調べる.
-
<workspace_name>/src/<package_name>
の中には,自動的に生成されたファイルとフォルダーが表示される. -
<package_name>
フォルダの中には,python_nodeが存在します.
B.node関連
nodeを使う.
node一覧の取得
ros2 node list
そのノードと対話するsubscriber,publisher,service、およびaction(ROS graph接続)のリストを返します.
nodeの詳細情報の検索
ros2 node info <node_name>
parameterを使う.
parameter一覧を取得
nodeに属するparameter一覧を取得する.
ros2 param list
現在値を取得
nodeに属するparameterの現在値を取得する.
ros2 param get <node_name> <parameter_name>
現在値を設定変更
実行時に,nodeに属するparameterの現在値を設定する.
ros2 param set <node_name> <parameter_name> <value>
parameter値をダンプ
nodeに属するすべてのparameterをファイルに保存するために,parameter値をダンプする.
ros2 param dump <node_name>
ファイルからロード
parameterをファイルからロードする.
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
フラグ--ros-args
が追加され,--params-file
オプションの後にロードするファイルが続く.
C.topicなど接続関連
topicを使う.
topic一覧を取得
システムで現在アクティブなすべてのtopicのリストを表示する.
ros2 topic list
ros2 topic list -t
は同じくtopicのリストが返されますが,今回はtopicタイプが括弧の後に追加される.
pubしてるデータを取得
topicが公開しているデータを表示する.
ros2 topic echo <topic_name>
送受信数を表示
topicが送受信されている数を表示する.
ros2 topic info <topic_name>
手動でpubする.
コマンドラインから直接topicにデータをpubする.
ros2 topic pub <topic_name> <msg_type> '<args>'
- この引数
args
は,YAML構文で入力する必要があることに注意してください. -
--rate 1
オプションは,コマンドを1 Hzの安定したストリームで発行するように指示します. -
--once
オプションは,「1つのメッセージをパブリッシュしてから終了する」ことを意味する.
pubする周期を取得
topicがpublishされる周期を表示する.
ros2 topic hz <topic name>
serviceを使う.
serviceの取得
システムで現在アクティブなすべてのserviceのリストを表示する.
ros2 service list
- service名がリスト表示される.
-
-t
オプションは,すべてのアクティブなサービスのタイプを確認する.
serviceのタイプを表示
ros2 service type <service_name>
- サービスの要求と応答の2つのデータがどのように構造化されているかを記述するタイプがある.
-
Empty
タイプは,サービスコールが要求を行う際にデータを送信していないし,応答を受信した場合にはデータを受信しないことを意味する.
特定のタイプに該当するすべてのserviceを検索
ros2 service find <type_name>
- 例)
ros2 service find std_srvs/srv/Empty
- →
/clear, /reset
- →
serviceのインターフェイスの取得
ros2 interface show <type_name>.srv
service name
および,それらのtype_name
は,ros2 service list -t
で分かる.
serviceの実行(呼び出し)
ros2 service call <service_name> <service_type> <arguments>
- 例1)
ros2 service call /clear std_srvs/srv/Empty
- 例2)
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
actionを使う.
action一覧を取得
ROSグラフのすべてのactionを表示する.
ros2 action list
-
-t
オプションは,actionのタイプも表示する.
client/server情報を取得
actionのclient/server情報を表示する.
ros2 action info <action_name>
actionのインターフェイスの取得
actionを実行するために必要な<value>
の構成を取得する.
ros2 interface show <action_type>.action
action_name
および,それらaction_type
は,ros action list -t
で分かる.
actionの実行
ros2 action send_goal <action_name> <action_type> <values>
-
<values>
はYAML形式. - 例)
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {'theta: 1.57'}
-
--feedback
オプションをコマンドの最後に追加すると,目標完了まで現在の状態をフィードバックとして受け取り続ける.
参考サイト
更新履歴
2020.4.30 Init.