(57)【特許請求の範囲】
【請求項１】
加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第１の時間前までの前記検知された加速度の分散値を算出し、当該分散値が所定の第１の設定値より大きい移動状態から、当該分散値が当該所定の設定値より大きくない静止状態へ遷移したか否かを判別し、前記移動状態から前記静止状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段と、
を備える携帯型コード読取装置。
【請求項２】
前記加速度検知手段は、３軸の加速度を検知し、
前記制御手段は、現在時点から前記第１の時間前までの前記検知された３軸の加速度の分散値を算出し、前記３軸のうちいずれか１つの軸について前記移動状態から前記静止状態へ遷移し、且つ他の２つの軸について前記移動状態でないか否かを判別し、前記１つの軸について前記移動状態から前記静止状態へ遷移し且つ前記他の２つの軸について前記移動状態でない場合に、前記読取手段のコード情報の読取を開始する請求項１に記載の携帯型コード読取装置。
【請求項３】
加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第２の時間前までの前記検知された加速度の平均値を算出し、当該加速度の平均値に基づいて、コード情報読取していない姿勢である第１の姿勢状態からコード情報読取する姿勢である第２の姿勢状態へ遷移したか否かを判別し、前記第１の姿勢状態から前記第２の姿勢状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段と、
を備える携帯型コード読取装置。
【請求項４】
所定方向の加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、所定時間の前記検知された所定方向の加速度の平均値を算出し、当該所定方向の加速度の平均値の変化量が所定の設定値よりも大きくなり、且つ所定の感度時間内に当該変化量が負の値になったか否かを判別し、前記変化量が前記所定の設定値よりも大きくなり且つ前記感度時間内に負の値になった場合に、前記読取手段のコード情報の読取を開始する制御手段と、
を備える携帯型コード読取装置。
【請求項５】
前記所定方向の加速度の平均値は、現在時点の所定の第３の時間前から所定の第４の時間前までの前記検知された所定方向の加速度の平均値である請求項４に記載の携帯型コード読取装置。
【請求項６】
コンピュータを、
加速度を所定周期で検知する加速度検知手段、
光を照射してコード情報を読み取る読取手段、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第１の時間前までの前記検知された加速度の分散値を算出し、当該分散値が所定の第１の設定値より大きい移動状態から、当該分散値が当該所定の設定値より大きくない静止状態へ遷移したか否かを判別し、前記移動状態から前記静止状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段、
として機能させるためのプログラム。
【請求項７】
コンピュータを、
加速度を所定周期で検知する加速度検知手段、
光を照射してコード情報を読み取る読取手段、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第２の時間前までの前記検知された加速度の平均値を算出し、当該加速度の平均値に基づいて、コード情報読取していない姿勢である第１の姿勢状態からコード情報読取する姿勢である第２の姿勢状態へ遷移したか否かを判別し、前記第１の姿勢状態から前記第２の姿勢状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段、
として機能させるためのプログラム。
【請求項８】
コンピュータを、
所定方向の加速度を所定周期で検知する加速度検知手段、
光を照射してコード情報を読み取る読取手段、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、所定時間の前記検知された所定方向の加速度の平均値を算出し、当該所定方向の加速度の平均値の変化量が所定の設定値よりも大きくなり、且つ所定の感度時間内に当該変化量が負の値になったか否かを判別し、前記変化量が前記所定の設定値よりも大きくなり且つ前記感度時間内に負の値になった場合に、前記読取手段のコード情報の読取を開始する制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯型コード読取装置及びプログラムに関する。
【背景技術】
【０００２】
従来、商品等に付されたバーコードのコード情報を読み取るレーザスキャナが知られている。このレーザスキャナとして、スキャン動作のトリガを自動的に検知するオートトリガ機能を有するものが知られている。
【０００３】
例えば、赤外線のＰＳＤ（Position Sensitive Detector）測距センサ等を搭載し、前方の物体（紙でも何でも）とスキャナ本体との距離をＰＳＤ測距センサ等がセンシングし、設定距離以内に物体があるということを検知することにより、スキャン動作のトリガを発生するレーザスキャナがあった。
【０００４】
また、照度センサを搭載し、スキャナ部のフード付開口部を何らかの物体で一定以上塞ぐことによって生じる照度の低下を照度センサが検出することによりスキャン動作のトリガを発生させるレーザスキャナがあった。
【０００５】
また、加速度センサによりユーザが筐体を振ったことを感知するとスキャン動作のトリガを発生して照準光を照射開始し、トリガボタン押下で照準光の照射を終了するバーコード読取装置が考えられている（例えば、特許文献１参照）。
【特許文献１】特開２００７−４８０４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来のＰＳＤ測距センサ等を搭載したレーザスキャナでは、直射日光に晒される屋外では誤動作するおそれがあり、バーコードのラベルの紙質等による乱反射又は強反射による誤動作が生じるおそれがあった。このため、屋内等、使用条件の制約があった。また、従来の照度センサを搭載したレーザスキャナでは、かなり近く（１〜２ｃｍ程度）までバーコードのラベルを近づけなければならないという制約があった。
【０００７】
従来の加速度センサを有するバーコード読取装置は、上記制約がない。しかし、このバーコード読取装置は、加速度センサから得られる加速度と所定閾値との単純な大小の判定しているのみであり、人間の手の特徴的な操作を安定して特定することが困難であった。このため、ユーザの手の特徴的な動きに対応するスキャン動作（コード情報読取）のトリガアクションを正確に検出できなかった。
【０００８】
本発明の課題は、ユーザの手の特徴的な動きに対応するコード情報読取のトリガアクションを正確に検出することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、請求項１に記載の携帯型コード読取装置は、
加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第１の時間前までの前記検知された加速度の分散値を算出し、当該分散値が所定の設定値より大きい移動状態から、当該分散値が当該所定の設定値より大きくない静止状態へ遷移したか否かを判別し、前記移動状態から前記静止状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段と、を備える。
【００１０】
請求項３に記載の携帯型コード読取装置は、
加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、現在時点から所定の第２の時間前までの前記検知された加速度の平均値を算出し、当該加速度の平均値に基づいて、コード情報読取していない姿勢である第１の姿勢状態からコード情報読取する姿勢である第２の姿勢状態へ遷移したか否かを判別し、前記第１の姿勢状態から前記第２の姿勢状態へ遷移した場合に、前記読取手段のコード情報の読取を開始する制御手段と、を備える。
【００１１】
請求項４に記載の携帯型コード読取装置は、
所定方向の加速度を所定周期で検知する加速度検知手段と、
光を照射してコード情報を読み取る読取手段と、
所定時間の前記検知された加速度の平均値及び分散値の少なくとも１つを算出し、当該算出した平均値及び分散値の少なくとも１つに基づいて、ユーザの手の特徴的な動きに対応する所定の状態遷移が発生したか否かを判別し、当該所定の状態遷移が発生した場合に、前記読取手段のコード情報の読取を開始すると共に、所定時間の前記検知された所定方向の加速度の平均値を算出し、当該所定方向の加速度の平均値の変化量が所定の設定値よりも大きくなり、且つ所定の感度時間内に当該変化量が負の値になったか否かを判別し、前記変化量が前記所定の設定値よりも大きくなり且つ前記感度時間内に負の値になった場合に、前記読取手段のコード情報の読取を開始する制御手段と、を備える。
【発明の効果】
【００１６】
本発明によれば、ユーザの手の特徴的な動きに対応するコード情報読取のトリガアクションを正確に検出できる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して本発明に係る好適な第１及び第２の実施の形態を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
【００１８】
（第１の実施の形態）
図１〜図１２を参照して、本発明に係る第１の実施の形態を説明する。先ず、図１を参照して、本実施の形態の装置構成を説明する。図１に、本実施の形態のＨＴ（Handy Terminal）１の内部構成を示す。
【００１９】
本実施の形態の携帯型コード読取装置としてのＨＴ１は、レーザ光照射により、商品等に付されたバーコードのコード情報を読み取る携帯型の装置である。図１に示すように、本実施の形態のＨＴ１は、制御手段としてのＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、フラッシュメモリ１４と、ＩＯ（Input Output）制御ブリッジ１５と、通信部１６と、操作部１７と、表示部１８と、タイマ１９と、読取手段としてのレーザスキャナ部２０と、加速度検知手段としての３軸加速度センサ２１と、ＡＤ変換部２２と、を備えて構成される。 
【００２０】
ＣＰＵ１１は、ＨＴ１の各部を中央制御する。ＣＰＵ１１は、ＲＯＭ１３に記憶されたシステムプログラム及びアプリケーションプログラムの中から指定されたプログラムを読み出してＲＡＭ１２に展開し、この展開されたプログラムとの協働で各種処理を実行する。
【００２１】
また、ＣＰＵ１１は、レーザスキャナ部２０にバーコードイメージ（データ）を取得させ、そのバーコードイメージからバーコードのコード情報を読取る。このような、一連の動作をスキャン動作（コード情報の読取）とする。
【００２２】
ＲＡＭ１２は、情報の読み書きが可能な揮発性のメモリであり、各種プログラムや各種データを格納するワークエリアを有する。
【００２３】
ＲＯＭ１３は、情報の読み出し専用の不揮発性のメモリであり、各種プログラム及び各種データを記憶する。ＲＯＭ１３は、後述する設定プログラム、加速度データ取り込みプログラムと、第１のスキャンプログラムと、を記憶する。
【００２４】
フラッシュメモリ１４は、情報の読み書きが可能な不揮発性のメモリである。フラッシュメモリ１４は、設定情報等が記憶される。
【００２５】
ＩＯ制御ブリッジ１５は、ＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、フラッシュメモリ１４、通信部１６、操作部１７、表示部１８、タイマ１９、レーザスキャナ部２０及びＡＤ変換部２２と接続され、各部の情報の送受信を介する。
【００２６】
通信部１６は、有線式、無線式で外部機器と通信を行う。例えば、ケーブル、クレードル等を介した有線通信や、無線ＬＡＮ（Local Area Network）等の無線通信である。
【００２７】
操作部１７は、数字キー、各種文字キー、メニューキー、電源キー等を有するキー入力部を備え、ユーザからのキー押下等の各種操作入力を受け付け、その操作情報をＣＰＵ１１に出力する。表示部１８は、ＬＣＤ（Liquid Crystal Display）等により構成され、ＣＰＵ１１から入力される表示情報に基づいて、各種情報を表示する。操作部１７及び表示部１８は、一体的にタッチパネルが構成されるものとしてもよい。
【００２８】
タイマ１９は、所定周期の３軸加速度センサ２１からの加速度データの取り込みタイミングをカウントし、取り込みたいタイミングになると割り込み信号をＣＰＵ１１に出力する。また、タイマ１９は、現在の時刻情報をＣＰＵ１１に出力する。
【００２９】
レーザスキャナ部２０は、レーザ光発光部、受光部、ゲイン回路、２値化回路及び照準光発光部を備える。レーザスキャナ部２０は、ＣＰＵ１１からの指示に従い、レーザ光発光部及び照準光発光部がレーザ光及び照準光を照射し、そのレーザ光がバーコード等で反射された反射光を受光部が受光してアナログの電気信号に変換してゲイン回路が増幅し、そのアナログ信号を所定閾値と比較して２値のデジタル信号に変換し、バーコードイメージ（データ）としてＣＰＵ１１に出力する。
【００３０】
３軸加速度センサ２１は、ＨＴ１の筐体に対応する３軸方向の加速度を検知し、その加速度データのアナログの電気信号をＡＤ変換部２２に出力する。ＡＤ変換部２２は、ＣＰＵ１１からの指示に従い、３軸加速度センサ２１から入力される加速度データのアナログの電気信号をデジタル信号の加速度データに変換してＣＰＵ１１に出力する。
【００３１】
なお、ＨＴ１において、図１に示した各部は、後述する筐体２に覆われているものとする。また、ＨＴ１は、携帯型であり、その電源がバッテリ等であるものとするが、これに限定されるものではない。
【００３２】
図２及び図３を参照して、ＲＡＭ１２に格納するデータの構成を説明する。図２に、リングバッファ１２１の構成を示す。図３に、ＨＴ１におけるＸ，Ｙ，Ｚ軸の一例を示す。
【００３３】
３軸加速度センサ２１により取得されるＸ軸、Ｙ軸、Ｚ軸（３軸）の加速度データをＧｘ，Ｇｙ，Ｇｚとする。加速度データＧｘ，Ｇｙ，Ｇｚは、所定周期で取り込まれ、図２に示すようなＲＡＭ１２内のリングバッファ１２１に格納される。図３に示すように、Ｚ軸をＨＴ１の筐体２の正面に垂直な方向とし、Ｘ軸、Ｙ軸を、筐体２の正面の平面を表す２軸とする。レーザスキャナ部２０のレーザ光及び照準光は、例えば、Ｙ軸、Ｚ軸間の所定角度の方向に照射されるものとし、スキャン動作が、ＨＴ１の正面（ＸＹ平面）が地面に対して水平面にある場合に行われるものとする。しかし、この例に限定されるものではない。
【００３４】
リングバッファ１２１は、Ｎ組（Ｎ：任意の整数）の加速度データＧｘ，Ｇｙ，Ｇｚをその取得時刻に対応付けて格納するとともに、先入れ先出し方式でリング状に循環して加速度データが更新される。Ｎの値は、リングバッファ１２１がオーバーフローしないように、十分大きな値をとっておくものとする。時刻ｔ０は、現在時刻（最新の加速度データの取得時刻）である。時刻ｔ１については、後述する。
【００３５】
次に、図４〜図１２を参照して、ＨＴ１の動作を説明する。先ず、図４〜図６を参照して、ＨＴ１の状態の判別を説明する。図４（ａ）に、ＨＴ１の移動に関する状態を示す。図４（ｂ）に、平均値及び分散値の算出に用いる加速度データの取得範囲を示す。図５に、時間に対する加速度の関係を示す。
【００３６】
本実施の形態において、ユーザにより把持されて動かされるＨＴ１について、３軸加速度センサ２１により検知される加速度データに基づいて分散値を算出し、その分散値に応じて、移動に関する状態として、ＨＴ１が移動状態から静止状態になったと判別される場合に、レーザスキャナ部２０におけるスキャン動作のトリガアクションを発生するものとする。
【００３７】
ＨＴ１の移動に関する状態としては、Ｘ，Ｙ，Ｚ軸それぞれについて、静止状態と、移動状態と、移動状態から静止状態への遷移状態と、があるものとする。図４（ａ）に示すように、静止状態、移動状態、移動状態から静止状態への遷移状態について、各状態を示す状態変数Ｓｔを、順に、０，１，２と定義する。図４（ａ）に示す加速度データは、時間に対するＸ，Ｙ又はＺ軸の加速度データとする。
【００３８】
静止状態とは、ＨＴ１が静止している状態である。移動状態とは、ＨＴ１がユーザの手により移動させられている状態である。図４（ａ）に示されるように、静止状態で、加速度値がある一定値を基準として小さく増減される値となる。そして、移動状態に遷移すると加速度値の増減が大きくなる。移動状態から静止状態への遷移状態では、再び加速度値の増減が小さくなり、再び静止状態となる。本実施の形態では、移動状態から静止状態への遷移状態の発生を、スキャン動作のトリガの１つとし、この遷移状態を加速度データの分散値を用いて検出する。
【００３９】
分散値とは、変数（データ）がその期待値（平均値）からどれだけばらけているかを示す値である。つまり、加速度データの分布がその平均値（上記一定値）に集まっていれば分散値が小さくなり、加速度データの分布がその平均値から離れていれば分散値が大きくなる。よって、加速度データの分散値が大きいと、ＨＴ１が動いているとみなすことができ、加速度データの分散値が小さいと、ＨＴ１が停止しているとみなすことができる。
【００４０】
移動に関する状態の判別に用いる加速度データの平均値、分散値は、図４（ｂ）に示すように、状態の判断時点（現在時刻ｔ０）から直前の所定時間前までの時間範囲の加速度データを用いて算出される。この加速度データの分散値が所定の閾値と比較され、その比較結果に応じて状態が判別される。
【００４１】
図２でも示したように、時刻については、ｔ０，ｔ１を考える。図５に示すように、時刻ｔ１は、現在の時刻ｔ０から第１の時間としての所定時間ΔCnt1前の時刻である。時間ΔCnt1は、加速度データの平均値、分散値を算出するための加速度データの取得対象の時間範囲を示す。時間ΔCnt1は、例えば、１００〜２００ｍｓとする。
【００４２】
平均値Ａｇは、Ｘ，Ｙ，Ｚ軸それぞれについて算出され、Ａｇｉ＝Ａｇｘ，Ａｇｙ，Ａｇｚとする。但し、ｉ＝ｘ，ｙ，ｚである。平均値Ａｇｉは、次式（１）により算出される。
【数１】
0005262282.tif 000002
【００４３】
分散値Ｂｉ（ｉ＝ｘ，ｙ，ｚ）は、Ｘ，Ｙ，Ｚ軸それぞれについて算出され、Ｂｉ＝Ｂｘ，Ｂｙ，Ｂｚとする。分散値Ｂｉは、次式（２）により算出される。
【数２】
0005262282.tif 000003
【００４４】
Ｘ，Ｙ，Ｚ軸の各軸について、移動状態（Ｓｔｉ＝１（ｉ＝Ｘ，Ｙ，Ｚ））であるか否かを判別するための分散値Ｂｉの閾値を第１の設定値としての設定値Ｂ１とする。Ｂｉ＞Ｂ１の場合に、移動状態であると判別するものとする。
【００４５】
また、Ｘ，Ｙ，Ｚ軸の各軸について、移動状態から静止状態への遷移状態（Ｓｔｉ＝２）であるか否かを判別するには、移動状態において、Ｂｉ＞Ｂ１でなくなったか否かにより判別するものとする。ただし、チャタリング等、短期間たまたまＢｉ＞Ｂ１でなくなった場合を排除するため、Ｂｉ＞Ｂ１でなくなった状態が所定の監視時間継続された場合に、遷移状態（Ｓｔｉ＝２）であると判別するものとする。この所定の監視時間を、Ｘ，Ｙ，Ｚ軸それぞれで、監視時間Ｘｔ，Ｙｔ，Ｚｔとする。
【００４６】
また、移動状態から静止状態への遷移は、図４（ａ）に示したように、短時間で行われるものである。よって、１度の移動状態から静止状態への遷移において、Ｓｔｉ＝２が２度現われ、トリガアクションが２度設定される（リトリガがかかる）おそれがある。このため、後述する第１のスキャン処理の流れにおいては、移動状態から静止状態への遷移状態（Ｓｔｉ＝２）が、強制的に所定時間継続するものとする。この所定の時間を、Ｘ，Ｙ，Ｚ軸それぞれで、待機時間Ｘｗ，Ｙｗ，Ｚｗとする。
【００４７】
図６に、３軸における状態遷移の一例を示す。図６に示すように、静止状態（状態変数Ｓｔ＝０）、移動状態（状態変数Ｓｔ＝１）、移動状態から静止状態への遷移状態（状態変数Ｓｔ＝２）は、Ｘ，Ｙ，Ｚ軸の３軸それぞれに独立して発生し、ＨＴ１がそれを監視する。つまり、状態変数Ｓｔｉ＝０，１，２（ｉ＝ｘ，ｙ，ｚ）である。３軸全体としてのＨＴ１の状態の判別は、いずれか１つの軸で遷移状態に入ったとき（Ｓｔ＝２）に、他の２つの軸で移動状態（Ｓｔ＝１）でない場合に、ＨＴ１が静止状態であると判別するものとする。
【００４８】
ＨＴ１が、移動状態から静止状態への遷移状態（状態変数Ｓｔ＝２）になる動作は、ユーザがＨＴ１を用いてスキャン動作させる場合に、ＨＴ１をあるバーコードに向けて静止させてスキャンし、次のバーコードへ移動させて静止させてスキャンするという、ユーザの手の特徴的な動きに対応している。
【００４９】
また、ＨＴ１の状態の監視としては、３軸の合成ベクトルの加速度（合成加速度とする）を監視する方法もある。しかし、合成加速度では、例えばＺ軸が重力方向にある場合に、Ｚ軸の加速度に重力加速度が含まれるために、Ｘ，Ｙ軸に比較的大きな変化があっても、合成加速度に大きな変化が見られない場合が多々ある。１軸ずつ（特にＸ，Ｙ軸）に監視するほうが、信号的に大きな変化の値が得られ、データの閾値を取りやすいというメリットがある。
【００５０】
図７に、ＨＴ１の垂直状態から水平状態への変化を示す。図７に示すように、本実施の形態において、加速度の平均値Ａｇｘ，Ａｇｙ，Ａｇｚを用いて、ＨＴ１が第１の姿勢状態としての垂直状態から第２の姿勢状態としての水平状態になったと判別される場合に、レーザスキャナ部２０におけるスキャン動作のトリガアクションを発生するものとする。垂直状態とは、ＨＴ１のＺ軸が地面に対して水平方向にあり、スキャン動作をしない姿勢状態である。水平状態とは、ＨＴ１のＺ軸が重力加速度方向にあり、スキャン動作をする姿勢状態である。
【００５１】
ＨＴ１の垂直状態から水平状態への変化の判別は、高い精度が要求されるものではない。このため、平均値Ａｇｚがほぼ０であり平均値Ａｇｘ，Ａｇｙに重力加速度が含まれる値である垂直状態から、平均値Ａｇｚに重力加速度が含まれて大きな値となり平均値Ａｇｘ，Ａｇｙがほぼ０である水平状態に移行（遷移）した場合に、垂直状態から水平状態へ移行したと判別するものとする。
【００５２】
ＨＴ１が、垂直状態から水平状態へ移行する動作は、ユーザがＨＴ１を用いてスキャン動作させる場合に、あるバーコードに対して、ＨＴ１のスキャン方向を向けていない垂直状態から向けてスキャンするという、ユーザの手の特徴的な動きに対応している。
【００５３】
なお、ＨＴ１の垂直状態から水平状態への変化の判別を、高い精度で行うことも可能である。先ず、水平面は、次式（３）により表される。
Ｇｘ＊Ｘ＋Ｇｙ＊Ｙ＋Ｇｚ＊Ｚ＝０  …（３）
なお、水平面の法線ベクトルｇは、（Ｇｘ，Ｇｙ，Ｇｚ）で表される。但し、ＨＴ１に重力のみが働いている場合である。
【００５４】
直線Ｘ軸は、Ｘ＝ａ，ｙ＝０，ｚ＝０（ａ：任意の数値）で表される。Ｘ軸の単位ベクトルは、（１，０，０）で表される。直線Ｙ軸は、Ｘ＝０，ｙ＝ｂ，ｚ＝０（ｂ：任意の数値）で表される。Ｙ軸の単位ベクトルは、（０，１，０）で表される。また、ベクトルＤ＝（Ｄｘ，Ｄｙ，Ｄｚ）、ベクトルＥ＝（Ｅｘ，Ｅｙ，Ｅｚ）についての内積の公式によると、ベクトルＤ，Ｅの間の角度をθとすると、ベクトルＤ，Ｅの内積＝Ｄｘ＊Ｅｘ＋Ｄｙ＊Ｅｙ＋Ｄｚ＊Ｅｚ＝｜Ｄ｜＊｜Ｅ｜cosθと表される。
【００５５】
よって、水平面及びＸ軸の間の角度（姿勢角度）Ｘａｎと、水平面及びＹ軸の間の角度（姿勢角度）Ｙａｎとは、それぞれ、次式（４），（５）により算出される。
【数３】
0005262282.tif 000004
【００５６】
なお、式（４），（５）において、（Ｇｘ２＋Ｇｘ２＋Ｇｘ２＋Ｇｚ２）１／２の値は、重力加速度そのものになり固定値としてもよさそうであるが、実際には誤差成分の影響を軽減するため、その都度算出したほうが、よい精度の姿勢角度Ｘａｎ，Ｙａｎが得られる。
【００５７】
図３の例において、姿勢角度Ｙａｎが、ほぼ９０度である場合に、ＨＴ１が垂直状態であり、姿勢角度Ｘａｎ，Ｙａｎが、ほぼ０度である場合に、ＨＴ１が水平状態であると判別される。
【００５８】
次いで、図８及び図９を参照して、ＨＴ１において実行される設定処理を説明する。設定処理は、後述する第１のスキャン処理で用いる設定情報（時刻、設定値、設定条件）を設定する処理である。図８に、設定処理の流れを示す。図９（ａ）に、設定画面１８１を示す。図９（ｂ）に、設定画面１８２を示す。
【００５９】
ＨＴ１において、例えば、電源オンの状態で操作部１２に設定処理の実行指示が入力されたことをトリガとして、ＲＯＭ１３から読み出されて適宜ＲＡＭ１２に展開された設定プログラムと、ＣＰＵ１１との協働で設定処理が実行される。
【００６０】
先ず、ＨＴ１の状態遷移に関する設定情報を設定するための設定画面が表示部１８に表示され、その設定画面に対応する情報の入力が操作部１７により受け付けられ、入力された情報に応じて設定情報（時刻ｔ１（時間ΔCnt1）、設定値Ｂ１、監視時間Ｘｔ，Ｙｔ，Ｚｔ、待機時間Ｘｗ，Ｙｗ，Ｚｗ）が生成される（ステップＳ１１）。そして、ステップＳ１１で生成された設定情報がフラッシュメモリ１４に記憶され（ステップＳ１２）、設定処理が終了する。
【００６１】
例えば、ステップＳ１１で表示される設定画面として図９（ａ）に示す設定画面１８１が表示される。設定画面１８１は、ユーザの性別（男、女）、世代（若年、成年、中年）、体型（やせ気味、標準、太り気味）、ＨＴ１の操作経験（浅い、普通、熟練）を入力可能である。例えば、ユーザによりＨＴ１に与えられる加速度は、男＞女、若年＞成年＞中年、やせ気味＜標準＜太り気味となり、操作時間が、浅い＞普通＞熟練となる。この入力情報に対応して、ユーザの個人差を考慮した適切な設定情報が生成される。
【００６２】
設定画面１８１においては、ユーザを識別する登録番号の入力も可能である。登録番号と設定情報とを対応付けてフラッシュメモリ１４に記憶することにより、ＨＴ１を複数のユーザで使用する場合にも、各ユーザに適切な設定情報を設定できる。
【００６３】
また、設定画面１８１において、カスタマイズボタンを押下することにより、設定画面１８２が表示される。設定画面１８２の表示により、左右に３０ｃｍ離れたバーーコード読取対象を想定して、ＨＴ１を把持して実際にバーコード読取動作をブザー音が鳴るまでユーザに促し、その動作中の加速度データを取得し、その取得した加速度データに基づいて設定情報を生成する。このため、スキャン動作に関し、ユーザにとって、さらに最適な設定情報を設定できる。設定画面１８２においても、登録番号の入力が可能である。但し、設定画面１８２の例は、ＨＴ１がブザー音出力部を備えてブザー音を出力する構成に対応するが、これに限定されるものではない。
【００６４】
なお、フラッシュメモリ１４（又はＲＯＭ１３）には、デフォルトの設定情報が予め記憶されているものとする。このため、設定処理が実行されていなくても、フラッシュメモリ１４に記憶されているデフォルトの設定情報を用いて、第１のスキャン処理が実行される。
【００６５】
次いで、図１０を参照して、ＨＴ１において実行される加速度データ取り込み処理を説明する。加速度データ取り込み処理は、ＨＴ１の加速度データを所定の周期で取り込む処理である。図１０に、加速度データ取り込み処理の流れを示す。
【００６６】
ＨＴ１において、例えば、タイマ１９により加速度データ取り込みの所定周期がカウントされ、その取り込みの実行タイミングを示す割り込み信号がタイマ１９から出力されてＣＰＵ１１に入力されたことをトリガとして、ＲＯＭ１３から読み出されて適宜ＲＡＭ１２に展開された加速度データ取り込みプログラムと、ＣＰＵ１１との協働で加速度データ取り込み処理が実行される。
【００６７】
先ず、３軸加速度センサ２１及びＡＤ変換部２２により、Ｘ，Ｙ，Ｚ軸の加速度データＧｘ，Ｇｙ，Ｇｚが取得される（ステップＳ２１）。そして、ステップＳ２１で取得された加速度データＧｘ，Ｇｙ，Ｇｚが、最新の加速度データとして、タイマ１９により取得される加速度データの取得時刻情報に対応付けられてＲＡＭ１２のリングバッファ１２１に格納される（ステップＳ２２）。
【００６８】
そして、リングバッファ１２１の加速度データＧｘ，Ｇｙ，Ｇｚが更新された旨を示す加速度データ更新フラグがＲＡＭ１２に格納されて設定され（ステップＳ２３）、加速度データ取り込み処理が終了する。
【００６９】
次いで、図１１及び図１２を参照して、ＨＴ１において実行される第１のスキャン処理を説明する。第１のスキャン処理は、ＨＴ１が移動状態から静止状態へ移行したこと、又は垂直状態から水平状態に移行したことを検出した場合に、トリガアクションを設定し、そのトリガアクションに応じてスキャン動作を行う処理である。図１１に、第１のスキャン処理の流れを示す。図１２に、図１１の第１のスキャン処理の続きの流れを示す。
【００７０】
ＨＴ１において、例えば、操作部１７の電源キーが押下入力されたことをトリガとして、ＲＯＭ１３から読み出されて適宜ＲＡＭ１２に展開された第１のスキャンプログラムと、ＣＰＵ１１との協働で第１のスキャン処理が実行される。
【００７１】
ＨＴ１には、通常モードと、垂直水平移行検出優先モードが用意されているものとする。通常モードは、ＨＴ１が移動状態から静止状態へ移行したことをトリガアクションとするモードである。垂直水平移行検出優先モードは、ＨＴ１が垂直状態から水平状態へ移行したことをトリガアクションとするモードである。予め、ユーザからのモードの選択入力が操作部１７により受け付けられ、その入力されたモード情報がＲＡＭ１２に記憶されて設定されるものとする。また、デフォルトでは、通常モードに設定されているものとする。
【００７２】
また、以下の処理において、設定処理により設定された設定情報又はデフォルトの設定情報がフラッシュメモリ１４から読み出されるものとする。また、登録番号に対応する設定情報がフラッシュメモリ１４に記憶されており、予め、使用するユーザの登録番号が操作部１７に入力された場合には、以下の処理において、入力された登録番号に対応する設定情報がフラッシュメモリ１４から読み出されるものとする。
【００７３】
先ず、状態変数ＳｔＸ，ＳｔＹ，ＳｔＺが、それぞれ０に初期設定される（ステップＳ３１）。そして、ＲＡＭ１２に記憶されるデータ更新フラグが参照され、データ更新フラグが設定され加速度データの更新があるか否かが判別される（ステップＳ３２）。加速度データの更新がない場合（ステップＳ３２；ＮＯ）、スキャン動作及び状態遷移とは別の処理が適宜実行され（ステップＳ３３）、ステップＳ３２に移行される。ステップＳ３３では、例えば、ステップＳ５７でトリガアクションが設定された場合に、レーザスキャナ部２０によりレーザ光及び照準光が照射されてバーコードのコード情報が読み取られるスキャン動作が実行される。
【００７４】
加速度データの更新がある場合（ステップＳ３２；ＹＥＳ）、ＲＡＭ１２のデータ更新フラグがリセットされる（ステップＳ３４）。そして、フラッシュメモリ１４から時刻ｔ１が読み出され、ＲＡＭ１２のリングバッファ１２１から時刻ｔ１〜ｔ０間の３軸分の加速度データＧｘ，Ｇｙ，Ｇｚが読み出され、時刻ｔ１〜ｔ０間の３軸分の加速度データＧｘ，Ｇｙ，Ｇｚの平均値Ａｇｘ，Ａｇｙ，Ａｇｚが算出される（ステップＳ３５）。ステップＳ３５では、式（１）に基づいて算出される。
【００７５】
そして、時刻ｔ１〜ｔ０間の３軸分の加速度データＧｘ，Ｇｙ，Ｇｚ、平均値Ａｇｘ，Ａｇｙ，Ａｇｚを用いて、分散値Ｂｘ，Ｂｙ，Ｂｚが算出される（ステップＳ３６）。ステップＳ３６では、式（２）に基づいて算出される。
【００７６】
そして、状態変数ＳｔＸ＝０であるか否かが判別される（ステップＳ３７）。状態変数ＳｔＸ＝０である場合（ステップＳ３７；ＹＥＳ）、ステップＳ３６で算出されたＢｘが設定値Ｂ１よりも大きいか否かが判別される（ステップＳ３８）。Ｂｘ＞Ｂ１である場合（ステップＳ３８；ＹＥＳ）、状態変数ＳｔＸが１に設定され、フラッシュメモリ１４から監視時間Ｘｔが読み出され、カウント（ダウン）する監視時間がＸｔに初期設定され、監視時間がカウント開始され（ステップＳ３９）、ステップＳ４９に移行される。Ｂｘ＞Ｂ１でない場合（ステップＳ３８；ＮＯ）、ステップＳ４９に移行される。
【００７７】
状態変数ＳｔＸ＝０でない場合（ステップＳ３７；ＮＯ）、状態変数ＳｔＸ＝１であるか否かが判別される（ステップＳ４０）。状態変数ＳｔＸ＝１である場合（ステップＳ４０；ＹＥＳ）、ステップＳ３６で算出されたＢｘが設定値Ｂ１よりも大きいか否かが判別される（ステップＳ４１）。Ｂｘ＞Ｂ１である場合（ステップＳ４１；ＹＥＳ）、フラッシュメモリ１４から監視時間Ｘｔが読み出され、カウント（ダウン）する監視時間がＸｔに初期設定され、監視時間がカウント開始され（ステップＳ３９）、ステップＳ４９に移行される。
【００７８】
Ｂｘ＞Ｂ１でない場合（ステップＳ４１；ＮＯ）、カウント中の監視時間がタイムアップ（０）になったか否かが判別される（ステップＳ４３）。カウント中の監視時間がタイムアップになっていない場合（ステップＳ４３；ＮＯ）、タイマ１９から出力される時刻情報に応じて、カウント中の監視時間から経過時間分が減算カウントされ（ステップＳ４４）、ステップＳ５０に移行される。カウント中の監視時間がタイムアップになった場合（ステップＳ４３；ＹＥＳ）、状態変数ＳｔＸが２に設定され、フラッシュメモリ１４から待機時間Ｘｗが読み出され、カウントする待機時間がＸｗに初期設定され、待機時間がカウント開始され（ステップＳ４５）、ステップＳ５０に移行される。
【００７９】
状態変数ＳｔＸ＝１でない場合（ステップＳ３７；ＮＯ）、状態変数ＳｔＸ＝２であり、カウント中の待機時間がタイムアップ（０）になったか否かが判別される（ステップＳ４６）。カウント中の待機時間がタイムアップになっていない場合（ステップＳ４６；ＮＯ）、タイマ１９から出力される時刻情報に応じて、カウント中の待機時間から経過時間分が減算カウントされ（ステップＳ４７）、ステップＳ４９に移行される。カウント中の待機時間がタイムアップになった場合（ステップＳ４６；ＹＥＳ）、状態変数ＳｔＸが０に設定され（ステップＳ４８）、ステップＳ４９に移行される。
【００８０】
そして、Ｙ軸に対応してステップＳ３７〜Ｓ４８と同様の処理が実行され、Ｚ軸に対応してステップＳ３７〜Ｓ４８と同様の処理が実行される（ステップＳ４９）。ステップＳ４９においては、フラッシュメモリ１４から、時刻ｔ１、監視時間Ｙｔ，Ｚｔ、待機時間Ｙｗ，Ｚｗが適宜読み出されて用いられる。
【００８１】
そして、状態変数ＳｔＸ，ＳｔＹ，ＳｔＺが参照され、Ｘ，Ｙ，Ｚ軸でともに静止状態（ＳｔＸ＝ＳｔＹ＝ＳｔＺ＝０）であるか否かが判別される（ステップＳ５０）。Ｘ，Ｙ，Ｚ軸でともに静止状態である場合（ステップＳ５０；ＹＥＳ）、ステップＳ３６，Ｓ４９で算出された平均値Ａｇｘ，Ａｇｙ，Ａｇｚが記憶され（ステップＳ５１）、ステップＳ３２に移行される。
【００８２】
Ｘ，Ｙ，Ｚ軸でともに静止状態でない場合（ステップＳ５２；ＮＯ）、ＨＴ１が（３軸全体として）移動状態から静止状態への遷移したか否かが判別される（ステップＳ５２）。ステップＳ５２では、図６で説明したように、３軸のうちいずれか１つの軸で移動状態から静止状態への遷移状態（Ｓｔ＝２）であり、他の２つの軸で移動状態でない（Ｓｔ≠１）場合に、ＨＴ１が移動状態から静止状態への遷移状態であるものとする。
【００８３】
ＨＴ１が移動状態から静止状態へ遷移した場合（ステップＳ５２；ＹＥＳ）、ＲＡＭ１２に予め設定されたモード情報が参照され、垂直状態から水平状態への垂直水平移行検出優先モードであるか否かが判別される（ステップＳ５３）。垂直水平移行検出優先モードである場合（ステップＳ５３；ＹＥＳ）、ステップＳ５１でＲＡＭ１２に記憶された前回の加速度の平均値Ａｇｘ，Ａｇｙ，Ａｇｚと現在の加速度の平均値Ａｇｘ，Ａｇｙ，Ａｇｚとが比較される（ステップＳ５４）。
【００８４】
そして、ステップＳ５４の加速度の平均値Ａｇｘ，Ａｇｙ，Ａｇｚの比較結果に基づいて、前回ＨＴ１が垂直状態であり、現在ＨＴ１が水平状態になったか否かが判別される（ステップＳ５５）。ステップＳ５５では、図７に関して説明したように、例えば、前回の加速度の平均値として、平均値Ａｇｚがほぼ０を示し平均値Ａｇｘ，Ａｇｙがほぼ重力加速度に対応し、現在の加速度の平均値として、平均値Ａｇｚがほぼ重力加速度を示し平均値Ａｇｘ，Ａｇｙがほぼ０であるか否かにより判別される。
【００８５】
前回ＨＴ１が垂直状態であり、現在ＨＴ１が水平状態になった場合（ステップＳ５５；ＹＥＳ）、スキャン動作のトリガアクションが設定される（ステップＳ５６）。垂直水平移行検出優先モードでない場合（ステップＳ５３；ＮＯ）、ＨＴ１の移動状態から静止状態への移行が検出されており、ステップＳ５６へ移行される。そして、状態変数ＳｔＸ＝Ｓｔｙ＝Ｓｔｚ＝０に初期化され（ステップＳ５７）、ステップＳ３２に移行される。
【００８６】
ＨＴ１が移動状態から静止状態へ遷移していない場合（ステップＳ５２；ＮＯ）、又は前回ＨＴ１が垂直状態であり、現在ＨＴ１が水平状態になっていない場合（ステップＳ５５；ＮＯ）、ステップＳ３２に移行される。
【００８７】
以上、本実施の形態によれば、ＨＴ１は、時刻ｔ１〜ｔ０間の３軸の加速度データＧｘ，Ｇｙ，Ｇｚの分散値Ｂｉ（ｉ＝ｘ，ｙ，ｚ）を算出し、分散値Ｂｉが設定値Ｂ１より大きい移動状態（ＳｔＸ＝１）から、分散値Ｂｉが設定値Ｂ１より大きくない静止状態（ＳｔＸ＝０）への遷移状態（ＳｔＸ＝２）になったか否かを判別し、この判別結果に応じてＨＴ１が移動状態から静止状態へ遷移した場合に、レーザスキャナ部２０のスキャン動作のトリガアクションを設定する。このため、スキャン動作のトリガアクションとして、ユーザの手の特徴的な動きに対応する移動状態から静止状態への遷移を正確に検出でき、正確なトリガでコード情報読取をすることができ、且つユーザの操作性を良好にできる。
【００８８】
また、ＨＴ１は、３軸のうちのいずれか１つが、静止状態から移動状態への遷移状態であり、他の２軸が移動状態でない場合に、ＨＴ１が移動状態から静止状態へ遷移したと判別し、レーザスキャナ部２０のスキャン動作のトリガアクションを設定する。このため、スキャン動作のトリガアクションとして移動状態から静止状態への遷移動作をさらに正確に検出できる。
【００８９】
また、ＨＴ１は、垂直水平優先移行モードである場合に、平均値Ａｇｚがほぼ０でありコード情報読取していない姿勢である垂直状態から、平均値Ａｇｚがほぼ重力加速度でありコード情報読取する姿勢である水平状態へ変化したか否かを判別し、垂直状態から水平状態へ変化した場合に、レーザスキャナ部２０のスキャン動作のトリガアクションを設定する。このため、スキャン動作のトリガアクションとして、ユーザの手の特徴的な動きに対応する垂直状態から水平状態への遷移を正確に検出でき、正確なトリガでコード情報読取をすることができ、且つユーザの操作性を良好にできる。
【００９０】
（第２の実施の形態）
図１３〜図１７を参照して、本発明に係る第２の実施の形態を説明する。本実施の形態の装置構成として、上記第１の実施の形態と同様に、ＨＴ１を用いるものとする。このため、上記第１の実施の形態と異なる部分を主として説明する。
【００９１】
ＲＯＭ１３には、第１のスキャンプログラムに代えて、第２のスキャンプログラムが記憶されているものとする。
【００９２】
図１３に、リングバッファ１２２の構成を示す。図１３に示すように、ＲＡＭ１２には、リングバッファ１２２が格納される。リングバッファ１２２は、リングバッファ１２１と同様であるが、後述する第２のスキャン処理に用いるデータとしては、加速度データＧｚのみである。リングバッファ１２２における時刻ｔ２については、後述する。
【００９３】
次に、図１４〜図１７を参照して、本実施の形態におけるＨＴ１の動作を説明する。先ず、図１４〜図１６を参照して、ＨＴ１の状態判別を説明する。図１４に、スナップ操作によるＨＴ１の状態を示す。図１５（ａ）に、ＨＴ１にスナップ操作がなされた場合の時間に対するＸ，Ｙ，Ｚ軸の加速度データを示す。図１５（ｂ）に、ＨＴ１にスナップ操作がなされた場合の時間に対するＺ軸の加速度データを示す。図１６に、時間に対する加速度の関係を示す。
【００９４】
本実施の形態において、ユーザにより把持されて動かされるＨＴ１について、３軸加速度センサ２１により検知されるＺ軸の加速度データに基づいて平均値を算出し、そのＺ軸の加速度の平均値に応じて、ＨＴ１の状態が、スナップ操作された状態になったと判別されると、レーザスキャナ部２０におけるスキャン動作のトリガアクションを発生するものとする。
【００９５】
スナップ操作とは、ユーザがＨＴ１を軽く上に持ち上げて即座に元に戻す操作とする。具体的には、図１４に示すように、先ず、ＨＴ１のＺ軸を重力加速度方向にした姿勢でＨＴ１を静止した状態Ｓｔａにおいて、ユーザがＨＴ１を軽く上に持ち上げて状態Ｓｔｂにし、状態Ｓｔｃとしてユーザが即座にＨＴ１を下げ、状態Ｓｔａにする。
【００９６】
ＨＴ１が、状態Ｓｔａから状態Ｓｔｃへ移行する動作は、ユーザがＨＴ１を用いてスキャン動作させる場合に、読取対象のバーコードにＨＴ１のスキャン方向を向けてスナップ操作を行いスキャンするという、ユーザの手の特徴的な動きに対応している。
【００９７】
ＨＴ１に複数回スナップ操作がなされた場合に、３軸加速度センサ２１により検出される時間に対する加速度データの一例は、図１５（ａ）のようになる。図１５（ａ）のグラフにおいて、上段の実線、破線がそれぞれＸ軸、Ｙ軸の加速度データであり、下段の破線がＺ軸の加速度データである。また、Ｚ軸方向の重力加速度方向を負の方向にしている。Ｘ，Ｙ軸には、スナップ操作の特徴が現れていないが、Ｚ軸に、スナップ操作の特徴が現れている。つまり、Ｚ軸の加速度データにおいて、円で囲んだ部分にスナップ操作の特徴が現れている。このため、本実施の形態では、Ｚ軸の加速度データのみを監視する。
【００９８】
図１５（ｂ）に示すように、ＨＴ１にスナップ操作がなされた場合のＺ軸の加速度データにおいて、スナップ操作の特徴が現れている。先ず、Ｚ軸の加速度データは、ＨＴ１にスナップ操作がなされた場合に、ほぼ所定値（直前の平均値とする）をとった後、一度落ち込んでから正方向に大きくピーク（ポイントＰ１）をとり、直前の平均値よりも落ち込んで（ポイントＰ２）から、直前の平均値へと戻る。
【００９９】
本実施の形態では、ポイントＰ１においてＺ軸の加速度データが所定の閾値以上の値をとり、ポイントＰ１から所定時間以内にポイントＰ２においてＺ軸の加速度データが直前の平均値よりも小さくなると、スナップ操作がなされたものと判別する。ポイントＰ１に対応するＺ軸の加速度データの閾値を第２の設定値としての設定値Ｃ１とする。設定値Ｃ１は、操作感度に影響する。また、ポイントＰ１からポイントＰ２への移行に対応する所定時間を感度時間Ｔｗとする。感度時間Ｔｗを短くすれば、人の任意不定な動作からスナップ操作を分別しやすくなる。
【０１００】
ポイントＰ１においてＺ軸の加速度データが設定値Ｃ１よりも大きくなった状態の状態変数Snap＿STを１とする。ポイントＰ２においてポイントＰ１から待機時間Ｔｗ以内にＺ軸の加速度データが設定値Ｃ１よりも大きくなった状態の状態変数Snap＿STを２とする。また、直前の平均値を含むポイントＰ１，Ｐ２以外の状態の状態変数Snap＿STを０とする。
【０１０１】
状態変数Snap＿ST＝２である時間は、短く、１度のスナップ操作で上げたＨＴ１を元に戻す操作で、状態変数Snap＿ST＝２が２度現われる（リトリガが働く）おそれがある。このため、後述する第２のスキャン処理では、状態変数Snap＿ST＝２である状態が強制的に所定時間継続するものとする。この所定時間を待機時間Ｔｄとする。
【０１０２】
また、図１６に示すように、図１５（ｂ）における直前の平均値として、加速度データＧｚの平均値Ａｇｚを算出するために、加速度データＧｚを取得する所定の時間範囲を第３の時間に対応する時刻ｔ２から第４の時間に対応する時刻ｔ１までの時間とする。但し、ｔ２＜ｔ１とする。時刻ｔ１〜ｔ０間の所定時間は、例えば、１００〜２００ｍｓ程度であるものとする。時刻ｔ２〜ｔ１間の平均値Ａｇｚを算出する構成は、時刻ｔ２〜ｔ０間の平均値Ａｇｚを算出する場合に比べて、設定値Ｃ１との差が出やすく好ましい。
【０１０３】
次いで、図１７を参照して、ＨＴ１において実行される第２のスキャン処理を説明する。図１７に、第２のスキャン処理の流れを示す。
【０１０４】
本実施の形態でも、第１の実施の形態と同様に、設定処理、加速度データ取り込み処理が実行される。但し、本実施の形態の設定処理では、操作部１７によるユーザの入力情報に対応する設定情報として、時刻ｔ１、ｔ２（時刻ｔ０を基準とした時刻ｔ１，ｔ２の時刻位置）、設定値Ｃ１、感度時間Ｔｗ、待機時間Ｔが設定される。また、本実施の形態の加速度データ取り込み処理では、加速度データがリングバッファ１２２に格納される。
【０１０５】
第２のスキャン処理は、ＨＴ１にスナップ操作がなされたことを検出した場合に、スキャン動作のトリガアクションを設定し、そのトリガアクションに応じて、スキャン動作を行う処理である。図１７に、第２のスキャン処理の流れを示す。
【０１０６】
ＨＴ１において、例えば、操作部１７の電源キーが押下入力されたことをトリガとして、ＲＯＭ１３から読み出されて適宜ＲＡＭ１２に展開された第２のスキャンプログラムと、ＣＰＵ１１との協働で第２のスキャン処理が実行される。
【０１０７】
先ず、状態変数Snap＿STが０に初期設定される（ステップＳ６１）。ステップＳ６２〜Ｓ６４は、第１のスキャン処理のステップＳ３２〜Ｓ３４と同様である。そして、フラッシュメモリ１４から時刻ｔ１が読み出され、ＲＡＭ１２のリングバッファ１２１から時刻ｔ１〜ｔ０間のＺ軸の加速度データＧｚが読み出され、その時刻ｔ１〜ｔ０間の加速度データＧｚの平均値Ａｇｚが算出される（ステップＳ６５）。
【０１０８】
そして、状態変数Snap＿STが０であるか否かが判別される（ステップＳ６６）。状態変数Snap＿STが０である場合（ステップＳ６６；ＹＥＳ）、フラッシュメモリ１４から設定値Ｃ１が読み出され、最新の加速度データＧｚとステップＳ６５で算出された平均値Ａｇｚとを用いて、（Ｇｚ−Ａｇｚ）が設定値Ｃ１よりも大きいか否かが判別される（ステップＳ６７）。（Ｇｚ−Ａｇｚ）が設定値Ｃ１よりも大きくない場合（ステップＳ６７；ＮＯ）、ステップＳ６２に移行される。
【０１０９】
（Ｇｚ−Ａｇｚ）が設定値Ｃ１よりも大きい場合（ステップＳ６７；ＹＥＳ）、フラッシュメモリ１４から感度時間Ｔｗが読み出され、カウント（ダウン）する感度時間が感度時間Ｔｗに初期設定される（ステップＳ６８）。そして、状態変数Snap＿STが１に設定され（ステップＳ６９；ＹＥＳ）、ステップＳ６２に移行される。
【０１１０】
状態変数Snap＿STが０でない場合（ステップＳ６６；ＮＯ）、状態変数Snap＿STが１であるか否かが判別される（ステップＳ７０）。状態変数Snap＿STが１である場合（ステップＳ７０；ＹＥＳ）、最新の加速度データＧｚとステップＳ６５で算出された平均値Ａｇｚとを用いて、（Ｇｚ−Ａｇｚ）が０よりも小さいか否かが判別される（ステップＳ７１）。（Ｇｚ−Ａｇｚ）が０よりも小さくない場合（ステップＳ７１；ＮＯ）、タイマ１９から出力される時刻情報に応じて、カウント中の感度時間が減算カウントされる（ステップＳ７２）。
【０１１１】
そして、カウント中の感度時間がタイムアウトしたか（０になったか）否かが判別される（ステップＳ７３）。カウント中の感度時間がタイムアウトしていない場合（ステップＳ７３；ＮＯ）、ステップＳ６２に移行される。カウント中の感度時間がタイムアウトした場合（ステップＳ７３；ＹＥＳ）、フラッシュメモリ１４から待機時間Ｔｄが読み出され、カウントする待機時間が待機時間Ｔｄに初期設定される（ステップＳ７４）。そして、状態変数Snap＿STが２に設定され（ステップＳ７５）、ステップＳ６２に移行される。（Ｇｚ−Ａｇｚ）が０よりも小さい場合（ステップＳ７１；ＹＥＳ）、スキャン動作のトリガアクションが設定され（ステップＳ７６）、ステップＳ７４に移行される。
【０１１２】
状態変数Snap＿STが１でない場合（ステップＳ７０；ＮＯ）、状態変数Snap＿STが２であり、タイマ１９から出力される時刻情報に応じて、カウント中の待機時間が減算カウントされる（ステップＳ７７）。そして、カウント中の待機時間がタイムアウトされた（０になった）か否かが判別される（ステップＳ７８）。カウント中の待機時間がタイムアウトされていない場合（ステップＳ７８；ＮＯ）、ステップＳ６２に移行される。カウント中の待機時間がタイムアウトされた場合（ステップＳ７８；ＹＥＳ）、状態変数Snap＿STが０に設定され（ステップＳ７９）、ステップＳ６２に移行される。
【０１１３】
以上、本実施の形態によれば、ＨＴ１は、時刻ｔ２〜ｔ１間の重力加速度方向の加速度データＧｚの平均値Ａｇｚを算出し、平均値Ａｇｚの負の方向（上方向）の変化量が設定値Ｃ１よりも大きくなり、感度時間内に平均値Ａｇｚの変化量が０より小さくなったか否かを判別し、平均値Ａｇｚの変化量が設定値Ｃ１よりも大きくなりその後平均値Ａｇｚの変化量が０より小さくなった場合に、レーザスキャナ部２０のスキャン動作のトリガアクションを設定する。このため、スキャン動作のトリガアクションとして、ユーザの手の特徴的な動きに対応するスナップ操作の状態遷移を正確に検出でき、正確なトリガでコード情報読取をすることができ、且つユーザの操作性を良好にできる。
【０１１４】
特に、時刻ｔ２〜ｔ１間の加速度データＧｚの平均値Ａｇｚを算出するので、設定値Ｃ１との差が出やすく、スキャン動作のトリガアクションとしてスナップ操作に対応する状態遷移を容易に検出できる。
【０１１５】
なお、上記第１、第２の実施の形態における記述は、本発明に係る携帯型コード読取装置及びプログラムの一例であり、これに限定されるものではない。
【０１１６】
上記第１、第２の実施の形態では、ＨＴ１の移動状態から静止状態への遷移と、垂直状態から水平状態への遷移と、スナップ操作に対応する状態遷移と、のいずれか一つを検出した場合に、トリガアクションを設定する構成であったが、これに限定されるものではない。例えば、ＨＴ１の移動状態から静止状態への遷移と、垂直状態から水平状態への遷移と、スナップ操作に対応する状態遷移と、の少なくとも一つを検出した場合に、トリガアクションを設定する構成としてもよい。
【０１１７】
また、上記第１、第２の実施の形態では、設定処理においてユーザの手の動きを教示する構成例を説明したが、これに限定されるものではない。例えば、第１、第２のスキャン処理実行中に取得する加速度データに基づいて適切な設定情報を生成して更新していく学習機能を有する構成としてもよい。
【０１１８】
また、上記第２の実施の形態では、Ｚ軸の加速度データＧｚの平均値Ａｇｚに基づいて、上下方向のスナップ操作に対応する状態遷移を検出する構成としたが、これに限定されるものではない。例えば、所定方向の加速度データの平均値に基づいて、その所定方向のスナップ操作に対応する状態遷移を検出する構成としてもよい。例えば、右利きのユーザに対しては、ＨＴ１の右方向の加速度データの平均値に基づいて、その右方向のスナップ操作に対応する状態遷移を検出する構成としてもよい。
【０１１９】
また、上記第１、第２の実施の形態におけるＨＴ１の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。
【図面の簡単な説明】
【０１２０】
【図１】本発明に係る第１の実施の形態のＨＴの内部構成を示すブロック図である。
【図２】第１の実施の形態のリングバッファの構成を示す図である。
【図３】ＨＴにおけるＸ，Ｙ，Ｚ軸の一例を示す図である。
【図４】（ａ）は、ＨＴの移動に関する状態を示す図である。（ｂ）は、平均値及び分散値の算出に用いる加速度データの取得範囲を示す図である。
【図５】第１の実施の形態における時間に対する加速度の関係を示す図である。
【図６】３軸における状態遷移の一例を示す図である。
【図７】ＨＴの垂直状態から水平状態への変化を示す図である。
【図８】設定処理を示すフローチャートである。
【図９】（ａ）は、第１の設定画面を示す図である。（ｂ）は、第２の設定画面を示す図である。
【図１０】加速度データ取り込み処理を示すフローチャートである。
【図１１】第１のスキャン処理を示すフローチャートである。
【図１２】図１１の第１のスキャン処理の続きを示すフローチャートである。
【図１３】第２の実施の形態のリングバッファの構成を示す。
【図１４】スナップ操作によるＨＴの状態を示す図である。
【図１５】（ａ）は、ＨＴにスナップ操作がなされた場合の時間に対するＸ，Ｙ，Ｚ軸の加速度データを示す図である。（ｂ）は、ＨＴにスナップ操作がなされた場合の時間に対するＺ軸の加速度データを示す図である。
【図１６】第２の実施の形態における時間に対する加速度の関係を示す図である。
【図１７】第２のスキャン処理を示すフローチャートである。
【符号の説明】
【０１２１】
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＲＯＭ
１４  フラッシュメモリ
１５  ＩＯ制御ブリッジ
１６  通信部
１７  操作部
１８  表示部
１９  タイマ
２０  レーザスキャナ部
２１  ３軸加速度センサ
２２  ＡＤ変換部
【図１】
0005262282.tif 000005
【図２】
0005262282.tif 000006
【図３】
0005262282.tif 000007
【図４】
0005262282.tif 000008
【図５】
0005262282.tif 000009
【図６】
0005262282.tif 000010
【図７】
0005262282.tif 000011
【図８】
0005262282.tif 000012
【図９】
0005262282.tif 000013
【図１０】
0005262282.tif 000014
【図１１】
0005262282.tif 000015
【図１２】
0005262282.tif 000016
【図１３】
0005262282.tif 000017
【図１４】
0005262282.tif 000018
【図１５】
0005262282.tif 000019
【図１６】
0005262282.tif 000020
【図１７】
0005262282.tif 000021