|

本プロジェクトでは、既存の様々なロボットを複数動作させた場合に必要になる命令を開発することに成功した。さらに、ロボットの通信に必要な、低消費電力・高信頼性・高速なワイヤレスネットワーク技術を開発した。本プロジェクトの成果は、本プロジェクトの提供するロボットの基本行動のインターフェースを実装することで、すぐにワイヤレスネットワークを利用したマルチロボットアプリケーションを作成することが可能となる。
開発成果の特徴は以下のようなものとなっている。
● 組込み機器や、小さなモバイルロボットにも組み込むことが可能な、低消費電力でかつ軽量なシステムであること。
● アドホック・ワイヤレス・ネットワークが不安的なため、信頼性を向上させるために基盤となる無線通信技術の開発を行ったこと。
● 今回の開発では、Zigbee無線通信モジュールMOTEを採用したが、マルチロボット管理の協調フレームワークや無線通信プロトコルについては機種・機器に依存しない汎用的なものであり、幅広い応用が可能となっていること。
以下に、開発成果の詳細を示す。
フレームワークの構造は以下のようになる。今回のプロジェクトにて開発したソフトウェアは、マルチロボットフレームワークSYMROPと、ユーザープログラムとして開発した、マルチロボット管理ツールPacketAnalyzerの二つである。

(1)マルチロボットコマンド
複数ロボットを協調させるために開発した命令について説明する。このコマンドを利用することで複数ロボットを協調動作させることが可能となる。
● Gather [Command ID 1]
全ロボットを指定された場所(x,y)へ移動させる。
● Roll [Command ID 2]
一台のロボットを指定された場所(x,y)へ移動させる。
● Carry [Command ID 3]
一台のロボットを指定の場所(x1,y1)へ移動させ所定のアクションを行う。
その後、次の場所(x2,y2)へ移動する。
● Disperse [Command ID 4]
すべてのロボットをフィールド上に均等に分散させる。
引数には、分散を続ける時間を取る。
各ロボットは自分の担当領域が均等になるまで移動を続ける。
● Patrol [Command ID 5]
Patrolは各ロボットが自分の担当領域内を巡回し活動を行うコマンド。
担当領域は、Disperse等で決定される。
● Error [Command ID 6]
各ロボットの行動をすべて中断し待機状態に戻す。
各ロボットの同期を取る必要がある場合に利用する。
担当領域計算
各ノードの担当領域は、VoronoiDiagramによって区切られた領域として表現される。Disperseコマンド内では、増分法を利用した、高速・軽量なVoronoi計算を行うことで、CPUに対する負荷を最小限に抑えることを可能としている。
移動ベクトル決定方法
各ノードは周辺ノードの情報を利用し、均等に分散するための自分の移動ベクトルを決定する。計算式は次に表現される。

TopSpeed: ロボットの出せる最高速度
n :周辺にいるロボットの台数
Area : ノードの領域
e(I,j) : ロボットiからロボットjまでの単位ベクトル
(2)マルチロボット管理ツール:
PacketAnalyzer
PacketAnalyzerは、SYMROPを利用したユーザープログラムとして開発された、複数ロボットを管理、検証するためのプログラムである。
機能
● ロボットの位置・状態・通信範囲表示機能
● パケットの解析・表示・ログ機能
● 探索領域の表示機能
● マルチロボットコマンド送信機能

アドホックワイヤレスネットワークは不安定なため、信頼性を向上させるために我々は基盤となる無線通信技術の開発を行った。MOTEというZigBeeを用いた無線通信を行うデバイスを利用した。
(1)基本通信
基本通信とは、ワイヤレス通信デバイスのパケットの送信方法についての最も基本的な技術である。本プロジェクトでは、信頼度に応じて三種類の通信を使い分けている。
● 一回送信(信頼度90%)
パケットを一度だけ送る最も信頼度の低い送信。通信コストは最も小さい。
● 二回送信(信頼度99%)
パケットを二度送る送信方法。信頼度は一回送信と比べ十分高くなる。
● 確認送信(信頼度100%)
パケットを二回送った後に、送った先のノードからの確認パケットを待ち、確認パケットが帰ってこなかった場合には、パケットを再送する。信頼度がもっとも高い代わりに通信コストも最も大きくなる。
(2)アドホックネットワーク技術
複数のノードをホップするような通信を行う場合、アドホックネットワーク技術が必要となる。本プロジェクトにおいて開発・使用したアドホックネットワーク技術は以下のようなものである。
● Beaconing
● Flooding
● Advanced AODV
Beaconing
自分の通信範囲内のノードのみにパケットを送信する方法である。複数のノードをホップしないため、比較的大きい情報を通信することができる。
Flooding
自分に届いたパケットを、他のすべてのノードに転送する通信方式である。この方法を用いることで、全ノードにパケットを送信することが可能となるが、すべてのパケットを転送するという方法上、効率は悪く、通信コストが大きくなる。
Advanced AODV
既存のアドホックネットワーク技術として、AODV(Ad hoc On-Demand Distance Vector)プロトコルと呼ばれる効率の良い無線通信プロトコルが存在する。しかし、本プロジェクトが対象とするような非常に不安定なネットワークを対象とした場合、通常のAODVでは効率が悪く、通信コストが大きくなってしまう。そこで、既存のAODVを改良し、より安定して使用することができる新しい通信プロトコルAdvanced AODVを開発した。
● 特徴
一回ごとに確認通信を行うため、ネットワークの切断をいち早く察知することができる。確認通信を行うため、パケットが相手に届いたことが保証される。そのため、送信したパケットを、送信が完了するまで保持している必要が無く、メモリ領域を有効に活用することができる。
● 概略
Advanced AODVのアルゴリズム概略を次に記す。

(3)フレームワーク用基本命令
マルチロボットフレームワークのメッセージングを行う際に、メッセージのレイヤーを基本通信と明確に区別するため、フレームワーク用の基本命令を作成した。
● 位置情報命令
● メッセージ命令
ここで、位置情報命令は位置情報を伝えるための命令、メッセージ命令は可変長のメッセージを伝えるための命令である。マルチロボット命令はこのメッセージ内に記述される。
(1)Position Simulator
移動するロボットを表現するために、各MOTE内でロボットの位置・通信範囲をシミュレートするプログラムを作成した。このシミュレータは現実のロボットに沿った物であり、ここで使用している移動関数を継承し実装することで実際にロボットを本プロジェクトのマルチロボットフレームワーク上で動作させることが可能となる。また、このPosition Simulatorを利用することで、移動するロボットプログラミングの開発をより効率的に行うことができるようになる。
(2)Position Cache
ロボットは、周辺のロボットの出した位置情報ビーコンをキャッシュし、各計算で利用できるようになっている。また、古い位置情報は削除する。
|