(57)【要約】【課題】  現場に行く前にロボットの最適配置と動作余裕度等を知ること。【解決手段】  与えられた作業点列（作業経路）のデータ等を用いて、ロボットの仮配置可能範囲を選定する。選定条件は、（イ）全作業点列に対して逆運動学の解あり、（ロ）周辺機器との干渉なし、（ハ）全軸の動作余裕度が基準値クリア、である（Ｓ１）。各仮配置可能範囲にロボットを配置した条件で、動作プログラムによるシミュレーションを行い、サイクルタイム、デューティ、エネルギ値、加速度／速度推移等のデータを収集する（Ｓ２）。収集されたデータを用いて各各仮配置可能範囲について、動作評価を行ない、無理のなりものを動作可能位置とする（Ｓ３）。更に、観点に重みを付けた評価関数を用いて絞り込みをかけ、最適動作可能配置を定める（Ｓ４）。【選択図】            図２
2005022062.tif 000002
【特許請求の範囲】
【請求項１】
ロボット、ワーク及び周辺機器の３次元モデルを画面に配置して同時に表示し、前記ロボットの動作シミュレーションを行うロボットオフラインシミュレーション装置において、
与えられた、前記ロボットの作業点列に基いて、前記ロボットのベースが配置可能となる離散的な位置の集合を求める手段と、
前記作業点列と前記ロボットの動作範囲とに基き、少なくとも前記集合の各要素に対してロボット動作の余裕を表わす指標を求める手段と、
前記集合の各要素と該各要素に対する前記指標とを画面に表示する手段とを備えたことを特徴とする、ロボットオフラインシミュレーション装置。
【請求項２】
前記作業点列が、位置、位置と方向ベクトル、又は位置と姿勢、のいずれかで与えられることを特徴とする、請求項１に記載のロボットオフラインシミュレーション装置。
【請求項３】
ロボット、ワーク及び周辺機器の３次元モデルを画面に配置して同時に表示し、前記ロボットの動作シミュレーションを行うロボットオフラインシミュレーション装置において、
与えられた、前記ロボットの作業経路に基いて、前記ロボットのベースが配置可能となる離散的な位置の集合を求める手段と、
前記作業経路と前記ロボットの動作範囲とに基き、少なくとも前記集合の各要素に対してロボット動作の余裕を表わす指標を求める手段と、
前記集合の各要素と該各要素に対する前記指標を画面に表示する手段とを備えたことを特徴とするロボットオフラインシミュレーション装置。
【請求項４】
前記の作業経路に付加する姿勢要素が、指定なし、方向ベクトル、又は姿勢、のいずれかで与えられることを特徴とする、請求項３に記載のロボットオフラインシミュレーション装置。
【請求項５】
前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットと前記ワーク、及び前記ロボットと前記周辺機器との干渉が生じるか否かを計算に基いて判断する手段と、その判断結果を表示する手段とをさらに備えたことを特徴とする、請求項１または請求項３に記載のロボットオフラインシミュレーション装置。
【請求項６】
前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットの動作指令プログラムに基づいて前記ロボットの動作のシミュレーションを行い、評価関数の値を計算する手段と、
前記集合の要素の内、少なくとも前記評価関数の値が最適となる要素を求める手段と、
求めた要素を表示する手段とを備えたことを特徴とする請求項１または請求項３に記載のロボットオフラインシミュレーション装置。
【請求項７】
前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットと前記ワーク、及び前記ロボットと前記周辺機器との干渉が生じるか否かを計算に基いて判断する手段と、その判断結果を表示する手段とをさらに備えたことを特徴とする、請求項６に記載のロボットオフラインシミュレーション装置。
【請求項８】
前記評価関数が、サイクルタイムに関連する評価関数である、請求項６または請求項７に記載のロボットオフラインシミュレーション装置。
【請求項９】
前記評価関数が、デューティに関連する評価関数である、請求項６または請求項７に記載のロボットオフラインシミュレーション装置。
【請求項１０】
前記評価関数が、エネルギーに関運する評価関数である、請求項６または請求項７に記載のロボットオフラインシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作シミュレーションを行うロボットオフラインシミュレーション装置に関し、更に詳しく言えば、ロボットの最適配置を求める機能を持つロボットオフラインシミュレーション装置に関する。
【背景技術】
【０００２】
オフラインでロボット動作のシミュレーションを行なうロボットオフラインシミュレーション装置は公知である。同装置を使用してロボットの動作シミュレーションを行う場合、画面上にロボット、ワーク、周辺機器等の３次元モデルを配置して同時に表示することが一般的であるが、当然のことながら、ロボットを画面上（より正確に言えば、ロボットオフラインシミュレーション装置上で表現されている空間上）のどこに配置するかによってシミュレーション結果は大きく異なってくる。ロボットの配置位置が不適切である場合、ロボットの作業する点あるいは作業経路の一部がロボットの動作不可能な領域に入ったり、希望する作業点列あるいは作業経路を辿る動作をロボットに実行させると周辺機器との干渉を起こしたりする事態となる。
【０００３】
そこで、従来は、ロボットの作業する全ての点や経路全体に対して、ロボットが動作可能となり、且つ、周辺機器とロボットが干渉しないという条件を満たすロボットの配置位置を、オペレータが画面上でロボットを試行錯誤的な配置の繰り返しによって求めていた。しかし、このような条件を満たすようにロボットの配置位置を定めてロボットシステムを構築しても、その後、配置位置が最適でないために、ロボットのサイクルタイムやデューティが規定値以下にならないというような問題が発生する場合が珍しくなかった。そのようなケースでは、ロボットとワーク、周辺機器の配置位置を再検討して設置し直すことで対応していた。
【０００４】
更に、これら従来方式によりシミュレーションシステム上で良好な結果が得られるようなロボット配置位置が定まったとしても、その後、実際の作業現場にその定められた位置にロボットの実機を配置してみると、画面上では動作可能であったものが、実際の現場では動作できない位置になっており、現場でロボットの配置を変更する作業が必要になり、非常に不効率であった。このような事態が発生するのは、画面上のロボットと周辺機器の位置関係を、現実の位置関係と完全に一致させることは実際上困難であり、一般にはある程度のずれが避けられないからである。なお、関連する文献としては、下記特許文献１がある。
【０００５】
【特許文献１】特開２００１−１６６８０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、ロボットオフラインプログラミングシステム上で、ロボットの作業する全ての点や経路全体に対して、ロボットが動作可能となり、且つ、周辺機器とロボットが干渉しないロボットの配置位置を求めても、現場に適用するときのことを考えなければ、画面上の配置と現場との配置の誤差により、動作範囲が変わり、画面上で配置できるからといって、現場で配置できるとは限らず、また、動作上の支障により、配置を再検討し直すことが必要になり、ロボットシステムの構築に予定外の費用と時間がかかるという問題があった。
【０００７】
従来は、オフラインで定めたロボットの配置位置が最適であるか確認する方法がなく、実際のシステムを構築した後で、ロボットのサイクルタイムやデューティが規定値以下にならないという問題が起こり、ロボットとワーク、周辺機器の配置位置を再検討して設置し直すことも度々必要となり、ロボットシステムの構築に予定外の費用と時間がかかっていた。
【０００８】
また、上記特許文献に記載された技術によっても、画面上の配置と現場の配置との誤差によって発生する問題は解決出来ず、現場での再配置を余儀なくされる可能性も低くない。
【０００９】
本発明の目的は、オフラインで定めたロボットの配置位置が最適であるか確認することができ、また、実際画面上の配置と現場の配置との誤差がある程度あっても、それに備えた対応ができるようなロボットのオフラインシミュレーション装置を提供し、上記した従来技術の問題点を克服することにある。
【課題を解決するための手段】
【００１０】
本発明は、ロボットオフラインシミュレーション装置に、ロボットのオフラインシミュレーションに際して、ロボットの作業点や作業経路を指定すると、それらに対してロボットの最適な配置位置とともに、ロボットの動作余裕を表わす指標を算出する機能を持たせることで、現場に行く前に、シミュレーションで求めた最適のロボットの配置位置だけなく、ロボットの動作余裕の情報を得ることを可能にして、上記課題を解決したものである。
【００１１】
本発明は、ロボット、ワーク及び周辺機器の３次元モデルを画面に配置して同時に表示し、前記ロボットの動作シミュレーションを行うロボットオフラインシミュレーション装置に適用されるもので、１つの形態に従えば、同装置に、（ａ）与えられた、前記ロボットの作業点列に基いて、前記ロボットのベースが配置可能となる離散的な位置の集合を求める手段と、（ｂ）前記作業点列と前記ロボットの動作範囲とに基き、少なくとも前記集合の各要素に対してロボット動作の余裕を表わす指標を求める手段と、（ｃ）前記集合の各要素と該各要素に対する前記指標とを画面に表示する手段が設けられる。  
ここで、前記作業点列は、位置、位置と方向ベクトル、又は位置と姿勢、のいずれかで与えられたものであって良い。
【００１２】
また、別の形態に従えば、同装置に、（ｄ）与えられた、前記ロボットの作業経路に基いて、前記ロボットのベースが配置可能となる離散的な位置の集合を求める手段と、（ｅ）前記作業経路と前記ロボットの動作範囲とに基き、少なくとも前記集合の各要素に対してロボット動作の余裕を表わす指標を求める手段と、（ｆ）前記集合の各要素と該各要素に対する前記指標を画面に表示する手段とが設けられる。  
ここで、前記の作業経路に付加する姿勢要素は、指定なし、方向ベクトル、又は姿勢、のいずれかで与えられるものであって良い。
【００１３】
そして、上記いずれの形態においても、前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットと前記ワーク、及び前記ロボットと前記周辺機器との干渉が生じるか否かを計算に基いて判断する手段と、その判断結果を表示する手段とを更に設けることができる。
【００１４】
また、前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットの動作指令プログラムに基づいて前記ロボットの動作のシミュレーションを行い、評価関数の値を計算する手段と、前記集合の要素の内、少なくとも前記評価関数の値が最適となる要素を求める手段と、求めた要素を表示する手段とを設けても良い。そのケースでは、前記集合の要素である各位置に前記ロボットのベースを配置した場合に、前記ロボットと前記ワーク、及び前記ロボットと前記周辺機器との干渉が生じるか否かを計算に基いて判断する手段と、その判断結果を表示する手段とをさらに設けることもできる。前記評価関数としては、例えば、サイクルタイムに関連する評価関数、デューティに関連する評価関数、エネルギーに関連する評価関数等がある。
【発明の効果】
【００１５】
本発明により、ロボットのオフラインプログラミングにおいて、ロボットの作業する全ての点や経路全体に対してロボットが動作可能で、且つ、周辺機器と干渉を起こさないようなロボットの配置可能位置を短時間で求めることができるようになる。そのため、ロボットシステムの適用に関する検討を短時間で済ませることが可能になる。また、現場に行く前に、オフラインデータ上での配置と実際配置の間のずれに対してどの程度の余裕があるかが判明するので、現場での配置作業がやり易くなり、熟練者でなくても、より適切なロボットの適用検討が可能となる。
【００１６】
即ち、事前にロボットの配置位置が最適であるかどうか確認できるだけでなく、配置の余裕がどのぐらいあるか分かるので、実際のシステムを構築した後で、ロボットとワーク、周辺機器の配置位置を変更する必要がなくなり、ロボットシステムの構築にかかる費用と時間の削減が可能となる。
【発明を実施するための最良の形態】
【００１７】
図１は、本実施形態に係るロボットオフラインシミュレーション装置１の諸部の構成をブロック図で示した。同図に示したように、ロボットオフラインシミュレーション装置全体は、画面１３を提供する表示部と本体部１４で構成されている。本体部１４には、アニメーション演算表示装置１５、データ記憶装置１６、ロボット動作／配置等演算処理装置１７が装備されている。
【００１８】
また、図示は省略したが、ロボットオフラインシミュレーション装置のこれら諸部について、必要に応じてプログラムデータ、パラメータデータ、指令等についての編集、修正、入力等をマニュアル操作で行なうためのキーボード、マウス等が付設されている。更に、図示を省略したメインＣＰＵがデータ記憶装置１６に格納されたシステムプログラム等に従って、シミュレーション装置の各部を統括制御している。更に、適当な入出力インターフェイスと通信路（いずれも図示省略）を介して、ＣＡＤ装置等との間でデータの授受を行えるようになっている。
【００１９】
その他、後述する最適配置を求める処理、余裕指標の算出の処理等のために必要なプログラムデータ、パラメータ等はデータ記憶装置１６に格納され、その起動、読み出し、書込、修正等はメインＣＰＵで制御される。
【００２０】
図示されているように、画面１３には、ロボット１、ワーク３６及び周辺機器（ここではテーブル）３７の３次元モデルが同時に表示される。これらを画面１３で配置して表示するためのデータは、例えば外部のＣＡＤ装置から、通信回線あるいは電子媒体などを介して、シミュレーション装置１に読み込まれる。この読み込みには、データの記載形式の変換等が必要になるが、それには市販のソフトウェアが利用出来る。ＣＡＤ装置から読み込まれたデータは、３次元モデルの形態での表示のために、必要に応じて加工される。
【００２１】
ここで、ロボット１、ワーク３６、周辺機器３７の内、ロボット１以外のもの、即ち、ワーク３６及び周辺機器３７については、作業現場の状況に対応させて画面上で配置されるものであり、ここでは、基本的に動かせないものである。また、ワーク３６に対して行おうとする作業（例えば、把持、溶接、レーザ加工等）に必要な作業点列あるいは作業経路のデータも、主としてワーク３６の形状、サイズ、配置（位置と姿勢）のデータから、例えばロボット動作／配置等演算処理装置１７内で作成され、キーボード操作等により、適宜画面１３上に表示できるようになっている。以下の説明では、これらロボットの作業点列のデータ、あるいは、ロボットの作業経路のデータは、既に与えられているものとして、ロボット１の最適配置の決定、余裕指標の算出等に関連する手順について説明する。
【００２２】
図２は、本実施形態における全体の手順の流れを示したフローチャートである。先ず、与えられた作業点列または作業経路のデータ等を用いて、ロボットの「仮配置可能範囲」を選定する（ステップＳ１）。これはいわば「一次選考」であって、このステップＳ１で仮に配置可能とされた範囲には、実際の動作における種々の制限（例えば加速度の限界など）により、実質的に配置不適と判断される配置（位置／姿勢）が含まれている。「仮」を付けたのは、この趣旨による。ロボットの仮配置可能範囲の具体的な選定方法については、後述する。
【００２３】
次に、ステップＳ１で仮の配置可能とされた範囲内の諸点にロボットを配置してみて、動作シミュレーションを実行し、それら諸点の配置について諸観点から評価するためのデータ収集を行なう（ステップＳ２）。収集されるデータの内容等については、後述する。
【００２４】
次いで、ステップＳ２で収集されたデータを、各観点の評価基準と照らし合わせて、各観点についての評価を行なう（ステップＳ３）。  
更に、１つまたは複数の観点についての評価結果を評価関数で評価し、最適配置（場合によっては、複数個）を選び出す。評価関数の例等については、後述する。
【００２５】
以下、上記した各ステップについて詳述する。  
ステップＳ１の説明；
（Ａ）ロボットの仮配置可能範囲の選定を行なうために、図１に示したロボットオフラインシミュレーション装置（以下、単に「装置」とも言う）に、下記のデータを入力する。  
（１）ロボット（ハンドがあればそれを含む）のサイズ、形状のデータ
（２）ワーク、周辺機器の配置位置／姿勢、サイズ、形状の各データ
これら（１）、（２）のデータは、例えば外部のＣＡＤや電子媒体で用意されたものを装置へ移すことで入力される。
【００２６】
（３）ロボットに行なわせたい作業の作業点列のデータ
作業点列のデータの種類として、例えば、図３（ａ）〜（ｄ）に示したような４形態が考えられる。各形態なお、以下の説明で、添字「ｉ」は点列番号を代表し、「ｉ番目の点」という意味を表わす。
【００２７】
（ａ）３次元位置のみ：Ｐi （Ｘi,Ｙi,Ｚi ）
（ｂ）３次元位置と、作業面の法線方向（作業点のｚ軸方向；通常は、ツール座標系のｚ軸方向）：Ｐni（Ｘi,Ｙi,Ｚi, ｎi ）
（ｃ）３次元位置、作業面の法線方向（作業点のｚ軸方向；通常は、ツール座標系のｚ軸方向）及び同法線方向周りの姿勢（例えばツール座標系のｚ軸方向と、同軸周りの姿勢）：Ｐn θi （Ｘi,Ｙi,Ｚi, ｎi,θi ）
（ｄ）３次元位置と３次元姿勢：ＰniWPR （Ｘi,Ｙi,Ｚi,Ｗi,Ｐi,Ｒi ）
なお、これらいずれかの形態で入力される作業点列を以下、便宜上ＰI （I=1,2,3・・・）で代表させる。作業点列は、例えば図４の左半部に示したようになる（Ｐ1 〜Ｐ4 を例示）。
【００２８】
（４）ロボットの配置可能範囲の候補を表わすデータ
ロボットの配置可能範囲の候補を指定するデータから、その中の格子点を定めてデータを入力する。格子点のデータは、例えば、図５に示したように、その範囲の幅ａ、奥行きｂ、高さｃを適当な数で分割し、できた格子点を配置可能候補点ＱK とし、そのデータを入力すれば良い。但し、ロボットの配置姿勢を考慮する場合には、姿勢のデータも入力する。ここでは、下記の３形態を例示する。  
ｊは配置点（例えばベース座標系の原点）を代表し、「ｊ番目の点」という意味を表わす。なお、これら形態のいずれも、適宜点ＱK で代表表記する。  
（ｅ）３次元位置のみ：Ｑk （Ｘk,Ｙk,Ｚk ）
（ｆ）３次元位置とロボットベースの法線方向（通常は、ロボットベース座標系のｚ軸方向）：Ｑnk（Ｘk,Ｙk,Ｚk, ｎk ）
（ｇ）３次元位置、ロボットベースの法線方向（通常は、ロボットベース座標系のｚ軸方向）及び同法線方向周りの姿勢（例えばロボットベース座標系のｚ軸方向と、同軸周りの姿勢）：Ｑn θk （Ｘk,Ｙk,Ｚk, ｎk,θk ）
配置可能候補点群は、例えば図４の右半部（格子点Ｑk ）に示したようになる。
【００２９】
（Ｂ）ロボットの配置可能点ＱK にロボットを配置し、全作業点列ＰI について、逆運動学を解くことを試みる。運動学の解があれば、その配置点は「解あり点」とする。  
Ｊ：Ｉsolve （Ｑ−１Ｐ）、但し、Ｑはワールド座標系から見た配置位置、Ｐはワールド座標系から見た作業点、Ｊはロボットの各軸値、Ｉsolve は逆運動学とし、Ｊが見つかれば「解あり点」とする。
【００３０】
更に、各「解あり点」について、ロボット（ハンドがあればそれを含む）とワークまたは周辺機器との干渉の有無を判別する。この判別は、例えば次のように行なう。  
各「解あり点」について、各作業点に対応して求められたロボットの各軸値と、ロボットの形状、寸法データ、更にハンドがある場合にはハンドの形状、寸法データを用いて、作業点毎にロボット（ハンドがある場合にはハンドを含む）によって占拠される体積領域を計算する。その体積領域が、ワークあるいは周辺機器によって占拠される体積領域と一部でも重なれば、その作業点で「干渉あり」であり、当該解あり点は、「干渉あり」の点となる。
【００３１】
そして、任意のある解あり点について、このような干渉が発生する作業点が１つもない場合に、その解あり点を「到達可能点」とする。  
この到達可能点でカバーされる範囲（体積領域）を、「到達可能範囲」とする。また、例えば、各仮配置可能位置（点）からこの到達可能範囲の境界までの距離を計算し、干渉に対する余裕指標とすることもできる。これら計算結果はメモリに格納され、後述するように、画面１３に適宜表示される。
【００３２】
なお、実際に逆運動学を計算する場合、作業点列や配置点の入力形態によっては、情報を補って補足乃至加工しなければならない場合がある。これについて、簡単に説明しておく。  
（作業点について）
（１）作業点の３次元空間上の位置Ｐi （Ｘi,Ｙi,Ｚi ）を入力した場合：
この場合、３次元空間上の姿勢要素が不足しているので、これを与える必要がある。ＷＰＲを以下の計算で算出して、このすべての要素を仮配置可能範囲計算の候補とする。
【００３３】
求める３次元空間上の位置姿勢をＰとすると、周知のように、
Ｐ：（ｎ、ｏ、ａ、ｐ）と表わせる。ｎはノーマルベクトル、ｏはオリエントベクトル、ａはアプローチベクトル、ｐは位置ベクトルである。  
図６に示すように、中心位置ｐを持つ単位球の表面を適当数の緯線、経線で等分割して多数の格子点を作り、球の中心から各格子点へ向かうベクトルをアプローチベクトルａとする。アプローチベクトルａを定義するのに使われた緯度上でａを９０゜回転してベクトルをオリエントベクトルｏとし、ベクトルａとベクトルｏに直交するようにノーマルベクトルｎを決める。
【００３４】
また、出来たＰに対してアプローチベクトルａのまわりにさらに等分割（ｍ）して、作業点の計算候補を算出する。ここで計算されたすべての作業点計算候補を対象に計算を行う。
【００３５】
（２）作業点の３次元空間上の位置と法線方向Ｐni（Ｘi,Ｙi,Ｚi,ｎi ）を入力した場合：
このケースは、上記（１）の場合に対して、法線方向、すなわち、アプローチベクトルが決まっていると考えることができる。アプローチベクトルを与えた後は上記（１）と同様に計算される。  
（３）作業点の３次元空間上の位置、法線方向と姿勢Ｐn θi （Ｘi,Ｙi,Ｚi,ｎi, θi ）を入力した場合：
このケースは、上記（１）の場合に対して、法線方向、すなわち、アプローチベクトルの計算範囲が決まっていると考えることができる。アプローチベクトルを求めた後は（１）と同様に計算される。
（４）作業点の３次元空間上の位置、姿勢ＰniWPR（Ｘi,Ｙi,Ｚi,Ｗi,Ｐi,Ｒi）を入力した場合：
この場合は、３次元空間上の位置姿勢が指定されているのでそのまま逆運動学を計算することができる。
【００３６】
（配置可能計算候補について）
（１）計算候補が指定されている場合は、格子を指定し、その格子点を計算の対象とする。しかし、３次元空間上の位置を格子点とする点列Ｑ、格子点により３次元位置は求まるが、姿勢が求まらず、逆運動学を解く条件が不足する。そこで、作業点の場合にならって姿勢を算出する。
【００３７】
３次元配置位置のみ入力のケースでは、作業点のケースの（１）と同様にして、各候補点Ｑ毎に、アプローチベクトルａ、オリエントベクトルｏ、ノーマルベクトルｎの全候補を計算し、全点の計算候補を算出する。ここで計算されたすべての作業点計算候補を対象に計算を行う。
【００３８】
３次元配置位置と法線方向のみ入力のケースや、３次元配置位置、法線方向とその法線方向周りの姿勢を入力したケースについても、それぞれ作業点のケースの（２）、（３）と同様にして、全点の計算候補を算出する。
なお、配置可能候補の範囲を指定するデータがない場合は、次のようにして、配置可能候補点を決める（図７参照）。
【００３９】
まず、作業点列から重心を求める。重心と作業点列のそれぞれの要素の点との距離を求め、もっとも長いものを半径とし、求めた重心を中心とする球Ｇを求める。これを作業点球とする。また、ロボットには到達可能球Ｈを定義しておき、これをロボット到達可能球とする。作業点球に接するようにロボット到達可能球を配置する。ロボット到達可能球の直径から作業点球の半径を引いたものを半径とし、作業点球の中心を中心する球を定義する。この球を包含する直方体（長さ方向をＸ軸方向、幅方向をＹ軸方向、高さ方向をＺ軸方向）を定義する。この直方体をＸＹＺ軸方向にそれぞれ等分割した格子を定義し、このすべての格子点を配置可能計算候補位置とする。
【００４０】
さて、逆運動学が解ければ、各作業点での各軸値が判る。一方、ロボットには、機種毎に、許容される各軸値のレンジ（動作範囲）があり、一般に、動作範囲ぎりぎりの動作は好ましくなく、余裕があった方が良い。そこで、各軸の動作範囲からの関数により、動作余裕値を決める。余裕が全くない場合に関数値０をとり、最大限の余裕がある場合に関数値１をとる関数を定義する。この関数の例を図８に示した。また、その定義式を図中に併記した。この関数のデータは、装置のメモリに予め格納され、動作余裕度計算に利用される。各作業点、各配置可能候補点毎に計算された動作余裕度はメモリに記憶される。また、動作余裕度に基準値（例えば上記関数値０．５）を予め設定しておき、基準値をクリアしたもののみをステップＳ１における「仮配置可能位置（点）」とする。そのデータも、メモリに記憶する。結局、ステップＳ１で、「仮配置可能位置（点）」と判断される必要十分条件は、下記３条件がすべて満たされることである。従って、配置可能候補位置の内、下記３条件をすべて満たした配置位置（点）が「仮配置可能位置」となる。また、その集合でカバーされる範囲が「仮配置可能範囲」となる。  
（イ）全作業点列に対して逆運動学が解け、解があること。  
（ロ）周辺機器との干渉が全作業点列で起らないこと。  
（ハ）ロボットの全軸について、動作余裕度が基準値をクリアしていること。なお、これら条件以外にも、ユーザの希望等により、配置位置から除外すべき範囲があれば、それを考慮して仮配置可能位置を決めても良い。
【００４１】
ステップＳ２の説明；
上記したステップＳ１は、いわば一次審査であり、これをパスした配置位置（即ち、仮配置可能位置）であっても、実際の動作に適しているかどうかについて、更にチェックされることが望ましい。そこで、ステップＳ２では、いわば２次審査のためのデータ収集を行なう。即ち、動作上の支障の有無の観点から、仮配置可能範囲に更にふるいにかけて仮配置可能範囲を選定のためのデータ収集を行なう。
【００４２】
そのために、シミュレーション装置に動作プログラム（ＴＰプログラムと呼ばれることもある）を入力し、各仮配置可能位置にロボットを配置した条件で、順次、ロボット動作／配置等演算処理装置実際に動作シミュレーションを行い、実際の動作時の諸性能を評価、チェックするためのデータを収集する。ここで、入力される動作プログラムの位置データは、当然、上述した作業点列に対応するものである。また、収集されるデータには下記のものがある。なお、これらデータを計算するソフトウェアは周知であり、予め装置に入力されているものとする。
【００４３】
●サイクルタイム
●デューティ（電流値の眼界値に対する割合の１作業サイクル平均値）
●電流ピーク値
●エネルギ値（１作業サイクル当りの消費電力）
●加速度推移（例えば計算周期毎の値）
●加速度ピーク
●速度推移（例えば計算周期毎の値）
●速度ピーク
動作シミュレーションを実行して、得られたこれらデータ（サイクルタイム、デューティ、電流ピーク値、エネルギ値、加速度推移、加速度ピーク、速度推移、速度ピーク）は、メモリに記憶される。また、後述するように、その一部または全部が画面１３に表示される。
【００４４】
ステップＳ３の説明；
ステップＳ２で収集されたデータを用いて、各仮配置可能位置の評価を行なう。評価は、例えば、上記諸データの全部または一部に関する基準値（限界値）を予め設定しておき、これらすべてをクリアできた仮配置可能位置を「配置可能位置」（「仮」は付かないことに注意）に昇格させる。一般的に言えば、ロボットの性能上の限界に関連する量については、基準値（限界値）を設けて、満たせないものは配置可能位置に昇格させないことが実際的と考えられる。
【００４５】
ここでは、一例として、クリアしなければならない基準値（限界値）として下記のデータを入力、設定しておく。
【００４６】
●電流ピーク値の限界値
●加速度（絶対値のピーク）の限界値
●速度（絶対値のピーク）の限界値
結局、本実施形態では、仮配置可能位置の内、これら基準をすべてクリアしたものを「配置可能位置」と定める。
【００４７】
ステップＳ４の説明；
ステップＳ３で定められた配置可能位置について、更に、適当な評価関数を用いて評価し、「最適配置」を決定する。なお、「最適配置」は、必ずしも１つとは限らず、例えば「ベスト３」などを選択しても良い。また、一般に、どの観点を重視するかによってどの配置が最適か変わってくるので、ここでは一例として、重み付けをオペレータが指定、調整できる下記の関数を評価関数Ｆ（α；β）として採用する。
【００４８】
Ｆ（α；β）＝α1 （Ｍ−β1 ）＋α2 （Ｍ−β2 ）＋・・・・・・・・・・＋αu （Ｍ−βu ）
ここで、Ｍは配置可能位置の総数、β1 、β2 ・・・・βu は、順に、１番目、２番目・・・・ｕ場面の観点でそれぞれ付けた順位で、１〜Ｍのいずれかの値をとる。また、α1 、α2 ・・・・αu は、順に、１番目、２番目・・・・ｕ場面の観点につける重み係数で、オペレータが０．０〜１．０の間の値を指定、設定するものとする。観点は、ステップＳ３で収集したデータに対応するものの他、場合によっては、ステップＳ１で求めた動作余裕度を加えても良い。今、動作可能位置の総数ＭをＭ１００として、一例を示せば、下記の通り。
【００４９】
１番目の観点＝サイクルタイムの短かさ。サイクルタイムが最短の配置可能位置には、β1 ＝１を付与する。次に短かい配置可能位置にはβ1 ＝２を付与する。以下、同様である。サイクルタイムが最長の配置可能位置には、β1 ＝１００を付与する。  
２番目の観点＝デューティの小ささ。デューティが最小となる配置可能位置に、β2 ＝１を付与する。次に小さい配置可能位置にはβ2 ＝２を付与する。以下、同様である。デューティが最大の配置可能位置には、β2 ＝１００を付与する。  ３番目の観点＝エネルギ値（１作業サイクル当りの消費電力）の小ささ。エネルギ値が最小となる配置可能位置に、β3 ＝１を付与する。次に小さい配置可能位置にはβ3 ＝２を付与する。以下、同様である。エネルギ値が最大の配置可能位置には、β3 ＝１００を付与する。
以上３つの観点を採用する場合、上記関数Ｆは、下記のようになる（Ｍ＝１００とする）。
【００５０】
Ｆ（α；β）＝α1 （１００−サイクルタイムの短かさ順位β1 ）＋α2 （１００−デューティの小ささ順位β2 ）＋α3 （１００−エネルギ値の小ささ順位β3 ）
ここで例えば、サイクルタイムのみを重視するのであれば、α1 ＝１．０、α2 ＝α3 ＝０．０と設定すれば良い。同様に、デューティのみを重視するのであれば、α2 ＝１．０、α1 ＝α3 ＝０．０と設定すれば良い。また、エネルギのみを重視するのであれば、α3 ＝１．０、α1 ＝α2 ＝０．０と設定すれば良い。３つの観点を考慮したければ、α1 、α2 、α3 にそれぞれ０．０でない値を設定すれば良い。例えば、α1 ＝１．０、α2 ＝α3 ＝０．５、などを設定すれば良い。以上の設定操作は、例えばキーボード操作等でオペレータが画面１３上で行なう。
【００５１】
さて、全配置可能位置について、関数Ｆ（α；β）の値が求められたら、関数値の大きな順に適当な個数を「最適配置位置」として決定する。
以上、ステップＳ１〜ステップＳ４の計算処理が終わったならば、結果をリストとして、画面１３上に、例えば図９のように表示する。なお、ここでは、描示の都合上、リスト中の５配置分のみが表示されているが、必要に応じて全配置可能候補位置、全仮配置可能位置、全配置可能位置等を必要に応じて表示すれば良い。種々の評価結果に関連するデータ表示についても、ここでは、到達可能性の有無、サイクルタイムの値、動作余裕度の値が表示されているが、必要に応じて他の諸データを表示しても良い。例えば、電流ピーク値、加速度ピーク値のチェック結果、エネルギ値やその順位（上述したβ3 ）、サイクルタイムの順位（上述したβ1 ）、前述した干渉に対する余裕指標等を同一画面あるいは他の画面で表示しても良い。
【００５２】
また、例えば、ステップＳ１はクリアしたが、ステップＳ３で落とされた総ての仮配置可能位置群でカバーされる範囲を「黄色」で範囲表示し、配置可能位置群でカバーされる範囲を「緑色」で範囲表示するなどしても良い。さらには、ステップＳ４で選ばれた最適配置を青色点の点滅で示すなどすれば、最適配置を現場に行く前にイメージすることができ、便利である。
【００５３】
以上、ロボットの作業点列のデータが与えられる前提で、１つの実施形態について説明したが、作業点列に代えて作業経路のデータが与えられる場合であっても、本発明を適用可能であることは言うまでもない。即ち、そのケースは、作業経路のデータから、作業点列のデータを生成すれば、上記した実施形態に帰着される。そこで、上述した説明を繰り返す代わりに、作業経路のデータから作業点列のデータを生成し、上術した手順で最適配置位置を求めるまでの流れの要点をフローチャートで図１０に示しておく。各ステップの要点は下記の通りである。
【００５４】
ステップＴ１；配置環境データを指定・設定する。これらデータには、上述した実施形態で示したと同様、下記のデータが含まれる。  
（１）ロボット（ハンドがあればそれを含む）のサイズ、形状データ
（２）ワーク、周辺機器の配置位置／姿勢、サイズ、形状データ
ステップＴ２；配置可能範囲候補（配置可能位置の集合）を指定・設定する。指定・設定の仕方の例は、前述した通りである。
【００５５】
ステップＴ３；ロボットの各軸の動作余裕度の限界値を指定・設定する。また、動作評価関連の限界値（基準値）を指定・設定する。動作評価関連の限界値は、例えば前述した、電流ピーク値の限界値、加速度（絶対値のピーク）の限界値、速度（絶対値のピーク）の限界値などである。
【００５６】
ステップＴ４；作業経路と分割数を指定・設定する。分割数は、次のステップで作業点列を生成するためのものである。  
ステップＴ５；作業経路のデータと指定・設定された分割数から、作業点列を生成する。作業点列の生成には、例えば、作業経路Ｐ（ｘ、ｙ、ｚ）を媒介変数ｔを用いた表示の形式Ｐ（ｔ）＝（Ｐｘ（ｔ）、Ｐｙ（ｔ）、Ｐｚ（ｔ））の式に変換し、経路始点のｔ値ｔ0 と経路終点のｔ値ｔ1 の間を指定された分割数で、分割し、始点、終点を含めて（分割数＋１）個の作業点からなる作業点列を生成すれば良い。もちろん、これら作業点は作業経路上の点となる。なお、この場合生成される作業点列についても、（ａ）３次元位置のみ指定のケース、（ｂ）３次元位置と、作業面の法線方向（作業点のｚ軸方向）を指定のケース、（ｃ）３次元位置、作業面の法線方向（作業点のｚ軸方向）及び同法線方向周りの姿勢を指定のケース、（ｄ）３次元位置と３次元姿勢を指定のケースがあり得るが、各ケースにおける対処法は前述したので繰り返さない。
【００５７】
ステップＴ６；各配置可能候補位置にロボットを配置した条件下で、各作業点について逆運動学を解き、解がある点を選択し、更に、周辺機器との干渉が全作業点列で起らないもののみを抽出し、更に、それらについて各軸の動作余裕度を計算する。そして、全作業点で全軸基準値をクリアしている場合のみ、その配置位置を仮配置可能位置として記憶する。なお、これら条件以外にも、ユーザの希望等により、配置位置から除外すべき範囲があれば、それを考慮して仮配置可能位置を決めても良い。
【００５８】
ステップＴ７；シミュレーション装置に動作プログラム（ＴＰプログラムと呼ばれることもある）を入力し、各仮配置可能位置にロボットを配置した条件で、順次、ロボット動作／配置等演算処理装置実際に動作シミュレーションを行い、実際の動作時の諸性能を評価、チェックするためのデータを収集する。ここで、入力される動作プログラムの位置データは、当然、上述した作業点列に対応するものである。また、収集されるデータは、ここでは前述した通りとする。即ち、
●サイクルタイム
●デューティ（電流値の眼界値に対する割合の１作業サイクル平均値）
●電流ピーク値
●エネルギ値（１作業サイクル当りの消費電力）
●加速度推移（例えば計算周期毎の値）
●加速度ピーク
●速度推移（例えば計算周期毎の値）
●速度ピーク
である。
【００５９】
ステップＴ８；全仮配置可能位置について、動作シミュレーションで収集されたデータ等を用いて、動作関連の限界値クリアをチェックする。ここでは、電流ピーク値の限界値、加速度（絶対値のピークの限界値及び速度（絶対値のピーク）の限界値との照合をそれぞれ行なう、クリアした仮配置可能位置を配置可能位置として記憶する。
【００６０】
ステップＴ９；前述した評価関数Ｆ（α；β）の重み係数α1 〜α3 を指定・設定する。なお、このステップは、ステップＴ３で行なっても良い。
【００６１】
ステップＴ１０；全配置可能位置について、評価関数Ｆ（α；β）を用いて評価し、「最適配置」を決定する。前述したように、最適配置は、必ずしも１つとは限らず、例えば「ベスト３」などを選択しても良い。
【００６２】
ステップＴ１１；以上の計算処理が終わったならば、結果をリストとして、画面１３上に、例えば図９のようにリスト表示する。また、前述したと同様に、ステップＴ６はクリアしたが、ステップＴ８で落とされた総ての仮配置可能位置群でカバーされる範囲を「黄色」で範囲表示し、配置可能位置群でカバーされる範囲を「緑色」で範囲表示するなどしても良い。さらには、ステップＴ１０で選ばれた最適配置を青色点の点滅で示すなどすれば、最適配置を現場に行く前にイメージすることができ、便利である。
【図面の簡単な説明】
【００６３】
【図１】実施形態に係るロボットオフラインシミュレーション装置１の要部構成を示すブロック図である。
【図２】実施形態における全体の手順の流れを示したフローチャートである。
【図３】作業点列のデータの種類を説明する図で、（ａ）は３次元位置のみ、（ｂ）は３次元位置と、作業面の法線方向（作業点のｚ軸方向）、（ｃ）は３次元位置、作業面の法線方向（作業点のｚ軸方向）及び同法線方向周りの姿勢、（ｄ）は３次元位置、３次元姿勢がそれぞれ指定されるケースを表わしている。
【図４】作業点列と配置位置候補（点）群の関係を示した図である。
【図５】配置可能範囲の候補について説明する図である。
【図６】アプローチベクトルａ、オリエントベクトルｏ、ノーマルベクトルｎの決め方を説明する図である。
【図７】配置可能候補の範囲を指定するデータがない場合に、配置可能候補点を決める方法について説明する図である。
【図８】動作余裕値を決めるために使用される関数の例を示すグラフである。
【図９】配置可能位置の選択に関連する評価結果等の表示画面の例を示した図である。
【図１０】作業経路のデータが与えられるケースについて、手順の流れの要点を示したフローチャートである。
【符号の説明】
【００６４】
１  ロボット（画面上）
１３  画面（表示部）
１４  本体部
１５  アニメーション演算表示装置
１６  データ記憶装置
１７  ロボット動作／配置等演算処理装置
３６  ワーク
３７  テーブル（周辺機器）
【図１】
2005022062.tif 000003
【図２】
2005022062.tif 000004
【図３】
2005022062.tif 000005
【図４】
2005022062.tif 000006
【図５】
2005022062.tif 000007
【図６】
2005022062.tif 000008
【図７】
2005022062.tif 000009
【図８】
2005022062.tif 000010
【図９】
2005022062.tif 000011
【図１０】
2005022062.tif 000012