(57)【特許請求の範囲】
【請求項１】
所定の仮想物体を定義し、この仮想物体を掴む動作を疑似的に体験させるためのシミュレーションを行う装置であって、
仮想物体を定義するための情報として、当該仮想物体の表面を三次元座標系上の所定位置に配置された二次元多角形の集合体として表現する形状データと、当該仮想物体の質量を示すパラメータｍと、を設定する物体情報設定手段と、
オペレータから加えられた力に基いて三次元の任意方向に移動可能な作用点を有する作用部と、前記作用点の三次元座標系上での位置を検出する位置検出部と、与えられた力制御ベクトルに基いて前記作用点に加える力を発生させる力発生部と、を有する複数ｎ個の力トランスデューサと、
所定の演算を実施することにより、前記ｎ個の力トランスデューサのそれぞれについての作用点に加えるべき制御力を示す力制御ベクトルを求め、求めた力制御ベクトルを個々の力トランスデューサへ与える制御を行う演算制御手段と、
を備え、
前記演算制御手段が、
位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、仮想物体の内部に位置する作用点については接触状態であると判定し、仮想物体の外部に位置する作用点については非接触状態であると判定する接触状態判定部と、
接触状態であると判定された作用点については、最も近い二次元多角形αとの距離ｄに応じた大きさを有し、前記最も近い二次元多角形αに垂直な法線ベクトルＮと同じ方向をもった反力ベクトルＦを求め、非接触状態であると判定された作用点については、大きさ零の反力ベクトルＦを求め、求めた反力ベクトルＦに基いて各作用点に加えるべき制御力を示す力制御ベクトルを求める力制御ベクトル演算部と、
各作用点の反力ベクトルＦを合成することにより合成反力ベクトルΣＦを求め、この合成反力ベクトルΣＦの大きさが所定の基準値Ｆｒ以下であった場合には把持動作が平衡状態にあると判定し、所定の基準値Ｆｒを越える場合には把持動作が非平衡状態にあると判定する平衡状態判定部と、
非平衡状態にあると判定された場合には、前記合成反力ベクトルΣＦの反転ベクトル−ΣＦおよび前記パラメータｍに基いて決定される加速度が作用した場合の仮想物体の移動態様を示す移動ベクトルＤを演算により求め、この移動ベクトルＤに基いて仮想物体の位置が変更されるように物体情報設定手段内の情報を更新する処理を行う物体情報更新部と、
を有することを特徴とする物体の把持動作シミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置において、
仮想物体を表示するためのディスプレイと、
物体情報設定手段内に設定された形状データおよび位置検出部が検出した作用点の位置に基づいて、前記ディスプレイの画面上に仮想物体および作用点を表示するための画像データを作成する物体形状描画手段と、
を更に設けたことを特徴とする物体の把持動作シミュレーション装置。
【請求項３】
請求項２に記載のシミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体の表面の質感を示す質感データおよび仮想物体を照明するための光源の性質を示す光源データを設定し、
物体形状描画手段が、前記質感データおよび前記光源データを考慮して仮想物体の画像データを作成することを特徴とする物体の把持動作シミュレーション装置。
【請求項４】
請求項１〜３のいずれかに記載のシミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体の硬さを示すパラメータＫを設定し、
力制御ベクトル演算部が、距離ｄとパラメータＫとの積（ｄ・Ｋ）に基づいて反力ベクトルＦの大きさを求めることを特徴とする物体の把持動作シミュレーション装置。
【請求項５】
請求項１〜４のいずれかに記載のシミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体表面の摩擦係数を示すパラメータＳを設定し、
演算制御手段が、
各作用点における摩擦力を反力ベクトルＦの大きさと前記パラメータＳとの積と定義することにより、各作用点における摩擦力の総和である総摩擦力Ｔｓを求める摩擦力演算部と、
重力加速度ベクトルｇに仮想物体の質量を示すパラメータｍを乗じることにより重力ベクトルＷを求める重力演算部と、
平衡状態判定部によって平衡状態にあると判定され、かつ、前記重力ベクトルＷの大きさよりも前記総摩擦力Ｔｓの大きさの方が大きいという条件を満たす場合には、その時点で接触状態にあるＬ個の作用点によって仮想物体が把持状態にあると判定し、前記条件を満たさない場合には、仮想物体は非把持状態にあると判定する把持状態判定部と、
仮想物体が把持状態にあると判定されたときに、前記Ｌ個の作用点の位置の時間的変化に基いて仮想物体に作用する加速度ベクトルＡを求める加速度演算部と、
前記加速度ベクトルＡにパラメータｍを乗じることにより得られる運動ベクトルｍＡと前記重力ベクトルＷとを合成することにより得られる外力ベクトル（ｍＡ＋Ｗ）に基いて、各作用点に作用する分散外力ベクトルＦａを求める分散外力ベクトル演算部と、
を更に備え、
力制御ベクトル演算部が、
仮想物体が非把持状態にあると判定されたときには、各作用点についての反力ベクトルＦを、当該作用点に加えるべき制御力を示す力制御ベクトルＣとし、
仮想物体が把持状態にあると判定されたときには、接触状態にある作用点については、各作用点についての反力ベクトルＦと分散外力ベクトルＦａとを合成することにより得られるベクトルを、当該作用点に加えるべき制御力を示す力制御ベクトルＣとし、非接触状態にある作用点については、大きさ零のベクトルを当該作用点に加えるべき制御力を示す力制御ベクトルＣとすることを特徴とする物体の把持動作シミュレーション装置。
【請求項６】
請求項５に記載のシミュレーション装置において、
分散外力ベクトル演算部が、Ｆａ＝（ｍＡ＋Ｗ）／Ｌなる式に基いて各作用点に作用する分散外力ベクトルＦａを決定することを特徴とする物体の把持動作シミュレーション装置。
【請求項７】
請求項５または６に記載のシミュレーション装置において、
演算制御手段が、
仮想物体が把持状態にあると判定されたときに、個々の作用点について、接触状態から非接触状態への状態遷移もしくは非接触状態から接触状態への状態遷移を監視する接触状態監視部を更に備え、
把持状態判定部が、すべての作用点について状態遷移が生じていない場合は、引き続き把持状態にあるとの判定を行い、いずれかの作用点について状態遷移が生じていた場合には、把持状態／非把持状態の判定を再度実行することを特徴とする物体の把持動作シミュレーション装置。
【請求項８】
請求項１〜７のいずれかに記載のシミュレーション装置において、
演算制御手段が、
仮想物体が把持状態にあると判定されたときに、加速度ベクトルＡに基く仮想物体の移動態様を示す移動ベクトルＭを演算により求める移動ベクトル演算部を更に備え、
物体情報更新部が、前記移動ベクトルＭに基いて仮想物体の位置が変更されるように物体情報設定手段内の情報を更新する処理を行うことを特徴とする物体の把持動作シミュレーション装置。
【請求項９】
コンピュータを、請求項１〜８のいずれかに記載のシミュレーション装置における演算制御手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
請求項１〜８のいずれかに記載のシミュレーション装置において、
力トランスデューサの作用部を、オペレータの指先に嵌めて固定できる指サックによって構成したことを特徴とする物体の把持動作シミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は物体の把持動作シミュレーション装置に関し、特に、物体を把持する際の接触感や重量感を疑似的に体験させることのできるシミュレーション装置に関する。
【０００２】
【従来の技術】
コンピュータを利用したシミュレーションは、種々の分野で採り入れられており、特に近年では、コンピュータの画像処理機能の向上により、いわゆるバーチャル・リアリティーと呼ばれている仮想現実の世界をディスプレイ画面上に表示するシミュレーション装置が普及してきている。この種のシミュレーション装置では、通常、オペレータは仮想の空間内を自由に移動することができ、オペレータの移動に伴ってディスプレイの表示画面がリアルタイムで描き換えられてゆく。また、必要に応じて、オペレータの操作入力に基き、仮想の空間内の物体情報をデータとして入手することも可能である。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のシミュレーション装置は、ディスプレイ上の映像などを利用して、オペレータの視覚を通じて仮想の世界を提示することに主眼が置かれており、オペレータの触覚を通じて仮想の世界を提示する機能に欠けている。たとえば、オペレータが仮想空間内の物体を指示して、この物体を入手するコマンドを入力すれば、ディスプレイ画面上では、あたかもその物体を手にした情景が表示されるような機能は、エンターテイメント型のシミュレーション装置で広く利用されている。しかしながら、このような機能は、「物体を手に取った」という概念を視覚を通じて提示する機能にすぎず、オペレータの触覚に直接働きかけるものではない。
【０００４】
もちろん、視覚を通じて仮想現実を提示する技術は、応用分野も広く、極めて重要な技術である。ただ、特殊な分野においては、触覚を通じて仮想現実を提示する技術が重要性をもつこともある。たとえば、美術館や博物館などが所蔵する美術品は、視覚を通じて鑑賞することが重要であることは当然であるが、触覚を通じた鑑賞も大きな意味をもつ。具体的には、陶磁器、彫刻、仏像などのもつ重量感や凹凸感、表面の接触感などは、実際に手に取って触れてみなければ味わうことのできない感覚である。ところが、これらの美術品は国宝や重要文化財などに指定されているものをはじめとして、非常に財産的価値の高いものが多く、美術館や博物館で展示することは可能であっても、一般の参観者の手に取らせて自由に鑑賞させることは困難である。
【０００５】
また、最近はＣＡＤ装置を利用して製品設計をすることが多くなってきたが、ＣＡＤ装置で設計された製品は、実際の試作品が完成するまでは、実際に手に取ることはできない。もちろん、三次元の外観は設計段階においてディスプレイ画面上で確認することができるので、視覚を通じてのデザイン把握や表面の質感把握は従来のＣＡＤ装置を利用して十分に行うことができる。しかしながら、製品の重量感や接触感は設計段階では体験することができない。
【０００６】
そこで本発明は、物体を把持する際の接触感や重量感を疑似的に体験させることのできるシミュレーション装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
(1)   本発明の第１の態様は、所定の仮想物体を定義し、この仮想物体を掴む動作を疑似的に体験させるためのシミュレーションを行う物体の把持動作シミュレーション装置において、
仮想物体を定義するための情報として、当該仮想物体の表面を三次元座標系上の所定位置に配置された二次元多角形の集合体として表現する形状データと、当該仮想物体の質量を示すパラメータｍと、を設定する物体情報設定手段と、
オペレータから加えられた力に基いて三次元の任意方向に移動可能な作用点を有する作用部と、作用点の三次元座標系上での位置を検出する位置検出部と、与えられた力制御ベクトルに基いて作用点に加える力を発生させる力発生部と、を有する複数ｎ個の力トランスデューサと、
所定の演算を実施することにより、ｎ個の力トランスデューサのそれぞれについての作用点に加えるべき制御力を示す力制御ベクトルを求め、求めた力制御ベクトルを個々の力トランスデューサへ与える制御を行う演算制御手段と、
を設け、
演算制御手段を、
位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、仮想物体の内部に位置する作用点については接触状態であると判定し、仮想物体の外部に位置する作用点については非接触状態であると判定する接触状態判定部と、
接触状態であると判定された作用点については、最も近い二次元多角形αとの距離ｄに応じた大きさを有し、この最も近い二次元多角形αに垂直な法線ベクトルＮと同じ方向をもった反力ベクトルＦを求め、非接触状態であると判定された作用点については、大きさ零の反力ベクトルＦを求め、求めた反力ベクトルＦに基いて各作用点に加えるべき制御力を示す力制御ベクトルを求める力制御ベクトル演算部と、
各作用点の反力ベクトルＦを合成することにより合成反力ベクトルΣＦを求め、この合成反力ベクトルΣＦの大きさが所定の基準値Ｆｒ以下であった場合には把持動作が平衡状態にあると判定し、所定の基準値Ｆｒを越える場合には把持動作が非平衡状態にあると判定する平衡状態判定部と、
非平衡状態にあると判定された場合には、合成反力ベクトルΣＦの反転ベクトル−ΣＦおよびパラメータｍに基いて決定される加速度が作用した場合の仮想物体の移動態様を示す移動ベクトルＤを演算により求め、この移動ベクトルＤに基いて仮想物体の位置が変更されるように物体情報設定手段内の情報を更新する処理を行う物体情報更新部と、
によって構成したものである。
【０００８】
(2)   本発明の第２の態様は、上述の第１の態様に係る物体の把持動作シミュレーション装置において、
仮想物体を表示するためのディスプレイと、
物体情報設定手段内に設定された形状データおよび位置検出部が検出した作用点の位置に基づいて、ディスプレイの画面上に仮想物体および作用点を表示するための画像データを作成する物体形状描画手段と、
を更に設けるようにしたものである。
【０００９】
(3)   本発明の第３の態様は、上述の第２の態様に係る物体の把持動作シミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体の表面の質感を示す質感データおよび仮想物体を照明するための光源の性質を示す光源データを設定し、
物体形状描画手段が、質感データおよび光源データを考慮して仮想物体の画像データを作成するようにしたものである。
【００１０】
(4)   本発明の第４の態様は、上述の第１〜第３の態様に係る物体の把持動作シミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体の硬さを示すパラメータＫを設定し、
力制御ベクトル演算部が、距離ｄとパラメータＫとの積（ｄ・Ｋ）に基づいて反力ベクトルＦの大きさを求めるようにしたものである。
【００１１】
(5)   本発明の第５の態様は、上述の第１〜第４の態様に係る物体の把持動作シミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、更に、仮想物体表面の摩擦係数を示すパラメータＳを設定し、
演算制御手段が、
各作用点における摩擦力を反力ベクトルＦの大きさとパラメータＳとの積と定義することにより、各作用点における摩擦力の総和である総摩擦力Ｔｓを求める摩擦力演算部と、
重力加速度ベクトルｇに仮想物体の質量を示すパラメータｍを乗じることにより重力ベクトルＷを求める重力演算部と、
平衡状態判定部によって平衡状態にあると判定され、かつ、重力ベクトルＷの大きさよりも総摩擦力Ｔｓの大きさの方が大きいという条件を満たす場合には、その時点で接触状態にあるＬ個の作用点によって仮想物体が把持状態にあると判定し、上記条件を満たさない場合には、仮想物体は非把持状態にあると判定する把持状態判定部と、
仮想物体が把持状態にあると判定されたときに、Ｌ個の作用点の位置の時間的変化に基いて仮想物体に作用する加速度ベクトルＡを求める加速度演算部と、
加速度ベクトルＡにパラメータｍを乗じることにより得られる運動ベクトルｍＡと重力ベクトルＷとを合成することにより得られる外力ベクトル（ｍＡ＋Ｗ）に基いて、各作用点に作用する分散外力ベクトルＦａを求める分散外力ベクトル演算部と、
を更に備え、
力制御ベクトル演算部が、
仮想物体が非把持状態にあると判定されたときには、各作用点についての反力ベクトルＦを、当該作用点に加えるべき制御力を示す力制御ベクトルＣとし、
仮想物体が把持状態にあると判定されたときには、接触状態にある作用点については、各作用点についての反力ベクトルＦと分散外力ベクトルＦａとを合成することにより得られるベクトルを、当該作用点に加えるべき制御力を示す力制御ベクトルＣとし、非接触状態にある作用点については、大きさ零のベクトルを当該作用点に加えるべき制御力を示す力制御ベクトルＣとするようにしたものである。
【００１２】
(6)   本発明の第６の態様は、上述の第５の態様に係る物体の把持動作シミュレーション装置において、
分散外力ベクトル演算部が、Ｆａ＝（ｍＡ＋Ｗ）／Ｌなる式に基いて各作用点に作用する分散外力ベクトルＦａを決定するようにしたものである。
【００１３】
(7)   本発明の第７の態様は、上述の第５または第６の態様に係る物体の把持動作シミュレーション装置において、
演算制御手段が、
仮想物体が把持状態にあると判定されたときに、個々の作用点について、接触状態から非接触状態への状態遷移もしくは非接触状態から接触状態への状態遷移を監視する接触状態監視部を更に備え、
把持状態判定部が、すべての作用点について状態遷移が生じていない場合は、引き続き把持状態にあるとの判定を行い、いずれかの作用点について状態遷移が生じていた場合には、把持状態／非把持状態の判定を再度実行するようにしたものである。
【００１４】
(8)   本発明の第８の態様は、上述の第１〜第７の態様に係る物体の把持動作シミュレーション装置において、
演算制御手段が、
仮想物体が把持状態にあると判定されたときに、加速度ベクトルＡに基く仮想物体の移動態様を示す移動ベクトルＭを演算により求める移動ベクトル演算部を更に備え、
物体情報更新部が、移動ベクトルＭに基いて仮想物体の位置が変更されるように物体情報設定手段内の情報を更新する処理を行うようにしたものである。
【００１５】
(9)   本発明の第９の態様は、上述の第１〜第８の態様に係る物体の把持動作シミュレーション装置における演算制御手段を、コンピュータにプログラムを組み込むことにより構成するようにし、当該プログラムをコンピュータ読み取り可能な記録媒体に記録するようにしたものである。
【００１６】
(10)  本発明の第１０の態様は、上述の第１〜第８の態様に係る物体の把持動作シミュレーション装置において、
力トランスデューサの作用部を、オペレータの指先に嵌めて固定できる指サックによって構成するようにしたものである。
【００２０】
【発明の実施の形態】
§１．  装置の基本構成
以下、本発明を図示する実施形態に基いて説明する。図１は本発明の一実施形態に係る物体の把持動作シミュレーション装置の基本構成を示すブロック図である。この装置では、所定の仮想物体を定義し、この仮想物体を掴む動作を疑似的に体験させるためのシミュレーションを行うことができる。この装置の構成要素は、図示のとおり、物体情報設定手段１０と、ディスプレイ２０と、物体形状描画手段３０と、演算制御手段４０と、ｎ個の力トランスデューサ５０とである。
【００２１】
物体情報設定手段１０は、仮想物体を定義するための情報を設定する機能を有する。オペレータが、この物体情報設定手段１０に対して種々のデータやパラメータを入力すると、入力されたデータやパラメータは、この物体情報設定手段１０内に格納され保持される。オペレータは、物体情報設定手段１０に対して設定したデータやパラメータを変更することにより、シミュレーションの条件設定を適宜変えることができる。この実施形態では、仮想物体を定義するための情報として、図示のように、形状データ，質感データ，光源データなる３種類のデータと、硬さＫ，摩擦係数Ｓ，質量ｍなる３種類のパラメータとを設定できるようにしている。
【００２２】
ディスプレイ２０は、仮想物体を表示するための手段であり、図１では立方体形状の仮想物体Ｂが所定位置に表示されている状態が示されている。物体形状描画手段３０は、物体情報設定手段１０内に設定された情報（形状データ，質感データ，光源データ）に基いて、ディスプレイ２０の画面上の所定位置に仮想物体Ｂの形状を描画する機能を有する。なお、物体形状描画手段３０は、仮想物体Ｂだけでなく、後述する作用点Ｐ１〜Ｐｎの位置を、ディスプレイ２０の画面上に描画する機能を有しており、図示のとおり、ディスプレイ２０の画面上には、仮想物体Ｂとともに、ｎ個の作用点Ｐ１〜Ｐｎの位置が表示される。
【００２３】
ｎ個の力トランスデューサ５０は、いずれも作用部５１、位置検出部５２、力発生部５３を有しており、演算制御手段４０に接続されている。各力トランスデューサ５０は、オペレータに対するマン・マシン・インターフェイスとして機能し、オペレータから与えられる操作量を入力するとともに、オペレータに対して力を返す働きをする。この実施形態では、１つの力トランスデューサ５０は、１本の指としての機能を果たすことになる。本発明は、物体の把持動作をシミュレートする装置であるので、少なくとも２組の力トランスデューサ５０が必要である。
【００２４】
作用部５１上には、作用点Ｐが定義されており、この作用点Ｐはオペレータから加えられた力に基いて三次元の任意方向に移動可能となっている。ここでは、ｎ個の力トランスデューサ５０の各作用部５１上に、それぞれ作用点Ｐ１〜Ｐｎが定義されているものとする。図１のディスプレイ２０上に表示されている作用点Ｐ１〜Ｐｎは、この各作用部５１上の作用点の位置である。位置検出部５２は、作用部５１上の作用点Ｐの三次元座標系上での位置を検出する機能を有する。具体的には、作用点Ｐの位置は、ｘ座標，ｙ座標，ｚ座標の３つの座標値として検出されることになる。ここでは、この３つの座標値によって示された作用点Ｐの位置をＰ（ｘ，ｙ，ｚ）なるデータで表わすことにする。たとえば、第１番目の力トランスデューサ５０内の位置検出部５２からは、作用点Ｐ１の位置を示すデータＰ１（ｘ，ｙ，ｚ）が出力され、第２番目の力トランスデューサ５０内の位置検出部５２からは、作用点Ｐ２の位置を示すデータＰ２（ｘ，ｙ，ｚ）が出力され、第ｎ番目の力トランスデューサ５０内の位置検出部５２からは、作用点Ｐｎの位置を示すデータＰｎ（ｘ，ｙ，ｚ）が出力される。
【００２５】
これら作用点の位置を示すデータＰ１（ｘ，ｙ，ｚ），Ｐ２（ｘ，ｙ，ｚ），…，Ｐｎ（ｘ，ｙ，ｚ）は、演算制御手段４０に与えられ、更に、物体形状描画手段３０へと与えられる。物体形状描画手段３０は、前述したように、これらの位置を示すデータに基いて、ディスプレイ２０の画面上に作用点Ｐ１〜Ｐｎの位置を描画することになる。一方、演算制御手段４０は、これら作用点の位置と、仮想物体の位置（物体情報設定手段１０内の情報により定義されている）とに基いて、各作用点と仮想物体との接触状態を認識し、この接触状態に応じて各作用点に生じるべき反力（仮想物体側からオペレータ側へと返される力）を求める演算を行う。ここで行われる具体的な演算内容については後に詳述する。こうして、各作用点に生じるべき反力が得られたら、この反力に基いて各作用点に加えるべき制御力を示す力制御ベクトルＣが求められ、これら力制御ベクトルＣを示すデータは、個々の力トランスデューサ５０へ与えられる。図示の例では、第１番目〜第ｎ番目の力トランスデューサ５０に対して、それぞれ力制御ベクトルＣ１〜Ｃｎが与えられる。力トランスデューサ５０内の力発生部５３は、演算制御手段４０から与えられた力制御ベクトルＣに基いて作用点Ｐに加える力を発生させる機能を有する。
【００２６】
§２．  物体情報設定手段に設定される情報
続いて、図１に示すシミュレーション装置において、物体情報設定手段１０内に設定される具体的な情報について説明する。前述したように、この実施形態では、形状データ，質感データ，光源データなる３種類のデータと、硬さＫ，摩擦係数Ｓ，質量ｍなる３種類のパラメータとが設定される。
【００２７】
形状データは、仮想物体の三次元形状を特定するためのデータである。ここでは、仮想物体の表面を二次元多角形の集合体として表現するようにしており、二次元多角形の頂点座標を示す頂点テーブルと、各二次元多角形を構成する頂点の連結関係を示す面テーブルと、によって形状データを構成するようにしている。たとえば、図２(a) に示すような立方体からなる仮想物体を定義する場合を考える。この立方体は、６つの正方形の集合体として表現することができ、図に１〜８の番号を付した合計８個の頂点によって構成される。このような立方体についての形状データは、図２(b) に示す頂点テーブルと図２(c) に示す面テーブルによって構成できる。図２(a) に示す頂点テーブルは、８個の頂点のそれぞれについて、ＸＹＺ三次元座標系における位置座標を示している。図示の例では、図２(a) に示す立方体は、頂点１が座標系の原点に位置し、頂点１−２に沿った辺がＸ軸上、頂点１−４に沿った辺がＹ軸上、頂点１−５に沿った辺がＺ軸上に位置しており、一辺の長さが１となる立方体である。図２(b) の頂点テーブルは、単に８個の頂点の位置座標を示すものであり、仮想物体の形状は、実際には、図２(c) の面テーブルによって定義されることになる。この面テーブルは、この立方体を構成する６個の面▲１▼〜▲６▼の頂点構成を示しており、たとえば、面▲１▼は、頂点１−２−６−５を連結することにより形成される面になる。
【００２８】
このように、頂点テーブルと面テーブルとを用いれば、任意形状の仮想物体の表面を定義することができる。図２の例では、仮想物体の表面を四角形の集合体として定義したが、三角形や六角形など、用いる多角形はどのようなものでもかまわない。また、本発明を実施する上では、仮想物体の形状定義は必ずしも二次元多角形を用いる必要はない。たとえば、球や円錐などであれば、方程式を用いて定義することも可能であり、物体情報設定手段１０に設定される形状データは、数値、式を問わず、形状を定義することができる情報であればどのようなものでもかまわない。なお、ここに示す実施形態では、形状データは座標を示す情報（図２の例では、頂点テーブル内の各座標値）を含んでいるため、形状とともに位置を定義する情報として機能する。もちろん、形状データとは別個に位置を示すための位置データを設定するようにしてもよい。
【００２９】
物体情報設定手段１０に設定される質感データは、形状データによって定義された仮想物体の表面の質感を示すためのデータである。具体的には、仮想物体を構成する各面（図２の例では、面▲１▼〜▲６▼）についての環境色，拡散色，鏡面色，鏡面係数などの値が質感データとして設定される。また、光源データは、この仮想物体を照明するための光源の性質を示すデータであり、光源の形状（点，線，面），光源の位置，光源色などを示すデータが光源データとして設定される。この質感データおよび光源データは、ディスプレイ２０の画面上に、定義した仮想物体を表示するために利用されるデータである。物体形状描画手段３０は、この質感データおよび光源データを考慮して、仮想物体Ｂの形状を描画することになる。
【００３０】
一方、硬さＫ，摩擦係数Ｓ，質量ｍなる３種類のパラメータは、仮想物体を把持する動作を行う際の接触感や重量感に直接関連するパラメータであり、これらのパラメータの設定を変えることにより、シミュレーション時の接触感や重要感を変えることができる。硬さＫは、仮想物体の表面に力を加えた際に、物体側から返ってくる反力の大きさを決定するパラメータである。硬さＫの値を大きく設定すればするほど反力の大きさも大きくなり、仮想物体に触れたときに硬い接触感が得られる。逆に、硬さＫの値を小さく設定すればするほど反力の大きさも小さくなり、仮想物体に触れたときに柔らかい接触感が得られる。硬さＫは、仮想物体の個々の表面ごとにそれぞれ異なる値を設定することも可能であるが、本実施形態では、１つの仮想物体に１つの硬さＫのみを設定するようにしている。
【００３１】
摩擦係数Ｓは、仮想物体の表面に加えた力のうち、物体を把持するために有効に作用する力の割合を決定するパラメータである。摩擦係数Ｓの値を大きく設定すればするほど有効な力の割合が多くなり、物体の把持が容易になる。逆に、摩擦係数Ｓの値を小さく設定すればするほど有効な力の割合が少なくなり、物体の把持が困難になる。この摩擦係数Ｓも、仮想物体の個々の表面ごとにそれぞれ異なる値を設定することも可能であるが、本実施形態では、１つの仮想物体に１つの摩擦係数Ｓのみを設定するようにしている。
【００３２】
質量ｍは、仮想物体の質量を示すものであり、後に詳述するように、仮想物体の移動速度を求める演算や、仮想物体に作用する重力を求める演算などに物理量として利用されることになる。質量ｍの値を大きく設定すればするほど、把持動作を行う際に体感できる重量感が増すことになる。なお、本実施形態では、演算を単純化するために、定義した仮想物体を均一密度の物体として取り扱い、重心位置に単一の質点を定義し、設定した質量ｍはこの単一の質点のもつ質量として取り扱うことにしている。もちろん、仮想物体を非均一密度の物体として取り扱うために、仮想物体の内部に多数の質点を定義し、個々の質点ごとにそれぞれ独立した質量を定義するようにしてもかまわない。
【００３３】
§３．  具体的な装置構成
図１に示すブロック図は、説明の便宜上、本発明に係る装置を機能要素の集合としてとらえ、個々の機能要素をブロックで示したものであり、実際には、このシミュレーション装置はコンピュータを利用して構築される。すなわち、図１に示す装置における物体情報設定手段１０、物体形状描画手段３０、演算制御手段４０は、汎用のコンピュータに、上述した各処理を実行するためのプログラムを組み込むことにより構成することができる。たとえば、物体情報設定手段１０に対するデータやパラメータの設定は、キーボードやマウスなどのコンピュータ用入力機器を用いて行うことができ、設定されたデータやパラメータはメモリや種々の記憶装置に格納されることになる。また、物体形状描画手段３０による描画機能や、演算制御手段４０による演算処理機能は、コンピュータに組み込まれたプログラムによって実現されることになり、このプログラムは、コンピュータ読み取り可能な記録媒体に記録して配布することが可能である。なお、ディスプレイ２０は、コンピュータ用の一般的なディスプレイ装置によって構成できる。
【００３４】
一方、力トランスデューサ５０は、オペレータの物理的操作をデジタルデータ（作用点の位置を示すデータ）に変換する第１の機能と、演算制御手段４０から与えられるデジタルデータ（力制御ベクトルＣを示すデータ）を物理的な力に変換してオペレータに与える第２の機能とを実行する物理的な構成要素である。一般的な物体の把持動作には、通常、指が用いられる。そこで、この実施形態では、上記機能が効果的に実行されるように、力トランスデューサ５０の作用部５１を、オペレータの指先に嵌めて固定できる指サックにより構成し、オペレータの指の動きに基いて作用点Ｐを移動できるようにするとともに、力制御ベクトルＣに基く制御力がこの指サックを介してオペレータの指に伝達されるように構成した。
【００３５】
図３は、この指サックの形態をした作用部５１を用いて構成される力トランスデューサ５０の機能を示すブロック図である。作用部５１は、ゴムなどの弾力性をもった材料で構成されており、オペレータは、この作用部５１を指の先端に装着して固定することができる。図示の例では、この作用部５１の先端部分に作用点Ｐが定義されている（もちろん、作用点Ｐは作用部５１のいずれの部分に定義してもかまわないが、操作性を向上する上では、指先位置に定義するのが好ましい）。本発明では、このような力トランスデューサを複数ｎ組用意する必要がある。物体に対する接触感を得るだけであれば、１組でも十分であるが、本発明は物体の把持動作をシミュレートする装置であり、物体の把持動作には少なくとも２組の力トランスデューサが必要になる。
【００３６】
ここで、作用部５１は三次元の自由度をもって移動可能な状態に支持されている必要がある。すなわち、作用点Ｐは、オペレータから加えられた力に基いて三次元の任意方向に移動可能な状態になっている必要がある（もちろん、作用点Ｐの移動可能空間は、所定の範囲内に制限されていてかまわない）。したがって、オペレータは、作用部５１を指先に装着した状態で、指先を三次元空間内の任意の方向に移動させることができる。位置検出部５２は、前述したように、作用点Ｐの三次元空間内の位置を、Ｐ（ｘ，ｙ，ｚ）なる３つの座標値からなるデータとしてリアルタイムで逐次検出する機能を有している。一方、力発生部５３は、演算制御手段４０からリアルタイムで逐次与えられる力制御ベクトルＣに基いて、力ｆを発生させ、これを作用点Ｐに逐次加える機能を果たす。ここで、作用点Ｐに加えられる力ｆは、力制御ベクトルＣの向きおよび大きさをもった力である。
【００３７】
結局、オペレータは、作用部５１を装着した指を任意の方向に動かすことが可能ではあるが、逆に、作用点Ｐに加わる力ｆを常に指先に受け、物体からの反力を感じることになる（もちろん、ｆ＝０の場合は、何ら反力は感じない）。
【００３８】
図４は、このような力トランスデューサ５０の具体的構成例を示す斜視図である。図では、２組の力トランスデューサ５０を用い、両作用部５１（指サック）をそれぞれ親指と人差し指とに装着した状態が示されている。いずれも指の先端部分に作用点Ｐが定義されており、オペレータは、両作用部５１を任意の方向に移動させながら、仮想物体Ｂを把持する動作を体感することができる。図示の力トランスデューサ５０では、複数のリンク機構を用いて、上述した２つの機能を実現している。すなわち、作用部５１は、複数の自在アームによって支持されているため、ある程度の範囲の空間内では、三次元の任意の方向に自由に移動させることが可能である。しかも、各自在アームの回転位置を検出する機構が備わっており、作用点Ｐの三次元座標値Ｐ（ｘ，ｙ，ｚ）を検出することができる。更に、各自在アームに力を加えるためのモータが用意されており、これらのモータを駆動することにより、作用点Ｐに任意の方向、任意の大きさの力を作用させることができる。
【００３９】
このような複数のリンク機構を用いた力トランスデューサは、既に公知の装置であるため、その構造や機構についての詳細な説明は省略する。市販の製品としては、たとえば、米国のセンサブル・デバイス社（SensAble Device Inc.）が「ＰＨＡＮＴｏＭ」なる商品名で販売している装置を利用することができる。結局、本発明に係る把持動作シミュレーション装置は、図４に示すような力トランスデューサを、汎用コンピュータに接続し、所定のプログラムをこのコンピュータに組み込むことにより実現することが可能になる。図４には、２組の力トランスデューサを用い、２本の指で操作する例を示したが、たとえば、１０組の力トランスデューサを用いれば、１０本の指で操作する装置を構成することも可能である。また、作用部５１は必ずしも指に固定する必要はない。たとえば、作用部５１を腕に固定するようにすれば、腕を用いて物体を把持する動作をシミュレートすることが可能である。
【００４０】
§４．  具体的な装置動作（非把持状態）
続いて、上述した実施形態に係るシミュレーション装置の具体的な動作、特に、演算制御手段４０において行われる演算処理動作について詳述する。図５および図６は、この装置を用いたシミュレーション動作の具体的な手順を示す流れ図である。ここに示す手順の特徴は、仮想物体の把持動作を、大きく２とおりの段階に分けて取り扱っている点にある。すなわち、非把持状態と把持状態との２段階を定義し、各段階でそれぞれ異なる取り扱いを行うようにしている。ここで、把持状態とは、少なくとも２つの作用点によって仮想物体を完全に支持した状態を指す。別言すれば、この把持状態においては、重力が作用しているにもかかわらず仮想物体は落下せず、少なくとも２つの作用点によって保持されたままの状態になり、この保持に関与している作用点をそのまま移動させると、仮想物体も一体となって移動する状態になる。これに対し、非把持状態とは、把持状態には至っていない状態を指し、作用点と仮想物体との動きが一体となっていない状態に相当する。
【００４１】
図５に示すステップＳ１〜Ｓ１１の手順は、非把持状態における動作を示す手順であり、図６に示すステップＳ１２〜Ｓ１９の手順は、把持状態における動作を示す手順である。図５のステップＳ１１は、把持状態であるか否かを判定するステップであり、ここで肯定的な判定がなされると、図６のステップＳ１２からの手順が進められることになる。一方、図６のステップＳ１５において肯定的な判定がなされると、再び非把持状態へと戻り図５のステップＳ２からの手順が進められる（場合によっては、一旦は非把持状態と判定されてステップＳ２に戻っても、再びステップＳ１１で把持状態と判定されてステップＳ１２へと直ちに戻ることもある）。以下、これらの流れ図の各ステップで行われる手順について詳述する。
【００４２】
まず、図５のステップＳ１において、仮想物体を定義するために、物体に関する諸情報が設定される。この実施形態の場合、図１に示す物体情報設定手段１０に対して、形状データ，質感データ，光源データ，硬さＫ，摩擦係数Ｓ，質量ｍが設定されることになる。これらデータやパラメータの内容については、既に§２において述べたとおりである。続いて、ステップＳ２において、仮想物体がディスプレイ上に表示される。たとえば、図２(a) に示すような立方体を仮想物体とする情報が物体情報設定手段１０内に設定されていた場合、図１に示すディスプレイ２０の画面上に、図示されているような立方体の描画が物体形状描画手段３０によって行われることになる。このとき、質感データおよび光源データを考慮することにより、写実的な描画がなされることは既に述べたとおりである。
【００４３】
続くステップＳ３では、ｎ個の作用点Ｐ１〜Ｐｎについての三次元位置Ｐ１（ｘ，ｙ，ｚ）〜Ｐｎ（ｘ，ｙ，ｚ）が検出される。既に述べたように、各力トランスデューサ５０の位置検出部５２の働きにより、演算制御手段４０に対しては、このような位置データがリアルタイムで逐次伝達されている。ステップＳ３の処理は、このような位置データを演算対象として取り込む処理ということになる。そして、ステップＳ４において、いずれかの作用点が仮想物体に接触しているか否かが判断される。
【００４４】
本実施形態では、演算負担を軽減するため、仮想物体を剛体として取り扱うようにしており、物体情報設定手段１０内に設定された仮想物体は形状を変えないという前提で処理を進めるようにしている（もちろん、仮想物体を弾性体あるいは塑性体として取り扱うようにしてもかまわないが、この場合は、弾性変形あるいは塑性変形のための係数などを設定し、形状を変化させる演算を行う必要がある）。したがって、本来であれば、作用点が仮想物体に接触している状態とは、作用点が仮想物体の表面に位置している状態を意味することになる。しかしながら、本発明の主眼は、オペレータに物体に対する接触感や重量感を体験させることにあるので、必ずしも現実の物理現象を忠実にシミュレートする必要はない。このような観点から、本願発明者は、仮想物体の内部に位置する作用点については接触状態であると認識し、仮想物体の外部に位置する作用点については非接触状態であると認識することにすれば、効果的な接触感を与える上で好都合であることを見出だした。
【００４５】
たとえば、図７に示すような位置に仮想物体Ｂ（αおよびβは、この仮想物体Ｂの表面を示す）が存在し、この仮想物体Ｂに対して、図示する位置に作用点Ｐが存在する場合を考える。この場合、作用点Ｐは仮想物体Ｂの内部に潜り込んだ状態（面αから深さｄだけ潜った状態）となっている。このような状態は、もし作用点Ｐが指先の点として定義されており、物体を剛体とした場合には、現実的には有り得ない状態である。しかしながら、ここでは、このように作用点Ｐが仮想物体Ｂの内部に潜り込んでいた場合に、当該作用点Ｐは仮想物体Ｂに対して接触状態であると認識するようにし、仮想物体Ｂの外部にある場合には非接触状態であると認識するようにする。個々の作用点が仮想物体の内部にあるか外部にあるかは、両者の位置座標を比較することにより認識することができる。なお、仮想物体Ｂのちょうど表面に位置する作用点も接触状態ではあるが、後述するように、反力Ｆが零になるため、接触状態／非接触状態のいずれの取り扱いをしても差は生じない。
【００４６】
ステップＳ４において、いずれの作用点も接触状態ではないと判断された場合（別言すれば、すべての作用点が仮想物体Ｂの外部に位置すると判断された場合）は、ステップＳ３へと戻り、各作用点の新たな位置が取り込まれる。一方、いずれかの作用点（いずれか１つの作用点でも）が接触状態であると認識された場合には、ステップＳ５において、各作用点について反力ベクトルＦが算出される。もっとも、接触状態にない作用点については、後述するように、反力ベクトルはいずれも０になるので、実際には演算を行う必要はない。
【００４７】
ここで、反力ベクトルＦは、物体からオペレータの指に対して反作用として加わる力を示すベクトルであり、本来であれば、指から物体に加えられた力に応じた大きさをもち、この力と反対方向を向いたベクトルとして定義されるべきものである。しかしながら、本発明に係るシミュレーション装置では、オペレータの指から与えられる操作量は、作用点の座標値として与えられることになる。そこで、本実施形態では、図７に示すように、接触状態にある作用点Ｐについては、仮想物体Ｂの表面αと作用点Ｐとの距離ｄに応じて、この距離ｄが大きくなるほど大きな反力が得られるものとし、更に、この反力の方向は、表面αに立てた法線ベクトルＮの方向と定義することにしている。前述したように、本実施形態では、仮想物体Ｂは多数の二次元多角形の集合体として定義されており、仮想物体Ｂの表面α，βは、いずれも二次元多角形から構成されている。したがって、本実施形態では、仮想物体Ｂの内部に位置する作用点Ｐについては（すなわち、接触状態にある作用点Ｐについては）、最も近い二次元多角形αとの距離ｄに応じた大きさを有し、当該作用点Ｐを通り前記二次元多角形αに垂直な法線ベクトルＮと同じ方向をもったベクトルとして、反力ベクトルＦが定義されることになる。
【００４８】
なお、本実施形態では、仮想物体Ｂについて硬さＫなるパラメータが設定されている。そこで、反力ベクトルＦの大きさを、距離ｄとパラメータＫとの積（ｄ・Ｋ）と定義している。すなわち、接触状態にある作用点Ｐについての反力ベクトルＦは、図７に示すように、法線ベクトルＮと同じ方向を向き、かつ、大きさが（ｄ・Ｋ）であるベクトルとして定義されることになる。一方、非接触状態にある作用点については、大きさ零の反力が得られるものとし（別言すれば、反力は無し）、反力ベクトルＦは零ベクトルとなる。
【００４９】
こうして、各作用点Ｐ１〜Ｐｎについての反力ベクトルＦ１〜Ｆｎが求まったら、続くステップＳ６において、各作用点Ｐ１〜Ｐｎについての力制御ベクトルＣ１〜Ｃｎを求める。ここで、力制御ベクトルＣ１〜Ｃｎは、各作用点Ｐ１〜Ｐｎに実際に加えるべき制御力を示すベクトルであり、このステップＳ６においては、各反力ベクトルをそのまま各力制御ベクトルとする。すなわち、力制御ベクトルＣ１〜Ｃｎ＝反力ベクトルＦ１〜Ｆｎとする（後述するステップＳ１３では、異なる設定がなされる）。この力制御ベクトルＣ１〜Ｃｎは、演算制御手段４０からｎ個の力トランスデューサ５０へと伝達される。そして、各力発生部５３によって、各作用点Ｐ１〜Ｐｎに対して、力制御ベクトルＣ１〜Ｃｎと同じ向きに、力制御ベクトルＣ１〜Ｃｎの大きさに応じた制御力が実際に加えられることになる。もちろん、非接触状態の作用点については、力制御ベクトルＣの大きさは零であるから、実際には力は加えられない。
【００５０】
結局、オペレータが、指先を仮想物体Ｂの表面位置まで移動させ、更に、仮想物体Ｂの内部へと移動させようとすると、当該指先に定義された作用点は、接触状態であると認識され、力制御ベクトルＣに応じた反力が当該指先に加えられることになる。この反力は、仮想物体表面（図７の場合、表面α）の法線方向を向いているため、オペレータは仮想物体の形状に応じた接触感を得ることができる。しかも、指先（作用点Ｐ）を仮想物体Ｂの内部へと移動させようとすればするほど、反力の大きさが増すので、仮想物体の存在感を感じることができる。このとき、硬さＫなるパラメータは、フックの法則におけるばね定数と同じ機能を果たすことになる。すなわち、硬さＫを大きく設定すれば反力の大きさが増し、硬い接触感が得られることになり、硬さＫを小さく設定すれば反力の大きさが減り、柔らかな接触感が得られることになる。
【００５１】
次のステップＳ７，Ｓ８に示す手順は、オペレータの複数の指による操作が平衡状態にあるか否かを判定する処理である。たとえば、図４に示すように２組の力トランスデューサを用いた装置において、右側の力トランスデューサの作用点Ｐのみが仮想物体Ｂの右側に接触している状態を考える。この状態は、オペレータの人差し指から左方向の力が仮想物体Ｂに加えられており、親指は仮想物体Ｂに対して非接触となっている状態を示している。このような状態では、仮想物体Ｂは、図の左方向へと移動するはずである。これに対して、もし左右の力トランスデューサの作用点Ｐが仮想物体Ｂの両側に接触した状態になっており、オペレータの人差し指から左方向に加えられる力と、オペレータの親指から右方向に加えられる力とが均衡している場合は、仮想物体Ｂは静止状態を保つはずである。
【００５２】
そこで、ステップＳ７において、全作用点Ｐ１〜Ｐｎの反力ベクトルＦ１〜Ｆｎを合成することにより合成反力ベクトルΣＦを求める演算が行われる。前述したように、非接触状態の作用点についての反力ベクトルは零ベクトルであるから、合成反力ベクトルΣＦは、実質的には、接触状態にある作用点についての反力ベクトルを合成したベクトルになる。図８は、三角柱からなる仮想物体Ｂの上断面図である。
【００５３】
いま、このような仮想物体Ｂについて、図のように、２つの接触作用点Ｐ１，Ｐ２が存在する場合を考える。作用点Ｐ１は面αから深さｄ１の位置にあり、作用点Ｐ２は面βから深さｄ２の位置にある。したがって、作用点Ｐ１については、面αの法線方向を向き、大きさが（ｄ１・Ｋ）なる反力ベクトルＦ１が定義され、この反力ベクトルＦ１に応じた制御力が作用点Ｐ１に加えられることになる。同様に、作用点Ｐ２については、面βの法線方向を向き、大きさが（ｄ２・Ｋ）なる反力ベクトルＦ２が定義され、この反力ベクトルＦ２に応じた制御力が作用点Ｐ２に加えられることになる。
【００５４】
この場合、ステップＳ７では、図８の右下に示すようなベクトル合成により、合成反力ベクトルΣＦが求められる。そして、ステップＳ８では、この合成反力ベクトルΣＦの大きさが所定の基準値Ｆｒ以下であるか否かが判定される。これは、オペレータの指から加えられた力が均衡しているか否かの判定に相当する。理論的には、基準値Ｆｒ＝０として、ΣＦ＝０の場合に限り、平衡状態と判定すればよい。ΣＦ＝０であれば、全接触作用点に対する反力が均衡しており、オペレータの把持動作が平衡状態にあると判断することができ、仮想物体Ｂは静止状態を保つことになる。ところが、ΣＦ≠０の場合には、オペレータの把持動作が非平衡状態にあるので、仮想物体Ｂを所定方向に移動させる力が作用することになる。たとえば、図８の例では、合成反力ベクトルΣＦ≠０であり、仮想物体Ｂを反転ベクトル−ΣＦ（合成反力ベクトルΣＦと大きさが同じで逆向きのベクトル）の方向へ移動させる力が作用していることになる。これに対して、図９の例では、３つの作用点Ｐ１，Ｐ２，Ｐ３が仮想物体Ｂに接触状態になっており、各作用点についての反力ベクトルＦ１，Ｆ２，Ｆ３を合成することにより得られる合成ベクトルΣＦは、ΣＦ＝（０，０，０）となっている（ここで、（０，０，０）は、各座標軸方向成分が０であるベクトル（零ベクトル）を示している）。したがって、この図９の例の場合は、平衡状態と判定されることになる。
【００５５】
もっとも、実用上は、ΣＦが完全に０になった場合だけでなく、所定の基準値Ｆｒ以下になった場合にも、平衡状態と判定して問題はなく、むしろそのような判定を行う方が操作性を向上できる。そこで、ステップＳ８では、合成反力ベクトルΣＦの大きさが、所定の基準値Ｆｒ以下であるか否かを判定することにより、平衡状態の判定を行うようにしている。基準値Ｆｒ以下である場合には、把持動作が平衡状態にあると判定し、ステップＳ１０へと進み、所定の基準値Ｆｒを越える場合には把持動作が非平衡状態にあると判定し、ステップＳ９へと進むことになる。
【００５６】
ステップＳ９は、仮想物体Ｂを移動させるための処理であり、たとえば、図８に示す例の場合、仮想物体Ｂを、合成反力ベクトルΣＦを反転して得られる反転ベクトル−ΣＦの方向に移動させる処理が行われる。このような移動処理を行うために、まず、移動ベクトルＤが演算される。この移動ベクトルＤは、Ｄ＝１／２・（−ΣＦ／ｍ）・ｔ２で与えられる長さの次元をもったベクトルである。ここで、−ΣＦは、上述の反転ベクトルであり、仮想物体Ｂを運動させるために加えられた力を示し、ｍは、物体情報設定手段１０内に設定されている仮想物体の質量を示すパラメータである。結局、上式における（−ΣＦ／ｍ）なる項は、仮想物体Ｂに加わる加速度を示していることになる。また、ｔは時間を示す変数であり、移動ベクトルＤは、（−ΣＦ／ｍ）なる加速度の作用下において、時間ｔの間における仮想物体Ｂの移動態様（移動方向および移動距離）を示すベクトルということになる。ステップＳ９では、この移動ベクトルＤに基いて、仮想物体Ｂの位置が変更されるように物体情報設定手段１０内の情報を更新する処理が行われる。
【００５７】
ステップＳ９の処理が完了すると、再びステップＳ２からの手順が実行されることになる。ステップＳ２では、仮想物体の描画が行われるが、この時点で、物体情報設定手段１０内の情報が更新されているので、移動後の新たな位置に仮想物体が描き直されることになる。
【００５８】
一方、ステップＳ８において平衡状態との判定がなされた場合には、ステップＳ１０，Ｓ１１へと進み、把持状態か否かの判定がなされる。前述したように、把持状態とは、少なくとも２つの作用点によって仮想物体が完全に支持された状態である。本実施形態では、次の２つの条件をともに満たした場合に、把持状態と判定するようにしている。第１の条件は「平衡状態との判定がなされていること」である。非平衡状態では、仮想物体は作用点から逃げるように移動することになり、安定した支持が困難である。したがって、ここでは、「平衡状態」が保たれていることを把持状態の必須条件に設定した。しかしながら、「平衡状態にある」という条件だけでは、これを直ちに把持状態と認定することはできない。
【００５９】
たとえば、図４に示す例のように、仮想物体Ｂの左右両側に作用点Ｐを接触させ、両側から挟むような力を加え、仮にその力が均衡していたとしても、挟む力が十分でなければ、仮想物体Ｂを持ち上げることはできない。挟む力が弱ければ、両作用点Ｐを上方へ移動させたとしても、仮想物体Ｂは滑って落下してしまうことになる。把持状態とは、仮想物体が作用点により完全に支持されており、作用点の移動とともに、仮想物体も一体となって移動する状態を言うものであるから、仮想物体が滑って落下してしまうようでは、把持状態にあると言うことはできない。ここで、挟む力が十分であるか否か、別言すれば、仮想物体が滑って落下してしまうか否か、という問題は、作用点と仮想物体表面との間の摩擦力（静的摩擦力）と仮想物体に働く重力との大小関係の問題として把握することができる。そこで、本実施形態では、把持状態と判定するための第２の条件として、「仮想物体に働く重力よりも、作用点による全摩擦力の方が大きい」なる条件を用いている。
【００６０】
上述した「平衡状態にある」という第１の条件判断は、既にステップＳ８において行われているので、ステップＳ１０，Ｓ１１では、第２の条件判断を行うだけでよい。そこで、ステップＳ１０では、まず、全作用点における摩擦力の合計を、総摩擦力Ｔｓとして算出している。個々の作用点における摩擦力は、当該作用点についての反力ベクトルＦの大きさに、摩擦係数Ｓ（物体情報設定手段１０において設定されている）を乗じることにより求めることができる。そこで、これら個々の作用点における摩擦力の総和をとれば、総摩擦力Ｔｓが得られる。もっとも、非接触状態の作用点についての反力ベクトルの大きさは０であるから、実質的には、接触状態の作用点のみが総摩擦力Ｔｓに貢献することになる。たとえば、図１０に示すように、三角柱からなる仮想物体Ｂを構成する３つの面α，β，γに、それぞれ作用点Ｐ１，Ｐ２，Ｐ３が接しており、各作用点に、それぞれ反力ベクトルＦ１，Ｆ２，Ｆ３が定義されていた場合、総摩擦力Ｔｓは、各面の摩擦係数Ｓを用いて、
Ｔｓ＝｜Ｆ１｜・Ｓ＋｜Ｆ２｜・Ｓ＋｜Ｆ３｜・Ｓ
なる式で得られることになる。一方、仮想物体Ｂに作用する重力ベクトルＷは、Ｗ＝ｍｇで表される（ｍは仮想物体Ｂの質量、ｇは重力加速度ベクトル）。
【００６１】
かくして、ステップＳ１１において、重力ベクトルＷの大きさと、総摩擦力Ｔｓとを比較し、後者が前者よりも大きいと判断された場合には、その時点において接触状態にあるＬ個の作用点によって、仮想物体が把持状態にあると判定することができる。このステップＳ１１において、把持状態にあると判定された場合には、図６のステップＳ１２の手順が実行されることになる。一方、非把持状態にあると判定された場合には、ステップＳ３からの処理が再び実行される。
【００６２】
§５．  具体的な装置動作（把持状態）
非把持状態にある場合の取り扱いと、把持状態にある場合の取り扱いとの大きな相違点は、後者では、仮想物体の加速度を考慮した制御力が作用点に加えられるようにするという点にある。たとえば、図４に示す例において、仮想物体Ｂが一対の作用点Ｐによって左右からしっかりと支持され、把持状態になったと考えよう。この場合、一対の作用点Ｐと仮想物体Ｂとは一体となって運動することになり、オペレータは、仮想物体を指先で把持しているとの体感を得ることになる。本願発明者は、このような場合、各作用点Ｐに、反力（指から仮想物体に対して加えられた力の反作用として、仮想物体から指に対して加えられる力）だけでなく、仮想物体Ｂの運動加速度および重力加速度に基く力を加えると、よりリアルな重量感を与えることができることを見出だした。
【００６３】
すなわち、前述した非把持状態におけるステップＳ６では、反力ベクトルＦ１〜Ｆｎを、そのまま力制御ベクトルＣ１〜Ｃｎとして、各作用点Ｐ１〜Ｐｎに制御力として作用させていたが、把持状態にある場合は、この反力ベクトルＦ１〜Ｆｎに、仮想物体Ｂの運動加速度および重力加速度に基く力ベクトルを合成することにより、力制御ベクトルＣ１〜Ｃｎを求め、これを各作用点Ｐ１〜Ｐｎに制御力として作用させればよい。ただし、非接触状態の作用点についての力制御ベクトルは、やはり零ベクトル（０，０，０）とする。
【００６４】
以下、このような考え方に基く具体的な手法を、図６の流れ図に基いて説明する。まず、図５のステップＳ１１において把持状態と判定された場合には、ステップＳ１２において、仮想物体の加速度ベクトルＡを、Ａ＝（０，０，０）なる初期値（零ベクトル）に設定する。別言すれば、本実施形態では、把持状態と判定された初期段階においては、仮想物体Ｂは静止状態にあるという取り扱いをすることになる。
【００６５】
続いて、ステップＳ１３において、加速度を考慮した力制御ベクトルを求め、各作用点に制御力を加える処理が行われる。たとえば、図１１に示す例のように、立方体形状をした仮想物体が、３つの作用点Ｐ１，Ｐ２，Ｐ４によって把持されており、しかも加速度ベクトルＡに基く運動をしていたとする（加速度ベクトルＡは、オペレータが３つの作用点Ｐ１，Ｐ２，Ｐ４を運動させることにより生じた加速度を示すものである）。このとき、作用点Ｐ３，Ｐ５は、非接触状態の作用点であり、仮想物体の把持動作には関与していない。したがって、作用点Ｐ３，Ｐ５に対しては、仮想物体側からは何ら力は作用しない。これに対して、接触状態の作用点Ｐ１，Ｐ２，Ｐ４については、前述したように、それぞれ反力ベクトルＦ１，Ｆ２，Ｆ４が演算され、それぞれ反力ベクトルＦ１，Ｆ２，Ｆ４に応じた力が力発生部５３によって加えられる。ただ、把持状態における取り扱いでは、接触状態の作用点Ｐ１，Ｐ２，Ｐ４には、反力ベクトルＦ１，Ｆ２，Ｆ４に加えて、加速度ベクトルＡに基く力と、重力ベクトルＷ（Ｗ＝ｍｇ）に基く力と、を重畳して作用させることにより、物体の重量感を体感させるようにするのである。
【００６６】
ここでは、加速度ベクトルＡに仮想物体の質量ｍを乗じて得られるベクトルｍＡを運動ベクトル（力の次元をもつ）と呼び、この運動ベクトルｍＡと重力ベクトルＷとを合成することにより得られるベクトル（ｍＡ＋Ｗ）を、外力ベクトルと呼ぶことにする。運動ベクトルｍＡは、オペレータが物体を把持した状態で所定方向に運動させようとすることにより生じる力のベクトルであり、外力ベクトルは、更に重力を加えることにより、仮想物体全体に外力として作用する力を表すベクトルである。この外力ベクトル（ｍＡ＋Ｗ）は、仮想物体全体に作用する力を示しているが、この外力ベクトル（ｍＡ＋Ｗ）が各接触作用点にそれぞれ分散して作用すると考えることにより、各接触作用点に分散外力ベクトルＦａを定義することができる。ここでは、外力ベクトル（ｍＡ＋Ｗ）が、接触状態にあるＬ個の作用点すべてに均等に分散するという仮定に基づき、Ｆａ＝（ｍＡ＋Ｗ）／Ｌなる式に基いて各作用点に作用する分散外力ベクトルＦａを決定している。
【００６７】
結局、図１１に示す３つの接触作用点Ｐ１，Ｐ２，Ｐ４には、それぞれ反力ベクトルＦ１，Ｆ２，Ｆ４に、分散外力ベクトルＦａを重畳して作用させればよい。すなわち、作用点Ｐ１，Ｐ２，Ｐ４に加えるべき制御力を示す力制御ベクトルＣ１，Ｃ２，Ｃ４を、それぞれＣ１＝Ｆ１＋Ｆａ，Ｃ２＝Ｆ２＋Ｆａ，Ｃ４＝Ｆ４＋Ｆａなるベクトル合成により求め、各作用点にこれら力制御ベクトルに応じた制御力を加えるようにすればよい。もちろん、非接触作用点Ｐ３，Ｐ５についての力制御ベクトルＣ３，Ｃ５は、大きさ零の零ベクトル（０，０，０）とし、実質的には何ら制御力は加えない。
【００６８】
続いて、ステップＳ１４において、時間ｔ経過後のｎ個の作用点Ｐ１〜Ｐｎについての三次元位置ＰＰ１（ｘ，ｙ，ｚ）〜ＰＰｎ（ｘ，ｙ，ｚ）を検出する。たとえば、時刻Ｔにおける作用点Ｐ１〜Ｐｎの位置がＰ１（ｘ，ｙ，ｚ）〜Ｐｎ（ｘ，ｙ，ｚ）であったとすると、時刻（Ｔ＋ｔ）における作用点Ｐ１〜Ｐｎの位置はＰＰ１（ｘ，ｙ，ｚ）〜ＰＰｎ（ｘ，ｙ，ｚ）ということになる。そして、ステップＳ１５において、各作用点について接触状態の変化があったか否かが判断される。すなわち、個々の作用点について、接触状態から非接触状態への状態遷移もしくは非接触状態から接触状態への状態遷移が生じたか否かが、時間ｔの周期で監視されることになる。そして、すべての作用点について状態遷移が生じていない場合は、引き続き把持状態にあるとの判定が行われ、ステップＳ１６へと進むことになるが、いずれかの作用点について状態遷移が生じていた場合には、ステップＳ１５からステップＳ２へと戻り、前述した非把持状態の手順が実行されることになる。
【００６９】
たとえば、図１１に示す例では、作用点Ｐ１，Ｐ２，Ｐ４が接触状態、作用点Ｐ３，Ｐ５が非接触状態となっているので、これらの状態が維持されている限りは、引き続き把持状態にあるとの判定が行われ、ステップＳ１６へと進むことになる。ところが、作用点Ｐ１が接触状態から非接触状態へ状態遷移を生じたり、あるいは、作用点Ｐ５が非接触状態から接触状態へ状態遷移を生じたりした場合には、ステップＳ１５において接触状態が変化したと判断され、ステップＳ２へと戻ることになる。もちろん、このようにいずれかの作用点について接触状態の変化が生じたからといって、必ずしも把持状態が解消されるわけではない。ただ、いずれかの作用点について接触状態の変化が生じた場合には、把持状態が解消される可能性があるので、本実施形態では、このような場合は、取り敢えずステップＳ２からの手順に戻り、把持状態／非把持状態の判定を再度実行するようにしている。もし、把持状態が解消されていない場合には、直ちにステップＳ１１において把持状態である旨の判定がなされ、ステップＳ１２へと戻るので、大きな問題は生じない。なお、このように直ちに把持状態に戻った場合には、ステップＳ１２の初期化を省略するようにすると、仮想物体の運動を継続させた取り扱いが可能になる。
【００７０】
一方、引き続き把持状態にあるとの判定が行われ、ステップＳ１６へと進んだ場合には、各作用点Ｐ１〜Ｐｎについて、それぞれ加速度ベクトルＡ１〜Ａｎが算出される。ただし、非接触状態の作用点については、加速度ベクトルの算出は行われない（あるいは、非接触状態の作用点についての加速度ベクトルは、すべて零ベクトル（０，０，０）とする取り扱いをすればよい）。各加速度ベクトルは、各作用点の位置の時間的変化に基いて求めることができる。たとえば、第１番目の作用点Ｐ１が接触状態であった場合、この作用点Ｐ１についての加速度ベクトルＡ１は、作用点Ｐ１の旧位置を示すベクトルＰ１（ｘ，ｙ，ｚ）と、新位置（時間ｔ経過後の位置）を示すベクトルＰＰ１（ｘ，ｙ，ｚ）とを用いることにより、
Ａ１＝（ＰＰ１（ｘ，ｙ，ｚ）−Ｐ１（ｘ，ｙ，ｚ））×２／ｔ２
なる演算で求めることができ、同様に、第ｎ番目の作用点Ｐｎが接触状態であった場合、この作用点Ｐｎについての加速度ベクトルＡｎは、作用点Ｐｎの旧位置を示すベクトルＰｎ（ｘ，ｙ，ｚ）と、新位置（時間ｔ経過後の位置）を示すベクトルＰＰｎ（ｘ，ｙ，ｚ）とを用いることにより、
Ａｎ＝（ＰＰｎ（ｘ，ｙ，ｚ）−Ｐｎ（ｘ，ｙ，ｚ））×２／ｔ２
なる演算で求めることができる。
【００７１】
なお、前述したように、本実施形態では、仮想物体を剛体として取り扱っているため、仮想物体は変形することがない。したがって、ｎ個の作用点Ｐ１〜Ｐｎについての加速度ベクトルＡ１〜Ａｎに対して、
Ａ＝（Ａ１＋Ａ２＋  ……  ＋Ａｎ）／Ｌ
なる演算を行い（Ｌは接触状態にある作用点の数）、平均加速度ベクトルＡを求めるようにし、この平均加速度ベクトルＡが仮想物体全体に作用しているものとすればよい。
【００７２】
続いて、ステップＳ１７では、仮想物体を移動ベクトルＭに基いて移動する処理が行われる。たとえば、第１番目の作用点Ｐ１の時間ｔの間の移動態様（移動方向および移動距離）を示す移動ベクトルＭ１は、加速度ベクトルＡ１を用いて、
Ｍ１＝１／２・Ａ１・ｔ２
なる式で求めることができ、第ｎ番目の作用点Ｐｎの時間ｔの間の移動態様を示す移動ベクトルＭｎは、加速度ベクトルＡｎを用いて、
Ｍｎ＝１／２・Ａｎ・ｔ２
なる式で求めることができる（非接触状態の作用点の場合、加速度ベクトルが零ベクトルであるため、移動ベクトルも零ベクトルになる）。もっとも、本実施形態のように、仮想物体を剛体として取り扱い、かつ、仮想物体の移動を平行移動（いわゆる回転要素をもたない移動）に限定した取り扱いを行う場合は、
Ｍ＝（Ｍ１＋Ｍ２＋  ……  ＋Ｍｎ）／Ｌ
なる演算、もしくは、上記平均加速度ベクトルＡを用いた、
Ｍ＝１／２・Ａ・ｔ２
なる演算で、平均移動ベクトルＭを求め、この移動ベクトルＭに基いて仮想物体の位置が変更されるように物体情報設定手段１０内の情報を更新する処理を行うようにすればよい。たとえば、図２(a) に示すような立方体形状の仮想物体について、Ｘ軸負方向を向き、大きさが１の移動ベクトルＭが得られた場合には、全体がＸ軸負方向に距離１だけ移動することになるので、図２(b) に示す頂点テーブルは、図１２に示すように更新されることになる。
【００７３】
続くステップＳ１８では、物体形状描画手段３０により、更新された物体情報設定手段１０内の情報に基く仮想物体の描画が行われることになり、ディスプレイ２０の画面上には、移動後の仮想物体の位置が表示されることになる。
【００７４】
最後に、ステップＳ１９において、ｎ個の作用点Ｐ１〜Ｐｎの旧位置を示すベクトルＰ１（ｘ，ｙ，ｚ）〜Ｐｎ（ｘ，ｙ，ｚ）が、新位置を示すベクトルＰＰ１（ｘ，ｙ，ｚ）〜ＰＰｎ（ｘ，ｙ，ｚ）によって置き換えられた後、再びステップＳ１３からの処理が繰り返し実行される。すなわち、ステップＳ１６において求められた加速度ベクトルＡが、ステップＳ１３において利用されることになる。かくして、各作用点の接触状態の変化が生じない限り、ステップＳ１３〜Ｓ１９の手順が繰り返し実行されることになる。
【００７５】
以上、本発明に係る物体の把持動作シミュレーション装置を代表的な実施形態に基いて説明したが、本発明はここに述べた形態に限定されるものではなく、この他にも種々の形態で実施可能である。たとえば、仮想物体は必ずしも剛体とする必要はなく、弾性体や塑性体として取り扱うことも可能であり、形状が変形するような取り扱いをしてもかまわない。また、上述の実施形態で述べたディスプレイ２０および物体形状描画手段３０は、視覚による提示が必要なければ、必ずしも設ける必要はない。もっとも、オペレータに対して接触感や重量感を効率的に与えるためには、視覚による提示と触覚による提示とを併用するのが好ましく、実用上は、ディスプレイ２０および物体形状描画手段３０を設けるのが好ましい。
【００７６】
【発明の効果】
以上のとおり本発明に係る物体の把持動作シミュレーション装置によれば、物体を把持する際の接触感や重量感を疑似的に体験させることができるようになる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る物体の把持動作シミュレーション装置の基本構成を示すブロック図である。
【図２】図１に示すシミュレーション装置において定義された仮想物体およびその形状データの一例を示す図である。
【図３】図１に示すシミュレーション装置における力トランスデューサの機能を示すブロック図である。
【図４】図３に示す力トランスデューサの具体的な構成例を示す斜視図である。
【図５】本発明に係るシミュレーション装置における非把持状態における動作手順を示す流れ図である。
【図６】本発明に係るシミュレーション装置における把持状態における動作手順を示す流れ図である。
【図７】本発明に係るシミュレーション装置における反力ベクトルＦの決定方法の一例を示す側断面図である。
【図８】本発明に係るシミュレーション装置における反力の非平衡状態を示す上断面図である。
【図９】本発明に係るシミュレーション装置における反力の平衡状態を示す上断面図である。
【図１０】本発明に係るシミュレーション装置における摩擦を考慮した把持状態の判定方法を示す斜視図である。
【図１１】本発明に係るシミュレーション装置において、把持状態における物体に作用する力を示す斜視図である。
【図１２】物体の移動により図２に示す形状データの更新例を示す図である。
【符号の説明】
１〜８…頂点
１０…物体情報設定手段
２０…ディスプレイ
３０…物体形状描画手段
４０…演算制御手段
５０…力トランスデューサ
５１…作用部
５２…位置検出部
５３…力発生部
Ａ…加速度ベクトル
Ｂ…仮想物体
Ｃ，Ｃ１〜Ｃｎ…力制御ベクトル
ｄ，ｄ１，ｄ２，ｄ３…作用点と仮想物体の表面との距離
Ｆ，Ｆ１〜Ｆｎ…反力ベクトル
Ｆａ…分散外力ベクトル
ΣＦ…合成反力ベクトル
ｆ…作用点Ｐに加えられる力
Ｋ…硬さを示すパラメータ
Ｎ…法線ベクトル
Ｐ，Ｐ１〜Ｐｎ…作用点
Ｐ（ｘ，ｙ，ｚ），Ｐ１（ｘ，ｙ，ｚ）〜Ｐｎ（ｘ，ｙ，ｚ）…作用点Ｐ，Ｐ１〜Ｐｎの位置
ＰＰ１（ｘ，ｙ，ｚ）〜ＰＰｎ（ｘ，ｙ，ｚ）…作用点Ｐ１〜Ｐｎの新位置
Ｗ…重力ベクトル
α，β，γ…仮想物体の表面を構成する多角形
【図１】
0003713381.tif 000002
【図２】
0003713381.tif 000003
【図３】
0003713381.tif 000004
【図４】
0003713381.tif 000005
【図５】
0003713381.tif 000006
【図６】
0003713381.tif 000007
【図７】
0003713381.tif 000008
【図８】
0003713381.tif 000009
【図９】
0003713381.tif 000010
【図１０】
0003713381.tif 000011
【図１１】
0003713381.tif 000012
【図１２】
0003713381.tif 000013