JP6970551B2 - 形状測定装置及び形状測定方法 - Google Patents

形状測定装置及び形状測定方法 Download PDF

Info

Publication number
JP6970551B2
JP6970551B2 JP2017148148A JP2017148148A JP6970551B2 JP 6970551 B2 JP6970551 B2 JP 6970551B2 JP 2017148148 A JP2017148148 A JP 2017148148A JP 2017148148 A JP2017148148 A JP 2017148148A JP 6970551 B2 JP6970551 B2 JP 6970551B2
Authority
JP
Japan
Prior art keywords
exposure time
unit
work
model
height image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017148148A
Other languages
English (en)
Other versions
JP2019027947A (ja
Inventor
毅 山上
真達 下平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keyence Corp
Original Assignee
Keyence Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Keyence Corp filed Critical Keyence Corp
Priority to JP2017148148A priority Critical patent/JP6970551B2/ja
Priority to US15/895,467 priority patent/US10190873B1/en
Publication of JP2019027947A publication Critical patent/JP2019027947A/ja
Priority to JP2021176872A priority patent/JP7233508B2/ja
Application granted granted Critical
Publication of JP6970551B2 publication Critical patent/JP6970551B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/24Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
    • G01B11/25Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures by projecting a pattern, e.g. one or more lines, moiré fringes on the object
    • G01B11/2518Projection by scanning of the object
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/02Measuring arrangements characterised by the use of optical techniques for measuring length, width or thickness
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/24Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
    • G01B11/25Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures by projecting a pattern, e.g. one or more lines, moiré fringes on the object
    • G01B11/2513Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures by projecting a pattern, e.g. one or more lines, moiré fringes on the object with several lines being projected in more than one direction, e.g. grids, patterns
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/24Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
    • G01B11/25Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures by projecting a pattern, e.g. one or more lines, moiré fringes on the object
    • G01B11/2545Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures by projecting a pattern, e.g. one or more lines, moiré fringes on the object with one projection direction and several detection directions, e.g. stereo

Description

本発明は、光を利用して測定対象物の形状を測定する形状測定装置及び形状測定方法に関する。
例えば各種製品の組み立て現場では、通い箱等に収容されている複数の部品(ワーク)を産業用ロボットのアームに取り付けられたハンド部等のエンドエフェクタで把持して順次取り出し、所定場所まで搬送することが行われている。
産業用ロボットには視覚センサとなるロボットビジョンが組み合わされて使用される場合が増えてきている。ロボットビジョンを備えたロボットシステムは、まずロボットビジョンによって把持対象となるワークを撮像してワークの高さ情報を取得した上で、予め登録されているワークの適切な位置を把持(ピック)し、ワークを所定場所まで搬送して載置(プレース)する動作を繰り返し行うように構成されている。
また、搬送前のワークは整列した状態で積み重ねられている場合もあるが、整列されておらず、無作為に積み重ねられた非整列状態、即ちばら積みされている場合がある。ワークがばら積みされている場合には、通い箱毎にワークの位置及び姿勢が異なっていて一つとして同じ位置及び姿勢のワークが無いのが通常である。このようなばら積みされたワークを順次取り出して所定場所まで搬送して載置する作業は、ばら積みピッキングと呼ばれている。ばら積みピッキングは、整列されているワークをピッキングする場合に比べて難易度がはるかに高く、ロボットのハンド部が周囲の物体と干渉しないように狙いとするワークを確実に把持できるように当該ロボットを制御する必要がある。
このようなばら積みピッキングを行うロボットの視覚センサとしては、測定対象物に光を照射して反射光を受光し、受光量に基づいて測定対象物の形状を示す高さ画像を得る形状測定装置が使用されることがある(例えば、特許文献1参照)。
特開2015−9314号公報
ところで、高さ画像を撮像する際には、投光部となるプロジェクタから投影したパターン光等の光がワークの表面で反射してカメラのイメージセンサに到達する。その際、イメージセンサの適切な露光時間は、ワークの材質に強く依存するとともに、同じワークであってもワークの配置状態(表面の傾き等)にも強く依存する。露光時間が適切でないと、高さ画像を構成するのに必要な有効画素の数が少なくなってしまう。
露光時間は手動操作によって調整することもできるが、手動操作の場合、ユーザは自分で設定した露光時間で得られた高さ画像を見ながら、最適な露光時間の範囲を探索していくプロセスが必要になる。また、最適な露光時間を絞り込むための探索を手作業で行う場合、属人性があるとともに再現性が悪く、様々なケースで適切な露光時間を得ることは難しい。さらに、高さ画像を構成する画素の場合は、見た目で有効画素であるか否かを判定するのは難しく、特に手作業で決定した露光時間が妥当な時間であるか否かを短時間で検証して判断することは困難である。
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、露光時間の適切な範囲を自動的に設定できるようにすることにある。
上記目的を達成するために、第1の発明は、測定対象物の形状を測定する形状測定装置であって、測定対象物に光を照射する投光部と、上記投光部により投光されて測定対象物で反射した光を受光する受光部と、上記受光部の露光時間を段階的に変化させるための露光制御部と、上記露光制御部が段階的に変化させた各露光時間において上記受光部から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面の各部位の高さを示す高さ画像データを生成する高さ画像データ生成部と、上記露光制御部が段階的に変化させた各露光時間において上記受光部が受光した受光量を得て、得られた受光量に基づいて、上記高さ画像データ生成部により生成される各高さ画像を構成する各画素が有効か無効かを判定する画素判定部と、上記画素判定部により有効と判定された画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定する露光時間設定部とを備えていることを特徴とする。
この構成によれば、露光制御部が段階的に変化させた各露光時間において受光量が得られる。各露光時間の受光量に基づいて、高さ画像データを生成する各画素が有効か無効か判定される。有効と判定された画素の数が所定条件を満たす高さ画像に対応する露光時間を自動的に設定するので、露光時間を手動操作によって調整することなく、有効画素数の多い高さ画像データを得ることができる。これにより、露光時間調整作業の属人性が無くなって再現性が高くなり、しかも、様々なケースで適切な露光時間を得ることができる。
第2の発明は、上記露光制御部は、露光時間を等比で増加させるように構成されていることを特徴とする。すなわち、仮に露光時間を等間隔で増加させるようにしていると、露光時間の短い部分を精細に探索する場合は、露光時間の長い部分での有効画素数の変化が小さく、撮像回数が膨大になってしまうおそれがあり、また露光時間の長い部分に合わせると露光時間の短い部分の有効画素数の変化を十分な分解能で観測できなくなるが、露光時間を等比で増加させることで、撮像回数を少なくしながら、有効画素数の変化の傾向を的確に掴むことができる。
第3の発明は、上記画素判定部は、上記受光部による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成されていることを特徴とする。すなわち、受光部による撮像範囲はワークが配置されている領域よりも広く設定されている場合が多いが、ワーク以外の領域の画素が有効か無効かを判定しても露光時間の設定値には意味がなく、逆に露光時間の設定値が不適になるおそれがある。この発明では、注目領域を設定によってワーク以外の領域の画素を除くことができるので、露光時間の設定値が適切な値になる。
第4の発明は、上記注目領域をユーザに設定させるための注目領域設定画面を生成する表示制御部と、上記表示制御部で生成された上記注目領域設定画面を表示する表示部とを備えていることを特徴とする。
第5の発明は、上記露光時間設定部は、上記画素判定部により有効と判定された画素の数が最も多くなる露光時間以下の所定時間を設定値として設定するように構成されていることを特徴とする。
好ましくは、画素の数が最も多くなる露光時間未満の所定時間を設定値として設定することである。すなわち、有効画素の数が最大値をとる露光時間は、図41に示すグラフの平坦に近い部分に存在することが多く、この場合、設定値として選択される露光時間が時間軸方向にぶれやすく、不安定になりやすい懸念がある。そこで、有効画素の数が最大値をとる露光時間ではなく、有効画素の数が最大値よりも若干少なくなる露光時間を設定値として設定するのが好ましい。
第6の発明は、上記投光部は、周期的な照度分布を有するパターン光を照射するように構成され、上記画素判定部は、各画素の光量のコントラストが閾値以上の画素を有効と判定するように構成されていることを特徴とする。
第7の発明は、上記露光時間設定部で設定された露光時間をユーザが調整可能に構成されていることを特徴とする。
第8の発明は、第1の露光時間に対応する高さ画像と、第1の露光時間とは異なる第2の露光時間に対応する高さ画像とを同時に表示可能にする表示制御部を備えている。
第9の発明は、上記画素判定部で有効と判定された画素数と、露光時間との関係を示すグラフを生成するとともに、露光時間軸を対数表示可能にする表示制御部を備えていることを特徴とする。
第10の発明は、測定対象物の形状を測定する形状測定方法であって、測定対象物に光を照射し、当該測定対象物で反射した光を受光部で受光し、上記受光部の露光時間を段階的に変化させ、段階的に変化させた各露光時間において上記受光部から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面の各部位の高さを示す高さ画像データを生成し、段階的に変化させた各露光時間において上記受光部が受光した受光量を得て、得られた受光量に基づいて、各高さ画像データを構成する各画素が有効か無効かを判定し、有効と判定した画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定することを特徴とする。
本発明によれば、段階的に変化させた各露光時間において受光部の受光量を得て、得られた受光量に基づいて、高さ画像データを構成する各画素が有効か無効かを判定し、有効と判定された画素の数が所定条件を満たす高さ画像に対応する露光時間を設定値として設定することができるので、露光時間の適切な範囲を自動的に設定することができる。
ロボットシステムを用いてばら積みピッキング動作を行う様子を示す模式図である。 ロボットシステムの概略構成を示すブロック図である。 ロボットシステムの詳細構成を示すブロック図である。 センサ部の一例を示す斜視図である。 図5Aはエンドエフェクタでワークを把持する例を示す模式図、図5Bは空洞を有するワークを内面から把持する例を示す模式図、図5Cは板状のワークを吸引して把持する例を示す模式図である。 図6Aは収納容器にワークを無作為に投入して積み上げた例を示す模式断面図、図6Bはワークを床面上に積み上げた例を示す模式断面図、図6Cはワークを一定姿勢でトレイ上に配列した状態を示す斜視図である。 ロボットシミュレーションの手順を示すフローチャートである。 シミュレーション環境の設定手順を示すフローチャートである。 ワークのCADデータが存在する場合のサーチモデルの登録手順を示すフローチャートである。 三次元CADデータに基づいたワークモデルを示す斜視図である。 図10に示すワークモデルの高さ画像を示す図である。 三次元CADデータに基づいた別のワークモデルを示す斜視図である。 図12に示すワークモデルの高さ画像を示す図である。 ワークのCADデータが存在する場合のサーチモデルの登録手順の別の例を示すフローチャートである。 ワークのCADデータが無い場合のサーチモデルの登録手順の例を示すフローチャートである。 CADデータが無い場合のワークモデルの高さ画像を示す図である。 特徴点を配置した高さ画像を示す図である。 ハンドモデルの登録手順の例を示すフローチャートである。 三次元CADデータに基づいたハンドモデルを示す側面図である。 ハンドモデルの断面を示す図である。 図21Aは、把持姿勢一覧が表示された把持位置設定用画面を示す図、図21Bは、把持姿勢設定領域が表示された把持位置設定用画面を示す図である。 ハンドモデルがワークの把持候補位置を把持可能な位置に配置された状態を示す図である。 6つのサーチモデルのそれぞれについてハンドモデルが把持候補位置を把持可能な位置に配置された状態を示す図である。 図24Aはポリゴン数削減前のワークモデルを示す図、図24Bはポリゴン数削減後のワークモデルを示す図である。 ワークの元の三次元形状が大きく崩れるまでポリゴン数を削減した後のワークモデルを示す図である。 物理シミュレーション画像と高さ画像とを同時に表示した画面を示す図である。 視点を変えて見た物理シミュレーション画像と高さ画像とを同時に表示した画面を示す図である。 高さ画像の中でワークモデルを検出した状態を表示する画面を示す図である。 図29Aは三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理前である場合を示す図であり、図29Bは圧縮処理前のワークモデルと、圧縮処理前のワークに対するサーチ結果(サーチモデルの各特徴点の位置)を重畳表示した図である。 図30Aは三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理後である場合を示す図であり、図30Bは圧縮処理後のワークモデルと、圧縮処理前のワークに対するサーチ結果(サーチモデルの各特徴点の位置)を重畳表示した図である。 三次元サーチの結果(サーチモデルの各特徴点の位置)の重畳表示を二次元表示した場合と三次元表示した場合の図である。 図32Aはハンドモデルと三次元計測点とが干渉していない場合を示す図であり、図32Bはハンドモデルと三次元計測点とが干渉している場合を示す図である。 ピッキング動作シミュレーション中の画像を示す図である。 ピッキング動作シミュレーションを複数回行って結果を蓄積する手順を示す統計蓄積フローチャートである。 ピッキング動作シミュレーションの結果を把持登録番号順にリスト表示した表である。 ピッキング動作シミュレーションの結果を回数降順にリスト表示した表である。 ピッキング動作シミュレーションの結果をハンド部の形状別にリスト表示した表である。 運用時の手順を示すフローチャートである。 撮像範囲内に注目領域を設定した場合を示す図である。 露光時間と有効画素数との関係を示すグラフである。 露光時間の設定要領を示す図である。 露光時間設定用画面であり、露光時間が推奨値にある場合を示す図である。 露光時間設定用画面であり、露光時間が推奨値よりも短い場合を示す図である。 露光時間設定用画面であり、露光時間が推奨値よりも長い場合を示す図である。 図45Aは三次元計測部で得られた計測データに基づいて生成した高さ画像を、やや斜め方向から三次元表示した点群と、サーチ結果の位置にサーチモデルの特徴点を重畳表示した図であり、図45Bは、図45Aに加え、三次元計測部で計測できていないワーク表面を他の面との関連性を利用して推定し、別の面のサーチモデルの特徴点も含めて重畳表示した図である。 運用時の別の手順を示すフローチャートである。 図47Aは面の関連性を利用せずに干渉判定して誤った判定結果が出ている場合を示す画像であり、図47Bは面の関連性を利用して干渉判定して正しい判定結果が出ている場合を示す画像である。 干渉判定を行っているときに表示部に表示される画像を示す図である。 立方体形状のワークがばら積みされている場合を説明する図である。
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
図1は、本発明の実施形態に係るロボットシステム1000の構成例を示す模式図である。この図1は、各種製品の製造工場等にある作業空間に積み上げられた複数のワークWKを、ロボットRBTを用いて順次取り出し、所定の場所に設置されているステージSTGまで搬送して該ステージSTG上に載置するばら積みピッキングを行う例について示している。
ロボットシステム1000はロボットRBTとロボットRBTを制御するロボットコントローラ6とを備えている。ロボットRBTは、産業用の汎用ロボットであり、ベース部が工場等の床面に対して固定されている。ロボットRBTは、例えばマニピュレータ等とも呼ばれており、6軸制御が可能に構成されている。このロボットRBTは、ベース部から延びるアーム部ARMと、アーム部ARMの先端部に設けられたエンドエフェクタEETとを備えている。アーム部ARMは、可動部としての関節部を複数備えた多関節型に構成することができる。アーム部ARMの各関節部の動作及びアーム部ARM自体の回転動作によってエンドエフェクタEETを可動範囲内の所望の位置まで移動させることができる。
エンドエフェクタEETは、ワークWKを把持するハンド部等で構成することができる。エンドエフェクタEETは、図5Aに示すようにワークWKの外側を挟み込んで把持する構造のエンドエフェクタEET1、図5Bに示すように空洞部を有するワークWK2の内部に爪部を挿入して拡開させることによって保持する構造のエンドエフェクタEET2、図5Cに示すように板状のワークWK3を吸引して保持するエンドエフェクタEET3等があり、いずれのエンドエフェクタも使用することができる。また、本明細書で「把持」とは、図5Aに示すワークWKの外側を挟み込む方法、空洞部に爪部を挿入して拡開させる方法、吸引する方法等の全ての例を含む意味で使用する。
ロボットRBTは、ロボットコントローラ6によって制御される。ロボットコントローラ6はアーム部ARMの動作やエンドエフェクタEETの開閉動作等を制御する。またロボットコントローラ6は図2に示すロボット設定装置100から、ロボットRBTの制御に必要な情報を取得する。例えば、図1に示す収納容器BXに無作為に投入された多数の部品であるワークWKの三次元形状を、三次元カメラや照明等のセンサ部2を使用して取得し、ロボット設定装置100でワークWKの位置や姿勢を検出して、その情報をロボットコントローラ6が取得する。
ロボットシステム1000の機能ブロック図を図2に示す。この図に示すロボットシステム1000は、ロボットRBT及びロボットコントローラ6の他に、ロボット設定装置100と、センサ部2と、表示部3と、操作部4と、ロボット操作具7とを備える。
操作部4では、後述する物理シミュレーション、ピッキング動作シミュレーション、画像処理に関する各種設定を行う。またセンサ部2で、ワークWKを撮像してワークWKの三次元形状を取得する。さらに表示部3で、設定や動作状態の確認、シミュレーションの確認等を行う。さらに、ロボット設定装置100の内部に設けられているロボットシミュレーション装置200や画像処理装置300が各種シミュレーション、三次元サーチ、干渉判定、把持解の算出等を行う。
一方、ロボットコントローラ6はロボット設定装置100から出力される信号に従い、ロボットRBTの制御を行うように構成された周知の部材である。またロボット操作具7は、ロボットRBTの動作設定を行う。なお、図2の例では操作部4とロボット操作具7を別個の部材としているが、これらを共通の部材としてもよい。
センサ部2は、ロボットビジョンなどと呼ばれる、作業空間やワークWKを撮像する部材であり、この実施形態では、ワークWKが少なくとも撮像対象物となる。センサ部2で撮像された画像から、ばら積みされたワークWKの三次元形状を示す三次元形状データを取得することが可能になる。なお三次元形状を取得する方法は、例えば、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法(白色干渉法)、TOF方式などがあり、これらの方法のうち、どの方法を用いてもよい。各方法は、従来から周知であるため、詳細な説明は省略する。本実施形態においては、パターン投影法のうち、周期的な照度分布を有するパターン光を撮像対象物に照射し、撮像対象物の表面で反射した光を受光する位相シフト法を用いている。
センサ部2は、測定対象物であるワークWKの形状を測定する形状測定装置400の一構成要素でもある。形状測定装置400は、ロボット設定装置100の一部とすることができるが、別部材として構成することもできる。センサ部2の具体的な構成は、三次元形状の計測技術に応じて決定される。このセンサ部2は、カメラ、照明又はプロジェクタ等を備える。例えば位相シフト法でワークWKの三次元形状を計測する場合は、センサ部2として図4に示すように、プロジェクタ(投光部)PRJと、複数のカメラ(受光部)CME1、CME2、CME3、CME4とを備える。プロジェクタPRJは、ワークWKに光を照射する部材である。カメラCME1、CME2、CME3、CME4は、プロジェクタPRJにより投光されてワークWKの表面で反射した光を受光する撮像素子を有する部材である。投光部の光源は、例えば複数の発光ダイオード、液晶パネル、有機ELパネル、デジタルマイクロミラーデバイス(DMD)等で構成することができる。
なおセンサ部2は、カメラCME1、CME2、CME3、CME4やプロジェクタPRJといった複数の部材で構成する他、これらを一体的に構成してもよい。例えばカメラCME1、CME2、CME3、CME4やプロジェクタPRJを統合してヘッド状とした3D撮像ヘッドを、センサ部2とすることができる。
また三次元形状データの生成自体を、センサ部2で行うこともできる。この場合、センサ部2に三次元形状データの生成機能を実現する画像処理IC等を設ける。あるいは、三次元形状データの生成を、画像処理装置300側で行わず、センサ部2で撮像した生画像を、画像処理装置300側で画像処理して三次元画像等の三次元形状データを生成する構成としてもよい。
さらに、センサ部2で撮像された画像に基づいて、キャリブレーションを実行することにより、実際のワークWKの位置座標(エンドエフェクタEETの移動位置の座標)と、表示部3上に表示された画像上の位置座標とをリンクさせることができる。
ロボット設定装置100は、センサ部2で得られたワークWKの三次元形状データに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。このロボット設定装置100は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用に設計された画像処理コントローラ、専用のハードウェアで構成することができる。また、グラフィックボードなどのハードウェアを画像検査処理に特化させた専用のコンピュータに、画像処理プログラムをインストールした構成とすることもできる。
なお図2の例では、センサ部2やロボットコントローラ6等をロボット設定装置100とは別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部2と画像処理装置100とを一体化したり、あるいはロボットコントローラ6をロボット設定装置100に組み込むこともできる。このように、図2に示す部材の区分けは一例であって、複数の部材を統合させることもできる。例えばロボット設定装置100を操作する操作部4と、ロボットコントローラ6を操作するロボット操作具7とを、共通の部材としてもよい。
ただし、センサ部2はロボットRBTと別体としている。すなわち、本願発明はセンサ部2をロボット本体5のアーム部ARMに設けない、オフハンド形式と呼ばれる形態を対象としている。いいかえると、センサ部2をエンドエフェクタEETに設ける、オンハンド形式等と呼ばれる態様は、本願発明に含まれない。
表示部3は、ロボット設定装置100で取得されたワークWKの三次元形状を表示させたり、各種シミュレーション画像を表示させたり、各種設定や動作状態の確認を行うための部材であり、例えば、液晶モニタや有機ELディスプレイ、CRT等を利用できる。操作部4は、各種シミュレーションや画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部3をタッチパネルとすることで、操作部4と表示部3を一体化することもできる。
例えばロボット設定装置100を、画像処理プログラムをインストールしたコンピュータで構成した場合、表示部3上には画像処理プログラムのグラフィカルユーザインターフェース(GUI)画面が表示される。表示部3上に表示されたGUI上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部3を各種の設定を行うための設定部として利用できる。
ロボットコントローラ6は、センサ部2で撮像した情報に基づいてロボットの動作を制御する。またロボット操作具7は、ロボットRBTの動作設定を行うための部材であり、ペンダントなどが利用できる。
ワークWKは、図1に示すように複数個が収容容器BXに無作為に収納されている。このような作業空間の上方には、センサ部2が配置されている。ロボットコントローラ6は、センサ部2で得られたワークWKの三次元形状に基づいて、複数のワークWKの内から、把持対象のワークWKを特定して、このワークWKを把持するよう、ロボットRBTを制御する。そして、ワークWKを把持したまま、アーム部ARMを動作させて予め定められた載置位置、例えばステージSTG上まで移動させ、所定の姿勢でワークWKを載置する。いいかえると、ロボットコントローラ6は、センサ部2及びロボット設定装置100で特定されたピッキング対象のワークWKをエンドエフェクタEETで把持して、把持したワークWKを所定の基準姿勢にて、載置場所(ステージSTG)に載置してエンドエフェクタEETを開放するようにロボットRBTの動作を制御する。ステージSTGは、例えばコンベアベルト上やパレット等を挙げることができる。
ここで本明細書においてばら積みピッキングとは、図6Aに示すような収納容器BXに入れられて無作為に積み上げられたワークWKを、ロボットRBTで把持して、所定の位置に載置する他、図6Bに示すように、収納容器を用いずに所定の領域に積み上げられたワークWKに対して把持、載置を行う例、あるいは図6Cに示すように所定の姿勢で並べられて積み上げられたワークWKを順次把持、載置する例も含む意味で使用する。また、必ずしもワークWK同士が積み重ねられている状態であることは要さず、ワークWK同士の重なりがない状態で平面上にランダムに置かれたワークWKについても、本明細書においてはばら積みと呼ぶ(順次ピッキングされていき、ピッキングの終盤でワークWK同士の重なりがない状態となった場合でも依然としてばら積みピッキングと呼ばれるのと同じ理由である)。なお、本発明はばら積みピッキングに必ずしも限定されるものでなく、ばら積みされていないワークWKをピックアップする用途にも適用できる。
また、図1の例ではセンサ部2を作業空間の上方に固定しているが、センサ部2の固定位置は、作業空間を撮像できる位置であればよく、例えば作業空間の斜め上方や側方、下方、斜め下方など、任意の位置に配置することができる。ただし、アーム部ARM上のような、可動する不定位置にセンサ部2を配置する態様は除かれる。さらにセンサ部2が有するカメラや照明の数も、1個に限らず複数個としてもよい。さらにまたセンサ部2やロボットRBT、ロボットコントローラ6との接続は、有線接続に限られず、周知の無線接続としてもよい。
ロボットシステム1000でばら積みピッキング動作を行うにあたり、予めばら積みピッキング動作を行わせるための設定を含めたティーチングを行うこともできる。具体的には、ワークWKのどの部位を、エンドエフェクタEETがどのような姿勢で把持するのか、把持位置及び姿勢などの登録を行う。このような設定は、ペンダント等のロボット操作具7で行うことができる。また、後述するように、実際のロボットを操作せずに、ビジョン空間上で設定を行うこともできる。
表示部3は、ワークWKの三次元形状を仮想的に表現するワークモデルや、エンドエフェクタEETの三次元形状を仮想的に表現する、三次元CADデータで構成されたエンドエフェクタモデルを、仮想的な三次元空間上でそれぞれ三次元状に表示させる。さらにこの表示部3は、ワークモデルの基本方向画像を六面図として表示させることもできる。これにより、ワークモデルの各姿勢を六面図で表示させて把持位置の設定作業を行えるようになり、従来面倒であった把持位置の設定作業を容易に行えるようになる。
(ロボットシミュレーション)
ロボットシステム1000は、作業空間に積み上げられた複数のワークWKをロボットRBTによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置200を備えている。ロボットシミュレーション装置200は、画像処理装置300と一体化することができ、画像処理装置300と共にロボット設定装置100の内部に設けることができる。画像処理装置300は、作業空間に積み上げられた複数のワークWKを把持して順次取り出すピッキング動作を行うロボットRBTの制御に用いられる装置である。
図3に示すように、ロボット設定装置100は、ワークモデル設定部20、データ容量圧縮部21、物理シミュレーション部22、ばら積みデータ生成部23、サーチ処理部24、ピッキング動作シミュレーション部25、表示制御部26、サーチモデル登録部27、把持位置設定部28、三次元計測部30、干渉判定部31、把持位置決定部32、高さ画像生成部33、画素判定部34、ハンド部形状入力部35、露光制御部40及び露光時間設定部41を備えている。これら各部は、ロボットシミュレーション装置200または画像処理装置300を構成しており、ハードウェアで構成することもできるし、ソフトウェアで構成することもできる。またこれら各部を全て一体化して1つの装置にすることもできるし、任意の一部分を他の部分と別にして複数の装置でロボット設定装置100を構成することもできる。またこれら各部を例えばマイクロプロセッサ(MPU)やCPU、LSI、FPGAやASIC等のゲートアレイ、DSP等のハードウェアやソフトウェア、あるいはこれらの混在により実現できる。また必ずしも各構成要素が図3等に示した構成と同一でなくてもよく、その機能が実質的に同一であるもの、及び一つの要素が図3に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。
例えば、露光制御部40及び露光時間設定部41は、センサ部2に設けることができる。また、表示制御部26は表示部3に設けることができる。また、ロボット設定装置100には各種情報を記憶するための記憶部42も設けられている。記憶部42は、半導体メモリやハードディスク等で構成することができる。また、記憶部42には、CD−ROMやDVD−ROM等の各種記憶媒体に記憶されている情報を読み取り可能な読み取り装置を設けることもできる。
ロボットシステム1000の運用前、即ち、実際の作業現場でワークWKの把持及び載置作業を行う前に、ロボットシミュレーション装置200によってロボットRBTの把持動作や載置動作のシミュレーションを三次元的に行うことができるように構成されている。ロボットシミュレーションでは、複数のワークモデルを無作為に積み上げたばら積み状態を生成する物理シミュレーションと、物理シミュレーションで生成されたばら積み状態のデータを利用してワークモデルの位置及び姿勢を検出し、ロボットRBTによるピッキング動作のシミュレーションを実行するピッキング動作シミュレーションとが行われる。以下、ロボットシミュレーション装置200及びロボットシミュレーション装置200によって実現されるロボットシミュレーション方法について図7に示すロボットシミュレーションフローチャートに基づいて具体的に説明する。
ロボットシミュレーションを開始する際には、図7に示すロボットシミュレーションフローチャートの開始後、ステップSA1においてシミュレーションを実行する環境(シミュレーション環境)を設定する。シミュレーション環境の設定には、ばら積みをさせるワークの数、収納容器BXの情報、床の情報、センサ部2を構成するカメラCMEやプロジェクタPRJの設計情報等が挙げられる。またピッキング動作シミュレーション時には、収納容器BXに対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。
シミュレーション環境の主要な設定手順を図8のシミュレーション環境設定手順フローチャートに示す。このシミュレーション環境設定手順フローチャートの開始後のステップSB1では、ワークWKのサーチモデルを登録する。その後のステップSB2では、ロボットRBTのハンドモデルを登録する。ステップSB1のワークWKのサーチモデルとは、後述するサーチ処理を実行する際に使用されるワークWKの形状を表したモデルである。ステップSB2のロボットRBTのハンドモデルとは、ハンド部(エンドエフェクタEET)の形状を表したモデルである。ステップSB1とステップSB2は順番を入れ替えてもよい。また、通い箱など、ワークを収納する収納容器BXをモデル化した容器モデルを設定できるようにしてもよい。
ステップSB1でワークWKのサーチモデルを登録する要領は、図9のサーチモデル登録フローチャートに示す通りである。図9のサーチモデル登録フローチャートでは、開始後、ステップSC1ではワークWKの三次元CADデータ(CADモデル)を読み込んで、ロボットシミュレーション装置200が有する記憶部42に一旦記憶させておく。三次元CADデータに基づいたワークモデルの例を図10に示す。CADデータは、ワークモデルのデータであり、従来から一般的に用いられているフォーマットのデータを使用することができる。
この実施形態では、CADデータのフォーマットとして最もシンプルなSTL形式を用いている。STL形式は、三角形のポリゴン情報(3点の座標とその面の法線ベクトル)の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
ステップSC1は、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップであり、図3に示すロボット設定装置100が有するワークモデル設定部20で行われる。このステップSC1で読み込んだCADデータのポリゴン数は、数千個から数万個ある場合がある。
ステップSC1に続くステップSC2では、CADモデルの外接直方体を規定し、この外接直方体の中心をCADの原点に補正する原点補正処理を行う。ワークモデルの原点は、三次元CADデータが有する座標情報から、ロボット設定装置100が自動的に決定する。例えばワークモデルの三次元CADデータに対して、ワークモデルに外接する仮想直方体を規定し、この仮想直方体の重心をワークモデルの原点として設定することができる。
その後、ステップSC3に進み、ステップSC1で読み込んだCADモデルの六面、CADモデルを「上」、「下」、「左」、「右」、「前」、「後」の各方向から見た高さ画像データを生成する。すなわち、CADモデルの平面図、底面図、左側面図、右側面図、正面図、背面図となるように、6つの高さ画像データを生成する。この高さ画像データから高さ画像が得られる。「上」はZ軸の正方向(プラス側)から見た高さ画像、「下」はZ軸の負方向(マイナス側)から見た高さ画像、「左」はX軸の負方向から見た高さ画像、「右」はX軸の正方向から見た高さ画像、「前」はY軸の負方向から見た高さ画像、「後」はY軸の正方向から見た高さ画像を、それぞれ示している。ただ、これらは一例であって、異なる座標系を用いてもよいし、X−Y平面におけるX=Yの直線を軸として、この軸と互いに直交する座標系に基づいて、各軸の正負方向から見た高さ画像を用いてもよい。また、三次元CADデータから、高さ画像を生成する際、必ずしもCADデータの軸に直交した方向(「上」、「下」、「左」、「右」、「前」、「後」)から見た高さ画像である必要はなく、例えばワークモデルの姿勢(視点)を任意に変えて、変えた状態の視点から高さ画像を生成するようにしてもよい。
このステップSC3では、CADモデルが三次元CADデータからなるものであるので、三次元CADデータをCADモデルのX、Y、Z座標のそれぞれについてプラス方向及びマイナス方向の各方向から見たときの高さ画像に変換することで、CADモデルの六面について高さ画像を得ることができる。図11には、図10に示すワークモデルを上下左右前後の各方向から見た高さ画像を示している。図10では、白くなるほど(色が明るくなるほど)高くなるように表示している。
ステップSC3に続くステップSC4では、ステップSC3で生成した6つの高さ画像の中で同じ見え方になる高さ画像を削除する。見え方の一致/不一致は、ワークの上下(Z軸の正負方向)、前後(Y軸の正負方向)、左右(X軸の正負方向)から見た、計六面の高さ画像を高さ画像データに基づいて生成し、高さ画像が一致しているか否かを確認する。ここでは90°の刻み角度で回転させて一致しているか否かを確認し、他の面と一致する見え方となる面は、サーチモデルの登録対象から除外する。このような除外は、ユーザが手動で行うこともできるし、ロボットシミュレーション装置200または画像処理装置300側で自動で行わせてもよいし、あるいはこれらを組み合わせて行うようにしてもよい。
具体例について説明すると、例えば、ワークWKが直方体であった場合には、CADモデルを上から見た高さ画像と下から見た高さ画像とが同じになり、この場合には、いずれか一方を削除する。CADモデルを左から見た高さ画像と右から見た高さ画像も同じになるので一方を削除する。また、CADモデルを前から見た高さ画像と後から見た高さ画像も同じになるので一方を削除する。これにより、サーチモデルの数を減らすことができるので、後述する各処理の速度を向上させることができる。ワークWKが複雑な形状であっても、一方向から見た高さ画像と他方向から見た高さ画像が同じになることがあり、この場合も一方の高さ画像を削除することができる。ワークWKが立方体の場合は6面のうち、5面を削除することができる。
また、例えば、ステップSC1で図12に示すような三次元形状を持ったワークモデルを読み込んだ場合、図13に示すように、ワークモデルを各方向から見た高さ画像を得ることができる。図12に示すワークモデルの場合は、X軸のプラス方向から見た高さ画像と、X軸のマイナス方向から見た高さ画像とが同じになるので、ステップSC4において一方を省略している。さらに、Y軸のプラス方向から見た高さ画像と、Y軸のマイナス方向から見た高さ画像とが同じになるので、ステップSC4において一方を省略している。よって、ステップSC4を経ることで図13に示すように高さ画像が4つになっている。
その後、ステップSC5に進み、ステップSC4で残った高さ画像データを保存する。保存する高さ画像データがCADモデルの上下左右前後のいずれの方向から見た画像であるかを示す情報、即ち方向に関する情報を当該高さ画像データに付与し、この方向に関する情報と高さ画像データとを関連付けてロボットシミュレーション装置200の記憶部42に保存しておく。これにより、上下左右前後の各面の関係性情報を持った状態で各高さ画像データを保存しておくことができるので、1つのワークモデルを異なる方向から見た複数の高さ画像データを相互に関連付けてロボットシミュレーション装置200または画像処理装置300に登録しておくことが可能になる。
したがって、高さ画像データを記憶部42から読み出したときに、例えば、CADモデルの6方向から見た高さ画像を関連付けて得ることができる。以上のように、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することが可能になる。サーチモデルは、作業空間に積み上げられたワークWKの位置及び姿勢を検出するサーチ処理に用いられるモデルであり、複数種登録しておくこともできる。
図9に示すサーチモデル登録フローチャートでは、ステップSC5で面の関係性情報を保存するようにしているが、これに限られるものではなく、例えば、図14に示すサーチモデル登録フローチャートのように、ステップSD1〜SD4までは図9に示すフローチャートのステップSC1〜SC4と同じであるが、ステップSD5においては面の関係性情報を保存することなく、高さ画像データのみ保存するようにしてもよい。
図9に示すサーチモデル登録フローチャートはワークWKのCADデータが存在している場合の要領であるが、仮にワークWKのCADデータが無い場合には、図15に示すワークWKのCADデータが無い場合のサーチモデルの登録手順の例を示すフローチャートに従い、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することができる。図15に示すサーチモデル登録フローチャートの開始後、ステップSE1では、登録したい面を上向きにしたワークWKを平面上に置き、三次元計測を行う。この三次元計測は、ロボットシステム1000のセンサ部2及び三次元計測部30を利用して行うことができる。三次元計測により得られた計測データは三次元計測部30から出力され、計測データに基づいて、ワークWKの登録したい面の高さ画像データを得ることができる。こうして得られた高さ画像の一例を図16に示す。
図15に示すフローチャートのステップSE1に続くステップSE2では、ステップSE1で得られた高さ画像データで得られた高さ画像をサーチモデルとして登録する。登録後、ステップSE3に進み、サーチに必要な分、登録し終えたか否かを判定する。この判定はユーザが行うことができるが、ロボットシミュレーション装置200または画像処理装置300に行わせるようにしてもよい。すなわち、ワークWKを上下左右前後の各方向から見た形状が全て異なれば、六面の全てについてステップSE1及びステップSE2を行うのが好ましいが、上述した長方形の場合や図12に示す形状のように同じ形状の面がある場合には六面の全てについて行わなくてもよい。ステップSE3でサーチに必要な分、登録し終えたら、終了する。
以上のようにしてワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するサーチモデル登録ステップを行うことができる。サーチモデル登録ステップは、図3に示すロボット設定装置100が有するサーチモデル登録部27で行われる。
図17に示すように、高さ画像に特徴点B、Cを配置することができる。特徴点B、Cは、サーチモデルの形状を表す点であり、1つの高さ画像の中に複数配置することができる。特徴点は、サーチモデルの周縁部に沿って配置される外形状指示点Bと、サーチモデルの面内に配置される面形状指示点Cとを含んでいる。外形状指示点Bは、サーチモデルを構成する各面の外形状を示す点であり、面の外形線上を所定の間隔をあけて配置される。面形状指示点Cは、サーチモデルを構成する各面の周縁部を除いた内側において所定の間隔をあけて配置される。特徴点を配置することで、特徴点を用いてサーチモデルの概略形状を把握することができ、取り扱うデータ量が少なくて済む。外形状指示点Bと面形状指示点Cとの色は変えるのが好ましい。外形状指示点Bと面形状指示点Cは、表示部3に表示される。
次に、図8に示すシミュレーション環境設定手順フローチャートのステップSB2で行うロボットRBTのハンドモデルの登録要領について説明する。ロボットRBTのハンドモデルの登録要領は、図18のハンドモデル登録手順フローチャートに示しており、このフローチャートの開始後のステップSF1では、ハンド部(エンドエフェクタEETに等しい)のポリゴンデータ(CADデータ)を読み込む。このステップSF1では、ハンド部のポリゴンデータを読み込むことから、ハンド部の形状を入力することができるステップである。従って、ステップSF1は、ロボットRBTのハンド部の形状を入力するハンド部形状入力ステップであり、このハンド部形状入力ステップは、図3に示すロボット設定装置100が有するハンド部形状入力部35で行われる。
ステップSF1に続くステップSF2では、ハンド部の断面を作成する方向を決定する。図19に示すハンドモデルに基づいて説明すると、ハンドモデルに軸Aを設定しておく。軸Aは、ハンドモデルの中心部を通り、かつ、ハンドモデルの長手方向に延びている。この軸Aと直交する方向の断面を作成する。作成する断面は、1つではなく、ハンドモデルの先端から基端に亘って複数箇所の断面を作成する。この例では、断面1〜断面5の5つの断面を作成する場合を示しているが、断面の作成数は任意に設定することができる。断面を作成する位置は、ポリゴンデータの頂点位置に設定することができる。作成した断面を図20に示す。
図18に示すフローチャートのステップSF3では、ステップSF2で作成した断面を利用して断面モデルを作成する。つまり、断面の形状と、ステップSF1でハンドモデルに設定した軸Aに対する断面の位置との情報とにより、ハンド部の断面モデルを作成することができる。また、断面モデルの作成方法は別の方法であってもよく、例えば、軸A方向に一定距離ごとに断面を作成し、同じ形状の断面を結合する方法であってもよい。
ロボットRBTのハンド部の形状は様々あり、図19に示す形状以外にも、例えば爪部が長い形状、短い形状、爪部の幅が狭い形状、広い形状、爪部が棒状のもの等がある。これらハンド部も図18のハンドモデル登録手順フローチャートに従って登録しておくことができる。つまり、図3に示すハンド部形状入力部35では、ロボットRBTのハンド部の形状を複数入力して登録しておくことができる。
以上のようにして図8のシミュレーション環境設定フローチャートのステップSB2を経てロボットRBTのハンドモデルを登録した後、ステップSB3に進む。ステップSB3では、ロボットRBTのハンド部で把持するワークの面を選択する。ワークの面は、図9に示すサーチモデル登録フローチャートで登録した高さ画像で表すことができ、登録されている複数の高さ画像の中から、ロボットRBTのハンド部で把持することが可能な面に対応した高さ画像をユーザが選択する。高さ画像の選択にあたっては、高さ画像選択用の画面を表示制御部26が作成して表示部3に表示させることができる。高さ画像選択用の画面では、図9に示すサーチモデル登録フローチャートで登録した複数の高さ画像を一度に表示させておき、これら高さ画像の中からユーザが操作部4の操作によって選択することができる。
ステップSB3で高さ画像を選択した後、ステップSB4に進み、ステップSB3で選択した面を把持する時のハンド部の位置及び姿勢を登録する。ステップSB4では、図21に示すような把持位置設定用画面(GUI)50を表示部3に表示させる。把持位置設定用画面50は、図3に示すロボット設定装置100が有する把持位置設定部28で生成することができる。生成された把持位置設定用画面50は、表示制御部26が表示部3を制御することによって図21に示すように表示することができる。
図21Aに示すように、把持位置設定用画面50は、モデル表示領域51と、サーチモデル選択領域52と、把持位置表示領域53とを有している。モデル表示領域51には、ロボットRBTのハンドモデルと、サーチモデル選択領域52で選択されたサーチモデルとが表示される。サーチモデル選択領域52には、A〜Dが表示されており、それぞれにサーチモデルが割り当てられており、例えば、AにはCADモデルを上から見た高さ画像、BにはCADモデルを左から見た高さ画像、CにはCADモデルを右から見た高さ画像、DにはCADモデルを前から見た高さ画像を割り当てることができる。ユーザがサーチモデル選択領域52の任意のアルファベットを選択すると、そのアルファベットに割り当てられているサーチモデルがモデル表示領域51に表示される。
把持位置表示領域53には、把持位置追加ボタン53aが設けられている。把持位置追加ボタン53aを操作すると、図21Bに示すように把持姿勢設定領域54がモデル表示領域51と共に表示される。把持位置追加ボタン53aは、仮想的なボタンであり、操作部4のマウス等で操作することができる。
把持姿勢設定領域54には、X軸座標、Y軸座標、Z軸座標、X軸周りの回転角度、Y軸周りの回転角度、Z軸周りの回転角度を個別に入力可能な入力領域55が設けられている。各入力領域55に数値を入力すると、入力された値に対応するように、モデル表示領域51に表示されているハンドモデルが移動していく。これにより、ハンドモデルを所望位置に配置することができるので、ハンドモデルの位置を調整しながら、ハンドモデルでサーチモデルのどの部位をどのような姿勢で把持するか、即ち把持位置及び姿勢を設定することが可能になる。把持位置及び姿勢の設定は、各入力領域55に数値を入力する以外にも、例えばハンドモデルを操作部4のマウスで直接的に操作することによっても可能である。
ここで設定する把持位置は、ロボットRBTにより把持される把持候補位置である。図21Aに示すように、ロボットRBTにより把持される把持候補位置は、サーチモデル登録部27で登録されている各サーチモデルに対応付けて複数設定することができる。例えば、あるサーチモデルには、2つの把持候補位置を対応付けて設定し、別のサーチモデルには、4つの把持候補位置を対応付けて設定することができる。設定された把持候補位置は、サーチモデルと対応付けられた状態でロボット設定装置100が有する把持位置設定部28の記憶部42に登録することができる。
一般に、一のワークに対して把持候補位置を複数登録することが多い。これは、把持候補位置を複数登録しておけば、複数の把持解の中から最適な解を選ぶことができるため、仮に得られた把持解候補が、例えばハンド部の他の物体との干渉によって最終的な解となり得ない場合、他の把持解候補があれば、把持可能と判定される可能性が高まるからである。このような把持候補位置を複数登録する際、その都度登録を一から行うと、同様の把持候補位置を登録する際に手数が多くなり作業が面倒となる。そこで、既に登録済みの把持候補位置情報をコピーして、この把持候補位置で設定された位置パラメータの一部を変更して、新たな把持候補位置として保存可能とすることで、手間を省いて複数の把持候補位置を容易に登録できるようになる。また、同様に既存の把持候補位置を読み出して、位置パラメータを適宜修正して上書き保存することも可能である。
図22ではハンドモデルを把持候補位置に配置した状態を示している。また、図23では、6つのサーチモデルのそれぞれについてハンドモデルを把持候補位置に配置した状態を示しているが、全てのサーチモデルに把持候補位置を設定しなくてもよい。
把持候補位置を登録する際、サーチモデルの原点に対して、ワークモデルを把持する際のエンドエフェクタモデルの相対的な位置及び姿勢を登録する。一方、実際のエンドエフェクタEETでワークWKをピッキングする際には、センサ部2でワークWKを撮像した三次元空間(ビジョン空間)の座標であるビジョン座標から、ロボットコントローラ6がロボットRBTを実際に動作させる際に用いるロボット座標に変換する必要がある。
具体的には、ワークモデルの位置及び姿勢は、ビジョン空間における、位置(X、Y、Z)と姿勢(RX、RY、RZ)で求められる(なお姿勢(RX、RY、RZ)はZ−Y−X系オイラー角で表現された姿勢を示している)。また、これを把持するエンドエフェクタモデルの姿勢についても、同様にロボット設定装置100の仮想三次元空間における位置(X、Y、Z)と姿勢(RX、RY、RZ)として求められる。このようなビジョン空間における位置及び姿勢に基づいて、ロボットコントローラ6がロボットRBTを動作させるには、これらをロボット空間における位置(X’、Y’、Z’)と姿勢(RX’、RY’、RZ’)に変換する必要がある。この表示される座標系で算出された位置及び姿勢を、ロボットコントローラ6がエンドエフェクタEETを動作させる座標系の位置及び姿勢に座標変換するための変換式を算出する処理は、キャリブレーションと呼ばれる。このキャリブレーションは従来から周知の手法で行うことができる。
図8に示すフローチャートのステップSB5では、必要数の把持候補位置を登録できたか否かを判定する。ハンド部で把持することが可能な部位が多数あれば、登録すべき把持候補位置の数が多くなるが、これはユーザが判断する事項であるため、ステップSB5の判定はユーザが判定することになる。ステップSB5でNOと判定して必要数の把持候補位置を登録できておらず、登録すべき把持候補位置が他にも残っている場合には、ステップSB3を経てステップSB4に進み、他の把持候補位置を設定し、登録する。一方、ステップSB5でYESと判定して必要数の把持候補位置を登録できている場合には、このフローを終了する。
図7に示すステップSA1のシミュレーション環境設定ステップでは、上述のようにサーチモデルの設定及び登録、ハンドモデルの設定及び登録を行うことができるが、これら以外にもシミュレーションを行う上で必要な各種情報の入力や設定を行うことが可能である。
ステップSA1に続くステップSA2では、ばら積み情報を入力する。ばら積み情報とは、例えば、一度にばら積みするワークの個数、ばら積みする箇所の形状(平面であるか、箱であるか)、ばら積みする箇所の大きさ等を入力する。
ステップSA2でばら積み情報を入力するとステップSA3に進み、ワークWKの三次元CADデータ(CADモデル)を読み込む。図9のサーチモデル登録フローチャートのステップSC1で読み込んだデータを読み出してステップSA3で使用することができる。
CADデータを読み込んだ後、ステップSA4に進み、ステップSA3で読み込んだCADデータのポリゴン数を削減する。CADデータのポリゴン数を削減するということは、ワークモデルのデータ容量が圧縮されて小さくなるということである。また、ワークモデルのデータを間引くことによってデータ容量を圧縮することも可能である。
三次元CADデータは、一般に、三角形の面情報の集合体として表されるポリゴンデータで表され、ワークモデルの形状を極力保ちながらポリゴン数を削減する方法としては、例えば、Hoppeらが提案するプログレッシブメッシュ法や、Garlandらが提唱するQEM(Quadratic Error Metirc)法という手法があり、これら従来から周知の手法のうち、いずれの手法を用いてポリゴン数の削減処理を行ってもよい。
例えば、QEM法では、隣接するポリゴンのエッジを消去し、2つの頂点を結合して新たな頂点を生成し、この操作を繰り返すことで、CADデータ全体を構成するポリゴン数を大幅に削減し、データ容量を圧縮することができる。また、ステップSA4は、ステップSA3で読み込んだCADデータのデータ容量を圧縮することができればよいので、ポリゴン数を削減する方法以外にも、各種方法によってデータ容量を圧縮するようにしてもよい。
このステップSA4は、CADデータで表されるワークモデルの形状を極力保ちながら、ポリゴン数を削減したワークモデルを作成して、後述する物理シミュレーション部22による物理シミュレーション時の演算負荷の軽減するために行うステップである。ステップSA4は、ワークモデル設定部20で設定されたワークモデルのデータ容量を圧縮する処理を行うデータ容量圧縮ステップに相当し、図3に示すロボット設定装置100が有するデータ容量圧縮部21で行われる。
データ容量圧縮の具体例を示すと、図24Aは、ポリゴン数削減前のワークモデルを示しており、ポリゴン数は26,214個ある。図24Bは、ポリゴン数削減後のワークモデルを示しており、ポリゴン数は414個ある。また、図25は、図24Bに示すワークモデルよりもポリゴン数を削減した後のワークモデルを示しており、ポリゴン数は50個ある。図24Bに示すワークモデルは、ポリゴン数を大きく削減しているにも関わらず、ポリゴン数削減前のワークモデルの形状を残しており、この程度の削減量(データ圧縮量)であれば、後述するシミュレーション結果が再現性の高い結果となるので好ましい。
一方、図25に示すワークモデルは、ポリゴン数の削減度合いが大き過ぎてポリゴン数削減前のワークモデルの形状からかけ離れた形状になっており、このワークモデルを用いて後述するシミュレーションを行うと、再現性が著しく低くなる可能性が高いので好ましくない。
この実施形態では、過度にポリゴン数を削減したことによってワークモデルの形状が大幅に変化することを防ぐため、形状変化が予め設定したしきい値の範囲内に収まるようにしている。これを実現するために、図3に示すロボット設定装置100が有するデータ容量圧縮部21は、圧縮処理前のワークモデルと圧縮処理後のワークモデルとの形状変化許容値を設定可能に構成されている。ユーザは、自分が使用するCADデータのポリゴン数を削減すればするほど処理速度が高速になるのでポリゴン数を多く削減したいが、上述したようにシミュレーションの結果が再現性の低い結果になるおそれがあるので、ポリゴン数を削減するのには限度がある。しかし、ポリゴン数の削減量をどの程度にまで抑えておけばシミュレーションの結果の再現性が高くなるのかをユーザ自身が判断することは簡単なことではなく、誤った判断の元でポリゴン数を削減してしまうと、シミュレーション結果と実際の運用時のピッキング動画との関連性が低くなってしまい、シミュレーションを行う意味が無くなる。
このことを防止するために、データ容量圧縮部21では、ポリゴン数の削減によるワークモデルの形状変化を許容する形状変化許容値として、予め設定された初期設定値を持っている。初期設定値は、ロボット設定装置100の出荷時に記憶部42に記憶させておくこともできるし、ロボット設定装置100の使用開始時に記憶部42に記憶させることもできる。初期設定値は運用後に変更することもできる。
例えば、上述したQEM法では、隣接する複数の面の中のエッジとその両端の頂点を削減して新しい頂点を生成した際の変形量をコストとし、このコストの小さい順にエッジを消去していく。形状変化許容値を例えば1%オーダーの小さい値に抑えた上で、累積変形量がその形状変化許容値に収まる範囲でエッジと頂点を削除していけば、極端な形状変化を防ぎつつ、効果的にポリゴン数を削減することができるので、演算負荷を軽減しながら、シミュレーションの結果を再現性の高いものにすることができる。
例えばQEM法では、ポリゴンデータを構成するすべてのエッジ(稜線)に対して、その両端の頂点を削除して新しい位置に頂点を生成した場合(エッジ削除)の変形量の期待値を計算し、これを昇順にソートした上で、変形量の期待値が小さいものから順にエッジを削除していくことができる。あるエッジを削減すると、その両端が新しい頂点に移動し、隣接する頂点との間に新しいエッジが生成されることになる。ここで生成されるすべてのエッジの変形量の期待値に対して、先の操作により削除されたエッジの変形量の期待値を加算した状態で、再びすべてのエッジの変形量の期待値を昇順にソートし、この結果、あるエッジ削除の操作により新たに生成されたエッジは、そこに至るまでの当初の形状からの変形量が累積された形になり、以降はより削減されにくくなる。
形状変化許容値をユーザが入力可能に構成することもできる。例えば形状変化許容値の入力用画面を表示制御部26によって表示部3に表示させ、ユーザが操作部4を使用して形状変化許容値を入力することができる。同様にして初期設定値も変更することができる。
ワークモデルのデータ容量を圧縮した後、図7に示すフローチャートのステップSA5に進み、物理シミュレーションを実行する。物理シミュレーションは、図3に示すロボット設定装置100が有する物理シミュレーション部22が行い、具体的には、データ容量圧縮部21でデータ容量が圧縮された複数のワークモデルを用いて、ワークが重力の作用を受けて作業空間に配置される動作をシミュレーションし、仮想的な作業空間に複数のワークモデルを積み上げたばら積み状態を生成する。これが物理シミュレーションステップである。物理シミュレーションを行うことで、明らかに不自然な姿勢のワークモデルを除外するなど、ユーザの実運用環境に合わせたばら積みデータを生成して後述するピッキング動作シミュレーションを行えるため、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。物理シミュレーション部22は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。
物理シミュレーションは、従来から周知の物理シミュレーションエンジンを用いて実行することができる。物理シミュレーションでは、ワーク同士の衝突による作用、床等の障害物の情報に基づいてワークモデルを仮想的に配置していく。実運用時に図1に示すような収容容器BXにワークWKを収容する場合には、ワークモデルを収容容器BXに上方から投入するシミュレーションを物理シミュレーションエンジンが行うように設定することができる。また、物理シミュレーションでは、例えばワーク同士が衝突した場合に、予め設定された反発係数や摩擦係数を考慮して、その後ワークモデルがどのような動きになるかが示される。
物理シミュレーションの例としては、例えば、収容容器BXにワークWKを上方から投下または投入して収容容器BXの内部にばら積み状態を生成する場合を挙げることができる。「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは収納容器BXや床面にワークモデルを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルを1つずつ作業空間内に順次投入する他、複数のワークモデルを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
物理シミュレーションを実行した後、ステップSA6に進み、ワークモデルのばら積み状態データを、物理シミュレーションの結果に基づいて生成する。このステップも物理シミュレーションステップに含まれるステップであるが、実行するのは、図3に示すロボット設定装置100が有するばら積みデータ生成部23である。
ワークモデルのばら積み状態データに基づいて画像を生成すると、図26及び図27に示す画像が得られる。図26及び図27は、表示部3に表示される画像を示しており、各図における左側の画像が物理シミュレーション画像57、右側の画像が後述する高さ画像58である。表示制御部26は、ワークモデルのばら積み状態データに基づいて、ワークモデルが収納容器BXに無作為に投入された状態を示す画像を生成し、物理シミュレーション画像57として表示部3に表示させる。この物理シミュレーション画像57の中のワークモデルは、データ容量圧縮前のワークモデルとすることもできる。この場合、ワークモデルのばら積み状態データの中のワークモデルの位置及び姿勢情報にしたがって、データ容量圧縮部21による圧縮処理を行う前のワークモデルを配置することにより、物理シミュレーション画像57上では精緻なワークモデルとして表示できる。尚、圧縮処理を行う前のワークモデルを配置する代わりに、物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置するようにしてもよい。また、ユーザは、物理シミュレーション画像57を見て、物理シミュレーションの結果が、後述するピッキング動作シミュレーションに不適な結果であると思われる場合には、その物理シミュレーションの結果を破棄して改めて物理シミュレーションを実行することができる。
図26及び図27に示すように、物理シミュレーション画像57と、高さ画像58とは独立して視点、即ち見る角度を変えた画像にすることができる。物理シミュレーション画像57と、高さ画像58との配置は図示した配置に限られるものではなく、1つの表示画面上の任意の位置にそれぞれ配置することができる。また、物理シミュレーション画像57は、例えば物理シミュレーションの実行開始から終了までを動画として表示可能にしてもよい。この場合、収納容器BXの上方から複数のワークモデルを収納容器BXに投下する様子、ワークモデル同士が衝突する様子、ワークモデルが収納容器BXの壁に衝突する様子も見ることができ、最終的にどのようしてばら積み状態が生成されたのかをユーザが把握できる。
ワークモデルのばら積み状態データを生成した後、図7に示すステップSA7に進み、ワークモデルのばら積み状態データの中のワークモデルをポリゴン数削減前のCADデータと置換する。すなわち、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置する。このようにして、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行するためのサーチ処理用データを生成するデータ生成ステップが行われる。このサーチ処理用データの生成は、図3に示すロボット設定装置100が有するばら積みデータ生成部23で行われる。
物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークWKの三次元形状に近いワークモデルというのは、データの圧縮量が低く、物理シミュレーションステップで用いたワークモデルよりも精緻な形状を持ったワークモデルである。このワークモデルに置き換えることで、後述するピッキング動作シミュレーションの結果の再現性を高めることができる。
ばら積みデータ生成部23は、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量圧縮部21による圧縮処理を行う前のワークモデルを配置することによってサーチ処理用データを生成することもできる。こうすれば後述するピッキング動作シミュレーションの結果がより一層再現性の高い結果になる。
ステップSA7においてサーチ処理用データを生成した後、ステップSA8に進み、ワークモデルの各部の高さを表す高さ画像データを生成する。高さ画像データから得られる高さ画像は、高さ情報を有する画像であって、距離画像、三次元画像等とも呼ばれる。サーチ処理用データにはワークモデルの高さに関する情報が含まれているので、これに基づいて周知の手法によって高さ画像データを得ることができる。図26及び図27に示すように、ステップSA8で生成された高さ画像データに基づいて得ることができる高さ画像58は、物理シミュレーション画像57と同時に表示部3に表示される。
図7に示すステップSA8で高さ画像を生成した後、ステップSA9に進み、ばら積みデータ生成部23により生成されたサーチ処理用データに対し、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行する。これはサーチ処理ステップであり、図3に示すロボット設定装置100が有するサーチ処理部24が行う。
サーチ処理は高さ情報を含むサーチ処理用データに対してサーチをかけるので、三次元サーチと呼ぶことができる。具体的には、サーチモデル登録部27で登録されたサーチモデルを用いて、各ワークモデルの姿勢と位置を特定する三次元サーチを行う。まずサーチモデルの各特徴点が、最も一致する状態の位置及び姿勢(X、Y、Z、RX、RY、RZ)を、高さ画像の中から探索する。ここでRX、RY、RZは、それぞれX軸に対する回転角、Y軸に対する回転角、Z軸に対する回転角を表す。このような回転角度の表現方法は種々提案されているところ、ここではZ−Y−X系オイラー角を用いることができる。また一致する位置及び姿勢は、各サーチモデルに対して、1つである必要はなく、一定以上一致する位置及び姿勢を、複数検出してもよい。
たとえば、図28に示すように、高さ画像の中で特徴点の一致に基づいてワークモデルを検出した場合には、その検出位置にサーチモデルの特徴点を、周囲よりも明るい色で重畳表示させることができる。このように三次元サーチに用いるサーチモデルとして、ワークを六面図のように、面ごとに見た画像を用いることで、斜視図などを用いる場合と比べ、三次元サーチの演算処理を簡素化でき、処理を軽負荷、高速化できる利点が得られる。また、サーチモデルの登録作業に際しても表示された状態が見易くなり、ユーザにも視覚的に判り易くできる。
ここで、例えば、三次元サーチに用いる高さ画像を構成するワークモデルが、データ容量圧縮部21で圧縮処理されたワークモデルであった場合について説明する。図29は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理前である場合を示しており、一方、図30は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理後である場合を示している。図29Bと図30Bとを比較すると、図29Bの方は特徴点の位置が正確に合致した状態になっているのに対し、図30Bの方は特徴点の位置が正確に合致しない状態になってしまい、スコアが下がっていることが分かる。したがって、三次元サーチ時には、図29Bに示す圧縮処理前のワークモデルを用いることで、三次元サーチの正確性を高めることができる。尚、三次元サーチ時に図30Bに示す圧縮処理後のサーチモデルを用いてサーチするようにしてもよいが、そのときの圧縮量が低い方が好ましい。
図31に示すように、三次元サーチの結果の位置に、サーチモデルの各特徴点を重畳表示させることができる。図31の左側には、二次元表示した場合を示しており、右側には、三次元表示した場合を示している。対応する特徴点が、高さ画像中に対してどの程度存在したか(例えば、高さ画像に対し、一定の距離以下の誤差で対応した特徴点の点数割合など)によって、サーチ結果をスコア付けすることができる。
サーチ処理部24が高さ画像中にサーチモデル登録部27で登録されたサーチモデルが存在するか否かをサーチした結果、高さ画像中に、サーチモデルが存在しない場合、即ちワークモデルを検出できない場合には、図7に示すステップSA10においてNOと判定されてステップSA11に進み、残ったワークモデルの情報を抽出し、このフローを終了する。
ステップSA9の三次元サーチの結果、高さ画像の中にワークモデルを検出できた場合には、ステップSA10でYESと判定されてステップSA12に進み、干渉判定及び把持解を算出する。このステップSA12〜SA15は、サーチ処理部24によりサーチに成功したワークモデルに対して、ロボットRBTによりピッキング動作のシミュレーションを実行するピッキング動作シミュレーション部25が行うピッキング動作シミュレーションステップである。三次元サーチの結果、高さ画像の中に複数のワークモデルを検出できる場合もある。ピッキング動作シミュレーション部25に物理シミュレーションの機能や高さ画像生成機能を持たせてもよい。
このように、ピッキング動作シミュレーション部25は、生成されたばら積みデータに対して、仮想作業空間内のワークモデルのばら積みピッキング動作を検証するための部分である。ピッキング動作シミュレーションを行うことにより、ワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、実際にワークを用意することなく、実運用に近い形で事前に行うことができる。
特に物理シミュレーション部22は、ピッキング動作シミュレーション部25による一のワークモデルをハンドモデルで把持し少なくとも取り出し動作を開始した後、このワークモデルが取り出された後の状態のばら積みデータに対して物理シミュレーションを再度実行するように構成することができる。物理シミュレーションを再度実行するタイミングは、ワークモデルをハンドモデルで把持し、載置位置にプレースされた後とする他、ワークモデルの取り出し作業の途中であってもよい。すなわち、ハンドモデルでワークモデルを把持して、このワークモデルが持ち上げられた状態では、一のワークモデルが除去されたことで、このワークモデルの周辺にあった他のワークモデルが移動可能となるため、把持されたワークモデルが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルがハンドモデルで把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルが把持されて持ち上げられた時点から所定の時間の経過後(例えば10秒後)としてもよい。物理シミュレーションを再度実行した後、ばら積みデータを更新する。
したがって、ピッキング動作シミュレーション中にばら積みデータからワークモデルが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーションにより演算され、この演算後のばら積みデータを利用してピッキング動作シミュレーション部25がその後のピッキング動作シミュレーションを実行するので、より正確なばら積みピッキングのシミュレーションが実現される。
干渉判定は、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを判定する。干渉判定の前に、三次元サーチで検出された一のワークモデルに対して、このワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、エンドエフェクタEETを配置すべき位置と姿勢を計算する。ピッキング動作シミュレーション中の画像を図33に示す。計算された位置において、エンドエフェクタが周囲の物体と干渉しないかどうかを、図18のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。この干渉判定では、ハンドモデルの断面モデルを利用して三次元点群が断面モデルと干渉しているか否かを判定する。具体的には、図32Aに示すように、断面モデルから全ての三次元点が離れている場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していないと判定し、一方、図32Bに示すように、断面モデルの内側に三次元点が1つでも入っている、または断面モデルの縁部に三次元点が1つでも接している場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していると判定する。干渉していない場合は、このワークモデルに対して把持解を算出することができたということであり、ステップSA13においてYESと判定されてステップSA14に進む。一方、三次元点群とハンドモデルとが干渉している場合は、このワークモデルに対して把持解を算出することができないということであり、ステップSA13においてNOと判定されてステップSA11に進み、このフローを終了する。
一方、把持解を算出することができてステップSA14に進むと、ワークモデルの数を1つ減らす。このステップSA14で減らすワークモデルは把持解を算出することができたワークモデルである。ワークモデルを1つ減らした後、ステップSA15に進み、三次元サーチで得られた他のワークモデルがあればステップSA12に進む。他のワークモデルが無ければステップSA15でNOと判定されてステップSA11に進み、このフローを終了する。
このようにして、ワークモデルを把持可能な把持解の有無を検出されたワークモデル毎に判定する。そして、ワークモデルに把持解が得られた場合は、そのワークモデルの把持候補位置をハンド部でもってピックし、収納容器BXの外部へ搬送するシミュレーションを行う。
ピッキング動作シミュレーションの実行結果は、必要に応じて表示部3に表示させることができる。ユーザは表示部3に表示されたピッキング動作シミュレーションの実行結果に基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更することができる。例えばロボットRBTの設置位置や収納容器BXを置く位置、センサ部2の姿勢などを調整する。変更した設定を、シミュレーション環境として入力し直して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、ユーザの環境に応じた適切な設定条件を決定できる。
また、物理シミュレーション部22は、物理シミュレーションを繰り返して行うことができるが、毎回、ワークモデルが同じ配置にならないようにランダムにばら積みすることができるように構成されている。従って、物理シミュレーション部22は、以前行った物理シミュレーションで得られたばら積み状態と同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなばら積みデータが生成されるため、物理シミュレーションの結果に再現性がない。
一方、ユーザがピッキング動作の環境設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このばら積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルに対するエンドエフェクタモデルの把持解が見つからずに全てのワークモデルを取り出せなかった場合に、その対策としてユーザが把持候補位置や把持姿勢を増やした場合を考える。この場合、ユーザが変更した設定が、前回発生した問題に対して有効な解決策であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
加えて、問題が発生した状態だけでなく、その問題が発生するに至った途中の状態からピッキング動作シミュレーションを開始できるようにしてもよい。例えば問題が発生したばら積みデータを、ワークモデルを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
これらを実現するために、本実施形態においては、ばら積みデータの初期状態や終了状態、あるいは中間状態等、ユーザが再利用したいと考える状態のばら積みデータを保存しておき、環境設定をし直した後に、このような保存済みのばら積みデータを呼び出して、検証することを可能としている。ばら積みデータは、記憶部42に保存しておくことができ、ユーザの指定によって呼び出すことができる。
以上の手順では、いずれかのワークモデルで把持解が得られると、その時点で把持候補位置を検討する処理を終了して、得られた把持解に該当する把持候補位置でワークモデルを把持するように処理している。ただ、この方法に限らず、例えば把持可能なすべての把持候補位置を1つのワークモデルについて求めた上で、いずれの把持候補位置を選択するかをユーザが決定するように構成してもよい。また、ワークモデルの置かれた高さ情報に注目し、ワークモデルが置かれた高さが高いもの、いいかえると、ばら積みされたワークモデル群の内で、より上方に位置するものを把持候補位置として選択することもできる。
以上のようにしてピッキング動作シミュレーションを行うことができ、このピッキング動作シミュレーションは複数回行うのが好ましい。つまり、サーチ処理部24によりサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットRBTによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットRBTにより把持するピッキング動作シミュレーションを繰り返し実行するように、ピッキング動作シミュレーション部25が構成されている。このピッキング動作シミュレーションを複数回行うことに対応するように、物理シミュレーション部22は、データ容量が圧縮された複数のワークモデルを用いて複数回シミュレーションを実行可能に構成されており、ピッキング動作シミュレーションが終了すると、物理シミュレーション部22は自動的に新たな物理シミュレーションを実行し、この新たな物理シミュレーション結果を利用してピッキング動作シミュレーションが行われる。
また、ピッキング動作シミュレーション部22は、サーチ処理部24によりサーチに成功したワークモデルをハンド部形状入力部35で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するように構成されている。図18のハンドモデル登録手順フローチャートに従ってハンド部の形状を複数入力した場合には、それらのうち、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。全てのハンド部についてピッキング動作シミュレーションが終了した後、再び全てのハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。これを繰り返して行うことができる。また、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行うこともできる。ピッキング動作シミュレーションは、ハンド部毎に数百回〜1000回程度行うことができる。
図34にフローチャートで示すように、ピッキング動作シミュレーションを複数回行ってその結果を蓄積することができる。図34のフローチャートの開始後のステップSG1では、統計対象となる設定群を取得する。これは、ハンド部形状入力部35で入力された複数のハンド部のハンドモデルや、サーチモデルに設定されている複数の把持候補位置、複数のサーチモデル等である。
統計対象となる設定群を取得した後、ステップSG2に進み、統計蓄積を開始する。これはユーザによる指示によって開始することができる。統計蓄積を開始すると、ステップSG3に進み、ステップSG1で取得した設定群の中から一の設定の組(一のハンド部、一の把持候補位置、一のサーチモデル)を取得して上述したピッキング動作シミュレーションを開始する。ピッキング動作シミュレーション部22は、各ハンド部による把持が行えなくなるまでピッキング動作シミュレーションを継続する。
このステップSG3のピッキング動作シミュレーションは複数回実行する。すなわち、物理シミュレーション部22で複数のワークモデルを積み上げたばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行し、その後、物理シミュレーション部22で新たにばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行する。つまり、ピッキング動作シミュレーション部25によるピッキング動作シミュレーションが終了する都度、物理シミュレーションを新たに実行してデータを更新するようにしている。これを繰り返し行い、ステップSG4において各高さ画像に対するピッキング動作シミュレーションの結果を蓄積する。
予め設定されている回数だけピッキング動作シミュレーションが行われれば、ステップSG5においてYESと判定されてステップSG6に進む一方、予め設定されている回数に未達であれば、ステップSG5でNOと判定されてステップSG3に進み、別の高さ画像についてピッキング動作シミュレーションを実行する。
その後、ステップSG6では、各ピッキング動作シミュレーションに対する実行結果を蓄積する。ステップSG7では、ステップSG1で取得した設定群の中でピッキング動作シミュレーションを実行していない設定が存在すれば、NOと判定されて、未だピッキング動作シミュレーションを実行していない設定についてピッキング動作シミュレーションを繰り返し実行する。ステップSG1で取得した設定群の全てについてピッキング動作シミュレーションを実行したら、ステップSG7でYESと判定されて終了する。
図35は、ピッキング動作シミュレーションの結果を把持登録番号順にリスト表示した表である。この表の左欄にはサーチモデルが記載されており、この例ではサーチモデルとしてA〜Cの3つがある。表の左右方向中央の欄には把持候補位置を登録番号順に並べて記載しており、サーチモデルAに把持候補位置として3つが登録されており、サーチモデルBに把持候補位置として5つが登録されており、サーチモデルCに把持候補位置としての4つが登録されていた場合を示している。表の右欄の回数とは、ピッキング動作シミュレーションで把持に成功した回数であり、ピッキング動作シミュレーションで把持に成功したときに使用された頻度(使用頻度)を示す情報である。
図35に示す表は、表示制御部26が表示部3に表示させるために生成する表であり、ピッキング動作シミュレーションで把持に成功したときの各サーチモデルA〜C及び各把持候補位置(A−001〜C−005)の使用頻度を示す情報を比較可能に表示している。また、各サーチモデルA〜Cと、各把持候補位置(A−001〜C−005)の両方を表示することなく、サーチモデルA〜Cのみ、または各把持候補位置(A−001〜C−005)のみ表示可能にしてもよい。この表では、把持に使用されなかった各サーチモデル及び各把持候補位置も表示されているが、把持に使用されなかった各サーチモデルのみ、または把持に使用されなかった把持候補位置のみ表示可能にしてもよい。把持に使用されなかった把持候補位置は、回数が0となっている把持候補位置である。
図36は、図35に示す結果を回数降順にリスト表示した場合を示しており、この表も表示制御部26が表示部3に表示させるために生成する表である。回数昇順にリスト表示することももちろん可能である。把持登録位置A−002、把持登録位置B−002、把持登録位置B−003は、ピッキング動作シミュレーション時に把持候補位置として採用されていないため、データから削除しても実際のばら積みピッキング作業には問題ないといえる。また、サーチモデルA及びサーチモデルCに比べて把持回数が大幅に少ないサーチモデルBをデータから削除しても、実際のばら積みピッキング作業には殆ど問題ないといえる。また、ロボット制御プログラム側からも、これらの設定を使用した結果データを考慮する必要が無くなるため、セットアップの工数を減らすことが可能になる。
図37は、ピッキング動作シミュレーションの結果をハンド部の形状別にリスト表示した表であり、この表も表示制御部26が表示部3に表示させるために生成する表である。ハンド部の形状が「ハンド形状1」〜「ハンド形状7」まで7種類ある場合を示しており、ワーク残数(平均)とは、1回のピッキング動作シミュレーションで把持できなかったワーク(収納容器BXに残ったワーク)の数をピッキング動作シミュレーションの回数で乗じて得た総回数を、ピッキング動作シミュレーションの回数で除した値である。ワーク残数(最大)とは、全ピッキング動作シミュレーションの中で残ったワークが最も多かった回の当該ワークの個数である。ワーク残数(最小)とは、全ピッキング動作シミュレーションの中で残ったワークが最も少なかった回の当該ワークの個数である。
つまり、表示制御部26は、ピッキング動作シミュレーション部25によるピッキング動作シミュレーション終了時に残っているワークモデルの数をハンド部毎に表示可能に構成されているので、ハンド部の形状毎にワークの残数を比較することができる。ワークの残数は、ハンド部によるワークモデルの把持の成功度が高ければ少なくなり、反対にハンド部によるワークモデルの把持の成功度が低ければ多くなるので、ハンド部によるワークモデルの把持の成功度合いを示す情報である。従って、この実施形態では、ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができる。ワークモデルの把持の成功度合いは、例えば把持に成功したワークの全ワークに対する割合等で表示することもできる。図35〜図37に示す各表を表示部3に表示させるステップが表示ステップである。
(露光時間の設定)
形状測定装置400は、図3に示すように、カメラCME1、CME2、CME3、CME4の露光時間(シャッタースピード)を段階的に変化させるための露光制御部40を備えている。露光制御部40は、露光時間を等比で増加させるように構成されているが、これに限られるものではない。この実施形態では、露光時間を1.5倍ずつ伸ばすように構成されているが、この倍率は任意に設定することができる。
形状測定装置400は高さ画像データ生成部33を備えている。高さ画像データ生成部33は、露光制御部40が段階的に変化させた各露光時間においてカメラCME1、CME2、CME3、CME4から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面(ワークWKの表面)の各部位の高さを示す高さ画像データを生成するように構成されている。これは例えば位相シフト法等の手法によって生成することができる。
(画素判定部の構成)
形状測定装置400は画素判定部34を備えている。画素判定部34は、露光制御部40が段階的に変化させた各露光時間において受光部が受光した受光量を得て、得られた受光量に基づいて、高さ画像データ生成部33により生成される各高さ画像の各画素が有効か無効かを判定するように構成されている。プロジェクタPRJが周期的な照度分布を有するパターン光を照射するように構成されている場合、画素判定部34は、カメラCME1、CME2、CME3、CME4の撮像によって得られた各画素の光量のコントラストが閾値以上の画素を有効と判定するように構成されている。また、三次元形状を取得する方法として、光切断法を用いる場合には、各画素の光量が小さすぎるか、飽和している場合には、当該画素が無効であると判定し、その他の画素を有効と判定する。つまり、高さ画像を生成した際に高さを表示することができない画素(画面上で黒く潰れたようになってしまう画素や白く飛んでしまう画素)が無効であると判定し、一方、高さを表示することができる画素を有効と判定する。
画素判定部34は、カメラCME1、CME2、CME3、CME4による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成することができる。図39は、注目領域をユーザに設定させるための注目領域設定画面62を示している。注目領域設定画面62は、いわゆるユーザーインターフェースであり、表示制御部26で生成され、表示部3で表示される。図39の注目領域設定画面62内で表示されている画像60は、カメラCME1、CME2、CME3、CME4で撮像された範囲の高さ画像であり、この撮像範囲内には、収納容器BXとワークWKとが含まれている。収納容器BXはピッキング対象ではないので、その収納容器BXを構成している画素が有効か無効かを判定しても意味がない。図39では、注目領域設定画面62の高さ画像60の中に、注目領域設定用の枠線61を表示しており、この枠線61で囲まれた領域を注目領域としてユーザが設定することができる。枠線61は、操作部41の操作によって拡大、縮小、変形させることが可能であり、ユーザが任意の領域を注目領域として指定することが可能になっている。注目領域が設定されると、その領域内の各画素について有効か無効かを判定するので、不要な領域の画素が後述する露光時間の設定に用いられることが無くなり、露光時間を適切な時間に設定することが可能になる。
図42、図43及び図44は注目領域設定画面の一形態を示しており、各図においても注目領域設定用の枠線61を白色で示している。枠線61の表示形態は各図に示す形態に限定されるものではない。また、注目領域外と注目領域内とで背景色を変える等の手法で注目領域を区別可能にすることもできる。
(露光時間設定部の構成)
形状測定装置400は露光時間設定部41を備えている。露光時間設定部41は、画素判定部34により有効と判定された画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定する。設定値とは、ロボットシステム1000の実運用を行う際に用いる露光時間のことである。露光時間は手動操作によって調整することもできるが、手動操作の場合、ユーザは自分で設定した露光時間で得られた高さ画像を見ながら、最適な露光時間の範囲を探索していくプロセスが必要になる。また、最適な露光時間を絞り込むための探索を手作業で行う場合、属人性があるとともに再現性が悪く、様々なケースで適切な露光時間を得ることは難しい。さらに、高さ画像を構成する画素の場合は、見た目で有効画素であるか否かを判定するのは難しく、特に手作業で決定した露光時間が妥当な時間であるか否かを短時間で検証して判断することは困難である。よって、この実施形態では、適切な露光時間を自動で設定することができるようになっている。
図40は、露光時間と有効画素数との関係を示すグラフを示しており、横軸が対数目盛で露光時間(ms)であり、縦軸が有効画素数(pixel)である。このグラフは、ある固定されたワークを、カメラCME1、CME2、CME3、CME4の露光時間を段階的に変えながら撮像して高さ画像を得て、その高さ画像に含まれる有効画素数を露光時間毎にプロットしたものである。有効画素数と露光時間との関係は、概ねこのグラフに示されるように、ある露光時間の範囲内では、露光時間が変化しても有効画素数は殆ど変化せず、その範囲外では、有効画素数が急激に少なくなる。このグラフの例では、露光時間が0.1ms〜6msの範囲内であれば有効画素数が多い高さ画像を得ることができるが、露光時間が0.1ms未満及び6msを超えると、有効画素数が極端に少ない高さ画像になってしまう。有効画素数が極端に少なくなると、図39の高さ画像において黒い部分が増えてしまうので三次元サーチの精度が低下してしまう。
この実施形態では、図41に詳しく示すように、有効画素が最大値の95%となる露光時間を設定値として設定する。つまり、露光時間設定部41は、画素判定部34により有効と判定された画素の数が最も多くなる露光時間以下の所定時間を設定値として設定するように構成されている。その理由は、有効画素の数が最大値をとる露光時間は、図41に示すグラフの平坦に近い部分に存在することが多く、設定値として選択される露光時間が時間軸方向にぶれやすく、不安定になりやすいので、有効画素の数が最大値をとる露光時間ではなく、有効画素の数が最大値よりも若干少なくなる露光時間を設定値として設定する。この実施形態では、有効画素が最大値の95%となる露光時間を設定値として設定しているが、これに限られるものではなく、有効画素が最大値の90%以上99%以下の範囲となる露光時間を設定値することができる。
この実施形態では、露光時間設定部41で自動的に設定された露光時間をユーザが調整可能に構成されている。図42は、露光時間設定用画面65であり、露光時間が推奨値にある場合を示している。露光時間設定用画面65には、高さ画像生成部33で生成された高さ画像表示領域65aと、露光時間と有効画素数との関係を示すグラフを表示するグラフ表示領域65bと、ユーザによる設定が可能な設定領域65cとが設けられている。
高さ画像生成部33での高さ画像の生成方法の一例について説明する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、Zバッファ法が好適に利用できる。
すなわち、ワークのCADデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Zバッファ法、Zソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではZバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Zバッファ法では、Zバッファ=高さ画像として実現される。また、Zバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Zバッファ法の過程で、画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではZバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてZバッファ法を例示するが、本発明はZバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。このようにして三次元のばら積みデータから高さ画像に描画し直す。
グラフ表示領域65bに表示されるグラフは、表示制御部26で生成することができ、図40や図41に示すグラフと同じものである。このグラフの横軸、即ち露光時間軸は対数(等比)表示されているが、この表示形態に限られるものはなく、任意の表示にすることができる。
設定領域65cには、調整しきい値(%)を設定するしきい値設定部65dと、露光時間の調整範囲を設定する範囲設定部65e、比率設定部65fと、露光時間の設定値(推奨値)を表示する露光時間表示領域65gとが設けられている。
しきい値設定部65dは、有効画素が最大値の何%の画素数となる露光時間を設定値とするか、その値を百分率で設定するための部分である。1%刻みで設定することができる。範囲設定部65eは、露光時間の調整範囲の最大値(最大露光時間)と最小値(最小露光時間)とを別々に設定することができるようになっている。比率設定部65fは、露光時間を等比増加させる際の比率を設定する部分である。
露光時間の設定値は、グラフ表示領域65bに表示されるグラフにおいて白い縦線65hで表示することができる。また、しきい値設定部65dで設定された値を有効画素の最大値に乗じた値は、グラフ表示領域65bに表示されるグラフにおいて白い横線65iで表示することができる。
露光時間表示領域65gに表示されている露光時間をユーザが操作部4の操作によって入力することで露光時間を調整することができる。図43では露光時間が推奨値よりも短い場合を示しており、また、図44では露光時間が推奨値よりも長い場合を示している。図43及び図44に示すように、ユーザが露光時間を設定値から外れた時間に変更した場合には、変更後の露光時間で撮像した高さ画像を高さ画像表示領域65aに表示することができる。図43及び図43に示す高さ画像は、図42に示す露光時間が推奨値にある場合の高さ画像に比べて黒く潰れた部分が広くなっており、露光時間が不適であることが分かる。
また、図42に示す露光時間で撮像した高さ画像と、図43や図44に示す露光時間で撮像した高さ画像とを同時に表示部3に表示させるようにしてもよい。すなわち、第1の露光時間に対応する高さ画像と、第1の露光時間とは異なる第2の露光時間に対応する高さ画像とを同時に表示可能にするように表示制御部26を構成することができる。
露光時間の設定は実運用を開始する前に行うのが望ましいが、実運用の開始後に露光時間を調整する目的で行うこともできる。
(三次元計測部)
三次元計測部30は、画像処理装置300に設けることができる。三次元計測部30は、実運用時に複数のワークが積み上げられた作業空間を三次元計測し、その計測データを出力するように構成されている。センサ部2は三次元計測部30の一構成要素とすることができる。計測手法は上述したとおりであり、特に限定されるものではない。三次元計測部30をセンサ部2に設けて一体化することもできる。
(サーチ処理部)
サーチ処理部24は、上述したピッキング動作シミュレーションで使用されているが、実運用時でも使用することができる。サーチ処理部24をピッキング動作シミュレーションで使用したものとは別に構成することもできる。
すなわち、サーチ処理部24は、サーチモデル登録部27に登録された複数のサーチモデルを用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するサーチ処理を行う。サーチ処理を行う際には、三次元計測部30から出力された計測データに基づいて高さ画像生成部33によって高さ画像を生成し、この高さ画像中にサーチモデル登録部27で登録されたサーチモデルが存在するか否かをサーチする。この手法はピッキング動作シミュレーションで行った手法と同じにすることができる。
また、サーチ処理部24は、サーチモデルの形状を表す複数の特徴点を用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出することができる。すなわち、三次元計測部30から出力された計測データに基づいて高さ画像を生成し、この高さ画像の中で、サーチモデルの形状を表す複数の特徴点と一致する形状をサーチする。
また、サーチ処理部24は、サーチモデル登録部27に登録されている関連付けられた高さ画像データを用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するように構成することができる。
(干渉判定部)
干渉判定部31は、画像処理装置300に設けることができる。干渉判定部31は、サーチ処理部24でサーチ処理に成功したサーチモデルに対応付けられたワーク表面に設定された把持候補位置をロボットRBTが周囲の物体と干渉することなく把持が可能か判定する。この干渉判定部31による判定手法は、ピッキング動作シミュレーションで行った手法と同じにすることができる。
干渉判定部31は、三次元計測部30で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定するように構成されている。図45Aは、三次元計測部30で得られた計測データに基づいて生成した高さ画像を、やや斜め方向から三次元表示した点群と、サーチ結果の位置にサーチモデルの特徴点を重畳表示した図であり、鉛直に近い面等は計測データから欠損していて、奥の底面が抜けて見えたり、黒く潰れた部分が多くなっている。高さ画像の中の黒く潰れた部分は、カメラCMEの死角やプロジェクタPRJの投光から死角となる箇所であったり、光沢の強い金属製ワーク等であったり、周囲の物体との多重反射によりデータが不正となった部分である。このように高さ画像の中の黒く潰れた部分が多くなると、三次元サーチが十分に行えなくなったり、実際には干渉するのに干渉していないと誤って判断されてしまうという問題がある。
一方、図45Bは、図45Aに加え、三次元計測部30で計測できていないワーク表面を他の面との関連性を利用して推定し、推定した別の面のサーチモデルの特徴点も含めて重畳表示した図を示している。すなわち、サーチモデル登録部27では、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録し、それらの関係性情報を持った状態で各高さ画像を保存しているので、例えば実運用の際にワークを上から見たサーチモデルのサーチに成功すれば、左から見たサーチモデルを、上から見たサーチモデルのどこにどのように配置すればワークの形状になるかが分かっており、これを利用して計測データの欠損した部分を補っていくことができる。従って、図45Bでは図45Aに比べて鉛直に近い面等、三次元計測できてない部分を、サーチモデルの特徴点で補完した状態になっている。物理シミュレーションにおける干渉判定の説明の中で記載した、三次元点群に対する干渉判定に加えて、サーチ結果に基づいて推定した、他の面も含めたサーチモデルの特徴点に対する干渉判定も合わせて行うことで、三次元計測できてない部分も考慮した干渉判定を実現できる。
(把持位置決定部)
把持位置決定部32は、画像処理装置300に設けることができる。把持位置決定部32は、干渉判定部31により周囲の物体と干渉することなく把持が可能と判定された把持候補位置を実際の把持位置として決定するように構成されている。
(実運用時の手順)
次に、実運用時の手順について図38に示すフローチャートに基づいて説明する。開始後のステップSH1では、図1に示すようにセンサ部2を用いて収納容器BXにばら積みされているワークWKを三次元計測する。このステップSH1では、三次元計測部30から出力された計測データに基づいて高さ画像生成部33で高さ画像を生成しておく。
その後、ステップSH2ではステップSH1で生成した高さ画像に対して上述した三次元サーチを実施し、ワークの位置及び姿勢を検出する。続くステップSH3では、ワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、ハンド部を配置すべき位置と姿勢を計算する。
ステップSH4では、計算された位置において、ハンド部が周囲の物体と干渉しないかどうかを、図18のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。具体的には、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。ステップSH5でNOと判定されてハンド部が周囲の物体と干渉していない場合には、把持解有りとして終了する。この把持解がロボットコントローラ6に送信され、ロボットコントローラ6がアーム部ARM及びハンド部を制御してワークWKをピックして搬送する。
ステップSH5でYESと判定されてハンド部が周囲の物体と干渉している場合には、ステップSH6に進み、登録されている別の把持候補位置があるか否かを判定する。ステップSH6でYESと判定されて別の把持候補位置がある場合には、ステップSH3に戻る。ステップSH6でNOと判定されて別の把持候補位置がない場合には、ステップSH7に進む。ステップSH7では、ステップSH2で検出したワークが他にもあるか否かを判定する。ステップSH7でYESと判定されて別のワークがある場合には、ステップSH3に戻る。ステップSH7でNOと判定されて別のワークがない場合には把持解無しとして終了する。このように三次元サーチで複数のワークが検出された場合、検出されたワークを1つずつ把持可能か否かを判定していく。
図46に示すフローチャートは、運用時の別の手順1を示しており、図46に示すフローチャートのステップSI1〜SI5までは図38に示すフローチャートのステップSH1〜SH5と同じである。図46に示すフローチャートのステップSI6では、ステップSI3で計算した結果と同じ位置及び姿勢でハンド部が他の検出されたワークと干渉しないかどうか判定する。具体的には、各サーチ結果の位置姿勢から定まるサーチモデルの特徴点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。さらに、面の関係性を用いて、各サーチ結果から推定される別の面のサーチモデルの特徴点群に対しても、同様に干渉するか否かを判定する。
ステップSI7でNOと判定されれば、把持解有りとして終了する。一方、ステップSI7でYESと判定されれば、ステップSI8に進む。ステップSI8及びステップSI9は、それぞれ、図38に示すフローチャートのステップSH6及びステップSH7と同じである。
図47Aは、面の関連性を利用せずに、実際に三次元計測を行って得られた、三次元点群に対してのみ干渉判定を行った場合であり、把持対象のワークWKAの右に近接しているワークWKBの側面の形状が計測データで欠損していることが分かる。一方、図47Bは、面の関連性を利用して、他のワークのサーチ結果の特徴点や、推定される別の面のサーチモデルにおける特徴点に対しても干渉判定させた場合であり、ワークWKBが上から見たサーチモデルのサーチに成功していて、その上から見たサーチモデルとの関連性を用いてワークWKBの側面の形状を推定しているので、ワークWKBの側面にも特徴点が表示されている。このように面の関連性を利用することで、計測データで欠損している部分を推定して補うことができる。
図47Aの場合、ワークWKBの側面の形状が欠損しているので、把持対象のワークWKAをハンド部で把持しようとした際に、実際にはワークWKBの側面にハンド部の先端が干渉してしまうのに、干渉しないと誤判定してしまう。これに対し、図47Bの場合、高さ画像の各1点1点のpixelデータが示す三次元点群に対する干渉判定以外に、ワークWKBの側面の形状を面の関係性情報に基づいて推定し、推定したサーチモデルの特徴点も含めて干渉判定をしているので、把持対象のワークWKAをハンド部で把持しようとした際にワークWKBの側面にハンド部の先端が干渉すると判定され、正しい判定結果を得ることができる。
また、図48に示すように、ワークとハンド部との干渉については把持候補位置毎に判定することができる。干渉の原因については、図48に示す画面上に、例えば特徴点とハンド部が干渉する場合には「点群干渉」と表示され、ハンド部の傾斜角度が規定範囲外になってしまう場合には「傾斜角度」と表示される。
また、図49に示すように、立方体形状のワークがばら積みされている場合には、ワークの六面全ての形状が同じであるので、一面のみサーチモデルとして登録し、その一面を真上から把持する把持姿勢を1つだけ登録する。これにより、六面全ての面に対するサーチならびに把持が可能になる。
(実施形態の作用効果)
この実施形態によれば、物理シミュレーション時にはデータ容量が圧縮された複数のワークモデルを用い、ピッキング動作シミュレーション時には、物理シミュレーションにより生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量の大きなワークモデルを配置したサーチ処理用データを使用するようにしたので、物理シミュレーションに要する時間を短縮しながら、再現性の高いばら積みピッキングシミュレーションを実行することができる。
また、複数のサーチモデルを登録するとともに、各サーチモデルについて複数の把持候補位置を当該サーチモデルに対応付けて設定することが可能になる。登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行し、サーチに成功したワークモデルに対応付けられた複数の把持候補位置のそれぞれについて、ロボットによる把持が可能である場合には、その把持候補位置をロボットにより把持するピッキング動作をシミュレーションする。このシミュレーションを繰り返して把持に成功したときの各サーチモデル及び/または各把持候補位置の使用頻度を示す情報を比較可能に表示することができる。よって、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較でき、客観的なデータに基づいて把持位置を取捨選択することができる。
また、ロボットRBTのハンド部の形状をハンド部形状入力部35によって複数入力し、入力された各ハンド部を用いてピッキング動作シミュレーションを実行し、各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができるので、ワークの取り出し成功率向上への寄与率が低いハンド部の形状を他のハンド部の形状と容易に比較でき、客観的なデータに基づいてハンド部を取捨選択することができる。
また、三次元計測部30で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定し、推定されたワーク表面も含めてロボットRBTが周囲の物体と干渉することなく把持が可能か判定する。これにより、高さデータが欠損している部分のワークの形状を、高さデータが存在している部分を利用して推定することができるので、高さデータの一部に欠損があっても周囲の物体とロボットRBTとの干渉の有無を精度良く判定できる。
また、露光時間を設定する場合に、露光制御部40が段階的に変化させた各露光時間において受光量を得ることができる。各露光時間の受光量に基づいて、高さ画像データを生成する各画素が有効か無効か判定される。有効と判定された画素の数が所定条件を満たす高さ画像に対応する露光時間を自動的に設定値するので、露光時間を手動操作によって調整することなく、有効画素数の多い高さ画像データを得ることができる。これにより、属人性が無くなって再現性が高くなり、しかも、様々なケースで適切な露光時間を得ることができる。
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。
以上説明したように、本発明は、例えばばら積みされているワークをピックするロボットシステムに適用することができる。
2 センサ部
3 表示部
4 操作部
6 ロボットコントローラ
7 ロボット操作具
20 ワークモデル設定部
21 データ容量圧縮部
22 物理シミュレーション部
23 ばら積みデータ生成部
24 サーチ処理部
25 ピッキング動作シミュレーション部
26 表示制御部
27 サーチモデル登録部
28 把持位置設定部
30 三次元計測部
31 干渉判定部
32 把持位置決定部
33 高さ画像生成部
34 画素判定部
35 ハンド形状入力部
40 露光制御部
41 露光時間設定部
42 記憶部
100 ロボット設定装置
200 ロボットシミュレーション装置
300 画像処理装置
400 形状測定装置
1000 ロボットシステム
BX 収納容器
CME1〜4 カメラ(受光部)
PRJ プロジェクタ(投光部)
RBT ロボット
WK ワーク

Claims (10)

  1. 測定対象物の形状を測定する形状測定装置であって、
    測定対象物に光を照射する投光部と、
    上記投光部により投光されて測定対象物で反射した光を受光する受光部と、
    上記受光部の露光時間を段階的に変化させるための露光制御部と、
    上記露光制御部が段階的に変化させた各露光時間において上記受光部から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面の各部位の高さを示す高さ画像データを生成する高さ画像データ生成部と、
    上記露光制御部が段階的に変化させた各露光時間において上記受光部が受光した受光量を得て、得られた受光量に基づいて、上記高さ画像データ生成部により生成される各高さ画像データを構成する各画素が有効か無効かを判定する画素判定部と、
    上記画素判定部により有効と判定された画素の数である有効画素数が、該有効画素数の最大値に応じて変化するしきい値以上となり、かつ、前記最大値に対応する露光時間よりも短い時間を露光時間の設定値として設定する露光時間設定部と
    を備えていることを特徴とする形状測定装置。
  2. 請求項1に記載の形状測定装置において、
    前記しきい値は、上記有効画素数の最大値に対して所定割合を乗ずることで得られることを特徴とする形状測定装置。
  3. 請求項1または2に記載の形状測定装置において、
    上記露光制御部は、露光時間を等比で増加させるように構成されていることを特徴とする形状測定装置。
  4. 請求項1から3のいずれか1つに記載の形状測定装置において、
    上記画素判定部は、上記受光部による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成されていることを特徴とする形状測定装置。
  5. 請求項に記載の形状測定装置において、
    上記注目領域をユーザに設定させるための注目領域設定画面を生成する表示制御部と、
    上記表示制御部で生成された上記注目領域設定画面を表示する表示部とを備えていることを特徴とする形状測定装置。
  6. 請求項1からのいずれか1つに記載の形状測定装置において、
    上記露光時間設定部で設定された露光時間ユーザによる調整を受け付ける露光時間設定部と、
    上記露光時間設定部で設定された露光時間に対応する高さ画像と、上記露光時間設定部とを、表示部に表示させるとともに、上記露光時間設定部で設定された露光時間がユーザにより調整されると、上記表示部に表示される高さ画像を、上記調整後の露光時間に対応する高さ画像に変更する表示制御部と、
    を備えていることを特徴とする形状測定装置。
  7. 請求項1からのいずれか1つに記載の形状測定装置において、
    第1の露光時間に対応する高さ画像と、第1の露光時間とは異なる第2の露光時間に対応する高さ画像とを同時に表示可能にする表示制御部を備えていることを特徴とする形状測定装置。
  8. 請求項1からのいずれか1つに記載の形状測定装置において、
    上記画素判定部で有効と判定された画素数と、露光時間との関係を示す、露光時間軸が対数表示されたグラフを生成するとともに、上記露光時間設定部で設定された露光時間のユーザによる調整を受け付ける露光時間設定部を、上記グラフ上に表示する表示制御部を備えていることを特徴とする形状測定装置。
  9. 測定対象物の形状を測定する形状測定方法であって、
    測定対象物に光を照射し、当該測定対象物で反射した光を受光部で受光し、
    上記受光部の露光時間を段階的に変化させ、段階的に変化させた各露光時間において上記受光部から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面の各部位の高さを示す高さ画像データを生成し、
    段階的に変化させた各露光時間において上記受光部が受光した受光量を得て、得られた受光量に基づいて、各高さ画像データを構成する各画素が有効か無効かを判定し、
    有効と判定した画素の数である有効画素数が、該有効画素数の最大値に応じて変化するしきい値以上となり、かつ、前記最大値に対応する露光時間よりも短い時間を露光時間の設定値として設定することを特徴とする形状測定方法。
  10. 測定対象物の形状を測定する形状測定方法であって、
    測定対象物に光を照射し、当該測定対象物で反射した光を受光部で受光し、
    上記受光部の露光時間を段階的に変化させ、段階的に変化させた各露光時間において上記受光部から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面の各部位の高さを示す高さ画像データを生成し、
    段階的に変化させた各露光時間において上記受光部が受光した受光量を得て、得られた受光量に基づいて、高さ画像データを生成した際に高さを表示することができる画素の数を高さ画像データのそれぞれについて特定し、
    上記特定された高さを表示することができる画素の数が、該高さを表示することができる画素の最大値に応じて変化するしきい値以上となり、かつ、前記最大値に対応する露光時間よりも短い時間を露光時間の設定値として設定することを特徴とする形状測定方法。
JP2017148148A 2017-07-31 2017-07-31 形状測定装置及び形状測定方法 Active JP6970551B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017148148A JP6970551B2 (ja) 2017-07-31 2017-07-31 形状測定装置及び形状測定方法
US15/895,467 US10190873B1 (en) 2017-07-31 2018-02-13 Shape measuring device and shape measuring method
JP2021176872A JP7233508B2 (ja) 2017-07-31 2021-10-28 形状測定装置及び形状測定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017148148A JP6970551B2 (ja) 2017-07-31 2017-07-31 形状測定装置及び形状測定方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021176872A Division JP7233508B2 (ja) 2017-07-31 2021-10-28 形状測定装置及び形状測定方法

Publications (2)

Publication Number Publication Date
JP2019027947A JP2019027947A (ja) 2019-02-21
JP6970551B2 true JP6970551B2 (ja) 2021-11-24

Family

ID=65032074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017148148A Active JP6970551B2 (ja) 2017-07-31 2017-07-31 形状測定装置及び形状測定方法

Country Status (2)

Country Link
US (1) US10190873B1 (ja)
JP (1) JP6970551B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6432494B2 (ja) * 2015-11-30 2018-12-05 オムロン株式会社 監視装置、監視システム、監視プログラムおよび記録媒体
JP6333871B2 (ja) * 2016-02-25 2018-05-30 ファナック株式会社 入力画像から検出した対象物を表示する画像処理装置
DE102017207069A1 (de) * 2017-04-27 2018-10-31 Robert Bosch Gmbh Prüfvorrichtung zur optischen Prüfung eines Objektes, Produktionsanlage mit der Prüfvorrichtung und Verfahren zur optischen Prüfung des Objektes mit der Prüfvorrichtung
EP3425907B1 (en) * 2017-07-03 2022-01-05 Vestel Elektronik Sanayi ve Ticaret A.S. Display device and method for rendering a three-dimensional image
JP2019058993A (ja) * 2017-09-27 2019-04-18 セイコーエプソン株式会社 ロボットシステム
US11061757B2 (en) * 2018-03-13 2021-07-13 SK Hynix Inc. Storage device and method of operating the same
JP7224112B2 (ja) * 2018-05-21 2023-02-17 Juki株式会社 縫製システム
US11040452B2 (en) * 2018-05-29 2021-06-22 Abb Schweiz Ag Depth sensing robotic hand-eye camera using structured light
JP7164451B2 (ja) * 2019-01-29 2022-11-01 株式会社キーエンス 三次元計測装置
JP6959277B2 (ja) * 2019-02-27 2021-11-02 ファナック株式会社 3次元撮影装置および3次元撮影条件調整方法
JP7007324B2 (ja) * 2019-04-25 2022-01-24 ファナック株式会社 画像処理装置、画像処理方法、及びロボットシステム
GB2584907A (en) * 2019-06-21 2020-12-23 Zivid As Method for determining one or more groups of exposure settings to use in a 3D image acquisition process
CN110443851B (zh) * 2019-08-06 2021-10-15 暨南大学 一种基于二次曲面特征的工件位姿识别方法
EP4223451A1 (en) * 2020-09-30 2023-08-09 Nikon Corporation Machining system and display device
JP2022140047A (ja) * 2021-03-12 2022-09-26 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
WO2023084790A1 (ja) * 2021-11-15 2023-05-19 東京ロボティクス株式会社 3次元計測システム、並びにその制御方法及び制御プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1296825B1 (it) * 1997-12-02 1999-08-02 Uni Degli Studi Brescia Procedimento per la misura di profili a tre dimensioni mediante proiezione di luce strutturata
JP2002090112A (ja) * 2000-09-21 2002-03-27 Nikon Corp 干渉測定装置、干渉測定方法、及び光学素子の表面加工方法
JP2009165558A (ja) * 2008-01-11 2009-07-30 Panasonic Corp 口腔内測定方法および口腔内測定装置
WO2011145319A1 (ja) * 2010-05-19 2011-11-24 株式会社ニコン 形状測定装置及び形状測定方法
JP6029394B2 (ja) * 2012-09-11 2016-11-24 株式会社キーエンス 形状測定装置
JP6415026B2 (ja) 2013-06-28 2018-10-31 キヤノン株式会社 干渉判定装置、干渉判定方法、コンピュータプログラム
JP6346427B2 (ja) * 2013-10-30 2018-06-20 キヤノン株式会社 画像処理装置、画像処理方法
JP6493787B2 (ja) * 2015-01-19 2019-04-03 株式会社リコー 撮像装置、撮像方法及び撮像動作制御プログラム

Also Published As

Publication number Publication date
US20190033067A1 (en) 2019-01-31
US10190873B1 (en) 2019-01-29
JP2019027947A (ja) 2019-02-21

Similar Documents

Publication Publication Date Title
JP6970551B2 (ja) 形状測定装置及び形状測定方法
JP6813229B1 (ja) 自動物体検出機構を備えたロボットシステム、および、その動作方法
CN112091970B (zh) 具有增强的扫描机制的机器人系统
JP7346133B2 (ja) ロボット設定装置及びロボット設定方法
US10279473B2 (en) Image processing device, image processing method, and computer program
US9727053B2 (en) Information processing apparatus, control method for information processing apparatus, and recording medium
US20190389062A1 (en) System and method for robotic bin picking
JP2018144152A (ja) ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器
JP6857101B2 (ja) ロボットシミュレーション装置及びロボットシミュレーション方法
JP6919987B2 (ja) 画像処理装置
JP2018144155A (ja) ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器
US11446822B2 (en) Simulation device that simulates operation of robot
US11331793B2 (en) Device for outputting holding detection results
JP2018144158A (ja) ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器
JP2018144159A (ja) ロボット設定装置、ロボットシステム、ロボット設定方法、ロボット設定プログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器
JP2019028773A (ja) ロボットシミュレーション装置及びロボットシミュレーション方法
JP7202966B2 (ja) 三次元測定装置及び三次元測定方法
JP7233508B2 (ja) 形状測定装置及び形状測定方法
JP7164451B2 (ja) 三次元計測装置
JP7344699B2 (ja) ロボットピッキングシミュレーション装置及びロボットピッキングシミュレーション方法
JP2021091056A (ja) 測定装置
US11590652B2 (en) Measuring device
JP2022017738A (ja) 画像処理装置
JP2022122648A (ja) 制御装置
WO2023188407A1 (ja) ロボットシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210309

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211029

R150 Certificate of patent or registration of utility model

Ref document number: 6970551

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150