安曇野の森から > ROS(Robot Operating System)を使う > コマンド一覧(グループ別)

グラフリソース名

ROSではノード名、トピック名、メッセージタイプ名、サービス名等々、名前の必要なオブジェクトが数多くあります。

これらオブジェクトに対して各自固有の名前を定義する必要があり、ROSには4種類の名前定義の方法(グローバル名、相対名、プライベート名、アノニマス名)が用意されています。

これまでの説明では、説明が分かりにくくなることを防ぐため、名前の定義について詳しく説明をせずに流してきましたが、今後の理解を深めるため、ここで名前定義の方法について以下で詳しく説明します。


グローバル名

グローバル名は「/」から始まる名前です。

その後ろに名前空間が「/」で区切られてつながり、最後にベース名(=リソース名)が付きます。
グローバル名には名前を決定する全ての情報が記載されていますので、これだけで確実に1つのオブジェクトを指名することが出来ます。

他の名前の付け方では名前情報の一部しか与えられないので、ROS内部では、その一部の名前情報に、すでに分かっている情報を付け足しグローバル名として利用しています。


相対名

ディフォルトの名前空間が設定されている場合、名前空間名/リソース名、又はリソース名だけで名前を指定することが出来ます。

この名前が相対名で、先頭には「/」が付きません。ROS内部では相対名の前にディフォルトの名前空間を付けてグローバル名として使われます。

ディフォルトの名前空間が設定されていない場合にはディフォルトの名前空間の代わりにルート「/」が使われます。


ディフォルト名前空間の設定

ローンチファイルのノードエレメント内に記載すると、このノードで使うディフォルトの名前空間が指定出来ます。

ローンチファイルに限らず何も指定しなければディフォルトの名前空間はグローバル空間(/)になります。



コマンドラインの引数としてディフォルトの名前空間を指定することも出来ます。



また、以下のように環境変数でディフォルトの名前空間を与えることも出来ます。




プライベート名

「~」から始まる名前がプライベート名です。

ROS内部ではプライベート名から「~」を除いて、その前にノード名をつけてグローバル名として使います。

プライベート名は自ノード内でのみ使うオブジェクトを指名するのに適しています。

ノード名を知っていれば、プライベート名からグローバル名を作り出し、このグローバル名を使って他ノードからでもプライベート名が示すオブジェクトを使うことが出来ます。


アノニマス名

ノードのインスタンスをたくさん複製したい時に各ノードに固有名を自動で与える場合などにアノニマス名を使用します。

ノードプログラムのros::init()の引数として以下のように指定すると、インスタンスのノード初期化時にベース名と現在時間を「_」で繋げて固有のノード名を作成します。





inserted by FC2 system