【解決手段】移動制御部は、撮像部が第1の位置および第1の姿勢に配置されているときの画像を用いて計測部により計測された被写体の三次元形状である計測形状に基づいて、被写体を再度撮像すべき第2の位置および第2の姿勢を決定して、移動機構へ指示する。三次元形状は、基準面からの高さ情報によって示される。移動制御部は、計測形状から、高さ情報が欠損している欠損領域を抽出し、計測形状における欠損領域の周囲の高さ情報に基づいて、第2の位置および第2の姿勢を決定する。
前記移動制御部は、前記計測形状における前記欠損領域の周囲の2点を結ぶ対象線分の高さ情報が取得可能なように前記第2の位置および前記第2の姿勢を決定する、請求項1に記載の視覚センサシステム。
前記2点の一方は、前記計測形状において、前記欠損領域の周囲のうち前記高さ情報が最大の点であり、前記2点の他方は、前記欠損領域の周囲のうち前記高さ情報が最小の点である、請求項2または3に記載の視覚センサシステム。
前記移動制御部は、前記計測形状における前記欠損領域の周囲の少なくとも3点に近似する近似平面のうち前記欠損領域と重なる対象領域の高さ情報が取得可能なように前記第2の位置および前記第2の姿勢を決定する、請求項2に記載の視覚センサシステム。
前記移動制御部は、前記2点のうち前記高さ情報が高い方の点である基準点を前記撮像部の光軸が通るように、前記第2の位置を決定する、請求項2から5のいずれか1項に記載の視覚センサシステム。
前記移動制御部は、前記2点のうち前記高さ情報が低い方の点である基準点を前記撮像部の光軸が通るように、前記第2の位置を決定する、請求項2から5のいずれか1項に記載の視覚センサシステム。
前記移動制御部は、前記2点の中点である基準点を前記撮像部の光軸が通るように、前記第2の位置を決定する、請求項2から5のいずれか1項に記載の視覚センサシステム。
前記移動制御部は、前記基準点と前記第1の位置との距離と、前記基準点と前記第2の位置との距離とが同一となるように、前記第2の位置を決定する、請求項8から11のいずれか1項に記載の視覚センサシステム。
【発明を実施するための形態】
【0026】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0027】
§1 適用例
図1を参照して、本発明が適用される場面の一例について説明する。
図1は、実施の形態に係る視覚センサシステムの全体構成を示す模式図である。視覚センサシステム1は、たとえば、所定位置に設置されたパレット102上に積まれた複数の対象物100全体を被写体101とし、被写体101の表面の三次元形状を計測する。視覚センサシステム1によって計測された三次元形状は、様々な用途に利用される。たとえば、図示しない把持ロボットは、視覚センサシステム1によって計測された三次元形状に基づいて、複数の対象物100の中から最も高い位置の対象物100を選択し、選択した対象物100を把持して、別の場所に搬送する。
【0028】
図1に示されるように、視覚センサシステム1は、取得ユニット10と、ロボット20と、計測部30と、合成部40と、移動制御部50とを備える。
【0029】
取得ユニット10は、被写体101の表面の三次元形状を計測するための画像を取得する。取得ユニット10は、被写体101にパターン光を投影するプロジェクタ11と、パターン光が投影された被写体101を撮像するカメラ12とを一体化したユニットである。パターン光は、たとえば縞パターンである。
【0030】
ロボット20は、取得ユニット10を移動させる移動機構であり、たとえば垂直多関節ロボットである。ロボット20の先端には、取得ユニット10が固定されている。ロボット20は、カメラ12を指示された位置に指示された姿勢で配置するように、取得ユニット10を移動させる。
【0031】
計測部30は、カメラ12により撮像された画像を処理することにより、被写体101の表面の三次元形状を計測し、計測した三次元形状を示す三次元形状データを生成する画像処理装置である。
【0032】
三次元形状は、たとえばパレット102の上面である基準面103をXY平面とし、Z軸をXY平面に垂直な軸とするXYZ座標系によって示される。Z座標値は、基準面103から被写体101の表面までの高さ情報である。三次元形状データは、計測された三次元形状の各点のXYZ座標値を含む。なお、カメラ12の座標系とロボット20の座標系とを対応付けるキャリブレーションが予め行なわれている。計測部30は、キャリブレーションデータとロボット20の位置および姿勢とに基づいて、カメラ12の座標系の値から絶対座標系であるXYZ座標値を計算できる。
【0033】
図2は、計測部30によって計測された三次元形状から変換された距離画像の一例を示す図である。距離画像は、三次元形状データのZ座標値(高さ情報)を輝度値に変換することにより得られる。
図2において、輝度が大きいほどZ座標値が大きいことを示している。
【0034】
図2において、欠損領域60は、三次元形状データにおいてZ座標値が欠損している領域であり、最小の輝度で示される。被写体101において影となる部分には、プロジェクタ11からパターン光が十分に投影されない。計測部30は、パターン光が十分に投影されない部分のZ座標値を計測することができない。つまり、欠損領域60は、パターン光が十分に投影されなかった影領域に対応する。
【0035】
図1に戻って、合成部40は、カメラ12が第1の位置および第1の姿勢に配置されているときの画像を用いて計測された三次元形状(以下、「第1計測形状」という)と、カメラ12が第2の位置および第2の姿勢に配置されているときの画像を用いて計測された三次元形状(以下、「第2計測形状」という)とを合成する。具体的には、合成部40は、第1計測形状を示す三次元形状データにおいて欠損領域60(
図2参照)に対応する部分のZ座標値を、第2計測形状を示す三次元形状データにおいて同領域のZ座標値に置換する。
【0036】
移動制御部50は、カメラ12の位置および姿勢をロボット20に指示することにより、取得ユニット10の移動を制御する。
【0037】
移動制御部50は、第1計測形状に欠損領域が含まれている場合、被写体101を再度撮像すべきカメラ12の第2の位置および第2の姿勢を決定する。移動制御部50は、決定した第2の位置および第2の姿勢をロボット20に指示する。
【0038】
移動制御部50は、第1計測形状に応じて、第1の位置および第1の姿勢から第2の位置および第2の姿勢への移動量を異ならせる。具体的には、移動制御部50は、第1計測形状から欠損領域60(
図2参照)を抽出し、第1計測形状における欠損領域60の周囲のZ座標値に基づいて、第2の位置および第2の姿勢を決定する。欠損領域60の周囲のZ座標値は、欠損領域60内の被写体101の三次元形状と関係している可能性が高い。そのため、欠損領域60の周囲のZ座標値を用いることにより、欠損領域60内のZ座標値を取得しやすい第2の位置および第2の姿勢を決定することができる。
【0039】
移動制御部50は、たとえば、第1計測形状における欠損領域60の周囲の2点を結ぶ対象線分のZ座標値が取得可能なように第2の位置および第2の姿勢を決定する。
【0040】
図3は、欠損領域およびその周辺の高さプロファイルを示す図である。
図3において、点62,63は、基準面103に対する高さ情報を示すZ座標値が欠損している欠損領域60の周囲の2点である。欠損領域60内の被写体101の三次元形状は未知であるが、点62と点63とを結ぶ対象線分64のZ座標値を取得可能な第2の位置および第2の姿勢にカメラ12を配置することにより、欠損領域60内のZ座標値を取得できる可能性が高くなる。
【0041】
§2 具体例
次に、本実施の形態に係る視覚センサシステムの各構成の一例について説明する。
【0042】
<A.計測部>
計測部30は、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置、通信I/F等を含み、画像処理を行なう。補助記憶装置は、たとえば、ハードディスクドライブ、ソリッドステートドライブ等で構成され、CPUが実行するプログラム等を記憶する。
【0043】
計測部30は、カメラ12によって撮像された画像を処理し、被写体101におけるカメラ12側の表面の三次元形状を計測し、計測した三次元形状を示す三次元形状データを生成する。具体的には、計測部30は、被写体101の表面上の各点のXYZ座標値を算出する。計測部30は、カメラ12の位置および姿勢を示す位置姿勢情報を用いてカメラ12の座標系をロボット20のXYZ座標系に変換することにより、被写体101の三次元形状データを算出する。XYZ座標系は、上述したように、XY平面がパレット102の上面である基準面103と一致し、Z軸がXY平面に直交するように設定されたロボット20の座標系である。計測部30は、たとえば位相シフト法のような公知の方法(たとえば、特開2007−114071号公報(特許文献2))を用いて、Z座標値を算出すればよい。もしくは、計測部30は、構造化照明式の公知の方法(たとえば、特開2012−79294号公報(特許文献3))を用いて、Z座標値を算出してもよい。
【0044】
計測部30は、プロジェクタ11から投影されたパターン光を認識できない領域についてZ座標値を算出しない。
【0045】
<B.移動制御部のハードウェア構成>
図4は、移動制御部のハードウェア構成について示す模式図である。移動制御部50は、CPU(Central Processing Unit)501、メインメモリ502、ハードディスク503、ディスプレイ504、入力デバイス505および通信インターフェイス(I/F)506を含む。これらの各部は、バス500を介して、互いにデータ通信可能に接続される。
【0046】
CPU501は、ハードディスク503にインストールされた制御プログラム507を含むプログラム(コード)をメインメモリ502に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ502は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置である。
【0047】
ハードディスク503は、移動制御部50が備える内部メモリであって、不揮発性の記憶装置である。ハードディスク503は、制御プログラム507等の各種プログラムを記憶する。なお、ハードディスク503に加えて、あるいは、ハードディスク503に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【0048】
制御プログラム507は、ロボット20を制御するための手順を示すプログラムである。制御プログラム507等の各種プログラムは、ハードディスク503に保存されている必要はなく、移動制御部50と通信可能なサーバや、移動制御部50と直接接続可能な外部メモリに保存されていてもよい。たとえば、外部メモリに移動制御部50で実行される各種プログラムおよび各種プログラムで用いられる各種パラメータが格納された状態で流通し、移動制御部50は、この外部メモリから各種プログラムおよび各種パラメータを読み出す。外部メモリは、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。あるいは、移動制御部50と通信可能に接続されたサーバなどからダウンロードしたプログラムやパラメータを移動制御部50にインストールしてもよい。
【0049】
ディスプレイ504は、たとえば液晶ディスプレイである。入力デバイス505は、たとえばマウス、キーボード、タッチパッド等により構成される。
【0050】
通信I/F506は、外部の装置とCPU501との間で各種データをやり取りする。なお、通信I/F506は、サーバとCPU501との間でデータをやり取りしてもよい。通信I/F506は、外部の装置との間で各種データをやり取りするためのネットワークに対応するハードウェアを含む。
【0051】
なお、本実施の形態に係る制御プログラム507は、他のプログラムの一部に組み込まれて提供されるものであってもよい。また、代替的に、制御プログラム507の実行により提供される処理の一部もしくは全部を専用のハードウェア回路が行なってもよい。
【0052】
<C.移動制御部の内部構成>
図5は、移動制御部の内部構成の一例を示すブロック図である。
図5に示す例の移動制御部50は、指示値生成部51と、移動先決定部52とを備える。
【0053】
指示値生成部51は、カメラ12の位置および姿勢の指示値を生成し、生成した指示値をロボット20に出力する。指示値は、カメラ12のXYZ座標値と、カメラ12の撮像方向の単位ベクトルのXYZ成分とを含む。さらに、指示値生成部51は、生成した指示値をカメラ12の位置姿勢情報として計測部30に出力する。
【0054】
指示値生成部51は、まず最初に、第1の位置および第1の姿勢に対応する第1の指示値を生成し、生成した第1の指示値をロボット20に出力する。第1の位置および第1の姿勢は、予め定められている。第1の位置は、たとえば、パレット102(
図1参照)の中心点から所定距離だけ上方の位置である。第1の姿勢は、たとえば、カメラ12の撮像方向が鉛直方向下向きとなる姿勢である。
【0055】
指示値生成部51は、第1の指示値を生成した後、移動先決定部52によって決定された第2の位置および第2の姿勢に対応する第2の指示値を生成し、生成した第2の指示値をロボット20に出力する。
【0056】
移動先決定部52は、カメラ12が第1の位置および第1の姿勢に配置されているときの画像を用いて計測された被写体101の表面の三次元形状(第1計測形状)に基づいて、被写体101を再度撮像すべき第2の位置および第2の姿勢を決定する。
【0057】
移動先決定部52は、距離画像生成部53と、ラベリング部54と、対象線分決定部55と、第1角度演算部56と、第2角度設定部57と、姿勢決定部58と、位置決定部59とを有する。
【0058】
距離画像生成部53は、計測部30により計測された第1計測形状を示す三次元形状データから距離画像データを生成する。距離画像生成部53は、第1計測形状を示す三次元形状データのZ座標値を輝度値に変換することにより、距離画像データを生成する。なお、距離画像生成部53は、計測部30によってZ座標値が算出されていない領域の輝度を最小値に設定する。
【0059】
ラベリング部54は、距離画像生成部53によって生成された距離画像データに対してラベリング処理を施すことにより、最小値の輝度を有する画素が縦、横または斜め方向に連続している欠損領域60(
図2参照)を抽出する。
【0060】
対象線分決定部55は、第1計測形状において欠損領域60の周囲の2点を結ぶ対象線分64(
図3参照)を決定する。
【0061】
ラベリング部54によって複数の欠損領域60が抽出された場合、対象線分決定部55は、複数の欠損領域60から1つの欠損領域60を選択し、選択した欠損領域60に対してのみ対象線分64を決定する。複数の欠損領域60から1つの欠損領域60を選択するアルゴリズムは、視覚センサシステム1によって計測された三次元形状の利用方法に応じて予め定められる。たとえば、複数の対象物100の中から最も高い位置の対象物100を選択するために三次元形状が利用される場合、対象線分決定部55は、複数の欠損領域60の中から、周囲の高さが最も高い欠損領域60を選択すればよい。
【0062】
図6および
図7を参照して、対象線分決定部55による対象線分64の決定方法について説明する。
図6は、距離画像に設定される基準線の一例を示す図である。
図7は、
図6に示す基準線の高さプロファイルを示す図である。
【0063】
図6に示されるように、対象線分決定部55は、距離画像データで示される距離画像において、欠損領域60の重心61を通り、X軸方向に平行な直線を基準線65として決定する。対象線分決定部55は、基準線65上の点から、欠損領域60に隣接する2つの点67,68を選択する。点67,68は、距離画像における欠損領域60の周囲の点である。
【0064】
図7に示されるように、対象線分決定部55は、輝度値をZ座標値に逆変換することにより、点67,68に対応するXYZ座標系の点62,63をそれぞれ特定する。対象線分決定部55は、点62,63を結ぶ線分を対象線分64として決定する。基準線65がX軸方向に平行であるため、対象線分64を基準面103に投影した線分は、X軸方向に平行である。
【0065】
第1角度演算部56は、
図7に示されるように、対象線分決定部55によって決定された対象線分64と、第1の位置および第1の姿勢に配置されたカメラ12の光軸13に垂直な第1平面66とのなす角度(以下、「第1角度」という)θaを演算する。上述したように、第1の姿勢は、カメラ12の撮像方向が鉛直方向下向きとなる姿勢である。そのため、第1の位置および第1の姿勢に配置されたカメラ12の光軸13に垂直な第1平面66は、XY平面に平行である。
図7に示す例では、XY平面である基準面103と第1平面66とが一致している。
【0066】
図5に戻って、第2角度設定部57は、計測部30によってZ座標値の算出が可能な被写体101の表面と、カメラ12の光軸に垂直な平面とのなす角度の上限(以下、「第2角度θb」という)を設定する。
【0067】
図8は、プロジェクタ11から照射されたパターン光の経路の一例を示す図である。
図8(a)には、被写体101の表面がカメラ12の光軸に垂直な平面14に平行であるときのパターン光の経路が示される。
図8(b)には、被写体101の表面がカメラ12の光軸に垂直な平面14に対して角度θmaxだけ傾斜しているときのパターン光の経路が示される。
図8に示されるように、プロジェクタ11からの入射光は、被写体101の表面において、出射方向に応じた強度分布を持つ拡散反射を行なう。そのため、被写体101の表面が傾くに従い、カメラ12が受光できる反射光が低下する。被写体101の表面と、カメラ12の光軸13に垂直な平面14とのなす角度が角度θmax以下であれば、所定のS/N比を維持できる。一方、被写体101の表面と、カメラ12の光軸13に垂直な平面14とのなす角度が角度θmaxを超えると、計測部30は、被写体101の表面について、Z座標値(高さ情報)を精度良く算出することができない。そこで、第2角度設定部57は、角度θmaxを第2角度θbとして設定する。
【0068】
角度θmaxは、カメラ12の特性(たとえば画角)によって異なる。さらに、角度θmaxは、被写体101の材質によっても異なる。被写体101の材質によって、パターン光の反射性能および散乱性能が異なるからである。そのため、第2角度設定部57は、カメラ12の特性および被写体101の材質と角度θmaxとを対応付けたテーブルを予め記憶しておき、入力されたカメラ12の特性および被写体101の材質に応じて第2角度θbを設定する。
【0069】
姿勢決定部58は、対象線分64(
図7参照)のZ座標値の算出が可能なように、カメラ12の第2の姿勢を決定する。対象線分64のZ座標値を取得するためには、カメラ12の光軸13に垂直な平面と対象線分64とのなす角度が第2角度θb以下であることが好ましい。そのため、姿勢決定部58は、以下の式(1)を満たすθwを、第1の姿勢から第2の姿勢への移動角度θwとして決定する。
0≦θa−θw≦θb ・・・式(1)
たとえば、姿勢決定部58は、第1角度θaと第2角度θbとの差(θa−θb)を移動角度θwとして決定する。これにより、第1の姿勢から第2の姿勢への回転移動量を最小限に抑制できる。
【0070】
姿勢決定部58は、対象線分64を含み、かつ基準面103(つまり、XY面)に垂直な第2平面(つまり、
図7の紙面であり、XZ面に平行な面)に沿って、第1の姿勢を回転移動させた姿勢を第2の姿勢として決定する。具体的には、姿勢決定部58は、対象線分64(
図7参照)とカメラ12の光軸13とのなす角度が90度に近づく方向に、第2平面に沿って第1の姿勢から移動角度θwだけ回転した姿勢を第2の姿勢として決定する。
【0071】
位置決定部59は、対象線分64(
図7参照)のZ座標値が算出可能なように、カメラ12の第2の位置を決定する。具体的には、位置決定部59は、以下の条件a,bを満たすカメラ12の位置を第2の位置として決定する。
条件a:姿勢決定部58によって決定された第2の姿勢において、対象線分64(
図7参照)の両端の2つの点62,63のうちZ座標値が大きい方の点(つまり、高さ情報が高い方の点)をカメラ12の光軸が通る。
条件b:対象線分64(
図7参照)の両端の2つの点62,63のうちZ座標値が大きい方の点(つまり、高さ情報が高い方の点)(基準点)から第1の位置までの距離と、当該点から第2の位置までの距離とが同じである。
【0072】
上記のようにして、対象線分64のZ座標値が算出可能なように、第2の位置および第2の姿勢が決定される。対象線分64のZ座標値を算出可能な第2の位置および第2の姿勢にカメラ12を配置することにより、欠損領域60内のZ座標値を算出できる可能性が高くなる。
【0073】
<D.視覚センサシステムの処理の流れ>
図9は、視覚センサシステムの処理の流れの一例を示すフローチャートである。まずステップS1において、カメラ12が第1の位置および第1の姿勢に配置される。ステップS2において、プロジェクタ11は、被写体101にパターン光を投影する。ステップS3において、カメラ12は、パターン光が投影された被写体101を撮像する。ステップS4において、計測部30は、ステップS3において撮像された画像(つまり、カメラ12が第1の位置および第1の姿勢に配置されているときの画像)を用いて、被写体101の表面の三次元形状(第1計測形状)を計測する。
【0074】
次にステップS5において、距離画像生成部53は、第1計測形状を示す三次元形状データから距離画像データを生成する。ステップS6において、ラベリング部54は、距離画像データにラベリング処理を施す。ステップS7において、距離画像データで示される距離画像に欠損領域が含まれるか否かが判断される。距離画像に欠損領域が含まれない場合(ステップS7でNO)、ステップS8において、合成部40は、第1計測形状を示す三次元形状データを計測結果データとして出力する。ステップS8の後、視覚センサシステム1は、処理を終了する。
【0075】
距離画像に欠損領域が含まれる場合(ステップS7でYES)、ステップS9において、移動先決定部52は、第1計測形状に基づいて、被写体101を再度撮像すべき第2の位置および第2の姿勢を決定する。
【0076】
次にステップS10において、カメラ12が第2の位置および第2の姿勢に配置される。ステップS11において、プロジェクタ11は、被写体101にパターン光を投影する。ステップS12において、カメラ12は、パターン光が投影された被写体101を撮像する。ステップS13において、計測部30は、ステップS10において撮像された画像(つまり、カメラ12が第2の位置および第2の姿勢に配置されているときの画像)を用いて、被写体101の三次元形状(第2計測形状)を計測する。
【0077】
次にステップS14において、合成部40は、第1計測形状を示す三次元形状データと第2計測形状を示す三次元形状データとを合成することにより計測結果データを生成し、生成した計測結果データを出力する。ステップS14の後、視覚センサシステム1は、処理を終了する。
【0078】
<E.移動先決定部の処理の流れ>
図10は、
図9における第2の位置および第2の姿勢を決定する処理(ステップS9)のサブルーチンを説明するフローチャートである。
【0079】
ステップS21において、対象線分決定部55は、距離画像から抽出された欠損領域のうち、周囲の高さが最も高い欠損領域を選択する。なお、距離画像から抽出された欠損領域が1つだけである場合、対象線分決定部55は、当該欠損領域を選択する。
【0080】
ステップS22において、対象線分決定部55は、第1計測形状において、選択した欠損領域の周囲の2点を結ぶ対象線分を決定する。ステップS23において、第1角度演算部56は、対象線分と、第1の位置および第1の姿勢に配置されたカメラ12の光軸に垂直な第1平面とのなす第1角度θaを演算する。ステップS24において、第2角度設定部57は、カメラ12の特性および被写体101の材質に応じて第2角度θbを設定する。
【0081】
次にステップS25において、姿勢決定部58は、式(1)(0≦θa−θw≦θb)を満たす移動角度θwを用いて、カメラ12の第2の姿勢を決定する。ステップS26において、位置決定部59は、対象線分の両端の2点のうちZ座標値が大きい方の点(つまり、高さ情報が高い方の点)を光軸が通るように、カメラ12の第2の位置を決定する。
【0082】
<F.作用・効果>
以上のように、視覚センサシステム1の移動制御部50は、カメラ12が第1の位置および第1の姿勢に配置されているときの画像を用いて計測部30により計測された第1計測形状に基づいて、被写体を再度撮像すべき第2の位置および第2の姿勢を決定する。移動制御部50は、決定した第2の位置および第2に姿勢をロボット20へ指示する。移動制御部50は、第1計測形状から、高さ情報であるZ座標値が欠損している欠損領域60を抽出する。移動制御部50は、第1計測形状における欠損領域60の周囲のZ座標値に基づいて、第2の位置および第2の姿勢を決定する。
【0083】
欠損領域60の周囲のZ座標値は、欠損領域60内の被写体101の三次元形状と関係している可能性が高い。そのため、欠損領域60の周囲のZ座標値を用いることにより、欠損領域60内のZ座標値を取得しやすい第2の位置および第2の姿勢を決定することができる。
【0084】
移動制御部50は、第1計測形状における欠損領域60の周囲の2点62,63を結ぶ対象線分64のZ座標値が取得可能なように第2の位置および第2の姿勢を決定する。点62と点63とを結ぶ対象線分64のZ座標値を取得可能な第2の位置および第2の姿勢にカメラ12を配置することにより、欠損領域60内のZ座標値を取得できる可能性が高くなる。
【0085】
移動制御部50は、対象線分64と、第1の位置および第1の姿勢に配置されたカメラ12の光軸13に垂直な第1平面66とのなす第1角度θaを求める。移動制御部50は、第1角度θaと、カメラ12の特性および被写体101に応じて予め定められる第2角度θbとの差(θa−θb)を、第1の姿勢から第2の姿勢への移動角度として決定する。移動制御部50は、対象線分64とカメラ12の光軸13とのなす角度が90度に近づく方向に、対象線分64を含み、かつ基準面103に垂直な第2平面に沿って第1の姿勢から移動角度θwだけ回転した姿勢を第2の姿勢として決定する。これにより、第1の姿勢から対象線分64のZ座標値を算出可能な第2の姿勢への回転移動量を最小限に抑制できる。
【0086】
対象線分64を基準面103に投影した線分は、予め定められた方向(ここではX軸の方向)に平行である。これにより、対象線分決定部55は、対象線分64を決定しやすくなる。
【0087】
<G.変形例1>
上記の説明では、対象線分決定部55は、欠損領域60の重心61を通り、X軸方向に平行な基準線65を用いて、対象線分64を決定する(
図6参照)。しかしながら、対象線分決定部55による対象線分の決定方法はこれに限定されない。
【0088】
図11は、対象線分決定部による対象線分の決定方法の別の例を示す図である。
図11に示されるように、対象線分決定部55は、欠損領域60の重心61を通り、Y軸方向に平行な基準線73を用いて、対象線分を決定してもよい。対象線分決定部55は、基準線73上の点から、欠損領域60に隣接する2つの点71,72を選択する。点71,72は、距離画像における欠損領域60の周囲の点である。対象線分決定部55は、輝度値をZ座標値に逆変換することにより、点71,72に対応するXYZ座標系の2点を特定し、当該2点を結ぶ線分を対象線分として決定する。基準線73がY軸方向に平行であるため、対象線分64を基準面103に投影した線分は、Y軸方向に平行である。
【0089】
この場合、姿勢決定部58は、対象線分を含み、かつ基準面103(つまり、XY平面)に垂直な第2平面(つまり、YZ面に平行な面)に沿って、カメラ12を回転移動させることにより、第2の姿勢を決定する。具体的には、姿勢決定部58は、対象線分とカメラ12の光軸とのなす角度が90度に近づく方向に、第2平面(YZ面に平行な面)に沿って第1の姿勢から移動角度θwだけ回転した姿勢を第2の姿勢として決定する。
【0090】
もしくは、対象線分決定部55は、距離画像において欠損領域60の周囲の点のうち、輝度値が最大である点74(つまり、Z座標値が最大である点)と、輝度値が最小である点75(つまり、Z座標値が最小である点)とを選択してもよい。対象線分決定部55は、輝度値をZ座標値に逆変換することにより、点74,75に対応するXYZ座標系の2点を特定し、当該2点を結ぶ線分を対象線分として決定する。当該2点は、第1計測形状において欠損領域60の周囲の点のうち、Z座標値(高さ情報)が最大の点とZ座標値が最小の点とである。
【0091】
これにより、対象線分決定部55は、第1の位置および第1の姿勢に配置されたカメラ12の光軸13に垂直な第1平面66(
図7参照)とのなす第1角度θaが最も大きい対象線分を決定することができる。その結果、カメラ12を第2の位置および第2の姿勢に配置することにより、欠損領域60のZ座標値を算出できる可能性が高くなる。
【0092】
<H.変形例2>
上記の説明では、位置決定部59は、対象線分64の両端の点62,63のうちZ座標値が大きい方の点を光軸が通るように、カメラ12の第2の位置を決定する。しかしながら、位置決定部59は、対象線分64の両端の点62,63のうちZ座標値が小さい方の点(つまり、高さ情報が低い方の点)を光軸が通るように、カメラ12の第2の位置を決定してもよい。もしくは、位置決定部59は、対象線分64の両端の点62,63の中点を光軸が通るように、カメラ12の第2の位置を決定してもよい。
【0093】
<I.変形例3>
第2角度設定部57は、角度θmaxから予め定められたマージン角度θαだけ小さい角度(θmax−θα)を第2角度θbとして設定してもよい。これにより、カメラ12が第2の位置および第2の姿勢に配置されたとき、カメラ12の光軸に垂直な平面と対象線分64とのなす角度が角度θmaxよりもマージン角度θα以上小さくなる。その結果、欠損領域60のZ座標値を算出しやすくなる。
【0094】
<J.変形例4>
上記の説明では、第1計測形状における欠損領域60の周囲の2点を結ぶ対象線分64のZ座標値が算出可能なように第2の位置および第2の姿勢が決定される。しかしながら、対象線分の代わりに、第1計測形状における欠損領域60の周囲の少なくとも3点に近似する近似平面のうち欠損領域と重なる対象領域のZ座標値が算出可能なように第2の位置および第2の姿勢が決定されてもよい。
【0095】
図12および
図13を参照して、変形例4に係る視覚センサシステムについて説明する。
図12は、変形例4に係る移動制御部の内部構成を示すブロック図である。
図13は、対象領域の一例を示す図である。
【0096】
図12に示されるように、変形例4に係る視覚センサシステムは、
図1に示す視覚センサシステム1と比較して、
図5に示す移動制御部50の代わりに
図11に示す移動制御部50aを備える点で相違する。移動制御部50aは、移動制御部50と比較して、対象線分決定部55、第1角度演算部56、姿勢決定部58および位置決定部59の代わりに、対象領域決定部55a、第1角度演算部56a、姿勢決定部58aおよび位置決定部59aを備える点で相違する。
【0097】
図13に示されるように、対象領域決定部55aは、第1計測形状における欠損領域60の周囲の少なくとも3つの点80に近似する近似平面81を特定する。対象領域決定部55aは、近似平面81のうち欠損領域60と重なる領域を対象領域82として決定する。
【0098】
第1角度演算部56aは、対象領域82と、第1の位置および第1の姿勢に配置されたカメラ12の光軸13に垂直な第1平面66とのなす角度を第1角度θaとして演算する。
【0099】
姿勢決定部58aは、対象領域82のZ座標値が算出可能なように第2の姿勢を決定する。具体的には、姿勢決定部58aは、姿勢決定部58と同様に、上記の式(1)を満たすθwを、第1の姿勢から第2の姿勢への移動角度θwとして決定する。たとえば、姿勢決定部58aは、第1角度θaと第2角度θbとの差(θa−θb)を移動角度θwとして決定する。これにより、第1の姿勢から第2の姿勢への移動量を最小限に抑制できる。
【0100】
姿勢決定部58aは、対象領域82の法線83を含み、かつ基準面103(つまり、XY面)に垂直な第2平面84に沿って、第1の姿勢を回転移動させることにより、第2の姿勢を決定する。具体的には、姿勢決定部58aは、対象領域82とカメラ12の光軸13とのなす角度が90度に近づく方向に、第2平面84に沿って第1の姿勢から移動角度θwだけ回転した姿勢を第2の姿勢として決定する。
【0101】
位置決定部59aは、対象領域82のZ座標値が算出可能なように第2の位置を決定する。具体的には、位置決定部59aは、以下の条件a’,b’を満たすカメラ12の位置を第2の位置として決定する。
条件a’:姿勢決定部58aによって決定された第2の姿勢において、対象領域82内の点(たとえば、対象領域82の重心)をカメラ12の光軸13が通る。
条件b’:対象領域82内の点(たとえば、対象領域の重心)から第1の位置までの距離と、当該点から第2の位置までの距離とが同じである。
【0102】
上記のようにして、対象領域82のZ座標値が算出可能なように、第2の位置および第2の姿勢が決定される。対象領域82のZ座標値を算出可能な第2の位置および第2の姿勢にカメラ12を配置することにより、欠損領域60内のZ座標値を算出できる可能性が高くなる。
【0103】
<K.その他の変形例>
移動制御部50は、カメラ12の光軸と中心として、取得ユニット10を回転させてもよい。
【0104】
図14は、取得ユニット10の回転位置の例を示す図である。
図14(a)〜(c)において、上部は側面図を示し、下部は平面図を示す。たとえば、移動制御部50は、
図14(b)に示されるように、カメラ12の光軸13を中心として、取得ユニットを180°回転させる。もしくは、移動制御部50は、
図14(c)に示されるように、カメラ12の光軸13を中心として、取得ユニットを90°回転させてもよい。これにより、プロジェクタ11からのパターン光の入射方向を変更できる。
【0105】
<付記>
以下のように、本実施の形態は、以下のような開示を含む。
【0106】
(構成1)
被写体(101)を撮像する撮像部(12)と、
前記撮像部(12)を指示された位置に指示された姿勢で配置する移動機構(20)と、
前記撮像部(12)により撮像された画像を用いて、前記被写体(101)の表面の三次元形状を計測する計測部(30)と、
前記撮像部(12)が第1の位置および第1の姿勢に配置されているときの画像を用いて前記計測部(30)により計測された前記被写体(101)の三次元形状である計測形状に基づいて、前記被写体(101)を再度撮像すべき第2の位置および第2の姿勢を決定して、前記移動機構(20)へ指示する移動制御部(50)とを備え、
前記三次元形状は、基準面(103)からの高さ情報によって示され、
前記移動制御部(50)は、
前記計測形状から、前記高さ情報が欠損している欠損領域(60)を抽出し、
前記計測形状における前記欠損領域(60)の周囲の前記高さ情報に基づいて、前記第2の位置および前記第2の姿勢を決定する、視覚センサシステム(1)。
【0107】
(構成2)
前記移動制御部(50)は、前記計測形状における前記欠損領域(60)の周囲の2点を結ぶ対象線分(64)の高さ情報が取得可能なように前記第2の位置および前記第2の姿勢を決定する、構成1に記載の視覚センサシステム(1)。
【0108】
(構成3)
前記移動制御部(50)は、
前記対象線分(64)と、前記第1の位置および前記第1の姿勢に配置された前記撮像部(12)の光軸に垂直な第1平面(66)とのなす第1角度を求め、
前記第1角度と、前記撮像部(12)の特性および前記被写体(101)に応じて予め定められる第2角度との差を、前記第1の姿勢から前記第2の姿勢への移動角度として決定し、
前記対象線分(64)と前記撮像部(12)の光軸とのなす角度が90度に近づく方向に、前記対象線分(64)を含み、かつ前記基準面(103)に垂直な第2平面に沿って前記第1の姿勢から前記移動角度だけ回転した姿勢を前記第2の姿勢として決定する、構成2に記載の視覚センサシステム(1)。
【0109】
(構成4)
前記対象線分(64)を前記基準面(103)に投影した線分は、予め定められた方向に平行である、構成3に記載の視覚センサシステム(1)。
【0110】
(構成5)
前記2点の一方は、前記計測形状において、前記欠損領域(60)の周囲のうち前記高さ情報が最大の点であり、前記2点の他方は、前記欠損領域(60)の周囲のうち前記高さ情報が最小の点である、構成2または3に記載の視覚センサシステム(1)。
【0111】
(構成6)
前記移動制御部(50)は、前記計測形状における前記欠損領域(60)の周囲の少なくとも3点に近似する近似平面(81)のうち前記欠損領域(60)と重なる対象領域(82)の高さ情報が取得可能なように前記第2の位置および前記第2の姿勢を決定する、構成2に記載の視覚センサシステム(1)。
【0112】
(構成7)
前記移動制御部(50)は、
前記対象領域(82)と、前記第1の位置および前記第1の姿勢に配置された前記撮像部(12)の光軸に垂直な第1平面(66)とのなす第1角度を求め、
前記第1角度と、前記撮像部(12)の特性および前記被写体(101)に応じて予め定められる第2角度との差を、前記第1の姿勢から前記第2の姿勢への移動角度として決定し、
前記対象領域(82)と前記撮像部(12)の光軸とのなす角度が90度に近づく方向に、前記対象領域(82)の法線(83)を含み、かつ前記基準面(103)に垂直な第2平面(84)に沿って前記第1の姿勢から前記移動角度だけ回転した姿勢を前記第2の姿勢として決定する、構成6に記載の視覚センサシステム(1)。
【0113】
(構成8)
前記移動制御部(50)は、前記2点のうち前記高さ情報が高い方の点である基準点を前記撮像部(12)の光軸が通るように、前記第2の位置を決定する、構成2から5のいずれかに記載の視覚センサシステム(1)。
【0114】
(構成9)
前記移動制御部(50)は、前記2点のうち前記高さ情報が低い方の点である基準点を前記撮像部(12)の光軸が通るように、前記第2の位置を決定する、構成2から5のいずれかに記載の視覚センサシステム(1)。
【0115】
(構成10)
前記移動制御部(50)は、前記2点の中点である基準点を前記撮像部(12)の光軸が通るように、前記第2の位置を決定する、構成2から5のいずれかに記載の視覚センサシステム(1)。
【0116】
(構成11)
前記移動制御部(50)は、前記対象領域内の基準点を前記撮像部(12)の光軸が通るように、前記第2の位置を決定する、構成6または7に記載の視覚センサシステム(1)。
【0117】
(構成12)
前記移動制御部(50)は、前記基準点と前記第1の位置との距離と、前記基準点と前記第2の位置との距離とが同一となるように、前記第2の位置を決定する、構成8から11のいずれかに記載の視覚センサシステム(1)。
【0118】
(構成13)
被写体(101)を撮像する撮像部(12)と、
前記撮像部(12)を指示された位置に指示された姿勢で配置する移動機構(20)と、
前記撮像部(12)により撮像された画像を用いて、前記被写体(101)の表面の三次元形状を計測する計測部(30)とを備えた視覚センサシステム(1)の制御方法であって、
前記三次元形状は、基準面(103)からの高さ情報によって示され、
前記撮像部(12)が第1の位置および第1の姿勢に配置されているときの画像を用いて前記計測部(30)により計測された前記被写体(101)の三次元形状である計測形状から、前記高さ情報が欠損している欠損領域(60)を抽出するステップと、
前記計測形状における前記欠損領域(60)の周囲の前記高さ情報に基づいて、前記被写体(101)を再度撮像すべき第2の位置および第2の姿勢を決定するステップとを備える、制御方法。
【0119】
(構成14)
被写体(101)を撮像する撮像部(12)と、
前記撮像部(12)を指示された位置に指示された姿勢で配置する移動機構(20)と、
前記撮像部(12)により撮像された画像を用いて、前記被写体(101)の表面の三次元形状を計測する計測部(30)とを備えた視覚センサシステム(1)をサポートするためのプログラム(507)であって、
前記三次元形状は、基準面(103)からの高さ情報によって示され、
コンピュータに、
前記撮像部(12)が第1の位置および第1の姿勢に配置されているときの画像を用いて前記計測部(30)により計測された前記被写体(101)の三次元形状である計測形状から、前記高さ情報が欠損している欠損領域(60)を抽出するステップと、
前記計測形状における前記欠損領域(60)の周囲の前記高さ情報に基づいて、前記被写体(101)を再度撮像すべき第2の位置および第2の姿勢を決定するステップとを実行させる、プログラム(507)。
【0120】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。