Help us understand the problem. What is going on with this article?

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

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_nodes
    • reinforcement_learning_test
  4. reinforcement_learning/をgitで管理する(個々のパッケージで管理しない)

あれ?ワークスペース?

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

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

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

namespace reinforcement_learning{

}

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

  }
}

nodeの名前空間

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした