(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023129717
(43)【公開日】2023-09-14
(54)【発明の名称】ヘッドマウント情報処理装置およびその制御方法
(51)【国際特許分類】
G06F 3/01 20060101AFI20230907BHJP
G06F 3/0486 20130101ALI20230907BHJP
G06F 3/0346 20130101ALI20230907BHJP
【FI】
G06F3/01 570
G06F3/01 514
G06F3/0486
G06F3/0346 424
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023124295
(22)【出願日】2023-07-31
(62)【分割の表示】P 2021525503の分割
【原出願日】2019-06-13
(71)【出願人】
【識別番号】000005810
【氏名又は名称】マクセル株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】橋本 康宣
(72)【発明者】
【氏名】高見澤 尚久
(57)【要約】
【課題】ユーザの利便性を向上させることが可能なヘッドマウント情報処理装置およびその制御方法を提供する。
【解決手段】ユーザの頭部に装着された状態で使用される本体デバイス2と、ユーザの手首または手に装着された状態で使用され、本体デバイスを制御するコントローラと、を有する。例えば、本体デバイス2において、方向検出部91は、コントローラの位置・姿勢センサの検出結果に基づき、コントローラの方向を演算によって検出する。回転検出部92は、コントローラの位置・姿勢センサの検出結果に基づき、コントローラの方向を回転軸とするコントローラの回転を演算によって検出する。操作命令変換部87は、方向検出部91の検出結果および回転検出部92の検出結果を、本体デバイス2に対する命令に変換する。
【選択図】
図6B
【特許請求の範囲】
【請求項1】
ユーザの頭部に装着された状態で使用される本体デバイスと、前記本体デバイスを制御するコントローラと、を有するヘッドマウント情報処理装置であって、
前記コントローラは、
前記本体デバイスと通信を行う近接通信インタフェースと、
第1のセンサと、
を有し、
前記本体デバイスは、
前記コントローラと通信を行う近接通信インタフェースと、
所定の画像を表示するディスプレイと、
を有し、
前記コントローラは、
前記第1のセンサの検出結果に基づき、前記コントローラの方向を検出する方向検出部と、
前記第1のセンサの検出結果に基づき、前記コントローラの方向を回転軸とする前記コントローラの回転を検出する回転検出部と、
を有し、
前記コントローラまたは前記本体デバイスは、
前記方向検出部の検出結果および前記回転検出部の検出結果を、前記本体デバイスに対する命令に変換する操作命令変換部を有し、
前記操作命令変換部は、
前記方向検出部によって検出された前記コントローラの方向を移動命令に変換し、
前記回転検出部によって検出された前記コントローラの回転をトリガ命令に変換し、
前記本体デバイスは、
ポインティングビームまたはカーソルの2次元空間上での指し位置を前記ディスプレイに表示し、前記2次元空間上での指し位置を前記移動命令に基づいて制御し、前記2次元空間上での指し位置が指すオブジェクトを前記トリガ命令に基づいて選択する表示制御部を有する、
ヘッドマウント情報処理装置。
【請求項2】
請求項1記載のヘッドマウント情報処理装置において、
前記操作命令変換部は、
前記回転検出部によって検出された前記コントローラの回転の回転量が予め定めた回転閾値を超えた場合に前記トリガ命令を発行し、
前記回転閾値よりも小さい値である回転開始閾値を超えた場合に回転開始通知を発行し、
前記表示制御部は、
前記回転開始通知を受けた時点で、前記2次元空間上での指し位置が指す前記オブジェクトを仮選択状態にし、その後、前記トリガ命令を受けた場合に、前記トリガ命令を受けた時点での前記2次元空間上での指し位置が前記仮選択状態の前記オブジェクトを指しているか否かに関わらず前記仮選択状態の前記オブジェクトを選択状態に変更する、
ヘッドマウント情報処理装置。
【請求項3】
請求項1記載のヘッドマウント情報処理装置において、
前記操作命令変換部は、
前記コントローラを回転させた状態が維持された場合に、ドラッグ&ドロップの開始命令を発行し、前記回転させた状態が元に戻された場合に、前記ドラッグ&ドロップの終了命令を発行し、
前記表示制御部は、
前記ドラッグ&ドロップの開始命令から前記ドラッグ&ドロップの終了命令までの期間で発行された前記移動命令に応じて、前記2次元空間上での指し位置が指すオブジェクトの位置を移動する、
ヘッドマウント情報処理装置。
【請求項4】
請求項1記載のヘッドマウント情報処理装置において、
前記コントローラまたは前記本体デバイスは、
さらに、前記第1のセンサの検出結果に基づき、前記回転軸の方向に向けた前記コントローラの移動を演算によって検出する突出検出部を有し、
前記操作命令変換部は、
さらに、前記突出検出部によって検出された前記コントローラの移動を、前記本体デバイスに対する別のトリガ命令に変換する、
ヘッドマウント情報処理装置。
【請求項5】
請求項1記載のヘッドマウント情報処理装置において、
前記本体デバイスは、
前記操作命令変換部からの前記トリガ命令が一定期間発行されなかった場合、前記コントローラからの入力を無効にする、
ヘッドマウント情報処理装置。
【請求項6】
請求項1記載のヘッドマウント情報処理装置において、
前記コントローラは、
前記第1のセンサの一つである3軸角速度センサと、
前記ユーザの手を撮像するカメラと、
を備え、
前記方向検出部は、
前記第1のセンサの検出結果に基づいて検出される前記コントローラの方向に、前記カメラの撮像画像に基づいて検出される手の方向を加えた方向を、前記操作命令変換部へ出力する、
ヘッドマウント情報処理装置。
【請求項7】
請求項1記載のヘッドマウント情報処理装置において、
前記コントローラは、ウォッチ型の携帯情報端末である、
ヘッドマウント情報処理装置。
【請求項8】
請求項1記載のヘッドマウント情報処理装置において、
前記本体デバイスは、
前記第1のセンサの検出結果に基づき前記ポインティングビームまたはカーソルの2次元空間上での指し位置を調整する表示調整部と、
第2のセンサと、
前記第2のセンサの検出結果に基づき、前記本体デバイスの回転を検出する本体デバイス回転検出部と、
を有し、
前記本体デバイス回転検出部が、前記本体デバイスの回転を検知した場合、
前記表示調整部は、
前記ポインティングビームまたはカーソルの2次元空間上での指し位置を、前記本体デバイスの回転方向とは逆方向に移動した位置に表示する、
ヘッドマウント情報処理装置。
【請求項9】
ユーザの頭部に装着された状態で使用される本体デバイスと、前記本体デバイスを制御するコントローラと、を有するヘッドマウント情報処理装置の制御方法であって、
前記コントローラは、前記本体デバイスと通信を行う近接通信インタフェースと、第1のセンサと、を有し、
前記本体デバイスは、前記コントローラと通信を行う近接通信インタフェースと、所定の画像を表示するディスプレイと、を有し、
前記第1のセンサの検出結果に基づき、前記コントローラの方向を検出し、
前記第1のセンサの検出結果に基づき、前記コントローラの方向を回転軸とする前記コントローラの回転を検出し、
検出された前記コントローラの方向を移動命令に変換し、
検出された前記コントローラの回転をトリガ命令に変換し、
ポインティングビームまたはカーソルの2次元空間上での指し位置を前記ディスプレイに表示し、前記2次元空間上での指し位置を前記移動命令に基づいて制御し、前記2次元空間上での指し位置が指すオブジェクトを前記トリガ命令に基づいて選択する、
ヘッドマウント情報処理装置の制御方法。
【請求項10】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
検出された前記コントローラの回転の回転量が予め定めた回転閾値を超えた場合に前記トリガ命令を発行し、
前記回転閾値よりも小さい値である回転開始閾値を超えた場合に回転開始通知を発行し、
前記回転開始通知を受けた時点で、前記2次元空間上での指し位置が指す前記オブジェクトを仮選択状態にし、その後、前記トリガ命令を受けた場合に、前記トリガ命令を受けた時点での前記2次元空間上での指し位置が前記仮選択状態の前記オブジェクトを指しているか否かに関わらず前記仮選択状態の前記オブジェクトを選択状態に変更する、
ヘッドマウント情報処理装置の制御方法。
【請求項11】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
前記コントローラを回転させた状態が維持された場合に、ドラッグ&ドロップの開始命令を発行し、前記回転させた状態が元に戻された場合に、前記ドラッグ&ドロップの終了命令を発行し、
前記ドラッグ&ドロップの開始命令から前記ドラッグ&ドロップの終了命令までの期間で発行された前記移動命令に応じて、前記2次元空間上での指し位置が指すオブジェクトの位置を移動する、
ヘッドマウント情報処理装置の制御方法。
【請求項12】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
さらに、前記第1のセンサの検出結果に基づき、前記回転軸の方向に向けた前記コントローラの移動を演算によって検出し、
検出された前記コントローラの移動を、前記本体デバイスに対する別のトリガ命令に変換する、
ヘッドマウント情報処理装置の制御方法。
【請求項13】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
前記トリガ命令が一定期間発行されなかった場合、前記コントローラからの入力を無効にする、
ヘッドマウント情報処理装置の制御方法。
【請求項14】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
前記コントローラは、前記第1のセンサの一つである3軸角速度センサと、前記ユーザの手を撮像するカメラと、を備え、
前記第1のセンサの検出結果に基づいて検出される前記コントローラの方向に、前記カメラの撮像画像に基づいて検出される手の方向を加えた方向を出力する、
ヘッドマウント情報処理装置の制御方法。
【請求項15】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
前記コントローラは、ウォッチ型の携帯情報端末である、
ヘッドマウント情報処理装置の制御方法。
【請求項16】
請求項9記載のヘッドマウント情報処理装置の制御方法において、
前記本体デバイスは、第2のセンサを有し、
前記第1のセンサの検出結果に基づき、前記ポインティングビームまたはカーソルの2次元空間上での指し位置を調整し、
前記第2のセンサの検出結果に基づき、前記本体デバイスの回転を検出し、
前記本体デバイスの回転を検知した場合、前記ポインティングビームまたはカーソルの2次元空間上での指し位置を、前記本体デバイスの回転方向とは逆方向に移動した位置に表示する、
ヘッドマウント情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ヘッドマウント情報処理装置およびその制御方法に関し、コントローラによってヘッドマウント情報処理装置を制御する技術に関する。
【背景技術】
【0002】
特許文献1には、両手首の回りに着用される各ウェアラブルデバイスにそれぞれカメラを設置し、左手および右手のカメラでそれぞれ右手および左手の画像データを取得することで、両手のジェスチャを認識する方式が示される。また、取得した画像データが手の位置を示さないと判断される際に、各ウェアラブルデバイスに設置された慣性センサを用いてウェアラブルデバイスの位置を決定する方式が示される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ヘッドマウント情報処理装置は、HMD(Head Mounted Display)とも呼ばれ、ユーザの頭部に装着された状態で使用され、ディスプレイに拡張現実(AR)の情報や仮想現実(VR)の情報等を表示することができる。このようなヘッドマウント情報処理装置(以降、HMDと略す場合有り)では、ユーザは、HMD附属のコントローラを手に所持した状態で、コントローラを介してHMDの制御を行う場合がある。しかし、この場合、ユーザの手がコントローラによって塞がってしまい、手を自由に使うことが困難になり得る。その結果、ユーザの利便性が低下する恐れがある。
【0005】
本発明は、このようなことに鑑みてなされたものであり、その目的の一つは、ユーザの利便性を向上させることが可能なヘッドマウント情報処理装置およびその制御方法を提供することにある。
【0006】
本発明の前記ならびにその他の目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【0008】
代表的なヘッドマウント情報処理装置は、ユーザの頭部に装着された状態で使用される本体デバイスと、ユーザの手首または手に装着された状態で使用され、本体デバイスを制御するコントローラと、を有する。コントローラは、本体デバイスと通信を行う近接通信インタフェースと、コントローラの位置・姿勢を検出する位置・姿勢センサと、を有する。本体デバイスは、コントローラと通信を行う近接通信インタフェースと、所定の画像を表示するディスプレイと、を有する。コントローラまたは本体デバイスは、方向検出部と、回転検出部と、操作命令変換部と、を有する。方向検出部は、位置・姿勢センサの検出結果に基づき、コントローラの方向を演算によって検出する。回転検出部は、位置・姿勢センサの検出結果に基づき、コントローラの方向を回転軸とするコントローラの回転を演算によって検出する。操作命令変換部は、方向検出部の検出結果および回転検出部の検出結果を、本体デバイスに対する命令に変換する。
【発明の効果】
【0009】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、ヘッドマウント情報処理装置において、ユーザの利便性を向上させることが可能になる。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施の形態1によるヘッドマウント情報処理装置の外形例を示す概略図である。
【
図2】(a)および(b)は、
図1におけるコントローラのそれぞれ異なる外形例を示す概略図である。
【
図3】
図1において、本体デバイスのディスプレイに表示される画像の一例を示す図である。
【
図4】
図1において、ユーザによるコントローラの操作方法の一例を説明する図である。
【
図5】
図1のヘッドマウント情報処理装置の概略構成例を示す回路ブロック図である。
【
図6A】
図5のコントローラにおけるCPU周りの主要部の構成例を示すブロック図である。
【
図6B】
図5の本体デバイスにおけるCPU周りの主要部の構成例を示すブロック図である。
【
図7】
図5のヘッドマウント情報処理装置における概略的な制御方法の一例を示すフロー図である。
【
図8A】
図6Aのコントローラに紐付けされるコントローラ座標系の一例を示す図である。
【
図8B】
図6Aのコントローラに紐付けされるコントローラ座標系の一例を示す図である。
【
図9】
図7において、コントローラ方向の検出とビーム位置の更新に伴う処理内容の一例を説明する図である。
【
図10】
図6Bの本体デバイスに紐付けされるユーザ座標系の一例を示す図である。
【
図11】
図6Bの表示制御部によってディスプレイに表示されるポインティングビームの表示態様の一例を示す図である。
【
図12A】
図6Bの操作命令変換部において、トリガ命令の判別方法の一例を示す図である。
【
図12B】
図6Bの操作命令変換部において、トリガ命令の判別方法の他の一例を示す図である。
【
図13A】
図6Bの操作命令変換部および表示制御部において、オブジェクトの選択に伴う処理内容の一例を説明する図である。
【
図13B】
図6Bの操作命令変換部および表示制御部において、オブジェクトの選択に伴う他の処理内容の一例を説明する図である。
【
図14】
図6Bの操作命令変換部において、オブジェクトの選択に伴う処理内容の一例を説明する図である。
【
図15】
図1において、本体デバイスのディスプレイに表示される
図3とは異なる画像の一例を示す図である。
【
図16A】本発明の実施の形態2によるヘッドマウント情報処理装置において、
図6Bの操作命令変換部によるトリガ命令の判別方法の一例を示す図である。
【
図17】本発明の実施の形態2によるヘッドマウント情報処理装置において、
図6Bの本体デバイスの変形例を示すブロック図である。
【
図18】
図17に応じた、ユーザによるコントローラの操作方法の一例を説明する図である。
【
図19】
図17の操作命令変換部において、トリガ命令の判別方法の一例を示す図である。
【
図20】本発明の実施の形態3によるヘッドマウント情報処理装置において、
図6Aおよび
図6Bの構成例を利用したその他の制御方法の一例を説明する図である。
【
図21】本発明の実施の形態4によるヘッドマウント情報処理装置において、コントローラの装着箇所の変形例を示す図である。
【
図22】
図21のヘッドマウント情報処理装置において、ディスプレイに表示される画像の一例を示す図である。
【
図23】本発明の実施の形態4によるヘッドマウント情報処理装置において、ユーザ座標系の変形例を示す図である。
【
図24】本発明の比較例となるヘッドマウント情報処理装置において、コントローラの外形例を示す概略図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0012】
(実施の形態1)
《HMDの概略》
図1は、本発明の実施の形態1によるヘッドマウント情報処理装置の外形例を示す概略図である。
図2(a)および
図2(b)は、
図1におけるコントローラのそれぞれ異なる外形例を示す概略図である。
図1のヘッドマウント情報処理装置(HMD)1は、本体デバイス2と、コントローラ3とを備える。本体デバイス2は、ユーザの頭部に装着された状態で使用され、ディスプレイに拡張現実(AR)の情報や仮想現実(VR)の情報等を表示することができる。この際の表示方式として、VR型(非透過型)またはMR型(透過型)等が知られている。コントローラ3は、ユーザの手首または手に装着された状態(例えば巻いた状態)で使用され、ユーザの操作に応じて本体デバイス2を制御する。
【0013】
コントローラ3は、例えば、
図2(a)に示されるように、HMD1附属の専用部品であるリストバンド型のコントローラ3aであっても、
図2(b)のコントローラ3bに示されるように、汎用的なウォッチ型の携帯情報端末(所謂、スマートウォッチ)等であってもよい。いずれの場合でも、コントローラ3は、少なくとも、コントローラ3の位置・姿勢を検出する位置・姿勢センサ5と、本体デバイス2と通信を行う通信部(図示せず)とを備える。また、
図2(b)の場合には、コントローラ3bに、本体デバイス2を制御するためのソフトウェアが組み込まれる。
【0014】
図3は、
図1において、本体デバイスのディスプレイに表示される画像の一例を示す図である。
図3の画像10内には、オブジェクトの一つである実行ボタン11と、ポインティングビーム12とが含まれる。ユーザは、実行ボタン(オブジェクト)11を選択したい場合、コントローラ3を用いてポインティングビーム12の指し位置を実行ボタン11に合わせ、その状態で所定の操作を行う。
【0015】
《コントローラ(比較例)の概略》
図24は、本発明の比較例となるヘッドマウント情報処理装置において、コントローラの外形例を示す概略図である。
図24に示すコントローラ110は、ユーザが手に所持した状態で使用される。コントローラ110は、例えば、2個のボタンスイッチ(AおよびB)を備える。ユーザは、コントローラ110の方向を操作することで、
図3に示したポインティングビーム12の指し位置を操作し、指し位置を実行ボタン11に合わせた状態でボタンスイッチ(例えばA)を押下することで実行ボタン11を選択する。
【0016】
しかし、この場合、ユーザの手がコントローラ110によって塞がってしまい、手を自由に使うことが困難になり得る。また、コントローラ110の必要時/不必要時に応じてコントローラ110を持ち替える手間や、あるいは、必要時にコントローラ110を探す手間等が生じる場合もある。さらに、本体デバイス2に何らかのコマンド(トリガ命令)を発行したい場合、発行するコマンドの数がボタンスイッチの数(この例では2個)によって制限される。
図3のようなアプリケーションの例では、1個のボタンスイッチで足りるが、アプリケーションによって更に多くのボタンスイッチが必要とされる場合がある。以上のようなことから、ユーザの利便性が低下する恐れがある。
【0017】
《コントローラ(実施の形態1)の概略》
図4は、
図1において、ユーザによるコントローラの操作方法の一例を説明する図である。
図4に示すように、ユーザは、コントローラ3を手首に装着した状態(例えば巻いた状態)で使用する。ユーザは、
図3においてポインティングビーム12の指し位置を操作する場合、
図4の方向操作16aに示されるように、腕の方向を変えることでコントローラの方向15を変える。また、ユーザは、
図3において指し位置が指すオブジェクト(実行ボタン)11を選択する場合、
図4の回転操作16bに示されるように、手首の回転によってコントローラ3を回転させる。ここで、コントローラの方向15は、コントローラ3を回転する際の回転軸の方向と一致する。言い換えれば、コントローラ3の方向15は、コントローラ3が有するリストバンド形状の軸線方向となる。
【0018】
コントローラ3は、方向操作16aに伴うコントローラ3の方向15と、回転操作16bに伴うコントローラ3の回転とを位置・姿勢センサ5で検出する。位置・姿勢センサ5は、3軸角速度センサ(ジャイロセンサ)を含む。詳細は後述するが、HMD1は、この位置・姿勢センサ5の検出結果を、ポインティングビーム12の指し位置の移動命令や、またはトリガ命令(コマンド)に適宜変換する。
【0019】
ポインティングビーム12の指し位置の制御に際し、コントローラ3の方向15の角度変化量と、ポインティングビーム12の方向の角度変化量とは、必ずしも、1対1対応でなくてもよい。例えば、ユーザによる腕の動きを抑えたいような場合、HMD1は、初期設定等に基づいて、コントローラ3の方向15の角度変化量に対してポインティングビーム12の角度変化量が大きくなるように制御すればよい。一方、ユーザにポインティングビーム12の指し位置をきめ細かく制御させたいような場合、HMD1は、初期設定等に基づいて、コントローラ3の方向15の角度変化量に対してポインティングビーム12の角度変化量が小さくなるように制御すればよい。
【0020】
トリガ命令(コマンド)の制御に際し、HMD1は、例えば、ユーザが手首を平常時の位置から一時的に左回転させた場合、その回転操作16bを位置・姿勢センサ5を用いて検出し、左回転用コマンドの1回発生と判別する。これは、
図24のコントローラ110において、例えば、ボタンスイッチAの押下と等価である。同様に、HMD1は、手首の一時的な右回転に応じて、右回転用コマンドの1回発生と判別する。これは、
図24のコントローラ110において、例えば、ボタンスイッチBの押下と等価である。
【0021】
このようなコントローラ3を用いると、
図24の場合と異なり、ユーザの手がコントローラ3によって塞がれなくなるため、手を自由に使うことが可能になる。また、ユーザは、コントローラ3を、必要時/不必要時に関わらず手首に装着したままの状態であっても特に違和感を感じないため、コントローラ3を持ち替える手間や探す手間等も生じない。さらに、ユーザの動きをコマンド(トリガ命令)に変換するため、
図24のようなボタンスイッチを設けずに、コマンドの数を適宜増やすことも可能である。
【0022】
なお、実施の形態では、
図2(a)、
図2(b)に示したように、手首(または手(
図21で後述))に巻いた状態で使用されるコントローラ3への適用を想定するが、場合によっては、
図24のようなコントローラ110に適用することも可能である。この場合、手は塞がれるものの、ボタンスイッチに加えて、回転操作等によってもコマンドを発行できるため、使用可能なコマンド数を増やすことが可能になる。
【0023】
《HMDの構成》
図5は、
図1のヘッドマウント情報処理装置の概略構成例を示す回路ブロック図である。
図5において、コントローラ3は、例えば、位置・姿勢センサ5と、カメラ20と、測距センサ21と、CPU(Central Processing Unit)22と、メモリ23と、近接通信インタフェース24と、これらを相互に接続するバス26と、近接通信インタフェース24に接続されるアンテナ25とを備える。位置・姿勢センサ5は、加速度センサ(3軸加速度センサ)30と、ジャイロセンサ(3軸角速度センサ)31と、地磁気センサ32とを備え、コントローラ3の位置・姿勢を検出する。
【0024】
加速度センサ30は、コントローラ3の加速度を検出することで、コントローラ3の3軸(X軸、Y軸、Z軸)方向の動きを検出する。ジャイロセンサ31は、コントローラ3の角速度を検出することで、コントローラ3の3軸(X軸、Y軸、Z軸)回りの回転方向の動きを検出する。地磁気センサ32は、地球の磁力を検出することで、コントローラ3の方位を検出する。地磁気センサ32の検出結果は、例えば、コントローラ3の方向検出の補正等に使用可能である。加速度センサ30およびジャイロセンサ31は、6軸センサや慣性センサ等と呼ばれる場合もある。
【0025】
カメラ20は、ユーザの手を含めて、コントローラ3外部の画像を撮像する。この画像によって、コントローラ3の方向検出を補正することも可能である。測距センサ21は、例えば、赤外線やレーザなどの反射を利用して対象物との距離を測定する。近接通信インタフェース24は、アンテナ25を介して、本体デバイス2と近距離無線通信を行う。近距離無線通信の方式として、例えば、電子タグ、Bluetooth(登録商標)、IrDA(Infrared Data Association)、Zigbee(登録商標)、HomeRF(Home Radio Frequency、登録商標)等が挙げられる。
【0026】
メモリ23は、例えば、フラッシュメモリおよびワーク用のRAM等であり、プログラム35および各種情報データ36を記憶する。プログラム35には、OS(Operating System)と、当該OS上で動作し、コントローラ3内の各部を制御する各種制御プログラム等が含まれる。情報データ36には、プログラム35で使用する各種パラメータ等が含まれる。CPU22は、メモリに記憶されるプログラム35を実行することで、コントローラ3内の各部を制御する。その一つとして、CPU22は、位置・姿勢センサ5の検出結果を処理し、その処理結果を近接通信インタフェース24を介して本体デバイス2へ送信する。なお、CPU22は、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)等の各種演算処理専用プロセッサを含んでもよい。
【0027】
本体デバイス2は、カメラ40と、測距センサ41と、ディスプレイ42と、音声出力部43と、マイク44と、位置・姿勢センサ45と、CPU46と、メモリ47と、通信インタフェース48と、近接通信インタフェース50と、これらを相互に接続するバス52とを備える。また、本体デバイス2は、通信インタフェース48に接続されるアンテナ49と、近接通信インタフェース50に接続されるアンテナ51とを備える。
【0028】
位置・姿勢センサ45は、コントローラ3の場合と同様に、加速度センサ(3軸加速度センサ)60と、ジャイロセンサ(3軸角速度センサ)61と、地磁気センサ62とを備え、加えて、GPS(Global Positioning System)受信器63を備えることで本体デバイス2の位置・姿勢を検出する。カメラ40は、本体デバイス2外部の画像(例えばユーザ前方の風景等)を撮像する。コントローラ3の場合と同様に、この画像によって、本体デバイス2における位置・姿勢センサ45の方向検出を補正することも可能である。
【0029】
測距センサ41は、例えば、赤外線やレーザなどの反射を利用して対象物との距離を測定する。近接通信インタフェース50は、コントローラ3の場合と同様に、アンテナ51を介して、コントローラ3と近距離無線通信を行う。また、通信インタフェース48は、アンテナ49を介して、コントローラ3を除く外部(例えば、外部のサーバ装置等)と無線通信を行う。無線通信の方式として、代表的には、無線LAN(IEEE802.11a、IEEE802.11b、IEEE802.11g)などが挙げられる。
【0030】
ディスプレイ42は、例えば、液晶パネル等であり、ARまたはVRの画像等を代表に、所定の画像を表示する。この際に、ディスプレイ42は、カメラ40で撮像した画像をARの画像として表示することも可能である。音声出力部43は、例えば、装置内部の音声信号を音声に変換して装置外部へ放音するスピーカ55や、または、ユーザの耳に装着された状態で放音するイヤホン56等を備える。マイク44は、例えば、装置外部で生じた周囲音を集音して音声信号に変換したり、または、ユーザからの発声音声を集音して音声信号に変換する。
【0031】
メモリ47は、コントローラ3の場合と同様に、プログラム65および各種情報データ66を記憶する。プログラム65には、OSと、当該OS上で動作し、本体デバイス2内の各部を制御する各種制御プログラム等が含まれる。情報データ66には、プログラム65で使用する各種パラメータ等が含まれる。CPU46は、メモリ47に記憶されるプログラム65を実行することで、本体デバイス2内の各部を制御する。その一つとして、CPU46は、コントローラ3による位置・姿勢センサ5の処理結果を近接通信インタフェース50で受信し、その受信内容に応じてディスプレイ42の画像制御等を行う。なお、CPU46は、DSP、GPU等の各種演算処理専用プロセッサを含んでもよい。
【0032】
《CPU周りの主要部の詳細》
図6Aは、
図5のコントローラにおけるCPU周りの主要部の構成例を示すブロック図であり、
図6Bは、
図5の本体デバイスにおけるCPU周りの主要部の構成例を示すブロック図である。
図6Aにおいて、制御部70は、センサデータ処理部75と、通信制御部76とを備える。これらの各部は、例えば、
図5のCPU22がメモリ23に記憶されるプログラム35を実行することでCPU22上に実装される。
【0033】
センサデータ処理部75は、位置・姿勢センサ5の検出結果である角速度ベクトルωCおよび加速度ベクトルaCを定期的に取得する。角速度ベクトルωCは、ジャイロセンサ31によって得られ、加速度ベクトルaCは、加速度センサ30によって得られる。通信制御部76は、センサデータ処理部75で取得した角速度ベクトルωCおよび加速度ベクトルaCを近接通信インタフェース(I/Fと略す)24を介して、本体デバイス2へ定期的に送信する。
【0034】
図6Bにおいて、制御部80は、通信制御部85と、センサデータ処理部86と、操作命令変換部87と、表示調整部89と、表示制御部88とを備える。これらの各部は、例えば、
図5のCPU46がメモリ47に記憶されるプログラム65を実行することでCPU46上に実装される。通信制御部85は、コントローラ3からの角速度ベクトルω
Cおよび加速度ベクトルa
Cを近接通信I/F50を介して取得する。
【0035】
センサデータ処理部86は、方向検出部91と、回転検出部92と、原点座標検出部93とを備える。方向検出部91は、コントローラ3における位置・姿勢センサ5の検出結果に基づき、コントローラ3の方向(言い換えれば
図4の方向操作16a)を演算によって検出する。回転検出部92は、コントローラ3における位置・姿勢センサ5の検出結果に基づき、コントローラ5の方向(
図4の符号15)を回転軸とするコントローラ5の回転(言い換えれば
図4の回転操作16b)を演算によって検出する。具体的には、方向検出部91および回転検出部92は、それぞれ、通信制御部85からの角速度ベクトルω
Cに基づき、コントローラ3の方向および回転を検出する。
【0036】
原点座標検出部93は、コントローラ3における位置・姿勢センサ5の検出結果に基づき、コントローラ5の座標系における原点座標を検出する。具体的には、原点座標検出部93は、通信制御部85からの加速度ベクトルa
Cに基づき、原点座標を検出し、ひいては、コントローラ5の平行移動を検出する。場合によっては、コントローラ5の平行移動に応じて、
図3のポインティングビーム12の指し位置を平行移動させることも可能である。なお、センサデータ処理部86は、このような各種演算に際して、メモリ47内に、情報データ66である座標系情報66aを適宜記憶する。
【0037】
操作命令変換部87は、方向検出部91の検出結果および回転検出部92の検出結果を、本体デバイス2に対する命令に変換する。ここで、前述したように、ユーザは、ポインティングビーム12の指し位置を動かす場合に腕の方向を変えることでコントローラ3の方向を変え、指し位置が指すオブジェクトを選択する場合(すなわちトリガ命令を発行する場合)に手首の回転によってコントローラ3を回転させる。詳細は後述するが、方向検出部91は、コントローラ3の方向の検出結果として正規化四元数である回転qCSを出力し、回転検出部92は、コントローラ3の軸回りの回転の検出結果として回転角RRCを出力する。
【0038】
操作命令変換部87は、方向検出部91によって検出されたコントローラ3の方向(回転qCS)をポインティングビーム12の移動命令MVに変換し、回転検出部92によって検出されたコントローラの回転(回転角RRC)をトリガ命令TGに変換する。この際に、メモリ66bには、例えば、右回転用コマンド、左回転コマンドといった各種トリガ命令と回転角RRCとの対応関係が、情報データ66である操作命令情報66bとして予め記憶される。操作命令変換部87は、当該操作命令情報66bに基づいて、コントローラの回転(回転角RRC)をトリガ命令TGに変換する。
【0039】
表示調整部89は、本体デバイス2における位置・姿勢センサ45の検出結果を反映して、移動命令MVが表すポインティングビームの指し位置を調整する。具体例として、ユーザが頭と腕を共に正面に向けた状態で、ポインティングビーム12の指し位置が画面の中心に定まっている場合を想定する。この状態で、ユーザが頭だけを右に角度θだけ回すと、腕は動かしていないため、そのままでは、頭に対して腕が左に角度θだけズレた体勢で、依然として、指し位置は画面の中心に存在することになる。
【0040】
しかし、このような場合、ユーザは、体感的に、指し位置が画面の中心から左に角度θだけズレた位置になることを好む場合が多い。この場合、ユーザが腕を右に角度θだけ回すことで再び頭と腕の方向が一致した時点で、指し位置は画面の中心に戻ることになる。表示調整部89は、このようなユーザの体感を反映し、移動命令MVの内容を変更することで指し位置を変更する処理を行う。具体的には、表示調整部89は、例えば、位置・姿勢センサ45を用いてユーザの頭が右に角度θだけ回転したことを検出した場合には、指し位置が左に角度θだけ回転するように移動命令MVを変更する。
【0041】
表示制御部88は、
図3に示したように、ポインティングビーム12の指し位置をディスプレイ42に表示し、当該指し位置を表示調整部89からの移動命令MVに応じて制御し、当該指し位置が指すオブジェクト11をトリガ命令に応じて選択する。なお、ここでは、方向検出部91、回転検出部92および原点座標検出部93は、本体デバイス2の制御部80に設けられたが、場合によっては、コントローラ3の制御部70に設けられてもよい。加えて、操作命令変換部87も、場合によっては、コントローラ3の制御部70に設けられてもよい。また、制御部70,80は、CPU22,46によるプログラム処理に限らず、場合によっては、FPGA(Field Programmable Gate Array)等のハードウエアや、または、ハードウエアとソフトウエアの組み合わせで実装されてもよい。
【0042】
《HMDの全体制御フロー》
図7は、
図5のヘッドマウント情報処理装置における概略的な制御方法の一例を示すフロー図である。
図7において、コントローラ3は、電源オンの後(ステップS101)、初期化処理を行う(ステップS102)。初期化処理は、センサデータの処理に伴う座標軸を初期化するためのものであり、例えば、ユーザに、予め定めた操作方法で初期化コマンドを入力させることで行われる。
【0043】
その後、コントローラ3は、
図6Aのセンサデータ処理部75を用いてセンサデータ(角速度ベクトルω
Cおよび加速度ベクトルa
C)を取得する処理(ステップS103)と、通信制御部76を用いて当該センサデータを送信する処理(ステップS104)とを所定の検出周期毎に行う。そして、コントローラ3は、当該ステップS103,S104の処理を電源オフとなるまで繰り返す(ステップS105)。
【0044】
一方、本体デバイス2も、電源オンの後(ステップS201)、初期化処理を行う(ステップS202)。この初期化処理(ステップS202)は、コントローラ3の初期化処理(ステップS102)に連動して行われる。そして、本体デバイス2は、初期化処理(ステップS202)において、例えば、初期化コマンドが入力された時点のコントローラ3の座標軸に対して、ポインティングビーム12の指し位置を一義的に対応付ける。
【0045】
その後、本体デバイス2は、コントローラ3におけるステップS104の処理に応じて、
図6Bの通信制御部85を介してコントローラ3からのセンサデータを逐次受信する(ステップS203)。すなわち、本体デバイス2は、コントローラ3の位置・姿勢が初期化時点からどのように変化したかを表すセンサデータを逐次受信する。
【0046】
そして、本体デバイス2は、受信したセンサデータに基づき、
図6Bの方向検出部91等を用いてコントローラ3の方向(方向の変化)を検出し、当該検出結果に基づき、表示制御部88を用いてポインティングビーム12の指し位置を更新する(ステップS204)。また、本体デバイス2は、受信したセンサデータに基づき、
図6Bの回転検出部92および操作命令変換部87を用いて、ユーザからのトリガ命令の検出とその種類の判別を行い、トリガ命令の種類に応じた処理を行う(ステップS205)。そして、本体デバイス2は、当該ステップS203~S205の処理を電源オフとなるまで繰り返す(ステップS206)。
【0047】
《制御部の詳細》
《記号の用法》
以下、
図6Aおよび
図6Bに示した制御部70,80の詳細な処理内容について説明する。コントローラ3における位置・姿勢センサ5の検出結果を処理する方式として、代表的には、オイラー角を用いる方式や、正規化四元数を用いる方式等が挙げられる。実施の形態1では、一例として、正規化四元数を用いる場合を想定する。正規化四元数を用いるにあたって、まずは、明細書で使用する記号の用法について説明する。
【0048】
座標系の回転は、正規化四元数を用いて表すことができる。正規化四元数とは、ノルムが1の四元数であり、ある軸の回りの回転を表す。単位ベクトル(nX,nY,nZ)を回転軸とした角度ηの回転qを表す正規化四元数は、式(1)で与えられる。式(1)において、i,j,kは四元数の単位である。また、角度ηが正である場合の回転qは、単位ベクトル(nX,nY,nZ)の方向に向いた状態での右回りの回転に対応する。任意の座標系の回転は、この正規化四元数で表される。
q=cos(η/2)+nXsin(η/2)i+nYsin(η/2)j+nZsin(η/2)k …(1)
【0049】
式(1)における回転qの実数部分をSc(q)と定義し、回転qのベクトル部分をVc(q)と定義する。q*は、回転qの四元数に対する共役四元数を表す。四元数のノルムを1に正規化する演算子を[・]と定義する。回転qを任意の四元数とすると、式(2)は、[・]の定義であり、式(2)の右辺の分母は、回転qの四元数のノルムである。また、座標点あるいはベクトル(pX,pY,pZ)を表現する四元数pは、式(3)で表される。
[q]=q/(qq*)1/2 …(2)
p=pXi+pYj+pZk …(3)
【0050】
明細書においては、特に断りがない限り、成分表示でない座標点やベクトルを表す記号は四元数表示であるものとし、回転を表す記号は正規化四元数であるものとする。ここで、単位ベクトルn方向へのベクトルの射影演算子をPS(n)と定義する。ベクトルpの射影は式(4)で表される。また、座標点あるいは方向ベクトルp1が回転qで表される原点中心の回転操作により座標点あるいは方向ベクトルp2に変換されたとすると、方向ベクトルp2は、式(5)で算出される。
PS(n)p=-nSc(np) …(4)
p2=qp1q* …(5)
【0051】
ここで、カイラリティが等しい任意の2つの座標系間で方向を合わせるための回転qは次のようにして得られる。まず、単位ベクトルn1を単位ベクトルn2に重ねるように、n1とn2を含む平面に垂直な軸回りに回転させる正規化四元数R(n1,n2)は、式(6)で与えられる。
R(n1,n2)=[1-n2n1] …(6)
【0052】
座標系“1”を回転させて、各軸の方向を座標系“2”の各軸に合わせることを考える。記号として、座標系“1”のY軸、Z軸方向の単位ベクトルの座標系“2”での表現を、nY12、nZ12と定義し、座標系“2”のY軸、Z軸方向の単位ベクトルの座標系“2”自身での表現を、nY、nZと定義する。回転は座標系“2”の中の表現として求められる。
【0053】
最初に、座標系“1”のZ軸を回転させて座標系“2”のZ軸の方向に合わせることを考える。その回転qT1は、式(6)を用いて、式(7)で与えられる。この回転qT1により、座標系“2”において、座標系“1”のY軸を表す単位ベクトルnY12は、式(8)の単位ベクトルnY12mとなる。単位ベクトルnY12mは、座標系“2”のZ軸に直交している。そこで、次に、この単位ベクトルnY12mを座標系“2”のZ軸回りに回転させて座標系“2”のY軸方向に合わせることを考える。その回転qT2は、式(9)で与えられる。
qT1=R(nZ12,nZ) …(7)
nY12m=qT1nY12qT1
* …(8)
qT2=R(nY12m,nY) …(9)
【0054】
以上により、座標系“1”を回転させて、各軸の方向を座標系“2”の各軸の方向に合わせる回転qTの座標系“2”での表現は、式(7)~式(9)に基づき、式(10)で得られる。その結果、座標系“1”においてn1と表される単位ベクトル、あるいは回転を表す正規化四元数は、座標系“2”では、式(11)の単位ベクトルn2で表現される。すなわち、座標系“1”を回転qTによって回転させた場合、回転後の座標系“2”の視点で、回転前の座標系“1”の単位ベクトルn1は、回転qTの逆回りに回転しているように見える。
qT=qT2qT1 …(10)
n2=qT
*n1qT …(11)
【0055】
《方向検出部および原点座標検出部の詳細》
まず、コントローラ3に紐付けされるコントローラ座標系の表現について説明する。コントローラ座標系の座標軸は、ジャイロセンサ31の座標軸である。
図8Aおよび
図8Bは、
図6Aのコントローラに紐付けされるコントローラ座標系の一例を示す図である。
図8Aおよび
図8Bには、一例として、ユーザが、右手にコントローラ3を装着し、位置・姿勢センサ5(ジャイロセンサ31)を手首の内側に配置した例が示される。
【0056】
ここで、コントローラ3が有するリストバンド形状の軸線方向をX軸とする。また、X軸と垂直であり、バンド面に対して垂直方向をY軸とし、バンド面に対して平行方向をZ軸とする。掌の面を垂直方向にして腕を水平方向にしたときにZ軸が垂直方向になる。明細書では、このような座標系を右手系の座標系と呼ぶ。明細書では、特に断りのない限り、右手系の座標系を用いることとする。
【0057】
ユーザは、
図7のステップS102において、腕を基準の位置に置いた状態で、コントローラ3等の初期化を行う。例えば、手首を3回連続して内側に倒す、という動きを初期化コマンドとする。この場合、
図6Bの制御部80は、例えば、角速度ベクトルω
CにおけるZ軸周りの回転成分に基づいて初期化コマンドを検出することができる。ここで、明細書では、当該初期化時点のコントローラ座標系を初期座標系と呼ぶ。初期座標系は固定された座標系であり、コントローラ座標系はコントローラ3の動きに応じて変化する座標系である。コントローラ座標系の向きは、初期座標系の向きを回転させることで得られる。この回転を表す正規化四元数をq
CSで表現する。初期化時における回転q
CSは、例えば、回転無しを意味する1である。
【0058】
コントローラ座標系の回転は、ジャイロセンサ31で検出される。補助的に、地磁気センサ32、カメラ20、測距センサ21を用いてもよいが、必須の構成要素ではない。ジャイロセンサ31が検出する角速度ベクトルωCを(ωX,ωY,ωZ)とすると、この角速度ベクトルωCは、式(12)の四元数で表現される。式(12)の角速度ベクトルωCは、コントローラ座標系での表現である。したがって、初期座標系での角速度ベクトルωSは、式(13)で与えられる。すなわち、初期座標系を回転qCSで回転させることでコントローラ座標系が得られる場合、初期座標系の視点で、コントローラ座標系の角速度ベクトルωCは回転qCSで回転しているように見える。
ωC=ωXi+ωYj+ωZk …(12)
ωS=qCSωCqCS
* …(13)
【0059】
ここで、回転q
CSが初期座標系における表現であることに注意すると、回転q
CSの時間発展を決定する差分方程式は、式(13)の関係を反映して、式(14)となる。式(14)において、Δtをジャイロセンサ31の検出周期に定めると、回転q
CSは、Δt毎に得られる角速度ベクトルω
Cを受けて逐次更新される。これにより、コントローラ3が初期化時点からどのように回転したかを逐次得ることができる。
図6Bの方向検出部91は、式(14)に基づき演算を行うことで、Δt毎に回転q
CSを出力する。
Δq
CS/Δt=(1/2)ω
Sq
CS=(1/2)q
CSω
C …(14)
【0060】
なお、式(14)で回転qCSを演算する際、近似精度を上げる手法を併用してもよいし、回転qCSのノルムを1に保つ補正を加えてもよい。さらに、誤差の蓄積を補正するために、地磁気センサ32による地磁気方向の測定結果を利用してもよいし、カメラ20や測距センサ21によって検出した外界の特徴点の位置情報を利用してもよい。
【0061】
次に、原点座標検出部93の処理内容について説明する。例えば、コントローラ3の平行移動、すなわちコントローラ座標系原点の移動も制御に使用する場合に、原点座標検出部93による処理が行われる。コントローラ座標系の初期座標系における原点座標の更新は、加速度センサ30によって検出される加速度ベクトルaCに基づいて行われる。加速度ベクトルaCを(aX,aY,aZ)とすると、加速度ベクトルaCは、式(15)の四元数で表現される。この加速度ベクトルaCは、コントローラ座標系での表現であるため、初期座標系での加速度ベクトルaSは、式(16)で与えられる。
aC=aXi+aYj+aZk …(15)
aS=qCSaCqCS
* …(16)
【0062】
ここで、初期座標系におけるコントローラ座標系の原点座標をO
CS、コントローラ座標系の原点の速度ベクトルをv
S、重力加速度ベクトルをg
Sとする。重力加速度ベクトルg
Sは、
図7のステップS102におけるコントローラ3の初期化時に測定される。当該重力加速度ベクトルg
Sを用いると、速度ベクトルv
Sの時間発展を決定する差分方程式は式(17)となる。また、原点座標O
CSの時間発展を決定する差分方程式は式(18)となる。
Δv
S/Δt=a
S-g
S …(17)
ΔO
CS/Δt=v
S …(18)
【0063】
式(17)および式(18)において、Δtを加速度センサ30の検出周期に定めると、速度ベクトルv
Sは、Δt毎に得られる加速度ベクトルa
S(加速度ベクトルa
C)を受けて逐次更新され、この速度ベクトルvsに基づいて、原点座標O
CSも逐次更新される。
図6Bの原点座標検出部93は、式(16)、式(17)および式(18)に基づき演算を行うことで、Δt毎に、加速度ベクトルa
S、速度ベクトルv
Sおよび原点座標O
CSを更新する。
【0064】
なお、式(17)および式(18)で速度ベクトルvsおよび原点座標OCSを演算する際、近似精度を上げる手法を併用してもよい。また、カメラ20や測距センサ21によって検出した外界の特徴点の位置情報を利用してもよい。さらに、処理を簡素化するために、加速度センサ30の検出周期は、ジャイロセンサ31の検出周期と同じであってもよい。
【0065】
《初期化処理の詳細》
図7の初期化処理(ステップS102,S202)に際し、ユーザは、まず、腕を基準の位置に置き、そこでコントローラ3の初期化コマンドを入力する。初期化コマンドは、例えば、前述したように手首を3回内側に倒す(右手の場合は左に回転させる)といった動作の他に、もう一方の手でコントローラ3を3回叩く、といった動作で入力されてもよい。あるいは、初期化コマンドは、このような動作に限らず、例えば、本体デバイス2に設置されたハードスイッチの押下等によって入力されてもよい。
【0066】
例えば、本体デバイス2のセンサデータ処理部86は、初期化コマンドが入力された時点、あるいは、動作による入力であれば、初期化コマンドである、と確定した時点のコントローラ座標系を新たな初期座標系として認識する。そして、センサデータ処理部86は、その時点のコントローラ座標系の回転qCSを、回転無しを表す1にリセットする。さらに、センサデータ処理部86は、手首の回転角RRC(後述)を0にリセットする。
【0067】
また、センサデータ処理部86は、初期化時に腕を静止させている状態で、コントローラ3から受信した加速度ベクトルaCに基づいて重力加速度ベクトルgC(コントローラ座標系)を測定する。式(19)に示されるように、初期座標系における重力加速度ベクトルgSは、当該コントローラ座標系における重力加速度ベクトルgCと同じである。重力加速度ベクトルgSは、例えば、前述した式(17)で用いられる。
gS=gC …(19)
【0068】
《コントローラ方向の検出とビーム位置の更新の詳細》
図7におけるステップS204の処理の詳細について説明する。
図8Bに示されるように、ユーザの腕の方向は、コントローラ座標系において単位ベクトルn
ACで定められる。そして、初期化時点からの回転q
CSによって、各時点(各検出周期)における腕の方向が算出される。初期座標系における腕の方向の単位ベクトルをn
ASとすると、単位ベクトルn
ASは式(20)で求まる。
n
AS=q
CSn
ACq
CS
* …(20)
【0069】
図9は、
図7において、コントローラ方向の検出とビーム位置の更新に伴う処理内容の一例を説明する図である。
図6Bの操作命令変換部87は、式(20)に基づき、回転q
CSによって単位ベクトルn
ACから単位ベクトルn
ASに角度変化量αだけ向きが変更された場合、例えば、
図9に示されるように、ポインティングビーム12の指し位置も角度変化量αだけ向き変更するように移動命令MVを生成する。
【0070】
この際に、ポインティングビーム12の角度変化量αは、ポインティングビーム12を表示する空間である本体デバイス2の座標系で制御される。この本体デバイス2の座標系を、明細書ではユーザ座標系と呼ぶ。初期座標系での回転qCSは、ユーザ座標系では回転qCSUで表現される。操作命令変換部87は、例えば、移動命令MVとして、回転qCSUを出力する。
【0071】
図10は、
図6Bの本体デバイスに紐付けされるユーザ座標系の一例を示す図である。ユーザ座標系は、
図10に示されるように、本体デバイス2に固定された座標系であり、例えば、X軸が水平面内で本体デバイス2の正面方向であり、Y軸が水平面内でユーザの左手方向であり、Z軸が垂直上向き方向である。ポインティングビーム12の表示に関し、
図6Bの表示制御部88は、コントローラ3を装着した腕の肘が位置する近傍に、ポインティングビーム12の起点を設定し、ポインティングビーム12がこの起点から伸びているかのようにディスプレイ42に表示を行う。そして、表示制御部88は、ポインティングビーム12の伸びる方向を操作命令変換部87からの移動命令MV(具体的には回転q
CSU)で制御する。なお、表示制御部88は、当該起点の位置をユーザの好みで調整してもよい。
【0072】
また、初期座標系とユーザ座標系との位置関係は、例えば、予め設計上で定められる。代表的には、本体デバイス2を装着したユーザが正面方向を向いた状態で、ポインティングビーム12が起点から水平正面方向に延びるような位置関係に設計される。
図7の初期化処理(ステップS102,S202)において、ユーザは、この設計上で定めた位置関係を維持した状態で、初期化コマンドを発行する。
【0073】
ここで、ユーザ座標系の視点で、コントローラ3の初期座標系の方向をユーザ座標系の方向に合わせる回転をq
Tとする。回転q
Tは、予め設計上で定めることができ、代表的には、回転無し(すなわち、初期座標系とユーザ座標系の方向が一致した状態)を表す1である。ただし、ユーザの操作上の都合(例えば、腕の方向とポインティングビーム12の方向とが所定角だけズレていた方が操作が容易等)がある場合、回転q
Tは、1でない別の値であってもよい。この回転q
Tを用いるとユーザ座標系における回転q
CSUは式(21)で与えられる。
図6Bの操作命令変換部87は、式(21)を演算し、回転q
CSUを出力する。
q
CSU=q
T
*q
CSq
T …(21)
【0074】
また、ポインティングビーム12の初期状態での単位ベクトルをn
AU0、向き変更後のポインティングビーム12の単位ベクトルをn
AUとすると、単位ベクトルn
AUは式(22)で求まる。
図6Bの表示制御部88は、式(22)に基づき、ポインティングビーム12の指し位置を制御する。
n
AU=q
CSUn
AU0q
CSU
* …(22)
【0075】
なお、前述したように、ユーザは、腕を基準の位置に定めた状態で初期化コマンドを発行するが、この際に、腕の位置が理想的な基準の位置からズレる場合がある。この位置ズレによって、腕の方向とポインティングビーム12の方向との間に、角度差のオフセットが生じ得るが、ユーザの体感上、位置ズレがある程度の範囲内に収まっている限り、特に問題は生じない。一方、方向検出部91が回転qCSを演算する際にも、誤差が生じ得る。この誤差は、蓄積されることによって時系列的に拡大し得るため、その際には、ユーザは、初期化をやり直せばよい。
【0076】
図11は、
図6Bの表示制御部によってディスプレイに表示されるポインティングビームの表示態様の一例を示す図である。ディスプレイ42には、ユーザ座標系の空間上で、オブジェクト(
図11では実行ボタン)11と共にポインティングビーム12が表示される。ポインティングビーム12は、表示空間内を、表示可能な範囲で延びた形で表示される。まず、ポインティングビーム12の指し位置がオブジェクト11に当たっていない場合、オブジェクト11は、非選択状態である(ステップS301)。
【0077】
次に、ユーザが腕の方向を操作することで、ポインティングビーム12の指し位置がオブジェクト11に当たると、オブジェクト11は、仮選択状態となり、仮選択状態を表す表示に変わる(ステップS302)。この仮選択状態で、ユーザがポインティングビーム12の指し位置を変えずに、例えば、手首を回転させると(回転操作16bを行うと)、オブジェクト11は、選択状態となり、選択状態を表す表示に変わる(ステップS303)。表示制御部88は、このような表示変更を行うと共に、ステップS303のようにオブジェクト11が選択された(言い換えれば、実行ボタンが押下された)場合には、その旨を所定の処理部に通知することで所定の処理部に対応する処理を行わせる。
【0078】
《トリガ解析(回転検出部および操作命令変換部)の詳細》
次に、
図7におけるステップS205の処理の詳細について説明する。手首の回転は、腕の方向を回転軸とした回転である。このため、ジャイロセンサ31の出力から当該回転軸方向の成分を抽出することで、手首の回転を検出することができる。
図8Bに示したように、コントローラ座標系における腕の方向(
図8BではX軸方向)の単位ベクトルをn
ACとする。
【0079】
ここで、一般化して記述すると、手首の回転の角速度ベクトルω
RCのコントローラ座標系における表現は、式(4)の射影演算子と、コントローラ座標系の角速度ベクトルω
Cとを用いて、式(23)となる。手首を回転させると、単位ベクトルn
AC方向の成分が生じる。
図6Bの回転検出部92は、式(23)に基づいて、角速度ベクトルω
Cの中から当該単位ベクトルn
AC方向の成分を抽出することで、手首の回転を検出する。
ω
RC=P
S(n
AC)ω
C …(23)
【0080】
また、角速度ベクトルωRCを基に、手首の回転位置を回転角RRCで表すと、回転角RRCは、式(24)の発展方程式で算出される。回転検出部92は、式(24)に基づき、回転角RRCを算出する。
ΔRRC/Δt=ωRC …(24)
【0081】
ここで、コントローラ3の初期化時点での回転角R
RCを0°とする。
図6Bの操作命令変換部87は、当該回転検出部92からの回転角R
RCに基づいてトリガ命令TGを判別する。
図12Aおよび
図12Bは、
図6Bの操作命令変換部において、トリガ命令の判別方法の一例を示す図である。
図12Aおよび
図12Bに示されるように、操作命令変換部87(詳細には
図6Bの操作命令情報66b)は、予め、ベースラインR
RC0を基準とした回転閾値R
RCT1,R
RCT2を備える。
【0082】
操作命令変換部87は、回転検出部92によって検出されたコントローラ3の回転の回転量(回転角R
RC)が予め定めた回転閾値R
RCT1,R
RCT2を超えた場合にトリガ命令を発行する。
図12Aの例では、ユーザは、手首を、回転閾値R
RCT1を超える回転角で右回転したのち元に戻している。これに応じて、操作命令変換部87は、右回転に対応する第1トリガ命令を1回発行する(言い換えれば、第1ボタンが1回押下されたと判別する)。
【0083】
図12Bの例では、ユーザは、手首を、回転閾値R
RCT2を超える回転角で左回転したのち元に戻すという動作を連続して2回行っている。これに応じて、操作命令変換部87は、左回転に対応する第2トリガ命令を2回発行する(言い換えれば、第2ボタンが2回押下されたと判別する)。ここで、操作命令変換部87は、予め定めた一定時間内に生じた複数回のトリガ命令の発生状況に応じて、最終的な1回のトリガ命令を定めることも可能である。
図12Bの例では、操作命令変換部87は、一定時間内に生じた2回の第2トリガ命令の発行を、所謂、ダブルクリックとして取り扱うことができる。
【0084】
なお、ベースラインRRC0は、角度検出の誤差や手首の保持角度のズレ等に伴い、0°とは限らない。そこで、操作命令変換部87は、式(25)のように、回転角RRCの低周波成分を取り出し、それをベースラインRRC0として設定してもよい。式(25)の右辺は、回転角RRCの平均化処理を意味する。平均化処理の方法としては、例えば、式(26)に示される指数移動平均処理等が挙げられる。式(26)において、ξは、平均化係数であり、0から1の間の値をとる。
RRC0=<RRC> …(25)
<RRC(t+Δt)>=ξRRC(t)+(1-ξ)<RRC(t)> …(26)
【0085】
ここで、このような手首の回転によるトリガ命令を用いると、
図6Bの方向検出部9が手首の回転の影響を受け、ポインティングビーム12の指し位置がユーザの意図からズレる恐れがある。具体的には、例えば、
図11のステップS303において、ユーザは、オブジェクト(実行ボタン)11を選択状態にする際に、ポインティングビーム12の指し位置が回転操作16bによってオブジェクト11からズレてしまい、オブジェクト11を選択状態にできない恐れがある。
【0086】
そこで、
図13A、
図13B、
図14に示されるような方式を用いることが有益となる。
図13Aおよび
図13Bは、
図6Bの操作命令変換部および表示制御部において、オブジェクトの選択に伴う処理内容の一例を説明する図であり、
図14は、
図6Bの操作命令変換部において、オブジェクトの選択に伴う処理内容の一例を説明する図である。
【0087】
図14に示されるように、操作命令変換部87は、例えば、
図12Aで述べたような回転閾値R
RCT1に加えて、回転閾値R
RCT1よりも小さい値である回転開始閾値R
RCSTを備える。そして、操作命令変換部87は、回転検出部92によって検出されたコントローラ3の回転の回転量(回転角R
RC)が回転閾値R
RCT1を超えた場合にトリガ命令を発行し、回転開始閾値R
RCSTを超えた場合に回転開始通知を発行する。
【0088】
一方、
図13Aまたは
図13Bに示されるように、表示制御部88は、回転開始通知を受けた時点で、ポインティングビーム12の指し位置が指すオブジェクト(実行ボタン)11を仮選択状態にする(ステップS401,S501)。その後、表示制御部88は、トリガ命令を受けた場合に、トリガ命令を受けた時点での指し位置が仮選択状態のオブジェクト11を指しているか否かに関わらず、仮選択状態のオブジェクト11を選択状態に変更する(ステップS402,S502)。
【0089】
具体的な処理内容として、
図13Aの例では、表示制御部88は、オブジェクト11を仮選択状態にした場合に(ステップS401)、このオブジェクト11の仮選択状態を、その後の実際の指し位置の移動有無に関わらず一定時間維持する。また、
図13Bの例では、表示制御部88は、オブジェクト11を仮選択状態にした場合に(ステップS501)、その後の実際の指し位置の移動有無に関わらず、指し位置は一定時間変わらないものとみなして処理する。
【0090】
《初期化処理における座標系の補正》
図7のステップS102で述べたように、ユーザは、腕を基準の位置に置いた状態で初期化コマンドを入力する。基準の位置は、例えば、腕を水平方向に保つ位置である。ただし、ユーザが腕を水平方向に保ったつもりでも、実際には、腕が水平方向から若干ズレてしまっている場合がある。すなわち、ユーザが体感する水平方向と、重力加速度に基づく実際の水平方向との間に誤差が生じ得る。この誤差は、ユーザが腕の方向によってポインティングビーム12を操作する際に、ユーザに違和感を生じさせる。そこで、水平方向をユーザの体感に整合させるため、重力加速度ベクトルを利用した補正を行ってもよい。
【0091】
具体的には、初期化処理で得られる重力加速度ベクトルg
S(式(19))に対して、理想的な状態での(設計上での)初期座標系における重力加速度ベクトルをg
S0とする。また、初期座標系からコントローラ座標系への回転q
CSの初期値をq
CS0とする。この場合、
図6Bの方向検出部91は、回転q
CSの初期値q
CS0を、回転無しを表す1ではなく、重力加速度ベクトルのズレの分だけ回転した値に設定する。すなわち、方向検出部91は、式(6)の正規化四元数R(n
1,n
2)を用いて、初期値q
CS0を式(27)の値に設定する。これにより、ユーザの違和感を軽減することが可能になる
q
CS0=R(g
S,g
S0) …(27)
【0092】
《ディスプレイの表示形態の変形例》
図15は、
図1において、本体デバイスのディスプレイに表示される
図3とは異なる画像の一例を示す図である。
図15では、
図3に示したポインティングビーム12の代わりにカーソル13が表示される。この場合、ユーザの視線から見て、カーソル13に重なったオブジェクト(実行ボタン)11が選択対象となる。
図3の場合と同様に、ユーザは、カーソルの位置(指し位置)を、腕の方向で制御する。
【0093】
図6Bの表示制御部88は、例えば、処理上でユーザを中心とした球面を想定し、表示しないポインティングビーム12とその球面との交点にカーソル13を表示する。また、表示制御部88は、カーソル13がユーザの視認できる領域内に存在しない場合は、コントローラ3によるトリガ命令の入力を無効にしてもよい。これは、ポインティングビーム12の場合でも同様である。
【0094】
《実施の形態1の主要な効果》
以上、実施の形態1のヘッドマウント情報処理装置を用いることで、代表的には、ユーザの利便性を向上させることが可能になる。具体的には、ユーザは、
図24に示したようなコントローラ110を用いる場合と異なり、手を自由に使えるようになる。また、ユーザの動き方に応じてトリガ命令(コマンド)の数を増やすことが可能になる。なお、前述したように、このユーザの動き方に応じたトリガ命令(コマンド)は、
図24に示したようなコントローラ110に適用することも可能である。
【0095】
(実施の形態2)
《トリガ命令の変形例》
図16Aは、本発明の実施の形態2によるヘッドマウント情報処理装置において、
図6Bの操作命令変換部によるトリガ命令の判別方法の一例を示す図である。
図16Bは、
図16Aに応じた、
図6Bの表示制御部の処理内容の一例を説明する図である。
図6Bの操作命令変換部87は、コントローラ3を回転させた状態が維持された場合に、ドラッグ&ドロップの開始命令を発行し、当該回転させた状態が元に戻された場合に、ドラッグ&ドロップの終了命令を発行する。
【0096】
図16Aの例では、操作命令変換部87は、回転検出部92からの回転角R
RCが回転閾値R
RCT1を超え、
図12Aの場合と異なり、当該回転閾値R
RCT1を超えた状態が一定時間T1を超えた場合にドラッグ&ドロップの開始命令を発行する。その後、操作命令変換部87は、回転角R
RCが、ベースラインR
RC0と回転閾値R
RCT1との間のベースラインR
RC0寄りに設けた回転終了閾値R
RCEDを下回った場合に、ドラッグ&ドロップの終了命令を発行する。
【0097】
一方、ユーザは、
図16Bに示されるように、ポインティングビーム12の指し位置を所定のオブジェクト17に合わせた状態で手首を右回転し、その状態を維持する(ステップS601)。その後、ユーザは、手首の右回転を維持した状態で腕の方向を変えたのち(ステップS602)、手首の右回転を元に戻す(ステップS603)。操作命令変換部87は、ステップS601に応じてドラッグ&ドロップの開始命令を発行し、ステップS603に応じてドラッグ&ドロップの終了命令を発行する。
図6Bの表示制御部88は、ドラッグ&ドロップの開始命令からドラッグ&ドロップの終了命令までの期間で、操作命令変換部87によって発行された移動命令MV(すなわち腕の方向の変化)に応じて、ポインティングビーム12の指し位置が指すオブジェクト17の位置を移動する。
【0098】
図17は、本発明の実施の形態2によるヘッドマウント情報処理装置において、
図6Bの本体デバイスの変形例を示すブロック図である。
図17の本体デバイス2は、
図6Bの構成例に加えて、センサデータ処理部86a内に突出検出部94を備える。突出検出部94は、コントローラ3の位置・姿勢センサ5の検出結果に基づき、腕の方向(すなわち回転軸の方向)に向けたコントローラ3の移動を演算によって検出する。また、これに応じて、
図17の操作命令変換部87aは、突出検出部94によって検出されたコントローラ3の移動を、別のトリガ命令TGに変換する。
【0099】
図18は、
図17に応じた、ユーザによるコントローラの操作方法の一例を説明する図である。
図18に示されるように、ユーザは、腕の方向15(回転軸の方向)に向けて腕の突き出し操作16cを行うことで、トリガ命令を発行する。例えば、ユーザは、ポインティングビームの指し位置を対象のオブジェクトに合わせた状態で突き出し操作16cを行うことで、当該対象のオブジェクトに対してトリガ命令を発行する。
【0100】
このような突き出し操作16cは、コントローラ3内の加速度センサ30を用いて検出できる。具体的に説明すると、まず、
図17に示す原点座標検出部93は、
図6Bおよび式(16)~式(18)で述べたように、加速度センサ30からの加速度ベクトルa
Cに基づいて、初期座標系における加速度ベクトルa
S、速度ベクトルv
Sおよび原点座標O
CSを検出する。ただし、この原点座標O
CSは、検出誤差によってドリフトすることがある。
【0101】
そこで、
図17の突出検出部94は、例えば、加速度ベクトルa
Sにおける腕の方向への絶対値成分が予め定めた閾値を超えた時点で、腕の突き出し動作の開始を認識する。そして、突出検出部94は、突き出し動作の開始時点の原点座標O
CSを起点O
CS0とし、起点O
CS0を基準に、その後の原点座標O
CSの腕の方向への偏差ベクトルO
CSdを演算する。具体的には、突出検出部94は、式(4)の射影演算子P
S(n)と、初期座標系における腕の方向の単位ベクトルn
ASとを用いて、式(28)を演算する。さらに、突出検出部94は、式(29)に基づき、偏差ベクトルO
CSdのノルムDを演算する。
O
CSd=P
S(n
AS)(O
CS-O
CS0) …(28)
D=(O
CSdO
CSd
*)
1/2 …(29)
【0102】
図19は、
図17の操作命令変換部において、トリガ命令の判別方法の一例を示す図である。
図19に示されるように、操作命令変換部87aは、予め突出閾値D
Tを備える。操作命令変換部87aは、突出検出部94からのノルムDが突出閾値D
Tを超えた場合、トリガ命令(第3トリガ命令)TGを発行する。当該トリガ命令TGは、例えば、実施の形態1で述べたように、手首の右回転および左回転が第1および第2ボタンの押下に対応する場合、第3ボタンの押下に対応する。
【0103】
《実施の形態2の主要な効果》
以上、実施の形態2のヘッドマウント情報処理装置を用いることで、実施の形態1で述べた各種効果に加えて、トリガ命令(コマンド)の数を更に増やすことが可能になる。また、
図18における突き出し操作16cと、
図16Bにおけるドラッグ動作とを組み合わせて用いることも可能である。この場合、ユーザは、例えば、3D表示内でオブジェクトを移動する際に、突き出し操作16cによって3D表示内の奥行き方向へオブジェクトを移動することが可能になる。
【0104】
さらに、このドラッグ動作を利用して、HMD1は、例えば、ユーザがポインティングビームの方向を定めた状態で、手首を右または左に回転させた状態を維持すると、ビームの方向に、仮想空間内でのユーザの位置を前進(例えば左回転時)または後退(例えば右回転時)するような制御を行ってもよい。
【0105】
(実施の形態3)
《コントローラによる制御方法のその他の例》
図20は、本発明の実施の形態3によるヘッドマウント情報処理装置において、
図6Aおよび
図6Bの構成例を利用したその他の制御方法の一例を説明する図である。例えば、
図6Bの操作命令変換部87は、回転検出部92によって検出されるコントローラ3の回転の回転量(回転角R
RC)を、本体デバイス2における連続的な制御で使用される状態制御命令に変換してもよい。状態制御として、例えば、仮想空間内での回転の位置・速度制御等が挙げられる。
【0106】
図20の例では、ディスプレイ42の画像10内に、ダイヤルのオブジェクト18が表示される。ユーザは、回転操作16bに伴う手首の回転量によって、このダイヤルの回転量を操作する。この場合、操作命令変換部87は、回転量(回転角R
RC)をそのまま表示制御部88へ出力し、表示制御部88は、この回転量に応じてダイヤルの回転量の表示を逐次更新する。
【0107】
なお、ユーザは、例えば、ダイヤルのオブジェクト18にポインティングビームを合わせた状態で、突き出し操作16cを行ったのちに回転操作16bを行ってもよい。この場合、表示制御部88は、
図17の操作命令変換部87aからの突き出し操作16cに応じたトリガ命令を受けてオブジェクト18を選択し、その状態で、操作命令変換部87からの回転量(回転角R
RC)に応じてダイヤルの回転量の表示を逐次更新する。これにより、例えば、ポインティングビームがたまたま横切っただけでダイヤルの値が変更されてしまうような事態を防止できる。
【0108】
《実施の形態3の主要な効果》
以上、実施の形態3のヘッドマウント情報処理装置を用いることで、実施の形態1等で述べた各種効果に加えて、ユーザは、手首の回転操作によって本体デバイス2に対して連続的な制御(状態制御)を行うことが可能になる。
【0109】
(実施の形態4)
《コントローラの装着箇所(変形例)》
図21は、本発明の実施の形態4によるヘッドマウント情報処理装置において、コントローラの装着箇所の変形例を示す図である。ユーザは、
図21に示されるように、コントローラ3を手首ではなく、手(甲または掌位置)に巻いた状態で使用してもよい。この場合、手首に巻く場合と比較して手の自由度が低下するものの、ユーザは、掌部分の向きでポインティングビームの方向を制御できるため、腕の方向を大きく変更しなくて済む。
【0110】
ただし、この場合、手首の回転軸(腕の方向)とポインティングビームの方向を決めるコントローラ3の軸線方向が一致しない状態になり得る。このため、手首の回転を検出するために、手首部分に、別途、角速度センサ101を搭載したベルト100等を装着する方式にしてもよい。手首の角速度センサ101により手首の回転を検出した場合は、
図13Aまたは
図13Bの場合と同様に、ポインティングビームの指し位置を変化させないような制御を行ってもよい。
【0111】
図22は、
図21のヘッドマウント情報処理装置において、ディスプレイに表示される画像の一例を示す図である。コントローラ3を
図21のような箇所に装着した場合、手の位置がポインティングビームの起点になるため、手の移動により、起点の移動を行ってもよい。この場合、
図22に示されるように、起点の位置105を表示することが望ましい。手の位置は、コントローラ3内の加速度センサ30を使用して検出することができる。なお、ここでは、ユーザは、コントローラ3を手に巻いた状態で使用したが、場合によっては、指に巻いた状態で使用してもよい。
【0112】
《ユーザ座標系(変形例)》
図23は、本発明の実施の形態4によるヘッドマウント情報処理装置において、ユーザ座標系の変形例を示す図である。ユーザ座標系は、
図10に示したような本体デバイス2に固定される座標系の他に、
図23に示されるように、ユーザの胴体に固定される座標系であってもよい。
図23の例では、胴体の正面水平方向がX軸とされ、水平面内でユーザの左手方向がY軸とされ、垂直方向がZ軸とされる。
【0113】
本体デバイス2と胴体との位置関係は、例えば、本体デバイス2のカメラ40等で胴体を撮像し、画像解析を行うこと検出することができる。あるいは、胴体に、別途、姿勢センサを設置することで検出することも可能である。ポインティングビームの指し位置は、腕の方向で制御されるため、このように、胴体に固定された座標系を基準にポインティングビームを表示することで、よりユーザの体感に合った制御ができる場合がある。
【0114】
(実施の形態5)
《HMDにおけるその他の変形例》
《複合センサ》
例えば、
図5において、コントローラ3に搭載されるジャイロセンサ31の検出結果とカメラ20の撮像画像との組み合わせによって、ポインティングビームの指し位置を制御することも可能である。具体的には、例えば、コントローラ3は、カメラ20の撮像画像に基づいて、手の甲(または掌でもよい)の特徴点の方向を検出し、当該特徴点の基準点からの方向変化分を画像処理によって検出する。
【0115】
そして、
図6Bの方向検出部91は、位置・姿勢センサ5の検出結果に基づいて検出されるコントローラ3の方向に、当該カメラ20の撮像画像に基づいて検出される手の方向を加えた方向を、操作命令変換部87へ出力する。これにより、表示制御部88は、腕の方向の変化分に、手の特徴点の方向変化分を加えた分だけコントローラ座標系が回転したものとみなして、ポインティングビームの指し位置を制御する。
【0116】
詳細な処理内容として、例えば、
図6Bの方向検出部91は、変更されたコントローラ座標系の回転をq
CSMとして、式(14)で算出される回転q
CSの代わりに用いる。コントローラ座標系において、手の甲の特徴点の基準位置での単位方向ベクトルをn
H0、カメラ20の撮像画像に基づいて逐次検出される特徴点の単位方向ベクトルをn
Hとすると、基準位置からの回転q
Hは、式(6)の正規化四元数R(n
1,n
2)を用いて、式(30)で求められる。この回転q
Hは、例えば、コントローラ3のCPU22を用いて算出され、本体デバイス2へ送信される。
q
H=R(n
H0,n
H) …(30)
【0117】
回転qHは、コントローラ座標系における表現であり、初期座標系では式(31)の回転qHSで表現される。これにより、変更されたコントローラ座標系の回転qCSMは、回転qCSに回転qHSを加えて式(32)で求まる。方向検出部91は、例えば、手首の回転に応じて自身で算出した回転qCSと、コントローラ3から受信した回転qHとを用いて式(31)および式(32)を演算することで、回転qCSMを求める。
qHS=qCSqHqCS
* …(31)
qCSM=qHSqCS=qCSR(nH0,nH) …(32)
【0118】
このような複合センサを用いることにより、ユーザは、手首にコントローラ3を装着した状態で、あたかも、手の甲にコントローラ3を設置しているかのようにポインティングビームの指し位置を操作することができる。これにより、ユーザは、手の甲にコントローラ3を設置する煩わしさから解放されると共に、腕をさほど大きく動かすことなく、腕の方向と手の方向とを組み合わせてポインティングビームの指し位置を操作することが可能になる。その結果、ユーザの利便性の向上が図れる。
【0119】
《ポインティングビームの回転角制御》
前述した
図9の例では、コントローラ3の角度変化量αと、ポインティングビームの角度変化量αとが同じである場合を示したが、ポインティングビームの角度変化量は、コントローラ3の角度変化量よりも大きい、または小さくてもよい。これにより、ユーザは、例えば、腕の動きを抑えた状態でポインティングビームの指し位置を操作することや、または、指し位置をきめ細かく制御すること等が可能になる。その結果、ユーザの利便性の向上が図れる。
【0120】
詳細な処理内容として、例えば、
図6Bの表示制御部88は、コントローラ3の角度変化量に係数を掛けて、ポインティングビームの指し位置の角度変化量を制御する。具体的には、表示制御部88は、正の係数をwとして、回転q
CSの代わりに式(34)のように角度変化量をw倍に変更した回転q
CSmを使用して、ポインティングビームの指し位置を制御する。式(34)では、回転q
CSが表す角度変化量がλとされ、角度変化量λは、回転q
CSの実数部分を用いて式(33)で求まる。なお、式(33)におけるcos
-1は、0からπの値を取る。
|λ|=2cos
-1(Sc(q
CS)) …(33)
q
CSm=cos(w|λ|/2)+sin(w|λ|/2)Vc(q
CS)/sin(|λ|/2) …(34)
【0121】
《タイムアウト機能》
コントローラ3を使用するか否か(すなわちオン・オフ)を切り替える場合、明示的なスイッチ等を設けてもよいが、自動的にオン・オフを切り替える機能を設けることも可能である。具体的には、本体デバイス2は、例えば、操作命令変換部87からのトリガ命令が一定期間発行されなかった場合、タイムアウトとしてコントローラ3からの入力を無効にする。その後、コントローラからの入力を再開する場合には、例えば、ユーザに初期化コマンドを発行させる。
【0122】
例えば、作業支援等のアプリケーションを実行している場合、ユーザは、トリガ命令(コマンド)を発行する意図ではなく、手首の回転等を行うことがある。この際に、手首の回転等がトリガ命令と解釈されたら不都合が生じ得る。そこで、本体デバイス2は、トリガ命令が一定期間発行されなかった場合、コントローラ3からの入力を無効にする。これにより、ユーザの利便性の向上が図れる。
【0123】
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0124】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウエアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0125】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0126】
1:ヘッドマウント情報処理装置(HMD)、2:本体デバイス、3,3a,3b:コントローラ、5:位置・姿勢センサ、10:画像、11:オブジェクト、12:ポインティングビーム、15:コントローラの方向、16a:方向操作、16b:回転操作、16c:突き出し操作、17,18:オブジェクト、20:カメラ、21:測距センサ、22:CPU、23:メモリ、24:近接通信インタフェース、25:アンテナ、26:バス、30:加速度センサ、31:ジャイロセンサ、32:地磁気センサ、35:プログラム、36:情報データ、40:カメラ、41:測距センサ、42:ディスプレイ、43:音声出力部、44:マイク、45:位置・姿勢センサ、46:CPU、47:メモリ、48:通信インタフェース、49:アンテナ、50:近接通信インタフェース、51:アンテナ、52:バス、55:スピーカ、56:イヤホン、60:加速度センサ、61:ジャイロセンサ、62:地磁気センサ、63:GPS受信器、65:プログラム、66:情報データ、66a:座標系情報、66b:操作命令情報、70:制御部、75:センサデータ処理部、76:通信制御部、80:制御部、85:通信制御部、86:センサデータ処理部、87:操作命令変換部、88:表示制御部、89:表示調整部、91:方向検出部、92:回転検出部、93:原点座標検出部、94:突出検出部、100:ベルト、101:角速度センサ、105:起点の位置、110:コントローラ。