セック ロボットサイト - rtcdを利用する

rtcdを利用する

rtcdはOpenRTM-aistに付属しているツールです。 設定ファイルrtc.confにRTC名を指定することで、任意のRTCを起動できます。

ここでは、PyRTSeamで作成したRTCをrtcdで起動するための方法を説明します。

1. ソースコードの修正

rtcdでRTCを起動するためには、RTCのソースコード中に特別な処理を書き加える必要があります。 “Hello,world”を標準出力に繰り返し出力するだけのRTCの場合、次のようにします:

import rtseam.openrtm

PROFILE = rtseam.Profile(name="HelloWorld")

def print_hello_world():
    print "Hello,world"

rtseam.openrtm.define_function_for_rtcd(PROFILE, print_hello_world)

if __name__ == "__main__":
    rtseam.openrtm.run(PROFILE, print_hello_world)

rtcdは、RTCのソースコードが記述されたモジュールをインポートし、 モジュール内に定義されている特別な関数を呼び出すことでRTCを起動します。

PyRTSeamが提供するrtseam.openrtm.define_function_for_rtcd関数を呼び出すと、 rtcdが必要とする特別な関数が自動で定義され、rtcdからRTCが起動できるようになります。

また、rtcdがRTCのモジュールをインポートした際、rtseam.openrtm.run関数が 呼び出されてはなりません。そのため、__name__ == “__main__” の場合のみ rtseam.openrtm.run関数を呼び出すようにします。

2. rtc.confの設定

rtcdでRTCを起動する場合、設定ファイルrtc.confに対象のRTCを指定します。 “HelloWorld”という名前のRTCのソースコードhello_world.py がカレントディレクトリにある場合、rtc.confには次の設定を記述します:

manager.modules.load_path: ./
manager.modules.preload: hello_world.py
manager.components.precreate: HelloWorld

3. PYTHONPATHの設定

rtcdはRTCのモジュールをインポートするため、モジュールの検索パスに RTCのモジュールが格納されているディレクトリが含まれていなければなりません。 rtcdを起動する前に、環境変数PYTHONPATHに、RTCのモジュールが格納されている ディレクトリを追加しておきます。

4. rtcdの実行

設定ファイルrtc.confが格納されているディレクトリでrtcdを実行します:

$ rtcd_python