(57)【要約】【課題】ロボット動作に関する制約条件を満たし、かつ、最適な軌道を確実に生成できるようにする。【解決手段】ロボットアーム（Ａ）を動作させる軌道の開始教示点および目標教示点の間の第１の中間教示点群に対して変位を与え、第２の中間教示点群を生成する（Ｓ１０２）。また、第２の中間教示点群に基づき、ロボットアーム（Ａ）の軌道を生成する（Ｓ１０３）。各々の第２の中間教示点群ないしその軌道に対する評価値を生成（Ｓ１０７）し、その評価値に基づき第１の中間教示点群を移動させる（Ｓ１０８）処理を繰り返し実行し、所定の条件を満たす第１の中間教示点群をロボットアームを動作させるための軌道の生成に用いる中間教示点群として決定する（Ｓ１１０）。【選択図】図４
2019135076.tif 000002
【特許請求の範囲】
【請求項１】
開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成方法において、
制御装置が、ロボットアームを動作させる軌道の開始教示点および目標教示点の間に配置された第１の中間教示点群に対して変位を与え、第２の中間教示点群を生成する中間教示点生成工程と、
前記制御装置が、第２の中間教示点群に基づき、前記ロボットアームを模擬したロボットアームモデルを動作させる軌道を生成する軌道生成工程と、
前記制御装置が、前記中間教示点生成工程において、前記第１の中間教示点群に対して異なる変位を与えて生成した複数の第２の中間教示点群から、前記軌道生成工程によりそれぞれ生成した複数の軌道に対する評価値を生成する評価工程と、
前記制御装置が、前記評価工程で生成された複数の軌道に対する評価値に基づき前記第１の中間教示点群を移動させ、移動後の第１の中間教示点群に対して、前記中間教示点生成工程と、前記軌道生成工程と、前記評価工程と、を繰り返し実行し、所定の条件を満たす第１の中間教示点群を前記ロボットアームを動作させる軌道の生成に用いる中間教示点群として決定する軌道決定工程と、を含む軌道生成方法。
【請求項２】
請求項１記載の軌道生成方法において、前記中間教示点生成工程において、前記ロボットアームモデルが、前記ロボットアームモデルの動作する空間に配置された障害物モデルを回避できる複数の中間教示点を生成する軌道生成方法。
【請求項３】
請求項１または２に記載の軌道生成方法において、前記中間教示点生成工程で、前記第２の中間教示点群に含まれ、隣り合う中間教示点にそれぞれ相関するパラメータを作用させ、前記複数の中間教示点を結ぶ経路を平滑化する軌道生成方法。
【請求項４】
請求項１から３のいずれか１項に記載の軌道生成方法において、前記軌道生成工程で、前記第２の中間教示点群に基づき、前記ロボットアームモデルを動作させる動作時間が短かくなる軌道を生成する軌道生成方法。
【請求項５】
請求項１から４のいずれか１項に記載の軌道生成方法において、前記評価工程で、評価する軌道における、前記ロボットアームモデルと、前記ロボットアームモデルの動作する空間に配置された障害物モデルと、の間の干渉量に基づき、前記評価値を生成する軌道生成方法。
【請求項６】
請求項５に記載の軌道生成方法において、前記干渉量は、前記ロボットアームモデルと、前記障害物モデルと、が、同一の空間を占める干渉時間、または干渉距離である軌道生成方法。
【請求項７】
請求項１から６のいずれか１項に記載の軌道生成方法において、前記評価工程で、評価する軌道で前記ロボットアームモデルを動作させた場合の動作時間に基づき、前記評価値を生成する軌道生成方法。
【請求項８】
請求項１から７のいずれか１項に記載の軌道生成方法において、前記軌道決定工程において、移動後の前記第１の中間教示点群に基づき生成した前記ロボットアームモデルを動作させる軌道の評価値が所定の条件を満たす場合、当該の第１の中間教示点群を、前記ロボットアームを動作させる軌道の生成に用いる中間教示点群として決定する軌道生成方法。
【請求項９】
請求項１から８のいずれか１項に記載の軌道生成方法において、前記軌道生成工程で、前記第２の中間教示点群に基づき、前記ロボットアームに関する関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、ないし手先加速度制約のうちいずれか１つまたは複数の制約を満足する軌道を生成する軌道生成方法。
【請求項１０】
請求項１から９のいずれか１項に記載の軌道生成方法の各工程を前記制御装置に実行させる制御プログラム。
【請求項１１】
請求項１０に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１２】
開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成装置において、
ロボットアームを動作させる軌道の開始教示点および目標教示点の間に配置された第１の中間教示点群に対して変位を与え、第２の中間教示点群を生成する中間教示点生成工程と、
第２の中間教示点群に基づき、前記ロボットアームを模擬したロボットアームモデルを動作させる軌道を生成する軌道生成工程と、
前記中間教示点生成工程において、前記第１の中間教示点群に対して異なる変位を与えて生成した複数の第２の中間教示点群から、前記軌道生成工程によりそれぞれ生成した複数の軌道に対する評価値を生成する評価工程と、
前記評価工程で生成された複数の軌道に対する評価値に基づき前記第１の中間教示点群を移動させ、移動後の第１の中間教示点群に対して、前記中間教示点生成工程と、前記軌道生成工程と、前記評価工程と、を繰り返し実行し、所定の条件を満たす第１の中間教示点群を前記ロボットアームを動作させる軌道の生成に用いる中間教示点群として決定する軌道決定工程と、
を実行する制御装置を備えた軌道生成装置。
【請求項１３】
請求項１から９のいずれか１項に記載の軌道生成方法を用いて生成された軌道で前記ロボットアームを動作させてワークの組み立てを行い、物品を製造する生産システム。
【請求項１４】
請求項１から９のいずれか１項に記載の軌道生成方法を用いて生成された軌道で前記ロボットアームを動作させてワークの組み立てを行い、物品を製造する物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボットアームの軌道を生成する軌道生成方法および軌道生成装置に関するものである。
【背景技術】
【０００２】
従来より、自動車や電機製品などの工業製品の生産システム（生産ライン）に、産業用のロボット装置を配置して溶接や組み立てなどの作業を自動化する構成が知られている。この種の生産システムでは、ロボット装置、ワーク、ワークの置き台、冶具、その他周辺機器などが互いに干渉（接触、衝突）する可能性がある状態で配置される。近年では、このような生産システムのロボット装置のアームの動作軌道の設計作業において、仮想環境を用いたシミュレーションが利用されることがある。
【０００３】
オフラインでシミュレータ装置を使用してロボット装置の動作シミュレーションを行う場合、仮想環境中にロボットアーム、ワーク置き台、冶具、その他の周辺機器などの３Ｄ（３次元）モデルを配置する。例えば、このようなシミュレータ装置では、予め作成したロボットアームの教示点の間の軌道を生成し、また、その軌道で仮想環境中のロボットアームの３Ｄモデルを動作させるシミュレーションを行って検証するものがある。ロボットアームモデルが動作する様子は、シミュレータ装置のディスプレイの仮想表示画面に動画形式などによって表示することができる。
【０００４】
当然ながら、ロボットアームの動作軌道によってシミュレーション結果は大きく異なってくる。ロボットアームの軌道が不適切であれば、ロボットアームの動作軌道の一部がロボットアームの動作不可能な領域に入ったり、ロボットアームが他の物体と干渉したり、無駄な動作によって、サイクルタイムが遅くなる場合がある。
【０００５】
旧来の手法では、ロボットアームが動作不可能な領域に入ったり、周辺機器とロボットアームが干渉したりしないという条件を満たすロボットアームの教示点をオペレータが画面上で試行錯誤的に作成していた。その場合、可動である、干渉しない、という条件がまず考慮されるため、必ずしも最適な動作速度で動作できるロボット軌道が生成されず、サイクルタイムが遅くなってしまう場合があった。その場合には、ロボットアームの教示点を再検討して設置し直す手動作業を行う必要があった。
【０００６】
また、一方で、生産システム（ライン）でロボット装置を用いる場合、工程設計者の教示点作成の工数が大きいので、人件費の高騰も問題となっている。そこで、近年では、教示者による直接教示に代わって、計算機を用いてロボットアームの教示作業を効率化する方法や装置が提案されている。
【０００７】
下記の非特許文献１では、ロボットアームの周りの障害物との干渉を回避し、なおかつロボットアームの関節に用いるモータのトルクを最小にする軌道の生成方法が開示されている。図８は、非特許文献１におけるロボットアームの軌道生成の手法を概略的に示している。図８において、ロボットアームＡは、Ｊ１、および、Ｊ２の２つの回転軸を持つ２自由度に簡略化されたロボットアームで、Ｏｂは障害物を示している。
【０００８】
図８において、ｐ１、ｐ２…ｐ９は、それぞれロボットアームＡの手先（ＴＣＰ：Ｔｏｏｌ  Ｃｅｎｔｅｒ  Ｐｏｉｎｔ）を移動させる位置を示している。これらの位置のうち、ｐ１は動作の開始位置（開始教示点）を、ｐ９は動作の目標位置（目標教示点）をそれぞれ示している。また、ｐ２〜ｐ８は、開始位置（ｐ１）と、目標位置（ｐ９）の間に配置される中間指令値を示している。例えば、制御周期ごとに、ｐ１、ｐ２…ｐ９の姿勢を、ロボットアームＡに順に指令し、ｐ１からｐ９に到達する動作を行わせることができる。この場合、開始位置（ｐ１）と、目標位置（ｐ９）との間のロボットアームの動作時間は、制御周期×（９−１）と計算される。非特許文献１の場合、中間指令値（ｐ２〜ｐ８）の数は、あらかじめ定数として決定されており、この場合は７個である。図８では、ｐ４、ｐ５において、ロボットアームと障害物Ｏｂが干渉しているが、以下の方法によって干渉回避の可能な軌道を生成することができる。
【０００９】
まず、中間指令値ｐ２、ｐ３、…ｐ８に相当する関節角度に対し、滑らかに変位を与え、新たな中間指令値ｒｉ２、ｒｉ３、…ｒｉ８（ｉ  ＝  １、…Ｎ）をＮ個生成する。次に、中間指令値ｒｉ２、ｒｉ３、…ｒｉ８（ｉ  ＝  １、…Ｎ）の評価を行い、その評価値を元に、中間指令値ｐ２、ｐ３、…ｐ８を変位させる処理を繰り返すことにより、軌道を最適化する。非特許文献１では、中間指令値の評価値として、ロボットアームＡと障害物Ｏｂとのめり込み量、各関節軸に用いるモータトルクを用いている。このような評価値を用いることにより、ロボットアームＡと、障害物Ｏｂが干渉せず、各関節軸に用いるモータトルクが過負荷状態にならない軌道を生成している。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Kalakrishnan, Mrinal, et al. "STOMP: Stochastic trajectory optimization for motion planning." Robotics and Automation (ICRA), 2011 IEEE International Conference on IEEE, 2011.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記のように、非特許文献１の技術では、ロボットアームＡと、障害物Ｏｂが干渉せず、各関節軸に用いるモータトルクが過負荷状態にならない軌道を生成する。しかしながら、非特許文献１の技術では、中間指令値の個数は固定数であり、従って、開始教示点（ｐ１）から目標教示点（ｐ９）までの動作時間が固定されており、例えばアームの動作時間を最適化できない問題がある。また、動作時間が固定されると、各関節軸に用いるモータトルクの制約条件や、他の制約条件を満たすのが難しくなる。このような達成困難になるロボット動作に関する制約条件には、例えば関節軸トルク、関節角速度、関節角加速度や加加速度、手先速度や手先加速度に関する制約条件が含まれる。即ち、非特許文献１に記載されるような従来技術では、次のような問題がある。即ち、中間指令値の個数が少なすぎる領域では、ロボット動作に関する制約条件を満たす保証がなく、逆に、中間指令値の個数が多すぎる領域では、動作時間が最適な軌道を得られない。
【００１２】
本発明の課題は、上記の問題に鑑み、ロボット動作に関する制約条件を満たした最適な軌道を確実に生成できるようにすることにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明においては、開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成方法において、制御装置が、ロボットアームを動作させる軌道の開始教示点および目標教示点の間に配置された第１の中間教示点群に対して変位を与え、第２の中間教示点群を生成する中間教示点生成工程と、前記制御装置が、第２の中間教示点群に基づき、前記ロボットアームを模擬したロボットアームモデルを動作させる軌道を生成する軌道生成工程と、前記制御装置が、前記中間教示点生成工程において、前記第１の中間教示点群に対して異なる変位を与えて生成した複数の第２の中間教示点群から、前記軌道生成工程によりそれぞれ生成した複数の軌道に対する評価値を生成する評価工程と、前記制御装置が、前記評価工程で生成された複数の軌道に対する評価値に基づき前記第１の中間教示点群を移動させ、移動後の第１の中間教示点群に対して、前記中間教示点生成工程と、前記軌道生成工程と、前記評価工程と、を繰り返し実行し、所定の条件を満たす第１の中間教示点群を前記ロボットアームを動作させる軌道の生成に用いる中間教示点群として決定する軌道決定工程と、を含む構成を採用した。
【発明の効果】
【００１４】
上記構成により、本発明によれば、ロボット動作に関する制約条件を満たした最適な軌道を確実に生成することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る軌道生成装置の機能的な構成を示した説明図である。
【図２】本発明の実施形態に係るロボットアームにおける２軸構成を示した説明図である。
【図３】本発明の実施形態に係る教示点群と軌道を示した説明図である。
【図４】本発明の実施形態に係る軌道の最適化処理を説明するフローチャート図である。
【図５】（ａ）〜（ｅ）は本発明の実施形態に係る軌道の最適化処理を示した説明図である。
【図６】本発明の実施形態に係る教示点群と軌道を示した説明図である。
【図７】（ａ）〜（ｅ）は本発明の実施形態に係る軌道の最適化処理を示した説明図である。
【図８】従来技術による軌道制御の手法を示した説明図である。
【図９】本発明の実施形態に適用可能な制御装置の概略構成を示したブロック図である。
【図１０】本発明の実施形態に係る生産システムに配置可能なロボット装置を示した説明図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００１７】
＜実施形態１＞
図１は本実施形態に係る軌道生成装置の構成を示している。なお、本実施形態では、本発明に係る軌道生成を行う装置を指して「軌道生成装置」というが、この軌道生成装置は、例えばロボットシミュレータ装置などの製品として提供されるものであってよい。
【００１８】
図１の軌道生成装置は、演算処理部１、教示者などがデータ入力などを行うための操作部２、動作プログラムなどを記録する記録部３や、ロボットアームの動作軌道などを表示するための表示部４を備えている。この軌道生成装置は、例えばＰＣ（パーソナルコンピュータ）のようなコンピュータハードウェアによって構成することができる。ここで、演算処理部１の具体的な構成例を図９に示す。
【００１９】
図９は、軌道生成装置、特に演算処理部１（図１）の主要部に相当する制御装置１０００の構成例を示している。図示のようにこの制御装置１０００は、ＣＰＵ１６０１廻りに配置された各ブロックから成る制御系である。なお、このＣＰＵ１６０１廻りに配置された各ブロックから成る構成は、例えば、後述のロボット制御装置（２００：図１０）などにおいてもほぼ同様に適用できる。
【００２０】
図９の制御装置１０００は、主制御手段としてのＣＰＵ１６０１、記憶装置としてのＲＯＭ１６０２、およびＲＡＭ１６０３を備える。ＲＯＭ１６０２には、後述する制御手順を実現するためのＣＰＵ１６０１の制御プログラムや定数情報などを格納しておくことができる。また、ＲＡＭ１６０３は、後述する制御手順を実行する時にＣＰＵ１６０１のワークエリアなどとして使用される。
【００２１】
図９の構成が、演算処理部１（図１）の場合には、ユーザーインターフェース装置として、例えばディスプレイ１６０８（図１の表示部４）、および操作部１６０９（図１の操作部２）がインターフェース１６０７に接続される。操作部１６０９は、例えばフルキーボードおよびポインティングデバイスなどから構成することができ、軌道シミュレーションや検証を行う作業者のためのユーザーインターフェースを構成する。
【００２２】
図９の制御装置１０００は、ネットワークＮＷを介して通信する通信手段としてネットワークインターフェース１６０５を備える。演算処理部１（図１）は、ネットワークインターフェース１６０５〜ネットワークＮＷを介して実機のロボットアームＡ（ないしはそのロボット制御装置２００（図１０））に対して教示点データや、軌道データをなどの制御情報を送受信することができる。その場合、ネットワークインターフェース１６０５は、例えばＩＥＥＥ  ８０２．３のような有線通信、ＩＥＥＥ  ８０２．１１、８０２．１５のような無線通信による通信規格で構成する。しかしながら、ネットワークＮＷには、もちろん、それ以外の任意の通信規格を採用しても構わない。
【００２３】
なお、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ＨＤＤやＳＳＤなどから成る外部記憶装置１６０４や、ＲＯＭ１６０２（の例えばＥＥＰＲＯＭ領域）のような記憶部に格納しておくこともできる。その場合、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ネットワークインターフェース１６０５を介して、上記の各記憶部に供給し、また新しい（別の）プログラムに更新することができる。あるいは、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、各種の磁気ディスクや光ディスク、フラッシュメモリなどの記憶手段と、そのためのドライブ装置を経由して、上記の各記憶部に供給し、またその内容を更新することができる。上述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムを格納した状態における各種の記憶手段や記憶部は、本発明の制御手順を格納したコンピュータ読み取り可能な記録媒体を構成することになる。
【００２４】
なお、ロボット制御装置２００（図１０）の場合には、図９の構成にロボットアームＡの各部のモータやソレノイドなど（不図示）を駆動するドライバ回路などが、インターフェース１６０６に接続される。また、ディスプレイ１６０８および操作部１６０９から成るユーザーインターフェースは、ロボット制御装置２００の場合には、ティーチングペンダントのような操作端末（例えば図１０の２０４）に置き換えてもよい。
【００２５】
一般に、ロボットアームは、関節とリンクによって構成され、関節機構の形式には回転関節や直動関節の他、球関節などさまざまな種類がある。本実施形態においては、軌道を生成するロボットアームは、図２に示すようにリンクを回転関節によって結合した構成を有するものとする。
【００２６】
図２は、本実施形態において、軌道生成の対象となるロボットアームの例である。図２のロボットアームＡは、説明を容易にするため、簡略化した構成で図示されている。
【００２７】
図２のロボットアームＡは、２つの回転関節からなる２つの軸Ｊ１、Ｊ２を備えている。以下では、これら関節の軸Ｊ１、Ｊ２の関節角度（関節位置）は、それぞれθ１、θ２と表記する。また、軸Ｊ２の先端には、基準位置として、ＴＣＰ（Ｔｏｏｌ  Ｃｅｎｔｅｒ  Ｐｏｉｎｔ）が定義される。本実施形態では、ロボットアームＡの位置を定義する教示点は、このＴＣＰの位置として表現される。また、生成するロボットアームＡの軌道は、このＴＣＰが移動する軌道として生成される。
【００２８】
一般に、軸Ｊ１、Ｊ２の関節角度θ１、θ２が与えられた場合、運動学的な演算によりＴＣＰの位置を取得でき、また、ＴＣＰの位置が与えられた場合、逆運動学的な演算によりＴＣＰがその位置を取る時の軸Ｊ１、Ｊ２の関節角度θ１、θ２を取得できる。以下では、ＴＣＰに言及する場合、単に「手先」と呼ぶ場合がある。
【００２９】
なお、ロボットアームＡは、理解を容易にするため、ごく簡略化した構成として図示しているが、この構成は本発明を実施する形態に限定するものではない。例えば、当業者が本発明を実施する場合、ロボットアームＡとしては、６軸多関節ロボットアームや、直動型のロボットアームの構成を用いることができる。そして、以下に示す本実施形態のロボットアームに係る制御系の構成や制御手順は、それらのロボットアームを用いる場合に容易に敷衍可能である。
【００３０】
次にロボットアームＡの移動動作について説明する。ロボットアームＡを移動させる場合、その移動の開始位置を示す教示点を開始教示点、目標位置を示す教示点を目標教示点という。ロボットアームＡの教示点は、手先（ＴＣＰ）の位置、姿勢もしくは、関節軸角度により決定することができる。また、逆運動学計算により、手先（ＴＣＰ）の位置、姿勢は、各関節軸の関節角度に変換可能であり、逆に、（順）運動学計算により、各関節軸の関節角度は、手先の位置、姿勢に変換可能である。
【００３１】
ここで、開始教示点、目標教示点をそれぞれＰｓ、Ｐｇとする。また、開始教示点と、目標教示点の間に配置する教示点を、中間教示点と呼び、Ｐ１、Ｐ２、…、Ｐｎと表現するものとする。また、Ｐ１、Ｐ２、…、Ｐｎを総称する場合は、中間教示点群と呼ぶことがある。
【００３２】
中間教示点群Ｐ１、Ｐ２、…Ｐｎを曲線で滑らかに補間する方法として、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線補間といった補間方法が知られている。これらの補間方法を用い、教示点間を滑らかに繋ぐ経路を生成することにより、ロボットアームＡを滑らかに動作させることができる。
【００３３】
本明細書では、ロボットアームの「動作経路」、もしくは「経路」とは、速度などの時間的概念は含まないロボットアームの動作の軌跡を指す。また、ロボットアームの「動作軌道」、もしくは「軌道」とは、ロボットアームの上記の「（動作）経路」に加え、ロボットアームの動作速度の情報を持つ情報体を意味し、本明細書では上記の「（動作）経路」とは明確に区別して用いる。なお、ロボット制御技術では、「軌道」は、ある単位時間、例えばロボットコントローラの制御クロック周期ごとのロボットアームの関節（角度）の指令値データ列によって表現される場合もある。
【００３４】
上記の補間手法を用いて生成したロボットアームの経路に対し、速度情報を含めた軌道を生成する方法として、最短時間制御がある。最短時間制御を用いることにより、補間により生成した経路に基づき、ロボットアームの物理的な制約を守った上で、動作時間が最短になる軌道を求めることが可能となる。なお、最短時間制御は決まった経路上を通る上で、最短時間となる移動速度を求める技術であって、ロボットアームを動作させる経路はあくまで中間教示点群Ｐ１、Ｐ２、…Ｐｎに依存する。ロボットアームの物理的な制約は、他にも、例えば、関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、手先加速度制約を作用させることが考えられる。以下では、最短時間制御を用いて生成した軌道を、ある制御周期ごとのロボットアームの位置指令値の列として、ｐ１、ｐ２、…ｐｔと表現する。
【００３５】
図３は、ロボットアームＡ（を模擬する３Ｄモデル：ロボットアームモデル）、および障害物Ｏｂ（を模擬する３Ｄモデル：障害物モデル）がともに動作環境（仮想環境）に配置されている様子を示している。また、図３では、開始教示点Ｐｓ、目標教示点Ｐｇ、と、中間教示点群Ｐ１、Ｐ２、…Ｐｎと、それにより生成される軌道（ｐ１、ｐ２、…ｐｔ）を示してある。
【００３６】
図３に示した軌道（ｐ１、ｐ２、…ｐｔ）では、ｐ４、ｐ５において、ロボットアームＡが障害物Ｏｂと干渉しており、この軌道では開始教示点Ｐｓから、目標教示点Ｐｇまで移動ができない。本実施形態の目的は、開始教示点Ｐｓから、目標教示点Ｐｇの間で、ロボットアームと障害物とが干渉しない（また他の制約条件も満たす）、最適な中間教示点群Ｐ１、Ｐ２、…Ｐｎを求めることにある。なお、障害物Ｏｂは静止していると限定せず、移動している場合でも、軌道の最適化計算は可能である。
【００３７】
図４は、本実施形態による軌道生成方法の主要な制御手順を記載したフローチャートである。図４に示した制御手順は、ＣＰＵ１６０１の制御プログラムとして、ＲＯＭ１６０２（あるいは外部記憶装置１６０４など）に格納しておくことができる。また、図５は、図４の各ステップの制御手順を図３と同様の様式で示している。以下では、軌道生成および最適化は、ロボットアームＡや障害物Ｏｂの３Ｄモデルに関して行うが、記述を簡略にするため、以下では、「３Ｄモデル」の明示を省略し、制御の対象がロボットアームＡや障害物Ｏｂであるかの如く記載する場合がある。
【００３８】
図４のステップＳ１００では、ロボットアームＡが作業を行う作業空間での、ロボットアームＡのモデルおよび、制約条件、開始教示点Ｐｓ、目標教示点Ｐｇを入力する（図５（ａ））。これらの入力は、例えば操作部２や表示部４によって構成したユーザーインターフェースを介してユーザに行わせることができる。また、特に開始教示点Ｐｓ、目標教示点Ｐｇは、表示部４上の仮想表示（ＧＵＩ）を介して、ユーザに入力させる他、ＡＩ的な処理によって軌道生成を行う場合は、ＣＰＵ１６０１が決定してもよい。
【００３９】
上記のロボットアームＡのモデルは、ロボットアームを構成する部品の設計情報であり、各リンクの慣性モーメント、質量、位置、姿勢、軸数などの情報を含む。また、制約条件とは、ロボットアームの物理的な制約を定義したもので、関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、手先加速度制約などを含む。
【００４０】
ステップＳ１０１では、ステップＳ１００で与えた、ロボットアームＡの開始教示点Ｐｓ、目標教示点Ｐｇの間に、初期値としての中間教示点（第１の中間教示点群）Ｐ１、Ｐ２、…Ｐｎを生成する（図５（ｂ））。本実施形態では、図５（ｂ）に示すように、生成する中間教示点の数をｎとし、中間教示点を順にＰ１、Ｐ２、…Ｐｎとしている。
【００４１】
中間教示点の生成方法には、障害物を回避する経路を計算する経路計画アルゴリズムを用いることが考えられる。経路生成方法には、ポテンシャル法、ＰＲＭ  （Ｐｒｏｂａｂｉｌｉｓｔｉｃ  ＲｏａｄＭａｐ）、ＲＲＴ  （Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅ）といった多くの方法がある。また、以上の経路生成手段に限定されず、可視グラフ法、セル分割法、ボロノイ図法などの他の経路生成方法も適用してもよい。また、単純に、経路計画アルゴリズムを用いずに、開始教示点、目標教示点の間を直線で線形補間する処理を用いてもよい。なお、上記のような経路計画技術はあくまで、教示点間を直線でつないだ場合にのみ干渉回避が保証される経路を算出する。従って、中間教示点群Ｐ１、Ｐ２、…Ｐｎを曲線で補間した経路においては必ずしも干渉回避が保証されない場合がある。
【００４２】
例えば、図５（ｂ）に示すように、中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）は、例えば障害物Ｏｂに干渉するような軌道に相当する。本実施形態では、このような初期値としての中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）から処理を開始しても、最適な軌道を生成するよう、中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）を移動させることができる。
【００４３】
あるいは、初期値としての中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）は、ユーザが、操作部２および表示部４のユーザーインターフェースを介して、画面上の仮想環境中にプロットする操作を行って設定してもよい。
【００４４】
図４のステップＳ１０２では、中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）に対して空間的な変位を与え、新たな中間教示点群Ｒ１、Ｒ２、…Ｒｎ（第２の中間教示点群）を生成する（図５（ｃ）：中間教示点生成工程）。この変位を与える方法としては、例えば、中間教示点の１つ１つに対し、空間的な変位を与えるためのパラメータとして乱数値を足し込む（加算する）方法が考えられる。ただし、単にランダムな乱数値を作用させる手法を採ると、教示点が振動的に配置され、ロボットアームの動作が滑らかでなくなる場合がある。一般的に、ロボットアームの動作が振動的になると、動作時間が増える傾向にあるため、教示点は振動的に配置されるのは望ましくない。
【００４５】
そこで、空間的な変位を与えるために隣り合う中間教示点に作用させる乱数の間に相関を与え、これにより軌道（経路）を平滑化することができる。たとえば、中間教示点群Ｐ１、Ｐ２、…Ｐｎにおける、ロボットアームの１軸の関節値をθ１１、θ１２、…θ１ｎとし、これらを変数とした多変量正規分布を考える。このように、分散共分散行列における共分散に、正の値を与えることで、隣り合う中間教示点の関節値に相関を持たせることができ、経路に沿った滑らかな乱数を発生させることが可能となる。
【００４６】
ステップＳ１０３では、中間教示点群Ｒ１、Ｒ２、…Ｒｎの間を曲線で補間し、最短時間制御を用いて軌道を生成する（軌道生成工程）。ここで、静止した障害物を回避すると言う目的であれば、曲線で補間した「経路」上でのロボットアームＡの干渉を評価すれば事足りるが、動作する障害物を考えた際には、時間軸も考慮に入れなければならないため、本実施形態では、「軌道」を考慮する。
【００４７】
ステップＳ１０４では、生成した軌道が制約を満たしているか判定し、軌道が制約を満たしていない場合は、Ｓ１０２に戻り、軌道が制約を満たしている場合は、Ｓ１０５に進む。ステップＳ１０４で判断する制約条件は、ステップＳ１０３で用いた最短時間制御技術で制約することができない制約である。ステップＳ１０４で判断する制約条件は、少なくとも、ステップＳ１０３で生成した軌道上では、ロボットアームＡの機構が可動範囲外にはみ出さないことを制約条件とする。また、ステップＳ１０４で判断する制約条件には、他の条件、例えば、ロボットアームの関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、ないし手先加速度制約が考えられる。ステップＳ１０４では、これらの制約条件のうちいずれか１つまたは複数の制約を満足する軌道を生成するよう判定を行うことができる。
【００４８】
ステップＳ１０５では、中間教示点群Ｒ１、Ｒ２、…Ｒｎおよび、それを元に生成した軌道を保存する。保存する中間教示点群は、他の保存した中間教示点群と区別するため、Ｒｉ１、Ｒｉ２、…Ｒｉｎと表記する。ｉは、保存した順番である。
【００４９】
ステップＳ１０６では、保存した中間教示点群および軌道が、ある定数Ｎ個になったか否かを判定する。ステップＳ１０６で、保存した中間教示点群および軌道がＮ個に達していなければ、ステップＳ１０２に戻り、Ｎ個になっていれば、ステップＳ１０７に進む。
【００５０】
ステップＳ１０７では、保存したＮ個の中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）に評価値を与える（図５（ｄ）：評価工程）。本実施形態では、この評価値は、中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）を、最適な軌道を生成するよう変位（移動）させるために用いる。
【００５１】
また、この評価値は、例えば、中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）に対応する軌道を評価することにより生成する。例えば、本実施形態では、障害物Ｏｂとの干渉を回避する軌道を求めるため、ロボットアームと障害物とが干渉量を評価値とする。例えば、この干渉量は、ロボットアームと障害物とが同一の空間を占める干渉時間や、めり込み量ないし干渉距離（あるいは両者の掃引空間の重複する体積など）であってよい。本実施形態では、例えば干渉量として干渉時間を採用し、評価値とする。
【００５２】
図５（ｄ）の例では、３つの中間教示点群に対して、干渉量（干渉時間またはめり込み量）で生成した評価値を示してある。この評価値は、第２の中間教示点群Ｒ１１、Ｒ１２…Ｒ１ｎでは１０、Ｒ２１、Ｒ２２…Ｒ２ｎでは３０、Ｒ３１、Ｒ３２…Ｒ３ｎでは５０、となっている。ここで最も評価値が良いのは干渉量の小さい（０に近い）中間教示点群Ｒ１１、Ｒ１２…Ｒ１ｎである。
【００５３】
なお、障害物Ｏｂの干渉回避以外の目的で、中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）に対応する軌道の評価に他の手法を採用してもよい。
【００５４】
ステップＳ１０８で、Ｎ個の中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）の評価値を元に、中間教示点群Ｐ１、Ｐ２、…Ｐｎを移動させる（図５（ｅ））。この移動の方法の１つとしては、例えば、中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）の中で、評価値が最も低い（良好な）中間教示点群に中間教示点群Ｐ１、Ｐ２、…Ｐｎを移動させる方法が考えられる。図５（ｅ）の例では、干渉量の小さい（０に近い）中間教示点群Ｒ１１、Ｒ１２…Ｒ１ｎの位置に中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群中）を移動させている。
【００５５】
また、中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）の評価値の逆数を重みとして、Ｎ個の中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）の重み付き平均をとり、中間教示点群Ｐ１、Ｐ２、…Ｐｎを移動させる方法を用いてもよい。
【００５６】
ステップＳ１０９では、ステップＳ１０２からステップＳ１０８までの処理を打ち切る条件を満たすか判定する。打ち切り条件を満たしていなければ、ステップＳ１０２に戻り、打ち切り条件を満たしていれば、ステップＳ１１０に進む。
【００５７】
あるいは、ステップＳ１０２〜ステップＳ１０９のループを実行する上限回数を定めておいてもよい。その場合、ステップＳ１０９でその上限回数に達している場合は、それ以上の試行を諦めてステップＳ１１０に進む。あるいは適当なエラーメッセージを表示部４で出力する、といったエラー処理を行うことにしてもよい。
【００５８】
ステップＳ１０９で判断する打ち切り条件は、例えば移動後の中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）に対して、ステップＳ１０７と同様な評価値を生成し、評価値が所定条件を満たすことを条件とする。例えば、本実施形態の目的は、ロボットアームＡと障害物Ｏｂとの干渉を回避することである。そこで、移動後の中間教示点群Ｐ１、Ｐ２、…Ｐｎ（第１の中間教示点群）について生成した評価値が０（干渉量：干渉時間やめり込み量が０）となることとする。これにより、ロボット動作に関する制約条件を満たした最適な軌道を生成することができる（軌道決定工程）。
【００５９】
ステップＳ１１０では、最適化された教示点として、中間教示点群Ｐ１、Ｐ２、…Ｐｎを出力する。この出力は、例えば表示部４の仮想表示内で、最適化された中間教示点群Ｐ１、Ｐ２、…Ｐｎによって生成される軌道でロボットアームＡの３Ｄモデル（ロボットアームモデル）を動作させることにより行う。あるいは、ステップＳ１１０は、実機のロボットアームＡないしそのロボット制御装置（２００：図１０）に最適化された中間教示点群Ｐ１、Ｐ２、…Ｐｎまたはそれにより生成された軌道データを出力する処理であってもよい。
【００６０】
本実施形態では、干渉回避を目的としているため、ステップＳ１１０まで到達した場合は、図６のように、移動後の中間教示点群Ｐ１、Ｐ２、…Ｐｎに基づき生成した軌道（ｐ１、ｐ２、…ｐｔ）において、ロボットアームが干渉物と干渉しない状態となる。
【００６１】
本実施形態によれば、複数の中間教示点群Ｒｉ１、Ｒｉ２、…Ｒｉｎ（ｉ  ＝  １〜Ｎ）を生成し、それにより定義される軌道を評価した結果に基づき、中間教示点群Ｐ１、Ｐ２、…Ｐｎを移動させる。軌道の評価には、関節トルク制約のような物理的制約に関する条件を用い、中間教示点群Ｐ１、Ｐ２、…Ｐｎを移動させる処理の脱出条件には、障害物回避の達成の条件を用いる。このような構成により、本実施形態によれば、障害物を回避し、関節トルク制約などの物理的制約を満たす滑らかな曲線軌道を生成することができる。
【００６２】
＜実施形態２＞
以下、図７を参照して、ロボットアームＡ（の３Ｄモデル）が障害物Ｏｂとの干渉回避を達成した上で、かつ最短時間で移動できる軌道を生成する最適化処理の例を示す。図７以外の構成、例えば、軌道生成装置およびその制御装置のハードウェア構成などは、実施形態１と同様であるものとする。
【００６３】
本実施形態の軌道生成方法の制御手順は、実施形態１の図４のフローチャートと同等であるが、本実施形態２では、実施形態１とは、中間教示点群Ｐ１、Ｐ２、…Ｐｎの初期値、軌道の制約方法、軌道の評価方法、および打ち切り条件が異なる。図７は、本実施形態において行われる軌道（第１の中間教示点）の最適化の様子を示したものである。図７は、図５と同様の形式で、本実施形態における図４の各ステップの処理を示している。
【００６４】
上記の実施形態１では、図４のステップＳ１０１で、開始教示点Ｐｓ、目標教示点Ｐｇの間（図７（ａ））に経路計画技術によって中間教示点群Ｐ１、Ｐ２、…Ｐｎを生成する例を示した。これに対して、本実施形態では、図４のステップＳ１０１において実施形態１の最適化処理を経て出力された中間教示点群Ｐ１、Ｐ２、…Ｐｎ（図６および図７（ｂ））を用いる。
【００６５】
既に実施形態１の最適化処理を経て出力された中間教示点群Ｐ１、Ｐ２、…Ｐｎを初期値とすることにより、既に障害物を回避済みの軌道の動作時間を縮める最適化を行うことができる。このように、本発明の最適化制御手順（図４）は、２パス（あるいはそれ以上の複数パス）で用いることができ、その場合、各パスにおいて、異なる制約条件を作用させることによって、各制約条件について最適化された軌道を取得することができる。
【００６６】
実施形態１では、新たな中間教示点群Ｒ１、Ｒ２、…Ｒｎ（第２の中間教示点群）を生成し（図５（ｃ））、図４のステップＳ１０４で、この第２の中間教示点群の軌道が制約を満たしているか判定する際に、ロボットアームＡの可動範囲内か否かを判定していた。本実施形態では、新たな中間教示点群Ｒ１、Ｒ２、…Ｒｎ（第２の中間教示点群）を生成し（図７（ｃ））、可動範囲内か否かの判定に加え、ロボットアームＡが障害物Ｏｂと干渉しているか否かを判定する。障害物と干渉している場合は、その中間教示点群Ｒ１、Ｒ２、…Ｒｎを無効とし、ステップＳ１０２に戻る。
【００６７】
また、実施形態１では、図４のステップＳ１０７で、干渉時間もしくはめり込み量を評価値として軌道を評価していた。本実施形態では、ロボットアームＡの動作時間を評価値として軌道を評価する（図７（ｄ））。これにより、動作時間が最短となる中間教示点群Ｐ１、Ｐ２、…Ｐｎを生成することができる。図７（ｄ）の例では、動作時間に係る第２の中間教示点群の評価値は、Ｒ１１、Ｒ１２…Ｒ１ｎでは１８０、Ｒ２１、Ｒ２２…Ｒ２ｎでは１２０、Ｒ３１、Ｒ３２…Ｒ３ｎでは１５０、となっている。ここで最も評価値が良いのは干渉量の小さい（動作時間値の小さい）中間教示点群Ｒ２１、Ｒ２２…Ｒ２ｎである。
【００６８】
また、実施形態１では、図４ステップＳ１０９の打ち切り条件の１つとして、評価値が０になることを考えた。これに対して本実施形態では、ステップＳ１０２〜ステップＳ１０９までの繰り返しに上限回数を設ける方法、もしくは、中間教示点群Ｐ１、Ｐ２、…Ｐｎの評価値が連続して（ほぼ）変化しない回数に上限を設ける方法を用いる。例えば、それ以上に動作時間が短縮されない場合にステップＳ１０２〜ステップＳ１０９のループを脱出し、最短時間の得られる中間教示点群Ｐ１、Ｐ２、…ＰｎをステップＳ１１０で出力する（図７（ｅ））。あるいは、本実施形態２では、ステップＳ１１０で、最適化された教示点として、必ずしも最終の移動状態の中間教示点群Ｐ１、Ｐ２、…Ｐｎを出力しなくてもよい。例えば、ステップＳ１０２からステップＳ１０８までの繰り返しにおける中間教示点群Ｐ１、Ｐ２、…Ｐｎの変化の履歴を取り、もっとも評価が高いものを出力しても良い。
【００６９】
以上に示したように、本実施形態によれば、障害物を回避し、トルク制約などの物理的制約を守った上で、さらに動作時間を最短とする軌道を生成できるという効果がある。特に、最適化制御手順（図４）は、２パス（あるいはそれ以上の複数パス）で用いることができ、その場合、各パスにおいて、異なる制約条件を作用させることによって、各制約条件について最適化された軌道を取得することができる。
【００７０】
ここで、ロボットアームＡのより具体的な構成例や、ロボットアームＡを生産システムに適用した場合の構成などにつき示しておく。
【００７１】
図１０は、模式的な図２の構成よりも具体的なロボットアームＡの全体構成を示している。図１０において、ロボットアームＡ（ロボット装置）は、例えば６軸（関節）の垂直多関節形式のアーム本体２０１を備える。アーム本体２０１の各関節は、各関節にそれぞれ設けられたサーボモータをサーボ制御することにより所望の位置姿勢に制御することができる。
【００７２】
アーム本体２０１の先端（手先）には、例えばハンド２０２のようなツールが装着され、このハンド２０２によって、ワーク２０３を把持し、ワーク２０３を組み付けたり、加工したりする生産作業を行わせることができる。ワーク２０３は、自動車や電機製品などの工業製品の例えば部品であって、ロボットアームＡはこのような生産システム（生産ライン）に生産装置として配置することができる。
【００７３】
ロボットアームＡのアーム本体２０１の動作は、ロボット制御装置２００（ロボットコントローラ）により制御される。ロボットアームＡの動作は、ロボット制御装置２００に接続された操作端末２０４（例えばティーチングペンダント）によってプログラミング（教示）することもできる。例えば、操作端末２０４により教示点を順次指定することによって、ロボットアームＡの特定部位（例えばＴＣＰ：アーム先端のツール装着面など）を所望の軌跡で移動させる動作をプログラミングすることができる。
【００７４】
また、ネットワークＮＷを介して、ロボットアームＡないしロボット制御装置２００は、上記の軌道生成装置（あるいはロボットシミュレータ：図１）から、上述のように最適化された中間教示点ないし軌道データを受信することができる。これにより、上記の処理によって最適化された中間教示点ないし軌道データに基づき、ロボットアームＡを生産システム（生産ライン）に配置し、生産装置として動作させ、物品を製造することができる。
【００７５】
本発明は、上述の実施例の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７６】
Ａ…ロボットアーム、Ｊ１、Ｊ２…関節軸、Ｏｂ…障害物、Ｐｓ…開始教示点、Ｐｇ…目標教示点、Ｐ１、Ｐ２、…Ｐｎ…（第１の）中間教示点群、Ｒｉ１、Ｒｉ２、Ｒｉｎ…（第２の）中間教示点群、１…演算処理部、２…操作部、３…記録部、４…表示部。
【図１】
2019135076.tif 000003
【図２】
2019135076.tif 000004
【図３】
2019135076.tif 000005
【図４】
2019135076.tif 000006
【図５】
2019135076.tif 000007
【図６】
2019135076.tif 000008
【図７】
2019135076.tif 000009
【図８】
2019135076.tif 000010
【図９】
2019135076.tif 000011
【図１０】
2019135076.tif 000012