(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-21
(45)【発行日】2022-01-18
(54)【発明の名称】コントローラ装置の制御装置
(51)【国際特許分類】
G06F 3/01 20060101AFI20220111BHJP
【FI】
G06F3/01 514
(21)【出願番号】P 2020551712
(86)(22)【出願日】2018-10-19
(86)【国際出願番号】 JP2018039094
(87)【国際公開番号】W WO2020079852
(87)【国際公開日】2020-04-23
【審査請求日】2020-10-06
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100122275
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】久慈 拓也
【審査官】木村 慎太郎
(56)【参考文献】
【文献】国際公開第2017/150128(WO,A1)
【文献】国際公開第2018/079382(WO,A1)
【文献】国際公開第2009/020204(WO,A1)
【文献】特開2014-060482(JP,A)
【文献】国際公開第2018/150914(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
(57)【特許請求の範囲】
【請求項1】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御装置であって、
前記ユーザーの手の幅を特定する幅特定部と、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定する割り当て決定部と、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力する状態特定部と、
を含むことを特徴とするコントローラ装置の制御装置。
【請求項2】
請求項1に記載のコントローラ装置の制御装置であって、
前記幅特定部は、前記ユーザーが前記コントローラ装置を把持した状態において、前記複数のセンサーのうち前記ユーザーの指を検出しているセンサーに基づいて、前記ユーザーの手の幅を特定する
ことを特徴とするコントローラ装置の制御装置。
【請求項3】
請求項2に記載のコントローラ装置の制御装置であって、
前記幅特定部は、前記ユーザーの手の幅を特定するとともに、前記検出対象とする指のうち前記ユーザーの手の幅方向の両端の指に対応するセンサーを特定し、
前記割り当て決定部は、予め定められたテーブル内において、前記特定された両端の指に対応するセンサーに対応づけられたセンサーを、前記検出対象とする指のうち、両端の指以外の指に割り当てる
ことを特徴とするコントローラ装置の制御装置。
【請求項4】
請求項1から3のいずれか一項に記載のコントローラ装置の制御装置であって、
前記状態特定部は、前記検出対象とする指に割り当てられたセンサーの出力と、前記幅特定部によって特定された手の幅の情報と、に基づいて、対応する指の曲げ伸ばしの状態を特定する
ことを特徴とするコントローラ装置の制御装置。
【請求項5】
請求項1から4のいずれか一項に記載のコントローラ装置の制御装置であって、
前記状態特定部は、前記検出対象とする指に割り当てられたセンサー、及び割り当てがされていないセンサーの出力に基づいて、対応する指の曲げ伸ばしの方向と交差する方向への開き度合いを特定して出力する
ことを特徴とするコントローラ装置の制御装置。
【請求項6】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの指の状態を検出する複数の第1センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第2センサーと、を備えるコントローラ装置を制御する制御装置であって、
前記第2センサーの検出結果に応じて前記コントローラ装置が前記ユーザーの手に装着されているか否かを判定する判定部と、
前記判定により前記コントローラ装置が前記ユーザーの手に装着されていないと判定された場合に、前記複数の第1センサーの動作を停止させる制御部と、
を含み、
前記制御部は、前記複数の第1センサーの動作を停止させている間、前記複数の第1センサーが動作しているときよりも低い頻度で前記第2センサーを動作させる
ことを特徴とするコントローラ装置の制御装置。
【請求項7】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御方法であって、
前記ユーザーの手の幅を特定するステップと、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、
を含むことを特徴とするコントローラ装置の制御方法。
【請求項8】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御するためのプログラムであって、
前記ユーザーの手の幅を特定するステップと、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コントローラ装置を制御する制御装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
例えばバーチャルリアリティなどの技術においては、指の動きなどのジェスチャーによってユーザーからの操作入力を受け付けることがある。ユーザーの指の動きを認識するための技術の一つとして、ユーザーの手にコントローラ装置を装着させ、その表面に設けられたセンサーによってユーザーの指の状態を検出する方法が検討されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
コントローラ装置を使用するユーザーの手の大きさは、ユーザーごとにばらつきがある。そのため、コントローラ装置が想定する手の大きさと実際に装着したユーザーの手の大きさにずれがあると、ユーザーの指の状態を精度よく検出することが難しくなる。
【0004】
本発明は上記実情を考慮してなされたものであって、その目的の一つは、ユーザーの手の大きさによらずに精度よく指の状態を検出することのできるコントローラ装置の制御装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0005】
本発明の一態様に係るコントローラ装置の制御装置は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御装置であって、前記ユーザーの手の幅を特定する幅特定部と、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定する割り当て決定部と、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力する状態特定部と、を含むことを特徴とする。
【0006】
本発明の別の態様に係るコントローラ装置の制御装置は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの指の状態を検出する複数の第1センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第2センサーと、を備えるコントローラ装置を制御する制御装置であって、前記第2センサーの検出結果に応じて前記コントローラ装置が前記ユーザーの手に装着されているか否かを判定する判定部と、前記判定により前記コントローラ装置が前記ユーザーの手に装着されていないと判定された場合に、前記複数の第1センサーの動作を停止させる制御部と、を含むことを特徴とする。
【0007】
また、本発明の一態様に係るコントローラ装置は、ユーザーの手に装着されるコントローラ装置であって、前記ユーザーの指の状態を検出する複数の第1センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第2センサーと、当該コントローラ装置を前記ユーザーの手に固定する固定具と、を備え、前記第2センサーは、前記固定具の内側を検出範囲とするように配置されていることを特徴とする。
【0008】
本発明の一態様に係るコントローラ装置の制御方法は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御方法であって、前記ユーザーの手の幅を特定するステップと、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、を含むことを特徴とする。
【0009】
本発明の一態様に係るプログラムは、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御するためのプログラムであって、前記ユーザーの手の幅を特定するステップと、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、をコンピュータに実行させるためのプログラムである。このプログラムは、コンピュータ読み取り可能で非一時的な情報記憶媒体に格納されて提供されてよい。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施の形態に係る制御装置を含む情報処理システムの構成ブロック図である。
【
図2】コントローラ装置の外観の一例を示す図である。
【
図4】キャリブレーション実行時のユーザーの手の状態の一例を示す図である。
【
図5】近接センサーの対応テーブルの一例を示す図である。
【
図7】ユーザーの指の回転角を定義したテーブルの一例を示す図である。
【
図9】本発明の変形例に係るコントローラ装置の背面側の斜視図である。
【
図10】本発明の変形例に係るコントローラ装置の正面側の斜視図である。
【
図11】本発明の変形例に係るコントローラ装置による検出値の一例を示すグラフである。
【
図12】本発明の変形例に係るコントローラ装置による検出値の平均値の一例を示すグラフである。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、図面に基づき詳細に説明する。
【0012】
図1は、本発明の一実施形態に係る制御装置を含む情報処理システム1の全体概要を示す構成ブロック図である。同図に示されるように、情報処理システム1は、情報処理装置10と、コントローラ装置30と、頭部装着型の表示装置40と、を含んで構成されている。本実施形態では、情報処理装置10がコントローラ装置30を制御する制御装置として機能する。
【0013】
情報処理装置10は、コントローラ装置30による検出結果を処理する装置であって、例えば家庭用ゲーム機、携帯型ゲーム機、パーソナルコンピューター、スマートフォン、タブレット等であってよい。
図1に示されるように、情報処理装置10は、制御部11と、記憶部12と、インタフェース部13と、を含んで構成される。
【0014】
制御部11は、CPU等のプロセッサを少なくとも一つ含み、記憶部12に記憶されているプログラムを実行して各種の情報処理を実行する。なお、本実施形態において制御部11が実行する処理の具体例については、後述する。記憶部12は、RAM等のメモリデバイスを少なくとも一つ含み、制御部11が実行するプログラム、及び当該プログラムによって処理されるデータを格納する。
【0015】
インタフェース部13は、コントローラ装置30、及び表示装置40との間のデータ通信のためのインタフェースである。情報処理装置10は、インタフェース部13を介して有線又は無線のいずれかでコントローラ装置30、及び表示装置40のそれぞれと接続される。具体的にインタフェース部13は、情報処理装置10が供給する映像データを表示装置40に送信するために、HDMI(登録商標)(High-Definition Multimedia Interface)等のマルチメディアインタフェースを含むこととする。また、コントローラ装置30による検出結果を示す信号を受信するために、USB(Universal Serial Bus)等のデータ通信インタフェースを含んでいる。
【0016】
コントローラ装置30は、ユーザーの手に装着され、その指の動きを検出するためのデバイスである。
図2は、コントローラ装置30の外観の一例を示している。この図の例では、コントローラ装置30は本体部31と固定具32とを備えており、ユーザーは自身の手のひらをこの固定具32に通すことによってコントローラ装置30を自身の手に装着する。なお、固定具32はユーザーの手の大きさに合わせて長さを調整可能なベルト等によって構成されてよい。
【0017】
本体部31の筐体表面には、ユーザーの指の動きを検出するために、複数の近接センサー33が配置されている。近接センサー33は、例えば赤外線センサーや静電センサーなど、検出範囲内に存在する物体までの距離を計測可能なセンサーである。この近接センサー33の検出結果を用いて、情報処理装置10は検出対象となるユーザーの各指の位置を特定する。本実施形態において近接センサー33の検出対象とされる指は、ユーザーがコントローラ装置30を装着した手の、親指を除いた人差し指、中指、薬指、小指の4本の指であることとする。なお、ここではユーザーはいずれか一方の手にコントローラ装置30を装着することとしているが、ユーザーは左右両方の手にそれぞれコントローラ装置30を装着してもよい。
【0018】
コントローラ装置30の表面に配置される近接センサー33の数は、検出対象とする指の数(4本)よりも多くなっている。具体的に、近接センサー33は、ユーザーがコントローラ装置30を装着した状態において検出対象の指と相対する位置に、本体部31の長手方向(すなわち、ユーザーの手のひらの幅方向)に沿って並んで配置されている。配置される近接センサー33の数、及び配置間隔は、並んで配置された複数の近接センサー33の全体によってカバーされる検出範囲が、ユーザーの手のひらの幅を超える範囲となるように決定されている。本実施形態では、
図2に示すように合計12個の近接センサー33が等間隔に並んで配置されていることとする。以下ではコントローラ装置30の長手方向をY軸方向とし、ユーザーの人差し指側の方向をY軸正方向、小指側をY軸負方向とする。12個の近接センサー33は、このY軸方向に沿って直線上に並んで配置されている。また、以下では12個の近接センサー33を、Y軸正方向側から負方向に向かって順に近接センサー33-1~33-12と表記する。
【0019】
コントローラ装置30の近接センサー33とは別の位置には、ユーザーがコントローラ装置30を装着したことを検出するための装着センサー34が配置されている。装着センサー34は、近接センサー33と同種の近接センサーであってもよいし、温度センサーなど、人の身体の存在を検知する別の種類のセンサーであってもよい。装着センサー34は、ユーザーがコントローラ装置30を装着した際にその装着した手の存在を検出可能な位置に配置される。本実施形態では、装着センサー34は固定具32に向かう方向を検出範囲とするように配置されている。これにより、ユーザーが自身の手のひらを固定具32に通した際に装着センサー34は確実にユーザーの手のひらの存在を検出することができ、一方でコントローラ装置30が机上に置かれた際など、ユーザーがコントローラ装置30を装着していないときにユーザーの手以外の物体を誤検出しにくくすることができる。
【0020】
さらにコントローラ装置30は、制御回路35を内蔵している。制御回路35は、複数の近接センサー33のそれぞれによる検出結果の内容を示す信号を、情報処理装置10に送信する。また、制御回路35は、近接センサー33の動作状態を制御する。
【0021】
表示装置40は、ユーザーが頭部に装着して使用する映像表示装置であって、情報処理装置10から送信される映像信号に応じた映像を表示して、ユーザーに閲覧させる。
【0022】
次に、情報処理装置10が実現する機能について
図3を用いて説明する。
図3に示すように、情報処理装置10は、機能的に、キャリブレーション処理部51と、指状態特定部52と、映像表示制御部53と、コントローラ装置状態検出部54と、を含んでいる。さらにキャリブレーション処理部51は、手幅特定部51aと、センサー割り当て決定部51bと、を含んでいる。これらの機能は、制御部11が記憶部12に記憶されたプログラムを実行することにより実現される。このプログラムは、インターネット等の通信ネットワークを介して情報処理装置10に提供されてもよいし、光ディスク等のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
【0023】
キャリブレーション処理部51は、ユーザーがコントローラ装置30の使用を開始するタイミングや、ユーザーが指示したタイミングなどにおいて、キャリブレーション処理を実行する。ここでのキャリブレーション処理は、ユーザーの検出対象となる指のそれぞれについて、その指の状態を特定するために使用する近接センサー33を複数の近接センサー33の中から選択する処理である。
【0024】
手幅特定部51aは、ユーザーがコントローラ装置30を装着した際の、手の幅に相当する範囲を特定する。人の手の大きさやコントローラ装置30の装着の仕方には、個人差がある。そのため、ユーザーがコントローラ装置30を装着した状態において検出対象となる各指がどこに存在するか、予め明確でない。そこで本実施形態では、手幅特定部51aが、ユーザーがコントローラ装置30を装着した状態において、ユーザーの手が実際に存在する範囲がどこからどこまでかを特定する。そして、センサー割り当て決定部51bが、手幅特定部51aの特定結果に基づいて、検出対象となる指のそれぞれに対応する近接センサー33を決定する。
【0025】
より具体的に、手幅特定部51aは、ユーザーがコントローラ装置30を装着した状態で、ユーザーの手の指のうち、手の幅方向の両端を占める指(すなわち、人差し指と小指)の位置を特定する。この人差し指から小指までの範囲が、ユーザーの手の幅に相当する。例えば手幅特定部51aは、キャリブレーション処理を実行する際に、ユーザーにコントローラ装置30の本体部31を握るよう促すメッセージを出力する。そのメッセージに応じてユーザーが自身の手でコントローラ装置30の本体部31を把持した状態において、手幅特定部51aは各近接センサー33の出力を取得する。この状態において、所定距離未満の位置に物体の存在を検出した近接センサー33のうち、最もY軸正方向側に位置する近接センサー33が、ユーザーの人差し指の位置に対応していると推定される。同様に、物体の存在を検出した近接センサー33のうち、最もY軸負方向側に位置する近接センサー33の位置が、ユーザーの小指の位置に対応すると推定される。
【0026】
なお、手幅特定部51aは、単純に所定距離未満の物体を検出した両端の近接センサー33がユーザーの手の両端に対応すると判定するのではなく、隣接する複数の近接センサー33の検出値に基づいてユーザーの手の両端に対応する近接センサー33を特定してもよい。具体例として、キャリブレーション時の検出値が所定の第1閾値以上となる最もY軸負方向側に位置する近接センサー33をまず注目センサーとして特定する。そして、注目センサーのY軸負方向側に隣接して配置された近接センサー33の検出値が第1閾値より小さな第2閾値を超えていれば、注目センサーを小指に対応する近接センサー33として特定する。一方、注目センサーに隣接する近接センサー33の検出値が第2閾値以下であれば、注目センサーのY軸正方向側に配置された一つ隣の近接センサー33を、小指に対応する近接センサー33として特定する。また、人差し指に対応する可能性がある近接センサー33については、その検出値に各近接センサー33の位置に応じて予め定められた補正値を加えた値を算出する。そして、算出された値の大きさが最も大きくなる近接センサー33を、人差し指に対応する近接センサー33として特定する。このように、隣接する複数の近接センサー33の検出値を考慮することで、より精度よく人差し指や小指がどの位置に存在するか推定することができる。なお、ここでは検出値が大きいほど近接センサー33に近い位置でユーザーの指が検出されたことを示している。
【0027】
図4は、キャリブレーション実行時におけるコントローラ装置30を装着したユーザーの手の状態の一例を示している。この図の例では、ユーザーがコントローラ装置30の本体部31を握った状態で、近接センサー33-2~33-8がユーザーの指を検出して比較的大きな検出値すると想定される。この場合、手幅特定部51aは、近接センサー33-2がユーザーの人差し指に、近接センサー33-8が小指に、それぞれ対応すると判断する。すなわち、ユーザーの手は、近接センサー33-2の位置から近接センサー33-8の位置までの範囲に存在すると特定される。
【0028】
センサー割り当て決定部51bは、手幅特定部51aによる特定結果に基づいて、複数の近接センサー33の中から、検出対象となる各指の位置を検出するために使用するセンサーを決定する。つまり、検出対象となる指のそれぞれについて、その指に割り当てる近接センサー33を決定する。
【0029】
具体的にセンサー割り当て決定部51bは、人差し指、及び小指については、手幅特定部51aによってそれぞれの指に対応すると特定された近接センサー33を、その指に割り当てる近接センサー33として決定する。中指、及び薬指については、予め記憶部12内に記憶されている近接センサー33の対応テーブルを参照して、人差し指、及び小指に割り当てられた近接センサー33に対応づけられた対応情報を読み出す。そして、この対応情報に従って各指の割り当てを決定する。
【0030】
図5は、この例における近接センサー33の対応テーブルの一例を示している。この図の例では、ユーザーの人差し指は近接センサー33-1、又は33-2のいずれかに対応し、小指は近接センサー33-4~33-12のいずれかに対応するものと想定している。この対応テーブルでは、人差し指から小指まで各指の間隔が概ね等間隔となるように、中指、及び薬指に対応する近接センサー33の対応情報が格納されている。センサー割り当て決定部51bは、この対応テーブルにおいて、手幅特定部51aによる人差し指、及び小指の位置の特定結果に基づいて、中指、及び薬指のそれぞれに割り当てる近接センサー33を決定する。例えば人差し指が近接センサー33-2に、小指が近接センサー33-8に、それぞれ対応すると特定されていた場合、センサー割り当て決定部51bは、中指に近接センサー33-5を、薬指に近接センサー33-7を、それぞれ割り当てる。
【0031】
なお、この対応テーブルは、事前に様々な手の大きさの複数のユーザーにコントローラ装置30を使用してもらい、その際の近接センサー33による検出結果をサンプリングすることによって決定されてよい。
【0032】
以上の説明では、キャリブレーション処理部51はユーザーがコントローラ装置30の使用を開始したタイミングなど、特定のタイミングでキャリブレーション処理を実行することとした。しかしながらこれに限らず、キャリブレーション処理部51はユーザーがコントローラ装置30を使用している間に自動的にキャリブレーション処理を実行してもよい。具体的にキャリブレーション処理部51は、コントローラ装置30が使用されている間、各近接センサー33の検出結果をモニタする。そして、ある近接センサー33によって、所定閾値以上の大きさの検出値が所定回数以上検出された場合、その近接センサー33の位置にユーザーの手指が存在すると判定する。このような判定を各近接センサー33について実行することによって、手幅特定部51aは、キャリブレーションのために意図的にユーザーにコントローラ装置30を握る動作を実施させなくとも、ユーザーの手の幅を特定することができる。
【0033】
指状態特定部52は、近接センサー33の検出結果を用いて、検出対象となるユーザーの各指の曲げ伸ばしの状態を特定する。ここで指状態特定部52は、キャリブレーション処理部51によって検出対象となる指のそれぞれに割り当てられた近接センサー33の検出結果に基づいて、対応する指の曲げ伸ばしの状態、すなわちユーザーがその指をどの程度曲げているかを判定する。
【0034】
例えばキャリブレーション処理部51によって薬指に近接センサー33-7が割り当てられた場合、指状態特定部52は、近接センサー33-7の検出値を所与の変換テーブルに従って変換することによって、ユーザーの薬指の曲げ量を特定する。その他の検出対象の指についても同様に、対応する近接センサー33の検出値に基づいてその指の曲げ量を特定する。ここでの曲げ量は、各指をまっすぐ伸ばして手のひらを開いた状態から、各指の先端を手のひらに近づける向きにどの程度折り曲げているかを示す値である。
【0035】
近接センサー33の検出結果は検出される物体までの距離に対応するので、検出された距離が大きい場合にはユーザーがその指を伸ばしており、距離が小さい場合にはその指を曲げていると推定される。この近接センサー33の検出値とユーザーの指の曲げ量との対応関係を示す変換テーブルは、予め実際に測定を行った結果に基づいて記憶部12内に記憶されるものとする。
【0036】
なお、指状態特定部52は、各近接センサー33の検出結果を用いてユーザーがどの程度指を曲げているか判定する際に、手幅特定部51aによって特定された手の幅の情報を利用してもよい。一般的に、手の幅が大きい人は指の長さも長く、手の幅が小さい人は指の長さも短くなる傾向がある。そして、指の長さによって、同じ程度指を曲げたとしても近接センサー33の検出結果に相違が生じる。具体的に、指の長さが短い人ほど、小さい指の曲げ量でも近接センサー33までの距離が近くなると推定される。そこで指状態特定部52は、各指に対応する近接センサー33の検出結果に基づいて判定される指の曲げ量の数値を、ユーザーの手の幅に応じて補正する。あるいは、手の幅の特定結果に応じて、予め複数の変換テーブルが用意されてもよい。この場合、指状態特定部52は、手幅特定部51aの特定結果を参照して使用する変換テーブルを決定し、その変換テーブルに従って対応する近接センサー33の検出値を指の曲げ量に変換する。
【0037】
また、指状態特定部52は、近接センサー33の検出結果を用いてユーザーの指の開き度合いを判定してもよい。
図4に例示されるように、キャリブレーション処理の実行時にはユーザーはコントローラ装置30を自身の手で握るようにして保持するため、検出対象となる各指は閉じられ、互いの間隔は近づいている。一方、コントローラ装置30の使用中、
図6に例示するように、ユーザーは各指が互いに離れるように手を開くこともあり得る。このとき、小指などの手の端の指は、指の付け根部分を回転中心として、手のひらに向かって横方向(指の曲げ伸ばしの方向と交差する方向)に向かって回転する。その結果、手の端の指は、センサー割り当て決定部51bによって割り当てられた近接センサー33よりもさらに外側に配置された近接センサー33の方に近づくことになる。そこで指状態特定部52は、センサー割り当て決定部51bによって割り当てられた近接センサー33とは別の近接センサー33の検出結果を利用して、ユーザーの指の開き度合いを判定する。
【0038】
具体的に、指状態特定部52は、キャリブレーション処理部51によって小指に割り当てられた近接センサー33の外側(Y軸負方向側)に配置された所定の近接センサー33の検出結果に基づいて、指の開き度合いを判定する。例えば小指に割り当てられた近接センサー33が近接センサー33-8の場合、ユーザーが指を開かなければ、コントローラ装置30の使用中、近接センサー33-9~33-12は何も物体を検出しないか、あるいは近接センサー33-8よりも遠い位置に物体(小指)が存在すると検出するはずである。これに対して、ユーザーが指を開いて小指を人差し指と逆方向に回転させた場合、小指に割り当てられた近接センサー33-8の外側に位置する近接センサー33-9や近接センサー33-10は、指を開いていないときよりも近い位置に物体の存在を検出すると想定される。そこで指状態特定部52は、このように小指に割り当てられた近接センサー33の外側に位置する近接センサー33(例えば近接センサー33-10)の検出結果を用いて、ユーザーの指の開き度合いを推定できる。
【0039】
より詳細な例として、小指に割り当てられた近接センサー33の検出値をx1、その二つ外側(Y軸負方向側)に配置された近接センサー33の検出値をx2とした場合、指状態特定部52は、小指の回転角θを以下の計算式で計算してよい。
θ=θmax・x2/(x1+x2)
ここでθmaxは、予め定義された小指の最大の回転角の値である。x1に対してx2が大きくなるほど、小指はより外側に開いていると想定される。そのため、この計算式に示すようにx1+x2に対するx2の比に回転角の最大値を乗じることによって、小指の回転角を0からθmaxまでの範囲で算出できる。
【0040】
なお、人が指を開いた際に各指が最大でどの程度回転するか、また各指がどのように連動して回転するかは、予め定義されてよい。具体的に、ここでは、ユーザーは4本の指を互いに連動するように開くものと想定している。ユーザーが指を開こうとした場合、小指が外側(人差し指と反対側)に回転するとともに、薬指も同じ方向に小指よりは少ない回転量で回転し、人差し指は小指や薬指とは逆方向(小指と反対側)に回転すると推定される。なお、ここでは中指は手の開きによる回転はしないと想定している。このような回転方向、及び回転量を定義した定義情報と、近接センサー33の検出結果から特定される小指の回転角の情報とを利用することで、指状態特定部52は、小指以外の他の指の開き具合(回転量)も算出できる。
図7は、このような各指の回転角の最大値と回転量の比率の一例を示している。
【0041】
映像表示制御部53は、ユーザーに提示すべき映像を描画し、表示装置40に対して出力する。本実施形態において映像表示制御部53は、各種オブジェクトが配置された仮想空間内の様子を示す映像を描画することとする。特に映像表示制御部53は、指状態特定部52によって特定されるユーザーの指の曲げ伸ばし状態に連動して変化する手オブジェクトを仮想空間内に配置し、その様子を描画することとする。これにより、ユーザーがコントローラ装置30を装着した自身の手の指を曲げたり伸ばしたり開いたりする動作を行うと、その指の動きと同じように仮想空間内の手オブジェクトを動作させることができる。そのためユーザーは、あたかも自分の手で直接仮想空間内の他のオブジェクトを触ったり掴んだりしているかのような体験をすることができる。
【0042】
なお、手オブジェクトを構成する各指を指状態特定部52によって特定された状態(目標状態)に変化させる場合、瞬時にその目標状態に変化させるのではなく、単位時間ごとの指の回転量や移動量を所定量以下に抑えることとし、各指を徐々に変化させるようにしてもよい。これにより、映像表示制御部53がユーザーに提示する映像内における指のカクツキを抑え、自然に手オブジェクトを変化させることができる。
【0043】
コントローラ装置状態検出部54は、コントローラ装置30の状態を検出し、その検出結果に応じて各種の制御を行う。具体的にコントローラ装置状態検出部54は、ユーザーがコントローラ装置30を装着したり取り外したりした際に、そのようなイベントを検出する。そして、その検出結果に応じて近接センサー33の動作状態を変化させる制御を行う。
【0044】
コントローラ装置状態検出部54は、装着センサー34の検出結果を受け付けることで、ユーザーがコントローラ装置30を装着したり取り外したりしたことを検出する。前述したように、装着センサー34はユーザーがコントローラ装置30を装着した際にその手を検出可能な位置に配置されている。そのため、ユーザーがコントローラ装置30を装着したり取り外したりすると、その検出結果に変化が生じる。
【0045】
ユーザーがコントローラ装置30を取り外した場合、それ以降近接センサー33の検出結果を用いてユーザーの指の状態を特定することはできなくなる。このような場合に近接センサー33を動作させ続けると、不要な電力消費が生じたり、コントローラ装置30が置かれたテーブルなどの物体をユーザーの指と誤検出したりする可能性があり、好ましくない。そこでコントローラ装置状態検出部54は、コントローラ装置30の取り外しが検出された場合、近接センサー33の動作を停止させる制御命令をコントローラ装置30に対して出力する。コントローラ装置30の制御回路35は、この制御命令に応じて近接センサー33への電力供給を停止したりすることで、近接センサー33の動作を停止させる。これにより、近接センサー33による誤検出や不要な電力消費を防止できる。
【0046】
また、コントローラ装置状態検出部54は、コントローラ装置30の取り外しが検出された場合、実行中のアプリケーションプログラムに対して、処理の中断を指示してもよい。ユーザーがコントローラ装置30を取り外している間は、ユーザーの手の動きに応じた処理を実行することはできなくなるためである。具体的には、指状態特定部52によるユーザーの指の状態を特定する処理が中断され、映像表示制御部53による手オブジェクトの制御も中断される。
【0047】
さらに映像表示制御部53は、コントローラ装置状態検出部54がコントローラ装置30の取り外しを検出した場合、その指示に応じて、処理が中断されたことを示す画面表示を行ってもよい。また、コントローラ装置30の再装着を促すメッセージを表示してもよい。
図8はこのようなメッセージ表示画面の一例を示している。
【0048】
コントローラ装置30の装着や取り外しを検出するために、装着センサー34はコントローラ装置30が装着されている間も取り外されている間も動作させ続ける必要がある。つまり、前述したように近接センサー33の動作を停止させている間も装着センサー34を動作させる必要がある。ただし、リアルタイムで指の状態検出に使用される近接センサー33と比較して、装着センサー34がユーザーの手の存在を検出する頻度はそれほど高くなくてよい。そのため、例えば1秒ごとなど、比較的低い頻度で装着センサー34を動作させることによって、近接センサー33の動作を停止している間の消費電力を抑えることができる。
【0049】
以上説明したように、本発明の実施の形態に係る情報処理装置10によれば、ユーザーの手の大きさの個人差にかかわらずユーザーの各指の動きを精度よく特定することができる。また、装着センサー34の検出結果を利用することで、ユーザーがコントローラ装置30を取り外している間、近接センサー33による誤検出や不要な電力消費を抑えることができる。
【0050】
なお、本発明の実施の形態は以上説明したものに限られない。例えば以上の説明では、ユーザーの指の状態を検出するために使用する近接センサー33の検出結果を利用してユーザーの手の幅を特定することとしたが、ユーザーの手の幅はその他の方法で特定されてもよい。一例として、ユーザーの手の端部を検出するために、近接センサー33とは別のセンサーをコントローラ装置30の筐体表面に配置してもよい。また、手幅特定部51aは固定具32の状態に応じてユーザーの手の幅を特定してもよい。ユーザーが固定具32のベルトの長さを調節して自身の手にコントローラ装置30を装着する場合、そのベルトの調節の結果はユーザーの手の大きさを反映していると想定される。そのため、調節されたベルトの状態を検出することで、ユーザーの手の幅を推定できる。
【0051】
また、以上の説明では装着センサー34は本体部31の固定具32に向けられた側に配置されることとしたが、装着センサー34はその他の位置に配置されてもよい。例えば、前述した近接センサー33とは別に設けられたユーザーの手の幅を検出するためのセンサーを、装着センサー34として利用してもよい。また、装着センサー34は固定具32に配置されてもよい。いずれの場合にも、近接センサー33とは別のユーザーの手の存在を検出可能な位置に装着センサー34を配置することで、ユーザーの指の状態によらず、ユーザーがコントローラ装置30を装着しているか否かを検出することができる。なお、装着センサー34は、コントローラ装置30が机に置かれている状態など、ユーザーがコントローラ装置30を装着していない状態において、他の物体をユーザーの手と誤検出してしまわないような位置に配置することが望ましい。
【0052】
また、以上の説明において情報処理装置10が実行することとした処理の少なくとも一部は、コントローラ装置30内の制御回路35によって実行されてもよい。例えば制御回路35は、装着センサー34の検出結果に応じた近接センサー33の動作停止制御を、情報処理装置10からの制御命令によらずに自身で実行してもよい。また、以上の説明においてキャリブレーション処理部51や指状態特定部52が実行することとした処理を制御回路35が実行し、その結果を情報処理装置10に送信してもよい。
【0053】
[変形例]
以下、これまでの説明におけるコントローラ装置30とは異なる態様で近接センサーが配置された変形例について、説明する。
図9及び
図10は、本変形例に係るコントローラ装置60の外観の一例を示しており、
図9が背面側の斜視図を、
図10が正面側の斜視図を、それぞれ示している。本変形例に係るコントローラ装置60は、
図2に示したコントローラ装置30と同様に本体部61と固定具62とを含んで構成されており、本体部61は全体として円柱状の形状を有している。コントローラ装置30と同様に、ユーザーは固定具62に自身の手のひらを通すことによってコントローラ装置60を装着する。
【0054】
本体部61の表面には、複数のセンサーアレイ63が配置されている。具体的に本実施形態では、合計6個のセンサーアレイ63a~63fが本体部61表面に配置されることとする。各センサーアレイ63は、細長い矩形の形状を有しており、本体部61の長手方向に沿って互いに平行な向きで配置されている。すなわち、各センサーアレイ63は、ユーザーがコントローラ装置60を手に装着した際の手のひらの幅方向に沿って配置されていることになる。
【0055】
また、これらのセンサーアレイ63は、本体部61の周方向に沿って並んで配置されている。特にセンサーアレイ63b~63fの5個のセンサーアレイ63は、互いに隣接するように配置されている。これに対してセンサーアレイ63aは、本体部61の固定具62が取り付けられている位置に沿って、固定具62と相対するように配置されている。このような配置によれば、ユーザーがコントローラ装置60を装着した状態において、必ずセンサーアレイ63aがユーザーの手のひらと相対するようにする。また、センサーアレイ63b~63fは、ユーザーの手のひら側から指の先端に向かう指の延伸方向に沿って、ユーザーの手の指と向き合う位置に順に並ぶことになる。
【0056】
各センサーアレイ63は、直線上に並んで配列された複数のセンサーエレメントを含んでいる。個々のセンサーエレメントは、それぞれ独立に物体の位置を検出可能な近接センサーとして機能する。各センサーアレイ63は、例えば自己容量式の静電センサーアレイなどであってよい。以下では具体例として、各センサーアレイ63は、計40個のセンサーエレメントを含むこととする。すなわち、6個のセンサーアレイ63に含まれる総計240個のセンサーエレメントによって、一度の測定で240個の検出値が得られることになる。なお、以下では説明の便宜のために、各センサーエレメントの検出値Vを、当該センサーエレメントが属するセンサーアレイ63を特定するアルファベットと、当該センサーエレメントの番号と、の組み合わせによって参照することとする。ここでセンサーエレメントの番号は、コントローラ装置60を装着した際のユーザーの親指側から小指側に向かう向きに数えて当該センサーエレメントがセンサーアレイ63内において何番目に配置されているかを表す1~40のいずれかの数字であることとする。例えばセンサーアレイ63aの親指側から数えて5番目のセンサーエレメントによる検出値は、Va5と表記する。
【0057】
本変形例では、コントローラ装置60と接続される情報処理装置10の手幅特定部51aは、固定具62に相対するセンサーアレイ63aの検出値Va1~Va40を用いて、ユーザーの手の幅を特定する。具体的に、例えば手幅特定部51aは、所定の閾値以上の検出値が検出されたセンサーエレメントのうち、両端に最も近い位置に配置されたセンサーエレメントの位置が、ユーザーの手の両端の位置であると推定する。また、手幅特定部51aは、前述したコントローラ装置30の場合と同様に、隣接する複数のセンサーエレメントの検出値に基づいてユーザーの手の両端に対応するセンサーエレメントを特定してもよい。
【0058】
なお、前述したように、固定具62によってユーザーの手のひらが固定された状態では、常にセンサーアレイ63aはユーザーの手のひらに相対することになる。そのため本変形例では、キャリブレーション処理のためにユーザーに手で本体部61を握り込むような動作を実行させる必要がなく、任意のタイミングでセンサーアレイ63aの検出結果を取得し、手の幅を特定することができる。
【0059】
手の幅が特定されれば、前述したコントローラ装置30の場合と類似の処理によって、センサー割り当て決定部51bがセンサーエレメントと検出対象とする指との対応関係(すなわち、各センサーアレイ63内の何番目のセンサーエレメントが検出対象の指と対応するか)を特定することができる。具体例として、人差し指が常に同じセンサーエレメントの位置にあると想定する場合、この人差し指の位置と、特定された手の幅の情報と、から小指の位置が決定される。そして、人差し指の位置と小指の位置とに基づいて、各指の間の最低間隔(各指の間に存在すると想定されるセンサーエレメントの下限値)が算出される。そして、この最低間隔に従って中指、及び小指の位置が特定される。一例として、各指の間の最低間隔が5と算出された場合(すなわち、各指の間にセンサーエレメントが少なくとも5個存在すると推定された場合)、人差し指の位置に対応するセンサーエレメントから小指側に向かって6番目の位置にあるセンサーエレメントが中指に対応すると特定される。また、小指の位置に対応するセンサーエレメントから人差し指側に向かって6番目の位置にあるセンサーエレメントが薬指に対応すると特定される。
【0060】
さらに本変形例では、本体部61の周方向に沿って5個のセンサーアレイ63b~63fが配置されている。そのため、これらのセンサーアレイ63b~63fに含まれる、同じ番号が付与された(すなわち、ユーザーの手の幅に沿った方向の位置が互いに対応する)センサーエレメントによって検出される検出値を用いて、各指の曲げ伸ばし状態を特定することとする。具体例として、親指側から数えて3番目のセンサーエレメントが人差し指に対応すると特定された場合、センサーアレイ63b~63fそれぞれの3番目のセンサーエレメントの検出値Vb3,Vc3,Vd3,Ve3及びVf3を平均して得られる平均値を用いて、人差し指の曲げ伸ばし状態を特定する。
【0061】
また、本変形例では、手幅特定部51aによる特定結果を用いて検出対象とする指に対応するセンサーエレメントを決定するのではなく、センサーアレイ63b~63fの検出値そのものに基づいて指の位置を特定してもよい。この場合の具体例について、以下に説明する。
【0062】
図11は、あるタイミングで5個のセンサーアレイ63b~63fによって検出された検出値の具体例を示すグラフである。また、
図12はこれらのセンサーアレイ63の検出値を番号ごと(すなわち、ユーザーの手の幅に沿った方向の位置が互いに同じセンサーエレメントごと)に平均した値のグラフを示している。
図12のグラフにおけるn番目の平均値は、各センサーアレイ63のn番目の検出値Vbn,Vcn,Vdn,Ven及びVfnの平均値になる。このような手法によれば、指状態特定部52は、手の幅と無関係に各指の位置、及び曲げ伸ばしの状態を特定することができる。
【0063】
図12のグラフに示されるように、センサーエレメントの検出値のグラフには、ユーザーの指に対応して4個のピークが現れる。このピーク位置が、ユーザーの指の位置を示していると推定される。また、ピークの値(当該位置の検出値の平均値)が、指の曲げ伸ばし量を示すと推定される。このように、複数のセンサーアレイ63の検出値を考慮する場合、検出値のピークを特定できるため、このピーク位置によってユーザーの指の位置を推定できる。なお、この例においても、前述した各指の間の最低間隔を考慮して、各指に対応するセンサーエレメントを決定してもよい。例えば、各指の最低間隔が維持される範囲で、最も平均値が大きな位置のセンサーエレメントを、ユーザーの指に対応するセンサーエレメントと推定してもよい。
【0064】
また、以上説明したような方法でユーザーの指の位置、及び指の曲げ伸ばし状態を特定する場合、同じタイミングで取得されたセンサーアレイ63aの検出値を用いて、ユーザーの手の幅を特定することができる。そのため、この手の幅から推定されるユーザーの各指の位置と、センサーアレイ63b~63fの検出値によって特定される各指の位置との関係によって、ユーザーが指を開いているか閉じているかを推定することができる。具体的に、手のひらに相対するセンサーアレイ63aの検出値に基づいて、ユーザーの各指の付け根の位置が推定される。一方、手の指に相対するセンサーアレイ63b~63fの検出値を用いて、各指の先端の位置が推定される。この付け根の位置と先端の位置との関係から、ユーザーの手の各指の開き度合い(手のひらに平行な向きの回転角)を算出することができる。なお、センサーアレイ63b~63fの検出値によって特定された指の位置が、初期状態においてセンサーアレイ63aの検出値に基づいて推定される指の位置から大きくずれた場合、リセット制御を行い、センサーアレイ63aの検出値に基づく手の幅の特定をやり直してもよい。
【0065】
なお、以上の説明ではユーザーの指に相対する全てのセンサーアレイ63b~63fの検出値を番号ごとに単純平均した平均値を用いて、検出対象となる指の位置、及び/又は状態を特定することとした。しかしながらこれに限らず、例えば合計値や最大値など、その他の統計値を利用して指の位置や状態を特定してもよい。また、所与の重み付け係数を用いて重み付け平均を行うなど、異なる計算式によって得られた値を用いて、指の位置や状態を特定してもよい。また、各種の条件に応じて、複数のセンサーアレイ63b~63fのうち一部のセンサーアレイ63によって得られる値を用いて指の状態を特定してもよい。また、センサーアレイ63aの検出結果などに応じて、各指の位置や状態を特定するために使用するセンサーエレメントを一部のセンサーエレメントに制限してもよい。例えば、センサーアレイ63b~63fのそれぞれに配置されるセンサーエレメントのうち、指の状態の特定に使用するセンサーエレメントを特定の範囲に制限する。また、比較的高い精度が要求されない場合などにおいては、例えば一つおきや二つおきなど、等間隔に配置された一部のセンサーエレメントの計測結果のみを用いてユーザーの指の状態を特定してもよい。
【0066】
また、本変形例では、センサーアレイ63aを、ユーザーが手にコントローラ装置60を装着したか否かを特定するための装着センサーとして利用することができる。具体的にコントローラ装置状態検出部54は、一定の時間間隔でセンサーアレイ63a内のセンサーエレメントの検出値を取得し、その検出値が所与の閾値未満であれば、ユーザーがコントローラ装置60を装着していないと判断できる。そこでコントローラ装置状態検出部54は、ユーザーがコントローラ装置60を取り外したと推定される場合、センサーアレイ63b~63fの動作を停止させる制御命令を出力してもよい。また、センサーアレイ63aの検出値に基づいてユーザーがコントローラ装置60を装着したと判定した場合、センサーアレイ63b~63fの動作を開始させる制御命令を出力する。これにより、ユーザーがコントローラ装置60を装着していない間、不要な電力消費やセンサーアレイ63による誤検出を防止することができる。
【符号の説明】
【0067】
1 情報処理システム、10 情報処理装置、11 制御部、12 記憶部、13 インタフェース部、30 コントローラ装置、31 本体部、32 固定具、33 近接センサー、34 装着センサー、35 制御回路、40 表示装置、51 キャリブレーション処理部、51a 手幅特定部、51b センサー割り当て決定部、52 指状態特定部、53 映像表示制御部、54 コントローラ装置状態検出部、60 コントローラ装置、61 本体部、62 固定具、63 センサーアレイ。