以下、本発明による移動体について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による移動体は、近接している移動体によってクラスタを形成し、情報サーバからの情報の取得を階層化するものである。
図1は、本実施の形態による情報通信システムの構成の一例を示す図である。本実施の形態による情報通信システムは、複数の移動体1と、情報サーバ3と、ネットワーク制御サーバ4と、LTE基地局5と、アクセスポイント(AP)6,7とを備える。情報サーバ3と、ネットワーク制御サーバ4と、LTE基地局5と、アクセスポイント6,7とは、通信回線500を介して接続されている。なお、通信回線500は、通常、有線の回線であり、例えば、インターネットやイントラネット、公衆電話回線網などであってもよい。また、通信回線500は、複数の通信回線の集合であると考えてもよい。
各移動体1は、広域の無線通信と、近域の無線通信とを行うことができる。広域の無線通信により、移動体1は、LTE基地局5やアクセスポイント6,7を介して、情報サーバ3やネットワーク制御サーバ4にアクセスすることができる。広域の無線通信は、例えば、LTE(Long Term Evolution)等のセルラ通信や、無線LAN(Local Area Network)による通信(IEEE802.11の無線通信)等であってもよい。また、近域の無線通信により、移動体1は、周囲の移動体1と情報のやり取りを行うことができる。なお、近域の無線通信とは、広域の無線通信よりも小さい電力によって行われる無線通信である。したがって、近域の無線通信の範囲は、広域の無線通信の範囲よりも狭くなる。近域の無線通信は、例えば、無線LANによる通信やBluetooth(登録商標)による通信等であってもよい。なお、広域及び近域の無線通信が両方とも無線LANによる通信である場合には、両者は物理的には1個のデバイスによって構成されてもよいが、両者の送信電力は異なることになる。
また、相互に近接した複数の移動体1によって、クラスタが形成される。このクラスタは、情報サーバ3において管理されている情報を共有する移動体1のグループである。通常、近い範囲に存在する複数の移動体1によって1個のクラスタが形成される。このクラスタは、1個のクラスタヘッドの移動体1と、1個または2個以上のクラスタメンバの移動体1とによって構成される。そして、広域の無線通信を介して情報サーバ3等にアクセスし、情報サーバ3から情報を受信するのは、クラスタヘッドの移動体1であり、クラスタメンバの移動体1は、クラスタヘッドの移動体1が取得して保存している情報を、近域の無線通信を介して取得することになる。このようにして、無線通信がクラスタ内での近域の無線通信と、クラスタを超えた広域の無線通信とに階層化されることになり、広域の無線通信の混雑を回避することができる。また、近域の無線通信はより小電力で行われるため、より多くの移動体1が同時に近域の無線通信を行うことができる。したがって、結果として、無線リソースを有効利用することになり、情報通信システムにより多くの移動体1を収容できることになる。なお、移動体1は、いずれかのクラスタに属することが理想的であるが、図1で示されるように、いずれのクラスタにも属さない移動体1が存在してもよい。そのような移動体1は、クラスタメンバの存在しないクラスタにおけるクラスタヘッドの移動体であると考えてもよい。また、1個のクラスタにおける移動体1の個数、すなわち、そのクラスタに属する移動体1の個数は、閾値以下であることが好適である。その閾値は、あらかじめ決められた値であってもよい。そのように、1個のクラスタにおける移動体1の個数を閾値以下に制限するため、例えば、1個のクラスタにおける移動体1の個数が閾値を超える場合に、クラスタは、1個のクラスタにおける移動体1の個数が閾値以下となるように分割されてもよく、あらかじめ、1個のクラスタに閾値以下の個数の移動体1しか属することができないようになっていてもよい。このように、1個のクラスタにおける移動体1の個数が閾値以下であるとは、分割などが行われた結果として、閾値以下になることであってもよい。
図1では、移動体1が電動車いすである場合について示しているが、移動体1は、自律的に移動するものであればよく、例えば、電動車いすなどのモビリティであってもよく、エンターテインメントロボットや運搬ロボット等であってもよい。自律的に移動するとは、例えば、経路探索等によって取得された経路に沿って移動することであってもよく、周囲の状況に応じて適切な位置に移動すること(例えば、エンターテインメントロボットが、案内や会話等を行うために周囲の人に近づくなど)などであってもよい。また、通常、移動体1は、低速で移動するものである。低速とは、1個のクラスタ内で、そのクラスタの領域で用いられる情報を共有できる程度に低速であることを意味している。移動体1がより高速移動する場合には、クラスタを頻繁に構築し直す必要があるため、情報を適切に共有することが難しくなるからである。
情報サーバ3は、情報を管理しているサーバである。各移動体1は、情報サーバ3で管理されている情報を直接的にまたは間接的に取得し、その情報を用いて自律的な移動を行うことになる。その情報は、例えば、高度地図データベースなどのような地図情報であってもよく、移動体1で用いられるその他の情報であってもよい。本実施の形態では、移動体1が情報サーバ3から取得して用いる情報が地図情報である場合について主に説明する。詳細な情報を有している地図情報は、大容量のデータとなるが、近隣の移動体1では、同じ地図情報を用いることができる。したがって、クラスタヘッドの移動体1でキャッシュされている地図情報を、クラスタメンバの移動体1が用いることによって、地図情報を有効利用できることになる。
ネットワーク制御サーバ4は、各クラスタにおける近域の無線通信で用いるチャネルを割り当てる。ネットワーク制御サーバ4は、クラスタヘッドの移動体1から、クラスタに含まれる移動体数を含むクラスタ情報を受信し、そのクラスタ情報を用いて、チャネルごとの移動体1の個数が均一化されるように、各クラスタにチャネルを割り当てる。なお、均一化されるようにとは、より均一になるようにという意味である。したがって、完全に均一にならないこともあり得る。ネットワーク制御サーバ4は、割り当てたチャネルを示す情報を、それぞれ対応するクラスタヘッドの移動体1に送信する。例えば、使用可能なチャネル数が10個であり、同程度の個数の移動体1を含むクラスタが20個存在する場合には、ネットワーク制御サーバ4は、各チャネルを使用する移動体1の個数がより均等になるように、2個のクラスタごとに、1個のチャネルを割り当ててもよい。また、クラスタ情報に、クラスタヘッドの現在位置が含まれている場合には、ネットワーク制御サーバ4は、その現在位置を用いて、隣接するクラスタに異なるチャネルを割り当ててもよい。このようにすることで、隣接するクラスタ間において、近域の無線通信が干渉することを回避することができる。また、ネットワーク制御サーバ4は、例えば、クラスタの構成を開始するタイミングを示す信号を、各移動体1にブロードキャストで送信してもよい。
また、ネットワーク制御サーバ4は、1個のクラスタに含まれる移動体1の個数が多い場合に、そのクラスタを分割する旨の指示をクラスタヘッドに送信してもよい。1個のクラスタに含まれる移動体1の個数が多い場合とは、そのクラスタに含まれる移動体1の個数が、閾値を超える場合であってもよい。その閾値は、例えば、あらかじめ決められており、ネットワーク制御サーバ4において保持されていてもよい。ネットワーク制御サーバ4は、あるクラスタについて分割を指示する場合に、例えば、分割対象の移動体1や、分割対象の移動体1において新たにクラスタヘッドとなる移動体1を指定してもよく、または、指定しなくてもよい。本実施の形態では、後者の場合、すなわち、クラスタ側において、分割先のクラスタに属する移動体1や新たなクラスタヘッドが選択される場合について主に説明する。
なお、本実施の形態では、情報サーバ3とネットワーク制御サーバ4とが別々のサーバである場合について説明するが、両者は1個のサーバとして構成されてもよい。
LTE基地局5は、セルラ通信で用いられる基地局であってもよい。また、アクセスポイント6,7は、例えば、無線LANの通信で用いられる基地局であってもよい。LTE基地局5や無線LANのアクセスポイント6,7などはすでに公知であり、その詳細な説明を省略する。
図2は、本実施の形態による移動体1の構成を示すブロック図である。図2において、本実施の形態による移動体1は、自律的に移動するものであり、移動機構11と、現在位置取得部12と、移動制御部13と、情報取得装置2とを備える。情報取得装置2は、移動体1に設けられたものであり、広域通信部21と、近域通信部22と、判断部23と、情報管理部24と、記憶部25と、通信制御部26とを備える。なお、移動体1は、情報取得装置2によって取得された情報を用いて、自律的な移動を行う。
移動機構11は、移動体1を移動させるものであり、移動体1を移動させることができるものであれば、その方式を問わない。移動機構11は、例えば、車輪や無限軌道などの走行部と、その走行部を駆動するモータやエンジンなどの駆動部とを有するものであってもよい。移動機構11は、すでに公知であるため、その詳細な説明を省略する。
現在位置取得部12は、移動体1の現在位置を取得する。現在位置の取得は、例えば、無線通信を用いて行われてもよく、現在位置を取得できるその他の手段を用いてなされてもよい。無線通信を用いて現在位置を取得する方法としては、例えば、GPS(Global Positioning System)を用いる方法や、屋内GPSを用いる方法、最寄りの無線基地局を用いる方法などが知られている。また、現在位置取得部12は、例えば、自律航法装置を用いて現在位置を取得してもよい。また、現在位置取得部12は、移動体1の向き(方向)を含む現在位置を取得してもよい。その方向は、例えば、北を0度として、時計回りに測定された方位角によって示されてもよく、方向を示すその他の情報によって示されてもよい。その向きは、例えば、電子コンパスや地磁気センサによって取得されてもよい。
移動制御部13は、現在位置取得部12によって取得された現在位置、及び情報取得装置2によって取得された情報等を用いて、移動機構11による移動を制御する。移動制御部13は、例えば、現在位置から目的地までの経路を取得し、その取得した経路を用いて目的地までの移動体1の移動を制御してもよい。また、例えば、移動体1が障害物検知部を有している場合には、移動制御部13は、その障害物検知部によって障害物が検知されたときに、移動機構11による移動を停止させたり、減速させたりしてもよく、障害物を回避するように移動させてもよい。また、現在位置取得部12によって移動体1の向きも取得されている場合には、移動制御部13は、例えば、移動体1が進行方向を向くように移動機構11を制御してもよい。なお、上記のような移動制御部13による移動機構11の制御はすでに公知であるため、その詳細な説明を省略する。
広域通信部21は、広域の無線通信を行う。広域の無線通信は、上記のように、例えば、セルラ通信や、無線LANによる通信等である。なお、広域通信部21は、通信を行うための無線の通信デバイスを含んでもよく、または含まなくてもよい。また、広域通信部21は、ハードウェアによって実現されてもよく、または通信デバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
近域通信部22は、近域の無線通信を行う。近域の無線通信は、広域通信部21による無線通信よりも狭い範囲での無線通信である。したがって、通常、近域通信部22による無線通信の送信電力は、広域通信部21による無線通信の送信電力よりも小さいことになる。近域の無線通信は、上記のように、例えば、無線LANによる通信、Bluetooth(登録商標)による通信等であってもよい。なお、近域通信部22は、通信を行うための無線の通信デバイスを含んでもよく、または含まなくてもよい。また、近域通信部22は、ハードウェアによって実現されてもよく、または通信デバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。近域通信部22は、図2で示されるように、クラスタ内通信部31と、ビーコン送信部32とを備える。
クラスタ内通信部31は、他の移動体1から送信された情報や、ビーコンなどを受信する。また、クラスタ内通信部31は、他の移動体1に情報を送信する。なお、クラスタ内通信部31によって行われる無線通信は、上記の近域の無線通信である。
ビーコン送信部32は、ビーコンを送信する。そのビーコンには、通常、移動体1を識別する識別子が含まれている。そのビーコンも、近域の無線通信によって送信される。近域の無線通信については、上記のとおりである。したがって、ビーコン送信部32から送信されるビーコンは、そのビーコン送信部32を有している移動体1の近くに存在する移動体1によって受信され、遠くの移動体1では受信されないことになる。そのビーコン送信部32が送信するビーコンは、ブロードキャストで送信される信号であると考えてもよい。また、そのビーコンを、「Helloパケット」と呼ぶこともある。また、そのビーコンには、現在位置取得部12で取得された最新の現在位置が含まれていてもよい。
なお、広域及び近域の無線通信の両方が無線LANである場合には、広域通信部21と近域通信部22とが一体に構成されてもよい。その場合であっても、広域の無線通信による送信を行う場合には、より高電力で送信を行い、近域の無線通信による送信を行う場合には、より小電力で送信を行うことになる。
また、ビーコンは、クラスタ内通信部31以外によって受信されてもよい。具体的には、近域通信部22は、他の移動体1との間でデータ通信を行うクラスタ内通信部31と、ビーコン送信部32と、ビーコンを受信するビーコン受信部(図示せず)とを備えてもよい。その場合には、例えば、クラスタ内のデータ通信で使用する無線チャネルと、ビーコンの送受信で使用する無線チャネルとを異なるものにすることができ、ビーコンの送受信が、クラスタ内のデータ通信に影響を与えないようにすることができる。
また、クラスタ内通信部31が、クラスタ構築などのために行う無線通信で用いるチャネルは、あらかじめ決められていてもよい。また、後に説明するように、クラスタ内での情報の共有のために用いられるチャネルが通信制御部26によって設定された後は、その設定されたチャネルを用いて近域の無線通信が行われてもよい。ビーコンについても、使用されるチャネルは、あらかじめ決められていてもよい。
判断部23は、相互に近接する複数の移動体1によって構成されるクラスタにおいて、自移動体がクラスタヘッドであるか、クラスタメンバであるかを判断する。判断部23は、近域通信部22によって他移動体よりも多くの移動体1と無線通信を行うことができる場合に、自移動体がクラスタヘッドであると判断してもよい。ここで、自移動体とは、その判断部23を有する情報取得装置2を備えている移動体1のことであり、他移動体とは、自移動体以外の移動体1のことである。他の構成要素に対する自移動体や他移動体についても同様である。ある移動体1が他の移動体1と無線通信を行うことができるとは、所定のクオリティー以上の無線通信を行うことができることであってもよい。したがって、無線通信を行うことができるとは、各移動体1間で、所定の閾値以上の受信電力で受信できることであってもよい。その受信電力は、例えば、受信信号強度(RSSI:Received Signal Strength Indicator)であってもよい。なお、通常、1個のクラスタにおけるクラスタヘッドの移動体1は1個であり、それ以外の移動体1は、クラスタメンバの移動体1となる。1個のクラスタに含まれるクラスタメンバの個数は、通常、2個以上であるが、場合によっては、1個や0個であることもあり得る。例えば、あるクラスタに属するクラスタメンバの移動体1が、後記のように、クラスタヘッドの移動体1から離れてしまったことにより、クラスタメンバでなくなった場合には、1個のクラスタヘッドの移動体1のみを有するクラスタを新たに構成することになる。また、同様にして、いくつかのクラスタメンバの移動体1がクラスタヘッドから離れたことによって、クラスタメンバでなくなった場合には、クラスタメンバの個数が1個や0個になることがあり得る。
クラスタヘッダとクラスタメンバの判断は、より具体的には、次のようにして行われてもよい。クラスタを形成する際に、各移動体1のビーコン送信部32は、自移動体の識別子を含むビーコンを送信する。そのビーコンは、各移動体1からあらかじめ決められた同じ送信電力で送信されることが好適である。そして、他移動体から送信されたビーコンはクラスタ内通信部31によって受信され、判断部23は、受信電力が閾値以上である異なる移動体から送信されたビーコンの個数をカウントする。なお、異なる移動体から送信されたビーコンであるかどうかについては、例えば、ビーコンに含まれる移動体の識別子を用いて判断してもよい。その後、判断部23は、ビーコン送信部32を介して、そのカウント数を含むビーコンを再度、送信する。また、他移動体から送信された、カウント数を含むビーコンはクラスタ内通信部31によって受信される。また、判断部23は、自移動体におけるカウント数が、他移動体から受信されたカウント数の中で最大数であるかどうか判断する。そして、最大数である場合には、自移動体が他移動体よりも多くの移動体1と近域の無線通信を行うことができていることになるため、判断部23は、自移動体がクラスタヘッドの移動体であると判断してもよい。なお、判断部23によって、自移動体がクラスタヘッドの移動体であると判断された場合には、その判断結果に応じて、自移動体がクラスタヘッドであることを示すクラスタヘッド宣言が近域の無線通信によって周囲の移動体1に送信されてもよい。クラスタヘッド宣言には、クラスタヘッドの移動体1の識別子が含まれていてもよい。そのクラスタヘッド宣言は、クラスタ内通信部31またはビーコン送信部32によって、例えば、CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)によって送信されてもよい。そのような送信が行われることによって、仮に2以上の移動体1において、自移動体がクラスタヘッドであると判断されたとしても、その中の1個の移動体1が、自移動体がクラスタヘッド宣言を先に送信することになる。そのような場合には、先にクラスタヘッド宣言を送信した移動体1がクラスタヘッドになってもよい。また、ビーコン送信部32によるビーコンの送信や、広域通信部21、クラスタ内通信部31による送信も、CSMA/CAによって行われてもよい。
判断部23は、結果として、自移動体がクラスタヘッドであるのか、クラスタメンバであるのかの判断を行うことができればよい。したがって、判断部23が、その決定の処理を行ってもよく、または、行わなくてもよい。後者の場合には、他の移動体1から、自移動体がどちらであるのかを示す情報を受信することによって、判断部23は、自移動体がクラスタヘッドであるのか、クラスタメンバであるのかを判断してもよい。例えば、後に説明するように、分割先のクラスタにおける移動体1の判断部23は、分割前のクラスタヘッドの移動体1や、ネットワーク制御サーバ4による選択に応じて、自移動体がクラスタヘッドや、クラスタメンバであると判断してもよい。
判断部23は、自移動体がクラスタメンバであると判断した場合に、クラスタヘッドの移動体1に、クラスタメンバであることを示す情報を送信してもよい。このように、判断部23によって、自移動体がクラスタヘッドか、クラスタメンバかが判断され、さらに、クラスタヘッドと判断された移動体1と、クラスタメンバと判断された移動体1との間で、クラスタヘッド宣言や、クラスタメンバであることを示す情報の送受信が行われることによって、クラスタが構成されることになる。1個のクラスタは、クラスタヘッド宣言を送信したクラスタヘッドの移動体1と、そのクラスタヘッドの移動体1に、クラスタメンバであることを示す情報を送信したクラスタメンバの移動体1とによって構成されることになる。
情報管理部24は、自移動体がクラスタヘッドである場合に、広域通信部21を介して情報サーバ3から情報を受信して記憶部25に保存し、クラスタメンバの移動体1からの要求に応じて、記憶部25において保存している情報を、近域通信部22を介してクラスタメンバの移動体1に送信する。その情報サーバ3からの情報の受信は、情報管理部24から情報サーバ3に対して、情報の送信を要求したことに応じてなされてもよい。また、情報管理部24は、自移動体がクラスタメンバである場合に、情報サーバ3で管理されている情報を、クラスタヘッドの移動体1に要求し、クラスタヘッドの移動体1から近域通信部22を介して受信する。そのようにして受信された情報も、記憶部25に保存されてもよい。近接した領域に存在する複数の移動体1、すなわち同じクラスタに属する複数の移動体1によって同じ情報が用いられるようになっていることが好適であり、その情報が、情報サーバ3から取得されることになる。そのようにして、近接した領域に存在する複数の移動体1において、情報サーバ3から取得した情報を共有できるようになる。その情報は、上記のように、例えば、地図情報であってもよい。また、近域通信部22を介したクラスタメンバの移動体1との通信は、近域通信部22のクラスタ内通信部31によって行われてもよい。情報管理部24によって、情報サーバ3で管理されている情報の取得が上記のように行われることにより、情報サーバ3に直接アクセスする移動体1は、クラスタヘッドの移動体1のみとなり、他のクラスタメンバの移動体1は、クラスタヘッドの移動体1から情報を取得することになる。したがって、情報の取得が階層化されることになり、移動体1と情報サーバ3との間の広域の無線通信において送受信される情報の容量を減らすことができる。その結果、無線リソースを有効利用することになり、より多くの移動体1を収容できることになる。
なお、情報サーバ3から取得される情報は、通常、容量が大きいため、上記のように、クラスタ内においては、近域の無線通信を介して送受信されることが好適である。一方、クラスタメンバの移動体1からクラスタヘッドの移動体1への情報の要求は、要求対象の情報を特定する情報を有している程度であるため、情報サーバ3から取得される情報と比較して、小さい容量である。したがって、その要求は、例えば、近域の無線通信によって行われてもよく、または、広域の無線通信によって行われてもよい。なお、広域の無線通信における通信量を低減させる観点からは、その要求の送受信も、近域の無線通信によって行われることが好適である。
記憶部25では、情報管理部24によって取得された情報、すなわち、情報サーバ3によって管理されている情報が記憶される。記憶部25での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部25は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
通信制御部26は、自移動体がクラスタヘッドである場合に、自移動体の属するクラスタにおける移動体1の個数を含むクラスタ情報を、広域通信部21を介してネットワーク制御サーバ4に送信する。また、通信制御部26は、そのクラスタ情報に、現在位置取得部12によって取得された最新の現在位置を含めてもよい。また、通信制御部26は、クラスタ情報の送信に応じて、近域通信部22によって行われる無線通信のチャネルを、広域通信部21を介してネットワーク制御サーバ4から受信する。その無線通信のチャネルは、ネットワーク制御サーバ4において、チャネルごとの移動体1の個数が均一化されるようにクラスタごとに割り当てられた結果である。クラスタ情報に現在位置も含まれる場合には、ネットワーク制御サーバ4は、隣接するクラスタに異なるチャネルが割り当てられるように、各クラスタにチャネルを割り当ててもよい。なお、通信制御部26がネットワーク制御サーバ4から受信した、近域の無線通信で用いるチャネルは、クラスタヘッドの移動体1から、同じクラスタに属するクラスタメンバの移動体1に送信されてもよい。そして、クラスタヘッドの移動体1が属するクラスタにおける各移動体1間の近域通信部22による無線通信は、そのクラスタヘッドの通信制御部26がネットワーク制御サーバ4から受信したチャネルを用いて行われることが好適である。そのようにして、情報通信システム全体としては、チャネルごとの移動体1の個数が均一化されるため、特定のクラスタにおける近域の無線通信のみが混雑するような状況を回避することができる。
ここで、1個のクラスタにおける移動体1の個数が閾値を超えている場合に、そのクラスタが、2個以上のクラスタに分割される処理について説明する。なお、分割後の各クラスタにおける移動体1の個数は、その閾値以下となっていることが好適である。また、クラスタの分割が2回以上繰り返されることによって、最終的に、分割後の各クラスタにおける移動体1の個数が閾値以下となってもよい。
判断部23は、自移動体の属するクラスタにおける移動体1の個数が閾値を超えている場合であって、自移動体がクラスタヘッドである場合には、クラスタメンバから選択した新たなクラスタヘッドの移動体1に、クラスタヘッドになる旨を通知してもよい。自移動体の属するクラスタにおける移動体1の個数が閾値を超えているかどうかは、判断部23によって判断されてもよく、通信制御部26によるクラスタ情報の送信に応じて、ネットワーク制御サーバ4から受信されてもよい。クラスタメンバの移動体1からの新たなクラスタヘッドの移動体1の選択は、例えば、ランダムな選択によって行われてもよく、上記のように、各移動体1からカウント数を受け取っているときには、そのカウント数の大きい移動体1を選択することによって行われてもよい。その新たなクラスタヘッドの選択を行った後に、判断部23は、その選択したクラスタヘッドの移動体1に、新たなクラスタヘッドとなった旨を通知することが好適である。なお、その通知の際に、新たなクラスタメンバを識別する情報を一緒に通知してもよく、または、そうでなくてもよい。前者の場合には、判断部23は、新たなクラスタメンバ(すなわち、元のクラスタから新たなクラスタに移るクラスタメンバ)を選択してもよい。その選択は、例えば、ランダムに行われてもよく、各移動体1から現在位置も受け取っている場合(例えば、ビーコンに現在位置も含まれている場合など)には、新たなクラスタヘッドに近い位置に存在するクラスタメンバを選択することによって行われてもよい。また、新たなクラスタメンバを識別する情報をも受信した場合には、新たなクラスタヘッドは、その受信した情報で識別される各クラスタメンバに、自移動体がクラスタヘッドとなった旨を通知してもよい。また、新たなクラスタヘッドに、新たなクラスタメンバを識別する情報が通知されない場合には、例えば、新たなクラスタヘッドの移動体1において、新たなクラスタメンバの選択が行われてもよく、または、元のクラスタに属する各クラスタメンバが、元のクラスタに残るのか、新たなクラスタに移るのかを決めてもよい。各クラスタメンバの移動体1において、自移動体の属するクラスタを決定する場合には、クラスタメンバの移動体1は、例えば、元のクラスタのクラスタヘッドの移動体1から送信されるビーコンの受信電力と、新たなクラスタのクラスタヘッドの移動体1から送信されるビーコンの受信電力とのうち、より大きい受信電力に対応するクラスタヘッドの移動体1のクラスタを選択してもよい。また、元のクラスタにおけるクラスタヘッドの移動体1の判断部23が、新たなクラスタメンバの選択も行った場合には、その判断部23は、選択した新たなクラスタメンバの移動体1に、新たなクラスタメンバとなった旨や、クラスタヘッドを識別する情報を通知してもよい。また、例えば、元のクラスタにおけるクラスタヘッドの移動体1の判断部23が、新たなクラスタヘッドの選択と、新たなクラスタメンバの選択とを行った場合には、その判断部23は、選択した新たなクラスタヘッドの移動体1と新たなクラスタメンバの移動体1とに、選択した新たなクラスタヘッドの移動体1を識別する情報と、新たなクラスタメンバの移動体1を識別する情報とを送信してもよい。そのようにすることで、分割先の新たなクラスタに属することになる各移動体1は、その新たなクラスタにおける新たなクラスタヘッドの移動体1や、新たなクラスタメンバの移動体1を特定できるようになる。
また、判断部23は、自移動体の属するクラスタにおける移動体1の個数が閾値を超える場合であって、自移動体がクラスタメンバである場合には、クラスタヘッドの移動体1から、自移動体がクラスタヘッドになる旨の通知を受信したときに、自移動体が分割先の新たなクラスタにおけるクラスタヘッドであると判断し、自移動体がクラスタヘッドになる旨の通知を受信しなかったときに、既存のクラスタヘッドまたは新たなクラスタヘッドのクラスタメンバであると判断してもよい。自移動体が新たなクラスタヘッドとならない場合に、分割前のクラスタのクラスタメンバとなるのか、分割先の新たなクラスタのクラスタメンバになるのかは、例えば、既存のクラスタヘッドによって決定されてもよく、新たなクラスタヘッドによって決定されてもよく、自移動体によって決定されてもよく、または、ネットワーク制御サーバ4等の他の装置によって決定されてもよい。
なお、分割が行われる際に、新たなクラスタにおけるクラスタヘッドやクラスタメンバは、上記のように、元のクラスタのクラスタヘッドによって選択されてもよく、または、ネットワーク制御サーバ4等によって選択されてもよい。また、それらの選択の際に、各移動体1の位置が用いられてもよい。位置を用いて分割先のクラスタのクラスタヘッドやクラスタメンバを選択する場合には、例えば、分割先のクラスタに属する移動体1のうち、中心付近に位置する移動体1をクラスタヘッドの移動体とし、それ以外の移動体1をクラスタメンバの移動体1としてもよい。また、各移動体1の位置を用いて、分割先のクラスタに属する移動体1を選択してもよい。その場合には、分割元のクラスタに残ることになる移動体1の位置する領域と、分割先のクラスタに属することになる移動体1の位置する領域とができるだけ離れるように、分割先のクラスタに属する移動体1が選択されてもよい。
また、上記説明では、1個のクラスタに含まれる移動体1の個数が多い場合に、クラスタが分割される場合について説明したが、そうでなくてもよい。1個のクラスタに含まれる移動体1の個数があらかじめ制限されるようにしてもよい。例えば、近隣の移動体1間において、カウント数を含むビーコンが送受信された際に、そのカウント数の最大値が、所定の値を超えている場合には、カウント数の多いN個(Nは2以上の整数)の移動体が、クラスタヘッドになってもよい。その場合には、カウント数の最大値に応じてNが決まるようになっていてもよい。そのため、例えば、カウント数の最大値と、Nとを対応付ける情報(例えば、テーブル等)が用いられてもよく、カウント数の最大値を引数として、Nの値を算出できる関数が用いられてもよい。各移動体1の判断部23では、カウント数の最大値に応じてNの値を取得し、カウント数が最大値である移動体1から、カウント数がN番目である移動体1までの判断部23が、自移動体がクラスタヘッドであると判断し、それ以外の移動体1の判断部23が、自移動体がクラスタメンバであると判断してもよい。そして、クラスタヘッドの各移動体1は、所定数以下の移動体1を、そのクラスタヘッドの移動体1と同じクラスタに属するクラスタメンバの移動体1として受け付けるようにしてもよい。このようにすることで、クラスタを分割しなくても、1個のクラスタに含まれる移動体1の個数を所定数以下に制限することができる。
次に、情報取得装置2の動作について図3〜図6のフローチャートを用いて説明する。それらのフローチャートを用いた説明では、分割の要否はネットワーク制御サーバ4によって決定され、分割先のクラスタに属する移動体1は、分割前のクラスタヘッドの移動体1によって選択されるものとする。
図3は、各移動体1がクラスタヘッドか、クラスタメンバかを判断する情報取得装置2の処理を示すフローチャートである。
(ステップS101)ビーコン送信部32は、Helloパケット、すなわちビーコンを送信するかどうか判断する。そして、Helloパケットを送信する場合には、ステップS102に進み、そうでない場合には、Helloパケットを送信すると判断するまで、ステップS101の処理を繰り返す。なお、ビーコン送信部32は、例えば、ネットワーク制御サーバ4から送信された、クラスタの構成を開始するタイミングを示す信号が広域通信部21によって受信された場合に、Helloパケットを送信すると判断してもよい。
(ステップS102)ビーコン送信部32は、Helloパケットを送信する。また、クラスタ内通信部31は、他の移動体1から送信されたHelloパケットを受信する。なお、クラスタ内通信部31は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T1が経過するまで、他の移動体1からのHelloパケットの受信を行ってもよい。
(ステップS103)判断部23は、ステップS102で受信されたHelloパケットのうち、異なる移動体から送信され、受信電力が閾値以上であったHelloパケットの個数をカウントする。
(ステップS104)判断部23は、ステップS103でカウントしたカウント数を含むビーコンを、ビーコン送信部32を介して送信する。また、クラスタ内通信部31は、他の移動体1から送信された、カウント数を含むビーコンを受信する。なお、クラスタ内通信部31は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T2(>T1)が経過するまで、他の移動体1からのビーコンの受信を行ってもよい。
(ステップS105)判断部23は、ステップS103でカウントした自移動体のカウント数が、他の移動体1から送信されたビーコンに含まれていた、他移動体のカウント数の最大値以上であるかどうか判断する。そして、最大値以上である場合には、自移動体がクラスタヘッドであると判断してステップS106に進み、そうでない場合には、自移動体がクラスタメンバであると判断してステップS111に進む。なお、自移動体のカウント数が、他移動体のカウント数の最大値と同じである場合には、他移動体から先にクラスタヘッド宣言が送信される可能性もある。そのように、他移動体から先にクラスタヘッド宣言が送信された場合には、ステップS111に進んでもよい。その場合には、カウント数が最大値である複数の移動体1から、早い者勝ちでクラスタヘッドが決定されることになる。
(ステップS106)判断部23は、自移動体がクラスタヘッドである旨のクラスタヘッド宣言を送信する。この送信は、例えば、クラスタ内通信部31を介して、近域の無線通信におけるあらかじめ決められたチャネルを用いて行われてもよい。
(ステップS107)判断部23は、ステップS106におけるクラスタヘッド宣言の送信に応じて、各クラスタメンバの移動体1から送信された、クラスタメンバであることを示す情報を、クラスタ内通信部31を介して受信する。この受信は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T4(>T3)が経過するまで行われてもよい。なお、時間T3については後記する。
(ステップS108)通信制御部26は、クラスタ情報を、広域通信部21を介してネットワーク制御サーバ4に送信する。なお、そのクラスタ情報には、例えば、クラスタに属する移動体1の個数や、現在位置取得部12によって取得された最新の現在位置が含まれていてもよい。なお、クラスタに属する移動体1の個数は、例えば、ステップS107で受信した情報の送信元である移動体1の個数(すなわち、クラスタメンバの個数)に、クラスタヘッドである自移動体の「1」を加算した個数であってもよい。また、結果としてクラスタに含まれる移動体1の個数をネットワーク制御サーバ4が知ることができればよいため、クラスタ情報には、クラスタに属するクラスタメンバの個数が含まれてもよい。また、クラスタ情報には、例えば、移動体1の最新の現在位置が含まれていてもよい。
(ステップS109)通信制御部26は、ネットワーク制御サーバ4から、近域の無線通信で用いるチャネルと、分割の要否とを受信する。なお、ネットワーク制御サーバ4において分割が必要であると判断された場合には、分割が必要である旨と、その分割先のクラスタにおける近域の無線通信で用いられるチャネルとがクラスタヘッドの移動体1に送信されてもよい。
(ステップS110)通信制御部26は、ネットワーク制御サーバ4から受信した、近域の無線通信で用いるチャネルを、クラスタメンバである各移動体1に送信する。この送信は、近域通信部22を介して行われてもよい。また、通信制御部26は、ネットワーク制御サーバ4から受信したチャネルを、近域の無線通信で用いるチャネルとしてクラスタ内通信部31に設定する。そして、図4のフローチャートにおけるステップS201に進む。
(ステップS111)判断部23は、クラスタヘッド宣言を受信する。この受信は、例えば、クラスタ内通信部31を介して行われてもよい。また、この受信は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T3(>T2)が経過するまで行われてもよい。
(ステップS112)判断部23は、2以上のクラスタヘッド宣言を受信したかどうか判断する。そして、2以上のクラスタヘッド宣言を受信した場合には、ステップS113に進み、そうでない場合には、ステップS114に進む。
(ステップS113)判断部23は、クラスタヘッド宣言を送信した2以上の移動体1のうち、一方の移動体1を、自移動体のクラスタヘッドとして選択する。判断部23は、例えば、クラスタヘッド宣言の受信電力の大きい方の移動体1を、クラスタヘッドとして選択してもよい。
(ステップS114)判断部23は、クラスタヘッドの移動体1に、自移動体がクラスタメンバであることを示す情報を送信する。その情報には、例えば、自移動体の識別子が含まれていてもよい。また、その送信は、例えば、クラスタ内通信部31を介して行われてもよい。
(ステップS115)通信制御部26は、クラスタヘッドの移動体1から送信された、近域の無線通信で用いるチャネルを受信する。そして、通信制御部26は、そのチャネルを、近域の無線通信で用いるチャネルとして、近域通信部22に設定する。そのチャネルの受信は、例えば、クラスタ内通信部31を介しておこなわれてもよい。この受信は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T5(>T4)が経過するまで行われてもよい。そして、図4のステップS204に進む。
図4は、クラスタの分割に関する情報取得装置2の処理を示すフローチャートである。
(ステップS201)クラスタヘッドの移動体1の判断部23は、ネットワーク制御サーバ4から、分割する旨が受信されたかどうか判断する。そして、分割する旨が受信された場合には、ステップS202に進み、そうでない場合には、図5のフローチャートのステップS301に進む。
(ステップS202)判断部23は、ステップS107で受信した情報を送信したクラスタメンバの移動体1、すなわち、自移動体と同じクラスタに属するクラスタメンバの移動体1から、分割先のクラスタに属する新たなクラスタヘッドの移動体1と、新たなクラスタメンバの移動体1とを選択する。
(ステップS203)判断部23は、ステップS202で選択した各移動体1に、分割先のクラスタの新たなクラスタヘッドと、新たなクラスタメンバとを通知する。具体的には、判断部23は、新たなクラスタヘッドの識別子と、新たなクラスタメンバとの識別子とを選択対象の各移動体1に通知してもよい。この通知によって、分割先のクラスタに属することになる各移動体1は、その新たなクラスタに属するようになることと、その新たなクラスタにおけるクラスタヘッドの移動体1とを知ることができる。これらの通知は、クラスタ内通信部31を介して行われてもよい。また、その通知には、新たなクラスタにおける近域の無線通信で用いられるチャネルが含まれていてもよい。そのチャネルは、例えば、ステップS109でネットワーク制御サーバ4から受信されたものであってもよい。また、例えば、ステップS109において、ネットワーク制御サーバ4から、新たなクラスタにおける近域の無線通信で用いられるチャネルが受信されていない場合には、そのチャネルを、分割前のクラスタヘッドの移動体1、または分割先の新たなクラスタヘッドの移動体1が、ネットワーク制御サーバ4に問い合わせて取得してもよい。
(ステップS204)クラスタメンバの移動体1の判断部23は、クラスタヘッドの移動体1から、新たなクラスタヘッド等に関する通知を受信したかどうか判断する。そして、受信した場合には、ステップS205に進み、受信しなかった場合には、図6のフローチャートのステップS401に進む。なお、その通知を受信した移動体1の判断部23は、新たなクラスタヘッド等に関する通知によって自移動体がクラスタヘッドであることが示される場合に、自移動体がクラスタヘッドであると判断し、新たなクラスタヘッド等に関する通知によって自移動体がクラスタメンバであることが示される場合に、自移動体がクラスタメンバであると判断してもよい。この場合には、その通知によって、新たなクラスタのクラスタヘッド及びクラスタメンバのそれぞれが特定されているため、クラスタヘッド宣言の送信や、クラスタメンバであることを示す情報の送信が行われなくても、クラスタが構成されることになる。また、クラスタヘッドからの通知に、新たなクラスタにおける近域の無線通信で用いられるチャネルが含まれている場合には、新たなクラスタに属する各移動体1における通信制御部26は、そのチャネルを、近域の無線通信で用いるチャネルとして、近域通信部22に設定する。また、判断部23は、例えば、ステップS101でHelloパケットを送信すると判断されてから、あらかじめ決められた時間T6(>T5)が経過するまでにその通知を受信しなかった場合に、ステップS401に進んでもよい。
(ステップS205)判断部23は、自移動体が分割先のクラスタにおけるクラスタヘッドであるかどうか判断する。そして、クラスタヘッドである場合には、図5のフローチャートのステップS301に進み、クラスタメンバである場合には、図6のフローチャートのステップS401に進む。
図5は、クラスタヘッドである移動体1における情報取得装置2の処理を示すフローチャートである。
(ステップS301)クラスタヘッドである移動体1の情報管理部24は、情報サーバ3で管理されている情報が必要であるかどうか判断する。そして、その情報が必要である場合には、ステップS302に進み、そうでない場合には、ステップS303に進む。なお、例えば、移動制御部13は、移動の制御に必要な地図情報が記憶部25で記憶されていない場合に、現在位置取得部12によって取得された最新の現在位置に対応する地図情報を情報管理部24に要求してもよい。そして、例えば、移動制御部13から情報サーバ3で管理されている情報の要求があった場合に、情報管理部24は、その情報が必要であると判断してもよい。
(ステップS302)情報管理部24は、要求された情報を情報サーバ3から取得する。具体的には、情報管理部24は、その情報の要求を情報サーバ3に送信し、その送信に応じて情報サーバ3から送信された、要求対象の情報を受信してもよい。その要求の送信や、情報の受信は、広域通信部21を介して行われる。そして、情報管理部24は、その取得した情報を記憶部25に蓄積すると共に、移動制御部13に渡し、ステップS301に戻る。
(ステップS303)情報管理部24は、情報サーバ3で管理されている情報の送信の要求を、同じクラスタに属するクラスタメンバの移動体1から受信したかどうか判断する。そして、その要求を受信した場合には、ステップS304に進み、そうでない場合には、ステップS307に進む。なお、その受信は、例えば、クラスタ内通信部31を介して行われてもよい。
(ステップS304)情報管理部24は、ステップS303で要求された情報が記憶部25で記憶されているかどうか判断する。そして、記憶されている場合には、ステップS306に進み、そうでない場合には、ステップS305に進む。
(ステップS305)情報管理部24は、ステップS302と同様にして、要求対象の情報を情報サーバ3から取得し、その情報を記憶部25に蓄積する。
(ステップS306)情報管理部24は、要求対象の情報を、クラスタ内通信部31を介して要求元であるクラスタメンバの移動体1に送信する。そして、ステップS301に戻る。
(ステップS307)ビーコン送信部32は、ビーコンを送信するタイミングであるかどうか判断する。そして、ビーコンを送信するタイミングである場合には、ステップS308に進み、そうでない場合には、ステップS309に進む。なお、ビーコン送信部32は、例えば、ビーコンを送信すると定期的に判断してもよい。このビーコンは、例えば、クラスタメンバの移動体1が、自移動体がクラスタヘッダから情報を受信できるかどうかの判断のために用いられる。このビーコンを受信できなくなったクラスタメンバの移動体1は、例えば、情報サーバ3で管理されている情報を、情報サーバ3から直接、取得するようになってもよい。
(ステップS308)ビーコン送信部32は、ビーコンを送信する。そして、ステップS301に戻る。
(ステップS309)ビーコン送信部32は、Helloパケットを送信するかどうか判断する。そして、Helloパケットを送信する場合には、ステップS102に戻り、そうでない場合には、ステップS301に戻る。なお、ビーコン送信部32は、例えば、ネットワーク制御サーバ4から送信された、クラスタの構成を開始するタイミングを示す信号が広域通信部21によって受信された場合に、Helloパケットを送信すると判断してもよい。
なお、図5のフローチャートでは、Helloパケットを送信すると判断されるとステップS102に戻る場合について示しているが、そうでなくてもよい。Helloパケットを送信すると判断された場合には、ステップS102以降のクラスタを構成する処理と、ステップS301〜S306の情報を取得する処理とが並列して実行されてもよい。クラスタを構成している際にも、新たな情報が必要になる場合もあるからである。
図6は、クラスタメンバである移動体1における情報取得装置2の処理を示すフローチャートである。なお、そのクラスタメンバである移動体1とは、クラスタが構成された際に、クラスタメンバであると判断した移動体1のことである。後記のように、クラスタが構成された際にはクラスタメンバであった移動体1が、後ほど、クラスタメンバでなくなることもあるからである。
(ステップS401)移動体1の情報管理部24は、情報サーバ3で管理されている情報が必要であるかどうか判断する。そして、その情報が必要である場合には、ステップS402に進み、そうでない場合には、ステップS405に進む。なお、例えば、移動制御部13は、移動の制御に必要な地図情報が記憶部25で記憶されていない場合に、現在位置取得部12によって取得された最新の現在位置に対応する地図情報を情報管理部24に要求してもよい。そして、例えば、移動制御部13から情報サーバ3で管理されている情報の要求があった場合に、情報管理部24は、その情報が必要であると判断してもよい。
(ステップS402)判断部23は、自移動体がクラスタメンバであるかどうか判断する。そして、クラスタメンバである場合には、ステップS403に進み、クラスタメンバでない場合、すなわちステップS408でクラスタメンバではなくなったと判断した場合には、ステップS404に進む。
(ステップS403)情報管理部24は、要求された情報をクラスタヘッドの移動体1から取得する。具体的には、情報管理部24は、その情報の要求をクラスタヘッドの移動体1に送信し、その送信に応じてクラスタヘッドの移動体1から送信された、要求対象の情報を受信してもよい。その情報の受信は、クラスタ内通信部31を介して行われる。そして、情報管理部24は、その取得した情報を記憶部25に蓄積すると共に、移動制御部13に渡し、ステップS401に戻る。
(ステップS404)情報管理部24は、要求された情報を情報サーバ3から取得する。具体的には、情報管理部24は、その情報の要求を情報サーバ3に送信し、その送信に応じて情報サーバ3から送信された、要求対象の情報を受信してもよい。その要求の送信や、情報の受信は、広域通信部21を介して行われる。そして、情報管理部24は、その取得した情報を記憶部25に蓄積すると共に、移動制御部13に渡し、ステップS401に戻る。
(ステップS405)判断部23は、クラスタヘッドの移動体1から送信されたビーコンを受信したかどうか判断する。その受信は、例えば、クラスタ内通信部31を介して行われてもよい。そして、ビーコンを受信した場合には、ステップS406に進み、そうでない場合には、ステップS407に進む。なお、ビーコンを受信するとは、所定の受信電力以上のビーコンを受信することであってもよい。クラスタヘッドから送信されたビーコンかどうかは、例えば、そのビーコンに含まれる移動体1の識別子を用いて判断されてもよい。
(ステップS406)判断部23は、ビーコンを受信した時点の時刻を図示しない時計部から取得して記録する。その記録は、図示しない記録媒体への蓄積によって行われてもよい。そして、ステップS401に戻る。
(ステップS407)判断部23は、クラスタヘッドの移動体1から定期的にビーコンを受信しているかどうか判断する。判断部23は、例えば、最後にビーコンを受信した時刻、すなわちステップS406で記録した最新の時刻から、その判断時点までの期間が、あらかじめ決められた閾値を超えている場合に、定期的にビーコンを受信していないと判断し、その期間が閾値を超えていない場合に、定期的にビーコンを受信していると判断してもよい。そして、定期的にビーコンを受信している場合には、ステップS409に進み、そうでない場合には、ステップS408に進む。なお、その判断で用いられる閾値は、ビーコンの送信間隔よりも長く設定されていることが好適である。
(ステップS408)判断部23は、自移動体がクラスタメンバでないと判断する。自移動体が、クラスタヘッドの移動体1から送信されたビーコンを受信できない位置に存在するため、そのクラスタヘッドの移動体1から情報を取得することができないからである。
(ステップS409)ビーコン送信部32は、Helloパケットを送信するかどうか判断する。そして、Helloパケットを送信する場合には、ステップS102に戻り、そうでない場合には、ステップS401に戻る。なお、ビーコン送信部32は、例えば、ネットワーク制御サーバ4から送信された、クラスタの構成を開始するタイミングを示す信号が広域通信部21によって受信された場合に、Helloパケットを送信すると判断してもよい。
なお、図6のフローチャートでは、Helloパケットを送信すると判断されるとステップS102に戻る場合について示しているが、そうでなくてもよい。Helloパケットを送信すると判断された場合には、ステップS102以降のクラスタを構成する処理と、ステップS401〜S404の情報を取得する処理とが並列して実行されてもよい。クラスタを構成している際にも、新たな情報が必要になる場合もあるからである。
また、図3〜図6のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図3〜図6のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
また、図3〜図6のフローチャートでは示していないが、移動体1は、移動制御部13によって自律的に移動してもよい。その移動の動作は公知であり、その説明を省略する。
次に、本実施の形態による移動体1の動作について、具体例を用いて説明する。この具体例では、22個の移動体1−1〜1−22が存在するものとする。なお、移動体1−1〜1−22のそれぞれを区別しない場合には、移動体1と呼ぶこともある。また、この具体例では、広域の無線通信及び近域の無線通信が無線LANによる通信であるものとする。ただし、上記のように、広域の無線通信の送信電力の方が、近域の無線通信の送信電力よりも大きいものとする。また、ビーコンやクラスタヘッド宣言等の移動体1間で送受信される制御関係の信号は、あらかじめ決められたチャネルを用いて送受信されるものとする。
あるタイミングで、ネットワーク制御サーバ4から、Helloパケットを送信する旨の指示が、図7Aで示される各移動体1−1〜1−22にブロードキャストで送信されると、各移動体1のビーコン送信部32は、Helloパケットを送信するタイミングであると判断する(ステップS101)。そして、各移動体1のビーコン送信部32は、それぞれHelloパケットを送信し、また、各移動体1のクラスタ内通信部31は、他の移動体1から送信されたHelloパケットを受信する(ステップS102)。また、各移動体1の判断部23は、受信されたHelloパケットのRSSIが、あらかじめ決められた閾値以上であるかどうかそれぞれ判断し、その閾値以上であるHelloパケットのうち、異なる移動体1から送信されたHelloパケットの個数、すなわち、移動体の異なる識別子を有するHelloパケットの個数をカウントする(ステップS103)。そのカウント数は、移動体1−3,1−14では「9」であり、移動体1−11では「11」であり、移動体1−15では「13」であったとする。それ以外の移動体1−1等では、カウント数は8以下であったとする。
そのカウント数は、ビーコン送信部32によって周囲の移動体1に送信され、クラスタ内通信部31によって受信される(ステップS104)。そして、移動体1−3,1−15の各判断部23は、自移動体のカウント数が最大であり、自移動体はクラスタヘッドであると判断し、他の移動体1−1等の各判断部23は、自移動体のカウント数は最大ではないため、自移動体はクラスタメンバであると判断する(ステップS105)。なお、移動体1−11,1−14では、移動体1−15のカウント数「13」が受信されるため、それらの移動体1−11,1−14の各判断部23は、自移動体のカウンタ数は最大ではなく、自移動体はクラスタメンバであると判断することになる。一方、移動体1−3は、移動体1−11,1−14,1−15から送信されたカウント数を受信できないものとする。したがって、移動体1−3の判断部23では、自移動体がクラスタヘッドであると判断されることになる。
その後、移動体1−15の判断部23は、クラスタ内通信部31を介して、クラスタヘッド宣言を送信する(ステップS106)。そのクラスタヘッド宣言は、13個の移動体1のクラスタ内通信部31によって受信される(ステップS111)。また同様に、移動体1−3の判断部23も、クラスタ内通信部31を介して、クラスタヘッド宣言を送信する(ステップS106)。そのクラスタヘッド宣言は、9個の移動体1のクラスタ内通信部31によって受信される(ステップS111)。なお、移動体1−7,1−10では、両方のクラスタヘッド宣言が受信されたとする(ステップS112)。そして、移動体1−7の判断部23は、クラスタヘッド宣言のRSSIがより大きかった移動体1−3をクラスタヘッドとして選択し、移動体1−10の判断部23は、クラスタヘッド宣言のRSSIがより大きかった移動体1−15をクラスタヘッドとして選択したとする(ステップS113)。すると、移動体1−7の判断部23は、移動体1−3に、自移動体がクラスタメンバであることを示す情報を、クラスタ内通信部31を介して送信する。また、移動体1−10の判断部23は、移動体1−15に、自移動体がクラスタメンバであることを示す情報を、クラスタ内通信部31を介して送信する。また、他の移動体1−1等もそれぞれ、クラスタヘッド宣言の送信元であるクラスタヘッドの移動体1−3,1−15に、自移動体がクラスタメンバであることを示す情報を送信する(ステップS114)。移動体1−3,1−15の各判断部23は、それらの情報を受信することによって、自移動体の属するクラスタに含まれる移動体1について知ることができる(ステップS107)。この場合には、図7Bで示されるように、移動体1−3をクラスタヘッドとするクラスタAと、移動体1−15をクラスタヘッドとするクラスタBとが構成されることになる。
クラスタヘッドの移動体1−3,1−15の判断部23は、それぞれ各クラスタA,Bに含まれる移動体1の個数を通信制御部26に渡す。その移動体の個数は、クラスタメンバの個数に1を加算した数である。クラスタに含まれる移動体1の個数を受け取ると、通信制御部26は、現在位置取得部12から最新の現在位置を取得し、その現在位置と、クラスタに含まれる移動体1の個数とを含むクラスタ情報を、広域通信部21を介してネットワーク制御サーバ4に送信する(ステップS108)。
ネットワーク制御サーバ4は、クラスタヘッドの移動体1−3,1−15からそれぞれクラスタ情報を受信し、そのクラスタ情報を用いて、分割の要否の判断を行うと共に、各クラスタにおける移動体1の個数が均一化されるように、また、近接するクラスタの無線通信で用いられるチャネルが異なるものとなるように各クラスタのチャネルを決定する。この場合には、クラスタにおける移動体1の個数が20個以上であるときに、分割が必要であると判断されることになっていたとする。すると、ネットワーク制御サーバ4は、分割は不要であると判断すると共に、クラスタが2個しか存在しないため、クラスタAにチャネル1を割り当て、クラスタBにチャネル6を割り当てたとする。そして、ネットワーク制御サーバ4は、クラスタヘッドの移動体1−3に、分割が不要である旨と、クラスタ内の無線通信でチャネル1を用いる旨とを送信する。また、ネットワーク制御サーバ4は、クラスタヘッドの移動体1−15に、分割が不要である旨と、クラスタ内の無線通信でチャネル6を用いる旨とを送信する。それらの情報は、移動体1−3,1−15の広域通信部21を介して通信制御部26によってそれぞれ受信される(ステップS109)。そして、通信制御部26は、クラスタ内通信部31を介して、クラスタ内の各移動体1に、クラスタ内の無線通信で用いるチャネルを通知すると共に、そのチャネルを、クラスタ内の無線通信に用いるチャネルとしてクラスタ内通信部31に設定する(ステップS110)。また、クラスタメンバの各移動体1の通信制御部26は、クラスタヘッドから送信されたチャネルを、クラスタ内通信部31を介して受信し、そのチャネルを、クラスタ内の通信に用いるチャネルとしてクラスタ内通信部31に設定する(ステップS115)。なお、上記のように、ネットワーク制御サーバ4によって分割は不要であると判断されているため、分割の処理は行われないことになる(ステップS201,S204)。
その後の各移動体1による情報の取得について、クラスタAを用いて説明する。クラスタAのクラスタヘッドである移動体1−3が新たな位置に移動し、新たな地図情報が必要になったとする。そして、その旨と最新の現在位置とが移動制御部13から情報管理部24に渡されたとする。すると、情報管理部24は、地図情報を取得する必要があると判断し(ステップS301)、最新の現在位置に対応する地図情報を情報サーバ3に要求する。その要求は、広域通信部21を介して行われる。情報サーバ3は、その要求を受信すると、その要求に含まれている現在位置に対応する地図情報を読み出し、その読み出した地図情報を、要求の送信元である移動体1−3に送信する。そして、その地図情報は、移動体1−3の情報管理部24によって、広域通信部21を介して受信され、記憶部25に蓄積されると共に、移動制御部13に渡される(ステップS302)。その結果、移動体1−3では、取得された地図情報を用いた自律的な移動を行うことができるようになる。なお、その地図情報が記憶部25に蓄積される際には、その地図情報の領域を示す情報に対応付けられて蓄積されてもよい。
その後、クラスタAのクラスタメンバである移動体1−1が新たな位置に移動し、新たな地図情報が必要になったとする。すると、移動体1−1の情報管理部24は、地図情報を取得する必要があると判断する(ステップS401)。そして、情報管理部24は、判断部23に、移動体1−1が現在、クラスタメンバであるかどうか問い合わせる。この場合には、クラスタメンバであったとする。すると、情報管理部24は、判断部23からクラスタメンバである旨を受け取り(ステップS402)、最新の現在位置に対応する地図情報を、クラスタ内通信部31を介してクラスタヘッドの移動体1−3に要求する。移動体1−3の情報管理部24は、その要求を受信すると、その要求に対応する地図情報が記憶部25で記憶されているかどうか判断する(ステップS303,S304)。この場合には、含まれていなかったとする。すると、移動体1−3の情報管理部24は、その地図情報を情報サーバ3から取得し、記憶部25に蓄積すると共に、移動体1−1に送信する(ステップS305,S306)。移動体1−3から送信された地図情報は、移動体1−1の情報管理部24によって、クラスタ内通信部31を介して受信され、記憶部25に蓄積されると共に、移動制御部13に渡される(ステップS403)。そして、移動体1−1では、取得された地図情報を用いた自律的な移動を行うことができるようになる。なお、ここでは、クラスタヘッドである移動体1−3が、クラスタメンバからの要求に応じて情報サーバ3から地図情報を取得して送信する場合について説明したが、要求対象の地図情報が移動体1−3において保持されている場合には、その保持されている地図情報が移動体1−1に送信されることになる。このようにして、情報の取得が階層化されることにより、広域の無線通信が使用される頻度が減ることになり、無線リソースを増やさなくても、より多くの移動体1を収容できるようになる。
また、移動体1−1が自律的な移動を継続することによって、クラスタヘッドの移動体1−3からのビーコンを、あらかじめ決められた閾値以上のRSSIで受信できなくなったとする(ステップS405)。すると、ビーコンの受信に応じた時刻の記録が行われなくなる。そして、移動体1−1の判断部23は、ある時点でビーコンの受信が行われていないと判断し(ステップS407)、移動体1−1がクラスタAのクラスタメンバではなくなったと判断する(ステップS408)。その後、新たな地図情報が必要になった場合には、移動体1−1は、情報サーバ3から直接、取得することになる(ステップS401,S402,S404)。
また、あるタイミングで、ネットワーク制御サーバ4から、Helloパケットを送信する旨の指示が、図7Aで示される各移動体1−1〜1−22にブロードキャストで送信されると、それに応じて、各移動体1によるクラスタの構築が再度、行われることになる。このように、クラスタの構成が繰り返して行われることにより、各移動体1がいろいろな方向に移動したとしても、そのときどきで最適なクラスタが形成されることになる。したがって、自律的に移動する移動体1の位置に応じた適応的な階層ネットワーク(クラスタ)が構成されることになる。
なお、上記説明では、クラスタA,Bの両方について分割が必要ないと判断された場合について説明したが、ここでは、クラスタBについて分割が必要と判断された場合の具体例について説明する。例えば、クラスタにおける移動体1の個数が10個以上である場合に、分割が必要であると判断される状況では、クラスタBについて、分割が必要であると判断されることになる。
ネットワーク制御サーバ4からクラスタヘッドの移動体1−15に対して、クラスタを分割する旨と、分割元のクラスタBで用いるチャネル6と、分割先のクラスタで用いるチャネル11とが送信されたとする。クラスタBのクラスタヘッドである移動体1−15の通信制御部26は、ネットワーク制御サーバ4からそれらの情報を受信すると(ステップS109)、クラスタ内通信部31を介して、分割前の各クラスタ内の移動体1に、クラスタ内の無線通信で用いるチャネル「6」を通知すると共に、そのチャネルを、クラスタ内の無線通信に用いるチャネルとしてクラスタ内通信部31に設定する(ステップS110)。また、クラスタヘッドである移動体1−15の判断部23は、通信制御部26によって分割が必要である旨が受信されたため、12個のクラスタメンバの移動体1から、半分の6個の移動体1−12,1−14,1−17,1−19,1−20,1−21をランダムに選択し、そのうちの1個の移動体1−21をクラスタヘッドとすると共に、残りの5個の移動体1−12,1−14,1−17,1−19,1−20をクラスタメンバとする(ステップS202)。そして、移動体1−15の判断部23は、それらの6個の移動体1に対して、移動体1−21がクラスタヘッドに選択された旨、移動体1−12,1−14,1−17,1−19,1−20がクラスタメンバに選択された旨、また、分割先のクラスタにおける近域の無線通信で用いられるチャネルは「11」である旨を通知する(ステップS203)。その通知は、6個の移動体1の判断部23によってそれぞれ受信され(ステップS204)、移動体1−21の判断部23は、自移動体が分割先の新たなクラスタにおいて、クラスタヘッドになったと判断し、また、移動体1−12,1−14,1−17,1−19,1−20の判断部23は、自移動体が分割先の新たなクラスタにおいて、クラスタメンバになったと判断する(ステップS205)。また、それらの移動体1−12等の判断部23は、受信した分割先のクラスタにおけるチャネル「11」を、通信制御部26に渡す。すると、その6個の移動体1−12等の通信制御部26によって、チャネル「11」が、近域の無線通信で用いられるチャネルとしてクラスタ内通信部31に設定される。そして、図7Cにおいて破線で示されるように、移動体1−12,1−14,1−17,1−19,1−20がクラスタBに属さないようになり、新たなクラスタを構成することになる。このようにして、あるクラスタに含まれる移動体1の個数が多い場合に、クラスタ間での移動体1の個数が平均化されることになる。
以上のように、本実施の形態による移動体1によれば、各クラスタにおいて、クラスタヘッドの移動体1によって情報サーバ3から情報が取得され、クラスタメンバの移動体1は、そのクラスタヘッドの移動体1から、情報サーバ3で管理されている情報を取得することになる。また、1個のクラスタに含まれる移動体1は、近接した位置に存在するため、小さな送信電力である近域の無線通信によって、移動体1間の情報の送受信を行うことができる。このように、情報サーバ3に直接アクセスする移動体1が、クラスタヘッドのみとなることにより、広域の無線通信を行う移動体1の個数が減ることになり、広域の無線通信が行われる頻度を低減することができる。また、近域の無線通信は、より小さな送信電力で行われるため、干渉が発生する範囲が狭くなり、同一エリア内において近距離の無線通信を同時に行うことができる移動体1の個数を増加させることができる。したがって、無線リソースを効率的に利用することができ、従来のように、各移動体が情報サーバ3から情報を取得していた場合と比較して、情報通信システムに、より多くの移動体1を収容することができるようになる。その結果、例えば、移動体1が情報サーバ3で管理されている情報にアクセスすることができず、移動体1による自律的な移動が一時的に停止されるような事態を回避することができる。
また、1個のクラスタにおける移動体1の個数が閾値以下となるようにすることによって、特定のクラスタにおける近域の無線通信の負荷のみが高くなるような状況が起きないようにすることができる。また、ネットワーク制御サーバ4によって、各クラスタにおける近域の無線通信で用いられるチャネルが決定されることにより、各無線チャネルでの負荷が平滑化され得る。特に、クラスタの位置に応じてチャネルが決定されることにより、近接したクラスタでは、異なるチャネルが使用されるようにすることができ、近域の無線通信の干渉を予防することができる。
なお、本実施の形態では、所定の受信電力以上で受信したビーコン(Helloパケット)の個数をカウントすることによってクラスタヘッドを決定する場合について説明したが、そうでなくてもよい。例えば、ビーコンに現在位置が含まれている場合には、各移動体1は、受信したビーコンに含まれる現在位置を用いて、重心位置を算出し、その算出した重心位置に最も近い現在位置である移動体1が、クラスタヘッドとなってもよい。ここで、重心位置の算出では、各移動体1は、同じ重みで取り扱われることが好適である。また、クラスタヘッドの移動体1の移動のスピードが速い場合には、各クラスタメンバがクラスタヘッドにアクセスできなくなるまでの期間が短くなると考えられる。したがって、各移動体1間で、直近の所定期間における平均スピードを交換し、その平均スピードの最も遅い移動体1をクラスタヘッドとしてもよく、または、その平均スピードが所定の閾値以下の移動体1から、別の基準、例えば、カウント数や重心位置等の基準によって、クラスタヘッドの移動体1が決定されてもよい。このように、クラスタヘッドの決定方法には種々のものがあり得る。
また、本実施の形態では、近域通信部22がクラスタ内通信部31とビーコン送信部32とを備えた場合について説明したが、そうでなくてもよい。近域通信部22は、クラスタ内通信部31のみを有していてもよい。すなわち、クラスタ内通信部31が近域通信部22であってもよい。その場合には、クラスタ内通信部31が、ビーコンと同様の信号をも送信してもよい。例えば、クラスタ内通信部31が無線LANによる通信を行う場合には、あらかじめ決められた送信電力でブロードキャストの送信を行うことが、ビーコンの送信であってもよい。
また、クラスタを構成する際に、クラスタヘッド宣言を所定の受信電力以上で受信することができない移動体1が存在することも考えられる。すなわち、クラスタを構築する処理が終了した時点において、いずれのクラスタにも属さない移動体1が存在することもあり得る。その場合には、いずれのクラスタにも属さない移動体1のみで、再度、クラスタを構築する処理が行われてもよい。そのように、クラスタを構築する処理が2回またはそれ以上行われることによって、最終的に、いずれのクラスタにも属さない移動体1の個数は、低減すると考えられる。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、移動体1や情報取得装置2に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における情報取得装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、自律的に移動する移動体に設けられた情報取得装置として機能させ、相互に近接する複数の移動体によって構成されるクラスタにおいて、自移動体がクラスタヘッドであるか、クラスタメンバであるかを判断する判断部、自移動体がクラスタヘッドである場合に、広域の無線通信を行う広域通信部を介して情報サーバから情報を受信して保存し、クラスタメンバの移動体からの要求に応じて、保存している情報を、広域通信部による無線通信よりも狭い範囲で無線通信を行う近域通信部を介してクラスタメンバの移動体に送信し、自移動体がクラスタメンバである場合に、情報サーバで管理されている情報を、クラスタヘッドの移動体に要求し、クラスタヘッドの移動体から近域通信部を介して受信する情報管理部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報の通信を行う通信部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
図8は、上記プログラムを実行して、上記実施の形態による情報取得装置2を実現するコンピュータシステム900の一例を示す図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図8において、コンピュータシステム900は、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムや、アプリケーションプログラム、システムプログラム、及びデータが記憶されるフラッシュメモリ等のROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、タッチパネル914と、無線通信モジュール915と、MPU911、ROM912等を相互に接続するバス916とを備える。また、タッチパネル914に代えて、ディスプレイと、マウスやキーボード等の入力デバイスとを備えていてもよい。また、ユーザからの入力の受け付けや、ユーザに対する表示を行わない場合には、コンピュータシステム900は、タッチパネル914を備えていなくてもよい。
コンピュータシステム900に、上記実施の形態による情報取得装置2の機能を実行させるプログラムは、無線通信モジュール915を介してROM912に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、ネットワークから直接、ロードされてもよい。
プログラムは、コンピュータシステム900に、上記実施の形態による情報取得装置2の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。