以下、本発明の実施の形態について、図面を参照して詳細に説明する。
図1は、本発明の一実施の形態に係る個人認証装置100を用いるゲームコントローラ10の要部構成図であり、図2は同個人認証装置100を示す機能ブロック図である。
図1に示すゲームコントローラ10は、家庭用テレビジョン受像機等のディスプレイ23(図2参照)に接続コードを介して接続されるゲーム装置本体20(図2参照)とともにゲーム装置を構成する。
ゲームコントローラ10は、主に、ディスプレイ23に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作扞として機能し、ゲーム装置本体20に操作情報を与える。ゲームコントローラ10には、図示しないが、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられている。
なお、図2に示すゲーム装置本体20は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)及びDSP(Digital Signal Processor)などの各種マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、ICメモリなどが実装されたメイン制御部22(図2参照)と、図示しない光学ディスクやメモリカード等の情報記憶媒体を読み取る読み取り部等とを有する。
ゲーム装置本体20では、メイン制御部22が、情報記憶媒体からゲームプログラム及び各種設定データを読み出し実行することによって、その結果をゲーム画像としてディスプレイ23に表示する。
また、ゲーム装置本体20とゲームコントローラ10とは無線通信によって接続されており、ゲーム装置本体20は、通信部21を介して、ゲームコントローラ10から送信される操作情報、認証情報などを含む送信情報を受信する。
ゲーム装置本体20のメイン制御部22は、ゲームコントローラ10から送信される操作情報に基づいて、各種のゲーム演算を実行し、ゲーム画像等の画像を生成してディスプレイ23に表示する。また、メイン制御部22は、ゲームコントローラ10から送信される認証情報に基づいて、プログラムデータを実行して、認証情報の画像を生成してディスプレイ23に表示する。ゲーム装置本体20とゲームコントローラ10とは、互いの通信部21、151を介して、ここでは、Bluetooth(登録商標)を用いてデータの送受信を行っているが、これに限らない。ゲーム装置本体20とゲームコントローラ10とが、UWB(Ultra Wide Band:超広帯域無線)或いは無線LAN等の近距離無線を介してデータの送受信を行うようにしてもよい。
ゲームコントローラ10の筐体110内部には、筐体110を振動させる振動モータ120と、振動モータ120を駆動させる駆動回路部130と、通信部151を有するコントローラ制御部150と、振動検出部170とが配設されている。
個人認証装置100は、ゲームコントローラ10の筐体110内に配置された振動モータ120と、駆動回路部130と、コントローラ制御部150と、振動制御部252と、記憶部253と、振動検出部170(3軸加速度センサ140及び3軸角速度センサ180)と、抽出部156と、判定部254と、データ加工部255とを備える。なお、本実施の形態に係る個人認証装置100では、振動制御部252、記憶部253、判定部254及びデータ加工部255は、ゲーム装置本体20のメイン制御部22に設けられる構成としたがこれに限らず、ゲームコントローラ10自体に設けた構成としてもよい。
ゲームコントローラ10の筐体110は、角部が面取りされた矩形断面を有する棒状体に形成されている。筐体110は、長手方向の一端側の部分(後方部分という)で使用者に握られることによって利用される。
図3は使用者によって握られたゲームコントローラ10を示す図である。なお、図3では、ゲームコントローラ10の筐体110において、使用者に握られる後方部分は、握持部111と称して図示する。
図3に示すようにゲームコントローラ10のX軸、Y軸を水平にした状態において、個人認証装置100(図2参照)は、振動モータ120を駆動して、振動検出部170を介して得た測定データを用いて使用者の個人認証を行う。この個人認証は、使用者に、ゲームコントローラ10の筐体110を意識的に移動させることなく行うことができる。なお、この個人認証についての詳細は後述する。
ゲームコントローラ10の筐体110では、後方部分に位置する握持部111の内方に、基板160が配設されている。この基板160に、駆動回路部130、3軸加速度センサ140及びコントローラ制御部150が実装されている。また、振動モータ120は、筐体110内において、握持部111から離間する他端側の部分(前方部分という)に配設されている。
振動モータ120は、回転軸を筐体110の長手方向に沿うように配置されており、この回転軸に偏心させた分銅が取り付けられている。ここでは、振動モータ120は、筐体110内に、回転軸を筐体110の長手方向と平行に、言い換えれば、Y軸方向と平行にして配置されている。振動モータ120は、図1に示すように、駆動回路部130によって、図示しない回転軸が矢印A方向(又は矢印Aと逆方向)に回転して、筐体110に振動を発生させる。
駆動回路部130は、通信部151を介して入力される振動制御部252からの振動制御信号に応じた駆動電圧を振動モータ120に印加して電流を供給する。
ここでは、駆動回路部130は、入力される振動制御信号に基づいて、所定時間(2〜3秒)間に、レベルの異なる複数の電圧を振動モータ120に印加して、振動モータ120に、一定速度で連続的に変化する周波数の振動を発生させる。
振動検出部170は、n次元方向の複数の振動として、ここでは、3軸(X軸、Y軸、Z軸)の加速度及び3軸の角速度を検出するものであり、3軸加速度センサ140と、3軸角速度センサ180とを有する。
3軸加速度センサ140は、n次元方向の複数の振動を検出する多軸センサの一例であり、ここでは、3次元方向の複数の加速度を検出することによって、筐体110の姿勢、動作を検出可能である。なお、以下では、3軸加速度センサ140により検出される振動を、加速度データとも称して説明する。
詳細には、3軸加速度センサ140は、筐体110の長手方向における他端側の方向(前方向)をY軸のプラス方向、正面からみて上方向をZ軸のプラス方向、正面からみて図1中の紙面手前方向をX軸のプラス方向とする直交3軸方向の各加速度を検出する。なお、3軸加速度センサ140で検出して出力されるX軸、Y軸、Z軸の各軸に応じた加速度(加速度センサ出力)を、以下では、AccX,AccY,AccZと称する。また、3軸加速度センサ140は、検出した加速度に比例した電圧等の検出信号を軸毎にコントローラ制御部150の通信部151を介してゲーム装置本体20の通信部21に出力する。
3軸加速度センサ140は、使用者が筐体110の握持部111を握持した状態で振動モータ120が、連続的して変化する複数の振動周波数を発生する際に、筐体110に発生する振動を、軸毎に検出してコントローラ制御部150に出力する。なお、3軸加速度センサ140は、振動モータ120の駆動によって振動する筐体110の振動の変化を大きく検出したいため、振動モータ120からできるだけ離れた位置に配置されることが望ましい。
3軸角速度センサ(ジャイロスコープ)180は、n次元方向の複数の振動を検出する多軸センサの一例である。ここでは、3軸角速度センサ(ジャイロスコープ)180は、X軸、Y軸、Z軸の3軸を中心に回転する際の回転角速度(「軸の角速度」とも称する)を検出することによって、筐体110の姿勢、動作を検出する。すなわち、3軸角速度センサ180は、使用者が筐体110の握持部111を握持した状態で、振動モータ120が、連続して変化する複数の振動周波数を発生する際に、X軸、Y軸、Z軸を中心に捻る動作を検出する。この検出された角速度は、コントローラ制御部150に出力される。なお、3軸角速度センサ180で検出して出力されるX軸、Y軸、Z軸に対応する角速度(角速度センサ出力)を、以下では、RotX,RotY,RotZと称する。
このように3軸加速度センサ140及び3軸角速度センサ180を有する振動検出部170は、使用者により握られた筐体110内の駆動モータ120の駆動に伴い、X軸、Y軸、Z軸の各方向の加速度と、X軸、Y軸、Z軸の各角速度とを検出する。
コントローラ制御部150は、例えばIIC(Inter-Integrated Circuit)バス等を用いたローカルバス回路によって互いに接続された各種入力デバイス及び出力デバイス間の入出力を制御する。
コントローラ制御部150は、CPUやローカルバス回路におけるデータ通信を制御するバスコントローラICなどの各種マイクロチップやICメモリなどの電子部品と、ゲーム装置本体20の通信部21と無線通信を実現する通信部151である近距離通信モジュールなどを実装する。コントローラ制御部150は、ローカルバス回路を介して各種入力デバイスから送信された信号に基づいて操作入力信号を生成し、生成した操作入力信号を、通信部151を介してゲーム装置本体20へ送信する。
具体的には、コントローラ制御部150は、振動モータ120の振動周波数毎に3軸加速度センサ140及び3軸角速度センサ180により検出された3軸加速度データ及び3軸角速度データを使用者の測定データとしてゲーム装置本体20に出力する。また、コントローラ制御部150は、通信部151を介してゲーム装置本体20から送信された信号を受信し、この受信信号に対応づけられている出力デバイスへ制御信号を生成・送出する。
なお、以下では、コントローラ制御部150において入力される信号に対応して出力される信号の生成・送出処理の説明は省略する。また、コントローラ制御部150は、通信部21、151を介して入力される振動制御部252からの振動制御信号を駆動回路部130に出力する。また、コントローラ制御部150は、3軸加速度センサ140及び3軸角速度センサ180から入力される測定データを、通信部151、21を介してメイン制御部22の抽出部156に出力する。
振動制御部252は、振動モータ120の駆動を制御して、使用者が筐体110を握持した状態で、駆動回路部130を介して振動モータ120の回転数を所定の周波数領域でスイープする。言い換えれば、振動制御部252は、振動モータ120に異なる振動周波数を所定の周波数領域内で順に発生させる。例えば、振動制御部252は、振動モータ120に供給する電圧の大きさを段階的に切り換えることにより振動モータ120への供給電圧を一定の割合で徐々に大きく変化する。
ここでは、振動制御部252は、振動モータ120の回転数を周波数0Hz〜200Hzまでの範囲内において、10Hz刻みで順に連続的に変化するように、駆動回路部130に振動制御信号を出力している。なお、振動制御信号は、振動制御部252によって、記憶部253に記憶された連続的に増加する駆動電圧値を順次読み出して生成され、通信部21、151を介して駆動回路部130に送出される。
これにより、20個の異なる周波数毎に、3軸に関して6種類の測定データを取得でき、一つの個人データを120個(20×6)の要素により構成できる。このように本実施の形態の個人認証装置100では、振動周波数毎に3軸加速度センサ140及び3軸加速度センサ180を用いて短時間で多くの情報を検出できる。なお、振動検出の対象となる振動モータ120の振動周波数帯域は、0〜200Hzの範囲で10Hz毎に増加させた20の帯域としたが、3軸の加速度に加えて3軸の角速度を検出するものあれば、いくつの帯域でも構わない。
また、振動モータ120に、異なる振動周波数(具体的には、連続的に変換する振動周波数)を発生させる上記駆動電圧値の範囲を、振動モータ120を駆動させた際に、筐体110を握持する使用者の手の周波数に近い周波数又は一致する周波数が発生しやすい駆動電圧を含むように設定することが望ましい。振動モータ120の振動周波数と使用者の手の周波数が合う場合、筐体110の振幅が大きくなって、3軸加速度センサ140によって検出される加速度が大きくなると予想されるからである。検出される加速度が大きくなると個人に著しい差が生じることになり、個人の特徴として捉えやすくなる。
ここでは、振動制御部252が駆動回路部130を介して振動モータ120に発生させる周波数は、複数の使用者を対象として、筐体110を握った状態で、使用者の手の周波数と最も共振しやすい振動周波数の統計の結果として、0〜200Hzに設定している。
抽出部156は、3軸加速度センサ140及び3軸角速度センサ180により検出された測定データ(角速度データ、角速度データ)から、各測定データを示す周波数成分を抽出する。
具体的には、抽出部156は、段階的に変化する振動モータ120の振動周波数毎に、3軸加速度センサ140及び3軸角速度センサ180により検出されたデータに対してFFT(Fast Fourier Transform)によるスペクトラム解析を行う。これにより、抽出部156は、段階的に変化する振動モータ120の振動周波数毎に、検出された各データから周波数成分(ここでは6種類)を抽出する。抽出した周波数成分は、記憶部253に、加工前の個人データ(加工前個人データ)の要素として格納される。また、これら抽出した周波数成分は、記憶部253に格納されるとともにデータ加工部255に出力されてもよい。
記憶部253は、振動モータ120に供給される駆動電圧値を記憶している。また、記憶部253は、3軸加速度センサ140及び3軸角速度センサ180で検出した複数の測定データ(「周波数成分」に相当)と、これら測定データを加工した後で正規化してなる個人データとを、使用者毎に対応付けて記憶する。
図4は、記憶部253に記憶される使用者の正規化した測定データである個人データを示すレーダーチャートである。
個人データは、記憶部253において、使用者毎に対応付けられて格納された個人データであり、使用者が筐体110を握った状態(図3参照)で発生する振動モータ120(図2参照)の異なる振動周波数毎に得た複数の測定データを用いて構成される。
図4に示す個人データP1は、振動モータ120における複数の振動周波数(回転数)毎のX軸、Y軸、Z軸の各方向の加速度データ及びX軸、Y軸、Z軸回りの回転動の角速度データから周波数成分を抽出した後で正規化したレーダーチャートとしている。
個人データP1は、振動モータ120(図2参照)を駆動して、周波数0Hz〜200Hzの範囲で10Hz毎に振動周波数を発生させて得た複数の測定データ(AccX、AccY、AccZ、RotX、RotY、RotZ)を用いて形成されている。
具体的に、個人データP1を構成するAccX10、AccY10、AccZ10は、振動モータ120の回転数が10Hzの際に3軸加速度センサ140においてX軸、Y軸、Z軸でそれぞれ検出された測定データを示す。
また、AccX20、AccY20、AccZ20は、振動モータ120の回転数が20Hzの際に3軸加速度センサ140においてX軸、Y軸、Z軸でそれぞれ検出されたデータを示している。
同様に、AccX30、40、…AccX200、AccY30、40、…AccY200、AccZ30、40、…AccZ200は、振動モータ120の回転数を30Hz〜200Hzまでの範囲で10Hzずつ変化させたときに3軸加速度センサ140においてX軸、Y軸、Z軸でそれぞれ検出されたデータ(加速度データ)を示している。なお、図4において、AccZ200はAccY0と、AccY200はAccX0と、AccX200はRotZ0と、重なる位置で示している。
また、図4において、RotX10、RotY10、RotZ10は、振動モータ120の回転数が10Hzの際に、3軸角速度センサ180においてRotX軸、RotY軸、RotZ軸でそれぞれ検出されたデータを示す。さらに、図4において、RotX20、RotY20、RotZ20は、振動モータ120の回転数が20Hzの際に、3軸角速度センサ180においてRotX軸、RotY軸、RotZ軸でそれぞれ検出されたデータを示している。
同様に、RotX30、40、…RotX200、RotY30、40、…RotY200、RotZ30、40、…RotZ200は、振動モータ120の回転数を30Hz〜200Hzまでの範囲で10Hzずつ変化させたとき(30Hz、40Hz、…200Hz)に3軸加速度センサ140においてRotX軸、RotY軸、RotZ軸でそれぞれ検出されたデータ(加速度データ)を示している。なお、図4において、RotZ200はRotY0と、RotY200はRotX0と、RotX200はAccZ0と、重なる位置で示している。
個人データを生成するための各周波数成分の加工(重み付け)及び正規化は、データ加工部255によって行われ、記憶部252に格納される。
この個人データP1は、3軸加速度センサ140及び3軸角速度センサ180において得られた各軸に関する測定データ(加速度データ及び角速度データ)から抽出された周波数成分に対し、加工処理を行うことによって生成されている。
詳細には、個人データP1は、振動モータ120において連続して変化しながら発生する複数の振動周波数毎にX、Y、Zの各軸対応で検出した各軸方向の加速度及び各軸回りの角速度を示す周波数成分をそれぞれ重み付けした後で正規化されることにより生成されている。これにより、重み付けされた各軸の周波数成分により構成される個人データは、いずれも個人データとしての特徴が顕れるようになっている。
図5は、図4に示す個人データにおいて重み付けされる前の個人データP2を示すレーダーチャートである。図5に示す周波数成分(AccX、AccY、AccZ等で示すX軸、Y軸、Z軸の加速度データ及び、RotX、RotY、RotZ等で示すX軸、Y軸、Z軸廻りの回転データ)は、振動モータ120の回転数を所定の周波数帯域でスイープした際に、X軸、Y軸、Z軸に関してそれぞれ検出される信号を抽出部156によって解析して周波数成分として抽出されたデータであり、重み付け及び正規化される前(加工前)のデータである。つまり、図5の個人データは、一回の測定によって検出された後で抽出され、且つ、重み付けフィルタを通す前(フィルタリングする前)の周波数成分を示す生データ群である。
データ加工部255は、加工処理として、連続的に変化する前記振動源の周波数毎に抽出部156により抽出された周波数成分毎(図5参照)に、重み付けフィルタを用いて重み付けを行っている。すなわち、データ加工部255は、抽出部156により抽出された周波数成分のそれぞれに、生成した重み付けフィルタを用いて重み付けを行うことによって、各周波数成分を、それぞれが所属する個人を示す特徴的なデータにする。
これに加えて、データ加工部255は、抽出部156により抽出された周波数成分を周波数成分毎に重み付けした後に、正規化して使用者毎に関連付けることによって図4の個人データを生成する。
すなわち、データ加工部255は、個人データの構成要素であり、且つ、振動モータ120の振動周波数毎に抽出される各軸に関する加速度検出量及び回転検出量(周波数成分値)に重み付けした後、個人データ毎にダイナミックレンジを調整して正規化する。
すなわち、正規化は、個人データの要素となり、且つ、重み付けされた周波数成分に対して、MAX値を有する周波数成分のMAX値が、他の周波数成分におけるMAX値(ここでは「1」)となるように、ゲイン調整を行うことである。このように個人データP1は構成され、測定データを正規化したデータとも称することができ、個人認証IDとして機能する。
加速度検出量及び回転検出量を加工(重み付け)した要素、つまり、周波数成分により構成される使用者の個人データは、記憶部253に、データベースとして各個人毎に、各周波数成分の生データとともに関連付けられて、各個人毎の複数個記憶される。記憶部253は、使用者毎に過去複数件分の測定データをリングバッファで記憶する。
ここでは、記憶部253は、使用者毎に過去5件分の個人データ(履歴データ)を、使用者毎に記憶している。
これら履歴データとして格納される複数件の個人データは、使用者A、B…X毎に、過去5件分の古い順で並ぶ個人データである。
記憶部253に格納される個人データは、同じ条件であっても筐体110に対する使用者の握り方、握る強さ、手のサイズ等の関係により、使用者毎にその特徴が現れる。
ここでは、個人データは、条件毎に、つまり、連続的に変化した振動モータ120の振動周波数毎に、3軸加速度センサ140及び3軸角速度センサ180を介して取得されたデータに重み付けしてなる複数の周波数成分によって構成される。
本実施の形態では、記憶部253の記憶する使用者の数を10人と想定しているが、これに限らず、2人以上であれば何人の使用者を記憶していても良い。また、使用者毎の過去の測定データである個人データを5件としたが、何件でもよい。記憶部253の記憶する使用者毎の個人データは2件以上であることが望ましい。
判定部254は、使用者が筐体110を握持した状態で振動モータ120を振動させて得た個人データを、記憶部253の個人データと比較照合して個人認証を行う。
詳細には、判定部254は、データ加工部255によって個人データとして正規化された、3軸加速度センサ140及び3軸角速度センサ180で検出した実際に筐体110を握っている使用者の測定データと、記憶部253に記憶された履歴データとしての個人データとを比較照合する。この比較照合は、個人データ(図4参照)のチャートの形状(モータ120振動周波数毎の各軸方向の加速度及び角速度のバランス)を比較して照合する。
判定部254は、記憶部253内のデータベースに格納された全ての履歴データの中から、正規化した使用者の測定データとの類似度が高い個人データの順に、当該個人データの使用者を同一人の候補として判定する。
具体的には、認証対象となる使用者の個人データにおける、振動モータ120が発生する振動周波数毎の各軸における値を、格納された個人データ(履歴データ)においてそれぞれ対応する振動周波数毎の各軸における値との差を算出し、算出された差を二乗して差分分析値とする。
そして、算出された差分分析値の総和を算出する。このようして判定部254は、一個人データ(履歴データ)の差分分析値の総和を、全ての個人データ(履歴データ)を対象に算出し、履歴データ毎の差分分析値の総和を比較する。比較の結果、判定部254は照合処理として、差分分析値の総和が最も0に近い順に、順位付けを行い、この順位が高い個人データ(履歴データ)の使用者を、認証対象となる使用者と同一人であると判定する。
すなわち、判定部254は、全ての個人データ(履歴データ)と測定データとの差分を採って(ここでは認証対象となる使用者の現測定データと、格納された個人データを構成する120個のデータからそれぞれ引き算して)、各々二乗して+−を消去した値に、合致する値である0に近い順に、順位付けする。なお、順位付けにおいて、差分分析値の総和が大きく、0からかけ離れている場合、これらのデータに対応する個人データは除外して順位付けを行う。また、120個のデータとは、ここでは、複数の周波数毎(0〜200Hzまでの間で10Hzずつ増加する周波数毎(計20)に測定されたRotX、RotY,RotZ、AccX、AccY、AccZ(計6)である。
このように、判定部254は、使用者毎に記憶された過去の測定データである複数の履歴データの中で、認証対象となる使用者の測定データとの類似度が最も高い個人データの使用者を、同一人であると判定する。
ここでは、記憶部253には、個人データ(履歴データ)と、加工前の個人データとが記憶されている。判定部254は、個人データ(履歴データ)の中で、測定データとの類似度が最も高いデータに対応する使用者を、同一人であると判定する。このため、使用者の認証度の向上が図られている。
このように判定部254は、過去の履歴データであり、且つ、個人IDとして機能する個人データと、現在認証中の使用者の測定データとを比較判定するにあたり、個人差としての特徴が一番顕れる軸を照合するのではなく、対応する各軸で検出された加速度及び角速度を示す測定データの全てを用いて照合する。
判定部254によって、同一人であると判定した使用者は、メイン制御部22の機能によって、認証対象である使用者の候補として、順次人単位でディスプレイ23を介して提示される。認証対象である使用者は、この提示された情報に基づいてゲームコントローラ10の操作ボタンを押下する等して、その認証の確認を行うことができる。なお、判定部254における照合処理として、差分分析値の総和が最も0に近い順に、順位付けを行い、この順位が高い履歴データの使用者を、認証対象となる使用者と同一人であると判定したが、この判定の方法はこれに限らない。例えば、順位を、使用者毎に総和して、その総和が最も少ない数に対応する使用者を、認証対象となる使用者と同一人と判定しても良い。
このように構成された個人認証装置100の動作について説明する。
図6は、本発明の一実施の形態に係る個人認証装置100の認証処理を説明するためのフローチャートである。
まず、使用者は、図3に示すようにゲームコントローラ10の筐体110の握持部111を握り、ゲームコントローラ10を介して個人認証装置100に認証処理を開始させる。この認証処理の開始は、例えば、ゲームコントローラ10に設けられた操作ボタンを押下して、通信部151、21を介して、ゲーム装置本体20のメイン制御部22に認証処理開始信号を送信してもよいし、ゲーム装置本体20自体を操作することで行っても良い。
認証処理が開始されると、ステップS30では、振動制御部252は、記憶部253に格納された駆動電圧値を読み出して、通信部21を介してゲームコントローラ10に送信する。振動制御部252からの駆動制御信号は、通信部151を介して駆動回路部130に入力され、振動モータ120を駆動して振動させる。
これにより、振動モータ120は、連続的に変化する振動周波数を発生する。ここでは、振動モータ120は、振動制御部252によって、0Hz〜200Hzの間で10Hzずつ大きくなるように連続的に変化する振動周波数を発生する。
ステップS31では、3軸加速度センサ140及び3軸角速度センサ180は、使用者が筐体110の握持部111を握った状態で発生した振動を検出し、通信部151を介してメイン制御部22に出力する。具体的には、ステップS31では、3軸加速度センサ140は、振動周波数毎(ここでは駆動電圧の違いにより振動モータ120で発生する振動周波数毎)にX軸、Y軸、Z軸の加速度を検出し、測定データとしてメイン制御部22に出力する。このとき、3軸角速度センサ180は、振動周波数毎(ここでは駆動電圧の違いにより振動モータ120で発生する振動周波数毎)にX軸、Y軸、Z軸の各軸回りの角速度を検出し、測定データとしてメイン制御部22に出力する。
ステップS32では、メイン制御部22は、3軸加速度センサ140及び3軸角速度センサ180により検出した測定データ(加速度データ及び角速度データ)から周波数成分を抽出する。
具体的には、ステップS32では、メイン制御部22の抽出部156が、3軸加速度センサ140及び3軸角速度センサ180から入力される測定データをFFT解析して、その周波数成分を抽出する。
ステップS33では、メイン制御部22は、重み付けフィルタを用いて、抽出した周波数成分に重み付けを行う。
詳細には、ステップS33では、メイン制御部22のデータ加工部255が、検出したX軸の加速度、Y軸の加速度、Z軸の加速度、X軸回りの角速度、Y軸回りの角速度、Z軸回りの角速度のデータ(測定データ)に重み付けするための重み付けファイルを生成するとともに、各データを重み付けする。これにより、3軸加速度センサ140からの検出データでは、使用者の個体差が現れやすくなる。なお、このステップS33における重み付けフィルタ生成の詳細については後述する。
ステップS34では、データ加工部255は、個人データ毎に、0〜200Hzの範囲で、10Hzずつに大きくなる振動周波数毎に検出される使用者の測定データにおいて、MAX値が使用者の測定データのMAX値となるように、測定データを構成する全てのデータ(駆動電圧毎の各軸における振動を示す各軸の加速度データ)をゲイン調整して正規化する。ここでは、使用者の一回の測定による得た測定データの各データに対してダイナミックレンジを調整、つまり、測定データ内のデータのMAX値が所定の値(ここでは1)となるようにゲイン調整を行っている。
すなわち、ステップS34では、データ加工部255は、個人データP1(図4参照)に示すように、個人データP1を構成するAccX、AccY、AccZ、RotX、RotY、RotZによって、10Hz〜200Hzの範囲内において10Hz毎に検出した周波数成分において、MAX値を示す周波数成分を「1」として、他の周波数成分との調整を行い適宜、正規化を行っている。
ステップS35では、判定部254は、記憶部253に履歴データ(個人データ)があるかを確認し、履歴データが記憶部253に格納されていれば、ステップS36に移行し、履歴データが記憶部253になければ、ステップS40に移行する。
ステップS36では、判定部254が、正規化した測定データと全ての履歴データと比較する。このステップS36における判定部254の処理は、上述した比較照合処理のうちの比較処理である。
ステップS37では、判定部254は、正規化した測定データと、全ての履歴データとを比較して、全ての履歴データに対し、正規化した測定データとの類似度が高い順に順位付けを行いステップS38に移行する。なお、このステップS37における判定部254の処理は、上述した比較照合処理のうちの照合処理である。
ステップS38では、判定部254は、順位付けした、個人IDである履歴データ(個人データ)の中で、一番順位が高い、つまり、類似度が高い個人データの使用者と、正規化した測定データの使用者を同一人であると認証して、ステップS39に移行する。
ステップS39では、判定部254は、正規化した測定データの使用者に、認証した履歴データの使用人本人(該当者)である否かを提示し、使用者本人であれば、ステップS40に移行し、使用者本人でなければ、ステップS41に移行する。
ステップS40では、判定部254は、正規化した測定データ群を使用者の個人IDとなる個人データとし、この個人データを履歴データとして記憶部253に記憶する。加えて、ステップS40では、判定部254は、正規化される前のフィルタリングされていない測定データ(重み付けフィルタを通していない周波数成分)を、正規化した測定データの使用者に関連付けて記憶部253に保存して処理を終了する。
ステップS41では、順位付けによって同一人と認証した履歴データ(個人データ)をマスクしてステップS37に移行する。具体的には、ステップS41では、判定部254は、順位付けによって同一人と認証した履歴データの使用者の履歴データを全てマスクする。また、ステップS37では、判定部254は、マスクされた履歴データを除外した全ての履歴データに、正規化した測定データとの類似度が高い順に再び順位付けを行い以降の処理をくり返す。
このようにして、個人認証装置100を備えるゲーム装置では、ゲーム装置本体20は、ゲームコントローラ10を用いて、個人の特定を行って、その個人に対応した設定や機能にゲーム装置本体20側で、切り替えることができる。
次に、ステップS33において重み付けを行う際に用いられる重み付けフィルタの生成を説明する。
図7は、本発明の一実施の形態の係る個人認証装置における重み付けフィルタの生成方法を説明するフローチャートである。
ここでは、記憶部253は、A、B、…、X人の個人データを記憶しているものとし、個人データは、各個人毎に複数個存在している(Database={A0,A1,A2,A3,…An,B0,B1,…Xm−1、Xm})。つまり、記憶部253は、個人データのデータベースとして機能する。なお、これら各個人A、B、…、Xに複数個対応付けられた個人データA0,A1,A2,A3,…An,B0,B1,…Xm−1、Xmは、ここでは重み付けフィルタを通していない重み付けフィルタリング前、つまり加工前の個人データ(生データ)である。
図8は、加工前の個人データ(生個人データ)Personalをテキストで示す図であり、このような生個人データは、記憶部253に、所定の個人に対応付けられた個人データ(加工、正規化後の個人データ)とともに、データベースとして格納されている。
記憶部253のデータベースにおいて、各個人データA0,A1,A2,A3,…An,B0,B1,…Xm−1、Xmは、それぞれ、図8に示すように個人データ(Personal)として{AccX0−10Hz,AccX10−20Hz,…,AccX190−200Hz,AccY0−10Hz,…,AccY190−200Hz,AccZ0−10Hz,…,AccZ190−200Hz,RotX0−10Hz,RotX10−20Hz,…,RotX190−200Hz,RotY0−10Hz,…,RotY190−200Hz,RotZ0−10Hz,…,RotZ190−200Hz}の形態を有する。なお、AccX,AccY,AccZは3軸(X,Y、Z)加速度センサ出力であり、RotX,RotY,RotZ:3軸(X,Y、Z)角速度センサ出力である。
ステップS51では、メイン制御部22のデータ加工部255は、乱数を用いて初期重み付けフィルタを生成する。
図9は重み付けフィルタ(Weight)の説明に供する図であり、重み付けフィルタの一例を示す図である。重み付けフィルタ(Weight)は、図9に示すように、Weight={Weight0−10Hz,Weight10−20Hz,…,Weight190−200Hz}の形態を有する。重み(Weight)は、振動周波数毎に、生個人データを構成する測定データ毎に設定され、且つ、0≦Weight≦1.0を満たす。
ステップS52では、データ加工部255は、生成した重み付けフィルタを評価するためのフィルタ評価用データとしての個人データ(例えば個人データA0)を、記憶部253における個人データのデータベース中から設定して取り出す(読み込む)。
ステップS53では、データ加工部255は、記憶部253(データベース)からフィルタ評価用データとして設定した個人データ(個人データA0)以外の個人データ群(個人データA1,A2,A3,…An,B0,B1,…Xm−1、Xm)を取り出す。
ステップS54では、ファイル評価用データ(個人データA0)とフィルタ評価用データとして設定した個人データ以外の個人データ、すなわち、記憶部252のデータベース内の個人データ群との差分を計算し、個人データ群において、最も差分が短い(少ない)個人データを求める。
差分を図10に示す。図10は、個人データの差分の説明に供する図である。
図10に示すように、個人データの差分(Diff)は、ファイル評価用データ(個人データA0)とフィルタ評価用データ(個人データA0)以外の個人データ群(A1,A2,A3,…An,B0,B1,…Xm−1、Xm)における各個人データと差分を、初期重み付けフィルタ(Weight)で重み付けした値の絶対値とする。この個人データの差分(Diff=|(PersonalA−PersonalB)・Weight|)は、振動周波数毎に検出された個人データA0の各要素(測定データ)及び個人データA0以外の個人データ毎の各要素(測定データ)の二乗差と、初期重み付けフィルタ(Weight)の振動周波数毎の重み付けとを用いて算出される。
すなわち、Diff=|(Personal.A−Personal.B)・Weight|=(PersonalA.AccX0−10Hz−PersonalB.AccX0−10Hz)2・Weight0−10Hz+(PersonalA.AccX10−20Hz−PersonalB.AccX10−20Hz)2・Weight10−20Hz+…+(PersonalA.AccX190−200Hz−PersonalB.AccX190−200Hz)2・Weight190−200Hz+(PersonalA.AccY0−10Hz−PersonalB.AccY0−10Hz)2・Weight0−10Hz+…+(PersonalA.AccZ0−10Hz−PersonalB.AccZ0−10Hz)2・Weight0−10Hz+…+(PersonalA.RotY0−10Hz−PersonalB.RotY0−10Hz)2・Weight0−10Hz+…+(PersonalA.RotZ190−200Hz−PersonalB.RotZ190−200Hz)2・Weight190−200Hzとなる。
このように、ステップS54では、データ加工部255は、フィルタ評価用データ(A0)と、フィルタ評価用データ以外の個人データ群(A1,A2,A3,…An,B0,B1,…Xm−1、Xm)の各個人データとを用いて対応するDiffを算出する。データ加工部255は、算出したDiffを比較して、その比較の結果、最も差分が短い個人データを判定する。
ステップS55では、データ加工部255は、上記Diffを用いて、最も差分が短い個人データが所属する個人と、フィルタ評価用データが所属する個人と一致したか否かを判定する。ステップS55において、最も差分が短い個人データが所属する個人と、フィルタ評価用データが所属する個人とが一致していればステップS56に移行し、一致していなければステップS57に移行する。
ステップS56では、データ加工部255は、フィルタ評価で用いられた重み付けフィルタに対して、重み付けフィルタとしての適性度を+1にして(重み付けフィルタとしての評価値を上げて)、ステップS58に移行する。
一方、ステップS57では、データ加工部255は、フィルタ評価で用いられた重み付けフィルタに対して、重み付けフィルタとしての適性度を−1にして(重み付けフィルタとしての評価値を下げて)、ステップS58に移行する。
ステップS58では、データ加工部255は、生成した重み付けフィルタ及び設定したフィルタ評価用データとそれ以外の個人データ群を用いて、全データベース要素に対する評価が完了したか否かを判定する。すなわち、ステップS58では、データベース内の個人データ(履歴データ)の全てをファイル評価用データとして設定し、設定したフィルタ評価用データ以外の全ての個人データ群との差分を算出して重み付けフィルタ評価を行ったか否かを判定する。
ステップS58において、全データベース要素に対する評価が完了していなければステップS59に移行して、データベースから次のフィルタ評価用データを設定して、ステップS53に戻り処理をくり返す。
一方、ステップS58において、全データベース要素に対して、生成した重み付けフィルタ適正の評価が完了していればステップS60に移行する。
ステップS60では、データ加工部255は、フィルタ適性度に基づいて、生成した重み付けフィルタが十分な適正を持つ重み付けフィルタであるか否かを判定する。ステップS60において、生成した重み付けフィルタが十分な適正を持つフィルタであれば、重み付けフィルタ生成処理は終了し、十分な適正を持つフィルタでなければステップS61に移行する。
ステップS61では、探索アルゴリズムにより、より適性度の高いフィルタが生成されるまで、ステップS52に移行して処理を繰り返す。
このようにデータ加工部255は、適性度の高い重み付けフィルタを生成する。この生成した重み付けフィルタを用いて、データ加工部255は、抽出した測定データ(加速度データ及び角速度データ)である周波数成分に、各個人データ毎(詳細には各個人データの測定データ毎)に重み付けを行う。
本実施の形態によれば、使用者はゲームコントローラ10を使用する体勢をとるだけで、つまり、ゲームコントローラ10を握持して、振動モータ120で振動周波数を一定割合で増加する振動周波数を発生させて、振動検出部170に振動を検出させて、個人認証を行う。つまり、使用者がゲームコントローラ10を握持するだけで、個人認証を行うことができ、使用者に意識させることなく個人用設定、個人用データなどが選択自在となり操作感の向上を図ることができる。
また、使用者に対して、キーを打ち込む動作、ゲームコントローラ10自体を所定の方向に移動させる動作の要求を行うことなく、簡易に個人認証を行うことができる。
また、ゲームコントローラ10等の機器は、近年、操作感を使用者に付与するためのバイブレータ(振動モータ)や、ゲームやアプリケーションにおける操作の入力方法として、ゲームコントローラ10などの機器にかかる加速度を検知し、操作の一部として認識させるために加速度センサ(特に3軸加速度センサ)を備えるものが多く知られている。
これら機能を予め備えたゲームコントローラを用いて、バイブレータ及び加速度センサの双方の機能を損なうことなく、また双方の機能のみで簡易的に個人認証を行うことができる。
本実施の形態の個人認証装置100によれば、機器において個人認証を行う際に、従来の光学センサを用いた指紋のパターン認証や、赤外線を用いた静脈パターン認証を行う生体認証及び虹彩パターン、顔、目の網膜における毛細血管のパターンを、光学センサを用いたカメラでイメージとして取り込む画像解析による認証技術等と比較して、使用するセンサ類が小型低コストである。また、振動モータの振動を利用することによって、個人認証を実現するために、追加の機器、部品を極力少なくすることができる。
このように本実施の形態の個人認証装置100は、振動モータ(バイブレータ)と、多軸センサ(加速度センサ及び角速度センサ)と、を備えた機器で簡易的な個人認証を行うことができる。
なお、本実施の形態では、個人認証装置100は、ゲームコントローラ10とゲーム装置本体20に適用した構成としたが、これに限らず、ゲームコントローラ10自体や携帯電子機器に搭載してもよい。すなわち、個人認証装置100の構成要件は、機器の筐体内に振動モータ120と、振動を検知する3軸加速度センサ140及び3軸角速度センサ180のうちの少なくとも一方のセンサと、が搭載されていれば、その他の構成要件はどこに、どのように設けられてもよい。
具体的には、ゲームコントローラ10を電子機器とし、この電子機器内に、メイン制御部22側の振動制御部252、記憶部253、判定部254及びデータ加工部255を、振動モータ120、3軸加速度センサ140、3軸角速度センサ180とともに搭載される構成としてもよい。このように構成する際には、電子機器自体に、認証を提示する表示部を備え、判定部254の判定結果を表示可能な構成にすることが望ましい。
また、図6を用いて説明した本実施の形態の認証処理では、ステップS41の後、ステップS37に移行して、判定部254は、マスクされた履歴データ(記憶部253に格納された個人データ)を除外した全ての履歴データに、正規化した測定データとの類似度が高い順に再び順位付けを行うようにしたが、ステップS41の後、ステップS38に移行する処理であってもよい。この場合のステップS38では、判定部254は、先の処理で既に順位付けされた全ての履歴データを用いて再び照合処理を行う。具体的には、判定部254は、マスクされた履歴データの使用者が除かれ、且つ、先の処理で既に順位付けされた全履歴データの使用者の中から最上位(順位の最も小さい)使用者を、正規化された測定データの使用者と同一人であると認証する。
このように、本実施の形態の個人認証装置によれば、振動源である振動モータ120に段階的に変化する振動を発生させた際に抽出した3軸に関する各周波数成分に対して重み付けを行うことによって、既に記憶部253に登録されているデータベース上での認証最適係数を常に抽出できる。
このため、個人認証を行う上での最適なデータベースを構築することが出来る。また、強力な電波、電源電圧の異常、入力耐性以上のノイズ、静電気による放電等の外乱が混入して、認証率を上げるための最適な周波数帯が異なる場合でも、外乱レベルで正規化を行うことなく、好適に対応出来る。
なお、上記実施の形態の個人認証装置100におけるデータ加工部255では、重み付け処理に替えて、加工処理として周波数成分毎に特徴的な周波数成分、つまり、周波数成分のピーク値を抽出する処理を行うようにしても良い。
例えば、個人認証装置100のデータ加工部255において、FFT解析により抽出された各周波数成分のピーク値付近に、ウィンドウ周波数範囲を設定する。これにより、ウィンドウ内の周波数成分のピークのみ抽出して、それ以外の余分な情報を除外する。なお、ここで設定されるウィンドウの所定幅は、2つ以上の周波数スペクトラムを抽出出来る帯域幅とし、例えば100Hzの幅で設定する。これにより各個人毎に検出された測定データ(加速度データ及び角速度データ)から抽出した周波数成分において、ピークスペクトラムの偏りが有る場合でも、所定範囲内において検知でき、情報量が増加して認証率の向上も図ることができる。
なお、ここでは、本発明をハードウェアで構成する場合を例にとって説明したが、本発明をソフトウェアで実現することも可能である。例えば、振動モータ120と3軸加速度センサ140と3軸角速度センサ180と通信部151とを筐体110内部に搭載したゲームコントローラと通信可能なコンピュータのメモリに記憶して、コンピュータの制御部により実行されるプログラムとする。このプログラムは、使用者が前記筐体を握持した状態で前記振動モータ120を振動して所定の周波数領域でスイープする振動制御部252、振動モータ120で連続的に変化して発生する複数の振動周波数毎を3軸加速度センサ140及び3軸角速度センサ180で検出して得た複数の測定データから周波数成分を抽出する抽出部、抽出した周波数成分を使用者毎に記憶する記憶部253、及び、使用者が筐体110を握持した状態で振動モータ120を振動させて得た周波数成分を記憶部253のデータと比較照合して個人認証を行う判定部として、コンピュータの制御部を機能させるアルゴリズムをプログラム言語で記述したものである。このプログラムをコンピュータのメモリに記憶しておいて制御部によって実行させることによって本発明に係る個人認証装置と同様の機能を実現することができる。
なお、上記本発明は、本発明の精神を逸脱しない限り、種々の改変をなすことができ、そして本発明が該改変させたものに及ぶことは当然である。