(57)【要約】      （修正有）【課題】多関節物体の所定の連接要素と他の連接要素との間の衝突を回避しながら、シミュレートされる多関節物体の動きおよび操作を可能にする方法を提供する。【解決手段】仮想多関節物体１０を仮想環境で単位動きの連続により動かす方法であって、多関節物体の所定の連接要素１１ｃと他の連接要素１１との間の相互作用距離を計算する工程と、上記相互作用距離から、所定の連接要素に属する第一点Ｐ１、および他の連接要素の一つに属する第二点Ｐ２を抽出する工程と、第一および第二点から単一抽出ベクトルを定義する工程と、所定の連接要素と他の要素との間の衝突を回避するように、多関節物体の自由度に作用することによって、単一抽出ベクトルに応じて定義された動きで、所定の連接要素を他の連接要素から遠ざける工程と、を含む方法。【選択図】      図４
2005202927.tif 000002
【特許請求の範囲】
【請求項１】
仮想多関節物体（１０）が一組の関節（１２）によって一まとめに接続された一組の連接要素（１１）を備え、連接要素（１１）の相対位置が複数の自由度における複数の関節角度によって定義され、仮想多関節物体（１０）を仮想環境（１３）で単位動きの連続により動かす方法であって、
多関節物体（１０）の所定の連接要素（１１ｃ）と他の連接要素（１１）との間の相互作用距離を計算する工程と、
相互作用距離から、所定の連接要素（１１ｃ）に属する第一点（Ｐ１）、および多関節物体の他の連接要素の一つ（１１ｃ）に属する第二点（Ｐ２）を抽出する工程と、
前記第一および第二点から単一抽出ベクトル
【数１】
2005202927.tif 000033
を定義する工程と、
所定の連接要素（１１ｃ）と多関節物体の他の要素との間の衝突を回避するように、多関節物体（１０）の自由度に作用することによって、単一抽出ベクトル
【数２】
2005202927.tif 000034
に応じて定義された動きで、所定の連接要素（１１ｃ）を多関節物体の他の連接要素から遠ざける工程と、
を備える、方法。
【請求項２】
相互作用距離を計算し、第一および第二点を抽出し、抽出ベクトル
【数３】
2005202927.tif 000035
を定義し、所定の連接要素を遠ざける前記工程が、各連接要素と多関節物体の残部との間の衝突を回避するように、多関節物体（１０）の連接要素（１１）の各々に対して繰り返されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記単位動きの連続における各単位動きの後で、所定の連接要素（１１ｃ）と多関節物体（１０）の他の連接要素との間に衝突が発生したかどうかを決定する工程をさらに備えることを特徴とする、請求項１または２に記載の方法。
【請求項４】
相互作用距離が侵入深さに対応し、抽出ベクトル
【数４】
2005202927.tif 000036
が第二点（Ｐ２）の座標から第一点（Ｐ１）の座標を引いたものに等しく、侵入深さは多関節物体（１０）がその連接要素間の限定され制御された量の衝突を伴って動くことを可能にすることを特徴とする、請求項１から３のいずれか一項に記載の方法。
【請求項５】
相互作用距離が最小距離に対応し、抽出ベクトル
【数５】
2005202927.tif 000037
は第一点（Ｐ１）の座標から第二点（Ｐ２）の座標を引いたものに等しく、最小距離は多関節物体がその連接要素間の衝突なく動くことを可能にすることを特徴とする、請求項１から３のいずれか一項に記載の方法。
【請求項６】
所定の連接要素（１１ｃ）と多関節物体（１０）の他の連接要素（１１）との間に衝突が発生した場合、前記単位動きの連続における一番最近の単位動きを取り消す工程をさらに備えることを特徴とする、請求項１から５のいずれか一項に記載の方法。
【請求項７】
所定の連接要素と多関節物体の他の連接要素との間に衝突が起きない限り、第一および第二点（Ｐ１、Ｐ２）を抽出し、抽出ベクトル
【数６】
2005202927.tif 000038
を定義し、所定の連接要素（１１ｃ）を遠ざける前記工程が実行されないことを特徴とする、請求項１から５のいずれか一項に記載の方法。
【請求項８】
所定の連接要素（１１ｃ）は、所定の連接要素に先行する一連の関節に属する関節（１２）の各々に作用する関節屈曲動作によって、多関節物体（１０）の他の連接要素から遠ざけられ、一連の関節のうちのいずれかの所定の関節（１２ａ）で作用する関節屈曲動作が、
所定の関節（１２ａ）の連接中心と抽出ベクトル
【数７】
2005202927.tif 000039
の原点との間に第一ベクトル
【数８】
2005202927.tif 000040
を定義する工程と、
所定の関節（１２ａ）の連接中心と抽出ベクトル
【数９】
2005202927.tif 000041
の端点との間に第二ベクトル
【数１０】
2005202927.tif 000042
を定義する工程と、
第一ベクトルを第二ベクトルと一致させるための回転角
【数１１】
2005202927.tif 000043
を計算する工程と、
所定の関節に対応する単一または複数の自由度を定義する単一または複数の軸上で回転角
【数１２】
2005202927.tif 000044
を分解することによって、一つ以上の個別関節屈曲角度を計算する工程と、
前記所定の関節（１２ａ）を中心に前記個別関節角度に比例する一つ以上の角度にわたって連接要素を回転させる工程と、
を備えることを特徴とする、請求項１から６のいずれか一項に記載の方法。
【請求項９】
回転角が第一および第二ベクトル間のベクトル積によって計算されることを特徴とする、請求項８に記載の方法。
【請求項１０】
個別関節角度がベクトル積と所定の関節の自由度の軸との間の一つ以上のスカラ積によって計算されることを特徴とする、請求項８または９に記載の方法。
【請求項１１】
多関節物体の複数の自由度に作用する内部アボイダエージェント（３４）によって、連接要素が多関節物体の他の連接要素から遠ざけられることを特徴とする、請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
多関節物体がその仮想環境で大域的位置および大域的向きによって特定されるので、多関節物体が大域的位置および／または大域的向きおよび／または多関節物体の複数の自由度に作用するアトラクタエージェントによって動かされることを特徴とする、請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
位置および／または向きおよび／または多関節物体の複数の自由度に作用するオペレータエージェントによって、オペレータが多関節物体を実時間で動かす工程をさらに備えることを特徴とする、請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
多関節物体が仮想環境の床上を移動する仮想ダミー（１０ａ）であり、ダミーが仮想床上の位置、前記床に垂直でありダミーの重心を通る鉛直軸を中心とする向き、および連接要素の組を定義する複数の関節角度によって定義されることを特徴とする、請求項１から１３のいずれか一項に記載の方法。
【請求項１５】
コンピュータ（１）によって実行されたときに、請求項１から１４のいずれか一項に記載の方法を実現するように設計されることを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想環境における仮想多関節物体（ｖｉｒｔｕａｌ  ａｒｔｉｃｕｌａｔｅｄ  ｏｂｊｅｃｔ）の移動をシミュレートする分野に関する。より詳細には、本発明は、多関節物体の連接要素と多関節物体の残部との間の衝突を回避することに関する。
【背景技術】
【０００２】
航空機または宇宙産業など、多くの産業では、仮想現実でモデルを使用することが一般的な慣行である。例えば、デジタルモックアップは様々な部品間の干渉を評価するためにしばしば使用される。
【０００３】
同様に、モデリングは、技術者またはロボットが例えばこれらの動作をするために行なう必要のある動きを可視化するために、定義された環境で人間またはロボットの動作をシミュレートするのに使用することができる。これは、定期点検および保守を必要とする、航空機エンジンの部品のような機械の特定の部品へのアクセス性を検証し、最適化するのに有用である。
【０００４】
従って、装置の様々な要素へのアクセスの容易さは、要素がモデル化されるとすぐに、仮想多関節物体を使用して、シミュレーションによって仮想的に検査することができる。
【０００５】
仮想多関節物体は、複数の自由度で連接された複数の要素を特徴とする動的システムを定義するデジタルデータセットである。
【０００６】
従って、所定の時点で、仮想多関節物体は、三次元空間におけるその位置および向きによって、およびその関節の自由度の値によって、定義することができる。仮想多関節物体の環境を定義するデータおよびパラメータは、デジタルデータ媒体に格納することができる。
【０００７】
この型の用途のための仮想多関節物体の使用はすでに存在する。
【０００８】
一例は、「仮想現実、製品のデジタルモックアップ、設計を分散しかつ共有するためのツール（Ｒｅａｌｉｔｅ  ｖｉｒｔｕｅｌｌｅ，  ｍａｑｕｅｔｔｅ  ｎｕｍｅｒｉｑｕｅ  ｄｕ  ｐｒｏｄｕｉｔ，  ｏｕｔｉｌｓ  ｄｅ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｅｔ  ｐａｒｔａｇｅ  ｄｅ  ｌａ  ｃｏｎｃｅｐｔｉｏｎ）」（Ｊｏｕｒｎｅｅｓ  Ｐｒｉｍｅｃａ，  Ｌａ  Ｐｌａｇｎｅ，  Ａｐｒｉｌ  ７−９，  １９９９）と称するＣｈｅｄｍａｉｌ、ＤａｍａｙおよびＬｅ  Ｒｏｙによる論文に掲げられている。
【０００９】
この論文は、仮想環境における二つの仮想多関節アームまたは仮想ダミーの動きのモデルを使用して、障害のある環境で物体を組み立てたり分解するためのアクセス性を検証する方法を提案している。
【００１０】
この方法は、障害物によって妨害された環境で、障害物と衝突することなく、ダミーが動くことを可能にする。
【００１１】
しかし、ダミーが動くときのその姿勢は任意であり、ダミーの所定の部材とダミーの他の部材との間の衝突を導くことがあり得る。それは、ダミーの動きがモデル化される精度を低減する。
【非特許文献１】「Ｒｅａｌｉｔｅ  ｖｉｒｔｕｅｌｌｅ，  ｍａｑｕｅｔｔｅ  ｎｕｍｅｒｉｑｕｅ  ｄｕ  ｐｒｏｄｕｉｔ，  ｏｕｔｉｌｓ  ｄｅ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｅｔ  ｐａｒｔａｇｅ  ｄｅ  ｌａ  ｃｏｎｃｅｐｔｉｏｎ」（Ｃｈｅｄｍａｉｌ，Ｄａｍａｙ  ａｎｄ  Ｌｅ  Ｒｏｙ，Ｊｏｕｒｎｅｅｓ  Ｐｒｉｍｅｃａ，  Ｌａ  Ｐｌａｇｎｅ，  Ａｐｒｉｌ  ７−９，  １９９９）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、多関節物体の所定の連接要素（ａｒｔｉｃｕｌａｔｅｄ  ｅｌｅｍｅｎｔ）と他の連接要素との間の衝突を回避しながら、シミュレートされる多関節物体の動きおよび操作を可能にする方法を提供することによって、上述した欠点を是正し、かつ最適化された計算時間によりそうしようと努めるものである。
【００１３】
本発明の別の目的は、様々な連接要素を相互に避けさせることにより、多関節物体の全ての連接要素の間の内部衝突を回避することである。
【課題を解決するための手段】
【００１４】
これらの目的は、仮想多関節物体が一組の関節（ｊｏｉｎｔ）によって一まとめに接続された一組の連接要素を含み、連接要素の相対位置が複数の自由度の複数の関節角度によって定義される中で、仮想多関節物体を仮想環境で単位動きの連続により動かす方法であって、
多関節物体の所定の連接要素と他の連接要素との間の相互作用距離を計算する工程と、
上記相互作用距離から、所定の連接要素に属する第一点、および多関節物体の他の連接要素の一つに属する第二点を抽出する工程と、
上記第一および第二点から単一の抽出ベクトルを定義する工程と、
所定の連接要素と多関節物体の他の連接要素との間の衝突を回避するように、多関節物体の自由度に作用することによって、単一抽出ベクトルの関数として定義された動きで、所定の連接要素を多関節物体の他の連接要素から遠ざける工程と、
を含む方法によって達成される。
【００１５】
従って、本発明の方法は、相互作用距離の単一の計算を使用することによって、多関節物体の所定の連接要素と多関節物体の他の連接要素との間の衝突を回避する。
【００１６】
これにより、高い精度および最適化された計算時間で多関節物体の動きをモデル化することが可能になる。
【００１７】
相互作用距離を計算し、第一および第二点を抽出し、抽出ベクトルを定義し、所定の連接要素を遠ざける上記工程は、各連接要素と多関節物体の残部との間の衝突を回避するように、多関節物体の連接要素の各々に対して繰り返されることが好都合である。
【００１８】
様々な連接要素はこうして、内部衝突せずに相互に回避する。
【００１９】
本発明の方法は、単位動きの上記連続における各単位動きの後で、所定の連接要素と他の多関節物体の他の連接要素との間に衝突が発生したかどうかを決定する工程をさらに含む。
【００２０】
本発明の第一実施形態では、相互作用距離は侵入深さに相当するので、抽出ベクトルは第二点の座標から第一点の座標を引いたものに等しく、進入深さは多関節物体がその連接要素間の限定され制御された量の衝突を伴って動くことを可能にする。
【００２１】
本発明の第二実施形態では、相互作用距離は最小距離に相当するので、抽出ベクトルは第一点の座標から第二点の座標を引いたものに等しく、最小距離は多関節物体がその連接要素間の衝突が無く動くことを可能にする。
【００２２】
方法は、所定の連接要素と多関節物体の他の連接要素との間に衝突が発生した場合、単位動きの上記連続における一番最近の単位動きを取り消す工程をさらに含む。
【００２３】
所定の連接要素と多関節物体の他の連接要素との間に衝突が起きない限り、第一および第二点を抽出し、抽出ベクトルを定義し、所定の連接要素を遠ざける上記工程は実行されないことが好都合である。
【００２４】
所定の連接要素は、所定の連接要素に先行する一連の関節に属する関節の各々に作用する関節屈曲動作によって、多関節物体の他の連接要素から遠ざけることができ、上記一連の関節のうちのいずれかの所定の関節で作動する関節屈曲動作は、
上記所定の関節の連接中心と抽出ベクトルの原点との間に第一ベクトルを定義する工程と、
上記所定の関節の連接中心と抽出ベクトルの端点との間に第二ベクトルを定義する工程と、
第一ベクトルを第二ベクトルと一致させるための回転角を計算する工程と、
上記所定の関節に対応する単一または複数の自由度を定義する単一または複数の軸上で上記回転角を分解することによって、一つ以上の個別関節屈曲角度を計算する工程と、
上記所定の関節を中心に上記個別関節角度に比例する一つ以上の角度にわたって連接要素を回転させる工程と、
を含む。
【００２５】
回転角は、第一および第二ベクトル間のベクトル積によって計算することができる。
【００２６】
個別関節角度は、ベクトル積と所定の関節の自由度の軸との間の１つ以上のスカラ積によって計算することができる。
【００２７】
本発明の特定の実施では、多関節物体の複数の自由度に作用する内部アボイダエージェント（ａｖｏｉｄｅｒ  ａｇｅｎｔ）によって、連接要素を多関節物体の他の連接要素から遠ざけることができる。
【００２８】
多関節物体はその仮想環境で大域的位置および大域的向きによって特定されるのが有利であり、多関節物体は大域的位置および／または大域的向きおよび／または多関節物体の複数の自由度に作用するアトラクタエージェント（ａｔｔｒａｃｔｏｒ  ａｇｅｎｔ）によって動かされる。
【００２９】
方法は、位置および／または向きおよび／または多関節物体の複数の自由度に作用するオペレータエージェント（ｏｐｅｒａｔｏｒ  ａｇｅｎｔ）によって、オペレータが多関節物体を実時間で動かす工程をさらに含む。
【００３０】
本発明の特徴によると、多関節物体は仮想環境の床上を移動する仮想ダミーであり、ダミーは仮想床上の位置、上記床に垂直（ｐｅｒｐｅｎｄｉｃｕｌａｒ）でありダミーの重心を通る鉛直（ｖｅｒｔｉｃａｌ）軸を中心とする向き、および連接要素の組を定義する複数の関節角度によって定義される。
【００３１】
本発明はまた、コンピュータによって実行されたときに、上述した方法を実現するように設計されたコンピュータプログラムをも提供する。
【００３２】
本発明の方法およびシステムの他の特徴および利点は、非限定的な例示として添付の図面を参照して掲げる以下の説明を読むことにより、いっそう明らかになるであろう。
【発明を実施するための最良の形態】
【００３３】
図１は、多関節物体の動きをモデル化するのに使用することができるシステムを示す。システムは、発明の方法を実現するように設計されたコンピュータプログラムを実行するために使用される、適正なグラフィックス能力を有するワークステーションまたはコンピュータ１を含む。
【００３４】
コンピュータ１は、この型の装置に通常見受けられるハードウェア手段を含む。さらに詳しくは、コンピュータは、本発明の方法を実現するためのプログラムの命令のシーケンスを実行する中央装置２と、データおよび実行されるプログラムを格納する中央メモリ３と、データおよび使用するプログラムの長期格納用のデジタルデータ記憶媒体（ハードディスク、ＣＤ４、フロッピー（登録商標）ディスク等）と、入力周辺装置（キーボード５、２Ｄまたは３Ｄマウス６、ジョイスティック等）と、多関節物体の動きを観察することを可能にするための出力周辺装置（スクリーン７、立体ヘッドセットまたは眼鏡等）とを含む。
【００３５】
当然ながら、計算能力を高めるために、本発明のモデリングは並列に動作する複数のワークステーションで実現することができる。
【００３６】
図２Ａは非常に簡単な略図であり、一組の関節１２によって相互接続された一組の連接要素１１を含む仮想多関節物体１０を示す。
【００３７】
加えて、多関節物体１０は関節の木構造（ｔｒｅｅ  ｓｔｒｕｃｔｕｒｅ）を特徴とするので、連接要素１１および関節１２を従来の方法で複数の一連の関節に分類することができる。
【００３８】
各関節１２は関節の複数の自由度を定義する複数の軸を持つことができ、従って、複数の自由度によって多関節物体１０の内部状態を決定することが可能になる。例として、図２Ａは、上記関節１２ａに関連付けられた三つの自由度を定義する三つの軸を有する関節１２ａを示す。
【００３９】
従って、連接要素１０の相対位置はいつでも、多関節物体１０の複数の自由度における複数の関節角度によって定義することができる。
【００４０】
加えて、原点が多関節物体１０の重心Ｇにある局所的基準系をそれに関連付けることができる。
【００４１】
特に、局所的基準系は、多関節物体１０の重心Ｇを通る単一の軸
【数１３】
2005202927.tif 000003
を含むことができる。
【００４２】
多関節物体１０は、様々な物体または障害物１３ａ、１３ｂ、および１３ｃによって妨害されることがある仮想環境１３で動くことができ、かつ従来の方法で多関節物体１０は、多関節物体１０が動くときに様々な物体または障害物１３ａ、１３ｂ、および１３ｃと衝突するのを回避することができる。
【００４３】
従って、多関節物体１０およびその環境は三次元空間（Ｏ；ｘ，ｙ，ｚ）で定義することができ、それに対して相対的にその環境１３における多関節物体１０ならびに様々な物体１３ａ、１３ｂ、および１３ｃの位置および向きを簡単に特定することができる。
【００４４】
従って、連接要素１１の組の相対位置に加えて、多関節物体１０もその環境１３内でいつでも大域的位置および大域的向きによって特定することができる。
【００４５】
多関節物体１０の大域的位置は、その重心Ｇについて軸ｘ、ｙ、およびｚに沿ってデカルト座標によって定義することができる。
【００４６】
その大域的向きは、軸ｘ、ｙ、およびｚに対して相対的に多関節物体に関連付けられる軸
【数１４】
2005202927.tif 000004
の向きを定義する三つの角によって、公知の方法で特定することができる。
【００４７】
当然のことながら、関節の限界によって、かつ多関節物体１０の様々な部材または要素１１間の物理的接続によって課せられるパラメータまたは制約を考慮に入れることも必要である。
【００４８】
多関節物体１０を定義するこれらのデータおよび変数、ならびにその環境１３を定義するパラメータは、コンピュータシステム１のデジタルデータ媒体３に格納される。
【００４９】
図２Ｂは、多関節物体が特に、仮想環境１３の床上を動く仮想ダミー１０ａによって構成することができることを示す。
【００５０】
そのような状況で、ダミー１０ａは、その連接要素の全てを定義する複数の関節角度、仮想床上のその位置、および上記床に垂直でありダミー１０ａの重心Ｇを通る仮想軸
【数１５】
2005202927.tif 000005
を中心とするその向きによって定義することができる。
【００５１】
従来の方法で、ダミー１０ａのような多関節物体１０は、例えば目標１３ｃに到達するために、単位動きの連続により、仮想環境１３で動くことができる。
【００５２】
従って、多関節物体１０がその目標１３ｃに到達することを可能にする軌道を生成するために、その位置を移動するための予め定められたステップサイズを使用して多関節物体１０の大域的位置に作用し、および／または向きを変えるための予め定められたステップサイズを使用して多関節物体の大域的向きに作用し、および／または関節の動きΔａのための予め定められたステップサイズを使用して多関節物体の複数の自由度に作用することが可能である。
【００５３】
所定の連接要素と多関節物体１０の他の連接要素１１との間の内部衝突を回避するために、衝突判定基準を定義する必要がある。
【００５４】
公知の方法で、いずれかの二つの物体間の衝突の基準は、二つの物体間の相互作用距離を計算することによって定義することができる。この衝突判定基準はまた、この相互作用距離を具体化する点をも提供することができる。
【００５５】
相互作用距離は二つの物体間の最小距離または侵入深さに相当することができることに注意しなければならない。
【００５６】
図３Ａおよび３Ｂは、多関節物体１０の所定の連接要素１１ｃと多関節物体１０の他の連接要素の一つ１１ｄとの間の相互作用距離が、どのように認識されるかを示す。
【００５７】
図３Ａの例は、さらに詳しくは、多関節物体１０の所定の連接要素１１ｃと他の連接要素の一つ１１ｄとの間の最小距離判定基準、およびこの最小距離を具体化する点Ｐ１およびＰ２をも示す。
【００５８】
さらに、図３Ｂの例は、多関節物体１０の所定の連接要素１１ｃと多関節物体１０の他の連接要素の一つ１１ｄとの間の侵入深さ判定基準を、この侵入深さを具体化する点Ｐ１およびＰ２と共に示す。
【００５９】
従って、相互作用距離の計算により、多関節物体１０の所定の連接要素１１ｃに属し以下の説明で「第一点」と呼ばれる点Ｐ１、および多関節物体１０の他の連接要素の一つ１１ｄに属し以下の説明で「第二点」と呼ばれる別の点Ｐ２を抽出することが可能になる。
【００６０】
次いで、これらの第一および第二点Ｐ１およびＰ２から、単一の抽出ベクトル
【数１６】
2005202927.tif 000006
を定義することができる。
【００６１】
最小距離の計算に基づくモードでは（図３Ａ）、抽出ベクトル
【数１７】
2005202927.tif 000007
は第一点Ｐ１の座標から第二点Ｐ２の座標を引いたものに等しい。すなわち、第二点Ｐ２は抽出ベクトル
【数１８】
2005202927.tif 000008
の原点であり、第一点Ｐ１は抽出ベクトル
【数１９】
2005202927.tif 000009
の端点である。
【００６２】
対照的に、侵入深さの計算に基づくモードでは（図３Ｂ）、抽出ベクトル
【数２０】
2005202927.tif 000010
は第二点Ｐ２の座標から第一点Ｐ１の座標を引いたものに等しい。すなわち、第一点Ｐ１は抽出ベクトル
【数２１】
2005202927.tif 000011
の原点であり、第二点Ｐ２は抽出ベクトル
【数２２】
2005202927.tif 000012
の端点である。
【００６３】
最終的に、所定の連接要素１１ｃと多関節物体１０の他の連接要素１１との間の衝突を回避するために、所定の連接要素１１ｃは、単一の抽出ベクトル
【数２３】
2005202927.tif 000013
の関数として定義され多関節物体１０の自由度に作用する動きに従って、他の連接要素１１から遠ざけることができる。
【００６４】
図４は、所定の連接要素１１ｃが、最小距離モードを使用して、多関節物体１０の他の連接要素１１から遠ざかる分離動作を示すが、侵入深さモードを使用する場合も原理は同じであることは当然理解されるであろう。
【００６５】
この分離動作は、多関節物体１０の関節をその自由度に応じて屈曲させることを意味する回転動作である。
【００６６】
所定の連接要素１１ｃは、上に定義した第一点Ｐ１が属する多関節物体１０の連接要素１１ｃに先行する一連の関節の部分を形成する関節１２の各々における回転動作によって、多関節物体１０の他の連接要素１１から遠ざけられることに注意すべきである。この例では、第二点Ｐ２は、他の連接要素の一つ、つまり１１ｄと指定された要素に属する。
【００６７】
例として、多関節物体が仮想ダミー１０ａである場合、そして所定の連接要素１１ｃと多関節物体１０の他の連接要素１１との間の相互作用距離が前腕の第一点Ｐ１によって具体化される場合には、一連の関節は肘、肩、および鎖骨に対応する。すなわち、関節の回転動作は、腕の関節１２および前腕に先行する関節１２の全てに作用するように計算される。そうではなく、第一点Ｐ１が上腕に属する場合には、一連の関節は肩および鎖骨の関節のみを含む。第一点Ｐ１が手に属する場合には、腕の関節１２の全てを考慮に入れなければならない。すなわち、一連の関節は手首、肘、肩、および鎖骨を含む。
【００６８】
従って、所定の多関節物体１０の場合の一連の関節は、多関節物体１０のどの連接要素が第一点Ｐ１を有するかに依存する。
【００６９】
特に、図４の例では、一連の関節１２ａ、１２ｂ、および１２ｃの一部を形成する所定の関節１２ａに作用する関節の回転動作を見ることができる。
【００７０】
所定の関節１２ａに作用する関節のこの回転動作は、以下の工程を実現することによって決定することができる。
【００７１】
第一ベクトル
【数２４】
2005202927.tif 000014
が、上記所定の関節１２ａの連接中心と抽出ベクトル
【数２５】
2005202927.tif 000015
の原点との間に定義される。この例で、抽出ベクトル
【数２６】
2005202927.tif 000016
の原点は第二点Ｐ２であるが、侵入深さモードを使用する場合は第一点Ｐ１になる。
【００７２】
同様に第二ベクトル
【数２７】
2005202927.tif 000017
が、上記所定の関節１２ａの連接中心と抽出ベクトル
【数２８】
2005202927.tif 000018
の端点Ｐ１との間に定義される。
【００７３】
その後、第一ベクトル
【数２９】
2005202927.tif 000019
を第二ベクトル
【数３０】
2005202927.tif 000020
と一致させるための回転角
【数３１】
2005202927.tif 000021
が計算される。回転角
【数３２】
2005202927.tif 000022
は、次式：
【数３３】
2005202927.tif 000023
を使用して、第一および第二ベクトル
【数３４】
2005202927.tif 000024
および
【数３５】
2005202927.tif 000025
の間のベクトル積を実現することによって計算することができる。
【００７４】
この回転角
【数３６】
2005202927.tif 000026
は、多関節物体１０の上記所定の関節１２ａに対応する単一または複数の自由度を定義する単一または複数の軸を中心とする一つ以上の個別屈曲角度θｉに分解（ｒｅｓｏｌｖｅ）される。
【００７５】
この例では、回転角
【数３７】
2005202927.tif 000027
は、軸
【数３８】
2005202927.tif 000028
【数３９】
2005202927.tif 000029
【数４０】
2005202927.tif 000030
を中心とする三つの個別関節屈曲角度θｉに分解される。
【００７６】
個別関節屈曲角度θｉは、上記の計算されたベクトル積と所定の関節１２ａの自由度の単数または複数の軸との間の一つ以上のスカラ積によって計算することができる。
【００７７】
最終的に、上記所定の関節における連接要素は、上記個別関節角度θｉに比例する一つ以上の角度αｉにわたって回転される。
【００７８】
個別関節角度θｉは、関節の移動ステップサイズΔａの換算値によって正規化される。
【００７９】
上記所定の関節１２ａでは、多関節実施形態は、次式：
【数４１】
2005202927.tif 000031
によって与えられる一つ以上の角度αｉにわたって回転される。
【００８０】
当然ながら、上記と同じ工程は、考慮している一連の関節を形成する関節１２ａ、１２ｂ、および１２ｃの全てに対して実行しなければならない。
【００８１】
最小距離または侵入深さから計算された単一の抽出ベクトル
【数４２】
2005202927.tif 000032
を使用することにより、所定の連接要素１１ｃと多関節物体１０の他の連接要素１１との間の衝突を回避することが可能になり、それにより計算量を最適化しながら、多関節物体１０の動きの精度を向上することができる。
【００８２】
本発明は、所定の連接要素１１ｃを多関節物体１０の他の連接要素１１から遠ざけるために、最小距離または侵入深さの単一の計算を利用する。
【００８３】
さらに、各連接要素１１と多関節物体１０の残部との間の衝突を回避するために、相互作用距離を計算し、第一および第二点を抽出し、抽出ベクトルを定義し、連接要素を遠ざける前工程は、多関節物体１０の連接要素１１の各々に対して繰り返される。
【００８４】
特に、所定の連接要素１１ｃは、多関節物体１０を構成する連接要素１１の所定の部分組（ｓｕｂｓｅｔ）から選択される。
【００８５】
特定の連接要素は、それらの相対的動きが相互に依存するように、かつそれらが相互に衝突しないように、相互に相関させることができる。そのような状況では、相互に独立した動きを提示する連接要素を含む部分組の中から所定の連接要素を選択すれば充分である。
【００８６】
例として、ダミー１０ａの場合、脚は相互にリンクされており、かつ腕だけが相互に、またはダミー１０ａの残部と衝突し得ると想定することが可能である。
【００８７】
図５Ａは、連接要素１１間の内部衝突を回避しながらの多関節物体１０の動きをモデル化する主要工程を示すフローチャートである。
【００８８】
ステップＳ０は、様々なパラメータが定義される初期化工程である。例えば、モデルのクロックパルスまたは計算工程用のカウンタが初期化される。
【００８９】
同様に、位置、向き、および関節Δａに関する単位動きまたは動きステップもステップＳ０で定義することができる。例えば、関節１２の性質に応じて様々なサイズのステップを割り当てることができる。また、全ての関節１２に対し、かつ多関節物体１０の動き全体に使用するために、最適な一定のステップサイズを選択することも可能である。
【００９０】
ステップＳ１で、多関節物体１０の単位動きが計算される。
【００９１】
ステップＳ２は、所定の連接要素と多関節物体１０の他の連接要素の一つとの間に衝突があるか否かを決定する試験である。衝突判定基準は相互作用距離の値に依存する。
【００９２】
すなわち、最小距離に基づくモードの場合、この最小距離が最小しきい距離未満またはそれに等しいときにはいつも衝突が発生したとみなすことができ、多関節物体１０が所定の連接要素と多関節物体１０の他の連接要素との間の衝突がなく移動することを可能にするように、最小しきい距離はゼロに等しくすることができる。
【００９３】
対照的に、侵入深さに基づくモードの場合、上記工程がしきい侵入深さより大きいか等しくなったときに衝突が発生したとみなすことができる。
【００９４】
従って、しきい値がどのように選択されるかによって、第一に、多関節物体１０を内部衝突なく動かすことを可能にし、あるいは第二に、多関節物体１０をその連接要素間の限定されかつ制御された衝突量で動かすことを可能にすることができる。この第二の状況は、連接要素が相互に接触するときに、連接要素間の特定量の可塑性をモデル化することを可能にする。
【００９５】
前ステップＳ２の判定基準に従って衝突がない場合には、次の単位動きを計算するために上記ステップＳ１に戻る前に、ステップＳ１で計算された多関節物体１０の動きが、ステップＳ３で、例えばコンピュータ１のスクリーン７上に表示される。
【００９６】
従って、ステップＳ３では、第一および第二点を抽出し、抽出ベクトルを定義し、かつ連接要素を遠ざける工程が実行されない。
【００９７】
しかし、衝突がある場合には、ステップＳ１で計算された単位動きは、ステップＳ４で取り消される。
【００９８】
その後、ステップＳ１にループバックする前に、ステップＳ５で、所定の連接要素を多関節物体１０の他の連接要素から遠ざけるために、単一の抽出ベクトルの関数として定義されかつ多関節物体の自由度に作用する動きが計算される。
【００９９】
図５Ｂは、計算モードが侵入深さを利用する場合にだけ有効な、図５Ａの変形を示す。
【０１００】
この図のフローチャートは、ステップＳ４がもはや存在しないことを除いては、図５Ａのそれと同じである。
【０１０１】
従って、ステップＳ２で衝突がある場合、この方法は直ちに、所定の連接要素を多関節物体の他の連接要素から遠ざけるステップＳ５に進むが、一番最近の単位動きを取り消すことはなく、従って所定の連接要素と多関節物体の他の連接要素との間の少量の侵入が可能になる。
【０１０２】
仮想多関節物体１０は、「マルチエージェント（ｍｕｌｔｉ−ａｇｅｎｔ）」システムによって、またはいずれかの他の公知のシステムによって、仮想環境１３で動くことができる。
【０１０３】
図６は非常に簡単な略図であり、多関節物体１０の動きをモデル化するために使用できるマルチエージェントシステム５０のアーキテクチャを示す。このマルチエージェントシステム５０は一組の能動要素または「エージェント」２０、２１、２２、２３、３０、３１、３２、３３、３４、および３５から構成され、これらは多関節物体１０を形成する受動物体（要素１１および関節１２）にその環境に応じて作用する。
【０１０４】
多関節物体１０およびその環境を定義するデータまたは変数は共用データ１５を構成し、それにより様々なエージェントが相互作用する。
【０１０５】
マルチエージェントシステムのアーキテクチャは、基部のエージェントがより高いレベルにあるエージェントの作用に貢献するように、ピラミッド状の複数の段階またはレベルとして編成することができる。
【０１０６】
この例では、マルチエージェントシステム５０は、第一レベル５１、第二レベル５２、および第三レベル５３を提示する。
【０１０７】
第一レベル５１は多関節物体１０に対する作用または大域的貢献を示し、共用データ１５によって多関節物体１０に作用する、第一大域的エージェント２０の貢献および第二大域的エージェント３０の貢献を含む。
【０１０８】
第一大域的エージェント２０は多関節物体１０の位置および向きに作用する一方、第二大域的エージェント３０は、多関節物体１０の関節１２の内部自由度に作用する。
【０１０９】
第二レベル５２は、共用データ１５を介して相互作用することによって、第一および第二大域的エージェント２０および３０の貢献をもたらす様々な型のエージェントから生じる様々な貢献を示す。
【０１１０】
従って、多関節物体１０は、大域的位置、および／または大域的向き、および／または多関節物体の複数の自由度に作用するアトラクタエージェントによって動かすことができる。
【０１１１】
さらに、所定の連接要素は、多関節物体の複数の自由度に作用する内部アボイダエージェントによって、多関節物体１０の他の連接要素１１から遠ざけることができる。
【０１１２】
加えて、公知の方法で、多関節物体１０は、大域的位置、および／または大域的向き、および／または多関節物体の複数の自由度に作用するアボイダエージェントによって、その環境から離れることができる。
【０１１３】
従って、マルチエージェントシステム５０の第二レベル５２は、多関節物体１０の大域的位置および／または向きに作用する反発アボイダエージェント２１、多関節物体１０の大域的位置および／または向きに作用するアトラクタエージェント２２、多関節物体１０の関節１２の内部自由度に作用する動的アボイダエージェント３１、および多関節物体１０の関節１２の内部自由度に作用する動的アトラクタエージェント３２を含むことができる。
【０１１４】
第三レベルは、共用データ１５を介して相互作用して動的アボイダエージェント３１の貢献を生じさせる内部アボイダエージェント３４および障害物アボイダエージェント３５を含むことができる。
【０１１５】
障害物アボイダエージェント３５は、多関節物体１０の複数の自由度に作用することによって、多関節物体と環境との間の衝突を回避する。
【０１１６】
従って、内部アボイダエージェント３４は、多関節物体１０の複数の自由度に作用することによって、所定の要素と多関節物体の他の要素との間の衝突を回避し、あるいはこれらの間に過度の侵入が生じないことを確実にすることを可能にする。
【０１１７】
最小距離モードで、近接状態にあるときに、衝突を引き起こした動きを取り消した後、所定の連接要素を多関節物体の他の連接要素から遠ざけることによって、無衝突が確保される。
【０１１８】
侵入深さモードで、少量の侵入が生じた場合、所定の連接要素は、少量の侵入を引き起こした動きを取り消すことなく、多関節物体の他の連接要素から遠ざけることができる。これは、多関節物体の外皮の可塑性をモデル化することを可能にする。従って、ダミーはその中身の肉を一定の屈曲率にモデル化することが可能である。
【０１１９】
加えて、多関節物体１０は、多関節物体の位置および／または向きおよび／または複数の自由度に作用するオペレータエージェントによって、オペレータが実時間で動かすことができる。
【０１２０】
従って、マルチエージェントシステム５０の第二レベル５２は、多関節物体１０の大域的位置および／または向きに作用する大域的オペレータエージェント２３、および多関節物体１０の関節１２の内部自由度に作用する内部オペレータエージェント３３をも含むことができる。
【図面の簡単な説明】
【０１２１】
【図１】本発明のシステムまたは方法で実現されるハードウェア手段の斜視図である。
【図２Ａ】本発明に係る一組の連接要素を含む仮想多関節物体を示す、非常に簡単な略図である。
【図２Ｂ】図２Ａの変形を示す図である。
【図３Ａ】本発明の最小距離モードで定義される抽出ベクトルを示す、非常に簡単な略図である。
【図３Ｂ】本発明の浸透深さモードで定義される抽出ベクトルを示す、非常に簡単な略図である。
【図４】本発明の多関節物体の所定の関節に作用する分離動作を示す、非常に簡単な略図である。
【図５Ａ】本発明の多関節物体を動かすときの主要工程を示すフローチャートである。
【図５Ｂ】図５Ａの変形を示す図である。
【図６】本発明に係る多関節物体を動かすのに使用されるマルチエージェントシステムのアーキテクチャの簡単な略図である。
【符号の説明】
【０１２２】
１  コンピュータ
２  中央装置
３  中央メモリ
１０  仮想多関節物体
１１  連接要素
１２  関節
１３  仮想環境
１５  共用データ
２０  第一大域的エージェント
２１  反発アボイダエージェント
２２  アトラクタエージェント
２３  大域的オペレータエージェント
３０  第二大域的エージェント
３１  動的アボイダエージェント
３２  動的アトラクタエージェント
３３  内部オペレータエージェント
３４  内部アボイダエージェント
３５  障害物アボイダエージェント
５０  マルチエージェントシステム
５１  第一レベル
５２  第二レベル
５３  第三レベル
【図１】
2005202927.tif 000045
【図２Ａ】
2005202927.tif 000046
【図２Ｂ】
2005202927.tif 000047
【図３Ａ】
2005202927.tif 000048
【図３Ｂ】
2005202927.tif 000049
【図４】
2005202927.tif 000050
【図５Ａ】
2005202927.tif 000051
【図５Ｂ】
2005202927.tif 000052
【図６】
2005202927.tif 000053
【外国語明細書】
2005202927.tif 000054
2005202927.tif 000055
2005202927.tif 000056
2005202927.tif 000057
2005202927.tif 000058
2005202927.tif 000059
2005202927.tif 000060
2005202927.tif 000061
2005202927.tif 000062
2005202927.tif 000063
2005202927.tif 000064
2005202927.tif 000065
2005202927.tif 000066
2005202927.tif 000067
2005202927.tif 000068
2005202927.tif 000069
2005202927.tif 000070
2005202927.tif 000071
2005202927.tif 000072
2005202927.tif 000073
2005202927.tif 000074
2005202927.tif 000075
2005202927.tif 000076
2005202927.tif 000077
2005202927.tif 000078
2005202927.tif 000079
2005202927.tif 000080
2005202927.tif 000081
2005202927.tif 000082
2005202927.tif 000083
2005202927.tif 000084
2005202927.tif 000085
2005202927.tif 000086
2005202927.tif 000087