(57)【要約】【課題】ワークに複数の把持位置を登録する場合に、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較できるようにして客観的なデータに基づいて把持位置の取捨選択を可能にする。【解決手段】ロボットにより把持される複数の把持候補位置を、各サーチモデルに対応付けて設定する。サーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットにより把持するピッキング動作シミュレーションを繰り返し実行する。ピッキング動作シミュレーションで把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示する。【選択図】図３６
2019028773.tif 000002
【特許請求の範囲】
【請求項１】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、
ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、
上記ワークモデル設定部で設定された複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成部と、
上記ばら積みデータ生成部により生成されたばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するためのサーチモデル登録部と、
上記ロボットにより把持される複数の把持候補位置を、上記サーチモデル登録部により登録された各サーチモデルに対応付けて設定可能な把持位置設定部と、
上記ばら積みデータ生成部により生成されたばら積みデータから、上記サーチモデル登録部により登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理部と、
上記サーチ処理部によりサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットにより把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーション部と、
上記ピッキング動作シミュレーションで把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示する表示制御部とを備えていることを特徴とするロボットシミュレーション装置。
【請求項２】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、
ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、
上記ワークモデル設定部で設定された複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成部と、
上記ばら積みデータ生成部により生成されたばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するためのサーチモデル登録部と、
上記ロボットのハンド部の形状を複数入力可能なハンド部形状入力部と、
上記ばら積みデータ生成部により生成されたばら積みデータから、上記サーチモデル登録部により登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理部と、
上記サーチ処理部によりサーチに成功したワークモデルを上記ハンド部形状入力部で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するピッキング動作シミュレーション部と、
上記ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示する表示制御部とを備えていることを特徴とするロボットシミュレーション装置。
【請求項３】
請求項１または２に記載のロボットシミュレーション装置において、
上記ばら積みデータ生成部は、複数のワークモデルを用いて、ワークが重力の作用を受けて上記作業空間に配置される動作をシミュレーションする物理シミュレーションを実行するように構成され、上記ピッキング動作シミュレーション部によるピッキング動作シミュレーションが終了する都度、上記物理シミュレーションを新たに実行してデータを更新することを特徴とするロボットシミュレーション装置。
【請求項４】
請求項１に記載のロボットシミュレーション装置において、
上記表示制御部は、把持に使用されなかった各サーチモデル及び／または各把持候補位置を表示可能に構成されていることを特徴とするロボットシミュレーション装置。
【請求項５】
請求項２に記載のロボットシミュレーション装置において、
上記ピッキング動作シミュレーション部は、各ハンド部による把持が行えなくなるまでピッキング動作シミュレーションを継続するように構成され、
上記表示制御部は、上記ピッキング動作シミュレーション部によるピッキング動作シミュレーション終了時に残っているワークモデルの数をハンド部毎に表示可能に構成されていることを特徴とするロボットシミュレーション装置。
【請求項６】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、
ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップと、
上記ワークモデル設定ステップで設定した複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成ステップと、
上記ばら積みデータ生成ステップで生成したばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するサーチモデル登録ステップと、
上記ロボットにより把持される複数の把持候補位置を、上記サーチモデル登録ステップで登録した各サーチモデルに対応付けて設定する把持位置設定ステップと、
上記ばら積みデータ生成ステップで生成したばら積みデータから、上記サーチモデル登録ステップで登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理ステップと、
上記サーチ処理ステップでサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットにより把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーションステップと、
上記ピッキング動作シミュレーションで把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示する表示ステップとを備えていることを特徴とするロボットシミュレーション方法。
【請求項７】
作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、
ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップと、
上記ワークモデル設定ステップで設定した複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成ステップと、
上記ばら積みデータ生成ステップで生成したばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するサーチモデル登録ステップと、
上記ロボットのハンド部の形状を複数入力するハンド部形状入力ステップと、
上記ばら積みデータ生成ステップで生成したばら積みデータから、上記サーチモデル登録ステップで登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理ステップと、
上記サーチ処理ステップでサーチに成功したワークモデルを、上記ハンド部形状入力ステップで入力されたハンド部により把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーションステップと、
ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示する表示ステップとを備えていることを特徴とするロボットシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシミュレーション装置及びロボットシミュレーション方法に関する。
【背景技術】
【０００２】
例えば各種製品の組み立て現場では、通い箱等に収容されている複数の部品（ワーク）を産業用ロボットのアームに取り付けられたハンド部等のエンドエフェクタで把持して順次取り出し、所定場所まで搬送することが行われている。
【０００３】
産業用ロボットには視覚センサとなるロボットビジョンが組み合わされて使用される場合が増えてきている。ロボットビジョンを備えたロボットシステムは、まずロボットビジョンによって把持対象となるワークを撮像してワークの高さ情報を取得した上で、予め登録されているワークの適切な位置を把持（ピック）し、ワークを所定場所まで搬送して載置（プレース）する動作を繰り返し行うように構成されている。
【０００４】
また、搬送前のワークは整列した状態で積み重ねられている場合もあるが、整列されておらず、無作為に積み重ねられた非整列状態、即ちばら積みされている場合がある。ワークがばら積みされている場合には、通い箱毎にワークの位置及び姿勢が異なっていて一つとして同じ位置及び姿勢のワークが無いのが通常である。このようなばら積みされたワークを順次取り出して所定場所まで搬送して載置する作業は、ばら積みピッキングと呼ばれている。ばら積みピッキングは、整列されているワークをピッキングする場合に比べて難易度がはるかに高いので、ロボットの運用前に、ロボットシミュレーション装置によってロボットのピックやプレース動作のシミュレーションを三次元的に行うことがある（例えば、特許文献１〜４参照）。
【０００５】
このようなロボットシミュレーション装置では、ワークの三次元形状を有するＣＡＤモデルをワークモデルとして、仮想作業空間に無作為に配置して、ロボットによる取り出し作業をシミュレーションしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４１５３５２８号公報
【特許文献２】特開２０１５−２１５２５９号公報
【特許文献３】特開２００２−３３１４８０号公報
【特許文献４】特開２０１５−１７１７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ロボットによるばら積みピッキング作業を行う際には、１種のワークに対して複数の把持位置及び各把持位置における把持姿勢を登録するケースが多くある。これはワークの取り出し成功率を高めるためであるが、複数の把持位置を登録しておいたとしても、それらの全てに実効性があるとは限らない。すなわち、ワークの形状に基づけば把持位置を複数設定することは可能であったとしても、それら把持位置のうち、ばら積みピッキング作業でハンド部によって実際に把持できるのは一部であったり、ばら積みピッキング作業を行ってみると一部の把持位置の把持頻度が他の把持位置に比べて著しく低く、その把持位置の設定が殆ど意味をなしていない場合が想定される。
【０００８】
ところが、そのワークの把持に適した把持位置または不適な把持位置をユーザが他の把持位置と比較しながら判定することは容易なことではなく、特にばら積み状態のワークが対象の場合は経験に基づいた判定も困難な場合がある。
【０００９】
また、一般に、ばら積みピッキング作業で使用されるハンド部の形状は複数種あり、ハンド部の形状によってワークの取り出し成功率が大きく変動することは周知である。しかし、ハンド部の選定にあたってはワークの形状のみならず、ワークの個数、作業空間（収容箱の形状）等も大きく影響するので、ユーザが複数種のハンド部の中からどの形状のハンド部が適しているのかを他のハンド部との比較によって判定することは困難である。
【００１０】
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、ワークに複数の把持位置を登録する場合に、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較できるようにして客観的なデータに基づいて把持位置の取捨選択を可能にすること、また、複数のハンド部の形状を登録する場合に、ワークの取り出し成功率向上への寄与率が低いハンド部の形状を他のハンド部の形状と容易に比較できるようにして客観的なデータに基づいてハンド部の取捨選択を可能にすることにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、第１の発明は、作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、上記ワークモデル設定部で設定された複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成部と、上記ばら積みデータ生成部により生成されたばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するためのサーチモデル登録部と、上記ロボットにより把持される複数の把持候補位置を、上記サーチモデル登録部により登録された各サーチモデルに対応付けて設定可能な把持位置設定部と、上記ばら積みデータ生成部により生成されたばら積みデータから、上記サーチモデル登録部により登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理部と、上記サーチ処理部によりサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットにより把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーション部と、上記ピッキング動作シミュレーションで把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示する表示制御部とを備えていることを特徴とする。
【００１２】
この構成によれば、複数のサーチモデルを登録するとともに、各サーチモデルについて複数の把持候補位置を当該サーチモデルに対応付けて設定することが可能になる。登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行し、サーチに成功したワークモデルに対応付けられた複数の把持候補位置のそれぞれについて、ロボットによる把持が可能である場合には、その把持候補位置をロボットにより把持するピッキング動作をシミュレーションする。このシミュレーションを繰り返し実行し、把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示することができる。
【００１３】
第２の発明は、作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置であって、ワークの三次元形状をモデル化したワークモデルを設定するためのワークモデル設定部と、上記ワークモデル設定部で設定された複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成部と、上記ばら積みデータ生成部により生成されたばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するためのサーチモデル登録部と、上記ロボットのハンド部の形状を複数入力可能なハンド部形状入力部と、上記ばら積みデータ生成部により生成されたばら積みデータから、上記サーチモデル登録部により登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理部と、上記サーチ処理部によりサーチに成功したワークモデルを上記ハンド部形状入力部で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するピッキング動作シミュレーション部と、上記ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示する表示制御部とを備えていることを特徴とする。
【００１４】
この構成によれば、ロボットのハンド部の形状をハンド部形状入力部によって複数入力することが可能になる。ハンド部形状入力部で入力された各ハンド部を用いてピッキング動作シミュレーションを繰り返し実行し、各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができる。
【００１５】
第３の発明は、上記ばら積みデータ生成部は、複数のワークモデルを用いて、ワークが重力の作用を受けて上記作業空間に配置される動作をシミュレーションする物理シミュレーションを実行するように構成され、上記ピッキング動作シミュレーション部によるピッキング動作シミュレーションが終了する都度、上記物理シミュレーションを新たに実行してデータを更新することを特徴とする。この構成によれば、実運用により近いピッキング動作シミュレーションを行うことができるので、比較可能に表示される情報の信頼性が高まる。
【００１６】
第４の発明は、上記表示制御部は、把持に使用されなかったり、使用頻度が著しく低かった各サーチモデル及び／または各把持候補位置を表示可能に構成されていることを特徴とする。この構成によれば、ユーザが、ピッキング動作シミュレーションの結果、把持に使用されなかったり、使用頻度が著しく低かったサーチモデルや把持候補位置を知ることができるので、それらを除外して実運用することができる。
【００１７】
第５の発明は、上記ピッキング動作シミュレーション部は、各ハンド部による把持が行えなくなるまでピッキング動作シミュレーションを継続するように構成され、上記表示制御部は、上記ピッキング動作シミュレーション部によるピッキング動作シミュレーション終了時に残っているワークモデルの数をハンド部毎に表示可能に構成されていることを特徴とする。この構成によれば、ハンド部による把持の成功度合いが、ワークモデルの残数という具体的な形態で表示されるので、ユーザがハンド部を取捨選択し易くなる。
【００１８】
第６の発明は、作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップと、上記ワークモデル設定ステップで設定した複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成ステップと、上記ばら積みデータ生成ステップで生成したばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するサーチモデル登録ステップと、上記ロボットにより把持される複数の把持候補位置を、上記サーチモデル登録ステップで登録した各サーチモデルに対応付けて設定する把持位置設定ステップと、上記ばら積みデータ生成ステップで生成したばら積みデータから、上記サーチモデル登録ステップで登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理ステップと、上記サーチ処理ステップでサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットにより把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーションステップと、上記ピッキング動作シミュレーションで把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示する表示ステップとを備えていることを特徴とする。
【００１９】
第７の発明は、作業空間に積み上げられた複数のワークをロボットによって順次取り出すばら積みピッキング動作をシミュレーションするロボットシミュレーション方法であって、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップと、上記ワークモデル設定ステップで設定した複数のワークモデルを仮想的な作業空間に積み上げたばら積み状態のデータを生成するばら積みデータ生成ステップと、上記ばら積みデータ生成ステップで生成したばら積みデータに対し、ワークモデルの位置及び姿勢を検出するためのサーチ処理に用いる複数のサーチモデルを登録するサーチモデル登録ステップと、上記ロボットのハンド部の形状を複数入力するハンド部形状入力ステップと、上記ばら積みデータ生成ステップで生成したばら積みデータから、上記サーチモデル登録ステップで登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行するサーチ処理ステップと、上記サーチ処理ステップでサーチに成功したワークモデルを、上記ハンド部形状入力ステップで入力されたハンド部により把持するピッキング動作シミュレーションを繰り返し実行するピッキング動作シミュレーションステップと、ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示する表示ステップとを備えていることを特徴とする。
【発明の効果】
【００２０】
第１の発明によれば、複数のサーチモデルについて複数の把持候補位置を対応付けて設定することができ、登録したサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行し、サーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットによる把持が可能である場合には、その把持候補位置をロボットにより把持するピッキング動作をシミュレーションすることができる。このシミュレーションを繰り返し実行し、把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示することができるので、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較でき、客観的なデータに基づいて把持位置を取捨選択することができる。
【００２１】
第２の発明によれば、ロボットのハンド部の形状をハンド部形状入力部によって複数入力し、入力された各ハンド部を用いてピッキング動作シミュレーションを実行し、各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができるので、ワークの取り出し成功率向上への寄与率が低いハンド部の形状を他のハンド部の形状と容易に比較でき、客観的なデータに基づいてハンド部を取捨選択することができる。
【図面の簡単な説明】
【００２２】
【図１】ロボットシステムを用いてばら積みピッキング動作を行う様子を示す模式図である。
【図２】ロボットシステムの概略構成を示すブロック図である。
【図３】ロボットシステムの詳細構成を示すブロック図である。
【図４】センサ部の一例を示す斜視図である。
【図５】図５Ａはエンドエフェクタでワークを把持する例を示す模式図、図５Ｂは空洞を有するワークを内面から把持する例を示す模式図、図５Ｃは板状のワークを吸引して把持する例を示す模式図である。
【図６】図６Ａは収納容器にワークを無作為に投入して積み上げた例を示す模式断面図、図６Ｂはワークを床面上に積み上げた例を示す模式断面図、図６Ｃはワークを一定姿勢でトレイ上に配列した状態を示す斜視図である。
【図７】ロボットシミュレーションの手順を示すフローチャートである。
【図８】シミュレーション環境の設定手順を示すフローチャートである。
【図９】ワークのＣＡＤデータが存在する場合のサーチモデルの登録手順を示すフローチャートである。
【図１０】三次元ＣＡＤデータに基づいたワークモデルを示す斜視図である。
【図１１】図１０に示すワークモデルの高さ画像を示す図である。
【図１２】三次元ＣＡＤデータに基づいた別のワークモデルを示す斜視図である。
【図１３】図１２に示すワークモデルの高さ画像を示す図である。
【図１４】ワークのＣＡＤデータが存在する場合のサーチモデルの登録手順の別の例を示すフローチャートである。
【図１５】ワークのＣＡＤデータが無い場合のサーチモデルの登録手順の例を示すフローチャートである。
【図１６】ＣＡＤデータが無い場合のワークモデルの高さ画像を示す図である。
【図１７】特徴点を配置した高さ画像を示す図である。
【図１８】ハンドモデルの登録手順の例を示すフローチャートである。
【図１９】三次元ＣＡＤデータに基づいたハンドモデルを示す側面図である。
【図２０】ハンドモデルの断面を示す図である。
【図２１】図２１Ａは、把持姿勢一覧が表示された把持位置設定用画面を示す図、図２１Ｂは、把持姿勢設定領域が表示された把持位置設定用画面を示す図である。
【図２２】ハンドモデルがワークの把持候補位置を把持可能な位置に配置された状態を示す図である。
【図２３】６つのサーチモデルのそれぞれについてハンドモデルが把持候補位置を把持可能な位置に配置された状態を示す図である。
【図２４】図２４Ａはポリゴン数削減前のワークモデルを示す図、図２４Ｂはポリゴン数削減後のワークモデルを示す図である。
【図２５】ワークの元の三次元形状が大きく崩れるまでポリゴン数を削減した後のワークモデルを示す図である。
【図２６】物理シミュレーション画像と高さ画像とを同時に表示した画面を示す図である。
【図２７】視点を変えて見た物理シミュレーション画像と高さ画像とを同時に表示した画面を示す図である。
【図２８】高さ画像の中でワークモデルを検出した状態を表示する画面を示す図である。
【図２９】図２９Ａは三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理前である場合を示す図であり、図２９Ｂは圧縮処理前のワークモデルと、圧縮処理前のワークに対するサーチ結果（サーチモデルの各特徴点の位置）を重畳表示した図である。
【図３０】図３０Ａは三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理後である場合を示す図であり、図３０Ｂは圧縮処理後のワークモデルと、圧縮処理前のワークに対するサーチ結果（サーチモデルの各特徴点の位置）を重畳表示した図である。
【図３１】三次元サーチの結果（サーチモデルの各特徴点の位置）の重畳表示を二次元表示した場合と三次元表示した場合の図である。
【図３２】図３２Ａはハンドモデルと三次元計測点とが干渉していない場合を示す図であり、図３２Ｂはハンドモデルと三次元計測点とが干渉している場合を示す図である。
【図３３】ピッキング動作シミュレーション中の画像を示す図である。
【図３４】ピッキング動作シミュレーションを複数回行って結果を蓄積する手順を示す統計蓄積フローチャートである。
【図３５】ピッキング動作シミュレーションの結果を把持登録番号順にリスト表示した表である。
【図３６】ピッキング動作シミュレーションの結果を回数降順にリスト表示した表である。
【図３７】ピッキング動作シミュレーションの結果をハンド部の形状別にリスト表示した表である。
【図３８】運用時の手順を示すフローチャートである。
【図３９】撮像範囲内に注目領域を設定した場合を示す図である。
【図４０】露光時間と有効画素数との関係を示すグラフである。
【図４１】露光時間の設定要領を示す図である。
【図４２】露光時間設定用画面であり、露光時間が推奨値にある場合を示す図である。
【図４３】露光時間設定用画面であり、露光時間が推奨値よりも短い場合を示す図である。
【図４４】露光時間設定用画面であり、露光時間が推奨値よりも長い場合を示す図である。
【図４５】図４５Ａは三次元計測部で得られた計測データに基づいて生成した高さ画像を、やや斜め方向から三次元表示した点群と、サーチ結果の位置にサーチモデルの特徴点を重畳表示した図であり、図４５Ｂは、図４５Ａに加え、三次元計測部で計測できていないワーク表面を他の面との関連性を利用して推定し、別の面のサーチモデルの特徴点も含めて重畳表示した図である。
【図４６】運用時の別の手順を示すフローチャートである。
【図４７】図４７Ａは面の関連性を利用せずに干渉判定して誤った判定結果が出ている場合を示す画像であり、図４７Ｂは面の関連性を利用して干渉判定して正しい判定結果が出ている場合を示す画像である。
【図４８】干渉判定を行っているときに表示部に表示される画像を示す図である。
【図４９】立方体形状のワークがばら積みされている場合を説明する図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
【００２４】
図１は、本発明の実施形態に係るロボットシステム１０００の構成例を示す模式図である。この図１は、各種製品の製造工場等にある作業空間に積み上げられた複数のワークＷＫを、ロボットＲＢＴを用いて順次取り出し、所定の場所に設置されているステージＳＴＧまで搬送して該ステージＳＴＧ上に載置するばら積みピッキングを行う例について示している。
【００２５】
ロボットシステム１０００はロボットＲＢＴとロボットＲＢＴを制御するロボットコントローラ６とを備えている。ロボットＲＢＴは、産業用の汎用ロボットであり、ベース部が工場等の床面に対して固定されている。ロボットＲＢＴは、例えばマニピュレータ等とも呼ばれており、６軸制御が可能に構成されている。このロボットＲＢＴは、ベース部から延びるアーム部ＡＲＭと、アーム部ＡＲＭの先端部に設けられたエンドエフェクタＥＥＴとを備えている。アーム部ＡＲＭは、可動部としての関節部を複数備えた多関節型に構成することができる。アーム部ＡＲＭの各関節部の動作及びアーム部ＡＲＭ自体の回転動作によってエンドエフェクタＥＥＴを可動範囲内の所望の位置まで移動させることができる。
【００２６】
エンドエフェクタＥＥＴは、ワークＷＫを把持するハンド部等で構成することができる。エンドエフェクタＥＥＴは、図５Ａに示すようにワークＷＫの外側を挟み込んで把持する構造のエンドエフェクタＥＥＴ１、図５Ｂに示すように空洞部を有するワークＷＫ２の内部に爪部を挿入して拡開させることによって保持する構造のエンドエフェクタＥＥＴ２、図５Ｃに示すように板状のワークＷＫ３を吸引して保持するエンドエフェクタＥＥＴ３等があり、いずれのエンドエフェクタも使用することができる。また、本明細書で「把持」とは、図５Ａに示すワークＷＫの外側を挟み込む方法、空洞部に爪部を挿入して拡開させる方法、吸引する方法等の全ての例を含む意味で使用する。
【００２７】
ロボットＲＢＴは、ロボットコントローラ６によって制御される。ロボットコントローラ６はアーム部ＡＲＭの動作やエンドエフェクタＥＥＴの開閉動作等を制御する。またロボットコントローラ６は図２に示すロボット設定装置１００から、ロボットＲＢＴの制御に必要な情報を取得する。例えば、図１に示す収納容器ＢＸに無作為に投入された多数の部品であるワークＷＫの三次元形状を、三次元カメラや照明等のセンサ部２を使用して取得し、ロボット設定装置１００でワークＷＫの位置や姿勢を検出して、その情報をロボットコントローラ６が取得する。
【００２８】
ロボットシステム１０００の機能ブロック図を図２に示す。この図に示すロボットシステム１０００は、ロボットＲＢＴ及びロボットコントローラ６の他に、ロボット設定装置１００と、センサ部２と、表示部３と、操作部４と、ロボット操作具７とを備える。
【００２９】
操作部４では、後述する物理シミュレーション、ピッキング動作シミュレーション、画像処理に関する各種設定を行う。またセンサ部２で、ワークＷＫを撮像してワークＷＫの三次元形状を取得する。さらに表示部３で、設定や動作状態の確認、シミュレーションの確認等を行う。さらに、ロボット設定装置１００の内部に設けられているロボットシミュレーション装置２００や画像処理装置３００が各種シミュレーション、三次元サーチ、干渉判定、把持解の算出等を行う。
【００３０】
一方、ロボットコントローラ６はロボット設定装置１００から出力される信号に従い、ロボットＲＢＴの制御を行うように構成された周知の部材である。またロボット操作具７は、ロボットＲＢＴの動作設定を行う。なお、図２の例では操作部４とロボット操作具７を別個の部材としているが、これらを共通の部材としてもよい。
【００３１】
センサ部２は、ロボットビジョンなどと呼ばれる、作業空間やワークＷＫを撮像する部材であり、この実施形態では、ワークＷＫが少なくとも撮像対象物となる。センサ部２で撮像された画像から、ばら積みされたワークＷＫの三次元形状を示す三次元形状データを取得することが可能になる。なお三次元形状を取得する方法は、例えば、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法（白色干渉法）、ＴＯＦ方式などがあり、これらの方法のうち、どの方法を用いてもよい。各方法は、従来から周知であるため、詳細な説明は省略する。本実施形態においては、パターン投影法のうち、周期的な照度分布を有するパターン光を撮像対象物に照射し、撮像対象物の表面で反射した光を受光する位相シフト法を用いている。
【００３２】
センサ部２は、測定対象物であるワークＷＫの形状を測定する形状測定装置４００の一構成要素でもある。形状測定装置４００は、ロボット設定装置１００の一部とすることができるが、別部材として構成することもできる。センサ部２の具体的な構成は、三次元形状の計測技術に応じて決定される。このセンサ部２は、カメラ、照明又はプロジェクタ等を備える。例えば位相シフト法でワークＷＫの三次元形状を計測する場合は、センサ部２として図４に示すように、プロジェクタ（投光部）ＰＲＪと、複数のカメラ（受光部）ＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４とを備える。プロジェクタＰＲＪは、ワークＷＫに光を照射する部材である。カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４は、プロジェクタＰＲＪにより投光されてワークＷＫの表面で反射した光を受光する撮像素子を有する部材である。投光部の光源は、例えば複数の発光ダイオード、液晶パネル、有機ＥＬパネル、デジタルマイクロミラーデバイス（ＤＭＤ）等で構成することができる。
【００３３】
なおセンサ部２は、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４やプロジェクタＰＲＪといった複数の部材で構成する他、これらを一体的に構成してもよい。例えばカメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４やプロジェクタＰＲＪを統合してヘッド状とした３Ｄ撮像ヘッドを、センサ部２とすることができる。
【００３４】
また三次元形状データの生成自体を、センサ部２で行うこともできる。この場合、センサ部２に三次元形状データの生成機能を実現する画像処理ＩＣ等を設ける。あるいは、三次元形状データの生成を、画像処理装置３００側で行わず、センサ部２で撮像した生画像を、画像処理装置３００側で画像処理して三次元画像等の三次元形状データを生成する構成としてもよい。
【００３５】
さらに、センサ部２で撮像された画像に基づいて、キャリブレーションを実行することにより、実際のワークＷＫの位置座標（エンドエフェクタＥＥＴの移動位置の座標）と、表示部３上に表示された画像上の位置座標とをリンクさせることができる。
【００３６】
ロボット設定装置１００は、センサ部２で得られたワークＷＫの三次元形状データに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。このロボット設定装置１００は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用に設計された画像処理コントローラ、専用のハードウェアで構成することができる。また、グラフィックボードなどのハードウェアを画像検査処理に特化させた専用のコンピュータに、画像処理プログラムをインストールした構成とすることもできる。
【００３７】
なお図２の例では、センサ部２やロボットコントローラ６等をロボット設定装置１００とは別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部２と画像処理装置１００とを一体化したり、あるいはロボットコントローラ６をロボット設定装置１００に組み込むこともできる。このように、図２に示す部材の区分けは一例であって、複数の部材を統合させることもできる。例えばロボット設定装置１００を操作する操作部４と、ロボットコントローラ６を操作するロボット操作具７とを、共通の部材としてもよい。
【００３８】
ただし、センサ部２はロボットＲＢＴと別体としている。すなわち、本願発明はセンサ部２をロボット本体５のアーム部ＡＲＭに設けない、オフハンド形式と呼ばれる形態を対象としている。いいかえると、センサ部２をエンドエフェクタＥＥＴに設ける、オンハンド形式等と呼ばれる態様は、本願発明に含まれない。
【００３９】
表示部３は、ロボット設定装置１００で取得されたワークＷＫの三次元形状を表示させたり、各種シミュレーション画像を表示させたり、各種設定や動作状態の確認を行うための部材であり、例えば、液晶モニタや有機ＥＬディスプレイ、ＣＲＴ等を利用できる。操作部４は、各種シミュレーションや画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部３をタッチパネルとすることで、操作部４と表示部３を一体化することもできる。
【００４０】
例えばロボット設定装置１００を、画像処理プログラムをインストールしたコンピュータで構成した場合、表示部３上には画像処理プログラムのグラフィカルユーザインターフェース（ＧＵＩ）画面が表示される。表示部３上に表示されたＧＵＩ上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部３を各種の設定を行うための設定部として利用できる。
【００４１】
ロボットコントローラ６は、センサ部２で撮像した情報に基づいてロボットの動作を制御する。またロボット操作具７は、ロボットＲＢＴの動作設定を行うための部材であり、ペンダントなどが利用できる。
【００４２】
ワークＷＫは、図１に示すように複数個が収容容器ＢＸに無作為に収納されている。このような作業空間の上方には、センサ部２が配置されている。ロボットコントローラ６は、センサ部２で得られたワークＷＫの三次元形状に基づいて、複数のワークＷＫの内から、把持対象のワークＷＫを特定して、このワークＷＫを把持するよう、ロボットＲＢＴを制御する。そして、ワークＷＫを把持したまま、アーム部ＡＲＭを動作させて予め定められた載置位置、例えばステージＳＴＧ上まで移動させ、所定の姿勢でワークＷＫを載置する。いいかえると、ロボットコントローラ６は、センサ部２及びロボット設定装置１００で特定されたピッキング対象のワークＷＫをエンドエフェクタＥＥＴで把持して、把持したワークＷＫを所定の基準姿勢にて、載置場所（ステージＳＴＧ）に載置してエンドエフェクタＥＥＴを開放するようにロボットＲＢＴの動作を制御する。ステージＳＴＧは、例えばコンベアベルト上やパレット等を挙げることができる。
【００４３】
ここで本明細書においてばら積みピッキングとは、図６Ａに示すような収納容器ＢＸに入れられて無作為に積み上げられたワークＷＫを、ロボットＲＢＴで把持して、所定の位置に載置する他、図６Ｂに示すように、収納容器を用いずに所定の領域に積み上げられたワークＷＫに対して把持、載置を行う例、あるいは図６Ｃに示すように所定の姿勢で並べられて積み上げられたワークＷＫを順次把持、載置する例も含む意味で使用する。また、必ずしもワークＷＫ同士が積み重ねられている状態であることは要さず、ワークＷＫ同士の重なりがない状態で平面上にランダムに置かれたワークＷＫについても、本明細書においてはばら積みと呼ぶ（順次ピッキングされていき、ピッキングの終盤でワークＷＫ同士の重なりがない状態となった場合でも依然としてばら積みピッキングと呼ばれるのと同じ理由である）。なお、本発明はばら積みピッキングに必ずしも限定されるものでなく、ばら積みされていないワークＷＫをピックアップする用途にも適用できる。
【００４４】
また、図１の例ではセンサ部２を作業空間の上方に固定しているが、センサ部２の固定位置は、作業空間を撮像できる位置であればよく、例えば作業空間の斜め上方や側方、下方、斜め下方など、任意の位置に配置することができる。ただし、アーム部ＡＲＭ上のような、可動する不定位置にセンサ部２を配置する態様は除かれる。さらにセンサ部２が有するカメラや照明の数も、１個に限らず複数個としてもよい。さらにまたセンサ部２やロボットＲＢＴ、ロボットコントローラ６との接続は、有線接続に限られず、周知の無線接続としてもよい。
【００４５】
ロボットシステム１０００でばら積みピッキング動作を行うにあたり、予めばら積みピッキング動作を行わせるための設定を含めたティーチングを行うこともできる。具体的には、ワークＷＫのどの部位を、エンドエフェクタＥＥＴがどのような姿勢で把持するのか、把持位置及び姿勢などの登録を行う。このような設定は、ペンダント等のロボット操作具７で行うことができる。また、後述するように、実際のロボットを操作せずに、ビジョン空間上で設定を行うこともできる。
【００４６】
表示部３は、ワークＷＫの三次元形状を仮想的に表現するワークモデルや、エンドエフェクタＥＥＴの三次元形状を仮想的に表現する、三次元ＣＡＤデータで構成されたエンドエフェクタモデルを、仮想的な三次元空間上でそれぞれ三次元状に表示させる。さらにこの表示部３は、ワークモデルの基本方向画像を六面図として表示させることもできる。これにより、ワークモデルの各姿勢を六面図で表示させて把持位置の設定作業を行えるようになり、従来面倒であった把持位置の設定作業を容易に行えるようになる。
【００４７】
（ロボットシミュレーション）
ロボットシステム１０００は、作業空間に積み上げられた複数のワークＷＫをロボットＲＢＴによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置２００を備えている。ロボットシミュレーション装置２００は、画像処理装置３００と一体化することができ、画像処理装置３００と共にロボット設定装置１００の内部に設けることができる。画像処理装置３００は、作業空間に積み上げられた複数のワークＷＫを把持して順次取り出すピッキング動作を行うロボットＲＢＴの制御に用いられる装置である。
【００４８】
図３に示すように、ロボット設定装置１００は、ワークモデル設定部２０、データ容量圧縮部２１、物理シミュレーション部２２、ばら積みデータ生成部２３、サーチ処理部２４、ピッキング動作シミュレーション部２５、表示制御部２６、サーチモデル登録部２７、把持位置設定部２８、三次元計測部３０、干渉判定部３１、把持位置決定部３２、高さ画像生成部３３、画素判定部３４、ハンド部形状入力部３５、露光制御部４０及び露光時間設定部４１を備えている。これら各部は、ロボットシミュレーション装置２００または画像処理装置３００を構成しており、ハードウェアで構成することもできるし、ソフトウェアで構成することもできる。またこれら各部を全て一体化して１つの装置にすることもできるし、任意の一部分を他の部分と別にして複数の装置でロボット設定装置１００を構成することもできる。またこれら各部を例えばマイクロプロセッサ（ＭＰＵ）やＣＰＵ、ＬＳＩ、ＦＰＧＡやＡＳＩＣ等のゲートアレイ、ＤＳＰ等のハードウェアやソフトウェア、あるいはこれらの混在により実現できる。また必ずしも各構成要素が図３等に示した構成と同一でなくてもよく、その機能が実質的に同一であるもの、及び一つの要素が図３に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。
【００４９】
例えば、露光制御部４０及び露光時間設定部４１は、センサ部２に設けることができる。また、表示制御部２６は表示部３に設けることができる。また、ロボット設定装置１００には各種情報を記憶するための記憶部４２も設けられている。記憶部４２は、半導体メモリやハードディスク等で構成することができる。また、記憶部４２には、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の各種記憶媒体に記憶されている情報を読み取り可能な読み取り装置を設けることもできる。
【００５０】
ロボットシステム１０００の運用前、即ち、実際の作業現場でワークＷＫの把持及び載置作業を行う前に、ロボットシミュレーション装置２００によってロボットＲＢＴの把持動作や載置動作のシミュレーションを三次元的に行うことができるように構成されている。ロボットシミュレーションでは、複数のワークモデルを無作為に積み上げたばら積み状態を生成する物理シミュレーションと、物理シミュレーションで生成されたばら積み状態のデータを利用してワークモデルの位置及び姿勢を検出し、ロボットＲＢＴによるピッキング動作のシミュレーションを実行するピッキング動作シミュレーションとが行われる。以下、ロボットシミュレーション装置２００及びロボットシミュレーション装置２００によって実現されるロボットシミュレーション方法について図７に示すロボットシミュレーションフローチャートに基づいて具体的に説明する。
【００５１】
ロボットシミュレーションを開始する際には、図７に示すロボットシミュレーションフローチャートの開始後、ステップＳＡ１においてシミュレーションを実行する環境（シミュレーション環境）を設定する。シミュレーション環境の設定には、ばら積みをさせるワークの数、収納容器ＢＸの情報、床の情報、センサ部２を構成するカメラＣＭＥやプロジェクタＰＲＪの設計情報等が挙げられる。またピッキング動作シミュレーション時には、収納容器ＢＸに対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。
【００５２】
シミュレーション環境の主要な設定手順を図８のシミュレーション環境設定手順フローチャートに示す。このシミュレーション環境設定手順フローチャートの開始後のステップＳＢ１では、ワークＷＫのサーチモデルを登録する。その後のステップＳＢ２では、ロボットＲＢＴのハンドモデルを登録する。ステップＳＢ１のワークＷＫのサーチモデルとは、後述するサーチ処理を実行する際に使用されるワークＷＫの形状を表したモデルである。ステップＳＢ２のロボットＲＢＴのハンドモデルとは、ハンド部（エンドエフェクタＥＥＴ）の形状を表したモデルである。ステップＳＢ１とステップＳＢ２は順番を入れ替えてもよい。また、通い箱など、ワークを収納する収納容器ＢＸをモデル化した容器モデルを設定できるようにしてもよい。
【００５３】
ステップＳＢ１でワークＷＫのサーチモデルを登録する要領は、図９のサーチモデル登録フローチャートに示す通りである。図９のサーチモデル登録フローチャートでは、開始後、ステップＳＣ１ではワークＷＫの三次元ＣＡＤデータ（ＣＡＤモデル）を読み込んで、ロボットシミュレーション装置２００が有する記憶部４２に一旦記憶させておく。三次元ＣＡＤデータに基づいたワークモデルの例を図１０に示す。ＣＡＤデータは、ワークモデルのデータであり、従来から一般的に用いられているフォーマットのデータを使用することができる。
【００５４】
この実施形態では、ＣＡＤデータのフォーマットとして最もシンプルなＳＴＬ形式を用いている。ＳＴＬ形式は、三角形のポリゴン情報（３点の座標とその面の法線ベクトル）の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
【００５５】
ステップＳＣ１は、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップであり、図３に示すロボット設定装置１００が有するワークモデル設定部２０で行われる。このステップＳＣ１で読み込んだＣＡＤデータのポリゴン数は、数千個から数万個ある場合がある。
【００５６】
ステップＳＣ１に続くステップＳＣ２では、ＣＡＤモデルの外接直方体を規定し、この外接直方体の中心をＣＡＤの原点に補正する原点補正処理を行う。ワークモデルの原点は、三次元ＣＡＤデータが有する座標情報から、ロボット設定装置１００が自動的に決定する。例えばワークモデルの三次元ＣＡＤデータに対して、ワークモデルに外接する仮想直方体を規定し、この仮想直方体の重心をワークモデルの原点として設定することができる。
【００５７】
その後、ステップＳＣ３に進み、ステップＳＣ１で読み込んだＣＡＤモデルの六面、ＣＡＤモデルを「上」、「下」、「左」、「右」、「前」、「後」の各方向から見た高さ画像データを生成する。すなわち、ＣＡＤモデルの平面図、底面図、左側面図、右側面図、正面図、背面図となるように、６つの高さ画像データを生成する。この高さ画像データから高さ画像が得られる。「上」はＺ軸の正方向（プラス側）から見た高さ画像、「下」はＺ軸の負方向（マイナス側）から見た高さ画像、「左」はＸ軸の負方向から見た高さ画像、「右」はＸ軸の正方向から見た高さ画像、「前」はＹ軸の負方向から見た高さ画像、「後」はＹ軸の正方向から見た高さ画像を、それぞれ示している。ただ、これらは一例であって、異なる座標系を用いてもよいし、Ｘ−Ｙ平面におけるＸ＝Ｙの直線を軸として、この軸と互いに直交する座標系に基づいて、各軸の正負方向から見た高さ画像を用いてもよい。また、三次元ＣＡＤデータから、高さ画像を生成する際、必ずしもＣＡＤデータの軸に直交した方向（「上」、「下」、「左」、「右」、「前」、「後」）から見た高さ画像である必要はなく、例えばワークモデルの姿勢（視点）を任意に変えて、変えた状態の視点から高さ画像を生成するようにしてもよい。
【００５８】
このステップＳＣ３では、ＣＡＤモデルが三次元ＣＡＤデータからなるものであるので、三次元ＣＡＤデータをＣＡＤモデルのＸ、Ｙ、Ｚ座標のそれぞれについてプラス方向及びマイナス方向の各方向から見たときの高さ画像に変換することで、ＣＡＤモデルの六面について高さ画像を得ることができる。図１１には、図１０に示すワークモデルを上下左右前後の各方向から見た高さ画像を示している。図１０では、白くなるほど（色が明るくなるほど）高くなるように表示している。
【００５９】
ステップＳＣ３に続くステップＳＣ４では、ステップＳＣ３で生成した６つの高さ画像の中で同じ見え方になる高さ画像を削除する。見え方の一致／不一致は、ワークの上下（Ｚ軸の正負方向）、前後（Ｙ軸の正負方向）、左右（Ｘ軸の正負方向）から見た、計六面の高さ画像を高さ画像データに基づいて生成し、高さ画像が一致しているか否かを確認する。ここでは９０°の刻み角度で回転させて一致しているか否かを確認し、他の面と一致する見え方となる面は、サーチモデルの登録対象から除外する。このような除外は、ユーザが手動で行うこともできるし、ロボットシミュレーション装置２００または画像処理装置３００側で自動で行わせてもよいし、あるいはこれらを組み合わせて行うようにしてもよい。
【００６０】
具体例について説明すると、例えば、ワークＷＫが直方体であった場合には、ＣＡＤモデルを上から見た高さ画像と下から見た高さ画像とが同じになり、この場合には、いずれか一方を削除する。ＣＡＤモデルを左から見た高さ画像と右から見た高さ画像も同じになるので一方を削除する。また、ＣＡＤモデルを前から見た高さ画像と後から見た高さ画像も同じになるので一方を削除する。これにより、サーチモデルの数を減らすことができるので、後述する各処理の速度を向上させることができる。ワークＷＫが複雑な形状であっても、一方向から見た高さ画像と他方向から見た高さ画像が同じになることがあり、この場合も一方の高さ画像を削除することができる。ワークＷＫが立方体の場合は６面のうち、５面を削除することができる。
【００６１】
また、例えば、ステップＳＣ１で図１２に示すような三次元形状を持ったワークモデルを読み込んだ場合、図１３に示すように、ワークモデルを各方向から見た高さ画像を得ることができる。図１２に示すワークモデルの場合は、Ｘ軸のプラス方向から見た高さ画像と、Ｘ軸のマイナス方向から見た高さ画像とが同じになるので、ステップＳＣ４において一方を省略している。さらに、Ｙ軸のプラス方向から見た高さ画像と、Ｙ軸のマイナス方向から見た高さ画像とが同じになるので、ステップＳＣ４において一方を省略している。よって、ステップＳＣ４を経ることで図１３に示すように高さ画像が４つになっている。
【００６２】
その後、ステップＳＣ５に進み、ステップＳＣ４で残った高さ画像データを保存する。保存する高さ画像データがＣＡＤモデルの上下左右前後のいずれの方向から見た画像であるかを示す情報、即ち方向に関する情報を当該高さ画像データに付与し、この方向に関する情報と高さ画像データとを関連付けてロボットシミュレーション装置２００の記憶部４２に保存しておく。これにより、上下左右前後の各面の関係性情報を持った状態で各高さ画像データを保存しておくことができるので、１つのワークモデルを異なる方向から見た複数の高さ画像データを相互に関連付けてロボットシミュレーション装置２００または画像処理装置３００に登録しておくことが可能になる。
【００６３】
したがって、高さ画像データを記憶部４２から読み出したときに、例えば、ＣＡＤモデルの６方向から見た高さ画像を関連付けて得ることができる。以上のように、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することが可能になる。サーチモデルは、作業空間に積み上げられたワークＷＫの位置及び姿勢を検出するサーチ処理に用いられるモデルであり、複数種登録しておくこともできる。
【００６４】
図９に示すサーチモデル登録フローチャートでは、ステップＳＣ５で面の関係性情報を保存するようにしているが、これに限られるものではなく、例えば、図１４に示すサーチモデル登録フローチャートのように、ステップＳＤ１〜ＳＤ４までは図９に示すフローチャートのステップＳＣ１〜ＳＣ４と同じであるが、ステップＳＤ５においては面の関係性情報を保存することなく、高さ画像データのみ保存するようにしてもよい。
【００６５】
図９に示すサーチモデル登録フローチャートはワークＷＫのＣＡＤデータが存在している場合の要領であるが、仮にワークＷＫのＣＡＤデータが無い場合には、図１５に示すワークＷＫのＣＡＤデータが無い場合のサーチモデルの登録手順の例を示すフローチャートに従い、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することができる。図１５に示すサーチモデル登録フローチャートの開始後、ステップＳＥ１では、登録したい面を上向きにしたワークＷＫを平面上に置き、三次元計測を行う。この三次元計測は、ロボットシステム１０００のセンサ部２及び三次元計測部３０を利用して行うことができる。三次元計測により得られた計測データは三次元計測部３０から出力され、計測データに基づいて、ワークＷＫの登録したい面の高さ画像データを得ることができる。こうして得られた高さ画像の一例を図１６に示す。
【００６６】
図１５に示すフローチャートのステップＳＥ１に続くステップＳＥ２では、ステップＳＥ１で得られた高さ画像データで得られた高さ画像をサーチモデルとして登録する。登録後、ステップＳＥ３に進み、サーチに必要な分、登録し終えたか否かを判定する。この判定はユーザが行うことができるが、ロボットシミュレーション装置２００または画像処理装置３００に行わせるようにしてもよい。すなわち、ワークＷＫを上下左右前後の各方向から見た形状が全て異なれば、六面の全てについてステップＳＥ１及びステップＳＥ２を行うのが好ましいが、上述した長方形の場合や図１２に示す形状のように同じ形状の面がある場合には六面の全てについて行わなくてもよい。ステップＳＥ３でサーチに必要な分、登録し終えたら、終了する。
【００６７】
以上のようにしてワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するサーチモデル登録ステップを行うことができる。サーチモデル登録ステップは、図３に示すロボット設定装置１００が有するサーチモデル登録部２７で行われる。
【００６８】
図１７に示すように、高さ画像に特徴点Ｂ、Ｃを配置することができる。特徴点Ｂ、Ｃは、サーチモデルの形状を表す点であり、１つの高さ画像の中に複数配置することができる。特徴点は、サーチモデルの周縁部に沿って配置される外形状指示点Ｂと、サーチモデルの面内に配置される面形状指示点Ｃとを含んでいる。外形状指示点Ｂは、サーチモデルを構成する各面の外形状を示す点であり、面の外形線上を所定の間隔をあけて配置される。面形状指示点Ｃは、サーチモデルを構成する各面の周縁部を除いた内側において所定の間隔をあけて配置される。特徴点を配置することで、特徴点を用いてサーチモデルの概略形状を把握することができ、取り扱うデータ量が少なくて済む。外形状指示点Ｂと面形状指示点Ｃとの色は変えるのが好ましい。外形状指示点Ｂと面形状指示点Ｃは、表示部３に表示される。
【００６９】
次に、図８に示すシミュレーション環境設定手順フローチャートのステップＳＢ２で行うロボットＲＢＴのハンドモデルの登録要領について説明する。ロボットＲＢＴのハンドモデルの登録要領は、図１８のハンドモデル登録手順フローチャートに示しており、このフローチャートの開始後のステップＳＦ１では、ハンド部（エンドエフェクタＥＥＴに等しい）のポリゴンデータ（ＣＡＤデータ）を読み込む。このステップＳＦ１では、ハンド部のポリゴンデータを読み込むことから、ハンド部の形状を入力することができるステップである。従って、ステップＳＦ１は、ロボットＲＢＴのハンド部の形状を入力するハンド部形状入力ステップであり、このハンド部形状入力ステップは、図３に示すロボット設定装置１００が有するハンド部形状入力部３５で行われる。
【００７０】
ステップＳＦ１に続くステップＳＦ２では、ハンド部の断面を作成する方向を決定する。図１９に示すハンドモデルに基づいて説明すると、ハンドモデルに軸Ａを設定しておく。軸Ａは、ハンドモデルの中心部を通り、かつ、ハンドモデルの長手方向に延びている。この軸Ａと直交する方向の断面を作成する。作成する断面は、１つではなく、ハンドモデルの先端から基端に亘って複数箇所の断面を作成する。この例では、断面１〜断面５の５つの断面を作成する場合を示しているが、断面の作成数は任意に設定することができる。断面を作成する位置は、ポリゴンデータの頂点位置に設定することができる。作成した断面を図２０に示す。
【００７１】
図１８に示すフローチャートのステップＳＦ３では、ステップＳＦ２で作成した断面を利用して断面モデルを作成する。つまり、断面の形状と、ステップＳＦ１でハンドモデルに設定した軸Ａに対する断面の位置との情報とにより、ハンド部の断面モデルを作成することができる。また、断面モデルの作成方法は別の方法であってもよく、例えば、軸Ａ方向に一定距離ごとに断面を作成し、同じ形状の断面を結合する方法であってもよい。
【００７２】
ロボットＲＢＴのハンド部の形状は様々あり、図１９に示す形状以外にも、例えば爪部が長い形状、短い形状、爪部の幅が狭い形状、広い形状、爪部が棒状のもの等がある。これらハンド部も図１８のハンドモデル登録手順フローチャートに従って登録しておくことができる。つまり、図３に示すハンド部形状入力部３５では、ロボットＲＢＴのハンド部の形状を複数入力して登録しておくことができる。
【００７３】
以上のようにして図８のシミュレーション環境設定フローチャートのステップＳＢ２を経てロボットＲＢＴのハンドモデルを登録した後、ステップＳＢ３に進む。ステップＳＢ３では、ロボットＲＢＴのハンド部で把持するワークの面を選択する。ワークの面は、図９に示すサーチモデル登録フローチャートで登録した高さ画像で表すことができ、登録されている複数の高さ画像の中から、ロボットＲＢＴのハンド部で把持することが可能な面に対応した高さ画像をユーザが選択する。高さ画像の選択にあたっては、高さ画像選択用の画面を表示制御部２６が作成して表示部３に表示させることができる。高さ画像選択用の画面では、図９に示すサーチモデル登録フローチャートで登録した複数の高さ画像を一度に表示させておき、これら高さ画像の中からユーザが操作部４の操作によって選択することができる。
【００７４】
ステップＳＢ３で高さ画像を選択した後、ステップＳＢ４に進み、ステップＳＢ３で選択した面を把持する時のハンド部の位置及び姿勢を登録する。ステップＳＢ４では、図２１に示すような把持位置設定用画面（ＧＵＩ）５０を表示部３に表示させる。把持位置設定用画面５０は、図３に示すロボット設定装置１００が有する把持位置設定部２８で生成することができる。生成された把持位置設定用画面５０は、表示制御部２６が表示部３を制御することによって図２１に示すように表示することができる。
【００７５】
図２１Ａに示すように、把持位置設定用画面５０は、モデル表示領域５１と、サーチモデル選択領域５２と、把持位置表示領域５３とを有している。モデル表示領域５１には、ロボットＲＢＴのハンドモデルと、サーチモデル選択領域５２で選択されたサーチモデルとが表示される。サーチモデル選択領域５２には、Ａ〜Ｄが表示されており、それぞれにサーチモデルが割り当てられており、例えば、ＡにはＣＡＤモデルを上から見た高さ画像、ＢにはＣＡＤモデルを左から見た高さ画像、ＣにはＣＡＤモデルを右から見た高さ画像、ＤにはＣＡＤモデルを前から見た高さ画像を割り当てることができる。ユーザがサーチモデル選択領域５２の任意のアルファベットを選択すると、そのアルファベットに割り当てられているサーチモデルがモデル表示領域５１に表示される。
【００７６】
把持位置表示領域５３には、把持位置追加ボタン５３ａが設けられている。把持位置追加ボタン５３ａを操作すると、図２１Ｂに示すように把持姿勢設定領域５４がモデル表示領域５１と共に表示される。把持位置追加ボタン５３ａは、仮想的なボタンであり、操作部４のマウス等で操作することができる。
【００７７】
把持姿勢設定領域５４には、Ｘ軸座標、Ｙ軸座標、Ｚ軸座標、Ｘ軸周りの回転角度、Ｙ軸周りの回転角度、Ｚ軸周りの回転角度を個別に入力可能な入力領域５５が設けられている。各入力領域５５に数値を入力すると、入力された値に対応するように、モデル表示領域５１に表示されているハンドモデルが移動していく。これにより、ハンドモデルを所望位置に配置することができるので、ハンドモデルの位置を調整しながら、ハンドモデルでサーチモデルのどの部位をどのような姿勢で把持するか、即ち把持位置及び姿勢を設定することが可能になる。把持位置及び姿勢の設定は、各入力領域５５に数値を入力する以外にも、例えばハンドモデルを操作部４のマウスで直接的に操作することによっても可能である。
【００７８】
ここで設定する把持位置は、ロボットＲＢＴにより把持される把持候補位置である。図２１Ａに示すように、ロボットＲＢＴにより把持される把持候補位置は、サーチモデル登録部２７で登録されている各サーチモデルに対応付けて複数設定することができる。例えば、あるサーチモデルには、２つの把持候補位置を対応付けて設定し、別のサーチモデルには、４つの把持候補位置を対応付けて設定することができる。設定された把持候補位置は、サーチモデルと対応付けられた状態でロボット設定装置１００が有する把持位置設定部２８の記憶部４２に登録することができる。
【００７９】
一般に、一のワークに対して把持候補位置を複数登録することが多い。これは、把持候補位置を複数登録しておけば、複数の把持解の中から最適な解を選ぶことができるため、仮に得られた把持解候補が、例えばハンド部の他の物体との干渉によって最終的な解となり得ない場合、他の把持解候補があれば、把持可能と判定される可能性が高まるからである。このような把持候補位置を複数登録する際、その都度登録を一から行うと、同様の把持候補位置を登録する際に手数が多くなり作業が面倒となる。そこで、既に登録済みの把持候補位置情報をコピーして、この把持候補位置で設定された位置パラメータの一部を変更して、新たな把持候補位置として保存可能とすることで、手間を省いて複数の把持候補位置を容易に登録できるようになる。また、同様に既存の把持候補位置を読み出して、位置パラメータを適宜修正して上書き保存することも可能である。
【００８０】
図２２ではハンドモデルを把持候補位置に配置した状態を示している。また、図２３では、６つのサーチモデルのそれぞれについてハンドモデルを把持候補位置に配置した状態を示しているが、全てのサーチモデルに把持候補位置を設定しなくてもよい。
【００８１】
把持候補位置を登録する際、サーチモデルの原点に対して、ワークモデルを把持する際のエンドエフェクタモデルの相対的な位置及び姿勢を登録する。一方、実際のエンドエフェクタＥＥＴでワークＷＫをピッキングする際には、センサ部２でワークＷＫを撮像した三次元空間（ビジョン空間）の座標であるビジョン座標から、ロボットコントローラ６がロボットＲＢＴを実際に動作させる際に用いるロボット座標に変換する必要がある。
【００８２】
具体的には、ワークモデルの位置及び姿勢は、ビジョン空間における、位置（Ｘ、Ｙ、Ｚ）と姿勢（ＲX、ＲY、ＲZ）で求められる（なお姿勢（ＲX、ＲY、ＲZ）はＺ−Ｙ−Ｘ系オイラー角で表現された姿勢を示している）。また、これを把持するエンドエフェクタモデルの姿勢についても、同様にロボット設定装置１００の仮想三次元空間における位置（Ｘ、Ｙ、Ｚ）と姿勢（ＲX、ＲY、ＲZ）として求められる。このようなビジョン空間における位置及び姿勢に基づいて、ロボットコントローラ６がロボットＲＢＴを動作させるには、これらをロボット空間における位置（Ｘ’、Ｙ’、Ｚ’）と姿勢（ＲX’、ＲY’、ＲZ’）に変換する必要がある。この表示される座標系で算出された位置及び姿勢を、ロボットコントローラ６がエンドエフェクタＥＥＴを動作させる座標系の位置及び姿勢に座標変換するための変換式を算出する処理は、キャリブレーションと呼ばれる。このキャリブレーションは従来から周知の手法で行うことができる。
【００８３】
図８に示すフローチャートのステップＳＢ５では、必要数の把持候補位置を登録できたか否かを判定する。ハンド部で把持することが可能な部位が多数あれば、登録すべき把持候補位置の数が多くなるが、これはユーザが判断する事項であるため、ステップＳＢ５の判定はユーザが判定することになる。ステップＳＢ５でＮＯと判定して必要数の把持候補位置を登録できておらず、登録すべき把持候補位置が他にも残っている場合には、ステップＳＢ３を経てステップＳＢ４に進み、他の把持候補位置を設定し、登録する。一方、ステップＳＢ５でＹＥＳと判定して必要数の把持候補位置を登録できている場合には、このフローを終了する。
【００８４】
図７に示すステップＳＡ１のシミュレーション環境設定ステップでは、上述のようにサーチモデルの設定及び登録、ハンドモデルの設定及び登録を行うことができるが、これら以外にもシミュレーションを行う上で必要な各種情報の入力や設定を行うことが可能である。
【００８５】
ステップＳＡ１に続くステップＳＡ２では、ばら積み情報を入力する。ばら積み情報とは、例えば、一度にばら積みするワークの個数、ばら積みする箇所の形状（平面であるか、箱であるか）、ばら積みする箇所の大きさ等を入力する。
【００８６】
ステップＳＡ２でばら積み情報を入力するとステップＳＡ３に進み、ワークＷＫの三次元ＣＡＤデータ（ＣＡＤモデル）を読み込む。図９のサーチモデル登録フローチャートのステップＳＣ１で読み込んだデータを読み出してステップＳＡ３で使用することができる。
【００８７】
ＣＡＤデータを読み込んだ後、ステップＳＡ４に進み、ステップＳＡ３で読み込んだＣＡＤデータのポリゴン数を削減する。ＣＡＤデータのポリゴン数を削減するということは、ワークモデルのデータ容量が圧縮されて小さくなるということである。また、ワークモデルのデータを間引くことによってデータ容量を圧縮することも可能である。
【００８８】
三次元ＣＡＤデータは、一般に、三角形の面情報の集合体として表されるポリゴンデータで表され、ワークモデルの形状を極力保ちながらポリゴン数を削減する方法としては、例えば、Hoppeらが提案するプログレッシブメッシュ法や、Garlandらが提唱するQEM(Quadratic Error Metirc)法という手法があり、これら従来から周知の手法のうち、いずれの手法を用いてポリゴン数の削減処理を行ってもよい。
【００８９】
例えば、QEM法では、隣接するポリゴンのエッジを消去し、２つの頂点を結合して新たな頂点を生成し、この操作を繰り返すことで、ＣＡＤデータ全体を構成するポリゴン数を大幅に削減し、データ容量を圧縮することができる。また、ステップＳＡ４は、ステップＳＡ３で読み込んだＣＡＤデータのデータ容量を圧縮することができればよいので、ポリゴン数を削減する方法以外にも、各種方法によってデータ容量を圧縮するようにしてもよい。
【００９０】
このステップＳＡ４は、ＣＡＤデータで表されるワークモデルの形状を極力保ちながら、ポリゴン数を削減したワークモデルを作成して、後述する物理シミュレーション部２２による物理シミュレーション時の演算負荷の軽減するために行うステップである。ステップＳＡ４は、ワークモデル設定部２０で設定されたワークモデルのデータ容量を圧縮する処理を行うデータ容量圧縮ステップに相当し、図３に示すロボット設定装置１００が有するデータ容量圧縮部２１で行われる。
【００９１】
データ容量圧縮の具体例を示すと、図２４Ａは、ポリゴン数削減前のワークモデルを示しており、ポリゴン数は２６，２１４個ある。図２４Ｂは、ポリゴン数削減後のワークモデルを示しており、ポリゴン数は４１４個ある。また、図２５は、図２４Ｂに示すワークモデルよりもポリゴン数を削減した後のワークモデルを示しており、ポリゴン数は５０個ある。図２４Ｂに示すワークモデルは、ポリゴン数を大きく削減しているにも関わらず、ポリゴン数削減前のワークモデルの形状を残しており、この程度の削減量（データ圧縮量）であれば、後述するシミュレーション結果が再現性の高い結果となるので好ましい。
【００９２】
一方、図２５に示すワークモデルは、ポリゴン数の削減度合いが大き過ぎてポリゴン数削減前のワークモデルの形状からかけ離れた形状になっており、このワークモデルを用いて後述するシミュレーションを行うと、再現性が著しく低くなる可能性が高いので好ましくない。
【００９３】
この実施形態では、過度にポリゴン数を削減したことによってワークモデルの形状が大幅に変化することを防ぐため、形状変化が予め設定したしきい値の範囲内に収まるようにしている。これを実現するために、図３に示すロボット設定装置１００が有するデータ容量圧縮部２１は、圧縮処理前のワークモデルと圧縮処理後のワークモデルとの形状変化許容値を設定可能に構成されている。ユーザは、自分が使用するＣＡＤデータのポリゴン数を削減すればするほど処理速度が高速になるのでポリゴン数を多く削減したいが、上述したようにシミュレーションの結果が再現性の低い結果になるおそれがあるので、ポリゴン数を削減するのには限度がある。しかし、ポリゴン数の削減量をどの程度にまで抑えておけばシミュレーションの結果の再現性が高くなるのかをユーザ自身が判断することは簡単なことではなく、誤った判断の元でポリゴン数を削減してしまうと、シミュレーション結果と実際の運用時のピッキング動画との関連性が低くなってしまい、シミュレーションを行う意味が無くなる。
【００９４】
このことを防止するために、データ容量圧縮部２１では、ポリゴン数の削減によるワークモデルの形状変化を許容する形状変化許容値として、予め設定された初期設定値を持っている。初期設定値は、ロボット設定装置１００の出荷時に記憶部４２に記憶させておくこともできるし、ロボット設定装置１００の使用開始時に記憶部４２に記憶させることもできる。初期設定値は運用後に変更することもできる。
【００９５】
例えば、上述したQEM法では、隣接する複数の面の中のエッジとその両端の頂点を削減して新しい頂点を生成した際の変形量をコストとし、このコストの小さい順にエッジを消去していく。形状変化許容値を例えば１％オーダーの小さい値に抑えた上で、累積変形量がその形状変化許容値に収まる範囲でエッジと頂点を削除していけば、極端な形状変化を防ぎつつ、効果的にポリゴン数を削減することができるので、演算負荷を軽減しながら、シミュレーションの結果を再現性の高いものにすることができる。
【００９６】
例えばQEM法では、ポリゴンデータを構成するすべてのエッジ（稜線）に対して、その両端の頂点を削除して新しい位置に頂点を生成した場合（エッジ削除）の変形量の期待値を計算し、これを昇順にソートした上で、変形量の期待値が小さいものから順にエッジを削除していくことができる。あるエッジを削減すると、その両端が新しい頂点に移動し、隣接する頂点との間に新しいエッジが生成されることになる。ここで生成されるすべてのエッジの変形量の期待値に対して、先の操作により削除されたエッジの変形量の期待値を加算した状態で、再びすべてのエッジの変形量の期待値を昇順にソートし、この結果、あるエッジ削除の操作により新たに生成されたエッジは、そこに至るまでの当初の形状からの変形量が累積された形になり、以降はより削減されにくくなる。
【００９７】
形状変化許容値をユーザが入力可能に構成することもできる。例えば形状変化許容値の入力用画面を表示制御部２６によって表示部３に表示させ、ユーザが操作部４を使用して形状変化許容値を入力することができる。同様にして初期設定値も変更することができる。
【００９８】
ワークモデルのデータ容量を圧縮した後、図７に示すフローチャートのステップＳＡ５に進み、物理シミュレーションを実行する。物理シミュレーションは、図３に示すロボット設定装置１００が有する物理シミュレーション部２２が行い、具体的には、データ容量圧縮部２１でデータ容量が圧縮された複数のワークモデルを用いて、ワークが重力の作用を受けて作業空間に配置される動作をシミュレーションし、仮想的な作業空間に複数のワークモデルを積み上げたばら積み状態を生成する。これが物理シミュレーションステップである。物理シミュレーションを行うことで、明らかに不自然な姿勢のワークモデルを除外するなど、ユーザの実運用環境に合わせたばら積みデータを生成して後述するピッキング動作シミュレーションを行えるため、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。物理シミュレーション部２２は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。
【００９９】
物理シミュレーションは、従来から周知の物理シミュレーションエンジンを用いて実行することができる。物理シミュレーションでは、ワーク同士の衝突による作用、床等の障害物の情報に基づいてワークモデルを仮想的に配置していく。実運用時に図１に示すような収容容器ＢＸにワークＷＫを収容する場合には、ワークモデルを収容容器ＢＸに上方から投入するシミュレーションを物理シミュレーションエンジンが行うように設定することができる。また、物理シミュレーションでは、例えばワーク同士が衝突した場合に、予め設定された反発係数や摩擦係数を考慮して、その後ワークモデルがどのような動きになるかが示される。
【０１００】
物理シミュレーションの例としては、例えば、収容容器ＢＸにワークＷＫを上方から投下または投入して収容容器ＢＸの内部にばら積み状態を生成する場合を挙げることができる。「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは収納容器ＢＸや床面にワークモデルを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルを１つずつ作業空間内に順次投入する他、複数のワークモデルを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
【０１０１】
物理シミュレーションを実行した後、ステップＳＡ６に進み、ワークモデルのばら積み状態データを、物理シミュレーションの結果に基づいて生成する。このステップも物理シミュレーションステップに含まれるステップであるが、実行するのは、図３に示すロボット設定装置１００が有するばら積みデータ生成部２３である。
【０１０２】
ワークモデルのばら積み状態データに基づいて画像を生成すると、図２６及び図２７に示す画像が得られる。図２６及び図２７は、表示部３に表示される画像を示しており、各図における左側の画像が物理シミュレーション画像５７、右側の画像が後述する高さ画像５８である。表示制御部２６は、ワークモデルのばら積み状態データに基づいて、ワークモデルが収納容器ＢＸに無作為に投入された状態を示す画像を生成し、物理シミュレーション画像５７として表示部３に表示させる。この物理シミュレーション画像５７の中のワークモデルは、データ容量圧縮前のワークモデルとすることもできる。この場合、ワークモデルのばら積み状態データの中のワークモデルの位置及び姿勢情報にしたがって、データ容量圧縮部２１による圧縮処理を行う前のワークモデルを配置することにより、物理シミュレーション画像５７上では精緻なワークモデルとして表示できる。尚、圧縮処理を行う前のワークモデルを配置する代わりに、物理シミュレーション部２２で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置するようにしてもよい。また、ユーザは、物理シミュレーション画像５７を見て、物理シミュレーションの結果が、後述するピッキング動作シミュレーションに不適な結果であると思われる場合には、その物理シミュレーションの結果を破棄して改めて物理シミュレーションを実行することができる。
【０１０３】
図２６及び図２７に示すように、物理シミュレーション画像５７と、高さ画像５８とは独立して視点、即ち見る角度を変えた画像にすることができる。物理シミュレーション画像５７と、高さ画像５８との配置は図示した配置に限られるものではなく、１つの表示画面上の任意の位置にそれぞれ配置することができる。また、物理シミュレーション画像５７は、例えば物理シミュレーションの実行開始から終了までを動画として表示可能にしてもよい。この場合、収納容器ＢＸの上方から複数のワークモデルを収納容器ＢＸに投下する様子、ワークモデル同士が衝突する様子、ワークモデルが収納容器ＢＸの壁に衝突する様子も見ることができ、最終的にどのようしてばら積み状態が生成されたのかをユーザが把握できる。
【０１０４】
ワークモデルのばら積み状態データを生成した後、図７に示すステップＳＡ７に進み、ワークモデルのばら積み状態データの中のワークモデルをポリゴン数削減前のＣＡＤデータと置換する。すなわち、物理シミュレーション部２２で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、物理シミュレーション部２２で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置する。このようにして、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行するためのサーチ処理用データを生成するデータ生成ステップが行われる。このサーチ処理用データの生成は、図３に示すロボット設定装置１００が有するばら積みデータ生成部２３で行われる。
【０１０５】
物理シミュレーション部２２で用いたワークモデルよりもデータ容量が大きくかつワークＷＫの三次元形状に近いワークモデルというのは、データの圧縮量が低く、物理シミュレーションステップで用いたワークモデルよりも精緻な形状を持ったワークモデルである。このワークモデルに置き換えることで、後述するピッキング動作シミュレーションの結果の再現性を高めることができる。
【０１０６】
ばら積みデータ生成部２３は、物理シミュレーション部２２で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量圧縮部２１による圧縮処理を行う前のワークモデルを配置することによってサーチ処理用データを生成することもできる。こうすれば後述するピッキング動作シミュレーションの結果がより一層再現性の高い結果になる。
【０１０７】
ステップＳＡ７においてサーチ処理用データを生成した後、ステップＳＡ８に進み、ワークモデルの各部の高さを表す高さ画像データを生成する。高さ画像データから得られる高さ画像は、高さ情報を有する画像であって、距離画像、三次元画像等とも呼ばれる。サーチ処理用データにはワークモデルの高さに関する情報が含まれているので、これに基づいて周知の手法によって高さ画像データを得ることができる。図２６及び図２７に示すように、ステップＳＡ８で生成された高さ画像データに基づいて得ることができる高さ画像５８は、物理シミュレーション画像５７と同時に表示部３に表示される。
【０１０８】
図７に示すステップＳＡ８で高さ画像を生成した後、ステップＳＡ９に進み、ばら積みデータ生成部２３により生成されたサーチ処理用データに対し、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行する。これはサーチ処理ステップであり、図３に示すロボット設定装置１００が有するサーチ処理部２４が行う。
【０１０９】
サーチ処理は高さ情報を含むサーチ処理用データに対してサーチをかけるので、三次元サーチと呼ぶことができる。具体的には、サーチモデル登録部２７で登録されたサーチモデルを用いて、各ワークモデルの姿勢と位置を特定する三次元サーチを行う。まずサーチモデルの各特徴点が、最も一致する状態の位置及び姿勢（Ｘ、Ｙ、Ｚ、ＲX、ＲY、ＲZ）を、高さ画像の中から探索する。ここでＲX、ＲY、ＲZは、それぞれＸ軸に対する回転角、Ｙ軸に対する回転角、Ｚ軸に対する回転角を表す。このような回転角度の表現方法は種々提案されているところ、ここではＺ−Ｙ−Ｘ系オイラー角を用いることができる。また一致する位置及び姿勢は、各サーチモデルに対して、１つである必要はなく、一定以上一致する位置及び姿勢を、複数検出してもよい。
【０１１０】
たとえば、図２８に示すように、高さ画像の中で特徴点の一致に基づいてワークモデルを検出した場合には、その検出位置にサーチモデルの特徴点を、周囲よりも明るい色で重畳表示させることができる。このように三次元サーチに用いるサーチモデルとして、ワークを六面図のように、面ごとに見た画像を用いることで、斜視図などを用いる場合と比べ、三次元サーチの演算処理を簡素化でき、処理を軽負荷、高速化できる利点が得られる。また、サーチモデルの登録作業に際しても表示された状態が見易くなり、ユーザにも視覚的に判り易くできる。
【０１１１】
ここで、例えば、三次元サーチに用いる高さ画像を構成するワークモデルが、データ容量圧縮部２１で圧縮処理されたワークモデルであった場合について説明する。図２９は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理前である場合を示しており、一方、図３０は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理後である場合を示している。図２９Ｂと図３０Ｂとを比較すると、図２９Ｂの方は特徴点の位置が正確に合致した状態になっているのに対し、図３０Ｂの方は特徴点の位置が正確に合致しない状態になってしまい、スコアが下がっていることが分かる。したがって、三次元サーチ時には、図２９Ｂに示す圧縮処理前のワークモデルを用いることで、三次元サーチの正確性を高めることができる。尚、三次元サーチ時に図３０Ｂに示す圧縮処理後のサーチモデルを用いてサーチするようにしてもよいが、そのときの圧縮量が低い方が好ましい。
【０１１２】
図３１に示すように、三次元サーチの結果の位置に、サーチモデルの各特徴点を重畳表示させることができる。図３１の左側には、二次元表示した場合を示しており、右側には、三次元表示した場合を示している。対応する特徴点が、高さ画像中に対してどの程度存在したか（例えば、高さ画像に対し、一定の距離以下の誤差で対応した特徴点の点数割合など）によって、サーチ結果をスコア付けすることができる。
【０１１３】
サーチ処理部２４が高さ画像中にサーチモデル登録部２７で登録されたサーチモデルが存在するか否かをサーチした結果、高さ画像中に、サーチモデルが存在しない場合、即ちワークモデルを検出できない場合には、図７に示すステップＳＡ１０においてＮＯと判定されてステップＳＡ１１に進み、残ったワークモデルの情報を抽出し、このフローを終了する。
【０１１４】
ステップＳＡ９の三次元サーチの結果、高さ画像の中にワークモデルを検出できた場合には、ステップＳＡ１０でＹＥＳと判定されてステップＳＡ１２に進み、干渉判定及び把持解を算出する。このステップＳＡ１２〜ＳＡ１５は、サーチ処理部２４によりサーチに成功したワークモデルに対して、ロボットＲＢＴによりピッキング動作のシミュレーションを実行するピッキング動作シミュレーション部２５が行うピッキング動作シミュレーションステップである。三次元サーチの結果、高さ画像の中に複数のワークモデルを検出できる場合もある。ピッキング動作シミュレーション部２５に物理シミュレーションの機能や高さ画像生成機能を持たせてもよい。
【０１１５】
このように、ピッキング動作シミュレーション部２５は、生成されたばら積みデータに対して、仮想作業空間内のワークモデルのばら積みピッキング動作を検証するための部分である。ピッキング動作シミュレーションを行うことにより、ワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、実際にワークを用意することなく、実運用に近い形で事前に行うことができる。
【０１１６】
特に物理シミュレーション部２２は、ピッキング動作シミュレーション部２５による一のワークモデルをハンドモデルで把持し少なくとも取り出し動作を開始した後、このワークモデルが取り出された後の状態のばら積みデータに対して物理シミュレーションを再度実行するように構成することができる。物理シミュレーションを再度実行するタイミングは、ワークモデルをハンドモデルで把持し、載置位置にプレースされた後とする他、ワークモデルの取り出し作業の途中であってもよい。すなわち、ハンドモデルでワークモデルを把持して、このワークモデルが持ち上げられた状態では、一のワークモデルが除去されたことで、このワークモデルの周辺にあった他のワークモデルが移動可能となるため、把持されたワークモデルが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルがハンドモデルで把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルが把持されて持ち上げられた時点から所定の時間の経過後（例えば１０秒後）としてもよい。物理シミュレーションを再度実行した後、ばら積みデータを更新する。
【０１１７】
したがって、ピッキング動作シミュレーション中にばら積みデータからワークモデルが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーションにより演算され、この演算後のばら積みデータを利用してピッキング動作シミュレーション部２５がその後のピッキング動作シミュレーションを実行するので、より正確なばら積みピッキングのシミュレーションが実現される。
【０１１８】
干渉判定は、高さ画像の各１点１点のpixelデータが示す三次元点群と、ハンド部形状入力部３５で予め入力されているハンドモデルとが干渉するか否かを判定する。干渉判定の前に、三次元サーチで検出された一のワークモデルに対して、このワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、エンドエフェクタＥＥＴを配置すべき位置と姿勢を計算する。ピッキング動作シミュレーション中の画像を図３３に示す。計算された位置において、エンドエフェクタが周囲の物体と干渉しないかどうかを、図１８のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。この干渉判定では、ハンドモデルの断面モデルを利用して三次元点群が断面モデルと干渉しているか否かを判定する。具体的には、図３２Ａに示すように、断面モデルから全ての三次元点が離れている場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していないと判定し、一方、図３２Ｂに示すように、断面モデルの内側に三次元点が１つでも入っている、または断面モデルの縁部に三次元点が１つでも接している場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していると判定する。干渉していない場合は、このワークモデルに対して把持解を算出することができたということであり、ステップＳＡ１３においてＹＥＳと判定されてステップＳＡ１４に進む。一方、三次元点群とハンドモデルとが干渉している場合は、このワークモデルに対して把持解を算出することができないということであり、ステップＳＡ１３においてＮＯと判定されてステップＳＡ１１に進み、このフローを終了する。
【０１１９】
一方、把持解を算出することができてステップＳＡ１４に進むと、ワークモデルの数を１つ減らす。このステップＳＡ１４で減らすワークモデルは把持解を算出することができたワークモデルである。ワークモデルを１つ減らした後、ステップＳＡ１５に進み、三次元サーチで得られた他のワークモデルがあればステップＳＡ１２に進む。他のワークモデルが無ければステップＳＡ１５でＮＯと判定されてステップＳＡ１１に進み、このフローを終了する。
【０１２０】
このようにして、ワークモデルを把持可能な把持解の有無を検出されたワークモデル毎に判定する。そして、ワークモデルに把持解が得られた場合は、そのワークモデルの把持候補位置をハンド部でもってピックし、収納容器ＢＸの外部へ搬送するシミュレーションを行う。
【０１２１】
ピッキング動作シミュレーションの実行結果は、必要に応じて表示部３に表示させることができる。ユーザは表示部３に表示されたピッキング動作シミュレーションの実行結果に基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更することができる。例えばロボットＲＢＴの設置位置や収納容器ＢＸを置く位置、センサ部２の姿勢などを調整する。変更した設定を、シミュレーション環境として入力し直して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、ユーザの環境に応じた適切な設定条件を決定できる。
【０１２２】
また、物理シミュレーション部２２は、物理シミュレーションを繰り返して行うことができるが、毎回、ワークモデルが同じ配置にならないようにランダムにばら積みすることができるように構成されている。従って、物理シミュレーション部２２は、以前行った物理シミュレーションで得られたばら積み状態と同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなばら積みデータが生成されるため、物理シミュレーションの結果に再現性がない。
【０１２３】
一方、ユーザがピッキング動作の環境設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このばら積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルに対するエンドエフェクタモデルの把持解が見つからずに全てのワークモデルを取り出せなかった場合に、その対策としてユーザが把持候補位置や把持姿勢を増やした場合を考える。この場合、ユーザが変更した設定が、前回発生した問題に対して有効な解決策であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
【０１２４】
加えて、問題が発生した状態だけでなく、その問題が発生するに至った途中の状態からピッキング動作シミュレーションを開始できるようにしてもよい。例えば問題が発生したばら積みデータを、ワークモデルを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
【０１２５】
これらを実現するために、本実施形態においては、ばら積みデータの初期状態や終了状態、あるいは中間状態等、ユーザが再利用したいと考える状態のばら積みデータを保存しておき、環境設定をし直した後に、このような保存済みのばら積みデータを呼び出して、検証することを可能としている。ばら積みデータは、記憶部４２に保存しておくことができ、ユーザの指定によって呼び出すことができる。
【０１２６】
以上の手順では、いずれかのワークモデルで把持解が得られると、その時点で把持候補位置を検討する処理を終了して、得られた把持解に該当する把持候補位置でワークモデルを把持するように処理している。ただ、この方法に限らず、例えば把持可能なすべての把持候補位置を１つのワークモデルについて求めた上で、いずれの把持候補位置を選択するかをユーザが決定するように構成してもよい。また、ワークモデルの置かれた高さ情報に注目し、ワークモデルが置かれた高さが高いもの、いいかえると、ばら積みされたワークモデル群の内で、より上方に位置するものを把持候補位置として選択することもできる。
【０１２７】
以上のようにしてピッキング動作シミュレーションを行うことができ、このピッキング動作シミュレーションは複数回行うのが好ましい。つまり、サーチ処理部２４によりサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットＲＢＴによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットＲＢＴにより把持するピッキング動作シミュレーションを繰り返し実行するように、ピッキング動作シミュレーション部２５が構成されている。このピッキング動作シミュレーションを複数回行うことに対応するように、物理シミュレーション部２２は、データ容量が圧縮された複数のワークモデルを用いて複数回シミュレーションを実行可能に構成されており、ピッキング動作シミュレーションが終了すると、物理シミュレーション部２２は自動的に新たな物理シミュレーションを実行し、この新たな物理シミュレーション結果を利用してピッキング動作シミュレーションが行われる。
【０１２８】
また、ピッキング動作シミュレーション部２２は、サーチ処理部２４によりサーチに成功したワークモデルをハンド部形状入力部３５で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するように構成されている。図１８のハンドモデル登録手順フローチャートに従ってハンド部の形状を複数入力した場合には、それらのうち、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。全てのハンド部についてピッキング動作シミュレーションが終了した後、再び全てのハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。これを繰り返して行うことができる。また、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行うこともできる。ピッキング動作シミュレーションは、ハンド部毎に数百回〜１０００回程度行うことができる。
【０１２９】
図３４にフローチャートで示すように、ピッキング動作シミュレーションを複数回行ってその結果を蓄積することができる。図３４のフローチャートの開始後のステップＳＧ１では、統計対象となる設定群を取得する。これは、ハンド部形状入力部３５で入力された複数のハンド部のハンドモデルや、サーチモデルに設定されている複数の把持候補位置、複数のサーチモデル等である。
【０１３０】
統計対象となる設定群を取得した後、ステップＳＧ２に進み、統計蓄積を開始する。これはユーザによる指示によって開始することができる。統計蓄積を開始すると、ステップＳＧ３に進み、ステップＳＧ１で取得した設定群の中から一の設定の組（一のハンド部、一の把持候補位置、一のサーチモデル）を取得して上述したピッキング動作シミュレーションを開始する。ピッキング動作シミュレーション部２２は、各ハンド部による把持が行えなくなるまでピッキング動作シミュレーションを継続する。
【０１３１】
このステップＳＧ３のピッキング動作シミュレーションは複数回実行する。すなわち、物理シミュレーション部２２で複数のワークモデルを積み上げたばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行し、その後、物理シミュレーション部２２で新たにばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行する。つまり、ピッキング動作シミュレーション部２５によるピッキング動作シミュレーションが終了する都度、物理シミュレーションを新たに実行してデータを更新するようにしている。これを繰り返し行い、ステップＳＧ４において各高さ画像に対するピッキング動作シミュレーションの結果を蓄積する。
【０１３２】
予め設定されている回数だけピッキング動作シミュレーションが行われれば、ステップＳＧ５においてＹＥＳと判定されてステップＳＧ６に進む一方、予め設定されている回数に未達であれば、ステップＳＧ５でＮＯと判定されてステップＳＧ３に進み、別の高さ画像についてピッキング動作シミュレーションを実行する。
【０１３３】
その後、ステップＳＧ６では、各ピッキング動作シミュレーションに対する実行結果を蓄積する。ステップＳＧ７では、ステップＳＧ１で取得した設定群の中でピッキング動作シミュレーションを実行していない設定が存在すれば、ＮＯと判定されて、未だピッキング動作シミュレーションを実行していない設定についてピッキング動作シミュレーションを繰り返し実行する。ステップＳＧ１で取得した設定群の全てについてピッキング動作シミュレーションを実行したら、ステップＳＧ７でＹＥＳと判定されて終了する。
【０１３４】
図３５は、ピッキング動作シミュレーションの結果を把持登録番号順にリスト表示した表である。この表の左欄にはサーチモデルが記載されており、この例ではサーチモデルとしてＡ〜Ｃの３つがある。表の左右方向中央の欄には把持候補位置を登録番号順に並べて記載しており、サーチモデルＡに把持候補位置として３つが登録されており、サーチモデルＢに把持候補位置として５つが登録されており、サーチモデルＣに把持候補位置としての４つが登録されていた場合を示している。表の右欄の回数とは、ピッキング動作シミュレーションで把持に成功した回数であり、ピッキング動作シミュレーションで把持に成功したときに使用された頻度（使用頻度）を示す情報である。
【０１３５】
図３５に示す表は、表示制御部２６が表示部３に表示させるために生成する表であり、ピッキング動作シミュレーションで把持に成功したときの各サーチモデルＡ〜Ｃ及び各把持候補位置（Ａ−００１〜Ｃ−００５）の使用頻度を示す情報を比較可能に表示している。また、各サーチモデルＡ〜Ｃと、各把持候補位置（Ａ−００１〜Ｃ−００５）の両方を表示することなく、サーチモデルＡ〜Ｃのみ、または各把持候補位置（Ａ−００１〜Ｃ−００５）のみ表示可能にしてもよい。この表では、把持に使用されなかった各サーチモデル及び各把持候補位置も表示されているが、把持に使用されなかった各サーチモデルのみ、または把持に使用されなかった把持候補位置のみ表示可能にしてもよい。把持に使用されなかった把持候補位置は、回数が０となっている把持候補位置である。
【０１３６】
図３６は、図３５に示す結果を回数降順にリスト表示した場合を示しており、この表も表示制御部２６が表示部３に表示させるために生成する表である。回数昇順にリスト表示することももちろん可能である。把持登録位置Ａ−００２、把持登録位置Ｂ−００２、把持登録位置Ｂ−００３は、ピッキング動作シミュレーション時に把持候補位置として採用されていないため、データから削除しても実際のばら積みピッキング作業には問題ないといえる。また、サーチモデルＡ及びサーチモデルＣに比べて把持回数が大幅に少ないサーチモデルＢをデータから削除しても、実際のばら積みピッキング作業には殆ど問題ないといえる。また、ロボット制御プログラム側からも、これらの設定を使用した結果データを考慮する必要が無くなるため、セットアップの工数を減らすことが可能になる。
【０１３７】
図３７は、ピッキング動作シミュレーションの結果をハンド部の形状別にリスト表示した表であり、この表も表示制御部２６が表示部３に表示させるために生成する表である。ハンド部の形状が「ハンド形状１」〜「ハンド形状７」まで７種類ある場合を示しており、ワーク残数（平均）とは、１回のピッキング動作シミュレーションで把持できなかったワーク（収納容器ＢＸに残ったワーク）の数をピッキング動作シミュレーションの回数で乗じて得た総回数を、ピッキング動作シミュレーションの回数で除した値である。ワーク残数（最大）とは、全ピッキング動作シミュレーションの中で残ったワークが最も多かった回の当該ワークの個数である。ワーク残数（最小）とは、全ピッキング動作シミュレーションの中で残ったワークが最も少なかった回の当該ワークの個数である。
【０１３８】
つまり、表示制御部２６は、ピッキング動作シミュレーション部２５によるピッキング動作シミュレーション終了時に残っているワークモデルの数をハンド部毎に表示可能に構成されているので、ハンド部の形状毎にワークの残数を比較することができる。ワークの残数は、ハンド部によるワークモデルの把持の成功度が高ければ少なくなり、反対にハンド部によるワークモデルの把持の成功度が低ければ多くなるので、ハンド部によるワークモデルの把持の成功度合いを示す情報である。従って、この実施形態では、ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができる。ワークモデルの把持の成功度合いは、例えば把持に成功したワークの全ワークに対する割合等で表示することもできる。図３５〜図３７に示す各表を表示部３に表示させるステップが表示ステップである。
（露光時間の設定）
形状測定装置４００は、図３に示すように、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４の露光時間（シャッタースピード）を段階的に変化させるための露光制御部４０を備えている。露光制御部４０は、露光時間を等比で増加させるように構成されているが、これに限られるものではない。この実施形態では、露光時間を１．５倍ずつ伸ばすように構成されているが、この倍率は任意に設定することができる。
【０１３９】
形状測定装置４００は高さ画像データ生成部３３を備えている。高さ画像データ生成部３３は、露光制御部４０が段階的に変化させた各露光時間においてカメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面（ワークＷＫの表面）の各部位の高さを示す高さ画像データを生成するように構成されている。これは例えば位相シフト法等の手法によって生成することができる。
（画素判定部の構成）
形状測定装置４００は画素判定部３４を備えている。画素判定部３４は、露光制御部４０が段階的に変化させた各露光時間において受光部が受光した受光量を得て、得られた受光量に基づいて、高さ画像データ生成部３３により生成される各高さ画像の各画素が有効か無効かを判定するように構成されている。プロジェクタＰＲＪが周期的な照度分布を有するパターン光を照射するように構成されている場合、画素判定部３４は、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４の撮像によって得られた各画素の光量のコントラストが閾値以上の画素を有効と判定するように構成されている。また、三次元形状を取得する方法として、光切断法を用いる場合には、各画素の光量が小さすぎるか、飽和している場合には、当該画素が無効であると判定し、その他の画素を有効と判定する。つまり、高さ画像を生成した際に高さを表示することができない画素（画面上で黒く潰れたようになってしまう画素や白く飛んでしまう画素）が無効であると判定し、一方、高さを表示することができる画素を有効と判定する。
【０１４０】
画素判定部３４は、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成することができる。図３９は、注目領域をユーザに設定させるための注目領域設定画面６２を示している。注目領域設定画面６２は、いわゆるユーザーインターフェースであり、表示制御部２６で生成され、表示部３で表示される。図３９の注目領域設定画面６２内で表示されている画像６０は、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４で撮像された範囲の高さ画像であり、この撮像範囲内には、収納容器ＢＸとワークＷＫとが含まれている。収納容器ＢＸはピッキング対象ではないので、その収納容器ＢＸを構成している画素が有効か無効かを判定しても意味がない。図３９では、注目領域設定画面６２の高さ画像６０の中に、注目領域設定用の枠線６１を表示しており、この枠線６１で囲まれた領域を注目領域としてユーザが設定することができる。枠線６１は、操作部４１の操作によって拡大、縮小、変形させることが可能であり、ユーザが任意の領域を注目領域として指定することが可能になっている。注目領域が設定されると、その領域内の各画素について有効か無効かを判定するので、不要な領域の画素が後述する露光時間の設定に用いられることが無くなり、露光時間を適切な時間に設定することが可能になる。
【０１４１】
図４２、図４３及び図４４は注目領域設定画面の一形態を示しており、各図においても注目領域設定用の枠線６１を白色で示している。枠線６１の表示形態は各図に示す形態に限定されるものではない。また、注目領域外と注目領域内とで背景色を変える等の手法で注目領域を区別可能にすることもできる。
（露光時間設定部の構成）
形状測定装置４００は露光時間設定部４１を備えている。露光時間設定部４１は、画素判定部３４により有効と判定された画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定する。設定値とは、ロボットシステム１０００の実運用を行う際に用いる露光時間のことである。露光時間は手動操作によって調整することもできるが、手動操作の場合、ユーザは自分で設定した露光時間で得られた高さ画像を見ながら、最適な露光時間の範囲を探索していくプロセスが必要になる。また、最適な露光時間を絞り込むための探索を手作業で行う場合、属人性があるとともに再現性が悪く、様々なケースで適切な露光時間を得ることは難しい。さらに、高さ画像を構成する画素の場合は、見た目で有効画素であるか否かを判定するのは難しく、特に手作業で決定した露光時間が妥当な時間であるか否かを短時間で検証して判断することは困難である。よって、この実施形態では、適切な露光時間を自動で設定することができるようになっている。
【０１４２】
図４０は、露光時間と有効画素数との関係を示すグラフを示しており、横軸が対数目盛で露光時間（ｍｓ）であり、縦軸が有効画素数（ｐｉｘｅｌ）である。このグラフは、ある固定されたワークを、カメラＣＭＥ１、ＣＭＥ２、ＣＭＥ３、ＣＭＥ４の露光時間を段階的に変えながら撮像して高さ画像を得て、その高さ画像に含まれる有効画素数を露光時間毎にプロットしたものである。有効画素数と露光時間との関係は、概ねこのグラフに示されるように、ある露光時間の範囲内では、露光時間が変化しても有効画素数は殆ど変化せず、その範囲外では、有効画素数が急激に少なくなる。このグラフの例では、露光時間が０．１ｍｓ〜６ｍｓの範囲内であれば有効画素数が多い高さ画像を得ることができるが、露光時間が０．１ｍｓ未満及び６ｍｓを超えると、有効画素数が極端に少ない高さ画像になってしまう。有効画素数が極端に少なくなると、図３９の高さ画像において黒い部分が増えてしまうので三次元サーチの精度が低下してしまう。
【０１４３】
この実施形態では、図４１に詳しく示すように、有効画素が最大値の９５％となる露光時間を設定値として設定する。つまり、露光時間設定部４１は、画素判定部３４により有効と判定された画素の数が最も多くなる露光時間以下の所定時間を設定値として設定するように構成されている。その理由は、有効画素の数が最大値をとる露光時間は、図４１に示すグラフの平坦に近い部分に存在することが多く、設定値として選択される露光時間が時間軸方向にぶれやすく、不安定になりやすいので、有効画素の数が最大値をとる露光時間ではなく、有効画素の数が最大値よりも若干少なくなる露光時間を設定値として設定する。この実施形態では、有効画素が最大値の９５％となる露光時間を設定値として設定しているが、これに限られるものではなく、有効画素が最大値の９０％以上９９％以下の範囲となる露光時間を設定値することができる。
【０１４４】
この実施形態では、露光時間設定部４１で自動的に設定された露光時間をユーザが調整可能に構成されている。図４２は、露光時間設定用画面６５であり、露光時間が推奨値にある場合を示している。露光時間設定用画面６５には、高さ画像生成部３３で生成された高さ画像表示領域６５ａと、露光時間と有効画素数との関係を示すグラフを表示するグラフ表示領域６５ｂと、ユーザによる設定が可能な設定領域６５ｃとが設けられている。
【０１４５】
高さ画像生成部３３での高さ画像の生成方法の一例について説明する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、Ｚバッファ法が好適に利用できる。
【０１４６】
すなわち、ワークのＣＡＤデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Ｚバッファ法、Ｚソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではＺバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Ｚバッファ法では、Ｚバッファ＝高さ画像として実現される。また、Ｚバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Ｚバッファ法の過程で、画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではＺバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてＺバッファ法を例示するが、本発明はＺバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。このようにして三次元のばら積みデータから高さ画像に描画し直す。
【０１４７】
グラフ表示領域６５ｂに表示されるグラフは、表示制御部２６で生成することができ、図４０や図４１に示すグラフと同じものである。このグラフの横軸、即ち露光時間軸は対数（等比）表示されているが、この表示形態に限られるものはなく、任意の表示にすることができる。
【０１４８】
設定領域６５ｃには、調整しきい値（％）を設定するしきい値設定部６５ｄと、露光時間の調整範囲を設定する範囲設定部６５ｅ、比率設定部６５ｆと、露光時間の設定値（推奨値）を表示する露光時間表示領域６５ｇとが設けられている。
【０１４９】
しきい値設定部６５ｄは、有効画素が最大値の何％の画素数となる露光時間を設定値とするか、その値を百分率で設定するための部分である。１％刻みで設定することができる。範囲設定部６５ｅは、露光時間の調整範囲の最大値（最大露光時間）と最小値（最小露光時間）とを別々に設定することができるようになっている。比率設定部６５ｆは、露光時間を等比増加させる際の比率を設定する部分である。
【０１５０】
露光時間の設定値は、グラフ表示領域６５ｂに表示されるグラフにおいて白い縦線６５ｈで表示することができる。また、しきい値設定部６５ｄで設定された値を有効画素の最大値に乗じた値は、グラフ表示領域６５ｂに表示されるグラフにおいて白い横線６５ｉで表示することができる。
【０１５１】
露光時間表示領域６５ｇに表示されている露光時間をユーザが操作部４の操作によって入力することで露光時間を調整することができる。図４３では露光時間が推奨値よりも短い場合を示しており、また、図４４では露光時間が推奨値よりも長い場合を示している。図４３及び図４４に示すように、ユーザが露光時間を設定値から外れた時間に変更した場合には、変更後の露光時間で撮像した高さ画像を高さ画像表示領域６５ａに表示することができる。図４３及び図４３に示す高さ画像は、図４２に示す露光時間が推奨値にある場合の高さ画像に比べて黒く潰れた部分が広くなっており、露光時間が不適であることが分かる。
【０１５２】
また、図４２に示す露光時間で撮像した高さ画像と、図４３や図４４に示す露光時間で撮像した高さ画像とを同時に表示部３に表示させるようにしてもよい。すなわち、第１の露光時間に対応する高さ画像と、第１の露光時間とは異なる第２の露光時間に対応する高さ画像とを同時に表示可能にするように表示制御部２６を構成することができる。
【０１５３】
露光時間の設定は実運用を開始する前に行うのが望ましいが、実運用の開始後に露光時間を調整する目的で行うこともできる。
（三次元計測部）
三次元計測部３０は、画像処理装置３００に設けることができる。三次元計測部３０は、実運用時に複数のワークが積み上げられた作業空間を三次元計測し、その計測データを出力するように構成されている。センサ部２は三次元計測部３０の一構成要素とすることができる。計測手法は上述したとおりであり、特に限定されるものではない。三次元計測部３０をセンサ部２に設けて一体化することもできる。
（サーチ処理部）
サーチ処理部２４は、上述したピッキング動作シミュレーションで使用されているが、実運用時でも使用することができる。サーチ処理部２４をピッキング動作シミュレーションで使用したものとは別に構成することもできる。
【０１５４】
すなわち、サーチ処理部２４は、サーチモデル登録部２７に登録された複数のサーチモデルを用いて、三次元計測部３０から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するサーチ処理を行う。サーチ処理を行う際には、三次元計測部３０から出力された計測データに基づいて高さ画像生成部３３によって高さ画像を生成し、この高さ画像中にサーチモデル登録部２７で登録されたサーチモデルが存在するか否かをサーチする。この手法はピッキング動作シミュレーションで行った手法と同じにすることができる。
【０１５５】
また、サーチ処理部２４は、サーチモデルの形状を表す複数の特徴点を用いて、三次元計測部３０から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出することができる。すなわち、三次元計測部３０から出力された計測データに基づいて高さ画像を生成し、この高さ画像の中で、サーチモデルの形状を表す複数の特徴点と一致する形状をサーチする。
【０１５６】
また、サーチ処理部２４は、サーチモデル登録部２７に登録されている関連付けられた高さ画像データを用いて、三次元計測部３０から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するように構成することができる。
（干渉判定部）
干渉判定部３１は、画像処理装置３００に設けることができる。干渉判定部３１は、サーチ処理部２４でサーチ処理に成功したサーチモデルに対応付けられたワーク表面に設定された把持候補位置をロボットＲＢＴが周囲の物体と干渉することなく把持が可能か判定する。この干渉判定部３１による判定手法は、ピッキング動作シミュレーションで行った手法と同じにすることができる。
【０１５７】
干渉判定部３１は、三次元計測部３０で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定するように構成されている。図４５Ａは、三次元計測部３０で得られた計測データに基づいて生成した高さ画像を、やや斜め方向から三次元表示した点群と、サーチ結果の位置にサーチモデルの特徴点を重畳表示した図であり、鉛直に近い面等は計測データから欠損していて、奥の底面が抜けて見えたり、黒く潰れた部分が多くなっている。高さ画像の中の黒く潰れた部分は、カメラＣＭＥの死角やプロジェクタＰＲＪの投光から死角となる箇所であったり、光沢の強い金属製ワーク等であったり、周囲の物体との多重反射によりデータが不正となった部分である。このように高さ画像の中の黒く潰れた部分が多くなると、三次元サーチが十分に行えなくなったり、実際には干渉するのに干渉していないと誤って判断されてしまうという問題がある。
【０１５８】
一方、図４５Ｂは、図４５Ａに加え、三次元計測部３０で計測できていないワーク表面を他の面との関連性を利用して推定し、推定した別の面のサーチモデルの特徴点も含めて重畳表示した図を示している。すなわち、サーチモデル登録部２７では、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録し、それらの関係性情報を持った状態で各高さ画像を保存しているので、例えば実運用の際にワークを上から見たサーチモデルのサーチに成功すれば、左から見たサーチモデルを、上から見たサーチモデルのどこにどのように配置すればワークの形状になるかが分かっており、これを利用して計測データの欠損した部分を補っていくことができる。従って、図４５Ｂでは図４５Ａに比べて鉛直に近い面等、三次元計測できてない部分を、サーチモデルの特徴点で補完した状態になっている。物理シミュレーションにおける干渉判定の説明の中で記載した、三次元点群に対する干渉判定に加えて、サーチ結果に基づいて推定した、他の面も含めたサーチモデルの特徴点に対する干渉判定も合わせて行うことで、三次元計測できてない部分も考慮した干渉判定を実現できる。
（把持位置決定部）
把持位置決定部３２は、画像処理装置３００に設けることができる。把持位置決定部３２は、干渉判定部３１により周囲の物体と干渉することなく把持が可能と判定された把持候補位置を実際の把持位置として決定するように構成されている。
【０１５９】
（実運用時の手順）
次に、実運用時の手順について図３８に示すフローチャートに基づいて説明する。開始後のステップＳＨ１では、図１に示すようにセンサ部２を用いて収納容器ＢＸにばら積みされているワークＷＫを三次元計測する。このステップＳＨ１では、三次元計測部３０から出力された計測データに基づいて高さ画像生成部３３で高さ画像を生成しておく。
【０１６０】
その後、ステップＳＨ２ではステップＳＨ１で生成した高さ画像に対して上述した三次元サーチを実施し、ワークの位置及び姿勢を検出する。続くステップＳＨ３では、ワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、ハンド部を配置すべき位置と姿勢を計算する。
【０１６１】
ステップＳＨ４では、計算された位置において、ハンド部が周囲の物体と干渉しないかどうかを、図１８のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。具体的には、高さ画像の各１点１点のpixelデータが示す三次元点群と、ハンド部形状入力部３５で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。ステップＳＨ５でＮＯと判定されてハンド部が周囲の物体と干渉していない場合には、把持解有りとして終了する。この把持解がロボットコントローラ６に送信され、ロボットコントローラ６がアーム部ＡＲＭ及びハンド部を制御してワークＷＫをピックして搬送する。
【０１６２】
ステップＳＨ５でＹＥＳと判定されてハンド部が周囲の物体と干渉している場合には、ステップＳＨ６に進み、登録されている別の把持候補位置があるか否かを判定する。ステップＳＨ６でＹＥＳと判定されて別の把持候補位置がある場合には、ステップＳＨ３に戻る。ステップＳＨ６でＮＯと判定されて別の把持候補位置がない場合には、ステップＳＨ７に進む。ステップＳＨ７では、ステップＳＨ２で検出したワークが他にもあるか否かを判定する。ステップＳＨ７でＹＥＳと判定されて別のワークがある場合には、ステップＳＨ３に戻る。ステップＳＨ７でＮＯと判定されて別のワークがない場合には把持解無しとして終了する。このように三次元サーチで複数のワークが検出された場合、検出されたワークを１つずつ把持可能か否かを判定していく。
【０１６３】
図４６に示すフローチャートは、運用時の別の手順１を示しており、図４６に示すフローチャートのステップＳＩ１〜ＳＩ５までは図３８に示すフローチャートのステップＳＨ１〜ＳＨ５と同じである。図４６に示すフローチャートのステップＳＩ６では、ステップＳＩ３で計算した結果と同じ位置及び姿勢でハンド部が他の検出されたワークと干渉しないかどうか判定する。具体的には、各サーチ結果の位置姿勢から定まるサーチモデルの特徴点群と、ハンド部形状入力部３５で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。さらに、面の関係性を用いて、各サーチ結果から推定される別の面のサーチモデルの特徴点群に対しても、同様に干渉するか否かを判定する。
【０１６４】
ステップＳＩ７でＮＯと判定されれば、把持解有りとして終了する。一方、ステップＳＩ７でＹＥＳと判定されれば、ステップＳＩ８に進む。ステップＳＩ８及びステップＳＩ９は、それぞれ、図３８に示すフローチャートのステップＳＨ６及びステップＳＨ７と同じである。
【０１６５】
図４７Ａは、面の関連性を利用せずに、実際に三次元計測を行って得られた、三次元点群に対してのみ干渉判定を行った場合であり、把持対象のワークＷＫＡの右に近接しているワークＷＫＢの側面の形状が計測データで欠損していることが分かる。一方、図４７Ｂは、面の関連性を利用して、他のワークのサーチ結果の特徴点や、推定される別の面のサーチモデルにおける特徴点に対しても干渉判定させた場合であり、ワークＷＫＢが上から見たサーチモデルのサーチに成功していて、その上から見たサーチモデルとの関連性を用いてワークＷＫＢの側面の形状を推定しているので、ワークＷＫＢの側面にも特徴点が表示されている。このように面の関連性を利用することで、計測データで欠損している部分を推定して補うことができる。
【０１６６】
図４７Ａの場合、ワークＷＫＢの側面の形状が欠損しているので、把持対象のワークＷＫＡをハンド部で把持しようとした際に、実際にはワークＷＫＢの側面にハンド部の先端が干渉してしまうのに、干渉しないと誤判定してしまう。これに対し、図４７Ｂの場合、高さ画像の各１点１点のpixelデータが示す三次元点群に対する干渉判定以外に、ワークＷＫＢの側面の形状を面の関係性情報に基づいて推定し、推定したサーチモデルの特徴点も含めて干渉判定をしているので、把持対象のワークＷＫＡをハンド部で把持しようとした際にワークＷＫＢの側面にハンド部の先端が干渉すると判定され、正しい判定結果を得ることができる。
【０１６７】
また、図４８に示すように、ワークとハンド部との干渉については把持候補位置毎に判定することができる。干渉の原因については、図４８に示す画面上に、例えば特徴点とハンド部が干渉する場合には「点群干渉」と表示され、ハンド部の傾斜角度が規定範囲外になってしまう場合には「傾斜角度」と表示される。
【０１６８】
また、図４９に示すように、立方体形状のワークがばら積みされている場合には、ワークの六面全ての形状が同じであるので、一面のみサーチモデルとして登録し、その一面を真上から把持する把持姿勢を１つだけ登録する。これにより、六面全ての面に対するサーチならびに把持が可能になる。
（実施形態の作用効果）
この実施形態によれば、物理シミュレーション時にはデータ容量が圧縮された複数のワークモデルを用い、ピッキング動作シミュレーション時には、物理シミュレーションにより生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量の大きなワークモデルを配置したサーチ処理用データを使用するようにしたので、物理シミュレーションに要する時間を短縮しながら、再現性の高いばら積みピッキングシミュレーションを実行することができる。
【０１６９】
また、複数のサーチモデルを登録するとともに、各サーチモデルについて複数の把持候補位置を当該サーチモデルに対応付けて設定することが可能になる。登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行し、サーチに成功したワークモデルに対応付けられた複数の把持候補位置のそれぞれについて、ロボットによる把持が可能である場合には、その把持候補位置をロボットにより把持するピッキング動作をシミュレーションする。このシミュレーションを繰り返して把持に成功したときの各サーチモデル及び／または各把持候補位置の使用頻度を示す情報を比較可能に表示することができる。よって、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較でき、客観的なデータに基づいて把持位置を取捨選択することができる。
【０１７０】
また、ロボットＲＢＴのハンド部の形状をハンド部形状入力部３５によって複数入力し、入力された各ハンド部を用いてピッキング動作シミュレーションを実行し、各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができるので、ワークの取り出し成功率向上への寄与率が低いハンド部の形状を他のハンド部の形状と容易に比較でき、客観的なデータに基づいてハンド部を取捨選択することができる。
【０１７１】
また、三次元計測部３０で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定し、推定されたワーク表面も含めてロボットＲＢＴが周囲の物体と干渉することなく把持が可能か判定する。これにより、高さデータが欠損している部分のワークの形状を、高さデータが存在している部分を利用して推定することができるので、高さデータの一部に欠損があっても周囲の物体とロボットＲＢＴとの干渉の有無を精度良く判定できる。
【０１７２】
また、露光時間を設定する場合に、露光制御部４０が段階的に変化させた各露光時間において受光量を得ることができる。各露光時間の受光量に基づいて、高さ画像データを生成する各画素が有効か無効か判定される。有効と判定された画素の数が所定条件を満たす高さ画像に対応する露光時間を自動的に設定値するので、露光時間を手動操作によって調整することなく、有効画素数の多い高さ画像データを得ることができる。これにより、属人性が無くなって再現性が高くなり、しかも、様々なケースで適切な露光時間を得ることができる。
【０１７３】
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。
【産業上の利用可能性】
【０１７４】
以上説明したように、本発明は、例えばばら積みされているワークをピックするロボットシステムに適用することができる。
【符号の説明】
【０１７５】
２                センサ部
３                表示部
４                操作部
６                ロボットコントローラ
７                ロボット操作具
２０              ワークモデル設定部
２１              データ容量圧縮部
２２              物理シミュレーション部
２３              ばら積みデータ生成部
２４              サーチ処理部
２５              ピッキング動作シミュレーション部
２６              表示制御部
２７              サーチモデル登録部
２８              把持位置設定部
３０              三次元計測部
３１              干渉判定部
３２              把持位置決定部
３３              高さ画像生成部
３４              画素判定部
３５              ハンド形状入力部
４０              露光制御部
４１              露光時間設定部
４２              記憶部
１００            ロボット設定装置
２００            ロボットシミュレーション装置
３００            画像処理装置
４００            形状測定装置
１０００          ロボットシステム
ＢＸ              収納容器
ＣＭＥ１〜４      カメラ（受光部）
ＰＲＪ            プロジェクタ（投光部）
ＲＢＴ            ロボット
ＷＫ              ワーク
【図１】
2019028773.tif 000003
【図２】
2019028773.tif 000004
【図３】
2019028773.tif 000005
【図４】
2019028773.tif 000006
【図５】
2019028773.tif 000007
【図６】
2019028773.tif 000008
【図７】
2019028773.tif 000009
【図８】
2019028773.tif 000010
【図９】
2019028773.tif 000011
【図１０】
2019028773.tif 000012
【図１１】
2019028773.tif 000013
【図１２】
2019028773.tif 000014
【図１３】
2019028773.tif 000015
【図１４】
2019028773.tif 000016
【図１５】
2019028773.tif 000017
【図１６】
2019028773.tif 000018
【図１７】
2019028773.tif 000019
【図１８】
2019028773.tif 000020
【図１９】
2019028773.tif 000021
【図２０】
2019028773.tif 000022
【図２１】
2019028773.tif 000023
【図２２】
2019028773.tif 000024
【図２３】
2019028773.tif 000025
【図２４】
2019028773.tif 000026
【図２５】
2019028773.tif 000027
【図２６】
2019028773.tif 000028
【図２７】
2019028773.tif 000029
【図２８】
2019028773.tif 000030
【図２９】
2019028773.tif 000031
【図３０】
2019028773.tif 000032
【図３１】
2019028773.tif 000033
【図３２】
2019028773.tif 000034
【図３３】
2019028773.tif 000035
【図３４】
2019028773.tif 000036
【図３５】
2019028773.tif 000037
【図３６】
2019028773.tif 000038
【図３７】
2019028773.tif 000039
【図３８】
2019028773.tif 000040
【図３９】
2019028773.tif 000041
【図４０】
2019028773.tif 000042
【図４１】
2019028773.tif 000043
【図４２】
2019028773.tif 000044
【図４３】
2019028773.tif 000045
【図４４】
2019028773.tif 000046
【図４５】
2019028773.tif 000047
【図４６】
2019028773.tif 000048
【図４７】
2019028773.tif 000049
【図４８】
2019028773.tif 000050
【図４９】
2019028773.tif 000051