(57)【特許請求の範囲】
【請求項１】
立体的に計測された人体の形状データを取得する処理と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する処理と、
前記人体の腕に取り付けられた装置における角速度を取得する処理と、
前記角速度に基づいて、前記ベクトルを補正する第１補正処理と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する処理と
を含み、コンピュータにより実行される制御方法。
【請求項２】
前記第２補正処理において、２つの物体間に張られたばねによる引力と物体の摩擦力との合力による物体の移動モデルに、前記現状の基準位置と前記部分の位置とを適用する
請求項１記載の制御方法。
【請求項３】
立体的に計測された人体の形状データを取得する処理と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する処理と、
前記人体の腕に取り付けられた装置における角速度を取得する処理と、
前記角速度に基づいて、前記ベクトルを補正する第１補正処理と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する処理と
をコンピュータに実行させるプログラム。
【請求項４】
立体的に計測された人体の形状データを取得する第１取得部と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する特定部と、
前記人体の腕に取り付けられた装置における角速度を取得する第２取得部と、
前記角速度に基づいて、前記ベクトルを補正する第１補正部と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正部と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する算出部と
を有する制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの振る舞いによって操作を受け付ける技術に関する。
【背景技術】
【０００２】
拡張現実の技術において、スマート端末の姿勢検知機能と撮影機能と表示機能とを用いれば、ユーザが状況に応じたデータを参照しながら、画面タッチによる入力操作を行うことができるようになる。しかし、ユーザの手がふさがっている状態では、スマート端末を保持し操作することはできないので、このようなシステムを適用できない。
【０００３】
一方、例えば３Ｄ距離カメラによってユーザの姿勢や環境の状態を検出し、プロジェクタによって画像を投影するシステムの場合には、スマート端末の機能に依存せずに済む。従って、ユーザの手がふさがっている状態でも、適用可能である。
【０００４】
但し、３Ｄ距離カメラの計測には誤差が生じるので、ユーザの振る舞いを検知した結果が安定しにくい面がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１５９０３４号公報
【特許文献２】特表２０１３−５１７０５１号公報
【特許文献３】特開２００４−２６４８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、一側面では、指差し位置の挙動を安定させることである。
【課題を解決するための手段】
【０００７】
一態様に係る制御方法は、（Ａ）立体的に計測された人体の形状データを取得する処理と、（Ｂ）形状データに基づいて、人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する人体の部分の位置を特定する処理と、（Ｃ）人体の腕に取り付けられた装置における角速度を取得する処理と、（Ｄ）角速度に基づいて、ベクトルを補正する第１補正処理と、（Ｅ）現状の基準位置と部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、（Ｆ）補正されたベクトルと、基準位置とに基づいて、対象面上の指差し位置を算出する処理とを含む。
【発明の効果】
【０００８】
一側面としては、指差し位置の挙動が安定する。
【図面の簡単な説明】
【０００９】
【図１】図１は、作業現場の例を示す図である。
【図２】図２は、作業支援システムの構成例を示す図である。
【図３】図３は、ポータブルガジェットのハードウエア構成例を示す図である。
【図４】図４は、ポータブルガジェットの内部構造例を示す図である。
【図５】図５は、リストデバイスのハードウエア構成例を示す図である。
【図６】図６は、スマート端末のハードウエア構成例を示す図である。
【図７】図７は、ポインタ位置を決める方法を説明するための図である。
【図８】図８は、ポインタをわずかに移動させる様子を示す図である。
【図９】図９は、ポインタを大きく移動させる様子を示す図である。
【図１０】図１０は、制御装置のモジュール構成例を示す図である。
【図１１】図１１は、メイン処理フローを示す図である。
【図１２】図１２は、メイン処理フローを示す図である。
【図１３】図１３は、ベクトルフィルタリング処理（Ａ）フローを示す図である。
【図１４Ａ】図１４Ａは、位置フィルタリング処理（Ａ）における力学モデルを示す図である。
【図１４Ｂ】図１４Ｂは、位置フィルタリング処理（Ａ）フローを示す図である。
【図１５】図１５は、位置フィルタリング処理（Ｂ）フローを示す図である。
【図１６】図１６は、位置フィルタリング処理（Ｃ）フローを示す図である。
【図１７】図１７は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図１に、作業現場の例を示す。図示するように、作業現場である部屋の中にポータブルガジェット１０１が設置されている。ポータブルガジェット１０１には、人や周囲の状況を観測するためのセンサ、画像を投影するためのプロジェクタ及び各種の制御を行うための計算機が組み込まれている。
【００１１】
ポータブルガジェット１０１は、例えば部屋の壁面に作業を促す画像を投影し、その画像に対する作業員の指差し動作を検出して、操作指示として受け付ける。
【００１２】
作業員は、指差しを行う方の腕の手首に、腕時計型のリストデバイス１０３を装着している。リストデバイス１０３は、作業員の腕の姿勢や動きを検出する。
【００１３】
また、作業員は、スマート端末１０５を携帯している。図２に示すように、スマート端末１０５はリストデバイス１０３と無線によって通信を行う。更に、スマート端末１０５はポータブルガジェット１０１とも無線によって通信を行う。そして、スマート端末１０５は、リストデバイス１０３で検出されたモーションデータをポータブルガジェット１０１に転送する。但し、リストデバイス１０３からポータブルガジェット１０１へ直接モーションデータを転送するようにしてもよい。尚、無線方式は、例えば近距離無線方式又は無線ＬＡＮである。
【００１４】
図１に示すように、部屋の壁にはメーターが設置されている。この例では、メーターが作業員の点検対象である。尚、点検対象の位置及び大きさは、予め特定されているものとする。
【００１５】
ポータブルガジェット１０１は、壁面にメーターを囲む枠１１１を投影する。このようにすれば、作業員は点検対象を直感的に把握できる。
【００１６】
更に、ポータブルガジェット１０１は、メーターの上側に正常ボタン１１３を投影し、メーターの下側に異常ボタン１１５を投影する。尚、この例でポータブルガジェット１０１によって投影された画像の範囲は、斜線パターンで塗りつぶされている。
【００１７】
この状況で、作業員がメーターを目視し点検を行う。そして、おおよそメーターの方向を指差す。すると、ポータブルガジェット１０１は、作業員の指差し動作を検出し、指差し方向に当たる位置にポインタ１１７を投影する。
【００１８】
点検結果が正常であると作業員が判断した場合には、作業員は、ポインタ１１７が正常ボタン１１３へ向かうように指差す方向をずらす。そして、ポインタ１１７が一定時間だけ正常ボタン１１３に留まれば、ポータブルガジェット１０１において「正常」を受け付けたことを示すイベントが発生する。
【００１９】
点検結果が異常であると作業員が判断した場合には、作業員は、ポインタ１１７が異常ボタン１１５へ向かうように指差す方向をずらす。そして、ポインタ１１７が一定時間だけ異常ボタン１１５に留まれば、ポータブルガジェット１０１において「異常」を受け付けたことを示すイベントが発生する。
【００２０】
このようにすれば、より自然な動作でシステムとのインタラクションが実現される。
【００２１】
続いて、機器の構成について説明する。図３に、ポータブルガジェット１０１のハードウエア構成例を示す。ポータブルガジェット１０１は、制御装置３０１、レーザレンジファインダ３０３、プロジェクタ３０５、３Ｄ距離カメラ３０７及びサーボモータ３０９を有している。
【００２２】
制御装置３０１は、レーザレンジファインダ３０３、プロジェクタ３０５、３Ｄ距離カメラ３０７及びサーボモータ３０９を制御し、作業を支援するための処理を行う。制御装置３０１は、ＣＰＵ（Central Processing Unit）３１１、メモリ３１３及び無線通信デバイス３１５を有している。ＣＰＵ３１１は、各種の演算処理を行う。メモリ３１３は、プログラムやデータを記憶する。無線通信デバイス３１５は、所定の無線方式による通信を制御する。
【００２３】
図４に、ポータブルガジェット１０１の内部構造例を示す。レーザレンジファインダ３０３は、レーザ光を用いて付近の物体までの距離を計測する。プロジェクタ３０５は、各種の画像を投影する。３Ｄ距離カメラ３０７は、作業員の形状や周囲の形状を計測するために用いられる。具体的には、３Ｄ距離カメラ３０７は、形状を小片体の集合であるポイントクラウドとして捉える。サーボモータ３０９は、レーザレンジファインダ３０３、プロジェクタ３０５及び３Ｄ距離カメラ３０７を水平に回転させ、所望の角度にレーザレンジファインダ３０３、プロジェクタ３０５及び３Ｄ距離カメラ３０７を向かせる。
【００２４】
図５に、リストデバイス１０３のハードウエア構成例を示す。リストデバイス１０３は、マイクロコントローラー５０１、慣性センサ５０３及び無線通信デバイス５０５を有する。マイクロコントローラー５０１は、演算装置及びメモリを内蔵している。慣性センサ５０３は、リストデバイス１０３における速度、加速度、角速度及び角加速度を計測する。この例で、慣性センサ５０３によって計測されたデータを、モーションデータという。無線通信デバイス５０５は、所定の無線方式による通信を制御する。
【００２５】
図６に、スマート端末１０５のハードウエア構成例を示す。スマート端末１０５は、ＣＰＵ６０１、メモリ６０３及び無線通信デバイス６０５を有する。ＣＰＵ６０１は、各種の演算処理を行う。メモリ６０３は、プログラムやデータを記憶する。無線通信デバイス６０５は、所定の無線方式による通信を制御する。
【００２６】
続いて、図７を用いてポインタ位置を決める方法を説明する。まず、３Ｄ距離カメラ３０７によって計測された人体（作業員）の形状から、指差し方向の基準となる位置（以下、基準位置という。）が特定される。この例における基準位置は、右腕の肘に相当する位置である。但し、肩や目を基準位置としてもよい。図７に示した小さい丸は、基準位置に相当する。
【００２７】
また、同じく人体の形状から、指差し方向を示すベクトル（以下、姿勢ベクトルという。）を特定する。この例で、姿勢ベクトルは、一定の大きさであるものとする。図７に示した矢印は、姿勢ベクトルの方向を示している。
【００２８】
そして、基準位置から姿勢ベクトルの方向への延長線が壁面と交叉する点が算出される。この交点がポインタ位置となる。
【００２９】
但し、３Ｄ距離カメラ３０７による計測の誤差が大きい場合もある。計測の誤差が大きいと、ポインタ位置は安定しにくい。つまり、ポインタ位置がぶれやすい。
【００３０】
従来の方法として、ポインタ位置を安定させるために、ローパスフィルタによって基準位置及び姿勢ベクトルを補正することが考えられる。但し、この方法では、応答性が劣化するという問題がある。応答性が劣化する要因は、ローパスフィルタの特性による。
【００３１】
本実施の形態では、基準位置のフィルタリングにおいて、大きな変化のみ追従し、小さな変化には反応しないようにする。また、姿勢ベクトルに対して、リストデバイス１０３で計測したモーションデータを補完的に用いたフィルタリングを行う。
【００３２】
図８に示すように、ポインタ１１７を細かく誘導する操作を想定する。作業員は、ポインタ１１７ａが投影されている状態で指先をわずかに上方へ動かす。その動作に従って、移動したポインタ１１７ｂが投影される。このような場合には、指先の移動が狭い範囲に留まるので、肘の移動は比較的小さい。従って、基準位置の計測誤差に基づくポインタ位置のぶれを防ぐために、基準位置を変えない方がよい。
【００３３】
仮に、作業員が差しているつもりの場所とポインタ位置とが多少離れていたとしても、現に投影されているポインタ１１７を誘導する上では支障とならない。むしろ、ポインタ位置が安定していることの方が、操作上重要である。
【００３４】
図９に示すように、ポインタ１１７の位置を大きく変える操作を想定する。作業員は、ポインタ１１７ａが投影されている状態で指先を大きく上方へ動かす。その動作に従って、移動したポインタ１１７ｃが投影される。このような場合には、指先が大きく移動し、それに伴い肘も移動する。この場合には、基準位置も変更しなければ、正しいポインタ位置は求められない。
【００３５】
また、人体の形状から特定される姿勢ベクトルは、比較的誤差が大きい。このことも、細かくポインタ１１７を誘導しようとする場合の支障となりうる。本実施の形態では、リストデバイス１０３で計測したモーションデータを用いて姿勢ベクトルを補正するので、姿勢ベクトルの誤差が抑制され、細かな誘導がし易くなる。
【００３６】
続いて、制御装置３０１の動作について説明する。図１０に、制御装置３０１のモジュール構成例を示す。制御装置３０１は、初期化部１００１、投影処理部１００３、第１取得部１００５、第１算出部１００７、判定部１００９、第２取得部１０１１、特定部１０１３、第１補正部１０１５、第２補正部１０１７、第２算出部１０１９、環境データ記憶部１０３１、画像データ記憶部１０３３、パラメータ記憶部１０３５、モーションデータ記憶部１０３７及び人体データ記憶部１０３９を有している。
【００３７】
初期化部１００１は、初期化処理を実行する。投影処理部１００３は、各種の画像をプロジェクタ３０５に投影させる。第１取得部１００５は、リストデバイス１０３の慣性センサ５０３において計測されたモーションデータを取得する。第１算出部１００７は、モーションデータに基づいて腕の傾きを算出する。判定部１００９は、ユーザが指差し姿勢をとっているか否かを判定する。
【００３８】
第２取得部１０１１は、３Ｄ距離カメラ３０７における計測結果に含まれる人体の形状データ（以下、人体データという。）を取得する。特定部１０１３は、人体データに基づいて基準位置（この例では、肘の位置）及び姿勢ベクトルを特定する。第１補正部１０１５は、ベクトルフィルタリング処理を実行する。第２補正部１０１７は、位置フィルタリング処理を実行する。第２算出部１０１９は、ポインタ位置を算出する。
【００３９】
環境データ記憶部１０３１は、部屋の壁面や装置の形状データを記憶している。画像データ記憶部１０３３は、枠１１１、正常ボタン１１３及び異常ボタン１１５などの画像データを記憶している。パラメータ記憶部１０３５は、各種のパラメータを記憶する。モーションデータ記憶部１０３７は、モーションデータを記憶する。人体データ記憶部１０３９は、人体データを記憶する。
【００４０】
上述した初期化部１００１、投影処理部１００３、第１取得部１００５、第１算出部１００７、判定部１００９、第２取得部１０１１、特定部１０１３、第１補正部１０１５、第２補正部１０１７及び第２算出部１０１９は、ハードウエア資源（例えば、図３又は図１７）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００４１】
上述した環境データ記憶部１０３１、画像データ記憶部１０３３、パラメータ記憶部１０３５、モーションデータ記憶部１０３７及び人体データ記憶部１０３９は、ハードウエア資源（例えば、図３又は図１７）を用いて実現される。
【００４２】
図１１に、メイン処理フローを示す。初期化部１００１は、初期化処理を実行する（Ｓ１１０１）。初期化処理において、初期化部１００１は、レーザレンジファインダ３０３によって計測した周囲の壁面や装置の形状と、環境データ記憶部１０３１に記憶されている部屋の壁面や装置の形状とを比較して、部屋内におけるポータブルガジェット１０１の位置を特定する。つまり、レーザレンジファインダ３０３は、作業現場において自らが置かれた位置を同定する。
【００４３】
そして、初期化部１００１は、部屋内の絶対位置の基準となる絶対座標系とポータブルガジェット１０１における計測及び投影の基準となる相対座標系との変換パラメータを算出する。また、初期化部１００１は、ベクトルフィルタリング処理に用いる各種パラメータ及び位置フィルタリング処理に用いる各種パラメータに初期値を設定する。
【００４４】
投影処理部１００３は、枠１１１、正常ボタン１１３及び異常ボタン１１５の絶対的位置を相対座標系における位置に変換し、変換した位置に枠１１１、正常ボタン１１３及び異常ボタン１１５を投影する（Ｓ１１０３）。投影処理部１００３は、壁面までの距離及び向きに応じて、枠１１１、正常ボタン１１３及び異常ボタン１１５の画像を変形した上で、投影するようにしてもよい。
【００４５】
第１取得部１００５は、リストデバイス１０３の慣性センサ５０３において計測されたモーションデータを取得する（Ｓ１１０５）。この例では、第１取得部１００５は、スマート端末１０５を介してモーションデータを受信する。但し、第１取得部１００５は、リストデバイス１０３から直接モーションデータを受信するようにしてもよい。  第１算出部１００７は、モーションデータに基づいて腕の傾きを算出する（Ｓ１１０７）。この例における腕の傾きは、作業員が指差しを行う方の腕における手首の傾きに相当する。また、腕の傾きを算出する方法は、装置の姿勢を求める従来技術を適用するようにしてもよい。
【００４６】
判定部１００９は、腕の傾きに基づいて、人体の形状が指差し姿勢に該当するか否かを判定する（Ｓ１１０９）。具体的には、判定部１００９は、腕の傾きが水平に近い場合に、人体の形状が指差し姿勢に該当すると判定する。
【００４７】
指差し姿勢に該当しないと判定した場合には、Ｓ１１０５に示した処理に戻って上述した処理を繰り返す。
【００４８】
一方、指差し姿勢に該当すると判定した場合には、第２取得部１０１１は、３Ｄ距離カメラ３０７における計測結果に含まれる人体データを取得する（Ｓ１１１１）。取得した人体データは、人体データ記憶部１０３９に記憶される。
【００４９】
特定部１０１３は、人体データに基づいて一次基準位置を特定する（Ｓ１１１３）。この例における基準位置は、作業員が指差しを行う方の肘の位置である。この例では、人体データから特定された基準位置を一次基準位置といい、位置フィルタリング処理によって補正された基準位置を二次基準位置という。
【００５０】
特定部１０１３は、人体データに基づいて、姿勢ベクトルを特定する（Ｓ１１１５）。この例における姿勢ベクトルは、作業員が指差しを行う方の肘から指先へ向かう、一定の大きさのベクトルである。この例では、人体データから特定された姿勢ベクトルを一次姿勢ベクトルといい、ベクトルフィルタリング処理によって補正された姿勢ベクトルを二次姿勢ベクトルという。そして、端子Ａを介して、図１２に示したＳ１２０１の処理に移る。
【００５１】
図１２の説明に移る。第１取得部１００５は、上述した通り、モーションデータを取得する（Ｓ１２０１）。第１算出部１００７は、上述した通り、腕の傾きを算出する（Ｓ１２０３）。判定部１００９は、上述した通り、人体の形状が指差し姿勢に該当するか否かを判定する（Ｓ１２０５）。
【００５２】
指差し姿勢に該当しないと判定した場合には、端子Ｂを介して、図１１に示したＳ１１０５の処理に戻って上述した処理を繰り返す。
【００５３】
一方、指差し姿勢に該当すると判定した場合には、第２取得部１０１１は、上述した通り、人体データを取得する（Ｓ１２０７）。特定部１０１３は、上述した通り、一次基準位置を特定する（Ｓ１２０９）。特定部１０１３は、上述した通り、一次姿勢ベクトルを特定する（Ｓ１２１１）。
【００５４】
第１補正部１０１５は、ベクトルフィルタリング処理を実行する（Ｓ１２１３）。ベクトルフィルタリング処理については、図１３を用いて後述する。ベクトルフィルタリング処理では、一次姿勢ベクトルを補正した二次姿勢ベクトルが求められる。
【００５５】
第２補正部１０１７は、位置フィルタリング処理を実行する（Ｓ１２１５）。位置フィルタリング処理については、図１４Ａ及び図１４Ｂを用いて後述する。位置フィルタリング処理では、一次基準位置を補正した二次基準位置が求められる。
【００５６】
第２算出部１０１９は、二次基準位置と二次姿勢ベクトルとに基づいて、ポインタ位置を算出する（Ｓ１２１７）。この例では、ポインタ位置は、二次基準位置から二次姿勢ベクトルの方向への延長線が壁面と交わる点の位置である。
【００５７】
投影処理部１００３は、壁面上のポインタ位置にポインタ１１７を投影する（Ｓ１２１９）。そして、Ｓ１２０１に示した処理に戻って上述した処理を繰り返す。
【００５８】
図１３に、ベクトルフィルタリング処理フローを示す。本実施の形態では、粒子フィルタによるフィルタリング（以下、パーティクルフィルタリングという。）を行う。パーティクルフィルタリングでは、３次元空間に多数のパーティクルを配置し、状態方程式に従って更新したパーティクルに対する評価を行なう。つまり、パーティクルは、姿勢ベクトルと同じ大きさのサンプルベクトルに相当する。
【００５９】
まず、パーティクルフィルタリングにおける初期化に相当する処理を行う。第１補正部１０１５は、図１２のＳ１２０１乃至Ｓ１２１９に示した一連のループ処理としてベクトルフィルタリング処理が初めて実行されたか否かを判定する（Ｓ１３０１）。
【００６０】
ベクトルフィルタリング処理が初めて実行されたと判定した場合には、第１補正部１０１５は、３次元空間にパーティクルを配置する（Ｓ１３０３）。例えば、初期の一次姿勢ベクトルに近似するパーティクルの密度が高くなるようにする。つまり、一次姿勢ベクトルとなす角が小さいパーティクルの割合が多くなるように配置を行う。但し、均一の密度でパーティクルを配置するようにしてもよい。
【００６１】
次に、パーティクルフィルタリングにおける予測に相当する処理を行う。第１補正部１０１５は、状態方程式「ｐ←ｐ＋Δｔ（ω×ｐ）＋ｗ」に従って、各パーティクルを更新する（Ｓ１３０５）。ｐは、パーティクルを示す。ωは、モーションデータに含まれる角速度を示す。Δｔは、サンプリング間隔を示す。ｗは各パーティクルの表現する姿勢ベクトルをランダムにずらすノイズ項を示す。
【００６２】
次に、パーティクルフィルタリングにおける評価に相当する処理を行う。第１補正部１０１５は、図１２のＳ１２１１に示した処理で特定した一次姿勢ベクトルｑを観測値として、各パーティクルの評価値を算出する（Ｓ１３０７）。評価は、「Ｅ＝ｅｘｐ（−θ2／２σ2）」の式に従って行う。Ｅは、評価値を示す。θは、一次姿勢ベクトルｑとパーティクルｐとのなす角を示す。σは、実験に基づいて決定される定数である。
【００６３】
次に、パーティクルフィルタリングにおけるリサンプリングに相当する処理を行う。第１補正部１０１５は、パーティクルの評価値に応じて次のパーティクルを配置する（Ｓ１３０９）。具体的には、第１補正部１０１５は、評価値が大きいパーティクル付近において次のパーティクルの密度が高くなり、評価値が小さいパーティクル付近において次のパーティクルの密度が低くなるようにする。
【００６４】
最後に、第１補正部１０１５は、リサンプリングされたパーティクルの平均を求め、当該平均を二次姿勢ベクトルに設定する（Ｓ１３１１）。そして、呼び出し元のメイン処理に復帰する。
【００６５】
Ｓ１３０１に示した処理の説明に戻って、ベクトルフィルタリング処理の実行が２回目以降であると判定した場合には、Ｓ１３０５に示した処理に移って上述した処理を行う。
【００６６】
次に、位置フィルタリング処理について説明する。本実施の形態では、位置フィルタリング処理（Ａ）を行う。位置フィルタリング処理（Ａ）は、図１４Ａに示した力学モデルに従う。位置ｘに示した矩形は、物体Ｘを表す。位置ｙに示した矩形は、物体Ｙを表す。２つの物体は、ばねを介して連結している。物体Ｙが段階的に位置を変え、物体Ｘが物体Ｙを追従する動きを想定する。
【００６７】
２つの物体の距離が小さい場合には、ばねによる引力Ｆｓは小さい。引力Ｆｓの大きさが摩擦力Ｆｆの大きさと等しければ、物体Ｘは移動しない。
【００６８】
一方、２つの物体の距離が大きい場合には、ばねによる引力Ｆｓは大きい。引力Ｆｓの大きさが摩擦力Ｆｆの大きさを超えれば、物体Ｘは移動する。そして、物体Ｘが物体Ｙに近づくと、引力Ｆｓは小さくなり、物体Ｘは停止する。
【００６９】
本実施の形態における一次基準位置をこの力学モデルにおける位置ｙに見立て、同じく二次基準位置をこの力学モデルにおける位置ｘに見立てる。そして、物体Ｘが移動する場合には、移動後の位置ｘを新たな二次基準位置とする。物体Ｘが移動しない場合には、二次基準位置は変わらないものとする。このようにすれば、一次基準位置と二次基準位置との距離が大きいときだけ、二次基準位置が一次基準位置に近づくようになる。また、二次基準位置の挙動が滑らかになる。
【００７０】
図１４Ｂに、位置フィルタリング処理（Ａ）フローを示す。第２補正部１０１７は、今回の一次基準位置ｙと前回の二次基準位置ｘとに基づいて、第１状態量ａを算出する（Ｓ１４０１）。第１状態量ａは、力学モデルにおける物体Ｘの加速度に相当する。
【００７１】
具体的には、３つのステップによって第１状態量ａの算出を行う。第２補正部１０１７は、まず式「Ｆｓ＝−ｋ（ｘ−ｙ）」に従って、引力Ｆｓに相当する値を求める。ｋは、実験に基づいて決定される定数である。
【００７２】
次に、第２補正部１０１７は、摩擦力Ｆｆを求める。「Ｆｓ≦Ｆｍａｘ」であれば、式「Ｆｆ＝−Ｆｓ」に従って、摩擦力Ｆｆが求められる。Ｆｍａｘは、実験に基づいて決定される定数である。一方、「Ｆｓ＞Ｆｍａｘ」であれば、式「Ｆｆ＝−Ｆｄ」に従って、摩擦力Ｆｆが求められる。Ｆｄは、実験に基づいて決定される定数である。また、力学モデルにおける物体Ｘの速度に相当する状態量ｖが０ではない場合には、式「Ｆｆ＝−Ｆｄ」に従って、摩擦力Ｆｆが求められるものとする。
【００７３】
そして、第２補正部１０１７は、式「ａ←（Ｆｓ−Ｆｆ）／ｍ」に従って、第１状態量ａを求める。ｍは、実験に基づいて決定される定数である。
【００７４】
第１状態量ａを求めると、第２補正部１０１７は、第１状態量ａとサンプリング間隔Δｔとに基づいて、第２状態量ｖを更新する（Ｓ１４０３）。具体的には、式「ｖ←ｖ＋ａ×Δｔ」に従って、今回の第２状態量ｖが求められる。
【００７５】
今回の第２状態量ｖを求めると、第２補正部１０１７は、今回の第２状態量ｖとサンプリング間隔Δｔとに基づいて、二次基準位置ｘを更新する（Ｓ１４０５）。具体的には、式「ｘ←ｘ＋ｖ×Δｔ」に従って、今回の二次基準位置ｘが求められる。そして、呼び出し元のメイン処理に復帰する。
【００７６】
本実施の形態によれば、指差し位置の挙動が安定する。
【００７７】
また、粒子フィルタを用いるので、ローパスフィルタを用いる場合に比べて応答性が良いという面もある。
【００７８】
また、上記力学モデルによれば、指差し位置の移動が滑らかになる。
【００７９】
［実施の形態２］
本実施の形態では、別の方式による位置フィルタリング処理について説明する。具体的には、前回の二次基準位置ｘが今回の一次基準位置ｙと一定の距離以上離れた場合に、二次基準位置ｘを今回の一次基準位置ｙに改める。
【００８０】
図１５に、位置フィルタリング処理（Ｂ）フローを示す。第２補正部１０１７は、今回の一次基準位置ｙと前回の二次基準位置ｘとの距離Ｄを算出する（Ｓ１５０１）。第２補正部１０１７は、距離Ｄが閾値を超えるか否かを判定する（Ｓ１５０３）。距離Ｄが閾値を超えると判定した場合には、第２補正部１０１７は、今回の一次基準位置ｙを二次基準位置ｘに設定する（Ｓ１５０５）。
【００８１】
一方、距離Ｄが閾値を超えないと判定した場合には、二次基準位置ｘは更新されない。
【００８２】
そして、位置フィルタリング処理（Ｂ）を終えると、呼び出し元のメイン処理に復帰する。
【００８３】
本実施の形態によれば、構成が単純であり、実装しやすい。また、反応が早いという面もある。
【００８４】
［実施の形態３］
本実施の形態では、更に別の方式による位置フィルタリング処理について説明する。具体的には、前回の二次基準位置ｘが今回の一次基準位置ｙと一定の距離以上離れた場合に、二次基準位置ｘを、一定の制限の下で今回の一次基準位置ｙの方向に近づける。具体的には、移動する距離に最大値に相当する制限を設ける。
【００８５】
図１６に、位置フィルタリング処理（Ｃ）フローを示す。第２補正部１０１７は、今回の一次基準位置ｙと前回の二次基準位置ｘとの距離Ｄを算出する（Ｓ１６０１）。第２補正部１０１７は、距離Ｄが制限値を超えるか否かを判定する（Ｓ１６０３）。距離Ｄが制限値を超えないと判定した場合には、第２補正部１０１７は、今回の一次基準位置ｙを二次基準位置ｘに設定する（Ｓ１６０５）。
【００８６】
一方、距離Ｄが制限値を超えると判定した場合には、第２補正部１０１７は、二次基準位置ｘを制限値だけ今回の一次基準位置ｙの方向へ近づける（Ｓ１６０７）。具体的には、第２補正部１０１７は、前回の二次基準位置ｘを起点とし今回の一次基準位置ｙを終点とするベクトルについて、その大きさを制限値に改める。そして、第２補正部１０１７は、改められたベクトルを前回の二次基準位置ｘに加えることによって、新たな二次基準位置ｘを求める。
【００８７】
そして、位置フィルタリング処理（Ｃ）を終えると、呼び出し元のメイン処理に復帰する。
【００８８】
本実施の形態によれば、比較的構成が単純であり、実装しやすい。また、或る程度動きが滑らかになるという面もある。
【００８９】
［実施の形態４］
本実施の形態では、別の方式によるベクトルフィルタリング処理について説明する。具体的には、相補フィルタによるフィルタリングを行う。
【００９０】
第１補正部１０１５は、式「ｒ←α{ｒ＋Δｔ（ω×ｒ）}＋（１−α）ｑ」に従って、二次姿勢ベクトルｒを更新する。αは、実験に基づいて決定される定数（例えば、０．９６）である。Δｔは、サンプリング間隔を示す。ωは、モーションデータに含まれる角速度を示す。
【００９１】
本実施の形態によれば、ローパスフィルタを用いる場合に比べて応答性が良い。
【００９２】
尚、実施の形態１乃至３に示した位置フィルタリング処理と、実施の形態４に示したベクトルフィルタリング処理を組み合わせるようにしてもよい。つまり、上述した各位置フィルタリング処理と各ベクトルフィルタリング処理との組み合わせは、任意である。
【００９３】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【００９４】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【００９５】
なお、上で述べた制御装置３０１及びスマート端末１０５は、コンピュータ装置であって、図１７に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００９６】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００９７】
本実施の形態に係る制御方法は、（Ａ）立体的に計測された人体の形状データを取得する処理と、（Ｂ）形状データに基づいて、人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する人体の部分の位置を特定する処理と、（Ｃ）人体の腕に取り付けられた装置における角速度を取得する処理と、（Ｄ）角速度に基づいて、ベクトルを補正する第１補正処理と、（Ｅ）現状の基準位置と部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、（Ｆ）補正されたベクトルと、基準位置とに基づいて、対象面上の指差し位置を算出する処理とを含む。
【００９８】
このようにすれば、指差し位置の挙動が安定する。
【００９９】
更に、上記第１補正処理において、粒子フィルタを用いるようにしてもよい。
【０１００】
このようにすれば、ローパスフィルタを用いる場合に比べて応答性が良い。
【０１０１】
上記第２補正処理において、２つの物体間に張られたばねによる引力と物体の摩擦力との合力による物体の移動モデルに、現状の基準位置と上記部分の位置とを適用するようにしてもよい。
【０１０２】
このようにすれば、指差し位置の移動が滑らかになる。
【０１０３】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１０４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０５】
（付記１）
立体的に計測された人体の形状データを取得する処理と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する処理と、
前記人体の腕に取り付けられた装置における角速度を取得する処理と、
前記角速度に基づいて、前記ベクトルを補正する第１補正処理と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する処理と
を含み、コンピュータにより実行される制御方法。
【０１０６】
（付記２）
前記第１補正処理において、粒子フィルタを用いる
付記１記載の制御方法。
【０１０７】
（付記３）
前記第２補正処理において、２つの物体間に張られたばねによる引力と物体の摩擦力との合力による物体の移動モデルに、前記現状の基準位置と前記部分の位置とを適用する
付記１乃至２記載の制御方法。
【０１０８】
（付記４）
立体的に計測された人体の形状データを取得する処理と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する処理と、
前記人体の腕に取り付けられた装置における角速度を取得する処理と、
前記角速度に基づいて、前記ベクトルを補正する第１補正処理と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正処理と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する処理と
をコンピュータに実行させるプログラム。
【０１０９】
（付記５）
立体的に計測された人体の形状データを取得する第１取得部と、
前記形状データに基づいて、前記人体が指差す方向を示すベクトルと、当該方向の基準となる位置に相当する前記人体の部分の位置を特定する特定部と、
前記人体の腕に取り付けられた装置における角速度を取得する第２取得部と、
前記角速度に基づいて、前記ベクトルを補正する第１補正部と、
現状の基準位置と前記部分の位置との隔たりが小さい場合に、当該現状の基準位置を変えず、当該隔たりが大きい場合に、前記部分の位置に近づくように又は一致するように新たな基準位置に改める第２補正部と、
補正された前記ベクトルと、前記基準位置とに基づいて、対象面上の指差し位置を算出する算出部と
を有する制御装置。
【符号の説明】
【０１１０】
１０１  ポータブルガジェット    １０３  リストデバイス
１０５  スマート端末    １１１  枠
１１３  正常ボタン    １１５  異常ボタン
１１７  ポインタ    ３０１  制御装置
３０３  レーザレンジファインダ    ３０５  プロジェクタ
３０７  ３Ｄ距離カメラ    ３０９  サーボモータ
３１１  ＣＰＵ    ３１３  メモリ
３１５  無線通信デバイス    ５０１  マイクロコントローラー
５０３  慣性センサ    ５０５  無線通信デバイス
６０１  ＣＰＵ    ６０３  メモリ
６０５  無線通信デバイス    １００１  初期化部
１００３  投影処理部    １００５  第１取得部
１００７  第１算出部    １００９  判定部
１０１１  第２取得部    １０１３  特定部
１０１５  第１補正部    １０１７  第２補正部
１０１９  第２算出部    １０３１  環境データ記憶部
１０３３  画像データ記憶部    １０３５  パラメータ記憶部
１０３７  モーションデータ記憶部    １０３９  人体データ記憶部
【図１】
0006488946.tif 000002
【図２】
0006488946.tif 000003
【図３】
0006488946.tif 000004
【図４】
0006488946.tif 000005
【図５】
0006488946.tif 000006
【図６】
0006488946.tif 000007
【図７】
0006488946.tif 000008
【図８】
0006488946.tif 000009
【図９】
0006488946.tif 000010
【図１０】
0006488946.tif 000011
【図１１】
0006488946.tif 000012
【図１２】
0006488946.tif 000013
【図１３】
0006488946.tif 000014
【図１４Ａ】
0006488946.tif 000015
【図１４Ｂ】
0006488946.tif 000016
【図１５】
0006488946.tif 000017
【図１６】
0006488946.tif 000018
【図１７】
0006488946.tif 000019