以下、本発明の実施の形態を図面を参照しながら説明する。
図1は、本発明の一実施の形態に係る制御システムを示す図である。制御システム100は、表示装置5、制御装置40及び入力装置1を含む。
図2は、入力装置1を示す斜視図である。入力装置1は、ユーザが持つことができる程度の大きさとされる。入力装置1は、筐体10を備えている。また、入力装置1は、筐体10の上部中央に設けられたボタン11、このボタン11に隣接するボタン12、回転式のホイールボタン13などの操作部23(図6参照)を有する。
ボタン11、12は、典型的には押圧タイプのボタンであり、プッシュボタンあるいは静電容量式のタッチボタンが用いられる。操作部23は、押圧タイプのボタンに限られず、一端を支点として操作されるスティックタイプの操作部23、スライドタイプの操作部23が用いられてもよい。
ボタン11は、例えばPCで用いられる入力デバイスとしてのマウスの左ボタンに相当する機能を有し、ボタン11に隣接するボタン12はマウスの右ボタンに相当する機能を有する。例えば、ボタン11のクリックにより、アイコン4(図5参照)を選択する操作、ボタン11のダブルクリックによりファイルを開く操作が行われるようにしてもよい。アイコンとは、コンピュータ上のプログラムの機能、実行コマンド、またはファイルの内容等が画面3上で画像化されたものである。
図3は、入力装置1の内部の構成を模式的に示す図である。図4は、入力装置1の電気的な構成を示すブロック図である。
入力装置1は、センサユニット17、制御ユニット30、バッテリー14を備えている。
図8は、センサユニット17を示す斜視図である。センサユニット17は、筐体10の動き、つまり入力装置1の動きを検出するセンサである。センサユニット17は、互いに異なる角度、例えば直交する2軸(X軸及びY軸)に沿った加速度を検出する加速度センサユニット16を有する。すなわち、加速度センサユニット16は、第1の加速度センサ161、及び第2の加速度センサ162の2つセンサを含む。
また、センサユニット17は、その直交する2軸の周りの角加速度を検出する角速度センサユニット15を有する。すなわち、角速度センサユニット15は、第1の角速度センサ151、及び第2の角速度センサ152の2つのセンサを含む。これらの加速度センサユニット16及び角速度センサユニット15はパッケージングされ、回路基板25上に搭載されている。
第1、第2の角速度センサ151、152としては、角速度に比例したコリオリ力を検出する振動型のジャイロセンサが用いられる。第1、第2の加速度センサ161、162としては、ピエゾ抵抗型、圧電型、静電容量型等、どのようなタイプのセンサであってもよい。角速度センサ151または152としては、振動型ジャイロセンサに限られず、回転コマジャイロセンサ、レーザリングジャイロセンサ、あるいはガスレートジャイロセンサ等が用いられてもよい。
図2及び図3の説明では、便宜上、筐体10の長手方向をZ’方向とし、筐体10の厚さ方向をX’方向とし、筐体10の幅方向をY’方向とする。この場合、上記センサユニット17は、回路基板25の、加速度センサユニット16及び角速度センサユニット15を搭載する面がX’−Y’平面に実質的に平行となるように、筐体10に内蔵され、上記したように、両センサユニット16、15はX軸及びY軸の2軸に関する物理量を検出する。また、以降の説明では、入力装置1の動きに関し、X’軸の周りの回転の方向をピッチ方向、Y’軸の周りの回転の方向をヨー方向といい、Z’軸(ロール軸)の周りの回転の方向をロール方向という場合もある。
制御ユニット30は、メイン基板18、メイン基板18上にマウントされたMPU19(Micro Processing Unit)(あるいはCPU)、水晶発振器20、送信機21、メイン基板18上にプリントされたアンテナ22を含む。
MPU19は、必要な揮発性及び不揮発性メモリを内蔵している。MPU19には、センサユニット17による検出信号、操作部23による操作信号等が入力され、MPU19は、これらの入力信号に応じた所定の制御信号(コマンド)を生成するため、各種の演算処理等を行う。上記メモリは、MPU19とは別体で設けられていてもよい。
このMPU19は、典型的には、制御信号として、センサユニット17により検出された検出信号に応じた移動コマンド、及び操作部から出力された操作信号に応じた操作コマンドを生成する。操作部23から出力された操作信号は、入力装置1(筐体10)の動きによる信号であるセンサユニット17の検出信号以外の入力信号、すなわち筐体10の動きによらない操作信号である。
典型的には、センサユニット17はアナログ信号を出力するものである。この場合、MPU19は、A/D(Analog/Digital)コンバータを含む。しかし、センサユニット17がA/Dコンバータを含むユニットであってもよい。
送信機21は、MPU19で生成された制御信号をRF無線信号として、アンテナ22を介して制御装置40に送信する。
水晶発振器20は、クロックを生成し、これをMPU19に供給する。バッテリー14としては、乾電池または充電式電池等が用いられる。
制御装置40はコンピュータであり、MPU35(あるいはCPU)、RAM36、ROM37、ビデオRAM41、アンテナ39及び受信機38等を含む。
受信機38は、入力装置1から送信された制御信号を、アンテナ39を介して受信する。MPU35は、その制御信号を解析し、各種の演算処理を行う。表示制御部42は、MPU35の制御に応じて、主に、表示装置5の画面3上に表示するための画面データを生成する。ビデオRAM41は、表示制御部42の作業領域となり、生成された画面データを一時的に格納する。
制御装置40は、入力装置1に専用の機器であってもよいが、PC等であってもよい。制御装置40は、PCに限られず、表示装置5と一体となったコンピュータであってもよいし、オーディオ/ビジュアル機器、プロジェクタ、ゲーム機器、またはカーナビゲーション機器等であってもよい。
表示装置5は、例えば液晶ディスプレイ、EL(Electro-Luminescence)ディスプレイ等が挙げられるが、これらに限られない。あるいは、表示装置5は、テレビジョン放送等を受信できるディスプレイと一体となった装置でもよい。
図5は、表示装置5に表示される画面3の例を示す図である。画面3上には、アイコン4やポインタ2等のUIが表示されている。なお、画面3上の水平方向をX軸方向とし、垂直方向をY軸方向とする。以降の説明の理解を容易にするため、特に明示がない限り、入力装置1で操作される対象となるUIがポインタ2(いわゆるカーソル)であるとして説明する。
図6は、ユーザが入力装置1を握った様子を示す図である。図6に示すように、入力装置1は、操作部23として、上記ボタン11、12、13のほか、例えばテレビ等を操作するリモートコントローラに設けられるような各種の操作ボタン29や電源スイッチ28等を備えていてもよい。このようにユーザが入力装置1を握った状態で、入力装置1を空中で移動させ、あるいは操作部23を操作することにより発生する制御信号が制御装置40に出力され、制御装置40によりUIが制御される。
次に、入力装置1の動かし方及びこれによる画面3上のポインタ2の動きの典型的な例を説明する。図7はその説明図である。以降の説明では、絶対的な座標系をX軸、Y軸及びZ軸で表す。一方、入力装置1と一体的に動く座標系(入力装置1の座標系)をX’軸、Y’軸及びZ’軸で表す。
図7(A)、(B)に示すように、ユーザが入力装置1を握った状態で、入力装置1のボタン11、12が配置されている側を表示装置5側に向ける。ユーザは、親指を上にし子指を下にした状態、いわば握手する状態で入力装置1を握る。この状態で、センサユニット17の回路基板25(図8参照)は、表示装置5の画面3に対して平行に近くなり、センサユニット17の検出軸である2軸が、画面3上の水平軸(X軸)及び垂直軸(Y軸)に対応するようになる。以下、このような図7(A)、(B)に示す入力装置1の姿勢を基本姿勢という。
図7(A)に示すように、基本姿勢の状態で、ユーザが手首や腕を上下方向に動かすかまたはX軸の周りで回転させる。このとき、第2の加速度センサ162は、ピッチ方向の加速度ay(第2の加速度)を検出し、第2の角速度センサ152は、X軸の周りの角速度ω θ (第2の角速度)を検出する。これらの検出値に基き、制御装置40は、ポインタ2がY軸方向に移動するようにそのポインタ2の表示を制御する。
一方、図7(B)に示すように、基本姿勢の状態で、ユーザが手首や腕を左右方向に動かすかまたはY軸の周りで回転させる。このとき、第1の加速度センサ161は、ヨー方向の加速度ax(第1の加速度)を検出し、第1の角速度センサ151は、Y軸の周りの角速度ωψ(第1の角速度)を検出する。これらの検出値に基き、制御装置40は、ポインタ2がX軸方向に移動するようにそのポインタ2の表示を制御する。
後で詳述するが、一実施の形態では、入力装置1のMPU19が、内部の不揮発性メモリに格納されたプログラムに従い、センサユニット17で検出された各検出値に基きヨー及びピッチ方向の速度値を算出する。ここで、ポインタ2の移動の制御のためには、加速度センサユニット16が検出する2軸の加速度値の積分値(速度)のディメンジョンが用いられる。そして、この速度のディメンジョンの情報が移動コマンドの信号として制御装置40に送られる(図11参照)。
他の実施の形態では、入力装置1は、センサユニット17で検出された物理量のディメンジョンの情報が移動コマンドの信号として制御装置40に送られる。この場合、制御装置40のMPU35は、ROM37に格納されたプログラムに従い、受信した移動コマンドに基きヨー及びピッチ方向の速度値を算出する。表示制御部42は、この速度値に応じてポインタ2を移動させるように表示する(図14参照)。
制御装置40は、入力装置1の単位時間当りのヨー方向の変位を、画面3上のX軸上でのポインタ2の変位量に変換し、入力装置1の単位時間当りのピッチ方向の変位を、画面3上のY軸上でのポインタ2の変位量に変換することにより、ポインタ2を移動させる。典型的には、例えば図11に示す例では、制御装置40のMPU35は、所定のクロック数ごとに供給されてくる速度値について、(n−1)回目に供給された速度値に、n回目に供給された速度値を加算する。これにより、当該n回目に供給された速度値が、ポインタ2の変位量に相当し、ポインタ2の画面3上の座標情報が生成される。
上記速度値を算出するときの、加速度値の積分についても、この変位量の算出方法と同様とすればよい。
次に、加速度センサユニット16への重力の影響について説明する。図9及び図10は、その説明のための図である。図9は、入力装置1をZ方向で見た図であり、図10は、入力装置1をX方向で見た図である。
図9(A)では、入力装置1が基本姿勢とされ、静止しているとする。このとき、第1の加速度センサ161の出力は実質的に0であり、第2の加速度センサ162の出力は、重力加速度G分の出力とされている。しかし、例えば図9(B)に示すように、入力装置1がロール方向に傾いた状態では、第1、第2の加速度センサ161、162は、重力加速度Gのそれぞれの傾き成分の加速度値を検出する。
この場合、特に、入力装置1が実際にヨー方向には動いていないにも関わらず、第1の加速度センサ161はヨー方向の加速度を検出することになる。この図9(B)に示す状態は、図9(C)のように入力装置1が基本姿勢にあるときに、加速度センサユニット16が破線の矢印で示すような慣性力Ix、Iyを受けた状態と等価であり、加速度センサユニット16にとって区別が付かない。その結果、加速度センサユニット16は、矢印Fで示すような左に斜め下方向の加速度が入力装置1に加わったと判断し、入力装置1の実際の動きとは違った検出信号を出力する。しかも、重力加速度Gは常に加速度センサユニット16に作用するため、積分値は増大し、ポインタ2を斜め下方に変位させる量は加速度的に増大してしまう。図9(A)から図9(B)に状態が移行した場合、本来、画面3上のポインタ2が動かないようにすることが、ユーザの直感に合った操作と言える。
例えば、図10(A)に示すような入力装置1の基本姿勢の状態から、図10(B)に示すような、入力装置1がピッチ方向で回転して傾いたときも、上記と同様のことが言える。このような場合、入力装置1が基本姿勢にあるときの第2の加速度センサ162が検出する重力加速度Gが減少するので、図10(C)に示すように、入力装置1は、上のピッチ方向の慣性力Iと区別が付かない。
以上のような加速度センサユニット16への重力の影響を極力減らすために、本実施の形態に係る入力装置1は、角速度センサユニット15で検出された角速度値を用いて、入力装置1の速度値を算出する。以下、この動作について説明する。図11は、その動作を示すフローチャートである。
入力装置1に電源が投入される。例えば、ユーザが入力装置1または制御装置40に設けられた電源スイッチ等を入れることにより、入力装置1に電源が投入される。電源が投入されると、加速度センサユニット16から2軸の加速度信号(第1、第2の加速度値ax、ay)が出力され(ステップ101a)、これがMPU19に供給される。この加速度信号は、電源が投入された時点での入力装置1の姿勢(以下、初期姿勢という)に対応する信号である。
初期姿勢は、上記基本姿勢になることも考えられる。しかし、X軸方向に重力加速度のすべての量が検出される姿勢、すなわち第1の加速度センサ161の出力が重力加速度分の加速度値を検出し、第2の加速度センサ162の出力が0である場合もある。もちろん初期姿勢は、図9(B)に示したように傾いた姿勢であることも考えられる。
入力装置1のMPU19は、所定のクロック数ごとにこの加速度センサユニット16からの加速度信号(ax、ay)を取得する。MPU19は、2回目以降の加速度信号(ax、ay)を取得すると、重力の影響を除去するために、次のような演算を行う。すなわちMPU19は、下記の式(1)、(2)のように、今回の加速度値ax、ayから、前回のそれぞれX軸及びY軸方向で検出された重力加速度成分(1回目のax(=arefx)、ay(=arefy))を差し引き、それぞれ第1の補正加速度値acorx、第2の補正加速度値acoryを生成する(ステップ102a)。
acorx =ax−arefx・・・(1)
acory =ay−arefy・・・(2)。
arefx、arefyを、以降、それぞれX軸及びY軸の基準加速度値(第1の基準加速度値、第2の基準加速度値)という。電源が投入されてから最初にステップ102aの計算をするとき、arefx、arefyは電源投入直後に検出された加速度信号ax、ayとなる。
MPU19は、式(3)、(4)に示すように、第1、第2の補正加速度値acorx、acoryを加算していく、つまり積分演算により、それぞれ第1の速度値Vx、第2の速度値Vyを算出する(ステップ115)。
Vx(t) =Vx(t-1)+acorx・・・(3)
Vy(t) =Vy(t-1)+acory・・・(4)
Vx(t)、Vy(t)は今回の速度値を表し、Vx(t-1)、Vy(t-1)は前回の速度値を表している。
一方、上記したように、入力装置1に電源が投入されると、角速度センサユニット15から2軸の角速度信号(第1及び第2の角速度値(ωψ、ωθ)が出力され(ステップ101b)、これがMPU19に供給される。MPU19は、これを取得すると、微分演算により、それぞれの角加速度値(第1の角加速度値Δω ψ 、第2の角加速度値Δω θ )を算出する(ステップ102b)。
MPU19は、上記Δω ψ 、Δω θ の絶対値|Δω ψ |、|Δω θ |がそれぞれ閾値Th1より小さいか否かを判定する(ステップ103、ステップ106)。|Δω ψ |≧Th1の場合、MPU19は、第1の基準加速度値arefxをそのまま用い、これを更新しない(ステップ104)。同様に、|Δω θ |≧Th1の場合、MPU19は、第2の基準加速度値arefyをそのまま用い、これを更新しない(ステップ107)。
閾値Th1は、0に近い値が設定される。閾値Th1は、ユーザが意識的に入力装置1を静止させているにも関わらず、ユーザの手ぶれやDCオフセットや等により検出されてしまう角速度値が考慮される。こうすることで、ユーザが意識的に入力装置1を静止させた場合に、当該手ぶれやDCオフセットによりポインタ2が動いて表示されてしまうことを防止できる。
以上のように処理するのは以下の理由による。
図12は、入力装置1を操作するユーザを上から見た図である。ユーザが自然に入力装置1を操作する場合、腕の付け根の回転、肘の回転及び手首の回転のうち少なくとも1つによって操作する。したがって、加速度が発生すれば、角加速度も発生すると考える。すなわち、加速度は、その加速度の方向と同じ方向の角加速度に従属するものとみなすことができる。したがって、MPU19は、第1の角加速度値の絶対値|Δω ψ |を監視することで、それと同じ方向である第1の基準加速度値arefxを更新するか否かを判定し、式(1)から結果的に第1の補正加速度値acorxを校正するか否かを判定することができる。第2の角加速度値の絶対値|Δω θ |についても同様である。
さらに詳しく説明すると、第1の角加速度値の絶対値|Δω ψ |が閾値Th1以上であるときは、MPU19は、入力装置1がヨー方向に動いていると判定する。この場合、MPU19は、第1の基準加速度値arefxを更新せず、結果的に、第1の補正加速度値acorxを校正せず、そのacorxに基き、式(3)の積分演算を続ける。
また、第2の角加速度値の絶対値|Δω θ |が閾値Th1以上であるときは、MPU19は、入力装置1がピッチ方向に動いていると判定する。この場合、MPU19は、第2の基準加速度値arefyを更新せず、結果的に、第2の補正加速度値acoryを校正せず、そのacoryに基き、式(4)の積分演算を続ける。
一方、ステップ103において、第1の角加速度値の絶対値|Δω ψ |が閾値Th1より小さいときは、MPU19は、入力装置1がヨー方向では静止していると判定する。この場合、MPU19は、第1の基準加速度値arefxを今回の(最新の)検出値axに更新することで、式(1)により、第1の補正加速度値acorxを校正する(ステップ105)。最新の検出値axとは、つまり、入力装置1がほぼ静止している状態での検出値であるので、これは重力加速度による成分値となる。
同様に、ステップ106において、第2の角加速度値の絶対値|Δω θ |が閾値Th1より小さいときは、MPU19は、入力装置1がピッチ方向では静止していると判定する。この場合、MPU19は、第2の基準加速度値arefyを今回の(最新の)検出値ayに更新することで、式(2)により、第2の補正加速度値acoryを校正する(ステップ108)。
なお、本実施の形態では、ヨー方向及びピッチ方向の両方向について閾値を同じ値Th1としたが、両方向で異なる閾値が用いられてもよい。
上記では、角加速度値Δωψ、Δωθが監視されたが、さらにMPU19は、角速度値ωψ、ωθを監視することで、式(3)、(4)で算出された速度値を補正することも可能である。図12の考え方により、速度が発生すれば、角速度も発生すると考え、速度は、その速度の方向と同じ方向の角速度に従属するものとみなすことができる。
詳しくは、第1の角速度値の絶対値|ω ψ |が閾値Th2以上であるときは(ステップ109のNO)、MPU19は、入力装置1がヨー方向に動いていると判定する。この場合、MPU19は、第1の速度値Vxを補正しない(ステップ110)。第2の角速度値の絶対値|ω θ |についても同様である(ステップ112のNO、ステップ113)。
閾値Th2も、上記閾値Th1の設定とどうような趣旨で設定されればよい。
一方、第1の角速度値の絶対値|ω ψ |が閾値Th2より小さいときは(ステップ109のYES)、MPU19は、入力装置1がヨー方向では静止していると判定する。この場合、MPU19は、第1の速度値Vxを補正し、例えばゼロにリセットされる(ステップ111)。第2の角速度値の絶対値|ω θ |についても同様である(ステップ112のYES、ステップ114)。
以上のようにMPU19は、両方向の速度値Vx、Vyを出力し、送信機21はこの速度値に関する入力情報を制御装置40に出力する(ステップ116)。
制御装置40のMPU35は、入力情報である速度値Vx、Vyを入力する(ステップ117)。MPU35は、下記の式(5)、(6)に示す、速度値Vx、Vyに応じた、ポインタ2の座標値X、Yを生成する(ステップ118)。表示制御部42は、画面3上の座標値X、Yの位置にポインタ2が移動するように表示を制御する(ステップ119)。
X(t) =X(t-1)+Vx・・・(5)
Y(t) =Y(t-1)+Vy・・・(6)。
以上のように、入力装置1がほぼ静止したときには基準加速度値arefx、arefyが更新され、補正加速度値acorx、acoryが校正されるので、加速度センサユニット16への重力の影響を抑えることができる。また、基準加速度値arefx、arefyが更新されると、式(1)、(2)より補正加速度値acorx、acoryが補正されるため、DCレベルも補正され、DCオフセットの問題も解決される。さらに、入力装置1がほぼ静止したときには速度値もゼロリセットされるように補正されるので、積分誤差も抑えることができる。積分誤差が発生すると、ユーザが入力装置1の移動を停止させたにも関わらず、ポインタ2が画面3上で動く現象が起こる。
また、本実施の形態では、第1の基準加速度値arefx及び第2の基準加速度値arefyの更新が個別に行われることにより、例えばヨー及びピッチ方向のうち一方の角加速度値のみが閾値より小さくなれば、その校正が行われることになる。したがって、実用的に十分短い時間間隔で、第1の基準加速度値arefxまたは第2の基準加速度値arefyを更新することができる。第1の速度値Vx及び第2の速度値Vyの補正が個別に行われることについても同様のことが言える。図13は、このことをわかりやすく説明するための図である。
図13では、X軸及びY軸の平面で見た入力装置1の軌跡を示している。ヨー方向での角速度値ω ψ がほぼゼロ(閾値Th2より小さい)であれば、Vxがゼロリセットされる。ピッチ方向での角速度値ω θ がほぼゼロ(閾値Th2より小さい)であれば、Vyがゼロリセットされる。
図14は、上記した他の実施の形態を示すフローチャートである。このフローチャートでは、入力装置1がセンサユニット17から出力された2軸の加速度信号及び2軸の角速度信号を入力情報として制御装置40に出力する。制御装置40のMPU35は、ステップ204〜218において、図11で示したステップ102a及び102b〜115を実行する。詳細は、図11と同様であるので説明を省略する。
次に、ユーザが入力装置1の操作部23を操作した場合の動作についての一実施の形態を説明する。図15は、その動作を示すフローチャートである。図15では、操作部23のうちボタン11が操作されることで、入力装置1は例えばPCのマウスに相当するクリック、ダブルクリック、ドラッグ等の操作コマンドを生成する場合を例に挙げて説明する。
図16は、図15に示す動作を実現するための入力装置1の機能的なブロック図である。分周器44は、水晶発振器20から供給されるパルスに基き所定の周波数のクロックパルスを生成する。カウンタ45は分周器44で生成されたクロックパルスをカウントする。カウント値設定部46では、例えば所定数のカウント値が設定されそのカウント値を記憶する。制御部47は、カウンタから供給されるカウント値とカウント値設定部46から供給されるカウント値とを比較し、比較の結果に基き後述する処理を実行する。
分周器44、カウンタ45、カウント値設定部46、制御部47等のブロックは、例えばMPU19が有している。
カウント値設定部46で設定されるカウント値としては、例えば2つの種類がある。1つは、ユーザによりボタン11が押されてから、つまり操作信号の入力が開始されてからの時間であって、MPU19が画面3上でポインタ2を動かすための移動コマンドの生成または送信を停止している時間(入力後規制時間)に相当するカウント値である。
もう1つは、ユーザにより押されたボタン11が離されてから、つまり操作信号の入力が解除されてからの時間であって、MPU19が移動コマンドの生成または送信を停止している時間(解除後規制時間)に相当するカウント値である。以下、解除後規制時間に相当するカウント値を第1のカウント値とし、上記入力後規制時間に相当するカウント値を第2のカウント値とする。
解除後規制時間と入力後規制時間は同じであってもよいし、異なっていてもよい。典型的には解除後規制時間及び入力後規制時間は、0.2秒であるが、これに限られない。解除後規制時間及び入力後規制時間のうち少なくとも一方は、ユーザによりカスタマイズできるようになっていてもよい。このユーザによるカスタマイズを実現するために、入力装置1に、例えばディップスイッチや可変抵抗が設けられていてもよい。また、ユーザが入力装置1を用いて、画面3上のGUIを操作することでカスタマイズできるようになっていてもよい。このように、解除後規制時間、または、入力後規制時間がカスタマイズできることで、ユーザは自己の操作感に合った解除後規制時間、または入力後規制時間を任意に設定することができる。
MPU19は、移動コマンドの生成または送信を停止する代わりに、画面3上でのポインタ2の変位量をゼロとする移動コマンド、すなわち速度値(Vx(t), Vy(t)) = (0,0)にリセットされた移動コマンドの信号を出力してもよい。
なお、一般的にPCでは、マウスのボタンを介してユーザにより入力された操作信号の入力が解除されること、つまり押されたボタンが離されたことをトリガーとして、その操作のコマンドが実行されることが多い。
図15に示すように、ユーザによりボタン11が押された場合(ステップ301のYES)、制御部47はタイマーをオンとし(ステップ302)、カウンタ45によるカウントアップを開始する。そうすると、MPU19は移動コマンドの出力を停止させる(ステップ303)。あるいは、MPU19は入力後規制時間内でポインタ2の変位量をゼロとする移動コマンドを出力し続けるようにする。
制御部47は、カウント値設定部46で設定された第2のカウント値とカウンタ45から供給されるカウント値とを比較する(ステップ304)。つまり、両カウント値が一致すれば入力後規制時間が終了するので、制御部47はタイマーを終了する。両カウント値が異なれば制御部47はタイマーを作動し続け、次のステップ305に進む。ステップ305では、MPU19は、押されたボタン11が離されたか否か、つまり操作信号の入力が解除されたか否かを監視する。押されたボタン11が離されていない場合、MPU19は、カウント値を1インクリメントし(ステップ306)、ステップ303に戻る。
このように、MPU19は、タイマーを作動し続けている間、つまりカウンタ45から供給されるカウント値が第2のカウント値が一致するまでは、移動コマンドの生成または送信を停止する。あるいは、上記したようにMPU19は画面3上でのポインタ2の変位量をゼロとする移動コマンドを入力後規制時間内で出力し続けるようにしてもよい。このような処理により、ユーザがボタン11を介して操作信号を入力したときに筐体10が動いてセンサユニット17によりその動きが検出されても、画面3上でのポインタ2の動きが規制される。したがって、ユーザの意図しないポインタ2やアイコン4等の動作が発生することを防止できる。
タイマーが終了した場合(ステップ304のYES)、MPU19は移動コマンドを生成または送信する(ステップ307)。この場合、ポインタ2は、入力装置1の動きに応じて画面3上で移動する。ステップ307では、操作信号の入力が未だ解除されていない状態であり、ユーザがボタン11を押した状態を保ったまま入力装置1を動かしている状態にある。
タイマーが作動している間であっても、操作信号の入力が解除された場合(ステップ305のYES)、ステップ307と同様に、MPU19は移動コマンドを生成または送信する(ステップ308)。
ステップ307の状態から、MPU19は、押されたボタン11が離されたか否かを監視、つまり操作信号の入力が解除されたか否かを監視する(ステップ309)。解除された場合、制御部47は再びタイマーをオンとし(ステップ310)、カウンタ45によるカウントアップを開始する。そうすると、MPU19は移動コマンドの出力を停止させる(ステップ311)。あるいは、MPU19は解除後規制時間内でポインタ2の変位量をゼロとする移動コマンドを出力し続けるようにする。
制御部47は、カウント値設定部46で設定された第1のカウント値とカウンタ45から供給されるカウント値とが一致する場合(ステップ312のYES)、タイマーを終了し、解除後規制時間が終了する。解除後規制時間が終了すると、MPU19は、移動コマンドを出力することで(ステップ308)、ポインタ2が移動する。このような処理により、ユーザがボタン11を押し、それを離すときに筐体10が動いてセンサユニット17によりその動きが検出されても、画面3上でのポインタ2の動きが規制される。したがって、ユーザの意図しないポインタ2やアイコン4等の動作が発生することを防止することができる。
タイマーが未だ終了しない場合(ステップ312のNO)、つまり両カウント値が異なる場合、MPU19はタイマーを作動し続け、次のステップ313に進む。ステップ313では、MPU19は、離されたボタン11が再び押されたか否か、つまり操作信号の入力が再び入力が開始されたか否かを監視する。ボタン11が押されていない場合、MPU19は、カウント値を1インクリメントし(ステップ314)、ステップ311に戻る。
タイマーが作動している間であっても、操作信号の入力が開始された場合(ステップ313のYES)は、MPU19はステップ302へ戻りタイマーを開始する。これにより、ユーザが違和感なくポインタ2やアイコン4を制御することができる。
ここで、図15において、ステップ305で操作信号の入力が解除された後、破線で示すように、制御部47はステップ304のタイマーをリセットすることで再びタイマーを開始し、ステップ310以降の処理に進んでもよい。これにより、ユーザが違和感なくポインタ2やアイコン4を制御することができる。
図15に示した処理は、図14の趣旨と同様に制御装置40が実行してもよい。この場合、制御装置40は、入力装置1から送信された加速度信号及び角速度信号を受信し(受信手段)、また、操作部を介して入力された操作信号を受信する。そして、制御装置40は、それらの検出信号に応じた、ポインタ2の変位量に対応する第1の制御信号を生成し、操作部23を介してユーザにより入力された操作信号に応じた第2の制御信号を生成する。実際には、制御装置40が生成する第1の制御信号とは、上記ポインタ2の座標情報に基く制御信号となる。また、制御装置40が生成する第2の制御信号とは、その入力装置1の操作部23の操作信号に応じた各種所定の処理を実行するための制御信号である(処理手段)。
上記実施の形態では、加速度センサユニット16の検出信号に基いてポインタ2の変位量が制御され、角速度センサユニット15の検出信号は補助的な役割を果たしていた。しかし、角速度センサユニット15の検出信号に基いてポインタ2の変位量が制御されるようにしてもよい。
この場合、例えば入力装置1または制御装置40が、単位時間ごと、つまり所定クロックごとのヨー角及びピッチ角の変化量を取得することができる。例えば、制御装置40のMPU35は、取得した単位時間当りのヨー角及びピッチ角の変化量に応じた、ポインタ2の画面3上における座標値を生成する。表示制御部42は、ポインタ2が画面3上で移動するように表示を制御する。ヨー角の変化量はX軸上でのポインタ2の変位量に相当し、ピッチ角の変化量はY軸上でのポインタ2の変位量に相当する。
この場合、MPU35は単位時間当りのヨー角及びピッチ角の変位量に応じたポインタ2の画面3上での単位時間当りの変位量を、演算により、または予めROM37に記憶された対応テーブルにより求めればよい。
次に、入力装置の他の実施の形態について説明する。
図17は、その入力装置51を示す斜視図である。図18は、その入力装置51のホイールボタン13側から見た側面図である。これ以降の説明では、図2等に示した実施の形態に係る入力装置1が含む部材や機能等について同様のものは説明を簡略または省略し、異なる点を中心に説明する。
入力装置51の筐体50は、その筐体50の表面の所定の位置に設けられた球面の一部または二次曲面の一部50aを有する。以下、球面の一部または二次曲面の一部(50a)を便宜的に「下部曲面」(50a)という。
下部曲面50aが配置される位置は、例えば、ボタン11、12とはほぼ反対側の位置であり、ユーザが入力装置51を握ったときに、子指が他の指より最もその下部曲面50aの位置に近くなるような位置である。あるいは、ある一方向(Z’軸方向とする。)の長い筐体50において、筐体50のそのZ’軸方向の長さの中心からZ’軸の正の側にセンサユニット17が配置される場合、下部曲面50aはZ’軸の負の側に配置された位置となる。
球面の一部とは、典型的には、実質的に半球面が挙げられるが必ずしも半分である必要はない。二次曲面とは、2次元で描かれる円錐曲線(二次曲線)を3次元まで拡張されたときの曲面をいう。二次曲面として、例えば楕円面、楕円放物面、または双曲面等がある。
このような入力装置51の筐体50の形状により、ユーザは、入力装置51の下部曲面50aを、テーブル、椅子、床、ユーザの膝や太もも等の当接対象物49に当てた状態で、下部曲面50aを支点として入力装置51を操作しやすくなる。つまり、入力装置51の下部曲面50aを当接対象物49に当てた状態でも、ユーザは入力装置51をあらゆる角度に傾けることを容易に行うことができるので、ポインタをアイコンに合わせる等の細かい操作を行うことができるようになる。図19は、ユーザが入力装置51の下部曲面50aを膝に当てて操作する様子を示す図である。
あるいは、本実施形態では、手ぶれ補正回路では抑制できない手の震え等による誤操作を防止したり、ユーザが入力装置51を空中で持ち上げ続けて操作する場合のユーザの疲労を予防することができる。
図20は、本発明のさらに別の実施の形態に係る入力装置を示す斜視図である。
入力装置61の筐体60は、図17、図18で示した入力装置51と同様に、球面の一部でなる下部曲面60aを有する。入力装置61の筐体60の最大長さの方向(Z’軸方向)に垂直な平面であって、下部曲面60aに接する平面(以下、便宜的に下端平面55という。)は、角速度センサユニット15の検出軸であるX軸及びY軸(図8参照)が作る平面(X−Y平面)と実質的に平行な平面となっている。
このような入力装置61の構成により、ユーザが下部曲面60aを下端平面55に当てて操作する場合に、入力装置61に加えられる角速度がそのまま角速度センサユニット15に入力される。したがって、角速度センサユニット15からの検出信号から検出値を得る過程での計算量を減らすことができる。
図21は、本発明のさらに別の実施の形態に係る入力装置を示す正面図である。図22は、その入力装置を示す側面図である。
入力装置71の筐体70の下部曲面70aは、例えば球面の一部とされている。この下部曲面70aは、図17、図20で示した入力装置51、61の下部曲面50a、60aより曲率半径が大きく設定されている。角速度センサユニット15は、その角速度センサユニット15の検出軸であるX軸及びY軸で構成されるX−Y平面に含まれる直線が、X軸方向及びY軸方向で見て、上記球面を通る仮想的に描かれた円56の接線に相当するような位置に配置されている。このような条件を満たす限り、角速度センサユニット15のX−Y平面が、入力装置71の長手方向に対して傾くように(図21参照)、角速度センサユニット15が筐体70に対して配置されてもよい。
これにより、ユーザが下部曲面70aを当接対象物49に当てて入力装置71を操作する場合に発生する角速度のベクトル方向と、角速度センサユニット15の検出方向が一致するので、リニアな入力が可能となる。
図23は、本発明のさらに別の実施の形態に係る入力装置を示す正面図である。
この入力装置81の筐体80の下部曲面80aである球面の曲率半径は、例えば図20に示したものと同じ、または近く設定されている。角速度センサユニット15は、該角速度センサユニット15の中心点である2つのX軸及びY軸の交点を通りそのX軸及びY軸に直交する仮想的な直線が、下部曲面80aを含む第1の球62の中心点Oを通る。このような構成により、下部曲面80aを含む第1の球62と、角速度センサユニット15のX−Y平面に含まれる直線が接線となる第2の球63が同心となる。したがって、入力装置81は、図21で示した入力装置71の効果と同様の効果を奏する。
なお、以上説明した球面の一部または二次曲面の一部を備える入力装置51、61、71、または81について、ユーザが必ずしも下部曲面50a、60a、70a、または80aを当接対象物49に当てて操作しなければならないわけではなく、空中で操作してももちろんかまわない。
次に入力装置のさらに別の実施の形態について説明する。本実施形態では、上述の入力装置1が含む部材や機能等について同様のものは説明を簡略または省略し、異なる点を中心に説明する。
図24は、本実施形態に係る入力装置を示す斜視図であり、図25は、本実施形態に係る入力装置の内部構造を示す側面図である。
図24に示すように、入力装置91は、筐体90を備えており、この筐体90は、ユーザが持つことができる程度の大きさとされる。筐体90の上面90aには、操作部23が設けられている。操作部23は、決定ボタン92、決定ボタン92を囲むように設けられた方向入力ボタン93、方向入力ボタン93の周囲に配置された複数の周囲ボタン94を含む。決定ボタン92は、例えば、マウスの右ボタンとしての機能を有する。周囲ボタン94のいずれか一つがマウスの左ボタンとしての機能を有していてもよい。また、操作部23は、画面3の電源入力用のボタン95、TVのチャンネル切り替えボタン96、音量ボタン97、その他TVのリモートコントローラ用に用いられる各種のボタンを含む。
これらのボタンの他、入力装置91には、操作部23として、文字、番号、及び記号のうち少なくとも一つを含む符号を入力可能な符号ボタン98が複数設けられている。各符号ボタン98は、それぞれ、例えば、ひらがな、カタカナ、アルファベットなどの文字、数字などの番号、図形などの記号、その他の符号を入力可能とされている。
図25に示すように、入力装置91の筐体90内部には、メイン基板18、回路基板25及びバッテリー14などが内蔵される。メイン基板18には、MPU19、水晶発振器20、送信機21、アンテナ22が搭載される。回路基板25には、角速度センサユニット15及び加速度センサユニット16が搭載される。
次に、入力装置91の動作について説明する。図26は、入力装置91の動作を示すフローチャートである。図26の説明では、符号ボタン98が操作される場合について説明する。
ユーザにより符号ボタン98が押圧されておらず、符号対応操作信号が入力されていない状態では(ステップ401のNO)、MPU19は移動コマンド(速度値の情報を含む信号)を出力している。したがって、ユーザが入力装置91を手に持ち、入力装置91を動かすと、その動きに応じてポインタ2は、画面3上を移動する。ここで、速度値は、典型的には、上述の図11に示す方法により算出される。これにより、ポインタ2の画面3上での動きをユーザの直感に合致した自然な動きとすることができる。しかしながら、必ずしも図11に示す方法で速度値が算出されなくてもよく、例えば加速度値が単純に積分されて速度値が算出されてもよい。あるいは、他の方法で算出された速度値が用いられても構わない。
ユーザにより符号ボタン98が押圧されると、例えば図示しないスイッチから、押圧された符号ボタン98に割り当てられた文字や数字などの符号に対応する符号対応操作信号の出力が開始される。この符号対応操作信号は、MPU19に入力される(ステップ401のYES)。MPU19は、符号対応操作信号の入力が開始されると(ステップ401のYES)、移動コマンドの出力を停止する(ステップ402)。あるいは、変位量をゼロ(Vx(t), Vy(t)) = (0,0)とした移動コマンドの出力を開始する。
また、MPU19は、符号対応操作信号の入力が開始されると、送信機21を介して符号対応操作信号の情報を出力する。制御装置40は、符号対応操作信号が入力されると、この符号対応操作信号に対応づけられた、文字や数字などの符号を画面3上で表示するように、画面3の表示を制御する。
入力装置91のMPU19は、移動コマンドの出力を停止すると、符号対応操作信号の入力が解除されたか否かを判定する(ステップ403)。ユーザが押圧した符号ボタン98の押圧を解除すると、MPU19への符号対応操作信号の入力が解除される(ステップ403のYES)。すると、MPU19は、タイマーをオンとし、解除後規制時間のカウントアップを開始する(ステップ404)。
この解除後規制時間は、上述のように、典型的には0.2秒とされるが、これに限られず、0.2秒以上であってもよく、0.2秒以下であってもよい。この解除後規制時間は、ユーザによってカスタマイズすることができるようになっていてもよい。このユーザによるカスタマイズを実現するために、入力装置91には、例えばディップスイッチや可変抵抗が設けられていてもよい。また、ユーザが入力装置91を用いて、画面3上のGUIを操作することでカスタマイズできるようになっていてもよい。このように、解除後規制時間がカスタマイズできることで、ユーザは自己の操作感に合った解除後規制時間を任意に設定することができる。
MPU19(制御部47(図16参照))は、タイマーをオンとすると、カウント値設定部46に記憶された第1のカウント値と、カウンタ45から供給されるカウント値とを比較する(ステップ405)。第1のカウント値と、カウンタ45からのカウント値とが異なる場合、MPU19は、カウント値を1インクリメントし(ステップ406)、ステップ405へ戻る。
MPU19は、第1のカウント値と、カウンタ45からのカウント値とが一致する場合(ステップ405のYES)、つまり、符号対応操作信号の入力が解除されてから解除後規制時間が経過した場合、移動コマンドの出力を開始する(ステップ407)。なお、符号対応操作信号の入力が解除されてから解除後規制時間が経過する前に、再び符号対応信号の入力が開始された場合、ステップ401に戻り、ステップ401以降の処理を実行してもよい。
図26に示した処理により、ユーザが符号ボタン98を押圧し続けている間は、ポインタ2の移動が規制されるため、ポインタ2がユーザの意図しない動きをすることを防止することができる。また、ユーザが符号ボタン98の押圧を解除した場合に、押圧を解除してから解除後規制時間内は、ポインタの移動が規制されるため、ボタン98の押圧解除後もユーザの意図しないポインタ2の動きを防止することができる。
本実施形態では、符号ボタン98が押圧される場合について説明した。しかし、これに限られず、入力装置91が備えているその他の操作部23が押圧された場合に、図26と同様の処理が実行されてもよい。例えば、方向入力ボタン93、テレビのチャンネル切り替えボタン96、音量ボタン97などが押圧された場合に、図26と同様の処理が実行されてもよい。あるいは、図6などに示した入力装置1が備えている各種の操作ボタン29や、電源スイッチ28が押圧された場合に、図26と同様の処理が実行されてもよい。なお、本実施形態に係る入力装置91に備えられた決定ボタン92が押圧された場合、上述の図15に示した処理が実行されてもよい。
次に、入力装置の動作についての他の実施形態について説明する。
本実施形態では、上述の解除後規制時間が可変に制御される点において、上述の各実施形態とは異なるため、その点を中心に説明する。なお、図2、3などに示した入力装置1のボタン11が押圧される場合について説明する。
図27は、本実施形態に係る入力装置1の動作を示すフローチャートである。
ユーザがボタン11を押圧していない状態では、MPU19に操作信号が入力されておらず(ステップ501のNO)、入力装置1は、移動コマンドを出力している。したがって、例えばユーザが手首や肘の回転を使って、入力装置1を動かすと、その入力装置1の動きに応じて画面3上でポインタ2が移動する。
ユーザにより、ボタン11が押圧されると、例えば図示しないスイッチから操作信号が出力され、MPU19に入力される(ステップ501のYES)。すると、MPU19は、移動コマンドの出力を停止するか、あるいは、変位量をゼロとした移動コマンドを出力する(ステップ502)。つまり、MPU19は、操作信号の入力が開始された場合、画面3上でポインタ2が停止するように移動コマンドの出力を制御する(出力制御手段)。
次に、MPU19は、操作信号の入力が解除されたか否かを判定する(ステップ503)。MPU19は、操作信号の入力が解除されていない場合、再びステップ502に戻り、移動コマンドの出力停止状態を維持するか、変位量をゼロとした移動コマンドを出力する。これにより、ユーザがボタン11の押圧を開始してからその押圧を解除するまでの間、ポインタの移動が規制されるため、ポインタ2がユーザの意図しない動きをすることを防止することができる。
ユーザがボタン11の押圧を解除し、操作信号の入力が解除された場合(ステップ503のYES)、MPU19(制御部47)は、例えば、図16に示すカウンタ45に、初期カウント値C1をセットする(ステップ504)。ここで、初期カウント値C1は、後述するカウントダウンの初期値となる値である。この初期カウント値C1からカウント値C(t)のカウントダウンが開始される。カウント値C(t)のカウントダウンとは、後述するステップ509で示すように、カウント値C(t)から、入力装置1の角速度の関数値ΔC(ω)を減算することである。これによりカウント値C(t)はカウントダウンごとに減っていく。カウント値C(t)がゼロ以下となり、カウントダウンが終了したときが、上述の図15で説明した解除後規制時間となる。
MPU19は、初期カウント値C1をセットすると、移動コマンドの出力が停止されている状態を維持するか、変位量をゼロとした移動コマンドを出力する(ステップ505)。これにより、操作信号の入力が解除されてもポインタの停止状態が維持されるため、例えば、ユーザがボタン11の押圧を解除する際に入力装置1が動くことで、コマンド発行前にポインタ2がアイコン4からはずれてしまうことなどを防止することができる。
次に、MPU19は、カウント値C(t)がゼロよりも大きいか否かを判定する(ステップ506)。カウント値C(t)がゼロよりも大きい場合、MPU19は、角速度センサユニット15から出力された2軸の角速度値(ωψ、ωθ)を取得する。MPU19は、2軸の角速度値(ωψ、ωθ)の二乗平均を算出し、角速度値の絶対値|ω|を得る(ステップ507)。あるいは、ステップ507において、角速度値の絶対値|ω|の代わりに、第1の角速度値ωψの絶対値|ωψ|及び第2の角速度値ωθの絶対値|ωθ|のうち大きい方の値が代表値として用いられてもよい。
MPU19は、角速度値の絶対値|ω|を算出すると、角速度値の絶対値|ω|の大きさに応じたカウントダウン量ΔC(ω)を決定する(ステップ508)。このカウントダウン量ΔC(ω)は、角速度値の絶対値|ω|が大きくなるに従って、大きくなる値である。カウントダウン量ΔC(ω)と、角速度値の絶対値|ω|との関係についての詳細は、後述する。
MPU19は、カウントダウン量ΔC(ω)を決定すると、前回のカウント値C(t-1)からカウントダウン量ΔC(ω)を減算し、新たなカウント値C(t)を算出することでカウントダウンを実行する(ステップ509)。MPU19は、新たなカウント値C(t)を算出すると、移動コマンドの停止状態を維持し(ステップ505)、新たなカウント値C(t)がゼロよりも大きいか否かを判定する(ステップ506)。つまり、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ505〜ステップ509に示す処理を繰り返す(時間制御手段)。
カウント値C(t)がゼロ以下となった場合(ステップ506のNO)、MPU19は、移動コマンドの出力を開始する(ステップ510)。このカウント値C(t)がゼロ以下の値となったときが、操作信号の入力が解除されてからの解除後規制時間となる。なお、カウント値C(t)がゼロと以下となる前、つまり、解除後規制時間経過前にボタン11が押圧され、再び操作信号の入力が開始された場合、MPU19は、ステップ501に戻り、ステップ501以降の処理を実行してもよい。
図27に示す処理により、角速度値の絶対値|ω|が大きくなるに従って、解除後規制時間が短縮するように解除後規制時間が制御される。これにより、例えば、ユーザがボタン11をクリックした後に、すぐにポインタ2の移動を開始させようとして入力装置1を振った場合、速やかにポインタ2の移動が開始される。これにより、ユーザは、ボタン11の操作後にスムーズにポインティング操作へ移行することができるため、操作感が向上する。
次に、角速度値の絶対値|ω|と、カウントダウン量ΔC(ω)との関係について説明する。
図28(A)〜(D)は、それぞれ、角速度値の絶対値|ω|と、カウントダウン量ΔC(ω)との関係についての一例を示す図である。図28(A)〜(D)に示すように、カウントダウン量ΔC(ω)は、それぞれ角速度値の絶対値|ω|が大きくなるに従って大きくなる。カウントダウン量ΔC(ω)は、角速度の絶対値|ω|に基づいて、演算により求められてもよく、ルックアップテーブルにより求められてもよい。
図28(A)は、角速度値の絶対値|ω|が大きくなるに従って、カウントダウン量ΔC(ω)が1次関数的に大きくなる場合の一例を示す図である。カウントダウン量ΔC(ω)は、角速度値の絶対値|ω|が大きくなるに従って2次関数的に大きくなってもよく、多次関数的に大きくなってもよい。あるいは、指数関数的に大きくなっても構わない。また、角速度の絶対値|ω|が所定の値以上である場合、カウントダウン量ΔC(ω)を一定(最大値)としてもよく、角速度値の絶対値|ω|が所定の値未満である場合にカウントダウン量をΔC(ω)を一定(最小値)としてもよい。
図28(B)に示す例では、角速度値の絶対値|ω|が所定の閾値ω1未満である場合に、カウントダウン量ΔC(ω)は、一定とされる。これにより、角速度値の絶対値|ω|が閾値ω1未満である場合に、角速度値の絶対値|ω|の大きさが解除後規制時間に影響を与えない。なお、角速度値の絶対値|ω|が閾値未満である場合に、カウントダウン量ΔC(ω)はゼロでなく、例えば1とされる。これにより、カウントダウンが進行せずに、解除後規制時間が永遠に終了しないことを防止することができる。角速度値の絶対値|ω|が閾値ω1以上である場合、カウントダウン量ΔC(ω)は、1次関数的に大きくなる。カウントダウン量ΔC(ω)は、角速度値の絶対値|ω|が大きくなるに従って2次関数的、多次関数的、あるいは指数関数的に大きくなってもよい。また、角速度の絶対値|ω|が所定の値以上である場合、カウントダウン量ΔC(ω)を一定(最大値)としてもよい。角速度値の絶対値所定の閾値ω1は、解除後規制時間、カウントダウン量ΔC(ω)、及び角速度値の絶対値|ω|の関係を考慮して適宜設定される。
図28(C)は、角速度値の絶対値|ω|が大きくなるに従って、カウントダウン量ΔC(ω)が多段階的に大きくなる場合の一例を示す図である。この段階数は、特に限定されない。
図28(D)は、角速度値の絶対値|ω|が大きくなるに従って、カウントダウン量ΔC(ω)が2段階的に大きくなる場合の一例を示す図である。角速度値の絶対値|ω|が所定の閾値ω2未満である場合、カウントダウン量ΔC(ω)は、一定とされ、例えば、1とされる。一方、角速度値の絶対値|ω|が所定の閾値ω2以上である場合、カウントダウン量ΔC(ω)は、初期カウント値C1とされる。あるいは、カウントダウン量ΔC(ω)は、初期カウント値C1以上の値とされる。これにより、角速度値の絶対値|ω|が所定の閾値ω2以上である場合、解除後規制時間を終了させることができる。所定の閾値ω2は、解除後規制時間、カウントダウン量ΔC(ω)、及び角速度値の絶対値|ω|の関係を考慮して適宜設定される。
図27及び図28の説明では、角速度値が大きくなるに従って、解除後規制時間が短縮される場合について説明した。しかしこれに限られず、速度値が大きくなるに従って、解除後規制時間が短縮されてもよい。または、加速度センサユニット16から出力された加速度値が大きくなるに従って、解除後規制時間が短縮されてもよい。その他、例えば、角加速度値が用いられてもよく、角加速度の変化率の値や、加速度の変化率の値などが用いられてもよい。これらの筐体10の動きに応じた値は、絶対値が用いられても構わない。後述する入力後規制時間についても同様である。
本実施形態の説明では、入力装置1のボタン11が押圧される場合について説明したが、入力装置1のボタン12が押圧された場合に、図27に示した処理を実行してもよい。入力装置の筐体の形状は、図17〜図23に示した、筐体50〜筐体80のいずれであっても構わない。あるいは、図24及び図25に示した入力装置91の決定ボタン92が押圧された場合に図27に示した処理が実行されてもよい。後述する、入力装置の動作についての各実施形態についても同様である。
図27に示した処理は、図14の趣旨と同様に、主に制御装置40が実行してもよい。この場合、制御装置40は、入力装置1(または、入力装置51〜91)から出力された、角速度値(ωψ、ωθ)の情報、加速度値(ax、ay)の情報、及び操作信号を、アンテナ39を介して受信する。制御装置40のMPU35は、例えば、ステップ203〜ステップ218に示す処理を実行し、速度値を算出する。MPU35は、速度値に応じた第1の制御信号を生成し、表示制御部42は、この速度値に応じた速度でポインタ2が画面上で移動するように表示を制御する。制御装置40のMPU35は、操作信号を受信すると、この操作信号に応じた第2の制御信号を生成し、各種の処理を実行する。
また、MPU35は、操作信号の入力が開始されてから操作信号の入力が解除されるまで、画面3上でポインタ2が停止するように第1の制御信号の出力を制御する。MPU35は、操作信号の入力が解除されたと判断した場合、図27に示すステップ504〜ステップ510に示す処理を実行し、解除後規制時間を可変に制御する。図27及び図28で説明した各種の変形例は、制御装置40の処理に適用することができる。
なお、後述する入力装置1の動作についての実施形態についても同様に、主に制御装置40が実行してもよい。
次に入力装置1の動作についてのさらに別の実施の形態について説明する。
図29は、本実施形態に係る入力装置の動作を示すフローチャートである。本実施形態に係る入力装置1は、角速度値だけでなく、角加速度値にも関連して解除後規制時間が可変に制御される点において上述の図27に示した実施形態と異なる。従って、その点を中心に説明する。なお、角速度値に関連するカウントダウン量を第1のカウントダウン量ΔC(ω)、角加速度値に関連するカウントダウン量を第2のカウントダウン量ΔC(Δω)として説明する。
図29に示すように、ステップ601〜ステップ608では、図27のステップ501〜508と同様の処理が実行される。角速度値の絶対値|ω|に応じた第1のカウントダウン量ΔC(ω)が決定されると(ステップ608)、MPU19は、2軸の角速度値(ωψ、ωθ)をそれぞれ微分して2軸の角加速度値(Δωψ、Δωθ)を算出する。MPU19は、この2軸の角加速度値(Δωψ、Δωθ)の二乗平均を算出して、角加速度値の絶対値|Δω|を得る(ステップ609)。あるいは、ステップ609において、角加速度の絶対値|Δω|の代わりに、第1の角加速度値の絶対値|Δωψ|及び第2の角加速度値の絶対値|Δωθ |のうちいずれか大きいほうの値が代表値として用いられてもよい。
MPU19は、角加速度値の絶対値|Δω|を算出すると、この角加速度値の絶対値|Δω|の大きさに応じた第2のカウントダウン量ΔC(Δω)を決定する(ステップ610)。この第2のカウントダウン量ΔC(Δω)は、角加速度値の絶対値|Δω|が大きくなるに従って大きくなる値である。角加速度の絶対値|Δω|と、第2のカウントダウン量ΔC(Δω)との関係は、例えば、上述の図28に示す関係がある。この場合、図28の(A)〜(D)の横軸に示す角速度値の絶対値|ω|が、角加速度値の絶対値|Δω|と読み替えられればよい。
MPU19は、第2のカウントダウン量ΔC(Δω)を決定すると、前回のカウント値C(t-1)から第1のカウントダウン量ΔC(ω)及び第2のカウントダウン量ΔC(Δω)を減算し、新たなカウント値C(t)を算出する(ステップ611)。MPU19は、以後、カウント値C(t)がゼロ以下となるまでステップ605〜ステップ611までの処理を繰り返す。そして、MPU19は、カウント値C(t)がゼロ以下となった場合に(ステップ606のNO)、移動コマンドの出力を開始する(ステップ612)。
図29に示す処理により、角速度値だけでなく、角加速度値にも応じて解除後規制時間が可変に制御されるため、適切に解除後規制時間を短縮することができる。
本実施形態では、第1のカウントダウン量ΔC(ω)と、第2のカウントダウン量ΔC(Δω)とがそれぞれ別々に決定されているが、たとえば、ルックアップテーブルなどにより角速度値及び角加速度値に応じた1つのカウントダウン量ΔC(ω、Δω)が決定されてもよい。
本実施形態では、角速度値及び角加速度値に応じて解除後規制時間が可変に制御される場合について説明した。しかし、これに限られず、速度値及び加速度値に応じて解除後規制時間が可変に制御されてもよい。あるいは、角速度値、角加速度値、速度値、加速度値、その他筐体10の動きに応じた値のうちから2つを取る組み合わせで、解除後規制時間が可変に制御されてもよい。
本実施形態では、2つの異なる動き信号に応じて解除後規制時間が可変に制御される場合について説明したが、3つ、あるいはそれ以上のそれぞれ異なる動き信号に応じて解除後規制時間が可変に制御されてもよい。
次に、入力装置の動作についてのさらに別の実施の形態について説明する。
例えば、細かいポインタの操作が苦手なユーザは、手振れが大きい場合があり、ボタン11の押圧を解除してからより長い時間ポインタが停止していてほしいと望む場合がある。そこで、本実施形態では、角速度値の信号のうち、手振れに相当する周波数範囲の信号が大きくなるに従って、第1の規制時間を延長するように第1の規制時間を制御する。従って、その点を中心に説明する。
図30は、本実施形態に係る入力装置1の動作を示すフローチャートである。
図30に示すように、ステップ701〜ステップ710では、図29のステップ601〜ステップ610と同様の処理が実行される。角加速度値の絶対値|Δω|に応じた第2のカウントダウン量ΔC(Δω)が算出されると(ステップ710)、MPU19は、2軸の角速度値(ωψ、ωθ)をそれぞれ周波数分析する。MPU19は、角速度値(ωψ、ωθ)の信号のうち、手振れに相当する周波数範囲(例えば、1〜20Hz)のピーク値を検出する。MPU19は、2軸の角速度値についてのそれぞれのピーク値の平均値を算出し、手振れ量代表値Pを決定する(ステップ711)。あるいは、2つのピーク値のうち、大きい方の値を手振れ量代表値Pとしてもよい。
あるいは、ステップ711において、周波数分析の代わりに、バンドパスフィルタやハイパスフィルタを通過させた後の角速度値の絶対値|ω|が用いられ、手振れ量代表値Pが決定されてもよい。
MPU19は、手振れ量代表値Pを決定すると、この手振れ量代表値Pに応じた手振れカウントダウン量ΔC(P)を決定する(ステップ712)。この手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って大きくなる値である。手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って、1次関数的に大きくなってもよく、多次関数的、あるいは指数関数的に大きくなってもよい。または、手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って、2段階的、あるいは多段階的に大きくなってもよい。
MPU19は、手振れカウントダウン量ΔC(P)を決定すると、前回のカウント値C(t-1)から第1のカウントダウン量ΔC(ω)及び第2のカウントダウン量ΔC(Δω)を減算し、手振れカウントダウン量ΔC(P)を加算することで、新たなカウント値C(t)を算出する(ステップ713)。以降、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ705〜ステップ713に示す処理を繰り返す。そして、MPU19は、カウント値C(t)がゼロ以下となった場合に(ステップ706のNO)、移動コマンドの出力を開始する(ステップ714)。
図30に示す処理により、手振れが大きいほど、解除後規制時間を延長するように解除後規制時間が制御される。これにより、例えば、手振れの大きなユーザであっても、ポインティング操作が容易となり、操作感を向上させることができる。
ステップ712で決定される手振れカウントダウン量ΔC(P)には、以下の式(7)に示す制限が課せられていてもよい。
ΔC(P)≦ΔC(ω)+ΔC(Δω)−1・・・(7)。
つまり、手振れカウントダウン量ΔC(P)は、最大でも第1のカウントダウン量と第2のカウントダウン量の和から1少ない値を超えないように、制限が課せられてもよい。これにより、手振れが大きい場合に、ステップ713に示すカウントダウンが進行せずに、解除後規制時間が永遠に終了しないことを防止することができる。
本実施形態では、第1のカウントダウン量ΔC(ω)、第2のカウントダウン量ΔC(Δω)、手振れカウントダウン量ΔC(P)がそれぞれ別々に決定されているが、たとえば、ルックアップテーブルなどにより1つのカウントダウン量ΔC(ω、Δω、P)が決定されてもよい。
本実施形態では、2つの異なる物理量の信号(角速度値、及び角加速度値)と、手振れ量の信号を利用して、解除後規制時間のカウントを実行する場合について説明した。しかし、これに限られず、1つの物理量の信号(例えば、角速度値)と、手振れ量の信号とを利用して解除後規制時間のカウントを実行してもよい。あるいは、手振れ量の信号のみを利用して解除後規制時間のカウントを実行することも可能である。
次に入力装置の動作についての他の実施形態について説明する。
上述の図27〜図30に示した各実施形態では、ユーザによりボタン11の押圧が開始されてから、ボタン11の押圧が解除されるまでの間は、ポインタの移動が規制される場合について説明した。一方、本実施形態では、ボタン11の押圧が開始されてから入力後規制時間内でポインタの移動が規制される(逆に言うと、入力後規制時間経過後は、ボタン11が押圧されていてもポインタが移動する)点において、図27〜図30に示した処理と異なる。また、本実施形態は、上述の図15に示した処理と比較すると、解除後規制時間が可変である点において、図15に示した処理と異なる。本実施形態の説明では、図27及び図15に示した処理と異なる点を中心に説明する。
図31は、本実施形態に係る入力装置の動作を示すフローチャートである。
図31のステップ801〜ステップ806では、図15に示したステップ301〜ステップ306と同様の処理が実行される。つまり、ユーザによりボタン11が押圧され、MPU19に操作信号が入力されてから入力後規制時間内は、画面3上でポインタ2の移動が停止するように移動コマンドの出力が制御される。
ステップ804において、カウント値が一致した場合(ステップ804のYES)MPU19は、移動コマンドの出力を開始する(ステップ807)。つまり、ユーザがボタン11を押圧してから、そのボタン11の押圧が解除されずに(ステップ805のNO、参照)入力後規制時間が経過した場合、MPU19は、移動コマンドの出力を開始する。この場合、画面3上では、例えば、ドラッグの動作の表示がされ、ポインタ2及びアイコン4が画面3上で移動する。
ここで、ドラッグの動作を実現するために、例えば、入力装置1は、ボタン11が押圧されている間は、押圧コードを出力すればよい。制御装置40のMPU35は、押圧コードと、移動コマンドとが同時に入力されている場合にドラッグの動作を画面3上で表示する。
入力装置1のMPU19は、移動コマンドを出力すると、操作信号の入力が解除されたか否かを判定する(ステップ809)。ユーザによりボタン11の押圧が解除され、操作信号の入力が解除された場合(ステップ809のYES)、MPU19は、初期カウント値C1をカウンタ45にセットする(ステップ810)。そして、MPU19は、移動コマンドの出力を停止するか、変位量をゼロとした移動コマンドの出力を開始する(ステップ811)。なお、ステップ809において、操作信号の入力が解除された場合、MPU19は、押圧コードの出力を停止する。
制御装置40のMPU35は、入力装置1からの押圧コード及び移動コマンドの入力が解除されると、画面3上でのドラッグの動作の表示を終了し、ドロップの表示を実行する。
移動コマンドの出力が停止されると(ステップ811)、以降、ステップ812〜ステップ816では、図27で示したステップ506〜ステップ509と同様の処理が実行される。すなわち、角速度値の絶対値|ω|の大きさに応じたカウントダウン量ΔC(ω)によりカウント値C(t)のカウントダウンが実行され、カウント値C(t)がゼロ以下となったときに(ステップ812のNO)、移動コマンドの出力が開始される(ステップ808)。
これにより、ドロップの際にポインタ2及びアイコン4が移動してしまうことを防止することができるとともに、ユーザがアイコン4をドロップさせた後に、すぐにポインタ2の移動を開始させようとした場合には、速やかにポインタの移動を開始することができる。
なお、可変に制御された解除後規制時間内に、ユーザによりボタン11が押圧され、操作信号の入力が開始された場合(ステップ813のYES)、ステップ802に戻り、操作信号の入力から入力後規制時間(固定)内は、ポインタの移動が規制される。
ここで、ステップ805において、操作信号の入力から入力後規制時間経過前に操作信号の入力が解除された場合(ステップ805のYES)、破線に示すように、MPU19は、ステップ810以降の処理を実行してもよい。これにより、例えば、クリックの操作によりポインタ2がアイコン4から外れることを防止することができるとともに、ユーザがクリックの操作後、すぐにポインタ2の移動を開始させたい場合には、速やかにポインタ2の移動を開始させることができる。
また、ステップ814〜ステップ816において、図29に示したステップ607〜ステップ611の処理を実行してもよい。これにより、適切に解除後規制時間を短縮することができる。あるいは、ステップ814〜ステップ816において、図30に示したステップ707〜ステップ713の処理を実行してもよい。これにより、例えば、手振れの大きなユーザであっても、ポインティング操作が容易となる。
次に入力装置の動作についてのさらに別の実施形態について説明する。
本実施形態では、解除後規制時間だけでなく、入力後規制時間も可変に制御される点において、上述の図31に示した実施形態と異なるため、その点を中心に説明する。なお、解除後規制時間及び入力後規制時間がカウントダウンされるときの初期値となる値を、それぞれ第1の初期カウント値C1、第2の初期カウント値C2として説明する。
図32は、本実施形態に係る入力装置の動作を示すフローチャートである。
ユーザによりボタン11が押圧されると、MPU19に操作信号が入力される(ステップ901のYES)。操作信号が入力されると、MPU19は、カウンタ45に第2の初期カウント値C2をセットする。この第2の初期カウント値C2からカウント値C(t)のカウントダウンが開始され、カウント値C(t)がゼロ以下となったときが入力後規制時間となる。
ここで、第2の初期カウント値C2は、典型的には、第1の初期カウント値C1より大きな値とされる。例えば、第2の初期カウント値C2は、第1の初期カウント値C1の2倍とされる。これは、ボタン11の押圧を開始してからポインタ2を停止させる時間(入力後規制時間)は、押圧を解除してからポインタ2を停止させる時間(解除後規制時間)よりも、長くしたい心理がユーザに働くためである。例えば、ユーザがボタン11の押圧を開始して、クリックの操作を開始した場合には、確実にクリックの操作をしたい心理が働くため、入力後規制時間は、ある程度長くしなければならない。一方で、ユーザがボタン11の押圧を解除して、クリックの操作を終了した場合には、ポインタの移動をすぐに開始させたい心理が働くため、解除後規制時間は、ある程度短くなければならない。
そこで、本実施形態では、第2の初期カウント値C2は、第1の初期カウント値C1よりも大きな値とされ、例えば、第1の初期カウント値C1の2倍とされる。第2の初期カウント値C2は、第1の初期カウント値C1より大きな値であれば、2倍でなくても構わない。あるいは、第2の初期カウント値C2と、第1の初期カウント値C1とが同じ場合も考えられる。これにより、プログラムを軽くすることができる。
MPU19は、第2の初期カウント値C2をセットすると、移動コマンドの出力を停止するか、あるいは、変位量をゼロとした移動コマンドの出力を開始する(ステップ903)。これにより、ボタン11の押圧開始時に、入力装置1が動くことで、ポインタ2が画面3上で移動してしまうことを防止することができる。
次に、MPU19は、カウント値C(t)がゼロより大きいか否かを判定し(ステップ904)、ゼロより大きい場合、操作信号の入力が解除されたか否かを判定する(ステップ905)。操作信号の入力が解除されていない場合、角速度値の絶対値|ω|の大きさに応じたカウントダウン量ΔC(ω)を決定し(図28参照)、カウントダウンを実行する(ステップ906〜ステップ908)。以降、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ903〜ステップ908に示す処理を繰り返す。これにより、角速度値の絶対値|ω|の大きさに応じて入力後規制時間が可変に制御される。
ここで、ステップ905において、可変に制御された入力後規制時間内にボタン11の押圧が解除され、操作信号の入力が解除された場合(ステップ905のYES)、移動コマンドの出力が開始される(ステップ910)。あるいは、破線に示すように、カウント値C(t)がリセットされて第1の初期カウント値C1が新たに設定され(ステップ912)、操作信号の入力が解除されてから解除後規制時間内(可変)は、ポインタの移動が規制されてもよい。
操作信号の入力が解除されずに(ステップ905のNO参照)、カウント値C(t)がゼロ以下となった場合(ステップ904のNO)、移動コマンドの出力が開始される(ステップ909)。つまり、ボタン11の押圧が開始されてから、その押圧が解除されずに入力後規制時間が経過した場合、移動コマンドの出力が開始される。この場合、画面3上では、ドラッグの動作が開始される。
すなわち、本実施形態では、入力後規制時間は、ボタン11の押圧が開始されてからポインタ2が画面3上で停止している時間であって、かつ、ボタン11の押圧が開始されてからドラッグが開始されるまでの時間である。この入力後規制時間が角速度値の絶対値が大きくなるほど短縮するように制御される。これにより、例えば、ユーザがボタン11の押圧後に、すぐにドラッグの動作を実行させようとして入力装置1を振った場合、速やかにドラッグの動作を画面3上で開始することができる。
MPU19は、移動コマンドの出力を開始すると(ステップ909)、以降、ステップ911〜ステップ918において、図31に示したステップ809〜ステップ816と同様の処理を実行する。従って、図31に示した実施形態と、同様の作用効果を奏する。なお、ステップ915において、可変に制御された解除後規制時間内に、ボタン11の押圧が開始され、操作信号の入力が開始された場合、カウント値C(t)をリセットして、第2の初期カウント値C2をカウンタ45に設定する(ステップ902)。そして、MPU19は、ステップ903以降の処理を実行する。
ステップ906〜ステップ908において、図29に示したステップ607〜ステップ611と同様の処理を実行してもよい。これにより、適切に入力後規制時間を短縮することができる。あるいは、ステップ906〜ステップ908において、図30に示したステップ707〜ステップ713と同様の処理を実行してもよい。これにより、例えば、手振れの大きなユーザであっても、ポインティング操作が容易となる。
次に、第2の初期カウント値と、第1の初期カウント値との関係についての他の実施形態について説明する。
上述の実施形態では、第2の初期カウント値C2が第1の初期カウント値C1よりも大きい場合について説明した。一方、本実施形態では、第2の初期カウント値C2が第1の初期カウント値C1よりも小さい。したがって、その点を中心に説明する。
図33は、ユーザが本実施形態に係る入力装置のボタンを押圧操作した様子を示す図である。図33(A)は、ボタンが押圧されたときの様子を示す図であり、図33(B)は、ボタンの押圧が解除されたときの様子を示す図である。また、図34は、ボタンが押圧操作された場合の、Y軸方向への移動量(ブレ量)についての一例を示す図である。
図33に示すように、本実施形態に係る入力装置111は、筐体110の上面110aにボタン112を備えている。
図33(A)に示すように、ユーザが親指でボタン112を押圧した場合、入力装置111は、親指からの力により下方へ移動しようとする。しかし、ユーザは、人差し指により入力装置111を支えることができるため、入力装置111のY軸方向への移動量(ブレ量)は、比較的少ない。この場合、例えば、図34に示すように、Y軸方向への移動量は、Δy1となり、ブレが発生している時間は、Δt1となる。
一方で、図33(B)に示すように、ユーザがボタン112の押圧を解除した場合、親指からの力が抜け、人差し指からの力が入力装置111にかかる。この場合、親指は、入力装置111から離れており、人差し指からの力を支えることができないため、入力装置111は、比較的大きく移動する。例えば、図34に示すように、Y軸方向への移動量は、Δy2となり、ブレが発生している時間は、Δt2となる。
このように、押圧が解除された場合にブレが発生している時間Δt2は、押圧が開始された場合のブレが発生している時間Δt1よりも大きい。従って、本実施形態に係る入力装置111では、第2の初期カウント値C2が第1の初期カウント値C1よりも小さくされ、入力後規制時間が解除後規制時間よりも短くなるように調整される。これにより、適切に、ポインタの誤移動などを防止することができる。
図27〜図34の説明では、主に、解除後規制時間が可変に制御される点を中心に説明した。以降の各実施形態では、主に、入力後規制時間が可変に制御される点を中心に説明する。
図35は、本実施形態に係る制御システム100の動作を示す図であり、図36は、本実施形態に係る入力装置1の動作を示す図である。
まず、入力装置1に設けられた操作部23がユーザにより操作されていない場合の制御システム100の動作について説明する。図35は、操作部23が操作されていない場合の動作を示すフローチャートである。
図35に示すように、例えばユーザによる電源スイッチ28の押圧により、入力装置1に電源が入力されると、角速度センサユニットから2軸の角速度信号が出力される。この角速度信号による第1の角速度値ωψ及び第2の角速度値ωθはMPU19に入力される(ステップ1101)。
また、入力装置1に電源が投入されると、加速度センサユニット16から2軸の加速度信号が出力される。MPU19は、この2軸の加速度信号による第1の加速度値ax及び第2の加速度値ayを入力する(ステップ1102)。この加速度値の信号は、電源が投入された時点での入力装置1の姿勢(初期姿勢)に対応する信号である。MPU19は、典型的にはステップ1101及び1102を所定のクロック周期ごとに同期して行う。しかし、MPU19は、ステップ1101を実行した後、ステップ1102を実行してもよいし、ステップ1102を実行した後、ステップ1101を実行してもよい。このことは、図10、14、40、42(例えばステップ1701及び1702について)、43(例えばステップ1801及び1802について)についても同様である。
MPU19は、加速度値(ax、ay)及び角速度値(ωψ、ωθ)に基いて、所定の演算により速度値(第1の速度値Vx、第2の速度値Vy)を算出する(ステップ1103)。この点において、少なくともセンサユニット17、または、MPU19及びセンサユニット17は、筐体10の動きに応じた動き信号を出力する動き信号出力手段として機能する。
このように、本実施の形態では、加速度値(ax、ay)が単純に積分されて速度値(Vx、Vy)が算出されるのではなく、加速度値(ax、ay)及び角速度値(ωψ、ωθ)に基き、速度値(Vx、Vy)が算出される。これにより、ユーザの直感に合致した入力装置1の操作感が得られ、また、画面3上のポインタ2の動きも入力装置1の動きに正確に合致する。しかしながら、必ずしも加速度値(ax、ay)及び角速度値(ωψ、ωθ)に基き速度値(Vx、Vy)が得られなくてもよく、加速度値(ax、ay)が単純に積分されて速度値(Vx、Vy)が算出されてもよい。
MPU19は、算出された速度値(Vx、Vy)の情報を移動コマンドとして、送信機21及びアンテナ22を介して制御装置40に送信する(ステップ1104)。
制御装置40のMPU35は、アンテナ39及び受信機38を介して、速度値(Vx、Vy)の情報を受信する(ステップ1105)。この場合、入力装置1は、所定のクロックごとに、つまり所定時間ごとに速度値(Vx、Vy)を送信し、制御装置40は、所定のクロック数ごとに速度値を受信する。
制御装置40のMPU35は、速度値を受信すると、上記式(1)、(2)により、速度値を座標値に加算することで、新たな座標値(X(t)、Y(t))を生成する(ステップ1106)。この座標値の生成により、表示制御部42は、ポインタ2が画面3上で移動するように表示を制御する(ステップ1107)。
次に、操作部23がユーザにより操作された場合の入力装置1の動作について説明する。図36は、操作部23が操作された場合の、入力装置1の動作を示すフローチャートである。同図では、ユーザにより操作部23のうちボタン11が操作された場合について説明する。
ユーザによりボタン11が押圧されておらず、操作信号が入力されていない状態では(ステップ1201のNO)、MPU19は移動コマンド(速度値の情報を含む信号)を出力している。したがって、ユーザが入力装置1を手に持ち、入力装置1を動かすと、その動きに応じてポインタ2は、画面3上を移動する。ここで、速度値は、典型的には、図35に示す方法により算出される。これにより、ポインタ2の画面3上での動きをユーザの直感に合致した自然な動きとすることができる。
ユーザにより、ボタン11が押圧されると、例えば図示しないスイッチから操作信号が出力され、MPU19に入力される(ステップ1201のYES)。操作信号が入力されると、MPU19は、カウンタに、初期カウント値C2をセットする(ステップ1202)。
MPU19は、初期カウント値C2をセットすると、移動コマンドの出力が停止するか、変位量をゼロとした移動コマンドを出力する(ステップ1203)。つまり、MPU19は、操作信号の入力が開始された場合、画面3上でポインタ2が停止するように移動コマンドの出力を制御する(出力制御手段)。
移動コマンドの出力を停止すると、MPU19は、カウント値C(t)がゼロよりも大きいか否かを判定する(ステップ1204)。カウント値C(t)がゼロよりも大きい場合、MPU19は、角速度センサユニット15から出力された2軸の角速度値(ωψ、ωθ)を取得する。MPU19は、2軸の角速度値(ωψ、ωθ)の二乗平均を算出し、角速度値の絶対値|ω|を得る(ステップ1205)。あるいは、ステップ1205において、角速度値の絶対値|ω|の代わりに、第1の角速度値ωψの絶対値|ωψ|及び第2の角速度値ωθの絶対値|ωθ|のうち大きい方の値が代表値として用いられてもよい。
MPU19は、角速度値の絶対値|ω|を算出すると、角速度値の絶対値|ω|の大きさに応じたカウントダウン量ΔC(ω)を決定する(ステップ1206)。このカウントダウン量ΔC(ω)は、角速度値の絶対値|ω|が大きくなるに従って、大きくなる値である。カウントダウン量ΔC(ω)と、角速度値の絶対値|ω|との関係は、例えば、上述の図28に示す関係がある。
MPU19は、カウントダウン量ΔC(ω)を決定すると、前回のカウント値C(t-1)からカウントダウン量ΔC(ω)を減算し、新たなカウント値C(t)を算出することでカウントダウンを実行する(ステップ1207)。MPU19は、新たなカウント値C(t)を算出すると、移動コマンドの停止状態を維持し(ステップ1203)、新たなカウント値C(t)がゼロよりも大きいか否かを判定する(ステップ1204)。つまり、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ1203〜ステップ1207に示す処理を繰り返す(時間制御手段)。
カウント値C(t)がゼロ以下となった場合(ステップ1204のNO)、MPU19は、移動コマンドの出力を開始する(ステップ1208)。つまり、操作信号の入力が開始されてからカウント値C(t)がゼロ以下の値となるまで、画面3上でのポインタの移動が規制される。
ステップ1204において、カウント値C(t)がゼロと以下となる前(入力後規制時間の経過前)にボタン11が再び押圧され、再び操作信号の入力が開始された場合、MPU19は、ステップ1201に戻り、ステップ1201以降の処理を実行してもよい。
図36に示す処理により、ユーザがボタン11の押圧を開始してから入力後規制時間内は、ポインタの移動が規制される。これにより、ユーザがボタン11を操作するときに入力装置1に力が加えられて入力装置1が動くことで、ポインタ2が画面3上で動いてしまうことを防止することができる。さらに、本実施形態では、角速度値の絶対値|ω|が大きくなるに従って、入力後規制時間が短縮するように入力後規制時間が制御される。これにより、例えば、ユーザがボタン11をクリックし、すぐにポインタ2の移動を開始させようとして入力装置1を振った場合、速やかにポインタ2の移動が開始される。これにより、ユーザは、ボタン11の操作後にスムーズにポインティング操作へ移行することができるため、操作感が向上する。
本実施形態の説明では、入力装置1のボタン11が押圧される場合について説明した。しかしこれに限られず、入力装置1に設けられた、ボタン12、13、各種の操作ボタン29、及び電源スイッチ28のうち少なくとも1つが押圧された場合に、図36に示した処理を実行してもよい。他の各実施形態についても同様である。
図35及び図36に示した処理は、主に制御装置40が実行してもよい。この場合、制御装置40は、入力装置1から出力された、角速度値(ωψ、ωθ)の情報、加速度値の情報(ax、ay)の情報、及び操作信号を、アンテナ39を介して受信する。制御装置40のMPU35は、角速度値(ωψ、ωθ)、及び加速度値(ax、ay)に基づいて速度値を算出する。MPU35は、速度値に応じた第1の制御信号を生成し、表示制御部42は、この速度値に応じた速度でポインタ2が画面上で移動するように表示を制御する。制御装置40のMPU35は、操作信号を受信すると、この操作信号に応じた第2の制御信号を生成し、各種の処理を実行する。
MPU35は、操作信号の入力が解除されたと判断した場合、図36に示すステップ1202〜ステップ1207に示す処理を実行し、入力後規制時間を可変に制御する。
次に操作部23が操作された場合の動作についてのさらに別の実施の形態について説明する。
図37は、本実施形態に係る入力装置の動作を示すフローチャートである。本実施形態に係る入力装置1は、角速度値だけでなく、角加速度値にも関連して入力後規制時間が可変に制御される点において上述の図36に示した実施形態と異なる。従って、その点を中心に説明する。
図37に示すように、ステップ1301〜ステップ1306では、図36のステップ1201〜1206と同様の処理が実行される。MPU19は、角速度値の絶対値|ω|に応じた第1のカウントダウン量ΔC(ω)を決定すると(ステップ1306)、MPU19は、2軸の角速度値(ωψ、ωθ)をそれぞれ微分して2軸の角加速度値(Δωψ、Δωθ)を算出する。MPU19は、この2軸の角加速度値(Δωψ、Δωθ)の二乗平均を算出して、角加速度値の絶対値|Δω|を得る(ステップ1307)。あるいは、ステップ1307において、角加速度の絶対値|Δω|の代わりに、第1の角加速度値の絶対値|Δωψ|及び第2の角加速度値の絶対値|Δωθ |のうちいずれか大きいほうの値が代表値として用いられてもよい。
MPU19は、角加速度値の絶対値|Δω|を算出すると、この角加速度値の絶対値|Δω|の大きさに応じた第2のカウントダウン量ΔC(Δω)を決定する(ステップ1308)。この第2のカウントダウン量ΔC(Δω)は、角加速度値の絶対値|Δω|が大きくなるに従って大きくなる値である。角加速度の絶対値|Δω|と、第2のカウントダウン量ΔC(Δω)との関係は、例えば、上述の図28に示す関係がある。
MPU19は、第2のカウントダウン量ΔC(Δω)を決定すると、前回のカウント値C(t-1)から第1のカウントダウン量ΔC(ω)及び第2のカウントダウン量ΔC(Δω)を減算し、新たなカウント値C(t)を算出する(ステップ1309)。MPU19は、以後、カウント値C(t)がゼロ以下となるまでステップ1303〜ステップ1309までの処理を繰り返す。そして、MPU19は、カウント値C(t)がゼロ以下となった場合に(ステップ1304のNO)、移動コマンドの出力を開始する(ステップ1310)。
図37に示す処理により、角速度値だけでなく、角加速度値にも応じて入力後規制時間が可変に制御されるため、適切に入力後規制時間を短縮することができる。
本実施形態では、第1のカウントダウン量ΔC(ω)と、第2のカウントダウン量ΔC(Δω)とがそれぞれ別々に決定されているが、たとえば、ルックアップテーブルなどにより角速度値及び角加速度値に応じた1つのカウントダウン量ΔC(ω、Δω)が決定されてもよい。
本実施形態では、角速度値及び角加速度値に応じて入力後規制時間が可変に制御される場合について説明した。しかし、これに限られず、速度値及び加速度値に応じて入力後規制時間が可変に制御されてもよい。あるいは、角速度値、角加速度値、速度値、加速度値、その他筐体10の動きに応じた値のうちから2つを取る組み合わせで、入力後規制時間が可変に制御されてもよい。
本実施形態では、異なる2つの物理量の信号に応じて入力後規制時間が可変に制御される場合について説明したが、3つ、あるいはそれ以上のそれぞれ異なる物理量の信号に応じて入力後規制時間が可変に制御されてもよい。
次に操作部23が操作された場合の動作についてのさらに別の実施の形態について説明する。
例えば、ポインタの細かい操作が苦手なユーザは、手振れが大きい場合があり、ボタン11を押圧してからより長い時間ポインタが停止していてほしいと望む場合がある。そこで、本実施形態では、角速度値の信号のうち、手振れに相当する周波数範囲の信号が大きくなるに従って、入力後規制時間を延長するように入力後規制時間を制御する。従って、その点を中心に説明する。
図38は、本実施形態に係る入力装置1の動作を示すフローチャートである。
図38に示すように、ステップ1401〜ステップ1408では、図37のステップ1301〜ステップ1308と同様の処理が実行される。MPU19は、角加速度値の絶対値|Δω|に応じた第2のカウントダウン量ΔC(Δω)を算出すると(ステップ1408)、2軸の角速度値(ωψ、ωθ)をそれぞれ周波数分析する。MPU19は、角速度値(ωψ、ωθ)の信号のうち、手振れに相当する周波数範囲(例えば、1〜20Hz)のピーク値を検出する。MPU19は、2軸の角速度値についてのそれぞれのピーク値の平均値を算出し、手振れ量代表値Pを決定する(ステップ1409)。あるいは、2つのピーク値のうち、大きい方の値を手振れ量代表値Pとしてもよい。
あるいは、ステップ1409において、周波数分析の代わりに、バンドパスフィルタやハイパスフィルタを通過させた後の角速度値の絶対値|ω|が用いられ、手振れ量代表値Pが決定されてもよい。
MPU19は、手振れ量代表値Pを決定すると、この手振れ量代表値Pに応じた手振れカウントダウン量ΔC(P)を決定する(ステップ1410)。この手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って大きくなる値である。手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って、1次関数的に大きくなってもよく、多次関数的、あるいは指数関数的に大きくなってもよい。または、手振れカウントダウン量ΔC(P)は、手振れ量代表値Pが大きくなるに従って、2段階的、あるいは多段階的に大きくなってもよい。
MPU19は、手振れカウントダウン量ΔC(P)を決定すると、前回のカウント値C(t-1)から第1のカウントダウン量ΔC(ω)、及び第2のカウントダウン量ΔC(Δω)を減算し、手振れカウントダウン量ΔC(P)を加算することで、新たなカウント値C(t)を算出する(ステップ1411)。以降、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ1403〜ステップ1411に示す処理を繰り返す。そして、MPU19は、カウント値C(t)がゼロ以下となった場合に(ステップ1404のNO)、移動コマンドの出力を開始する(ステップ1412)。
図38に示す処理により、手振れが大きいほど、入力後規制時間を延長するように入力後規制時間が制御される。これにより、例えば、手振れの大きなユーザであっても、ポインティング操作が容易となり、操作感を向上させることができる。
ステップ1410で決定される手振れカウントダウン量ΔC(P)には、上記式(3)に示す制限が課せられていてもよい。
つまり、手振れカウントダウン量ΔC(P)は、最大でも第1のカウントダウン量と第2のカウントダウン量の和から1少ない値を超えないように、制限が課せられてもよい。これにより、手振れが大きい場合に、ステップ1411に示すカウントダウンが進行せずに、入力後規制時間が永遠に終了しないことを防止することができる。
本実施形態では、第1のカウントダウン量ΔC(ω)、第2のカウントダウン量ΔC(Δω)、手振れカウントダウン量ΔC(P)がそれぞれ別々に決定されているが、たとえば、ルックアップテーブルなどにより1つのカウントダウン量ΔC(ω、Δω、P)が決定されてもよい。
本実施形態では、異なる2つの物理量の信号(角速度値、及び角加速度値)と、手振れ量の信号を利用して、入力後規制時間のカウントを実行する場合について説明した。しかし、これに限られず、1つの物理量の信号(例えば、角速度値)と、手振れ量の信号とを利用して入力後規制時間のカウントを実行してもよい。あるいは、手振れ量の信号のみを利用して入力後規制時間のカウントを実行することも可能である。
次に操作部23が操作された場合の動作についてのさらに別の実施の形態について説明する。
図36から図38に示す実施形態では、ユーザによりボタン11の押圧が開始されてから、入力後規制時間内は、ポインタ2の移動が規制される場合について説明した。一方、本実施形態では、ユーザによりボタン11の押圧が解除された場合にも、その押圧の解除から所定時間内は、ポインタ2の移動が規制される。従って、その点を中心に説明する。なお、本実施形態では、この解除後規制時間は、固定とされている。
図39は、本実施形態に係る入力装置の動作を示すフローチャートである。
ユーザによりボタン11が押圧されると、MPU19に操作信号が入力される(ステップ1501のYES)。操作信号が入力されると、MPU19は、カウンタに初期カウント値C2をセットする(ステップ1502)。この初期カウント値C2からカウント値C(t)のカウントダウンが開始され、カウント値C(t)がゼロ以下となったときが入力後規制時間となる。
MPU19は、初期カウント値C2をセットすると、移動コマンドの出力を停止するか、あるいは、変位量をゼロとした移動コマンドの出力を開始する(ステップ1503)。これにより、ボタン11の押圧開始時に、入力装置1が動くことで、ポインタ2が画面3上で移動してしまうことを防止することができる。
次に、MPU19は、カウント値C(t)がゼロより大きいか否かを判定し(ステップ1504)、ゼロより大きい場合、操作信号の入力が解除されたか否かを判定する(ステップ1505)。操作信号の入力が解除されていない場合、角速度値の絶対値|ω|の大きさに応じたカウントダウン量ΔC(ω)を決定し(図28参照)、カウントダウンを実行する(ステップ1506〜ステップ1508)。以降、MPU19は、カウント値C(t)がゼロ以下となるまで、ステップ1503〜ステップ1508に示す処理を繰り返す。これにより、角速度値の絶対値|ω|の大きさに応じて入力後規制時間が可変に制御される。
操作信号の入力が解除されずに(ステップ1505のNO参照)、カウント値C(t)がゼロ以下となった場合(ステップ1504のNO)、移動コマンドの出力が開始される(ステップ1509)。つまり、ボタン11の押圧が開始されてから、その押圧が解除されずに入力後規制時間が経過した場合、移動コマンドの出力が開始される。この場合、画面3上では、例えば、ドラッグの動作の表示がされ、ポインタ2及びアイコン4が画面3上で移動する。
ここで、ドラッグの動作を実現するために、例えば、入力装置1は、ボタン11が押圧されている間は、押圧コードを出力すればよい。制御装置40のMPU35は、押圧コードと、移動コマンドとが同時に入力されている場合にドラッグの動作を画面3上で表示する。
すなわち、本実施形態では、入力後規制時間は、ボタン11の押圧が開始されてからポインタ2が画面3上で停止している時間であって、かつ、ボタン11の押圧が開始されてからドラッグが開始されるまでの時間である。この入力後規制時間が角速度値の絶対値が大きくなるほど短縮するように制御される。これにより、例えば、ユーザがボタン11の押圧を維持したまま、入力装置1を振った場合、速やかにドラッグの動作を画面3上で開始することができる。これにより、ユーザのポインティング操作の操作感を向上させることができる。
入力装置1のMPU19は、移動コマンドを出力すると、操作信号の入力が解除されたか否かを判定する(ステップ1511)。ユーザによりボタン11の押圧が解除され、操作信号の入力が解除された場合、MPU19は、初期値C’をカウンタにセットする(ステップ1512)。この初期値C’からカウント値C(t)のカウントダウンが開始され、カウント値C(t)がゼロとなったときが解除後規制時間となる。この解除後規制時間(固定)は、典型的には、0.2秒であるが、0.2秒以下であってもよく、0.2秒以上であってもよい。
MPU19は、初期値C’をカウンタにセットすると、移動コマンドの出力を停止するか、変位量をゼロとした移動コマンドの出力を開始する(ステップ1513)。なお、ステップ1511において、操作信号の入力が解除された場合、MPU19は、押圧コードの出力を停止する。
制御装置40のMPU35は、入力装置1からの押圧コード、及び移動コマンドの入力が解除されると、画面3上でのドラッグの動作の表示を終了し、ドロップの表示を実行する。
入力装置1のMPU19は、移動コマンドの出力を停止すると、カウント値C(t)がゼロであるか否かを判定する(ステップ1514)。カウント値C(t)がゼロでない場合、MPU19は、操作信号が入力されたか否かを判定する(ステップ1515)。操作信号が入力されていない場合、MPU19は、前回のカウント値C(t-1)から1を減算し、新たなカウント値C(t)を算出することでカウントダウンを実行する(ステップ1516)。以降、MPU19は、カウント値C(t)がゼロとなるまで、ステップ1513〜ステップ1516に示す処理を繰り返し、移動コマンドの出力の停止状態を維持する。
カウント値C(t)がゼロとなった場合(ステップ1514のYES)、MPU19は、移動コマンドの出力を開始する。つまり、ユーザがボタン11の押圧を解除してからカウント値C(t)がゼロとなるまでの時間(解除後規制時間)は、画面3でのポインタの移動が規制される。これにより、例えば、ユーザがボタン11の押圧を解除するときに入力装置1が動くことで、ポインタ2及びアイコンが画面3上で動いてしまい、ドロップの位置がずれてしまうことを防止することができる。
解除後規制時間内に、ユーザによりボタン11が押圧され、操作信号の入力が開始された場合(ステップ1515のYES)、ステップ1502に戻り、操作信号の入力から入力後規制時間内は、ポインタの移動が規制される。
ここで、ステップ1505において、MPU19は、操作信号の入力から入力後規制時間経過前に操作信号の入力が解除された場合(ステップ1505のYES)、移動コマンドの出力を開始する(ステップ1510)。
あるいは、操作信号の入力から入力後規制時間経過前に操作信号の入力が解除された場合(ステップ1505のYES)、破線で示すように、MPU19は、ステップ1512以降の処理を実行してもよい。この場合、MPU19は、カウント値C(t)をリセットして、新たに初期値C’をカウンタにセットして、解除後規制時間のカウントダウンを開始する。これにより、例えば、ユーザがボタン11をクリックしたときの押圧解除時に入力装置1が動くことで、ポインタ2が画面3上で動いてしまうことを防止することができる。したがって、コマンドが発行される前に、ポインタ2がアイコン4から外れてしまうことなどを防止することができる。
ステップ1506〜ステップ1508において、図37に示したステップ1305〜ステップ1309の処理を実行してもよい。これにより、適切に入力後規制時間を短縮することができる。あるいは、ステップ1506〜ステップ1508において、図38に示したステップ1405〜ステップ1411の処理を実行してもよい。これにより、例えば、手振れの大きなユーザであっても、ポインティング操作が容易となる。
次に、図35のステップ1103において算出される速度値(Vx、Vy)の算出方法について説明する。
図40は、その入力装置1の動作を示すフローチャートである。図41は、この速度値の算出方法の基本的な考え方を説明するための図である。なお、以降の説明では、第1の角速度値ωψ、及び第2の角速度値ωθをそれぞれ、Y軸の周りの角速度値ωψ、X軸周りの角速度値ωθと呼ぶ場合がある。
図41は、入力装置1を例えば左右方向(ヨー方向)へ振って操作するユーザを上から見た図である。図41に示すように、ユーザが自然に入力装置1を操作する場合、手首の回転、肘の回転及び腕の付け根の回転のうち少なくとも1つによって操作する。したがって、入力装置1の動きと、この手首、肘及び腕の付け根の回転とを比較すると、以下に示す1.2.の関係があることが分かる。
1.入力装置1の加速度センサユニット16が配置された部分(以下、先端部)のY軸周りの角速度値ωψは、手首の回転による角速度、肘の回転による角速度、及び腕の付け根の回転による角速度の合成値である。
2.入力装置1の先端部の速度値Vxは、手首、肘、及び腕の付け根の角速度に、それぞれ、手首と先端部との距離、肘と先端部との距離、腕の付け根と先端部との距離を乗じた値の合成値である。
ここで、微小時間での入力装置1の回転運動について、入力装置1は、Y軸に平行であり、時間ごとに位置が変化する中心軸を中心に回転していると考えることができる。この時間ごとに位置が変化する中心軸と、入力装置1の先端部との距離を、Y軸周りの回転半径Rψ(t)とすると、入力装置1の先端部の速度値Vxと、角速度値ωψとの関係は、以下の式(8)で表される。すなわち、速度値Vxは、Y軸周りの角速度値ωψに、中心軸と先端部との距離Rψ(t)を乗じた値となる。なお、本実施の形態では、センサユニット17の回路基板25上に、加速度センサユニット16及び角速度センサユニット15が一体的に配置されている。したがって、回転半径R(t)は中心軸からセンサユニット17までの距離となる。しかし、加速度センサユニット16と角速度センサユニット15とが、筐体10内で離れて配置される場合には、上記したように、中心軸から加速度センサユニット16までの距離が回転半径R(t)となる。
Vx=Rψ(t)・ωψ・・・(8)。
式(8)に示すように、入力装置1の先端部の速度値と、角速度値との関係は、比例定数をR(t)とした比例関係、つまり、相関関係にある。
上記式(4)を変形して(9)式を得る。
Rψ(t)=Vx/ωψ・・・(9)。
式(9)の右辺は、速度のディメンジョンである。この式(9)の右辺に表されている速度値と角速度値とがそれぞれ微分され、加速度、あるいは加速度の時間変化率のディメンジョンとされても相関関係は失われない。同様に、速度値と角速度値とがそれぞれ積分され、変位のディメンジョンとされても相関関係は失われない。
したがって、式(9)の右辺に表されている速度及び角速度をそれぞれ変位、加速度、加速度の時間変化率のディメンジョンとして、以下の式(10)、(11)、(12)が得られる。
Rψ(t)=x/ψ・・・(10)
Rψ(t)=ax/Δωψ・・・(11)
Rψ(t)=Δax/Δ(Δωψ)・・・(12)。
上記式(9)、(10)、(11)、(12)のうち、例えば式(11)に注目すると、加速度値axと、角加速度値Δωψが既知であれば、回転半径Rψ(t)が求められることが分かる。上述のように、第1の加速度センサ161は、ヨー方向の加速度値axを検出し、第1の角速度センサ151は、Y軸の周りの角速度値ωψを検出する。したがって、Y軸周りの角速度値ωψが微分され、Y軸周りの角加速度値Δωψが算出されれば、Y軸周りの回転半径Rψ(t)が求められる。
Y軸周りの回転半径Rψ(t)が既知であれば、この回転半径Rψ(t)に、第1の角速度センサ151によって検出されたY軸の周りの角速度値ωψを乗じることで、入力装置1のX軸方向の速度値Vxが求められる(式(11)参照)。すなわち、ユーザの回転の操作量そのものがX軸方向の線速度値に変換され、ユーザの直感に合致した速度値となる。したがって、ポインタ2の動きが入力装置1の動きに対して自然な動きとなるため、ユーザによる入力装置の操作性が向上する。
この速度値の算出方法については、ユーザが入力装置1を上下方向(ピッチ方向)へ振って操作する場合にも適用することができる。
図40では、式(11)が用いられる例について説明する。入力装置1のMPU19は、角速度センサユニット15からの角速度値(ωψ、ωθ)を微分演算することで、角加速度値(Δωψ、Δωθ)を算出する(ステップ1601)。
MPU19は、加速度センサユニット16からの加速度値(ax、ay)と、角加速度値(Δωψ、Δωθ)とを用いて、式(11)、(13)により、それぞれY軸周り及びX軸周りの回転半径(Rψ(t)、Rθ(t))を算出する(ステップ1602)。
Rψ(t)=ax/Δωψ・・・(11)
Rθ(t)=ay/Δωθ・・・(13)。
回転半径が算出されれば、式(8)、(14)により、速度値(Vx、Vy)が算出される(ステップ1603)。
Vx=Rψ(t)・ωψ・・・(8)
Vy=Rθ(t)・ωθ・・・(14)
このように、ユーザによる入力装置1の回転の操作量そのものがX軸及びY軸方向の線速度値に変換され、ユーザの直感に合致した速度値となる。
また、加速度センサユニット16で検出された加速度値(ax、ay)が、そのまま用いられることにより、計算量が少なくなり、入力装置1の消費電力を減らすことができる。
MPU19は、加速度センサユニット16から所定のクロックごとに(ax、ay)を取得し、例えば、それに同期するように速度値(Vx、Vy)を算出すればよい。あるいは、MPU19は、複数の加速度値(ax、ay)のサンプルごとに、速度値(Vx、Vy)を1回算出してもよい。
次に、図40と同様に、回転半径を利用して速度値(Vx、Vy)を算出する他の実施形態について説明する。図42は、その入力装置1の動作を示すフローチャートである。図42では、上記式(12)が用いられる例について説明する。
入力装置1のMPU19は、加速度センサユニット16からの加速度値(ax、ay)の微分演算を行う。これにより、加速度の時間変化率(Δax、Δay)が算出される(ステップ1701)。同様に、MPU19は、角速度センサユニット15からの角速度値(ωψ、ωθ)の2階の微分演算を行うことで、角加速度の時間変化率(Δ(Δωψ )、Δ(Δωθ))を算出する(ステップ1702)。
角加速度の時間変化率が算出されると、MPU19は、Y軸周りの角加速度の時間変化率の絶対値|Δ(Δωψ)|が、閾値th1を超えるか否かを判定する(ステップ1703)。上記|Δ(Δωψ)|が閾値th1を超える場合には、MPU19は、X軸方向の加速度の時間変化率Δaxを、Y軸周りの角加速度の時間変化率Δ(Δωψ)で除することで、Y軸周りの回転半径Rψ(t)を算出する(ステップ1704)。すなわち、X軸方向の加速度の時間変化率Δaxと、Y軸周りの角加速度の時間変化率Δ(Δωψ)との比を回転半径Rψ(t)として算出する(式(12))。|Δ(Δωψ)|の閾値th1は適宜設定可能である。
この回転半径Rψ(t)の信号は、例えばローパスフィルタに通される(ステップ1705)。ローパスフィルタで高周波数域のノイズが除去された回転半径Rψ(t)の情報はメモリに記憶される(ステップ1706)。このメモリには、回転半径Rψ(t)の信号が所定のクロックごとに更新して記憶される。
入力装置1のMPU19は、この回転半径Rψ(t)に、Y軸周りの角速度値ωψを乗じることで、X軸方向の速度値Vxを算出する(ステップ1708)。
一方で、MPU19は、上記|Δ(Δωψ)|が、閾値th1以下である場合には、メモリに記憶された回転半径Rψ(t)を読み出す(ステップ1707)。この読み出された回転半径Rψ(t)に、Y軸周りの角速度値ωψを乗じることで、X軸方向の速度値Vxを算出する(ステップ1708)。
上記ステップ1701〜1708の処理が行われる理由として、以下の2つの理由がある。
1つは、上記式(12)の回転半径Rψ(t)を求めて、ユーザの直感に合致した線速度を求めるためである。
2つ目は、この速度値(Vx、Vy)が算出される過程において、重力の影響を除去するためである。入力装置1が基本姿勢から、ロール方向またはピッチ方向に傾いた場合、重力の影響によって、入力装置1の実際の動きとは違った検出信号を出力してしまう。例えば入力装置1がピッチ方向に傾いた場合、加速度センサ162からそれぞれ重力加速度の成分値が出力される。したがって、この重力加速度の各成分値の影響を除去しない場合には、ポインタ2の動きがユーザの感覚にそぐわない動きとなってしまう(図9、10参照)。
そこで、ユーザの操作による入力装置1の移動慣性成分(動きのみ)に着目した加速度値の時間変化率に比べ、その入力装置1の動きにより発生する重力加速度の成分値の時間変化率の方が小さいことを利用する。その重力加速度の成分値の時間変化率は、ユーザの操作による移動慣性成分値の時間変化率の1/10のオーダーである。加速度センサユニット16から出力される値は、その両者が合成された値である、すなわち、加速度センサユニット16から出力される信号は、ユーザの操作による移動慣性成分値の時間変化率に、重力加速度の成分値である低周波成分値が重畳された信号となる。
したがって、ステップ1701では、加速度値が微分演算されることで、加速度の時間変化率が求められ、これにより、重力加速度の成分値の時間変化率が除去される。これにより、入力装置1の傾きによる重力加速度の分力の変化が生じる場合であっても、適切に回転半径を求めることができ、この回転半径から適切な速度値を算出することができる。
なお、上記低周波成分値には、重力加速度の成分値のほか、例えば加速度センサユニット16の温度ドリフト、あるいは、DCオフセット値が含まれる場合もある。
また、本実施の形態では、式(12)が用いられるので、ステップ1702では、角速度値ωψが2階微分され、高周波数域のノイズがその角速度の演算値に乗ってしまう。この|Δ(Δωψ)|が大きい場合問題ないが、小さい場合S/Nが悪化する。S/Nの悪化した|Δ(Δωψ)|が、ステップ1708でのRψ(t)の算出に用いられると、Rψ(t)や速度値Vxの精度が劣化する。
そこで、ステップ1703では、ステップ1702で算出されたY軸周りの角加速度の時間変化率Δ(Δωψ)が利用される。|Δ(Δωψ) |が閾値th1以下の場合、以前にメモリに記憶されたノイズの少ない回転半径Rψ(t)が読み出され(ステップ1707)、読み出された回転半径Rψ(t)がステップ1708における速度値Vxの算出に用いられる。
ステップ1709〜1714では、以上のステップ1703〜1708までの処理と同様に、MPU19は、Y軸方向の速度値Vyを算出する。つまり、MPU19は、X軸周りの角加速度の時間変化率の絶対値|Δ(Δωθ)|が、閾値th1を超えるか否かを判定し(ステップ1709)、閾値th1を超える場合には、この角加速度の時間変化率を用いてX軸周りの回転半径Rθ(t)を算出する(ステップ1710)。
回転半径Rθ(t)の信号は、ローパスフィルタに通され(ステップ1711)、メモリに記憶される(ステップ1712)。閾値th1以下である場合には、メモリに記憶された回転半径Rθ(t)が読み出され(ステップ1713)、この回転半径Rθ(t)に基いてY軸方向の速度値Vyが算出される(ステップ1714)。
なお、本実施の形態では、ヨー方向及びピッチ方向の両方向について閾値を同じ値th1としたが、両方向で異なる閾値が用いられてもよい。
ステップ1703において、Δ(Δωψ)に代えて、角加速度値(Δωψ)が閾値に基き判定されてもよい。ステップ1709についても同様に、Δ(Δωθ)に代えて、角加速度値(Δωθ)が閾値に基き判定されてもよい。図42に示したフローチャートでは、回転半径R(t)を算出するために式(12)が用いられたが、式(12)が用いられる場合、角加速度値(Δωψ、Δωθ)が算出されるので、角加速度値(Δωψ、Δωθ)が閾値に基き判定されてもよい。
次に、ステップ1704または1710で説明した回転半径(Rψ (t)、Rθ (t))の算出方法についての他の実施の形態を説明する。図43は、そのときの入力装置1の動作を示すフローチャートである。
本実施形態では、回帰直線の傾きを利用して、回転半径を算出する。上述のように、回転半径は、加速度変化率と角加速度変化率との比である。本実施形態は、この加速度変化率と角加速度変化率との比を算出するために、回帰直線の傾きを利用する。
MPU19は、加速度値(ax、ay)及び角速度値(ωψ、ωθ)をそれぞれ、1階微分、2階微分し、加速度変化率(Δax、Δay)及び角加速度変化率(Δ(Δωψ )、Δ(Δωθ))を算出する(ステップ1801、1802)。この加速度変化率(Δax、Δay)、及び角加速度変化率(Δ(Δωψ )、Δ(Δωθ))のn回分の履歴が、例えばメモリに記憶され、以下の式(15)、(16)により、回帰直線の傾き(A1、A2)が算出される(ステップ1803)。この回帰直線の傾きは、加速度変化率と角加速度変化率との比、つまり、回転半径(Rψ (t)、Rθ (t))である。なお、参考として、回帰直線の切片(B1、B2)の算出方法を式(17)、(18)に示す。
A1=Rθ(t)=[{Σ(Δ(Δωψj))2・Σ(Δayj)2}−{ΣΔ(Δωψj)・ΣΔ(Δωψj)・Δayj}]/[n・Σ(Δ(Δωψj))2−{ΣΔ(Δωψj)}2]・・・(15)
A2=Rψ(t)=[{Σ(Δ(Δω θj))2・Σ(Δaxj)2}−{ΣΔ(Δωθj)・ΣΔ(Δωθj)・Δaxj}]/[n・Σ(Δ(Δωθj))2−{ΣΔ(Δωθj)}2]・・・(16)
B1=[{n・ΣΔ(Δωψj)・Δayj}−{ΣΔ(Δωψj)・ΣΔayj}]/[n・Σ(Δ(Δωψj))2−{ΣΔ(Δωψj)}2]・・・(17)
B2=[{n・ΣΔ(Δωθj)・Δaxj}−{ΣΔ(Δωθj)・ΣΔaxj}]/[n・Σ(Δ(Δωθj))2−{ΣΔ(Δωθj)}2]・・・(18)。
上記式(15)〜(18)中のnは、加速度変化率(Δax、Δay)、及び角加速度変化率(Δ(Δωψ )、Δ(Δωθ))のサンプリング数を示す。このサンプリング数nは、演算誤差が最小となるように適宜設定される。
回転半径が算出されると、図42のステップ1708及び1714と同様に、回転半径に基づいて速度値が算出される(ステップ1804)。
なお、回転半径の信号、または速度値の信号がローパスフィルタにかけられることで、高周波数のノイズによる影響を軽減してもよい。
図43に示した実施の形態では、回帰直線の傾きを回転半径として算出することで、より正確な回転半径及び速度値(Vx、Vy)を算出することができる。したがって、画面3上に表示されるポインタ2の動きを、ユーザの直感に合致した自然な動きとすることができる。
以上の説明では、加速度変化率及び角加速度変化率のディメンジョンでの回帰直線の傾きの算出方法について説明した。しかし、これに限られず、変位及び角度、速度及び角速度、または、加速度及び角加速度のディメンジョンで、回帰直線の傾きが算出されてもよい。
また、図35のステップ1103において、上述の図15に示す処理により速度値が算出されてもよい。なお、回転半径に基づく速度値の算出方法は、上述の各実施形態のいずれにも適用することができる。
本発明に係る実施の形態は、以上説明した実施の形態に限定されず、他の種々の実施形態が考えられる。
上記各実施の形態では、2軸の加速度センサユニット、2軸の角速度センサユニットについて説明した。しかし、これに限られず、入力装置1は、例えば直交3軸の加速度センサ及び直交3軸の角速度センサの両方を備えていてもよいし、そのうちいずれか一方のみを備えていても、上述の各実施形態において示した処理を実現可能である。あるいは、入力装置1は、1軸の加速度センサ、または、1軸の角速度センサを備えている形態も考えられる。1軸の加速度センサまたは1軸の角速度センサが備えられる場合、典型的には、画面3で表示されるポインタ2のポインティングの対象となるUIが1軸上に複数配列されるような画面が考えられる。
あるいは、入力装置1は、加速度センサ、角速度センサの代わりとして、地磁気センサ、またはイメージセンサ等を備えていてもよい。
上記各実施の形態に係る入力装置は、無線で入力情報を制御装置に送信する形態を示したが、有線により入力情報が送信されてもよい。
上記各実施の形態では、入力装置の動きに応じて画面上で動くUIを、ポインタとして説明した。しかし、そのUIはポインタに限られず、キャラクタ画像、またはその他の画像であってもよい。
センサユニット17の、角速度センサユニット15及び加速度センサユニット16の検出軸は、上述のX’軸及びY’軸のように必ずしも互いに直交していなくてもよい。その場合、三角関数を用いた計算によって、互いに直交する軸方向に投影されたそれぞれの加速度が得られる。また同様に、三角関数を用いた計算によって、互いに直交する軸の周りのそれぞれの角速度を得ることができる。
上述の各実施形態では、ボタン11が押圧、または押圧の解除がされた場合に、それをトリガーとして、入力後規制時間(固定、可変)及び解除後規制時間(固定、可変)のうち少なくとも一方の時間内は、ポインタ2の動きが規制される場合について説明した。しかしこれに限られず、入力装置1に設けられたスクロールボタン(図示せず)が押圧されたとき、または押圧の解除がされたときに、それをトリガーとして入力後規制時間(固定、可変)及び解除後規制時間(固定、可変)のうち少なくとも一方の時間内は、画面3上でスクロールが規制されるような処理を実行してもよい。スクロールボタンとは、そのボタンが押圧されているとき、あるいは、そのボタンが押圧されていないときに画面上でスクロールが実行される機能を有するボタンである。スクロールボタンが押圧されているとき(または押圧されていないとき)上述の速度値は、画面3上で画像がスクロールする量に対応する。例えば、ユーザがスクロールボタンを押圧している状態で、入力装置1を上下方向へ振ると、その操作に応じて画面3上で画像が上下方向へスクロールする。制御装置40は、入力装置1を左右方向へ振った場合、画面3上で画像が横方向にスクロールするような処理を実行してもよい。
また、入力装置1に設けられたズームボタン(図示せず)が押圧されたとき、または押圧の解除がされたときに、それをトリガーとして入力後規制時間(固定、可変)及び解除後規制時間(固定、可変)のうち少なくとも一方の時間内は、画面3上でズームが規制されるような処理を実行してもよい。ズームボタンとは、そのボタンが押圧されているとき、あるいは、そのボタンが押圧されていないときに画面上でズームが実行される機能を有するボタンである。ズームボタンが押圧されているとき(または押圧されていないとき)上述の速度値は、画面3上で画像が拡大、縮小する量に対応する。例えば、ユーザが、ズームボタン押圧している状態で、入力装置1を上方へ振ると画面3上で画像が拡大する。一方、ユーザが入力装置1を下方へ振ると画面3上で画像が縮小する。
なお、画像のスクロール方向及び画像の拡大縮小の関係と、入力装置1の操作方向との関係は、適宜変更可能である。後述の各変形例についても、スクロール、ズーム、回転、または、その他の画面の画像の動きに関する処理を適用することができる。
以上の説明では、ユーザが入力装置1のボタン11を押圧したことによる操作信号の入力後、及び、それを解除したことによる操作信号の解除後の規制時間(固定、可変)のうち少なくとも一方の時間内は、ポインタ2の動き、スクロールによる画面の画像の動き、ズームによる画面の画像の動き、あるいは回転による画面の画像の動き等が規制された。
しかし、例えばユーザがボタン11を押したことによる操作信号に基づき、入力装置1が操作コマンド(例えば決定コマンド)を発生させた後、所定の時間内または可変時間内は、ポインタ2の動き、スクロールによる画面の動き、あるいはズームによる画面の動きが規制されてもよい。操作コマンドは、操作信号の入力が開始されるとき、その入力から所定時間経過後、その入力の解除されるとき、または、その解除から所定時間経過後に発生される。このことは、入力装置1がメインに実行してもよいし、制御装置40がメインに実行してもよい。制御装置40がメインに実行する場合、制御装置40は、入力装置1から送信された操作コマンド及び制御コマンドを受信する。制御コマンドとは、入力装置1の動き信号に基づく情報、例えば速度値、角速度値等の情報を含むコマンドである。制御装置40は、受信された制御コマンドに基づき、ポインタ2等の画像を動かすための移動情報を発生する。そして、制御装置40は、操作コマンドを受信してから所定時間以内または可変時間以内は、その画像の動きを停止するように、その移動情報の発生を制御する。移動情報とは、ポインタ2等の画像の速度情報または変位情報であり、制御装置40は、所定時間(または可変時間)に、それら速度情報または変位情報がゼロになるか、または出力しない。
次に、他の入力装置1の動作についての様々な変形例について説明する。図44はその各変形例を示す図である。
上記の各実施形態では、ポインタ2の動き、スクロールによる画面の画像の動き、あるいはズームによる画面の画像の動き等が「規制」、つまり停止される例を挙げた。しかし、これから説明する各変形例は、入力装置1に対する、それらの動きの「感度が変化する」例を示している。これらの変形例では、例えばユーザがボタン11を押したことによる操作信号に基づき、操作コマンド(例えば決定コマンド)の発生タイミングに時間的に関連して、入力装置1の動きに対する、ポインタ等の画像の動きの感度を変化させる制御コマンドが発生される例を示している。操作コマンドの発生のタイミングについては、上記した通りである。
入力装置1の動きに対する画像の動きの感度が変化する場合、所定のタイミングに応じて(すなわち、操作信号または操作コマンドの発生タイミングに時間的に関連して)その画像の動きが遅くなる。あるいは、入力装置1の動きに対する画像の動きの感度が変化する場合、その所定のタイミングに応じて画像の動きが速くなるように該感度が変化してもよい。
画像の動きの感度が変更される期間(画像の動きの感度を変化させる前記制御コマンドが発生される期間、以下、感度変更期間という。)が、操作情報の発生タイミングに時間的に関連するとは、例えば、上記各実施形態のように、操作信号の入力が開始された後、あるいはその入力が解除された後の所定期間にその感度が変更されることを意味する。
一方、感度変更期間が、操作コマンドの発生タイミングに時間的に関連するとは、図44における変形例で説明する、操作コマンドの直後または直前の一定または可変の時間であったり、その操作コマンドのパルス幅を含む一定または可変の時間であったり、様々である。
画像、例えばポインタ2の動きの感度を変化させるためには、ポインタ2の動きを決定付けるパラメータ、例えば速度、角速度、加速度、角加速度等に、その動きを遅くするための重み係数あるいは重み関数を乗じる、という方法が典型的である。
図44は、これらの変形例を説明するため図である。図44の説明では、特に明示がない限り、ボタン11がユーザにより押圧された場合について説明する。また、図44に示す矢印は、ポインタ2の動き(またはスクロール、ズーム等)が規制されている時間、または、上記動きの感度がある一定の第1の感度から、それとは異なる一定の第2の感度に変更されている期間(上記感度変更期間)を示している。ポインタ2の動きを規制するために、入力装置1は、速度値の送信を停止してもよく、変位量をゼロとした速度値を送信してもよい。一方、一点鎖線の矢印は、ポインタ2等の動き(またはスクロール、ズーム等)の規制時間が可変であること、または、感度変更期間が可変であることを示している。また、破線の矢印は、ポインタ2の動き(またはスクロール、ズーム等)が規制される時間の開始点が適宜変更可能なことを示している。
(第1の変形例)
図44(A)は、第1の変形例に係る入力装置1の動作を示すタイミングチャートである。図44(A)は、操作信号が入力されてから操作信号の入力が解除されるまで操作信号が出力される様子を示している。ユーザによりボタン11が押圧され、スイッチからの操作信号が入力されMPU19へ入力される。MPU19は、操作信号が入力されると、ユーザによりボタン11の押圧が解除され、スイッチからの操作信号の入力が解除されるまで速度値の出力を停止する(実線矢印参照)。これにより、ボタン11の押圧が開始されたときの作用により筐体10が動くことで、ポインタ2が画面上で動いてしまうことを防止することができる。ここで、MPU19は、操作信号の入力直後から速度値の送信を停止するのではなく、微少時間(例えば、0.05秒)経過後に速度値の出力を停止してもよい(点線矢印参照)。微少時間であれば、上記同様の作用効果を得ることができる。
ユーザによりボタン11の押圧が解除され、操作信号の入力が解除されると、MPU19は、カウント値C(t)のカウントダウンを開始し、解除後規制時間を可変に制御する。
以上、簡単に説明したが、操作信号の入力が開始されてから微少時間経過後にポインタの移動が規制される点(破線矢印)以外は上述の図27と同様であるため、動作についての詳細は省略する。なお、作用効果についても、図27と同様である。
本実施形態では、ボタン11が押圧される場合について説明しが、スクロールボタン、ズームボタンが押圧されたときに図44(A)に示す処理を実行してもよい。
以下、この動作について説明する。
ユーザは、スクロールボタンを押圧していない状態で入力装置1を振ることで、画面3上でスクロール操作を実行する。ユーザは、スクロールボタンを押圧することで、スクロール操作を規制することができる。そして再びスクロールボタンの押圧を解除し、画面3上でスクロール操作を実行する。ユーザが再びスクロールボタンの押圧を解除し、スクロール動作が画面上で開始される際、解除後規制時間内は、スクロール動作が画面上で規制される。これにより、スクロールボタンの押圧が解除されたときに筐体が動くことで、画面上でユーザの意図しないスクロール動作が実行されてしまうことを防止することができる。また、解除後規制時間は、角速度値などに応じて可変に制御されているため、スクロールを速やかに実行させたい場合には、速やかにスクロールを開始することができるとともに、手振れの大きなユーザであっても、スクロール操作が容易となる。なお、スクロール動作について説明したが、ズームにおいてもスクロールと同様の作用効果を奏する。
(第2の変形例)
図44(B)は、第2の変形例に係る入力装置の動作を示すタイミングチャートである。本実施形態以降の説明では、図44(A)のボタン押圧による操作信号の出力に関するタイミングチャートを参照しつつ説明する。
図44(B)は、ボタン11が押圧されたときに出力される決定コマンド(操作コマンドの一種)の出力波形を示している。図44(A)(B)に示すように、決定コマンドは、操作信号の入力が開始されたときに、短時間の矩形のパルスとして出力される。本実施形態では、MPU19は、操作信号が入力されたこと(ボタン11が押圧されたこと)をトリガーとして、決定コマンドを出力し、決定コマンドが出力されたことをトリガーとして入力後規制時間のカウントを開始する。MPU19は、入力後規制時間のカウントを開始すると、角速度値などの動き信号に応じて入力後規制時間を可変に制御する。なお、入力後規制時間が経過した場合であって、操作信号の入力が解除されていない場合、画面3上でドラッグの動作が実行されてもよい。
本実施形態では、パルス状の矩形の波形が決定コマンドであるとして説明した。しかしこれに限られず、パルス状の矩形の波形は、決定コマンド以外の操作コマンドであってもよい。操作コマンドは、操作されるボタンの種類によって異なる。後述の各実施形態でも同様である。
(第3の変形例)
図44(C)は、第3の変形例に係る入力装置の動作を示すタイミングチャートである。本実施形態では、操作信号が入力された(ボタン11が押圧された)直後に決定コマンドを発行するのではなく、操作信号が入力されてから、任意の時間経過後に決定コマンドを出力する。MPU19は、決定コマンドの出力、または、操作信号の入力と決定コマンドの出力との組み合わせをトリガーとして、入力後規制時間を制御する。
上方の矢印から順に動作を説明する。
(1)MPU19は、パルス状の決定コマンドを出力し終えたことをトリガーとしてポインタ2の動きの規制を開始し、角速度値などに応じて入力後規制時間を可変に制御する。入力後規制時間が経過した場合であって、操作信号が解除されていない場合、画面3上でドラッグの動作が実行されてもよい。
(2)MPU19は、パルス状の決定コマンドの出力を開始したことをトリガーとしてポインタ2の動きの規制を開始し、角速度値などに応じて入力後規制時間を可変に制御する。入力後規制時間が経過した場合であって、操作信号が解除されていない場合、画面3上でドラッグの動作が実行されてもよい。
(3)MPU19は、操作信号の入力を開始したことをトリガーとして、ポインタ2の動きの規制を開始し、角速度値などに応じて入力後規制時間を可変に制御する。なお、MPU19は、操作信号の入力後の直後からポインタ2の動きを規制するのではなく、操作信号を入力してから微少時間経過後にポインタ2の動きの規制を開始してもよい(点線矢印参照)。入力後規制時間が経過した場合は、画面上でドラッグの動作が実行されてもよい。
(4)MPU19は、操作信号の入力を開始したことをトリガーとしてポインタ2の動きの規制を開始し、パルス状の決定コマンドを出力し終えたことをトリガーとしてポインタ2の動きの規制を解除する。なお、操作信号の入力が開始されてから微少時間経過後にポインタ2の動きの規制を開始してもよい。
(5)MPU19は、操作信号の入力を開始したことをトリガーとしてポインタ2の動きの規制を開始し、パルス状の決定コマンドの出力が開始されたことをトリガーとしてポインタ2の動きの規制を解除する。なお、操作信号の入力が開始されてから微少時間経過後にポインタ2の動きの規制を開始してもよい。
本実施形態及び上述の第2の変形例で説明した処理は、例えば、上述の図24に示した入力装置91の符号ボタン98が押圧されたときの処理に適用してもよい。なお、TVのリモコンなどでは、ボタンの押圧開始時に操作コマンドが出力される場合が多い。
(第4の変形例)
図44(D)は、第4の変形例に係る入力装置の動作を示すタイミングチャートである。
本実施形態では、操作信号の入力が開始(ボタン11の押圧が開始)たことをトリガーとして決定コマンドを出力するのではなく、操作信号の入力が解除(ボタン11の押圧が解除)されたことをトリガーとして決定コマンドが出力される。MPU19は、決定コマンドを出力したことをトリガーとして解除後規制時間のカウントを開始する。MPU19は、加速度値などに応じて、解除後規制時間を可変に制御する。
(第5の変形例)
図44(E)は、第5の変形例に係る入力装置の動作を示すタイミングチャートである。
本実施形態では、操作信号の入力が解除された(ボタン11の押圧が解除された)直後に決定コマンドを発行するのではなく、操作信号の入力が解除されてから、任意の時間経過後に決定コマンドを出力する。MPU19は、決定コマンドの出力、または、操作信号の入力の解除と決定コマンドの出力との組み合わせをトリガーとして、解除後規制時間を制御する。
上方の矢印から順に動作を説明する。
(1)MPU19は、パルス状の決定コマンドを出力し終えたことをトリガーとしてポインタ2の動きの規制を開始し、角速度値などに応じて解除後規制時間を可変に制御する。
(2)MPU19は、パルス状の決定コマンドの出力を開始したことをトリガーとしてポインタ2の動きの規制を開始し、角速度値などに応じて解除後規制時間を可変に制御する。
(3)MPU19は、操作信号の入力が解除されたことをトリガーとして、ポインタ2の動きの規制を開始し、角速度値などに応じて解除後規制時間を可変に制御する。なお、MPU19は、操作信号の入力が解除された直後からポインタ2の動きを規制するのではなく、操作信号の入力が解除されてから微少時間経過後にポインタ2の動きの規制を開始してもよい(点線矢印参照)。
(4)MPU19は、操作信号の入力が解除されたことをトリガーとしてポインタ2の動きの規制を開始し、パルス状の決定コマンドを出力し終えたことをトリガーとしてポインタ2の動きの規制を解除する。なお、操作信号の入力が解除されてから微少時間経過後にポインタ2の動きの規制を開始してもよい。
(5)MPU19は、操作信号の入力が解除されたことトリガーとしてポインタ2の動きの規制を開始し、パルス状の決定コマンドの出力が開始されたことをトリガーとしてポインタ2の動きの規制を解除する。なお、操作信号の入力が解除されてから微少時間経過後にポインタ2の動きの規制を開始してもよい。
上述の第2の変形例及び第3の変形例で説明したMPU19の処理のうちの1つと、第4の変形例及び第5の変形例で説明したMPU19の処理のうちの1つとの組み合わせにより、入力装置1の処理を実行してもよい。これにより、上述の図32に示した実施形態と同様の作用効果を奏する。
(第6の変形例)
図44(F)は、第6の変形例に係る入力装置の動作を示すタイミングチャートである。
本実施形態の説明では、移動制御ボタン(図示せず)を操作した場合について説明する。移動制御ボタンとは、そのボタンが押圧されたときにポインタ2を移動させる機能を有するボタン、あるいは、そのボタンが押圧されていないときにポインタ2を移動させる機能を有するボタンである。ここで、ボタン11(決定ボタン)と、移動制御ボタンとが兼用であってもよい。本実施形態の説明では、移動制御ボタンは、ボタンが押圧されたときにポインタ2を移動させる機能を有するボタンであるとし、ボタン11と兼用であるとして説明する。また、MPU19は、移動制御ボタン(ボタン11)の押圧が解除されたことをトリガーとして決定コマンドを出力するとして説明する。
ユーザは、移動制御ボタンを押圧しつつ、筐体10を振り、ポインタ2を任意のアイコン4上に位置させる。ユーザは、ポインタ2を任意のアイコン4上に位置させると、移動制御ボタン11の押圧を解除する。MPU19は、移動制御ボタンの押圧が解除され、操作信号の入力が解除されると、ポインタ2の移動が規制されるように、移動コマンドの出力を停止する。また、MPU19は、操作信号の入力が解除されると、決定コマンドを出力する。本実施形態では、移動制御ボタンの押圧が解除されたときにポインタの移動が規制されるため、移動制御ボタンを離したときに筐体10が動くことで、アイコン4上からポインタ2がはずれてしまい、コマンドを発行することができない、などのユーザの意図しない処理が実行されてしまうことを防止することができる。なお、MPU19は、操作信号の入力が解除されてから任意の時間経過後に決定コマンドを出力してもよい(図44(E)参照)。また、微少時間であれば、操作信号の入力が解除されたときから所定時間経過後からポインタ2の移動を規制してもよい(破線矢印参照)。
ユーザは、再び移動制御ボタンを押圧し、ポインタの移動を開始させる。移動制御ボタンが押圧され、操作信号が入力されると、MPU19は、操作信号の入力が開始されたことをトリガーとして、入力後規制時間のカウントを開始し、角速度値に応じて入力後規制時間を可変に制御する。これにより、移動制御ボタンを押圧するときに筐体10が動くことでポインタ2がユーザの意図しない動きをすることを防止することができるとともに、ユーザが速やかにポインタの移動を開始することを希望する場合には、速やかにポインタの移動を開始することができる。また、手振れの大きなユーザであってもポインティング操作が容易となる。なお、MPU19は、決定コマンドを出力したことをトリガーとして入力後規制時間のカウントを開始してもよい(図44(B)参照)。
以上では、ボタンの押圧により操作信号の入力及び解除という表現により説明した。しかし、「操作情報が発生する」とは、その操作信号の入力及び解除により、操作部が操作されたことにより電気信号の状態が遷移することを意味し、すなわち、その入力及び解除の両方の状態を含むことを意味する。
つぎに、図44(F)で押圧されるボタンが、スクロールボタンであるとして説明する。
なお、スクロールボタンが押圧されている場合に、画面3上で画像がスクロールするとして説明する。
ユーザがスクロールボタンを押している状態で、筐体10を振り、画像をスクロールさせて任意の画像を画面上に表示させる。ユーザは、任意の画像を表示させると、スクロールボタンの押圧を解除し、スクロールを規制する。MPU19は、スクロールボタン11の押圧が解除され、操作信号の入力が解除されると、速度値の送信を規制する。これにより、スクロールボタンが解除されるときに筐体10が動くことで、画面上で画像がスクロールしてしまい、せっかく表示させた任意の画像がずれてしまうことを防止することができる。ユーザは、再びスクロールボタンを押圧することで、画面上で画像のスクロールを開始させる。MPU19は、スクロールボタンが押圧され、操作信号の入力が開始されると、操作信号の入力の開始をトリガーとして、入力後規制時間のカウントを開始し、加速度値などに応じて入力後規制時間を可変に制御する。MPU19は、入力後規制時間経過後に、速度値の送信を開始する。これにより、スクロールボタンを押圧するときに筐体10が動くことで画像がユーザの意図しない方向へスクロールするをすることを防止することができるとともに、ユーザが速やかにスクロールの開始を希望する場合には、速やかにスクロールを開始することができる。また、手振れの大きなユーザであってもスクロール操作が容易となる。
図44に示した各変形例にかかる各処理は、入力装置1がメインに実行してもよいし、制御装置40がメインに実行してもよい。制御装置40がメインに実行する場合、制御装置40は、入力装置1から操作情報、制御コマンド及び操作コマンドを受信する。制御装置40は、受信された制御コマンドに基づき、ポインタ2等の画像を動かすための移動情報を発生する。そして、制御装置40は、入力装置1の動きに対するポインタ2等の画像の動きの感度を変化させる移動情報を、操作情報または操作コマンドの受信タイミングに時間的に関連して発生させる。
上述の説明では、スクロール操作として説明したが、ズーム操作でも同様の作用効果を奏する。
以上の各実施形態では、入力装置と制御装置を備えた制御システムについて説明した。しかし、例えば入力装置のようなデバイスに表示部が設けられ、その表示部にポインタやその他の画像が表示されるハンドヘルド装置が用いられてもよい。ハンドヘルド装置としては、例えば携帯電話機、小型PC、PDA(Personal Digital Assistance)等が挙げられる。