以下、本発明に係る実施の形態を図1乃至図10に沿って説明する。図1は、本発明の実施形態に係るロボット装置の概略構成を示す概略図である。
ロボット装置1は、ワークW(図2参照)を把持可能なロボットハンド装置としてのロボットハンド10と、先端にロボットハンド10が設けられ、ロボットハンド10の位置を制御し複数の関節を有するロボットアーム20と、を備えている。また、ロボット装置1は、ロボットハンド10を制御する制御部としてのハンド制御部30と、各種制御指令を送信可能な制御指令部40と、を備えている。また、ロボット装置1は、ロボット装置1の外に設けられた外部電源と電源ケーブル51を介して接続され、外部電源から供給された電力を調整し、ロボット装置1を構成する各要素に電源ケーブル51を介して電力を供給する電力制御部50を備えている。ロボット装置1は、ロボットハンド10がワークWを安定して把持できる条件の中で、できる限り高速な組立動作を実行することで生産装置としての生産性を最大限高めている。
図2は、ロボットハンド10の構成を示す図である。図2に示すように、ロボットハンド10は、ワークWを把持可能な一対のフィンガー11a,11bと、駆動力を発生するアクチュエータとしてのモータ12と、を備えている。また、ロボットハンド10は、モータ12の駆動量に応じた移動量でフィンガー11a,11bを移動させる駆動力伝達機構として、一対のリニアガイド13a,13b、一対のラックギヤ14a,14b及びピニオンギヤ15を備えている。ロボットハンド10は、フィンガー11a,11bを所定のモータ12が駆動してフィンガー11a,11bを閉じ、フィンガー11a,11bとワークWとの間の摩擦力によってワークWを把持する。
フィンガー11a,11bは、先端が長く、かつ先細りしたいわゆるピンセット状の形状を有し、ワークWを把持する場合にワークWと接触する接触部111a,111bと、ラックギヤ14a,14bに固定される固定部112a,112bとを有する。フィンガー11a,11bは、不図示のネジによって固定部112a,112bがラックギヤ14a,14bに締結固定されている。フィンガー11a,11bは、ラックギヤ14a,14bの移動に伴いワークWを把持する方向とワークWから離隔する方向とに移動する。また、フィンガー11a,11bには、フィンガー11a,11bに応力が発生した場合に、発生した応力を検出する力センサとしてのひずみゲージ113a,113bが配設されている。なお、フィンガー11a,11bに配設される力センサは、ひずみゲージに限らず、圧力センサ等、フィンガー11a,11bにかかる力を検出可能なセンサであればよい。また、本実施形態においては、ひずみゲージ113a,113bが、応力検出手段を構成する。
モータ12は、例えば3相のACサーボモータであり、ベースプレート16の下面に取り付けられており、モータ12の出力トルクを増幅するための減速機17と、モータ12の回転数及び回転角度を検出するセンサとしてのエンコーダ回路18とを有する。また、モータ12は、ハンド制御部30とハンドケーブル31を介して接続されている。
ハンドケーブル31は、エンコーダ回路18から出力される出力信号をハンド制御部30に送信するエンコーダ信号線31aと、モータ12に駆動電流を供給するモータ動力線31bと、を有している。エンコーダ信号線31aは、例えばエンコーダ回路18の電源、GND、エンコーダの出力信号のA相、B相、Z相の計5本の線から構成されている。また、モータ動力線31bは、モータ12の種類に対応した動力線であり、モータ12が例えば3相のACサーボモータである場合には、U相、V相、W相とつながる3本の動力線から構成される。また、ハンドケーブル31は、ひずみゲージ113a,113bに接続される不図示の配線も有しており、ハンドケーブル31を介してひずみゲージ113a,113bに検出された応力がハンド制御部30に入力される。
一対のリニアガイド13a,13bは、それぞれベースプレート16の上面に取り付けられ、互いに対向する面にガイド溝19a,19bを有している。一対のラックギヤ14a,14bは、ギヤの歯面と対向する面に、突起形状でリニアガイド13a,13bのガイド溝19a,19bに嵌合されるガイド突起141a,141bを有している。ガイド突起141a,141bがガイド溝19a,19bに嵌合されリニアガイド13a,13bに取り付けられることで、ラックギヤ14a,14bは、フィンガー11a,11bを接触及び離隔させる開閉方向に平行移動させることができる。
ピニオンギヤ15は、モータ12の駆動軸に取り付けられており、ラックギヤ14a,14bのギヤ歯面に噛合している。これにより、ロボットハンド10は、モータ12を駆動しピニオンギヤ15を正転及び逆転することにより、ラックギヤ14a,14bを平行移動させ、フィンガー11a,11bを開閉動作させることができる。
次に、本実施形態の制御部を構成するハンド制御部30及び制御指令部40の構成を図3に沿って説明する。ハンド制御部30は、プログラムを演算可能なCPU301と、記憶可能な記憶部として機能するメモリであるROM302及びRAM303と、を備えている。また、ハンド制御部30は、各種のインタフェース305〜308と、モータドライバ309と、を備えている。なお、CPU301、ROM302及びRAM303は、1つのワンチップマイコンに集約されたMPUによって構成されていてもよい。
CPU301には、ROM302、RAM303及び各種のインタフェース305〜308が、バス310を介して接続されている。例えば、ROM302(或いは外部記憶装置322等であってもよい)には、CPU301を動作させるための各種プログラムやフィルタのデータが格納されている。
この各種プログラムのうち、指令値変換プログラム302aは、制御指令部40から送信される制御指令をCPU301によってサーボ演算に必要なパラメータに変換するプログラムである。具体的には、制御指令部40から送信される位置、速度、把持力、把持のレベルといった制御指令を、位置、速度、電流値といったパラメータに変換する。ここで、把持のレベルによる制御指令とは、例えばロボットハンド10の最大の把持力の仕様が50Nである場合に、レベル1〜10までの10段階で指定するような制御指令である。この場合、把持のレベル1の制御指令では、把持力として5Nの制御指令を送信し、把持のレベル10の制御指令では、把持力として50Nの制御指令を送信することができる。また、各種データのうち、サーボ演算パラメータ302bは、CPU301がサーボ演算を実行する場合に必要に応じて使用されるパラメータであり、例えばモータ駆動電流を算出するために用いられるPIDゲインのパラメータ等が含まれる。このような、制御指令部40とハンド制御部30の通信は、例えば10msec毎のように周期的に常に行っても良いし、動作が必要なタイミングでのみ双方の通信が行われるようにしてもよい。通信では、制御指令部40からハンド制御部30への指令値の送信だけでなく、ハンド制御部30から制御指令部40への位置、速度、電流値等の現在値の応答も行われる。
インタフェース305には、ロボットハンド10に内蔵されているモータ12がハンドケーブル31を介して接続され、インタフェース306には、モータドライバ309が接続されている。モータ12からは、エンコーダ回路18によってモータ12の回転数と回転角度についての出力信号が送信される。CPU301は、指令値変換プログラム302aで変換したパラメータと、エンコーダ回路18から受信した出力信号と、モータ駆動電流と、を用いてサーボ演算を実行してモータドライバ309にモータ駆動信号を出力する。ここで、モータドライバ309は、モータ駆動電流の検出回路として、U相、V相、W相のハーフブリッジ回路を内蔵している。また、モータ駆動信号は、モータドライバ309に内蔵されるハーフブリッジ回路を駆動するためのPWM(Pulse Width Modulation)信号である。
モータドライバ309は、ドライバ駆動信号に従って内蔵されたハーフブリッジ回路を動作させ、モータ駆動電流をハンドケーブル31を介してモータ12に供給し、モータ12を駆動する。このように、ロボット装置1は、制御指令部40から送信される制御指令をハンド制御部30で演算し、演算結果からモータドライバ309を介してモータ12を駆動することで、フィンガー11a,11bに所望の把持力でワークWを把持させることができる。
インタフェース307には、外部記憶装置(例えば外付けHDDや不揮発性メモリなど)322が接続されている。そして、インタフェース308には、通信ケーブル41を介して制御指令部40のインタフェース406が接続されている。
制御指令部40は、プログラムを演算可能なCPU401と、記憶可能な記憶部として機能するメモリであるROM402、RAM403及びHDD404と、を備えている。また、制御指令部40は、各種のインタフェース405〜410を備えている。
CPU401には、ROM402、RAM403、HDD404及び各種のインタフェース405〜410が、バス410を介して接続されている。例えば、ROM402やHDD404(或いは外部記憶装置422等であってもよい)には、CPU401を動作させるための各種プログラムや各種制御パラメータ等のデータが格納されている。
制御指令部40は、ロボットハンド10のフィンガー11a,11b(図2参照)を開閉する制御指令をインタフェース406に接続される通信ケーブル41を介してハンド制御部30に送信し、フィンガー11a,11bを開閉動作させる。ハンド制御部30と制御指令部40との通信は、例えばパラレルI/O又はノイズ耐性が高く高速な差動シリアル通信によって行われる。
また、制御指令部40は、アームケーブル42(図1参照)によってロボットアーム20が有する不図示のアーム制御部と接続され、各関節を動作させる制御指令をアームケーブル42を介してアーム制御部に送信し、ロボットアーム20を動作させる。つまり、制御指令部40は、ロボットハンド10と、ロボットアーム20と、を制御することで、ロボットシステムとして部品の把持や組み付けを実行し、製品組立を実現することができる。ここで、制御指令部40が実行する制御内容や制御指令部40がハンド制御部30に送信する制御指令は、ロボットシステムの製品組立動作のJOBプログラムとしてユーザーによって予め設計されており、制御指令部40のメモリ内に記憶されてる。なお、ロボットアーム20は、各関節の動作をそれぞれ制御する複数のアーム制御部を有する構成であってもよい。
次に、ロボットハンド10の基本的な動作である、フィンガー11a,11bの位置を変更する制御と、フィンガー11a,11bがワークWを把持する制御と、について説明する。フィンガー11a,11bの位置を変更する制御は、主にワークWを把持する前段階でワークWとフィンガー11a,11bが干渉しないよう、フィンガー11a,11bをワークWの寸法交差以上に開く際や、把持したワークWを離す動作の際に実行される。位置を変更する際の目標となる目標位置は、ロボットハンド10の電源投入時に実行するフィンガー11a,11bの原点出し動作によって決定される指令値の基準となる位置から決定され、制御指令部40からハンド制御部30に送信される。
図4を参照して、フィンガー11a,11bの原点出し動作について説明する。図4(a)に示すように、ハンド制御部30は、フィンガー11a,11bの間にワークWがない状態で、モータ12を駆動してフィンガー11a,11bを閉じる方向にフィンガー11a,11bを動作させる。そして、ハンド制御部30は、フィンガー11a,11bの固定部112a,112bが当接し、それ以上モータ12が回転しなくなった場合におけるフィンガー11a,11bの位置を、エンコーダ回路18の出力信号から読み取る。ハンド制御部30は、エンコーダ回路18から読み取った位置を位置制御の制御上の基準(位置制御原点)としてRAM303に記憶し、指令値の基準となる位置を設定する各種処理を実行する。
ハンド制御部30は、位置制御原点を設定した後において、位置制御原点を基準にフィンガー11a,11bの位置を制御する。ハンド制御部30は、モータ12の1回転当たりのエンコーダ分解能と、ピニオンギヤ15のギヤ径と、減速機17の減速比と、から、フィンガー11a,11bを目標位置まで移動する際にエンコーダ回路18の出力する出力信号が含むパルス数を算出する。そして、ハンド制御部30は、算出したパルス数に到達するようにモータ12を回転駆動させるモータ駆動信号を出力する。
ここで、エンコーダ回路18が出力する1パルス当たりのフィンガー11a,11bの移動距離は、エンコーダ回路18の分解能と、ロボットハンド10を構成する各要素の寸法と、減速機17の減速比と、によって様々な値を設定できる。例えば、モータ1回転当たり1000パルスを発生するエンコーダ回路と、減速比50対1の減速機と、ピニオンギヤ径φ10mmと、から構成された場合、フィンガー11a,11bは、1パルス当たり約0.63μm移動する。この、エンコーダ回路18が出力する1パルス当たりのフィンガー11a,11bの位置距離は、ハンド制御部30がフィンガー11a,11bの位置を制御する際の位置制御の分解能(位置制御分解能)を構成する。
例えば、図4(b)に示すように、フィンガー11a,11bを目標位置P=1.0mmに移動する場合、ハンド制御部30は、フィンガー11a,11bの固定部112a,112bがそれぞれ位置制御原点から1mm移動するようにモータ12を駆動する。モータ12を駆動することで、ロボットハンド10は、固定部112a,112b間の距離が0mmから2mmとなる。
本実施形態においては、フィンガー11a,11bが傾斜を有し弾性変形しながらワークWを把持する構成のため、ハンド制御部30が制御するフィンガー11a,11bの位置と、フィンガー11a,11bの先端の位置と、が一致しない構成となっている。本実施形態のフィンガー11a,11bは、図4(c)に示すように先端を位置制御原点上で接触させた場合、固定部112a,112b同士の当接面から片側でPs=0.6mm位置制御原点の方向に傾斜した構造となっている。
ハンド制御部30は、制御指令部40から送信される制御指令に基づき、フィンガー11a,11bの移動速度を演算し、演算した結果からモータドライバ309を介してモータ12を駆動する。
次に、フィンガー11a,11bがワークWを把持する制御について説明する。ワークWを把持する制御は、ロボットアーム20により把持対象となるワークWとロボットハンド10の相対位置が制御され、フィンガー11a,11bの間にワークWが位置した状態で、フィンガー11a,11bを閉じてワークWを把持する際に実行される。
ここで、把持する制御には、大きく2つの方法がある。1つ目の方法は、フィンガー11a,11bの位置を指令することで実行される把持制御(把持位置制御)で、制御指令部40からフィンガー11a,11bの目標位置を指令することによって行われる。把持位置制御は、ワークWの寸法公差が既知であり、かつ柔軟性が高い場合において適用されることが多い。また、把持位置制御におけるフィンガー11a,11bの移動速度は、ワークWとフィンガー11a,11bとが接触した際に相対位置がずれないようユーザが事前に検討して設定することが好ましい。
そして、2つ目の方法は、本ロボットハンド10において実行される把持制御であり、フィンガー11a,11bの把持力を指令することで実行される把持制御(把持力制御)である。把持力制御は、制御指令部40からの把持力、把持のレベルといった制御指令をハンド制御部30で指令値に応じた速度、電流値のパラメータに変換し、モータ12を駆動することによって実行される。なお、以下の記載において、把持力制御においてハンド制御部30で計算された速度を把持速度vo[mm/sec]、電流値を把持電流Io[A]と記載する。また、フィンガー11a,11bは、1つのピニオンギヤ15を介して対称に動くため、各フィンガー11a,11bが同じ移動速度で移動する。つまり、フィンガー11a,11bの相対速度は、把持速度voの2倍となる。
把持力制御において、ハンド制御部30は、把持速度voの一定速度でフィンガー11a,11bを閉じ、フィンガー11a,11bをワークWに接触させる。フィンガー11a,11bがワークWと接触し、ワークWからの反力が発生すると、ハンド制御部30は、モータ12の駆動電流を増加させフィンガー11a,11bの移動速度を一定に保つように制御する。ここで、モータ電流が把持電流Ioに達した場合、ハンド制御部30は、駆動電流の増加を終了して駆動電流を把持電流Ioに維持するように制御する。これにより、ロボットハンド10では、ワークWからの反力によってフィンガー11a,11bの移動速度が徐々に減速する。そして、フィンガー11a,11bを押し込む力とワークWからの反力とが釣り合うことで、フィンガー11a,11bの移動速度は、最終的に0となって停止し、ワークWを把持した状態で維持される。
図5は、把持力制御を実行した場合におけるフィンガー11a,11bの移動速度の変化を表すグラフである。図5に示すように、ハンド制御部30は、モータ12を速度0の停止した状態から約20msec加速することで把持速度vo=10mm/secに達する。把持力制御を開始してから50msecまでは、把持速度voでフィンガー11a,11bを移動し、50msec以降で減速が始まる。この把持制御を開始してから50msec経過する前後において、フィンガー11a,11bは、ワークWと接触し始めている。そして、減速を開始してから約60msec経過した状態、つまり把持力制御を開始してから110msec経過した場合に、フィンガー11a,11bは、速度0になり停止する。この状態において、ワークWは、制御指令部40からハンド制御部30に送信される制御指令に基づく把持力又は把持のレベルによって把持されている。
次に、本実施形態の特徴となるロボットハンド10を備えたロボット装置1の制御方法について説明する。
本実施形態のロボット装置1は、ワークWを制御指令部40の把持力指令によって把持する際、フィンガー11a,11bの速度と位置を計測し、その計測値からフィンガー11a,11bとワークWとが確実に接触したと確認できる位置を検出する。ロボット装置1は、繰り返しの組立動作によるロボットハンド10の機構部品の径年劣化等の理由で接触したと確認できる位置が初期値から一定量以上変化した場合に、ユーザにロボットハンド10の異常を通知する。
本ロボットハンド10は、上述した通り、ピンセット形状のフィンガー11a,11bを備えているため、繰り返しの組立動作によってフィンガー11a,11bに塑性変形が生じやすい。また、ロボットハンド10の小型化のために、フィンガー11a,11bも小型化されており、固定部112a,112bをラックギヤ14a,14bに締結固定するネジも小型化し、締結力が低下している。そのため、フィンガー11a,11bの固定部112a,112bは、繰り返しの組立動作によってネジに緩みが生じ、ひいてはフィンガー11a,11bに緩みを生じやすくなっている。
フィンガー11a,11bに塑性変形や緩みが生じていない正常な状態においては、図6(a)に示すように、フィンガー11a,11bを接触させると接触部111a,111bの先端でフィンガー11a,11bは接触する。この状態でワークWを把持させた場合、フィンガー11a,11bとワークWとの接触面積は、接触面積Saとなる。
一方、フィンガー11a,11bに塑性変形が生じた状態又は固定部112a,112bに緩みが生じた状態の少なくとも一方になった場合には、図6(b)に示すように、フィンガー11a,11bを接触させると接触部111a,111bの先端が離隔する。この状態でワークWを把持させた場合、フィンガー11a,11bとワークWとの接触面積は、接触面積Saよりも小さい接触面積Sbとなる。このように接触状態が変化することは、初期状態で実現したフィンガー11a、11bによるワークWの安定な把持が崩れ、把持失敗を起こす要因になりうる。
また、固定部112a,112bが緩みフィンガー11a,11bが傾いた状態でワークWを把持した場合には、制御指令部40からの制御指令に基づきモータ12が駆動することによって生じる把持力がワークWに正確に伝わらない虞がある。
フィンガー11a,11bに塑性変形や緩みが生じていない正常な状態においては、図7(a)に示すように、フィンガー11a,11bを平行に閉じてワークWを把持することができる。この場合、ロボットハンド10は、制御指令部40から指令される把持力Fa[N]によって、ワークWを把持することができる。一方、固定部112a,112bが緩みフィンガー11a,11bがθ°傾いた状態でワークWを把持した場合には、図7(b)に示すように、ワークWに伝わる把持力Fbが、Fb=F・sin(π/2−θ)[N]となる。つまり、フィンガー11a,11bが傾いた状態でワークWを把持した場合、ロボットハンド10は、把持力のロスを生じ、初期状態で実現したフィンガー11a、11bによるワークWの安定な把持が崩れ、把持失敗を起こす要因になりうる。
ロボットハンド10の把持力制御は、初期の理想的な把持状態をベースに把持力の指令値や、把持力の指令値を基に計算される把持速度及び把持電流のパラメータ換算式が設計されている。そのため、ロボットハンド10の把持力制御においては、フィンガー11a,11bの経時変化によって設計の前提である初期の把持状態が崩れるとフィンガー11a,11bの間でワークWのずれや落下といった把持の失敗が発生するリスクが高まる。
これらのフィンガー11a、11bによるワークWの把持失敗を起こす要因の発生を防止するために、本ロボット装置1は、以下に示すユーザにロボットハンド10が把持失敗する可能性が高まっていることを通知する制御処理を実行する。通知によってロボットハンド10の交換やメンテナンスが実施されることで、ロボット装置1は、ロボットハンド10の把持失敗による組立トラブルを未然に防止可能となる。
図8は、本実施形態のロボットハンド10がワークWを把持する場合にハンド制御部30が実行する把持力制御と、ロボットハンド10が安定して繰り返しワークWを把持できるか否かを判定する把持判定制御と、を示すフローチャートである。本実施形態においては、図8に示すユーザが予め設定したロボットハンド制御プログラムをハンド制御部30と制御指令部40とに実行させることで、把持力制御と把持判定制御とが実行される。把持力制御と把持判定制御とは、それぞれユーザが予め設定したロボットハンド制御プログラムに従って実行される。把持力制御は、ロボットハンド10のフィンガー11a,11bの間に、把持対象となるワークWが位置するようにロボットハンド10及びロボットアーム20の位置が制御され、ワークWを把持する以前と、ワークWを把持した状態と、で実行される。また、把持判定制御は、把持力制御の実行中に記録するフィンガー11a,11bの位置と、フィンガー11a,11bの速度と、を用いて、把持力制御の実行後に実行される。なお、上述した通り、ハンド制御部30は、位置制御原点からフィンガー11a,11bの固定部112a,112bの一方までの距離を計算するように構成されている。以下の記載において、フィンガー11a,11bの位置とは、位置制御原点から固定部112a,112bの一方までの距離を意味する。
まず、ハンド制御部30は、制御指令部40からの制御指令を受信したタイミングで、フィンガー11a,11bの位置Pと速度vとのデータの記録を開始する(S11)。上述した通り、ハンド制御部30は、制御指令部40から制御指令を受信することで、モータドライバ309を介してモータ12を駆動し、フィンガー11a,11bにワークWを把持させる把持力制御を開始する。そして、ハンド制御部30は、把持力制御の開始時から、ワークWの把持を完了する把持力制御の終了時までの間、フィンガー11a,11bの位置Pと速度vとのデータの記録を継続する。
フィンガー11a,11bの位置Pと速度vとのデータは、ハンド制御部30でエンコーダ回路18からの出力信号を一定周期で読み込むことで取得される。ハンド制御部30が読み込んだ位置Pと速度vとのデータは、ハンド制御部30と制御指令部40との通信周期T(例えばT=10msec周期)に同期させてハンド制御部30から制御指令部40へ送信する。そして、制御指令部40は、記憶部としてのROM402やRAM403に、ハンド制御部30が記録したフィンガー11a,11bの位置Pと速度vとのデータを保存する。ここで、フィンガー11a,11bの位置Pは、エンコーダ回路18の出力信号に含まれるパルス数から位置制御原点を基準に計算することができる。また、フィンガー11a,11bの速度vは、単位時間当たりのエンコーダ回路18からの出力信号に含まれるパルス数から計算することができる。つまり、本実施形態においては、エンコーダ回路18が速度検出手段を構成している。なお、ハンド制御部30と制御指令部40との通信周期Tの設定方法については、後述する。
次に、ハンド制御部30は、制御指令部40からの制御指令に基づく把持力でワークWを把持し(S12)、把持が完了したか否かを判定し(S13)、把持が完了するまで(S13でNo)ステップS12の処理を継続する。本実施形態において、ハンド制御部30は、制御指令部40から把持電流Io=500[mA]、把持速度vo=10[mm/sec]でモータ12を駆動させる制御指令(把持指令値)を受信する。また、本実施形態において、フィンガー11a,11bによって把持されるワークWは、厚さ約50μmのフレキシブルケーブルとしている。
ステップS12,S13の処理の実行時において、ハンド制御部30は、上述した通り、まず把持速度voでフィンガー11a,11bをワークWと接触させる。そして、ハンド制御部30は、フィンガー11a,11bの移動速度が減速し始めた場合に、把持電流Ioでモータ12を駆動して、フィンガー11a,11bをワークWに押し込む。このように、複数のフィンガー11a,11bを閉じる方向に移動させるステップS12の処理は、本実施形態における閉動作工程を構成する。また、把持速度voは、フィンガー11a,11bがワークWと接触しフィンガー11a,11bの移動が妨げられることにより変動する変動値を構成する。
フィンガー11a,11bを押し込む力とワークWからフィンガー11a,11bが受ける反力とが釣り合い、フィンガー11a,11bの移動速度が0mm/secになった場合、ハンド制御部30は、把持が完了したと判定する(S13でYes)。ステップS13の処理において、ハンド制御部30は、例えば10msec毎にフィンガー11a,11bの位置Pを記録している場合、3回連続して同じ位置Pを検出したことを条件に把持が完了したと判定する。そして、ハンド制御部30は、把持が完了したと判定した場合に(S13でYes)、ワークWを把持しているフィンガー11a,11bの位置Pと速度vとのデータを記録することを終了する(S14)。
把持力制御におけるフィンガー11a,11bの位置Pと速度vとの変化を図9に示す。図9(a)は、把持力制御の実行時におけるフィンガー11a,11bの位置Pの変化を示すグラフである。また、図9(b)は、把持力制御の実行時におけるフィンガー11a,11bの速度vの変化を示すグラフである。図9(a)、図9(b)の横軸は、ともに時間t[msec]であり、それぞれの時間軸において同期して示されている。また、図9(a)の縦軸は、ロボットハンド10の位置制御原点を基準にしたフィンガー11a,11bの固定部112a,112bの片側の位置である。
図9における実線で示されたデータは、ロボットハンド10の使用開始直後、つまり1回目の把持力制御の実行時におけるフィンガー11a,11bの位置Pと速度vとの時間毎の変化を示している。また、点線で示されたデータは、ロボットハンド10を長期使用し350万回目の把持力制御の実行時におけるフィンガー11a,11bの位置Pと速度vの時間毎の変化を示したものである。
図9(a)に示すように、本実施形態のハンド制御部30は、位置制御原点から固定部112a,112bの片側が約1mmの位置にある状態から把持力制御を開始する。そして、ハンド制御部30は、位置制御原点から固定部112a,112bの片側が約0.21mmの位置にある状態でフィンガー11a,11bを停止している。このとき、固定部112a,112b間の距離は、約0.42mmとなっている。また、フィンガー11a,11bは、接触部111a,111bがワークWと接触し、フィンガー11a,11bの押しつけ力によってフィンガー11a,11b自体が弾性変形した状態でワークWから受ける反力と釣り合ってワークWを把持している。
続いて、制御指令部40が、把持判定制御を開始する。まず、制御指令部40は、RAM403に記録したフィンガー11a,11bの位置Pと速度vとのデータを用いて、フィンガー11a,11bとワークWとが接触し、把持速度voから減速し始めた減速開始位置Pc[mm]を算出する(S15)。なお、以下の記載において、n回目の把持力制御の実行時における減速開始位置をPc(n)と記載する。例えば、Pc(1)は、1回目の把持力制御の実行時、つまりフィンガー11a,11bが初めてワークWを把持した場合における減速開始位置を示す。また、減速開始位置Pc(n)は、本実施形態における検出位置を構成する。
減速開始位置を判定するためには、把持速度voから減速を開始したと判定するための基準となる予め設定した値が必要である。本実施形態においては、予め設定した値としての減速判定速度vl[mm/sec]が、予めユーザに決定され制御指令部40のROM402に保存されている。
本実施形態において、ハンド制御部30は、把持速度voになるようにモータ12を制御するが、モータドライバ309の制御能力によって数パーセントの速度変動が現れることがある。図9(b)に示すグラフにおいて、t=20〜50msecの区間に現れている把持速度voの変化が、モータドライバ309の制御能力に由来する速度変動である。このため、減速判定速度vlを設定する場合には、モータドライバ309の制御能力に由来する速度変動をワークWに接触したことによる減速と誤検出しないような値に設定する必要がある。一方で、速度変動を誤検出しないように把持速度voから大きく減速した値を減速判定速度vlに設定すると、フィンガー11a,11bがワークWを把持し始めても把持が開始されたと判定することができなくなる。このため、減速判定速度vlは、誤検出しない範囲で高めの値に設定することが好ましく、予めロボットハンド10の性能評価を実行し速度変動を様子を確認して、誤検出しない範囲の高めの値に設定する。本実施形態においては、図9(b)に示すように、速度変動によって把持速度vo=9[mm/sec]となることはないことから、減速判定速度vl=9[mm/sec]に設定した例を用いて、以下の説明を行う。
減速判定速度vl=9.0[mm/sec]が設定されているとすると、1回目の把持力制御の実行時においては、図9(b)のグラフ(実線)に示すように、t=64msec時に把持速度voから減速判定速度vlまで減速したと判定される。そして、図9(a)のグラフ(実線)に示すように、制御指令部40は、t=64msec時におけるフィンガー11a,11bの位置PであるP=0.43mmの位置を、減速開始位置Pc(1)としてROM402に記憶する。
また、350万回目の把持力制御の実行時においては、図9(b)のグラフ(点線)に示すように、t=70msec時に把持速度voから減速判定速度vlまで減速したと判定される。そして、図9(a)のグラフ(点線)に示すように、制御指令部40は、t=70msec時におけるフィンガー11a,11bの位置PであるP=0.37mmの位置を、減速開始位置Pc(3500000)としてROM402に記憶する。このように、把持速度voが減速判定速度vlとなった場合のフィンガー11a,11bの位置である減速開始位置Pcは、本実施形態における検出位置を構成する。
ここで、350万回目の把持力制御の実行時においては、初期状態における減速開始位置Pc(1)よりフィンガー11a,11bが約0.08mm位置制御原点に近づいていることがわかる。繰り返しワークWを把持することで減速開始位置Pcが位置制御原点に近づく原因は、フィンガー11a,11bの経時変化によるものがある。経時変化の具体的な内容としては、例えば、固定部112a,112bのラックギヤ14a,14bへの固定の緩みと、フィンガー11a,11bの塑性変形と、がある。固定部112a,112bの固定に緩みが生じた場合には、ワークWと接触部111a,111bが接触した際にフィンガー11a,11bがワークWから離隔する現象が発生する可能性がある。また、度重なるワークWの把持によりフィンガー11a,11bがワークWから離隔する方向に塑性変形を起こしている場合には、図7(b)に示すようにフィンガー11a,11bの先端が外に広がる。塑性変形したフィンガー11a,11bによってワークWを把持した場合、ハンド制御部30は、フィンガー11a,11bの先端が外に広がっていることから、ワークWを把持するためにフィンガー11a,11bを位置制御原点により近づけるようになる。このため、フィンガー11a,11bに塑性変形が生じた場合には、初期値より小さい値の減速開始位置Pcが検出されるようになる。
なお、減速開始位置Pcを検出する際において、把持対象のワークWは、図4(c)に示す位置制御原点上の把持中心に位置していることが好ましい。重量のあるワークWを把持中心からずれた位置で把持する場合、ロボットハンド10においては、フィンガー11a,11bとワークWとの接触位置がずれ、減速開始位置Pcに影響を与え測定値のばらつきの原因になることがある。なお、ワークWが軽量の部品である場合には、フィンガー11a,11bとワークWとの接触位置にずれを生じにくいため、ワークWの位置を考慮する必要性が低減する。
把持力制御の実行時におけるワークWの位置を管理できない場合、制御指令部40は、ロボットハンド10で把持したワークWをロボットアーム20で移動させてからフィンガー11a,11bを開きワークWを離させる。ワークWを把持した後に離すことにより、制御指令部40は、ロボットハンド10の把持中心にワークWを位置させることができる。そして、制御指令部40は、ワークWを離した後にその位置で再度ワークWを把持することで、ワークWを把持中心で把持した状態で把持力制御をハンド制御部30に実行させることができる。
このように、把持速度voが減速判定速度vlとなった場合のフィンガー11a,11bの位置を減速開始位置Pcとして検出するステップS15の処理は、本実施形態における位置検出工程を構成する。
次に、制御指令部40は、ロボットハンド10の初期状態における減速開始位置Pcoと、今回の把持力制御の結果検出された減速開始位置Pc(n)と、の差であるΔPcを計算する(S16)。ここで、ロボットハンド10の初期状態における減速開始位置Pcoは、1回目の把持力制御における減速開始位置Pc(1)と同じ値に設定されている。つまり、初期状態における減速開始位置Pcoは、位置検出工程であるステップS15の処理の初回実行時に検出した減速開始位置に設定されている。この初期状態における減速開始位置Pcoが、本実施形態における基準となる基準位置を構成する。また、ステップS15の処理の初回実行時に初期状態における減速開始位置Pcoを設定するステップS16の処理は、本実施形態における初回設定工程を構成する。
ステップS16の処理において、制御指令部40は、ΔPcを求める計算式として、ΔPc=Pco−Pc(n)に初期状態における減速開始位置Pcoの値と、今回の把持力制御の結果検出された減速開始位置Pc(n)の値と、を代入し、ΔPcを算出する。このように、基準位置である初期状態おける減速開始位置Pcoと、検出位置である減速開始位置Pc(n)と、を比較することで検出されるΔPcは、本実施形態における差分を構成する。また、減速開始位置Pc(n)と初期状態における減速開始位置Pcoとを比較し差分であるΔPcを検出するステップS16の処理は、本実施形態における差分検出工程を構成する。なお、以下の記載において、ΔPcを変化量ΔPcとも記載する。
ここで、上述した通り、減速開始位置Pc(n)は、把持力制御の実行回数が多くなる程フィンガー11a,11bの経時変化により位置制御原点に近寄るようになっている。つまり、本実施形態のロボットハンド10は、把持力制御の実行回数が多くなる程変化量ΔPcの値が大きくなる。変化量ΔPcが一定値以上に大きくなった場合、ロボットハンド10では、フィンガー11a,11bとワークWとの接触状態が初期状態から変わってしまっている。そのため、ロボット装置1では、変化量ΔPcを検出し、予め設定した閾値と比較することで、把持の失敗が発生するリスクが一定以上に高まったことをユーザに通知する。
ステップS16の処理を実行した後、制御指令部40は、予め設定した閾値と比較し、ユーザに報知するか否かを判定する処理を実行する。制御指令部40は、ステップS16で算出した変化量ΔPcと、ユーザへの通知を実施するか否かを判定する基準となる予め設定された閾値である通知判定値ΔPlと、を比較する(S17)。この処理において、変化量ΔPcが通知判定値ΔPlよりも大きいと判定した場合には(S17でYes)、制御指令部40は、ユーザにロボットハンド10の交換やメンテナンスを行うことを通知する通知処理を行い(S18)、把持判定制御を終了する。一方、変化量ΔPcが通知判定値ΔPl以下である判定した場合には(S17でNo)、制御指令部40は、通知処理を行うことなく把持判定制御を終了する。なお、本ロボット装置1は、ステップS18に示す通知処理の実行の有無によらず、把持判定制御の実行後も製品組立を継続して実行する。
ここで、通知判定値ΔPlの値は、予めユーザが決定しておく必要がある。通知判定値ΔPlを決定する方法は、例えば実際にフィンガー11a,11bの固定部112a,112bの緩みやフィンガー11a,11bの先端に変形が発生した状態で、把持の失敗が起こる条件を実験的に求めて決定する方法がある。また、図9(b)に示すように、フィンガー11a,11bがθ°傾いた状態において計算される把持力の低下量と、フィンガー11a,11bがθ°傾いた状態における減速開始位置Pcの変化量ΔPcと、をまず計算で求める。そして、許容される把持力低下の下限から通知判定値ΔPlを計算で求めてもよい。
なお、通知判定値ΔPlは、予め設定した後に、更新可能に構成されていてもよい。通知判定値ΔPlを更新する方法は、まず、変化量ΔPcのデータを繰り返される製品組立が終了した場合に消去せず、組立回数分のデータとして蓄積する。そして、ロボットハンド10がワークWを把持失敗した際の変化量ΔPcのデータを用い、組立回数と把持失敗した際の変化量ΔPcとの相関性から、より最適な通知判定値ΔPlに更新をかけるようにすればよい。
把持判定制御における減速開始位置Pcと変化量ΔPcとの変化を図10に示す。図10(a)は、把持判定制御の実行時におけるフィンガー11a,11bの減速開始位置Pcの変化を示すグラフである。また、図10(b)は、初期状態における減速開始位置Pcoと、各把持判定制御の実行時における減速開始位置Pcと、の差分である変化量ΔPcの変化を示すグラフである。図10(a)、図10(b)の横軸は、ともに把持回数x[万回]であり、それぞれの把持判定制御の実行回数において同期して示されている。また、図10(b)に示すように、本実施形態においては、通知判定値ΔPlをΔPl=0.2mmに設定している。
図10(b)に示すように、本ロボットハンド10においては、約420万回把持力制御を実行しフィンガー11a,11bによってワークWを把持した場合に、変化量ΔPcが通知判定値ΔPlを上回る。上述した通り、変化量ΔPcが通知判定値ΔPlを上回った場合、制御指令部40は、通知処理を実行しユーザにロボットハンド10のメンテナンス又は交換の実施を指示する通知を行う。ユーザに通知する手段としては、表示装置423又はネットワーク424を利用して行う。また、ユーザ自らが制御指令部40の入力装置425から操作することでΔPcの値を定期的に確認し、変化量ΔPcが通知判定値ΔPlを上回ったことを把握できるようにしてもよい。
このように、変化量ΔPcが通知判定値ΔPlを超えた場合にユーザに通知するステップS17,S18の処理は、本実施形態における通知工程を構成する。
次に、ハンド制御部30と制御指令部40との通信周期Tの設定方法について説明する。本実施形態においては、通知判定値ΔPlとに対して変化量ΔPcを判定可能な精度で検出できる範囲に、通信周期Tを設定する必要がある。本実施形態においては、フィンガー11a,11bとワークWの接触位置を高精度に検出する必要はなく、ある一定の検出方法、位置基準で検出された減速開始位置Pcの、初期状態からの平均的かつ相対的な変化に着目している。そのため、ハンド制御部30と制御指令部40とを高速なサンプリング周期で通信させる必要なく。検出誤差が最低でも通知判定値ΔPlの半分以下になるようなサンプリング周期で通信するようにロボット装置1の通信システムを構築すればよい。
本実施形態では、ハンド制御部30と制御指令部40との通信周期TをT=10[msec]として設定している。この通信周期Tは、制御指令部40からみた、フィンガー11a,11bの位置Pと速度vとのデータのサンプリング周期といえる。減速判定速度vl=9[mm/sec]である場合、サンプリング周期10msec間にフィンガー1a,11bが移動する距離は、0.09mmとなる。つまり、フィンガー11a,11bの移動速度が減速判定速度vlを下回った場合におけるフィンガー11a,11bの位置Pを検出する場合に、サンプリングが実行されるタイミングによって最大で±0.09mm内の検出誤差が発生することを意味する。本実施形態における通知判定値ΔPlは、ΔPl=0.2[mm]であることから、±0.09mmの検出誤差は許容範囲内となる。
なお、長期間にわたって減速開始位置Pcの相対的な変化を同じ基準で比較するために設定される位置制御基準の変化は、通知判定値ΔPlに対して十分小さくなるように考慮されなければならない。位置制御原点は、ロボットハンド10への電源オンの度にフィンガー11a,11bの原点出し動作が実施されて設定されるが、上述した通り、フィンガー11a,11bの支点となる固定部112a,112bを当接させることで実行される。フィンガー11a,11bの接触部111a,111bよりも形状変化し難い固定部112a,112bを接触させて設定されるため、原点出し動作毎に設定される位置制御原点のばらつきは、接触部111a,111bの形状変化に対して十分小さいといえる。
以上のように、本実施形態に係るロボットハンド10の制御方法では、把持力制御の実行時において記録したフィンガー11a,11bの位置Pと速度vとのデータから、減速開始位置Pcを検出する。次いで、ロボットハンド10の制御方法では、把持判定制御を開始し、検出した減速開始位置Pcと初期状態における減速開始位置Pcoとを比較し、差分である変化量ΔPcを検出する。そして、ロボットハンド10の制御方法では、変化量ΔPcが予め設定された閾値である通知判定値ΔPlを超えた場合に、ユーザに通知を行うことで、把持判定制御を終了する。つまり、本実施形態に係るロボットハンド10の制御方法を用いることで、ロボット装置1は、検出位置と基準位置との差分が予め設定された閾値を超えた場合に通知することで、安定したワークWの把持が実現できない虞がある場合に通知可能となる。ロボット装置1は、ユーザに通知することでロボットハンド10の交換やメンテナンスをユーザに実行させることができる。そのため、本実施形態に係るロボットハンド10の制御方法を用いたロボット装置1は、ワークWの把持失敗を未然に防止し、安定したワークWの把持が実現可能となる。
なお、本実施形態において、制御指令部40は、初期状態における減速開始位置Pcoから検出された減速開始位置Pc(n)を減算することで差分である変化量ΔPcを検出しているが、変化量ΔPcの検出方法はこれに限定されない。制御指令部40は、例えば、初期状態における減速開始位置Pcoと検出された減速開始位置Pc(n)との比率から変化量ΔPcを決定してもよい。また、減速開始位置Pc(n)が減速開始位置Pcoに対して何%の値となっているかに基づき変化量ΔPcを決定してもよい。
また、本ハンド制御部30は、原点出し動作の実行時において、フィンガー11a,11bの固定部112a,112bを当接させる方向にフィンガー11a,11bを移動させるが、これに限定されない。ハンド制御部30は、原点出し動作を実行する場合に、フィンガー11a,11bを開く方向に移動させて、フィンガー11a,11bを開く方向への移動を規制する規制部材と当接した位置を位置制御原点に設定してもよい。また、ロボットハンド10は、アブソリュートエンコーダなどの回転角度に応じた位置を検出可能なセンサを用いて位置制御原点を設定してもよい。
また、本ハンド制御部30は、制御指令部40から送信される制御指令に基づきフィンガー11a,11bの移動速度を演算するように構成されているが、これに限定されない。ハンド制御部30は、制御指令部40からの速度指令がない場合に、ロボットハンド10の性能から予め設定できる上限速度でフィンガー11a,11bを移動させるように制御してもよい。また、制御指令部40とハンド制御部30との通信が周期的に常に行われる通信仕様の場合、ハンド制御部30は、通信周期毎のフィンガー11a,11bの移動量をフィンガー11a,11bの速度に規定してもよい。例えば、通信周期が10msecである場合、ハンド制御部30は、次の目標位置を現在位置プラス100μmとするように制御し続けることで、フィンガー11a,11bを1mm/secで移動する制御を実行することとなる。
また、本実施形態においては、1回目の把持力制御における減速開始位置Pc(1)をロボットハンド10の初期状態における減速開始位置Pcoに設定しているが、初期状態における減速開始位置Pcoの設定は、これに限定されない。初期状態における減速開始位置Pcoは、例えば、ロボットハンド10の使用開始直後から所定回数以内のm回分のPc(1)〜Pc(m)の平均値に設定してもよい。このように構成した場合、m回目のステップS16の処理が減速開始位置Pcoを設定する平均設定工程を構成する。また、ロボットハンド10の出荷前に初期状態における減速開始位置Pcoを設定するために把持力制御を実行し、該把持力制御における減速開始位置を初期状態における減速開始位置Pcoに設定してもよい。また、フィンガー11a,11bの設計時の形状に依存するフィンガー11a,11bが位置制御原点方向に移動可能な移動量の設計値と、ワークWの寸法と、から計算して初期状態における減速開始位置Pcoを設定してもよい。
また、本実施形態において、制御指令部40は、毎回の把持判定制御において変化量ΔPcと通知判定値ΔPlとを比較するように構成されているが、これに限定されない。制御指令部40は、把持力制御及び把持判定制御を複数回(例えば10回〜20回)実行し、各把持判定制御において検出した各変化量ΔPcの平均値と通知判定値ΔPlとを比較するように構成されていてもよい。このように構成した場合、制御指令部40は、ロボットハンド10の把持動作毎の挙動のばらつきや、ワークWの寸法公差のばらつきによる変化量ΔPcの変動による影響を低減できる。つまり、制御指令部40は、変動によって変化量ΔPcが通知判定値ΔPlを超えたと誤検出する確率を低減することができる。
また、本実施形態においては、繰り返し実行する作業工程において1種類のワークWを把持するように例を用いて説明したが、これに限定されない。ロボットハンド10が複数種類のワークを把持する場合であっても、本発明のロボット装置の制御方法を適用することができる。ロボットハンド10が複数種類のワークを把持する場合、制御指令部40は、把持するワーク種類毎に個別の通知判定値ΔPlを設定し、ワークの種類毎に検出された変化量ΔPcと比較を行うように構成されていればよい。
また、本実施形態において、制御指令部40は、1つの通知判定値ΔPlを設定しているが、これに限定されない。制御指令部40は、通知判定値ΔPlを複数種類設定しておき、変化量ΔPcが上回った通知判定値ΔPlによって実行する制御処理を変えるように構成されていてもよい。例えば、通知判定値として第1通知判定値ΔPl1と、第1通知判定値Pl1よりも大きい値である第2通知判定値ΔPl2とを制御指令部40に設定する。そして、制御指令部40は、変化量ΔPcが第1通知判定値ΔPl1を超えた場合には、ユーザに通知するだけでロボット装置1による製品の組立を継続する、いわゆるアラートを実行するにとどめる。また、制御指令部40は、変化量ΔPcが第2通知判定値ΔPl2を超えた場合には、エラーが発生した場合と同様に、ユーザに通知するとともに、ロボット装置1の組立を停止するようにしてもよい。
ここで、変化量ΔPcが第2通知判定値ΔPl2を超える場合には、ロボットハンド10がワークWやロボット装置1の周囲の構造物等に衝突しロボットハンド10に大きな負荷がかかり、フィンガー11a,11b等に激しい変形が生じた場合がある。このような場合においては、即座にロボット装置1による製品の組立を停止しないと組立不良が発生してしまう程の深刻な把持状態の変化が発生し得る。通知判定値ΔPlを複数種類設定可能に構成することで、制御指令部40は、フィンガー11a,11bが激しく変形した状態で把持力制御が実行された場合に、直ちにロボット装置1による製品の組立を停止することができる。
また、本実施形態の制御指令部40は、変化量ΔPcが0以上である場合において、通知判定値ΔPlと比較しロボットハンド10に異常が生じているか否かを判定できるように構成されているが、これに限定されない。制御指令部40は、変化量ΔPcが0未満である場合に、ユーザにロボットハンド10に異常が生じていることを通知するように構成されていてもよい。ここで、変化量ΔPcが0未満となる場合としては、例えば、ロボットハンド10がワークWやロボット装置1の周囲の構造物等に衝突することで、フィンガー11a,11bがワークWを把持する方向(閉方向)に変形した場合がある。変化量ΔPcが0未満である場合にユーザに通知するように構成することで、制御指令部40は、フィンガー11a,11bが閉方向に変形した状態でワークWを把持し安定したワークWの把持が崩れる可能性が高くなっていることをユーザに通知できる。
また、本実施形態において、制御指令部40は、毎回の把持力制御の実行時に図8に示すステップS15〜S18の処理である把持判定制御を実行し、変化量ΔPcを測定するように構成されているが、これに限定されない。制御指令部40は、何百万回繰り返し実行される把持動作の中で生じる経時変化を確認できれば十分であることから、繰り返し実行する把持力制御を一定の回数実行する毎に把持判定制御を実行するように構成されていてもよい。具体的には、制御指令部40は、例えば10回の把持力制御を実行する毎に1回の把持判定制御を実行するように構成してもよい。このように構成した場合、制御指令部40は、フィンガー11a,11bが10回ワークWを把持する毎に変化量ΔPcの測定と、変化量ΔPcと通知判定値ΔPlとの比較と、を実行する。把持判定制御の実行回数を削減することで、制御指令部40は、ワークWの把持時における制御負荷を軽減することができる。また、制御指令部40は、衝突等でロボット装置1に異常が生じ停止した後に復帰した際に、ワークWを安定して把持しているかを確認するために、毎回の把持力制御の実行時にステップS15,S16の処理を実行し、変化量ΔPcを測定してもよい。
また、本実施形態において、制御指令部40は、ワークWの位置を管理できない場合に、一度ワークWを把持した後にワークWを離し、再度ワークWを把持することでワークWを把持中心に位置させたが、把持中心に位置させる方法は、これに限定されない。制御指令部40は、例えばロボットハンド10とロボットアーム20との間に、ロボットハンド10への外部応力を検出する力覚センサを配設し、該力覚センサを用いることでワークWを把持中心に位置させてもよい。具体的には、ワークWを把持し減速開始位置Pcを検出する際にワークWが把持中心から大きくずれている場合には、フィンガー11a,11bのいずれか一方とワークWとが先に接触するため、ワークWから受ける反力が力覚センサの検出値に現れる。そのため、力覚センサの検出値をモニタし、予め設定した位置ずれ判定値を超えた場合には、ワークWが把持中心からずれた位置にあると判定することができる。この場合、ステップS16以降の処理を中止するように構成することができ、検出誤差が大きいと推測される減速開始位置Pcを判定データから除外できるため、ステップS17で誤った判定をする可能性を低減できる。
また、本実施形態において、ロボットハンド10は、2本のフィンガー11a,11bを備えているが、フィンガーの本数は2本に限定されず、2本以上であってもよい。
また、本実施形態においては、製品の組立の際に実行する把持力制御を利用して減速開始位置Pcを検出し、把持判定制御を実行しているが、これに限定されない。制御指令部40は、フィンガー11a,11b間にワークWがない状態で、フィンガー11a,11b同士を接触させて減速開始位置Pcを検出し、把持判定制御を実行するように構成されていてもよい。このように構成した場合、制御指令部40は、ロボット装置1が本来の組立で実行しない不要な把持動作を実行させるというデメリットがある。しかしながら、制御指令部40は、ワークWの寸法のばらつきの影響を受けることなく減速開始位置Pcを検出できる。また、ワークWが不要であることから、制御指令部40は、把持力制御の実行時におけるワークWとフィンガー11a,11bとの相対位置のばらつきの影響も考慮する必要が無くなる。これらにより、制御指令部40は、より高い精度で把持判定制御を実行することができる。また、このように構成した場合、フィンガー同士を接触させる処理が閉動作工程を構成する。また、このように構成した場合、フィンガー同士を接触させて減速開始位置Pcを検出する処理は、把持力制御を一定の回数実行する毎に実行するようにしてもよい。
また、制御指令部40は、フィンガー11a,11b間に寸法が予め高い精度で分かっている検査用ワークを配置し、フィンガー11a,11bに検査用ワークを把持させて減速開始位置Pcを検出し、把持判定制御を実行するように構成されていてもよい。このように構成した場合、制御指令部40は、ロボット装置1が本来の組立で実行しない不要な把持動作を実行させるというデメリットがある。しかしながら、制御指令部40は、ワークWの寸法のばらつきの影響を受けることなく減速開始位置Pcを検出できる。また、製品組立時に把持するワークWの厚みを検査用ワークで再現できるため、制御指令部40は、フィンガー11a,11bの形状とワークWの形状とを実際の把持に合わせた条件で減速開始位置Pcを検出できる。これらにより、制御指令部40は、より高い精度で把持判定制御を実行することができる。
また、本実施形態においては、制御指令部40がハンド制御部30から通信周期毎に減速開始位置Pcの検出に必要な情報を吸い上げ、図8のステップS15〜S19に示す把持判定制御を制御指令部40内で行っているが、これに限定されない。ロボット装置1は、ハンド制御部30に減速判定速度vl、初期状態における減速開始位置Pco及び通知判定値ΔPlを予め設定して、ステップS11〜S19の把持力制御及び把持判定制御の全てをハンド制御部30で処理してもよい。このように構成した場合、ロボット装置1は、ステップS19で変化量ΔPcが通知判定値ΔPlを超えた場合にのみエラーやアラートとして制御指令部40に通知することも可能である。
また、把持するワークWが複数種類ある場合には、ワークWの種類毎の減速判定速度vl、初期状態における減速開始位置Pco及び通知判定値ΔPlをハンド制御部30に設定すればよい。そして、ロボット装置1は、制御指令部40からハンド制御部30へ送信する制御指令のパラメータの中に、把持対象のワークWの種別を追加して送信するように構成すればよい。
このように構成した場合、ロボット装置1は、ハンド制御部30と制御指令部40との間で常に通信するシステム構成でなくとも本実施形態のロボットハンド装置の制御方法を実現することも可能である。また、このように構成した場合、ハンド制御部30のCPU301で、減速開始位置Pcを検出することで、ハンド制御部30と制御指令部40との通信周期Tによらず、CPU301の制御周期で高精度に減速開始位置Pc検出することも可能となる。
また、本実施形態において、制御指令部40は、接触状態変化量ΔPcを、エンコーダ回路18から出力される出力信号を用いて、フィンガー11a,11bの移動速度の減速開始位置Pcの変化から計算し求めているが、これに限定されない。制御指令部40は、他のセンサをロボットハンド10に追加し、追加したセンサによって検出できる値を用いて把持判定制御を実行してもよい。例えばフィンガー11a,11bにひずみゲージや圧力センサのようなフィンガー11a,11bにかかる力を検出した場合、制御指令部40は、力センサによって検出されるフィンガー11a,11bに係る力に基づき把持判定制御を実行することができる。
[変形例]
以下に、把持判定制御をフィンガー11a,11bに係る力に基づき実行する変形例の詳細について記載する。図11は、把持力制御におけるフィンガー11a,11bの位置Pと、フィンガー11a,11bに配設したひずみゲージ113a,113bが検出するフィンガー11a,11bに発生する応力Fと、の変化を示したグラフである。図11(a)は、把持力制御の実行時におけるフィンガー11a,11bの位置Pの変化を示すグラフである。また、図11(b)は、把持力制御の実行時においてワークWからの反力を受けることでフィンガー11a,11bに発生する応力Fの変化を示すグラフである。図11(a)、図11(b)の横軸は、ともに時間t[msec]であり、それぞれの時間軸において同期して示されている。
制御指令部40は、フィンガー11a,11bの位置Pと、フィンガー11a,11bに発生した応力Fと、のデータを用いて、フィンガー11a,11bとワークWとが接触し、ワークWからの反力を受け始めた接触開始位置Ppを算出する。なお、以下の記載において、n回目の把持力制御の実行時における接触開始位置をPp(n)と記載する。例えば、Pp(1)は、1回目の把持力制御の実行時、つまりフィンガー11a,11bが初めてワークWを把持した場合における接触開始位置を示す。また、接触開始位置Pp(n)は、本実施形態における検出位置を構成する。
接触開始位置を判定するためには、応力Fが発生したと判定するための基準となる予め設定した値が必要である。本変形例においては、予め設定した値としての接触判定値Fl[N]が、予めユーザに決定され制御指令部40のROM402に保存されている。ここで、接触判定値FLは、フィンガー11a,11bの移動時に検出されることがある応力変動を誤検出しないような値に設定する必要があり、本変形例においては、接触判定値Fl=2.0[N]に設定した場合を、図11に示している。
接触判定値Fl=2.0[N]が設定されている場合、例えば、1回目の把持力制御の実行時においては、図11(b)のグラフ(実線)に示すように、t=64msec時にフィンガー11a,11bに発生した応力Fが接触判定値Flになったと判定される。そして、図11(a)のグラフ(実線)に示すように、制御指令部40は、t=64msec時におけるフィンガー11a,11bの位置PであるP=0.43mmの位置を、接触開始位置Pp(1)としてROM402に記憶する。
接触開始位置Pp(n)を算出した後に、制御指令部40は、ロボットハンド10の初期状態における接触開始位置Ppoと、今回算出した接触開始位置Pp(n)と、を比較し、変化量ΔPpを計算する。ここで、初期状態における接触開始位置Ppoは、上述した初期状態における減速開始位置Pcoと同様の方法により設定される。制御指令部40は、変化量ΔPcと同様に、ΔPp=Ppo−Pp(n)の計算式に、初期状態における接触開始位置Ppoの値と、今回の把持力制御の結果検出された接触開始位置Pp(n)の値と、を代入し、ΔPpを算出する。このように、基準位置である初期状態おける接触開始位置Ppoと、検出位置である接触開始位置Pp(n)と、を比較することで検出されるΔPpは、本実施形態における差分を構成する。
変化量ΔPpを求めた以降の処理は、本実施例の把持判定処理と同様に、通知判定値ΔPlと変化量ΔPpとを比較し、ユーザに通知するか否かを決定する。このように、力センサを用いて変化量ΔPpを検出した場合、ロボット装置1は、フィンガー11a,11bの把持速度を一定にする必要がない。このため、把持力制御の実行時の他に、位置制御の実行によってワークWを把持する場合にも、フィンガー11a,11bの経時変化を検出しユーザに通知することができるようになる。なお、接触判定値Fl[N]及び通知判定値ΔPl[mm]は、力センサの種類や該力センサからの出力信号の仕様に基づいて設定する必要がある。
また、本変形例においては、フィンガー11a,11bの位置Pの検出について、モータ12のエンコーダ回路18を利用してもよく、別途レーザ変位計等の位置検出センサをロボットハンド10に配設し、該位置検出センサを用いてもよい。ただし、レーザ変位計は、エンコーダ回路18を利用した場合に比べてロボットハンド10のサイズが大きくなるとともにコストも増加する。
また、本実施形態において、図8に示したロボットハンド制御プログラムは、ハンド制御部30及び制御指令部40によって実行されるが、これに限定されない。ロボットハンド制御プログラムは、例えば、コンピュータで読み取り可能な記録媒体に記録し、コンピュータに読み取らせることで、コンピュータによっても実行可能である。