0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ROS2 How to use

Last updated at Posted at 2020-04-30

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.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?