• 検索結果がありません。

NEDO次世代ロボット知能化技術開発プロジェクト

N/A
N/A
Protected

Academic year: 2021

シェア "NEDO次世代ロボット知能化技術開発プロジェクト"

Copied!
31
0
0

読み込み中.... (全文を見る)

全文

(1)

NEDO 次世代ロボット知能化技術開発プロジェクト

ロボット用スクリプトエンジン

モジュールマニュアル

1.0 版

九州工業大学

株式会社セック

(2)

改版履歴

版数 改版日 改版内容 備考

1.0 2012/02/29 初版作成

(3)

目次 1 総則 ... 1 1.1. 目的 ...1 1.2. 適用範囲 ...1 1.3. 関連文書等 ...1 1.3.1. 適用文書...1 1.3.2. 関連文書...1 1.3.3. 参考文書...1 1.4. 定義 ...2 1.4.1. 用語...2 1.4.2. 座標系...2 2 コンポーネント構成... 3 2.1. コンポーネント概要 ...3 2.2. 動作環境 ...3 2.3. ハードウェア仕様...4 2.4. 利用ソフトウェア仕様...4 3 コンポーネント仕様... 5 3.1. コンポーネント一覧 ...5 3.2. データ型一覧...5 3.3. コンポーネント仕様(SDLENGINE)...5 3.3.1. 基本情報...5 3.3.2. アクティビティ...6 3.3.3. インタフェース仕様...7 4 取扱手順 ...11 4.1. 環境構築 ... 11 4.1.1. インストール準備... 11 4.1.2. インストール... 13 4.2. 設定・カスタマイズ手順 ... 14 4.3. 起動・終了手順 ... 16 5 制限事項 ...21 6 付録 ...22 6.1. メッセージ一覧 ... 22 -ii-

(4)

6.1.1. メッセージ一覧(SDLEngine)... 22 6.1.2. メッセージ一覧(ConsoleIn) ... 23 6.1.3. メッセージ一覧(ConsoleIn2) ... 24 6.1.4. メッセージ一覧(ConsoleOut)... 25 6.2. トラブルシューティング ... 26 -iii-

(5)

-iv- 表目次 表 1-1 関連文書一覧 ...1 表 1-2 参考文書一覧 ...1 表 1-3 ロボット用スクリプトエンジン 用語一覧...2 表 2-1 動作環境 ...3 表 2-2 動作に必要なソフトウェア...4 表 2-3 インストールされていることが望ましいソフトウェア...4 表 3-1 コンポーネント一覧 ...5 表 3-2 SDLEngineコンポーネントプロファイル...5 表 3-3 アクティビティ一覧 ...6 表 3-4 rtc.conf設定項目... 10 表 4-1 JDKのダウンロードURL ... 11 表 4-2 環境変数の設定項目(JDK関連)... 11 表 4-3 OpenRTM-aist-Java 1.0.0-RELEASEのダウンロードURL ... 12

表 4-4 OpenRTM Eclipse tools 1.0-RELEASEのダウンロードURL ... 12

表 4-5 ANTのURL ... 13 表 4-6 環境変数の設定項目(ANT関連) ... 13 表 4-7 SDLEngineのダウンロードURL... 13 表 4-8 rtc.envオブジェクトの主要メソッド... 17 表 4-9 rtc.local_componentオブジェクトの主要メソッド ... 18 図目次 図 4-1 SDLEngineコンソール ... 16

(6)

1 総則 1.1. 目的 本書は、作業計画モジュールの利用方法について、記述した文書である。 1.2. 適用範囲 本書は、SDLEngine に対して適用する。 1.3. 関連文書等 本書の適用文書、関連文書、参考文書について記述する。 1.3.1. 適用文書 なし 1.3.2. 関連文書 本書の関連文書を表 1-2に示す。 表 1-1 関連文書一覧 No 文書名 版数 発行元 1 次世代ロボット知能化技術開発プロジェクト 施設内生活支援ロボット知能の研究開発 作業計画モジュール( S D L E n g i n e )マニュアル Ver.3.0 九州工業大学 2 BeanShell サイト (http://www.beanshell.org) - Pat Niemeyer 1.3.3. 参考文書 本書の参考文書を表 1-2に示す。 表 1-2 参考文書一覧 No 文書名 版数 発行元

1 【Web】OpenRTM –aist Webサイト

(http://www.openrtm.org/openrtm/ja/content/ openrtm-aist-official-website)

- 独立行政法人産業技術総合研究所

(7)

1.4. 定義 1.4.1. 用語 表 1-3 ロボット用スクリプトエンジン 用語一覧 No 用語 説明 1 RTM RT ミドルウェア 2 RTC RT コンポーネント 3 アクティビティ RTC のロジック 4 コンフィギュレーション 設定 1.4.2. 座標系 ロボット用スクリプトエンジンモジュールで使用する座標系はない。 1.5. ライセンス 本書は、クリエイティブ・コモンズ 表示 2.1 ライセンス (http://creativecommons.org/licenses/by-sa/2.1/jp/)の下に提供される。 -2-

(8)

2 コンポーネント構成 2.1. コンポーネント概要 ロボット用スクリプトエンジンモジュール は、様々な RTC と接続して作業計画のアプリケ ーションを実行するためのモジュールである。Java のインタプリタである BeanShell を組み 込んでおり、Java 及びそのインタプリタであるスクリプトを用いてアプリケーションを記述す ることができる。 2.2. 動作環境 作業対象認識モジュールの動作環境を表 2-1に記述する。 表 2-1 動作環境

Windows Windows XP professional 32bit Windows Vista Business 32bit/64bit

Windows 7 Professional/Enterprise 32bit/64bit Linux Ubuntu

(9)

2.3. ハードウェア仕様 ロボット用スクリプトエンジンモジュールは、特定のハードウェアに対応するものではない。 2.4. 利用ソフトウェア仕様 ロボット用スクリプトエンジンモジュールの動作に必要なソフトウェアを表 2-2に記す。また、 本モジュールでは使用していないが、インストールされていることが望ましいソフトウェアを表 2-3に記す。 表 2-2 動作に必要なソフトウェア 名称/バージョン 説明 参考URL

Java Deveroper Kit (JDK) /1.6.0_23 (32bit 版) プログラミング言語。Eclipse の動作に必要。 http://java.sun.com/javase/ja/6/download. html OpenRTM-aist-Java/ 1.0.0-RELEASE RT ミドルウェア本体(Java) http://www.openrtm.org/openrtm/ja

OpenRTM Eclipse tools / 1.0-RELEASE RT コンポーネントを扱う RTCBuilder および RTSystemEditor が組み込ま れたEclipse 統合開発環境 http://www.openrtm.org/openrtm/ja/conte nt/openrtm-eclipse-tools-10-release#toc0

Apache Ant 1.8.2 SDLEngine のビルドを行う。 環境変数「ANT_HOME」を 設定し、環境年数「PATH」に %ANT_HOME%¥bin;を追加 すること。 http://ant.apache.org/ 表 2-3 インストールされていることが望ましいソフトウェア 名称/バージョン 説明 参考URL OpenRTM-aist_C++/ 1.0.0-RELEASE RT ミドルウェア本体(C++/ VC++) http://www.openrtm.org/openrtm/ja

Microsoft Visual Studio 2008 Professional Edition

C++/VC++のビルドを行う。 http://www.microsoft.com/japan/msdn/vst udio/2008/product/overview.aspx

OpenCV 1.0 画像処理ソフトウェア http://opencv.jp/

Python-2.6.4 プログラミング言語 http://www.python.jp/

PyYAML-3.0.9 Python の YAML ライブラリ です。

http://pyyaml.org/wiki/PyYAML

(10)

3 コンポーネント仕様 3.1. コンポーネント一覧 ロボット用スクリプトエンジンモジュールの一覧を表 3-1に記述する。本モジュールは、作業 計画を実行させる他のRTCとの接続を前提としている。 表 3-1 コンポーネント一覧 No. RTC 名 説明 1 SDLEngine ロボット用スクリプトエンジン 3.2. データ型一覧 ロボット用スクリプトエンジンモジュール固有のデータ型は存在しない。 3.3. コンポーネント仕様(SDLEngine) 3.3.1. 基本情報 表 3-2 SDLEngine コンポーネントプロファイル 種別 RTC 提供元 九州工業大学

動作OS Windows(XP, Vista,7) Ubuntu RT ミドルウェア OpenRTM-aist-1.0.0 (Windows) OpenRTM-aist-1.0.0 (Linux) 開発言語 Java (OpenRTM-aist-1.0.0) 依存ライブラリ なし 実行周期 4.0(Hz) -5-

(11)

3.3.2. アクティビティ 表 3-3 アクティビティ一覧 No. アクション関数名 処理概要 1 onInitialize 以下の処理を行う。 インポートの設定 アウトポートの設定 プロバイダーポートの設定 コンシューマポートの設定 サービスポートの設定 2 onActivated - 3 onExecute 以下の処理を行う。 インポートよりデータを取得する アウトポートへデータを出力する。 コンシューマポートを実行する。 4 onDeactivated - 5 onAborting - 6 onReset 以下の処理を行う。 アウトポートをクリアする。 コンシューマポートをクリアする。 7 onError - 8 onFinalize - 9 onStateUpdate - 10 onRateChanged - 11 onStartup - 12 onShutdown - -6-

(12)

3.3.3. インタフェース仕様

SDLEngine は、様々な RTC との接続を前提としており、インタフェースは buld.xml での定 義に依る。なお、定義に使用する<arg>タグの value 属性は、rtc-template のコマンドライン引 数となる。

(1) データポート

bulid.xml の gen-rtc-sdl-engine ターゲット(<target name="gen-rtc-sdl-engine">)に<arg> タグのvalue 属性の値として、以下を定義する。 ・ インポート :-- inport =[ポート名]:[データ型] ・ アウトポート:-- outport =[ポート名]:[データ型] ※独自データ型のデータポートを定義する場合、IDL ファイル(ファイル名:[当該データ 型].idl)を SDLEngine/main/idl に配置する。 リスト 3-1にデータポートの定義例を示す。 リスト 3-1 データポート定義例

<target name="gen-rtc-sdl-engine" description="Generate SDL Engine RTC code."> ・・・ <!-- ポート名in、データ型 RTC::TImedLongのインポート --> <arg value="--inport=in:RTC::TimedLong" /> <!-- ポート名out、データ型 RTC::TImedLongのアウトポート --> <arg value="--outport=out:RTC::TimedLong" /> <!-- 独自データ型 SDLEngine/main/idl/MyData.idl を定義 --> <!-- ポート名myDatain、データ型 jp::ac::kyutech::SRP::demo::MyDataのインポート --> <arg value="--inport=myDataIn:jp::ac::kyutech::SRP::demo::MyData" /> <!-- ポート名myDataout、データ型 jp::ac::kyutech::SRP::demo::MyDataのアウトポート --> <arg value="--outport=myDataOut:jp::ac::kyutech::SRP::demo::MyData" /> ・・・ </target> -7-

(13)

(2) サービスポート

サービスポートに対応するIDL ファイルを用意し、bulid.xml の gen-rtc-sdl-engine ターゲッ ト(<target name="gen-rtc-sdl-engine">)に<arg>タグの value 属性の値として、以下を定義 する。 ・ プロバイダーポート --service=[ポート名]:[インスタンス名]:[サービス型] --service-idl=[IDL ファイル名] --idl-include=[IDL ファイルパス] ・ コンシューマポート --consumer=[ポート名]:[インスタンス名]:[サービス型] --consumer-idl=[IDL ファイル名] --idl-include=[IDL ファイルパス] リスト 3-1にサービスポートの定義例を示す。 リスト 3-2 サービスポート定義例

<target name="gen-rtc-sdl-engine" description="Generate SDL Engine RTC code."> ・・・ <!-- ポート名MyServiceConsumer、インスタンス名 myservice サービス型 myservice:jp::ac::kyutech::SRP::demo::MyServiceのコンシューマポート --> <arg value="--consumer=MyServiceConsumer:myservice:jp::ac::kyutech::SRP::demo::MyService" /> <!-- コンシューマポートのIDLは SDLEngine/main/idl/MyService.idl --> <arg value="--consumer-idl=${main.idl.dir}/MyService.idl" /> <!-- ポート名SRResultListenerProvider、インスタンス名 RecognitionResult サービス型 RecognitionResult:SRResultListenerのサービスポート --> <arg value="--service=SRResultListenerProvider:RecognitionResult:SRResultListener" /> <!-- サービスポートのIDLは SDLEngine/main/idl/SRResultListener.idl --> <arg value="--service-idl=${main.idl.dir}/SRResultListener.idl" /> <!-- IDLのファイルパスは SDLEngine/main/idl --> <arg value="--idl-include=${main.idl.dir}" /> ・・・ </target> -8-

(14)

(3) 設定ファイル SDLEngine独自の設定ファイルはない。コンポーネントマネージャの設定ファイルである rtc.confのみを使用しており、SDLEngineフォルダにリスト 3-3のrtc.confが用意されている。 本設定項目について、表 3-4に記載する。 その他の設定項目、詳細については、OpenRTM-aistのマニュアルのrtc.conf設定項目一覧を 参照のこと。 リスト 3-3 rtc.conf corba.nameservers: localhost:5005 corba.endpoint: 127.0.0.1: naming.formats: %n.rtc logger.enable: YES logger.log_level: PARANOID exec_cxt.periodic.rate: 10.0 -9-

(15)

表 3-4 rtc.conf 設定項目

No. パラメタ名 説明

1 corba.nameservers ネーミングサーバを指定する。

指定フォーマット:host_name:port_number デフォルトポート:2809(omniORB のデフォルト)

2 corba.endpoint NIC が複数あるとき、ORB をどちらで listen させるかを指定する。 指定フォーマット:IP_Addr:Port(Port を指定しない場合でも、:が必要) 3 naming.formats ネームサーバに登録する際のフォーマットを指定する。 指定子: %n RTC のインスタンス名 %t RTC のタイプ名 %m RTC のモジュール名 %v RTC のバージョン %V RTC のベンダ名 %c RTC のカテゴリ名 %h ホスト名 %M マネージャ名 %p プロセスID 指定フォーマット:<name>.<kind>/<name>.<kind>/... デフォルト値: %h.host_cxt/%n.mgr 4 logger.enable ログ出力の有効(Yes)/無効(No)を指定する。 5 logger.log_level ログレベルを指定する。

SILENT(何も出力しない), ERROR, WARN, NORMAL, INFO, DEBUG, TRACE, VERBOSE, PARANOID(全出力)

6 exec_cxt.periodic.rate 実行コンテキストの周波数[Hz]を 0~1000000.で指定する。 デフォルト値:1000.0

(16)

4 取扱手順 4.1. 環境構築

4.1.1. インストール準備

ロボット用スクリプトエンジンモジュールを動作させるために、以下のソフトウェアパッケー ジをインストールする。

・ Java Deveroper Kit JDK 1.6.0_23 (32bit 版) ・ OpenRTM-aist-Java 1.0.0-RELEASE

・ OpenRTM Eclipse tools 1.0-RELEASE ・ Apache Ant 1.8.2

(1) Java Deveroper Kit (JDK )1.6.0_23 (32bit 版) (a) インストール

JDK ダウンロードページにアクセスし、「JDK ダウンロード」をクリックする。 「Java SE Development Kit 6u23」ブロックにある「Oracle Binary Code License

Agreement for Java SE」と書かれたリンクをクリックするとライセンスが表示される。内容を 確認し、同意できる場合、「Accept License Agreement 」を選択し、「jdk-6u23-windows-i586.exe」 をクリックして、ダウンロード、実行する。 表 4-1 JDK のダウンロード URL ダウンロードページ http://www.oracle.com/technetwork/java/javasebusiness/downloads/jav a-archive-downloads-javase6-419409.html#jdk-6u23-oth-JPR (b) 環境変数の設定 インストール後、表 4-2にある環境変数を設定する。 表 4-2 環境変数の設定項目(JDK関連) 環境変数 設定内容 JAVA_HOME JDK のインストール先 PATH %PATH%;%JAVA_HOME%¥bin; -11-

(17)

(2) OpenRTM-aist-Java 1.0.0-RELEASE (a) インストール 表 4-3のURLよりインストーラをダウンロードし、実行する。インストーラを実行するとウ ィザードが起動するので、ウィザードに従って、インストールする。 表 4-3 OpenRTM-aist-Java 1.0.0-RELEASEのダウンロードURL ダウンロードページ http://www.openrtm.org/openrtm/ja/node/933 ダウンロードファイル http://www.openrtm.org/pub/Windows/OpenRTM-aist/java/OpenRTM-aist-Java-1.0.0.msi

(3) OpenRTM Eclipse tools 1.0-RELEASE (a) インストール

表 4-4のURLよりファイルをダウンロードし、展開する。展開するとeclipsというディレクト リができる。

表 4-4 OpenRTM Eclipse tools 1.0-RELEASEのダウンロードURL

ダウンロードページ http://www.openrtm.org/openrtm/ja/content/openrtm-eclipse-tools-10-r elease#toc0 ダウンロードファイル http://www.openrtm.org/pub/OpenRTM-aist/tools/1.0.0/eclipse342_rtm tools100release_win32_ja.zip (4) Apache Ant 1.8.2 (a) インストール のURL にアクセスし、左側メニューの中の「Download」ブロックの中にある「Binary Distributions」と書かれたリンクをクリックする。 -12-

(18)

ページ中段付近の「Current Release of Ant」と書かれたブロックにある

「apache-ant-1.8.0-bin.zip」と書かれたリンクをクリックし、ダウンロードを行う。 ダウンロ ードしたファイルを展開する。展開すると「apache―ant-1.8.2」というディレクトリができる。

表 4-5 ANT の URL

Apache ANT http://ant.apache.org/

(b) 環境変数の設定 インストール後、表 4-2にある環境変数を設定する。 表 4-6 環境変数の設定項目(ANT関連) 環境変数 設定内容 ANT_HOME ANT のインストール先 PATH %PATH%;%ANT_HOME%¥bin; 4.1.2. インストール (1) インストール 表 4-7のRTC 再利用センターへアクセスし、登録されているzip ファイルをダウンロードし、 以下の手順でeclipse にプロジェクトをインポートする。 1. SDLEngine.3.0.zip を展開する。 2. eclipse を起動する。 3. Java パースペクティブにする。 4. ファイルメニューの「新規」から「Java プロジェクト」を選択し、プロジェクト名を SRPCommon として作成する。 5. ファイルメニューから「インポート」を選択し、「一般」の「ファイル・システム」を 選ぶ。 6. 次に進み、「参照」で SDLEngine.3.0 の中の SRPCommon を選択する。 7. 「プロジェクトをワークスペースにコピー」を選択し、その後「終了」を選択する。 8. SDLEngine も 4.~7.の手順でインポートする。

9. SDLEngine 以下に lib と rtc/java のディレクトリを作成する。

表 4-7 SDLEngineのダウンロードURL

ダウンロードページ http://www.openrtp.jp/reuse_web/comp_detail.php

(19)

-14- (2) ビルド Eclipse あるいは Ant を用いて、ビルドを実行する。 (a) Eclipseによるビルド Eclipse 上でビルドを実行する。「自動的にビルド」が有効になっていれば、特に行うことは ない。ビルド後に問題が発生していなければ、ビルドは完了である。 (b) Antによるビルド ビルドファイルであるSDLEngine/build.xml 中の compile ターゲットを起動する。 4.2. 設定・カスタマイズ手順 (1) 設定 「3.3.3(3) 設定ファイル」を参照のこと。 (2) カスタマイズ build.xml にて、インタフェースのカスタマイズおよび SDLEngine と同じ VM 上で動作する コンポーネントの作成等を実施することができる。 インタフェースのカスタマイズに関しては、「3.3.3 インタフェース仕様」を参照のこと。 コンポーネントを作成する場合は、<target>を追加し、build.xmlのrtc.all ターゲットに追加 したターゲットを追加する。その後、Ant の clean ターゲットと rtc.compile ターゲットを起 動する。(リスト 4-3)

$ ant clean rtc.compileリスト 4-1にbuild.xmlの定義例を、リスト 4-2にbuild.xmlの例を記載 する。

リスト 4-1 追加RTC定義例

<target name="gen-rtc-myservice-blank-provider" description="MyService Blank Provider ."> <java classname="jp.go.aist.rtm.rtctemplate.CuiRtcTemplate" fork="true" failonerror="true"> <classpath refid="libs.path" /> <classpath refid="libs.rtctemplate.sdl.path" /> <!-- RTCのソース言語(JAVA固定) --> <arg value="--backend=java" /> <!-- RTCのソースファイル出力先 --> <arg value="--output=${rtc.java.dir}" /> <!-- RTC名称 --> <arg value="--module-name=MyServiceBlankProvider" /> <!-- RTCの説明 -->

<arg value="--module-desc='MyService Blank Provider'" /> <!-- RTCの開発元 -->

<arg value="--module-vender='Kyushu Institute of Technology'" /> <!-- RTCのカテゴリー -->

(20)

-15- <arg value="--module-category=example" /> <!-- RTCのコンポーネントタイプ --> <arg value="--module-comp-type=DataFlowComponent" /> <!-- RTCのアクティビティタイプ --> <arg value="--module-act-type=SPORADIC" /> <!-- RTCの最大インスタンス数 --> <arg value="--module-max-inst=1" /> <!-- ポート名MyServiceBlankProvider、インスタンス名 myservice サービス型 myservice:jp::ac::kyutech::SRP::demo::MyServiceのサービスポート -->

<arg value="--service=MyServiceBlankProvider:myservice:jp::ac::kyutech::SRP::demo::MyS ervice" /> <!-- IDLは SDLEngine/main/idl/MyService.idl --> <arg value="--service-idl=${main.idl.dir}/MyService.idl" /> </java> </target> リスト 4-2 build.xml 定義例

<target name="rtc.all" description="Generate RTComponents code."> ・・・

<!-- Append rtc generation target -->

<antcall target="gen-rtc-sdl-engine" />

<antcall target="gen-rtc-myservice-blank-provider" />

<!-- Append rtc generation target -->

・・・ </target>

リスト 4-3 Ant の clean ターゲットと rtc.compile ターゲットの起動

(21)

4.3. 起動・終了手順 ロボット用スクリプトエンジンモジュールの起動、終了方法について記述する。 (1) 起動 あらかじめCORBA のネーミングサービスを起動しておく。 SDLEngine/rtc.conf のネームサーバの指定を確認したうえで、以下のいずれかの方法で起動 する。 ・ SDLEngine/build.xml 中の run-console ターゲットを起動する ・ Eclipse より jp.ac.kyutech.SRP.Console クラスを起動する

・ Ant を利用した bat ファイル(SDLEngine/doc/SDLEngine.bat)を起動する 正常に起動するとSDLEngine のコンソールウィンドウが表示される。 図 4-1 SDLEngine コンソール (2) 終了 SDLEngineコンソール上でリスト 4-4を入力するか、コンソールウィンドウの終了ボタン ( )を押下する。 リスト 4-4 SDLEngine の終了 bsh% exit(); -16-

(22)

(3) SDLEngineスクリプト SDLEngine スクリプトは BeanShell を基盤とする。主に以下の機能を有する。 ・ Java1.4 に準拠したインタプリタ ・ 既存のJava クラスのインスタンス化と実行 ・ BeanShell で用意された関数群の利用 (a) RTC操作オブジェクト RTC を操作するにあたって重要となるオブジェクトについて説明する。 ① rtc.envオブジェクト RTCオブジェクト群を操作するために、必要な情報を保持し、便利なメソッドを提供する Bsh Objectである。表 4-8に主なメソッドや変数を、リスト 4-5に使用例を記載する。 表 4-8 rtc.envオブジェクトの主要メソッド No メソッド/変数 説明 1 コンストラクタ ネーミングサーバのホスト名とポート番号を引数で指定するこ と。 2 get_names() ネーミングサーバに接続されている全オブジェクト名を取得す る。 3 get_handles() ネーミングサーバに接続されているオブジェクトのハンドルを 取得する。connect()メソッドや handles 変数を使用する前に呼 び出すこと。 4 connect() 引数で指定された2つのポートを接続する。 5 handles 変数 RTC の名前をキーに rtc.handle オブジェクトを保持する。 RtcLink、RTSystemEditor などで表示されるコンポーネントの インスタンス名を名前として指定すること。 リスト 4-5 rtc.env 使用例 // ネーミングサーバ指定

env = rtc.env("localhost", 5005);

// SDLEngine をローカルオブジェクトとして起動

sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");

// ネーミングサーバに登録されているオブジェクトのハンドラを取得 handles = env.get_handles(); // SDLEngine をActivate env.handles{"SDLEngine0.rtc"}.activate(); ② rtc. local_componentオブジェクト SDLEngine と同じJVM 上(ローカル)で動作するRTC オブジェクトを操作するために、ラッ ピ ン グ す る Bsh Object で あ る 。 RTC オ ブ ジ ェ ク ト と 一 対 一 と な る 。 表 4-9 rtc.local_componentオブジェクトの主要メソッドに主なメソッドや変数を、リスト 4-6に使 -17-

(23)

用例を記載する。 表 4-9 rtc.local_componentオブジェクトの主要メソッド No メソッド/変数 説明 1 コンストラクタ RTC の名前とクラス名を引数で指定すること。 2 get_ports() ポートオブジェクトのリストを取得する。 3 local_ports 変数 ポートを操作するためのオブジェクトを、名前をキーにして保持 する。これにより、各ポートに対応するRTC の Java メソッド をSDLEngine スクリプトから直接起動できる。 リスト 4-6 rtc.local_component 使用例 // ネーミングサーバ指定 env = rtc.env("localhost", 5005); // SDLEngineをローカルオブジェクトとして起動

sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");

// ネーミングサーバに登録されているオブジェクトのハンドラを取得 handles = env.get_handles(); // vehicleService ポートに対応するRTC オブジェクトのsetServo メソッドを起動 sdlEngine.local_ports{"vehicleService"}.setServo(true); (b) サンプル ① サービスポートの操作 リスト 4-7に以下の処理を行うスクリプトの例を記載する。 1.RT コンポーネントを 2 つ作成する。

2.SDLEngine のから MyServiceBlankProvider に対して、echo("hello world") のメッセージ を送信する。

3.MyServiceBlankProvider がコンソールに受信した文字を出力する。

Method: echo invoked: [hello world]

リスト 4-7 サービスポート利用例

// ネーミングサーバ指定

env = rtc.env("localhost", 5005);

// MyServiceBlankProvider をローカルオブジェクトとして起動

myServiceProvider = rtc.local_component("MyServiceBlankProvider", "MyServiceBlankProvider");

// SDLEngineをローカルオブジェクトとして起動

sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");

// ネーミングサーバに登録されているオブジェクトのハンドラを取得 handles = env.get_handles(); // myServiceBlankProviderのポートとSDLEngineのポートを接続 env.connect(env.handles{"MyServiceBlankProvider0.rtc"}.ports {"MyServiceBlankProvider0.MyServiceBlankProvider"}, -18-

(24)

env.handles{"SDLEngine0.rtc"}.ports{"SDLEngine0.MyServiceConsumer"}); // MyServiceBlankProviderをActivate env.handles{"MyServiceBlankProvider0.rtc"}.activate(); // SDLEngineをActivate env.handles{"SDLEngine0.rtc"}.activate(); // myServiceProvider に対し、myservice に対応するリスナーを設定 myServiceProvider.local_ports{"myservice"}.addListener (new jp.ac.kyutech.SRP.Scripting.ProviderListener() { invoke(name, args) {

print("Method:" + name + "invoked:" + java.util.Arrays.asList(args)); }

});

// SDLEngine のmyservie にあるecho(“hello world”)を起動

print(sdlEngine.local_ports{"myservice"}.echo("hello world")); ② データポートの操作 リスト 4-8に以下の処理を行うスクリプトの例をリスト 4-9からリスト 4-12に実行例を記 載する。 1.RT コンポーネントを 2 つ作成する。 2.SDLConsoleIn にて、コンソールから受け付けた入力内容を SDLEngine に対して、送信 する。 3.SDLEngine が受信した内容をコンソールに出力する。 リスト 4-8 データポート利用例 // ネーミングサーバ指定 env = rtc.env("localhost", 5005); // SDLEngineをローカルオブジェクトとして起動

sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");

// コンソールから入力を受け付けるローカルコンポーネントを起動

sdlConsoleIn = rtc.local_component("SDLConsoleIn", "SDLConsoleIn");

// ネーミングサーバに登録されているオブジェクトのハンドラを取得 handles = env.get_handles(); // SDLEngineのin ポートとSDLConsoleInのout ポートを接続 env.connect(env.handles{"SDLEngine0.rtc"}.ports{"SDLEngine0.in"}, env.handles{"SDLConsoleIn0.rtc"}.ports{"SDLConsoleIn0.out"}); // SDLEngineをActivate env.handles{"SDLEngine0.rtc"}.activate(); // SDLConsoleInをActivate env.handles{"SDLConsoleIn0.rtc"}.activate(); // sdlEngine のin ポートに対応するリスナーを設定 sdlEngine.local_ports{"SDLEngine0.in"}.addListener (new jp.ac.kyutech.SRP.Scripting.InPortListener() { dataReceived(event) { value = event.getValue(); print("Received:"+value.data+"("+value.tm.sec+","+value.tm.nsec+")"); } }); -19-

(25)

リスト 4-9 実行例1(入力例) sdlConsoleIn.local_ports{" SDLConsoleIn0.out"}.put(1); リスト 4-10 実行例1(表示例) Received: 1 (1295249314, 3400000000) リスト 4-11 実行例2(入力例) // 時刻指定をして送信

sdlConsoleIn.local_ports{"SDLConsoleIn0.out"}.put(1, new RTC.Time(1234,0));

リスト 4-12 実行例2(表示例) Received: 1 (1234, 0) ③ 既存のRTCを利用した操作 リスト 4-8では、ローカルのコンポーネントを利用したが、サンプルとして提供されている ConsoleInと接続し、動作させることも可能である。先にConsoleInを起動しておき、リスト 4-13のスクリプトを実行する。ConsoleInのコンソール画面より数値を入力するとSDLEngine コンソール上に入力された数値が表示される。 リスト 4-13 データポート利用例 // ネーミングサーバ指定 env = rtc.env("localhost", 5005); // SDLEngineをローカルオブジェクトとして起動

sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");

// コンソールから入力を受け付けるローカルコンポーネントを起動

sdlConsoleIn = rtc.local_component("SDLConsoleIn", "SDLConsoleIn");

// ネーミングサーバに登録されているオブジェクトのハンドラを取得

handles = env.get_handles();

// SDLEngineのin ポートとConsoleInのout ポートを接続

env.connect(env.handles{"SDLEngine0.rtc"}.ports{"SDLEngine0.in"}, env.handles{"ConsoleIn0.rtc"}.ports{"ConsoleIn0.out"});

// SDLEngineをActivate

env.handles{"SDLEngine0.rtc"}.activate();

// ConsoleInをActivate

env.handles{"ConsoleIn0.rtc"}.activate();

// sdlEngine のin ポートに対応するリスナーを設定 sdlEngine.local_ports{"SDLEngine0.in"}.addListener (new jp.ac.kyutech.SRP.Scripting.InPortListener() { dataReceived(event) { value = event.getValue(); print("Received:"+value.data); } }); -20-

(26)

5 制限事項 特になし。

(27)

6 付録 6.1. メッセージ一覧 6.1.1. メッセージ一覧(SDLEngine) No. レベル メッセージ 説明 1 info Initialized: instance=[インスタンス名], type=[サービス型名] 初期化処理を行った際に出力する。

2 trace Execute inPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、インポ ートよりデータを取得した際に出力す る。

3 error Failure inport onExecute: instance=[インスタンス名], type=[サービス型名]

インポートからのデータ取得でエラー が発生した場合、出力する。

4 trace Execute outPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、アウト ポートへデータを出力した際に出力す る。

5 error Failure outport onExecute: instance=[インスタンス名], type=[サービス型名]

アウトポートへのデータ出力でエラー が発生した場合、出力する。

6 trace Execute consumerSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、コンシ ュ ー マ ポ ートを 実 行 し た際に 出 力 す る。

7 error Failure consumer onExecute: instance=[インスタンス名], type=[サービス型名]

コンシューマポートの実行でエラーが 発生した場合、出力する。

8 warn ReturnCode is null:

instance=[インスタンス名], type=[サービス型名]

コ ン シ ュ ー マ ポ ー ト の 実 行 結 果 が NULL の場合、出力する。

9 info Reset the outportSupport: instance=[インスタンス名], type=[サービス型名]

アウトポートをリセットした際に出力 する。

10 info Reset the consumerSupport: instance=[インスタンス名], type=[サービス型名]

コンシューマポートをリセットした際 に出力する。

(28)

6.1.2. メッセージ一覧(ConsoleIn) No. レベル メッセージ 説明 1 info Initialized: instance=[インスタンス名], type=[サービス型名] 初期化処理を行った際に出力する。

2 trace Execute inPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、インポ ートよりデータを取得した際に出力す る。

3 error Failure inport onExecute: instance=[インスタンス名], type=[サービス型名]

インポートからのデータ取得でエラー が発生した場合、出力する。

4 trace Execute outPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、アウト ポートへデータを出力した際に出力す る。

5 error Failure outport onExecute: instance=[インスタンス名], type=[サービス型名]

アウトポートへのデータ出力でエラー が発生した場合、出力する。

6 trace Execute consumerSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、コンシ ュ ー マ ポ ートを 実 行 し た際に 出 力 す る。

7 error Failure consumer onExecute: instance=[インスタンス名], type=[サービス型名]

コンシューマポートの実行でエラーが 発生した場合、出力する。

8 warn ReturnCode is null:

instance=[インスタンス名], type=[サービス型名]

コ ン シ ュ ー マ ポ ー ト の 実 行 結 果 が NULL の場合、出力する。

9 info Reset the outportSupport: instance=[インスタンス名], type=[サービス型名]

アウトポートをリセットした際に出力 する。

10 info Reset the consumerSupport: instance=[インスタンス名], type=[サービス型名]

コンシューマポートをリセットした際 に出力する。

(29)

6.1.3. メッセージ一覧(ConsoleIn2) No. レベル メッセージ 説明 1 info Initialized: instance=[インスタンス名], type=[サービス型名] 初期化処理を行った際に出力する。

2 trace Execute inPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、インポ ートよりデータを取得した際に出力す る。

3 error Failure inport onExecute: instance=[インスタンス名], type=[サービス型名]

インポートからのデータ取得でエラー が発生した場合、出力する。

4 trace Execute outPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、アウト ポートへデータを出力した際に出力す る。

5 error Failure outport onExecute: instance=[インスタンス名], type=[サービス型名]

アウトポートへのデータ出力でエラー が発生した場合、出力する。

6 trace Execute consumerSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、コンシ ュ ー マ ポ ートを 実 行 し た際に 出 力 す る。

7 error Failure consumer onExecute: instance=[インスタンス名], type=[サービス型名]

コンシューマポートの実行でエラーが 発生した場合、出力する。

8 warn ReturnCode is null:

instance=[インスタンス名], type=[サービス型名]

コ ン シ ュ ー マ ポ ー ト の 実 行 結 果 が NULL の場合、出力する。

9 info Reset the outportSupport: instance=[インスタンス名], type=[サービス型名]

アウトポートをリセットした際に出力 する。

10 info Reset the consumerSupport: instance=[インスタンス名], type=[サービス型名]

コンシューマポートをリセットした際 に出力する。

(30)

6.1.4. メッセージ一覧(ConsoleOut) No. レベル メッセージ 説明 1 info Initialized: instance=[インスタンス名], type=[サービス型名] 初期化処理を行った際に出力する。

2 trace Execute inPortSupport: instance=[インスタンス名], returnCode=[戻り値]

トレース指示がある場合のみ、インポ ートよりデータを取得した際に出力す る。

3 error Failure inport onExecute: instance=[インスタンス名], type=[サービス型名]

インポートからのデータ取得でエラー が発生した場合、出力する。

(31)

-26- 6.2. トラブルシューティング (1) ビルドエラー 以下を確認し、誤りがあった場合、正しく設定する。 ・ コンパイラー準拠レベルが1.5 に設定されているか。 ・ JAVA_HOME にインストールされている JDK が正しく設定されているか。 ・ JAVA_HOME/bin にパスが設定されているか。 SDLEngine/build.xml 中の clean ターゲットを実行してから再度ビルドしてみる。 (2) 起動エラー 以下を確認し、誤りがあった場合、正しく設定する。 ・ JAVA_HOME にインストールされている JDK が正しく設定されているか。 ・ JAVA_HOME/bin にパスが設定されているか。 ・ Eclipse のデフォルト JavaVM が JDK になっているか。

表 3-4  rtc.conf 設定項目
表  4-4  OpenRTM Eclipse tools 1.0-RELEASEのダウンロードURL

参照

関連したドキュメント

耐震性及び津波対策 作業性を確保するうえで必要な耐震機能を有するとともに,津波の遡上高さを

基準の電力は,原則として次のいずれかを基準として決定するも

更に、このカテゴリーには、グラフィックタブレットと類似した機能を

 大都市の責務として、ゼロエミッション東京を実現するためには、使用するエネルギーを可能な限り最小化するととも

 大都市の責務として、ゼロエミッション東京を実現するためには、使用するエネルギーを可能な限り最小化するととも

基準の電力は,原則として次のいずれかを基準として各時間帯別

こうした状況を踏まえ、森林の有する多面的機能を維持・増進し、健全な森林を次世代に引き

(3)市街地再開発事業の施行区域は狭小であるため、にぎわいの拠点