以下、本発明の制御装置、ロボットおよびロボットシステムを添付図面に示す好適な実施形態に基づいて詳細に説明する。
[第1実施形態]
≪ロボットシステム≫
図1は、第1実施形態に係るロボットシステムの斜視図である。図2は、図1に示すロボットシステムのシステム構成図である。図3は、図1に示すロボットシステムが有するロボットを示す側面図である。なお、以下では、説明の便宜上、図3中の上側を「上」、下側を「下」と言う。また、図3中の基台110側を「基端」、その反対側(エンドエフェクターであるハンド150側)を「先端」と言う。また、図3の上下方向を「鉛直方向」とし、左右方向を「水平方向」とする。本明細書において、「水平」とは、完全に水平な場合のみならず、水平に対して±5°以内で傾斜している場合も含む。同様に、本明細書において、「鉛直」とは、完全に鉛直な場合のみならず、鉛直に対して±5°以内で傾斜している場合も含む。また、本明細書において、「平行」とは、2つの線(軸を含む)または面が、互いに完全な平行である場合のみならず、±5°以内で傾斜している場合も含む。
図1に示すロボットシステム100は、例えば、電子部品および電子機器等の対象部材の保持、搬送および組立て等の作業で用いられる装置である。図1に示すように、ロボットシステム100は、ロボット1と、ロボット1に取り付けられた撮像機能を有するモバイルカメラ3(撮像部)と、ロボット1およびモバイルカメラ3をそれぞれ制御する制御装置5(校正装置)とを、有する。また、図2に示すように、ロボットシステム100は、表示装置41および入力装置42(操作機器)を有する。
以下、ロボットシステム100が有する各部を順次説明する。
〈ロボット〉
ロボット1は、いわゆる水平多関節ロボット(スカラロボット)であり、例えば、精密機器や部品等の対象部材の保持や搬送等を行うことができる。図1に示すように、ロボット1は、基台110と、基台110に接続されたロボットアーム10(可動部)とを有する。ロボットアーム10は、第1アーム101(アーム)と、第2アーム102(アーム)と、作業ヘッド104と、ハンド150とを有している。また、図1および図2に示すように、ロボット1は、ロボットアーム10を駆動させる動力を発生させる複数の駆動部130と、位置センサー131とを有する。
基台110は、ロボット1を任意の設置箇所に取り付ける部分である。なお、基台110の設置箇所は、特に限定されず、例えば、床、壁、天井、移動可能な台車上等が挙げられる。
基台110の上端部には、基台110に対して鉛直方向に沿う第1軸J1(回動軸)まわりに回動可能な第1アーム101が連結されている。また、第1アーム101の先端部には、第1アーム101に対して鉛直方向に沿う第2軸J2(回動軸)まわりに回動可能な第2アーム102が連結されている。また、第2アーム102の先端部には、作業ヘッド104が配置されている。作業ヘッド104は、第2アーム102の先端部に同軸的に配置されたスプラインナットおよびボールネジナット(ともに図示せず)に挿通されたスプラインシャフト103(アーム、先端アーム)を有している。スプラインシャフト103は、第2アーム102に対して、その第3軸J3まわりに回動可能であり、かつ、上下方向に移動(昇降)可能となっている。ここで、本実施形態では、図3に示すように、第2アーム102の先端部(先端部の下端面)と第3軸J3との交わる点を、第2アーム102の軸座標P2(所定部)とする。
図1に示すように、スプラインシャフト103の先端部(下端部)には、エンドエフェクターとして、対象部材を把持することが可能な2つの指を有するハンド150が着脱可能に取り付けられている。なお、本実施形態では、エンドエフェクターとしてハンド150を用いているが、エンドエフェクターとしては、各種対象部材等に対して作業(対象部材の保持等)を行う機能を有すれば如何なる構成であってもよい。
また、ハンド150は、設計上、ハンド150の中心軸がスプラインシャフト103の第3軸J3と一致するように取り付けられている。そのため、ハンド150は、スプラインシャフト103の回動に伴って回動する。ここで、図3に示すように、ハンド150の先端中心をツールセンターポイントTCPという。本実施形態では、ツールセンターポイントTCPは、ハンド150が有する2つの指の間の領域の中心である。
また、図1に示すように、基台110内には、第1アーム101を駆動(回動)させる駆動部130が設置されている。また、同様に、第2アーム102内には、第2アーム102を駆動させる駆動部130と、スプラインシャフト103を駆動させる駆動部130とが設置されている。すなわち、ロボット1は、3つの駆動部130を有している。駆動部130は、駆動力を発生させるモーター(図示せず)とモーターの駆動力を減速する減速機(図示せず)とを有する。駆動部130が有するモーターとしては、例えば、ACサーボモーター、DCサーボモーター等のサーボモーターを用いることができる。減速機としては、例えば、遊星ギア型の減速機、波動歯車装置等を用いることができる。また、各駆動部130には、モーターまたは減速機の回転軸の回転角度を検出する位置センサー131(角度センサー)が設けられている(図1および図2参照)。
また、各駆動部130は、図1に示す基台110に内蔵されたモータードライバー120に電気的に接続されている。このモータードライバー120を介して各駆動部130は制御装置5により制御されている。
このような構成のロボット1では、図3に示すように、ロボット1の基台110を基準としたベース座標系として、水平方向に対してそれぞれ平行なxr軸とyr軸と、水平方向に対して直交し、かつ、鉛直上向きを正方向とするzr軸とによって定まる3次元の直交座標系を設定している。本実施形態では、ベース座標系は、基台110の上端面の中心点を原点としている。xr軸に対する並進成分を「成分xr」とし、yr軸に対する並進成分を「成分yr」とし、zr軸に対する並進成分を「成分zr」とし、zr軸周りの回転成分を「成分ur」とし、yr軸周りの回転成分を「成分vr」とし、xr軸周りの回転成分を「成分wr」とする。成分xr、成分yrおよび成分zrの長さ(大きさ)の単位は「mm」であり、成分ur、成分vrおよび成分wrの角度(大きさ)の単位は「°」である。
また、ロボット1では、ロボット1の第2アーム102の先端部を基準とした先端座標系が設定されている。先端座標系は、互いに直交するxa軸、ya軸およびza軸とによって定まる3次元の直交座標系である。本実施形態では、先端座標系は、第2アーム102の軸座標P2を原点としている。また、ベース座標系と先端座標系との校正(キャリブレーション)は済んでおり、ベース座標系を基準とした先端座標系の座標を算出することができる状態である。また、xa軸に対する並進成分を「成分xa」とし、ya軸に対する並進成分を「成分ya」とし、za軸に対する並進成分を「成分za」とし、za軸周りの回転成分を「成分ua」とし、ya軸周りの回転成分を「成分va」とし、xa軸周りの回転成分を「成分wa」とする。成分xa、成分yaおよび成分zaの長さ(大きさ)の単位は「mm」であり、成分ua、成分vaおよび成分waの角度(大きさ)の単位は「°」である。
以上、ロボット1の構成について簡単に説明した。なお、ロボット1は、図示はしないが、例えば、ハンド150に加わる力(モーメントを含む)を検出する力覚センサー(例えば、6軸力覚センサー)等で構成された力検出部を備えていてもよい。
〈モバイルカメラ〉
図1に示すように、モバイルカメラ3は、ロボット1の第2アーム102の先端部に設けられている。このモバイルカメラ3は、例えば作業台91上に載置された対象物60を撮像する機能を有する。対象物60は、後述するキャリブレーションで用いる部材であり、対象物60には例えば円形状のマーカー61が付されている。
モバイルカメラ3は、複数の画素を有するCCD(Charge Coupled Device)イメージセンサで構成された撮像素子31と、レンズ32(光学系)と、を有する。このモバイルカメラ3は、撮像対象等からの光をレンズ32によって撮像素子31の受光面311(センサー面)で結像させて、光を電気信号に変換し、その電気信号を制御装置5へと出力する。ここで、受光面311とは、撮像素子31の表面であって、光が結像する面である。
このようなモバイルカメラ3は、ロボットアーム10の先端側を撮像できるように第2アーム102に取り付けられている。したがって、本実施形態では、モバイルカメラ3は、鉛直方向下方を撮像可能である。また、本実施形態では、設計上、モバイルカメラ3の光軸A3(レンズ32の光軸)がスプラインシャフト103の第3軸J3に対して平行になるように取り付けられている。また、モバイルカメラ3は、第2アーム102に設けられているため、第2アーム102の駆動(回動)とともにその位置を変えることができる。
このようなモバイルカメラ3では、モバイルカメラ3の画像座標系(モバイルカメラ3から出力される撮像画像30の座標系)として、撮像画像30の面内方向に対してそれぞれ平行なxb軸とyb軸とによって定まる2次元の直交座標系を設定している(図6参照)。また、xb軸に対する並進成分を「成分xb」とし、yb軸に対する並進成分を「成分yb」とし、xb−yb平面の法線周りの回転成分を「成分ub」とする。成分xbおよび成分ybの長さ(大きさ)の単位は「ピクセル」であり、成分ubの角度(大きさ)の単位は「°」である。なお、モバイルカメラ3の画像座標系は、モバイルカメラ3のカメラ視野に写る3次元直交座標を、レンズ32の光学特性(焦点距離、歪みなど)と撮像素子31の画素数および大きさとを加味して非線形変換した2次元の直交座標系である。
〈制御装置〉
図1に示す制御装置5は、ロボット1およびモバイルカメラ3の各部の駆動(作動)を制御する。この制御装置5は、例えば、CPU(Central Processing Unit)やROM(Read Only Memory)およびRAM(Random Access Memory)が内蔵されたパーソナルコンピューター(PC)等で構成することができる。この制御装置5は、図1に示すように、ロボット1に対して配線600等を介して接続されている。なお、ロボット1と制御装置5とは無線通信により接続されていてもよい。また、本実施形態では、制御装置5は、ロボット1とは別体で設けられているが、ロボット1に内蔵されていてもよい。また、図2に示すように、制御装置5には、ディスプレイ等のモニター(図示せず)を備える表示装置41と、例えばマウスやキーボード等を備える入力装置42とが接続されている。
以下、制御装置5が備える各機能(機能部)について説明する。
図2に示すように、制御装置5は、表示制御部51と、入力制御部52と、制御部53(ロボット制御部)と、入出力部54と、記憶部55と、を備える。
表示制御部51は、例えばグラフィックコントローラーで構成されており、表示装置41に接続されている。この表示装置41のモニターに各種画面(例えば、操作用の画面等)を表示させる機能を有する。入力制御部52は、入力装置42に接続されており、入力装置42からの入力を受け付ける機能を有する。
制御部53は、ロボット1の駆動やモバイルカメラ3の作動等を制御する機能、各種演算および判断等の処理をする機能等を有する。この制御部53は、例えばCPU等で構成され、制御部53の各機能は、CPUにより記憶部55に記憶された各種プログラムを実行することにより実現することができる。
具体的には、制御部53は、各駆動部130の駆動を制御し、ロボットアーム10を駆動させたり停止させたりする。例えば、制御部53は、各駆動部130に設けられた位置センサー131から出力された情報を基にして、ハンド150を目標位置に移動させるために各駆動部130が有するモーター(図示せず)の目標値を導出する。また、制御部53は、入出力部54で取得した位置センサー131およびモバイルカメラ3等からの情報を基にして各種演算や各種判断等の処理を行う。例えば、制御部53は、モバイルカメラ3で撮像した撮像画像30を基にして画像座標系における撮像対象の座標(成分xb、yb、ub:位置および姿勢)を演算したりする。また、例えば、制御部53は、モバイルカメラ3の画像座標系での座標(画像座標)をロボット1の先端座標系での座標(ロボット座標)またはロボット1のベース座標系での座標(ベース座標)に変換するための補正パラメーターを求めたりする。なお、本実施形態では、ロボット1の先端座標を「ロボット座標」と捉えているが、ベース座標を「ロボット座標」と捉えてもよい。
入出力部54(情報取得部)は、例えばインターフェイス回路等で構成され、ロボット1およびモバイルカメラ3と情報のやり取りを行う機能を有する。例えば、入出力部54は、ロボット1の各駆動部130が有するモーターまたは減速機の回転軸の回転角度や、撮像画像30等の情報を取得する機能を有する。また、例えば、入出力部54は、制御部53から導出されたモーターの目標値をロボット1に対して出力する。
記憶部55は、例えばRAMおよびROM等で構成されており、制御装置5が各種処理等を行うためのプログラムや、各種データ等を記憶する。例えば、記憶部55は、キャリブレーションを実行するプログラムを記憶している。なお、記憶部55は、制御装置5に内蔵されるもの(RAMおよびROM等)に限らず、いわゆる外部記憶装置(図示せず)を有する構成であってもよい。
また、表示装置41は、上述したように、ディスプレイ等のモニター(図示せず)を備えており、例えば撮像画像30等を表示する機能を有する。したがって、作業者は、表示装置41を介して撮像画像30やロボット1の作業等を確認することができる。また、入力装置42は、上述したように、例えばマウスやキーボード等で構成されている。したがって、作業者は、入力装置42を操作することで、制御装置5に対して各種処理等の指示を行うことができる。なお、表示装置41および入力装置42の代わりに、表示装置41および入力装置42を兼ね備えた表示入力装置(図示せず)を用いてもよい。表示入力装置としては、例えばタッチパネル等を用いることができる。
以上、ロボットシステム100の基本的な構成について簡単に説明した。このようなロボットシステムでは、撮像画像30を基にロボット1に作業を行わせる。そのためには、画像座標(xb、yb、ub)をロボット座標(xa、ya、ua)に変換する変換行列式(補正パラメーター)を求めることが必要である。すなわち、モバイルカメラ3とロボット1とのキャリブレーション(対応付け)が必要である。このキャリブレーションは、制御装置5が、作業者による指示に応じて、キャリブレーションを実行するプログラムに基づき自動で行う。
以下、キャリブレーション(キャリブレーションのための各種設定および実行)について説明する。
≪キャリブレーション≫
図4は、図1に示すロボットシステムによるキャリブレーションの流れを示すフロー図である。
キャリブレーションを行う前に、作業者は、図1に示すように作業台91上に対象物60を載置しておく。また、作業者は、例えば所謂ジョグ送りにより(入力装置42を用いた表示装置41を介した手動の指示により)ロボットアーム10を駆動させて、モバイルカメラ3でマーカー61を撮像できる位置に第2アーム102の軸座標P2を位置させておく。その後、作業者が制御装置5に対して開始の指示を行うことによって、制御装置5によるキャリブレーションが開始する。以後、制御装置5の制御の下、自動でキャリブレーションを行うことができる。そのため、作業者による一切の操作は無く、または、作業者の簡単な操作のみで実行することができる。
以下、図4に示すフロー図を参照しつつ、各処理(ステップ)を説明する。
〈画像情報取得(図4:ステップS11)〉
まず、入出力部54は、モバイルカメラ3の画像情報を取得し、記憶部55は、取得した画像情報を記憶する。画像情報とは、モバイルカメラ3の画素数の情報等である。
〈キャリブレーションプロパティ設定(図4:ステップS12)〉
次に、制御部53は、キャリブレーションプロパティ設定を行う。キャリブレーションプロパティ設定とは、具体的には、キャリブレーションの実行時におけるロボット1の速度、加速度(より具体的には、例えばハンド150の移動速度、移動加速度)の設定や、ローカル平面(作業面)の設定等である。キャリブレーション実行時のロボット1の速度、加速度は、特に限定されないが、最大速度や最大加速度の30〜70%であることが好ましい。これにより、キャリブレーションの結果のばらつきをより少なくすることができ、キャリブレーションの精度をより高めることができる。
次に、制御部53は、ステップS13、S14を実行して、先端座標系と画像座標系との相対関係を求める。
〈ロボットの所定部を2箇所に移動させる(図4:ステップS13)〉
図5および図6は、それぞれ、図4に示すステップS13を説明するための図である。 次に、制御部53は、ロボット1の所定部(本実施形態では、軸座標P2)をポイントA0からそれとは異なる2つのポイントA1、A2に移動させ、ポイントA0からポイントA1、A2に移動させたときの撮像画像30上に写るマーカー61の画像座標を取得する(図5および図6参照)。
具体的には、まず、制御部53は、撮像画像30の中心O30に、マーカー61が位置するように(写るように)ロボットアーム10を駆動させ、モバイルカメラ3により画像データを取得する(図5および図6参照)。この撮像画像30の中心O30にマーカー61が位置しているときの、ロボット1の軸座標P2の位置をポイントA0とする。なお、ポイントA0は予めティーチングされているものとする。また、記憶部55は、ポイントA0におけるロボット座標(xa0,ya0)と中心O30における画像座標(xb0,yb0)とを記憶する。なお、ポイントA0は、撮像画像30の中心O30付近であることが好ましいが、中心O30に限定されず、撮像画像30内(モバイルカメラ3の視野内)であればよい。また、後述するポイントA1、A2も、撮像画像30内にあればいずれの箇所であってもよい。
次いで、制御部53は、ロボットアーム10を駆動させて軸座標P2をポイントA0から図5中の矢印a11方向に移動させてポイントA1に位置させ、モバイルカメラ3により画像データを取得する。例えば、軸座標P2をポイントA0からxa方向に10mm、ya方向に0mm移動させてポイントA1に位置させる(図5参照)。このとき、撮像画像30に写るマーカー61(マーカー認識位置)が中心O30から矢印a21方向に移動してポイントB1に位置する(図6参照)。また、記憶部55は、ポイントA1におけるロボット座標(xa1,ya1)とポイントB1における画像座標(xb1,yb1)とを記憶する(図5および図6参照)。
また、制御部53は、ロボットアーム10を駆動させて軸座標P2をポイントA0から矢印a12方向に移動させてポイントA2に位置させ、モバイルカメラ3により画像データを取得する。例えば、軸座標P2をポイントA0からxa方向に0mm、ya方向に10mm移動させてポイントA2に位置させる(図5参照)。このとき、撮像画像30に写るマーカー61が中心O30から矢印a22方向に移動してポイントB2に位置する(図6参照)。また、記憶部55は、ポイントA2におけるロボット座標(xa2,ya2)とポイントB2における画像座標(xb2,yb2)とを記憶する(図5および図6参照)。
なお、ポイントA0からポイントA1、A2の移動量は上述の数値に限定されず、任意である。
〈座標変換式の生成(図4:ステップS14)〉
次に、制御部53は、ステップS13において記憶した3つのロボット座標および3つの画像座標を基に、ロボット座標と画像座標に変換する座標変換式(式(1))を用いて、ロボット座標と画像座標との間の座標変換式を求める。
式(1)におけるΔxb、Δybは、画像座標系での2つのポイント間の距離(変位)を示し、Δxa、Δyaは、先端座標系での2つのポイント間の距離(変位)を示す。また、a、b、c、dは、未知の変数である。
式(1)と、ポイントA0、A1と、中心O30およびポイントB1とから以下のように変数a、bを求める。
また、同様に、式(1)と、ポイントA0、A2と、中心O30およびポイントB2とから以下のように変数c、dを求める。
このようにして変数a、b、c、dが求まり、座標変換式(1次変換行列)を生成することができる。これにより、先端座標系と画像座標系の相対的な関係を求めることができ、画像座標系での変位(移動量)を先端座標系での変位(移動量)に変換することができる。このように、3つの異なる箇所に軸座標P2を移動させて得られた3つのロボット座標および画像座標を基に、式(1)に示す座標変換式(アフィン変換式)を用いることで、先端座標系と画像座標系の相対的な関係を簡単にかつ適切に求めることができる。
なお、本実施形態では、ステップS13の処理の後にステップS14の処理を行ったが、これらの処理は同時に行ってもよい。
〈複数の基準点の生成(図4:ステップS15)〉
図7は、図4に示すステップS15を説明するためのフロー図である。図8は、図7に示すステップS152を説明するための撮像画像を示す図である。図9は、図7に示すステップS153を説明するための第1領域と撮像画像に写る対象物とを示す図である。図10は、図7に示すステップS153で設定した第2サーチウィンドウを示す図である。
次に、制御部53は、後述するキャリブレーションの実行(ステップS20またはステップS24)で用いる複数の基準点(本実施形態では9つ)を生成する。以下、図7に示すフロー図を参照しつつ説明する。なお、基準点305の数は少なくとも3つ以上であればよく、その数は任意であるが、基準点305の数が多い程、キャリブレーションの精度が向上する。
[第1サーチウィンドウの中心にマーカーを位置させる(図7:ステップS151)]
制御部53は、ロボットアーム10を駆動させ、図8に示す撮像画像30に設定された第1サーチウィンドウ301の中心O301にマーカー61を位置させる。第1サーチウィンドウ301とは、作業者が指定する撮像画像30上の所定の範囲のことを示し、複数の基準点305を生成するために用いられる。本実施形態では、第1サーチウィンドウ301と撮像画像30とは一致しており、第1サーチウィンドウ301の中心O301と撮像画像30の中心O30とは一致している。
[第1領域内に対象物が収まっているか否かを判断する(図7:ステップS152)]
制御部53は、対象物60を画像認識し、第1サーチウィンドウ301を等しく9つに分割して得られた1つの第1領域S1内に対象物60が収まっているか否かを判断する。本実施形態では、対象物60の外形形状(例えば4つの角部)を認識することで、対象物60を画像認識(検出)している。なお、画像認識の方法は、対象物60の4つの角部を認識する方法に限定されず、いかなる方法であってもよい。例えば、予め登録した外形形状のモデル(テンプレート)に対する対象物60の回転角度の値を取得することにより対象物60を認識する方法も有効である。また、対象物60は、物体だけでなく、物体を検出するためのモデルウィンドウであってもよい。
[第1領域内に対象物が収まっている場合(図7:ステップS152、Yes)]
図8に示す対象物60b(対象物60)のように、第1領域S1内に収まっている場合には、ステップS156に移行する。
[複数の基準点の生成(図7:ステップS156)]
制御部53は、第1サーチウィンドウ301の各第1領域S1の中心点をキャリブレーションで用いる基準点305として設定する(図8参照)。本実施形態では、格子状に配列された基準点305を9つ設定し、各基準点305と中心O301との画像座標系での距離(Δxb、Δyb)を求める。また、上述したステップS14において求めた座標変換式を用いて画像座標系での距離(Δxb、Δyb)に応じた先端座標系での移動量(Δxa、Δya)を求める。これにより、第1サーチウィンドウ301の中心O301をティーチングすれば、残りの8点の基準点305を自動的に生成することができる。そのため、例えば実際に9箇所に所謂ジョグ送りを行って各箇所をティーチングすることにより9つの基準点305を設定する手間を省くことができる。それゆえ、各基準点305の設定における人為的な誤差を低減することができ、また、複数の基準点305の設定時間を短くすることができる。
なお、本実施形態では、第1領域S1の中心点を基準点305として設定したが、基準点305は、第1領域S1の中心点に限定されず第1領域S1内にあればいずれの箇所であってもよい。
[第1領域内に対象物が収まっていない場合(図7:ステップS152、No)]
図8に示す対象物60a(対象物60)のように、第1領域S1内に収まっていない場合には、ステップS153に移行する。
[第2サーチウィンドウの設定(図7:ステップS153)]
制御部53は、対象物60aの1つの第1領域S1に収まっていない領域(はみ出している部分)を考慮して、第1サーチウィンドウ301よりも小さい第2サーチウィンドウ302を設定する(図8〜図10参照)。
ここで、後述するキャリブレーションの実行(ステップS20またはステップS24)では、撮像画像30上の各基準点305または後述する各基準点306に1つのマーカー61が位置するように(写るように)モバイルカメラ3を9箇所に移動させる作業を行う。その際、対象物60aが第1領域S1内に収まっていないと、図8中の破線で示す対象物60aのように、対象物60aの一部が撮像画像30内に写らないことがある。そのため、対象物60aを画像認識できず、キャリブレーションの実行を的確に行うことが出来ないことがある。そこで、第1サーチウィンドウ301よりも小さい第2サーチウィンドウ302を設定して、第2サーチウィンドウ302を基にして後述する基準点305を設定する。すなわち、対象物60aを画像認識しつつキャリブレーションを実行することができるような基準点305を設定する。
具体的には、まず、制御部53は、第1領域S1に関する情報として、以下に示すA、B、C、Dを算出する(図9参照)。
「A」は、第1領域S1の中心点から−xb側の辺までの長さである。「B」は、第1領域S1の中心点から+xb側の辺までの長さである。「C」は、第1領域S1の中心点から+yb側の辺までの長さである。「D」は、第1領域S1の中心点から−yb側の辺までの長さである。
次いで、制御部53は、画像座標系における対象物60の情報として、以下に示す式(行列)を用いて、以下に示すようにE、F、G、H、FPの各画像座標を算出する。
「E」、「F」、「G」、「H」は、図9に示すように、対象物60の角の画像座標である。「FP」は、図9に示すように、撮像画像30でのマーカー61(マーカー認識位置)の中心の画像座標である。
また、A〜D、E〜HおよびFPを基に、撮像画像30上での対象物60の情報として以下に示すA’、B’、C’、D’を算出する。
「A’」は、撮像画像30上でのマーカー61から対象物60のGまでのxb方向における間の長さである。「B’」は、撮像画像30上でのマーカー61から対象物60のFまでのxb方向における間の長さである。「C’」は、撮像画像30上でのマーカー61から対象物60のHまでのyb方向における間の長さである。「D’」は、撮像画像30上でのマーカー61から対象物60のEまでのyb方向における間の長さである。
次いで、制御部53は、図10に示すように、第1サーチウィンドウ301を、対象物60の第1領域S1に収まらない領域分小さくするよう第2サーチウィンドウ302を設定する。より具体的には、図10に示すように、第1サーチウィンドウ301の−xb側の辺の位置を(A’−A”)分中央寄りになるよう設定する。また、第1サーチウィンドウ301の+yb側の辺の位置を(C’−C”)分中央寄りになるよう設定する。また、第1サーチウィンドウ301の−yb側の辺の位置を(D’−D”)分中央寄りになるよう設定する。また、本実施形態では、第1領域S1の中心点から+xb側に位置する対象物60の部分は、第1領域S1内に収まっているため、第1サーチウィンドウ301の+xb側の辺の位置は変更しない。
なお、上述の「A”」は、第2サーチウィンドウ302を等しく9つに分割して得られた1つの第2領域S2の中心点から−xb側の辺までの長さである。「C”」は、第2領域S2の中心点から+yb側の辺までの長さである。「D”」は、第2領域S2の中心点から−yb側の辺までの長さである。このようにして、第2サーチウィンドウ302を設定することができる。
このように、制御部53は、撮像画像30に設定した第1サーチウィンドウ301を分割して得られる第1領域S1に関する情報と、撮像画像30に写るマーカー61を有する対象物60の情報とを基にして第1サーチウィンドウ301を補正することにより第2サーチウィンドウ302を設定し、第2サーチウィンドウ302に基づいて複数の基準点305を設定する。これにより、キャリブレーションの実行時において対象物60の画像認識を適切に行うことができるので、画像座標系と先端座標系との対応付けをより高精度に行うことができる。また、上述の第2サーチウィンドウの設定方法によれば、制御装置5により自動で第2サーチウィンドウを設定して基準点305を設定することができる。
[第2サーチウィンドウの中心にマーカーを位置させる(図7:ステップS154)]
次に、制御部53は、ロボットアーム10を駆動させ、第2サーチウィンドウ302の中心O302にマーカー61を位置させる。
[ロボットの所定部を2箇所に移動させ、座標変換式を再設定する(図7:ステップS155)]
次に、ステップS13と同様に、制御部53は、第2サーチウィンドウ302の中心O302にマーカー61が位置している状態から、それとは異なる2箇所にロボット1の所定部(本実施形態では、軸座標P2)を移動させる。また、記憶部55は、中心O302にマーカー61が位置している状態およびそれとは異なる2箇所に移動させたときの各ロボット座標(xa,ya)と画像座標(xb,yb)とを記憶する。
次いで、ステップS14と同様の方法で座標変換式(1次変換行列)を生成(再設定)する。すなわち、ステップS14で求めた座標変換式を更新する。
ここで、ステップS13では、ステップS13におけるポイントA0からポイントA1、A2への移動量は、微小である。移動量が微小である理由は、ステップS13では、画像座標系における移動量(大きさ)とロボット座標系における移動量(大きさ)との関係(画角がロボット座標系において何mmなのか)が不明であるため、移動させたときに撮像画像30内にマーカー61が写らないということを防ぐためである。このようにステップS14で求めた座標変換式は、微小距離の移動により算出したものであるため、不正確さがある場合がある。これに対し、一度、座標変換式を生成すると画像座標系における移動量(大きさ)とロボット座標系における移動量(大きさ)との関係をおおよそ把握することができる。そのため、ステップS155では、一度ステップS13で座標変換式を生成しているため、ステップS13における移動量よりも撮像画像30にマーカー61が写る範囲内で(画角内で)大きく移動させることができる。すなわち、ステップS155における移動量をステップS13における移動量よりも大きくすることができる。これにより、ステップS155において、ステップS14で求めた座標変換式よりも、より精度の高い座標変換式を求めることができる。
[複数の基準点の生成(図7:ステップS156)]
次いで、制御部53は、上述した第1サーチウィンドウ301を基にした基準点の生成と同様にして、第2サーチウィンドウ302の各第2領域S2の中心点をキャリブレーションで用いる格子状に配列された複数の基準点305として設定(生成)する(図10参照)。このように、制御部53は、第2サーチウィンドウ302を分割して得られる第2領域S2に基づいて複数の基準点305を設定する。これにより、複数の基準点305を容易に設定することができる。すなわち、第2サーチウィンドウ302の中心O302をティーチングすれば、残りの8点の基準点305を自動的に生成することができる。そのため、例えば実際に9箇所に所謂ジョグ送りを行って各箇所をティーチングすることにより9つの基準点305を設定する手間を省くことができる。それゆえ、各基準点305の設定における人為的な誤差を低減することができ、また、複数の基準点305の設定時間を短くすることができる。
〈複数の基準点の再設定(図4:ステップS16)〉
図11および図12は、それぞれ、図4に示すステップS16を説明するためのロボットの概略図である。図13、図14、図15および図16は、それぞれ、図4に示すステップS16を説明するための撮像画像を示す図である。
次に、制御部53は、第2アーム102の回動(駆動)に伴うモバイルカメラ3の回動(駆動)を考慮してステップS14で求めた座標変換式を更新し、9つの基準点305を再設定(補正)する(ステップS16)。すなわち、座標変換式を更新し、新たな9つの基準点306を生成する。
ここで、上述したように、ロボット1は、鉛直方向に沿った第1軸J1まわりに回動する第1アーム101と、鉛直方向に沿った第2軸J2まわりに回動する第2アーム102と、鉛直方向に沿った第3軸J3まわりに回動するスプラインシャフト103とを有する(図1参照)。すなわち、ロボット1は、基台110に対してヨー軸周りに回動可能な3つの部材として第1アーム101、第2アーム102およびスプラインシャフト103を有する。また、上述したように、モバイルカメラ3の光軸A3は、第1軸J1、第2軸J2および第3軸J3に沿うように(平行になるように)設けられている。
例えば、基台110から数えて3つめの第3軸J3まわりに回動するスプラインシャフト103にモバイルカメラ3が取り付けられている場合、図11に示すようにモバイルカメラ3の姿勢を変更せずにモバイルカメラ3を移動させることができる。すなわち、図11中の2点鎖線で示すロボット1の状態と、図11中の実線で示すロボット1の状態とで、モバイルカメラ3の姿勢を同じにすることができる。これは、スプラインシャフト103を第3軸J3周りに回動させることで、スプラインシャフト103の回動に伴いモバイルカメラ3を回動させることができるためである。
これに対し、本実施形態のように、基台110から数えて2つめの第2軸J2まわりに回動する第2アーム102にモバイルカメラ3が取り付けられている場合、図12に示すように、第2アーム102の回動に伴いモバイルカメラ3が回動する。すなわち、図12中の2点鎖線で示すロボット1の状態と、図12中の実線で示すロボット1の状態とで、モバイルカメラ3の姿勢が異なる。このように、第2アーム102の回動とともにモバイルカメラ3が回動すると、撮像画像30のフレームもそれに伴い回動する(図13参照)。そのため、ステップS14で求めた先端座標系と画像座標系の相対的な関係を基にして、1つの基準点305にマーカー61が位置するように軸座標P2を移動させたとしても、フレームの姿勢の変化に起因して当該基準点305と撮像画像30に写るマーカー61とにずれが生じる(図15参照)。すなわち、図14に示すように1つの基準点305にマーカー61が位置するように軸座標P2を移動させたとしても、図15に示すように1つの基準点305とマーカー61とにずれが生じる。
そこで、ステップS16では、モバイルカメラ3の第2アーム102の回動に伴う回動を考慮して座標変換式を更新する。具体的には、上述したステップS14で求めた座標変換式を用いて、撮像画像30の中心O30と撮像画像30上のマーカー61との変位(ΔxbM1、ΔybM1)と、中心O30と基準点305との変位(ΔxbM1、ΔybM1)とを求め、これら変位と以下の式(2)とを基にして新たな基準点306を再設定(補正)する(図16参照)。
このようにして、第2アーム102の回動(移動)に伴うモバイルカメラ3の回動を考慮した新たな基準点306を再設定(補正)する。これにより、本実施形態のように、第2アーム102にモバイルカメラ3が取り付けられている場合でも、基準点306にマーカー61を適切に位置させることができるため、後述するキャリブレーションの実行(ステップS20またはステップS24)を高精度に行うことができる。
〈モバイルカメラ3のオフセットの算出(図4:ステップS17)〉
図17は、図4に示すステップS17を説明するためのフロー図である。図18は、図17に示すステップS171を説明するためのロボットの概略図である。図19は、図17に示すステップS171を説明するためのロボットの模式図である。図20は、図17に示すステップS172を説明するためのロボットの模式図である。図21は、図17に示すステップS173を説明するためのロボットの模式図である。図22は、図17に示すステップS174を説明するためのロボットの模式図である。
次に、制御部53は、モバイルカメラ3のオフセットの算出(モバイルカメラ3の取付位置のアームセット)を行う。本実施形態では、軸座標P2に対する撮像画像30に写るマーカー61の位置のずれ、すなわち第3軸J3と平行な軸を除く2つの軸に対する並進成分xa、yaにおける軸座標P2と撮像画像30に写るマーカー61との間の距離を求める。より具体的には、本実施形態では、水平面内において(第2軸J2に沿った方向から見て)、モバイルカメラ3の光軸A3と第2軸J2との間の距離と、モバイルカメラ3の光軸A3が第2アーム102(第2軸J2と第3軸J3とを結ぶ線分)に対して第2軸J2まわりに何度(°)ずれた位置に設置されているかを求める。以下、図17に示すフロー図を参照しつつ説明する。
[変換係数(mm/ピクセル:解像度)を求める(図17:ステップS171)]
まず、制御部53は、図18に示すロボット1a(ロボット1)の状態から、図19に示すようにモバイルカメラ3の姿勢を変更せずにモバイルカメラ3の位置を変更するようにロボットアーム10を駆動させ、変更前後の画像座標およびロボット座標に基づいて、変換係数(mm/ピクセル)を求める。
具体的には、図19の2点鎖線で示すロボット1aの状態から図19の実線で示すロボット1b(ロボット1)の状態にする。これは、第1軸J1を反時計まわりに角度+θ11(°)で回動させ、第2軸J2を時計まわりに角度−θ11(°)で回動させることで実現できる。そして、制御部53は、上述のモバイルカメラ3の位置の変更前後における軸座標P2の移動距離(mm)、すなわちモバイルカメラ3の移動距離(mm)と、撮像画像30上に写るマーカー61の移動距離(ピクセル)とから、画像座標とロボット座標の変換係数(mm/ピクセル)を求める。
[第1軸J1と光軸A3との間の距離を求める(図17:ステップS172)]
次に、制御部53は、図20に示すように第1軸J1を回動させて、第1軸J1と光軸A3との間の距離である線分L21を求める。
具体的には、図20の2点鎖線で示すロボット1aの状態から図20の実線で示すロボット1c(ロボット1)の状態にする。これは、第2軸J2を回動させずに、第1軸J1を角度θ12(°)で回動させることで実現できる。
また、第1軸J1と光軸A3との間の距離である線分L21は、以下のようにして求める。ロボット1aの第1軸J1と軸座標P2とを結ぶ線分L11の長さ(mm)と、ロボット1cの第1軸J1と軸座標P2とを結ぶ線分L12の長さ(mm)と、ロボット1aの軸座標P2の位置とロボット1cの軸座標P2の位置とを結ぶ線分L13の長さ(mm)とは、それぞれ既知である。また、ロボット1aの撮像画像30の中心O30の位置とロボット1cの撮像画像30の中心O30の位置とを結ぶ線分L23の長さ(ピクセル)は、既知である。そのため、ステップS171で求めた変換係数(mm/ピクセル)を用いて、先端座標系での線分L23の長さ(mm)を求める。また、線分L11、L12、L13とで構成される三角形T1と、線分L21、L22、L23とで構成される三角形T2とは、相似である。三角形T1と三角形T2とが相似であるため、線分L11、L12、L13と線分L23とから、先端座標系での線分L21の長さ(mm)を求めることができる。なお、線分L21は、ロボット1aの第1軸J1と光軸A3とを結ぶ線分である。また、線分L22は、ロボット1cの第1軸J1と光軸A3とを結ぶ線分である。
[第2軸J2と光軸A3との間の距離を求める(図17:ステップS173)]
次に、制御部53は、図21に示すように第2軸J2を回動させて、第2軸J2と光軸A3との間の距離である線分L25を求める。
具体的には、図21の2点鎖線で示すロボット1aの状態から図21の実線で示すロボット1d(ロボット1)の状態にする。これは、第1軸J1を回動させずに、第2軸J2を角度θ13(°)で回動させることで実現できる。
また、第2軸J2と光軸A3との間の距離である線分L25は、以下のようにして求める。ロボット1aの第2軸J2と軸座標P2とを結ぶ線分L15の長さ(mm)と、ロボット1dの第2軸J2と軸座標P2とを結ぶ線分L16の長さ(mm)と、ロボット1aの軸座標P2の位置とロボット1dの軸座標P2の位置とを結ぶ線分L14の長さ(mm)とは、それぞれ既知である。また、ロボット1aの撮像画像30の中心O30の位置とロボット1dの撮像画像30の中心O30の位置とを結ぶ線分L24の長さ(ピクセル)は、既知である。そのため、ステップS171で求めた変換係数(mm/ピクセル)を用いて、先端座標系での線分L24の長さ(mm)を求める。また、線分L14、L15、L16とで構成される三角形T3と、線分L24、L25、L26とで構成される三角形T4とは、相似である。三角形T3と三角形T4とが相似であるため、線分L14、L15、L16と線分L24とから、先端座標系での線分L25の長さ(mm)を求めることができる。なお、線分L25は、ロボット1aの第2軸J2と光軸A3とを結ぶ線分である。線分L26は、ロボット1dの第2軸J2と光軸A3とを結ぶ線分である。
[モバイルカメラ3のオフセットを求める(図17:ステップS174)]
次に、制御部53は、下記式(3)を用いて、ロボット1aの第2軸J2と光軸A3とを結ぶ線分L25と、線分L17と、線分L21とから、線分L17と線分L25とのなす角度θ14を求める(図22参照)。
そして、求めた角度θ14と、既知である線分L15と線分L17のなす角度θ15とから、線分L15と線分L25とのなす角度θ16を求める。このようにして、モバイルカメラ3が第2アーム102に対して水平面内において第2軸J2まわりに角度θ16(°)ずれた位置に設置されていることを求めることができる。
以上のようにして、制御装置5により自動でモバイルカメラ3のオフセットを求めることができる。
以上説明したモバイルカメラ3のオフセットの算出(ステップS17)では、制御部53は、「可動部」としてのロボットアーム10を駆動して「撮像部」としてのモバイルカメラ3の姿勢を変更せずに「撮像部」としてのモバイルカメラ3を少なくとも2つの箇所(本実施形態では2箇所)に移動させ、少なくとも2つの箇所の「撮像部の座標系」としての画像座標系での座標(画像座標)と少なくとも2つの箇所の「ロボットの座標系」としての先端座標系での座標(ロボット座標)とに基づいて画像座標系と先端座標系との変換係数(mm/ピクセル)を算出し(ステップS171)、「撮像部」としてのモバイルカメラ3が設けられた「アーム」である第2アーム102に対する「撮像部」としてのモバイルカメラ3のオフセットを算出する。このように、モバイルカメラ3の姿勢を変更せずにモバイルカメラ3を移動(特に並進移動)させることで、ロボットアーム10(本実施形態では第2アーム102)に対するモバイルカメラ3の位置のずれ、すなわちオフセットを算出している。これにより、変換係数を比較的簡単に求めることができ、また、その変換係数を用いることで、オフセットを容易にかつ短時間で求めることができる。
ここで、並進移動とは、平面内を直線的に移動すること(回転や円弧状の移動を除く)を言う。また、モバイルカメラ3(撮像部)の姿勢の変更とは、成分ub,vb,wbのうちの少なくとも1つを変更することである。また、モバイルカメラ3(撮像部)の位置の変更とは、成分xb,yb,zbのうちの少なくとも1つを変更することである。また、上述のモバイルカメラ3(撮像部)の姿勢を変更せずとは、成分ub,vb,wbを変更しないことを示す。
また、ステップS17のオフセットの算出では、ステップS172〜ステップS174の代わりに後述する第3実施形態における最適化計算を用いることも可能である。
〈撮像画像の中心にマーカーを位置させる(図4:ステップS18)〉
次に、制御部53は、ロボットアーム10を駆動させ、撮像画像30の中心O30にマーカー61を位置させる。
〈ハンドの姿勢の変更動作を行うか否かを判断する(図4:ステップS19)〉
次に、制御部53は、ハンド150の姿勢の変更動作を行うか否かを判断する。
[ハンドの姿勢の変更動作を行う場合(ステップS19:Yes)]
ハンド150の姿勢の変更動作を行う場合には、ステップS21に移行する。
[ハンドの姿勢の変更動作の実行を開始(図4:ステップS21)]
制御部53は、ハンド150の姿勢の変更動作の実行を開始する。ハンド150の姿勢の変更動作は、モバイルカメラ3による撮像位置を変更せずにモバイルカメラ3の姿勢を変更するようにハンド150の姿勢を変更する動作である。このハンド150の姿勢の変更動作を行うことにより、上述したオフセットを更新してさらに精度の高いオフセットを求めることができる。
[撮像画像の中心にマーカーを位置させつつハンドを第1ハンド姿勢から第2ハンド姿勢に変更する(図4:ステップS22)]
図23は、図4に示すステップS22を説明するためのロボットの概略図である。図24は、図4に示すステップS22を説明するためのロボット座標を説明するための図である。図25は、図4に示すステップS22を説明するためのロボットの概略図である。
ここで、上述のステップS18において、撮像画像30の中心O30にマーカー61が位置しているときのロボットアーム10の先端部の状態を図23中の2点鎖線で示す。このときのハンド150の姿勢を「第1ハンド姿勢」とする。
まず、制御部53は、撮像画像30の中心O30にマーカー61を位置させたまま、ロボットアーム10を駆動させて、図23中の2点鎖線で示すハンド150の姿勢(第1姿勢)から、図23中の実線で示すハンド150の姿勢(第2姿勢)にする。具体的には、例えば、まず、ロボットアーム10を所謂右腕姿勢の状態にして、撮像画像30の中心O30にマーカー61を位置させる。次いで、ロボットアーム10を所謂左腕姿勢の状態にして、撮像画像30の中心O30にマーカー61を位置させる。ここで、ロボット1の構成では、1つのマーカー61を撮像画像30の中心O30に位置させた状態で取れるロボットアーム10の姿勢は、右腕姿勢と左腕姿勢との2つの姿勢に限定させる。したがって、マーカー61が設置されている位置(ベース座標系でどこにマーカー61が設置されているか)によって右腕姿勢と左腕姿勢とでハンド150がマーカー61を通る垂線周りに何度回転できるかが決まる。本実施形態では、例えば、上述のように右腕姿勢の状態にした後に左腕姿勢の状態にすると、マーカー61を通る垂線周りにハンド150(軸座標P2)が180°異なる位置に移動した状態となる(図24参照)。
次いで、制御部53は、図24に示すように、ハンド150が第1ハンド姿勢であるときの軸座標P2のロボット座標(xa3,ya3)と、ハンド150が第2ハンド姿勢であるときの軸座標P2のロボット座標(xa4,ya4)との中間点P0におけるロボット座標(xa5,ya5)を算出する。そして、制御部53は、例えば第1ハンド姿勢での軸座標P2のロボット座標と中間点P0のロボット座標との間の距離を求め、この距離を第2アーム102に対するモバイルカメラ3のオフセットとして設定する。
なお、本実施形態では、マーカー61を通る垂線周りハンド150およびモバイルカメラ3を180°回動させることによりモバイルカメラ3のオフセットを求めたが、この角度は180°に限定されず、任意である。角度が180°以外である場合であっても、水平面内における軸座標P2とマーカー61との間の距離と、右腕姿勢から左腕姿勢へのマーカー61を通る垂線周りの回転角度と、第1姿勢での軸座標P2のロボット座標と、第2姿勢での軸座標P2ロボット座標と、マーカー61の画像座標とを用いて連立方程式を解くことで、マーカー61のロボット座標を求めることができる。そして、例えば第1ハンド姿勢での軸座標P2のロボット座標とマーカー61のロボット座標との間の距離を求めることで、モバイルカメラ3のオフセットを求めることができる。
このように、制御部53は、「可動部」としてのロボットアーム10を駆動して「撮像部」としてのモバイルカメラ3による撮像位置を変更せずに「撮像部」としてのモバイルカメラ3の姿勢を変更し、モバイルカメラ3の姿勢の変更前後の「ロボットの座標系」としての先端座標系での座標(ロボット座標)に基づいてオフセットを更新する。すなわち、ステップS17で求めたオフセットおよびステップS22で姿勢変更を行うことで求めたオフセットを基に、新たなオフセットを求めている。これにより、より高精度なモバイルカメラ3のオフセット(具体的には、軸座標P2に対する撮像画像30に写るマーカー61の位置のずれ)を求めることができる。また、上述のモバイルカメラ3の姿勢を変更することは、成分ubを変更することを示す(図23参照)。
ここで、例えば、上述したように、モバイルカメラ3は、設計上、光軸A3が第3軸J3に対して平行になるように第2アーム102に取り付けられているが、実際には、モバイルカメラ3は、例えば人為的なモバイルカメラ3の取り付け誤差等により、光軸A3が第3軸J3に対して傾いた状態で取り付けられることがある(図25参照)。このように光軸A3が第3軸J3に対して傾いた状態であっても、上述したハンド150の姿勢の変更動作を行うことにより、光軸A3の傾きを考慮したオフセットの算出が可能である。
[ハンドを第1ハンド姿勢に戻す(ステップS23)]
次に、制御部53は、ハンド150を第1姿勢に戻し、ステップS24に移行する。
[キャリブレーションの実行(ステップS24)]
図26および図27は、それぞれ、図4に示すステップS24を説明するための撮像画像を示す図である。
制御部53は、ステップS16で求めた複数の基準点306の各位置と、ステップS21、S22で求めたオフセットとを用いて、各基準点306にマーカー61が位置するように、ロボットアーム10を駆動させて軸座標P2およびモバイルカメラ3を移動させる。このとき、移動させるごとにモバイルカメラ3でマーカー61を撮像して、画像データ取得する。
例えば、制御部53は、ロボットアーム10を駆動して、1つめの基準点306にマーカー61が位置するようにモバイルカメラ3を位置させる(図26参照)。このときのモバイルカメラ3の位置を「第1位置」とする。また、記憶部55は、このとき撮像した第1撮像画像30a(撮像画像30)を記憶する。また、例えば、制御部53は、ロボットアーム10を駆動して、2つめの基準点306にマーカー61が位置するようにモバイルカメラ3を位置させる(図27参照)。このときのモバイルカメラ3の位置を「第2位置」とする。また、記憶部55は、このとき撮像した第2撮像画像30b(撮像画像30)を記憶する。このようにして、順次、軸座標P2およびモバイルカメラ3の位置を移動させて、その都度、撮像画像を取得する。すなわち、第1〜第9位置にモバイルカメラ3を位置させ、第1〜第9撮像画像(画像データ)を取得する。
次いで、制御部53は、第1〜第9撮像画像に基づいたマーカー61の座標(成分xb,yb,ub)と、ロボット座標(成分xa,ya,ua)とに基づいて、画像座標をロボット座標に変換する補正パラメーター(座標変換行列)を求める。これにより、画像座標系と先端座標系とのキャリブレーションが完了する。これにより、上述したように、ロボット座標系とベース座標系との対応付けが済んでいる状態なので、画像座標系とベース座標系との対応付けを行うことができる。このようにして、モバイルカメラ3で撮像した撮像対象の位置(成分xb、yb)および姿勢(成分ub)を先端座標系における位置(成分xa、ya)および姿勢(成分ua)に変換することができる。そのため、撮像画像30を基にして先端座標系でのマーカー61の位置(成分xa、ya)を求めることができる。その結果、撮像画像30を基にしてロボット1のハンド150を目的の箇所に位置させることができる。
このように、制御部53は、「撮像部」としてのモバイルカメラ3を第1位置に位置させてモバイルカメラ3によってマーカー61を撮像した第1撮像画像30aと、モバイルカメラ3を第1位置とは異なる第2位置に位置させてモバイルカメラ3によってマーカー61を撮像した第2撮像画像30bとに基づいて、対応付けを行う(図27参照)。また、上述したように、モバイルカメラ3は第2アーム102の回動に伴って回動するため、第1位置でのモバイルカメラ3の第1姿勢と、第2位置でのモバイルカメラ3の第2姿勢とは、異なっている。それゆえ、図27に示すように、第1撮像画像30aのフレームは第2撮像画像30bのフレームに対して回動した状態となる。ここで、本実施形態では、ステップS16において、モバイルカメラ3の回動を考慮した基準点306の更新を行っている。そのため、このように第1位置でのモバイルカメラ3の姿勢(第1姿勢)と第2位置でのモバイルカメラ3の姿勢(第2姿勢)とが異なっていても、キャリブレーション(対応付け)を高精度に行うことができる。
[ハンドの姿勢の変更動作を行わない場合(ステップS19:No)]
ハンド150の姿勢の変更動作を行わない場合には、ステップS20に移行する。
[キャリブレーションの実行(ステップS20)]
上述した、ステップS16で求めた座標変換式と、ステップS17で求めたオフセットとを用いてステップS24と同様の方法により、画像座標系と先端座標系とのキャリブレーションを実行する。
以上のようにして、キャリブレーションが終了する。
以上説明したように、制御装置5は、複数の「アーム」としての第1アーム101、第2アーム102およびスプラインシャフト103を含む「可動部」としてのロボットアーム10を有するロボット1を制御する。そして、制御装置5は、「可動部」としてのロボットアーム10の最も先端側に位置するスプラインシャフト103(アーム)とは異なる第2アーム102(アーム)に設けられた撮像機能を有する「撮像部」としてのモバイルカメラ3の座標系(画像座標系)と、ロボット1の座標系(先端座標系)と、の対応付けを行う制御部53を備える。このような制御装置5によれば、上述したようにして画像座標系と先端座標系との対応付け、すなわちキャリブレーションが可能であるため、モバイルカメラ3の撮像画像30を基にしてロボット1に的確な作業を行わせることができる。また、制御装置5によれば、最も先端側に位置するスプラインシャフト103(アーム)とは異なる第2アーム102(アーム)に設けられたモバイルカメラ3における当該対応付けが可能である。そのため、この制御装置5を用いることで、ロボット1の第2アーム102(アーム)にモバイルカメラ3を設けることができる。その結果、例えばロボット1の基台110からモバイルカメラ3に引き回されたモバイルカメラ3の配線(図示せず)が、スプラインシャフト103の回転に伴い、頻繁に屈曲して劣化することを低減することができる。
特に、上述したように、モバイルカメラ3は、光軸A3と同じ回動方向(本実施形態ではヨー)である第1軸J1、第2軸J2および第3軸J3のうち、基台110側から数えて2つ目の第2軸J2周りに回動する第2アーム102に設けられている。本実施形態の制御装置5によれば、このような箇所に設けられたモバイルカメラ3に対して、対応付けを特に高精度に行うことができる。また、制御装置5は、第2アーム102に設けられたモバイルカメラ3に限らず、ロボットアーム10の最も先端に位置するアームであるスプラインシャフト103以外に設けられたモバイルカメラ3の画像座標系と、ロボット1の先端座標系との対応付けを行うことが可能であればよい。すなわち、制御装置5は、第1アーム101および第2アーム102のいずれかに設けられたモバイルカメラ3の画像座標系に関する対応付けを行うことが可能である。
なお、「ロボットの座標系」とは、本実施形態では先端座標系として捉えているが、ロボット1のベース座標系と捉えてもよいし、先端座標系以外のロボット1の所定部の座標系と捉えてもよい。また、「撮像部の座標系」とは、撮像部から出力される撮像画像の座標系のことを示す。また、「対応付け」とは、本実施形態では、画像座標系とロボットの座標系(先端座標系またはベース座標系)とのキャリブレーションのことと捉えているが、ステップS14のような画像座標系とロボットの座標系との相対的な関係を求めることとして捉えてもよい。相対的な関係とは、例えば画像座標系における2点間との距離を先端座標系における2点間との距離に変換することを意味する。
また、上述したように、制御部53は、マーカー61を「撮像部」としてのモバイルカメラ3によって撮像した撮像画像30(画像データ)に基づいて対応付け(キャリブレーションの実行)を行っている。これにより、例えばキャリブレーション治具等を対象物60に対してタッチアップすることが不要となり、対応付けを非接触で行うことができる。そのため、タッチアップの作業の人為的なバラツキを低減することができる。また、対応付けを非接触で行うことができるため、例えば対象物の材質等によらず、対応付けを高精度に行うことができる。
ここで、本実施形態では、「マーカー」は、対象物60に付された円形のマーカー61を例に挙げたが、「マーカー」は、モバイルカメラ3によって撮像可能な箇所に設けられたものであれば如何なるものであってもよい。例えば、「マーカー」としては、円形状のマーカー61に限定されず、円形以外の図形または文字等であってもよく、対象物60に設けられた特徴的な部分や、対象物60自体であってもよい。また、キャリブレーションで用いる対象物60の形状も如何なる形状であってもよい。
また、ここで、上述したように、ロボット1は、「可動部」としてのロボットアーム10を支持する基台110を有しており、ロボットアーム10の最も先端側に位置するスプラインシャフト103(アーム)とは異なる第2アーム102(アーム)は、基台110に対して回動可能である。そして、制御部53は、撮像画像30に基づいて対応付けで用いる複数の基準点305を設定し(ステップS15)、「撮像部」としてのモバイルカメラ3の回動を考慮した複数の基準点305の補正を行って、複数の基準点306を更新する(ステップS16)。具体的には、ステップS16においてモバイルカメラ3の回動を考慮して座標変換式を更新し、複数の基準点306を再設定している。そのため、キャリブレーションの実行において、第2アーム102の回動に伴ってモバイルカメラ3が回動することにより第1〜第9位置でのモバイルカメラ3の姿勢が変化しても、画像座標系と先端座標系とのより高精度な対応付けを実現することができる。そのため、第2アーム102に設けられたモバイルカメラ3の画像座標系と先端座標系との対応付けをより高精度に行うことができる。
また、上述したロボット1は、制御装置5によって制御され、複数の「アーム」としての第1アーム101、第2アーム102およびスプラインシャフト103を含む「可動部」としてのロボットアーム10を有する。このようなロボット1によれば、制御装置5による制御の下、キャリブレーション(対応付け)にかかる動作を的確に行うことができる。
以上、ロボットシステム100について説明した。このようなロボットシステム100は、上述したように、制御装置5と、制御装置5によって制御され、複数の「アーム」としての第1アーム101、第2アーム102およびスプラインシャフト103を含む「可動部」としてのロボットアーム10を有するロボット1と、撮像する機能を有する「撮像部」としてのモバイルカメラ3とを備える。このようなロボットシステム100によれば、制御装置5による制御の下、ロボット1はキャリブレーション(対応付け)にかかる動作を的確に行うことができる。また、第2アーム102にモバイルカメラ3を取り付けることができるため、例えばロボット1の基端側から引き回されたモバイルカメラ3の配線(図示せず)が、スプラインシャフト103の回転に伴い、頻繁に屈曲して劣化することを低減することができる。
<第2実施形態>
次に、第2実施形態について説明する。
図28は、第2実施形態に係るロボットシステムの斜視図である。図29は、図28に示すロボットシステムが有するロボットを示す側面図である。図30は、図28に示すロボットシステムによるキャリブレーションの流れを示すフロー図である。
本実施形態に係るロボットシステムは、主に、ロボットの構成が異なること以外は、上述した第1実施形態と同様である。なお、以下の説明では、第2実施形態に関し、上述した実施形態との相違点を中心に説明し、同様の事項に関してはその説明を省略する。
〈ロボット〉
図28に示すように、ロボットシステム100Aが有するロボット1Aは、いわゆる6軸の垂直多関節ロボットであり、基台110と、ロボットアーム10Aとを有する。
図28に示すように、ロボットアーム10Aは、第1アーム11(アーム)と、第2アーム12(アーム)と、第3アーム13(アーム)と、第4アーム14(アーム)と、第5アーム15(アーム)と、第6アーム16(アーム、先端アーム)と、一方のアームを他方のアーム(または基台110)に対して回動可能に支持する機構を有する6つの関節171〜176とハンド150とを有する。
基台110と第1アーム11とは、関節171を介して連結されており、第1アーム11は、基台110に対して鉛直方向に沿う第1回動軸O1まわりに回動可能となっている。また、第1アーム11と第2アーム12とは、関節172を介して連結されており、第2アーム12は、第1アーム11に対して水平方向に沿う第2回動軸O2まわりに回動可能となっている。また、第2アーム12と第3アーム13とは、関節173を介して連結されており、第3アーム13は、第2アーム12に対して水平方向に沿う第3回動軸O3まわりに回動可能となっている。また、第3アーム13と第4アーム14とは、関節174を介して連結されており、第4アーム14は、第3アーム13に対して第3回動軸O3と直交した第4回動軸O4まわりに回動可能となっている。また、第4アーム14と第5アーム15とは、関節175を介して連結されており、第5アーム15は、第4アーム14に対して第4回動軸O4と直交した第5回動軸O5まわりに回動可能となっている。また、第5アーム15と第6アーム16とは、関節176を介して連結されており、第6アーム16は、第5アーム15に対して第5回動軸O5と直交した第6回動軸O6まわりに回動可能となっている。ここで、図29に示すように、第5回動軸O5と第6回動軸O6との交わる点を軸座標P5(所定部)という。また、ハンド150は、第6アーム16の先端面に取り付けられており、ハンド150の中心軸が第6アーム16の第6回動軸O6と一致している。
また、図28には図示しないが、関節171〜176には、それぞれ、複数の駆動部130と、複数の位置センサー131とが設けられている(図2参照)。ロボット1Aは、6つの関節171〜176(または6つのアーム11〜16)と同じ数(本実施形態では6つ)の駆動部130および位置センサー131を有している。
このような構成のロボット1Aは、図29に示すように、上述した第1実施形態におけるロボット1と同様に、ロボット1Aの基台110を基準としたベース座標系(xr軸、yr軸およびzr軸)が設定されている。ベース座標系は、基台110の上端面の中心点を原点としている。また、同様に、ロボット1Aでは、ロボット1Aの第5アーム15を基準とした先端座標系(xa軸、ya軸およびza軸)が設定されている。本実施形態では、先端座標系は、第5アーム15の軸座標P5を原点としている。また、ベース座標系と先端座標系との校正(キャリブレーション)は済んでおり、ベース座標系を基準とした先端座標系の座標を算出することができる状態である。
〈モバイルカメラ〉
図28に示すように、モバイルカメラ3は、ロボット1Aの第5アーム15に設けられている。また、本実施形態では、モバイルカメラ3は、設計上、モバイルカメラ3の光軸A3が第5アーム15の第6回動軸O6に対してほぼ平行になるように取り付けられている。ここで、ロボット1Aは、基台110に対してヨー軸周りに回動可能な3つの部材としての、第1アーム11、第4アーム14および第6アーム16を有する。したがって、本実施形態では、モバイルカメラ3は、第6アーム16よりも基台110側に位置する第5アーム15(アーム)に設けられている。また、モバイルカメラ3は、第5アーム15に設けられているため、第5アーム15の駆動(回動)とともにその位置を変えることができる。
このような構成のロボット1が有する「可動部」としてのロボットアーム10Aは、「アーム」としての第5アーム15よりも「可動部」としてのロボットアーム10Aの先端側に設けられた「先端アーム」としての第6アーム16を含む構成である。すなわち、ロボット1Aは、第5アーム15にモバイルカメラ3が設けられている。このような構成のロボット1Aについても、第1実施形態と同様にして、制御装置5の制御の下でキャリブレーション(キャリブレーションのための各種設定および実行)を行うことができる。これにより、ロボットアーム10Aの最も先端側に位置する「先端アーム」としての第6アーム16以外である第5アーム15をモバイルカメラ3が設定されている「アーム」とすることができる。そのため、例えばロボット1Aの基端側から引き回されたモバイルカメラ3の配線(図示せず)が、第6アーム16の回転に伴い、頻繁に屈曲して劣化することを低減することができる。
なお、図30に示すように、本実施形態におけるキャリブレーションは、モバイルカメラ3が第5アーム15に設けられていること、および、ステップS17〜S24を省略していること以外は、第1実施形態におけるキャリブレーションとほぼ同様であるため、その詳細な説明を省略する。なお、本実施系形態におけるキャリブレーションでは、第1実施形態におけるキャリブレーションでの軸座標P2の代わりに軸座標P5を用い、また第2軸J2の代わりに第5回動軸O5を用いればよい。また、本実施形態におけるキャリブレーションの実行(S25)は、第1実施形態におけるキャリブレーションの実行(ステップS24)とほぼ同様である。
また、本実施形態における制御装置5は、第5アーム15に設けられたモバイルカメラ3に限らず、ロボットアーム10の最も先端に位置するアームである第6アーム16以外のアーム11〜15に設けられたモバイルカメラ3の画像座標系と、ロボット1の先端座標系との対応付けを行うことが可能であればよい。すなわち、制御装置5は、第1アーム11、第2アーム12、第3アーム13、第4アーム14および第5アーム15のいずれに設けられたモバイルカメラ3の画像座標系に関する対応付けを行うことが可能である。
また、本実施形態におけるロボットシステム100Aにおいても、上述したように、モバイルカメラ3は、光軸A3と同じ回動方向(本実施形態ではヨー)である第1回動軸O1、第4回動軸O4および第6回動軸O6のうち、基台110側から数えて3つめのヨー軸である第6回動軸O6周りに回動する第6アーム16よりも基台110側に位置する第5アーム15(1つ手前のアーム)に設けられている。本実施形態におけるロボットシステム100Aが備える制御装置5は、このような箇所に設けられたモバイルカメラ3に対して、対応付けを特に高精度に行うことができる。
また、本実施形態では、ロボット1Aが作業する作業台91の作業面(上面)は、水平面に平行であったが、作業面は水平面に平行でなく、水平面に対して傾斜していてもよい。その場合には、作業面に対して平行で、かつ、ベース座標系に基づいて定義付けされた仮想的な基準面を予め設定しておくことが好ましい。
<第3実施形態>
次に、第3実施形態について説明する。
図31は、第3実施形態に係るロボットシステムによるオフセットの算出の流れを示す図である。図32は、図31に示すステップS31、S32を説明するためのロボットの斜視図である。図33および図34は、それぞれ、図31に示すステップS34を説明するための図である。図35は、図31に示すステップS35を説明するための図である。なお、図32では、ハンド150の図示を省略している。
本実施形態に係るロボットシステムは、主に、モバイルカメラのオフセットの算出が異なること以外は、上述した第2実施形態と同様である。なお、以下の説明では、第3実施形態に関し、上述した実施形態との相違点を中心に説明し、同様の事項に関してはその説明を省略する。
≪キャリブレーション≫
本実施形態では、第2実施形態におけるロボット2Aにおける第5アーム15に対するモバイルカメラ3のオフセットを求める。例えば、第2実施形態におけるキャリブレーションにおいて、複数の基準点の再設定(図30:ステップS16)の終了後で、キャリブレーションの実行(図30:ステップS25)の開始前に、モバイルカメラ3のオフセットの算出(ステップS30)を行うことができる(図31参照)。具体的には、本実施形態では、第5アーム15に対するモバイルカメラ3の位置姿勢のずれ(成分xa、ya、ua)を求める。
以下、図31に示すフロー図を参照しつつ説明する。
まず、制御部53は、ステップS31〜S34を実行して、モバイルカメラ3の姿勢(成分ub、vb、wb)および位置(成分zb)を変更せずにモバイルカメラ3の位置(成分xb、yb)を変更するようにロボットアーム10Aを駆動させ、変更前後の画像座標およびロボット座標に基づいて、変換係数(mm/ピクセル:解像度)を求める。
また、予め、制御部53は、任意の位置H1に軸座標P5が位置するようにロボットアーム10Aを駆動させる。すなわち、例えば、図32の2点鎖線で示すロボット1Aの状態にしておく。
[位置H1での撮像画像30上のマーカー61の位置61eを検出する(図31:ステップS31)]
まず、制御部53は、モバイルカメラ3により画像データを取得して位置H1での撮像画像30上のマーカー61の位置61e(マーカー位置)を検出する(図32〜図34参照)。また、記憶部55は、位置H1におけるロボット座標(xa3,ya3,ua3)と位置61eにおける画像座標(xb3,yb3,ub3)とを記憶する(図33および図34参照)。
[モバイルカメラ3の姿勢を変えずに位置H2に並進移動させる(図31:ステップS32)]
次に、制御部53は、ロボットアーム10Aを駆動させ、モバイルカメラ3の姿勢(成分ub、vb、wb)および位置(成分zb)を変えずに軸座標P5を並進移動させる。すなわち、例えば、図32の2点鎖線で示すロボット1Aの状態から図32の実線で示すロボット1Aの状態にする。これは、例えば、第1回動軸O1と第4回動軸O4と第6回動軸O6とを回動させずに、第2回動軸O2と第3回動軸O3と第5回動軸O5とを回動させることで実現できる(図29および図32参照)。これにより、軸座標P5が位置H1から矢印a13方向に移動した位置H2に位置する(図32および図33参照)。また、このとき、撮像画像30に写るマーカー61が位置61eから矢印a14方向に移動した位置61f(マーカー位置)に位置する(図34参照)。
[位置H2での撮像画像30上のマーカー61の位置61fを検出する(図31:ステップS33)]
次に、制御部53は、モバイルカメラ3により画像データを取得して位置H2での撮像画像30上のマーカー61の位置61f(マーカー位置)を検出する(図34参照)。また、記憶部55は、位置H2におけるロボット座標(xa4,ya4,ua4)と位置61fにおける画像座標(xb4,yb4,ub4)とを記憶する(図33および図34参照)。
[変換係数(1)を算出する(図31:ステップS34)]
次に、制御部53は、位置H1と位置H2との間の距離(mm)と、撮像画像30上での位置61eでのマーカー61の位置と位置61fでのマーカー61の位置との間の距離(ピクセル)とから、画像座標とロボット座標の変換係数(mm/ピクセル:解像度)を求める。言い換えると、上述のモバイルカメラ3を2箇所に移動させた移動前後における軸座標P5(モバイルカメラ3)の移動距離(mm)と、撮像画像30上に写るマーカー61の移動距離(ピクセル)とから、変換係数を求める。
[モバイルカメラ3の設置向き(2)を算出する(図31:ステップS35)]
次に、ステップS31〜S34における情報を基に、モバイルカメラ3の設置向き(具体的には、成分ua)を算出する。
具体的には、図35に示すように、ベース座標系における位置H1、H2での先端座標系の向き(角度Ru)と、ベース座標系における位置H1から位置H2への軸座標P5の移動方向(角度α)と、画像座標系におけるマーカー61の位置61eから61fへの移動方向(角度β)とを用いて、以下の式(4)から、先端座標系における撮像画像30のフレームの方向(角度θ10)を求める。
[仮想平面内でのN個の撮像姿勢を設定する(図30:ステップS36)]
次に、制御部53は、仮想平面内のN個の任意の位置でのモバイルカメラ3の姿勢(具体的には光軸A3(モバイルカメラ3の設置軸)の成分ua)を設定する。仮想平面は、例えば、光軸A3に対して直交する仮想的な平面であり、ベース座標系に基づいて定義された座標系(ローカル座標系)が設定されている。なお、この仮想平面の原点は、本実施形態では軸座標P5に設定している。
[第n撮像姿勢へ移動する(図31:ステップS37)]
次に、制御部53は、ロボットアーム10Aを駆動させ、N個の撮像姿勢のうちの第1撮像姿勢(第n撮像姿勢)へ移動する。Nの数値は、3以上であればよく、その数は任意であるが、数が多い程、オフセットの算出の精度が向上する。本実施形態では、例えば、Nは10である。
[第n撮像姿勢で撮像してマーカー61の位置を検出する(図31:ステップS38)]
次に、制御部53は、第1撮像姿勢(第n撮像姿勢)で撮像した撮像画像30としての第1画像(第n画像)を基にして、第1撮像姿勢でのマーカー61の位置(位置n)を検出する。
[マーカー61の位置と軸座標P5の姿勢(3)を保存する(図31:ステップS39)]
次に、記憶部55は、第1画像(第n画像)上のマーカー61の位置における画像座標(xb,yb,ub)と、第1撮像姿勢(第n撮像姿勢)におけるロボット座標(xa,ya,ua)とを記憶する。
[N個のマーカー61の位置nを検出したか否かを判断する(図31:ステップS40)]
次に、制御部53は、N個のマーカー61の位置(位置n)を検出し、保存したか否かを判断する。本実施形態では、Nは10であるため、nは10である。位置nを検出していない場合、すなわちN個のマーカー61を検出していない場合には、ステップS37に戻る。また、位置nを検出した場合、すなわちN個のマーカー61を検出した場合には、ステップS41に移行する。本実施形態では、nが10になるまで、ステップS37〜S40を繰り返す。したがって、次に、第2撮像姿勢で撮像した撮像画像30としての第2画像を基にして第2撮像姿勢でのマーカー61の位置を検出する。そして、nが10になったら、すなわち第1〜第n画像を取得したら、ステップS41に移行する。
[変換係数(1)と設置向き(2)とモバイルカメラ3の光軸A3の姿勢(3)とからモバイルカメラ3のオフセットを最適化計算により算出する(図31:ステップS41)]
以下、最適化計算を用いて、モバイルカメラ3のオフセット(軸座標P5とモバイルカメラ3に写るマーカー61の位置関係)を求める方法について説明する。なお、本実施形態では、最適化計算で解を計算しているが解析的に解いても良い。
以下の最適化計算では、ロボット1Aが作業する作業面(例えば作業台91の上面等)に対して、モバイルカメラ3の受光面311を平行に位置させて利用する場合(図29参照)において、軸座標P5とモバイルカメラ3に写るマーカー61の位置関係を2次元座標系に限定した環境で考える。
まず、先端座標系におけるマーカー61の位置と、モバイルカメラ3が設置されたロボット1Aの軸座標P5を以下のように定義すると、先端座標系におけるモバイルカメラ3のオフセットを以下のように計算できる。
J5は、軸座標P5である。CAMは、モバイルカメラ3の光軸A3(撮像画像30の中心O30にマーカー61が位置しているときのマーカー61の位置)である。Tx、Ty、Tuは、未知変数である。
同様に、ベース座標系における軸座標P5の位置姿勢を以下のように定義すると、第5回動軸O5の座標を以下のように計算できる。
BASEは、基台110の上端面の中心点(原点)である。Rx、Ry、Ruは、未知変数である。
また、ベース座標系におけるマーカー61の位置(Mx,My)を以下のように定義する。
上記の定義に加えて、さらに変換係数(解像度)をFx、Fy(ピクセル/mm)とし、モバイルカメラ3の撮像画像30の中心O30をCx、Cy(ピクセル)とすると、マーカー61の画像座標P’(ub,vb)およびマーカー61の位置(Mx,My)等の関係は以下の関係式で表せる。
上記の式において、変換係数Fx、Fyを事前に計測した後、Tx、Ty、Tu、Mx、Myを未知変数として最適化計算を行う。ロボット1AのN個の姿勢Rnにおいて撮像したマーカー61の位置をPnとし、下記のエラー評価関数Eを最小化して未知変数Tx、Ty、Tu、Mx、Myを計算する。
エラー評価関数Eの最小化は、以下の手順1〜5による多変数のニュートン法を実行する。
(手順1)
初期値X0を下記のように決定する。
例えば、初期値を以下の値を利用して設定する。
Tx=0, Ty=0,
Tuは、ステップS35で求めたモバイルカメラ3の設置向きを利用する。Fx、Fyは、ステップS34で求めた変換係数を用いる。
Mx=0, My=0
(手順2)
現在値Xにおける勾配∇Eとヘッセ行列Hを計算する。
(手順3)
連立方程式の解ΔXnを計算する。
(手順4)
Xn値を更新する。
(手順5)
ΔXn<δならばXnを返却する。他の場合は手順2から手順5を繰り返す。
以上により、未知変数Tx、Ty、Tu、Mx、Myが求まり、モバイルカメラ3のオフセットを求めることができる。また、このような最適化計算を用いたモバイルカメラ3のオフセットの算出は、第1実施形態におけるステップS17(具体的には、ステップS172〜ステップS174)の代わりに用いることもできる。その場合には、軸座標P5を軸座標P2に置き換えればよい。
なお、上述した最適化計算において、未知変数Tuとして上述した角度θ10の値を用いた場合、Tx、Ty、Mx、Myの4つの変数のみの算出になる。そのため、この場合には、ステップS37におけるNの数値は、2以上であってもよい。
以上説明したように、制御装置5は、「撮像部」としてのモバイルカメラ3が設けられた「アーム」としての第5アーム15を含む「可動部」としてのロボットアーム10Aを有するロボット1Aを制御する。そして、「アーム」としての第5アーム15を並進移動させることにより「撮像部」としてのモバイルカメラ3の姿勢(成分ua)を求める制御部53を備える(ステップS31〜S35)。このような制御装置5によれば、第5アーム15を並進移動させることにより、第5アーム15に対するモバイルカメラ3の姿勢(成分ua)を求めることができる。そのため、ロボットアーム10Aの最も先端側に位置する「先端アーム」としての第6アーム16以外である第5アーム15をモバイルカメラ3が設定されている「アーム」とすることができる。その結果、例えば第6アーム16を過剰に回動させることにより基台110から引き回されたモバイルカメラ3の配線(図示せず)が、第6アーム16の回転に伴い、頻繁に屈曲して劣化することを低減することができる。ここで、並進移動とは、平面内を直線的に移動すること(回転や円弧状の移動を除く)を言う。
なお、例えば、第6アーム16の回動量が比較的少ない用途においては、「撮像部」としてのモバイルカメラ3が設けられた「アーム」は第6アーム16であってもよく、その場合でも、第6アーム16を並進移動させることで配線が第6アーム16の回転に伴い、頻繁に屈曲して劣化することを低減することができる。
また、上述したように、制御部53は、並進移動の方向(本実施形態では軸座標P5の並進移動の方向)と、「アーム」としての第5アーム15を並進移動させる方向(本実施形態では軸座標P5の並進移動の方向)と、「アーム」としての第5アーム15の並進移動に伴う「撮像部」としてのモバイルカメラ3の座標系(画像座標系)における移動方向とに基づいて「撮像部」としてのモバイルカメラ3の姿勢(成分ua)を求めている。具体的には、上述したように、ステップS35でモバイルカメラ3の姿勢を求めている。これにより、ロボットアーム10を過剰に回動させることなく、第5アーム15に対するモバイルカメラ3の姿勢を求めることができる。
特に、上述したように、制御部53は、「撮像部」としてのモバイルカメラ3によって撮像されたマーカー61(マーカー認識位置)に基づいて、「アーム」としての第5アーム15に対するモバイルカメラ3のオフセットを求めている。これにより、オフセットを例えばメジャー(測定機器)等で測ることが不要となる。そのため、オフセットを例えばメジャー(測定機器)等で測ることによるタッチアップの作業の人為的なバラツキを低減することができる。また、オフセットの算出を非接触で行うことができるため、例えば対象物60の材質等によらず、オフセットの算出を高精度に行うことができる。
具体的には、上述したように、制御部53は、「撮像部」としてのモバイルカメラ3を第1撮像姿勢に位置させてマーカー61が撮像された第1画像(撮像画像30)と、モバイルカメラ3を第2撮像姿勢に位置させてマーカー61が撮像された第2画像(撮像画像30)と、に基づいてオフセットを求める。本実施形態では、上述したように、第1〜第10画像に基づいてオフセットを求めている。これにより、オフセットの算出を非接触で行うことができ、また、比較的簡単な方法でオフセットの算出を高精度に行うことができる。
また、上述したように、ロボット1Aは、制御装置5によって制御され、「撮像部」としてのモバイルカメラ3が設けられた「アーム」としての第5アーム15を含む「可動部」としてのロボットアーム10Aを有する。このようなロボット1Aによれば、上述したように、オフセットの算出にかかる動作を的確に行うことができる。
以上説明したような本実施系形態におけるロボットシステム100Aは、制御装置5と、「撮像部」としてのモバイルカメラ3と、制御装置5によって制御され、「撮像部」としてのモバイルカメラ3が設けられた「アーム」としての第5アーム15を含む「可動部」としてのロボットアーム10Aを有するロボット1Aとを備えることを特徴とする。このようなロボットシステム100Aによれば、制御装置5の制御の下、ロボット1Aはオフセットの算出にかかる動作を的確に行うことができる。また、例えばロボット1Aの基台110側から引き回されたモバイルカメラ3の配線(図示せず)が、第6アーム16の回転に伴い、頻繁に屈曲して劣化することを低減することができる。
なお、第6アーム16が過剰に回転しない場合には、モバイルカメラ3の設置箇所は先端アーム(第6アーム16)であってもよい。また、第1実施形態におけるロボット1についても同様のことが言える。また、「アーム」は、第5アーム15に限定されず、「撮像部」が設けられているアームであればよい。
<第4実施形態>
次に、第4実施形態について説明する。
図36は、第4実施形態に係るロボットシステムが有するロボットの先端部を示す図である。図37は、図36に示すロボットが有するハンドを並進移動させた状態を示す図である。図38は、図36に示すロボットの状態での撮像画像を示す図である。図39は、図37に示すロボットの状態での撮像画像を示す図である。図40は、図36に示すロボットアームに設置されたモバイルカメラを目的の箇所に位置させるための処理を示すフロー図である。図41は、図40に示すステップS55を説明するための図である。図42は、図36に示すロボットにおいてモバイルカメラの視野内にハンドが位置している状態を示す図である。
本実施形態に係るロボットシステムは、主に、ハンドの構成が異なることと、制御部による更なる処理を追加していること以外は、上述した第3実施形態と同様である。なお、以下の説明では、第4実施形態に関し、上述した実施形態との相違点を中心に説明し、同様の事項に関してはその説明を省略する。
図36に示すロボット1Aが有するハンド150Aは、第6回動軸O6から見て第6アーム16よりも外側に突出している。このようなハンド150Aを有するロボット1Aにおいて、例えば、モバイルカメラ3を対象物60の地点615上の位置から+xr方向に位置する地点616上の位置に移動させるために、所謂ジョグ送りによりハンド150Aの先端P150を+yr方向に並進移動させると、第6アーム16が第6回動軸O6周りに(矢印a18方向に)回動する(図36および図37参照)。また、このとき、第5アーム15が第1回動軸O1に平行な軸周りに(矢印a17方向に)回動し、この第5アーム15の回動とともにモバイルカメラ3も第1回動軸周りに(矢印a17方向に)回動する。また、モバイルカメラ3の回動によって、撮像画像30のフレームも同様に回動する(図38および図39参照)。
このように、ハンド150Aを例えば並進移動させる際、モバイルカメラ3の移動には第5アーム15の回動成分が加わる。そのため、例えば図36に示すハンド150Aの先端P150を基準にして所謂ジョグ送り等によりモバイルカメラ3を目的の箇所に移動させようとすると、撮像画像30の中心O30を目的の箇所に適切に位置させることが難しい。
そこで、本実施形態では、制御部53は、モバイルカメラ3を目的の箇所(例えば地点616)に適切に移動できるように、すなわち、撮像画像30の中心O30に目的の箇所が写るようにロボットアーム10Aを制御している。以下、図40に示すフロー図を参照しつつ説明する。また、以下に説明するモバイルカメラ3を目的の箇所に適切に位置させるための処理は、上述した第3実施形態におけるオフセットの算出が終了した状態で行う。
まず、制御部53は、第6アーム16にモバイルカメラ3が設置されていると仮定し、モバイルカメラ3が目標姿勢(xr、yr、zr、ur、vr、wr)をとるときの第6回動軸O6のジョイント角θ6を計算する(ステップS51)。ここで、本実施形態では、目標姿勢としては、例えば、図41の撮像画像30c(撮像画像30)の位置姿勢をとるモバイルカメラ3の位置姿勢とする。また、ジョイント角θ6とは、例えば、軸座標P5における第6アーム16の先端中心(第6回動軸O6の軸座標)の角度とする。
次に、記憶部55は、ステップS51のときのジョイント角θ6を初期値として記録する(ステップS52)。
次に、制御部53は、目標姿勢(ur)に所定角度(例えば1°)を加え、再度ジョイント角θ6を計算し、姿勢(ur)に対するジョイント角θ6の変位Δθ6を計算する(ステップS53)。
次に、制御部53は、ジョイント角θ6が0(零)になるように目標姿勢(ur)を変更し、ジョイント角θ1〜θ6を計算する(ステップS54)。具体的には、ステップS51における目標姿勢(ur)を「ura」とし、ステップS51で求めたジョイント角θ6を「θ6A」とし、ステップS54で新たに求める目標姿勢(ur)を「urb」として、ura、θ6Aと、ステップS53で求めたΔθ6と、以下の式(5)とを用いて、目標姿勢(urb)を求める。また、新たな目標姿勢(urb)における第1回動軸O1〜第6回動軸O6のジョイント角θ1〜θ6を計算する。
次に、制御部53は、ステップS54で求めたジョイント角θ6が所定の閾値範囲内であるか否かを判断する(ステップS55)。ジョイント角θ6が所定の閾値範囲内でない場合には、ステップS53に戻る。一方、ジョイント角θ6が所定の閾値範囲内である場合には、ステップS56に移行する。ここで、所定の閾値範囲は、予め設定された値である。例えばジョイント角θ6は0°であることが好ましく、よって、閾値範囲内としては、±10°内であることが好ましく、±0.1°であることがより好ましい。例えばジョイント角θ6が0°である場合とは、図41に示す第5アーム15d(第5アーム15)および第6アーム16d(第6アーム16)の状態である。すなわち、第5アーム15の中心軸(第5回動軸O5と直交する軸)と第6回動軸O6とが一致している状態である。したがって、例えば、図41中の破線で示す第5アーム15および第6アーム16の状態から実線で示す第5アーム15dおよび第6アーム16dの状態となるまで、ステップS53〜S55を繰り返す。
なお、ステップS53〜S55を、複数回繰り返してもステップS55で収束が得られない場合には、収束するまで任意の角度(例えば30°)ずつ初期値を変更してステップS53〜S55を繰り返してもよい。
次に、制御部53は、ジョイント角θ6が所定の閾値範囲内であると判断したら、ステップS54で計算したジョイント角θ1〜θ5と、ステップS52で記憶したジョイント角θ6の初期値とを目標姿勢してロボット1Aに対して出力する(ステップS56)。
以上のようにして、モバイルカメラ3を目的の箇所に位置させるための処理が終了する。ここで、上述したように、ロボット1Aは、「可動部」としてのロボットアーム10Aを支持する基台110を有しており、「アーム」としての第5アーム15は、基台110に対して回動可能であり、「先端アーム」としての第6アーム16は、第5アーム15に対して回動可能である。そして、制御部53は、上述したように、第5アーム15の回動に伴って回動する「撮像部」としてのモバイルカメラ3の回動を考慮して、モバイルカメラ3(本実施形態では、モバイルカメラ3の撮像画像30の中心O30)を指定した位置に移動させる処理を行っている(図40参照)。これにより、モバイルカメラ3を指定した位置に適切に位置させることができる。また、上述したモバイルカメラ3を目的の箇所に適切に位置させるための処理を用いることで、モバイルカメラ3以外の第5アーム15に設けられた各種ツール(図示せず)を目的の箇所に適切に位置させることも可能である。
また、上述したような構成のハンド150Aを有するロボット1Aでは、図42に示すように、第6アーム16が回動するとその回動に伴ってハンド150Aが回動し、モバイルカメラ3の下(真下の領域)にハンド150Aが位置する場合がある。そのため、上述したモバイルカメラ3の視野内にハンド150Aが位置して、モバイルカメラ3で対象物60が見えなくなることがある。例えば、上述したモバイルカメラ3を目的の箇所に位置させるための処理においてモバイルカメラ3を目的の箇所に位置させたとき、モバイルカメラ3で対象物60が見えなくなることがある。
そこで、制御部53は、モバイルカメラ3の視野内にハンド150Aが位置しないように、ハンド150Aの先端軸角度(ハンド150Aのジョイント角度)を設定している。
具体的には、例えば、記憶部55は、モバイルカメラ3の視野内にハンド150Aが位置していない状態におけるハンド150Aの先端軸角度に関する情報を記憶しており、制御部53は、この情報を基にモバイルカメラ3(第5アーム15)の移動を制御する。
また、例えば、制御部53は、移動前後において、移動前にモバイルカメラ3の視野内にハンド150Aが位置していない場合には、その位置でのハンド150Aの先端軸角度を記憶部55に記憶させておき、移動後においても移動前のハンド150Aの先端軸角度を維持する。
また、例えば、制御部53は、モバイルカメラ3の視野内にハンド150Aが位置していない状態におけるハンド150Aの先端軸角度の範囲を予め設定しておく。そして、制御部53は、このハンド150Aの先端軸角度の範囲と、モバイルカメラ3の目標姿勢とに基づき、両者が重ならない範囲で目的とする先端軸角度に最も近い先端軸角度(先端軸姿勢の成分ur)を設定する。
このように、制御部53は、「撮像部」としてのモバイルカメラ3によって撮像した撮像画像30に「可動部」としてのロボットアーム10Aが写らないようにロボットアーム10Aを制御する。これにより、第5アーム15に設置されたモバイルカメラ3によりマーカー61を撮像しても、撮像画像30にロボットアーム10Aが写ることを回避できる。
特に、上述したように、「撮像部」としてのモバイルカメラ3は、「可動部」としてのロボットアーム10Aの先端側を撮像可能であり、制御部53は、撮像画像30にロボットアーム10Aの先端部(例えばハンド150A)が写らないようにロボットアーム10Aを制御する。これにより、第5アーム15に設置されたモバイルカメラ3によりマーカー61を撮像しても、撮像画像30にハンド150Aが写ることを回避できる。そのため、撮像画像30を用いてオフセットの算出ならびにキャリブレーションをより高精度に行うことができる。
なお、第1実施形態におけるロボット1においても制御部53は同様に撮像画像30にロボットアーム10が写らないように制御している。
また、本実施形態では、図38に示すように、撮像画像30内において撮像対象を検出する撮像対象領域としての領域ROI(Region of Interest)を設定している。これにより、撮像対象の検出を迅速に行うことができる。ここで、図38に示す状態から図39に示す状態のように撮像画像30が回動すると、撮像対象であるマーカー61の位置が、図38中の2点鎖線で示す領域ROIから外れてしまう。そこで、本実施形態では、図39中の実線で示すように、撮像画像30の回動に応じて領域ROIを回動させている。例えば、モバイルカメラ3が軸座標P5のua軸周りに+10°回転した場合には、ua軸周りに−10°回転するようにub軸周りに領域ROIを回動させる。これにより、第5アーム15の回動に伴いモバイルカメラ3(撮像画像30)が回動しても、撮像画像30内において撮像対象を適切に検出することができる。
以上、本発明の制御装置、ロボットおよびロボットシステムを図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物が付加されていてもよい。また、各実施形態を適宜組み合わせてもよい。
また、ロボットアームの数は、特に限定されず、2つ以上であってもよい。また、ロボットアームの回動軸の数は、特に限定されず、任意である。