(第1実施形態)
以下、垂直多関節型ロボットを動作させるロボットシステムに具体化した第1実施形態について、図面を参照しつつ説明する。本実施形態のロボットは、例えば産業用ロボットとして機械組立工場などの組立システムにて用いられる。
はじめに、ロボット10の概要を図1に基づいて説明する。同図に示すように、ロボット10は、各関節の回転中心軸線として、第1軸線J1、第2軸線J2、第3軸線J3、第4軸線J4、第5軸線J5、第6軸線J6を有する6軸ロボットである。これら各軸線における各部の動作角度は、それぞれサーボモータ等からなる駆動源の駆動、及び減速機等による減速を通じて調整される。減速機として、例えば波動歯車式の減速機が採用されている。サーボモータの出力軸にはギヤが設けられており、このギヤと減速機のギヤとが噛み合っている。サーボモータは、いずれも正逆両方向の回転が可能であり、モータ駆動により原点位置を基準として各部が動作する。なお、各関節には、各軸線を中心として各部を滑らかに回転可能とする軸受け(軸受け手段)が設けられている。
ロボット10は、床に設置されており、第1軸線J1が鉛直方向へ延びている。ロボット10において、基台11は、床等に固定される固定部12と、その固定部12の上方に設けられる回転部13(第1回転部)とを有しており、回転部13が第1軸線J1を回転中心として水平方向に回転可能になっている。すなわち、回転部13は、第1軸線J1の方向に延びるとともに、固定部12により第1軸線J1を中心として回転可能に支持されている。
下アーム15(第2回転部)が、水平方向に延びる第2軸線J2を回転中心として、時計回り方向又は反時計回り方向に回転可能に連結されている。すなわち、下アーム15は、第1軸線J1に直交する平面に含まれる第2軸線J2から離れる方向へ延びるとともに、回転部13により第2軸線J2を中心として回転可能に支持されている。下アーム15は、基本姿勢として鉛直方向に延びる向きに設けられている。
下アーム15の上端部には、上アーム16が、水平方向に延びる第3軸線J3を回転中心として、時計回り方向又は反時計回り方向に回転可能に連結されている。すなわち、上アーム16は、第2軸線J2に平行な第3軸線J3から離れる方向へ延びるとともに、下アーム15により第3軸線J3を中心として回転可能に支持されている。上アーム16は、基本姿勢として水平方向に延びる向きに設けられている。
上アーム16は、支持側と先端側とで2つのアーム部に分割されて構成されており、支持側は第1上アーム16A(第3回転部)、先端側は第2上アーム16B(第4回転部)となっている。第2上アーム16Bは、上アーム16の長手方向に延びる第4軸線J4を回転中心として、第1上アーム16Aに対してねじり方向に回転可能になっている。すなわち、第2上アーム16Bは、第3軸線J3に直交する平面に含まれる第4軸線J4の方向に延びるとともに、第1上アーム16Aにより第4軸線J4を中心として回転可能に支持されている。
上アーム16(詳しくは第2上アーム16B)の先端部には、手首部17(第5回転部)が設けられている。手首部17は、水平方向に延びる第5軸線J5を回転中心として、第2上アーム16Bに対して回転可能になっている。すなわち、手首部17は、第4軸線J4に直交する第5軸線J5から離れる方向へ延びるとともに、第2上アーム16Bにより第5軸線J5を中心として回転可能に支持されている。
手首部17の先端部には、ワークやツール等を取り付けるためのハンド部18(第6回転部)が設けられている。ハンド部18は、その中心線である第6軸線J6を回転中心として、ねじり方向に回転可能になっている。すなわち、ハンド部18は、第5軸線J5に直交する第6軸線J6の方向に延びるとともに、手首部17により第6軸線J6を中心として回転可能に支持されている。
図2に、ロボット10の制御装置20及びその周辺構成を示す。制御装置20は、ロボット10の動作を制御するものであり、CPU21、ROM22、RAM23、駆動回路25、及び回転位置検出回路26等を備えている。これらは互いに電気的に接続されている。ROM22は、ロボット10のシステムプログラムや動作プログラム等を記憶している。RAM23は、これらのプログラムを実行する際にパラメータの値等を記憶する。CPU21は、これらのROM22やRAM23の記憶内容に基づいて、各種プログラムを実行することにより、ロボット10の動作を制御する。
ロボット10において、各軸線J1〜J6を回転中心軸とした各関節には、それぞれ前段部側にサーボモータ31が設けられている。CPU21は、駆動回路25を通じて、各サーボモータ31の駆動を行う。これにより、各関節において、前段部に設けられたサーボモータ31の駆動により、後段部がそれぞれ回転動作する。
各サーボモータ31には、その出力軸を制動する非励磁作動型の電磁ブレーキ33と、出力軸の回転角度(回転位置)に応じたパルス信号を出力するエンコーダ32とがそれぞれ設けられている。
各電磁ブレーキ33は、ばね等の弾性力に基づきサーボモータ31の出力軸の制動を行い、励磁コイルへの電力供給に基づき出力軸の制動を解除する。CPU21は、駆動回路25を通じて、各電磁ブレーキ33の駆動を行う。CPU21は、各電磁ブレーキ33による出力軸の制動を解除した状態において各サーボモータ31の駆動を行う。
各エンコーダ32は、所定パターンに形成された回転子の回転を磁気的又は光学的に検出する検出素子と、その検出素子の信号を処理するICとを有している。回転位置検出回路26には、各エンコーダ32の検出信号がそれぞれ入力される。回転位置検出回路26は、各エンコーダ32の検出信号に基づいて、回転部13、下アーム15、第1上アーム16A、第2上アーム16B、手首部17、及びハンド部18の各回転角度(各回転位置)を検出する。
具体的には、回転位置検出回路26は、固定部12に対する回転部13の回転角度(回転位置)、回転部13に対する下アーム15の回転角度、下アーム15に対する第1上アーム16Aの回転角度、第1上アーム16Aに対する第2上アーム16Bの回転角度、第2上アーム16Bに対する手首部17の回転角度、手首部17に対するハンド部18の回転角度をそれぞれ検出し、それら検出した回転位置情報をCPU21に出力する。
そして、CPU21は、動作プログラムを実行することにより、回転位置検出回路26から入力される回転位置情報に基づいて、ロボット10の上記各部の動作をフィードバック制御する。
ロボット10のユーザは、ロボット10を動作させる指令を記述した動作プログラムを作成する。この動作プログラムでは、ロボット10に作業を行わせるべく、ロボット10のハンド部18を移動させる各動作点(各移動先)を設定する。さらに、各動作点へのハンド部18の移動や、ハンド部18の移動の待機等を指令する。
CPU21は、この動作プログラムに基づいて、各関節を動作させる速度変動パターン(動作パターン)を作成し、その作成した速度変動パターンによりロボット10の各関節を同期動作させる。また、CPU21は、後述するロストモーションを解消する速度変動パターンの作成、及びロストモーションを縮小させてから動作指令を実行する速度変動パターンの作成を実行する。
図3に、動作プログラムの一例を示す。この例では、2つの移動指令Moveの間に待機指令Delayが挿入されている。具体的には、この動作プログラムでは、移動先として位置P0,P1,P2が設定されている。そして、ハンド部18を位置P0に移動させた後に所定時間待機し、次にハンド部18を位置P1へ移動させた後に位置P2へ移動させる。
図4に、動作プログラムの他の例を示す。この例では、複数の移動指令Moveの間に待機指令Delayが挿入されておらず、移動指令Moveを連続して実行する。具体的には、この動作プログラムでは、移動先として位置P0,P1,P2が設定されている。そして、ハンド部18を位置P0,P1,P2へ順に移動させる。
CPU21は、これらの動作プログラムに基づいて、各関節を動作させる速度変動パターンを作成する。具体的には、ハンド部18を目標位置(移動先)へ移動させるための各関節の目標回転位置を算出する。そして、各関節について現在の回転位置から目標回転位置へ移動させる速度変動パターンを作成する。さらに、作成した各速度変動パターンに基づいて、各サーボモータ31を駆動する電流値を算出し、算出された電流値で各サーボモータ31を駆動させる。
図5に、ロボット動作制御の処理手順を示す。この一連の処理は、ロボット10を動作プログラムにより動作させる際に、CPU21によって繰り返し実行される。
まず、動作プログラムにおいて実行すべき指令を読み込む(S11)。そして、読み込まれた指令が動作指令であるか否か判定する(S12)。この判定において、読み込まれた指令が動作指令でないと判定した場合は(S12:NO)、次の指令を読み込む(S13)。例えば、図3に示す動作プログラムにおいて、前回の処理でMove p,P0の指令が実行されており、今回の処理でDelay 1000の指令を実行するとする。この場合、Delay指令は動作指令ではないため、次のMove L,P1の指令が読み込まれる。
次の指令を読み込んだ後(S13)、読み込まれた次の指令が動作指令であるか否か判定する(S14)。この判定において、読み込まれた次の指令が動作指令でないと判定した場合は(S14:NO)、再度次の指令を読み込む(S13)。
一方、上記判定において、読み込まれた次の指令が動作指令であると判定した場合は(S14:YES)、今回の以前に読み込まれた動作指令と今回読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションLMを推定する(S15)。図3に示す例では、前回の処理で読み込まれたMove p,P0の動作指令の指令と、今回の処理で読み込まれたMove L,P1の動作指令とに基づいて、Move p,P0の動作指令が実行された後にMove L,P1の動作指令が実行される際に発生するロストモーションLMを推定する。具体的には、位置P0へハンド部18を移動させた際のサーボモータ31の回転方向と、位置P1へハンド部18を移動させる際のサーボモータ31の回転方向とが反対となる関節を抽出する。そして、抽出された関節について、その関節のサーボモータ31の出力軸に設けられたギヤと、そのギヤに噛み合う減速機のギヤとのバックラッシュ量等に基づいて、ロストモーションLMを推定する。抽出されなかった関節については、ロストモーションLMが発生しないと推定する。
続いて、各関節について、推定されたロストモーションLMを解消するための速度変動パターンを作成する(S16)。
詳しくは、図6に示すように、ロストモーションLMを解消する必要のある関節が存在するか否か判定する(S161)。すなわち、発生するロストモーションLMがS15で推定されている関節があるか否か判定する。この判定において、ロストモーションLMを解消する必要のある関節が存在しないと判定した場合は(S161:NO)、S16の処理を終了し(END)、図5のS17の処理に移行する。
一方、上記判定において、ロストモーションLMを解消する必要のある関節が存在すると判定した場合は(S161:YES)、複数の関節のロストモーションLMを解消する必要があるか否か判定する(S162)。この判定において、複数の関節のロストモーションLMを解消する必要があると判定した場合は(S162:YES)、ロストモーションLMを解消する各関節の速度変動パターンを作成する(S163)。一方、この判定において、複数の関節のロストモーションLMを解消する必要がないと判定した場合は(S162:NO)、ロストモーションLMを解消する関節の速度変動パターンを作成する(S165)。S163又はS165に続いて、次の動作指令まで各関節の動作時間を延長する(S164)。そして、S16の処理を終了し(END)、図5のS17の処理に移行する。
例えば、図7に示すように、第1軸線J1を回転中心とする第1関節と、第2軸線J2を回転中心とする第2関節とにおいて、ロストモーションLMを解消するとする。この場合、(a)に示すように、第1関節においてロストモーションLM1を解消する速度変動パターンP11が作成される。すなわち、速度変動パターンP11で示す台形の面積がロストモーションLM1に相当する。また、(b)に示すように、第2関節においてロストモーションLM2を解消する速度変動パターンP21が作成される。すなわち、速度変動パターンP21で示す台形の面積がロストモーションLM2に相当する。第1関節及び第2関節は、最大限の回転速度(速度)で回転されている。
ここでは、第1関節において、速度変動パターンP11の終了時刻が、次の動作指令の速度変動パターンP12の開始時刻t14と一致している。これに対して、第2関節において、速度変動パターンP21の終了時刻t12は、次の動作指令の速度変動パターンP23の開始時刻t14よりも早くなっている。このため、速度変動パターンP22に示すように、速度変動パターンP23の開始時刻t14まで、第2関節の動作時間を延長する。このとき、(b)において、速度変動パターンP22で示す台形の面積は速度変動パターンP21で示す台形の面積と等しくなっており、速度変動パターンP22によってもロストモーションLM2が解消される。なお、例えば第2関節のロストモーションLM2のみを解消する必要がある場合には、速度変動パターンP22のみを作成する。
上記のロストモーションLMを解消する速度変動パターンP11,P22は、今回の動作指令の以前に実行された動作指令(速度変動パターン)の終了(時刻0)に続けて設定されている。そして、速度変動パターンP11,P22は、今回の動作指令(速度変動パターンP12,P23)の開始まで設定されている。すなわち、速度変動パターンP11,P22は、今回の動作指令の以前に実行された動作指令の終了から、今回の動作指令が実行されるまでの全期間にわたって設定されている。さらに、速度変動パターンP11,P22では、加速を開始する時刻0、加速を終了する時刻t11、減速を開始する時刻t13、及び減速を終了する時刻t14がそれぞれ一致している。すなわち、ロストモーションLMの解消に際して、複数の関節を同期動作させる速度変動パターンを作成する。
図5に戻り、S17では、ロストモーションLMを解消する速度変動パターンを実行する。例えば、図7の速度変動パターンP11,P22を実行する。そして、速度変動パターンP11,P22に基づいて、各サーボモータ31を駆動する電流値を算出し、算出された電流値で各サーボモータ31を駆動させる。なお、ロストモーションLMを解消する速度変動パターンが作成されていない関節については、S17の処理を実行しない。
続いて、S14で読み込まれた次の動作指令の速度変動パターンを作成する(S18)。例えば、図7の速度変動パターンP12,P23や、他の関節の速度変動パターンを作成する。これらの速度変動パターンでは、加速を開始する時刻t14、加速を終了する時刻t15、減速を開始する時刻t16、及び減速を終了する時刻t17がそれぞれ一致している。すなわち、次の動作指令の実行に際して、複数の関節を同期動作させる速度変動パターンを作成する。そして、作成された各関節の速度変動パターンを実行する(S19)。このとき、各速度変動パターンに基づいて、各サーボモータ31を駆動する電流値を算出し、算出された電流値で各サーボモータ31を駆動させる。その後、この一連の処理を一旦終了し(END)、ロボット10を動作プログラムにより続けて動作させる場合には、再度S11の処理から実行する。
また、S12の判定において、読み込まれた指令が動作指令であると判定した場合は(YES)、今回の以前に実行された動作指令と今回読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションLMを推定する(S20)。図4に示す例では、前回の処理で読み込まれたMove p,P0の動作指令と、今回の処理で読み込まれたMove L,P1の動作指令とに基づいて、Move p,P0の動作指令が実行された後にMove L,P1の動作指令が実行される際に発生するロストモーションLMを推定する。ロストモーションLMの推定方法は、S15と同一である。
続いて、各関節について、推定されたロストモーションLMを縮小させてから今回の処理で読み込まれた動作指令を実行する速度変動パターンを作成する(S21)。
詳しくは、図8に示すように、ロストモーションLMを縮小する必要のある関節が存在するか否か判定する(S211)。すなわち、発生するロストモーションLMがS20で推定されている関節があるか否か判定する。この判定において、ロストモーションLMを縮小させる必要のある関節が存在すると判定した場合は(S211:YES)、複数の関節のロストモーションLMを縮小させる必要があるか否か判定する(S212)。この判定において、複数の関節のロストモーションLMを縮小させる必要があると判定した場合は(S212:YES)、各関節について縮小させるロストモーションLMの量を算出する(S213)。算出された量だけロストモーションLMを縮小させる各関節の速度変動パターンを作成する(S214)。続いて、ロストモーションLMを縮小させるために最も長い時間を要する関節を抽出する(S215)。そして、ロストモーションLMを縮小させるために最も長い時間を要する関節に合わせて、他の関節の動作時間を延長する(S216)。
一方、S212の判定において、複数の関節のロストモーションLMを縮小させる必要がないと判定した場合は(NO)、ロストモーションLMを縮小させる関節について、縮小させるロストモーションLMの量を算出する(S217)そして、ロストモーションLMを縮小させる関節の速度変動パターンを作成する(S218)。
また、S211の判定において、ロストモーションLMを縮小する必要のある関節が存在しないと判定した場合は(S211:NO)、S12で読み込まれた動作指令に基づいて、各関節の速度変動パターンを作成する(S219)。これらの速度変動パターンでは、加速を開始する時刻、加速を終了する時刻、減速を開始する時刻、及び減速を終了する時刻がそれぞれ一致している。すなわち、複数の関節を同期動作させる速度変動パターンを作成する。なお、S216又はS218の後も、S219の処理へ移行し、ロストモーションLMを縮小させる速度変動パターンに連続して、動作指令に基づく各関節の速度変動パターンを作成する。その後、S21の処理を終了し(END)、図5のS22の処理に移行する。
例えば、図9に示すように、第1軸線J1を回転中心とする第1関節と、第2軸線J2を回転中心とする第2関節とにおいて、ロストモーションLMを縮小させるとする。この場合、(a)に示すように、第1関節においてロストモーションLM1を解消する速度変動パターンP14が作成される。すなわち、速度変動パターンP14で示す台形の面積がロストモーションLM1に相当する。また、(b)に示すように、第2関節においてロストモーションLM2を解消する速度変動パターンP24が作成される。すなわち、速度変動パターンP24で示す台形の面積がロストモーションLM2に相当する。第1関節及び第2関節は、最大限の回転速度(速度)で回転されている。
本来、今回の動作指令の以前に実行された動作指令(速度変動パターン)の終了(時刻0)に続けて、今回の動作指令の速度変動パターンP15,P26が設定されることになる。ここでは、今回の動作指令の速度変動パターンP15,P26を実行する前に、ロストモーションLM1,LM2を縮小させる速度変動パターンP14,P25を設定する。このため、ロストモーションLM1、LM2を縮小させる時間を必要最小限とすべく、ロストモーションLM1,LM2が所定量未満に縮小された時に、今回の動作指令(速度変動パターンP16,P27)を開始するように速度変動パターンP16を設定する。
詳しくは、各関節の許容回転誤差Δθ、ハンド部18の許容位置誤差ΔP、ヤコビアンJは、Δθ=ΔP/Jの関係式で表される。なお、ヤコビアンJは、微小領域において、ハンド部18の位置と各関節との関係を表した係数の行列であり、各回転部の長さ及び角度、並びに回転部の構成により決定される。このため、ハンド部18の許容位置誤差ΔPを設定することにより、各関節の許容回転誤差Δθを算出することができる。そして、各関節において縮小すべきロストモーションLMの量を、LM1−Δθ1、LM2−Δθ2にそれぞれ設定する。このため、第1関節において、ロストモーションLM1の残りが許容回転誤差Δθ1未満となった時刻t24に、速度変動パターンP16を開始する。その結果、速度変動パターンP14と速度変動パターンP16とが重複する部分では、速度変動パターンP17を設定する。
このとき、第2関節においてロストモーションLM2が所定量(許容回転誤差Δθ2)未満に縮小される時刻t22は、第1関節においてロストモーションLM1が所定量(許容回転誤差Δθ1)未満に縮小される時刻t24よりも早くなっている。このため、速度変動パターンP25に示すように、時刻t22以後も第2関節の動作時間を延長し、ロストモーションLM2を更に縮小させる。詳しくは、ロストモーションLMを縮小させるために最も長い時間を要する第1関節に合わせて、第2関節の動作時間を時刻t24まで延長する。(b)において、速度変動パターンP25で示す台形の面積は速度変動パターンP24で示す台形の面積と等しくなっており、速度変動パターンP25によってロストモーションLM2が完全に解消される。なお、例えば第2関節のロストモーションLM2のみを縮小させる必要がある場合には、時刻t22に今回の動作指令(速度変動パターンP27)を開始するように、速度変動パターンP27を作成する。この場合は、第1関節の速度変動パターンP14を作成せず、第2関節の速度変動パターンP25のみを作成する。
図5に戻り、S22では、ロストモーションLMを縮小させてから今回の処理で読み込まれた動作指令を実行する速度変動パターンを実行する。例えば、図9の速度変動パターンP14,P17,P16(速度変動パターンP25,P27)を実行する。そして、これらの速度変動パターンに基づいて、各サーボモータ31を駆動する電流値を算出し、算出された電流値で各サーボモータ31を駆動させる。その後、この一連の処理を一旦終了し(END)、ロボット10を動作プログラムにより続けて動作させる場合には、再度S11の処理から実行する。
なお、S11の処理が読込部としての処理に相当し、S19,S22の処理が実行部としての処理に相当し、S13の処理が先読み部としての処理に相当し、S15,S20の処理が推定部としての処理に相当し、S16,S17の処理が解消部としての処理に相当し、S21の処理が作成部としての処理に相当する。
図10に、図5のS15〜S19の処理による作用を比較例と併せて示す。ここでは、第1軸線J1を回転中心とする第1関節のロストモーションLM1は解消する必要がなく、第2軸線J2を回転中心とする第2関節のロストモーションLM2を解消する必要があるものとする。そして、時刻t14で次の動作指令を開始するまでに、ロストモーションLM1を解消する場合について示す。
(a)に示すように、第1関節では、M1で示す比較例のサーボモータ31の回転角度と、M2で示す本実施形態のサーボモータ31の回転角度とは一致している。すなわち、第1関節では、ロストモーションLM1を解消する必要がないため、ロストモーションLM1を解消する速度変動パターンは作成されていない。
一方、(b)に示すように、第2関節では、破線M1で示す比較例のサーボモータ31の回転角度は、次の動作指令が開始される時刻t14から増加させられている。これに対して、実線M2で示す本実施形態のサーボモータ31の回転角度は、時刻0から時刻t14にわたって増加させられている。すなわち、時刻t14までに、ロストモーションLM2を解消する速度変動パターンが実行されている。
このため、比較例では、破線A1で示すアームの回転角度が、実線ARで示す理想的なアームの回転角度から大きくずれている。これに対して、本実施形態では、実線A2で示すアームの回転角度は、実線ARで示す理想的なアームの回転角度と略一致している。
図11に、図5のS15〜S19の処理によるロボット10のアームの軌跡を比較例と併せて示す。ここでは、x軸方向の位置を一定に維持しつつ、y軸方向へハンド部18を移動させる動作を例として示す。破線H1で示す比較例のハンド部18の動作軌跡では、x軸方向の位置が大きくずれている。これに対して、実線H2で示す本実施形態のハンド部18の動作軌跡では、x軸方向の位置が一定に維持されている。
また、図12に、図5のS20〜S22の処理による作用を比較例と併せて示す。ここでは、第1軸線J1を回転中心とする第1関節のロストモーションLM1は解消する必要がなく、第2軸線J2を回転中心とする第2関節のロストモーションLM2を解消する必要があるものとする。そして、本来時刻0で動作指令を開始するところを、第2関節のロストモーションLM2を所定量未満に縮小させてから時刻t24で動作指令を開始する場合について示す。
(a)に示すように、第1関節では、破線M1で示す比較例のサーボモータ31の回転角度は、動作指令の本来の開始時刻である時刻0から増加させられている。これに対して、実線M2で示す本実施形態のサーボモータ31の回転角度は、ロストモーションLM2が所定量まで縮小する時刻である時刻t24から増加させられている。
(b)に示すように、第2関節では、破線M1で示す比較例のサーボモータ31の回転角度は、動作指令の本来の開始時刻である時刻0から増加させられている。これに対して、実線M2で示す本実施形態のサーボモータ31の回転角度は、ロストモーションLM2を迅速に縮小すべく、時刻0から破線M1で示す比較例のサーボモータ31の回転角度よりも速く増加させられている。そして、時刻t24において、ロストモーションLM2が所定量未満にされている。
このため、比較例では、破線A1で示すアームの回転角度が、実線ARで示す理想的なアームの回転角度から大きくずれている。これに対して、本実施形態では、実線A2で示すアームの回転角度は、実線ARで示す理想的なアームの回転角度と略一致している。
図13に、図5のS20〜S22の処理によるロボット10のアームの軌跡を比較例と併せて示す。ここでは、x軸方向の位置を一定に維持しつつ、y軸方向へハンド部18を移動させる動作を例として示す。破線H1で示す比較例のハンド部18の動作軌跡では、x軸方向の位置が大きくずれている。これに対して、実線H2で示す本実施形態のハンド部18の動作軌跡では、x軸方向の位置のずれが比較例よりも小さくなっている。
以上詳述した本実施形態は以下の利点を有する。
・読込部により、動作プログラムに含まれる指令が順次読み込まれる(S11)。そして、読込部により読み込まれた指令が、実行部により順次実行される(S19,S22)。ここで、読込部により読み込まれた指令が動作指令でない場合に(S12:NO)、先読み部により次の指令が読み込まれる(S13)。すなわち、読込部により読み込まれた指令が、例えばDelay 1000である場合には、次の動作指令が実行されるまでに、ロストモーションLMを解消するための処理(S15〜S17)を実行することができる。
そして、先読み部により読み込まれた指令が動作指令である場合に、推定部により、先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令と、先読み部により読み込まれた動作指令とに基づいて、それらの動作指令が実行部により連続して実行される際に発生するロストモーションLMが推定される(S15)。すなわち、先読み部により読み込まれた動作指令が実際に実行される前に、その動作指令が実行された場合に発生するロストモーションLMが推定される。ここで、ロボット10は垂直多関節型ロボットであり、多様な動作が可能であるため、ロストモーションの発生状況も大きく変化する。この点、推定部により、ロストモーションLMが推定されるため、ロボット10においてロストモーションの発生状況が変化したとしても対応することができる。
さらに、解消部により、先読み部により読み込まれた動作指令が実行部により実行されるまでに、推定部により推定されたロストモーションLMを解消するように複数の関節が同期動作させられる(S16,S17)。したがって、動作指令の終了から次の動作指令が実行されるまでの間にロストモーションLMを解消することができ、ロボット10の多軸同期動作時の軌跡誤差を更に縮小することができる。特に、ロボット10の作業では、迅速な動作が要求されるため、事前にロストモーションを解消することの利益が大きい。
・図7に示すように、先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令の終了(時刻0)に続けて、ロストモーションLMを解消する制御、すなわち速度変動パターンP11,P22が実行される。このため、ロストモーションLMを解消する制御を早い時期から開始することができ、ロストモーションLMを解消するまでの時間を短縮することができる。
・先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令の終了(時刻0)から、先読み部により読み込まれた動作指令が実行部により実行されるまでの全期間(時刻0〜時刻t14)にわたって、ロストモーションLMを解消する制御が実行される。このため、ロストモーションLMを解消する制御の時間を長く確保することができ、複数の関節を同期動作させる速度を、速度変動パターンP22のように低下させることができる。その結果、ロストモーションLMを解消する制御での軌跡誤差を縮小することができ、ロボット10の多軸同期動作時の軌跡誤差を更に縮小することができる。
・ロストモーションLMを解消する際に、最も長い時間を要する第1関節が最大限の速度で動作させられる。このため、ロストモーションLMを解消するまでの時間を更に短縮することができる。したがって、先読み部により読み込まれた動作指令が実行されるまでの待機時間が短い場合に有効である。
・推定部により抽出されてロストモーションLMが推定された第1,第2関節について、その第1,第2関節のロストモーションLM1,LM2を解消するようにサーボモータ31を回転させる速度変動パターンP11,P22がそれぞれ作成される(S16)。すなわち、ロストモーションLM1,LM2をそれぞれ解消する必要のある第1,第2関節が抽出され、その第1,第2関節についてロストモーションLM1,LM2を解消するサーボモータ31の速度変動パターンP11,P22がそれぞれ作成される。そして、作成された速度変動パターンP11,P22が実行されるため、対象となる第1,第2関節のロストモーションLM1,LM2を解消することができる。
・読込部により読み込まれた指令が動作指令である場合に(S12:YES)、推定部により、読込部により動作指令が読み込まれる前に実行された動作指令と読込部により読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションLMが推定される(S20)。そして、作成部により、読込部により読み込まれた動作指令及び推定部により推定されたロストモーションLMに基づいて、ロストモーションLMを縮小させてから複数の関節を同期動作させる動作パターンが作成される(S21)。
すなわち、読込部により読み込まれた指令が動作指令である場合には、次の動作指令を実行するまでに時間がないため、予めロストモーションLMを縮小させる制御を含む速度変動パターンP14,P17,P16(P25,P27)が作成される。その後、実行部により、作成部により作成された動作パターンが実行される(S22)。したがって、ロストモーションLMが縮小された後に動作指令が実際に実行されるようになり、ロボット10の多軸同期動作時の軌跡誤差を更に縮小することができる。その結果、連続した動作が実行されるロボット10においても、ロストモーションLMを解消して、軌道誤差を更に縮小することができる。
・作成部により、ロストモーションLMを縮小させる期間の終了部分に、複数の関節を同期動作させる期間の開始部分を重複させるように動作パターンが作成される。すなわち、図9に示すように、速度変動パターンP14の終了部分に、速度変動パターンP16の開始部分を重複させている。このため、動作指令に基づく同期動作(速度変動パターンP16)の開始時期を早めることができ、ロストモーションLM1の縮小から同期動作へと円滑に移行させることができる。特に、ロボット10では、次の動作の実行が遅れることを抑制する効果が高い。
・作成部により、ロストモーションLM1が所定量(許容回転誤差Δθ1)未満に縮小された時刻t24に、複数の関節の同期動作を開始するように速度変動パターンP16,P27が作成される。このため、動作指令に基づく同期動作の開始時期を早めつつ、ロストモーションLM1を所定量未満に縮小することができる。
・ロストモーションLMを所定量未満に縮小するために最も長い時間を要する第1関節の動作時間に合わせて、第2関節の動作時間が延長されるように速度変動パターンP25が作成される。このため、ロストモーションLM1を確実に所定量未満に縮小させつつ、ロストモーションLM1,LM2を縮小させる制御に要する時間(時刻0〜時刻t24)を必要最小限とすることができる。
・作成部により、動作時間が延長された第2関節について、ロストモーションLM2を所定量(許容回転誤差Δθ2)未満に縮小した後も更に縮小させるように速度変動パターンP25が作成される。すなわち、動作時間が延長された第2関節では、ロストモーションLM2を所定量未満に縮小させた後に、延長された動作時間(時刻t22〜時刻t24)を用いてロストモーションLM2を更に縮小させている。その結果、ロボット10の多軸同期動作時の軌跡誤差を一層縮小することができる。
・ロストモーションLMを所定量未満に縮小する際に、最も長い時間を要する第1関節を最大限の速度で動作させるように動作パターンP14が作成される(S21)。このため、ロストモーションLM1を所定量未満に縮小するまでの時間を更に短縮することができる。
なお、上記第1実施形態を、以下のように変形して実施することもできる。
・図7において、ロストモーションLM1,LM2を解消する制御の期間を、次の動作指令が実行されるまでの期間のうちの一定期間とすることもできる。この場合には、以前に読み込まれた動作指令の実行が終了してからロストモーションLM1,LM2を解消する制御を開始するまで、あるいはロストモーションLM1,LM2を解消してから次の動作指令を実行するまでに、待機期間が発生することとなる。
・図9において、ロストモーションLMを所定量未満に縮小するために最も長い時間を要する第1関節の動作時間に合わせて、第2関節のロストモーションLM2が所定量未満に縮小されるように第2関節の動作時間を延長してもよい。すなわち、時刻t24においてロストモーションLM2の残りが許容回転誤差Δθ2となるように、第2関節の速度変動パターンを作成してもよい。この場合には、第2関節の回転速度を更に低下させることができる。
・解消部は、ロストモーションLMを解消するために最も長い時間を要する関節の動作時間に合わせて、他の関節の動作時間を延長することで、複数の関節を同期動作させるようにしてもよい。例えば、図7において、第1関節の速度変動パターンP11の終了時刻が、次の動作指令の速度変動パターンP12の開始時刻t14よりも早い場合に、速度変動パターンP11に合わせて、第2関節の動作時間を延長してもよい。すなわち、第2関節の速度変動パターンP22の終了時刻を、第1関節の速度変動パターンP11の終了時刻に合わせてもよい。
上記構成によれば、ロストモーションLMを解消するために最も長い時間を要する第1関節の動作時間に合わせて、第2関節の動作時間が延長されることで、複数の関節が同期動作させられる。このため、ロストモーションLM1,LM2を確実に解消しつつ、ロストモーションLM1,LM2を解消する制御に要する時間を必要最小限とすることができる。
(第2実施形態)
以下、ロボット動作制御の処理を一部変更した第2実施形態について、図面を参照しつつ説明する。本実施形態では、図5のS20〜S22の処理を、図14に示すようにS31〜S34の処理に変更するとともに、S18とS19との間にも同様のS31〜S34の処理を追加している。その他の構成については第1実施形態と同一であるため、同一の符号を付すことにより説明を省略する。
S12の判定において、読み込まれた指令が動作指令であると判定した場合は(YES)、読み込まれた動作指令の速度変動パターンを作成する(S31)。具体的には、複数の関節を同期動作させるように、各関節の速度変動パターンを作成する。そして、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターン(速度反転パターン)が含まれているか否か判定する(S32)。
例えば、図15に示すように、第2軸線J2を回転中心とする第2関節において、回転速度が正と負との間で変化する場合は、第2関節の速度変動パターンP28の中に反転パターン(一点鎖線部分のうち時刻t31〜時刻t32の部分)が含まれていると判定する。S32の判定において、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターンが含まれていると判定した場合は(YES)、作成された速度変動パターンP28(反転パターン)において、反転を開始する時期を早くするように速度変動パターンP28を補正する(S33)。すなわち、反転を開始する時刻を、時刻t31から時刻t33へ変更する。詳しくは、速度変動パターンP28において反転を開始してから反転を終了するまでの期間Trの半分の期間だけ、速度変動パターンP28において反転を開始する時期を早くするように速度変動パターンP28を補正する。
図14に戻り、S34では、各関節の速度変動パターンを実行する。そして、これらの速度変動パターンに基づいて、各サーボモータ31を駆動する電流値を算出し、算出された電流値で各サーボモータ31を駆動させる。また、S32の判定において、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターンが含まれていないと判定した場合は(NO)、S31で作成された速度変動パターンを補正せず、S34の処理を実行する。その後、この一連の処理を一旦終了し(END)、ロボット10を動作プログラムにより続けて動作させる場合には、再度S11の処理から実行する。
また、S18において次の動作指令の速度変動パターンを作成した後も、その作成された速度変動パターンについて、上記S32,S33の処理を実行する。そして、各関節の速度変動パターンを実行する(S19)。その後、この一連の処理を一旦終了し(END)、ロボット10を動作プログラムにより続けて動作させる場合には、再度S11の処理から実行する。
なお、S31の処理が作成部としての処理に相当し、S32の処理が判定部としての処理に相当し、S33の処理が補正部としての処理に相当し、S34の処理が実行部としての処理に相当する。
図16に、図14のS31〜S34の処理による作用を比較例と併せて示す。破線M1で示す比較例のサーボモータ31の回転角度では、時刻t31においてロボット10のアームの動作方向を反転させ始める時に、サーボモータ31の回転方向を反転させ始めている。このため、破線A1で示すアームの回転角度が、二点鎖線ARで示す理想的なアームの回転角度から大きくずれている。これに対して、実線M2で示す本実施形態のサーボモータ31の回転角度では、時刻t31においてロボット10のアームの動作方向を反転させ始めるよりも前の時刻t33に、サーボモータ31の回転方向を反転させ始めている。このため、実線A2で示すアームの回転角度と、二点鎖線ARで示す理想的なアームの回転角度とのずれが小さくなっている。
図17に、図14のS31〜S34の処理によるロボット10のアームの軌跡を比較例と併せて示す。ここでは、x軸方向の位置を一定に維持しつつ、y軸方向へハンド部18を移動させる動作を例として示す。破線H1で示す比較例のハンド部18の動作軌跡では、y=0以降においてx軸方向の位置が大きくずれている。これに対して、実線H2で示す本実施形態のハンド部18の動作軌跡では、y=0よりも若干前から若干後までx軸方向の位置がずれているものの、そのずれ量は比較例よりも小さくなっている。
以上詳述した本実施形態は以下の利点を有する。
・読込部により、動作プログラムに含まれる指令が順次読み込まれる(S11)。そして、作成部により、読込部により読み込まれた指令に基づいて、複数の関節を同期動作させる速度変動パターンが作成される(S31)。
ここで、判定部により、作成部により作成された速度変動パターンの中に関節の動作方向を反転させる反転パターン(速度反転パターン)が含まれているか否か判定される(S32)。すなわち、関節の動作方向が反転される場合にロストモーションLMが発生するため、速度変動パターンの中に関節の動作方向を反転させる反転パターンが含まれているか否か判定する。そして、判定部により反転パターンが含まれていると判定された場合に(S32:YES)、補正部により、反転パターンにおいて反転を開始する時期を早くするように、作成部により作成された動作パターンが補正される(S33)。すなわち、図15に示すように、速度変動パターンP28において反転を開始する時刻を、時刻t31から時刻t33へ早くする。その後、実行部により、補正部により補正された動作パターンが実行される(S34)。
このため、実際に関節が動作させられて動作方向が反転し始めてからロストモーションLMを縮小させるのではなく、ロストモーションLMを縮小させるように予め速度変動パターンP28を補正しておくことができる。その結果、ロボット10の多軸同期動作時の軌跡誤差を更に縮小することができる。ロボット10では、同一の動作が繰り返し実行されることが多いため、その動作中にロストモーションLMが発生する場合に、そのロストモーションLMを毎回縮小させることのできる利点は大きい。
・速度変動パターンP28において反転を開始してから反転を終了するまでの期間Trの半分の期間だけ、速度変動パターンP28において反転を開始する時期を早くするように速度変動パターンP28が補正される。したがって、図16において、実線M2で示すように関節(アーム)の動作方向の反転に際して反転パターンが前後に均等に設定されるため、実線A2で示すように反転に際してロストモーションLMが前後の一方側に偏ることを抑制することができる。その結果、ロボット10の多軸同期動作時の軌跡誤差を一層縮小することができる。
なお、上記第2実施形態を、以下のように変形して実施することもできる。
・速度変動パターンP28において反転を開始してから反転を終了するまでの期間Trの半分の期間よりも、若干長い期間又は若干短い期間だけ、速度変動パターンP28において反転を開始する時期を早くするように速度変動パターンP28を補正することもできる。
上記の各実施形態に限定されず、例えば次のように実施することもできる。
・垂直多関節型の6軸ロボットに限らず、水平多関節型の4軸ロボット等、それ以外の型式や軸数のロボットを採用することもできる。
・動作プログラムの言語は、図3,4に示した言語に限らず、任意のプログラム言語を採用することができる。