LoginSignup
0
0

More than 1 year has passed since last update.

独自ルール:ROS2における名前付け

Last updated at Posted at 2019-07-13

ROS2関係トップページへ

ここでは以下の名前付けについて述べる

  • 名前固定のもの
    • node名
    • nodeの提供するサービス名,トピック名
  • ルールを考えるもの
    • ワークスペース名・パッケージ名
    • c++などでの一般で言う名前空間
    • nodeの名前空間

名前固定のもの

node名

node名はその役割に応じてプログラム中にハードコーディングする.同一nodeを複数起動する場合はnodeの名前空間で区別する.
githubの公式exampleでもnode名は固定になっている.

個別の名付けルール

  • "役割など"_node

サービス名・トピック名

node名と同様.

ルールを考えるもの

ワークスペース名・パッケージ名

機能に応じた名前を考え適切につける.
ここで,nodeとメッセージ,テスト用プログラムは別々につくりたい.このことから,以下のようにする.

  1. ワークスペース名として相応しい名前(例えばreinforcement_learning)を考える.
  2. そのディレクトリを作成する(mkdir reinforcement_learning)
  3. reinforcement_learning/にて,必要に応じて部品となるパッケージを作成する.代表的なのは以下の構造となる.
    • reinforcement_learning_msgs
    • reinforcement_learning_node
    • reinforcement_learning_target
  4. reinforcement_learning/をgitで管理する(個々のパッケージで管理しない)

あれ?ワークスペース?

c++などでの一般で言う名前空間

特にlibraryとしてnodeのクラスを作成する場合,プログラミング言語が提供する名前空間をつける(ROS特有の名前空間は「nodeの名前空間」にて).
少なくとも名前空間として,パッケージ名をつける.それ以上は自由に.

例えばreinforcement_learning_nodesのクラスでは以下のような名前空間をつけること.

namespace reinforcement_learning\node{

}

あとは好みで例えば以下のように
namespace reinforcement_learning_node{
  namespace action_selection_method{

  }
}

nodeの名前空間

ROS2ではnodeを一意に決定するために,nodeのnamespaceとnode名が使える.公式のAPIのNodeのコンストラクタを見ると指定できることが分かる.
node名だけ指定した場合(node_name),node_nameで指定でき,namespaceも指定した場合,node_nameや/namespace/node_nameで指定できる.

この名前空間については自由に考える.

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