(57)【特許請求の範囲】
【請求項１】
ロボットハンドのハンド部に設けられた第１撮像素子と、
前記第１撮像素子に基準パターンを投影するプロジェクタと、
前記プロジェクタの照射範囲に配置された第２撮像素子と、
前記第１撮像素子から得られた画像情報内の前記基準パターンの情報を基に、前記ロボットハンドの位置修正を行う修正部と、を備え、
前記修正部は、前記第２撮像素子から得られた画像を用いて、前記第１撮像素子から得られた画像における前記プロジェクタの振動の影響を抑制することを特徴とする組立装置。
【請求項２】
前記ロボットハンドの作業対象を撮像する第３撮像素子を備え、
前記プロジェクタは、前記作業対象における前記第３撮像素子の撮像範囲にパターンを投影し、
前記修正部は、前記第３撮像素子から得られた画像情報内の前記パターンの情報を基に、前記作業対象の設置位置を取得することを特徴とする請求項１記載の組立装置。
【請求項３】
ロボットハンドのハンド部に設けられた第１撮像素子に、プロジェクタを用いて基準パターンを投影し、
前記第１撮像素子から得られた画像情報内の前記基準パターンの情報を基に、前記ロボットハンドの位置修正を行い、
前記プロジェクタの照射範囲に配置された第２撮像素子から得られた画像を用いて、前記第１撮像素子から得られた画像における前記プロジェクタの振動の影響を抑制する、ことを特徴とするロボットハンド位置修正方法。
【請求項４】
コンピュータに、
ロボットハンドのハンド部に設けられた第１撮像素子に、プロジェクタを用いて基準パターンを投影する処理と、
前記第１撮像素子から得られた画像情報内の前記基準パターンの情報を基に、前記ロボットハンドの位置修正を行う処理と、
前記プロジェクタの照射範囲に配置された第２撮像素子から得られた画像を用いて、前記第１撮像素子から得られた画像における前記プロジェクタの振動の影響を抑制する処理と、を実行させることを特徴とするロボットハンド位置修正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、組立装置、ロボットハンド位置修正方法、およびロボットハンド位置修正プログラムに関する。
【背景技術】
【０００２】
労働人口の減少や国内生産回帰に対応するため、ロボットによる組立需要が増加している。組立作業には位置決め精度が要求されている。そこで、レーザビームなどを用いてロボットハンド先端の位置を検出し、ロボットハンドの位置を補正する技術などが開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表平１１−５０２７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記技術では、ロボットハンドの広い移動空間において位置補正を行うことは困難である。
【０００５】
本件は上記課題に鑑みなされたものであり、ロボットハンドの移動空間において位置補正を行うことができる組立装置、ロボットハンド位置修正方法、およびロボットハンド位置修正プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、組立装置は、ロボットハンドのハンド部に設けられた第１撮像素子と、前記第１撮像素子に基準パターンを投影するプロジェクタと、前記プロジェクタの照射範囲に配置された第２撮像素子と、前記第１撮像素子から得られた画像情報内の前記基準パターンの情報を基に、前記ロボットハンドの位置修正を行う修正部と、を備え、前記修正部は、前記第２撮像素子から得られた画像を用いて、前記第１撮像素子から得られた画像における前記プロジェクタの振動の影響を抑制する。
【発明の効果】
【０００７】
ロボットハンドの移動空間において位置補正を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】指令値と実測値との関係を表す図である。
【図２】（ａ）および（ｂ）は位置ずれの例である。
【図３】（ａ）および（ｂ）は位置修正を例示する図である。
【図４】実施例１に係る組立装置の概略図である。
【図５】基板および実装部品を例示する図である。
【図６】組立装置の座標系について例示する図である。
【図７】（ａ）はプロジェクタと撮像素子との配置関係を表す図であり、（ｂ）はプロジェクタ座標系Ｐｐｒｊを例示する図であり、（ｃ）はプロジェクタがパターンを照射しない場合における撮像素子の撮像画像を例示する図であり、（ｄ）は、交点が撮像素子のセンサ面に位置する場合の撮像画像を例示する図である。
【図８】（ａ）〜（ｃ）は撮像画像における上記交点の検出について説明するための図である。
【図９】（ａ）〜（ｄ）はプロジェクタの焦点深度変化への対応について説明する図である。
【図１０】（ａ）はロボット座標系Ｐｒｂｔをプロジェクタ座標系Ｐｐｒｊに変換するための射影行列の算出手順について説明するための図であり、（ｂ）は射影行列の算出に用いるマスタワークを例示する図である。
【図１１】（ａ）〜（ｃ）はリファレンス撮像素子の機能について説明するための図である。
【図１２】組立装置が実行する処理の一例を表すフローチャートである。
【図１３】（ａ）および（ｂ）はステップＳ２の詳細を例示する図である。
【図１４】（ａ）〜（ｄ）はステップＳ６の詳細を例示する図である。
【図１５】（ａ）〜（ｄ）は補正テーブルの作成手順を例示する図である。
【図１６】（ａ）はステップＳ７の詳細を表すフローチャートの一例であり、（ｂ）は補正テーブル領域を例示する図である。
【図１７】指令値に対応する目標位置ＣＰ１とロボットハンド２０の実際の位置ＬＰ１との関係を例示する図である。
【図１８】コントローラのハードウェア構成を説明するためのブロック図である。
【発明を実施するための形態】
【０００９】
実施例の説明に先立って、ロボットハンドの絶対位置精度について説明する。絶対位置精度とは、ロボットハンドの位置を指定する指令値に対するロボットハンドの実際の位置の精度のことである。
【００１０】
図１は、指令値と実測値との関係を表す図である。図１で例示するように、１０ｍｍ間隔でロボットハンドを移動させる指令値が入力されるものとする。ロボットハンドが指令値に応じて移動すると、誤差が生じることがある。特に、２以上の関節を有する多関節（多軸）ロボットの場合には、図１で例示するように、実測値において１〜３ｍｍ程度の誤差が生じることがある。このような場合、０．１ｍｍ程度の精度が要求される基板のコネクタ挿入等に、多関節ロボットを適用するのは困難である。
【００１１】
基板に部品を挿入する場合、以下の処理が行われることが多い。まず、基板上の画像処理マークから基板の設置位置（設置時のズレ量）が求められる。次に、あらかじめ登録された部品の挿入位置座標と基板設置位置とのズレ量からロボットハンドの目標位置が算出され、挿入動作が行われる。
【００１２】
例えば、基板の左上からｘ＝１００ｍｍ、ｙ＝１００ｍｍの位置にコネクタを挿入する場合について説明する。図２（ａ）で例示するように、コネクタには複数の端子が備わっているため、±０．１ｍｍ以内の精度が必要とされる場合が多い。この場合、１〜３ｍｍの誤差が生じると、コネクタを挿入できなくなるおそれがある。例えば、図２（ｂ）で例示するように、ｘ軸方向およびｙ軸方向で１〜２ｍｍの位置ズレが生じると、コネクタを基板に挿入できなくなる。
【００１３】
この問題を解決するため、図３（ａ）で例示するように、変位センサ１０１を用いて、ロボットハンドのハンド部１０２の位置を検出し、補正する場合が考えられる。しかしながら、この場合、変位センサ１０１の測定範囲外ではハンド部１０２の先端位置を検出できなくなるという問題が生じる。すなわち、ロボットハンドの広い移動空間全域において位置を補正することが困難である。
【００１４】
次に、図３（ｂ）で例示するように、画像処理用のカメラ１０３をハンド部１０２に搭載し、画像処理によりハンド部１０２の位置を補正する場合が考えられる。しかしながら、この場合、カメラ１０３でハンド部１０２の位置を確認してから作業位置までハンド部１０２を移動させるため、移動時に誤差が生じるおそれがある。
【００１５】
次に、図３（ａ）で例示するように、外部に設置したカメラ１０４から得られた画像に対する処理によってハンド部１０２の位置を算出する場合が考えられる。しかしながら、ハンド部１０２の可動領域と重ならないように、測定対象から離れた位置にカメラ１０４が設置される。この場合、カメラ１０４の測定分解能の低下をまねく。
【００１６】
以上のように、ロボットハンドの位置を修正することは困難である。そこで、以下の実施例では、ロボットハンドの移動空間において位置補正を行うことができる組立装置、ロボットハンド位置修正方法、およびロボットハンド位置修正プログラムについて説明する。
【実施例１】
【００１７】
図４は、実施例１に係る組立装置１００の概略図である。図４で例示するように、組立装置１００は、作業台１０、ロボットハンド２０、ロボットコントローラ３０、プロジェクタ４０、カメラ５０ａ，５０ｂ、コントローラ６０などを備える。
【００１８】
作業台１０には、組立作業対象の基板１１、基板１１への実装部品を収納または供給するトレイ１２、基準位置または振動抑制のための基準を提供するリファレンス撮像素子１３などが配置されている。リファレンス撮像素子１３は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）カメラである。
【００１９】
ロボットハンド２０は、１以上の関節を有するロボットであり、例えば垂直多関節（多軸）ロボットである。例えば、ロボットハンド２０は、トレイ１２から実装部品を取り出し、基板１１への取り付けなどの組立作業を行う。ロボットハンド２０のハンド部２１先端近傍には、撮像素子２２が配置されている。撮像素子２２は、例えばＣＣＤカメラであり、センサ面が後述するプロジェクタ４０の照射面（フォーカスの面）と平行になるようにプロジェクタ４０と対向して配置されている。ロボットコントローラ３０は、ロボットハンド２０の動作を制御する。ロボットコントローラ３０は、例えば、自身に格納されたプログラムの指示に従って、実装部品の把持、挿入などの動作をロボットハンド２０に指示する。この指示の中に、ロボットハンド２０の位置を指定する指令値が含まれる。
【００２０】
プロジェクタ４０は、組立装置１００の天井部に配置されている。プロジェクタ４０は、下方の作業台１０を向いており、基板１１、リファレンス撮像素子１３、および撮像素子２２に対する照射によって投影を行う。カメラ５０ａ，５０ｂは、作業台１０上における基板１１の設置位置を認識するためのカメラである。コントローラ６０は、組立装置１００の各部の動作を制御する。また、コントローラ６０は、組立装置１００の各部の検出結果に応じて処理を行う。
【００２１】
図５は、基板１１および実装部品１４を例示する図である。図５で例示するように、基板１１は、例えばサーバ用のプリント基板であり、ＤＩＭＭメモリ用のソケット１５を備えている。以下、一例として、組立装置１００が実装部品１４をソケット１５に挿入する作業について説明する。なお、図５の画像処理マークＡ，Ｂについては後述する。
【００２２】
図６は、組立装置１００の座標系について例示する図である。一例として、ロボットハンド２０の基板１１上の作業面における稼動範囲は、５００ｍｍ×５００ｍｍであるとする。図６で例示するように、組立装置１００には、プロジェクタ４０のプロジェクタ座標系Ｐｐｒｊ、ロボットハンド２０のロボット座標系Ｐｒｂｔ、およびハンド部２１のハンド座標系Ｐｈｎｄが存在する。本システムで利用する座標系はすべてプロジェクタ座標へ変換される。以降その方法について記載する。組立装置１００においては、例えば射影行列を用いて、ロボット座標系Ｐｒｂｔおよびハンド座標系Ｐｈｎｄをプロジェクタ座標系Ｐｐｒｊに変換する。これらの射影行列は、ロボットハンド２０による作業前に取得しておくことが好ましい。射影行列の具体的な算出手法については後述する。なお、各作業の前にロボットハンド２０がハンド部２１を移動させる際には、撮像素子２２の位置はロボット座標系Ｐｒｂｔで表される。各作業においては、撮像素子２２の位置はハンド座標系Ｐｈｎｄで表される。
【００２３】
また、作業台１０には、基板１１が設置されることになる。基板１１の設置の際に目標位置から基板１１の実際の位置がずれることがある。そこで、組立装置１００は、カメラ５０ａのカメラ座標系Ｐｃａｍ１およびカメラ５０ｂのカメラ座標系Ｐｃａｍ２を用いて、基板１１上の座標系をプロジェクタ座標系Ｐｐｒｊに変換する射影行列を算出する。この射影行列は、作業台１０上に基板１１が設置されてからロボットハンド２０が作業を行うまでの間に取得される。射影行列の具体的な算出手法については後述する。
【００２４】
まず、ロボット座標系Ｐｒｂｔをプロジェクタ座標系Ｐｐｒｊに変換する射影行列の算出手法について説明する。図７（ａ）は、プロジェクタ４０と撮像素子２２との配置関係を表す図である。ロボットコントローラ３０は、作業開始時において、プロジェクタ４０の照射範囲内で撮像素子２２のセンサ面がプロジェクタ４０の焦点深度における照射面（フォーカスの面）と一致してプロジェクタ４０と対向するようにハンド部２１を制御する。なお、焦点深度の設定手法については、後述する。
【００２５】
図７（ｂ）は、プロジェクタ座標系Ｐｐｒｊを例示する図である。一例として、プロジェクタ４０の解像度が６４０ピクセル×４８０ピクセルであるとする。また、照射面における照射範囲が８００ｍｍ×６００ｍｍであるとする。この場合、照射面において、Ｘ軸は８００ｍｍ／６４０ピクセル＝１．２５ｍｍ／ピクセルであり、Ｙ軸は６４０ｍｍ／４８０ピクセル＝１．２５m／ピクセルである。
【００２６】
図７（ｃ）は、プロジェクタ４０がパターンを照射しない場合における撮像素子２２の撮像画像を例示する図である。図７（ｃ）で例示するように、撮像画像には、格子状のピクセル境界が現れる。プロジェクタ４０は、例えば、Ｘ軸に平行な線とＹ軸に平行な線とを含む交差パターン（基準パターン）を照射し、当該パターンの交点を照射面において指定する。
【００２７】
図７（ｄ）は、上記交点が撮像素子２２のセンサ面に位置する場合の撮像画像を例示する図である。図７（ｄ）で例示するように、各線が太線として認識される。ロボットハンド２０の位置がロボットハンド２０への指令値と一致していれば、上記交点は撮像素子２２の撮像画像において指令値に対応する点に位置することになる。ロボットハンド２０の位置が指令値からずれていれば、撮像画像において上記交点が指定値に対応する点からずれることになる。このずれ量を補正することによって、高い精度でロボットハンド２０の位置補正を行うことができる。
【００２８】
図８（ａ）〜図８（ｃ）は、撮像画像における上記交点の検出について説明するための図である。図８（ａ）は、撮像素子２２の撮像結果を例示する図である。太線は、Ｙ軸方向に延びる線を表している。例えば、プロジェクション処理などにより、図８（ｂ）および図８（ｃ）で例示するＸ軸方向およびＹ軸方向の輝度のヒストグラムから当該線を検出することができる。Ｘ軸方向およびＹ軸方向の線を検出することによって、交点を検出することができる。
【００２９】
図９（ａ）〜図９（ｄ）は、プロジェクタ４０の焦点深度変化への対応について説明する図である。図９（ａ）は、プロジェクタ４０のピクセル境界を表している。格子状の細線同士の間隔が、１ピクセルの寸法（ピッチ寸法）に相当する。撮像素子２２が被照射面よりも作業台１０側にシフトすると、図９（ｂ）で例示するように、ピッチ寸法が広がることになる。以上のことから、図９（ｃ）で例示するように、プロジェクタ４０の焦点深度に応じてピッチ寸法が変化することになる。なお、図９（ｄ）は、撮像素子２２の撮像結果を例示する。
【００３０】
たとえば、撮像素子の仕様が、サイズ：１／２、有効画素数：７６８×４９４、ピクセルサイズ：８．４μｍ×９．８μｍであるとする。この場合において、画像処理により得られたピッチ寸法が１１９ピクセル×１０２ピクセルであれば、（８．９×１１９，９．８×１０２）＝（９９９．６μｍ，９９９．６μｍ）となる。このような対応関係を用いることによって、焦点深度が変化しても、撮像素子２２の撮像画像における位置とロボットハンド２０の実際の位置とを対応させることができる。
【００３１】
図１０（ａ）は、ロボット座標系Ｐｒｂｔをプロジェクタ座標系Ｐｐｒｊに変換するための射影行列の算出手順について説明するための図である。図１０（ａ）で例示するように、ロボットコントローラ３０は、ハンド部２１を作業台１０上のロボット座標系Ｐｒｂｔにおけるｘ（Ｘｒ軸）＝０ｍｍ、ｙ（Ｙｒ軸）＝５００ｍｍの位置に移動させる。この際に、撮像素子２２のセンサ面がプロジェクタ４０の焦点深度における照射面と一致してプロジェクタ４０と対向するようにハンド部２１を調整し、プロジェクタ４０の投影画像が撮像素子２２に照射されるように設定しておく。
【００３２】
次に、コントローラ６０は、この場合のハンド部２１のプロジェクタ座標系Ｐｐｒｊ（Ｘｐ軸、Ｙｐ軸）における位置を、撮像素子２２を用いて算出し、位置Ｐ１として登録する。次に、ロボットコントローラ３０は、ハンド部２１をロボット座標系Ｐｒｂｔにおけるｘ（Ｘｒ軸）＝０ｍｍ、ｙ（Ｙｒ軸）＝０ｍｍの位置に移動させる。コントローラ６０は、この場合のハンド部２１のプロジェクタ座標系Ｐｐｒｊ（Ｘｐ軸、Ｙｐ軸）における位置を、撮像素子２２を用いて算出し、位置Ｐ２として登録する。次に、ロボットコントローラ３０は、ハンド部２１をロボット座標系Ｐｒｂｔにおけるｘ（Ｘｒ軸）＝５００ｍｍ、ｙ（Ｙｒ軸）＝０ｍｍの位置に移動させる。コントローラ６０は、この場合のハンド部２１のプロジェクタ座標系Ｐｐｒｊ（Ｘｐ軸、Ｙｐ軸）における位置を、撮像素子２２を用いて算出し、位置Ｐ３として登録する。コントローラ６０は、位置Ｐ１〜Ｐ３を用いて、ロボット座標系Ｐｒｂｔをプロジェクタ座標系Ｐｐｒｊに変換するための射影行列（回転角度＝θ）を算出する。
【００３３】
次に、ハンド座標系Ｐｈｎｄをプロジェクタ座標系Ｐｐｒｊに変換するための射影行列について説明する。図１０（ｂ）は、射影行列の算出に用いるマスタワーク７０を例示する図である。図１０（ｂ）で例示するように、マスタワーク７０の既定位置には、撮像素子７１が搭載されている。例えば、撮像素子７１は、マスタワーク７０の中心に搭載されている。撮像素子７１の位置は、事前の位置測定により保証されている。
【００３４】
ロボットコントローラ３０は、ハンド部２１にマスタワーク７０を把持させ、プロジェクタ４０の照射面の任意の位置に移動させる。コントローラ６０は、プロジェクタ４０に、ハンド部２１の撮像素子２２とマスタワーク７０の撮像素子７１とに交差パターンを投影させ、撮像素子２２およびマスタワーク７０の中心位置を算出する。次に、ロボットコントローラ３０は、ハンド部２１を９０度回転させ、撮像素子７１の撮像画像から回転中心を求め、回転中心補正を行う。それにより、コントローラ６０は、ハンド座標系Ｐｈｎｄをプロジェクタ座標系Ｐｐｒｊに変換するための射影行列を算出する。
【００３５】
図１１（ａ）は、リファレンス撮像素子１３の機能について説明するための図である。図１１（ａ）で例示するように、リファレンス撮像素子１３は、プロジェクタ４０の照射範囲に配置されている。したがって、プロジェクタ４０の照射範囲に撮像素子２２およびリファレンス撮像素子１３が配置されることになる。プロジェクタ４０と撮像素子２２とは離れているため、プロジェクタ４０の振動が強調され、撮像画像における振動が大きくなる。この振動は、リファレンス撮像素子１３の撮像画像においても現れる。したがって、図１１（ｂ）で例示するリファレンス撮像素子１３の撮像画像におけるピクセル境界の格子の振動から、プロジェクタ４０の振動情報を得ることができる。この振動成分を図１１（ｃ）で例示する撮像素子２２の撮像画像から除去（キャンセル）することによって、プロジェクタ４０の振動の影響を抑制することができる。
【００３６】
続いて、組立装置１００が実行する処理の一例について説明する。図１２は、組立装置１００が実行する処理の一例を表すフローチャートである。図１２で例示するように、まず、作業者により、基板１１とトレイ１２とが作業台１０上にセットされ、開始ボタンなどが押下される（ステップＳ１）。次に、ロボットコントローラ３０は、カメラ５０ａ，５０ｂの撮像画像を用いて、基板１１の設置位置を算出し、プロジェクタ座標系Ｐｐｒｊに変換する（ステップＳ２）。
【００３７】
図１３（ａ）および図１３（ｂ）は、ステップＳ２の詳細を例示する図である。図１３（ａ）で例示するように、ロボットコントローラ３０は、ロボットハンド２０をプロジェクタ４０の照射範囲から退避させる。次に、ロボットコントローラ３０は、プロジェクタ４０に、基板１１上におけるカメラ５０ａ，５０ｂの撮像範囲に画像処理マークを照射させる。
【００３８】
図１３（ｂ）は、プロジェクタ４０によって照射された画像処理マークＡ，Ｂである。画像処理マークＡ，Ｂは、例えば幅を有する十字形であり、例えば基板１１の互いに対角をなす角近傍に照射される。カメラ５０ａは、画像処理マークＡを撮像する。カメラ５０ｂは、画像処理マークＢを撮像する。ロボットコントローラ３０は、プロジェクタ座標系Ｐｐｒｊにおける画像処理マークＡの座標と、カメラ座標系Ｐｃａｍ１における画像処理マークＡの座標とを対比する。また、ロボットコントローラ３０は、プロジェクタ座標系Ｐｐｒｊにおける画像処理マークＢの座標と、カメラ座標系Ｐｃａｍ２における画像処理マークＢの座標とを対比する。それにより、ロボットコントローラ３０は、カメラ５０ａ，５０ｂのカメラ座標系Ｐｃａｍ１，Ｐｃａｍ２をプロジェクタ４０のプロジェクタ座標系Ｐｐｒｊに変換するための射影行列を算出する。
【００３９】
次に、ロボットコントローラ３０は、カメラ５０ａが撮像する基板１１の画像と、カメラ５０ｂが撮像する基板１１の画像とから、基板１１の設置位置を算出し、上記射影行列を用いてプロジェクタ座標系Ｐｐｒｊに変換する。これにより、基板１１上の位置をプロジェクタ座標系Ｐｐｒｊに変換することができる。なお、基板１１の設置位置の基準座標（原点）として、リファレンス撮像素子１３のセンサ中心を用いることができる。
【００４０】
再度図１２を参照して、ステップＳ２の実行後、ロボットコントローラ３０は、ロボットハンド２０に、トレイ１２から実装部品１４を把持させる（ステップＳ３）。次に、ロボットコントローラ３０は、データベースなどに格納されている実装部品１４の実装位置データ（指令値）と、ステップＳ２で算出した基板１１の設置位置とを用いて、実装部品１４の挿入位置の上空に実装部品が移動するように、ロボットハンド２０を制御する（ステップＳ４）。ステップＳ４では、ロボットハンド２０の位置の修正前であるので、ロボットハンド２０の位置に誤差が含まれる場合がある。ステップＳ４の実行後、ロボットハンド２０の制御主体が、ロボットコントローラ３０からコントローラ６０に切り替わる（ステップＳ５）。
【００４１】
次に、コントローラ６０は、プロジェクタ４０が投影する交差パターンを撮像素子２２で撮像することによって、ロボットハンド２０の現在位置を確認する（ステップＳ６）。図１４（ａ）〜図１４（ｄ）は、ステップＳ６の詳細を例示する図である。以下、図１４（ａ）〜図１４（ｄ）を参照しつつ、ステップＳ６の詳細について説明する。
【００４２】
図１４（ａ）〜図１４（ｄ）は、撮像素子２２に交差パターンを投影する手順について説明する図である。まず、コントローラ６０は、図１４（ａ）〜図１４（ｃ）で例示するように、Ｘ軸方向に延びる線パターンをＹ軸方向に徐々に移動させる。例えば、コントローラ６０は、当該線パターンのＹ軸座標を０ピクセルから４８０ピクセルへと移動させることを繰り返す。コントローラ６０は、撮像素子２２の撮像結果として当該線パターンを検出した場合、検出時点での当該線パターンのＹ軸座標（プロジェクタ座標系Ｐｐｒｊ）を得る。コントローラ６０は、Ｙ軸方向に延びる線パターンについても同様の処理を行い、当該線パターンのＸ軸座標（プロジェクタ座標系Ｐｐｒｊ）を得る。コントローラ６０は、これら２本の線パターンの検出を独立して行ってもよいが、同時に行ってもよい。
【００４３】
得られた２本の線パターンの交点がプロジェクタ座標系Ｐｐｒｊにおいて（Ｘ，Ｙ）＝（４０ピクセル，４５０ピクセル）であったとする。この場合、上記交点は、照射面の照射範囲において、最近接の角から（５０ｍｍ，３７．５ｍｍ）の位置となる。ロボットハンド２０の位置がロボットハンド２０への指令値からずれていれば、撮像画像において上記交点が指定値に対応する位置からずれることになる。このずれ量を補正することによって、高い精度でロボットハンド２０の位置を補正することができる。
【００４４】
再度図１２を参照して、ステップＳ６の実行後、コントローラ６０は、補正テーブルを用いてプロジェクタ４０のレンズの歪み補正処理を行う（ステップＳ７）。図１５（ａ）〜図１６（ｂ）はステップＳ７の詳細を説明する図である。図１５（ａ）〜図１５（ｄ）は、補正テーブルの作成手順を例示する図である。
【００４５】
まず、図１５（ａ）で例示するように、プロジェクタ４０から３次元測定器８０に格子パターンを照射する。３次元測定器８０は、例えば±０．００１μｍの高い測定精度を有する。図１５（ｂ）は、３次元測定器８０と照射パターンとの関係を例示する図である。図１５（ｂ）の格子パターンは、プロジェクタ４０の焦点深度における照射面の空間上のパターンである。３次元測定器８０には、撮像素子８１が固定されている。図１５（ｂ）は、撮像素子８１近傍の拡大図である。
【００４６】
この撮像素子８１を、プロジェクタ４０の照射面において一定間隔（例えば５ｍｍ）で移動させる。撮像素子８１の位置は、上記ステップＳ６と同様の手順により測定することができる。３次元測定器８０の測定値（Ｐｒｅａｌ）と撮像素子８１の測定値（Ｐｌｅｎｓ）とを１組とすることで、図１５（ｄ）で例示するような補正テーブルを作成することができる。
【００４７】
図１６（ａ）は、上記ステップＳ７の詳細を表すフローチャートの一例である。図１６（ａ）で例示するように、コントローラ６０は、ステップＳ６で算出した現在位置をＰｎｏｗとする（ステップＳ２１）。次に、コントローラ６０は、図１６（ｂ）で例示するように、Ｐｎｏｗを包含する補正テーブル領域の左下座標から補正テーブルのＰｌｅｎｓとＰｒｅａｌとを読み出し、補正量Ｐｏｆｆｓｅｔ＝Ｐｌｅｎｓ−Ｐｒｅａｌを求める（ステップＳ２２）。次に、コントローラ６０は、補正量Ｐｏｆｆｓｅｔを用いてＰｎｏｗの補正位置Ｐｎｏｗ´を求める（ステップＳ２３）。補正位置Ｐｎｏｗ´は、Ｐｎｏｗ−Ｐｏｆｆｓｅｔである。
【００４８】
再度図１２を参照して、ステップＳ６で確認された現在位置が目標位置（指令値に対応する位置）であるか否かを判定する（ステップＳ８）。以下、ステップＳ８の詳細について説明する。図１７は、指令値に対応する目標位置ＣＰ１とロボットハンド２０の実際の位置（交差パターンの交点）ＬＰ１との関係を例示する図である。目標位置ＣＰ１は、撮像素子２２の撮像画像の中心（カメラ中心）であるとする。撮像素子２２の仕様が、サイズ：１／２、有効画素数：７６８×４９４、ピクセルサイズ：８．４μｍ×９．８μｍであるとする。この場合において、撮像素子２２の座標において位置ＬＰ１が（４００ピクセル，２７０ピクセル）であったとする。目標位置ＣＰ１の座標は（７６８／２ピクセル，４９４／２ピクセル）であるため、位置ＬＰ１から目標位置ＣＰ１に向かうベクトルＡは、（１６ピクセル，２３ピクセル）＝（１６×８．４μｍ，２３×９．８μｍ）＝（１３４．４μｍ，２２５．４μｍ）となる。ステップＳ６においては、このベクトルＡのスカラ量がしきい値未満となったか否かを判定すればよい。
【００４９】
再度図１２を参照して、ステップＳ８で「Ｎｏ」と判定された場合、コントローラ６０は、目標位置と現在位置の差分（上記ベクトルＡ）だけ、ロボットハンド２０を移動させる（ステップＳ９）。上記の例では、ロボットハンド２０の修正先の位置は、（３７．５ｍｍ＋０．１３４４ｍｍ，５０＋０．２２５４ｍ）＝（３７．６３４４ｍｍ，５０．２２５４ｍｍ）となる。この位置までロボットハンド２０を移動させることになる。その後、ステップＳ６から再度実行される。
【００５０】
ステップＳ８で「Ｙｅｓ」と判定された場合、ロボットハンド２０の制御主体が、コントローラ６０からロボットコントローラ３０に切り替わる（ステップＳ１０）。次に、ロボットコントローラ３０は、ロボットハンド２０を下降させ、ハンド部２１に実装部品１４を基板１１のソケットに挿入させる（ステップＳ１１）。次に、ロボットコントローラ３０は、ハンド部２１に実装部品１４を解放させ、ロボットハンド２０を上昇させる（ステップＳ１２）。その後、図１２のフローチャートは終了する。
【００５１】
本実施例によれば、ハンド部２１の撮像素子２２にプロジェクタ４０から基準パターンが投影される。プロジェクタ４０の照射範囲は広いことから、ロボットハンド２０の広い移動空間に前記基準パターンを投影することができる。また、撮像素子２２から得られた画像情報内の前記基準パターンの位置情報とプロジェクタ４０の座標系の位置情報とに基づいてロボットハンド２０の位置が修正される。この場合、高い精度でロボットハンド２０の位置を修正することができる。基準パターンは、交差線などの線パターンに限られず、種々の模様であってもよい。
【００５２】
また、リファレンス撮像素子１３の撮像画像から得られた振動を用いて撮像素子２２の撮像画像における振動をキャンセルすることで、プロジェクタ４０の振動の影響を抑制することができる。また、基板１１にプロジェクタ４０からパターンを投影し、カメラ５０ａ，５０ｂから得られた画像情報内における前記パターンの情報を得ることで、基板１１の設置位置を取得することができる。なお、プロジェクタ４０の基準パターンの焦点距離が広くない場合には、位置修正を行う際に、ハンド部２１を基板１１の近傍（所定距離内）に配置することが好ましい。
【００５３】
（他の例）
図１８は、コントローラ６０のハードウェア構成を説明するためのブロック図である。図１８で例示するように、コントローラ６０は、ＣＰＵ２０１、ＲＡＭ２０２、記憶装置２０３、インタフェース２０４などを備える。これらの各機器は、バスなどによって接続されている。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１は、中央演算処理装置である。ＣＰＵ２０１は、１以上のコアを含む。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２は、ＣＰＵ２０１が実行するプログラム、ＣＰＵ２０１が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置２０３は、不揮発性記憶装置である。記憶装置２０３として、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリなどのソリッド・ステート・ドライブ（ＳＳＤ）、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。ＣＰＵ２０１が記憶装置２０３に記憶されたロボットハンド位置修正プログラムを実行することによって、コントローラ６０の機能が実現される。ロボットコントローラ３０もコントローラ６０と同様の構成を有していてもよい。または、コントローラ６０およびロボットコントローラ３０は、専用の回路などのハードウェアであってもよい。
【００５４】
上記各例において、撮像素子２２がハンド部に設けられた第１撮像素子の一例として機能する。プロジェクタ４０が、第１撮像素子に基準パターンを投影するプロジェクタの一例として機能する。コントローラ６０が、第１撮像素子から得られた画像情報内の基準パターンの情報を基に、ロボットハンドの位置修正を行う修正部の一例として機能する。リファレンス撮像素子１３が、プロジェクタの照射範囲に配置された第２撮像素子の一例として機能する。カメラ５０ａ，５０ｂが、ロボットハンドの作業対象を撮像する第３撮像素子の一例として機能する。
【００５５】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５６】
１０  作業台
１１  基板
１２  トレイ
１３  リファレンス撮像素子
２０  ロボットハンド
２１  ハンド部
２２  撮像素子
３０  ロボットコントローラ
４０  プロジェクタ
５０ａ，５０ｂ  カメラ
６０  コントローラ
１００  組立装置
【図１】
0006582405.tif 000002
【図２】
0006582405.tif 000003
【図３】
0006582405.tif 000004
【図４】
0006582405.tif 000005
【図５】
0006582405.tif 000006
【図６】
0006582405.tif 000007
【図７】
0006582405.tif 000008
【図８】
0006582405.tif 000009
【図９】
0006582405.tif 000010
【図１０】
0006582405.tif 000011
【図１１】
0006582405.tif 000012
【図１２】
0006582405.tif 000013
【図１３】
0006582405.tif 000014
【図１４】
0006582405.tif 000015
【図１５】
0006582405.tif 000016
【図１６】
0006582405.tif 000017
【図１７】
0006582405.tif 000018
【図１８】
0006582405.tif 000019