(57)【要約】【課題】ロボットの生産作業中に教示点を補正する。【解決手段】ＣＰＵ４０１は、ロボット２００を教示点の情報に従って動作させる（動作処理）。ＣＰＵ４０１は、動作処理にてロボット２００の動作に用いた教示点が撮像用教示点である場合には、ステレオカメラ３００に撮像を行わせ、ワークＷ１の特徴点が写り込んだ撮像画像を、ステレオカメラ３００から取得する（撮像処理）。ＣＰＵ４０１は、撮像画像からワークＷ１の特徴点の位置を計測する（計測処理）。ＣＰＵ４０１は、計測処理による計測結果に基づいて、特徴点の基準に対するずれ量を求める（計算処理）。ＣＰＵ４０１は、ロボット２００の次の動作に用いる教示点の情報を、ずれ量に応じて補正する（補正処理）。ＣＰＵ４０１は、これらの処理を、ロボット２００に生産作業を行わせながら、繰り返し実行する。【選択図】図１
2018001393.tif 000002
【特許請求の範囲】
【請求項１】
生産作業を行うロボットと、
前記ロボットに取り付けられた撮像部と、
前記撮像部に前記生産作業の作業対象物を撮像させる姿勢を前記ロボットにとらせる撮像用教示点を複数含む、一連の複数の教示点の情報を記憶する記憶部と、
前記記憶部から複数の教示点の情報を読み出し、前記ロボットに前記生産作業を行わせるよう前記ロボットの動作を制御する制御部と、を備え、
前記制御部は、
前記ロボットを教示点の情報に従って動作させる動作処理と、
前記動作処理にて前記ロボットの動作に用いた教示点が前記撮像用教示点である場合には、前記撮像部に撮像を行わせ、前記作業対象物の特徴点が写り込んだ撮像画像を、前記撮像部から取得する撮像処理と、
前記撮像画像から前記作業対象物の特徴点の位置を計測する計測処理と、
前記計測処理による計測結果に基づいて、前記特徴点の基準に対するずれ量を求める計算処理と、
前記ロボットの次の動作に用いる教示点の情報を、前記ずれ量に応じて補正する補正処理とを、前記ロボットに前記生産作業を行わせながら、繰り返し実行することを特徴とするロボット装置。
【請求項２】
前記制御部は、
前記動作処理にて前記ロボットの動作に用いた教示点が前記撮像用教示点ではなく、かつ以前に前記ずれ量を求めているときには、前記ロボットの次の動作に用いる教示点の情報を、以前に求めた前記ずれ量に応じて補正する処理を実行することを特徴とする請求項１に記載のロボット装置。
【請求項３】
前記記憶部は、更に、前記撮像用教示点の情報と対応付けて前記撮像部の撮像可能範囲よりも狭い部分範囲の情報を記憶しており、
前記制御部は、前記撮像処理では、前記撮像画像として前記部分範囲の画像を取得することを特徴とする請求項１又は２に記載のロボット装置。
【請求項４】
前記記憶部に記憶させる前記部分範囲の情報は、ユーザの操作に従って設定されることを特徴とする請求項３に記載のロボット装置。
【請求項５】
前記記憶部に記憶させる複数の教示点の情報を、仮想ロボットを用いた教示によりユーザの操作に従い生成する教示部を、更に備えたことを特徴とする請求項１乃至４のいずれか１項に記載のロボット装置。
【請求項６】
前記制御部は、前記動作処理にて前記ロボットの動作に用いた教示点の情報と、前記補正処理にて補正した次の教示点の情報との間を補間し、該補間した情報に従って前記ロボットを動作させることを特徴とする請求項１乃至５のいずれか１項に記載のロボット装置。
【請求項７】
仮想ロボットを用いた教示により教示点列の情報をユーザの操作に従い生成し、該教示点列の間を補間して、前記記憶部に記憶させる複数の教示点の情報を生成する教示部を、更に備えたことを特徴とする請求項１乃至４のいずれか１項に記載のロボット装置。
【請求項８】
前記制御部は、
前記記憶部から読み出した複数の教示点を補間して新たな複数の教示点の情報を生成し、かつ前記記憶部から読み出した複数の教示点に、連続する複数の前記撮像用教示点が含まれる場合には、前記各撮像用教示点に対応付けられた部分範囲の間を補間して、新たな複数の部分範囲の情報を生成することを特徴とする請求項３又は４に記載のロボット装置。
【請求項９】
制御部が、撮像部に生産作業の作業対象物を撮像させる姿勢をロボットにとらせる撮像用教示点を複数含む、一連の複数の教示点の情報を記憶部から読み出して、前記ロボットに前記生産作業を行わせるよう前記ロボットの動作を制御するロボット制御方法であって、
前記制御部が、前記ロボットを教示点の情報に従って動作させる動作工程と、
前記制御部が、前記動作工程にて前記ロボットの動作に用いた教示点が前記撮像用教示点である場合には、前記撮像部に撮像を行わせ、前記作業対象物の特徴点が写り込んだ撮像画像を、前記撮像部から取得する撮像工程と、
前記制御部が、前記撮像画像から前記作業対象物の特徴点の位置を計測する計測工程と、
前記制御部が、前記計測工程による計測結果に基づいて、前記特徴点の基準に対するずれ量を求める計算工程と、
前記制御部が、前記ロボットの次の動作に用いる教示点の情報を、前記ずれ量に応じて補正する補正工程と、を備え、
前記動作工程、前記撮像工程、前記計測工程、前記計算工程及び前記補正工程を、前記ロボットに前記生産作業を行わせながら繰り返し実行することを特徴とするロボット制御方法。
【請求項１０】
コンピュータに請求項９に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを記録した、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに生産作業を行わせる教示点を補正する技術に関する。
【背景技術】
【０００２】
近年、人手による組立作業等の生産作業に代えて、ロボットによる生産作業が実現化されてきている。ロボットは、教示された複数の教示点に順次動作することにより、生産作業を実現している。
【０００３】
一般に、教示点を効率よく作成するために、ＣＡＤデータで生成された仮想空間上の仮想ロボットを用いて、ロボットの制御装置に教示するオフライン教示が採用されている。オフライン教示により教示点を作成する際に使用されるのは、ワーク等の作業対象物の３次元形状データ、ロボットとワークの相対位置姿勢を表すデータ等である。これらのデータは、ロボットの動作精度やワークの加工・組立誤差などの様々な誤差要因を考慮できない。したがって、オフライン教示で作成した教示点（仮想教示点）のパラメータ値は、現実のロボットで必要な教示点のパラメータ値とは大きく異なる。これらの誤差要因を考慮して予め仮想教示点を個別に補正することは、極めて困難である。
【０００４】
そこで組立作業等の生産作業でロボットを実動作させる前に、作業対象物とエンドエフェクタに治具をそれぞれ設置し、治具間の相対位置姿勢のずれが基準内に収まるようにロボットを操作装置で手動操作して、仮想教示点を修正する方法が行われる。しかし、このような手作業で行う仮想教示点の修正では、作業時間が膨大となり、生産装置の立上リードタイムが増加する原因となっていた。
【０００５】
これに対し、特許文献１では、これら複数の仮想教示点を、視覚センサを用いて補正する方法が提案されている。具体的に説明すると、まず、作業対象物に予めマーカを設置しておき、ロボットに生産作業を行わせる前に、複数の仮想教示点の中から１つの仮想教示点を選択し、ロボットを選択した仮想教示点に移動させる。そして、この状態でロボットに搭載した視覚センサで作業対象物を撮像させてマーカ位置を計測し、この計測結果から仮想教示点の補正量を取得して、複数の仮想教示点の全てを同じ補正量で補正する。生産作業では、補正した教示点によりロボットを再生運転させる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−８４６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の方法では、作業対象物が教示を行った位置からずれて設置されるような場合や、ロボットの姿勢に応じて又はロボットの経時変化により、ロボットの手先の位置姿勢のずれ量が変化するような場合には対応できない。例えばロボットの姿勢に応じて関節のねじれ角度が変化するので、ロボットの手先の位置姿勢のずれ量が変化する。またロボットの各リンクが温度変化により伸縮すると、ロボットの手先の位置姿勢のずれ量が変化する。また、ロボットの経年劣化によっても、ロボットの手先の位置姿勢のずれ量が変化する。このようにロボットの生産作業に先立って予め教示点を補正しておく方法では、さまざまな要因でロボットの手先の位置姿勢や作業対象物の位置姿勢が変化に対応することができなかった。そのため、ロボットが生産作業で作業対象物を掴み損なうなどの作業の失敗が発生するおそれがあり、前もって教示点を補正しておく方法は、精密な作業には不向きであった。
【０００８】
更に、特許文献１に記載の方法では、作業対象物が時々刻々と変化する場合（例えば振動するような場合）にも対応できない。このような場合、精密な作業を実現するためには、作業対象物が静止するまで待機する必要があり、生産のタクトタイムが長くなっていた。
【０００９】
そこで、本発明は、ロボットの生産作業中に教示点を補正することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のロボット装置は、生産作業を行うロボットと、前記ロボットに取り付けられた撮像部と、前記撮像部に前記生産作業の作業対象物を撮像させる姿勢を前記ロボットにとらせる撮像用教示点を複数含む、一連の複数の教示点の情報を記憶する記憶部と、前記記憶部から複数の教示点の情報を読み出し、前記ロボットに前記生産作業を行わせるよう前記ロボットの動作を制御する制御部と、を備え、前記制御部は、前記ロボットを教示点の情報に従って動作させる動作処理と、前記動作処理にて前記ロボットの動作に用いた教示点が前記撮像用教示点である場合には、前記撮像部に撮像を行わせ、前記作業対象物の特徴点が写り込んだ撮像画像を、前記撮像部から取得する撮像処理と、前記撮像画像から前記作業対象物の特徴点の位置を計測する計測処理と、前記計測処理による計測結果に基づいて、前記特徴点の基準に対するずれ量を求める計算処理と、前記ロボットの次の動作に用いる教示点の情報を、前記ずれ量に応じて補正する補正処理とを、前記ロボットに前記生産作業を行わせながら、繰り返し実行することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ロボットに生産作業を行わせながら、順次、次の教示点を補正していくため、ロボットによる精密な生産作業を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係るロボット装置の概略構成を示す説明図である。
【図２】第１実施形態に係るロボット装置の機能を示すブロック図である。
【図３】（ａ）は、第１実施形態において、ある仮想教示点に仮想ロボットを動作させたときの仮想ステレオカメラの位置姿勢を示す模式図である。（ｂ）は、仮想ステレオカメラが（ａ）の姿勢のときに仮想ステレオカメラの一方の仮想カメラから見える仮想画像を示す説明図である。（ｃ）は、仮想ステレオカメラが（ａ）の姿勢のときに仮想ステレオカメラの他方の仮想カメラから見える仮想画像を示す説明図である。（ｄ）は、仮想ステレオカメラの別の位置姿勢を示す模式図である。（ｅ）は、仮想ステレオカメラが（ｄ）の姿勢のときに仮想ステレオカメラの一方の仮想カメラから見える仮想画像を示す説明図である。（ｆ）は、仮想ステレオカメラが（ｄ）の姿勢のときに仮想ステレオカメラの他方の仮想カメラから見える仮想画像を示す説明図である。
【図４】（ａ）は、座標系を説明するための図である。（ｂ）は、同次変換行列ＨｎＴＨｏの求め方を説明するための図である。
【図５】（ａ）は、教示点格納部に記憶されている、仮想教示点のデータ、画像処理範囲のデータ、及び前の仮想教示点から次の仮想教示点への相対的な移動量のデータを示す説明図である。（ｂ）は、生産作業中にロボットが動作を補正する状態を、各座標系でどのような関係にあるかを示す説明図である。
【図６】生産作業をロボットに行わせているときのロボット制御方法を示すフローチャートである。
【図７】第２実施形態に係るロボット装置の機能を示すブロック図である。
【図８】教示点の補間動作と画像処理範囲の補間動作を説明するための模式図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１４】
［第１実施形態］
図１は、第１実施形態に係るロボット装置の概略構成を示す説明図である。ロボット装置１００は、生産ラインに配置される生産装置である。ロボット装置１００は、架台１５０に固定されたロボット２００と、ロボット２００に取り付けられた撮像部であるステレオカメラ３００と、ロボット２００及びステレオカメラ３００の動作を制御する制御装置４００と、を備えている。また、ロボット装置１００は、オフライン教示により教示点（仮想教示点）を生成する教示装置５００と、記憶部であるＮＡＳ６００と、を備えている。制御装置４００、教示装置５００及びＮＡＳ６００は有線ＬＡＮ６５０で接続されている。架台１５０の上には、生産作業の作業対象物であるワークＷ１を載せる置き台１６０が設けられている。ＮＡＳ６００には、教示装置５００により生成された教示点の情報が記憶される。制御装置４００は、ＮＡＳ６００から教示点の情報を読み出し、ロボット２００の動作を制御する。ユーザは、ロボット２００が配置された現場に居続ける必要はなく、ロボット２００にトラブルが生じた場合には、遠隔地に配置された教示装置５００からＮＡＳ６００の教示点の情報を修正し、ロボット２００のトラブルに対処することができる。
【００１５】
ロボット２００は、生産作業（例えば組立作業）を行うものであり、ロボットアーム２０１と、ロボットアーム２０１に取り付けられたエンドエフェクタとしてのロボットハンド２０２と、を有している。ロボットアーム２０１は、垂直多関節（例えば６関節）のロボットアームである。ロボットハンド２０２は、開閉する複数のフィンガー（ピンセット）を有しており、ワークＷ１を把持することができる。
【００１６】
ここで、ワークＷ１は、３つ以上の特徴点を有している。特徴点としては、ワークＷ１自体の形状上の特徴点、例えば穴や角であってもよいし、予め黒丸等のマーカをつけることが可能であれば、マーカを付与してもよい。
【００１７】
ステレオカメラ３００は、被写体であるワークＷ１をステレオ画像で撮像するカメラ（３次元視覚センサ）であり、２つのカメラで構成されている。ステレオカメラ３００は、ロボットハンド２０２に取り付けられている。本実施形態では、撮像部であるステレオカメラ３００は、パッシブ式のステレオ法の３次元視覚センサであるが、アクティブ式の光レーザ法、アクティブステレオ法、照度差ステレオ法の３次元視覚センサでもよい。
【００１８】
制御装置４００及び教示装置５００は、それぞれコンピュータで構成されている。各装置４００，５００は、汎用コンピュータの構成要素を組み合わせることで構成されている。制御装置４００は、ロボット制御処理と画像処理を行う機能を有している。
【００１９】
制御装置４００には、液晶モニタ等のディスプレイで構成された表示装置４１１と、キーボードやマウス等で構成された入力装置４２１とが接続されている。表示装置４１１には、ロボット２００の状態等が表示される。入力装置４２１は、ユーザがロボットアーム２０１のリンクパラメータ等を入力したり、緊急時にロボット２００の動作を停止させる操作を行ったりする操作装置である。
【００２０】
また、制御装置４００には、表示装置４１１とは別に、液晶モニタ等のディスプレイで構成された表示装置４１２と、入力装置４２１とは別に、キーボードやマウス等で構成された入力装置４２２とが接続されている。表示装置４１２には、画像処理状態や画像処理結果が表示される。入力装置４２２は、画像処理を行う上でユーザが各種パラメータを指定できる操作装置である。なお、表示装置４１１，４１２を、別々のディスプレイで構成したが、大画面の１つのディスプレイで構成してもよい。また、入力装置４２１，４２２についても、共通化してもよい。
【００２１】
また、教示装置５００には、液晶モニタ等のディスプレイで構成された表示装置５１１と、ジョイスティックやティーチングペンダントで構成された入力装置５２１とが接続されている。
【００２２】
制御装置４００は、制御部であるＣＰＵ４０１、メモリ４０２、ＨＤＤ４０３、ロボット制御通信ボード４０４、画像入力ボード４０５、画像表示ボード４０６，４０７、ＵＳＢ通信ボード４０８及びＬＡＮボード４０９を有して構成されている。メモリ４０２を除く各構成要素は、ＣＰＵ４０１から延びたＰＣＩＥバス４５０により接続されている。
【００２３】
ＣＰＵ４０１は、マルチのＣＰＵ又はマルチコアのＣＰＵであり、複数の演算を並列処理することができる。即ち、本実施形態では、ＣＰＵ４０１は、ステレオカメラ３００でワークＷ１を撮像して得られた画像データの画像処理と、ロボット２００の動作の制御処理とをリアルタイムに並行して行う。そのため、本実施形態では、画像処理とロボット制御処理が、それぞれ異なるＣＰＵまたはＣＰＵコアで実行される。これにより、画像処理とロボット制御処理を互いに時間的に干渉せずに独立して行うことができ、画像処理とロボット制御処理において、互いにデータのやりとりを高速で行うことができる。
【００２４】
メモリ４０２は、ＲＡＭ及びＲＯＭで構成され、ＣＰＵ４０１に接続されている。ＨＤＤ４０３には、後述するロボット制御方法の各工程を実行するためのプログラム４１０が記録されている。
【００２５】
ロボット制御通信ボード４０４は、ロボット２００に接続され、ロボット２００と通信を行うインタフェースである。画像入力ボード４０５は、ステレオカメラ３００に接続され、ステレオカメラ３００と通信を行うインタフェースである。画像表示ボード４０６は、表示装置４１１に接続され、表示装置４１１に表示させる画像データを送信するインタフェースである。画像表示ボード４０７は、表示装置４１２に接続され、表示装置４１２に表示させる画像データを送信するインタフェースである。ＵＳＢ通信ボード４０８は、入力装置４２１，４２２が接続され、入力装置４２１，４２２における入力データを受信するインタフェースである。ＬＡＮボード４０９は、他の装置５００，６００とデータ通信を行うインタフェースであり、有線ＬＡＮ６５０が接続されている。
【００２６】
教示装置５００は、教示部であるＣＰＵ５０１、メモリ５０２、ＨＤＤ５０３、ＬＡＮボード５０４、画像表示ボード５０５及びＵＳＢ通信ボード５０６を有して構成されている。メモリ５０２を除く各構成要素は、ＣＰＵ５０１から延びたＰＣＩＥバス５５０により接続されている。
【００２７】
ＣＰＵ５０１は、演算処理を行う。メモリ５０２は、ＲＡＭ及びＲＯＭで構成され、ＣＰＵ５０１に接続されている。ＨＤＤ５０３には、オフライン教示の演算処理をＣＰＵ５０１に行わせるためのプログラム５１０が記録されている。
【００２８】
画像表示ボード５０５は、表示装置５１１に接続され、表示装置５１１に表示させる画像データを送信するインタフェースである。ＵＳＢ通信ボード５０６は、入力装置５２１が接続され、入力装置５２１における入力データを受信するインタフェースである。ＬＡＮボード５０４は、他の装置４００，６００とデータ通信を行うインタフェースであり、有線ＬＡＮ６５０が接続されている。
【００２９】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ４０３，５０３であり、ＨＤＤ４０３，５０３にプログラム４１０，５１０が格納される場合について説明するが、これに限定するものではない。プログラム４１０，５１０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、ＲＯＭや、記録ディスク、外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、ＵＳＢメモリ等の不揮発性メモリ等を用いることができる。
【００３０】
図２は、第１実施形態に係るロボット装置の機能を示すブロック図である。図１に示す制御部としてのＣＰＵ４０１が、ＨＤＤ４０３に格納されたプログラム４１０に従って動作することで、画像処理部４６１、範囲指定部４６２、ロボット制御部４６３及び教示データ演算部４６４として機能する。図１に示すＮＡＳ６００は、教示点格納部６６０として機能する。図１に示す教示部としてのＣＰＵ５０１が、ＨＤＤ５０３に格納されたプログラム５１０に従って動作することで、教示点作成部５６１として機能する。図１に示すＨＤＤ５０３は、データ格納部５６２として機能する。
【００３１】
ここで、ロボット２００の手先、つまりエンドエフェクタであるロボットハンド２０２には、基準点であるツールセンターポイント（ＴＣＰ）が設定される。ＴＣＰは、位置を表す３つのパラメータ（ｘ，ｙ，ｚ）と、姿勢を表す３つのパラメータ（α，β，γ）、即ち６つのパラメータ（ｘ，ｙ，ｚ，α，β，γ）で表され、タスク空間上では、１つの点としてみなすことができる。つまり、タスク空間は、これら６つの座標軸で規定された空間である。このＴＣＰの動作目標位置として、教示点が設定される。
【００３２】
ロボット制御部４６３は、補間命令に従って教示点間を補間し、補間により得られた教示点（補間教示点）を含む複数の教示点からなる、ＴＣＰが辿る軌道データを生成する。ここで、教示点間を補間する補間方法としては、直線補間、円弧補間、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線など、種々の方法がある。
【００３３】
ロボット制御部４６３は、軌道データから各関節の関節角度に対応する角度指令に逆運動学計算に基づき変換する。そして、ロボット制御部４６３は、各関節角度に対応する角度値を各関節に配置した不図示のロータリーエンコーダから取得し、各関節の角度値が角度指令に近づくように、ロボット２００（ロボットアーム２０１）の動作を制御する。
【００３４】
データ格納部５６２には、ロボットアーム２０１、ロボットハンド２０２、ステレオカメラ３００、架台１５０、置き台１６０及びワークＷ１の大きさや配置等の３次元形状データであるＣＡＤデータが予め格納（記憶）されている。
【００３５】
教示点作成部５６１は、ＣＡＤデータで仮想空間を作り出し、ユーザの操作に従い、仮想空間中の仮想ロボットアームや仮想ロボットハンドを動かし、ロボット２００の軌道データの基となる補間前の教示点（仮想教示点）を作成する。
【００３６】
教示点作成部５６１への指示は、ジョイスティックやティーチングペンダント等の入力装置５２１により作業者であるユーザが行う。教示点作成部５６１は、表示装置５１１に仮想ロボットアームや仮想ロボットハンド、仮想作業対象物である仮想ワークを仮想空間として表示させる。そして、教示点作成部５６１は、ユーザの指示に従い、仮想ロボットアームや仮想ロボットハンド、仮想ワークを動かし、その結果を表示装置５１１に表示させる。したがって、ユーザは、表示装置５１１を見ながら、入力装置５２１を用いて、仮想ロボットアームや仮想ロボットハンドを動かすことができる。また、教示点作成部５６１は、ユーザの指示に従い、表示装置５１１に表示させる仮想空間の視点を変えたり、ポイントを拡大したりする。これにより、ユーザは詳細な位置関係を確認することができる。
【００３７】
教示点作成部５６１は、ユーザの操作に従い、生成した仮想教示点を、順次、教示点格納部６６０に格納させる。このようにして教示点格納部６６０には、教示点作成部５６１で作成された一連の複数の仮想教示点が記憶される。
【００３８】
具体的には、ユーザが入力装置５２１を用いて仮想ロボットアームや仮想ロボットハンドを動かす指示と、教示点の記録指示を教示点作成部５６１に行うことで、仮想教示点が設定される。これにより教示点作成部５６１は、教示点格納部６６０に仮想教示点の情報を記憶させる。この教示作業により、ロボット２００に生産作業を行わせる始点から終点までの一連の複数の仮想教示点が作成され、複数の仮想教示点が教示点格納部６６０に記憶される。
【００３９】
教示点格納部６６０に記憶されている仮想教示点は、データ格納部５６２に格納された各種のＣＡＤデータに基づき、仮想空間上で生成した理想の教示点である。そのため、実際のロボットアーム２０１やロボットハンド２０２に、その仮想教示点を実際のロボット座標に変換して動作させただけでは、ワークＷ１に対して、適切な作業を行うことができないことがある。これは、以下の１〜８の誤差要因があり、作業に必要な十分な精度を確保できないためである。
【００４０】
１．ロボット２００とワークＷ１との位置関係を表すデータの誤差。（例えば、ワークＷ１がトレイ等に置かれた機械部品等である場合、ワークＷ１がいつでも精密な位置関係でトレイに置かれるとは限らない。）
２．ロボット２００自体の組み立て誤差。
３．ロボットアーム２０１自体の重量やロボットハンド２０２及びステレオカメラ３００の重量によるロボットアーム２０１の撓みからくる誤差。
４．ロボットハンド２０２の加工、組み立てに起因する誤差。
５．ワークＷ１の加工誤差。
６．ロボット２００の動作により生じる誤差。（例えば、内部歯車のバックラッシュに起因するヒステリシス誤差。）
７．ロボット２００の動作環境温度により各部機械部品の熱膨張が発生することを起因とする温度ドリフト。
８．ロボット２００の経年使用により発生する経年誤差。
【００４１】
これら１〜８の誤差要因を予め正確に評価して、仮想教示点に反映することは困難であり、特に、７，８の誤差要因のように時々刻々と変化する誤差に関しては、予め仮想教示点に反映することは不可能である。
【００４２】
本実施形態では、上記１〜８の誤差要因に対応するため、生産作業中に、画像処理部４６１は、ワークＷ１をステレオカメラ３００に撮像させる。画像処理部４６１は、ワークＷ１の特徴点が写り込んだ撮像画像を画像処理することで、実空間上のロボットハンド２０２を基準としたワークＷ１の特徴点の位置を計測する。
【００４３】
教示データ演算部４６４は、教示点の補正を行う機能ブロックである。教示データ演算部４６４は、仮想空間上の仮想ロボットハンドを基準とした仮想ワークの仮想特徴点の位置と、実空間上のロボットハンド２０２を基準としたワークＷ１の特徴点の位置とを比較する。教示データ演算部４６４は、仮想特徴点と特徴点との相対的な位置ずれ量を相殺するようにロボット２００の次の仮想教示点を補正することにより、ロボット２００の次の教示点を求める。補正後の教示点は、ロボット制御部４６３にて入力され、ロボット２００の制御の目標値となる。即ち、ロボット制御部４６３は、ロボット２００の動作に用いた教示点の情報と、補正した次の教示点の情報との間を補間し、この補間により得られた補間教示点の情報に従って、次の補正後の教示点までロボット２００を動作させる。
【００４４】
ここで、教示点格納部６６０に記憶させる一連の複数の教示点には、ステレオカメラ３００にワークＷ１を撮像させる姿勢をロボット２００にとらせる撮像用教示点が複数含まれている。つまり、ロボット２００を撮像用教示点に従って動作させると、ステレオカメラ３００の撮像可能範囲（画角）にワークＷ１が入り込むことになり、ステレオカメラ３００によりワークＷ１を撮像することができる。
【００４５】
ところで、ワークＷ１の特徴点の位置を計測する画像処理を、画像全領域に対して行うのは非効率であり、処理時間も長くなる。そこで、第１実施形態では、画像処理部４６１は、ワークＷ１が写り込んだ撮像画像として、ステレオカメラ３００での撮像により得られた全範囲の画像のうち部分範囲（画像処理範囲）の画像を取得する。具体的には、画像処理部４６１は、ステレオカメラ３００から得られた全範囲の画像中、範囲指定部４６２により指定された画像処理範囲の画像のみを抜き出して画像処理をする。ステレオカメラ３００の撮像可能範囲よりも狭い画像処理範囲の情報（座標値）は、予め教示点格納部６６０に教示点と対応付けて記憶させておく。範囲指定部４６２は、ロボット制御部４６３から得られた教示点の情報と、この教示点の情報に対応付けられた画像処理範囲の情報に基づき、画像処理範囲を画像処理部４６１に指示する。これにより、画像処理部４６１は、画像処理範囲の画像をワークＷ１が写り込んだ撮像画像として取得することができる。
【００４６】
この教示点格納部６６０に記憶させる、撮像可能範囲よりも狭い画像処理範囲の情報（座標値）は、教示点作成部５６１にて仮想教示点と共に作成する。
【００４７】
以下、画像処理範囲の設定動作について説明する。教示点作成部５６１は、仮想教示点を設定したときに、仮想ロボットに搭載された仮想ロボットカメラから見える仮想画像を、表示装置５１１に表示させる。教示点作成部５６１は、ユーザによる入力装置５２１の操作により仮想画像の中で画像処理範囲が指定されるのを待ち受け、画像処理範囲が指定されたとき、画像処理範囲の情報（座標値）も、仮想教示点の情報と対応付けて教示点格納部６６０に記憶させる。
【００４８】
第１実施形態では、撮像部は左右２つのカメラを有するステレオカメラ３００である。したがって、各カメラでワークＷ１を撮像することにより２つの撮像画像が得られるため、仮想画像も２つ存在することになる。即ち、１つの仮想教示点の情報に対して、２つの画像処理範囲の情報を設定することになる。
【００４９】
図３（ａ）は、ある仮想教示点に仮想ロボットを動作させたときの仮想ステレオカメラ３００Ｉの位置姿勢を示す模式図である。図３（ｂ）は、仮想ステレオカメラ３００Ｉが図３（ａ）の姿勢のときに仮想ステレオカメラ３００Ｉの一方の仮想カメラから見える仮想画像を示す説明図である。図３（ｃ）は、仮想ステレオカメラ３００Ｉが図３（ａ）の姿勢のときに仮想ステレオカメラ３００Ｉの他方の仮想カメラから見える仮想画像を示す説明図である。
【００５０】
また、図３（ｄ）は、仮想ステレオカメラ３００Ｉの別の位置姿勢を示す模式図である。図３（ｅ）は、仮想ステレオカメラ３００Ｉが図３（ｄ）の姿勢のときに仮想ステレオカメラ３００Ｉの一方の仮想カメラから見える仮想画像を示す説明図である。図３（ｆ）は、仮想ステレオカメラ３００Ｉが図３（ｄ）の姿勢のときに仮想ステレオカメラ３００Ｉの他方の仮想カメラから見える仮想画像を示す説明図である。
【００５１】
図３（ａ）及び図３（ｄ）に示すように、仮想ワークＷＩ１に対する仮想ステレオカメラ３００Ｉの位置姿勢が変化すると、仮想ステレオカメラ３００Ｉの左右２つの仮想ステレオカメラから見える仮想ワークＷＩ１の大きさ及び位置が変化する。即ち、仮想画像ＩＲ，ＩＬに写る仮想ワークＷＩ１の大きさ及び位置が図３（ｂ）、図３（ｃ）、図３（ｅ）及び図３（ｆ）に示すように変化する。
【００５２】
教示点作成部５６１は、ユーザによる入力装置５２１の操作に従い、仮想ロボットを仮想教示点に動作させるとともに、そのときに仮想ステレオカメラから見える仮想画像ＩＲ，ＩＬを表示装置５１１に表示させる。ユーザは、この表示を見て、仮想ワークＷＩ１を包含するよう、部分範囲である画像処理範囲ＶＲ，ＶＬを設定すればよい。教示点作成部５６１は、仮想画像ＩＲ，ＩＬからユーザによる入力装置５２１の操作により指定された部分範囲である画像処理範囲ＶＲ，ＶＬの情報を、仮想教示点の情報と対応付けて、教示点格納部６６０に記憶させる。
【００５３】
ここで、教示点作成部５６１で作成される仮想画像ＩＲ，ＩＬは、実空間と同じにはならないため、画像処理範囲ＶＲ，ＶＬは、余裕を見て設定するのが好ましい。画像処理範囲ＶＲ，ＶＬは、推定されるワークＷ１の変動量分以上の大きさで設定すればよい。例えば、推定される変動分の２倍以上広めに設定しておけばよい。
【００５４】
以上、画像処理部４６１は、画像全体を画像処理するのではなく、部分範囲の画像を処理すればよいので、大幅に画像処理時間を短縮することが可能になる。これは、実動作中のロボット２００の制御にフィードバックする上で、遅れ要素を大きく削減できるため、大幅にロボット２００の応答性を向上させることができる。
【００５５】
第１実施形態では、画像処理範囲と対応付けられた教示点が、撮像用教示点である。画像処理部４６１は、ロボット２００を動作させたときに用いた教示点が撮像用教示点であれば、ステレオカメラ３００にワークＷ１の撮像を行わせる。換言すれば、画像処理部４６１は、ロボット２００を動作させたときに用いた教示点が撮像用教示点でなければ、ステレオカメラ３００に撮像動作を行わせない。
【００５６】
本実施形態では、画像処理部４６１は、一定サイズの画像をステレオカメラ３００から取り込み、取得した画像の中から画像処理範囲の画像を抽出する。なお、ステレオカメラ３００自体に、撮像する画像処理範囲を指示してステレオカメラ３００に画像処理範囲の画像のみを出力させることも可能である。この場合、ステレオカメラ３００から画像処理部４６１に画像を転送する転送時間が削減されるため、ロボット２００の高速な応答動作が可能となる。
【００５７】
また、本実施形態では、画像処理範囲を、ユーザが手動で指示する場合について説明したが、これに限定するものではなく、教示点作成部５６１がユーザに設定された仮想教示点に応じて自動的に作成してもよい。データ格納部５６２には、予めワークＷ１の大きさ等のＣＡＤデータが格納されているので、教示点作成部５６１は、仮想ワークが写り込む画像処理範囲を、予め設定した所定の条件で自動的に決定し、教示点格納部６６０に記憶させればよい。
【００５８】
ここで、教示点作成部５６１は、仮想教示点に対応付けて画像処理範囲を設定した場合、この仮想教示点に仮想ロボットを動作させたときの仮想ロボットハンドに対する仮想ワークの仮想特徴点の相対的な位置も計算し、教示点格納部６６０に記憶させる。この仮想特徴点の位置が、実際のステレオカメラ３００で撮像したときのワークＷ１の位置ずれ量を算出するときの基準となる。
【００５９】
仮に、仮想空間上で設定した仮想教示点に従ってロボット２００を動作させた場合、前述したとおりロボット２００には様々な誤差要因が含まれており、ロボットハンド２０２の位置に数［ｍｍ］程度の誤差が生じてしまう。
【００６０】
本実施形態では、この誤差を解消するため、教示データ演算部４６４は、ステレオカメラ３００の計測結果を用いてロボット２００に動作させる次の教示点の情報（パラメータ値）を順次補正する。ここで、本実施形態では、ＮＡＳ６００に記憶されている教示点の情報を補正するのではなく、ＮＡＳ６００から読み出した教示点の情報を補正する。
【００６１】
以下、教示データ演算部４６４の機能について説明する。ここで、ロボットには複数の座標系が存在する。図４（ａ）は、座標系を説明するための図である。作業対象物であるワークＷ１には、３つ以上の特徴点Ｑｉ（ｉ＝０，１，２）を用意しておく。
【００６２】
ステレオカメラ３００を用いたロボットの動作を説明するには、３つの座標系を考える必要がある。座標系Ｍは、ワークＷ１に設けた特徴点Ｑｉの座標系（特徴点座標系）である。座標系Ｃは、ステレオカメラ３００の座標系（カメラ座標系）である。座標系Ｈは、ロボット２００の手先、即ちロボットハンド２０２の座標系（ハンド座標系）である。
【００６３】
本実施形態では、仮想空間を示す座標系ｏと実空間を示す座標系ｎがある。この結果、以下の６つの座標系を考える必要がある。即ち、仮想空間における仮想特徴点座標系Ｍｏ、仮想カメラ座標系Ｃｏ及び仮想ハンド座標系Ｈｏと、実空間における実特徴点座標系Ｍｎ、実カメラ座標系Ｃｎ及び実ハンド座標系Ｈｎである。更に、特徴点Ｑｉも同様に、仮想空間における特徴点ＭｏＱｉと、実空間における特徴点ＭｎＱｉが存在する。これらの特徴点ＭｏＱｉ，ＭｎＱｉは、いずれも特徴点座標系Ｍである。なお、左上付き文字は、特徴点がどの座標系で記述されているかを示す。
【００６４】
ここで、仮想ハンド座標系Ｈｏに対する実ハンド座標系Ｈｎのずれ量を求めることは、このずれ量を相殺する補正量を求めることと等価である。このずれ量を相殺する補正量は、ＨｎＴＨｏという同次変換行列で表される。
【００６５】
このＨｎＴＨｏは、実ハンド座標系Ｈｎから見た任意の点を、仮想ハンド座標系Ｈｏに変換する同次変換行列を示す。同次変換行列ＨｎＴＨｏは、回転３成分、並進３成分の全６自由度の移動量を示す。つまり、同次変換行列ＨｎＴＨｏが、今回の教示点に従うロボット２００の動作で発生したずれ量を相殺する、次回の仮想教示点を補正する補正量である。ＣＰＵは、ずれ量、つまり補正量として、同次変換行列ＨｎＴＨｏを求める。
【００６６】
以下、同次変換行列ＨｎＴＨｏの求め方について具体的に説明する。図４（ｂ）は、同次変換行列ＨｎＴＨｏの求め方を説明するための図である。まず、仮想特徴点座標系Ｍｏと仮想ハンド座標系Ｈｏは、以下の関係が成立する。
【００６７】
ＨｏＱｉ＝ＨｏＴＭｏＭｏＱｉ    （ｉ＝０，１，２）    ・・・（１）
式（１）の関係は、ＨＤＤ５０３であるデータ格納部５６２に記憶されており、教示点作成部５６１は式（１）を解くことで、予め同次変換行列ＨｏＴＭｏを求めておく。
【００６８】
次に、画像処理部４６１は、実空間においてステレオカメラ３００で撮像した撮像画像からワークＷ１の特徴点ＣｎＰｉ（ｉ＝０，１，２）の位置を求める。
【００６９】
カメラ−ハンド間のキャリブレーション行列をＨｎＴＣｎとすると、実ハンド座標系Ｈｎにおける各特徴点ＨｎＱｉの位置は、以下のように表すことができる。
【００７０】
ＨｎＱｉ＝ＨｎＴＣｎＣｎＱｉ    （ｉ＝０，１，２）    ・・・（２）
なお、カメラ−ハンド間のキャリブレーション行列ＨｎＴＣｎを求める方法は、各種の公知の方法が知られているため、ここでは説明を省略する。画像処理部４６１は、式（２）の関係式から特徴点ＨｎＱｉの位置を求める。
【００７１】
次に、特徴点ＭｎＱｉは、メカ的な拘束条件から既知であるため、以下の式（３）となる。
【００７２】
ＨｎＱｉ＝ＨｎＴＭｎＭｎＱｉ    （ｉ＝０，１，２）    ・・・（３）
教示データ演算部４６４は、画像処理部４６１から特徴点ＨｎＱｉの位置データを取得する。ここで、特徴点座標系の各点はメカ的に精度がある程度補償できるため、Ｍｏ≒Ｍｎと仮定することができる。したがって、ＨｎＴＭｎ≒ＨｎＴＭｏと仮定できる。このことから、同次変換行列ＨｎＴＨｏは、以下の式（４）で求めることができる。
【００７３】
ＨｎＴＨｏ＝ＨｎＴＭｏ（ＨｏＴＭｏ）−１    ・・・（４）
即ち教示データ演算部４６４は、画像処理部４６１から得られた特徴点ＨｎＱｉの位置から同次変換行列ＨｎＴＭｏを求め、同次変換行列ＨｎＴＭｏと教示点作成部５６１から得られた同次変換行列ＨｏＴＭｏとで補正量である同次変換行列ＨｎＴＨｏを求める。
【００７４】
なお、補正量である同次変換行列ＨｎＴＨｏは、教示点毎に求めることになる。例えば、ｋ番目の教示点に対応する補正量を、ＨｎＴＨｏ（ｋ）と表記する。
【００７５】
本実施形態では、上記の原理に基づき、ロボット２００に生産作業を行わせながら、ロボット２００の次の動作に用いる次の教示点を補正する動作を行う。この補正の一連の動きを詳細に説明する。
【００７６】
ここで、教示点作成部５６１は、仮想教示点の情報（データ）に対応付けて、前述の画像処理範囲の情報（データ）、および前の仮想教示点から次の仮想教示点への相対的な移動量の情報（データ）を予め作成し、教示点格納部６６０に記憶させておく。
【００７７】
図５（ａ）は、教示点格納部６６０に記憶されている、仮想教示点のデータ、画像処理範囲のデータ、及び前の仮想教示点から次の仮想教示点への相対的な移動量のデータを示す説明図である。ここで、ＨｏＰは、仮想環境で作成したロボットの仮想教示点であり、アーム等のリンクパラメータを介して、仮想ハンド座標系Ｈｏに対応している。
【００７８】
教示点作成部５６１は、仮想空間上の教示点ＨｏＰｋ−１と教示点ＨｏＰｋと間の関係である移動量ΔＴｋ−１を、変換行列Ｈｏ（ｋ−１）ＴＨｏ（ｋ）を同じくリンクパラメータを介して変換して求めておく。図５（ａ）では、変換行列Ｈｏ（ｋ−１）ＴＨｏ（ｋ）を、変換した移動量ΔＴｋ−１で示してある。教示点作成部５６１は、仮想教示点ＨｏＰｋ−１と対応付けて、画像処理範囲Ｖｋ−１と、移動量ΔＴｋ−１（つまりＨｏ（ｋ−１）ＴＨｏ（ｋ））とを教示点格納部６６０に記憶させておく。
【００７９】
そして、ロボット２００に生産作業を行わせる際には、教示データ演算部４５４は、教示点格納部６６０から移動対象となる教示点の情報（画像処理範囲の情報、移動量の情報も含む）を順次、又は全ての教示点の情報を一括で読み出す。
【００８０】
図５（ｂ）は、生産作業中にロボット２００が動作を補正する状態を、各座標系でどのような関係にあるかを示す説明図である。ＨｏＰｋ−１に対応するハンド座標系は、Ｈｎ（ｋ−１）、Ｍｎ、Ｍ０、Ｈ０（ｋ−１）の関係から、相対移動量Ｈｎ（ｋ−１）ＴＨ０（ｋ−１）を求め、ΔＴｋ−１を算出する。ロボット２００が次の教示点に移動する段階で、もともとの相対移動量にΔＴｋ−１が加わりロボット２００は移動する。そして、再びＨｏＰｋに対応するハンド座標系で、Ｈｎ（ｋ）、Ｍｎ、Ｍ０、Ｈ０（ｋ）の関係から、相対移動量Ｈｎ（ｋ）ＴＨ０（ｋ）を求め、ΔＴｋを算出し、これを教示点がある限り繰り返す。最終教示点ｍに達した段階で、ΔＴｍは限りなく小さくなっているが、目標とする精度に達していない時は、今度は、教示点を固定して、補正を繰り返す動きをしてもよい。Ｈ０（ｍ）、Ｈｎ（ｍ）、Ｈｎ（ｍ＋１）、Ｈｎ（ｍ＋２）の記載は、この時の動作を示している。すなわち、補正量は、Ｈ０（ｍ）、Ｍｎ、Ｍ０を固定したまま、Ｈｎ（ｍ）に補正値を加え、Ｈｎ（ｍ＋１）に移動後、再度、補正量を求める。この補正量が所定の値より、小さければ終了する。大きければ、再度、補正値を加え、Ｈｎ（ｍ＋２）に移動させる事を繰り返す。このように動作させる事で、ロボット２００の作動中に教示位置を修正しつつ移動させる事ができ、その結果、最終的な位置精度に収束するまでの時間を短くするメリットがある。更に、所定の精度が、得られない場合は、Ｈ０（ｍ）、Ｍｎ、Ｍ０を固定したまま補正動作を繰り返すことで、所定の精度も得られる。
【００８１】
図６は、生産作業をロボット２００に行わせているときのロボット制御方法を示すフローチャートであり、特に、教示点と画像処理範囲の設定の関係を示す。まず、教示データ演算部４６４は、始点を表すｋ＝１の教示点ＨｏＰｋ−１の情報、即ち教示点ＨｏＰ０の情報を選択する（Ｓ１）。教示データ演算部４６４は、対象となっているのが始点であるため、教示点ＨｏＰ０の補正は行わず、そのまま動作に用いる教示点ＨｎＰ０として、ロボット制御部４６３に出力する（Ｓ２）。ロボット制御部４６３は、教示データ演算部４６４から取得した教示点ＨｏＰ０の情報に従ってロボット２００を動作させる（Ｓ３：動作処理、動作工程）。
【００８２】
教示データ演算部４６４は、次の教示点ＨｏＰｋがあるか否かを判断し（Ｓ４）、次の教示点がなければ（Ｓ４：Ｎｏ）、終点であるのでそのまま終了する。教示データ演算部４６４は、次の教示点ＨｏＰｋがある場合（Ｓ４：Ｙｅｓ）、教示点ＨｏＰｋ−１の情報に対応付けられた画像処理範囲Ｖｋ−１の情報が設定されているか否かを判断する（Ｓ５）。即ち、教示データ演算部４６４は、教示点ＨｏＰｋ−１が撮像用教示点であるか否かを判断していることになる。
【００８３】
次に、教示データ演算部４６４は、画像処理範囲Ｖｋ−１の情報が設定されてない場合、即ちステップＳ３にてロボット２００の動作に用いた教示点が撮像用教示点ではない場合には（Ｓ５：Ｎｏ）、撮像は行わず、ステップＳ１１に進む。教示データ演算部４６４は、ステップＳ１１において、以前に補正量（ずれ量）である同次変換行列ＨｎＴＨｏを求めていたか否かを判断する（Ｓ１１）。教示データ演算部４６４は、始点にロボットを動作させたときには、以前に同次変換行列ＨｎＴＨｏを求めていないので（Ｓ１１：Ｎｏ）、ｋ＝ｋ＋１とする、即ち次の教示点の情報を選択して今の教示点の情報とし（Ｓ１３）、ステップＳ２の処理に戻る。
【００８４】
つまり、教示データ演算部４６４は、教示点ＨｏＰｋ−１の補正は行わず、動作に用いる教示点ＨｎＰｋ−１として、ロボット制御部４６３に出力する（Ｓ２）。ロボット制御部４６３は、教示データ演算部４６４から取得した教示点ＨｎＰｋ−１の情報に従ってロボット２００を動作させる（Ｓ３：動作処理、動作工程）。
【００８５】
ここで、ステップＳ３において、ロボット制御部４６３は、前回のステップＳ３の処理にてロボット２００の移動に用いた教示点ＨｎＰｋ−２の情報と、次の教示点ＨｎＰｋ−１の情報との間を補間する。そして、ロボット制御部４６３は、補間した情報（補間教示点の情報）に従って教示点ＨｎＰｋ−１までロボット２００を動作させる。
【００８６】
教示データ演算部４６４は、次の教示点ＨｏＰｋがあるか否かを判断し（Ｓ４）、次の教示点がなければ（Ｓ４：Ｎｏ）、終点であるのでそのまま終了する。教示データ演算部４６４は、次の教示点ＨｏＰｋがある場合（Ｓ４：Ｙｅｓ）、ロボット２００の動作に用いた教示点ＨｏＰｋ−１の情報に対応付けられた画像処理範囲Ｖｋ−１の情報が設定されているか否かを判断する（Ｓ５）。
【００８７】
教示データ演算部４６４は、画像処理範囲Ｖｋ−１の情報が設定されている場合、即ちステップＳ３にてロボット２００の動作に用いた教示点が撮像用教示点である場合（Ｓ５：Ｙｅｓ）、ステレオカメラ３００に撮像を行わせる（Ｓ６：撮像処理、撮像工程）。
【００８８】
具体的には、教示データ演算部４６４は、画像処理部４６１に撮像指令を送り、画像処理部４６１は、撮像指令に従ってステレオカメラ３００に撮像を行わせる。そして、画像処理部４６１は、ステップＳ６において、ワークＷ１が写り込んだ撮像画像を、ステレオカメラ３００から取得する。具体的には、画像処理部４６１は、画像処理範囲Ｖｋ−１の画像を取得する。
【００８９】
画像処理部４６１は、得られた撮像画像から、前述した演算によりワークＷ１の特徴点ＨｎＱｉの位置を計測する（Ｓ７：計測処理、計測工程）。ここで、画像処理部４６１にて画像処理に用いられる撮像画像は、画像処理範囲Ｖｋ−１の画像である。画像処理による特徴点の抽出には、通常パターンマッチング等の手法がつかわれる。この手法は演算負荷が高いため、画素数が少ないほど演算時間を短縮することができる。そのため、画像処理範囲Ｖｋ−１の画像から特徴点を抽出する処理は、全画像から特徴点を抽出する処理よりも画素数が少ないので演算負荷が低くなる。よって、画像処理に要する演算時間を短縮することができ、ロボット２００の制御応答性、即ちロボット２００の稼働速度を上げることができる。
【００９０】
なお、以上の説明において、ワークＷ１が写った範囲全体を範囲指定する場合を例に説明したが、より計算速度を速くするため、特徴点毎に、画像処理範囲を設定してもよい。
【００９１】
教示データ演算部４６４は、ステップＳ７による計測結果に基づいて、特徴点ＨｎＱｉの基準（具体的には、特徴点ＨｏＱｉ）に対するずれ量と等価な補正量である同次変換行列ＨｎＴＨｏ（ｋ−１）を求める（Ｓ８：計算処理、計算工程）。
【００９２】
同次変換行列ＨｎＴＨｏ（ｋ−１）は、ロボット２００の動作に用いた教示点ＨｎＰｋ−１のずれ量を解消するのに必要な補正量であるが、未だロボット２００の動作に使用していない次の教示点ＨｎＰｋを求めるのに用いる。つまり、ずれ量が所定範囲に収束するまで教示点ＨｎＰｋ−１を補正する収束演算は行わず、１度だけ以前の動作に伴うずれ量に基づいて補正が反映された次の教示点ＨｎＰｋを求める。
【００９３】
よって、教示データ演算部４６４は、ロボット２００の次の動作に用いる教示点の情報を、同次変換行列ＨｎＴＨｏ（ｋ−１）に応じて補正する（Ｓ９：補正処理、補正工程）。具体的に説明すると、教示データ演算部４６４は、計算した同次変換行列ＨｎＴＨｏ（ｋ−１）と、読み出した変換行列Ｈｏ（ｋ−１）ＴＨｏ（ｋ）と、動作に用いた教示点ＨｎＰｋ−１とを掛け算することで、補正された次の教示点ＨｎＰｋを算出する。そして、教示データ演算部４６４は、ｋ＝ｋ＋１とする、即ち次の教示点の情報を選択して今の教示点の情報とし（Ｓ１０）、ステップＳ３の処理に戻る。撮像用教示点は、複数存在するため、ロボット２００に生産作業を行わせながら、ステップＳ３〜Ｓ１０の処理を繰り返し実行することになる。なお、本フローの説明では教示点の続く限りの補正にとどめたが、最終教示点においても、求める誤差範囲に達していない場合は、教示点を固定して、補正動作を繰り返し求める誤差範囲に到達した時点で、補正動作を停止してもよい。なお、この場合の画像処理範囲は、最終指定範囲で固定すればよい。
【００９４】
第１実施形態では、ロボット２００の動作に用いた教示点を所定範囲に収束するまで補正する収束演算は行わず、補正後の教示点にロボット２００を動作させながら次の教示点を補正する処理を繰り返す。これにより、ロボット２００の手先は生産作業中に理想の位置姿勢に近づいていくことになる。したがって、生産作業の前に、予め全ての教示点を補正しておく必要がない。そして、置き台１６０に載置されたワークＷ１の位置姿勢や大きさに応じて、時々刻々と教示点が修正されるので、生産作業中にワークＷ１の位置姿勢や大きさが変化しても、精密な作業をロボット２００に行わせることができる。
【００９５】
教示データ演算部４６４は、撮像を行わない場合、ステップＳ１１の判断において、以前にずれ量（補正量）を求めていると判断したときには、ロボット２００の次の動作に用いる教示点の情報を、以前に求めたずれ量（補正量）に応じて補正する（Ｓ１２）。その後、ステップＳ１０の処理に移行する。具体的に説明すると、教示データ演算部４６４は、読み出した変換行列Ｈｏ（ｋ−１）ＴＨｏ（ｋ）と、既に以前の補正量が反映された教示点ＨｎＰｋ−１とを掛け算して、次の教示点ＨｎＰｋを算出する。よって、前の教示点ＨｎＰｋ−１を算出したときと同じ補正量で教示点ＨｏＰｋを補正して次の教示点ＨｎＰｋを算出したことになる。これにより、撮像処理を行わない場合であっても、以前の補正量で次に用いる教示点が補正されるので、ロボット２００の動作精度を安定させることができる。
【００９６】
以上、第１実施形態によれば、ロボット２００に生産作業を行わせながら、順次、次の教示点を補正していくため、ワークＷ１の位置姿勢又は大きさが生産作業中に変化しても、ロボット２００による精密な生産作業を実現することができる。また、ワークＷ１やロボット２００が振動していても、ロボット２００の動作を停止させることなく、ロボット２００の動作を継続させながら教示点を補正していくため、ロボット２００による精密な生産作業を実現することができる。更に、ロボット２００の経年劣化や、軌道が変化するために生じるヒステリシスによるロボット２００の手先位置の再現精度の劣化があっても、連続的に教示点が補正されるため、ロボット２００による精密な生産作業を実現することができる。
【００９７】
［第２実施形態］
次に、第２実施形態に係るロボット装置によるロボット制御方法について説明する。図７は、第２実施形態に係るロボット装置の機能を示すブロック図である。なお、ロボット装置のハードウェア構成は第１実施形態と同様であるため、説明を省略する。
【００９８】
第１実施形態では、画像処理範囲が仮想教示点に１対１の関係で対応付けられており、ロボット２００の動作に用いた教示点と補正後の教示点間の補間教示点に対しては、画像処理範囲は設定せずに、そのままロボット２００の動作に用いた。第２実施形態では、仮想教示点間を補間し、かつ画像処理範囲間も同様に補間する場合について説明する。第２実施形態では、図７に示すように、範囲指定部４６２と教示データ演算部４６４の間に、信号のやり取りを行うラインが入っている。
【００９９】
教示データ演算部４６４は、教示点格納部６６０から読み出した複数の仮想教示点を補間して新たな複数の仮想教示点の情報を生成する。更に、教示データ演算部４６４は、教示点格納部６６０から読み出した複数の仮想教示点に、連続する複数の撮像用教示点が含まれる場合には、各撮像用教示点に対応付けられた画像処理範囲の間を補間して、新たな複数の画像処理範囲の情報を生成する。
【０１００】
以下、具体例を挙げて説明する。図８は、教示点の補間動作と画像処理範囲の補間動作を説明するための模式図である。図８に示すように、教示点格納部６６０から読み出した連続する複数の撮像用教示点が教示点Ｐｋ−１，Ｐｋであったとする。そして、教示データ演算部４６４が、教示点Ｐｋ−１と教示点Ｐｋとを時系列補間して、教示点Ｐｋ−０．５を生成したものとする。なお、教示点Ｐｋ−０．５は、ロボット２００の特異点とならないように設定する必要がある。
【０１０１】
教示データ演算部４６４は、教示点Ｐｋ−１から教示点Ｐｋまでの補間を線形補間で行ったとすると、各教示点Ｐｋ−１，Ｐｋに対応付けられた画像処理範囲の間の補間も同様に線形補間で行う。ここで、教示点Ｐｋ−１には、２つの画像処理範囲ＶＲｋ−１，ＶＬｋ−１が対応付けられており、教示点Ｐｋには、２つの画像処理範囲ＶＲｋ，ＶＬｋが対応付けられている。したがって、教示データ演算部４６４は、画像処理範囲ＶＲｋ−１と画像処理範囲ＶＲｋとの間を補間して、画像処理範囲ＶＲｋ−０．５を生成し、画像処理範囲ＶＬｋ−１と画像処理範囲ＶＬｋとの間を補間して、画像処理範囲ＶＬｋ−０．５を生成する。この演算処理は、ロボット２００を教示点に動作させる前に行えばよい。新たな教示点と新たな画像処理範囲を設定した後は、第１実施形態で説明した図６のフローチャートに従って動作させればよい。
【０１０２】
画像処理範囲の設定は、仮想教示点間の補間方法と同様の補間方法で行うのが好適である。また、上記の例では、単純に教示点を２倍にする補間であるが、Ｌ倍（Ｌは任意の自然数）に補間することも可能である。
【０１０３】
第２実施形態によれば、教示点作成部５６１で作成した仮想教示点の点数が少ない場合であっても、補間により教示点の点数とこれに対応付けられる画像処理範囲の点数を増やすことができる。これにより、ロボット２００により精密な生産作業を行わせることができる。また、ユーザによる教示作業も時間短縮することができ、生産性が向上する。
【０１０４】
なお、生産作業に先立って、毎回上述の演算を行ってもよいが、演算負荷の軽減のため、上述の演算により求めた仮想教示点間の補間教示点の情報と、補間教示点に対応付けた画像処理範囲の情報は、教示点作成部５６１に記憶させておくのがよい。
【０１０５】
［変形例］
第１実施形態では、ロボット制御部４６３が教示点間を補間する場合について説明したが、これに限定するものではない。教示点作成部５６１が、仮想ロボットを用いた教示により教示点列の情報をユーザの操作に従い生成し、該教示点列の間を補間して、教示点格納部６６０に記憶させる複数の教示点の情報を生成してもよい。つまり、ロボット２００の生産作業中に軌道を計算するのではなく、予めロボット２００の軌道を計算しておいてもよい。この場合、仮想教示点の点数は非常に多くなるが、ロボット制御部４６３の演算負荷は軽減する。撮像用教示点に対応付ける画像処理範囲の設定作業は、第１実施形態で説明したようにユーザが行えばよい。
【０１０６】
よって、ロボット２００に生産作業を行わせているときには、教示点作成部５６１において既に補間演算を行っているので、ロボット制御部４６３は補間演算を行わなくてよい。したがって、ロボット制御部４６３（ＣＰＵ４０１）におけるロボット２００の実際の生産作業時に演算負荷が軽減するため、ロボット２００の制御応答性が向上する。線形補間以外の複雑な補間を行う場合、特に有効である。
【０１０７】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【０１０８】
上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１０９】
また、上述の実施形態では、制御装置４００を、同一のＰＣＩＥバス上に複数のプログラムを同時に実行できる１つのコンピュータとして説明したが、制御装置４００を複数のコンピュータに分けて分散処理を行わせてもよい。
【０１１０】
また、上述の実施形態では、記憶部がＮＡＳ６００である場合について説明したが、これに限定するものではなく、制御装置４００又は教示装置５００に含まれる記憶装置であってもよい。
【符号の説明】
【０１１１】
１００…ロボット装置、２００…ロボット、３００…ステレオカメラ（撮像部）、４０１…ＣＰＵ（制御部）、５０１…ＣＰＵ（教示部）、６００…ＮＡＳ（記憶部）
【図１】
2018001393.tif 000003
【図２】
2018001393.tif 000004
【図３】
2018001393.tif 000005
【図４】
2018001393.tif 000006
【図５】
2018001393.tif 000007
【図６】
2018001393.tif 000008
【図７】
2018001393.tif 000009
【図８】
2018001393.tif 000010