(57)【要約】【課題】対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる位置姿勢算出装置を提供すること。【解決手段】少なくとも１台の撮像部と、少なくとも１台の投射部と、前記投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、前記撮像部により前記領域が撮像された２以上の撮像画像に基づいて前記対象物の位置及び姿勢を算出する制御部と、を備える位置姿勢算出装置。【選択図】図３
2017219365.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台の撮像部と、
少なくとも１台の投射部と、
前記投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、前記撮像部により前記領域が撮像された２以上の撮像画像に基づいて前記対象物の位置及び姿勢を算出する制御部と、
を備える位置姿勢算出装置。
【請求項２】
前記制御部は、
前記投射部により前記領域に前記ランダムドットパターンのそれぞれを投射する毎に前記撮像部により前記領域が撮像された前記撮像画像に基づいて前記対象物の位置及び姿勢を算出する、
請求項１に記載の位置姿勢算出装置。
【請求項３】
前記制御部は、前記撮像画像に基づいて前記対象物の三次元形状を表す三次元形状情報を生成し、生成した前記三次元形状情報に基づいて前記対象物の位置及び姿勢を算出する、
請求項１又は２に記載の位置姿勢算出装置。
【請求項４】
前記制御部は、前記撮像画像と、前記ランダムドットパターンとに基づいて、記憶された情報であって前記撮像画像の各画素の画素値と前記ランダムドットパターンの各画素の画素値とを対応付ける第１対応情報を更新し、更新した前記第１対応情報に基づいて前記三次元形状情報を生成する、
請求項３に記載の位置姿勢算出装置。
【請求項５】
前記第１対応情報は、前記撮像画像の各画素の画素値と前記ランダムドットパターンの各画素の画素値とを対応付ける行列である、
請求項４に記載の位置姿勢算出装置。
【請求項６】
前記行列は、前記撮像画像の各画素の画素値に対する前記ランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する、
請求項５に記載の位置姿勢算出装置。
【請求項７】
前記制御部は、前記投射部により今回前記領域に投射した前記ランダムドットパターンと、前回更新した前記第１対応情報と、当該ランダムドットパターンが投射された前記領域が前記撮像部により撮像された前記撮像画像とに基づいて、当該第１対応情報を更新する、
請求項４から６のうちいずれか一項に記載の位置姿勢算出装置。
【請求項８】
前記制御部は、前記投射部により今回前記領域に投射した前記ランダムドットパターンと、今回更新した前記第１対応情報と、当該ランダムドットパターンが投射された前記領域が前記撮像部により撮像された前記撮像画像とに基づいて、当該第１対応情報を更新するか否かを判定する、
請求項７に記載の位置姿勢算出装置。
【請求項９】
前記制御部は、生成した前記第１対応情報に基づいて、前記撮像画像の各画素と、前記ランダムドットパターンの各画素とを対応付ける第２対応情報を生成し、生成した前記第２対応情報と三角法に基づいて前記三次元形状情報を生成する、
請求項４から８のうちいずれか一項に記載の位置姿勢算出装置。
【請求項１０】
前記ランダムドットパターンは、
所定形状の画素の塊であるドットが複数規則的に配置された投射画像であり、前記ドット毎にランダムな画素値が割り当てられた前記投射画像である、
請求項１から９のうちいずれか一項に記載の位置姿勢算出装置。
【請求項１１】
少なくとも１台の撮像部と、
少なくとも１台の投射部と、
前記投射部により対象物を含む領域に２以上の互いに異なる投射画像のそれぞれを投射する毎に前記撮像部により前記領域が撮像された２以上の撮像画像に基づいて、記憶された情報であって前記撮像画像の各画素の画素値と前記投射画像の各画素の画素値とを対応付ける対応情報を更新し、更新した前記対応情報に基づいて前記対象物の三次元形状を表す三次元形状情報を生成する生成部と、
前記生成部が生成した前記三次元形状情報に基づいて前記対象物の位置及び姿勢を算出する算出部と、
を備える位置姿勢算出装置。
【請求項１２】
請求項１から１１のうちいずれか一項に記載の位置姿勢算出装置が算出した前記対象物の位置及び姿勢に基づいてロボットに所定の作業を行わせる、
ロボット制御装置。
【請求項１３】
請求項１２に記載のロボット制御装置に制御される、
ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、位置姿勢算出装置、ロボット制御装置、及びロボットに関する。
【背景技術】
【０００２】
対象物の三次元形状を表す三次元形状情報を生成し、生成した三次元形状情報に基づいて対象物に対する作業をロボットに行わせる技術の研究や開発が行われている。
【０００３】
これに関し、パターン投光手段によりパターン光を計測対象物に投光し、パターン光が投光された計測対象物を複数の撮像手段によりそれぞれ異なる方向から撮像し、パターン投光手段とそれぞれの撮像手段との間の校正を校正手段により行い、それぞれの撮像手段により撮像された画像に基づいて、それぞれの三次元点群を三次元点群計測手段により計測し、三次元点群計測手段により計測されたそれぞれの三次元点群を校正手段により得られた校正結果に基づいて所定の座標系に射影し、それぞれの信頼度を比較することによりそれぞれの三次元点群の計測結果を統合する三次元計測装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２１８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような三次元計測装置では、対象物が光沢を有する物体や半透明な物体である場合、対象物の光学特性によって三次元点群の計測結果の精度を低下させてしまう場合があった。当該計測結果の精度が低下した場合、当該計測結果に基づいて算出される対象物の位置及び姿勢の精度も低下してしまう可能性が高い。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、少なくとも１台の撮像部と、少なくとも１台の投射部と、前記投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、前記撮像部により前記領域が撮像された２以上の撮像画像に基づいて前記対象物の位置及び姿勢を算出する制御部と、を備える位置姿勢算出装置である。
この構成により、位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、撮像部により当該領域が撮像された２以上の撮像画像に基づいて対象物の位置及び姿勢を算出する。これにより、位置姿勢算出装置は、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【０００７】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、前記投射部により前記領域に前記ランダムドットパターンのそれぞれを投射する毎に前記撮像部により前記領域が撮像された前記撮像画像に基づいて前記対象物の位置及び姿勢を算出する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射する毎に撮像部により当該領域が撮像された撮像画像に基づいて対象物の位置及び姿勢を算出する。これにより、位置姿勢算出装置は、投射部によりランダムドットパターンのそれぞれを投射する毎に撮像部により撮像された撮像画像に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【０００８】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、前記撮像画像に基づいて前記対象物の三次元形状を表す三次元形状情報を生成し、生成した前記三次元形状情報に基づいて前記対象物の位置及び姿勢を算出する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像に基づいて対象物の三次元形状を表す三次元形状情報を生成し、生成した三次元形状情報に基づいて対象物の位置及び姿勢を算出する。これにより、位置姿勢算出装置は、生成した三次元形状情報に基づいて、対象物の位置及び姿勢を更に高い精度で算出することができる。
【０００９】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、前記撮像画像と、前記ランダムドットパターンとに基づいて、記憶された情報であって前記撮像画像の各画素の画素値と前記ランダムドットパターンの各画素の画素値とを対応付ける第１対応情報を更新し、更新した前記第１対応情報に基づいて前記三次元形状情報を生成する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部が当該領域に投射したランダムドットパターンとに基づいて、記憶された情報であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値とを対応付ける第１対応情報を更新し、更新した第１対応情報に基づいて三次元形状情報を生成する。これにより、位置姿勢算出装置は、更新した第１対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１０】
また、本発明の他の態様は、位置姿勢算出装置において、前記第１対応情報は、前記撮像画像の各画素の画素値と前記ランダムドットパターンの各画素の画素値とを対応付ける行列である、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部により当該領域に投射されたランダムドットパターンとに基づいて、記憶された行列であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値とを対応付ける行列を更新し、更新した当該行列に基づいて三次元形状情報を生成する。これにより、位置姿勢算出装置は、更新した行列であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値とを対応付ける行列に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１１】
また、本発明の他の態様は、位置姿勢算出装置において、前記行列は、前記撮像画像の各画素の画素値に対する前記ランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部により当該領域に投射されたランダムドットパターンとに基づいて、記憶された行列であって撮像画像の各画素の画素値に対するランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する行列を更新し、更新した当該行列に基づいて三次元形状情報を生成する。これにより、位置姿勢算出装置は、撮像画像の各画素の画素値に対するランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する行列に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１２】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、前記投射部により今回前記領域に投射した前記ランダムドットパターンと、前回更新した前記第１対応情報と、当該ランダムドットパターンが投射された前記領域が前記撮像部により撮像された前記撮像画像とに基づいて、当該第１対応情報を更新する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、投射部により今回対象物を含む領域に投射したランダムドットパターンと、前回更新した第１対応情報と、当該ランダムドットパターンが投射された対象物を含む領域が撮像部により撮像された撮像画像とに基づいて、当該第１対応情報を更新する。これにより、位置姿勢算出装置は、更新した第１対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１３】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、前記投射部により今回前記領域に投射した前記ランダムドットパターンと、今回更新した前記第１対応情報と、当該ランダムドットパターンが投射された前記領域が前記撮像部により撮像された前記撮像画像とに基づいて、当該第１対応情報を更新するか否かを判定する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、投射部により今回対象物を含む領域に投射したランダムドットパターンと、今回更新した第１対応情報と、当該ランダムドットパターンが投射された対象物を含む領域が撮像部により撮像された撮像画像とに基づいて、当該第１対応情報を更新するか否かを判定する。これにより、位置姿勢算出装置は、第１対応情報を更新するか否かの判定結果に基づいて、繰り返し第１対応情報を更新することができる。
【００１４】
また、本発明の他の態様は、位置姿勢算出装置において、前記制御部は、生成した前記第１対応情報に基づいて、前記撮像画像の各画素と、前記ランダムドットパターンの各画素とを対応付ける第２対応情報を生成し、生成した前記第２対応情報と三角法に基づいて前記三次元形状情報を生成する、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、生成した第１対応情報に基づいて、撮像画像の各画素と、ランダムドットパターンの各画素とを対応付ける第２対応情報を生成し、生成した第２対応情報と三角法に基づいて三次元形状情報を生成する。これにより、位置姿勢算出装置は、第１対応情報に基づいて算出された第２対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１５】
また、本発明の他の態様は、位置姿勢算出装置において、前記ランダムドットパターンは、所定形状の画素の塊であるドットが複数規則的に配置された投射画像であり、前記ドット毎にランダムな画素値が割り当てられた前記投射画像である、構成が用いられてもよい。
この構成により、位置姿勢算出装置は、２以上の互いに異なる投射画像であって、所定形状の画素の塊であるドットが複数規則的に配置され、ドット毎にランダムな画素値が割り当てられた投射画像のそれぞれが投射部により対象物を含む領域に投射される毎に撮像部により当該領域が撮像された２以上の撮像画像に基づいて対象物の三次元形状を表す三次元形状情報を生成する。これにより、位置姿勢算出装置は、所定形状の画素の塊であるドットが複数規則的に配置された投射画像であって、ドット毎にランダムな画素値が割り当てられた投射画像が対象物に投射されることにより、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１６】
また、本発明の他の態様は、少なくとも１台の撮像部と、少なくとも１台の投射部と、前記投射部により対象物を含む領域に２以上の互いに異なる投射画像のそれぞれを投射する毎に前記撮像部により前記領域が撮像された２以上の撮像画像に基づいて、記憶された情報であって前記撮像画像の各画素の画素値と前記投射画像の各画素の画素値とを対応付ける対応情報を更新し、更新した前記対応情報に基づいて前記対象物の三次元形状を表す情報を生成する制御部と、を備える位置姿勢算出装置である。
この構成により、位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なる投射画像のそれぞれを投射する毎に撮像部により当該領域が撮像された２以上の撮像画像に基づいて、記憶された情報であって撮像画像の各画素の画素値と投射画像の各画素の画素値とを対応付ける対応情報を更新し、更新した対応情報に基づいて対象物の三次元形状を表す情報を生成する。これにより、位置姿勢算出装置は、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００１７】
また、本発明の他の態様は、上記に記載の位置姿勢算出装置が生成した前記三次元形状情報に基づいて前記対象物の位置及び姿勢を算出し、算出した当該位置及び姿勢に基づいてロボットに所定の作業を行わせる、ロボット制御装置である。
この構成により、ロボット制御装置は、上記に記載の位置姿勢算出装置が生成した三次元形状情報に基づいて対象物の位置及び姿勢を算出し、算出した当該位置及び姿勢に基づいてロボットに所定の作業を行わせる。これにより、ロボット制御装置は、高い精度で算出された対象物の位置及び姿勢に基づいて、ロボットに精度の高い作業を行わせることができる。
【００１８】
また、本発明の他の態様は、上記に記載のロボット制御装置に制御される、ロボットである。
この構成により、ロボットは、上記に記載の位置姿勢算出装置が生成した三次元形状情報に基づいて算出された対象物の位置及び姿勢に基づいて所定の作業を行う。これにより、ロボットは、高い精度で算出された対象物の位置及び姿勢に基づいて、精度の高い作業を行うことができる。
【００１９】
以上により、位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、撮像部により当該領域が撮像された２以上の撮像画像に基づいて対象物の位置及び姿勢を算出する。これにより、位置姿勢算出装置は、対象物の位置及び姿勢を対象物の光学特性に依らずに高い精度で算出することができる。
また、ロボット制御装置は、上記に記載の位置姿勢算出装置が生成した三次元形状情報に基づいて対象物の位置及び姿勢を算出し、算出した当該位置及び姿勢に基づいてロボットに所定の作業を行わせる。これにより、ロボット制御装置は、高い精度で算出された対象物の位置及び姿勢に基づいて、ロボットに精度の高い作業を行わせることができる。
また、ロボットは、上記に記載の位置姿勢算出装置が生成した三次元形状情報に基づいて算出された対象物の位置及び姿勢に基づいて所定の作業を行う。これにより、ロボットは、高い精度で算出された対象物の位置及び姿勢に基づいて、精度の高い作業を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】ロボット２０に所定の作業を行わせる際にロボット制御装置３０が行う処理の流れの一例を示すフローチャートである。
【図５】投射制御部４０が生成する投射画像の一例を示す図である。
【図６】第１対応情報算出部４３による第１ベクトル及び第２ベクトルの生成処理を説明するための図である。
【図７】位置姿勢算出装置５０とロボット制御装置３０の機能構成の一例を示す図である。
【発明を実施するための形態】
【００２１】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。
【００２２】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、投射部５と、撮像部１０と、ロボット２０と、ロボット制御装置３０を備える。
【００２３】
投射部５は、例えば、投射画像を投射するための液晶ライトバルブや投射レンズ、液晶駆動部、光源として超高圧水銀ランプやメタルハライドランプ等を備えるプロジェクターである。投射部５は、図１に示した作業台ＴＢの上面に載置された対象物Ｏを含む範囲を投射領域Ｒ１として投射可能な位置に設置される。
【００２４】
投射部５は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。なお、投射部５は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２５】
作業台ＴＢは、例えば、テーブル等の台である。なお、作業台ＴＢは、テーブルに代えて、対象物Ｏを載置することが可能な台であれば、他の台であってもよい。
【００２６】
対象物Ｏは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。なお、対象物Ｏは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。図１に示した例では、対象物Ｏは、立方体形状の物体として表している。なお、対象物Ｏの形状は、立方体形状に代えて、他の形状であってもよい。
【００２７】
また、対象物Ｏは、例えば、投射した光の意図しない反射や透過を発生させる光学特性を有する物体である。以下では、一例として、対象物Ｏが、光が投射される表面の少なくとも一部に光沢を有する物体である場合について説明する。なお、対象物Ｏは、光沢を有する物体に代えて、半透明な物体であってもよく、当該光学特性を有さない物体、すなわち、光が投射される表面の少なくとも一部に光沢を有さない物体であってもよく、不透明な物体であってもよい。
【００２８】
なお、以下では、一例として、ロボットシステム１が１台の投射部５を備える場合について説明するが、これに代えて、ロボットシステム１が２台以上の投射部５を備える構成であってもよい。すなわち、ロボットシステム１は、少なくとも１台の投射部５を備える。
【００２９】
撮像部１０は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えた単眼のカメラである。なお、撮像部１０は、単眼のカメラに代えて、ステレオカメラ等の複眼のカメラであってもよい。撮像部１０は、作業台ＴＢの上面に載置された対象物Ｏを含む範囲を撮像領域Ｒ２として撮像可能な位置に設置される。図１に示した例では、撮像領域Ｒ２は、投射領域Ｒ１の内側に含まれる。なお、撮像領域Ｒ２は、投射領域Ｒ１と同じ範囲であってもよく、投射領域Ｒ１を内側に含む範囲であってもよく、投射領域Ｒ１と部分的に重なる範囲であってもよい。撮像領域Ｒ２は、対象物を含む領域の一例である。
【００３０】
撮像部１０は、ケーブルによってロボット制御装置３０と通信可能に接続されている。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、撮像部１０は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３１】
なお、以下では、一例として、ロボットシステム１が１台の撮像部１０を備える場合について説明するが、これに代えて、ロボットシステム１が２台以上の撮像部１０を備える構成であってもよい。すなわち、ロボットシステム１は、少なくとも１台の撮像部１０を備える。
【００３２】
ロボット２０は、アームＡと、アームＡを支持する支持台Ｂを備える単腕ロボットである。単腕ロボットは、この一例におけるアームＡのような１本のアーム（腕）を備えるロボットである。なお、ロボット２０は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、２本以上のアーム（例えば、２本以上のアームＡ）を備えるロボットである。なお、複腕ロボットのうち、２本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット２０は、２本のアームを備える双腕ロボットであってもよく、３本以上のアーム（例えば、３本以上のアームＡ）を備える複腕ロボットであってもよい。また、ロボット２０は、スカラロボットや、円筒型ロボット等の他のロボットであってもよい。
【００３３】
アームＡは、エンドエフェクターＥと、マニピュレーターＭを備える。
エンドエフェクターＥは、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、エンドエフェクターＥは、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
【００３４】
エンドエフェクターＥは、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、エンドエフェクターＥは、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、エンドエフェクターＥは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３５】
マニピュレーターＭは、６つの関節を備える。また、当該６つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターＭを備えるアームＡは、６軸垂直多関節型のアームである。アームＡは、支持台Ｂと、エンドエフェクターＥと、マニピュレーターＭと、マニピュレーターＭが備える６つの関節それぞれのアクチュエーターとによる連携した動作によって６軸の自由度の動作を行う。なお、アームＡは、５軸以下の自由度で動作する構成であってもよく、７軸以上の自由度で動作する構成であってもよい。
【００３６】
マニピュレーターＭが備える６つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、マニピュレーターＭを動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、マニピュレーターＭが備える６つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３７】
ロボット制御装置３０は、この一例において、ロボットを制御する（動作させる）コントローラーである。ロボット制御装置３０は、予め入力された動作プログラムに基づいて制御信号を生成する。ロボット制御装置３０は、生成した制御信号をロボット２０に送信し、ロボット２０に所定の作業を行わせる。以下では、説明の便宜上、ロボット制御装置３０による当該制御信号の生成及び送信についての説明を省略し、ロボット制御装置３０がロボット２０に行わせる動作、及びロボット２０を動作させる際にロボット制御装置３０が行う処理について説明する。
【００３８】
所定の作業は、この一例において、ロボット２０がアームＡを動作させ、作業台ＴＢの上面に載置された対象物Ｏを把持し、把持した対象物Ｏを図示しない給材領域に載置する作業である。なお、所定の作業は、これに代えて、他の作業であってもよい。
【００３９】
＜ロボットに所定の作業を行わせる際にロボット制御装置が行う処理の概要＞
以下、ロボット２０に所定の作業を行わせる際にロボット制御装置３０が行う処理の概要について説明する。前述したように、この一例における対象物Ｏは、投射した光の意図しない反射や透過を発生させる光学特性を有する。この場合、投射部５により対象物Ｏに投射された投射画像が撮像部１０により撮像された撮像画像には、当該反射による白飛び（撮像画像上における意図しない輝度の増大）や、当該透過による黒潰れ（撮像画像上における意図しない輝度の減少）が発生することがある。その結果、ロボット制御装置３０と異なるロボット制御装置Ｘ３０では、撮像部１０により撮像領域Ｒ２が撮像された撮像画像に基づいて対象物Ｏの位置及び姿勢を算出した場合、算出した当該位置及び姿勢の精度が当該光学特性によって低下してしまう場合がある。
【００４０】
そこで、この一例におけるロボット制御装置３０は、投射部５により対象物Ｏを含む投射領域Ｒ１に２以上の互いに異なる投射画像のそれぞれを投射し、撮像部１０により撮像領域Ｒ２が撮像された２以上の撮像画像に基づいて対象物Ｏの位置及び姿勢を算出する。より具体的には、ロボット制御装置３０は、投射部５により対象物Ｏを含む投射領域Ｒ１に２以上の互いに異なる投射画像のそれぞれを投射する毎に撮像部１０により撮像領域Ｒ２が撮像された２以上の撮像画像に基づいて、記憶された情報であって撮像画像の各画素の画素値と投射画像の各画素の画素値とを対応付ける対応情報である第１対応情報を更新し、更新した第１対応情報に基づいて対象物Ｏの三次元形状を表す三次元形状情報を生成し、生成した三次元形状情報に基づいて対象物Ｏの位置及び姿勢を算出する。これにより、ロボット制御装置３０は、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００４１】
以下では、ロボット２０に所定の作業を行わせる際にロボット制御装置３０が行う処理について詳しく説明する。また、以下では、一例として、対象物Ｏの三次元形状情報が、対象物Ｏの表面の三次元形状を表す点群である三次元点群である場合について説明する。三次元点群を構成する各点は、ロボット座標系ＲＣやワールド座標系等の三次元座標系における三次元位置（座標）を表す。なお、対象物Ｏの三次元形状情報は、対象物Ｏの三次元点群に代えて、対象物Ｏの表面の三次元形状を表す他の情報であってもよい。
【００４２】
＜ロボット制御装置のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。
【００４３】
ロボット制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。また、ロボット制御装置３０は、通信部３４を介して投射部５、撮像部１０、ロボット２０のそれぞれと通信を行う。
【００４４】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報や動作プログラムを含む各種のプログラム、投射画像、撮像画像等を格納する。
【００４５】
入力受付部３３は、例えば、表示部３５と一体に構成されたタッチパネルである。なお、入力受付部３３は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００４６】
＜ロボット制御装置の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。
【００４７】
ロボット制御装置３０は、記憶部３２と、制御部３６を備える。
【００４８】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、投射制御部４０と、撮像制御部４１と、画像取得部４２と、生成部４９と、位置姿勢算出部４７と、ロボット制御部４８を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００４９】
投射制御部４０は、投射画像を生成する。投射制御部４０は、生成した投射画像を投射部５により投射領域Ｒ１に投射する。なお、投射制御部４０は、投射画像を生成する構成に代えて、記憶部３２に予め記憶された投射画像を記憶部３２から読み出す構成であってもよい。この場合、投射制御部４０は、記憶部３２から読み出した投射画像を投射部５により投射領域Ｒ１に投射する。
撮像制御部４１は、撮像部１０に撮像領域Ｒ２を撮像させる。
画像取得部４２は、撮像部１０が撮像した撮像画像を撮像部１０から取得する。
【００５０】
生成部４９は、第１対応情報算出部４３と、第２対応情報算出部４４と、判定部４５と、三次元点群生成部４６を備える。
【００５１】
第１対応情報算出部４３は、記憶部３２に予め記憶された第１対応情報と、画像取得部４２が取得した撮像画像とに基づいて、当該第１対応情報を更新する。第１対応情報は、前述した通り、撮像部１０に撮像された撮像画像の各画素の画素値と、投射部５に投射された投射画像の各画素の画素値とを対応付ける対応情報のことである。ある画素の画素値は、例えば、当該画素の輝度値、明度値、彩度値、色相値等の当該画素に対応付けられた値である。以下では、一例として、ある画素の画素値が、当該画素の輝度値である場合について説明する。また、以下では、一例として、第１対応情報が、当該撮像画像の各画素の輝度値と、当該投射画像の各画素の輝度値とを対応付ける行列である光輸送行列である場合について説明する。
【００５２】
光輸送行列は、撮像画像の各画素の輝度値に対する投射画像の各画素の輝度値からの寄与を表す重みを成分として有する行列である。当該撮像画像は、撮像部１０により撮像された撮像画像である。また、当該投射画像は、投射部５により投射された投射画像である。すなわち、この一例における第１対応情報算出部４３は、記憶部３２に予め記憶された光輸送行列と、画像取得部４２が取得した撮像画像とに基づいて、当該光輸送行列の各成分を算出する。そして、第１対応情報算出部４３は、算出した各成分を有する光輸送行列を記憶部３２に記憶することにより、記憶部３２に予め記憶された光輸送行列を更新する（新たに記憶し直す）。
【００５３】
なお、第１対応情報は、光輸送行列に代えて、撮像部１０により撮像された撮像画像の各画素の輝度値と、投射部５により投射された投射画像の各画素の輝度値とが対応付けられた情報を格納するテーブル等の当該撮像画像の各画素の輝度値と、当該投射画像の各画素の輝度値とを対応付ける他の情報であってもよい。
【００５４】
第２対応情報算出部４４は、第１対応情報算出部４３が更新した（算出した）第１対応情報（この一例において、光輸送行列）に基づいて、撮像部１０に撮像された撮像画像の各画素と、投射部５に投射された投射画像の各画素とを対応付ける第２対応情報を算出する。
判定部４５は、記憶部３２に記憶された第１対応情報（この一例において、光輸送行列）に基づいて、当該第１対応情報を更新するか否かを判定するための評価値を算出する。判定部４５は、算出した評価値に基づいて当該第１対応情報を更新するか否かを判定する。
三次元点群生成部４６は、第２対応情報算出部４４が算出した第２対応情報と、画像取得部４２が取得した撮像画像とに基づいて、対象物Ｏの三次元点群を生成する。
【００５５】
位置姿勢算出部４７は、三次元点群生成部４６が生成した三次元点群に基づいて、対象物Ｏの位置及び姿勢を算出する。位置姿勢算出部４７は、算出部の一例である。
ロボット制御部４８は、位置姿勢算出部４７が算出した対象物Ｏの位置及び姿勢に基づいてロボット２０に所定の作業を行わせる。
【００５６】
＜ロボットに所定の作業を行わせる際にロボット制御装置が行う処理＞
以下、図４を参照し、ロボット２０に所定の作業を行わせる際にロボット制御装置３０が行う処理について説明する。図４は、ロボット２０に所定の作業を行わせる際にロボット制御装置３０が行う処理の流れの一例を示すフローチャートである。
【００５７】
投射制御部４０は、投射部５に投射させる投射画像を生成する（ステップＳ１１０）。
ここで、ステップＳ１１０の処理について説明する。この一例において、投射制御部４０は、ランダムドットパターンを投射画像として生成する。ランダムドットパターンは、所定形状の画素の塊であるドットが複数規則的に配置された画像であり、ドット毎にランダムな輝度値が割り当てられた画像である。
【００５８】
図５は、投射制御部４０が生成する投射画像の一例を示す図である。図５に示した投射画像Ｐは、ランダムドットパターンの一例である。図５に示した例では、ドットは、複数の画素の塊であって正方形状の塊である。また、当該例に示したように、各ドットの輝度値は、ランダムに割り当てられている。投射制御部４０は、ステップＳ１１０の処理を実行する毎に、各ドットの輝度値をランダムに割り当てたランダムドットパターンを投射画像として生成する。
【００５９】
なお、ランダムドットパターンにおけるドットの形状は、正方形状に代えて、長方形状であってもよく、円形状であってもよく、楕円形状であってもよく、他の形状であってもよい。また、投射画像は、ランダムドットパターンに代えて、すべての画素の輝度値が一定の画像（輝度値が一様な画像）でなければ他の如何なる画像であってもよい。例えば、当該画像は、景色や人物が撮像された画像であってもよい。
【００６０】
ステップＳ１１０において投射画像を生成した後、投射制御部４０は、投射部５によりステップＳ１１０において生成した投射画像を投射領域Ｒ１（この一例において、対象物Ｏを含む領域）に投射する（ステップＳ１２０）。
【００６１】
次に、撮像制御部４１は、撮像部１０に撮像領域Ｒ２（この一例において、対象物Ｏを含む領域）を撮像させる（ステップＳ１３０）。次に、画像取得部４２は、ステップＳ１３０において撮像部１０が撮像した撮像画像を撮像部１０から取得する（ステップＳ１４０）。次に、第１対応情報算出部４３は、記憶部３２に記憶された光輸送行列を記憶部３２から読み出す（ステップＳ１５０）。なお、１回目のステップＳ１５０の処理において第１対応情報算出部４３が記憶部３２から読み出す光輸送行列は、この一例において、すべての成分が１に初期化された行列であって記憶部３２に予め記憶された行列である。なお、当該光輸送行列は、当該行列に代えて、０ではない他の値を成分として有する行列であってもよい。この場合、当該行列の各成分の値は、互いに同じであってもよく、互いに異なってもよい。また、当該行列が有する複数の成分のうちの一部の成分の値は、同じであってもよい。
【００６２】
次に、第１対応情報算出部４３は、ステップＳ１５０において記憶部３２から読み出した光輸送行列と、ステップＳ１２０において投射部５が投射した最新の投射画像（今回の投射画像）と、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像（今回の撮像画像）とに基づいて、当該光輸送行列を更新する（ステップＳ１５５）。当該光輸送行列は、前回更新した光輸送行列である。なお、前回更新した光輸送行列は、この一例において、記憶部３２に予め記憶された光輸送行列であって１回も更新されていない光輸送行列を含む。ステップＳ１５５において光輸送行列を更新する際、第１対応情報算出部４３は、例えば、第１ベクトルと第２ベクトルを生成する。第１ベクトルは、投射部５が投射した投射画像に基づくベクトルである。第２ベクトルは、画像取得部４２が取得した撮像画像（すなわち、撮像部１０が撮像した撮像画像）に基づくベクトルである。
【００６３】
ここで、図６を参照し、第１対応情報算出部４３による第１ベクトル及び第２ベクトルの生成処理について説明する。図６は、第１対応情報算出部４３による第１ベクトル及び第２ベクトルの生成処理を説明するための図である。
【００６４】
まず、第１対応情報算出部４３による第１ベクトルの生成処理について説明する。ステップＳ１５５において、第１対応情報算出部４３は、ステップＳ１２０において投射部５が投射した最新の投射画像に基づく第１ベクトルを生成する。図６に示した投射画像ＰＮは、ステップＳ１２０において投射部５が投射した最新の投射画像の一例である。図６に示した例では、投射画像ＰＮは、画素ＰＰ１〜画素ＰＰ４の４つの画素によって構成される。第１対応情報算出部４３は、所定の変換ルールに基づいて、ステップＳ１２０において投射部５が投射した最新の投射画像の画素を仮想的に並べ替える。変換ルールは、この一例において、当該投射画像の画素がｍ行ｎ列（ｍ及びｎは、２以上の整数）の行列状に並んでいる場合、ｉ行ｊ列目の画素を（ｉ＋ｍ（ｊ−１））番目の画素となるように一列に並べ替えることである。ここで、ｍは、２以上の整数であり、ｍの最大値は、第２ベクトルの成分数である。また、ｎは、２以上の整数であり、ｎの最大値は、第１ベクトルの成分数である。第１対応情報算出部４３が投射画像ＰＮを変換ルールに基づいて並べ替えた場合、投射画像ＰＮを構成する４つの画素は、図６における上段中図に示したように画素ＰＰ１、画素ＰＰ２、画素ＰＰ３、画素ＰＰ４の順に一列に並べ替えられる。
【００６５】
第１対応情報算出部４３は、変換ルールに基づいて、ステップＳ１２０において投射部５が投射した最新の投射画像の画素を仮想的に並べ替えた後、並べ替えた画素の輝度値に基づいて当該輝度値のそれぞれを成分として有するベクトルである第１ベクトルを生成する。具体的には、第１対応情報算出部４３は、並べ替えた画素のうち並び順がｋ番目の画素の輝度値を、ｋ番目の成分として有する第１ベクトルを生成する。図６における上段に示した例では、第１対応情報算出部４３は、投射画像ＰＮを構成する４つの画素であって並べ替えた後の画素のうち並び順が１番目の画素ＰＰ１の輝度値ＰＬ１を１番目の成分として有し、当該画素のうち並び順が２番目の画素ＰＰ２の輝度値ＰＬ２を２番目の成分として有し、当該画素のうち並び順が３番目の画素ＰＰ３の輝度値ＰＬ３を３番目の成分として有し、当該画素のうち並び順が４番目の画素ＰＰ４の輝度値ＰＬ４を４番目の成分として有する第１ベクトルＶＲ１を生成する。このようにステップＳ１５５において生成された第１ベクトルは、前述した通りステップＳ１２０において投射部５が投射した最新の投射画像に基づくベクトルであり、当該投射画像の各画素の輝度値を表すベクトルである。
【００６６】
次に、第１対応情報算出部４３による第２ベクトルの生成処理について説明する。ステップＳ１５５において、第１対応情報算出部４３は、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像に基づく第２ベクトルを生成する。図６に示した撮像画像ＣＮは、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像の一例である。図６に示した例では、撮像画像ＣＮは、画素ＣＰ１〜画素ＣＰ４の４つの画素によって構成される。第１対応情報算出部４３は、前述の変換ルールに基づいて、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像の画素を仮想的に並べ替える。第１対応情報算出部４３が撮像画像ＣＮを変換ルールに基づいて並べ替えた場合、撮像画像ＣＮを構成する４つの画素は、図６における下段中図に示したように画素ＣＰ１、画素ＣＰ２、画素ＣＰ３、画素ＣＰ４の順に一列に並べ替えられる。
【００６７】
第１対応情報算出部４３は、変換ルールに基づいて、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像の画素を仮想的に並べ替えた後、並べ替えた画素の輝度値に基づいて当該輝度値のそれぞれを成分として有するベクトルである第２ベクトルを生成する。具体的には、第１対応情報算出部４３は、並べ替えた画素のうち並び順がｋ番目の画素の輝度値を、ｋ番目の成分として有する第２ベクトルを生成する。図６における下段に示した例では、第１対応情報算出部４３は、撮像画像ＣＮを構成する４つの画素であって並べ替えた後の画素のうち並び順が１番目の画素ＣＰ１の輝度値ＣＬ１を１番目の成分として有し、当該画素のうち並び順が２番目の画素ＣＰ２の輝度値ＣＬ２を２番目の成分として有し、当該画素のうち並び順が３番目の画素ＣＰ３の輝度値ＣＬ３を３番目の成分として有し、当該画素のうち並び順が４番目の画素ＣＰ４の輝度値ＣＬ４を４番目の成分として有する第２ベクトルＶＲ２を生成する。このようにステップＳ１５５において生成された第２ベクトルは、前述した通りステップＳ１４０において画像取得部４２が取得した最新の撮像画像に基づくベクトルであり、当該撮像画像の各画素の輝度値を表すベクトルである。
【００６８】
第１対応情報算出部４３はステップＳ１５５において、このようにして生成した第１ベクトル及び第２ベクトルと、ステップＳ１５０において記憶部３２から読み出した光輸送行列とに基づいて、当該光輸送行列を更新する。光輸送行列は、前述したように、撮像画像の各画素の輝度値に対する投射画像の各画素の輝度値からの寄与を表す重みを成分として有する行列である。より具体的には、光輸送行列のｐ行ｑ列目の成分は、第２ベクトルのｐ番目の成分（すなわち、輝度値）に対する寄与であって第１ベクトルのｑ番目の成分（すなわち、輝度値）からの寄与を表す重みである。
【００６９】
光輸送行列の各成分が正確に算出されている場合、第１対応情報算出部４３は、光輸送行列に第１ベクトルを乗算することによって、第２ベクトルが有する成分と同じ成分を有するベクトルを算出することができる。以下では、説明の便宜上、光輸送行列に第１ベクトルを乗算することによって算出されるベクトルを第３ベクトルと称して説明する。光輸送行列の各成分が正確に算出されている場合、第２ベクトルと第３ベクトルとの差分である差分ベクトルは、ゼロベクトルである。一方、光輸送行列の各成分が正確に算出されていない場合、当該差分ベクトルは、ゼロベクトルではない。第１対応情報算出部４３は、ステップＳ１５５において、当該差分ベクトルがゼロベクトルに近づくように光輸送行列を更新する。
【００７０】
第１ベクトルのｑ番目の成分をＶ１ｑと表し、第２ベクトルのｐ番目の成分をＶ２ｐと表し、第１対応情報算出部４３による更新前の光輸送行列におけるｐ行ｑ列目の成分をＷ１ｐｑと表し、第１対応情報算出部４３による更新後の光輸送行列におけるｐ行ｑ列目の成分をＷ２ｐｑと表すと、更新後の光輸送行列におけるｐ行ｑ列目の成分Ｗ２ｐｑは、以下に示す式（１）によって算出することができる。
【００７１】
Ｗ２ｐｑ＝［１−α（Ｖ１ｑ−Ｖ２ｐ）］Ｗ１ｐｑ  ・・・（１）
【００７２】
ここで、αは、上記の式（１）の大括弧内の値が負の値にならないようにするためのゲインである。αは、（Ｖ１ｑ−Ｖ２ｐ）の最大値分の１以下の値であれば如何なる値であってもよい。具体的には、この一例における（Ｖ１ｑ−Ｖ２ｐ）の最大値が２５５であるため、αは、１／２５５以下の値であり、例えば、４×１０−３である。
【００７３】
このように、第１対応情報算出部４３は、ステップＳ１２０において投射部５が投射した最新の投射画像に基づいて生成した第１ベクトルと、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像に基づいて生成した第２ベクトルと、ステップＳ１５０において記憶部３２から読み出した光輸送行列と、上記の式（１）とに基づいて、更新後の光輸送行列の各成分を算出する。そして、第１対応情報算出部４３は、算出した当該各成分の総和によって当該各成分を正規化する。第１対応情報算出部４３は、正規化した後の当該各成分を有する光輸送行列を記憶部３２に記憶し、ステップＳ１５０において記憶部３２から読み出した光輸送行列を更新する。
【００７４】
ステップＳ１５５において光輸送行列が更新された後、判定部４５は、ステップＳ１５５において更新された光輸送行列と、ステップＳ１２０において投射部５が投射した最新の投射画像と、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像とに基づいて、ステップＳ１５５において更新された後（更新後）の光輸送行列を（再び）更新するか否かを判定するための評価値を算出する（ステップＳ１６０）。ここで、ステップＳ１６０の処理について説明する。
【００７５】
第１対応情報算出部４３は、ステップＳ１２０において投射部５が投射した最新の投射画像に基づいて生成した第１ベクトルを、ステップＳ１５５において更新した光輸送行列に乗じることによって第３ベクトルを算出する。第１対応情報算出部４３は、算出した第３ベクトルと、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像に基づいて生成した第２ベクトルとの差分である差分ベクトルを算出する。そして、第１対応情報算出部４３は、当該差分ベクトルのノルムを前述の評価値として算出する。なお、評価値は、これに代えて、当該ノルムに基づく他の値であってもよく、当該差分ベクトルに基づく他の値であってもよく、ステップＳ１５５において更新した光輸送行列に基づく他の値であってもよい。
【００７６】
ステップＳ１６０において評価値が算出された後、判定部４５は、ステップＳ１６０において算出した評価値が所定閾値未満であるか否かを判定する（ステップＳ１７０）。所定閾値は、例えば、ステップＳ１２０において投射部５が投射した最新の投射画像に基づいて生成した第１ベクトルをステップＳ１５５において更新される前（更新前）の光輸送行列に乗じることによって算出される第３ベクトルと、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像に基づいて生成した第２ベクトルとの差分ベクトルのノルムである。なお、所定閾値は、これに代えて、他の値であってもよい。
【００７７】
ステップＳ１６０において算出した評価値が所定閾値未満であると判定部４５が判定した場合（ステップＳ１７０−ＹＥＳ）、次回のステップＳ１６０において算出される評価値が、今回のステップＳ１６０において算出された評価値よりも小さくなる可能性があるため、投射制御部４０は、ステップＳ１１０に遷移し、再び投射画像を生成する。一方、ステップＳ１６０において算出した評価値が所定閾値未満ではないと判定部４５が判定した場合（ステップＳ１７０−ＮＯ）、次回のステップＳ１６０において算出される評価値が、今回のステップＳ１６０において算出された評価値よりも大きくなる可能性があるため、第２対応情報算出部４４は、今回のステップＳ１５５において更新された後（更新後）の光輸送行列に基づいて、第２対応情報を算出する（ステップＳ１８０）。ここで、ステップＳ１８０の処理について説明する。
【００７８】
第２対応情報算出部４４は、光輸送行列のｑ行目に含まれる成分のうちの最も大きな値の成分がｐ列目の成分（すなわち、ｑ行ｐ列目の成分）であった場合、第２ベクトルのｑ番目の成分に対応する画素であって撮像画像の画素と、第１ベクトルのｐ番目の成分に対応する画素であって投射画像の画素とを対応付ける。これにより、第２対応情報算出部４４は、撮像部１０に撮像された撮像画像の各画素と、投射部５に投射された投射画像の各画素とを対応付ける第２対応情報を算出する。第２対応情報は、撮像部１０に撮像された撮像画像の各画素と、投射部５に投射された投射画像の各画素とを対応付ける行列であってもよく、撮像部１０に撮像された撮像画像の各画素と、投射部５に投射された投射画像の各画素とを対応付ける情報が格納されたテーブルであってもよく、撮像部１０に撮像された撮像画像の各画素と、投射部５に投射された投射画像の各画素とを対応付ける他の情報であってもよい。
【００７９】
なお、ステップＳ１８０において、第２対応情報算出部４４は、今回のステップＳ１５５において更新される前（更新前）の光輸送行列に基づいて、第２対応情報を算出する構成であってもよい。この場合、第１対応情報算出部４３は、ステップＳ１５５において光輸送行列を更新する際、更新前の光輸送行列の履歴を記憶部３２に記憶する。
【００８０】
ステップＳ１８０において第２対応情報が算出された後、三次元点群生成部４６は、ステップＳ１８０において算出された第２対応情報と、ステップＳ１４０において画像取得部４２が取得した最新の撮像画像と、ステップＳ１２０において投射部５が投射した最新の投射画像と、三角法とに基づいて対象物Ｏの三次元形状情報（この一例において、対象物Ｏの三次元点群）を生成する（ステップＳ１９０）。なお、ステップＳ１９０の処理については、従来の方法によって行われてもよく、これから開発される方法によって行われてもよい。
【００８１】
次に、位置姿勢算出部４７は、ステップＳ１９０において生成された三次元形状情報に基づいて、対象物Ｏの位置及び姿勢を算出する（ステップＳ２００）。当該位置及び姿勢は、三次元のロボット座標系ＲＣにおける位置及び姿勢である。次に、ロボット制御部４８は、ステップＳ２００において位置姿勢算出部４７が算出した対象物Ｏの位置及び姿勢に基づいて、ロボット２０に所定の作業を行わせ（ステップＳ２１０）、処理を終了する。
【００８２】
ここで、ロボット制御装置３０は、ステップＳ１１０〜ステップＳ１７０の処理を繰り返し行うことにより、光輸送行列の更新を繰り返し、光輸送行列の各成分の値を正確な値に近づけることができる。この際、ロボット制御装置３０は、ステップＳ１１０の処理を行う毎に、前回のステップＳ１１０の処理において生成した投射画像と異なる投射画像を生成する。すなわち、ロボット制御装置３０は、ステップＳ１２０の処理を行う毎に、互いに異なる投射画像を対象物Ｏに投射する。その結果、対象物Ｏに投射画像が投射された場合において対象物Ｏの光学特性により生じる意図しない反射や透過による撮像画像への影響（例えば、白飛びや黒潰れ）が平均化され、ロボット制御装置３０は、精度の高い光輸送行列を算出することができる。これにより、ロボット制御装置３０は、ステップＳ１８０〜ステップＳ２００の処理によって、対象物Ｏが光沢を有する物体や半透明な物体であっても、算出した光輸送行列に基づいて対象物Ｏの位置及び姿勢の算出における対象物Ｏの光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００８３】
なお、ロボット制御装置３０は、２回目以降のステップＳ１１０の処理において、前回のステップＳ１５５において更新された後（更新後）の光輸送行列に応じた投射画像を生成する構成（すなわち、更新後の光輸送行列に応じたフィードバック処理を行う構成）であってもよい。例えば、ロボット制御装置３０は、当該光輸送行列のｚ１列に含まれる成分の値がすべて第２所定閾値以下である場合、第２ベクトルの各成分に対する第１ベクトルのｚ１番目の成分からの寄与が無視できるほど小さいと判定し、ステップＳ１１０において生成する投射画像の画素のうちの第１ベクトルのｚ１番目の成分に対応する画素の輝度値を０にした当該投射画像をステップＳ１１０において生成する。第２所定閾値は、例えば、ロボット制御装置３０が光輸送行列の更新処理を繰り返し行った結果に応じてユーザーが決定する値であり、例えば、０．１である。なお、第２所定閾値は、これに代えて、他の値であってもよい。ここで、ｚ１は、１以上の整数である。ｚ１の最大値は、当該光輸送行列の列数（又は第１ベクトルの成分数）である。これにより、ロボット制御装置３０は、第１対応情報を更新するか否かの判定結果に基づいて、繰り返し第１対応情報を更新することができる。また、ロボット制御装置３０は、光輸送行列の更新に要する計算量を少なくすることができるとともに、ステップＳ１１０〜ステップＳ１７０の処理を繰り返す回数を少なくすることができる。その結果、ロボット制御装置３０は、ロボット２０に所定の作業を行わせる時間を短縮することができる。
【００８４】
また、ロボット制御装置３０は、ステップＳ１５５、ステップＳ１８０、ステップＳ１９０のうちの一部又は全部において、エピポーラ拘束と組み合わせた処理を行う構成であってもよい。例えば、ロボット制御装置３０は、ステップＳ１５５において光輸送行列を更新する場合、第１ベクトルのｚ２番目の成分に対応する画素であって投射画像の画素が、第２ベクトルのどの成分に対応する画素に寄与するのかを、エピポーラ拘束によって予測することにより、光輸送行列の更新に要する計算量を少なくすることができる。その結果、ロボット制御装置３０は、ロボット２０に所定の作業を行わせる時間を短縮することができる。
【００８５】
また、制御部３６の一部は、ロボット制御装置３０と別体の装置である位置姿勢算出装置５０に備えられる構成であってもよい。この場合、位置姿勢算出装置５０とロボット制御装置３０との機能構成は、例えば、図７に示したような機能構成となる。
【００８６】
図７は、位置姿勢算出装置５０とロボット制御装置３０の機能構成の一例を示す図である。
位置姿勢算出装置５０は、記憶部５２と、制御部５６を備える。なお、図７では、図３に示した構成部と同様な構成部に対して同じ符号を付して説明を省略する。また、位置姿勢算出装置５０は、図示しない通信部を介して投射部５、撮像部１０、ロボット制御装置３０のそれぞれと通信を行う。
【００８７】
記憶部５２は、例えば、ＨＤＤやＳＳＤ、ＥＥＰＲＯＭ、ＲＯＭ、ＲＡＭ等を含む。なお、記憶部５２は、位置姿勢算出装置５０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部５２は、位置姿勢算出装置５０が処理する各種情報や動作プログラムを含む各種のプログラム、投射画像、撮像画像等を格納する。記憶部５２は、位置姿勢算出装置５０において、ロボット制御装置３０における記憶部３２の役割と同様の役割を負う。
【００８８】
制御部５６は、位置姿勢算出装置５０の全体を制御する。制御部５６は、投射制御部４０と、撮像制御部４１と、画像取得部４２と、生成部４９と、位置姿勢算出部４７を備える。制御部５６が備えるこれらの機能部は、例えば、図示しないＣＰＵが、記憶部５２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。ここで、位置姿勢算出装置５０が備える位置姿勢算出部４７は、対象物Ｏの位置及び姿勢を算出した後、算出した当該位置及び姿勢を示す情報をロボット制御装置３０に出力する。
【００８９】
ロボット制御装置３０は、制御部３６ａを備える。
制御部３６ａは、ロボット制御装置３０の全体を制御する。制御部３６ａは、ロボット制御部４８を備える。ここで、当該ロボット制御部４８は、位置姿勢算出装置５０から対象物Ｏの位置及び姿勢を示す情報を取得し、取得した当該情報に基づいてロボット２０に所定の作業を行わせる。
【００９０】
このように、制御部３６の一部は、ロボット制御装置３０と別体の位置姿勢算出装置５０に備えられる構成であってもよい。なお、図７に示した位置姿勢算出装置５０の機能構成は、一例に過ぎず、他の機能構成であってもよい。
【００９１】
以上のように、ロボット制御装置（この一例において、ロボット制御装置３０）又は位置姿勢算出装置（この一例において、位置姿勢算出装置５０）は、投射部（この一例において、投射部５）により対象物（この一例において、対象物Ｏ）を含む領域（この一例において、撮像領域Ｒ２）に２以上の互いに異なるランダムドットパターンのそれぞれを投射し、撮像部（この一例において、撮像部１０）により当該領域が撮像された２以上の撮像画像に基づいて対象物の位置及び姿勢を算出する。これにより、ロボット制御装置又は位置姿勢算出装置は、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９２】
また、ロボット制御装置又は位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なるランダムドットパターンのそれぞれを投射する毎に撮像部により当該領域が撮像された撮像画像に基づいて対象物の位置及び姿勢を算出する。これにより、ロボット制御装置又は位置姿勢算出装置は、投射部によりランダムドットパターンのそれぞれが投射される毎に撮像部により撮像された撮像画像に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９３】
また、ロボット制御装置又は位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像に基づいて対象物の三次元形状を表す三次元形状情報（この一例において、三次元点群）を生成し、生成した三次元形状情報に基づいて対象物の位置及び姿勢を算出する。これにより、ロボット制御装置又は位置姿勢算出装置は、生成した三次元形状情報に基づいて、対象物の位置及び姿勢を更に高い精度で算出することができる。
【００９４】
また、ロボット制御装置又は位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部が当該領域に投射したランダムドットパターンとに基づいて、記憶された情報であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値（この一例において、輝度値）とを対応付ける第１対応情報（この一例において、光輸送行列）を更新し、更新した第１対応情報に基づいて三次元形状情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、更新した第１対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９５】
また、ロボット制御装置又は位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部により当該領域に投射されたランダムドットパターンとに基づいて、記憶された行列であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値とを対応付ける行列（この一例において、光輸送行列）を更新し、更新した当該行列に基づいて三次元形状情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、更新した行列であって撮像画像の各画素の画素値とランダムドットパターンの各画素の画素値とを対応付ける行列に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９６】
また、ロボット制御装置又は位置姿勢算出装置は、撮像部により対象物を含む領域が撮像された２以上の撮像画像と、投射部により当該領域に投射されたランダムドットパターンとに基づいて、記憶された行列であって撮像画像の各画素の画素値に対するランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する行列を更新し、更新した当該行列に基づいて三次元形状情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、撮像画像の各画素の画素値に対するランダムドットパターンの各画素の画素値からの寄与を表す重みを成分として有する行列に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９７】
また、ロボット制御装置又は位置姿勢算出装置は、投射部により今回対象物を含む領域に投射したランダムドットパターンと、前回更新した第１対応情報と、投射部により今回対象物を含む領域に投射したランダムドットパターンが撮像部により撮像された撮像画像とに基づいて、当該第１対応情報を更新する。これにより、ロボット制御装置又は位置姿勢算出装置は、更新した第１対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【００９８】
また、ロボット制御装置又は位置姿勢算出装置は、投射部により今回対象物を含む領域に投射したランダムドットパターンと、今回更新した第１対応情報と、当該ランダムドットパターンが投射された前記領域が前記撮像部により撮像された撮像画像とに基づいて、当該第１対応情報を更新するか否かを判定する。これにより、ロボット制御装置又は位置姿勢算出装置は、第１対応情報を更新するか否かの判定結果に基づいて、繰り返し第１対応情報を更新することができる。
【００９９】
また、ロボット制御装置又は位置姿勢算出装置は、生成した第１対応情報に基づいて、撮像画像の各画素と、ランダムドットパターンの各画素とを対応付ける第２対応情報を生成し、生成した第２対応情報と三角法に基づいて三次元形状情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、第１対応情報に基づいて算出された第２対応情報に基づいて、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【０１００】
また、ロボット制御装置又は位置姿勢算出装置は、２以上の互いに異なる投射画像であって、所定形状の画素の塊であるドットが複数規則的に配置され、ドット毎にランダムな画素値が割り当てられた投射画像のそれぞれが投射部により対象物を含む領域に投射される毎に撮像部により当該領域が撮像された２以上の撮像画像に基づいて対象物の三次元形状を表す三次元形状情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、所定形状の画素の塊であるドットが複数規則的に配置された投射画像であって、ドット毎にランダムな画素値が割り当てられた投射画像が対象物に投射されることにより、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【０１０１】
また、ロボット制御装置又は位置姿勢算出装置は、投射部により対象物を含む領域に２以上の互いに異なる投射画像のそれぞれを投射する毎に撮像部により当該領域が撮像された２以上の撮像画像に基づいて、記憶された情報であって撮像画像の各画素の画素値と投射画像の各画素の画素値とを対応付ける対応情報を更新し、更新した対応情報に基づいて対象物の三次元形状を表す情報を生成する。これにより、ロボット制御装置又は位置姿勢算出装置は、対象物の位置及び姿勢の算出における対象物の光学特性による誤差を抑制し、当該位置及び姿勢を高い精度で算出することができる。
【０１０２】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１０３】
また、以上に説明した装置（例えば、ロボット制御装置３０、位置姿勢算出装置５０）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１０４】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１０５】
１…ロボットシステム、５…投射部、１０…撮像部、２０…ロボット、３０…ロボット制御装置、３１…ＣＰＵ、３２、５２…記憶部、３３…入力受付部、３４…通信部、３５…表示部、３６、３６ａ、５６…制御部、４０…投射制御部、４１…撮像制御部、４２…画像取得部、４３…第１対応情報算出部、４４…第２対応情報算出部、４５…判定部、４６…三次元点群生成部、４７…位置姿勢算出部、４８…ロボット制御部、４９…生成部、５０…位置姿勢算出装置
【図１】
2017219365.tif 000003
【図２】
2017219365.tif 000004
【図３】
2017219365.tif 000005
【図４】
2017219365.tif 000006
【図５】
2017219365.tif 000007
【図６】
2017219365.tif 000008
【図７】
2017219365.tif 000009