(58)【調査した分野】(Int.Cl.,DB名)
互いに連携して同一の目的を達成する複数のロボットからなるロボット群におけるロボット間の時間同期方法であって、前記複数のロボットのうちの1つのロボットが他のロボットに対して通信を行う場合に中継するロボットの数をホップ数とした場合において、
前記ロボットは、前記ロボット群において他のロボットと同期をとるための現在時間と、
前記他のロボットに対する各ホップ数と、を情報として有しており、
(A)前記ロボット群における各ロボットについて、それぞれが有する各ホップ数の合計値を算出し、
(B)前記合計値が最も小さいロボットをマスターとし、かつ、マスター以外の全てのロボットをスレーブとして定め、
(C)前記スレーブが有する現在時間を前記マスターが有する前記現在時間に置き換える、ことを特徴とするロボット間の時間同期方法。
(D−3)新たなロボットが前記ロボット群に加入する場合においては、前記新たなロボットは前記スレーブとする、ことを特徴とする請求項1又は2に記載の時間同期方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1には、GPSを用いてGPSデータに含まれる時刻をマスタークロックとして全てのロボットに同期させる方法が記載されている。特に、特許文献1においては、空間情報についても配信を行うことによって精度を高める点に特徴を有している。
【0006】
また、特許文献2には、IEEE1588規格であるPTP(Precision Time Protocol)を用いてネットワーク内で時間同期を行う方法が記載されている。この方法は、マスターアンドスレーブ方式を採用して、ネットワーク内の時間同期を行うものであり、ネットワーク内の1台のPCをマスター、それ以外全てのPCをスレーブとして、マスターのクロックに同期させるものである。具体的には、マスターは、ネッワーク内の各クロックを比較しBMC(Best Master Clock)アルゴリズムと呼ばれる分散アルゴリズムを実行して、最も優れた特性を持つ品質のクロックを検出し、これによって検出されたクロックをマスタークロックとして用いることによって、スレーブクロックを同期するというものである。
なお、BMCアルゴリズムとは、マスタークロックがネットワークから削除された場合や、特性の変更により品質がベストでなくなった場合には、ネットワーク内のクロックから新規マスタークロックを自動的に決定するというものである。また、この例において、スレーブでのマスターへの時間同期の方法については、クロックサーボと呼ばれる機構により実行するものを用いており、これは、マスターとスレーブ間の時間差(オフセット)と伝送遅延時間を計測し、PI制御器とlow−passフィルタにより、漸化的に目標時間に合わせて静定させている。
【0007】
ここで、上述した特許文献1における方法の場合、例えば、グリニッジ標準時の絶対時刻に同期をとる方法やD−GPSの基地局、電波時計の標準電波を活用する方法等が有効な手段となる。しかし、ビル間、屋内等にはGPSデータを受信できないためロボットの位置等によっては、定常的に時間同期の精度が確保できないといった問題が発生する場合がある。
【0008】
この点において、一方、関連する複数のロボットのシステム内で相対的に同期がとれていればよいという要求が多いため、上述した特許文献1における問題に対して特許文献2における方法の方が有効である場合がある。
しかし、特許文献2に記載された手法では、時間同期をとる必要があるロボットの数が多い場合等において、静的なネットワークで静定するまで通常数分から10分程度の時間を要することがある。そのため、頻繁にロボットが離脱、加入する場合や、ネットワークトポロジーが変化する場合において、マスターの頻繁な交代によってネットワークの静定に多大な時間を要する場合があるという問題があった。
【0009】
そこで、本発明の目的は、ノードの離脱、加入又はこれによるネットワークトポロジーの変化が頻繁に発生する環境においても、短い時間でかつ誤差の少ない時間同期を実現するロボット間の時間同期方法を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明によれば、互いに連携して同一の目的を達成する複数のロボットからなるロボット群におけるロボット間の時間同期方法であって、前記複数のロボットのうちの1つのロボットが他のロボットに対して通信を行う場合に中継するロボットの数をホップ数とした場合において、
前記ロボットは、前記ロボット群において他のロボットと同期をとるための現在時間と、
前記他のロボットに対する各ホップ数と、を情報として有しており、
(A)前記ロボット群における各ロボットについて、それぞれが有する各ホップ数の合計値を算出し、
(B)前記合計値が最も小さいロボットをマスターとし、かつ、マスター以外の全てのロボットをスレーブとして定め、
(C)前記スレーブが有する現在時間を前記マスターが有する前記現在時間に置き換える、ことを特徴とするロボット間の時間同期方法が提供される。
【0011】
また、本発明によれば、(D−1)前記スレーブが前記ロボット群を離脱した場合には、前記マスターの変更は行わず、
(D−2)前記マスターが前記ロボット群を離脱した場合には、前記(A)及び前記(B)によって新しいマスターを決定する。
【0012】
さらに、本発明によれば、(D−3)新たなロボットが前記ロボット群に加入する場合においては、前記新たなロボットは前記スレーブとする。
【0013】
また、本発明において、複数のロボット群における各ロボットについて時間同期を行う場合においては、
前記(A)を行う前に、前記複数のロボット群の中から基準となる1つのロボット群を選定し、前記選定されていないロボット群のマスターが有する現在時間を前記選定されたロボット群のマスターが有する現在時間に置き換える。
【発明の効果】
【0014】
本発明によると、ロボット群内の各ノード間のホップ数を用いてマスターを決定する方法を採用することによって、同期が必要な系において相対的に同期することのみを行っている。そのため、例えば、ネットワークが静定するまで時間を要するクロック品質を評価指標とした選定アルゴリズムのような複雑なアルゴリズムを取り入れる必要がない。
また、ロボット群からロボットが離脱又は加入した際において、マスターの変更回数を減らすことが可能になるため、ノードの離脱、加入及びネットワークトポロジーの変化が頻繁して発生する環境においても、短い時間でかつ誤差の少ない時間同期を実現することが可能になる。
さらに、他のロボット群との間で時間同期を行う場合には、ロボット群を跨いで同期を行う必要があるのはマスター間でのみであるため、複数のロボット群間において時間同期を行う場合においても効率的に行うことが可能になる。
【発明を実施するための形態】
【0016】
本発明の好ましい実施形態を図面に基づいて説明する。なお、各図において共通する部分には同一の符号を付し、重複した説明を省略する。
【0017】
図2は、本発明における複数のロボットによる時間同期についての説明図であり、
図3は、本発明において各ロボットをロボット群毎編成して番号を付与した場合の説明図である。
この図において、11はロボット、12は各ロボットの監視エリア、14は通行可能領域、15は障害物である。
なお、
図3においては、ロボット群相互の位置関係を明確にするために、
図2の状態よりもロボット群相互の間隔を広く記載している。
【0018】
図2における各ロボット11は、
図3で示すように監視エリア12が重複しているロボットによるロボット群(小隊)を編成している。この例においては、
図3に示すように、それぞれ5つのロボットからなるロボット群A〜Cが存在していることになる。各ロボット群は、
図3におけるロボット群A及びロボット群Bのように各ロボットが一直線上に並んだ、いわゆるライン型のネットワークトポロジーを形成する場合のみでなく、ロボット群Cのようなツリー型等のネットワークトポロジーを形成する場合もある。
この例において、ロボット11は、地上を走行する車両型ロボットや上空から監視可能なヘリコプター等を想定している。また、自律走行が可能なロボットであれば無人ロボットであってもよい。
【0019】
監視エリア12は、各ロボット11が目的に沿った監視が可能なエリアである。
監視エリア12が一部重複する複数のロボット11によってロボット群を編成することによって、一機のロボットによる監視エリアを超えた広範囲にわたる監視を行うことが可能になる。
【0020】
ここで、後述するように同一ロボット群内のロボット11は、各ロボット11間で情報のやり取りを行うが、例えばロボット群Aにおいて上端のロボット11から下端のロボット11に対してデータを送信する場合において、上端のロボット11と下端のロボットとの物理的な距離が離れているため通信の伝達ができない場合が考えられる。
【0021】
この場合においては、上端のロボット11と下端のロボット11との間に存在する3つのロボット11のうち1つ以上を中継することで通信を行うことが可能になる。そのため、各ロボット11は、同一ロボット群内の他のロボット11のうち1台でも通信可能な位置に存在していれば、ロボット群を構成するロボット11として監視等のミッションを行うことができるということになる。
【0022】
図4は、本発明におけるターゲットを複数のロボットによって監視する場合の説明図である。
この図において、11d、11eはロボット、16はターゲットであり、ターゲット16はあるロボット11の監視エリア12の中に複数存在する場合もある。
また、この図においては、時間t0においては、ロボット11eの監視エリア12内にターゲット16が存在しており、時間t0から時間t1経過後において、ターゲット16はロボット11dとロボット11eの監視エリア12が重複する位置に移動している状況を表している。
【0023】
図4に示すように、複数のロボット11によってターゲット16の監視を行う場合、そのターゲット16の監視を行うロボット11が頻繁に変更することが想定される。そのため、監視を行うロボット11の変更の有無に関わらず監視を継続するために、各ロボット11間でデータのやりとりを行う必要がある。
具体的には、ターゲット16の監視を行っているロボット11の情報を、所定の間隔をもって同一ロボット群内の他のロボット11に送る必要がある。
【0024】
上述の送受信を行うデータとして、例えば以下の項目を有するデータの送受信を行うことが考えられる。
(1)ヘッダ(データを発信するロボット11のID等)
(2)現在時間
(3)データを発信するロボット11の現在位置(緯度、経度等)
(4)ターゲットのID
(5)ターゲットの現在位置
(6)ターゲットの進行方向
(7)フッタ(セキュリティを含めたデータ認証用)
【0025】
同一ロボット群内の各ロボット11は、他のロボット11から送信された上記データを認識することによって、自らの監視エリア12にターゲット16が存在しないときであっても、同一ロボット群内に存在しているターゲット16について常に把握することが可能になる。
【0026】
また、自らの監視エリア12にターゲット16が侵入してきた場合、このターゲット16がロボット群内の他のロボット11がそれまで監視をしているものなのか、ロボット群内の全ロボット11の監視エリア12に初めて侵入してきたものなのかを判断する必要がある。そのため、過去に(主に直前に)他ロボット11から受け取ったデータを把握しておくことによって、かかる判断が可能になる。そして、そのターゲット16が、ロボット群内の全ロボット11の監視エリア12に初めて侵入してきたものである場合には、上記(4)におけるターゲットIDを自ら付与する。
これによって、ロボット群内の各ロボット11は、他のロボット11が監視していたターゲット16について、過去の監視データを引継ながら監視を継続することが可能になる。
【0027】
なお、単一ロボット11の監視エリア12の中に2つ以上のターゲットが存在する場合においては、上記(4)〜上記(6)が繰り返されたデータを送信する形であっても、ターゲットごとに上記(1)〜上記(7)からなるデータを作成して送信する形であってもよい。
【0028】
ここで、上述した送受信を行うデータは、上記(2)の現在時間に関係付けてターゲット16についての情報を纏めたものであるところ、この現在時間は各ロボット11がそれぞれ有している現在時間に依存しているため、他のロボット11との間に誤差が生じる場合が考えられる。そのため、同一ロボット群内における各ロボット11は定期的にそれぞれが有する現在時間について同期をとることによって誤差を解消する必要がある。
【0029】
本発明においては、以下の方法によって時間同期を行う。
(手順1)
実際の各ロボット11の現在位置と各ロボット11間における通信可能範囲の情報(この場合においては
図3の状態についての情報)を元に、
図5に記載するような模式図を作成する。
図5において、21はロボット11に該当するノードであり、22はロボット11間において通信可能な状態にあることを示す直線(以下、枝と呼ぶ)である。
この図において、ロボット群Aにおけるノード21をノードA1〜A5とし、ロボット群Bにおけるノード21をノードB1〜B5とし、ロボット群Cにおけるノード21をノードC1〜C5として表記した場合、例えばノードA3は、ノードA2及びノードA4と通信可能な状態にあることを示しており、また、ノードC3は、ノードC1、ノードC4及びノードC5と通信可能な状態にあることを示している。なお、
図5における各ノード21の番号は
図3における各ロボット11に付した番号に対応している。
また、後述するように複数のロボット群は協調してミッションを行う場合もあるため、ロボット群を跨いだノード間であっても通信可能な場合には枝22が存在するものとして考える。この例においては、ノードA1とノードB4、及びノードB3とノードC2が通信可能であるということになる。
【0030】
(手順2)
次に、ロボット群内の各ノードにおいて、ロボット群内の他のノードまでのホップ数の合計値をそれぞれ算出する。
ここで、ホップ数とは、あるロボットが別のロボットに対して通信を行う場合において、中継する必要があるロボットの数のことである。例えば、ノードA5において、ノードA2と通信するためにはノードA4及びノードA3を中継する必要があるため、ホップ数は「2」になる。また、ノードC4において、ノードC1と通信するためにはノードC3を中継する必要があるため、ホップ数は「1」となる。
具体的に、例えばノードA2においては以下のようにホップ数の計算を行う。
(1)ノードA2からノードA1までのホップ数「0」
(2)ノードA2からノードA3までのホップ数「0」
(3)ノードA2からノードA4までのホップ数「1」
(4)ノードA2からノードA5までのホップ数「2」
よって、ノードA2についてのホップ数の合計値は「0」+「0」+「1」+「2」より「3」となる。
同様にロボット群AのノードA2以外のノードについてもホップ数の合計値を求めると、以下のようになる。
ノードA1:「0」+「1」+「2」+「3」=「6」
ノードA3:「0」+「1」+「1」+「0」=「2」
ノードA4:「2」+「1」+「0」+「0」=「3」
ノードA5:「3」+「2」+「1」+「0」=「6」
【0031】
(手順3)
次に、手順2で求めたロボット群Aにおける各ノードのホップ数の合計値のうち、これが最少であったノードをマスターとして決定し、それ以外のノードをスレーブとして決定する。
上記の例においては、ノードA3のホップ数の合計値である「2」は最少となるため、ロボット群AにおいてはノードA3がマスターとなる。
また、ロボット群B及びロボット群Cにおいても同様に計算すると、ロボット群BのマスターはB5になり、ロボット群CのマスターはC3となる。
なお、ホップ数の合計値が最少になるノードが複数存在する場合には、例えばノードの番号が最も若いものをマスターとする等の方法によって、マスターとなる1つのノードを決定する方法を採用してもよい。
【0032】
(手順4)
手順3において決定したマスターからそのロボット群におけるスレーブに対して、マスターが有する現在時間のデータをスレーブに送信することによって、同一ロボット群内の時間同期を図る。同一ロボット群内でこの時間同期を所定の時間間隔において行うことによって各ロボット11が有する現在時間のずれを解消することが可能になる。
なお、この方法においては時間同期をロボット群ごとに行うため、複数ロボット群が存在する場合においては、各ロボット群内で同期している時間に誤差がある可能性があるということになる。
【0033】
上記手順によるマスターの決定は、各ロボット群において新たなノードの加入又は離脱があった場合においても行われる場合がある。
具体的には、ロボット群からスレーブが離脱した場合においては、ロボット群の中でマスターのホップ数が最少であることに変化はないため、マスターの変更は行わないが、ロボット群からマスターが離脱した場合においては、新たなマスターを決定する必要があるため、上記手順に従って再度マスターの決定を行うことになる。
【0034】
また、ロボット群に新たなノードが追加された場合においては、新たなノードのホップ数を問わずスレーブとする。新たに加入したノードがマスターになる場合があるとすると、上記手順が頻繁に繰り返される可能性があるため、ネットワークが不安定になることを防止する必要があるからである。
【0035】
上述のように、ホップ数を用いてマスターを決定する方法を用いることによって、例えば、
図5におけるロボット群Aのようにバスライン型のネットワークトポロジーを構成している場合や、ロボット群CのようにノードC3を根としてツリー型のネットワークトポロジーを構成している場合だけでなく、ロボット群内のノードがスター型やリング型等のネットワークを構成している場合にあっても、そのネットワークトポロジーに関係なく、容易にマスターを決定することが可能になるため有効である。
なお、上記手順によってマスターを決定している最中に、ノードの加入又は離脱が発生してネットワークトポロジーが変更された場合には、マスターが離脱したためにやむを得ない場合を除き、ネットワークの安定性を考慮する観点からマスターの再決定は行わない方法を採用してもよい。
【0036】
図6は、本発明におけるノードの移動が発生した場合の説明図である。
図5の状態からロボット群AのノードA3がロボット群Bに移動した状態(ノードA3がロボット群Aから離脱し、かつ、ロボット群Bに加入した状態)について表示している。
【0037】
この例において、ロボット群AではマスターであるノードA3が離脱しているため、上記手順2を再度繰り返し、新たなマスターが決定される。また、ロボット群Bでは新たなノードが加入しているが、新たなノートはそのホップ数に関わらずスレーブとなるため、ロボット群Bに加入したノードA3はロボット群Bのスレーブとなることになる。なお、この例において、ロボット群Aの新たなマスターはノードA2又はノードA4になる。
【0038】
図7は、本発明におけるノードの離脱及び加入についての具体例である。
複数のロボット11(この例においては車両11)がロボット群を組んで高速道路を走行している場合を考える。
図7(a)に示すように10台の車両11が、それぞれ5台ずつロボット群Aとロボット群Bに分かれて走行している場合、上記手順2によるとロボット群A及びロボット群Bのマスターはそれぞれ真中を走行する車両になる。
【0039】
この場合において、
図7(b)に示すように、ロボット群Aにおいて先頭を走行していた車両11が、ロボット群Aから離脱し、
図7(c)に示すように、ロボット群Bに加入(合流)した場合を考えると、離脱及び加入を行った車両11は、ロボット群Aにおいてスレーブであったものであり、かつ、ロボット群Bにおいて新たな加入したノードはマスターにならない。そのため、上記離脱及び加入によってロボット群A及びロボット群Bのマスターは変更されないことになる。
【0040】
次に、複数ロボット群間の時間同期の方法について説明を行う。
図8は、本発明における複数ロボット群間における時間同期についての説明図である。この図において、31はマスター、32はスレーブである。
【0041】
図8(a)のような場合において、複数ロボット群におけるノードについて時間同期を行う場合、複数ロボット群について新たな1つのロボット群と考え、それぞれのロボット群におけるマスター31の中で1つのマスター31を選定して、上述した手順に従って時間同期を行う方法も可能である。
しかし、かかる場合、ロボット群の数やノードの総数によっては、マスターの決定及びスレーブに向けた時間同期に膨大な時間を要する場合があり、時間同期を行う可能性のあるロボット群数やノードの総数が不確定な状況においては妥当な方法ではない場合があるものと考えられる。
【0042】
そこで、本発明において、複数ロボット群間における時間同期を行う場合においては、
図8(b)に示すように複数ロボット群の各マスター31間でのみ時間同期を行い、その後、時間同期を行った各マスター31の所有する時計を基準として、各マスター31と同一ロボット群内のスレーブ32との間で時間同期を行う。
このマスター31間での同期は、例えば、複数のロボット群の中から基準となる1つのロボット群を選定し、選定されていないロボット群のマスター31が有する現在時間を選定されたロボット群のマスターが有する現在時間に置き換えることによって行うものであってよい。
なお、このロボット群の選定については、例えば、複数のロボット群のマスターのみで1つのロボット群を形成したと仮定し、それぞれのマスターのホップ数の合計値を求めて、この合計値が最も小さいマスターをこのロボット群におけるマスター(マスターオブマスター)として決定して、そのマスター(マスターオブマスター)のロボット群を選定する方法であってよい。
【0043】
または、各マスター31の所有する時計について、それぞれ相互の時間差をオフセットとして各マスター31が保持しておく方法であってもよい。
具体的には、例えば以下の手順で時間同期を行う。
(1)複数ロボット群間における時間同期を行う場合において、複数ロボット群の各マスター31の所有する時計の時間差をオフセットとしてそれぞれ取得する。なお、ここでは各マスター31間での時間同期は行わない。
(2)各ロボット群において各マスター31と同一ロボット群内のスレーブ32との間で時間同期を行う。
(3)異なるロボット群間において通信をする場合には、各マスター31を介して行い、ここで上記オフセットの加算又は減算処理を行ってから通信を行う。
【0044】
この方法によって、時間同期を行うロボット群の数やノードの総数に拘束されることなく、短時間でかつ極力誤差の小さい形で時間同期をすることが可能になる。
【0045】
本発明は上述した実施の形態に限定されず、本発明の要旨を逸脱しない範囲で種々変更を加え得ることは勿論である。