以下、一施形態について、図面を参照しつつ説明する。本実施形態は、機械組立工場等において、機械等の組み立てを行う産業用ロボットのティーチングシステムとして具体化している。
図1は、ロボットのティーチングシステムの概要を示す模式図である。同図に示すように、このロボットのティーチングシステムは、ロボット10、カメラ14、ロボットコントローラ20、ティーチングペンダント30、画像処理装置40、及びティーチング棒60を備えている。
ロボット10は、複数の関節を有するアームを動作させる垂直多関節型のロボットであり、ベース11及びアーム12を備えている。ロボット10には、ロボット10の動作を制御するロボットコントローラ20が接続されている。アーム12の先端部、すなわちツール取付面13には、カメラ14が取り付けられている。
ロボット10には、ロボットのベース11に固定されたロボット座標系Σbと、ツール取付面13に固定されたメカニカルインターフェース座標系Σfとが設定されている。ロボットコントローラ20は、随時、メカニカルインターフェース座標系Σfの原点の位置及び姿勢(現在位置)を取得することができる。
ロボットコントローラ20には、手動操作キー等を備えたティーチングペンダント30(教示操作器)が接続されている。その手動操作キー等をオペレータ(作業者)が操作することにより、ロボット10の動作が操作される。
カメラ14(画像取得部)は、例えばCCDカメラにより構成されており、撮像により2次元画像を受光面(CCDアレイ面上)で検出する機能を有する受光デバイスである。カメラ14は、画像処理装置40に接続されている。画像処理装置40は、LCD、CRT等からなるモニタ40aを備えている。本実施形態では、カメラ14は、ティーチング棒60に設けられた表示器により表示されるキャリブレーションボードC(所定図形)の映像を撮像する。ティーチング棒60は、ロボット10を誘導する際に、ロボット座標系Σbで表わされる空間内を、オペレータにより移動させられる。ティーチング棒60は、ロボットコントローラ20に接続されている。
図2は、ロボットコントローラ20を示すブロック図である。同図に示すように、ロボットコントローラ20は、メインCPU21(制御手段)、バス22、メモリ23、ティーチングペンダント用インターフェース24、外部装置用インターフェース25、サーボ制御部26、及び通信インターフェース27等を備えている。メインCPU21(以下、単に「CPU」と称する)は、バス22に接続されている。バス22には、RAM、ROM、不揮発性メモリ等からなるメモリ23、ティーチングペンダント用インターフェース24、外部装置用インターフェース25、サーボ制御部26、及び通信インターフェース27が並列に接続されている。
ティーチングペンダント30は、ティーチングペンダント用インターフェース24に接続されている。ティーチングペンダント30は、CPU、RAM及びROMを含むマイクロコンピュータから構成さる制御部、各種の手動操作キー、ディスプレイ等を備えている。そして、ロボット10の操作に関する情報がディスプレイに表示される。オペレータは、このティーチングペンダント30を手動操作して、ロボットの動作プログラムの作成、修正、登録、また各種パラメータの設定、ティーチングされた動作プログラムの実行、ジョグ送り等を実行する。
メモリ23のROMには、ロボット10及びロボットコントローラ20の基本機能を実行するシステムプログラムが格納されている。メモリ23の不揮発性メモリ(記憶手段)には、アプリケーションに応じてティーチングされるロボット10の動作プログラム、及び関連する設定デーが格納される。メモリ23のRAMは、CPU21が行なう各種演算処理において、データを一時記憶する記憶領域として使用される。
サーボ制御部26は、サーボ制御器#1〜#n(nはロボットの総軸数、n=6)を備えている。サーボ制御部26は、ロボット制御のための演算処理(軌道作成とそれに基づく補間、逆変換等)によって作成された移動指令を受ける。そして、サーボ制御部26は、各軸の回転角度を検出するエンコーダから検出信号を入力するとともに、サーボアンプA1〜Anにトルク指令を出力する。各サーボアンプA1〜Anは、各トルク指令に基づいて、各軸のサーボモータに電流を供給してそれらを駆動する。
通信インターフェース27は、画像処理装置40(図1参照)に接続されている。この通信インターフェース27を介して、画像処理装置40とロボットコントローラ20との間で、計測に関連する指令、計測結果データ等の受渡しが行なわれる。
図3は、画像処理装置40を示すブロック図である。同図に示すように、画像処理装置40は、マイクロプロセッサにより構成されるCPU41を備えている。CPU41には、バスライン42を介して、ROM43、画像処理プロセッサ44、カメラインターフェース45、モニタインターフェース46、入出力機器(I/O)47、フレームメモリ48(画像メモリ)、不揮発性メモリ49、RAM50、及び通信インターフェース51がそれぞれ接続されている。
カメラインターフェース45には、カメラ14が接続されている。カメラインターフェース45を介して撮影指令がカメラ14へ送られた時に、カメラ14の有する電子シャッタ機能により撮影が実行される。そして、カメラインターフェース45を介して、映像信号がグレイスケール信号の形でフレームメモリ48に格納される。
モニタインターフェース46には、モニタ40a(図1参照)としてCRT、LCD等のディスプレイが接続されている。そして、モニタ40aには、カメラ14が撮像中の対象の画像、フレームメモリ48に格納された過去の画像、画像処理プロセッサ44により処理された画像等が必要に応じて表示される。
図1に示すように、カメラ14は、ロボット座標系Σbで表わされる空間内に配置されたティーチング棒60のキャリブレーションボードCを撮像する。フレームメモリ48に格納されたキャリブレーションボードCの映像信号は、画像処理プロセッサ44により解析され、その2次元位置及び大きさ等が求められる。なお、そのためのプログラム、パラメータ等は、不揮発性メモリ49に格納されている。また、RAM50は、CPU41が実行する各種処理に必要なデータを一時記憶する。通信インターフェース51は、上述したロボットコントローラ20の通信インターフェース27を介して、ロボットコントローラ20に接続されている。
また、図1に破線で示すカメラ14の視線Eは、カメラ14の代表点(例えばカメラレンズの中心)からキャリブレーションボードCに向かう直線である。視線Eに関連して、図1に示すカメラ座標系Σvは、カメラ14の代表点(例えばカメラレンズの中心)からキャリブレーションボードCに向かう視線Eを表わす座標系であり、その原点は視線E上に位置し、1つの座標軸(例えばZ軸)が視線Eに一致している。キャリブレーションボード座標系Σcは、キャリブレーションボードCに固定された座標系である。
なお、メカニカルインターフェース座標系Σfは、ツール取付面13の位置及び姿勢を代表する座標系であると同時に、ロボット10の位置及び姿勢を代表する座標系でもある。すなわち、特に断わりのない限り、「ロボット位置」とは「ロボット座標系Σb上での、メカニカルインターフェース座標系Σfの原点の位置」であり、姿勢を含めて考える時には、「ロボット座標系Σb上での、メカニカルインターフェース座標系Σfの原点の位置及び姿勢」を指すものとする。
また、一連の処理を開始する前に、ロボット10のアーム12とカメラ14との位置調整、及びキャリブレーションボードCによるカメラ14のキャリブレーションを行う。そして、画像上のキャリブレーションボードCを意図する方向に意図する距離だけ移動させるためには、ロボット10のアーム12をどう動かせばよいかを求めておく必要がある。すなわち、画像上のキャリブレーションボードCの移動方向及び移動距離と、ロボット10のアーム12の移動方向及び移動距離との関係を事前に求めておく必要がある。詳細説明は省略するが、例えば、図1におけるメカニカルインターフェース座標系ΣfのXYZの任意方向にアーム12を複数回動かし、その都度、受光面上に結像したキャリブレーションボードCの特徴値を検出し、アーム12の各軸の移動方向及び移動距離とこの特徴値の変化との関係を求める方法等を採用することができる。
図4は、ティーチング棒60を示す斜視図である。同図に示すように、ティーチング棒60は、支持棒61、第1円盤部62、第2円盤部63、及び表示器64を備えている。
支持棒61は、長尺状、詳しくは円柱状に形成されており、ロボット10のアーム12の長さよりも長く形成されている。支持棒61の先端には、第1円盤部62が設けられている。第1円盤部62は、円形板状に形成されており、その直径の延長上に支持棒61が配置されている。第1円盤部62には、円形の孔62aが同心状に設けられている。
孔62aの内部には、第2円盤部63が設けられている。第2円盤部63(回転部)は、円形板状(円盤状)に形成されており、第2円盤部63の外径は孔62aの内径よりも若干小さくなっている。第2円盤部63において、支持棒61に垂直な方向の両端部が第1回転軸62bによって支持されている。第1回転軸62bは、モータやギア等で構成される回転機構65により、任意の角度に回転可能とされている。そして、第2円盤部63は、第1回転軸62bを中心軸として、その表裏が入れ替わる方向に回転させられる。回転機構65による第2円盤部63の回転は、上述したティーチングペンダント30(角度変更手段)の操作や、ロボットコントローラ20の指令を通じて制御される。
第2円盤部63には、矩形の孔63aが中央に設けられている。孔63aの内部には、表示器64が設けられている。表示器64(映像表示部)は、矩形板状に形成されており、表示器64の外寸法は孔63aの内寸法よりも若干小さくなっている。表示器64において、支持棒61の延びる方向の両端部中央が第2回転軸63bによって支持されている。第2回転軸63bは、モータやギア等で構成される回転機構65により、任意の角度に回転可能とされている。そして、表示器64は、第2回転軸63bを中心軸として、その表裏が入れ替わる方向に回転させられる。回転機構65による表示器64の回転は、ティーチングペンダント30(角度変更手段)の操作や、ロボットコントローラ20の指令を通じて制御される。
表示器64(映像表示部)は、液晶ディスプレイにより構成されており、キャリブレーションボードC(所定図形)の映像を表示する。キャリブレーションボードCでは、白黒の正方形の升目が、縦方向及び横方向にそれぞれ交互に配置されている。表示器64により表示される映像は、ティーチングペンダント30(映像変更手段)の操作や、ロボットコントローラ20の指令を通じて制御される。具体的には、表示器64により表示されるキャリブレーションボードCの映像について、その大きさ(升目の大きさ)及び向き(表示器64内での表示角度)が変更される。
ここで、画像上のキャリブレーションボードCの移動方向及び移動距離と、ロボット10のアーム12の移動方向及び移動距離との関係を事前に求める場合と同様に、画像上のキャリブレーションボードCの移動方向及び移動距離と、第2円盤部63及び表示器64の回転方向及び回転角度との関係を事前に求めておく。さらに、画像上のキャリブレーションボードCの大きさ及び向きと、表示器64により表示されるキャリブレーションボードCの映像の大きさ及び向きとの関係を事前に求めておく。
次に、上記ティーチング棒60を用いて、ロボット10に基準となる位置及び姿勢をティーチングする処理全体の手順について説明する。図5は、このティーチングの処理手順を示すフローチャートである。
まず、オペレータは、カメラ14の視野内に含まれる位置まで表示器64を移動させる(S10)。具体的には、オペレータは、ティーチング棒60の支持棒61の手元部分を支持して、先端部分に設けられた表示器64を移動させ、カメラ14の視野内に表示器64が含まれるようにする。
続いて、ロボットコントローラ20は、表示器64とロボット10のアーム12との距離が所定距離となるように、アーム12の動作を予備制御する(S20)。具体的には、ロボットコントローラ20は、ティーチング棒60の第2円盤部63を連続的に回転させ、第2円盤部63がカメラ14により所定の直径の円の画像として取得されるように、ロボット10のアーム12の動作を予備制御する。
続いて、ロボットコントローラ20は、カメラ14によりキャリブレーションボードCの映像の画像を取得させる(S30)。具体的には、ロボットコントローラ20は、キャリブレーションボードCの映像の画像がカメラ14により取得されるように、ティーチング棒60の第2円盤部63の角度を回転機構65により調節させる。
続いて、ロボットコントローラ20は、ロボット10のアーム12の動きを、オペレータによる表示器64の動きに追従させる(S40)。具体的には、ロボットコントローラ20は、オペレータによる表示器64の角度調節並びにキャリブレーションボードCの映像の大きさ及び向きの調節に対して、キャリブレーションボードCの映像がカメラ14により所定の目標画像として取得されるように、ロボット10のアーム12の動作を追従制御する。
そして、オペレータは、ロボット10がティーチングする基準位置及び姿勢になったか否か判定する(S50)。この判定において、オペレータは、ロボット10がティーチングする基準位置及び姿勢になっていないと判定した場合には(S50:NO)、再度、オペレータは表示器64の角度調節及びキャリブレーションボードCの映像調節を行い、ロボットコントローラ20は、キャリブレーションボードCの映像がカメラ14により所定の目標画像として取得されるように、ロボット10のアーム12の動作を追従制御する(S40)。
一方、上記判定において、オペレータは、ロボット10がティーチングする基準位置及び姿勢になったと判定した場合には(S50:YES)、オペレータは、ティーチングを終了させる。その場合には、ロボットコントローラ20は、ロボット10の位置及び姿勢をメモリ23に記憶させる。そして、この一連の処理は終了される(END)。
次に、図5で説明したティーチングの各処理の内容を詳細に説明する。
図6は、表示器64とロボット10のアーム12との距離が所定距離となるように、アーム12の動作を予備制御する処理(図5のS20)について、その詳細な手順を示すフローチャートである。
まず、ロボットコントローラ20は、第2円盤部63を連続的に回転させる(S21)。具体的には、ロボットコントローラ20は、ティーチング棒60の回転機構65により、第1回転軸62bを中心軸として、第2円盤部63をその表裏が入れ替わる方向に回転させる。
このように第2円盤部63を連続的に回転させている状態において、ロボットコントローラ20は、カメラ14により第2円盤部63を撮像させて画像を取得させる(S22)。具体的には、ロボットコントローラ20は、カメラ14による撮像の露光時間を一時的に延長させた状態で、連続的に回転している第2円盤部63をカメラ14により撮像させて画像を取得させる。このとき、第2円盤部63の残像によって、球状の物体を撮像した場合と同様の画像が取得される。
図7は、連続回転中の第2円盤部63を撮像した画像を示す図である。同図に示すように、第1回転軸62bを中心軸として、円形板状の第2円盤部63を連続的に回転させると、第2円盤部63が移動する際の軌跡は球を描く。ここで、カメラ14による撮像の露光時間が一時的に延長されているため、第2円盤部63の軌跡は残像となって画像に記録される。その結果、第2円盤部63は、カメラ14が第2円盤部63を撮像する方向にかかわらず、カメラ14により取得される二次元画像上において円の画像として記録される。
図6に戻り、続いてロボットコントローラ20は、画像処理装置40により上記円の直径と重心位置とを算出させる(S23)。具体的には、ロボットコントローラ20は、画像処理装置40の画像処理プロセッサ44によって、カメラ14により取得された上記画像を解析させ、上記円の直径と重心位置(中心位置)とを算出させる。
そして、ロボットコントローラ20は、この算出された円の直径と重心位置とが、それぞれ所定の直径と所定の重心位置とになっているか否か判定する(S24)。具体的には、キャリブレーションボードCの映像(具体的には第2円盤部63の中心)とカメラ14との距離が焦点距離L(所定距離)となるように、上記所定の直径が設定されている。また、上述したカメラ14の視線Eが第2円盤部63の中心に一致するように、上記所定の重心位置が設定されている。
この判定において、算出された円の直径が所定の直径になっていない、又は算出された重心位置が所定の重心位置になっていないと判定した場合には(S24:NO)、ロボットコントローラ20は、ロボット10のアーム12を移動させる(S25)。具体的には、ロボットコントローラ20は、算出される円の直径と重心位置とが、それぞれ所定の直径と所定の重心位置とになるように、ロボット10のアーム12を移動させる。詳しくは、画像上のキャリブレーションボードCの移動方向及び移動距離と、ロボット10のアーム12の移動方向及び移動距離との関係に基づいて、ロボット10のアーム12を移動させる。
一方、この判定において、算出された円の直径と重心位置とが、それぞれ所定の直径と所定の重心位置とになっていると判定した場合には(S24:YES)、ロボットコントローラ20は、ティーチング棒60の回転機構65による第2円盤部63の回転を停止させ、図5のS20以降の処理に戻る(RET)。
図8は、表示器64とロボット10との距離調節の態様を示す斜視図である。図8(a)に示すように、上述した図5のS10の処理によって、カメラ14の視野内に含まれる位置まで表示器64が移動させられている。ここでは、カメラ14により撮像される第2円盤部63の画像において、その画像上の円の直径は上記所定の直径よりも小さくなっており、円の重心位置は所定の重心位置からずれた状態となっている。
したがって、図8(b)に示すように、算出される円の直径と重心位置とが、それぞれ所定の直径と所定の重心位置とになるように、ロボット10のアーム12が移動させられる。その結果、第2円盤部63の中心(第2円盤部63の軌跡により描かれる球の中心)とカメラ14との距離が焦点距離Lになるとともに、カメラ14の視線Eが第2円盤部63の中心に一致する。
図9は、カメラ14によりキャリブレーションボードCの映像の画像を取得させる処理(図5のS30)について、その詳細な手順を示すフローチャートである。
まず、ロボットコントローラ20は、第2円盤部63を一定角度回転させる(S31)。具体的には、ロボットコントローラ20は、ティーチング棒60の回転機構65により、第2円盤部63を一定角度、例えば90°回転させる。したがって、上記予備制御が終了して回転機構65による第2円盤部63の回転が停止された時に、表示器64の裏側がカメラ14に向いている場合であっても、表示器64の向きを変えることができる。また、表示器64とアーム12との位置関係によっては、キャリブレーションボードCの映像がカメラ14により取得されるようにアーム12の動作を制御できない場合であっても、表示器64の向きを変えることにより、キャリブレーションボードCの映像をカメラ14により取得させることができる。
続いて、ロボットコントローラ20は、カメラ14により表示器64を撮像させて画像を取得させる(S32)。具体的には、ロボットコントローラ20は、表示器64により表示されるキャリブレーションボードCの映像を、カメラ14により撮像させて画像を取得させる。
その撮像後に、ロボットコントローラ20は、画像処理装置40によりキャリブレーションボードCの画像を認識できるか否か判定させる(S33)。具体的には、ロボットコントローラ20は、画像処理装置40の画像処理プロセッサ44によって、カメラ14により取得された上記画像を解析させ、画像中のキャリブレーションボードCを認識できるか否か判定させる。この判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できないと判定された場合には(S33:NO)、ロボットコントローラ20は、再度、第2円盤部63を一定角度回転させる(S31)。
一方、上記判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できると判定された場合には(S33:YES)、ロボットコントローラ20は、キャリブレーションボード座標系ΣcのZ軸とメカニカルインターフェース座標系ΣfのZ軸とを一致させるように、第2円盤部63及び表示器64を回転させる(S34)。具体的には、ロボットコントローラ20は、ティーチング棒60の回転機構65により、第1回転軸62bを中心軸として第2円盤部63を回転させるとともに、第2回転軸63bを中心軸として表示器64を回転させる。詳しくは、画像上のキャリブレーションボードCの移動方向及び移動距離と、第2円盤部63及び表示器64の回転方向及び回転角度との関係に基づいて、第2円盤部63及び表示器64を回転させる。
続いて、ロボットコントローラ20は、キャリブレーションボード座標系ΣcのXY軸とメカニカルインターフェース座標系ΣfのXY軸とを一致させるように、表示器64内のキャリブレーションボードCの映像を回転させる(S35)。具体的には、ロボットコントローラ20は、画像上のキャリブレーションボードCの向きと、表示器64により表示されるキャリブレーションボードCの映像の向きとの関係に基づいて、表示器64により表示されるキャリブレーションボードCの映像を回転させる。そして、ロボットコントローラ20は、図5のS30以降の処理に戻る(RET)。
図10は、第2円盤部63の角度と取得される画像との関係を示す図である。図10(a1)に示すように、第2円盤部63を回転させる前においては、キャリブレーションボード座標系ΣcのZ軸とメカニカルインターフェース座標系ΣfのZ軸とが一致していない状態となっている。なお、ここでは、キャリブレーションボード座標系ΣcのXY軸とメカニカルインターフェース座標系ΣfのXY軸とは一致しているものとする。この場合には、図10(b1)に示すように、キャリブレーションボードCの映像をカメラ14により斜めに撮像した画像が取得される。
したがって、図10(a2)に示すように、キャリブレーションボード座標系ΣcのZ軸とメカニカルインターフェース座標系ΣfのZ軸とを一致させるように、第2円盤部63が回転させられる。その結果、図10(b2)に示すように、キャリブレーションボードCの映像をカメラ14により正面から撮像した画像が取得される。すなわち、キャリブレーションボードCの映像の特徴を最も捉え易い状態で、カメラ14によりキャリブレーションボードCの映像が撮像される。
図11は、ロボット10のアーム12の動きを、オペレータによる表示器64の動きに追従させる処理(図5のS40)について、その詳細な手順を示すフローチャートである。
まず、オペレータは、ロボット10のアーム12を基準となる位置及び姿勢に近付けるように、表示器64を移動及び回転させるとともに、表示器64内のキャリブレーションボードCの映像を拡大縮小及び回転させる(S41)。具体的には、オペレータは、ティーチング棒60の支持棒61の手元部分を支持して、先端部分に設けられた表示器64を移動させる。また、オペレータは、ティーチングペンダント30の操作を通じて、ティーチング棒60の回転機構65により第2円盤部63及び表示器64を回転させる。さらに、オペレータは、ティーチングペンダント30の操作を通じて、表示器64により表示されるキャリブレーションボードCの映像を拡大縮小及び回転させる。オペレータは、これらの操作により、ロボット10のアーム12を基準となる位置及び姿勢に近付けるように誘導する。
続いて、ロボットコントローラ20は、カメラ14により表示器64を撮像させて画像を取得させ(S42)、画像処理装置40によりキャリブレーションボードCの画像を認識できるか否か判定させる(S43)。これらの処理は、図9のS32,33の処理と同様であるため、詳細な説明は省略する。この判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できないと判定された場合には(S43:NO)、オペレータは、再度、表示器64を移動及び回転させるとともに、表示器64内のキャリブレーションボードCの映像を拡大縮小及び回転させる(S41)。
一方、上記判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できると判定された場合には(S43:YES)、ロボットコントローラ20は、キャリブレーションボード座標系ΣcのXYZ軸とメカニカルインターフェース座標系ΣfのXYZ軸とを一致させ、且つキャリブレーションボード座標系Σcの原点とカメラ14との距離を焦点距離Lとするように、ロボット10のアーム12を移動させる(S44)。具体的には、ロボットコントローラ20は、画像上のキャリブレーションボードCの移動方向及び移動距離と、ロボット10のアーム12の移動方向及び移動距離との関係に基づいて、ロボット10のアーム12を移動させる。そして、ロボットコントローラ20は、図5のS40以降の処理に戻る(RET)。
その後、オペレータは、ロボット10がティーチングする基準位置及び姿勢になったか否か判定する(図5のS50)。この判定において、ロボット10がティーチングする基準位置及び姿勢になっていないと判定した場合には(S50:NO)、再度、ロボット10のアーム12の動きを、オペレータによる表示器64の動きに追従させる処理が実行される(図5のS40)。このような処理が繰り返されることにより、ロボット10のアーム12が基準となる位置及び姿勢まで誘導される。そして、ティーチング終了時に、ロボット10の位置及び姿勢がメモリ23に記憶される。
図12は、ロボット10のアーム12を誘導する態様を示す斜視図である。ここでは、図10(a2)に示したように、キャリブレーションボード座標系ΣcのXYZ軸とメカニカルインターフェース座標系ΣfのXYZ軸とを一致させた状態から、表示器64を回転させた場合について説明する。
図12に示すように、キャリブレーションボードCの映像を手前側に向けるように表示器64を回転させると、それに追従してロボット10のアーム12が移動させられる。具体的には、回転後のキャリブレーションボード座標系ΣcのXYZ軸にメカニカルインターフェース座標系ΣfのXYZ軸を一致させるように、アーム12の動作が制御される。なお、ティーチング棒60の第2円盤部63を回転させた場合や、表示器64内のキャリブレーションボードCの映像を拡大縮小及び回転させた場合も、それに追従してロボット10のアーム12が移動させられる。したがって、これらの操作が繰り返されることにより、ロボット10のアーム12を適切に誘導することができる。
以上詳述した本実施形態は以下の利点を有する。
・ロボット10の誘導に用いられるティーチング棒60に表示器64が設けられており、この表示器64によりキャリブレーションボードCの映像が表示される。ロボット10のアーム12には、対象を撮像して画像を取得するカメラ14が設けられており、アーム12の動作に伴ってカメラ14が移動される。そして、キャリブレーションボードCの映像がカメラ14により所定の目標画像として取得されるように、アーム12の動作が追従制御される。すなわち、キャリブレーションボードCの映像を表示器64が目標位置及び姿勢で撮像するように、ひいてはキャリブレーションボードCの映像に対してアーム12が基準位置及び姿勢となるように、アーム12の動作が追従制御される。
ここで、オペレータは、表示器64により表示されるキャリブレーションボードCの映像の大きさ及び向きの少なくとも一方を、ティーチングペンダント30の操作を通じて、表示器64から離れた位置で変更することができる。このため、この変更されたキャリブレーションボードCの映像が所定の目標画像として取得されるようにアーム12の動作が追従制御されることにより、アーム12の位置及び姿勢を変更することができる。そして、オペレータが、ティーチングを終了させる時に、ロボット10のアーム12の位置及び姿勢がメモリ23に記憶される。したがって、オペレータがロボット10に近付くことなく、ティーチングする基準位置及び姿勢を柔軟に変更することができる。さらに、表示器64により表示されるキャリブレーションボードCの映像を変更することにより、アーム12の位置及び姿勢を変更することができるため、ティーチング棒60自体の位置や向きを変更する場合と比較して、ロボット10周囲の設備から制約を受けることを抑制することができる。その結果、ティーチング棒60により適切にロボット10を誘導することができる。
・ティーチング棒60に対して表示器64を回転させる回転機構65を備えており、表示器64はその表裏が入れ替わる方向に回転させられる。そして、オペレータは、回転機構65により回転させられる表示器64の角度を、ティーチングペンダント30の操作を通じて、表示器64から離れた位置で変更することができる。このため、オペレータがロボット10に近付くことなく、表示器64が配置される角度、すなわちキャリブレーションボードCの映像が配置される角度を変更することができる。したがって、ティーチングする基準位置及び姿勢を、より柔軟に変更することができる。
・表示器64は、ティーチング棒60の備える円盤状の第2円盤部63に取り付けられており、この第2円盤部63が回転機構65により回転させられる。カメラ14による撮像の露光時間が一時的に延長され、且つ回転機構65により第2円盤部63が連続的に回転させられている状態では、円盤状の第2円盤部63をカメラ14により撮像すると、残像によって球状の物体を撮像した場合と同様の画像が取得される。したがって、円盤状の第2円盤部63は、どの方向から撮像されたとしても、円の画像として取得される。そして、第2円盤部63がカメラ14により所定の直径の円の画像として取得されるようにアーム12の動作が予備制御されるため、上記追従制御に先立って、円盤状の第2円盤部63とカメラ14との距離、すなわち表示器64とカメラ14との距離を調節することができる。その結果、予備制御から追従制御へ円滑に移行させることができる。
・追従制御に先立って、キャリブレーションボードCの映像の画像がカメラ14により取得されるように、回転機構65により第2円盤部63の角度が調節される。したがって、回転機構65による第2円盤部63の回転が停止させられた時に表示器64の裏側がカメラ14に向いていたとしても、表示器64の表側がカメラ14に向くようにすることができる。その結果、第2円盤部63の回転が停止させられた時の表示器64の角度にかかわらず、キャリブレーションボードCの映像の画像をカメラ14により取得することができる。
・上記予備制御において表示器64とカメラ14との距離が調節され、その後に第2円盤部63の角度が調節されてキャリブレーションボードCの映像がカメラ14により取得される状態となっている。そして、このような状態において、第2円盤部63の角度が調節されるとともにキャリブレーションボードCの映像の向きが変更されることにより、キャリブレーションボードCの映像がカメラ14により上記所定の目標画像として取得される状態にされる。その結果、予備制御から追従制御で維持される状態まで、自動的に移行させることができる。
上記実施形態を、以下のように変形して実施することもできる。
・ティーチング終了時に、ロボット10の位置及び姿勢を、ティーチングペンダント30(記憶手段)に記憶させるようにしてもよい。
・キャリブレーションボードCとして、白黒の正方形の升目が縦方向及び横方向にそれぞれ交互に配置されている図形に限らず、白黒の三角形が交互に配置された図形や、円の図形等、その他の図形を採用することもできる。
・上記実施形態では、ティーチング開始時にオペレータは、カメラ14の視野内に含まれる位置まで表示器64を移動させるようにしたが、ティーチングペンダント30を操作して、表示器64がカメラ14の視野内に含まれる位置までロボット10のアーム12を移動させてもよい。
・ロボットコントローラ20が、カメラ14によりキャリブレーションボードCの映像の画像を取得させる処理(図5のS30)として、図9のフローチャートに示した処理に代えて、図13のフローチャートに示す処理を採用することもできる。なお、図9,11のフローチャートに示した処理と同一の処理については、同一のステップ番号を付すことにより、説明を省略する。
まず、ロボットコントローラ20は、ロボット10のアーム12を一定距離移動させる(S31A)。具体的には、ロボットコントローラ20は、キャリブレーションボードCの映像とカメラ14との距離が焦点距離Lとなる状態を維持しつつ、キャリブレーションボードCを中心としてアーム12が一定の円弧、例えば中心角90°の円弧を描くように移動させる。そして、ロボットコントローラ20は、カメラ14により表示器64を撮像させて画像を取得させ(S32)、画像処理装置40によりキャリブレーションボードCの画像を認識できるか否か判定させる(S33)。
上記判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できないと判定した場合には(S33:NO)、ロボットコントローラ20は、ロボット10のアーム12を再度一定距離移動させることができるか否か判定する(S36)。この判定において、ロボット10のアーム12を一定距離移動させることができると判定した場合には(S36:YES)、ロボット10のアーム12を再度一定距離移動させる(S31A)。一方、この判定において、ロボット10のアーム12を一定距離移動させることができないと判定した場合には(S36:NO)、ロボットコントローラ20は、第2円盤部63を一定角度回転させるとともに、ロボット10のアーム12を初めてS31Aの処理を行う前の状態まで戻す(S37)。
また、上記判定において、画像処理装置40によりキャリブレーションボードCの画像を認識できると判定した場合には(S33:YES)、ロボットコントローラ20は、キャリブレーションボード座標系ΣcのXYZ軸とメカニカルインターフェース座標系ΣfのXYZ軸とを一致させ、且つキャリブレーションボード座標系Σcの原点とカメラ14との距離を焦点距離Lとするように、ロボット10のアーム12を移動させる(S44)。こうした構成によっても、回転機構65による第2円盤部63の回転が停止させられた時に表示器64の裏側がカメラ14に向いていたとしても、表示器64の表側がカメラ14に向くようにすることができる。その結果、第2円盤部63の回転が停止させられた時の表示器64の角度にかかわらず、キャリブレーションボードCの映像の画像をカメラ14により取得することができる。また、予備制御から追従制御で維持される状態まで、自動的に移行させることができる。
・上記実施形態では、オペレータが、ティーチングペンダント30の操作を通じて、ティーチング棒60を制御するようにしたが、ティーチング棒60の支持棒61の手元等に、ティーチング棒60を制御する操作部(映像変更手段、角度変更手段)を設けてもよい。また、オペレータが、リモコン(映像変更手段、角度変更手段)によりティーチング棒60を制御するようにしてもよい。
・カメラ14は、CCDイメージセンサを備えるものに限らず、CMOSイメージセンサを備えるもの等、その他の方式のデジタルカメラを備えるものでもよい。
・表示器64(映像表示部)は、液晶ディスプレイにより構成されるものに限らず、有機ELディスプレイや、プラズマディスプレイ等、その他のディスプレイにより構成されるものであってもよい。
・ロボット10として、垂直多関節型のロボットに限らず、複数の関節を有するアームを動作させる任意の型式のロボットを採用することができる。