rtcomp

コンポジットコンポーネントの管理

Author: Geoffrey Biggs and contributors
Date: 2015-08-13
Copyright: LGPL3
Version: 4.0
Manual section:1
Manual group:User commands

書式

rtcomp [options] <manager[:name]|composite component path>

概要

実行している複数のコンポーネントを一つのコンポジットコンポーネントとして 構成し、選択されたポートを外部に公開します。Execution contextも選択する ことが可能です。また、新しいコンポジットコンポーネントを作成したり、既存 のコンポジットコンポーネントを編集することが可能です。 さらに、既存のコンポジットコンポーネントに新しいメンバーを追加、またはメ ンバーを削除することができます。 公開されているポートの変更も可能です。

オプションには既存のコンポジットコンポーネントのパスまたはマネージャのパ スが必要です。マネージャを指定した場合、新しいコンポジットコンポーネント を作成します。コンポジットコンポーネントの名前を指定する場合はマネージャ のパスにコロンと名前を追加することで指定可能です。名前が指定されていない 場合はデフォルトが選択されます。 を参照してください。

コンポーネントを追加(-a)または削除(-r)する場合、公開または非公開する ポートはコンポーネントのパスにカンマで区切ったリストとして指定してくださ い。 を参照してください。

オプション

-a ADD, --add=ADD
 コンポジットコンポーネントに含むコンポーネントとポートを指定する。 ポート名はカンマで区切ったリストとしてパスに追加する。 このオプションは複数指定可能。
-o OPTIONS, --options=OPTIONS
 コンポーネント作成時の追加オプション。
-r REMOVE, --remove=REMOVE
 コンポジットコンポーネントから削除するコンポーネントやポートを指定する。 ポート名はカンマで区切ったリストとしてパスに追加する。 このオプションは複数指定可能。
-t TYPE, --type=TYPE
 Execution contextのタイプ。[デフォルト: PeriodicECSharedComposite]
--version プログラムのバージョン番号を表示して終了する
-h, --help ヘルプを表示して終了する
-v, --verbose 冗長な情報を出力する [デフォルト: False]

パス

rtshellパス でRTCツリーのオブジェクトを示します。パスは オブジェクトのアドレスです。ネームサーバとネームコンテクストは ダイレクトリで、マネージャとRTコンポーネントはファイルです。POSIXの cat 等のコマンドと同じように、コマンドに渡したパスはrtshellの ワーキングディレクトリに追加されます。rtshellの現在のワーキングディレクトリは RTCSH_CWD という環境変数に保存されて、 rtcwd というコマンドで 変更することができます。

利用できるパスはコマンド実行時のネームサーバによって変わります。 RTCSH_NAMESERVERS という環境変数の値に記録されたネームサーバとパスに 指定された ネームサーバを組み合わせて提供します。

例えば、 /localhost/comp0.rtclocalhost にあるネームサーバに登録 された comp0.rtc というRTコンポーネントを示します。 /localhost/manager/comp0.rtclocalhost にあるネームサーバの下の manager というディレクトリに登録された comp0.rtc というRT コンポーネントを示します。 ./comp0.rtc は現在のワーキングディレクトリ の中にある comp0.rtc というRTコンポーネントを示します。

RTコンポーネントのポートを示す場合、パスの後にコロン(「:」)で区切って 示します。例えば、 /localhost/comp0.rtc:datacomp0.rtc というRTコンポーネントの data というポートを示します。

新しいポートを作るコマンドもあります。この場合、オプションをパスに追加 することができます。使えるオプションは作られるポートの名前とフォーマッタ です。指定方法は以下の通りです:

path:port.name#formatter

例:

/localhost/blurg.host_cxt/comp0.rtc:input.stuff#a_printer

作られるポートの名前は stuff で、データは a_printer という関数で ターミナルに表示するように指定してます。( a_printer の関数はPythonが利 用可能な場所に存在する必要があります。普通はユーザがモジュールで提供します。) 作られたポートは comp0.rtcinput というポートに接続します。

「name」という部分は必須ではありません。書いていない場合は「.」文字も 書かないでください。例:

/localhost/blurg.host_cxt/comp0.rtc:input#a_printer

「formatter」という部分は必須ではありません。書いていない場合は「.」文字も 書かないでください。例:

/localhost/blurg.host_cxt/comp0.rtc:input.stuff

環境変数

RTCTREE_ORB_ARGS
ORBを作る時に渡す変数です。セミコロンで区切ります。必須ではありません。
RTCTREE_NAMESERVERS
RTCツリーを作る時に参照するネームサーバのアドレスです。アドレスをセミ コロンで区切ります。リストされたアドレスはすべてRTCツリーに追加して rtshellで見ることができるようになります。必須ではありません。
RTSH_CWD
rtshellの現在のワーキングディレクトリ。rtshellが自動的に設定します。 設定しないでください。

普通、ユーザが設定する変数は RTCTREE_NAMESERVERS のみです。よく使うネ ームサーバを設定しておくと便利です。例えば、Bashシェルの場合、以下のコマンド は localhost192.168.0.1:65346 および example.com にあるネーム サーバをいつもrtshellで利用できるようにします。

$ export RTCTREE_NAMESERVERS=localhost;192.168.0.1:65346;example.com

返り値

成功の場合はゼロを返します。失敗の場合はゼロではない値を返します。

デバグ情報とエラーは stderr に出します。

$ rtcomp /localhost/manager.mgr:MotorUnit -a
/localhost/Motor0.rtc:out -a /localhost/Controller0.rtc:in,out

Controller0.rtcin というポートと Motor0.rtcout という ポートを公開して Motor0.rtcController0.rtc によってコンポジットコ ンポーネントを作成します。コンポジットコンポーネントのインスタンス名は MotorUnit になります。

$ rtcomp /localhost/MotorUnit.rtc -a /localhost/Sensor0.rtc:out

既存の MotorUnit.rtc コンポジットコンポーネントを編集し、 Sensor0.rtcout ポートを公開して Sensor0.rtc を コンポジットコンポーネントに追加します。

$ rtcomp /localhost/MotorUnit.rtc -a /localhost/Sensor0.rtc:in

すでに Sensor0.rtc がメンバーとして登録されている既存の MotorUnit.rtc コンポジットコンポーネントを編集し、 Sensor0.rtcin ポートを公開 します。

$ rtcomp /localhost/MotorUnit.rtc -r /localhost/Sensor0.rtc:out

すでに Sensor0.rtc がメンバーとして登録されている既存の MotorUnit.rtc コンポジットコンポーネントを編集し、 Sensor0.rtcout ポートを非公 開にします。

$ rtcomp /localhost/MotorUnit.rtc -r /localhost/Controller0.rtc:in,out

すでに Controller0.rtc がメンバーとして登録されている既存の MotorUnit.rtc コンポジットコンポーネントを編集し、 Controller0.rtcinout ポートを非公開にします。

$ rtcomp /localhost/MotorUnit.rtc -r /localhost/Controller0.rtc -r
/localhost/Motor0.rtc

すでに Controller0.rtcMotor0.rtc がメンバーとして登録されている 既存の MotorUnit.rtc コンポジットコンポーネントを編集し、 Controller0.rtcMotor0.rtc を削除します。

参照

rtmgr (1)