以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図1~図3を参照して、一実施形態に係る機械システム10について説明する。機械システム10は、制御装置12、移動機械14、及び光学装置16を備える。
制御装置12は、プロセッサ(CPU、GPU等)18、及び記憶部(ROM、RAM等)20を有するコンピュータであって、移動機械14、及び光学装置16を制御する。プロセッサ18は、記憶部20とバス22を介して互いに通信可能に接続され、記憶部20と通信しつつ、各種演算を実行する。
移動機械14は、マニピュレータ24、及びツール26を有する。本実施形態においては、マニピュレータ24は、垂直多関節型ロボットであって、ベース部28、旋回胴30、下腕部32、上腕部34、及び手首部36を有する。ベース部28は、作業セルの床の上に固定されている。
旋回胴30は、鉛直軸周りに回動可能となるようにベース部28に固定されている。下腕部32は、水平軸周りに回動可能となるように旋回胴30に設けられている。上腕部34は、下腕部32の先端部に回動可能に設けられている。手首部36は、上腕部34の前端部に回動可能に設けられている。手首部36は、ツール26を回動可能に支持する。
マニピュレータ24は、複数のサーボモータ38(図2)を有する。これらサーボモータ38は、ベース部28、旋回胴30、下腕部32、上腕部34、及び手首部36に内蔵され、制御装置12からの指令に応じて、マニピュレータ24の可動コンポーネント(すなわち、旋回胴30、下腕部32、上腕部34、及び手首部36)の各々を、駆動軸の周りに回転駆動する。
ツール26は、例えば、レーザ加工ヘッド、スポット溶接ガン、又はロボットハンドであって、ワークWに対して所定の作業(レーザ加工、溶接、又はワークハンドリング等)を行う。ツール26は、手首部36に着脱可能に取りけられ、マニピュレータ24によって移動される。
マニピュレータ24には、マニピュレータ座標系CMが設定されている。マニピュレータ座標系CMは、マニピュレータ24の可動コンポーネントを自動制御するための座標系である。本実施形態においては、マニピュレータ座標系CMの原点が、ベース部28の中心に配置され、マニピュレータ座標系CMのz軸が、実空間の鉛直方向に平行であり、旋回胴30が、マニピュレータ座標系CMのz軸周りに回動されるように、マニピュレータ座標系CMが設定されている。ワークWは、その表面がマニピュレータ座標系CMのx-y平面と略平行となるように、マニピュレータ座標系CMの予め定められた位置に配置されている。
一方、ツール26には、ツール座標系CTが設定される。このツール座標系CTは、3次元空間内におけるツール26の位置及び姿勢を自動制御するための座標系である。プロセッサ18は、ツール26の位置及び姿勢を、ツール座標系CTによって規定される位置及び姿勢に一致させるように、マニピュレータ24の可動コンポーネントの各々を、マニピュレータ座標系CMにおいて動作させる。こうして、ツール26は、マニピュレータ24によって移動され、マニピュレータ座標系CMにおける任意の位置及び姿勢に配置される。
図3に示すように、光学装置16は、光学センサ40、及び距離センサ42を有する。光学センサ40は、物体を撮像して該物体の画像データを取得する。本実施形態において、光学センサ40は、投光部40a及び受光部40bを有する。投光部40aは、光軸Oに沿って光(例えば、レーザ光)を出射し、該光を撮像対象に照射する。
受光部40bは、撮像センサ(CCD、CMOS等)を有し、投光部40aによって撮像対象に照射された光の反射光を受光する。受光部40bは、受光した光を電気信号に変換し、撮像対象の画像データを取得する。光学センサ40に対しては、撮像座標系CIが設定されている。撮像座標系CIは、光学センサ40が撮像する画像データの各画素の座標を規定する座標系であって、光学センサ40によって撮像された画像データの各画素は、撮像座標系CIにおいて座標化される。
距離センサ42は、光学センサ40から撮像対象までの光軸Oの方向の距離を測定する。具体的には、距離センサ42は、いわゆる光学式距離センサであって、投光部42a、受光部42b、及び距離演算部42cを有する。投光部42aは、光軸Oに沿って光(例えば、レーザ光)を出射し、該光を、光学センサ40の撮像対象に照射する。
受光部42bは、投光部42aによって撮像対象に照射された光の反射光を受光する。距離演算部42cは、プロセッサ等を有し、投光部42aが光を出射してから、受光部42bが該光の反射光を受光するまでの時間に基づいて、光学センサ40から撮像対象までの距離を測定する。なお、距離センサ42は、光学式距離センサに限定されず、光学センサ40から撮像対象までの距離を測定可能であれば、如何なるタイプのセンサであってもよい。
本実施形態においては、光学装置16は、ツール26に固定され、該ツール26とともにマニピュレータ24によって移動される。光学装置16は、ツール26に対して所定の位置関係となるように、配置される。具体的には、光学装置16は、光軸Oがツール座標系CTのz軸と平行となる(又は、一致する)ように、ツール26に対して配置されている。したがって、撮像座標系CIのx-y平面は、ツール座標系CTのz軸と直交する。
次に、機械システム10の動作について説明する。プロセッサ18は、マニピュレータ24を動作させてツール26を移動させつつ、該ツール26によってワークW上の作業箇所に対して所定の作業(レーザ加工、溶接、又はワークハンドリング等)を行う。ワークWに対する作業を行うとき、プロセッサ18は、ツール26を複数の目標位置Pn(n=1,2,3,・・・)に順に配置させる。
図4に、目標位置Pnの一例を示す。図4に示す例では、5つの目標位置P1~P5が設定されている。例えば、5つの目標位置P1~P5の各々は、ツール26を配置させるようにマニピュレータ24に教示する教示点である。代替的には、5つの目標位置P1~P5のうち、目標位置P1、P3及びP5が教示点である一方、目標位置P1とP3の間の目標位置P2と、目標位置P3とP5の間の目標位置P4とは、補間点である。この補間点は、前後の教示点のマニピュレータ座標系CMの座標、及び、該前後の教示点の間のツール26の移動軌跡の滑らかさ等を鑑み、該前後の教示点の座標から演算によって求められる。
以下の説明では、目標位置P5が、ツール26によってワークWの作業箇所に作業を行うための作業位置であるとする。この場合、プロセッサ18は、ワークWの作業のために、ツール26を、目標位置P1→P2→P3→P4→P5の順に、配置させる。ツール26を目標位置Pn(n=1~5)に配置させるとき、プロセッサ18は、ツール座標系CTの原点(いわゆる、TCP)が目標位置Pnに配置されるように、ツール座標系CTを設定する。
そして、プロセッサ18は、設定したツール座標系CTによって規定される位置及び姿勢に一致させるように、マニピュレータ24によってツール26を移動させ、これにより、ツール26を目標位置Pnに配置する。プロセッサ18は、ツール26を目標位置Pnへ移動させる一連の動作を、作業プログラムWPに従って実行する。
作業プログラムWPは、ツール26を、目標位置Pnから目標位置Pn+1へ移動させるための移動指令MCnを含む。移動指令MCnは、目標位置Pn及びPn+1の情報(具体的には、マニピュレータ座標系CMの座標)を含む。作業プログラムWPは、ツール26を教示点としての目標位置Pnの各々へ移動させる動作をマニピュレータ24に教示すること等によって構築され、記憶部20に予め記憶される。
作業プログラムWPに含まれる移動指令MCnによって、マニピュレータ24がツール26を移動させるべき基準軌跡Anが規定される。例えば、図4に示す例の場合、基準軌跡A1~A4が規定されている。これら基準軌跡Anは、作業プログラムWP上で規定される制御上の軌跡である。
ここで、プロセッサ18が作業プログラムWPに従ってマニピュレータ24へ移動指令MCnを発信し、該マニピュレータ24が移動指令MCnに従ってツール26を移動させた場合でも、ツール26の実際の移動軌跡が基準軌跡Anからずれる場合がある。このような移動軌跡のずれは、例えば、マニピュレータ24によってツール26を移動させるときの加減速等によって該ツール26に生じる微小振動、又は、マニピュレータ24の可動コンポーネント間のバックラッシに起因する。
このように移動軌跡のずれが生じると、ツール26を作業位置(つまり、目標位置P5)に配置させて該ツール26によってワークWに対する作業を実行したときに、ツール26がワークWに対して実際に作業する位置が、ワークW上に定められた作業箇所からずれてしまうことになり得る。
そこで、本実施形態においては、プロセッサ18は、ツール26を目標位置Pnの各々へ移動させるときの移動軌跡の基準軌跡Anからのずれを取得する。以下、機械システム10においてずれ量を取得する機能について説明する。プロセッサ18は、作業プログラムWPに従ってマニピュレータ24のサーボモータ38へ移動指令MCnを発信し、マニピュレータ24は、プロセッサ18からの移動指令MCnに従って、ツール26を目標位置P1、P2、P3、P4及びP5へ順に移動させる。
ここで、光学センサ40が物体を撮像することができる撮像範囲には、制限がある。光学センサ40の撮像範囲は、該光学センサ40の仕様(撮像センサのサイズ、焦点距離等)に依存する。以下、ツール26が目標位置P3~P5の間の位置にあるときに、ワークWが光学センサ40の撮像範囲に入るものとする。
また、プロセッサ18は、ツール26を目標位置P3、P4及びP5に配置するときに、ツール座標系CTのz軸(又は、光軸O)が、マニピュレータ座標系CMのx-y平面(又は、ワークWの表面)と直交するように、ツール座標系CTを設定し、ツール26の姿勢を一定に維持したまま、ツール26を目標位置P3、P4及びP5へ移動させるものとする。
プロセッサ18は、ツール26を目標位置P3、P4及びP5へ順に移動させている間に光学センサ40を動作させて、移動機械14の周囲の物体としてワークWを連続的に撮像する。具体的には、プロセッサ18は、ツール26が目標位置P3、P4及びP5の各々に到達した時点で、ワークWを撮像する。
プロセッサ18は、マニピュレータ24の位置データ(例えば、各サーボモータ38の回転角度等)から、ツール26が、制御上の目標位置P3、P4及びP5に到達したか否かを検知できる。プロセッサ18は、ツール26が制御上の目標位置P3、P4及びP5に到達したことを検知した時点で、光学センサ40にワークWを撮像させる。
図5は、プロセッサ18がツール26を目標位置P3に配置したことを検知した時点τP3で光学センサ40がワークWを撮像した画像データ50を画像化した例を示す。図5に示す画像データ50には、ワークWの表面に存在する微小な凹凸等の視覚的特徴が模様を形成するように写っている。プロセッサ18は、画像データ50を画像解析し、画像データ50に含まれる1つの視覚的特徴VF(つまり、図5の画像データ50に写る黒点)を抽出する。
プロセッサ18は、画像データ50から抽出した視覚的特徴VFの、該画像データ50における位置を求める。具体的には、画像データ50における視覚的特徴VFの位置を示す情報として、画像データ50にて視覚的特徴VFを写す1つの画素(例えば、視覚的特徴VFの画像領域の中心の画素)の、撮像座標系CIの座標(x3,y3)を取得する。
図6に、プロセッサ18がツール26を目標位置P4に配置したことを検知した時点τP4で光学センサ40がワークWを撮像した画像データ52を画像化した例を示す。なお、図6においては、比較のために、図5に示す画像データ50に写る視覚的特徴VFの位置を、白点D3として図示している。
プロセッサ18は、画像データ52を画像解析し、画像データ50と共通の視覚的特徴VFを抽出する。図6に示すように、画像データ52に写る視覚的特徴VFの位置は、画像データ50に写る視覚的特徴VFの位置D3から、変位量E3だけ、撮像座標系CIにおいて変位している。プロセッサ18は、画像データ52における視覚的特徴VFの位置として、画像データ52にて視覚的特徴VFを写す1つの画素の、撮像座標系CIにおける座標(x4,y4)を取得する。
図7に、プロセッサ18がツール26を目標位置P5に配置したことを検知した時点τP5で光学センサ40がワークWを撮像した画像データ54を画像化した例を示す。なお、図7においては、比較のために、図5に示す画像データ50に写る視覚的特徴VFの位置を白点D3として図示し、図6に示す画像データ52に写る視覚的特徴VFの位置を白点D4として図示している。
プロセッサ18は、画像データ54を画像解析し、画像データ50及び52と共通の視覚的特徴VFを抽出する。図7に示すように、画像データ54に写る視覚的特徴VFの位置は、画像データ52に写る視覚的特徴VFの位置D4から、変位量E4だけ、撮像座標系CIにおいて変位している。
プロセッサ18は、画像データ54における視覚的特徴VFの位置として、画像データ54にて視覚的特徴VFを写す1つの画素の、撮像座標系CIにおける座標(x5,y5)を取得する。以上のように、光学センサ40は、ツール26が制御上の目標位置P3、P4及びP5に到達したことを検知した時点τP3、τP4及びτP5で、ワークWの視覚的特徴VFを連続的に撮像する。
一方、光学センサ40がワークWを撮像する動作と同期して、プロセッサ18は、距離センサ42を動作させて、光学センサ40とワークWとの光軸Oの方向の距離Fを測定する。したがって、距離センサ42は、光学センサ40がワークWを撮像した時点τP3、τP4及びτP5で、光学センサ40とワークWとの光軸Oの方向の距離FP3、FP4及びFP5を、それぞれ測定する。
そして、プロセッサ18は、画像データ50における視覚的特徴VFの位置と、該画像データ50の後に撮像された画像データ52における視覚的特徴VFの位置とに基づいて、画像データ50の撮像時点τP3から画像データ52の撮像時点τP4までのツール26の移動軌跡K3を取得する。
具体的には、プロセッサ18は、上述のように取得した座標(x3,y3)と座標(x4,y4)との差を、撮像座標系CIにおける変位量E3(図6)として求める。なお、変位量E3はベクトルである。上述したように、ツール26を目標位置P3~P5へ移動するとき、光軸OがワークWの表面と直交するように、ツール座標系CTが設定されている(換言すれば、ツール26の姿勢が一定となっている)。よって、ツール26を目標位置P3~P5へ移動するときの、マニピュレータ座標系CMに対する撮像座標系CIの姿勢(つまり、各軸の方向)が既知となる。
プロセッサ18は、マニピュレータ座標系CMに対する撮像座標系CIの姿勢情報と、撮像座標系CIにおける変位量E3と、距離FP3及びFP4とから、時点τP3から時点τP4までのツール26のマニピュレータ座標系CMにおける移動軌跡K3を、演算により求めることができる。このように、本実施形態においては、プロセッサ18は、画像データ50の撮像時点τP3から、画像データ52の撮像時点τP4までのツール26の移動軌跡K3を取得する軌跡取得部60(図2)として機能する。
このように取得した移動軌跡K3の例を図8に示す。図8に示す例では、画像データ50及び52から取得した移動軌跡K3が、基準軌跡A3からずれ量δ4だけずれている。なお、図8に示す例では、ツール26が制御上の目標位置P3に到達したことが検知されたとき(つまり、時点τP3で)、該ツール26の実際の位置が制御上の目標位置P3に実質一致しているものと仮定している。
このように、時点τP3でツール26の実際の位置を制御上の目標位置P3に実質一致させるために、例えば、プロセッサ18は、時点τP3でワークWを撮像する前にツール26の移動を一時的に停止してツール26に生じる振動を減衰させ、所定時間経過後に、目標位置P4へ向かうツール26の移動を再開させてもよい。
プロセッサ18は、画像データ50及び52から取得した、マニピュレータ座標系CMにおける移動軌跡K3と、作業プログラムWPに含まれる、ツール26を目標位置P3からP4まで移動させるための移動指令MC3によって規定される基準軌跡A3とから、ずれ量δ4を演算により取得する。
具体的には、移動軌跡K3は、制御上の目標位置P3から位置J4へのベクトルであり、基準軌跡A3は、制御上の目標位置P3からP4へのベクトルであるので、これら2つのベクトルのマニピュレータ座標系CMにおける差を、ずれ量δ4として演算することができる。このずれ量δ4は、位置J4から目標位置P4へのベクトルである。
同様に、プロセッサ18は、マニピュレータ座標系CMに対する撮像座標系CIの姿勢情報と、画像データ52及び54から取得した撮像座標系CIにおける変位量E4(図7)と、画像データ52及び54の撮像時点τP4及びτP5での距離FP4及びFP5とを用いて、時点τP4から時点τP5までのツール26のマニピュレータ座標系CMにおける移動軌跡K4を取得する。移動軌跡K4は、位置J4からJ5へのベクトルである。
そして、プロセッサ18は、マニピュレータ座標系CMにおける移動軌跡K4と、ツール26を目標位置P4からP5まで移動させるための移動指令MC4によって規定される基準軌跡A4とから、移動軌跡K4の基準軌跡A4からのずれ量δ5を演算により取得する。このずれ量δ5は、位置J5から目標位置P5へのベクトルである。以上のように、プロセッサ18は、移動軌跡K3、K4の基準軌跡A3、A4からのずれ量δ4、δ5を取得するずれ量取得部62(図2)として機能する。
次いで、プロセッサ18は、取得したずれ量δ4及びδ5に基づいて、ツール26の目標位置P4及びP5を補正する。具体的には、プロセッサ18は、作業プログラムWPに含まれていた目標位置P4を、マニピュレータ座標系CMにおいてずれ量δ4だけ変位させた位置に、補正する。また、プロセッサ18は、作業プログラムWPに含まれていた目標位置P5を、マニピュレータ座標系CMにおいてずれ量δ5だけ変位させた位置に、補正する。
このようにして、プロセッサ18は、作業プログラムWPに規定されていた目標位置P4、P5の位置情報を補正することにより、該作業プログラムWPを更新する。したがって、プロセッサ18は、ツール26の目標位置を補正する位置補正部64(図2)として機能する。
以上のように、本実施形態においては、マニピュレータ24が移動指令MCnに従ってツール26を移動させている間にワークWの視覚的特徴VFを連続的に撮像する光学センサ40と、移動軌跡K3、K4を取得する軌跡取得部60と、ずれ量δ4、δ5を取得するずれ量取得部62とによって、ツール26の移動軌跡K3、K4の基準A3、A4からのずれを取得している。
したがって、光学センサ40、軌跡取得部60、及びずれ量取得部62は、ツール26の移動軌跡K3、K4の基準A3、A4からのずれを取得する装置70(図1、図2)を構成する。この装置70によれば、光学センサ40が撮像する画像データ50、52、54から、ツール26の移動軌跡K3、K4の基準軌跡A3、A4からのずれ量δ4、δ5を、自動的且つ高精度に求めることができる。
また、本実施形態においては、距離センサ42は、装置70を構成し、光学センサ40が視覚的特徴VFを撮像したときに該光学センサ40から撮像対象のワークWまでの距離Fを測定している。この構成によれば、プロセッサ18は、マニピュレータ座標系CMにおける移動軌跡K3及びK4を、3次元軌跡として取得することができる。
また、本実施形態においては、位置補正部64は、装置70を構成し、取得したずれ量δ4、δ5に基づいて、ツール26の目標位置を補正している。この構成によれば、プロセッサ18が、更新後の作業プログラムWPに従ってマニピュレータ24を動作させてツール26を作業位置へ配置し、該ツール26でワークWに対する作業を行ったときに、ツール26がワークWに対して実際に作業する位置を、ワークW上の作業箇所に、より高精に配置させることができる。これにより、ワークWに対する作業不良を低減することができる。また、オペレータが手動で作業プログラムWPにおける目標位置Pnの補正を行う作業を省くことができるので、マニピュレータ24の教示に掛かる作業を軽減できる。
また、本実施形態においては、移動指令MCは、複数の目標位置Pnの情報を含み、光学センサ40は、ツール26が複数の目標位置P3、P4及びP5の各々に到達した時点τP3、τP4及びτP5で、ワークWの視覚的特徴VFを撮像している。この構成によれば、プロセッサ18は、作業プログラムWPに規定された目標位置P4、P5での移動軌跡K3、K4のずれ量δ4、δ5を取得できる。
なお、プロセッサ18は、ツール26を目標位置P3からP5まで移動させている間に、光学センサ40によってワークWを、上述の時点τP3、τP4及びτP5ではなく、周期的又はランダムなタイミングで撮像してもよい。以下、図9~図12を参照して、装置70の他の機能について、説明する。
本実施形態においては、プロセッサ18は、ツール26を目標位置P3に到達させた時点τP3、該時点τP3から時間t1が経過した時点τα(=τP3+t1)、該時点ταから時間t2が経過した時点τβ(=τα+t2)、及び、該時点τβから時間t3が経過した時点τγ(=τβ+t3)で、光学センサ40にワークWを撮像させる。
時間t1、t2及びt3は、互いに同じであってもよい。この場合、光学センサ40は、時点τP3から所定の周期でワークWを撮像することになる。代替的には、時間t1、t2及びt3は、互いに異なってもよい。この場合、光学センサ40は、時点τP3からランダムなタイミングでワークWを撮像することになる。
一方、光学センサ40がワークWを撮像する動作と同期して、プロセッサ18は、距離センサ42を動作させて、光学センサ40とワークWとの光軸Oの方向の距離を距離センサ42に測定させる。したがって、距離センサ42は、光学センサ40がワークWを撮像した時点τP3、τα、τβ及びτγで、光学センサ40とワークWとの距離FP3、Fα、Fβ及びFγを、それぞれ測定する。
プロセッサ18は、時点τP3で、図5に示す画像データ50を撮像する。図9は、光学センサ40が時点ταでワークWを撮像した画像データ82を示す。なお、図9においては、比較のために、図5に示す画像データ50に写る視覚的特徴VFの位置を、白点D3として図示している。
また、図10は、光学センサ40が時点τβでワークWを撮像した画像データ84を示す。図10においては、比較のために、図5に示す画像データ50に写る視覚的特徴VFの位置を白点D3として図示し、図9に示す画像データ82に写る視覚的特徴VFの位置を白点Dαとして図示している。
また、図11は、光学センサ40が時点τγでワークWを撮像した画像データ86を示す。図11においては、比較のために、図5に示す画像データ50に写る視覚的特徴VFの位置を白点D3として図示し、図9に示す画像データ82に写る視覚的特徴VFの位置を白点Dαとして図示し、図10に示す画像データ84に写る視覚的特徴VFの位置を白点Dβとして図示している。
プロセッサ18は、軌跡取得部60として機能し、上述の実施形態と同様の方法で、画像データ50に写る視覚的特徴VFの位置から、画像データ82に写る視覚的特徴VFの位置までの、撮像座標系CIにおける変位量Eαを求め、該変位量Eαと、距離FP3及びFαとを用いて、時点τP3から時点ταまでのツール26のマニピュレータ座標系CMにおける移動軌跡Kα(図12)を取得する。この移動軌跡Kαは、制御上の目標位置P3から位置Jαへのベクトルである。
同様に、プロセッサ18は、画像データ82に写る視覚的特徴VFの位置から、画像データ84に写る視覚的特徴VFの位置までの、撮像座標系CIにおける変位量Eβを求め、該変位量Eβと、距離Fα及びFβとを用いて、時点ταから時点τβまでのツール26のマニピュレータ座標系CMにおける移動軌跡Kβを取得する。この移動軌跡Kβは、位置JαからJβへのベクトルである。
同様に、プロセッサ18は、画像データ84に写る視覚的特徴VFの位置から、画像データ86に写る視覚的特徴VFの位置までの、撮像座標系CIにおける変位量Eγを求め、該変位量Eγと、距離Fβ及びFγとを用いて、時点τβから時点τγまでのツール26のマニピュレータ座標系CMにおける移動軌跡Kγを取得する。この移動軌跡Kγは、位置JβからJγへのベクトルである。
次いで、プロセッサ18は、ずれ量取得部62として機能して、マニピュレータ座標系CMにおける移動軌跡Kα、Kβ及びKγの基準軌跡A3及びA4からのずれ量を取得する。一例として、プロセッサ18は、目標位置P3、位置Jα、位置Jβ、及び位置Jγを結ぶ合成移動軌跡KCを求める。合成移動軌跡KCは、滑らかな曲線として求められてもよいし、移動軌跡Kα、Kβ及びKγに相当する直線の組み合わせとして求められてもよい。
そして、プロセッサ18は、目標位置P4と合成移動軌跡KCとの距離が最短となる、合成移動軌跡KC上の点G1と、該目標位置P4との間のずれ量δαを取得する。このずれ量δαは、点G1から目標位置P4までのベクトルである。また、プロセッサ18は、目標位置P5と合成移動軌跡KCとの距離が最短となる、合成移動軌跡KC上の点G2と、該目標位置P5との間のずれ量δβを取得する。このずれ量δβは、点G2から目標位置P5までのベクトルである。
そして、プロセッサ18は、位置補正部64として機能して、作業プログラムWPに含まれていた目標位置P4を、マニピュレータ座標系CMにおいてずれ量δαだけ変位させた位置に、補正する。また、プロセッサ18は、作業プログラムWPに含まれていた目標位置P5を、マニピュレータ座標系CMにおいてずれ量δβだけ変位させた位置に、補正する。このように、本実施形態によれば、光学センサ40が撮像する画像データ50、82、84、86から、ツール26の移動軌跡Kα、Kβ及びKγ(又は、合成移動軌跡KC)の基準軌跡A3、A4からのずれ量δα、δβを、自動的且つ高精度に求めることができる。
次に、図13を参照して、機械システム10のさらに他の機能について説明する。本実施形態に係る機械システム10においては、プロセッサ18は、図8に示すずれ量δ4及びδ5を取得したときに、該ずれ量δ4及びδ5が閾値δthを超えたか否かを判定し、該ずれ量δ4及びδ5が閾値δthを超えたと判定した場合に、警告信号を生成する。以下、図14を参照して、本実施形態に係る機械システム10の動作について説明する。
図14に示すフローは、プロセッサ18がツール26を目標位置P3に配置し、光学センサ40が図5に示す画像データ50を撮像したときに、開始する。ステップS1において、プロセッサ18は、ツール26を配置すべき目標位置Pnを特定する番号「n」を、「4」にセットする。図14に示すフローにおいては、プロセッサ18は、後述のステップS9でYESと判定するまで、ステップS2~S9のループを繰り返し実行する。
ステップS2において、プロセッサ18は、ツール26を目標位置Pnへ移動する。仮に、第1巡目のループのステップS2を実行する場合は、目標位置Pnを特定する番号「n」が「4」にセットされているので、このステップS2において、プロセッサ18は、目標位置P3から目標位置P4へ移動させるための移動指令MC3に従ってマニピュレータ24を動作させ、ツール26を目標位置P4へ向かって移動させる。
ステップS3において、プロセッサ18は、ツール26が目標位置Pnに到達したか否かを判定する。上述したように、プロセッサ18は、マニピュレータ24の位置データ(例えば、各サーボモータ38の回転角度等)から、ツール26が、制御上の目標位置Pnへ到達したか否かを検知できる。
仮に、第1巡目のループのステップS3を実行する場合、このステップS3において、プロセッサ18は、ツール26が目標位置P4に到達したか否かを判定する。プロセッサ18は、ツール26が目標位置Pnに到達したことを検知した場合にYESと判定し、ステップS4へ進む。一方、プロセッサ18は、ツール26が目標位置Pnに到達していない場合にNOと判定し、ステップS3をループする。
ステップS4において、プロセッサ18は、光学センサ40を動作させてワークWを撮像するのと同期して、距離センサ42を動作させて光学センサ40とワークWとの距離FPnを測定する。仮に、第1巡目のループのステップS4を実行する場合、プロセッサ18は、光学センサ40に図6に示す画像データ52を撮像させるのと同期して、距離センサ42に、光学センサ40とワークWとの距離FP4を測定させる。
ステップS5において、プロセッサ18は、軌跡取得部60として機能して移動軌跡Kn-1を取得するとともに、ずれ量取得部62として機能して移動軌跡Kn-1の基準軌跡An-1からのずれ量δnを取得する。仮に、第1巡目のループのステップS5を実行する場合、プロセッサ18は、図8の実施形態と同様の方法で、移動軌跡K3を取得するとともに、移動軌跡K3の基準軌跡A3からのずれ量δ4を取得する。
また、第2巡目のループのステップS5を実行する場合、後述のステップS8の結果、目標位置Pnを特定する番号「n」が「5」にセットされるので、プロセッサ18は、図8の実施形態と同様の方法で、移動軌跡K4を取得するとともに、移動軌跡K4の基準軌跡A4からのずれ量δ5を取得する。代替的には、プロセッサ18は、図15に示すように、移動軌跡K4の始点(つまり、位置J4)と基準軌跡A4との始点(つまり、目標位置P4)とを一致させたときの移動軌跡K4と基準軌跡A4との差δ5’を、ずれ量として取得してもよい。
ステップS6において、プロセッサ18は、直近のステップS5で取得したずれ量δnが、予め定められた閾値δthよりも大きいか否かを判定する。仮に、第1巡目のループのステップS6を実行する場合、プロセッサ18は、ずれ量δ5が閾値δthよりも大きいか否かを判定する。
また、第2巡目のループのステップS5を実行する場合、プロセッサ18は、ずれ量δ5(又はδ5’)が、閾値δth(又はδth’)よりも大きいか否かを判定する。これら閾値δth(又はδth’)は、オペレータによって予め定められ、記憶部20に記憶される。
プロセッサ18は、ずれ量δnが閾値δthよりも大きい場合にYESと判定し、ステップS7へ進む一方、ずれ量δnが閾値δth以下である場合にNOと判定し、ステップS8へ進む。このように、本実施形態においては、プロセッサ18は、ずれ量δnが閾値δthよりも大きいか否かを判定する判定部92(図13)として機能する。
ステップS7において、プロセッサ18は、警告信号を生成する。例えば、プロセッサ18は、「移動軌跡の基準からのずれが過大となっています」という音声又は画像の形式で警告信号を生成し、制御装置12に設けられたディスプレイ又はスピーカ(図示せず)を通して、該警告信号を出力する。このように、プロセッサ18は、ずれ量δnが閾値δthよりも大きい場合に警告信号を生成する警告生成部94(図13)として機能する。
ステップS8において、プロセッサ18は、目標位置Pnを特定する番号「n」を、1だけインクリメントする。仮に、第1巡目のループのステップS8を実行する場合、プロセッサ18は、番号「n」を、「4」から「5」へインクリメントする。ステップS9において、プロセッサ18は、目標位置Pnを特定する番号「n」が、「5」よりも大きいか否かを判定する。プロセッサ18は、番号「n」が「5」よりも大きい場合にYESと判定し、ステップS10へ進む一方、番号「n」が「5」以下である場合にNOと判定し、ステップS2へ戻る。
ステップS10において、プロセッサ18は、位置補正部64として機能して、移動機械14のツール26の目標位置を補正する。具体的には、プロセッサ18は、作業プログラムWP内の目標位置P4をずれ量δ4だけ変位させた位置に補正し、目標位置P5をずれ量δ5だけ変位させた位置に補正することで、作業プログラムWPを更新する。
以上のように、本実施形態においては、光学センサ40、軌跡取得部60、ずれ量取得部62、位置補正部64、判定部92、及び警告生成部94は、ツール26の移動軌跡K3、K4の基準A3、A4からのずれを取得する装置90(図13)を構成する。該装置90によれば、オペレータは、移動軌跡K3、K4の基準A3、A4からのずれが過大となっていることを、自動的且つ直感的に認識できる。
なお、図12に示す実施形態において、ずれ量δα又はδβを取得したときに、プロセッサ18は、判定部92として機能して、ずれ量δα又はδβが閾値δth2よりも大きいか否かを判定してもよい。そして、ずれ量δα又はδβが閾値δth2よりも大きい場合に、プロセッサ18は、警告生成部94として機能して、警告信号を生成してもよい。
次に、図16及び図17を参照して、機械システム10のさらに他の機能について説明する。本実施形態に係る機械システム10においては、プロセッサ18は、マニピュレータ24によってツール26を目標位置P1~P3へ移動させている間に、マニピュレータ24の位置データから求められる参照軌跡の基準からのずれが過大であるか否かを判定する。
以下、図17を参照して、本実施形態に係る機械システム10の動作について説明する。なお、図17に示すフローにおいて、図14に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。図17に示すフローは、プロセッサ18がツール26を目標位置P1に配置したときに、開始する。ここで、プロセッサ18は、ツール26を目標位置P1に配置したとき、後述する位置データ取得部102として機能して、マニピュレータ24の位置データPD1を取得する。
ステップS11において、プロセッサ18は、ツール26を配置すべき目標位置Pnを特定する番号「n」を、「2」にセットする。図17に示すフローにおいては、プロセッサ18は、後述のステップS16でYESと判定するまで、ステップS2~S16のループを繰り返し実行する。
ステップS3でYESと判定したとき、ステップS12において、プロセッサ18は、マニピュレータ24の位置データPDnを取得する。具体的には、プロセッサ18は、位置データPDnとして、マニピュレータ24の各サーボモータ38の回転角度を取得する。この回転角度は、各サーボモータ38に設けられた回転検出器(エンコーダ又はホール素子等。図示せず)から取得できる。このように、プロセッサ18は、マニピュレータ24がツール26を移動している間に位置データPDnを取得する位置データ取得部102(図16)として機能する。
ステップS13において、プロセッサ18は、参照軌跡Hn-1を取得するとともに、ずれ量取得部62として機能して、参照軌跡Hn-1の基準軌跡An-1からのずれ量Δnを取得する。以下、図18を参照して、このステップS13について説明する。ツール26を目標位置Pnに配置させたときの、該ツール26のマニピュレータ座標系CMにおける計算上の位置(例えば、TCPの座標)を、マニピュレータ24の位置データPDnから演算により求めることができる。
プロセッサ18は、このステップS13において、直近のステップS12で取得した位置データPDnから、ツール26を目標位置Pnに配置させたときの、該ツール26の計算上の位置Inを取得する。これととともに、プロセッサ18は、位置データPDnの前に取得した位置データPDn-1から、ツール26を目標位置Pn-1に配置させたときの該ツール26の計算上の位置In-1を取得する。
仮に、第1巡目のループにおけるステップS13を実行する場合、プロセッサ18は、ツール26を目標位置P2に配置させたときのマニピュレータ24の位置データPD2から、ツール26の計算上の位置I2(図18)を取得するとともに、ツール26を目標位置P1に配置させたとき(すなわち、図17のフローの開始時)のマニピュレータ24の位置データPD1から、ツール26の計算上の位置I1を取得する。
そして、プロセッサ18は、取得した位置I1からI2までのマニピュレータ座標系CMにおける移動軌跡を、参照軌跡H1として演算により求める。こうして、プロセッサ18は、位置データPDn及びPDn-1に基づいて、参照軌跡Hn-1を取得する。したがって、プロセッサ18は、参照軌跡Hn-1を取得する参照軌跡取得部104(図16)として機能する。
次いで、プロセッサ18は、参照軌跡Hn-1の基準軌跡An-1からのずれ量Δnを参照ずれ量として取得する。仮に、第1巡目のループのステップS13を実行する場合、プロセッサ18は、参照軌跡H1の基準軌跡A1からのずれ量Δ2を参照ずれ量として取得する。参照軌跡H1は、位置I1からI2へのベクトルであり、基準軌跡A1は、目標位置P1からP2へのベクトルであるので、これら2つのベクトルのマニピュレータ座標系CMにおける差を、ずれ量Δ2として演算することができる。このずれ量Δ2は、位置I2から目標位置P2へのベクトルである。
また、第2巡目のループのステップS13を実行する場合、ステップS8の結果、目標位置Pnを特定する番号「n」が「3」にセットされるので、プロセッサ18は、参照軌跡H2の基準軌跡A2からのずれ量Δ3を参照ずれ量として取得する。参照軌跡H2は、位置I2からI3までのベクトルである。代替的には、プロセッサ18は、図15を用いて説明したように、参照軌跡H2の始点(つまり、位置I2)と基準軌跡A2の始点(つまり、目標位置P2)とを一致させたときの参照軌跡H2と基準軌跡A2との差Δ3’を、参照ずれ量として取得してもよい。
ステップS14において、プロセッサ18は、直近のステップS13で取得した参照ずれ量Δnが、予め定められた閾値Δthよりも大きいか否かを判定する。仮に、第1巡目のループのステップS14を実行する場合、プロセッサ18は、参照ずれ量Δ2が閾値δthよりも大きいか否かを判定する。
また、第2巡目のループのステップS14を実行する場合、プロセッサ18は、参照ずれ量Δ3(又はΔ3’)が、閾値Δth(又はΔth’)よりも大きいか否かを判定する。これら閾値Δth(又はΔth’)は、オペレータによって予め定められ、記憶部20に記憶される。
プロセッサ18は、参照ずれ量Δnが閾値Δthよりも大きい場合にYESと判定し、ステップS15へ進む一方、参照ずれ量Δnが閾値Δth以下である場合にNOと判定し、ステップS8へ進む。このように、本実施形態においては、プロセッサ18は、参照ずれ量Δnが閾値Δthよりも大きいか否かを判定する第2の判定部106(図13)として機能する。
ステップS15において、プロセッサ18は、第2の警告信号を生成する。例えば、プロセッサ18は、「参照軌跡の基準からのずれが過大となっています」という音声又は画像の形式で第2の警告信号を生成し、出力する。このように、プロセッサ18は、参照ずれ量Δnが閾値Δthよりも大きい場合に第2の警告信号を生成する第2の警告生成部108(図16)として機能する。
ステップS16において、プロセッサ18は、目標位置Pnを特定する番号「n」が、「3」よりも大きいか否かを判定する。プロセッサ18は、番号「n」が「3」よりも大きい場合にYESと判定し、ステップS17へ進む一方、番号「n」が「3」以下である場合にNOと判定し、ステップS2へ戻る。
ステップS17において、プロセッサ18は、位置補正部64として機能して、移動機械14のツール26の目標位置を補正する。具体的には、プロセッサ18は、作業プログラムWP内の目標位置P2を参照ずれ量Δ2だけ変位させた位置に補正し、目標位置P3をずれ量Δ3だけ変位させた位置に補正することで、作業プログラムWPを更新する。
以上のように、本実施形態においては、光学センサ40、軌跡取得部60、ずれ量取得部62、位置補正部64、位置データ取得部102、参照軌跡取得部104、第2の判定部106、及び第2の警告生成部108は、ツール26の移動軌跡Hnの基準Anからのずれを取得する装置100(図16)を構成する。
装置100によれば、ワークWが光学センサ40の撮像範囲外となる目標位置P1~P3の間をツール26が移動しているときは、参照軌跡取得部104が取得した参照軌跡Hnから参照ずれ量Δnを取得し、ワークWが光学センサ40の撮像範囲内となる目標位置P3~P5の間をツール26が移動しているときは、軌跡取得部60が取得した移動軌跡Knからずれ量δnを取得することができる。
したがって、目標位置P1~P5の範囲で、ツール26の移動軌跡Hn、Knの基準Anからのずれを取得できる。また、第2の判定部106及び第2の警告生成部108によって、オペレータは、参照軌跡Hnの基準Anからのずれが過大となっていることを、自動的且つ直感的に認識できる。
なお、図16の実施形態の機能を図13の実施形態に組み合わせることもできる。この場合、装置90は、位置データ取得部102、参照軌跡取得部104、第2の判定部106、及び第2の警告生成部108をさらに備えることになる。以下、図16の実施形態の機能を図13に組み合わせた場合の機械システム10の動作の一例について、説明する。
まず、プロセッサ18は、図17のフローを開始し、第2巡目のループのステップS3を実行してYESと判定したとき(つまり、ツール26の目標位置P3への配置を検知したとき)、光学センサ40にワークWを撮像させ、これにより、図5に示す画像データ50を撮像するとともに、図14に示すフローを開始する。そして、プロセッサ18は、図17に示すフローと並行して、図14に示すフローを実行する。
一例として、図17のフローで第2巡目のループのステップS3を実行してYESと判定したときに、プロセッサ18は、ツール26に生じる振動を減衰させて参照ずれ量Δ4をゼロに近づけるべく、ツール26の移動を一時的に停止し、所定時間経過後に、光学センサ40にワークWを撮像させ、図14に示すフローを開始してもよい。
他の例として、図17のフローで第2巡目のループにおけるステップS3を実行してYESと判定したときに、ツール26の移動を継続させつつ光学センサ40にワークWを撮像させ、図14に示すフローを開始してもよい。そして、図14に示すフローの第1巡目のループにおけるステップS5を実行するときに、プロセッサ18は、図19に示すように、参照軌跡H2の終点である位置I3を始点として、移動軌跡K3を取得してもよい。
なお、上述のツール26としては、種々のタイプのものが考えられる。以下、図20~図22を参照して、ツール26の具体例について説明する。図20に示すツール26は、レーザ加工ヘッドである。具体的には、ツール26は、中空のノズル110を有し、該ノズル110に形成された出射口110aから光軸O2に沿ってレーザ光を出射し、ワークWをレーザ加工(レーザ切断、レーザ溶接等)する。本実施形態においては、ツール座標系CTは、そのz軸が光軸O2に一致するように、ツール26に対して設定されている。
ツール26でワークWに対して作業を行うとき、例えば、プロセッサ18は、ツール26を、上述の目標位置Pn(n=1~5)に順に配置させ、ツール26を目標位置P5に配置させたときに、ツール26を動作させて光軸O2に沿ってレーザ光を出射し、ワークW上の作業箇所をレーザ加工する。このとき、光軸O2は、ワークWの表面と略直交し、且つ、作業箇所を通過するように配置される。
一方、光学装置16は、ノズル110の出射口110aに設けられている。光学装置16は、ツール26に対して所定の位置関係となるように配置される。具体的には、光学装置16は、光軸Oがレーザ光の光軸O2と一致する(又は、平行となる)ように、ツール26に対して配置されている。すなわち、光学装置16は、撮像座標系CIのx-y平面が、レーザ光の光軸O2(又は、ツール座標系CTのz軸)と直交するように、ツール26に対して配置されている。なお、光学装置16は、出射口110aに限らず、ノズル110の如何なる位置に設けられてもよい。
図21に示すツール26は、スポット溶接ガンである。具体的には、ツール26は、固定アーム112、可動アーム114、固定電極116、及び可動電極118を有する。固定アーム112は、手首部36に対して固定される一方、可動アーム114は、軸線O3(いわゆる、ガン軸)に沿って移動可能となるように設けられている。
固定電極116は、固定アーム112の先端に固定されている一方、可動電極118は、固定電極116と対向するように可動アーム114の先端に固定されている。固定電極116及び可動電極118は、軸線O3上に整列するように配置されている。可動アーム114が軸線O3に沿って往復動するにつれて、可動電極118は、固定電極116に対して接近及び離反する。本実施形態においては、ツール座標系CTは、その原点が固定電極116上(例えば、上面の中心)に位置し、ツール座標系CTのz軸が軸線O3(又は光軸O)と一致する(又は平行となる)ように、設定されている。
ツール26でワークWに対して作業を行うとき、例えば、プロセッサ18は、ツール26を、上述の目標位置Pn(n=1~5)に順に配置させる。ツール26が目標位置P5に配置されたときに、ワークW上の作業箇所は、固定電極116と可動電極118との間に配置され、軸線O3は、ワークWの表面と略直交するとともに作業箇所を通過するように配置される。
ツール26が目標位置P5に配置されたとき、プロセッサ18は、可動電極118を固定電極へ向かって移動させて、ワークWの作業箇所を固定電極116と可動電極118との間で挟持して固定電極116及び可動電極118を通電させる。これにより、ワークWの作業箇所をスポット溶接する。
一方、光学装置16は、可動電極118に設けられている。光学装置16は、ツール26に対して所定の位置関係となるように配置される。具体的には、光学装置16は、その光軸Oが軸線O3と一致する(又は、平行となる)ように、ツール26に対して配置されている。
すなわち、光学装置16は、撮像座標系CIのx-y平面が、軸線O3(又は、ツール座標系CTのz軸)と直交するように、ツール26に対して配置されている。なお、光学装置16は、可動電極118に限らず、ノズル110の如何なる位置(例えば、固定電極116)に設けられてもよい。
図22に示すツール26は、ロボットハンドである。具体的には、ツール26は、手首部36に連結されたハンドベース120と、該ハンドベース120に開閉可能に設けられた複数の指部122とを有する。ツール26は、指部122を開閉させることで、部品(例えば、自動車用の円筒状シリンダ)を把持したり、解放したりできる。本実施形態においては、ツール座標系CTは、その原点が指部122の間の位置(把持位置)に配置され、ツール座標系CTのz軸が指部122の開閉方向と直交するように、設定されている。
ツール26でワークWに対して作業を行うとき、例えば、プロセッサ18は、ツール26で部品を把持した後、該ツール26を、上述の目標位置Pn(n=1~5)に順に配置させる。ツール26が目標位置P5に配置されたとき、ツール26に把持された部品は、ワークW上の作業箇所としての嵌合穴(図示せず)から、ツール座標系CTのz軸プラス方向へ離隔した位置に、位置決めされる。この状態から、プロセッサ18は、ツール26を、ツール座標系CTのz軸マイナス方向へ移動させて、ツール26で把持した部品を、ワークWの嵌合穴に嵌入させる。
光学装置16は、指部122に固定(例えば、指部122に把持)される。光学装置16は、ツール26に対して所定の位置関係となるように配置される。具体的には、光学装置16は、その光軸Oがツール座標系CTのz軸(又は、部品を嵌合穴へ嵌入する方向)と一致する(又は、平行となる)ように、ツール26に対して配置されている。なお、光学装置16は、指部122に限らず、ツール26の如何なる位置(例えば、ハンドベース120)に設けられてもよい。
なお、上述の実施形態においては、光学装置16(光学センサ40)が、ツール26に固定され、マニピュレータ24によって移動される場合について述べた。しかしながら、これに限らず、光学装置16(光学センサ40)は、移動機械14から離隔して配置されてもよい。このような形態について、図23を参照して説明する。
図23に示す機械システム130においては、光学装置16が、移動機械14から離隔した位置で、ワークWに対して固定されている。つまり、光学装置16は、マニピュレータ24によって移動されず、ワークWに対して静止して配置されている。ここで、光学装置16は、撮像座標系CIがマニピュレータ座標系CMに対して既知の位置関係となるように、移動機械14に対して所定の位置関係に配置される。
次に、図24を参照して、機械システム130の機能について説明する。上述の実施形態と同様に、プロセッサ18は、作業プログラムWPに従ってマニピュレータ24へ移動指令MCnを発信し、ツール26を目標位置P1、P2、P3、P4及びP5の順に配置させる。本実施形態においては、光学装置16は、ツール26が目標位置P3~P5の間にあるときに光学センサ40の撮像範囲に入るように、配置されている。
プロセッサ18は、ツール26を目標位置P3~P5へ移動させている間に光学センサ40を動作させて、ツール26を連続的に撮像する。例えば、プロセッサ18は、図8の形態と同様に、ツール26を目標位置P3、P4及びP5の各々に到達した時点τP3、τP4及びτP5でツール26を撮像する。
図25は、プロセッサ18がツール26を目標位置P3に配置したことを検知した時点τP3で光学センサ40がツール26を撮像した画像データ140を画像化した例を示す。図25に示す画像データ140には、ツール26が写っている。なお、実際上は、画像データ140に、マニピュレータ24のコンポーネント(上腕部34等)も写るが、理解の容易のために、画像データ140ではツール26のみを図示している。
プロセッサ18は、画像データ140を画像解析し、画像データ140に写るツール26の1つの視覚的特徴VF(例えば、ツール26の中心、エッジ、凹凸等)を抽出する。そして、プロセッサ18は、上述の実施形態と同様に、画像データ140における視覚的特徴VFの位置を示す情報として、視覚的特徴VFの撮像座標系CIの座標(x3,y3)を取得する。
図26に、プロセッサ18がツール26を目標位置P4に配置したことを検知した時点τP4で光学センサ40がツール26を撮像した画像データ142を画像化した例を示す。なお、図26においては、比較のために、図25に示す画像データ140に写る視覚的特徴VFの位置を、白点D3として図示している。
プロセッサ18は、画像データ142を画像解析し、画像データ140と共通の視覚的特徴VFを抽出する。図26に示すように、画像データ142に写る視覚的特徴VFの位置は、画像データ140に写る視覚的特徴VFの位置D3から、変位量E3だけ、撮像座標系CIにおいて変位している。プロセッサ18は、画像データ142における視覚的特徴VFの位置として、視覚的特徴VFの撮像座標系CIにおける座標(x4,y4)を取得する。
図27に、プロセッサ18がツール26を目標位置P5に配置したことを検知した時点τP5で光学センサ40がツール26を撮像した画像データ144を画像化した例を示す。なお、図27においては、比較のために、図25に示す画像データ140に写る視覚的特徴VFの位置を白点D3として図示し、図26に示す画像データ142に写る視覚的特徴VFの位置を白点D4として図示している。
プロセッサ18は、画像データ144を画像解析し、画像データ140及び142と共通の視覚的特徴VFを抽出する。図27に示すように、画像データ144に写る視覚的特徴VFの位置は、画像データ142に写る視覚的特徴VFの位置D4から、変位量E4だけ、撮像座標系CIにおいて変位している。プロセッサ18は、画像データ144における視覚的特徴VFの位置として、視覚的特徴VFの撮像座標系CIにおける座標(x5,y5)を取得する。
光学センサ40がツール26を撮像する動作と同期して、プロセッサ18は、距離センサ42を動作させて、光学センサ40とツール26との光軸Oの方向の距離Fを測定する。したがって、距離センサ42は、時点τP3、τP4及びτP5で、光学センサ40とツール26との距離FP3、FP4及びFP5を、それぞれ測定する。
そして、プロセッサ18は、画像データ140から取得した座標(x3,y3)と、画像データ142から取得した座標(x4,y4)との差を、撮像座標系CIにおける変位量E3(図26)として求める。上述したように、撮像座標系CIは、マニピュレータ座標系CMに対し、既知の位置関係に配置されている。
プロセッサ18は、軌跡取得部60として機能して、撮像座標系CIとマニピュレータ座標系CMとの位置関係と、撮像座標系CIにおける変位量E3と、距離FP3及びFP4とを用いて、時点τP3から時点τP4までのツール26のマニピュレータ座標系CMにおける移動軌跡K3(図8)を、演算により求める。
そして、プロセッサ18は、上述の実施形態と同様に、ずれ量取得部62として機能して、移動軌跡K3の基準軌跡A3からのずれ量δ4(図8)を取得する。同様に、プロセッサ18は、撮像座標系CIとマニピュレータ座標系CMとの位置関係と、画像データ142及び144から取得した撮像座標系CIにおける変位量E4(図27)と、距離FP4及びFP5とを用いて、時点τP4から時点τP5までのツール26のマニピュレータ座標系CMにおける移動軌跡K4を取得する。そして、プロセッサ18は、移動軌跡K4の基準軌跡A4からのずれ量δ5を取得する。
このように、本実施形態に係る装置70によれば、移動機械14から離隔して配置された光学センサ40によって、ツール26の視覚的特徴VFを連続して撮像し、撮像した画像データ140、142、144から、上述の実施形態と同様にずれ量δ4、δ5を取得することができる。
なお、図23に示す実施形態において、プロセッサ18は、図12に示す形態のように、ツール26を目標位置P3からP5まで移動させている間に、光学センサ40によってワークWを、周期的又はランダムなタイミングで撮像してもよい。この場合、プロセッサ18は、上述の移動軌跡Kα、Kβ及びKγの基準軌跡A3及びA4からのずれ量を取得できる。
次に、図28を参照して、他の実施形態に係る機械システム150について説明する。機械システム150においては、移動機械14は、ワークWを把持するためのツール26Aを有する一方、ワークWに作業をするためのツール26Bは、移動機械14から離隔して配置されている。
ツール26Aは、例えば、ロボットハンドであって、移動機械14の手首部36に連結されている。一方、ツール26Bは、例えば、レーザ加工ヘッドであって、移動機械14によって移動されず、マニピュレータ座標系CMに対して静止して配置されている。また、機械システム150においては、光学装置16は、ツール26A(又は、ワークW)に固定されている。
プロセッサ18は、作業プログラムWPに従ってマニピュレータ24へ移動指令MCnを発信し、ワークWを把持したツール26Aを、複数の目標位置Pnへ順に移動させる。そして、プロセッサ18は、ツール26Aを移動させている間に光学センサ40を動作させて、移動機械14の周囲の物体としてツール26Bを連続的に撮像する。
そして、プロセッサ18は、軌跡取得部60として機能して、図25~図27の形態と同様の方法を用いて、画像データにおけるツール26Bの視覚的特徴VFの位置に基づいて、ツール26Aの移動軌跡Kを取得する。そして、プロセッサ18は、ずれ量取得部62として機能して、移動軌跡Kの基準軌跡Aからのずれ量δを取得する。
次に、図29を参照して、さらに他の実施形態に係る機械システム160について説明する。機械システム160は、上述の機械システム150と、光学装置16の設置位置において、相違する。具体的には、機械システム160においては、光学装置16は、移動機械14から離隔した位置で、ツール26Bに対して固定されている。
プロセッサ18は、作業プログラムWPに従ってマニピュレータ24へ移動指令MCnを発信し、ワークWを把持したツール26Aを、複数の目標位置Pnへ順に移動させる。そして、プロセッサ18は、ツール26Aを移動させている間に光学センサ40を動作させて、マニピュレータ24によって移動されるワークWの表面上の視覚的特徴VFを連続的に撮像する。
そして、プロセッサ18は、軌跡取得部60として機能して、図5~図7の形態と同様の方法を用いて、画像データにおけるワークWの視覚的特徴VFの位置に基づいて、ツール26Aの移動軌跡Kを取得する。そして、プロセッサ18は、ずれ量取得部62として機能して、移動軌跡Kの基準軌跡Aからのずれ量δを取得する。
なお、光学センサ40の投光部40aは、所定の模様の光を出射してもよい。図30に、投光部40aが出射する光の一例を示す。図30に示す例では、投光部40aは、格子状の光を出射する。この構成によれば、光学センサ40は、撮像対称を撮像した画像データから、該撮像対称の視覚的特徴VFを抽出し易くなる。
また、光学センサ40は、投光部40aが出射した光の反射光を受光部40bで受光するものに限らず、一般的なカメラであってもよい。また、光学センサ40と距離センサ42とで、投光部40a及び受光部40bを共有することもできる。この場合、距離センサ42の距離演算部42cは、投光部40aが光を出射してから、受光部40bが該光の反射光を受光するまでの時間に基づいて、光学センサ40から撮像対象までの距離を測定する。
また、上述の実施形態から、距離センサ42を省略することもできる。例えば、上述の実施形態において、目標位置P3、P4及びP5の、マニピュレータ座標系CMのz軸の座標が同じに設定されている場合、目標位置P3~P5とワークWとの距離が一定となる。したがって、この場合、光学センサ40からワークWまでの距離Fを測定せずに、光学センサ40が撮像した画像データから、ツール26(又は26A)の移動軌跡Kを、マニピュレータ座標系CMのx-y平面と平行な平面内での2次元の軌跡として、求めることができる。
また、上述の実施形態においては、軌跡取得部60、ずれ量取得部62、位置補正部64、判定部92、警告生成部94、位置データ取得部102、参照軌跡取得部104、第2の判定部106、及び第2の警告生成部108の機能が、制御装置12に実装され、プロセッサ18が、これら機能を実行する場合について説明した。
しかしながら、これに限らず、軌跡取得部60、ずれ量取得部62、位置補正部64、判定部92、警告生成部94、位置データ取得部102、参照軌跡取得部104、第2の判定部106、及び第2の警告生成部108の少なくとも1つは、制御装置12とは別に設けられてもよい。このような実施形態を図31に示す。
図31に示す機械システム170は、制御装置12、移動機械14、及び装置172を備える。装置172は、ツール26の移動軌跡Kの基準Aからのずれを取得するものであって、光学センサ40、軌跡取得部60、及びずれ量取得部62を備える。軌跡取得部60及びずれ量取得部62は、制御装置12とは別に設けられている。軌跡取得部60及びずれ量取得部62は、プロセッサ及び記憶部を有する1つのコンピュータに実装されてもよいし、それぞれが別々のコンピュータに実装されてもよい。
なお、上述の実施形態では、ツール26が目標位置P3~P5へ移動している間、光学センサ40は、移動機械14の周囲の物体としてワークWを撮像していた。しかしながら、これに限らず、光学センサ40は、移動機械14の周囲に在る如何なる物体を撮像してもよい。このような形態について、図32を参照して説明する。
図32に示す形態では、ワークWに物体Qが設置されている。物体Qは、マニピュレータ座標系CMのx-z平面と略平行となるように移動機械14から離隔して配置され、ワークWに対して固定されている。一方、光学装置16はツール26に対して、その光軸Oがツール座標系CTのy軸と平行となる位置関係に、配置されている。
この実施形態においては、プロセッサ18がツール26を目標位置P3、P4及びP5へ移動させている間に、光学センサ40は、物体Qを連続的に撮像する。そして、プロセッサ18は、撮像した画像データを画像解析し、物体Qの視覚的特徴VFを抽出する。そして、プロセッサ18は、軌跡取得部60として機能して、図5~図7の形態と同様の方法を用いて、画像データにおける物体Qの視覚的特徴VFの位置に基づいて、ツール26の移動軌跡Knを取得する。
そして、プロセッサ18は、ずれ量取得部62として機能して、移動軌跡Knの基準軌跡Anからのずれ量δnを取得することができる。なお、物体Qにマーク(塗装、刻印、シール等)を設けて、光学センサ40は、該マークを視覚的特徴VFとして撮像してもよい。同様に、光学センサ40でワークWを撮像する上述の実施形態において、ワークWの表面にマークを設けて、光学センサ40は、ワークW上のマークを視覚的特徴VFとして撮像してもよい。
なお、上述の実施形態においては、軌跡取得部60は、ツール26の移動軌跡Kを取得する場合について述べた。しかしながら、これに限らず、軌跡取得部60は、マニピュレータ24の如何なる可動コンポーネントの移動軌跡を取得するように構成されてもよい。この場合、ずれ量取得部62は、該可動コンポーネントの移動軌跡の基準軌跡からのずれ量を取得する。
また、上述の実施形態では、5つの目標位置P1~P5が設定されている場合について述べたが、目標位置Pnの数は、如何なる数であってもよい。また、これら目標位置Pnの各々が教示点であってもよいし、又は、教示点及び補間点として設定されてもよい。また、2つの教示点の間に、如何なる数の補間点が設定されてもよい。
また、マニピュレータ24は、垂直多関節型ロボットに限らず、水平多関節型又はパラレルリンク型等、如何なるタイプのロボットであってもよい。又は、マニピュレータ24は、x軸方向のボールねじ機構、y軸方向のボールねじ機構、及びz軸方向のボールねじ機構を有するワークテーブル装置であってもよい。
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。