以下、図面に基づいて、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
図1は、実施例の情報処理装置の構成の一例を示すブロック図である。図1に示す情報処理装置1は、検出装置10と、端末装置20とを有する。検出装置10および端末装置20は、有線または無線により、相互に通信可能に接続されている。検出装置10は、情報処理装置1の検出部を構成し、ユーザの手足等に装着され、手足等の動作を検出する。検出装置10は、慣性センサ11と、スイッチ12と、制御部13と、通信部14とを有する。
慣性センサ11は、例えば、加速度センサ、角速度センサ等を用いることができる。慣性センサ11は、例えば、加速度センサとして、静電容量型、ピエゾ抵抗型またはガス温度分布型等のMEMS(Micro Electro Mechanical Systems)を用いた加速度センサを用いることができる。また、慣性センサ11は、例えば、角速度センサとして、音叉型、ビーム型またはリング型等のMEMSジャイロを用いることができる。慣性センサ11は、検出した加速度、角速度等のセンサ情報を制御部13に出力する。
スイッチ12は、検出装置10での動きの検出を行うか否かを設定するスイッチである。スイッチ12は、例えば、押しボタンスイッチを用いることができ、スイッチ12のONまたはOFFを制御部13に出力する。スイッチ12は、例えば、押下されてON状態となったときに、慣性センサ11から制御部13に入力されるセンサ情報を有効とし、離されてOFF状態となったときにセンサ情報を無効とする。なお、スイッチ12は、1回押下で押下状態を保持し、もう1回押下されると押下状態を解除するスイッチとしてもよい。また、検出装置10は、他のスイッチとして、図示しないジェスチャ認識ON/OFFスイッチ、フィルタON/OFFスイッチ、適用フィルタ切替スイッチ等を設け、各スイッチの状態を制御部13に出力する。
制御部13は、検出装置10を制御する。制御部13は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部13は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。
制御部13は、慣性センサ11からセンサ情報が入力され、スイッチ12からONまたはOFFが入力される。制御部13は、スイッチ12がONである場合には、ONであるスイッチ情報を生成する。また、制御部13は、スイッチ12がOFFである場合には、OFFであるスイッチ情報を生成する。さらに、制御部13は、スイッチ12がONである場合には、センサ情報が有効であるとして、センサ情報を動作データとして、スイッチ情報とともに通信部14に出力する。また、制御部13は、スイッチ12がOFFである場合には、センサ情報が無効であるとして、スイッチ情報を通信部14に出力する。
通信部14は、例えば、無線通信モジュール等によって実現される。通信部14は、例えば、無線通信の規格として、Bluetooth(登録商標)、無線LAN(Local Area Network)等を用いることができる。また、通信部14は、例えば、USB(Universal Serial Bus)等の有線通信モジュールを用いて、有線通信を行ってもよい。通信部14は、制御部13からスイッチ情報および動作データのうち1つ以上が入力される。通信部14は、入力されたスイッチ情報および動作データのうち1つ以上を端末装置20に送信する。
ここで、検出装置10の装着の一例について説明する。図2は、検出装置の装着の一例を示す説明図である。図2に示すように、検出装置10は、例えば、(a)手首、(b)足首、または、(c)頭部に固定具15を用いて装着される。検出装置10は、装着された部位の動作を検出する。図2に示すように、スイッチ12は、例えば、検出装置10を手首に装着した場合には、手首の動きによってON/OFFを切り替えることができる。
図1の説明に戻って、端末装置20は、通信部21と、記憶部22と、制御部23と、出力部29とを有する。なお、端末装置20は、図1に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。端末装置20は、例えば、各種の携帯端末装置を採用することができる。例えば、携帯端末装置の一例として、スマートフォン、携帯電話機やPHS(Personal Handyphone System)などの移動体通信端末、さらには、PDA(Personal Digital Assistants)などのスレート端末、ウェアラブルPCなどが挙げられる。また、端末装置20は、パーソナルコンピュータなどの据置き型の端末を用いてもよい。
通信部21は、例えば、無線通信モジュール等によって実現される。通信部21は、例えば、無線通信の規格として、Bluetooth(登録商標)、無線LAN等を用いることができる。また、通信部21は、例えば、USB等の有線通信モジュールを用いて、有線通信を行ってもよい。通信部21は、検出装置10からスイッチ情報および動作データのうち1つ以上を受信する。通信部21は、受信したスイッチ情報および動作データのうち1つ以上を制御部23に出力する。
記憶部22は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部22は、制御部23での処理に用いる情報を記憶する。
制御部23は、例えば、CPUやMPU等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部23は、例えば、ASICやFPGA等の集積回路により実現されるようにしてもよい。制御部23は、取得部24と、推定部25と、認識部26と、決定部27と、出力制御部28とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部23の内部構成は、図1に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
取得部24は、通信部21からスイッチ情報および動作データのうち1つ以上が入力されると、入力されたスイッチ情報および動作データのうち1つ以上を取得する。取得部24は、取得した動作データを推定部25に出力する。また、取得部24は、検出装置10から入力されたスイッチ12のスイッチ情報に基づいて、情報処理装置1の処理、つまり、ユーザの身体の動作に応じた処理を終了するか否かを判定する。取得部24は、スイッチ12のスイッチ情報がOFFである場合には各部に対して処理の終了を通知し、スイッチ12のスイッチ情報がONの場合は各部に対して処理の続行を通知する。つまり、取得部24は、スイッチ12のスイッチ情報に基づいて、ユーザの身体の動作による入力を行うか否かを判定する。これは、例えば、入力動作が不要なときに、作業中の手の動きによって情報処理装置1が意図しない動作を行わないためである。また、取得部24は、検出装置10に設けた図示しないジェスチャ認識ON/OFFスイッチ、フィルタON/OFFスイッチ、適用フィルタ切替スイッチ等のスイッチ情報を取得する。取得部24は、取得した各スイッチ情報を認識部26および決定部27に出力する。
推定部25は、取得部24から動作データが入力されると、動作データに基づいて、ユーザの身体の姿勢および軌道を推定する。図3は、検出された動作を2次元平面に投影した一例を示す説明図である。図3に示すように、推定部25は、例えば、動作データを2次元平面に投影することで、動作の特徴量θを算出する。動作の特徴量θは、例えば、動作データのうち、角速度センサのセンサ情報である角速度を積分することで求めることができる。さらに、推定部25は、動作の特徴量θを積分することで移動距離を求めることができる。また、推定部25は、動作データのうち、加速度センサのセンサ情報に基づいて重力方向を推定する。推定部25は、推定した重力方向に基づいて身体の姿勢を推定する。なお、推定部25は、検出された動作を2次元平面に投影することに限定されず、3次元空間等に投影するようにしてもよい。
図4は、身体の姿勢の一例を示す説明図である。図4に示すように、推定部25は、例えば、手首の向きとして、手首断面と平行な平面上の向きを用いることができる。図5は、身体の姿勢の推定方法の一例を示す説明図である。図5の例では、推定部25は、例えば手首の姿勢を下記の式(1)によって推定する。なお、ψは手首の向きを示し、axはセンサのx軸方向の加速度を示し、azはセンサのz軸方向の加速度を示す。
ψ = tan−1(ax/az) ・・・(1)
また、推定部25は、動作の特徴量θに基づいて軌道を推定する。推定部25は、例えば、2次元平面に投影された動作データについて、動作データの取得開始からの動きの軌跡を軌道として推定する。推定部25は、推定した姿勢および軌道を認識部26および決定部27に出力する。また、推定部25は、推定した軌道を出力制御部28に出力する。なお、動作の特徴量θは、情報処理装置1の電源投入時に初期化され、その後の累積値を記憶し続けるパラメータと、1つのジェスチャごとに累積値がリセットされるパラメータの2つのパラメータを有する。すなわち、累積値を記憶し続けるパラメータは、ジェスチャごとの切り替えでは初期化しない。なお、推定部25は、動作データが入力される限り姿勢および軌道を推定し続け、1つのジェスチャごとに、累積値がリセットされるパラメータの動作の特徴量θ、つまり移動量をリセットする。
ここで、図6を用いて軌道の推定について説明する。図6は、軌道の推定の一例を示す説明図である。図6に示すように、例えば、ユーザが手を動かす動作として、図6中の(1)番の位置から(2)番の位置に動かす動作Aと、(2)番の位置から(1)番の位置に動かす動作Bとを行った場合を説明する。推定部25は、ユーザが動作A、Bを連続して行った場合に、推定例51に示すような連続的な軌道を推定する。
図1の説明に戻って、認識部26は、推定部25から姿勢および軌道が入力されると、ジェスチャを認識する。認識部26は、例えば、図6に示すようにユーザが動作A、Bを連続して行った場合には、姿勢および軌道に基づいて、「左」、「右」といったジェスチャを認識する。認識部26は、例えば、2次元平面の中心点の周り360°を4分割して315°から45°を「右」、45°から135°を「上」、135°から225°を「左」、225°から315°を「下」として、軌道がどのエリアに入るかでジェスチャを認識できる。認識部26は、認識されたジェスチャを決定部27および出力制御部28に出力する。また、認識部26は、取得部24から入力されたジェスチャ認識ON/OFFスイッチのスイッチ情報に基づいて、ジェスチャ認識がOFFであるか否かを判定する。認識部26は、ジェスチャ認識がONの場合に、ジェスチャ認識処理を行う。なお、認識部26は、姿勢および軌道のうちいずれか1つに基づいて、ジェスチャを認識してもよい。
図1の説明に戻って、決定部27は、推定部25から姿勢および軌道が入力され、認識部26からジェスチャが入力される。決定部27は、姿勢および軌道に基づいて、入力されたジェスチャを出力ジェスチャとするか否かを決定する。決定部27は、姿勢に対応する軌道に基づいて、ジェスチャを識別する。すなわち、決定部27は、入力されたジェスチャのうち、動作の終了位置から開始位置に戻る戻り動作のジェスチャを識別する。
ここで、図7を用いて身体の姿勢とジェスチャとの関係について説明する。図7は、身体の姿勢とジェスチャとの関係の一例を示す説明図である。決定部27は、例えば、2次元平面に投影された動作データを、図7に示すように4つに分けて、それぞれ上下左右を割り当てる。このとき、決定部27は、例えば、手首の姿勢とジェスチャとが一致する場合には、そのジェスチャを出力ジェスチャとし、手首の姿勢とジェスチャとが一致しない場合には、そのジェスチャを戻り動作のジェスチャであるとして出力しない。決定部27は、出力ジェスチャを出力制御部28に出力する。
決定部27は、例えば、図7中、ユーザが掌を上に向けて腕を上に移動させる動作を行った場合には、手首の姿勢とジェスチャとが、共に「上」であるので、当該動作を「上」という出力ジェスチャとする。決定部27は、例えば、ユーザが掌を上に向けて腕を下に移動させる動作を行った場合には、手首の姿勢は「上」であり、ジェスチャは「下」であるので、当該ジェスチャを出力しない。なお、決定部27は、図7中の左右の動作も同様に決定できる。
ジェスチャを出力しない場合の一例として、戻り動作のジェスチャの除外について図8を用いて説明する。図8は、戻り動作のジェスチャの除外の一例を示す説明図である。図8に示すように、例えば、ユーザが手を動かす動作として、図8中の(1)番の位置から(2)番の位置に動かす動作Aと、(2)番の位置から(1)番の位置に動かす動作Bとを行った場合を説明する。決定部27は、ジェスチャフィルタとして、姿勢とジェスチャとが共に「左」であるフィルタを設定する。決定部27は、動作Aの場合には、姿勢である手首の向きが「左」、ジェスチャが「左」であるので、フィルタを通過させ、当該動作を出力ジェスチャとして出力する。これに対し、決定部27は、動作Bの場合には、姿勢である手首の向きが「左」、ジェスチャが「右」であるので、フィルタを通過させず、当該動作は出力されない。すなわち、決定部27は、ユーザが動作Aと動作Bとを繰り返す反復動作を行っても、動作Aに対応する「左」というジェスチャのみを出力することができる。
また、決定部27は、反復する連続動作として上述した左右だけでなく、回転動作に対してフィルタを行ってもよい。図9は、反復する連続動作の一例を示す説明図である。図9に示すように、決定部27は、ユーザが手首を回転させる、つまり、ひねる動作についても、ユーザから見て右回転の動作Cと、左回転の動作Dとから必要なジェスチャを出力できる。決定部27は、例えば、姿勢として手首の向きが「下」であり、ジェスチャ(回転方向)が「右」の場合はフィルタを通過させる。また、決定部27は、例えば、姿勢として手首の向きが「下」以外であり、ジェスチャ(回転方向)が「左」の場合はフィルタを通過させないことで、右回転のみを出力ジェスチャとして出力できる。決定部27は、同様に、例えば、姿勢として手首の向きが「下」であり、ジェスチャ(回転方向)が「左」の場合はフィルタを通過させる。また、決定部27は、例えば、姿勢として手首の向きが「下」以外であり、ジェスチャ(回転方向)が「右」の場合はフィルタを通過させないことで、左回転のみをジェスチャとして出力できる。これらの手首の向きとジェスチャとの関係は、例えば、記憶部22にデータベースとして予め格納し、決定部27が記憶部22から当該データベースを読み込むようにできる。すなわち、当該データベースには、ジェスチャフィルタが格納されることになる。
さらに、決定部27は、ジェスチャフィルタとして、ジェスチャ間の時間差を用いてもよい。図10は、ジェスチャ間の時間差によるフィルタの一例を示す説明図である。図10に示すように、決定部27は、第1のジェスチャである動作Aに対応するジェスチャAと、第2のジェスチャである動作Bに対応するジェスチャBとの時間差53が所定値以下である場合には、ジェスチャBを戻り動作のジェスチャとして出力しない。決定部27は、第2のジェスチャであるジェスチャBと、次に来るジェスチャAとの時間差54が所定値を超える場合には、次に来るジェスチャAを第1のジェスチャと判定して、出力ジェスチャとして出力する。なお、所定値は、任意の値でよいが、例えば、1秒とすることができる。決定部27は、第1のジェスチャであるジェスチャAと、第2のジェスチャであるジェスチャBとの時間差55についても、時間差53と同様に判定し、時間差53が所定値以下である場合には、第2のジェスチャであるジェスチャBを出力しない。このように、決定部27は、第1のジェスチャと、第2のジェスチャとの時間差が所定値以下の場合には、第2のジェスチャを戻り動作のジェスチャとすることで、第1のジェスチャのみを出力することができる。
また、決定部27は、ジェスチャフィルタとして、ジェスチャ順を用いてもよい。図11は、ジェスチャ順によるフィルタの一例を示す説明図である。図11に示すように、決定部27は、1番目のジェスチャである動作Aに対応するジェスチャAを第1のジェスチャとすると、2番目のジェスチャである動作Bに対応するジェスチャBを第2のジェスチャとする。決定部27は、第1のジェスチャと対になる第2のジェスチャを戻り動作のジェスチャと判定し、第1のジェスチャであるジェスチャAのみを出力ジェスチャとして出力する。また、決定部27は、一定時間56の経過後に1番目のジェスチャとしてジェスチャBが入力された場合には、ジェスチャ順をリセットし、ジェスチャBを第1のジェスチャとし、その直後のジェスチャAを対になる第2のジェスチャとする。この場合には、第1のジェスチャであるジェスチャBのみを出力ジェスチャとして出力する。すなわち、決定部27は、奇数番目のジェスチャのみを出力することで、戻り動作のジェスチャを除外することができる。なお、一定時間56は、図10の時間差の所定値よりも長く設定することが好ましく、2つの操作を区別できる時間であれば任意の時間とでき、例えば、2秒とすることができる。また、第1のジェスチャと対になる第2のジェスチャは、予め記憶部22に格納する。なお、ジェスチャ順を用いるジェスチャフィルタは、図9に示すような回転するジェスチャについても適用できる。
さらに、決定部27は、ジェスチャフィルタとして、認識部26で認識されたジェスチャに対して軌道に基づいてフィルタをかけて、ジェスチャの統合、分割または除外を行うようにしてもよい。決定部27に、例えば、認識部26からジェスチャとして上下左右に4分割されたジェスチャ、つまり4種類のジェスチャが入力される場合について説明する。図12は、元のジェスチャ認識の一例を示す説明図である。図12に示すように、決定部27は、認識部26から上下左右の4種類のうちいずれかのジェスチャが入力される。
まず、ジェスチャの統合について説明する。図13は、ジェスチャの統合の一例を示す説明図である。図13に示すように、決定部27は、例えば、軌道に基づいて、「右」の範囲の中心、すなわち、θ=0°±90°の範囲を「右」とし、θ=180°±90°の範囲を「左」とすることができる。決定部27は、出力ジェスチャとして、「右」または「左」を出力する。これにより、決定部27は、上下のジェスチャ認識が不要な場合に、認識部26の認識結果はそのままに、左右と認識するジェスチャの範囲を拡大することができる。
次に、ジェスチャの分割について説明する。図14は、ジェスチャの分割の一例を示す説明図である。図14に示すように、決定部27は、例えば、軌道に基づいて、上下左右の各エリアをさらに2等分し、「右」を例にとると、「右−上」と「右−下」に分割する。決定部27は、他のエリアも同様に2分割する。決定部27は、出力ジェスチャとして、例えば、「右−上」、「右−下」等の元のジェスチャをさらに細かく分割したジェスチャを出力する。これにより、決定部27は、より精度の高いジェスチャが必要な場合に、認識部26の認識結果はそのままに、ジェスチャの分解能を高めることができる。
続いて、ジェスチャの除外について説明する。図15は、ジェスチャの除外の一例を示す説明図である。図15に示すように、決定部27は、例えば、軌道に基づいて、上下左右の各エリアのうち、左右のジェスチャを除外して上下のジェスチャのみを出力する。これにより、決定部27は、元のジェスチャの認識範囲(エリア)を変更せずに、不要なジェスチャを除外することができる。
図1の説明に戻って、出力制御部28は、推定部25から軌道が入力され、認識部26からジェスチャが入力され、決定部27から出力ジェスチャが入力される。出力制御部28は、軌道、ジェスチャおよび出力ジェスチャのいずれか1つまたは複数を出力する。すなわち、出力制御部28は、軌道、ジェスチャおよび出力ジェスチャのいずれか1つまたは複数に応じた、制御部23で実行されるアプリケーションの動作の結果を出力部29に出力する。出力制御部28は、例えば、出力部29が表示部であり、複数の選択肢が画面に表示されている場合には、出力ジェスチャに応じてカーソルを移動させる。出力制御部28は、例えば、画面に4つの選択肢が表示され、1番左の選択肢にカーソルがある場合に、出力ジェスチャとして「右」が2回入力されると、カーソルを右に2つ動かして左から3番目の選択肢を選択する。また、出力制御部28は、例えば、出力部29がスピーカである場合に、出力ジェスチャとして「下」が入力されると、マニュアルの次の文章を読み上げるようにすることもできる。また、出力制御部28は、例えば、出力ジェスチャに応じて、点検結果の正常または異常等のステータスを入力できるようにしてもよい。
出力部29は、例えば、表示部、スピーカ等で構成される。出力部29は、ユーザに対してユーザの身体動作に応じた結果を出力する。出力部29は、表示部としては、例えば、液晶ディスプレイ、HMD等が挙げられる。また、出力部29は、スピーカとして、ユーザに対して音声等で案内を出力する。なお、出力部29は、スピーカの他にヘッドホン等であってもよいし、表示部とスピーカの双方を備える構成としてもよい。
ここで、出力部29に表示される表示画面の一例について説明する。図16は、表示画面の一例を示す説明図である。図16に示すように、ユーザは、例えば、手首に検出装置10を装着し、端末装置20を上着のポケット内に装着し、頭部に出力部29としてHMDを装着する。情報処理装置1は、例えば、画面71に示すように、カーソルが選択肢Eにあった場合に、ユーザが検出装置10を装着した腕を、掌を外側にして右に動かすジェスチャを行うと、「右」というジェスチャを認識し、カーソルを選択肢Fに移動させる。このとき、情報処理装置1は、ユーザが右に動かした腕を左に戻す動作を行ったとしても、「左」というジェスチャは戻り動作のジェスチャと認識してカーソルは選択肢Fから移動させない。また、情報処理装置1は、例えば、ユーザが複数回、右のジェスチャを行うと、カーソルを選択肢G、選択肢Hと移動させる。
また、情報処理装置1は、例えば、画面72に示すように、上、右、下、左に選択肢I〜Lが配置される画面とすることもできる。画面72の例では、ユーザの「上」のジェスチャが入力されると選択肢I、「右」のジェスチャが入力されると選択肢Jといったように、各ジェスチャと上、右、下、左の選択肢を対応付ける。さらに、情報処理装置1は、例えば、画面73に示すように、ユーザの手の動きの軌道に応じて、カーソル74を動かすことで任意の線を入力できるようにしてもよい。また、情報処理装置1は、例えば、画面75に示すように、スピーカのボリューム76を、左右の手の動きに応じて左右に移動させることもできる。
次に、実施例の情報処理装置1の動作について説明する。まず図17を用いて、情報処理装置1の動作の概要について説明する。図17は、実施例の情報処理装置の動作の概要の一例を示す説明図である。図17に示すように、情報処理装置1は、検出装置10の慣性センサ11で加速度および角速度を取得して、センサ情報、つまりスイッチ情報および動作データのうち1つ以上を端末装置20に送信する(ステップS101)。情報処理装置1は、端末装置20の推定部25で姿勢および軌道を推定する(ステップS102)。情報処理装置1は、スイッチ61に従って、推定した姿勢および軌道を認識部26および/または出力制御部28に出力する。なお、スイッチ61は、ソフトウエア的に実装されて画面の表示内容に応じて切り替えるようにしてもよいし、例えば、検出装置10にジェスチャ認識ON/OFFスイッチとして物理的に実装されてもよい。
情報処理装置1は、推定した姿勢および軌道に基づいて、認識部26でジェスチャを認識する(ステップS103)。情報処理装置1は、スイッチ62に従って、認識したジェスチャを決定部27および/または出力制御部28に出力する。なお、スイッチ62はスイッチ61と同様に、ソフトウエア的に実装されてもよいし、フィルタON/OFFスイッチとして物理的なスイッチとして実装されてもよい。情報処理装置1は、決定部27において、ジェスチャフィルタに基づいて認識したジェスチャをフィルタする(ステップS104)。なお、ジェスチャフィルタは、複数のフィルタを同時に利用してもよいし、切り替えて利用してもよい。なお、ジェスチャフィルタの切り替えは、検出装置10に物理的に実装された、適用フィルタ切替スイッチによって切り替えるようにしてもよい。情報処理装置1は、フィルタリングした結果を出力ジェスチャとして出力制御部28に出力する。情報処理装置1は、出力制御部28において、連続的な軌道と、認識された1つ1つのジェスチャと、フィルタ後の出力ジェスチャとを、アプリケーション等に応じて切り替える(ステップS105)。このように、情報処理装置1は、身体動作の認識として、連続的な軌道と、単発のジェスチャと、フィルタ後の出力ジェスチャとを適宜切り替えて用いることができる。
次に、図18を用いて、情報処理装置1の動作の詳細について説明する。図18は、実施例の情報処理装置の処理の一例を示すフローチャートである。情報処理装置1は、電源が投入されると、検出装置10および端末装置20の初期化を実行する(ステップS1)。検出装置10は、制御部13により慣性センサ11および通信部14の初期化を実行する。端末装置20は、制御部23により通信部21の初期化を実行するとともに、推定部25の動作の特徴量θ等の各種のパラメータを初期化する。なお、情報処理装置1は、初期化時に、検出装置10と端末装置20との通信を確立する。
端末装置20の推定部25は、初期姿勢の推定完了を表す値Fに、未完了を示す「0」を設定する(ステップS2)。取得部24は、検出装置10から入力されたスイッチ12のスイッチ情報に基づいて、情報処理装置1の処理、つまり、ユーザの身体の動作に応じた処理を終了するか否かを判定する(ステップS3)。取得部24は、スイッチ12のスイッチ情報がOFFである場合には(ステップS3:肯定)、各部に対して処理の終了を通知して情報処理装置1の処理を終了する。取得部24は、スイッチ12のスイッチ情報がONの場合には(ステップS3:否定)、各部に対して処理の続行を通知する。
続いて、検出装置10の制御部13は、センサ情報を動作データとして、順次、通信部14を介して端末装置20に送信する。端末装置20の取得部24は、検出装置10から通信部21を介して動作データを受信すると、受信した動作データを推定部25に出力する(ステップS4)。推定部25は、取得部24から動作データが入力されると、値Fが「0」か否かを判定する(ステップS5)。推定部25は、値Fが「0」である場合には(ステップS5:肯定)、動作データに基づいて、ユーザの身体の初期姿勢を推定し、値Fを「1」とする(ステップS6)。推定部25は、値Fが「0」でない場合には(ステップS5:否定)、既に初期姿勢を推定済みとして次の処理に進む。
推定部25は、例えば、動作データを2次元平面に投影することで、動作の特徴量θを算出する。推定部25は、例えば、動作の特徴量θを身体の移動量とし、検出装置10から順次送信される動作データに基づいて、身体の移動量を更新する(ステップS7)。また、推定部25は、検出装置10から順次送信される動作データに基づいて身体の姿勢を推定する。また、推定部25は、身体の移動量、つまり動作の特徴量θを累積して軌道を推定する。推定部25は、推定した身体の姿勢および軌道を認識部26および決定部27に出力する。また、推定部25は、推定した軌道を出力制御部28に出力する。
認識部26は、取得部24から入力されたジェスチャ認識ON/OFFスイッチのスイッチ情報に基づいて、ジェスチャ認識がOFFであるか否かを判定する(ステップS8)。認識部26は、ジェスチャ認識がOFFである場合には(ステップS8:肯定)、出力制御部28に対して軌道を出力するように指示してステップS3の処理に戻る(ステップS9)。認識部26は、ジェスチャ認識がONである場合には(ステップS8:否定)、姿勢および軌道に基づいて、ジェスチャ認識を行う(ステップS10)。
認識部26は、ジェスチャ認識の結果、ジェスチャを認識したか否かを判定する(ステップS11)。認識部26は、ジェスチャを認識しなかった場合には(ステップS11:否定)、ステップS3の処理に戻る。認識部26は、ジェスチャを認識した場合には(ステップS11:肯定)、認識されたジェスチャを決定部27および出力制御部28に出力する。
決定部27は、取得部24から入力されたフィルタON/OFFスイッチのスイッチ情報に基づいて、フィルタがOFFであるか否かを判定する(ステップS12)。決定部27は、フィルタがOFFである場合には(ステップS12:肯定)、出力制御部28に対して認識されたジェスチャを出力するように指示してステップS3の処理に戻る(ステップS13)。決定部27は、フィルタがONである場合には(ステップS12:否定)、入力されたジェスチャに対して、取得部24から入力された適用フィルタ切替スイッチのスイッチ情報に基づくジェスチャフィルタを適用する(ステップS14)。決定部27は、ジェスチャフィルタ適用後の出力ジェスチャを出力制御部28に出力する(ステップS15)。決定部27は、出力制御部28に対して出力ジェスチャを出力するように指示してステップS3の処理に戻る。これにより、情報処理装置1は、身体動作の軌道、単体のジェスチャおよび出力ジェスチャの処理を統合でき、これらを任意の組み合わせで出力することができる。
次に、より具体的な説明として、図19を用いて、ユーザの手首に検出装置10が装着され、ジェスチャ認識およびフィルタのスイッチ情報がONである場合における情報処理装置1の動作の詳細について説明する。図19は、フィルタ処理の一例を示すフローチャートである。ステップS21からステップS27までの処理は、図18に示す情報処理装置1の処理のフローチャートのステップS1からS7までの処理と同様であるので、その説明を省略する。
認識部26は、推定部25から入力された姿勢および軌道に基づいて、ジェスチャ認識を行う(ステップS28)。認識部26は、ジェスチャ認識の結果、ジェスチャを認識したか否かを判定する(ステップS29)。認識部26は、ジェスチャを認識しなかった場合には(ステップS29:否定)、後述するステップS33の処理に進む。認識部26は、ジェスチャを認識した場合には(ステップS29:肯定)、認識されたジェスチャを決定部27および出力制御部28に出力する。
決定部27は、入力されたジェスチャに対して、取得部24から入力された適用フィルタ切替スイッチのスイッチ情報に基づくジェスチャフィルタとの対応を照合する(ステップS30)。決定部27は、入力されたジェスチャとジェスチャフィルタとが対応しているか否かを判定する(ステップS31)。すなわち、決定部27は、例えば、ジェスチャフィルタの手首の姿勢が「右」、ジェスチャが「右」と設定されている場合に、入力されたジェスチャの手首の姿勢が「右」、ジェスチャが「右」であれば対応していると判定する。また、決定部27は、例えば、ジェスチャフィルタの手首の姿勢が「右」、ジェスチャが「右」と設定されている場合に、入力されたジェスチャの手首の姿勢が「右」、ジェスチャが「左」といったように一致していないときには対応していないと判定する。
決定部27は、入力されたジェスチャとジェスチャフィルタとが対応している場合には(ステップS31:肯定)、入力されたジェスチャを出力ジェスチャとして出力制御部28に出力する(ステップS32)。決定部27は、入力されたジェスチャとジェスチャフィルタとが対応していない場合には(ステップS31:否定)、後述するステップS33に進む。
決定部27には、推定部25から推定された姿勢および軌道が順次入力される。決定部27は、ジェスチャフィルタに対応する姿勢および軌道を、順次入力される姿勢および軌道で更新する(ステップS33)。すなわち、決定部27には、例えば、今まで動いていた手が止まった場合や、手の動く方向が変わった場合には、ジェスチャフィルタとの対応を照合する姿勢および軌道について、当該動きに応じた姿勢および軌道が入力される。
決定部27は、ジェスチャフィルタに対応する姿勢および軌道が更新されると、更新された姿勢および軌道に基づいて、ジェスチャの区切りを検出したか否かを判定する(ステップS34)。すなわち、決定部27は、例えば、今まで動いていた手が止まった場合には、入力されたジェスチャの手首の姿勢が「右」、ジェスチャが「右」から、手首の姿勢が「右」、ジェスチャが「なし」に変わった場合に、ジェスチャの区切りを検出する。また、決定部27は、例えば、手の動く方向が変わった場合には、入力されたジェスチャの手首の姿勢が「右」、ジェスチャが「右」から、手首の姿勢が「右」、ジェスチャが「左」に変わった場合に、ジェスチャの区切りを検出する。また、決定部27は、ステップS29でジェスチャを認識しなかった場合には、例えば、入力されたジェスチャの手首の姿勢が「右」、ジェスチャが「なし」から、手首の姿勢が「右」、軌道の移動量が所定値以上に変わった場合に、ジェスチャの区切りを検出する。
決定部27は、ジェスチャの区切りを検出した場合には(ステップS34:肯定)、ステップS28で認識したジェスチャを初期化してステップS23に戻る(ステップS35)。決定部27は、ジェスチャの区切りを検出しない場合には(ステップS34:否定)、ステップS23に戻る。これにより、連続動作中に情報処理装置1や身体の状態を頻繁に切り替えることなく、不要なジェスチャの出力をフィルタできる。
このように、情報処理装置1は、ユーザの身体の動作を動作データとして検出し、動作データに基づいて、身体の軌道を推定し、推定された軌道に基づいて、ジェスチャを認識する。また、情報処理装置1は、軌道に基づいて、認識されたジェスチャのうち、所定の動作のジェスチャを除外して出力ジェスチャを決定し、軌道、ジェスチャおよび出力ジェスチャのいずれか1つまたは複数を出力する。その結果、身体動作の処理を統合できる。すなわち、情報処理装置1は、ジェスチャを認識する認識器を変えずに、出力先の状況に応じて容易に出力である身体動作の認識結果を変更できる。
また、情報処理装置1は、所定の動作として、ジェスチャの終了位置から開始位置に戻る動作である戻り動作のジェスチャを除外して出力ジェスチャを決定する。その結果、連続したジェスチャ操作を容易にし、ユーザの負担を軽減できる。言い換えると、情報処理装置1は、ジェスチャ入力の精度を向上することができる。
また、情報処理装置1は、ジェスチャのうち、第1のジェスチャと第2のジェスチャとの時間差が所定値以下の場合には、第2のジェスチャを戻り動作のジェスチャと決定する。その結果、反復する動作に係る戻り動作を容易に除外でき、ユーザの操作ストレスを軽減できる。
また、情報処理装置1は、ジェスチャのうち、第1のジェスチャと第2のジェスチャとの順序に基づいて、第1のジェスチャと対になる第2のジェスチャを戻り動作のジェスチャと決定する。その結果、動きが遅い反復する動作に係る戻り動作でも容易に除外でき、ユーザの操作ストレスを軽減できる。
また、情報処理装置1は、軌道に基づいて、戻り動作のジェスチャを決定する。その結果、任意のジェスチャに対して戻り動作を決定でき、複雑なジェスチャに対してもユーザの操作ストレスを軽減できる。
また、情報処理装置1は、軌道に基づいて、認識されたジェスチャに対してジェスチャの統合、分割または除外を行う。その結果、状況に応じてジェスチャをフィルタでき、ジェスチャの誤認識を軽減できる。
なお、上記実施例では、検出装置10に、ジェスチャ認識ON/OFFスイッチ、フィルタON/OFFスイッチ、適用フィルタ切替スイッチ等を設け、各スイッチの状態を制御部13に出力したが、これに限定されない。例えば、情報処理装置1は、制御部23で実行されるアプリケーションの状態遷移によって、上記の各スイッチのスイッチ情報に相当する情報を生成し、当該情報によって出力を制御するようにしてもよい。これにより、情報処理装置1は、アプリケーションの画面遷移に基づいて、入力を受け付けるジェスチャを適宜選択することができる。
また、上記実施例では、ジェスチャの認識結果に応じて、選択中の選択肢を変更するようにしたが、これに限定されない。例えば、情報処理装置1は、軌道の動きに応じて、徐々にカーソルを動かしていくようなプレ動作を加えてもよい。これにより、情報処理装置1は、ユーザに次の動きを予測させることができ、よりスムーズなジェスチャ入力を行うことができる。
また、上記実施例では、ジェスチャの分割を行う際に、分割後の範囲を例えば「右−上」等で表現したが、これに限定されない。例えば、2次元平面に東西南北を割り当てて、「北北東」、「東北東」といった表現を用いてもよい。これにより、地図等のアプリケーションとの親和性を向上することができる。
また、上記実施例では、情報処理装置1として、検出装置10と端末装置20とを有する構成としたが、これに限定されない。例えば、検出装置10と端末装置20とを一体化して、1つの情報処理装置1としてもよい。また、例えば、出力部29についても、端末装置20または情報処理装置1と一体化してもよいし、分離してもよい。これにより、情報処理装置1の構成を用途に応じて柔軟に変更できる。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記実施例の認識部26と決定部27とを統合してもよいし、検出装置10と端末装置20とを統合して一体化してもよい。
さらに、各装置で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図20は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
図20が示すように、コンピュータ100は、各種演算処理を実行するCPU101と、データ入力を受け付ける入力装置102と、モニタ103と、スピーカ104とを有する。また、コンピュータ100は、記憶媒体からプログラム等を読み取る媒体読取装置105と、各種装置と接続するためのインタフェース装置106と、検出装置111と有線または無線により接続するための通信装置107とを有する。また、コンピュータ100は、各種情報を一時記憶するRAM108と、ハードディスク装置109とを有する。また、各装置101〜109は、バス110に接続される。
ハードディスク装置109には、図1に示した取得部24、推定部25、認識部26、決定部27および出力制御部28の各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置109には、情報処理プログラムを実現するための各種データが記憶される。入力装置102は、例えばコンピュータ100の管理者から管理情報の入力を受け付ける。モニタ103は、例えばユーザが操作する各種画面を表示する。インタフェース装置106は、例えば印刷装置等が接続される。通信装置107は、検出装置111と接続され、スイッチ情報、動作データや制御情報等の各種情報をやりとりする。検出装置111は、図1に示した検出装置10と同様の機能を有する。
CPU101は、ハードディスク装置109に記憶された各プログラムを読み出して、RAM108に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ100を図1に示した取得部24、推定部25、認識部26、決定部27および出力制御部28として機能させることができる。
なお、上記の情報処理プログラムは、必ずしもハードディスク装置109に記憶されている必要はない。例えば、コンピュータ100が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ100が読み出して実行するようにしてもよい。コンピュータ100が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこの情報処理プログラムを記憶させておき、コンピュータ100がこれらから情報処理プログラムを読み出して実行するようにしてもよい。