(57)【特許請求の範囲】
【請求項１】
動作プログラムを実行することにより、ロボットの複数の関節を同期動作させる制御装置であって、
前記動作プログラムに含まれる指令を順次読み込む読込部と、
前記読込部により読み込まれた前記指令に基づいて、前記複数の関節を同期動作させる動作パターンを作成する作成部と、
前記作成部により作成された前記動作パターンの中に前記関節の動作方向を反転させる反転パターンが含まれているか否か判定する判定部と、
前記判定部により前記反転パターンが含まれていると判定された場合に、前記反転パターンにおいて反転を開始する時期を早くするように、前記作成部により作成された前記動作パターンを補正する補正部と、
前記補正部により補正された前記動作パターンを実行する実行部と、
を備えることを特徴とするロボットの制御装置。
【請求項２】
前記補正部は、前記反転パターンにおいて反転を開始してから反転を終了するまでの期間の半分の期間だけ、前記反転パターンにおいて反転を開始する時期を早くするように前記動作パターンを補正する請求項１に記載のロボットの制御装置。
【請求項３】
各関節には、関節を動作させる駆動源であるサーボモータが設けられており、
前記作成部は、前記複数の関節を同期動作させるように前記サーボモータをそれぞれ回転させる速度変動パターンを作成し、
前記判定部は、前記作成部により作成された前記速度変動パターンの中に前記関節の動作方向を反転させる速度反転パターンが含まれているか否か判定し、
前記補正部は、前記判定部により前記速度反転パターンが含まれていると判定された場合に、前記速度反転パターンにおいて反転を開始する時期を早くするように、前記作成部により作成された前記速度変動パターンを補正する請求項１又は２に記載のロボットの制御装置。
【請求項４】
前記補正部は、前記速度反転パターンにおいて反転を開始してから反転を終了するまでの期間の半分の期間だけ、前記速度反転パターンにおいて反転を開始する時期を早くするように前記速度変動パターンを補正する請求項３に記載のロボットの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの制御装置に関する。
【背景技術】
【０００２】
従来、Ｘ軸及びＹ軸の送り軸を有するテーブルにおいて、軸移動方向の反転時に電動機に対してロストモーション分の移動指令を加えるものがある（例えば、特許文献１参照）。この特許文献１に記載のものによれば、移動方向の反転時における電動機のロストモーション分の移動時間を短縮することができ、多軸同期動作時の軌跡誤差を縮小することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特公平７−１９１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載のものでは、送り軸の移動方向の反転が指令された後に、電動機に対してロストモーション分の移動指令を加えている。このため、ロストモーション分の移動時間を短縮することはできるものの、多軸同期動作時の軌跡誤差を縮小するには限度がある。
【０００５】
本発明は、こうした実情に鑑みてなされたものであり、その主たる目的は、ロボットの多軸同期動作時の軌跡誤差を更に縮小することのできるロボットの制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
第１の手段は、動作プログラムを実行することにより、ロボットの複数の関節を同期動作させる制御装置であって、前記動作プログラムに含まれる指令を順次読み込む読込部と、前記読込部により読み込まれた前記指令に基づいて、前記複数の関節を同期動作させる動作パターンを作成する作成部と、前記作成部により作成された前記動作パターンの中に前記関節の動作方向を反転させる反転パターンが含まれているか否か判定する判定部と、前記判定部により前記反転パターンが含まれていると判定された場合に、前記反転パターンにおいて反転を開始する時期を早くするように、前記作成部により作成された前記動作パターンを補正する補正部と、前記補正部により補正された前記動作パターンを実行する実行部と、を備えることを特徴とする。
【０００７】
上記構成によれば、読込部により、動作プログラムに含まれる指令が順次読み込まれる。そして、作成部により、読込部により読み込まれた指令に基づいて、複数の関節を同期動作させる動作パターンが作成される。
【０００８】
ここで、判定部により、作成部により作成された動作パターンの中に関節の動作方向を反転させる反転パターンが含まれているか否か判定される。すなわち、関節の動作方向が反転される場合にロストモーションが発生するため、動作パターンの中に関節の動作方向を反転させる反転パターンが含まれているか否か判定する。そして、判定部により反転パターンが含まれていると判定された場合に、補正部により、反転パターンにおいて反転を開始する時期を早くするように、作成部により作成された動作パターンが補正される。その後、実行部により、補正部により補正された動作パターンが実行される。
【０００９】
このため、実際に関節が動作させられて動作方向が反転し始めてからロストモーションを縮小させるのではなく、ロストモーションを縮小させるように予め動作パターンを補正しておくことができる。その結果、ロボットの多軸同期動作時の軌跡誤差を更に縮小することができる。
【００１０】
第２の手段では、前記補正部は、前記反転パターンにおいて反転を開始してから反転を終了するまでの期間の半分の期間だけ、前記反転パターンにおいて反転を開始する時期を早くするように前記動作パターンを補正する。
【００１１】
上記構成によれば、反転パターンにおいて反転を開始してから反転を終了するまでの期間の半分の期間だけ、反転パターンにおいて反転を開始する時期を早くするように動作パターンが補正される。したがって、関節の動作方向の反転に際して反転パターンが前後に均等に設定されるため、反転に際してロストモーションが前後の一方側に偏ることを抑制することができる。その結果、ロボットの多軸同期動作時の軌跡誤差を一層縮小することができる。
【００１２】
関節の動作中において、動作方向が反転する場合にロストモーションが発生する。
【００１３】
このため、第３の手段のように、各関節には、関節を動作させる駆動源であるサーボモータが設けられており、前記作成部は、前記複数の関節を同期動作させるように前記サーボモータをそれぞれ回転させる速度変動パターンを作成し、前記判定部は、前記作成部により作成された前記速度変動パターンの中に前記関節の動作方向を反転させる速度反転パターンが含まれているか否か判定し、前記補正部は、前記判定部により前記速度反転パターンが含まれていると判定された場合に、前記速度反転パターンにおいて反転を開始する時期を早くするように、前記作成部により作成された前記速度変動パターンを補正するといった構成を採用することができる。
【００１４】
具体的には、第４の手段のように、前記補正部は、前記速度反転パターンにおいて反転を開始してから反転を終了するまでの期間の半分の期間だけ、前記速度反転パターンにおいて反転を開始する時期を早くするように前記速度変動パターンを補正するといった構成を採用することができる。
【図面の簡単な説明】
【００１５】
【図１】ロボットの概要を示す正面図。
【図２】ロボットの制御装置及びその周辺構成を示す回路図。
【図３】動作プログラムの一例を示す図。
【図４】動作プログラムの他の例を示す図。
【図５】第１実施形態のロボット動作制御の処理手順を示すフローチャート。
【図６】ＬＭを解消する速度変動パターン作成の処理手順を示すフローチャート。
【図７】第１関節及び第２関節の速度変動パターンを示すタイムチャート。
【図８】ＬＭを縮小させてから動作指令を実行する速度変動パターン作成の処理手順を示すフローチャート。
【図９】第１関節及び第２関節の速度変動パターンを示すタイムチャート。
【図１０】サーボモータ及びアームの回転角度を示すタイムチャート。
【図１１】ハンド部の動作軌跡を示す模式図。
【図１２】サーボモータ及びアームの回転角度を示すタイムチャート。
【図１３】ハンド部の動作軌跡を示す模式図。
【図１４】第２実施形態のロボット動作制御の処理手順を示すフローチャート。
【図１５】第２関節の速度変動パターンを示すタイムチャート。
【図１６】サーボモータ及びアームの回転角度を示すタイムチャート。
【図１７】ハンド部の動作軌跡を示す模式図。
【発明を実施するための形態】
【００１６】
（第１実施形態）
以下、垂直多関節型ロボットを動作させるロボットシステムに具体化した第１実施形態について、図面を参照しつつ説明する。本実施形態のロボットは、例えば産業用ロボットとして機械組立工場などの組立システムにて用いられる。
【００１７】
はじめに、ロボット１０の概要を図１に基づいて説明する。同図に示すように、ロボット１０は、各関節の回転中心軸線として、第１軸線Ｊ１、第２軸線Ｊ２、第３軸線Ｊ３、第４軸線Ｊ４、第５軸線Ｊ５、第６軸線Ｊ６を有する６軸ロボットである。これら各軸線における各部の動作角度は、それぞれサーボモータ等からなる駆動源の駆動、及び減速機等による減速を通じて調整される。減速機として、例えば波動歯車式の減速機が採用されている。サーボモータの出力軸にはギヤが設けられており、このギヤと減速機のギヤとが噛み合っている。サーボモータは、いずれも正逆両方向の回転が可能であり、モータ駆動により原点位置を基準として各部が動作する。なお、各関節には、各軸線を中心として各部を滑らかに回転可能とする軸受け（軸受け手段）が設けられている。
【００１８】
ロボット１０は、床に設置されており、第１軸線Ｊ１が鉛直方向へ延びている。ロボット１０において、基台１１は、床等に固定される固定部１２と、その固定部１２の上方に設けられる回転部１３（第１回転部）とを有しており、回転部１３が第１軸線Ｊ１を回転中心として水平方向に回転可能になっている。すなわち、回転部１３は、第１軸線Ｊ１の方向に延びるとともに、固定部１２により第１軸線Ｊ１を中心として回転可能に支持されている。
【００１９】
下アーム１５（第２回転部）が、水平方向に延びる第２軸線Ｊ２を回転中心として、時計回り方向又は反時計回り方向に回転可能に連結されている。すなわち、下アーム１５は、第１軸線Ｊ１に直交する平面に含まれる第２軸線Ｊ２から離れる方向へ延びるとともに、回転部１３により第２軸線Ｊ２を中心として回転可能に支持されている。下アーム１５は、基本姿勢として鉛直方向に延びる向きに設けられている。
【００２０】
下アーム１５の上端部には、上アーム１６が、水平方向に延びる第３軸線Ｊ３を回転中心として、時計回り方向又は反時計回り方向に回転可能に連結されている。すなわち、上アーム１６は、第２軸線Ｊ２に平行な第３軸線Ｊ３から離れる方向へ延びるとともに、下アーム１５により第３軸線Ｊ３を中心として回転可能に支持されている。上アーム１６は、基本姿勢として水平方向に延びる向きに設けられている。
【００２１】
上アーム１６は、支持側と先端側とで２つのアーム部に分割されて構成されており、支持側は第１上アーム１６Ａ（第３回転部）、先端側は第２上アーム１６Ｂ（第４回転部）となっている。第２上アーム１６Ｂは、上アーム１６の長手方向に延びる第４軸線Ｊ４を回転中心として、第１上アーム１６Ａに対してねじり方向に回転可能になっている。すなわち、第２上アーム１６Ｂは、第３軸線Ｊ３に直交する平面に含まれる第４軸線Ｊ４の方向に延びるとともに、第１上アーム１６Ａにより第４軸線Ｊ４を中心として回転可能に支持されている。
【００２２】
上アーム１６（詳しくは第２上アーム１６Ｂ）の先端部には、手首部１７（第５回転部）が設けられている。手首部１７は、水平方向に延びる第５軸線Ｊ５を回転中心として、第２上アーム１６Ｂに対して回転可能になっている。すなわち、手首部１７は、第４軸線Ｊ４に直交する第５軸線Ｊ５から離れる方向へ延びるとともに、第２上アーム１６Ｂにより第５軸線Ｊ５を中心として回転可能に支持されている。
【００２３】
手首部１７の先端部には、ワークやツール等を取り付けるためのハンド部１８（第６回転部）が設けられている。ハンド部１８は、その中心線である第６軸線Ｊ６を回転中心として、ねじり方向に回転可能になっている。すなわち、ハンド部１８は、第５軸線Ｊ５に直交する第６軸線Ｊ６の方向に延びるとともに、手首部１７により第６軸線Ｊ６を中心として回転可能に支持されている。
【００２４】
図２に、ロボット１０の制御装置２０及びその周辺構成を示す。制御装置２０は、ロボット１０の動作を制御するものであり、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、駆動回路２５、及び回転位置検出回路２６等を備えている。これらは互いに電気的に接続されている。ＲＯＭ２２は、ロボット１０のシステムプログラムや動作プログラム等を記憶している。ＲＡＭ２３は、これらのプログラムを実行する際にパラメータの値等を記憶する。ＣＰＵ２１は、これらのＲＯＭ２２やＲＡＭ２３の記憶内容に基づいて、各種プログラムを実行することにより、ロボット１０の動作を制御する。
【００２５】
ロボット１０において、各軸線Ｊ１〜Ｊ６を回転中心軸とした各関節には、それぞれ前段部側にサーボモータ３１が設けられている。ＣＰＵ２１は、駆動回路２５を通じて、各サーボモータ３１の駆動を行う。これにより、各関節において、前段部に設けられたサーボモータ３１の駆動により、後段部がそれぞれ回転動作する。
【００２６】
各サーボモータ３１には、その出力軸を制動する非励磁作動型の電磁ブレーキ３３と、出力軸の回転角度（回転位置）に応じたパルス信号を出力するエンコーダ３２とがそれぞれ設けられている。
【００２７】
各電磁ブレーキ３３は、ばね等の弾性力に基づきサーボモータ３１の出力軸の制動を行い、励磁コイルへの電力供給に基づき出力軸の制動を解除する。ＣＰＵ２１は、駆動回路２５を通じて、各電磁ブレーキ３３の駆動を行う。ＣＰＵ２１は、各電磁ブレーキ３３による出力軸の制動を解除した状態において各サーボモータ３１の駆動を行う。
【００２８】
各エンコーダ３２は、所定パターンに形成された回転子の回転を磁気的又は光学的に検出する検出素子と、その検出素子の信号を処理するＩＣとを有している。回転位置検出回路２６には、各エンコーダ３２の検出信号がそれぞれ入力される。回転位置検出回路２６は、各エンコーダ３２の検出信号に基づいて、回転部１３、下アーム１５、第１上アーム１６Ａ、第２上アーム１６Ｂ、手首部１７、及びハンド部１８の各回転角度（各回転位置）を検出する。
【００２９】
具体的には、回転位置検出回路２６は、固定部１２に対する回転部１３の回転角度（回転位置）、回転部１３に対する下アーム１５の回転角度、下アーム１５に対する第１上アーム１６Ａの回転角度、第１上アーム１６Ａに対する第２上アーム１６Ｂの回転角度、第２上アーム１６Ｂに対する手首部１７の回転角度、手首部１７に対するハンド部１８の回転角度をそれぞれ検出し、それら検出した回転位置情報をＣＰＵ２１に出力する。
【００３０】
そして、ＣＰＵ２１は、動作プログラムを実行することにより、回転位置検出回路２６から入力される回転位置情報に基づいて、ロボット１０の上記各部の動作をフィードバック制御する。
【００３１】
ロボット１０のユーザは、ロボット１０を動作させる指令を記述した動作プログラムを作成する。この動作プログラムでは、ロボット１０に作業を行わせるべく、ロボット１０のハンド部１８を移動させる各動作点（各移動先）を設定する。さらに、各動作点へのハンド部１８の移動や、ハンド部１８の移動の待機等を指令する。
【００３２】
ＣＰＵ２１は、この動作プログラムに基づいて、各関節を動作させる速度変動パターン（動作パターン）を作成し、その作成した速度変動パターンによりロボット１０の各関節を同期動作させる。また、ＣＰＵ２１は、後述するロストモーションを解消する速度変動パターンの作成、及びロストモーションを縮小させてから動作指令を実行する速度変動パターンの作成を実行する。
【００３３】
図３に、動作プログラムの一例を示す。この例では、２つの移動指令Ｍｏｖｅの間に待機指令Ｄｅｌａｙが挿入されている。具体的には、この動作プログラムでは、移動先として位置Ｐ０，Ｐ１，Ｐ２が設定されている。そして、ハンド部１８を位置Ｐ０に移動させた後に所定時間待機し、次にハンド部１８を位置Ｐ１へ移動させた後に位置Ｐ２へ移動させる。
【００３４】
図４に、動作プログラムの他の例を示す。この例では、複数の移動指令Ｍｏｖｅの間に待機指令Ｄｅｌａｙが挿入されておらず、移動指令Ｍｏｖｅを連続して実行する。具体的には、この動作プログラムでは、移動先として位置Ｐ０，Ｐ１，Ｐ２が設定されている。そして、ハンド部１８を位置Ｐ０，Ｐ１，Ｐ２へ順に移動させる。
【００３５】
ＣＰＵ２１は、これらの動作プログラムに基づいて、各関節を動作させる速度変動パターンを作成する。具体的には、ハンド部１８を目標位置（移動先）へ移動させるための各関節の目標回転位置を算出する。そして、各関節について現在の回転位置から目標回転位置へ移動させる速度変動パターンを作成する。さらに、作成した各速度変動パターンに基づいて、各サーボモータ３１を駆動する電流値を算出し、算出された電流値で各サーボモータ３１を駆動させる。
【００３６】
図５に、ロボット動作制御の処理手順を示す。この一連の処理は、ロボット１０を動作プログラムにより動作させる際に、ＣＰＵ２１によって繰り返し実行される。
【００３７】
まず、動作プログラムにおいて実行すべき指令を読み込む（Ｓ１１）。そして、読み込まれた指令が動作指令であるか否か判定する（Ｓ１２）。この判定において、読み込まれた指令が動作指令でないと判定した場合は（Ｓ１２：ＮＯ）、次の指令を読み込む（Ｓ１３）。例えば、図３に示す動作プログラムにおいて、前回の処理でＭｏｖｅ  ｐ，Ｐ０の指令が実行されており、今回の処理でＤｅｌａｙ  １０００の指令を実行するとする。この場合、Ｄｅｌａｙ指令は動作指令ではないため、次のＭｏｖｅ  Ｌ，Ｐ１の指令が読み込まれる。
【００３８】
次の指令を読み込んだ後（Ｓ１３）、読み込まれた次の指令が動作指令であるか否か判定する（Ｓ１４）。この判定において、読み込まれた次の指令が動作指令でないと判定した場合は（Ｓ１４：ＮＯ）、再度次の指令を読み込む（Ｓ１３）。
【００３９】
一方、上記判定において、読み込まれた次の指令が動作指令であると判定した場合は（Ｓ１４：ＹＥＳ）、今回の以前に読み込まれた動作指令と今回読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションＬＭを推定する（Ｓ１５）。図３に示す例では、前回の処理で読み込まれたＭｏｖｅ  ｐ，Ｐ０の動作指令の指令と、今回の処理で読み込まれたＭｏｖｅ  Ｌ，Ｐ１の動作指令とに基づいて、Ｍｏｖｅ  ｐ，Ｐ０の動作指令が実行された後にＭｏｖｅ  Ｌ，Ｐ１の動作指令が実行される際に発生するロストモーションＬＭを推定する。具体的には、位置Ｐ０へハンド部１８を移動させた際のサーボモータ３１の回転方向と、位置Ｐ１へハンド部１８を移動させる際のサーボモータ３１の回転方向とが反対となる関節を抽出する。そして、抽出された関節について、その関節のサーボモータ３１の出力軸に設けられたギヤと、そのギヤに噛み合う減速機のギヤとのバックラッシュ量等に基づいて、ロストモーションＬＭを推定する。抽出されなかった関節については、ロストモーションＬＭが発生しないと推定する。
【００４０】
続いて、各関節について、推定されたロストモーションＬＭを解消するための速度変動パターンを作成する（Ｓ１６）。
【００４１】
詳しくは、図６に示すように、ロストモーションＬＭを解消する必要のある関節が存在するか否か判定する（Ｓ１６１）。すなわち、発生するロストモーションＬＭがＳ１５で推定されている関節があるか否か判定する。この判定において、ロストモーションＬＭを解消する必要のある関節が存在しないと判定した場合は（Ｓ１６１：ＮＯ）、Ｓ１６の処理を終了し（ＥＮＤ）、図５のＳ１７の処理に移行する。
【００４２】
一方、上記判定において、ロストモーションＬＭを解消する必要のある関節が存在すると判定した場合は（Ｓ１６１：ＹＥＳ）、複数の関節のロストモーションＬＭを解消する必要があるか否か判定する（Ｓ１６２）。この判定において、複数の関節のロストモーションＬＭを解消する必要があると判定した場合は（Ｓ１６２：ＹＥＳ）、ロストモーションＬＭを解消する各関節の速度変動パターンを作成する（Ｓ１６３）。一方、この判定において、複数の関節のロストモーションＬＭを解消する必要がないと判定した場合は（Ｓ１６２：ＮＯ）、ロストモーションＬＭを解消する関節の速度変動パターンを作成する（Ｓ１６５）。Ｓ１６３又はＳ１６５に続いて、次の動作指令まで各関節の動作時間を延長する（Ｓ１６４）。そして、Ｓ１６の処理を終了し（ＥＮＤ）、図５のＳ１７の処理に移行する。
【００４３】
例えば、図７に示すように、第１軸線Ｊ１を回転中心とする第１関節と、第２軸線Ｊ２を回転中心とする第２関節とにおいて、ロストモーションＬＭを解消するとする。この場合、（ａ）に示すように、第１関節においてロストモーションＬＭ１を解消する速度変動パターンＰ１１が作成される。すなわち、速度変動パターンＰ１１で示す台形の面積がロストモーションＬＭ１に相当する。また、（ｂ）に示すように、第２関節においてロストモーションＬＭ２を解消する速度変動パターンＰ２１が作成される。すなわち、速度変動パターンＰ２１で示す台形の面積がロストモーションＬＭ２に相当する。第１関節及び第２関節は、最大限の回転速度（速度）で回転されている。
【００４４】
ここでは、第１関節において、速度変動パターンＰ１１の終了時刻が、次の動作指令の速度変動パターンＰ１２の開始時刻ｔ１４と一致している。これに対して、第２関節において、速度変動パターンＰ２１の終了時刻ｔ１２は、次の動作指令の速度変動パターンＰ２３の開始時刻ｔ１４よりも早くなっている。このため、速度変動パターンＰ２２に示すように、速度変動パターンＰ２３の開始時刻ｔ１４まで、第２関節の動作時間を延長する。このとき、（ｂ）において、速度変動パターンＰ２２で示す台形の面積は速度変動パターンＰ２１で示す台形の面積と等しくなっており、速度変動パターンＰ２２によってもロストモーションＬＭ２が解消される。なお、例えば第２関節のロストモーションＬＭ２のみを解消する必要がある場合には、速度変動パターンＰ２２のみを作成する。
【００４５】
上記のロストモーションＬＭを解消する速度変動パターンＰ１１，Ｐ２２は、今回の動作指令の以前に実行された動作指令（速度変動パターン）の終了（時刻０）に続けて設定されている。そして、速度変動パターンＰ１１，Ｐ２２は、今回の動作指令（速度変動パターンＰ１２，Ｐ２３）の開始まで設定されている。すなわち、速度変動パターンＰ１１，Ｐ２２は、今回の動作指令の以前に実行された動作指令の終了から、今回の動作指令が実行されるまでの全期間にわたって設定されている。さらに、速度変動パターンＰ１１，Ｐ２２では、加速を開始する時刻０、加速を終了する時刻ｔ１１、減速を開始する時刻ｔ１３、及び減速を終了する時刻ｔ１４がそれぞれ一致している。すなわち、ロストモーションＬＭの解消に際して、複数の関節を同期動作させる速度変動パターンを作成する。
【００４６】
図５に戻り、Ｓ１７では、ロストモーションＬＭを解消する速度変動パターンを実行する。例えば、図７の速度変動パターンＰ１１，Ｐ２２を実行する。そして、速度変動パターンＰ１１，Ｐ２２に基づいて、各サーボモータ３１を駆動する電流値を算出し、算出された電流値で各サーボモータ３１を駆動させる。なお、ロストモーションＬＭを解消する速度変動パターンが作成されていない関節については、Ｓ１７の処理を実行しない。
【００４７】
続いて、Ｓ１４で読み込まれた次の動作指令の速度変動パターンを作成する（Ｓ１８）。例えば、図７の速度変動パターンＰ１２，Ｐ２３や、他の関節の速度変動パターンを作成する。これらの速度変動パターンでは、加速を開始する時刻ｔ１４、加速を終了する時刻ｔ１５、減速を開始する時刻ｔ１６、及び減速を終了する時刻ｔ１７がそれぞれ一致している。すなわち、次の動作指令の実行に際して、複数の関節を同期動作させる速度変動パターンを作成する。そして、作成された各関節の速度変動パターンを実行する（Ｓ１９）。このとき、各速度変動パターンに基づいて、各サーボモータ３１を駆動する電流値を算出し、算出された電流値で各サーボモータ３１を駆動させる。その後、この一連の処理を一旦終了し（ＥＮＤ）、ロボット１０を動作プログラムにより続けて動作させる場合には、再度Ｓ１１の処理から実行する。
【００４８】
また、Ｓ１２の判定において、読み込まれた指令が動作指令であると判定した場合は（ＹＥＳ）、今回の以前に実行された動作指令と今回読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションＬＭを推定する（Ｓ２０）。図４に示す例では、前回の処理で読み込まれたＭｏｖｅ  ｐ，Ｐ０の動作指令と、今回の処理で読み込まれたＭｏｖｅ  Ｌ，Ｐ１の動作指令とに基づいて、Ｍｏｖｅ  ｐ，Ｐ０の動作指令が実行された後にＭｏｖｅ  Ｌ，Ｐ１の動作指令が実行される際に発生するロストモーションＬＭを推定する。ロストモーションＬＭの推定方法は、Ｓ１５と同一である。
【００４９】
続いて、各関節について、推定されたロストモーションＬＭを縮小させてから今回の処理で読み込まれた動作指令を実行する速度変動パターンを作成する（Ｓ２１）。
【００５０】
詳しくは、図８に示すように、ロストモーションＬＭを縮小する必要のある関節が存在するか否か判定する（Ｓ２１１）。すなわち、発生するロストモーションＬＭがＳ２０で推定されている関節があるか否か判定する。この判定において、ロストモーションＬＭを縮小させる必要のある関節が存在すると判定した場合は（Ｓ２１１：ＹＥＳ）、複数の関節のロストモーションＬＭを縮小させる必要があるか否か判定する（Ｓ２１２）。この判定において、複数の関節のロストモーションＬＭを縮小させる必要があると判定した場合は（Ｓ２１２：ＹＥＳ）、各関節について縮小させるロストモーションＬＭの量を算出する（Ｓ２１３）。算出された量だけロストモーションＬＭを縮小させる各関節の速度変動パターンを作成する（Ｓ２１４）。続いて、ロストモーションＬＭを縮小させるために最も長い時間を要する関節を抽出する（Ｓ２１５）。そして、ロストモーションＬＭを縮小させるために最も長い時間を要する関節に合わせて、他の関節の動作時間を延長する（Ｓ２１６）。
【００５１】
一方、Ｓ２１２の判定において、複数の関節のロストモーションＬＭを縮小させる必要がないと判定した場合は（ＮＯ）、ロストモーションＬＭを縮小させる関節について、縮小させるロストモーションＬＭの量を算出する（Ｓ２１７）そして、ロストモーションＬＭを縮小させる関節の速度変動パターンを作成する（Ｓ２１８）。
【００５２】
また、Ｓ２１１の判定において、ロストモーションＬＭを縮小する必要のある関節が存在しないと判定した場合は（Ｓ２１１：ＮＯ）、Ｓ１２で読み込まれた動作指令に基づいて、各関節の速度変動パターンを作成する（Ｓ２１９）。これらの速度変動パターンでは、加速を開始する時刻、加速を終了する時刻、減速を開始する時刻、及び減速を終了する時刻がそれぞれ一致している。すなわち、複数の関節を同期動作させる速度変動パターンを作成する。なお、Ｓ２１６又はＳ２１８の後も、Ｓ２１９の処理へ移行し、ロストモーションＬＭを縮小させる速度変動パターンに連続して、動作指令に基づく各関節の速度変動パターンを作成する。その後、Ｓ２１の処理を終了し（ＥＮＤ）、図５のＳ２２の処理に移行する。
【００５３】
例えば、図９に示すように、第１軸線Ｊ１を回転中心とする第１関節と、第２軸線Ｊ２を回転中心とする第２関節とにおいて、ロストモーションＬＭを縮小させるとする。この場合、（ａ）に示すように、第１関節においてロストモーションＬＭ１を解消する速度変動パターンＰ１４が作成される。すなわち、速度変動パターンＰ１４で示す台形の面積がロストモーションＬＭ１に相当する。また、（ｂ）に示すように、第２関節においてロストモーションＬＭ２を解消する速度変動パターンＰ２４が作成される。すなわち、速度変動パターンＰ２４で示す台形の面積がロストモーションＬＭ２に相当する。第１関節及び第２関節は、最大限の回転速度（速度）で回転されている。
【００５４】
本来、今回の動作指令の以前に実行された動作指令（速度変動パターン）の終了（時刻０）に続けて、今回の動作指令の速度変動パターンＰ１５，Ｐ２６が設定されることになる。ここでは、今回の動作指令の速度変動パターンＰ１５，Ｐ２６を実行する前に、ロストモーションＬＭ１，ＬＭ２を縮小させる速度変動パターンＰ１４，Ｐ２５を設定する。このため、ロストモーションＬＭ１、ＬＭ２を縮小させる時間を必要最小限とすべく、ロストモーションＬＭ１，ＬＭ２が所定量未満に縮小された時に、今回の動作指令（速度変動パターンＰ１６，Ｐ２７）を開始するように速度変動パターンＰ１６を設定する。
【００５５】
詳しくは、各関節の許容回転誤差Δθ、ハンド部１８の許容位置誤差ΔＰ、ヤコビアンＪは、Δθ＝ΔＰ／Ｊの関係式で表される。なお、ヤコビアンＪは、微小領域において、ハンド部１８の位置と各関節との関係を表した係数の行列であり、各回転部の長さ及び角度、並びに回転部の構成により決定される。このため、ハンド部１８の許容位置誤差ΔＰを設定することにより、各関節の許容回転誤差Δθを算出することができる。そして、各関節において縮小すべきロストモーションＬＭの量を、ＬＭ１−Δθ１、ＬＭ２−Δθ２にそれぞれ設定する。このため、第１関節において、ロストモーションＬＭ１の残りが許容回転誤差Δθ１未満となった時刻ｔ２４に、速度変動パターンＰ１６を開始する。その結果、速度変動パターンＰ１４と速度変動パターンＰ１６とが重複する部分では、速度変動パターンＰ１７を設定する。
【００５６】
このとき、第２関節においてロストモーションＬＭ２が所定量（許容回転誤差Δθ２）未満に縮小される時刻ｔ２２は、第１関節においてロストモーションＬＭ１が所定量（許容回転誤差Δθ１）未満に縮小される時刻ｔ２４よりも早くなっている。このため、速度変動パターンＰ２５に示すように、時刻ｔ２２以後も第２関節の動作時間を延長し、ロストモーションＬＭ２を更に縮小させる。詳しくは、ロストモーションＬＭを縮小させるために最も長い時間を要する第１関節に合わせて、第２関節の動作時間を時刻ｔ２４まで延長する。（ｂ）において、速度変動パターンＰ２５で示す台形の面積は速度変動パターンＰ２４で示す台形の面積と等しくなっており、速度変動パターンＰ２５によってロストモーションＬＭ２が完全に解消される。なお、例えば第２関節のロストモーションＬＭ２のみを縮小させる必要がある場合には、時刻ｔ２２に今回の動作指令（速度変動パターンＰ２７）を開始するように、速度変動パターンＰ２７を作成する。この場合は、第１関節の速度変動パターンＰ１４を作成せず、第２関節の速度変動パターンＰ２５のみを作成する。
【００５７】
図５に戻り、Ｓ２２では、ロストモーションＬＭを縮小させてから今回の処理で読み込まれた動作指令を実行する速度変動パターンを実行する。例えば、図９の速度変動パターンＰ１４，Ｐ１７，Ｐ１６（速度変動パターンＰ２５，Ｐ２７）を実行する。そして、これらの速度変動パターンに基づいて、各サーボモータ３１を駆動する電流値を算出し、算出された電流値で各サーボモータ３１を駆動させる。その後、この一連の処理を一旦終了し（ＥＮＤ）、ロボット１０を動作プログラムにより続けて動作させる場合には、再度Ｓ１１の処理から実行する。
【００５８】
なお、Ｓ１１の処理が読込部としての処理に相当し、Ｓ１９，Ｓ２２の処理が実行部としての処理に相当し、Ｓ１３の処理が先読み部としての処理に相当し、Ｓ１５，Ｓ２０の処理が推定部としての処理に相当し、Ｓ１６，Ｓ１７の処理が解消部としての処理に相当し、Ｓ２１の処理が作成部としての処理に相当する。
【００５９】
図１０に、図５のＳ１５〜Ｓ１９の処理による作用を比較例と併せて示す。ここでは、第１軸線Ｊ１を回転中心とする第１関節のロストモーションＬＭ１は解消する必要がなく、第２軸線Ｊ２を回転中心とする第２関節のロストモーションＬＭ２を解消する必要があるものとする。そして、時刻ｔ１４で次の動作指令を開始するまでに、ロストモーションＬＭ１を解消する場合について示す。
【００６０】
（ａ）に示すように、第１関節では、Ｍ１で示す比較例のサーボモータ３１の回転角度と、Ｍ２で示す本実施形態のサーボモータ３１の回転角度とは一致している。すなわち、第１関節では、ロストモーションＬＭ１を解消する必要がないため、ロストモーションＬＭ１を解消する速度変動パターンは作成されていない。
【００６１】
一方、（ｂ）に示すように、第２関節では、破線Ｍ１で示す比較例のサーボモータ３１の回転角度は、次の動作指令が開始される時刻ｔ１４から増加させられている。これに対して、実線Ｍ２で示す本実施形態のサーボモータ３１の回転角度は、時刻０から時刻ｔ１４にわたって増加させられている。すなわち、時刻ｔ１４までに、ロストモーションＬＭ２を解消する速度変動パターンが実行されている。
【００６２】
このため、比較例では、破線Ａ１で示すアームの回転角度が、実線ＡＲで示す理想的なアームの回転角度から大きくずれている。これに対して、本実施形態では、実線Ａ２で示すアームの回転角度は、実線ＡＲで示す理想的なアームの回転角度と略一致している。
【００６３】
図１１に、図５のＳ１５〜Ｓ１９の処理によるロボット１０のアームの軌跡を比較例と併せて示す。ここでは、ｘ軸方向の位置を一定に維持しつつ、ｙ軸方向へハンド部１８を移動させる動作を例として示す。破線Ｈ１で示す比較例のハンド部１８の動作軌跡では、ｘ軸方向の位置が大きくずれている。これに対して、実線Ｈ２で示す本実施形態のハンド部１８の動作軌跡では、ｘ軸方向の位置が一定に維持されている。
【００６４】
また、図１２に、図５のＳ２０〜Ｓ２２の処理による作用を比較例と併せて示す。ここでは、第１軸線Ｊ１を回転中心とする第１関節のロストモーションＬＭ１は解消する必要がなく、第２軸線Ｊ２を回転中心とする第２関節のロストモーションＬＭ２を解消する必要があるものとする。そして、本来時刻０で動作指令を開始するところを、第２関節のロストモーションＬＭ２を所定量未満に縮小させてから時刻ｔ２４で動作指令を開始する場合について示す。
【００６５】
（ａ）に示すように、第１関節では、破線Ｍ１で示す比較例のサーボモータ３１の回転角度は、動作指令の本来の開始時刻である時刻０から増加させられている。これに対して、実線Ｍ２で示す本実施形態のサーボモータ３１の回転角度は、ロストモーションＬＭ２が所定量まで縮小する時刻である時刻ｔ２４から増加させられている。
【００６６】
（ｂ）に示すように、第２関節では、破線Ｍ１で示す比較例のサーボモータ３１の回転角度は、動作指令の本来の開始時刻である時刻０から増加させられている。これに対して、実線Ｍ２で示す本実施形態のサーボモータ３１の回転角度は、ロストモーションＬＭ２を迅速に縮小すべく、時刻０から破線Ｍ１で示す比較例のサーボモータ３１の回転角度よりも速く増加させられている。そして、時刻ｔ２４において、ロストモーションＬＭ２が所定量未満にされている。
【００６７】
このため、比較例では、破線Ａ１で示すアームの回転角度が、実線ＡＲで示す理想的なアームの回転角度から大きくずれている。これに対して、本実施形態では、実線Ａ２で示すアームの回転角度は、実線ＡＲで示す理想的なアームの回転角度と略一致している。
【００６８】
図１３に、図５のＳ２０〜Ｓ２２の処理によるロボット１０のアームの軌跡を比較例と併せて示す。ここでは、ｘ軸方向の位置を一定に維持しつつ、ｙ軸方向へハンド部１８を移動させる動作を例として示す。破線Ｈ１で示す比較例のハンド部１８の動作軌跡では、ｘ軸方向の位置が大きくずれている。これに対して、実線Ｈ２で示す本実施形態のハンド部１８の動作軌跡では、ｘ軸方向の位置のずれが比較例よりも小さくなっている。
【００６９】
以上詳述した本実施形態は以下の利点を有する。
【００７０】
・読込部により、動作プログラムに含まれる指令が順次読み込まれる（Ｓ１１）。そして、読込部により読み込まれた指令が、実行部により順次実行される（Ｓ１９，Ｓ２２）。ここで、読込部により読み込まれた指令が動作指令でない場合に（Ｓ１２：ＮＯ）、先読み部により次の指令が読み込まれる（Ｓ１３）。すなわち、読込部により読み込まれた指令が、例えばＤｅｌａｙ  １０００である場合には、次の動作指令が実行されるまでに、ロストモーションＬＭを解消するための処理（Ｓ１５〜Ｓ１７）を実行することができる。
【００７１】
そして、先読み部により読み込まれた指令が動作指令である場合に、推定部により、先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令と、先読み部により読み込まれた動作指令とに基づいて、それらの動作指令が実行部により連続して実行される際に発生するロストモーションＬＭが推定される（Ｓ１５）。すなわち、先読み部により読み込まれた動作指令が実際に実行される前に、その動作指令が実行された場合に発生するロストモーションＬＭが推定される。ここで、ロボット１０は垂直多関節型ロボットであり、多様な動作が可能であるため、ロストモーションの発生状況も大きく変化する。この点、推定部により、ロストモーションＬＭが推定されるため、ロボット１０においてロストモーションの発生状況が変化したとしても対応することができる。
【００７２】
さらに、解消部により、先読み部により読み込まれた動作指令が実行部により実行されるまでに、推定部により推定されたロストモーションＬＭを解消するように複数の関節が同期動作させられる（Ｓ１６，Ｓ１７）。したがって、動作指令の終了から次の動作指令が実行されるまでの間にロストモーションＬＭを解消することができ、ロボット１０の多軸同期動作時の軌跡誤差を更に縮小することができる。特に、ロボット１０の作業では、迅速な動作が要求されるため、事前にロストモーションを解消することの利益が大きい。
【００７３】
・図７に示すように、先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令の終了（時刻０）に続けて、ロストモーションＬＭを解消する制御、すなわち速度変動パターンＰ１１，Ｐ２２が実行される。このため、ロストモーションＬＭを解消する制御を早い時期から開始することができ、ロストモーションＬＭを解消するまでの時間を短縮することができる。
【００７４】
・先読み部により動作指令が読み込まれる前に読込部により読み込まれた動作指令の終了（時刻０）から、先読み部により読み込まれた動作指令が実行部により実行されるまでの全期間（時刻０〜時刻ｔ１４）にわたって、ロストモーションＬＭを解消する制御が実行される。このため、ロストモーションＬＭを解消する制御の時間を長く確保することができ、複数の関節を同期動作させる速度を、速度変動パターンＰ２２のように低下させることができる。その結果、ロストモーションＬＭを解消する制御での軌跡誤差を縮小することができ、ロボット１０の多軸同期動作時の軌跡誤差を更に縮小することができる。
【００７５】
・ロストモーションＬＭを解消する際に、最も長い時間を要する第１関節が最大限の速度で動作させられる。このため、ロストモーションＬＭを解消するまでの時間を更に短縮することができる。したがって、先読み部により読み込まれた動作指令が実行されるまでの待機時間が短い場合に有効である。
【００７６】
・推定部により抽出されてロストモーションＬＭが推定された第１，第２関節について、その第１，第２関節のロストモーションＬＭ１，ＬＭ２を解消するようにサーボモータ３１を回転させる速度変動パターンＰ１１，Ｐ２２がそれぞれ作成される（Ｓ１６）。すなわち、ロストモーションＬＭ１，ＬＭ２をそれぞれ解消する必要のある第１，第２関節が抽出され、その第１，第２関節についてロストモーションＬＭ１，ＬＭ２を解消するサーボモータ３１の速度変動パターンＰ１１，Ｐ２２がそれぞれ作成される。そして、作成された速度変動パターンＰ１１，Ｐ２２が実行されるため、対象となる第１，第２関節のロストモーションＬＭ１，ＬＭ２を解消することができる。
【００７７】
・読込部により読み込まれた指令が動作指令である場合に（Ｓ１２：ＹＥＳ）、推定部により、読込部により動作指令が読み込まれる前に実行された動作指令と読込部により読み込まれた動作指令とに基づいて、それらの動作指令が連続して実行される際に発生するロストモーションＬＭが推定される（Ｓ２０）。そして、作成部により、読込部により読み込まれた動作指令及び推定部により推定されたロストモーションＬＭに基づいて、ロストモーションＬＭを縮小させてから複数の関節を同期動作させる動作パターンが作成される（Ｓ２１）。
【００７８】
すなわち、読込部により読み込まれた指令が動作指令である場合には、次の動作指令を実行するまでに時間がないため、予めロストモーションＬＭを縮小させる制御を含む速度変動パターンＰ１４，Ｐ１７，Ｐ１６（Ｐ２５，Ｐ２７）が作成される。その後、実行部により、作成部により作成された動作パターンが実行される（Ｓ２２）。したがって、ロストモーションＬＭが縮小された後に動作指令が実際に実行されるようになり、ロボット１０の多軸同期動作時の軌跡誤差を更に縮小することができる。その結果、連続した動作が実行されるロボット１０においても、ロストモーションＬＭを解消して、軌道誤差を更に縮小することができる。
【００７９】
・作成部により、ロストモーションＬＭを縮小させる期間の終了部分に、複数の関節を同期動作させる期間の開始部分を重複させるように動作パターンが作成される。すなわち、図９に示すように、速度変動パターンＰ１４の終了部分に、速度変動パターンＰ１６の開始部分を重複させている。このため、動作指令に基づく同期動作（速度変動パターンＰ１６）の開始時期を早めることができ、ロストモーションＬＭ１の縮小から同期動作へと円滑に移行させることができる。特に、ロボット１０では、次の動作の実行が遅れることを抑制する効果が高い。
【００８０】
・作成部により、ロストモーションＬＭ１が所定量（許容回転誤差Δθ１）未満に縮小された時刻ｔ２４に、複数の関節の同期動作を開始するように速度変動パターンＰ１６，Ｐ２７が作成される。このため、動作指令に基づく同期動作の開始時期を早めつつ、ロストモーションＬＭ１を所定量未満に縮小することができる。
【００８１】
・ロストモーションＬＭを所定量未満に縮小するために最も長い時間を要する第１関節の動作時間に合わせて、第２関節の動作時間が延長されるように速度変動パターンＰ２５が作成される。このため、ロストモーションＬＭ１を確実に所定量未満に縮小させつつ、ロストモーションＬＭ１，ＬＭ２を縮小させる制御に要する時間（時刻０〜時刻ｔ２４）を必要最小限とすることができる。
【００８２】
・作成部により、動作時間が延長された第２関節について、ロストモーションＬＭ２を所定量（許容回転誤差Δθ２）未満に縮小した後も更に縮小させるように速度変動パターンＰ２５が作成される。すなわち、動作時間が延長された第２関節では、ロストモーションＬＭ２を所定量未満に縮小させた後に、延長された動作時間（時刻ｔ２２〜時刻ｔ２４）を用いてロストモーションＬＭ２を更に縮小させている。その結果、ロボット１０の多軸同期動作時の軌跡誤差を一層縮小することができる。
【００８３】
・ロストモーションＬＭを所定量未満に縮小する際に、最も長い時間を要する第１関節を最大限の速度で動作させるように動作パターンＰ１４が作成される（Ｓ２１）。このため、ロストモーションＬＭ１を所定量未満に縮小するまでの時間を更に短縮することができる。
【００８４】
なお、上記第１実施形態を、以下のように変形して実施することもできる。
【００８５】
・図７において、ロストモーションＬＭ１，ＬＭ２を解消する制御の期間を、次の動作指令が実行されるまでの期間のうちの一定期間とすることもできる。この場合には、以前に読み込まれた動作指令の実行が終了してからロストモーションＬＭ１，ＬＭ２を解消する制御を開始するまで、あるいはロストモーションＬＭ１，ＬＭ２を解消してから次の動作指令を実行するまでに、待機期間が発生することとなる。
【００８６】
・図９において、ロストモーションＬＭを所定量未満に縮小するために最も長い時間を要する第１関節の動作時間に合わせて、第２関節のロストモーションＬＭ２が所定量未満に縮小されるように第２関節の動作時間を延長してもよい。すなわち、時刻ｔ２４においてロストモーションＬＭ２の残りが許容回転誤差Δθ２となるように、第２関節の速度変動パターンを作成してもよい。この場合には、第２関節の回転速度を更に低下させることができる。
【００８７】
・解消部は、ロストモーションＬＭを解消するために最も長い時間を要する関節の動作時間に合わせて、他の関節の動作時間を延長することで、複数の関節を同期動作させるようにしてもよい。例えば、図７において、第１関節の速度変動パターンＰ１１の終了時刻が、次の動作指令の速度変動パターンＰ１２の開始時刻ｔ１４よりも早い場合に、速度変動パターンＰ１１に合わせて、第２関節の動作時間を延長してもよい。すなわち、第２関節の速度変動パターンＰ２２の終了時刻を、第１関節の速度変動パターンＰ１１の終了時刻に合わせてもよい。
【００８８】
上記構成によれば、ロストモーションＬＭを解消するために最も長い時間を要する第１関節の動作時間に合わせて、第２関節の動作時間が延長されることで、複数の関節が同期動作させられる。このため、ロストモーションＬＭ１，ＬＭ２を確実に解消しつつ、ロストモーションＬＭ１，ＬＭ２を解消する制御に要する時間を必要最小限とすることができる。
【００８９】
（第２実施形態）
以下、ロボット動作制御の処理を一部変更した第２実施形態について、図面を参照しつつ説明する。本実施形態では、図５のＳ２０〜Ｓ２２の処理を、図１４に示すようにＳ３１〜Ｓ３４の処理に変更するとともに、Ｓ１８とＳ１９との間にも同様のＳ３１〜Ｓ３４の処理を追加している。その他の構成については第１実施形態と同一であるため、同一の符号を付すことにより説明を省略する。
【００９０】
Ｓ１２の判定において、読み込まれた指令が動作指令であると判定した場合は（ＹＥＳ）、読み込まれた動作指令の速度変動パターンを作成する（Ｓ３１）。具体的には、複数の関節を同期動作させるように、各関節の速度変動パターンを作成する。そして、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターン（速度反転パターン）が含まれているか否か判定する（Ｓ３２）。
【００９１】
例えば、図１５に示すように、第２軸線Ｊ２を回転中心とする第２関節において、回転速度が正と負との間で変化する場合は、第２関節の速度変動パターンＰ２８の中に反転パターン（一点鎖線部分のうち時刻ｔ３１〜時刻ｔ３２の部分）が含まれていると判定する。Ｓ３２の判定において、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターンが含まれていると判定した場合は（ＹＥＳ）、作成された速度変動パターンＰ２８（反転パターン）において、反転を開始する時期を早くするように速度変動パターンＰ２８を補正する（Ｓ３３）。すなわち、反転を開始する時刻を、時刻ｔ３１から時刻ｔ３３へ変更する。詳しくは、速度変動パターンＰ２８において反転を開始してから反転を終了するまでの期間Ｔｒの半分の期間だけ、速度変動パターンＰ２８において反転を開始する時期を早くするように速度変動パターンＰ２８を補正する。
【００９２】
図１４に戻り、Ｓ３４では、各関節の速度変動パターンを実行する。そして、これらの速度変動パターンに基づいて、各サーボモータ３１を駆動する電流値を算出し、算出された電流値で各サーボモータ３１を駆動させる。また、Ｓ３２の判定において、作成された各関節の速度変動パターンの中に、関節の動作方向を反転させる反転パターンが含まれていないと判定した場合は（ＮＯ）、Ｓ３１で作成された速度変動パターンを補正せず、Ｓ３４の処理を実行する。その後、この一連の処理を一旦終了し（ＥＮＤ）、ロボット１０を動作プログラムにより続けて動作させる場合には、再度Ｓ１１の処理から実行する。
【００９３】
また、Ｓ１８において次の動作指令の速度変動パターンを作成した後も、その作成された速度変動パターンについて、上記Ｓ３２，Ｓ３３の処理を実行する。そして、各関節の速度変動パターンを実行する（Ｓ１９）。その後、この一連の処理を一旦終了し（ＥＮＤ）、ロボット１０を動作プログラムにより続けて動作させる場合には、再度Ｓ１１の処理から実行する。
【００９４】
なお、Ｓ３１の処理が作成部としての処理に相当し、Ｓ３２の処理が判定部としての処理に相当し、Ｓ３３の処理が補正部としての処理に相当し、Ｓ３４の処理が実行部としての処理に相当する。
【００９５】
図１６に、図１４のＳ３１〜Ｓ３４の処理による作用を比較例と併せて示す。破線Ｍ１で示す比較例のサーボモータ３１の回転角度では、時刻ｔ３１においてロボット１０のアームの動作方向を反転させ始める時に、サーボモータ３１の回転方向を反転させ始めている。このため、破線Ａ１で示すアームの回転角度が、二点鎖線ＡＲで示す理想的なアームの回転角度から大きくずれている。これに対して、実線Ｍ２で示す本実施形態のサーボモータ３１の回転角度では、時刻ｔ３１においてロボット１０のアームの動作方向を反転させ始めるよりも前の時刻ｔ３３に、サーボモータ３１の回転方向を反転させ始めている。このため、実線Ａ２で示すアームの回転角度と、二点鎖線ＡＲで示す理想的なアームの回転角度とのずれが小さくなっている。
【００９６】
図１７に、図１４のＳ３１〜Ｓ３４の処理によるロボット１０のアームの軌跡を比較例と併せて示す。ここでは、ｘ軸方向の位置を一定に維持しつつ、ｙ軸方向へハンド部１８を移動させる動作を例として示す。破線Ｈ１で示す比較例のハンド部１８の動作軌跡では、ｙ＝０以降においてｘ軸方向の位置が大きくずれている。これに対して、実線Ｈ２で示す本実施形態のハンド部１８の動作軌跡では、ｙ＝０よりも若干前から若干後までｘ軸方向の位置がずれているものの、そのずれ量は比較例よりも小さくなっている。
【００９７】
以上詳述した本実施形態は以下の利点を有する。
【００９８】
・読込部により、動作プログラムに含まれる指令が順次読み込まれる（Ｓ１１）。そして、作成部により、読込部により読み込まれた指令に基づいて、複数の関節を同期動作させる速度変動パターンが作成される（Ｓ３１）。
【００９９】
ここで、判定部により、作成部により作成された速度変動パターンの中に関節の動作方向を反転させる反転パターン（速度反転パターン）が含まれているか否か判定される（Ｓ３２）。すなわち、関節の動作方向が反転される場合にロストモーションＬＭが発生するため、速度変動パターンの中に関節の動作方向を反転させる反転パターンが含まれているか否か判定する。そして、判定部により反転パターンが含まれていると判定された場合に（Ｓ３２：ＹＥＳ）、補正部により、反転パターンにおいて反転を開始する時期を早くするように、作成部により作成された動作パターンが補正される（Ｓ３３）。すなわち、図１５に示すように、速度変動パターンＰ２８において反転を開始する時刻を、時刻ｔ３１から時刻ｔ３３へ早くする。その後、実行部により、補正部により補正された動作パターンが実行される（Ｓ３４）。
【０１００】
このため、実際に関節が動作させられて動作方向が反転し始めてからロストモーションＬＭを縮小させるのではなく、ロストモーションＬＭを縮小させるように予め速度変動パターンＰ２８を補正しておくことができる。その結果、ロボット１０の多軸同期動作時の軌跡誤差を更に縮小することができる。ロボット１０では、同一の動作が繰り返し実行されることが多いため、その動作中にロストモーションＬＭが発生する場合に、そのロストモーションＬＭを毎回縮小させることのできる利点は大きい。
【０１０１】
・速度変動パターンＰ２８において反転を開始してから反転を終了するまでの期間Ｔｒの半分の期間だけ、速度変動パターンＰ２８において反転を開始する時期を早くするように速度変動パターンＰ２８が補正される。したがって、図１６において、実線Ｍ２で示すように関節（アーム）の動作方向の反転に際して反転パターンが前後に均等に設定されるため、実線Ａ２で示すように反転に際してロストモーションＬＭが前後の一方側に偏ることを抑制することができる。その結果、ロボット１０の多軸同期動作時の軌跡誤差を一層縮小することができる。
【０１０２】
なお、上記第２実施形態を、以下のように変形して実施することもできる。
【０１０３】
・速度変動パターンＰ２８において反転を開始してから反転を終了するまでの期間Ｔｒの半分の期間よりも、若干長い期間又は若干短い期間だけ、速度変動パターンＰ２８において反転を開始する時期を早くするように速度変動パターンＰ２８を補正することもできる。
【０１０４】
上記の各実施形態に限定されず、例えば次のように実施することもできる。
【０１０５】
・垂直多関節型の６軸ロボットに限らず、水平多関節型の４軸ロボット等、それ以外の型式や軸数のロボットを採用することもできる。
【０１０６】
・動作プログラムの言語は、図３，４に示した言語に限らず、任意のプログラム言語を採用することができる。
【符号の説明】
【０１０７】
１０…ロボット、１８…ハンド部、２０…制御装置、２１…ＣＰＵ、３１…サーボモータ、３２…エンコーダ。
【図１】
0005915329.tif 000002
【図２】
0005915329.tif 000003
【図３】
0005915329.tif 000004
【図４】
0005915329.tif 000005
【図５】
0005915329.tif 000006
【図６】
0005915329.tif 000007
【図７】
0005915329.tif 000008
【図８】
0005915329.tif 000009
【図９】
0005915329.tif 000010
【図１０】
0005915329.tif 000011
【図１１】
0005915329.tif 000012
【図１２】
0005915329.tif 000013
【図１３】
0005915329.tif 000014
【図１４】
0005915329.tif 000015
【図１５】
0005915329.tif 000016
【図１６】
0005915329.tif 000017
【図１７】
0005915329.tif 000018