(57)【特許請求の範囲】
【請求項１】
ナビゲーションを行う電子コンピューティングシステムであって、前記電子コンピューティングシステムは、
スライディングウィンドウ逆フィルタモジュールを実施するために動作可能である電子プロセッサ及びメモリを備え、ナビゲーションを行う電子コンピューティングシステムであって、前記スライディングウィンドウ逆フィルタモジュールは、
前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信し、
第１の時間のウィンドウ及び第２の時間のウィンドウが時間的に連続的に重なり合う、前記第１の時間のウィンドウに関連付けられた第１の変数の集合から、前記第２の時間のウィンドウに関連付けられた第２の変数の集合に、前記センサ測定値から得られた情報を転写し、前記転写された情報に基づいて前記機器の情報を後処理モジュールへ出力するように構成され、
前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、前記機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点で前記機器の状態を表現する複数の第２の変数とのため用いられ、
前記情報を転写することは、
前記複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、前記第１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも部分集合を周辺化することと、
第３の情報行列を取得するために、前記第２の情報行列に関連付けられた前記第２の変数の部分集合を周辺化することと、
第４の情報行列を取得するために、前記第３の情報行列をスケーリングすることと、
を含み、
前記第４の情報行列は、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウが重なり合う時点での前記機器の前記状態と前記機器に近接している前記物体の前記位置及び／又は方向に関する前記情報の集約表現である、
電子コンピューティングシステム。
【請求項２】
前記前処理モジュールと、
前記前処理モジュールに連結されている画像検出ユニットであって、前記画像検出ユニットによって捕捉された複数の画像を受信し、前記複数の画像から前記画像データを抽出するように構成されている、画像検出ユニットと、
前記前処理モジュールに連結されている動き感知ユニットであって、前記動き感知ユニットから前記慣性データを受信するように構成されている、動き感知ユニットと、
を更に備える、請求項１に記載の電子コンピューティングシステム。
【請求項３】
前記第１の時間のウィンドウに関連付けられた前記第１の変数の集合のある部分集合は、前記第２の時間のウィンドウに関連付けられた前記第２の変数の集合のある部分集合と時間的に重なり合う、請求項１に記載の電子コンピューティングシステム。
【請求項４】
前記第１の変数の集合と前記第２の変数の集合との間の前記重なり合いは、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの両方に存在している最先の時点にある、請求項３に記載の電子コンピューティングシステム。
【請求項５】
各ウィンドウに対して、前記複数の第１の変数は、複数の画像に亘る画像特徴の３Ｄ位置及び／又は方向を表現し、
各ウィンドウに対して、前記複数の第２の変数は、直線加速度データ及び角速度データを含む、
請求項２に記載の電子コンピューティングシステム。
【請求項６】
前記機器の前記状態は、前記動き感知ユニットに対するバイアスを更に含む、請求項５に記載の電子コンピューティングシステム。
【請求項７】
各ウィンドウに関連付けられた前記第１の情報行列は、
前記機器に近接している物体の位置又は方向に対する推定値を表現する、少なくとも１つの変数に関する第１の情報と、
前記機器の前記状態の推定値を表現する、少なくとも１つの変数に関する第２の情報と、
前記第１の情報と前記第２の情報との間の共有情報と、
を含む、請求項１に記載の電子コンピューティングシステム。
【請求項８】
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項７に記載の電子コンピューティングシステム。
【請求項９】
前記第１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも前記ある部分集合を周辺化することは、前記共有情報を周辺化することを含み、
前記第３の情報行列をスケーリングすることは、前記第３の情報行列を定数で除算すること、又は、前記第３の情報行列に定数を乗算することを含む、
請求項７に記載の電子コンピューティングシステム。
【請求項１０】
前記定数は、前記第１の時間のウィンドウのサイズに等しくなる、請求項９に記載の電子コンピューティングシステム。
【請求項１１】
コンピュータで実行される方法であって、
前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信することと、
プロセッサを使用して、第１の時間のウィンドウ及び第２の時間のウィンドウが時間的に連続的に重なり合う、前記第１の時間のウィンドウに関連付けられた第１の変数の集合から、前記第２の時間のウィンドウに関連付けられた第２の変数の集合に、前記センサ測定値から得られた情報を転写することと、
前記転写された情報に基づいて前記機器の状態を後処理モジュールへ出力することと、
を含み、
前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、前記機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点で前記機器の状態を表現する複数の第２の変数とのため用いられ、
前記情報を転写することは、
前記複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、前記１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも部分集合を周辺化することと、
第３の情報行列を取得するために、前記第２の情報行列に関連付けられた前記第２の変数の部分集合を周辺化することと、
第４の情報行列を獲得するために前記第３の情報行列をスケーリングすることと、
を含み、
前記第４の情報行列は、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウが重なり合う時点での前記機器の前記状態と前記機器に近接している前記物体の前記位置及び／又は方向における前記情報の集約表現である、
コンピュータで実行される方法。
【請求項１２】
前記第１の時間のウィンドウに関連付けられた前記第１の変数の集合のある部分集合は、前記第２の時間のウィンドウに関連付けられた前記第２の変数の集合のある部分集合と時間的に重なり合う、請求項１１に記載のコンピュータで実行される方法。
【請求項１３】
前記第１の変数の集合と前記第２の変数の集合との間の前記重なり合いは、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの両方に存在している最先の時点にある、請求項１２に記載のコンピュータで実行される方法。
【請求項１４】
各ウィンドウに対して、前記複数の第１の変数は、複数の画像に亘る画像特徴の３Ｄ位置及び／又は方向を表現し、
各ウィンドウに対して、前記複数の第２の変数は、直線加速度データ及び角速度データを含む、
請求項１１に記載のコンピュータで実行される方法。
【請求項１５】
前記機器の前記状態は、動き感知ユニットに対するバイアスを更に含む、請求項１４に記載のコンピュータで実行される方法。
【請求項１６】
各ウィンドウに関連付けられた前記第１の情報行列は、
前記機器に近接している物体の位置又は方向に対する推定値を表現する、少なくとも１つの変数に関する第１の情報と、
前記機器の前記状態の推定値を表現する、少なくとも１つの変数に関する第２の情報と、
前記第１の情報と前記第２の情報との間の共有情報と、
を含む、請求項１１に記載のコンピュータで実行される方法。
【請求項１７】
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項１６に記載のコンピュータで実行される方法。
【請求項１８】
前記第１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも前記ある部分集合を周辺化することは、前記共有情報を周辺化することを含み、
前記第３の情報行列をスケーリングすることは、前記第３の情報行列を定数で除算すること、又は、前記第３の情報行列に定数を乗算することを含む、
請求項１６に記載のコンピュータで実行される方法。
【請求項１９】
前記定数は、前記第１の時間のウィンドウのサイズに等しくなる、請求項１８に記載のコンピュータで実行される方法。
【請求項２０】
１つ以上の電子コンピューティング機器に動作を行わせるコンピュータプログラム命令が符号化されている非一時的なコンピュータ記憶媒体であって、前記コンピュータプログラム命令は、前記１つ以上の電子コンピューティング機器によって実行されたとき、前記１つ以上の電子コンピューティング機器に、
前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信することと、
プロセッサを使用して、第１の時間のウィンドウ及び第２の時間のウィンドウが時間的に連続的に重なり合う、前記第１の時間のウィンドウに関連付けられた第１の変数の集合から、前記第２の時間のウィンドウに関連付けられた第２の変数の集合に、前記センサ測定値から得られた情報を転写することと、前記転写された情報に基づいて前記機器の状態を後処理モジュールへ出力することと、を含む動作を実行させ、
前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、前記機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点で前記機器の状態を表現する複数の第２の変数とのため用いられ、
前記情報を転写することは、
前記複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、前記１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも部分集合を周辺化することと、
第３の情報行列を取得するために、前記第２の情報行列に関連付けられた前記第２の変数の部分集合を周辺化することと、
第４の情報行列を取得するために、前記第３の情報行列をスケーリングすることと、
を含み、
前記第４の情報行列は、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウが重なり合う時点での前記機器の前記状態と前記機器に近接している前記物体の前記位置及び／又は方向に関する前記情報の集約表現である、
非一時的なコンピュータ記憶媒体。
【請求項２１】
前記第１の時間のウィンドウに関連付けられた前記第１の変数の集合のある部分集合は、前記第２の時間のウィンドウに関連付けられた前記第２の変数の集合のある部分集合と時間的に重なり合う、請求項２０に記載の媒体。
【請求項２２】
前記第１の変数の集合と前記第２の変数の集合との間の前記重なり合いは、前記第１の時間のウィンドウ及び前記第２の時間のウィンドウの両方に存在している最先の時点にある、請求項２１に記載の媒体。
【請求項２３】
各ウィンドウに対して、前記複数の第１の変数は、複数の画像に亘る画像特徴の３Ｄ位置及び／又は方向を表現し、
各ウィンドウに対して、前記複数の第２の変数は、直線加速度データ及び角速度データを含む、
請求項２０に記載の媒体。
【請求項２４】
前記機器の前記状態は、動き感知ユニットに対するバイアスを更に含む、請求項２３に記載の媒体。
【請求項２５】
各ウィンドウに関連付けられた前記第１の情報行列は、
前記機器に近接している物体の位置又は方向に対する推定値を表現する、少なくとも１つの変数に関する第１の情報と、
前記機器の前記状態の推定値を表現する、少なくとも１つの変数に関する第２の情報と、
前記第１の情報と前記第２の情報との間の共有情報と、
を含む、請求項２３に記載の媒体。
【請求項２６】
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項２５に記載の媒体。
【請求項２７】
前記第１の時間のウィンドウの前記第１の情報行列に関連付けられた前記第１の変数の少なくとも前記ある部分集合を周辺化することは、前記共有情報を周辺化することを含み、
前記第３の情報行列をスケーリングすることは、前記第３の情報行列を定数で除算すること、又は、前記第３の情報行列に定数を乗算することを含む、
請求項２５に記載の媒体。
【請求項２８】
前記定数は、前記第１の時間のウィンドウのサイズに等しくなる、請求項２７に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年８月１２日に出願された米国特許出願第６１／８６４，７５４号に対する優先権を主張するものであり、同出願の内容は全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
スマートフォン、スマートメガネ及び他の機器などのポータブルコンピュータ機器がよりユビキタスになるのにつれて、このような機器に定位及びマッピング能力を設ける利益がある。定位は、全地球測位システム（ＧＰＳ）信号若しくは携帯電話基地局信号の三角測量を使用するシステムに頼ることによって部分的に対処され得る。地図作成は、特殊設備を用いて構成された車で通りを走り抜け、通りの地図を描くなどの企業向け解決策を用いて部分的に対処され得る。定位及び地図作成は、地図及び位置に基づくサービスと一体になって消費者の利益になる。しかしながら、このようなサービスは、ＧＰＳ信号又は携帯電話基地局信号が建物の内部で遮断されることがあるため、及び、ポータブルコンピュータ機器のためのマッピングが典型的に屋内環境に拡張されていないため、屋外での使用に限定される傾向がある。更に、商用の定位サービス及び地図作成サービスは、概して、位置に関して数メートルより高い精度を提供できない。
【０００３】
視覚に基づく慣性ナビゲーションは、定位及び／又は地図作成を達成するために画像及び慣性測定機器から取得された情報に頼る。視覚に基づく慣性ナビゲーションシステムは、ＧＰＳ、若しくは、携帯電話基地局からの信号を必要としないので、このようなシステムは、ＧＰＳ及び携帯電話信号が到達し得ない、又は、干渉のため利用できない屋内で使用されることがある。その上に、視覚に基づく慣性ナビゲーションは、非常に高い、たとえば、およそセンチメートルの位置精度を可能にする。しかしながら、視覚に基づく慣性ナビゲーションは、典型的に、画像検出器から獲得された大量の画像データと、慣性測定ユニット（ＩＭＵ）によって発生させられた慣性読み取り値とを全てリアルタイムで処理する必要があるので、計算集約的である。加えて、非常に正確な位置の測定を達成するために、前のポーズ（位置及び方向）と、慣性測定と、画像特徴とに関連している情報の履歴が典型的に記憶され、それ故に、機器がこの情報を処理するためにかなりの量のメモリ、及び、その結果として、大量の計算時間を使用することを必要とする。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示は、視覚に基づく慣性ナビゲーションに関する。
概して、第１の態様では、本開示の主題は、ナビゲーションを行う電子コンピューティングシステムにおいて具現化されることがあり、電子コンピューティングシステムは、スライディングウィンドウ逆フィルタモジュールを実施するために動作可能である電子プロセッサ及びメモリを含み、スライディングウィンドウ逆フィルタモジュールは、前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信し、第１のウィンドウ及び第２のウィンドウが時間的に連続的に重なり合う、第１の時間のウィンドウに関連付けられた第１の変数の集合から、第２の時間のウィンドウに関連付けられた第２の変数の集合に、センサ測定値から得られた情報を転写し、転写された情報に基づいて機器の情報を後処理モジュールへ出力するように構成されている。ペアの中の各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点での機器の状態を表現する複数の第２の変数とのため用いられる。情報を転写することは、複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、第１のウィンドウの第１の情報行列に関連付けられた第１の変数の少なくとも部分集合を周辺化することと、第３の情報行列を取得するために、第２の情報行列に関連付けられた第２の変数の部分集合を周辺化することと、第４の情報行列を取得するために、第３の情報行列をスケーリングすることと、を含み、この第４の情報行列は、ペアの中の第１のウィンドウ及び第２のウィンドウが重なり合う時点での機器の状態と機器に近接している物体の位置及び／又は方向との集約表現である。
【０００５】
別の態様では、本開示の主題は、コンピュータで実行される方法において具現化されることがあり、この方法は、前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信することと、プロセッサを使用して、第１のウィンドウ及び第２のウィンドウが時間的に連続的に重なり合う、第１の時間のウィンドウに関連付けられた第１の変数の集合から、第２の時間のウィンドウに関連付けられた第２の変数の集合に第１のセンサ測定値から得られた情報を転写することと、転写された情報に基づいて機器の状態を後処理モジュールへ出力することと、を備え、ペアの中の各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点で機器の状態を表現する複数の第２の変数とのため用いられる。情報を転写することは、複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、第１のウィンドウの第１の情報行列に関連付けられた第１の変数の少なくとも部分集合を周辺化することと、第３の情報行列を取得するために、第２の情報行列に関連付けられた第２の変数の部分集合を周辺化することと、第４の情報行列を取得するために、第３の情報行列をスケーリングすることと、を含み、第４の情報行列は、ペアの中の第１のウィンドウ及び第２のウィンドウが重なり合う時点での機器の状態と機器に近接している物体の位置及び／又は方向との集約表現である。
【０００６】
別の態様では、本開示の主題は、１つ以上の電子コンピューティング機器に動作を行わせるコンピュータプログラム命令が符号化されている非一時的なコンピュータ記憶媒体において具現化されることがあり、このコンピュータプログラム命令は、１つ以上の電子コンピューティング機器によって実行されたとき、１つ以上の電子コンピューティング機器に動作を行わせるコンピュータプログラム命令が符号化されている非一時的なコンピュータ記憶媒体において具現化されることがあり、この動作は、前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信することと、プロセッサを使用して、第１のウィンドウ及び第２のウィンドウが時間的に連続的に重なり合う、第１の時間のウィンドウに関連付けられた第１の変数の集合から、第２の時間のウィンドウに関連付けられた第２の変数の集合に、第１のセンサ測定値から得られた情報を転写することと、転写された情報に基づいて機器の状態を後処理モジュールへ出力することと、を含み、ペアの中の各ウィンドウは、対応する第１の情報行列に関連付けられ、各第１の情報行列は、機器に近接している少なくとも１つの物体の位置及び／又は方向を表現する複数の第１の変数と、２つ以上の時点で機器の状態を表現する複数の第２の変数とのため用いられる。情報を転写することは、複数の第２の変数との関連性を保持したままである第２の情報行列を取得するために、第１のウィンドウの第１の情報行列に関連付けられた第１の変数の少なくとも部分集合を周辺化することと、第４の情報行列を取得するために、第３の情報行列をスケーリングすることと、を含み、第４の情報行列は、ペアの中の第１のウィンドウ及び第２のウィンドウが重なり合う時点での機器の状態と機器に近接している物体の位置及び／又は方向との集約表現である。
【０００７】
方法、媒体、及び／又はシステムの実装は、以下の特徴及び／又は他の態様の特徴のうち１つ以上を含む可能性がある。たとえば、いくつかの実装では、電子コンピューティングシステムは、画像検出ユニットによって捕捉された複数の画像を受信し、複数の画像から画像データを抽出するように構成されている、前処理モジュールと、前処理モジュールに連結されている動き感知ユニットであって、動き感知ユニットから慣性データを受信するように構成されている前処理モジュールに連結されている、動き感知ユニットと、を更に含むことがある。
【０００８】
いくつかの実装では、第１のウィンドウに関連付けられた第１の変数の集合の部分集合は、第２のウィンドウに関連付けられた第２の変数の集合の部分集合と時間的に重なり合う。重なり合いの期間は、第１のウィンドウ及び第２のウィンドウの両方に存在するどのような期間にも対応することができる。特に、この重なり合いの期間は、第１のウィンドウ及び第２のウィンドウの両方に存在する最先の時点を伴う変数の集合に対応することがある。
【０００９】
いくつかの実装では、ウィンドウ毎に、複数の第１の変数は、複数の画像に亘る画像特徴の３Ｄ位置及び／又は方向を表現し、複数の第２の変数は、加速度データ及び角速度データを含む。機器の状態は、両方の感知機器に対する内因性パラメータ及び外因性パラメータ（たとえば、動き感知ユニットに対するバイアス、及び、カメラに関する動きユニットの相対的なポーズ）を更に含むことがある。
【００１０】
いくつかの実施では、各ウィンドウに関連付けられた第１の情報行列は、機器に近接している物体の位置又は方向に対する推定値を表現する、少なくとも１つの変数に関する第１の情報と、機器の状態の推定値を表現する、少なくとも１つの変数に関する第２の情報と、第１の情報と第２の情報との間の共有情報と、を含む。共有情報は、機器に近接している物体の位置又は方向の推定値と機器の状態の推定値との間の共有信頼度を表現することがある。第１のウィンドウの第１の情報行列に関連付けられた第１の変数の少なくとも部分集合を周辺化することは、対応する共有情報を周辺化することを含むことがある。第３の情報行列をスケーリングすることは、第３の情報行列を定数で除算すること、又は、第３の情報行列に定数を乗算することを含むことがある。定数は、第１のウィンドウの中で捕捉された測定値の個数若しくは第１のウィンドウに関連付けられた時間の長さなどの第１のウィンドウのサイズに等しいことがある。
【００１１】
ある実装は、特別な利点を有することがある。たとえば、いくつかの実装では、本明細書において開示された技術は、長期間に亘って発生させられた全ての制約を同時に処理することを必要とすることなく、様々な時点での機器の慣性状態と機器に近接している被観測物体の位置及び／又は方向との間の制約に関する情報を保持することを可能にする。更に、制約が処理される過去の変数の個数を削減しても、本技術は、過剰な信頼度を回避しながら現時点での機器の慣性状態に対する非常に正確な推定値の計算（およそセンチメートルの位置誤差）を可能にする。
【００１２】
別段の定めがない限り、本明細書において使用される全ての技術用語及び科学用語は、現在開示されている主題が属する技術分野における当業者によって共通して理解されているものと同じ意味をもつ。本明細書に記載されているものと類似若しくは同等の方法、材料、機器及びシステムは、本発明の実施若しくは試験で用いられ得るが、適当な方法、材料、機器及びシステムが後述される。本明細書において言及された刊行物、特許出願、特許、及び他の参考文献は全てこれらの内容全体が参照により本明細書に組み込まれる。加えて、本明細書に記載された実施例は、単に実例の目的であり、限定的であることが意図されていない。
【００１３】
１つ以上の実装の詳細は、添付図面及び以下の説明に記載されている。その他の特徴及び利点は、明細書本文、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】視覚に基づく慣性ナビゲーションシステムによって計算された経路が重ね合わされた間取図を示す概略図である。
【図２】視覚に基づく慣性ナビゲーション機器の実施例を示す概略図である。
【図３】視覚に基づく慣性ナビゲーションを使用して位置及び方向の推定値を計算するプロセス例を示すフローチャートである。
【図４】バンドル調整を行うプロセス例を示すフローチャートである。
【図５】情報行列の実施例を示す概略図である。
【図６】スパース構造周辺化を行うプロセス例を示すフローチャートである。
【図７】第２の情報行列のプロセス例を示すフローチャートである。
【図８】遅延動き周辺化を行うプロセス例を示すフローチャートである。
【図９】本明細書に記載された技術と共に使用されることがあるモバイルコンピューティング機器の実施例を示す概略図である。
【図１０】仮想矢印が画像の上に重ね合わされた、視覚に基づく慣性ナビゲーションシステムを含む機器のディスプレイによる画像出力の実施例を示す図である。
【図１１】仮想経路が画像の上に重ね合わされた、視覚に基づく慣性ナビゲーションシステムを含む機器のディスプレイによって出力された画像の実施例を示す図である。
【発明を実施するための形態】
【００１５】
視覚に基づく慣性ナビゲーションシステムに関して、ある時点での機器の位置及び方向に関する情報、若しくは、観測された画像特徴の３Ｄ位置は、現在捕捉された画像の内部の特徴が１つ以上の前の画像において見つけられる可能性があるので、前の時点での機器の位置及び方向に関する情報と高く相関する傾向がある。決定論的若しくは確率論的な測定制約の形式で数学的に表現されたこのような相関は、視覚に基づく慣性ナビゲーションシステムの内部で機器の位置及び方向の推定値の正確さを高めるために使用され得る。しかしながら、これらの測定値を処理することは、特に、計算能力を制限されていることがある（ウェアラブルコンピューティング機器などの）機器にとって、計算的に手間がかかる可能性がある。加えて、このような機器は、非線形性の影響を受ける低性能カメラ／検出器及びＩＭＵを利用することがあり、非常に正確な推定値が生成され得るためにより一層過去のデータが同時に保持及び処理される必要性を高める。画像及び慣性読み取り値の個数が増加するのにつれて、計算が解決困難になる可能性がある。
【００１６】
本明細書において開示された技術は、システムが長期間に亘って発生させられた全ての制約を同時に処理することを必要とすることなく、様々な時点での機器の慣性状態と視覚に基づく慣性ナビゲーションシステムにおいて観測された機器に近接している物体の位置及び／又は方向との間の制約に関する情報を保持する方法を対象にする。更に、制約が処理される過去の変数の個数を削減しても、本技術は、過剰な信頼度を回避しながら現時点での機器の慣性状態に対する非常に正確な推定値の計算（およそセンチメートルの位置誤差）を可能にする。
【００１７】
制約が最適化される過去の変数の個数を最小限に抑えるために、スライディングウィンドウ逆フィルタ（ＳＷＦ）が使用され、このＳＷＦは、画像が電子コンピューティング機器（たとえば、スマートフォン、電子タブレット機器、若しくはスマートメガネ）上で動作する視覚に基づく慣性ナビゲーションシステムによって捕捉されるとき、重なり合う画像のウィンドウからの情報を処理する。画像の中で追跡され、同様に機器上で動作するＩＭＵから取得された情報に対応する特徴を使用して、ＳＷＦは、単に機器の「状態」と呼ばれることがある機器の慣性状態（たとえば、位置、方向、速度、及び／又はジャイロ及び加速度計バイアス）に対する推定値を取得する。ＳＷＦは、機器に近接している物体の位置及び／又は方向に対する推定値も取得し、これらの物体は、一実施例では、画像間で追跡されている特徴の３Ｄ位置として表現される。機器慣性状態に対する推定値と、物体位置及び／又は方向に対する推定値とは、画像のウィンドウの中の各画像に対して計算される。画像のウィンドウ毎に、ＳＷＦは、次に、これらの推定値を単一の時点Ｔにおける機器の状態に関する推定値に変換することによってこれらの推定値を集約する。１対のウィンドウのペアに対して、第１のウィンドウから集約された情報は、次に、ウィンドウのペアが少なくとも１つの同じ時点Ｔにおいて重なり合うという条件で、第２のウィンドウへ前進させられ得る。第１のウィンドウから集約された情報は、次に、他の時点での機器の状態を推定するため第２のウィンドウ上の後続の処理ステップで使用され得る。情報を集約し、重なり合うウィンドウのペアの間で転写するプロセスは、その結果、制約が最適化される過去の変数の個数を最小限に抑えたまま機器の慣性状態と様々な時点での機器に近接している物体の位置及び／又は方向との間の制約に関する情報を保持する。
【００１８】
図１は、本開示に従って構成された視覚に基づく慣性ナビゲーションシステムを有する電子コンピューティング機器によって計算された経路１０が重ね合わされた間取図を示す概略図である。間取図は、様々な区画（たとえば、配管区画、工具及び金物類区画など）を含む一般的な金物店の概観であり、網掛け領域は、棚を表現し、白色領域は、顧客が移動できる通路及び店舗のその他の区域を表現する。機器は、人が店舗内を移動するときに画像を記録するポータブル電子コンピューティング機器（たとえば、カメラ付き携帯電話機、スマートフォン、スマートメガネ、ヘッド・マウント・ディスプレイ、又は監視機器）でもよい。ポータブル電子コンピューティング機器は、機器の直線加速度及び角速度などの慣性データを記録するコンポーネント（たとえば、加速度計（群）及びジャイロスコープ（群））を有するＩＭＵを更に含む。画像及び慣性データの記録中に、視覚に基づく慣性ナビゲーションシステムは、出発点に対するコンピューティング機器の状態の推定値を計算及び記憶し、一般に「自律航法」と呼ばれるプロセスである。位置は、機器のメモリに記憶された、及び／又は、図１に表されるように、ユーザが見るためにディスプレイに出力され得る間取図の画像に重ね合わされた経路１０を計算するために使用されることがある。
【００１９】
図２は、図１の経路１０を生成するために使用されることがある電子コンピューティング機器などの視覚に基づく慣性ナビゲーション機器１００の実施例を示す概略図である。機器１００は、視覚に基づく慣性ナビゲーションシステムを作り上げる複数のコンポーネントを含む。たとえば、機器１００は、光学像を電子信号に変換するデジタルカメラなどの画像センサ１０２を含む。センサ１０２は、デジタル電荷結合素子（ＣＣＤ）、相補型金属酸化膜半導体（ＣＭＯＳ）ピクセルセンサ、若しくは赤外線センサなどの何らかの適切な画像感知コンポーネントを利用することがある。代替的に、画像センサ１０２は、奥行きセンサ、ステレオカメラ対、フラッシュ・ライダー・センサ、レーザーセンサ、又はこれらの何らかの組み合わせを含むことがある。画像センサ１０２は、ハードウェアで完全に形成されることがあり、又は、検出画像を修正するソフトウェアを組み込むように構成されることもある。機器１００は、慣性測定ユニット１０４を更に含む。ＩＭＵ１０４は、機器１００の慣性データを記録するため３軸ジャイロスコープ及び加速度計といった数個の電子ハードウェアコンポーネントを含むことがある。たとえば、ＩＭＵ１０４は、機器の６自由度（機器の加速度のＸ、Ｙ及びＺ直交座標と、機器の角速度のロール、ピッチ、及びヨー成分）を測定し、この機器の６自由度について報告することがある。ＩＭＵ１０４は、同様に、他の慣性データを出力することもある。様々なＩＭＵが市販され、又は、ポータブル電子コンピューティング機器に予めインストールされる。
【００２０】
機器１００は、画像センサ１０２から検出された画像と、ＩＭＵ１０４によって記録された慣性データとを受信する前処理モジュール１０６を更に含む。画像センサ１０２によって記録され、モジュール１０６によって処理された画像は、「フレーム」と呼ばれることもある。前処理モジュール１０６は、電子ハードウェア、ソフトウェア、又は電子ハードウェアとソフトウェアとの両方の組み合わせであり得る。とりわけ、前処理モジュール１０６は、記録されたフレームの内部で特徴追跡を行い、慣性データをフレーム自体に関連付ける。画像特徴は、フレーム内の物体の、又は、物体の一部の特定のロケーション／ピクセル又はピクセルのグループを表現する画像座標（たとえば、ｘ−ｙ座標）に対応する。前処理モジュール１０６は、特徴追跡が画像センサ１０２によって取得された２つ以上のフレームに亘って追跡された単一の特徴のロケーションを表現する２次元点の系列である「特徴追跡」を計算する。前処理モジュール１０６は、第１のフレーム内の１つ以上の画像特徴を識別し、次に、これらの１つ以上の画像特徴を連続フレーム内の１つ以上の対応する画像特徴と照合することにより特徴追跡を発生させる。当該技術分野において知られている様々な技術が特徴追跡を取得するために使用されることがある。たとえば、画像特徴の識別は、ピクセル毎に（Ｈａｒｒｉｓコーナー検出器又はラプラシアン演算子で使用されるスコアリング関数などの）スコアリング関数を評価し、次に、これらのピクセルの近傍ピクセルのどれよりも大きいスコアを有するピクセルを画像特徴として指定することにより行われることがある。画像特徴は、その後、第１のフレーム内で画像特徴を中心としたピクセルの矩形配列（又はこれらのの関数）を異なったフレーム内の画像特徴に中心が置かれたピクセルの矩形配列（又はこれらの関数）と比較することによりフレームの間で照合され得る。連続的なフレームのペアに関して画像特徴を照合することにより、前処理モジュール１０６は、各特徴追跡がフレーム全域での画像特徴ロケーションの系列を格納している特徴追跡のリストを構築する。モジュール１０６によって識別された特徴追跡の個数は、変化することがあり、いくつかの実装では、視覚に基づく慣性ナビゲーションシステムが使用されているエンドユーザ・アプリケーションに依存することがあり得る。
【００２１】
前処理モジュール１０６は、画像センサ１０２から受信されたフレームの部分集合を「キーフレーム」として選択するように更に構成されている。キーフレームは、前処理モジュールによってキーフレームとして選択された何らかのフレームである。たとえば、画像センサ１０２から受信された１０個のフレームの系列に対して、前処理モジュール１０２は、先頭及び末尾のフレームをキーフレームとして指定することがある。フレームは、所望キーフレーム周波数、又は、現在フレーム内で識別された、又は、フレームのペアの中で照合された画像特徴の個数に関連している統計値のような１つ以上のパラメータに基づいてモジュール１０６によってキーフレームとして指定されることがある。キーフレームを選択する他の決定規則も使用されることがある。前処理モジュール１０６は、更に、Ｋが既定のパラメータである、キーフレームの系列をＫ個の連続的なキーフレームのグループにまとめる。キーフレームの各グループ（すなわち、画像の集合）は、ウィンドウと呼ばれることがある。画像が画像センサ１０２から受信されるとき、モジュール１０６は、キーフレームを重なり合うウィンドウのグループにまとめることがあり、入来する各ウィンドウは、少なくとも１個のキーフレームによって、かつ、Ｍ個の以下のフレームによって前のウィンドウに重なる。Ｍは、１とＫとの間の値を取り得るパラメータである。たとえば、Ｋが５に等しく、Ｍが３に等しいと仮定すると、モジュール１０６によって作成された第１のウィンドウは、キーフレーム（１，２，３，４，５）を含むことがあり、これに対し、第２のウィンドウは、キーフレーム（３，４，５，６，７）を含むことがあり、第３のウィンドウは、キーフレーム（４，６，７，８，９）を含むことがある。それ故に、第１のウィンドウと第２のウィンドウとの間に、３個の重なり合うキーフレーム（すなわち、キーフレーム３、４及び５）が存在し、第２のウィンドウと第３のウィンドウとの間に、３個の重なり合うキーフレーム（すなわち、キーフレーム４、６及び７）が更に存在する。更に、上記実施例において分かるように、前処理モジュール１０６によって選択されたキーフレームは、連続的でなくてもよい。それどころか、１個以上のキーフレームが外されること、又は、無視されることがある。その上に、Ｋ（ウィンドウのサイズ）及びＭ（重なり合うキーフレームの個数）の値は、経時的に変化することがある。
【００２２】
前処理モジュール１０６は、各特徴追跡を現在ウィンドウ内のキーフレームの個数に等しい長さの２値ベクトル（たとえば、「真」及び「偽」の状態をそれぞれ表現する１及び０のベクトル）に関連付ける。２値ベクトルは、ウィンドウの中のどのキーフレームが追跡された画像特徴を含んでいるかを示す。たとえば、ウィンドウサイズが５であり、処理中の現在ウィンドウがキーフレーム（３，４，５，６，７）を格納している場合、１つの特徴追跡は、ウィンドウ内の全部で５個のキーフレームのうち３個のキーフレーム（５，６，７）の中の異なったロケーションで認識できることがある。特定の特徴追跡は、特徴がキーフレーム３及び４において観測されなかったことを示す２個の先行する０と、特徴がキーフレーム５、６及び７において観測されたことを示す３個の後続する１とを含む（０，０，１，１，１）などのサイズ５の２値ベクトルがこの特徴追跡に関連付けられるものである。２値ベクトルは、次に、擬似画像特徴（外れ値）の存在を示すために、その後の位置及び方向の計算中に使用されることがある。すなわち、このベクトル内の偽要素（すなわち、０）に関連付けられた特徴ロケーションは、無視されることがあるのに対し、真要素（すなわち、１）に関連付けられた特徴ロケーションは、更なる計算のため使用されることがある。たとえば、キーフレーム（３，４，５，６，７）のウィンドウ内のキーフレーム６上の特徴追跡の２Ｄロケーションが処理中のある時点で外れ値として判定された場合、キーフレーム６は、その後に、ベクトルが（０，０，１，０，１）に変化するように２値ベクトルの中で偽としてマークを付けられるものであり、キーフレーム６の中の特徴の観測は、さらなる処理中に無視されるものであるが、キーフレーム６に関する他の情報は、更なる処理においてそのまま使用されることがある。
【００２３】
前処理モジュール１０６は、キーフレームの連続的な各ペアの間及び各ペアの時点に捕捉された慣性読み取り値を格納している慣性読み取り値の配列を更に作成する。すなわち、モジュール１０６は、ＩＭＵ１０４から慣性読み取り値を受信し、各キーフレームが画像センサ１０２によって捕捉された時点又は時点付近に出現する読み取り値を識別する。モジュール１０６は、その後、各キーフレーム及びこれの後続フレームの時点の間に出現した読み取り値を全て識別する。それ故に、前処理モジュール１０６は、ウィンドウ内の先頭のキーフレームが捕捉された時点又は時点付近の読み取り値で始まり、ウィンドウ内の末尾のキーフレームが捕捉された時点又は時点付近の読み取り値で終わり、これらの終点の間に出現する慣性読み取り値全てを格納している慣性読み取り値の系列を発生させる。各慣性読み取り値は、６個の測定値（たとえば、浮動小数点数）を含み、前半の３個は、加速度計によって測定された直線加速度のＸ、Ｙ、及びＺ成分を指し示し、後半の３個は、ジャイロスコープによって測定された各速度のロール、ピッチ、及びヨー成分を指し示す。
【００２４】
前処理モジュール１０６は、先頭のキーフレームがＳＷＦによって処理された時点での機器の状態に対する慣性推定値も計算する。いくつかの実装では、初期状態推定値の計算は、以下のとおり進む。短い初期期間からの加速度計読み取り値は、平均化及び正規化され、機器のロール及びピッチ方向は、ベクトル（０，０，１）を１に正規化されたこの平均加速度計読み取り値にマッピングする回転に初期化されるが、ヨーは、任意の値に設定され得る。同じ短い初期期間からのジャイロスコープ読み取り値は、平均化され、その結果がジャイロスコープバイアスのための初期推定値として使用される。初期位置、速度、及び加速度計バイアスに零が設定される。バイアスは、経時的に変化することがある動き感知ユニットの測定値の誤差に対応する。
【００２５】
前処理モジュール１０６は、たとえば、伝搬アルゴリズムを使用して、第２の時点での機器の状態及び後続のキーフレームに対する第１の推定値も計算する。伝搬アルゴリズムは、第１の時点と第２の時点との間の慣性読み取り値の系列を第１の時点での機器の慣性状態と一緒に取り込み、第２の時点での機器の慣性状態の推定値を生成する。この初期推定値は、おおよそ正確さが不足しているが、機器の状態に対するより正確な推定値を計算するために後続の処理ステップによって使用される。
【００２６】
前処理モジュール１０６は、たとえば、三角測量アルゴリズムを使用して、機器に近接している物体の位置及び／又は方向の初期推定値も計算する。三角測量アルゴリズムは、単一の画像特徴が（特徴追跡内に設けられた）２個以上の異なったキーフレーム内で観測され、照合されるロケーションを、これらの２つのキーフレームの時点での機器の状態と一緒に取得し、画像特徴の３Ｄ位置の推定値を生成する。この初期推定値は、おおよそ正確さが不足しているが、３Ｄ位置に対するより正確な推定値を計算するために後続の処理ステップによって使用される。照合された画像特徴の推定３Ｄ位置は、機器のポーズに関して、又は他の参照フレームに関して表現される。更に、照合された画像特徴の各３Ｄ位置は、実世界における物体又は物体の位置であると考えられる。その結果として、初期推定値は、機器に近接している物体の位置及び／又は方向の推定値である。
【００２７】
前処理モジュール１０６によって識別されたウィンドウ毎に、モジュール１０６は、（特徴追跡と、特徴追跡に関連付けられた２値ベクトルと、機器に近接している物体の位置及び／又は方向を表現する異なったキーフレームに亘る各照合画像特徴の３Ｄ位置の初期推定値とを含む）特徴追跡情報と、（各ウィンドウ内のキーフレームに対する慣性読み取り値の系列と、各キーフレームが捕捉された時点での機器１００の状態の初期推定値とを含む）慣性データとをＳＷＦモジュール１０８に渡す。
【００２８】
ＳＷＦモジュール１０８は、電子ハードウェア、ソフトウェア、又は電子ハードウェアとソフトウェアとの両方の組み合わせということがあり得る。ＳＷＦモジュール１０８は、機器に近接している物体の位置及び／又は方向の推定値を様々な時点での機器１００の状態の推定値と共に決定するために一体として使用される数個のサブモジュールを含む。サブモジュールは、バンドル調整（ＢＡ）モジュール１１０と、スパース構造周辺化（ＳＳＭ）モジュール１１２と、遅延動き周辺化（ＤＭＭ）モジュール１１４とを含む。ＳＷＦモジュール１０８は、同時に１ウィンドウずつ前処理モジュール１０６から入力されたデータを処理する。ウィンドウ毎に、ＳＷＦモジュール１０８は、様々な時点での機器の状態の推定値を機器に近接している物体の位置及び／又は方向を表現している追跡された画像特徴の３Ｄ位置と共に保持する。これらの推定値は、「モデルパラメータ」として全体で知られている。たとえば、モデルパラメータは、機器１００に近接している物体の位置及び／又は方向を表現する変数と、ウィンドウ内の１個以上のキーフレームの時点での機器１００に対する状態（たとえば、位置、方向、速度、及び／又は慣性バイアス）の推定値を表現する変数とを含む。ＳＷＦモジュール１０８は、現在モデルパラメータに関して利用可能である情報を表現し、ウィンドウに関連付けられた情報行列Ｈも保持し、この情報は、モデルパラメータの中の係数を記述する。従って、Ｈは、機器に近接している物体の位置及び／又は方向の推定値を表現する変数の集合と、各キーフレームの時点（又は時点付近）での機器の状態の推定値を表現する別の変数の集合とに関連付けられている。情報行列Ｈは、いくつかのエントリが第１の変数（位置及び／又は方向推定値の信頼）の集合に関する情報を表現し、いくつかのエントリが第２の変数（機器状態の推定値の信頼度）の集合に関する情報を表現し、いくつかの他のエントリが第１の変数の集合と第２の変数の集合との間の共有信頼を表現する第１の変数の集合と第２の変数の集合との間の共有情報を表現している複数の異なったエントリを格納することがある。情報行列に関連した更なる詳細は、たとえば、全体が参照により本明細書に組み込まれる、Ｔｒｉｇｇｓ  ｅｔ．ａｌ，「Ｂｕｎｄｌｅ  Ａｄｊｕｓｔｍｅｎｔ−Ａ  Ｍｏｄｅｒｎ  Ｓｙｎｔｈｅｓｉｓ，」ｐｐ．１〜７１，Ｄｅｃｅｍｂｅｒ  ２０，２０１０に見られる。ＳＷＦモジュール１０８が最初に動作するとき、モジュール１０８は、１つ以上の初期キーフレームに対する機器状態の推定値を使って初期化される。
【００２９】
ＢＡモジュール１１０、ＳＳＭモジュール１１２、及びＤＭＭモジュール１１４は、１つずつの新しいウィンドウが受信されたとき、新しいモデルパラメータを更新するために併せて機能する。ＢＡモジュール１１０は、モデルパラメータを保持し、後処理モジュール１１６に出力する。ＳＳＭモジュール１１２及びＤＭＭモジュール１１４は、周辺化を行う。周辺化のプロセスは、情報行列Ｈに関連付けられた変数の個数を削減し、削減された変数に関する情報の集約が収められている新しい情報行列を生じさせる。Ｈの中のエントリのうちいくつかは、新しいより小規模の情報行列を生じさせるＨの中の他のエントリに集約される。ＳＷＦモジュールは、新しい情報行列の中のエントリ間に関連性を保持したままであること、すなわち、集約されていない変数間に関連性を保持することが指摘されるべきである。特に、変数及びＨの中のエントリの間の関連性は、集約されなかった新しい情報行列の中のエントリを再び関連付けることによって新しい情報行列の中に持ち込まれる。
【００３０】
周辺化の目的は、前のウィンドウの内部の情報を新しいウィンドウの内部の情報に転写すると共に、モデルパラメータの集合に関する情報をこれらのモデルパラメータの部分集合に関する情報に転写することである。ＳＷＦモジュール１０８が新しいウィンドウを受信したとき、モジュール１０８は、新しい特徴追跡と、新しいキーフレームに関連付けられた慣性読み取り値とにアクセスするだけでなく、特徴追跡と、より旧いキーフレームに関連付けられた慣性読み取り値とを外す。ＳＷＦモジュール１０８が特徴追跡又は慣性読み取り値を決して外さない場合、処理時間は、無制限に増大するであろう。逆に、ＳＷＦモジュール１０８が周辺化を行うことなく特徴追跡及び慣性読み取り値を外した場合、計算モデルパラメータ推定値は、過去の関連データを考慮することなく行われるという意味で準最適になるであろう。それ故に、最適化問題が解決されるモデルパラメータの総数を削減することにより、周辺化は、ＳＷＦモジュール１０８の計算負荷を軽減すると共に、情報を集約し、各ウィンドウと次のウィンドウとの間で転写することにより長時間に亘って一貫性のあるモデル推定値を維持する。
【００３１】
ＳＷＦモジュール１０８からモデルパラメータを受信する後処理モジュール１１６は、ユーザアプリケーションに依存してモデルパラメータの中に格納されている情報を利用する様々なアルゴリズム／プログラム、及び／又は、ハードウェアを含むことができる。たとえば、後処理モジュール１１６は、機器１００の経路履歴を判定し、機器メモリ内に経路履歴を記憶する、及び／又は、図１に表されるように、経路履歴をディスプレイに出力された地図に重ね合わせるために、ＳＷＦモジュール１０８によって出力されたモデルパラメータを使用するプログラムを含むことがある。すなわち、モデルパラメータの１つずつの新しい集合がＳＷＦモジュール１０８によって出力されるとき、後処理モジュール１１６は、３Ｄ特徴位置推定値及び各キーフレームの時点での機器１００に対する機器状態推定値を取り込み、これらの値を機器１００に対する過去の位置値及び方向値の収集物（たとえば、配列）に追加する。位置推定値は、その後、機器が移動した経路を示すために機器１００によって地図又は他のグリッドにプロットされることがある。
【００３２】
図３は、ＳＷＦモジュール１０８によって行われたモデルパラメータの推定値を計算するプロセス例３００を示すフローチャートである。プロセス３００は、図２の機器１００に関して説明される。前処理モジュール１０６から、特徴追跡情報と１つずつの新しいウィンドウに関連付けられた慣性読み取り値とを受信し次第（３０２）、ＳＷＦモジュール１０８は、このデータをＢＡモジュール１１０に供給する。ＢＡモジュール１１０は、現在受信された特徴追跡及び慣性読み取り値に基づいてモデルパラメータを更新するためにバンドル調整を行う（３０４）。調整を行うために、ＢＡモジュール１１０は、前に計算された情報行列Ｈｐｒｉｏｒに関係するデータも受信する。概して、前の情報行列Ｈｐｒｉｏｒは、現在ウィンドウより前に受信されたウィンドウに対してＤＭＭモジュール１１４によって計算される。代替的に、Ｈｐｒｉｏｒは、ＳＷＦモジュール１０８が前のウィンドウを少しも処理していないとき、視覚に基づく慣性ナビゲーション手順の初期化中に計算される。ＢＡモジュール１１０は、モデルパラメータに対する更新された推定値をモデルパラメータに関するＳＷＦモジュールの情報を表現する更新された情報行列Ｈと共に生じさせる。バンドル調整に関する更なる詳細は、たとえば、全体が参照により本明細書に組み込まれる、Ｔｒｉｇｇｓ  ｅｔ．ａｌ，「Ｂｕｎｄｌｅ  Ａｄｊｕｓｔｍｅｎｔ−Ａ  Ｍｏｄｅｒｎ  Ｓｙｎｔｈｅｓｉｓ，」に見られる。
【００３３】
モデルパラメータ及び情報行列Ｈを更新した後、ＢＡモジュール１１０は、モデルパラメータ及び情報行列ＨをＳＳＭモジュール１１２に渡し、このＳＳＭモジュールは、その後、続けてスパース構造周辺化を行う（３０６）。スパース構造周辺化の目的は、追跡特徴からの情報を現在ウィンドウの内部の各キーフレームの時点での機器の状態に関する情報に転写することである。すなわち、ＳＳＭモジュール１１２によって行われた周辺化プロセスは、現在ウィンドウ内の各キーフレームの時点での機器の状態に関する周辺情報を表現する複数の値を格納するより小さいサイズの修正情報行列を生成する。追跡特徴の情報の周辺化は、したがって、後のステップで情報行列を処理する計算負荷を軽減する。修正情報行列は、新しい行列である可能性があり、又は、同じ原情報行列Ｈとして保持される可能性があり、原情報行列Ｈの部分集合は、同じ行列Ｈの他の部分集合へ周辺化され、周辺化された部分集合は、後のステップで無視されるので、後のステップにおいて情報行列を処理する計算負荷を軽減するのと同じ結果を達成する。
【００３４】
ＳＳＭモジュール１１２は、周辺情報値を格納している修正行列をＤＭＭモジュール１１４へ出力する。ＤＭＭモジュールは、その後、修正行列について遅延動き周辺化（３０８）を行う。遅延動き周辺化の目的は、特定の個数のキーフレームを除いて機器状態に関連する情報を投影することであり、従って、情報行列のサイズと、機器１００に対して結果として生じる計算負荷とを更に削減する。代替的な実装では、ＤＭＭモジュール１１４は、修正情報行列自体ではなく、むしろ修正情報行列から取得された共分散行列に関して遅延動き周辺化を行う。本実装では、ＳＳＭモジュール１１２によって生成された修正情報行列の逆行列が最初に計算され、共分散行列を生じさせる。遅延動き周辺化が、その後、共分散行列について行われ、出力行列が反転される。
【００３５】
何れの場合も、ＤＭＭモジュール１１４からの出力行列は、前処理モジュール１０６によって識別された新しいウィンドウに関してＢＡモジュール１１０に戻され、次のバンドル調整手順において先行情報行列Ｈｐｒｉｏｒとして使用される。加えて、ＳＷＦモジュール１０８によって受信された、いくつかのウィンドウに対して、後処理モジュール１１６は、ＢＡモジュール１１０から更新された対応するモデルパラメータ及び／又はこれらのモデルパラメータに関係する情報行列を取り込む。たとえば、後処理モジュール１１６は、機器の更新された位置を取得するためにＢＡモジュール１１０から最新モデルパラメータを取り込むことがある。簡単にするために、ＢＡモジュールから最新モデルパラメータを取り込む後処理モジュール１１６のプロセスは、図３のブロック３１０に表されているように、情報を後処理モジュール１１６に出力するＢＡモジュールとして説明することも可能である。
【００３６】
以下は、ＢＡモジュール１１０、ＳＳＭモジュール１１２及びＤＭＭモジュール１１４によって行われる動作について更なる詳細を提供する。図４は、バンドル調整を行うプロセスを示すフローチャートである。上述のとおり、ＢＡモジュール１１０は、最初に、特徴追跡情報及び第１のウィンドウ内のキーフレームに対する慣性読み取り値を先行情報行列Ｈｐｒｉｏｒと共に受信する（４０２）。受信された特徴追跡情報、慣性読み取り値、及び先行情報行列Ｈｐｒｉｏｒを使用して、ＢＡモジュール１１０は、その後、モデルパラメータを更新し、モデルパラメータ（４０４）に関連付けられた現在情報行列Ｈを計算する（４０４）。
【００３７】
現在情報行列Ｈを計算する実施例が以下のとおり説明される。ｘｃｕｒｒｅｎｔが前処理モジュールによって初期化中に計算された、又は、バンドル調整の前回の反復から繰り越された現在モデルパラメータであるとする。第１のヤコビ行列ＪＶは、画像特徴に対して計算され、ｘｃｕｒｒｅｎｔを画像特徴に関連付ける。特に、ＪＶのエントリは、３Ｄ特徴位置から２Ｄ画像特徴への変換の１次微分として計算される。残差ベクトルｒｖも画像特徴に対して計算される。特に、ｒｖのエントリは、各画像特徴のロケーションと画像特徴毎に現在モデルパラメータによって予測されたロケーションとの間の差として計算される。第２のヤコビ行列ＪＩは、現在ウィンドウ内のキーフレームの各連続ペアの間で慣性読み取り値に対して計算される。第２のヤコビ行列は、慣性読み取り値に基づいてｘｃｕｒｒｅｎｔのモデルパラメータのいくつかを関連付ける。特に、ＪＩのエントリは、前述の伝搬関数の１次微分として計算される。残差ベクトルｒＩも慣性読み取り値に対して計算される。特に、ｒＩのエントリは、各キーフレームに対して伝播アルゴリズムによって出力された機器状態と各キーフレームに対して現在モデルパラメータによって予測された機器状態との間の差として計算される。先行推定値ｘｐｒｉｏｒ及び情報行列ｘｐｒｉｏｒは、前のウィンドウについて行われた（又はこれが第１のウィンドウである場合、初期化時に与えられた）遅延動き周辺化手順の結果として提供される。先行残差ｒｐｒｉｏｒが計算され、ここで、ｒｐｒｉｏｒは、各キーフレームの時点での機器状態に対する現在推定値と同じものに対する先行推定値との間の差を表現する。先行情報行列Ｈｐｒｉｏｒのコレスキー分解Ｌｐｒｉｏｒも計算される。
【００３８】
現在情報行列Ｈは、次に、以下のとおり表現されることがある。
【００３９】
【数１】
0006434513.tif 000002
【００４０】
式中、ＪＶＴは、画像特徴に対して計算された第１のヤコビ行列の転置であり、ＪＩＴは、慣性読み取り値に対して計算された第２のヤコビ行列の転置である。式中の第１項、第２項、及び第３項は、異なったサイズの行列に対応することがある。たとえば、以下に詳述される周辺化プロセスのため、先行情報行列Ｈｐｒｉｏｒは、第１のヤコビ行列及び第２のヤコビ行列より小さくなることがある。この場合、完全に零が投入されている行及び列は、１つの項の中の行及び列が他の各項の中の対応する行及び列と同じ変数に関連付けられることを確保するために、必要に応じて３つの項のうち１つ以上の項に追加される。
【００４１】
ＢＡモジュール１１０は、次に、ヤコビ行列、残差ベクトル、先行残差ｒｐｒｉｏｒ、及びコレスキー分解Ｌｐｒｉｏｒを使用して、新しいモデルパラメータｘｎｅｗを計算する（４０６）。新しいモデルパラメータを計算する実施例は、以下のとおりである。最初に、現在ウィンドウに対する新しいモデルパラメータの推定値が行列Ｈのコレスキー分解を使用して以下の連立一次方程式を解法することにより取得される：
【００４２】
【数２】
0006434513.tif 000003
【００４３】
式中、ｘｃｕｒｒｅｎｔは、現在ウィンドウに対する既存のモデルパラメータのことを指し、ｘｎｅｗは、現在ウィンドウに対する更新されたモデルパラメータのことを指し、
【００４４】
【数３】
0006434513.tif 000004
【００４５】
は、Ｌｐｒｉｏｒの行列転置のことを指し、δｘは、モデルパラメータへの更新を記憶するために使用される一時変数のことを指す。システムのいくつかの変形では、方程式（３）は、非ユークリッド更新演算で置換されることがある。非ユークリッド更新演算の一実施例は、四元数更新
【００４６】
【数４】
0006434513.tif 000005
【００４７】
であり、式中、δｑは、δｘに記憶された対応する誤差値に値１を付け加えることにより形成された四元数であり、
【００４８】
【数５】
0006434513.tif 000006
【００４９】
は、四元数乗算を表現する。非ユークリッド更新演算の別の実施例は、回転行列更新
【００５０】
【数６】
0006434513.tif 000007
【００５１】
であり、式中、Ｒｃｕｒｒｅｎｔは、Ｘｃｕｒｒｅｎｔに記憶された値から構成された回転行列であり、Ｒｎｅｗは、ｘｎｅｗに記憶された値から構成された回転行列であり、行われる演算は、行列乗算である。［δｘ  ×］は、δｘに対する非対称行列
【００５２】
【数７】
0006434513.tif 000008
【００５３】
を表現する。
非ユークリッド更新演算の第３の実施例は、Ｘｎｅｗ、Ｘｃｕｒｒｅｎｔ、及びδｘの内部の異なったサブベクトルに別々に適用される任意の個数のユークリッド更新演算及び非ユークリッド更新演算の何らかの組み合わせである。
【００５４】
現在ウィンドウに対する新しいモデルパラメータを計算した後、ＢＡモジュール１１０は、現在ウィンドウに対するモデルパラメータと現在特徴追跡及び慣性読み取り値との間の一致を測定するコスト関数を評価する。当該技術分野において知られている多種多様のコスト関数が利用されることがある。コスト関数の主たる要件は、モデルパラメータが現在特徴追跡及び慣性読み取り値との整合性に欠けるときにコスト関数がより大きい値を有し、モデルパラメータが現在特徴追跡及び慣性読み取り値と整合性が取れているときにより小さい値を有することである。たとえば、いくつかの実施では、コスト関数は、以下のとおり評価される。各画像特徴に対する「予測２Ｄロケーション」は、現在モデルパラメータによってキーフレームに関連付けられた位置及び方向を使用して、画像特徴に関連付けられた３Ｄ位置を特徴が観測されたこのキーフレームに投影することにより計算される。この投影は、画像センサによって観測されたとおりの特徴の「観測」ロケーションと比較され、以下では、この画像特徴に対する誤差と呼ばれる「予測」ロケーションと「観測」ロケーションとの間の平方ユークリッド距離が計算される。
【００５５】
次に、現在ウィンドウ内の各キーフレームに対する誤差が以下のとおり計算される。現在ウィンドウの第１のキーフレームが時点Ｔで捕捉され、ウィンドウ内の次の後続のキーフレームが時点Ｔ＋１で捕捉されたと仮定する。（現在モデルパラメータの内部に格納されているとおりの）キーフレームの時点Ｔでの機器の状態と、ＴとＴ＋１との間に捕捉された慣性読み取り値とがキーフレームの時点Ｔ＋１での機器の「予測」状態を計算するために使用される。キーフレームの時点Ｔ＋１での機器の予測状態と、現在モデル推定値の内部に記憶されたキーフレームの時点Ｔ＋１での機器の状態との間の重み付き平方差が計算され、この重み付き平方差は、以下では、キーフレームＴに対する二次誤差項と呼ばれることになる。
【００５６】
現在モデル推定値に関連付けられたコストは、次に、全ての画像特徴に対する二次誤差の総和に全てのキーフレームに対する二次誤差の総和を加えたものとして計算される。このコストは、モデルパラメータｘｎｅｗに対して一度、及び、モデルパラメータｘｃｕｒｒｅｎｔに対して一度評価される。モデルパラメータｘｎｅｗに関連付けられたコストがモデルパラメータｘｃｕｒｒｅｎｔに関連付けられたコストより低い場合、新しいモデルパラメータが現在モデルパラメータを置き換える。そうではない場合、新しいモデル推定値は、受け入れられない。
【００５７】
限定されることなく、以下を含むコスト関数の多数の変形が考えられ得る。たとえば、いくつかの実装では、ロバストコスト関数が画像特徴誤差若しくはキーフレーム誤差の一方又は両方に対する平方差の総和に代えて使用されることがある。ロバストコスト関数の実施例は：
Ｌ１ノルム：
ｆ（ｘ）＝２ｂ｜ｘ｜；
フーバー関数：
ｆ（ｘ）＝ｘ２｜ｘ｜＜ｂの場合
ｆ（ｘ）＝２ｂ｜ｘ｜−ｂ２それ以外の場合；
又はコーシー関数：
ｆ（ｘ）＝ｂ２  ｌｏｇ（１＋ｘ２／ｂ２）
である。
【００５８】
いくつかの実装では、ドメイン固有知識がコスト関数に挿入されることがある。たとえば、特定のアプリケーションでは、視覚に基づく慣性ナビゲーションを行う機器は、高度を一定に保っている水平面だけで動くこと、又は、機器の速度の変化は、機器自体の慣性特性によって制限されることが知られていることがある。このような制約は、ドメイン固有知識との整合性を欠くモデル推定値に対して大きな値を取り、ドメイン固有知識と整合性が取れているモデル推定値に対して小さい値を取るコスト項を使用することにより組み込まれ得る。
【００５９】
この時点で、ｘｎｅｗに対するコストとｘｃｕｒｒｅｎｔに対するコストとの間の絶対差が計算され、この差が閾値γ未満である、又は、バンドル調整プロセスの繰り返し回数が上限Ｎｍａｘを超える場合、バンドル調整プロセスが終了し、この場合、ｘｃｕｒｒｅｎｔに対する現在値は、最終的な位置推定値及び方向推定値としてＢＡモジュール１１０によって出力され、処理は、前述のスパース構造周辺化を続ける。すなわち、バンドル調整を特徴追跡及び慣性読み取り値の集合に適用した後、ＢＡモジュール１１０は、現在ウィンドウの内部の各フレームの時点での機器１００の状態の推定値及び観測画像特徴の３Ｄロケーションの推定値を格納する現在モデルパラメータを出力するＢＡモジュール１１０の出力は、モデルパラメータに関連付けられた現在情報行列Ｈの形で、信頼度（又は確信度）を表現する値をモデルパラメータの中に更に含む。そうではない場合、コストｘｎｅｗと、ｘｃｕｒｒｅｎｔに対するコストとの間の絶対差が閾値γより大きくなり、バンドル調整プロセスの繰り返しの回数が上限Ｎｍａｘ未満である場合、バンドル調整の更なる反復が行われ、ＳＷＦモジュール１１０は、バンドル調整プロセスの先頭から処理を再開し、ヤコビ行列の計算から始めて、前述のとおり続行する。
【００６０】
バンドル調整プロセスが終了し次第、現在情報行列Ｈは、ＳＳＭモジュール１１２に渡される。図５は、情報行列の実施例を示す概略図である。情報行列Ｈは、各キーフレームの時点での機器の状態に関する情報であるモデルパラメータに関する情報と、機器に近接している物体の３Ｄ位置及び／又は方向に関する情報とを格納する。図５の実施例に表されているように、情報行列Ｈは、異なったグループ分けＡ、Ｂ、Ｃ及びＤに配置されることがある。グループ分けＡは、機器状態推定値に対応する値を含む。グループ分けＤは、機器に近接している物体の位置及び／又は方向（たとえば、３Ｄ特徴位置）に関する推定値に対応する値を含む。グループ分けＢ及びＣは、Ａの中の機器状態推定値とＤの中の特徴位置との間の共有情報に対応する値を含む。情報行列Ｈは、対称性であるので、グループ分けＣは、Ｂの行列転置である。
【００６１】
ＳＳＭモジュール１１２は、情報行列Ｈの周辺化の第１の部分を行う。図６は、スパース構造周辺化を行うプロセス例６００を示すフローチャートである。最初に、ＳＳＭモジュールは、ＢＡモジュール１１０から現在ウィンドウに対する情報行列Ｈを受信する（６０２）。次に、ＳＳＭモジュールは、機器に近接している物体の位置及び／又は方向を表現する変数に関連付けられた情報行列Ｈの部分集合、すなわち、図５からのグループＢ、Ｃ、及びＤを周辺化する（６０４）。周辺化された変数に関する情報の集約は、その後、新しい行列Ａ’の中に維持される。一例として、Ｂ、Ｃ、及びＤを周辺化することは、以下のとおり表現され得るシュールの補題を使用して計算されることがある：
【００６２】
【数８】
0006434513.tif 000009
【００６３】
ここで、ＳＳＭモジュール１１２は、Ｈのスパース構造を利用する。特に、部分行列Ａは、ブロック三重対角であり、Ｄは、ブロック対角である。ＳＳＭモジュール１１２は、非零であるシュールの補題の項だけを考慮し、計算時間を著しく減少させる。それ故に、このプロセスからのＳＳＭモジュール１１２の出力は、各キーフレームの時点での機器状態に関する周辺情報を表現する新しい情報行列Ａ’である。Ａ’に格納されている値は、「周辺情報値」である。新しい行列Ａ’の実施例は、図７に表され、この行列の部分集合は、更に後述される。新しい行列Ａ’は、次に、遅延動き周辺化モジュール１１４に渡される（６０６）。
【００６４】
図８は、遅延動き周辺化を行うプロセス例８００を示すフローチャートである。ＤＭＭモジュール１１４は、ＳＳＭモジュール１１２から新しい情報行列Ａ’を受信し（８０２）、ＤＭＭモジュール１１４は、周辺化プロセスの第２の部分、すなわち、遅延動き周辺化を行う。周辺化プロセスの間に、ＤＭＭモジュール１１４は、１つを除く全てのキーフレームに対する機器状態推定値を表現する変数に関連付けられた情報を除去する。しかしながら、最初に、ＤＭＭモジュールは、ＳＷＦモジュール１０８によって処理される現在ウィンドウ及び新しいウィンドウに共通するキーフレームを選択する（８０４）。この演算を行うために、ＤＭＭモジュール１１４は、現在ウィンドウ内のフレームの中で次のウィンドウの中にも存在するフレームを知ることが必要である。この理由のため、共通キーフレームの選択は、次のウィンドウが到達するまで行われない。好ましくは、両方のウィンドウの中に存在する最先のフレームは、共通キーフレームとして選択される。しかしながら、両方のウィンドウの中に存在する他のフレームが共通キーフレームとして選択されることもある。いくつかの実装では、２つ以上の共通キーフレームが選択されることがあり、２つ以上のキーフレームがウィンドウ間で情報を転写するために使用されるものである。
【００６５】
一例として、現在ウィンドウがＷ１であり、到達する次のウィンドウがＷ２であると仮定する。Ｗ２からの情報（すなわち、特徴追跡及び慣性状態情報）がＳＷＦモジュール１０８に到達すると、ＤＭＭモジュール１１４は、フレーム識別子（たとえば、整数）のリストを使用してＷ１内のフレームをＷ２内のフレームに関連付ける。Ｗ１及びＷ２の両方に存在する最先のフレームは、フレーム識別子Ｆ０で指定されることにする。特に、Ｗ１がフレーム（３，４，５，６，７）を格納し、Ｗ２がフレーム（５，６，７，８，９）を格納することにする。この場合、フレーム５が両方のウィンドウの中に存在する最先のフレームであるため、Ｆ０＝フレーム５である。
【００６６】
共通キーフレームが選択されると、ＤＭＭモジュール１１４は、選択された共通キーフレームでの機器の状態を表現する変数に関連付けられた情報行列Ａ’の部分集合を除いて、機器の状態を表現する変数に関連付けられたＡ’の部分集合を周辺化する（８０６）。図７は、行列Ａ’の配置を説明する例示図である。同図に描かれているように、行列Ａ’は、各キーフレームの時点での機器状態を表現する変数に関連付けられた周辺情報値をキーフレームの各ペアの時点での機器状態を表現する変数間の共有情報項と共に含む。行列Ａ’は、４つの部分行列：Ｗ１及びＷ２の両方に共通である選択されたフレームＦ０に関連付けられた行及び列に対応するブロックＫと、選択されたフレームを含まないフレームに関する情報をこれらのフレーム間の共有情報項と共に格納するブロックＧ１１、Ｇ１２、Ｇ２１、Ｇ２２と、選択されたフレームＦ０と選択されたフレームＦ０以外のフレームとの間の共有情報項を格納するブロックＦ１、Ｆ２、Ｅ１、Ｅ２とに分割されることがある。
【００６７】
遅延動き周辺化の目標は、ブロックＦ１、Ｆ２、Ｅ１、Ｅ２及びＧ１１、Ｇ１２、Ｇ２１、Ｇ２２を周辺化し、この情報をＫのサイズに等しいサイズをもつ新しい行列に集約することである。新しい行列Ｋ’は、シュールの補題を計算することにより決定されることがあり、以下のとおり表現することができる：
【００６８】
【数９】
0006434513.tif 000010
【００６９】
このとき、
【００７０】
【数１０】
0006434513.tif 000011
【００７１】
である。
ＤＭＭモジュール１１４は、次に、整合性を保ち、過剰な信頼の状況を回避するために、定数でＫ’の中の値を除算することによりＫ’をスケーリングする（８０８）。たとえば、いくつかの実装では、定数は、ウィンドウサイズ（たとえば、ウィンドウ内の測定値の個数又はウィンドウが関連付けられる期間）に等しい。Ｋ’の内部の値は、共通フレーム周辺情報値と呼ばれる。結果として生じるＫ’は、Ｈｐｒｉｏｒと呼ばれることもある。Ｈｐｒｉｏｒは、続いて、次のウィンドウのためＢＡモジュール１１０によって先行情報行列として使用される。それ故に、バンドル調整プロセス、スパース構造周辺化プロセス、及び遅延動き周辺化プロセスの間にＳＷＦモジュール１０８によって発生させられた情報行列は、今度は、先行情報行列としてフィルタの次の反復においてフィルタへの入力として使用され、それによって、フィルタの反復の間とウィンドウの間で情報の転写を実現し易くする。フィルタは、今度は、後処理モジュール１１６に出力され得る、又は、後処理モジュール１１６によって取得され得る機器の状態に対する更新された推定値を格納する。
【００７２】
いくつかの実装では、修正行列Ａ’の遅延動き周辺化は、以下のとおり代替的に行われることがあり、最初に、ＤＭＭモジュール１１４は、以下のように表現できるＡ’の逆行列を取得する：
【００７３】
【数１１】
0006434513.tif 000012
【００７４】
次に、行列Σは、図７に表されるようにサブブロックに分割され、サブブロックＫが抽出され、行列Ｋ’は、以下に従って計算される。
【００７５】
【数１２】
0006434513.tif 000013
【００７６】
行列Ｋ’は、次に、ＳＷＦの整合性を保つために、定数による除算を含み、前述のとおり処理される。
【００７７】
行列Ｋ’は、原情報行列Ｈより実質的に小さい次元からなる。一例として、情報行列Ｈが初期に１０００×１０００のサイズを有する場合、ＳＳＭモジュール１１２を使用してスパース構造周辺化を行うことは、行列を１５０×１５０のサイズまで縮小することがある。遅延動き周辺化を適用した後、行列は、１５×１５のサイズまで更に縮小され得る。
【００７８】
アプリケーション
本明細書に記載されたスライディングウィンドウ逆フィルタ（ＳＷＦ）モジュール（たとえば、ＳＷＦモジュール１０８）は、様々な視覚に基づく慣性ナビゲーションアプリケーションの一部分として使用されることがある。たとえば、いくつかの実装では、ＳＷＦモジュールは、視覚ディスプレイを有するモバイル電子コンピューティング機器に組み込まれる。ＳＷＦモジュールによって決定された位置及び方向推定値は、電子コンピューティング機器のユーザに機器の現在位置及び過去位置に関する情報を提供するために（たとえば、後処理の前後に）地図上の点としてディスプレイへ出力され得る。いくつかの事例では、ＳＷＦモジュールは、移動中の電子コンピューティング機器の一部分であるように構成されている。他の実装では、ＳＷＦモジュールは、電子コンピューティング機器とは別個であり、たとえば、ＳＷＦモジュールは、サーバ上で動作していることがあるが、ＩＭＵ及び画像センサは、電子コンピューティング機器の中にある。電子コンピューティング機器からの特徴追跡及び慣性データは、その後、サーバ上のＳＷＦモジュールに送信されることがあり、ＳＷＦモジュールは、その後、位置推定値及び方向推定値を計算する。サーバは、電子コンピューティング機器の位置及び方向情報でウェブサイトをリアルタイムで更新するインターネットサーバでもよい。この情報は、画像化されている環境の奥行き情報などの付加情報と組み合わされて更に使用され、通行された場所の３Ｄ地図を生成することが可能である。
【００７９】
いくつかの実装では、位置及び方向推定値は、ある点で画像センサによって画像化された物体を追跡するために使用され得る。たとえば、前処理モジュール１０６は、画像センサによって捕捉された画像内で１つ以上の物体（たとえば、鍵、財布など）を識別し、その後、物体が画像センサの視野内にもはや存在しないときに物体の最後の既知位置を保持するために、ＳＷＦモジュールからの位置及び方向データを使用することがある。物体があった場所、又は、物体が識別されたロケーションへ戻る方法についてユーザが分からない場合、電子コンピューティング機器は、物体の最後の既知位置及び／又はユーザが物体まで戻るために辿ることができる経路を（たとえば、ディスプレイに）出力することがある。
【００８０】
いくつかの実装では、建物（たとえば、倉庫、ショッピングモール、又は住宅）の内部／外部は、建物の地図を記録するために、本開示による視覚に基づく慣性ナビゲーションを有する電子コンピューティング機器を使用して通行される。電子コンピューティング機器は、ＳＷＦモジュールによって提供された位置及び方向情報を記憶することがあり、その間に、たとえば、数ある中でもＷｉＦｉ（登録商標）信号、ＢｌｕｅＴｏｏｔｈ（登録商標）信号、ビーコンによって発生された信号、近距離無線通信（ＮＦＣ）などの発生源からの付加情報も収集する。電子コンピューティング機器の正確なロケーション及び方向は、その後、構造物内の様々なロケーションにおける信号の地図を作成するために使用されることがある。
【００８１】
いくつかの実装では、区域（たとえば、住宅、裏庭、建物内部）は、画像センサと、機器自体の慣性測定ユニットとの他に付加的なセンサを必要とすることなく、この区域の３次元（３Ｄ）地図を作成するために本開示による視覚に基づく慣性ナビゲーションシステムを有する電子コンピューティング機器を使用して通行されることがある。これは、ＳＷＦモジュールによって発生させられた情報が機器及び機器の外部環境に関する３Ｄ情報を含むことがあるためである。いくつかの事例では、視覚に基づく慣性ナビゲーションシステムを使用して生成された３Ｄ地図作成の正確さは、電子コンピューティング機器に組み込まれた、奥行きセンサなどの付加的なセンサから到来する情報を使用して改善されることがある。
【００８２】
いくつかの実装では、ＳＷＦモジュールは、ユーザを物体に向けるために使用され得る。図１０は、グラフィカル矢印１０１０が写真に重ね合わされ、店舗内の品目の位置を指し示す店舗の区域の画像を表している、電子コンピューティング機器によって出力された表示の実施例である。本明細書に開示されたとおりの視覚に基づく慣性ナビゲーションシステムは、この品目に対する電子コンピューティング機器の位置及び方向を計算するために使用される可能性があり、品目のロケーションは、予め既知であり、機器のロケーション及び方向は、ＳＷＦモジュールを使って計算される。この矢印は、ユーザを取り上げられるべき品目の方へ案内する。
【００８３】
いくつかの実装では、ＳＷＦモジュールは、ユーザが自分の動きを追跡できるように電子コンピューティング機器の正確な位置及び方向を提供する。図１１は、仮想経路１１１０が画像の上に重ね合わされた、視覚に基づく慣性ナビゲーションシステムを含む電子コンピューティング機器のディスプレイによって出力された画像の実施例を示す。仮想経路は、電子コンピューティング機器を保持、携行又は着用しているユーザが辿るためのガイドとして視覚に基づく慣性ナビゲーションシステムによって計算される。
【００８４】
ハードウェア及びソフトウェア
図９は、本明細書に記載された技術と共に使用されることがある電子コンピューティング機器５５０の実施例を表す。たとえば、図２を参照すると、モバイル電子コンピューティング機器１００は、機器５５０の実施例になり得る。電子コンピューティング機器５５０は、個人情報端末、携帯電話機、スマートフォン、スマートメガネ、及び他の類似するコンピューティング機器などの電子コンピューティング機器の様々な形式を表現することが意図されている。ここに表されたコンポーネントと、これらの接続及び関係と、これらの機能とは、単に実施例であることが意図され、本文書に記載された技術及び／又は特許請求の範囲を限定することは意図されていない。
【００８５】
電子コンピューティング機器５５０は、数あるコンポーネントの中で、プロセッサ５５２と、メモリ５６４と、ディスプレイ５５４、通信インタフェース５６６及びトランシーバ５６８などの入力／出力機器とを含む。機器５５０は、付加的なストレージを設けるために、マイクロドライブ又は他の機器などの記憶機器が更に設けられることがある。コンポーネント５５０、５５２、５６４、５５４、５６６及び５６８の１つずつは、様々なバスを使用して相互接続され、コンポーネントのうちいくつかは、共通マザーボードに、又は、必要に応じて他の方法で搭載されることがある。
【００８６】
プロセッサ５５２は、コンピューティング機器５５０の内部で、メモリ５６４に記憶された命令を含む命令を実行できる。プロセッサは、別個及び複数のアナログプロセッサとデジタルプロセッサとを含むチップのチップセットとして実装されることがある。プロセッサは、たとえば、ユーザインタフェースの制御、機器５５０によって動かされるアプリケーション、及び機器５５０による無線通信などの機器５５０の他のコンポーネントの調整を行うことがある。
【００８７】
プロセッサ５５２は、制御インタフェース５５８と、ディスプレイ５５４に連結されたディスプレイ・インタフェース５５６とを介してユーザと通信することがある。ディスプレイ５５４は、たとえば、ＴＦＴ  ＬＣＤ（薄膜トランジスタ液晶ディスプレイ）若しくはＯＬＥＤ（有機発光ダイオード）ディスプレイ、又は、他の適切なディスプレイ技術でもよい。ディスプレイ・インタフェース５５６は、グラフィカル情報及び他の情報をユーザに提示するためにディスプレイ５５４を駆動する適切な回路を備えることがある。制御インタフェース５５８は、ユーザからコマンドを受信し、プロセッサ５５２への提供のためこれらのコマンドを変換することがある。加えて、外部インタフェース５６２が、他の機器との機器５５０の近距離通信を可能にするようにプロセッサ５５２と連通して設けられることがある。外部インタフェース５６２は、たとえば、いくつかの実装では、有線通信のため、他の実装では、無線通信のため設けられることがあり、複数のインタフェースも設けられることがある。
【００８８】
メモリ５６４は、コンピュータ機器５５０の内部に情報を記憶する。メモリ５６４は、コンピュータ読み取り可能な媒体若しくは媒体群、揮発性メモリユニット若しくはユニット群、又は、不揮発性メモリユニット若しくはユニット群のうち１つ以上として実装される可能性がある。増設メモリ５７４が設けられ、たとえば、ＳＩＭＭ（シングル・インライン・メモリ・モジュール）カードインタフェースを含むことがある拡張インタフェース５７２を介して機器５５０に接続されることがある。このような増設メモリ５７４は、機器５５０のための追加記憶空間をもたらすことがあり、又は、機器５５０のためのアプリケーション又は他の情報を記憶することもある。具体的には、増設メモリ５７４は、前述のプロセスを実行するために、又は、補うために命令を含むことがあり、機密情報も含むことがある。それ故に、たとえば、増設メモリ５７４は、機器５５０のためのセキュリティモジュールとして設けられることがあり、機器５５０の安全な使用を可能にする命令を用いてプログラムされることがある。
【００８９】
メモリは、たとえば、後述されるように、フラッシュメモリ、及び／又は、ＮＶＲＡＭメモリを含むことがある。一実装では、コンピュータプログラム製品は、情報担体において有形的に具現化される。コンピュータプログラム製品は、実行されたときに、前述された方法などの１つ以上の方法を行う命令を格納する。情報担体は、メモリ５６４、増設メモリ５７４、又はプロセッサ５５２上のメモリなどのコンピュータ又は機械読み取り可能な媒体である。
【００９０】
機器５５０は、必要に応じてデジタル信号処理回路を含む通信インタフェース５６６を介して無線通信することがある。通信インタフェース５６６は、数ある中で、ＧＳＭ（登録商標）音声電話、ＳＭＳ、ＥＭＳ若しくはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、又はＧＰＲＳなどの様々なモード又はプロトコルの下で通信を行うことがある。このような通信は、たとえば、無線周波数トランシーバ５６８を介して行われることがある。加えて、Ｂｌｕｅｔｏｏｔｈ、ＷｉＦｉ又は他の同様のトランシーバ（図示せず）などを使用して、近距離通信が行われることがある。加えて、ＧＰＳ（全地球測位システム）レシーバモジュール５７０は、機器５５０上で動くアプリケーションによって必要に応じて使用されることがある付加的なナビゲーション及びロケーション関連無線データを機器５５０に供給することがある。
【００９１】
機器５５０は、ユーザから発話情報を受信し、これを使用可能なデジタル情報に変換することがあるオーディオコーデック５６０を使用して可聴的に更に通信することがある。オーディオコーデック５６０は、同様に、たとえば、機器５５０の送受話器内のスピーカなどを介して、ユーザのため可聴音を発生させることがある。このような音は、音声電話通話からの音を含むことがあり、記録された音（たとえば、音声メッセージ、音楽ファイルなど）を含むことがあり、機器５５０上で動作するアプリケーションによって発生させられた音を含むこともある。
【００９２】
コンピューティング機器５５０は、図に表されるように、複数の異なった形式で実装されることがある。たとえば、コンピューティング機器は、携帯電話機５８０として実装されることがある。コンピューティング機器は、スマートフォン５８２、個人情報端末、タブレットコンピュータ、スマートメガネ、スマートウォッチ、又は、他の類似するモバイル機器の一部分として実装されることがある。
【００９３】
本明細書に記載されたシステム及び技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、及び／又は、これらの組み合わせで実現され得る。これらの様々な実装は、専用又は汎用でもよく、記憶システム、少なくとも１台の入力機器、及び少なくとも１台の出力機器からデータ及び命令を受信するように、データ及び命令を記憶システム、少なくとも１台の入力機器、及び少なくとも１台の出力機器に送信するように連結されることがある少なくとも１台のプログラマブルプロセッサを含むプログラマブルシステム上で実行可能及び／又は解釈可能である１つ以上のコンピュータプログラム内の実装を含み得る。
【００９４】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション又はコードとしても知られている）は、プログラマブルプロセッサのための機械命令を含み、高水準手続及び／又はオブジェクト指向プログラミング言語、及び／又は、アセンブリ機械言語で実装され得る。本明細書において使用されるように、用語「機械読み取り可能な媒体」、「コンピュータ読み取り可能な媒体」は、機械命令を受信する機械読み取り可能な媒体をはじめとして、機械命令及び／又はデータをプログラマブルプロセッサに供給するために使用される何らかのコンピュータプログラム製品、装置及び／又は機器（たとえば、磁気ディスク、光ディスク、メモリ、プログラマブル・ロジック・デバイス（ＰＬＤ））のことを指す。
【００９５】
ユーザとの相互作用を行うために、本明細書に記載されたシステム及び技術は、情報をユーザに表示するディスプレイ（たとえば、液晶ディスプレイモニタ）を有する機器で実施され得る。ディスプレイは、ユーザから情報を受信するために使用されることもある（たとえば、タッチスクリーン）。機器は、キーボード及び／又はポインティング機器（たとえば、マウス又はトラックボール）などの他の入力機器を有することがあり、ユーザは、これを用いて入力をコンピュータに供給できる。他の種類の装置は、同様にユーザとの相互作用を行うために使用できる。たとえば、ユーザに提供されたフィードバックは、どのような形式の感覚フィードバック（たとえば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック）にもなり得る。ユーザからの入力は、音響、音声、又は触覚入力を含むどんな形式でも受信され得る。
【００９６】
複数の実装が説明されている。それにもかかわらず、発明の趣旨及び範囲から逸脱することなく、様々な変更がなされてもよいことが分かるであろう。他の実装は、請求項の範囲内である。
【図１】
0006434513.tif 000014
【図２】
0006434513.tif 000015
【図３】
0006434513.tif 000016
【図４】
0006434513.tif 000017
【図５】
0006434513.tif 000018
【図６】
0006434513.tif 000019
【図７】
0006434513.tif 000020
【図８】
0006434513.tif 000021
【図９】
0006434513.tif 000022
【図１０】
0006434513.tif 000023
【図１１】
0006434513.tif 000024