以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図1及び図2を参照して、一実施形態に係るシステム10について説明する。システム10は、ロボット12、作業機器14、及び制御装置16を備える。
本実施形態においては、ロボット12は、垂直多関節ロボット(例えば、6軸ロボット)であって、ロボットベース18、旋回胴20、ロボットアーム22、手首部24、及びエンドエフェクタ26を有する。ロボットベース18は、支持機構28に固定されている。支持機構28は、例えば、作業セルの床に固定される土台であってもよいし、作業セル内を自走可能な走行装置であってもよいし、又は、オペレータによって手動で移動される手押し台車であってもよい。
旋回胴20は、鉛直軸周りに旋回可能となるようにロボットベース18に設けられている。ロボットアーム22は、水平軸周りに回動可能となるように旋回胴20に設けられた下腕部30と、該下腕部30の先端部に回動可能に設けられた上腕部32とを有する。手首部24は、上腕部32の先端部に回動可能に設けられ、エンドエフェクタ26を手首軸A1周りに回転させる。
図3に示すように、本実施形態においては、エンドエフェクタ26は、ワークWP1を把持可能なロボットハンドである。具体的には、エンドエフェクタ26は、ベース部34と、該ベース部34に開閉可能に設けられた複数の爪部36と、該爪部36を駆動する爪駆動部(図示せず)を有する。
ベース部34は、手首部24の先端部(いわゆる、手首フランジ)に着脱可能に取り付けられる。爪部36は、互いに接近及び離反する方向へ移動可能となるようにベース部34に設けられている。各々の爪部36は、その内側に把持面36a及び係合面36bを有する。把持面36aは、略平面である。係合面36bは、把持面36aに略直交する平面であって、係合面36bの頂端縁から内方へ延出している。爪駆動部は、例えばエアシリンダ又はモータであって、制御装置16からの指令に応じて爪部36を開閉させ、これにより、エンドエフェクタ26は、ワークWP1を把持したり、解放したりできる。
本実施形態においては、ワークWP1は、略直方体状の部材であって、底面B1、頂面B2、側面B3、B4及びB5を有している。底面B1及び頂面B2は、互いに略平行な平面である。側面B3及びB4は、互いに略平行に対向配置された平面であって、底面B1及び頂面B2と直交している。側面B5は、底面B1、頂面B2、側面B3及びB4と直交する平面である。
エンドエフェクタ26は、ワークWP1を所定の把持位置で把持する。エンドエフェクタ26がワークWP1を把持したとき、一対の爪部36の把持面36aは、ワークWP1の側面B3及びB4における所定位置で該側面B3及びB4とそれぞれ当接する一方、一対の爪部36の係合面36bは、ワークWP1の頂面B2における所定位置で該頂面B2とそれぞれ係合する。
エンドエフェクタ26が所定の把持位置で把持したワークWP1は、該エンドエフェクタ26と一体のもの、換言すれば、該エンドエフェクタ26の一部と見做すことができる。本実施形態においては、手首部24の先端部(手首フランジ)、エンドエフェクタ26、及び該エンドエフェクタ26が所定の把持位置で把持するワークWP1を、ロボット12の手先部40として言及する。
ロボット12の構成要素(ロボットベース18、旋回胴20、下腕部30、上腕部32、手首部24)には、複数のサーボモータ38(図2)がそれぞれ内蔵されている。各々のサーボモータ38は、制御装置16からの指令に応じて、ロボット12の各可動要素(旋回胴20、下腕部30、上腕部32、手首部24)を駆動軸周りに回動させる。
作業機器14は、ロボット12の外部に設置されている。作業機器14は、例えば、ワーク保持台、ワークテーブル装置、又は工作機械である。ワーク保持台は、作業セルに固定され、作業時にワークが固定される。ワークテーブル装置は、ワークが固定されるワークテーブルと、該ワークテーブルを移動させる移動機構(ボールねじ機構等)とを有する。
工作機械は、旋盤、フライス盤、又は、複数種類の加工を実行可能なマシニングセンタ等であって、ワークを固定するワーク保持機構(治具、ワークテーブル、チャック機構等)と、該ワーク保持機構に固定されたワークを加工する工具と、ワーク保持機構と工具とを相対的に移動させる移動機構(ボールねじ機構等)とを有する。
作業機器14の面42には、該面42から外方へ突出するように当接部44が固設されている。図4に示すように、当接部44は、第1の部分46、及び第2の部分48を有する。第1の部分46は、一方向へ直線状に延び、面42と略直交する内面46aを有する。一方、第2の部分48は、第1の部分46と直交するように該第1の部分46の一端から直線状に延出し、該第1の部分46の内面46a及び面42と略直交する内面48aを有する。
図2を参照して、制御装置16は、ロボット12の動作を制御する。具体的には、制御装置16は、プロセッサ50、メモリ52、及びI/Oインターフェース54を有するコンピュータである。プロセッサ50は、CPU又はGPU等を有し、バス56を介して、メモリ52及びI/Oインターフェース54と通信可能に接続されている。プロセッサ50は、メモリ52及びI/Oインターフェース54と通信しつつ、後述する各種機能を実現するための演算処理を行う。
メモリ52は、RAM又はROM等を有し、各種データを一時的又は恒久的に記憶する。I/Oインターフェース54は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ50からの指令の下、外部機器との間でデータを有線又は無線で通信する。上述のサーボモータ38は、I/Oインターフェース54に有線又は無線で通信可能に接続されている。
図1に示すように、ロボット12には、ロボット座標系C1が設定されている。ロボット座標系C1は、ロボット12の各可動要素の動作を自動制御するための座標系であって、ロボットベース18(又は、支持機構28)に対して固定して設定される。本実施形態においては、ロボット座標系C1は、その原点がロボットベース18の中心に配置され、そのz軸が旋回胴20の旋回軸に一致するように、ロボット12に対して設定されている。
一方、図3に示すように、手先部40に対して、メカニカルインターフェース(MIF)座標系C2が設定される。MIF座標系C2は、ロボット座標系C1における手先部40(具体的には、エンドエフェクタ26)の位置及び姿勢を規定する座標系である。本実施形態においては、MIF座標系C2は、その原点が手首部24の先端部の中心に配置され、そのz軸が手首軸A1に一致するように、手先部40に対して設定されている。
手先部40(エンドエフェクタ26)を移動させるとき、プロセッサ50は、ロボット座標系C1にMIF座標系C2を設定し、設定したMIF座標系C2によって表される位置及び姿勢に手先部40を位置決めするように、ロボット12の各サーボモータ38を制御する。こうして、プロセッサ50は、ロボット座標系C1における任意の位置及び姿勢に手先部40を位置決めできる。よって、ロボット座標系C1に対するMIF座標系C2の位置関係(すなわち、原点位置及び各軸の方向)は、既知である。
一方、エンドエフェクタ26が所定の把持位置で把持するワークWP1に対して、ユーザ座標系C3が設定される。本実施形態においては、ユーザ座標系C3は、その原点が、エンドエフェクタ26が把持するワークWP1の底面B1と、側面B4及びB5とが形成する頂点Fに配置され、そのx-z平面が、エンドエフェクタ26が把持するワークWP1の側面B5と平行であり、且つ、そのy-z平面が、エンドエフェクタ26が把持するワークWP1の側面B3及びB4(又は、エンドエフェクタ26の把持面36a)と平行となるように、ワークWP1に対して設定されている。
ここで、上述したように、エンドエフェクタ26が所定の把持位置で把持したワークWP1は、該エンドエフェクタ26と一体のもの(つまり、エンドエフェクタ26の一部)と見做すことができるので、ワークWP1の形状と該把持位置が既知であれば、エンドエフェクタ26が該把持位置で把持するワークWP1に設定されたユーザ座標系C3の、MIF座標系C2に対する位置関係(原点位置及び各軸の方向)は、既知となる。
したがって、ロボット座標系C1に対するユーザ座標系C3の位置関係は、MIF座標系C2を介して、既知となる。より具体的には、ロボット座標系C1に対するユーザ座標系C3の位置関係は、ロボット座標系C1の座標D(X,Y,Z,W,P,R)として表すことができる。
ここで、座標D(X,Y,Z)は、ユーザ座標系C3の原点の、ロボット座標系C1における座標を表す。一方、座標D(W,P,R)は、ユーザ座標系C3のx軸、y軸及びz軸の、ロボット座標系C1のx軸、y軸及びz軸に対する傾き(いわゆる、ヨー、ピッチ、ロール)を表している。ロボット座標系C1からユーザ座標系C3への座標変換行列M13は、既知の同次変換行列となり、該座標変換行列M13の各パラメータは、座標D(X,Y,Z,W,P,R)から定められる。
図1に示すように、作業機器14には、作業機器座標系C4が設定されている。作業機器座標系C4は、作業機器14の各構成要素の位置及び姿勢を規定するものであって、該作業機器14の各構成要素は、作業機器座標系C4の座標として表される。本実施形態においては、作業機器座標系C4は、その原点が、作業機器14の底面の一端点に配置され、そのz軸方向が、作業機器14の高さ方向(例えば、鉛直方向)と平行となるように、作業機器14に対して固定して設定されている。
作業機器14の面42と当接部44とは、作業機器座標系C4の既知の位置に配置されている。本実施形態においては、作業機器14の面42が、作業機器座標系C4のx-y平面と平行であり、当接部44の内面46aが、作業機器座標系C4のx-z平面と平行であり、当接部44の内面48aが、作業機器座標系C4のy-z平面と平行となるように、作業機器座標系C4の既知の位置に配置されている。よって、面42と、内面46a及び内面48aとで形成される頂点Gは、作業機器座標系C4の既知の座標として表される。
ここで、本実施形態においては、ロボット座標系C1(つまり、ロボット12)と作業機器座標系C4(つまり、作業機器14)との位置関係が未知となっている。プロセッサ50は、ロボット座標系C1と作業機器座標系C4との位置関係を取得する装置60として機能する。以下、装置60の機能について、説明する。
まず、ロボット12は、エンドエフェクタ26が所定の把持位置で把持しているワークWP1を、図1、図5及び図6に示すように、当接部44に当接させる。このとき、ワークWP1の底面B1は、作業機器14の面42と面接触し、ワークWP1の側面B5は、当接部44の内面46aと面接触し、且つ、ワークWP1の側面B4は、当接部44の内面48aと面接触する。こうして、手先部40は、作業機器14に対して所定の位置PS1及び姿勢OR1に静止して配置される。
このときの作業機器座標系C4に対するユーザ座標系C3の位置関係は、既知となる。具体的には、ユーザ座標系C3の原点は、上述の頂点Gの位置に一致し、ユーザ座標系C3のx-y平面は、作業機器14の面42と平行であり、ユーザ座標系C3のx-z平面は、当接部44の内面46aと平行であり、且つ、ユーザ座標系C3のy-z平面は、当接部44の内面48aと平行であると見做すことができる。
したがって、このときの作業機器座標系C4におけるユーザ座標系C3の座標は、既知の座標E1(x1,y1,z1,w1,p1,r1)として表すことができる。座標E1(x1,y1,z1)は、ユーザ座標系C3の原点(つまり、頂点G)の作業機器座標系C4における座標を表す。一方、座標E1(w1,p1,r1)は、ユーザ座標系C3のx軸、y軸及びz軸の、作業機器座標系C4のx軸、y軸及びz軸に対する傾き(いわゆる、ヨー、ピッチ、ロール)を表している。
また、作業機器座標系C4からユーザ座標系C3への座標変換行列M43_1は、既知の同次変換行列となり、該座標変換行列M43_1の各パラメータは、座標E1(x1,y1,z1,w1,p1,r1)から定められる。こうして、作業機器座標系C4とユーザ座標系C3との位置関係を既知とすることができる。
このように、手先部40(具体的にはワークWP1)を当接部44に当接させることで、該手先部40が作業機器14に対して所定の位置PS1及び姿勢OR1に静止して配置され、このときの作業機器座標系C4に対する手先部40の位置PS1及び姿勢OR1が、ユーザ座標系C3の座標E1(x1,y1,z1,w1,p1,r1)として表される。よって、当接部44は、手先部40の位置PS1及び姿勢OR1を作業機器座標系C4に表すための要素として機能する。
プロセッサ50は、手先部40を位置PS1及び姿勢OR1に配置したときの、作業機器座標系C4に対する該位置PS1及び姿勢OR1を示す第2位置データβ1を取得する。一例として、プロセッサ50は、第2位置データβ1として、上述の座標E1(x1,y1,z1,w1,p1,r1)、又は座標変換行列M43_1を取得する。
他の例として、プロセッサ50は、第2位置データβ1として、手先部40を位置PS1及び姿勢OR1に配置したときのユーザ座標系C3から作業機器座標系C4への座標変換行列M34_1を取得してもよい。この座標変換行列M34_1は、上述の座標変換行列M43_1の逆変換行列:inv(M43_1)として求められる。
さらに他の例として、プロセッサ50は、第2位置データβ1として、手先部40を位置PS1及び姿勢OR1に配置したときのユーザ座標系C3における作業機器座標系C4の座標E1’(x1’,y1’,z1’,w1’,p1’,r1’)を取得してもよい。座標E1’は、座標変換行列M34_1(=inv(M43_1))から定めることができる。
このように、本実施形態においては、座標E1(x1,y1,z1,w1,p1,r1)、座標E1’(x1’,y1’,z1’,w1’,p1’,r1’)、座標変換行列M43_1、及び座標変換行列M34_1は、第2位置データβ1を構成し、プロセッサ50は、該第2位置データβ1を取得する位置データ取得部62(図2)として機能する。
一方、プロセッサ50は、手先部40を位置PS1及び姿勢OR1に配置したときの、ロボット座標系C1に対する該位置PS1及び姿勢OR1を示す第1位置データα1を取得する。ここで、手先部40が位置PS1及び姿勢OR1に配置されたとき、ロボット座標系C1におけるユーザ座標系C3の座標は、既知の座標D1(X1,Y1,Z1,W1,P1,R1)として表され、このときのロボット座標系C1からユーザ座標系C3への座標変換行列M13_1の各パラメータは、座標D1(X1,Y1,Z1,W1,P1,R1)から定められる。
一例として、プロセッサ50は、第1位置データα1として、上述の座標D1(X1,Y1,Z1,W1,P1,R1)、又は座標変換行列M13_1を取得する。他の例として、プロセッサ50は、第1位置データα1として、手先部40を位置PS1及び姿勢OR1に配置したときのユーザ座標系C3からロボット座標系C1への座標変換行列M31_1を取得してもよい。この座標変換行列M31_1は、上述の座標変換行列M13_1の逆変換行列:inv(M13_1)として求められる。
さらに他の例として、プロセッサ50は、第1位置データα1として、手先部40を位置PS1及び姿勢OR1に配置したときのユーザ座標系C3におけるロボット座標系C1の座標D1’(X1’,Y1’,Z1’,W1’,P1’,R1’)を取得してもよい。座標D1’は、座標変換行列M31_1(=inv(M13_1))から定めることができる。
このように、本実施形態においては、座標D1(X1,Y1,Z1,W1,P1,R1)、座標D1’(X1’,Y1’,Z1’,W1’,P1’,R1’)、座標変換行列M13_1、及び座標変換行列M31_1は、第1位置データα1を構成し、プロセッサ50は、位置データ取得部62(図2)として機能して、第1位置データα1を取得する。
次いで、プロセッサ50は、取得した第1位置データα1及び第2位置データβ1を用いて、ロボット座標系C1と作業機器座標系C4との位置関係を示す第3位置データγ1を取得する。一例として、プロセッサ50は、第3位置データγ1として、ロボット座標系C1から作業機器座標系C4への座標変換行列M14_1を取得する。具体的には、プロセッサ50は、第1位置データα1である座標変換行列M13_1と、第2位置データβ1である座標変換行列M34_1(又はM43_1)とを用いて、M14_1=M13_1・M34_1=M13_1・inv(M43_1)なる式から、座標変換行列M14_1を演算により求めることができる。
他の例として、プロセッサ50は、第3位置データγ1として、ロボット座標系C1における作業機器座標系C4の座標D2(X2,Y2,Z2,W2,P2,R2)を取得してもよい。この座標D2(X2,Y2,Z2,W2,P2,R2)は、既知となった座標変換行列M14_1の各パラメータから定めることができる。
さらに他の例として、プロセッサ50は、第3位置データγ1として、作業機器座標系C4からロボット座標系C1への座標変換行列M41_1を取得してもよい。この座標変換行列M41_1は、上述の座標変換行列M14_1の逆変換行列:inv(M14_1)として求めることができる。又は、座標変換行列M41_1は、第1位置データα1である座標変換行列M31_1(又はM13_1)と、第2位置データβ1である座標変換行列M43_1とを用いて、M41_1=M43_1・M31_1=M43_1・inv(M13_1)なる式から求めることもできる。
さらに他の例として、プロセッサ50は、第3位置データγ1として、作業機器座標系C4におけるロボット座標系C1の座標E2(x2,y2,z2,w2,p2,r2)を取得してもよい。座標E2は、上述の座標変換行列M41_1の各パラメータから定めることができる。
このように、本実施形態においては、プロセッサ50は、第1位置データα1及び第2位置データβ1を用いて、第3位置データγ1(座標変換行列M14_1、座標変換行列M41_1、座標D2、又は座標E2)を取得する位置関係取得部64(図2)として機能する。
以上のように、プロセッサ50は、位置データ取得部62及び位置関係取得部64を具備する装置60として機能して、ロボット座標系C1と作業機器座標系C4との位置関係を示す第3位置データγ1を、第1位置データα1及び第2位置データβ1から取得している。この構成によれば、作業機器14に設定した複数の点に手先部40でタッチアップするプロセスを実行することなく、手先部40を1つの位置PS1及び姿勢OR1に配置することにより、第3位置データγ1を取得できる。これにより、ロボット座標系C1と作業機器座標系C4との位置関係を求めるプロセスを、大幅に簡易化することができる。
また、本実施形態においては、手先部40の位置PS1及び姿勢OR1を作業機器座標系C4に表すための当接部44に該手先部40を当接させることで、該手先部40を位置PS1及び姿勢OR1に配置している。この構成によれば、手先部40を当接部44に当接させるだけで、作業機器座標系C4に対する手先部40の位置PS1及び姿勢OR1(具体的には、ユーザ座標系C3の位置関係)を既知とできるので、第2位置データβ1を、容易且つ高精度に取得できる。
また、本実施形態においては、装置60は、当接部44にロボット12(具体的には、手先部40)を当接させたときの、作業機器14に対するロボット12の位置及び姿勢(具体的には、第2位置データβ1)に基づいて、ロボット12と作業機器14との位置関係(具体的には、第3位置データγ1)を取得するように構成されている。この構成によれば、ロボット12を当接部44に当接させるだけで、ロボット12と作業機器14との位置関係(第3位置データγ1)を取得できる。
なお、当接部44は、図4に示す形態に限らず、例えば、作業機器14に形成された孔、凹部、凸部、又は、ワークWP1を固定するワーク保持機構(チャック機構、治具)等、手先部40(例えば、ワークWP1)を当接させることで該手先部40を静止して配置して作業機器座標系C4に対する該手先部40の位置PS1及び姿勢OR1(ユーザ座標系C3の位置関係)を既知とできるものであれば、如何なる構造のものであってもよい。
次に、図7及び図8を参照して、他の実施形態に係るシステム70について説明する。システム70は、上述のシステム10と、教示装置72をさらに備える点で、相違する。教示装置72は、いわゆる教示ペンダント、又はタブレット式端末装置等のコンピュータであって、制御装置16のI/Oインターフェース54に有線又は無線で通信可能に接続されている。
教示装置72は、プロセッサ(図示せず)、メモリ(図示せず)、表示装置74、及び入力装置76を有する。表示装置74は、液晶ディスプレイ又は有機ELディスプレイ等を有し、各種データを表示する。入力装置76は、押しボタン又はタッチパネル等を有し、オペレータからの入力操作を受け付ける。
システム70においては、オペレータは、教示装置72を操作することによって、ロボット12の手先部40を位置PS1及び姿勢OR1に位置決めする動作をロボット12に教示する。具体的には、オペレータは、表示装置74に表示されるデータを視認しつつ入力装置76を操作することで、ロボット12の手先部40をロボット座標系C1にてジョグ動作させるための入力データを入力装置76に入力する。
教示装置72は、入力装置76への入力データに応じて、ロボット12をジョグ動作させるための教示指令TCを生成し、制御装置16のI/Oインターフェース54に送信する。制御装置16のプロセッサ50は、I/Oインターフェース54を通して教示指令TCを受け付ける。
このように、本実施形態においては、プロセッサ50は、教示指令TCを受け付ける教示指令受付部78(図8)として機能する。プロセッサ50は、受け付けた教示指令TCに応じて、ロボット12の各サーボモータ38への指令を生成し、これによりロボット12の手先部40をジョグ動作させる。
オペレータは、エンドエフェクタ26が所定の把持位置で把持しているワークWP1を当接部44に当接させるまで、教示装置72の入力装置76を操作し、プロセッサ50は、教示装置72からの教示指令TCに応じてロボット12の手先部40をジョグ動作させる。
その結果、ワークWP1の底面B1が作業機器14の面42と面接触し、ワークWP1の側面B5が当接部44の内面46aと面接触し、且つ、ワークWP1の側面B4が当接部44の内面48aと面接触するように、手先部40(ワークWP1)が当接部44に当接して位置PS1及び姿勢OR1に位置決めされる。このように、プロセッサ50は、手先部40(具体的には、ワークWP1)を当接部44に当接させることで該手先部40を位置PS1及び姿勢OR1に位置決めするように、ロボット12を動作させるロボット制御部79(図8)として機能する。
以上のように、本実施形態においては、装置60は、位置データ取得部62、位置関係取得部64、教示指令受付部78、及びロボット制御部79を備え、プロセッサ50は、装置60の位置データ取得部62、位置関係取得部64、教示指令受付部78、及びロボット制御部79として機能する。
本実施形態によれば、オペレータは、実際の手先部40及び当接部44の配置を確認しつつ、教示装置72を操作してロボット12を教示することで、手先部40を位置PS1及び姿勢OR1に位置決めすることができる。これにより、手先部40を位置PS1及び姿勢OR1に位置決めする動作に要する時間を短縮することができる。
次に、図9を参照して、さらに他の実施形態に係るシステム80について説明する。システム80は、上述のシステム70と、教示装置72の代わりに力センサ82を備える点で、相違する。一例として、力センサ82は、ロボット12のサーボモータ38にそれぞれ設けられた複数のトルクセンサを有する。この場合、力センサ82は、各サーボモータ38の駆動軸に掛かるトルクTを検出データDFとして検出する。
他の例として、力センサ82は、ロボット12のロボットベース18、旋回胴20、下腕部30、上腕部32、又は手首部24に設けられ、複数の歪ゲージを有する6軸力覚センサを有する。この場合、力センサ82は、ロボット12に作用する力Fを検出データDFとして検出する。なお、力センサ82は、セカンダリエンコーダによるトルク検出方式の力センサ、又は、静電容量式の力覚センサ等、如何なるタイプの力センサであってもよい。
プロセッサ50は、力センサ82の検出データDF(すなわち、トルクT又は力F)に基づいて、ロボット12に加えられた外力EFの大きさ及び方向と、該外力EFが加えられたロボット12の部位(旋回胴20、下腕部30、上腕部32、手首部24、手先部40)とを特定する。
そして、プロセッサ50は、ロボット12の任意の部位に加えられた外力EFに応じて、該ロボット12の該部位を外力EFの方向へ移動させる。この機能を利用して、オペレータは、ロボット12の手先部40を当接部44に当接させて位置PS1及び姿勢OR1に位置決めする動作をロボット12に教示する(いわゆる、ダイレクトティーチ)。
具体的には、オペレータは、制御装置16によるロボット12の動作モードを教示モードへ切り換えた後、ロボット12の任意の部位(例えば、手先部40)に、教示用の外力EFTを加える。そうすると、力センサ82は、外力EFTを検出データDFTとして検出し、プロセッサ50に供給する。
プロセッサ50は、教示モードへの切り換え後、力センサ82が検出した検出データDFTに基づいて、外力EFTが加えられたロボット12の部位(手先部40)を特定するとともに、外力EFTの大きさ及び方向を特定する。そして、プロセッサ50は、外力EFTが加えられたと特定したロボット12の部位(手先部40)を、特定した外力EFTの方向へジョグ動作させる。
こうして、オペレータは、ロボット12の任意の部位に加えた外力EFTに従ってロボット12をジョグ動作させ、手先部40を当接部44に当接させて位置PS1及び姿勢OR1に位置決めする動作をロボット12に教示する。すなわち、本実施形態においては、プロセッサ50は、外力EFTが加えられたときに力センサ82が検出した検出データDFTを教示指令として、該検出データDFTに応じて、ロボット12をジョグ動作させている。
したがって、検出データDFTは、教示指令(具体的には、外力EFTに応じて手先部40を移動させるためのダイレクトティーチ教示指令)を構成し、プロセッサ50は、該教示指令(検出データDFT)を受け付ける教示指令受付部78、及び、ロボット12を動作させるロボット制御部79として機能する。なお、教示モードにおいて、プロセッサ50は、検出データDFTから特定した外力EFTの大きさに応じて、ロボット12の部位をジョグ動作する移動距離又は移動速度を変更(例えば、外力EFTの大きさに比例して増加)させてもよい。
なお、上述のダイレクトティーチは、力センサ82を用いずに、例えば操作部(ジョイスティック等)を操作することによってサーボモータ38に対する動作指令を与える教示を含む。この場合、サーボモータ38への動作指令は、教示指令(ダイレクトティーチ教示指令)を構成する。又は、オペレータは、ロボット12の各軸にトルクが掛からない状態に該ロボット12を保持しているときに、ロボット12の部位(例えば、下腕部30、上腕部32、又は手先部40)に外力EFTを加えて、該EFTによって該部位を手動で移動させることでダイレクトティーチを実行することもできる。
次に、図10及び図11を参照して、さらに他の実施形態に係るシステム90について説明する。システム90は、上述のシステム10と、接触検出センサ92をさらに備える点で相違する。接触検出センサ92は、当接部44に対して手先部40が接触したことを検出する。
具体的には、接触検出センサ92は、第1のセンサ素子94、第2のセンサ素子96、及び第3のセンサ素子98を有する。第1のセンサ素子94、第2のセンサ素子96、及び第3のセンサ素子98の各々は、例えば、近接センサ(静電容量式近接センサ、近接スイッチ等)、測距センサ、圧力センサ、圧電素子、又は歪ゲージ等であって、物体の近接又は接触を検知する。第1のセンサ素子94は、作業機器14の面42に設けられている。また、第2のセンサ素子96は、当接部44の内面46aに設けられている一方、第3のセンサ素子98は、当接部44の内面48aに設けられている。
図6に示すように手先部40が当接部44に当接して所定の位置PS1及び姿勢OR1に配置されたとき、第1のセンサ素子94の検出データDAは、ワークWP1の底面B1と面42との面接触を示す値DA0となり、第2のセンサ素子96の検出データDBは、ワークWP1の側面B5と当接部44の内面46aとの面接触を示す値DB0となり、第3のセンサ素子98の検出データDCは、ワークWP1の側面B4と当接部44の内面48aとの面接触を示す値DC0となる。
換言すれば、第1のセンサ素子94が検出データDA0を検出し、第2のセンサ素子96が検出データDB0を検出し、且つ、第3のセンサ素子98が検出データDC0を検出した場合、手先部40が当接部44に当接して位置PS1及び姿勢OR1に配置されていると見做すことができる。
次に、図12を参照して、システム90の機能について説明する。図12に示すフローは、プロセッサ50が、オペレータ、上位コントローラ、又はコンピュータプログラムから、位置関係取得指令を受け付けたときに、開始される。図12に示すフローが開始されたとき、ロボット12の手先部40は、ワークWP1を所定の把持位置で把持している。
ステップS1において、プロセッサ50は、ロボット制御部79として機能してロボット12を動作させ、手先部40を、予め定められた初期位置PS0及び初期姿勢OR0に配置させる。例えば、初期位置PS0は、手先部40のワークWP1を当接部44の近傍に配置する位置として、オペレータによって定められ得る。
また、初期姿勢OR0は、ユーザ座標系C3のz軸方向が、作業機器14の面42と略直交すると推定され、ユーザ座標系C3のy軸方向が、当接部44の内面46aと略直交すると推定され、且つ、ユーザ座標系C3のx軸方向が、当接部44の内面48aと略直交すると推定される姿勢として、ロボット12及び作業機器14の設計寸法(CADデータ)等からオペレータによって定められ得る。なお、この初期位置PS0及び初期姿勢OR0は、ワークWP1を当接部44の近傍に配置する動作をロボット12に教示することによって、定められてもよい。
ステップS2において、プロセッサ50は、ロボット12を動作させて、手先部40を第1の軸に沿って移動させる。例えば、プロセッサ50は、手先部40を、初期位置PS0及び初期姿勢OR0から、ユーザ座標系C3のz軸方向(つまり、面42と直交すると推定される方向)へ移動させる。
ステップS3において、プロセッサ50は、この時点で第1のセンサ素子94が検出した検出データDAが、予め定めた許容範囲[DAth1,DAth2]に収まっているか否かを判定する。この許容範囲[DAth1,DAth2]を画定する閾値DAth1及びDAth2は、上述の値DA0を基準として(例えば、値DA0を含むように)、オペレータによって予め定められ得る。
プロセッサ50は、検出データDAが許容範囲内(すなわち、DAth1≦DA≦DAth2)である場合はYESと判定し、ステップS4へ進む一方、検出データDAが許容範囲外(すなわち、DA<DAth1、又は、DA>DAth2)である場合はNOと判定し、ステップS2へ戻る。
こうして、プロセッサ50は、ステップS3でYESと判定するまで、ステップS2及びS3をループする。ステップS3でYESと判定したとき、ワークWP1の底面B1と面42とが面接触していると見做すことができる。なお、プロセッサ50は、ステップS2を実行する毎に、該ステップS2で手先部40を移動させる方向を、検出データDAを許容範囲に近づけることができる方向として、ユーザ座標系C3のz軸プラス方向及びz軸マイナス方向の中から決定してもよい。
例えば、第n回目のステップS3で用いた検出データDAnが、第n-1回目のステップS3で取得された検出データDAn-1と比べて、閾値DAth1よりも小さくなったか、又は閾値DAth2よりも大きくなった場合、第n+1回目に実行するステップS2で手先部40を移動させる方向を、第n回目に実行したステップS2で手先部40を移動させた方向から反転させてもよい。この構成によれば、検出データDAを、より迅速に許容範囲内に収めることができる。
なお、プロセッサ50は、ステップS2において、直近に取得された検出データDAに応じて手先部40の姿勢を変化させてもよい。例えば、プロセッサ50は、手先部40を、ユーザ座標系C3のx軸、y軸、又はz軸周りの方向へ回転させることで、該手先部40の姿勢を変化させることができる。
この場合において、プロセッサ50は、手先部40を移動させる方向を、検出データDAを許容範囲に近づけることができる方向(例えば、ワークWP1の底面B1を面42と平行とする方向)として、ユーザ座標系C3のx軸、y軸、又はz軸周りの方向の中から決定してもよい。
ステップS4において、プロセッサ50は、ロボット12を動作させて、手先部40を第2の軸に沿って移動させる。例えば、プロセッサ50は、手先部40を、ステップS3でYESと判定した時点での位置及び姿勢から、ユーザ座標系C3のy軸方向(つまり、内面46aと直交すると推定される方向)へ移動させる。
ステップS5において、プロセッサ50は、この時点で第2のセンサ素子96が検出した検出データDBが、予め定めた許容範囲[DBth1,DBth2]に収まっているか否かを判定する。この許容範囲[DBth1,DBth2]を画定する閾値DBth1及びDBth2は、上述の値DB0を基準として(例えば、値DB0を含むように)、オペレータによって予め定められ得る。
プロセッサ50は、検出データDBが許容範囲内(すなわち、DBth1≦DB≦DBth2)である場合はYESと判定し、ステップS6へ進む一方、検出データDBが許容範囲外(すなわち、DB<DBth1、又は、DB>DBth2)である場合はNOと判定し、ステップS4へ戻る。
こうして、プロセッサ50は、ステップS5でYESと判定するまで、ステップS4及びS5をループする。ステップS5でYESと判定したとき、ワークWP1の側面B5と内面46aとが面接触していると見做すことができる。なお、プロセッサ50は、ステップS4を実行する毎に、該ステップS4で手先部40を移動させる方向を、検出データDBを許容範囲に近づけることができる方向として、ユーザ座標系C3のy軸プラス方向及びy軸マイナス方向の中から決定してもよい。
また、プロセッサ50は、ステップS4において、直近に取得された検出データDBに応じて手先部40の姿勢を変化させてもよい。この場合において、プロセッサ50は、手先部40を移動させる方向を、検出データDBを許容範囲に近づけることができる方向(例えば、ワークWP1の側面B5を、当接部44の内面46aと平行にする方向)として、ユーザ座標系C3のx軸、y軸、又はz軸周りの方向の中から決定してもよい。
ステップS6において、プロセッサ50は、ロボット12を動作させて、手先部40を第3の軸に沿って移動させる。例えば、プロセッサ50は、手先部40を、ステップS5でYESと判定した時点での位置及び姿勢から、ユーザ座標系C3のx軸方向(つまり、内面48aと直交すると推定される方向)へ移動させる。
ステップS7において、プロセッサ50は、この時点で第3のセンサ素子98が検出した検出データDCが、予め定めた許容範囲[DCth1,DCth2]に収まっているか否かを判定する。この許容範囲[DCth1,DCth2]を画定する閾値DCth1及びDCth2は、上述の値DC0を基準として(例えば、値DC0を含むように)、オペレータによって予め定められ得る。
プロセッサ50は、検出データDCが許容範囲内(すなわち、DCth1≦DC≦DCth2)である場合はYESと判定し、ステップS8へ進む一方、検出データDBが許容範囲外(すなわち、DC<DCth1、又は、DC>DCth2)である場合はNOと判定し、ステップS6へ戻る。こうして、プロセッサ50は、ステップS7でYESと判定するまで、ステップS6及びS7をループする。
ステップS7でYESと判定したとき、ワークWP1の側面B4と当接部44の内面48aとが面接触していると見做すことができる。なお、プロセッサ50は、ステップS6を実行する毎に、該ステップS6で手先部40を移動させる方向を、検出データDCを許容範囲に近づけることができる方向として、ユーザ座標系C3のx軸プラス方向及びx軸マイナス方向の中から決定してもよい。
また、プロセッサ50は、ステップS6において、直近に取得された検出データDCに応じて手先部40の姿勢を変化させてもよい。この場合において、プロセッサ50は、手先部40を移動させる方向を、検出データDCを許容範囲に近づけることができる方向(例えば、ワークWP1の側面B4を、当接部44の内面48aと平行にする方向)として、ユーザ座標系C3のx軸、y軸、又はz軸周りの方向の中から決定してもよい。
このように、プロセッサ50は、接触検出センサ92の検出データDA、DB及びDCに基づいてステップS2~S7を実行することによって、手先部40を、図6に示すように当接部44に当接させて位置PS1及び姿勢OR1に位置決めする動作を自動で行うことができる。
ステップS8において、プロセッサ50は、位置データ取得部62として機能して、上述の実施形態と同様に、第1位置データα1及び第2位置データβ1を取得する。そして、ステップS9において、プロセッサ50は、位置関係取得部64として機能して、上述の実施形態と同様に、第3位置データγ1を取得する。
以上のように、本実施形態においては、プロセッサ50は、ロボット制御部79として機能して、手先部40を当接部44に当接させて位置PS1及び姿勢OR1に位置決めする動作を自動で実行している。この構成によれば、第3位置データγ1を取得するプロセスを自動化することができるので、該プロセスの簡単化と迅速化を実現できる。
また、本実施形態においては、システム90は、当接部44に対して手先部40が接触したことを検出する接触検出センサ92を備えている。この構成によれば、当接部44に対する手先部40の適切な接触を、自動的且つ高精度に検出できるので、手先部40を位置PS1及び姿勢OR1に位置決めする動作を、自動的且つ高精度に実行できる。また、図12に示すフローを、比較的簡単なアルゴリズムで自動化することができる。
なお、接触検出センサ92は、ロボット12に設けられてもよい。例えば、第1のセンサ素子94を、手先部40を構成するワークWP1の底面B1に設け、第2のセンサ素子96を、該ワークWP1の側面B5に設け、第3のセンサ素子98を、該ワークWP1の側面B4に設けてもよい。この場合においても、プロセッサ50は、図12中のステップS1~S7を実行することで、手先部40を当接部44に適切に当接させて位置PS1及び姿勢OR1に位置決めすることができる。
代替的には、接触検出センサ92は、上述の力センサ82から構成することもできる。具体的には、プロセッサ50は、図12中のステップS2を実行したときに力センサ82が検出した検出データDFS2から、作業機器14の面42から手先部40に加えられた外力EFS2の大きさ:|EFS2|を求める。
そして、プロセッサ50は、ステップS3において、|EFS2|が、予め定めた許容範囲[EFS2_th1,FS2_th2]に収まっているか否かを判定する。この許容範囲[EFS2_th1,FS2_th2]は、ワークWP1の底面B1と面42とが適切に面接触しているときに力センサ82が検出した外力EFS2の大きさを基準として、定められ得る。
同様にして、プロセッサ50は、図12中のステップS4を実行したときに力センサ82が検出した検出データDFS4から、当接部44の内面46aから手先部40に加えられた外力EFS4の大きさ:|EFS4|を求めることができる。そして、プロセッサ50は、ステップS5において、|EFS4|が、予め定めた許容範囲[EFS4_th1,FS4_th2]に収まっているか否かを判定する。
また、プロセッサ50は、図12中のステップS6を実行したときに力センサ82が検出した検出データDFS6から、当接部44の内面48aから手先部40に加えられた外力EFS6の大きさ:|EFS6|を求めることができる。そして、プロセッサ50は、ステップS5において、|EFS6|が、予め定めた許容範囲[EFS6_th1,FS6_th2]に収まっているか否かを判定する。この形態においては、ロボット12に設けられた力センサ82が、当接部44に対して手先部40が接触したことを検出する接触検出センサ92として機能する。
次に、図13を参照して、さらに他の実施形態に係るシステム100について説明する。システム100は、上述のシステム10と、設計支援装置102をさらに備える点で相違する。設計支援装置102は、CAD装置104、及びCAM装置106を備える。CAD装置104は、オペレータからの入力に応じて、図1に示すロボット12をモデル化したロボットモデル102M、及び作業機器14をモデル化した作業機器モデル14Mの図面データ(3次元CADデータ)を作成する。
なお、以下の説明においては、実空間における部材の名称が「XX」であった場合、その構成要素のモデルを「XXモデル」として言及する。よって、ロボットモデル102Mは、ロボットベースモデル18M、旋回胴モデル20M、ロボットアームモデル22M(下腕部モデル30M、上腕部モデル32M)、手首部モデル24M、及びエンドエフェクタモデル26Mを有する。
CAM装置106は、CAD装置104が作成した図面データに基づいて、ロボット12又は作業機器14の動作プログラムOPを作成する。具体的には、CAM装置106は、オペレータからの入力に応じて、ロボットモデル102M、及び作業機器モデル14Mを、ロボット座標系C1及び作業機器座標系C4とともに、仮想空間内に配置する。このとき、ロボットモデル102Mと作業機器モデル14Mとは、仮想空間において、設計寸法上の相対位置RP1に配置される。
そして、CAM装置106は、仮想空間において、ロボットモデル102Mの動作によって、エンドエフェクタモデル26Mが所定の把持位置で把持するワークモデルWMを、作業機器モデル14Mに設けられた当接部モデル44Mに模擬的に当接させて、手先部モデル40Mを所定の位置PS1_V及び姿勢OR1_Vに位置決めする動作を、シミュレーションにより実行する。手先部モデル40Mが位置PS1_V及び姿勢OR1_Vに模擬的に配置されたときの、ロボット座標系C1におけるユーザ座標系C3の座標D1_V(X1_V,Y1_V,Z1_V,W1_V,P1_V,R1_V)は、シミュレーションにより既知にできる。
このシミュレーションを通して、CAM装置106は、手先部モデル40Mを位置PS1_V及び姿勢OR1_Vに位置決めする動作を実行する動作プログラムOP1を作成する。動作プログラムOP1は、手先部モデル40Mを位置PS1_V及び姿勢OR1_Vへ移動させるときの該手先部モデル40M(具体的には、MIF座標系C2の原点)の通過点となる複数の教示点TPn(n=1,2,3,・・・,nMAX)と、2つの教示点TPn及びTPn+1の間の移動経路とを含む。
なお、複数の教示点TPnのうちの最後の教示点TPnMAXは、手先部モデル40Mを位置PS1_V及び姿勢OR1_Vへ位置決めするための該手先部モデル40M(MIF座標系C2の原点)の位置を規定するものであってもよい。作成された動作プログラムOP1は、メモリ52に格納される。
ここで、実空間において、設計上の相対位置RP1に対応するようにロボット12及び作業機器14を配置したシステム100を構築した場合に、設計上の相対位置RP1と、実空間でのロボット12と作業機器14の相対位置RP2との間で差が生じ得る(換言すれば、相対位置RP1から相対位置RP2への変化が生じ得る)。この場合、実空間において、シミュレーションにより作成した動作プログラムOP1に従ってロボット12を動作させたとしても、手先部40を当接部44に適切に当接させて位置PS1及び姿勢OR1に正確に位置決めすることができなくなり得る。
そこで、本実施形態においては、プロセッサ50は、相対位置RP1と相対位置RP2との差を示す変位データを取得し、該変位データを用いて動作プログラムOP1を補正する。具体的には、実空間においてシステム100を構築した後、プロセッサ50は、位置データ取得部62として機能して、上述の実施形態と同様に、相対位置RP2における第1位置データα1を取得する。例えば、プロセッサ50は、第1位置データα1として、座標D1(X1,Y1,Z1,W1,P1,R1)を取得する。
一方、プロセッサ50は、上述のシミュレーションにおいて相対位置RP1で得られる座標D1_V(X1_V,Y1_V,Z1_V,W1_V,P1_V,R1_V)を取得する。そして、プロセッサ50は、座標D1と座標D1_Vとの差ΔD1=D1-D1_Vを、相対位置RP1と相対位置RP2との差を示す変位データΔD1として取得する。このように、本実施形態においては、プロセッサ50は、相対位置RPが変化する前(すなわち、相対位置RP1)と後(すなわち、相対位置RP2)とで取得した第1位置データα1(座標D1、D1_V)に基づいて変位データΔD1を取得する変位データ取得部108として機能する。
次いで、プロセッサ50は、取得した変位データΔD1を用いて動作プログラムOP1を補正する。例えば、プロセッサ50は、動作プログラムOP1に規定されている教示点TPn(例えば、最後の教示点TPnMAX)を変位データΔD1で補正することで、新たな動作プログラムOP2を作成する。
このように、本実施形態においては、プロセッサ50は、変位データΔD1を用いて動作プログラムOP1を補正する補正部110として機能する。その後、プロセッサ50は、上述の実施形態と同様に、位置データ取得部62として機能して第2位置データβ1を取得し、位置関係取得部64として機能して第3位置データγ1を取得する。
以上のように、本実施形態においては、装置60は、位置データ取得部62、位置関係取得部64、変位データ取得部108、及び補正部110を備え、プロセッサ50は、装置60の位置データ取得部62、位置関係取得部64、変位データ取得部108、及び補正部110として機能する。
本実施形態によれば、シミュレーションにより作成した動作プログラムOP1のデータの一部(例えば、教示点TPn)を補正する一方で、該動作プログラムOP1のデータの他の部分を利用しつつ、実空間で手先部40を位置PS1及び姿勢OR1に位置決めする動作をロボット12に実行させるための動作プログラムOP2を作成できる。したがって、実空間用の動作プログラムOP2を作成する作業を、大幅に低減できる。
なお、システム100において、プロセッサ50は、第2位置データβ1を用いて変位データを取得することもできる。具体的には、プロセッサ50は、上述のシミュレーションにおいて手先部モデル40Mが位置PS1_V及び姿勢OR1_Vに模擬的に配置されたときの、作業座標系C4におけるユーザ座標系C3の座標E1_V(x1_V,y1_V,z1_V,w1_V,p1_V,r1_V)を取得する。
実空間においてシステム100を構築した後、プロセッサ50は、上述の実施形態と同様に位置データ取得部62として機能して、第2位置データβ1である上述の座標E1(x1,y1,z1,w1,p1,r1)を取得する。そして、プロセッサ50は、変位データ取得部108として機能して、座標E1と座標E1_Vとの差ΔE1=E1-E1_Vを、相対位置RP1と相対位置RP2との差を示す変位データとして取得する。そして、プロセッサ50は、補正部110として機能して、変位データΔE1を用いて動作プログラムOP1を補正する。
また、システム100において、プロセッサ50は、第3位置データγ1を用いて変位データを取得することもできる。具体的には、プロセッサ50は、CAM装置106がシミュレーションのために仮想空間に配置したロボット座標系C1における作業機器座標系C4の座標D2_V(X2_V,Y2_V,Z2_V,W2_V,P2_V,R2_V)を取得する。
実空間においてシステム100を構築した後、プロセッサ50は、上述の実施形態と同様に位置関係取得部64として機能して、第3位置データγ1である上述の座標D2(X2,Y2,Z2,W2,P2,R2)を取得する。そして、プロセッサ50は、変位データ取得部108として機能して、座標D2と座標D2_Vとの差ΔD2=D2-D2_Vを変位データとして取得する。そして、プロセッサ50は、補正部110として機能して、変位データΔD2を用いて動作プログラムOP1を補正する。
同様にして、プロセッサ50は、第3位置データγ1である上述の座標E2(X2,Y2,Z2,W2,P2,R2)と、仮想空間に配置した作業機器座標系C4におけるロボット座標系C1の座標E2_V(x2_V,y2_V,z2_V,w2_V,p2_V,r2_V)とから、変位データΔE2=E2-E2_Vを取得し、変位データΔE2を用いて動作プログラムOP1を補正することもできる。
なお、上述のシステム70に、変位データ取得部108及び補正部110を適用することもできる。このような形態を図7及び図14に示す。図7及び図14に示すシステム70’においては、装置60は、位置データ取得部62、位置関係取得部64、教示指令受付部78、ロボット制御部79、変位データ取得部108、及び補正部110を備える。
以下、システム70’の機能について説明する。まず、オペレータは、実空間において、ロボット12と作業機器14とを相対位置RP3に配置したシステム70’を構築する。この相対位置RP3において、オペレータは、教示装置72を操作して、ロボット12の手先部40を当接部44に当接させて位置PS1_3及び姿勢OR1_3に位置決めする動作をロボット12に教示する。
プロセッサ50は、教示指令受付部78として機能して、教示装置72からの教示指令TCを受け、ロボット制御部79として機能して、該教示指令TCに応じてロボット12を動作させて、手先部40を位置PS1_3及び姿勢OR1_3に位置決めする。この教示プロセスを通して、教示装置72(又はプロセッサ50)は、手先部40を位置PS1_3及び姿勢OR1_3に位置決めする動作を実行する動作プログラムOP3を作成する。動作プログラムOP3は、手先部40を位置PS1_3及び姿勢OR1_3へ移動させるときの該手先部40(又は、MIF座標系C2の原点)の教示点TPn(n=1,2,3,・・・,nMAX)と、2つの教示点TPn及びTPn+1の間の移動経路とを含む。
次いで、プロセッサ50は、位置データ取得部62として機能し、第1位置データα1_3として、手先部40が位置PS1_3及び姿勢OR1_3に配置されたときの、ロボット座標系C1におけるユーザ座標系C3の座標D1_3(X1_3,Y1_3,Z1_3,W1_3,P1_3,R1_3)を取得する。また、プロセッサ50は、位置データ取得部62として機能して第2位置データβ1_3を取得し、位置関係取得部64として機能して、相対位置RP3における、ロボット座標系C1と作業機器座標系C4との位置関係を示す第3位置データγ1_3を取得する。
ここで、システム70’を別の製造ラインに移設するか、又は、システム70’においてロボット12及び作業機器14の少なくとも1つを交換する場合がある。この場合、システム70’において、ロボット12と作業機器14との相対位置が、移設又は交換前の相対位置RP3から、移設又は交換後の相対位置RP4へ変化し得る。そうすると、相対位置RP4において、動作プログラムOP3に従ってロボット12を動作させたとしても、手先部40を当接部44に適切に当接させることができなくなり得る。
そこで、オペレータは、移設又は交換後の相対位置RP4において、再度、教示装置72を操作して、ロボット12の手先部40を当接部44に当接させて位置PS1_4及び姿勢OR1_4に位置決めする動作をロボット12に教示する。そして、プロセッサ50は、位置データ取得部62として機能し、第1位置データα1_4として、手先部40が位置PS1_4及び姿勢OR1_4に配置されたときの、ロボット座標系C1におけるユーザ座標系C3の座標D1_4(X1_4,Y1_4,Z1_4,W1_4,P1_4,R1_4)を取得する。
次いで、プロセッサ50は、変位データ取得部108として機能して、相対位置RP3で取得した座標D1_3と、相対位置RP4で取得した座標D1_4との差ΔD1=D1_4-D1_3を、相対位置RP3と相対位置RP4との差を示す変位データΔD1として取得する。次いで、プロセッサ50は、補正部110として機能して、取得した変位データΔD1を用いて動作プログラムOP3を補正する。例えば、プロセッサ50は、動作プログラムOP3に規定されている教示点TPn(例えば、最後の教示点TPnMAX)を変位データΔD1で補正することで、新たな動作プログラムOP4を作成する。
このように、本実施形態によれば、相対位置RP3において作成した動作プログラムOP3のデータの一部(例えば、教示点TPn)を補正する一方、該動作プログラムOP3のデータの他の部分を利用しつつ、相対位置RP4でロボット12を動作させるための動作プログラムOP4を作成できる。したがって、動作プログラムOP4を作成する作業を、大幅に低減できる。
なお、システム70’において、プロセッサ50は、変位データΔD1に限らず、上述のシステム100で述べた方法を用いて、第2位置データβ1に基づく変位データΔE1、又は第3位置データγ1に基づく変位データΔD2若しくはΔE2を取得し、該変位データΔE1、ΔD2又はΔE2を用いて動作プログラムOP3を補正することができることを理解されよう。
また、システム70’において、教示装置72の代わりに、上述のシステム80の力センサ82を適用し、該システム80と同様の方法を用いて、オペレータは、ロボット12に加えた外力EFTに従ってロボット12を動作させることで、手先部40を当接部44に当接させて位置決めする動作をロボット12に教示することもできる。
次に、図15及び図16を参照して、さらに他の実施形態に係るシステム120について説明する。システム120は、上述のシステム10と、以下の構成において相違する。具体的には、システム120は、位置検出センサ122をさらに備える。位置検出センサ122は、手先部40が所定の位置PS2及び姿勢OR2に配置されたときに、作業機器座標系C4における該手先部40の位置を検出する。本実施形態においては、位置検出センサ122は、その先端に設けられた検知点122aで物体に接触することで該物体を検知するタッチプローブから構成されている。
一方、作業機器14は、本体部124(図16)、可動部126、及び移動機構128を有する。可動部126は、例えば、ワークテーブル、ワーク保持機構(チャック機構等)、又は工作機械の主軸であって、本体部124に可動に設けられている。上述の位置検出センサ122は、可動部126から一方向へ真直ぐ延出するように、該可動部126に固設されている。
移動機構128は、例えば、ボールねじ機構と、該ボールねじ機構を駆動させるサーボモータ(ともに図示せず)とを有し、制御装置16からの指令の下、可動部126を、作業機器座標系C4のx軸、y軸及びz軸方向へ移動する。可動部126(又は、位置検出センサ122)には、移動座標系C5が設定されている。移動座標系C5は、作業機器座標系C4における可動部126の位置を制御するためのものであって、作業機器座標系C4において可動部126とともに移動する。
具体的には、可動部126を移動させるとき、プロセッサ50は、作業機器座標系C4において移動座標系C5を設定し、設定した移動座標系C5によって規定される位置に可動部126を位置決めするように、移動機構128への指令を生成する。こうして、プロセッサ50は、作業機器座標系C4における任意の位置に可動部126を位置決めできる。よって、作業機器座標系C4に対する移動座標系C5の位置関係(すなわち、原点位置及び各軸の方向)は、既知である。
一方、位置検出センサ122の検知点122aは、移動座標系C5における既知の位置に配置されている。よって、位置検出センサ122の検知点122aの、作業機器座標系C4における位置(具体的には、座標)は、移動座標系C5を介して、既知となっている。
次に、システム120の機能について説明する。まず、プロセッサ50は、ロボット12を動作させて、手先部40を所定の位置PS2及び姿勢OR2に配置させる。この位置PS2は、手先部40が該位置PS2に配置されたときに、該手先部40(例えば、エンドエフェクタ26が把持するワークWP1)の少なくとも一部が、移動機構128による検知点122aの移動範囲に含まれるように、オペレータによって予め定められる。
次いで、プロセッサ50は、移動機構128を動作させて位置検出センサ122を移動させて、該位置検出センサ122の検知点122aで、手先部40の複数の位置をタッチアップ(接触)する。具体的には、プロセッサ50は、移動機構128を動作させて、検知点122aによって、エンドエフェクタ26が把持するワークWP1の側面B4上の3つの点PT1、PT2及びPT3を、順次タッチアップする。該3つの点PT1、PT2及びPT3は、一直線に整列しないように側面B4上に分散配置された点である。
検知点122aが点PT1、PT2及びPT3をタッチアップする毎に、位置検出センサ122は、検出データDP1、DP2及びDP3を、プロセッサ50へ送信する。プロセッサ50は、検出データDP1、DP2及びDP3を受信したときの、作業機器座標系C4における検知点122aの位置(座標)H1、H2及びH3を、それぞれ取得する。これら位置H1、H2及びH3から、プロセッサ50は、作業機器座標系C4における側面B4の位置を特定できる。
次いで、プロセッサ50は、移動機構128を動作させて位置検出センサ122を移動させて、該位置検出センサ122の検知点122aで、3点をタッチアップした側面B4と直交するワークWP1の側面B5上の2つの点PT4及びPT5を、順次タッチアップする。検知点122aが点PT4及びPT5をタッチアップする毎に、位置検出センサ122は、検出データDP4及びDP5を、プロセッサ50へ送信する。
プロセッサ50は、検出データDP4及びDP5を受信したときの、作業機器座標系C4における検知点122aの位置(座標)H4及びH5を、それぞれ取得する。これら位置H4及びH3から、プロセッサ50は、作業機器座標系C4における側面B5の位置を特定できる。
次いで、プロセッサ50は、移動機構128を動作させて位置検出センサ122を移動させて、検知点122aで、3点をタッチアップした側面B4及び2点をタッチアップした側面B5と直交する、ワークWP1の底面B1上の1つの点PT6をタッチアップする。検知点122aが点PT6をタッチアップしたとき、位置検出センサ122は、検出データDP6をプロセッサ50へ送信する。プロセッサ50は、検出データDP6を受信したときの、作業機器座標系C4における検知点122aの位置(座標)H6を取得する。この位置H6から、プロセッサ50は、作業機器座標系C4における底面B1の位置を特定できる。
こうして、プロセッサ50は、検出データDP1~DP6に基づいて、作業機器座標系C4における側面B4及びB5、並びに底面B1の位置を特定することができ、以って、作業機器座標系C4におけるワークWP1(手先部40)の位置及び姿勢(すなわち、ユーザ座標系C3の原点位置及び各軸の方向)を、特定することができる。
このときの作業機器座標系C4におけるユーザ座標系C3の座標は、既知の座標E3(x3,y3,z3,w3,p3,r3)として表すことができる。また、作業機器座標系C4からユーザ座標系C3への座標変換行列M43_2は、既知の同次変換行列となり、該座標変換行列M43_2の各パラメータは、座標E3(x3,y3,z3,w3,p3,r3)から定められる。こうして、作業機器座標系C4とユーザ座標系C3との位置関係は、既知となる。
そして、プロセッサ50は、位置データ取得部62として機能し、手先部40を位置PS2及び姿勢OR2に配置したときの、作業機器座標系C4における該位置PS2及び姿勢OR2を示す第2位置データβ2を取得する。例えば、プロセッサ50は、第2位置データβ2として、上述の座標変換行列M43_2を取得する。
一方、プロセッサ50は、手先部40を位置PS2及び姿勢OR2に配置したときの、ロボット座標系C1における該位置PS2及び姿勢OR2を示す第1位置データα2を取得する。ここで、手先部40が位置PS2及び姿勢OR2に配置されたとき、ロボット座標系C1におけるユーザ座標系C3の座標は、既知の座標D3(X3,Y3,Z3,W3,P3,R3)として表され、このときのロボット座標系C1からユーザ座標系C3への座標変換行列M13_2の各パラメータは、座標D3(X3,Y3,Z3,W3,P3,R3)から求めることができる。例えば、プロセッサ50は、第1位置データα2として、座標変換行列M13_2を取得する。
次いで、プロセッサ50は、取得した第1位置データα2及び第2位置データβ2を用いて、ロボット座標系C1と作業機器座標系C4との位置関係を示す第3位置データγ2を取得する。例えば、プロセッサ50は、第3位置データγ2として、ロボット座標系C1から作業機器座標系C4への座標変換行列M14_2を取得する。具体的には、プロセッサ50は、第1位置データα2である座標変換行列M13_2と、第2位置データβ2である座標変換行列M43_2とを用いて、M14_2=M13_2・inv(M43_2)なる式から、座標変換行列M14_2を演算により求めることができる。
以上のように、本実施形態においては、プロセッサ50は、手先部40(具体的には、ワークWP1)の作業機器座標系Cにおける位置を検出する位置検出センサ122の検出データDP1~DP6に基づいて、第2位置データβ2を取得している。この構成によれば、上述の当接部44を用いることなく、作業機器座標系C4に対する手先部40の位置及び姿勢(すなわち、ユーザ座標系C3の位置関係)を既知にすることができる。
また、本実施形態においては、位置検出センサ122は、タッチプローブから構成され、移動機構128によって移動されて所定の位置PS2及び姿勢OR2に配置された手先部40(ワークWP1)に接触することで、作業機器座標系C4における手先部40の位置を検出している。
この構成によれば、作業機器14が、位置決め精度が高い移動機構128を有する場合、位置検出センサ122によって手先部40の位置を高精度に検出することができるので、第2位置データβ2の精度を高めることができる。また、第2位置データβ2を取得するプロセスを自動化することもできる。
なお、本実施形態においては、プロセッサ50が、位置検出センサ122によってワークWの側面B4、側面B5、及び底面B1をタッチアップする場合について述べた。しかしながら、これに限らず、プロセッサ50は、位置検出センサ122によって、手先部40の如何なる面(例えば、互いに直交する爪部36の3つの面)をタッチアップさせてもよい。
また、位置検出センサ122は、上述のタッチプローブの代わりに(又は、タッチプローブに加えて)、手先部40(ワークWP1)の画像データを撮像する視覚センサ(3次元視覚センサ、又は2次元カメラ)を有してもよい。作業機器座標系C4における視覚センサの位置及び姿勢が既知であれば、プロセッサ50は、視覚センサが撮像した画像データ(検出データ)に基づいて、作業機器座標系C4における手先部40(ワークWP1)の位置及び姿勢(すなわち、ユーザ座標系C3の原点位置及び各軸の方向)を特定できる。
また、システム120において、プロセッサ50は、上述のシステム10と同様に、第1位置データα2として、上述の座標D3(X3,Y3,Z3,W3,P3,R3)、手先部40を位置PS2及び姿勢OR2に配置したときのユーザ座標系C3からロボット座標系C1への座標変換行列M31_2、又は、ユーザ座標系C3におけるロボット座標系C1の座標D3’(X3’,Y3’,Z3’,W3’,P3’,R3’)を取得してもよい。
また、プロセッサ50は、上述のシステム10と同様に、第2位置データβ2として、上述の座標E3(x3,y3,z3,w3,p3,r3)、手先部40を位置PS2及び姿勢OR2に配置したときのユーザ座標系C3から作業機器座標系C4への座標変換行列M34_2、又は、ユーザ座標系C3における作業機器座標系C4の座標E3’(x3’,y3’,z3’,w3’,p3’,r3’)を取得してもよい。
また、プロセッサ50は、上述のシステム10と同様に、第3位置データγ2として、ロボット座標系C1における作業機器座標系C4の座標D4(X4,Y4,Z4,W4,P4,R4)、作業機器座標系C4からロボット座標系C1への座標変換行列M41_2、又は、作業機器座標系C4におけるロボット座標系C1の座標E4(x4,y4,z4,w4,p4,r4)を取得してもよい。
また、システム120に、図7に示す教示装置72、又は図9に示す力センサ82を適用し、オペレータは、手先部40を所定の位置PS2及び姿勢OR2に位置決めする動作をロボット12に教示してもよい。この場合、システム120のプロセッサ50は、上述の教示指令受付部78、及び、手先部40を位置PS2及び姿勢OR2に位置決めするようにロボット12を動作させるロボット制御部79として機能する。
次に、図17~図22を参照して、さらに他の実施形態に係るシステム130について説明する。システム130は、ロボット132、作業機器134、及び制御装置16を備える。制御装置16は、ロボット132及び作業機器134の動作を制御する。また、上述の実施形態と同様に、ロボット132及び作業機器134には、ロボット座標系C1及び作業機器座標系C4がそれぞれ設定されている。
ロボット132は、上述のロボット12と、エンドエフェクタ136において相違する。エンドエフェクタ136は、ワークWP2を把持可能なロボットハンドであって、手首部24の先端部(手首フランジ)に着脱可能に取り付けられる。一例として、エンドエフェクタ136は、開閉可能な複数の爪部と、該爪部を駆動する爪駆動部(ともに図示せず)を有する。他の例として、エンドエフェクタ136は、ワークWP2を吸着可能な吸着部(負圧発生装置、電磁石、又は吸盤等)を有し、該ワークWP2を吸着することで把持するものであってもよい。
図20に示すように、本実施形態においては、ワークWP2は、円柱状(又は円筒状)の本体部WAと、該本体部WAから突出する四角柱状の突出部WBとを有する。より具体的には、本体部WAは、各々が略平面である一対の端面J1及びJ2と、該端面J1及びJ2の間で延在する円筒状の外周面J3とを有する。
突出部WBは、本体部WAの端面J2に形成されている。より具体的には、突出部WBは、各々が略平面である、底面B6、側面B7、B8、B9及びB10を有している。側面B7及びB8は、互いに平行に対向配置され、底面B6と直交している。また、側面B9及びB10は、互いに平行に対向配置され、底面B6、側面B7及びB8と直交している。
エンドエフェクタ136は、本体部WAの予め定めた位置を把持することにより、ワークWP2を所定の把持位置で把持する。図17、図19、及び図21に示すようにエンドエフェクタ136が所定の把持位置で把持したワークWP2は、該エンドエフェクタ136と一体のもの、換言すれば、該エンドエフェクタ136の一部と見做すことができる。よって、手首部24の先端部(手首フランジ)、エンドエフェクタ136、及び該エンドエフェクタ136が所定の把持位置で把持するワークWP2は、ロボット132の手先部140を構成する。
エンドエフェクタ136が所定の把持位置で把持するワークWP2に対し、ユーザ座標系C3が設定される。本実施形態においては、ユーザ座標系C3は、その原点が、エンドエフェクタ136が把持するワークWP2の底面B6(図20)の中心点に配置され、そのx-z平面が、エンドエフェクタ136が把持するワークWP2の底面B6と平行であり、且つ、そのy-z平面が、エンドエフェクタ136が把持するワークWP2の側面B7及びB8と平行となるように、ワークWP2に対して設定されている。
上述したように、エンドエフェクタ136が所定の把持位置で把持したワークWP2は、該エンドエフェクタ136と一体のもの(つまり、エンドエフェクタ136の一部)と見做すことができるので、該把持位置とワークWP2の形状が既知であれば、エンドエフェクタ136が把持するワークWP2に設定されたユーザ座標系C3の、MIF座標系C2に対する位置関係(原点位置及び各軸の方向)は、既知となる。
したがって、ロボット座標系C1に対するユーザ座標系C3の位置関係は、MIF座標系C2を介して既知となる。よって、上述の実施形態と同様に、ロボット座標系C1に対するユーザ座標系C3の位置関係は、ロボット座標系C1の座標D(X,Y,Z,W,P,R)として表され、また、ロボット座標系C1からユーザ座標系C3への座標変換行列M13(及び、その逆変換行列:M31)は、既知の同次変換行列となる。
作業機器134は、例えば工作機械であって、本体部142、ワーク保持機構144、及び移動機構146を有する。ワーク保持機構144は、本体部142の面148に可動に設けられている。本実施形態においては、ワーク保持機構144は、チャック機構である。具体的には、図19、図21及び図22に示すように、ワーク保持機構144は、チャックベース150と、該チャックベース150に開閉可能に設けられた複数のチャック爪152と、チャック爪152を駆動するチャック駆動部(図示せず)とを有する。
チャックベース150は、中心軸線A2を有する円柱状の部材であって、外側を向く略平面の保持面150aを有する。チャック爪152は、軸線A2に対して接近及び離反するようにチャックベース150に可動に設けられている。本実施形態においては、計3個のチャック爪152が、軸線A2の周りに略等間隔で並ぶように、配置されている。チャック駆動部は、例えば、空圧式若しくは油圧式のシリンダ、又はモータであって、制御装置16からの指令の下、チャック爪152を開閉させる。チャック爪152が物体を把持したとき、該物体は、軸線A2と同軸に保持される。
図21及び図22に示すように、本実施形態においては、チャック爪152に、当接部154を予め把持させている。当接部154は、円筒状の部材であって、各々が略平面である一対の端面156及び158と、該端面156及び158の間で延在する円筒面である外周面160と、当接部154を軸方向に貫通する貫通孔162とを有する。
貫通孔162は、ワークWP2の突出部WBと同じ外形を有し、後述するように該突出部WBを摺動可能に受容する。より具体的には、貫通孔162は、各々が略平面である、内面162a、162b、162c及び162dから画定されている。内面162a及び162bは、互いに平行に対向配置されている。内面162c及び162dは、内面162a及び162bと直交し、互いに平行に対向配置されている。
移動機構146は、例えば、ボールねじ機構と、該ボールねじ機構を駆動させるサーボモータ(ともに図示せず)とを有し、制御装置16からの指令の下、ワーク保持機構144を、作業機器座標系C4のx軸、y軸及びz軸方向へ移動させる。ワーク保持機構144には、移動座標系C5が設定されている。
移動座標系C5は、作業機器座標系C4におけるワーク保持機構144の位置を制御するためのものであって、作業機器座標系C4においてワーク保持機構144とともに移動する。本実施形態においては、移動座標系C5は、その原点が、軸線A2と保持面150aとの交点(すなわち、保持面150aの中心点)に配置され、そのy軸が、保持面150aと直交するように、ワーク保持機構144に対して設定されている。
ここで、本実施形態においては、当接部154は、その内面162a及び162bが、移動座標系C5のy-z平面と平行となり、且つ、その内面162c及び162dが、移動座標系C5のx-y平面と平行となる姿勢で、チャック爪152に把持されている。こうして、当接部154は、軸線A2と同軸となるようにワーク保持機構144に保持され、ワーク保持機構144と当接部154とは、一体となって移動される。
ワーク保持機構144を移動させるとき、プロセッサ50は、作業機器座標系C4において移動座標系C5を設定し、設定した移動座標系C5によって規定される位置にワーク保持機構144を位置決めするように、移動機構146を制御する。こうして、プロセッサ50は、作業機器座標系C4における任意の位置にワーク保持機構144を位置決めできる。
よって、作業機器座標系C4に対する移動座標系C5の位置関係(すなわち、原点位置及び各軸の方向)は、既知であって、移動座標系C5は、作業機器座標系C4の座標E(x,y,z,w,p,r)として表される。また、移動座標系C5に対するワーク保持機構144及び当接部154の位置は、既知である。したがって、ワーク保持機構144及び当接部154の作業機器座標系C4における位置は、移動座標系C5を介して、既知となる。
次に、システム130の機能について説明する。まず、作業機器134は、移動機構146を動作させて、ワーク保持機構144(すなわち、当接部154)を、所定の位置PSWに配置させる。このときの作業機器座標系C4と移動座標系C5との位置関係は、上述のように既知であり、作業機器座標系C4における移動座標系C5の座標は、座標E5(x5,y5,z5,w5,p5,r5)として表される。また、作業機器座標系C4から移動座標系C5への座標変換行列M45_3は、既知の同次変換行列となり、該座標変換行列M45_3の各パラメータは、座標E5(x5,y5,z5,w5,p5,r5)から定められる。
次いで、ロボット132は、エンドエフェクタ136が所定の把持位置で把持しているワークWP2を、図17、図19及び図21に示すように、当接部154に当接させる。このとき、ワークWP2の突出部WBが、当接部154の貫通孔162に嵌入され、突出部WBの底面B6が、保持面150aと面接触し、突出部WBの側面B7及びB8が、当接部154の内面162a及び162bとそれぞれ面接触し、且つ、突出部WBの側面B9及びB10が、当接部154の内面162c及び162dとそれぞれ面接触する。
こうして、手先部140は、作業機器134に対して所定の位置PS3及び姿勢OR3に静止して配置される。このとき、ユーザ座標系C3と移動座標系C5とは、互いに一致すると見做すことができる。すなわち、ユーザ座標系C3及び移動座標系C5の原点位置、及びx軸、y軸及びz軸方向が、互いに一致していると見做すことができる。
したがって、このときの作業機器座標系C4に対するユーザ座標系C3の位置関係が、既知となり、作業機器座標系C4におけるユーザ座標系C3の座標は、上述の座標E5(x5,y5,z5,w5,p5,r5)として表され、また、作業機器座標系C4からユーザ座標系C3への座標変換行列M43_3は、上述の座標変換行列M45_3と等しくなる。
このように、手先部140(具体的にはワークWP2)を当接部154に当接させることで、該手先部140が作業機器134に対して所定の位置PS3及び姿勢OR3に静止して配置され、このときの作業機器座標系C4に対するユーザ座標系C3の位置関係(すなわち、手先部140の位置PS3及び姿勢OR3)が既知となる。よって、当接部154は、手先部140の位置PS3及び姿勢OR3を作業機器座標系C4に表すための要素として機能する。
そして、プロセッサ50は、位置データ取得部62として機能して、手先部140を位置PS3及び姿勢OR3に配置したときの、作業機器座標系C4における該位置PS3及び姿勢OR3を示す第2位置データβ3を取得する。一例として、プロセッサ50は、第2位置データβ3として、上述の座標E5(x5,y5,z5,w5,p5,r5)、又は座標変換行列M43_3を取得する。
他の例として、プロセッサ50は、第2位置データβ3として、手先部140を位置PS3及び姿勢OR3に配置したときの、ユーザ座標系C3から作業機器座標系C4への座標変換行列M34_3=inv(M43_3)、又は、ユーザ座標系C3における作業機器座標系C4の座標E5’(x5’,y5’,z5’,w5’,p5’,r5’)を取得してもよい。
一方、プロセッサ50は、手先部140を位置PS3及び姿勢OR3に配置したときの、ロボット座標系C1における該位置PS3及び姿勢OR3を示す第1位置データα3を取得する。一例として、プロセッサ50は、第1位置データα3として、手先部140を位置PS3及び姿勢OR3に配置したときの、ロボット座標系C1におけるユーザ座標系C3の座標D5(X5,Y5,Z5,W5,P5,R5)、又は、該ロボット座標系C1から該ユーザ座標系C3への座標変換行列M13_3を取得する。
他の例として、プロセッサ50は、第1位置データα3として、手先部140を位置PS3及び姿勢OR3に配置したときの、ユーザ座標系C3におけるロボット座標系C1の座標D5’(X5’,Y5’,Z5’,W5’,P5’,R5’)、又は、該ユーザ座標系C3から該ロボット座標系C1への座標変換行列M31_3を取得してもよい。
次いで、プロセッサ50は、位置関係取得部64として機能して、取得した第1位置データα3及び第2位置データβ3を用いて、ロボット座標系C1と作業機器座標系C4との位置関係を示す第3位置データγ3を取得する。一例として、プロセッサ50は、第3位置データγ3として、ロボット座標系C1から作業機器座標系C4への座標変換行列M14_3を、M14_3=M13_3・M34_3=M13_3・inv(M43_3)なる式から演算により求める。
他の例として、プロセッサ50は、第3位置データγ3として、作業機器座標系C4からロボット座標系C1への座標変換行列M41_3(=inv(M14_3))、ロボット座標系C1における作業機器座標系C4の座標D6(X6,Y6,Z6,W6,P6,R6)、又は、作業機器座標系C4におけるロボット座標系C1の座標E6(x6,y6,z6,w6,p6,r6)を取得してもよい。
以上のように、本実施形態によれば、プロセッサ50は、作業機器134に設定した複数の点を手先部140でタッチアップするプロセスを実行することなく、手先部140を1つの位置PS3及び姿勢OR3に配置することにより、第3位置データγ3を取得できる。これにより、ロボット座標系C1と作業機器座標系C4との位置関係を求めるプロセスを、大幅に簡易化することができる。
また、システム130に、上述の接触検出センサ92を適用することもできる。例えば、接触検出センサ92の第1のセンサ素子94を、ワーク保持機構144の保持面150a(又は、ワークWP2の底面B6)の中心部に設け、第2のセンサ素子96を、当接部154の内面162a若しくは162b(又は、ワークWP2の側面B7若しくはB8)に設け、第3のセンサ素子98を、当接部154の内面162c若しくは162d(又は、ワークWP2の側面B9若しくはB10)に設ける。
この場合において、プロセッサ50は、図12に示すフローを実行してもよい。例えば、プロセッサ50は、ステップS1で、ワークWP2の突出部WBの少なくとも一部が当接部154の貫通孔162に嵌入されるような初期位置PS0及び初期姿勢OR0に配置させてもよい。また、プロセッサ50は、ステップS2で、手先部140を、この時点でのユーザ座標系C3のy軸方向(つまり、保持面150aと直交すると推定される方向)へ移動させてもよい。
また、プロセッサ50は、ステップS4で、手先部140を、この時点でのユーザ座標系C3のx軸方向(つまり、内面162a及び162bと直交すると推定される方向)へ移動させてもよい。また、プロセッサ50は、ステップS6で、手先部140を、この時点でのユーザ座標系C3のz軸方向(つまり、内面162c及び162dと直交すると推定される方向)へ移動させてもよい。このように、プロセッサ50は、図12に示すフローを実行することで、手先部140を当接部154に当接させて所定の位置PS3及び姿勢OR3に位置決めする動作を、自動で実行できる。
なお、システム130に、上述の変位データ取得部108及び補正部110を適用することもできる。例えば、プロセッサ50は、システム130の移設、又は、ロボット132若しくは作業機器134の交換の前後(又は、シミュレーションを実機に適用するとき)に、第1位置データα3(例えば、座標D5)、又は第2位置データβ3(例えば、座標E5)を取得する。
そして、プロセッサ50は、変位データ取得部108として機能して、上述のシステム100と同様の方法を用いて、移設又は交換の前後で取得した2つの位置データの差を算出することで、移設又は交換前の相対位置RP5と、移設又は交換後の相対位置RP6との差を示す変位データΔを取得してもよい。そして、プロセッサ50は、補正部110として機能して、取得した変位データΔを用いて、移設又は交換前に作成された動作プログラムOPを補正してもよい。
なお、システム130に、上述の位置検出センサ122(タッチプローブ)を適用することもできる。具体的には、作業機器134のワーク保持機構144に、位置検出センサ122を固定する(例えば、チャック爪152に把持させる)。そして、プロセッサ50は、手先部140を、所定の位置PS4及び姿勢OR4に配置させる。
次いで、プロセッサ50は、移動機構146を動作させて位置検出センサ122を移動させ、該位置検出センサ122の検知点122aで、手先部140(ワークWP2)の複数の位置をタッチアップ(接触)する。例えば、プロセッサ50は、移動機構146を動作させて、検知点122aによって、エンドエフェクタ136が把持するワークWP2の側面B7(又はB8)上の3つの点PT1、PT2及びPT3を、順次タッチアップする。
次いで、プロセッサ50は、移動機構146を動作させて、検知点122aによって、エンドエフェクタ136が把持するワークWP2の側面B9(又はB10)上の2つの点PT4及びPT5を、順次タッチアップする。次いで、プロセッサ50は、移動機構146を動作させて、検知点122aによって、エンドエフェクタ136が把持するワークWP2の底面B6上の1つの点P6をタッチアップする。
そして、プロセッサ50は、上述のシステム120と同様に、検知点122aで6つの点PT1~PT6をタッチアップする毎に位置検出センサ122から受け付けた検出データDP1~DP6に基づいて、作業機器座標系C4におけるワークWP2(手先部140)の位置及び姿勢(すなわち、ユーザ座標系C3の原点位置及び各軸の方向)を特定し、以って、第2位置データβ4を取得することができる。
このようにシステム130に位置検出センサ122を適用した場合において、プロセッサ50は、システム130の移設、又は、ロボット132若しくは作業機器134の交換の前後(又は、シミュレーションを実機に適用するとき)に、位置検出センサ122を用いて第2位置データβ4(例えば、作業機器座標系C4におけるユーザ座標系C3の座標E)を取得してもよい。
そして、プロセッサ50は、変位データ取得部108として機能して、上述のシステム100と同様の方法を用いて、移設又は交換の前後(又は、シミュレーションを実機に適用するとき)で取得した2つの第2位置データβ4の差を算出することで、移設又は交換前の相対位置RP5(又は、シミュレーション実行時の相対位置RP1)と、移設又は交換後の相対位置RP6(又は、実空間でシステム130を構築した後の相対位置RP2)との差を示す変位データΔE3(又は、ΔE1)を取得してもよい。
例えば、プロセッサ50は、移設又は交換前(又は、シミュレーション実行時)の相対位置RP5において、第2位置データβ4として、作業機器座標系C4におけるユーザ座標系C3の座標E7(x7,y7,z7,w7,p7,r7)を取得するとともに、移設又は交換後(又は、実空間でシステム130を構築した後)の相対位置RP6において、第2位置データβ4として、作業機器座標系C4におけるユーザ座標系C3の座標E8(x8,y8,z8,w8,p8,r8)を取得する。
そして、プロセッサ50は、変位データ取得部108として機能し、変位データΔE3として、座標E7と座標E8との差ΔE3=E8-E7を取得する。そして、プロセッサ50は、補正部110として機能して、取得した変位データΔE3(=E8-E7)を用いて、移設又は交換前(又は、シミュレーション実行時)に作成された作業機器134の動作プログラムOP5を補正してもよい。具体的には、プロセッサ50は、取得した変位データΔを用いて、作業機器134の動作プログラムOP5に規定されている、上述の位置PSWの教示点を補正することで、新たな動作プログラムOP6を作成してもよい。
なお、システム130において手先部140を位置決めする位置PS3及び姿勢OR3は、実際の製造プロセスにおいてロボット132が作業機器134に対し所定の作業(ワークハンドリング等)を行うときの目標位置及び目標姿勢であってもよい。例えば、実際の製造プロセスにおいて、プロセッサ50は、作業機器134の移動機構146を動作させて、ワーク保持機構144を所定の位置PSWに位置決めする。
そして、プロセッサ50は、ロボット132を動作させて、エンドエフェクタ136が所定の把持位置で把持したワークを、位置PSWに位置決めされたワーク保持機構144のチャック爪152に把持させて、該ワーク保持機構144に受け渡す。次いで、プロセッサ50は、作業機器134を動作させて、移動機構146によってワーク保持機構144が保持しているワークを移動させつつ、工具によって該ワークを加工する。
ワークの加工終了後、プロセッサ50は、作業機器134の移動機構146を動作させて、ワーク保持機構144を、再度、位置PSWに位置決めし、ロボット132を動作させて、ワーク保持機構144が保持する加工済みワークを、エンドエフェクタ136で受け取る。
このような一連の製造プロセスにおいて、ロボット132が作業機器134に対しワークハンドリング作業(すなわち、ワーク保持機構144へのワークの受け渡し、及びワーク保持機構144からのワークの受け取り)を行うときの目標位置及び目標姿勢が、上述の所定の位置PS3及び姿勢OR3に一致するように、該所定の位置PS3及び姿勢OR3を設定してもよい。また、プロセッサ50は、該所定の位置PS3及び姿勢OR3の位置データと、取得した第3位置データγ3とを用いて、一連の製造プロセスをロボット132及び作業機器134に協働で実行させる動作プログラムOP7を作成してもよい。
この構成によれば、手先部140(エンドエフェクタ136)を目標位置及び目標姿勢に位置決めした状態で第3位置データγ3を取得できるので、実際の製造プロセスにおいて、ロボット132に、作業機器134に対する作業(ワークハンドリング等)を、高精度に実行させることができる。なお、上述のシステム10における所定の位置PS1及び姿勢OR1、又は、システム120における所定の位置PS2及び姿勢OR2も、同様に、ロボット12が作業機器14に対し所定の作業を行うときの目標位置及び目標姿勢として設定されてもよい。
なお、システム130において、移動機構146を省略し、ワーク保持機構144は、作業機器座標系C4における既知の位置PSWに固定されてもよい。この場合、手先部140のワークWP2を当接部154に当接させたときの、作業機器座標系C4に対するユーザ座標系C3の位置関係は、図21に示す位置関係として、既知とすることができる。
また、システム130から移動機構146を省略した場合において、作業機器134は、ワーク保持機構144に保持されたワークを加工する工具と、該工具をワーク保持機構144に対して移動させる移動機構(ともに図示せず)とをさらに備え、上述の位置検出センサ122(タッチプローブ)を該工具に対して固定して、該移動機構によって位置検出センサ122を移動させてもよい。
この場合において、プロセッサ50は、ロボット132の手先部140を所定の位置PS3及び姿勢OR3に位置決めした状態で、該移動機構によって位置検出センサ122を移動させて、検知点122aで手先部140の任意の点PT1~PT6をタッチアップすることで、第2位置データβ4を取得してもよい。このときに手先部140を位置決めする位置PS3及び姿勢OR3は、上述の目標位置及び目標姿勢であってもよい。
なお、システム130において、図21に示すように互いに嵌合された当接部154とワークWP2との組立体が、実際の製造プロセスで作業対象となるワークWP3と同じ形状(寸法)となるように、当接部154とワークWP2を構成してもよい。この場合、実際の製造プロセスで用いるワークWP3を使用して第3位置データγ3を取得したことと同義となるので、実際の製造プロセスにおけるロボット132のワークハンドリングの精度を、さらに高めることができる。
また、システム130において、当接部154とワークWP2の代わりに、実際の製造プロセスで作業対象となるワークWP3を用いて、第3位置データγ3を取得してもよい。以下、図23及び図24を参照して、この機能について説明する。ワークWP3は、円柱状の部材であって、一対の端面K1及びK2、及び外周面K3を有する。
エンドエフェクタ136は、ワークWP3の予め定めた位置を把持することにより、該ワークWP3を所定の把持位置で把持する。このとき、手首部24の先端部(手首フランジ)、エンドエフェクタ136、及び該エンドエフェクタ136が所定の把持位置で把持するワークWP3は、ロボット132の手先部140’を構成する。
エンドエフェクタ136が所定の把持位置で把持するワークWP3に対し、ユーザ座標系C3が設定される。本実施形態においては、ユーザ座標系C3は、その原点が、エンドエフェクタ136が把持するワークWP3の端面K2の中心点に配置され、そのx-z平面が、エンドエフェクタ136が把持するワークWP3の端面K2と平行となるように、ワークWP3に対して設定されている。
プロセッサ50は、ロボット132を動作させて、ワークWP3の端面K2を、ワーク保持機構144の保持面150aに当接させるとともに、チャック駆動部を動作させて、チャック爪152でワークWP3を把持する。その結果、手先部140’は、ワーク保持機構144によって保持されて、所定の位置PS3及び姿勢OR3に静止して位置決めされる。
このとき、ユーザ座標系C3の原点は、保持面150aの中心点(つまり、移動座標系C5の原点)に配置され、ユーザ座標系C3のy軸は、保持面150aと直交する方向となる。ここで、本実施形態においては、プロセッサ50は、ワークWP3の端面K2を保持面150aに当接させるときの手先部140’の姿勢を、作業座標系C4における既知の姿勢に維持する。
例えば、プロセッサ50は、ワークWP3を保持面150aに当接させるときの手先部140’の姿勢を、ユーザ座標系C3のz軸プラス方向が鉛直上方に一致する姿勢に、維持する。この場合、ワークWP3がチャック爪152で把持されて手先部140’が位置PS3及び姿勢OR3に位置決めされたとき、該手先部140’の姿勢が、ユーザ座標系C3のz軸プラス方向が鉛直上方に一致する姿勢に、維持されることになる。
一方、作業座標系C4において、鉛直上方(例えば、作業座標系C4のz軸プラス方向)は、特定することができるので、手先部140’を位置PS3及び姿勢OR3に配置したときの作業座標系C4におけるユーザ座標系C3のz軸方向を、特定することができる。こうして、作業座標系C4におけるユーザ座標系C3の原点位置、y軸方向、及びz軸方向を特定することができ、以って、作業座標系C4に対するユーザ座標系C3の位置関係(すなわち、手先部140’の位置及び姿勢)を既知とすることができる。
本実施形態によれば、手先部140’を位置PS3及び姿勢OR3に位置決めするときの該手先部140’の姿勢を、作業座標系C4における既知の姿勢に定めることにより、図21に示す当接部154及びワークWP2を用いることなく、作業座標系C4における手先部140’の位置及び姿勢を示す第2位置データβ3を取得することができる。
なお、プロセッサ50は、ワークWP3を保持面150aに当接させるときの手先部140’の姿勢を、ユーザ座標系C3のz軸プラス方向が、作業座標系C4で既知である鉛直下方に一致する姿勢に維持してもよいし、又は、ユーザ座標系C3のx軸プラス方向が、作業座標系C4で既知である水平方向左方(又は右方)に一致する姿勢に維持してもよい。
なお、図23に示す状態においては、ワークWP3の外周面K3がチャック爪152に当接し、ワークWP3の端面K2が保持面150aに当接することで、手先部140’が位置PS3及び姿勢OR3に静止して配置され、これにより作業座標系C4における手先部140’の位置及び姿勢が既知となっている。したがって、本実施形態においては、ワーク保持機構144のチャック爪152及び保持面150aは、当接部として機能する。
なお、システム130に、図7に示す教示装置72、又は図9に示す力センサ82を適用し、オペレータは、手先部140(又は140’)を当接部154(又はワーク保持機構144)に当接させて所定の位置PS3及び姿勢OR3に位置決めする動作をロボット132に教示してもよい。この場合、システム130のプロセッサ50は、上述の教示指令受付部78及びロボット制御部79として機能する。
また、システム130は、ロボット132を制御する第1の制御装置16Aと、該第1の制御装置16Aに通信可能に接続され、作業機器134を制御する第2の制御装置16Bとを備えてもよい。この場合において、制御装置16A及び16Bのいずれか一方のプロセッサ50が、位置データ取得部62及び位置関係取得部64として機能してもよいし、又は、第1の制御装置16Aのプロセッサ50が、位置データ取得部62及び位置関係取得部64の一方として機能し、第2の制御装置16Bのプロセッサ50が、位置データ取得部62及び位置関係取得部64の他方として機能してもよい。
なお、上述のシステム10、70、70’、80、90、100、120又は130において、プロセッサ50は、コンピュータプログラムに従って、第1位置データα、第2位置データβ、及び第3位置データγを取得するプロセスを自動で実行してもよい。この場合、該コンピュータプログラムは、プロセッサ50を、位置データ取得部62及び位置関係取得部64として機能させる。
また、上述の実施形態においては、エンドエフェクタ26及び136が、ワークを把持可能なロボットハンドである場合について述べた。しかしながら、これに限らず、エンドエフェクタ26又は136は、所定の作業(例えば、加工、溶接、塗料塗布等)を実行可能な如何なるタイプのエンドエフェクタであってもよい。
また、上述の実施形態においては、手首部24の先端部、エンドエフェクタ26、136、及び該エンドエフェクタ26、136が把持するワークWP1、WP2、WP3が、手先部40、140、140’を構成する場合について述べた。しかしながら、エンドエフェクタ26、136は、必ずしも、ワークWP1、WP2、WP3を把持していなくてもよい。この場合、手首部24の先端部、及びエンドエフェクタ26、136が、手先部40B、140Bを構成することになる。
手先部40Bに関し、例えば、図3に示すエンドエフェクタ26において、ユーザ座標系C3は、その原点が、一方の把持面36aの一頂点に配置し、そのy-z平面が、該一方の把持面36aと平行となるように、エンドエフェクタ26に対し設定されてもよい。この場合において、エンドエフェクタ26の爪部36を当接部44に当接させることで、手先部40Bを所定の位置及び姿勢に配置してもよい。この場合においても、上述の実施形態と同じ原理で、作業機器座標系C4に対するユーザ座標系C3の位置関係(手先部40Bの位置及び姿勢)を既知にできる。
また、手先部140Bに関し、例えば、図19に示すエンドエフェクタ136において、ユーザ座標系C3は、その原点が、物体を把持する位置(例えば、複数の指部の間の位置、又は、吸着部の吸着面の中心)に配置され、そのz軸が、手首軸A1(図1)と平行となる(具体的には、一致する)ように、エンドエフェクタ136に対し設定されてもよい。
この場合において、エンドエフェクタ136の任意の部位(指部、又は吸着部)を、当接部としてのワーク保持機構144に当接させて該ワーク保持機構144に保持させることで、手先部140Bを所定の位置及び姿勢に配置してもよい。この場合においても、上述の実施形態と同じ原理で、作業機器座標系C4に対するユーザ座標系C3の位置関係(手先部140Bの位置及び姿勢)を既知にできる。
手先部40B、140Bに関し、上述のセンサ素子94、96、98を、手首部24の先端部、又はエンドエフェクタ26、136に設け、手先部40B、140Bを当接部44,154に当接させて所定の位置及び姿勢に位置決めしてもよい。また、手先部40、140、140’は、例えば、手首部24の先端部(手首フランジ)のみから構成されてもよいし、又はロボット12の如何なる部位として定義することができる。
また、上述の当接部44,154は、作業機器座標系C4に対するロボット12の手先部40、40B、140、140Bの位置PS及び姿勢ORを既知とするための一例であって、作業機器座標系C4に対するロボット12の手先部40、40B、140、140Bの位置PS及び姿勢ORを既知とすることができるものであれば、如何なる形状を有してもよい。
また、当接部44,154の代わりに、手先部40、40B、140、140Bを、作業機器座標系C4における位置が既知であるロボット12又は作業機器14の任意の部位(孔、凹部、又は凸部)に当接させることで、所定の位置PS及び姿勢ORに位置決めしてもよい。
また、ユーザ座標系C3は、上述の実施形態に限らず、MIF座標系C2に対する位置関係が既知である如何なる位置に設定されてもよい。例えば、図3に示す形態において、ユーザ座標系C3の原点は、ワークWP1の頂点F以外の頂点、又は、底面B1若しくは頂面B2の中心点に設定されてもよい。
また、上述の実施形態においては、プロセッサ50が、第2位置データβとして、作業機器座標系C4に対するユーザ座標系C3の位置関係を示すデータを取得する場合について述べた。しかしながら、これに限らず、プロセッサ50は、第2位置データβとして、作業機器座標系C4に対するMIF座標系C3の位置関係を示すデータを取得してもよい。ワークWP1、WP2、WP3の形状と、エンドエフェクタ26、136がワークWP1、WP2、WP3を把持する位置が既知であれば、上述した方法を用いて、作業機器座標系C4に対するMIF座標系C3の位置関係を既知とすることができる。
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。