(57)【要約】【課題】ユーザによるボタン押下操作の強さを推定する。【解決手段】入力装置３００において、ユーザによって把持される把持モジュール２０１は姿勢とユーザによるボタン押下操作とを検知する。記憶部３０１は検知された姿勢の経過を所定時間分記憶する。計算部３０２は所定時間分の姿勢の変化量を計算する。押下操作が検知されると、推定部３０３は計算された変化量に応じて押下操作の強さを推定する。判定部３０４は計算された変化量から把持モジュール２０１の振り操作がされたか否かを判定する。出力部３０５は推定部３０３による押下操作の強さの推定結果を出力する。判定部３０４により振り操作がされたと判定された場合、出力部３０５は計算された変化量に応じて振り操作の強さを更に出力する。【選択図】図３
2008212339.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって把持される検知装置であって、当該検知装置の姿勢と、当該ユーザの押下操作と、を検知する検知装置と、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部と、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部と、
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部と、
前記推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力部と、
を備えることを特徴とする入力装置。
【請求項２】
請求項１に記載の入力装置であって、
前記計算された変化量が所定の閾値以上である場合、当該ユーザの振り操作がされたと判定する判定部
をさらに備え、
前記判定部により当該ユーザの振り操作がされたと判定された場合、前記出力部は、前記計算された変化量を当該振り操作の強さとして指定する振り操作情報をさらに出力する
ことを特徴とする入力装置。
【請求項３】
請求項１または２に記載の入力装置であって、
前記推定部は、前記計算された変化量が大きいほど、当該ユーザの押下操作の強さが大きいと推定する
ことを特徴とする入力装置。
【請求項４】
請求項２に記載の入力装置であって、
前記推定部は、前記計算された変化量が当該所定の閾値以上である場合、当該ユーザの押下操作の強さが所定の最大強度であると推定する
ことを特徴とする入力装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の入力装置であって、
前記推定部は、前記検知装置により当該ユーザによる押下操作が検知されてから所定の待ち時間経過後に前記計算部により計算された変化量から、当該ユーザの押下操作の強さを推定する
ことを特徴とする入力装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の入力装置であって、
前記検知装置は、当該検知装置の位置をさらに検知し、
前記記憶部は、前記検知装置により検知された姿勢の経過と対応づけて、前記検知装置により検知された位置の経過を所定時間分だけさらに記憶し、
前記計算部は、前記記憶部に記憶される位置の経過から当該所定時間分の位置の変化量をさらに計算し、
前記推定部は、前記計算された姿勢の変化量と位置の変化量から、当該ユーザの押下操作の強さを推定する
ことを特徴とする入力装置。
【請求項７】
記憶部、検知装置、計算部、推定部、出力部を有する入力装置にて実行される入力制御方法であって、
前記記憶部は、前記検知装置により検知された姿勢の経過を所定時間分だけ記憶し、
ユーザによって把持される前記検知装置が、前記検知装置の姿勢と、当該ユーザによる押下操作と、を検知する検知ステップと、
前記計算部が、前記記憶部に記憶される姿勢の経過から、当該所定時間分の姿勢の変化量を計算する計算ステップと、
前記推定部が、前記計算された変化量から当該ユーザの押下操作の強さを推定する推定ステップと、
前記出力部が、前記推定ステップにより推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力ステップと、
を備えることを特徴とする入力制御方法。
【請求項８】
ユーザによって把持される検知装置であって当該検知装置の姿勢と当該ユーザによる押下操作とを検知する検知装置を備えるコンピュータを、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部、
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部、
前記推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザによる押下操作の強さを推定するために好適な入力装置、入力制御方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
コンピュータを用いたテレビゲームでは、ユーザは複数の操作キーを備えた、いわゆるコントローラと呼ばれる入力装置を使って、ユーザの操っているキャラクターオブジェクト（以下、単に「キャラクター」と呼ぶ）等に指示を与えてプレイするのが一般的である。ゲーム機は、コントローラの操作ボタンがユーザによって押下されると、押下された操作ボタンに応じた指示入力信号を取得して、この指示入力信号に基づいてキャラクターを上下左右に動かしたり仮想銃を発射したりしてゲームを進行させる。
【０００３】
さらに近年では、位置や加速度を測定できる多機能のコントローラも普及してきている。特許文献１には、操作ボタンの押圧力を検出する圧力センサを備えたコントローラが開示されている。これによれば、ゲーム機は、コントローラの操作ボタンが押下されたことを検知できるのに加えて、ユーザによって操作ボタンが押下されたときの押下の強さを圧力センサにより取得することができる。
【特許文献１】特開２００４−３３３７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、打楽器を演奏するゲームでは、操作ボタンの押下の強さを取得することにより、取得した強さに応じて音の大きさを変えたり演出を変えたりすることが可能になる。しかしながら、コントローラに圧力センサを備えるようにすると、コントローラの設計がより複雑なものになってしまい、また、コントローラの製造コストが上がってしまうという問題がある。一方、ユーザにとっては、既に持っているコントローラに加えて新たにコントローラを購入しなければならず、大きな費用の負担が発生してしまうという問題がある。
【０００５】
本発明はこのような課題を解決するものであり、ユーザによる押下操作の強さを推定するために好適な入力装置、入力制御方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００７】
本発明の第１の観点に係る入力装置は、検知装置、記憶部、計算部、推定部、判定部、出力部を備える。
検知装置は、ユーザによって把持され、当該検知装置の姿勢と、当該ユーザによる押下操作と、を検知する。
記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。
計算部は、記憶部に記憶される姿勢の経過から、当該所定時間分の姿勢の変化量を計算する。
推定部は、計算された変化量から、当該ユーザの押下操作の強さを推定する。
出力部は、推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する。
これにより、入力装置は、ユーザによる押下操作の強さを容易に推定することができる。その際、入力装置は圧力センサなどのような押下操作の強さを直接計測する構成を備える必要はない。例えば、検知装置は、ユーザが入力装置に指示を与えるために手に握って操作する把持モジュール（いわゆる”コントローラ”）である。
【０００８】
入力装置は、さらに、計算された変化量が所定の閾値以上である場合、当該ユーザの振り操作がされたと判定する判定部を備え、
出力部は、計算された変化量を当該振り操作の強さとして指定する振り操作情報をさらに出力してもよい。
これにより、入力装置は、ユーザによる押下操作の強さを容易に推定できるとともに、ユーザによる振り操作の強さを容易に判定することができる。
【０００９】
推定部は、計算された変化量が大きいほど、当該ユーザの押下操作の強さが大きいと推定してもよい。
この結果、入力装置は、姿勢の変化量が大きいほど強く押下されたと推定する。
【００１０】
推定部は、計算された変化量が当該所定の閾値以上である場合、当該ユーザの押下操作の強さが所定の最大強度であると推定してもよい。
この結果、入力装置は、姿勢の変化量が所定の閾値以上であれば押下操作の強さの上限値であると推定する。
【００１１】
推定部は、検知装置により当該ユーザによる押下操作が検知されてから所定の待ち時間経過後に計算部により計算された変化量から、当該ユーザの押下操作の強さを推定してもよい。
これにより、入力装置は、ユーザによる押下操作の前後の姿勢の変化に基づいて押下操作の強さを推定することができる。すなわち、ユーザの予備動作による押下前の姿勢の変化と、押下後の姿勢の変化との両方に基づいて、押下操作の強さを推定するので、ユーザ行為により即して推定することができる。
【００１２】
検知装置は、当該検知装置の位置をさらに検知し、
記憶部は、検知装置により検知された姿勢の経過と対応づけて、検知装置により検知された位置の経過を所定時間分だけさらに記憶し、
計算部は、記憶部に記憶される位置の経過から、当該所定時間分の位置の変化量をさらに計算し、
推定部は、計算された姿勢の変化量と位置の変化量から、当該ユーザの押下操作の強さを推定してもよい。
これにより、入力装置は、姿勢だけでなく位置の変化量に応じて押下操作の強さを推定できるので、ユーザによる押し操作と振り操作の区別を推測しやすくなる。
【００１３】
本発明のその他の観点に係る入力制御方法は、記憶部、検知装置、計算部、推定部、出力部を有する入力装置にて実行される入力制御方法であって、検知ステップ、計算ステップ、推定ステップ、出力ステップを備える。
記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。
検知ステップは、ユーザによって把持される検知装置が、検知装置の姿勢と、当該ユーザの押下操作と、を検知する。
計算ステップは、計算部が、記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する。
推定ステップは、検知ステップにより当該ユーザの押下操作が検知されると、推定部が、計算された変化量から当該ユーザの押下操作の強さを推定する。
出力ステップは、出力部が、推定ステップにより推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する。
これにより、この入力制御方法を用いた入力装置は、ユーザによる押下操作の強さを容易に推定することができる。その際、圧力センサなどを用いて押下操作の強さを直接計測する必要はない。
【００１４】
本発明のその他の観点に係るプログラムは、ユーザによって把持される検知装置であって当該検知装置の姿勢と当該ユーザの押下操作とを検知する検知装置を備えるコンピュータを、記憶部、計算部、推定部、出力部として機能させる。
記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。
計算部は、記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する。
推定部は、検知装置により当該ユーザの押下操作が検知されると、計算された変化量から当該ユーザの押下操作の強さを推定する。
出力部は、推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する。
これにより、このプログラムを実行するコンピュータは、ユーザによる押下操作の強さを容易に推定することができる入力装置として機能する。その際、コンピュータは圧力センサなどのような押下操作の強さを直接計測する構成を備える必要はない。
【００１５】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００１６】
本発明によれば、ユーザによる押下操作の強さを推定するために好適な入力装置、入力制御方法、ならびに、プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００１８】
（実施例１）
図１は、プログラムを実行することにより、本発明の実施形態に係る装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下本図を参照して説明する。
【００１９】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、マイク１１１と、を備える。
【００２０】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態に係る入力装置が実現される。
【００２１】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００２２】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００２３】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００２４】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。なお、コントローラ１０５の詳細については後述する。
【００２５】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００２６】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００２７】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００２８】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００２９】
また、仮想空間が３次元にて構成される場合には、当該３次元空間内に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００３０】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００３１】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェイス（図示せず）により構成される。
【００３２】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００３３】
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカーに出力することにより、音声出力が可能となる。
【００３４】
さらに、情報処理装置１００には、インターフェイス１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【００３５】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００３６】
以上で説明した情報処理装置１００は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【００３７】
例えば、一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用する。
【００３８】
本実施形態では、現実の空間における位置や姿勢などの種々のパラメータが測定できるようなコントローラ１０５を採用する。
【００３９】
図２は、現実の空間における位置や姿勢などの種々のパラメータが測定できるようなコントローラ１０５と情報処理装置１００との外観を示す説明図である。以下、本図を参照して説明する。
【００４０】
コントローラ１０５は、把持モジュール２０１と発光モジュール２５１との組合せからなる。把持モジュール２０１は無線通信によって情報処理装置１００と通信可能に接続されており、発光モジュール２５１は、有線で情報処理装置１００と通信可能に接続されている。情報処理装置１００の処理結果の音声および画像は、テレビジョン装置２９１によって出力表示される。
【００４１】
把持モジュール２０１は、テレビジョン装置２９１のリモートコントローラと類似した外観をしており、その先端には、ＣＣＤカメラ２０２が配置されている。
【００４２】
一方発光モジュール２５１は、テレビジョン装置２９１の上部に固定されている。発光モジュール２５１の両端には、発光ダイオード２５２が配置されており、情報処理装置１００からの電源供給によって発光する。
【００４３】
把持モジュール２０１のＣＣＤカメラ２０２は、この発光モジュール２５１の様子を撮影する。
【００４４】
撮影された画像の情報は、情報処理装置１００に送信され、情報処理装置１００は、当該撮影された画像内において発光ダイオード２５２が撮影された位置に基づいて、発光モジュール２５１に対する把持モジュール２０１の位置を取得する。
【００４５】
このほか、把持モジュール２０１内には、加速度センサ、角加速度センサ、傾きセンサ等が内蔵されており、把持モジュール２０１そのものの姿勢を測定することが可能となっている。この測定結果も、情報処理装置１００に送信される。
【００４６】
把持モジュール２０１の上面には、十字形キー２０３が配置されており、ユーザは、十字形キー２０３を押し込み操作することによって、各種の方向指示入力を行うことができる。また、Ａボタン２０４ほか、各種ボタン２０６も上面に配置されており、当該ボタンに対応付けられた指示入力を行うことができる。
【００４７】
一方、Ｂボタン２０５は、把持モジュール２０１の下面に配置されており、把持モジュール２０１の下面に窪みが構成されていることとあいまって、拳銃やマジックハンドにおける引き金を模したものとなっている。典型的には、仮想空間内における拳銃による発砲やマジックハンドによる把持の指示入力は、Ｂボタン２０５を用いて行われる。
【００４８】
また、把持モジュール２０１の上面のインジケータ２０７は、把持モジュール２０１の動作状況や情報処理装置１００との無線通信状況などをユーザに提示する。
【００４９】
把持モジュール２０１の上面に用意された電源ボタン２０８は、把持モジュール２０１そのものの動作のオン・オフを行うもので、把持モジュール２０１は内蔵された電池（図示せず）によって動作する。
【００５０】
このほか、把持モジュール２０１の上面には、スピーカー２０９が配置され、音声処理部１１０から入力される音声信号による音声を出力する。把持モジュール２０１内部には、バイブレータ（図示せず）が用意されており、情報処理装置１００からの指示に基づいて、振動の有無や強弱を制御することができるようになっている。
【００５１】
以下では、把持モジュール２０１と発光モジュール２５１との組合せからなるコントローラ１０５を用いて、把持モジュール２０１の現実世界における位置や姿勢を測定することを前提に説明する。ただし、上記のような形態によらず、たとえば超音波や赤外線通信、ＧＰＳ（Global Positioning System）等を利用してコントローラ１０５の現実世界における位置や姿勢を測定するとした場合であっても、本発明の範囲に含まれる。
【００５２】
次に、本実施形態の入力装置３００の各部が行う処理について説明する。
図３は、本実施形態の入力装置３００が行う処理を説明するための図である。本図に示すように、入力装置３００は、コントローラ１０５、記憶部３０１、計算部３０２、推定部３０３、判定部３０４、出力部３０５を備える。
【００５３】
コントローラ１０５は、上述したように把持モジュール２０１と発光モジュール２５１とから構成される。把持モジュール２０１は、把持モジュール２０１の姿勢と、把持モジュール２０１に配置された各キーのユーザによる押下操作とを検知する。すなわち、把持モジュール２０１は、姿勢や押下操作を検知するための検知装置である。
【００５４】
記憶部３０１は、把持モジュール２０１により検知された姿勢の経過を、所定時間分だけ記憶する。例えば、把持モジュール２０１は、垂直同期割り込みなどの定期的なタイミングで把持モジュール２０１の姿勢を検知してＣＰＵ  １０１に測定結果データを入力し、記憶部３０１は所定回数分の測定結果である姿勢データ３５０を履歴として記憶する。記憶部３０１は、最も新しく検知された姿勢データ３５０からＮ個分（Ｎは１以上の整数）の姿勢データ３５０を記憶できる。記憶部３０１は、検知された姿勢データ３５０がＮ個を超えると、最も古い姿勢データ３５０を削除して最新のＮ個分の姿勢データ３５０を記憶する。ＣＰＵ  １０１とＲＡＭ  １０３が協働して動作することにより、記憶部３０１として機能する。外部メモリ１０６に姿勢データ３５０を記憶するように構成してもよい。
【００５５】
ここで、姿勢データ３５０は、把持モジュール２０１に内蔵された傾きセンサによって測定された把持モジュール２０１の傾きを示すデータと、同じく把持モジュール２０１に内蔵された加速度センサによって測定された把持モジュール２０１の移動する加速度を示すデータと、得られた加速度を時間積分することにより得られる把持モジュール２０１の移動する速度を示すデータとを含む。姿勢データ３５０は、把持モジュール２０１の角加速度、角速度、回転の向きを示すデータなどをさらに含んでもよい。
【００５６】
また、記憶部３０１は、把持モジュール２０１の現実空間での位置を示す位置データ３６０も履歴としてさらに記憶してもよい。この場合、記憶部３０１は、最新のＮ個分の姿勢データ３５０と位置データ３６０を対応づけて記憶する。位置は、予め定義された空間座標を用いて表される。座標系の決め方は任意であり、例えば、互いに直交する３軸による直交座標系を用いることができるほか、１個の動径と２個の偏角を用いた球座標のような極座標系を用いることもできる。
【００５７】
計算部３０２は、記憶部３０１に記憶される所定時間分の姿勢データ３５０から、この所定時間分の把持モジュール２０１の姿勢の変化量を計算する。ＣＰＵ  １０１とコントローラ１０５が協働して動作することにより、計算部３０２として機能する。
【００５８】
具体的には、例えば計算部３０２は、姿勢データ３５０のうち傾きを示すデータのみを用いて、所定時間分（例えば１秒など）の姿勢の変化量を計算できる。図４（ａ）は、傾きセンサによって得られた把持モジュール２０１の傾きを示す姿勢データ３５０の時間変化をグラフにした例である。図４（ｂ）のように時刻Ｔ１に把持モジュール２０１の傾きがＣ１であり、図４（ｃ）のように時刻Ｔ２に把持モジュール２０１の傾きがＣ２であったとすると、経過時間ΔＴ（＝Ｔ２−Ｔ１）における傾きの変化量ΔＣはＣ２−Ｃ１である。変化量の絶対値をとってもよい。同様にして、計算部３０２は任意の時間分の傾きの変化量ΔＣを計算できる。この例では、重力方向に垂直な方向（水平方向）に対する傾きを用いているが、これは一例に過ぎず、任意の方向を基準方向として傾きを定義してもよい。
【００５９】
また、例えば計算部３０２は、姿勢データ３５０のうち加速度を示すデータのみを用いて、所定時間分の姿勢の変化量を計算できる。図５（ａ）は、加速度センサによって得られた把持モジュール２０１の移動する加速度を示す姿勢データ３５０の時間変化をグラフにした例である。図５（ｂ）は、測定された加速度の時間積分で得られる速度の時間変化をグラフにした例である。このように、時間ΔＴ（＝Ｔ２−Ｔ１）における加速度の変化量ΔＡ（＝Ａ２−Ａ１）、もしくは速度の変化量ΔＶ（＝Ｖ２−Ｖ１）が得られる。同様にして、計算部３０２は、任意の時間分の加速度の変化量ΔＡもしくは速度の変化量ΔＶを計算できる。
【００６０】
計算部３０２は、異なる時刻Ｔ１，Ｔ２間の姿勢データ３５０の差を変化量としてもよいし、他の演算手法により変化量を求めてもよい。例えば、［数１］のように、時刻Ｔ１，Ｔ２間において単位区間（単位時間）あたりの姿勢データ３５０の変化量をそれぞれの区間について求めて、各区間における変化量の総和を区間数で割った値（相加平均）を、求める変化量としてもよい。
【００６１】
姿勢の変化量（相加平均）  ＝  （ΣＣｉ）／Ｎ      ・・・［数１］
ただし、Ｎは１以上の整数で表される区間数、ｉは１以上Ｎ以下の整数、Σは区間ｉの姿勢の変化量Ｃｉの１≦ｉ≦Ｎにおける総和である。
【００６２】
また、例えば、［数２］のように、各区間ごとに予め定義された重み付けＧｉ（ただし０以上１以下）を考慮して、姿勢の変化量を求めてもよい。
【００６３】
姿勢の変化量（相加平均）  ＝  （Σ（Ｇｉ×Ｃｉ））／Ｎ      ・・・［数２］
重み付けＧｉは予め記憶部３０１に記憶される。
【００６４】
また、例えば、［数３］のように、各区間ｉにおける姿勢の変化量の、時刻Ｔ１，Ｔ２間での標準偏差σを、求める姿勢の変化量にしてもよい。
【００６５】
σ＾２  ＝  （Σ（Ｃｉ−Ｃａ）＾２）／Ｎ      ・・・［数３］
ただし、Ｃａは［数１］又は［数２］で求めた相加平均、演算子「＾」はべき乗（例えばＸ＾ＹならＸのＹ乗を示す）である。
【００６６】
［数３］において、σ＾２（分散）を、求める姿勢の変化量にしてもよい。
【００６７】
また、例えば、［数４］のように、各区間ｉにおける姿勢の変化量の、時刻Ｔ１，Ｔ２間での二乗平均平方根（RMS;Root Mean Square）を、求める姿勢の変化量にしてもよい。
【００６８】
ＲＭＳ＾２  ＝  （Σ（Ｃｉ＾２））／Ｎ      ・・・［数４］
【００６９】
ここに記載した姿勢の変化量を求めるための数式は例示に過ぎない。
【００７０】
計算部３０２は、記憶部３０１に記憶した所定時間分の姿勢データ３５０のすべてを用いて姿勢の経過の変化量を求める必要はなく、特定の一部の姿勢データ３５０をサンプリングして［数１］〜［数４］などにより姿勢の変化量を求めてもよい。例えば、計算部３０２は、姿勢の変化量を求めるために、記憶部３０１に記憶された姿勢データ３５０の一部を間引いて用いたり、統計的な特異点にある姿勢データ３５０を省いて用いたりして計算してもよい。
【００７１】
なお、計算部３０２は、同様にして角加速度と角速度の所定時間分の変化量を計算することもできる。傾きセンサ、加速度センサ、角加速度センサによって測定されるデータは垂直同期割り込みなどの周期的なタイミングで得られるので、傾き、加速度、速度、角加速度、角速度の時間変化は厳密には不連続な点の集合で表されることになるが、図４（ａ）、図５（ａ）と（ｂ）では本発明をより理解しやすくするために変化量の時間変化を連続的に示している。
【００７２】
推定部３０３は、把持モジュール２０１が備える各キーに対するユーザの押下操作が検知されると、計算部３０２によって計算された姿勢データ３５０の変化量から、ユーザの押下操作の強さを推定する。ＣＰＵ  １０１とコントローラ１０５が協働して動作することにより、推定部３０３として機能する。
【００７３】
より詳細には、推定部３０３は、計算部３０２によって計算された姿勢データ３５０の変化量が大きいほど、ユーザの押下操作の強さが大きいと推定する。例えば、推定部３０３は、Ａボタン２０４が押下されたとき、姿勢データ３５０の示す傾きの変化量が大きいほど、Ａボタン２０４が強く押下されたと推定する。言い換えれば、Ａボタン２０４がユーザによって押下されたとき、把持モジュール２０１の振り幅が大きいほど、Ａボタン２０４が強く押下されたと推定する。典型的には、推定部３０３が推定する強さは、姿勢データ３５０の変化量の大きさに対して単調増加する。
【００７４】
例えば図６（ａ）は、姿勢データ３５０（例えば傾き）の変化量と、推定部３０３による推定結果である押下操作情報３７０との対応関係を示す表の一例である。この例では、推定部３０３は、姿勢データ３５０の変化量を４段階に分類し、それぞれの段階に応じて押下の強さを推定している。なお、本図は一例にすぎず、段階数や対応関係は任意であり、また、段階に分けずに変化量の大きさを押下操作の強さと推定してもよい。
【００７５】
また、推定部３０３は、傾きの変化量のほか、計算部３０２によって計算された加速度、速度、角加速度、角速度の変化量が大きくなると、ユーザの押下操作の強さが大きくなるように推定することもできる。推定部３０３は、傾きと加速度の組み合わせなどのように、傾き、加速度、速度、角加速度、角速度のうちの任意のパラメータの組み合わせに基づいて、押下操作の強弱を推定するようにしてもよい。なお、本実施形態では、推定部３０３は、姿勢データ３５０のうち傾きを示すデータを用いて押下の強さを推定するものとする。
【００７６】
把持モジュール２０１が備える各キーのうち、推定部３０３がどのキーの押下操作の強さを推定するかは任意である。本実施形態では、推定部３０３は、Ａボタン２０４の押下の強さを推定するが、十字形キー２０３、Ｂボタン２０５、各種ボタン２０６など他のボタンやキーの押下の強さを推定するようにしてもよい。
【００７７】
なお、推定部３０３は、計算部３０２によって計算された変化量が所定の閾値Ｃｔｈ以上である場合、ユーザの押下操作の強さが所定の最大強度であると推定するようにしてもよい。図７は、計算部３０２により計算された姿勢の変化量と、推定部３０３が推定する押下の強さとの関係を示す概念図である。推定部３０３は、変化量が増加すると押下操作の強さが単調増加し、変化量が所定の閾値Ｃｔｈになると押下操作の強さが最大値Ｓｍａｘであると推定する。このように、推定部３０３が推定する押下の強さに上限を設けてもよい。
【００７８】
推定部３０３は、図６（ａ）に示すように姿勢の変化量を幾つかの範囲に予め区分けしておき、それぞれの範囲ごとに強い・弱いなどの押下操作情報３７０を対応づけてもよいし、図７に示すように任意の変化量に対して一義的に強さが求まるような関数を予め定義しておき、この所定の関数によって得られる強さを示す数値（ただし、０以上最大値Ｓｍａｘ以下）で表される押下操作情報３７０を得てもよい。
【００７９】
判定部３０４は、計算部３０２によって計算された姿勢データ３５０の変化量が所定の閾値Ｃｔｈ以上である場合、ユーザの振り操作がされたと判定する。ＣＰＵ  １０１とコントローラ１０５が協働して動作することにより、判定部３０４として機能する。
【００８０】
より詳細には、判定部３０４は、計算部３０２によって計算された姿勢データ３５０の変化量が所定の閾値Ｃｔｈ以上の場合、ユーザによる振り動作がされたと判定する。一方、姿勢データ３５０の変化量が閾値Ｃｔｈ未満の場合、振り動作がされていないと判定する。例えば図６（ｂ）は、姿勢データ３５０（例えば傾き）の変化量と、判定部３０３による判定結果である振り操作情報３８０との対応関係を示す表の一例である。この例では、判定部３０３は、姿勢データ３５０の変化量を２段階に分類し、それぞれの段階に応じて把持モジュール２０１がユーザによって振られたか否かを判定している。なお、本図は一例にすぎず、段階数や対応関係は任意であり、また、段階に分けずに変化量の大きさを振り操作の強さ（又は振り操作の有無）とみなしてもよい。
【００８１】
あるいは、判定部３０４は、計算部３０２によって計算された姿勢データ３５０の変化量が所定の閾値Ｃｔｈ以上の場合、姿勢データ３５０の変化量に応じて振り操作の強さを判定してもよい。例えば図６（ｃ）は、姿勢データ３５０（例えば傾き）の変化量と振り操作情報３８０との対応関係を示す表の一例である。この例では、判定部３０４は、姿勢データ３５０の変化量を３段階に分類し、それぞれの段階に応じて振り操作の強さを判定している。なお、本図は一例にすぎず、段階数や対応関係は任意であり、また、段階に分けずに変化量の大きさを振り操作の強さ（どれだけ大きく振ったかを示す値）とみなしてもよい。
【００８２】
出力部３０５は、推定部３０３による推定結果、すなわち、ユーザの押下操作の強さを指定する押下操作情報３７０を出力する。例えば、推定部３０３が図６（ａ）に示すように姿勢データ３５０の変化量に応じて押下の強さを推定する場合、出力部３０５は、推定結果である、弱く押された／やや弱く押された／やや強く押された／強く押された、のいずれかを指定する押下操作情報３７０を出力する。出力部３０５は、計算部３０２によって計算された姿勢の変化量を、押下操作の強さを指定する押下操作情報３７０として出力してもよい。
【００８３】
また、出力部３０５は、判定部３０４により姿勢の変化量が閾値Ｃｔｈ以上であると判定された場合（ユーザの振り操作がされたと判定された場合）、計算部３０２によって計算された変化量を振り操作の強さとして指定する振り操作情報３８０をさらに出力する。例えば、判定部３０４が図６（ｂ）に示すように姿勢データ３５０の変化量に応じて把持モジュール２０１が振られたか否かを判定する場合、出力部３０５は、判定結果である、振られていない／振られた、のいずれかを指定する振り操作情報３８０を出力する。出力部３０５は、計算部３０２によって計算された姿勢の変化量を、振り操作の強さを指定する振り操作情報３８０として出力してもよい。
【００８４】
あるいは、判定部３０４が例えば図６（ｂ）に示すように姿勢データ３５０の変化量に応じて振り操作の有無を判定し、振り操作がされたと判定された場合に、出力部３０５が変化量に応じて振り操作の強さを求め、求めた振り操作の強さを示す振り操作情報３８０を出力してもよい。
【００８５】
このように、出力部３０５は、押下操作情報３７０と振り操作情報３８０とをそれぞれ独立して出力することができる。すなわち、出力部３０５は、例えば「強く押され、且つ、振られていない」「強く押され、且つ、振られた」というような情報を出力することもできる。なお、ＣＰＵ  １０１が出力部３０５として機能する。
【００８６】
また、図６（ｄ）と図６（ｅ）に示すように、出力部３０５は、推定部３０３による推定結果と判定部３０４による判定結果とを組み合わせて、押下操作情報３７０又は振り操作情報３８０を出力するようにしてもよい。例えば図６（ｄ）では、出力部３０５は、姿勢データ３５０（例えば傾き）の変化量がＣ２未満であれば「弱く押された」旨の押下操作情報３７０を、Ｃ２以上閾値Ｃｔｈ未満であれば「強く押された」旨の押下操作情報３７０を、閾値Ｃｔｈ以上であれば「振られた」旨の振り操作情報３８０を出力する。また、例えば図６（ｅ）では、出力部３０５は、姿勢データ３５０（例えば傾き）の変化量がＣｔｈ未満であれば押下操作情報３７０を、Ｃｔｈ以上Ｃ４未満であれば「弱く振られた」旨の振り操作情報３８０を、Ｃ４以上であれば「強く振られた」旨の振り操作情報３８０を出力する。このように、出力部３０５は押下操作情報３７０と振り操作情報３８０のどちらか一方を出力するようにしてもよい。なお、本図は一例にすぎず、段階数や対応関係は任意であり、また、段階によって分けずに変化量の大きさを押下操作の強さ又は振り操作の強さとみなしてもよい。
【００８７】
なお、図６（ａ）乃至（ｅ）に示すような対応関係を示す情報は、テーブルやデータベースとして予め記憶部３０１に記憶されており、推定部３０３と判定部３０４はこの対応関係を示す情報を記憶部３０１から随時読み出して推定あるいは判定する。このような対応関係を示すデータを予め記憶した所定のプログラムを実行することで、推定あるいは判定してもよい。ただし、強い・弱いなどのような段階に分けずに、計算部３０２によって計算された姿勢の変化量を押下操作の強さあるいは振り操作の強さとする場合には、記憶部３０１はこのような対応関係を示す情報を予め記憶する必要はない。
【００８８】
（推定・判定処理）
次に、入力装置３００の各部が行う処理について図８のフローチャートを用いて説明する。以下の説明では、一例として、推定部３０３と判定部３０４が、例えば図６（ｅ）に示すような対応関係に基づいて押下の強さを推定したり振り操作の強さを判定したりするものとする。
【００８９】
把持モジュール２０１は、ＣＰＵ  １０１の制御により、垂直同期割り込みなどの定期的なタイミングで把持モジュール２０１の姿勢を検知して、得られた姿勢データ３５０を記憶部３０１に記憶させる。例えば姿勢データ３５０には、把持モジュール２０１の傾き、把持モジュール２０１の移動する加速度、速度を示すデータ、把持モジュール２０１の回転する角加速度、加速度を示すデータなどが含まれる。本実施形態では、記憶部３０１は把持モジュール２０１の傾きを示す姿勢データ３５０を所定時間分だけ記憶して、推定部３０３と判定部３０４はこの傾きを示す姿勢データ３５０の所定時間分の変化量に応じて押下の強さを推定、あるいは振り動作がされたか否かを判定する。ただし、これは一例に過ぎず、把持モジュール２０１の移動する加速度、速度、回転の角加速度、角速度を示す姿勢データ３５０に応じて押下の強さを推定、あるいは振り動作がされたか否かを判定する実施形態を採用してもよい。また、把持モジュール２０１が姿勢を検知するタイミングは任意であるが、コントローラ１０５は所定の定期的な間隔で姿勢を検知することが望ましい。
【００９０】
まず、計算部３０２は、記憶部３０１に記憶された姿勢データ３５０の所定時間分の変化量を計算する（ステップＳ８０１）。例えば、計算部３０２は、記憶部３０１に記憶された所定時間Ｔ１，Ｔ２間の把持モジュール２０１の傾き等の姿勢の差を求めたり、上述の［数１］〜［数４］のような統計的な演算を行って傾き等の姿勢の変化量を求めたりする。
【００９１】
次に、コントローラ１０５は、把持モジュール２０１に配置された各キー（例えばＡボタン２０４）が押下されたか否かを判別する（ステップＳ８０２）。
【００９２】
押下されたと判別された場合（ステップＳ８０２；ＹＥＳ）、推定部３０３は、ステップＳ８０１で計算部３０２が求めた姿勢の変化量が所定の閾値Ｃｔｈ以上か否かを判別する（ステップＳ８０３）。
【００９３】
姿勢の変化量が閾値Ｃｔｈ以上ではないと判別された場合（ステップＳ８０３；ＮＯ）、推定部３０３は、計算部３０２が求めた姿勢の変化量に応じて押下の強さを推定する（ステップＳ８０４）。例えば、推定部３０２は、図６（ｅ）に示すような対応関係に基づいて、求めた変化量に対応する押下の強さを取得する。ただし、計算部３０２が求めた姿勢の変化量を押下の強さとしてもよい。さらに、判定部３０４は、把持モジュール２０１がユーザによって振られていないと判定する（ステップＳ８０５）。
【００９４】
姿勢の変化量が閾値Ｃｔｈ以上であると判別された場合（ステップＳ８０３；ＹＥＳ）、推定部３０３は、ユーザによる押下操作が所定の最大強度であると推定する（ステップＳ８０６）。判定部３０４は、把持モジュール２０１がユーザによって振られたと判定し、さらに、計算部３０２によって計算された姿勢の変化量の大きさに応じて振り操作の大きさを判定する（ステップＳ８０７）。
【００９５】
一方、ステップＳ８０２で、押下されていないと判別された場合（ステップＳ８０２；ＮＯ）、判定部３０４は、計算部３０２によって計算された姿勢の変化量の大きさに応じて、振り操作の大きさを判定する（ステップＳ８０７）。
【００９６】
そして、出力部３０５は、ステップＳ８０４又はＳ８０６で推定された押下の強さを示す押下操作情報３７０と、ステップＳ８０５又はＳ８０７で判定された振り操作の強さ（又は振り操作がされたか否か）を示す振り操作情報３８０とを出力する（ステップＳ８０８）。ここで、出力部３０５は、姿勢の変化量が所定の閾値Ｃｔｈ以上であれば振り操作情報３８０のみを出力し、それ以外であれば押下操作情報３７０のみを出力するようにしてもよい。
【００９７】
なお、ステップＳ８０７で判定部３０４が振り操作がされたか否かを判定し、ステップＳ８０８で出力部３０５が姿勢の変化量に応じた振り操作の強さを求めて出力するようにしてもよい。
【００９８】
また、ステップＳ８０４とＳ８０６で推定部３０３が計算部３０２によって計算された姿勢の変化量を押下の強さとして推定し、ステップＳ８０５とＳ８０７で判定部３０４が姿勢の変化量を振り操作の強さとして判定してもよい。
【００９９】
このように、本実施形態によれば、入力装置３００は、所定時間分の把持モジュール２０１の姿勢の変化量に基づいて、ユーザによる操作ボタン等の押下操作の強さを容易に推定することができる。そして、入力装置３００は、押下の強さを得るための圧力センサといった専用のセンシングデバイスを備える必要はない。また、入力装置３００は、変化量が所定の閾値以上であれば把持モジュール２０１が振られたと判別するので、押下操作の強さを容易に推定できるとともに、振り操作の強さも容易に判定することができる。
【０１００】
例えば、一般的なユーザは、把持モジュール２０１に配置された各キー（例えばＡボタン２０４）を強く押そうとするほど、勢いで把持モジュール２０１を振る（言い換えれば、把持モジュール２０１の姿勢にぶれが生じる）ような動きをしがちな傾向にあるので、本発明を用いれば、把持モジュール２０１の姿勢の経過からユーザが各キーを押すときにどの程度強く押そうとしたのか推定することができる。
【０１０１】
本実施形態では、入力装置３００は、押下操作の強さの推定と振り操作の強さの判定との両方を行っているが、押下操作の強さの推定のみを行うように構成することもできる。この場合、入力装置３００の構成は判定部３０４を省略したものにすることができ、さらに簡易な構成にすることができる。
【０１０２】
（実施例２）
次に、本発明の他の実施形態について説明する。本実施形態は、入力装置３００は把持モジュール２０１のＣＣＤカメラ２０２によって撮影された画像内において発光ダイオード２５２が撮影された位置に基づいて取得される、発光モジュール２５１に対する把持モジュール２０１の位置をさらに用いて推定・判定処理を行う点で、上述の実施形態と異なる。すなわち、上述の推定・判定処理において、推定部３０３と判定部３０４は、姿勢と位置との両方に基づいて、押下の強さを推定し、振り操作の強さを判定してもよい。以下詳述する。
【０１０３】
上述したように、把持モジュール２０１は、把持モジュール２０１の姿勢と、把持モジュール２０１の表面に配置された各キーのユーザによる押下操作とに加えて、把持モジュール２０１の位置を検知する。すなわち、把持モジュール２０１は、姿勢、位置、押下操作を検知するための検知装置である。ＣＰＵ  １０１は検知結果データを取得して記憶部３０１に記憶させる。
【０１０４】
記憶部３０１は、把持モジュール２０１により検知された姿勢と位置の経過を、所定時間分だけ記憶する。例えば、把持モジュール２０１は、垂直同期割り込みなどの定期的なタイミングで把持モジュール２０１の姿勢と位置との両方を検知し、記憶部３０１は所定回数分の測定結果である姿勢データ３５０と位置データ３６０の両方を履歴として記憶する。記憶部３０１は、最新のＮ個分の姿勢データ３５０と位置データ３６０を対応づけて記憶する。
【０１０５】
計算部３０２は、記憶部３０１に記憶される所定時間分の姿勢データ３５０から、この所定時間分の把持モジュール２０１の姿勢の変化量を計算する。さらに、計算部３０２は、記憶部３０１に記憶される所定時間分の位置データ３６０から、この所定時間分の把持モジュール２０１の位置の変化量を計算する。ここで、計算部３０２は、上述した姿勢の変化量を求める手法と同じ手法を用いて位置の変化量を求めることができる。すなわち、計算部３０２は、所定時間分の位置の差や、相加平均、標準偏差、分散、二乗平均平方根などの統計値を計算することにより位置の変化量を求めることができる。
【０１０６】
推定部３０３は、把持モジュール２０１が備える各キーに対するユーザの押下操作が把持モジュール２０１により検知されると、計算部３０２によって計算された姿勢データ３５０の変化量と位置データ３６０の変化量からユーザの押下操作の強さを推定する。例えば、推定部３０３は、図６（ａ）に示すような対応関係を用いて、姿勢データ３５０の変化量に応じてユーザの押下操作の強さを推定する。推定部３０３は、姿勢データ３５０の変化量を押下操作の強さとして推定してもよい。また、推定部３０３は、計算部３０２によって計算された位置データ３６０の変化量が所定の閾値Ｐｔｈ以上である場合、ユーザによる押下操作の強さが所定の最大強度（上限値）であると推定する。
【０１０７】
判定部３０４は、計算部３０２によって計算された姿勢データ３５０の変化量が所定の閾値Ｃｔｈ以上である場合、ユーザの振り操作がされたと判定する。また、計算部３０２によって計算された位置データ３６０の変化量が閾値Ｐｔｈ以上である場合、ユーザの振り操作がされたと判定する。
【０１０８】
出力部３０５は、推定部３０３により推定されたユーザの押下操作の強さを指定する押下操作情報３７０と、判定部３０４により判定されたユーザの振り操作の大きさを指定する振り操作情報３８０を出力する。
【０１０９】
次に、本実施形態の入力装置３００の各部が行う処理について図９のフローチャートを用いて説明する。
【０１１０】
把持モジュール２０１は、ＣＰＵ  １０１の制御により、垂直同期割り込みなどの定期的なタイミングで把持モジュール２０１の姿勢と位置を検知する。ＣＰＵ  １０１は検知結果データを取得して、把持モジュール２０１の姿勢データ３５０と位置データ３６０を記憶部３０１に記憶させる。姿勢データ３５０には、把持モジュール２０１の傾き、把持モジュール２０１の移動する加速度、速度を示すデータ、把持モジュール２０１の回転する角加速度、角速度の全部あるいは一部が含まれる。コントローラ１０５が姿勢と位置を検知するタイミングは任意であるが、把持モジュール２０１は所定の定期的な間隔で姿勢と位置を検知することが望ましい。
【０１１１】
まず、計算部３０２は、記憶部３０１に記憶された姿勢データ３５０（例えば傾き）の所定時間分の変化量を計算する（ステップＳ９０１）。また、計算部３０２は、記憶部３０１に記憶された位置データ３６０の所定時間分の変化量を計算する（ステップＳ９０２）。
【０１１２】
コントローラ１０５は、把持モジュール２０１に配置された各キー（例えばＡボタン２０４）が押下されたか否かを判別する（ステップＳ９０３）。
【０１１３】
押下されたと判別された場合（ステップＳ９０３；ＹＥＳ）、推定部３０３は、ステップＳ９０２で計算部３０２が求めた位置の変化量が所定の閾値Ｐｔｈ以上か否かを判別する（ステップＳ９０４）。
【０１１４】
位置の変化量が閾値Ｐｔｈ以上であると判別された場合（ステップＳ９０４；ＹＥＳ）、推定部３０３は、ユーザによる押下操作が所定の最大強度であると推定する（ステップＳ９０５）。判定部３０４は、把持モジュール２０１がユーザによって振られたと判定し、さらに、計算部３０２によって計算された姿勢の変化量の大きさに応じて振り操作の強さを判定する（ステップＳ９０６）。ここで、判定部３０４は、振り操作の強さを判定する代わりに、姿勢の変化量が所定の閾値Ｃｔｈ以上か否か（すなわち、振り操作がされたか否か）を判定してもよい。
【０１１５】
位置の変化量が閾値Ｐｔｈ未満であると判別された場合（ステップＳ９０４；ＮＯ）、推定部３０３は、ステップＳ９０２で計算部３０２が求めた姿勢の変化量が所定の閾値Ｃｔｈ以上か否かを判別する（ステップＳ９０７）。
【０１１６】
姿勢の変化量が閾値Ｃｔｈ以上であると判別された場合（ステップＳ９０７；ＹＥＳ）、推定部３０３は押下操作の強さが最大強度であると推定し（ステップＳ９０５）、判定部３０４は姿勢の変化量の大きさに応じて振り操作の強さを判定する（ステップＳ９０６）。
【０１１７】
姿勢の変化量が閾値Ｃｔｈ未満であると判別された場合（ステップＳ９０７；ＮＯ）、推定部３０３は、計算部３０２が求めた姿勢の変化量に応じて押下の強さを推定する（ステップＳ９０８）。推定部３０３は、姿勢の変化量を押下操作の強さとして推定してもよい。さらに、判定部３０４は、把持モジュール２０１がユーザによって振られていないと判定する（ステップＳ９０９）。
【０１１８】
一方、ステップＳ９０３で、押下されていないと判別された場合（ステップＳ９０３；ＮＯ）、判定部３０４は、計算部３０２によって計算された姿勢の変化量の大きさに応じて、振り操作の大きさを判定する（ステップＳ９０６）。判別部３０４は、姿勢の変化量を振り操作の強さとして判定してもよい。
【０１１９】
そして、出力部３０５は、ステップＳ９０５又はＳ９０８で推定された押下の強さを示す押下操作情報３７０と、ステップＳ９０６又はＳ９０９で判定された振り操作の強さ（又は振り操作がされたか否か）を示す振り操作情報３８０とを出力する（ステップＳ９１０）。
【０１２０】
このように、本実施形態によれば、入力装置３００は、所定時間分の把持モジュール２０１の姿勢の変化量と位置の変化量とに基づいて、ユーザによる操作ボタン等の押下操作の強さを容易に推定することができる。そして、入力装置３００は、押下の強さを得るための圧力センサといった専用のセンシングデバイスを備える必要はない。また、入力装置３００は、変化量が所定の閾値以上であれば把持モジュール２０１が振られたと判別するので、押下操作の強さを容易に推定できるとともに、振り操作の強さも容易に判定することができる。そして、入力装置３００は、姿勢の変化量と位置の変化量に基づいて、ユーザによる押下操作と振り操作の区別を推測しやすくなる。
【０１２１】
（実施例３）
次に、本発明の他の実施形態について説明する。本実施形態は、把持モジュール２０１が各キーの押下操作を検知してから所定の待ち時間経過後に推定部３０３が押下操作の強さを推定する点で、上述の各実施形態と異なる。すなわち、本実施形態では、推定部３０３によって推定される押下操作の強さは、各キーが押下される前の姿勢（あるいは姿勢と位置の両方）の経過だけでなく、各キーが押下された後の姿勢（あるいは姿勢と位置の両方）の経過も考慮された量になる。以下詳述する。
【０１２２】
記憶部３０１は、上述の実施形態と同様に、把持モジュール２０１により検知された姿勢と位置の経過を、所定時間Ｔｒ分だけ記憶する。
【０１２３】
推定部３０３は、把持モジュール２０１が備える各キーに対するユーザの押下操作が検知されると、所定の待ち時間Ｔｗが経過した後、計算部３０２によって計算された姿勢データ３５０の変化量（あるいは姿勢データ３５０と位置データ３６０の変化量の両方）からユーザの押下操作の強さを推定する。待ち時間Ｔｗの長さは任意に決めることができるが、待ち時間Ｔｗ＜所定時間Ｔｒであることが望ましい。
【０１２４】
なお、入力装置３００のその他の構成は上述の実施形態と同様であるため説明を省略する。
【０１２５】
次に、本実施形態の入力装置３００の各部が行う処理について図１０のフローチャートを用いて説明する。なお、本実施形態は、上述の各実施形態と組み合わせて実施することができるが、ここでは実施例１と組み合わせた形態を例にとって説明する。
【０１２６】
まず、計算部３０２は、記憶部３０１に記憶された姿勢データ３５０の所定時間分の変化量を計算する（ステップＳ１００１）。
【０１２７】
次に、把持モジュール２０１は、把持モジュール２０１上に配置された各キー（例えばＡボタン２０４）が押下されたか否かを判別する（ステップＳ１００２）。
【０１２８】
押下されていないと判別された場合（ステップＳ１００２；ＮＯ）、入力装置３００はステップＳ８０７の処理に進む。なお、ステップＳ８０７以降は上述の実施形態と同様であるため説明を省略する。
【０１２９】
押下されたと判別された場合（ステップＳ１００２；ＹＥＳ）、推定部３０３は、把持モジュール２０１が押下操作を検知してから所定の待ち時間Ｔｗが経過したか否かを判別する（ステップＳ１００３）。待ち時間Ｔｗが経過していない場合（ステップＳ１００３；ＮＯ）、待ち時間Ｔｗが経過するまで待機する（ステップＳ１００３に戻る）。
【０１３０】
待ち時間Ｔｗが経過した場合（ステップＳ１００３；ＹＥＳ）、入力装置３００はステップＳ８０３の処理に進む。なお、ステップＳ８０３以降は上述の実施形態と同様であるため説明を省略する。
【０１３１】
例えば、一般的なユーザは、把持モジュール２０１に配置された各キー（例えばＡボタン２０４）を強く押そうとするほど、勢いで把持モジュール２０１を振る（言い換えれば、把持モジュール２０１の姿勢にぶれが生じる）ような動きをしがちな傾向にあるが、このユーザの動きは、各キーを押す前の事前動作（予備動作）と、押した後の事後動作とに大別できる。本実施形態によれば、推定部３０３は、ユーザの事前動作だけでなく事後動作も考慮した、把持モジュール２０１の姿勢と位置の変化量に基づいて、押し操作の強さを推定できるので、より実情に即した推定を行うことができる。
【０１３２】
（実施例４）
次に、本発明の他の実施形態について説明する。本実施形態は、計算部３０２が姿勢データ３５０（及び位置データ３６０）を複数の時間領域に分けてその領域ごとに変化量を計算する点で、上述の各実施形態と異なる。以下詳述する。
【０１３３】
計算部３０２は、図１１（ａ）に示すように、記憶部３０１に記憶された所定時間分の姿勢データ３５０を所定の２つの時間領域に分ける。例えば、時刻ＴＡで押下操作が行われ、記憶部３０１に記憶された姿勢データ３５０がＮ個（Ｎは１以上の整数）であるとき、最も古く測定された姿勢データ３５０からＭ個分（Ｍは１以上Ｎ以下の整数）を第１の区間ΔＴ１とし、残りを第２の区間ΔＴ２とする。ただし、本実施形態では２つの区間に分けているが、図１１（ｂ）に示すようにＬ個（Ｌは２以上Ｎ以下の整数）の区間に分けてもよい。そして、計算部３０２は、上述した統計的な演算を行って区間ごとに姿勢の変化量を求める。
【０１３４】
推定部３０３は、ユーザによる押下操作が検知されると、計算部３０２によって計算された各区間の姿勢の変化量に基づいて押下操作の強さを推定する。
【０１３５】
図１２は、ユーザが把持モジュール２０１を握っている様子を真横から見たときの図である。ボタン１２０１は任意の操作ボタン・操作キーであり、矢印Ｙ１方向に押下できるものとする。ユーザがボタン１２０１をＹ１方向に押下すると、事前動作（予備動作）もしくは事後動作（勢い）で傾き１２０２が矢印Ｙ１方向又は矢印Ｙ２方向に変化する（姿勢がぶれる）。典型的には、ユーザは、ボタン１２０１を強く押そうとするほど、把持モジュール２０１を一旦矢印Ｙ２方向に引いてから（予備動作）、勢いをつけて矢印Ｙ１方向に振りつつボタン１２０１を押下することが多い。
【０１３６】
そこで、推定部３０３は、ボタン１２０１を押下する方向Ｙ１の姿勢の変化量と、その逆方向Ｙ２の姿勢の変化量とに基づいて、押下の強さを推定する。例えば、推定部３０３は、第１の区間ΔＴ１が予備動作にあたる区間であるとみなし、第１の区間ΔＴ１における姿勢の変化量と、第２の区間ΔＴ２における姿勢の変化量とに基づいて、押下の強さを推定する。
【０１３７】
具体的には、上述のステップＳ８０４で、推定部３０３は、予備動作にあたる第１の区間ΔＴ１での傾きの変化の向きを考慮した変化量（すなわちベクトル量）と、その後の動作にあたる第２の区間ΔＴ２での変化の向きを考慮した変化量との差が大きいほど、強く押下されたと推定する。
【０１３８】
あるいは、上述のステップＳ８０４で、推定部３０３は、予備動作にあたる第１の区間ΔＴ１での傾きの変化量と、第２の区間ΔＴ２での傾きの変化量との比を求めて、第１の区間ΔＴ１での傾きの変化量の比率が大きいほど、強く押されたと推定する。
【０１３９】
なお、推定部３０３は、傾きの変化量だけでなく、移動の加速度や速度、回転の角加速度や角速度の変化量を区間ごとに求めて、同様に押下の強さを推定することもできる。
【０１４０】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１４１】
上述の各実施形態では、把持モジュール２０１は傾きセンサ、加速度センサ、角加速度センサを備えているが、これらのうちの一部のみを備え、推定部３０３は傾き、加速度（あるいは速度）、角加速度（あるいは角速度）の変化量のうちの一部のみを用いて押し操作の強さを推定してもよい。把持モジュール２０１やコントローラ１０５全体の形状等は本発明によって限定されないことは言うまでもない。
【０１４２】
上述の各実施形態は、様々なゲームにおける入力デバイスに適用することができる。例えば、仮想空間内のシューティングゲームにおいて、本発明の入力装置３００の構成を含むゲーム装置は、計算部３０２によって計算された姿勢や位置の変化量に応じて各キーの押下操作の強さを推定し、推定結果に応じて銃・ミサイル・ビームなどのパワーを調節することができる。
【０１４３】
例えば、把持モジュール２０１をドラムのような楽器を演奏するときのバチに見立てて、ユーザが把持モジュール２０１を振ったり所定ボタンを押したりすることによって楽器を演奏するゲームにおいて、計算部３０２によって計算された姿勢や位置の変化量に応じて各キーの押下操作の強さを推定し、推定結果に応じて楽器の音量を調節する。また、姿勢や位置の変化量が所定量以上であれば、把持モジュール２０１が振られたと判定し、ドラムをたたくバチの振りアクションとみなす。
【０１４４】
入力装置３００を装置の全部又は一部として動作させるためのプログラムを、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１４５】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１４６】
以上説明したように、本発明によれば、ユーザによる押下操作の強さを推定するために好適な入力装置、入力制御方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【０１４７】
【図１】本発明のゲーム装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図２】本実施形態にて利用されるコントローラと情報処理装置の外観を示す説明図である。
【図３】入力装置の各部が行う処理を説明するための構成図である。
【図４】（ａ）傾きを示す姿勢データの時間変化の例を示す図である。（ｂ）と（ｃ）は把持モジュールの姿勢の例を示す図である。
【図５】（ａ）加速度を示す姿勢データの時間変化の例を示す図である。（ｂ）速度を示す姿勢データの時間変化の例を示す図である。
【図６】（ａ）押下操作情報の構成例を示す図である。（ｂ）と（ｃ）は振り操作情報の構成例を示す図である。（ｄ）と（ｅ）は押下操作情報と振り操作情報を組み合わせた出力結果の構成例を示す図である。
【図７】姿勢の変化量と、推定される押下の強さとの関係を示す概念図である。
【図８】実施例１の入力装置の各部が行う処理を説明するためのフローチャートである。
【図９】実施例２の入力装置の各部が行う処理を説明するためのフローチャートである。
【図１０】実施例３の入力装置の各部が行う処理を説明するためのフローチャートである。
【図１１】（ａ）と（ｂ）は所定の区間に分けた姿勢データの時間変化の例を示す図である。
【図１２】把持モジュールの姿勢の例を示す図である。
【符号の説明】
【０１４８】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  把持モジュール
２０２  ＣＣＤカメラ
２０３  十字形キー
２０４  Ａボタン
２０５  Ｂボタン
２０６  各種ボタン
２０７  インジケータ
２０８  電源ボタン
２５１  発光モジュール
２５２  発光ダイオード
２９１  テレビジョン装置
３００  入力装置
３０１  記憶部
３０２  計算部
３０３  推定部
３０４  判定部
３０５  出力部
３５０  姿勢データ
３６０  位置データ
３７０  押下操作情報
３８０  振り操作情報
【図１】
2008212339.tif 000003
【図２】
2008212339.tif 000004
【図３】
2008212339.tif 000005
【図４】
2008212339.tif 000006
【図５】
2008212339.tif 000007
【図６】
2008212339.tif 000008
【図７】
2008212339.tif 000009
【図８】
2008212339.tif 000010
【図９】
2008212339.tif 000011
【図１０】
2008212339.tif 000012
【図１１】
2008212339.tif 000013
【図１２】
2008212339.tif 000014
【手続補正書】
【提出日】平成20年4月10日(2008.4.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザによって把持される検知装置であって、当該検知装置の姿勢と、当該ユーザの押下操作と、を検知する検知装置と、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部と、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部と、
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部と、
前記推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力部と、
前記計算された変化量が所定の閾値以上である場合、当該ユーザの振り操作がされたと判定する判定部と、
を備え、
前記判定部により当該ユーザの振り操作がされたと判定された場合、前記出力部は、前記計算された変化量を当該振り操作の強さとして指定する振り操作情報をさらに出力する
ことを特徴とする入力装置。
【請求項２】
請求項１に記載の入力装置であって、
前記推定部は、前記計算された変化量が大きいほど、当該ユーザの押下操作の強さが大きいと推定する
ことを特徴とする入力装置。
【請求項３】
請求項１に記載の入力装置であって、
前記推定部は、前記計算された変化量が当該所定の閾値以上である場合、当該ユーザの押下操作の強さが所定の最大強度であると推定する
ことを特徴とする入力装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の入力装置であって、
前記推定部は、前記検知装置により当該ユーザによる押下操作が検知されてから所定の待ち時間経過後に前記計算部により計算された変化量から、当該ユーザの押下操作の強さを推定する
ことを特徴とする入力装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の入力装置であって、
前記検知装置は、当該検知装置の位置をさらに検知し、
前記記憶部は、前記検知装置により検知された姿勢の経過と対応づけて、前記検知装置により検知された位置の経過を所定時間分だけさらに記憶し、
前記計算部は、前記記憶部に記憶される位置の経過から当該所定時間分の位置の変化量をさらに計算し、
前記推定部は、前記計算された姿勢の変化量と位置の変化量から、当該ユーザの押下操作の強さを推定する
ことを特徴とする入力装置。
【請求項６】
記憶部、検知装置、計算部、推定部、出力部を有する入力装置にて実行される入力制御方法であって、
前記記憶部は、前記検知装置により検知された姿勢の経過を所定時間分だけ記憶し、
ユーザによって把持される前記検知装置が、前記検知装置の姿勢と、当該ユーザによる押下操作と、を検知する検知ステップと、
前記計算部が、前記記憶部に記憶される姿勢の経過から、当該所定時間分の姿勢の変化量を計算する計算ステップと、
前記推定部が、前記計算された変化量から当該ユーザの押下操作の強さを推定する推定ステップと、
前記出力部が、前記推定ステップにより推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力ステップと、
前記計算された変化量が所定の閾値以上である場合、当該ユーザの振り操作がされたと判定する判定ステップと、
を備え、
前記判定ステップにより当該ユーザの振り操作がされたと判定された場合、前記出力ステップは、前記計算された変化量を当該振り操作の強さとして指定する振り操作情報をさらに出力する
ことを特徴とする入力制御方法。
【請求項７】
ユーザによって把持される検知装置であって当該検知装置の姿勢と当該ユーザによる押下操作とを検知する検知装置を備えるコンピュータを、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部、
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部、
前記推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を出力する出力部、
前記計算された変化量が所定の閾値以上である場合、当該ユーザの振り操作がされたと判定する判定部、
として機能させ、
前記判定部により当該ユーザの振り操作がされたと判定された場合、前記出力部は、前記計算された変化量を当該振り操作の強さとして指定する振り操作情報をさらに出力する
ことを特徴とするプログラム。