(57)【要約】【課題】ユーザに意識させることなくキャリブレーションを実行できるコントローラ装置、その制御方法、及びプログラムを提供する。【解決手段】ユーザの手に装着され、複数のセンサを備えたコントローラ装置であって、当該センサのうち、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断し、当該判断の結果、上記予め定められた条件が満足されたセンサのキャリブレーションを実行する。【選択図】図１
2020181543.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの手に装着されるコントローラ装置であって、
複数のセンサを備え、
前記センサのそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する判断手段と、
前記判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーションを実行するキャリブレーション手段と、
を含むコントローラ装置。
【請求項２】
請求項１に記載のコントローラ装置であって、
前記判断手段が用いる条件は、他のセンサがユーザの指を検出しているとの条件を含むコントローラ装置。
【請求項３】
請求項１または２に記載のコントローラ装置であって、
コントローラ装置の移動を検出するモーションセンサをさらに備え、
前記判断手段が用いる条件は、コントローラ装置の前記モーションセンサが移動を検出していないとの条件を含むコントローラ装置。
【請求項４】
請求項１から３のいずれか一項に記載のコントローラ装置であって、
前記キャリブレーション手段は、予め定められたタイミングが到来した後、前記判断手段の判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーションを実行するコントローラ装置。
【請求項５】
請求項４に記載のコントローラ装置であって、
前記センサが検出した操作の内容を、当該コントローラ装置に接続された情報処理装置に対して送出する手段をさらに備え、
前記タイミングは、前記情報処理装置から指示されたタイミングであるコントローラ装置。
【請求項６】
請求項１から５のいずれか一項に記載のコントローラ装置であって、
前記複数のセンサのそれぞれの出力の履歴を記録する手段をさらに備え、
前記判断手段が用いる前記条件は、センサの出力の履歴に基づく条件であるコントローラ装置。
【請求項７】
ユーザの手に装着されるコントローラ装置であって、
複数のセンサと、
前記センサの出力信号を受けて、前記センサの出力信号に基づく情報を出力するプロセッサとを備え、
前記プロセッサが、前記センサのそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断し、当該判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーション処理を実行するコントローラ装置。
【請求項８】
請求項７に記載のコントローラ装置であって、
前記プロセッサが用いる条件は、他のセンサがユーザの指を検出しているとの条件を含むコントローラ装置。
【請求項９】
請求項７または８に記載のコントローラ装置であって、
コントローラ装置の移動を検出するモーションセンサをさらに備え、
前記プロセッサが用いる条件は、前記モーションセンサが移動を検出していないとの条件を含むコントローラ装置。
【請求項１０】
請求項７から９のいずれか一項に記載のコントローラ装置であって、
前記プロセッサは、予め定められたタイミングが到来した後、前記予め定められた条件が満足されるか否かの判断の結果、当該条件が満足されたセンサのキャリブレーションを実行するコントローラ装置。
【請求項１１】
ユーザの手に装着され、複数のセンサを備えたコントローラ装置の制御方法であって、
判断手段が、前記センサのそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する工程と、
キャリブレーション手段が、前記判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーションを実行する工程と、
を含むコントローラ装置の制御方法。
【請求項１２】
ユーザの手に装着され、複数のセンサを備えたコントローラ装置を、
前記センサのそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する判断手段と、
前記判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーションを実行するキャリブレーション手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
家庭用ゲーム機のコントローラ装置等、情報処理装置に接続され、情報処理装置を制御するための指示をユーザから受け入れるコントローラ装置には、ボタンやタッチセンサなど、ユーザの指の接触を検出可能なセンサが含まれている。
【０００３】
こうしたコントローラ装置におけるセンサの中には、環境によって検出値が変化するものが存在する。例えば指とセンサとの間の空間的な位置の変位に応じた検出値を出力する静電容量センサ等のセンサは、周辺の温度によって上記変位に対する検出値の大きさが変化してしまう。このため、適宜キャリブレーションを行う必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、キャリブレーションはユーザの指が確実に離れているときなどに行う必要があるので、ユーザに対してコントローラのボタン等から一度指を離すよう案内し、それからキャリブレーションを行う、といった処理が必要となっていた。このため、例えばゲームのプレイ中などアプリケーションの実行中に温度が上昇するなどしてセンサのキャリブレーションが必要な状況となっても、アプリケーションの実行中にキャリブレーションを行うのでは、ユーザの操作を妨げることとなり、望ましくない。
【０００５】
本発明は上記実情に鑑みて為されたもので、ユーザに意識させることなくキャリブレーションを実行できるコントローラ装置、その制御方法、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決する本発明は、ユーザの手に装着され、複数のセンサを備えたコントローラ装置であって、前記センサのそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する判断手段と、前記判断の結果、前記予め定められた条件が満足されたセンサのキャリブレーションを実行するキャリブレーション手段と、を含むこととしたものである。
【発明の効果】
【０００７】
本発明によると、ユーザに意識させることなくキャリブレーションを実行できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態に係るコントローラ装置の構成及びその接続例を表すブロック図である。
【図２】本発明の実施の形態に係るコントローラ装置が備えるセンサの検出値の例を表す説明図である。
【図３】本発明の実施の形態に係るコントローラ装置におけるセンサの配置例を表す説明図である。
【図４】本発明の実施の形態に係るコントローラ装置のハードウェア構成例を表すブロック図である。
【図５】本発明の実施の形態に係るコントローラ装置が保持する、条件を設定した管理テーブル情報の例を表す説明図である。
【図６】本発明の実施の形態に係るコントローラ装置の動作の例を表すフローチャート図である。
【発明を実施するための形態】
【０００９】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るコントローラ装置１は、図１に例示するように、コントローラ本体１０と、コントローラ本体１０をユーザの手に固定する固定具２０とを含んで構成され、有線または無線にて情報処理装置２との間で通信可能に接続される。本実施の形態の以下の説明において、各部の大きさやその比、配置等は一例であり、本実施の形態の例は、図示等した大きさや比率、配置に限られるものではない。
【００１０】
コントローラ装置１の固定具２０は、例えばコントローラ本体１０の長手方向に離れた二箇所に、両端のそれぞれが固定された環状のベルト部材であり、ユーザはこの固定具２０とコントローラ本体１０との間に人差し指から小指までの４本の指を通した状態で固定具２０のベルト部材を締めて（固定具２０とコントローラ本体１０との間の間隙を狭くして）、コントローラ本体１０が手の平に接した状態で、ユーザの手にコントローラ本体１０を装着する。このように固定具２０によりコントローラ装置１を手に装着することで、ユーザがコントローラ本体１０を把持した状態（指をコントローラ本体１０に巻き付けて保持した状態）から、指を伸ばした状態としても、コントローラ本体１０がユーザの手から離れて落ちてしまうことがなくなる。
【００１１】
コントローラ本体１０は、ユーザが固定具２０に通した指の少なくとも一部（ここでは人差し指から小指）で把持可能な把持部１１と、操作部１２とを含む。把持部１１は、実質的に多角形柱状をなし、操作部１２が、この把持部１１から連続して形成される。また、操作部１２には、正面側（ユーザがコントローラ装置１を自然に把持したとき、親指で操作可能な側）にボタン１４や、ジョイスティック１５、センサ部１６を含む。またこの操作部１２は、背面側（ユーザがコントローラ装置１を自然に把持したとき、人差し指から小指が位置する側）にも、揺動ボタン１７及びセンサ部１８を備えてもよい。またこのコントローラ装置１は、内部にプロセッサ１９を含んで構成されている。
【００１２】
ここでジョイスティック１５やセンサ部１６は、ユーザが固定具２０によりコントローラ装置１を手に装着して把持部１１を把持したとき、ユーザの親指が到達する位置に配される。つまりユーザは、操作部１２の揺動ボタン１７は人差し指で操作し、親指で正面側のジョイスティック１５またはセンサ部１６に触れるなどして操作する。
【００１３】
センサ部１６には、複数のセンサ１６０ａ，１６０ｂ…が含まれる。図１では、４つのセンサ１６０ａ，１６０ｂ，１６０ｃ，１６０ｄが設けられている例が示されている。ここで各センサ１６０（以下、各センサを区別する必要がない場合はセンサ１６０と総称する）は、静電容量センサ等であり、ユーザの指との間の相対的な、空間的変位に基づく検出値を表すセンサ信号を出力する（以下、本実施の形態のここでの説明で単にセンサというときには、このようなセンサを示すものとするが、センサとしてはこのようなセンサに限られず、温度を検出するセンサであってもよいし、直近の物体（ユーザの指を含む）までの距離を検出するセンサであってもよい。また、ここでのセンサは焦電センサであってもよいし、その他種々のセンサがここでのセンサに含まれ得る）。
【００１４】
ここでの例では、このセンサ信号が表す検出値は、例えばユーザの指が近接しているときには比較的大きい値となり、ユーザの指が接触すると予め定められた最大値となるものとする。また、このセンサ１６０は、配線の状況や温度の変化などの状況によって、ユーザの指との間の相対的な、空間的変位の大きさに対する上記検出値の大きさが変動する。
【００１５】
例えば図２に例示するように、センサ１６０の検出値は、ユーザの指が離れている（空間的に十分離れていて、理想的には検出値が十分低い状態であるべき）状態でも、周囲の温度に応じて、温度が上昇するほど検出値も大きい値となる。
【００１６】
また揺動ボタン１７を背面側に設ける場合、揺動ボタン１７は、上記のようにユーザが把持部１１を把持した状態でユーザの人差し指が到達する位置に配する。
【００１７】
さらに背面側に設けられるセンサ部１８は、例えばセンサ部１６のセンサ１６０と同様の静電容量センサなど、ユーザの指との間の相対的な、空間的変位の大きさに関する検出値を出力するセンサを複数含む。具体的に本実施の形態の例では、図３に例示するように、把持部１１の固定具２０に比較的近い側に、把持部１１の長手方向に沿って一般的な成人の手の幅の平均の長さを超える長さに亘って、複数の第１のセンサ２１を一列に配する。図３の例では、６つの第１のセンサ２１を一列に配した例としているが、この数に限られるものではない。
【００１８】
またコントローラ本体１０をユーザが握ったときに、ユーザの中指、薬指、小指の腹から先端までの範囲が当接するコントローラ本体１０上の位置には、ユーザの上記各指までの距離を検出する複数の第２のセンサ２２が離散的に（互いに検出範囲が重複することなく）配される。
【００１９】
図３の例では、複数の第２のセンサ２２が把持部１１の長手方向に２列、各列６個ずつ、６行×２列のマトリクス状に第２のセンサ２２を配している。もっとも本実施の形態は、このように６行×２列のマトリクス状に配列する例に限られず、複数の第２のセンサ２２がコントローラ本体１０の把持部１１をユーザが握ったときに、ユーザの各指の腹から先端までの範囲が当接し得るコントローラ本体１０上の範囲に配され、指との間の空間的な変位が検出できれば、配置の態様はどのようなものでも構わない。
【００２０】
なお図３の例では、第１のセンサ２１のそれぞれは、第２のセンサ２２の行方向にそれぞれ配されて、第１、第２のセンサ２１，２２で全体として６行×３列のマトリクス状（斜交格子状）に静電センサが配された状態となっている。
【００２１】
そして第１のセンサ２１は、ユーザが固定具２０により手を固定して把持部１１を把持しているときには必ずその指の付け根に相当する部分が接触する位置に配されるものとする。従って、ユーザがコントローラ装置１を利用するために固定具２０によりコントローラ装置１を装着している限り、これら複数の第１のセンサ２１のうちユーザの手幅に応じた範囲にある第１のセンサ２１は、指が接触した状態にあることを表す検出値を出力し続ける。
【００２２】
プロセッサ１９は、マイクロコンピュータ等のプログラム制御デバイスであり、プロセッサ１９が備えるメモリ等の記憶媒体に格納されたプログラムに従って動作する。このプログラムはコンピュータ可読かつ非一時的な記録媒体に格納されて提供され、このプロセッサ１９のメモリ等に格納されたものであってもよい。
【００２３】
本実施の形態のプロセッサ１９は、センサ部１６，１８に含まれるセンサ１６０，第１のセンサ２１，第２のセンサ２２のそれぞれについて、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する。この条件については、センサごとに異なっていてもよいものであるので、詳しくはこの判断の処理に関するプロセッサ１９の動作とともに後述する。
【００２４】
プロセッサ１９は、上記判断の結果、当該予め定められた条件が満足されたセンサ１６０、第１のセンサ２１または第２のセンサ２２のキャリブレーションを実行する。このキャリブレーションは、例えば次のように行われる。
【００２５】
すなわちプロセッサ１９は、例えばセンサ１６０ごとに、センサ１６０の検出値について図２に例示するように、指が触れていることを検出するしきい値Ｄ１と、指が十分離れているときに出力されるべき検出値のしきい値Ｄ２とを予め設定しておく。そしてプロセッサ１９は、センサ１６０の出力する信号が表す検出値Ｖに基づいて、当該センサ１６０とユーザの指との間の空間的な変位Ｓの値（どれだけ近づいているかを表す値）を、例えばＳ＝（Ｖ−Ｄ２）／（Ｄ１−Ｄ２）で表す。プロセッサ１９は、センサ１６０ごとにこの値Ｓを得て情報処理装置２へ送出する。情報処理装置２では、あるセンサ１６０についての値Ｓが「１」以上のときにはユーザの指が当該センサ１６０に接触しているとする。またあるセンサ１６０についての値Ｓが「０」以下であれば情報処理装置２はユーザの指は当該センサ１６０から離れていると判断する。そしてこの値Ｓが「０」と「１」との間である場合は、情報処理装置２は、当該値の大きさに応じてセンサ１６０とユーザの指との間の空間的な変位の大きさを判断する（値が大きいほどユーザの指が近接していると判断される）。
【００２６】
プロセッサ１９は、あるセンサ１６０についてキャリブレーションを実行するときには、当該センサ１６０に指が接触していないものとして、そのときの検出値をしきい値Ｄ２として定める。このようにすると、例えば図２の温度Ｔにおいて、あるセンサ１６０において、指が触れていないにも関わらずその検出値がＶまで上昇したとしても（この状態では情報処理装置２には当該センサ１６０には指が近接していると判断されることとなる）、この検出値Ｖをしきい値Ｄ２として再設定するので、センサ１６０とユーザの指との間の空間的な変位の大きさが補正されることとなる。
【００２７】
［判断の条件］
ここでプロセッサ１９における、センサ１６０等において、ユーザの指が接触していないことを表す条件として予め定められた条件が満足されるか否かを判断する処理について説明する。
【００２８】
この条件は例えば、次のように定められる。本実施の形態の一例では、一つの指で操作される（あるいはある一つの指が接触する）ことが想定されるセンサ１６０，第１のセンサ２１，第２のセンサ２２ごとにグループを形成しておく。
【００２９】
一例としてセンサ部１６に含まれるセンサ１６０は、正面側に設けられ、いずれも親指によって触れられる可能性があるが、その他の指が触れることは想定されない。そこで、これらセンサ部１６に含まれるセンサ１６０は一つのグループとして設定しておく。
【００３０】
またこのグループは動的に設定されてもよい。例えば第２のセンサ２２については、第１のセンサ２１のうちいくつのセンサが指の接触を検出しているかにより、どの第２のセンサ２２がユーザのどの指の接触を検出するかを決定し、当該決定の結果に基づいてグループを設定してもよい。
【００３１】
例えば図３の例において、第１のセンサ２１Ａ，２１Ｂ，２１Ｃ，２１Ｄがユーザの指の接触を検出し、第１のセンサ２１Ｅ，２１Ｆがユーザの指の接触を検出していない状態では、比較的手の小さいユーザがこのコントローラ装置１を用いているものと判断できる。この場合、ユーザの人差し指は揺動ボタン１７を操作するものとしているので、第２のセンサ２２Ａ，２２Ｇが、ユーザの中指が接触し得る範囲にあると判断する。また第２のセンサ２２Ｃ，２２Ｉは、ユーザの薬指が接触し得る範囲にあると判断する。そして第２のセンサ２２Ｄ，２２Ｊは、ユーザの小指が接触し得る範囲にあると判断する。そこでこの場合は第２のセンサ２２Ａ，２２Ｇを一つのグループＧ１とし、第２のセンサ２２Ｃ，２２Ｉをもう一つのグループＧ２とし、第２のセンサ２２Ｄ，２２Ｊをさらに別のグループＧ３として設定する。
【００３２】
プロセッサ１９は、あるセンサについて当該センサにユーザの指が接触していないことを表す条件として、当該センサがグループに属するものとして設定されていれば、当該センサと同じグループに属するセンサにユーザの指が接しているとの条件を用いる。
【００３３】
例えば、プロセッサ１９は、図１に例示したＡ，Ｂ，Ｃ，Ｄのようにセンサ１６０が配置されているとき、いずれかのセンサ１６０にユーザの指が接していれば、センサ部１６内の他のセンサ１６０にはユーザの指が接触していないと判断する。例えばセンサ１６０ａにユーザの指が接していれば、プロセッサ１９は、センサ部１６内の他のセンサ１６０ｂ，１６０ｃ，１６０ｄにはユーザの指が接触していないと判断する。そしてこのときにプロセッサ１９は、当該ユーザの指が接触していないことを表す条件として予め定められた条件が満足されたセンサ１６０、つまり、センサ１６０ｂ，１６０ｃ，１６０ｄについてキャリブレーションを行う。
【００３４】
もっとも、同じグループに属している他のセンサにユーザの指が触れていたとしても、キャリブレーションを行うことが妥当でない場合もある。例えば、第２のセンサ２２Ｇに中指が触れている場合は、第２のセンサ２２Ａにも（指の腹部分が）触れることとなるので、第２のセンサ２２Ａ，２２Ｇが同じグループに属していて、第２のセンサ２２Ｇにユーザの指が接触している場合でも第２のセンサ２２Ａについてキャリブレーションを行うべきではない。
【００３５】
またセンサ１６０においても、その配置によっては上記条件が適切でない場合がある。例えば図１のＣの位置にあるセンサ１６０ｃにユーザの指が接触している場合、Ｄの位置にあるセンサ１６０ｄにもユーザの指（の腹）が接触ないし近接する可能性がある。従って、センサ１６０ｃ，１６０ｄが同じグループに属しており、センサ１６０ｃにユーザの指が接触している場合でもセンサ１６０ｄについてキャリブレーションを行うべきではない。
【００３６】
そこで本実施の形態では、次のようにセンサごとに、どのセンサにユーザの指が接触しているときに、自己にユーザの指が接触していないと判断するべきかの条件を設定してもよい。具体的にはプロセッサ１９は、予め図５に例示するような管理テーブル情報としてこの条件の設定を受け入れて記憶しておく。
【００３７】
図５の例では、図１のＡの位置に配されたセンサ１６０ａについては、Ｂ，Ｃ，Ｄの位置にあるセンサ１６０ｂ，１６０ｃ，１６０ｄのいずれかを条件に係るセンサとして、当該条件に係るセンサとして列挙された情報で特定されるセンサのいずれかにユーザの指が接触しているときに、自己にユーザの指が接触していないと判断する旨の設定が行われている。
【００３８】
また図１のＢの位置に配されたセンサ１６０ｂについては、Ｃ，Ｄの位置にあるセンサ１６０ｃ，１６０ｄのいずれかを条件に係るセンサとして、当該条件に係るセンサとして列挙された情報で特定されるセンサのいずれかにユーザの指が接触しているときに、自己にユーザの指が接触していないと判断する旨の設定が行われている。
【００３９】
この場合、プロセッサ１９は、各センサを順次判断の対象として選択し、選択した判断の対象となったセンサを特定する情報に関連付けて、この管理テーブル情報に設定されている条件に係るセンサを特定する情報の一覧を取得する。そしてプロセッサ１９は、当該取得したセンサを特定する情報の一覧に含まれる情報で表されるセンサのいずれかにユーザの指が接触しているときに、判断の対象として選択しているセンサにはユーザの指が接触していないと判断して、当該判断の対象として選択しているセンサのキャリブレーションを実行する。
【００４０】
すなわち、本実施の形態のコントローラ装置１は、図４に例示するように、コントローラ装置１の正面側に配されたセンサ１６０ａ，ｂ…と、背面側（コントローラ装置１をユーザが把持したときにユーザの人差し指、中指、薬指、小指が接触する側）に配された複数の第１のセンサ２１及び第２のセンサ２２と、プロセッサ１９と、外部インタフェース３１とを含んで構成される。このプロセッサ１９は、内部に記憶部１９ｍを備える。また外部インタフェース３１は情報処理装置２に接続されている。
【００４１】
プロセッサ１９は、記憶部１９ｍに格納されているプログラムを実行しており、このプログラムを実行することで、所定のタイミング（例えば予め定めた時間ごとのタイミング）で、上記センサ１６０，２１，２２のうち少なくとも一部のセンサの各々（例えばセンサ１６０のそれぞれ）についてキャリブレーションを実行するか否かを判断する。
【００４２】
プロセッサ１９は、上記プログラムを実行して、各センサが出力する検出値（出力信号が表す値）を参照して、各センサについて、ユーザの指が十分離れた位置にある（しきい値Ｄ２を下回っている）か、ユーザの指が接触している（しきい値Ｄ１を上回っている）か、ユーザの指が近接した位置にある（しきい値Ｄ２とＤ１との間にある）かを表す情報等を、外部インタフェース３１を介して情報処理装置２へ出力している。
【００４３】
またこのプロセッサ１９は、上記プログラムを実行することにより、次の処理を行う。すなわちプロセッサ１９は、予めキャリブレーションを実行する対象として設定されているセンサを順次選択し、選択したセンサを特定する情報に関連付けて予め、条件に係るセンサとして設定されているセンサを特定する情報の一覧を取得する。
【００４４】
プロセッサ１９は、ここで取得した一覧に含まれる各センサ（条件に係るセンサ）について、当該条件に係るセンサが出力する検出値が、予め指が接触している状態を表す値として設定されたしきい値を超えているか否かを調べる。
【００４５】
プロセッサ１９は、ここで当該調べた検出値が、指が接触している状態を表す値として設定されたしきい値を超えているならば選択したセンサについてキャリブレーションの処理を実行し、選択したセンサが出力している検出値を、ユーザの指が接触していない状態を表す値として記憶する。
【００４６】
一方、プロセッサ１９は、取得した一覧に含まれるセンサ（条件に係るセンサ）の出力する検出値のいずれも、指が接触している状態を表す値として設定されたしきい値を超えていなければ、選択したセンサについてのキャリブレーションの処理を行わないよう制御する。
【００４７】
なお、ここではプロセッサ１９が実行するプログラムや、プロセッサ１９が処理の過程で用いる設定情報等は、プロセッサ１９が備える記憶部１９ｍ内に格納されているものとしたが、本実施の形態はこの例に限られず、これらはプロセッサ１９に接続された、プロセッサ１９外部に設けられるメモリデバイス等に格納されていてもよい。
【００４８】
［動作］
本発明の実施の形態の一例に係るコントローラ装置１は以上の構成を備えており、次のように動作する。なお、以下の説明では、センサごとにユーザの指が接触していないことを表す条件が設定されているものとする。具体的には、プロセッサ１９は図５に例示した管理テーブル情報を記憶しているものとする。
【００４９】
ユーザがコントローラ装置１の固定具２０に人差し指から小指までの各指を通し、把持部１１を把持して、親指を正面側の操作部１２を操作可能な位置に配し、人差し指を揺動ボタン１７上に置いた状態として、情報処理装置２を制御し、例えばゲームアプリケーションの操作を開始する。
【００５０】
その後、コントローラ装置１の温度が上昇してくると、例えばセンサ１６０の検出値が、ユーザの指が触れていない状態でも上昇する。プロセッサ１９は、所定のタイミング（例えば予め定めた時間ごとのタイミング）で、コントローラ装置１が備えるセンサ１６０、第１のセンサ２１、第２のセンサ２２の少なくとも一部についてキャリブレーションを実行するか否かを判断する。ここでキャリブレーションを実行するか否かを判断する対象となるセンサは、記憶している管理テーブル情報を参照して、当該管理テーブル情報において判断の対象として設定されているセンサとしてもよい。
【００５１】
プロセッサ１９は、図６に例示する処理を開始し、管理テーブル情報において判断の対象として設定されているセンサを順次選択して（Ｓ１）、選択したセンサを特定する情報に関連付けて管理テーブル情報に、条件に係るセンサとして記録されているセンサを特定する情報の一覧を取得する（Ｓ２）。なお、以下の例では、処理Ｓ１で選択されるセンサはセンサ部１６に含まれるセンサ１６０のいずれかであるとする。
【００５２】
プロセッサ１９は、処理Ｓ２で取得した一覧に含まれる各センサ（センサ１６０のいずれか）について、当該センサ１６０がユーザの指に接触しているか否か（当該センサ１６０が出力する検出値が、予め指が接触している状態を表す値として設定されたしきい値Ｄ１を超えているか否か）を調べる（Ｓ３）。
【００５３】
ここで処理Ｓ２で取得した一覧に含まれるセンサ１６０のいずれかが出力する検出値が、指が接触している状態を表す値として設定されたしきい値Ｄ１を超えているならば（Ｓ３：Ｙｅｓ）、プロセッサ１９は、処理Ｓ１で選択したセンサ１６０についてキャリブレーションの処理を実行する（Ｓ４）。
【００５４】
そしてプロセッサ１９は、判断の対象として設定されているセンサのうちに、今回の処理で未選択のセンサがあれば、処理Ｓ１に戻って処理を続ける（Ｓ５）。
【００５５】
またプロセッサ１９は、処理Ｓ３において、処理Ｓ２で取得した一覧に含まれるセンサ１６０の出力する検出値のいずれも、指が接触している状態を表す値として設定されたしきい値Ｄ１を超えていなければ（Ｓ３：Ｎｏ）、処理Ｓ５へ移行して判断の対象として設定されているセンサのうちに、今回の処理で未選択のセンサがあれるか否かを調べ、未選択のものがあれば、処理Ｓ１に戻って処理を続ける。また処理Ｓ５において、今回の処理で未選択のセンサがなくなれば、処理を終了する。
【００５６】
この処理によれば、キャリブレーションを行うか否かを判断するタイミングにおいて、ユーザがコントローラ装置１のセンサ１６０のうち、図１のＡの位置にあるセンサ１６０ａに親指を接触させる操作を行っていると、センサ１６０ｃ，１６０ｄについて上記処理を行っているときに、対応する条件に係るセンサとして列挙されているセンサ１６０ａにユーザの指が接触した状態となっていると判断され、センサ１６０ｃ，１６０ｄについてキャリブレーションが行われる。
【００５７】
その後、再びキャリブレーションを行うか否かを判断するタイミングとなったとき、ユーザが図１のＣの位置にあるセンサ１６０ｃに指を接触させて操作をしていると、このときには、センサ１６０ａ，１６０ｂについて上記処理を行っているときに、対応する条件に係るセンサとして列挙されているセンサ１６０ｃにユーザの指が接触した状態となっていると判断され、センサ１６０ａ，１６０ｂについてキャリブレーションが行われる。
【００５８】
本実施の形態のこの例では、上記キャリブレーションの際に、情報処理装置２がユーザに対して、センサ１６０から指を離すように求める案内を行うなどの処理を行う必要がなく、ユーザに意識させることなくキャリブレーションが実行される。
【００５９】
［判断の条件の別の例］
ここまでの説明では、センサごとに定められた、当該センサに指が接触していないことを表す条件は、当該センサとは異なる他のセンサ（またはそのうち列挙されたセンサ）に指が接触していることとしていたが、当該センサに指が接触していないことを表す条件は、これだけに限られない。
【００６０】
例えば、同じく親指で操作され得るジョイスティック１５や、ボタン１４をユーザが操作しているときにも、センサ１６０には指が接触していないと判断できる。そこで、プロセッサ１９は、上記処理Ｓ５に移行する際に、ジョイスティック１５が傾倒操作されている（傾けられている）か、あるいはボタン１４が押下されているかを判断し、ジョイスティック１５が傾倒操作されているかボタン１４が押下されていると判断されるときには、センサ部１６に含まれる全てのセンサ１６０についてキャリブレーションの処理を行うこととしてもよい。
【００６１】
［モーションセンサを用いる例］
また、ユーザがコントローラ装置１を把持していない状態であれば、プロセッサ１９はすべてのセンサ（センサ１６０，第１のセンサ２１、第２のセンサ２２のすべて）についてのキャリブレーションを実行してもよい。
【００６２】
ここでユーザがコントローラ装置１を把持しているか否かは、例えば次のようにして判断できる。この例では、コントローラ装置１は、その内部にモーションセンサとして加速度センサ２５を備えるものとする（図１に破線にて示す）。
【００６３】
この加速度センサ２５は、コントローラ装置１が動かされたときに、当該動きの方向の加速度を、ＸＹＺ直交座標の各軸（Ｘ，Ｙ，Ｚの各軸）ごとに検出する（これらの各軸は加速度センサ２５の配置方向によるが、例えばコントローラ装置１の把持部１１の長手方向をＺ軸、正面から背面に向かう軸をＹ軸、Ｚ，Ｙの双方の軸に直交する軸をＸ軸とする）。プロセッサ１９は、この加速度センサ２５の検出結果を参照し、いずれの軸方向の加速度も「０」である（コントローラ装置１がユーザの手に把持されずに机などに置かれている状態であり、コントローラ装置１が移動を検出していないとの条件を満足している）ときに、各センサの出力を調べる。
【００６４】
そしてプロセッサ１９は、この状態（加速度センサ２５による各軸の加速度の検出結果が「０」である状態）で、センサ１６０、第１のセンサ２１、第２のセンサ２２のうちに、その検出値が、ユーザの指が接触していないと判断するためのしきい値Ｄ２を上回っているものがあるか否かを調べる（ここでしきい値Ｄ２は、検出値が当該しきい値を下回るときにユーザの指が接触していないと判断するためのしきい値）。
【００６５】
プロセッサ１９は、ここで、上記しきい値Ｄ２を下回る検出値を出力するセンサ１６０、第１のセンサ２１、第２のセンサ２２があれば、当該センサについてキャリブレーションの処理を実行する。
【００６６】
［情報処理装置からの指示］
さらにプロセッサ１９は、情報処理装置２からの指示によりキャリブレーションのタイミングの指示を受けてもよい。この例では、情報処理装置２は、コントローラ装置１に対してキャリブレーションを行うべきセンサを特定する情報とともに、当該情報で特定されたセンサをキャリブレーションするよう指示する。
【００６７】
プロセッサ１９は、この指示を受け入れると、当該指示に含まれる情報で特定されるセンサのキャリブレーションを実行する。
【００６８】
［キャリブレーションのタイミング］
またキャリブレーションを行うか否かを判断するタイミングについて、上述の例では定期的なタイミングごととしたが、本実施の形態はこれに限られない。例えば、プロセッサ１９は温度センサＴｓを備えて、この温度センサＴｓにより測定される温度が予め定めた温度を超えたとき、及び超えている間は定期的なタイミングごとに、キャリブレーションを行うか否かを判断するため、図６に例示した処理を実行してもよい。
【００６９】
さらにキャリブレーションを行うか否かを判断するタイミングは、情報処理装置２から指示されたタイミングとしてもよい。
【００７０】
［検出値の履歴を参照する例］
また、センサに指が接触していないことを表す条件には、当該センサの出力の履歴に基づく条件が含まれてもよい。
【００７１】
この例では、プロセッサ１９は各センサ（センサ１６０、第１のセンサ２１、第２のセンサ２２のうち予め定めたセンサの各々）の検出値を予め定めたインターバル時間ごとに取得して記録する。このときプロセッサ１９は、過去所定回数（例えば５回）分の検出値を記録することとしてもよい。以下の説明では記憶している検出値のうち最も過去に記録した検出値をＶ0＝Ｖ（Ｔ0）とし、以下、記録した時刻が早い順に記録している検出値をＶ1＝Ｖ（Ｔ0＋ΔＴ），Ｖ2＝Ｖ（Ｔ0＋２ΔＴ）…，Ｖn＝Ｖ（Ｔ0＋ｎΔＴ）とする（ここでｎは自然数）。
【００７２】
プロセッサ１９は、キャリブレーションを行うか否かを判断するタイミングで、センサごとに、記録している検出値の差分Ｖi+1−Ｖiを求める。ここで差分は、センサごとにｎ−１個ずつ得られる。そしてプロセッサ１９は得られた差分がすべて予め定めたしきい値を下回るセンサがあるか否かを判断する。ここで差分がすべて当該しきい値を下回るセンサがあれば、プロセッサ１９は当該センサについてキャリブレーションを実行する。
【００７３】
この条件は、ユーザが指を接触させた場合、通常ならばセンサの検出値が急激に上昇するのに対し、温度等、環境的な原因で検出値が上昇する場合は検出値の上昇がゆるやかな（差分が比較的小さい）ことに基づくものである。
【００７４】
［実施形態の効果］
また本実施の形態のコントローラ装置１は、ここまでに示した条件を組み合わせて用い、センサごとにキャリブレーションを行うか否かを判断する、つまりキャリブレーションを実行するセンサを選択してもよい。
【００７５】
本実施の形態によると、ユーザに対して特定の操作を求めることなく、ユーザがゲームアプリケーションなどの操作を行っている間に、ユーザに意識させることなく、センサのキャリブレーションを実行できる。
【符号の説明】
【００７６】
１  コントローラ装置、２  情報処理装置、１０  コントローラ本体、１１  把持部、１２  操作部、１４  ボタン、１５  ジョイスティック、１６，１８  センサ部、１７  揺動ボタン、１９  プロセッサ、２０  固定具、２１  第１のセンサ、２２  第２のセンサ、２５  加速度センサ、１６０  センサ。
【図１】
2020181543.tif 000003
【図２】
2020181543.tif 000004
【図３】
2020181543.tif 000005
【図４】
2020181543.tif 000006
【図５】
2020181543.tif 000007
【図６】
2020181543.tif 000008
【手続補正書】
【提出日】令和2年4月23日(2020.4.23)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2020181543.tif 000009