📘

ROS2の各種識別名

2024/04/09に公開

解説対象

本記事では、ROS2を理解する上で欠かせないノード名・トピック名・サービス名等の各種識別名についてまとめています。

公式ドキュメント

  • ROS2 design
    • 識別名の指定方法に関して説明があります

解説

識別名

識別名の指定方法は、下記の3種類があります。

  • 絶対指定(/で始まる文字列)
  • 相対指定(/~以外で始まる文字列)
  • ノード名置換指定(~で始まる文字列)
識別名 絶対指定 相対指定 ノード名置換指定 途中での/ 解説
ノード名前空間 〇:可 ×:不可 ×:不可 〇:可 /nsX/nsY 相対指定した場合は自動的に先頭に/が挿入され絶対指定とみなされます
ノード名 ×:不可 〇:可 ×:不可 ×:不可 nodeA 必ず相対指定
トピック名 〇:可 〇:可 〇:可 〇:可 /nsZ/topicL
topicM
~/topicN
絶対指定・相対指定・ノード名置換指定が可能
サービス名 〇:可 〇:可 〇:可 〇:可 /nsZ/serviceL
serviceM
~/serviceN
絶対指定・相対指定・ノード名置換指定が可能

上記例の場合における完全修飾識別名は下記のようになります

識別名 解説
完全修飾ノード名 /nsX/nsY/nodeA ノード名とノード名前空間を結合して生成されます
完全修飾トピック名 /nsZ/topicL
/nsX/nsY/topicM
/nsX/nsY/nodeA/topicN
トピック名が相対指定の場合はノード名前空間にトピック名を結合して生成、ノード名置換指定の場合は完全修飾ノード名でトピック名の~部分を置換して生成
完全修飾サービス名 /nsZ/serviceL
/nsX/nsY/serviceM
/nsX/nsY/nodeA/serviceN
サービス名が相対指定の場合はノード名前空間にサービス名を結合して生成、ノード名置換指定の場合は完全修飾ノード名でサービス名の~部分を置換して生成
GitHubで編集を提案

Discussion