(57)【要約】【課題】  より簡便に力覚提示を行うための技術を提供すること。【解決手段】  仮想工具物体と仮想ねじ物体とが干渉状態にあり、且つ仮想ねじ物体と仮想ねじ穴物体とが干渉状態にある場合、干渉判定部２１１は、力覚提示装置１に対する制御モードを通常モードから非通常モードに移行する。非通常モードに移行した場合、力覚計算部２２１は、仮想ねじ物体と仮想ねじ穴物体との干渉に応じて発生する仮想工具物体に対するトルクを、仮想ねじ物体の回転数に基づいて求める。制御部２３１は、求めたトルクに基づいた力覚を力覚提示装置１によって提示させるための制御値を求め、力覚提示装置１に送信する。【選択図】  図３
2008055527.tif 000002
【特許請求の範囲】
【請求項１】
工具を模した仮想工具物体を操作する為の操作部を有する力覚提示装置であると共に、与えられた制御値に応じた力覚を提示する力覚提示装置を制御するための情報処理装置が行う情報処理方法であって、
前記仮想工具物体と、ねじ部材を模した仮想ねじ物体とが干渉状態にあるのかを判断する第１の判断工程と、
前記仮想ねじ物体と、ねじ穴を模した仮想ねじ穴物体とが干渉状態にあるのかを判断する第２の判断工程と、
前記仮想工具物体と前記仮想ねじ物体とが干渉状態にあり、且つ前記仮想ねじ物体と前記仮想ねじ穴物体とが干渉状態にある場合には、前記力覚提示装置に対する制御モードを通常モードから非通常モードに移行するモード制御工程と、
前記非通常モードに移行した場合には、前記仮想ねじ物体と前記仮想ねじ穴物体との干渉に応じて発生する前記仮想工具物体に対するトルクを、前記仮想ねじ物体の回転数に基づいて求める計算処理を行う計算工程と、
前記計算工程で求めたトルクに基づいた力覚を前記力覚提示装置によって提示させるための制御値を求め、前記力覚提示装置に送信する送信工程と
を備えることを特徴とする情報処理方法。
【請求項２】
ねじ部材を模した仮想ねじ物体を、ねじ穴を模した仮想ねじ穴物体に取り付ける際の力覚を提示する力覚提示装置を制御するための情報処理装置が行う情報処理方法であって、
前記仮想ねじ物体と前記仮想ねじ穴物体の干渉状態を判断する判断工程と、
前記判断工程において干渉していると判断された場合に、前記仮想ねじ物体の回転数に対応するトルクを求める計算工程と、
前記計算工程で求めたトルクに基づいた力覚を、前記力覚提示装置により提示するように制御する制御工程と
を備えることを特徴とする情報処理方法。
【請求項３】
前記仮想ねじ物体はおねじを模した仮想物体であり、前記仮想ねじ穴物体はめねじを模した仮想物体であることを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
前記計算工程では、
前記仮想ねじ物体の各回転数に対応するトルクが登録されたテーブルを用いて前記計算処理を行うことを特徴とする請求項１又は２に記載の情報処理方法。
【請求項５】
前記計算工程では、
前記仮想ねじ物体の回転数に対応するトルクを、回転数とトルクとの関係式を用いて求めることを特徴とする請求項１又は２に記載の情報処理方法。
【請求項６】
前記仮想ねじ物体の回転数に対応するトルクは、回転数の増加に応じて変化することを特徴とする請求項４又は５に記載の情報処理方法。
【請求項７】
工具を模した仮想工具物体を操作する為の操作部を有する力覚提示装置であると共に、与えられた制御値に応じた力覚を提示する力覚提示装置を制御するための情報処理装置であって、
前記仮想工具物体と、ねじ部材を模した仮想ねじ物体とが干渉状態にあるのかを判断する第１の判断手段と、
前記仮想ねじ物体と、ねじ穴を模した仮想ねじ穴物体とが干渉状態にあるのかを判断する第２の判断手段と、
前記仮想工具物体と前記仮想ねじ物体とが干渉状態にあり、且つ前記仮想ねじ物体と前記仮想ねじ穴物体とが干渉状態にある場合には、前記力覚提示装置に対する制御モードを通常モードから非通常モードに移行するモード制御手段と、
前記非通常モードに移行した場合には、前記仮想ねじ物体と前記仮想ねじ穴物体との干渉に応じて発生する前記仮想工具物体に対するトルクを、前記仮想ねじ物体の回転数に基づいて求める計算処理を行う計算手段と、
前記計算手段が求めたトルクに基づいた力覚を前記力覚提示装置によって提示させるための制御値を求め、前記力覚提示装置に送信する送信手段と
を備えることを特徴とする情報処理装置。
【請求項８】
ねじ部材を模した仮想ねじ物体を、ねじ穴を模した仮想ねじ穴物体に取り付ける際の力覚を提示する力覚提示装置を制御するための情報処理装置であって、
前記仮想ねじ物体と前記仮想ねじ穴物体の干渉状態を判断する判断手段と、
前記判断手段において干渉していると判断された場合に、前記仮想ねじ物体の回転数に対応するトルクを求める計算手段と、
前記計算手段が求めたトルクに基づいた力覚を、前記力覚提示装置により提示するように制御する制御手段と
を備えることを特徴とする情報処理装置。
【請求項９】
コンピュータに請求項１乃至６の何れか１項に記載の情報処理方法を実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーチャルリアリティーにおける力覚提示に係る技術に関するものである。
【背景技術】
【０００２】
図８は、従来のバーチャルリアリティにおける力覚提示を実現するためのシステムの機能構成を示すブロック図である（非特許文献１参照）。
【０００３】
図８において、１は力覚提示装置である。力覚提示装置１の代表的な例としては、ロボットアームを制御することでスタイラスペンをロボットアームの先に把持させ、ロボットアームのモータで出力制御することによってスタイラスペンを把持する手に力覚を提示させるものがある（非特許文献２参照）。
【０００４】
また、ボールや指サックから数本の糸を伸ばし、その糸の張力を制御することによってボールを把持している手、あるいは指サックに挿入している指に力覚を提示させるものがある（非特許文献３参照）。
【０００５】
あるいは、外骨格（エグゾスケルトン）型と呼ばれるものがある（特許文献１参照）。この外骨格型力覚提示装置は、手首を力覚提示の支持点として固定する。そして、外骨格に沿ってワイヤなどの駆動媒体を配置し、それを駆動することによって、指先に仮想物体を把持したときの力覚を提示させる。
【０００６】
次に、２は力覚レンダリング部で、干渉判定部２１０と、力覚計算部２２０と、制御部２３０とで構成されている。
【０００７】
干渉判定部２１０は、力覚提示装置１からユーザの操作対象となる工具を模した仮想物体（アバタ）の位置Ｘを取得し、取得した位置と、工具による操作対象としてのオブジェクトの位置とを用いて、それぞれの干渉状態を求める。ここでの干渉状態とは、アバタがどれだけオブジェクトに対して侵入しているのかを示す侵入深度Ｓである。
【０００８】
力覚計算部２２０は、この侵入深度Ｓに基づいて、アバタにかかる力Ｆｄを求める。
【０００９】
制御部２３０は、この力Ｆｄが力覚提示装置１によってユーザに提示されるような制御値Ｆｒを求め、求めた制御値Ｆｒを力覚提示装置１に対して送出する。
【００１０】
３はシミュレーション部で、シミュレーションエンジン３１０を有する。シミュレーション部３は、力覚計算部２２０が計算した力Ｆｄに基づいて、オブジェクトの変形や移動等をシミュレーションする。シミュレーション結果は即座に干渉判定部２１０に送出される。これにより干渉判定部２１０はこのシミュレーション結果に応じたオブジェクトと、アバタとの干渉判定処理を行う。また、このシミュレーション結果は、後段のグラフィックスエンジン４１０に対しても送出される。
【００１１】
４は画像レンダリング部で、グラフィックスエンジン４１０を有する。グラフィックスエンジン４１０は、アバタの画像、オブジェクトの画像を生成するのであるが、かかるオブジェクトは、シミュレーション結果に基づいて移動したり変形していたりする。
【００１２】
５はCRTや液晶等、フラットパネルディスプレイ、ヘッドマウントディスプレイ（HMD）などからなる画像表示部で、グラフィックスエンジン４１０で生成された画像を表示する。
【非特許文献１】Kenneth Salisbury, Francois Conti and Federico Barbagli, "Haptic Rendering: Introductory Concepts, "IEEE Computer Graphics and Applications, January/February ２００４, pp. ２４-３２
【非特許文献２】T. M. Massie, J. K. Salisbury, “The PHANTOM Haptic Interface, "A Device for Probing Virtual Objects, “ASME Haptic Interface for Virtual Environment and Teleoperator Systems １９９４, In Dynamic Systems and Control, Vol.１, pp.２９５-３０１
【非特許文献３】佐藤 誠、平田 幸広、河原田 弘、“空間インターフェース装置SPIDARの提案、”電子情報通信学会論文誌 D-II Vol.J７４-D-II、No.７、pp.８８７-８９４、１９９１年７月
【特許文献１】米国特許第５１８４３１９号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来の技術では以下の課題があった。
【００１４】
従来技術の力覚提示方法でねじ締結の力覚提示を行うためには、おねじの山・谷と、めねじの谷・山との干渉判定が必要で、計算が複雑になる。また、多点の反力や摩擦を計算する必要があるため、さらに計算が複雑になり、膨大な計算量を要することになる。したがって、リアルタイムな提示ができなくなり、滑らかな、かつ自然な力覚提示ができなくなる。
【００１５】
本発明は以上の問題に鑑みてなされたものであり、より簡便に力覚提示を行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１７】
即ち、工具を模した仮想工具物体を操作する為の操作部を有する力覚提示装置であると共に、与えられた制御値に応じた力覚を提示する力覚提示装置を制御するための情報処理装置が行う情報処理方法であって、
前記仮想工具物体と、ねじ部材を模した仮想ねじ物体とが干渉状態にあるのかを判断する第１の判断工程と、
前記仮想ねじ物体と、ねじ穴を模した仮想ねじ穴物体とが干渉状態にあるのかを判断する第２の判断工程と、
前記仮想工具物体と前記仮想ねじ物体とが干渉状態にあり、且つ前記仮想ねじ物体と前記仮想ねじ穴物体とが干渉状態にある場合には、前記力覚提示装置に対する制御モードを通常モードから非通常モードに移行するモード制御工程と、
前記非通常モードに移行した場合には、前記仮想ねじ物体と前記仮想ねじ穴物体との干渉に応じて発生する前記仮想工具物体に対するトルクを、前記仮想ねじ物体の回転数に基づいて求める計算処理を行う計算工程と、
前記計算工程で求めたトルクに基づいた力覚を前記力覚提示装置によって提示させるための制御値を求め、前記力覚提示装置に送信する送信工程と
を備えることを特徴とする。
【００１８】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１９】
即ち、ねじ部材を模した仮想ねじ物体を、ねじ穴を模した仮想ねじ穴物体に取り付ける際の力覚を提示する力覚提示装置を制御するための情報処理装置が行う情報処理方法であって、
前記仮想ねじ物体と前記仮想ねじ穴物体の干渉状態を判断する判断工程と、
前記判断工程において干渉していると判断された場合に、前記仮想ねじ物体の回転数に対応するトルクを求める計算工程と、
前記計算工程で求めたトルクに基づいた力覚を、前記力覚提示装置により提示するように制御する制御工程と
を備えることを特徴とする。
【００２０】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００２１】
即ち、工具を模した仮想工具物体を操作する為の操作部を有する力覚提示装置であると共に、与えられた制御値に応じた力覚を提示する力覚提示装置を制御するための情報処理装置であって、
前記仮想工具物体と、ねじ部材を模した仮想ねじ物体とが干渉状態にあるのかを判断する第１の判断手段と、
前記仮想ねじ物体と、ねじ穴を模した仮想ねじ穴物体とが干渉状態にあるのかを判断する第２の判断手段と、
前記仮想工具物体と前記仮想ねじ物体とが干渉状態にあり、且つ前記仮想ねじ物体と前記仮想ねじ穴物体とが干渉状態にある場合には、前記力覚提示装置に対する制御モードを通常モードから非通常モードに移行するモード制御手段と、
前記非通常モードに移行した場合には、前記仮想ねじ物体と前記仮想ねじ穴物体との干渉に応じて発生する前記仮想工具物体に対するトルクを、前記仮想ねじ物体の回転数に基づいて求める計算処理を行う計算手段と、
前記計算手段が求めたトルクに基づいた力覚を前記力覚提示装置によって提示させるための制御値を求め、前記力覚提示装置に送信する送信手段と
を備えることを特徴とする。
【００２２】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００２３】
即ち、ねじ部材を模した仮想ねじ物体を、ねじ穴を模した仮想ねじ穴物体に取り付ける際の力覚を提示する力覚提示装置を制御するための情報処理装置であって、
前記仮想ねじ物体と前記仮想ねじ穴物体の干渉状態を判断する判断手段と、
前記判断手段において干渉していると判断された場合に、前記仮想ねじ物体の回転数に対応するトルクを求める計算手段と、
前記計算手段が求めたトルクに基づいた力覚を、前記力覚提示装置により提示するように制御する制御手段と
を備えることを特徴とする。
【発明の効果】
【００２４】
本発明の構成により、より簡便に力覚提示を行うことができる。
【発明を実施するための最良の形態】
【００２５】
以下添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
【００２６】
［第１の実施形態］
技術分野で説明した通り、バーチャルリアリティー技術や複合現実感提示技術を用いて工業製品や装置などの作業検証を行うとき、仮想的に表示した製品内部に治工具を挿入し、組立やメンテナンスなどの作業ができるかを検証することがある。
【００２７】
図１は、仮想の工具を用いて仮想のねじを締める様子を示した図である。同図において１１は工具を模した仮想物体である。１２はユーザの手を模した仮想物体であり、先の工具の仮想物体１１は、この手の仮想物体１２に把持されているように配置される。１４は台の仮想物体であり、台の仮想物体１４上にはめねじ部（仮想物体）が設けられている。同図ではこのめねじ部上には、おねじとしての六角ねじ（ボルト）の仮想物体１３が挿入されている。同図は、手の仮想物体１２の位置を操作することで工具の仮想物体１１で六角ねじの仮想物体１３をはさみ、台の仮想物体１４におけるめねじ部に対してネジ締めを行う様子を示している。
【００２８】
図１１は、おねじとしての仮想物体１３と、めねじ部としての仮想物体の断面図である。同図において１１０１はめねじ部であり、台の仮想物体１４上に設けられたものであるので、めねじ部１１０１もまた仮想物体である。本実施形態では、おねじとしての仮想物体１３をめねじ部１１０１に挿入し、ねじ締めを行う。
【００２９】
なお、以下で説明する本実施形態において工具の種類、ボルトの形状等は下記のものに限定するものではない。即ち、ボルトについては、六角穴付きボルトや六角ナット、木ねじ、テーパねじなど、ねじであれば良い。さらに、工具については、六角レンチ、スパナ、ラチェットレンチ、ドライバなどねじを回す工具であれば良い。
【００３０】
図３は、本実施形態に係るシステムの機能構成例を示す図である。同図に示す如く、本実施形態に係るシステムは、力覚提示装置１と、情報処理装置３５０とで構成されている。
【００３１】
先ず、力覚提示装置１について説明する。力覚提示装置１は、ユーザによる操作対象としての工具の仮想物体（工具仮想物体）の位置を操作する為のものである。更に力覚提示装置１は、工具仮想物体が何らかの仮想物体と干渉した場合には、係る干渉に基づいて後段の計算処理で計算される力に応じた力覚を提示するためのものである。
【００３２】
図２Ａ、２Ｂはそれぞれ異なる力覚提示装置の外観例を示す図である。先ず図２Ａに示した力覚提示装置について説明する。
【００３３】
同図に示した力覚提示装置１ａは、エンドエフェクタ１１０、ロボットアーム１２０、フレーム１４０により構成されている。
【００３４】
エンドエフェクタ１１０は、ユーザが把持するものであり、任意の位置に移動させることができる。ロボットアーム１２０は複数の節により構成されており、エンドエフェクタ１１０とフレーム１４０とを繋ぐものである。これにより、ユーザがエンドエフェクタ１１０を任意の位置に移動させても、ロボットアーム１２０はそれに追従して変形することができる。
【００３５】
フレーム１４０は、ユーザがエンドエフェクタ１１０を任意の位置に移動させると、この位置に応じた信号を後段の情報処理装置３５０に送出すると共に、情報処理装置３５０から受けた制御値に応じた力覚をエンドエフェクタ１１０に提供する。フレーム１４０内には力覚提示のためにアクチュエータ等が備わっており、情報処理装置３５０から受けた制御値に基づいた力をアクチュエータ等でもって実現し、ロボットアーム１２０を介してエンドエフェクタ１１０に対して提供する。
【００３６】
次に、図２Ｂに示した力覚提示装置について説明する。同図に示した力覚提示装置１ｂは、エンドエフェクタ１９０，アクチュエータ１９２、フレーム１９１、糸１３０により構成されている。
【００３７】
エンドエフェクタ１９０は、ユーザが把持するものであり、複数の糸１３０に繋がれている。これにより、ユーザは糸１３０の張力の範囲内でエンドエフェクタ１９０の位置を移動させることができる。
【００３８】
アクチュエータ１９２は、例えばＤＣサーボモータとエンコーダとで構成されており、エンドエフェクタ１９０が移動したことで糸１３０が引っ張られたりすると、係る変化を検知し、検知した変化に基づいてエンドエフェクタ１９０の位置を求める。そして求めた位置を信号として情報処理装置３５０に送出する。また、情報処理装置３５０から受けた制御値に応じた力覚を糸１３０を介してエンドエフェクタ１１０に対して提供する。
【００３９】
なお、図２Ａ、２Ｂに示した何れの力覚提示装置も、本実施形態で力覚提示装置１として用いることができる。しかし、力覚提示装置１として用いることができる力覚提示装置はこれらに限定するものではなく、様々なものが考えられる。
【００４０】
例えば、外骨格（エグゾスケルトン）型の力覚提示装置を用いれば、仮想的に工具を把持した力覚を提示できるため、工具に模すエンドエフェクタは不要とすることができる。
【００４１】
さらに、アクチュエータ１９２にＤＣモータなどを使って積極的にトルクを出力させる制御方法はアクティブ型と呼ばれるが、これに限定するものではない。アクチュエータ１９２にブレーキやクラッチ、MR流体、ER流体を用いて、ユーザがエンドエフェクタを動かす力やトルクに抵抗を与えるパッシブ型の制御を行っても良い。
【００４２】
以上説明したように、本実施形態では力覚提示装置１として、工具仮想物体の位置を操作すると共に、工具仮想物体が何らかの仮想物体と干渉した場合には、係る干渉に基づいて後段の計算処理で計算される力に応じた力覚を提示することができる装置を用いる。従って係る機能を有するものであれば、如何なる構成を有する装置を力覚提示装置１として用いても良い。
【００４３】
図３に戻って次に２１は力覚レンダリング部で、干渉判定部２１１と、力覚計算部２２１と、制御部２３１とで構成されている。
【００４４】
干渉判定部２１１は先ず、力覚提示装置１からエンドエフェクタの位置を工具仮想物体の位置Ｘとして取得する。そして取得した位置Ｘと、工具による操作対象としてのオブジェクト（本実施形態では六角ねじであり、以下では六角ねじ仮想物体と呼称）の位置とを用いて、それぞれの干渉状態を求める。ここでの干渉状態とは、工具仮想物体と六角ねじ仮想物体とが干渉しているか否か、即ち工具仮想物体と六角ねじ仮想物体とがかみ合っているか否かである。ここで、工具仮想物体と六角ねじ仮想物体とがかみ合っている、とは、工具（仮想物体）が六角ねじ（仮想物体）を回すべく、六角ねじに工具をはめ込んでいる様子を示す。
【００４５】
更に、干渉判定部２１１は、六角ねじ仮想物体がめねじ部とかみ合っているか否かをチェックする。かみ合っている場合には、六角ねじ仮想物体がめねじ部にどれだけ侵入しているか（干渉深度Ｓ）を求める。
【００４６】
なお、干渉判定部２１１による仮想物体同士の干渉判定処理は周知の技術であるので、係る技術についての説明は省略する。
【００４７】
以上の処理の結果、干渉判定部２１１は、工具仮想物体と六角ねじ仮想物体とがかみ合っており、且つ六角ねじ仮想物体がめねじ部とかみ合っている（おねじをめねじに挿入している（Ｓ≧θ））と判断した場合には、ねじ回し力覚モードを設定する。また干渉判定部２１１は、工具仮想物体と六角ねじ仮想物体とが干渉する毎に、六角ねじ仮想物体が現在どれだけ回転しているのかをチェックする。もちろん、工具仮想物体と六角ねじ仮想物体との干渉を検知していなかったり、六角ねじ仮想物体がめねじ部とかみ合っていない場合には、ねじ回し力覚モードは解除する。
【００４８】
そして干渉判定部２１１は、干渉深度Ｓと工具仮想物体の位置Ｘと六角ねじ仮想物体の回転数Ｎ（六角ねじ仮想物体のねじ込み回転数）とを力覚計算部２２１に送出する。
【００４９】
一方、工具仮想物体と六角ねじ仮想物体との干渉が検知されなかったり、六角ねじ仮想物体がめねじ部とかみ合っていない場合、干渉判定部２１１は、工具仮想物体と他の仮想物体（例えば、図１に示した台の仮想物体１４）との干渉状態を求める。係る干渉状態は力覚計算部２２１に通知する。
【００５０】
力覚計算部２２１は、ねじ回し力覚モードが設定されている場合には、回転数Ｎに基づいて、工具仮想物体にかかる力（トルク）Ｔｄを求める。この力覚計算部２２１による計算処理については後述する。
【００５１】
また、力覚計算部２２１は、ねじ回し力覚モードが設定されておらず、工具仮想物体が他の仮想物体と干渉した旨を干渉判定部２１１から受けた場合には、この干渉によって工具仮想物体にかかる力Ｆｄを求める。
【００５２】
力覚計算部２２１はトルクＴｄ若しくは力Ｆｄを制御部２３１とシミュレーションエンジン３１１とに送出する。
【００５３】
制御部２３１は、力覚提示装置１が有するフレーム１４０内のアクチュエータ等がこの力Ｆｄ若しくはトルクＴｄをエンドエフェクタに対して提供するために、このアクチュエータ等を制御するためのそれぞれの制御値Ｆｒ若しくは制御値Ｔｒを求める。そして、この求めた制御値Ｆｒ若しくはＴｒを力覚提示装置１に対して送出する。
【００５４】
３１はシミュレーション部で、シミュレーションエンジン３１１を有する。シミュレーションエンジン３１１は、力覚計算部２２１が計算したトルクＴｄに基づいて、六角ねじ仮想物体の変形や回転、移動等をシミュレーションする。またシミュレーションエンジン３１１は、力覚計算部２２１が計算した力Ｆｄに基づいて、台の仮想物体１４等の変形や回転、移動等をシミュレーションする。シミュレーション結果は即座に干渉判定部２１１に送出される。これにより干渉判定部２１１はこのシミュレーション結果に応じた六角ねじ仮想物体と工具仮想物体との上記干渉判定処理や、工具仮想物体と台の仮想物体１４０等との上記干渉判定処理を行う。また、このシミュレーション結果は、後段のグラフィックスエンジン４１１に対しても送出される。
【００５５】
４１は画像レンダリング部で、グラフィックスエンジン４１１を有する。グラフィックスエンジン４１１は、与えられた視点から見た工具仮想物体、六角ねじ仮想物体等を含む仮想物体群の画像を生成する。なお、これらの仮想物体は、シミュレーション結果に基づいて移動したり変形していたりする。
【００５６】
また、与えられた視点から見える仮想物体（仮想空間）の画像を生成する為の技術については上記バーチャルリアリティ技術や複合現実感提示技術などで用いられている周知の技術であるので、係る技術についての説明は省略する。
【００５７】
５１は画像表示部であり、ＣＲＴや液晶画面などでもって構成されているフラットパネルディスプレイやＨＭＤである。画像表示部５１は、グラフィックスエンジン４１１が生成した画像を表示する。なお、グラフィックスエンジン４１１が生成した画像は表示することに限定するものではなく、格納したり、ネットワークを介して外部に出力したりしても良い。
【００５８】
次に、上記力覚計算部２２１が行う処理について説明する。六角ねじ仮想物体が工具仮想物体によって締結されておらず、六角ねじ仮想物体とめねじ部とがかみ合っており、且つエンドエフェクタを用いてねじ締め操作がなされた場合、干渉判定部２１１は先ず、ねじ回し力覚モードのうち、ねじ締めモードを設定する。そして上述の通り、トルクＴｄを求める。ねじ締め操作については、例えば、エンドエフェクタをねじを締める方向に往復させればよい。トルクＴｄを計算する処理について図４Ａを用いて説明する。
【００５９】
図４Ａは横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。係るグラフは、ねじ締め作業の開始から終了までの間で、ねじ回転数Ｎに対してトルクＴｄが増加する様子を示している。なお、ねじ回しの回転数Ｎの最小（開始）から最大（終了）までの範囲を全回転領域と定義する。
【００６０】
力覚計算部２２１は干渉判定部２１１から取得したねじ込み回転数Ｎを参照し、現在の六角ねじ仮想物体に対するねじ締め状態が、「噛み合い開始状態」、「ねじ込み状態」、「締め上げ状態」の何れであるのかを判別する。
【００６１】
噛み合い開始状態は、初めてめねじとおねじが噛み合うところであり、力覚計算はねじ込み回転数Ｎに応じて線形にトルクＴｄを増加させる。そしてある程度、例えば一山半（１.５回転）噛み合ったら、ねじ込み状態へと移行する。
【００６２】
ねじ込み状態では、めねじとおねじの動摩擦が働き、ねじ込み回転数Ｎによってその接触面積が増えていく。そのため、力覚計算は噛み合い開始状態よりも緩やかな傾きで、ねじ込み回転数Ｎに応じて線形にトルクＴｄを増加させる。ねじ込み状態のねじ込み回転数Ｎはねじ長さによって決定される。
【００６３】
最後に、締め上げ状態では一気にめねじとおねじの接触面積が大きくなり、急激な傾きで、ねじ込み回転数Ｎに応じて線形にトルクＴｄを増加させる。
【００６４】
なお、各状態のねじ込み回転数Ｎに対するトルクＴｄの傾きは、ねじ種やねじ径によって決定させる。このような、ねじ種やねじ径等の、六角ねじ仮想物体に関するパラメータについては力覚計算部２２１が管理しているものとする。
【００６５】
以上の説明では、各状態においてそれぞれねじ込み回転数Ｎに対してトルクＴｄを線形に増加させたが、これに限定するものではない。例えば、図４Ａに示したグラフ中の破線のように、連続的にトルクＴｄを増加させても良いし、高次の関数など非線形にしても良い。
【００６６】
更には図４Ｂに示す如く、噛み合い開始状態とねじ込み状態を兼ねても良い。図４Ｂは、横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。そのときのトルクをＴｄｓとし、締め上げ状態のトルクＴｄｅとしたとき、ねじ込み回転数Ｎに応じてトルクＴｄｓ、Ｔｄｅを線形に増加させ、その傾きをｄＴｄｓ／ｄＮ＜ｄＴｄｅ／ｄＮとすれば良い（図４Ｂ中の実線）。或いは、ねじ込み回転数Ｎに応じてトルクＴｄｓ、Ｔｄｅはそれぞれ一定とし、Ｔｄｓ＜Ｔｄｅとしても良い（図４Ｂ中の破線）。このように、ねじ回しの力覚モードを設定した場合、ねじ込みの領域の少なくとも一部の区間においては、提示するトルクＴｄは複数の傾き、あるいは複数の大きさを持てば良い。
【００６７】
このように、ねじの締め上げ作業は作業状態、すなわちねじの回転数Ｎに応じてトルクＴｄが工具にかかるようにすると、現実感を著しく向上させることができる。このためには、全回転領域内の少なくとも一部でトルクＴｄを可変とする力覚モードを有することが必要である。また、ねじを締め始める状態と締め終わる状態で、トルクＴｄの回転するに対する変化分が異なるように設定することにより、より使用者に現実感を与えることが可能となる。
【００６８】
次に、締結された六角ねじ仮想物体に工具仮想物体が触れ、ねじ緩め操作がなされた場合、干渉判定部２１１はねじ回し力覚モードのうち、ねじ緩めモードを設定する。ねじ緩め操作については、例えば、エンドエフェクタをねじゆるめる方向に往復させればよい。この場合、力覚計算部２２１によるトルクＴｄの計算方法は、図５Ａ、５Ｂに示す如く、図４Ａ、４Ｂを用いて説明したねじ締めモードとは反対の方法を採用すればよい。図５Ａ、５Ｂは、横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【００６９】
先ず力覚計算部２２１は干渉判定部２１１から取得したねじ込み回転数Ｎを参照し、現在の六角ねじ仮想物体に対するねじ緩め状態が、「緩め開始状態」、「ねじ緩め状態」、「ねじ開放状態」の何れであるのかを判別する。
【００７０】
図５Ａ中の実線に示す如く、緩め開始状態は、めねじとおねじが強い力で噛み合い静摩擦が働いており、力覚計算はねじ緩め回転数Ｎに応じて線形にトルクＴｄを減少させる。
【００７１】
ねじ緩め状態では、めねじとおねじの動摩擦が働き、ねじ込み回転数Ｎによってその接触面積が減っていく。そのため、力覚計算は緩め開始状態よりも緩やかな傾きで、ねじ緩め回転数Ｎに応じて線形にトルクＴｄを減少させる。ねじ緩め状態のねじ緩め回転数Ｎはねじ長さによって決定される。
【００７２】
最後に、ねじ開放状態ではめねじとおねじの接触面積がなくなり開放されるため、ねじ緩め状態よりも大きな傾きで、ねじ緩め回転数Ｎに応じて線形にトルクＴｄを減少させる。
【００７３】
なお、各状態のねじ込み回転数Ｎに対するトルクＴｄの傾きは、ねじ種やねじ径によって決定させる。
【００７４】
以上の説明では、各状態においてそれぞれねじ緩め回転数Ｎに対してトルクＴｄを線形に減少させたが、これに限定するものではない。例えば、図５Ａに示したグラフ中の破線に示す如く、連続的にトルクＴｄを減少させても良いし、高次の関数など非線形にしても良い。或いは、図５Ｂに示す如く、ねじ緩め状態とねじ開放状態を兼ねても良い。そのときのトルクをＴｄｓとし、締め上げ状態のトルクＴｄｅとしたとき、ねじ緩め回転数Ｎに応じてトルクＴｄｓ、Ｔｄｅを線形に減少させる。そしてその傾きをｄＴｄｓ／ｄＮ＜ｄＴｄｅ／ｄＮ（｜ｄＴｄｓ／ｄＮ｜＞｜ｄＴｄｅ／ｄＮ｜）とすれば良い（図５Ｂ中の実線）。或いは、ねじ緩め回転数Ｎに応じてトルクＴｄｓ、Ｔｄｅはそれぞれ一定とし、Ｔｄｓ＞Ｔｄｅとしても良い（図５Ｂ中の破線）。このように、ねじ緩めモードを設定した場合、ねじ緩めの領域の少なくとも一部の区間において、提示するトルクＴｄは複数の傾き、あるいは複数の大きさを持てば良い。
【００７５】
また、力覚計算部２２１が計算するトルクＴｄは、図４Ａ、４Ｂや図５Ａ、５Ｂのグラフに基づいた数式を用いても良いし、係るグラフをテーブル化し、このテーブルを参照することで回転数Ｎに対応するトルクＴｄを特定しても良い。
【００７６】
また、トルクＴｄを求める際には、ねじ締め回転数やねじ緩め回転数以外にも、ねじ種やねじ径、ねじ長さを用いているが、係るパラメータについても数式中に含めることに限定するものではなく、テーブル化しても良い。この場合、六角ねじ仮想物体の種別に対応するパラメータをこのテーブルから取得し、トルクＴｄを求める際に用いることになる。
【００７７】
さらに、ねじ回し力覚モードを設定した際、力覚提示装置１は少なくとも、ねじの軸の並進方向と倒れ方向は拘束することが好ましい。例えば、本システムを複合現実感提示システムに適用した場合を考える。図６は、図２Ａに示した状態における力覚提示装置１に工具仮想物体６００、六角ねじ仮想物体６５０を重畳表示した場合における表示例を示す図である。係る表示において工具仮想物体６００と六角ねじ仮想物体６５０とが重なった場合、干渉判定部２１１はねじ回し力覚モードを設定し、ユーザは工具を模したエンドエフェクタ１１０を、ねじを回す方向へ動かす。そのとき、エンドエフェクタ１１０は、同図矢印６８０、６９０で示す方向にのみ動かし、その他の方向は動かさないように拘束する。この拘束条件は力覚提示装置１だけでなく、画像表示部５にも同様に適用することが好ましい。
【００７８】
このように、ねじ回し力覚モードを設けることで、簡単な計算あるいはテーブルを参照するだけで、ねじ回しの力覚を提示することができる。これにより、計算量が軽減されるため、リアルタイムな力覚提示が可能となり、滑らかでかつ自然な力覚提示を行うことができる。
【００７９】
図９は、情報処理装置３５０が力覚提示装置１を制御するための処理のフローチャートである。
【００８０】
ステップＳ９０１では先ず、干渉判定部２１１が力覚提示装置１からエンドエフェクタの位置を工具仮想物体の位置Ｘとして取得する。そして取得した位置Ｘと、六角ねじ仮想物体の位置とを用いて、それぞれの干渉状態を求める。
【００８１】
更に、干渉判定部２１１は、六角ねじ仮想物体がめねじ部とかみ合っているか否かをチェックする。係る処理の結果、工具仮想物体と六角ねじ仮想物体とがかみ合っており、且つ六角ねじ仮想物体がめねじ部とかみ合っている場合には、処理をステップＳ９０２に進め、干渉判定部２１１はねじ回し力覚モードを設定する。そして干渉判定部２１１は、干渉状態Ｓと工具仮想物体の位置Ｘと六角ねじ仮想物体の回転数Ｎとを力覚計算部２２１に送出する。そして処理をステップＳ９０４に進める。
【００８２】
一方、係る干渉判定により、工具仮想物体と六角ねじ仮想物体との干渉を検知していなかったり、六角ねじ仮想物体がめねじ部とかみ合っていない場合には、ねじ回し力覚モードを解除し、処理をステップＳ９０１からステップＳ９０３に進める。そしてステップＳ９０３では、干渉判定部２１１は、工具仮想物体と他の仮想物体との干渉状態を求める。係る干渉状態が、工具仮想物体が何れの仮想物体とも干渉していないことを示すものである場合には処理をステップＳ９０１に戻す。一方、工具仮想物体が六角ねじ仮想物体以外の何れかの仮想物体と干渉している場合には処理をステップＳ９０４に進める。
【００８３】
次にステップＳ９０４では、力覚計算部２２１は、ねじ回し力覚モードが設定されているか否かをチェックする。このチェックの結果、設定されている場合には処理をステップＳ９０４を介してステップＳ９０５に進め、設定されていない場合にはステップＳ９０４を介してステップＳ９０７に進める。
【００８４】
ステップＳ９０５では、力覚計算部２２１は、回転数Ｎに基づいて、工具仮想物体にかかる力（トルク）Ｔｄを求める。そして力覚計算部２２１はトルクＴｄを制御部２３１とシミュレーションエンジン３１１に送出する。ステップＳ９０６では、制御部２３１は、フレーム１４０内のアクチュエータ等がこのトルクＴｄをエンドエフェクタに対して提供するために、このアクチュエータ等を制御するための制御値Ｔｒを求める。
【００８５】
一方、ステップＳ９０７では、力覚計算部２２１は、工具仮想物体と六角ねじ仮想物体以外の仮想物体との干渉によって工具仮想物体に係る力Ｆｄを求める。そして力覚計算部２２１は力Ｆｄを制御部２３１とシミュレーションエンジン３１１に送出する。ステップＳ９０８では、制御部２３１は、フレーム１４０内のアクチュエータ等がこの力Ｆｄをエンドエフェクタに対して提供するために、このアクチュエータ等を制御するための制御値Ｆｒを求める。
【００８６】
ステップＳ９０９では、制御部２３１が求めた制御値Ｆｒ若しくはＴｒを力覚提示装置１に対して送出する。
【００８７】
［第２の実施形態］
本実施形態では、第１の実施形態で説明したねじ回し力覚モードに加え、異常モードを設ける。
【００８８】
実際のねじ締めでは、めねじとおねじが噛み合っていない状態で締め込みと、ねじ込みができず、異常トルクが発生する。その原因は異物が混入することや、ねじ加工でバリが残っていること、異なる規格のねじを挿入する、などがある。その内の一つに、ねじの軸方向から傾けて噛み合わせたときにも異常トルクが発生する。本実施形態では、異常トルクの提示方法として、ねじの軸方向から傾きを検出し、その検出結果に応じて異常モードを設定し、異常トルクを計算する力覚提示方法について説明する。
【００８９】
尚、以下では、第１の実施形態に加える部分のみについて説明する。図３に示したシステムにおいて、力覚提示装置１が有するエンコーダなどのポジショニングセンサや、不図示の位置検出部を用いて、めねじに対するおねじの傾きを求める。その傾きがトレランス（許容範囲）内であれば、干渉判定部２１１は第１の実施形態で説明したねじ回し力覚モードを設定する。
【００９０】
しかしながら、めねじに対するおねじの傾きがトレランスを越えた場合、干渉判定部２１１は異常モードを設定する。めねじに対するおねじの傾きのトレランスは、例えば、ねじ種とねじ径によって設定すれば良い。ねじ種とねじ径から、ねじのピッチが規格で決まっているので、ピッチからねじ山を一山乗り越える角度を求め、それをトレランスにする。このトレランスはねじの種類や取り付け場所にて応じてあらかじめ決められたもので、トルク決定に用いるテーブルに予め登録しておけば良い。また、ユーザの熟練度やシステム全体の仕様にあわせて、このトレランスを変更させても良い。
【００９１】
異常モードにおいて、力覚計算部２２１が計算する異常トルクについて図７を用いて説明する。なお、図７では異常モードとねじ回し力覚モードとにおけるトルクＴｄとねじ込み回転数Ｎとの関係を示している。図７は、横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【００９２】
干渉判定部２１１が異常モードを設定すると、力覚計算部２１１は、現在の六角ねじ仮想物体に対するねじ緩め状態が、「噛み合い開始状態」、「ねじ込み状態」の何れであるのかを判別する。そして、図７中に示す実線７００のように、噛み合い状態とねじ込み状態で、それぞれねじ込み回転数Ｎに対して、線形にトルクＴｄを増加させる。さらに、ねじ込み状態でのねじ込み回転数Ｎに対するトルクＴｄの傾きは、噛み合い状態よりも大きくする。
【００９３】
なお、各状態のねじ込み回転数Ｎに対するトルクＴｄの傾きは、ねじ種やねじ径によって決定させる。なお、ここでは各状態においてそれぞれねじ込み回転数Ｎに対してトルクＴｄを線形に増加させたが、これに限定するものではない。例えば、線形を高次関数など非線形にしても良いし、噛み合い開始状態とねじ込み状態との間の不連続性をなくすよう、補間して連続関数にしてトルクＴｄを計算しても良い。若しくは、図７中の破線７０１のようにステップ状にトルクＴｄを計算しても良い。
【００９４】
このように噛み合い開始状態のトルクをＴｄ１とし、ねじ込み状態のトルクをＴｄ２としたとき、トルクＴｄをねじ込み回転数Ｎで微分した値がｄＴｄ１／ｄＮ＜ｄＴｄ２／ｄＮとすれば良い（図７中の実線７００）。或いは、ねじ込み回転数Ｎに応じてトルクＴｄ１、Ｔｄ２はそれぞれ一定として、Ｔｄ１＜Ｔｄ２としても良い（図７中の破線７０１）。このように、異常モードを設定した場合、ねじ込みの領域の少なくとも一部の区間において、提示するトルクＴｄは複数の傾き、あるいは複数の大きさを持てば良い。
【００９５】
以上で説明した異常モードにおいて、力覚計算部２２１が計算するトルクＴｄは、図７のグラフに基づいた数式を用いても良いし、係るグラフをテーブル化し、このテーブルを参照することで回転数Ｎに対応するトルクＴｄを特定しても良い。
【００９６】
また、トルクＴｄを求める際には、ねじ締め回転数やねじ緩め回転数以外にも、ねじ種やねじ径、ねじ長さを用いているが、係るパラメータについても数式中に含めることに限定するものではなく、テーブル化しても良い。この場合、六角ねじ仮想物体の種別に対応するパラメータをこのテーブルから取得し、トルクＴｄを求める際に用いることになる。
【００９７】
このように、異常モードを設けることで、簡単な計算あるいはテーブルを参照するだけで、異常トルクの力覚を提示することができる。これにより、計算量が軽減されるため、リアルタイムな力覚提示が可能となり、滑らかでかつ自然な力覚提示を行うことができる。
【００９８】
［第３の実施形態］
なお、上記各実施形態では、情報処理装置３５０が有する上記各部はハードウェアとして説明した。しかし各部のうち一部をソフトウェアでもって実現し、係るソフトウェアをＰＣ（パーソナルコンピュータ）等のコンピュータでもって実行することで、同様の目的を達成するようにしても良い。
【００９９】
図１０は係るコンピュータのハードウェア構成を示すブロック図である。
【０１００】
１００１はＣＰＵで、ＲＡＭ１００２やＲＯＭ１００３に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、上記情報処理装置３５０が行うものとして説明した各処理を実行する。
【０１０１】
１００２はＲＡＭで、外部記憶装置１００６からロードしたプログラムやデータを一時的に記憶するためのエリアや、Ｉ／Ｆ（インターフェース）１００７を介して上記力覚提示装置１から取得した様々な情報を一時的に記憶するためのエリアを有する。更にＲＡＭ１００２は、ＣＰＵ１００１が各種の処理を実行する際に用いるワークエリアを有する。即ち、ＲＡＭ１００２は、各種のエリアを適宜提供することができる。
【０１０２】
１００３はＲＯＭで、本コンピュータの設定データやブートプログラム等を格納する。
【０１０３】
１００４は操作部で、キーボードやマウスなどにより構成されており、本コンピュータのユーザが操作することで、各種の指示をＣＰＵ１００１に対して入力することができる。
【０１０４】
１００５は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１００１による処理結果を画像や文字などでもって表示することができる。なお、表示部１００５を上記ＨＭＤとしても良い。
【０１０５】
１００６は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはＯＳ（オペレーティングシステム）や、情報処理装置３５０が行うものとして説明した上述の各処理をＣＰＵ１００１に実行させるためのプログラムやデータ等が保存されている。例えば、図９に示したフローチャートに従った処理をＣＰＵ１００１に実行させるためのプログラムやデータが保存されている。更には、図４Ａ、Ｂ、５Ａ、５Ｂ、７に示したグラフ、上記パラメータをテーブル化した場合には、このテーブルのデータが保存されている。外部記憶装置１００６に保存されている各種の情報は、ＣＰＵ１００１による制御に従って適宜ＲＡＭ１００２にロードされ、ＣＰＵ１００１による処理対象となる。
【０１０６】
１００７はＩ／Ｆであり、上記力覚提示装置１を本コンピュータに接続するためのものである。本コンピュータはこのＩ／Ｆ１００７を介して上記力覚提示装置１とのデータ通信を行う。
【０１０７】
１００８は上述の各部を繋ぐバスである。
【０１０８】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１０９】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１０】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１１２】
【図１】仮想の工具を用いて仮想のねじを締める様子を示した図である。
【図２Ａ】力覚提示装置の外観例を示す図である。
【図２Ｂ】力覚提示装置の外観例を示す図である。
【図３】本発明の第１の実施形態に係るシステムの機能構成例を示す図である。
【図４Ａ】横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【図４Ｂ】横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【図５Ａ】横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【図５Ｂ】横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【図６】図２Ａに示した状態における力覚提示装置１に工具仮想物体６００、六角ねじ仮想物体６５０を重畳表示した場合における表示例を示す図である。
【図７】横軸をねじ込み回転数Ｎ、縦軸をトルクＴｄとしたグラフである。
【図８】従来のバーチャルリアリティにおける力覚提示を実現するためのシステムの機能構成を示すブロック図である。
【図９】情報処理装置３５０が力覚提示装置１を制御するための処理のフローチャートである。
【図１０】コンピュータのハードウェア構成を示すブロック図である。
【図１１】おねじとしての仮想物体１３と、めねじ部としての仮想物体の断面図である。
【図１】
2008055527.tif 000003
【図２Ａ】
2008055527.tif 000004
【図２Ｂ】
2008055527.tif 000005
【図３】
2008055527.tif 000006
【図４Ａ】
2008055527.tif 000007
【図４Ｂ】
2008055527.tif 000008
【図５Ａ】
2008055527.tif 000009
【図５Ｂ】
2008055527.tif 000010
【図６】
2008055527.tif 000011
【図７】
2008055527.tif 000012
【図８】
2008055527.tif 000013
【図９】
2008055527.tif 000014
【図１０】
2008055527.tif 000015
【図１１】
2008055527.tif 000016