JP3556644B2 - 最接近点探索装置 - Google Patents
最接近点探索装置 Download PDFInfo
- Publication number
- JP3556644B2 JP3556644B2 JP2002061723A JP2002061723A JP3556644B2 JP 3556644 B2 JP3556644 B2 JP 3556644B2 JP 2002061723 A JP2002061723 A JP 2002061723A JP 2002061723 A JP2002061723 A JP 2002061723A JP 3556644 B2 JP3556644 B2 JP 3556644B2
- Authority
- JP
- Japan
- Prior art keywords
- convex
- point
- closest
- polygon
- polyhedron
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Image Analysis (AREA)
Description
【産業上の利用分野】
本発明はロボットや自走車の運用における衝突回避や経路通路設計(パスプランニング)に適用できる最接近点探索装置に係わり、特にコンピュータ上に構築された複数の物体の形状モデル(CGモデル)に対してそれらが互いに離れているか、接触しているか、干渉しているかを判定でき、しかも、物体間の最接近点、接触点、距離をリアルタイムに算出できる最接近点探索装置に関する。
本発明は、機械設計用CADシステム、マニピュレータや自走車等の移動ロボットのパス生成、マルチメディアにおけるアニメーション作成、ゲームソフトウェア等コンピュータグラフィックスを応用した様々な分野に適用できる。
【0002】
【従来の技術】
通常、ロボットはオペレータによる遠隔操作、あるいは計算機上で作成したデータに基づくプログラム操作により運用される。ロボットを遠隔操作する場合には、オペレータはロボットを取り囲む他の物体との不意な衝突、干渉を避けながら運用しなければならない。又、ロボットをプログラム操作する場合には、予め、計算機上にて障害物との衝突や干渉が生じないようにパスプランニングを行う必要がある。
一方、自走車を運用する場合、自走車は走行しようとする方向の環境地図データをセンサを通して取り込み、障害物を回避しながら自律走行し、あるいは、予め計算機上に格納されている地図情報に基づいて作成されたパスに従ってプログラム走行する。これらの場合にも、ロボットの場合と同じように逐次的な衝突回避や干渉の生じないパスプランニングが必要となる。
【0003】
物体間の最接近点及び距離を測定することができれば、障害物を回避しながらロボットあるいは自走車を移動することができ、あるいは衝突や干渉が生じない走行経路をプログラムしてプログラム走行することができる。このため、ロボット、自走車における逐次的な衝突回避、事前のパスプランニングにおいて、物体間の最接近点探索方法が要望されている。すなわち、複数の物体が存在する時、それらが互いに離れているか、接触しているか、干渉しているかを判定し、かつ、物体間の最接近点(接触又は干渉している場合には、各々、接触点または干渉点)及び距離を効率良く算出する最接近点探索方法が要望されている。
【0004】
最接近点探索問題に対する基本的なアプローチは、対象となる物体の形状、位置、姿勢データを計算機上に取り込み、初等幾何学的計算により解決する方法である。
通常、CAD分野で使われているグラフィックシミュレータでは、平面的な凸多角形(凸ポリゴン)を複数枚貼付けて1つの物体を表現している。従って、2つの物体間の干渉状態をチェックする最も素朴な方法は、各々の物体を構成している凸ポリゴン間に対する最接近点探索を全ての凸ポリゴンの組み合わせについて行うものである。具体的には、空間上に任意に配置された2つの物体を構成する各凸ポリゴンに対し、最も近接しているポイントを各格子点(頂点)、辺、面について探索し、最接近距離を算出することである。勿論、最接近距離がゼロの場合には、2つの物体は干渉状態にあるといえる。この方法では、2つの物体を表現している格子点数をM1,M2としたときに、O(M1・M2)の計算負荷を伴う。尚、O( )は計算負荷のオーダを示す関数である。
【0005】
O(M1・M2)の計算負荷を減らすためのアルゴリズムの開発が、主に、計算幾何学の分野において研究されており、O(MlogM)(M=M1+M2)という漸近特性(M1,M2が非常に大きい場合)を持ったアルゴリズムが開発されている。この種のアルゴリズムは理論的に正しいが、いずれも漸近特性に注目したものであり、M1,M2が実用的な大きさの場合にどれだけ計算負荷が減るかといった実際的な議論が欠けており、真に実用的なアルゴリズムとはいえなかった。
一方、歴史的には、各格子点間の垂直2等分線を結んで各格子点の近接関係を図示するボロノイ(Voronoi)図を使った方法や、三次元空間を象限毎に次々に八等分して対象の専有領域をデータベース化するオクトツリー(oct−tree)の方法による最接近点の探索法も知られている。これらの方法はいずれも対象が静的に一定である場合に有効であり、分解や組み立てなどにより対象が動的に次々と変化していく場合には不向きであった。
【0006】
さて、最接近点探索アルゴリズムの実用度を上げるためには、次の1)〜5)に示す要件をカバーする必要がある。
1) 非凸多面体への拡張
計算幾何学などで従来開発されてきた最接近点探索アルゴリズムでは、取り扱う対象を凸多面体に限っている(図69(a)参照)。しかし、実際には、図69(b)に示すように非凸多面体との干渉問題が多数発生する。このため、最接近点探索アルゴリズムを非凸多面体まで拡張する必要がある。尚、凸多面体(convex polyhedron)とは多面体内部の任意の2点を結ぶ線分がその多面体の内部に含まれるような多面体である。
【0007】
2) 非単連結多面体への拡張
トラス(truss)の組み立てや配管工事などでは穴が開いた物体との干渉性を考慮する必要がある。図69(c)はトラスの組み立てを示すもので、TRはトラス、RBHはロボットハンドである。
3) 一般自由曲面を持った物体への拡張
一般自由曲面を持った物体は、グラフィックシミュレータ上では複数のポリゴンの張り合わせで表現される。図69(d)は自由曲面を有するアンテナの組み立てを示すもので、ATはアンテナ、RBHはロボットハンドである。
一般自由曲面を持った物体との干渉問題を扱うには、ポリゴン数を増やして近似の精度を上げるか、または曲面をスプライン曲面などで解析的に表現して取り扱う必要がある。
【0008】
4) 環境変動への対応性
干渉問題で取り扱う対象物は、いつも静止しているとは限らず、一般には分解、運搬、組み立てなどの作業を通して環境が動的に変動していく。凸多面体を組み合わせて非凸の構造物を組み上げていくといったことは、しばしば発生することである。又、アームの各リングを凸多面体で表現した時、アーム自身は動的に動く凸多面体の集合体(一般には非凸物体)とみなすことができる。この時、図70(a)に示すようにアームAM先端のロボットハンドRBHで対象物体OBJを把持しようとする場合には、ハンドと対象物体との干渉だけでなくアーム肘と他の物体OBSとの干渉も考慮しなければならない。実用的なアルゴリズムはこのような動的な環境変動に柔軟、迅速に対応できるものでなければならない。
【0009】
5) 形状変化への対応
対象物体が柔軟性を有する場合などでは、物体自身の形状が動的に変化する(図70(b)参照)。これは4) の環境変動の一種とも捉えることができるが、取扱は形状変化の方が難しい。
このため、Michigan大学のGilbert教授は凸多面体間の最接近点探索問題に対する極めて実用的な方法(Gilbert法という)を提案している。このGilbert法によれば、アルゴリズムの計算負荷は、非常に病的な例外を除いてほとんどの凸多面体の組合せに対してO(M1+M2)となる。又、非凸多面体を複数の凸ポリゴンの集合とみなすことによりGilbert法を非凸多面体へ拡張している。以下、Gilbert法について詳述する。
【0010】
Gilbert 法による凸多面体間の最接近点探索アルゴリズム
(a) 物体の表現法と物体間の距離
三次元空間上の凸多面体Xを考える。この時、X内の任意の点xは、Xの境界に位置する格子点(頂点)xi∈Xを使って以下のように表現できる。
x=Σλi・xi (i=1〜m) :xi∈X,λi≧0
λ1+λ2+・・・+λm=1 (1)
上式を格子点の集合[xi:i=1、2、・・・m}で張られる凸多面体の定義としてもよい。[xi}のことを凸多面体Xのベースという。
今、2つの凸多面体K1,K2を考える。この時、2物体間の最接近距離は以下で定義される。
【0011】
d(K1,K2)=min{|x−y|:x∈K1,y∈K2) (2)
ここで、x,yは位置ベクトルであり、
|x−y|=√{(x1−y1)2+(x2−y2)2+(x3−y3)}2
である。従って、2つの凸多面体間の最接近点を求める問題は、(2)式を満足するようなx,yを以下の式で求めることである。
x=Σλi・xi (i=1〜m1) :xi∈K1,λi≧0
λ1+λ2+・・・+λm1=1
y=Σμi・yi (i=1〜m2) :yi∈K2,μi≧0
μ1+μ2+・・・+μm2=1 (3)
単純に考えると(3)式では、λとμの両方が変数であるから計算負荷は、O(M1・M2)である。(2)式は以下のように書き換えることが可能である。
【0012】
任意の物体K1,K2の和集合、差集合をK1±K2={x±y:x∈K1,y∈K2}で定義する時、(2)式は次式と等価になる。
d12=min{|z|:z∈K},K=K1−K2 (4)
尚、物体K1,K2の和集合とは各物体の任意の位置ベクトルx,yのベクトル加算により得られる位置ベクトルzの集合で構成された物体であり、物体X1,X2の差集合とは各物体の任意の位置ベクトルx,yのベクトル減算により得られる位置ベクトルzの集合で構成された物体である。(4)式は、最接近点の探索問題が座標原点Oから多面体Kに対する最接近点を求める問題に等しいことを物語っている。多面体K1,K2がいずれも凸多面体の場合は、多面体Kも凸多面体になり、凸多面体Kを構成する格子点の集合Zは以下で与えられる。
【0013】
Z={zi=xj−yk:xj∈K1,yk∈K2,
i=1,2,・・・m1m2
j=1,2,・・・m1
k=1,2,・・・m2} (5)
以上をまとめると、以下の結論が導出される。すなわち、「2つの凸多面体K1,K2間の最接近点を求める問題は、座標原点Oから凸多面体K(=K1−K2)への最接近点を求める問題に等しい。但し、Kはm1m2個(m1:K1の格子点数、m2:K2の格子点数)の格子点{zi=xj−yk}で張られた凸多面体である。」
【0014】
(b) Gilbert法の概略
(a)における結論より、2つの凸多面体K1,K2間の最接近点を求める問題は、一点Oから凸多面体Kへの最接近点を求める問題に帰着される。
Gilbert法では、この事実と次に述べるサポート関数(Support Function)と呼ばれる関数を使用する。凸多面体のサポート関数hx(η):R3→Rとは以下で定義されるものである。
hx(η)=max{xi・η:i=1〜m} (6)
ここで、{xi}は凸多面体Xのベースとなる格子点の集合であり、・はベクトル内積を意味しており、又、R3→Rは3次元より1次元への変換を意味している。従って、(6)式のサポート関数hx(η)は、図71に示すようにベクトルηを決めた時、その方向に対して原点から最も離れた凸多面体Xの格子点を求めることを意味している。今、座標原点Oからこの格子点に向かうベクトル(位置ベクトル)を sx(η)とすると(6)式は以下のようになる。
【0015】
hx(η)=sx(η)・η (7)
Gilbert法による最接近点探索の計算負荷はO(M1+M2)となる。その理由は、凸多面体K1,K2の差集合Kのサポート関数hk(η)、位置ベクトルsk(η)に対して以下の法則が成り立つことに基づいている。
hk(η)=hk1(η)+hk2(−η),
sk(η)=sk1(η)−sk2(−η) (8)
上式は、m1m2個の格子点からなる凸多面体K=K1−K2に対するサポート関数が凸多面体K1,K2に対するサポート関数の和で構成されることを意味している。従って、(6)式の定義から明らかなように、hx(η)を求める計算負荷はO(M1+M2)となる。Gilbert法による最接近点探索の本質は、サポート関数hx(η)を繰返し使用することによって最接近点に漸次、近ずいていくところにある。すなわち、Gilbert法は、以下の4つのプロセスから構成される。
【0016】
(c) Gilbert法による最接近点探索アルゴリズム
1) 初期化
凸多面体K1,K2に対し、差凸多面体K1−K2をKとする。凸多面体K内の任意の点を取り、それらをy1,y2・・・yp∈Kとする。尚、y1,y2・・・ypは必ずも凸多面体Kのベース格子点である必要はない。pは一般に1≦p≦4とする。この時、
初期格子点の集合Vk(=V0)を
Vk={y1,y2・・・yp}, k=0
とする。
【0017】
2) 基本多面体に対する最接近点探索
要素数p(4個以下)からなる格子点の集合Vkに対し、
νk=ν(co Vk) (9)
を計算する。ここで、co Vkは、格子点集合Vkをベースとする凸多面体、ν(X)は座標原点Oから凸多面体Xへの最接近点ベクトル(位置ベクトル)を表す。
【0018】
3)最接近点判定
R3→Rへの関数gK(x)を以下のように定義する。
gK(x)=|x|2+hK(−x)
上式において右辺第1項は、凸多面体K上の所定ポイントの位置ベクトルをxとするとき、該ポイント迄の距離の二乗を意味し、右辺第2項はベクトルx方向に原点から最も近い格子点位置ベクトルとベクトル−xとの内積を意味する。換言すれば、hK(−x)は格子点の位置ベクトルとxの内積のうち最小となる値である。
gK(x)は最接近点の判定関数となり、xが原点OからKへの最接近点であるならば、また、その時に限りgK(x)=0となる。尚、gK(x)が最接近点の判定関数となることは証明できるが割愛する。詳細は、「IEEE JOUNAL OF ROBOTICS AND AUTOMATION, VOL.4, NO.2, APRIL 1988、頁193〜203「A Fast Procedure forComputing the Distance Between Complex Objects in Three−Dimensional Space」を参照されたい。
以上より、もし、(9)式で求めたνkに対し、
gK(νk)=0 (10)
ならば、ν(K)=νkとし、最接近点探索処理を終了する。
【0019】
4) kのインクリメント
(10)式が成立しなければ、kをインクリメントする。すなわち、V(k+1)を
V(k+1)=Vk′∪{sK(−νk)] (11)
とする。ここで、Vk′はVk′⊆Vkであり、かつ、νk∈co Vk′となるVkの最小部分集合である。
(11)式は、Vkの部分集合Vk′(νkを含む)と、Vkにおける最接近点ベクトルνk方向に原点から最も近い最小の格子点sK(−νk)を含む集合を意味する。
以上から、(10)式が成立しなければ、(11)式によりkをインクリメントして2)
へ戻り以降の処理を(10)式が成立するまで繰り返す。
【0020】
(d) Gilbert法による最接近点探索アルゴリズムの適用
上記Gilbert法による最接近点探索アルゴリズムの理解度を深めるために図72を参照して最接近点探索を説明する。
図72において、初期値V0={z1,z2,z3}とし、V0における最接近点ベクトルを求めるとν0となる。この時、(10)式は満たされないからkをインクリメントする。
V1=V0′∪{sk(−ν0)]=V0′∪{z4}
であり、又、V0′={z2,z3}となるからV1={z2,z3,z4}となる。
V1における最接近点ベクトルを求めるとν1となる。この時、(10)式は満たされないからkをインクリメントする。
【0021】
V2=V1′∪{sk(−ν1)]=V1′∪{z5}
であり、又、V1′={z3,z4}となるからV2={z3,z4,z5}となる。
V1における最接近点ベクトルを求めるとν2となり、このν2により(10)式が満たされ、ν2は最接近点ベクトルとなり、
ν2=ν(K)∈co {z4,z5}
となる。この結果、最接近距離dはd=|ν2|となる。
同じことを初期値を変えて行ってみる。図72において、初期値V0={z2}とし、V0における最接近点ベクトルを求めるとν0′(=z2)となる。この時、(10)式は満たされないからkをインクリメントする。
V1=V0′∪{sK(−ν0′)]=V0′∪{z5}
であり、又、V0′={z2}であるからV1={z2,z5}となる。
【0022】
V1における最接近点ベクトルを求めるとν1′となる。この時、(10)式は満たされないからkをインクリメントする。
V2=V1′∪{sK(−ν1′)]=V1′∪{z4}
であり、又、V1′={z2,z5}であるからV2={z2,z4,z5}となる。
V2における最接近点ベクトルを求めるとν2′(=ν2)となり、このν2′により(10)式が満たされ、ν2は最接近点ベクトルとなり、
ν2′=ν2=ν(K)∈co {z4,z5}
となる。この結果、最接近距離dはd=|ν2|となり、初期値V0を
V0={z1,z2,z3}
とした場合と同じ結果が得られる。
【0023】
(e) 考察
上記アルゴリズムにおいて、計算を要するのは、(9),(10),(11)式の部分である。まず、(9)式であるが、この式の意味は、つまり1点Oから点、辺、面、または4面体への最接近点を計算せよということである。この部分は、凸多面体の複雑度には関係しない部分であり、後述するようなサブルーチンを予め用意しておくことにより実行できる。
次に、(10)式の計算であるが、gK(νk)のhK(−νk)を計算するに際しては(8)式の分解則を使用する。この部分は、(6)式に示すように、各凸多面体K1,K2のベース格子点に対する内積(ベース格子点の位置ベクトルとνkの内積)を評価するだけで計算される。すなわち、hK(−νk)はベース格子点の位置ベクトルとνkの内積のうち最小のものを求めることであり、従って、この部分の計算負荷はO(M1+M2)である。
【0024】
(11)式は、gK(νk)を計算する過程でsK(−νk)が求まり、後述する補題アルゴリズムから自動的にVk′が求まるため、この部分の計算負荷はM1,M2に依存しない無視可能な定数(negligible constant)である。
Gilbert法の優れたところは、ほとんど全ての凸多面体に対し、上記1) 〜4) の4つのプロセスを数回繰り返すだけで最接近点に到達することである。多くの場合、3〜4回の繰返しにより収束することが数値実験により確かめられている。
以上より、Gilbert法による最接近点探索法の本質を一言でいうならば、次のように要約できる。すなわち、
2つの凸多面体K1,K2間の最接近点は、凸多面体K=K1−K2に対し、判定関数gK(x)=|x|2+hK(−x)を繰返し適用することによって求めることができる。そして、繰返しの回数は殆どの凸多面体に対して3ないし4回で収束する。
【0025】
なお、Gilbert法の初期格子点(初期値)V0は一般には任意であるが、以下に示すような各凸多面体の重心差分方向の格子点から出発するのが効率的である。
v0={sK(−zc1+zc2)} (12)
ここで、zc1,zc2は、それぞれ
zc1=Σ(xi/M1) (i=1〜M1) xi:凸多面体K1のベース格子点
zc2=Σ(yi/M2) (i=1〜M2) yi:凸多面体K2のベース格子点
である。
【0026】
(f) Gilbert法の補題
Gilbert法のステップ2) では、4以下の格子点に張られる凸多面体(点、辺、面、4面体)に対する1点(原点O)からの最接近点ベクトルを求めるアルゴリズムが必要であった。以下で述べる補題は5点以上の格子点で張られる凸多面体にも成立するが、格子点数が少ない場合に特に効率的である。
1) 補題1
格子点集合Y={y1,y2,・・・ym}∈R3に対し、Yの任意の部分集合を
Ys=[yi:i∈Is⊆{1,2,・・・m}}、Isの補集合をIs′とする。この時、数列Δi(Ys)を次の法則に基づいて作成する。
Δi({yi])=1,i∈Is
Δj(Ys∪{yj})=ΣΔi(Ys)(yiyk−yiyj) (i∈Is)
但し、k=min{i:i∈Is},j∈Is
この時、次の性質を満たすYの部分集合がYsが存在する。
(1) i∈Isである各々のiに対してΔi(Ys)>0 (i∈Is)
(2) j∈Isである各々のjに対してΔj(Ys∪{yj})≦0 (j∈Is)
【0027】
2) 補題2
格子点集合Y={y1,y2,・・・ym}∈R3に対し、Yで張られる凸多面体をco Y、原点Oからco Yへ至る最接近点ベクトルをν(co Y)とする時、 ν(co Y)は以下の公式で与えられる。
ν(co Y)=Σλiyi,i∈Is⊆{1,2,・・・m}
ここで、比例定数λiは、補題1で求めた部分集合Ysに対するΔi(Ys)を使って次式で与えられる。
λi=Δi(Ys)/Δ(Ys) ,Ys={yi:i∈Is}
Δ(Ys)=ΣΔi(Ys) (i∈Is)
上記補題の詳しい証明はここでは省略するが、補題の意味するところは簡単に理解できる。上記補題を4面体に適用してみる。図73(a)〜(d)に示すように、1点Oと4面体との最接近ベクトルは、4面体の各格子点、辺、面、又は4面体内部に存在する場合があり得る。従って、Yの部分集合Ysが1点からなる場合は格子点に、2点からなる場合は辺上に、3点からなる場合は面上にそれぞれ最接近点が存在する場合に対応し、4点からなる場合は4面体内部に原点Oが存在する場合に相当する。
【0028】
補題1、2を実際に実行する場合には、以下のアルゴリズムに従う。
(g) Gilbert法の補題アルゴリズム
格子点集合Y={y1,y2,・・・ym}∈R3に対し、Yの部分集合を
Ys=[yi:i∈Is⊆{1,2,・・・m}}、Isの補集合をIs′とする。又、s=1、2、・・・σとすることによりYの全ての部分集合が指示されるものとする。この時、Gilbert法のアルゴリズ2) は以下のようになる。
【0029】
2)1 1→s
2)2 もし、i∈Isの各々のiに対して
Δi(Ys)>0 (i∈Is)
であり、かつ、j∈Isの各々のjに対して
Δj(Ys∪{yj})≦0 (j∈Is)
ならば、
λi=Δi(Ys)/Δ(Ys),Ys=[yi:i∈Is}
Δ(Ys)=ΣΔi(Ys) (i∈Is)
ν(co Y)=Σλiyi (i∈Is) (12)′
としてストップし、以後Gilbert法のアルゴリズ3)を実行する。
2)3 しかし、2)2の条件が成立しなければ、sをインクリメントしてステップ2)2を実行する。すなわち、2)2の条件が成立する迄2) 2,2) 3 のステップを繰返し、2)2の条件が成立した時、ν(co Y)を計算して以後Gilbert法のアルゴリズ3)を実行する。
【0030】
(i) 数値試験
Gilbert法による最接近点探索アルゴリズムは、次の入出力を持つサブルーチンにまとめることができる。
入力:2凸多面体の各格子点の座標値
出力:最接近点の座標値、最接近距離
図74はGilbert法をフォルトランで実行し、各種凸多面体に適用した場合の数値試験例であり、星印は2物体が接近している場合(フリー)、白丸は2物体が接触している場合、四角黒印は2物体が干渉している場合である。尚、使用した計算機はHarris 800で、VAX 780より少々速く現在のパソコン程度の性能である。
【0031】
図74の横軸に示されているMは格子点数、縦軸に示されているEFは次式で定義される量である。
EF=(tMNM+tANA+tDND+tCNC)/(tM+tA) (13)
ここで、NMは積算回数、NAは加算回数、NDは除算回数、NCは比較演算回数であり、tM,tA,tD,tCは各々に要する計算時間であり、Harris 800の場合には、tM=3.8μs,tA=2.1μs,tD=6.7μs,tC=1.7μsである。EFの値は、計算機によって大きく変動することはなくマシーンインデペンデントな指標として使うことができる。Harris 800の場合には、EFに6/106を掛けた値がCPUスケールに相当する。Sparcチップ(CPUのチップ)を使ったワークステーションの場合には更に一桁以上の高速性を期待できる。
【0032】
(j) 結論
1) 以上からGilbert法による最接近点探索は、2つの凸多面体の格子点の総数をMとした時、干渉している場合、接触している場合、フリーの場合それぞれにおいて、ほぼMに比例した計算負荷を有し、比例定数はEF/Mの値で見て14〜19の値に収まる。
2) Gilbert法を1M Flops程度のワークステーション上で2つの凸多面体に適用する場合、格子点の総数が200程度でも数msで最接近点の算出が可能である。
【0033】
【発明が解決しようとする課題】
以上より、Gilbert法によれば、2物体間の最接近点探索を短時間で効率良く実行できる効果がある。
しかし、Gilbert法には以下のような限界ないしは制約条件が存在する。
1) Gilbert法の限界:連続探索問題への対応
2つの凸多面体間の最接近点を連続的に追い掛ける場合を考察する。このように2つの凸多面体間の最接近点を連続的に追い掛ける問題を連続探索問題という。物体の移動に伴い、最接近点は各々の凸多面体において、面から辺、辺から頂点、頂点から面へと渡り歩くように遷移していく。従って、ある時点で最接近点が求まった場合、次の時点における最接近点は前の最接近点の近傍に存在するはずである。換言すれば、最接近点の探索は局所的な問題であり、凸多面体全領域の複雑度とは無関係のはずである。
【0034】
しかし、Gilbert法では、連続探索問題において全格子点を考慮した最接近探索処理を行うため、凸多面体の全格子点数M1,M2に依存したO(M1+M2)の計算負荷が最接近点探索の都度必要となる問題がある。又、計算負荷が大きいため、ロボット、自走車が高速で移動する場合には最接近点探索処理が間にあわなくなる問題がある。
【0035】
2) Gilbert法の制約条件:非凸多面体への対応
Gilbert法は凸多面体間の最接近点を探索するアルゴリズムである。このため、実用度を上げるために、非凸多面体、非単連結多面体、自由曲面を持った物体への拡張が必要である。Gilbert法により非凸多面体間の最接近点探索を行う場合には、図75に示すように、各非凸多面体K1,K2を複数の凸多面体A,B;a,b,cに分割し、全ての凸多面体の組み合わせについて最接近点探索アルゴリズムを適用し、得られた最接近距離のうち最も短いものを選択する。しかし、かかる方法では組み合わせの数が多くなり、計算負荷が大きくなる問題がある。
以上から本発明の目的は、物体間の連続探索問題を少ない計算負荷で高速に実行できる最接近点探索装置を提供することである。
本発明の別の目的は、少なくとも一方が非凸多面体の物体間の最接近点探索を少ない計算負荷で高速に実行できる最接近点探索装置を提供することである。
【0036】
【課題を解決するための手段】
図1は本発明の原理説明図である。
図1において、22aは対象となる2つの凸多面体を覆う全ポリゴンデータを記憶するポリゴンデータ記憶部、22bは近接点線形リスト記憶部、24は各ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する近接点線形リスト作成部、26は最接近点探索処理部である。
【0037】
【作用】
凸多面体間の最接近点を連続的に探索することにより両者の干渉チェックを行なう場合、凸多面体を覆う全ポリゴンの頂点座標を入力してポリゴンデータ記憶部22aに記憶する。近接点線形リスト作成部24は各ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを最接近点探索処理の実行前に作成する。しかる後、最接近点探索処理部26は、最新に求まっている最接近点に近接する頂点を近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を探索して干渉チェックを行なう。
【0038】
第1、第2の非凸多面体間の干渉チェックを行なう場合、各非凸多面体をそれぞれ凸多面体に分解し、凸多面体間の最接近点を連続的に探索することにより非凸多面体間の干渉チェックを行なう。各区凸多面体間の干渉チェックを行うために、予め、近接点線形リスト作成部24は前記凸多面体毎に、該凸多面体を覆う全ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する。最接近点探索処理部26は、▲1▼前記非凸多面体毎に、該非凸多面体の頂点座標値のうち、各軸方向の最大座標値及び最小座標値を求め、該最大座標値及び最小座標値により該非凸多面体を包む包絡球を生成し、▲2▼第1、第2の非凸多面体の包絡球が干渉するかチェックし、▲3▼干渉した後は前記非凸多面体を分解して得られている凸多面体間の最接近点を探索し、▲4▼最新に求まっている最接近点に近接する頂点を前記近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を探索し、▲5▼各凸多面体間の最接近点間距離が最も短いものを用いて干渉チェックを行なう。
【0039】
第1、第2の非凸多面体間の干渉チェックを行なう場合、各非凸多面体をそれぞれ凸多面体に分解し、凸多面体間の最接近点を連続的に探索することにより非凸多面体間の干渉チェックを行なう。各区凸多面体間の干渉チェックを行うために、予め、近接点線形リスト作成部24は前記凸多面体毎に、該凸多面体を覆う全ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する。最接近点探索処理部26は、▲1▼各非凸多面体を包む最小の凸多面体(凸包)を生成し、▲2▼第1、第2の非凸多面体の凸包が干渉するかチェックし、▲3▼干渉した後は凸多面体間の最接近点を探索し、最新に求まっている最接近点に近接する頂点を前記近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を探索し、▲4▼各凸多面体間の最接近点間距離が最も短いものを用いて干渉チェックを行なう。
【0040】
【実施例】
(A) 凸多面体間の最接近点探索の第1の方法
(a) 原理
Gilbert法でO(M1+M2)の計算負荷が発生するプロセスは、ステップ3)における判定関数gK(νk)のhK(−νk)の内積計算においてである。すなわち、hK(−νk)は(8)式より
であるから、hKを評価する過程で凸多面体K1,K2の全格子点にわたる内積を計算して最小のものを決定することになるため、O(M1+M2)の計算負荷が発生する。
【0041】
内積の計算回数を減らす有効な方策は、凸多面体K1,K2を格子点数がより少ない凸多面体又は凸多角形に分割し、現在の最接近点の近傍に位置する凸多面体又は凸多角形についてのみ内積を評価する方法である。
【0042】
最も簡単な分割法は、図2に示すように、凸多面体を表面多角形の集合に分割する方法である。この時、凸多面体における最接近点は、
1)格子点上に存在する場合、
2)辺上に存在する場合、
3)面上に存在する場合
の3通りがあり得る。
【0043】
そこで、それぞれに対して内積を評価する表面多角形を以下のように制限すれば良い。すなわち、最接近点が
1)格子点上に存在する場合には、その格子点を頂点に持つ表面多角形の全て、
2)辺上に存在する場合には、その辺を1辺として持つ表面多角形の全て、
3)面上に存在する場合には、現在最接近点が存在する表面多角形・・・(15)
を、内積を評価する表面多角形とする。すなわち、最接近点が存在する位置に応じて(15)の1)〜3)で示す表面多角形を構成する格子点(頂点)についてのみ内積を評価し(内積が最小となる格子点を求め)、判定関数gK(νk)を演算すればよい。このようにすれば、内積評価に必要となる格子点数が減り、計算負荷が減少する。
【0044】
(b) 最接近点探索のための凸多面体のデータ構造
上記1)〜3)により連続的に内積評価に必要となる表面多角形を求めるためには、凸多面体を定義するデータ構造に工夫を要する。図3は図2の6面体の場合のデータ構造例であり、有向グラフ型構造データを採用している。この有向グラフ型構造データは抽象化すると以下のように表現できる。
【0045】
1)凸多面体を構成する表面多角形に番号を付け、各々に1つずつポリゴンノード(polygon node)を割り付ける。
2)各ポリゴンノードの下に、その多角形を構成する全格子点と全辺を並べるための格子点ノード(Vertex node)とエッジノード(Edge node)を割り付ける。多角形を構成する格子点の集合と辺の集合は、格子点ノードとエッジノードに対してそれぞれブラザーノード(brother node)として存在する。
3)格子点ノードとエッジノードの下に、それらの格子点又は辺を構成要素として持つ多角形をポリゴンノードとして割り付ける。多角形が複数存在する場合にはブラザーノードとして割り付ける。
【0046】
(c) 判定関数gK(νk)の内積評価法
以上のように、凸多面体のデータ構造を作成すると、(15)は以下のように表現できる。
判定関数gK(νk)の計算におけるhK(−νk)の評価は、
1)最接近点が格子点上に存在する場合には、該格子点に対応する格子点ノードの下に連なる全てのポリゴンノードに応じた表面多角形の格子点について内積評価を行う、
2)最接近点が辺上に存在する場合には、該辺に対応するエッジノードの下に連なる全てのポリゴンノードに応じた多角形の格子点について内積評価を行う、
3)最接近点が面上に存在する場合は、該面の格子点について内積評価を行う。・・・(15)′
内積評価を(15)′のように制限した場合には、判定関数gK(νk)の計算負荷は、凸多面体の表面凸多角形の格子点数の最大値をLとすると、O(L)以下に抑えることができる。
【0047】
(d) 本発明の内積評価法を採用した最接近点探索アルゴリズム
図4は本発明による2つの凸多面体間の最接近点探索アルゴリズムの流れ図である。
まず対象となる2つの凸多面体を特定するデータを入力する(初期入力:凸多面体の環境モデル設定)。この場合、各凸多面体を特定するデータを以下の方式で入力する(図5参照)。すなわち、第1の凸多面体PH1を構成する表面多角形にポリゴン番号P1i(i=1,2,・・・m)を付ける。ついで、第iポリゴン番号P1iを入力し、しかる後、ポリゴン番号P1iを構成する格子点の座標値及びポリゴン番号P1iの外向き法線方向を入力し、全ポリゴンP1i(i=1,2,・・・m)についてポリゴン番号、格子点座標値、外向き法線方向を入力する。なお、ポリゴンを構成する格子点の座標値は外向き法線ベクトルに向かって右回りに入力する。
【0048】
以後、同様に、第2の凸多面体PH2を構成する表面多角形にポリゴン番号P2i(i=1,2,・・・n)を付ける。ついで、第iポリゴン番号P2iを入力し、しかる後、ポリゴン番号P2iを構成する格子点の座標値及びポリゴン番号P2iの外向き法線方向を入力し、全ポリゴンP2i(i=1,2,・・・n)についてポリゴン番号、格子点座標値、外向き法線方向を入力する(以上ステップ101)。
各凸多面体を特定するデータの入力が完了すると、入力データに基づいて有向グラフ型構造データを作成する(ステップ102)。
有向グラフ型構造データの作成が完了すると凸多面体PH1,PH2に対してGilbert法を適用する。まず、初期格子点集合Vk(k=0)を決定し(ステップ103)、該初期格子点集合V0について最接近点ベクトルνkを計算して出力する(ステップ104)。
【0049】
ついで、該最接近点に対応する各凸多面体PH1,PH2上の最接近点が格子点上、辺上、面上のいずれに存在するか調べ、存在位置に基づいて(15)′により内積評価に使用する格子点を決定し、判定関数gK(νk)を演算する(ステップ105)。
尚、凸多面体PH1上の格子点をx1i、凸多面体PH2上の格子点をx2iとすると(12)′式は
となる。(12)″の右辺第1項は凸多面体PH1上の最接近点の位置ベクトルであり、右辺第2項は凸多面体PH2上の最接近点の位置ベクトルである。従って、最接近点ベクトルνkを演算する過程で(12)″式の右辺第1項、右辺第2項を計算することにより最接近点ベクトルに対応する各凸多面体PH1,PH2上の最接近点を求めることができる。
【0050】
判定関数が求まれば、gK(νk)=0になったか調べ(ステップ106)、gK(νk)=0であれば最接近点探索は終了する。しかし、gK(νk)が0でなければ、kをインクリメントし、次の格子点集合V1について最接近点ベクトルを出力する(ステップ107)。
以後ステップ105以降の処理を繰り返せば、最終的にgK(νk)=0となり、最接近距離、最接近点が求まる。すなわち、2つの凸多面体PH1,PH2の差集合凸多面体までの最接近点ベクトルは(12)′式で求まるから、原点Oから該最接近点までの距離が最接近距離となる。又、この時、(12)″式の右辺第1項、第2項により各凸多面体PH1,PH2上の最接近点を求めることができる。
【0051】
(e) 本発明の内積評価法を採用した最接近点探索装置の構成図
図6は2つの凸多面体間の最接近点探索装置の構成図である。図中、11は対象となる2つの凸多面体を特定するデータ(図5参照)を入力する入力部、12は入力された凸多面体データを記憶する記憶部、13は凸多面体毎に凸多面体データを用いて有向グラフ型構造データを作成する有向グラフ型構造データ作成部、14は有向グラフ型構造データを記憶する記憶部、15はGilbert法に基づいて2物体間の最接近点探索処理を行なう最接近点探索処理部、16は最接近点が存在する位置(格子点、辺、面)に応じた内積評価用の格子点を有向グラフ型構造データ記憶部14より読出して最接近点探索処理部15に入力する内積評価用格子点読み出し部である。
【0052】
入力部11から凸多面体PH1,PH2を特定するデータを入力して記憶部12に記憶する。有向グラフ型構造データ作成部13は入力データに基づいて有向グラフ型構造データを作成し、記憶部14に記憶する。有向グラフ型構造データの作成が完了すると最接近点探索処理部15は凸多面体PH1,PH2に対してGilbert法を適用する。まず、初期格子点集合Vk(k=0)を決定し、該初期格子点集合V0について最接近ベクトルνkを計算する。ついで、最接近ベクトルνkに応じた各凸多面体上の最接近点を求め、それぞれの最接近点が格子点上、辺上、面上のいずれに存在するか調べ、存在位置(格子点、辺、面)を内積評価用格子点読み出し部16に入力する。読み出し部16は最接近点位置に基づいて定まる内積評価に使用する格子点を有向グラフ型構造データ記憶部14より読出して最接近点探索処理部15に入力する。最接近点探索処理部15は入力された格子点を用いて内積評価を行なって判定関数gK(νk)を演算する。しかる後、判定関数が求まれば、gK(νk)=0になったか調べ、gK(νk)=0であれば最接近点探索は終了し、最接近距離、最接近点を出力する。しかし、gK(νk)が0でなければ、kをインクリメントし、次の格子点集合V1について最接近点ベクトルを出力する。以後、同様な処理が行なわれ、最終的にgK(νk)=0となり、最接近距離、最接近点が出力される。尚、凸多面体PH1,PH2が移動すれば、所定時間毎の移動データに基づいて移動後の各凸多面体の格子点位置を求め、上記処理を行う。
【0053】
(B) 凸多面体間の最接近点探索の第2の方法
(a) 原理
最接近点探索の第1の方法では、対象物体である凸多面体をそれぞれ包む表面凸多角形に分割したため、計算負荷は凸多角形の格子点数のオーダであった。
この第1の最接近探索方法の考え方を更に突き詰めると、凸多角形の表面を三角形ポリゴンで覆い尽くせば1回の内積評価の回数が最も少なくなることは明らかである。図7(a)は原点Oの移動に合わせて凸多面体Kとの最接近点が表面多角形上を推移して行く状態の説明図である。原点Oの移動に応じて最接近点Sは凸多角形P1→凸多角形P2→凸多角形P3上を連続的に推移して行く。従って、凸多角形を図7(b)に示すように三角形Tijに分割すれば、原点Oの移動に応じて最接近点Sは三角形T11→T12→T21→T22→T23→T24→T25→T26→T31上を連続的に推移して行く。
【0054】
そこで、凸多面体を構成する表面凸多角形をすべて三角形に分割して、第1の最接近探索処理を施しても何等問題はない。そして、三角形に分割することにより1回の内積評価の回数を減少できる。例えば、図7(a),(b)において最接近点S′が辺E11上に存在すると仮定すれば、図7(a)の場合には、内積評価に使用する格子点はV1〜V6の6個存在するが、図7(b)の場合には、V1,V3,V4,V6の4個で良く、1回の内積評価の回数を減少できる。
以上より、対象となる凸多面体に前処理を施して表面凸多角形を全て三角形ポリゴンに分割したデータ構造とすれば、gK(νk)を連続的に評価する場合の計算負荷は、対象となる凸多面体の複雑度に関係なく一定値以下に押さえることができる。
【0055】
任意の凸多角形を三角形ポリゴンに分割する方法は、計算幾何学の分野で幾つかアルゴリズムが知られている。最もよく知られている方法は、動的計画法を使って弦の長さの和を最小にするような三角形分割法である。図8にその例を示す。なお、弦とはL1〜L6のように三角形に分割するための線分である。このアルゴリズムの計算負荷は、始めの多角形の格子点数をnとするとO(n3)である。多角形を三角形にするアルゴリズムに関しては、浅野哲夫著「計算幾何学」(朝倉書店)、Te. Asano, Ta. Asano and Y. Ohsuga:”Partitioning a Polygonal Region into a Minimum Number of Triangles”, Trans. IECE of Japan, vol.E67, pp.232〜233、 1984を参照されたい。
【0056】
以上より、最接近点の連続探索問題への対応法(第2の最接近点探索方法)は以下のようにまとめることができる。
1)前処理1:対象凸多面体を包む各表面凸多角形に対し、三角形分割を施す(Triangulation algorithm)
2)前処理2:三角形を用いて第1の最接近点探索方法におけると同様に有向グラフ型構造データを作成する。
3)内積評価:(15)′にしたがってgK(νk)をにおける内積評価の範囲を限定する。
【0057】
(b) 本発明の第2の最接近点探索アルゴリズム
図9は本発明の第2の最接近点探索方法による最接近点探索アルゴリズムの流れ図である。
まず対象となる2つの凸多面体を特定するデータを入力する(初期入力:凸多面体の環境モデル設定)。各凸多面体を特定するデータは以下の方式で入力される(図5参照)。すなわち、第1の凸多面体PH1を構成する表面多角形に番号P1i(i=1,2,・・・m)を付ける。ついで、第iポリゴン番号P1iを入力し、しかる後、番号P1iのポリゴンを構成する格子点の座標値及びポリゴンの外向き法線方向を入力し、同様に、全ポリゴンP1i(i=1,2,・・・m)についてポリゴン番号、格子点座標値、外向き法線方向を入力する。なお、ポリゴンを構成する格子点の座標値は外向き法線ベクトルに向かって右回りに入力する。同様に、第2の凸多面体PH2を構成する表面多角形にポリゴン番号P2i(i=1,2,・・・n)を付ける。ついで、第iポリゴン番号P2iを入力し、しかる後、ポリゴン番号P2iを構成する格子点の座標値及びポリゴン番号P2iの外向き法線方向を入力し、全ポリゴンP2i(i=1,2,・・・n)についてポリゴン番号、格子点座標値、外向き法線方向を入力する(以上ステップ201)。
【0058】
各凸多面体を特定するデータの入力が完了すると、入力データに基づいて凸多面体を構成する表面凸多角形を三角形に分割し、各三角形にポリゴン番号Tijを付加する(ステップ202)。
ついで、得られた三角形をポリゴンノードとして第1最接近点探索方法におけると同様に有向グラフ型構造データを作成する(ステップ203)。
有向グラフ型構造のデータ作成が完了すると凸多面体PH1,PH2に対してGilbert法を適用する。まず、初期格子点集合Vk(k=0)を決定し(ステップ204)、該初期格子点集合V0について最接近点ベクトルνkを計算して出力する(ステップ205)。
【0059】
ついで、最接近点ベクトルνkに応じた各凸多面体上の最接近点を求め、それぞれの最接近点が格子点上、辺上、面上のいずれに存在するか調べ、存在位置に基づいて(15)′により内積評価に使用する格子点を決定し、判定関数gK(νk)を演算する(ステップ206)。
判定関数が求まれば、gK(νk)=0になったか調べ(ステップ207)、gK(νk)=0であれば最接近点探索は終了する。しかし、gK(νk)が0でなければ、kをインクリメントし、次の格子点集合V1について最接近点ベクトルを出力する(ステップ208)。
以後ステップ105以降の処理を繰り返せば、最終的にgK(νk)=0となり、最接近距離、最接近点が求まる。尚、凸多面体PH1,PH2が移動すれば、所定時間毎の移動データに基づいて移動後の各凸多面体の格子点位置を求め、上記処理を行う。
【0060】
(c) 本発明の第2の最接近点探索装置の構成図
図10は本発明の第2の最接近点探索方法を実現する装置の構成図であり、図6と同一部分には同一符号を付している。図6と異なる点は、
1)凸多面体を特定する凸多面体データに基づいて該凸多面体を構成する表面凸多角形を三角形に分割する三角形分割部17が設けられている点、
2)有向グラフ型構造データ作成部13は各三角形をポリゴンノードとして有向グラフ型構造データを作成して記憶部14に記憶する点、
である。
【0061】
(d) 第2の最接近点探索方法の効果
第2の最接近点探索方法によれば、以下の1)、2)の効果が得られる。
1)高速性:最接近点を連続的に追い掛ける場合、初期化に要する時間を除くと対象凸多面体の複雑度に係らず計算負荷をほぼ一定にできる。一定値は、三角形ポリゴン同士の最接近点探索時間にほぼ等しい。
2)自由曲面への応用:自由曲面を三角形ポリゴンを張り合わせて表現する場合、表現の精度を上げるためにポリゴン数を増やしても最接近点探索の時間は常に一定である。
【0062】
(C) 非凸多面体間の最接近点探索の第1の方法
(a) 原理
Gilbert法を非凸多面体に拡張するための基本的な方針は、非凸多面体を凸多面体の集合と捕らえた時に、干渉チェックを行わなければならない凸多面体の組み合わせ数をできるだけ減らすことである。凸多面体間の干渉チェックには勿論Gilbert法を採用する。
凸多面体数を減らすために複数の凸多面体に対してマージング(merging)という概念を導入する。物体Aと物体Bのマージングとは、AとBを含む最小の凸物体(Copnvex hull:凸包)を構成することである。図11は非凸多面体Kを2つの凸多面体A,Bに分割し、マージング処理によりAとBを含む最小の凸物体(凸包)Cを構成した例である。凸包が生成されると、非凸多面体の干渉チェックは凸包同士(凸多面体同士)の干渉チェックに帰着し、本発明の第1の最接近点探索方法を適用できる。
【0063】
凸包Cを構成するに当り、バーチャリティ(Virtuality)という指標を導入する。バーチャリティは複数の凸多面体のマージングで生じる仮想的な多角形を識別するためのフラグである。図11の例では、2つの実在する凸多面体(直方体)A,Bにまたがる多角形(ポリゴン4,5,6)に対してバーチャリティは”1”となり、その他の実際に存在する多角形に対してはバーチャリティは”0”となる。
マージングで凸包が作成され、該凸包に第1の最接近点探索方法を適用するためには、凸包の有効グラフ型構造データを作成する。図12は図11に示す凸包の有向グラフ型構造データであり、凸包の表面多角形ポリゴン1,2,・・・をポリゴンノードとしてその下方に格子点ノード、エッジノードを配列し、更に各格子点ノード、エッジノードの下方にポリゴンノードを配列している。又、ポリゴンにはバーチャリティが付加されている。
【0064】
(b) マージング アルゴリズム
図13はマージングアルゴリズムの流れ図である。
対象となる非凸多面体を2以上の凸多面体に分割し、各凸多面体を特定するデータを入力する(初期入力:凸多面体の環境モデル設定)。すなわち、第1の凸多面体PH1を構成する表面多角形にポリゴン番号P1i(i=1,2,・・・m)を付ける。ついで、第iポリゴン番号P1iを入力し、しかる後、ポリゴン番号P1iを構成する格子点の座標値及びポリゴン番号P1iの外向き法線方向を入力し、全ポリゴンP1i(i=1,2,・・・m)についてポリゴン番号、格子点座標値、外向き法線方向を入力する。以後、同様に、他の凸多面体PH2を構成する表面多角形にポリゴン番号P2i(i=1,2,・・・n)を付け、全ポリゴンP2i(i=1,2,・・・n)についてポリゴン番号、格子点座標値、外向き法線方向を入力する(以上ステップ301)。
【0065】
各凸多面体を特定するデータの入力が完了すると、入力データに基づいて有向グラフ型構造のデータを作成する(ステップ302)。
ついで、各凸多面体PH1,PH2を包含する最小の凸包PH(1,2)を生成する(ステップ303)。しかる後、凸包PH(1,2)を構成する表面多角形にポリゴン番号PPH(1,2)i(i=1,2,・・・r)を付け、第iポリゴン番号PPH(1,2)iを入力後、第iポリゴンを構成する格子点の座標値、ポリゴンのバーチャリティ及び外向き法線方向を求めて記憶する(図14参照)。以後、同様にして全ポリゴンPPH(1,2)i(i=1,2,・・・r)についてポリゴン番号、格子点座標値、バーチャリティ外向き法線方向を求めれば、凸包の有向グラフ型構造データが作成されてメモリに記憶されることになる。尚、ポリゴンPPH(1,2)iが凸多面体PH1,PH2の両方の格子点を含む場合にはバーチャリティは”1”になり、片方の格子点しか含まない場合にはバーチャリティは”0”になる(以上、ステップ304、305)。
【0066】
マージングアルゴリズムは複数の凸多面体から凸包を作成し、有向グラフ型構造データを作成するアルゴリズムである。凸包を作成するアルゴリズムは計算幾何学で良く知られている。現在三次元の凸包に対しては、格子点の総数をMとするとき、計算負荷がO(M・log M)のアルゴリズムが知られている。例えば、 F.P. Preparata and S.J. Hong, ”Convex hulls of finite sets of points in two and three dimensions”, Comm. ACM 2(20), pp.87〜93, 1977を参照。
マージングアルゴリズムは相対的に静止している凸多面体同士に作用させ、バーチャリティ”1”の多角形が他の物体と接触・衝突した場合にはマージングを解除する。これにより、以後、下位の凸多面体の集合状態に対して最接近点探索処理が施される。又、マージング解除後(凸包解除後)、一定時間他の物体と干渉が生じない場合には、干渉によって分解した凸包はリカバリアルゴリズム(後述)により回復する。
【0067】
(c) マージングアルゴリズムの起動
マージングアルゴリズムは、対象物体に対して初期設定においてオフライン的に作用させておき、環境が動的に変化しだしたならば、すなわち、環境中のある凸多面体が動き出したならば、マージングプロセスは現状を維持したまま一時的に停止して、干渉チェックを行う。そして、環境が停止した時、マージング処理を実行して環境変化後の凸包の作成、凸包の有向グラフ型構造データの作成を行う。
図15は以上を考慮した時のプロセッサによるマージング処理の説明図である。全ての凸包に対して凸包の静動を監視するためのフラグms(i)を用意する。静動フラグms(i)=”1”の場合は動、ms(i)=”0”の場合は静であり、iは凸包全てにわたる。
【0068】
プロセッサのタスクとして、常時全てのms(i)の値を監視して凸包の静動状態を監視する状態監視タスクTask1と、いずれかのms(i)が”1”の場合に前述の第1の最接近点探索方法により干渉チェックをその他の処理を実行するTask2(干渉チェックタスク)と、全てのms(i)=”0”の場合、すなわち凸包全てが静止している場合にマージング処理を実行するTask3(マージングタスク)がある。
凸包全ての静動状態は図示しないロボット制御装置により監視され、メモリMEMにms(i)=”1”あるいはms(i)=”0”として書き込まれる。状態監視タスクTask1はms(i)の内容を監視し、全て”0”の場合にはマージングタスクTask3が起動してマージング処理を実行して凸包の作成、有向グラフ型構造データの作成を行う。マージングタスクTask3は凸包を1つ構成すると停止し、次の起動指示を待つ。一方、いずれかのms(i)が”1”の場合には、換言すればいずれかの凸包が動いている場合には、干渉チェックタスクTask2は第1の最接近点探索方法により干渉チェックをその他の処理を実行する。以後、上記動作が繰り返されて干渉チェックが実行される。
【0069】
以上はタスク切り換えによりマージング処理、干渉チェック処理等を実行する場合であるが、While文を用いてシーケンシャルにマージング処理を行うようにもできる。図16はWhile文を用いてマージング処理を実行する場合の説明図である。While文において全ての凸包のms(i)が”0”か監視し、全て”0”の場合にはマージングプロセスを実行して1つの凸包を作成する(ステップ401)。しかる後、While文を抜け出し、干渉チェックその他の処理を実行し(ステップ402)、再びWhile文を実行する。以後、常時マージング処理、干渉チェック処理を繰返し連続的に実行する。
【0070】
環境が動的に変化する場合、例えば図17に示すようにロボットアームAMが非凸多面体であるアーチACを通り抜けて向う側の対象物OBを掴むような場合、アームAMはアーチACで構成される凸包を突き破って対象物OBに到達する。この場合、ロボットアームAMが凸包のバーチャリティ”1”の凸多角形と接触すると、マージングが解除される。以後、ロボットアームAMとアーチACを構成する個々の凸多面体AC1〜AC3との干渉チェックが行われ、ロボットアームはアーチACに接触しないように対象物OBに至り、該対象物を掴んで目的の場所に運ぶ。マージングが解除された凸包は、次に説明するリカバリアルゴリズムにより復元する。
図18(a)は作業台BSとアーチACに凸包CH1を生成した例、図18(b)は、アーチAC、対象物OBそれぞれに凸包CH2,CH3を生成した場合の例であり、ロボットアームAMは図18(c)に示すように作業台BSとアーチACで構成される凸包CH1、アーチで構成される凸包CH2を次々に突き破って対象物OBに到達し、対象物を把持して目的の場所に運ぶ。
【0071】
(d) リカバリアルゴリズム
干渉によって分解した凸包は、一定時間、他の物体と干渉が生じない場合には回復する。リカバリ処理は、マージング状態のデータ構造が残っている凸包に対してのみ作用する。従って、相対位置関係が動いてしまい、元の凸包のデータ構造が失われている凸多面体集合は、リカバリ処理では回復せず、マージングアルゴリズムの適用により新しい凸包が構成される。
【0072】
図19はプロセッサによるマージング処理、リカバリ処理の説明図である。全ての凸包に対して凸包の静動を監視するためのフラグms(i)を用意する。静動フラグms(i)=”1”の場合は動、ms(i)=”0”の場合は静であり、iは凸包全てにわたる。
プロセッサのタスクとして、常時全てのms(i)の値を監視して凸包の静動状態を監視する状態監視タスクTask1と、いずれかのms(i)が”1”の場合に第1の最接近点探索方法による干渉チェック処理、リカバリ処理、その他の処理を実行するTask2(干渉チェック/リカバリタスク)と、全てのms(i)=”0”の場合、すなわち凸包全てが静止している場合にマージング処理を実行するTask3(マージングタスク)がある。
【0073】
凸包全ての静動状態は図示しないロボット制御装置により監視され、メモリMEMにms(i)=”1”あるいはms(i)=”0”として書き込まれる。状態監視タスクTask1はms(i)の内容を監視し、全て”0”の場合にはマージングタスクTask3が起動する。マージングタスクTask3はマージング処理を実行して凸包の作成、有向グラフ型構造データの作成を行う。マージングタスクTask3は凸包を1つ構成すると停止し、次の起動指示を待つ。
一方、いずれかのms(i)が”1”の場合には、換言すればいずれかの凸包が動いている場合には、干渉チェックタスクTask2は第1の最接近点探索方法により干渉チェックを実行すると共に、リカバリ処理その他の処理を実行する。以後、上記動作が繰り返されて干渉チェックが実行される。
【0074】
リカバリ処理は、凸包のバーチャリティ”1”の凸多角形が他の物体と接触してマージングが解除された時、凸包が該物体と干渉しなくなったか監視し、干渉しなくなってから連続して所定時間干渉しない場合には凸包を復元する。図17の例では、ロボットアームAMが対象物OBを把持してアーチACを通り抜けると凸包とアームの干渉がなくなるから、干渉しなくなってから所定時間経過した時凸包を復元する。
【0075】
以上はタスク切り換えによりリカバリ処理等を実行する場合であるが、While文を用いてシーケンシャルにリカバリ処理を行うようにもできる。図20はWhile文を用いてリカバリ処理を実行する場合の説明図である。While文において全ての凸包のms(i)が”0”か監視し、全て”0”の場合にはマージングプロセスを実行して1つの凸包を作成する(ステップ501)。しかる後、While文を抜け出し、干渉チェック処理、リカバリ処理、その他の処理を実行し(ステップ502)、再びWhile文を実行する。以後、常時マージング処理、干渉チェック処理、リカバリ処理を繰返し連続的に実行する。
【0076】
(e) 非凸多面体間の最接近点探索の全体の処理
図21は非凸多面体間の最接近点探索の全体の処理フロー図である。
対象となる非凸多面体を特定するデータを入力する(初期入力:環境モデル設定)。・・・ステップ601
ついで、非凸多面体を凸多面体に分割し、各凸多面体PHiの有向グラフ型構造データを作成する。又、マージング処理により凸包を生成すると共に、凸包の有向グラフ型構造データを作成する(ステップ602)。
以上の初期化処理が終了すると第1の最接近点探索処理(干渉チェック)処理を実行する(ステップ603)。ついで、干渉するかチェックし(ステップ604)、干渉すればバーチャリティ=”1”の部分が干渉したかチェックし(ステップ605)、バーチャリティ=”0”であれば、ただちに移動を停止し(ステップ606)、バーチャリティ=”1”であればマージングを解除し(ステップ607)、ステップ603に戻る。以後、凸包が回復するまで、非凸多面体を構成する個々の凸多面体に対する最接近点探索処理を実行する。
【0077】
一方、ステップ604において、干渉していなければリカバリ処理を実行する(ステップ606)。リカバリ処理においては、マージングが解除された凸包が存在するか調べ、存在する場合には、他の物体と干渉しているかチェックし、干渉してなければ非干渉時間を計時する。そして、マージングが解除された凸包の非干渉時間が設定値以上になっていれば、該凸包を復元する。しかし、他の物体と干渉していたり、非干渉時間が設定値以上でない場合には凸包を復元せず次のステップを実行する。尚、凸包を構成する部分の相対位置関係が動いて元の凸包データが失われている場合には凸包の回復は行わない。
ついで、凸包の全ての部分が静止しているかチェック(ステップ609)、静止していない場合にはステップ603に戻り以降の処理を繰返し、静止している場合にはマージング処理を実行して新たな凸包を作成し(ステップ610)、以後ステップ603に戻り以降の処理を繰り返す。
【0078】
(f) 非凸多面体間の最接近点探索装置の構成
図22は非凸多面体間の最接近点探索装置の構成図である。
21は対象となる非凸多面体を特定するデータを入力する入力部、22は入力された非凸多面体データを記憶する記憶部、23は非凸多面体を複数の凸多面体に分割し、各凸多面体毎に有向グラフ型構造データを作成する凸多面体分割/有向グラフ作成部、24は非凸多面体の凸包を作成し、該凸包の有向グラフ型構造データを作成する凸包作成/有向グラフ作成部、25は各凸多面体の有向グラフ型構造データCVD及び凸包の有向グラフ型構造データCHDを記憶する記憶部、26は状態監視、干渉チェック、マージング、リカバリ処理を行うプロセッサ、27はロボット制御装置から送られてくる静動フラグms(i)や各物体の位置データを記憶するメモリ、28は凸包のマージングが解除されているか否かを凸包毎に記憶するメモリである。
【0079】
入力部21より対象となる非凸多面体を特定するデータを入力してメモリ22に記憶する。凸多面体分割/有向グラフ作成部23は非凸多面体を凸多面体に分割し、各凸多面体の有向グラフ型構造データCVDを作成してメモリ25に記憶する。又、凸包作成/有向グラフ作成部24はマージング処理により凸包を生成すると共に、凸包の有向グラフ型構造データCHDを作成してメモリ25に記憶する。
【0080】
以上の初期化処理が終了するとプロセッサ26は凸包の有向グラフ型構造データを用いて前述の第1の最接近点探索処理(干渉チェック)処理を実行する。尚、移動物体についてはロボット制御装置より入力されている移動データに基づいて格子点位置を算出し、該格子点位置に基づいて最接近点探索処理を行う。
最接近点探索処理により、凸包(バーチャリティ=”1”)との干渉が検出されると、該凸包のマージングを解除し、解除フラグFR=”1”をメモリ28に記憶する。以後、プロセッサ26は解除フラグFRを参照して凸包が回復したか調べ、回復しなければ、非凸多面体を構成する個々の凸多面体の有向フラグ構造データを用いて最接近点探索処理を実行する。又、プロセッサ26は、凸包(バーチャリティ=”1”)と干渉していなければリカバリ処理を実行する。
【0081】
リカバリ処理においては、解除フラグメモリ28を参照してマージングが解除された凸包が存在するか調べ、存在する場合には、他の物体と干渉しているかチェックし、干渉してなければ非干渉時間Tを計時する。そして、マージングが解除された凸包の非干渉時間Tが設定値以上になっていれば、該凸包を復元する。すなわち、解除フラグFRを0にする。しかし、他の物体と干渉していたり、非干渉時間が設定値以上でない場合には凸包を復元しない。
ついで、ロボット制御装置から入力されている静止フラグms(i)を参照して凸包の全てが静止しているかチェック、静止していない場合には上記干渉チェックを繰り返す。静止している場合、非凸多面体を構成する凸多面体の相対的位置関係が変化している場合にはマージング処理を実行して新たな凸包を作成してメモリ25に記憶し、以後同様な処理を繰り返す。
【0082】
以上より、本発明の非凸多面体間の最接近点探索方法によれば、凸包を作成し、凸包の有向グラフ型構造データを作成し、該凸包の有向グラフ型構造データに基づいて最接近点探索処理を行うようにしたから、凸多面体の組み合わせ数を大幅に減らすことができる。又、環境が動的に変化することによって凸包が崩壊した場合には、その後、一定時間、他の物体との干渉が生じなければ元の凸包を回復し、凸多面体の数を最小に保持でき、計算負荷を現象できる。
【0083】
(D) 非凸多面体間の最接近点連続探索における第1の方法
(a) 原理
複数の非凸多面体間の最接近点を連続的に追い掛ける「最接近点の連続探索問題」において、各々の非凸多面体に対してマージング処理を施し、形式上凸多面体間の最接近点の連続問題にリダクションして解決する。このとき、マージングにより求めた各凸多面体に対し、凸多面体を構成する表面凸多角形に番号を付け、各々の凸多角形の近傍に位置する格子点、辺、凸多角形を登録するための有向グラフ型構造データを作成し、最接近点探索の計算負荷を表面多角形の格子点数の最大値のオーダO(L)以下に抑える。
マージングするに当たり、バーチャリティという指標を導入する。バーチャリティとは、マージングの過程で求まる凸多面体の表面多角形において、元の非凸多面体の表面多角形と一致する場合にはバーチャリティ=0,一致しない場合にはバーチャリティ=1とする。
【0084】
バーチャリティ=1の凸多角形との干渉が発生した場合には、マージングを解除し、元の非凸多面体を構成する凸多面体間の組み合わせに対して凸多面体における本発明の第1の最接近点探索方法を適用する。
マージングの解除に伴う規則は以下の通りとする。
1)バーチャリティ=1の多角形(凸包Aの成分)とバーチャリティ=0の多角形(凸包Bの成分)が干渉したならば、バーチャリティ=1の多角形を有する凸包Aを解除する。
2)バーチャリティ=1の多角形(凸包Aの成分)とバーチャリティ=1の多角形(凸包Bの成分)が干渉したならば、凸包を凸多面体に分解した時の構成凸多面体数の少ない方の凸包を解除する。
3) バーチャリティ=0の多角形同士が干渉した場合には、どちらの凸包も解除しない。
【0085】
図23に示すように、凸包Aと凸包Bが干渉し((b)参照)、凸包Aが解除されて構成凸多面体の集合DA(Decomposed A)が現われれば((c)参照)、以後、集合DAと凸包B間で凸多面体における本発明の第1の最接近点探索方法を適用する。この場合のアルゴリズムは以下のようになる。
(b) 凸多面体集合と凸包間の最接近点探索アルゴリズム
1)凸包Aが解除された時の凸包Aの干渉面をPA(Virtuality(PA)=1)とする。この時、干渉面PAの各辺は集合DAの要素 Edge(DA,PA)とバーチャリティ=1の辺で構成され、干渉面PAの格子点は集合DAの要素 Vertex(DA,PA)で構成される。
【0086】
2)構成凸多面体の集合DAと凸包B間の干渉チェックは、 Edge(DA,PA)、 Vertex(DA,PA)と凸包B間に凸多面体における本発明の第1の最接近点探索方法を適用することにより行う。すなわち、 Edge(DA,PA)、 Vertex(DA,PA)を含むDAの表面凸多角形((c)の斜線部参照)を、非凸多面体を構成する各凸多面体(A′、A″)の有向グラフ型構造データより検索する。ついで、それぞれより求めた表面多角形と凸包B間に並行して第1の最接近点探索方法を適用して干渉チェックを行う((d)参照)。
3)バーチャリティ=1の凸多角形との干渉状態から抜け出せば、リカバリ処理により解除した凸包を回復し、凸包に対して最接近点探索処理を施す((e)参照)。
2)の処理により、最接近点探索の対象となる凸多面体A′、A″の面数を少なくでき(凸多面体A′では1面、凸多面体A″では2面)、最接近点探索処理の計算負荷を軽減できる。
【0087】
(c) 最接近点連続探索処理のフロー
図24は非凸多面体間の最接近点連続探索処理の処理フロー図である。
対象となる非凸多面体を特定するデータを入力する(初期入力:環境モデル設定)。・・・ステップ701
ついで、非凸多面体を凸多面体に分割し、各凸多面体PHiの有向グラフ型構造データを作成する。又、マージング処理により凸包を生成すると共に、凸包の有向グラフ型構造データを作成する(ステップ702)。
以上の初期化処理が終了すると凸多面体における本発明の第1の最接近点探索処理(干渉チェック)を実行する(ステップ703)。ついで、干渉するかチェックし(ステップ704)、干渉すればバーチャリティ=0の多角形同士が干渉したかチェックし(ステップ705)、YESであれば、どちらの凸包も解除せず処理を停止し、次の指示を待つ。しかし、バーチャリティ=0の多角形同士の干渉でなければ、バーチャリティ=1の多角形(凸包Aの成分)とバーチャリティ=0の多角形(凸包Bの成分)が干渉したかチェックする(ステップ706)。
【0088】
YESであればバーチャリティ=1の多角形を有する凸包Aを解除する(ステップ707)。NOであれば、換言すれば、バーチャリティ=1の多角形(凸包Aの成分)とバーチャリティ=1の多角形(凸包Bの成分)が干渉したならば、凸包を凸多面体に分解した時の構成凸多面体数の少ない方の凸包を求め(ステップ708)、該凸包を解除する(ステップ707)。
ついで、干渉面PAの Edge(DA,PA)、 Vertex(DA,PA)を含む集合DAの表面凸多角形を各凸多面体の有向グラフ型構造データより検索してプロセッサに渡す(ステップ709)。以後、プロセッサは求めた表面多角形と凸包B間に並行して第1の最接近点探索方法を適用して干渉チェックを行う(ステップ703)。
【0089】
一方、ステップ704において、物体間が干渉していなければリカバリ処理を実行する(ステップ710)。
リカバリ処理においては、マージングが解除された凸包が存在するか調べ、存在する場合には、他の物体と干渉しているかチェックし、干渉してなければ非干渉時間を計時する。そして、マージングが解除された凸包の非干渉時間が設定値以上になっていれば、該凸包を復元する。しかし、他の物体と干渉していたり、非干渉時間が設定値以上でない場合には凸包を復元せず次のステップを実行する。以後ステップ703に戻り以降の処理を繰り返す。
ついで、凸包の全ての部分が静止しているかチェック(ステップ711)、静止していない場合にはステップ703に戻り以降の処理を繰返し、静止している場合にはマージング処理を実行して新たな凸包を作成し(ステップ712)、以後ステップ703に戻り以降の処理を繰り返す。
【0090】
(E) 非凸多面体間の最接近点連続探索における第2の方法
(a) 原理
複数の非凸多面体間の最接近点を連続的に追い掛ける「最接近点の連続探索問題」において、各々の非凸多面体に対してマージング処理を施し、形式上凸多面体間の最接近点の連続問題にリダクションして解決する。このとき、本発明の第2の最接近点探索方法を適用する。すなわち、マージングにより求めた各凸多面体に対し、凸多面体を包む各表面凸多角形に三角形分割(Triangulation)を施し、三角形分割した結果に対して有向グラフ型のデータ構造を取り、最接近点探索の計算負荷を対象凸多面体の複雑度に関係せずに一定に抑える。
マージングするに当たり、バーチャリティという指標を導入する。バーチャリティとは、マージングの過程で求まる凸多面体の表面多角形において、元の非凸多面体の表面多角形と一致する場合にはバーチャリティ=0,一致しない場合にはバーチャリティ=1とする。
【0091】
バーチャリティ=1の三角形ポリゴンとの干渉が発生した場合には、マージングを解除し(凸包の解除)、元の非凸多面体を構成する凸多面体間の組み合わせに対して本発明の第2の最接近点探索方法を適用する。
マージングの解除に伴う規則は以下の通りとする。
1)バーチャリティ=1の三角形ポリゴン(凸包Aの成分)とバーチャリティ=0の三角形ポリゴン(凸包Bの成分)が干渉したならば、バーチャリティ=1の三角形ポリゴンを有する凸包Aを解除する。
2)バーチャリティ=1の三角形ポリゴン(凸包Aの成分)とバーチャリティ=1の三角形ポリゴン(凸包Bの成分)が干渉したならば、凸包を凸多面体に分解した時の構成凸多面体数の少ない方の凸包を解除する。
3)バーチャリティ=0の三角形ポリゴン同士が干渉した場合には、どちらの凸包も解除しない。
【0092】
図25に示すように、凸包Aと凸包Bが干渉し((b)参照)、凸包Aが解除されて構成凸多面体の集合DA(Decomposed A)が現われれば((c)参照)、以後、集合DAと凸包B間で凸多面体における本発明の第2の最接近点探索方法を適用する。この場合のアルゴリズムは以下のようになる。
1)凸包Aが解除された時の凸包Aの干渉三角形ポリゴンをTA(Virtuality(TA)=1)とする。この時、干渉三角形ポリゴンTAの各辺は集合DAの要素 Edge(DA,PA)とバーチャリティ=1の辺で構成され、干渉三角形ポリゴンTAの格子点は集合DAの要素 Vertex(DA,PA)で構成される。
【0093】
2)構成凸多面体の集合DAと凸包B間の干渉チェックは、 Edge(DA,PA)、 Vertex(DA,PA)と凸包B間に凸多面体における本発明の第2の最接近点探索方法を適用することにより行う。すなわち、 Edge(DA,PA)、 Vertex(DA,PA)を含むDAの三角形ポリゴン((c)の斜線部参照)を、非凸多面体を構成する各凸多面体(A′、A″)の有向グラフ構造データより検索する。ついで、それぞれより求めた三角形ポリゴンと凸包B間に並行して第2の最接近点探索方法を適用して干渉チェックを行う((d)参照)。
3)バーチャリティ=1の三角形ポリゴンとの干渉状態から抜け出せば、リカバリ処理により解除した凸包を回復し、凸包に対して最接近点探索処理を施す((e))。
2)の処理により、最接近点探索の対象となる凸多面体A′、A″の三角形ポリゴン数を少なくでき(凸多面体A′、A″でそれぞれ2個)、最接近点探索処理の計算負荷を軽減できる。
【0094】
(b) 非凸多面体間の最接近点連続探索処理
図26は非凸多面体間の第2の最接近点連続探索処理のフロー図である。
対象となる非凸多面体を特定するデータを入力する(初期入力:環境モデル設定)。・・・ステップ801
ついで、非凸多面体を凸多面体に分割し、各凸多面体PHiに対して三角形分割を行い、しかる後、各凸多面体の有向グラフ型構造データを作成する。又、マージング処理により凸包を生成すると共に、凸包の有向グラフ型構造データを作成する(ステップ802)。
【0095】
以上の初期化処理が終了すると非凸多面体間の第2の最接近点探索処理(干渉チェック)を実行する(ステップ803)。干渉するかチェックし(ステップ804)、干渉すればバーチャリティ=0の三角形ポリゴン同士が干渉したかチェックし(ステップ805)、YESであれば、どちらの凸包も解除せず処理を停止し、次の指示を待つ。しかし、バーチャリティ=0の三角形ポリゴン同士の干渉でなければ、バーチャリティ=1の三角形ポリゴン(凸包Aの成分)とバーチャリティ=0の三角形ポリゴン(凸包Bの成分)が干渉したかチェックする(ステップ806)。
YESであればバーチャリティ=1の三角形ポリゴンを有する凸包Aを解除する(ステップ807)。NOであれば、換言すれば、バーチャリティ=1の三角形ポリゴン(凸包Aの成分)とバーチャリティ=1の三角形ポリゴン(凸包Bの成分)が干渉したならば、凸包を凸多面体に分解した時の構成凸多面体数の少ない方の凸包を求め(ステップ808)、該凸包を解除する(ステップ807)。
【0096】
ついで、干渉三角形ポリゴンTAの Edge(DA,PA)、 Vertex(DA,PA)を含む集合DAの三角形ポリゴンを各凸多面体の有向グラフ構造データより検索してプロセッサに渡す(ステップ809)。以後、プロセッサは求めた三角形ポリゴンと凸包B間に並行して第2の最接近点探索方法を適用して干渉チェックを行う(ステップ803)。
一方、ステップ804において、物体間が干渉していなければリカバリ処理を実行する(ステップ810)。
【0097】
リカバリ処理においては、マージングが解除された凸包が存在するか調べ、存在する場合には、他の物体と干渉しているかチェックし、干渉してなければ非干渉時間を計時する。そして、マージングが解除された凸包の非干渉時間が設定値以上になっていれば、該凸包を復元する。しかし、他の物体と干渉していたり、非干渉時間が設定値以上でない場合には凸包を復元せず次のステップを実行する。 ついで、凸包の全ての部分が静止しているかチェック(ステップ811)、静止していない場合にはステップ803に戻り以降の処理を繰返し、静止している場合にはマージング処理を実行して新たな凸包を作成し(ステップ812)、以後ステップ803に戻り以降の処理を繰り返す。
【0098】
(F)非凸多面体の凸多面体への第1の分解処理(前処理)
(a) システムの構成
非凸多面体間の最接近点探索を実行するためには非凸多面体を凸多面体に分解する必要がある。
図27はグラフィックワークステーション上の形状モデルに最接近点探索の前処理を施す場合におけるシステム構成図であり、GWSはグラフィックワークステーション、CPUは最接近点探索の前処理や最接近点探索処理、その他の処理を実行するプロセッサ、MEMはメモリであり、図示しない三次元CADシステムで設計された形状データFDTや最接近点探索の前処理プログラムICP等を記憶するもの、DPLは表示部、OPSはキーボード、マウス等の操作部、OPRはオペレータである。
オペレータOPRは、操作部OPSを使ってプロセッサCPUに対しグラフィックワークステーションGWS上の形状モデルに対して前処理を実行するように指令を入力する。前処理指令が入力されると、プロセッサCPUはメモリMEMに記憶されている最接近点探索の前処理プログラムICPに基づいて非凸多面体の形状データFDTを用いて前処理(非凸多面体のポリゴン集合の分割処理)を実行する。そして、分割結果をメモリMEMに記憶すると共に、前処理結果を表示部DPLを通してオペレータに提示する。
【0099】
(b) 最接近点探索の前処理の概略
図28は本発明の最接近点探索の前処理の概略的な処理フローである。
三次元CADシステムは形状モデル(非凸多面体)を作成してグラフィックワークステップGWSに入力する(ステップ1001、1002)。CADシステムは物体(非凸多面体)をポリゴンで覆った場合における全ポリゴンデータを入力する。ポリゴンデータは、ポリゴンの各頂点の座標値とその点における光の反射方向を示す情報を有している。最も一般的なポリゴンデータは、図28に示すように三角形ポリゴンの張り合わせで表現されるものである。図28に示す三角形ポリゴンのデータの場合、normal に続く3つの実数が光の反射方向を示し、vertex に続く3つの実数が頂点座標値を表している。三次元CADシステム内の形状モデルからポリゴンデータを出力する手順は通常、三次元CADシステム内に用意されている。
ついで、分割統治法による凸分解基本アルゴリズムに従って、上記ポリゴンデータを凸要素毎に分割されたポリゴンデータの組(ポリゴン部分集合)に分ける。すなわち、初期のポリゴンデータ(非凸多面体のポリゴン集合)を凸要素毎の部分集合の組に分割して出力する(ステップ1003,1004)。しかる後、各部分集合毎に凸多面体を生成する。尚、ポリゴンの各形状は一般的に任意であるが、各ポリゴンは凸性を満たしているものとする。
【0100】
(c) 分割統治法による凸分解基本アルゴリズム
図29は分割統治法による凸分解基本アルゴリズムのフロー図である。
初期ポリゴン集合(非凸多面体のポリゴン集合)Pを入力し(ステップ1101)、ついで、初期ポリゴン集合Pに対して分割統治法による処理を施す(ステップ1102)。すなわち、初期ポリゴン集合Pを第1、第2の2つのグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴン部分集合を求める。ついで、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合して凸要素毎の複数の新たなポリゴン部分集合DP1,DP2,・・・を求める。
しかる後、ポリゴン部分集合DP1,DP2,・・・を出力する(ステップ1103)。
【0101】
以下は、分割統治法の詳細のプログラム例である。
上記アルゴリズムから判るとおり、分割統治法では、分割と統治の過程が再起的に繰り返される。分割統治法において問題依存性が存在する最も重要な個所は、「併合」過程、すなわち、関数Mergeの構成方法である。
【0102】
(d) 分割統治法におけるMergeプロセス
図30は分割統治法におけるMergeプロセスの流れ図である。
1) 凸要素集合DC(PL),DC(PH)を用意する(ステップ1111a,1111b)。凸要素集合DC(PL),DC(PH)の各要素は、図30のCLi,CHjで示されるようにその要素を構成するポリゴンの集合(polygons)とその要素の境界をなす境界稜線の集合(boundary edges)で構成される。
2) Merge 可能性の判定
凸要素CLi,CHjが互いにMerge可能か否かを判定する(ステップ1112)。判定条件は以下の通りである。
条件1:凸要素CLi,CHjで共有している境界稜線を全て取り出す。共有しているか否かは、境界稜線を構成するポリゴン辺の中点を比較することにより判定できる。共有している境界稜線が1本もなければMerge不可能と判定する。
条件2:共有している境界稜線に対し、その稜線を共有するCLiのポリゴンとCHjのポリゴン間の凹凸関係を調べる。1組でも凹の関係にあるポリゴンの組合せが存在すれば、Merge不可能と判定する。
条件3:条件1、条件2をクリアした場合、すなわち、境界稜線を共有するポリゴンの全組合せにおいてポリゴン間が凸の関係にある時はMerege可能と判定する。
【0103】
3) Mergeの順序
凸要素のMergeは以下の順序で行なう。
3−1) 凸要素CL1がCHj(j=1,2,・・・NPH)とMerge可能か否かを判定する。もし、CL1がCHjとMerge可能であれば、それ以降は、CL1,DC(PH)を以下のようにする。
3−2) CLi(i=2,3,・・・NPL)に対して同様の手順を実行する。
4) 併合凸要素集合DC(P)の構成
上記3)のプロセスにより
併合凸要素集合DC(P)=Merge (DC(PL),DC(PH))
が実行され、
DC(P)={CL1,CL2,・・・CLPNPL,CHj′,CHj″・・・}
で与えられる併合凸要素集合DC(P)が出力される(ステップ1113)。ここで、{CHj′,CHj″・・・}は、いかなるCLiともMergeしないDC(PH)の凸要素である。
【0104】
(e) ポリゴン間の凹凸関係の判定
図31はポリゴン間の凹凸関係判定処理の説明図である。図31(a)に示すように1本の境界稜線BEGを共有する2枚のポリゴンA,Bを想定する。ポリゴンの相対的位置関係は、互いに離れているか、図31(a)のように稜線を介して接しているかのどちらかであって、それ以外の関係(例えば、稜線以外の部分で交わっている等)はないものとする。
図31(a)において、ベクトルb,cは、それぞれポリゴンB,ポリゴンAの重心p,qから境界稜線x1−x0=aに降ろした垂線ベクトルである。又、ベクトルa,b,cを単位化したものをそれぞれe0,e1,e2とする。nA,nBは、それぞれポリゴンA、ポリゴンBの外向き法線ベクトル(ポリゴンを定義する各格子点における光の反射方向の平均とする)を表す。この時、b,c,e0,e1,e2は次式で与えられる。
【0105】
ポリゴンA、ポリゴンBの凹凸関係を判定するため、図6(b)のようにベクトルbがX0軸と一致するように座標変換を行なう。この時の変換行列は次式
【数1】
で与えられる。
【0106】
法線ベクトルnBの向きにより、次の2通りの条件のどちらかを満たせば、ポリゴンA,ポリゴンBは凸の関係にあるといえる。すなわち、
1) (e0×e1)・nB>0の場合
[T・c]Z<0
であり、かつ、
(e1×e2)・nA>0を満たす時、
2) (e0×e1)・nB≦0の場合
[T・c]Z≧0
であり、かつ、
(e1×e2)・nA≦0を満たす時、
ポリゴンA,ポリゴンBは凸の関係にあるといえる。実際のCADデータを扱う場合には、誤差を考慮して判定条件は以下のようになる。
【0107】
1) (e0×e1)・nB>0の場合
[T・c]Z<ε
であり、かつ、
(e1×e2)・nA>−εを満たす時、
2) (e0×e1)・nB≦0の場合
[T・c]Z≧−ε
であり、かつ、
(e1×e2)・nA≦εを満たす時、
ポリゴンA,ポリゴンBは凸の関係にある。ここで、εは扱う対象によって決める微少量である。
分割統治法で得られるポリゴン部分集合の集合DC(P)の各要素は、実は凸とは限らない。図31に示した凹凸判定条件は、局所的条件である。しかしながら、図31に示した条件のもとに初期のポリゴン集合を分割すると、多くの場合において非常によい凸性を示す。
【0108】
(G)凸多面体への分解処理の第2実施例(前処理)
分割統治法による基本アルゴリズムによって凸分解を行なう場合、分解したあとの凸要素数は最少とは限らない。第2実施例では、凸分解基本アルゴリズムを繰り返して使用することにより、凸要素数を最適化する(できるだけ少なくする)ものである。第2実施例の最適化法は厳密な意味で凸要素数を最小化する分けではなく、あくまでも限られた時間内で、できるだけ要素数を減らす手法である。
図32は第2実施例(最適化法)の処理の流れ図である。
三次元CADシステム等から初期ポリゴン集合(非凸多面体のポリゴン集合)Pを入力し(ステップ1201)、ついで、初期ポリゴン集合Pに対して分割統治法による凸分解基本アルゴリズムを適用する(ステップ1202)。すなわち、初期ポリゴン集合Pを第1、第2の2つのグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴン部分集合を求める。ついで、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合して凸要素毎の複数の新たなポリゴン部分集合DP1,DP2,・・・を求める。
【0109】
しかる後、ポリゴン部分集合DP1,DP2,・・・を要素とする凸要素集合DC(P)を出力する(ステップ1203)。尚、凸要素数はNDC(P)である。
ついで、凸要素集合DC(P)に再度分割統治法による凸分解基本アルゴリズムを適用する(ステップ1204)。すなわち、凸要素集合DC(P)を構成する複数のポリゴン部分集合を第1、第2のグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴンの部分集合を求め、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合して複数の新たなポリゴン部分集合DDP1,DDP2,・・・を求める。
しかる後、ポリゴン部分集合DDP1,DDP2,・・・を要素とする凸要素集合DC(DC(P))を出力する(ステップ1205)。尚、凸要素数はNDDC(P)である。
【0110】
ついで、前回に求めたポリゴン部分集合の数NDC(P)と今回求めたポリゴン部分集合の数NDDC(P)を比較し(ステップ1206)、一致すれば、凸要素集合DC(DC(P))を最終的に出力する(ステップ1207)。そして、この凸要素集合DC(DC(P))を構成するポリゴン部分集合を用いて凸多面体を生成することになる
一方、NDDC(P)とNDC(P)が等しくない場合には(例えば、NDDC(P)<NDC(P))、DC(DC(P))→DC(P)とし(ステップ1208)、以後、ステップ1204以降の処理を繰り返す。すなわち、新たに求めた複数のポリゴン部分集合DC(DC(P))に対して分割統治法による凸分解処理を繰返し施す。最適化法では、凸要素数がこれ以上減らなくなるまで凸分解基本アルゴリズムを出力DC(P)に対して繰返し作用させる。
【0111】
(H)凸多面体への分解処理の第3実施例(前処理)
分割統治法による基本アルゴリズムを用いる方法では、穴等の認識において分割した凸要素数が予想以上に増える可能性がある。第3実施例では、凸要素数を減少するために、穴等の物体に対してブール代数を負とみなして凸分解処理を行ない、その他の正物体に対して第1実施例の凸分解処理を施すものである。
ブール代数を負とみなすとは、端的に各ポリゴンの法線方向の符号を反転(法線方向を逆転)することである。通常の分割統治法による基本アルゴリズムと負物体認識法とを組み合わせることにより、凸要素数の少ない凸分解が可能となる。
図33は穴等の形状(負物体)を含む物体のブール集合演算による物体表現法の説明図である。HLは穴、HL′は法線方向を逆転した穴部、BDYは穴のない物体(穴なし物体)である。穴付き物体は穴なし物体BDYから法線方向を逆転した穴部分を差し引くことにより表現される。
【0112】
図34は第3実施例の凸分解処理の流れ図、図35はその凸分解結果の説明図である。
三次元CADシステム等から初期ポリゴン集合(非凸多面体のポリゴン集合)Pを入力し(ステップ1301)、ついで、初期ポリゴン集合Pの法線方向を全て逆転したポリゴン集合PBを作る(ステップ1302)。しかる後、ポリゴン集合PBに対して凸分解基本アルゴリズムを適用する(ステップ1303)。すなわち、ポリゴン集合PBを第1、第2の2つのグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴン部分集合を求める。ついで、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合して凸要素毎の複数の新たなポリゴン部分集合を求める。
【0113】
しかる後、該複数のポリゴン部分集合を要素とする凸要素集合DC(PB)(図35参照)を出力し、又、凸要素集合DC(PB)の各凸要素において、ポリゴン数が2以上で構成される凸要素を取りだし、それらの凸要素を構成する全てのポリゴン集合をP2(DC(PB))とする。すなわち、穴等の負物体凸要素を構成するポリゴンを集めてP2(DC(PB))とする(ステップ1304)。
ついで、初期ポリゴン集合PとP2(DC(PB))の差集合を取り、正物体を構成するポリゴン集合P−P2(DC(PB))を求める(ステップ1305)。正物体を構成するポリゴン集合(差集合)が求まれば、該差集合P−P2(DC(PB))に対して分割統治法による凸分解基本アルゴリズムを適用する(ステップ1306)。すなわち、差集合P−P2(DC(PB))を第1、第2の2つのグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴン部分集合を求める。ついで、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合して凸要素毎の複数の新たなポリゴン部分集合を求める。
しかる後、該複数のポリゴン部分集合を要素とする凸要素集合DC(P−P2(DC(PB)))を出力し(ステップ1307、図35)、正物体の認識を行なう。
最後に、DC(P−P2(DC(PB)))を正物体の凸要素、DC(PB)を負物体の凸要素として出力する(ステップ1308)。以後、各凸要素のポリゴン部分集合を用いて凸多面体が生成されることになる。
【0114】
(I)凸多面体への分解処理の第4実施例(前処理)
凸分解の第1実施例に最適化法を施すことにより凸要素数を減少したのと同様に、第3実施例に最適化法を施して凸要素数を減少することができる。
図36はかかる場合の凸分解処理の流れ図であり、第3実施例と異なる点は、ステップ1303′、1306′において凸分解基本アルゴリズムの替わりに最適化法を適用した点である。
【0115】
(J)凸多面体への分解処理の第5実施例(前処理)
(a) 考察
以上の実施例では、第1グループのポリゴン部分集合CLiと第2グループのポリゴン部分集合CHjのMerge可能性を以下のように判定している。すなわち、ポリゴン部分集合CLiとポリゴン部分集合CHjが共通稜線を有しているのか、いないのかに関係なく、CLiの境界稜線を構成する全ポリゴン辺とCHjの境界稜線を構成する全ポリゴン辺の中点が一致するか否かにより共通の境界稜線を求めている。
【0116】
しかし、かかるMerge可能性の判定処理では、あらゆるポリゴン部分集合の組合せにおいて、しかも、境界稜線を構成するポリゴン辺の総当たり的な組合せにおいて中点が一致するか否かを調べなくてはならないため、Merge可能性の判定処理に相当の時間を要し、凸分解の高速化に限界を与えている。
ところで、凸要素CLiの境界稜線と凸要素CHjの境界稜線が共通の境界稜線部分を有する場合には、凸要素CLiの境界稜線で構成する凸物体と凸要素CHjの境界稜線で構成する凸物体とが干渉する。そこで、凸要素CLi,CLjの共通の境界稜線を求める処理を実行する前に、計算負荷がO(N)の干渉チェック法により凸要素CLiの境界稜線で構成する凸物体と凸要素CHjの境界稜線で構成する凸物体とが干渉するかチェックする。そして、干渉しない場合には以降のmerge処理をスキップし、干渉する場合のみ以降のMerge処理を継続するようにする。このようにすれば、Merge処理に要する時間を大幅に短縮でき凸分解処理を高速に行なうことができる。
【0117】
(b) 干渉チェック前処理の概略
図37は第5実施例の干渉チェック前処理の別の概略的処理フローであり、図3の第1実施例と同一部分には同一符号を付している。第1実施例と異なる点は、ステップ1003′において、分割統治法による凸分解基本アルゴリズムに替えて干渉チェック組込型の分割統治法による凸分解基本アルゴリズム(高速凸分解基本アルゴリズム)を適用している点である。
【0118】
図38は高速凸分解基本アルゴリズムの処理のフローである。
初期ポリゴン集合(非凸多面体のポリゴン集合)Pを入力し(ステップ1101)、ついで、初期ポリゴン集合Pに対して高速凸分解アルゴリズムによる凸分解処理を施す(ステップ1102′)。すなわち、初期ポリゴン集合Pを第1、第2の2つのグループに分割し、各グループにおいて隣接ポリゴンとの関係が凸であるポリゴン部分集合を求める。ついで、共通の境界稜線を有する第1グループのポリゴン部分集合と第2グループのポリゴン部分集合とが凸関係にあるものを併合(マージング)して凸要素毎の複数の新たなポリゴン部分集合DP1,DP2,・・・を求める。
しかる後、ポリゴン部分集合DP1,DP2,・・・を出力する(ステップ1103)。尚、各ポリゴン部分集合DP1,DP2,・・・に基づいて凸多面体が生成される。
分割統治法において問題依存性が存在する最も重要な個所は、「併合」過程、すなわち、関数Mergeの構成方法である。
【0119】
(c) 分割統治法におけるMergeプロセス
凸要素CLi,CHjがMerge可能であるためには、CLi,CHjが共通の境界稜線を有することである。すなわち、凸要素CLi,CHjが互いに境界稜線を通じて干渉していることが必要条件である。従って、凸要素CLi,CHj間に干渉チェックアルゴリズムを 適用し、干渉していなければ、CLi,CHjに対して以後のMerge処理をスキップできる。
図39は分割統治法におけるMergeプロセスの流れ図である。
1) 凸要素集合DC(PL),DC(PH)を用意する(ステップ1111a,1111b)。
凸要素集合DC(PL),DC(PH)の各要素はポリゴン部分集合(polygons)とその要素の境界をなす境界稜線の集合(boundary edges)で構成される。
【0120】
2) Merge 可能性の判定
凸要素CLi,CHjが互いにMerge可能か否かを判定する(ステップ1112′)。判定条件は以下の通りである。
条件1:凸要素CLi,CHjの境界稜線BedgeCLi、BedgeCHj間で干渉チェックを行なう。干渉が無ければMerge不可能と判定する。
条件2:干渉している可能性のある凸要素CLi,CHjに対し、CLi,CHj間で共有している境界稜線を全て取り出す。共有しているか否かは、境界稜線を構成するポリゴン辺の中点を比較することにより判定できる。共有している境界稜線が1本もなければMerge不可能と判定する。
条件3:共有している境界稜線に対し、その稜線を共有するCLiのポリゴンとCHjのポリゴン間の凹凸関係を調べる。1組でも凹の関係にあるポリゴンの組合せが存在すれば、Merge不可能と判定する。
条件3:条件1、条件2、条件3をクリアした場合はMerege可能と判定する。
【0121】
3) Mergeの順序
凸要素のMergeは以下の順序で行なう。
3−1) 凸要素CL1がCHj(j=1,2,・・・NPH)とMerge可能か否かを判定する。もし、CL1がCHjとMerge可能であれば、それ以降は、CL1,DC(PH)を以下のようにする。
3−2) CLi(i=2,3,・・・NPL)に対して同様の手順を実行する。
4) 併合凸要素集合DC(P)の構成
上記3)のプロセスにより
併合凸要素集合DC(P)=Merge (DC(PL),DC(PH))
が実行され、
DC(P)={CL1,CL2,・・・CLPNPL,CHj′,CHj″・・・}
で与えられる併合凸要素集合DC(P)が出力される(ステップ1113′)。ここで、{CHj′,CHj″・・・}は、いかなるCLiともMergeしないDC(PH)の凸要素である。
【0122】
(d) 干渉チェックアルゴリズム
凸物体間の干渉チェックアルゴリズムのうち、Bobrow法、Lin/Canny法、Gilbert法が既存の計算負荷O(N)の干渉チェック法として使用できる。
図40は干渉チェックアルゴリズムの概略処理フローである。
凸要素CLi,CHjの境界稜線BedgeCLi、BedgeCHjで構成される凸物体間に干渉チェックアルゴリズムを適用する(ステップ1401)。
干渉チェックアルゴリズムの適用により境界稜線BedgeCLi、BedgeCHjの最接近点間の距離dist(BedgeCLi、BedgeCHj)を求めて出力する(ステップ1402)。
最接近点間の距離が求まれば、該距離dist(BedgeCLi、BedgeCHj)とεの大小を比較し、
dist(BedgeCLi、BedgeCHj)≦εの場合には干渉すると判定し、
dist(BedgeCLi、BedgeCHj)>εの場合には干渉しないと判定する。尚、εは干渉チェック判定の精度を決めるユーザ定義の微小定数である。
【0123】
(f) 干渉チェック方法(Gilbert法)
凸要素CLi,CHjの境界稜線BedgeCLi、BedgeCHjで構成される凸物体間の最接近点間の探索及びその距離dist(BedgeCLi、BedgeCHj)は前述のGilbert法により求める。
尚、Gilbert法の初期格子点(初期値)V0は一般には任意であるが、各物体の重心差分方向の格子点から出発するのが効率的である。
Gilbert法により最接近点を求める時、以下の不等式が成立する(図41参照)。 rk=−hk(−νk)/|νk|≦ |ν(K)|≦|νk| (16)
従って、あるkに対し、rk>0ならば2凸物体間の干渉は無いといえる。
【0124】
(g) Gibert法に基づくMerge可能性判定処理
図42はGilbert法に基づくMerge可能性判定処理フローである。
凸要素CLi,CHjの境界稜線BedgeCLi、BedgeCHjでそれぞれ構成される凸物体間にGilbert法を適用して、(13)式のrkを計算する(ステップ1411)。
ついで、rk>0か判断し(ステップ1412)、rk>0の場合には干渉しないから、Merge不可能と判定する(ステップ1413)。
しかし、rk≦0の場合には、干渉しているからMerge干渉ありとして、前述のMerge可能性の条件2〜条件4よりMerge可能/不可能を判定する(ステップ1414)。
【0125】
(h) 簡略化したGibert法に基づくMerge可能性判定処理
Gibert法に基づくMerge可能性判定処理を更に簡略化する。簡略化の要点はGilbert法の初期格子点V0として境界稜線上の頂点集合BedgeCLi、BedgeCHjから任意の頂点BedgeCLi0、BedgeCHji0を選んで、
V0=BedgeCLi0−BedgeCHji0 (17)
を構成する。ついで、このV0を使って
r=−hk(−V0)=−hk1(−V0)−hk2(V0) (18)
を計算する。もし、r>0ならば、BedgeCLi、BedgeCHj間は干渉が無く、凸要素CLi,CHjはMergeする可能性が無いと判定する。
【0126】
図43は簡略化したGilbert法に基づくMerge可能性判定処理フローである。
凸要素CLi,CHjの境界稜線BedgeCLi、BedgeCHjでそれぞれ構成される凸物体間に簡略化したGilbert法を適用して、(15)式のrを計算する(ステップ1411′)。
ついで、r>0か判断し(ステップ1412′)、r>0の場合には干渉しないから、Merge不可能と判定する(ステップ1413′)。しかし、r≦0の場合には、干渉しているからMerge干渉ありとして、前述のMerge可能性の条件2〜条件4よりMerge可能/不可能を判定する(ステップ1414′)。
【0127】
(K)凸分解の変形例
(a) 変形例1
以上の第5実施例の凸分解法に最適化処理を施して凸要素数を減少するように構成することができる。この場合の処理フローを図44に示す。図44において、第2実施例の処理(図32参照)と異なる点は、ステップ1202′、1204′において凸分解基本アルゴリズムに替わって、干渉チェック組込型の高速凸分解アルゴリズムを使用している点である。
(b) 変形例2
干渉チェック組込型の高速凸分解アルゴリズムを負物体が存在する場合における凸分解処理に適用することができ、この場合の処理フローを図45に示す。図45において、第3実施例と異なる点は、ステップ1303′、1306′において凸分解基本アルゴリズムに替わって、干渉チェック組込型の高速凸分解アルゴリズムを使用している点である。
(c) 変形例3
変形例2に更に最適化処理を施して凸要素数を減少するように構成することもできる。
【0128】
(L)最接近点探索の前処理(近接点線形リストの作成)
以上では、ポリゴンデータより有向グラフ型構造データを前処理により生成し、この有向グラフ型構造データを用いて凸多面体間あるいは非凸多面体間の最接近点探索処理を行なった場合である。
有向グラフ構造データとは別の構造データ、すなわち、近接点線形リストを前処理により作成し、該リストを使用することにより最接近点の連続探索を高速化することができる。
近接点線形リストとは、形状モデル(CGモデル)を構成する各ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えたリストである。リストの先頭から順次たどることにより、その頂点に繋がる全ての近接点を拾いだすことができる。
【0129】
(a) 近接点線形リストの例
図46は、直方体の近接点線形リストの例を示している。図示の通り、近接点線形リストは、頂点を順次繋いだnext方向と、各頂点にポリゴン辺を介して連結する近接点を配列するbranch方向の2方向を持つ。branch方向の先頭には、その頂点自身が入る。
(b) 近接点線形リストの構成法
図47は近接点線形リストの作成処理のフローである。尚、図48に示すように対象物体は三角形ポリゴンの集合で構成されており、各三角形ポリゴンはvertexに続く3つの頂点座標値とnormalに続く3つの各頂点における光の反射方向データで表現される。
【0130】
三次元CADシステムは形状モデルを作成してポリゴンデータファイルを出力する(ステップ2001、2002)。ついで、干渉チェック組込型分割統治法による凸分解基本アルゴリズムに従って、上記ポリゴンデータを凸要素毎に分割されたポリゴンデータの組(ポリゴン部分集合)に分ける。すなわち、初期のポリゴンデータを凸要素毎の部分集合の組に分割して出力する(ステップ2003,2004)。しかる後、各部分集合毎に、すなわち凸多面体毎に近接点線形リスト構成アルゴリズムを用いて近接点線形リストをを生成してメモリに展開する(ステップ2005、2006)。ついで、該近接点線形リストを用いて最接近点探索処理(干渉チェック処理)を実行すると共に近接点線形リストを外部記憶媒体に記憶する(ステップ2007)。以後、該近接点線形リストが必要な場合には、新たに作成せず、外部記録媒体から読み出してメモリに展開する(ステップ2008)。
【0131】
(c) 近接点線形リスト構成アルゴリズム
図49は対象物体の凸要素毎のポリゴンデータ説明図、図50は近接点線形リスト構成アルゴリズムの説明図である。
対象物体が三角形ポリゴンの集合で構成されているものとすると、近接点線形リストは以下のフローに従って構成される。
1) 凸分解基本アルゴリズムにより、凸要素毎のポリゴンデータを用意する(図49参照)。
2) 各々のポリゴンデータ(pi,qi,ri)に対し、各頂点をリストLに繋げていく。next方向を頂点に対する線形リスト方向、branch方向を各頂点の近接点方向とする。リストLの先頭要素は第1番目のポリゴンの第1頂点であり、作成途中では図50(a)に示すデータ構造となっている。具体的には以下のようにリストを作成する。
2−1) リストLの先頭要素topを割り付ける。すなわち、topとして最初のポリゴンの最初の頂点を割り付ける。
【0132】
2−2) ポリゴン(pi,qi,ri)に対し、以下の割付けを繰り返す。
1) if(全てのjに対し、Lj≠pi)ならば、新しい要素piをnext方向の端に割り付ける(図50(b)参照)。ついで、頂点Lj+1のbranch方向に対し、自分自身pi及びqi,riを割り付ける(図50(c)参照)。
2) if(あるjに対し、Lj=pi)ならば、Ljのbranch方向に対し、qi,riを割り付ける。もし、branch方向に既にqi,riと同一頂点があれば割り付けることはしない(図50(d)参照)。
3) 頂点qiに対して上記1)、2)の処理を実行する。ただし、頂点qiに対するqi以外のbranch候補はpi,riである。
4) 頂点riに対して上記1)、2)の処理を実行する。ただし、頂点riに対するri以外のbranch候補はpi,qiである。
2−3) 全てのポリゴン集合∪i(pi,qi,ri)に対し、2−2)の処理を繰り返す
。
【0133】
(d) 近接点線形リストの作成例
図51、図52は近接点線形リストの作成例説明図である。
凸分解基本アルゴリズムにより、凸要素毎のポリゴンデータを用意する(ステップ2011)。以後、第1ポリゴンをリストに組み込み(ステップ2012)、ついで、第2ポリゴンをリストLに組み込む(ステップ2013)。
すなわち、ステップ2012において、まず、第1ポリゴンの第1頂点V1をtopとして割り付ける。すなわち、
top=L1=V1
とする(2012a)。ついで、頂点V1に対するbranch方向に第1ポリゴンの全頂点V1,V2,V3を割り付ける(ステップ2012b)。しかる後、第2頂点V2をnext方向に割り付け(ステップ2012c)、割付け後、頂点V2に対するbranch方向に第1ポリゴンの全頂点V2,V3,V1を割り付ける(ステップ2012d)。以後、同様に第3頂点V3をnext方向に割り付け(ステップ2012e)、割付け後、頂点V3に対するbranch方向に第1ポリゴンの全頂点V3,V1,V2を割り付ける(ステップ2012f)。
【0134】
ステップ2013において、第2ポリゴンの第1頂点V1を割り付ける。この場合、next方向に頂点V1は既に割り付けられているから、頂点V1のbranch方向に頂点V1,V3,V4を割り付ける。しかし、既に、頂点V1,V3は割り付けられているから頂点V4のみを割り付ける(ステップ2013a)。
ついで、第2頂点V3をnext方向に割り付ける。この場合、next方向に頂点V3は既に割り付けられているから、頂点V3のbranch方向に頂点V3,V4,V1を割り付ける。しかし、既に、頂点V3,V1は割り付けられているから頂点V4のみを割り付ける(ステップ2013b)。
しかる後、第3頂点V4をnext方向に割り付ける(ステップ2013c)。ついで、頂点V4のbranch方向に頂点V4,V1,V3を割り付ける(ステップ2013d)。
以上では、ポリゴンを三角形ポリゴンとして説明したが、三角形ポリゴンに限定されず、任意の多角形ポリゴンでもよい。N個の頂点から近接点線形リストを作成する計算負荷はO(N2)である。
【0135】
(M)最接近点探索の前処理(近接点多分木リストの作成)
近接点線形リストを作成する計算負荷はN個の頂点の場合O(N2)であり大きい。そこで、最接近点の連続探索に使用できる別のデータ構造のリスト(近接点多分木リスト)を作成し、該リストを使用することにより最接近点の連続探索を高速化する。
近接点多分木リストとは、次のような頂点の配列リストである。すなわち、基準頂点を定めると共に、該基準頂点のX座標値より大きい第1ネクスト方向(xright)、X座標値より小さい第2ネクスト方向(xleft)、Y座標値より大きい第3ネクスト方向(yright)、Y座標値より小さい第4ネクスト方向(yleft)、Z座標値より大きい第5ネクスト方向(zright)、Z座標値より小さい第6ネクスト方向(zleft)を定める。そして、基準頂点の各軸座標値と該基準頂点にポリゴン辺で繋がっている頂点(対象頂点という)の各軸座標値とを比較し、その大小に応じて対象頂点をリンクするネクスト方向を求めると共に、該ネクスト方向に基準頂点に近い順に前記対象頂点をリンクする。ネクスト方向に対象頂点をリンクする際、該ネクスト方向に既にリンクされている他の頂点の座標値と対象頂点の座標値が等しい場合には、該他の頂点と対象頂点の各軸座標値を比較する。そして、その大小に応じたネクスト方向を求め、対象頂点を前記他の頂点に関して該ネクスト方向にリンクする。又、各頂点にbranch方向を定め、該方向に該頂点にポリゴン辺で繋がる全頂点を配列する。以上のように作成したものが近接点多分木リストである。
【0136】
(a) 近接点多分木リストの例
図53は、直方体の近接点多分木リストの例を示している。図示の通り、近接点多分木リストにおいて、各頂点はx,y,zの各軸方向の大小に相当する6つのリンク方向xright、xleft、yright、yleft、zright、zleftを備えると共に、1つのbranch方向を備えている。頂点のbranch方向には該頂点にポリゴン辺で繋がる全頂点が配列され、その先頭には、該頂点自身が配置される。
【0137】
(b) 近接点多分木リストの構成法
図54は近接点多分木リストの作成処理のフローである。三次元CADシステムは形状モデルを作成してポリゴンデータファイルを出力する(ステップ2101、2102)。ついで、干渉チェック組込型分割統治法による凸分解基本アルゴリズムに従って、上記ポリゴンデータを凸要素毎に分割されたポリゴンデータの組(ポリゴン部分集合)に分ける。すなわち、初期のポリゴンデータを凸要素毎の部分集合の組に分割して出力する(ステップ2103,2104)。しかる後、各部分集合毎に、すなわち凸多面体毎に近接点多分木リスト構成アルゴリズムを用いて近接点多分木リストを生成する(ステップ2105)。
ついで、近接点多分木変換アルゴリズムにより、近接点多分木リストを近接点線形リストに変換してしてメモリに展開する(ステップ2106、2107)。しかる後、該近接点線形リストを用いて最接近点探索処理(干渉チェック処理)を実行すると共に近接点線形リストを外部記憶媒体に記憶する(ステップ2108)。以後、該近接点線形リストが必要な場合には、新たに作成せず、外部記録媒体から読み出してメモリに展開する(ステップ2109)。
【0138】
(c) 近接点多分木リスト構成アルゴリズム
対象物体が三角形ポリゴンの集合で構成されているものとすると、近接点多分木リストは以下のフローに従って構成される。
1) 凸分解基本アルゴリズムにより、凸要素毎のポリゴンデータを用意する(図49参照)。
2) 各々のポリゴンデータ(pi,qi,ri)に対し、各頂点を多分木リストMLに繋げていく。
多分木リストMLにおいて、xright、xleft、yright、yleft、zright、zleftをそれぞれ着目している頂点から見たx,y,z軸の大小方向とする。また、各頂点は近接点方向としてbranch方向を持つ。具体的には以下の手続きに従って近接点多分木リストMLを構成していく(図53参照)。
【0139】
2−1) MLの先頭要素topを割り付ける。topとしては、最初のポリゴンの最初の頂点を割り付ける。
2−2) ポリゴン(pi,qi,ri)に対し、以下の割付けを繰り返す。
(1)頂点piに対し、MLの先頭要素topから見てx座標値の大小、y座標値の大小、z座標値の大小の順に辞書式に比較し、割付けを行なう。すなわち、まず、頂点piのx座標値がtopのx座標値より大きい時は、topから見てxright方向の配置済みの他の要素のx座標値と頂点piのx座標値の大小を比較し、xright方向に対して昇順になるようにpiを配置する。頂点piのx座標値がtopのx座標値より小さい時は、topから見てxleft方向に対して同様の配置を行う。
頂点piのx座標値と一致するx座標値を有する配置済みの頂点が存在する場合には、y座標値の比較を行い、その配置済み頂点から見てy座標方向に昇順になるように配置する。y座標値が一致する配置済み頂点が存在する場合には、z座標値に対して同様の昇順配置を行う。もし、x,y,zの全ての座標値の一致する頂点が存在すれば、頂点piをその点と同一と見做す。
(2)新しく割り付けた頂点piに対し、該頂点piのbranch方向に自分自身pi及びqi,riを割り付ける。もし、既に、頂点piがbranch要素を有している場合には、各branch要素との比較を行い、同一点の割付けを避けるようにする。
【0140】
(3) 頂点qiに対して上記(1)、(2)の処理を実行する。ただし、頂点qiに対するqi以外のbranch候補はpi,riである。
(4) 頂点riに対して上記(1)、(2)の処理を実行する。ただし、頂点riに対するri以外のbranch候補はpi,qiである。
2−3) 全てのポリゴン集合∪i(pi,qi,ri)に対し、2−2)の処理を繰り返す。 以上では、ポリゴンを三角形ポリゴンとして説明したが、三角形ポリゴンに限定されず、任意の多角形ポリゴンでもよい。N個の頂点から近接点多分木リストを作成する計算負荷はO(NlogN)である。
【0141】
(d) 近接点多分木リスト変換アルゴリズム
凸多面体同士の干渉チェック(最接近点探索処理)では、凸多面体を構成する各頂点とのベクトル内積を取り、その最大値を検出する計算を繰返し行う。この時、各頂点を近接点多分木リストの形式で持っていると、各頂点を順次辿っていくときに煩雑な判定関数が多数絡むことになる。そこで、一端、近接点多分木リストの形式で各頂点の近接点を構成した後は、多分木リストを線形リストに変換しておくと以後の計算量が少なくてすむ。
多分木リストを線形リストに変換するには、例えば、以下に示す再帰関数
vertex * MultiToLinear( )を使用する。
【0142】
上記関数を多分木リストMLの先頭要素topに作用させると(top→MultiToLinear( ))、多分木リストMLは線形リストLに変換される。
近接点多分木リスト変換アルゴリズムの計算時間は、総頂点数をNとすればO(N)である。従って、ポリゴンデータから近接点多分木リスト構成アルゴリズムを経て近接点線形リストLを生成するトータルの計算時間は、O(NlogN)である。
【0143】
(N)最接近点探索の前処理(近接点線形リストのダンプ及びローデング)
最接近点探索処理、すなわち、干渉チェック処理で必要となる近接点線形リスト情報は、全てメモリ上に展開しておかなければならない。もし、ダンプファイル(dump file)からメモリ上へ展開するのに、近接点多分木リストを構成するのと同じ計算時間(総頂点数Nに対してO(NlogN))を要してしまうならば、ダンプファイルを作成する意味がなくなってしまう。そこで、本発明ではダンプファイルからのローデング時間がO(N)となるようにダンプファイルのフォーマットを定めている。
(a) ダンプファイルのフォーマット
ダンプファイルのフォーマットは、図55に示すような形式とする。このファイルフォーマットにおいて、高速ローデングの必須項目は以下の通りである。
1) 凸要素毎に区切られていること、
2) 凸要素を構成する総頂点数(count)の項目があること、
3) 各々の頂点に番号付けがされていること、
4) 各々の頂点に対し、その頂点の近接点個数(bcount)を定義する項目があること、
5) 各々の頂点の座標を定義する項目があること
である。
【0144】
(b) ダンプファイルからのローデング法
1) 凸要素を構成する総頂点数(count)を読み、各頂点を収めるcount次元の配列を作る。
2) 配列に凸要素の各頂点を収めていくと共に、各頂点間をnext方向に結び線形リストを構成する。例えば、Vertexを収める配列をV[Ni]とする時、V[0],V[1],・・・を順にnext方向に結び、線形リストを構成する。
3) 1),2)の処理を各凸要素に施す。
【0145】
4) 各凸要素の各頂点に対し、branchの近接点番号(配列内の位置を指定)をたよりに、branch方向に近接点のリストを張る。例えば、Vertexを収める配列をV[Ni]とする時、Vertex V[0]のbranchの番号が(0,9,1,7,8)ならば、Vertex V[0]のbranch方向にV[0],V[9],V[1],V[7],V[8]を線形リストに繋ぐ。
5) 4)の処理を各凸要素に施す。
上記ローデング法では、同じファイルに対して計2回(1),2),3)が1回目、4),5)が2回目)の読み込みを行う。各頂点のbranch数はほとんどの場合において数10個以下で抑えられるため、合計のローデング時間はO(N)である。図55のように、凸要素毎に分割されたダンプファイルをLファイルという。
(c) 凸包に対するダンプファイル
非凸多面体を包む最小の凸多面体(凸包)に対して、図55と同様のダンプファイルが定義される。この場には、凸要素数は1つであり、vertexは非凸多面体を構成する全ての頂点からなる。凸包に対する図55の形式のファイルをHLファイルという。
【0146】
(O)干渉チェックサブアルゴリズム(包絡球による事前チェック)
任意の非凸多面体に対し、それを包絡する球を前処理において生成しておく。この時、非凸多面体間の干渉チェックに入る前に、包絡球間で干渉チェックを行い、高速化する。
(a) 包絡球の構成法
非凸多面体は三角形ポリゴンの集合で表現されており、∪i(pi,qi,ri)と表現する。サフィックスiは各ポリゴンを識別する添字である。
pi,qi,riの各座標値をpi=(pix,piy,piz)、qi=(qix,qiy,qiz)、ri=(rix,riy,riz)とする。
この時、凸包のmax点、min点を以下のようにして求める。
max=(MAXi(pix,qix,rix),MAXi(piy,qiy,riy),MAXi(piz,qiz,riz))
min=(MINi(pix,qix,rix),MINi(piy,qiy,riy),MINi(piz,qiz,riz))
包絡球は、以下の計算式に基づいて定義される。
半径R=|max−min|/2
中心Pc=(max+min)/2
【0147】
(b) 凸要素に対する包絡球
各凸要素に対しても、それぞれの凸要素を包絡する球が定義される。計算方法は、(a)と同様である。ただし、max,minを定義する時のサフィックスiは各凸要素のポリゴン集合を意味する。
(c) 包絡球による事前のチェックアルゴリズム
図56は包絡球による事前のチェックの処理フローである。
各非凸多面体A,Bの包絡球半径RA,RB、包絡球中心PCA,PCBを前述の方法で求め(ステップ2201、2202)、各包絡球の中心間距離rを次式
r=|PCA−PCB|
により求め、
r≦(RA+RB)かチェックする(ステップ2203)。r>(RA+RB)であれば干渉なしと判定する(ステップ2204)。r≦(RA+RB)であれば、干渉するものと判定し、以後非凸多面体同士の干渉チェックを行う(ステップ2205)。
【0148】
(P)干渉チェックサブアルゴリズム
(凸多面体干渉チェックにおける連続探索)
近接点線形リストより、最新に求まっている最接近点に近接する頂点を抽出し、これら頂点にGilbert法による干渉チェック法を適用して所定時間後の最接近点を探索する。このようにすることにより、干渉チェックに要する時間は凸多面体を表現するポリゴン数にほとんど依存しない一定数以下に抑えることができる。
(a) Gilbert法
凸多面体K1,K2間の最接近点間の距離ν(K)はgK(νK)=0となるνKに対し、(12)′式を使って
ただし、x1i:K1を構成する頂点
x2i:K2を構成する頂点
で与えられる。
【0149】
(b) Gilbert法の直感的理解
図57はGilbert法による最接近点探索法を直感的に理解できるようにした説明図である。その各プロセスを簡単に説明すると以下のようになる。
1) ベクトルηの設定
2つの物体の幾何学的重心を結び、ν0とする(図57図(a))。
2) 以下の内積計算
hK1(−ν0)=max[−x1i・ν0:i=1,・・・m1] (20)
hK2(−ν0)=max[−x2i・ν0:i=1,・・・m2] (21)
を行い、ベクトルν0の方向で互いに最も接近している2点p0,q0を選びだす(図57図(a))。
3) ν1の更新
2点p0,q0を結んでν1とする(図57図(b))。
4) 内積計算
ν1に対して2)と同じ内積計算を行い、新たな2点p1,q1を選びだす(図57図(b))。
5) 内積計算とν1の更新を繰り返して、最終的な最接近点ベクトルνfinalを求める(図57図(c))。
上記のプロセスから判る通り、Gilbert法における主な計算負荷は内積計算の過程で発生する。従って、Gilbert法における最接近点探索の計算時間はO(m1+m2)となる。
【0150】
(c) 凸多面体における連続干渉チェック
Gilbert法における計算負荷はサポート関数hK1,hK2の内積計算の過程で発生する。そこで、この内積計算の回数を減らすために最接近ベクトルν(K)の近接点を効率的に見つけだす方法を考える。
凸多面体K1,K2の最接近点νK1,νK2は(19)式から次式で与えられる。
νK1=Σλix1i (i∈IK1Sk) (22)
νK2=Σλix2i (i∈IK2Sk) (23)
最接近点を連続的にサーチする場合、所定時間後の最接近点は(22),(23)式で与えられるνK1,νK2の近傍に存在する。従って、サポート関数hK1,hK2を計算する場合の頂点は(22),(23)式における頂点x1i,x2iの近接点に限ることができる。
【0151】
図58は凸多面体における連続的干渉チェックアルゴリズムのフローである。
まず、2つの凸多面体のそれぞれの幾何中心GK1,GK2を求め、ベクトルν0=GK1−GK2
を求める(ステップ2301)。ついで、ν0を初期値としてGilbert法による干渉チェックアルゴリズムを実行し、(22),(23)式で与えられるνK1,νK2を求める(ステップ2302)。
しかる後、ν0=νK1−νK2としてGilbert法による干渉チェックアルゴリズムを実行する(ステップ2303)。ただし、サポート関数
hK(−ν1)=hK1(−ν1)+hK2(ν1)
の計算において、hK1(−ν1),hK2(ν1)は以下の式に基づいて計算する。
hK1(−ν1)=max[−x1i・ν1:p=(22)式で与えられるx1iの近接点集合の番号]
hK2(−ν1)=max[−x2i・ν1:p=(22)式で与えられるx1iの近接点集合の番号]
ついで、(22),(23)式により最接近点を算出し、以後gK(νK)=0となるまでステップ2303以降の処理を繰り返す。
図58における頂点x1i,x2iの近接点の個数は、殆どのCGモデル(形状モデル)において数10以下に抑えることができる。従って、連続的干渉チェックアルゴリズムの計算負荷は、CGモデルのポリゴン数に関係なく一定である。
【0152】
(Q)干渉チェックサブアルゴリズム(凸包の動的構成/解除)
非凸多面体に対し、それを包絡する最小の凸多面体として凸包を定義する。非凸多面体間の距離が十分離れている場合には凸包間の干渉チェックを行い、凸包同士が干渉し始めたら、非凸多面体を構成する凸要素間の干渉チェックに自動的に移行する。非凸多面体間の距離が再び大きくなった場合には、凸包が回復し、凸包間の干渉チェックに戻す。
(a) 凸包の動的構成/解除の基本的な考え方
図59、図60はは凸包の構成/解除の基本的な考え方を示す説明図である。図59において、A,Bは第1、第2の非凸多面体、CA1,CA2は非凸多面体Aを構成する凸多面体、CB1,CB2は非凸多面体Bを構成する凸多面体である。
1) 非凸多面体A,Bが十分離れている場合には凸包A′、B′間の干渉チェックを行う(図60(a)参照)。
【0153】
2) 凸包A′、B′同士が干渉を始めると(図60(b)参照)、一方の凸包A′を解除し、凸要素CA1,CA2と凸包B′との干渉チェックを行い、干渉する場合には凸要素CA1を取り出す(図60(c)参照)。
3) ついで、凸要素と凸包との立場を入れ替えて、もう一方の凸包B′を解除し、解除した凸包の凸要素CB1,CB2と凸包A′との干渉をチェックを行い、干渉している凸要素CB1を取り出す(図60(d)参照)。
4) 最後に、取り出した凸要素のすべての組合せ(図60ではCA1,CB1)について干渉チェックを行い、それらの内で距離が最小となる距離を求める。(図60(e))。
2)において、例えば、図61(a)に示すように、凸要素CA1,CA2と凸包B′間の干渉が存在しないような場合、凸要素CA1,CA2と凸包B′間の最接近ベクトルを求め、該ベクトルを与える2つの端点p,qを最接近点とする。又、図61(b)のように、凸要素CB1,CB2と凸包A′間の立場を入れ替えた場合において、凸包と凸要素間の干渉が存在しない場合には、凸要素CB1,CB2と凸包A′間の最接近ベクトルを求め、該ベクトルを与える2つの端点p′,q′を最接近点とする。
【0154】
図62は凸包の動的構成/解除アルゴリズムの処理フローである。
非凸多面体A,Bの凸包A′、B′間に干渉チェック処理(最接近探索処理)を施し、最接近点間の距離r(A′,B′)を求める。ついで、r(A′,B′)とεCHの大小を判断する(ステップ2401)。εCHはユーザ定義の微小定数である。
r(A′,B′)>εCHの場合には凸包A′、B′は干渉しないから、凸包A′、B′間の最接近点を非凸多面体A,B間の最接近点とし、出力する(ステップ2402)。以後、凸包を維持したまま上記処理を繰り返す。
一方、r(A′,B′)≦εCHの場合には、凸包同士が干渉するから一方の凸包、例えば凸包A′を解除する。非凸多面体Aの凸要素CAiの和集合を∪iCAiと表現する。ついで、凸包B′と各凸要素CAi間の距離r(CAi,B′)がεCCH以下の凸要素の部分集合∪iCCAiを求める(ステップ2403)。εCCHはユーザ定義の微小定数である。
しかる後、部分集合∪iCCAiを構成する凸要素数が0であるかチェックする(ステップ2404)。∪iCCAi=0の場合には、r(CAi,B′)のうち最小距離 MINir(CAi,B′)を与える凸要素CAkを求め、該凸要素CAkと凸包B′間の最接近点を求め、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2405)。
【0155】
しかし、∪iCCAi>0の場合には、他方の凸包B′を解除する。非凸多面体Bの凸要素CBjの和集合を∪jCBjと表現する。ついで、凸包A′と各凸要素CBj間の距離r(CBj,A′)がεCCH以下の凸要素の部分集合∪jCCBjを求める(ステップ2406)。
しかる後、部分集合∪jCCBjを構成する凸要素数が0であるかチェックする(ステップ2407)。∪jCCBj=0の場合には、r(CBj,A′)のうち最小距離 MINjr(CBj,A′)を与える凸要素CBkを求め、該凸要素CBkと凸包A′間の最接近点を求め、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2408)。
しかし、∪jCCBj>0の場合には、部分集合∪iCCAiと∪jCCBj間の最小距離 MINi,j R(CCAi,CCBj)を与える凸要素CCAp、CCBqを求め、その間の最接近点を求め、非凸多面体A,B間の最接近点として出力する(ステップ2409)。
以後、初めに戻り以降の処理を繰り返す。
【0156】
(R)干渉チェックサブアルゴリズム
(凸包の動的構成/解除及び凸多面体連続干渉チェック)
非凸多面体に対し、それを包絡する最小の凸多面体として凸包を定義する。非凸多面体間の距離が十分離れている場合には凸包間の連続干渉チェックを行い、凸包同士が干渉し始めたら、非凸多面体を構成する凸要素間の干渉チェックに自動的に移行する。非凸多面体間の距離が再び大きくなった場合には、凸包が回復し、凸包間の連続干渉チェックに戻す。
図63は凸包の動的構成/解除及び凸多面体連続干渉チェックのアルゴリズムの処理フロー、図64〜図66はその説明図である。
非凸多面体A,Bの凸包A′、B′間に干渉チェック処理(最接近探索処理)を施し、最接近点間の距離r(A′,B′)を求める。ついで、r(A′,B′)とεCHの大小を判断する。又、フラグcontflgA′=1とする(ステップ2501)。r(A′,B′)>εCHの場合には凸包A′、B′は干渉しないから、凸包A′、B′間の最接近点を非凸多面体A,B間の最接近点とし、出力する(ステップ2502)。以後、凸包を維持したまま上記処理を繰り返す。
【0157】
図64はステップ2501、2502のプロセスを具体的に示すものである。図64に示すとおり、凸包間の干渉チェックでは、初回のサポート関数hの計算は、全点に対する内積計算に基づいて算出されるが、次回以降は連続型干渉チェックのアルゴリズムに基づいて算出される。すなわち、内積計算は最接近点の近接点に限られる。連続型干渉チェックでは、前回の最接近点情報を保持しておくことが必要であるが、この情報は、凸包A′、B′の片方の属性として保持される。ステップ2502の過程では、contflgA′=1のフラグが立ち、(A′,B′)間の干渉チェックが連続型となる。
ステップ2501において、r(A′,B′)≦εCHの場合には、凸包同士が干渉するから一方の凸包、例えば凸包A′を解除する。非凸多面体Aの凸要素CAiの和集合を∪iCAiと表現する。ついで、凸包B′と各凸要素CAi間の距離r(CAi,B′)がεCCH以下の凸要素の部分集合∪iCCAiを求める。又、フラグcontflgCCA1=1とする(ステップ2503)。
【0158】
しかる後、部分集合∪iCCAiを構成する凸要素数が0であるかチェックする(ステップ2504)。∪iCCAi=0の場合には、r(CAi,B′)のうち最小距離 MINir(CAi,B′)を与える凸要素CAkを求め、該凸要素CAkと凸包B′間の最接近点を求める。そして、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2505)。r(CAi,B′)は連続型干渉チェックで求める。
【0159】
図65(a)は、ステップ2503〜2505の具体的な説明図である。連続型干渉チェックにおける前回の最接近点情報は、非凸多面体Aの凸要素CAiの属性として保持される。ステップ2503においてcontflgCCA1=1のフラグが立ち、ステップ2505における(CAi,B′)間の干渉チェックは連続型となる。
ステップ2504において、∪iCCAi>0の場合には他方の凸包B′を解除する。非凸多面体Bの凸要素CBjの和集合を∪jCBjと表現する。ついで、凸包A′と各凸要素CBj間の距離r(CBj,A′)がεCCH以下の凸要素の部分集合∪jCCBjを求める。又、フラグcontflgCCB1=1とする(ステップ2506)。
しかる後、部分集合∪jCCBjを構成する凸要素数が0であるかチェックする(ステップ2507)。∪jCCBj=0の場合には、r(CBj,A′)のうち最小距離 MINjr(CBj,A′)を与える凸要素CBkを求め、該凸要素CBkと凸包A′間の最接近点を求め、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2508)。
【0160】
図65(b)は、ステップ2506〜2508の具体的な説明図である。連続型干渉チェックにおける前回の最接近点情報は、非凸多面体Bの凸要素CBjの属性として保持される。ステップ2506においてcontflgCCBj=1のフラグが立ち、ステップ2508における(CAi,B′)間の干渉チェックは連続型となる。
ステップ2507において、∪jCCBj>0の場合には、部分集合∪iCCAiと∪jCCBj間の最小距離 MINi,j R(CCAi,CCBj)を与える凸要素CCAp、CCBqを求め、その間の最接近点を求め、非凸多面体A,B間の最接近点として出力する。又、全てのフラグcontflgA′、contflgB′、contflgCCA1、contflgCCBjを0にリセットする(ステップ2509)。以後、初めに戻り以降の処理を繰り返す。図66は以上の流れを全体的に示す説明図である。
【0161】
(S)干渉チェックサブアルゴリズム
(凸包の動的構成/解除及び包絡球干渉チェック)
非凸多面体に対し、それを包絡する最小の凸多面体として凸包を定義する。非凸多面体間の距離が十分離れている場合には凸包を包絡する凸包包絡球同士の干渉チェックを行い、凸包包絡球同士が干渉し始めたら凸包同士の干渉チェックを行う。凸包同士が干渉し始めたら、非凸多面体を構成する凸要素に対して、包絡球干渉チェックと凸多面体干渉チェックを行う。非凸多面体間の距離に応じて包絡球干渉チェックと凸包の構成/解除が動的に切り替わる。
図67は凸包の動的構成/解除及び包絡球干渉チェックの処理フローである。
各非凸多面体A,Bの包絡球半径RA,RB、包絡球中心PCA,PCBを求め(ステップ2501、2502)、各包絡球の中心間距離rを次式
r=|PCA−PCB|
により求め、
r≦(RA+RB)かチェックする(ステップ2503)。
【0162】
r>(RA+RB)であれば干渉なしと判定し、最接近点間距離としてrを出力する(ステップ2504)。r≦(RA+RB)であれば、非凸多面体A,Bの凸包A′、B′間に干渉チェック処理(最接近探索処理)を施し、最接近点間の距離r(A′,B′)を求める。ついで、r(A′,B′)とεCHの大小を判断する(ステップ2505)。
r(A′,B′)>εCHの場合には凸包A′、B′は干渉しないから、凸包A′、B′間の最接近点を非凸多面体A,B間の最接近点とし、出力する(ステップ2506)。
一方、r(A′,B′)≦εCHの場合には、凸包同士が干渉するから一方の凸包、例えば凸包A′を解除する。非凸多面体Aの凸要素CAiの和集合を∪iCAiと表現する。ついで、各凸要素CAiの包絡球と非凸多面体Bの包絡球間の干渉チェックを行い、干渉する各凸要素CAiと凸包B′間で干渉チェックを行う。しかる後、凸包B′と各凸要素CAi間の距離r(CAi,B′)がεCCH以下の凸要素の部分集合∪iSCCAiを求める(ステップ2507)。
【0163】
ついで、部分集合∪iSCCAiを構成する凸要素数が0であるかチェックする(ステップ2508)。∪iSCCAi=0の場合には、r(CAi,B′)のうち最小距離 MINir(CAi,B′)を与える凸要素CAkを求め、該凸要素CAkと凸包B′間の最接近点を求め、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2509)。
∪iSCCAi>0の場合には、他方の凸包B′を解除する。非凸多面体Bの凸要素CBjの和集合を∪jCBjと表現する。ついで、各凸要素CBjの包絡球と非凸多面体Aの包絡球間の干渉チェックを行い、干渉する各凸要素CBjと凸包A′間で干渉チェックを行う。しかる後、凸包A′と各凸要素CBj間の距離r(CBj,A′)がεCCH以下の凸要素の部分集合∪jSCCBjを求める(ステップ2510)。ついで、部分集合∪jSCCBjを構成する凸要素数が0であるかチェックする(ステップ2511)。∪jSCCBj=0の場合には、r(CBj,A′)のうち最小距離 MINir(CBj,A′)を与える凸要素CBkを求め、該凸要素CBkと凸包A′間の最接近点を求め、該最接近点を非凸多面体A,B間の最接近点として出力する(ステップ2512)。
【0164】
しかし、∪jSCCBj>0の場合には、部分集合∪iSCCAiと∪jSCCBj間の最小距離 MINi,j r(SCCAi,SCCBj)を与える凸要素SCCAp、SCCBqを求め、その間の最接近点を求め、非凸多面体A,B間の最接近点として出力する(ステップ2513)。
以後、初めに戻り以降の処理を繰り返す。
尚、図67のアルゴリズムに図63の凸多面体の連続干渉チェック処理を組み込むことにより、干渉チェックを高速化することができる。
【0165】
(T)干渉チェックシステムの構成
図68は本発明の干渉チェックシステムの構成図であり、21は形状モデルを生成してポリゴンデータファイルを出力する三次元CADシステム、22はポリゴンデータファイルや前処理により求めた凸要素データ、近接点多分木リスト、近接点線形リスト等を記憶するメモリ、23はポリゴンデータファイルより近接点多分木リストを作成する近接点多分木リスト作成部、24は近接点多分木リストより近接点線形リストを生成する近接点線形リスト作成部、25は非凸多面体を凸要素の集合に分解する凸分解部、26は干渉チェック部、27は近接点線形リストを外部記録媒体に出力すると共に、適宜読み出してメモリ22に展開するリスト入出力部、28はハードディスク等の外部記録媒体である。
【0166】
(U)本発明の応用分野
本発明は以下のような分野における応用が可能である。
(a) 機構設計用CADシステム
機構設計では、製品を組み立てる時に不用意な干渉が度々発生する。このようなことを事前に防ぐためには、機構設計用CADシステム上にて部品間の接合関係、マージンを入念にチェックしておくことが重要になる。リアルタイム干渉チェックシステムを機構設計用CADシステムに組み込むことにより、実際の製品に近い形での事前チェックが可能となる。
(b) 移動ロボットの経路計画
マニピュレータや自走車などの移動ロボットでは、他の物体と衝突しないよう経路計画を事前に行った後に駆動させる場合が多い。例えば、マニピュレータを使った部品組立てにおいては、部品間の干渉、部品とマニピュレータ間との干渉をチェックしながら経路計画をする必要がある。また、掃除ロボット、警護ロボット、運搬ロボットなどの自走ロボットでは、地点間の移動において壁や柱又は机等の障害物との衝突を回避した経路計画が必要である。かかる場合、マニピュレータあるいはロボット制御部に高速の干渉チェックシステムを組込み、事前にチェックする方法が有効である。
【0167】
(c) マルチメディアにおけるアニメーション作成
アニメーションの分野では、グラフィックコンピュータを用いたリアリティの高いアニメーションの作成が望まれている。例えば、アンドロイドモデルを歩かせる場合には、アンドロイドモデルと地上との接触問題を解かなければならず、又、自動車の衝突をシミュレーションする場合には、まさしく自動車間の干渉問題を解く必要がある。
(d) ゲームソフト
従来のゲームソフトはもっぱら二次元的なものが多かったが、今後は、グラフコンピュータを使い、三次元的に表示するものが主流になると予想される。ゲームソフトでは、例えば、シュ−ティングゲームにおけるミサイルと戦闘機の衝突、レーシングゲームにおける車同士の衝突など物体間の干渉問題が多い。
本発明のリアルタイム干渉チェックシステムは、上記応用分野において強力な手段を提供するものである。
以上、本発明を実施例により説明したが、本発明は請求の範囲に記載した本発明の主旨に従い種々の変形が可能であり、本発明はこれらを排除するものではない。
【0168】
【発明の効果】
以上本発明によれば、前処理において近接点線形リストを作成し、干渉チェックに際して最新に求まっている最接近点に近接する頂点を該近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を連続的に探索するようにしたから、全ての頂点に最接近点探索処理を施す必要がないため、高速に干渉チェックを行うことができる。
又、包絡球や凸包を生成し、離れている場合にはこれら包絡球や凸包を用いて干渉チェックを行うようにしたから、高速の干渉チェックを行うことができる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】凸多面体の表面多角形への分解説明図(6面体の場合)である。
【図3】最接近点探索のための凸多面体データ構造説明図(6面体の場合)である。
【図4】本発明の第1の最接近点探索方法の処理フロー図である。
【図5】凸多面体データ入力の説明図である。
【図6】第1の最接近点探索装置の構成図である。
【図7】凸多面体の三角形分割説明図である。
【図8】多角形の三角形分割説明図である。
【図9】第2の最接近点探索方法の処理フロー図である。
【図10】第2の最接近点探索装置の構成図である。
【図11】マージング処理説明図である。
【図12】マージングデータ構造の説明図である。
【図13】マージングアルゴリズムの流れ図である。
【図14】凸包データ説明図である。
【図15】タスクによるマージング処理の説明図である。
【図16】While文を用いたマージング処理の説明図である。
【図17】環境が動的に変化する場合の本発明の説明図(その1)である。
【図18】環境が動的に変化する場合の本発明の説明図(その2)である。
【図19】マージング及びリカバリ処理説明図である。
【図20】While文を用いたリカバリ処理の説明図である。
【図21】非凸多面体間の最接近点探索の全体の処理フロー図である。
【図22】本発明の非凸多面体間の最接近点探索装置の構成図である。
【図23】非凸多面体間の最接近点連続探索の第1の方法説明図である。
【図24】非凸多面体間の第1の最接近点連続探索処理のフロー図である。
【図25】非凸多面体間の最接近点連続探索の第2の方法説明図である。
【図26】非凸多面体間の第2の最接近点連続探索処理のフロー図である。
【図27】システム構成図である。
【図28】干渉チェック前処理の概略的処理フローである。
【図29】凸分解基本アルゴリズムの処理フローである。
【図30】Mergeプロセスの流れ図である。
【図31】ポリゴン間の凹凸関係判定説明図である。
【図32】凸分解前処理の第2実施例処理フローである。
【図33】ブール集合演算による物体表現説明図である。
【図34】凸分解前処理の第3実施例処理フローである。
【図35】負物体がある場合の凸分割の結果説明図である。
【図36】凸分解前処理の第4実施例処理フローである。
【図37】本発明の干渉チェック前処理の別の概略的処理フローである。
【図38】高速凸分解基本アルゴリズムのフロー図である。
【図39】Mergeプロセスの流れ図である。
【図40】干渉チェックアルゴリズムの概略処理フローである。
【図41】Gilbert法による干渉チェック原理説明図である。
【図42】Gilbert法に基づくMerge可能性判定のフローである。
【図43】簡略化したGilbert法に基づくMerge可能性判定のフローである。
【図44】凸分解の第1変形例の処理フローである。
【図45】凸分解の第2変形例の処理フローである。
【図46】近接点リストの例である。
【図47】近接点線形リスト作成の前処理フローである。
【図48】三角形ポリゴンに分割した直方体及びポリゴンデータの説明図である。
【図49】凸要素毎のポリゴンデータ説明図である。
【図50】近接点線形リストを生成するアルゴリズムの説明図である。
【図51】近接点線形リストを生成するアルゴリズムの別の説明図である。
【図52】近接点線形リストの作成説明図である。
【図53】近接点多分木リストの例である。
【図54】近接点多分木リスト作成の前処理フローである。
【図55】近接点線形リストのダンプファイルフォーマット説明図である。
【図56】包絡球による事前チェックアルゴリズムのフローである。
【図57】Gilbert法の基本的な考え方の説明図である。
【図58】凸多面体における連続的干渉チェックアルゴリズムのフローである。
【図59】非凸多面体の説明図である。
【図60】凸包の動的構成/解除の基本的な考え方の説明図である。
【図61】凸包、凸要素間の干渉チェック説明図である。
【図62】凸包の動的構成/解除アルゴリズムののフローである。
【図63】凸包の動的構成/解除及び凸多面体連続干渉チェックのフローである。
【図64】凸包間の連続型干渉チェックの説明図である。
【図65】凸要素、凸包間の連続型干渉チェックの説明図である。
【図66】凸要素間の干渉チェック説明図である。
【図67】凸包の動的構成/解除及び包絡球干渉チェックアルゴリズムのフローである。
【図68】干渉チェックシステムの構成図である。
【図69】最接近点アルゴリズムの解決すべき点の説明図(その1)である。
【図70】最接近点アルゴリズムの解決すべき点の説明図(その2)である。
【図71】サポート関数の説明図である。
【図72】Gilbert法による最接近点探索の説明図である。
【図73】Gilbert法の説明図である。
【図74】Gilbert法の数値試験結果説明図である。
【図75】Gilbert法による非凸多面体間の最接近点探索の説明図である。
【符号の説明】
22a・・ポリゴンデータ記憶部
22b・・近接点線形リスト記憶部
24・・近接点線形リスト作成部
26・・最接近点探索処理部
Claims (5)
- 凸多面体間の最接近点を連続的に探索することにより両者の干渉チェックを行なう最接近点探索方装置において、
凸多面体を覆う全ポリゴンの頂点座標を入力する手段、
各ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する近接点線形リスト作成手段、
最新に求まっている最接近点に近接する頂点を前記近接点線形リストより求める近接頂点取得部、
前記求まった頂点の中より次の時刻における最接近点を探索して干渉チェックを行なう最接近点探索手段、
を有することを特徴とする最接近点探索装置。 - 第1、第2の非凸多面体をそれぞれ凸多面体に分解し、凸多面体間の最接近点を連続的に探索することにより非凸多面体間の干渉チェックを行なう最接近点探索装置において、
前記凸多面体毎に、該凸多面体を覆う全ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する近接点線形リスト作成手段、
前記非凸多面体毎に、該非凸多面体の頂点座標値のうち、各軸方向の最大座標値及び最小座標値を求め、該最大座標値及び最小座標値により該非凸多面体を包む包絡球を生成する包絡球生成手段、
第1、第2の非凸多面体の包絡球が干渉するかチェックするチェック手段、
干渉した後は前記非凸多面体を分解して得られている凸多面体間の最接近点を探索し、最新に求まっている最接近点に近接する頂点を前記近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を探索する最接近点探索手段、
各凸多面体間の最接近点間距離が最も短いものを用いて干渉チェックを行なう干渉チェック部、
を有することを特徴とする最接近点探索装置。 - 前記各非凸多面体を包む最小の凸多面体(凸包)を生成する凸包生成部、
を備え、前記チェック手段は、第1第2の非凸多面体の包絡球が干渉した後は、第1、第2の非凸多面体の凸包が干渉するかチェックし、前記最接近点探索手段は、第1、第2の凸包同士が干渉した後は、前記非凸多面体を分解して得られている凸多面体間の最接近点を探索し、干渉チェック部は各凸多面体間の最接近点間距離が最も短いものを用いて干渉チェックを行なうことを特徴とする請求項2記載の最接近点探索装置。 - 第1、第2の非凸多面体をそれぞれ凸多面体に分解し、凸多面体間の最接近点を連続的に探索することにより非凸多面体間の干渉チェックを行なう最接近点探索装置において、
前記凸多面体毎に、該凸多面体を覆う全ポリゴンの頂点を第1方向(next方向)にリンクし、各頂点にポリゴン辺を介して繋がる頂点群を第2の方向(branch方向)に該頂点にリンクしてなるデータ構造を備えた近接点線形リストを作成する近接点線形リスト作成手段、
前記各非凸多面体を包む最小の凸多面体(凸包)を生成する凸包生成手段、
第1、第2の非凸多面体の凸包が干渉するかチェックするチェック手段、
干渉した後は凸多面体間の最接近点を探索し、最新に求まっている最接近点に近接する頂点を前記近接点線形リストより求め、これら頂点の中より次の時刻における最接近点を探索する最接近点探索手段、
各凸多面体間の最接近点間距離が最も短いものを用いて干渉チェックを行なう干渉チェック部、
を有することを特徴とする最接近点探索装置。 - 前記チェック手段は凸包同士が干渉した後は、一方の凸包を解除し、非凸多面体を分解して得られている各凸多面体と他方の凸包の干渉チェックを行ない、前記最接近点探索手段は、凸多面体と他方の凸包が干渉した後は、他方の凸包を解除し、各非凸多面体を分解して得られている凸多面体間の最接近点を探索し、干渉チェック部は各凸多面体間の最接近点間距離が最も短いものを用いて、干渉チェックを行なうことを特徴とする請求項4記載の最接近点探索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002061723A JP3556644B2 (ja) | 1993-09-14 | 2002-03-07 | 最接近点探索装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22879493 | 1993-09-14 | ||
JP5-228794 | 1993-09-14 | ||
JP2002061723A JP3556644B2 (ja) | 1993-09-14 | 2002-03-07 | 最接近点探索装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20900894A Division JP3316092B2 (ja) | 1993-09-14 | 1994-09-02 | 最接近点探索装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002312409A JP2002312409A (ja) | 2002-10-25 |
JP3556644B2 true JP3556644B2 (ja) | 2004-08-18 |
Family
ID=26528461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002061723A Expired - Lifetime JP3556644B2 (ja) | 1993-09-14 | 2002-03-07 | 最接近点探索装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3556644B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150202464A1 (en) * | 2014-01-23 | 2015-07-23 | Mitsubis | Multi-Criteria Optimization in Particle Beam Dose Optimization |
JP6223916B2 (ja) * | 2014-06-25 | 2017-11-01 | 株式会社東芝 | 情報処理装置、方法及びプログラム |
JP6848761B2 (ja) * | 2017-08-08 | 2021-03-24 | トヨタ自動車株式会社 | 物体間距離評価方法及び相対的に移動する物体間の干渉評価方法 |
-
2002
- 2002-03-07 JP JP2002061723A patent/JP3556644B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2002312409A (ja) | 2002-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5675720A (en) | Method of searching for points of closest approach, and preprocessing method therefor | |
Ostanin et al. | Human-robot interaction for robotic manipulator programming in Mixed Reality | |
Samareh | Aerodynamic shape optimization based on free-form deformation | |
Pan et al. | Efficient configuration space construction and optimization for motion planning | |
Iyengar et al. | Robot navigation algorithms using learned spatial graphs | |
CN111360824A (zh) | 一种双臂自碰撞检测方法和计算机可读存储介质 | |
US20080034023A1 (en) | Contact geometry calculation device, contact geometry calculation method, and computer program product | |
Yu et al. | Collision avoidance and path planning for industrial manipulator using slice-based heuristic fast marching tree | |
Hermann et al. | GPU-based real-time collision detection for motion execution in mobile manipulation planning | |
Gill et al. | Obstacle avoidance in multi-robot systems: experiments in parallel genetic algorithms | |
JP3316092B2 (ja) | 最接近点探索装置 | |
He et al. | Haptic-aided robot path planning based on virtual tele-operation | |
Gutierrez et al. | Trajectory planning in dynamics environment: application for haptic perception in safe human-robot interaction | |
Dai et al. | A framework for multi-robot coverage analysis of large and complex structures | |
JP3556644B2 (ja) | 最接近点探索装置 | |
Grotz et al. | Active vision for extraction of physically plausible support relations | |
Andre et al. | Error robust and efficient assembly sequence planning with haptic rendering models for rigid and non-rigid assemblies | |
Sharp et al. | Virtual fixture generation for task planning with complex geometries | |
Autere et al. | A multiresolution a* method for robot path planning | |
Edelkamp et al. | Surface inspection via hitting sets and multi-goal motion planning | |
Panov et al. | Psychologically inspired planning method for smart relocation task | |
Nambiar et al. | Automation of unstructured production environment by applying reinforcement learning | |
Rakita et al. | Proxima: An approach for time or accuracy budgeted collision proximity queries | |
Coulombe et al. | High precision real time collision detection | |
Pluzhnikov | Motion planning and control of robot manipulators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040512 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080521 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100521 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100521 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110521 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120521 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |