【実施例1】
【0015】
図1を参照して、実施例1のレーザシステム設置シミュレータのハードウェア構成を説明する。
図1において、シミュレータ100は、中央演算装置(CPU)101と、入力装置102と、表示装置103とから構成されている。CPU101は、シミュレーション処理の計算を実行する。入力装置102は、シミュレーションにおける各種条件を入力する。表示装置103は、実行結果を描画する。なお、シミュレータ100は、さらに図示しないメモリ、外部記憶装置等を備えている。
【0016】
図2を参照して、レーザシステム設置シミュレータの機能ブロックを説明する。
図2において、CPU101の内部の処理は、大きく8つで構成される。その構成は、ユーザ入力部110と、物体設定DB120と、センサ設定DB130と、環境構築部140と、オブジェクトDB150と、データシミュレータ部160と、測距DB170と、データ表示部180とである。
【0017】
ユーザ入力部110は、入力装置102からキーボードによるレーザセンサの位置、計測領域内の物体の位置などデータおよびマウスによる物体の移動情報を処理する。物体設定DB120は、入力された検知対象の物体形状を楕円形または矩形にて表して任意の存在する設定位置と設置角度に関する情報を記憶する。
【0018】
センサ設定DB130は、入力された計測領域内の各レーザセンサにおけるxyz座標でのレーザセンサ設定位置と照射角度に関する情報を記憶する。センサ設定DB130を利用して、各レーザセンサ位置のより詳細な設定をするため(ピッチ角、ロール角、ヨー角による姿勢決定)として、外部パラメータにてシミュレーション上の測距データの回転または換算をすることもできる。
【0019】
環境構築部140は、入力された物体設定DB120、センサ設定DB130の情報を基に、物体、レーザセンサの情報にオブジェクトIDを割り付けて、オブジェクトDB150を生成する。オブジェクトDB150は、オブジェクトID単位に構成され、オブジェクトの位置座標をフレームごとに保持する。
【0020】
データシミュレータ部160は、入力されたデータを基に複数のレーザセンサ設置に際し、計測領域に固定的に存在する物体に対して、計測領域における死角を考慮したレーザセンサ設置のシミュレーションをするため、擬似的な測距データの生成し、測距DB170に登録する。データシミュレータ部160は、物体の移動に伴う変化に対して経時的に物体とレーザセンサから照射されるレーザ光との交点演算を行なう。データシミュレータ部160は、交点演算結果に基づいて、測距データを更新する。
【0021】
測距DB170は、計測シミュレータの交点演算結果、レーザセンサと各物体と交点座標を計測データとして、フレームごとに保持する。フレームごとの要素として、レーザセンサが照射しているレーザ光の本数分の測距データを(x,y,z)座標で記録する。レーザセンサのレーザ光の本数は、センサ設定DB130のデータメンバである計測範囲133と計測分解能134により、式1で求まる。
レーザ光の本数=計測範囲/計測分解能+1…(式1)
データ表示部180は、レーザセンサの設置位置の確認のための機能として、オブジェクトDB150の情報を基に、矩形、円を指定して作成された物体およびレーザセンサを設定された座標、向きで描画する。また、データ表示部180は、レーザセンサから任意の範囲(距離、角度、分解能)にレーザ光の照射イメージを表示する。データ表示部180は、さらに、常設物に影響確認のための機能として、測距DB150に保持されている計測データの各座標(x,y,z)とレーザセンサを結ぶ直線を描画することで、レーザ光の照射イメージが矩形、円形の物体に照射状況を視覚化する。
【0022】
図3を参照して、フレームを説明する。
図3において、フレームは、計測周期(センサ設定DB130に設定された時間)ごとに形成されている。フレーム1ないしフレームNは、データストリームを形成する。
【0023】
図4を参照して、物体設定DBを説明する。
図4において、物体設定DB120は、矩形121と円形125に大別できる。矩形121のデータメンバは、4頂点122と、軸長123とである。一方、円形125のデータメンバは、楕円頂点126と、楕円径127とである。4頂点122は、矩形を構成する4つの座標である。軸長123は、矩形の2辺の長さである。楕円頂点126は、円の左上と右下の座標である。楕円径127は、長径と短径である。
【0024】
図5を参照して、センサ設定DBを説明する。
図5において、センサ設定DB130は、計測距離131と、向き132と、計測範囲133と、計測分解能134と、計測周期135とから構成されている。計測距離131は、レーザセンサが計測できる距離である。向き132は、レーザセンサの向きである。計測範囲133は、計測範囲角度(度)である。計測分解能134は、計測分解角度(度)である。計測周期135は、計測間隔時間(ms)である。
【0025】
図6を参照して、オブジェクトデータDBを説明する。
図6において、オブジェクトデータ150は、データメンバとして、オブジェクトID151と、オブジェクトタイプ152と、オブジェクトデータ153と、中心位置154とを含んで構成されている。オブジェクトID151は、オブジェクトの識別子である。オブジェクトタイプ152は、オブジェクトの種別(センサ、矩形、円形)である。オブジェクトデータ153は、オブジェクトタイプ別の要素データである。中心位置154は、オブジェクトの中心座標(フレーム数分)である。
【0026】
図7と
図8を参照して、測距データDBを説明する。
図7において、測距データDB170は、データメンバとして、タイムスタンプ171と、計測開始角度172と、計測終了角度173と、測距データ174とを含んで構成されている。タイムスタンプ171は、フレームの時刻である。なお、以下のデータメンバはフレーム数分繰り返す。計測開始角度172は、レーザセンサの計測開始角度(度)である。計測終了角度173は、レーザセンサの計測終了角度(度)である。測距データ174は、
図8で説明する。
【0027】
図8を参照して、測距データを説明する。
図8において、測距データ174は、ポイント番号1741と、座標(x,y,z)1742とで構成されている。ポイント数は、Nである。
【0028】
図9を参照して、測距データの生成処理を説明する。
図9において、シミュレータ100は、常設物のみではなく、任意に人の滞留、導線による影響確認のための機能として、任意の座標、向き、大きさで物体を設定できる。具体的には、オペレータは、画面に配置した物体を、マウスにより任意に動かす。この動作について、ユーザ入力部301は、入力を受け付ける(S301)。計測周期タイマ割り込み(S302)は、設定されたセンサ設定DB130のレーザセンサの計測周期135を基に、一定周期に発生する。シミュレータ100は、発生した計測周期タイマ割り込み(S302)に基づいて、フレームカウンタ190を更新する(S303)。シミュレータ100は、計測周期タイマ割り込み(S302)の受信により、現時点で選択されている物体のIDとマウスの座標を取得し、物体のIDおよび移動位置(環境情報)を得る。
【0029】
シミュレータ100は、オブジェクトDB150の物体のIDと一致するオブジェクトID151の中心位置154のフレームカウンタ190の示すフレーム番号の領域に、マウスの座標を入力する(S304)。シミュレータ100は、シミュレーション開始を判定する(S306)。ステップ306でNOのとき、シミュレータ100は、ステップ301に遷移する。シミュレーション開始(S306:YES)まで、シミュレータ100は、本処理を繰り返すことで、物体の移動をオブジェクトDB150に入力する。
【0030】
入力されたオブジェクトDB150を基に、シミュレータ100は、複数のレーザセンサ設置に際し、擬似的な測距データの生成のため、1フレームごとの物体とレーザセンサから照射されるレーザ光との交点演算を行ない、測距データを測距データDB170に出力するシミュレーション処理を実行する(S307)。なお、処理されるオブジェクトDB150の読み取り領域および出力される測距データDB170を記録する領域は、シミュレータカウンタ195が示すフレーム番号の領域を使用する。
【0031】
シミュレータ100は、測距データを表示するか判定する(S308)。YESのとき、シミュレータ100は、オブジェクトDB150および測距データDB170よりシミュレータカウンタ195が示すフレーム番号の情報を取得して描画処理を行なう(S309)。ステップ309の後およびステップ308でNOのとき、シミュレータ100は、データ生成の終了を判定する(S311)。YESのとき、シミュレータ100は、終了する。ステップ311でNOのとき、シミュレータ100は、ステップ307に遷移する。
【0032】
シミュレータカウンタ195は、シミュレータタイマ割り込みにより、更新される(S312)。なお、ステップ311において、シミュレータカウンタ195が、フレームカウンタ190と同値になった時点で、データ生成を終了する。
【0033】
図10を参照して、シミュレーション環境を説明する。
図10において、シミュレーション環境は、10m×10mの部屋である。部屋の左下の角を基準として、高さ方向をz軸として、xy平面を右手系で定義する。xy平面の座標(4.5,7.5)(単位:m)には、直径1mの円柱300が立っている。また、座標(7.5,5.0)には、一辺1mの角柱310が立っている。なお、座標位置は、円柱300と角柱310の中央基準である。
【0034】
図11を参照して、レーザセンサ照射を説明する。
図11Aにおいて、レーザセンサのオブジェクト情報は、オブジェクトID151と、オブジェクトタイプ152と、オブジェクトデータ153と、中心位置154とから構成されている。オブジェクトデータ153は、さらに計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを含む。中心位置154は、フレーム1ないしフレームNを含む。
【0035】
オブジェクトID151は、3である。オブジェクトタイプ152は、センサである。計測距離は、20mである。向きは、ロール角:0度、ピッチ角:0度、ヨー角:0度である。計測範囲は、270度である。計測分解能は、0.5度である。計測周期は、40msである。また、フレーム1は、(0,0,0)である。なお、レーザセンサ200は、移動しないので、フレーム2以降のデータは、無効値が設定されている。
【0036】
図11Bにおいて、レーザセンサ200は、20m×20mの部屋の中央付近にy軸方向に向けて設置されている。ヨー角:0度は、y軸方向である。レーザセンサ200は、±135度方向に、541本のビームを送り、反射波を検出する。しかし、
図11Bは、反射波を検出しない状態を表示している。
【0037】
なお、
図11Bのみ、20m×20mの部屋であり、他のシミュレーション環境は、
図10の通りである。また、レーザセンサ200の周辺は、レーザ光(ビーム)の記載を省いた。これは、図面の簡略化のためであり、他の図面でも同様である。
【0038】
図12を参照して、
図10のシミュレーション環境で不適切にレーザセンサを任意に配置した場合に死角が検出されたシミュレーション結果を説明する。まず、
図12Aおよび
図12Bを参照して、物体のオブジェクトDBを説明する。
【0039】
図12Aにおいて、円柱300のオブジェクトDB150Aは、オブジェクトID151として1を保持する。オブジェクトタイプ152は、円形である。円形は、円柱300の平面図での形状である。オブジェクトデータ153として、楕円頂点と、楕円形とを保持する。中心位置154のフレーム1に(450,750,0)(単位:cm)を保持する。
【0040】
図12Bにおいて、角柱310のオブジェクトDB150Bは、オブジェクトID151として2を保持する。オブジェクトタイプ152は、矩形である。矩形は、角柱310の平面図での形状である。オブジェクトデータ153として、4頂点と、軸長とを保持する。中心位置154のフレーム1に(750,500,0)(単位:cm)を保持する。
【0041】
図12Cと
図12Dを参照して、レーザセンサのオブジェクトDBを説明する。
図12Cにおいて、レーザセンサ200−1のオブジェクトDB150Cは、オブジェクトID151として3を保持する。オブジェクトタイプ152は、センサである。オブジェクトデータ153として、計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを保持する。計測距離は、20mである。向きは、ヨー角が−45度であり、x軸となす角である。計測範囲は、270度である。計測分解能は、0.5度である。計測周期は、40msである。中心位置154のフレーム1に(0,1000,0)(単位:cm)を保持する。
【0042】
図12Dにおいて、レーザセンサ200−2のオブジェクトDB150Dは、オブジェクトID151として4を保持する。オブジェクトタイプ152は、センサである。オブジェクトデータ153として、計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを保持する。計測距離は、20mである。向きは、ヨー角が135度であり、x軸となす角である。計測範囲は、270度である。計測分解能は、0.5度である。計測周期は、40msである。中心位置154のフレーム1に(1000,0,0)(単位:cm)を保持する。
【0043】
図12Eと
図12Fを参照して、レーザセンサの死角確認を説明する。
図12Eにおいて、図の左上角である座標(0,1000,0)(単位:cm)に設置され、ヨー角−45度のレーザセンサ200−1は、円柱300と、角柱310の背後のセンシングができない。
【0044】
図12Fにおいて、
図12Fの右下角である座標(1000,0,0)(単位:cm)に設置され、ヨー角135度のレーザセンサ200−2は、円柱300と、角柱310の背後のセンシングができない。
【0045】
図12Gを参照して、レーザセンサシステムの死角を説明する。
図12Gは、
図12Eと
図12Fとを重ね合わせた図である。レーザセンサ200−1、円柱300、角柱310、レーザセンサ200−2がこの順で円弧上に載っており、円柱300と角柱310の間に、レーザセンサ200−1からもレーザセンサ200−2からも見えない死角が存在する。
【0046】
図13を参照して、
図12の結果から、レーザセンサの配置を変更した結果、死角が解消されることを説明する。まず、
図13Aを参照して、レーザセンサ200−1のオブジェクト情報を説明する。レーザセンサ200−1のオブジェクト情報150Eにおいて、オブジェクトデータ153の向きはヨー角45度(x軸から反時計回り)である。また、中心位置154のフレーム1は座標(0,0,0)である。すなわち、レーザセンサ200−1は、左下角に配置され、センシングの中心を右上角に向けている。
【0047】
図13Bを参照して、レーザセンサ200−2のオブジェクト情報を説明する。レーザセンサ200−2のオブジェクト情報150Fにおいて、オブジェクトデータ153の向きはヨー角225度である。また、中心位置154のフレーム1は座標(1000,1000,0)(単位:cm)である。すなわち、レーザセンサ200−2は、右上角に配置され、センシングの中心を左下角に向けている。
【0048】
図13Cと
図13Dを参照して、レーザセンサ200の死角を説明する。
図13Cにおいて、レーザセンサ200−1の死角は、円柱300と角柱310のレーザセンサ200−2側に広がっている。
図13Dにおいて、レーザセンサ200−2の死角は、円柱300と角柱310のレーザセンサ200−1側に広がっている。
【0049】
図13Eを参照して、レーザセンサシステムの死角を説明する。
図13Eは、
図13Dと
図13Eとを重ね合わせた図である。レーザセンサ200−1と、レーザセンサ200−2の死角は、それぞれ相手側に広がっており、レーザセンサ200−1とレーザセンサ200−2とが同時に見えないシステムとしての死角は、存在しない。
【0050】
図14と
図15を参照して、交点演算を説明する。
図14において、矩形ABCDについて、その4頂点(A、B、C、D)で定義する。基本的に矩形ABCDの4辺に対して、線分SEの交点Pを求める。具体的には、照射点Sからもっとも線分SPの長さが短くなる交点をレーザ光が照射した座標とする。
【0051】
線分ABと線分SEの交点を以下のように求める。
P=A+r(B−A)…(式2)(ここで、rは0〜1の値)
P=S+s(B−S)…(式3)(ここで、sは0〜1の値)
Pが等しいとして、
A+r(B−A)=S+s(E−S)…(式4)
座標を(Ax,Ay)、(Bx,By)、(Sx,Sy)、(Ex,Ey)として、
Ax+r(Bx−Ax)=Sx+s(Ex−Sx)…(式5)
Ay+r(By−Ay)=Sy+s(Ey−Sy)…(式6)
r、sについて、解くと式7、式8となる。
r = ((Ey-Sy)(Sx-Ax)-(Ex-Sx)(Sy-Ay)) / ((Bx-Ax)(Ey-Sy)-(By-Ay)(Ex-Sy)) …(式7)
s = ((By-Ay)(Sx-Ax)-(Bx-Ax)(Sy-Ay)) / ((Bx-Ax)(Ey-Sy)-(By-Ay)(Ex-Sy))…(式8)
交点Pの座標を(x,y)として、式9、式10を得る。
x=Ax+r(Bx−Ax)…(式9)
y=Ay+r(By−Ay)…(式10)
シミュレータ100は、同様に線分BC、CD、DAについても、交点を求める。計測範囲において、もっとも、照射点Sからの距離が短い線分AB、BC、CD、DAとの交点をシミュレータ100は、照射座標とする。
【0052】
図15を参照して、楕円形との交点演算を説明する。
図15において、長径aと短径bを有する楕円Oに対して、線分SEの交点Pを以下で求める。なお、照射点Sからもっとも線分SPの長さが短くなる交点をレーザ光が照射した座標とする。
【0053】
直線の方程式をパラメータm、nを使って表すと式12となる。ここで、mは傾き、nはy切片である。
y=mx+n…(式11)
楕円の方程式は、楕円中心の座標(Ox,Oy)と径a、bを使って、
((x−Ox)^2/a^2)+((y−Oy)^2/b^2)=1…(式12)
なお、^はべき乗である。パラメータm、nを(Sx,Sy)(Ex,Ey)で置き換えると、
m=(Sy−Ey)/(Sx−Ex)…(式13)
n=Sy−mSx…(式14)
楕円の方程式(式12)にパラメータを入力
((x−Ox)^2/a^2)+((mx+n−Oy)^2/b^2)=1…(式15)
方程式を整理して、
px^2−2qx+r=0…(式16)
p=(1/a^2)+(m^2/b^2)…(式17)
q=(m(Oy−n)/b^2)−(Ox^2/a^2)…(式18)
r=(Ox^2/a^2)+((Oy−n)^2/b^2)−1…(式19)
xについての解は、式20となる。
x=(q±(√q^2−pr))/p…(式20)
同様に交点Pは、下記の2点となる。
(x1,y1)
=((q+(√q^2−pr))/p,((m(q+(√q^2−pr))/p)+n))…(式21)
(x2,y2)
=((q−(√q^2−pr))/p,((m(q−(√q^2−pr))/p)+n))…(式22)
シミュレータ100は、両者を比較して、照射点Sからの距離が短い交点を照射座標とする。
【0054】
シミュレータ100は、死角ができない設定条件を見つけた時点で、レーザセンサ200−1、レーザセンサ200−2の座標、向きを記憶する。
なお、上述した実施例では、センサシステムとして2台のレーザセンサを説明したが、単独のレーザセンサの死角確認用に1台のレーザセンサ用のシミュレータとしても活用できる。
【0055】
本実施例によって、対象物体に対してレーザセンサの設置位置をシミュレーションして、実際のレーザセンサ設置前にて、死角への確認をすること、環境に適したレーザセンサの設置位置を設計することができる。
【0056】
本実施例は、ソフトウェアのプログラムを実行することにより実現されるシミュレータであって、これまでのレーザセンサの設置位置検討、レーザ光の照射角の最適設計において、計測条件を人手検討から時間を要していたものを、センサ設定、物体データ設定、オブジェクトデータの各種設定についてDBを用いて、その中でレーザセンサ位置および計測範囲におけるレーザの照射角範囲までを任意に設定できるようにしたことで、簡単、容易にシミュレーションにてレーザ計測システムの検討ができる。
【0057】
レーザセンサの設置位置検討およびレーザ光の照射角の最適においては、検討における条件抜けなどについては、DBにてセンサ設定DB130、物体設定DB120から読み出して、オブジェクトデータDB150へ投影され、計測環境を擬似する作用がある。上記の作用によって、DBからの条件設定に対して、最適な測距データ、およびセンサ設定の結果を得ることができる。
【0058】
これらの結果は、DBとして測距データDB170をシミュレーションすることができる。これにより、レーザセンサの設置位置およびレーザ光の照射角について、煩雑な処理を伴うことなく誰でも高速で正しい設計をすることができる。