前年度実施したKL1による協調ロボットプログラミング、マルチエージェント システムを整理し、さらにJavaによるリモートモニタリング、帰納学習による プランの最適化を新たに導入し、図- 1のようなシステムに統合化した。
KL1によるロボットの協調作業は、次のような記述が基本となる。
[ Action + Communication_Channels + Robot_Name ]
これは、 Robot_Nameが Communication_Channelsを通して、 Actionを実行することを意味する。簡単な記述例を示す。
main | :- | robot:connect("machine1",18301,18302) +Robot1, | % Robot1に接続 |
robot:connect("machine2",14401,14402) +Robot2, | % Robot2に接続 | ||
pickup(250,250,0) +ok +C1 +Robot1, | % pickup (Robot1) | ||
release(250,250,0) +C1 +C2 +Robot1, | % release (Robot1) | ||
pickup(250,250,0) +ok +C3 +Robot2, | % pickup (Robot2) | ||
release(250,250,0) +C3 +C4 +Robot2. | % release (Robot2) |
これは、Robot1とRobot2に接続し(robot:connect)、それぞれのロボットがオ ペレータpickupとreleaseを実行することを意味する。それぞれのオペレータ において、通信チャネルを2つ使用しているが、はじめの通信チャネルが ``ok''に具体化されると、オペレータが実行され、終了すると2番めの通信チャ ネルが``ok''で具体化される。内部処理において、robot:connectにおける変 数Robot1、Robot2は、それぞれのロボットのコマンドリストを意味する。 ``merge''を用い、このコマンドリストに実行可能になったコマンドを入れる ことで、ロボットに作業させることが可能となっている。
このようなKL1の機能を利用することによって、様々な協調作業が実現できる。 図-2はその様子を示したものである。
本ロボット言語は、主に実行制御モジュール・環境監視モジュール・計画作成 モジュールの3つのモジュールから構成される。実行制御モジュールはロボッ トに接続し、ロボットを制御する。環境監視モジュールは作業環境を把握し、 その情報をそれぞれのロボットに送る。また計画作成モジュールでは、ロボッ ト間通信等の制御を行なう。
本システムの基で、マルチロボットの作業がどの程度並列化されるかを実験し た結果、図-3のような並列度になり、 KL1の並列性が生かされていることを確認した。
遠隔地からロボットを管理するための、ロボット動作及び環境情報を確認でき る、リモートモニタリングシステムをJava言語を用いて作成した。このモニター システムでは、外部システムとソケット通信により接続するための通信用オブ ジェクトが用意されており、遠隔地の様子をズーム機能等により詳細に監視す ることができる。
協調作業は分散系であるため、マルチ・ロボット全体として見た場合には、 最適でないプランが実行される。例えば、仕事を依頼するロボットの選択は最 適には定まらない。本研究では、この問題を帰納学習を用いて解決する。すな わち、最適でないケースの集合から、その集合の一般的な条件を生成し、それ を次回の行動選択に適用するというものである。ここでは、最適でない規準を 並列度で与え、ロボットの作業の並列度がある水準以下の場合は最適でないケー スとする。この方法を用いると、ロボット全体の作業が効率化されるように個々 のロボットの行動が定まり、結果としてマルチロボットの並列度が増加する。 この結果を表-1,表-2に示す。
ブロック | ボックス | ルールなし | ルールあり |
2 | 1 | 51 | 57 |
3 | 2 | 51 | 53 |
ブロック | ボックス | ルールなし | ルールあり |
2 | 1 | 17.0 | 14.3 |
3 | 2 | 9.4 | 8.9 |