設定ファイルとコマンドラインオプション (基礎編)
#contents
設定ファイル ( rtc.conf )
コンポーネントマネージャは起動時に設定ファイル rtc.conf を読み込みます。 コンフィギュレーションファイルは通常 rtc.conf という名前で作成しますが、任意の名前で作成したコンフィギュレーションファイルを渡すこともできます。
rtc.conf の配置場所
rtc.conf は通常RTC実行ファイル(スタンドアロンコンポーネント: xxxComp や xxxComp.exe など実行形式になっているRTC) と同じディレクトリーに配置して、その設定を自動的に読み込ませます。 もしくは、-f オプションを利用して任意の名前の設定ファイルを読み込ませることもできます。 rtc.conf が実行ファイルと同じディレクトリーにないか、-f オプションで指定されていない場合は、代わりにシステムに配置された rtc.conf を読み込みます。
rtc.conf の読み込み優先度は以下のように設定されています。
Linux/Unixの場合
- コマンドラインオプション “-f”
- 環境変数 “RTC_MANAGER_CONFIG”
- デフォルト設定ファイル “./rtc.conf”
- デフォルト設定ファイル “/etc/rtc.conf”
- デフォルト設定ファイル “/etc/rtc/rtc.conf”
- デフォルト設定ファイル “/usr/local/etc/rtc.conf”
- デフォルト設定ファイル “/usr/local/etc/rtc/rtc.conf”
- 埋め込みコンフィギュレーション値
Windowsの場合
- コマンドラインオプション “-f”
- 環境変数 “RTC_MANAGER_CONFIG”
- デフォルト設定ファイル “./rtc.conf”
- デフォルト設定ファイル “%RTM_ROOT%/%RTM_VC_VERSION%/rtc.conf”
Windowsでは、環境変数 ”RTM_ROOT”’ および ’’RTM_VC_VERSION’’ で指定されるディレクトリー下に置かれた rtc.conf (通常は C:\Program Files\OpenRTM-aist(バージョン番号)(VCのバージョン)) が読み込まれます。
主な設定項目
以下に、良く利用される rtc.conf の設定オプションを示します。 以下のオプション以外にも、rtc.conf には様々なオプションを指定することができます。詳細は rtc.conf設定項目一覧 を参照してください。
ネームサービスに関する設定
ネーミングサービスの設定に関する項目は以下の通りです。
:corba.nameservers| host_name:port_numberで指定、デフォルトポートは2809 (omniORB のデフォルト)。~ 複数サーバーを指定可能で、サーバー名の区切り文字はコンマ “,” 。
:naming.formats| %h.host_cxt/%n.rtc →host.host_cxt/MyComp.rtc~ 複数指定可能。~ 0.2.0互換にしたければ、~ %h.host_cxt/%M.mgr_cxt/%c.cat_cxt/%m.mod_cxt/%n.rtc
:naming.update.enable| “YES” or “NO”~ ネーミングサービスへの登録の自動アップデート設定。~ コンポーネント起動後にネームサービスが起動したときに、再度名前を登録します。
:naming.update.interval| アップデートの周期[s]。デフォルトは10秒。
:timer.enable| “YES” or “NO”~ マネージャタイマー有効・無効。naming.updateを使用するには有効でなければならない。
:timer.tick| タイマーの分解能[s]。デフォルトは100ms。
ログ出力に関する設定
:logger.enable| “YES” or “NO”~ ログ出力を有効・無効に設定。
:logger.file_name| ログファイル名。~ %h:ホスト名、%M:マネージャ名,%p:プロセスID 使用可
:logger.date_format| 日付フォーマット。strftime(3)の表記法に準拠。~ デフォルト:%b %d %H:%M:%S → Apr 24 01:02:04|
:logger.log_level| ログレベル: SILENT, ERROR, WARN, INFO, DEBUG, TRACE, VERBOSE, PARANOID.~ 何も出力しない(SILENT)~全て出力する(PARANOID).~ ※以前は RTC 内で使えましたが、現在は使えません。
実行コンテキストに関する設定
:exec_cxt.periodic.type| 使用する実行コンテキストを指定。~ 現在のところ、 PeriodicExecutionContext, ExtTrigExecutionContext が使用可能です。~ デフォルトはPeriodicExecutionContext.
:exec_cxt.periodic.rate| 実行コンテキストの周波数[Hz]を指定。~ 有効範囲:(0, 1000000].~ デフォルト:1000.~
その他の設定
:corba.endpoint| IP_Addr:Port で指定。NIC が複数あるとき、ORB をどちらで listen させるかを指定します。~ Port を指定しない場合でも:が必要です。~ 例: corba.endpoint: 192.168.0.12~ NIC が2つある場合必ず指定してください。 (指定しなくても偶然正常に動作することもあります。)
:corba.args| CORBA に対する引数。詳細は omniORB のマニュアルを参照してください。
[カテゴリ名].[コンポーネント名].config_file| [カテゴリ名].[インスタンス名]. config_file| コンポーネントの設定ファイル カテゴリ名:manipulator、コンポーネント名:myarm、インスタンス名 myarm 0、1、2… の場合
manipulator.myarm.config_file: arm.conf
または
manipulator.myarm0.config.file: arm0.conf
のように指定可能です。
コマンドラインオプション
スタンドアロンコンポーネントの場合、またはRTC daemon (rtcd) では、コマンドラインにいくつかのオプションを指定することができます。 以下の表に、指定可能なコマンドラインオプションを示します。
hogehogehoge
| オプション | 意味 |
|---|---|
| -a | マネージャサービス OFF |
| -f ファイル名 | 設定ファイルの指定 |
| -o オプション | オプション指定 |
| -p ポート番号 | ポート番号指定 |
| -d | マスターマネージャ指定 |
これらのオプションの詳細な意味をいかに示します。
-a: マネージャサービスOFF
通常、RTCを起動するためには、内部のコンポーネントマネージャがRTCをインスタンス化したり、削除したりします。(ライフサイクルの管理を行う、という) デフォルトではこのマネージャを、リモートから制御できるようにサーバー(サーバント)が起動されるようになっています。 しかし、起動後に、同じプロセスで同じRTCを起動したり、別のRTCのモジュールをロードしてRTCを起動させたり等する必要がない場合には、サーバントは不要なので -a オプションを指定することでサーバントの起動を抑制することもできます。
-f: 設定ファイル指定
-f オプションを利用すると、任意の名前のファイルを rtc.conf の代わりにスタンドアロンコンポーネントやrtcdに与えることができます。
<利用例>
ConsoleInComp -f consin.conf
-o: オプション指定
-o オプションを利用すると、rtc.conf に指定することのできるオプションをコマンドラインから与えることができます。-o オプションで与えたオプションは rtc.conf で指定されたものよりも優先されますので、rtc.conf で指定してあるオプションを一時的に上書きして変更したい場合などは、-oオプションを利用すると便利です。 ただし、コマンドラインオプションとして渡すので、空白は引数の切れ目として認識されますので、指定する際には空白を入れないか、シングルクォーテーションかダブルクォーテーションで囲むなどする必要があります。
<利用例>
ConsoleInComp -o corba.nameservers:localhost,openrtm.org
ConsoleInComp -o "corba.nameservers:localhost, openrtm.org"
<正しく認識されない例>
ConsoleInComp -o corba.nameservers:localhost, openrtm.org
'',(カンマ)''の後に空白があるため、openrtm.org が別の引数として認識される。
-p: ポート番号指定
-p を利用すると、起動するRTCが利用するポート番号を指定することができます。 RTC起動時に特定のポート番号で起動したい場合には、このオプションを利用するとよいでしょう。 このオプションは corba.endpoints: オプションでホスト名無しで、ポート番号のみを指定するのと同じふるまいをします。
<利用例>
ConsoleInComp -p 2810
以下と同じ
ConsoleInComp -o "corba.endpoints: :2810"
-d: マスターマネージャ指定
-d オプションを利用すると、起動したスタンドアロンコンポーネントや rtcd をデーモンモードかつマスターマネージャとして起動することができます。 マネージャにはマスターとスレーブがあり、マスターは通常固定ポート番号 2810 でリクエストを待ち受け、スレーブに対してRTCの起動などを委譲します。 -d オプションを指定して起動すると、ポート番号がデフォルトでは 2810 に固定され、またマネージャのサーバントがマスターモードで起動され、ネームサービスにマネージャの参照が登録されます。