IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7439410画像処理装置、画像処理方法およびプログラム
<>
  • 特許-画像処理装置、画像処理方法およびプログラム 図1
  • 特許-画像処理装置、画像処理方法およびプログラム 図2
  • 特許-画像処理装置、画像処理方法およびプログラム 図3
  • 特許-画像処理装置、画像処理方法およびプログラム 図4
  • 特許-画像処理装置、画像処理方法およびプログラム 図5
  • 特許-画像処理装置、画像処理方法およびプログラム 図6
  • 特許-画像処理装置、画像処理方法およびプログラム 図7
  • 特許-画像処理装置、画像処理方法およびプログラム 図8
  • 特許-画像処理装置、画像処理方法およびプログラム 図9
  • 特許-画像処理装置、画像処理方法およびプログラム 図10
  • 特許-画像処理装置、画像処理方法およびプログラム 図11
  • 特許-画像処理装置、画像処理方法およびプログラム 図12
  • 特許-画像処理装置、画像処理方法およびプログラム 図13
  • 特許-画像処理装置、画像処理方法およびプログラム 図14
  • 特許-画像処理装置、画像処理方法およびプログラム 図15
  • 特許-画像処理装置、画像処理方法およびプログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】画像処理装置、画像処理方法およびプログラム
(51)【国際特許分類】
   B25J 13/08 20060101AFI20240220BHJP
   G01B 11/00 20060101ALI20240220BHJP
   G06T 7/70 20170101ALI20240220BHJP
【FI】
B25J13/08 A
G01B11/00 H
G06T7/70 Z
【請求項の数】 9
(21)【出願番号】P 2019145441
(22)【出願日】2019-08-07
(65)【公開番号】P2021024052
(43)【公開日】2021-02-22
【審査請求日】2022-06-07
【前置審査】
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】飯田 豊男
【審査官】尾形 元
(56)【参考文献】
【文献】特開2018-126862(JP,A)
【文献】特開2018-045587(JP,A)
【文献】特開2018-144160(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
G01B 1/00-19/20
G06T 1/00-21/32
(57)【特許請求の範囲】
【請求項1】
画像処理装置であって、
対象物が視野領域に含まれるように設置された撮像装置から得られる画像に基づいて、前記視野領域の三次元点群データを生成する生成部と、
前記三次元点群データと前記対象物の三次元形状を示すモデルとに基づいて前記対象物の位置姿勢を検出する検出部と、
1以上の軸の各々について、前記検出部によって検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置に重畳表示させる解析部と
前記検出された位置姿勢に対するオフセット量を設定する設定部とを備える、画像処理装置。
【請求項2】
前記1以上の軸の各々について、当該軸の方向および当該軸上における前記平面の位置の少なくとも一方は可変である、請求項1に記載の画像処理装置。
【請求項3】
前記1以上の軸は、互いに直交する3つの軸を含む、請求項1または2に記載の画像処理装置。
【請求項4】
記検出された位置姿勢から前記オフセット量だけ移動させた位置姿勢に応じて、前記対象物をピッキングするロボットの動作を決定する決定部をさらに備える、請求項1に記載の画像処理装置。
【請求項5】
前記設定部は、前記表示装置に表示された前記モデルに対する移動操作に従って、前記オフセット量を設定する、請求項1から4のいずれか1項に記載の画像処理装置。
【請求項6】
前記解析部は、前記表示装置に表示されている前記モデルを前記オフセット量だけ移動させる、請求項1から5のいずれか1項に記載の画像処理装置。
【請求項7】
前記オフセット量は、並進成分および回転成分の少なくとも一方を含む、請求項から6のいずれか1項に記載の画像処理装置。
【請求項8】
画像処理方法であって、
対象物が視野領域に含まれるように設置された撮像装置から得られる画像に基づいて、前記視野領域の三次元点群データを生成するステップと、
前記三次元点群データと前記対象物の三次元形状を示すモデルとに基づいて前記対象物の位置姿勢を検出するステップと、
1以上の軸の各々について、検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置に重畳表示させるステップと
前記検出された位置姿勢に対するオフセット量を設定するステップとを備える、画像処理方法。
【請求項9】
画像処理方法をコンピュータに実行させるプログラムであって、
前記画像処理方法は、
対象物が視野領域に含まれるように設置された撮像装置から得られる画像に基づいて、前記視野領域の三次元点群データを生成するステップと、
前記三次元点群データと前記対象物の三次元形状を示すモデルとに基づいて前記対象物の位置姿勢を検出するステップと、
1以上の軸の各々について、検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置に重畳表示させるステップと
前記検出された位置姿勢に対するオフセット量を設定するステップとを備える、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【0002】
従来、視覚センサを用いて、バラ積みされた対象物であるワークの位置姿勢を検出し、検出結果に基づいてロボットによるワークのピッキング動作を制御する画像処理装置が知られている。
【0003】
特開2018-146347号公報(特許文献1)には、三次元計測により取得した三次元計測データに対して、ワークモデルを用いた三次元サーチ処理を実行し、ワークの位置姿勢を特定する画像処理装置が開示されている。特許文献1に開示の画像処理装置は、ワークのバラ積み状態を示す高さ画像に対し、ワークモデルの特徴点を三次元サーチ処理の結果として重畳表示する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2018-146347号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、高さ画像に対してワークモデルの特徴点が重畳表示された画面だけでは、ワークの位置姿勢の検出精度を十分に把握することができない。
【0006】
本発明は、上記の問題に鑑みてなされたものであり、その目的は、ユーザが対象物の位置姿勢の検出精度を確認しやすい画像処理装置、画像処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0007】
本開示の一例によれば、画像処理装置は、生成部と、検出部と、解析部とを備える。生成部は、対象物が視野領域に含まれるように設置された撮像装置から得られる画像に基づいて、視野領域の三次元点群データを生成する。検出部は、三次元点群データと対象物の三次元形状を示すモデルとに基づいて対象物の位置姿勢を検出する。解析部は、1以上の軸の各々について、検出部によって検出された位置姿勢に配置されたモデルにおける当該軸に直交する平面との第1交差部分と、三次元点群データで示される面における平面との第2交差部分とを表示装置に重畳表示させる。
【0008】
この開示によれば、ユーザは、各軸に直交する仮想平面上での第1交差部分と第2交差部分とのずれを確認することができる。当該ずれは、検出部によるワークの位置姿勢の検出精度に依存する。そのため、ユーザは、検出部によるワークの位置姿勢の検出精度を確認しやすくなる。
【0009】
上述の開示において、1以上の軸の各々について、当該軸の方向および当該軸上における平面の位置の少なくとも一方は可変である。
【0010】
この開示によれば、ユーザは、所望の位置に仮想平面を移動し、当該仮想平面上の第1交差部分と第2交差部分とを確認できる。
【0011】
上述の開示において、1以上の軸は、互いに直交する3つの軸を含む。この開示によれば、ユーザは、互いに直交する3つの軸にそれぞれ直交する3つの仮想平面の各々における第1交差部分と第2交差部分とを確認できる。その結果、ユーザは、検出部によるワークの位置姿勢の様々な方向における検出精度を確認できる。
【0012】
上述の開示において、画像処理装置は、検出された位置姿勢に対するオフセット量を設定する設定部と、検出された位置姿勢からオフセット量だけ移動させた位置姿勢に応じて、対象物をピッキングするロボットの動作を決定する決定部とをさらに備える。
【0013】
この開示によれば、ユーザは、オフセット量を指定することにより、ロボットの動作を適宜調整できる。なお、オフセット量は、並進成分および回転成分の少なくとも一方を含む。
【0014】
上述の開示において、設定部は、表示装置に表示されたモデルに対する移動操作に従って、オフセット量を設定する。
【0015】
この開示によれば、ユーザは、ワークモデルに対する移動操作を行なうことにより、オフセット量を容易に指定することができる。
【0016】
上述の開示において、解析部は、表示装置に表示されているモデルをオフセット量だけ移動させる。
【0017】
この開示によれば、ユーザは、表示装置に表示されているワークモデルの移動量を確認することにより、オフセット量の大きさを視覚的に認識できる。
【0018】
本開示の一例によれば、画像処理方法は、第1~第3のステップを備える。第1のステップは、対象物が視野領域に含まれるように設置された撮像装置から得られる画像に基づいて、視野領域の三次元点群データを生成するステップである。第2のステップは、三次元点群データと対象物の三次元形状を示すモデルとに基づいて対象物の位置姿勢を検出するステップである。第3のステップは、1以上の軸の各々について、検出された位置姿勢に配置されたモデルにおける当該軸に直交する平面との第1交差部分と、三次元点群データで示される面における平面との第2交差部分とを表示装置に重畳表示させるステップである。
【0019】
本開示の一例によれば、プログラムは、上記の方法をコンピュータに実行させる。これらの開示によっても、ユーザは、対象物の位置姿勢の検出精度を確認しやすくなる。
【発明の効果】
【0020】
本開示によれば、ユーザは、対象物の位置姿勢の検出精度を確認しやすくなる。
【図面の簡単な説明】
【0021】
図1】実施の形態に係る制御システムの全体構成を示す概略図である。
図2】制御システムを構成する各部材の座標系の対応関係を示す図である。
図3】ワークモデルと、当該ワークモデルを把持するエンドエフェクタモデルとの位置関係を示す図である。
図4】三次元点群データで示される計測表面と、当該三次元点群データから検出されたワークの位置姿勢に配置されたワークモデルとの一例を示す図である。
図5】三次元点群データで示される計測表面と、当該三次元点群データから検出されたワークの位置姿勢に配置されたワークモデルとの別の例を示す図である。
図6】ワークの位置姿勢の検出結果を確認するための解析画面の一例を示す図である。
図7図1に示す画像処理装置のハードウェア構成の一例を示す概略図である。
図8図1に示す画像処理装置の機能構成の一例を示すブロック図である。
図9図8に示す解析部によって表示される解析画面の一例を示す図である。
図10】ドラッグ操作によりオフセット量の回転成分の入力を受け付けるときの画面例を示す図である。
図11】オフセット量の第1の設定例を示す図である。
図12】検出された位置姿勢に配置したワークモデルとワークとの並進ずれの一例を示す図である。
図13】検出された位置姿勢に配置したワークモデルとワークとの回転ずれの一例を示す図である。
図14】オフセット量の第2の設定例を示す図である。
図15】解析モード時の画像処理装置の処理の流れを示すフローチャートである。
図16】通常モード時の画像処理装置の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0022】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0023】
§1 適用例
まず、図1図6を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る制御システムの全体構成を示す概略図である。図1に例示される制御システムSYSは、生産ラインなどに組み込まれ、コンテナ2に収容された対象物(以下、「ワーク1」と称する。)に対するピッキングの制御を行なう。ワーク1は、コンテナ2内にバラ積みされる。そのため、コンテナ2内でのワーク1の位置姿勢はランダムである。
【0024】
図1に例示される制御システムSYSは、画像処理装置100と、ロボットコントローラ200と、ロボット300と、計測ヘッド400とを備える。画像処理装置100には、表示装置150および入力装置160が接続されている。入力装置160は、例えばキーボードおよびマウスを含む。
【0025】
ロボット300は、ワーク1のピッキングを行なう。ロボット300は、ワーク1を保持するエンドエフェクタ30と、エンドエフェクタ30の位置姿勢を変更するための多関節アーム31と、多関節アーム31を支持するベース32とを含む。ロボット300の動作は、ロボットコントローラ200によって制御される。
【0026】
図1に例示されるエンドエフェクタ30は、2つの爪33を有し、2つの爪33を用いてワーク1を把持する。なお、爪33は、ワーク1を把持する際に、ワーク1に接触する部位であり、「指」とも称される。ワーク1の保持方法は、2つの爪を用いた把持に限定されない。例えば、エンドエフェクタ30は、3つ以上の爪を用いてワークを把持してもよいし、吸着パッドを用いてワーク1を吸着してもよい。
【0027】
ロボットコントローラ200は、画像処理装置100からの動作指令を受けて、ロボット300の多関節アーム31を制御する。具体的には、ロボットコントローラ200は、エンドエフェクタ30がワーク1に対するピッキング動作を行なうように多関節アーム31を制御する。
【0028】
計測ヘッド400は、コンテナ2およびコンテナ2に収容されたワーク1が被写体となるように設置され、当該被写体を撮像する。計測ヘッド400は、投影部401と撮像部402とを備える。投影部401は、画像処理装置100からの指示に従って任意の投影パターン光を被写体に投影する。投影パターンは、例えば照射面内の所定方向に沿って明るさが周期的に変化するパターンである。撮像部402は、投影パターン光が投影された状態の被写体を撮像する。
【0029】
投影部401は、主要なコンポーネントとして、例えば、LED(Light Emitting Diode)やハロゲンランプなどの光源と、投影部401の照射面の側に配置されたフィルタとを含む。フィルタは、後述するような三次元形状の計測に必要な投影パターン光を発生させるものであり、画像処理装置100からの指令に従って、面内の透光率を任意に変化させることができる。投影部401は、液晶またはやDMD(Digital Mirror Device)と光源(LEDまたはレーザ光源など)とを用いた構成であってもよい。
【0030】
撮像部402は、主要なコンポーネントとして、例えば、レンズなどの光学系と、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった撮像素子とを含む。
【0031】
画像処理装置100は、計測ヘッド400から受けた画像に基づいて、コンテナ2に収容されたワーク1の位置姿勢を検出する。画像処理装置100は、検出したワーク1の位置姿勢に基づいて、エンドエフェクタ30のピッキング動作を決定する。画像処理装置100は、決定したピッキング動作に対応する動作指令を生成し、生成した動作指令をロボットコントローラ200に出力する。ロボットコントローラ200は、動作指令に従って、画像処理装置100によって決定されたピッキング動作をロボット300に実行させる。
【0032】
具体的には、画像処理装置100は、検出したワーク1の位置姿勢に応じて、当該ワーク1を把持するときのエンドエフェクタ30の取るべき位置姿勢(以下、「把持点」とも称する。)を決定する。画像処理装置100は、待機位置から把持点まで移動し、ワーク1を把持してから目的位置(ワーク1のプレース位置)まで移動するピッキング動作を決定する。
【0033】
図2および図3を参照して、画像処理装置100によるピッキング動作の決定方法について説明する。図2は、制御システムを構成する各部材の座標系の対応関係を示す図である。図3は、ワークモデルと、当該ワークモデルを把持するエンドエフェクタモデルとの位置関係を示す図である。
【0034】
図2において、「ベース座標系B」は、ロボット300のベース32を基準とする座標系である。「ツール座標系T」は、ロボット300の多関節アーム31の先端面(エンドエフェクタ30が取り付けられるフランジ面)に設定される座標系である。フランジ面の位置姿勢は、エンドエフェクタ30の位置姿勢を定義付ける。「カメラ座標系C」は、計測ヘッド400の撮像部402を基準とする座標系である。「ワーク座標系W」は、ワーク1を基準とする座標系である。
【0035】
計測ヘッド400から受けた画像に基づいて検出されるワーク1の位置姿勢は、例えばカメラ座標系Cをワーク座標系Wに変換する座標変換行列CWによって示される。座標変換行列CWは、カメラ座標系Cにおけるワーク座標系Wの基底ベクトルの成分および原点の位置を表す。
【0036】
一方、画像処理装置100からロボットコントローラ200に出力される動作指令は、例えばベース座標系Bをツール座標系Tに変換する座標変換行列BTによって示される。座標変換行列BTは、ベース座標系Bにおけるツール座標系Tの基底ベクトルの成分および原点の位置を表す。
【0037】
座標変換行列CWBTは、以下の式(1)を満たす。
BCCWBTTW ・・・式(1)
式(1)において、座標変換行列BCは、ベース座標系Bをカメラ座標系Cに変換する行列である。座標変換行列BCは、ベース座標系Bにおけるカメラ座標系Cの基底ベクトルの成分および原点の位置を表す。座標変換行列TWは、ツール座標系Tをワーク座標系Wに変換する行列である。座標変換行列TWは、ツール座標系Tにおけるワーク座標系Wの基底ベクトルの成分および原点の位置を表す。
【0038】
本実施の形態では、計測ヘッド400は、コンテナ2全体を撮像可能な位置に固定される。そのため、式(1)の座標変換行列BCは、固定値で表され、事前に実行されるキャリブレーションによって求められる。キャリブレーションとして、例えば、ロボット300のフランジ面にマーカを取り付け、ロボット300を動作させながら計測ヘッド400の撮像部402でマーカを撮像するハンドアイキャリブレーションが採用され得る。
【0039】
ワーク1を把持するときのエンドエフェクタ30の位置姿勢(把持点)は、ワーク1の三次元形状を示すモデル(以下、「ワークモデル1M」と称する。)とエンドエフェクタ30の三次元形状を示すモデル(以下、エンドエフェクタモデル30M」と称する。)とを用いて予め登録される。
【0040】
図3に示されるように、ユーザは、ワーク1をエンドエフェクタ30が把持するときのワーク1に対するエンドエフェクタ30の相対位置姿勢と一致するように、仮想空間上において、ワークモデル1Mとエンドエフェクタモデル30Mとを配置する。このようにして仮想空間上に配置されたエンドエフェクタモデル30Mに対するワークモデル1Mの相対位置姿勢を示す座標変換行列TMWMが算出される。算出された座標変換行列TMWMは、把持点データとして画像処理装置100に予め登録される。
【0041】
座標変換行列TMWMは、エンドエフェクタモデル30Mの多関節アーム側の面を基準とする座標系TMにおけるワークモデル1Mの座標系WMの基底ベクトルの成分および原点の位置を表す。座標系TMの基底ベクトルおよび原点は、エンドエフェクタモデル30Mを多関節アーム31のフランジ面に取り付けたと仮定したときに、ツール座標系T(図2参照)の基底ベクトルおよび原点とそれぞれ一致するように設定される。ワークモデル1Mの基底ベクトルおよび原点は、ワークモデル1Mをワーク1と重ね合わせたときに、ワーク座標系W(図2参照)の基底ベクトルおよび原点とそれぞれ一致するように設定される。
【0042】
画像処理装置100は、式(1)の座標変換行列TWに予め登録された把持点データ(座標変換行列TMWM)を入力する。これにより、画像処理装置100は、以下の式(2)に従って、計測ヘッド400から受けた画像に基づいて検出されたワーク1を把持するときのエンドエフェクタ30の位置姿勢を示す座標変換行列BTを算出する。
BT=(TMWM-1BCCW ・・・式(2)
画像処理装置100は、算出した座標変換行列BTに従って、ロボットコントローラ200への動作指令を生成すればよい。
【0043】
画像処理装置100によるワーク1の位置姿勢の検出は、三次元サーチを用いて実行される。三次元サーチは、計測ヘッド400から受けた画像に基づいて生成される三次元点群データの中から、ワーク1の三次元形状を示すワークモデルと一致または近似する特徴点を抽出し、抽出した特徴点に基づいてワーク1の位置姿勢を検出する処理である。三次元点群データは、計測ヘッド400から受けた画像から計測される、視野領域内に存在する物体表面(以下、「計測表面」と称する。)を示す。三次元サーチは、公知の検出アルゴリズム(「認識アルゴリズム」とも称される。)を用いて実行される。
【0044】
図4は、三次元点群データで示される計測表面と、当該三次元点群データから検出されたワークの位置姿勢に配置されたワークモデルとの一例を示す図である。図5は、三次元点群データで示される計測表面と、当該三次元点群データから検出されたワークの位置姿勢に配置されたワークモデルとの別の例を示す図である。
【0045】
図4および図5に示されるように、検出アルゴリズムの癖によって、検出された位置姿勢に配置したワークモデル71は、三次元点群データで示される計測表面70に対して常に一定方向に並進または回転し得る。図4に示す例では、ワークモデル71は、計測表面70に対して+Z方向にずれている。図5に示す例では、ワークモデル71は、計測表面70に対してY軸を中心とする回転方向にずれている。ただし、計測表面70に対するワークモデル71の並進ずれおよび回転ずれの方向は、検出アルゴリズムの癖に依存し、図4および図5に例示する方向に限定されない。
【0046】
従来、図4および図5に示されるような検出ずれをユーザが十分に確認できなかった。そのため、本実施の形態に係る画像処理装置100は、ワーク1の位置姿勢の検出精度を確認するための解析画面をユーザに提示する。
【0047】
図6は、ワークの位置姿勢の検出結果を確認するための解析画面の一例を示す図である。図6に例示される解析画面50は、画像処理装置100によって表示装置150(図1参照)に表示される。
【0048】
図6に示されるように、解析画面50は、領域51,61~62を含む。領域51には、計測ヘッド400を用いて計測された三次元点群データで示される距離画像が表示される。距離画像は、カラーマップで表現され、XY平面上の各画素についてZ座標(高さ)を色または濃度によって示す。距離画像が取りうるZ座標の範囲は、カラーバー52によって示される。なお、X軸、Y軸およびZ軸は互いに直交する。Z軸は、撮像部402の光軸と平行である。
【0049】
領域51には、三次元サーチによって検出された位置姿勢に配置されたワークモデル71をZ軸方向に投影した領域の輪郭71dが距離画像に重畳して表示される。図6に示す例では、三次元サーチにより三次元点群データから複数のワーク1の位置姿勢が検出されている。そのため、複数の輪郭71dが表示されている。
【0050】
さらに、領域51には、X軸に直交する仮想平面(以下、「第1仮想平面」と称する。)の位置を指定するためのライン53と、Y軸に直交する仮想平面(以下、「第2仮想平面」と称する。)の位置を指定するためのライン54とが表示される。カラーバー52には、Z軸に直交する仮想平面(以下、「第3仮想平面」と称する。)の位置を指定するためのライン55が表示される。ライン53,54,55の位置は、入力装置160に対する操作に応じて可変である。
【0051】
領域60には、検出された位置姿勢に配置されたワークモデル71における第1仮想平面との交差部分71aと、計測表面70における第1仮想平面との交差部分70aとが重畳表示される。
【0052】
領域61には、検出された位置姿勢に配置されたワークモデル71における第2仮想平面との交差部分71bと、計測表面70における第2仮想平面との交差部分70bとが重畳表示される。
【0053】
領域62には、検出された位置姿勢に配置されたワークモデル71における第3仮想平面との交差部分71cと、計測表面70における第3仮想平面との交差部分70cとが重畳表示される。
【0054】
このように、画像処理装置100は、X,Y,Z軸の各々について、検出された位置姿勢に配置されたワークモデル71における当該軸に直交する平面との交差部分と、計測表面70における当該平面との交差部分とを表示装置150に重畳表示させる。ユーザは、X,Y,Z軸の各々に直交する平面上での2つの交差部分のずれを確認することができる。当該ずれは、三次元サーチによるワークの位置姿勢の検出精度に依存する。そのため、ユーザは、三次元サーチによるワークの位置姿勢の検出精度を確認しやすくなる。
【0055】
§2 具体例
次に、本実施の形態に係る制御システムの具体例について説明する。
【0056】
<A.画像処理装置のハードウェア構成例>
画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム(命令コード)を実行することで、本実施の形態に係る画像処理を実行する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置100にインストールされる。
【0057】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る画像処理を実行するためのアプリケーションに加えて、コンピュータの基本的な処理を実行するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0058】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0059】
図7は、図1に示す画像処理装置のハードウェア構成の一例を示す概略図である。図7に示されるように、画像処理装置100は、演算処理部であるCPU(Central Processing Unit)110と、記憶部としてのメインメモリ112およびハードディスク114と、計測ヘッドインターフェース116と、入力インターフェース118と、表示コントローラ120と、通信インターフェース124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続される。
【0060】
CPU110は、ハードディスク114にインストールされたプログラム(コード)をメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、計測ヘッド400によって取得された画像などを保持する。さらに、ハードディスク114には、後述するような各種データなどが格納される。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【0061】
計測ヘッドインターフェース116は、CPU110と計測ヘッド400との間のデータ伝送を仲介する。すなわち、計測ヘッドインターフェース116は、計測ヘッド400と接続される。計測ヘッドインターフェース116は、CPU110が発生した内部コマンドに従って、計測ヘッド400に対して投影コマンドおよび撮像コマンドを与える。計測ヘッドインターフェース116は、計測ヘッド400からの画像を一時的に蓄積するための画像バッファ116aを含む。計測ヘッドインターフェース116は、画像バッファ116aに所定コマ数の画像が蓄積されると、その蓄積された画像をメインメモリ112へ転送する。
【0062】
入力インターフェース118は、CPU110と入力装置160との間のデータ伝送を仲介する。すなわち、入力インターフェース118は、ユーザが入力装置160に入力した入力情報を受付ける。
【0063】
表示コントローラ120は、表示装置150と接続され、CPU110における処理結果などをユーザに通知するように表示装置150の表示を制御する。
【0064】
通信インターフェース124は、CPU110とロボットコントローラ200などの外部装置との間のデータ伝送を仲介する。通信インターフェース124は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
【0065】
データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、計測ヘッド400によって撮像された画像および/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体等からなる。
【0066】
<B.画像処理装置の機能構成例>
図8は、図1に示す画像処理装置の機能構成の一例を示すブロック図である。図8に示されるように、画像処理装置100は、ヘッド制御部10と、記憶部11と、画像処理部12と、UI(User Interface)処理部13とを備える。ヘッド制御部10は、図7に示すCPU110および計測ヘッドインターフェース116によって実現される。記憶部11は、図7に示すメインメモリ112およびハードディスク114によって実現される。画像処理部12は、図7に示すCPU110および通信インターフェース124によって実現される。UI処理部13は、図7に示すCPU110、入力インターフェース118および表示コントローラ120によって実現される。
【0067】
画像処理装置100は、動作モードとして通常モードおよび解析モードを有する。通常モードが選択された場合、ヘッド制御部10および画像処理部12が動作する。解析モードが選択された場合、ヘッド制御部10、画像処理部12およびUI処理部13が動作する。解析モードは、例えば生産ラインの立ち上げ時および定期的なメンテナンス時に選択される。
【0068】
ヘッド制御部10は、計測ヘッド400の動作を制御する。ヘッド制御部10は、予め定められた投影パターン光の投影を指示する投影コマンドを計測ヘッド400に出力する。ヘッド制御部10は、投影パターン光が投影されている状態で撮像コマンドを計測ヘッド400に出力する。ヘッド制御部10は、計測ヘッド400から取得した画像データ11aを記憶部11に格納する。
【0069】
記憶部11には、計測ヘッド400の撮像により得られた画像データ11aが格納される。さらに、記憶部11には、ワーク1の三次元形状を示すCAD(Computer Aided Design)データ11bと、ワーク1を把持するときのエンドエフェクタ30の位置姿勢を示す把持点データ11cとが予め格納される。さらに、記憶部11には、三次元サーチによって検出された位置姿勢に対する補正量(以下、「オフセット量」と称する。)を示すオフセットデータ11dも格納される。オフセットデータ11dは、UI処理部13によって生成される。オフセットデータ11dの詳細については後述する。
【0070】
画像処理部12は、計測ヘッド400の撮像により得られた画像データ11aに対する処理を行なう。図8に示されるように、画像処理部12は、3D画像生成部14と、検出部15と、動作指令決定部16と、通信部17とを含む。
【0071】
3D画像生成部14は、画像データ11aに基づいて、計測ヘッド400の視野領域における三次元計測を行ない、三次元点群データを生成する。三次元点群データは、計測ヘッド400の視野領域に存在する物体表面(計測表面)上の各点の三次元座標を示す。
【0072】
三次元点群データは、例えば、計測表面上のM×N個の点の三次元座標(x1,y1,z1),・・・,(xM、y1,zM),(x1,y2、zM+1),・・・,(xM,y2、z2M),・・・,(xM,yN,zNM)を示す。点(x1,y1),・・・,(xM、yN)は、撮像部402の光軸に直交するXY平面上にマトリクス状に配置されたM×N個の点を表す。なお、撮像部402が透視投影によって画像データ11aを生成する場合、当該画像データ11aに基づいて生成される三次元点群データで示される点群は、通常、XY平面上に投影したときにマトリクス状に配置されない。このような場合、3D画像生成部14は、XY平面上に投影したときにマトリクス状に配置されたM×N個の点群に対応するように三次元点群データの座標値を適宜補間し、三次元点群データで示される点群を再配置すればよい。
【0073】
三次元計測処理として、例えば三角測距方式、同軸方式が採用され得る。三角測距方式は、撮像と投光との光軸を基線長分だけ離間させ、視差を距離に変換する方式である。三角測距方式には、アクティブ法とパッシブ法とが含まれる。アクティブ法には、構造化照明法、位相シフト法、空間コード法が含まれる。同軸方式は、撮像と測距手段との光軸を同一に設定する方式である。測距手段として、焦点方式が含まれる。また、同軸に近い方式としてTOF(Time of Flight)方式も含まれる。3D画像生成部14は、これらの方式のいずれかを用いて三次元計測処理を実行すればよい。例えば位相シフト法を用いて三次元計測処理が行なわれる。
【0074】
位相シフト法は、正弦波状に濃淡を変化させた投影パターン光を被写体に投影した状態で撮像された画像(正弦波投影画像)を用いる方法である。濃淡の変化周期や位相を異ならせた投影パターンが複数用意され、計測ヘッド400の投影部401は、撮像部402の視野領域に対して、複数の投影パターン光を順次照射する。3D画像生成部14は、複数の投影パターンが投影されたときにそれぞれ撮像される画像データ11aの群(正弦波投影画像群)を記憶部11から読み出す。そして、3D画像生成部14は、これらの画像データ11a間における対応する部分の明るさ(輝度や明度)の変化に基づいて、三次元座標を算出する。
【0075】
検出部15は、三次元サーチによってワーク1の位置姿勢を検出する。具体的には、検出部15は、予め作成された複数のテンプレートデータと三次元点群データとを照合し、三次元点群データの中からテンプレートと類似するデータを抽出する。テンプレートデータは、CADデータ11bに基づいて予め作成される。典型的には、仮想空間上にCADデータ11bで示されるワークモデルと複数の仮想視点とを配置し、複数の仮想視点の各々から見たときのワークモデルの表面上の点の座標を示すテンプレートデータが作成される。検出部15は、三次元点群データの中から抽出した、テンプレートと類似するデータに基づいて、ワーク1の位置姿勢を検出する。検出部15によって検出されるワーク1の位置姿勢は、計測ヘッド400の撮像部402の座標系(カメラ座標系C(図2参照))で示される。なお、検出部15は、公知の検出アルゴリズムを用いて、ワーク1の位置姿勢を検出すればよい。
【0076】
なお、検出部15は、複数のワーク1の位置姿勢を検出した場合、予め定められた選択基準に従って、当該複数のワーク1のうちの1つをピッキング対象として選択する。
【0077】
動作指令決定部16は、ピッキング対象のワーク1の位置姿勢に応じて、エンドエフェクタ30の動作を決定する。具体的には、動作指令決定部16は、検出部15によって検出された位置姿勢を示す座標変換行列CWと、事前のキャリブレーションによって算出された座標変換行列BCと、把持点データ11cで示される座標変換行列TMWMとを上記の式(2)に代入することにより、座標変換行列BTを算出する。画像処理装置100は、算出した座標変換行列BTに従って、ロボットコントローラ200への動作指令を生成する。
【0078】
ただし、動作指令決定部16は、記憶部11にオフセットデータ11dが格納されている場合、検出部15によって検出された位置姿勢を示す座標変換行列CWをオフセットデータ11dが示すオフセット量だけ補正する。動作指令決定部16は、補正後の座標変換行列CWを上記の式(2)に代入する。
【0079】
通信部17は、ロボットコントローラ200と通信可能であり、動作指令決定部16によって生成された動作指令をロボットコントローラ200に送信する。
【0080】
UI処理部13は、画像処理装置100の動作およびロボット300の動作に関する情報をユーザに提供する処理を実行する。図8に示されるように、UI処理部13は、解析部18と設定部19とを含む。
【0081】
解析部18は、3D画像生成部14によって生成された直近の三次元点群データと、当該三次元点群データに対する検出部15の検出結果(ワーク1の位置姿勢)とを取得する。解析部18は、取得した三次元点群データおよび検出結果に対する解析処理を実行し、解析結果を示す解析画面を表示装置150に表示する。解析画面の詳細については後述する。
【0082】
設定部19は、三次元サーチによって検出された位置姿勢に対するオフセット量を設定する。後述するように解析部18によって表示装置150に表示される解析画面には、オフセット量を設定するための入力欄が設けられる。設定部19は、当該入力欄への入力に従ってオフセット量を設定する。設定部19は、設定したオフセット量を示すオフセットデータ11dを生成し、生成したオフセットデータ11dを記憶部11に格納する。
【0083】
<C.解析画面>
図9は、図8に示す解析部によって表示装置に表示される解析画面の一例を示す図である。図9に例示される解析画面50aは、図6に示す解析画面50と同様に、領域51,60~62を含む。解析画面50aは、さらに、検出された位置姿勢に配置された1つのワークモデルを選択するための入力欄63と、オフセット量を入力するための入力欄64,65と、オフセット量を設定するためのOKボタン68とを含む。
【0084】
解析部18は、3D画像生成部14から取得した三次元点群データで示される距離画像を領域51に表示する。さらに、解析部18は、検出部15から取得した検出結果で示されるワーク1の位置姿勢に配置したワークモデル71をXY平面に投影した領域の輪郭71dを距離画像に重畳表示する。具体的には、解析部18は、検出結果で示される位置姿勢と一致するようCADデータ11bの座標を変換する。ワークモデル71は、座標変換されたCADデータ11bによって示される。
【0085】
解析部18は、距離画像上のライン53のX座標=x0に基づいて、X軸に直交する第1仮想平面を決定する。具体的には、解析部18は、x=x0で示される平面を第1仮想平面として決定する。
【0086】
解析部18は、ワークモデル71における第1仮想平面との交差部分71aを領域60に表示する。上述したように、ワークモデル71は、検出結果で示される位置姿勢と一致するように座標変換されたCADデータ11bによって示される。解析部18は、座標変換されたCADデータ11bによって示される面要素(三角メッシュなど)と第1仮想平面との交線を交差部分71aとして表示させる。
【0087】
さらに、解析部18は、三次元点群データで示される計測表面70における第1仮想平面との交差部分70aを領域60に表示する。すなわち、解析部18は、交差部分70aと交差部分71aとを重畳表示させる。
【0088】
三次元点群データが計測表面上のM×N個の点の座標(x1,y1,z1),・・・,(xM,yN,zNM)を示す場合、ライン53のX座標は、所定ピッチΔx間隔のx1,・・・,xMのいずれかのみを取り得るように設定されていてもよい。この場合、解析部18は、三次元点群データから、第1仮想平面と同じX座標(=x0)を有する点の座標を抽出し、抽出した座標に基づいて、交差部分70aを領域60に表示させる。
【0089】
ライン53のX座標は、x1,・・・,xMだけでなく、他の値も取り得るように設定されていてもよい。この場合、解析部18は、三次元点群データから、第1仮想平面を挟み込む2つの点からなるペアをN個抽出する。ペアは、X軸方向に沿った距離が所定ピッチΔx以下となる2点からなる。例えば、第1仮想平面のX座標x0がxk-1<x0<xである場合、N個のペアは、点(xk-1,yi,z(i-1)M+k-1)と点(xk,yi,z(i-1)M+k)とからなるペア(iは1~Nの整数)である。解析部18は、N個のペアの各々について、当該ペアを構成する2つの点の座標を用いた補間演算により、三次元点群データで示される計測表面と第1仮想平面との交線上の点の座標を求める。例えば、解析部18は、座標(xk-1,y1,zk-1)と座標(xk,y1,zk)とを用いて、計測表面と第1仮想平面との交線上の点の座標(x0,y1,{(xk-x0)zk-1+(x0-xk-1)zk}/(xk-xk-1))を演算する。
【0090】
解析部18は、ライン53の位置が変更されるたびに、変更後のライン53の位置に応じて領域60に表示される交差部分70a,71aを更新する。これにより、ユーザは、ライン53の位置を変更することにより、所望の位置の第1仮想平面上の交差部分70a,71aの相対位置関係を確認できる。
【0091】
解析部18は、距離画像上のライン54のY座標=y0に基づいて、Y軸に直交する第2仮想平面を決定する。具体的には、解析部18は、y=y0で示される平面を第2仮想平面として決定する。
【0092】
解析部18は、ワークモデル71における第2仮想平面との交差部分71bを領域61に表示する。解析部18は、検出結果で示される位置姿勢と一致するように座標変換されたCADデータ11bによって示される面要素と第2仮想平面との交線を交差部分71bとして表示させる。
【0093】
さらに、解析部18は、三次元点群データで示される計測表面70における第2仮想平面との交差部分70bを領域61に表示する。すなわち、解析部18は、交差部分70bと交差部分71bとを重畳表示させる。
【0094】
三次元点群データが計測表面上のM×N個の点の座標(x1,y1,z1),・・・,(xM,yN,zNM)を示す場合、ライン54のY座標は、所定ピッチΔy間隔のy1,・・・,yNのいずれかのみを取り得るように設定されていてもよい。この場合、解析部18は、三次元点群データから、第2仮想平面と同じY座標(=y0)を有する点の座標を抽出し、抽出した座標に基づいて、交差部分70bを領域61に表示させる。
【0095】
ライン54のY座標は、y1,・・・,yNだけでなく、他の値も取り得るように設定されていてもよい。この場合、解析部18は、三次元点群データから、第2仮想平面を挟み込む2つの点からなるペアをM個抽出する。ペアは、Y軸方向に沿った距離が所定ピッチΔy以下となる2点からなる。例えば、第2仮想平面のY座標y0がyk-1<y0<yである場合、M個のペアは、点(xj,yk-1,z(k-1)M+j)と点(xj,yk,zkM+j)とからなるペア(jは1~Mの整数)である。解析部18は、M個のペアの各々について、当該ペアを構成する2つの点の座標を用いた補間演算により、三次元点群データで示される計測表面と第1仮想平面との交線上の点の座標を求める。例えば、解析部18は、座標(x1,yk-1,z(k-1)M+1)と座標(x1,yk,zkM+1)とを用いて、計測表面と第2仮想平面との交線上の点の座標(x1,y0,{(yk-y0)z(k-1)M+1+(y0-yk-1)zkM+1}/(yk-yk-1))を演算する。
【0096】
解析部18は、ライン54の位置が変更されるたびに、変更後のライン54の位置に応じて領域61に表示される交差部分70b,71bを更新する。これにより、ユーザは、ライン54の位置を変更することにより、所望の位置の第2仮想平面上の交差部分70b,71bの相対位置関係を確認できる。
【0097】
解析部18は、カラーバー52上のライン55のZ座標=z0に基づいて、Z軸に直交する第3仮想平面を決定する。具体的には、解析部18は、z=z0で示される平面を第3仮想平面として決定する。
【0098】
解析部18は、ワークモデル71における第3仮想平面との交差部分71cを領域62に表示する。解析部18は、検出結果で示される位置姿勢と一致するように座標変換されたCADデータ11bによって示される面要素と第3仮想平面との交線を交差部分71cとして表示させる。
【0099】
さらに、解析部18は、三次元点群データで示される計測表面70における第3仮想平面との交差部分70cを領域62に表示する。すなわち、解析部18は、交差部分70cと交差部分71cとを重畳表示させる。
【0100】
三次元点群データが計測表面上のM×N個の点の座標(x1,y1,z1),・・・,(xM,yN,zNM)を示す場合、解析部18は、三次元点群データから、第3仮想平面を挟み込む2つの点からなるペアを抽出する。ペアは、X軸方向に沿った距離が所定ピッチΔx以下となる2点、または、Y軸方向に沿った距離が所定ピッチΔy以下となる2点からなる。解析部18は、各ペアについて、当該ペアを構成する2つの点の座標を用いた補間演算により、三次元点群データで示される計測表面と第3仮想平面との交線上の点の座標を求める。例えば、解析部18は、1つのペアを構成する2つの点の座標(x1,y1,z1),(x2,y1,z2)(ただし、z1およびz2は、z1<z0<z2またはz2<z0<z1を満たす)を用いて、計測表面と第3仮想平面との交線上の点の座標({(|z2-z0|)x1+(|z0-z1|)x2}/(|z2-z1|),y1,z0)を演算する。同様に、解析部18は、1つのペアを構成する2つの点の座標(x1,y1,z1),(x1,y2,zM+1)(ただし、z1およびzM+1は、z1<z0<zM+1またはzM+1<z0<z1を満たす)を用いて、計測表面と第3仮想平面との交線上の点の座標(x1,{(|zM+1-z0|)y1+(|z0-z1|)y2}/(|zM+1-z1|),z0)を演算する。
【0101】
解析部18は、ライン55の位置が変更されるたびに、変更後のライン55の位置に応じて領域62に表示される交差部分70c,71cを更新する。これにより、ユーザは、ライン55の位置を変更することにより、所望の位置の第3仮想平面上の交差部分70b,71bの相対位置関係を確認できる。
【0102】
解析部18は、検出部15から取得した検出結果で示される1以上のワーク1の位置姿勢の各々に対してユニークな識別番号を付与する。
【0103】
入力欄63には、オフセット量を設定するために用いる1つのワークモデル71に対応する識別番号が入力される。解析部18は、入力欄63に入力された識別番号の位置姿勢に配置されたワークモデル71に対応する輪郭71dおよび交差部分71a~71cを領域51,60~62においてそれぞれ強調表示させる。図9に例示される解析画面50aでは、入力欄63に入力された識別番号の位置姿勢に配置されたワークモデル71に対応する輪郭71d_sおよび交差部分71a_s~71c_sが太線で表示されている。
【0104】
入力欄64には、オフセット量の並進成分(X軸、Y軸およびZ軸の各々の並進成分)が入力される。入力欄64にオフセット量の並進成分が入力されると、解析部18は、入力欄63に入力された識別番号の位置姿勢に配置されたワークモデル71_sの交差部分71a_s~71c_sを当該並進成分だけ移動させる。これにより、ユーザは、オフセット量の大きさを視覚的に認識できる。
【0105】
入力欄65には、オフセット量の回転成分(X軸、Y軸およびZ軸の各々の並進成分)が入力される。入力欄65は、回転中心を設定するためのラジオボタン群66を含む。ラジオボタン群66は、クリック位置を回転中心に設定するためのラジオボタンと、ワークモデル71の重心を回転中心に設定するためのラジオボタンと、ワークモデル71を示す座標変換後のCADデータ11bの原点を回転中心に設定するためのラジオボタンとを含む。
【0106】
さらに、入力欄65は、回転角度を入力するための入力欄67を含む。入力欄67に回転角度が入力されると、解析部18は、入力欄63に入力された識別番号の位置姿勢に配置されたワークモデル71_sの交差部分71a_s~71c_sを当該回転角度だけ移動させる。これにより、ユーザは、オフセット量の大きさを視覚的に認識できる。このとき、解析部18は、ラジオボタン群66においてチェックされたラジオボタンに対応する位置を回転中心とする。
【0107】
設定部19は、OKボタン68が操作されると、入力欄64,65への入力に従って、オフセット量を設定する。設定部19は、設定したオフセット量を示すオフセットデータ11dを生成する。オフセットデータ11dは、座標変換行列で表される。図9に示す解析画面50aは入力欄64,65の両方を含む。これにより、設定部19は、オフセット量の回転成分および並進成分の両方を設定できる。しかしながら、入力欄64,65の一方が省略されてもよい。この場合、設定部19は、オフセット量の回転成分および並進成分の一方のみ設定すればよい。
【0108】
設定部19は、入力欄63に入力された識別番号の位置姿勢に配置されたワークモデル71_sの交差部分71a_s~71c_sに対する移動操作(ドラッグ操作)を受け付けてもよい。設定部19は、ドラッグ操作に応じて入力欄64,65の数値を変更してもよい。すなわち、設定部19は、ワークモデル71_sの交差部分71a_s~71c_sに対する移動操作に従って、オフセット量を設定してもよい。
【0109】
例えば、領域60に表示されている交差部分71a_sに対する並進移動操作により、設定部19は、オフセット量のY軸方向およびZ軸方向の少なくとも一方の並進成分の入力を受け付けてもよい。領域61に表示されている交差部分71b_sに対する並進移動により、設定部19は、オフセット量のX軸方向およびZ軸方向の少なくとも一方の並進成分の入力を受け付けてもよい。領域62に表示されている交差部分71c_sに対する並進移動により、設定部19は、オフセット量のX軸方向およびY軸方向の少なくとも一方の並進成分の入力を受け付けてもよい。
【0110】
また、領域60に表示されている交差部分71a_sに対する回転移動操作により、設定部19は、X軸に平行な軸を中心とするオフセット量の回転成分の入力を受け付けてもよい。領域61に表示されている交差部分71b_sに対する回転移動操作により、設定部19は、Y軸に平行な軸を中心とするオフセット量の回転成分の入力を受け付けてもよい。領域62に表示されている交差部分71c_sに対する回転移動操作により、設定部19は、Z軸に平行な軸を中心とするオフセット量の回転成分の入力を受け付けてもよい。
【0111】
図10は、ドラッグ操作によりオフセット量の回転成分の入力を受け付けるときの画面例を示す図である。図10には、Y軸に平行な軸を中心とするオフセット量の回転成分の入力を受け付けるときの画面例が示される。図10に示されるように、設定部19は、回転中心を示すマーク72を表示させる。マーク72の位置は、ラジオボタン群66においてチェックされたラジオボタンに対応する。設定部19は、交差部分71b_sに対するドラッグ操作(矢印73の方向のドラッグ操作)に応じて、Y軸に平行な軸を中心とする回転角度の入力を受け付ける。
【0112】
<D.オフセット量の第1の設定例>
図4および図5を用いて上述したように、検出アルゴリズムの癖によって、検出された位置姿勢に配置したワークモデル71は、三次元点群データで示される計測表面70に対して常に一定方向に並進または回転し得る。ユーザは、図8に例示される解析画面50aを確認することにより、検出された位置姿勢に配置したワークモデル71と計測表面70とのずれを確認できる。このようなずれが確認されたことに応じて、ユーザは、例えば検出アルゴリズムを見直す対応を取ることができる。しかしながら、一般に検出アルゴリズムは複雑であり、ユーザは、このような対応を簡単に取ることができない。そこで、ユーザは、このようなずれを解消するためのオフセット量を入力すればよい。
【0113】
図11は、オフセット量の第1の設定例を示す図である。図11において、(a)にはオフセット量を設定する前の状態が示され、(b)にはオフセット量を設定した後の状態が示される。図11において、下部には、検出された位置姿勢に配置したワークモデル71と計測表面70が示され、上部には、ワーク1とワーク1を把持するときのエンドエフェクタ30とが示される。
【0114】
図11には、検出アルゴリズムの癖によって、検出された位置姿勢に配置したワークモデル71が計測表面70に対して-Z方向に並進している例が示される。この場合、(a)の上部に示されるように、ワーク1に対するエンドエフェクタ30の把持位置は、把持点データ11cで示されるワークモデル1Mに対するエンドエフェクタモデル30Mの相対位置(図3参照)よりも-Z方向に移動する。その結果、例えば爪33が他のワーク1と衝突する可能性が高くなる。
【0115】
そのため、ユーザは、ワークモデル71と計測表面70とのずれが小さくなるようにオフセット量を入力する。具体的には、ユーザは、+Z方向の並進成分を入力する。これにより、(b)の上部に示されるように、ワーク1に対するエンドエフェクタ30の把持位置は、把持点データ11cで示されるワークモデル1Mに対するエンドエフェクタモデル30Mの相対位置(図3参照)に近づく。その結果、例えば爪33が他のワーク1と衝突する可能性を低減できる。
【0116】
<E.オフセット量の第2の設定例>
上述したように、動作指令決定部16は、上記の式(2)を用いて動作指令を生成する。式(2)において、座標変換行列BCには、キャリブレーションの誤差に起因する成分が含まれる。座標変換行列CWには、ワーク1の実際の寸法とCADデータ11bで示されるワークモデルの寸法との誤差(製造公差、ワーク1の製造装置の経年変化による誤差などを含む)に起因する成分が含まれる。さらに、上記の式(2)を用いて算出した座標変換行列BTに従って動作指令を生成したとしても、ロボット300の経年変化、ロボット300の周囲の温度の影響により、動作指令とロボット300の実際の動作とに誤差が生じ得る。これらの原因により、ワークモデル71と計測表面70とのずれが小さい場合であっても、ワーク1に対するエンドエフェクタ30の把持位置は、把持点データ11cで示されるワークモデル1Mに対するエンドエフェクタモデル30Mの相対位置(図3参照)と一致しないことがある。
【0117】
図12は、検出された位置姿勢に配置したワークモデルとワークとの並進ずれの一例を示す図である。図12に示す例では、ワーク1の実際の位置は、ワークモデル71の位置よりも-Z方向にずれている。そのため、エンドエフェクタ30によってワーク1が把持されない可能性がある。
【0118】
図13は、検出された位置姿勢に配置したワークモデルとワークとの回転ずれの一例を示す図である。ワーク1が細長い形状を有している場合、ワーク1の長手方向とXY平面とのなす角度が少し異なっていても、計測ヘッド400の撮像部402から見たときのワーク1の形状の変化が小さい。そのため、図13に示されるように、ワーク1の長手方向とXY平面との実際のなす角度は、ワークモデル71の長手方向とXY平面とのなす角度からずれ得る。そのため、エンドエフェクタ30によってワーク1が把持されない可能性がある。
【0119】
このようなケースであっても、ユーザは、図8に解析画面50aにおいてオフセット量を入力することができる。ユーザは、エンドエフェクタ30がワーク1を把持するときの状態を確認し、当該状態に応じてオフセット量を入力すればよい。
【0120】
図14は、オフセット量の第2の設定例を示す図である。図11と同様に、(a)にはオフセット量を設定する前の状態が示され、(b)にはオフセット量を設定した後の状態が示される。下部には、検出された位置姿勢に配置したワークモデル71と計測表面70が示され、上部には、ワーク1とエンドエフェクタ30との相対位置関係が示される。
【0121】
図14には、検出された位置姿勢に配置したワークモデル71と計測表面70とのずれが小さい例が示される。しかしながら、(a)の上部に示されるように、上記の原因により、ワーク1に対するエンドエフェクタ30の把持位置は、把持点データ11cで示されるワークモデル1Mに対するエンドエフェクタモデル30Mの相対位置(図3参照)よりも+Z方向に移動している。そのため、ワーク1を把持できない可能性がある。
【0122】
このような場合、ユーザは、エンドエフェクタ30がワーク1を把持できるようにオフセット量を入力すればよい。具体的には、ユーザは、-Z方向の並進成分を入力する。このとき、ワークモデル71と計測表面70とのずれ量は、オフセット量に対応する。そのため、ユーザは、解析画面50aに表示される計測表面70を参考にしながら適切なオフセット量を入力することができる。適切なオフセット量が設定されることにより、(b)の上部に示されるように、ワーク1に対するエンドエフェクタ30の把持置は、把持点データ11cで示されるワークモデル1Mに対するエンドエフェクタモデル30Mの相対位置(図3参照)に近づく。その結果、エンドエフェクタ30は、ワーク1を正確に把持できる。
【0123】
<F.解析モード時の画像処理装置の処理の流れ>
図15は、解析モード時の画像処理装置の処理の流れを示すフローチャートである。まず、CPU110は、計測ヘッド400から取得した画像データ11aに基づいて、視野領域の物体表面(計測表面)を示す三次元点群データを生成する(ステップS1)。CPU110は、三次元点群データとワーク1の三次元形状を示すモデル(CADデータ11bで示されるワークモデル)とに基づいて、ワーク1の位置姿勢を検出する(ステップS2)。
【0124】
CPU110は、X軸、Y軸およびZ軸の各々について、検出された位置姿勢に配置されたワークモデル71における当該軸に直交する平面との交差部分と、三次元点群データで示される計測表面における当該平面との交差部分とを表示装置150に重畳表示する(ステップS3)。具体的には、図8に示すような解析画面50aが表示装置150に表示される。CPU110は、解析画面50aへの入力に従って、検出された位置姿勢に対するオフセット量を設定する(ステップS4)。ステップS4の後、画像処理装置100は、解析モードの処理を終了する。
【0125】
<G.通常モード時の画像処理装置の処理の流れ>
図16は、通常モード時の画像処理装置の処理の流れを示すフローチャートである。まず、CPU110は、計測ヘッド400から取得した画像データ11aに基づいて、視野領域の物体表面(計測表面)を示す三次元点群データを生成する(ステップS11)。CPU110は、三次元点群データとワーク1の三次元形状を示すモデル(CADデータ11bで示されるワークモデル)とに基づいて、ワーク1の位置姿勢を検出する(ステップS12)。
【0126】
CPU110は、解析モードにおいて設定されたオフセット量だけ、検出されたワーク1の位置姿勢を補正する(ステップS13)。CPU110は、補正された位置姿勢に応じて、ワーク1をピッキングするロボット300の動作を決定する(ステップS14)。CPU110は、決定した動作に対応する動作指令を生成し、生成した動作指令をロボットコントローラ200に出力する(ステップS15)。ステップS15の後、画像処理装置100は、通常モードの処理を終了する。
【0127】
<H.変形例>
上記の説明では、解析画面50,50aの領域60~62には、X,Y,Z軸に直交する仮想平面と、ワークモデル71および計測表面70との交差部分がそれぞれ表示される。しかしながら、仮想平面を定義付ける1以上の軸は、X,Y,Z軸に限定されず、例えば、X,Y,Z軸から所定角度だけ傾斜した、互いに直交する3つの軸であってもよい。また、仮想平面を定義付ける軸の方向は、ユーザの操作によって可変であってもよい。これにより、ユーザは、確認したい方向に軸を適宜変更することができる。
【0128】
<I.作用・効果>
以上のように、本実施の形態に係る画像処理装置100は、3D画像生成部14と、検出部15と、解析部18とを備える。3D画像生成部14は、ワーク1が視野領域に含まれるように設置された撮像部402から得られる画像に基づいて、視野領域の三次元点群データを生成する。検出部15は、三次元点群データとワーク1の三次元形状を示すワークモデルとに基づいてワーク1の位置姿勢を検出する。解析部18は、1以上の軸の各々について、検出部15によって検出された位置姿勢に配置されたワークモデルにおける当該軸に直交する仮想平面との交差部分と、三次元点群データで示される計測表面における仮想平面との交差部分とを表示装置150に重畳表示させる。
【0129】
上記の構成によれば、ユーザは、各軸に直交する仮想平面上での2つの交差部分のずれを確認することができる。当該ずれは、三次元サーチによるワークの位置姿勢の検出精度に依存する。そのため、ユーザは、三次元サーチによるワークの位置姿勢の検出精度を確認しやすくなる。
【0130】
1以上の軸の各々について、当該軸の方向および当該軸上における仮想平面の位置の少なくとも一方は可変である。これにより、ユーザは、所望の位置に仮想平面を移動し、当該仮想平面とワークモデル71および計測表面70との交差部分を確認できる。
【0131】
1以上の軸は、互いに直交する3つの軸を含む。これにより、ユーザは、互いに直交する3つの軸にそれぞれ直交する3つの仮想平面とワークモデル71および計測表面70との交差部分を同時に確認できる。
【0132】
画像処理装置100は、設定部19と、動作指令決定部16とをさらに備える。設定部19は、検出された位置姿勢に対するオフセット量を設定する。動作指令決定部16は、検出された位置姿勢からオフセット量だけ移動させた位置姿勢に応じて、ワーク1をピッキングするロボット300の動作を決定する。これにより、ユーザは、オフセット量を指定することにより、ロボットの動作を適宜調整できる。なお、オフセット量は、並進成分および回転成分の少なくとも一方を含む。
【0133】
設定部19は、表示装置150に表示されたワークモデルに対する移動操作に従って、オフセット量を設定する。これにより、ユーザは、ワークモデルに対する移動操作を行なうことにより、オフセット量を容易に指定することができる。
【0134】
解析部18は、表示装置150に表示されているワークモデルをオフセット量だけ移動させる。これにより、ユーザは、表示装置150に表示されているワークモデルの移動量を確認することにより、オフセット量の大きさを視覚的に認識できる。
【0135】
<J.付記>
以上のように、本実施の形態および変形例は以下のような開示を含む。
【0136】
(構成1)
画像処理装置(100)であって、
対象物(1)が視野領域に含まれるように設置された撮像装置(400,402)から得られる画像に基づいて、前記視野領域の三次元点群データを生成する生成部(110,14)と、
前記三次元点群データと前記対象物(1)の三次元形状を示すモデルとに基づいて前記対象物(1)の位置姿勢を検出する検出部(110,15)と、
1以上の軸の各々について、前記検出部(110,15)によって検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置(150)に重畳表示させる解析部(110,18)とを備える、画像処理装置(100)。
【0137】
(構成2)
前記1以上の軸の各々について、当該軸の方向および当該軸上における前記平面の位置の少なくとも一方は可変である、構成1に記載の画像処理装置(100)。
【0138】
(構成3)
前記1以上の軸は、互いに直交する3つの軸を含む、構成1または2に記載の画像処理装置(100)。
【0139】
(構成4)
前記検出された位置姿勢に対するオフセット量を設定する設定部(110,19)と、
前記検出された位置姿勢から前記オフセット量だけ移動させた位置姿勢に応じて、前記対象物をピッキングするロボットの動作を決定する決定部(110,16)とをさらに備える、構成1から3のいずれかに記載の画像処理装置(100)。
【0140】
(構成5)
前記設定部(110,19)は、前記表示装置(150)に表示された前記モデルに対する移動操作に従って、前記オフセット量を設定する、構成4に記載の画像処理装置(100)。
【0141】
(構成6)
前記解析部(110,19)は、前記表示装置(150)に表示されている前記モデルを前記オフセット量だけ移動させる、構成4に記載の画像処理装置(100)。
【0142】
(構成7)
前記オフセット量は、並進成分および回転成分の少なくとも一方を含む、構成4から6のいずれかに記載の画像処理装置(100)。
【0143】
(構成8)
画像処理方法であって、
対象物(1)が視野領域に含まれるように設置された撮像装置(400,402)から得られる画像に基づいて、前記視野領域の三次元点群データを生成するステップと、
前記三次元点群データと前記対象物の三次元形状を示すモデルとに基づいて前記対象物(1)の位置姿勢を検出するステップと、
1以上の軸の各々について、検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置(150)に重畳表示させるステップとを備える、画像処理方法。
【0144】
(構成9)
画像処理方法をコンピュータに実行させるプログラムであって、
前記画像処理方法は、
対象物(1)が視野領域に含まれるように設置された撮像装置(400,402)から得られる画像に基づいて、前記視野領域の三次元点群データを生成するステップと、
前記三次元点群データと前記対象物(1)の三次元形状を示すモデルとに基づいて前記対象物(1)の位置姿勢を検出するステップと、
1以上の軸の各々について、検出された位置姿勢に配置された前記モデルにおける当該軸に直交する平面との第1交差部分と、前記三次元点群データで示される面における前記平面との第2交差部分とを表示装置(150)に重畳表示させるステップとを備える、プログラム。
【0145】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0146】
1 ワーク、1M,71 ワークモデル、2 コンテナ、10 ヘッド制御部、11 記憶部、11a 画像データ、11b CADデータ、11c 把持点データ、11d オフセットデータ、12 画像処理部、13 UI処理部、14 3D画像生成部、15 検出部、16 動作指令決定部、17 通信部、18 解析部、19 設定部、30 エンドエフェクタ、30M エンドエフェクタモデル、31 多関節アーム、32 ベース、33 爪、50,50a 解析画面、51,60,61,62 領域、52 カラーバー、53,54,55 ライン、63,64,65,67 入力欄、66 ラジオボタン群、68 OKボタン、70 計測表面、70a,70b,70c,71a,71b,71c 交差部分、71d 輪郭、72 マーク、73 矢印、100 画像処理装置、106 メモリカード、110 CPU、112 メインメモリ、114 ハードディスク、116 計測ヘッドインターフェース、116a 画像バッファ、118 入力インターフェース、120 表示コントローラ、124 通信インターフェース、126 データリーダ/ライタ、128 バス、150 表示装置、160 入力装置、200 ロボットコントローラ、300 ロボット、400 計測ヘッド、401 投影部、402 撮像部、SYS 制御システム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16