<第1の実施形態>
以下、本発明の第1の実施形態について、図面を参照して説明する。図1は、第1の実施形態に係る制御システム1の利用状況の一例を示す図である。制御システム1は、例えば、撮像部10と、投射部20と、ロボット30と、制御装置40とを具備する。撮像部10は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。以下では、説明を簡略化するため、撮像部10は、静止画像を撮像するものとする。なお、撮像部10は、静止画像を撮像することに代えて、動画像を撮像してもよい。
撮像部10は、例えばケーブルによって制御装置40と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。なお、撮像部10と制御装置40とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続されてもよい。撮像部10は、破線で囲まれた領域CAを撮像する。領域CAは、テーブル等の台上に予め設定された領域である。撮像部10は、領域CAを撮像可能な位置に設置される。撮像部10は、制御装置40から撮像の要求を取得し、その要求を取得したタイミングで領域CA内を撮像する。そして、撮像部10は、ユーザーにより物体OBJが領域CAの内側に設置されることにより、物体OBJを撮像する。そして、撮像部10は、撮像した撮像画像を、通信により制御装置40へ出力する。
投射部20は、例えば、投射画像を投射するための液晶ライトバルブや投射レンズ、液晶駆動部、光源として超高圧水銀ランプやメタルハライドランプ等を備えるプロジェクターである。投射部20は、例えばケーブルによって制御装置40と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、投射部20と制御装置40とは、Wi−Fi等の通信規格により行われる無線通信によって接続されてもよい。投射部20は、通信により制御装置40から各種画像を取得し、取得した各種画像を投射画像として点線で囲まれた領域PAに投射する。これらの投射画像についての詳細は後述する。図1において、投射部20は、領域PAが領域CAを内側に含むように設置されているが、領域PAと領域CAとの大きさは逆であってもよく、領域PAと領域CAとが部分的に重なり合っていてもよい。なお、物体OBJは、領域PAと領域CAとが重なり合った領域の内側に全体が含まれる程度の大きさである。
ロボット30は、例えば、6軸垂直多関節ロボットであり、支持台とアーム部と把持部との連携した動作よって、6軸の自由度の動作を行うことができる。なお、ロボット30は、5自由度以下で動作するものであってもよい。ロボット30は、把持部を備えている。ロボット30の把持部は、物体を把持又は挟持可能な爪部を備える。ロボット30は、例えばケーブルによって制御装置40と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、ロボット30と制御装置40とは、Wi−Fi等の通信規格により行われる無線通信によって接続されてもよい。ロボット30は、物体OBJの三次元位置及び姿勢に基づいた制御信号を制御装置40から取得し、取得した制御信号に基づいて、物体OBJに対して所定の作業を行う。所定の作業とは、例えば、ロボット30の把持部により物体OBJを把持し、把持された物体OBJを現在設置されている位置から、他の位置へと移動させることや、移動させた後に別の装置に組み付けを行うこと等の作業である。
制御装置40は、ロボット30が所定の作業を行うように制御する。より具体的には、まず、制御装置40は、撮像部10により撮像された物体OBJの撮像画像に基づいて、撮像部10と投射部20との間のキャリブレーション処理を行う。制御装置40は、このキャリブレーション処理によって、より精度の高い物体OBJの三次元位置及び姿勢を導出することができる。キャリブレーション処理についての詳細は後述する。そして、制御装置40による撮像部10と投射部20との間のキャリブレーション処理が終了した後、制御装置40は、撮像部10により撮像された物体OBJの撮像画像に基づいて、物体OBJの三次元位置及び姿勢を導出する。制御装置40は、導出された三次元位置及び姿勢に基づく制御信号を生成し、生成した制御信号をロボット30に出力することで、ロボット30を制御する。また、制御装置40は、自装置が備える後述する画像生成部52により生成された各種画像を投射部20に出力し、出力した各種画像を投射するように投射部20を制御する。また、制御装置40は、撮像画像を撮像するように撮像部10を制御する。
次に、図2を参照することで、制御装置40のハードウェア構成について説明する。図2は、制御装置40のハードウェア構成の一例を示す図である。制御装置40は、例えば、CPU(Central Processing Unit)41と、記憶部42と、入力受付部43と、通信部44とを備え、通信部44を介して他の撮像部10、投射部20、ロボット30と通信を行う。CPU41は、記憶部42に格納された各種プログラムを実行する。記憶部42は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)などを含み、制御装置40が処理する各種情報や画像、プログラムを格納する。なお、記憶部42は、制御装置40に内蔵されるものに代えて、外付け型の記憶装置でもよい。
入力受付部43は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部43は、表示部として機能してもよく、さらに、タッチパネルとして構成されてもよい。通信部44は、例えば、USB等のデジタル入出力ポートとともに、イーサネットポート等を含んで構成される。
次に、図3を参照することで、制御装置40の機能構成について説明する。図3は、制御装置40の機能構成の一例を示す図である。制御装置40は、例えば、記憶部42と、撮像制御部46と、画像取得部48と、投射制御部50と、初期処理部60と、三次元点群生成部70と、ロボット制御部80とを備える。これらの機能部のうち、撮像制御部46と、画像取得部48と、投射制御部50と、初期処理部60と、三次元点群生成部70と、ロボット制御部80との一部又は全部は、例えば、CPU41が、記憶部42に記憶された各種プログラムを実行することで実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。撮像制御部46は、初期処理部60又は三次元点群生成部70からの要求に従い、要求されたタイミングで撮像するように撮像部10を制御する。画像取得部48は、撮像部10により撮像された撮像画像を取得し、取得した撮像画像を記憶部42に記憶させる。
投射制御部50は、例えば、画像生成部52を備える。画像生成部52は、初期処理部60又は三次元点群生成部70からの要求に従い、記憶部42から投射画像を生成するための各種情報を読み込み、読み込んだ情報に基づいて投射画像を生成する。投射制御部50は、画像生成部52が生成した各種画像を投射画像として投射部20に出力し、出力した投射画像を投射するように投射部20を制御する。また、投射制御部50は、初期処理部60から好適な輝度出力を示す情報を取得し、取得した好適な輝度出力にまで投射部20の輝度出力を調整するように投射部20を制御する。好適な輝度出力についての詳細は後述するが、例えば、撮像部10の撮像素子の感度を十分に上回る輝度出力のことである。
投射部20の輝度出力が撮像部10の撮像素子の感度を上回っている場合、投射部20により投射された投射画像を撮像部10が撮像すると、撮像画像平面上に投射画像の全てが明確に撮像される。なお、投射制御部50は、画像生成部52が各種画像を生成することに代えて、各種画像を記憶部42から読み込み、読み込んだ各種画像を投射画像として投射部20に出力し、出力した投射画像を投射するように投射部20を制御するものとしてもよい。
ここで、図4を参照することにより、画像生成部52が生成する投射画像について説明する。図4は、画像生成部52が生成する投射画像の例を示す図である。画像生成部52は、赤色の画像RIMGを生成する。赤色画像RIMGは、後述するキャリブレーション処理を行う際に利用する画像である。画像生成部52は、さらに、投射部20の光学中心を通り投射画像平面上の縦方向に延伸する直線画像VIMG、投射部20の光学中心を通り投射画像平面上の横方向に延伸する直線画像HIMGを生成する。直線画像VIMG及び直線画像HIMGは、後述する位相接続処理を行う際に利用する画像である。
また、画像生成部52は、投射画像平面上で輝度が周期的に変化し、輝度の周期的変化を表す波が投射画像平面上の水平方向に進行している4枚の画像HFI−0〜HFI−3を生成する。画像HFI−0〜HFI−3は、輝度の周期的変化を表す波の位相が互いにπ/2だけ異なる画像である。画像HFI−0〜HFI−3中の明度が高い点が輝度値の高い点であり、明度の低い点が輝度値の低い点である。画像HFI−0〜HFI−3と同様に、画像生成部52は、投射画像平面上で輝度が周期的に変化し、輝度の周期的変化を表す波が投射画像平面上の垂直方向に進行している4枚の画像VFI−0〜VFI−3を生成する。画像VFI−0〜VFI−3は、輝度の周期的変化を表す波の位相が互いにπ/2だけ異なる画像である。図4に示したように、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3における輝度の周期的変化を表す波は、投射画像平面上の水平方向及び垂直方向に進行する平面波(正弦波)であるが、斜めに進行する平面波であってもよいし、球面波等であってもよい。なお、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3は、輝度が周期的に変化する画像に代えて、色彩が周期的に変化する画像であってもよい。画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3は、後述する位相接続処理を行う際に利用する画像であり、さらに、後述する物体OBJの三次元点群画像の生成処理にも利用する画像である。
図3に戻る。初期処理部60は、例えば、輝度出力決定部62と、位相算出部64と、座標対応付部66と、キャリブレーション処理部68とを備える。初期処理部60は、投射制御部50を制御することで、図4に示した各種投射画像を投射部20に順次投射させる。また、初期処理部60は、撮像制御部46を制御することで、投射部20により投射された投射画像を撮像部10に順次撮像させる。また、初期処理部60は、輝度出力決定部62により決定された好適な輝度出力を投射制御部50に出力し、投射部20の輝度出力を好適な輝度出力にまで調整する。
また、初期処理部60は、撮像制御部46を制御することで、撮像部10のホワイトバランスやゲイン、絞り、露光時間を調整する。ホワイトバランスの調整については後述する。初期処理部60は、ゲインや絞りを、好適な輝度出力で投射された画像の各点での色を再現可能な最低値に調整する。また、初期処理部60は、露光時間を、投射画像を撮像した撮像画像にフリッカー現象によるちらつきが生じないようにするため、投射部20のリフレッシュレートの逆数の3倍程度に調整する。投射部20のリフレッシュレートは、例えば、60[Hz]である。
また、初期処理部60は、キャリブレーション処理部68により導出された撮像部10と投射部20との間の位置関係を示す情報を、三次元点群生成部70に出力する。撮像部10と投射部20との間の位置関係を示す情報とは、例えば、撮像部10の撮像画像平面上における座標と、投射部20の投射画像平面上における座標との間の座標変換(アフィン変換)を実現するための並進及び回転変換行列で表される。
輝度出力決定部62は、投射部20の好適な輝度出力を決定する。好適な輝度出力を決定する処理についての詳細は後述する。位相算出部64は、撮像部10の撮像画像平面上の座標と、投射部20の投射画像平面上の座標とを対応付ける座標対応付処理に必要な位相を算出する。ここでいう位相とは、図4に示した画像HFI−0〜HFI−3平面上又は画像VFI−0〜VFI−3平面上の各点における輝度の周期的変化を表す波の位相である。また、座標対応付処理は、撮像部10の撮像画像平面上における座標と、投射部20の投射画像平面上における座標とを対応付ける処理である。位相を算出する処理及び座標対応付処理についての詳細は後述する。
座標対応付部66は、位相算出部64により算出された撮像画像平面上の各点における位相に基づいて、座標対応付処理を行う。キャリブレーション処理部68は、座標対応付部66により対応付けられた座標に基づいて、キャリブレーション処理を行う。キャリブレーション処理部68は、キャリブレーション処理により、撮像部10と投射部20との間の位置関係を示す情報を導出する。
三次元点群生成部70は、例えば、撮像時期決定部72を備える。三次元点群生成部70は、初期処理部60から、撮像部10と投射部20との間の位置関係を示す情報を取得する。また、三次元点群生成部70は、投射制御部50を制御することで、画像HFI−0〜HFI−3及び/又は画像VFI−0〜VFI−3を投射部20に順次投射させる。さらに、三次元点群生成部70は、撮像制御部46を制御することで、投射部20により投射された画像を、撮像時期決定部72により決定されたタイミングで撮像部10に撮像させる。そして、三次元点群生成部70は、記憶部42により記憶された撮像画像であって、物体OBJに画像HFI−0〜HFI−3及び/又は画像VFI−0〜VFI−3がそれぞれ投射された複数の撮像画像と、初期処理部60から取得した撮像部10と投射部20との間の位置関係を示す情報とに基づいて、例えば、位相シフト法等により物体OBJの三次元点群画像を生成する。三次元点群生成部70は、生成した三次元点群画像を、ロボット制御部80に出力する。ここで、三次元点群画像は、三次元点群情報の一例である。
撮像時期決定部72は、投射部20により投射された投射画像を、撮像部10が撮像するべきタイミングを決定し、決定したタイミングで三次元点群生成部70に撮像制御部46を制御させることで、撮像部10に投射画像を撮像させる。タイミングの決定処理についての詳細は後述する。
ロボット制御部80は、例えば、三次元位置姿勢導出部82を備える。ロボット制御部80は、三次元位置姿勢導出部82により導出された物体OBJの三次元位置及び姿勢に基づいて、物体OBJに対して所定の作業を行うようにロボット30を制御する。三次元位置姿勢導出部82は、三次元点群生成部70から取得した物体OBJの三次元点群画像に基づいて、物体OBJの三次元位置及び姿勢を導出する。
以下、図5を参照することにより、初期処理部60の各機能部が行う処理について説明する。図5は、初期処理部60により実行される処理の流れの一例を示すフローチャートである。まず、輝度出力決定部62は、投射部20の好適な輝度出力を決定する。そして、輝度出力決定部62は、決定した好適な輝度出力を投射制御部50に出力し、投射制御部50に投射部20の輝度出力を調整させる(ステップS100)。
ここで、好適な輝度出力を決定する処理について説明する。まず、輝度出力決定部62は、投射制御部50を制御することにより、投射部20に白色画像を投射させる。この際、輝度出力決定部62は、白色画像の輝度出力を1階調ずつ変化させ、変化させた度に撮像を行うように撮像制御部46を制御することで、階調が異なる白色画像を撮像部10に撮像させる。投射部20の輝度出力は、例えば、0から254までの255階調だけ変化させることが可能である。輝度出力決定部62は、各階調ごとに撮像された白色画像に基づいて、投射部20の輝度出力と、撮像部10により撮像された撮像画像平面上における輝度との関係を、RGB(Red Green Blue)ごとに導出する。図6は、投射部20の輝度出力と、撮像部10により撮像された撮像画像平面上における輝度との関係の一例を表すグラフである。
図6に示したように、撮像部10により撮像された撮像画像平面上における輝度は、投射部20の輝度出力を上昇させたとき、基準線RLまでは比較的に変化率が小さい。しかし、撮像部10により撮像された撮像画像平面上における輝度は、基準線RLを境にして、投射部20の輝度出力と近似的に正比例するようになる。輝度出力決定部62は、基準線RL(近似的な正比例の開始点)における投射部20の輝度出力を最低値として、最低値から最大値までの範囲内のいずれかの値を、好適な輝度出力として決定する。以下の説明では、この最低値を好適な輝度出力として決定するものとする。
図5に戻る。以下では、ステップS100で投射部20の輝度出力が好適な輝度出力に調整された後、ユーザーがキャリブレーションボードを領域PAと領域CAとが重なった領域内に設置したものとして説明する。キャリブレーションボードとは、例えば、赤色と青色とで形成されたグリッドパターンである。図7は、赤色と青色とで形成されたグリッドパターンの一例を示す図である。図7に示したように、グリッドパターンは、赤地RBGに青色のグリッド模様BGDが描かれている。ユーザーがキャリブレーションボードを領域PAと領域CAとが重なった領域内に設置した後、初期処理部60は、撮像制御部46を制御することで、撮像部10のホワイトバランス、ゲイン、絞り、露光時間(図5において、これらをパラメータと称する)を調整する(ステップS110)。
ここで、ゲイン、絞り、露光時間の調整については、前述した通りであるため、説明を省略する。そして、図8を参照することにより、ホワイトバランスの調整について説明する。図8は、キャリブレーションボードに白色光、赤色光をそれぞれ投射した場合の撮像画像の比較例を示す図である。図8の最左図は、キャリブレーションボードに白色光を投射した場合の撮像画像である。初期処理部60は、投射制御部50を制御することで、図7に示したキャリブレーションボードに対して、投射部20から白色光を投射させると、図8の最左図のような撮像画像GDBを撮像することができる。そして、初期処理部60は、図8の最左図を、グレースケールに変換する。この時、初期処理部60は、グレースケールに変換された画像に基づいて、青色のグリッドBPからの反射光と、赤色のグリッドRPからの反射光との輝度が同じになるように、撮像部10のホワイトバランスを撮像制御部46に調整させる。
この調整を行ったあとのグレースケールに変換されたキャリブレーションボードを撮像した画像が、図8の中図である。図8の中図に示すように、このグレースケールに変換されたキャリブレーションボードを撮像した画像は、撮像画像の全体が略均一の輝度となり、青色のグリッドBPと赤色のグリッドRPとを区別することが不可能になる。このようにすることで、制御装置40は、画像HFI−0〜HFI−3及び/又は画像VFI−0〜VFI−3をキャリブレーションボードに投射させた際、青色のグリッドBPと赤色のグリッドRPとの反射輝度の違いによる明暗が撮像画像上に生じないようにすることができる。言い換えると、制御装置40は、キャリブレーションボードが存在しないかのように、白色光を利用した処理を行うことができる。また、このキャリブレーションボードに、図4で示した赤色画像RIMGを投射した場合の撮像画像が、図8の最右図である。青色のグリッドBPと赤色のグリッドRPとの反射輝度は、白色光に対しては同じであるが、赤色光に対しては異なるため、図8の再右図のような撮像画像となる。
図5に戻る。ステップS110で初期処理部60が撮像部10のホワイトバランス、ゲイン、絞り、露光時間を調整した後、位相算出部64は、投射制御部50を制御することで、画像VIMG、画像HIMG、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3を、投射部20に順次投射させる。そして、位相算出部64は、撮像制御部46を制御することで、これらの画像を、撮像部10に順次撮像させる(ステップS120)。
次に、位相算出部64は、ステップS120で撮像された撮像画像を、記憶部42から読み込み、読み込んだ撮像画像に基づいて撮像画像平面上の各点における位相を算出する(ステップS130)。ここで、図9を参照することにより、撮像画像平面上の各点における位相を算出する処理についての詳細を説明する。図9は、投射画像と撮像画像と、それらの各点における位相との関係の一例を示す図である。図9に示した例では、初期処理部60が、領域PAに投射された画像HFI−0のうち、領域CAに投射された部分を撮像画像CAIとして撮像部10に撮像させる状況を示している。この時に撮像された撮像画像CAIは、記憶部42に記憶される。位相算出部64は、記憶部42に記憶された撮像画像CAIを読み込み、読み込んだ撮像画像CAI平面上の各点における輝度値を検出する。ここで、撮像画像平面上の各点における輝度値は、以下の式(1)で表される。
ここで、n=0、1、2、3である。n=0、1、2、3のそれぞれに対応したIn(x,y)は、画像HFI−0、1、2、3のそれぞれを撮像した撮像画像平面上の各点を表す座標(x,y)における輝度値を表している。それ故、I0(x,y)は、撮像画像CAI平面上の各点を表す座標(x,y)における輝度値を表している。A(x,y)は、各撮像画像平面上の輝度の変化を表す波の、座標(x,y)が表す点における振幅を表している。B(x,y)は、各撮像画像平面上の輝度の変化を表す波の、座標(x,y)が表す点における振幅がゼロのときの輝度値を表している。θ(x,y)は、撮像画像平面上の各点を表す座標(x,y)における位相を表している。式(1)で示したI0(x,y)〜I3(x,y)に対する4本の式を組み合わせることで、各撮像画像平面上の各点を表す座標(x,y)における位相θ(x,y)は、以下の式(2)のように表すことができる。
位相算出部64は、式(2)と、上述した位相算出部64が検出した各撮像画像平面上の各点を表す座標(x,y)における輝度値とに基づいて、各撮像画像平面上の各点を表す座標(x,y)における位相θ(x,y)を算出する。図5に戻る。ステップS130で位相算出部64が各撮像画像平面上の各点における位相θ(x,y)を算出した後、座標対応付部66は、位相算出部64が算出した位相θ(x,y)に基づいて、撮像画像平面上の座標と、投射画像平面上の座標とを対応付ける座標対応付処理を行う(ステップS140)。
ここで、再び図9を参照することにより、座標対応付部66による座標対応付処理について説明する。式(2)と、上述した位相算出部64が検出した各撮像画像平面上の各点を表す座標(x,y)における輝度値とに基づいて、位相算出部64が算出した位相θ(x,y)の取り得る範囲は、−π/2≦θ(x,y)≦π/2である。ところが、投射画像平面上及び撮像画像平面上における輝度の変化は、周期的に繰り返されているため、同位相線が複数存在する。図9に示した例では、投射画像平面上における同位相線SPL1、SPL2、SPL3上に存在する各点の位相は、すべて同じ値を取る。このため、座標対応付部66は、このままでは撮像画像CAI平面上の同位相線SPL3上に存在する点P(x1,y1)の位相θ(x1,y1)が、領域PA内に投射された画像HFI−0平面上の同位相線SPL1、SPL2、SPL3のいずれの同位相線上に位置する位相であるのかを判別することができない。
そこで、本実施形態における座標対応付部66は、投射画像及び撮像画像に共通する所定の位置を基準として、位相接続処理を行う。位相接続処理とは、基準となる所定の位置から位相がπ/2だけ変化するたびに、その点での位相にπ/2を加算又は減算することで、投射画像平面上及び撮像画像平面上における輝度の変化を表す波の同位相線が一対一対応させることを可能にする処理のことである。座標対応付部66は、基準となる所定の位置として、例えば、画像HFI−0〜HFI−3及びこれらを撮像した撮像画像に対して、画像VIMG平面上における縦方向に延伸した直線を利用する。また、座標対応付部66は、基準となる所定の位置として、例えば、画像VFI−0〜VFI−3に対して、画像HIMG平面上における横方向に延伸した直線を利用する。
図9に示した例では、投射画像が画像HFI−0であるため、座標対応付部66は、画像VIMG平面上における縦方向に延伸した直線を、基準となる所定の位置を表す直線VLとし、直線VLを基準として位相接続処理を行う。座標対応付部66は、直線VLが領域PA及び領域CAのいずれにも含まれているため、位相接続処理を行うことで、撮像画像平面上の点P(x1,y1)における位相θ(x1,y1)と、投射画像平面上の対応する同位相線SPL3上の各点の位相とを対応付けることができる。この対応付けによって、座標対応付部66は、撮像画像平面上の点P(x1,y1)に対応する投射画像平面上の点P’が、同位相線SPL3上のいずれかに存在することを確定させる。なお、基準となる所定の位置は、基準線VLのような直線に代えて、基準点や基準となる模様等であってもよいが、いずれの場合も必ず投射画像平面上及び撮像画像平面上の両方に含まれていなければならない。
座標対応付部66は、輝度の変化を表す波が投射画像平面上において縦方向に進行している画像VFI−0〜VFI−3について、画像HFI−0〜HFI−3に対して行った位相接続処理と同様の処理を行う。これらの処理によって、位相算出部64が算出した撮像画像平面上の点P(x1,y1)における位相θ(x1,y1)と同位相の、投射画像平面上における縦方向へ延伸する同位相線と、横方向へ延伸する同位相線とが得られるため、座標対応付部66は、縦方向へ延伸する同位相線と横方向へ延伸する同位相線とが交差した点P’ (x’1,y’1)を、撮像画像平面上の点P(x1,y1)と対応付けることができる。この対応付によって、座標対応付部66は、撮像画像平面上の点を表す座標と、投射画像平面上の点を表す座標とを、より正確に対応付けることができる。
なお、座標対応付部66は、撮像部10の撮像画像平面上の全画素数の方が、投射部20の投射画像平面上の全画素数よりも大きい場合、撮像画像平面上の点を表す座標と、投射画像平面上の点を表す座標とを、サブピクセル精度で対応付ける処理を行ってよい。座標対応付部66は、例えば、このサブピクセル精度で対応付ける処理を、投射画像平面上の座標間を分割し、撮像画像平面上の座標に対応する座標値を生成して補完することで行う。このように、撮像画像平面上の点を表す座標と、投射画像平面上の点を表す座標とを、サブピクセル精度で対応付けを行うことで、位相シフト法による物体OBJの三次元点群を生成する際、撮像部10の撮像解像度以上の点群数を実現することができる。
図5に戻る。ステップS140で座標対応付部66が、撮像画像平面上の点を表す座標と、投射画像平面上の点を表す座標とを対応付けた後、キャリブレーション処理部68は、図7で示したキャリブレーションボードに、図4で示した画像RIMGが投射され、投射されたキャリブレーションボードが撮像部10により撮像された撮像画像を、記憶部42から読み込む。そして、キャリブレーション処理部68は、読み込んだ撮像画像に基づいて、キャリブレーション画像を生成する(ステップS150)。キャリブレーション画像とは、撮像部10により撮像されたキャリブレーションボードの撮像画像X1を三次元モデル化したものである。
次に、キャリブレーション処理部68は、例えば、撮像部10が撮像画像X1と同じ撮像画像を撮像できる投射画像を、キャリブレーション画像に対してアフィン変換を行うことで生成する。そして、キャリブレーション処理部68は、この際のアフィン変換に用いた並進及び回転変換行列を、撮像部10と投射部20との間の位置関係を示す情報として導出する(ステップS160)。
以下、図10を参照することにより、三次元点群生成部70が行う三次元点群画像の生成処理について説明する。図10は、三次元点群生成部70により実行される三次元点群画像の生成処理の流れの一例を示すフローチャートである。以下では、初期処理部60によるキャリブレーション処理が終了した後、ユーザーが領域PAと領域CAとが重なった領域に物体OBJを設置したものとして説明する。まず、撮像時期決定部72は、図4に示した画像HFI−0〜HFI−3のうちいずれか一つ、及び/又は画像VFI−0〜VFI−3のうちの未選択の画像を1つ選択して記憶部42から読み込む(ステップS200)。以下では、撮像時期決定部72が、画像HFI−0〜HFI−3のうちの未選択の画像を1つ選択したものとして説明する。
次に、撮像時期決定部72は、ステップS200で未選択の画像があったか否かを判定する(ステップS210)。撮像時期決定部72は、未選択の画像があったと判定した場合(ステップS210−Yes)、投射制御部50を制御することで投射部20に、ステップS200で選択して読み込んだ画像を物体OBJへ投射させる(ステップS220)。次に、撮像時期決定部72は、ステップS200において選択された投射画像に関する前回のサブルーチン実行時に投射された投射画像が、今回のサブルーチン実行時に投射された投射画像に完全に切り替わったか否かを判断するため、撮像制御部46を制御することで撮像部10に、物体OBJが設置された領域CAを、切替判断用画像として撮像させる(ステップS230)。なお、切替判断用画像は、時系列画像の一例である。次に、撮像時期決定部72は、ステップS230で撮像した切替判断用画像を複数の領域に分割する。そして、撮像時期決定部72は、一部又は全部の分割された領域ごとに、分割された領域内の画素ごとの輝度又は色彩を検出する(ステップS240)。なお、分割された各領域は、重なっていてもよいし、隣接していてもよいし、隣接していなくてもよいが、領域内に輝度又は色彩の周期的変化の一部又は全部を含んでいなければならない。
ここで、図11を参照することで、切替判断用画像を複数の領域に分割する処理について説明する。図11は、切替判断用画像が複数の領域に分割された場合の領域例を示す図である。画像PICは、ステップS230で撮像部10により撮像された切替判断用画像の一例である。画像PICは、画像HFI−0から他の画像へ切り替わる途中に撮像されたため、画像PICの上段と下段とで異なる投射画像が撮像されたものとなっている。領域DAは、ステップS240で画像PICが複数に分割された領域のうちの1つである。図11に示したように、領域DAは、領域内に輝度又は色彩の周期的変化を含んでいる。撮像時期決定部72は、領域DAの各画素における輝度又は色彩を検出する。
図10に戻る。撮像時期決定部72は、ステップS230における撮像に関する前回のサブルーチン実行時に撮像された切替判断用画像が分割された複数の領域ごとの各画素における輝度又は色彩と、今回のサブルーチン実行時に撮像された切替判断用画像が分割された領域ごとの各画素における輝度又は色彩との差分を算出する(ステップS250)。ここで、図12及び図13を参照することで、前回のサブルーチン実行時における分割された領域ごとの各画素の輝度と、今回のサブルーチン実行時における分割された領域ごとの各画素の輝度との差分を算出する処理について説明する。図12は、ステップS200において投射された投射画像に関する前回のサブルーチン実行時に投射された投射画像、及び今回のサブルーチン実行時に投射された投射画像平面上の画素とその画素の輝度をプロットしたグラフの一例である。
実線W1は、例えば、前回のサブルーチン実行時に投射された画像HFI−0を分割した複数の領域のうちの1つの画素ごとの輝度値をプロットした正弦波状のグラフである。また、点線W2は、例えば、前回のサブルーチン実行時に投射された画像HFI−1を分割した複数の領域のうちの1つの画素ごとの輝度値をプロットした正弦波状のグラフである。画像HFI−0と画像HFI−1との輝度の周期的変化は、互いに位相がπ/2だけずれている。それを反映して、実線W1と点線W2とは、互いに位相がπ/2だけずれている。撮像時期決定部72は、画素ごとに実線W1と点線W2との輝度の差分DLを算出する。
撮像時期決定部72が算出した差分DLは、画素ごとにプロットされると、図13に示したグラフのようになる。図13は、撮像時期決定部72が算出した差分を画素ごとにプロットしたグラフの一例である。ここで、ステップS200において投射された投射画像に関する前回のサブルーチン実行時に投射された投射画像から、今回のサブルーチン実行時に投射された投射画像へと切り替わりが完了していた場合、図13中の画素の多くは、算出した差分が所定の閾値Z1を超過することになる。それ故、撮像時期決定部72は、差分が所定の閾値Z1を超過している画素の割合が、所定の閾値Z2を超えた場合、前回のサブルーチン実行時に投射された投射画像から、今回のサブルーチン実行時に投射された投射画像へと切り替わりが完了したと判断する。
図10に戻る。ステップS250で、差分を算出した後、撮像時期決定部72は、算出した差分が所定の閾値Z1を超えた画素の割合が、所定の閾値Z2を超過したか否かを判定する(ステップS260)。所定の閾値Z2を超過していないと判定した場合(ステップS260−No)、撮像時期決定部72は、ステップS230に戻り、再び切替判断用画像を撮像する。一方、所定の閾値Z2を超過していると判定した場合(ステップS260−Yes)、撮像時期決定部72は、撮像制御部46を制御することで、三次元点群生成部70が位相シフト法に用いるための処理用画像として、投射画像を撮像するように撮像部10を制御させる(ステップS270)。そして、撮像時期決定部72は、ステップS200に戻り、次の投射画像を選択する。なお、処理用画像は、処理対象画像の一例である。
一方、ステップS210で、未選択の画像がなかったと判定した場合(ステップS210−No)、三次元点群生成部70は、位相シフト法によって三次元点群画像を生成するために必要な画像である処理用画像に基づいて、三次元点群画像を生成する。以上で、三次元点群生成部70は、三次元点群画像の生成処理を終了する。なお、撮像時期決定部72は、分割された領域のうち、少なくとも1つの領域内の画素ごとの輝度を検出するとしてもよい。その場合、撮像時期決定部72は、投射部20が画像の上段から順次、投射画像を切り替えていくため、画像の右下付近の領域を、分割された領域として用いるものとする。
このように、第1の実施形態に係る制御装置40は、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3のそれぞれについて、基準オブジェクトである直線が撮像された画像VIMG、画像HIMG平面上の位置を基点として撮像画像上の各画素の位相を算出し、算出した画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3上の各画素の位相に基づいて、撮像部10の撮像画像平面上の位置を示す座標と、投射部20の投射画像平面上の位置を示す座標との対応付けを行うため、実環境下でも十分な精度で撮像部10と投射部20との間のキャリブレーションを行うことができる。
また、制御装置40は、投射部20により投射された投射光の輝度と、撮像部10により投射光が撮像された画像における投射光の輝度とに基づいて、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3、及び、画像VIMG及び画像HIMGを投射する投射部20の輝度出力を決定するため、撮像部10の撮影解像度の不足によるキャリブレーションの精度低下を防止することができる。
また、制御装置40は、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するためのキャリブレーション画像と、算出部により算出された画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3平面上の各画素の位相とに基づいて、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するキャリブレーション処理を行うため、ロボット等による作業対象となる物体の位置及び姿勢を導出するための三次元点群画像を、より高精度に生成することができる。
また、制御装置40は、赤色と青色のグリッドパターンのキャリブレーションボードが撮像された画像と、算出部により算出された画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3平面上の各画素の位相とに基づいて、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するキャリブレーション処理を行うため、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3の輝度又は色彩の変化が、グリッドパターンによって判別不可能になることを防止することができる。
また、制御装置40は、キャリブレーション処理部により導出された三次元位置関係を表す情報である並進及び回転変換行列と、撮像部10により撮像された物体OBJの画像とに基づいて、物体OBJの三次元点群画像を生成するため、ロボット等による作業対象となる物体OBJの三次元位置及び姿勢をより高精度で導出することができる。
また、制御装置40は、三次元点群画像に基づいて、物体OBJの三次元位置及び姿勢を導出し、導出した物体OBJの三次元位置及び姿勢に基づいて、ロボットを制御するため、対象となる物体OBJに対する作業を、より高精度に行うことができる。
また、ロボット30は、実環境下でも十分な精度で撮像部10と投射部20との間のキャリブレーションを行うため、対象となる物体OBJに対する作業を、より高精度に行うことができる。
また、制御装置40は、投射部20から投射された投射画像を、所定の画像処理に利用するための処理用画像として撮像するように撮像部10を制御し、処理用画像を撮像するよりも前に、時系列で投射画像が撮像された複数枚の切替判断用画像間の比較に基づき、三次元点群生成部70が撮像部10に処理用画像を撮像させるタイミングを決定するため、より低コストで、同期用の投射領域を必要とせずに、十分な精度の同期制御を実現することができる。
また、制御装置40は、処理用画像に基づいて、三次元点群画像を生成するため、より安定して三次元位置及び姿勢を算出することができる。
また、制御装置40は、切替判断用画像が分割された複数の領域のうち少なくとも1つの検出領域内の各画素における輝度又は色彩を検出し、検出領域内で検出された輝度又は色彩の切替判断用画像間での比較に基づいて、三次元点群生成部70が撮像部10に処理用画像を撮像させるタイミングを決定するため、より高速に処理用画像を撮像するタイミングを決定することができる。
また、制御装置40は、時間的に連続した切替判断用画像の検出領域間において、各画素における輝度又は色彩の差分を算出し、算出された差分に基づいて、三次元点群生成部70が撮像部10に処理用画像を撮像させるタイミングを決定するため、時間を用いた投射部20による投射と、撮像部10による撮像との間の同期に比べて、処理の遅延による同期の失敗を防止することができる。
また、制御装置40は、検出領域を構成する全画素数に対する、差分が所定の閾値Z1を超過した画素数の割合が、所定の閾値Z2を超過していると判定したタイミングを、三次元点群生成部70が撮像部10に処理用画像を撮像させるタイミングとして決定するため、誤判定による撮像タイミングの遅延を防止することができる。
また、制御装置40は、三次元位置及び姿勢を導出し、導出した三次元位置及び姿勢に基づいて、ロボットを制御するため、より低コストで実現でき、かつ、同期用の投射領域を必要とせずに、より精度の高いロボット制御を実現することができる。
また、ロボット30は、三次元位置及び姿勢を導出し、導出した三次元位置及び姿勢に基づいて、アクチュエーターを制御するため、より低コストで十分な精度の同期制御に基づいた所定の作業を行うことができる。
<第2の実施形態>
以下、本発明の第2の実施形態について、図面を参照して説明する。第2の実施形態に係る制御装置40は、第1の実施形態に係る制御装置40が有する撮像時期決定部72が省略されたものである。構成については、図1、2、3を援用し、同じ機能部に対して同一の符号を付して説明する。
図14は、第2の実施形態における制御システム1の機能構成の一例を示す図である。制御装置40は、例えば、記憶部42と、撮像制御部46と、画像取得部48と、投射制御部50と、初期処理部60と、三次元点群生成部70aと、ロボット制御部80とを備える。三次元点群生成部70aは、初期処理部60から、撮像部10と投射部20との間の位置関係を示す情報を取得する。三次元点群生成部70aは、投射制御部50を制御することで、画像HFI−0〜HFI−3及び/又は画像VFI−0〜VFI−3を順次、投射部20に投射させる。また、三次元点群生成部70aは、撮像制御部46を制御することで、投射部20により投射された画像を、撮像部10に順次撮像させる。そして、三次元点群生成部70は、記憶部42により記憶された撮像画像であって、物体OBJに画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3がそれぞれ投射された複数の撮像画像と、初期処理部60から取得した撮像部10と投射部20との間の位置関係を示す情報とに基づいて、例えば、位相シフト法により物体OBJの三次元点群画像を生成する。三次元点群生成部70は、生成した三次元点群画像を、ロボット制御部80に出力する。
このように、第2の実施形態に係る制御装置40は、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3のそれぞれについて、基準オブジェクトである直線が撮像された画像VIMG、画像HIMG平面上の位置を基点として撮像画像上の各画素の位相を算出し、算出した画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3上の各画素の位相に基づいて、撮像部10の撮像画像平面上の位置を示す座標と、投射部20の投射画像平面上の位置を示す座標との対応付けを行うため、実環境下でも十分な精度で撮像部10と投射部20との間のキャリブレーションを行うことができる。
また、制御装置40は、投射部20により投射された投射光の輝度と、撮像部10により投射光が撮像された画像における投射光の輝度とに基づいて、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3、及び、画像VIMG及び画像HIMGを投射する投射部20の輝度出力を決定するため、撮像部10の撮影解像度の不足によるキャリブレーションの精度低下を防止することができる。
また、制御装置40は、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するためのキャリブレーション画像と、算出部により算出された画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3平面上の各画素の位相とに基づいて、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するキャリブレーション処理を行うため、ロボット等による作業対象となる物体の位置及び姿勢を導出するための三次元点群画像を、より高精度に生成することができる。
また、制御装置40は、赤色と青色のグリッドパターンのキャリブレーションボードが撮像された画像と、算出部により算出された画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3平面上の各画素の位相とに基づいて、投射部20と撮像部10との間の位置関係を表す情報である並進及び回転変換行列を導出するキャリブレーション処理を行うため、画像HFI−0〜HFI−3及び画像VFI−0〜VFI−3の輝度又は色彩の変化が、グリッドパターンによって判別不可能になることを防止することができる。
また、制御装置40は、キャリブレーション処理部により導出された三次元位置関係を表す情報である並進及び回転変換行列と、撮像部10により撮像された物体OBJの画像とに基づいて、物体OBJの三次元点群画像を生成するため、ロボット等による作業対象となる物体OBJの三次元位置及び姿勢をより高精度で導出することができる。
また、制御装置40は、三次元点群画像に基づいて、物体OBJの三次元位置及び姿勢を導出し、導出した物体OBJの三次元位置及び姿勢に基づいて、ロボットを制御するため、対象となる物体OBJに対する作業を、より高精度に行うことができる。
また、ロボット30は、実環境下でも十分な精度で撮像部10と投射部20との間のキャリブレーションを行うため、対象となる物体OBJに対する作業を、より高精度に行うことができる。