機器組み込み型汎用制御エージェントの実装に関する研究

9810083戸川 智史
指導教官 高田 昌之 助教授

1.まえがき

制御装置の動作パターンを状況に応じて動的に変化させ、自律動作させる場合、 機器側エージェントは状況判断エージェントから出される様々な命令を解析・評価し、 実行する必要がある。

本研究では、汎用制御エージェントを設計し、 実際に組み込み用CPUボード上に実装することで、 その機能や性能について考察を行う。

2.システム構成

システム構成を図1に示す。 機器制御エージェントは、インタープリタになっており、 状況に応じて外部から制御動作を変更できる。 内部では状態変数を扱うことが可能である。 プログラム変更は、Trigger条件が成立した際に行われる。 この機構により、機器制御エージェントの制御動作に同期して プログラム変更を行うことができる。

実装には、Motorolla社製DoragonBallVZ-33MHz、RAM-8MBなどを備えた μCdimmと呼ばれる小型CPUボードとμClinuxOSを使用した。


図1:機器組み込み型汎用エージェントシステムの構成

3.性能評価

インタープリタの性能を調べるために、機能に差を持たせた5種類のインタープリタと 2種類のプログラムを用意し、これらの各組み合わせにおける実行時間を 計測した。計測結果を表1に示す。


Program1 Program2
A(フルスペック) 36.73s 61.36s
B(A − WHILE文) 37.00s 61.11s
C(B − 標準関数) 37.19s 61.31s
D(C − ユーザ定義関数) 36.71s 59.40s
E(D − GlueLogic変数入力) 29.33s 52.81s
D − E(GlueLogic変数処理時間) 7.39s 6.59s
表1:実行時間(10回平均)

インタプリタによっては、同じプログラムでも約1.2倍の時間がかかっている。 また、2種類のプログラムは約1.5倍の時間の違いがみられた。 ただし、インタプリタA,B,Cのデータは、インタプリタ機能の大きさと速度が 逆転しているところがある。 これは、ネットワーク環境による影響が出ているものだと考えられる。

この結果より、インタプリタの各機能が処理に要する時間が分かる。 インタプリタDとインタプリタEの違いは、GlueLogic変数の入力処理機能だけで あるから、この実行時間の差は、GlueLogic変数からの入力を処理する時間になる。

4.考察

Triggerによるプログラム変更について

機器制御エージェントがプログラムを実行中でも、 スムーズにプログラムの変更が行えるようになった。 実験からも分かる通り、GlueLogicとの通信は比較的時間がかかるため、 通信を行わずに機器制御エージェント内部でタイミングを判断するのは重要である。 Trigger定義にGlueLogic変数を組み込んだ場合は、外部の情報をもとに判断することも できる。この機構により、GlueLogic上の情報を利用しながら、汎用制御エージェントが 主導権を持ってプログラム変更が可能になった。

インタプリタの実行速度について

インタプリタの実行速度はあまり速くないが、 これは不要な機能が実装されていたり、処理の効率が悪いことが原因であり、 改良の余地がある。 変数名は任意の文字列が使えるが、変数名を固定しても問題ない。

その他の改善策として、比較的時間がかかる通信処理を改良したり、 プログラムをインタプリタが理解できる中間コードにて処理することで 実行速度の向上が見込まれる。

実行速度の保証について

現在の実装では、最高8Hz程度で出力ポートを書き換えることが可能だが、 プログラムの大きさによって実行速度が変わってしまう。 実行速度を段階的にいくつか設定し、プログラムの大きさにより速度を選択するなどの 方法で一定の速度を保証し、上位エージェントが動作を予想できる仕組みが 必要である。

5.あとがき

本研究では、組み込みコンピュータに汎用制御エージェントを実装し、 以下の機能を実現した。

インタプリタは外部から渡したプログラムに従い、入出力ポートの制御が 可能になった。 また、Trigger定義により、制御動作に同期したプログラム変更を実現した。 GlueLogicデータベースと連携することで、他のエージェントと協調動作が 可能になった。

今後の課題


togawa@tl.cc.uec.ac.jp