(58)【調査した分野】(Int.Cl.,DB名)
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項7に記載の電子コンピューティングシステム。
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項16に記載のコンピュータで実行される方法。
1つ以上の電子コンピューティング機器に動作を行わせるコンピュータプログラム命令が符号化されている非一時的なコンピュータ記憶媒体であって、前記コンピュータプログラム命令は、前記1つ以上の電子コンピューティング機器によって実行されたとき、前記1つ以上の電子コンピューティング機器に、
前処理モジュールから、機器に対する画像データ及び慣性データを含むセンサ測定値を受信することと、
プロセッサを使用して、第1の時間のウィンドウ及び第2の時間のウィンドウが時間的に連続的に重なり合う、前記第1の時間のウィンドウに関連付けられた第1の変数の集合から、前記第2の時間のウィンドウに関連付けられた第2の変数の集合に、前記センサ測定値から得られた情報を転写することと、前記転写された情報に基づいて前記機器の状態を後処理モジュールへ出力することと、を含む動作を実行させ、
前記第1の時間のウィンドウ及び前記第2の時間のウィンドウの各ウィンドウは、対応する第1の情報行列に関連付けられ、各第1の情報行列は、前記機器に近接している少なくとも1つの物体の位置及び/又は方向を表現する複数の第1の変数と、2つ以上の時点で前記機器の状態を表現する複数の第2の変数とのため用いられ、
前記情報を転写することは、
前記複数の第2の変数との関連性を保持したままである第2の情報行列を取得するために、前記1の時間のウィンドウの前記第1の情報行列に関連付けられた前記第1の変数の少なくとも部分集合を周辺化することと、
第3の情報行列を取得するために、前記第2の情報行列に関連付けられた前記第2の変数の部分集合を周辺化することと、
第4の情報行列を取得するために、前記第3の情報行列をスケーリングすることと、
を含み、
前記第4の情報行列は、前記第1の時間のウィンドウ及び前記第2の時間のウィンドウが重なり合う時点での前記機器の前記状態と前記機器に近接している前記物体の前記位置及び/又は方向に関する前記情報の集約表現である、
非一時的なコンピュータ記憶媒体。
前記共有情報は、前記機器に近接している物体の位置又は方向の推定値と前記機器の前記状態の前記推定値との間の共有信頼度を表現している、請求項25に記載の媒体。
【発明を実施するための形態】
【0015】
視覚に基づく慣性ナビゲーションシステムに関して、ある時点での機器の位置及び方向に関する情報、若しくは、観測された画像特徴の3D位置は、現在捕捉された画像の内部の特徴が1つ以上の前の画像において見つけられる可能性があるので、前の時点での機器の位置及び方向に関する情報と高く相関する傾向がある。決定論的若しくは確率論的な測定制約の形式で数学的に表現されたこのような相関は、視覚に基づく慣性ナビゲーションシステムの内部で機器の位置及び方向の推定値の正確さを高めるために使用され得る。しかしながら、これらの測定値を処理することは、特に、計算能力を制限されていることがある(ウェアラブルコンピューティング機器などの)機器にとって、計算的に手間がかかる可能性がある。加えて、このような機器は、非線形性の影響を受ける低性能カメラ/検出器及びIMUを利用することがあり、非常に正確な推定値が生成され得るためにより一層過去のデータが同時に保持及び処理される必要性を高める。画像及び慣性読み取り値の個数が増加するのにつれて、計算が解決困難になる可能性がある。
【0016】
本明細書において開示された技術は、システムが長期間に亘って発生させられた全ての制約を同時に処理することを必要とすることなく、様々な時点での機器の慣性状態と視覚に基づく慣性ナビゲーションシステムにおいて観測された機器に近接している物体の位置及び/又は方向との間の制約に関する情報を保持する方法を対象にする。更に、制約が処理される過去の変数の個数を削減しても、本技術は、過剰な信頼度を回避しながら現時点での機器の慣性状態に対する非常に正確な推定値の計算(およそセンチメートルの位置誤差)を可能にする。
【0017】
制約が最適化される過去の変数の個数を最小限に抑えるために、スライディングウィンドウ逆フィルタ(SWF)が使用され、このSWFは、画像が電子コンピューティング機器(たとえば、スマートフォン、電子タブレット機器、若しくはスマートメガネ)上で動作する視覚に基づく慣性ナビゲーションシステムによって捕捉されるとき、重なり合う画像のウィンドウからの情報を処理する。画像の中で追跡され、同様に機器上で動作するIMUから取得された情報に対応する特徴を使用して、SWFは、単に機器の「状態」と呼ばれることがある機器の慣性状態(たとえば、位置、方向、速度、及び/又はジャイロ及び加速度計バイアス)に対する推定値を取得する。SWFは、機器に近接している物体の位置及び/又は方向に対する推定値も取得し、これらの物体は、一実施例では、画像間で追跡されている特徴の3D位置として表現される。機器慣性状態に対する推定値と、物体位置及び/又は方向に対する推定値とは、画像のウィンドウの中の各画像に対して計算される。画像のウィンドウ毎に、SWFは、次に、これらの推定値を単一の時点Tにおける機器の状態に関する推定値に変換することによってこれらの推定値を集約する。1対のウィンドウのペアに対して、第1のウィンドウから集約された情報は、次に、ウィンドウのペアが少なくとも1つの同じ時点Tにおいて重なり合うという条件で、第2のウィンドウへ前進させられ得る。第1のウィンドウから集約された情報は、次に、他の時点での機器の状態を推定するため第2のウィンドウ上の後続の処理ステップで使用され得る。情報を集約し、重なり合うウィンドウのペアの間で転写するプロセスは、その結果、制約が最適化される過去の変数の個数を最小限に抑えたまま機器の慣性状態と様々な時点での機器に近接している物体の位置及び/又は方向との間の制約に関する情報を保持する。
【0018】
図1は、本開示に従って構成された視覚に基づく慣性ナビゲーションシステムを有する電子コンピューティング機器によって計算された経路10が重ね合わされた間取図を示す概略図である。間取図は、様々な区画(たとえば、配管区画、工具及び金物類区画など)を含む一般的な金物店の概観であり、網掛け領域は、棚を表現し、白色領域は、顧客が移動できる通路及び店舗のその他の区域を表現する。機器は、人が店舗内を移動するときに画像を記録するポータブル電子コンピューティング機器(たとえば、カメラ付き携帯電話機、スマートフォン、スマートメガネ、ヘッド・マウント・ディスプレイ、又は監視機器)でもよい。ポータブル電子コンピューティング機器は、機器の直線加速度及び角速度などの慣性データを記録するコンポーネント(たとえば、加速度計(群)及びジャイロスコープ(群))を有するIMUを更に含む。画像及び慣性データの記録中に、視覚に基づく慣性ナビゲーションシステムは、出発点に対するコンピューティング機器の状態の推定値を計算及び記憶し、一般に「自律航法」と呼ばれるプロセスである。位置は、機器のメモリに記憶された、及び/又は、
図1に表されるように、ユーザが見るためにディスプレイに出力され得る間取図の画像に重ね合わされた経路10を計算するために使用されることがある。
【0019】
図2は、
図1の経路10を生成するために使用されることがある電子コンピューティング機器などの視覚に基づく慣性ナビゲーション機器100の実施例を示す概略図である。機器100は、視覚に基づく慣性ナビゲーションシステムを作り上げる複数のコンポーネントを含む。たとえば、機器100は、光学像を電子信号に変換するデジタルカメラなどの画像センサ102を含む。センサ102は、デジタル電荷結合素子(CCD)、相補型金属酸化膜半導体(CMOS)ピクセルセンサ、若しくは赤外線センサなどの何らかの適切な画像感知コンポーネントを利用することがある。代替的に、画像センサ102は、奥行きセンサ、ステレオカメラ対、フラッシュ・ライダー・センサ、レーザーセンサ、又はこれらの何らかの組み合わせを含むことがある。画像センサ102は、ハードウェアで完全に形成されることがあり、又は、検出画像を修正するソフトウェアを組み込むように構成されることもある。機器100は、慣性測定ユニット104を更に含む。IMU104は、機器100の慣性データを記録するため3軸ジャイロスコープ及び加速度計といった数個の電子ハードウェアコンポーネントを含むことがある。たとえば、IMU104は、機器の6自由度(機器の加速度のX、Y及びZ直交座標と、機器の角速度のロール、ピッチ、及びヨー成分)を測定し、この機器の6自由度について報告することがある。IMU104は、同様に、他の慣性データを出力することもある。様々なIMUが市販され、又は、ポータブル電子コンピューティング機器に予めインストールされる。
【0020】
機器100は、画像センサ102から検出された画像と、IMU104によって記録された慣性データとを受信する前処理モジュール106を更に含む。画像センサ102によって記録され、モジュール106によって処理された画像は、「フレーム」と呼ばれることもある。前処理モジュール106は、電子ハードウェア、ソフトウェア、又は電子ハードウェアとソフトウェアとの両方の組み合わせであり得る。とりわけ、前処理モジュール106は、記録されたフレームの内部で特徴追跡を行い、慣性データをフレーム自体に関連付ける。画像特徴は、フレーム内の物体の、又は、物体の一部の特定のロケーション/ピクセル又はピクセルのグループを表現する画像座標(たとえば、x−y座標)に対応する。前処理モジュール106は、特徴追跡が画像センサ102によって取得された2つ以上のフレームに亘って追跡された単一の特徴のロケーションを表現する2次元点の系列である「特徴追跡」を計算する。前処理モジュール106は、第1のフレーム内の1つ以上の画像特徴を識別し、次に、これらの1つ以上の画像特徴を連続フレーム内の1つ以上の対応する画像特徴と照合することにより特徴追跡を発生させる。当該技術分野において知られている様々な技術が特徴追跡を取得するために使用されることがある。たとえば、画像特徴の識別は、ピクセル毎に(Harrisコーナー検出器又はラプラシアン演算子で使用されるスコアリング関数などの)スコアリング関数を評価し、次に、これらのピクセルの近傍ピクセルのどれよりも大きいスコアを有するピクセルを画像特徴として指定することにより行われることがある。画像特徴は、その後、第1のフレーム内で画像特徴を中心としたピクセルの矩形配列(又はこれらのの関数)を異なったフレーム内の画像特徴に中心が置かれたピクセルの矩形配列(又はこれらの関数)と比較することによりフレームの間で照合され得る。連続的なフレームのペアに関して画像特徴を照合することにより、前処理モジュール106は、各特徴追跡がフレーム全域での画像特徴ロケーションの系列を格納している特徴追跡のリストを構築する。モジュール106によって識別された特徴追跡の個数は、変化することがあり、いくつかの実装では、視覚に基づく慣性ナビゲーションシステムが使用されているエンドユーザ・アプリケーションに依存することがあり得る。
【0021】
前処理モジュール106は、画像センサ102から受信されたフレームの部分集合を「キーフレーム」として選択するように更に構成されている。キーフレームは、前処理モジュールによってキーフレームとして選択された何らかのフレームである。たとえば、画像センサ102から受信された10個のフレームの系列に対して、前処理モジュール102は、先頭及び末尾のフレームをキーフレームとして指定することがある。フレームは、所望キーフレーム周波数、又は、現在フレーム内で識別された、又は、フレームのペアの中で照合された画像特徴の個数に関連している統計値のような1つ以上のパラメータに基づいてモジュール106によってキーフレームとして指定されることがある。キーフレームを選択する他の決定規則も使用されることがある。前処理モジュール106は、更に、Kが既定のパラメータである、キーフレームの系列をK個の連続的なキーフレームのグループにまとめる。キーフレームの各グループ(すなわち、画像の集合)は、ウィンドウと呼ばれることがある。画像が画像センサ102から受信されるとき、モジュール106は、キーフレームを重なり合うウィンドウのグループにまとめることがあり、入来する各ウィンドウは、少なくとも1個のキーフレームによって、かつ、M個の以下のフレームによって前のウィンドウに重なる。Mは、1とKとの間の値を取り得るパラメータである。たとえば、Kが5に等しく、Mが3に等しいと仮定すると、モジュール106によって作成された第1のウィンドウは、キーフレーム(1,2,3,4,5)を含むことがあり、これに対し、第2のウィンドウは、キーフレーム(3,4,5,6,7)を含むことがあり、第3のウィンドウは、キーフレーム(4,6,7,8,9)を含むことがある。それ故に、第1のウィンドウと第2のウィンドウとの間に、3個の重なり合うキーフレーム(すなわち、キーフレーム3、4及び5)が存在し、第2のウィンドウと第3のウィンドウとの間に、3個の重なり合うキーフレーム(すなわち、キーフレーム4、6及び7)が更に存在する。更に、上記実施例において分かるように、前処理モジュール106によって選択されたキーフレームは、連続的でなくてもよい。それどころか、1個以上のキーフレームが外されること、又は、無視されることがある。その上に、K(ウィンドウのサイズ)及びM(重なり合うキーフレームの個数)の値は、経時的に変化することがある。
【0022】
前処理モジュール106は、各特徴追跡を現在ウィンドウ内のキーフレームの個数に等しい長さの2値ベクトル(たとえば、「真」及び「偽」の状態をそれぞれ表現する1及び0のベクトル)に関連付ける。2値ベクトルは、ウィンドウの中のどのキーフレームが追跡された画像特徴を含んでいるかを示す。たとえば、ウィンドウサイズが5であり、処理中の現在ウィンドウがキーフレーム(3,4,5,6,7)を格納している場合、1つの特徴追跡は、ウィンドウ内の全部で5個のキーフレームのうち3個のキーフレーム(5,6,7)の中の異なったロケーションで認識できることがある。特定の特徴追跡は、特徴がキーフレーム3及び4において観測されなかったことを示す2個の先行する0と、特徴がキーフレーム5、6及び7において観測されたことを示す3個の後続する1とを含む(0,0,1,1,1)などのサイズ5の2値ベクトルがこの特徴追跡に関連付けられるものである。2値ベクトルは、次に、擬似画像特徴(外れ値)の存在を示すために、その後の位置及び方向の計算中に使用されることがある。すなわち、このベクトル内の偽要素(すなわち、0)に関連付けられた特徴ロケーションは、無視されることがあるのに対し、真要素(すなわち、1)に関連付けられた特徴ロケーションは、更なる計算のため使用されることがある。たとえば、キーフレーム(3,4,5,6,7)のウィンドウ内のキーフレーム6上の特徴追跡の2Dロケーションが処理中のある時点で外れ値として判定された場合、キーフレーム6は、その後に、ベクトルが(0,0,1,0,1)に変化するように2値ベクトルの中で偽としてマークを付けられるものであり、キーフレーム6の中の特徴の観測は、さらなる処理中に無視されるものであるが、キーフレーム6に関する他の情報は、更なる処理においてそのまま使用されることがある。
【0023】
前処理モジュール106は、キーフレームの連続的な各ペアの間及び各ペアの時点に捕捉された慣性読み取り値を格納している慣性読み取り値の配列を更に作成する。すなわち、モジュール106は、IMU104から慣性読み取り値を受信し、各キーフレームが画像センサ102によって捕捉された時点又は時点付近に出現する読み取り値を識別する。モジュール106は、その後、各キーフレーム及びこれの後続フレームの時点の間に出現した読み取り値を全て識別する。それ故に、前処理モジュール106は、ウィンドウ内の先頭のキーフレームが捕捉された時点又は時点付近の読み取り値で始まり、ウィンドウ内の末尾のキーフレームが捕捉された時点又は時点付近の読み取り値で終わり、これらの終点の間に出現する慣性読み取り値全てを格納している慣性読み取り値の系列を発生させる。各慣性読み取り値は、6個の測定値(たとえば、浮動小数点数)を含み、前半の3個は、加速度計によって測定された直線加速度のX、Y、及びZ成分を指し示し、後半の3個は、ジャイロスコープによって測定された各速度のロール、ピッチ、及びヨー成分を指し示す。
【0024】
前処理モジュール106は、先頭のキーフレームがSWFによって処理された時点での機器の状態に対する慣性推定値も計算する。いくつかの実装では、初期状態推定値の計算は、以下のとおり進む。短い初期期間からの加速度計読み取り値は、平均化及び正規化され、機器のロール及びピッチ方向は、ベクトル(0,0,1)を1に正規化されたこの平均加速度計読み取り値にマッピングする回転に初期化されるが、ヨーは、任意の値に設定され得る。同じ短い初期期間からのジャイロスコープ読み取り値は、平均化され、その結果がジャイロスコープバイアスのための初期推定値として使用される。初期位置、速度、及び加速度計バイアスに零が設定される。バイアスは、経時的に変化することがある動き感知ユニットの測定値の誤差に対応する。
【0025】
前処理モジュール106は、たとえば、伝搬アルゴリズムを使用して、第2の時点での機器の状態及び後続のキーフレームに対する第1の推定値も計算する。伝搬アルゴリズムは、第1の時点と第2の時点との間の慣性読み取り値の系列を第1の時点での機器の慣性状態と一緒に取り込み、第2の時点での機器の慣性状態の推定値を生成する。この初期推定値は、おおよそ正確さが不足しているが、機器の状態に対するより正確な推定値を計算するために後続の処理ステップによって使用される。
【0026】
前処理モジュール106は、たとえば、三角測量アルゴリズムを使用して、機器に近接している物体の位置及び/又は方向の初期推定値も計算する。三角測量アルゴリズムは、単一の画像特徴が(特徴追跡内に設けられた)2個以上の異なったキーフレーム内で観測され、照合されるロケーションを、これらの2つのキーフレームの時点での機器の状態と一緒に取得し、画像特徴の3D位置の推定値を生成する。この初期推定値は、おおよそ正確さが不足しているが、3D位置に対するより正確な推定値を計算するために後続の処理ステップによって使用される。照合された画像特徴の推定3D位置は、機器のポーズに関して、又は他の参照フレームに関して表現される。更に、照合された画像特徴の各3D位置は、実世界における物体又は物体の位置であると考えられる。その結果として、初期推定値は、機器に近接している物体の位置及び/又は方向の推定値である。
【0027】
前処理モジュール106によって識別されたウィンドウ毎に、モジュール106は、(特徴追跡と、特徴追跡に関連付けられた2値ベクトルと、機器に近接している物体の位置及び/又は方向を表現する異なったキーフレームに亘る各照合画像特徴の3D位置の初期推定値とを含む)特徴追跡情報と、(各ウィンドウ内のキーフレームに対する慣性読み取り値の系列と、各キーフレームが捕捉された時点での機器100の状態の初期推定値とを含む)慣性データとをSWFモジュール108に渡す。
【0028】
SWFモジュール108は、電子ハードウェア、ソフトウェア、又は電子ハードウェアとソフトウェアとの両方の組み合わせということがあり得る。SWFモジュール108は、機器に近接している物体の位置及び/又は方向の推定値を様々な時点での機器100の状態の推定値と共に決定するために一体として使用される数個のサブモジュールを含む。サブモジュールは、バンドル調整(BA)モジュール110と、スパース構造周辺化(SSM)モジュール112と、遅延動き周辺化(DMM)モジュール114とを含む。SWFモジュール108は、同時に1ウィンドウずつ前処理モジュール106から入力されたデータを処理する。ウィンドウ毎に、SWFモジュール108は、様々な時点での機器の状態の推定値を機器に近接している物体の位置及び/又は方向を表現している追跡された画像特徴の3D位置と共に保持する。これらの推定値は、「モデルパラメータ」として全体で知られている。たとえば、モデルパラメータは、機器100に近接している物体の位置及び/又は方向を表現する変数と、ウィンドウ内の1個以上のキーフレームの時点での機器100に対する状態(たとえば、位置、方向、速度、及び/又は慣性バイアス)の推定値を表現する変数とを含む。SWFモジュール108は、現在モデルパラメータに関して利用可能である情報を表現し、ウィンドウに関連付けられた情報行列Hも保持し、この情報は、モデルパラメータの中の係数を記述する。従って、Hは、機器に近接している物体の位置及び/又は方向の推定値を表現する変数の集合と、各キーフレームの時点(又は時点付近)での機器の状態の推定値を表現する別の変数の集合とに関連付けられている。情報行列Hは、いくつかのエントリが第1の変数(位置及び/又は方向推定値の信頼)の集合に関する情報を表現し、いくつかのエントリが第2の変数(機器状態の推定値の信頼度)の集合に関する情報を表現し、いくつかの他のエントリが第1の変数の集合と第2の変数の集合との間の共有信頼を表現する第1の変数の集合と第2の変数の集合との間の共有情報を表現している複数の異なったエントリを格納することがある。情報行列に関連した更なる詳細は、たとえば、全体が参照により本明細書に組み込まれる、Triggs et.al,「Bundle Adjustment−A Modern Synthesis,」pp.1〜71,December 20,2010に見られる。SWFモジュール108が最初に動作するとき、モジュール108は、1つ以上の初期キーフレームに対する機器状態の推定値を使って初期化される。
【0029】
BAモジュール110、SSMモジュール112、及びDMMモジュール114は、1つずつの新しいウィンドウが受信されたとき、新しいモデルパラメータを更新するために併せて機能する。BAモジュール110は、モデルパラメータを保持し、後処理モジュール116に出力する。SSMモジュール112及びDMMモジュール114は、周辺化を行う。周辺化のプロセスは、情報行列Hに関連付けられた変数の個数を削減し、削減された変数に関する情報の集約が収められている新しい情報行列を生じさせる。Hの中のエントリのうちいくつかは、新しいより小規模の情報行列を生じさせるHの中の他のエントリに集約される。SWFモジュールは、新しい情報行列の中のエントリ間に関連性を保持したままであること、すなわち、集約されていない変数間に関連性を保持することが指摘されるべきである。特に、変数及びHの中のエントリの間の関連性は、集約されなかった新しい情報行列の中のエントリを再び関連付けることによって新しい情報行列の中に持ち込まれる。
【0030】
周辺化の目的は、前のウィンドウの内部の情報を新しいウィンドウの内部の情報に転写すると共に、モデルパラメータの集合に関する情報をこれらのモデルパラメータの部分集合に関する情報に転写することである。SWFモジュール108が新しいウィンドウを受信したとき、モジュール108は、新しい特徴追跡と、新しいキーフレームに関連付けられた慣性読み取り値とにアクセスするだけでなく、特徴追跡と、より旧いキーフレームに関連付けられた慣性読み取り値とを外す。SWFモジュール108が特徴追跡又は慣性読み取り値を決して外さない場合、処理時間は、無制限に増大するであろう。逆に、SWFモジュール108が周辺化を行うことなく特徴追跡及び慣性読み取り値を外した場合、計算モデルパラメータ推定値は、過去の関連データを考慮することなく行われるという意味で準最適になるであろう。それ故に、最適化問題が解決されるモデルパラメータの総数を削減することにより、周辺化は、SWFモジュール108の計算負荷を軽減すると共に、情報を集約し、各ウィンドウと次のウィンドウとの間で転写することにより長時間に亘って一貫性のあるモデル推定値を維持する。
【0031】
SWFモジュール108からモデルパラメータを受信する後処理モジュール116は、ユーザアプリケーションに依存してモデルパラメータの中に格納されている情報を利用する様々なアルゴリズム/プログラム、及び/又は、ハードウェアを含むことができる。たとえば、後処理モジュール116は、機器100の経路履歴を判定し、機器メモリ内に経路履歴を記憶する、及び/又は、
図1に表されるように、経路履歴をディスプレイに出力された地図に重ね合わせるために、SWFモジュール108によって出力されたモデルパラメータを使用するプログラムを含むことがある。すなわち、モデルパラメータの1つずつの新しい集合がSWFモジュール108によって出力されるとき、後処理モジュール116は、3D特徴位置推定値及び各キーフレームの時点での機器100に対する機器状態推定値を取り込み、これらの値を機器100に対する過去の位置値及び方向値の収集物(たとえば、配列)に追加する。位置推定値は、その後、機器が移動した経路を示すために機器100によって地図又は他のグリッドにプロットされることがある。
【0032】
図3は、SWFモジュール108によって行われたモデルパラメータの推定値を計算するプロセス例300を示すフローチャートである。プロセス300は、
図2の機器100に関して説明される。前処理モジュール106から、特徴追跡情報と1つずつの新しいウィンドウに関連付けられた慣性読み取り値とを受信し次第(302)、SWFモジュール108は、このデータをBAモジュール110に供給する。BAモジュール110は、現在受信された特徴追跡及び慣性読み取り値に基づいてモデルパラメータを更新するためにバンドル調整を行う(304)。調整を行うために、BAモジュール110は、前に計算された情報行列H
priorに関係するデータも受信する。概して、前の情報行列H
priorは、現在ウィンドウより前に受信されたウィンドウに対してDMMモジュール114によって計算される。代替的に、H
priorは、SWFモジュール108が前のウィンドウを少しも処理していないとき、視覚に基づく慣性ナビゲーション手順の初期化中に計算される。BAモジュール110は、モデルパラメータに対する更新された推定値をモデルパラメータに関するSWFモジュールの情報を表現する更新された情報行列Hと共に生じさせる。バンドル調整に関する更なる詳細は、たとえば、全体が参照により本明細書に組み込まれる、Triggs et.al,「Bundle Adjustment−A Modern Synthesis,」に見られる。
【0033】
モデルパラメータ及び情報行列Hを更新した後、BAモジュール110は、モデルパラメータ及び情報行列HをSSMモジュール112に渡し、このSSMモジュールは、その後、続けてスパース構造周辺化を行う(306)。スパース構造周辺化の目的は、追跡特徴からの情報を現在ウィンドウの内部の各キーフレームの時点での機器の状態に関する情報に転写することである。すなわち、SSMモジュール112によって行われた周辺化プロセスは、現在ウィンドウ内の各キーフレームの時点での機器の状態に関する周辺情報を表現する複数の値を格納するより小さいサイズの修正情報行列を生成する。追跡特徴の情報の周辺化は、したがって、後のステップで情報行列を処理する計算負荷を軽減する。修正情報行列は、新しい行列である可能性があり、又は、同じ原情報行列Hとして保持される可能性があり、原情報行列Hの部分集合は、同じ行列Hの他の部分集合へ周辺化され、周辺化された部分集合は、後のステップで無視されるので、後のステップにおいて情報行列を処理する計算負荷を軽減するのと同じ結果を達成する。
【0034】
SSMモジュール112は、周辺情報値を格納している修正行列をDMMモジュール114へ出力する。DMMモジュールは、その後、修正行列について遅延動き周辺化(308)を行う。遅延動き周辺化の目的は、特定の個数のキーフレームを除いて機器状態に関連する情報を投影することであり、従って、情報行列のサイズと、機器100に対して結果として生じる計算負荷とを更に削減する。代替的な実装では、DMMモジュール114は、修正情報行列自体ではなく、むしろ修正情報行列から取得された共分散行列に関して遅延動き周辺化を行う。本実装では、SSMモジュール112によって生成された修正情報行列の逆行列が最初に計算され、共分散行列を生じさせる。遅延動き周辺化が、その後、共分散行列について行われ、出力行列が反転される。
【0035】
何れの場合も、DMMモジュール114からの出力行列は、前処理モジュール106によって識別された新しいウィンドウに関してBAモジュール110に戻され、次のバンドル調整手順において先行情報行列H
priorとして使用される。加えて、SWFモジュール108によって受信された、いくつかのウィンドウに対して、後処理モジュール116は、BAモジュール110から更新された対応するモデルパラメータ及び/又はこれらのモデルパラメータに関係する情報行列を取り込む。たとえば、後処理モジュール116は、機器の更新された位置を取得するためにBAモジュール110から最新モデルパラメータを取り込むことがある。簡単にするために、BAモジュールから最新モデルパラメータを取り込む後処理モジュール116のプロセスは、
図3のブロック310に表されているように、情報を後処理モジュール116に出力するBAモジュールとして説明することも可能である。
【0036】
以下は、BAモジュール110、SSMモジュール112及びDMMモジュール114によって行われる動作について更なる詳細を提供する。
図4は、バンドル調整を行うプロセスを示すフローチャートである。上述のとおり、BAモジュール110は、最初に、特徴追跡情報及び第1のウィンドウ内のキーフレームに対する慣性読み取り値を先行情報行列H
priorと共に受信する(402)。受信された特徴追跡情報、慣性読み取り値、及び先行情報行列H
priorを使用して、BAモジュール110は、その後、モデルパラメータを更新し、モデルパラメータ(404)に関連付けられた現在情報行列Hを計算する(404)。
【0037】
現在情報行列Hを計算する実施例が以下のとおり説明される。x
currentが前処理モジュールによって初期化中に計算された、又は、バンドル調整の前回の反復から繰り越された現在モデルパラメータであるとする。第1のヤコビ行列J
Vは、画像特徴に対して計算され、x
currentを画像特徴に関連付ける。特に、J
Vのエントリは、3D特徴位置から2D画像特徴への変換の1次微分として計算される。残差ベクトルr
vも画像特徴に対して計算される。特に、r
vのエントリは、各画像特徴のロケーションと画像特徴毎に現在モデルパラメータによって予測されたロケーションとの間の差として計算される。第2のヤコビ行列J
Iは、現在ウィンドウ内のキーフレームの各連続ペアの間で慣性読み取り値に対して計算される。第2のヤコビ行列は、慣性読み取り値に基づいてx
currentのモデルパラメータのいくつかを関連付ける。特に、J
Iのエントリは、前述の伝搬関数の1次微分として計算される。残差ベクトルr
Iも慣性読み取り値に対して計算される。特に、r
Iのエントリは、各キーフレームに対して伝播アルゴリズムによって出力された機器状態と各キーフレームに対して現在モデルパラメータによって予測された機器状態との間の差として計算される。先行推定値x
prior及び情報行列x
priorは、前のウィンドウについて行われた(又はこれが第1のウィンドウである場合、初期化時に与えられた)遅延動き周辺化手順の結果として提供される。先行残差r
priorが計算され、ここで、r
priorは、各キーフレームの時点での機器状態に対する現在推定値と同じものに対する先行推定値との間の差を表現する。先行情報行列H
priorのコレスキー分解L
priorも計算される。
【0038】
現在情報行列Hは、次に、以下のとおり表現されることがある。
【0040】
式中、J
VTは、画像特徴に対して計算された第1のヤコビ行列の転置であり、J
ITは、慣性読み取り値に対して計算された第2のヤコビ行列の転置である。式中の第1項、第2項、及び第3項は、異なったサイズの行列に対応することがある。たとえば、以下に詳述される周辺化プロセスのため、先行情報行列H
priorは、第1のヤコビ行列及び第2のヤコビ行列より小さくなることがある。この場合、完全に零が投入されている行及び列は、1つの項の中の行及び列が他の各項の中の対応する行及び列と同じ変数に関連付けられることを確保するために、必要に応じて3つの項のうち1つ以上の項に追加される。
【0041】
BAモジュール110は、次に、ヤコビ行列、残差ベクトル、先行残差r
prior、及びコレスキー分解L
priorを使用して、新しいモデルパラメータx
newを計算する(406)。新しいモデルパラメータを計算する実施例は、以下のとおりである。最初に、現在ウィンドウに対する新しいモデルパラメータの推定値が行列Hのコレスキー分解を使用して以下の連立一次方程式を解法することにより取得される:
【0043】
式中、x
currentは、現在ウィンドウに対する既存のモデルパラメータのことを指し、x
newは、現在ウィンドウに対する更新されたモデルパラメータのことを指し、
【0045】
は、L
priorの行列転置のことを指し、δxは、モデルパラメータへの更新を記憶するために使用される一時変数のことを指す。システムのいくつかの変形では、方程式(3)は、非ユークリッド更新演算で置換されることがある。非ユークリッド更新演算の一実施例は、四元数更新
【0047】
であり、式中、δqは、δxに記憶された対応する誤差値に値1を付け加えることにより形成された四元数であり、
【0049】
は、四元数乗算を表現する。非ユークリッド更新演算の別の実施例は、回転行列更新
【0051】
であり、式中、R
currentは、X
currentに記憶された値から構成された回転行列であり、R
newは、x
newに記憶された値から構成された回転行列であり、行われる演算は、行列乗算である。[δx ×]は、δxに対する非対称行列
【0053】
を表現する。
非ユークリッド更新演算の第3の実施例は、X
new、X
current、及びδxの内部の異なったサブベクトルに別々に適用される任意の個数のユークリッド更新演算及び非ユークリッド更新演算の何らかの組み合わせである。
【0054】
現在ウィンドウに対する新しいモデルパラメータを計算した後、BAモジュール110は、現在ウィンドウに対するモデルパラメータと現在特徴追跡及び慣性読み取り値との間の一致を測定するコスト関数を評価する。当該技術分野において知られている多種多様のコスト関数が利用されることがある。コスト関数の主たる要件は、モデルパラメータが現在特徴追跡及び慣性読み取り値との整合性に欠けるときにコスト関数がより大きい値を有し、モデルパラメータが現在特徴追跡及び慣性読み取り値と整合性が取れているときにより小さい値を有することである。たとえば、いくつかの実施では、コスト関数は、以下のとおり評価される。各画像特徴に対する「予測2Dロケーション」は、現在モデルパラメータによってキーフレームに関連付けられた位置及び方向を使用して、画像特徴に関連付けられた3D位置を特徴が観測されたこのキーフレームに投影することにより計算される。この投影は、画像センサによって観測されたとおりの特徴の「観測」ロケーションと比較され、以下では、この画像特徴に対する誤差と呼ばれる「予測」ロケーションと「観測」ロケーションとの間の平方ユークリッド距離が計算される。
【0055】
次に、現在ウィンドウ内の各キーフレームに対する誤差が以下のとおり計算される。現在ウィンドウの第1のキーフレームが時点Tで捕捉され、ウィンドウ内の次の後続のキーフレームが時点T+1で捕捉されたと仮定する。(現在モデルパラメータの内部に格納されているとおりの)キーフレームの時点Tでの機器の状態と、TとT+1との間に捕捉された慣性読み取り値とがキーフレームの時点T+1での機器の「予測」状態を計算するために使用される。キーフレームの時点T+1での機器の予測状態と、現在モデル推定値の内部に記憶されたキーフレームの時点T+1での機器の状態との間の重み付き平方差が計算され、この重み付き平方差は、以下では、キーフレームTに対する二次誤差項と呼ばれることになる。
【0056】
現在モデル推定値に関連付けられたコストは、次に、全ての画像特徴に対する二次誤差の総和に全てのキーフレームに対する二次誤差の総和を加えたものとして計算される。このコストは、モデルパラメータx
newに対して一度、及び、モデルパラメータx
currentに対して一度評価される。モデルパラメータx
newに関連付けられたコストがモデルパラメータx
currentに関連付けられたコストより低い場合、新しいモデルパラメータが現在モデルパラメータを置き換える。そうではない場合、新しいモデル推定値は、受け入れられない。
【0057】
限定されることなく、以下を含むコスト関数の多数の変形が考えられ得る。たとえば、いくつかの実装では、ロバストコスト関数が画像特徴誤差若しくはキーフレーム誤差の一方又は両方に対する平方差の総和に代えて使用されることがある。ロバストコスト関数の実施例は:
L1ノルム:
f(x)=2b|x|;
フーバー関数:
f(x)=x
2|x|<bの場合
f(x)=2b|x|−b
2それ以外の場合;
又はコーシー関数:
f(x)=b
2 log(1+x
2/b
2)
である。
【0058】
いくつかの実装では、ドメイン固有知識がコスト関数に挿入されることがある。たとえば、特定のアプリケーションでは、視覚に基づく慣性ナビゲーションを行う機器は、高度を一定に保っている水平面だけで動くこと、又は、機器の速度の変化は、機器自体の慣性特性によって制限されることが知られていることがある。このような制約は、ドメイン固有知識との整合性を欠くモデル推定値に対して大きな値を取り、ドメイン固有知識と整合性が取れているモデル推定値に対して小さい値を取るコスト項を使用することにより組み込まれ得る。
【0059】
この時点で、x
newに対するコストとx
currentに対するコストとの間の絶対差が計算され、この差が閾値γ未満である、又は、バンドル調整プロセスの繰り返し回数が上限N
maxを超える場合、バンドル調整プロセスが終了し、この場合、x
currentに対する現在値は、最終的な位置推定値及び方向推定値としてBAモジュール110によって出力され、処理は、前述のスパース構造周辺化を続ける。すなわち、バンドル調整を特徴追跡及び慣性読み取り値の集合に適用した後、BAモジュール110は、現在ウィンドウの内部の各フレームの時点での機器100の状態の推定値及び観測画像特徴の3Dロケーションの推定値を格納する現在モデルパラメータを出力するBAモジュール110の出力は、モデルパラメータに関連付けられた現在情報行列Hの形で、信頼度(又は確信度)を表現する値をモデルパラメータの中に更に含む。そうではない場合、コストx
newと、x
currentに対するコストとの間の絶対差が閾値γより大きくなり、バンドル調整プロセスの繰り返しの回数が上限N
max未満である場合、バンドル調整の更なる反復が行われ、SWFモジュール110は、バンドル調整プロセスの先頭から処理を再開し、ヤコビ行列の計算から始めて、前述のとおり続行する。
【0060】
バンドル調整プロセスが終了し次第、現在情報行列Hは、SSMモジュール112に渡される。
図5は、情報行列の実施例を示す概略図である。情報行列Hは、各キーフレームの時点での機器の状態に関する情報であるモデルパラメータに関する情報と、機器に近接している物体の3D位置及び/又は方向に関する情報とを格納する。
図5の実施例に表されているように、情報行列Hは、異なったグループ分けA、B、C及びDに配置されることがある。グループ分けAは、機器状態推定値に対応する値を含む。グループ分けDは、機器に近接している物体の位置及び/又は方向(たとえば、3D特徴位置)に関する推定値に対応する値を含む。グループ分けB及びCは、Aの中の機器状態推定値とDの中の特徴位置との間の共有情報に対応する値を含む。情報行列Hは、対称性であるので、グループ分けCは、Bの行列転置である。
【0061】
SSMモジュール112は、情報行列Hの周辺化の第1の部分を行う。
図6は、スパース構造周辺化を行うプロセス例600を示すフローチャートである。最初に、SSMモジュールは、BAモジュール110から現在ウィンドウに対する情報行列Hを受信する(602)。次に、SSMモジュールは、機器に近接している物体の位置及び/又は方向を表現する変数に関連付けられた情報行列Hの部分集合、すなわち、
図5からのグループB、C、及びDを周辺化する(604)。周辺化された変数に関する情報の集約は、その後、新しい行列A’の中に維持される。一例として、B、C、及びDを周辺化することは、以下のとおり表現され得るシュールの補題を使用して計算されることがある:
【0063】
ここで、SSMモジュール112は、Hのスパース構造を利用する。特に、部分行列Aは、ブロック三重対角であり、Dは、ブロック対角である。SSMモジュール112は、非零であるシュールの補題の項だけを考慮し、計算時間を著しく減少させる。それ故に、このプロセスからのSSMモジュール112の出力は、各キーフレームの時点での機器状態に関する周辺情報を表現する新しい情報行列A’である。A’に格納されている値は、「周辺情報値」である。新しい行列A’の実施例は、
図7に表され、この行列の部分集合は、更に後述される。新しい行列A’は、次に、遅延動き周辺化モジュール114に渡される(606)。
【0064】
図8は、遅延動き周辺化を行うプロセス例800を示すフローチャートである。DMMモジュール114は、SSMモジュール112から新しい情報行列A’を受信し(802)、DMMモジュール114は、周辺化プロセスの第2の部分、すなわち、遅延動き周辺化を行う。周辺化プロセスの間に、DMMモジュール114は、1つを除く全てのキーフレームに対する機器状態推定値を表現する変数に関連付けられた情報を除去する。しかしながら、最初に、DMMモジュールは、SWFモジュール108によって処理される現在ウィンドウ及び新しいウィンドウに共通するキーフレームを選択する(804)。この演算を行うために、DMMモジュール114は、現在ウィンドウ内のフレームの中で次のウィンドウの中にも存在するフレームを知ることが必要である。この理由のため、共通キーフレームの選択は、次のウィンドウが到達するまで行われない。好ましくは、両方のウィンドウの中に存在する最先のフレームは、共通キーフレームとして選択される。しかしながら、両方のウィンドウの中に存在する他のフレームが共通キーフレームとして選択されることもある。いくつかの実装では、2つ以上の共通キーフレームが選択されることがあり、2つ以上のキーフレームがウィンドウ間で情報を転写するために使用されるものである。
【0065】
一例として、現在ウィンドウがW
1であり、到達する次のウィンドウがW
2であると仮定する。W
2からの情報(すなわち、特徴追跡及び慣性状態情報)がSWFモジュール108に到達すると、DMMモジュール114は、フレーム識別子(たとえば、整数)のリストを使用してW
1内のフレームをW
2内のフレームに関連付ける。W
1及びW
2の両方に存在する最先のフレームは、フレーム識別子F0で指定されることにする。特に、W
1がフレーム(3,4,5,6,7)を格納し、W
2がフレーム(5,6,7,8,9)を格納することにする。この場合、フレーム5が両方のウィンドウの中に存在する最先のフレームであるため、F0=フレーム5である。
【0066】
共通キーフレームが選択されると、DMMモジュール114は、選択された共通キーフレームでの機器の状態を表現する変数に関連付けられた情報行列A’の部分集合を除いて、機器の状態を表現する変数に関連付けられたA’の部分集合を周辺化する(806)。
図7は、行列A’の配置を説明する例示図である。同図に描かれているように、行列A’は、各キーフレームの時点での機器状態を表現する変数に関連付けられた周辺情報値をキーフレームの各ペアの時点での機器状態を表現する変数間の共有情報項と共に含む。行列A’は、4つの部分行列:W
1及びW
2の両方に共通である選択されたフレームF0に関連付けられた行及び列に対応するブロックKと、選択されたフレームを含まないフレームに関する情報をこれらのフレーム間の共有情報項と共に格納するブロックG
11、G
12、G
21、G
22と、選択されたフレームF0と選択されたフレームF0以外のフレームとの間の共有情報項を格納するブロックF
1、F
2、E
1、E
2とに分割されることがある。
【0067】
遅延動き周辺化の目標は、ブロックF
1、F
2、E
1、E
2及びG
11、G
12、G
21、G
22を周辺化し、この情報をKのサイズに等しいサイズをもつ新しい行列に集約することである。新しい行列K’は、シュールの補題を計算することにより決定されることがあり、以下のとおり表現することができる:
【0071】
である。
DMMモジュール114は、次に、整合性を保ち、過剰な信頼の状況を回避するために、定数でK’の中の値を除算することによりK’をスケーリングする(808)。たとえば、いくつかの実装では、定数は、ウィンドウサイズ(たとえば、ウィンドウ内の測定値の個数又はウィンドウが関連付けられる期間)に等しい。K’の内部の値は、共通フレーム周辺情報値と呼ばれる。結果として生じるK’は、H
priorと呼ばれることもある。H
priorは、続いて、次のウィンドウのためBAモジュール110によって先行情報行列として使用される。それ故に、バンドル調整プロセス、スパース構造周辺化プロセス、及び遅延動き周辺化プロセスの間にSWFモジュール108によって発生させられた情報行列は、今度は、先行情報行列としてフィルタの次の反復においてフィルタへの入力として使用され、それによって、フィルタの反復の間とウィンドウの間で情報の転写を実現し易くする。フィルタは、今度は、後処理モジュール116に出力され得る、又は、後処理モジュール116によって取得され得る機器の状態に対する更新された推定値を格納する。
【0072】
いくつかの実装では、修正行列A’の遅延動き周辺化は、以下のとおり代替的に行われることがあり、最初に、DMMモジュール114は、以下のように表現できるA’の逆行列を取得する:
【0074】
次に、行列Σは、
図7に表されるようにサブブロックに分割され、サブブロックKが抽出され、行列K’は、以下に従って計算される。
【0076】
行列K’は、次に、SWFの整合性を保つために、定数による除算を含み、前述のとおり処理される。
【0077】
行列K’は、原情報行列Hより実質的に小さい次元からなる。一例として、情報行列Hが初期に1000×1000のサイズを有する場合、SSMモジュール112を使用してスパース構造周辺化を行うことは、行列を150×150のサイズまで縮小することがある。遅延動き周辺化を適用した後、行列は、15×15のサイズまで更に縮小され得る。
【0078】
アプリケーション
本明細書に記載されたスライディングウィンドウ逆フィルタ(SWF)モジュール(たとえば、SWFモジュール108)は、様々な視覚に基づく慣性ナビゲーションアプリケーションの一部分として使用されることがある。たとえば、いくつかの実装では、SWFモジュールは、視覚ディスプレイを有するモバイル電子コンピューティング機器に組み込まれる。SWFモジュールによって決定された位置及び方向推定値は、電子コンピューティング機器のユーザに機器の現在位置及び過去位置に関する情報を提供するために(たとえば、後処理の前後に)地図上の点としてディスプレイへ出力され得る。いくつかの事例では、SWFモジュールは、移動中の電子コンピューティング機器の一部分であるように構成されている。他の実装では、SWFモジュールは、電子コンピューティング機器とは別個であり、たとえば、SWFモジュールは、サーバ上で動作していることがあるが、IMU及び画像センサは、電子コンピューティング機器の中にある。電子コンピューティング機器からの特徴追跡及び慣性データは、その後、サーバ上のSWFモジュールに送信されることがあり、SWFモジュールは、その後、位置推定値及び方向推定値を計算する。サーバは、電子コンピューティング機器の位置及び方向情報でウェブサイトをリアルタイムで更新するインターネットサーバでもよい。この情報は、画像化されている環境の奥行き情報などの付加情報と組み合わされて更に使用され、通行された場所の3D地図を生成することが可能である。
【0079】
いくつかの実装では、位置及び方向推定値は、ある点で画像センサによって画像化された物体を追跡するために使用され得る。たとえば、前処理モジュール106は、画像センサによって捕捉された画像内で1つ以上の物体(たとえば、鍵、財布など)を識別し、その後、物体が画像センサの視野内にもはや存在しないときに物体の最後の既知位置を保持するために、SWFモジュールからの位置及び方向データを使用することがある。物体があった場所、又は、物体が識別されたロケーションへ戻る方法についてユーザが分からない場合、電子コンピューティング機器は、物体の最後の既知位置及び/又はユーザが物体まで戻るために辿ることができる経路を(たとえば、ディスプレイに)出力することがある。
【0080】
いくつかの実装では、建物(たとえば、倉庫、ショッピングモール、又は住宅)の内部/外部は、建物の地図を記録するために、本開示による視覚に基づく慣性ナビゲーションを有する電子コンピューティング機器を使用して通行される。電子コンピューティング機器は、SWFモジュールによって提供された位置及び方向情報を記憶することがあり、その間に、たとえば、数ある中でもWiFi(登録商標)信号、BlueTooth(登録商標)信号、ビーコンによって発生された信号、近距離無線通信(NFC)などの発生源からの付加情報も収集する。電子コンピューティング機器の正確なロケーション及び方向は、その後、構造物内の様々なロケーションにおける信号の地図を作成するために使用されることがある。
【0081】
いくつかの実装では、区域(たとえば、住宅、裏庭、建物内部)は、画像センサと、機器自体の慣性測定ユニットとの他に付加的なセンサを必要とすることなく、この区域の3次元(3D)地図を作成するために本開示による視覚に基づく慣性ナビゲーションシステムを有する電子コンピューティング機器を使用して通行されることがある。これは、SWFモジュールによって発生させられた情報が機器及び機器の外部環境に関する3D情報を含むことがあるためである。いくつかの事例では、視覚に基づく慣性ナビゲーションシステムを使用して生成された3D地図作成の正確さは、電子コンピューティング機器に組み込まれた、奥行きセンサなどの付加的なセンサから到来する情報を使用して改善されることがある。
【0082】
いくつかの実装では、SWFモジュールは、ユーザを物体に向けるために使用され得る。
図10は、グラフィカル矢印1010が写真に重ね合わされ、店舗内の品目の位置を指し示す店舗の区域の画像を表している、電子コンピューティング機器によって出力された表示の実施例である。本明細書に開示されたとおりの視覚に基づく慣性ナビゲーションシステムは、この品目に対する電子コンピューティング機器の位置及び方向を計算するために使用される可能性があり、品目のロケーションは、予め既知であり、機器のロケーション及び方向は、SWFモジュールを使って計算される。この矢印は、ユーザを取り上げられるべき品目の方へ案内する。
【0083】
いくつかの実装では、SWFモジュールは、ユーザが自分の動きを追跡できるように電子コンピューティング機器の正確な位置及び方向を提供する。
図11は、仮想経路1110が画像の上に重ね合わされた、視覚に基づく慣性ナビゲーションシステムを含む電子コンピューティング機器のディスプレイによって出力された画像の実施例を示す。仮想経路は、電子コンピューティング機器を保持、携行又は着用しているユーザが辿るためのガイドとして視覚に基づく慣性ナビゲーションシステムによって計算される。
【0084】
ハードウェア及びソフトウェア
図9は、本明細書に記載された技術と共に使用されることがある電子コンピューティング機器550の実施例を表す。たとえば、
図2を参照すると、モバイル電子コンピューティング機器100は、機器550の実施例になり得る。電子コンピューティング機器550は、個人情報端末、携帯電話機、スマートフォン、スマートメガネ、及び他の類似するコンピューティング機器などの電子コンピューティング機器の様々な形式を表現することが意図されている。ここに表されたコンポーネントと、これらの接続及び関係と、これらの機能とは、単に実施例であることが意図され、本文書に記載された技術及び/又は特許請求の範囲を限定することは意図されていない。
【0085】
電子コンピューティング機器550は、数あるコンポーネントの中で、プロセッサ552と、メモリ564と、ディスプレイ554、通信インタフェース566及びトランシーバ568などの入力/出力機器とを含む。機器550は、付加的なストレージを設けるために、マイクロドライブ又は他の機器などの記憶機器が更に設けられることがある。コンポーネント550、552、564、554、566及び568の1つずつは、様々なバスを使用して相互接続され、コンポーネントのうちいくつかは、共通マザーボードに、又は、必要に応じて他の方法で搭載されることがある。
【0086】
プロセッサ552は、コンピューティング機器550の内部で、メモリ564に記憶された命令を含む命令を実行できる。プロセッサは、別個及び複数のアナログプロセッサとデジタルプロセッサとを含むチップのチップセットとして実装されることがある。プロセッサは、たとえば、ユーザインタフェースの制御、機器550によって動かされるアプリケーション、及び機器550による無線通信などの機器550の他のコンポーネントの調整を行うことがある。
【0087】
プロセッサ552は、制御インタフェース558と、ディスプレイ554に連結されたディスプレイ・インタフェース556とを介してユーザと通信することがある。ディスプレイ554は、たとえば、TFT LCD(薄膜トランジスタ液晶ディスプレイ)若しくはOLED(有機発光ダイオード)ディスプレイ、又は、他の適切なディスプレイ技術でもよい。ディスプレイ・インタフェース556は、グラフィカル情報及び他の情報をユーザに提示するためにディスプレイ554を駆動する適切な回路を備えることがある。制御インタフェース558は、ユーザからコマンドを受信し、プロセッサ552への提供のためこれらのコマンドを変換することがある。加えて、外部インタフェース562が、他の機器との機器550の近距離通信を可能にするようにプロセッサ552と連通して設けられることがある。外部インタフェース562は、たとえば、いくつかの実装では、有線通信のため、他の実装では、無線通信のため設けられることがあり、複数のインタフェースも設けられることがある。
【0088】
メモリ564は、コンピュータ機器550の内部に情報を記憶する。メモリ564は、コンピュータ読み取り可能な媒体若しくは媒体群、揮発性メモリユニット若しくはユニット群、又は、不揮発性メモリユニット若しくはユニット群のうち1つ以上として実装される可能性がある。増設メモリ574が設けられ、たとえば、SIMM(シングル・インライン・メモリ・モジュール)カードインタフェースを含むことがある拡張インタフェース572を介して機器550に接続されることがある。このような増設メモリ574は、機器550のための追加記憶空間をもたらすことがあり、又は、機器550のためのアプリケーション又は他の情報を記憶することもある。具体的には、増設メモリ574は、前述のプロセスを実行するために、又は、補うために命令を含むことがあり、機密情報も含むことがある。それ故に、たとえば、増設メモリ574は、機器550のためのセキュリティモジュールとして設けられることがあり、機器550の安全な使用を可能にする命令を用いてプログラムされることがある。
【0089】
メモリは、たとえば、後述されるように、フラッシュメモリ、及び/又は、NVRAMメモリを含むことがある。一実装では、コンピュータプログラム製品は、情報担体において有形的に具現化される。コンピュータプログラム製品は、実行されたときに、前述された方法などの1つ以上の方法を行う命令を格納する。情報担体は、メモリ564、増設メモリ574、又はプロセッサ552上のメモリなどのコンピュータ又は機械読み取り可能な媒体である。
【0090】
機器550は、必要に応じてデジタル信号処理回路を含む通信インタフェース566を介して無線通信することがある。通信インタフェース566は、数ある中で、GSM(登録商標)音声電話、SMS、EMS若しくはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、又はGPRSなどの様々なモード又はプロトコルの下で通信を行うことがある。このような通信は、たとえば、無線周波数トランシーバ568を介して行われることがある。加えて、Bluetooth、WiFi又は他の同様のトランシーバ(図示せず)などを使用して、近距離通信が行われることがある。加えて、GPS(全地球測位システム)レシーバモジュール570は、機器550上で動くアプリケーションによって必要に応じて使用されることがある付加的なナビゲーション及びロケーション関連無線データを機器550に供給することがある。
【0091】
機器550は、ユーザから発話情報を受信し、これを使用可能なデジタル情報に変換することがあるオーディオコーデック560を使用して可聴的に更に通信することがある。オーディオコーデック560は、同様に、たとえば、機器550の送受話器内のスピーカなどを介して、ユーザのため可聴音を発生させることがある。このような音は、音声電話通話からの音を含むことがあり、記録された音(たとえば、音声メッセージ、音楽ファイルなど)を含むことがあり、機器550上で動作するアプリケーションによって発生させられた音を含むこともある。
【0092】
コンピューティング機器550は、図に表されるように、複数の異なった形式で実装されることがある。たとえば、コンピューティング機器は、携帯電話機580として実装されることがある。コンピューティング機器は、スマートフォン582、個人情報端末、タブレットコンピュータ、スマートメガネ、スマートウォッチ、又は、他の類似するモバイル機器の一部分として実装されることがある。
【0093】
本明細書に記載されたシステム及び技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又は、これらの組み合わせで実現され得る。これらの様々な実装は、専用又は汎用でもよく、記憶システム、少なくとも1台の入力機器、及び少なくとも1台の出力機器からデータ及び命令を受信するように、データ及び命令を記憶システム、少なくとも1台の入力機器、及び少なくとも1台の出力機器に送信するように連結されることがある少なくとも1台のプログラマブルプロセッサを含むプログラマブルシステム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラム内の実装を含み得る。
【0094】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション又はコードとしても知られている)は、プログラマブルプロセッサのための機械命令を含み、高水準手続及び/又はオブジェクト指向プログラミング言語、及び/又は、アセンブリ機械言語で実装され得る。本明細書において使用されるように、用語「機械読み取り可能な媒体」、「コンピュータ読み取り可能な媒体」は、機械命令を受信する機械読み取り可能な媒体をはじめとして、機械命令及び/又はデータをプログラマブルプロセッサに供給するために使用される何らかのコンピュータプログラム製品、装置及び/又は機器(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブル・ロジック・デバイス(PLD))のことを指す。
【0095】
ユーザとの相互作用を行うために、本明細書に記載されたシステム及び技術は、情報をユーザに表示するディスプレイ(たとえば、液晶ディスプレイモニタ)を有する機器で実施され得る。ディスプレイは、ユーザから情報を受信するために使用されることもある(たとえば、タッチスクリーン)。機器は、キーボード及び/又はポインティング機器(たとえば、マウス又はトラックボール)などの他の入力機器を有することがあり、ユーザは、これを用いて入力をコンピュータに供給できる。他の種類の装置は、同様にユーザとの相互作用を行うために使用できる。たとえば、ユーザに提供されたフィードバックは、どのような形式の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)にもなり得る。ユーザからの入力は、音響、音声、又は触覚入力を含むどんな形式でも受信され得る。
【0096】
複数の実装が説明されている。それにもかかわらず、発明の趣旨及び範囲から逸脱することなく、様々な変更がなされてもよいことが分かるであろう。他の実装は、請求項の範囲内である。