(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-27
(45)【発行日】2022-01-19
(54)【発明の名称】情報処理システム、コントローラ装置、情報処理装置、及びプログラム
(51)【国際特許分類】
G06F 3/01 20060101AFI20220112BHJP
【FI】
G06F3/01 514
(21)【出願番号】P 2020551713
(86)(22)【出願日】2018-10-19
(86)【国際出願番号】 JP2018039095
(87)【国際公開番号】W WO2020079853
(87)【国際公開日】2020-04-23
【審査請求日】2021-01-05
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100122275
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】石川 清隆
(72)【発明者】
【氏名】木村 真
(72)【発明者】
【氏名】榎本 和義
(72)【発明者】
【氏名】五十嵐 健
(72)【発明者】
【氏名】梅木 翼
(72)【発明者】
【氏名】殿谷 政明
(72)【発明者】
【氏名】奥山 功
(72)【発明者】
【氏名】沢田 拓郎
【審査官】木村 慎太郎
(56)【参考文献】
【文献】国際公開第2018/110432(WO,A1)
【文献】国際公開第2016/038953(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
(57)【特許請求の範囲】
【請求項1】
ユーザが手に装着可能なコントローラ装置と情報処理装置とを含み、
前記コントローラ装置が、
コントローラ本体と、
前記コントローラ本体をユーザが握ったときに、ユーザの複数の指が当接するコントローラ本体上の位置に配される第1のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する第1のセンサと、
前記ユーザの各指先が到達する位置に配され、それぞれ対応する指で操作可能なボタンと、
前記第1のセンサと、前記ボタンとの間、及び前記ボタンの表面上に配される第2のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する複数の第2のセンサと、
を有し、
前記情報処理装置が、
前記第1のセンサと、前記第2のセンサとの検出結果を受け入れ、当該第1のセンサと、前記第2のセンサとの検出結果に基づいて前記コントローラ装置の装着状態を判定する処理を実行する、情報処理システム。
【請求項2】
ユーザが手に装着するコントローラ装置であって、
コントローラ本体と、
前記コントローラ本体をユーザが握ったときに、ユーザの複数の指が当接するコントローラ本体上の位置に配される第1のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する第1のセンサと、
前記ユーザの各指先が到達する位置に配され、それぞれ対応する指で操作可能なボタンと、
前記第1のセンサと、前記ボタンとの間、及び前記ボタンの表面上に配される第2のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する複数の第2のセンサと、
を有するコントローラ装置。
【請求項3】
請求項2に記載のコントローラ装置であって、
前記第1のセンサは、前記コントローラ本体をユーザが握ったときに、ユーザの複数の指の付け根部分に対応する位置に配されるコントローラ装置。
【請求項4】
コントローラ本体をユーザが握ったときに、ユーザの複数の指が当接するコントローラ本体上の位置に配される第1のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する第1のセンサと、前記ユーザの各指先が到達する位置に配され、それぞれ対応する指で操作可能なボタンと、前記第1のセンサと、前記ボタンとの間、及び前記ボタンの表面上に配される第2のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する複数の第2のセンサと、を有するコントローラ装置に接続される情報処理装置であって、
前記第1のセンサと、前記第2のセンサとの検出結果を受け入れる手段と、
当該第1のセンサと、前記第2のセンサとの検出結果に基づいて前記コントローラ装置の装着状態を判定する処理を実行する手段と、
を含む情報処理装置。
【請求項5】
コントローラ本体をユーザが握ったときに、ユーザの複数の指が当接するコントローラ本体上の位置に配される第1のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する第1のセンサと、前記ユーザの各指先が到達する位置に配され、それぞれ対応する指で操作可能なボタンと、前記第1のセンサと、前記ボタンとの間、及び前記ボタンの表面上に配される第2のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する複数の第2のセンサと、を有するコントローラ装置に接続される情報処理装置を、
前記第1のセンサと、前記第2のセンサとの検出結果を受け入れる手段と、
当該第1のセンサと、前記第2のセンサとの検出結果に基づいて前記コントローラ装置の装着状態を判定する処理を実行する手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、コントローラ装置、情報処理装置、及びプログラムに関する。
【背景技術】
【0002】
家庭用ゲーム機等で利用されるコントローラ装置のうちには、ユーザが手に装着した状態で利用することが想定されているものがある。このようなコントローラ装置は、ユーザの手にベルト等で締結して装着され、ユーザが各指を伸ばしたり屈曲させたりしたときに、当該指の屈伸を検出して、当該指の屈伸の状態に基づく操作の信号を出力する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、ユーザの手の大きさがユーザごとにまちまちであったり、また、ユーザが正しくコントローラ装置を装着していない場合があって、ユーザの指ごとの屈伸の状態を検出することが困難である場合があった。
【0004】
本発明は上記実情に鑑みて為されたもので、ユーザの指ごとの屈伸の状態を検出できる情報処理システム、コントローラ装置、情報処理装置、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【0005】
上記従来例の問題点を解決する本発明の一態様は、ユーザが手に装着するコントローラ装置であって、コントローラ本体と、前記コントローラ本体をユーザが握ったときに、ユーザの複数の指が当接するコントローラ本体上の位置に配される第1のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する第1のセンサと、前記ユーザの各指先が到達する位置に配され、それぞれ対応する指で操作可能なボタンと、前記第1のセンサと、前記ボタンとの間、及び前記ボタンの表面上に配される第2のセンサであって、ユーザの前記複数の各指と自己自身との空間的な位置の変位を検出する複数の第2のセンサと、を有することとしたものである。
【発明の効果】
【0006】
本発明によると、ユーザの指ごとの屈伸の状態を検出できる。
【図面の簡単な説明】
【0007】
【
図1】本発明の実施の形態に係るコントローラ装置の概略を表す構成図である。
【
図2】本発明の実施の形態に係るコントローラ装置における第1、第2のセンサの配置例を表す説明図である。
【
図3】本発明の実施の形態に係るコントローラ装置における第1、第2のセンサによる指の検出状態の例を表す説明図である。
【
図4】本発明の実施の形態に係るコントローラ装置における第1、第2のセンサの出力信号の例を表す説明図である。
【
図5】本発明の実施の形態に係るコントローラ装置の例を表す機能ブロック図である。
【
図6】本発明の実施の形態に係るコントローラ装置における、指を検出するセンサの設定例を表す説明図である。
【
図7】本発明の実施の形態に係るコントローラ装置における、指を検出するセンサの設定の別の例を表す説明図である。
【
図8】本発明の実施の形態に係るコントローラ装置におけるジョイスティックの検出結果の補正方法の例を表す説明図である。
【発明を実施するための形態】
【0008】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るコントローラ装置1は、
図1に例示するように、コントローラ本体10と、コントローラ本体10とユーザの手との位置関係が保たれるようにする固定具20とを含んで構成され、有線または無線にて情報処理装置2との間で通信可能に接続される。本実施の形態の以下の説明において、各部の大きさやその比、配置等は一例であり、本実施の形態の例は、図示等した大きさや比率、配置に限られるものではない。
【0009】
なお
図1(a)は、本発明の実施の形態のコントローラ装置1を正面やや左側から見た概略斜視図、
図1(b)は、当該コントローラ装置1を背面側から見た概略斜視図を示す。
【0010】
コントローラ装置1の固定具20は、例えばコントローラ本体10に両端が固定された環状のベルト部材であり、ユーザはこの固定具20とコントローラ本体10との間に人差し指から小指までの4本の指を通した状態で固定具20のベルト部材を締めて(固定具20とコントローラ本体10との間の間隙を狭くして)、コントローラ本体10が手の平に接した状態で、ユーザの手にコントローラ本体10を装着する。このように固定具20によりコントローラ装置1を手に装着することで、ユーザがコントローラ本体10を把持した状態(指をコントローラ本体10に巻き付けて保持した状態)から、指を伸ばした状態としても、コントローラ本体10がユーザの手から離れて落ちてしまうことがなくなる。
【0011】
コントローラ本体10は、ユーザが固定具20に通した指の少なくとも一部(ここでは人差し指から小指)で把持可能な把持部11と、操作部12とを含む。把持部11は、実質的に多角形柱状をなし、操作部12が、この把持部11から連続して形成される。また、操作部12には、正面側にジョイスティック15と、ボタン操作部16とを含み、背面側に、揺動ボタン17及びボタン18を備えて構成される。またこの操作デバイス10は、内部に制御回路19を含んで構成されている。
【0012】
この揺動ボタン17は、ユーザが固定具20によりコントローラ装置1を手に装着し、把持部11を把持可能となったとき、ユーザの人差し指が到達する位置に配される。また、ジョイスティック15及びボタン操作部16は、このときにユーザの親指が到達する位置に配される。つまりユーザは、操作部12の揺動ボタン17は人差し指で操作し、親指で正面側のジョイスティック15またはボタン操作部16に含まれるボタンを操作する。
【0013】
ボタン18は、コントローラ装置1の背面側の、ユーザが固定具20によりコントローラ装置1を手に装着して把持部11を把持したときに中指、薬指、小指が到達する位置の少なくとも一箇所に設けられる。
図1の例では、中指で操作されるボタン18Aと、薬指及び小指で操作されるボタン18Bとを設けた例を示している。
【0014】
本実施の形態の一例では、第2のセンサ22の少なくとも一つがボタン18のボタントップ(ボタンを押下するときに力を加える位置)に配される。またボタン18は、
図1に例示するように、把持部11の背面に配され、把持部11の長手方向に延びる回転軸を中心として、把持部11の背面の当該回転軸の位置での接線方向に、ボタントップの面が位置する突出位置と、側面側の面に平行となるまで押し込まれた押し込み位置との間でボタントップが揺動可能なボタンであってもよい。この場合、ボタン18の面のうち、このボタン18を操作する際に必ず指が接触することとなる(指の長さによらずボタン18の押下操作の際に指が触れることとなる)位置、例えば比較的上記回転軸に近い側の位置に第2のセンサ22を配する。
【0015】
ユーザが固定具20によりコントローラ装置1を手に装着したとき、ユーザの中指、薬指、小指の指が当接する把持部11上の位置には、ユーザの上記各指と第1のセンサ21自身との空間的な位置の変位に応じた値を出力して、ユーザの各指が把持部11の表面に対して近接しているかどうかを検出する少なくとも一つの第1のセンサ21が配される。本実施の形態の一例では、この第1のセンサ21は、ユーザの中指、薬指、小指の指の付け根部分が当接する把持部11上の位置に配される。この第1のセンサ21は例えば静電センサ21Sと、当該静電センサ21Sの検出結果を電気的信号に変換して出力するセンサ回路21Tとを含んで構成される(図ではこれらをまとめて第1のセンサ21として図示している)。
【0016】
本実施の形態の例では、一般的な成人の手の幅の平均の長さを超える長さに亘って、複数の第1のセンサ21を、実質的に把持部11の長手方向に沿って一列に配する。
図2の例では、6つの第1のセンサ21を一列に配した例としているが、この数に限られるものではない。
【0017】
さらにユーザが固定具20によりコントローラ装置1を手に装着して把持部11を把持したとき、ユーザの中指、薬指、小指の腹から先端までの範囲が当接するコントローラ本体10上の位置には、複数の第2のセンサ22が配される。この第2のセンサ22は、ユーザの上記各指と第2のセンサ22自身との空間的な位置の変位に応じた値を出力し、ユーザの各指がこれら第2のセンサ22が配されている位置に対して近接しているかを検出する。この第2のセンサ22もまた、例えば静電センサ22Sと、当該静電センサ22Sの検出結果を電気的信号に変換して出力するセンサ回路22Tとを含んで構成される(図ではこれらをまとめて第2のセンサ22として図示している)。
【0018】
なお、ここでは第1,第2のセンサ21,22はいずれも静電センサである例としているが、本実施の形態はこれに限られず、カメラや、光学センサ、焦電センサ、超音波センサ等であっても、指や手の表面との相対的な位置関係(距離や変位等、空間的な位置の変位)に応じた情報が得られればよい。
【0019】
本実施の形態の一例では、複数の第2のセンサ22は二次元的に配される。
図2の例では、把持部11の長手方向に2列の第2のセンサ22を配しており、第1のセンサ21に近い側の第1の列の第2のセンサ22は6つ、第1のセンサ21から離れた側の第2の列の第2のセンサ22は各ボタン18上に一つ以上配されている。
【0020】
操作部12のジョイスティック15は、ユーザにより傾倒操作可能なスティック15Sを含む。本実施の形態の一例では、このスティック15Sの頂部(ユーザがジョイスティック15を操作する際に親指で触れる位置)には、親指との空間的な位置の変位に応じた値を出力し、指の位置を検出する指センサ23を備えてもよい。
【0021】
この指センサ23は、第1,第2のセンサ21,22と同様、静電センサを用いたものでよい。または、この指センサ23は、例えば、コントローラ本体10の正面側であって、その表面の法線方向を中心とし、コントローラ本体10から正面方向を見て、コントローラ本体10の左側面側から右側面側までの比較的広角の角度範囲を検出可能範囲として、この検出可能範囲においてユーザの親指を検出してもよい。この場合、指センサ23は、当該親指を検出した位置(上記角度範囲内の角度)や、指センサ23からユーザの親指までの距離等を検出し、これらの情報を含む、検出結果情報を制御回路19に出力することとなる。このような指センサ23としては例えば、カメラや、光学センサ、超音波センサ、焦電センサ等を用いてもよい。
【0022】
ジョイスティック15及びボタン操作部16は、ユーザの親指等によって傾倒操作または押下操作される。これらジョイスティック15やボタン操作部16は、当該操作がされたジョイスティック15自身や、ボタン操作部16に含まれるボタンを特定する情報とともに、傾倒方向や傾倒量(傾倒角度に応じた量)の情報や、押下された旨の情報等、操作の内容を表す情報を制御回路19に出力する。
【0023】
揺動ボタン17は、ユーザの人差し指で押し込み操作され、その押し込み量(ボタンの移動量)を表す情報を制御回路19に出力する。具体的にこの揺動ボタン17は、ポテンショメータ等を含んで構成できるが、押し込み量が検出できれば、この構成に限られるものではない。
【0024】
ボタン18もまた、ユーザにより押下操作されたときに、自身を特定する情報とともに、押下された旨の情報等、操作の内容を表す情報を、制御回路19に出力する。
【0025】
制御回路19は、マイクロコンピュータ等のプログラム制御デバイスを含み、メモリ等の記憶手段に格納されたプログラムに従って動作する。またこの制御回路19は、第1,第2のセンサ21,22や、指センサ23、操作部12のジョイスティック15,ボタン操作部16,揺動ボタン17(さらにボタン18)に接続され、これら第1,第2のセンサ21,22及び指センサ23の出力に基づく信号や、ジョイスティック15、ボタン操作部16等から入力される操作の内容を表す信号等、各種の信号を受け入れて情報処理装置2に対して送出する。この制御回路19は、例えばブルートゥース(登録商標)等の無線通信インタフェース、またはUSBや有線LAN等の有線通信インタフェース等を含み、この無線通信インタフェースや有線インタフェースを介して、情報処理装置2との間で種々の信号を授受する。
【0026】
[センサによる検出の状態]
ここで、種々の大きさの手に対する第1,第2のセンサ21,22による検出の例について説明する。
図3(a)は比較的手の小さいユーザがコントローラ本体10の把持部11を把持したときの第1,第2のセンサ21,22と、ユーザの各指の位置関係を例示する説明図である。
図3では、説明の便宜のため、ユーザの手を透過して示している。なお、
図3では、実際には第1,第2のセンサ21,22はコントローラ装置1の表面である曲面状に配置されているが、模式的に平面に投影した状態で図示している。
【0027】
また
図3(b)は、比較的手の大きいユーザがコントローラ本体10の把持部11を把持したときの第1,第2のセンサ21,22と、ユーザの各指の位置関係を例示する説明図である。なお
図3の例では、第1のセンサ21は、人差し指側(揺動ボタン17に近い側)から順に、第1のセンサ21A,21B,…21Fと6つ配列されているものとする。また第2のセンサ22は、2列に配列され、第1のセンサ21に近い側の列には、人差し指側から順に、第2のセンサ22A,22B,…22Fが6つ配列され、第1のセンサ21から遠い側の列には、中指により操作されるボタン18A上に第2のセンサ22Gが配され、薬指と小指との二本の指で操作されるボタン18B上には、第2のセンサ22H,22Iの2つが配されている例を示している。
【0028】
図3(a)に例示するように、比較的手の小さいユーザが把持部11を把持し、揺動ボタン17を押下可能な位置に人差し指を配すると、揺動ボタン17に近い側の第1のセンサ21の一部、例えば第1のセンサ21A,B,C,Dの4つが指の接触を検出する。
【0029】
既に説明したように、これら第1のセンサ21は、ユーザの中指、薬指、小指の指の付け根部分が当接する部分に配されているので、ユーザが指を伸ばしていると曲げているとに関わらず、ユーザが把持部11を把持可能な状態でコントローラ装置1を装着している限り、これら第1のセンサ21A,B,C,Dは定常的に指がコントローラ装置1の把持部11の表面に接触している状態にあることを検出することとなる。
【0030】
またこの状態でユーザが把持部11を把持している間は、第2のセンサ22A,22C,22Dがそれぞれ中指,薬指,小指の基節骨に相当する部位(基節骨を内包する、中手指節間関節(MP)と近位指節間関節(PIP)との間の部分)の皮膚に接触し、ユーザの指が接触している状態にあることを表す信号を出力している状態となる。
【0031】
そこで以下では、中指の状態を検出するために第2のセンサ22Aを用いることとし、薬指(のみ)の状態を検出するために第2のセンサ22Cを用いることとする。また小指(のみ)の状態を検出するために、第2のセンサ22Dを用いることとする。このように、ユーザの各指の状態を検出する第2のセンサ22を選択する方法については後に述べる。
【0032】
ここでユーザが指をやや伸ばす(指先だけ伸ばす状態とする)と、第1のセンサ21による指の検出状態は変化せず、第2のセンサ22A,22C,22Dは、ユーザの指が接触している状態にあることを表す信号を出力する。一方、指先がボタン18から離れるため、第2のセンサ22G,22H,22Iは、各指先までの距離を表す信号を出力している状態となる。
【0033】
さらにユーザが指を伸ばしていくと、第1のセンサ21による指の検出状態は変化しないが、指の腹の部分が把持部11から離れた状態では、第2のセンサ22A,22C,22Dは、指との空間的な位置の変位に応じた信号を出力するか、指が検出されないことを表す信号を出力するようになる。また、第2のセンサ22G,22H,22Iは、指先との空間的な位置の変位に応じた信号を出力している状態か、または指が検出されないことを表す信号を出力するようになる。なお、本実施の形態の例では、第2のセンサ22は、指または指先との空間的な位置の変位に応じた信号として、例えば、指先が第2のセンサ22自身から離れるほど、値が小さくなる検出値を出力する。
【0034】
さらにユーザが中指だけを伸ばした場合、第1のセンサ21による指の検出状態は変化しないが、把持したときに中指が接触していた第2のセンサ22A,22Gは、指との空間的な位置の変位に応じた信号を出力するか、指が検出されないことを表す信号を出力するようになる。このとき、第2のセンサ22Bは中指と薬指との双方に接触しているため、いずれかの指が接触している限り、指が接触している状態にあることを表す信号を出力している状態となる。つまりこの状態(中指だけを伸ばした状態)では、第2のセンサ22Bは指が接触している状態にあることを表す信号を出力している状態となる。
【0035】
また第2のセンサ22C,22D,22H,22Iは、それぞれ薬指、小指が接触した状態にあるため、指が接触している状態にあることを表す信号を出力する。
【0036】
また比較的手の大きいユーザが把持部11を把持し、揺動ボタン17を押下可能な位置に人差し指を配すると、
図3(b)に例示するように、すべての第1のセンサ21A,21B,…21Fが、指が接触している状態にあることを検出する。なお、第1のセンサ21は、ユーザの中指、薬指、小指の指の付け根部分が当接する部分に配されているので、ユーザが指を伸ばしていると曲げているとに関わらず、ユーザが把持部11を把持可能な状態でコントローラ装置1を装着している限り、これら第1のセンサ21Aないし21Fは定常的にユーザの指が接触している状態にあることを検出することとなる。
【0037】
またこの状態でユーザが把持部11を把持している間は、第2のセンサ22Aが中指、第2のセンサ22Bは中指または薬指、第2のセンサ22C,Dは薬指、第2のセンサ22Eは薬指または小指、第2のセンサ22Fは小指のそれぞれの基節骨に相当する部位(基節骨を内包する、中手指節間関節(MP)と近位指節間関節(PIP)との間の部分)の皮膚に接触し、指が接触している状態にあることを表す信号を出力している状態となる。
【0038】
そこで以下では、中指の状態を検出するために第2のセンサ22Aを用いることとし、薬指(のみ)の状態を検出するために第2のセンサ22Dを用いることとする。また小指(のみ)の状態を検出するために、第2のセンサ22Fを用いることとする(ユーザの各指の状態を検出する第2のセンサ22を選択する方法及び、別の方法については後に述べる)。
【0039】
ここでユーザが指をやや伸ばす(指先だけ伸ばす状態とする)と、第1のセンサ21による指の検出状態は変化しないが、指先が把持部11から離れたとき、第2のセンサ22A,22D,22Fは、指が接触している状態にあることを表す信号を出力する状態を維持し、第2のセンサ22G,22H,22Iは、(ボタン18から指先が離れるため)指先との空間的な位置の変位に応じた信号を出力している状態となる。
【0040】
さらにユーザが指を伸ばしたとき、第1のセンサ21による指の検出状態は変化しないが、指の腹の部分が把持部11から離れるので、第2のセンサ22A,22D,22Fは、指との空間的な位置の変位に応じた信号を出力するか、指が検出されないことを表す信号を出力するようになる。また、第2のセンサ22G,22H,22Iもまた、指先との空間的な位置の変位に応じた信号を出力している状態か、または指が検出されないことを表す信号を出力するようになる。
【0041】
さらにユーザが中指だけを伸ばした場合、第1のセンサ21による指の検出状態は変化しないが、把持したときに中指が接触していた第2のセンサ22A,22Gは、指との空間的な位置の変位に応じた信号を出力するか、指が検出されないことを表す信号を出力するようになる。
【0042】
また第2のセンサ22D,22F,22H,22Iは、それぞれ薬指、小指が接触した状態にあるため、指が接触している状態にあることを表す信号を出力する。
【0043】
[センサの感度設定]
なお、ユーザが指を伸ばしきったときに第1のセンサ21から指の付け根がわずかに離れても、第1のセンサ21による指の検出状態を変化させないようにするために、第1のセンサ21の検出感度は、第2のセンサ22の検出感度より高く設定されることが好ましい。
【0044】
具体的には
図4に例示するように、第2のセンサ22のセンサ回路22Tが、静電センサ22Sの静電容量(C)に対応して、検出対象であるユーザの指との空間的な位置の変位(D)に応じた値を多段階的に(例えば8ビットの信号として)出力する(
図4において破線で示す)のに対し、第1のセンサ21のセンサ回路21Tは、静電センサ21Sの静電容量(C)が所定のしきい値Cthを超えたときに8ビットの最大値であるディジタル値「255」、そうでない場合は最小値であるディジタル値「0」を出力するようにしておく。
【0045】
これにより、第2のセンサ22がユーザの指がどれだけ近接しているかにより、段階的な信号を出力するのに対して、第1のセンサ21はユーザの指がある程度近接している場合には接触している状態にある場合と同じ信号を出力することとなる。
【0046】
[ヒステリシス]
さらに第1のセンサ21のセンサ回路21Tは、その出力にヒステリシスが設定されてもよい。すなわち各センサ21Sに対応するセンサ回路21Tは、所定のタイミングごとに繰り返して、対応するセンサ21Sの静電容量に基づく信号(ディジタル値)を得ているが、センサ回路21Tはそれぞれが過去の所定回数(N回とする)に亘って得た信号(検出値)を保持し、当該保持している信号に対する所定の統計演算結果(例えば最大値、中央値、平均値等)を出力することとする。
【0047】
例えば統計演算として最大値を出力するものとすると、ユーザの指の付け根が接触していたセンサ21Sから一時的に離れた場合であっても、当該センサ21Sに対応するセンサ回路21Tは、過去N回に亘って得た信号の最大値の信号を出力するため、長期に亘って接触していない状態が継続しない限り、ユーザの指の付け根が接触しているものとして信号を出力し続ける。
【0048】
[センサの選択]
また、本実施の形態の一例では制御回路19が次のように動作する。本実施の形態の一例に係る制御回路19は、保持しているプログラムを実行することにより、機能的に、
図5に例示するように、手幅検出部51と、割り当て設定部52と、指検出部53と、出力部54とを含んで構成される。
【0049】
なお、この制御回路19は既に述べたように、ジョイスティック15や、ボタン操作部16、揺動ボタン17等から得られる信号を処理するが、これらの処理は、広く知られた処理を採用できるので、ここでの詳しい説明を省略する。
【0050】
手幅検出部51は、第1のセンサ21が出力する信号を得て、ユーザの手の幅を推定する。具体的にこの手幅検出部51は、カウンタを「0」にリセットしてから、人差し指側(揺動ボタン17側)に配されている第1のセンサ21Aから順に、第1のセンサ21の出力信号(対応するセンサ21Sの静電容量を表す信号、つまり検出値)を調べる。
【0051】
そして手幅検出部51は、調べた第1のセンサ21が指の接触を検出していれば(調べた第1のセンサ21の出力する検出値が予め定めた接触判定用のしきい値を超えていれば)カウンタを「1」だけインクリメントする。また、最初に指を検出していない第1のセンサ21(出力する検出値が予め定めた接触判定用のしきい値を下回る第1のセンサ21)が見いだされるか、または最後の第1のセンサ21まで調べ終えると、手幅検出部51は、その時点のカウンタの値を、手幅を表す情報として出力する。
【0052】
一例として、比較的手の小さいユーザが把持した場合を表す
図3(a)の例では、第1のセンサ21A,B,C,Dの4つが指の接触を検出し、第1のセンサ21E,Fは指の接触を検出していない。
【0053】
この場合、手幅検出部51は、第1のセンサ21Aから順に出力を調べ、第1のセンサ21Eで初めて指の接触を検出していないセンサを見いだす。従って、手幅検出部51は、第1のセンサ21A,21B,21C,21Dで指の接触を検出しているものとしてカウンタを「1」ずつインクリメントし、第1のセンサ21Eを調べた時点でのカウンタの値「4」を出力する。
【0054】
また、比較的手の大きいユーザが把持した場合を表す
図3(b)の例では、全ての第1のセンサ21Aないし21Fが指の接触を検出している。この場合、手幅検出部51は、第1のセンサ21Aから順に出力を調べつつカウンタをインクリメントしてゆき、最後の第1のセンサ21Fにおいても指の接触を検出しているとしてカウンタをインクリメントする。従って、手幅検出部51は、第1のセンサ21Aないし21Fのすべてで指の接触を検出しているものとしてカウンタを「1」ずつインクリメントし、最後の第1のセンサ21Fを調べた時点でのカウンタの値「6」を出力する。
【0055】
割り当て設定部52は、手幅検出部51が出力する値を参照して、ユーザの中指、薬指、小指のそれぞれの曲げ伸ばしを検出する第2のセンサ22を、複数の第2のセンサ22のうちから選択して、当該選択した第2のセンサ22を特定する情報を出力する。
【0056】
具体的にこの割り当て設定部52は、予め、手幅検出部51が出力する値に対応して、ユーザの中指、薬指、小指のそれぞれの曲げ伸ばしを検出する第2のセンサ22(本実施の形態では、第1のセンサ21とボタン18までの間に配される第2のセンサ22Aないし22Fのいずれか)を特定する情報を関連付けて記憶しておく(
図6)。
【0057】
図6の例では、手幅検出部51が出力する値(W)に対し、中指、薬指、小指のそれぞれの基節骨に相当する部位との空間的な位置の変位に対応する信号(検出値)を出力する第2のセンサ22を特定する情報MM,RM,PMを関連付けて保持している。
【0058】
図6には、具体的な例として、
図3に示した例に対応した設定が示されているが、この設定は、経験的な方法など、種々の方法で決定可能であり、コントローラ装置1の製造者側で予め定めて、制御回路19内のメモリに記憶させておくものとする。なお、この設定は情報処理装置2等から入力される指示によって書き換えられてもよい。
【0059】
以下の例では、手幅検出部51が出力する値(W)に対応して、基節骨に相当する部位を検出する第2のセンサ22を特定する情報を記憶しており、中指、薬指、小指のそれぞれの基節骨に相当する部位との空間的な位置の変位に対応する信号(検出値)を第2のセンサ22Aないし22Fが出力する場合を例とする。
【0060】
指検出部53は、割り当て設定部52が出力する情報を得て、当該情報で特定される第2のセンサ22の出力に基づいて、ユーザの各指の曲げ伸ばしの状態を表す情報を選択的に出力する。
【0061】
例えば、割り当て設定部52が、中指、薬指、小指のそれぞれの基節骨に相当する部位との空間的な位置の変位を検出する第2のセンサ22を特定する情報をMM,RM,PMとして、第2のセンサ22A、22C、22Dを特定する情報をそれぞれ出力しているとする。この場合、指検出部53は、第2のセンサ22Aが出力する情報を中指の曲げ伸ばしを表す情報として、第2のセンサ22Cが出力する情報を薬指の曲げ伸ばしを表す情報として、さらに第2のセンサ22Dが出力する情報を小指の曲げ伸ばしを表す情報として選択して出力する。
【0062】
このとき、第2のセンサ22B,22E,22Fの出力する信号は、指検出部53のこの処理により破棄される(出力されない)。出力部54は、指検出部53が出力する、割り当て設定部52が選択した第2のセンサ22の各々により検出された、各指との空間的な位置の変位に対応する情報(中指、薬指、小指の曲げ伸ばしの状態を表す情報として扱われる)を、情報処理装置2に対して送出する。
【0063】
すなわち、指が曲げられていれば、コントローラ装置1の把持部11に指が近接または接触するため、各指に対応するものとして選択された第2のセンサ22の出力する信号である検出値が、指と当該センサ22とが近接しているほど大きい値であり、接触しているときに最大値となる場合、この検出値の大きさが指の曲げ伸ばしの程度を表す情報としても利用できる。
【0064】
[指の位置推定の別の例]
また、ここまでの説明では、制御回路19が、ユーザの手に接触していることを検出している第1のセンサ21の数によって手の幅を推定するとともに、当該手の幅の推定結果に基づいて、各指に係る情報を出力する第2のセンサ22をそれぞれ選択し、選択した第2のセンサ22が出力する検出値をそのまま用いて各指の曲げ伸ばしの状態を得ていたが、本実施の形態はこれに限られない。
【0065】
本実施の形態のある例では、制御回路19は、保持しているプログラムを実行することにより、機能的に、
図5に例示したものと同様に、手幅検出部61と、割り当て設定部62と、指検出部63と、出力部54とを含む。なお、既に説明したものと同様の構成となるものについては、同じ符号を付して詳細な説明を省略する。
【0066】
また以下の説明では制御回路19によって実現される手幅検出部61等は、
図7(a)または
図7(b)に例示するように、第1のセンサ21及び第2のセンサ22が配列されている二次元的な領域を、XY直交座標系で表し、第1のセンサ21や第2のセンサ22のそれぞれの位置及び範囲をこのXY直交座標系内の座標(x,y)によって表すものとする。
【0067】
以下の説明では具体的に、ユーザがコントローラ装置1を自然に把持したときに中指の付け根にあたる位置に配されている矩形状の第1のセンサ21AのX軸方向の位置を「1.0」、第1のセンサ21BのX軸方向の位置を「2.0」、…第1のセンサ21FのX軸方向の位置を「6.0」とする。
【0068】
また、第1のセンサ21の第2のセンサ22が配されている側とは反対側の端に当たるY軸方向の位置を「0」として、第1のセンサ21が配列されている方向をX軸、これに直交して第2のセンサ22が配されている範囲の側へ向かう方向をY軸とする。
【0069】
手幅検出部61は、第1のセンサ21Aから順に、第1のセンサ21の出力信号(対応するセンサ21Sの静電容量を表す信号、つまり検出値)を調べる。
【0070】
手幅検出部61は、
図7に例示するように、第1のセンサ21A,B…のそれぞれの幅方向の中心に相当する上記座標系内での位置にて、対応する第1のセンサ21A,B…が出力する検出値が得られたものとして、互いに隣接する第1のセンサ21間(互いに隣接する一対の第1のセンサ21の中心座標間の位置)での推定検出値を、第1のセンサ21A,B…の検出値を内挿することで決定する。
【0071】
具体的にここでの例では互いに隣接する一対の第1のセンサ21ごとに、当該一対の第1のセンサ21の検出値を線形補間することで、当該一対の第1のセンサ21間の位置における推定検出値を求める。
【0072】
手幅検出部61は、ここで得られた検出値または内挿して得られた推定検出値が、予め定めた接触判定用のしきい値を下回る座標を探索する。つまり手幅検出部61は、
図7に例示しているように、推定検出値(または検出値)を結んでできる折れ線または曲線が、接触判定用のしきい値の値を表す線分と交差する点を探索する。
【0073】
図7(a)は、中指の付け根が第1のセンサ21Aの位置にあり、小指の付け根が第1のセンサ21D,21Eの間であって、第1のセンサ21Dに近い側にある場合を示している(なお、ユーザがコントローラ装置1を自然に保持したときに、第1のセンサ21Aの幅方向(第1のセンサ21の配列方向)の中心線の延長線上にユーザの中指が位置するように、揺動ボタン17の位置と第1のセンサ21Aの位置とを実験的に調整しておく)。
【0074】
このとき、第1のセンサ21のそれぞれの検出値は、
図7(a)に示されるように、第1のセンサ21Aから21Dまではユーザの手(または指)が接触している状態にあることを表す検出値となっている。また第1のセンサ21Dは、ユーザの手(または指)が接触しているが、ユーザの手や指の端に近いため、第1のセンサ21Aから21Cの検出値に比べると、比較的低い検出値が生じている状態となっている。また、第1のセンサ21Eにはユーザの手や指が近接していない状態となっているので、その検出値は実質的に「0」となっている(実際にはノイズの影響で「0」ではないが「0」と見なせる程度に小さい値となっている)。
【0075】
手幅検出部61は、互いに隣接する一対の第1のセンサ21、つまり第1のセンサ21Aと21B、第1のセンサ21Bと21C、第1のセンサ21Cと21D、…の間の線形補間P(互いに隣接する一対の第1のセンサ21の検出値を線分で結んで補間した値)を得る。
【0076】
手幅検出部61は、線形補間の結果の値が、接触判定用のしきい値となる点Qを探索する。ここでは、隣接する第1のセンサ21の検出値がいずれも接触判定用のしきい値を超えている第1のセンサ21Aと21Bとの間、第1のセンサ21Bと21Cとの間、第1のセンサ21Cと21Dとの間では線形補間の結果が接触判定用のしきい値を下回る点はない。しかしながら第1のセンサ21Dと、第1のセンサ21Eとの間では、第1のセンサ21D(中心が座標xdにあるものとする)の検出値Vdが接触判定用のしきい値を超え、第1のセンサ21E(中心が座標xeにあるものとする)の検出値Veは接触判定用のしきい値を下回るので、これらの線形補間結果のうちには、接触判定用のしきい値Vthとなる点Qが存在し、当該点の座標が、(Vd-Ve)・xq/(xd-xe)+Vd=Vthの方程式の解として得られる。手幅検出部61は、この方程式を数値的に解いて、点Qの位置の座標の情報を取得する。なお、点Qが見いだせない場合は、点QのX座標を、第1のセンサ21のうち、その位置のX軸の値が最も大きい第1のセンサ21のX軸の位置の値(ここでは第1のセンサ21Fの「6.0」)とする。
【0077】
そして手幅検出部61は、第1のセンサ21Aの端(第1のセンサ21Bとは離れた側の端)Rからこの点Qまでの範囲を、ユーザの手幅の範囲として検出する。
【0078】
この例において、線形補間など内挿を用いない方法ではユーザの手幅は第1のセンサ21Cまでの範囲と判断されるが、内挿を行うここでの例によれば、ユーザの手幅の情報がより精密に取得できる。
【0079】
またこの例では、割り当て設定部62は、次のようにして、手幅検出部61が出力する値を参照して、ユーザの中指、薬指、小指のそれぞれの曲げ伸ばしを検出する第2のセンサ22を、複数の第2のセンサ22のうちから選択して、当該選択した第2のセンサ22を特定する情報を出力する。
【0080】
本実施の形態のこの例では、手幅に対する各指のX軸方向の位置を、手幅の値に対する割合で予め定めておく。具体的に手幅検出部61により検出される手幅(中指と人差し指との間の位置から小指の外側端までの長さ)がWhであるとき、中指の中心位置(中指と人差し指との間の位置からの距離で表す。以下同じ)をWh・αm、薬指の中心位置をWh・αr、小指の中心位置をWh・αsとすることとして、このαm,αr,αs(αm<αr<αs)を予め定めておく。なお、中指については常に決まった第2のセンサ22、例えば第2のセンサ22A及び22Gを設定することとしてもよい。この場合、αmを定める必要はない。
【0081】
割り当て設定部62は、この設定に基づいて、ユーザの中指、薬指、小指のそれぞれの中心位置の座標の情報を取得する。具体的に割り当て設定部62は、例えばαr=0.45,αs=0.74として定めておくものとすると、
図7(a)の例で、手幅がWh=5.2であれば、中指のX軸方向の座標αr×Wh=2.34、薬指のX軸方向の座標αs×Wh=3.7なので、第2のセンサ22Aと同じ群では、中指については第2のセンサ22Aの中心、薬指については第2のセンサ22Bと22Cとの間、小指については第2のセンサ22Cと22Dとの間に位置するものと推定する。また第2のセンサ22Gと同じ群では、中指については第2のセンサ22Gの中心、薬指及び小指については(ボタンの操作のため)、それぞれ第2のセンサ22H、第2のセンサ22Iに位置するものと推定する。
【0082】
また
図7(b)の例で、手幅Wh=6と推定したときには、中指のX軸方向の座標がαr×Wh=2.7、薬指のX軸方向の座標がαs×Wh=4.44なので、第2のセンサ22Aと同じ群では、中指については第2のセンサ22Aの中心、薬指については第2のセンサ22Bと22Cとの間、小指については第2のセンサ22Dと22Eとの間に位置するものと推定する。また第2のセンサ22Gと同じ群では、中指については第2のセンサ22Gの中心、薬指及び小指については(ボタンの操作のため)、それぞれ第2のセンサ22H、第2のセンサ22Iに位置するものと推定する。
【0083】
すなわち割り当て設定部62は、Y軸方向の位置が互いに異なる第2のセンサ22の群ごとに、ユーザの中指、薬指、小指のそれぞれの曲げ伸ばしの状態に係る情報を取得する第2のセンサ22を決定する。
【0084】
図7(a),(b)の例では、第2のセンサ22Aから22Fまでの列と、第2のセンサ22Gから22Iまでの列とが配されているので、Y軸方向の位置が互いに異なる第2のセンサ22の群は、第2のセンサ22Aから22Fまでの群と、第2のセンサ22Gから22Iまでの群となる。またここでは第2のセンサ22AのX軸方向の位置が「1.0」、第2のセンサBのX軸方向の位置が「2.0」…となるように、各センサが配されているものとする。
【0085】
割り当て設定部62は、各群に含まれる第2のセンサ22について、ユーザの中指、薬指、小指のそれぞれについて、当該取得した情報で表される座標が、(1)当該群に含まれるいずれかの第2のセンサ22(第2のセンサ22xとする)の中心座標Xに一致している場合には、割り当て設定部62は、当該指の曲げ伸ばしを検出する第2のセンサ22を、当該第2のセンサ22xに設定する。
【0086】
一方、ユーザの中指、薬指、小指のそれぞれについて、当該取得した情報で表される座標が、(2)当該群に含まれるいずれの第2のセンサ22の中心座標にも一致しない場合は、割り当て設定部62は、当該取得した座標に最も近接している第2のセンサ22xと、その次に近接している第2のセンサ22yとを検索する。
【0087】
そして割り当て設定部62は、検索により見いだされた2つの第2のセンサ22x,yを、当該指の曲げ伸ばしを検出する第2のセンサ22として設定する。
【0088】
この処理により、第2のセンサ22の群(Y軸方向の群)ごとに、ユーザの中指と薬指と小指とのそれぞれについての曲げ伸ばしを検出する第2のセンサ22が設定される。
【0089】
例えば
図7(a)の例であれば、例えば第2のセンサ22Aと同じ群では、中指については第2のセンサ22Aの中心、薬指については第2のセンサ22Bと22Cとの間、小指については第2のセンサ22Cと22Dとの間に位置するものと推定されているので、中指については第2のセンサ22A,G、薬指については第2のセンサ22B及びCと、22H、小指については第2のセンサ22C及びDと、22Iが、それぞれの指の曲げ伸ばしを検出する第2のセンサ22として設定される。
【0090】
指検出部63は、割り当て設定部62による設定に応じて、各指の曲げ伸ばしを検出するものとして設定されている第2のセンサ22の出力に基づいて、ユーザの各指の曲げ伸ばしの状態を表す情報を生成して出力する。
【0091】
具体的にこの指検出部63は、第2のセンサ22のある群において各指の曲げ伸ばしを検出するものとして設定された第2のセンサ22が1つであれば、当該第2のセンサ22が出力する情報を、対応する指の曲げ伸ばしを表す情報として出力する。
【0092】
また指検出部63は、第2のセンサ22のある群において各指の曲げ伸ばしを検出するものとして設定された第2のセンサ22が2つあるときには、次のようにして対応する指の曲げ伸ばしを表す情報を得る。
【0093】
すなわち、2つの第2のセンサ22のX軸方向の位置をそれぞれXα、Xβ,検出値をVα,Vβとし、割り当て設定部62が得た、対応する指の位置のX座標をXfとすると、求める指の曲げ伸ばしを表す情報Vを、
V=(Vα・|Xα-Xf|+Vβ・|Xβ-Xf|)/|Xβ-Xα|
(ただし、|x|はxの絶対値を意味する)
とする。このように指検出部63は、各第2のセンサ22(の中心)から指(の中心)までの距離に応じて各第2のセンサ22の検出値を重みづけして平均することで、指の中心での検出値を推定し、当該推定した検出値を、対応する指の曲げ伸ばしを表す情報として出力する。
【0094】
出力部54は、指検出部63が出力する各指とコントローラ装置1の表面との空間的な位置の変位に対応する情報(中指、薬指、小指の曲げ伸ばしの状態を表す情報として扱われる)を、情報処理装置2に対して送出する。
【0095】
[キャリブレーション]
また、第2のセンサ22の各センサ22Sは、個別の検出結果にばらつきがあることがある。すなわち、指が近接していない場合の静電容量C0が互いに異なるのが一般的である。
【0096】
そこで本実施の形態のある例では、コントローラ装置1の製造の際に、予め第2のセンサ22の各センサ22Sについて、検出の対象が近接していない状態での出力(以下、便宜的に基準静電容量と呼ぶ)C0を測定しておき、センサ22Sを特定する情報に関連付けて、当該情報で特定されるセンサ22Sの基準静電容量を、制御回路19のメモリに記録しておく。
【0097】
この例では、制御回路19は、例えば指検出部53の処理において、各第2のセンサ22iのセンサ回路22Tiの出力する信号(対応するセンサ22Sの静電容量を表す情報)Ciと、当該センサ22Sに関連付けて記憶された基準静電容量Ci0とを用い、当該第2のセンサ22iにより検出された信号として出力する値Cioutを次のように求めてもよい(i=A,B,…)。
Ciout=floor[(Ci-Ci0)/(Cmax-Ci0)×Coutmax]
ここで、Cmaxは測定される最大の静電容量の値、Coutmaxは出力する信号の最大値(例えば8ビットであれば「255」)を示す。またfloor[X]は、演算されたXの値を超えない最大の整数を求めることを表す。
【0098】
これにより、基準静電容量からの変化が、当該センサ22Sのダイナミックレンジ(測定可能範囲)に対してどれだけの割合となっているかを、検出結果として出力することとなり、センサごとのキャリブレーションを行うことができる。
【0099】
なお、第1のセンサ21のセンサ21Sについても同様のキャリブレーションを行ってもよい。
【0100】
この場合、各センサ21Sについて同様に基準静電容量C0を測定し、対応するセンサ回路21Tにこの値を記憶させる。そしてセンサ回路21Tは、対応する静電センサ21Sの静電容量(C)と、予め定められたしきい値Cthに基準静電容量C0を加えた補正しきい値Cth′とを比較する。センサ回路21Tは、静電センサ21Sの静電容量Cがこの補正しきい値Cth′を超えているときに、Coutmax(出力する信号の最大値、例えば8ビットであれば「255」)を出力し、そうでないときには、Coutmin(出力する信号の最小値、例えば8ビットであれば「0」)を出力する。
【0101】
[指の接触状態の検出閾値]
本実施の形態ではさらに、指の接触状態の検出閾値を低めに補正してもよい。つまり、制御回路19は、指検出部53の処理において、各第2のセンサ22iのセンサ回路22Tiの出力する信号(対応するセンサ22Sの静電容量を表す情報)Ciを用い、当該第2のセンサ22iにより検出された信号として出力する値Cioutを次のように求めてもよい(i=A,B,…)。
Ciout=f[Ci/C′max×Coutmax]
ここでf[X]は、XがCoutmaxを超えない間は、Xを超えない最大の整数を表し、XがCoutmaxを超えたときには、Coutmaxとなるような関数である。このとき、C′maxは、Ciの最大値Cmaxよりも小さい値(C′max<Cmax)としておく。これによりCiがC′max以上となるときにCoutmaxの値が出力されるようになり、指が、当該指を検出するものとして選択されたセンサ22Sの全体ではなく、ややずれて部分的に接触する状態となってしまい、Ciの本来の最大値よりもCiの出力値が低下したとしても、Cmaxoutが出力されることとなって、接触した状態であるとの識別が可能となる。
【0102】
さらにこの例においても、センサ22Sのキャリブレーションを行ってもよい。この場合、制御回路19は、例えば指検出部53の処理において、各第2のセンサ22iのセンサ回路22Tiの出力する信号(対応するセンサ22Sの静電容量を表す情報)Ciと、当該センサ22Sに関連付けて記憶された基準静電容量Ci0とを用い、当該第2のセンサ22iにより検出された信号として出力する値Cioutを次のように求める(i=A,B,…)。
Ciout=f[(Ci-Ci0)/(C′max-Ci0)×Coutmax]
ここでf[X],C′maxについては上述と同様である。
【0103】
なお、ここでのC′maxの値(閾値補正値と呼ぶ)は、情報処理装置2からの指示によって設定されてもよい。この例によると、情報処理装置2では、指の曲げ伸ばしの検出のダイナミックレンジを広くしたいときにはC′maxの値をできるだけCmaxに近い値とし、指の接触を確実に取得したいときにはCmax-C′maxが比較的大きくなるようにC′maxを設定する、といった処理が可能となる。
【0104】
[人差し指の検出]
また揺動ボタン17のボタントップ(揺動ボタン17を操作するときにユーザの指先が接触する部分)にも、人差し指の指先との空間的な位置の変位を検出して、当該検出した指先との空間的な位置の変位に応じた情報を出力する第2のセンサ22を配してもよい。
【0105】
[情報処理装置側での処理]
次に、本実施の形態のコントローラ装置1が送出した情報に基づく情報処理装置2における処理の例について説明する。
【0106】
本実施の形態のコントローラ装置1に接続された情報処理装置2は、コントローラ装置1からジョイスティック15やボタン操作部16の操作の内容と、揺動ボタン17の押し込み量を表す情報とともに、手幅の検出結果を表す情報や、中指から小指までの各指の曲げ伸ばし量を表す情報を、所定のタイミングごと(例えば1/60秒に一度のタイミングごと)に繰り返し受け入れる。
【0107】
ここで中指から小指までの各指の曲げ伸ばし量を表す情報は既に述べたように、指を伸ばしたときに「0」、指が曲げられて、把持部11に接触している状態では最大値(例えば8ビットの情報とする場合「255」)となる情報である。また手幅を表す情報は、ユーザが手にコントローラ装置1を装着したときに、指または手の平の接触を検出している第1のセンサ21の数(人差し指側の第1のセンサ21から連続して指等の接触を検出している第1のセンサ21の数)に相当する。
【0108】
情報処理装置2は、この中指から小指までの各指の曲げ伸ばし量を表す情報等を用いて、ゲームアプリケーションの処理を行うほか、例えば、コントローラ装置1の持ち方が適切であるか否かを判定する処理を行ってもよい。
【0109】
[持ち方の判定]
この処理では、情報処理装置2は、次のように動作する。情報処理装置2は、手幅の検出結果を表す情報や、中指から小指までの各指の曲げ伸ばし量を表す情報を参照して、ユーザのコントローラ装置1の持ち方を判定してもよい。
【0110】
具体的に情報処理装置2は、手幅の検出結果を表す情報である、コントローラ装置1の第1のセンサ21の検出結果、すなわち人差し指側の第1のセンサ21Aから連続して指等の接触を検出している第1のセンサ21の数Nwを参照する。
【0111】
また情報処理装置2は、中指から小指までの各指の曲げ伸ばし量を表す情報を参照し、第1のセンサ21の数Nwが所定のしきい値を下回っているときに、中指から小指までの各指の曲げ伸ばし量を表す情報の少なくとも一つ(またはそのうち複数、あるいはその全てなどとしてもよい)が、指との空間的な位置の変位に応じた情報(検出値)が所定のしきい値を下回ることを表している場合(指が曲げられてコントローラ装置1に接触、あるいは近接している状態にあることを表している場合)に、コントローラ装置1の持ち方が異常であると判定する。
【0112】
例えばユーザが固定部20に手を通すことなくコントローラ装置1を把持した場合に、第1のセンサ21に触れることなく、第2のセンサ22に触れることとなって、このような状態となる。
【0113】
情報処理装置2は、コントローラ装置1の持ち方が異常であると判定したときには、図示しないディスプレイ等に対し、「固定具を使って正しく装着してください」といったような案内を表示するなどして、ユーザに対して注意を促す。
【0114】
あるいは情報処理装置2は、コントローラ装置1の持ち方が異常であると判定したときには、コントローラ装置1から受信した、ユーザの操作に係る情報を破棄する(ゲームアプリケーションの処理等に利用しないよう制御する)こととしてもよい。このようにすると、コントローラ装置1を、想定された方法で把持しない限り、ゲーム等の操作を禁止するといった動作が可能となる。
【0115】
また別の例として、コントローラ装置1が左手用(コントローラ装置1の左側面に固定具20が配されているもの)と、右手用(コントローラ装置1の右側面に固定具20が配されているもの)との二種類ある場合に、情報処理装置2は、それぞれのコントローラ装置1における、第1のセンサ21の数Nwが所定のしきい値を下回っており、かつ、それぞれのコントローラ装置1から受信した、中指から小指までの各指の曲げ伸ばし量を表す情報の全て(あるいはその一部としてもよい)が、指が接触している状態(出力値が最大値となっている状態)であるときには、ユーザがコントローラ装置1を左右逆に保持しているとして、その旨を表す案内をディスプレイ等に対して出力してもよい。
【0116】
また本実施の形態のある例では、コントローラ装置1の制御回路19が、コントローラ装置1に対して与えられた加速度を検出する加速度センサを備え、当該加速度センサによって検出した加速度を表す情報を、情報処理装置2に出力してもよい。
【0117】
この場合にも情報処理装置2は、第1のセンサ21の数Nwが所定のしきい値を下回っている状態で、加速度センサが表す値が所定のしきい値を超えるときに、コントローラ装置1の取り扱いが異常であると判断し、正しく装着することを求める案内をディスプレイ等に対して出力してもよい。
【0118】
なお、ここでは情報処理装置2は、正しく装着することを求める案内等をディスプレイ等に対して出力することとしたが、本実施の形態はこれに限られず、例えば音によって通知してもよいし、コントローラ装置1の制御回路19がバイブレータやハプティックデバイス等のユーザに振動や触覚を与えるデバイスを備えるときには、このようなデバイスを駆動するようコントローラ装置1に対して指示し、装着状態についての注意喚起を行ってもよい。
【0119】
[ジョイスティックの補正]
ジョイスティック15は、傾倒方向と傾倒角度とを表す情報を検出するが、ジョイスティック15において傾倒操作されるスティック等の操作対象は、ユーザが指を放したときに原点(傾倒角度が0度の位置)に戻るよう付勢されている。
【0120】
しかしながら当該付勢力によって原点に復帰したとき、ジョイスティック15の部品の製造ばらつきや、ユーザの取り扱いの次第によって必ずしも傾倒角度が0度の位置に戻らず、復帰誤差を有する場合がある。そこで従来、情報処理装置2は、復帰誤差の範囲として予め定めた角度Δθ未満の傾倒角度を検出している間は、ジョイスティック15の出力を無視して、傾倒していない状態である(傾倒角度が「0」である)として処理を行っていた(いわゆる不感帯を設けていた)。
【0121】
この場合、復帰誤差による誤検出はなくなるが、ジョイスティック15の操作可能範囲(ダイナミックレンジ)が縮小されることとなり、手に装着されるコントローラ装置1等、小型のデバイスに搭載される、比較的小型のジョイスティックの場合、操作性が課題となっていた。
【0122】
そこで本実施の形態では、ジョイスティック15の操作対象であるスティック15Sの頂部(ユーザがジョイスティック15を操作する際に親指で触れる位置)に、親指との空間的な位置の変位を検出する指センサ23を配し、この指センサ23の出力を用いて、上記ダイナミックレンジを拡大する処理を、情報処理装置2に行わせることとしてもよい。
【0123】
具体的に、情報処理装置2は、指センサ23が、親指が接触していないことを表す信号を出力しているとき(指との空間的な位置の変位に応じた情報(検出値)が、所定のしきい値より大きいとき)に、ジョイスティック15が出力する傾倒方向を表す情報φ0と、傾倒角度の情報θ0を、原点方向情報として記録する(
図8)。
【0124】
そして情報処理装置2は、その後、ジョイスティック15が出力する傾倒方向を表す情報φ、及び傾倒角度の情報θにより表現される、ジョイスティック15のスティック15Sの向き(スティック15Sの根元から頂点の方向に向かう線分)の情報を取得すると、次のように動作する。
【0125】
すなわち情報処理装置2は、
図8に例示するように、この取得した情報によって表される仮想的な線分が、スティック15Sの根元を中心とした仮想的球面Hと交差する位置Pを求め、原点がθ=0であるとしたときの、この位置Pの傾倒方向φ及び傾倒角度θ(スティック15Sの根元から見た傾倒方向及び傾倒角度)を、原点がφ=φ0,θ=θ0としたときにスティック15Sの根元から見た傾倒方向φ′,傾倒角度θ′に補正する。
【0126】
なお、ここでの例では、スティック15Sの根元が配される操作部12の面に平行な面(仮想的な面)において、所定の方向(例えばコントローラ装置1を床面に立てたときに右側面側の水平方向)をX軸として、このX軸からの角度で、傾倒方向φを定める例としている。
【0127】
本実施の形態のこの例によると、不感帯を設ける必要がなくなり、ジョイスティック15の操作性が向上する。
【符号の説明】
【0128】
1 コントローラ装置、2 情報処理装置、10 コントローラ本体、11 把持部、12 操作部、15 ジョイスティック、16 ボタン操作部、17 揺動ボタン、18 ボタン、19 制御回路、20 固定具、21 第1のセンサ、22 第2のセンサ、23 指センサ、51,61 手幅検出部、52,62 割り当て設定部、53,63 指検出部、54 出力部。