(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】クラスタベースのセンサ割り当て
(51)【国際特許分類】
G06F 3/0354 20130101AFI20241007BHJP
G06F 3/041 20060101ALI20241007BHJP
G06F 3/0488 20220101ALI20241007BHJP
【FI】
G06F3/0354 453
G06F3/041 595
G06F3/041 512
G06F3/0488
(21)【出願番号】P 2021573833
(86)(22)【出願日】2020-06-12
(86)【国際出願番号】 US2020037496
(87)【国際公開番号】W WO2020252311
(87)【国際公開日】2020-12-17
【審査請求日】2023-05-18
(32)【優先日】2019-06-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517160525
【氏名又は名称】バルブ コーポレーション
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】ニートフェルド、スコット・ダグラス
【審査官】岸 智史
(56)【参考文献】
【文献】特開2007-193840(JP,A)
【文献】米国特許出願公開第2015/0293695(US,A1)
【文献】特表2015-510203(JP,A)
【文献】特開2018-112778(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01、3/048-3/04895
G06F 3/033-3/039
(57)【特許請求の範囲】
【請求項1】
システムであって、
ハンドヘルドコントローラであって、前記ハンドヘルドコントローラのハンドル上に分散された複数の静電容量式パッドを含むタッチセンサアレイを有する、ハンドヘルドコントローラと、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶する1つ以上の非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されたとき、前記1つ以上のプロセッサに、
前記タッチセンサアレイから、前記複数の静電容量式パッドによって検出された静電容量値を受信することと、
前記静電容量値に少なくとも部分的に基づいて、前記複数の静電容量式パッドのうちのパッド対の間の相関を示す共分散行列を生成することと、
前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを判定することであって、各特徴ベクトルが、前記複数の静電容量式パッドのうちのパッドに対応し、前記パッドと前記複数の静電容量式パッドのうちの1つ以上の他のパッドとの間の相関を記述する、決定することと、
クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数の静電容量式パッドの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数の静電容量式パッドの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を含む行為を実行させる、システム。
【請求項2】
前記複数の静電容量式パッドが、n個のパッドのセットを含み、nが、第1の整数であり、
前記共分散行列の前記生成が、前記複数の静電容量式パッドのうちのd個の基準パッドのサブセットに少なくとも部分的に基づいて、n×d共分散行列として前記共分散行列を生成することを含み、dが、前記第1の整数未満の第2の整数であり、
前記複数の特徴ベクトルの前記判定が、n個のd次元特徴ベクトルを判定することを含む、請求項1に記載のシステム。
【請求項3】
前記複数の静電容量式パッドが、前記ハンドル上にパッドの行および列で分散され、前記行が、前記ハンドル上で実質的に水平方向に配向され、前記列が、前記ハンドル上で実質的に垂直方向に配向され、
d個の基準パッドの前記サブセットが、パッドの列を含む、請求項2に記載のシステム。
【請求項4】
前記クラスタリングアルゴリズムが、k平均クラスタリングアルゴリズムであり、
前記複数の特徴ベクトルの前記クラスタリングが、
前記k平均クラスタリングアルゴリズムを、
複数のk個のクラスタおよび
d次元空間内の前記k個のクラスタの中心推定値を含む入力パラメータで初期化することと、
前記複数の特徴ベクトルの各特徴ベクトルを、前記特徴ベクトルから最小距離である中心推定値を有する前記k個のクラスタのうちのクラスタに割り当てることと、
各中心推定値を更新して、k個の更新されたクラスタ中心を取得することであって、クラスタの中心推定値が、前記クラスタに割り当てられた前記特徴ベクトルに少なくとも部分的に基づいて更新される、取得することと、を含む、請求項2に記載のシステム。
【請求項5】
ハンドヘルドコントローラを含むシステムの1つ以上のプロセッサによって実行される方法であって、
前記1つ以上のプロセッサによって、前記ハンドヘルドコントローラのタッチセンサアレイの複数のセンサによって生成されたデータを受信することであって、前記複数のセンサが、前記ハンドヘルドコントローラのハンドル上に分散されている、受信することと、
前記1つ以上のプロセッサによって、前記データに少なくとも部分的に基づいて、前記複数のセンサのうちのセンサ対の間の相関を示す共分散行列を生成することと、
前記1つ以上のプロセッサによって、前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを判定することであって、各特徴ベクトルが、前記複数のセンサのうちのセンサに対応し、前記センサと前記複数のセンサのうちの1つ以上の他のセンサとの間の相関を記述する、決定することと、
前記1つ以上のプロセッサによって、クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記1つ以上のプロセッサによって、前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数のセンサの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数のセンサの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を含む、方法。
【請求項6】
前記複数のセンサが、n個のセンサのセットを含み、nが、第1の整数であり、
前記共分散行列の前記生成が、前記複数のセンサのうちのd個の基準センサのサブセットに少なくとも部分的に基づいて、n×d共分散行列として前記共分散行列を生成することを含み、dが、前記第1の整数未満の第2の整数であり、
前記複数の特徴ベクトルの前記判定が、n個のd次元特徴ベクトルを判定することを含む、請求項5に記載の方法。
【請求項7】
前記複数のセンサが、前記ハンドル上にセンサの行および列で分散され、前記行が、前記ハンドル上で実質的に水平方向に配向され、前記列が、前記ハンドル上で実質的に垂直方向に配向され、
d個の基準センサの前記サブセットが、センサの列を含む、請求項6に記載の方法。
【請求項8】
前記クラスタリングアルゴリズムが、k平均クラスタリングアルゴリズムであり、
前記複数の特徴ベクトルの前記クラスタリングが、
前記k平均クラスタリングアルゴリズムを、
複数のk個のクラスタおよび
d次元空間内の前記k個のクラスタの中心推定値を含む入力パラメータで初期化することと、
前記複数の特徴ベクトルの各特徴ベクトルを、前記特徴ベクトルから最小距離である中心推定値を有する前記k個のクラスタのうちのクラスタに割り当てることと、
各中心推定値を更新して、k個の更新されたクラスタ中心を取得することであって、クラスタの中心推定値が、前記クラスタに割り当てられた前記特徴ベクトルに少なくとも部分的に基づいて更新される、取得することと、を含む、請求項6に記載の方法。
【請求項9】
前記複数の特徴ベクトルの前記クラスタリングが、前記更新されたクラスタ中心が最終的なクラスタ中心に収束するまで、前記割り当てを繰り返し、前記更新を繰り返すことをさらに含む、請求項8に記載の方法。
【請求項10】
k=3であり、
前記コントローラ構成が、
前記複数のセンサの前記第1のサブセットを、前記手の前記第1の指に対応する前記第1のグループに割り当て、前記第1の指が、中指に対応し、
前記複数のセンサの前記第2のサブセットを、前記手の前記第2の指に対応する前記第2のグループに割り当て、前記第2の指が、薬指に対応し、
前記複数のセンサの第3のサブセットを、前記手の第3の指に対応する第3のグループに割り当て、前記第3の指が、小指に対応する、請求項8に記載の方法。
【請求項11】
k=4であり、
前記コントローラ構成が、
前記複数のセンサの前記第1のサブセットを、前記手の前記第1の指に対応する前記第1のグループに割り当て、前記第1の指が、中指に対応し、
前記複数のセンサの前記第2のサブセットを、前記手の前記第2の指に対応する前記第2のグループに割り当て、前記第2の指が、薬指に対応し、
前記複数のセンサの第3のサブセットを、前記手の第3の指に対応する第3のグループに割り当て、前記第3の指が、小指に対応し、
前記複数のセンサの第4のサブセットを、非指グループに対応する第4のグループに割り当てる、請求項8に記載の方法。
【請求項12】
前記1つ以上のプロセッサによって、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つが、閾値数のセンサを満たさない複数のセンサを含むことを判定することと、
前記1つ以上のプロセッサによって、前記第1のサブセットまたは前記第2のサブセットのうちの前記少なくとも1つによって生成されたデータを、前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションに送信することを控えることをさらに含む、請求項5に記載の方法。
【請求項13】
前記1つ以上のプロセッサによって、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つが、前記第1のサブセットまたは前記第2のサブセットのうちの前記少なくとも1つのいずれかの他のセンサに隣接していない非隣接センサを含むことを判定することと、
前記1つ以上のプロセッサによって、前記非隣接センサによって生成されたデータを、前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションに送信することを控えることと、をさらに含む、請求項5に記載の方法。
【請求項14】
前記1つ以上のプロセッサによって、前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションとともに利用される選択されたセンサとして、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つから所定数のセンサを選択することと、
前記1つ以上のプロセッサによって、前記選択されたセンサに含まれていない残りのセンサによって生成されたデータを前記アプリケーションに送信することを控えることと、をさらに含む、請求項5に記載の方法。
【請求項15】
システムであって、
ハンドヘルドコントローラであって、前記ハンドヘルドコントローラのハンドルの周りに広がる複数のセンサを含むタッチセンサアレイを有する、ハンドヘルドコントローラと、
論理回路であって、
前記複数のセンサによって生成されたデータを受信することと、
前記データに少なくとも部分的に基づいて、前記複数のセンサのうちのセンサ対の間の相関を示す共分散行列を生成することと、
前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを決定することであって、各特徴ベクトルが、前記複数のセンサのうちのセンサに対応し、前記センサと前記複数のセンサのうちの1つ以上の他のセンサとの間の相関を記述する、決定することと、
クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数のセンサの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数のセンサの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を行うように構成された論理回路と、を含む、システム。
【請求項16】
前記クラスタリングアルゴリズムが、
複数のk個のクラスタおよび
前記k個のクラスタの中心推定値を含む入力パラメータで初期化されるk平均クラスタリングアルゴリズムであり、
前記コントローラ構成が、前記複数のセンサのk個のサブセットをk個のグループに割り当て、前記k個のサブセットが、
前記手の前記第1の指に対応する前記第1のグループに割り当てられた前記複数のセンサの前記第1のサブセットであって、前記第1の指が、中指に対応する、前記第1のサブセットと、
前記手の前記第2の指に対応する前記第2のグループに割り当てられた前記複数のセンサの前記第2のサブセットであって、前記第2の指が、薬指に対応する、前記第2のサブセットと、
前記手の第3の指に対応する第3のグループに割り当てられた前記複数のセンサの第3のサブセットであって、前記第3の指が、小指に対応する、前記第3のサブセットと、を含む、請求項15に記載のシステム。
【請求項17】
前記k個のサブセットが、非指グループに対応する第4のグループに割り当てられた前記複数のセンサの第4のサブセットをさらに含む、請求項16に記載のシステム。
【請求項18】
前記データを受信することが、一定期間にわたって前記データを受信することを含み、
前記共分散行列を生成することが、
前記一定期間にわたって受信された前記データに少なくとも部分的に基づいて、統計を計算することと、
前記統計に少なくとも部分的に基づいて、前記センサ対の間の相関値を判定することと、
前記共分散行列に前記相関値を代入することと、を含む、請求項15に記載のシステム。
【請求項19】
前記相関値が、負の1から正の1までの範囲の値である、請求項18に記載のシステム。
【請求項20】
前記論理回路が、
前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションとともに利用される選択されたセンサとして、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つから所定数のセンサを選択することと、
前記選択されたセンサに含まれていない残りのセンサによって生成されたデータを前記アプリケーションに送信することを控えることと、を行うようにさらに構成されている、請求項15に記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2019年6月14日に出願された「CLUSTER-BASED SENSOR ASSIGNMENT」と題された米国特許出願第16/442,299号の優先権を主張するPCT出願であり、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
ハンドヘルドコントローラは、例えば、リモートコンピューティングデバイスに入力を供給するためのアーキテクチャアレイで使用される。例えば、ハンドヘルドコントローラは、ゲーム産業で利用されており、これにより、プレイヤーは、ゲームアプリケーション、ゲームコンソール、ゲームサーバなどを実行するパーソナルコンピューティングデバイスと対話できる。ハンドヘルドコントローラは、仮想現実(VR)環境で使用され得るものであり、握持、投出、絞り等の自然な対話を可能な限り模擬することができる。現在のハンドヘルドコントローラは様々な機能を提供するが、さらなる技術的改善により、ハンドヘルドコントローラを利用したシステムを向上させることができる。
【図面の簡単な説明】
【0003】
【
図1】手保持具が開位置にある、本開示の例示的な実施形態によるコントローラを示す。
【
図2】本開示の例示的な実施形態による、ユーザの開いた手のひらを上にした手の中にある
図1のコントローラを示す。
【
図3】本開示の例示的な実施形態による、ユーザの閉じた手の中にある
図1のコントローラを示す。
【
図4】本開示の例示的な実施形態による、ユーザの閉じた手のひらを下にした手の中にある
図1のコントローラを示す。
【
図5】手保持具が開位置にある、本開示の例示的な実施形態によるコントローラの対を示す。
【
図6】本開示の例示的な実施形態による、
図1のコントローラのタッチセンサ(またはタッチセンサアレイ)を示す。
【
図7】本開示の例示的な実施形態による、
図6のタッチセンサアレイのd個の基準センサの例示的なサブセットを示し、基準センサのサブセットは、n個のセンサのセットについてのn×d共分散行列を生成するために使用可能である。
【
図8】本開示の例示的な実施形態による、タッチセンサアレイによって生成されたデータに基づいて生成され得る例示的なn×d共分散行列を示す。
【
図9】本開示の例示的な実施形態による、d次元空間のスライスを表す空間ドットプロットを示し、空間ドットプロットは、クラスタリングアルゴリズムがタッチセンサアレイのセンサを記述する特徴ベクトルをどのようにクラスタリングするかを示す。
【
図10】本開示の例示的な実施形態による、
図6のタッチセンサのコントローラ構成を示す。
【
図11】本開示の例示的な実施形態による、コントローラのタッチセンサを構成するための例示的なプロセスを示す。
【
図12】本開示の例示的な実施形態による、コントローラのタッチセンサを構成するための例示的なプロセスを示す。
【
図13】本開示の例示的な実施形態による、コントローラのタッチセンサを構成するための例示的なプロセスを示す。
【
図14】本開示の例示的な実施形態による、コントローラのタッチセンサを構成するための例示的なプロセスを示す。
【
図15】本開示の例示的な実施形態による、
図1のコントローラの例示的な構成要素を示す。
【発明を実施するための形態】
【0004】
本明細書では、特に、タッチセンサ式制御部を有するハンドヘルドコントローラと、タッチセンサ式制御部の出力を使用するための方法と、ハンドヘルドコントローラを操作するユーザの手のサイズおよび/または掴持に基づいて、タッチセンサ式制御部を動的に調整し、クラスタリングアルゴリズムを使用して特定のセンサを特定の指に動的に割り当てるための方法とが説明される。いくつかの事例において、本明細書に記載のハンドヘルドコントローラは、リモートデバイス(例えば、テレビ、オーディオシステム、パーソナルコンピューティングデバイス、ゲームコンソール等)を制御可能であり、これらは、ビデオゲームプレイおよび/またはそれに類するものに関与し得る。
【0005】
ハンドヘルドコントローラは、1つ以上のジョイスティック、トラックパッド、トラックボール、ボタン、またはハンドヘルドコントローラを操作するユーザにより制御可能な他の制御部等の1つ以上の制御部を含み得る。追加的に、または代替的に、ハンドヘルドコントローラは、1つ以上の制御部を含み得、1つ以上の制御部には、ハンドヘルドコントローラのそれぞれの制御部で、ユーザの存在、近接度、位置、および/またはジェスチャを検出するように構成されたタッチセンサ(本明細書では「タッチセンサアレイ」と称されることもある)が含まれる。タッチセンサは、静電容量式タッチセンサ、力抵抗性タッチセンサ、赤外線タッチセンサ、音波を利用して対象の存在または場所、対象の近接度を検出するタッチセンサ、および/またはハンドヘルドコントローラでのタッチ入力またはハンドヘルドコントローラに対する1つ以上の対象の近接度を検出するために構成された他の任意の種類のセンサを含み得る。加えて、いくつかの事例では、タッチセンサは、静電容量式パッドを含む場合がある。
【0006】
タッチセンサは、ハンドヘルドコントローラ(またはハンドヘルドコントローラを含むハンドヘルドコントローラシステム)の1つ以上のプロセッサに通信可能に結合して、1つ以上のプロセッサでのタッチ入力を示すタッチセンサデータを送信する。タッチセンサデータはまた、ハンドヘルドコントローラに対する1つ以上の指の近さまたは近接度を示し得る。タッチセンサデータは、潜在的に経時的な変化をする際に、ハンドヘルドコントローラ上のタッチ入力の場所を示し得、かつ/またはハンドヘルドコントローラに対する指の場所を示し得る。例えば、ユーザの指がハンドヘルドコントローラの上をホバリングするか、またはそれから離れて配設される場合、タッチセンサデータは、指がどの程度ハンドヘルドコントローラに対して伸長されているか、または近接しているかを示し得る。
【0007】
ハンドヘルドコントローラ(またはハンドヘルドコントローラを含むハンドヘルドコントローラシステム)はまた、タッチセンサデータを受信し、ユーザの指の存在および/またはハンドヘルドコントローラ上の指の場所(または「位置」)を決定するように構成された論理回路(例えば、ソフトウェア、ハードウェア、および/またはファームウェアなど)を含み得る。例えば、タッチセンサが静電容量式パッドを含む事例において、異なる領域またはグループの静電容量式パッドは、ユーザの異なる指を表示またはそれに対応してもよく、論理回路は、静電容量を検出する静電容量式パッドの領域および/またはグループを決定してもよい。このデータは、ゲームまたはハンドヘルドコントローラに接触するかまたは近接する指で実行するジェスチャ等の、ハンドヘルドコントローラで1つ以上の操作を実行するための他のアプリケーションに提供され得る。例えば、タッチセンサデータまたは他の表示値は、ゲームコンソール、リモートシステム、他のハンドヘルドコントローラ、またはヘッドマウントディスプレイ(HMD)などの他のコンピューティングデバイス上で実行されるアプリケーションに送信されてもよい。アプリケーションは、タッチセンサデータおよび/または表示値を利用して、ユーザの手およびその位置および/または配向に対応する画像データ(例えば、仮想表現)を生成するなどの1つ以上のアクションを実行してもよく、これは、いくつかの事例では、ジェスチャであってもよい。
【0008】
ハンドヘルドコントローラ(またはハンドヘルドコントローラに通信可能に結合されたコンピューティングデバイス)の論理回路は、クラスタリングアルゴリズムを使用して、静電容量式パッドなどのタッチセンサアレイのどのセンサをユーザの手の個々の指に割り当てるかを判定することができる。センサのサブセットを手の個々の指に割り当てるこのセンサツーフィンガーマッピングは、本明細書では「コントローラ構成」と称されることがある。本明細書に開示されるクラスタリングアルゴリズムは、所与のユーザのコントローラ構成をオンザフライで動的に判定することを可能にする。クラスタ分析は、入力としてサンプルのセットを受信することに関するものであり、各サンプルは、値のセット(例えば、多次元特徴ベクトル)によって記述され、クラスタ分析アルゴリズムを使用して、サンプルは異なるグループに分類される。例えば、コンピューティングデバイスが、花を複数の異なる種(グループ)に分類するタスクを実行している場合、サンプルセット内の各花は、(i)花びらの数、(ii)色、(iii)平均直径、(iv)高さの値を含む値のセット(例えば、特徴ベクトル)によって記述できる。この例では、クラスタリングアルゴリズムは、サンプルセットを記述する値のセットを分析し、花を異なるグループにクラスタリングするために、これらの値のセットがサンプルセット間でどのように分布し、互いに相関しているかを判定することができる。例えば、クラスタリングアルゴリズムは、5枚の花びらを有する花が白く、第1の平均直径および高さを有する傾向があり、3枚の花びらを有する花が黄色く、第2の平均直径および高さを有する傾向があると判定してもよい。これらの決定に基づいて、サンプル(この場合、花)を、固有の種の花を表すグループなどの異なるグループに分類することができる。
【0009】
ハンドヘルドコントローラの開示されたタッチセンサアレイにクラスタ分析を適用する際、タッチセンサアレイの複数のセンサ(例えば、静電容量式パッド)は、複数の異なるグループのうちの1つに分類されるサンプルを含むサンプルセットを表し得る。これらのグループのうちの少なくとも一部は、手のそれぞれの指(例えば、小指、薬指、中指、および場合によっては人差し指)に対応し得る。いくつかの実施形態では、複数の異なるグループは、接触されないか、または滅多に接触されないセンサをクラスタリングし得る「非指」グループをさらに含み得る。
【0010】
例示的な例では、ユーザがコントローラのハンドルを異なる方法で(例えば、ハンドルを握持することによって、ハンドルから指を伸長させて遠ざけることなどによって)経時的に掴持すると、ハンドヘルドコントローラのタッチセンサアレイは、静電容量値などのデータを生成する。タッチセンサアレイによって生成されたデータの履歴を一定期間維持することができる。ハンドヘルドコントローラ(またはハンドヘルドコントローラに通信可能に結合されたコンピューティングデバイス)の論理回路は、タッチセンサデータを処理して、タッチセンサアレイのn個のセンサのセットについてのn×d共分散行列などの共分散行列を生成し得る。この共分散行列は、センサ対の間の相関を記述するか、または示している。換言すれば、共分散行列は、どのセンサ(例えば、静電容量式パッド)が経時的に互いに変化し、逆にどのセンサが経時的に互いに変化しないかを示している。いくつかの実施形態では、共分散行列を生成するために、論理回路は、個々のセンサ(例えば、静電容量式パッド)によって検出された最後のサンプル間の平均静電容量値を計算するなど、タッチセンサアレイによって生成されたデータの履歴に基づいて統計を計算し得る。論理回路は、計算された統計を使用して、センサ対の間の相関の程度を示す相関値(例えば、負の1から正の1の範囲内の値[-1,+1])を決定し得、共分散行列にこれらの相関値を入力し得る。n×d行列は、最初に構築され、これらの相関値で継続的に更新され得る。
【0011】
注目すべきことに、d<nであるn個のセンサの集合についてn×d共分散行列を生成することにより、n×n共分散行列に入力される位置の数よりも少ない位置を有する共分散行列を生成することが可能となる。これにより、計算の観点から、d<nであるn×n共分散行列を生成するよりも、n×d共分散行列を生成する方が安価であるため、計算リソースを節約できる。しかしながら、いくつかの実施形態において、dはnと等価であり得ることを理解されたい。さらに、クラスタリングされるサンプルセットが、コントローラのハンドル全体にわたって実質的に水平にストライプ化されたセンサの配列に対応することから、d<nのn×d共分散行列を生成することで、センサ(例えば、静電容量式パッド)を記述する特徴ベクトルを正確にクラスタリングするのに十分なデータが提供される。換言すれば、ユーザが、正しい手でコントローラを保持している場合(例えば、左利きのコントローラを右手で持っているのではなく、左利きのコントローラを左手で持っている場合)、正しい方法で(例えば、指をコントローラのハンドル上で実質的に水平に向けている場合)、特定のセンサが互いに正の相関がある可能性が高いと仮定することができる。例えば、コントローラが正しい手で正しい方法で保持されるとき、同じ水平の行にあり、手のひらに最も近い2つの隣接するセンサは、単一の指が隣接するセンサの一方に接触しているが他方に接触していない場合とは対照的に、ハンドルが握持されているときに単一の指が両方のセンサを覆う可能性が非常に高いため、互いに正の相関がある可能性が高い。したがって、特定のセンサ対が正の相関関係にある可能性が非常に高い場合に、特定のセンサ対が正の相関関係にあるかどうかを評価することは、計算上の観点から無駄となる可能性があることを理解されたい。その代わりに、n×d共分散行列(d<n)を使用して、センサ対の可能な置換のサブセットのみを、それらのセンサ対の間の正の相関について評価することができる。さらに、共分散行列は、共分散行列の主対角線に対して対称であるため、ハンドヘルドコントローラ(またはハンドヘルドコントローラを含むハンドヘルドコントローラシステム)の論理回路は、主対角線の両側の共分散行列の値を計算する必要はない。すなわち、論理回路は、主対角線の一方の側の共分散行列の値を計算し、主対角線の他方の側のそれらの値を複製(duplicate)または複製(replicate)して、対称共分散行列を作成し、それによって、主対角線の一方の側の値の計算を回避することでコンピューティングリソースを節約することができる。
【0012】
タッチセンサアレイの各センサ(例えば、静電容量式パッド)は、タッチセンサアレイ内のセンサと別のセンサとの間の相関度を示す各々の値のセットを有する、d次元特徴ベクトル(dは、n以下である正の整数である)によって記述され得る。例示的な例では、タッチセンサアレイは、n=32個のセンサ(例えば、静電容量式パッド)を含んでもよい。この32個のセンサのアレイは、ハンドル上でユーザの指を追跡するためにコントローラのハンドルにわたって分散されてもよい。例示的な例では、d=5の基準センサのサブセットなどの基準センサのサブセットを選択するか、または別様で使用して、32×5の共分散行列を生成することができる。したがって、この例では、各センサは、五次元(5D)特徴ベクトルによって記述され、32個の5D特徴ベクトルが得られる。この例では、第iセンサの5D特徴ベクトルは、32個のセンサのうちの5個のセンサのセットとの第iセンサの相関度を記述し得る。数字「n」は、任意の正の整数を表し得ることを理解されたい。n=32は、タッチセンサアレイを構成し得るセンサ(例えば、静電容量式パッド)の数の単なる例である。
【0013】
k平均クラスタリングアルゴリズムなどのクラスタリングアルゴリズムは、n個のセンサのセットの個々のセンサを記述するd次元特徴ベクトルの値のそれぞれのセットを処理して、どの値が互いに正の相関関係にあるかを判定することによって特徴ベクトルをクラスタリングすることができる。このようにして、クラスタリングされた特徴ベクトルによって記述されるタッチセンサアレイのセンサが、コントローラ構成を構成する異なるグループに割り当てられ得る。これらのグループのうちの少なくとも一部は、手のそれぞれの指(例えば、小指、薬指、中指、および場合によっては人差し指)に関連付けられ得る。例えば、所与のコントローラ構成において、n個のセンサの第1のサブセットは、手の第1の指(例えば、中指)に対応する第1のグループに割り当てられてもよく、n個のセンサの第2のサブセットは、手の第2の指(例えば、薬指)に対応する第2のグループに割り当てられてもよい。一部の場合、n個のセンサの第3のサブセットは、第3の指(例えば、小指)に対応する第3のグループに割り当てられてもよい。前述のように、一部の場合では、n個のセンサの第4のサブセットは、いかなる指とも関連付けられない第4のグループ(このグループは、本明細書では「非指」グループと称される)に割り当てられてもよい。例えば、ユーザがハンドヘルドコントローラを保持/使用している間、センサのサブセットが絶対に接触されないか、または滅多に接触されないことが予想される場合、非指グループが利用され得る。
【0014】
開示されるクラスタベースのセンサ割り当てアプローチは、従来のタッチセンサアレイのセンサを手の指に割り当てるためのアプローチと比較して、より柔軟であり、汎用性がある。これは、少なくとも、開示されたクラスタベースのセンサ割り当てアプローチでは、センサを指にマッピングするコントローラ構成の先入観がなく、コントローラ構成が事前定義された構成のセットに限定されないためである。むしろ、センサを指にマッピングするコントローラ構成は、クラスタリングアルゴリズムを使用してオンザフライで決定される。これは、静的なコントローラ構成が使用されるか、またはコントローラ構成が事前定義されたコントローラ構成の限定されたセットから選択される従来のアプローチよりも改善されたものである。これらの従来のアプローチはどちらも、結局コントローラ構成を利用する可能性があり、特定のユーザの掴持には最適ではない。さらに、開示されたクラスタベースのセンサ割り当てアプローチを使用することは、論理回路がタッチセンサアレイ内のセンサ(例えば、静電容量式パッド)の特定の配置に依存しないことも意味する。すなわち、開示されたクラスタベースのセンサ割り当て論理回路は、コントローラのハンドル上のセンサの様々な配置および/または分布を用いて首尾よく機能する。これにより、タッチセンサアレイのセンサをハンドルに配置するために必要な設計作業が少なくてすむため、ハンドヘルドコントローラの製造コストの削減につなげることができ、かつ/または幅広いコントローラ設計で利用することができる。
【0015】
タッチセンサアレイが上述のクラスタリングに基づくコントローラ構成に従って構成され、タッチセンサアレイからのデータがその後受信されたとき、ハンドヘルドコントローラ(またはハンドヘルドコントローラに通信可能に結合されたコンピュータ)の論理回路は、タッチセンサアレイによって生成されたデータをユーザの対応する指に関連付けることができる。当該データは、次に、アプリケーションによって利用されて(例えば、入力されて)、仮想の手をディスプレイ上にレンダリングし、かつ/または手のジェスチャを識別することができる。換言すれば、どのセンサ(例えば、静電容量式パッド)が手のそれぞれの指に対応するかを認識する(「指追跡」と称されることもある)ことで、論理回路は、指がハンドヘルドコントローラを掴持するとき、および/またはどの指がハンドヘルドコントローラを掴持しないかなど、ユーザの対応する手のジェスチャを決定できる。例えば、論理回路は、ユーザが、ハンドヘルドコントローラを小指ではなく、中指と薬指で掴持することを判定してもよい。そのため、どのセンサまたはどのセンサのグループが手のそれぞれの指に対応するかを認識することで、論理回路は、ジェスチャに関連付けられた事前定義されたアクションを実行するか、手、場合によってはジェスチャ(例えば、中指と薬指が対象を掴持する一方、小指は対象を掴持しない)に対応する画像データを生成するように構成されたアプリケーションに、このジェスチャの表示値を提供することができる。さらに、検出された静電容量値等のハンドヘルドコントローラに対する指の近接度に関連付けられたタッチセンサデータを利用することにより、ハンドヘルドコントローラの論理回路は、各指に関連付けられたカールまたは伸長の量(例えば、指がどの程度の距離でハンドヘルドコントローラから離れて配設されているか)を決定可能である。
【0016】
ハンドヘルドコントローラは、ハンドヘルドコントローラを操作するユーザまたは異なるユーザの様々な掴持を動的に調整、検出、および収容し得る。例えば、ユーザの掴持は、ユーザがハンドヘルドコントローラを把持する方法、ユーザがプレイするゲーム、および/またはユーザの手の物理的特徴(例えば、指の長さ、指の幅等)によって変化し得る。したがって、タッチセンサアレイは、クラスタリングアルゴリズムを使用して、実行時にコントローラ構成をユーザの掴持に最も適したものに動的に更新することによって、ユーザの様々な掴持に適応できる。これには、ユーザがハンドヘルドコントローラを異なる方法で保持する例が含まれ得、タッチセンサアレイは、更新されたコントローラ構成に従ってタッチセンサアレイを再構成することによってユーザの掴持に適応し得る。換言すれば、同じような手を持つ異なるユーザであっても、またはユーザが、ゲームプレイ中に進行するにつれて、ユーザの掴持は変わる場合がある(例えば、ユーザの指は、ハンドヘルドコントローラの異なる部分を掴持し得る)。様々な掴持に対応し、ゲームプレイ体験を強化するために、論理回路は、動的に決定される様々なコントローラ構成に従って、タッチセンサアレイのセンサ(静電容量式パッドなど)を再マッピングまたは再関連付けすることができる。これを行う際に、コントローラの論理回路は、タッチセンサデータを、ユーザの特定の指に関連付けることがだでき、ディスプレイ上の仮想の手および/またはユーザの手のジェスチャを正確に表現する。
【0017】
ハンドヘルドコントローラはまた、タッチセンサアレイおよび/または圧力センサにより、ハンドヘルドコントローラでタッチ入力に関連付けられた力の量を感知、検出、または測定可能である。例えば、ユーザの指がハンドヘルドコントローラを押す際、タッチセンサおよび/または圧力センサの上に配設されたカバー等のコントローラの一部分は、歪んでタッチセンサアレイおよび/または圧力センサに接する場合がある。圧力センサは、指のタッチ入力が力データを1つ以上のプロセッサに提供する結果となるように、1つ以上のプロセッサに結合し得る。圧力センサは、タッチ入力の力の量を示す力データを1つ以上のプロセッサに提供し得る。いくつかの事例では、圧力センサは、力感知レジスタ(FSR)センサ、圧電センサ、ロードセル、歪みゲージ、静電容量性力の測定値を測定する静電容量式圧力センサ、または他の任意の種類の圧力センサを含み得る。加えて、いくつかの事例において、タッチセンサデータおよび/または力データは、ともに解釈され、所定の命令(例えば、絞り)と関連付け可能である。
【0018】
従来のハンドヘルドコントローラが、タッチ入力を感知するためのセンサを含み得る一方、多く従来のコントローラは、タッチセンサを静的にマッピングする。しかしながら、かかるマッピングは、静電容量式パッド等のタッチセンサアレイの部分を特定の指に再割り当てせず、またはユーザの掴持によっては、タッチセンサアレイを異なる指に動的に適応させない。この静的マッピングにより、ゲームプレイ環境内のユーザ体験が、決して理想的にならない結果になり得る。例えば、タッチセンサデータが、ユーザのそれぞれの指に正確にマッピングしないと、生成された手の画像は、ハンドヘルドコントローラを操作するユーザの手を正確に描写しない場合がある。他の従来のハンドヘルドコントローラは、コントローラ構成を動的に切り替えることができるが、事前定義されたコントローラ構成を使用してユーザの掴持を可能な限り最適に調整しようとするために使用される、事前定義された構成のセットに限定される。しかしながら、これらの事前定義されたコントローラ構成は、特定のユーザの固有の掴持に対して最適化することはできない。本明細書に記載の技術およびシステムは、クラスタリングアルゴリズムを使用して、ユーザの手の特定の指にタッチセンサアレイのどのセンサ(例えば、静電容量式パッド)を割り当てるかを動的に決定することによって、従来のハンドヘルドコントローラを改善するものである。これを行う際に、センサ(例えば、静電容量式パッド)を異なる方法で指にマッピングし、より柔軟で汎用的な指追跡アプローチを可能にする、より多くの可能な構成が存在する。これにより、タッチセンサデータから生成された画像データでユーザの指をより正確に描写できるようになり、ゲームプレイ体験および/またはハンドヘルドコントローラにより制御される他のアプリケーションの品質向上が可能になる。
【0019】
図1は、1つ以上のタッチセンサ式制御部を含み得る、例示的なコントローラ100の正面図である。本明細書記載のとおり、タッチセンサ式制御部は、ユーザの手のジェスチャを作成するために、コントローラ100および/または他のコンピューティングデバイスにより利用されるタッチセンサデータを生成可能である。タッチセンサデータは、コントローラ100を操作するユーザの指の存在、場所、近さ、および/またはジェスチャを表示可能である。いくつかの事例において、コントローラ100は、VRビデオゲームシステム、ロボット、武器、または医療機器等の電子システムにより利用可能である。
【0020】
図示のとおり、コントローラ100は、ハンドル112を有するコントローラ本体110と、手保持具120と、を含み得る。コントローラ本体110は、コントローラ100のハンドル112と遠位端部111との間に配設されたヘッド部を含み得、ヘッド部は、1つ以上の親指操作式制御部114、115、116を含み得る。例えば、親指操作式制御部は、傾斜ボタン、または他の任意のボタン、つまみ、輪部分、ジョイスティック、またはコントローラ100がユーザの手に保持される場合の通常操作中に、ユーザの親指により都合よく操作されるトラックボールを含んでよい。
【0021】
ハンドル112は、略円筒形の管状ハウジングを含み得る。この文脈において、実質的に円筒形の形状は、一定の直径、または完全に円形の断面を有する必要はない。
【0022】
ハンドル112は、ハンドル112上に部分的に、もしくは完全に(例えば、ハンドル112の表面の周りに)空間的に分散されているか、または別様でハンドル112の周りに広がっている、静電容量式パッドなどの複数のセンサを有する近接センサおよび/またはタッチセンサ(本明細書で「タッチセンサアレイ」と称されることもある)を含み得る。このタッチセンサアレイの例を
図6に示す。一例では、センサ(例えば、静電容量式パッド)は、ハンドル112の外面の下に空間的に分布し得、かつ/またはハンドル112の外面の下に埋め込まれ得る。センサ(例えば、静電容量式パッド)は、ユーザが、ハンドル112と接触する、掴持する、または握持するのに応答可能であり、ユーザの1つ以上の指の存在、位置、および/またはジェスチャを識別する。加えて、センサ(例えば、静電容量式パッド)は、1つ以上の指が、ハンドル112の上をホバリングするか、または配設されるのに応答し得る。例えば、ユーザの1つ以上の指は、コントローラ100を握持またはその周りを包まないが、その代わりに、ハンドル112の外面の上に移動し得る。このように収容し、指の近接度および/またはタッチ入力を検出するために、ハンドル112の外面は、電気的絶縁材料を含み得る。
【0023】
手保持具120は、コントローラ100に結合可能であり、ハンドル112の外面に対して、ユーザの手を付勢する。
図1に示すように、手保持具120は、開位置にある。手保持具120は、任意選択で、ユーザがコントローラ100を握持する場合、手保持具120とコントローラ本体110との間にユーザの手を挿入しやすくするために、湾曲した弾性部材122により、開位置で付勢し得る。例えば、湾曲した弾性部材122は、弾性的に屈曲する可撓性の金属片を含み得、または略弾性的に屈曲し得るナイロン等の代替プラスチック材料を含み得る。布材料124(例えば、布、ネオプレン、または任意の適切な材料で作られたシース)は、ユーザの快適さを緩和または増大させるように、湾曲弾性部材122を部分的または完全に覆い得る。代替的に、クッションまたは布材料124は、ユーザの手に面する湾曲弾性部材122の側にのみ付着し得る。
【0024】
手保持具120は、例えば、ばね付勢チョック128によって締め付けられるドローコード126を含むことによって長さを調整し得る。ドローコード126は、首ひもとして使用するための余分な長さを任意選択的に有し得る。いくつかの実施例では、クッションまたは布材料124は、ドローコード126に取り付け得る。加えて、湾曲弾性部材122は、締め付けられたドローコード126の張力によって予荷重をかけられ得、かかる実施形態では、湾曲弾性部材122が(開位置に付勢するために)手保持具120に付与する張力は、ドローコード126が締め付けられていないときに手保持具120を自動的に開放させ得る。しかしながら、クリート、(手が挿入される場合に一時的に伸長するので、手の甲を押すために弾性張力を加える)弾性バンド、長さ調節を可能にするフックアンドループストラップアタッチメント等の、手保持具120の長さを調節するための代替的な従来の方法を使用してよい。
【0025】
手保持具120は、ハンドル112と追跡部材130との間に配設され得、ユーザの手の甲に接触し得る。追跡部材130は、コントローラ本体110に固定され得、2つのノーズ132、134を任意選択的に含み得、ここで、各ノーズは、追跡部材130の2つの対向する遠位端のうちの対応する1つから突出し得る。いくつかの事例では、追跡部材130は、実質的に円弧形状を有する円弧を含み得る。いくつかの事例では、追跡部材130は、その中で配設された追跡変換器(例えば、赤外線(IR)光センサまたはIR光ビーコンなどのセンサまたはビーコン)を含み得、例えば、少なくとも1つの追跡変換器が、各突出ノーズ132、134内に配設されている。コントローラ本体110は、遠位端111に隣接して配設された追跡変換器などの追加の追跡変換器を含み得る。
【0026】
コントローラ100は、コントローラ本体110内に配設された充電式電池を含み得、手保持具120は、充電式電池に電気的に結合された電導性充電ワイヤを含み得る。コントローラ100はまた、電子システムの残部(例えば、ハンドヘルドコントローラシステムの構成要素であり得るゲームコンソール)と通信するための無線周波数(RF)送信機を含み得る。充電式電池は、RF送信機に電力供給し得、RF送信機を介して送信されるRFは、親指操作式制御部114、115、116、ハンドル112内のタッチセンサ(例えば、静電容量式センサ)、および/または追跡部材130内の追跡センサに応答して生成されたデータであり得る。
【0027】
いくつかの事例において、コントローラ本体110は、ユーザの指からタッチセンサまで力を伝達するのに十分な剛性があり、ユーザの指とタッチセンサとの間で静電容量結合を可能にするのに十分に薄い、射出成形プラスチックまたは他の任意の材料の単一片を含んでよい。その代わりとして、コントローラ本体110と追跡部材130は、別々に作製可能であり、後でともに組立可能である。
【0028】
図2は、コントローラ100の正面図を図示しており、その中にユーザの左手が挿入されているが、コントローラ本体110を握持していない、操作中のコントローラ100を示す。
図2では、手保持具120は、ユーザの手のひらをハンドル112の外面に対して物理的に付勢するように、ユーザの手の上で締め付けられている。ここで、手保持具120は、閉じられたとき、手がコントローラ本体110を握持していないときであっても、コントローラ100をユーザの手の中または手の周囲に保持し得る。示されるように、手保持具120がユーザの手の周囲で緊密に閉じられているとき、手保持具120は、コントローラ100がユーザの手から落下することを防止し得る。したがって、いくつかの実施形態において、手保持具120により、ユーザは、コントローラ100が実際に、手から離れ、投げ出され、および/または床上に落下することなく、コントローラ100から「手を放す」ことが可能であり、追加の機能を可能にする場合がある。例えば、ユーザのコントローラ本体110のハンドル112の握持の解放または復元が感知されると、この解放または握持は、ゲームに組み込み可能であり、(例えば、VR環境において)投出または握持する対象を表示する。手保持具120は、かかる機能が繰り返しかつ安全に達成されることを可能にし得る。手保持具120はまた、ハンドル112の周りに分散されたタッチセンサアレイに対してユーザの指が過度に並進するのを防ぎ、指の動きおよび/またはハンドル112上の配置をより確実に感知することができる。
【0029】
図3および4は、ユーザの手がコントローラ本体110を握持している間に手保持具120が締め付けられたときの操作中のコントローラ100を示している。
図3および4に示されるように、ユーザの親指は、1つ以上の親指操作式制御部114、115、116を操作し得る。
【0030】
図5は、特定の実施形態では、コントローラ100が、同様の右コントローラ500を含む一対のコントローラにおける左コントローラであり得ることを示している。特定の実施形態では、コントローラ500は、同様の左コントローラ100を含む一対のコントローラ内の右コントローラであり得る。特定の実施形態では、コントローラ100および500は、例えば、VR経験を増強するために、ユーザの両手の動きおよび掴持を(一緒に)追跡し得る。本開示全体を通して使用されるとき、参照番号100は、本開示の基本的特性を変更することなく、
図5に示される左または右コントローラのいずれかを説明するために参照番号500で置き換えられ得ることを理解されたい。
【0031】
図6は、コントローラ100に対する1つ以上の対象(例えば、指)の近接度に加えて、コントローラ(例えば、コントローラ100)上のタッチ入力を検出するように構成された複数のセンサ602(例えば、静電容量式パッド602)を有する近接センサまたはタッチセンサ600(本明細書では「タッチセンサアレイ600」と称されることもある)を示している。いくつかの実施形態では、タッチセンサ600は、静電容量式パッドとは異なるタイプのセンサを追加的または代替的に含み得、これらは、コントローラ100でのタッチ入力、または赤外線または音響センサなどのコントローラ100に対する指の近接度を検出するように構成されている。任意の適切なタイプのセンサ技術に関してタッチセンサアレイ600を説明するために、本明細書における「静電容量式パッド602」への言及が、適切な場合、「センサ602」と置き換えられ得ることを理解されたい。
図6に示すように、タッチセンサ600の静電容量式パッド602はアレイに配置されているが、静電容量式パッド602は必ずしも同じサイズである必要はなく、それらの間の間隔は必ずしも等しいとは限らない。しかしながら、いくつかの実施形態において、静電容量式パッド602は、それらの間で略同一の間隔で、略同一のサイズを備えたグリッドを含み得る。
【0032】
タッチセンサ600は、静電容量式パッド602が配設された可撓性のプリント回路アセンブリ(FPCA)604を含み得る。FPCA604は、1つ以上のプロセッサを含むコントローラ100のプリント回路基板(PCB)に接続するためのコネクタ606を含み得る。静電容量式パッド602は、FPCA604上に配設されたトレース608により、コネクタ606に通信的に接続可能である。静電容量式パッド602は、トレース608およびコネクタ606を介して、コントローラ100(またはコントローラ100を含むハンドヘルドコントローラシステム)の1つ以上のプロセッサにタッチセンサデータ(例えば、静電容量値)を提供することができる。本明細書で詳細に記載のとおり、タッチセンサデータは、コントローラ100に対する指の近接度を示し得る。すなわち、タッチセンサ600は、個々の静電容量式パッド602の静電容量を測定可能であり、静電容量は、(例えば、コントローラ100のハンドル112と接触するか、またはその上に配設される)コントローラ100に対する指の近接度に関連付けることができる。
【0033】
タッチセンサ600は、コントローラ本体110のハンドル112内に取り付けされた構造体、またはコントローラ本体110のハンドル112の下に取り付けされた構造体等のコントローラ本体110内の内面に結合可能である。これを行う際に、タッチセンサ600は、ハンドル112の外面の下に配設されてもよく、センサ602がハンドル112の周りに分散されていることによって、ハンドル112に対する指の近接度を検出するように構成されてもよい。タッチセンサ600は、コントローラ100に結合される場合、ハンドル112の外周または一部分の周りに角度を付けて伸長することができる。例えば、FPCA604は、ハンドル112でコントローラ本体110の内面に結合(例えば、粘着)可能であり、ハンドル112に対する指の近接度を検出する。いくつかの実施形態において、タッチセンサ600は、ハンドル112の外周の周りに少なくとも100度であるが170度を越えないで延伸可能である。追加的に、または代替的に、タッチセンサ600は、ハンドル112の外面等のコントローラ110の外面に結合可能である。
【0034】
静電容量式パッド602は、互いに間隔をあけて配置可能であり、コントローラ100に対する異なる指、またはユーザの指の異なる部分(例えば、指先)の近接度を検出する。例えば、
図6に示すように、静電容量式パッド602は、行、列、グリッド、セット、サブセット、またはグループ610に配列され得る。以下でより詳細に説明されるように、クラスタリングアルゴリズムが個々の静電容量式パッド602を記述する特徴ベクトルをクラスタリングするために使用されるとき、静電容量式パッド602のサブセットは、動的に決定されたコントローラ構成に従って、ユーザの特定の指(例えば、中指、薬指、小指、および場合によっては人差し指)に割り当てられ得る。
【0035】
図6に示されるように、例示的なタッチセンサ600は、6行の静電容量式パッド602を含み得、ここで、行は、FPCA604の表面にわたって実質的に水平に延伸する。しかしながら、いくつかの実施形態では、タッチセンサ600は、6行より多くまたは6行未満を含み得る。これらの行は、タッチセンサ600がコントローラ100に統合されるときに、ハンドル112上で実質的に水平に配向される。さらに、例示的なタッチセンサ600は、6列の静電容量式パッド602を含むように示されており、ここで、列は、FPCA604の表面にわたって実質的に垂直に延伸する。しかしながら、いくつかの実施形態では、タッチセンサ600は、6列より多くまたは6列未満を含み得る。これらの列は、タッチセンサ600がコントローラ100に統合されるときに、ハンドル112上で実質的に垂直に配向される。タッチセンサ600は、n個のセンサ602のセットを有し得る。
図6に示される例示的なタッチセンサ600は、n=32個のセンサのセットを有する。これは、すべての行が等しい数のセンサ602を有するわけではないためである。
【0036】
センサ602の特定のサブセットが手の指に対応するグループに割り当てられるとき、コントローラ100(または別の通信可能に結合されたコンピューティングデバイス)は、センサ602からのタッチセンサデータ(例えば、静電容量値)を利用して、ユーザの手のジェスチャなどの仮想の手の画像データを生成することができる。すなわち、タッチセンサ600は、コントローラ100を掴持するユーザの指の存在、場所、および/またはジェスチャを検出するのに使用するためにタッチセンサデータを生成可能である。静電容量式センサ602を利用する実施形態では、ユーザがコントローラ100を特定の指で掴持し、コントローラ100上で特定の指をホバリングし、静電場が生じるように、電圧が静電容量式パッド602される印加する。したがって、ユーザの指等の導体が、静電容量式パッド602に接触するか、または接近する場合、静電容量の変化が生じる。静電容量は、RC発振回路をタッチセンサ600に接続し、時定数(したがって、振動の周期と周波数)が静電容量とともに変化することを認識することで、感知可能である。このように、ユーザが、コントローラ100から指を解放し、コントローラ100を特定の指で掴持し、またはコントローラ100に接近する際に、コントローラ100は、静電容量の変化を検出可能である。
【0037】
静電容量式パッド602、または各静電容量式パッド602上のグリッド内の個々の静電容量式センサの静電容量値は、静電容量式パッド602に対する導体の近接度に加えて、導体の場所を決定するために使用される。すなわち、ユーザがコントローラ100を掴持する際、特定の指および/または指の部分は、コントローラ100のハンドル112に接触可能である。指が導体として作用するため、ユーザがハンドル112に接触するハンドル112の下にあるそれらの静電容量式パッド602は、静電容量値を測定可能である。これらの静電容量値は、ユーザのジェスチャを識別するのに使用するため、経時的に測定される。しかしながら、ユーザが、指または指の特定の部分をコントローラ100から離れてホバリングする事例において、静電容量値は、指がどの程度コントローラ100から離れて配設されるかを表すか、または関連付けることができる。したがって、タッチセンサデータは、コントローラ100に対する指の近接度および/または場所を決定するために利用され得る。ユーザの掴持がゲームプレイ体験全体を通じて、または異なるユーザ間で変化し得るので、指をタッチセンサ600の異なる静電容量式パッド602と関連付けることが有益になり得る。例えば、第1の例では、ユーザは広範な広い掴持を有する場合があり、タッチセンサ600のすべての静電容量式パッド602は、仮想の手に関連付けられた画像データを生成する際に使用され得る静電容量値を検出し得る。この第1の例では、静電容量式パッド602の特定のサブセットは、本明細書で説明されるように、クラスタリングアルゴリズムを使用して、手の特定の指に割り当てられ得る。第2の例では、ユーザの掴持は狭い場合があり、タッチセンサ600の静電容量式パッド602のすべてよりも少ない数が、仮想の手に関連付けられた画像データを生成する際に使用され得る静電容量値を検出し得る。この第2の例では、指が異なる静電容量式パッド602に接触し得るため、第1の例と比較して、静電容量式パッド602の異なるサブセットは、更新されたタッチセンサデータを伴うクラスタリングアルゴリズムを使用して手の指に割り当てられ得る。したがって、手を描写する正確な画像データ(例えば、手のジェスチャ)を生成するために、静電容量式パッド602は、開示されたクラスタベースのセンサ割り当てアプローチを使用して、手の特定の指に動的に割り当てられ得る。手のそれぞれの指に関連付けられたタッチセンサ600の静電容量式パッド602を認識することで、タッチセンサ600により検出された静電容量値を使用して、対応する手のジェスチャが生成可能である。したがって、ユーザの掴持が変化しても、静電容量式パッド602は、静電容量値が手のジェスチャを描写する正確な画像データを生成するように、異なる指を再編成するか、またはそれと関連付けすることができる。
【0038】
1つ以上のプロセッサは、指の解剖学的に可能な動きを例示するアルゴリズムおよび/または機械学習手法を含み得、タッチセンサデータをうまく使用して、ユーザの手の開き、指の指さし、またはコントローラ100に対するか、または互いに対する指の他の動きを検出する。このように、コントローラ100および/またはユーザの指の動きは、VRゲームシステム、防御システム、医療システム、産業ロボットまたは機械、または別のデバイスを制御する一助となり得る。VRアプリケーション(例えば、ゲーム、トレーニング等用)において、タッチセンサデータは、ハンドル112の外面からのユーザの指の解放を感知したことに基づいて、対象を解放させるために利用可能である。追加的に、または代替的に、コントローラ100が対話する、通信的に結合されたコンピューティングデバイスの1つ以上のプロセッサ(例えば、ホストコンピューティングデバイス、ゲームコンソール等)は、タッチデータを使用して、ジェスチャを検出可能である。
【0039】
いくつかの事例において、静電容量式パッド602はまた、コントローラ100の関連部分に加えられる力(例えば、少なくとも1つの親指操作式制御部114、115、116等に対する、ハンドル112の外面に加えられる力)の量に対応する静電容量値を検出可能である。追加的に、または代替的に、タッチセンサ600、またはコントローラ100の他の部分(例えば、ハンドル112)は、力感知レジスタ(FSR)を含み得、可変抵抗を使用して、FSRに加えられる力の量を測定する。コントローラ100が、ユーザの手によって保持されるように構成可能であるため、FSRは、コントローラ本体110のハンドル112内に取り付けられた構造体、またはコントローラ本体110の下に取り付けられた構造体等のコントローラ本体110内の構造体の平面上に取り付け可能である。特定の実施形態において、FSRは、静電容量式パッド602とともに、ユーザによる握持の開始、およびユーザによるかかる握持の相対強度の両方の感知を容易にし得、特定のゲームプレイの特徴を容易にし得る。いずれかの実施例において、FSRは、コントローラ100を握持するユーザの指の存在、場所、および/またはジェスチャを検出するのに使用するための力データを生成可能である。FSRおよび/または静電容量式パッド602は、コントローラ100に実装される場合、コントローラ100の関連部分に加えられる力の量にそれぞれ対応する、抵抗値、または静電容量値を測定可能である。
【0040】
いくつかの実施形態において、コントローラ100の1つ以上のプロセッサは、タッチセンサデータおよび/または力データを利用可能であり、ハンドル112を握持する手のサイズを検出および/または手のサイズにしたがって、静電容量式パッド602および/またはFSRでタッチ入力を登録するために必要な閾値力を調整する。これは、より小さい手を有するユーザにとって力ベースの入力をより容易にするために有用であり得る(より大きい手を有するユーザにとっては、より難しくなるが、困難ではない)。
【0041】
図7は、本開示の例示的な実施形態による、
図6のタッチセンサアレイ600のd個の基準センサの例示的なサブセットを示し、基準センサのサブセットは、n個のセンサのセットについてのn×d共分散行列を生成するために使用可能である。すなわち、
図7において、「影付き」静電容量式パッド602は、基準センサのサブセットを表す。したがって、
図7の例では、d=5であるが、dは、タッチセンサアレイ600内のセンサ602の総数を表すn以下の任意の整数であり得ることを理解されたい。上述のように、タッチセンサアレイ600は、行および列に分散された複数のセンサ602(例えば、静電容量式パッド602)を含み得る。例えば、センサ602は、第1の行702、第2の行704、第3の行706、第4の行708、第5の行710、および第6の行712に分散され得る。センサ602はまた、第1の列714、第2の列716、第3の列718、および第4の列720、第5の列722、および第6の列724に分散され得る。この場合も、分布が行および列内にあり得るが、センサ602は必ずしも等しいサイズではなく、必ずしもそれらの間に実質的に等しい間隔を有していないことを理解されたい。さらに、行および列は、完全に整列する必要はない(例えば、行および/または列は、わずかな曲線を有してもよく、センサ602は、行間、列間で交錯してもよい)。
図7の例では、基準パッドのサブセット(すなわち、「影付き」パッド602)は、タッチセンサアレイ602の中央付近にあるパッド602の第4の列720などのパッド602の列を含む。タッチセンサアレイ602の中央付近の列として基準パッドを選択することで、センサ対602の間の相関関係を評価することが可能になり得、ここで、これらのセンサ対の間に正の相関が存在する確実性が高い可能性であるか、または高い可能性がないことは未知である。これは、ヒューリスティックまたは経験的証拠に基づき得る。
【0042】
図8は、本開示の例示的な実施形態による、タッチセンサアレイ600によって生成されたデータに基づいて生成され得る例示的なn×d共分散行列800を示している。経時的に、データがタッチセンサアレイ600の複数のセンサ602によって生成されると、このタッチセンサデータは、
図8に示される例示的なn×d共分散行列800などの共分散行列を生成するように処理することができる。ここで、数「n」は、タッチセンサアレイ600内のセンサ602の数を表し、「d」は、
図7に示される「影付き」センサ602などの一連の基準センサを表している。この例では、d<nであるが、d=nの場合、d個の基準センサのセットがサブセットではない場合があることを理解されたい。例示的な例では、n=32およびd=5である。
【0043】
一般に、共分散行列800は、タッチセンサアレイ600の複数のセンサ602のセンサ対602の間の相関を示している。いくつかの実施形態では、共分散行列800を生成するために、ハンドヘルドコントローラ100の論理回路(またはコントローラ100を含むハンドヘルドコントローラシステムの論理回路)は、一定期間にわたってタッチセンサ600によって生成されたタッチセンサデータに少なくとも部分的に基づいて統計を計算し得る。例えば、統計は、個々のセンサ(例えば、静電容量式パッド)によって検出された最後のサンプル間の平均静電容量値を計算するなど、タッチセンサアレイ600によって生成されたデータの履歴に基づいて計算され得る。論理回路は、計算された統計を使用して、センサ対602の間の相関の程度を示す相関値を決定し得、次いで、論理回路は、共分散行列800にこれらの相関値を入力し得る。共分散行列800の様々な位置に入力される相関値は、負の1(-1)~正の1(+1)の範囲内の値であってよく、包含的であり、負の1は最も正の相関であり、正の1は最も正の相関である。相関値は、ゼロ(0)から正の1(+1)までの範囲など、他の可能な範囲内の値であってもよい。したがって、共分散行列800の所与の位置に入力される相関値は、センサ対602の間の相関の程度を、それらが互いに経時的に変化するかどうかという観点から示している。タッチセンサアレイ600によってタッチセンサデータが継続的に生成されるとき、n×d共分散行列800は、最初に構築され得、経時的にこれらの相関値を用いて継続的に更新され得る。例示のために、共分散行列800の位置(i,j)における相関値は、第iセンサ602と第jセンサ602との間の相関の程度を示してもよい。
【0044】
共分散行列800の内部に示されるドット802は、そのセンサ対602に関する相関値に従って、互いに正の相関があり得る例示的なセンサ対602を示している。例えば、共分散行列800のi、j位置の相関値が閾値を満たす場合、第iセンサ602は、第jセンサ602と正の相関があるとみなされ得、その逆も同様である。
図8のドット802によって示されるように、共分散行列800は、すべての共分散行列と同様に、共分散行列800の主対角線に対して対称である。ハンドヘルドコントローラ100(またはハンドヘルドコントローラ100を含むハンドヘルドコントローラシステム)の論理回路は、主対角線の一方の側の共分散行列800の値を計算することによって、および主対角線の反対側のそれらの値を複製(duplicate)または複製(replicate)することによって、共分散行列800のこの特性を利用して、対称共分散行列800を作成し、それによって、主対角線の一方の側の値の計算を回避することによってコンピューティング資源を節約し得る。
【0045】
共分散行列800に少なくとも部分的に基づいて、ハンドヘルドコントローラ100(またはハンドヘルドコントローラ100を含むハンドヘルドコントローラシステム)の論理回路は、複数の特徴ベクトルを決定し得る。n×d共分散行列800について、論理回路は、n個のd次元特徴ベクトルを決定し得る。n=32であり、d=5である例では、論理回路は、32個の5D特徴ベクトルを決定し得る。各特徴ベクトルは、タッチセンサアレイ600の複数のセンサ602のうちのセンサ602に対応し得る。さらに、各特徴ベクトルは、センサ602と複数のセンサ602のうちの1つ以上の他のセンサ602との間の相関関係を記述し得る。d=5の場合、これは、所与の特徴ベクトルが、所与のセンサ602と、d個の基準センサのセットに対応するタッチセンサアレイ600の5つのセンサのセット602との間の相関を記述することを意味する。したがって、アレイ内の左上のセンサ602を記述する特徴ベクトルは、左上のセンサ602と基準センサのセットのうちの第1のセンサ(例えば、
図7に示される「影付き」基準センサ)との間の相関を示す第1の相関値、左上のセンサ602と基準センサのセットのうちの第2のセンサとの間の相関を示す第2の相関値などを、任意の数の基準センサについて含み得る。例えば、所与のセンサ602の5D特徴ベクトルは、[0,0,0.5,0.8,-0.2]のように見えてもよい。
【0046】
共分散行列800から導出される複数の特徴ベクトルでは、クラスタリングアルゴリズムを使用して、複数の特徴ベクトルを、特定のセンサ602を手の特定の指に割り当てるために使用される複数のクラスタにクラスタリングすることができる。任意の適切なクラスタリングアルゴリズムを使用することができる。k平均クラスタリングアルゴリズムは、標準的なk平均、加重k平均などを含んでおり、好適である。k平均以外の他の種類のクラスタリングアルゴリズムは、センサ602の表現をグループにクラスタリングするために追加的にまたは代替的に利用され得る。
【0047】
図9は、本開示の例示的な実施形態による、d次元空間の「スライス」(例えば、二次元(2D)スライス)を表し得る空間ドットプロット900を示しており、空間ドットプロット900は、k平均クラスタリングアルゴリズムなどのクラスタリングアルゴリズムが、タッチセンサアレイ600のセンサ602を記述する特徴ベクトルをどのようにクラスタリングするかを示している。空間ドットプロット900は、原点またはゼロ点で交差する縦軸および横軸を有し得る。データ点904(1)、904(2)、904(3)、…、904(n)は、共分散行列800から導出される特徴ベクトルを表す。例示的な例では、n=32の特徴ベクトルのセットは、n×d共分散行列800から導出され得(ここでd=5)、空間ドットプロット900内のデータ点904(1)~(n)は、それらの特徴ベクトルを表し得、各ベクトルは、個々のセンサ602に対応する5D特徴ベクトルであり、d=5の基準センサのサブセットとの(またはセンサ602の共分散との)そのセンサ602のそれぞれの相関度を記述する。これらの特徴ベクトルは、人間が2Dまたは3Dベクトルで行うのと同じように、空間内の位置を指していると考えてもよいが、この場合、特徴ベクトルは、その高次元空間のスライスで可視化され得る高次元ベクトルであってもよい。5D空間(この5D空間のスライスを表す空間ドットプロット900)内の特徴ベクトルのすべてをプロットする場合、特徴ベクトルのサブセットは、k平均クラスタリングアルゴリズムなどのクラスタリングアルゴリズムを使用して、5D空間内で一緒にクラスタリングされ、クラスタ906を作成し得る。各クラスタ906は、指追跡に使用されるグループに対応する。例えば、第1のクラスタ906(1)は、手の第1の指(例えば、中指)に関連付けられた第1のグループに対応してもよく、第2のクラスタ906(2)は、手の第2の指(例えば、薬指)に関連付けられた第2のグループに対応してもよく、第3のクラスタ906(3)は、手の第3の指(例えば、小指)に関連付けられた第3のグループに対応してもよく、一部の場合において、第4のクラスタ906(4)は、任意の指(例えば、非指グループ)に関連付けられていない第4のグループに対応してもよい。
【0048】
k平均クラスタリングアルゴリズムを例として使用すると、クラスタリングアルゴリズムは、これらに限定されないが、d次元空間内のクラスタ906の中心の初期推定値を表す複数のk個のクラスタ906、およびk個の中心推定値908を含む入力パラメータで初期化され得る(またはシードされ得る)。
図9の例では、k平均クラスタリングアルゴリズムは、k=4の入力パラメータで初期化されているが、任意の数のクラスタ906を指定することができ、クラスタリングアルゴリズムは、k=2、k=3などの異なるkの値で、後続時間に実行するか、または代替的に実行することができる。k=4で、クラスタリングアルゴリズムは、n個の特徴ベクトルを最適な方法で4つのクラスタ906にクラスタリングすることを試みる。
【0049】
図9は、k=4についての初期中心推定値908を示しており、これには、第1の中心推定値908(1)、第2の中心推定値908(2)、および第3の中心推定値908(3)、および第4の中心推定値908(4)が含まれる。これらの中心推定値908は、ヒューリスティクスまたは経験的データ(例えば、ハンドヘルドコントローラ100またはテストコントローラのテストデータなどの過去の使用から収集されたデータ)に基づき得る収束でのそれらの最終位置に合理的に近いことが推定され得る。クラスタリングアルゴリズムを初期化するために合理的に良好な中心推定値908を行うことによって、クラスタ分析アルゴリズムの実行中のクラスタ中心のスワッピングが緩和される。いくつかの実施形態では、中心推定値908は、(例えば、ユーザがユーザアカウントにログインし、過去にハンドヘルドコントローラ100を使用した場合)ハンドヘルドコントローラ100の既知のユーザプロファイルに基づき、ユーザ固有である。例示的な例では、第1のクラスタ906(1)についての第1の中心推定値908(1)は、中指のグループに対応し得、d次元空間における第1の点(例えば、[0,0,0,0.5,0.5,0.5])として推定され得る。例えば、第1の中心推定値908(1)は、コントローラ100のハンドル112上でより高い位置(例えば、コントローラのヘッドに近い位置)に配置されたセンサのグループ602と相関するd次元空間内の位置に基づいて推定され得る。一方、第2のクラスタ906(2)のための第2の中心推定値908(2)は、薬指のグループに対応し得、d次元空間内の第2の点(例えば、[0,0,0.5,0.5,0,0])として推定され得る。例えば、第2の中心推定値908(2)は、コントローラ100のハンドル112の中央付近に配置されたセンサのグループ602と相関するd次元空間内の位置に基づいて推定され得る。一方、第3のクラスタ906(3)の第3の中心推定値908(3)は、小指のグループに対応し得、d次元空間内の第3の点(例えば、[0,0,0,0,0.5,0])として推定され得る。例えば、第3の中心推定値908(3)は、コントローラ100のハンドル112上でより低い位置(例えば、コントローラ100のヘッドからより遠い位置)に配置されたセンサのグループ602と相関するd次元空間内の位置に基づいて推定され得る。第4のクラスタ906(4)の第4の中心推定値908(4)は、非指グループに対応し得、d次元空間の原点902(例えば、[0,0,0,0,0,0])として選択され得る。この第4の中心推定値908(4)は、センサのサブセットがハンドヘルドコントローラ100の使用中に接触されないか、または滅多に接触されないという予想に基づいて、原点902として選択される。これらの中心推定値908が合理的に正確である限り(例えば、中心推定値908がクラスタ中心が収束すると予測される一般的な近傍にある限り)、中心推定値908は、特徴ベクトルをクラスタリングするのに十分である。
【0050】
k個のクラスタ906の入力パラメータおよびそれらのk個のクラスタ906に対する中心推定値908で初期化されたk個の平均クラスタリングアルゴリズムを使用して特徴ベクトルをクラスタリングするプロセスでは、論理回路は、割り当てステップの後に更新ステップを繰り返し実行し得る。割り当てステップでは、論理回路は、各特徴ベクトルを、特徴ベクトルから最小距離である中心推定値908を有するk個のクラスタのうちのクラスタ906に割り当て得る。例えば、各特徴ベクトルは、平均が最小二乗ユークリッド距離を有するクラスタ906に割り当てられ得る。
図9の例では、データ点904(1)を含むデータ点は、中心推定値908(1)を有するクラスタ906(1)に割り当てられる。これは、第1のクラスタ906(1)に割り当てられた各特徴ベクトルについて、中心推定値908(1)と特徴ベクトルとの間の距離が、他の中心推定値908(2)~(4)とその特徴ベクトルとの間の距離のいずれかよりも小さいためである。別の言い方をすると、データ点904(1)によって表される特徴ベクトルは、k個の中心推定値908の中で第1の中心推定値908(1)に最も近いと判定され、これにより、データ点904(1)によって表される特徴ベクトルは、第1の中心推定値908(1)に関連付けられた第1のクラスタ906(1)に割り当てられる。これは、割り当てステップの一部として特徴ベクトルをクラスタに割り当てるために、各特徴ベクトルに対して行われ得る。
【0051】
更新ステップでは、論理回路は、各中心推定値908を更新して、k個の更新されたクラスタ中心910を取得し得、クラスタ906の中心推定値908は、クラスタ906に割り当てられた特徴ベクトルに少なくとも部分的に基づいて更新される。これについての1つの考え方は、中心推定値908が、更新ステップの間に、対応するクラスタ906に割り当てられた特徴ベクトルのサブセットの「中央」に移動されることである。数学的には、この更新ステップは、クラスタ906に割り当てられた特徴ベクトルの更新された手段(更新されたクラスタ中心910)を計算することと、それらの更新されたクラスタ中心910に対して中心推定値908を更新することと、を含み得る。これは、
図9に、各クラスタ906についての初期中心推定値908から更新されたクラスタ中心910までの破線矢印によって示されている。例えば、第1の中心推定値908(1)は、更新ステップ中に第1の更新されたクラスタ中心910(1)に「移動」され、第2の中心推定値908(2)は、更新ステップ中に第2の更新されたクラスタ中心910(2)に「移動」され、第3の中心推定値908(3)は、更新ステップ中に第3の更新されたクラスタ中心910(3)に「移動」される。原点902に割り当てられた第4の中心推定値908(4)は、更新ステップ中に移動しなくてもよい。割り当てステップおよび更新ステップは、収束するまで繰り返され得る。すなわち、論理回路は(例えば、割り当てがもはや変更されなくなり、各クラスタ906の中心910が移動を停止するか、ゼロの量だけ移動するか、またはゼロのある閾値内で移動すると)、更新されたクラスタ中心910が最終クラスタ中心に収束するまで、割り当てステップおよび更新ステップを繰り返すことができる。
【0052】
収束時に、特徴ベクトルはクラスタリングされ、タッチセンサアレイ600は、クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って構成され得る。例えば、コントローラ構成は、第1のクラスタ906(1)内の特徴ベクトルに対応するセンサ602の第1のサブセットを、手の第1の指(例えば、中指)に対応する第1のグループに割り当てることができる。コントローラ構成はまた、第2のクラスタ906(2)内の特徴ベクトルに対応するセンサ602の第2のサブセットを、手の第2の指(例えば、薬指)に対応する第2のグループに割り当てることができる。コントローラ構成はまた、第3のクラスタ906(2)内の特徴ベクトルに対応するセンサ602の第3のサブセットを、手の第3の指(例えば、小指)に対応する第3のグループに割り当てることができる。コントローラ構成はまた、第4のクラスタ906(4)内の特徴ベクトルに対応するセンサの第4のサブセット602を、非指グループ(例えば、接触されないか、または滅多に接触されないセンサ)に対応する第4のグループに割り当てることができる。
【0053】
図10は、本開示の例示的な実施形態による、
図6のタッチセンサ600のコントローラ構成1000を示している。コントローラ構成1000は、本明細書に記載のクラスタベースのセンサ割り当て技術の結果として決定することができ、ここで、特徴ベクトルを導出するために共分散行列800が生成され、k平均クラスタリングアルゴリズムなどのクラスタリングアルゴリズムが特徴ベクトルをクラスタリングするために使用され、クラスタは、コントローラ構成1000に従ってセンサ602をグループに割り当てるために使用される。
図10に示されるように、ブラケット1002(1)内の「影付き」センサ602によって示されるセンサ602の第1のサブセット1002(1)は、手の第1の指(例えば、中指)に対応する第1のグループに割り当てられ得る。ブラケット1002(2)内の「影付き」センサ602によって示されるセンサ602の第2のサブセット1002(2)は、手の第2の指(例えば、薬指)に対応する第2のグループに割り当てられ得る。ブラケット1002(3)内の「影付き」センサ602によって示されるセンサ602の第3のサブセット1002(3)は、手の第3の指(例えば、小指)に対応する第3のグループに割り当てられ得る。比較すると、影無しセンサ602は、非指グループに割り当てられているセンサか、または指グループに割り当てられているが、その静電容量値が手のジェスチャに対応する画像データを生成するために利用されていないセンサを表す。しかしながら、影無しセンサ602は、依然として、コントローラ構成を更新する目的で、(例えば、静電容量値を測定または検出することによって)タッチセンサデータを生成することができる。例えば、ユーザの掴持が変更され、影無しセンサ602のうちの1つ以上に接触し始める場合、タッチセンサアレイ600は、クラスタ分析に基づいて、1つ以上のセンサ602を指グループに割り当てる更新されたコントローラ構成に再構成することができる。
【0054】
センサの割り当てが完了すると、様々な機能を有効にすることができる。例えば、タッチセンサアレイ600がコントローラ構成に従って構成され、センサ割り当てが合理的であることを検証して、1つ以上のルールを評価することができる。例えば、論理回路は、各グループに割り当てられたセンサ602のサブセット1002が、少なくとも3つのセンサ602などの少なくとも閾値数のセンサ602を含むか否かを判定することができる。センサ602のサブセット1002が、センサ602の閾値数を(例えば、閾値未満であることによって、または閾値以下であることなどによって)満たさない数のセンサ602を含む場合、論理回路は、入力としてタッチセンサデータを受信するように構成されたアプリケーション(例えば、ビデオゲーム)に、閾値未満のサブセット1002内のセンサ602によって生成されたタッチセンサデータを送信することを控えることで、センサ602のそのサブセット1002によって生成されたデータを利用しない場合がある。換言すれば、センサ602の閾値未満のサブセット1002によって生成されたデータは、仮想の手(例えば、手のジェスチャ)に関連付けられた画像データを生成する目的のために無視(disregard)または無視(ignore)され得る。追加的に、または代替的に、別のルールにより、各グループに割り当てられたセンサ602が、グループ内の少なくとも1つの他のセンサと連続しているか、または隣接していることが指定され得る。このように、サブセット1002のセンサ602がサブセット1002内の任意の他のセンサ602に隣接しない非隣接センサを含む場合、論理回路は、その非隣接センサおよび/または非隣接センサを含むセンサ602のサブセット1002全体によって生成されたデータを利用しない場合がある。
【0055】
いくつかの実施形態では、論理回路は、各グループからN個の最良のセンサ602(例えば、静電容量式パッド602)を選択してもよく、選択されたN個の最良のセンサに含まれない残りのセンサによって生成されたタッチセンサデータを利用せずに、N個の最良のセンサ602によって生成されたタッチセンサデータを利用してもよい。例えば、
図10のコントローラ構成1000の例では、ブラケット1002(1)内の影付きセンサ602および影無しセンサ602の両方は、手の第1の指に対応する第1のグループに割り当てられ得る。論理回路は、ブラケット1002(1)内の「影付き」センサ602を、指追跡のために利用されるN個の最良のセンサ602として選択することができ、一方で、影無しセンサ602は利用されなくてもよい。一例では、クラスタ分析アルゴリズムが、「最も中指の点」、「最も薬指の点」、および「最も小指の点」にそれぞれ対応するd次元空間内の点を表すクラスタ中心910(1)、910(2)、および910(3)を出力するので、「中指」グループに割り当てられた所定の数のセンサ602が、それらの選択されたセンサの特徴ベクトルとそれらの対応するクラスタ906のクラスタ中心910との間の距離に基づいて、「最も代表的な中指パッド」として選択され得る。これは、他のグループについても(例えば、所定の数の「最も代表的な薬指パッド」、所定の数の「最も代表的な小指パッド」などを選択することによって)同様に行うことができ、2つ以上の指と軽度に関連付けられている残りのパッド602を利用しない(またはそれによって生成されたデータを無視(disregard/ignore)するようにしてもよい。例えば、論理回路は、第1のクラスタ906(1)の収束したクラスタ中心910(1)に最も近いd次元特徴ベクトルによって記述される3つのセンサ602を利用してもよく、第1のクラスタ906(1)に関連付けられた第1のグループに割り当てられた残りのセンサ602からのデータを無視してもよい(すなわち、利用しない)。追加的に、または代替的に、収束したクラスタ中心910に最も近い特徴ベクトルを有するものとしてN個の最良のセンサ602を選択する代わりに、N個の最良のセンサ602は、隣接する指からの偽入力を検出する可能性が最も低いセンサ602として選択されてもよい。例えば、論理回路は、隣接する指グループ(例えば、「薬指」グループ)に関連付けられたクラスタ906の収束したクラスタ中心910から最も離れた特徴ベクトルによって記述される「中指」グループの所定の数のセンサ602を選択してもよい。すなわち、論理回路は、薬指に割り当てられたパッド602から最も遠い中指を追跡するために利用するセンサ602(例えば、静電容量式パッド602)を選択することができ、これにより、中指センサ602への偽入力が回避され得る。
【0056】
いくつかの実施形態では、クラスタリングアルゴリズムは、異なる数のk個のクラスタに対して再実行することができる。例えば、クラスタリングアルゴリズムが第1のパス上のk=4個のクラスタで初期化され、k=4が最適でないという何らかのインジケータがある場合(例えば、収束がない場合、k=4で非指グループに割り当てられたパッド602が多すぎる(例えば、閾値数を超える)場合など)、クラスタリングアルゴリズムは、後続のパス上で、k=3などの異なるk値で初期化され得、クラスタリングアルゴリズムが再実行され得る。これは、指を欠損したユーザ、および/または指の一部ではなく全部でハンドヘルドコントローラ100を使用することを好むユーザにとって有益であり得る。
【0057】
図11~14はハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る一連の操作を表す、論理フローグラフ内のブロックの集合としての様々なプロセスを示している。ソフトウェアの文脈では、ブロックは、1つ以上のプロセッサによって実行されるとき、列挙された操作を実行する、コンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行するか、または特定の抽象データタイプを実装する、ルーチン、プログラム、物体、構成要素、データ構造などを含む。操作が記載される順序は、限定として解釈されることを意図するものではなく、任意のいくつかの記載されたブロックは、プロセスを実装するために任意の順序でおよび/または並行して組み合わされ得る。
【0058】
図11は、異なるコントローラ構成用のタッチセンサ600を較正および構成するための例示的なプロセス1100のフロー図である。1102において、コントローラ100(またはコントローラ100を含むシステム)の論理回路は、タッチセンサデータをタッチセンサ600から受信可能である。例えば、対象(例えば、指、親指等)は、コントローラ100に接触するか、またはコントローラ100の近接範囲内(例えば、ハンドル112の上)に入っていてもよい。タッチセンサデータは、タッチセンサ600の静電容量式パッド602により検出または測定される静電容量値を示し得る。例えば、指がコントローラ100に接触する場合、静電容量値は、コントローラ100に接触することなくコントローラ100の上をホバリングする指と比較して大きくてもよい。この意味で、静電容量値は、コントローラ100に対する指の近接度を示し得る。コントローラ100の論理回路は、静電容量値をデジタル化した値に変換可能である。
【0059】
いくつかの事例において、1102で受信されたタッチセンサデータは、他の静電容量式パッド602から提供された他のタッチセンサデータで較正および/または正規化されない生データを表し得る。すなわち、1102で受信されたタッチデータは、特定の静電容量式パッド602に対し、静電容量式パッド602が、静電容量式パッド602のサイズとコントローラ100に接触するユーザの指および/または手のサイズによっては、静電容量値または静電容量値の範囲を検出可能であるという意味で、生データを表し得る。
【0060】
1104では、コントローラ100の論理回路は、タッチセンサデータを正規化可能である。例えば、反復的にタッチセンサデータをタッチセンサ600から受信することで(例えば、ユーザがコントローラ100と対話する際)、タッチセンサデータは、静電容量式パッド602により測定される静電容量値を示し得る。経時的に、静電容量値は、タッチセンサ600の個々の静電容量式パッド602により検出または測定される静電容量値の範囲を示し得る。例えば、静電容量式パッド602は、ユーザが、静電容量式パッド602の上に存在するコントローラ100の一部分を掴持する場合、高い静電容量値を検出可能であり、ユーザが、静電容量式パッド602の上に存在するコントローラ100の部分を掴持しない場合、低い静電容量値を検出可能である。したがって、1104では、タッチセンサ600のそれぞれの静電容量式パッド602に対して、コントローラ100の論理回路は、タッチセンサデータを分析し、受信した静電容量値の範囲、受信した最大静電容量値、受信した最小静電容量値、平均静電容量値、および/または中央静電容量値を決定可能である。いくつかの事例において、静電容量値は、[0,1]の範囲内で正規化可能である。
【0061】
1106では、コントローラ100の論理回路は、タッチセンサ600を較正可能である。
図11のサブブロックで示すとおり、プロセス1100は、タッチセンサ600を較正するためのより詳細な動作を伴い得る。例えば、タッチセンサ600を較正することは、サブブロック1108および1110を含み得る。サブブロック1108に示されるように、タッチセンサ600を較正することは、個別のジェスチャ認識を含み得る。個別のジェスチャ認識は、コントローラ100でユーザにより実行される個別のジェスチャに対応し得る。例えば、静電容量式パッド602の静電容量値のすべてまたは大部分が急激に減少した場合、論理回路は、この減少を、ユーザがコントローラ100から自身の手を解放するか、またはコントローラ100から指を解放することに関連付けることができる。ユーザが自身の指をコントローラ100から突然解放する際に受信される静電容量値は、特定の静電容量式パッド602に対して検出される静電容量値の範囲の低レベル値に対応し得る(例えば、静電容量値は、指がコントローラ100に接触しない場合を表す)。急激な減少の前に受信される静電容量値は、特定の静電容量式パッド602に対して検出される静電容量値の範囲の高レベル値に対応し得る(例えば、静電容量値は、指がコントローラ100に接触する場合を表す)。静電容量値の範囲により、コントローラ100の論理回路は、コントローラ100により受信される静電容量値に対し、バイアスおよびスケールファクタを計算可能である。すなわち、静電容量式パッド602に対するスケールファクタを認識することで、受信された静電容量値の正規化が可能になる。
【0062】
サブブロック1110が示すとおり、タッチセンサ600を較正することはまた、連続的な低レベルおよび/または高レベルの調整を含み得る。コントローラ100の論理回路がタッチセンサデータをタッチセンサ600から連続して受信するため、論理回路は、タッチセンサデータを連続して監視可能であり、所定の静電容量式パッド602の静電容量値の範囲に対し、低レベル静電容量値および/または高レベル静電容量値を再較正する。例えば、タッチセンサデータを個々の静電容量式パッド602から連続して受信することで、コントローラ100の論理回路は、受信された静電容量値が、過去に決定された低レベル静電容量値および/または高レベル静電容量値よりも、それぞれ低いまたは高いかを決定可能である。この決定に基づいて、コントローラ100の論理回路は、低レベル静電容量値または高レベル静電容量値を更新することができ、それによって、特定の静電容量式パッド602に対する静電容量値の範囲を調整する。これを行う際に、バイアスおよび/またはスケールファクタは、静電容量値を正規化するのに使用するために更新することができる。タッチセンサ600を較正することは、したがって、特定の静電容量式パッド602およびコントローラ100を操作する特定のユーザに対し、バイアスおよびスケールファクタの計算の一助になり得る。
【0063】
1112では、コントローラ100の論理回路は、タッチセンサ600を構成可能であり、それによって、静電容量式パッド602は、本明細書に記載されるように、クラスタ分析に基づいてユーザの特定の指に割り当てられる。このようにして、本明細書に記載されるクラスタベースのセンサ割り当てアプローチを使用して、コントローラ100は、特定の静電容量式パッド602およびそれらの静電容量値をユーザの特定の指にマッピングすることができる。
図11のサブブロックが示すとおり、プロセス1100は、タッチセンサ600を構成するためのより詳細な動作を伴い得る。例えば、クラスタリングアルゴリズムを使用することに加えて、タッチセンサ600を構成することは、サブブロック1114で低レベル範囲の静電容量値でのノイズの除去と、サブブロック1116での静電容量式パッドおよび指拒否と、を含み得、それらの各々が以下に説明される。
【0064】
サブブロック1114では、プロセス1100は、静電容量値の低レベル範囲内でノイズを除去可能である。例えば、指が、コントローラ100に接触しない場合(例えば、ハンドル112の上をホバリングするか、またはハンドル112に近接する場合)、指に関連付けられたかかる静電容量式パッド602は、ノイズに影響されやすい場合がある。換言すれば、静電容量式パッド602に対する静電容量値の低レベル範囲では、少量の測定された静電容量により、ユーザの指の位置が変化し得る。これらの変化に対応する画像データを生成することは、VR環境内で不快な指の痙攣が発生する可能性がある。その代わりに、個々の静電容量式パッド602に対するタッチセンサ600からの静電容量値が、特定の閾値以下に減少し、前の静電容量値からの閾値変化以下である事例において、または静電容量値が、静電容量式パッド602に対する低レベル静電容量値の特定の閾値内である場合において、コントローラ100の論理回路は、静電容量値を抑制可能である。これを行う際に、コントローラ100は、別様でVR環境内で指を不快な痙攣を生じ得るタッチセンサ600で、わずかなスプリアスタッチ入力を無視することができる。
【0065】
サブブロック1116での静電容量式パッドおよび指拒否には、その低レベル静電容量値または高レベル静電容量値が互いの閾値範囲内にある静電容量式パッド602を識別することが含まれ得る。例えば、低レベルおよび高レベル静電容量値が小さい範囲により分離される場合、静電容量式パッドは、ユーザの指の位置を十分詳細に、正確に感知・検出不能であってもよい。ここで、静電容量式パッド602が、静電容量値を閾値範囲内で検出可能であるため、測定された静電容量値は、指の位置に正確に対応しない可能性がある。
【0066】
追加的に、または代替的に、特定の指は、検出された静電容量値の信頼度を低下させる複数の静電容量式パッド602に関連付けられ得る。これらの状況において、静電容量式パッド602により受信された静電容量値は、ノイズを導入可能である。特定の静電容量式パッド602、または静電容量式パッド602のグループを無視することで、静電容量値がユーザの手のジェスチャに対応する信頼度を増大させることができる。
【0067】
プロセス1100が、コントローラ100により実行されるよう記述される一方、いくつかの事例においては、1つ以上の通信的に結合されたコンピューティングデバイスは、プロセス1100のブロックのすべてまたは一部分を実行可能である。例えば、1つ以上のコンピューティングデバイスが、増加された処理を含み得るため、コントローラ100は、タッチセンサ600から受信されたタッチデータを、静電容量値を較正・正規化するためのコンピューティングデバイスに送信可能である。
【0068】
図12は、クラスタ分析に基づくコントローラ構成に従ってコントローラ100を構成するための例示的なプロセス1200を示している。1202では、コントローラ100(またはコントローラ100を含むシステム)の論理回路は、タッチセンサ600のセンサ602によって生成されたデータを受信し得る。例えば、対象(例えば、指、親指等)は、コントローラ100に接触するか、またはコントローラ100の近接範囲内(例えば、ハンドル112の上)に入っていてもよく、タッチセンサ600は、データ(例えば、静電容量値)を生成することができる。
【0069】
1204では、ブロック1202で受信したタッチセンサデータに少なくとも部分的に基づいて、複数のセンサのセンサ対602の間の相関関係を示す共分散行列800が生成され得る。例えば、共分散行列800は、
図7に示される「影付き」センサのようなd個の基準センサのサブセットに基づいて生成され、n個のセンサのセットのためのn×d共分散行列800を生成してもよい。一部の場合では、nは第1の整数であり、dは第2の整数であり、第2の整数dは第1の整数n未満である。すべての可能なセンサ対が、それらの間の正の相関について評価されるわけではないため、このようにしてd個の基準センサのサブセットを選択することによって、コンピューティングリソースが保存され、計算がより効率的となる。いくつかの実施形態では、共分散行列800を生成するために使用されるd個の基準センサのサブセットは、
図7に示される「影付き」センサの列などのセンサ602の列を含む。
図12のサブブロックによって示されるように、プロセス1200は、共分散行列800を生成するためのより詳細な操作を含み得る。例えば、共分散行列800を生成することは、サブブロック1203、1205、1207、および1209を含み得る。
【0070】
サブブロック1203で、統計は、一定期間にわたって受信されたタッチセンサデータに少なくとも部分的に基づいて計算され得る。例えば、最後のp個のサンプルにわたる平均静電容量値は、個々のセンサ602(例えば、静電容量式パッド)に対して計算され得る。
【0071】
サブブロック1205で、d個の基準センサ602のサブセットは、複数のセンサ602の中から選択され得る。いくつかの実施形態では、基準センサは所定であるが、サブブロック1205において、これらの基準センサは動的に決定され得ることを理解されたい。いくつかの実施形態では、これは、異なる基準センサが異なるユーザのために選択されるような、ユーザに基づくものであってもよい。
【0072】
サブブロック1207で、センサ対の間の相関値は、サブブロック1203で計算された統計に少なくとも部分的に基づいて決定されてよい。例えば、センサ対602の間の平均静電容量値を比較してもよく、比較された静電容量値の間の差に基づいて、相関値を決定してもよい。いくつかの実施形態では、これらの相関値は、負の1から正の1[-1,+1]、またはゼロから1[0,+1]の範囲の値として決定される。サブブロック1209では、共分散行列800は、サブブロック1207で決定された相関値で入力され得る。
【0073】
1206において、共分散行列800に少なくとも部分的に基づいて、複数のd次元特徴ベクトルが決定される。各特徴ベクトルは、複数のn個のセンサのうちのセンサ602に対応し得る。各特徴ベクトルはまた、センサ602と複数のn個のセンサののうちのd個の基準センサ602のサブセットとの間の相関を記述し得る。
【0074】
1208では、クラスタリングアルゴリズムを使用して、複数のd次元特徴ベクトルがクラスタリングされ得る。例えば、k平均クラスタリングアルゴリズムをブロック1208で使用することができる。
図12のサブブロックによって示されるように、プロセス1200は、特徴ベクトルをクラスタリングするためのより詳細な操作を含み得る。例えば、特徴ベクトルのクラスタリングは、サブブロック1211、1213、および1215を含んでもよい。
【0075】
サブブロック1211において、k平均クラスタリングアルゴリズムなどのクラスタリングアルゴリズムは、入力パラメータで初期化され得る。これらの入力パラメータは、これらに限定されないが、d次元空間内の複数のk個のクラスタ906(例えば、k=4)、およびk個のクラスタ906の中心推定値908を含み得る。
【0076】
サブブロック1213において、複数の特徴ベクトルの各特徴ベクトルは、特徴ベクトルから最小距離である中心推定値908を有するk個のクラスタのうちのクラスタ906に割り当てられ得る。例えば、所与の特徴ベクトルは、k個の中心推定値908のうち、特徴ベクトルに最も近い中心推定値908を有するクラスタ906に割り当てられる。
【0077】
サブブロック1215では、各中心推定値908は、k個の更新されたクラスタ中心910を取得するように更新される。クラスタ906の中心推定値908は、クラスタ906に割り当てられた特徴ベクトルに少なくとも部分的に基づいて更新される。数学的には、この更新ステップは、クラスタ906に割り当てられた特徴ベクトルの更新された手段(更新されたクラスタ中心910)を計算することと、それらの更新されたクラスタ中心910に対して中心推定値908を更新することと、を含み得る。サブブロック1213および1215は、収束するまで(例えば、更新されたクラスタ中心910が最終的なクラスタ中心に収束するまで)反復し得る。
【0078】
1210では、ハンドヘルドコントローラ100のタッチセンサアレイ600は、特徴ベクトルのクラスタリングに少なくとも部分的に基づいて、コントローラ構成1000に従って構成され得る。ブロック1210におけるこの構成動作は、複数のセンサ602の少なくとも第1のサブセット1002(1)を、手の第1の指(例えば、中指)に対応する第1のグループに割り当て、複数のセンサ602の第2のサブセット1002(2)を、手の第2の指(例えば、薬指)に対応する第2のグループに割り当てるコントローラ構成1000をもたらし得る。k=2の場合、これらは、割り当てられたセンサの2つのグループであり得る。k=3の場合、コントローラ構成1000は、複数のセンサ602の第3のサブセット1002(3)を、手の第3の指(例えば、小指)に対応する第3のグループに割り当ててもよい。k=4の場合、コントローラ構成1000は、複数のセンサ602の第4のサブセット1002を、接触されないか、または滅多に接触されないセンサ602の非指グループに対応する第4のグループ、または第4の指(例えば、人差し指)に対応する第4のグループに割り当ててもよい。プロセス1200が、コントローラ100により実行されるよう記述される一方、いくつかの事例においては、1つ以上の通信的に結合されたコンピューティングデバイスは、プロセス1200のブロックのすべてまたは一部分を実行可能である。
【0079】
図13は、タッチセンサアレイ600がコントローラ構成1000に従って構成された後に利用される特定のセンサ602を選択するための例示的なプロセス1300のフロー図である。いくつかの事例において、プロセス1300は、プロセス1200の「A」から継続可能である。1302では、コントローラ100の(またはコントローラ100を含むシステムの)論理回路は、タッチセンサアレイ600のコントローラ構成1000に少なくとも部分的に基づいて、基準(criterion)(または基準(criteria))が満たされるかを判定することができる。例えば、1302では、論理回路は、特定のグループ(例えば、指グループ)に割り当てられたセンサ602のサブセット1002のうちのいずれかが、センサ602の閾値数を満たさないセンサ602の数を含むか否かを判定することができる。閾値は、特定のグループに割り当てられたセンサ602の数が閾値を満たすかまたは超える場合、またはセンサ602の数が厳密に閾値を超える場合に、満たされ得る。例えば、各サブセットが少なくとも3つのセンサ602を含む場合、基準を満たし得る。別の例として、1302では、論理回路は、特定のグループ(例えば、指グループ)に割り当てられたセンサ602のサブセット1002のうちのいずれかが、その特定のグループに割り当てられた任意の他のセンサ(すなわち、そのグループ内の隔離されたセンサ)に隣接しない非隣接センサを含むか否かを判定することができる。したがって、この例示的な基準は、各サブセット内の各センサ602が、そのセンサ602が割り当てられたグループ内の少なくとも1つの他のセンサ602と連続しているか、または隣接している場合に満たされ得る。
【0080】
基準(criterion)(または基準(criteria))が満たされていない場合、プロセス1300は、ブロック1302からブロック1304への「ノー」のルートを辿り得る。例えば、グループに割り当てられたセンサ602の少なくとも1つのサブセット1002が閾値数のセンサを満たさない複数のセンサを含むため、論理回路により、基準が満たされないと判定された場合、ブロック1304において、論理回路は、例えば、タッチセンサデータを入力として受信するように構成されたアプリケーション(例えば、ビデオゲーム)へのセンサのサブセット602によって生成されたデータの送信を控えることによって、そのサブセット内のセンサによって生成されたデータの利用を控えることができる。別の例として、グループに割り当てられたセンサ602の少なくとも1つのサブセット1002がそのサブセット内の任意の他のセンサ602に隣接していない非隣接センサを含むため、論理回路により、基準が満たされないと判定された場合、ブロック1304において、論理回路は、その非隣接センサによって生成されたデータおよび/または非隣接センサと同じグループに割り当てられたセンサのサブセットによって生成されたデータの利用を控えることができる。この場合も、タッチセンサデータの利用を控えることは、タッチセンサデータを入力として受信するように構成されたアプリケーション(例えば、ビデオゲーム)にタッチセンサデータを送信することを控えることを含み得る。
【0081】
ブロック1304において無視するセンサとして1つ以上のセンサ602、またはセンサ602のサブセット1002を指定した後、または基準(または基準)が満たされた場合にブロック1302からの「イエス」のルートを辿った後、プロセス1300は、ブロック1306に進み得る。1306では、論理回路は、それぞれのグループに割り当てられたセンサの個々のサブセット1002からN個の最良の(例えば、所定の数の)センサ602を選択し得る。N個の最良のセンサ602は、タッチセンサデータが利用され得るセンサ(例えば、タッチセンサアレイ600によって生成されたデータを入力として受信するように構成されたアプリケーションとともに利用され得るセンサ602)である。N個の最良のセンサの選択方法は、本明細書に記載されており、例えば、それらの特徴ベクトルが割り当てられる対応するクラスタ906のクラスタ中心910に最も近い(距離で)特徴ベクトルを有するN個の最良のセンサを選択すること、隣接するグループのクラスタ中心910から最も遠い(距離で)特徴ベクトルを有するN個の最良のセンサを選択すること(例えば、薬指クラスタ906のクラスタ中心910から最も遠い特徴ベクトルによって記述される所定の数の中指センサを選択すること)などが挙げられる。
【0082】
1308では、コントローラ構成のセットおよび各サブセット内で選択されたN個の最良のセンサにより、コントローラ100の(またはコントローラ100を含むシステムの)論理回路は、指に関連付けられた静電容量式パッド602のグループの個々の静電容量式パッド602に印加された重みのセットを使用して、利用されたセンサ602の静電容量値を正規化し得る。例えば、静電容量式パッド602の個々のパッドに割り当てられた重みは、コントローラ構成に関連付け可能である。例えば、タッチセンサ600の4つの静電容量式パッド602がユーザの中指に関連付けられた場合、4つすべての静電容量式パッド602には同じ重みが割り当てられ得る。したがって、これら4つの静電容量式パッド602から受信された静電容量値は、4分の1の重みを含み得る。これを行う際に、これら静電容量式パッド602からの静電容量値は、指の位置を判定する場合に使用される同じ重みを含み得る。加えて、いくつかの事例において、特定の静電容量式パッド602の重みは、どの静電容量式パッド602を無視するか、または特定の閾値未満の信頼度を有するかを示す静電容量式パッドおよび指拒否に基づいてゼロに設定することができる。
【0083】
タッチセンサデータを1308で正規化することはまた、静電容量式パッド602の各グループに対し、静電容量式パッド602からの静電容量値を合計することを含み得る。実施例として、特定のコントローラ構成に対し、中指が4つの静電容量式パッド602により表される場合、中指の静電容量式パッド602の各静電容量値は、4分の1の重みを有し得る。論理回路は、指に対するそれぞれの静電容量式パッド602用の静電容量値に加重可能であり、所定の静電容量式パッド602に対する静電容量値が、指に対する総静電容量値に与える影響を指示する。
【0084】
追加的に、または代替的に、タッチセンサデータを正規化することは、静電容量式パッド602に過去に加えられた重みにしたがって、タッチセンサデータを正規化することを含み得る。静電容量式パッドおよび指拒否(サブブロック1116)により、静電容量式パッド602のグループ内のすべてではない静電容量式パッド602は、同じ重みを有し得る。実施例として、ユーザは、特定の静電容量式パッド602をグループに接触しない場合がある。次に、論理回路は、例えば、ユーザの手が小さいか、またはユーザがコントローラ100上で自身の手を異なる方法で置く場合、ユーザが接触しない特定の静電容量式パッド602の静電容量値を拒否するか、または分解しない場合がある。例えば、上述のとおり、低レベル静電容量値と高レベル静電容量値が小幅(すなわち、範囲が小さい)ならば、静電容量式パッド602は、大量のノイズに影響されやすい場合がある。ここで、コントローラ100の論理回路は、加重和内の静電容量式パッド602の特定の静電容量値を無視することができる。静電容量値を使用しない事例において、使用する静電容量値は、合計され、使用する重みの和で除算され得る。例えば、4つの静電容量式パッド602が、特定の指に割り当てられる場合、各静電容量式パッド602は、4分の1の重みを有し得る。しかしながら、静電容量式パッド602の1つに対する静電容量値が信頼度を有しない場合(例えば、大量のノイズを含む)、1つの静電容量式パッド602の重みは、残り3つの静電容量式パッドが3分の1の重みを有するように無視することができる。それにおいて、静電容量値は合計され、使用する静電容量式パッド602の重みの和で除算される。
【0085】
1310では、コントローラ100の論理回路は、少なくとも部分的にタッチセンサデータに基づいて、指値をユーザのそれぞれの指に割り当て可能である。例えば、タッチセンサデータを正規化して、タッチセンサデータを特定の指に関連付けた後、コントローラ100は、指値を[0,1]のスケールで決定可能である。ユーザの指に割り当てられた指値は、コントローラ100に対する指の相対位置またはカールを示し得る。この意味では、コントローラ100は、個々の静電容量式パッドから検出される静電容量値を使用して、コントローラ100に対するユーザの指の位置を決定可能である。いくつかの事例において、コントローラ100は、ユーザの各指またはタッチセンサ600が構成されるそれらの指に対する指値を決定可能である。
【0086】
1312では、コントローラ100の論理回路は、タッチセンサデータを入力として受信するように構成された1つ以上のコンピューティングデバイスおよび/またはアプリケーションに、指値(例えば、表示値)を送信することができる。いくつかの事例において、1つ以上のコンピューティングデバイスは、指値を利用可能であり、コントローラ100上にユーザの手のジェスチャを描写する画像データを作成する。いくつかの実施形態において、1つ以上のコンピューティングデバイスは、指値の追加の分析を実行可能である。例えば、1つ以上のコンピューティングデバイスは、画像データに指のカールを生成する場合、カール論理回路を利用可能である。さらに、いくつかの事例において、コントローラ100は、少なくとも1つの指により表面を押すとき、コントローラ100の圧力センサからの力データ等のコントローラ100により捕捉および/または受信された追加のデータを送信可能である。
【0087】
1312から、プロセス1300は、プロセス1200のステップ1202にループし得る。したがって、コントローラ100は、本明細書で説明するように、ユーザの掴持に従って画像データを生成するのに使用するため、かつクラスタ分析に基づいてコントローラ100のコントローラ構成を動的に判定/更新するのに使用するための静電容量値を連続的に受信することができる。
【0088】
プロセス1300のいくつかまたはすべてが、コントローラ100により実行されるように記述される一方、いくつかの事例において、1つ以上の通信的に結合されたコンピューティングデバイスは、プロセス1300のブロックのすべてまたは一部分を実行可能である。例えば、コンピューティングデバイスは、増大した処理能力を含み得る場合、コントローラは、タッチセンサ600から受信したタッチデータをコンピューティングデバイスに送信して、コントローラ構成1000を判定するために使用されるクラスタベースのセンサ割り当てを判定することができる。次に、コンピューティングデバイスは、コントローラ構成1000をコントローラ100に送信、またはコントローラ構成1000の表示値をコントローラ100に送信可能である。
【0089】
図14は、コントローラ100のタッチセンサ600等のコントローラのタッチセンサを較正し、タッチセンサデータ内のノイズを低減し、タッチセンサデータを利用して、ユーザにより実行される手のジェスチャを表す画像データを生成するためのプロセス1400を示している。いくつかの事例において、プロセス1400は、指がどの程度カールまたは伸長する等の指値または指の位置を表す表示値を出力可能である。
【0090】
1402では、プロセス1400は、タッチセンサデータをタッチセンサ600から受信可能であり、タッチセンサデータは、タッチセンサ600の静電容量式パッド(例えば、静電容量式パッド602)により検出される生の静電容量値を表示または指示する。いくつかの事例では、プロセス1400は、a1、ai、およびaNによって図示されるように、個々の静電容量式パッド602から静電容量値を受信し得る。いくつかの事例において、プロセス1400は、VR環境で表示された各フレームに対して、生の静電容量値をタッチセンサ600から受信可能である。
【0091】
1404で、プロセス1400は、生の静電容量値を正規化するように工場正規化を実行し得る。例えば、静電容量式パッド602は、製造条件、静電容量式パッド602のサイズ等によっては、異なるバイアス、スケールファクタ、および残留偏差を有し得る。いくつかの事例において、工場正規化は、静電容量値内のバイアスを除去するための一次較正と、静電容量値を正規化すること、を含み得る。
【0092】
1406で、プロセス1400は、掴持較正を実行し得る。示されるように、掴持較正は、次に詳細に議論されるサブブロック1408、1410、および1412を含み得る。
【0093】
サブブロック1408で、プロセス1400は、各々の静電容量式パッド602についての静電容量値、受信された最大静電容量値、受信された最小静電容量値、平均静電容量値、および/または中央静電容量値の範囲を観察するように、統計分析を実行し得る。
【0094】
1410で、プロセス1400は、別個のジェスチャ検出を実行し得る。ここで、プロセス1400は、工場正規化にしたがって正規化された後に、タッチセンサデータ(すなわち、静電容量値)を分析可能であり、コントローラ100で個別のジェスチャを検出する。例えば、タッチセンサデータが、静電容量式パッド602の静電容量値またはその一部分が急激に減少することを示した場合、プロセス1400は、静電容量値のこの減少を、ユーザが、自身の手をコントローラ100から解放する、または特定の指をコントローラ100から解放することに関連付け可能である。ユーザが、自身の指をコントローラ100から突然解放する際に受信される静電容量値は、特定の静電容量式パッド602により検出される静電容量値の範囲に対する低レベル値に対応し得る(例えば、静電容量値は、指がコントローラ100に接触しない場合を表す)。急激な減少の前に受信される静電容量値は、特定の静電容量式パッド602により検出される静電容量値の範囲の高レベル値に対応し得る(例えば、静電容量値は、指がコントローラ100に接触する場合を表す)。静電容量値の範囲により、プロセス1400は、静電容量式パッド602の静電容量値に対しバイアスおよびスケールファクタを決定可能であり、それぞれの静電容量式パッド602で受信される静電容量値を正規化する。
【0095】
1412で、プロセス1400は、連続的な較正更新および減衰を実行し得る。プロセス1400が、タッチセンサデータをタッチセンサ600から連続して受信可能であるため、プロセス1400は、タッチセンサデータを連続して監視可能であり、所定の静電容量式パッド602の静電容量値の範囲に対し、低レベル静電容量値および/または高レベル静電容量値を再較正または再設定する。換言すれば、タッチセンサデータを個々の静電容量式パッド602から連続して受信することで、プロセス1400は、静電容量値が、範囲の過去に判定された低レベル静電容量値および/または範囲の高レベル静電容量値よりも、それぞれ低いまたは高いかを判定可能である。例えば、静電容量が、ゲームプレイ体験(例えば、手が発汗または乾燥状態、湿度や温度等)により変化する際、プロセス1400は、新規の低レベル静電容量値または新規の高レベル静電容量値を決定または設定可能であり、それによって、静電容量式パッド602により検出される静電容量値の範囲を調整する。加えて、いくつかの事例において、連続較正は、1410での個別のジェスチャ検出を判定するプロセス1400への依存度を低減可能である。
【0096】
いくつかの事例において、プロセス1400は、新規に検出される低レベル静電容量値または新規に検出される高レベル静電容量値に重みまたは割合を割り当て可能であり、それぞれ低レベル静電容量値または高レベル静電容量値を更新する。例えば、プロセス1400が、特定の時間中に、過去に検出された低レベル静電容量値以下の静電容量値を検出すれば、プロセス1400は、静電容量値に加重し、低レベル静電容量値を更新可能である。
【0097】
加えて、低レベル静電容量値または高レベル静電容量値は、ユーザがコントローラ100を掴持する方法、環境条件(例えば、湿度)、または他の特性(例えば、肌の湿り具合)によっては、経時的に減衰可能である。低レベル静電容量値と高レベル静電容量値が減衰可能な量は、低レベル静電容量値と高レベル静電容量値が、範囲の閾値の量により分離されて、センサノイズを低減するように、限定され得る。いくつかの事例において、減衰は、時間および/または静電容量値の変化率に依存し得る。例えば、ユーザが、コントローラ100上で指をタップする、またはコントローラ100が、ユーザを切り替えて、それによって、受信された静電容量値の変化を潜在的に生じると、減衰率は、増加可能であり、低レベルおよび/または高レベル静電容量値の更新に必要な時間を低減する。
【0098】
1406、およびサブブロック1408~1412での掴持較正の結果として、各静電容量式パッド602から感知された静電容量値は、[0,1]のスケールで正規化可能である。[0,1]のスケールは、ユーザの特定の掴持と個々の静電容量式パッド602に対して、タッチセンサ600から感知された静電容量値に対する高および低レベルを表し得る。
【0099】
1414では、プロセス1400は、静電容量値の加重和を実行可能である。静電容量値が、[0,1]のスケールで正規化されるため、プロセス1400は、コントローラ構成によっては、静電容量式パッド602からの静電容量値に重みを割り当て可能である。すなわち、静電容量値は、[0,1]の間で正規化され、重みは、個々の静電容量式パッド602によって受信された個々の静電容量値に割り当てられる。例えば、特定のコントローラ構成が特定の指に割り当てられた5つの静電容量式パッド602を含む場合、静電容量値は、等しい重み(例えば、5分の1)を含み得る。換言すれば、静電容量式パッド602が最大静電容量値を検出するとき、加重和の出力は、1に等しくなり得る。
【0100】
示されるように、加重和を判定することは、サブブロック1418、1420、および1422を含み得る。サブブロック1418において、プロセス1400は、本明細書で説明されるように、クラスタ分析に基づく動的コントローラ構成決定を実行し得る。例えば、プロセス1400は、グループにクラスタリングされた特徴ベクトルを導出するために、タッチセンサデータ(例えば、静電容量値)から共分散行列800を生成してもよい。このクラスタリングに基づいて、センサ602は、例えば、任意の好適な数のグループ/クラスタについて、第1のサブセットのセンサ602を第1の指に対応する第1のグループに割り当て、第2のサブセットのセンサ602を第2の指に対応する第2のグループに割り当てることによって、手の指に対応し得るグループに割り当てられ得る。
【0101】
サブブロック1420で、プロセス1400は、静電容量値内に含まれるノイズをフィルタリングし得る。例えば、指が十分に伸長した場合等、指がコントローラ100に接触しない場合、コントローラ100に接触しない指に関連付けられたかかる静電容量式パッド602は、ノイズに影響されやすい場合がある。ここで、少量の静電容量を検出することは、受信された静電容量値内に大量のノイズを生じ得る。個々の静電容量式パッド602に対するタッチセンサ600からの静電容量値が、特定の閾値以下に減少する事例において、または静電容量値が、静電容量式パッド602に対し低レベル静電容量値の特定の限界内にあれば、プロセス1400は、検出された静電容量を抑制可能である。他の事例において、かかる状況では、プロセス1400は、低い重みを静電容量値に割り当て可能である。
【0102】
サブブロック1422では、プロセス1400は、タッチセンサ600の静電容量式パッド602からの特定の静電容量値および/またはそれぞれの静電容量式パッド602に関連付けられた指を拒否可能である。例えば、1420では、プロセス1400は、低レベル静電容量値または高レベル静電容量値の間に小さい範囲を有する、静電容量式パッド602を識別可能である。これらの状況において、静電容量式パッド602により受信された静電容量値は、ノイズを導入可能であり、特定の静電容量式パッド602、または静電容量式パッド602のグループを無視することは、タッチセンサデータがユーザの手のジェスチャに対応する信頼度を向上可能である。すなわち、静電容量式パッド602により検出される静電容量値の範囲が小さければ、静電容量式パッド602は、大量のノイズに影響されやすい場合がある。
【0103】
追加的に、または代替的に、特定の指は、低い信頼度を有する複数の静電容量式パッド602に関連付けられ得る。特定の指、または静電容量式パッドのグループ602を拒否することは、小さな手についてのコントローラ構成について不測の挙動を導入する。これらのシナリオでは、それぞれの指は、隣接する指に関連付けられ得る(例えば、小指は、薬指に関連付けられる)。追加的に、または代替的に、
図13に関して説明したように、プロセス1400は、基準(criterion)(または基準(criteria))が満たされない場合、例えば、指グループに割り当てられたセンサのサブセット602が、そのグループに割り当てられたセンサの閾値数未満(例えば、指グループに割り当てられた2つ以下のセンサ)である場合、かつ/または指グループに割り当てられたセンサのサブセット602が、その割り当てられたグループ内の任意の他のセンサと連続しない(タッチセンサアレイ600上に)非隣接(または孤立した)センサを有する場合、特定のタッチセンサデータを拒否することができる。追加的に、または代替的に、ブロック1422におけるパッドの拒否は、本明細書に記載されるように、N個の最良のセンサ602を選択することと、N個の最良のセンサ602に含まれない残りのセンサからのタッチセンサデータを拒否することと、を含み得る。
【0104】
1424で、プロセス1400は、最終的な正規化を実行し得る。例えば、いくつかの事例では、特定の指に割り当てられた静電容量式パッド602は、静電容量値を検出し得ず、または静電容量値が信頼度を有しない場合がある。ここで、ユーザは、自身の手のサイズを理由にまたはユーザが掴持を再調整した事例において、タッチセンサ600の特定の静電容量式パッド602に接触することはできない。加えて、低レベルおよび高レベル静電容量値が小幅で、または小さい範囲により分離されるいくつかの事例において、静電容量値が信頼度を有しない場合があり、ノイズは、指の動きに顕著に影響し得る。これらの静電容量式パッド602からのノイズを除去または減少するために、最終正規化1424は、静電容量値の信頼度を決定可能であり、信頼度が低いと、静電容量式パッド602からの静電容量値の重みは、加重和から除去される。それにおいて、静電容量値は合計され、使用する静電容量式パッド602の重みの和で除算される。
【0105】
1426では、プロセス1400は、タッチセンサデータをフィルタリングと曲線適合することが可能であり、ユーザの手のジェスチャを表示する。フィルタリングと曲線適合は、タッチセンサデータと指の位置との間に線形関係を達成するために(例えば、カールする、伸長される、途中まで伸長される等)、[0,1]のスケールでタッチデータの最終正規化を線形化することを含み得る。例えば、ユーザの手がコントローラ100に近接してコントローラ100を掴持する際、1424で決定される最終の正規化値は、指数関数的に増加するように、指数曲線に従うことができる。換言すれば、合計された静電容量値は、コントローラ100上に/周囲に配設された指との近接度に指数関数的に関連され得る。静電容量値が指位置と相関されるように[0,1]スケールで値を線形化することは、感度を低下させ得、指がコントローラ100から伸長されたとき、ならびに指がコントローラ100に接触したとき、またはコントローラ100に近接しているときに、ノイズがもたらす影響を低減し得る。
【0106】
示されるように、フィルタリングおよび曲線適合は、手ジェスチャを生成するように利用される最終値を達成するために、様々なサブブロックを含み得る。フィルタリングおよび曲線適合段階1426で、プロセス1400は、曲線適合の前または後にフィルタリングを適用し得る。例えば、サブブロックは、静電容量式パッド602が、ノイズに影響されやすい場合、静電容量値の低レベル範囲内に静電容量値をフィルタリングすることを含み得る。換言すれば、指がコントローラ100を掴持するか、またはコントローラ100に近接する場合等、高レベル静電容量範囲内で、静電容量式パッド602は、ノイズからの影響は少ない。
【0107】
プロセス1400は、静電容量値に対して実行されるフィルタリングの量を調整するように、1428で適応フィルタリングを適用し得る。適応フィルタリングは、静電容量値が静電容量値の高い範囲内にあるのと比較して、静電容量値の低い範囲内の静電容量値をより積極的にフィルタリングするように、適応的にフィルタリングし得る。図示されるように、適応フィルタリングは、サブブロック1430、1432、および1434を含み得る。一般に、1426での適応フィルタリングは、正規化された値にどの程度のノイズが存在するかを決定し、正規化された静電容量値に適用されたフィルタリングの量を決定するように、サブブロック1430、1432、および1434の結果を利用し得る。静電容量値に存在するノイズの量を判定することは、それぞれの静電容量式パッド602に対する高レベルおよび低レベル静電容量値に加えて、静電容量値を生成するために使用される静電容量式パッド602を判定することを含み得る。例えば、静電容量式パッド602は、基準ノイズを有し得、静電容量式パッド602に対する高レベルと低レベル静電容量値との間の範囲が低ければ、静電容量式パッド602の基準ノイズは、指の動きが大きいことに相当し得る(すなわち、基準ノイズは、静電容量式パッド602が感知可能な静電容量値の範囲の大きな部分である)。ここで、ノイズに対する信号の比率は、高い場合がある。それと比較すると、静電容量式パッド602に対する高レベルと低レベル静電容量値との間の範囲が大きいと、静電容量式パッド602の基準ノイズは、大きな指の動きの量を導入不可である。これらの状況において、静電容量値内のノイズを低減するために、静電容量値の範囲が小さい場合、プロセス1400は、静電容量値の範囲が大きい場合よりも、静電容量値をより重くフィルタリングするのが可能である。フィルタリングと曲線適合1426は、各静電容量式パッド602が、それぞれ高および低レベルの静電容量値を含み得るため、各静電容量式パッド602に対し繰り返し可能である。加えて、1426で適用されるフィルタリングの量は、静電容量式パッド602および/または拒否された静電容量式パッド602(例えば、パッドおよび指拒否1422)に依存可能である。
【0108】
1430での合計ノイズ予測は、どの静電容量式パッド602が使用されているか、静電容量式パッド602に割り当てられた重み、ならびに静電容量式パッド602のそれぞれのベースラインノイズに基づいて静電容量値をフィルタリングし得る。例えば、プロセス1400は、個々の静電容量式パッド602についての推定ベースラインノイズを表し得る、1428でのデフォルトの静電容量式パッドノイズを含み得る。したがって、1430での合計ノイズ予測ステップは、使用されているそれらの静電容量式パッド602について、それらのそれぞれのベースラインノイズ値を決定し得る。合計ノイズ予測ステップはまた、静電容量式パッド602についての予想または予測されるノイズを決定し得る。例えば、使用される静電容量式パッド602が、大きい範囲にわたって(すなわち、低レベルと高レベルの静電容量値との間で)静電容量値を感知すれば、静電容量値は、大量のノイズを含み得、フィルタリングを少なくして適用可能である。しかしながら、静電容量式パッド602に対する静電容量値の範囲が小幅(すなわち、低レベルと高レベルの静電容量値との間で)であれば、静電容量値は、大量のノイズを含み得、プロセス1400は、より大きいフィルタリングの量を適用可能である。
【0109】
1432でのdNorm/dtは、経時的な静電容量値における変化を考慮に入れ得る。例えば、静電容量式パッド602から受信した静電容量値が、短時間(例えば、1つのフレーム)にわたって大幅に変化すれば、静電容量値内に導入される潜在的なノイズは、無視され、それにしたがって、加重可能である。すなわち、静電容量値をフィルタリングして、待ち時間を導入する代わりに、静電容量値が、閾値の時間にわたって、閾値の量を越えて変化すれば、フィルタリングを少なくして静電容量値に適用可能である。この意味で、大きい指の動きが検出される場合、フィルタリングを少なくして適用可能であり、小さい指の動きが検出される場合、フィルタリングを多くして適用可能である。
【0110】
1434でのdCurl/dNormは、検出された静電容量の量に基づいて、正規化された静電容量値をフィルタリングし得る。例えば、指がコントローラを掴持する静電容量値の高域では、より少ないフィルタリングは、ノイズが指位置に少ない影響を及ぼし得るため、適用され得る。しかしながら、指がコントローラから変位する、または近接している、静電容量値の低い範囲で、より多くのフィルタリングは、静電容量値の小さな変化が指の位置に重大な影響を及ぼし得るため、適用され得る。ここで、静電容量値における小さな変化は、指ジェスチャの大きな変化をもたらし得る。
【0111】
サブブロック1438で、ローパスフィルタは、検出された静電容量値上のフィルタリングの量を調整する調整可能ローパス平均フィルタを表し得る。いくつかの事例では、フィルタリングの量は、[0,1]のスケールであり得、適応フィルタ1428で決定されたフィルタリングの量の結果に基づき得る。すなわち、ローパスフィルタは、適応フィルタリングから決定されるような静電容量値をフィルタリングし得る。
【0112】
サブブロック1440で、プロセス1400は、静電容量値を指の位置、または手のアニメーションに関連付けるように、[0,1]スケールの静電容量値に曲線適合し得る。各指について、曲線適合の出力は、各指についての数値を含み得、ここで、数値は、手の各指の指位置を示す。
【0113】
サブブロック1442で、プロセス1400は、閾値を下回る静電容量値における変化をフィルタリングするように、曲線の後にバックラッシュフィルタを適用し得る。例えば、静電容量値が[0,1]スケールの閾値量によって変化しない場合、静電容量値は、フィルタリングされ得る。かかるフィルタリングは、ユーザによる知覚された指のひきつりおよび動きを減少させ得る。
【0114】
サブブロック1444で、関節モデルは、手のアニメーション(例えば、ハンドスケルトン)に対応し得る。例えば、関節モデルは、1440で、曲線適合から手の個々の指に割り当てられた数に対応する手のアニメーションを生成し得る。
【0115】
図15は、コントローラ100などの、コントローラ1500の例示的な構成要素を示している。いくつかの実施形態では、
図15に示される例示的な構成要素は、コントローラ1500に通信可能に結合されるゲームコンソールまたはパーソナルコンピュータ上の構成要素のうちの1つ以上を実装することなどによって、コントローラ1500を含むシステムの一部である任意のコンピューティングデバイス上に実装され得る。図示のとおり、コントローラ1500は、上述の制御部(例えば、ジョイスティック、トラックパッド、トリガー等)等の1つ以上の入力/出力(I/O)デバイス1502、および/または潜在的に、他の任意の種類の入力または出力デバイスを含む。例えば、I/Oデバイス1502は、ユーザ音声入力等のオーディオ入力を受信するための1つ以上のマイクを含み得る。いくつかの実装形態において、1つ以上のカメラまたは他の種類のセンサ(例えば、慣性測定装置(IMU))は、コントローラ1500の動き等のジェスチャの入力を受信するための入力デバイスとして機能し得る。いくつかの実施形態では、追加の入力デバイスが、キーボード、キーパッド、マウス、タッチスクリーン、ジョイスティック、制御ボタンなどの形態で提供され得る。入力デバイスは、音量を増加/減少させるための基本音量制御ボタン、ならびに電源およびリセットボタンなどの制御機構をさらに含み得る。一方、出力デバイスは、ディスプレイ、光素子(例えば、LED)、触覚をもたらすバイブレータ、スピーカ(例えば、ヘッドフォン)などを含み得る。例えば、コントローラ1500が電源オン等の状態を示す、簡便な光学部材(例えば、LED)もまたあり得る。いくつかの実施例が提供された一方、コントローラ1500は、追加的に、または代替的に、他の任意の種類の出力デバイスを含み得る。
【0116】
いくつかの事例では、1つ以上の出力デバイスによる出力は、入力デバイスのうちの1つ以上によって受信された入力に基づいてもよい。例えば、コントローラ1500で制御タッチ入力を選択することで、制御部の近傍(例えば、制御部の下)および/または他の任意の場所に配置された振動器により触覚反応が出力され得る。いくつかの事例において、出力は、コントローラ100のハンドル112上/内に配設された静電容量式パッド602等のタッチセンサ600上のタッチ入力の特性に少なくとも部分的に基づいて、変化可能である。例えば、ハンドル112上の第1の場所のタッチ入力が、第1の触覚出力を生じ得る一方、ハンドル112上の第2の場所でのタッチ入力は、第2の触覚出力を生じ得る。さらに、ハンドル112上の特定のジェスチャは、特定の触覚出力(または他の種類の出力)を生じ得る。例えば、ハンドル112上で(タッチセンサ600により検出される)タップアンドホールドジェスチャは、第1の種類の触覚出力を生じ得る一方、ハンドル112上でタップアンドリリースジェスチャは、第2の種類の触覚出力を生じ、ハンドル112を強くタップすると、第3の種類の触覚出力が生じ得る。
【0117】
加えて、コントローラ1500は、ネットワークおよび/または1つ以上のリモートシステム(例えば、アプリケーション実行するホストコンピューティングデバイス、ゲームコンソール、他のコントローラなど)への無線接続を容易にするための1つ以上の通信インターフェース1504を含み得る。通信インターフェース1504は、Wi-Fi、Bluetooth、無線周波数(RF)などの1つ以上の様々な無線技術を実装し得る。追加的に、または代替的に、コントローラ1500は、ネットワーク、接続された周辺デバイス、または他の無線ネットワークと通信するプラグインネットワークデバイスへの有線接続を容易にする物理ポートを含み得る。
【0118】
例示された実装形態では、コントローラ1500は、1つ以上のプロセッサ1506およびコンピュータ可読媒体1508をさらに含む。いくつかの実装形態では、プロセッサ1506は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、CPUおよびGPUの両方、マイクロプロセッサ、デジタル信号プロセッサ、または他の既知の処理ユニットもしくは構成要素を含み得る。追加的に、または代替的に、本明細書に記載される機能は、1つ以上のハードウェア論理構成要素によって、少なくとも部分的に、実施され得る。例えば、非限定的に、使用されることができるハードウェア論理回路構成要素の例示的なタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理回路デバイス(CPLD)などを含む。追加的に、プロセッサ1506の各々は、プログラムモジュール、プログラムデータ、および/または1つ以上のオペレーティングシステムも記憶し得る、その独自のローカルメモリを保有し得る。
【0119】
コンピュータ可読媒体1508は、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された、取り外し可能および取り外し不可能な媒体を含み得る。かかるメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。コンピュータ可読媒体1508は、コンピュータ可読媒体1508に記憶された命令を実行するためにプロセッサ1506によってアクセス可能な任意の利用可能な物理媒体であり得る、コンピュータ可読ストレージ媒体(「CRSM」)として実装され得る。一実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMは、限定されるものではないが、読み出し専用メモリ(「ROM」)、電気的に消去可能なプログラマブル読み出し専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用され得、プロセッサ1506によってアクセスされ得る、任意の他の有形媒体を含み得る。
【0120】
命令、データ記憶等の複数のモジュールは、コンピュータ可読媒体1508内に記憶され、プロセッサ1506上で実行するように構成可能である。いくつかの例示的な機能モジュールは、同一の機能が、ハードウェア、ファームウェア内、またはチップ(SOC)上のシステムとして、その代わりとして、実装可能であるが、コンピュータ可読媒体1508に記憶され、プロセッサ1506上で実行されるように図示される。オペレーティングシステムモジュール1510は、他のモジュールの利益のために、コントローラ1500内でハードウェアを管理し、コントローラ1500に結合されるように構成され得る。加えて、コンピュータ可読媒体1508は、コントローラ1500が、1つ以上の通信インターフェース1504を介して、アプリケーション(例えば、ゲームアプリケーション)、ゲームコンソール、リモートサーバ、他のコントローラ、コンピューティングデバイスなどを実行するパーソナルコンピューティングデバイスなどの1つ以上の他のデバイスと通信することを可能にするネットワーク通信モジュール1512を記憶し得る。コンピュータ可読媒体1508は、コントローラ1500上で、またはコントローラ1500に結合されたコンピューティングデバイス上で実行するゲーム(または他のアプリケーション)に関連付けられたデータを記憶するためのゲームセッションデータベース1514をさらに含み得る。
【0121】
コンピュータ可読媒体1508はまた、パーソナルコンピューティングデバイス、ゲームコンソール、リモートサーバなどの、コントローラ1500に結合されたデバイスに関連付けられたデータを記憶するデバイス記録データベース1516を含み得る。コンピュータ可読媒体1508は、コントローラ1500をゲームコントローラとして機能するように構成するゲームコントロール命令1518と、コントローラ1500を他の非ゲームデバイスのコントローラとして機能するように構成するユニバーサル制御命令1520と、をさらに記憶可能である。コンピュータ可読媒体1508は、追加的に、コントローラ構成1522を記憶可能である。コントローラ構成1522は、本明細書に記載されるように、タッチセンサ600の静電容量式パッド602の動的割り当てに関連付けられたデータを表示または含み得、特定の静電容量式パッド602を、クラスタ分析に基づいてコントローラ1500を操作するユーザのそれぞれの指に関連付ける。クラスタ分析モジュール1524は、共分散行列800を生成すること、特徴ベクトルを導出すること、および特徴ベクトルをクラスタリングしてコントローラ構成1522を決定することなどによって、実行時に動的に決定されたコントローラ構成に、本明細書に記載のクラスタ分析を実装してもよい。
【0122】
主題は、構造的特徴に固有の言語で説明されているが、添付の特許請求の範囲で定義された主題が必ずしも説明された特定の特徴に限定されないことを理解されたい。むしろ、具体的な特徴は、請求項を実装する例示的な形態として開示されている。
以下に、本出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
システムであって、
ハンドヘルドコントローラであって、前記ハンドヘルドコントローラのハンドル上に分散された複数の静電容量式パッドを含むタッチセンサアレイを有する、ハンドヘルドコントローラと、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶する1つ以上の非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されたとき、前記1つ以上のプロセッサに、
前記タッチセンサアレイから、前記複数の静電容量式パッドによって検出された静電容量値を受信することと、
前記静電容量値に少なくとも部分的に基づいて、前記複数の静電容量式パッドのうちのパッド対の間の相関を示す共分散行列を生成することと、
前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを判定することであって、各特徴ベクトルが、前記複数の静電容量式パッドのうちのパッドに対応し、前記パッドと前記複数の静電容量式パッドのうちの1つ以上の他のパッドとの間の相関を記述する、決定することと、
クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数の静電容量式パッドの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数の静電容量式パッドの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を含む行為を実行させる、システム。
[2]
前記複数の静電容量式パッドが、n個のパッドのセットを含み、nが、第1の整数であり、
前記共分散行列の前記生成が、前記複数の静電容量式パッドのうちのd個の基準パッドのサブセットに少なくとも部分的に基づいて、n×d共分散行列として前記共分散行列を生成することを含み、dが、前記第1の整数未満の第2の整数であり、
前記複数の特徴ベクトルの前記判定が、n個のd次元特徴ベクトルを判定することを含む、[1]に記載のシステム。
[3]
前記複数のセンサが、前記ハンドル上にパッドの行および列で分散され、前記行が、前記ハンドル上で実質的に水平方向に配向され、前記列が、前記ハンドル上で実質的に垂直方向に配向され、
d個の基準パッドの前記サブセットが、パッドの列を含む、[2]に記載のシステム。
[4]
前記クラスタリングアルゴリズムが、k平均クラスタリングアルゴリズムであり、
前記複数の特徴ベクトルの前記クラスタリングが、
前記k平均クラスタリングアルゴリズムを、
複数のk個のクラスタおよび
d次元空間内の前記k個のクラスタの中心推定値を含む入力パラメータで初期化することと、
前記複数の特徴ベクトルの各特徴ベクトルを、前記特徴ベクトルから最小距離である中心推定値を有する前記k個のクラスタのうちのクラスタに割り当てることと、
各中心推定値を更新して、k個の更新されたクラスタ中心を取得することであって、クラスタの中心推定値が、前記クラスタに割り当てられた前記特徴ベクトルに少なくとも部分的に基づいて更新される、取得することと、を含む、[2]に記載のシステム。
[5]
方法であって、
ハンドヘルドコントローラのタッチセンサアレイの複数のセンサによって生成されたデータを受信することであって、前記複数のセンサが、前記ハンドヘルドコントローラのハンドル上に分散されている、受信することと、
前記データに少なくとも部分的に基づいて、前記複数のセンサのうちのセンサ対の間の相関を示す共分散行列を生成することと、
前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを判定することであって、各特徴ベクトルが、前記複数のセンサのうちのセンサに対応し、前記センサと前記複数のセンサのうちの1つ以上の他のセンサとの間の相関を記述する、決定することと、
クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数のセンサの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数のセンサの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を含む、方法。
[6]
前記複数のセンサが、n個のセンサのセットを含み、nが、第1の整数であり、
前記共分散行列の前記生成が、前記複数のセンサのうちのd個の基準センサのサブセットに少なくとも部分的に基づいて、n×d共分散行列として前記共分散行列を生成することを含み、dが、前記第1の整数未満の第2の整数であり、
前記複数の特徴ベクトルの前記判定が、n個のd次元特徴ベクトルを判定することを含む、[5]に記載の方法。
[7]
前記複数のセンサが、前記ハンドル上にセンサの行および列で分散され、前記行が、前記ハンドル上で実質的に水平方向に配向され、前記列が、前記ハンドル上で実質的に垂直方向に配向され、
d個の基準センサの前記サブセットが、センサの列を含む、[6]に記載の方法。
[8]
前記クラスタリングアルゴリズムが、k平均クラスタリングアルゴリズムであり、
前記複数の特徴ベクトルの前記クラスタリングが、
前記k平均クラスタリングアルゴリズムを、
複数のk個のクラスタおよび
d次元空間内の前記k個のクラスタの中心推定値を含む入力パラメータで初期化することと、
前記複数の特徴ベクトルの各特徴ベクトルを、前記特徴ベクトルから最小距離である中心推定値を有する前記k個のクラスタのうちのクラスタに割り当てることと、
各中心推定値を更新して、k個の更新されたクラスタ中心を取得することであって、クラスタの中心推定値が、前記クラスタに割り当てられた前記特徴ベクトルに少なくとも部分的に基づいて更新される、取得することと、を含む、[6]に記載の方法。
[9]
前記複数の特徴ベクトルの前記クラスタリングが、前記更新されたクラスタ中心が最終的なクラスタ中心に収束するまで、前記割り当てを繰り返し、前記更新を繰り返すことをさらに含む、[8]に記載の方法。
[10]
k=3であり、
前記コントローラ構成が、
前記複数のセンサの前記第1のサブセットを、前記手の前記第1の指に対応する前記第1のグループに割り当て、前記第1の指が、中指に対応し、
前記複数のセンサの前記第2のサブセットを、前記手の前記第2の指に対応する前記第2のグループに割り当て、前記第2の指が、薬指に対応し、
前記複数のセンサの第3のサブセットを、前記手の第3の指に対応する第3のグループに割り当て、前記第3の指が、小指に対応する、[8]に記載の方法。
[11]
k=4であり、
前記コントローラ構成が、
前記複数のセンサの前記第1のサブセットを、前記手の前記第1の指に対応する前記第1のグループに割り当て、前記第1の指が、中指に対応し、
前記複数のセンサの前記第2のサブセットを、前記手の前記第2の指に対応する前記第2のグループに割り当て、前記第2の指が、薬指に対応し、
前記複数のセンサの第3のサブセットを、前記手の第3の指に対応する第3のグループに割り当て、前記第3の指が、小指に対応し、
前記複数のセンサの第4のサブセットを、非指グループに対応する第4のグループに割り当てる、[8]に記載の方法。
[12]
前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つが、閾値数のセンサを満たさない複数のセンサを含むことを判定することと、
前記第1のサブセットまたは前記第2のサブセットのうちの前記少なくとも1つによって生成されたデータを、前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションに送信することを控えることをさらに含む、[5]に記載の方法。
[13]
前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つが、前記第1のサブセットまたは前記第2のサブセットのうちの前記少なくとも1つのいずれかの他のセンサに隣接していない非隣接センサを含むことを判定することと、
前記非隣接センサによって生成されたデータを、前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションに送信することを控えることと、をさらに含む、[5]に記載の方法。
[14]
前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションとともに利用される選択されたセンサとして、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つから所定数のセンサを選択することと、
前記選択されたセンサに含まれていない残りのセンサによって生成されたデータを前記アプリケーションに送信することを控えることと、をさらに含む、[5]に記載の方法。
[15]
システムであって、
ハンドヘルドコントローラであって、前記ハンドヘルドコントローラのハンドルの周りに広がる複数のセンサを含むタッチセンサアレイを有する、ハンドヘルドコントローラと、
論理回路であって、
前記複数のセンサによって生成されたデータを受信することと、
前記データに少なくとも部分的に基づいて、前記複数のセンサのうちのセンサ対の間の相関を示す共分散行列を生成することと、
前記共分散行列に少なくとも部分的に基づいて、複数の特徴ベクトルを決定することであって、各特徴ベクトルが、前記複数のセンサのうちのセンサに対応し、前記センサと前記複数のセンサのうちの1つ以上の他のセンサとの間の相関を記述する、決定することと、
クラスタリングアルゴリズムを使用して前記複数の特徴ベクトルをクラスタリングすることと、
前記クラスタリングに少なくとも部分的に基づいて、コントローラ構成に従って前記ハンドヘルドコントローラの前記タッチセンサアレイを構成することであって、前記コントローラ構成が、前記複数のセンサの少なくとも第1のサブセットを、手の第1の指に対応する第1のグループに割り当て、前記複数のセンサの第2のサブセットを、前記手の第2の指に対応する第2のグループに割り当てる、構成することと、を行うように構成された論理回路と、を含む、システム。
[16]
前記クラスタリングアルゴリズムが、
複数のk個のクラスタおよび
前記k個のクラスタの中心推定値を含む入力パラメータで初期化されるk平均クラスタリングアルゴリズムであり、
前記コントローラ構成が、前記複数のセンサのk個のサブセットをk個のグループに割り当て、前記k個のサブセットが、
前記手の前記第1の指に対応する前記第1のグループに割り当てられた前記複数のセンサの前記第1のサブセットであって、前記第1の指が、中指に対応する、前記第1のサブセットと、
前記手の前記第2の指に対応する前記第2のグループに割り当てられた前記複数のセンサの前記第2のサブセットであって、前記第2の指が、薬指に対応する、前記第2のサブセットと、
前記手の第3の指に対応する第3のグループに割り当てられた前記複数のセンサの第3のサブセットであって、前記第3の指が、小指に対応する、前記第3のサブセットと、を含む、[15]に記載のシステム。
[17]
前記k個のサブセットが、非指グループに対応する第4のグループに割り当てられた前記複数のセンサの第4のサブセットをさらに含む、[16]に記載のシステム。
[18]
前記データを受信することが、一定期間にわたって前記データを受信することを含み、
前記共分散行列を生成することが、
前記一定期間にわたって受信された前記データに少なくとも部分的に基づいて、統計を計算することと、
前記統計に少なくとも部分的に基づいて、前記センサ対の間の相関値を判定することと、
前記共分散行列に前記相関値を代入することと、を含む、[15]に記載のシステム。
[19]
前記相関値が、負の1から正の1までの範囲の値である、[18]に記載のシステム。
[20]
前記論理回路が、
前記タッチセンサアレイによって生成されたデータを入力として受信するように構成されたアプリケーションとともに利用される選択されたセンサとして、前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも1つから所定数のセンサを選択することと、
前記選択されたセンサに含まれていない残りのセンサによって生成されたデータを前記アプリケーションに送信することを控えることと、を行うようにさらに構成されている、[15]に記載のシステム。