<本発明の実施形態>
本発明の実施形態について、図面を参照して説明する。
図1は、本発明の実施形態に係るロボットシステムの概略構成の一例を示す図である。
ロボットシステム1は、ロボット2と、教示装置4と、撮像装置5とを有する。ロボット2は、制御部3を有する。ロボット2と教示装置4は、通信可能に接続される。また、ロボット2と撮像装置5は、通信可能に接続される。
ロボット2は、制御部3により制御され、目的の作業を行う。ロボット2は、例えば、作業台Tの近くに配置され、作業台T上の所定の作業領域内で作業を行う。ロボット2の作業内容は、特に限定されないが、例えば、複数のワークWを嵌め合わせる作業が考えられる。
ロボット2は、胴部20と、アーム21と、ハンド22と、脚部24と、頭部25とを有する。
アーム21は、胴部20に設けられる。アーム(「マニピュレーター」ともいう。)21は、一以上のジョイント(「回転軸」ともいう。)21a及び一以上のアーム部材(「リンク」ともいう。)21bを含む。
ジョイント21aには、それらを動作させるためのアクチュエーター(図示せず)が設けられる。アクチュエーターは、例えば、サーボモーターやエンコーダーなどを備える。エンコーダーが出力するエンコーダー値は、制御部3によるロボット2のフィードバック制御などに使用される。
また、アーム21の先端には、力覚センサー21cが設けられる。力覚センサーは、ロボット2が出している力に対する反力として受けている力や、モーメントを検出するセンサーである。力覚センサーとしては、例えば、並進3軸方向の力成分と、回転3軸回りのモーメント成分の6成分を同時に検出することができる6軸力覚センサーを用いることができる。なお、力覚センサーは、6軸に限らず、例えば3軸でもよい。
各回転軸を連動させることにより、アーム部材21bの姿勢を変化させ、アーム21の先端部などに設定された注目位置(「エンドポイント」ともいう。)を、所定の可動範囲内で自在に移動させたり自由な方向へ向けたりすることができる。なお、エンドポイントの位置は、アームの先端部に限定されず、例えば、エンドエフェクターの先端部などに設定されてもよい。
なお、アーム21は、マニピュレーターの一種ということができる。マニピュレーターは、エンドポイントの位置を移動させる機構であり、アームに限られず様々な形態をとることができる。また、マニピュレーターは、図示するように2本に限られず、1本あるいは3本以上設けるようにしてもよい。
ハンド22は、アーム21の先端に設けられる。ハンド22は、例えば、複数の指を備え、少なくとも2本の指で作業対象物を把持したり解放したりすることができる。ハンド22は、アーム21の先端部に対して着脱可能であってもよい。
なお、ハンド22は、エンドエフェクターの一種ということができる。エンドエフェクターは、作業対象物を把持したり、持ち上げたり、吊り上げたり、吸着したり、ワークを加工したりするための部材である。エンドエフェクターは、ハンド、フック、吸盤など、様々な形態をとることができる。また、エンドエフェクターは、一本のアームに対して複数設けるようにしてもよい。
なお、ロボット2の構成は図示した例に限られない。例えば、図1ではジョイント数が6個(6軸)の例が示されているが、ジョイントの数(「軸数」ともいう。)やリンクの数を増減させてもよい。また、ジョイント、リンク、ハンド等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。
制御部3は、ロボット2の全体を制御する。例えば、制御部3は、教示装置4から出力される教示データに基づいて、ロボット2を動作させる制御命令を生成し、生成した制御命令に従ってアクチュエーターを駆動させることでロボット2を動作させる。また、制御部3は、撮像装置5を制御し、撮像画像を取得する。詳細は後述するが、制御部3は、視覚サーボにより、ロボット2を動作させる。
撮像装置5は、例えば作業台T上の作業領域を撮像して、撮像画像データを生成し、ロボット2に出力する。撮像装置5は、例えば、CCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)等を有するカメラである。
教示装置4は、ユーザーの操作に従って、ロボット2に実行させる作業内容を示す教示データを生成する。また、教示装置4は、生成した教示データをロボット2の制御部3に出力することにより、ロボット2に対して教示を行う。教示装置4については、後に詳述する。
上記のロボットシステム1の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成例に限られない。また、一般的なロボットシステムが備える構成を排除するものではない。
例えば、撮像装置5の設置位置は、特に限定されず、天井、壁などに設置することができる。また、撮像装置5は、ロボット2の頭部25、アーム21の先端部分、胴部20などに設けられてもよい。また、例えば、撮像装置5に加えて、他の撮像装置を設けるようにしてもよい。また、例えば、制御部3は、制御装置としてロボット2と別に設けられ、ロボット2に外部から接続するようにしてもよい。また、例えば、制御部3と教示装置4は、制御装置として一体となっていてもよい。
図2は、ロボットシステムの機能構成の一例を示す図である。
教示装置4は、入力部40と、表示部41と、ガイド設定部(「第一ガイド設定部」、「第二ガイド設定部」ともいう。)42と、教示データ生成部43と、教示データ送信部44と、モデルデータ格納部45と、ガイドデータ格納部46と、教示データ格納部47とを有する。
入力部40は、ユーザーの操作を受け付ける。表示部41は、ユーザーに対してインターフェイス画面などを表示する。
ガイド設定部42は、作業対象物の任意の位置に対して仮想的なガイド(「対象物ガイド」ともいう。)を設定する。対象物ガイドは、視覚サーボにおいて、作業対象物の代わりに当該作業対象物の現在位置を示す画像として使用される。
具体的には、モデルデータ格納部45には、入力部40等を介したユーザーの操作により、作業対象物を2次元あるいは3次元で表す画像データなどのモデルデータが予め格納されている。ガイド設定部42は、モデルデータ格納部45から、作業対象物のモデルデータを取得する。また、ガイド設定部42は、取得した作業対象物のモデルデータに対して、当該モデルの特徴位置を抽出する所定の画像処理(例えば、エッジ検出、輪郭検出、コーナー検出など)を実行し、当該作業対象物の特徴位置を抽出する。なお、特徴位置は、1点に限らず複数点の集合であってもよく、単に「特徴」と呼んでもよい。
また、ガイド設定部42は、抽出した作業対象物の特徴位置に対して、所定の位置関係を有するガイド位置を設定する。例えば、ガイド設定部42は、作業対象物のモデルデータとともに当該作業対象物の特徴位置を示す画像を表示部41に表示させる。また、ガイド設定部42は、表示された画像上でガイド位置の指定を、入力部40を介して受け付ける。ガイド設定部42は、表示された特徴位置に対する指定されたガイド位置の相対位置関係を示す対象物ガイドデータを、ガイドデータ格納部46に格納する。なお、対象物のガイド位置は、1点に限らず複数点の集合であってもよく、単に「対象物ガイド」と呼んでもよい。
図3(A)は、対象物ガイドデータのデータ構造の一例を示す図である。図3(A)に示すように、対象物ガイドデータには、それぞれの対象物ガイドごとに、当該対象物ガイドの識別情報であるID451と、当該対象物ガイドのガイド位置452と、当該対象物ガイドの基準位置である対象物の特徴位置453とが関連付けられたレコードが格納される。なお、特徴位置453には、当該特徴位置を抽出するために使用される画像処理アルゴリズムに関する情報が含まれる。
図2の説明に戻る。ガイド設定部42は、撮像装置5の撮像範囲内の任意の位置に対して仮想的なガイド(固定ガイド)を設定する。固定ガイドは、視覚サーボにおいて、作業の目標位置を示す画像として、使用される。
具体的には、ガイド設定部42は、例えば、撮像範囲を示す画像を表示部41に表示させる。また、ガイド設定部42は、表示された画像上でガイド位置の指定を、入力部40を介して受け付ける。ガイド設定部42は、指定されたガイド位置を示す固定ガイドデータを、ガイドデータ格納部46に格納する。なお、固定のガイド位置は、1点に限らず複数点の集合であってもよく、単に「固定ガイド」と呼んでもよい。
図3(B)は、固定ガイドデータのデータ構造の一例を示す図である。図3(B)に示すように、固定ガイドデータには、それぞれの固定ガイドごとに、当該固定ガイドの識別情報であるID461と、当該固定ガイドのガイド位置462とが関連付けられたレコードが格納される。
図2の説明に戻る。教示データ生成部43は、対象物ガイド及び固定ガイドが、所定の位置関係(同じ位置で一致する場合を含む。)となることを目標とする教示データを生成する。また、教示データ生成部43は、一の対象物ガイド及び他の対象物ガイドが、所定の位置関係(同じ位置で一致する場合を含む。)となることを目標とする教示データを生成する。
具体的には、教示データ生成部43は、例えば、対象物ガイドの指定、固定ガイドの指定、目標位置の指定、対象物ガイドを目標位置に移動させる命令などを、入力部40を介して受け付ける。また、例えば、教示データ生成部43は、命令が複数ある場合には、各命令の工程順序を受け付ける。教示データ生成部43は、受け付けた各情報を含む教示データを生成し、教示データ格納部47に格納する。
図4は、教示データのデータ構造の一例を示す図である。図4に示すように、教示データには、工程順に、工程番号471と、教示内容472とが関連付けられたレコードが格納される。なお、教示内容472には、指定されたガイドに対応するガイドデータ(対象物ガイドデータ、固定ガイドデータ)が含まれる。
図2の説明に戻る。教示データ送信部44は、教示データ生成部43により生成された教示データを、教示データ格納部47から取得し、ロボット2の制御部3に対して送信する。
モデルデータ格納部45には、上述のようにモデルデータが格納される。ガイドデータ格納部46には、上述のようにガイドデータが格納される。教示データ格納部47には、上述のようにガイドデータが格納される。
ロボット2の制御部3は、教示データ受信部30と、視覚サーボ制御部31と、画像取得部34と、教示データ格納部35とを有する。視覚サーボ制御部31は、特徴抽出部32と、ガイド生成部(「第一ガイド生成部」、「第二ガイド生成部」ともいう。)33とを有する。
教示データ受信部30は、教示装置4から教示データを受信し、教示データ格納部35に格納する。
視覚サーボ制御部31は、教示データ格納部35に格納されている教示データに基づいて、ロボット2の動作を制御する。そのため、視覚サーボ制御部31は、特徴抽出部32と、ガイド生成部33とを有する。
具体的には、視覚サーボ制御部31は、教示データに基づいて、移動させる作業対象物と、当該作業対象物を移動させる目標位置とを特定する。また、視覚サーボ制御部31は、画像取得部34から撮像画像を取得する。また、視覚サーボ制御部31は、教示データに基づいて、特徴抽出部32により、撮像画像に対して、移動させる作業対象物の特徴位置を抽出する所定の画像処理(例えば、エッジ検出、輪郭検出、コーナー検出など)を実行し、当該作業対象物の特徴位置を抽出する。また、視覚サーボ制御部31は、教示データに基づいて、ガイド生成部33により、抽出された特徴位置と所定の相対位置関係にあるガイド位置に、移動させる作業対象物の対象物ガイドを生成する。
また、視覚サーボ制御部31は、目標位置が撮像範囲内の所定位置である場合は、教示データに基づいて、ガイド生成部33により、撮像画像の指定された位置に、目標位置である固定ガイドを生成する。一方、視覚サーボ制御部31は、目標位置が作業対象物である場合には、教示データに基づいて、特徴抽出部32により、撮像画像に対して、目標位置である作業対象物の特徴位置を抽出する所定の画像処理(例えば、エッジ検出、輪郭検出、コーナー検出など)を実行し、当該作業対象物の特徴位置を抽出する。また、視覚サーボ制御部31は、教示データに基づいて、ガイド生成部33により、抽出された特徴位置と所定の相対位置関係にあるガイド位置に、目標位置である対象物ガイドを生成する。
また、視覚サーボ制御部31は、撮像画像上に生成された、移動させる対象物ガイドと、目標位置であるガイド(固定ガイド、又は対象物ガイド)とに基づいて、これらのガイドが教示データで教示される所定の位置関係となるように、視覚サーボを行う。
ここで、視覚サーボ制御部31は、撮像画像から、生成されたガイド以外の画像情報(すなわち、撮像画像に元々含まれる画像情報であり、ガイド画像の背景)を削除し、ガイドのみを含む画像に基づいて視覚サーボを行う。もちろん、撮像画像と同じ大きさの画像を生成し、この画像上にガイドを生成するようにしてもよい。
本実施形態の視覚サーボでは、目標画像の代わりに、撮像画像に基づいて生成される目標位置のガイドのみを含む画像が用いられる。また、現在画像の代わりに、撮像画像に基づいて生成される作業対象物のガイドのみを含む画像が用いられる。そして、これらのガイドが、視覚サーボ系への入力情報(制御量)として用いられる。視覚サーボ制御部31は、これらのガイドに基づいて、ガイドが一致するか否かを比較する。ガイドが一致する場合、視覚サーボを終了する。ガイドが一致しない場合、制御命令を生成し、ロボット2を動作させる。
特徴抽出部32は、教示データに含まれるガイドデータを参照し、指定されたガイドIDに関連付けられた特徴位置から、所定の画像処理アルゴリズムを特定する。また、特徴抽出部32は、特定した画像処理アルゴリズムを撮像画像に対して実行し、作業対象物の特徴位置を抽出及び特定する。
ガイド生成部33は、教示データに含まれるガイドデータを参照し、指定された対象物ガイドのガイドIDに関連付けられたガイド位置を特定する。また、ガイド生成部33は、特定したガイド位置に基づいて、特徴抽出部32により特定された作業対象物の特徴位置と所定の相対位置関係にあるガイド位置に、対象物ガイドを生成する。また、ガイド生成部33は、指定された固定ガイドのガイドIDに関連付けられたガイド位置に、固定ガイドを生成する。
画像取得部34は、撮像装置5を制御して撮像を行わせ、撮像画像を取得する。
教示データ格納部35には、上述のように教示データが格納される。
図5は、教示装置の機能を実現するハードウェア構成の一例を示す図である。
教示装置4は、例えば、図5に示すような、CPU(Central Processing Unit)等の演算装置90と、RAM(Random Access Memory)などの主記憶装置91と、HDD(Hard Disk Drive)等の補助記憶装置92と、有線又は無線により通信ネットワークと接続するための通信インターフェイス(I/F)93と、マウス、キーボード、タッチセンサーやタッチパネルなどの入力装置94と、液晶ディスプレイなどの表示装置95と、DVD(Digital Versatile Disk)などの持ち運び可能な記憶媒体に対する情報の読み書きを行う読み書き装置96と、を備えるコンピューター9で実現することができる。
例えば、ガイド設定部42、教示データ生成部43、教示データ送信部44などは、補助記憶装置92などから主記憶装置91にロードされた所定のプログラムを演算装置90が実行することで実現される。モデルデータ格納部45、ガイドデータ格納部46、教示データ格納部47などは、例えば、演算装置90が主記憶装置91又は補助記憶装置92を利用することで実現される。ロボット2との通信は、例えば、演算装置90が通信I/F93を利用することで実現される。入力部40は、例えば、演算装置90が入力装置94を利用することで実現される。表示部41は、例えば、演算装置90が表示装置95を利用することで実現される。なお、上記の所定のプログラムは、例えば、読み書き装置96により読み取られた記憶媒体からインストールされてもよいし、通信I/F93を介してネットワークからインストールされてもよい。
制御部3は、例えば、演算装置、記憶装置、処理回路、駆動回路などを備えるコントローラー基板等により実現することができる。例えば、教示データ受信部30、視覚サーボ制御部31、画像取得部34などは、記憶装置にロードされた所定のプログラムを演算装置が実行することで実現される。教示データ格納部35は、例えば、演算装置が記憶装置を利用することで実現される。
上述したロボットシステム1の機能構成は、ロボットシステム1の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。ロボットシステム1の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
また、教示装置4及び制御部3の機能及び処理の分担は、説明した例に限られない。例えば、教示装置4の少なくとも一部の機能は、制御部3に含まれ、制御部3により実現されてもよい。また、例えば、制御部3の少なくとも一部の機能は、教示装置4に含まれ、教示装置4により実現されてもよい。
次に、ロボットシステム1により実現される処理及び動作について、説明する。
まず、図6〜図11を参照して、ロボット2が行う第一の作業例に基づいて説明する。それから、図12〜図16を参照して、ロボット2が行う第二の作業例に基づいて説明する。
図7は、ロボットが行う第一の作業例を示す図である。第一の作業例は、部品W1に形成されている凹部に部品W2を嵌め込む、という作業である。なお、ロボット2は、部品をハンド22で把持することで、部品を移動させることができるため、把持動作に関する説明は省略する。
図6は、教示処理の一例を示すフロー図である。なお、モデルデータ格納部45には、部品W1と部品W2のモデルデータが予め格納されている。
まず、ガイド設定部42は、対象物ガイドの設定を受け付ける(ステップS100)。具体的には、ガイド設定部42は、ユーザーから入力部40を介して、モデルデータ格納部45に格納されているモデルデータの中から、作業に必要な部品(部品W1、部品W2)のモデルデータの選択を受け付ける。なお、ガイド設定部42は、例えば、作業に必要な部品を含む画像を撮像装置5等から取得し、取得した画像から画像処理により部品を認識し、認識した部品に対応するモデルデータを、モデルデータ格納部45に格納されているモデルデータの中から選択するようにしてもよい。
また、ガイド設定部42は、選択された各モデルデータに対して、特徴位置を抽出する所定の画像処理を実行し、特徴位置を抽出する。なお、ガイド設定部42は、各モデルデータに対して、使用する画像処理アルゴリズムの選択及び設定を、ユーザーから受け付けるようにしてもよい。また、ガイド設定部42は、モデルデータとともに抽出した特徴位置を示す画像を、表示部41に表示させる。例えば、図8(A)(部品W1に設定されるガイドの一例を示す図)に示すように、部品W1のモデルデータW1とともに、抽出された特徴位置F1(破線で示す。)が表示される。また、例えば、図8(B)(部品W2に設定されるガイドの一例を示す図)に示すように、部品W2のモデルデータW2とともに、抽出された特徴位置F2(破線で示す。)が表示される。
また、ガイド設定部42は、表示されている画像に対して、ガイド位置の指定を、ユーザーから入力部40を介して受け付ける。例えば、図8(A)では、部品W1の凹部に対応させてガイドG1が設定されている。また、例えば、図8(B)では、部品W2の一端(部品W1の凹部に挿入される側)に対応させてガイドG2が設定されている。
ここで、対象物ガイドは、基準位置と方向成分を有する。ガイドの基準位置は、例えば、モデルデータが3次元である場合にはXYZ座標の値を持ち、モデルデータが2次元である場合にはXY座標の値を持つ。また、ガイドの方向成分は、ガイドの基準位置を原点とする3次元のXYZ軸方向、又は2次元のXY軸方向である。ガイド設定部42は、ガイド位置として、対象物ガイドの基準位置及び方向成分の指定を、ユーザーから入力部40を介して受け付ける。
ガイド設定部42は、モデルデータに対するガイド位置(基準位置、方向成分)が指定されると、指定されたガイド位置の基準位置を、抽出された特徴位置に対する相対位置を示す情報に変換する。そして、ガイド設定部42は、当該対象物ガイドに対して割り当てたID又はユーザーから指定されたIDと、ガイド位置(変換された基準位置、方向成分)と、抽出された特徴位置(特徴位置を特定する情報、当該特徴位置を抽出するために使用される画像処理アルゴリズムに関する情報)とを関連付けたレコードを、ガイドデータ格納部46の対象物ガイドデータに追加する。
それから、ガイド設定部42は、固定ガイドの設定を受け付ける(ステップS110)。具体的には、ガイド設定部42は、例えば、撮像装置5の撮像範囲を示す画像を表示部41に表示させる。また、ガイド設定部42は、表示されている画像に対して、ガイド位置の指定を、ユーザーから入力部40を介して受け付ける。例えば、図8(C)(固定ガイドの一例を説明する図)では、撮像範囲の中心付近に、固定ガイドSG1が設定されている。
ここで、固定ガイドは、対象物ガイドと同様に、基準位置と方向成分を有する。ガイド設定部42は、ガイド位置として、固定ガイドの基準位置及び方向成分の指定を、ユーザーから入力部40を介して受け付ける。
ガイド設定部42は、撮像範囲に対するガイド位置(基準位置、方向成分)が決定されると、当該固定ガイドに対して割り当てたID又はユーザーから指定されたIDと、ガイド位置(基準位置、方向成分)とを関連付けたレコードを、ガイドデータ格納部46の固定ガイドデータに追加する。
それから、教示データ生成部43は、教示データを生成する(ステップS120)。具体的には、教示データ生成部43は、第一の作業例を実現するロボット2の各工程の設定を、ユーザーから入力部40を介して受け付ける。教示データ生成部43は、例えば下記のように、ガイドの指定及びガイドを目標位置に移動させる命令を含む教示を受け付け、工程番号471と教示内容472(下記では、「工程番号:教示内容」と表す。)として、教示データ格納部47の教示データに追加する。
工程1:固定ガイドSG1(基準位置)に、対象物ガイドG1(基準位置)を、一致させる。
工程2:固定ガイドSG1(基準位置)に、所定のオフセット距離(基準位置からX方向にmピクセル)で、対象物ガイドG2(基準位置)を一致させる。
工程3:対象物ガイドG2(基準位置)を、所定の距離(X方向にnピクセル)移動する。
なお、工程3は、部品W2を部品W1に嵌め込む動作の準備動作である。
また、教示データ生成部43は、各工程の教示内容472に、当該教示内容で指定されているガイド(固定ガイドSG1、対象物ガイドG1、対象物ガイドG2)のガイドデータを設定する。
それから、教示データ送信部44は、ステップS120で生成された教示データを、ロボット2に送信し(ステップS130)、図6に示すフローチャートの処理を終了する。
以上のようにして、ガイド位置の設定、及びロボット2の作業内容を示す教示データの設定が行われ、ロボット2に対して教示される。なお、ステップS100とステップS110の順序は逆でもよい。また、ステップS130は、ユーザーが指定した任意のタイミングで実行されてもよい。
図9は、第一の作業例における視覚サーボ処理の一例を示すフロー図である。図10(第一の作業例における視覚サーボの経過を視覚的に説明する図(その1))、及び図11(第一の作業例における視覚サーボの経過を視覚的に説明する図(その2))を参照しながら説明する。なお、説明を分かり易くするため、図10及び図11では、ロボット2のハンド22等は省略している。
教示装置4から送信された教示データは、教示データ受信部30により受信され、教示データ格納部35に格納されているものとする。視覚サーボ制御部31は、教示データの各工程の教示内容に基づいて、ロボット2の動作を制御する。なお、ステップS200〜S250は、上述の「工程1」に対応する。また、ステップS260〜S310は、上述の「工程2」に対応する。また、ステップS320は、上述の「工程3」に対応する。
まず、画像取得部34は、撮像装置5を制御して撮像を行わせ、撮像画像を取得する(ステップS200)。
それから、視覚サーボ制御部31は、固定ガイドSG1を生成する(ステップS210)。具体的には、ガイド生成部33は、工程1の教示データに含まれるガイドデータから、固定ガイドSG1のガイド位置を取得する。また、ガイド生成部33は、取得したガイド位置に基づいて、ステップS200で取得した撮像画像上に、固定ガイドSG1を生成する(図10(A))。
それから、視覚サーボ制御部31は、部品W1の特徴を抽出する(ステップS220)。具体的には、特徴抽出部32は、工程1の教示データに含まれるガイドデータから、部品W1の特徴位置を取得する。また、特徴抽出部32は、ステップS200で取得された撮像画像に対して、取得した特徴位置から特定される画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W1の特徴位置と合致する特徴を特定する。なお、特徴位置の合致は、例えば、部品W1の特徴位置を構成する各画素の配置と、抽出した特徴を構成する各画素の配置との一致率(例えば90%以上の一致率)で判断することができる。このようにして、撮像画像上に、部品W1の特徴位置F1が抽出及び特定される(図10(A))。
それから、視覚サーボ制御部31は、部品W1に対応するガイドG1を生成する(ステップS230)。具体的には、ガイド生成部33は、工程1の教示データに含まれるガイドデータから、部品W1のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS220で抽出及び特定された部品W1の特徴位置F1を基準に、取得したガイド位置が示す位置に、対象物ガイドG1を設定する。このようにして、撮像画像上に、特徴位置F1を基準として、対象物ガイドG1が設定される(図10(A))。
それから、視覚サーボ制御部31は、視覚サーボを実行する(ステップS240)。具体的には、視覚サーボ制御部31は、撮像画像から、生成されたガイド以外の画像情報を削除する。それから、視覚サーボ制御部31は、工程1の教示データに基づいて、固定ガイドSG1(基準位置)に、対象物ガイドG1(基準位置)を、一致させるように、視覚サーボを実行する(図10(A))。なお、視覚サーボ制御部31は、対象物ガイドG1が固定ガイドSG1から所定距離内に位置しない場合には、制御命令を生成してロボットのアームを動作させる(エンドポイントを移動させる)。一方、視覚サーボ制御部31は、対象物ガイドG1が固定ガイドSG1から所定距離内に位置する場合には、制御命令を生成せずに、工程1の視覚サーボは収束していると判断する(図10(B))。
それから、視覚サーボ制御部31は、視覚サーボが収束しているか否かを判定する(ステップS250)。具体的には、視覚サーボ制御部31は、ステップS240において収束していると判断した場合には(ステップS250:Y)、処理をステップS260に進める。一方、ステップS240において収束していないと判断した場合には(ステップS250:N)、処理をステップS200に戻す。
ステップS240の視覚サーボが収束している場合(ステップS250:Y)、画像取得部34は、撮像装置5を制御して撮像を行わせ、撮像画像を取得する(ステップS260)。
それから、視覚サーボ制御部31は、固定ガイドSG1を生成する(ステップS270)。具体的には、ガイド生成部33は、工程2の教示データに含まれるガイドデータから、固定ガイドSG1のガイド位置を取得する。また、ガイド生成部33は、取得したガイド位置に基づいて、ステップS260で取得した撮像画像上に、固定ガイドSG1を生成する(図10(B))。
それから、視覚サーボ制御部31は、部品W2の特徴を抽出する(ステップS280)。具体的には、特徴抽出部32は、工程2の教示データに含まれるガイドデータから、部品W2の特徴位置を取得する。また、特徴抽出部32は、ステップS260で取得された撮像画像に対して、取得した特徴位置から特定される画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W2の特徴位置と合致する特徴を特定する。なお、特徴位置の合致は、例えば、部品W2の特徴位置を構成する各画素の配置と、抽出した特徴を構成する各画素の配置との一致率(例えば90%以上の一致率)で判断することがきる。このようにして、撮像画像上に、部品W2の特徴位置F2が抽出及び特定される(図10(B))。
それから、視覚サーボ制御部31は、部品W2に対応するガイドG2を生成する(ステップS290)。具体的には、ガイド生成部33は、工程2の教示データに含まれるガイドデータから、部品W2のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS280で抽出及び特定された部品W2の特徴位置F2を基準に、取得したガイド位置が示す位置に、対象物ガイドG2を設定する。このようにして、撮像画像上に、特徴位置F2を基準として、対象物ガイドG2が設定される(図10(B))。
それから、視覚サーボ制御部31は、視覚サーボを実行する(ステップS300)。具体的には、視覚サーボ制御部31は、撮像画像から、生成されたガイド以外の画像情報を削除する。それから、視覚サーボ制御部31は、工程2の教示データに基づいて、固定ガイドSG1(基準位置)に、所定のオフセット距離(基準位置からX方向にmピクセル)で、対象物ガイドG2(基準位置)を一致させるように、視覚サーボを実行する(図10(B))。なお、視覚サーボ制御部31は、対象物ガイドG2が、固定ガイドSG1を基準とするオフセット位置E1から所定距離内に位置しない場合には、制御命令を生成してロボットのアームを動作させる(エンドポイントを移動させる)。一方、視覚サーボ制御部31は、対象物ガイドG2が、オフセット位置E1から所定距離内に位置する場合には、制御命令を生成せずに、工程2の視覚サーボは収束していると判断する(図11(A))。
それから、視覚サーボ制御部31は、視覚サーボが収束しているか否かを判定する(ステップS310)。具体的には、視覚サーボ制御部31は、ステップS300において収束していると判断した場合には(ステップS310:Y)、処理をステップS320に進める。一方、ステップS300において収束していないと判断した場合には(ステップS310:N)、処理をステップS260に戻す。
ステップS300の視覚サーボが収束した場合(ステップS310:Y)、視覚サーボ制御部31は、ロボットの所定の動作を行う(ステップS320)。具体的には、視覚サーボ制御部31は、工程3の教示データに基づいて、対象物ガイドG2(基準位置)が、所定の距離(X方向にnピクセル)移動するように、ロボットのアームを動作させる(図11(B))。ステップS320の処理は、視覚サーボで行ってもよいし、位置制御で行ってもよい。そして、視覚サーボ制御部31は、図9に示すフローチャートの処理を終了する。なお、図9に示すフローチャートの終了後、制御部3は、例えば、位置制御、インピーダンス制御などによりロボット2を制御し、部品W2を部品W1に嵌め込む。
以上のようにして、撮像画像に対して対象物ガイドと固定ガイドが生成され、これらのガイドを一致させるような視覚サーボが実行される。
図12は、ロボットが行う第二の作業例を示す図である。第二の作業例は、部品W4に形成されているネジ穴にネジW3bを挿入して締める、というものである。ネジW3bの移動及びネジ締めには、ドライバーW3aを使用する。視覚サーボでネジW3bの移動を開始する事前に、ドライバーW3aの磁性を帯びた先端にネジW3aの頭を固定する。なお、ロボット2は、部品又はドライバーW3aをハンド22で把持することで、部品を移動させることができるため、把持動作に関する説明は省略する。
教示処理は、図6と基本的に同様であるが、固定ガイドの設定(図6のステップS110)が不要である。なお、モデルデータ格納部45には、部品W4のモデルデータと、ドライバーW3aにネジW3bが固定された状態(以下、「部品W3」と呼ぶ。)のモデルデータが予め格納されている。
まず、ガイド設定部42は、ユーザーから入力部40を介して、モデルデータ格納部45に格納されているモデルデータの中から、作業に必要な各部品(部品W3、部品W4)のモデルデータの選択を受け付ける。
また、ガイド設定部42は、選択された各モデルデータに対して、特徴位置を抽出する所定の画像処理を実行し、特徴位置を抽出する。なお、ガイド設定部42は、各モデルデータに対して、使用する画像処理アルゴリズムの選択及び設定を、ユーザーから受け付けるようにしてもよい。また、ガイド設定部42は、モデルデータとともに抽出した特徴位置を示す画像を、表示部41に表示させる。例えば、図13(A)(部品W3に設定されるガイドの一例を示す図)に示すように、部品W3のモデルデータW3とともに、抽出された特徴位置F3(破線で示す。)が表示される。また、例えば、図13(B)(部品W4に設定されるガイドの一例を示す図)に示すように、部品W4のモデルデータW4とともに、抽出された特徴位置F4(破線で示す。)が表示される。
また、ガイド設定部42は、表示されている画像に対して、ガイド位置の指定を、ユーザーから入力部40を介して受け付ける。例えば、図13(A)では、部品W3のネジの先端部分に対応させてガイドG3が設定されている。また、例えば、図13(B)では、部品W4のネジ穴に対応させてガイドG4が設定されている。
ガイド設定部42は、モデルデータに対するガイド位置(基準位置、方向成分)が指定されると、指定されたガイド位置の基準位置を、抽出された特徴位置に対する相対位置を示す情報に変換する。そして、ガイド設定部42は、当該対象物ガイドに対して割り当てたID又はユーザーから指定されたIDと、ガイド位置(変換された基準位置、方向成分)と、抽出された特徴位置(特徴位置を特定する情報、当該特徴位置を抽出するために使用される画像処理アルゴリズムに関する情報)とを関連付けたレコードを、ガイドデータ格納部46の対象物ガイドデータに追加する。
それから、教示データ生成部43は、第二の作業例を実現するロボット2の各工程の設定を、ユーザーから入力部40を介して受け付ける。教示データ生成部43は、例えば下記のように、ガイドの指定及びガイドを目標位置に移動させる命令を含む教示を受け付け、工程番号471と教示内容472として、教示データ格納部47の教示データに追加する。
工程1:対象物ガイドG4(基準位置)に、所定のオフセット距離(基準位置からZ方向にmピクセル)で、対象物ガイドG3(基準位置)を一致させる。
工程2:対象物ガイドG3(基準位置)を、所定の距離(Z方向にnピクセル)移動する。
なお、工程2は、部品W3の部品W4に対するネジ締め動作の準備動作である。
また、教示データ生成部43は、各工程の教示内容472に、当該教示内容で指定されているガイド(対象物ガイドG3、対象物ガイドG4)のガイドデータを設定する。
それから、教示データ送信部44は、生成された教示データを、ロボット2に送信する。
図14は、第二の作業例における視覚サーボ処理の一例を示すフロー図である。図15(第二の作業例における視覚サーボの経過を視覚的に説明する図(その1))、及び図16(第二の作業例における視覚サーボの経過を視覚的に説明する図(その2))を参照しながら説明する。なお、説明を分かり易くするため、図15及び図16では、ロボット2のハンド22等は省略している。
教示装置4から送信された教示データは、教示データ受信部30により受信され、教示データ格納部35に格納されているものとする。視覚サーボ制御部31は、教示データの各工程の教示内容に基づいて、ロボット2の動作を制御する。なお、ステップS400〜S470は、上述の「工程1」に対応する。また、ステップS480は、上述の「工程2」に対応する。
まず、画像取得部34は、撮像装置5を制御して撮像を行わせ、撮像画像を取得する(ステップS400)。
それから、視覚サーボ制御部31は、部品W4の特徴を抽出する(ステップS410)。具体的には、特徴抽出部32は、工程1の教示データに含まれるガイドデータから、部品W4の特徴位置を取得する。また、特徴抽出部32は、ステップS400で取得された撮像画像に対して、取得した特徴位置から特定される画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W4の特徴位置と合致する特徴位置を特定する。このようにして、撮像画像上に、部品W4の特徴位置F4が抽出される(図15(A))。
それから、視覚サーボ制御部31は、部品W4に対応するガイドG4を生成する(ステップS420)。具体的には、ガイド生成部33は、工程1の教示データに含まれるガイドデータから、部品W4のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS410で抽出及び特定された部品W4の特徴位置F4を基準に、取得したガイド位置が示す位置に、対象物ガイドG4を設定する。このようにして、撮像画像上に、特徴位置F4を基準として、対象物ガイドG4が設定される(図15(A))。
それから、視覚サーボ制御部31は、部品W3の特徴を抽出する(ステップS430)。具体的には、特徴抽出部32は、工程1の教示データに含まれるガイドデータから、部品W3の特徴位置を取得する。また、特徴抽出部32は、ステップS400で取得された撮像画像に対して、取得した特徴位置から特定される画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W3の特徴位置と合致する特徴位置を特定する。このようにして、撮像画像上に、部品W3の特徴位置F3が抽出される(図15(B))。
それから、視覚サーボ制御部31は、部品W3に対応するガイドG3を生成する(ステップS440)。具体的には、ガイド生成部33は、工程1の教示データに含まれるガイドデータから、部品W3のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS430で抽出及び特定された部品W3の特徴位置F3を基準に、取得したガイド位置が示す位置に、対象物ガイドG3を設定する。このようにして、撮像画像上に、特徴位置F3を基準として、対象物ガイドG3が設定される(図15(B))。
それから、視覚サーボ制御部31は、視覚サーボを実行する(ステップS460)。具体的には、視覚サーボ制御部31は、撮像画像から、生成されたガイド以外の画像情報を削除する。それから、視覚サーボ制御部31は、工程1の教示データに基づいて、対象物ガイドG4(基準位置)に、所定のオフセット距離(基準位置からZ方向にmピクセル)で、対象物ガイドG3(基準位置)を一致させるように、視覚サーボを実行する(図15(B))。なお、視覚サーボ制御部31は、対象物ガイドG3が、対象物ガイドG4を基準とするオフセット位置E4から所定距離内に位置しない場合には、制御命令を生成してロボットのアームを動作させる(エンドポイントを移動させる)。一方、視覚サーボ制御部31は、対象物ガイドG3が、オフセット位置E4から所定距離内に位置する場合には、制御命令を生成せずに、工程1の視覚サーボは収束していると判断する(図16(A))。
それから、視覚サーボ制御部31は、視覚サーボが収束しているか否かを判定する(ステップS470)。具体的には、視覚サーボ制御部31は、ステップS460において収束していると判断した場合には(ステップS470:Y)、処理をステップS480に進める。一方、ステップS460において収束していないと判断した場合には(ステップS470:N)、処理をステップS400に戻す。
ステップS460の視覚サーボが収束した場合(ステップS470:Y)、視覚サーボ制御部31は、ロボットの所定の動作を行う(ステップS480)。具体的には、視覚サーボ制御部31は、工程2の教示データに基づいて、対象物ガイドG3(基準位置)を、所定の距離(Z方向にnピクセル)移動するように、ロボットのアームを動作させる(図16(B))。そして、視覚サーボ制御部31は、図14に示すフローチャートの処理を終了する。なお、図14に示すフローチャートの終了後、制御部3は、例えば、位置制御、インピーダンス制御などによりロボット2を制御するとともに、ハンド22を回転させるか、またはドライバーW3aの押し付け動作によってネジ締めを行うことができる場合にはハンド22を押し付け、ネジW3bを部品W4に取り付ける。
以上のようにして、撮像画像に対して複数の対象物ガイドが生成され、これらのガイドを一致させるような視覚サーボが実行される。
本実施形態によれば、撮像画像(現在画像)に対してガイドが二つ生成され、これらのガイドを用いて視覚サーボ制御が実行される。目標画像と現在画像の二つの画像の差異を評価する必要がないため、明るさなどの作業環境が変化する場合であっても、精度が高く安定した視覚サーボを実現することができる。
また、本実施形態によれば、特徴を抽出するための画像処理アルゴリズムが、作業環境に応じてユーザーにより設定される。また、当該設定された画像処理アルゴリズムによりガイドが設定される。これにより、目標画像と現在画像の差異を精度よく評価できないような作業環境であっても、ガイドを精度よく生成できるため、作業環境に影響されない安定した視覚サーボを実現できる。
また、本実施形態によれば、撮像画像(現在画像)に対して目標位置であるガイドが生成されるため、予め目標画像を用意しておく必要がない。そのため、より簡単に精度が高い安定した視覚サーボを実現することができる。
また、本実施形態では、固定ガイドは、撮像範囲に対して所定位置に生成されるため、撮像装置の配置や撮像方向の変化に影響されない。また、撮像画像から特徴を抽出するような画像処理が必要なくなるため、処理負荷が軽減される。さらに、撮像装置の配置及び撮像方向に対して、ロボットの機械的な精度が高い姿勢(例えば、自重によるアームのたわみの影響が小さい)を取り得る空間的範囲が分かる場合には、その範囲内に目標位置であるガイド(固定ガイド又は対象物ガイド)を設定することで、簡単に精度が高い安定したロボット動作を実現できる。
<本発明の実施形態の変形例>
次に、上記の実施形態の視覚サーボ処理の変形例について説明する。なお、変形例の記載にあたっては、上記の実施形態と同一の構成、処理については同一の符号を付し、その説明を省略する。
本変形例では、一つの作業対象物について、特徴位置を抽出する画像処理アルゴリズムを複数設定可能とする。また、それぞれの画像処理アルゴリズムについて、ガイド位置を設定可能とする。また、ある画像処理アルゴリズムを用いた特徴位置の抽出及び特定に失敗した場合に、他の画像処理アルゴリズムを用いる。
以下、図17〜図21を参照して、ロボット2が行う第二の作業例に基づいて説明する。なお、モデルデータ格納部45には、部品W4のモデルデータと、ドライバーW3aにネジW3bが固定された状態(以下、「部品W3」と呼ぶ。)のモデルデータが予め格納されている。また、部品W3およびそのモデルデータには、特徴抽出に使用されるマーカーが付されているものとする。
ガイド設定部42は、ユーザーにより選択されたモデルデータに対して、使用する複数の画像処理アルゴリズムの選択及び設定を、ユーザーから受け付ける。また、ガイド設定部42は、それぞれの画像処理アルゴリズムについて、モデルデータとともに抽出した特徴位置を示す画像を、表示部41に表示させる。また、ガイド設定部42は、それぞれの画像処理アルゴリズムについて、表示されている画像に対して、ガイド位置の指定を、ユーザーから入力部40を介して受け付ける。
例えば、図17(A1)では、ガイド設定部42は、部品W3のモデルデータに対して、予めモデルデータ格納部45に格納されているネジW3bのモデルデータにより、マッチングを行い、ネジW3bの特徴位置F3a(破線で示す。)を抽出する。また、ガイド設定部42は、特徴位置F3aに対応するガイドG3a(X印で示す。)の指定をユーザーから受け付ける。本図では、部品W3のネジの先端部分に対応させてガイドG3aが設定されている。
また、例えば、図17(A2)では、ガイド設定部42は、部品W3のモデルデータに対して、エッジ検出などの画像処理を行い、特徴位置F3b(破線で示す。)を抽出する。また、ガイド設定部42は、特徴位置F3bに対応するガイドG3b(X印で示す。)の指定をユーザーから受け付ける。本図では、部品W3のネジの先端部分に対応させてガイドG3bが設定されている。
また、例えば、図17(A3)では、ガイド設定部42は、部品W3のモデルデータに対して、マーカーを検出する画像処理(例えば、マーカーの色を検出する)を行い、特徴位置F3c(破線で示す。)を抽出する。また、ガイド設定部42は、特徴位置F3cに対応するガイドG3c(X印で示す。)の指定をユーザーから受け付ける。本図では、ガイドG3cは、マーカー上に設定されている。
例えば、図18(A1)では、ガイド設定部42は、部品W4のモデルデータに対して、予めモデルデータ格納部45に格納されているネジ穴のモデルデータにより、マッチングを行い、ネジ穴の特徴位置F4a(破線で示す。)として抽出する。また、ガイド設定部42は、特徴位置F4aに対してガイドG4a(X印で示す。)の指定をユーザーから受け付ける。本図では、部品W4のネジ穴に対応させてガイドG4aが設定されている。
また、例えば、図18(A2)では、ガイド設定部42は、部品W4のモデルデータに対して、エッジ検出などの画像処理を行い、特徴位置F4b(破線で示す。)を抽出する。また、ガイド設定部42は、特徴位置F4bに対してガイドG4b(X印で示す。)の指定をユーザーから受け付ける。本図では、部品W4のネジ穴に対応させてガイドG4bが設定されている。
また、例えば、図18(A3)では、ガイド設定部42は、部品W4のモデルデータに対して、図18(A2)の場合とは異なるエッジ検出などの画像処理を行い、特徴位置F4c(破線で示す。)を抽出する。また、ガイド設定部42は、特徴位置F4cに対してガイドG4c(X印で示す。)の指定をユーザーから受け付ける。本図では、ガイドG4cは、部品W4のネジ穴から、一定距離離れた位置に設定されている。
ガイド設定部42は、モデルデータに対するガイド位置(基準位置、方向成分)が指定されると、指定されたガイド位置の基準位置を、抽出された特徴位置に対する相対位置を示す情報に変換する。そして、ガイド設定部42は、当該対象物ガイドに対して割り当てたID又はユーザーから指定されたIDと、ガイド位置(変換された基準位置、方向成分)と、抽出された特徴位置(特徴位置を特定する情報、当該特徴位置を抽出するために使用される画像処理アルゴリズムに関する情報)とを関連付けたレコードを、ガイドデータ格納部46の対象物ガイドデータに追加する。このようにして、一つの対象物について、画像処理アルゴリズムが異なる複数の対象物ガイドが設定される。
また、ガイド設定部42は、各対象物に設定される複数種類の対象物ガイドについて、使用する優先順位の指定をユーザーから受け付け、ガイドデータとともに格納する。例えば、部品W3のガイドについては、図17(A1)、(A2)、(A3)の順で優先順位が指定される。また、例えば、部品W4のガイドについては、図18(A1)、(A2)、(A3)の順で優先順位が指定される。
教示データ生成部43は、第二の作業例を実現するロボット2の各工程の設定を、ユーザーから入力部40を介して受け付ける。教示データ生成部43は、上述した第二作業例の工程と同様の教示を受け付け、工程番号471と教示内容472として、教示データ格納部47の教示データに追加する。
また、教示データ生成部43は、各工程の教示内容472に、当該教示内容で指定されているガイド(対象物ガイドG3a、G3b、G3c、対象物ガイドG4a、G4b、G4c)のガイドデータを設定する。また、教示データ生成部43は、各工程の教示内容に472に、各対象物ガイドの優先順位を設定する。
また、教示データ生成部43は、複数のガイドを用いた視覚サーボの目標条件の設定を、ユーザーから入力部40を介して受け付け、教示データに設定する。目標条件は、例えば、対象物ガイドG3a、G3b、及びG3cのいずれかと、対象物ガイドG4a、G4b、及びG4cのいずれかの組み合わせである。組み合わせを複数設定できるようにしてもよい。
それから、教示データ送信部44は、生成された教示データを、ロボット2に送信する。
図19は、第二の作業例における視覚サーボ処理の変形例を示すフロー図である。図20(第二の作業例における視覚サーボの変形例の経過を視覚的に説明する図(その1))、及び図21(第二の作業例における視覚サーボの変形例の経過を視覚的に説明する図(その2))を参照しながら説明する。なお、説明を分かり易くするため、図20及び図21では、ロボット2のハンド22等は省略している。
なお、ステップS500〜S630は、上述の「工程1」に対応する。また、ステップS640は、上述の「工程2」に対応する。
まず、画像取得部34は、撮像装置5を制御して撮像を行わせ、撮像画像を取得する(ステップS500)。
それから、視覚サーボ制御部31は、部品W4から抽出する特徴を選択する(ステップS510)。具体的には、特徴抽出部32は、工程1の教示データに含まれる部品W4の複数のガイドデータから、指定された優先順位に従って、未選択のガイドデータを選択する。なお、優先順位は、例えば、図18(A1)、(A2)、(A3)の順で指定されている。
それから、視覚サーボ制御部31は、部品W4の特徴を抽出する(ステップS520)。具体的には、特徴抽出部32は、ステップS510で選択した部品W4のガイドデータから、部品W4の特徴位置を取得する。また、特徴抽出部32は、ステップS500で取得された撮像画像に対して、取得した特徴位置で指定されている画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W4の特徴位置と合致する特徴位置を特定する。
ここで、ステップS520の処理では、照明の明るさや、部品W3及び部品W4の位置関係などの作業環境によって、部品W4の特徴位置が特定できないことがある。例えば、図20(A)に示すように、部品W4のネジ穴が部品W3により隠れている場合、上述した図18(A1)の特徴位置F4aや、図18(A2)の特徴位置F4bを抽出及び特定することができない。
それから、視覚サーボ制御部31は、対象物W4の特徴抽出に成功したか否かを判定する(ステップS530)。すなわち、特徴抽出部32は、ステップS520の結果に基づいて、ステップS510で選択した部品W4の特徴位置の抽出及び特定に成功したか否かを判定する。
部品W4の特徴位置の抽出に失敗した場合(ステップS530:N)、視覚サーボ制御部31は、他に部品W4の特徴があるか否かを判定する(ステップS540)。具体的には、特徴抽出部32は、工程1の教示データに含まれる部品W4の複数のガイドデータに、未選択のガイドデータがあるか否かを判定する。
未選択の特徴がない場合(ステップS540:N)、視覚サーボ制御部31は、図19に示すフローチャートの処理を終了する。未選択の特徴がある場合(ステップS540:Y)、視覚サーボ制御部31は、処理をステップS510に戻す。
一方、部品W4の特徴位置の抽出に成功した場合(ステップS530:Y)、視覚サーボ制御部31は、部品W4に対応するガイドG4を生成する(ステップS550)。具体的には、ガイド生成部33は、ステップS510で最後に選択した部品W4のガイドデータから、部品W4のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS520で最後に抽出及び特定された部品W4の特徴位置F4を基準に、取得したガイド位置が示す位置に、対象物ガイドG4を設定する。このようにして、撮像画像上に、選択された特徴位置F4を基準として、対象物ガイドG4が設定される。
例えば、図20(B)では、図18(A1)の特徴位置F4aや、図18(A2)の特徴位置F4bの代わりに、図18(A3)の特徴位置F4cが特定され、当該特徴位置に対応するガイドG4cが設定された場合を示している。
それから、視覚サーボ制御部31は、部品W3から抽出する特徴を決定する(ステップS560)。具体的には、特徴抽出部32は、工程1の教示データに含まれる部品W3の複数のガイドデータから、指定された優先順位に従って、未選択のガイドデータを決定する。なお、優先順位は、例えば、図17(A1)、(A2)、(A3)の順で指定されている。
それから、視覚サーボ制御部31は、部品W3の特徴を抽出する(ステップS570)。具体的には、特徴抽出部32は、ステップS560で選択した部品W3のガイドデータから、部品W3の特徴位置を取得する。また、特徴抽出部32は、ステップS500で取得された撮像画像に対して、取得した特徴位置で指定されている画像処理アルゴリズムを実行し、特徴を抽出する。また、特徴抽出部32は、抽出した特徴の中から、取得した部品W3の特徴位置と合致する特徴位置を特定する。
ここで、ステップS570の処理では、照明の明るさや、部品W3及び部品W4の位置関係などの作業環境によって、部品W3の特徴位置が特定できないことがある。
それから、視覚サーボ制御部31は、対象物W3の特徴抽出に成功したか否かを判定する(ステップS580)。すなわち、特徴抽出部32は、ステップS570の結果に基づいて、ステップS560で選択した部品W3の特徴位置の抽出及び特定に成功したか否かを判定する。
部品W3の特徴位置の抽出に失敗した場合(ステップS580:N)、視覚サーボ制御部31は、他に部品W3の特徴があるか否かを判定する(ステップS590)。具体的には、特徴抽出部32は、工程1の教示データに含まれる部品W3の複数のガイドデータに、未選択のガイドデータがあるか否かを判定する。
未選択の特徴がない場合(ステップS590:N)、視覚サーボ制御部31は、図19に示すフローチャートの処理を終了する。未選択の特徴がある場合(ステップS590:Y)、視覚サーボ制御部31は、処理をステップS560に戻す。
一方、部品W3の特徴位置の抽出に成功した場合(ステップS580:Y)、視覚サーボ制御部31は、部品W3に対応するガイドG3を生成する(ステップS600)。具体的には、ガイド生成部33は、ステップS560で最後に選択した部品W3のガイドデータから、部品W3のガイド位置(特徴位置に対する相対位置を示す。)を取得する。また、ガイド生成部33は、ステップS570で最後に抽出及び特定された部品W3の特徴位置F3を基準に、取得したガイド位置が示す位置に、対象物ガイドG3を設定する。このようにして、撮像画像上に、選択された特徴位置F3を基準として、対象物ガイドG3が設定される。
例えば、図21(A)では、図17(A1)の特徴位置F3aや、図17(A2)の特徴位置F3bの代わりに、図17(A3)の特徴位置F3cが特定され、当該特徴位置に対応するガイドG3cが設定された場合を示している。
それから、視覚サーボ制御部31は、視覚サーボを実行する(ステップS610)。具体的には、視覚サーボ制御部31は、撮像画像から、生成されたガイド以外の画像情報を削除する。それから、視覚サーボ制御部31は、工程1の教示データに基づいて、対象物ガイドG4(基準位置)に、所定のオフセット距離(基準位置からZ方向にmピクセル)で、対象物ガイドG3(基準位置)を一致させるように、視覚サーボを実行する。なお、対象物ガイドG4は、ステップS550で最後に生成されたものであり、対象物ガイドG3は、ステップS600で最後に生成されたものである。視覚サーボ制御部31は、対象物ガイドG3が、対象物ガイドG4を基準とするオフセット位置から所定距離内に位置しない場合には、制御命令を生成してロボットのアームを動作させる(エンドポイントを移動させる)。一方、視覚サーボ制御部31は、対象物ガイドG3が、オフセット位置から所定距離内に位置する場合には、制御命令を生成せずに、工程1の視覚サーボは収束していると判断する。
例えば、図21(A)では、図18(A3)のガイドG4cからの所定のオフセット位置E4cに、図17(A3)のガイドG3cを一致させる場合を示している。また、図21(B)では、ガイドG3cがガイドG4cを基準とするオフセット位置E4cに収束した場合を示している。
それから、視覚サーボ制御部31は、視覚サーボが収束しているか否かを判定する(ステップS620)。具体的には、視覚サーボ制御部31は、ステップS610において収束していると判断した場合には(ステップS620:Y)、処理をステップS630に進める。一方、ステップS610において収束していないと判断した場合には(ステップS620:N)、処理をステップS500に戻す。
ステップS610の視覚サーボが収束した場合(ステップS620:Y)、視覚サーボ制御部31は、視覚サーボが目標条件を満たしているか否かを判定する(ステップS630)。具体的には、視覚サーボ制御部31は、例えば、ステップS610で最後に使用したガイドG4とガイドG3の組み合わせが、教示データで指定されている対象物ガイドの組み合わせと同じであるか否かを判定する。使用した対象物ガイドの組み合わせが指定された対象物ガイドの組み合わせと異なる場合(ステップS630:N)、視覚サーボ制御部31は、処理をステップS500に戻す。
使用した対象物ガイドの組み合わせが指定された対象物ガイドの組み合わせと同じである場合(ステップS630:Y)、視覚サーボ制御部31は、ロボットの所定の動作を行う(ステップS640)。具体的には、視覚サーボ制御部31は、工程2の教示データに基づいて、対象物ガイドG3(基準位置)を、所定の距離(Z方向にnピクセル)移動するように、ロボットのアームを動作させる(図16(B))。なお、対象物ガイドG3は、ステップS600で最後に生成されたものである。そして、視覚サーボ制御部31は、図19に示すフローチャートの処理を終了する。なお、図19に示すフローチャートの終了後、制御部3は、例えば、位置制御、インピーダンス制御などによりロボット2を制御するとともに、ハンド22を回転させるか、またはドライバーW3aの押し付け動作によってネジ締めを行うことができる場合にはハンド22を押し付け、ネジW3bを部品W4に取り付ける。
以上のようにして、ガイドの設定に失敗した場合には、他のガイドが設定され、視覚サーボが実行される。
上記の実施形態の変形例によれば、特徴を抽出するための画像処理アルゴリズムが、作業環境に応じてユーザーにより複数設定される。また、ある画像処理アルゴリズムによりガイドの設定に失敗しても、他の画像処理アルゴリズムによりガイドが設定される。これにより、作業環境が変化することによってガイドが生成できなくなることを防ぎ、視覚サーボを継続することができる。また、作業環境に影響されない安定した視覚サーボを実現できる。
なお、上記の実施形態の変形例では、部品W3と部品W4の両方にそれぞれ複数のガイドを用意しているが、一方の部品には一つのガイドを用意するようにしてもよい。また、上記の実施形態の変形例は、第二の作業例に限られず、第一の作業例についても同様に適用できる。すなわち、部品W1及び部品W2の少なくとも一方に対して複数のガイドを用意し、あるガイドデータに基づく特徴抽出に失敗した場合に他のガイドデータに基づく特徴抽出を行うようにすればよい。また、対象物ガイドG1と固定ガイドSG1に基づく視覚サーボの目標条件と、対象物ガイドG2と固定ガイドSG1に基づく視覚サーボの目標条件とをそれぞれ設定し、それぞれの視覚サーボの収束判定の直後に目標条件の判定を行うようにすればよい。
<その他の変形例>
上記の実施形態及びその変形例では、ガイド設定部42は、所定の画像処理アルゴリズム(ユーザーにより指定されてもよい。)により抽出される特徴位置に対して、一つガイド位置を設定している。しかし、ガイド設定部42は、抽出された特徴位置(例えば、エッジなど)を表示部41に表示し、抽出された特徴位置の中から任意の特徴位置(例えば、抽出されたエッジの一部など)の指定を、ユーザーから入力部40を介して受け付けてもよい。そして、ガイド設定部42は、指定された特徴位置に対して、ガイド位置の指定を受け付け、ガイドデータを生成するようにしてもよい。この場合、ガイドデータには、ガイド位置(変換された基準位置、方向成分)と、ユーザーにより指定された特徴位置(特徴位置を特定する情報、当該特徴位置を抽出するために使用される画像処理アルゴリズムに関する情報)とが含まれる。もちろん、抽出された特徴位置の中から、任意の複数の特徴位置を受け付け、それぞれの指定された特徴位置に対してガイド位置の指定を受け付けるようにしてもよい。このようにすることで、特徴位置およびガイドの設定の柔軟性を高めることができる。
図示した各フローチャートの各処理単位は、教示装置4及び制御部3の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。教示装置4及び制御部3の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
以上、本発明について実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。本発明の提供の態様にも、様々な態様が取り得る。本発明は、例えば、ロボットと、制御部(制御装置)と、教示装置とを別個に有するロボットシステムとして提供してもよいし、ロボットの制御部に教示装置の機能が含まれるロボットとして提供してもよいし、ロボットと、教示装置の機能を含む制御部(制御装置)とを別個に有するロボットシステムとして提供してもよい。また、本発明は、教示方法、教示装置のプログラム、ロボットの制御方法、ロボットの制御プログラム、ロボットシステムの制御方法、プログラムを記憶した記憶媒体などとしても提供することもできる。