(57)【要約】所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿ってツールを移動させるに際して、合成移動軌跡を求める演算処理を不要として、ロボット制御の前処理に要する処理時間を飛躍的に短縮させる制御装置および制御方法である。先行動作を実現するための先行動作用制御値を初期値から終端値まで演算しておくとともに、後行動作を実現するための後行動作用制御値を初期値から終端値まで演算する。後行動作用制御値の初期値を、先行動作用制御値の終端値に一致させる条件を付加した上で、ツールが合成移動軌跡に沿って移動する区間におけるアクチュエータの今回の目標制御値を、先行動作用制御値の今回値と前回値との差分値と、後行動作用制御値の今回値と前回値との差分値とを加算した値に基づき演算し、この演算された目標制御値が得られるようにアクチュエータを制御する。
2012070572.tif 000002
【特許請求の範囲】
【請求項１】
アクチュエータを有し、当該アクチュエータの制御値を所定の制御周期毎に変化させることによりロボットのツールを所望する移動軌跡に沿って移動開始点から移動終了点まで変化させるロボットの制御装置において、
前記所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿って前記ツールを移動させる際に適用される制御装置であって、
前記合成移動軌跡に入る前より行なわれるべき先行動作の仮想上の動作終了点と、前記合成移動軌跡を抜けた以後も行なわれるべき後行動作の仮想上の動作開始点とが一致するように仮想上の動作開始／終了点を探索する仮想上の動作開始／終了点探索手段と、
前記先行動作が前記仮想上の動作開始／終了点で終了し、かつ前記後行動作が前記仮想上の動作開始／終了点から、前記先行動作が終了するよりも時間的に前に開始するように、前記先行動作を実現するための先行動作用制御値を初期値から終端値まで演算するとともに、前記後行動作を実現するための後行動作用制御値を初期値から終端値まで演算する制御値演算手段と、
前記後行動作用制御値の初期値を、前記先行動作用制御値の終端値に一致させる条件を付加した上で、前記ツールが前記合成移動軌跡に沿って移動する区間におけるアクチュエータの今回の目標制御値を、前記先行動作用制御値の今回値と前回値との差分値と、前記後行動作用制御値の今回値と前回値との差分値とを加算した値に基づき演算するアクチュエータ目標制御値演算手段と、
前記演算された目標制御値が得られるようにアクチュエータを制御して前記ツールを前記合成移動軌跡に沿って移動させる制御手段と
を備えたことを特徴とするロボットの制御装置。
【請求項２】
前記ロボットは、前記ツールとしてワークを搬送するハンドを備えたワーク搬送ロボットであること
を特徴とする請求項１記載のロボットの制御装置。
【請求項３】
アクチュエータは、複数のモータであり、
先行動作用制御値および後行動作用制御値はそれぞれ、前記ツールの位置に対応する複数のモータの制御位置として演算されること
を特徴とする請求項１または２記載のロボットの制御装置。
【請求項４】
前記アクチュエータは、複数の仮想モータであり、
前記少なくとも２つの動作に対応して仮想モータが定められ、
先行動作用制御値および後行動作用制御値はそれぞれ、先行動作に対応する仮想モータの制御値および後行動作に対応する仮想モータの制御値として演算されること
を特徴とする請求項１または２記載のロボットの制御装置。
【請求項５】
先行動作用制御値および後行動作用制御値はそれぞれ、逐次の制御周期毎の関数値として演算されること
を特徴とする請求項１から４に記載のロボットの制御装置。
【請求項６】
アクチュエータを有したロボットの当該アクチュエータの制御値を所定の制御周期毎に変化させることによりロボットのツールを所望する移動軌跡に沿って移動開始点から移動終了点まで変化させるロボットの制御方法において、
前記所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿って前記ツールを移動させる際に適用される制御方法であって、
前記合成移動軌跡に入る前より行なわれるべき先行動作の仮想上の動作終了点と、前記合成移動軌跡を抜けた以後も行なわれるべき後行動作の仮想上の動作開始点とが一致するように仮想上の動作開始／終了点を演算し、
前記先行動作が前記仮想上の動作開始／終了点で終了し、かつ前記後行動作が前記仮想上の動作開始／終了点から、前記先行動作が終了するよりも時間的に前に開始するように、前記先行動作を実現するための先行動作用制御値を初期値から終端値まで演算するとともに、前記後行動作を実現するための後行動作用制御値を初期値から終端値まで演算し、
前記後行動作用制御値の初期値を、前記先行動作用制御値の終端値に一致させる条件を付加した上で、前記ツールが前記合成移動軌跡に沿って移動する区間におけるアクチュエータの今回の目標制御値を、前記先行動作用制御値の今回値と前回値との差分値と、前記後行動作用制御値の今回値と前回値との差分値とを加算した値に基づき演算し、
前記演算された目標制御値が得られるようにアクチュエータを制御して前記ツールを前記合成移動軌跡に沿って移動させる制御を行なう
ことを特徴とするロボットの制御方法。
【請求項７】
先行動作用制御値を初期値から終端値まで演算するための先行動作用変換関数を予め用意するとともに、後行動作用制御値を初期値から終端値まで演算するための後行動作用変換関数を予め用意し、
所定の制御周期毎に、先行動作用変換関数を用いて先行動作用制御値が演算されるとともに、後行動作用変換関数を用いて後行動作用制御値が演算される
ことを特徴とする請求項１記載のロボットの制御装置。
【請求項８】
先行動作用制御値を初期値から終端値まで演算するための先行動作用変換関数を予め用意するとともに、後行動作用制御値を初期値から終端値まで演算するための後行動作用変換関数を予め用意し、
所定の制御周期毎に、先行動作用変換関数を用いて先行動作用制御値が演算されるとともに、後行動作用変換関数を用いて後行動作用制御値が演算される
ことを特徴とする請求項６記載のロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの制御装置に関し、特に複数の移動軌跡を合成した合成移動軌跡に沿ってツールを移動させる制御装置および制御方法に関するものである。
【背景技術】
【０００２】
（従来技術１）
下記特許文献１には、垂直多関節ロボットとして構成され、プレス装置にワークを搬送するワーク搬送ロボットの制御に関する発明が記載されている。すなわち、図１に示すように、ワーク搬送ロボットのハンドを移動開始位置Ｒ１から移動終了位置Ｒ３まで移動させるに際して、移動開始位置Ｒ１から途中位置Ｒ２へ移動する第１動作が完了する前に、途中位置Ｒ２から移動終了位置Ｒ３へ移動する第２動作を開始させることで、ロボットハンドを途中位置Ｒ２の近傍の滑らかな補正移動経路３１０に沿って移動させるという制御が行われる（引用文献１の図９）。この場合、直線状の移動経路の場合と同様に、補正移動経路３１０上の制御時間間隔毎の逐次の移動位置が計算され、計算された移動位置を逆変換演算することによりロボット各軸の目標位置が求められ、この求められたロボット各軸の目標位置が得られるようにロボット各軸を制御することにより、ロボットハンドが補正移動経路３１０に沿って移動することになる（特許文献１の段落００６３および段落００７７〜００７９および図３）。【０００３】
（従来技術２）
下記特許文献２には、図２に示すように、水平多関節ロボットとして構成され、半導体ウェーハＷの搬出および搬入を行うワーク搬送ロボット３００の制御に関する発明が記載されている。すなわち図２において、水平多関節ロボットとして構成されたワーク搬送ロボット３００のアーム３０１、３０２を伸縮動作させて、半導体ウェーハＷが載置されたハンド３０３を点Ｑ１から点Ｑ２方向に向けて直線移動させ、つぎに点Ｑ２の手前の点Ｑ５からアーム伸縮動作と旋回動作を合成したショートカット軌跡に沿って点Ｑ２をショートカットするように点Ｑ６まで移動させ、つぎに点Ｑ６から点Ｑ３に向けてアーム３０１、３０２を旋回動作させ、つぎに点Ｑ３の手前の点Ｑ７から点Ｑ８までショートカット軌跡に沿って点Ｑ３をショートカットするように点Ｑ８まで移動させ、つぎにアーム３０１、３０２を伸縮動作させて、半導体ウェーハＷが載置されたハンド３０３を点Ｑ８から点Ｑ４まで直線移動させるという制御が行われる（引用文献２の図３）。この場合、ショートカット軌跡に沿って移動する際にはワーク搬送ロボット３００のハンド３０３が、アーム伸縮動作に必要な速度パターンと旋回動作に必要な速度パターンとを合成した速度パターンにしたがった速度で移動するようにロボット各軸位置が駆動制御される（引用文献２の図１９）。
【特許文献１】特開２００６−２４３９２６号公報（特に段落００６３および段落００７７〜００７９および図３、図９）
【特許文献２】国際公開番号ＷＯ９７／３４７４２（特に図３および図１９）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術１によれば、ワーク搬送ロボットのハンドが図中略円弧状の補正移動経路３１０に沿って移動するため、位置Ｒ１、Ｒ２を結んだ直線状の移動経路および位置Ｒ２、Ｒ３を結んだ直線状の移動経路に沿って移動する場合に較べて、途中位置（Ｒ２）でロボットハンドを停止させる必要がない。このためワークを高速でスムーズに搬送させることができる。【０００５】
しかし、ワーク搬送ロボットのハンドを略円弧状の補正移動経路３１０に沿って移動させるには、予め補正移動経路３１０を円弧補間や教示によって求めておく必要がある。補正移動経路３１０を予め求めておかなければ、補正移動経路３１０上の制御時間間隔毎の逐次のロボットハンド移動位置に対応するロボット各軸の目標位置を求めることができないからである。このように従来技術１にあっては、ロボット各軸を制御するために、略円弧状の補正移動経路３１０を予め求めておく必要があり、ロボット制御の前処理としての演算処理に多大な時間を要することになっていた。【０００６】
同様に従来技術２によれば、ワーク搬送ロボット３００のハンド３０３が点Ｑ２をショートカットした略円弧状のショートカット軌跡および点Ｑ３をショートカットしたショートカット軌跡に沿って移動するため、直線移動軌跡Ｑ５〜Ｑ２を移動しついで旋回移動軌跡Ｐ２〜Ｐ３を移動しついで直線移動軌跡Ｑ３〜Ｑ４を移動する場合に較べて、点Ｑ２、点Ｑ３でロボットハンド２０３を停止させる必要がない。このためワークＷを高速でスムーズに搬出、搬入させることができる。【０００７】
しかし、従来技術２においても従来技術１と同様に、ワーク搬送ロボット３００のハンド３０３を略円弧状のショートカット軌跡に沿って移動させるには、予めショートカット軌跡を円弧補間や教示によって求めておく必要がある。ショートカット軌跡を予め求めておかなければ、ショートカット軌跡上の制御時間間隔毎の逐次のロボットハンド３０３の移動位置に対応するロボット各軸の目標位置を求めることができず、合成速度パターンに従った所望する速度でロボットハンドを移動させることはできないからである。このように従来技術２にあっても従来技術１と同様に、ロボット各軸を制御するために、略円弧状のショートカット軌跡を予め求めておく必要があり、ロボット制御の前処理としての演算処理に多大な時間を要することになっていた。【０００８】
以上のとおり、従来技術には、所望する移動軌跡（たとえば図２の点Ｑ１〜点Ｑ４）の途中で、２つの動作（直線動作と旋回動作）を合成した合成移動軌跡（ショートカット軌跡）に沿ってツール（ロボットハンド）を移動させるという考え方が示唆されているものの、せいぜい速度パターンを合成した合成速度パターンでツールを速度制御するにとどまり、ロボット各軸（各軸を駆動するアクチュエータ）を制御するためには、合成移動軌跡を求める演算処理が必須であることになっていた。【０００９】
本発明はこうした実情に鑑みてなされたものであり、所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿ってツールを移動させるに際して、合成移動軌跡を求める演算処理を不要として、ロボット制御の前処理に要する処理時間を飛躍的に短縮させることを解決課題とするものである。
【課題を解決するための手段】
【００１０】
第１発明は、
アクチュエータを有し、当該アクチュエータの制御値を所定の制御周期毎に変化させることによりロボットのツールを所望する移動軌跡に沿って移動開始点から移動終了点まで変化させるロボットの制御装置において、
前記所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿って前記ツールを移動させる際に適用される制御装置であって、
前記合成移動軌跡に入る前より行なわれるべき先行動作の仮想上の動作終了点と、前記合成移動軌跡を抜けた以後も行なわれるべき後行動作の仮想上の動作開始点とが一致するように仮想上の動作開始／終了点を探索する仮想上の動作開始／終了点探索手段と、
前記先行動作が前記仮想上の動作開始／終了点で終了し、かつ前記後行動作が前記仮想上の動作開始／終了点から、前記先行動作が終了するよりも時間的に前に開始するように、前記先行動作を実現するための先行動作用制御値を初期値から終端値まで演算するとともに、前記後行動作を実現するための後行動作用制御値を初期値から終端値まで演算する制御値演算手段と、
前記後行動作用制御値の初期値を、前記先行動作用制御値の終端値に一致させる条件を付加した上で、前記ツールが前記合成移動軌跡に沿って移動する区間におけるアクチュエータの今回の目標制御値を、前記先行動作用制御値の今回値と前回値との差分値と、前記後行動作用制御値の今回値と前回値との差分値とを加算した値に基づき演算するアクチュエータ目標制御値演算手段と、
前記演算された目標制御値が得られるようにアクチュエータを制御して前記ツールを前記合成移動軌跡に沿って移動させる制御手段と
を備えたことを特徴とする。【００１１】
第２発明は、第１発明において、
前記ロボットは、前記ツールとしてワークを搬送するハンドを備えたワーク搬送ロボットであること
を特徴とする。【００１２】
第３発明は、第１発明または第２発明において、
アクチュエータは、複数のモータであり、
先行動作用制御値および後行動作用制御値はそれぞれ、前記ツールの位置に対応する複数のモータの制御位置として演算されること
を特徴とする。【００１３】
第４発明は、第１発明または第２発明において、
前記アクチュエータは、複数の仮想モータであり、
前記少なくとも２つの動作に対応して仮想モータが定められ、
先行動作用制御値および後行動作用制御値はそれぞれ、先行動作に対応する仮想モータの制御値および後行動作に対応する仮想モータの制御値として演算されること
を特徴とする。【００１４】
第５発明は、第１発明から第４発明において、
先行動作用制御値および後行動作用制御値はそれぞれ、逐次の制御周期毎の関数値として演算されること
を特徴とする。【００１５】
第６発明は、
アクチュエータを有したロボットの当該アクチュエータの制御値を所定の制御周期毎に変化させることによりロボットのツールを所望する移動軌跡に沿って移動開始点から移動終了点まで変化させるロボットの制御方法において、
前記所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿って前記ツールを移動させる際に適用される制御方法であって、
前記合成移動軌跡に入る前より行なわれるべき先行動作の仮想上の動作終了点と、前記合成移動軌跡を抜けた以後も行なわれるべき後行動作の仮想上の動作開始点とが一致するように仮想上の動作開始／終了点を演算し、
前記先行動作が前記仮想上の動作開始／終了点で終了し、かつ前記後行動作が前記仮想上の動作開始／終了点から、前記先行動作が終了するよりも時間的に前に開始するように、前記先行動作を実現するための先行動作用制御値を初期値から終端値まで演算するとともに、前記後行動作を実現するための後行動作用制御値を初期値から終端値まで演算し、
前記後行動作用制御値の初期値を、前記先行動作用制御値の終端値に一致させる条件を付加した上で、前記ツールが前記合成移動軌跡に沿って移動する区間におけるアクチュエータの今回の目標制御値を、前記先行動作用制御値の今回値と前回値との差分値と、前記後行動作用制御値の今回値と前回値との差分値とを加算した値に基づき演算し、
前記演算された目標制御値が得られるようにアクチュエータを制御して前記ツールを前記合成移動軌跡に沿って移動させる制御を行なう
ことを特徴とする。【００１６】
第７発明は、第１発明において、
先行動作用制御値を初期値から終端値まで演算するための先行動作用変換関数を予め用意するとともに、後行動作用制御値を初期値から終端値まで演算するための後行動作用変換関数を予め用意し、
所定の制御周期毎に、先行動作用変換関数を用いて先行動作用制御値が演算されるとともに、後行動作用変換関数を用いて後行動作用制御値が演算される
ことを特徴とする。【００１７】
第８発明は、第６発明において、
先行動作用制御値を初期値から終端値まで演算するための先行動作用変換関数を予め用意するとともに、後行動作用制御値を初期値から終端値まで演算するための後行動作用変換関数を予め用意し、
所定の制御周期毎に、先行動作用変換関数を用いて先行動作用制御値が演算されるとともに、後行動作用変換関数を用いて後行動作用制御値が演算される
ことを特徴とする。【００１８】
（発明の効果）  
本発明によれば、図６および図８に示すように、先行動作（Ｐ１〜Ｐ２までの直線動作Ａ）を実現するための先行動作用制御値（Ａ１nA、Ａ２nA、Ａ３nA）を初期値（Ａ１ｓA、Ａ２ｓA、Ａ３ｓA）から終端値（Ａ１EA、Ａ２EA、Ａ３EA）まで演算されるとともに、後行動作（Ｐ２〜Ｐ３までの直線動作Ｂ）を実現するための後行動作用制御値（Ｂ１nB、Ｂ２nB、Ｂ３nB）を初期値（Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓB）から終端値（Ｂ１EB、Ｂ２EB、Ｂ３EB）まで演算される。この場合、先行動作用制御値を初期値から終端値まで演算するための先行動作用変換関数FAが予め用意されるとともに、後行動作用制御値を初期値から終端値まで演算するための後行動作用変換関数FBが予め用意され、所定の制御周期毎に、先行動作用変換関数FAを用いて先行動作用制御値が演算されるとともに、後行動作用変換関数FBを用いて後行動作用制御値が演算される（第７発明、第８発明）。【００１９】
このようにして得られた先行動作用制御値（Ａ１nA、Ａ２nA、Ａ３nA）、後行動作用制御値（Ｂ１nB、Ｂ２nB、Ｂ３nB）に基づき、後行動作用制御値の初期値（Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓB）を、先行動作用制御値の終端値（Ａ１EA、Ａ２EA、Ａ３EA）に一致させる条件（Ｂ１ｓB＝Ａ１EA、Ｂ２ｓB＝Ａ２EA、Ｂ３ｓB＝Ａ３EA）を付加した上で、ツールが合成移動軌跡（ＡＢ）に沿って移動する区間におけるアクチュエータの今回の目標制御値（Ｍ１n、Ｍ２n、Ｍ３n）を、先行動作用制御値の今回値と前回値との差分値（Ａ１nA−Ａ１nA-1、Ａ２nA−Ａ２nA-1、Ａ３nA−Ａ３nA-1）と、後行動作用制御値の今回値と前回値との差分値（Ｂ１nB−Ｂ１nB-1、Ｂ２nB−Ｂ２nB-1、Ｂ３nB−Ｂ３nB-1）とを加算した値（（Ａ１nA−Ａ１nA-1）＋（Ｂ１nB−Ｂ１nB-1）、（Ａ２nA−Ａ２nA-1）＋（Ｂ２nB−Ｂ２nB-1）、（Ａ３nA−Ａ３nA-1）＋（Ｂ３nB−Ｂ３nB-1））に基づき演算し、この演算された目標制御値が得られるようにアクチュエータを制御することで、ツールを合成移動軌跡に沿って移動させることができる。【００２０】
このように合成移動軌跡（Ｐ４〜Ｐ５の略円弧軌跡ＡＢ）上の制御値は、先行動作用制御値と後行動作用制御値から求められ、予め合成移動軌跡を求めておく必要はない。なお、先行動作用制御値と後行動作用制御値は、制御動作中に所定の制御周期毎に得られるものであり、予めこれら制御値を求めておき所定のメモリに記憶しておくという前処理は不要である。【００２１】
よって合成移動軌跡を予め計算しておくという前処理に要する時間を短縮することができる。さらにいえば、先行動作用制御値を求めるための先行動作用変換関数FA、後行動作用制御値を求めるための後行動作用変換関数FBのみを予め用意しておけばよく、合成移動軌跡上の制御値を求めるための特別な関数を用意することは不要である。【００２２】
このように本発明によれば、所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡に沿ってツールを移動させるに際して、予め合成移動軌跡を求めておくという前処理や合成移動軌跡上の制御値を求めるための特別な関数が不要となるため、ロボット制御の前処理に要する処理時間を飛躍的に短縮させることができる。この結果、演算処理の負担が減りロボット制御システムの簡素化を図ることができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明に係るロボットの制御装置および制御方法の実施の形態について説明する。【００２４】
なお、以下では、ロボットとして水平多関節ロボットとして構成され、半導体ウェーハや液晶基板などを搬送するワーク搬送ロボットを想定して説明する。【００２５】
図３は、実施例のロボット制御システムの構成を示す図である。【００２６】
同図３に示すように、ロボット制御システムは、大きくは、命令用ＰＣ（パーソナルコンピュータ）３０と、ロボットコントローラ４０と、モータドライバ５１、５２、５３と、ロボット１０とからなる。【００２７】
ロボット１０は、図３中に斜視図にて示すように、第１軸１、第２軸２、第３軸３を備えた水平多関節ロボットである。ロボット１０は、基台２９と、第１リンク２１と、第２リンク２２と、ハンド２３と、モータ１１と、モータ１２と、モータ１３とを備えている。【００２８】
モータ１１、１２、１３はそれぞれ、ロボット１０の各軸１、２、３を駆動するアクチュエータを構成する。この実施例では、モータ１１、１２、１３は、回転駆動するアクチュエータであり、「制御値」として「制御位置（回転位置）」が与えられて駆動されるものとする。モータ１１は、第１軸１を回動するアクチュエータであり、モータ１２は、第２軸２を回動するアクチュエータであり、モータ１３は、第３軸３を回動するアクチュエータである。【００２９】
第１リンク２１は、基台２９に対してその一端が回動自在に連結されており、第１軸１が回動することによって基台２９に対して水平方向に相対的に回動する。第２リンク２２は、その一端が第１リンク２１の他端に回動自在に連結されており、第２軸２が回動することによって第１リンク２１に対して水平方向に相対的に回動する。ハンド２３は、その上にワークＷが載置され、場合によってはワークＷを把持する機構を備えたツールを構成しており、第２リンク２２の他端に回動自在に連結されており、第３軸３が回動することによって第２リンク２２に対して水平方向に相対的に回動する。なお図では、基台２９を鉛直方向に移動させるモータ等についての機構の図示は、省略している。【００３０】
モータ１１は、たとえば、その回転軸が第１軸１に一致する位置に設けられている。同様に、モータ１２は、たとえば、その回転軸が第２軸２に一致する位置に設けられている。同様に、モータ１３は、たとえば、その回転軸が第３軸３に一致する位置に設けられている。【００３１】
図４は、ロボット１０の動きを水平面で概念的に示した図であり、各軸１、２、３の回動前（図４（ａ））と、各軸１、２、３の回動後（図４（ｂ））におけるロボット１０の位置・姿勢変化の一例を示している。【００３２】
モータ１１、１２、１３を駆動制御し、各軸１、２、３を、図中矢印に示すごとく左回りまたは右回りに回動させることで、ハンド２３の基準点２３ａ（たとえばハンド２３の中心点；以下、ハンド位置２３ａという）を水平方向の所望する移動軌跡に沿って移動させて、ワークＷを移動開始点Ｐ１から移動開始点Ｐ３へ搬送させることができる。【００３３】
図５（ａ）、（ｂ）はそれぞれ、ハンド位置２３ａを直線動作させる場合、ハンド位置２３ａを旋回動作させる場合の移動軌跡と、モータ１１、１２、１３の駆動制御指令との関係を示している。【００３４】
図５（ａ）に示すように、モータ１１、モータ１２、モータ１３をそれぞれ、１：−２：１の速度比率で駆動制御することにより、ハンド位置２３ａを直線動作させることができる。なお、モータ１１、モータ１２、モータ１３の回転方向を正逆反対にすることにより、ハンド位置２３ａが直線動作する方向を正逆反対（伸長方向、縮退方向）にすることができる。【００３５】
図５（ｂ）に示すように、モータ１２、１３の回転を停止させモータ１１のみを駆動制御することにより、ハンド位置２３ａを旋回動作させることができる。なお、モータ１１の回転方向を正逆反対にすることにより、ハンド位置２３ａが旋回動作する方向を正逆反対（左旋回、右旋回）にすることができる。【００３６】
図６は、実施例の移動軌跡の一例を示している。実施例では、移動開始点Ｐ１から移動終了点Ｐ３まで移動軌跡Ｃに沿って移動させるものとする。この移動軌跡Ｃは、移動軌跡Ｃの途中で、直線動作Ａと直線動作Ｂとを合成した合成移動軌跡ＡＢを含んでいる。【００３７】
さて図３において命令用ＰＣ３０と、ロボットコントローラ４０と、モータドライバ５１、５２、５３は、モータ１１、１２、１３を駆動制御する装置を構成する。【００３８】
すなわち、命令用ＰＣ３０からは、移動軌跡Ｃの移動終了点Ｐ３まで移動させることを指示する移動命令が出力され、ロボットコントローラ４０に入力される。【００３９】
ロボットコントローラ４０は、仮想上の動作開始／終了点探索手段４１と、制御値演算手段４２と、アクチュエータ目標制御値演算手段４３と、制御手段４４を構成するドライバ通信部４５と、メモリ４６を備えている。仮想上の動作開始／終了点探索手段４１と、制御値演算手段４２と、アクチュエータ目標制御値演算手段４３は、ＣＰＵによって構成され、図７および詳しくは図８に示される制御プログラムにしたがいメモリ４６に記憶されたデータを用いて演算処理を順次実行する。  
アクチュエータ目標制御値演算手段４３では、最終的に各モータ１１、１２、１３の制御周期毎の目標制御位置が求められる。【００４０】
各モータ１１、１２、１３の制御周期毎の目標制御位置は、ドライバ通信部４５に与えられる。ドライバ通信部４５は、インターフェースを介して目標制御位置に位置させるための位置指令をモータドライバ５１、５２、５３に与える。モータドライバ５１、５２、５３は、制御手段４４を構成する。モータドライバ５１、５２、５３はそれぞれ位置指令に対応する駆動信号をモータ１１、１２、１３に出力する。【００４１】
これによりモータ１１、１２、１３が駆動制御され、制御周期毎に目標制御位置に位置され、その結果、ハンド位置２３ａは、移動開始点Ｐ１から移動軌跡Ｃに沿って移動終了点Ｐ３まで移動される。【００４２】
以下、図７および図８のフローチャートで行われる処理の手順について図６を併せ参照して説明する。【００４３】
図７は、ロボットコントローラ４０で行われる処理の流れを概略的に示す。【００４４】
まず、命令用ＰＣ３０から移動命令が入力されたか否かが判断される（ステップ１０１）。【００４５】
移動命令が入力されたと判断されると（ステップ１０１の判断Ｙ）、つぎに入力された移動命令を実現するための各動作Ａ、Ｂが求められる（ステップ１０２）。【００４６】
つぎに動作Ａ、Ｂごとに制御位置が演算される（ステップ１０３、１０４）。【００４７】
つぎに動作Ａ，Ｂごとの制御位置の差分値が加算されて、移動軌跡Ｃに沿って移動させるための目標制御位置が求められる（ステップ１０５）。【００４８】
つぎに目標制御位置に位置させるようにモータ１１、１２、１３が制御される（ステップ１０６）。【００４９】
図８は、図７のステップ１０２〜１０５の処理を詳細に示している。【００５０】
（仮想上の動作開始／終了点Ｐ２の探索）
図７のステップ１０２では、動作Ａ、動作Ｂが求められ、動作Ａの仮想上の動作終了点および動作Ｂの仮想上の動作開始点である仮想上の動作開始／終了点Ｐ２が探索される。【００５１】
メモリ４６には、ハンド位置２３ａの現在位置Ｐ１を含むハンド２３の動きを規制する規制データが記憶されている。規制データは、ロボット１０の現在の位置、姿勢、ロボット１０の動作環境（たとえば半導体製造装置）の既知の寸法、ロボット１０の動作範囲などを考慮して予め記憶、格納しておくものとする。【００５２】
まず、移動命令として与えられる移動終了点はＰ３であるが、移動終了点Ｐ３は、たとえばプロセスチャンバのゲート９０内の位置であるとすると、ゲート９０に対して垂直な方向にワークＷを搬入しなければならないという制限により、移動終了点Ｐ３における移動方向Ｖ３は、同ゲート９０に対する垂直な方向として一義的に定まる。【００５３】
また移動終了点Ｐ３付近の移動区間では、旋回動作は不可能であり、直線動作のみ行なえるという制限があるものとする。【００５４】
したがって、これら制限データを考慮すると、移動終了点Ｐ３までハンド位置２３ａを移動させるには、移動方向Ｖ３の方向へ移動終了点Ｐ３までの直線動作Ｂを実行しなければならないことがわかる。【００５５】
ハンド位置２３ａの現在位置Ｐ１は、たとえば前回の移動命令による移動軌跡の移動終了位置として、あるいはハンド位置２３ａの計測位置として与えられる。ハンド位置２３ａの現在位置Ｐ１における移動方向Ｖ１は、前回の移動命令による移動軌跡の移動終了位置における移動方向として与えられる。今回の移動命令が初期の移動命令であり、移動開始点Ｐ１における移動方向に前回の移動命令の制限を受けないのであれば、動作環境を考慮して最適な移動方向Ｖ１に定められる。また移動開始点Ｐ１付近の移動区間では、直線動作のみ行なえるという制限があるものとする。【００５６】
したがって、これら制限データを考慮すると、移動開始点Ｐ１からハンド位置２３ａを移動させるには、移動開始点Ｐ１を始点として移動方向Ｖ１の方向への直線動作Ａを実行しなければならないことがわかる。【００５７】
また、今回の移動命令は、移動開始点Ｐ１から移動終了点Ｐ３までの移動であるから、移動開始点Ｐ１を始点とする直線動作Ａは、移動終了点Ｐ３を終点とする直線動作Ｂに先行する直線動作となり、直線動作Ｂは直線動作Ａに後行する直線動作となる。【００５８】
先行直線動作Ａと後行直線動作Ｂが求められると、その交点としての仮想上の動作開始／終了点Ｐ２が探索される。【００５９】
先行直線動作Ａと後行直線動作Ｂとの交点Ｐ２は、先行直線動作Ａの仮想上の動作終了点となり、後行直線動作Ｂの仮想上の動作開始点となる。「仮想上」と定義したのは、ハンド位置２３ａは、実際には点Ｐ２には位置しないからである。本実施例では、先行直線動作Ａと後行直線動作Ｂの途中に先行直線動作Ａと先行直線動作Ｂとを合成した合成移動軌跡ＡＢを生成してハンド位置２３ａを途中の仮想上の動作開始／終了点Ｐ２で停止させることなく合成移動軌跡ＡＢに沿って高速かつスムーズに移動させるようにしている。【００６０】
以上のようにして、合成移動軌跡ＡＢに入る前より行なわれるべき先行直線動作Ａの仮想上の動作終了点と、合成移動軌跡ＡＢを抜けた以後も行なわれるべき後行直線動作Ｂの仮想上の動作開始点とが一致するように仮想上の動作開始／終了点Ｐ２が演算される。この演算は、仮想上の動作開始／終了点探索手段４１で行われる。なお、この例では、仮想上の動作開始／終了点Ｐ２を演算により探索しているが、仮想上の動作開始／終了点Ｐ２を教示により探索してもよい。たとえば、ロボット１０を実際に動作させて、ハンド位置２３ａを先行直線動作Ａと後行直線動作Ｂに沿って移動させて仮想上の動作開始／終了点Ｐ２を教示することができる。このように実施例によれば、先行直線動作Ａと後行直線動作Ｂを求め仮想上の動作開始／終了点Ｐ２を探索するだけでよく、合成移動軌跡ＡＢを演算により求めたり教示により求めたりする必要がないので、演算処理や教示作業を簡易に行うことができ、ＣＰＵの負荷が軽減されるとともに制御の前処理に要する時間を飛躍的に短縮することができる（ステップ２０１）。【００６１】
以下、制御動作中に行なわれる処理内容について説明する。なお、以下のステップ２０２における「直線動作Ａ，Ｂ毎のモータ１１、１２、１３の制御位置の演算」処理およびステップ２０３における「移動軌跡Ｃに沿ってハンド位置２３ａを移動させるためのモータ１１、１２、１３の目標制御位置の演算」処理は、制御動作中に所定の周期毎に行われるものである。直線動作Ａに対応するモータ１１、１２、１３の制御位置は、後述する先行動作用の変換関数ＦAに基づき求められ、直線動作Ｂに対応するモータ１１、１２、１３の制御位置は、後述する後行動作用の変換関数ＦBに基づき求められる、変換関数ＦA、ＦBは、予め用意されておかれる。【００６２】
（直線動作Ａ，Ｂ毎のモータ１１、１２、１３の制御位置の演算）
つぎに、先行直線動作Ａが仮想上の動作開始／終了点Ｐ２で終了し、かつ後行直線動作Ｂが仮想上の動作開始／終了点Ｐ２から、先行直線動作Ａが終了するよりも時間的に前に開始するように、先行直線動作Ａを実現するためのモータ１１、１２、１３それぞれの先行直線動作用制御位置Ａ１nA、Ａ２nA、Ａ３nAを初期位置Ａ１ｓA、Ａ２ｓA、Ａ３ｓAから終端値Ａ１EA、Ａ２EA、Ａ３EAまで演算するとともに、後行直線動作Ｂを実現するためのモータ１１、１２、１３それぞれの後行直線動作用制御位置Ｂ１nB、Ｂ２nB、Ｂ３nBを初期位置Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓBから終端位置Ｂ１EB、Ｂ２EB、Ｂ３EBまで演算する。この演算は、制御値演算手段４２で行われる。【００６３】
モータ１１、１２、１３は、所定の制御周期毎に駆動制御されるため、制御周期の回数をｎで表す。制御周期はコントローラ４０の演算処理のサイクルタイム等を考慮して定められる。【００６４】
すなわち、いま、つぎのように定義する。【００６５】
ｎA：先行直線動作Ａにおける移動開始からｎ回目の制御周期
ｎB：後行直線動作Ｂにおける移動開始からｎ回目の制御周期
Ａ１ｓA：先行直線動作Ａを実現するためのモータ１１の初期制御位置
Ａ２ｓA：先行直線動作Ａを実現するためのモータ１２の初期制御位置
Ａ３ｓA：先行直線動作Ａを実現するためのモータ１３の初期制御位置
Ａ１nA：先行直線動作Ａを実現するためのモータ１１の現在（ｎ周期目）制御位置
Ａ２nA：先行直線動作Ａを実現するためのモータ１２の現在（ｎ周期目）制御位置
Ａ３nA：先行直線動作Ａを実現するためのモータ１３の現在（ｎ周期目）制御位置
Ａ１EA：先行直線動作Ａを実現するためのモータ１１の終端制御位置
Ａ２EA：先行直線動作Ａを実現するためのモータ１２の終端制御位置
Ａ３EA：先行直線動作Ａを実現するためのモータ１３の終端制御位置
Ｂ１ｓB：後行直線動作Ｂを実現するためのモータ１１の初期制御位置
Ｂ２ｓB：後行直線動作Ｂを実現するためのモータ１２の初期制御位置
Ｂ３ｓB：後行直線動作Ｂを実現するためのモータ１３の初期制御位置
Ｂ１nB：後行直線動作Ｂを実現するためのモータ１１の現在（ｎ周期目）制御位置
Ｂ２nB：後行直線動作Ｂを実現するためのモータ１２の現在（ｎ周期目）制御位置
Ｂ３nB：後行直線動作Ｂを実現するためのモータ１３の現在（ｎ周期目）制御位置
Ｂ１EB：後行直線動作Ｂを実現するためのモータ１１の終端制御位置
Ｂ２EB：後行直線動作Ｂを実現するためのモータ１２の終端制御位置
Ｂ３EB：後行直線動作Ｂを実現するためのモータ１３の終端制御位置
ここで先行直線動作用制御位置Ａ１nA、Ａ２nA、Ａ３nA（ｎA＝sA、…ｎA−１、ｎA…、EA）および後行直線動作用制御位置Ｂ１nB、Ｂ２nB、Ｂ３nB（ｎB＝sB、…ｎB−１、ｎB…、EB）はそれぞれ、ハンド位置２３ａに対応するモータ１１、１２、１２の制御位置として演算することができる。一般に、ロボット１０のハンド位置２３ａ（定義軸の位置）の逐次の位置とモータ１１、１２、１３の制御位置との関係は１対１との関係にあり、ハンド位置２３ａの逐次の位置を演算あるいは教示により求め、ロボット１０の逆運動学に基づき逆変換することにより、その逐次のハンド位置２３ａに対応するモータ１１、１２、１３の逐次の制御位置を一義的な数値として求めることができる。【００６６】
この場合、先行直線動作用制御位置Ａ１nA、Ａ２nA、Ａ３nA（ｎA＝sA、…ｎA−１、ｎA…、EA）および後行直線動作用制御位置Ｂ１nB、Ｂ２nB、Ｂ３nB（ｎB＝sB、…ｎB−１、ｎB…、EB）を、逐次のハンド位置２３ａに対応する角度位置として数値で求めてもよく、逐次のハンド位置２３ａから逐次のモータ制御位置を演算する変換関数を用意しておき、その変換関数の関数値として求めてもよい。【００６７】
たとえば、次式、
Ａ１nA＝ＦA（１,ｎA）
Ａ２nA＝ＦA（２,ｎA）
Ａ３nA＝ＦA（３,ｎA）
Ｂ１nB＝ＦB（１,ｎB）
Ｂ２nB＝ＦB（２,ｎB）
Ｂ３nB＝ＦB（３,ｎB）  …（１）
のごとく、変換関数Ｆx(ａ,ｎX)、つまり「動作Ｘにおけるモータ１ａのｎ周期目の制御位置Ｘａnを計算する関数」を用意しておき、その変換関数の関数値として逐次の動作用制御位置を求めることができる。変換関数は、通常は、逐次のハンド位置２３ａから各モータ１１、１２、１３の制御位置を計算する関数として与えられる。【００６８】
なお、次式、
Ｂ１ｓB＝Ａ１EA
Ｂ２ｓB＝Ａ２EA
Ｂ３ｓB＝Ａ３EA  …（２）
に示されるごとく、後行直線動作用制御位置の初期位置Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓBはそれぞれ、先行直線動作用制御位置の終端位置Ａ１EA、Ａ２EA、Ａ３EAに一致する。これは先行直線動作Ａの仮想上の動作終了点は、後行直線動作Ｂの仮想上の動作開始点と点Ｐ2で一致しており、ハンド位置２３ａは各動作とも仮想的に同一点Ｐ２に位置するからである。【００６９】
また、前述したように先行直線動作Ａが終了するタイミングと後行直線動作Ｂが開始するタイミングは同じではなく、後行直線動作Ｂが仮想上の動作開始／終了点Ｐ２から移動を開始するタイミングは、先行直線動作Ａが仮想上の動作開始／終了点Ｐ２で移動を終了するタイミングよりも時間的に前になるから、後行直線動作Ｂの最初の制御周期目（ｎB＝ｓB）で制御が行なわれる時刻は、先行直線動作Ａの最後の制御周期目（ｎA＝EA）で制御が行われる時刻よりも前の時刻となる。【００７０】
このようにして点Ｐ１から点Ｐ２までの先行直線動作Ａを実現するための先行直線動作用制御位置Ａ１n、Ａ２n、Ａ３nが初期位置Ａ１ｓ、Ａ２ｓ、Ａ３ｓから終端位置Ａ１E、Ａ２E、Ａ３Eまで演算されるとともに、点Ｐ２から点Ｐ３までの後行直線動作Ｂを実現するための後行直線動作用制御位置Ｂ１n、Ｂ２n、Ｂ３nが初期位置Ｂ１ｓ、Ｂ２ｓ、Ｂ３ｓから終端位置Ａ１E、Ａ２E、Ａ３Eまで演算される。【００７１】
上述したように後行直線動作Ｂの最初の制御周期目（ｎB＝ｓB）で制御が行なわれる時刻は、先行直線動作Ａの最後の制御周期目（ｎA＝EA）で制御が行われる時刻よりも前の時刻となることから、両動作Ａ、Ｂは重なり合う。両動作Ａ、Ｂを任意の所望するタイミングで重ね合わせることにより、点Ｐ4から点Ｐ5までの略円弧状の合成移動軌跡ＡＢを生成でき合成移動軌跡ＡＢに沿ってハンド位置２３ａを移動させることが可能となる。【００７２】
図９は、先行直線動作Ａと後行直線動作Ｂの速度変化パターンの一例を示している。【００７３】
同図９に示すように、先行直線動作Ａは時刻τ1から時刻τ3まで行われる。先行直線動作Ａの速度変化パターンは、制御位置Ａ１nA、Ａ２nA、Ａ３nAと制御周期により一義的に定まる。同様に後行直線動作Ｂは時刻τ2から時刻τ4まで行われる。後行直線動作Ｂの速度変化パターンは、制御位置Ｂ１nB、Ｂ２nB、Ｂ３nBと制御周期により一義的に定まる。【００７４】
先行直線動作Ａが時刻τ1から開始されると、先行直線動作Ａが時刻τ3で終了するよりも前の時刻τ2から後行直線動作Ｂが開始されることになる。時刻τ2から時刻τ3までの期間が、合成移動軌跡ＡＢが先行直線動作Ａと後行直線動作Ｂの重ね合わせにより生成されている期間である。合成移動軌跡ＡＢの速度変化パターンは、先行直線動作Ａの速度変化パターンと後行直線動作Ｂの速度変化パターンとを合成したパターン、つまりそれぞれの速度を加算した速度（たとえば期間τ2〜τ3で一定速度）となる。【００７５】
以上のように、実施例によれば、直線動作Ａ、Ｂに対応する直線状の移動軌跡とは別に、円弧状の移動軌跡ＡＢを求め、その円弧状の移動軌跡ＡＢに対応するモータ１１、１２、１３の制御位置を予め計算しておく必要がないため、演算処理を簡易に行うことができ、ＣＰＵの負荷が軽減され制御の前処理に要する時間を飛躍的に短縮することができる（ステップ２０２）。【００７６】
（移動軌跡Ｃに沿ってハンド位置２３ａを移動させるためのモータ１１、１２、１３の目標制御位置の演算）
つぎに、上記（２）式のごとく、後行直線動作用制御位置の初期位置Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓBをそれぞれ、先行直線動作用制御位置の終端位置Ａ１EA、Ａ２EA、Ａ３EAに一致させる条件を付加した上で、たとえば上記（１）式に示される先行直線動作用制御位置と後行直線動作用制御位置に基づき、ハンド位置２３ａが移動軌跡Ｃに沿って移動するための各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nを演算する。この演算は、アクチュエータ目標制御値演算手段４３で行われる。【００７７】
すなわち、いま、つぎのように定義する。【００７８】
ｎ：各モータ１１、１２、１３の今回（ｎ回目）の制御周期
ｎ−１：各モータ１１、１２、１３の前回（ｎ−１回目）の制御周期
Ｍ１n：モータ１１の今回ｎ（ｎ周期目）の目標制御位置
Ｍ２n：モータ１２の今回ｎ（ｎ周期目）の目標制御位置
Ｍ３n：モータ１３の今回ｎ（ｎ周期目）の目標制御位置
モータ１１、１２、１３それぞれの今回ｎ（ｎ周期目）の目標制御位置Ｍ１n、
Ｍ２n、Ｍ３nは、一般式として次式、
Ｍ１n＝Ｍ１n-1＋（Ａ１nA−Ａ１nA-1）＋（Ｂ１nB−Ｂ１nB-1）  …（３）
Ｍ２n＝Ｍ２n-1＋（Ａ２nA−Ａ２nA-1）＋（Ｂ２nB−Ｂ２nB-1）  …（４）
Ｍ３n＝Ｍ３n-1＋（Ａ３nA−Ａ３nA-1）＋（Ｂ３nB−Ｂ３nB-1）  …（５）
で与えられる。【００７９】
先行直線動作Ａのみが行われている区間、つまりハンド位置２３ａが合成移動軌跡ＡＢに入る前の区間Ｐ１〜Ｐ4における各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nは、上記（３）、（４）、（５）式においてそれぞれ、後行直線動作用制御位置の今回位置と前回位置との差分値（Ｂ１nB−Ｂ１nB-1）、（Ｂ２nB−Ｂ２nB-1）、（Ｂ３nB−Ｂ３nB-1）を省いた次式、
Ｍ１n＝Ｍ１n-1＋（Ａ１nA−Ａ１nA-1）  …（６）
Ｍ２n＝Ｍ２n-1＋（Ａ２nA−Ａ２nA-1）  …（７）
Ｍ３n＝Ｍ３n-1＋（Ａ３nA−Ａ３nA-1）  …（８）
で与えられる。【００８０】
先行直線動作Ａと後行直線動作Ｂが同時に実行されている区間、つまりハンド位置２３ａが合成移動軌跡ＡＢに沿って移動する区間Ｐ4〜Ｐ5における各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nはそれぞれ、上記（３）、（４）、（５）式のごとく、先行直線動作用制御位置の今回位置と前回位置との差分値（Ａ１nA−Ａ１nA-1）、（Ａ２nA−Ａ２nA-1）、（Ａ３nA−Ａ３nA-1）と、後行直線動作用制御位置の今回位置と前回位置との差分値（Ｂ１nB−Ｂ１nB-1）、（Ｂ２nB−Ｂ２nB-1）、（Ｂ３nB−Ｂ３nB-1）とを加算した値（Ａ１nA−Ａ１nA-1）＋（Ｂ１nB−Ｂ１nB-1）、（Ａ２nA−Ａ２nA-1）＋（Ｂ２nB−Ｂ２nB-1）、（Ａ３nA−Ａ３nA-1）＋（Ｂ３nB−Ｂ３nB-1）に基づき演算されることになる。ただし、先行直線動作Ａに加えて後行直線動作Ｂを開始するときには、前述の（２）式（Ｂ１ｓB＝Ａ１EA、Ｂ２ｓB＝Ａ２EA、Ｂ３ｓB＝Ａ３EA）を用いて、後行直線動作Ｂ開始時の各モータ１１、１２、１３の初期の目標制御位置Ｍ１n、Ｍ２n、Ｍ３nを定めるようにする。【００８１】
後行直線動作Ｂのみが行われている区間、つまりハンド位置２３ａが合成移動軌跡ＡＢを抜けた後の区間Ｐ5〜Ｐ３における各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nは、上記（３）、（４）、（５）式においてそれぞれ、先行直線動作用制御位置の今回位置と前回位置との差分値（Ａ１nA−Ａ１nA-1）、（Ａ２nA−Ａ２nA-1）、（Ａ３nA−Ａ３nA-1）を省いた次式、
Ｍ１n＝Ｍ１n-1＋（Ｂ１nB−Ｂ１nB-1）  …（９）
Ｍ２n＝Ｍ２n-1＋（Ｂ２nB−Ｂ２nB-1）  …（１０）
Ｍ３n＝Ｍ３n-1＋（Ｂ３nB−Ｂ３nB-1）  …（１１）
で与えられる。【００８２】
以上のように、各モータ１１、１２、１３の目標制御位置Ｍ１n、Ｍ２n、Ｍ３nは、円弧状の移動軌跡ＡＢ専用の制御位置を演算してそれを用いることなく、先行直線動作用制御位置と後行直線動作用制御位置のみを用いてそれらの合成値として求めることができるため、演算処理を簡易に行うことができ、ＣＰＵの負荷が軽減され制御の前処理に要する時間を飛躍的に短縮することができる（ステップ２０３）。【００８３】
（モータ１１、１２、１３の制御）
つぎに上記（３）〜（１１）を用いて目標制御位置Ｍ１n、Ｍ２n、Ｍ３nがそれぞれ得られるようにモータ１１、１２、１３を制御して、ハンド位置２３ａを移動軌跡Ｃに沿って移動させる。この制御は、制御手段４４で行なわれる。【００８４】
すなわち、上記（６）、（７）、（８）式を用いて、最初の制御周期（ｎ＝１）から逐次各制御周期毎に各モータ１１、１２、１３の位置がそれぞれ目標制御位置Ｍ１n、Ｍ２n、Ｍ３nになるようにモータ１１、１２、１３が駆動制御される。この制御は後行直線動作Ｂが開始する制御周期まで行なわれる。この結果、ハンド位置２３ａは、移動開始点Ｐ１から点Ｐ4まで直線状に移動する。【００８５】
つぎに、前述の（２）式（Ｂ１ｓB＝Ａ１EA、Ｂ２ｓB＝Ａ２EA、Ｂ３ｓB＝Ａ３EA）の条件を付加した上で、上記（３）、（４）、（５）式を用いて、後行直線動作Bが開始される制御周期から逐次各制御周期毎に各モータ１１、１２、１３の位置がそれぞれ目標制御位置Ｍ１n、Ｍ２n、Ｍ３nになるようにモータ１１、１２、１３が駆動制御される。この制御は先行直線動作Ａが終了する制御周期まで行なわれる。この結果、ハンド位置２３ａは、点Ｐ4から点Ｐ5まで略円弧状に合成移動軌跡ABに沿って移動する。【００８６】
つぎに、上記（９）、（１０）、（１１）式を用いて、先行直線動作Ａが終了して後行直線動作Bが開始される制御周期から逐次各制御周期毎に各モータ１１、１２、１３の位置がそれぞれ目標制御位置Ｍ１n、Ｍ２n、Ｍ３nになるようにモータ１１、１２、１３が駆動制御される。この制御は後行直線動作Ｂが終了する制御周期まで行なわれる。この結果、ハンド位置２３ａは、点Ｐ5から移動終了点Ｐ３まで直線状に移動する。【００８７】
以上のようにハンド位置２３ａは、移動開始点Ｐ１から合成移動軌跡ＡＢを含む移動軌跡Ｃに沿って移動終了点Ｐ３まで移動されるため、ワークＷを高速かつスムーズに搬送させることができる（ステップ２０４）。【００８８】
以上のように、この実施例によれば、所望する移動軌跡Ｃの途中で、２つの直線動作Ａ、Ｂを合成した合成移動軌跡ＡＢに沿ってハンド位置２３ａを移動させるに際して、合成移動軌跡ＡＢ上の制御位置は、先行動作用制御値と後行動作用制御値から求められ、予め合成移動軌跡を求めておく必要はない。なお、先行動作用制御位置と後行動作用制御位置は、制御動作中に所定の制御周期毎に得られるものであり、予めこれら制御値を求めておき所定のメモリに記憶しておくという前処理は不要である。【００８９】
よって合成移動軌跡を予め計算しておくという前処理に要する時間を短縮することができる。さらにいえば、先行動作用制御位置を求めるための先行動作用変換関数FA、後行動作用制御位置を求めるための後行動作用変換関数FBのみを予め用意しておけばよく、合成移動軌跡上の制御位置を求めるための特別な関数を用意することは不要である。【００９０】
このように本実施例によれば、所望する移動軌跡の途中で、少なくとも２つの動作を合成した合成移動軌跡ＡＢに沿ってツールを移動させるに際して、予め合成移動軌跡ＡＢを求めておくという前処理や合成移動軌跡ＡＢ上の制御位置を求めるための特別な関数が不要となるため、ロボット制御の前処理に要する処理時間を飛躍的に短縮させることができる。この結果、演算処理の負担が減りロボット制御システムの簡素化を図ることができる。【００９１】
さらにいえば、本実施例では、先行動作用変換関数FA、後行動作用変換関数FBの関数値のみから合成移動軌跡ＡＢを含む全軌跡上の逐次の制御位置が求められる。ここで、従来技術においては、合成移動軌跡に達すると、合成移動軌跡上の制御位置を求めるために合成移動軌跡上の制御位置を求めるための特別な関数を用いた演算処理が新たに演算負荷として加わるために、処理能力の高い演算装置（処理能力の高いＣＰＵ）が必要であったが、本実施例によれば、比較的処理能力の低いで演算装置（処理能力の低いＣＰＵ）で足りる。【００９２】
以上の説明では、２つの直線動作Ａ、Ｂを合成した合成移動軌跡ＡＢに沿ってハンド位置２３ａを移動させる場合を例にとり説明した。しかし、直線動作と旋回動作を合成した合成移動軌跡に沿ってハンド位置２３ａを移動させる実施も当然可能である。【００９３】
図１０は、途中に直線動作Ａと旋回動作Ｄを合成した合成移動軌跡ＡＤと、旋回動作Ｄと直線動作Ｂを含む合成移動軌跡ＤＢを含む移動軌跡Ｃを例示している。なお、図１０は、従来技術として説明した図２に対応する移動軌跡である。【００９４】
すなわち、移動開始点Ｐ１から点Ｐ２方向に向けてハンド位置２３ａの直線動作Ａを行い、つぎに点Ｐ２の手前の点Ｐ５から合成移動軌跡ＡＤに沿って点Ｐ２をショートカットするように点Ｐ６まで移動させ、つぎに点Ｐ６から点Ｐ３に向けてハンド位置２３ａの旋回動作Ｄを行い、つぎに点Ｐ３の手前の点Ｐ７から点Ｐ８まで合成移動軌跡ＤＢに沿って点Ｐ３をショートカットするように点Ｐ８まで移動させ、つぎに点Ｐ８から移動終了点Ｐ４までハンド位置２３ａの直線動作Ｂを行い、ワークＷを一方のプロセスチャンバから他方のプロセスチャンバまで搬送させる場合を想定する。【００９５】
この場合も前述の実施例と同様にして制御を行うことができる。なお、以下では重複する詳細な説明は省略する。【００９６】
（仮想上の動作開始／終了点Ｐ２、Ｐ３の探索）
・合成移動軌跡ＡＤに沿って移動させるための仮想上の動作開始／終了点Ｐ２の探索について
合成移動軌跡ＡＤに入る前より行なわれるべき先行直線動作Ａの仮想上の動作終了点と、合成移動軌跡ＡＤを抜けた以後も行なわれるべき後行旋回動作Ｄの仮想上の動作開始点とが一致するように仮想上の動作開始／終了点Ｐ２が探索される。【００９７】
・合成移動軌跡ＤＢに沿って移動させるための仮想上の動作開始／終了点Ｐ３の探索について
合成移動軌跡ＤＢに入る前より行なわれるべき先行旋回動作Ｄの仮想上の動作終了点と、合成移動軌跡ＤＢを抜けた以後も行なわれるべき後行直線動作Ｂの仮想上の動作開始点とが一致するように仮想上の動作開始／終了点Ｐ３が探索される。【００９８】
（直線動作Ａ，旋回動作Ｄ、直線動作Ｂ毎のモータ１１、１２、１３の制御位置の演算）
・合成移動軌跡ＡＤに沿って移動させるためのモータ制御位置の演算
先行直線動作Ａが仮想上の動作開始／終了点Ｐ２で終了し、かつ後行旋回動作Ｄが仮想上の動作開始／終了点Ｐ２から、先行直線動作Ａが終了するよりも時間的に前に開始するように、先行直線動作Ａを実現するためのモータ１１、１２、１３それぞれの先行直線動作用制御位置Ａ１nA、Ａ２nA、Ａ３nAを初期位置Ａ１ｓA、Ａ２ｓA、Ａ３ｓAから終端値Ａ１EA、Ａ２EA、Ａ３EAまで演算するとともに、後行旋回動作Ｄを実現するためのモータ１１、１２、１３それぞれの後行旋回動作用制御位置Ｄ１nD、Ｄ２nD、Ｄ３nDを初期位置Ｄ１ｓD、Ｄ２ｓD、Ｄ３ｓDから終端位置Ｄ１ED、Ｄ２ED、Ｄ３EDまで演算する。【００９９】
詳細な演算は、前述の（１）、（２）式において「Ｂ」を「Ｄ」に読み替えたものとして示される。【０１００】
・合成移動軌跡ＤＢに沿って移動させるためのモータ制御位置の演算
先行旋回動作Ｄが仮想上の動作開始／終了点Ｐ３で終了し、かつ後行直線動作Ｂが仮想上の動作開始／終了点Ｐ３から、先行旋回動作Ｄが終了するよりも時間的に前に開始するように、先行旋回動作Ｄを実現するためのモータ１１、１２、１３それぞれの先行旋回動作用制御位置Ｄ１nD、Ｄ２nD、Ｄ３nDを初期位置Ｄ１ｓD、Ｄ２ｓD、Ｄ３ｓDから終端値Ｄ１ED、Ｄ２ED、Ｄ３EDまで演算するとともに、後行直線動作Ｂを実現するためのモータ１１、１２、１３それぞれの後行直線動作用制御位置Ｂ１nB、Ｂ２nB、Ｂ３nBを初期位置Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓBから終端位置Ｂ１EB、Ｂ２EB、Ｂ３EBまで演算する。【０１０１】
詳細な演算は、前述の（１）、（２）式において「Ａ」を「Ｄ」に読み替えたものとして示される。【０１０２】
なお旋回動作Ｄに関しての重複した演算は当然省略することができる。【０１０３】
（移動軌跡Ｃに沿ってハンド位置２３ａを移動させるためのモータ１１、１２、１３の目標制御位置の演算）
・合成移動軌跡ＡＤに沿って移動させるためのモータ目標制御位置の演算
後行旋回動作用制御位置の初期位置Ｄ１ｓD、Ｄ２ｓD、Ｄ３ｓDをそれぞれ、先行直線動作用制御位置の終端位置Ａ１EA、Ａ２EA、Ａ３EAに一致させる条件を付加した上で、先行直線動作用制御位置と後行旋回動作用制御位置に基づき、ハンド位置２３ａが移動軌跡Ｃに沿って移動するための各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nを演算する。【０１０４】
詳細な演算は、前述の（２）〜（１１）式において「Ｂ」を「Ｄ」に読み替えたものとして示される。【０１０５】
・合成移動軌跡ＤＢに沿って移動させるためのモータ目標制御位置の演算
後行直線動作用制御位置の初期位置Ｂ１ｓB、Ｂ２ｓB、Ｂ３ｓBをそれぞれ、先行旋回動作用制御位置の終端位置Ｄ１ED、Ｄ２ED、Ｄ３EDに一致させる条件を付加した上で、先行旋回動作用制御位置と後行直線動作用制御位置に基づき、ハンド位置２３ａが移動軌跡Ｃに沿って移動するための各モータ１１、１２、１３の今回ｎの目標制御位置Ｍ１n、Ｍ２n、Ｍ３nを演算する。【０１０６】
詳細な演算は、前述の（２）〜（１１）式において「Ａ」を「Ｄ」に読み替えたものとして示される。【０１０７】
なお旋回動作Ｄに関しての重複した演算は当然省略することができる。【０１０８】
（モータ１１、１２、１３の制御）
つぎに上記のごとく読み替えた（３）〜（１１）を用いて目標制御位置Ｍ１n、Ｍ２n、Ｍ３nがそれぞれ得られるようにモータ１１、１２、１３を制御して、ハンド位置２３ａを移動軌跡Ｃに沿って移動させる。【０１０９】
この結果、ハンド位置２３ａは、移動開始点Ｐ１から点Ｐ５まで直線状に移動し、ついで点Ｐ５から点Ｐ６まで略円弧状に合成移動軌跡ＡＤに沿って移動し、ついで点Ｐ６から点Ｐ７まで旋回移動し、ついで点Ｐ７から点Ｐ８まで略円弧状に合成移動軌跡ＤＢに沿って移動し、ついで点Ｐ８から移動終了点Ｐ４まで直線状に移動する。【０１１０】
このためワークＷを高速かつスムーズに搬送させながらも、合成移動軌跡ＡＤおよびＤＢを予め求めておくという前処理や合成移動軌跡ＡＤおよびＤＢ上の制御値を求めるための特別な関数が不要となるため、ロボット制御の前処理に要する処理時間を飛躍的に短縮させることができ、その結果として、演算処理の負担が減りロボット制御システムの簡素化を図ることができる。【０１１１】
以上の説明では、直線動作と直線動作を合成する例、直線動作と旋回動作を合成する例について説明したが、これらはあくまで一例であり、任意の動作同士を同様に合成する実施も当然可能である。また２つの動作を合成する場合を例にとり説明したが、３以上の動作を同様に合成する実施も当然可能である。【０１１２】
複数のモータの複合的な動作として直線動作、旋回動作等が実現され、それらを合成する場合を例にとり説明した。しかし、一のモータによる動作と一のモータによる動作とを合成する実施も当然可能である。【０１１３】
ここで、仮想モータという考え方がある。仮想モータとは、ロボットの動作に応じた専用のモータがあるという考え方である。たとえばハンドを直線的に動かすときにはハンドを直線状に移動させる仮想モータがあり、ハンドを旋回動作させるときにはハンドを旋回動作させる仮想モータがあると考える。仮想モータにも本発明を適用することができる。【０１１４】
たとえば図１０に示す合成移動軌跡に沿ってハンド位置２３ａを移動させる場合には、直線動作に対応する仮想モータと旋回動作に対応する仮想モータを定め、先行直線動作用制御値（直動位置）および後行旋回動作用制御値（旋回角度）をそれぞれ、先行動作に対応する仮想モータの制御値および後行旋回動作に対応する仮想モータの制御値として同様の演算を行えばよい。【０１１５】
以上実施例では、ロボットとして水平多関節ロボットを想定して説明したが、これはあくまで一例であり、垂直多関節ロボットなどの任意の形式のロボットに適用することができる。【０１１６】
また実施例では、ロボットを駆動するアクチュエータとしてモータを想定したが、シリンダなどの他の任意のアクチュエータによって駆動されるロボットにも当然本発明を適用することができる。またアクチュエータを駆動する媒体は、電気、油圧、空圧等任意のものを当然使用することができる。また、ツールとしてハンドを備えたワーク搬送ロボットを想定して説明したが、本発明はワーク搬送ロボットに限定されるわけではなく、溶接作業用のトーチ、切断加工用のトーチなど他の任意のツールを備えたロボットに当然適用することができる。
【図面の簡単な説明】
【０１１７】
【図１】図１は従来技術１を説明する図である。
【図２】図２は従来技術２を説明する図である。
【図３】図３は、実施例のロボット制御システムの構成を示す図である。
【図４】図４（ａ）、（ｂ）は、ロボットの動きを水平面で概念的に示した図である。
【図５】図５（ａ）、（ｂ）はそれぞれ、ハンド位置を直線動作させる場合、ハンド位置を旋回動作させる場合の移動軌跡と、モータの駆動制御指令との関係を示した図である。
【図６】図６は、実施例の移動軌跡の一例を示した図である。
【図７】図７は実施例の処理の流れを概略的に示すフローチャートである。
【図８】図８は図７の処理を詳細に示したフローチャートである。
【図９】図９は、先行直線動作と後行直線動作の速度変化パターンの一例を示した図である。
【図１０】図１０は、図２と同様の移動軌跡を示した図である。
【図１】
2012070572.tif 000003
【図２】
2012070572.tif 000004
【図３】
2012070572.tif 000005
【図４】
2012070572.tif 000006
【図５】
2012070572.tif 000007
【図６】
2012070572.tif 000008
【図７】
2012070572.tif 000009
【図８】
2012070572.tif 000010
【図９】
2012070572.tif 000011
【図１０】
2012070572.tif 000012
【国際調査報告】
2012070572.tif 000013
2012070572.tif 000014
2012070572.tif 000015