(57)【特許請求の範囲】
【請求項１】
干渉チェックの対象であるモデル化対象に設定する幾何的モデルの上限数が、入力されるモデル数上限入力部と、
前記モデル化対象を包含できる直方体が、干渉チェック用のモデルとして前記モデル化対象に設定されると、単位距離計算あたりの計算コストが前記直方体よりも小さい新たな幾何的モデルを前記モデル上限数以下の数だけ用いて、前記直方体を前記新たな幾何的モデルに置き換えることによって、前記モデル化対象をモデル化するモデル化処理部と、
前記新たな幾何的モデルを用いたモデルを、モデル候補として記憶しておくモデル候補記憶部と、
前記モデル化対象を制御するコントローラが行う各処理に要する演算処理量に関する情報に基づいて、干渉チェックを行う際の計算処理演算量の上限である演算上限量を設定する演算量上限設定部と、
前記モデル候補の中から、前記演算上限量以下で前記干渉チェックの計算処理を実行できるモデル候補を抽出するとともに、抽出したモデル候補の中からモデルの包含体積が最も小さいモデル候補を前記モデル化対象のモデルに決定する体積モデル決定部と、
前記体積モデル決定部によって決定されたモデルを用いてモデル同士の干渉チェックを行うとともに、干渉する可能性があれば動作停止指令を出力し、干渉する可能性がなければ動作継続指令を出力する干渉チェック部と、
を備えることを特徴とする干渉チェック装置。
【請求項２】
干渉チェックの対象であるモデル化対象の体積に対して前記モデル化対象に設定するモデルに許容する体積の体積上限値が、入力される制限値入力部と、
前記モデル化対象を制御するコントローラが行う各処理に要する演算処理量に関する情報に基づいて、干渉チェックを行う際の計算処理演算量の上限である演算上限量を設定する演算量上限設定部と、
前記コントローラで処理可能な幾何的モデルの上限数であるモデル上限数を、前記演算上限量に基づいて算出するモデル数算出部と、
前記モデル化対象を包含できる直方体が、干渉チェック用のモデルとして前記モデル化対象に設定されると、単位距離計算あたりの計算コストが前記直方体よりも小さい新たな幾何的モデルを前記モデル上限数以下の数だけ用いて、前記直方体を前記新たな幾何的モデルに置き換えることによって、前記モデル化対象をモデル化するモデル化処理部と、
前記新たな幾何的モデルを用いたモデルを、モデル候補として記憶しておくモデル候補記憶部と、
前記モデル候補の中から、前記演算上限量以下で前記干渉チェックの計算処理を実行できるモデル候補を抽出するとともに、抽出したモデル候補の中から前記体積上限値以下のモデルが存在する場合には、前記モデル候補の中からモデルの包含体積が最も小さいモデル候補を前記モデル化対象のモデルに決定する体積モデル決定部と、
前記体積モデル決定部によって決定されたモデルを用いてモデル同士の干渉チェックを行うとともに、干渉する可能性があれば動作停止指令を出力し、干渉する可能性がなければ動作継続指令を出力する干渉チェック部と、
を備えることを特徴とする干渉チェック装置。
【請求項３】
前記モデル化対象を包含できる直方体の寸法に関する情報が、入力される直方体設定入力部をさらに備え、
前記モデル化処理部は、前記直方体の寸法に関する情報に基づいて、前記直方体を前記新たな幾何的モデルに置き換えることを特徴とする請求項１または２に記載の干渉チェック装置。
【請求項４】
前記体積モデル決定部は、前記コントローラが干渉チェックに要する単位モデル毎の計算処理演算量に関する情報に基づいて、前記演算上限量以下で前記干渉チェックの計算処理を実行できるモデル候補を抽出し、抽出したモデル候補の中からモデルの包含体積が最も小さいモデル候補を前記モデル化対象のモデルに決定することを特徴とする請求項１から３のいずれか１つに記載の干渉チェック装置。
【請求項５】
予めＣＡＤ／ＣＡＭシステムを用いて作成されたモデル化対象としての３次元モデルが入力されると、ＣＡＤ／ＣＡＭシステムを用いて前記３次元モデルを複数のアセンブリに分割し、前記３次元モデルをアセンブリごとに直方体モデルに変換する変換部をさらに備え、
前記モデル化処理部は、アセンブリごとに直方体モデルに変換された３次元モデルを用いて、前記モデル化対象をモデル化することを特徴とする請求項１から４のいずれか１つに記載の干渉チェック装置。
【請求項６】
前記新たな幾何的モデルは、球体モデルの組み合わせ、円筒体モデルの組み合わせ、および球体モデルと円筒体モデルとの組み合わせ、の何れかであることを特徴とする請求項１から５のいずれか１つに記載の干渉チェック装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット同士あるいはロボットと周辺機器との間の干渉をチェックする干渉チェック装置に関するものである。
【背景技術】
【０００２】
干渉チェック装置は、産業用ロボットやその周辺機器が衝突するのを未然に防ぐ目的で、衝突する可能性をチェックする装置である。干渉チェック装置は、衝突の可能性をチェックしておくことによって、衝突する可能性がある場合には、ロボットなどに適切な指令値（停止あるいは動作軌道を修正する指令値）を出し、これにより、衝突を未然に防いでいる。特に、ロボットが稼働中の場合もオンラインで実行する干渉チェック装置においては、産業用ロボットやその周辺機器をそのままの詳細な形状ではなく、一旦、干渉チェックを高速に計算処理しやすいモデル（例えば、球体や円筒体など）に置き換えて、そのモデル同士の干渉チェックを実施している。【０００３】
干渉チェック装置は、ロボット本体などのモデル化対象（物体）をモデルに置き換える際には、関節の可動軸数など（機構の自由度）を考慮してモデル化対象を複数個の領域にあらかじめ分割する。そして、干渉チェック装置は、それぞれの領域がプリミティブと呼ばれる簡単な幾何モデル（球体・円筒体・直方体・多面体など）によって包含されるようにモデルを配置する。さらに、干渉チェック装置は、それぞれのプリミティブ間の最短距離を計算し、最短距離が０あるいは予め設定した所定距離より小さくなる場合に、「干渉が発生する」と判定し、停止指令を出力し停止動作を開始していた。【０００４】
ここで、モデル化対象の具体的なモデルの生成方法について述べる。モデル化には、「モデル化する対象よりもモデルの方が大きい状態で、対象を包含していること」が必要となる。対象の包含について、仮に、過剰に余裕をもって包含してしまい、モデル設定が大きすぎる場合には、対象同士は干渉の可能性が無いのにもかかわらず「干渉をしている」と誤判定を発生させる要因になる。このため、モデル化する場合には、対象全体をいかに効率良く余剰領域が小さいモデルを使って包含するかということが重要となる。【０００５】
干渉チェック用のモデルとして、単位判定計算コストが有利な球体を用いる方式が古くから用いられている。このような、球体同士の判定を利用する場合でも、存在する全てのモデル同士を判定すると、モデル数の組み合わせ分だけ計算処理コストが増大してしまう。計算処理の効率を上げるために、常に全てのモデル同士を判定するのではなく、干渉する可能性のある部位のみ詳細に判定する方法が提案されている。【０００６】
この方法では、例えば、ロボットに対して半径を大きくし少数のモデルで粗くモデル化したモデルと、半径を小さくし多数のモデルで詳細にモデル化したモデルと、が階層的に用意される。そして、まず粗いモデル同士を判定させ、干渉している可能性があれば、詳細なモデルでも判定を行うという方法を取ることで、精度良く計算処理コストを減らしている（例えば、特許文献１参照）。【０００７】
ロボットなどのオフラインあるいはオンラインでの干渉チェックを必要とする現場においては、このように精度良くモデル化されたモデルを使って干渉チェックすることが望まれている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３６１２７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来の技術では、全てのモデル同士を判定することは避けられる一方で、モデル同士が接近状態にある場合には、判定の必要なモデル数は結局多くなることになる。この結果、単位あたりの計算コストが小さい球体を利用して詳細なモデル化を行う場合には、大きな計算コストが発生しうるという問題点があった。【００１０】
また、単一の種類のプリミティブをモデルに適用する場合にも、モデル数をＮ個から１個増やすことで、包含する体積の余剰分が増加する場合がある。さらに、この場合、モデルの包含余剰分にほとんど変化がないにもかかわらず、判定のための計算処理コストが増加してしまうこともある。【００１１】
このため、常に安定した計算処理コストを実現しつつ、包含体積も小さくするためには、単一のモデルではなく、形状に有効な包含モデルを選択する必要がある。また、計算処理コストに上限があるような場合には、トータル計算処理コストが上限よりも大きくならないかを考慮しなくてはならない。【００１２】
たとえば、包含するモデルとして球体以外の円筒体を用いることで、１モデル単位あたりの干渉チェック処理時間は増加するものの、球体よりも少ないモデル数でモデル化対象を包含できる。このため、トータルで効率的なモデル選定・配置を検討することが望まれる。ところが、現実には、モデルの追加をする作業は、干渉チェック装置を搭載したロボットのユーザが行うことになり、ユーザの調整で上記要件を考慮したモデル配置を実施することは困難であった。【００１３】
本発明は、上記に鑑みてなされたものであって、制限された計算コスト内でモデルの包含体積を最小にしたモデルを容易に生成することができる干渉チェック装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、干渉チェック装置が、干渉チェックの対象であるモデル化対象に設定する幾何的モデルの上限数が、入力されるモデル数上限入力部と、前記モデル化対象を包含できる直方体が、干渉チェック用のモデルとして前記モデル化対象に設定されると、単位距離計算あたりの計算コストが前記直方体よりも小さい新たな幾何的モデルを前記モデル上限数以下の数だけ用いて、前記直方体を前記新たな幾何的モデルに置き換えることによって、前記モデル化対象をモデル化するモデル化処理部と、前記新たな幾何的モデルを用いたモデルを、モデル候補として記憶しておくモデル候補記憶部と、前記モデル化対象を制御するコントローラが行う各処理に要する演算処理量に関する情報に基づいて、干渉チェックを行う際の計算処理演算量の上限である演算上限量を設定する演算量上限設定部と、前記モデル候補の中から、前記演算上限量以下で前記干渉チェックの計算処理を実行できるモデル候補を抽出するとともに、抽出したモデル候補の中からモデルの包含体積が最も小さいモデル候補を前記モデル化対象のモデルに決定する体積モデル決定部と、前記体積モデル決定部によって決定されたモデルを用いてモデル同士の干渉チェックを行うとともに、干渉する可能性があれば動作停止指令を出力し、干渉する可能性がなければ動作継続指令を出力する干渉チェック部と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、制限された計算コスト内でモデルの包含体積を最小にしたモデルを容易に生成することが可能になるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施の形態１に係る干渉チェック装置を備えた干渉チェックシステムの構成を示す図である。
【図２】図２は、実施の形態１に係る干渉チェック装置の構成を示すブロック図である。
【図３】図３は、球体モデル判定を行う際の単位距離計算あたりの計算コストを説明するための図である。
【図４】図４は、単位距離計算の他の対象例を示す図である。
【図５】図５は、モデル化処理を説明するための図である。
【図６】図６は、モデル上限数を１つとした場合のモデル例を示す図である。
【図７】図７は、モデル上限数を２つとした場合のモデル例を示す図である。
【図８】図８は、モデル数と余剰包含体積比との関係を示す図である。
【図９】図９は、干渉チェックシステムの他の構成例を示す図である。
【図１０】図１０は、実施の形態２に係る干渉チェック装置の構成を示すブロック図である。
【図１１】図１１は、ＣＡＤ／ＣＡＭシステムを用いた、アセンブリごとの分割処理を説明するための図である。
【図１２】図１２は、実施の形態３に係る干渉チェック装置の構成を示すブロック図である。
【図１３】図１３は、干渉チェック装置のハードウェア構成を示す図である。
【図１４】図１４は、実施の形態４に係る干渉チェック装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下に、本発明の実施の形態に係る干渉チェック装置を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１８】
実施の形態１．
図１は、実施の形態１に係る干渉チェック装置を備えた干渉チェックシステムの構成を示す図である。干渉チェックシステム１００Ａは、ロボット生産システムと、ロボット生産システムの機器間を接続する通信機器３と、ロボット生産システムが備える各コントローラの設定を変更するコンピュータ９と、を含んで構成されるシステムである。なお、干渉チェックシステム１００Ａは、通信機器３の代わりに、通信機能と、各機器に指令値や信号を送る機能とを備えたＰＬＣ（プログラマブル・ロジック・コントローラ）などの制御装置を備えていてもよい。
【００１９】
通信機器３は、Ethernet（登録商標）などを用いて、干渉チェックシステム１００Ａ内の通信を行う。具体的には、通信機器３は、ロボットコントローラ２、周辺機器コントローラ４およびコンピュータ９と通信を行う。
【００２０】
コンピュータ９は、ＰＣ（Personal  computer）などの情報処理を行う機器である。コンピュータ９は、各コントローラ（ロボットコントローラ２や周辺機器コントローラ４など）の設定を、通信機器３を介して変更する。なお、コンピュータ９以外にも、各コントローラに対して直接設定を変更するデバイスがある場合、これらのデバイスを干渉チェックシステム１００Ａの構成に含めてもよい。
【００２１】
ロボット生産システムは、ロボット１０と、ハンド装置６と、ビジョンセンサ７と、周辺機器５と、周辺機器コントローラ４と、ロボットコントローラ（ロボット制御装置）２と、を含んで構成されている。
【００２２】
ロボット１０は、ロボットコントローラ２に接続されており、ロボットコントローラ２からの指示に従って動作する。また、ロボット１０は、ロボットコントローラ２からの指示に従ってハンド装置６などを動作させる。
【００２３】
ハンド装置６は、ロボット１０によって動作させられる装置である。ハンド装置６は、周辺機器５などに衝突しないように移動する。ビジョンセンサ７は、ハンド装置６や周辺機器５などの近傍を撮像する画像センサである。ビジョンセンサ７は、たとえば、ハンド装置６の近傍に配置されており、ハンド装置６と一緒に移動する。ビジョンセンサ７は、周辺機器５などに衝突しないように移動する。
【００２４】
周辺機器コントローラ４は、周辺機器５に接続されており、コンピュータ９からの指示に従って、周辺機器５を制御する。周辺機器５は、ロボット１０の周辺に配置される機器である。周辺機器５は、周辺機器コントローラ４に接続されており、周辺機器コントローラ４からの指示に従って動作する。
【００２５】
ロボットコントローラ２は、ロボット１０、ハンド装置６、ビジョンセンサ７に接続されており、コンピュータ９からの指示に従って、ロボット１０、ハンド装置６、ビジョンセンサ７を制御する。
【００２６】
また、ロボットコントローラ２は、干渉チェック装置１Ｘを有している。干渉チェック装置１Ｘは、干渉チェック処理（衝突予想）を実施する装置であり、ハンド装置６と周辺機器５との衝突の可能性や、ビジョンセンサ７と周辺機器５との衝突の可能性を、実際に衝突が発生する前にチェックする。干渉チェック装置１Ｘは、衝突する可能性がある場合には、ロボット１０またはハンド装置６に衝突を回避させるための指令値（停止または動作軌道を修正する指令値）を出す。なお、干渉チェック装置１Ｘは、周辺機器５に衝突を回避させるための指令値を出してもよい。
【００２７】
なお、干渉チェックシステム１００Ａは、１つのロボットコントローラ２を備えていてもよいし、複数のロボットコントローラ２を備えていてもよい。また、干渉チェックシステム１００Ａは、１つの周辺機器コントローラ４を備えていてもよいし、複数の周辺機器コントローラ４を備えていてもよい。また、ロボット生産システムは、ビジョンセンサ７を備えていなくてもよい。
【００２８】
本実施の形態の干渉チェック装置１Ｘは、干渉チェック対象（ロボット１０、ハンド装置６、ビジョンセンサ７、周辺機器５）をそれぞれモデル化して、干渉の可能性があれば停止信号を出し、干渉を生ずることなく安全に干渉チェック対象を停止させる。なお、干渉チェック装置１Ｘはアルゴリズム自体をロボットコントローラ２以外に適用することも可能であるので、ロボットコントローラ２以外の演算処理装置を用いて干渉チェック装置を構成してもよい。例えば、干渉チェック装置１Ｘは、周辺機器コントローラ４内に配置しておいてもよい。
【００２９】
ここで、本実施の形態において行われる干渉チェック処理について説明する。本実施の形態では、ロボット１０の可動範囲によって形成される、ロボット１０が通過しうる空間を動作領域と表現する。２台以上のロボット１０同士で動作領域が交差する場合はロボット１０同士の衝突の可能性が出てくる。このようなロボット１０同士の衝突を表す表現として、ある時刻にロボット１０の占めている空間同士が交差している状態に干渉という表現を用いる。
【００３０】
また、ロボット１０を複数のモデルで表現したとき、各モデルが占める領域を干渉判定領域と呼び、干渉判定領域同士が交差する状態にも干渉という表現を用いる。また、このような干渉が生じるか否かを確認することを干渉チェックと呼ぶ。干渉チェックを行うためには、各ロボット１０を複数の球体、円筒体、直方体などを用いてモデル化しておくことが必要である。
【００３１】
例えば、ロボットハンドをユーザが設計して生産システムに適用する場合には、干渉チェックを行う前に、ロボットハンドを球体などのモデルでモデル化し、モデルのタイプ（球体・円筒体・直方体）、モデルの寸法、モデルの配置（どの物体に拘束されるのか）などを予め全て設定しておく。
【００３２】
ロボット１０本体については、出荷時に既にロボットメーカー側で設定されているモデルの値を適用することが可能であるが、ユーザ側で設計・選定されるハンド装置６、ビジョンセンサ７および周辺機器５については、ユーザ側で新規に設定することとなる。
【００３３】
このため、ユーザは実際に演算に適用するモデルを１つ１つ試行錯誤しながら、モデルサイズやモデル位置を決定する必要がある。このようなモデル条件の設定には、２つの制約を考慮しながら設定する必要がある。
【００３４】
１つ目の制約は、ロボットコントローラ２間の通信速度上あるいは記憶領域の記憶許容量の制約から自モデルとして管理可能なモデル数に上限があることである。２つ目の制約は、処理可能なモデル数に上限があることである。この２つ目の制約は、ロボットコントローラ２の演算処理装置が通常複数のタスクを処理しているので、計算リソースを干渉チェック処理のためだけに大きく取ることができないことに起因している。
【００３５】
これらを考慮しつつ包含するモデルのタイプの体積をなるべく小さくしながら計算処理量が他の演算処理（例えば、軌道計算や加減速指令生成など）に影響がない程度にモデルを設定することは従来困難であった。
【００３６】
本実施の形態に係る干渉チェック装置１Ｘは、モデル化したい領域の外形が直方体で指定されると、計算処理量として他の演算処理に影響を及ぼさないモデル候補の中で包含体積が最小のものを自動抽出する。
【００３７】
次に、干渉チェック装置１Ｘの構成について説明する。図２は、実施の形態１に係る干渉チェック装置の構成を示すブロック図である。ここでは、干渉チェック装置１Ｘの一例である干渉チェック装置１Ａの構成について説明する。
【００３８】
干渉チェック装置１Ａは、直方体設定入力部１１と、モデル数上限入力部１２と、包含体積比較部１３と、モデル化処理部１４と、モデル候補記憶部１７と、処理演算量上限設定部１６と、最小包含体積モデル決定部１８Ａと、設定後モデル記憶部１９と、ロボット制御装置設定記憶部１５と、干渉チェック部２０と、駆動制御部２１と、を備えている。
【００３９】
直方体設定入力部１１は、ハンド装置６やビジョンセンサ７などのモデル化対象を直方体に置き換えるための指示（モデル化指示１０１）を入力するインタフェースである。モデル化指示１０１は、ユーザがマウスやキーボードなどを用いることによって直方体設定入力部１１に入力される。
【００４０】
直方体設定入力部１１に入力されるモデル化指示１０１には、例えば、直方体寸法や拘束条件などが含まれている。直方体寸法は、例えば、直方体の３辺の長さである、Ｌ［ｍｍ］、ａ［ｍｍ］、ｂ［ｍｍ］（Ｌ≧ａ≧ｂ）である。また、拘束条件は、モデルが拘束される位置および姿勢である。
【００４１】
拘束条件は、例えば、ロボット１０における、フランジ位置などの取り付けの基準となる位置、取り付けの基準となる位置からモデルの取り付け位置までのオフセット量（Ｘ，Ｙ，Ｚ，Ａ，Ｂ，Ｃ）などが指定された情報である。ここでのＡは、Ｘ軸周りの回転量、Ｂは、Ｙ軸周りの回転量、Ｃは、Ｚ軸周りの回転量を表している。
【００４２】
なお、それぞれの回転量やオフセット量については、指定した座標系に基づいて定義することとなる。また、前記座標系については、予めロボット軸ごとに定義されており、例えばベース座標系、１軸目座標系、２軸目座標系、３軸目座標系、４軸目座標系、５軸目座標系、６軸目座標系、フランジ位置座標系、という形で定義されているものとする。直方体設定入力部１１は、モデル化指示１０１を包含体積比較部１３およびモデル化処理部１４に送る。
【００４３】
モデル数上限入力部１２は、モデル数の上限値であるモデル上限数１０２を入力するインタフェースである。モデル上限数１０２は、ユーザがマウスやキーボードなどを用いることによってモデル数上限入力部１２に入力される。モデル上限数１０２は、モデル化対象に設定するモデルの上限許容数である。モデル上限数１０２は、１以上の整数であり、上限はない。モデル数上限入力部１２は、モデル上限数１０２を、モデル化処理部１４に送る。
【００４４】
モデル化対象を直方体で指定するのは、ＦＡ（Factory  Automation）における各種の形状は方形で簡単に包含できるものが多く、設定が容易であるからである。方形を用いたモデル間距離および衝突判定の計算コストは、情報処理量が多いので、リアルタイム計算に用いることは困難である。このため、干渉チェック装置１Ａのモデル化処理部１４は、直方体モデルを球体や円筒体（円柱）などの単位計算コストが低く、リアルタイム計算で情報処理が可能なモデルに置き換える。
【００４５】
モデル化処理部１４は、ユーザからの指示であるモデル化指示１０１に基づいて、モデル化対象を球体や円筒体などのモデルに置き換えることにより、モデル化処理を実行する。モデル化処理部１４は、モデル化対象を、単位距離計算あたりの計算コストが直方体よりも小さい新たな幾何的モデル（球体モデル、円筒体モデルなど）に置き換えてモデル化する。モデル化処理部１４は、複数種類の幾何的モデル品種の各品種に対して、ユーザに指定された幾何的モデル数の上限（モデル数Ｎ）（モデル上限数１０２）以下のモデルを使ってモデルを生成する。
【００４６】
ここで、「単位距離計算あたりの計算コスト」について具体的な事例を用いて示す。この処理は、「距離計算」の１回分に関する計算コストを示している。図３は、球体モデル判定を行う際の単位距離計算あたりの計算コストを説明するための図である。例えば、図３に示すように、球と球との判定（球体モデル判定）であれば「点と点との距離計算」が１回分の計算コストになる。あるモデルｉの中心点をＰ１、別のモデルｊの中心点をＰ２とし、Ｐ１＝(Ｘ１，Ｙ１，Ｚ１)、Ｐ２＝(Ｘ２，Ｙ２，Ｚ２)とすると、Ｐ１，Ｐ２間の距離Ｌijは下記の数式で求めることができる。
Ｌij＝｜Ｐ１−Ｐ２｜＝√（（Ｘ１−Ｘ２）＾２＋（Ｙ１−Ｙ２）＾２+（Ｚ１−Ｚ２）＾２）
【００４７】
図４は、単位距離計算の他の対象例を示す図である。単位距離計算の対象としては、図４の（ａ）に示す円筒３０１（線分から一定距離で定義される包体、両端は半球形状）、図４の（ｂ）に示す円柱３０２、図４の（ｃ）、（ｄ）に示す有限平面（三角形３０３Ｂ、四角形３０３Ａなどの多角形）が考えられる。また、単位距離計算の対象としては、錐体（円すい、図４の（ｄ）に示す三角錐３０５など）、多面体（４面体、図４の（ｃ）に示す６面体３０４、８面体・・・）、図４の（ｅ）、（ｆ）に示す包体３０６Ａ，３０６Ｂ（曲線から一定距離の曲面で包含された閉領域）が考えられる。
【００４８】
図５は、モデル化処理を説明するための図である。図５では、ハンド装置６の一部であるロボットハンド３０を、ユーザが設計して生産システムに適用する場合の、モデル化処理を示している。モデル化処理部１４は、モデル化指示１０１に基づいて、ロボットハンド３０を所定のモデルでモデル化するとともに、ロボット１０の手先側に拘束されている拘束条件をモデルに設定する。図５では、球体モデル３１、円筒体モデル３２、直方体モデル３３でモデル化した場合の、各モデル図を示している。
【００４９】
モデル化処理部１４は、干渉チェックを行う前に、モデル化指示１０１に基づいて、モデルのタイプ（球体・円筒体・直方体など）、モデルの寸法、モデルの配置（どの物体に拘束されるのか）を設定しておく。モデル化処理部１４は、モデル化指示１０１で指定されている、モデルのタイプ、モデルの寸法およびモデルの配置に基づいて、モデル化対象を球体や円筒体などのモデルに置き換える。モデル化処理部１４は、球体や円筒体などのモデルに置き換えたモデル化対象（モデル候補）を、モデル情報１０３としてモデル候補記憶部１７に記憶させる。モデル情報１０３は、モデル候補に関する情報であり、モデル候補自体、各モデルの個数、各モデルのタイプ、各モデルの寸法、各モデルの配置などを含んでいる。モデル化処理部１４は、複数のモデル候補を生成し、各モデル候補をモデル候補記憶部１７に記憶させる。
【００５０】
包含体積比較部１３は、モデル化指示１０１内の直方体寸法と、モデル情報１０３と、に基づいて、モデル化対象に対するモデルの余剰包含体積比を算出する。余剰包含体積比は、モデルがモデル化対象に対して余分に包含している体積を、モデル化対象の体積で割った値である。包含体積比較部１３は、モデル化対象の体積を、モデル化指示１０１内の直方体寸法に基づいて算出し、モデルの体積をモデル情報１０３から算出する。包含体積比較部１３は、算出した余剰包含体積比を、モデル化余剰量１０４としてモデル候補記憶部１７に記憶させる。なお、包含体積比較部１３は、余剰包含体積比の代わりに、モデルの体積の制限値（許容値）をモデル化余剰量１０４としてモデル候補記憶部１７に記憶させてもよい。モデルの体積の制限値は、モデル化対象の体積に対する比であってもよいし差であってもよい。
【００５１】
モデル候補記憶部１７は、モデル情報１０３、モデル化余剰量１０４を記憶しておくメモリなどである。モデル候補記憶部１７は、モデル情報１０３とモデル化余剰量１０４とを対応付けて記憶しておく。
【００５２】
ロボット制御装置設定記憶部１５は、各コントローラが実行する各処理に要する演算処理量に関する情報を処理情報１０５として記憶しておくメモリなどである。処理情報１０５は、例えば、各コントローラで有効となっているオプション処理機能情報、各処理機能の演算処理時間、１制御周期の演算処理時間などである。
【００５３】
また、ロボット制御装置設定記憶部１５は、各ロボットコントローラ２において処理する単位モデル毎の干渉チェック判定時間（各モデル単位に要する演算量）を、モデル単位演算量１０８として記憶しておく。
【００５４】
処理演算量上限設定部１６は、ロボット制御装置設定記憶部１５から処理情報１０５を読み出すとともに、処理情報１０５に基づいて、ロボットコントローラ２が干渉チェックに使うことができる演算処理時間１０６（演算上限量）を算出する。処理演算量上限設定部１６は、算出した演算処理時間１０６を最小包含体積モデル決定部１８Ａに出力する。
【００５５】
設定後モデル記憶部１９は、ロボットアーム（ロボット１０、ハンド装置６）、ビジョンセンサ７、周辺機器５に設定されている各モデルのタイプ、各モデルの個数、各モデルの寸法および各モデルの配置情報などモデル情報１０３に含まれる干渉チェック用のモデル配置に必要な情報を記憶している。
【００５６】
新たなモデルを設定する際には、設定後モデル記憶部１９の最小包含体積モデル１０９が、設定後モデル情報１１０として読み出される。設定後モデル情報１１０は、ロボットアーム（ロボット１０、ハンド装置６）に設定されているモデルの、モデルタイプおよびそのモデル個数の情報などである。また、干渉チェックが行われる際には、設定後モデル記憶部１９の最小包含体積モデル１０９が、そのまま読み出される。
【００５７】
最小包含体積モデル決定部１８Ａは、モデル情報１０３とモデル化余剰量１０４とをモデル候補情報１０７としてモデル候補記憶部１７から読み出す。また、最小包含体積モデル決定部１８Ａは、ロボット制御装置設定記憶部１５からモデル単位演算量１０８を読み出し、設定後モデル記憶部１９から設定後モデル情報１１０を読み出す。
【００５８】
最小包含体積モデル決定部１８Ａは、モデル候補の中から処理演算量の閾値制限を満たすモデル候補を抽出する。具体的には、最小包含体積モデル決定部１８Ａは、設定後モデル情報１１０およびモデル候補情報１０７に基づいて、各モデル候補に対して、１回の干渉チェックに必要な計算処理回数を算出する。さらに、最小包含体積モデル決定部１８Ａは、算出した計算処理回数とモデル単位演算量１０８と、に基づいて、円筒体と球体との組み合わせ毎に、１回の干渉チェックに要する計算処理時間を算出する。最小包含体積モデル決定部１８Ａは、この算出処理を、モデルタイプ数×モデル数の数だけ繰り返す。
【００５９】
最小包含体積モデル決定部１８Ａは、各干渉チェックの計算処理時間と、干渉チェックに使うことのできる演算処理時間１０６と、を比較する。最小包含体積モデル決定部１８Ａは、モデル候補の中から、干渉チェックに使うことのできる演算処理時間１０６よりも小さい計算処理時間で干渉チェックを行なうことができるモデル候補のみを抽出する。最小包含体積モデル決定部１８Ａは、抽出したモデル候補の中から、モデル化余剰量１０４が最も小さいモデル候補を選択し、選択したモデル候補を最小包含体積モデル１０９として設定後モデル記憶部１９に記憶させる。このとき、最小包含体積モデル決定部１８Ａは、１つのモデル化対象に対して古い最小包含体積モデル１０９が設定後モデル記憶部１９内に存在する場合には、新たな最小包含体積モデル１０９で上書きする。
【００６０】
干渉チェック部２０は、設定後モデル記憶部１９が記憶している最小包含体積モデル１０９を用いて、干渉チェックを実行する。このとき、干渉チェック部２０は、最小包含体積モデル１０９に設定されているモデル寸法およびモデル位置拘束条件１１１を用いて、干渉チェックを実行する。モデル位置拘束条件１１１は、モデルが拘束される位置および姿勢に関する条件であり、モデル化指示１０１に含まれているものである。
【００６１】
干渉チェック部２０は、干渉する可能性があると判断した場合には、動作停止指令を駆動制御部２１に出力する。干渉チェック部２０は、干渉する可能性がないと判断した場合には、動作継続指令を駆動制御部２１に出力する。干渉チェック部２０は、動作停止指令や動作継続指令を、動作変更指令値１１２として駆動制御部２１に出力する。駆動制御部２１は、ロボット１０やハンド装置６に対して、動作変更指令値１１２に応じた駆動制御を行う。
【００６２】
次に、干渉チェック装置１Ａによる干渉チェック処理の処理手順について説明する。直方体設定入力部１１へは、予めユーザによってモデル化指示１０１が入力される。直方体設定入力部１１は、モデル化指示１０１を包含体積比較部１３およびモデル化処理部１４に送る。また、モデル数上限入力部１２へは、予めユーザによってモデル上限数１０２が入力される。モデル数上限入力部１２は、モデル上限数１０２を、モデル化処理部１４に送る。
【００６３】
モデル化処理部１４は、モデル化指示１０１に従って、モデル化処理を実行する際に用いるモデル情報１０３（各モデルの個数、各モデルのタイプ、各モデルの寸法、各モデルの配置）をモデル候補記憶部１７に記憶させておく。モデル化処理部１４は、モデル情報１０３を、包含体積比較部１３に送る。
【００６４】
また、モデル化処理部１４は、モデル化指示１０１およびモデル上限数１０２に基づいて、モデル化対象を直方体から球体や円筒体などのモデルに置き換える。これにより、モデル化処理部１４は、モデル化対象にモデル化処理を実行し、複数のモデル候補を生成する。モデル化処理部１４は、モデル候補を、モデル情報１０３内に入れて、モデル候補記憶部１７に記憶させる。
【００６５】
ここで、モデル数と余剰包含体積比について説明する。一般的には、モデルの数を増やすほどモデルが包含する誤差量（モデルとモデル化対象との間の誤差量）が低減する。なお、誤差量は、単純に低減するわけではない。図６は、モデル上限数を１つとした場合のモデル例を示す図であり、図７は、モデル上限数を２つとした場合のモデル例を示す図である。
【００６６】
図６では、１つのモデルを使用可能という制限で、直方体形状（細長く薄い物体）５０を球体でモデル化した場合のモデル５１と、直方体形状５０を円筒体でモデル化した場合のモデル６０，６１とを示している。ここでの円筒体は、球体を掃引した形状であり、包含方向は長手方向が長い順に２パターンある。図６では、直方体形状５０の長手方向と長手方向が同じ円筒体でモデル化した場合のモデルをモデル６１で示し、直方体形状５０の長手方向と長手方向が垂直な円筒体でモデル化した場合のモデルをモデル６０で示している。
【００６７】
モデル上限数を１つとした場合に、直方体形状５０を球体でモデル化する際には、球体を用いたモデルが最小体積となるようにモデル化されるので、モデル５１が設定される。また、モデル上限数を１つとした場合に、直方体形状５０を円筒体でモデル化する際には、円筒体を用いたモデルが最小体積となるようにモデル化されるので、モデル６１が設定される。
【００６８】
図７では、２つまでのモデルを使用可能という制限で、直方体形状５０を球体でモデル化した場合のモデル５２Ａ，５２Ｂと、直方体形状５０を円筒体でモデル化した場合のモデル６２Ａ，６２Ｂおよびモデル６３Ａ，６３Ｂと、を示している。なお、モデル上限数を２つとした場合、１つの球体または１つの円筒体で直方体形状５０をモデル化してもよいが、図６と同様のモデルになるので、図７では、図示省略している。
【００６９】
図７では、直方体形状５０の長手方向と長手方向が同じ円筒体でモデル化した場合のモデルをモデル６３Ａ，６３Ｂで示し、直方体形状５０の長手方向と長手方向が垂直な円筒体でモデル化した場合のモデルをモデル６２Ａ，６２Ｂで示している。
【００７０】
モデル上限数を２つとした場合に、直方体形状５０を球体でモデル化する際には、球体を用いたモデルが最小体積となるようにモデル化されるので、モデル５２Ａ，５２Ｂが設定される。また、モデル上限数を２つとした場合に、直方体形状５０を円筒体でモデル化する際には、円筒体を用いたモデルが最小体積となるようにモデル化されるので、モデル６３Ａ，６３Ｂが設定される。
【００７１】
図６や図７に示すように、円筒体モデルを用いてモデル化すると、モデル化（包含体積）の無駄が少ないことが分かる。このことは、人間の試行錯誤によって推測できるが、球体と球体との間の干渉チェック、円筒体と円筒体との間の干渉チェックに必要な計算量は、球体の場合よりも数倍大きくなる。このため、モデル構成によっては計算量が大きくなりすぎることで、ロボットコントローラ２の処理全体に占める干渉チェック処理の処理量が大きくなりすぎることがある。
【００７２】
図８は、モデル数と余剰包含体積比との関係を示す図である。図８では、球体モデル（sphere）を用いた場合の、モデル数と余剰包含体積比との関係を、関係７１で示している。また、円筒体モデル（cylinder）を用いた場合の、モデル数と余剰包含体積比との関係を、関係７２，７３で示している。関係７２は、円筒体モデルにおける長手方向をＬとした場合の関係であり、関係７３は、長手方向をａとした場合の関係である。
【００７３】
図８における横軸が、モデル個数であり、縦軸が余剰包含体積比である。ここでの余剰包含体積比は、直方体（モデル化対象）のモデルをちょうど包み込んだ場合を０とし、直方体のモデルを余分に包含している体積を、直方体のモデルの体積で割った量を示したものである。換言すると、余剰包含体積比は、余剰包含している量を表す比率である。
【００７４】
図８に示すように、使用可能なモデル数がある程度大きい場合にモデル数を単純に増やしたような配置をすると、モデル数を増やすことで包含の余剰量が増えることがわかっている。
【００７５】
このような状況に対して、モデル化処理部１４は、予めユーザが指定した２つの情報（モデル化指示１０１およびモデル上限数１０２）を用いて、モデルタイプ数Ｍ×モデル数Ｎだけ、モデル化処理を実行する。なお、ここでのＮ，Ｍは自然数である。また、モデル数Ｎは、モデル上限数１０２で決められるものである。また、モデルタイプが「球体」、「円筒体」および「球体と円筒体」の場合、モデルタイプ数Ｍ＝３である。つまり、モデルタイプ数とは、使用するモデル数とモデルタイプとから計算できる全ての組み合わせの数である。この場合、モデル化処理部１４は、球体モデルを適用した場合について、Ｎ回のモデル化処理を実行し、円筒体モデルを適用した場合にＮ回のモデル化処理を実行し、球体および円筒体を適用した場合にＮ回のモデル化処理を実行する。これにより、モデル化処理部１４は、Ｍ×Ｎ回のモデル化処理を実行する。
【００７６】
モデル化処理部１４は、モデルタイプ毎のモデル化処理において、モデル数上限入力部１２から得られる上限数をＮとして、まずモデル自体をk個（k＝１〜Ｎ）の直方体に分割する処理を実施する。k分割の方法については、モデルタイプごとに異なる。これについては、それぞれのモデルタイプ別のモデル化ルールについて一例を以下に説明する。
【００７７】
モデルタイプに球体を用いる場合は、与えられたモデル化指示１０１に対して、できるだけ立方体に近い直方体に分割することで、効率の良い包含ができる。このため、分割の目標は、なるべく立方体に近いものを多く作るというルールとなる。球体モデルの場合、分割後の第ki番目（i＝１．．．，Ｎ）の直方体の端点Ｐ１ki，Ｐ２ki，Ｐ３ki，Ｐ４ki，Ｐ５ki，Ｐ６ki，Ｐ７ki，Ｐ８kiを用いて、中心位置Ｐcnt_kiを以下の式（１）で求めることができ、半径Ｒを以下の式（２）で求めることができる。なお、ｎｏｒｍ（*）は、*のベクトルのノルムを計算する関数である。
【００７８】
Ｐcnt_ki＝（Ｐ１ki＋Ｐ２ki＋Ｐ３ki＋Ｐ４ki＋Ｐ５ki＋Ｐ６ki＋Ｐ７ki＋Ｐ８ki）／８・・・（１）
Ｒ＝ｎｏｒｍ（Ｐcnt_ki−Ｐ１ki）・・・（２）
【００７９】
球体の場合については、使用可能なモデル数k（k＝１〜Ｎ）の条件下で、指定されたモデルタイプのモデル（球体あるいは円筒体）で最小包含体積を実現する配置が自動的に計算される。配置の方法としては、モデル化指示１０１で与えられる直方体を以下に示す指定した方向に指定した分割回数だけ分割し、分割された直方体に対して最小包含可能な球体が定義される。
【００８０】
以下、前述の直方体の３辺の長さである、Ｌ［ｍｍ］、ａ［ｍｍ］、ｂ［ｍｍ］（Ｌ≧ａ≧ｂ）を用いて説明する。分割方向および分割数については、Ｌ[ｍｍ]の定義方向の分割数がk_L[回]、ａ[ｍｍ]の定義方向の分割数がk_a[回]、ｂ[ｍｍ]の定義方向の分割数がk_b[回]と定義され、それぞれ、k_L＝０、k_a＝０、k_b＝０から開始する。まず、k_Lを増加させていき、後述の手順に従いk_Lが所定の条件を満たす場合にはk_aを増加させ、同様にk_aが所定の条件を満たす場合にはk_bを増加させる手順で分割を実施する。k_L、k_a、k_bはそれぞれの方向の分割数が増加するたびに１増加する。そして、モデル化指示１０１で与えられる直方体分割数をk_tot＝k_L＋k_a＋k_bで定義して、分割後の直方体の数（k_tot＋１）が、使用可能なモデル数kに達するまで、モデル化指示１０１で与えられる直方体を分割する。
【００８１】
なお、各方向の分割にあたっては、１回の分割では、１つの直方体を２つの直方体に分割するという手順で実施する。また、後述のように使用可能なモデル数kが決定されると、モデル化処理部１４は、モデル化処理において、k_totがkに達するまで所定の分割処理を行う。これにより、k_totがkに達し、分割された直方体が一意に決定されることとなる。
【００８２】
この場合の最小包含球体は、式（２）で表されるように分割された直方体の対角線を直径とする球体となる。以下、モデル化処理部１４におけるモデル化処理の所定の分割処理について説明する。まず、k_L分割した場合に、以下の条件（式（３））が成立しているか否かが確認される。成立していれば、引き続きk_Lが１つ増加して分割処理が実施される。
【００８３】
Ｌ／（k_L＋１）≧ａ・・・（３）
【００８４】
式（３）が成立していない場合、分割する長手方向がａ[mm]の定義方向に変更されて分割される。なお、分割方向を変更する場合は、Ｌ／（k_L＋１）＜ａが成立する初めのk_Lをk_L0とし、今回のkとの差を差Δk＝k−（k_L0＋１）とする。そして、Δk＞０である場合に、以下の条件（式（４））が成立しているか否かが確認される。
【００８５】
ａ≧Ｌ／（k_L0＋１）・・・（４）
【００８６】
式（４）の条件が成立している場合、長手方向をａ[mm]の定義方向とした２分割が実施される。なお、分割方法については、（k_L0＋１）≧Δkである場合は、（k_L0＋１）個の直方体のうちΔk個だけ、長手方向ａの方向に２分割を実施して分割完了となる。分割対象とするものは例えば手先に近い側からモデル化する。（k_L0＋１）＜Δkである場合は、k0回分だけ長手方向ａの方向に直方体を２分割する処理が実施された後に、次の条件（式（５））が成立しているか否かが確認される。
【００８７】
Ｌ／（k_L0＋１）≧ａ／２・・・（５）
【００８８】
式（５）が成立する場合は、分割方向が変更され、長手方向Ｌ[mm]の定義方向がk_L0＋１分割される。式（５）が成立しない場合は、長手方向ａ[mm]の定義方向の分割が継続される。式（５）までの処理をｂ方向の分割もあわせて一般化するために、それぞれの条件として各辺Ｌ，ａ，ｂを現在の各軸方向に対して分割する回数をk_Ln[回]、k_an[回]、k_bn[回]（ただし、ｎ＝０，１，２，…）とするとき、k_L0の定義のように、各段階において別の長手方向が生じた際の各軸方向（Ｌ方向、ａ方向、ｂ方向）で見た場合の最大の分割数をk_Ln、k_an、k_bnとして定義する。これらは、それぞれ各段階において定義され、長さ、Ｌ／k_Ln、ａ／k_an、ｂ／k_bnが各方向の分割数k_L、k_a、k_bが増える毎に比較される。この場合において、まずＬが分割され、以下の式（６）が成立した時点で分割方向がａに切り替えられる。そして、以下に示す式（７）が成立した時点で、以下の式（８）が成立しているか否かが確認される。
【００８９】
Ｌ／（k_Ln＋１）＜ａ／（k_an＋１）・・・（６）
【００９０】
Ｌ／（k_Ln＋１）≧ａ／（k_an＋１）・・・（７）
Ｌ／（k_Ln＋１）＜ａ／（k_bn＋１）・・・（８）
【００９１】
式（８）が成立している場合は、ｂ方向の分割数が１増やされる。一方で、式（８）が成立しない場合は、再びＬの分割数が１増やされる。なお、分割数が増やされる場合には、k_tot＝k_L＋k_a＋k_bがk−１に達した場合には、そこで分割が終了され、球体モデルが式（１）、式（２）に従って定義される。この処理を通してk＝１〜Ｎのそれぞれの場合に対して、分割したことによって定義される直方体とそれに対応する球体モデルの位置および寸法を得る。
【００９２】
モデルタイプに円筒体が用いられる場合は、正方形を端面にもつ長い形状の物体が生成されることで、効率的な包含が実現できる。このため、Ｌ方向の分割は実行されず、ａ方向あるいはｂ方向の分割が実行され、できるだけ分割後のＬ方向に垂直な断面が正方形に近づくように分割が続けられる。分割完了時の円筒体の求め方は、分割後の第ki番目（ｉ＝１，．．．，Ｎ）の直方体の端点Ｐ１ki，Ｐ２ki，Ｐ３ki，Ｐ４ki，Ｐ５ki，Ｐ６ki，Ｐ７ki，Ｐ８kiを用いて求められる。具体的には、中心位置（基準点）Ｐcnt_kiは、以下の式（９）で求められ、モデルの長さＬ、半径Ｒは、以下の式（１０）で求められる。
【００９３】
Ｌ方向に垂直な面に沿った点で拘束する座標系の中心位置Ｐcnt_kiに近い方を、Ｐ１ki，Ｐ２ki，Ｐ３ki，Ｐ４kiとし、遠い方をＰ５ki，Ｐ６ki，Ｐ７ki，Ｐ８kiとすると、以下の式（９）および式（１０）が成立する。
【００９４】
Ｐcnt_ki＝（Ｐ１ki＋Ｐ２ki＋Ｐ３ki＋Ｐ４ki）／４・・・（９）
Ｒ＝ｎｏｒｍ（Ｐcnt_ki−Ｐ１ki）・・・（１０）
【００９５】
なお、実際のk回の分割のルールについては、ａ，ｂ方向しか分割しないという条件以外は、球体方向と同様のルールで分割が続けられる。そして、分割が完了した時点で分割完了となり、式（９）および式（１０）に基づいて、各直方体をモデル化する円筒体が求められる。
【００９６】
次に、モデルタイプに球体と円筒体を混合した場合のモデル化について説明する。分割方法については、球体と同様の分割方法で分割が実行される。分割の結果として、モデルタイプを分割後のk個（k＝１〜Ｎ）のモデルに割り当てるルールのみが球体モデルの場合と異なる。基本的な方法として、各直方体に対して、球体と円筒体とをそれぞれ割り当てた後に、余剰体積比が最も小さいモデルを採用する方法が実行される。以上の処理を経る事で、最終的にＭ×Ｎ個のモデル候補が算出される。
【００９７】
次に、このＭ×Ｎ個のモデル候補に対して、包含体積比較部１３は、それぞれのモデル候補のk個のモデル位置およびモデル寸法と、各ユーザが設定した直方体の寸法と、に基づいて、モデル化余剰量１０４を算出する。
【００９８】
具体的には、包含体積比較部１３は、モデル情報１０３内からモデル候補のモデル位置およびモデル寸法を抽出するとともに、モデル化指示１０１内から直方体（モデル化対象）の寸法を抽出する。そして、包含体積比較部１３は、モデル位置およびモデル寸法からモデル候補の体積を算出し、モデル化対象の寸法からモデル化対象の体積を算出する。さらに、包含体積比較部１３は、モデル化対象の体積を基準として、モデル候補の体積に関するモデル化余剰量１０４（余剰包含体積比）を算出する。なお、モデル化余剰量としては、余剰包含体積比以外の値を定義してもよい。
【００９９】
ここで、余剰包含体積比の算出方法について説明する。余剰包含体積比をＷst、ユーザが定義した直方体の体積をＶblock［ｍｍ＾３］、分割後のモデルの体積の総和をＶmdl［ｍｍ＾３］、Ｖmdlの中でユーザが定義した直方体と重複しない空間分の体積をＶwst［ｍｍ＾３］、分割後のモデル同士が重複している領域の体積をＶovrp［ｍｍ＾３］とすると、ＷstとＶwstは、それぞれ以下の式（１１）と式（１２）で定義できる。
【０１００】
Ｗst＝Ｖwst／Ｖblock・・・（１１）
Ｖwst＝Ｖmdl−Ｖovrp−Ｖblock・・・（１２）
【０１０１】
換言すると、モデル化による余剰体積は、（余剰体積）＝（ユーザが定義した直方体を基にして、球・円筒でモデル化された総体積）−（球・円筒でモデル化された体積のうちの重なり部分の体積）−（ユーザが定義した直方体の体積）によって、算出することができる。
【０１０２】
包含体積比較部１３は、式（１１）および式（１２）に基づいて余剰包含体積比を算出し、モデル化余剰量１０４としてモデル候補記憶部１７に記憶させる。なお、モデル化余剰量としては、余剰包含体積比以外にも、ユーザが定義した直方体の面上の点から鉛直方向に向かって伸びる直線と、生成したモデルの領域と、に基づいて算出される値を適用してもよい。この場合、直方体の面上の点から鉛直方向に向かって伸びる直線と、生成したモデルの表面の交点（２点）が導出され、交点間の距離が余剰半径Ｒwstとして定義され、余剰半径Ｒwstがモデル化余剰量１０４として評価される。
【０１０３】
モデル候補記憶部１７は、Ｍ×Ｎ個のモデル候補のモデル情報１０３と、各モデル候補のモデル化余剰量１０４と、を対応付けて蓄積しておく。Ｍ×Ｎ個の全てのモデル候補に関する情報がモデル候補記憶部１７に蓄積された後、最小包含体積モデル決定部１８Ａは、モデル情報１０３（Ｍ×Ｎ個のモデル候補の、各モデルタイプ、各モデル位置、各モデル寸法およびそれぞれのモデル個数）と、各モデル候補のモデル化余剰量１０４と、をモデル候補情報１０７としてモデル候補記憶部１７から読み出す。
【０１０４】
また、処理演算量上限設定部１６は、ロボット制御装置設定記憶部１５から、各コントローラで有効となっているオプション処理機能情報、各処理機能の演算処理時間および１制御周期の演算処理時間とを、処理情報１０５として読み出す。
【０１０５】
そして、処理演算量上限設定部１６は、処理情報１０５に基づいて、ロボットコントローラ２が干渉チェックに使うことができる演算処理時間１０６を算出し、算出結果を最小包含体積モデル決定部１８Ａに出力する。
【０１０６】
最小包含体積モデル決定部１８Ａは、ロボット制御装置設定記憶部１５から、各ロボットコントローラ２において処理する単位モデル毎の干渉チェック判定時間（球体と球体、円筒体と球体、円筒体と円筒体）を、モデル単位演算量１０８として読み出す。モデル単位演算量１０８は、各モデル単位の干渉チェックに要する演算量であり、モデル単位毎に設定されている。モデル単位演算量１０８は、例えば、円筒体と球体との組み合わせ毎（球体と球体、円筒体と球体、円筒体と円筒体）に設定されている。
【０１０７】
また、最小包含体積モデル決定部１８Ａは、設定後モデル記憶部１９から、既に設定されているロボットアームに対するモデルタイプおよびそのモデル個数の情報を、設定後モデル情報１１０として読み出す。
【０１０８】
最小包含体積モデル決定部１８Ａは、設定後モデル情報１１０と、モデル候補情報１０７の中のモデルタイプおよびモデル個数と、から１回の干渉チェックに必要な計算処理回数を算出する。最小包含体積モデル決定部１８Ａは、球体と球体、円筒体と球体、円筒体と円筒体に対し、各計算処理回数をそれぞれ算出する。
【０１０９】
さらに、最小包含体積モデル決定部１８Ａは、算出した計算処理回数とモデル単位演算量１０８と、に基づいて、円筒体と球体との組み合わせ毎に、１回の干渉チェックに要する計算処理時間を算出する。最小包含体積モデル決定部１８Ａは、この算出処理を、モデルタイプ数×モデル数（Ｍ×Ｎ）回繰り返す。
【０１１０】
最小包含体積モデル決定部１８Ａは、Ｍ×Ｎ個の干渉チェックの計算処理時間と、干渉チェックに使うことのできる演算処理時間１０６と、を比較する。そして、最小包含体積モデル決定部１８Ａは、モデル候補の中から、演算処理時間１０６よりも小さい計算処理時間で干渉チェックを行なうことができるモデル候補のみを抽出する。
【０１１１】
そして、最小包含体積モデル決定部１８Ａは、抽出したモデル候補の中から、モデル化余剰量１０４が最も小さいモデル候補を選択し、選択したモデル候補を最小包含体積モデル１０９として設定後モデル記憶部１９に記憶させる。なお、最小包含体積モデル決定部１８Ａは、モデル候補を抽出できなかった場合には、表示装置（図示せず）などに、エラーなどを表示させる。
【０１１２】
干渉チェック部２０は、設定後モデル記憶部１９が記憶している最小包含体積モデル１０９を用いて、干渉チェックを実行する。具体的には、干渉チェック部２０は、最小包含体積モデル１０９に設定されているモデル寸法およびモデル位置拘束条件１１１を用いて、干渉チェックを実行する。
【０１１３】
干渉チェック部２０は、例えば、ロボット１０の関節角度に関する情報（ロボット関節角度情報）を用いてモデルの現在位置を更新する。そして、干渉チェック部２０は、モデル間の距離が０または所定距離以下になった場合に、ロボット１０などを停止させるための動作停止指令を駆動制御部２１に出力する。また、干渉チェック部２０は、干渉する可能性がない場合は、動作継続指令を駆動制御部２１に出力する。これにより、駆動制御部２１は、ロボット１０やハンド装置６に対して、動作変更指令値１１２に応じた駆動制御を行う。
【０１１４】
なお、干渉チェックシステム１００Ａの構成は、図１のような構成に限らず、他の構成であってもよい。図９は、干渉チェックシステムの他の構成例を示す図である。干渉チェックシステム１００Ｂは、ロボット生産システムと、コンピュータ９と、を含んで構成されている。そして、干渉チェックシステム１００Ｂのロボット生産システムは、ロボット１０と、ハンド装置６と、ロボットコントローラ２と、を含んで構成されている。
【０１１５】
このような、干渉チェックシステム１００Ｂに示すような構成であっても、ユーザはロボットコントローラ２にアクセスしてモデル設定を変更することができる。また、干渉チェックシステム１００Ａにおいて、干渉チェック装置１Ａの処理演算量上限設定部１６、干渉チェック部２０、駆動制御部２１などを別装置に配置してもよい。
【０１１６】
このように、ユーザがモデル化対象を包含する直方体形状（直方体寸法）およびモデル上限数１０２を指定すれば、モデル上限数１０２の範囲内で、計算コストを考慮したうえで最も包含体積が小さいモデルの品種選択を自動的に取得することができる。したがって、モデル化に対する知識が無い作業者でも、ユーザインターフェースを用いて容易に効率の良い干渉チェックを行うことが可能となる。
【０１１７】
このように実施の形態１によれば、モデル化指示１０１およびモデル上限数１０２に基づいて、モデルを設定するので、制限された計算コスト内でモデルの包含体積を最小にしたモデルを容易に生成することが可能になる。また、複数個のハンド装置６などをモデル化する場合には、許容するモデル上限数１０２を設定しておくことで、各ハンド装置６にどの程度詳細なモデル化を行うかをユーザが容易に振り分けることが可能となる。
【０１１８】
実施の形態２．
次に、図１０を用いてこの発明の実施の形態２について説明する。実施の形態２では、干渉チェック装置において、モデル数上限入力部１２からモデル上限数１０２を入力する代わりに、モデル化余剰量１０４に対する制限値（許容モデル化余剰量１１３）に基づいて、モデル上限数１０２を導出する。
【０１１９】
図１０は、実施の形態２に係る干渉チェック装置の構成を示すブロック図である。ここでは、干渉チェック装置１Ｘの一例である干渉チェック装置１Ｂの構成について説明する。図１０の各構成要素のうち図２に示す実施の形態１の干渉チェック装置１Ａと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１２０】
干渉チェック装置１Ｂは、直方体設定入力部１１と、包含体積比較部１３と、モデル化処理部１４と、モデル候補記憶部１７と、処理演算量上限設定部１６と、最小包含体積モデル決定部１８Ｂと、設定後モデル記憶部１９と、ロボット制御装置設定記憶部１５と、干渉チェック部２０と、駆動制御部２１と、許容モデル化余剰量入力部２３と、を備えている。
【０１２１】
許容モデル化余剰量入力部（制限値入力部）２３は、モデル化余剰量１０４に対する制限値（許容モデル化余剰量１１３）を入力するインタフェースである。許容モデル化余剰量１１３は、ユーザがマウスやキーボードなどを用いることによって許容モデル化余剰量入力部２３に入力される。許容モデル化余剰量入力部２３は、許容モデル化余剰量１１３を最小包含体積モデル決定部１８Ｂに送る。
【０１２２】
なお、本実施の形態では、許容モデル化余剰量１１３を設定しているので、モデル数の上限値（モデル上限数１０２）は設けなくてもよい。図１０では、干渉チェック装置１Ｂが、モデル数上限入力部１２を備えていない場合の構成を示している。
【０１２３】
モデル上限数１０２を設けない場合、最小包含体積モデル決定部１８Ｂは、演算処理時間１０６、モデル単位演算量１０８、設定後情報モデル１１０を用いて、モデル上限数１０２を導出する。具体的には、最小包含体積モデル決定部１８Ｂは、ロボットアーム間の干渉チェックに必要な判定処理時間Ｔarm［ｓ］を、既に設定されている設定後モデル情報１１０およびモデル単位演算量１０８から求める。そして、最小包含体積モデル決定部１８Ｂは、演算処理時間１０６からＴarmを引き算する。
【０１２４】
さらに、最小包含体積モデル決定部１８Ｂは、引き算結果（時間）を満たす上限まで、設定後モデル情報１１０に加えて増やすことができる球体のモデルの個数を、モデル単位演算量１０８を用いて求め、その個数を上限のモデル数Ｎmax（モデル上限数１０２）として定義する。換言すると、最小包含体積モデル決定部１８Ｂは、引き算結果の上限時間となるまで、設定後情報モデル１１０に球体モデルの個数を追加していき、引き算結果の上限時間となる、球体モデルの追加数を求める。これにより、干渉チェック装置１Ｂは、ロボットコントローラ２で処理可能な最大のモデル数Ｎmaxを算出することが可能となる。
【０１２５】
最小包含体積モデル決定部１８Ｂは、導出したモデル上限数１０２をモデル化処理部１４に送る。モデル化処理部１４は、実施の形態１と同様の処理によってモデル候補を生成し、モデル情報１０３としてモデル候補記憶部１７に記憶させる。また、包含体積比較部１３は、実施の形態１と同様の処理によって、モデル化余剰量１０４をモデル候補記憶部１７に記憶させる。
【０１２６】
そして、最小包含体積モデル決定部１８Ｂは、許容モデル化余剰量１１３とモデル化余剰量１０４とを比較する。そして、最小包含体積モデル決定部１８Ｂは、Ｍ×Ｎmax個のモデル候補のうち、許容モデル化余剰量１１３よりも大きいモデル候補を選択肢から除去する。最小包含体積モデル決定部１８Ｂは、全てのモデル候補を除去してしまった場合には、表示装置（図示せず）などに、エラーなどを表示させる。
【０１２７】
この後、最小包含体積モデル決定部１８Ｂは、実施の形態１と同様の処理によって、モデル候補の中から、モデル化余剰量１０４が最も小さいモデル候補を選択し、選択したモデル候補を最小包含体積モデル１０９として設定後モデル記憶部１９に記憶させる。
【０１２８】
実施の形態１では、ハンド装置６などをモデル化する場合に、許容するモデル化個数（モデル上限数１０２）を設定しておくことで、各ハンド装置６にどの程度詳細なモデル化を行うかを決めた。本実施の形態では、モデル化余剰量１０４に対する制限値として許容モデル化余剰量１１３を設定しておくことで、各ハンド装置６にどの程度詳細なモデル化を行うかを決めている。
【０１２９】
このように実施の形態２によれば、演算処理時間１０６、モデル単位演算量１０８を用いて、最大のモデル上限数１０２を設定し、許容モデル化余剰量１１３に基づいて、モデル候補を選択している。そして、全てのモデルをモデル化対象に適用する前提でモデル候補を設定し、モデル化余剰量１０４が最も小さいモデル候補を選択している。このため、ロボットコントローラ２に残っているリソースを、モデルに対して最大限に活用できるとともに、最も小さな包含体積でのモデル化を実現することができる。
【０１３０】
実施の形態３．
次に、図１１〜図１３を用いてこの発明の実施の形態３について説明する。実施の形態３では、ユーザがモデル化処理を実行する際に用いた直方体の生成部（モデル化処理部１４の一部）を、３次元ＣＡＤ（Computer  Aided  Design）情報を用いることで自動化する。
【０１３１】
図１１は、ＣＡＤ／ＣＡＭシステムを用いた、アセンブリ（ブロック）ごとの分割処理を説明するための図である。本実施の形態のモデル化処理部１４は、ＣＡＤ／ＣＡＭ（ＣＡＤ／ＣＡＥ）システムを備えている。モデル化処理部１４は、予め作成された３次元モデルを複数のアセンブリに分割し、アセンブリごとに直方体モデルに自動的に変換する。図１１では、変換前の３次元モデル（モデル化対象）を３次元モデル８１で示し、アセンブリごとに直方体モデルに変換した後の３次元モデルを３次元モデル８２で示している。
【０１３２】
図１２は、実施の形態３に係る干渉チェック装置の構成を示すブロック図である。ここでは、干渉チェック装置１Ｘの一例である干渉チェック装置１Ｃの構成について説明する。図１２の各構成要素のうち図２に示す実施の形態１の干渉チェック装置１Ａと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１３３】
干渉チェック装置１Ｃは、干渉チェック装置１Ａの各構成要素に加えて、アセンブリ外形抽出部（変換部）８２と、直方体記憶部８３と、を備えている。なお、干渉チェック装置１Ｃは、干渉チェック装置１Ｂの各構成要素に加えて、アセンブリ外形抽出部８２と、直方体記憶部８３と、を備える構成としてもよい。
【０１３４】
３次元形状データ入力部２２は、モデル化対象の３次元形状データ２０１を入力するインタフェースである。３次元形状データ入力部２２は、モデル化対象としての３次元形状データ２０１をアセンブリ外形抽出部８２に送る。アセンブリ外形抽出部８２は、種々の寸法の直方体によってモデル化対象を複数のアセンブリに分割し、分割後の各アセンブリ外形を抽出する。アセンブリ外形抽出部８２は、各アセンブリ外形（直方体）を直方体記憶部８３に記憶させる。直方体記憶部８３は、各アセンブリ外形（直方体）を記憶するメモリなどである。本実施の形態のモデル化処理部１４は、直方体記憶部８３が記憶している各アセンブリ外形を用いて、モデル化対象へのモデル化処理を実行する。
【０１３５】
なお、モデル化対象の体積Ｖcadを取得可能な場合は、干渉チェック装置１Ｃが、体積Ｖcadを用いて余剰包含体積比Ｗstを算出してもよい。例えば、３次元形状データ入力部２２に３次元形状データ２０１が入力されると、３次元形状データ入力部２２は、３次元形状データ２０１を包含体積比較部１３に入力する。包含体積比較部１３は、余剰包含体積比を計算する際に、ユーザが定義した直方体の体積Ｖblockの代わりに、３次元形状データ２０１が保有している又は３次元形状データ２０１から計算が可能な体積Ｖcadを用いて、余剰包含体積比Ｗstを算出する。余剰包含体積比Ｗstは、以下の式（１３）のように表されるので、包含体積比較部１３は、式（１３）を用いて余剰包含体積比Ｗstを算出する。
【０１３６】
Ｖwst＝Ｖmdl−Ｖovrp−Ｖcad・・・（１３）
【０１３７】
換言すると、３次元形状データ２０１の体積Ｖcadを得ることができる場合には、包含体積比較部１３が、（余剰体積）＝（ユーザが定義した直方体を元にして、球・円筒でモデル化された総体積）−（球・円筒でモデル化された体積のうちの重なり部分の体積）−（３次元ＣＡＤで算出される体積）によって、余剰包含体積比Ｗstを算出することができる。
【０１３８】
このように、３次元形状データ入力部２２から３次元形状データ２０１の体積Ｖcadが入力される場合には、干渉チェック装置１Ｃが、アセンブリ外形抽出部８２、直方体記憶部８３を有していなくてもよい。なお、式（１３）で表される定義は、３次元形状データ入力部２２から３次元形状データ２０１を利用できる場合に、式（１３）で表される定義に切り替えてもよい。また、干渉チェック装置１Ａ，１Ｂが、３次元形状データ入力部２２を備える構成としてもよい。
【０１３９】
つぎに、干渉チェック装置１Ａ〜１Ｃのハードウェア構成について説明する。なお、干渉チェック装置１Ａ〜１Ｃは、同様の構成を有しているので、ここでは干渉チェック装置１Ａの構成について説明する。
【０１４０】
図１３は、干渉チェック装置のハードウェア構成を示す図である。干渉チェック装置１Ａは、ＣＰＵ（Central  Processing  Unit）９１、ＲＯＭ（Read  Only  Memory）９２、ＲＡＭ（Random  Access  Memory）９３、表示部９４、入力部９５を有している。干渉チェック装置１Ａでは、これらのＣＰＵ９１、ＲＯＭ９２、ＲＡＭ９３、表示部９４、入力部９５がバスラインＢを介して接続されている。
【０１４１】
ＣＰＵ９１は、コンピュータプログラムである干渉チェックプログラム９０を用いて干渉チェックを行う。表示部９４は、液晶モニタなどの表示装置であり、ＣＰＵ９１からの指示に基づいて、モデル化対象、モデル候補、モデルなどを表示する。入力部９５は、マウスやキーボードを備えて構成され、使用者から外部入力される指示情報（干渉チェックに必要なパラメータ等）を入力する。入力部９５へ入力された指示情報は、ＣＰＵ９１へ送られる。
【０１４２】
干渉チェックプログラム９０は、ＲＯＭ９２内に格納されており、バスラインＢを介してＲＡＭ９３へロードされる。ＣＰＵ９１はＲＡＭ９３内にロードされた干渉チェックプログラム９０を実行する。具体的には、干渉チェック装置１Ａでは、使用者による入力部９５からの指示入力に従って、ＣＰＵ９１がＲＯＭ９２内から干渉チェックプログラム９０を読み出してＲＡＭ９３内のプログラム格納領域に展開して各種処理を実行する。ＣＰＵ９１は、この各種処理に際して生じる各種データをＲＡＭ９３内に形成されるデータ格納領域に一時的に記憶させておく。
【０１４３】
干渉チェック装置１Ａで実行される干渉チェックプログラム９０は、包含体積比較部１３、モデル化処理部１４、処理演算量上限設定部１６、最小包含体積モデル決定部１８Ａ、干渉チェック部２０、駆動制御部２１、を含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
【０１４４】
このように実施の形態３によれば、ユーザがモデルの寸法を調べることなく、モデル体積の大きさを抑制しつつ、ロボットコントローラ２が許容可能なモデル数以下のモデルを用いて容易に干渉チェックを行うことが可能となる。
【０１４５】
実施の形態４．
次に、図１４を用いてこの発明の実施の形態４について説明する。実施の形態４では、予め干渉チェック装置の外部装置によってモデル上限数１０２が演算されたうえで、モデル上限数１０２が干渉チェック装置内に入力される。すなわち、ユーザが図２に示したモデル数上限入力部１２からモデル上限数１０２を入力するのではなく、外部装置で演算されたモデル上限数１０２が、干渉チェック装置内に入力される。
【０１４６】
モデル上限数１０２を演算する外部装置は、例えば、ロボットコントローラ２内の干渉チェック装置以外の装置、ロボットコントローラ２と通信可能なＰＬＣ内の制御装置、またはコンピュータ９である。コンピュータ９は、例えば、ロボット設定用ソフトウェアを用いてモデル上限数１０２を演算する。なお、以下では、モデル上限数１０２を演算する外部装置が、コンピュータ９である場合について説明する。
【０１４７】
図１４は、実施の形態４に係る干渉チェック装置の構成を示すブロック図である。ここでは、干渉チェック装置１Ｘの一例である干渉チェック装置１Ｄの構成について説明する。図１４の各構成要素のうち図２に示す実施の形態１の干渉チェック装置１Ａと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１４８】
本実施の形態の干渉チェックシステム１００Ａは、モデル数上限算出装置２４を備えている。なお、モデル数上限算出装置２４は、干渉チェックシステム１００Ｂ内に配置してもよい。
【０１４９】
モデル数上限算出装置２４へは、干渉チェック対象として配置するハンドや周辺機器などの１つの装置単位をオブジェクトとした場合のオブジェクト数２０２がユーザによって入力される。モデル数上限算出装置２４は、図１４に示すようにモデル数上限入力部１２の前段に配置されている。モデル数上限算出装置２４は、オブジェクト数２０２に基づいて、モデル上限数１０２を演算する。
【０１５０】
本実施の形態では、オブジェクトは、直方体１つで定義され、定義された直方体をオブジェクト１つと数えることとする。例えば、１つのハンドに対して１つの直方体を定義する場合、１つのハンドのオブジェクトは１つである。また、２つのハンドと１つのビジョンセンサとの合計３つの部位のそれぞれに直方体を当てはめる場合、オブジェクトは３つである。
【０１５１】
ユーザは、配置予定の装置全てのオブジェクト数２０２と、各オブジェクトの名称と、をオブジェクト情報として予めモデル数上限算出装置２４へ入力しておく。すなわち、各オブジェクト情報は、オブジェクトの全数量と、オブジェクトの付随情報としてオブジェクトに割り当てられているモデル数と、を含んでいる。
【０１５２】
モデル数上限算出装置２４は、直方体設定入力部１１に入力された設定で定義される、直方体を包含するために使えるモデル上限数１０２を、自動的に演算する。モデル数上限算出装置２４は、全モデル数から各オブジェクトに割り当てるモデル数を差し引いたモデル数（モデル上限数１０２）を算出する処理を実行する。この処理は、ロボットコントローラ２、上述したＰＬＣなどの制御装置またはコンピュータ９などが自動的に演算する。
【０１５３】
このモデル上限数１０２は、今回直方体設定入力部１１に入力された直方体を包含するモデルの上限値である。モデル上限数１０２は、例えば以下のように決定する。モデル数上限算出装置２４は、最低１つ以上は各オブジェクトにモデルが割り当てられるような演算を実施する。したがって、初期値は、１つのオブジェクトに対して１つのモデルが割り当てられている状態である。全てのオブジェクトのうち、既に複数のオブジェクトに対して１つ以上のモデルが割り当てられている場合は、その情報を設定後モデル記憶部１９から取得しておく。
【０１５４】
モデル数上限算出装置２４は、予め処理演算量上限設定部１６から処理演算量上限１０６を取得しておき、処理演算量上限１０６から許容されるモデル数上限を演算しておく。そして、モデル数上限算出装置２４は、許容されるモデル数上限からオブジェクトに割り当てられているモデル数の総和を減算し、減算した値から今回適用可能なモデル上限数１０２を決定する。
【０１５５】
ただし、モデル数上限１０２は、処理演算量の上限と関連しているので、ユーザによって一度設定されたオブジェクト数上限が、オブジェクト数の設定後に変更（増減）される場合、各オブジェクトに割り当て可能なモデル数が変動する。このため、処理演算量の上限を満たす最小包含体積のモデル割り当になっていないことがある。そこで、既にモデル化している物体に対して、モデル数上限１０２を変化させる処理が必要になる。
【０１５６】
このため、オブジェクト数を変化させた場合は、コンピュータ９上のロボット設定用ソフトウェアなどが、再度モデル設定計算を行う。これにより、モデル数上限算出装置２４は、各オブジェクトのモデル数上限１０２を、全体の包含体積が最小になるように再設定する。
【０１５７】
また、モデル上限数１０２は、上記のような枠組みでモデル数上限算出装置２４によって決定されているが、ロボットコントローラ２内の他の外部装置などが予め初期値として指定してもよい。換言すると、ユーザがオブジェクト数を指定していなくても、事前設定値（初期値）としてメーカー側が想定したオブジェクト数を設定してもよい。例えば、オブジェクト数は１つのように予め設定しておく。なお、モデル上限数１０２自体をロボットコントローラ２内の他の外部装置などが予め指定してもよい。この場合、例えば、モデル数は２０個のように予め設定しておく。
【０１５８】
また図１４に示すオブジェクト数２０２は、３Ｄ−ＣＡＤの取り込み時に自動的に判断してもよい。この場合、例えば、オブジェクトをアセンブリ単位で１つの直方体とみなしたうえで、オブジェクト数が自動的にカウントされる。
【０１５９】
このように実施の形態４によれば、モデル数上限算出装置２４を用いて、最大のモデル上限数１０２を設定し、このモデル上限数１０２に基づいて、モデル候補を選択している。そして、モデル上限数で使用可能な全てのモデルをモデル化対象に適用する前提でモデル候補を設定し、モデル化余剰量１０４が最も小さいモデル候補を選択している。このため、ロボットコントローラ２に残っているリソースを、モデルに対して最大限に活用できるとともに、最も小さな包含体積でのモデル化を実現することができる。特に、実施の形態１と比べると、個別のモデル上限数１０２の設定ではなく、全体のオブジェクト数を予め入力している。このため、全てのオブジェクトを考慮したうえで、現在のモデル化対象全体に対してモデル化余剰量１０４の合計が最も小さい構成を設定することができる。
【産業上の利用可能性】
【０１６０】
以上のように、本発明に係る干渉チェック装置は、ロボット同士あるいはロボットと周辺機器との間の干渉チェックに適している。
【符号の説明】
【０１６１】
１Ｘ，１Ａ〜１Ｄ  干渉チェック装置、２  ロボットコントローラ、５  周辺機器、６  ハンド装置、７  ビジョンセンサ、９  コンピュータ、１０  ロボット、１１  直方体設定入力部、１２  モデル数上限入力部、１３  包含体積比較部、１４  モデル化処理部、１５  ロボット制御装置設定記憶部、１６  処理演算量上限設定部、１７  モデル候補記憶部、１８Ａ，１８Ｂ  最小包含体積モデル決定部、１９  設定後モデル記憶部、２０  干渉チェック部、２１  駆動制御部、２２  ３次元形状データ入力部、２３  許容モデル化余剰量入力部、２４  モデル数上限算出装置、８２  アセンブリ外形抽出部、８３  直方体記憶部、１００Ａ，１００Ｂ  干渉チェックシステム。
【図１】
0005872077.tif 000002
【図２】
0005872077.tif 000003
【図３】
0005872077.tif 000004
【図４】
0005872077.tif 000005
【図５】
0005872077.tif 000006
【図６】
0005872077.tif 000007
【図７】
0005872077.tif 000008
【図８】
0005872077.tif 000009
【図９】
0005872077.tif 000010
【図１０】
0005872077.tif 000011
【図１１】
0005872077.tif 000012
【図１２】
0005872077.tif 000013
【図１３】
0005872077.tif 000014
【図１４】
0005872077.tif 000015