(57)【要約】ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御装置であって、ユーザーの手の幅を特定し、特定した手の幅の情報に基づいて、検出対象とする指のそれぞれを複数のセンサーのうちのどのセンサーに割り当てるかを決定し、検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するコントローラ装置の制御装置である。
2020079852.tif 000002
【特許請求の範囲】
【請求項１】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御装置であって、
前記ユーザーの手の幅を特定する幅特定部と、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定する割り当て決定部と、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力する状態特定部と、
を含むことを特徴とするコントローラ装置の制御装置。
【請求項２】
請求項１に記載のコントローラ装置の制御装置であって、
前記幅特定部は、前記ユーザーが前記コントローラ装置を把持した状態において、前記複数のセンサーのうち前記ユーザーの指を検出しているセンサーに基づいて、前記ユーザーの手の幅を特定する
ことを特徴とするコントローラ装置の制御装置。
【請求項３】
請求項２に記載のコントローラ装置の制御装置であって、
前記幅特定部は、前記ユーザーの手の幅を特定するとともに、前記検出対象とする指のうち前記ユーザーの手の幅方向の両端の指に対応するセンサーを特定し、
前記割り当て決定部は、予め定められたテーブル内において、前記特定された両端の指に対応するセンサーに対応づけられたセンサーを、前記検出対象とする指のうち、両端の指以外の指に割り当てる
ことを特徴とするコントローラ装置の制御装置。
【請求項４】
請求項１から３のいずれか一項に記載のコントローラ装置の制御装置であって、
前記状態特定部は、前記検出対象とする指に割り当てられたセンサーの出力と、前記幅特定部によって特定された手の幅の情報と、に基づいて、対応する指の曲げ伸ばしの状態を特定する
ことを特徴とするコントローラ装置の制御装置。
【請求項５】
請求項１から４のいずれか一項に記載のコントローラ装置の制御装置であって、
前記状態特定部は、前記検出対象とする指に割り当てられたセンサー、及び割り当てがされていないセンサーの出力に基づいて、対応する指の曲げ伸ばしの方向と交差する方向への開き度合いを特定して出力する
ことを特徴とするコントローラ装置の制御装置。
【請求項６】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの指の状態を検出する複数の第１センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第２センサーと、を備えるコントローラ装置を制御する制御装置であって、
前記第２センサーの検出結果に応じて前記コントローラ装置が前記ユーザーの手に装着されているか否かを判定する判定部と、
前記判定により前記コントローラ装置が前記ユーザーの手に装着されていないと判定された場合に、前記複数の第１センサーの動作を停止させる制御部と、
を含むことを特徴とするコントローラ装置の制御装置。
【請求項７】
請求項６に記載のコントローラ装置の制御装置であって、
前記制御部は、前記複数の第１センサーの動作を停止させている間、前記複数の第１センサーが動作しているときよりも低い頻度で前記第２センサーを動作させる
ことを特徴とするコントローラ装置の制御装置。
【請求項８】
ユーザーの手に装着されるコントローラ装置であって、
前記ユーザーの指の状態を検出する複数の第１センサーと、
前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第２センサーと、
当該コントローラ装置を前記ユーザーの手に固定する固定具と、
を備え、
前記第２センサーは、前記固定具の内側を検出範囲とするように配置されている
ことを特徴とするコントローラ装置。
【請求項９】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御方法であって、
前記ユーザーの手の幅を特定するステップと、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、
を含むことを特徴とするコントローラ装置の制御方法。
【請求項１０】
ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御するためのプログラムであって、
前記ユーザーの手の幅を特定するステップと、
前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、
前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ装置を制御する制御装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
例えばバーチャルリアリティなどの技術においては、指の動きなどのジェスチャーによってユーザーからの操作入力を受け付けることがある。ユーザーの指の動きを認識するための技術の一つとして、ユーザーの手にコントローラ装置を装着させ、その表面に設けられたセンサーによってユーザーの指の状態を検出する方法が検討されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
コントローラ装置を使用するユーザーの手の大きさは、ユーザーごとにばらつきがある。そのため、コントローラ装置が想定する手の大きさと実際に装着したユーザーの手の大きさにずれがあると、ユーザーの指の状態を精度よく検出することが難しくなる。【０００４】
本発明は上記実情を考慮してなされたものであって、その目的の一つは、ユーザーの手の大きさによらずに精度よく指の状態を検出することのできるコントローラ装置の制御装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様に係るコントローラ装置の制御装置は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御装置であって、前記ユーザーの手の幅を特定する幅特定部と、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定する割り当て決定部と、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力する状態特定部と、を含むことを特徴とする。【０００６】
本発明の別の態様に係るコントローラ装置の制御装置は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの指の状態を検出する複数の第１センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第２センサーと、を備えるコントローラ装置を制御する制御装置であって、前記第２センサーの検出結果に応じて前記コントローラ装置が前記ユーザーの手に装着されているか否かを判定する判定部と、前記判定により前記コントローラ装置が前記ユーザーの手に装着されていないと判定された場合に、前記複数の第１センサーの動作を停止させる制御部と、を含むことを特徴とする。【０００７】
また、本発明の一態様に係るコントローラ装置は、ユーザーの手に装着されるコントローラ装置であって、前記ユーザーの指の状態を検出する複数の第１センサーと、前記ユーザーが当該コントローラ装置を装着した状態において前記ユーザーの手を検出する第２センサーと、当該コントローラ装置を前記ユーザーの手に固定する固定具と、を備え、前記第２センサーは、前記固定具の内側を検出範囲とするように配置されていることを特徴とする。【０００８】
本発明の一態様に係るコントローラ装置の制御方法は、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御する制御方法であって、前記ユーザーの手の幅を特定するステップと、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、を含むことを特徴とする。【０００９】
本発明の一態様に係るプログラムは、ユーザーの手に装着されるコントローラ装置であって、当該ユーザーの検出対象とする指の曲げ伸ばしを検出するために、当該検出対象とする指の数を超える複数のセンサーを備えるコントローラ装置を制御するためのプログラムであって、前記ユーザーの手の幅を特定するステップと、前記特定した手の幅の情報に基づいて、前記検出対象とする指のそれぞれを前記複数のセンサーのうちのどのセンサーに割り当てるかを決定するステップと、前記検出対象とする指のそれぞれに割り当てられたセンサーの出力を用いて、対応する指の曲げ伸ばしの状態を特定して出力するステップと、をコンピュータに実行させるためのプログラムである。このプログラムは、コンピュータ読み取り可能で非一時的な情報記憶媒体に格納されて提供されてよい。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る制御装置を含む情報処理システムの構成ブロック図である。
【図２】コントローラ装置の外観の一例を示す図である。
【図３】情報処理装置の機能ブロック図である。
【図４】キャリブレーション実行時のユーザーの手の状態の一例を示す図である。
【図５】近接センサーの対応テーブルの一例を示す図である。
【図６】ユーザーが指を開いた状態を示す図である。
【図７】ユーザーの指の回転角を定義したテーブルの一例を示す図である。
【図８】メッセージ表示画面の一例を示す図である。
【図９】本発明の変形例に係るコントローラ装置の背面側の斜視図である。
【図１０】本発明の変形例に係るコントローラ装置の正面側の斜視図である。
【図１１】本発明の変形例に係るコントローラ装置による検出値の一例を示すグラフである。
【図１２】本発明の変形例に係るコントローラ装置による検出値の平均値の一例を示すグラフである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面に基づき詳細に説明する。
【００１２】
図１は、本発明の一実施形態に係る制御装置を含む情報処理システム１の全体概要を示す構成ブロック図である。同図に示されるように、情報処理システム１は、情報処理装置１０と、コントローラ装置３０と、頭部装着型の表示装置４０と、を含んで構成されている。本実施形態では、情報処理装置１０がコントローラ装置３０を制御する制御装置として機能する。
【００１３】
情報処理装置１０は、コントローラ装置３０による検出結果を処理する装置であって、例えば家庭用ゲーム機、携帯型ゲーム機、パーソナルコンピューター、スマートフォン、タブレット等であってよい。図１に示されるように、情報処理装置１０は、制御部１１と、記憶部１２と、インタフェース部１３と、を含んで構成される。
【００１４】
制御部１１は、ＣＰＵ等のプロセッサを少なくとも一つ含み、記憶部１２に記憶されているプログラムを実行して各種の情報処理を実行する。なお、本実施形態において制御部１１が実行する処理の具体例については、後述する。記憶部１２は、ＲＡＭ等のメモリデバイスを少なくとも一つ含み、制御部１１が実行するプログラム、及び当該プログラムによって処理されるデータを格納する。
【００１５】
インタフェース部１３は、コントローラ装置３０、及び表示装置４０との間のデータ通信のためのインタフェースである。情報処理装置１０は、インタフェース部１３を介して有線又は無線のいずれかでコントローラ装置３０、及び表示装置４０のそれぞれと接続される。具体的にインタフェース部１３は、情報処理装置１０が供給する映像データを表示装置４０に送信するために、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）等のマルチメディアインタフェースを含むこととする。また、コントローラ装置３０による検出結果を示す信号を受信するために、ＵＳＢ（Universal Serial Bus）等のデータ通信インタフェースを含んでいる。
【００１６】
コントローラ装置３０は、ユーザーの手に装着され、その指の動きを検出するためのデバイスである。図２は、コントローラ装置３０の外観の一例を示している。この図の例では、コントローラ装置３０は本体部３１と固定具３２とを備えており、ユーザーは自身の手のひらをこの固定具３２に通すことによってコントローラ装置３０を自身の手に装着する。なお、固定具３２はユーザーの手の大きさに合わせて長さを調整可能なベルト等によって構成されてよい。
【００１７】
本体部３１の筐体表面には、ユーザーの指の動きを検出するために、複数の近接センサー３３が配置されている。近接センサー３３は、例えば赤外線センサーや静電センサーなど、検出範囲内に存在する物体までの距離を計測可能なセンサーである。この近接センサー３３の検出結果を用いて、情報処理装置１０は検出対象となるユーザーの各指の位置を特定する。本実施形態において近接センサー３３の検出対象とされる指は、ユーザーがコントローラ装置３０を装着した手の、親指を除いた人差し指、中指、薬指、小指の４本の指であることとする。なお、ここではユーザーはいずれか一方の手にコントローラ装置３０を装着することとしているが、ユーザーは左右両方の手にそれぞれコントローラ装置３０を装着してもよい。
【００１８】
コントローラ装置３０の表面に配置される近接センサー３３の数は、検出対象とする指の数（４本）よりも多くなっている。具体的に、近接センサー３３は、ユーザーがコントローラ装置３０を装着した状態において検出対象の指と相対する位置に、本体部３１の長手方向（すなわち、ユーザーの手のひらの幅方向）に沿って並んで配置されている。配置される近接センサー３３の数、及び配置間隔は、並んで配置された複数の近接センサー３３の全体によってカバーされる検出範囲が、ユーザーの手のひらの幅を超える範囲となるように決定されている。本実施形態では、図２に示すように合計１２個の近接センサー３３が等間隔に並んで配置されていることとする。以下ではコントローラ装置３０の長手方向をＹ軸方向とし、ユーザーの人差し指側の方向をＹ軸正方向、小指側をＹ軸負方向とする。１２個の近接センサー３３は、このＹ軸方向に沿って直線上に並んで配置されている。また、以下では１２個の近接センサー３３を、Ｙ軸正方向側から負方向に向かって順に近接センサー３３−１〜３３−１２と表記する。
【００１９】
コントローラ装置３０の近接センサー３３とは別の位置には、ユーザーがコントローラ装置３０を装着したことを検出するための装着センサー３４が配置されている。装着センサー３４は、近接センサー３３と同種の近接センサーであってもよいし、温度センサーなど、人の身体の存在を検知する別の種類のセンサーであってもよい。装着センサー３４は、ユーザーがコントローラ装置３０を装着した際にその装着した手の存在を検出可能な位置に配置される。本実施形態では、装着センサー３４は固定具３２に向かう方向を検出範囲とするように配置されている。これにより、ユーザーが自身の手のひらを固定具３２に通した際に装着センサー３４は確実にユーザーの手のひらの存在を検出することができ、一方でコントローラ装置３０が机上に置かれた際など、ユーザーがコントローラ装置３０を装着していないときにユーザーの手以外の物体を誤検出しにくくすることができる。
【００２０】
さらにコントローラ装置３０は、制御回路３５を内蔵している。制御回路３５は、複数の近接センサー３３のそれぞれによる検出結果の内容を示す信号を、情報処理装置１０に送信する。また、制御回路３５は、近接センサー３３の動作状態を制御する。
【００２１】
表示装置４０は、ユーザーが頭部に装着して使用する映像表示装置であって、情報処理装置１０から送信される映像信号に応じた映像を表示して、ユーザーに閲覧させる。
【００２２】
次に、情報処理装置１０が実現する機能について図３を用いて説明する。図３に示すように、情報処理装置１０は、機能的に、キャリブレーション処理部５１と、指状態特定部５２と、映像表示制御部５３と、コントローラ装置状態検出部５４と、を含んでいる。さらにキャリブレーション処理部５１は、手幅特定部５１ａと、センサー割り当て決定部５１ｂと、を含んでいる。これらの機能は、制御部１１が記憶部１２に記憶されたプログラムを実行することにより実現される。このプログラムは、インターネット等の通信ネットワークを介して情報処理装置１０に提供されてもよいし、光ディスク等のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
【００２３】
キャリブレーション処理部５１は、ユーザーがコントローラ装置３０の使用を開始するタイミングや、ユーザーが指示したタイミングなどにおいて、キャリブレーション処理を実行する。ここでのキャリブレーション処理は、ユーザーの検出対象となる指のそれぞれについて、その指の状態を特定するために使用する近接センサー３３を複数の近接センサー３３の中から選択する処理である。
【００２４】
手幅特定部５１ａは、ユーザーがコントローラ装置３０を装着した際の、手の幅に相当する範囲を特定する。人の手の大きさやコントローラ装置３０の装着の仕方には、個人差がある。そのため、ユーザーがコントローラ装置３０を装着した状態において検出対象となる各指がどこに存在するか、予め明確でない。そこで本実施形態では、手幅特定部５１ａが、ユーザーがコントローラ装置３０を装着した状態において、ユーザーの手が実際に存在する範囲がどこからどこまでかを特定する。そして、センサー割り当て決定部５１ｂが、手幅特定部５１ａの特定結果に基づいて、検出対象となる指のそれぞれに対応する近接センサー３３を決定する。
【００２５】
より具体的に、手幅特定部５１ａは、ユーザーがコントローラ装置３０を装着した状態で、ユーザーの手の指のうち、手の幅方向の両端を占める指（すなわち、人差し指と小指）の位置を特定する。この人差し指から小指までの範囲が、ユーザーの手の幅に相当する。例えば手幅特定部５１ａは、キャリブレーション処理を実行する際に、ユーザーにコントローラ装置３０の本体部３１を握るよう促すメッセージを出力する。そのメッセージに応じてユーザーが自身の手でコントローラ装置３０の本体部３１を把持した状態において、手幅特定部５１ａは各近接センサー３３の出力を取得する。この状態において、所定距離未満の位置に物体の存在を検出した近接センサー３３のうち、最もＹ軸正方向側に位置する近接センサー３３が、ユーザーの人差し指の位置に対応していると推定される。同様に、物体の存在を検出した近接センサー３３のうち、最もＹ軸負方向側に位置する近接センサー３３の位置が、ユーザーの小指の位置に対応すると推定される。
【００２６】
なお、手幅特定部５１ａは、単純に所定距離未満の物体を検出した両端の近接センサー３３がユーザーの手の両端に対応すると判定するのではなく、隣接する複数の近接センサー３３の検出値に基づいてユーザーの手の両端に対応する近接センサー３３を特定してもよい。具体例として、キャリブレーション時の検出値が所定の第１閾値以上となる最もＹ軸負方向側に位置する近接センサー３３をまず注目センサーとして特定する。そして、注目センサーのＹ軸負方向側に隣接して配置された近接センサー３３の検出値が第１閾値より小さな第２閾値を超えていれば、注目センサーを小指に対応する近接センサー３３として特定する。一方、注目センサーに隣接する近接センサー３３の検出値が第２閾値以下であれば、注目センサーのＹ軸正方向側に配置された一つ隣の近接センサー３３を、小指に対応する近接センサー３３として特定する。また、人差し指に対応する可能性がある近接センサー３３については、その検出値に各近接センサー３３の位置に応じて予め定められた補正値を加えた値を算出する。そして、算出された値の大きさが最も大きくなる近接センサー３３を、人差し指に対応する近接センサー３３として特定する。このように、隣接する複数の近接センサー３３の検出値を考慮することで、より精度よく人差し指や小指がどの位置に存在するか推定することができる。なお、ここでは検出値が大きいほど近接センサー３３に近い位置でユーザーの指が検出されたことを示している。
【００２７】
図４は、キャリブレーション実行時におけるコントローラ装置３０を装着したユーザーの手の状態の一例を示している。この図の例では、ユーザーがコントローラ装置３０の本体部３１を握った状態で、近接センサー３３−２〜３３−８がユーザーの指を検出して比較的大きな検出値すると想定される。この場合、手幅特定部５１ａは、近接センサー３３−２がユーザーの人差し指に、近接センサー３３−８が小指に、それぞれ対応すると判断する。すなわち、ユーザーの手は、近接センサー３３−２の位置から近接センサー３３−８の位置までの範囲に存在すると特定される。
【００２８】
センサー割り当て決定部５１ｂは、手幅特定部５１ａによる特定結果に基づいて、複数の近接センサー３３の中から、検出対象となる各指の位置を検出するために使用するセンサーを決定する。つまり、検出対象となる指のそれぞれについて、その指に割り当てる近接センサー３３を決定する。
【００２９】
具体的にセンサー割り当て決定部５１ｂは、人差し指、及び小指については、手幅特定部５１ａによってそれぞれの指に対応すると特定された近接センサー３３を、その指に割り当てる近接センサー３３として決定する。中指、及び薬指については、予め記憶部１２内に記憶されている近接センサー３３の対応テーブルを参照して、人差し指、及び小指に割り当てられた近接センサー３３に対応づけられた対応情報を読み出す。そして、この対応情報に従って各指の割り当てを決定する。
【００３０】
図５は、この例における近接センサー３３の対応テーブルの一例を示している。この図の例では、ユーザーの人差し指は近接センサー３３−１、又は３３−２のいずれかに対応し、小指は近接センサー３３−４〜３３−１２のいずれかに対応するものと想定している。この対応テーブルでは、人差し指から小指まで各指の間隔が概ね等間隔となるように、中指、及び薬指に対応する近接センサー３３の対応情報が格納されている。センサー割り当て決定部５１ｂは、この対応テーブルにおいて、手幅特定部５１ａによる人差し指、及び小指の位置の特定結果に基づいて、中指、及び薬指のそれぞれに割り当てる近接センサー３３を決定する。例えば人差し指が近接センサー３３−２に、小指が近接センサー３３−８に、それぞれ対応すると特定されていた場合、センサー割り当て決定部５１ｂは、中指に近接センサー３３−５を、薬指に近接センサー３３−７を、それぞれ割り当てる。
【００３１】
なお、この対応テーブルは、事前に様々な手の大きさの複数のユーザーにコントローラ装置３０を使用してもらい、その際の近接センサー３３による検出結果をサンプリングすることによって決定されてよい。
【００３２】
以上の説明では、キャリブレーション処理部５１はユーザーがコントローラ装置３０の使用を開始したタイミングなど、特定のタイミングでキャリブレーション処理を実行することとした。しかしながらこれに限らず、キャリブレーション処理部５１はユーザーがコントローラ装置３０を使用している間に自動的にキャリブレーション処理を実行してもよい。具体的にキャリブレーション処理部５１は、コントローラ装置３０が使用されている間、各近接センサー３３の検出結果をモニタする。そして、ある近接センサー３３によって、所定閾値以上の大きさの検出値が所定回数以上検出された場合、その近接センサー３３の位置にユーザーの手指が存在すると判定する。このような判定を各近接センサー３３について実行することによって、手幅特定部５１ａは、キャリブレーションのために意図的にユーザーにコントローラ装置３０を握る動作を実施させなくとも、ユーザーの手の幅を特定することができる。
【００３３】
指状態特定部５２は、近接センサー３３の検出結果を用いて、検出対象となるユーザーの各指の曲げ伸ばしの状態を特定する。ここで指状態特定部５２は、キャリブレーション処理部５１によって検出対象となる指のそれぞれに割り当てられた近接センサー３３の検出結果に基づいて、対応する指の曲げ伸ばしの状態、すなわちユーザーがその指をどの程度曲げているかを判定する。
【００３４】
例えばキャリブレーション処理部５１によって薬指に近接センサー３３−７が割り当てられた場合、指状態特定部５２は、近接センサー３３−７の検出値を所与の変換テーブルに従って変換することによって、ユーザーの薬指の曲げ量を特定する。その他の検出対象の指についても同様に、対応する近接センサー３３の検出値に基づいてその指の曲げ量を特定する。ここでの曲げ量は、各指をまっすぐ伸ばして手のひらを開いた状態から、各指の先端を手のひらに近づける向きにどの程度折り曲げているかを示す値である。
【００３５】
近接センサー３３の検出結果は検出される物体までの距離に対応するので、検出された距離が大きい場合にはユーザーがその指を伸ばしており、距離が小さい場合にはその指を曲げていると推定される。この近接センサー３３の検出値とユーザーの指の曲げ量との対応関係を示す変換テーブルは、予め実際に測定を行った結果に基づいて記憶部１２内に記憶されるものとする。
【００３６】
なお、指状態特定部５２は、各近接センサー３３の検出結果を用いてユーザーがどの程度指を曲げているか判定する際に、手幅特定部５１ａによって特定された手の幅の情報を利用してもよい。一般的に、手の幅が大きい人は指の長さも長く、手の幅が小さい人は指の長さも短くなる傾向がある。そして、指の長さによって、同じ程度指を曲げたとしても近接センサー３３の検出結果に相違が生じる。具体的に、指の長さが短い人ほど、小さい指の曲げ量でも近接センサー３３までの距離が近くなると推定される。そこで指状態特定部５２は、各指に対応する近接センサー３３の検出結果に基づいて判定される指の曲げ量の数値を、ユーザーの手の幅に応じて補正する。あるいは、手の幅の特定結果に応じて、予め複数の変換テーブルが用意されてもよい。この場合、指状態特定部５２は、手幅特定部５１ａの特定結果を参照して使用する変換テーブルを決定し、その変換テーブルに従って対応する近接センサー３３の検出値を指の曲げ量に変換する。
【００３７】
また、指状態特定部５２は、近接センサー３３の検出結果を用いてユーザーの指の開き度合いを判定してもよい。図４に例示されるように、キャリブレーション処理の実行時にはユーザーはコントローラ装置３０を自身の手で握るようにして保持するため、検出対象となる各指は閉じられ、互いの間隔は近づいている。一方、コントローラ装置３０の使用中、図６に例示するように、ユーザーは各指が互いに離れるように手を開くこともあり得る。このとき、小指などの手の端の指は、指の付け根部分を回転中心として、手のひらに向かって横方向（指の曲げ伸ばしの方向と交差する方向）に向かって回転する。その結果、手の端の指は、センサー割り当て決定部５１ｂによって割り当てられた近接センサー３３よりもさらに外側に配置された近接センサー３３の方に近づくことになる。そこで指状態特定部５２は、センサー割り当て決定部５１ｂによって割り当てられた近接センサー３３とは別の近接センサー３３の検出結果を利用して、ユーザーの指の開き度合いを判定する。
【００３８】
具体的に、指状態特定部５２は、キャリブレーション処理部５１によって小指に割り当てられた近接センサー３３の外側（Ｙ軸負方向側）に配置された所定の近接センサー３３の検出結果に基づいて、指の開き度合いを判定する。例えば小指に割り当てられた近接センサー３３が近接センサー３３−８の場合、ユーザーが指を開かなければ、コントローラ装置３０の使用中、近接センサー３３−９〜３３−１２は何も物体を検出しないか、あるいは近接センサー３３−８よりも遠い位置に物体（小指）が存在すると検出するはずである。これに対して、ユーザーが指を開いて小指を人差し指と逆方向に回転させた場合、小指に割り当てられた近接センサー３３−８の外側に位置する近接センサー３３−９や近接センサー３３−１０は、指を開いていないときよりも近い位置に物体の存在を検出すると想定される。そこで指状態特定部５２は、このように小指に割り当てられた近接センサー３３の外側に位置する近接センサー３３（例えば近接センサー３３−１０）の検出結果を用いて、ユーザーの指の開き度合いを推定できる。
【００３９】
より詳細な例として、小指に割り当てられた近接センサー３３の検出値をｘ１、その二つ外側（Ｙ軸負方向側）に配置された近接センサー３３の検出値をｘ２とした場合、指状態特定部５２は、小指の回転角θを以下の計算式で計算してよい。
θ＝θｍａｘ・ｘ２／（ｘ１＋ｘ２）
ここでθｍａｘは、予め定義された小指の最大の回転角の値である。ｘ１に対してｘ２が大きくなるほど、小指はより外側に開いていると想定される。そのため、この計算式に示すようにｘ１＋ｘ２に対するｘ２の比に回転角の最大値を乗じることによって、小指の回転角を０からθｍａｘまでの範囲で算出できる。
【００４０】
なお、人が指を開いた際に各指が最大でどの程度回転するか、また各指がどのように連動して回転するかは、予め定義されてよい。具体的に、ここでは、ユーザーは４本の指を互いに連動するように開くものと想定している。ユーザーが指を開こうとした場合、小指が外側（人差し指と反対側）に回転するとともに、薬指も同じ方向に小指よりは少ない回転量で回転し、人差し指は小指や薬指とは逆方向（小指と反対側）に回転すると推定される。なお、ここでは中指は手の開きによる回転はしないと想定している。このような回転方向、及び回転量を定義した定義情報と、近接センサー３３の検出結果から特定される小指の回転角の情報とを利用することで、指状態特定部５２は、小指以外の他の指の開き具合（回転量）も算出できる。図７は、このような各指の回転角の最大値と回転量の比率の一例を示している。
【００４１】
映像表示制御部５３は、ユーザーに提示すべき映像を描画し、表示装置４０に対して出力する。本実施形態において映像表示制御部５３は、各種オブジェクトが配置された仮想空間内の様子を示す映像を描画することとする。特に映像表示制御部５３は、指状態特定部５２によって特定されるユーザーの指の曲げ伸ばし状態に連動して変化する手オブジェクトを仮想空間内に配置し、その様子を描画することとする。これにより、ユーザーがコントローラ装置３０を装着した自身の手の指を曲げたり伸ばしたり開いたりする動作を行うと、その指の動きと同じように仮想空間内の手オブジェクトを動作させることができる。そのためユーザーは、あたかも自分の手で直接仮想空間内の他のオブジェクトを触ったり掴んだりしているかのような体験をすることができる。
【００４２】
なお、手オブジェクトを構成する各指を指状態特定部５２によって特定された状態（目標状態）に変化させる場合、瞬時にその目標状態に変化させるのではなく、単位時間ごとの指の回転量や移動量を所定量以下に抑えることとし、各指を徐々に変化させるようにしてもよい。これにより、映像表示制御部５３がユーザーに提示する映像内における指のカクツキを抑え、自然に手オブジェクトを変化させることができる。
【００４３】
コントローラ装置状態検出部５４は、コントローラ装置３０の状態を検出し、その検出結果に応じて各種の制御を行う。具体的にコントローラ装置状態検出部５４は、ユーザーがコントローラ装置３０を装着したり取り外したりした際に、そのようなイベントを検出する。そして、その検出結果に応じて近接センサー３３の動作状態を変化させる制御を行う。
【００４４】
コントローラ装置状態検出部５４は、装着センサー３４の検出結果を受け付けることで、ユーザーがコントローラ装置３０を装着したり取り外したりしたことを検出する。前述したように、装着センサー３４はユーザーがコントローラ装置３０を装着した際にその手を検出可能な位置に配置されている。そのため、ユーザーがコントローラ装置３０を装着したり取り外したりすると、その検出結果に変化が生じる。
【００４５】
ユーザーがコントローラ装置３０を取り外した場合、それ以降近接センサー３３の検出結果を用いてユーザーの指の状態を特定することはできなくなる。このような場合に近接センサー３３を動作させ続けると、不要な電力消費が生じたり、コントローラ装置３０が置かれたテーブルなどの物体をユーザーの指と誤検出したりする可能性があり、好ましくない。そこでコントローラ装置状態検出部５４は、コントローラ装置３０の取り外しが検出された場合、近接センサー３３の動作を停止させる制御命令をコントローラ装置３０に対して出力する。コントローラ装置３０の制御回路３５は、この制御命令に応じて近接センサー３３への電力供給を停止したりすることで、近接センサー３３の動作を停止させる。これにより、近接センサー３３による誤検出や不要な電力消費を防止できる。
【００４６】
また、コントローラ装置状態検出部５４は、コントローラ装置３０の取り外しが検出された場合、実行中のアプリケーションプログラムに対して、処理の中断を指示してもよい。ユーザーがコントローラ装置３０を取り外している間は、ユーザーの手の動きに応じた処理を実行することはできなくなるためである。具体的には、指状態特定部５２によるユーザーの指の状態を特定する処理が中断され、映像表示制御部５３による手オブジェクトの制御も中断される。
【００４７】
さらに映像表示制御部５３は、コントローラ装置状態検出部５４がコントローラ装置３０の取り外しを検出した場合、その指示に応じて、処理が中断されたことを示す画面表示を行ってもよい。また、コントローラ装置３０の再装着を促すメッセージを表示してもよい。図８はこのようなメッセージ表示画面の一例を示している。
【００４８】
コントローラ装置３０の装着や取り外しを検出するために、装着センサー３４はコントローラ装置３０が装着されている間も取り外されている間も動作させ続ける必要がある。つまり、前述したように近接センサー３３の動作を停止させている間も装着センサー３４を動作させる必要がある。ただし、リアルタイムで指の状態検出に使用される近接センサー３３と比較して、装着センサー３４がユーザーの手の存在を検出する頻度はそれほど高くなくてよい。そのため、例えば１秒ごとなど、比較的低い頻度で装着センサー３４を動作させることによって、近接センサー３３の動作を停止している間の消費電力を抑えることができる。
【００４９】
以上説明したように、本発明の実施の形態に係る情報処理装置１０によれば、ユーザーの手の大きさの個人差にかかわらずユーザーの各指の動きを精度よく特定することができる。また、装着センサー３４の検出結果を利用することで、ユーザーがコントローラ装置３０を取り外している間、近接センサー３３による誤検出や不要な電力消費を抑えることができる。
【００５０】
なお、本発明の実施の形態は以上説明したものに限られない。例えば以上の説明では、ユーザーの指の状態を検出するために使用する近接センサー３３の検出結果を利用してユーザーの手の幅を特定することとしたが、ユーザーの手の幅はその他の方法で特定されてもよい。一例として、ユーザーの手の端部を検出するために、近接センサー３３とは別のセンサーをコントローラ装置３０の筐体表面に配置してもよい。また、手幅特定部５１ａは固定具３２の状態に応じてユーザーの手の幅を特定してもよい。ユーザーが固定具３２のベルトの長さを調節して自身の手にコントローラ装置３０を装着する場合、そのベルトの調節の結果はユーザーの手の大きさを反映していると想定される。そのため、調節されたベルトの状態を検出することで、ユーザーの手の幅を推定できる。
【００５１】
また、以上の説明では装着センサー３４は本体部３１の固定具３２に向けられた側に配置されることとしたが、装着センサー３４はその他の位置に配置されてもよい。例えば、前述した近接センサー３３とは別に設けられたユーザーの手の幅を検出するためのセンサーを、装着センサー３４として利用してもよい。また、装着センサー３４は固定具３２に配置されてもよい。いずれの場合にも、近接センサー３３とは別のユーザーの手の存在を検出可能な位置に装着センサー３４を配置することで、ユーザーの指の状態によらず、ユーザーがコントローラ装置３０を装着しているか否かを検出することができる。なお、装着センサー３４は、コントローラ装置３０が机に置かれている状態など、ユーザーがコントローラ装置３０を装着していない状態において、他の物体をユーザーの手と誤検出してしまわないような位置に配置することが望ましい。
【００５２】
また、以上の説明において情報処理装置１０が実行することとした処理の少なくとも一部は、コントローラ装置３０内の制御回路３５によって実行されてもよい。例えば制御回路３５は、装着センサー３４の検出結果に応じた近接センサー３３の動作停止制御を、情報処理装置１０からの制御命令によらずに自身で実行してもよい。また、以上の説明においてキャリブレーション処理部５１や指状態特定部５２が実行することとした処理を制御回路３５が実行し、その結果を情報処理装置１０に送信してもよい。
【００５３】
［変形例］
以下、これまでの説明におけるコントローラ装置３０とは異なる態様で近接センサーが配置された変形例について、説明する。図９及び図１０は、本変形例に係るコントローラ装置６０の外観の一例を示しており、図９が背面側の斜視図を、図１０が正面側の斜視図を、それぞれ示している。本変形例に係るコントローラ装置６０は、図２に示したコントローラ装置３０と同様に本体部６１と固定具６２とを含んで構成されており、本体部６１は全体として円柱状の形状を有している。コントローラ装置３０と同様に、ユーザーは固定具６２に自身の手のひらを通すことによってコントローラ装置６０を装着する。
【００５４】
本体部６１の表面には、複数のセンサーアレイ６３が配置されている。具体的に本実施形態では、合計６個のセンサーアレイ６３ａ〜６３ｆが本体部６１表面に配置されることとする。各センサーアレイ６３は、細長い矩形の形状を有しており、本体部６１の長手方向に沿って互いに平行な向きで配置されている。すなわち、各センサーアレイ６３は、ユーザーがコントローラ装置６０を手に装着した際の手のひらの幅方向に沿って配置されていることになる。
【００５５】
また、これらのセンサーアレイ６３は、本体部６１の周方向に沿って並んで配置されている。特にセンサーアレイ６３ｂ〜６３ｆの５個のセンサーアレイ６３は、互いに隣接するように配置されている。これに対してセンサーアレイ６３ａは、本体部６１の固定具６２が取り付けられている位置に沿って、固定具６２と相対するように配置されている。このような配置によれば、ユーザーがコントローラ装置６０を装着した状態において、必ずセンサーアレイ６３ａがユーザーの手のひらと相対するようにする。また、センサーアレイ６３ｂ〜６３ｆは、ユーザーの手のひら側から指の先端に向かう指の延伸方向に沿って、ユーザーの手の指と向き合う位置に順に並ぶことになる。
【００５６】
各センサーアレイ６３は、直線上に並んで配列された複数のセンサーエレメントを含んでいる。個々のセンサーエレメントは、それぞれ独立に物体の位置を検出可能な近接センサーとして機能する。各センサーアレイ６３は、例えば自己容量式の静電センサーアレイなどであってよい。以下では具体例として、各センサーアレイ６３は、計４０個のセンサーエレメントを含むこととする。すなわち、６個のセンサーアレイ６３に含まれる総計２４０個のセンサーエレメントによって、一度の測定で２４０個の検出値が得られることになる。なお、以下では説明の便宜のために、各センサーエレメントの検出値Ｖを、当該センサーエレメントが属するセンサーアレイ６３を特定するアルファベットと、当該センサーエレメントの番号と、の組み合わせによって参照することとする。ここでセンサーエレメントの番号は、コントローラ装置６０を装着した際のユーザーの親指側から小指側に向かう向きに数えて当該センサーエレメントがセンサーアレイ６３内において何番目に配置されているかを表す１〜４０のいずれかの数字であることとする。例えばセンサーアレイ６３ａの親指側から数えて５番目のセンサーエレメントによる検出値は、Ｖａ５と表記する。
【００５７】
本変形例では、コントローラ装置６０と接続される情報処理装置１０の手幅特定部５１ａは、固定具６２に相対するセンサーアレイ６３ａの検出値Ｖａ１〜Ｖａ４０を用いて、ユーザーの手の幅を特定する。具体的に、例えば手幅特定部５１ａは、所定の閾値以上の検出値が検出されたセンサーエレメントのうち、両端に最も近い位置に配置されたセンサーエレメントの位置が、ユーザーの手の両端の位置であると推定する。また、手幅特定部５１ａは、前述したコントローラ装置３０の場合と同様に、隣接する複数のセンサーエレメントの検出値に基づいてユーザーの手の両端に対応するセンサーエレメントを特定してもよい。
【００５８】
なお、前述したように、固定具６２によってユーザーの手のひらが固定された状態では、常にセンサーアレイ６３ａはユーザーの手のひらに相対することになる。そのため本変形例では、キャリブレーション処理のためにユーザーに手で本体部６１を握り込むような動作を実行させる必要がなく、任意のタイミングでセンサーアレイ６３ａの検出結果を取得し、手の幅を特定することができる。
【００５９】
手の幅が特定されれば、前述したコントローラ装置３０の場合と類似の処理によって、センサー割り当て決定部５１ｂがセンサーエレメントと検出対象とする指との対応関係（すなわち、各センサーアレイ６３内の何番目のセンサーエレメントが検出対象の指と対応するか）を特定することができる。具体例として、人差し指が常に同じセンサーエレメントの位置にあると想定する場合、この人差し指の位置と、特定された手の幅の情報と、から小指の位置が決定される。そして、人差し指の位置と小指の位置とに基づいて、各指の間の最低間隔（各指の間に存在すると想定されるセンサーエレメントの下限値）が算出される。そして、この最低間隔に従って中指、及び小指の位置が特定される。一例として、各指の間の最低間隔が５と算出された場合（すなわち、各指の間にセンサーエレメントが少なくとも５個存在すると推定された場合）、人差し指の位置に対応するセンサーエレメントから小指側に向かって６番目の位置にあるセンサーエレメントが中指に対応すると特定される。また、小指の位置に対応するセンサーエレメントから人差し指側に向かって６番目の位置にあるセンサーエレメントが薬指に対応すると特定される。
【００６０】
さらに本変形例では、本体部６１の周方向に沿って５個のセンサーアレイ６３ｂ〜６３ｆが配置されている。そのため、これらのセンサーアレイ６３ｂ〜６３ｆに含まれる、同じ番号が付与された（すなわち、ユーザーの手の幅に沿った方向の位置が互いに対応する）センサーエレメントによって検出される検出値を用いて、各指の曲げ伸ばし状態を特定することとする。具体例として、親指側から数えて３番目のセンサーエレメントが人差し指に対応すると特定された場合、センサーアレイ６３ｂ〜６３ｆそれぞれの３番目のセンサーエレメントの検出値Ｖｂ３，Ｖｃ３，Ｖｄ３，Ｖｅ３及びＶｆ３を平均して得られる平均値を用いて、人差し指の曲げ伸ばし状態を特定する。
【００６１】
また、本変形例では、手幅特定部５１ａによる特定結果を用いて検出対象とする指に対応するセンサーエレメントを決定するのではなく、センサーアレイ６３ｂ〜６３ｆの検出値そのものに基づいて指の位置を特定してもよい。この場合の具体例について、以下に説明する。
【００６２】
図１１は、あるタイミングで５個のセンサーアレイ６３ｂ〜６３ｆによって検出された検出値の具体例を示すグラフである。また、図１２はこれらのセンサーアレイ６３の検出値を番号ごと（すなわち、ユーザーの手の幅に沿った方向の位置が互いに同じセンサーエレメントごと）に平均した値のグラフを示している。図１２のグラフにおけるｎ番目の平均値は、各センサーアレイ６３のｎ番目の検出値Ｖｂｎ，Ｖｃｎ，Ｖｄｎ，Ｖｅｎ及びＶｆｎの平均値になる。このような手法によれば、指状態特定部５２は、手の幅と無関係に各指の位置、及び曲げ伸ばしの状態を特定することができる。
【００６３】
図１２のグラフに示されるように、センサーエレメントの検出値のグラフには、ユーザーの指に対応して４個のピークが現れる。このピーク位置が、ユーザーの指の位置を示していると推定される。また、ピークの値（当該位置の検出値の平均値）が、指の曲げ伸ばし量を示すと推定される。このように、複数のセンサーアレイ６３の検出値を考慮する場合、検出値のピークを特定できるため、このピーク位置によってユーザーの指の位置を推定できる。なお、この例においても、前述した各指の間の最低間隔を考慮して、各指に対応するセンサーエレメントを決定してもよい。例えば、各指の最低間隔が維持される範囲で、最も平均値が大きな位置のセンサーエレメントを、ユーザーの指に対応するセンサーエレメントと推定してもよい。
【００６４】
また、以上説明したような方法でユーザーの指の位置、及び指の曲げ伸ばし状態を特定する場合、同じタイミングで取得されたセンサーアレイ６３ａの検出値を用いて、ユーザーの手の幅を特定することができる。そのため、この手の幅から推定されるユーザーの各指の位置と、センサーアレイ６３ｂ〜６３ｆの検出値によって特定される各指の位置との関係によって、ユーザーが指を開いているか閉じているかを推定することができる。具体的に、手のひらに相対するセンサーアレイ６３ａの検出値に基づいて、ユーザーの各指の付け根の位置が推定される。一方、手の指に相対するセンサーアレイ６３ｂ〜６３ｆの検出値を用いて、各指の先端の位置が推定される。この付け根の位置と先端の位置との関係から、ユーザーの手の各指の開き度合い（手のひらに平行な向きの回転角）を算出することができる。なお、センサーアレイ６３ｂ〜６３ｆの検出値によって特定された指の位置が、初期状態においてセンサーアレイ６３ａの検出値に基づいて推定される指の位置から大きくずれた場合、リセット制御を行い、センサーアレイ６３ａの検出値に基づく手の幅の特定をやり直してもよい。
【００６５】
なお、以上の説明ではユーザーの指に相対する全てのセンサーアレイ６３ｂ〜６３ｆの検出値を番号ごとに単純平均した平均値を用いて、検出対象となる指の位置、及び／又は状態を特定することとした。しかしながらこれに限らず、例えば合計値や最大値など、その他の統計値を利用して指の位置や状態を特定してもよい。また、所与の重み付け係数を用いて重み付け平均を行うなど、異なる計算式によって得られた値を用いて、指の位置や状態を特定してもよい。また、各種の条件に応じて、複数のセンサーアレイ６３ｂ〜６３ｆのうち一部のセンサーアレイ６３によって得られる値を用いて指の状態を特定してもよい。また、センサーアレイ６３ａの検出結果などに応じて、各指の位置や状態を特定するために使用するセンサーエレメントを一部のセンサーエレメントに制限してもよい。例えば、センサーアレイ６３ｂ〜６３ｆのそれぞれに配置されるセンサーエレメントのうち、指の状態の特定に使用するセンサーエレメントを特定の範囲に制限する。また、比較的高い精度が要求されない場合などにおいては、例えば一つおきや二つおきなど、等間隔に配置された一部のセンサーエレメントの計測結果のみを用いてユーザーの指の状態を特定してもよい。
【００６６】
また、本変形例では、センサーアレイ６３ａを、ユーザーが手にコントローラ装置６０を装着したか否かを特定するための装着センサーとして利用することができる。具体的にコントローラ装置状態検出部５４は、一定の時間間隔でセンサーアレイ６３ａ内のセンサーエレメントの検出値を取得し、その検出値が所与の閾値未満であれば、ユーザーがコントローラ装置６０を装着していないと判断できる。そこでコントローラ装置状態検出部５４は、ユーザーがコントローラ装置６０を取り外したと推定される場合、センサーアレイ６３ｂ〜６３ｆの動作を停止させる制御命令を出力してもよい。また、センサーアレイ６３ａの検出値に基づいてユーザーがコントローラ装置６０を装着したと判定した場合、センサーアレイ６３ｂ〜６３ｆの動作を開始させる制御命令を出力する。これにより、ユーザーがコントローラ装置６０を装着していない間、不要な電力消費やセンサーアレイ６３による誤検出を防止することができる。
【符号の説明】
【００６７】
１  情報処理システム、１０  情報処理装置、１１  制御部、１２  記憶部、１３  インタフェース部、３０  コントローラ装置、３１  本体部、３２  固定具、３３  近接センサー、３４  装着センサー、３５  制御回路、４０  表示装置、５１  キャリブレーション処理部、５１ａ  手幅特定部、５１ｂ  センサー割り当て決定部、５２  指状態特定部、５３  映像表示制御部、５４  コントローラ装置状態検出部、６０  コントローラ装置、６１  本体部、６２  固定具、６３  センサーアレイ。
【図１】
2020079852.tif 000003
【図２】
2020079852.tif 000004
【図３】
2020079852.tif 000005
【図４】
2020079852.tif 000006
【図５】
2020079852.tif 000007
【図６】
2020079852.tif 000008
【図７】
2020079852.tif 000009
【図８】
2020079852.tif 000010
【図９】
2020079852.tif 000011
【図１０】
2020079852.tif 000012
【図１１】
2020079852.tif 000013
【図１２】
2020079852.tif 000014
【国際調査報告】
2020079852.tif 000015
2020079852.tif 000016
2020079852.tif 000017
2020079852.tif 000018
2020079852.tif 000019
2020079852.tif 000020
2020079852.tif 000021
2020079852.tif 000022
2020079852.tif 000023