(57)【要約】【課題】シミュレーション結果と実運用時の結果を近付けるようにする。【解決手段】ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部１１と、仮想的な作業空間である仮想作業空間内に複数のワークモデルを積み上げた、仮想的なバラ積みデータを生成するためのバラ積みデータ生成部２０と、バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、作業空間の上方に配置されるセンサ部２により三次元計測が可能と推定される推定領域を特定するための領域推定部２２と、領域推定部２２により特定された推定領域のデータに基づいて、仮想作業空間内のワークモデルのバラ積みピッキング動作を検証するシミュレーションを実行するためのピッキング動作シミュレート部３０とを備える。【選択図】図３
2018144152.tif 000002
【特許請求の範囲】
【請求項１】
作業空間に積み上げられた複数のワークの三次元形状をセンサ部により測定し、ロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、
ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、
仮想的な作業空間である仮想作業空間内に複数の前記ワークモデルを積み上げた、仮想的なバラ積みデータを生成するためのバラ積みデータ生成部と、
前記バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定するための領域推定部と、
前記領域推定部により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するシミュレーションを実行するためのピッキング動作シミュレート部と
を備えてなるロボットシミュレーション装置。
【請求項２】
作業空間に積み上げられた複数のワークの三次元形状をセンサ部により測定し、ロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、
ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、
仮想的な作業空間である仮想作業空間内に複数の前記ワークモデルを積み上げた、仮想的なバラ積みデータを生成するためのバラ積みデータ生成部と、
前記バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が困難と推定される推定領域を特定するための領域推定部と、
前記領域推定部により特定された推定領域のデータを含まないバラ積みデータをシミュレーション用データとして生成するためのシミュレーション用データ生成部と、
前記シミュレーション用データを用いて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するシミュレーションを実行するためのピッキング動作シミュレート部と
を備えてなるロボットシミュレーション装置。
【請求項３】
請求項２に記載のロボットシミュレーション装置であって、
前記シミュレーション用データ生成部は、前記ピッキング動作シミュレート部によるバラ積みピッキング動作のシミュレーション実行中にいずれか一のワークモデルが取り出されると、残りのワークモデルに対して計測可能な領域を再度推定し、シミュレーション用データを更新するよう構成してなるロボットシミュレーション装置。
【請求項４】
請求項１〜３のいずれか一項に記載のロボットシミュレーション装置であって、さらに、
ワークの三次元計測を行うためのカメラの位置及び姿勢を仮想的に示すカメラモデルを、仮想的なセンサモデルとして設定するためのセンサモデル設定部を備えてなるロボットシミュレーション装置。
【請求項５】
請求項４に記載のロボットシミュレーション装置であって、
前記センサモデル設定部が、前記センサモデルに、ワークの三次元計測を行うためのプロジェクタの位置及び姿勢を仮想的に示すプロジェクタモデルを含むよう構成してなるロボットシミュレーション装置。
【請求項６】
請求項５に記載のロボットシミュレーション装置であって、
前記領域推定部は、前記推定領域を、前記センサモデル設定部で設定されたセンサモデルから見て死角となる領域を、計測困難な死角領域として推定するよう構成してなるロボットシミュレーション装置。
【請求項７】
請求項５又は６に記載のロボットシミュレーション装置であって、
前記領域推定部は、前記推定領域として、前記センサモデル設定部で設定された三次元形状を計測するセンサモデルの種別が、
センサ部が縞投影方式又は光切断方式で三次元計測する状態を仮想的に再現する場合、前記カメラモデルとプロジェクタモデルのいずれかから死角となる領域を死角領域として規定し、
センサ部が複数のカメラを用いたステレオ方式で三次元計測する状態を仮想的に再現する場合、複数のカメラモデルのいずれかから死角となる領域を死角領域として規定してなるロボットシミュレーション装置。
【請求項８】
請求項７に記載のロボットシミュレーション装置であって、
前記領域推定部が、前記死角領域を、前記ワークモデルが前記仮想作業空間内の平面方向の位置に応じて変化させてなるロボットシミュレーション装置。
【請求項９】
請求項５〜８のいずれか一項に記載のロボットシミュレーション装置であって、
前記領域推定部が、前記センサモデルで三次元計測を行う際の仮想的な三次元測定光源と、前記バラ積みデータを構成する各点とをそれぞれ結ぶ線分を仮想光軸として定義し、前記仮想光軸上に別のワークモデルの点が存在するか否かを判定して、当該別のワークモデルの点がある場合は三次元計測が困難な点と推定し、該三次元計測が困難な点の集合でもって推定領域を特定するよう構成してなるロボットシミュレーション装置。
【請求項１０】
請求項４〜９のいずれか一項に記載のロボットシミュレーション装置であって、
前記領域推定部は、前記センサモデル設定部で設定されたセンサモデルの仮想的な三次元測定光源から延長された測定軸に対して、予め定めた角度閾値以上の傾斜角度を有する領域を、三次元計測が困難な領域として推定するよう構成してなるロボットシミュレーション装置。
【請求項１１】
請求項１０に記載のロボットシミュレーション装置であって、
前記角度閾値が、予め定めた固定値であるロボットシミュレーション装置。
【請求項１２】
請求項１０に記載のロボットシミュレーション装置であって、さらに、
ワークモデルの表面状態に関するパラメータを入力する表面状態パラメータ設定部を備え、
前記表面状態パラメータ設定部により設定された表面状態パラメータによって、角度閾値を変化させるよう構成してなるロボットシミュレーション装置。
【請求項１３】
請求項１０に記載のロボットシミュレーション装置であって、
センサ部で実測した三次元計測データに基づいて、角度閾値を変化させるよう構成してなるロボットシミュレーション装置。
【請求項１４】
請求項４〜１３のいずれか一項に記載のロボットシミュレーション装置であって、
前記領域推定部は、前記センサモデル設定部で設定された仮想的なセンサモデルに基づいて、シミュレーション上で用いられる前記ワークモデルを積み上げたバラ積みデータから、計測困難な推定領域を推定するよう構成してなるロボットシミュレーション装置。
【請求項１５】
請求項１〜１３のいずれか一項に記載のロボットシミュレーション装置であって、
前記領域推定部は、バラ積みされたワークに対してセンサ部により模擬的に三次元計測を行った実測データに基づいて、計測困難な推定領域を推定するよう構成してなるロボットシミュレーション装置。
【請求項１６】
請求項１〜１５のいずれか一項に記載のロボットシミュレーション装置であって、さらに、
シミュレーションの環境に関する情報を設定するためのシミュレーション環境設定部を備えてなるロボットシミュレーション装置。
【請求項１７】
請求項１６に記載のロボットシミュレーション装置であって、
前記シミュレーション環境設定部は、ワークを収納する容器をモデル化した容器モデルの設定が可能であり、前記センサモデルと容器モデルとの相対的な位置関係に基づいて、推定領域を推定するよう構成してなるロボットシミュレーション装置。
【請求項１８】
請求項１〜１７のいずれか一項に記載のロボットシミュレーション装置であって、
前記ワークモデル設定部が、前記ワークモデルを、ＣＡＤで作成された三次元のＣＡＤモデルとして設定してなるロボットシミュレーション装置。
【請求項１９】
請求項１〜１７のいずれか一項に記載のロボットシミュレーション装置であって、
前記ワークモデル設定部が、前記ワークモデルを、三次元情報を有する点群データで設定してなるロボットシミュレーション装置。
【請求項２０】
請求項１〜１７のいずれか一項に記載のロボットシミュレーション装置であって、
前記ワークモデル設定部が、前記ワークモデルを、高さ情報からなる画像データで設定してなるロボットシミュレーション装置。
【請求項２１】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、
ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定工程と、
前記ワークモデル設定工程で設定された複数のワークモデルを、仮想的な作業空間である仮想作業空間内に積み上げた、仮想的なバラ積みデータを生成するバラ積みデータ生成工程と、
前記バラ積みデータ生成工程で生成されたバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定する領域推定工程と、
前記領域推定工程により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するためのピッキング動作シミュレーションを実行するピッキング動作シミュレーション工程と
を含むロボットシミュレーション方法。
【請求項２２】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするロボットシミュレーションプログラムであって、
ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定機能と、
前記ワークモデル設定機能で設定された複数のワークモデルを、仮想的な作業空間である仮想作業空間内に積み上げた、仮想的なバラ積みデータを生成するバラ積みデータ生成機能と、
前記バラ積みデータ生成機能で生成されたバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定する領域推定機能と、
前記領域推定機能により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するためのピッキング動作シミュレーションを実行するピッキング動作シミュレーション機能と
をコンピュータに実現させるためのロボットシミュレーションプログラム。
【請求項２３】
請求項２２に記載のプログラムを記録したコンピュータで読み取り可能な記録媒体または記憶した機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器に関する。
【背景技術】
【０００２】
マニピュレータにロボットビジョンを組み合わせて、対象となるワークを撮像して高さ情報を取得した上で、適切な位置を把持（ピック）して、所望の位置に載置（プレース）可能なロボット装置が開発されている。このようなロボット装置を用いて、通い箱に入れられた多数のワークを、カメラ等のセンサ部で撮像して姿勢を把握し、適切な把持位置を把握した上で、この把持位置までロボットのアームを移動させ、ハンド部等のエンドエフェクタで把持して、通い箱の外の決められた位置にプレースすることが行われている。このような作業はバラ積みピッキングと呼ばれ、このバラ積みピッキングを正しく運用できるよう、予めバラ積みピッキングを行うロボットのピックやプレース動作のシミュレーションを三次元的に行うロボットシミュレーション装置が開発されている。
【０００３】
このようなロボットシミュレーション装置では、ワークの三次元形状を有するＣＡＤモデルをワークモデルとして、仮想的な作業空間である仮想作業空間に無作為に配置して、ロボットの取出工程、すなわちバラ積みピッキングをシミュレーションしている。
【０００４】
しかしながら、実際の運用時に、センサ部により計測可能なワーク領域は、上方に設置されたセンサ部から見て最表面に位置する領域のみであり、ワークの裏面側の領域や、他のワークや容器によって死角となる領域の計測はできない。また、最表面に位置する領域であっても、急な傾斜を持つ領域や、鏡面成分の大きな領域は、センサ部が十分な反射光を受光できずに計測ができないことがある。例えば、金属製のワークの場合は鏡面反射が強く、ワークの姿勢によっては計測できない部位が生じる。
【０００５】
一例として、あるワークについて、シミュレーション上で表示されるワークの様子を図７９Ａに、このワークの実物を実際に計測しようとする状態を図７９Ｂに、それぞれ示す。図７９Ａに示すように、シミュレーション上では明確に形状が表示されているワークモデルＷＭであっても、実際の計測時には、図７９Ｂに示すように、上方からカメラや照明で撮像した場合、傾斜が急峻となる部位については三次元形状を計測できない。
【０００６】
このように、シミュレーション上で用いられるＣＡＤモデルを積み上げたバラ積みデータは、完全な高さ情報を有する三次元データであることから、ワークモデルをサーチできるものの、実運用時には計測不可能な領域が生じることから、サーチに失敗してしまうことがある。いいかえると、従来のシミュレーションでは、実運用時には取得できないはずの完全な三次元形状を有するワークモデルの検出が行われているため、シミュレーション上で実運用時には検出ができないワークモデルであっても把持に成功する。このためシミュレーションでは把持に成功しても、実運用時には把持時に失敗してしまい、シミュレーション結果と実運用の結果を異ならせる要因となっていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４１５３５２８号公報
【特許文献２】特開２０１５−２１５２５９号公報
【特許文献３】特開２００２−３３１４８０号公報
【特許文献４】特開２０１５−１７１７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、このような事情に鑑みてなされたものであり、その目的の一は、シミュレーション結果と実運用時の結果を近付けるようにしたロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器を提供することにある。
【課題を解決するための手段及び発明の効果】
【０００９】
本発明の第１の形態に係るロボットシミュレーション装置によれば、作業空間に積み上げられた複数のワークの三次元形状をセンサ部により測定し、ロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、仮想的な作業空間である仮想作業空間内に複数の前記ワークモデルを積み上げた、仮想的なバラ積みデータを生成するためのバラ積みデータ生成部と、前記バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定するための領域推定部と、前記領域推定部により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するシミュレーションを実行するためのピッキング動作シミュレート部とを備えることができる。上記構成により、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。特に実運用時に三次元計測ができない領域を考慮したシミュレーションを行うことで、シミュレーションと実運用時の乖離を低減でき、信頼性の高いシミュレーションが可能となる。
【００１０】
また、第２の形態に係るロボットシミュレーション装置によれば、作業空間に積み上げられた複数のワークの三次元形状をセンサ部により測定し、ロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、仮想的な作業空間である仮想作業空間内に複数の前記ワークモデルを積み上げた、仮想的なバラ積みデータを生成するためのバラ積みデータ生成部と、前記バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が困難と推定される推定領域を特定するための領域推定部と、前記領域推定部により特定された推定領域のデータを含まないバラ積みデータをシミュレーション用データとして生成するためのシミュレーション用データ生成部と、前記シミュレーション用データを用いて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するシミュレーションを実行するためのピッキング動作シミュレート部とを備えることができる。上記構成により、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。特に実運用時に三次元計測ができない領域を考慮したシミュレーションを行うことで、シミュレーションと実運用時の乖離を低減でき、信頼性の高いシミュレーションが可能となる。
【００１１】
さらに、第３の形態に係るロボットシミュレーション装置によれば、上記構成に加えて、前記シミュレーション用データ生成部は、前記ピッキング動作シミュレート部によるバラ積みピッキング動作のシミュレーション実行中にいずれか一のワークモデルが取り出されると、残りのワークモデルに対して計測可能な領域を再度推定し、シミュレーション用データを更新するよう構成できる。上記構成により、上方のワークモデルが取り出された場合に生じ得る、残りのワークモデルの変化を考慮した上で、その下方に位置するワークモデルの計測が可能となり、より正確なバラ積みピッキングのシミュレーションが実現される。
【００１２】
さらにまた、第４の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、さらに、ワークの三次元計測を行うためのカメラの位置及び姿勢を仮想的に示すカメラモデルを、仮想的なセンサモデルとして設定するためのセンサモデル設定部を備えることができる。
【００１３】
さらにまた、第５の形態に係るロボットシミュレーション装置によれば、上記構成に加えて、前記センサモデル設定部が、前記センサモデルに、ワークの三次元計測を行うためのプロジェクタの位置及び姿勢を仮想的に示すプロジェクタモデルを含むよう構成できる。
【００１４】
さらにまた、第６の形態に係るロボットシミュレーション装置によれば、上記構成に加えて、前記領域推定部は、前記推定領域を、前記センサモデル設定部で設定されたセンサモデルから見て死角となる領域を、計測困難な死角領域として推定するよう構成できる。
【００１５】
さらにまた、第７の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記領域推定部は、前記推定領域として、前記センサモデル設定部で設定された三次元形状を計測するセンサモデルの種別が、センサ部が縞投影方式又は光切断方式で三次元計測する状態を仮想的に再現する場合、前記カメラモデルとプロジェクタモデルのいずれかから死角となる領域を死角領域として規定し、センサ部が複数のカメラを用いたステレオ方式で三次元計測する状態を仮想的に再現する場合、複数のカメラモデルのいずれかから死角となる領域を死角領域として規定できる。
【００１６】
さらにまた、第８の形態に係るロボットシミュレーション装置によれば、上記構成に加えて、前記領域推定部が、前記死角領域を、前記ワークモデルが前記仮想作業空間内の平面方向の位置に応じて変化させることができる。これにより、作業空間内の計測視野の中央部よりも周辺部の方が死角が発生し易いことに対応させる等、シミュレーションの精度を高めることできる。
【００１７】
さらにまた、第９の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記領域推定部が、前記センサモデルで三次元計測を行う際の仮想的な三次元測定光源と、前記バラ積みデータを構成する各点とをそれぞれ結ぶ線分を仮想光軸として定義し、前記仮想光軸上に別のワークモデルの点が存在するか否かを判定して、当該別のワークモデルの点がある場合は三次元計測が困難な点と推定し、該三次元計測が困難な点の集合でもって推定領域を特定するよう構成できる。上記構成により、仮想光軸とワークモデルとの干渉の有無に基づいて、計測の困難さを推定することができ、もってシミュレーションの精度を高めることができる。
【００１８】
さらにまた、第１０の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記領域推定部は、前記センサモデル設定部で設定されたセンサモデルの仮想的な三次元測定光源から延長された測定軸に対して、予め定めた角度閾値以上の傾斜角度を有する領域を、三次元計測が困難な領域として推定するよう構成できる。
【００１９】
さらにまた、第１１の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記角度閾値を、予め定めた固定値とできる。
【００２０】
さらにまた、第１２の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、さらにワークモデルの表面状態に関するパラメータを入力する表面状態パラメータ設定部を備え、前記表面状態パラメータ設定部により設定された表面状態パラメータによって、角度閾値を変化させるよう構成できる。
【００２１】
さらにまた、第１３の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、センサ部で実測した三次元計測データに基づいて、角度閾値を変化させるよう構成できる。
【００２２】
さらにまた、第１４の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記領域推定部は、前記センサモデル設定部で設定された仮想的なセンサモデルに基づいて、シミュレーション上で用いられる前記ワークモデルを積み上げたバラ積みデータから、計測困難な推定領域を推定するよう構成できる。
【００２３】
さらにまた、第１５の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記領域推定部は、バラ積みされたワークに対してセンサ部により模擬的に三次元計測を行った実測データに基づいて、計測困難な推定領域を推定するよう構成できる。上記構成により、バラ積みされたワークに対して実測したデータに基づいて計測困難な領域を推定できるため、より精度良くシミュレーションを実行することが可能となる。
【００２４】
さらにまた、第１６の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、さらに、シミュレーションの環境に関する情報を設定するためのシミュレーション環境設定部を備えることができる。
【００２５】
さらにまた、第１７の形態に係るロボットシミュレーション装置によれば、上記構成に加えて、前記シミュレーション環境設定部は、ワークを収納する容器をモデル化した容器モデルの設定が可能であり、前記センサモデルと容器モデルとの相対的な位置関係に基づいて、推定領域を推定するよう構成できる。
【００２６】
さらにまた、第１８の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記ワークモデル設定部が、前記ワークモデルを、ＣＡＤで作成された三次元のＣＡＤモデルとして設定できる。
【００２７】
さらにまた、第１９の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記ワークモデル設定部が、前記ワークモデルを、三次元情報を有する点群データで設定できる。
【００２８】
さらにまた、第２０の形態に係るロボットシミュレーション装置によれば、上記何れかの構成に加えて、前記ワークモデル設定部が、前記ワークモデルを、高さ情報からなる画像データで設定できる。
【００２９】
さらにまた、第２１の形態に係るロボットシミュレーション方法によれば、作業空間に積み上げられた複数のワークをロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定工程と、前記ワークモデル設定工程で設定された複数のワークモデルを、仮想的な作業空間である仮想作業空間内に積み上げた、仮想的なバラ積みデータを生成するバラ積みデータ生成工程と、前記バラ積みデータ生成工程で生成されたバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定する領域推定工程と、前記領域推定工程により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するためのピッキング動作シミュレーションを実行するピッキング動作シミュレーション工程とを含むことができる。これにより、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。
【００３０】
さらにまた、第２２の形態に係るロボットシミュレーションプログラムによれば、作業空間に積み上げられた複数のワークをロボットによって順次取り出すバラ積みピッキング動作をシミュレーションするロボットシミュレーションプログラムであって、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定機能と、前記ワークモデル設定機能で設定された複数のワークモデルを、仮想的な作業空間である仮想作業空間内に積み上げた、仮想的なバラ積みデータを生成するバラ積みデータ生成機能と、前記バラ積みデータ生成機能で生成されたバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、前記作業空間の上方に配置されるセンサ部により三次元計測が可能と推定される推定領域を特定する領域推定機能と、前記領域推定機能により特定された推定領域のデータに基づいて、前記仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するためのピッキング動作シミュレーションを実行するピッキング動作シミュレーション機能とをコンピュータに実現させることができる。上記構成により、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。
【００３１】
さらにまた、第２３の形態に係るコンピュータで読み取り可能な記録媒体または記憶した機器は、上記ロボットシミュレーションプログラムを格納するものである。記録媒体には、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷやフレキシブルディスク、磁気テープ、ＭＯ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、Ｂｌｕ−ｒａｙ、ＨＤ  ＤＶＤ（ＡＯＤ）等の磁気ディスク、光ディスク、光磁気ディスク、半導体メモリその他のプログラムを格納可能な媒体が含まれる。またプログラムには、上記記録媒体に格納されて配布されるものの他、インターネット等のネットワーク回線を通じてダウンロードによって配布される形態のものも含まれる。さらに記憶した機器には、上記プログラムがソフトウェアやファームウェア等の形態で実行可能な状態に実装された汎用もしくは専用機器を含む。さらにまたプログラムに含まれる各処理や機能は、コンピュータで実行可能なプログラムソフトウエアにより実行してもよいし、各部の処理を所定のゲートアレイ（ＦＰＧＡ、ＡＳＩＣ）等のハードウエア、又はプログラムソフトウエアとハードウェアの一部の要素を実現する部分的ハードウエアモジュールとが混在する形式で実現してもよい。
【図面の簡単な説明】
【００３２】
【図１】ロボットシステムを用いてバラ積みピッキング動作を行う様子を示す模式図である。
【図２】ロボットシステムのブロック図である。
【図３】実施形態１に係るロボットシミュレーション装置を示すブロック図である。
【図４】実施形態１Ｂに係るピッキング動作シミュレーションシステムを示すブロック図である。
【図５】実施形態２に係るピッキング動作シミュレーションシステムを示すブロック図である。
【図６】センサ部の一例を示す斜視図である。
【図７】図７Ａは収納容器にワークを無作為に投入して積み上げた例を示す模式断面図、図７Ｂはワークを床面上に積み上げた例を示す模式断面図、図７Ｃはワークを一定姿勢でトレイ上に配列した状態を示す斜視図である。
【図８】図８Ａはエンドエフェクタでワークを把持する例を示す模式図、図８Ｂは空洞を有するワークを内面から把持する例を示す模式図、図８Ｃは板状のワークを吸引して把持する例を示す模式図である。
【図９】ピッキング動作シミュレーションシステムを示すブロック図である。
【図１０】実施形態４に係るピッキング動作シミュレーションシステムを示すブロック図である。
【図１１】実施形態５に係るロボットシミュレーション装置を示すブロック図である。
【図１２】実施形態６に係るロボットシミュレーション装置を示すブロック図である。
【図１３】実施形態７に係るロボットシミュレーション装置を示すブロック図である。
【図１４】シミュレーション環境の設定手順を示すフローチャートである。
【図１５】図１５Ａはワークモデルを示す斜視図、図１５Ｂは図１５Ａのワークモデル上に領域を指定した状態を示す斜視図である。
【図１６】図１６Ａは図ＩＡのワークモデルをワイヤーフレームで表示した斜視図、図１６Ｂは図１６Ａのワークモデル上で領域を指定する様子を示す斜視図である。
【図１７】ワークモデルの一例を示す斜視図である。
【図１８】図１７のワークモデルの展開図である。
【図１９】図１９ＡはＬａｍｂｅｒｔ反射モデルを説明する模式図、図１９ＢはＰｈｏｎｇ鏡面反射モデルを説明する模式図である。
【図２０】反射光の分布の例を示すグラフである。
【図２１】図２１Ａは入射光と観測点方向と正反射方向の関係を示す模式図、図２１Ｂは入射光と観測点の方向に対してワークの角度を変化させる様子を示す模式図である。
【図２２】図２１Ｂのワークで傾斜角度を変化させたときの入射光と反射光の比率を示すグラフである。
【図２３】図２３Ａは拡散反射の割合が高い高さ画像を二次元表示した例を示すイメージ図、図２３Ｂは図２３Ａを三次元表示した斜視図、図２３Ｃは鏡面反射の割合が高い高さ画像の例を示すイメージ図、図２３Ｄは図２３Ｃの斜視図である。
【図２４】実施形態８に係るロボットシミュレーション装置の機能ブロック図である。
【図２５】ピッキング動作シミュレーションの手順を示すフローチャートである。
【図２６】物理シミュレーションでワークモデルのバラ積み状態を生成する手順を示すフローチャートである。
【図２７】円筒形のワークモデルをバラ積みしたバラ積みデータを示すイメージ図である。
【図２８】図２８Ａは円筒形のワークモデルをバラ積みした初期状態、図２８Ｂは終了状態から２０回遡った状態、図２８Ｃは終了状態から１０回遡った状態、図２８Ｄは終了状態を、それぞれ示すイメージ図である。
【図２９Ａ】図２９Ａはデータの保存を考慮した物理シミュレーションの手順の一部を示すフローチャートである。
【図２９Ｂ】図２９Ｂは図２９Ａに続くデータの保存を考慮した物理シミュレーションの手順を示すフローチャートである。
【図３０】Ｔ字型のワークが不安定な姿勢で存在している状態を示す模式図である。
【図３１】ワークモデルの投下時の姿勢に制限を加えてバラ積み状態を生成する手順を示すフローチャートである。
【図３２】ワークモデルの投下後の姿勢に制限を加えてバラ積み状態を生成する手順を示すフローチャートである。
【図３３】ワークモデルの投下時と投下後の姿勢に制限を加えてバラ積み状態を生成する手順を示すフローチャートである。
【図３４】図３４Ａはワークの表面、図３４Ｂはワークの裏面を示す斜視図である。
【図３５】図３４Ａ、図３４Ｂのワークがバラ積みされた状態を示す斜視図である。
【図３６】図３６Ａは収納容器にワークが整列されて詰め込まれた状態を示す斜視図、図３６Ｂはワークが収納容器内で段積みされた状態を示す斜視図である。
【図３７】実施形態９に係るワークモデルの位置、姿勢に制限を加えてバラ積み状態を生成する手順を示すフローチャートである。
【図３８】ワークモデルの基本姿勢設定画面の一例を示すイメージ図である。
【図３９】姿勢条件設定画面の一例を示すイメージ図である。
【図４０】ワークモデルの傾斜角度０°、回転角度±１８０°に指定した場合のワークモデルの姿勢の例を示すイメージ図である。
【図４１】ワークモデルの傾斜角度１５°、回転角度±１８０°に指定した場合のワークモデルの姿勢の例を示すイメージ図である。
【図４２】配置条件設定画面の一例を示すイメージ図である。
【図４３】図４３Ａはワークモデルを収納容器内に完全ランダムに配置した例、図４３Ｂは一方向に配置した例、図４３Ｃは複数方向、複数段に配列した例を示すイメージ図である。
【図４４】姿勢安定性の演算方法を示すフローチャートである。
【図４５】図４５ＡはＴ字状のワークを示す斜視図、図４５Ｂは図４５Ａに対する外接立方体を設定した状態を示す斜視図、図４５Ｃは図４５Ｂの最大面積を取る面を示す平面図である。
【図４６】図４６Ａは図４５Ａのワークが傾斜姿勢で置かれた状態を示す斜視図、図４６Ｂは図４６Ａの接触部の領域を示す平面図である。
【図４７】図４７Ａは図４５Ａのワークが直立姿勢で置かれた状態を示す斜視図、図４７Ｂは図４７Ａの接触部の領域を示す平面図である。
【図４８】図４８Ａは図４５Ａのワークが壁面に寄りかかった姿勢で置かれた状態を示す斜視図、図４８Ｂは図４８Ａの接触部の領域を示す平面図である。
【図４９】図４９Ａは図４６Ｂの平面図、図４９Ｂは図４９Ａから最小面積外接矩形を得た状態を示す平面図である。
【図５０】図５０Ａは図４７Ｂの平面図、図５０Ｂは図５０Ａから最小面積外接矩形を得た状態を示す平面図である。
【図５１】図５１Ａは図４８Ｂの平面図、図５１Ｂは図５１Ａから最小面積外接矩形を得た状態を示す平面図である。
【図５２】実施形態１０に係るロボットシミュレーション装置を示すブロック図である。
【図５３】実施形態１１に係るロボットシミュレーション装置を示すブロック図である。
【図５４】ワークを収納容器内に中敷きを介して複数段に配列した例を示す模式断面図である。
【図５５】ワークを収納容器内に間仕切りを介して配列した例を示す模式断面図である。
【図５６】バラ積みされたワークモデル群を示すイメージ図である。
【図５７】図５６においてハッチングされたワークモデルを除去した状態を示すイメージ図である。
【図５８】図５６においてハッチングされたワークモデルを除去した状態で物理シミュレーションを再実行した結果を示すイメージ図である。
【図５９】ピッキング動作シミュレーションにおいて、ワークモデルの数を一つ減らす手順の詳細を示すフローチャートである。
【図６０】図６０Ａはバラ積みデータの斜視図、図６０Ｂは図６０Ａを高さ画像に変換したバラ積み画像、図６０Ｃは図６０Ｂを点群で示した斜視図、図６０Ｄは図６０Ａを傾斜面を無効として高さ画像に変換したバラ積み画像、図６０Ｅは図６０Ｄを点群で示した斜視図である。
【図６１】図６１Ａは鏡面反射の弱いワークの三次元形状を取得可能な角度範囲を示す模式断面図、図６１Ｂは鏡面反射の強いワークの三次元形状を取得可能な角度範囲を示す模式断面図である。
【図６２】図６２Ａは樹脂製のワークをバラ積みしたバラ積みデータを示すイメージ図であり、図６２Ｂは図６２Ａの内、樹脂製ワークを拡大した要部拡大図であり、図６２Ｃは金属製のワークをバラ積みしたバラ積みデータを示すイメージ図であり、図６２Ｄは図６２Ｃの内、金属製のワークを拡大した要部拡大図である。
【図６３】バラ積み画像を示すイメージ図である。
【図６４】パターンプロジェクション方式でカメラ側からワークが見えない状態を示す模式図である。
【図６５】図６５Ａはカメラからワークが見えている例、図６５Ｂにカメラからワークが見えない例、図６５Ｃは複数のカメラのいずれかで見えている例を示す模式図である。
【図６６】実施形態１２に係るピッキング動作シミュレーションの手順を示すフローチャートである。
【図６７】実施形態１２に係る物理シミュレーションでワークモデルのバラ積み状態を生成する手順を示すフローチャートである。
【図６８】バラ積み画像を生成する手順を示すフローチャートである。
【図６９】ワーク上の注目位置と各カメラと結ぶ直線を示す模式図である。
【図７０】カメラと注目位置とを結ぶ直線上に障害物がないかをチェックする様子を示す模式図である。
【図７１】実施形態１３に係るロボットシミュレーション装置を示すブロック図である。
【図７２】バラ積みされたワーク群を実際に三次元計測した高さ画像を示すイメージ図である。
【図７３】樹脂製のワークの角度分布ヒストグラムを示すグラフである。
【図７４】金属製のワークの角度分布ヒストグラムを示すグラフである。
【図７５】シミュレーション環境の設定手順を示すフローチャートである。
【図７６】バラ積み状態のワーク群を撮像した高さ画像を示すイメージ図である。
【図７７】図７７Ａは実際に撮像した三次元計測データのプロファイル、図７７Ｂは図７７Ａに三次元サーチ結果を重ね合わせた状態を示す図である。
【図７８】実施形態１４に係るシミュレーション環境の設定手順を示すフローチャートである。
【図７９】図７９Ａはあるワークをシミュレーション上で表示する様子を示すイメージ図であり、図７９Ｂは図７９Ａのワークの実運用時に計測した状態を示すイメージ図である。
【発明を実施するための形態】
【００３３】
以下、本発明の実施形態を図面に基づいて説明する。ただし、以下に示す実施形態は、本発明の技術思想を具体化するための例示であって、本発明は以下のものに特定されない。また、本明細書は特許請求の範囲に示される部材を、実施形態の部材に特定するものでは決してない。特に実施形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一若しくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
（ロボットシステム）
【００３４】
ロボットシステム１０００を用いた、ワークのバラ積みピッキング動作が行われている。このようなロボットシステム１０００の構成例を図１に、またロボットシステム１０００のブロック図を図２に、それぞれ示す。このようなバラ積みピッキングでは、作業空間に積み上げられた複数のワークＷＫを、ロボットを用いて順次取り出し、所定の位置に配置する。例えば、収納容器ＢＸに無作為に投入された多数の部品を、カメラや照明等のセンサ部で三次元形状を取得し、ワークＷＫを一つづつ、ロボットのアームＡＲＭの先端に設けられたエンドエフェクタＥＥＴでもって把持し、所定の位置、例えばコンベアベルト状に並べていく。
（ピッキング動作シミュレーション）
【００３５】
このようなロボットシステム１０００でバラ積みピッキング動作を行うにあたり、予めシミュレーションを行ってバラ積みピッキング動作の検証を行うことが行われている。例えばロボットの設置位置やワークの収納容器ＢＸ、載置位置の相対位置、高さ等によっては、正しくワークを把持できないことがある。またセンサ部の設置される位置や角度によっては、ワークを正しく撮像できず、その三次元形状を正確に測定することも困難となる。そこで、予めバラ積みピッキングを行うロボットのピックやプレース動作の三次元的なピッキング動作シミュレーションを、ロボットシミュレーション装置を用いて行う。ロボットシミュレーション装置では、ワークの三次元形状を有するＣＡＤモデルをワークモデルとして、仮想的な作業空間である仮想作業空間に無作為に配置して、ロボットの取出工程、すなわちバラ積みピッキングをシミュレーションする。このようなシミュレーションで十分にピッキングが成功していないとユーザが判断した場合、ユーザはロボットを動作させるパラメータを修正してシミュレーションをやり直す。
（実施形態１）
（ロボットシミュレーション装置）
【００３６】
そこで、実施形態１においては、実際のワークを三次元計測した状態にできる限り近い状態でシミュレーションできるように、バラ積み状態のワークモデルの姿勢に基づいて、計測不可能となる部分を除外した三次元計測データを生成し、これに基づいてピッキング動作シミュレーションを行う。具体的には、バラ積み状態の姿勢から定まる、ワークモデルの表面の角度に基づいて、一定以上急峻な角度となる部分は三次元計測不可として、ピッキング動作シミュレーションで生成するバラ積みデータから除外する。これにより、センサ部を設置したりワークを実際に準備するといった手間のかかる確認作業や設定調整をしなくても、実際にバラ積みワークを撮像した状態に近い状態を実現できる。
【００３７】
このような本発明の実施形態１に係るロボットシミュレーション装置１００のブロック図を図３に示す。図３に示すロボットシミュレーション装置１００は、ワークモデル設定部１１と、バラ積みデータ生成部２０と、バラ積みデータ記憶部２３と、ピッキング動作シミュレート部３０と、シミュレーションパラメータ調整部２９とを備える。
【００３８】
ワークモデル設定部１１は、ワークの三次元形状をモデル化したワークモデルを設定するための部材である。
【００３９】
バラ積みデータ生成部２０は、姿勢条件設定部１６により設定された姿勢条件に従って、仮想作業空間内に複数のワークモデルを積み上げたバラ積みデータを生成するための部材である。
【００４０】
ピッキング動作シミュレート部３０は、バラ積みデータ生成部２０で生成されたバラ積みデータに対して、仮想作業空間内のワークモデルのピッキング動作を検証するバラ積みピッキング動作シミュレーションを実行するための部材である。
【００４１】
バラ積みデータ記憶部２３は、ピッキング動作シミュレート部３０によるピッキング動作シミュレーションの実行前のバラ積みデータ、又はピッキング動作シミュレーション実行途中のバラ積みデータの少なくとも何れかを記憶するための部材である。
【００４２】
シミュレーションパラメータ調整部２９は、ピッキング動作シミュレート部３０によるピッキング動作シミュレーションの結果、ロボットによる取り出しが不可能なワークモデルが存在する場合に、ロボットの動作に係るシミュレーションパラメータを調整するための部材である。
【００４３】
ピッキング動作シミュレート部３０は、シミュレーションパラメータ調整部２９により調整されたシミュレーションパラメータを用いて、バラ積みデータ記憶部２３に記憶されたシミュレーション実行前またはシミュレーション実行途中のバラ積みデータを読み出して、ピッキング動作シミュレーションを再実行としている。これにより、ピッキング動作シミュレーションに用いたバラ積みデータを記憶することで、シミュレーションパラメータを調整した結果が効果的であったかどうかの判断が容易となる。
（表示部３）
【００４４】
またロボットシミュレーション装置は、バラ積みデータ記憶部２３に記憶されたバラ積みデータを表示可能な表示部３を備えることもできる。これにより、保存済みのバラ積みデータをユーザが視覚的に確認しながら、シミュレーションパラメータを調整することが可能となり、操作性を向上させることができる。
（実施形態１Ｂ）
【００４５】
さらにロボットシミュレーション装置は、ピッキング動作シミュレート部３０によるピッキング動作シミュレーションの結果、ロボットによる取り出しが不可能なワークモデルが存在する場合に、このワークモデルの取り出し失敗原因が、予め定義された複数の原因候補の中のいずれに該当するかを解析するための原因解析部２４を備えることもできる。これにより、取り出しが不可能となった取り出し失敗原因を表示させることで、どのように修正すればよいかの対策を講じ易くなり、バラ積みピッキング動作をシミュレーションしながら、適切な設定に調整する作業を容易に行うことが可能なる。このような例を実施形態１Ｂとして、図４に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部１１と、バラ積みデータ生成部２０と、バラ積みデータ記憶部２３と、ピッキング動作シミュレート部３０と、シミュレーションパラメータ調整部２９と、表示部３と、原因解析部２４を備える。実施形態１Ｂにおいても、上述した実施形態１と同じ部材については、同一の符号を付して詳細説明を適宜省略する。原因解析部２４の詳細については後述する。
（実施形態２）
【００４６】
ピッキング動作シミュレーションにおいて、ロボットのエンドエフェクタを模したエンドエフェクタモデルで把持可能と判定されても、実際に運用しようとすると、うまくバラ積みピッキングできないことがある。これは、ピッキング動作シミュレーション時には、図７９Ａに示すような、仮想的な三次元形状を有するワークモデルＷＭでもって判定しているところ、実際の運用時にはワークの三次元形状を取得できない場合があることに起因する。例えばワークが金属製の場合など、鏡面反射が強い場合には、ワークの姿勢によって計測できない部位が生じる。例えば図７９Ｂに示すように、作業空間の上方からセンサ部で撮像する結果、ワークＷＫの傾斜が急峻となる部位については三次元形状を計測できない。さらに複数のワークが重なり合っている際に、下側にあるワークの形状を三次元計測できないという問題もある。この結果、シミュレーション上では三次元形状をサーチできるが、実運用時にはサーチに失敗してしまうことがあった。
【００４７】
そこで、実施形態２においては、実際のワークを三次元計測した状態にできる限り近い状態でシミュレーションできるように、バラ積み状態のワークモデルの姿勢に基づいて、計測不可能となる部分を除外した三次元計測データを生成し、これに基づいてピッキング動作シミュレーションを行う。具体的には、バラ積み状態の姿勢から定まる、ワークモデルの表面の角度に基づいて、一定以上急峻な角度となる部分は三次元計測不可として、ピッキング動作シミュレーションで生成するバラ積みデータから除外する。これにより、センサ部を設置したりワークを実際に準備するといった手間のかかる確認作業や設定調整をしなくても、実際にバラ積みワークを撮像した状態に近い状態を実現できる。
（物理シミュレーション部）
【００４８】
またロボットシミュレーション装置は、ワークを積み上げたバラ積み状態を仮想的に再現する物理シミュレーションを行って、バラ積みデータを生成することもできる。このような例を実施形態２として図５に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部１１と、姿勢条件設定部１６と、物理シミュレーション部６０と、バラ積みデータ生成部２０と、バラ積みデータ記憶部２３と、領域推定部２２と、ピッキング動作シミュレート部３０とを備える。このロボットシミュレーション装置は、ワークを積み上げたバラ積み状態を仮想的に再現する物理シミュレーションを行って、バラ積みデータを生成する。
【００４９】
これにより、明らかに不自然な姿勢のワークモデルを除外するなど、ユーザの実運用環境に合わせたバラ積みデータを生成してピッキング動作シミュレーションを行えるため、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。
【００５０】
バラ積みデータ生成部２０は、姿勢条件設定部１６で設定された姿勢条件に合致しないワークモデルを排除したバラ積みデータを生成することができる。あるいはバラ積みデータ生成部２０は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。この場合は、物理的に発生確率が低いワークモデルを、ユーザが姿勢条件設定部１６で指定する他、予めロボットシミュレーション装置側で物理的に発生確率が低いワークモデルの条件を用意しておくこともできる。このような規定値による姿勢条件の設定も、姿勢条件設定部１６に包含する。
【００５１】
またバラ積みデータ生成部２０は、姿勢条件設定部１６で設定された姿勢条件に合致しないワークモデルが、バラ積みデータ内に存在する場合、あるいは所定割合以上存在する場合は、バラ積みデータを作成し直すよう構成してもよい。これにより、実運用時から懸け離れたバラ積みデータが得られた場合には、ピッキング動作シミュレーションを行わずに、バラ積みデータを作成し直し、実運用時に近いバラ積みデータに対してのみピッキング動作シミュレーションを行うことで、より正確なシミュレーション結果を得ることができる。
【００５２】
姿勢条件設定部１６は、ワークモデル設定部１１で設定されたワークモデルを、仮想的な作業空間である仮想作業空間内に配置する際に、このワークモデルが取り得る姿勢に関する条件を姿勢条件として設定するための部材である。姿勢条件は、ユーザが手動で設定する他、予めロボットシミュレーション装置側で既定値として提示する構成としてもよい。また、ロボットシミュレーション装置が提示する姿勢条件の初期値を、ユーザが調整可能としてもよい。なお姿勢条件設定部１６は、ワークモデルの基準姿勢からの許容回転角度、傾斜角度を姿勢条件として設定可能に構成できる。また姿勢条件設定部１６は、ワークモデルの床面または他のワークモデルとの接触位置を真上から投影し、投影された接触位置を囲む外接矩形の面積と、ワークモデルの最大外接矩形の最大面積の比率を、姿勢条件として設定可能に構成してもよい。さらに姿勢条件設定部１６は、ワークモデルの床面との接触位置や他のワークモデルとの接触位置、あるいは接触面の内で、最下方に位置する接触位置と重心位置との高さ方向の差分を姿勢条件として設定可能に構成することもできる。重心に対して低い位置で支えられているワークモデルは不安定と捉えることができる。さらにまた姿勢条件設定部１６は、ワークモデルの特定の面が底面となるように姿勢条件を設定可能に構成してもよい。加えて姿勢条件設定部１６は、ワークモデル間のＸ方向及び／またはＹ方向の配置間隔と、ワークモデルの段数を、姿勢条件として設定可能に構成することも可能である。
【００５３】
物理シミュレーション部６０は、ワークモデル設定部１１で設定されたワークモデルを用いて、ワークを重力の作用を受けて作業空間に投入する動作を、ワークモデルを仮想作業空間に投入することでシミュレーションするための部材である。また、このようなワークモデルを仮想作業空間に投入するシミュレーションを、物理シミュレーションや投入動作シミュレーションと呼ぶ。また、本明細書において「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは収納容器や床面にワークモデルを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルを一つづつ作業空間内に順次投入する他、複数のワークモデルを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
【００５４】
このようにして物理シミュレーションを複数回繰り返し、あるいは一括して行い、得られた結果、すなわち複数のワークモデルが無作為に、あるいは所定の態様で積み上げられたワークモデル群に基づいて、バラ積みデータ生成部２０は、仮想作業空間内に複数のワークモデルが積み上げられた、仮想的な三次元のバラ積みデータを生成する。
【００５５】
ピッキング動作シミュレート部３０は、生成されたバラ積みデータに対して、仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するための部材である。これにより、ワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、実際にワークを用意することなく、実運用に近い形で事前に行うことができる（詳細は後述）。
【００５６】
特に物理シミュレーション部６０は、ピッキング動作シミュレート部３０による一のワークモデルを把持し少なくとも取り出し動作を開始した後、このワークモデルが取り出された後の状態のバラ積みデータに対して物理シミュレーションを再度実行する。物理シミュレーションを再度実行するタイミングは、ワークモデルを把持し、載置位置にプレースされた後とする他、ワークモデルの取り出し作業の途中であってもよい。すなわち、エンドエフェクタモデルでワークモデルを把持して、このワークモデルが持ち上げられた状態では、一のワークモデルが除去されたことで、このワークモデルの周辺にあった他のワークモデルの配置が移動可能となるため、把持されたワークモデルが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルが把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルが把持されて持ち上げられた時点から所定の時間の経過後（例えば１０秒後）としてもよい。
【００５７】
これを受けてバラ積みデータ生成部２０は、物理シミュレーション部６０による物理シミュレーションの再実行の結果に応じて、ピッキング動作シミュレート部３０によるピッキング動作のシミュレーション中に、バラ積みデータを更新する。このようにしてピッキング動作シミュレート部３０は、ピッキング動作シミュレーション中にバラ積みデータからワークモデルが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーションにより演算されるので、より正確なバラ積みピッキングのシミュレーションが実現される。
【００５８】
また物理シミュレーション部は、バラ積みデータ生成部２０が姿勢条件設定部１６で設定された姿勢条件に合致しないワークモデルを排除した場合、この姿勢条件に合致しないワークモデルを排除した後の状態のバラ積みデータに対して、再度物理シミュレーションを適用するよう構成することもできる。これにより、例えば空中に浮いている等、物理的に存在し得ない姿勢のワークモデルが物理シミュレーション時には発生し得るため、このようなワークモデルを排除することで、信頼性の高い物理シミュレーション結果を得ることが可能となる。
（初期姿勢）
【００５９】
物理シミュレーション部は、姿勢条件設定部１６により設定された姿勢条件に基づいてワークモデルの初期姿勢を決定し、初期姿勢のワークを作業空間に落下させる物理シミュレーションを実行するよう構成してもよい。また物理シミュレーション部により物理シミュレーションを実行した場合、更に姿勢条件設定部１６により設定された姿勢条件に合致しないワークモデルを排除するよう構成してもよい。
【００６０】
これらの部材は、例えばマイクロプロセッサ（ＭＰＵ）やＣＰＵ、ＬＳＩ、ＦＰＧＡやＡＳＩＣ等のゲートアレイ、ＤＳＰ等のハードウエアやソフトウエア、あるいはこれらの混在により実現できる。また必ずしも各構成要素が図３等に示した構成と同一でなくてもよく、その機能が実質的に同一であるもの、及び一つの要素が図３に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。
【００６１】
例えば、図５の例では物理シミュレーション部６０はバラ積みデータ生成部２０と個別に用意されているが、バラ積みデータ生成部に物理シミュレーション部を統合することもできる。あるいはピッキング動作シミュレート部に、物理シミュレーション部とバラ積みデータ生成部とを統合させてもよい。
【００６２】
一方、図２のブロック図に示すロボットシステム１０００は、センサ部２と、画像処理部１と、表示部３と、操作部４と、ロボット本体５と、ロボットコントローラ６と、ロボット操作具７とを備える。センサ部２は、作業空間を撮像すると共に、三次元形状を計測する部材である。また画像処理部１は、三次元サーチ、干渉判定、把持解算出を行う部材である。なおセンサ部２を、作業空間を撮像するのみとして、画像処理部１側で三次元形状を計測する構成とすることもできる。三次元形状を取得する方法は、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法、ＴＯＦ方式などがある。本実施形態においては、パターン投影法の内、位相シフト法を用いている。
【００６３】
このような三次元形状計測技術に応じて、センサ部２の構成が決定される。センサ部２は、カメラ、照明又はプロジェクタ等を備える。例えば位相シフト法でワークの三次元形状を計測する場合は、センサ部２として図６に示すように、プロジェクタＰＲＪと複数のカメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４を備える。センサ部２は、カメラやプロジェクタといった複数の部材で構成する他、これらを一体的に構成してもよい。例えばカメラやプロジェクタを統合してヘッド状とした３Ｄ撮像ヘッドをセンサ部とすることができる。
【００６４】
画像処理部１は、このようにして得られたワークのバラ積みデータに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。この画像処理部１は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用のコントローラ等が利用できる。なお図２では、画像処理部１を別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部と画像処理部を一体化したり、あるいはロボットコントローラに画像処理部を組み込むこともできる。また、センサ部側で撮像したデータに基づいて、画像処理部側でワークの三次元形状を取得するように構成してもよい。
【００６５】
表示部３は、画像処理部１で取得されたワークの三次元形状を表示させたり、各種設定や動作状態の確認を行うための部材であり、液晶モニタや有機ＥＬディスプレイ、ＣＲＴ等が利用できる。操作部４は、画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部３をタッチパネルとすることで、操作部と表示部を一体化することもできる。
【００６６】
例えばロボットシミュレーション装置や画像処理部を、ロボットシミュレーションプログラムをインストールしたコンピュータとした場合、表示部上にはロボットシミュレーションプログラムのグラフィカルユーザインターフェース（ＧＵＩ）画面が表示される。表示部上に表示されたＧＵＩ上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部を各種の設定を行うための設定部として利用できる。
【００６７】
ロボットコントローラ６は、センサ部２で撮像した情報に基づいてロボットの動作を制御する。またロボット操作具７は、ロボット本体５の動作設定を行うための部材であり、ペンダントなどが利用できる。
【００６８】
ロボット本体５は、可動式のアームＡＲＭと、アームＡＲＭの先端に固定されたエンドエフェクタＥＥＴを備える。このロボット本体５はロボットコントローラ６に制御されて、アームＡＲＭを動作させ、一個のワークＷＫをピッキングして、これを所望の位置に移動させてプレースした後、リリースする。このためアームＡＲＭの先端には、ワークＷＫを把持するためのエンドエフェクタＥＥＴを備えている。またワークＷＫをプレースする載置位置は、例えばトレイ上やコンベア上等が挙げられる。
【００６９】
ワークＷＫは、図１に示すように複数個が通い箱等の収容容器ＢＸに無作為に収納されている。このような作業空間の上方には、センサ部２が配置されている。センサ部２はカメラや照明を備えており、このセンサ部２で、ワークＷＫの三次元形状を計測することができる。ロボットコントローラ６は、センサ部２で計測されたワークＷＫの三次元形状に基づいて、複数のワークの内から、把持対象のワークＷＫを特定して、このワークＷＫを把持するよう、ロボットを制御する。そして、ワークＷＫを把持したまま、アームＡＲＭを動作させて予め定められた載置位置まで移動させ、所定の姿勢でワークＷＫを載置する。いいかえると、ロボットコントローラ６は、センサ部２でピッキング対象のワークＷＫを特定し、このワークＷＫをエンドエフェクタＥＥＴで把持して、把持したワークＷＫを所定の基準姿勢にて、プレースする位置である載置位置に載置してエンドエフェクタＥＥＴを開放するようにロボットの動作を制御する。
【００７０】
ここで本明細書においてバラ積みピッキングとは、図７Ａに示すような収納容器ＢＸに入れられて無作為に積み上げられたワークＷＫを、ロボットで把持して、所定の位置に載置する他、図７Ｂに示すような収納容器を用いずに所定の領域に積み上げられたワークＷＫに対して把持、載置を行う例、あるいは図７Ｃに示すような所定の姿勢で並べられて積み上げられたワークＷＫを順次把持、載置する例も含む意味で使用する。
【００７１】
また、図１の例ではセンサ部２を作業空間の上方に固定しているが、作業空間を撮像できる位置であれば足り、例えば斜めや側方、下方など、任意の定位置に配置できる。ただし、アームＡＲＭ上のような、可動する不定位置にセンサ部を配置する態様は除かれる。さらにセンサ部が有するカメラや照明の数も、一に限らず複数としてもよい。さらにまたセンサ部２やロボット、ロボットコントローラ６との接続は、有線接続に限られず、無線接続としてもよい。
【００７２】
またワークの把持とは、図８Ａに示すようにワークＷＫの外側を挟み込む把持の他、図８Ｂに示すような、空洞を有するワークＷＫ２の内部にエンドエフェクタＥＥＴ２の爪部を挿入して拡開させることによって保持する例や、図８Ｃに示すような板状のワークＷＫ３を吸引して保持するエンドエフェクタＥＥＴ３の例を含む意味で使用する。以下では、ワークの把持の例としてワークの外側面を両側から掴む態様について説明する。またワークは、図１に示すように収納容器ＢＸに多数個が収納されて無作為に積み上げられた状態で、このような複数のワークＷＫに対して一つづつ、エンドエフェクタＥＥＴでピックして、載置位置にプレースする作業を繰り返すバラ積みピッキング動作を、シミュレーションすることについて、以下説明する。
【００７３】
次に、ピッキング動作シミュレーション時のシステム構成のブロック図を図９に示す。この図に示すピッキング動作シミュレーションシステムは、画像処理部１と、表示部３と、操作部４を備える。この構成においては、画像処理部１上ですべてのシミュレーションを行う。すなわち、実運用時に画像処理部１となる部材が、ピッキング動作シミュレーション時にはロボットシミュレーション装置として機能する。ただ、ロボットシミュレーション装置を画像処理部と兼用する構成に限られず、ロボットシミュレーション装置を画像処理部とは個別に用意することもできる。
（実施形態４）
【００７４】
また本発明は、物理シミュレーションによりバラ積みされたワークモデル群に対して、そのままピッキング動作シミュレーションを実行する構成に限られず、バラ積みされたワークモデル群に対して、部位毎に三次元計測が可能かどうかを判定し、判定結果に基づいてピッキング動作シミュレーションを行うように構成してもよい。このような例を実施形態４に係るロボットシミュレーション装置として、図１０に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部１１と、姿勢条件設定部１６と、バラ積みデータ生成部２０と、領域推定部２２と、ピッキング動作シミュレート部３０と、表示部３とを備える。実施形態４において、上述した実施形態１と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
（領域推定部２２）
【００７５】
図１０に示す領域推定部２２は、バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、センサ部により三次元計測が困難と推定される推定領域を特定するための部材である。
【００７６】
このようにして得られた推定領域のデータに基づいて、ピッキング動作シミュレート部３０は、仮想作業空間内のワークモデルのバラ積みピッキング動作を検証するピッキング動作シミュレーションを実行する。すなわちピッキング動作シミュレート部３０は、バラ積みデータから推定領域を除去して、ピッキング動作シミュレーションを実行する。
【００７７】
なお、上記の例では領域推定部で推定される推定領域を、センサ部で三次元計測が困難と推定される領域としたが、逆にセンサ部で三次元計測が可能と推定される領域を推定領域としてもよい。
（実施形態５）
【００７８】
また、バラ積みデータから推定領域を除去したシミュレーション用データを生成するシミュレーション用データ生成部を付加してもよい。このような例を実施形態５として図１１に示す。この図に示すロボットシミュレーション装置２００は、ワークモデル設定部１１と、姿勢条件設定部１６と、物理シミュレーション部６０と、バラ積みデータ生成部２０と、領域推定部２２と、ピッキング動作シミュレート部３０と、シミュレーション用データ生成部４０と、表示部３を備えている。実施形態５において、上述した実施形態１と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
（シミュレーション用データ生成部４０）
【００７９】
シミュレーション用データ生成部４０は、領域推定部２２により特定された推定領域のデータを含まないバラ積みデータをシミュレーション用データとして生成するための部材である。ピッキング動作シミュレート部３０は、シミュレーション用データ生成部４０で生成されたシミュレーション用データを用いて、ピッキング動作シミュレーションを実行する。
【００８０】
また表示部３は、バラ積みデータ生成部２０で生成されたバラ積みデータを表示させることができる。このバラ積みデータは、物理シミュレーション部６０により更新された際には、リアルタイムに更新して表示部３に表示させることもできる。これにより、従来のようにワークモデルが取り出された後、物理シミュレーションが再実行されずに中に浮いたワークモデルが存在するような状態を回避すると共に、表示部３上で物理シミュレーションを再実行した結果を表示させることで、ユーザに対し違和感なくバラ積み状態のワークを表示させることができる。
【００８１】
さらに表示部３は、シミュレーション用データ生成部４０で生成されたシミュレーション用データを表示させて、ユーザに対し、確認させることが可能となる。この際、後述する図６０Ｄや図６２Ａ、図６２Ｃ等に示すように、実運用時には計測できない領域を、測定可能な領域と区別して表示させてもよい。これにより、ユーザに対して実運用時にどのような見え方となるのかを視覚的に把握させやすくなる。
（実施形態６）
【００８２】
さらに、ピッキング動作シミュレーションに際して、仮想的なセンサモデルを設定するセンサモデル設定部を付加することもできる。このような例を実施形態６に係るロボットシミュレーション装置３００として図１２に示す。
【００８３】
図１２に示す実施形態６に係るロボットシミュレーション装置３００は、シミュレーション環境設定部１０と、検出用設定部５０と、バラ積みデータ生成部２０と、領域推定部２２と、シミュレーション用データ生成部４０と、ピッキング動作シミュレート部３０と、表示部３を備える。バラ積みデータ生成部２０は、物理シミュレーション部６０を備える。実施形態６においても、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
（検出用設定部５０）
【００８４】
検出用設定部５０は、位置や姿勢の検出や、干渉判定、把持解算出を行うための各種の設定を行うための部材である。ここでの設定には、位置や姿勢の検出（三次元サーチ）に関する設定（例えば、データの間引き量や、姿勢制限、重視する特徴部位の指定など）、ワークに対するエンドエフェクタの把持姿勢の設定等が挙げられる。
（シミュレーション環境設定部１０）
【００８５】
またシミュレーション環境設定部１０は、バラ積み画像を取得するための各種の設定を行うための部材である。ここでのシミュレーション環境の設定には、バラ積みをさせるワークの数、収納容器の情報、床の情報、センサ部を構成するカメラやプロジェクタの設計情報等が挙げられる。またピッキング動作シミュレーション時には、収納容器に対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。シミュレーション環境設定部１０は、ワークモデル設定部１１と、センサモデル設定部１５と、姿勢条件設定部１６を備える。
（ワークモデル設定部１１）
【００８６】
ワークモデル設定部１１は、ワークモデルに関する条件を設定する。ワークモデルは、ＣＡＤで作成されたＣＡＤデータが利用できる。ワークのＣＡＤデータについて、ＣＡＤのデータ形式は特に限定されないが、本実施形態においては、三次元のＣＡＤデータとして、最もシンプルなＳＴＬ形式を用いている。ＳＴＬは、三角形のポリゴン情報（３点の座標とその面の法線ベクトル）の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい（後述する図６０Ｅにおいて、表示部３に表示された点群表示画像を示している）。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
（表面状態パラメータ設定部）
【００８７】
またワークモデル設定部１１は、表面状態パラメータ設定部１２を備えてもよい。表面状態パラメータ設定部１２は、ワークモデルの表面状態に関するパラメータを入力するための部材である。表面状態パラメータは、例えばワーク表面の反射率等を数値で規定する。あるいは、ワークの材質を規定する。個の場合、選択肢として「金属」、「ガラス」、「樹脂」等を挙げて、何れかをユーザに選択させるように構成してもよい。あるいはまた、表面状態を区別する官能的な選択肢、例えば「ぴかぴか」、「ざらざら」、「透明」、「つや消し」、「白っぽい」、「黒っぽい」等から選択させてもよい。この表面状態パラメータ設定部１２で設定された表面状態パラメータによって、後述する角度閾値（しきい値）を変化させることができる。
（容器モデル設定部１４）
【００８８】
さらにシミュレーション環境設定部１０は、通い箱など、ワークを収納する収納容器をモデル化した容器モデルを設定する容器モデル設定部１４を含めてもよい。この場合は、センサモデルと容器モデルとの相対的な位置関係に基づいて、推定領域を推定するよう構成できる。
【００８９】
姿勢条件設定部１６は、ワークモデルの特定の面又は辺が、容器モデルに対して、特定の関係となるように姿勢条件を設定可能に構成できる。
【００９０】
また物理シミュレーション部は、容器モデル設定部で設定される容器モデルの段数を設定し、複数のワークモデルを容器モデル内に同時に落下させる物理シミュレーションを実行可能に構成してもよい。
（センサモデル設定部１５）
【００９１】
センサモデル設定部１５は、センサ部を構成する部材、例えばワークの三次元計測を行うためのカメラやのいずれか又はすべてについて、位置や姿勢を仮想的に示すカメラモデルやプロジェクタモデルを設定する。センサモデルがカメラモデルのみか、あるいはプロジェクタモデルも含むかについては、センサ部が採用するワークの三次元形状の測定方法、及びこれを実現するための部材に依存する。例えばパッシブステレオ方式の場合は、プロジェクタが不要なのでカメラモデルのみで足りる。
【００９２】
この場合、領域推定部２２は、推定領域を、センサモデル設定部１５で設定されたセンサモデルから見て死角となる領域を、計測困難な死角領域として推定するよう構成できる。死角領域の定義は、センサモデル設定部１５で設定されたセンサモデルの種別によって異なる。例えばセンサ部で採用された三次元計測方法が縞投影方式や光切断方式の場合は、カメラモデルとプロジェクタモデルのいずれかから死角となる領域が死角領域となる。また複数のカメラを用いたステレオ法の場合は、複数のカメラモデルのいずれかから死角となる領域が死角領域となる。
【００９３】
さらに死角領域を、ワークモデルの平面内の位置に応じて変化させてもよい。計測視野の中央部よりも周辺部の方が死角が発生し易いため、これに対応させて死角領域を変化させることで、シミュレーションの精度を高めることできる。
（シミュレーション用データを更新）
【００９４】
さらにピッキング動作シミュレーションの実行中に、いずれか一つのワークモデルが取り出されると、残りのワークモデルに対して領域推定部２２が計測可能な領域を再度推定し、シミュレーション用データを更新することもできる。すなわちシミュレーション用データ生成部４０は、ピッキング動作シミュレート部３０によるバラ積みピッキング動作のシミュレーション実行中にいずれか一のワークモデルが取り出されると、残りのワークモデルに対して計測可能な領域を再度推定し、シミュレーション用データを更新することができる。これにより、従来は一度ピッキング動作シミュレーションが実行されると、ワークモデルが順次取り出されてもシミュレーション用データはそのまま維持されている結果、宙に浮いたような不自然なワークモデルが残る状態となっていたところ、実施形態５によれば、上方のワークモデルが取り出された場合に生じ得る、残りのワークモデルの変化を考慮した上で、その下方に位置するワークモデルの計測が可能となり、より正確なバラ積みピッキングのシミュレーションが実現される。
【００９５】
なおこの動作は、上述した実施形態１や後述する他の実施形態においても、領域推定部２２で再度推定された死角領域を、ピッキング動作シミュレート部３０で再度読み出してピッキング動作シミュレーション結果を更新させることができる。
（実施形態７）
【００９６】
以上の例では、領域推定部でバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、センサ部により三次元計測が可能か否かを推定して推定領域を特定している。ただ本発明はこの構成に限られず、例えばワークモデルの表面状態に応じて三次元計測の可否を推定するよう構成することもできる。このような例を実施形態７に係るロボットシミュレーション装置として、図１３に基づき説明する。この図に示すロボットシミュレーション装置６００は、シミュレーション環境設定部１０と、バラ積みデータ生成部２０と、領域推定部２２と、シミュレーション用データ生成部４０と、ピッキング動作シミュレート部３０と、表示部３を備える。バラ積みデータ生成部２０は、物理シミュレーション部６０を備える。実施形態７においても、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
【００９７】
シミュレーション環境設定部１０は、ワークモデル設定部１１と、姿勢条件設定部１６を備える。ワークモデル設定部１１は、表面状態パラメータ設定部１２と、角度閾値決定部１３を備える。表面状態パラメータ設定部１２は、ワークモデルの表面状態に関する表面状態パラメータを設定するための部材である。この表面状態パラメータ設定部１２により設定された表面状態パラメータに基づいて、角度閾値決定部１３は、センサ部により三次元計測が困難となるセンサ部の測定軸に対するワークモデル表面の角度閾値を決定する。そして領域推定部は、角度閾値決定部１３で決定された角度閾値よりも大きな傾斜角度を有するバラ積みデータ内の領域を、三次元計測が困難と推定される推定領域として特定する。この結果、シミュレーション用データ生成部は、領域推定部により推定された推定領域のデータを含まないバラ積みデータを、シミュレーション用データとして生成し、ピッキング動作シミュレート部３０が、このシミュレーション用データを用いて、ピッキング動作シミュレーションを実行する。これによって、ワークの表面状態に応じた三次元計測の結果を推測でき、より精度の高いピッキング動作のシミュレーションが可能となる。すなわち、ユーザが指定したワークの表面状態の情報から、三次元計測データとして採否を決定する角度閾値を決定できるので、用いるワークに応じた柔軟な調整が容易に行える利点が得られる。
【００９８】
特に従来のピッキング動作シミュレーションでは、単にワークモデルを読み込み、物理シミュレーションを行ってバラ積みデータを生成し、各ワークモデルが安定する位置や姿勢を求めて、その位置や姿勢にワークモデルを配置しているに過ぎなかった。このため、現実に作業空間内のワークを三次元計測する際には、計測できないはずの領域、例えばオクルージョンが発生していたり、ワークの表面が鏡面に近く、データが得られないといったデータも得られることになる。この結果、ピッキング動作シミュレーションン上では三次元サーチができたのに、実運用時にはサーチに失敗するなど、シミュレーション結果と、実際の結果が大きく乖離してしまうことが発生していた。
【００９９】
これに対して実施形態７では、ワークの表面状態を示す表面状態パラメータをユーザが指定可能としたことで、センサ部でプロジェクタの反射光をカメラで適切に受光できるかを正確に予測しやすくなり、ワーク上の各位置における三次元計測の可否の判定の精度を向上できる。
（実施形態７に係るシミュレーション環境の設定手順）
【０１００】
ここで、実施形態７に係るシミュレーション環境を設定する手順を、図１４のフローチャートに基づいて説明する。
【０１０１】
まずステップＳ１４０１において、ワークモデルの表面状態を指定する。ここでは表面状態パラメータ設定部１２にて、対象となるワークに応じた表面状態パラメータを、ワークモデルの表面状態として指定する。
【０１０２】
次にステップＳ１４０２において、表面状態が指定されたワークモデルのＣＡＤデータを、所定の数だけバラ積みして、三次元のバラ積みデータを得る。この例では、Ｚバッファ法を用いて高さ画像を生成していく中で、内部的に１ワーク毎に処理を行っている。１つのバッファに対し、全データを書き込んでいった後に、高さ画像が完成する。
【０１０３】
そしてステップＳ１４０３において、このバラ積みデータから高さ画像を生成する。ここで高さ画像の生成方法について説明する。まず、ワークのＣＡＤデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Ｚバッファ法、Ｚソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではＺバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Ｚバッファ法では、Ｚバッファ＝高さ画像として実現される。また、Ｚバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Ｚバッファ法の過程で、各画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではＺバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてＺバッファ法を例示するが、本発明はＺバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。
【０１０４】
このようにして三次元のバラ積みデータから高さ画像に描画し直す。次に、ステップＳ１４０４において、すべてのワークモデルを描画したかを判定し、未だの場合はステップＳ１４０３に戻って処理を繰り返す。この結果、すべてのワークモデルの描画を終えた場合は、ステップＳ１４０５に進む。
【０１０５】
ステップＳ１４０５では、画素毎に、指定された表面状態に基づいてデータを除去する角度閾値を決定する。この角度閾値の決定は、角度閾値決定部１３で行われ、詳細については後述する。そしてステップＳ１４０６において、当該画素における法線の角度が、決定された閾値を超えるものを除去する。この処理も、ワークモデル設定部１１の、例えば角度閾値決定部１３で行う。さらにステップＳ１４０７において、すべての画素で実施したか否かを判定し、未だの場合はステップＳ１４０６に戻って処理を繰り返す。そして、すべての画素で実施したと判定されると、処理を終了する。このようにして、ピッキング動作シミュレーションの環境設定が行われる。
（表面状態パラメータ）
【０１０６】
ここで、ステップＳ１４０１においてワークモデルの表面状態を指定する手順について詳述する。表面状態を指定する表面状態パラメータには、ワークの材質、表面粗さ、加工方法、色、反射率等が挙げられる。これらは単独でも、あるいは複数を組み合わせて用いてもよい。
【０１０７】
ワークの材質を表すパラメータ値の例としては、金属、樹脂、セラミック等が挙げられる。また表面粗さを表すパラメータ値の例としては、Ｒａなどの数値、三角記号、仕上げ面の名称（粗仕上げ、鏡面仕上など）等が挙げられる。さらに加工方法を表すパラメータの例としては、研削、フライス、ラップなどが挙げられる。さらにまた色を表すパラメータとして、黒、白、銀、つやあり、つやなし等が挙げられる。
【０１０８】
また、ワークに対する指定方法として、ワーク全体に対して同じ表面状態を指定してもよいし、あるいは部分的に異なる表面状態を指定することもできる。このようなワークの表面を指定するには、ワークを仮想的に表したワークモデルを表示部上に表示させて行う。ここで、部分的に異なる表面状態の指定方法の一例として、図１５Ａ〜図１５Ｂに示すように、表示部上に三次元状に表示されたワークモデルに対して設定を行う方法が挙げられる。例えば図１５Ａに示すワークモデルＷＭの斜視図上において、表面状態を設定したい面をユーザがマウス等のポインティングデバイスで直接指定する。指定された指定領域ＤＳＡは、図１５Ｂに示すように着色されたりハイライトされる等して、指定された領域が他の領域と視覚的に区別し易くなるように表示態様を変更させることが好ましい。
【０１０９】
あるいは図１６Ａに示すように、ワークモデルをワイヤーフレーム状ＷＭＦに表示させた状態で、表面状態を指定したい面を構成する頂点ＤＳＰを、図１６Ｂに示すように個別に指定あるいは選択するように構成してもよい。この場合は、選択された頂点で規定された領域が、表面状態を指定する領域として特定される。
【０１１０】
また、３Ｄ表示状態で設定を行う方法に限られず、２Ｄ表示状態で設定を行う方法としてもよい。例えば、図１７に示すワークをＡ、Ｂの方向からそれぞれ見た平面図を、図１８に示すように表示させる。このように、ワークモデルの展開図ＷＭＤを作成して表示部上に表示させ、展開図ＷＭＤ上で指定を行ってもよい。
（角度閾値の決定方法）
【０１１１】
次に、以上のようにしてワークモデルの表面状態が指定された状態から、図１４のステップＳ１４０５において、角度閾値を決定する方法を説明する。ここでは、プロジェクタモデルの光源の位置と反射モデルの式に基づいて、観測点における光と入射光との比率をワーク角度毎に算出し、この比率に対して閾値を設定する。設定された閾値を外れるワーク角度では計測できないものと判断して、三次元計測データから除去する。以下、具体的な方法を説明する。
【０１１２】
シミュレーションにおける反射のモデルは、主にコンピュータグラフィックスの分野において多く研究され、提唱されている。ここでは簡単のため、Ｐｈｏｎｇの反射モデルを用いて具体的な手順を記載する。なお本発明においては、反射モデルはＰｈｏｎｇの反射モデルに限定されず、他の反射モデルを用いてもよい。
【０１１３】
Ｐｈｏｎｇ反射モデルによれば、表面からの反射光は次式のように表現される。
2018144152.tif 000003
…（１）式
なお上式において、各項は以下を表している。
Ｉ：反射光；Ｉｄ：拡散反射成分；Ｉｓ：鏡面反射成分；Ｉａ：環境光成分
【０１１４】
ここでは、光源から出射した光線がどの程度、観測点に到達するかを算出することが目的であるので、簡単のため、ここではＩａ＝０とする。なお環境光が強い場合には、計測可否に影響が発生する場合があるので、Ｉａ≠０として計算することもできる。Ｉａ＝０と仮定した結果、（１）式は次式のように表現できる。
2018144152.tif 000004
…（２）式
【０１１５】
次に、それぞれの成分について説明する。ここでは、各反射成分を記述する数式は入射光が平行光線だった場合を想定している。なお、光源が他の様態であった場合には、その光源に合ったモデル式を用いればよい。
［拡散反射成分］
【０１１６】
まず拡散反射のモデルとして、Ｌａｍｂｅｒｔ反射モデルを用いることができる。Ｌａｍｂｅｒｔ反射モデルは、理想的な拡散反射面が持つべき性質であり、どの方向から見ても輝度が一定になる反射モデルである。この様子を図１９Ａに示す。ここで入射光の輝度をＩ、入射角をα、拡散反射成分の割合をｋｄ、拡散反射光の反射率をｒｄとすると、拡散反射光の輝度Ｉｄは次式で表される。
2018144152.tif 000005
【０１１７】
上式において、α：ワーク法線と入射光の角度を示している。なおここではＬａｍｂｅｒｔ反射モデルを用いて説明を行うものの、本発明においてはＬａｍｂｅｒｔ反射モデルに限定せず、他の拡散反射モデルを用いてもよい。
［鏡面反射成分］
【０１１８】
次に鏡面反射モデルとして、例えばＰｈｏｎｇ鏡面反射モデル、Ｂｌｉｎｎ−Ｐｈｏｎｇ鏡面反射モデル、Ｔｏｒｒａｎｃｅ−Ｓｐａｒｒｏｗ鏡面反射モデル、Ｂｌｉｎｎ鏡面反射モデル等が挙げられる。本明細書においてはＰｈｏｎｇ鏡面反射モデルを説明するが、本発明はこれに限らず、上述したものを含め、他の鏡面反射モデルを用いることもできる。
【０１１９】
図１９Ｂに、Ｐｈｏｎｇ鏡面反射モデルの概略図を示す。この図において、αはワーク表面に対する法線と入射光の角度、βは正反射方向と観測点の角度、ｎは光の広がり度合いを表すパラメータを、それぞれ示している。図１９Ｂに示すように、鏡面反射の場合、正反射方向を中心として少し広がりを持って反射する。また正反射方向から観測点が外れると、輝度が低下する。ここで入射光の輝度をＩ、正反射方向と観測点の角度をβ、拡散反射成分の割合をｋｓ、鏡面反射光の反射率をｒｓとすると、拡散反射光の輝度Ｉｓは次式で表される。
2018144152.tif 000006
【０１２０】
上式におけるｎは、鏡面反射の度合いを表す係数である。ｎが大きいほど、広がりが少ない反射をすることになる。またここでは、環境光だけでなく、物体の自発光や物体による光の吸収がないものとして計算する。この反射光の輝度Ｉｒは次式で表される。
2018144152.tif 000007
【０１２１】
上式における各係数をどのように設定するかについては、前もって積分球などを使った測定器によって計測された値を設定しておいてもよい。あるいは、複数方向から照明をあてて簡易的に求めたり、ユーザが入力したりするのでも良い。ここでは各係数を、ｋｄ＝０．５ｋｓ；ｋｓ＝０．５；ｒｄ＝０．７；ｒｓ＝０．９８；入射角度（α）＝２５°；鏡面反射光の広がり度合い（ｎ）＝２００；観測点角度＝１５°とする。この係数での反射光の分布は、図２０のようになる。
【０１２２】
このように、観測される方向によって、光の強さが変化する。観測される光の強さが小さいということは、光が当たっていない部分との差が小さいので、三次元計測ができないことになる。ここでプロジェクタから構造化されたパターンの光（構造光）をワークに照射することを考えると、光が当たっている部分からの反射光が、観測点にどの程度届くかによって、光が当たっていない部分とのコントラストが取れるかが決まってくるため、その度合いによって計測ができるかどうかが決まる。例えば、下記のような実施例を考える。
（実施例１）
【０１２３】
拡散反射：鏡面反射＝９：１；ワークの傾き＝４０°；入射光の強さ＝Ｉ；ｋｄ＝０．９Ｉ；ｋｓ＝０．１Ｉ；ｒｄ＝０．７０；ｒｓ＝０．９８；α＝４０°；β＝５０°；ｎ＝１００
【０１２４】
この場合、ある点に当たった光を観測点から観察した時の輝度は、次式で表現される。
2018144152.tif 000008
（実施例２）
【０１２５】
拡散反射：鏡面反射＝１：９；ワークの傾き＝４０°；入射光の強さ＝Ｉ；ｋｄ＝０．１Ｉ；ｋｓ＝０．９Ｉ；ｒｄ＝０．７０；ｒｓ＝０．９８；α＝４０°；β＝５０°；ｎ＝１００
【０１２６】
この場合、ある点に当たった光を観測点から観察した時の輝度は、次式で表現される。
2018144152.tif 000009
【０１２７】
このように、図２１Ａに示すような入射光、観測点方向、正反射方向において、入射方向や観測方向、ワークの角度が同じであったとしても、拡散反射と鏡面反射の割合が異なると、観測される輝度は大きく異なることになる。ここで図２１Ｂのような状況を考える。ここで、入射光の強さ＝Ｉ；ｋｄ＝０．１Ｉ；ｋｓ＝０．９Ｉ；ｒｄ＝０．７０；ｒｓ＝０．９８；ｎ＝１００とすると、図２１Ｂのワークを傾けた時の入射光と反射光の比率は、図２２のグラフに示すようになる。
【０１２８】
入射光と反射光の比率が低いということは、ワークのある部分に光が当たっていても、観測点に光が返ってこないので、光が当たっていない部分との区別がつかないということを意味する。つまり、この比率はワーク面を観測したときに得られるコントラストの値に近いものと考えられる。そこで、この比率に対して閾値を設け、計測結果を計算する時の角度閾値とする。例えば、比率の閾値を０．４としたとき、ワーク角度２０°のものについては、拡散反射割合が０．６より大きいワークであれば計測できるものとする。
【０１２９】
また、閾値は、上述したように一つの固定値としてもよいし、何らかの関数としたり、ユーザに指定させてもよい。
【０１３０】
鏡面反射成分が大きい場合、観測点がちょうど正反射方向にあると、かなり強い光が観測点方向に来てしまうため（例えば図２１Ｂのワーク角度１０°の場合）、カメラなどで受けた場合、画素が飽和して計測できなくなってしまうことがある。そういった箇所も判断するために、上側に閾値を設けるようにしてもよい。
【０１３１】
このように決められた閾値を用いて計測を行った時の模式図を、図２３Ａ〜図２３Ｄに示す。これらの図において、図２３Ａは拡散反射の割合が高い高さ画像を二次元表示した例を示すイメージ図、図２３Ｂは図２３Ａを三次元表示した斜視図、図２３Ｃは鏡面反射の割合が高い高さ画像の例を示すイメージ図、図２３Ｄは図２３Ｃの斜視図を、それぞれ示している。
【０１３２】
この方法を用いれば、より現実に近いシミュレーションを行うことができる。また、そのための設定方法をユーザがわかりやすい「材質」や「表面粗さ」などのキーワードで設定することができるようになるので、より簡単に設定を行うことができる。
（実施形態８）
【０１３３】
以上の例では、ピッキング動作シミュレート部３０とは別に、バラ積みデータ生成部２０や領域推定部２２を設ける例を説明した。ただ本発明はこの構成に限らず、ピッキング動作シミュレート部にバラ積みデータやバラ積み画像の生成機能を持たせてもよい。このような例を実施形態８に係るシミュレーション装置４００として、図２４の機能ブロック図に示す。この図に示すロボットシミュレーション装置４００は、ピッキング動作シミュレート部３０Ｂと、シミュレーション環境設定部１０と、検出用設定部５０と、バラ積みデータ記憶部２３を備える。実施形態８においても、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
【０１３４】
ピッキング動作シミュレート部３０Ｂは、バラ積み画像生成部３１と、位置姿勢検出部３２と、把持解算出部３３を備える。バラ積み画像生成部３１は、複数のワークモデルがバラ積みされた三次元のバラ積みデータから、バラ積みされた状態を示す二次元の高さ画像として、バラ積み画像を生成する。このバラ積み画像は、センサ部から見た平面図とできる。位置姿勢検出部３２は、バラ積み画像に含まれる各ワークモデルの位置及び姿勢を検出するための部材である。把持解算出部３３は、各ワークモデルの位置及び姿勢から、ワークモデル同士の干渉判定を行い、さらにエンドエフェクタを模したエンドエフェクタモデルで把持可能な場合は、このワークモデルを把持するためのエンドエフェクタモデルの姿勢を算出する。
（ピッキング動作シミュレーションの手順）
【０１３５】
次に、ピッキング動作シミュレーションの手順を、図２５のフローチャートに基づいて説明する。まず、ステップＳ２５０１において、シミュレーション環境を設定する。例えば、図２４のシミュレーション環境設定部１０から、バラ積み画像を生成するための設定をユーザに行わせる。
【０１３６】
次にステップＳ２５０２において、ワークモデルのバラ積み画像を生成する。ここでは、ワークを作業空間内に積み上げた状態を仮想的に再現するため、物理シミュレーションを実行する。物理シミュレーションは、ワークモデルを一つづつ仮想作業空間に落下させる動作を繰り返して、複数のワークモデルが無作為に積み上げられたバラ積みデータを構成するものである（詳細は後述）。
【０１３７】
このようにしてステップＳ２５０２でバラ積み画像が得られると、次にステップＳ２５０３において、ワークモデルの位置及び姿勢を示す位置姿勢情報を出力するか否かを判定する。出力する場合はステップＳ２５０４に進み、ワークモデルの位置姿勢情報を出力した上でステップＳ２５０５に進む。一方、位置姿勢情報を出力しない場合は、ステップＳ２５０４を経ることなく、ステップＳ２５０５に進む。
【０１３８】
そしてステップＳ２５０５において、各ワークモデルの位置及び姿勢の検出を試みる。さらにステップＳ２５０６において、各ワークモデルの位置と姿勢が検出できたか否かを判定し、検出できる場合はステップＳ２５０７に進む。
【０１３９】
一方、検出できない場合はステップＳ２５１１にジャンプして、残ったワークモデルに関する情報を抽出する。ここで残ったワークモデルに関する情報には、認識が正しくなされなかった結果ピッキングできずに残ってしまったワークモデルの個数や、位置姿勢情報が検出できたワークモデルについては当該位置姿勢情報を含む。
【０１４０】
続いてステップＳ２５１２で、この抽出されたワークモデルの位置姿勢情報を出力するか否かを判定する。出力する場合はステップＳ２５１３に進み、ワークモデルの位置姿勢情報を出力して処理を終了し、一方出力しない場合はそのまま処理を終了する。
【０１４１】
ステップＳ２５０６でワークモデルの位置と姿勢が検出できた場合は、ステップＳ２５０７において、エンドエフェクタモデルと周辺データとの干渉判定と、把持解の算出を試みる。そしてステップＳ２５０８において、把持解を算出できたか否かを判定し、算出できた場合はステップＳ２５０９に進み、算出できない場合はステップＳ２５１１にジャンプして、上述の通り残ったワークモデルに関する位置姿勢情報を抽出し、ステップＳ２５１２で出力を判定した後、処理を終了する。
【０１４２】
ステップＳ２５０８で把持解を算出できた場合は、ステップＳ２５０９に進み、バラ積みデータを構成するワークモデルの数を一つ減らす。そしてステップＳ２５１０において、未処理のワークモデルが残っているか否かを判定し、残っている場合はステップＳ２５０２に戻ってバラ積み画像の生成から上記処理を繰り返し、一方残っていない場合は処理を終了する。
【０１４３】
このようにして、ピッキング動作シミュレーションがピッキング動作シミュレート部によって実行される。実行された結果は、必要に応じて表示部に表示させることができる。ユーザはこれに基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更する。例えばロボット本体部の設置位置や収納容器を置く位置、センサ部の姿勢などを調整する。変更した設定を、シミュレーション環境設定部に入力して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、ユーザの環境に応じた適切な設定条件を決定できる。
（バラ積み画像の生成手順）
【０１４４】
次に、上記図２５のフローチャートのステップＳ２５０２において、ワークモデルのバラ積み画像を生成する手順の詳細を、図２６のフローチャートを用いて説明する。
【０１４５】
まずステップＳ２６０１において、初期状態データを読み込むか否かを判定する。この判定は、ユーザに対して初期状態データを読み込むか否かの判断を促す。なお、初期状態データは、予めバラ積みデータ記憶部２３等に保存されているものとする。
【０１４６】
初期状態データを読み込む場合はステップＳ２６０２に進み、保存された初期状態データに記録されている位置、姿勢にワークモデルを設定する。次いでステップＳ２６０３において、物理シミュレーションを実行する。例えば、ワークモデルを所定の高さから落下させる（詳細は後述）。さらにステップＳ２６０４において、シミュレーション環境設定部で指定された数のワークモデルが配置されたか否かをシミュレーションパラメータが判定し、未だの場合はステップＳ２６０２に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定されると、ステップＳ２６０８に進み、ワークモデルの位置及び姿勢に基づいたバラ積み画像を生成し、処理を終了する。
【０１４７】
一方、ステップＳ２６０１において初期状態データを読み込まないと判定された場合は、ステップＳ２６０５に進み、ワークモデルの初期状態を設定する。初期状態には、ワークモデルに物理シミュレーションを行う開始位置と姿勢が含まれる。例えば、収納容器の壁際の位置にワークモデルを配置したい場合等、ユーザが所望の位置にワークモデルをバラ積みしたい場合は、そのような位置と姿勢とを決定する。あるいは、乱数に基づいてワークモデルの位置と姿勢とを決定する。
【０１４８】
次にステップＳ２６０６において、このワークモデルに対して物理シミュレーションを実行する。さらにステップＳ２６０７において、指定された数のワークモデルが配置されたか否かを判定し、未だの場合はステップＳ２６０５に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定されると、上記と同様にステップＳ２６０８に進み、ワークモデルの位置及び姿勢に基づいたバラ積み画像を生成し、処理を終了する。このようにしてバラ積み画像が生成される。
（物理シミュレーション）
【０１４９】
なお、物理シミュレーションを行うに際には、必ずしもワークモデルを落下させる必要はない。例えば床面上にワークモデルを配置させたり、あるいは既存のワークモデルの上に他のワークモデルを接するように配置させた状態から物理シミュレーションをスタートさせても良い。すなわち、ワークモデルを落下させるという動作は、物理シミュレーションにおいては必ずしも必要でない。ただし、ワークを実際に床面上やバラ積みされた他のワーク上に置いた状態で、倒れたり、傾いたり、滑ったりといった、実際のワークが重力や摩擦などの自然に作用する応力や抵抗を受けて動く可能性を考慮する。また、ワークを配置させた直後のみならず、その後に他のワークをピッキングしたことで、バラ積みされたワークのバランスが崩れてさらに動くといった動作も考慮して、ワークモデルの仮想的な動きをシミュレーションする。すなわち本明細書でいうワークやワークモデルが「重力の作用を受け」るとは、ワーク等を落下させることに限定されず、載置されたワーク等が傾いたり崩れたり滑ったり、あるいは摩擦によって滑らない状態となること、ワークの反発係数により移動量が変わること等、自然界に働く応力や抵抗力により、安定した状態から不安定な状態となって動くことを包含する意味で使用する。
（シミュレーションの初期状態の再現）
【０１５０】
ここで、図２７に示すような円筒形のワークモデルＷＭＣをバラ積みして、ピッキング動作シミュレーションを行う例について説明する。ここでは、図２８Ａに示すワークモデルＷＭＣをバラ積みしたバラ積みデータの初期状態に対して、ピッキング動作シミュレーションを行い、ワークモデルの一つづつ取り出す処理を行った結果、図２８Ｄに示す状態で、ピッキング動作シミュレーションが終了した場合を考える。
【０１５１】
ここで、バラ積みデータの初期状態がランダムの場合は、以前の物理シミュレーションで得られた状態を同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなバラ積みデータが生成されるため、図２８Ａに示す初期状態は一過性のものとなって、再現性がない。
【０１５２】
一方、ユーザがピッキング動作パラメータの設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このバラ積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルに対するエンドエフェクタモデルの把持解が見つからずに全てのワークモデルを取り出せなかった場合に、その対策としてユーザが把持の教示位置を増やした場合を考える。この場合、ユーザが変更した設定が、前回発生した問題に対して有効であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
【０１５３】
加えて、問題が発生した正にその状態だけでなく、その問題が発生するに至った過程の状態から開始できるようにしてもよい。例えば問題が発生したバラ積みデータを、ワークモデルを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
【０１５４】
これらを実現するために、本実施形態においては、バラ積みデータの初期状態や終了状態、あるいは中間状態等、ユーザが再利用したいと考える状態のデータを保存しておき、ピッキング動作パラメータの調整後に、このような保存済みのバラ積みデータを呼び出して、検証することを可能としている。
【０１５５】
例えば図２８Ｄの終了状態をバラ積みデータ記憶部２３に保存しておくことで、ユーザがピッキング動作に失敗した原因を推測し、予想されるシミュレーションパラメータをシミュレーションパラメータ設定部で再設定後、この状態で再度ピッキング動作シミュレーションを実行し、ピッキングが可能かどうかを確認できる。あるいは、ピッキング動作シミュレーションに失敗して終了した状態のみならず、その前の段階からピッキング動作を検証するため、ピッキング途中の状態のバラ積みデータをバラ積みデータ記憶部２３に保存しておくこともできる。例えば図２８Ｃは、図２８Ｄの終了状態から１０回遡った状態のバラ積みデータを示しており、この段階から、シミュレーションパラメータを再設定したピッキング動作を検証することもできる。あるいはより古いデータに遡って、図２８Ｂに示すように、図２８Ｄの終了状態から２０回遡った状態のバラ積みデータを保存し、これを読み出して再度ピッキング動作シミュレーションを実行することもできる。
【０１５６】
また、バラ積みデータの保存は、上述したようにユーザが所定のタイミングで行う他、所定のタイミングで自動で保存されるように構成してもよい。所定のタイミングとして、例えば、ピッキング動作シミュレーション実行前の初期状態や、ピッキング動作シミュレーション完了後の最終状態で、これ以上ピッキングできるワークモデルがない状態、あるいは中間でワークモデルが取り出される際毎に定期的に保存するようにしてもよい。
【０１５７】
また、別の所定のタイミングとして、例えばバラ積みされるワークの数が、５個おきや１０個おきといった一定個数毎としたり、あるいはバラ積みデータを作成する経過時間で５分おき、１０分おきなどとしてもよい。また、自動保存されるバラ積みデータの容量や数に制限を設けてもよい。例えば自動保存されたバラ積みデータが５００個を越えると、古いデータを上書きするようにしたり、あるいは自動保存されたデータの総和が５００ＭＢを越えた場合に、古いデータから順に上書きして削除するようにするなどのルールを設けることができる。
【０１５８】
さらに、これら自動又は手動で保存されたデータを遡って読み出す際のユーザインターフェース画面として、例えば早送り、巻き戻しのようなＶＴＲ等で一般的なボタン類を配置したり、ジョグシャトルやジョグダイヤルのような回転式の部材でもって送り方向と戻し方向をスムーズに切り替え可能な操作部を用意することもできる。または、スクロールバーやスライダのような、直線的な部材でもって過去の位置を指定するように構成してもよい。
【０１５９】
また、このような保存済みのバラ積みデータを読み出す代わりに、新たにバラ積みデータをランダムに生成することもできる。例えばピッキング動作シミュレーション中にユーザに対し、過去のバラ積みデータを利用するか、新規のバラ積みデータを利用するかを選択させるように構成してもよい。
（物理シミュレーションの過程におけるデータの保存）
【０１６０】
一般的にバラ積みデータでシミュレーションを行うには、物理シミュレーションが用いられる。物理シミュレーションでは、重力が設定された仮想作業空間において、質量を持つワーク等の物体の動きが動的にシミュレーションされる。各々の物体が衝突した場合には、予め設定された反発係数や摩擦係数を考慮して、物体が衝突後どのような動きになるかが示される。このような物理シミュレーションの手順を、図２９Ａ、図２９Ｂのフローチャートに基づいて以下説明する。
【０１６１】
まずステップＳ２９０１において、仮想空間を作成する。次にステップＳ２９０２において、作成された仮想空間の設定を行う。ここでは、仮想空間内の重力など、物理シミュレーション全体に拘わるパラメータを設定する。なお、仮想空間の作成と設定を同時に行ってもよい。
【０１６２】
さらにステップＳ２９０３において、ワークモデルをばら積みする収納容器を設定する。例えば、収納容器の縦、横、高さの長さ等を設定する。次にステップＳ２９０４において、ワークモデルをばら積みする収納容器の配置を設定する。バラ積みデータを生成する物理シミュレーションでは多くの場合、収納容器は静的なオブジェクトとして配置される。
【０１６３】
そしてステップＳ２９０５において、ワークモデルのサイズを設定する。例えばワークモデルのサイズや形状、密度、重量など、ワークモデルに特有の設定を行う。次にステップＳ２９０６において、ワークモデル位置情報の読み取りを行う。
【０１６４】
さらにステップＳ２９０７において、ワークモデルの初期位置が指定されているか否かの判定を行う。指定されていない場合は、ステップＳ２９０８において、ワークモデルの初期位置及び姿勢をランダムに設定してステップＳ２９１０に進む。一方、ワークモデルの初期位置が設定されている場合は、ステップＳ２９０９において、ワークモデルの位置及び姿勢を指定位置姿勢に設定してステップＳ２９１０に進む。なお、ワークモデルの初期位置は、例えばテキストデータ等の設定ファイルを読み込んで設定してもよいし、あるいはＧＵＩ等を用いてユーザが指定できるようにしてもよい。
【０１６５】
次にステップＳ２９１０において、ワークモデルの生成を行う。そしてステップＳ２９１１において、指定された数量のワークモデルが生成されたか否かを判定し、未だの場合はステップＳ２９０６に戻って上記工程を繰り返す。一方、指定された数のワークモデルが生成された場合は、ステップＳ２９１２に進み、単位時間後のワークモデルの位置・姿勢をシミュレーションする。ここでは、ワークモデルに限らず、全ての物体について、他のワークモデルとの衝突なども考慮した上で、単位時間後のワークモデルの位置・姿勢を計算する。そしてステップＳ２９１３において、全てのワークモデルがその位置及び姿勢で安定しているか否かを判定する。安定していない場合はステップＳ２９１２に戻って上記工程を繰り返す。一方、安定していると判定された場合はステップＳ２９１４に進み、ワークモデルの位置・姿勢情報を保存するか否かを判定する。保存の要否はユーザが判断する。ユーザは、例えば後に設定の見直しやシミュレーションのやり直しをする可能性がある場合など、データ保存の必要性を感じる場合に保存する。保存する場合はステップＳ２９１５に進み、ワークモデルの位置・姿勢情報の保存や出力処理を行った上で処理を終了する。なおここで、ユーザに出力の有無を都度指定させても良い。あるいは物理シミュレーション部の内部で、常にロギングしておいてもよい。さらには、保存するデータを回数で指定させてもよい。例えばＮ回ごとや１０回分など、任意のタイミングや数を指定できる。一方、保存が不要と判断された場合は、そのまま処理を終了する。
【０１６６】
このようにして、ワークモデルの位置や姿勢を考慮した物理シミュレーションが行われる。この方法によれば、ステップＳ２９１４においてユーザが設定の見直しをする必要性を感じた状態を保持しておき、後から呼び出すことが可能となる。この結果、ユーザが行った設定の見直しが、ユーザが直面している課題に対して効果的だったかどうかを明確に判断することが可能となる。このため、ユーザがロボットの立ち上げを行うときに、より短い時間で正しい設定を行うことができるようになり、立ち上げ時間の短縮、実運用の安定化に?がる。
（ワークモデルの姿勢の制限）
【０１６７】
また、三次元のバラ積みデータやバラ積み画像の生成において、仮想作業空間上に配置するワークモデルの姿勢に制限を加えてもよい。すなわち従来のバラ積みピッキングのシミュレーションに際して、ワークモデルを仮想作業空間上にランダムに配置させる結果、実際の運用時の環境と異なる状態でのシミュレーションとなってしまっていることがあった。例えば図３０に示すように、Ｔ字型のワークモデルＷＭＴが直立するような不安定な姿勢で存在することが生じていた。実際の運用時には、このような不安定な姿勢でワークが存在することは起こり難い。
【０１６８】
また実際にピッキング対象のワークが提供される態様は、無作為に積み上げられた状態に限られず、段積み状態のケースや、ワークの向きが固定化された状態で積まれているケースも多く、実運用時のワークの状態に合わせた適切な設定調整や、検証が行えない状態であった。
【０１６９】
そこで本実施の形態では、ワークの姿勢を完全にランダムとするのでなく、一定の制限を加えた状態でバラ積みデータを準備することにより、実運用時の環境や条件に合わせたシミュレーション結果が得られるようにしている。すなわち、バラ積みデータの生成を、ユーザの用途やワークの形状等に応じてカスタマイズした、バラ積みデータ生成の個別設定を可能としている。
【０１７０】
このようなワークの姿勢の制限は、物理シミュレーションの実行に際して行うことができる。一例として、（Ｉ）物理シミュレーションを行う際に、仮想作業空間上にワークモデルをランダムな姿勢で投下させるのではなく、姿勢制限を加えた状態で投下させる。また、姿勢制限を超えた姿勢になってしまったものは、物理シミュレーション過程で除外することで、姿勢制限を行うこともできる。
【０１７１】
あるいは、（ＩＩ）物理シミュレーションを行う際に、仮想作業空間上にワークモデルを１つ１つランダムな姿勢で投下させるのではなく、規定の姿勢で、一定の間隔で複数配置させた状態で、同時に落下させてもよい。
【０１７２】
このようにして、実運用時の状態に合わせたバラ積みデータを生成することができるため、ピッキング動作シミュレーションの結果も実運用時に近い状態で実行でき、より正確なシミュレーション結果が得られる。これにより、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。以下、図２５のステップＳ２５０２において、ワークモデルのバラ積み状態を、姿勢条件設定部１６で姿勢に制限を加えた上で、バラ積みデータ生成部２０で生成する際の手順を説明する。
（Ｉ：ワークモデルを一つづつ投下させる物理シミュレーションにおける姿勢制限）
【０１７３】
まず、物理シミュレーションにおいてワークモデルを一つづつ投下させる際の姿勢制限について、説明する。ここでは、ワークモデルの姿勢のみに制限を加える方法について説明する。ここでは、ワークモデルの位置については制約のないランダムとしている。姿勢制限を加える方法としては、
１．物理シミュレーションにおけるワークモデルの投下時に、姿勢制限を加える。
２．物理シミュレーションの実行後に、姿勢制限範囲外のワークモデルを除外する。
３．上記１．、２．の両方を行う。
の３パターンが挙げられる。
（１．ワークモデルの投下時に姿勢制限）
【０１７４】
まず、１．の物理シミュレーションにおけるワークモデルの投下時に、姿勢制限を加える手順について、図３１のフローチャートに基づいて説明する。ここでは、ワークモデルに対して許容される姿勢を、姿勢条件設定部１６で予め姿勢条件として設定されたものとする。例えば、ワークモデルに対して許容される姿勢の角度範囲を、姿勢制限範囲として規定する。あるいは、ワークモデルの基準姿勢からの許容回転角度、傾斜角度を姿勢条件として設定することもできる。
【０１７５】
このように姿勢条件が設定された状態で、まずステップＳ３１０１において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次に、ステップＳ３１０２において、生成されたワークモデルの姿勢が、姿勢条件設定部で設定された姿勢制限範囲内の姿勢か否かを判定する。この判定は、バラ積みデータ生成部で行う。姿勢制限範囲でないと判定された場合は、ステップＳ３１０１に戻って、新たなワークモデルの姿勢及び投下位置を生成し直す。なお、姿勢及び投下位置を生成して投下されるワークモデルは、１つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
【０１７６】
一方、姿勢制限範囲と判定された場合は、ステップＳ３１０３に進み、このワークモデルを投下させる物理シミュレーションを実施する。そしてステップＳ３１０４において、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップＳ３１０１に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させる前の姿勢を、姿勢制限範囲内にあるか判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、制限範囲外のワークモデルに対しては、落下させる物理シミュレーション自体を行わないので、シミュレーションに係る処理を簡素化できる利点が得られる。
（２．ワークモデルの投下後に姿勢制限）
【０１７７】
一方、ワークモデルを投下させた後の姿勢に対して、制限範囲内にあるか否かを判定することでも、不自然なワークモデルを排除できる。以下、２．の物理シミュレーションの実行後に、姿勢制限範囲外のワークモデルを除外してバラ積みデータを生成する手順について、図３２のフローチャートに基づいて説明する。
【０１７８】
まずステップＳ３２０１において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次にステップＳ３２０２において、このワークモデルを投下させる物理シミュレーションを実施する。ここでも、姿勢及び投下位置を生成して投下されるワークモデルは、１つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
【０１７９】
そしてステップＳ３２０３において、落下されたワークモデルの内、姿勢条件設定部で設定された姿勢制限範囲外のワークモデルがあるか否かを判定する。姿勢制限範囲外にあるワークありと判定された場合は、ステップＳ３２０４に進み、姿勢制限範囲外のワークモデルを除外して、再度落下させる物理シミュレーションを実施した上で、ステップＳ３２０３に戻って判定を繰り返す。
【０１８０】
一方、姿勢制限範囲外のワークモデルなしと判定された場合は、ステップＳ３２０５に進み、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップＳ３２０１に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させた後の姿勢が、姿勢制限範囲内にあるかを判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、落下されたワークモデルに対して姿勢を判定することから、不自然なワークモデルをより確実に除外できる利点が得られる。
（３．ワークモデルの投下前後に姿勢制限）
【０１８１】
さらに、ワークモデルを投下させる前の姿勢と、透過後の姿勢の両方に対して、制限範囲内にあるか否かを判定することでも、不自然なワークモデルを排除できる。ここでは、ワークモデルに対して許容される投下時の姿勢を投下後の姿勢を、姿勢条件設定部で予め設定する。これらは同じ姿勢とすることもできるが、好ましくは投下時のワークモデルの姿勢と、投下後のワークモデルの姿勢とを個別に設定することが好ましい。以下、３．の物理シミュレーションの実行の前後に、姿勢制限範囲外のワークモデルを除外してバラ積みデータを生成する手順について、図３３のフローチャートに基づいて説明する。
【０１８２】
まずステップＳ３３０１において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次に、ステップＳ３３０２において、生成されたワークモデルの姿勢が、姿勢条件設定部で設定された姿勢制限範囲内の姿勢か否かを判定する。姿勢制限範囲でないと判定された場合は、ステップＳ３３０１に戻って、新たなワークモデルの姿勢及び投下位置を生成し直す。なお、ここでも姿勢及び投下位置を生成して投下されるワークモデルは、１つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
【０１８３】
一方、姿勢制限範囲と判定された場合は、ステップＳ３３０３に進み、このワークモデルを投下させる物理シミュレーションを実施する。そしてステップＳ３３０４において、落下されたワークモデルの内、姿勢条件設定部で設定された姿勢制限範囲外のワークモデルがあるか否かを判定する。姿勢制限範囲外にあるワークありと判定された場合は、ステップＳ３３０５に進み、姿勢制限範囲外のワークモデルを除外して、再度落下させる物理シミュレーションを実施した上で、ステップＳ３３０４に戻って判定を繰り返す。
【０１８４】
一方、姿勢制限範囲外のワークモデルなしと判定された場合は、ステップＳ３３０６に進み、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップＳ３３０１に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させた後の姿勢が、姿勢制限範囲内にあるかを判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、落下の前後でワークモデルの姿勢を確認することから、最も確実に不自然なワークモデルを除外できる。
【０１８５】
このようにして、ワークモデル投下時や投下後、あるいはその両方のタイミングでワークの姿勢に対し制限を加えることで、不自然な形で直立するワークが存在しこのようなワークに対してもピッキング動作シミュレーションを実行してしまう事態を避けることが可能となる。また、ワークの形状によって片面しか見えないようなバラ積み状態を実現することもできる。例えば図３４Ａ、図３４Ｂに示すような、表面と裏面の面積が異なるワークＷＫ６に対して、図３５に示すように、バラ積み状態では各ワークＷＫ６の表面側のみしか見えないような場合であっても、実運用に合わせてこのようなバラ積み状態を生成し、仮想的に再現することが可能となる。例えば、許容される姿勢条件として、ワークモデルの特定の面が底面となるように姿勢条件設定部で設定する。これによって、ピッキング動作シミュレーションにおける設定の調整や検証といった時間のかかる作業を、実際にワークを用意することなく、実運用に近い形で事前に行うことができるようになる。また、対象となるワークがどのようなバラ積みをされるかによって、最適な設定が変わるところ、姿勢条件に制限を加えることで、ピッキング動作シミュレーションの実行前に設定を合わせこむことが可能となる。
（実施形態９）
【０１８６】
以上の方法では、バラ積みデータの生成に際してワークモデルの姿勢にのみ制限をかける例を説明した。ただ本発明は、この例に限られず、ワークモデルの姿勢と位置の両方に制限を加えることもできる。例えば、図３６Ａに示すように、収納容器に板状のワークＷＫ７が整列されて詰め込まれた状態や、図３６Ｂに示すように、円筒状のワークＷＫ８が収納容器内で段積みされた状態を考える。このようなバラ積み状態にあるワークは、収納容器内にランダムに存在しているのでなく、概ね一定の姿勢や位置にあるという制約を受ける。このため、従来の物理シミュレーションのような、ワークを完全にランダムに生成される方法では、このようなバラ積み状態を再現できない。そこで、このようなバラ積み状態にあるワークに対しても、正確なピッキング動作シミュレーションが実行できるよう、バラ積み状態を生成する条件として、ワークの姿勢のみならず位置にも制約を設ける。以下、このような方法を実施形態９として、図３７のフローチャートに基づき説明する。
【０１８７】
まずステップＳ３７０１において、規定の姿勢、規定の間隔で複数のワークモデルの投下位置及び姿勢を設定する。ここでは、ワークモデルに対して許容される姿勢や位置、間隔などの配置条件を、姿勢条件設定部で設定する。例えば、ワークモデルの姿勢、Ｘ方向の配置数と配置間隔、Ｙ方向の配置数と配置間隔、ワークモデル段数等が挙げられる。例えば図３６ＡのワークＷＫ７のバラ積み状態を物理シミュレーションするには、配置条件として、Ｘ方向の配置数を８個、Ｙ方向の配置数を１個、段数を１に設定する。また例えば図３６ＢのワークＷＫ８のバラ積み状態を物理シミュレーションするには、配置条件として、Ｘ方向の配置数を５個、Ｙ方向の配置数を３個、段数を３に設定する。
【０１８８】
次にステップＳ３７０２において、乱数に基づいて、複数のワークモデルの位置及び姿勢に外乱を加える。さらにステップＳ３７０３において、ワークモデルを同時に投下させて物理シミュレーションを実施する。このようにして、規定の姿勢で、指定された配置位置にワークモデルを用意した状態で、ワークモデルを同時に投下させて物理シミュレーションを行うことができる。特にワークモデルを投下させる前に、乱数に基づいて、位置及び姿勢に外乱を加えることで、毎回異なる状態のデータを作成することができる。
【０１８９】
そしてステップＳ３７０４において、指定された段数分、ワークモデルが投下されたか否かを判定し、未だの場合はステップＳ３７０１に戻って処理を繰り返す。すべてのワークモデルが投下されたと判定された場合は、処理を終了する。このようにして、ワークが収納容器内に整列されて詰め込まれた状態や、段積み状態にあるバラ積み状態を再現したシミュレーション用のバラ積みデータを作り出すことができる。特に規定の姿勢で一定の間隔で複数配置させた状態で、ワークモデルを同時に投下させることで、ワークモデルの位置と姿勢の両方に制限を加えることが可能となる。この結果、設定の調整や検証といった時間のかかる作業を、実際にワークを用意することなく、実運用時に近い形で事前に行うことができるようになる。特に対象となるワークがどのようなバラ積みにされるかに応じて、最適な設定が変わるところ、事前に設定をカスタマイズして合わせこむことができる。
（姿勢条件の設定画面）
【０１９０】
次に、このような姿勢条件を設定する手順の一例を、図３８、図３９等に基づいて説明する。これらの図において、図３８は姿勢条件設定部の一態様であるロボットシミュレーションプログラムのユーザインターフェース画面において、表示部上に示されたワークモデルＷＭ６に対して基本姿勢を規定する様子を示すイメージ図であり、図３９は、同じく姿勢条件を設定する姿勢条件設定画面１１０を示している。
（基本姿勢の設定）
【０１９１】
まず、ワークモデルの投下時の基本姿勢を規定する。例えば、図３８に示す基本姿勢設定画面上で、投下方向に対するワークモデルＷＭ６の姿勢を調整する。この例では、Ｚ軸方向が投下方向である。例えば画面上でワークモデルＷＭ６をドラッグして投下姿勢を自由に変更できる。
【０１９２】
次に、基本姿勢の状態に対する、許容角度を指定する。角度の指定方法は、投下方向の軸に対する傾斜角度と、投下方向に軸に対する回転角度の２つを、範囲で指定する。例えば、図３９に示す姿勢条件設定画面１１０上で、傾斜角度と回転角度を数値で入力する。この例では回転角度の範囲を±で示しているが、下限と上限の値を個別に指定可能にしてもよい。例えば傾斜角度を０°、回転角°を±１８０°に指定した場合、図４０に示すように、基本姿勢に対し、投下方向に向かって傾斜のない姿勢で投下される。なお、投下方向の軸に対する回転角度はランダムに変化される。また傾斜角度を１５°、回転角度を±０°に指定すると、図４１に示すように、基本姿勢に対し、投下方向の軸に対する回転方向には変化がないが、傾斜角のみに外乱が加わった姿勢にてワークモデルが投下されることになる。なお、傾斜角度の範囲、回転角度の範囲がいずれもゼロでない場合、それぞれの範囲内で傾斜角度、回転角度がランダムに変化させた姿勢にて、ワークモデルが投下されることになる。
【０１９３】
このようにして、基本姿勢と、この基本姿勢に対する傾斜角度、回転角度の範囲を１セットとし、これを必要に応じて複数セット設定する。例えば、ワークの表面のみが見えるようなバラ積み状態に対しては、１セットのみを設定して実現できる。一方、ワークの側面は上を向かないが、表面と裏面の両面が上を向くようなバラ積みに対しては、「表面が上を向いた状態の基本姿勢で設定」したものと、「裏面が上を向いた状態の基本姿勢で設定」したものの２セットをそれぞれ定義し、１回の投下毎に、どのセットが選ばれるか自体をランダムに選択させることで、所望のバラ積み状態を実現できる。
（ワークモデルの配置条件設定）
【０１９４】
次に、実施形態９として説明した、ワークモデルの配置条件を設定する方法について、以下説明する。ワークモデルの姿勢のみならず、位置等に関しても設定する方法としては、例えば、１．Ｘ方向の配置数と配置間隔、Ｙ方向の配置数と配置間隔、ワークモデルの段数を入力させる方法や、２．最初に配置パターンを選択させ、それに応じて必要な配置条件を入力させる方法等が挙げられる。まず、１．の方法について説明する。姿勢条件設定部の他の態様として、例えば図４２に示すような配置条件設定画面１２０から、ワークモデルのＸ方向の配置数と配置間隔、Ｙ方向の配置数と配置間隔、ワークモデルの段数を、それぞれ入力させる。
（配置パターン選択）
【０１９５】
次に、２．の方法について説明する。この方法では、先にワークモデルの配置パターンをユーザに選択させて、次に選択に応じた必要なパラメータを入力させる。ワークモデルの配置パターン選択画面として、例えば、図４３Ａ、図４３Ｂ、図４３Ｃに示すように、ワークモデルが収納容器内で完全ランダムな場合、一方向に配置されている場合、それ以外の複数方向、複数段に配列されている場合の３パターンを、表示部にそれぞれ表示させる。表示は、これらを一覧表示させてもよいし、複数の画面を切り替えて表示させてもよい。ユーザが、いずれかの配置パターンを選択すると、詳細な配置条件のパラメータを設定する配置条件設定画面が表示される。例えば、図４３Ａの完全ランダムな配置パターンが選択された場合、配置条件としてバラ積みの個数のみを入力させる。また図４３Ｂの一方向に配置されている配置パターンが選択された場合は、配置数、配置方向（Ｘ又はＹ）、配置間隔をそれぞれ入力させる。あるいは図４３Ｃの複数方向、複数段に配列されている配置パターンが選択された場合は、Ｘ方向の配置数、配置間隔、Ｙ方向の配置数、配置間隔、Ｚ方向の段数を、それぞれ入力させる。このようにして、ユーザは表示部に表示されたガイダンスに従い、必要な設定を順次遺漏なく行うことができる。
（姿勢安定性パラメータ決定部１７）
【０１９６】
以上のようにして、ユーザがワークモデルの許容される姿勢等の姿勢条件を予め設定し、条件に合致しないワークモデルを排除することで、バラ積みデータに不自然な姿勢や不安定な姿勢のワークモデルが含まれないようにできる。ただ本発明は、ワークモデルが安定な姿勢にあるかどうかを判定できるよう、ワークモデルが不安定な姿勢であることを自動検知するように構成してもよい。例えば、不安定な姿勢のワークモデルが検知されると、このようなワークモデルをバラ積みデータから自動的に除外するよう構成することで、同様にバラ積みデータを実運用環境に近い状態として、ピッキング動作シミュレーションの精度を高めることが期待できる。またこの場合は、姿勢安定性が悪いワークモデルを表示部上で、排除対象のワークモデル候補として表示させてユーザに対し排除するよう促したり、あるいはこのような姿勢安定性のワークモデルを選択する指針をユーザに対して与えることもできる。さらには、ユーザが姿勢条件等を手動で設定しなくとも、ロボットシミュレーション装置側で自動的に不自然な姿勢や不安定な姿勢のワークモデルを排除させて、適切な条件に設定された状態でピッキング動作シミュレーションを実行させることもでき、ユーザの利便性の面でも有利となる。
【０１９７】
このような姿勢安定性の演算は、姿勢安定性パラメータ決定部で行うことができる。姿勢安定性パラメータ決定部１７は、例えば図１２に示すように、姿勢条件設定部１６に含めることができる。例えば、姿勢条件設定部１６で姿勢条件を設定する際、姿勢安定性パラメータ決定部１７で演算された姿勢安定性に基づき、好ましい数値範囲をユーザに提示することができる。ユーザは提示された数値を参照して、姿勢条件として姿勢範囲の角度などを設定、あるいはこれを微調整することができる。また姿勢安定性パラメータ決定部は、必ずしも姿勢条件設定部に含める必要はなく、別部材としてもよい。
【０１９８】
さらに、予め姿勢安定性パラメータをロボットシミュレーション装置側で規定しておき、既定値の姿勢安定性パラメータに従い、姿勢安定性が低いワークモデルを自動的に排除するよう構成してもよい。この場合は、姿勢安定性パラメータを含めた姿勢条件の設定をユーザが行う必要はない。このように、姿勢条件の設定をユーザが行わない態様も、本発明に包含する。いいかえると、姿勢条件設定部１６は、必ずしもユーザによる姿勢条件の設定を受け付ける構成は必須でなく、姿勢条件設定部１６による姿勢条件の設定には、ユーザ指定の他、既定値による設定も含む意味で使用する。
（姿勢安定性の演算方法）
【０１９９】
ここで、姿勢安定性を演算する方法を、図４４のフローチャートに基づいて説明する。ここでは、図３０に示したＴ字型のワークモデルＷＭＴを例に挙げて説明する。まず、ステップＳ４４０１でワークモデルＷＭＴの形状に外接する立方体を求める。例えば図４５Ａに示すワークモデルＷＭＴに対する外接立方体を求めると、図４５Ｂのようになる。次に、外接立方体を構成する６面の中で最大面積となる面を求める。例えば図４５Ｂの例では、図４５Ｃのように側面が最大面積となる。
【０２００】
次にステップＳ４４０２で、ワークモデルＷＭＴに対して物理シミュレーションを行い、このワークモデルＷＭＴが他の物体に接触している部位を、真上から投影した領域を求める。例えば物理シミュレーションの結果、図４５ＡのワークモデルＷＭＴが図４６Ａのように倒れた姿勢で仮想作業空間内に置かれた場合は、このワークモデルＷＭＴが仮想作業空間の床面と接触している部位を真上から見た投影領域は、図４６Ｂのようになる。
【０２０１】
また、物理シミュレーションの結果、図４５ＡのワークモデルＷＭＴが図４７Ａのように直立した姿勢で仮想作業空間内に置かれた場合は、このワークモデルＷＭＴが仮想作業空間の床面と接触している部位の投影領域は、図４７Ｂのようになる。
【０２０２】
あるいはまた、物理シミュレーションの結果、図４５ＡのワークモデルＷＭＴが図４８Ａのように収納容器の壁面にもたれかかる姿勢で置かれた場合は、このワークモデルＷＭＴが仮想作業空間の床面と接触している部位の投影領域は、図４８Ｂのようになる。
【０２０３】
このようにして得られた投影領域に対して、ステップＳ４４０３で最小面積で外接する矩形を求める。例えば図４９Ａに示す投影領域に対する最小面積外接矩形は、図４９Ｂのようになる。また図５０Ａに示す投影領域に対する最小面積外接矩形は、図５０Ｂのようになる。さらに図５１Ａに示す投影領域に対する最小面積外接矩形は、図５１Ｂのようになる。
【０２０４】
最後にステップＳ４４０４で、ステップＳ４４０１で求めた最大面の面積に対するステップＳ４４０３で求めた外接矩形の面積の比率を求め、これを姿勢安定性とし、一定以下の比率のものは不安定姿勢と判定する。例えば、図４６Ｂ及び図４９Ｂの場合は、（最小面積外接矩形の面積）÷最大面積）＝２８／４９≒約５７％となる。また図４７Ｂ及び図５０Ｂの場合は、（最小面積外接矩形の面積）÷最大面積）＝４／４９≒約８％となる。さらに図４８Ｂ及び図５１Ｂの場合は、（最小面積外接矩形の面積）÷最大面積）＝２０／４９≒約４１％となる。この結果から、姿勢安定性の低い図４７Ａの直立姿勢のワークモデルＷＭＴを不安定として排除することができる。ここで不安定姿勢と判定する閾値は、固定値とする他、必要に応じてユーザが調整可能としてもよい。
（実施形態１０）
【０２０５】
以上の例では、ユーザがワークモデルの許容される姿勢等を予め設定し、条件に合致しないワークモデルを排除する構成、いいかえるとワークモデルをバラ積みデータから除外するための排除条件を予め設定することで、バラ積みデータに不自然なワークモデルが含まれないようにしてピッキング動作シミュレーションの精度や再現性を向上させる例を説明した。ここでは、ユーザが姿勢条件設定部を用いて、ワークモデルの姿勢や位置に制限を加えることで、カスタマイズされたバラ積みデータを生成している。ただ、本発明は必ずしもユーザがワークモデルをバラ積みデータから除外するための排除条件を手動で設定する必要はなく、ワークモデルを除外する条件を自動で設定するように構成してもよい。このような例を実施形態１０に係るロボットシミュレーション装置として、図５２のブロック図に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部１１と、バラ積みデータ生成部２０と、表示部３と、除外ワーク選択部１８と、除外条件算出部１９と、ピッキング動作シミュレート部３０とを備える。実施形態１０において、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
【０２０６】
除外ワーク選択部１８は、表示部３上に表示されたバラ積みデータを構成するワークモデルの内、ピッキング動作シミュレーションから除外したいワークモデルをユーザに選択させるための部材である。
【０２０７】
除外条件算出部は、除外ワーク選択部で選択された除外対象のワークモデルに対して、該ワークモデルを除外するための除外条件を自動的に算出するための部材である。
【０２０８】
これにより、ユーザが手動で不自然な姿勢のワークモデルを除外するための条件を設定すること無く、除外するように指定されたワークモデルの位置や姿勢から、自動的にワークモデルを排除する条件を算出して、このような排除条件に合致するワークモデルをバラ積みデータから排除するように構成できる。この結果、ユーザ側でワークの排除条件を詳細に設定する手間をなくすことができる。またユーザは、除外したいワークモデルの一部を選択することで、自動的に排除条件が算出されて、他の排除すべきワークモデルも自動で選択されるので、この点においても利便性の向上が図られる。
（実施形態１１）
【０２０９】
また、ユーザがワークモデルを排除するための排除条件を手動で設定することと、ロボットシミュレーション装置側での排除条件の自動算出を併用することもできる。このような例を実施形態１１に係るロボットシミュレーション装置として、図５３のブロック図に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部１１と、検出用設定部５０と、バラ積みデータ生成部２０と、表示部３と、除外ワーク選択部１８と、除外条件算出部１９と、ピッキング動作シミュレート部３０とを備える。検出用設定部５０は、姿勢条件設定部１６を備えている。実施形態１１においても、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。このように、ユーザが手動でワークモデルの排除条件を設定しつつ、ロボットシミュレーション装置側でも自動的に排除条件を算出して、必要に応じて排除条件の修正や好ましい角度範囲を提案するなどして、ユーザによる姿勢条件等の排除条件の設定作業をサポートすることが可能となる。
【０２１０】
なお、ワークモデルの姿勢を制限する方法は、上述した図３８等の方法に限定されるものでなく、他の方法も適宜採用できる。例えば、ワークモデルの姿勢をＺＹＸオイラー角で表現する場合、Ｘ軸に対する角度Ｒｘ、Ｙ軸に対する角度Ｒｙ、Ｚ軸に対する角度Ｒｚのそれぞれに対し、規定の範囲内になるように制限を行うことができる。また、Ｚ軸に対する第一の回転角Ｒ１、Ｙ軸に対する第二の回転角Ｒ２、Ｚ軸に対する第三の回転角Ｒ３のそれぞれに対し、規定の範囲内になるように制限を行うように構成してもよい。
【０２１１】
さらにワークを段積みして収納容器に収納する態様には、図５４で示すような中敷きや、図５５で示すような間仕切りが存在する場合もある。このような場合に、各段の間に、中敷きや間仕切りをモデル化したデータを介在させて物理シミュレーションを実行することで、このような中敷きや間仕切りも考慮した段積み状態を生成することができる。これら中敷きや間仕切りもＣＡＤデータ等でモデル化することができる。また、これら中敷きや間仕切りもロボットでピッキングする場合のピッキング動作シミュレーションも合わせて行うこともできる。この場合、中敷きや間仕切りは、吸引式のエンドエフェクタで排除する他、予め中敷きや間仕切りの一部に、把持式や挿入式のエンドエフェクタで把持し易いように、開口部やスリット等を設けておくこともできる。
（ワークモデルを一つ取り出したことによる残りのワークモデル群の変化）
【０２１２】
ここで、ワークモデルを一つ、ワークモデル群から取り出した後のワークモデル群の変化について検討する。従来、バラ積みされたワークモデルのいずれかがエンドエフェクタモデルで把持可能と判断され、ピッキング動作シミュレーションによって取り出される場合、取り出し時や取り出された後の、バラ積みされたワークモデル群の状態については、考慮されていなかった。例えば、図５６に示すバラ積みされたワークモデル群において、破線の丸で囲まれたワークモデルは、その下に位置するハッチングで示すワークモデルが存在することによって支えられている。このため、ハッチングされたワークモデルが取り去られたとすれば、本来は倒れるべきである。
【０２１３】
しかしながら、従来の物理シミュレーションでは、ハッチングされたワークモデルがなくなったとしても、図５７に示すように、その他のワークモデルの位置や姿勢に変化は生じなかった。これは、物理シミュレーションの動作自体が重い処理のため、一度実行させるのみで足りるとして、敢えて再実行させることが考慮されていなかったためと考えられる。しかしながら、図５７に示す破線の丸で囲まれたワークモデルのように、支えるものがないのに宙に浮いたような姿勢で止まることには現実にはあり得ず、このような状態でピッキング動作シミュレーションを行っても、現実のワークの位置や姿勢と合致せず、よってピッキング動作シミュレーションが成功したとしても、実運用時には失敗するなど、ピッキング動作シミュレーションの再現性や精度に問題が生じることが考えられる。また、ワークの下側に位置するワークのみならず、周囲で接触しているワークであっても、これらが取り出されると、その近傍のワークモデルにも影響が生じて、バランスが崩れるなどしてワークモデルの位置が変わることも考えられる。従来は、このようなワークの取り出しによる、残りのワーク群の変化については考慮されておらず、このことがピッキング動作シミュレーションの精度に影響を与えることを本発明者らは見出した。
【０２１４】
そこで、このような知見に基づき、ワークが取り出された結果、残りのワーク群の位置や姿勢に変化が生じることをも推測することで、より実運用時のワークのバラ積み状態に近付けた精度の高いピッキング動作シミュレーションを実現するべく、本発明を成すに至った。具体的には、物理シミュレーションを再実行することを許容するものである。この結果、図５８に示す破線の丸で囲まれたワークモデルのように、位置のワークモデルが除去された後、ワークモデル群が重力の作用を受けて状態が変化した様子を再現できるので、ピッキング動作シミュレーションもこれに基づいて、より実運用時に近い状態で実行させることができる。
（物理シミュレーションを再実行する範囲）
【０２１５】
物理シミュレーションを再実行する範囲は、例えば、ピッキング動作シミュレート部により一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルのすべてに対して、再実行するよう構成することができる。あるいは、一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルの内、取り出されたワークモデルの周囲に存在するワークモデルに対して、物理シミュレーションを再実行するよう構成してもよい。あるいはまた、一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルの内で、取り出されたワークモデルに接触していたワークモデル、又は取り出しの過程でロボット又はこれに把持されたワークモデルと干渉するワークモデルに対して、物理シミュレーションを再実行するよう構成してもよい。
（物理シミュレーションを再実行するタイミング）
【０２１６】
また物理シミュレーションを再実行するタイミングは、典型的には、ピッキング動作シミュレーション中にワークモデルを取り出すタイミングである。すなわち上述した図２５のステップＳ２５０９のような、ワークモデルの数を一つ減らすタイミングである。例えばピッキング動作シミュレーションで一のワークモデルが取り出される度に、毎回物理シミュレーションを再実行するよう構成できる。ただ本発明は、物理シミュレーションを再実行するタイミングを、ワークモデルを取り出すタイミングに限定しない。例えば、ピッキング動作シミュレーションが実行されている間、予め定めた頻度で物理シミュレーションを再実行するよう構成してもよい。あるいは、一のワークモデルが取り出される度毎に、物理シミュレーションを再実行するか否かの要否を判定してもよい。この場合、不要と判定された場合は物理シミュレーションの再実行を行わない。
【０２１７】
さらに、一のワークモデルが取り出された際に、この取り出されるワークモデルに接触していたワークモデルが存在しない場合には、物理シミュレーションの再実行が不要と判定してもよい。
（表示ユーザインタフェース）
【０２１８】
さらに、表示部において、更新されたバラ積みデータをリアルタイムに更新して、ユーザに視覚的にバラ積みデータの変化の状態を示すことも可能となる。特に表示部の表示内容の更新頻度を上げることで、バラ積みデータすなわちバラ積みされたワークモデル群がワークモデルの取り出しによって移動したり崩れる様子などを動画のように表示でき、ユーザに対してより視覚的に判り易い表示態様を提供できる。
（ワークモデルの数を一つ減らす手順）
【０２１９】
ここで、上記図２５のステップＳ２５０９において、ワークモデルの数を一つ減らす手順の詳細を、図５９のフローチャートに基づいて説明する。
【０２２０】
まずステップＳ５９０１において、ピッキング動作により取り出される対象となるワークモデルの、取り出し経路等の取り出しパラメータを設定する。取り出しパラメータとは、例えばどのワークを、どの位置で把持して、どの方向に、どのくらいの速度で取り出すか、ワークの特性（例えば反発係数）、等が挙げられる。
【０２２１】
次にステップＳ５９０２において、物理シミュレーション部が起動しているか否かを判定し、起動している場合はステップＳ５９０４に進み、物理シミュレーション部を起動する。一方、起動していない場合は、ステップＳ５９０３に進んで、物理シミュレーション部を起動した上でステップＳ５９０４に進む。
【０２２２】
ステップＳ５９０４においては、ワークモデルの取り出し動作を実行する。この段階で、ワークモデルの状態に応じて、物理シミュレーションの再実行の有無を判定させてもよい。例えば上述の通り、ユーザに対し、物理シミュレーションの再実行の有無を選択させるように、表示部のユーザインターフェース画面上から促す。あるいは、取り出されるワークモデルが、他のワークモデルに接触していない場合は、物理シミュレーションの再実行をしないと判定する。
【０２２３】
そして、物理シミュレーションの再実行がユーザにより指定されるなど、物理シミュレーションの再実行がなされた場合には、ステップＳ５９０５において、一定時間後の各ワークモデルの状態を確認する。すなわち、ワークモデルが取り出されることで、他のワークモデルが崩れたり滑ったり傾いたりといった何らかの移動が生じている場合には、その移動が終わって静止状態となるまでの間、待った上で、静止状態を表示させる。なお、このようなワークモデル群の動きは、表示部上でリアルタイムに表示させる他、非表示としてロボットシミュレーション装置で内部的に行わせてもよい。この場合は、演算により物理シミュレーション後の状態を生成するため、一定時間の経過を物理的にウェイトする必要は必ずしも必須でない。
【０２２４】
次にステップＳ５９０６において、取り出し対象のワークモデルが他のワークモデルに干渉しないか否かを判定し、干渉する場合はステップＳ５９０４に戻って処理を繰り返し、干渉している場合は、ステップＳ５９０７に進み、取り出し対象であるワークモデルが取り出されたものとして、仮想作業空間から削除する。
【０２２５】
さらにステップＳ５９０８において、一定時間後の各ワークモデルの状態を確認して、ステップＳ５９０９に進み、全てのワークモデルの位置及び姿勢が前回の確認時から変化していないか否かを判定し、変化が生じている場合はステップＳ５９０８に戻って処理を繰り返し、変化が生じていない場合は処理を終了する。このようにして、ピッキング動作シミュレーションにおいて、物理シミュレーションを必要なタイミング、範囲で再実行することにより、ワークが順次ピッキングされる度に生じ得る変化をも再現して、より正確なシミュレーション結果を得ることが可能となり、実運用時との乖離の少ない、適切な条件設定に寄与し得る。
【０２２６】
なお、上記の例ではピッキング動作シミュレーションにおいて、ワークモデルを取り出すシミュレーションを行う例を説明したが、本発明はこの例に限らず、例えばワークモデルの取り出しシミュレーションを行わずに、取り出し対象のワークモデルを一つ削除し、削除後の状態を初期状態として物理シミュレーションを開始しても良い。この方法であれば、シミュレーションの処理を簡素化できる。また物理シミュレーションの再実行は、毎回行うのではなく、所定の回数毎に物理シミュレーションを行うようにしても良い。さらに、取り出し対象のワークモデルの近傍のワークモデルに関してのみ、物理シミュレーションを行うように、物理シミュレーションの範囲を制限してもよい。この設定は、例えば後述するシミュレーション環境設定部で行わせることができる。あるいは、取り出し対象のワークモデルの周囲の状況を確認し、このワークモデルが取り出される経路上に他のワークモデルがあるときのみ、物理シミュレーションを実行するようにしても良い。
【０２２７】
このようにして、より実運用時に近い状態のピッキング動作シミュレーションをユーザに提供することが可能となる。また、ピッキング動作シミュレーションを用いた網羅的な機能を確認することもできる。例えば、ピッキング動作において、前回取り出されたワークモデルの周辺のワークモデルは、次回の取り出し対象としないといった技術が提供されている。この方法では、あるワークモデルを取り出した後に、位置や姿勢が変化していないと想定されるワークモデルについては、再撮像実行しないでピッキング動作に移ることとしている。しかしながら、いずれかのワークモデルを取り出した後の状態を再度物理シミュレーションしないと、本来崩れるはずの場所も崩れない状態となっているため、その機能については正しく検証できない状態になってしまう。そこで、上述の通りワークモデルの取り出し後に再度物理シミュレーションを実行させることで、ワークモデルの動きによって動作の成否が変わる機能に対しても、検証を行うことができるようになる。
【０２２８】
以上のようにして、バラ積みデータから順次ワークモデルを取り出すピッキング動作シミュレーションにおいて、いずれか一つのワークモデルがロボットにより取り出された後に、このワークモデルが取り出された後の状態のバラ積みされたワークモデル群に対して、重力の作用を適用する物理シミュレーションを適用して、バラ積みデータを更新することができる。これにより、いずれか一つのワークモデルが取り出されたことにより、取り出されたワークモデルに接触していた他のワークモデルが物理的に不自然な状態、例えば中に浮いたような状態になることを防止できる。
（ワークモデルのバラ積み画像の生成）
【０２２９】
ここで上記図２５のステップＳ２５０２における、物理シミュレーションによって得られるワークモデルのバラ積み画像の生成について詳述する。図２６に示した物理シミュレーションにより得られた、複数個のワークモデルが積み上げられた位置姿勢データを元に、三次元のバラ積みデータ（３Ｄ計測データ）が生成される。ステップＳ２５０２では、このバラ積みデータから、バラ積み画像として高さ画像を生成する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、上述した通りＺバッファ法が好適に利用できる。
（無効画素）
【０２３０】
このようにして高さ画像を生成した後、同時に作成しておいた法線画像を参照して、面が一定以上傾いている画素を無効画素化する。この高さ画像と法線画像とは、各画素が一対一で対応している。なお、無効画素とは、三次元計測することができなかった箇所を示す画素である。例えば、画素値が０になっておれば、当該画素を無効画素と判断できる。
【０２３１】
例えば、センサ部を構成するプロジェクタとカメラの両方で見えていない部位すなわち画素を無効画素とする。なお、画素の無効化については、一定の閾値を基準として一律に無効化する他、角度範囲に応じて重み付けをしてもよい。
【０２３２】
以上の構成により、実運用時の三次元計測の可否を考慮した正確なバラ積みデータを構築できる。金属ワーク等の鏡面反射の強いワークは、面が一定以上傾くと、センサ部を構成するプロジェクタからの投影パターンが反射しなくなるため、三次元計測ができなくなる。従来のピッキング動作シミュレーションでは、この点が考慮されておらず、すべてのワークの三次元形状が計測されるものとの前提でシミュレーションが行われていたため、実運用時との齟齬や乖離が生じていた。例えば物理シミュレーションの結果、図６０Ａに示すようなバラ積みデータが得られた状態で、ワークモデルＷＭの各面の傾斜などを考慮することなく単純に高さ画像としたバラ積み画像では、図６０Ｂの平面図や図６０Ｃの点群表示画像に示すようになる。このバラ積み画像では、実運用時には三次元計測できない急峻な傾斜面も計測できる結果となってしまっている。
【０２３３】
これに対し本実施形態によれば、バラ積みデータをそのまま利用するのでなく、ピッキング動作シミュレーション上でワークの三次元形状の計測の可否状態を再現したシミュレーション用データを生成することができる。この結果、図６０Ａのバラ積みデータから、図６０Ｄの平面図や図６０Ｅの斜視図に示すような、急な斜面は三次元計測できない無効画素として表示された、より実運用時に近いバラ積み画像を生成することができる。これにより、ピッキング動作シミュレーションを実運用時と近付けて、より正確なシミュレーションに基づき、事前の設定作業を行うことが可能となる。
【０２３４】
以上のように、ＣＡＤデータがあれば、実際のワークを用意したりバラ積みさせたりしなくても、実運用に近い状態で、効率的に検証することができるようになる。ただ、実際のワークを用意してバラ積みした状態でピッキング動作シミュレーションを行うことも可能である。
（角度閾値）
【０２３５】
次に、ワークモデルを構成する面の傾斜角度の閾値を設定する手順について説明する。ここで、図６のセンサ部２を用いて、鏡面反射の弱いワークＷＫ４の三次元形状を取得可能な角度範囲を図６１Ａに、鏡面反射の強いワークＷＫ５の三次元形状を取得可能な角度範囲を図６１Ｂに、それぞれ示す。これらの図に示すように、ワークを構成する材質が、樹脂等のような、鏡面反射が弱い、いいかえると拡散反射の強い場合と、金属等のような、鏡面反射が強い、いいかえると拡散反射の弱い場合とでは、計測可能な角度範囲に違いが生じる。すなわち、鏡面反射が強いと、プロジェクタの投影パターンがワークの表面で反射され難くなり、面が少し傾くと計測不可となる。図６１Ａに示す樹脂製のワークＷＫ４では、センサ部２からワークに下ろした鉛直面から７５°の範囲までの傾斜面であれば計測可能となっている。一方図６１Ｂに示す金属製のワークＷＫ５では、鉛直面から４５°の範囲までの傾斜面であれば計測可能となっている。なお角度閾値は、上述の通り鉛直方向からの傾斜角度として表現する他、カメラとプロジェクタの傾斜角度で表現してもよい。
【０２３６】
そこで本実施形態では、水平面に対し何度の傾斜面まで計測できるかを示す角度閾値を設定可能とすることができる。角度閾値を、対象となるワークの材質に応じて、調整できるようにすることで、ワークに応じた適切なピッキング動作シミュレーションが実現される。
（検出用設定部５０）
【０２３７】
このような角度閾値は、上述した図２４の検出用設定部５０から行うように構成できる。検出用設定部５０で行われた角度閾値の設定に基づいて、領域推定部２２は、センサモデル設定部１５で設定されたセンサモデルの仮想的な三次元測定光源から延長された測定軸に対して、予め定めた角度閾値以上の傾斜角度を有する領域を、三次元計測が困難な領域として推定する。
【０２３８】
角度閾値は、予め定めた固定値としてもよい。あるいは、角度閾値を、表面状態パラメータ設定部１２で設定された表面状態パラメータによって変化させてもよい。さらにセンサ部で実測した三次元計測データに基づいて、角度閾値を変化させてもよい。
【０２３９】
上述の通り角度閾値は、対象となるワークに応じて設定できる。例えば、樹脂製のワークを想定し、７５°の傾斜面まで計測可能として角度閾値を設定した場合に得られるバラ積み画像の例を図６２Ａに、その要部拡大図として樹脂製ワークモデルＷＭ４を示す拡大図を図６２Ｂに、それぞれ示す。また金属製のワークを想定し、４５°の傾斜面まで計測可能として角度閾値を設定した場合に得られるバラ積み画像の例を図６２Ｃに、その内の金属製ワークモデルＷＭ５を拡大した要部拡大図を図６２Ｄに、それぞれ示す。これらの図に示すように、樹脂製のワークに対して金属製のワークは計測できる部分が限られることから、ピッキング動作シミュレーションの対象が金属製ワークである場合に、この限られた形状特徴でも、ワークの位置及び姿勢を正しく検出できるか否かを、事前に検証することができる。
【０２４０】
また、角度閾値によって、計測できる／できないを単純に２値化的に決定するのではなく、乱数を用いて確率的に決定することもできる。ここで、実運用時の計測では、表面状態が一様ではないため、計測できる／できないの境目が綺麗に境界になるわけではない。この結果、無効画素へのなり易さ、なり難さが確率的に変わるような形になる。そのため、乱数を用いて、傾斜角度が小さいところは、除外する確率を下げ、傾斜角度が大きいところは、除外する確率を上げるようにする。このように乱数によって確率的に決定することで、より実際の計測に近い状態を実現できる。
【０２４１】
このようにロボットシミュレーション装置によれば、ピッキング動作シミュレーションにおいて、実運用時の計測結果に近い状態の画像を用いて、設定パラメータの調整や最適化が可能となる。例えば、ピッキング動作シミュレーションの結果、ワークの検出自体が難しいことが判明した場合には、対策としてワークの搬送方法や積み方を改善する必要があるなどを講じることができるようになる。このようにして、実際にワークを準備したり、センサ部を設置することなく、事前に順当な対応策を検証できるようになる。
（カメラの位置に基づく困難領域の排除）
（実施形態１２）
【０２４２】
また、領域推定部で困難領域を推定する方法は、上述した面の傾斜角度に限られず、センサ部のカメラの位置に基づいて決定することもできる。このようなロボットシミュレーション方法を、実施形態１２として以下説明する。
【０２４３】
上述した通り、バラ積みピッキングのシミュレーションにおける、シミュレーション用データの生成に際して、ワークの三次元のＣＡＤモデルと、このＣＡＤモデルをワークモデルとしてバラ積みしたときの各ワークモデルの位置及び姿勢のデータがあれば、上述したＺバッファ法等を利用して、上から見たときの仮想的な画像、すなわちバラ積み画像を生成できる。
【０２４４】
しかしながら、Ｚバッファ法では上から見えるデータはすべて描画される。この結果、周囲にワークモデルが積まれていても、上から見たときに見えている限りは描画されてしまう。例えば図６３のバラ積み画像に示す例を考える。ここで三次元計測を行うセンサ部が、例えばＴＯＦ方式を用いたＴＯＦセンサの場合は、実際もこのような画像になる。しかしながら、図６４に示すようなパターンプロジェクション方式のように、投影位置と撮像位置が異なる場合は、両方の位置から見えることが計測できる条件になる。そのため、図６４のように、プロジェクタモデルＰＭからは見えても、カメラモデルＣＭＭから見えない位置にある奥まった部位は計測できないことになる。実運用時に近いピッキング動作シミュレーション結果を得るには、このような点は除去することが望ましい。
【０２４５】
そこで実施形態１２においては、高さ画像を作成した後に、この高さ画像を構成する各画素で、カメラモデルから見えるかどうかを判定し、見えるものだけを残すようにする。例えば、図３等の領域推定部２２が、センサモデルで三次元計測を行う際の仮想的な三次元測定光源と、バラ積みデータを構成する各点とをそれぞれ結ぶ線分を仮想光軸として定義し、仮想光軸上に別のワークモデルの点が存在するか否かを判定する。そして別のワークモデルの点がある場合は、三次元計測が困難な点と推定し、このような三次元計測が困難な点の集合でもって推定領域を規定する。これにより、仮想光軸とワークモデルとの干渉の有無に基づいて、計測の困難さを推定することができ、もってシミュレーションの精度を高めることができる。
【０２４６】
このような他のワークモデルにより死角となる領域の判定する具体的な手法として、三次元のバラ積みデータを構成する各点（ボクセル）において、この点とカメラモデルとを結ぶ線分を定義する。この線分上に、別のボクセル点がある場合は、カメラモデルからその点は見えないと判定する。
【０２４７】
また図６に示したように、センサ部２にカメラが２つ以上ある場合は、少なくとも１つのカメラモデルから見えている点を残すようにする。例えば図６５Ａにおいては、カメラモデルＣＭＭからワークモデルＷＭが見えているので、有効なボクセルと扱う。一方、図６５Ｂに示すように、ワークモデルＷＭ６の一部が他のワークモデルＷＭ７に隠れてカメラモデルＣＭＭから見えない場合は無効なボクセルと扱う。また図６５Ｃに示すように複数のカメラモデルＣＭＭ２、ＣＭＭ３のいずれかでワークモデルＷＭが見えている場合は、有効なボクセルとして扱う。このようにすることで、奥まっていて実際には見えないような部位は、バラ積み画像上から除外して、実運用時に撮像した画像に近い画像を得ることで、正確なバラ積みシミュレーションを行える。
（実施形態１２に係るピッキング動作シミュレーションの手順）
【０２４８】
ここで、実施形態１２に係るピッキング動作シミュレーションの手順を、図６６のフローチャートに基づいて説明する。上述した実施形態１に係る図２５のフローチャートと同じ動作については、詳細説明を適宜省略する。まず、ステップＳ６６０１において、シミュレーション環境を設定する。次にステップＳ６６０２において、ワークモデルのバラ積み画像を生成する。このワークモデルのバラ積み画像を生成する手順の詳細を、図６７のフローチャートを用いて説明する。
（実施形態１２に係るバラ積み画像の生成手順）
【０２４９】
まずステップＳ６７０１において、乱数に基づいてワークモデルの姿勢、投下位置を設定する。次にステップＳ６７０２において、ワークモデルを投下させて物理シミュレーションを実施する。さらにステップＳ６７０３において、指定された数のワークモデルが投下されたか否かを判定し、未だの場合はステップＳ６７０１に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定すると、ステップＳ６７０４に進み、各ワークモデルの位置、姿勢に基づいて、ワークモデルのバラ積み画像を生成する。ここでは、三次元のバラ積みデータから高さ画像を生成する。
（バラ積み画像の生成手順）
【０２５０】
ここで、ステップＳ６７０４においてバラ積み画像を生成する手順の詳細を、図６８のフローチャートに基づいて説明する。まずステップＳ６８０１において、バラ積みデータを、ＣＡＤデータを登録された位置及び姿勢に変換する。次にステップＳ６８０２において、これをＺバッファ法で高さ画像に描画し直す。そしてステップＳ６８０３において、すべてのワークモデルを描画したかを判定し、未だの場合はステップＳ６８０１に戻って処理を繰り返す。この結果、すべてのワークモデルの描画を終えた場合はステップＳ６８０４に進む。
【０２５１】
ステップＳ６８０４では、高さ画像の１点とカメラモデルとを結ぶ直線を計算する。ここでは、三次元の仮想作業空間内におけるカメラモデルの位置は、事前に定義されているものとする。その上で、図６９に示すようにワークモデルＷＭの高さ画像の各画素で各カメラモデルＣＭＭと結ぶ直線式を計算する。例えば次式で近似する。
【０２５２】
ａｘ＋ｂｙ＋ｃｚ＝ｄ
【０２５３】
そしてステップＳ６８０５において、図７０に示すように、カメラモデルＣＭＭと結ぶ直線上に障害物、ここでは別のワークモデルＷＭが存在するかをチェックする。具体的な方法としては、高さ画像上での二次元線に変換する。その線上の高さ画像の各点と、その位置で線上のＺ値を計算し、高さ画像の点のほうが高い位置にある場合は、カメラモデルから見えないと判断する。
【０２５４】
さらにステップＳ６８０６において、すべてのカメラモデルから見えない点を除去する。さらにステップＳ６８０７において、すべての画素で実施したか否かを判定し、未だの場合はステップＳ６８０４に戻って処理を繰り返す。そして、すべての画素で実施したと判定されると、処理を終了する。
【０２５５】
このようにして図６８、図６７の手順を経て、図６６のステップＳ６６０２でバラ積み画像が得られると、次にステップＳ６６０３において、各ワークモデルの位置と姿勢の検出を試みる。さらにステップＳ６６０４において、各ワークモデルの位置と姿勢が検出できたか否かを判定し、検出できる場合はステップＳ６６０５に進み、検出できない場合はステップＳ６６０９にジャンプして、残ったワークモデルに関する情報を抽出した後、処理を終了する。
【０２５６】
ワークモデルの位置と姿勢が検出できた場合は、ステップＳ６６０５において、エンドエフェクタモデルと周辺データとの干渉判定を行い、把持解の算出を試みる。そしてステップＳ６６０６において、把持解を算出できたか否かを判定し、算出できた場合はステップＳ６６０７に進み、算出できない場合はステップＳ６６０９にジャンプして、残ったワークモデルに関する情報を抽出した後、処理を終了する。
【０２５７】
把持解を算出できた場合はステップＳ６６０７において、ワークモデルの数を一つ減らす。そしてステップＳ６６０８において、未処理のワークモデルが残っているか否かを判定し、残っている場合はステップＳ６６０２に戻って処理を繰り返し、残っていない場合はステップＳ６６０９に進む。ステップＳ６６０９においては、残ったワークモデルに関する情報を抽出する。
【０２５８】
このようにして、ピッキング動作シミュレーションがピッキング動作シミュレート部によって実行される。このようにして、カメラを用いたセンサ部でワークの三次元形状を測定できない測定困難領域を、より正確に推定することが可能となる。
【０２５９】
なお、以上の例では、カメラ側から見えるか否かで無効画素を判定したが、カメラだけではなくプロジェクタの位置も定義し、プロジェクタから見え、かつカメラの何れかから見えるという条件に設定することもできる。さらにカメラの位置を明確に定義せずに、周りの点よりも一定以上低い点は消すなどして、同様の効果を得てシミュレーションすることもできる。
【０２６０】
以上のようにロボットシミュレーション装置によれば、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。特に実運用時に三次元計測ができない領域を考慮したシミュレーションを行うことで、シミュレーションと実運用時の乖離を低減でき、信頼性の高いシミュレーションが可能となる。
（角度閾値決定部５４）
（実施形態１３）
【０２６１】
以上の例では、仮想的なバラ積みデータに基づいて角度閾値を設定する例を説明した。ただ本発明はこの構成に限らず、実際にワークをバラ積みした状態をセンサ部で測定した結果に基づいて、角度閾値を設定することもできる。この場合は、ワークを無作為にバラ積みしたワーク群に対して、実際にセンサ部で三次元計測を行う。このため、画像処理部であるロボットシミュレーション装置に、センサ部を接続する。
【０２６２】
このようなロボットシミュレーション装置の詳細を、実施形態１３として図７１のブロック図に基づいて説明する。この図に示すロボットシミュレーション装置５００は、センサ部２と、計測データ記憶部５２と、角度閾値決定部５４と、ワークモデル設定部１１と、物理シミュレーション部６０と、バラ積みデータ生成部２０と、シミュレーション用データ生成部４０と、ピッキング動作シミュレート部３０とを備えている。実施形態１３においても、上述した実施形態１等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
【０２６３】
計測データ記憶部５２は、積み上げられた複数の異なる姿勢のワークを、センサ部２により三次元計測した、センサ部２の測定軸に対する傾斜角度の情報を各位置毎に有する三次元計測データを記憶するための部材である。このような計測データ記憶部５２は、ハードディスクのような固定記憶媒体、半導体メモリやその他の可搬メディア等が利用できる。
【０２６４】
角度閾値決定部５４は、計測データ記憶部５２に記憶された複数のワークの三次元計測データを構成する各点の、センサ部２の測定軸に対する傾斜角度情報に基づいて、三次元計測の可否を判定する基準となる角度閾値を決定するための部材である。なおセンサ部２の測定軸とは、センサ部２が三次元計測を行うための三次元測定光源が発する測定光の光軸である。またセンサ部２の測定軸は、鉛直方向等、所定の方向としてもよい。
【０２６５】
図７１に示す領域推定部は、バラ積みデータ生成部２０で生成されたバラ積みデータ内の各ワークモデルを構成する各点の仮想傾斜角度と、角度閾値決定部５４で決定された角度閾値とを比較し、該角度閾値よりも大きな仮想傾斜角度を有する点を、計測困難と推定される推定領域として特定する。これにより、現実にセンサ部２で計測したワークの傾斜角度に基づいて定めた角度閾値を基準として、測定困難と推定されるデータを予め排除した上でシミュレーション用データを取得できるため、より精度の高いピッキング動作のシミュレーションが可能となる。
【０２６６】
また実施形態１３に係るロボットシミュレーション装置５００は、表示部３を備えてもよい。この表示部３は、計測データ記憶部５２に記憶された複数のワークの三次元計測データを構成する各点の、センサ部２の測定軸に対する傾斜角度情報に基づいて、各点の傾斜角度を累積した分布を示す角度分布ヒストグラムを表示可能としている。
【０２６７】
ここで、実測データに基づいて三次元計測可能なワークモデルの姿勢を決定する方法について説明する。センサ部によってバラ積みされたワーク群の三次元計測できるか否かを判定する際には、上述の通り予め設定された角度閾値を参照する。しかしながら、角度閾値はワークによって異なる。例えば、相対的に計測し易い樹脂製のワークは、表面が傾斜していても計測できる。しかし、光沢の強い金属製のワークでは計測できない。そのため、対象となるワークに応じて角度閾値を調整することが望ましい。しかしながら、その設定は容易でなく、設定された値によっては望む結果を得ることができなくなる。
【０２６８】
そこで実施形態１３においては、実際にワークを三次元計測した三次元計測データに基づいて、最適な角度閾値を決定する。具体的には、角度閾値決定部５４でもって、実際にバラ積みされたワーク群を撮像した画像の、各画素に対して表面傾きを計算し、全体の角度分布を測定する。この角度分布を使って、どの程度表面が傾いても計測できるワークであるかを判定し、最適な閾値を決定する。この方法であれば、ワークの材質や表面状態のばらつき、用いられるセンサとの相性や湿度、気温等による変動等によらず、実際に計測した三次元計測データに基づいて、角度閾値を決定できるため、信頼性の高い角度閾値の選択が可能となる。
（角度分布ヒストグラム）
【０２６９】
ワークの三次元計測データを構成する各点の傾斜角度を累積した分布を示す角度分布ヒストグラムは、例えば角度閾値決定部５４で行われる。あるいは、センサ部に角度閾値決定部や計測データ記憶部を統合してもよい。
【０２７０】
一例として、図７２に示すようなバラ積みされたワーク群を実際に三次元計測した高さ画像から、角度分布ヒストグラムを図７３、図７４にそれぞれ示す。図７３は樹脂製のワークの角度分布ヒストグラムを、図７４は金属製のワークの角度分布ヒストグラムを、それぞれ示している。樹脂製のワークは表面が乱反射するため、表面とセンサ測定軸との傾斜がある程度大きくても三次元形状を測定できる。そのため図２７に示すように広い角度範囲に計測された点が分布している。一方、金属製のワークは正反射成分が大きいため、表面とセンサ測定軸との傾斜が大きくなると測定できなくなってしまう。よって図２８のように傾斜角度が小さい領域に分布が固まっている。このような角度分布ヒストグラムは、表示部３の、例えば角度分布ヒストグラム表示領域に表示させる。角度分布ヒストグラム表示領域は、例えばロボットシミュレーション装置であるコンピュータにインストールされた、ロボットシミュレーションプログラムのＧＵＩで実現される。
【０２７１】
このようにして表示された角度分布ヒストグラムから、どのくらいの角度範囲において三次元計測結果が得られているかどうかを判断することができる。ユーザは、表示部上に表示された角度分布ヒストグラムから、多くの点すなわち画素で三次元測定がなされている角度範囲を数値で、あるいは画面上から直接指定して、角度閾値を手動で設定できる。例えば図７３、図７４の例では、いずれも８０％以上の画素が含まれる角度範囲として、樹脂製のワークの場合６０°、金属製のワークの場合３５°を指定している。
【０２７２】
また、角度閾値の設定は、ユーザが手動で行う他、ロボットシミュレーション装置側で自動的に設定するように構成してもよい。例えば、角度閾値決定部でもって、画素の８０％以上で三次元測定可能な角度を角度閾値として、自動的に演算する。この場合、角度分布ヒストグラムの表示は任意であり、表示させずに内部的に演算してもよい。すなわち、角度分布の情報が得られれば、ヒストグラム状に表示させることは必須でない。また、自動的に演算された角度閾値を表示部上に表示させてもよい。この際、角度分布ヒストグラムに対し、角度閾値を満たす範囲をハイライトさせて表示させてもよい。
【０２７３】
実施形態１３に係るロボットシミュレーション装置５００を用いたピッキング動作シミュレーションは、上述した図６７、図６８と同様の方法で行われる。角度閾値の設定は、例えば図６７のステップＳ６７０１のシミュレーション環境の設定時に行う。ここで、シミュレーション環境の設定手順を、図７５のフローチャートに基づいて説明する。
（実施形態１３に係るシミュレーション環境の設定手順）
【０２７４】
まずステップＳ７５０１において、バラ積み状態のワーク群の三次元形状をセンサ部で計測する。これによって、図７６に示すような高さ情報を有する高さ画像が得られる。この例では、パターンプロジェクション方式で三次元計測を行っているが、他の方法、例えばステレオ計測やＴＯＦなどを利用することもできる。
【０２７５】
次にステップＳ７５０２において、撮像された三次元の高さ画像を構成する画素毎に、傾き情報を生成する。ここでは、高さ画像に対して微分処理を行うことで、法線マップを作成できる。この法線のＺ成分から、各点の傾きを計算する。各点の傾きは、次式で表現できる。
【０２７６】
θ＝ａｃｏｓＮｚ（Ｎｚ：法線のＺ成分）
【０２７７】
そしてステップＳ７５０３において、傾き情報の分布を示す角度分布を演算する。ここでは、選択した範囲内の傾き分布を作成する。ここで高さ画像中に含まれる床面を演算に含めると、傾き０の割合が増えてしまう。そこで、このような領域を排除するようマスク処理を行うことが好ましい。例えば、一定以下の高さは無視する。また、無効画素の近傍では、法線の情報が不安定になりやすいため、これも無視してもよい。
【０２７８】
最後にステップＳ７５０４において、演算された角度分布から、ピッキング動作シミュレーションに用いる角度閾値を決定する。例えば、累積分布が８０％以上になる角度を、計測できる角度の閾値とする。このようにして、ピッキング動作シミュレーションの環境設定の１つとして、角度閾値を決定できる。
【０２７９】
なお、以上の例ではバラ積みされたワーク群を１回撮像した結果から角度分布を作成しているが、本発明はこの構成に限られない。例えば、ワーク群を複数回撮像した結果から分布を作成してもよい。例えば複数回の撮像で得られた高さ画像の平均から、角度分布を作成することで、散発的なノイズの影響等を低減して安定度を向上させることができる。
【０２８０】
このように実施形態１３によれば、バラ積みピッキングのシミュレーションを行う際に、ワークの位置及び姿勢を既知としてシミュレーションしない。これに代えて、センサ部での撮像を模した画像を作成し、この模擬画像に対して三次元サーチ処理を行って、ワークの位置及び姿勢を得る。これによって得られた位置及び姿勢を使ってシミュレーションを行う。これにより、仮想的に得たワークの位置及び姿勢でなく、実際のワークの位置及び姿勢に応じた、より実際に近いシミュレーション結果を得ることができる。
【０２８１】
なお、さらに実際に近い模擬画像を得るために、ワークの表面のすべてを三次元計測可能とせず、ワークの表面の角度によって計測可能か否かを判断し、計測できない場合は模擬画像からデータを削除してもよい。例えば上述した実施形態１のように、領域推定部でもって無効画素をバラ積みデータから除去する。具体的には、図７１に示す計測データ記憶部５２に記憶された複数のワークの三次元計測データを構成する各点の、センサ部２の測定軸に対する傾斜角度情報に基づいて、三次元計測の信頼性が低い点を無効画素として除去する。そして無効画素を除去したデータに基づいて、角度閾値決定部５４で角度分布を演算する。
【０２８２】
このようにして、実施形態１３に係るロボットシミュレーション装置５００によれば、撮像シミュレーションを行う際の最適な角度閾値を実測データに基づいて決定でき、より実際に近いバラ積みシミュレーションを行える。
（実施形態１４）
【０２８３】
以上の例では、バラ積み状態のワーク群をセンサ部で実際に撮像した高さ画像のヒストグラム等に基づいて角度閾値を決定する例を説明した。さらに本発明は、実際に撮像した画像に対して三次元サーチを行い、このサーチ結果を用いて、計測できる角度範囲を決定することもできる。このような例を実施形態１４として、図７７Ａ、図７７Ｂに基づいて説明する。図７７Ａは、実際にバラ積み状態のワーク群を三次元計測して得られた点群データである三次元計測データのプロファイル、図７７Ｂは、これにサーチ結果を重ね合わせた状態を、それぞれ示している。ここでは、三次元サーチ結果をもとに、サーチモデルとして用いたワークモデルの面上の各点を、図７７Ｂに示すように計測データ上に配置する。そして各面上の点において、対応する計測データがあるかどうかをチェックし、計測できる角度範囲を決定する。図７７Ａでは、プロファイルの凸状部分が計測可能な領域、両側の平坦部分が計測不可能領域を示している。これに対して、同種のワークに対応するワークモデルでもって三次元サーチを行う。例えば円柱状のワークモデルで三次元サーチしたとすると、図７７Ｂに示すように、合致した部分、図において左側の三点は計測可能と判定し、合致していない部分、図７７Ｂにおいて右側の二点は、計測不可能と判定する。
【０２８４】
このような実施形態１４に係るロボットシミュレーション装置を用いたピッキング動作シミュレーションの手順やバラ積み画像の生成手順は、上述した図６６や図６７と同様の手順が利用できるので、詳細説明を省略する。三次元サーチのサーチ結果を用いた角度閾値の設定は、例えば図６７のステップＳ６７０１のシミュレーション環境の設定時に行う。ここで、シミュレーション環境の設定手順を、図７８のフローチャートに基づいて説明する。
【０２８５】
まずステップＳ７８０１において、三次元サーチ用のサーチモデルの登録を行う。ここでサーチモデルは、上述の通りワークモデル、ここでは三次元のＣＡＤデータを用いて登録できる。あるいは、センサ部で実際に撮像した高さ画像を用いて登録してもよい。また登録時に、サーチモデル上の各点において面の傾きを示す法線情報を保存しておく。
【０２８６】
次にステップＳ７８０２において、実際のワークのバラ積み状態を作り、三次元計測を行う。ここでは投影法で三次元計測を行い、点群データを取得しているが（図７７Ａ）、これに限らずステレオ計測やＴＯＦなど、他の方法を用いてもよい。
【０２８７】
次にステップＳ７８０３において、得られた点群データに対してサーチモデルを用いて三次元サーチを行い、各ワークの位置及び姿勢を決定する（図７７Ｂ）。
【０２８８】
そしてステップＳ７８０４において、サーチモデルの各点において対応する計測点が存在するか否かを確認する。ここでは三次元サーチの結果、決定されたワークの位置及び姿勢を用いて、サーチモデル上の点を三次元空間に配置する。この配置した点の近傍に三次元計測データが存在する場合は、当該点は計測ができているものと判定する（図７７Ｂ）。
【０２８９】
最後にステップＳ７８０５において、計測点が存在する点の傾き範囲に基づいて、角度閾値を決定する。ここでは三次元サーチで得られたサーチモデルの位置及び姿勢を用いて、計測できたワーク上の点の法線を、三次元空間に配置する。そして、この法線の傾きを計算する。このようにして計測できた点の法線角度範囲を集計することで、ワークが計測できる表面傾きの閾値を、角度閾値決定部でもって決定する。このようにして、三次元サーチの結果に基づいて、角度閾値を決定することができる。
【０２９０】
なお、三次元サーチで用いるサーチモデルを構成する各点に法線情報を持たせることで、三次元サーチの結果位置及び姿勢が得られたサーチモデルと重ねたワークの実測値である点群データに傾き情報が得られていなくても、サーチモデル側の傾き情報を利用することができる。例えば図３１Ｂにおいて、点で示す位置の傾き情報としてサーチモデル側の情報を利用することで、実測値が得られていない点（例えば計測不可とされた点）の情報を補うことが可能となる。この際、点群データの内、実測値が得られた点についても、サーチモデル側の傾き情報を利用してもよい。
【産業上の利用可能性】
【０２９１】
本発明のロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器は、ロボットのバラ積みピッキングの動作を検証する用途に好適に利用できる。
【符号の説明】
【０２９２】
１０００…ロボットシステム
１００、２００、３００、４００、５００、６００…ロボットシミュレーション装置
１…画像処理部
２…センサ部
３…表示部
４…操作部
５…ロボット本体
６…ロボットコントローラ
７…ロボット操作具
１０…シミュレーション環境設定部
１１…ワークモデル設定部
１２…表面状態パラメータ設定部
１３…角度閾値決定部
１４…容器モデル設定部
１５…センサモデル設定部
１６…姿勢条件設定部
１７…姿勢安定性パラメータ決定部
１８…除外ワーク選択部
１９…除外条件算出部
２０…バラ積みデータ生成部
２２…領域推定部
２３…バラ積みデータ記憶部
２４…原因解析部
２９…シミュレーションパラメータ調整部
３０、３０Ｂ…ピッキング動作シミュレート部
３１…バラ積み画像生成部
３２…位置姿勢検出部
３３…把持解算出部
４０…シミュレーション用データ生成部
５０…検出用設定部
５２…計測データ記憶部
５４…角度閾値決定部
６０…物理シミュレーション部
１１０…姿勢条件設定画面
１２０…配置条件設定画面
ＥＥＴ、ＥＥＴ２、ＥＥＴ３…エンドエフェクタ
ＡＲＭ…アーム
ＷＫ…ワーク
ＷＫ２…空洞を有するワーク
ＷＫ３…板状のワーク
ＷＫ４…樹脂製のワーク
ＷＫ５…金属製のワーク
ＷＫ６…表面と裏面の面積が異なるワーク
ＷＫ７…板状のワーク
ＷＫ８…円筒状のワーク
ＷＭ、ＷＭ６、ＷＭ７…ワークモデル
ＷＭ４…樹脂製ワークモデル
ＷＭ５…金属製ワークモデル
ＷＭＴ…Ｔ字型のワークモデル
ＷＭＣ…円筒形のワークモデル
ＰＲＪ…プロジェクタ
ＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４…カメラ
ＣＭＭ、ＣＭＭ２、ＣＭＭ３…カメラモデル
ＢＸ…収納容器
ＳＬ…中敷き
ＤＩＶ…間仕切り
ＤＳＡ…指定領域
ＷＭＦ…ワイヤーフレーム状のワークモデル
ＤＳＰ…指定頂点
ＷＭＤ…ワークモデルの展開図
ＰＭ…プロジェクタモデル
【図１】
2018144152.tif 000010
【図２】
2018144152.tif 000011
【図３】
2018144152.tif 000012
【図４】
2018144152.tif 000013
【図５】
2018144152.tif 000014
【図６】
2018144152.tif 000015
【図７】
2018144152.tif 000016
【図８】
2018144152.tif 000017
【図９】
2018144152.tif 000018
【図１０】
2018144152.tif 000019
【図１１】
2018144152.tif 000020
【図１２】
2018144152.tif 000021
【図１３】
2018144152.tif 000022
【図１４】
2018144152.tif 000023
【図１５】
2018144152.tif 000024
【図１６】
2018144152.tif 000025
【図１７】
2018144152.tif 000026
【図１８】
2018144152.tif 000027
【図１９】
2018144152.tif 000028
【図２０】
2018144152.tif 000029
【図２１】
2018144152.tif 000030
【図２２】
2018144152.tif 000031
【図２３】
2018144152.tif 000032
【図２４】
2018144152.tif 000033
【図２５】
2018144152.tif 000034
【図２６】
2018144152.tif 000035
【図２７】
2018144152.tif 000036
【図２８】
2018144152.tif 000037
【図２９Ａ】
2018144152.tif 000038
【図２９Ｂ】
2018144152.tif 000039
【図３０】
2018144152.tif 000040
【図３１】
2018144152.tif 000041
【図３２】
2018144152.tif 000042
【図３３】
2018144152.tif 000043
【図３４】
2018144152.tif 000044
【図３５】
2018144152.tif 000045
【図３６】
2018144152.tif 000046
【図３７】
2018144152.tif 000047
【図３８】
2018144152.tif 000048
【図３９】
2018144152.tif 000049
【図４０】
2018144152.tif 000050
【図４１】
2018144152.tif 000051
【図４２】
2018144152.tif 000052
【図４３】
2018144152.tif 000053
【図４４】
2018144152.tif 000054
【図４５】
2018144152.tif 000055
【図４６】
2018144152.tif 000056
【図４７】
2018144152.tif 000057
【図４８】
2018144152.tif 000058
【図４９】
2018144152.tif 000059
【図５０】
2018144152.tif 000060
【図５１】
2018144152.tif 000061
【図５２】
2018144152.tif 000062
【図５３】
2018144152.tif 000063
【図５４】
2018144152.tif 000064
【図５５】
2018144152.tif 000065
【図５６】
2018144152.tif 000066
【図５７】
2018144152.tif 000067
【図５８】
2018144152.tif 000068
【図５９】
2018144152.tif 000069
【図６０】
2018144152.tif 000070
【図６１】
2018144152.tif 000071
【図６２】
2018144152.tif 000072
【図６３】
2018144152.tif 000073
【図６４】
2018144152.tif 000074
【図６５】
2018144152.tif 000075
【図６６】
2018144152.tif 000076
【図６７】
2018144152.tif 000077
【図６８】
2018144152.tif 000078
【図６９】
2018144152.tif 000079
【図７０】
2018144152.tif 000080
【図７１】
2018144152.tif 000081
【図７２】
2018144152.tif 000082
【図７３】
2018144152.tif 000083
【図７４】
2018144152.tif 000084
【図７５】
2018144152.tif 000085
【図７６】
2018144152.tif 000086
【図７７】
2018144152.tif 000087
【図７８】
2018144152.tif 000088
【図７９】
2018144152.tif 000089