(57)【要約】【課題】アーム同士の干渉、あるいは他の障害物との干渉などを生じず、効率的に複数のロボットアームを動作させる最適な軌道を生成する。【解決手段】ロボットアームＡ、Ｂについて、教示点ＰＡ１〜ＰＡ３の間に、第１の中間点群（ＰＡ１１〜ＰＡ２３、ＰＢ１１〜ＰＢ２３）と、その各位置で各アームを待機させる待機時間を含む第１の待機時間群の初期値を生成する。第１の中間点群と待機時間群に変位を与え、第２の中間点群と待機時間群を複数セット生成する（生成工程）。この複数セットについてロボット軌道を作成（軌道作成工程）し、各軌道の評価値を生成（評価工程）する。評価値に基づき変位を与えた、新たな第１の中間点群、待機時間群に対して軌道作成工程と、評価工程と、を繰り返し実行し（試行工程）、打ち切り条件が成立すると、新たな第１の中間点群、待機時間群から軌道を生成する。【選択図】図３
2020049554.tif 000002
【特許請求の範囲】
【請求項１】
開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成方法において、
制御装置が、前記開始教示点と前記目標教示点との間に生成された軌道で前記ロボットアームの動作を評価し、軌道の評価値を算出する評価工程と、
前記制御装置が、前記評価値の良好な軌道を選択する選択工程と、
前記制御装置が、前記選択工程で選択された軌道中の位置と、その位置で前記ロボットアームを待機させる待機時間と、を変更して新たな軌道を生成し、前記新たな軌道に対して前記評価工程と、前記選択工程と、を繰り返すことにより軌道を更新する更新工程と、を有する軌道生成方法。
【請求項２】
請求項１に記載の軌道生成方法において、前記評価工程で、前記の新たな軌道でロボットアームを動作させた際の、前記ロボットアームと他の物体の干渉量を前記評価値として生成し、前記更新工程では、前記干渉量が小さくなる方向に、前記軌道中の位置と、前記待機時間とを変更する軌道生成方法。
【請求項３】
請求項２に記載の軌道生成方法において、前記干渉量は、前記ロボットアームと前記他の物体とが同一の空間を占める干渉時間、または干渉距離である軌道生成方法。
【請求項４】
請求項１から３のいずれか１項に記載の軌道生成方法において、前記評価値が、所定の基準を満たす場合に、前記更新工程を打ち切る軌道生成方法。
【請求項５】
請求項１から３のいずれか１項に記載の軌道生成方法において、前記更新工程の繰り返し実行の回数が所定回数に達した場合、または、軌道の評価値が連続して変化しない回数が所定回数に達した場合、前記更新工程を打ち切る軌道生成方法。
【請求項６】
請求項１から５のいずれか１項に記載の軌道生成方法において、前記評価工程で評価される軌道の生成では、前記開始教示点、前記目標教示点、これら教示点の間に配置した中間点と、に基づき、曲線補間により前記ロボットアームの所定部位を通過させる経路を生成し、最短時間制御を用いて前記経路を通過する速度を決定する軌道生成方法。
【請求項７】
請求項１から６のいずれか１項に記載の軌道生成方法において、前記評価工程で評価される軌道の生成では、前記ロボットアームに関する関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、ないし手先加速度制約のうちいずれか１つまたは複数の制約を満足する軌道が生成される軌道生成方法。
【請求項８】
請求項１から７のいずれか１項に記載の軌道生成方法において、前記評価工程において、前記ロボットアームが教示点により規定された全ての動作が終了するまでの所要時間を前記評価値として生成し、前記更新工程では、前記所要時間が短かくなる方向に前記軌道中の位置と前記待機時間とを変更する軌道生成方法。
【請求項９】
請求項１から８のいずれか１項に記載の軌道生成方法において、前記更新工程の繰り返し実行の回数が増加するに従い、前記軌道中の位置と前記待機時間とを変更する変化量を小さくする軌道生成方法。
【請求項１０】
前記制御装置を構成するコンピュータに読み込ませることにより、前記コンピュータによって請求項１から９のいずれか１項に記載の軌道生成方法の各工程を実行させるための制御プログラム。
【請求項１１】
請求項１０に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１２】
開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成装置において、
制御装置が、前記開始教示点と前記目標教示点との間に生成された軌道で前記ロボットアームの動作を評価し、軌道の評価値を算出する評価工程と、
前記制御装置が、前記評価値の良好な軌道を選択する選択工程と、
前記制御装置が、前記選択工程で選択された軌道中の位置と、その位置で前記ロボットアームを待機させる待機時間と、を変更して新たな軌道を生成し、前記新たな軌道に対して前記評価工程と、前記選択工程と、を繰り返すことにより軌道を更新する更新工程と、を実行する制御装置を備えた軌道生成装置。
【請求項１３】
請求項１２に記載の軌道生成装置と、この軌道生成装置が生成した軌道によってそれぞれ動作する前記ロボットアームと、を含む、ロボットシステム。
【請求項１４】
請求項１３に記載のロボットシステムの前記軌道生成装置が生成した軌道によってそれぞれ動作するロボットアームによって物品を製造する物品の製造方法。
【請求項１５】
複数のロボットアームを、それぞれ教示点の間で動作させる軌道を生成する軌道生成方法において、
制御装置が、前記教示点の間に配置された第１の中間点群と、前記第１の中間点群を構成する中間点の少なくとも一つの位置において、前記ロボットアームを待機させるための待機時間を含む第１の待機時間群と、の初期値を生成する初期化工程と、
前記制御装置が、前記第１の中間点群を構成する中間点の位置と、前記第１の待機時間群を構成する待機時間と、に変位を与えて、第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群のセットを複数セット、生成する生成工程と、
前記制御装置が、前記複数セットの第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群に基づき、複数の前記ロボットアームをそれぞれ模擬した複数のロボットアームモデルを仮想空間で動作させる軌道をそれぞれ作成する軌道作成工程と、
前記制御装置が、前記軌道作成工程により作成された複数の軌道に対する評価値を生成する評価工程と、
前記評価値の高い軌道を、新たな第１の中間点群、および第１の待機時間群として選択する選択工程と、
前記制御装置が、前記選択工程で選択された、前記新たな第１の中間点群および第１の待機時間群に対して、前記生成工程と、前記軌道作成工程と、前記評価工程と、を繰り返し実行する試行工程と、
前記制御装置が、前記試行工程において、所定の打ち切り条件が成立した場合に、前記試行工程を打ち切り、前記の新たな第１の中間点群、および第１の待機時間群を用いて複数の前記ロボットアームを動作させる軌道を生成する軌道生成工程と、を含む軌道生成方法。
【請求項１６】
請求項１５記載の軌道生成方法において、前記評価工程で、前記複数セットの第２の中間点群、および対応する第２の待機時間群から生成した軌道で複数のロボットアームモデルを仮想空間で動作させた際の、複数の前記ロボットアームモデルの相互の干渉量、または、前記ロボットアームモデルのいずれか１つと前記ロボットアームモデルの動作する空間に配置された障害物モデルとの干渉量を前記評価値として生成し、前記試行工程では、複数の前記ロボットアームモデルの相互の干渉量、または前記ロボットアームモデルと前記障害物モデルとの干渉量が小さくなる方向に、前記第１の中間点群の中間点の各々、および前記第１の待機時間群の待機時間の各々に変位が与えられる軌道生成方法。
【請求項１７】
請求項１６に記載の軌道生成方法において、前記干渉量は、複数の前記ロボットアームモデル同士、または、前記ロボットアームモデルおよび前記障害物モデルが、同一の空間を占める干渉時間、または干渉距離である軌道生成方法。
【請求項１８】
請求項１５から１７のいずれか１項に記載の軌道生成方法において、前記試行工程で、前記複数セットの第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群から前記軌道作成工程により作成された複数の軌道の評価値のうち最も良好な評価値が、所定の基準を満たす場合に、前記所定の打ち切り条件が成立する軌道生成方法。
【請求項１９】
請求項１５から１７のいずれか１項に記載の軌道生成方法において、前記試行工程の繰り返し実行の回数が所定回数に達した場合、または、前記試行工程で、前記複数セットの第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群から前記軌道作成工程により作成された複数の軌道の評価値のうち最も良好な評価値が連続して変化しない回数が所定回数に達した場合、前記所定の打ち切り条件が成立する軌道生成方法。
【請求項２０】
請求項１５から１９のいずれか１項に記載の軌道生成方法において、前記軌道作成工程における軌道作成では、前記教示点、および第２の中間点群から曲線補間により前記ロボットアームモデルの所定部位を通過させる経路を生成し、最短時間制御を用いて前記経路を通過する速度を決定する軌道生成方法。
【請求項２１】
請求項１５から２０のいずれか１項に記載の軌道生成方法において、前記軌道作成工程で、前記第２の中間点群に基づき、前記ロボットアームに関する関節トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、ないし手先加速度制約のうちいずれか１つまたは複数の制約を満足する軌道が作成される軌道生成方法。
【請求項２２】
請求項１５から２１のいずれか１項に記載の軌道生成方法において、前記評価工程において、複数の前記ロボットアームモデルが教示点により規定された全ての動作が終了するまでの所要時間を前記評価値として生成し、前記試行工程では、前記所要時間が短かくなる方向に、前記第１の中間点群の中間点の各々、および前記第１の待機時間群の待機時間の各々に変位が与えられる軌道生成方法。
【請求項２３】
請求項１５から２２のいずれか１項に記載の軌道生成方法において、前記初期化工程と、前記生成工程、前記軌道作成工程、および前記評価工程を実行する試行工程を複数パス、用意し、各パスの評価工程では、それぞれ相互に異なる評価値を生成し、複数パスの評価工程では、それぞれ異なる評価値を用いて、評価工程の打ち切り条件を満たす前記第１の待機時間群、および第１の中間点群を、後続のパスの初期化工程で前記第１の待機時間群、および第１の中間点群の初期値として用い、最後のパスの評価工程の打ち切り条件を満たす第１の待機時間群、および第１の中間点群を用いて軌道を生成する軌道生成方法。
【請求項２４】
請求項１５から２３のいずれか１項に記載の軌道生成方法において、前記試行工程の繰り返し実行の回数が増加するに従い、前記第１の中間点群の中間点の各々、および前記第１の待機時間群の待機時間の各々に与えられる変位の量を小さくする軌道生成方法。
【請求項２５】
前記制御装置を構成するコンピュータに読み込ませることにより、前記コンピュータによって請求項１から９のいずれか１項に記載の軌道生成方法の各工程を実行させるための制御プログラム。
【請求項２６】
請求項２５に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項２７】
複数のロボットアームを、それぞれ教示点の間で動作させる軌道を生成する軌道生成装置において、
前記教示点の間に配置された第１の中間点群と、前記第１の中間点群を構成する中間点の各々の位置において、前記ロボットアームを待機させるための待機時間を含む第１の待機時間群と、の初期値を生成する初期化工程と、
前記第１の中間点群を構成する中間点と、前記第１の待機時間群を構成する待機時間と、に変位を与えて、第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群のセットを複数セット、生成する生成工程と、
前記複数セットの第２の中間点群、およびこの第２の中間点群に対応する第２の待機時間群に基づき、複数の前記ロボットアームをそれぞれ模擬した複数のロボットアームモデルを仮想空間で動作させる軌道をそれぞれ作成する軌道作成工程と、
前記軌道作成工程により作成された複数の軌道に対する評価値を生成する評価工程と、
前記評価値の高い軌道を、新たな第１の中間点群、および第１の待機時間群として選択する選択工程と、
前記選択工程で選択された、前記新たな第１の中間点群および第１の待機時間群に対して、前記生成工程と、前記軌道作成工程と、前記評価工程と、を繰り返し実行する試行工程と、
前記試行工程において、所定の打ち切り条件が成立した場合に、前記試行工程を打ち切り、前記の新たな第１の中間点群、および第１の待機時間群を用いて複数の前記ロボットアームを動作させる軌道を生成する軌道生成工程と、を実行する制御装置を備えた軌道生成装置。
【請求項２８】
請求項２７に記載の軌道生成装置と、この軌道生成装置が生成した軌道によってそれぞれ動作する複数の前記ロボットアームと、を含む、ロボットシステム。
【請求項２９】
請求項２８に記載のロボットシステムの前記軌道生成装置が生成した軌道によってそれぞれ動作する複数のロボットアームによって物品を製造する物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のロボットアームを、それぞれ開始教示点および目標教示点の間で動作させる軌道を生成する軌道生成方法、軌道生成装置、およびロボットシステムに関する。
【背景技術】
【０００２】
自動車や電機製品といった物品を製造する生産ラインでは、複数台のロボットアームを投入して、溶接や組み立てなどの作業を自動化することが行われている。このような生産システムでは、複数のロボットアームの動作領域が重なり合うほど近接して配置されることがある。このような近接する複数のロボットの教示作業は、旧来では、教示者が個々のロボットの動作を1ステップずつ実際に動作させながら、ロボット間で干渉が生じないよう、各ロボットの軌道と、各軌道間の実行タイミングを試行錯誤的に教示していた。
【０００３】
しかし、このような教示者による試行錯誤的な教示作業は、複数のロボットを確実に、また効率的に動作させるのが難しく、また、実用可能なロボット軌道を作成するのにはかなりの熟練を要する、という問題がある。例えば、製品の種類が頻繁に変わる環境では、製品の種類が変更される度に教示者が教示作業を全てやり直すことになるので、立ち上げ工数が増大し、生産性が極端に低下してしまう。また、教示作業の工数が増大すると、人件費の高騰が問題となる。
【０００４】
そこで、近年では、教示者による直接教示に代わって、計算機を用いて複数のロボットの教示作業と動作制御を効率化する方法や装置が提案されている。
【０００５】
例えば、下記の特許文献１では、複数のロボット間の干渉を回避し、なおかつロボットの待ち時間を最小にして効率的にロボットを動作させる制御装置が開示されている。特許文献１のロボット制御装置では、２つのロボットの作業点と作業点間の経路につき、干渉テーブルを作成する。この干渉テーブルを用いると、ロボットアームＡとロボットアームＢが、それぞれある作業点に位置している時、ロボットアームＡとロボットアームＢが同時に作業を行なうと干渉が生じることが判る。このようなアーム同士の干渉が生じる可能性がある場合、いずれかのロボットアームの作業を優先させる。この優先順位を制御するデータは、優先順位テーブルとして生成するが、その場合、例えば、各ロボットの残りの作業時間と作業点での待ち時間の和などに応じて優先順位を決定する。
【０００６】
また、下記の非特許文献１は、ロボット同士の干渉回避を行うため、複数のロボットアームＡ、Ｂを一つのロボットアームＣとみなして経路生成を行う。図７（ａ）〜（ｇ）は、非特許文献１の技術により制御されるロボットアームＡおよびロボットアームＢの動作を示し、これらのロボットは２つの関節（２つの自由度）からなる２軸を備えたロボットである。このうち、ロボットアームＡは、開始点となる２軸関節角度が（θａｓ１，θａｓ２）であり、目標点となる２軸関節角度が（θａｇ１，θａｇ２）とする。一方、ロボットアームＢは、開始点となる２軸関節角度が（θｂｓ１，θｂｓ２）であり、目標点となる２軸関節角度が（θｂｇ１，θｂｇ２）とする。また、この例では、ロボットアームＡ、Ｂの作業空間には、障害物Ｏｂが設置されている。
【０００７】
非特許文献１の技術では、ロボット同士の干渉および、障害物との干渉回避を考慮に入れた経路を生成するために、ロボットアームＡとロボットアームＢを一つのロボットアームＣとして取り扱う。そして、このロボットアームＣの４次元コンフィグレーション空間で、開始点（θａｓ１，θａｓ２，  θｂｓ１，θｂｓ２）から、目標点（θａｇ１，θａｇ２，  ｓθｂｇ１，θｂｇ２）へと障害物を回避する経路を探索する。経路生成には、ＲＲＴ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅ）やＰＲＭ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  ＲｏａｄＭａｐ  Ｍｅｔｈｏｄ）のような経路生成アルゴリズムを用いる。このように、第１、第２のロボットアームを一つの仮想的なロボットアームとして取り扱い、経路生成を行うことにより、図８（ａ）〜（ｇ）に示すように、各ロボットが干渉しない経路をそれぞれ決定することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−３４７９８４号公報
【非特許文献】
【０００９】
【非特許文献１】G. S´anchez and J.-C. Latombe, “On delaying collision checking in PRM planning: Application to multi-robot coordination” International Journal of Robotics Research, vol. 21, no. 1, pp. 5-26, 2002.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１の制御では、２つのロボットの干渉の可能性があるそれぞれの作業点では、優先順位の高い方のロボットの作業点への移動と、その作業を先に行わせ、それが終了するまで優先順位の低い方のロボットの作業点への移動と、その作業を待機させる。しかしながら、例えば、高優先順位のロボットが作業を終えて次の作業点に移動するまで、低優先順位のロボットを１つ前の作業点で待機させると、作業効率が低下する可能性がある。例えば、低優先順位のロボットの、干渉領域に入るまでの移動時間などを考慮すると、高優先順位のロボットが干渉領域を脱していなくても、低優先順位のロボットの移動を開始できる可能性がある。さらに、その場合、低優先順位のロボットの軌道の補正を行うことなどによって、より速く、低優先順位のロボットを移動できる可能性がある。特許文献１の技術では、このような効率化の余地が考慮されていない。即ち、特許文献１の技術では、全体の作業時間を短縮できる余地はまだ十分残されているが、双腕ロボットが同時に移動し干渉回避をする軌道については考慮していないため、この方法ではこれ以上対処できないという問題がある。
【００１１】
一方、非特許文献１で開示された方法は、双腕ロボットを一つのロボットとみなして、経路生成アルゴリズムにより経路生成を行い、ロボットを同時に移動し干渉を回避する。この経路生成にはＲＲＴ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅ）やＰＲＭ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  ＲｏａｄＭａｐ  Ｍｅｔｈｏｄ）のようなアルゴリズムが用いられる。
【００１２】
非特許文献１では、第１、第２のロボットアームを仮想的なロボットアームとみなし、この仮想的なロボットアームの姿勢をコンフィグレーション空間で１つの点として扱う。そのために、非特許文献１の制御によると、第１、第２のロボットアームの動作のタイミングが同じになる。しかし、第１、第２のロボットアームが同じタイミングで動作するよう制御されると、例えば一方のアームが少ししか動かず、他方のアームが大きく動く場合に、前者のアームが後者のアームに影響され、全体の動作が無駄に遅くなるケースが予想される。
【００１３】
例えば、図７（ａ）〜（ｇ）の例では、移動量の少ないロボットアームＡが先に目標点（図７（ｇ））に到達できてもよく、また、その方が特定の用途で好ましい場合が考えられる。しかしながら、非特許文献１の手法によると、第１、第２のロボットアームを仮想的なロボットアームとして扱うため、第１、第２のロボットアームは、目標点に着くタイミングが同じになるよう制御せざるを得ない。そのため、非特許文献１の手法によると、複数のロボット間に移動量のばらつきがある場合には、無駄な動きの制約が生じる可能性がある。また、非特許文献１のように第１、第２のロボットアームを仮想的なロボットアームとして扱う手法では、次のようなロボット動作を制御できない可能性がある。これらは、例えば、第１、第２のロボットアームが同じ場所にアプローチする動作、第１のロボットアームが動いている間に第２のロボットアームが動き始める動作などである。また、非特許文献１の制御手法では、第１のロボットアームが先に目標点に到着しその他の動作を先行して開始する動作、などを行わせることができない。即ち、非特許文献１の手法によると、複数ロボットの作業時間を最短にする効率化を追及できない可能性がある上、生成できる動作が限定される、という問題がある。
【００１４】
そこで、本発明は、上記問題に鑑み、ロボットアーム同士の干渉、あるいは作業空間中の障害物とロボットアームの干渉などを生じず、効率的に複数のロボットアームを動作させることができる最適な軌道を生成できるようにすることにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明においては、開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する軌道生成方法において、制御装置が、前記開始教示点と前記目標教示点との間に生成された軌道で前記ロボットアームの動作を評価し、軌道の評価値を算出する評価工程と、前記制御装置が、前記評価値の良好な軌道を選択する選択工程と、前記制御装置が、前記選択工程で選択された軌道中の位置と、その位置で前記ロボットアームを待機させる待機時間と、を変更して新たな軌道を生成し、前記新たな軌道に対して前記評価工程と、前記選択工程と、を繰り返すことにより軌道を更新する更新工程と、を有する構成を採用した。
【発明の効果】
【００１６】
上記構成によれば、ロボットアーム同士の干渉、あるいは作業空間中の障害物とロボットアームの干渉などを生じず、効率的に複数のロボットアームを動作させることができる最適な軌道を生成することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係る軌道生成装置の概略構成を示した説明図である。
【図２】本発明の実施形態に係る複数ロボットアームの教示点群、および障害物を示した説明図である。
【図３】本発明の実施形態に係る複数ロボットアームの教示点群と軌道を示した説明図である。
【図４】本発明の実施形態に係る軌道生成を説明するフローチャート図である。
【図５】（ａ）〜（ｄ）は本発明の実施形態に係る軌道生成の様子を示した説明図である。
【図６】（ａ）〜（ｄ）は本発明の実施形態に係る軌道の異なる軌道生成の様子を示した説明図である。
【図７】（ａ）〜（ｇ）は従来技術による軌道制御の手法を示した説明図である。
【図８】本発明の実施形態に適用可能な制御装置の概略構成を示したブロック図である。
【図９】本発明の実施形態に係る生産システムに配置可能なロボット装置を示した説明図である。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００１９】
図１は本発明の実施形態に係る軌道生成装置の構成を示す図である。この軌道生成装置は、ＣＰＵ等からなる演算処理部１と、教示者等がデータ入力などを行う操作部２と、動作プログラム等を記録する記録部３と、ロボットステーションやロボットの軌道の表示を行う表示部４を備えている。
【００２０】
図２は、障害物Ｏｂの配置された作業空間において、ロボットアームＡ、Ｂを動作させる配置の一例を示している。図２では、ロボットアームＡの教示点ＰＡ１、ＰＡ２、ＰＡ３、ロボットアームＢの教示点ＰＢ１、ＰＢ２、ＰＢ３が与えられている。本実施形態の軌道生成では、これらの教示点を通る軌道を生成する。その場合、ロボットアームＡ、Ｂ同士が干渉しないことは勿論、ロボットアームＡ、Ｂのいずれも障害物Ｏｂと干渉しない軌道を生成する。
【００２１】
本実施形態の軌道生成処理は、ロボットアームＡ、Ｂは、主にタスク空間のＸ方向Ｙ方向を移動する２自由度のロボットアームであるものとして説明する。しかしながら、本発明に係るロボットは、一般的に自動作業を行う装置として広く認知されるものであればよく、本発明は例えばロボットアームの関節数、それにより実現される姿勢の自由度の数などによって、限定的に解釈されるものではない。例えば、後述の図９に例示するような６軸多関節ロボットや直動型のロボットを用いたロボットシステムなどにおいても本発明は実施することができる。
【００２２】
この種の２自由度以上の関節数を有する多関節ロボットの場合は、ロボットの教示点は、手先の位置、姿勢もしくは、関節軸角度により決定することができる。また、本実施形態では、２つのロボットアームが動作する例を示すが、本発明はロボットアームの数によって限定されるものではなく、例えば後述の実施形態３のように３つ、あるいはそれ以上のロボットアームが移動する構成でも本発明は実施可能である。
【００２３】
図２において、ロボットアームＡは障害物Ｏｂおよび、ロボットアームＢとの干渉を回避し、教示点ＰＡ１、ＰＡ２、ＰＡ３の順に、移動するものとする。また、ロボットアームＢは障害物Ｏｂおよび、ロボットアームＡとの干渉を回避し、教示点ＰＢ１、ＰＢ２、ＰＢ３の順に、移動するものとする。
【００２４】
また、教示点ＰＡ２と教示点ＰＢ２では、ロボットアームＡとロボットアームＢが干渉する位置にあるが、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２に到達することを制約とする。これを本実施形態では動作制約と呼ぶ。この動作制約は、ロボットアームＡが、ワークを搬送し、ＰＡ２でワークを置き、ロボットアームＢがワークをＰＢ２で受け取るといった動作を想定している。
【００２５】
図３は、図２の環境において、軌道評価のために教示点の間に配置される中間点と、ロボットの経路を示したものである。なお、本実施形態では、説明を容易にするため、中間点は開始位置と目標位置に相当する２つの教示点の間に、３つ配置する例を説明するが、本発明は中間点の数によって限定されるものではない。
【００２６】
また、本明細書において、ロボットの「経路」とは、速度などの時間的概念は含まないロボット、例えば手先などの特定の基準部位が動作する軌跡を意味する。また、ロボットの「軌道」とは、「経路」と、その「経路」上のロボットの動作速度の情報を持つ情報体を意味し、このように本明細書では「軌道」と、「経路」と、は明確に区別される。一般に、軌道はある制御周期ごとのロボットの特定の基準部位を位置させるための位置指令値データとして表現されることが多い。この位置指令値データは、例えば、特定の基準部位を特定の位置（教示点）に位置させるための、ロボットの各関節の位置（角度）データのリスト、のような形式によって表現される。
【００２７】
図３の例では、ロボットアームＡは、教示点ＰＡ１、中間点ＰＡ１１、ＰＡ１２、ＰＡ１３、教示点ＰＡ２を制御点とし、曲線で滑らかに補間した経路ＴＡ１上を通り、教示点ＰＡ１から教示点ＰＡ２へと移動する。その後、ロボットアームＡは、教示点ＰＡ２、中間点ＰＡ２１、ＰＡ２２、ＰＡ２３、教示点ＰＡ３を制御点とし、曲線で滑らかに補間した経路ＴＡ２上を通り、教示点ＰＡ２から教示点ＰＡ３へ到達する。
【００２８】
一方、ロボットアームＢは、教示点ＰＢ１、中間点ＰＢ１１、ＰＢ１２、ＰＢ１３、教示点ＰＢ２を制御点とし、曲線で滑らかに補間した経路ＴＢ１上を通り、教示点ＰＢ１から教示点ＰＢ２へと移動する。その後、ロボットアームＢは、教示点ＰＢ２、中間点ＰＢ２１、ＰＢ２２、ＰＢ２３、教示点ＰＢ３を制御点とし、曲線で滑らかに補間した経路ＴＢ２上を通り、教示点ＰＢ２から教示点ＰＢ３へ到達する。
【００２９】
教示点（ないし中間点）の間で、アームの所定部位を通過させる経路を滑らかに曲線補間する手法として、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線補間といった周知の補間手法がある。これらの補間手法を用いて、教示点間を滑らかに繋ぐ経路を生成することにより、ロボットの滑らかな動作を実現することができる。なお、図３は、ロボットアームは中間点を通過するよう表現しているが、中間点は経路を生成するためのパラメータに過ぎず、ロボットアームは必ず中間点を通過することを要請するものではない。たとえば、Ｂ−Ｓｐｌｉｎｅ補間で補間した軌道の場合は、経路が中間点を通過しない場合がある。
【００３０】
また、教示点および中間点を用いて生成したロボットの経路に対し、速度情報を含めた軌道を生成する方法として、最短時間制御がある。後述の軌道作成工程では、最短時間制御を用いれば、上記補間方法により生成した経路に基づき、ロボットの物理的な制約の範囲内で、動作時間が最短になる軌道を求めることができる。なお、本実施形態における最短時間制御は、決まった経路上を通る上で、最短時間となる移動速度を求めるもので、経路は変化させない。
【００３１】
また、ロボット動作が満足すべき物理的な制約には、例えば、トルク制約、関節角速度制約、関節角加速度制約、ジャーク制約、手先速度制約、加速度制約などがある。最短時間制御を用いて生成した軌道は、ある制御周期ごとのロボットの位置指令値となる。ただし、最短時間制御を用いずに、カム曲線を利用した軌道生成などを行ってもよい。
【００３２】
また、本実施形態では、ロボットは、教示点ごとにある時間待機するものとし、この時間を待機時間と呼ぶ（ただし、本実施形態は、待機時間が０である制御を除外するものではない）。本実施形態では、ロボットアームＡは教示点ＰＡ１でＷＡ１秒待機し、教示点ＰＡ２ではＷＡ２秒待機するとする。また、教示点ＰＡ３は終点であり、動作終了後は待機し続けるので、待機時間は定義しない。また、ロボットアームＢは教示点ＰＢ１でＷＢ１秒待機し、教示点ＰＢ２ではＷＢ２秒待機するとする。また、ロボットアームＡの場合と同様、教示点ＰＢ３は終点であり動作終了後は待機し続けるので、待機時間は定義しない。
【００３３】
図３において、ロボットアームＡ、Ｂがそれぞれ、待機せずに、経路ＴＡ１、ＴＡ２、ＴＢ１、ＴＢ２、にそれぞれ沿って移動を開始した場合、例えば教示点ＰＡ２、ＰＢ２でロボットアームＡとＢが干渉してしまうことが考えられる。
【００３４】
ここで、例えば、作業内容などに応じてロボットアームＡが教示点ＰＡ２が到達した後で、ロボットアームＢが教示点ＰＢ２の位置に到達すべきことが決まっているとする。その場合、例えばロボットアームＢが教示点ＰＢ１、ＰＢ２において待機すべき適切な待機時間（ＷＢ１、ＷＢ２）などを設定できれば、ロボットアームモデル同士の干渉を回避することができる。また、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２に到達するためには、待機時間ＷＢ１よりＷＢ２が大きく（長く）設定される必要がある。
【００３５】
図３（あるいは後述の図５）の例では、アーム同士およびロボットと障害物とが干渉せずにそれぞれの教示点を経由する軌道を生成する。また、ロボットアームＢが教示点ＰＢ２に到達するより前にロボットアームＡが教示点ＰＡ２に到達するロボットアームＡ、Ｂの動作を生成する。
【００３６】
ここで、図８に、軌道生成装置、特に演算処理部１（図１）の主要部に相当する制御系１０００の構成例を示しておく。図示のようにこの制御系１０００は、ＣＰＵ１６０１廻りに配置された各ブロックから成る構成である。なお、このＣＰＵ１６０１廻りに配置された各ブロックから成る構成は、例えば、ロボット制御装置（２００Ａ、２００Ｂ：後述の図９）などにおいてもほぼ同様に適用できる。
【００３７】
図８の制御系１０００は、主制御手段としてのＣＰＵ１６０１、記憶装置としてのＲＯＭ１６０２、およびＲＡＭ１６０３を備える。ＲＯＭ１６０２には、後述する制御手順を実現するためのＣＰＵ１６０１の制御プログラムや定数情報などを格納しておくことができる。また、ＲＡＭ１６０３は、後述する制御手順を実行する時にＣＰＵ１６０１のワークエリアなどとして使用される。
【００３８】
図８の構成が、演算処理部１（図１）の場合には、ユーザーインターフェース装置として、例えばディスプレイ１６０８（図１の表示部４）、および操作部１６０９（図１の操作部２）がインターフェース１６０７に接続される。操作部１６０９は、例えばフルキーボードおよびポインティングデバイスなどから構成することができ、軌道シミュレーションや検証を行う作業者のためのユーザーインターフェースを構成する。
【００３９】
図８の制御系１０００は、ネットワークＮＷを介して通信する通信手段としてネットワークインターフェース１６０５を備える。演算処理部１（図１）は、ネットワークインターフェース１６０５〜ネットワークＮＷを介して実機のロボットアーム１００１Ａ、１００１Ｂ（ないしはそのロボット制御装置２００Ａ、２００Ｂ（図９））と通信することができる。その場合、教示点データや、軌道データをなどの制御情報を送受信することができる。その場合、ネットワークインターフェース１６０５は、例えばＩＥＥＥ  ８０２．３のような有線通信、ＩＥＥＥ  ８０２．１１、８０２．１５のような無線通信による通信規格で構成する。しかしながら、ネットワークＮＷには、もちろん、それ以外の任意の通信規格を採用しても構わない。
【００４０】
なお、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ＨＤＤやＳＳＤなどから成る外部記憶装置１６０４や、ＲＯＭ１６０２（の例えばＥＥＰＲＯＭ領域）のような記憶部に格納しておくこともできる。その場合、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ネットワークインターフェース１６０５を介して、上記の各記憶部に供給し、また新しい（別の）プログラムに更新することができる。あるいは、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、各種の磁気ディスクや光ディスク、フラッシュメモリなどの記憶手段と、そのためのドライブ装置を経由して、上記の各記憶部に供給し、またその内容を更新することができる。上述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムを格納した状態における各種の記憶手段や記憶部は、本発明の制御手順を格納したコンピュータ読み取り可能な記録媒体を構成することになる。
【００４１】
なお、図８において、ロボット制御装置２００Ａ、２００Ｂ（図９）の場合には、ロボットアーム１００１Ａ、１００１Ｂ（同）の各部のモータやソレノイドなど（不図示）を駆動するドライバ回路などが、インターフェース１６０６に接続される。また、ディスプレイ１６０８および操作部１６０９から成るユーザーインターフェースは、ロボット制御装置２００Ａ、２００Ｂ（図９）の場合には、ティーチングペンダント２０４Ａ、２０４Ｂ（同）のような操作端末に置き換えてもよい。
【００４２】
本実施形態において、開始教示点および目標教示点の間でロボットアームを動作させる軌道を生成する場合、開始教示点と前記目標教示点との間に生成された軌道（動作情報）でロボットアームの動作を評価し、軌道の評価値を算出する（評価工程）。試行工程ないし更新工程では、軌道中の位置と、その位置で前記ロボットアームを待機させる待機時間と、に適宜変化量を与えて変更し、新たな軌道を例えば複数、生成する。この新たな軌道について、前記評価工程を実行し、また評価工程において評価値の良好な軌道を選択する（選択工程）処理を繰り返す。
【００４３】
図４は、本実施形態による軌道生成処理の流れを示している。また、図５（ａ）〜（ｄ）は、図４の各ステップの制御に相当するロボットアームの経路と軌道を示したものである。以下、図４、図５を参照して、本実施形態のロボットの軌道生成に処理につき説明する。
【００４４】
図４のステップＳ１００では、ロボットアームＡ、Ｂが作業を行う作業空間（図５（ａ））におけるこれらロボットアームを模擬するロボットアームモデル、物理的制約条件、動作制約条件、各教示点を入力する。ロボットアームＡ、Ｂに対応するロボットアームモデルは、作業空間を模擬した仮想空間で動作させて、軌道生成、ないしその最適化を行う。なお、以下の軌道生成処理、ないしその最適化処理の説明では、簡略化のため、仮想空間におけるロボットアームモデル、障害物モデルについても、あたかも（実機の）ロボットアーム、障害物の動作であるかのごとく記述することがある。
【００４５】
図５（ａ）に示すように、ロボットアームＡ、ロボットアームＢ、障害物Ｏｂ、ロボットアームＡの教示点ＰＡ１、ＰＡ２、ＰＡ３、ロボットアームＢの教示点ＰＢ１、ＰＢ２、ＰＢ３、などの構成および配置は、図２で示したものと同様である。
【００４６】
ロボットアームＡ、ロボットアームＢのロボットアームモデルは、ロボットを構成する部品の設計情報である。このロボットアームＡ、ロボットアームＢのロボットアームモデルは、ポリゴン情報、慣性モーメント、質量、位置、姿勢、軸数などによって表現される。また、ロボットアームモデルを構成する物理的制約条件には、ロボットアームの物理的な制約を定義したもので、ロボットアームの機構の構造、ジオメトリなどによって課せられる関節トルク制約、手先速度制約、手先加速度制約などがある。
【００４７】
また、動作制約条件とは、上述のように、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２に到達するという、動作の前後関係にかかわる制約条件である。この動作制約条件は、例えば、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２で特定の作業を行わなければならない、といった、特定の物品の製造工程の都合などにより決定されている。
【００４８】
図４のステップＳ１０１、Ｓ１０２では、暫定の中間点（第１の中間点群）を生成し、また暫定の中間点（第１の中間点群）の各々における暫定の待機時間（第１の待機時間群）を初期化する（初期化工程）。
【００４９】
ステップＳ１０１で、ステップＳ１００で与えた、教示点の間に、暫定の中間点（第１の中間点群）を生成する。この暫定の中間点（第１の中間点群）は、後述の新たな中間点（第２の中間点群）の複数セットの評価結果によって、変位を与えて最適な軌道を生成できるよう、移動させる。
【００５０】
本実施形態では、中間点（第１、第２の中間点群）として生成する中間点の数を教示点間に３つとする。図５（ｂ）示すように、教示点ＰＡ１と教示点ＰＡ２の間では、暫定の中間点ＰＡ１１、ＰＡ１２、ＰＡ１３（第１の中間点群）を、教示点ＰＡ２と教示点ＰＡ３の間では、暫定の中間点ＰＡ２１、ＰＡ２２、ＰＡ２３（第１の中間点群）を配置する。また、教示点ＰＢ１と教示点ＰＢ２の間では、暫定の中間点ＰＢ１１、ＰＢ１２、ＰＢ１３（第１の中間点群）を教示点ＰＢ２と教示点ＰＢ３の間では、暫定の中間点ＰＢ２１、ＰＢ２２、ＰＢ２３（第１の中間点群）を生成する。
【００５１】
ステップＳ１０１における、暫定の中間点の生成方法としては、障害物を回避する経路を計算する経路計画アルゴリズムを用いることが考えられる。この経路生成方法には、ポテンシャル法、ＰＲＭ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｒｏａｄ  Ｍａｐ）、ＲＲＴ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅ）などの周知の手法を利用できる。また、以上の経路計画アルゴリズムに限定されることなく、可視グラフ法、セル分割法、ボロノイ図法などの他の経路計画アルゴリズムも適用できる。また、単純に、経路計画アルゴリズムを用いずに、教示点間を線形補間して中間点を生成する手法を用いてもよい。
【００５２】
本実施形態では、暫定の中間点（第１の中間点群）において、その位置でアームを待機させる暫定の待機時間（第１の待機時間群）を定義し、中間点（第１の中間点群）を最適化するとともに、対応する待機時間（第１の待機時間群）を最適化する。その場合、暫定の待機時間（第１の待機時間群）に変位を与え、後述の新たな待機時間（第２の待機時間群）が生成され、新たな中間点（第２の中間点群）とともに評価される。ステップＳ１０２では、暫定の中間点（第１の中間点群）それぞれにつき、その位置でアームを待機させる暫定の待機時間ＷＡ１、ＷＡ２、ＷＢ１、ＷＢ２（第１の待機時間群）を０に初期化する。
【００５３】
ステップＳ１０３では、暫定の中間点ＰＡ１１〜ＰＡ１３、ＰＡ２１〜ＰＡ２３、ＰＢ１１〜ＰＢ１３、ＰＢ２１〜ＰＢ２３（第１の中間点群）に対し、それぞれ変位を与え、新たな中間点（第２の中間点群）を算出する。また、暫定の待機時間ＷＡ１、ＷＡ２、ＷＢ１、ＷＢ２（第１の待機時間群）に対し、それぞれ変位を与え、新たな待機時間（第２の待機時間群）を算出する。
【００５４】
ここで、待機時間に変位を与える方法としては、例えば、例えば、暫定の待機時間、暫定の中間点の１つ１つに対し、独立して乱数値を足し込む方法を用いる。あるいは、暫定の待機時間、暫定の中間点のパラメータを連動させて多変量正規分布を用いて発生させた乱数値を足し込む手法を用いてもよい。この軌道中の位置ないし待機時間を変位させるための乱数の値の範囲は、新たな軌道生成と評価を繰り返す試行工程ないし更新工程の繰り返し実行の回数が増加するに従い、例えば狭くなるように制御することができる。即ち、試行工程ないし更新工程の繰り返し実行の回数が増加するに従い、例えば第１の中間点群の中間点の各々、および第１の待機時間群の待機時間の各々に与えられる変位の量を小さくする制御を行うことができる。このような制御は、上記の軌道中の位置ないし待機時間を変位させるための乱数を発生させる乱数発生サブルーチンに対する設定処理により、乱数の値の範囲や分散値を設定することにより行うことができる。上記のような制御により、更新、生成される軌道の精度を高め、また処理を良好に収束させることができる。
【００５５】
ステップＳ１０４では、新たな待機時間（第２の待機時間群）と、新たな中間点（第２の中間点群）を用いて、時間情報を含んだロボットアームの動作情報（軌道）を作成する（軌道作成工程）。例えば、ロボットアームごとに、教示点間を、新たな中間点を用いて曲線補間により経路を生成し、最短時間制御を用いて軌道を生成する。その後、新たな待機時間と軌道から、ある制御周期ごとのロボットごとの位置指令値を生成する。待機中の指令値は、待機する教示点での位置を待機時間分、複製した位置指令値となる。次に、ロボットアームＡとロボットアームＢの指令値を一つにまとめ、各時間にロボットアームＡとロボットアームＢの位置指令値を示す動作情報の情報体を生成する。この動作情報の情報体は、ＲＡＭ１６０３、外部記憶装置１６０４（図８）のようなメモリ上では、例えばテーブルデータのような構造体により表現される。この動作情報は、経路のみならず待機時間を含んだ「軌道」を制御する制御情報と考えることができる。そこで、以下では、この動作情報は「（軌道）」の括弧書きとともに記載することがある。
【００５６】
ステップＳ１０５で、動作情報（軌道）を元に、上述の動作制約を満たしているか判定し、満たしていない場合は、ステップＳ１０３に戻り、満たしている場合は、ステップＳ１０６に進む。このステップＳ１０５における「制約」は、ステップＳ１０４で用いた最短時間制御技術で制約する物理的制約ではなく、ロボットアームＡが教示点ＰＡ２に到達するという、動作の前後関係にかかわる制約条件である。
【００５７】
ステップＳ１０６では、新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）および、それに基づき生成した動作情報（軌道）のセットを保存する（生成工程）。
【００５８】
ステップＳ１０７では、保存した新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）、および対応する動作情報（軌道）のセットが、所定数Ｎ個になったかを判定する。ここで保存した複数セットのセット数がＮ個になっていなければ、ステップＳ１０３に戻り、もしＮ個になっていれば、ステップＳ１０８に進む。即ち、本実施形態では、所定数Ｎ個の新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）、および対応する動作情報（軌道）のセットを複数個、生成し、保存する。保存先には、ＲＡＭ１６０３や、外部記憶装置１６０４（図８）の所定記憶エリアを用いる。
【００５９】
本実施形態では、説明を容易にするため、生成し、保存する新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）、および対応する動作情報（軌道）のセットの数はＮ＝２とする。このＮ＝２の場合の、図５（ｂ）、（ｃ）に新たな中間点（第２の中間点群）と、対応する動作情報に基づき生成した軌道の例を示す。図５（ｂ）、（ｃ）において、１セット目の、中間点（第１の中間点群）教示点ＰＡ１、ＰＡ２、ＰＢ１、ＰＢ２での新たな待機時間（第２の待機時間群）はそれぞれ、ＷＡ１１、ＷＡ２１、ＷＢ１１、ＷＢ２１である。また、中間点（第１の中間点群）を変位させて得た教示点ＰＡ１、ＰＡ２間の新たな中間点（第２の中間点群）はＰＡ１１１、ＰＡ１２１、ＰＡ１３１、教示点ＰＡ２、ＰＡ３間の新たな中間点（第２の中間点群）はＰＡ２１１、ＰＡ２２１、ＰＡ２３１である。また、教示点ＰＢ１、ＰＢ２間の新たな中間点（第２の中間点群）はＰＢ１１１、ＰＢ１２１、ＰＢ１３１、教示点ＰＢ２、ＰＢ３間の新たな中間点（第２の中間点群）はＰＢ２１１、ＰＢ２２１、ＰＢ２３１である。
【００６０】
同様に、２セット目の、教示点ＰＡ１、ＰＡ２、ＰＢ１、ＰＢ２での新たな待機時間（第２の待機時間群）はそれぞれ、ＷＡ１２、ＷＡ２２、ＷＢ１２、ＷＢ２２である。また、中間点（第１の中間点群）を変位させて得た教示点ＰＡ１、ＰＡ２間の新たな中間点（第２の中間点群）はＰＡ１１２、ＰＡ１２２、ＰＡ１３２、教示点ＰＡ２、ＰＡ３間の新たな中間点（第２の中間点群）はＰＡ２１２、ＰＡ２２２、ＰＡ２３２である。また、教示点ＰＢ１、ＰＢ２間の新たな中間点（第２の中間点群）はＰＢ１１２、ＰＢ１２２、ＰＢ１３２、教示点ＰＢ２、ＰＢ３間の新たな中間点（第２の中間点群）はＰＢ２１２、ＰＢ２２２、ＰＢ２３２である。
【００６１】
図４のステップＳ１０８では、保存したＮ個の新たな待機時間、新たな中間点、動作情報のセットに、それぞれ評価値を与える（評価工程）。この評価は、動作情報に基づいて行う。本実施形態では、ロボットアームと他の物体の干渉を回避するため、干渉量に基づいて行う。このロボットアームと他の物体の干渉は、例えば複数のロボットアームモデル同士、またはロボットアームモデルと障害物モデルとの干渉に相当する。本実施形態では、例えば、ロボットアーム（モデル）と、他の物体が干渉して（同一の空間を占めて）いる干渉時間を評価値として用いる。干渉判定は、ロボットモデルに含まれる、ポリゴン情報から行う。また、干渉している時間ではなく、あるロボットアームと障害物（ないしは他のロボット）の相互のめり込み量（例えば干渉距離）を評価値として用いてもよい。ただし、動作情報（軌道）の評価基準は特に、上記の評価基準に限定されるものではなく、上記の評価基準と別のものであっても構わない。
【００６２】
ステップＳ１０９では、Ｎ個の、新たな待機時間、新たな中間点、動作情報のセットの評価値に基づき、暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）に変位を与えて、移動させる。この暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）の移動の方法としては、次のような手法を用いる。例えば、新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）、対応する動作情報（軌道）のセットの中で、評価値が最小（良好）な新たな待機時間、新たな中間点に、暫定の第１の待機時間群、第１の中間点群を移動させる。あるいは、新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）、対応する動作情報のセットの評価値を重みとした重み付き平均に、暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を移動させる手法を用いてもよい。
【００６３】
図５（ｄ）は、一例として、評価値が良好だった２セット目の新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）に、暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を移動させた例を示している。
【００６４】
ステップＳ１０３からステップＳ１０９で構成される、生成工程と、軌道作成工程と、評価工程と、は繰り返し実行される（試行工程）。このループ（試行工程）の処理の脱出条件は図４のステップＳ１１０で判定される。
【００６５】
ステップＳ１１０では、ステップＳ１０３からステップＳ１０９で構成されるループ（試行工程）の処理を打ち切る条件を満たすか判定する。打ち切り条件を満たしていなければ、ステップＳ１０３に戻り、打ち切り条件を満たしていれば、ステップＳ１１１に進みループ（試行工程）の処理を繰り返す。
【００６６】
本実施形態の目的は、ロボットと障害物との干渉を回避することである。そのため、ステップＳ１１０で判定される打ち切り条件は、例えば、Ｎ個ある、新たな待機時間、新たな中間点、動作情報のセットの中で、最小な評価値が０になることとする。
【００６７】
ステップＳ１１１では、暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を用いて、ロボットアームＡ、Ｂをそれぞれ動作させる軌道を生成する（軌道生成工程）。
【００６８】
以上説明したように、本実施形態によれば、複数のロボットアームが、教示点へ到達する順番を制約しつつ、ロボットアーム同士の干渉および、ロボットアームと障害物との干渉を回避可能な軌道を生成することができる。また、評価のための軌道作成においては、動作制約、物理的な制約、最短時間制御、のような制御を加味することができる。従って、作業工程に適合し、機構上の問題を生じず、かつ効率よく複数のロボットアームを動作させる軌道を生成することができる。
【００６９】
＜実施形態２＞
上記実施形態１では、主に、教示点へ到達する順番の制約を逸脱せず、ロボットアーム同士の干渉および、ロボットアームと障害物との干渉を回避可能な軌道を生成する最適化技術について説明した。本実施形態２では、複数のロボットアームが、教示点へ到達する順番の制約を逸脱せず、ロボットアーム同士の干渉および、ロボットアームと障害物との干渉を回避しながら最短で動作させる軌道を生成することを目的とする。
【００７０】
ロボットシステムのハードウェア的な構成は実施形態１と同等であり、また、本実施形態による動作生成方法の主要なステップは、実施形態１の図４のフローチャートと準ずるものとする。しかしながら、本実施形態２では、上記実施形態１とは、暫定の待機時間の初期値、暫定の中間点の初期値、動作の制約方法、動作の評価方法、打ち切り条件の構成が異なる。
【００７１】
本実施形態２では、図４に示した処理を行い、打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を用いて、再度、下記のように図４の一部を変更した処理を行い、最適化した軌道を生成する。
【００７２】
この図４の一部を変更した処理では、まず、初期化工程が最初に行う実施形態１の図４の処理が異なる。実施形態１では、図４のステップＳ１０１で、経路計画技術を元に暫定の中間点（第１の中間点群）を生成し、ステップＳ１０２で暫定の待機時間（第１の待機時間群）を０に初期化している。これに対して、本実施形態のステップＳ１０２では、図４のステップＳ１１０〜Ｓ１１１で収束、生成した暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）に初期化する。このため、処理の１パス目の実施形態１の図４のステップＳ１１１は、直ちに軌道生成を行わないように変更しておく。
【００７３】
このように、本実施形態では、実施形態１の処理で打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を初期値に用いる。これより、ロボット同士および、ロボットと障害物との干渉を回避することが判明している暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を出発点として、動作時間を縮める軌道最適化処理を行うことができる。
【００７４】
また、実施形態１の図４の処理では、ステップＳ１０５で、軌道が制約を満たしているか判定する際に、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２に到達するかを判定していた。これに対して、本実施形態２では、さらに加えて、ロボットアーム同士、および、ロボットアームと障害物が干渉しているか否かを判定する。そして、ロボットアーム同士もしくは、ロボットアームと障害物が干渉している場合は、その新たな待機時間、新たな中間点を無効とし、図４のステップＳ１０３に戻る。
【００７５】
また、実施形態１では、図４のステップＳ１０８で、干渉している時間もしくはめり込み量を評価値として動作を評価していた。これに対して、本実施形態２では、複数のロボットアーム、即ちロボットアームＡ、Ｂが与えられた教示点により規定された全ての動作が終了するまでの所要時間を評価値として用いる。このような評価値生成により、工程作業の時間が最短となる、暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を生成することができる。
【００７６】
また、実施形態１では、図４のステップＳ１１０の打ち切り条件を、Ｎ個ある、新たな待機時間、新たな中間点、動作情報のセットの中で、最小な評価値が０になることとしていた。これに対して、本実施形態２では、ステップＳ１１０の打ち切り条件は、ステップＳ１０３からステップＳ１０９（試行工程）の繰り返しの回数が所定回数に達するか、または、評価値が連続して変化しない回数が所定回数に達することとする。これにより、試行工程が収束せず、発散する事態に対処でき、また、実質的に試行工程で暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）が収束していることを検出することができる。
【００７７】
本実施形態２において、ステップＳ１１１では、暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を用いて軌道を生成する。ただし、ステップＳ１０３〜Ｓ１０９（試行工程）の繰り返しにおける暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）の変化の履歴を保存しておき、最も良好な第１の待機時間群、および中間点群を軌道生成に用いてもよい。例えば、保存しておいた履歴の中で最も良好な（例えば動作時間の最も短い）評価値を得た暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）のを軌道生成に用いる。
【００７８】
以上に示したように、本実施形態２では、実施形態１の図４の処理で打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を用いて、再度、上記のように図４の一部を変更した処理を行う。このようなほぼ２パス構成の最適化により、複数のロボットアームの目標教示点への到達順の制約、ロボットアーム同士の干渉、ロボットアームと障害物との干渉を回避するという制約を全て守った上で、動作時間を最短とする軌道を生成することができる。
【００７９】
なお、以上では、干渉回避に係る干渉量を評価値に用いる最適化（実施形態１）の後に、複数のロボットアームが与えられた教示点により規定された全ての動作が終了するまでの所要時間を評価値に用いる軌道生成（本実施形態２）を示した。しかしながら、複数のロボットアームが与えられた教示点により規定された全ての動作が終了するまでの所要時間を評価値に用いる軌道生成は、干渉回避を必ずしも考慮する必要のない場合には単独で実施しても構わない。
【００８０】
また、本実施形態２で示したように、それぞれ異なる評価値を用いる複数のパスで軌道生成ないしその最適化を行うことができる。即ち、それぞれ異なる評価値を用いる複数のパスで軌道生成ないしその最適化を行う場合、本発明は軌道生成ないしその最適化制御のパス数によって限定されるものではない。例えば、軌道評価に用いたい評価値が複数ある場合、例えば３以上のパス構成で、打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を次々に取得する制御を行うことができる。
【００８１】
その場合、前記の初期化工程と、生成工程、前記軌道作成工程、および前記評価工程を実行する試行工程を複数パス、用意し、各パスの評価工程では、それぞれ相互に異なる評価値を生成する。複数パスの評価工程では、それぞれ異なる評価値を用いて、評価工程の打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を、後続のパスの初期化工程で待機時間および中間点の初期値として用いる。そして最後のパスの評価工程の打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、および暫定の中間点（第１の中間点群）を用いて軌道を生成する。
【００８２】
＜実施形態３＞
実施形態１、２では、主に２ロボットアーム構成における軌道生成、ないしその最適化制御を説明した。本実施形態３のロボットシステムでは、ロボットアームＡ、Ｂに加え、さらに、ロボットアームＣが作業空間に配置されている構成を例示する。本実施形態の目的は、もちろん、これらロボットアーム同士およびロボットアームと障害物とが干渉せずにそれぞれの教示点を経由して動作させる軌道を生成することにある。その場合、本実施形態では、ロボットアームＡ、ロボットアームＢ、ロボットアームＣの動作について、ロボットアームＢが教示点ＰＢ２に到達するより前に、ロボットアームＡが教示点ＰＡ２に到達する制約条件が採用される。
【００８３】
本実施形態３でも、軌道生成処理の主要なステップは、図４のフローチャートに準ずる。また、図６（ａ）〜（ｄ）は、図４の主要ステップの制御を図示している。本実施形態では、図６（ａ）に示すように、実施形態１に対し、ロボットアームＣおよび、ロボットアームＣの教示点ＰＣ１、ＰＣ２が新たに追加されている。
【００８４】
ロボットアームＣに関しては、教示点ＰＣ１、ＰＣ２が与えられ、教示点ＰＣ１から教示点ＰＣ２まで移動する軌道を生成する。その場合、当然、障害物および、他のロボットと干渉することなく動作できるよう軌道を生成する。また、ロボットアームＣは、ロボットアームＡおよびロボットアームＢとの間で、動作の前後関係の制約はないものとする。
【００８５】
このような構成においても、実施形態１の図４と同等の処理によって、ロボットアームＡ、Ｂ、Ｃの最適な軌道を生成することができる。その場合、まず、図４のステップＳ１００で、図６（ａ）に示した構成に対応し、ロボットアームＡ、Ｂに加え、ロボットアームＣのモデル、物理的制約条件、動作制約条件、教示点ＰＣ１、ＰＣ２が入力される。ただし、本実施例では、ロボットアームＣは、他のロボットとの間では、動作の前後関係に関する動作制約条件を持たないとする。
【００８６】
図４のステップＳ１０１では実施形態１に加え、ロボットアームＣの暫定の中間点ＰＣ１１、ＰＣ１２、ＰＣ１３（第１の中間点群）の初期値を生成する（図６（ｂ））。また、ステップＳ１０２では実施形態１のロボットアームＡ、Ｂに加え、ロボットアームＣについても、暫定の待機時間ＷＣ１（第１の待機時間群）の初期値を０で初期化する。
【００８７】
また、図４のステップＳ１０３〜Ｓ１０７では、実施形態１と同様、ロボットアームＣに関しても、新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）を生成する。この際、実施形態１と同様、動作制約条件を満たさない新たな待機時間、新たな中間点のセットは破棄し、動作条件を満たす新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）のセットを２つ（Ｎ＝２）計算する。
【００８８】
図６（ｃ）は、新たな中間点（第２の中間点群）に対応する経路の例を示す。ここでは、実施形態１に加え、１セット目の、教示点ＰＣ１、ＰＣ２での新たな待機時間（第２の待機時間群）がそれぞれ、ＷＣ１１、ＷＣ２１に設定される。また、教示点ＰＣ１、ＰＣ２間に、新たな中間点（第２の中間点群）としてＰＣ１１１、ＰＣ１２１、ＰＣ１３１が生成されている。同様に、２セット目の、教示点ＰＣ１、ＰＣ２での新たな待機時間（第２の待機時間群）がそれぞれ、ＷＣ１２、ＷＣ２２に設定される。また、教示点ＰＣ１、ＰＣ２間の新たな中間点（第２の中間点群）としてＰＣ１１２、ＰＣ１２２、ＰＣ１３２が生成されている。
【００８９】
図４のステップＳ１０８では、ロボットアームＡ、Ｂ、Ｃの新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）から動作情報（軌道）を生成し、ロボットアーム同士および、ロボットアームと障害物が干渉する時間で評価値を計算する。
【００９０】
ステップＳ１０９では、実施形態１と同様、２セット（Ｎ＝２）の新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）と、対応する動作情報（軌道）の評価値の評価結果に基づき、暫定の第１の待機時間群、第１の中間点群を移動させる。図６（ｄ）の例では、２セット目の新たな待機時間（第２の待機時間群）、新たな中間点（第２の中間点群）が採用され、そこに暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を移動させている。
【００９１】
図４のステップＳ１１０では、実施形態１と同様、試行工程（ステップＳ１０３〜Ｓ１０９）を打ち切る打ち切り条件が成立しているか否かを判定する。そして、打ち切り条件が成立している場合には、ステップＳ１１１で、実施形態１と同様、打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を用いてロボットアームＡ、Ｂ、Ｃの軌道を生成する。
【００９２】
以上説明したように、本実施形態３によれば、３機のロボットアームについて、教示点へ到達する順番を制約しつつ、ロボットアーム同士の干渉および、ロボットアームと障害物との干渉を回避可能な軌道を生成することができる。また、評価のための軌道作成においては、動作制約、物理的な制約、最短時間制御、のような制御を加味することができる。従って、作業工程に適合し、機構上の問題を生じず、かつ効率よく複数のロボットアームを動作させる軌道を生成することができる。
【００９３】
本実施形態３では、実施形態１にロボットアームＣを加え、干渉回避を目的とした動作生成を行う最適化の例を示した。しかしながら、上記の実施形態２の制御は、３アーム構成のロボットシステムにおいても実施することができる。即ち、実施形態３の処理（１パス目）で取得した打ち切り条件を満たす暫定の待機時間（第１の待機時間群）、暫定の中間点（第１の中間点群）を初期化に用いて実施形態２の制御を実施する。これにより、評価値を動作時間として、干渉回避をしつつ、動作時間が最適な動作を生成することができる。以上に示したように、本発明の軌道生成ないし、その最適化制御は、ロボットアームの数や、評価指標を限定することなく、ロボットアームの軌道を生成することが可能である。
【００９４】
＜ロボットシステムの構成＞
ここで、上記の各実施形態により、生成されたロボット軌道によって制御される複数アームのロボットシステムの具体的な構成例や、このロボットシステムを生産システムに適用した場合の構成などにつき示しておく。
【００９５】
図９は、ロボットアームＡ、Ｂのより具体的な構成例を模式的な図２よりも詳細に示したものである。図９において、ロボットアーム１００１Ａ、１００１Ｂは、それぞれ上述のロボットアームＡ、Ｂに相当し、例えば６軸（関節）の垂直多関節形式の構成である。これら、ロボットアーム１００１Ａ、１００１Ｂの各関節は、各関節を駆動するサーボモータをサーボ制御することによって所望の位置姿勢に制御することができる。
【００９６】
ロボットアーム１００１Ａ、１００１Ｂは、の先端（手先）には、例えばハンド２０２Ａ、２００Ｂのようなツールがそれぞれ装着されている。ロボットアーム１００１Ａ、１００１Ｂは、ハンド２０２Ａ、２０２Ｂによって、ワーク２０３Ａ、２０３Ｂを把持し、これらのワークを組み付けたり、加工したりする生産作業を行うことができる。ワーク２０３Ａ、２０３Ｂは、自動車や、電子機器、電機製品などの工業製品の例えば部品である。ロボットアーム１００１Ａ、１００１Ｂを生産システム（生産ライン）に生産装置として配置することができる。
【００９７】
ロボットアーム１００１Ａ、１００１Ｂの動作は、ロボット制御装置２００Ａ、２００Ｂ（ロボットコントローラ）によりそれぞれ制御される。ロボットアーム１００１Ａ、１００１Ｂの動作は、ロボット制御装置２００Ａ、２００Ｂに接続された操作端末２０４（例えばティーチングペンダント）によってプログラミング（教示）することもできる。例えば、操作端末２０４により教示点を順次指定することによって、ロボットアーム１００１Ａ、１００１Ｂの特定部位（例えばＴＣＰ：アーム先端のツール装着面など）を所望の軌跡で移動させる動作をプログラミングすることができる。
【００９８】
また、ネットワークＮＷを介して、ロボットアーム１００１Ａ、１００１Ｂ、ないしロボット制御装置２００Ａ、２００Ｂは、上記の軌道生成装置（図１のロボットシミュレータ）から、最適化された中間教示点ないし軌道データを受信することができる。これにより、最適化された中間教示点ないし軌道データで、ロボットアーム１００１Ａ、１００１Ｂを生産システム（生産ライン）に生産装置として配置して動作させ、各アームにより物品を製造することができる。
【００９９】
本発明は、上述の実施例の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１００】
１…演算処理部、２…操作部、３…記録部、４…表示部、Ａ〜Ｃ、１００１Ａ、１００１Ｂ…ロボットアーム、１６０１…ＣＰＵ、１６０２…ＲＯＭ、１６０３…ＲＡＭ、１６０４…外部記憶装置、ＮＷ…ネットワーク、Ｏｂ…障害物、ＰＡ１、ＰＡ２、ＰＡ３…（第１の）教示点群、ＰＢ１、ＰＢ２、ＰＢ３…（第１の）中間点群、ＰＡｎｎ、ＰＡｎｎｎ…（第２の）中間点群、ＰＢｎｎ、ＰＢｎｎｎ…（第２の）中間点群。
【図１】
2020049554.tif 000003
【図２】
2020049554.tif 000004
【図３】
2020049554.tif 000005
【図４】
2020049554.tif 000006
【図５】
2020049554.tif 000007
【図６】
2020049554.tif 000008
【図７】
2020049554.tif 000009
【図８】
2020049554.tif 000010
【図９】
2020049554.tif 000011