(57)【要約】【課題】  ユーザが手で直接的かつ自由に仮想の物体を動かし、また、その仮想の物体を視覚的および力覚的に体感することを目的とする。【解決手段】  複合現実空間において、力覚デバイスを用いて、現実物体に重畳される仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、前記現実物体の位置姿勢に基づき、該現実物体の力覚発生モデルの位置姿勢を変更する変更工程を有し、前記力覚発生モデルは、前記力覚デバイスを用いて、前記仮想物体に対する力覚をユーザに提示するために用いられるモデルであることを特徴とする。【選択図】  図２
2007293412.tif 000002
【特許請求の範囲】
【請求項１】
複合現実空間において、力覚デバイスを用いて、現実物体に重畳される仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、
前記ユーザ視点の位置姿勢を取得する第一の取得工程と、
前記現実物体の位置姿勢を取得する第二の取得工程と、
前記現実物体の位置姿勢に基づき、該現実物体の力覚発生モデルの位置姿勢を変更する変更工程と、
前記ユーザ視点の位置姿勢および前記現実物体の位置姿勢に基づき、前記仮想物体の仮想画像を生成する生成工程と、
前記仮想画像と前記ユーザ視点の位置姿勢に応じた現実空間の画像とを合成し、提示する提示工程とを有し、
前記力覚発生モデルは、前記力覚デバイスを用いて、前記仮想物体に対する力覚をユーザに提示するために用いられるモデルであることを特徴とする情報処理方法。
【請求項２】
更に、前記仮想物体に対する力覚をユーザに提示する際に用いられる力覚情報を算出するためのパラメータを設定する設定工程と、
前記第二の取得工程で取得された位置姿勢の変化量を算出する算出工程と、
前記算出された位置姿勢の変化量に基づき、前記パラメータを変更するパラメータ変更工程を有することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記現実物体は複数の現実物体であり、該複数の現実物体それぞれに重畳される仮想物体から受ける力を考慮して提示する力覚を決定することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
更に、前記力覚発生モデルを補正する補正工程を有することを特徴とする請求項１に記載の情報処理方法。
【請求項５】
前記変更工程は、前記現実物体の位置姿勢に基づき、リアルタイムに該現実物体の力覚発生モデルの位置姿勢を変更することを特徴とする請求項１に記載の情報処理方法。
【請求項６】
複合現実空間において、力覚デバイスを用いて、現実物体に重畳される仮想物体から受ける力覚をユーザに提示するための情報処理装置であって、
前記ユーザ視点の位置姿勢を取得する第一の取得手段と、
前記現実物体の位置姿勢を取得する第二の取得手段と、
前記現実物体の位置姿勢に基づき、該現実物体の力覚発生モデルの位置姿勢を変更する変更手段と、
前記ユーザ視点の位置姿勢および前記現実物体の位置姿勢に基づき、前記仮想物体の仮想画像を生成する生成手段と、
前記仮想画像と前記ユーザ視点の位置姿勢に応じた現実空間の画像とを合成し、提示する提示手段とを有し、
前記力覚発生モデルは、前記力覚デバイスを用いて、前記仮想物体に対する力覚をユーザに提示するために用いられるモデルであることを特徴とする情報処理装置。
【請求項７】
前記請求項１に記載の情報処理方法をコンピュータ上で実現するためのプログラム。
【請求項８】
前記請求項１に記載の情報処理方法をコンピュータ上で実現するためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するものに関する。
【背景技術】
【０００２】
ＶＲ（バーチャルリアリティ）システムは、コンピュータの作り出す三次元ＣＧ（コンピュータ・グラフィクス）をＨＭＤ（ヘッドマウントディスプレイ）を装着したユーザに提示することで、仮想の空間をあたかも現実であるかのように感じさせるシステムである。ＨＭＤを利用したＶＲシステムでは、ユーザの頭部の動きに合わせてユーザに提示される三次元ＣＧが変化するため、ユーザはあたかも自分の周囲に実際に三次元ＣＧが存在しているかのように感じることができる。
【０００３】
ＶＲシステムでは、力覚デバイスと呼ばれる装置を用いて、ユーザに仮想の触感を与えることがある。力覚デバイスを用いることで、ユーザは実際には存在しない事物に仮想的に触っているかのような感触を感じることができる。力覚デバイスには機械式や糸の張力を用いた方式などさまざまな方式のものがある（たとえば、非特許文献１参照）。
【０００４】
また、近年、現実空間の映像に重ねて三次元ＣＧを提示することで、ＶＲでは見ることができなかった現実世界をユーザに提示する技術の開発もなされており、それらはＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ、複合現実感）システムと呼ばれている（例えば、特許文献１参照）。
【０００５】
ＭＲシステムでは、ＨＭＤ（ヘッドマウントディスプレイ）を用いることが一般的である。ＭＲシステムでは、現実空間の画像と仮想空間の画像を合成して、ＨＭＤに表示することにより、複合現実感を実現する。ＭＲシステムで用いるＨＭＤの方式には半透過型のＨＭＤに三次元ＣＧ等の画像を重畳する光学シースルー方式と、ＨＭＤに装着したビデオカメラで撮影した画像に三次元ＣＧ等の画像を合成した後、ＨＭＤに表示するビデオシースルー方式がある。
【０００６】
ＭＲシステムの用途としては、患者の体内の様子を透過しているように医師に提示する医療補助の用途や、工場において製品の組み立て手順を示すＣＧを実物に重ねて表示する作業補助の用途などが考えられている。
【０００７】
ＭＲシステムの一種として、特許文献２に示されるように、三次元ＣＡＤデータから簡易的に試作された模型に重ねて、同じデータから作成された三次元ＣＧを表示するものがある。この発明におけるシステムでは、ユーザは自らの手で三次元ＣＧを動かすことができる。
【特許文献１】特開２００１−１９５６０１号公報
【特許文献２】特開２００５−１０７９７０号公報
【非特許文献１】田村博編「ヒューマン・インタフェース」オーム社，１９９８年５月３０日，ｐｐ．２３８−２４１
【非特許文献２】Ｄｉｅｇｏ  Ｃ．Ｒｕｓｐｉｎｉ  ｅｔ  ａｌ，Ｔｈｅ  Ｈａｐｔｉｃ  Ｄｉｓｐｌａｙ  ｏｆ  Ｃｏｍｐｌｅｘ  Ｇｒａｐｈｉｃａｌ  Ｅｎｖｉｒｏｎｍｅｎｔｓ，ＳＩＧＧＲＡＰＨ  ９７  Ｐｒｏｃｅｅｄｉｎｇｓ，Ａｕｇｕｓｔ  １９９７，ｐｐ．３４５−３５２．
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献２に示される方法では、ユーザは実際には存在しない仮想の物体を見ながら、同じ形状の模型を手に持って動かすことができる。つまり、仮想の物体を視覚的および力覚的に体感することができる。しかしながら、この方法では、ユーザが触れたいものによってその都度模型を作らなければならない。この模型を作るのには時間もコストもかかってしまう。
【０００９】
本発明は、上記問題を解決するものであり、ユーザが手で直接的かつ自由に仮想の物体を動かし、また、その仮想の物体を視覚的および力覚的に体感することを目的とする。
【課題を解決するための手段】
【００１０】
前記の目的は、以下に示される情報処理方法によって達成される。複合現実空間において、力覚デバイスを用いて、現実物体に重畳される仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、前記ユーザ視点の位置姿勢を取得する第一の取得工程と、前記現実物体の位置姿勢を取得する第二の取得工程と、前記現実物体の位置姿勢に基づき、該現実物体の力覚発生モデルの位置姿勢を変更する変更工程と、前記ユーザ視点の位置姿勢および前記現実物体の位置姿勢に基づき、前記仮想物体の仮想画像を生成する生成工程と、前記仮想画像と前記ユーザ視点の位置姿勢に応じた現実空間の画像とを合成し、提示する提示工程とを有し、前記力覚発生モデルは、前記力覚デバイスを用いて、前記仮想物体に対する力覚をユーザに提示するために用いられるモデルであることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ユーザが手で直接的かつ自由に仮想の物体を動かし、また、その仮想の物体を視覚的および力覚的に体感することが出来る。
【発明を実施するための最良の形態】
【００１２】
以下、添付の図面を参照して本発明の好適な実施例について説明する。
【実施例１】
【００１３】
以下に説明する本実施例の視覚および力覚提示システムでは、現実物体に重ねて自動車の三次元ＣＧを合成し、ユーザの装着しているＨＭＤに表示する。また、自動車の三次元ＣＧと同じ形状の力覚を、力覚デバイスを通してユーザに提示する。
【００１４】
図４は本実施例の外観を示した図である。
【００１５】
１００はＨＭＤであり、ユーザの頭部に装着されて使用される。ＨＭＤ１００は撮像部および表示部を内蔵し、撮像部（カメラ）で撮影した映像に三次元ＣＧを重ねた合成映像を表示部に表示する。ＨＭＤ１００に内蔵される撮像部はあらかじめ内部パラメータが測定されている。
【００１６】
４０１はテーブルである。テーブルは部屋に固定されており、テーブル上で複合現実感を体験することが出来る。
【００１７】
１２１は力覚デバイス本体、１２１ａは力覚デバイスの把持部である。力覚デバイスの把持部１２１ａは人の手で把持することができるようになっている。ユーザは、力覚デバイスの把持部１２１ａを把持し、あらかじめ定められた範囲の分だけ、力覚デバイスの把持部１２１ａの位置や姿勢を自由に動かすことができる。力覚デバイス本体１２１と力覚デバイスの把持部１２１ａは機械的に接続され、力覚デバイス本体１２１が力覚デバイスの把持部１２１ａを駆動することによって、力覚デバイスの把持部１２１ａを把持するユーザに上下方向、左右方向、奥行き方向の三自由度の力を感じさせることができる。力覚デバイス本体１２１はテーブル４０１の上に固定されている。
【００１８】
４０３はユーザの手である。説明のため、ユーザの体の他の部分は図中に示していない。
【００１９】
４０４は現実物体であり、立方体の箱でできている。現実物体４０４は手で自由に位置や姿勢を動かすことができる。本実施例では現実物体を立方体の箱であるものとしたが、これは本実施例の基本構成に必須の要件ではなく、任意の物体で構成されるものとしてよい。たとえば、模型や厚紙、電子機器、各種の道具や器具などで構成されるものとしてよい。また、内部を空洞にして中に異なる重さの重りを入れられるようにしてもよいし、大きさや形状など、物理的な属性を変えられるような機構を備えてもよい。また、後に記述する位置姿勢センサのマーカ部そのもので構成されるものとしてもよい。
【００２０】
１０３は位置姿勢を計測するための構成であり、カメラ部１０３ａ、マーカ部１０３ｂ、１０３ｃ、１０３ｄからなる。マーカ部１０３ｂはＨＭＤ１００に、マーカ部１０３ｃは力覚デバイスの把持部１２１ａに、マーカ部１０３ｄは現実物体４０４に取り付けられている。マーカ部１０３ｂ、マーカ部１０３ｃ、マーカ部１０３ｄはそれぞれ異なる形状をしており、位置姿勢センサのカメラ部１０３ａに備えられた、内部パラメータをあらかじめ求められた二つのカメラによって撮像される。三角測量などの手法を用いて、二つのカメラの各々によって撮像された画像から、マーカ部１０３ｂ、マーカ部１０３ｃ、マーカ部１０３ｄの、カメラ部１０３ａに対する相対的な位置および姿勢を求める。位置姿勢センサのカメラ部１０３ａは部屋に固定されている。
【００２１】
図３は本実施例の構成を示したブロック図である。以下、図３を参照しながら本実施例の構成について説明する。
【００２２】
１００は図４でも示されているユーザが装着するビデオシースルー型のＨＭＤであり、撮像部１０１と映像表示部１０２を有する。なお、本実施例では撮像部１０１と映像表示部１０２がＨＭＤ１００に内蔵されるものとしたが、これは本実施例の基本構成に必須の要件ではなく、撮像部１０１と映像表示部１０２はそれぞれ別の場所に配置されるものとしてもよい。
【００２３】
１０１は撮像部であり、ＣＣＤカメラ、ＣＭＯＳカメラなどの撮像デバイスによって構成される。撮影部１０１によって撮影された映像は映像合成部１１１に送られる。
【００２４】
１０２は映像表示部であり、小型の液晶表示デバイス等で構成される。映像表示部１０２は映像合成部１１１から送られてきた合成映像を表示する。
【００２５】
１０３は図４にも示されている、内蔵する撮像素子によりマーカを撮影することによって任意の物体の位置および姿勢を計測する位置姿勢センサである。位置姿勢センサ１０３はあらかじめマーカを付けた任意の物体の位置姿勢信号を、ＨＭＤ１００を装着したユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５および力覚デバイスの位置姿勢計測部１０６に出力する。
【００２６】
なお、本実施例では一つの位置姿勢センサ１０３から１０４〜１０６それぞれに位置姿勢信号を出力する。しかし、これは本実施例の基本構成に必須の要件ではない。たとえばユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５、力覚デバイスの位置姿勢計測部１０６のそれぞれに別の位置姿勢センサを設置してもよい。
【００２７】
また、本実施例では位置姿勢センサ１０３は光学式センサによって構成されているが、位置姿勢センサ１０３はあらかじめ定めた任意の物体の位置および姿勢を計測できる装置であればどのような装置で構成されてもよい。たとえば、磁気式の位置姿勢センサによって構成されてもよい。つまり、現実空間中のこれら三つの測定対象の位置姿勢が計測することが出来れば、いかなる構成でも良い。本実施例では、これらの位置姿勢センサ１０３は位置をｘｙｚ座標系におけるｘ座標、ｙ座標、ｚ座標の形で出力する。また、姿勢をｚ軸中心の回転であるロール角、ｘ軸中心の回転であるピッチ角、ｙ軸中心の回転であるヨー角で出力し、ヨー回転、ピッチ回転、ロール回転の順で測定対象を回転させると測定対象の姿勢が得られる。
【００２８】
なお、以下の説明においては、四行四列の行列で示すことができる位置および姿勢の情報をアルファベットの記号、たとえばＭなどで表現する。この行列の中身について、位置姿勢センサ１０３によって得られた位置姿勢の値を例として説明する。
【００２９】
位置姿勢センサによって得られるｘ座標、ｙ座標、ｚ座標の値をそれぞれｘ、ｙ、ｚとすると、位置姿勢センサ１０３によって得られる位置を表す三次元ベクトルｔは
【００３０】
【数１】
2007293412.tif 000003
【００３１】
で表される。また、位置姿勢センサによって得られるロール角、ピッチ角、ヨー角の値をそれぞれｒ、ｐ、ｙとすると、ロール角、ピッチ角、ヨー角から得られる三行三列の回転変換行列Ｒｒ、Ｒｐ、Ｒｙは
【００３２】
【数２】
2007293412.tif 000004
【００３３】
で表される。従って、姿勢を表す三行三列の回転変換行列Ｒは
【００３４】
【数３】
2007293412.tif 000005
【００３５】
で表される。
【００３６】
以上得られたｔとＲを用いて、位置姿勢センサから得られる位置と姿勢の両方を表現する四行四列の行列Ｍは、以下のように表現することができる。
【００３７】
【数４】
2007293412.tif 000006
【００３８】
位置および姿勢がどのような形式で得られようと、上記のような四行四列の行列として表現できることは広く知られている。
【００３９】
１０４はユーザ視点の位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、ユーザが装着しているＨＭＤ１００に取り付けられたマーカ部１０３ｂの位置姿勢を表す信号を使って、撮像部１０１のユーザ視点の位置姿勢情報を生成する。生成した位置姿勢情報は、ＨＭＤの映像表示に表示する映像中のＣＧの位置姿勢を算出するために、ＣＧ描画部１１０に送られる。なお、本実施例においてはユーザ視点の位置姿勢計測部１０４の位置姿勢情報が位置姿勢センサ１０３のみから求められるものとした。しかし、それに加えて、撮像部１０１の撮影した映像を用いて位置姿勢情報の補正を行ってもよい。また、撮像部１０１の撮影した映像のみを用いてユーザ視点の位置姿勢計測部１０４の位置姿勢情報を求める構成としてもよい。
【００４０】
１０５は現実物体の位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、現実物体４０４に取り付けられたマーカ部１０３ｄの位置姿勢を表す信号を使って、現実物体４０４の位置姿勢情報を生成する。生成した現実物体４０４の位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００４１】
１０６は力覚デバイスの位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、力覚デバイスの把持部１２１ａに取り付けられたマーカ部１０３ｃの位置姿勢を表す信号を使って、力覚デバイスの把持部１２１ａの位置姿勢情報を生成する。生成した力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００４２】
１０７はＣＧシーン管理部である。ＣＧシーン管理部１０７は三次元ＣＧの生成に必要な、仮想物体の三次元ＣＧモデルの情報を管理する。三次元ＣＧモデルの情報はさまざまな形式で記述することができるが、本実施例の三次元ＣＧモデル情報は、三次元ＣＧモデルがポリゴンモデルで表されるＶＲＭＬ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）ファイルで表現されている。また、ＶＲＭＬファイルには、三次元ＣＧモデルの位置および姿勢情報が格納されている。本実施例では、ＣＧシーン管理部１０７に格納されているＶＲＭＬファイルは、力覚デバイスの把持部１２１ａに重ねて表示される仮想物体の三次元ＣＧモデルのＶＲＭＬファイルおよび現実物体４０４に重ねて表示される自動車の仮想物体の三次元ＣＧモデルのＶＲＭＬファイルである。力覚デバイスの把持部１２１ａに重ねて表示される仮想物体の三次元ＣＧモデルのＶＲＭＬファイルは、力覚デバイスの位置姿勢計測部１０６から送られてくる位置姿勢情報によって更新される。自動車の仮想物体の三次元ＣＧモデルのＶＲＭＬファイルは、現実物体の位置姿勢計測部１０５から送られてくる位置姿勢情報によって更新される。また、ＣＧシーン管理部１０７の情報はＣＧ描画部１１０によって参照される。
【００４３】
１０８は力覚シーン管理部である。力覚シーン管理部１０８は仮想物体間に発生する力の計算に必要な、仮想物体の力覚発生モデルの情報を管理する。力覚発生モデルの情報はさまざまな形式で記述することができるが、本実施例では、力覚発生モデルがポリゴンモデルで表されるＶＲＭＬファイルで表現されている。ただし、それらのＶＲＭＬファイルの中において、視覚的な属性を表す色や光源、テクスチャ等の属性は取り除かれており、仮にそれらの属性が含まれていたとしても無視される。また、力覚シーン管理部１０８にはそれらのＶＲＭＬファイルに格納された三次元ＣＧモデルの位置および姿勢情報が格納されている。本実施例では、ここに格納されているＶＲＭＬファイルは、力覚デバイスの把持部１２１ａに重ねて表示される三次元ＣＧモデルのＶＲＭＬファイルおよび現実物体４０４に重ねて表示される自動車の三次元ＣＧモデルのＶＲＭＬファイルである。力覚シーン管理部１０８の情報は現実物体の位置姿勢計測部１０５および力覚デバイスの位置姿勢計測部１０６から送られてくる位置姿勢情報によって更新される。また、力覚シーン管理部１０８の情報は力覚計算部１２０によって参照される。
【００４４】
１１０はＣＧ描画部であり、ユーザ視点の位置姿勢計測部１０４から撮像部１０１の位置姿勢情報、ＣＧシーン管理部１０７から三次元ＣＧシーン情報を受信して、撮像部１０１の撮像範囲に収まるＣＧ映像を生成する。生成したＣＧ映像は映像合成部１１１に送信される。
【００４５】
１１１は映像合成部であり、撮像部１０１から受信した撮影映像上に、ＣＧ描画部１１０から受信したＣＧ映像を上書きすることで、合成映像を生成する。合成した合成映像は映像表示部１０２に送出される。
【００４６】
１２０は力覚計算部であり、力覚シーン管理部１０８から力覚シーン情報を受信して、力覚デバイスの把持部１２１ａに発生すべき力覚を計算する。ここで、力覚の情報は、発生する力の向きと強さによって表現される。計算した力覚情報は力覚デバイス本体１２１に送られる。
【００４７】
１２１は図４にも示されている、力覚デバイスであり、力覚計算部１２０から力覚情報を受信して、力覚デバイスの把持部１２１ａに力を発生させる。なお、本実施例では、力覚デバイスとして複数のエンコーダ付きの制御モータを内蔵して構成された機械式のものを利用している。ただし、任意方向に力を発生できるデバイスであればどのようなデバイスで構成されてもよく、たとえば糸の張力を用いた方式による力覚デバイスで構成されてもよい。また、本実施例では、力覚デバイスはテーブル４０１上に配置されているが、配置場所に制限はなく、たとえばユーザの体に装着されるものであってもよい。
【００４８】
力覚デバイス本体１２１は内部に独自のデバイス座標系を持っている。よって、力覚計算部１２０は、力の情報を力覚デバイス本体１２１の座標系に変換し、力覚デバイス本体１２１が力覚デバイスの把持部１２１ａに力を発生させる際には、力の情報はこの力覚デバイスの座標系で伝えられる。
【００４９】
以上、図３を参照して本実施例の構成を説明した。なお、図３に示したユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５、力覚デバイスの位置姿勢計測部１０６、ＣＧシーン管理部１０７、力覚シーン管理部１０８、ＣＧ描画部１１０、映像合成部１１１および力覚計算部１２０の少なくとも一部は、独立した装置として実現しても良い。また、それぞれの機能を実現するためのソフトウェアを一つもしくは複数のコンピュータにインストールし、コンピュータのＣＰＵによりソフトウェアを実行することで、その機能を実現しても良い。本実施例では、各部はそれぞれソフトウェアにより実現され、同一のコンピュータにインストールされているものとする。
【００５０】
図１は、ユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５、力覚デバイスの位置姿勢計測部１０６、ＣＧシーン管理部１０７、力覚シーン管理部１０８、ＣＧ描画部１１０、映像合成部１１１、力覚計算部１２０及び１３０のそれぞれの機能を、ソフトウェアを実行することで実現するためのコンピュータの基本構成を示す図である。
【００５１】
ＣＰＵ１００１は、ＲＡＭ１００２やＲＯＭ１００３に格納されたプログラムやデータを用いてコンピュータ全体の制御を行うと共に、ユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５、力覚デバイスの位置姿勢計測部１０６、ＣＧシーン管理部１０７、力覚シーン管理部１０８、ＣＧ描画部１１０、映像合成部１１１および力覚計算部１２０のそれぞれのソフトウェアの実行を制御して、各部の機能を実現する。
【００５２】
ＲＡＭ１００２は、外部記憶装置１００７や記憶媒体ドライブ１００８からロードされたプログラムやデータを一時的に記憶するエリアを備えると共に、ＣＰＵ１００１が各種の処理を行うために必要とするワークエリアを備える。
【００５３】
ＲＯＭ１００３は、一般にコンピュータのプログラムや設定データなどが格納されている。キーボード１００４、マウス１００５は入力デバイスであり、操作者はこれらを用いて、各種の指示をＣＰＵ１００１に入力することができる。
【００５４】
表示部１００６は、ＣＲＴや液晶ディスプレイなどにより構成されており、例えば、映像表示部１０２に表示している映像を表示することができる。
【００５５】
外部記憶装置１００７は、ハードディスクドライブなどの大容量情報記憶装置として機能する装置であって、ここにＯＳ（オペレーティングシステム）やＣＰＵ１００１が実行するプログラム等を保存する。また本実施例の説明において、既知であると説明する情報はここに保存されており、必要に応じてＲＡＭ１００２にロードされる。
【００５６】
記憶媒体ドライブ１００８は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記憶されているプログラムやデータをＣＰＵ１００１からの指示に従って読み出して、ＲＡＭ１００２や外部記憶装置１００７に出力する。
【００５７】
Ｉ／Ｆ１００９は、撮像部１０１を接続するためのアナログビデオポートあるいはＩＥＥＥ１３９４等のデジタル入出力ポート、位置姿勢センサ１０３および力覚デバイス本体１２１を接続するためのＲＳ２３２ＣあるいはＵＳＢ等のシリアルポート等によって構成される。それぞれから入力したデータはＩ／Ｆ１００９を介してＲＡＭ１００２に取り込まれる。映像合成部１１１及びユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５、力覚デバイスの位置姿勢計測部１０６および力覚計算部１２０の機能の一部は、Ｉ／Ｆ１００９によって実現される。
【００５８】
上述した各構成要素は、バス１０１０によって相互に接続される。
【００５９】
図２は本実施例の処理手順を示したフローチャートである。本フローチャートに関わるプログラムは外部記憶装置１００７に記憶され、ユーザがキーボード１００４、マウス１００５を使ってシステムの開始を指示したときにＣＰＵ１００１がそのプログラムを読み出し、実行する。以下、図面を参照しながら、本実施例の処理手順を説明する。
【００６０】
Ｓ１００はキャリブレーションステップである。Ｓ１００では、ユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５および力覚デバイスの位置姿勢計測部１０６が、位置姿勢センサ１０３が出力する位置姿勢信号から位置姿勢情報を計算できるよう、初期設定を行う。また、力覚計算部１２０が力覚デバイス本体１２１に発生させる力を計算するための初期設定を行う。
【００６１】
ここで、Ｓ１００中の処理手順について図１２を用いて説明する。Ｓ１００が開始されると、まずＳ１２０１が実行される。
【００６２】
Ｓ１２０１は位置姿勢センサのキャリブレーションを行うステップである。図１０はＳ１２０１およびＳ１２０２中の処理を説明するための図である。９０１は、本実施例における世界座標系を表す。世界座標系９０１はテーブル４０１の隅に沿って設定される。
【００６３】
世界座標系４０１を設定するため、Ｓ１２０１では、ユーザがキャリブレーション器具１０３ｚをテーブル４０１の隅に配置する。キャリブレーション器具１０３ｚは３個のマーカが付属された、世界座標系を設定するための器具である。キャリブレーション器具１０３ｚに付属された３個のマーカの位置関係は既知である。そして、位置姿勢センサのカメラ部１０３ａはあらかじめ内部パラメータを測定された二つのカメラを内蔵している。よって、図示しない位置姿勢センサのキャリブレーションボタンを押すことで、世界座標系９０１を設定することができる。以降、位置姿勢センサが出力する位置姿勢信号は、全て世界座標系９０１を基準として計測されたものとなる。Ｓ１２０１が終了したら、Ｓ１２０２に進む。
【００６４】
Ｓ１２０２はＨＭＤのキャリブレーションである。このステップにおいては、ユーザがキャリブレーションマーカ９０２をテーブル４０１の隅、すなわち世界座標系９０１に沿って配置する。キャリブレーションマーカ９０２はあらかじめ定められた模様を表面に印刷された、定められた大きさの矩形の紙片である。ＨＭＤ１００に内蔵される撮像部１０１はあらかじめ内部パラメータを測定されているため、撮像部１０１が捉える映像中にキャリブレーションマーカ９０２の全体が捉えられていれば、世界座標系９０１における撮像部１０１の位置および姿勢を求めることができる。一方、ＨＭＤ１００にはマーカ部１０３ｂが付属しており、マーカ部１０３ｂの位置および姿勢は常に位置姿勢センサ１０３によって計測されている。
【００６５】
今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０２の実行を指示したとき、撮像部１０１が捉える映像から求められる撮像部１０１の位置姿勢をＨｃ、位置姿勢センサから求められるマーカ部１０３ｂの位置姿勢をＨｓ、マーカ部１０３ｂから見た撮像部１０１の相対的な位置姿勢をＨｏとすると、
Ｈｏ＝Ｈｓ−１・Ｈｃ
となる。ここで求められたＨｏは、ユーザ視点の位置姿勢計測部１０４に伝えられる。Ｓ１２０２が終了したら、Ｓ１２０３に進む。
【００６６】
Ｓ１２０３は現実物体のキャリブレーションである。図１１はＳ１２０３およびＳ１２０５中の処理を説明するための図である。図１１中の１１０２は、テーブル４０１上にあらかじめ定められた現実物体４０４のキャリブレーション位置であり、テーブル４０１にあらかじめシールとして貼られている。現実物体のキャリブレーション位置１１０２は現実物体４０４を正射影した形状になっている。Ｓ１２０４の際には、ユーザがこの現実物体のキャリブレーション位置１１０２上に一致するように現実物体４０４をあらかじめ定められた向きで置く。現実物体４０４にはマーカ部１０３ｄが付属しており、マーカ部１０３ｄの位置および姿勢は常に位置姿勢センサ１０３によって計測されている。今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０３の実行を指示したとき、あらかじめ定められた世界座標系９０１における現実物体のキャリブレーション位置１１０２の位置姿勢をＢｄ、位置姿勢センサ１０３から求められるマーカ部１０３ｄの位置姿勢をＢｓ、マーカ部１０３ｄから見た現実物体４０４の中心の相対的な位置姿勢をＢｏとすると、
Ｂｏ＝Ｂｓ−１・Ｂｄ
となる。ここで求められたＢｏは、現実物体の位置姿勢計測部１０５に伝えられる。Ｓ１２０３が終了したら、Ｓ１２０４に進む。
【００６７】
Ｓ１２０４は力覚デバイスのキャリブレーションである。Ｓ１２０４の際には、ユーザがこの力覚デバイス本体１２１をテーブル４０１上のあらかじめ定められた位置に置く。世界座標系９０１から見た力覚デバイス座標系の位置姿勢をＤｗとして表すと、Ｄｗはマニュアルによる計測や計算によって求められ、キーボード１００４やマウス１００５を用いて力覚計算部１２０に入力される。
【００６８】
Ｓ１２０５は力覚デバイス把持部１２１ａのキャリブレーションである。図１１中の１１０１は、テーブル４０１上にあらかじめ定められた力覚デバイスの把持部１２１ａのキャリブレーション位置であり、テーブル４０１にあらかじめシールとして貼られている。力覚デバイスの把持部１２１ａのキャリブレーション位置１１０１は力覚デバイスの把持部１２１ａを正射影した形状になっている。Ｓ１２０５の際には、ユーザがこの力覚デバイスの把持部のキャリブレーション位置１１０１上に一致するようにあらかじめ定められた向きで力覚デバイスの把持部１２１ａを置く。力覚デバイスの把持部１２１ａにはマーカ部１０３ｃが付属しており、マーカ部１０３ｃの位置および姿勢は常に位置姿勢センサ１０３によって計測されている。今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０３の実行を指示したとき、あらかじめ定められた世界座標系９０１における力覚デバイスの把持部１２１ａのキャリブレーション位置１１０１の位置姿勢をＰｄ、位置姿勢センサ１０３から求められるマーカ部１０３ｃの位置姿勢をＰｓ、マーカ部１０３ｃから見た力覚デバイスの把持部１２１ａの先端の相対的な位置姿勢をＰｏとすると、
Ｐｏ＝Ｐｓ−１・Ｐｄ
となる。ここで求められたＰｏは、力覚デバイスの位置姿勢計測部１０６に伝えられる。
【００６９】
Ｓ１２０５が終了したら、Ｓ１００が終了され、Ｓ１０１およびＳ１４０が実行される。Ｓ１４０内の処理に関しては、別の図を用いて後述する。
【００７０】
Ｓ１０１は、現実空間撮像ステップである。このステップでは撮像部１０１が現実空間の映像を撮影する。撮影した映像は映像合成部１１１に送られる。ここで撮影される映像は、図５に示されるようなものである。図５中には、力覚デバイス本体１２１、力覚デバイスの把持部１２１ａ、マーカ部１０３ｃ、マーカ部１０３ｄ、現実物体４０４が捉えられている。Ｓ１０１が終わると、Ｓ１０２、Ｓ１０３およびＳ１０４が並行して実行される。
【００７１】
Ｓ１０２はユーザ視点の位置姿勢計測ステップである。ここでは、ユーザ視点の位置姿勢計測部１０４が、位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、ＨＭＤ１００に取り付けられたマーカ部１０３ｂの位置姿勢を表す信号を使って、撮像部１０１の位置姿勢情報を生成する。求める撮像部１０１の位置姿勢をＨ、位置姿勢センサ１０３から求められるマーカ部１０３ｂの位置姿勢信号をＨｓｎとすると、
Ｈ＝Ｈｓｎ・Ｈｏ
となる。求められた撮像部１０１の位置姿勢情報はＣＧ描画部１１０に送られる。
【００７２】
Ｓ１０３は現実物体の位置姿勢計測ステップである。ここでは、現実物体の位置姿勢計測部１０５が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、現実物体４０４に取り付けられたマーカ部１０３ｄの位置姿勢を表す信号を使って、現実物体４０４の中心の位置姿勢情報を生成する。求める現実物体４０４の位置姿勢をＢ、１０３から求められるマーカ部１０３ｄの位置姿勢信号をＢｓｎとすると、
Ｂ＝Ｂｓｎ・Ｂｏ
となる。求められた現実物体４０４の位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００７３】
Ｓ１０４は力覚デバイスの位置姿勢計測ステップである。ここでは、力覚デバイスの位置姿勢計測部１０６が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、力覚デバイスの把持部１２１ａに取り付けられたマーカ部１０３ｃの位置姿勢を表す信号を使って、力覚デバイスの把持部１２１ａの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部１２１ａの位置姿勢をＰ、位置姿勢センサ１０３から求められるマーカ部１０３ｃの位置姿勢信号をＰｓｎとすると、
Ｐ＝Ｐｓｎ・Ｐｏ
となる。求められた力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００７４】
Ｓ１０２、Ｓ１０３およびＳ１０４が終わったらＳ１１０およびＳ１２０が実行される。
【００７５】
Ｓ１１０はＣＧシーンの変更ステップである。Ｓ１１０では、ＣＧシーン管理部１０７に格納されているＶＲＭＬファイルの位置および姿勢情報が更新される。すなわち、現実物体４０４の位置姿勢情報が自動車を表すＶＲＭＬ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）ファイルの位置姿勢情報として格納され、力覚デバイスの把持部１２１ａの位置姿勢情報が力覚デバイスの把持部１２１ａを表すＶＲＭＬファイルの位置姿勢情報として格納される。Ｓ１１０が終わったら、Ｓ１１１が実行される。
【００７６】
Ｓ１１１はＣＧ描画ステップである。Ｓ１１１では、ＣＧ描画部１１０が撮像部１０１の位置姿勢情報を用いて、撮像部１０１の視点から見える仮想空間のＣＧ映像を生成する。生成されたＣＧ映像は映像合成部１１１に送出される。この際には、ＣＧシーン管理部１０７に格納されている三次元ＣＧモデルの情報が参照される。図６は、この時点で生成されるＣＧ映像を説明する図である。図６中で、６０１は力覚デバイスの把持部１２１ａを表す三次元ＣＧ、６０２は自動車を表す三次元ＣＧを示している。映像合成部１１１が終わったら、Ｓ１１２が実行される。
【００７７】
Ｓ１１２は映像合成ステップである。Ｓ１１２では、まず撮像部１０１から送出されてきた撮影映像が映像合成部１１１の画像バッファに書き込まれる。次に、ＣＧ描画部１１０から送出されてきたＣＧ映像が画像バッファに上書きされる。この結果、撮影映像を背景にし、仮想空間がその上に描画された合成映像が生成される。図７は、この時点で得られる合成映像を説明する図である。生成された合成映像は映像表示部１０２に送出される。Ｓ１１２が終わったら、Ｓ１１３が実行される。
【００７８】
Ｓ１１３は映像表示ステップである。Ｓ１１３では、映像表示部１０２が合成映像を表示する。
【００７９】
Ｓ１２０は力覚シーンの更新ステップである。Ｓ１２０では、力覚シーン管理部１０８に格納されている力覚シーンの更新がなされる。すなわち、現実物体４０４の位置姿勢情報が自動車を表す力覚発生モデルの位置姿勢情報として格納され、力覚デバイスの把持部１２１ａの位置姿勢情報が力覚デバイスの把持部１２１ａを表す力覚発生モデルの位置姿勢情報として格納される。Ｓ１２０では、現実物体４０４の位置姿勢に基づき、現実物体の力覚発生モデルの位置姿勢情報を更新する。従って、例えば、ユーザが自分の手で現実物体の位置姿勢を変更することによって、簡単に力覚発生モデルの位置姿勢情報を変更し、後に説明するＳ１４０の処理で、変更された力覚発生モデルに応じた力覚を発生することが出来る。
【００８０】
Ｓ１１３およびＳ１２０が終わったら、Ｓ１３０が実行される。
【００８１】
Ｓ１３０は終了判定ステップである。ユーザがキーボード１００４、マウス１００５を使ってシステムの終了を指示していればプログラムを終了し、指示していなければＳ１０１に進む。また、ユーザの指示なしで、自動的に継続処理を行ってもよい。特に、Ｓ１０１、Ｓ１０２、Ｓ１０３、Ｓ１０４、Ｓ１１０、Ｓ１１１、Ｓ１１２、Ｓ１１３、Ｓ１２０、Ｓ１３０の処理の繰り返しを高速にすることによって、現実物体や力覚デバイスの位置姿勢の変更に応じて、リアルタイムに力覚発生モデルを変更することが出来る。
【００８２】
以上、図２を参照して、本実施例における処理手順を説明した。
【００８３】
ここで、Ｓ１４０中の処理手順について説明する。Ｓ１４０では力覚シーンの情報を用いて、力覚デバイス本体１２１に力覚を発生させる。一般に、力覚デバイスが１０００Ｈｚ以下の更新レートで力覚を提示すると、ユーザは力覚の不連続性を感じると言われているため、Ｓ１４０中のＳ２０１からＳ２０６に至るループは、１０００Ｈｚ以上の更新レートで実行する。Ｓ１４０は上記条件を満たす手法であればさまざまな手法で実行されてよいが、本実施例では、力覚デバイスを用いるシステムにおいて広く用いられているＶｉｒｔｕａｌ  Ｐｒｏｘｙ法とペナルティ法を用いる。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法については非特許文献２に記されている。
【００８４】
Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法は、力覚デバイスの先端を任意の半径を持った球体で表現し、その球体と力覚発生の対象となる仮想の物体との衝突を調べることで、力覚デバイスの先端に発生する力覚を計算するためのベクトルを求める手法である。
【００８５】
図１４を用いて、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法について説明する。１４０１は仮想物体の表面を表す。１４０２は力覚デバイスの先端の位置を表し、力覚デバイスの先端が仮想物体の内部に入り込んでしまっている状態を示している。１４０３は、力覚デバイスが本来あるべき位置を表す、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙである。１４０４は、力覚デバイスに発生する力を計算するためのベクトルを表す。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法では、このように、本来力覚デバイスのあるべき位置をＶｉｒｔｕａｌ  Ｐｒｏｘｙとして表し、実際の位置と比較する点に特徴がある。
【００８６】
ペナルティ法は、仮想物体間に発生する反力の強さを求める手法である。
【００８７】
図８は、Ｓ１４０中の処理手順を説明するフローチャートである。Ｓ１４０が開始されると、まずＳ２０１が実行される。
【００８８】
Ｓ２０１では力覚シーンの取得がなされる。ここでは、力覚計算部１２０が力覚シーン管理部１０８から力覚シーンを取得する。Ｓ２０１が終了すると、Ｓ２０２に進む。
【００８９】
Ｓ２０２では、力覚計算部１２０において、力覚デバイスの位置姿勢が、現実物体の座標系における位置姿勢情報に変換される。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法では、力覚デバイスの先端の座標は、力覚発生の対象となる物体の座標系で表現しなければならず、この場合、力覚発生の対象となる物体の座標系は、現実物体４０４の座標系である。現実物体４０４の座標系における力覚デバイスの位置姿勢をＰｂとすると、
Ｐｂ＝Ｂ−１・Ｐ
となる。Ｓ２０２が終了すると、Ｓ２０３に進む。
【００９０】
Ｓ２０３では、力覚計算部１２０が求められたＰｂと、力覚シーン情報内の自動車を表す力覚発生モデルを用いて、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法を実行することで、力覚デバイスの把持部１２１ａの先端に発生する力覚を計算するためのベクトルＦｗを計算する。Ｓ２０３が終了すると、Ｓ２０４に進む。
【００９１】
Ｓ２０４では、Ｓ２０３で求められたベクトルを用いて、ペナルティ法で発生する力の強さを計算する。発生する力の強さをＦとすると、
Ｆ＝Ｋ・｜Ｆｗ｜
の式によって発生する力の強さを求める。ここで、Ｋはバネ定数であり、あらかじめ定められている。この式は、Ｓ２０３で求められたベクトルに比例する力、すなわちバネのような力が力覚デバイスに加えられることを表現している。ここまでで、発生する力のベクトルと強さ、すなわち力覚が求められた。Ｓ２０４が終わると、Ｓ２０５に進む。
【００９２】
Ｓ２０５では、力覚の力覚デバイス座標系への変換が行われる。このステップでは、力覚計算部１２０が計算した世界座標系９０１における発生する力の情報を、力覚デバイス座標系における力の情報に変更する。力覚デバイス座標系における力の三自由度のベクトルＦｄは、
Ｆｄ＝Ｄｗ−１・Ｆｗ
で表される。計算されたＦｄ、および先に計算されたＦは力覚デバイス本体１２１に送られる。Ｓ２０５が終わるとＳ２０６に進む。
【００９３】
Ｓ２０６では、力覚提示が行われる。このステップでは、力覚デバイス本体１２１が力覚計算部１２０から得た発生する力の情報を取得し、その力覚デバイスの把持部１２１ａにその力を発生させる。Ｓ２０６が終了すると、Ｓ２０７に進む。
【００９４】
Ｓ２０７では、ユーザがキーボード１００４、マウス１００５を使ってシステムの終了を指示していればプログラムを終了し、指示していなければＳ２０１に進む。
【００９５】
以上、図８を参照して、本実施例のＳ１４０における処理手順を説明した。
【００９６】
本実施例において、現実物体を左手に把持し、力覚デバイスを右手に把持すれば、左手の物体を動かす操作によって右手の力覚デバイスが提示する力が変化することになる。また、左手に把持する現実物体は表示する三次元ＣＧモデルと一致した形状である必要はなく、一般的な、たとえば立方体のような形状でよい。この現実物体に対して、操作したい三次元ＣＧモデルを重畳表示し、本実施例で述べた方法を実行すれば、左手の自然な操作に対して右手にそのＣＧ物体との物理的な干渉を力覚によって感じさせることが可能となる。
【００９７】
本実施例ではＨＭＤ１００が撮像部１０１と映像表示部１０２を内蔵するビデオシースルー型のＨＭＤであるものとしたが、これはユーザに現実世界と仮想世界の双方を提示することのできるデバイスであればどのようなもので構成されてもよく、たとえば光学シースルー型のＨＭＤで構成されてもよい。その場合、図３中の撮像部１０１は必要なくなり、図２中のＳ１０１およびＳ１１２のステップは実行されない。また、ユーザの頭部に装着されるデバイスで構成される必要もなく、たとえば据え置き型の半透過型ディスプレイで構成されてもよい。その場合は、図３中の撮像部１０１、ユーザ視点の位置姿勢計測部１０４は必要なくなり、図２中のＳ１０１、Ｓ１１２およびＳ１０２のステップは実行されない。また、本実施例ではＨＭＤ１００は撮像部１０１と映像表示部１０２を一つずつ持つ、単眼型のＨＭＤを使用するものとしたが、撮像部１０１と映像表示部１０２をそれぞれ二つずつ持つ複眼型のＨＭＤを使用してもよく、その場合は、図２に示される処理が両眼のそれぞれについて行われることになる。
【実施例２】
【００９８】
（複数の現実物体）
第一の実施例では現実物体が一つだけであり、その上に自動車のＣＧが重ねて表示されるものとしたが、これは本実施例の基本構成に必須の要件ではなく、現実物体は複数存在するものとしてもよい。本実施例では、現実物体が複数存在し、そのそれぞれに異なるＣＧが重ねて表示される形態について説明する。
【００９９】
その場合、現実物体の全てに位置姿勢センサ１０３のマーカ部を取り付ける。また、図２中のＳ１０３中で現実物体の全てに対応して位置姿勢計測を行う。また、Ｓ１１０、Ｓ１１１およびＳ１２０の全てのステップにおいて、現実物体の全てに対応した処理を行う。
【０１００】
また、本実施例においては、図８に示されていたＳ１４０中の処理手順が、図９に示されるように変更される。
【０１０１】
以下、図９を用いて、Ｓ１４０中の処理手順について説明する。ただし、図９中で、Ｓ２０１、Ｓ２０２、Ｓ２０３、Ｓ２０４、Ｓ２０５、Ｓ２０６およびＳ２０７の処理は図８中に示される処理と同じであるため、ここでは説明しない。Ｓ２０１が終了すると、Ｓ３０１ａが実行される。これは、力覚計算を、本実施例で存在する現実物体の数だけループすることを表し、Ｓ２０４が終わった後のＳ３０１ｂで終了判定される。Ｓ３０１ｂではＳ２０２、Ｓ２０３およびＳ２０４の処理が現実物体の数だけ繰り返したかどうかが判定され、もし繰り返したことが確認されたらＳ３０２に進む。
【０１０２】
Ｓ３０２は力覚合計ステップである。ここでは、Ｓ３０１のループ中で計算された、力覚の情報をすべて合計する。合計された発生する力の情報は、力覚デバイス本体１２１に送られる。Ｓ３０２が終了すると、Ｓ２０５に進む。
【０１０３】
以上、図９を用いて、本実施例におけるＳ１４０中の処理手順について説明した。
【実施例３】
【０１０４】
前述の実施例では、力覚デバイスの位置姿勢計測部１０６が力覚デバイスの把持部１２１ａの位置姿勢情報を位置姿勢センサ１０３から得るものとしたが、力覚デバイスの把持部１２１ａの位置姿勢情報を、力覚デバイス本体１２１に内蔵される位置姿勢センサから得る構成としてもよい。その場合、図４で力覚デバイスの把持部１２１ａに付着されるマーカ部１０３ｃの必要はなくなる。また、図１２に示されるＳ１２０５の必要もなくなる。また、図２に示されるＳ１０４の処理が変更される。
【０１０５】
本実施例におけるＳ１０４では、力覚デバイスの位置姿勢計測部１０６が力覚デバイス本体１２１に内蔵される位置姿勢センサから送られてきている位置姿勢信号を使って、力覚デバイスの把持部１２１ａの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部１２１ａの位置姿勢をＰ、力覚デバイス本体１２１から出力される位置姿勢信号をＰｄｎとすると、
Ｐ＝Ｄｗ・Ｐｄｎ
となる。求められた力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【実施例４】
【０１０６】
前述の実施例では、力覚デバイスの把持部１２１ａの位置姿勢情報を、力覚デバイス本体１２１に内蔵される位置姿勢センサから得る構成とした。しかしながら、この力覚デバイス本体１２１に内蔵される位置姿勢センサが出力する値は不正確であり、誤差を含むことがある。
【０１０７】
また、実施例１において、Ｓ１２０において力覚デバイスの把持部１２１ａの位置姿勢情報が力覚デバイスの把持部１２１ａを表す力覚発生モデルの位置姿勢情報として力覚シーン管理部１０８に格納されるものとした。しかし、力覚デバイスの把持部１２１ａを表す力覚発生モデルの位置姿勢が力覚デバイス本体１２１に内蔵される位置姿勢センサによって直接的に決定され、その後の書き換えを許さない場合がある。こうした場合、１２１ａの不正確な位置姿勢の値が１２１ａの力覚発生モデルの位置姿勢として格納されてしまうことになる。
【０１０８】
本実施例では、こうした場合において、力覚デバイス本体１２１に内蔵される位置姿勢センサから得られる位置姿勢信号および、位置姿勢センサ１０３から得られる位置姿勢信号の双方を用いて、正確に力覚を提示する手法について述べる。
【０１０９】
本実施例におけるＳ１０４では、力覚デバイスの位置姿勢計測部１０６が力覚デバイス本体１２１に内蔵される位置姿勢センサから送られてきている位置姿勢信号を使って、力覚デバイスの把持部１２１ａの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部１２１ａの位置姿勢をＰｄ、力覚デバイス本体１２１から出力される位置姿勢信号をＰｄｎとし、マニュアルによる計測や計算によって求められた位置姿勢をＤｗとすると、
Ｐｄ＝Ｄｗ・Ｐｄｎ
となる。また、ここで、力覚デバイスの位置姿勢計測部１０６が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、力覚デバイスの把持部１２１ａに取り付けられたマーカ部１０３ｃの位置姿勢を表す信号を使って、力覚デバイスの把持部１２１ａの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部１２１ａの位置姿勢をＰ、位置姿勢センサ１０３から求められるマーカ部１０３ｃの位置姿勢信号をＰｓｎとすると、
Ｐ＝Ｐｓｎ・Ｐｏ
となる。求められた力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【０１１０】
ここで、力覚デバイス本体１２１から得られる力覚デバイスの把持部１２１ａの位置姿勢Ｐｄは、位置姿勢センサ１０３から得られる位置姿勢Ｐよりも不正確である。両者の差、すなわち誤差をＰｅとすると、
Ｐｅ＝Ｐ−Ｐｄ
となる。求められたＰｅは力覚シーン管理部１０８に送られる。
【０１１１】
本実施例では、このようにして求められたＰｅを力覚シーンの誤差の補正に用いる。
【０１１２】
Ｓ１２０において、まず、力覚デバイスの把持部１２１ａの力覚モデルが力覚デバイス本体１２１に内蔵される位置姿勢センサによって決定される。その後、現実物体４０４の位置姿勢情報にＰｅの誤差を加えた値が自動車を表す力覚発生モデルの位置姿勢情報として格納される。このようにして、力覚デバイスの位置姿勢に含まれる誤差を他の全ての力覚モデルに与えることで、力覚シーンの誤差の補正を行うことができる。
【実施例５】
【０１１３】
本実施例では、Ｓ１４０における力覚提示の際、力覚の計算において、Ｓ１０３で得られる現実物体の位置姿勢とＳ１０４で得られる力覚デバイスの位置姿勢を用いて、力覚計算の工程に変更を加えるケースについて述べる。
【０１１４】
本実施例では、図８に示されるＳ１４０内の処理手順が、図１３に示されるように変更される。Ｓ２０２の後、Ｓ１３０１に進み、Ｓ１３０１では、力覚デバイスの、現実物体の座標系における位置姿勢の変化ベクトルＤを求める。
【０１１５】
また、本実施例では、Ｓ２０４の代わりに、Ｓ１３０２によって力覚の強さを計算する。Ｓ１３０２では、発生する力の強さをＦを
Ｆ＝Ｌ・｜Ｄ｜
に表される式で計算する。ここで、Ｌはあらかじめ定めた任意の定数である。この式は、Ｓ１３０２で求められたベクトルに比例する力が力覚デバイスに加えられることを表現している。Ｓ１３０２が終了したら、Ｓ２０３に進む。
【０１１６】
以上のような制御手順を持たせることで、現実物体に対して力覚デバイスが急速に動いたときには大きな反力を発生させ、ゆっくりと動いたときには弱い反力を発生するようにすることができる。このような反力を発生させることで、ユーザがゆっくりと力覚デバイスを動かすと仮想物体の内部に入り込めるような効果を生み出すことができる。
【０１１７】
また、Ｆを定める式を変更することで、異なる効果を得ることができる。
【図面の簡単な説明】
【０１１８】
【図１】本実施例をソフトウェアで実現するためのコンピュータの基本構成を示す図
【図２】第一の実施例における処理手順を説明するためのフローチャート
【図３】第一の実施例における構成を説明するブロック図
【図４】第一の実施例の外観を大まかに示した図
【図５】第一の実施例において、Ｓ１０１で撮影される映像を説明する図
【図６】第一の実施例において、Ｓ１１１で生成されるＣＧ映像を説明する図
【図７】第一の実施例において、Ｓ１１２で生成される合成映像を説明する図
【図８】第一の実施例において、Ｓ１４０中の処理手順を説明するフローチャート
【図９】第二の実施例において、Ｓ１４０中の処理手順を説明するフローチャート
【図１０】第一の実施例において、Ｓ１２０１およびＳ１２０２中の処理を説明するための図
【図１１】第一の実施例において、Ｓ１２０３およびＳ１２０５中の処理を説明するための図
【図１２】第一の実施例において、Ｓ１００中の処理手順を説明するフローチャート
【図１３】第五の実施例において、Ｓ１４０中の処理手順を説明するフローチャート
【図１４】Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法を説明するための図
【図１】
2007293412.tif 000007
【図２】
2007293412.tif 000008
【図３】
2007293412.tif 000009
【図４】
2007293412.tif 000010
【図５】
2007293412.tif 000011
【図６】
2007293412.tif 000012
【図７】
2007293412.tif 000013
【図８】
2007293412.tif 000014
【図９】
2007293412.tif 000015
【図１０】
2007293412.tif 000016
【図１１】
2007293412.tif 000017
【図１２】
2007293412.tif 000018
【図１３】
2007293412.tif 000019
【図１４】
2007293412.tif 000020