(57)【特許請求の範囲】
【請求項１】
レーザセンサのレーザ光の照射によって取得される測距データを用いて計測範囲に存在する物体を検知するレーザシステムのシミュレータであって、
入力される情報を受け付けるユーザ入力部と、
該物体の位置と形状に関する情報を記憶する物体設定データベースと、
該レーザセンサの計測範囲に関する情報を記憶するセンサ設定データベースと、
前記物体設定データベースの情報と前記センサ設定データベースの情報に基づいて、該物体及び該レーザセンサにオブジェクト識別子を付与する環境構築部と、
前記環境構築部によってオブジェクト識別子が付与された、該物体及び該レーザセンサの位置座標を記憶するオブジェクトデータベースと、
前記オブジェクトデータベースから該物体の位置座標を読み込み、該物体と該レーザセンサから照射されるレーザ光との交点演算を実施して、該交点の座標を示す測距データを生成するデータシミュレータ部と、
前記データシミュレータ部によって生成される該測距データを登録する測距データベースと、
前記オブジェクトデータベースに登録された該物体及び該レーザセンサの位置座標を用いて該物体及び該レーザセンサを画面に描画し、前記測距データベースに登録された該測距データを用いて該レーザセンサから照射される複数のレーザ光を該画面に描画するデータ表示部と、
を有することを特徴とするシミュレータ。
【請求項２】
請求項１に記載のシミュレータであって、
前記レーザセンサのレーザ光の１スキャン単位に対応してフレーム単位を設定し、
さらに、予め定めた周期で発生する第１のタイマ割り込みにより、値をインクリメントするフレームカウンタと、
予め定めた周期で発生する第２のタイマ割り込みにより、値をインクリメントするシミュレータカウンタと、を備え、
マウスの操作によって該画面に配置される該物体を該画面上で任意に移動することができ、
前記ユーザ入力部は、該物体の移動を受け付け、該画面におけるマウスの座標を該移動した物体の座標として、前記物体設定データベースにおける該物体の形状と位置に関する情報を更新し、
前記環境構築部は、前記前記物体設定データベースから該移動した該物体の形状と位置に関する情報を取得して、取得した該物体の位置座標を、前記フレームカウンタが示すフレーム単位で該オブジェクトデータベースに登録し、
前記データシミュレータ部は、前記オブジェクトデータベースから前記シミュレータカウンタが示すフレーム番号の該物体の位置座標を取得して、該物体と該レーザセンサから照射されるレーザ光との交点演算を実施して、前記測距データを生成することを特徴とするシミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レーザ光の照射によって取得される測距データを用いて計測領域に存在する物体を検知するレーザシステムのシミュレータに関し、特に検知物体およびレーザセンサ設定（レーザセンサの設置位置、レーザ光の照射角度）条件を以て、擬似的な測距データを生成し、これらを用いて計測へのシミュレーションするシミュレータに関する。
【背景技術】
【０００２】
特許文献１は、レンジデータから得られる距離情報から対象点と該対象点に隣接する点との高低差を算出し、その高低差が或る特定のパターンとなる形状のエッジに関する特徴量を算出するエッジ特徴量算出処理手順と、算出された形状のエッジに関する特徴量から、エッジに囲まれる領域に含まれる対象点を探索し、探索した対象点の領域に関する特徴量を算出する領域特徴量算出処理手順と、算出された形状のエッジに関する特徴量、算出された対象点の領域に関する特徴量から、形状を抽出する形状抽出処理手順と、抽出された形状の閉領域に対して、閉領域内のレンジデータから勾配に関する特徴量を算出する勾配特徴量算出処理手順と、算出された勾配に関する特徴量から閉領域の分割を行ない、抽出形状から３次元形状を、レンジデータから３次元形状を各々算出して３次元モデルを生成する。
【０００３】
特許文献２は、レーザセンサを用いて領域の背景に相当する物体の情報を背景データとして取得し、領域内にある物体の測距データを取得し、測距データと背景データの差分を計算して物体の存在位置を算出し、物体の形状を連続する座標値であるポイントデータとしこれに近接した周辺ポイントデータの中心座標であるクラスタを検出し、このクラスタのデータを用いて領域の物体の存在位置を検出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１５０２７０号公報
【特許文献２】特開２００９−０８５９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１、特許文献２では、レーザセンサのレーザ光の照射性能によって、物体検知への精度が左右される。これまで、実環境にて計測領域において発生する死角などを考慮してレーザセンサを設置することは難しく、計測現場への視察の結果と計測現場の図面から読み取れる、背景を含む常設物の位置を元に、各レーザセンサの設置位置および照射角度を検討している。
【０００６】
レーザシステムにおいて、計測領域でのレーザセンサの設置位置およびレーザ光の照射は、計測時に死角の発生が考えられ、事前に詳細に死角を検出することは困難な場合が有る。このため、レーザセンサ設置への良し悪しの正確な判断は、実際にレーザセンサを設置、計測をする必要があった。
【０００７】
具体的な死角が発生する要因は、以下の通りである。
（１）レーザセンサの設置向きによる照射範囲の差異による死角。
（２）常設物による死角。
（３）人の滞留、導線により発生する死角。
【０００８】
特に照射角度を複数レイヤ有するレーザセンサを取り扱う際および単レイヤのレーザセンサにおいても複数のレーザセンサを取扱う際には、計測領域における死角イメージ出しが困難である。
【０００９】
本発明のシミュレータは、上記問題点の解決を図り、シミュレータの中で構成されるオブジェクトデータデータベース（以下ＤＢ）、物体設定ＤＢから条件を読出して設定することにより、測距データ生成部およびデータ処理部にて当該環境におけるシミュレーションを実施する。最終的には、測距データＤＢ、およびセンサ設定ＤＢに出力され、記憶された結果を以て、レーザセンサ設置およびレーザ光の照射角度の最適化をすることができる。レーザセンサを任意の位置および向きに設定、物体（常設物、移動物）を任意の位置に設定、設定した移動物を任意に移動、レーザセンサ毎にレーザ光の照射範囲をイメージ化、照射イメージが物体（常設物および移動物）によって遮蔽された状況のイメージ化の効果が得られる。これによって、本発明は、レーザセンサと構造物を任意に設置し、設置状況へのシミュレーションができるシミュレータを提供する。
【００１０】
シミュレーション情報は、フレーム（レーザセンサの１スキャン単位）単位での設定を可能とする。フレームとは、レーザセンサの計測周期の１回分の計測単位を示す。移動物は、フレームごとに移動することで、位置座標が変化し、フレームごとにレーザ光の照射状況が変化する様子をシミュレーションすることができる。
【課題を解決するための手段】
【００１１】
上述した課題は、物体の位置と形状と、レーザセンサの位置と方向とを受け付け、それぞれ物体設定データベースとセンサ設定データベースとに登録するユーザ入力部と、物体設定データベースとセンサ設定データベースとに基づいて、オブジェクト識別子を付与して、オブジェクトデータベースに登録する環境構築部と、オブジェクトデータベースに基づいて、物体との測距データを生成し、測距データベースに登録するデータシミュレータ部と、オブジェクトデータベースに基づいて物体を描画し、測距データベースに基づいて、複数のレーザビームを描画するデータ表示部と、を含むシミュレータにより、達成できる。
【発明の効果】
【００１２】
本発明によれば、レーザセンサと構造物を任意に設置し、設置状況へのシミュレーションができるシミュレータを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】シミュレータの全体構成を示すブロック図である。
【図２】ＣＰＵの処理の機能ブロック図である。
【図３】フレームを説明する図である。
【図４】物体設定ＤＢのフォーマットを説明する図である。
【図５】センサ設定ＤＢの情報とフォーマットを説明する図である。
【図６】オブジェクトデータＤＢの情報とフォーマットを説明する図である。
【図７】測距データＤＢの情報とフォーマットを説明する図である。
【図８】測距データの詳細な構成を説明する図である。
【図９】測距データの生成処理を説明するフローチャートである。
【図１０】計測環境を説明する斜視図である。
【図１１Ａ】レーザセンサのオブジェクト情報を説明する図である。
【図１１Ｂ】レーザセンサのレーザ照射を説明する図である。
【図１２Ａ】円柱のオブジェクトデータを説明する図である。
【図１２Ｂ】角柱のオブジェクトデータを説明する図である。
【図１２Ｃ】レーザセンサ１のオブジェクトデータを説明する図である。
【図１２Ｄ】レーザセンサ２のオブジェクトデータを説明する図である。
【図１２Ｅ】レーザセンサ１の死角確認を説明する図である。
【図１２Ｆ】レーザセンサ２の死角確認を説明する図である。
【図１２Ｇ】死角確認を説明する図である。
【図１３Ａ】レーザセンサ１のオブジェクトデータを説明する図である。
【図１３Ｂ】レーザセンサ２のオブジェクトデータを説明する図である。
【図１３Ｃ】レーザセンサ１の死角確認を説明する図である。
【図１３Ｄ】レーザセンサ２の死角確認を説明する図である。
【図１３Ｅ】死角の解消を説明する図である。
【図１４】矩形とレーザ照射光の交点演算を説明する図である。
【図１５】円形とレーザ照射光の交点演算を説明する図である。
【図１６】シミュレータの移動物体情報の入力を説明する図である。
【図１７】シミュレータの移動物体情報の出力を説明する図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、実施例を用い図面を参照しながら詳細に説明する。なお、実質同一部位には同じ参照番号を振り、説明は繰り返さない。
【実施例１】
【００１５】
図１を参照して、実施例１のレーザシステム設置シミュレータのハードウェア構成を説明する。図１において、シミュレータ１００は、中央演算装置（ＣＰＵ）１０１と、入力装置１０２と、表示装置１０３とから構成されている。ＣＰＵ１０１は、シミュレーション処理の計算を実行する。入力装置１０２は、シミュレーションにおける各種条件を入力する。表示装置１０３は、実行結果を描画する。なお、シミュレータ１００は、さらに図示しないメモリ、外部記憶装置等を備えている。
【００１６】
図２を参照して、レーザシステム設置シミュレータの機能ブロックを説明する。図２において、ＣＰＵ１０１の内部の処理は、大きく８つで構成される。その構成は、ユーザ入力部１１０と、物体設定ＤＢ１２０と、センサ設定ＤＢ１３０と、環境構築部１４０と、オブジェクトＤＢ１５０と、データシミュレータ部１６０と、測距ＤＢ１７０と、データ表示部１８０とである。
【００１７】
ユーザ入力部１１０は、入力装置１０２からキーボードによるレーザセンサの位置、計測領域内の物体の位置などデータおよびマウスによる物体の移動情報を処理する。物体設定ＤＢ１２０は、入力された検知対象の物体形状を楕円形または矩形にて表して任意の存在する設定位置と設置角度に関する情報を記憶する。
【００１８】
センサ設定ＤＢ１３０は、入力された計測領域内の各レーザセンサにおけるｘｙｚ座標でのレーザセンサ設定位置と照射角度に関する情報を記憶する。センサ設定ＤＢ１３０を利用して、各レーザセンサ位置のより詳細な設定をするため（ピッチ角、ロール角、ヨー角による姿勢決定）として、外部パラメータにてシミュレーション上の測距データの回転または換算をすることもできる。
【００１９】
環境構築部１４０は、入力された物体設定ＤＢ１２０、センサ設定ＤＢ１３０の情報を基に、物体、レーザセンサの情報にオブジェクトＩＤを割り付けて、オブジェクトＤＢ１５０を生成する。オブジェクトＤＢ１５０は、オブジェクトＩＤ単位に構成され、オブジェクトの位置座標をフレームごとに保持する。
【００２０】
データシミュレータ部１６０は、入力されたデータを基に複数のレーザセンサ設置に際し、計測領域に固定的に存在する物体に対して、計測領域における死角を考慮したレーザセンサ設置のシミュレーションをするため、擬似的な測距データの生成し、測距ＤＢ１７０に登録する。データシミュレータ部１６０は、物体の移動に伴う変化に対して経時的に物体とレーザセンサから照射されるレーザ光との交点演算を行なう。データシミュレータ部１６０は、交点演算結果に基づいて、測距データを更新する。
【００２１】
測距ＤＢ１７０は、計測シミュレータの交点演算結果、レーザセンサと各物体と交点座標を計測データとして、フレームごとに保持する。フレームごとの要素として、レーザセンサが照射しているレーザ光の本数分の測距データを（ｘ，ｙ，ｚ）座標で記録する。レーザセンサのレーザ光の本数は、センサ設定ＤＢ１３０のデータメンバである計測範囲１３３と計測分解能１３４により、式１で求まる。
レーザ光の本数＝計測範囲／計測分解能＋１…（式１）
データ表示部１８０は、レーザセンサの設置位置の確認のための機能として、オブジェクトＤＢ１５０の情報を基に、矩形、円を指定して作成された物体およびレーザセンサを設定された座標、向きで描画する。また、データ表示部１８０は、レーザセンサから任意の範囲（距離、角度、分解能）にレーザ光の照射イメージを表示する。データ表示部１８０は、さらに、常設物に影響確認のための機能として、測距ＤＢ１５０に保持されている計測データの各座標（ｘ，ｙ，ｚ）とレーザセンサを結ぶ直線を描画することで、レーザ光の照射イメージが矩形、円形の物体に照射状況を視覚化する。
【００２２】
図３を参照して、フレームを説明する。図３において、フレームは、計測周期（センサ設定ＤＢ１３０に設定された時間）ごとに形成されている。フレーム１ないしフレームＮは、データストリームを形成する。
【００２３】
図４を参照して、物体設定ＤＢを説明する。図４において、物体設定ＤＢ１２０は、矩形１２１と円形１２５に大別できる。矩形１２１のデータメンバは、４頂点１２２と、軸長１２３とである。一方、円形１２５のデータメンバは、楕円頂点１２６と、楕円径１２７とである。４頂点１２２は、矩形を構成する４つの座標である。軸長１２３は、矩形の２辺の長さである。楕円頂点１２６は、円の左上と右下の座標である。楕円径１２７は、長径と短径である。
【００２４】
図５を参照して、センサ設定ＤＢを説明する。図５において、センサ設定ＤＢ１３０は、計測距離１３１と、向き１３２と、計測範囲１３３と、計測分解能１３４と、計測周期１３５とから構成されている。計測距離１３１は、レーザセンサが計測できる距離である。向き１３２は、レーザセンサの向きである。計測範囲１３３は、計測範囲角度（度）である。計測分解能１３４は、計測分解角度（度）である。計測周期１３５は、計測間隔時間（ｍｓ）である。
【００２５】
図６を参照して、オブジェクトデータＤＢを説明する。図６において、オブジェクトデータ１５０は、データメンバとして、オブジェクトＩＤ１５１と、オブジェクトタイプ１５２と、オブジェクトデータ１５３と、中心位置１５４とを含んで構成されている。オブジェクトＩＤ１５１は、オブジェクトの識別子である。オブジェクトタイプ１５２は、オブジェクトの種別（センサ、矩形、円形）である。オブジェクトデータ１５３は、オブジェクトタイプ別の要素データである。中心位置１５４は、オブジェクトの中心座標（フレーム数分）である。
【００２６】
図７と図８を参照して、測距データＤＢを説明する。図７において、測距データＤＢ１７０は、データメンバとして、タイムスタンプ１７１と、計測開始角度１７２と、計測終了角度１７３と、測距データ１７４とを含んで構成されている。タイムスタンプ１７１は、フレームの時刻である。なお、以下のデータメンバはフレーム数分繰り返す。計測開始角度１７２は、レーザセンサの計測開始角度（度）である。計測終了角度１７３は、レーザセンサの計測終了角度（度）である。測距データ１７４は、図８で説明する。
【００２７】
図８を参照して、測距データを説明する。図８において、測距データ１７４は、ポイント番号１７４１と、座標（ｘ，ｙ，ｚ）１７４２とで構成されている。ポイント数は、Ｎである。
【００２８】
図９を参照して、測距データの生成処理を説明する。図９において、シミュレータ１００は、常設物のみではなく、任意に人の滞留、導線による影響確認のための機能として、任意の座標、向き、大きさで物体を設定できる。具体的には、オペレータは、画面に配置した物体を、マウスにより任意に動かす。この動作について、ユーザ入力部３０１は、入力を受け付ける（Ｓ３０１）。計測周期タイマ割り込み（Ｓ３０２）は、設定されたセンサ設定ＤＢ１３０のレーザセンサの計測周期１３５を基に、一定周期に発生する。シミュレータ１００は、発生した計測周期タイマ割り込み（Ｓ３０２）に基づいて、フレームカウンタ１９０を更新する（Ｓ３０３）。シミュレータ１００は、計測周期タイマ割り込み（Ｓ３０２）の受信により、現時点で選択されている物体のＩＤとマウスの座標を取得し、物体のＩＤおよび移動位置（環境情報）を得る。
【００２９】
シミュレータ１００は、オブジェクトＤＢ１５０の物体のＩＤと一致するオブジェクトＩＤ１５１の中心位置１５４のフレームカウンタ１９０の示すフレーム番号の領域に、マウスの座標を入力する（Ｓ３０４）。シミュレータ１００は、シミュレーション開始を判定する（Ｓ３０６）。ステップ３０６でＮＯのとき、シミュレータ１００は、ステップ３０１に遷移する。シミュレーション開始（Ｓ３０６：ＹＥＳ）まで、シミュレータ１００は、本処理を繰り返すことで、物体の移動をオブジェクトＤＢ１５０に入力する。
【００３０】
入力されたオブジェクトＤＢ１５０を基に、シミュレータ１００は、複数のレーザセンサ設置に際し、擬似的な測距データの生成のため、１フレームごとの物体とレーザセンサから照射されるレーザ光との交点演算を行ない、測距データを測距データＤＢ１７０に出力するシミュレーション処理を実行する（Ｓ３０７）。なお、処理されるオブジェクトＤＢ１５０の読み取り領域および出力される測距データＤＢ１７０を記録する領域は、シミュレータカウンタ１９５が示すフレーム番号の領域を使用する。
【００３１】
シミュレータ１００は、測距データを表示するか判定する（Ｓ３０８）。ＹＥＳのとき、シミュレータ１００は、オブジェクトＤＢ１５０および測距データＤＢ１７０よりシミュレータカウンタ１９５が示すフレーム番号の情報を取得して描画処理を行なう（Ｓ３０９）。ステップ３０９の後およびステップ３０８でＮＯのとき、シミュレータ１００は、データ生成の終了を判定する（Ｓ３１１）。ＹＥＳのとき、シミュレータ１００は、終了する。ステップ３１１でＮＯのとき、シミュレータ１００は、ステップ３０７に遷移する。
【００３２】
シミュレータカウンタ１９５は、シミュレータタイマ割り込みにより、更新される（Ｓ３１２）。なお、ステップ３１１において、シミュレータカウンタ１９５が、フレームカウンタ１９０と同値になった時点で、データ生成を終了する。
【００３３】
図１０を参照して、シミュレーション環境を説明する。図１０において、シミュレーション環境は、１０ｍ×１０ｍの部屋である。部屋の左下の角を基準として、高さ方向をｚ軸として、ｘｙ平面を右手系で定義する。ｘｙ平面の座標（４.５，７.５）（単位：ｍ）には、直径１ｍの円柱３００が立っている。また、座標（７.５，５.０）には、一辺１ｍの角柱３１０が立っている。なお、座標位置は、円柱３００と角柱３１０の中央基準である。
【００３４】
図１１を参照して、レーザセンサ照射を説明する。図１１Ａにおいて、レーザセンサのオブジェクト情報は、オブジェクトＩＤ１５１と、オブジェクトタイプ１５２と、オブジェクトデータ１５３と、中心位置１５４とから構成されている。オブジェクトデータ１５３は、さらに計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを含む。中心位置１５４は、フレーム１ないしフレームＮを含む。
【００３５】
オブジェクトＩＤ１５１は、３である。オブジェクトタイプ１５２は、センサである。計測距離は、２０ｍである。向きは、ロール角：０度、ピッチ角：０度、ヨー角：０度である。計測範囲は、２７０度である。計測分解能は、０.５度である。計測周期は、４０ｍｓである。また、フレーム１は、（０，０，０）である。なお、レーザセンサ２００は、移動しないので、フレーム２以降のデータは、無効値が設定されている。
【００３６】
図１１Ｂにおいて、レーザセンサ２００は、２０ｍ×２０ｍの部屋の中央付近にｙ軸方向に向けて設置されている。ヨー角：０度は、ｙ軸方向である。レーザセンサ２００は、±１３５度方向に、５４１本のビームを送り、反射波を検出する。しかし、図１１Ｂは、反射波を検出しない状態を表示している。
【００３７】
なお、図１１Ｂのみ、２０ｍ×２０ｍの部屋であり、他のシミュレーション環境は、図１０の通りである。また、レーザセンサ２００の周辺は、レーザ光（ビーム）の記載を省いた。これは、図面の簡略化のためであり、他の図面でも同様である。
【００３８】
図１２を参照して、図１０のシミュレーション環境で不適切にレーザセンサを任意に配置した場合に死角が検出されたシミュレーション結果を説明する。まず、図１２Ａおよび図１２Ｂを参照して、物体のオブジェクトＤＢを説明する。
【００３９】
図１２Ａにおいて、円柱３００のオブジェクトＤＢ１５０Ａは、オブジェクトＩＤ１５１として１を保持する。オブジェクトタイプ１５２は、円形である。円形は、円柱３００の平面図での形状である。オブジェクトデータ１５３として、楕円頂点と、楕円形とを保持する。中心位置１５４のフレーム１に（４５０，７５０，０）（単位：ｃｍ）を保持する。
【００４０】
図１２Ｂにおいて、角柱３１０のオブジェクトＤＢ１５０Ｂは、オブジェクトＩＤ１５１として２を保持する。オブジェクトタイプ１５２は、矩形である。矩形は、角柱３１０の平面図での形状である。オブジェクトデータ１５３として、４頂点と、軸長とを保持する。中心位置１５４のフレーム１に（７５０，５００，０）（単位：ｃｍ）を保持する。
【００４１】
図１２Ｃと図１２Ｄを参照して、レーザセンサのオブジェクトＤＢを説明する。図１２Ｃにおいて、レーザセンサ２００−１のオブジェクトＤＢ１５０Ｃは、オブジェクトＩＤ１５１として３を保持する。オブジェクトタイプ１５２は、センサである。オブジェクトデータ１５３として、計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを保持する。計測距離は、２０ｍである。向きは、ヨー角が−４５度であり、ｘ軸となす角である。計測範囲は、２７０度である。計測分解能は、０.５度である。計測周期は、４０ｍｓである。中心位置１５４のフレーム１に（０，１０００，０）（単位：ｃｍ）を保持する。
【００４２】
図１２Ｄにおいて、レーザセンサ２００−２のオブジェクトＤＢ１５０Ｄは、オブジェクトＩＤ１５１として４を保持する。オブジェクトタイプ１５２は、センサである。オブジェクトデータ１５３として、計測距離と、向きと、計測範囲と、計測分解能と、計測周期とを保持する。計測距離は、２０ｍである。向きは、ヨー角が１３５度であり、ｘ軸となす角である。計測範囲は、２７０度である。計測分解能は、０.５度である。計測周期は、４０ｍｓである。中心位置１５４のフレーム１に（１０００，０，０）（単位：ｃｍ）を保持する。
【００４３】
図１２Ｅと図１２Ｆを参照して、レーザセンサの死角確認を説明する。図１２Ｅにおいて、図の左上角である座標（０，１０００，０）（単位：ｃｍ）に設置され、ヨー角−４５度のレーザセンサ２００−１は、円柱３００と、角柱３１０の背後のセンシングができない。
【００４４】
図１２Ｆにおいて、図１２Ｆの右下角である座標（１０００，０，０）（単位：ｃｍ）に設置され、ヨー角１３５度のレーザセンサ２００−２は、円柱３００と、角柱３１０の背後のセンシングができない。
【００４５】
図１２Ｇを参照して、レーザセンサシステムの死角を説明する。図１２Ｇは、図１２Ｅと図１２Ｆとを重ね合わせた図である。レーザセンサ２００−１、円柱３００、角柱３１０、レーザセンサ２００−２がこの順で円弧上に載っており、円柱３００と角柱３１０の間に、レーザセンサ２００−１からもレーザセンサ２００−２からも見えない死角が存在する。
【００４６】
図１３を参照して、図１２の結果から、レーザセンサの配置を変更した結果、死角が解消されることを説明する。まず、図１３Ａを参照して、レーザセンサ２００−１のオブジェクト情報を説明する。レーザセンサ２００−１のオブジェクト情報１５０Ｅにおいて、オブジェクトデータ１５３の向きはヨー角４５度（ｘ軸から反時計回り）である。また、中心位置１５４のフレーム１は座標（０，０，０）である。すなわち、レーザセンサ２００−１は、左下角に配置され、センシングの中心を右上角に向けている。
【００４７】
図１３Ｂを参照して、レーザセンサ２００−２のオブジェクト情報を説明する。レーザセンサ２００−２のオブジェクト情報１５０Ｆにおいて、オブジェクトデータ１５３の向きはヨー角２２５度である。また、中心位置１５４のフレーム１は座標（１０００，１０００，０）（単位：ｃｍ）である。すなわち、レーザセンサ２００−２は、右上角に配置され、センシングの中心を左下角に向けている。
【００４８】
図１３Ｃと図１３Ｄを参照して、レーザセンサ２００の死角を説明する。図１３Ｃにおいて、レーザセンサ２００−１の死角は、円柱３００と角柱３１０のレーザセンサ２００−２側に広がっている。図１３Ｄにおいて、レーザセンサ２００−２の死角は、円柱３００と角柱３１０のレーザセンサ２００−１側に広がっている。
【００４９】
図１３Ｅを参照して、レーザセンサシステムの死角を説明する。図１３Ｅは、図１３Ｄと図１３Ｅとを重ね合わせた図である。レーザセンサ２００−１と、レーザセンサ２００−２の死角は、それぞれ相手側に広がっており、レーザセンサ２００−１とレーザセンサ２００−２とが同時に見えないシステムとしての死角は、存在しない。
【００５０】
図１４と図１５を参照して、交点演算を説明する。図１４において、矩形ＡＢＣＤについて、その４頂点（Ａ、Ｂ、Ｃ、Ｄ）で定義する。基本的に矩形ＡＢＣＤの４辺に対して、線分ＳＥの交点Ｐを求める。具体的には、照射点Ｓからもっとも線分ＳＰの長さが短くなる交点をレーザ光が照射した座標とする。
【００５１】
線分ＡＢと線分ＳＥの交点を以下のように求める。
Ｐ＝Ａ＋ｒ(Ｂ−Ａ)…（式２）(ここで、ｒは０〜１の値)
Ｐ＝Ｓ＋ｓ(Ｂ−Ｓ)…（式３）(ここで、ｓは０〜１の値)
Ｐが等しいとして、
Ａ＋ｒ(Ｂ−Ａ)＝Ｓ＋ｓ(Ｅ−Ｓ)…（式４）
座標を（Ａｘ，Ａｙ）、（Ｂｘ，Ｂｙ）、（Ｓｘ，Ｓｙ）、（Ｅｘ，Ｅｙ）として、
Ａｘ＋ｒ(Ｂｘ−Ａｘ)＝Ｓｘ＋ｓ(Ｅｘ−Ｓｘ)…（式５）
Ａｙ＋ｒ(Ｂｙ−Ａｙ)＝Ｓｙ＋ｓ(Ｅｙ−Ｓｙ)…（式６）
ｒ、ｓについて、解くと式７、式８となる。
r = ((Ey-Sy)(Sx-Ax)-(Ex-Sx)(Sy-Ay)) / ((Bx-Ax)(Ey-Sy)-(By-Ay)(Ex-Sy)) …（式７）
s = ((By-Ay)(Sx-Ax)-(Bx-Ax)(Sy-Ay)) / ((Bx-Ax)(Ey-Sy)-(By-Ay)(Ex-Sy))…（式８）
交点Ｐの座標を（ｘ，ｙ）として、式９、式１０を得る。
ｘ＝Ａｘ＋ｒ(Ｂｘ−Ａｘ)…（式９）
ｙ＝Ａｙ＋ｒ(Ｂｙ−Ａｙ)…（式１０）
シミュレータ１００は、同様に線分ＢＣ、ＣＤ、ＤＡについても、交点を求める。計測範囲において、もっとも、照射点Ｓからの距離が短い線分ＡＢ、ＢＣ、ＣＤ、ＤＡとの交点をシミュレータ１００は、照射座標とする。
【００５２】
図１５を参照して、楕円形との交点演算を説明する。図１５において、長径ａと短径ｂを有する楕円Ｏに対して、線分ＳＥの交点Ｐを以下で求める。なお、照射点Ｓからもっとも線分ＳＰの長さが短くなる交点をレーザ光が照射した座標とする。
【００５３】
直線の方程式をパラメータｍ、ｎを使って表すと式１２となる。ここで、ｍは傾き、ｎはｙ切片である。
ｙ＝ｍｘ＋ｎ…（式１１）
楕円の方程式は、楕円中心の座標（Ｏｘ，Ｏｙ）と径ａ、ｂを使って、
((ｘ−Ｏｘ)＾２／ａ＾２)＋((ｙ−Ｏｙ)＾２／ｂ＾２)＝１…（式１２）
なお、＾はべき乗である。パラメータｍ、ｎを（Ｓｘ，Ｓｙ）（Ｅｘ，Ｅｙ）で置き換えると、
ｍ＝(Ｓｙ−Ｅｙ)／(Ｓｘ−Ｅｘ)…（式１３）
ｎ＝Ｓｙ−ｍＳｘ…（式１４）
楕円の方程式（式１２）にパラメータを入力
((ｘ−Ｏｘ)＾２／ａ＾２)＋((ｍｘ＋ｎ−Ｏｙ)＾２／ｂ＾２)＝１…（式１５）
方程式を整理して、
ｐｘ＾２−２ｑｘ＋ｒ＝０…（式１６）
ｐ＝(１／ａ＾２)＋(ｍ＾２／ｂ＾２)…（式１７）
ｑ＝(ｍ(Ｏｙ−ｎ)／ｂ＾２)−(Ｏｘ＾２／ａ＾２)…（式１８）
ｒ＝(Ｏｘ＾２／ａ＾２)＋((Ｏｙ−ｎ)＾２／ｂ＾２)−１…（式１９）
ｘについての解は、式２０となる。
ｘ＝(ｑ±(√ｑ＾２−ｐｒ))／ｐ…（式２０）
同様に交点Ｐは、下記の２点となる。
(ｘ１，ｙ１)
＝((ｑ＋(√ｑ＾２−ｐｒ))／ｐ，((ｍ(ｑ＋(√ｑ＾２−ｐｒ))／ｐ)＋ｎ))…（式２１）
(ｘ２，ｙ２)
＝((ｑ−(√ｑ＾２−ｐｒ))／ｐ，((ｍ(ｑ−(√ｑ＾２−ｐｒ))／ｐ)＋ｎ))…（式２２）
シミュレータ１００は、両者を比較して、照射点Ｓからの距離が短い交点を照射座標とする。
【００５４】
シミュレータ１００は、死角ができない設定条件を見つけた時点で、レーザセンサ２００−１、レーザセンサ２００−２の座標、向きを記憶する。
なお、上述した実施例では、センサシステムとして２台のレーザセンサを説明したが、単独のレーザセンサの死角確認用に１台のレーザセンサ用のシミュレータとしても活用できる。
【００５５】
本実施例によって、対象物体に対してレーザセンサの設置位置をシミュレーションして、実際のレーザセンサ設置前にて、死角への確認をすること、環境に適したレーザセンサの設置位置を設計することができる。
【００５６】
本実施例は、ソフトウェアのプログラムを実行することにより実現されるシミュレータであって、これまでのレーザセンサの設置位置検討、レーザ光の照射角の最適設計において、計測条件を人手検討から時間を要していたものを、センサ設定、物体データ設定、オブジェクトデータの各種設定についてＤＢを用いて、その中でレーザセンサ位置および計測範囲におけるレーザの照射角範囲までを任意に設定できるようにしたことで、簡単、容易にシミュレーションにてレーザ計測システムの検討ができる。
【００５７】
レーザセンサの設置位置検討およびレーザ光の照射角の最適においては、検討における条件抜けなどについては、ＤＢにてセンサ設定ＤＢ１３０、物体設定ＤＢ１２０から読み出して、オブジェクトデータＤＢ１５０へ投影され、計測環境を擬似する作用がある。上記の作用によって、ＤＢからの条件設定に対して、最適な測距データ、およびセンサ設定の結果を得ることができる。
【００５８】
これらの結果は、ＤＢとして測距データＤＢ１７０をシミュレーションすることができる。これにより、レーザセンサの設置位置およびレーザ光の照射角について、煩雑な処理を伴うことなく誰でも高速で正しい設計をすることができる。
【実施例２】
【００５９】
実施例２について、図９、図１６、図１７を参照して、説明する。しかし、実施例１で説明した図９の説明は省く。
実施例１では、図９の説明を除いて、物体は座標系に固定されていた。一方、実施例２では、移動物体に係るシミュレーションを説明する。移動物体のシミュレーションの手順は大きく“移動物体の環境情報の入力”と“移動物体のシミュレーション”の２つに分かれる。
【００６０】
図１６を参照して、“移動物体の環境情報の入力”を説明する。“移動物体の環境情報の入力”について、ユーザ入力部１１０は、シミュレーションを開始する前に入力装置１０２からシミュレーション範囲、物体、レーザセンサの配置、情報を実施例１と同様に受け付け、物体設定ＤＢ１２０に初期入力として、物体情報１２０−０を入力する。
【００６１】
入力完了後、計測周期タイマ割り込みの発生が開始され、割り込みｉ１〜割り込みｉＮが一定周期で発生する。割り込みｉ１発生をトリガーに環境構築部１４０は、フレームカウンタ１９０を＋１更新する。フレームカウンタ更新後、環境構築部１４０は、物体設定ＤＢ１２０から、時点最新の物体情報１２０−０を取得する。環境構築部１４０は、取得した物体情報１２０−０を元に、オブジェクトデータＤＢ１５０にフレームカウンタ１９０が示す値のフレーム番号の領域にオブジェクトデータ１５０−１を格納する。以後、環境構築部１４０は、割り込みｉ２〜割り込みｉＮが発生する度に同様の動作を繰り返し、フレームごとにオブジェクトデータＤＢ１５０に移動体のオブジェクトデータ１５０−１〜オブジェクトデータ１５０−５を設定する。
【００６２】
物体の移動情報は、入力装置１０２を使用して、ユーザが表示装置上１０３の物体Ｐ０をマウスでクリックし、マウスをドラッグすることで、物体の移動情報Ｐ０〜Ｐ３を入力する。マウスの移動によって、イベントｔ１〜イベントｔ３が発生する。イベントｔ１をトリガーにユーザ入力部１１０は、イベントｔ１発生時の画面のマウスの座標情報を取得し、マウスの座標を物体の座標として、物体設定ＤＢ１２０に物体情報１２０−０を更新する。ユーザ入力部１１０は、イベントｔ２〜イベントｔ３が発生する度に同様の動作を行ない、物体設定ＤＢ１２０の物体情報１２０−１〜物体情報１２０−３を更新する。
【００６３】
図１７を参照して、“移動物体のシミュレーション”を説明する。“移動物体のシミュレーション”について、シミュレーションの開始により、シミュレータタイマ割り込みの発生が開始され、シミュレータタイマによる割り込みｉ１〜割り込みｉＮが一定周期で発生する。割り込みｉ１発生をトリガーに、データシミュレータ部１６０は、シミュレータカウンタ１９５をインクリメントする。シミュレータカウンタ更新後、データシミュレータ部１６０は、オブジェクトデータＤＢ１５０からシミュレータカウンタ１９５が示すフレーム番号のオブジェクトデータ１５０−１を取得する。取得したオブジェクトデータ１５０−１を元に、データシミュレータ部１６０は、測距データＤＢ１７０のシミュレータカウンタ１９５が示す値のフレーム番号の領域に、測距データ１７０−１を格納する。以後、データシミュレータ部１６０は、割り込みｉ２〜割り込みｉＮが発生する度に同様の動作を繰り返し、フレームごとに測距データＤＢ１７０に移動体の測距データ１７０−１〜測距データ１５０−５を設定する。
【００６４】
シミュレーションされた結果は、表示装置１０３上で描画される。データシミュレータ部１６０の処理に同期して、描画要求ｆ１〜描画要求ｆＮが発生する。描画要求ｆ１をトリガーに、データ表示部１８０は、シミュレータカウンタ１９５が示すフレーム値の測距データ１７０−１とオブジェクトデータ１５０−１を取得する。取得した座標情報を元に、データ表示部１８０は、物体ＯＰ１と計測点ＭＰ１を描画する。以後、データ表示部１８０は、描画要求ｆ１〜描画要求ｆＮが発生する度に同様の動作を繰り返し、フレームごとのシミュレーション結果として、物体ＯＰ１〜物体ＯＰＮおよび計測点ＭＰ１〜計測点ＭＰＮを描画する。
【００６５】
実施例２によれば、入力を受け付けた物体の移動を忠実に再現するシミュレータを得ることができる。
【符号の説明】
【００６６】
１００…シミュレータ、１０１…ＣＰＵ、１０２…入力装置、１０３…表示装置、１１０…ユーザ入力部、１２０…物体設定ＤＢ、１３０…センサ設定ＤＢ、１４０…環境構築部、１５０…オブジェクトＤＢ、１６０…データシミュレータ部、１７０…測距データＤＢ、１８０…データ表示部、１９０…フレームカウンタ、１９５…シミュレータカウンタ、２００…レーザセンサ、３００…円柱、３１０…角柱。
【図１】
0006013756.tif 000002
【図２】
0006013756.tif 000003
【図３】
0006013756.tif 000004
【図４】
0006013756.tif 000005
【図５】
0006013756.tif 000006
【図６】
0006013756.tif 000007
【図７】
0006013756.tif 000008
【図８】
0006013756.tif 000009
【図９】
0006013756.tif 000010
【図１０】
0006013756.tif 000011
【図１１Ａ】
0006013756.tif 000012
【図１１Ｂ】
0006013756.tif 000013
【図１２Ａ】
0006013756.tif 000014
【図１２Ｂ】
0006013756.tif 000015
【図１２Ｃ】
0006013756.tif 000016
【図１２Ｄ】
0006013756.tif 000017
【図１２Ｅ】
0006013756.tif 000018
【図１２Ｆ】
0006013756.tif 000019
【図１２Ｇ】
0006013756.tif 000020
【図１３Ａ】
0006013756.tif 000021
【図１３Ｂ】
0006013756.tif 000022
【図１３Ｃ】
0006013756.tif 000023
【図１３Ｄ】
0006013756.tif 000024
【図１３Ｅ】
0006013756.tif 000025
【図１４】
0006013756.tif 000026
【図１５】
0006013756.tif 000027
【図１６】
0006013756.tif 000028
【図１７】
0006013756.tif 000029