(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
(配置図)
本実施例を適用する領域内の物体の配置を示す配置図の例を
図1に示す。
図1は、工場内の装置や物体の配置を示したものであり、工場内は通路によって4つの領域(領域1〜領域4)に分かれており、移動ロボットRが通路を移動する。以下では、配置図の対象となる領域を「全領域」と称する。
図1の各領域に示した図形要素P1〜P3は、工作機械などのように予め設置場所が固定されている位置固定要素であり、図形要素A、B、C、D、Eは設置場所が変更される可能性がある要素である。破線は移動ロボットRが前回検出した配置を示し、実線は今回検出した配置を示す。図形要素Aは「要素回転」を行った図形を示し、図形要素Bは「場所移動」を行った図形を示し、図形要素Cは「寸法誤差」があった図形を示し、図形要素Dは前回の検出後に他の領域から当該領域に移動した「新規設置」の図形を示し、図形要素Eは前回の検出の際には存在していたがその後他の領域へ移動した「要素除去」の図形を示す。
【0012】
移動ロボットRは、
図1の矢印で示す進行方向に対して左右にそれぞれ所定の角度(θ/2)の監視範囲(全体でθ)を有する。移動ロボットRに搭載された距離センサによって角度θの監視範囲で測定されたデータに基づいて、領域内に存在する各図形要素の通路側に向いた面を二次元平面に投影した直線部分または曲線部分(総称して線分)で構成された配置情報が得られる。配置情報は、領域内に配置された物体に対応する図形要素の識別項、その図形要素を表す座標列からなる配置データを含む。
図1の図形要素A、B、C、Dのそれぞれに太線で示した部分は、移動ロボットRが
図1に示す位置にあるときに得られる各図形要素の監視可能部分である。
【0013】
移動ロボットRは、角度θの監視範囲内で、微小角度Δθ刻みで、移動ロボットRから各図形要素までの距離r
iを計測する。従って、角度θの監視範囲内で、角度と動径からなる極座標形式のデータ列{θ
i、r
i}が得られ、この角度と動径から各図形要素の直交座標形式のデータ列{x
i、y
i}が、x
i=x
P+r
icos(θ
i+α)、y
i=y
P+r
isin(θ
i+α)により求められる。但し、i=1〜nで、nはデータの数、|θ
i|≦θ/2、|θ
i+1−θ
i|=Δθである。ここで、θ
iは、移動ロボットRの移動方向に対する監視の角度であり、(x
P、y
P)は、移動ロボットRの位置座標であり、αは、正のx座標軸に対する移動ロボットRの移動方向の角度である。
【0014】
また、移動ロボットRは、移動しながら各図形要素までの距離r
iを計測するので、移動の度に、各図形要素の監視可能部分の同じ部分が繰り返し計測されるため、計測データの量が膨大になり、かつ、重複するデータが多くなる。従って、移動ロボットRが移動しながら全領域内をくまなく計測して、全領域の配置図を作成する際に、既に計測した領域内のデータは配置情報として登録しない、あるいは、データを適度な間隔で間引くなどの処理を行って、配置情報のデータ量を削減できる。本実施例における配置情報は、上記のようなデータ量削減の処理が行われているものとする。
【0015】
なお、以下ではデータ列を例えば{x
i、y
i}と表記し、単一のデータを例えば(x
P、y
P)と表記する。
【0016】
(システム構成)
本実施例を実行する移動ロボットRの構成を
図2に示す。移動ロボットRは計算機20で構成されており、計算機20では、CPU21、メモリ22、記憶装置24、及びセンシングデータ(実測データ)を取得するための距離センサ26がバスを介して接続されており、メモリ22には、本実施例の補正プログラム23が格納されており、記憶装置24には、元の配置情報(前回計測した配置情報)と作成し直した配置情報(今回計測した配置情報)を含む配置情報25が格納されている。この計算機20に表示装置を有する端末30を接続することにより、利用者は、記憶装置24に格納されている配置情報25を確認できる。
【0017】
(配置情報)
配置情報25の構成例を
図3に示す。配置情報25は、番号25a、各図形要素の識別子である図形要素25b、前回の配置データ25c、今回の配置データ25d、及び各図形要素の変更状況25eからなる。配置データは、各図形要素を構成するx−y座標のデータ列、例えば{x
A、i、y
A,i}で構成される。
【0018】
また、前回の配置データ25cにおけるx−y座標は、例えば{x
A、i、y
A,i}のように小文字で表記し、今回の配置データ25d(実測データ)におけるx−y座標は、例えば{X
A、i、Y
A,i}のように大文字で表記する。本実施例では、前回の配置データを最新のデータである実測データと比較することにより、記憶装置24に保存されている前回の配置データを実測データによって更新するかどうかを決める。即ち、実測データが、前回の配置データに対する基準データとなる。
【0019】
(処理フロー)
CPU21において実行される補正プログラム23の処理フローを
図4に示す。
【0020】
(A)配置の実測データの入力(401)
移動ロボットRが全領域を計測して得た配置の実測データを入力する。移動ロボットRに搭載された距離センサで測定された実測データであるセンシングデータの動径の変化に基づいて、2次元の座標列から、各図形要素に対応する直線または曲線(総称して線分)を切り出す。即ち、隣り合う2つの座標点の間で動径(r
i)の値が急激に変化する(|r
i+1−r
i|>δ
r、δ
rは動径の急激な変化の判定のための閾値)場合は、隣り合う2つの座標点はそれぞれ別の図形要素に属していると判断する。このように切り出した各図形要素の実測データを今回の配置データ25dとして
図3の配置情報25に登録する。
【0021】
前回の配置データと今回の実測データとで、動径が急激に変化する場所(座標)が類似しているかどうかを判定することで、双方の図形要素が同一かどうかを判定できる。上記の判定により、
図3の図形要素Dのように、今回の実測データはあるが、前回の配置データに該当するものがない場合、あるいは、
図3の図形要素Eのように、前回の配置データはあるが、今回の実測データがない場合もある。このように該当するデータがない場合は、
図3では「−」と表記する。
【0022】
(B)配置データの差分の評価(402)
距離センサで測定された実測データと、既に
図3の配置情報25に格納されている前回の配置データ25cとの差分を評価する。差分の評価は以下の手順で行う。
【0023】
一つの図形要素A
kについて実測データからのずれ(分散)を求める。即ち、図形要素A
kの分散S
k=(Σ
i=1〜mk((x
k,i−X
k,i)
2+(y
k,i−Y
k,i)
2))/m
kである。但し、m
kは、図形要素A
kを構成する2次元座標の数である。更に、配置情報全体について実測データからのずれ(分散)をS=(Σ
k=1〜nS
k)/nによって求める。但し、nは図形要素の数である。
【0024】
また、図形要素に関係なく配置情報全体のずれを評価する場合は、上記のずれ(分散)Sを、S′=(Σ
k=1〜nm
kS
k)/(Σ
k=1〜nm
k) によって求める。このS′における分子はΣ
k=1〜nΣ
i=1〜mk((x
k,i−X
k,i)
2+(y
k,i−Y
k,i)
2)であり、分母は座標の組(座標点)の総数である。S′は上記のSの右辺の各項の1/nをm
k/(Σ
k=1〜nm
k)に置き換えたものである。(m
k/(Σ
k=1〜nm
k))/(1/n)=m
k/m、m=(Σ
k=1〜nm
k)/nは図形要素の座標点の数の平均値である。
【0025】
(C)全体の誤差の判定(403)
偏差σ=√(S)又は√(S′)>ε(全体のずれの基準値)ならば、記憶装置24に保存されている前回の配置データを実測データによって更新する必要がある。偏差σ=√(S)又は√(S′)≦εならば、前回の配置データは変更されていないので、実測データによる配置データの更新は行わずに終了する。
【0026】
(D)各図形要素の変更状況の判定(404)
前回の配置データと実測データとの座標データの比較によって、各図形要素の変更状況を判定し、その判定結果を
図3の配置情報25の変更状況25eに格納する。なお、ステップ404の処理の詳細を
図5を参照して後述する。
【0027】
(E)実測データによる配置情報の更新(405)
記憶装置24に保存されている前回の配置データを実測データによって更新する。
【0028】
(F)変更された図形要素の識別表示(406)
ステップ402で求めた図形要素A
kの分散S
kを用いて、図形要素A
kの偏差σ
k=√(S
k)>δ
EL(図形要素単位のずれの基準値δ
EL<ε全体のずれの基準値)となって特にずれが大きい図形要素A
kを、端末30の画面に表示された配置情報上に識別表示することもできる。
【0029】
(変更状況の判定)
図5に、
図4のステップ404の各図形要素の変更状況の判定処理の詳細を示す。
【0030】
前回の配置データと実測データとの座標データの比較によって、各図形要素の変更状況を判定する際に、図形要素の移動や回転などが施されていても前回の配置データと実測データのそれぞれの図形要素が同一であるかを判定する。
【0031】
ステップ501では、2つの直線部分が所定の角度で繋がっている図形要素(多角形図形の角の部分に相当)が、前回の配置データと実測データとで同一の図形要素として判定できるかを確認する。その後、同一と判定された図形要素について、ステップ502以降の図形要素の変更状況の判定を行う。図形要素の移動や回転などを判定するためには、少なくとも3点からなる図形要素が必要である。単なる直線部分では図形要素の移動や回転を判別できない。同一図形要素の判定では、移動ロボットRに搭載された距離センサによって測定された、角度と動径からなるデータ列{θ
i、r
i}を用いる。同一図形要素の判定の詳細は
図6を用いて後述する。
【0032】
上記のように、前回の配置データと実測データとで同一の図形要素として判定された図形要素について、ステップ502〜512の変更状況判定処理を行う。
【0033】
図3の配置情報25における図形要素Dのように、実測データ25dが前回の配置データ25cに存在しない場合(502)、「新規設置」と判定される(503)。
図3の配置情報25における図形要素Eのように、前回の配置データ25cに対応する実測データ25dが存在しない場合(504)、「要素削除」と判定される(505)。
【0034】
ステップ402で求めた図形要素A
kの分散S
kを用いて、図形要素A
kの偏差(誤差)σ
k=√(S
k)>δ
EL(図形要素単位のずれの基準値δ
EL<ε全体のずれの基準値)となってずれが大きいかどうかを判定し(506)、ずれが大きい場合はステップ510以降を実行する。そうでない場合(誤差σ
k≦δ
ELずれの基準値)は、図形要素A
kの誤差が図形要素単位のずれの基準値δ
ELに比べて十分小さいかどうかを判定し(507)、誤差がずれの基準値に比べて十分小さい場合は、当該図形要素は、
図1のP1やP2のように位置が固定された要素と判定し(508)、そうでない場合は、実測データ25dによって配置情報を補正する(509)。
【0035】
ステップ510では、実測データ25dと前回の配置データ25cとのそれぞれ対応する点を結んだ差分ベクトルのx又はyの成分の符号が、それぞれの差分ベクトルで同一かどうかを判定する。符号が同一であれば、「場所移動」と判定される(512)。「場所移動」の場合、それぞれの差分ベクトルは互いに平行になる。一方、符号が同一でなければ、「要素回転」と判定される(511)。「要素回転」の場合、それぞれの差分ベクトルの向きは、時計方向又は反時計方向に順に回転する。
【0036】
上記の処理により、前回の配置データと実測データとの間で変更があったかどうかの判定だけでなく、変更があった場合に、各図形要素の変更の状況を把握できる。
【0037】
(同一図形要素の判定)
図6は、
図5のステップ501の同一図形要素の判定処理を示す。判定の対象となる図形要素は、S−Mの直線部分とM−Eの直線部分が点Mで角度φをなす角度で繋がっている図形要素である。S−Mの直線部分の長さはR1、M−Eの直線部分の長さはR2であり、破線で示したS−Eの直線部分の長さはR3である。以下では、判定の対象となる図形要素をS−M−Eと略記する。
【0038】
移動ロボットRが点Oに位置している時のS、M、Eに対する動径はそれぞれr1、r2、r3であり、2つの動径r1とr2のなす角をΔθ1、2つの動径r2とr3のなす角をΔθ2とすると、R1、R2、及びR3は、距離センサによって得られるr1、r2、r3、Δθ1、及びΔθ2を用いて、
図6の式(1)、(2)、(3)に示すように表される。更に、角度φは、
図6の式(1)、(2)、(3)によって求めたR1、R2、及びR3を用いて、
図6の式(4)に示すように表される。
【0039】
移動ロボットRが点O′に位置(移動)している時のS、M、Eに対する動径はそれぞれr1′、r2′、r3′であり、2つの動径r1′とr2´のなす角をΔθ1′、2つの動径r2′とr3′のなす角をΔθ2´とすると、R1′、R2′、及びR3′は、距離センサによって得られるr1′、r2′、r3′、Δθ1′、及びΔθ2′を用いて、
図6の式(5)、(6)、(7)に示すように表される。更に、角度φ′は、
図6の式(5)、(6)、(7)によって求めたR1′、R2′、及びR3′を用いて、
図6の式(8)に示すように表される。
【0040】
式(1)〜(4)が前回の配置データに対応する配置情報の関係式とし、式(5)〜(8)が今回の配置データ(実測データ)に対応する配置情報の関係式としたとき、前回の配置データによる図形要素S−M−Eと、実測データによる図形要素S−M−Eとが同一図形要素と判定されるためには、
図6の式(1)〜(8)から求められる直線部分の長さと角度が式(9)に示す条件が満たせばよい。
図6の(9)の条件式は、厳密な等号でなくても、所定の誤差の範囲内で等号が成立しているものとしてもよい。
【0041】
(配置情報の対応関係の補正)
上記の実施例では、各図形要素について、前回の配置データと今回の配置データ(実測データ)との間で、図形要素を構成する複数の座標のそれぞれが対応しており、かつ、座標点の数も同じであるとして説明した。しかし、前回の配置データを取得した時の移動ロボット移動経路と、今回の配置データを取得した時の移動ロボット移動経路とが全く同じというわけではないので、同じ図形要素について、前回の配置データと今回の配置データとの間で、図形要素を構成する複数の座標のそれぞれが対応しておらず、かつ、座標点の数も同じではない可能性がある。
【0042】
一方、本実施例では、移動ロボットRに搭載された距離センサによって測定されたセンシングデータに基づいて、全領域内の配置情報の変更の有無の検知、更には、各図形要素の変更状況の把握を目的としているため、各図形要素に関する配置データが全て揃っている必要はなく、上記の目的を達成できる程度の配置データがあればよい。
【0043】
そこで、
図4のステップ402において、元の配置データと作成し直した配置データとの間の差分を評価し、各図形の配置変更か、単なる配置情報の誤差かを判別する際に、元の配置データの座標列と作成し直した配置データの座標列との対応付けを、以下のように補正する。以下では、作成し直した配置データを基準として、元の配置データを実測データに対応付けるときの対応関係の補正について説明する。
【0044】
元の配置データの座標列を{x
A、i、y
A,i}(i=1〜n)とし、実測データの座標列を{X
A、j、Y
A,j}(j=1〜m)とし、以下のように座標列の対応付けを1点ずつ移動させながら、
図4のステップ402と同様に、元の配置データと実測データとの差分を評価し、差分の値が最小となる移動量に基づいて、元の配置情報と実測データとの対応関係を補正する。即ち、元の配置データと実測データとの差分の値が最小になるとき、元の配置データの座標列と実測データの座標列とが対応しているものと推定する。元の配置データと実測データのそれぞれの座標列に含まれる座標点の数(n、m)の大小関係によって、以下のような対応付けを行う。
【0045】
n<mの場合は、実測データの範囲内で元の配置データと対応付ける部分を移動させ、最初{x
A、i、y
A,i}(i=1〜n)と{X
A、j、Y
A,j}(j=1〜n)を対応させ(移動量=0)、次に{x
A、i、y
A,i}(i=1〜n)と{X
A、j、Y
A,j}(j=2〜n+1)を対応させ(移動量=1)、・・・・、最後に{x
A、i、y
A,i}(i=1〜n)と{X
A、j、Y
A,j}(j=m−n+1〜m)を対応させ(移動量=m−n)、その中で差分の値が最小となる移動量に基づいて、元の配置データと実測データとの対応関係を補正する。
【0046】
n≧mの場合は、元の配置データの範囲内で実測データと対応付ける部分を移動させ、最初{x
A、i、y
A,i}(i=1〜m)と{X
A、j、Y
A,j}(j=1〜m)を対応させ(移動量=0)、次に{x
A、i、y
A,i}(i=2〜m+1)と{X
A、j、Y
A,j}(j=1〜m)を対応させ(移動量=1)、・・・・、最後に{x
A、i、y
A,i}(i=n−m+1〜n)と{X
A、j、Y
A,j}(j=1〜m)を対応させ(移動量=n−m)、その中で差分の値が最小となる移動量に基づいて、元の配置データと実測データとの対応関係を補正する。