(57)【特許請求の範囲】
【請求項１】
ロボット及び該ロボットの周辺に配置された周辺物の３次元モデルを同一の仮想空間内に配置して、前記ロボットのシミュレーションを行うロボットシミュレーション装置であって、
前記ロボットの動作プログラムのシミュレーションを実行して、前記ロボットの第１の動作経路を取得する動作経路取得部と、
前記ロボットを前記第１の動作経路に沿って移動させたときの、前記ロボットと前記周辺物との干渉の有無を検出して、干渉が発生する直前の教示点である第１の教示点と、干渉が発生した直後の教示点である第２の教示点とを特定する教示点特定部と、
前記第１の教示点と前記第２の教示点との間に、前記第１の教示点又は前記第２の教示点から、乱数で定めた探索方向に乱数で定めた探索距離だけ離れた少なくとも１つの第３の教示点を自動的に追加し、前記ロボットと前記周辺物との干渉が発生しない第２の動作経路を生成する動作経路生成部と、
前記動作経路生成部が生成した複数の異なる第２の動作経路の各々について、前記ロボットの動作時間及び前記ロボットと前記周辺物との最小離隔距離を含む、予め定めた少なくとも１つのパラメータに基づく評価を行う評価部と、
前記評価部が行った評価に基づいて、前記複数の第２の動作経路から、前記ロボットの最適動作経路を選択する動作経路選択部と、
を備えることを特徴としたロボットシミュレーション装置。
【請求項２】
前記動作経路生成部は、前記第１の教示点から、前記第１の教示点から乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの第３の教示点に至る動作経路に沿って前記ロボットを移動させたときの前記周辺物との干渉の有無を検出して、干渉が発生しない場合は、前記第３の教示点を前記第１の教示点と前記第２の教示点の間に挿入する処理を行い、
最後に挿入された第３の教示点から前記第２の教示点に至る動作経路に沿って前記ロボットを移動させたときの前記周辺物との干渉の有無を検出して、干渉が発生しなくなるまで、最後に挿入された第３の教示点から、該最後に挿入された第３の教示点から乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの新たな第３の教示点を挿入する処理を繰り返すことによって、前記第２の動作経路を生成する、請求項１に記載のロボットシミュレーション装置。
【請求項３】
前記動作経路生成部は、
前記第３の教示点と前記第２の教示点との距離が、前記第１の教示点と前記第２の教示点との距離より小さくなる方向を規定する乱数が選ばれる確率が、前記第３の教示点と前記第２の教示点との距離が、前記第１の教示点と前記第２の教示点との距離より大きくなる方向を規定する乱数が選ばれる確率より高くなるような初期状態を設定する機能と、
前記第１の教示点から前記第３の教示点に至る動作経路におけるロボットと周辺物との干渉の有無を検出して、干渉が発生しなかった場合の探索方向が次回以降の探索で選ばれる確率が、干渉が発生した場合の探索方向が次回以降の探索で選ばれる確率より高くなるような設定をする機能と、
の少なくとも１つを備える、請求項２に記載のロボットシミュレーション装置。
【請求項４】
前記第３の教示点のうち、余剰な教示点を削除する教示点削除部をさらに有し、
前記教示点削除部は、
挿入された複数の第３の教示点のそれぞれについて移動方向及び移動距離を記憶し、
前記第２の動作経路上の連続する２つの第３の教示点の移動方向が同一である場合に、前記連続する２つの第３の教示点の移動距離を加算して新たな１つの教示点に統合する機能と、
前記第２の動作経路上の連続する２つの第３の教示点の移動方向が正反対である場合に、前記連続する２つの第３の教示点の移動距離を相殺して、新たな１つの教示点に統合するか、前記連続する２つの第３の教示点を削除する機能と、
前記第２の動作経路上の連続しない任意の２つの第３の教示点間を結ぶ経路について、ロボットと周辺物との干渉の有無を検出して、干渉が発生しない場合は、前記連続しない任意の２つの第３の教示点の間の教示点を削除する機能と、
の少なくとも１つを備える、請求項２又は３に記載のロボットシミュレーション装置。
【請求項５】
前記少なくとも１つのパラメータは、
（ａ）ロボットの動作時間、
（ｂ）ロボットと周辺物との最小離隔距離、
（ｃ）ロボットを駆動するモータの発熱量、
（ｄ）ロボットの減速機の寿命、及び
（ｅ）ロボットの消費電力を含み、
前記評価部は、前記第２の動作経路、及び前記第２の動作経路に含まれる第３の教示点の各々に対して、前記（ａ）〜（ｅ）のうち（ａ）及び（ｂ）を含む複数のパラメータを選択して、選択されたパラメータに予め定めた重み付けをすることによって評価値を計算する、請求項１〜４のいずれか１項に記載のロボットシミュレーション装置。
【請求項６】
前記第３の教示点の位置を調整する教示点調整部をさらに有し、
前記教示点調整部は、
前記第２の動作経路に含まれる第３の教示点の各々を、予め定めた少なくとも１つのパラメータに基づいて評価し、
調整すべき第３の教示点の位置を、予め定めた許容範囲内で微小距離だけ移動させて前記ロボットと前記周辺物との干渉の有無を検出し、移動後の第３の教示点の評価を行う処理を所定回数繰り返し、
前記許容範囲内の複数の第３の教示点のうち、最も評価の高い第３の教示点の位置を、調整後の第３の教示点の位置として設定する、請求項１〜５のいずれか１項に記載のロボットシミュレーション装置。
【請求項７】
前記動作経路生成部は、
前記第１の教示点の近傍に、ロボットがいずれの方向に一定距離移動しても、前記ロボットと前記周辺物とが干渉しない第１中継教示点を生成し、
前記第２の教示点の近傍に、ロボットがいずれの方向に一定距離移動しても、前記ロボットと前記周辺物とが干渉しない第２中継教示点を生成し、
前記第１の教示点と前記第１中継教示点との間、前記第１中継教示点と前記第２中継教示点との間、前記第２中継教示点と前記第２の教示点との間のそれぞれについて、ロボットと周辺物とが干渉しない動作経路を生成する、請求項１〜６のいずれか１項に記載のロボットシミュレーション装置。
【請求項８】
前記動作経路生成部は、
前記第１の動作経路に含まれる複数の教示点を、前記ロボットと前記周辺物との干渉が発生した箇所で分割して、複数のブロックに分割し、
前記複数のうち少なくとも２つのブロックの順番の入れ替えと、各ブロックに含まれる教示点の順序の反転との少なくとも一方を行い、それぞれのブロック内の最後の教示点と、該ブロックの次のブロック内の最初の教示点との間に、前記ロボットと前記周辺物とが干渉しない動作経路を自動的に生成する、請求項１〜７のいずれか１項に記載のロボットシミュレーション装置。
【請求項９】
前記ロボットシミュレーション装置が、実機のロボットを制御する制御装置に含まれる、請求項１〜８のいずれか１項に記載のロボットシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのシミュレーションを実行するロボットシミュレーション装置に関し、特には、ロボットが周辺装置との干渉を回避できる動作経路を生成するシミュレーション装置に関する。
【背景技術】
【０００２】
従来、ロボットが周辺装置との干渉を回避しながら所定の作業を行えるように、該ロボットの動作経路を生成するためのシミュレーション装置が提唱されている。例えば特許文献１には、多関節ロボットのエンドエフェクタをワーク上の作業点から引き抜く狭域動作経路と、作業点間を移動する広域動作経路とを自動的に設定する方法及び装置が記載されている。
【０００３】
また特許文献２には、多関節マニピュレータ（ロボット）の動作経路を計画する方法及び装置が記載されており、さらに、ポテンシャルフィールド法を用いてロボットハンドの姿勢経路を求める旨が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−０９１３０３号公報
【特許文献２】特開２０００−０２０１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２に記載されているようなポテンシャル法は、ロボットの経路生成等に使用される周知のアルゴリズムであり、具体的には、ロボットが動作する空間を格子に分割し、障害物が存在する格子は高エネルギーになりかつ障害物から離れた格子ほど低エネルギーになるように各格子のエネルギーを設定した上で、ロボットを現在位置から、エネルギーが低い格子に向かって移動させることで、障害物との干渉を回避できる経路を生成するものである。
【０００６】
しかし、一般に複雑なロボット動作経路（干渉回避経路）をポテンシャル法により求めようとすると、経路生成のための計算が袋小路（無限ループ）に陥って解が得られなかったり、局所解となって最適解が得られなかったりする場合がある。このような場合は、作業者が計算条件を変更したり、生成された動作経路を調整したりする必要があり、熟練度を要する面倒な作業となっていた。
【０００７】
そこで本発明は、作業者の熟練度によらず、ロボットの現実的な干渉回避経路を自動的に生成できるロボットシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本願第１の発明は、ロボット及び該ロボットの周辺に配置された周辺物の３次元モデルを同一の仮想空間内に配置して、前記ロボットのシミュレーションを行うロボットシミュレーション装置であって、前記ロボットの動作プログラムのシミュレーションを実行して、前記ロボットの第１の動作経路を取得する動作経路取得部と、前記ロボットを前記第１の動作経路に沿って移動させたときの、前記ロボットと前記周辺物との干渉の有無を検出して、干渉が発生する直前の教示点である第１の教示点と、干渉が発生した直後の教示点である第２の教示点とを特定する教示点特定部と、前記第１の教示点と前記第２の教示点との間に、前記第１の教示点又は前記第２の教示点から、乱数で定めた探索方向に乱数で定めた探索距離だけ離れた少なくとも１つの第３の教示点を自動的に追加し、前記ロボットと前記周辺物との干渉が発生しない第２の動作経路を生成する動作経路生成部と、前記動作経路生成部が生成した複数の異なる第２の動作経路の各々について、予め定めた少なくとも１つのパラメータに基づく評価を行う評価部と、前記評価部が行った評価に基づいて、前記複数の第２の動作経路から、前記ロボットの最適動作経路を選択する動作経路選択部と、を備えることを特徴としたロボットシミュレーション装置を提供する。
【０００９】
第２の発明は、第１の発明において、前記動作経路生成部は、前記第１の教示点から、前記第１の教示点から乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの中間教示点に至る動作経路に沿って前記ロボットを移動させたときの前記周辺物との干渉の有無を検出して、干渉が発生しない場合は、前記中間教示点を前記第１の教示点と前記第２の教示点の間に挿入する処理を行い、最後に挿入された中間教示点から前記第２の教示点に至る動作経路に沿って前記ロボットを移動させたときの前記周辺物との干渉の有無を検出して、干渉が発生しなくなるまで、最後に挿入された中間教示点から、該最後に挿入された中間教示点から乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの新たな中間教示点を挿入する処理を繰り返すことによって、前記第２の動作経路を生成する、ロボットシミュレーション装置を提供する。
【００１０】
第３の発明は、第２の発明において、前記動作経路生成部は、前記中間教示点と前記第２の教示点との距離が、前記第１の教示点と前記第２の教示点との距離より小さくなる方向を規定する乱数が選ばれる確率が、前記中間教示点と前記第２の教示点との距離が、前記第１の教示点と前記第２の教示点との距離より大きくなる方向を規定する乱数が選ばれる確率より高くなるような初期状態を設定する機能と、前記第１の教示点から前記中間教示点に至る動作経路におけるロボットと周辺物との干渉の有無を検出して、干渉が発生しなかった場合の探索方向が次回以降の探索で選ばれる確率が、干渉が発生した場合の探索方向が次回以降の探索で選ばれる確率より高くなるような設定をする機能と、の少なくとも１つを備える、ロボットシミュレーション装置を提供する。
【００１１】
第４の発明は、第２又は第３の発明において、前記第３の教示点のうち、余剰な教示点を削除する教示点削除部をさらに有し、前記教示点削除部は、挿入された複数の第３の教示点のそれぞれについて移動方向及び移動距離を記憶し、前記第２の動作経路上の連続する２つの第３の教示点の移動方向が同一である場合に、前記連続する２つの第３の教示点の移動距離を加算して新たな１つの教示点に統合する機能と、前記第２の動作経路上の連続する２つの第３の教示点の移動方向が正反対である場合に、前記連続する２つの第３の教示点の移動距離を相殺して、新たな１つの教示点に統合するか、前記連続する２つの第３の教示点を削除する機能と、前記第２の動作経路上の連続しない任意の２つの第３の教示点間を結ぶ経路について、ロボットと周辺物との干渉の有無を検出して、干渉が発生しない場合は、前記連続しない任意の２つの第３の教示点の間の教示点を削除する機能と、の少なくとも１つを備える、ロボットシミュレーション装置を提供する。
【００１２】
第５の発明は、第１〜第４のいずれか１つの発明において、前記少なくとも１つのパラメータは、（ａ）ロボットの動作時間、（ｂ）ロボットと周辺物との最小離隔距離、（ｃ）ロボットを駆動するモータの発熱量、（ｄ）ロボットの減速機の寿命、及び（ｅ）ロボットの消費電力を含み、前記評価部は、前記第２の動作経路、及び前記第２の動作経路に含まれる第３の教示点の各々に対して、前記（ａ）〜（ｅ）のうち任意の複数のパラメータを選択して、選択された任意のパラメータに予め定めた重み付けをすることによって評価値を計算する、ロボットシミュレーション装置を提供する。
【００１３】
第６の発明は、第１〜第５のいずれか１つの発明において、前記第３の教示点の位置を調整する教示点調整部をさらに有し、前記教示点調整部は、前記第２の動作経路に含まれる第３の教示点の各々を、予め定めた少なくとも１つのパラメータに基づいて評価し、調整すべき第３の教示点の位置を、予め定めた許容範囲内で微小距離だけ移動させて前記ロボットと前記周辺物との干渉の有無を検出し、移動後の第３の教示点の評価を行う処理を所定回数繰り返し、前記許容範囲内の複数の第３の教示点のうち、最も評価の高い第３の教示点の位置を、調整後の第３の教示点の位置として設定する、ロボットシミュレーション装置を提供する。
【００１４】
第７の発明は、第１〜第６のいずれか１つの発明において、前記動作経路生成部は、前記第１の教示点の近傍に、ロボットがいずれの方向に一定距離移動しても、前記ロボットと前記周辺物とが干渉しない第１中継点を生成し、前記第２の教示点の近傍に、ロボットがいずれの方向に一定距離移動しても、前記ロボットと前記周辺物とが干渉しない第２中継点を生成し、前記第１の教示点と前記第１中継点との間、前記第１中継点と前記第２中継点との間、前記第２中継点と前記第２の教示点との間のそれぞれについて、ロボットと周辺物とが干渉しない動作経路を生成する、ロボットシミュレーション装置を提供する。
【００１５】
第８の発明は、第１〜第７のいずれか１つの発明において、前記動作経路生成部は、前記第１の動作経路に含まれる複数の教示点を、前記ロボットと前記周辺物との干渉が発生した箇所で分割して、複数のブロックに分割し、前記複数のうち少なくとも２つのブロックの順番の入れ替えと、各ブロックに含まれる教示点の順序の反転との少なくとも一方を行い、それぞれのブロック内の最後の教示点と、該ブロックの次のブロック内の最初の教示点との間に、前記ロボットと前記周辺物とが干渉しない動作経路を自動的に生成する、ロボットシミュレーション装置を提供する。
【００１６】
第９の発明は、第１〜第８のいずれか１つの発明において、前記ロボットシミュレーション装置が、実機のロボットを制御する制御装置に含まれる、ロボットシミュレーション装置を提供する。
【発明の効果】
【００１７】
本発明によれば、干渉回避のための第３の教示点を乱数を用いて生成することにより、局所解に陥らずに、確率的に干渉回避経路を得ることができる。また干渉回避経路は自動的に生成されるので、作業者の熟練度によらず、現実的なロボットの干渉回避経路を生成することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るロボットシミュレーション装置の機能ブロック図である。
【図２】本発明のロボットシミュレーション装置における処理の一例を示すフローチャートである。
【図３】干渉回避のための中間教示点の生成例を説明する図である。
【図４】第２の動作経路に中継教示点を追加した例を説明する図である。
【図５】干渉回避経路を生成する前の、ロボット動作経路に含まれる教示点列の一例を示す図である。
【図６】図５に示した教示点列を複数のブロックに分割し、さらに一部のブロックの入れ替えと、一部のブロック内での教示点の順番の反転を行った例を示す図である。
【図７】図６に示した教示点列に対して、干渉回避経路を挿入した例を示す図である。
【発明を実施するための形態】
【００１９】
図１は、本発明の好適な実施形態に係るロボットシミュレーション装置（以降、単にシミュレーション装置とも称する）１０の機能ブロック図である。シミュレーション装置１０は、ロボット１２及び該ロボットの周辺に配置された外部機器等の周辺物１４の３次元モデルを同一の仮想空間内に配置して、ロボット１２のシミュレーションを（通常はオフラインで）行うものであり、ロボット１２の所定の動作プログラムのシミュレーションを実行して、ロボット１２の第１の動作経路を取得する動作経路取得部１６と、ロボット１２を第１の動作経路に沿って移動させたときの、ロボット１２と周辺物１４との干渉を検出して、該干渉が発生する直前の教示点である第１の教示点（以降、始点とも称する）、及び干渉が発生した直後の教示点である第２の教示点（以降、終点とも称する）を特定する教示点特定部１８と、第１の教示点と第２の教示点との間に、第１の教示点又は第２の教示点から、乱数で定めた探索方向に乱数で定めた探索距離だけ離れた少なくとも１つの第３の教示点を自動的に追加・挿入し、ロボット１２と周辺物１４との干渉が発生しない第２の動作経路を生成する動作経路生成部２０と、動作経路生成部２０が生成した複数の異なる第２の動作経路の各々について、予め定めた少なくとも１つのパラメータに基づく評価を行う評価部２２と、評価部２２が行った評価に基づいて、複数の第２の動作経路から、ロボット１２の最適動作経路を選択する動作経路選択部２４と、を備える。
【００２０】
またシミュレーション装置１０は任意に、ロボット１２及び周辺物１４の３次元モデルが配置された仮想空間等を表示する表示部２６と、第３の教示点のうち余剰な教示点を削除する教示点削除部２８と、第３の教示点の位置姿勢を調整する教示点調整部３０と、を備えてもよい。削除部２８及び調整部３０の機能については後述する。
【００２１】
次に図２及び図３を参照して、シミュレーション装置１０における処理の流れについて説明する。先ずステップＳ１において、ロボット１２について予め用意された動作プログラムのシミュレーションを実行し、ロボット１２の第１の動作経路３２を取得する。第１の動作経路には、動作プログラムに基づきロボット１２の代表点（例えばツール先端点）の位置及び姿勢を規定する複数の教示点が含まれており、第１の動作経路では、周辺物１４との干渉は考慮していない。
【００２２】
次のステップＳ２では、第１の動作経路に沿ってロボット１２を移動させたときのロボット１２と周辺物１４との干渉の有無を検出し、干渉がある場合は、干渉が発生する直前の教示点である第１の教示点（始点）と、干渉が発生した直後の教示点である第２の教示点（終点）とを特定する。図３の例では、第１の動作経路３２に含まれる教示点ＰmとＰnとの間で干渉が発生しているので、教示点Ｐmが始点、教示点Ｐnが終点として特定される。
【００２３】
次のステップＳ３では、始点Ｐmと終点Ｐnとの間に、Ｐm又はＰnから乱数で定めた探索方向に、乱数で定めた探索距離だけ離れた少なくとも１つの第３の教示点を自動的に追加し、ロボット１２と周辺物１４との干渉が発生しない第２の動作経路３４を生成する。図３の例では、始点Ｐmから、始点Ｐmから乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの中間教示点Ｐ1に至る動作経路３４に沿ってロボットを移動させたときの周辺物１４との干渉の有無を検出する。動作経路３４では干渉が発生しないので、中間教示点Ｐ1が始点Ｐmと終点Ｐnとの間に挿入される。逆に動作経路３４にて干渉がある場合は、中間教示点Ｐ1は破棄して新たな中間教示点を探索する。
【００２４】
次に、最後に挿入された中間教示点（ここではＰ1）から終点Ｐnに至る動作経路３６に沿ってロボットを移動させたときの周辺物１４との干渉の有無を検出する。図示例では、動作経路３６では干渉が発生するので、中間教示点Ｐ1からさらに、Ｐ1から乱数で定めた探索方向に乱数で定めた探索距離だけ離れた１つの新たな中間教示点Ｐ2を求め、中間教示点Ｐ1とＰ2との間の動作経路３８において干渉の有無を検出する。動作経路３８では干渉が発生しないので、中間教示点Ｐ2が中間教示点Ｐ1と終点Ｐnとの間に挿入される。逆に動作経路３８にて干渉がある場合は、中間教示点Ｐ2は破棄して新たな中間教示点を探索する。なお、Ｐ2の探索を所定回数繰り返しても干渉が発生しない経路が得られない場合は、Ｐ1も破棄してＰ1の探索をやり直す。
【００２５】
このような処理を、干渉が発生しなくなるまで繰り返す。図示例では、最後に挿入された中間教示点（Ｐ2）から終点Ｐnに至る動作経路４０では干渉が発生しないので、始点Ｐmから中間教示点Ｐ1及びＰ2を経由して終点Ｐnに至る動作経路（すなわち動作経路３４、３８及び４０を含む経路）が、干渉回避可能な第２の動作経路として生成される。なお乱数により決定された探索方向及び探索距離に基づくロボットの移動は、並進移動に限られず、回転移動を含むものでもよい。
【００２６】
このように本発明では、中間教示点を求めるための探索方向及び探索距離を、乱数を用いて無作為に決定するので、演算処理が袋小路や局所解に陥ることなく、干渉回避経路を得ることができる。また乱数を使用するため、動作経路の生成は作業者の熟練度にも依存しない。但し、第２の動作経路をより効率的に得るため、ロボットを移動する方向を決定する乱数を、以下のように操作してもよい。
（１）ロボットが並進移動する方向について、終点に近づく（中間教示点と終点との距離が、始点と終点との距離より小さくなる）方向を探索方向として規定する乱数が選ばれる確率が、終点から離れる（中間教示点と終点との距離が、始点と終点との距離より大きくなる）方向を探索方向として規定する乱数が選ばれる確率より高くなるような初期化（初期状態の設定）を行う。
（２）乱数で探索方向（移動方向）を決定した新しい位置（中間教示点）について、動作経路上における直前の教示点と新しい位置との間でロボットと周辺装置の干渉が発生しなかった場合の探索方向が次回以降の探索でも選ばれる確率が、干渉が発生した場合の探索方向が次回以降の探索で選ばれる確率より高くなるような設定を行う。但し、干渉が発生した場合の探索方向が、以降の処理においてまったく選ばれなくなることがないように、確率の下限を決めておくことが好ましい。
【００２７】
上記（１）及び（２）の少なくとも一方を行うことによって、より少ない試行回数で、干渉の発生しないロボットの動作経路（第２の動作経路）を得ることができる。
【００２８】
ステップＳ３で生成された第２の動作経路では、同じ方向に連続で移動する複数の教示点、直前の移動方向と正反対に移動する教示点、又は複数の教示点を経て同じ位置に戻ってくる教示点など、余剰な教示点が第３の教示点に含まれる場合がある。そこでステップＳ４では、第３の教示点として追加・挿入された中間教示点のうち、このような余剰の教示点を削除する。具体的には、先ず、第２の動作経路を生成する際に、第３の教示点の各々について、移動した方向と移動した距離を適当なメモリ等に記憶しておく。次に、第２の動作経路上の連続する２つの第３の教示点の移動方向を比較し、それらが互いに同一方向の場合は、２つの教示点の移動距離を加算して得られる新たな１つの教示点を挿入し、上記２つの教示点は削除する。換言すれば、上記２つの教示点は新たな１つの教示点に統合される。
【００２９】
一方、第２の動作経路上の連続する２つの第３の教示点の移動方向を比較し、それらが互いに正反対の方向である場合は、上記２つの教示点の移動距離を相殺（減算）して得られる新たな１つの教示点を挿入し、上記２つの教示点は削除する。換言すれば、この場合も上記２つの教示点は新たな１つの教示点に統合される。但し、上記２つの教示点の移動方向が互いに正反対でありかつ移動距離が同一である場合は、上記２つの教示点を経由したロボットは再び元の位置に戻ってくることになるので、上記２つの教示点は単純に削除してよい。
【００３０】
また、連続しない任意の２つの教示点を選択し、その間のロボットの動作経路（通常は直線）を取得して、その動作経路上でロボットと周辺物との干渉が発生しない場合は、上記２つの教示点間の教示点をすべて削除することもできる。
【００３１】
以上のような処理により、複数の第３の教示点から余剰な教示点を削除して、より単純なロボットの動作経路を得ることができる。なおステップＳ３で得られた第２の動作経路には余剰な教示点が含まれない場合もあるので、ステップＳ４は任意である。
【００３２】
上述のように、第２の動作経路の生成に際し作業者の熟練度等は要求されない反面、明らかに不要なロボットの移動が含まれる等、得られた第２の動作経路があまり現実的なものではない場合がある。そこで、得られた第２の動作経路のそれぞれに沿ってロボットを動作させたときのシミュレーションを行い、第２の動作経路に含まれる第３の教示点のそれぞれについて、評価部２２を用いて所定のパラメータに基づく評価を行い、比較的低い評価値となった教示点（特に最低評価値の教示点）を、その評価値が高くなるように調整する（ステップＳ６）。これを繰り返すことで、第２の動作経路を、より現実的なものにすることができる。
【００３３】
上述の評価値を求めるためのパラメータ（評価項目）としては例えば、以下のものが挙げられる。これらはいずれも、第２の動作経路に沿ったシミュレーションを行うことで計算又は推定することができる。
（ａ）ロボットの動作時間
（ｂ）ロボットと周辺物との最小離隔距離
（ｃ）ロボットを駆動するモータの発熱量
（ｄ）ロボットの減速機の寿命
（ｅ）ロボットの消費電力
【００３４】
上記のパラメータを少なくとも１つ用いて、以下のような基準に従って個々の教示点の評価値を求めることができ、また同一の動作経路に含まれる教示点の評価値を積算することで、該動作経路全体の評価値も得ることができる。
（ａ）ロボットの動作時間を計算して、該動作時間が短いほど高い評価値とする。
（ｂ）ロボットと周辺物との最小離隔距離を計算して、該最小離隔距離が大きいほど高い評価値とする。
（ｃ）ロボットを駆動するモータの発熱量を推定して、該発熱量が小さいほど高い評価値とする。
（ｄ）ロボットの減速機の寿命を推定して、該寿命が長いほど高い評価値とする。
（ｅ）ロボットの消費電力を推定して、該消費電力が小さいほど高い評価値とする。
【００３５】
上記パラメータ（ｂ）は、ロボットと周辺物との離隔距離が小さすぎる場合は、実機において干渉のリスクがあることを考慮したものであるが、離隔距離が大きすぎると他のパラメータについては評価値が下がる傾向が高い。そこでパラメータ（ｂ）については、ロボットと周辺物との適正離隔距離（例えば５〜１０ｃｍ）を予め定めておき、該適正離隔距離と最小離隔距離との差分が小さいほど高い評価値としてもよい。或いはまたはこれに加え、ロボットと周辺物との離隔距離に上限値（例えば５０〜１００ｃｍ）を予め定めておき、最小離隔距離が上限値を超えた場合は評価値を一定としてもよい。
【００３６】
なお、上記パラメータを複数使用することももちろん可能であるが、その場合は、それぞれのパラメータに予め重み付けをしておき、その重み付けに従って評価値を求めることが好ましい。
【００３７】
ステップＳ６における第３の教示点の調整方法としては、教示点の位置変更が挙げられる。具体的には、調整対象である（評価値が低い又は最低の）教示点の位置を、微小距離だけ移動して、前後の教示点との間のロボットの動作経路を取得する。その動作経路上でロボットと周辺装置との干渉が発生しない場合、新しい位置における評価値を算出する。この処理を、予め定めた許容範囲（例えば前後の教示点が含まれない領域）内で所定回数だけ繰り返し行い、最高の評価値が得られた位置を、調整後の教示点の位置として設定する。なお上述の微小距離の移動は、ロボットの用途や教示点の間隔等によって適宜設定可能であるが、例えば上記許容範囲を、一辺の長さが１〜５ｍｍ程度のメッシュに分割し、各メッシュ内に教示点を移動させることが考えられる。
【００３８】
或いは、干渉の発生しないロボットの動作経路の取得、余剰な教示点の削除、教示点の調整を行って、動作経路全体の評価値を取得する処理を複数回繰り返して、最高の評価値となった動作経路を選択することで、より現実的な動作経路を取得することもできる。この場合の上記手順は、予め定めた回数だけ繰り返す、又は予め定めた評価値に達するまで繰り返すことが考えられる。なおステップＳ５及びＳ６は任意である。
【００３９】
次のステップＳ７では、生成された第２の動作経路の評価値を計算する。動作経路の評価値は、当該動作経路に含まれる教示点の評価値を積算することにより計算できる。
【００４０】
次のステップＳ８では、第２の動作経路の生成が所定回数行われたか否かを判定する。第２の動作経路は少なくとも２つ生成されるが、シミュレーション装置の演算能力等を考慮しつつ、なるべく多数の動作経路を生成することが好ましい。
【００４１】
最後にステップＳ９において、生成された第２の動作経路のうち、評価の高いもの（通常は評価値が最高のもの）を、ロボットの最適動作経路（干渉回避経路）として選択する。このようにして、作業者の熟練度に依存せず、現実的なロボットの干渉回避経路を自動的に生成することができるようになる。
【００４２】
なお第２の動作経路生成において、始点と終点の距離が比較的長い場合、又は始点及び終点がそれぞれ異なる周辺物の奥まった位置にある場合など、乱数を用いて探索方向及び探索距離を決める方法では、現実的な繰り返し計算回数では、始点から終点までの干渉回避経路を生成できない場合がある。以下、そのような場合に干渉回避経路（第２の動作経路）を生成する方法について説明する。
【００４３】
図４は、始点Ｐm及び終点Ｐnがそれぞれ、周辺物１４ａ及び１４ｂの奥まった位置（凹所内）に位置している場合を例示している。このような場合、乱数を用いて決定した探索方向及び探索距離では、第２の動作経路が現実的な繰り返し計算回数では得られない虞がある。そこで先ず、始点Ｐmの近傍に、ロボットがいずれの方向に一定距離移動しても、ロボットが周辺物に干渉しない第１中継教示点Ｐ3を生成する。同様に、終点Ｐnの近傍に、ロボットがいずれの方向に一定距離移動しても、ロボットが周辺物に干渉しない第２中継教示点Ｐ4を生成する。
【００４４】
第１中継教示点Ｐ3の具体的生成方法としては、例えば、（i）始点Ｐmの位置から、ロボットの原点位置の方向に任意の距離だけ移動した、新しい位置を生成し、（ii）該新しい位置を中心に、指定した許容範囲（例えば半径５〜１０ｃｍの円４２）内でロボットを微小距離ずつ動かして、ロボットと周辺物との干渉を検出し、（iii）上記手順（i）及び（ii）を、ロボットと周辺物との干渉が検出されなくなるまで繰り返す、という方法が挙げられる。同様に、第２中継教示点Ｐ4の具体的生成方法としては、例えば、（iv）終点Ｐnの位置から、ロボットの原点位置の方向に任意の距離だけ移動した、新しい位置を生成し、（v）該新しい位置を中心に、指定した許容範囲内（例えば半径５〜１０ｃｍの円４４）でロボットを微小距離ずつ動かして、ロボットと周辺物との干渉を検出し、（vi）上記手順（iv）及び（v）を、ロボットと周辺物との干渉が検出されなくなるまで繰り返す、という方法が挙げられる。
【００４５】
次に、始点Ｐmと始点近傍の第１中継教示点Ｐ3との間、第１中継教示点Ｐ3と第２中継教示点Ｐ4との間、終点近傍の第２中継教示点Ｐ4と終点Ｐnとの間のそれぞれについて、上述と同様の処理により、ロボットが周辺物に干渉しない動作経路（干渉回避経路）４６、４８及び５０を生成する。そして動作経路４６と４８を結合し、動作経路４８と５０を結合することにより、始点Ｐmと終点Ｐnとの間に、ロボットと周辺装置が干渉しない第２の動作経路を生成することができる。
【００４６】
なお上記手順で生成した中継教示点を用いても、ロボットと周辺物とが干渉しない動作経路が生成できない場合は、上記手順（i）及び（iv）の少なくとも一方において、新しい位置を生成するための移動方向を変更することができる。例えば図４では、始点Ｐmから第１中継教示点Ｐ3への移動方向と、終点Ｐnから第２中継教示点Ｐ4への移動方向が互いに逆となっている。
【００４７】
図５〜図７は、本発明の応用例として、複数個所で干渉が発生する場合に、教示点を複数のブロックに分割した上で干渉回避経路を生成する実施例を説明する図である。ここでは、図５に示すように、動作プログラムのシミュレーションによって得られた第１の動作経路５２が、教示点Ａ１、Ａ２、Ａ３、Ｂ１、Ｂ２、Ｂ３、Ｃ１、Ｃ２、Ｃ３、Ｄ１、Ｄ２、Ｄ３、Ｅ１、Ｅ２及びＥ３をこの順に含んでおり、教示点Ａ３と教示点Ｂ１との間、教示点Ｂ３と教示点Ｃ１との間、教示点Ｃ３と教示点Ｄ１との間、及び教示点Ｄ３と教示点Ｅ１との間（計４箇所）で、ロボットと周辺物との干渉が発生するものとする。
【００４８】
図５の場合においても、上述の手順に沿って、上記４箇所のそれぞれに第３の教示点を挿入して干渉回避経路を生成することができる。しかし図６に示すように、干渉が発生する箇所を境界として教示点を複数のブロックに分割し、該ブロックの順番の入れ替えや、各ブロック内での教示点の順序の反転を行うことによって、より高評価の干渉回避経路を生成することができる。
【００４９】
具体的には、図６（ａ）に示すように先ず、教示点Ａ１、Ａ２及びＡ３を含む第１ブロック５４、教示点Ｂ１、Ｂ２及びＢ３を含む第２ブロック５６、教示点Ｃ１、Ｃ２及びＣ３を含む第３ブロック５８、教示点Ｄ１、Ｄ２及びＤ３を含む第４ブロック６０、並びに教示点Ｅ１、Ｅ２及びＥ３を含む第５ブロック６２の５つのブロックに分割する。
【００５０】
次に、第１の動作経路５２を分割して得られた複数のブロックのうち、任意の２つのブロックを選択する。ここでは、第２ブロック５６と第４ブロック６０を選択する。次に、選択したブロックの一方から他方のブロックまで、その間のブロック（ここでは第３ブロック５８）も含めて順番を入れ替える。つまり、図６（ｂ）に示すように、５つのブロックの順序は第１→第４→第３→第２→第５の順に変更される。
【００５１】
ここで任意ではあるが、各ブロック内の教示点の順序を反転させてもよい。図示例では、第２ブロック、第３ブロック及び第４ブロックのそれぞれにおいて各ブロック内の教示点の順序が反転され、それぞれ第２ブロック５６′、第３ブロック５８′及び第４ブロック６０′として図示されている。換言すれば図６（ｂ）では、教示点Ｂ１からＤ３までの教示点の順序が反転されている。
【００５２】
図６（ｂ）のブロック構成において、各ブロックの最後の教示点を始点とし、これに続くブロックの最初の教示点を終点として、上述と同様の方法に従い、干渉回避経路を生成する。このようにして、図７に示すような、教示点Ａ１からＥ３に至るまでの第２の動作経路が生成される。
【００５３】
上述のようなブロックの入れ替え又は各ブロック内での教示点の反転を繰り返しながら、最適な動作経路を求めることができるが、具体的には焼きなまし（アニーリング）法を用いることが好ましい。すなわち、ロボットと周辺物とが干渉しない動作経路が得られたら、上述と同様の手順に従って該動作経路全体の評価値を求める。次に、ブロックの入れ替え又は各ブロック内の教示点の反転を行った後の動作経路についても評価値を求め、入れ替え又は反転を行う前の評価値よりも高くなった場合は、後の結果（動作経路）を採用する。また後の動作経路の方が評価値が低くなった場合でも、前の評価値との差分の値が所定の基準値以下であれば、後の結果を採用する。
【００５４】
このような評価値の比較を、上記基準値を十分に緩やかな割合で漸減させながら繰り返すことで、局所解に陥らずに、より高い評価値の動作経路を得ることができる。なお、ブロック間に追加した干渉回避経路を適当なメモリに記憶しておき、後の処理で同じブロック間に干渉回避経路を挿入する場合、記憶した干渉回避経路を使用することで、処理時間を短くすることができる。
【００５５】
なお本発明に係るロボットシミュレーション装置は、シミュレーション対象であるロボットの実機を制御するロボット制御装置に含まれてもよく、換言すればロボットシミュレーション装置の機能は、該ロボット制御装置が有してもよい。ロボット制御装置に、ロボット及び周辺物の形状、並びにこれらの配置位置の情報を記憶させることで、上述のような干渉回避経路の生成を、ロボット制御装置で行うことができるようになる。またこのようにすれば、シミュレーション結果に基づく実機の動作を円滑に行うことができる。
【符号の説明】
【００５６】
１０    ロボットシミュレーション装置
１２    ロボット
１４    周辺物
１６    動作経路取得部
１８    教示点特定部
２０    動作経路生成部
２２    評価部
２４    動作経路選択部
２６    表示部
２８    教示点削除部
３０    教示点調整部
【図１】
0005860081.tif 000002
【図２】
0005860081.tif 000003
【図３】
0005860081.tif 000004
【図４】
0005860081.tif 000005
【図５】
0005860081.tif 000006
【図６】
0005860081.tif 000007
【図７】
0005860081.tif 000008