(58)【調査した分野】(Int.Cl.,DB名)
前記スケール情報または前記非直交性情報のうちの少なくとも1つを使用して、一連の生のジャイロスコープ測定値を調整することによって、前記一連のジャイロスコープ測定値を提供するステップをさらに含む請求項1に記載の方法。
前記一連のジャイロスコープ測定値が、バッファリングされた一連のジャイロスコープ測定値を含み、前記一連のジャイロスコープ測定値から前記ジャイロスコープ情報を推定するステップが、
ジャイロスコープから一連の生のジャイロスコープ測定値を取得するステップと、
前記バッファリングされた一連のジャイロスコープ測定値を取得するために、前記一連の生のジャイロスコープ測定値をバッファリングするステップと
を含む、請求項1に記載の方法。
前記ポーズ角度情報および前記ジャイロスコープ情報を処理するステップが、推定されたジャイロスコープ偏り誤差を導出するステップをさらに含む、請求項1に記載の方法。
前記スケール情報および前記非直交性情報を受信するために前記パラメータ推定モジュールに結合されたジャイロスコープバッファモジュールをさらに含み、前記ジャイロスコープバッファモジュールが、前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を調整するように構成される、請求項13に記載のモバイルデバイス。
前記ジャイロスコープが、前記スケール情報および前記非直交性情報を受信するために前記パラメータ推定モジュールに結合され、前記ジャイロスコープが、前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を較正するようにさらに構成される、請求項13に記載のモバイルデバイス。
前記パラメータ推定モジュールが、最小2乗推定を前記ポーズ角度情報および前記ジャイロスコープ情報に適用することによって、前記複合行列を計算する、請求項17に記載のモバイルデバイス。
前記パラメータ推定モジュールによって導出される前記スケール情報および前記非直交性情報が拡張現実(AR)アプリケーションに入力される、請求項13に記載のモバイルデバイス。
前記回転情報、前記スケール情報、および前記非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための前記手段が、
スケールおよび非直交性行列を導出するように、一連のポーズ角度ベクトルおよび一連のジャイロスコープベクトルを処理するための手段
を含み、前記ポーズ角度情報が、前記一連のポーズ角度ベクトルを含み、
前記ジャイロスコープ情報が、前記一連のジャイロスコープベクトルを含み、
前記スケール情報および前記非直交性情報が、前記スケールおよび非直交性行列を含む
請求項20に記載のモバイルデバイス。
モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスであって、前記モバイルデバイスが、プロセッサとメモリとを含み、前記メモリが、
カメラから一連の画像を受信するための命令と、
ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを前記一連の画像に適用するための命令と、
一連のジャイロスコープ測定値からジャイロスコープ情報を推定するための命令と、
前記モバイルデバイスの前記アプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための命令と
を含み、
前記回転情報、前記スケール情報、および前記非直交性情報を導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための命令が、
前記一連の画像から平行移動行列を決定し、
前記回転情報、前記スケール情報、および前記非直交性情報を計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用する
ための命令を含む、モバイルデバイス。
前記メモリが、前記スケール情報および前記非直交性情報を前記アプリケーションに適用するための命令をさらに含み、前記アプリケーションが拡張現実アプリケーションを含む、請求項28に記載のモバイルデバイス。
【発明を実施するための形態】
【0013】
添付の図面に関する下記の詳細な説明は、本開示の様々な態様の説明として意図されており、本開示が実施され得る唯一の態様を表すことが意図されているわけではない。本開示で説明される各態様は、本開示の単なる例または説明として与えられ、他の態様よりも好適または有利であるとは、必ずしも解釈されるべきではない。発明を実施するための形態は、本開示の完全な理解を提供するために、具体的な詳細を含む。しかし、本開示がこれらの具体的な詳細なしに実施され得ることが、当業者には明らかであろう。場合によっては、本開示の概念を曖昧にするのを回避するために、周知の構造およびデバイスがブロック図の形式で示されている。略語または他の説明のための用語は、単に便宜および明瞭さのために用いられ得るものであり、本開示の範囲を限定することは意図されない。
【0014】
本明細書で使用するモバイルデバイスは、移動局(MS)またはユーザ装置(UE)と呼ばれることがあり、セルラー電話、携帯電話、または他のワイヤレス通信デバイス、パーソナル通信システム(PCS)デバイス、パーソナルナビゲーションデバイス(PND)、個人情報マネージャ(PIM)、携帯情報端末(PDA)、タブレット、ラップトップ、または画像をキャプチャもしくは受信することが可能であり、ジャイロスコープ情報を測定もしくは取得することが可能である他の好適なモバイルデバイスを含み得る。いくつかの実施形態では、移動局は、ワイヤレス通信および/またはナビゲーション信号を受信することが可能である。「移動局」という用語はまた、衛星信号受信、支援データ受信、および/または位置関連処理がそのデバイスでまたはPNDで発生するかどうかにかかわらず、短距離ワイヤレス、赤外線、有線接続、または他の接続などによって、パーソナルナビゲーションデバイス(PND)と通信するデバイスを含むものであることが意図されている。また、「移動局」は、インターネット、WiFi、または他のネットワークなどを介してサーバとの通信が可能である、ワイヤレス通信デバイス、コンピュータ、ラップトップなどを含むすべてのデバイスを、衛星信号受信、支援データ受信、および/または位置に関係する処理がそのデバイスにおいて行われるか、サーバにおいて行われるか、またはネットワークに関連する別のデバイスにおいて行われるかにかかわらずに含むものであることが意図されている。したがって、モバイルデバイスは、たとえば、セルラーまたはWiFi技術を使用して、1つまたは複数の他のデバイスとワイヤレスに通信することができるが、他の実施形態ではそのような機能を省略する場合がある。上記の任意の動作可能な組合せも、「モバイルデバイス」と見なされる。
【0015】
本明細書の教示は、カメラからの一連のカメラ画像およびジャイロスコープからの一連のジャイロスコープ測定値を処理することによって、回転、スケール、および/または非直交性パラメータを生成することを可能にする。回転、スケール、および非直交性パラメータは、拡張現実アプリケーション(ARアプリケーションまたはARアプリと呼ばれる)のために使用され得る。これらの生成されたパラメータは、工場較正または外部の機器を必要とすることなく、スマートフォンまたはタブレットまたは他のモバイルデバイスで見つかるジャイロスコープから内部ジャイロスコープの測定値を調整するためにも使用され得る。較正または調整は、ジャイロスコープ測定値とともにカメラからの一連の画像における追跡特徴からのポーズ測定値のみを使用することができる。
【0016】
ARアプリケーションは、一般的に、人工的な環境のような仮想現実を作成するよりむしろ、現実の世界のシナリオを補うユーザ対話型の体験を提供する。ARにおいて、ユーザの環境は、コンピュータ生成されたグラフィックスおよび他のタイプのアノテーションおよびアニメーションによってオーグメンテーションのために背景を形成することができる。
【0017】
いくつかの実施形態では、(コンピュータビジョンアルゴリズムを通過した一連の画像から生成された)ポーズ、および(生のジャイロスコープ測定値から生成された)一連のジャイロスコープベクトルは、モバイルデバイスのミスアライメントを解決し、ならびに生のジャイロスコープ測定値に関連するスケールおよび非直交性誤差を考慮に入れるために、生のジャイロスコープ測定値を調整するために使用され得る。コンピュータビジョンポーズ(すなわち、ポーズ角度ベクトル(ω
cam))およびジャイロスコープ測定値は、線形システムの解である複合行列(B)によって関係付けられる。
【0018】
複合行列(B)の分解は、QR因数分解(QR分解としても知られる)を含むいくつかの方法によって実行され得る。QR因数分解において、分解は、複合行列(B)を直交回転行列(R
cb)および上三角行列(A)(スケールおよび非直交性行列(A)とも呼ばれる)に分ける。上三角行列(A)は、スケールと非直交性の両方の調整を含み、これは、その後のジャイロスコープ測定値を較正するために使用され得る。
【0019】
いくつかの実施形態では、スケールおよび非直交性パラメータを導出するために、カルマンフィルタ処理が適用され得る。カルマンフィルタ処理では、カルマンフィルタ(たとえば、反復拡張カルマンフィルタ(EKF))は、スケールおよび非直交性行列(A)ならびに回転行列(R
cb)から成る状態空間を推定するために、ジャイロスコープベクトルとともにポーズ角度回転(ω
cam)と平行移動(T)の両方を使用する。回転(ω
cam)に加えてコンピュータビジョンポーズの平行移動(T)を使用して、ARアプリの精度を高めることができる。
【0020】
図1は、開示された実施形態に従って、回転行列(R
cb)、ならびにスケールおよび非直交性行列(A)を生成することが可能な例示的なモバイルデバイス10の簡略化されたブロック図を示す。いくつかの実施形態では、モバイルデバイス10は、例示的なカメラ100およびジャイロスコープ200を含み得、これらはいずれも、例示的なプロセッサ300に結合され得る。カメラ100は、様々な時に一連の画像をキャプチャすることができる。いくつかの実施形態では、カメラ100は、様々な解像度および/またはフレームレートの静止画像およびビデオ画像をキャプチャすることが可能であり得る。
【0021】
いくつかの実施形態では、カメラ100は、カメラ軸に対するターゲットの配向に関する情報を提供することができる、1つまたは複数の較正されたセンサーに結合され得る。これらのセンサーは、限定はしないが、配向センサー、磁界センサーなどを含み得る。カメラ100によってキャプチャされる一連の画像は、プロセッサ300によってアクセス可能なメモリおよび/または画像バッファおよび/またはビデオバッファに記憶され得る。いくつかの実施形態では、カメラ100は、様々な時に別個に画像をキャプチャし、画像をプロセッサに送ることができる。
【0022】
いくつかの実施形態では、プロセッサ300は、カメラ100によってキャプチャされる画像において提供される情報に部分的に基づいてポーズを計算することが可能であり得る。いくつかの実施形態では、プロセッサ300は、カメラ100に結合されたセンサーからの情報を使用することもできる。「ポーズ」という用語は、ターゲットに対するカメラの位置および配向を示すために使用される。たとえば、ターゲットが複数の画像フレームにわたって追跡されるとき、画像フレームのうちの1つが基準フレームとして使用され得、画像シーケンスにおける他のフレームのポーズは、基準フレームに応じて表され得る。画像シーケンスについてのカメラ配向情報は、一連のポーズ角度ベクトル(ω
cam)として表され得る。いくつかの実施形態では、すべてのフレームがポーズ推定値を有し得るとは限らない。たとえば、プロセッサは、フレームをスキップすることができ、断続的なブラックアウト期間もあり得る。
【0023】
3D画像表現では、ポーズ角度ベクトル(ω
cam)は、次元ごとに1つの、3つの成分を含み得る。さらに、プロセッサ300は、カメラ100に結合されるセンサーから取得された情報および一連の画像における特徴を使用して、基準フレームにおけるカメラの位置に対するカメラの平行移動または空間変位を計算することもできる。いくつかの実施形態では、一連の画像中の画像の対ごとの平行移動が平行移動行列(T)に記憶され得る。
【0024】
ジャイロスコープ200は、生の角速度測定値を含み得る一連の生の測定値(ω
gyro-meas)をキャプチャすることができる。後述するように、ジャイロスコープ200は、回転情報を導出するための手段、スケールおよび非直交性行列を受信するための手段、ならびに/またはスケールおよび非直交性行列を使用して一連の生のジャイロスコープ測定値を較正するための手段として働き得る。他の実装形態では、そのような手段を実施するために、ジャイロスコープ200の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。いくつかの実施形態では、生のジャイロスコープ測定値(ω
gyro-meas)は、モバイルデバイス10上のシステムクロックの構成可能な数のクロックサイクルの後および/または一定の時間間隔で提供され得る。いくつかの実施形態では、生の角速度測定値は、たとえば、x、yおよびz軸の各々について1つの、3つの成分を含み得る。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ω
gyromeas)は、プロセッサ300によってアクセスされ得るバッファ(図示せず)に記憶され得る。
【0025】
一般に、プロセッサ300は、中央処理装置(CPU)、マルチコアCPU、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、組込みプロセッサ、デジタル信号プロセッサ(DSP)、またはモバイルデバイス10において動作し、本明細書で開示する機能を実行することが可能な任意の他のプロセッサとすることができる。プロセッサ300は、本明細書で開示する実施形態に従って、モバイルデバイス10に結合されたメモリにおける、ファームウェアにおける、および/またはメディアからのプログラムコードを実行することが可能であり得る。
【0026】
いくつかの実施形態では、プロセッサ300は、一連のジャイロスコープベクトル(ω
gyro)および一連のポーズ角度ベクトル(ω
cam)が時刻同期されるように、一連のジャイロスコープベクトル(ω
gyro)を推定するために、バッファリングされた一連のジャイロスコープ測定値(ω'
gyro-meas)を処理することができる。いくつかの実施形態では、ジャイロスコープベクトルのシーケンス(ω
gyro)は各々、x、yおよびz軸の各々について1つの、3つの成分を含み得る。いくつかの実施形態では、一連の画像および一連のジャイロスコープベクトル(ω
gyro)は、タイムスタンプが付けられ、またはインデックスが付けられて、対応するジャイロスコープベクトル(ω
gyro)を有する画像とのポーズ角度ベクトル(ω
cam)の関連付けを可能にすることができる。
【0027】
生のジャイロスコープ測定値(ω
gyro-meas)は、一般的に、誤差の欠陥がある。たとえば、ジャイロスコープ200の軸は、少量だけ互いに対して非直交であり得、このことは、生の角速度測定値(ω
gyro-meas)の精度に影響を及ぼし、非直交性誤差をもたらし得る。さらに、たとえばジャイロスコープ200などのジャイロスコープも、たとえば偏りおよびスケール誤差など他の決定論的な誤差を呈し得る。たとえば、ジャイロスコープ200が何らかの生のゼロ以外のジャイロスコープ(角速度)測定値(ω
gyro-meas=ω
bias≠0)を示したとき、ジャイロスコープ200が事実上回転していない(ω
true=0)とき、ジャイロスコープ偏り誤差(ω
bias)が生じ得、この場合、ω
trueは、真のジャイロスコープ(角速度)測定値である。偏りの補正の後、ジャイロスコープ200は、生のジャイロスコープ(角速度)測定値(ω
gyro-meas、この場合、ω
gyro-meas=αω
true)を示した場合、「α」は、スケール係数またはスケール誤差と呼ばれる。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ω
gyro-meas)は、バッファへの記憶の前に処理され得る。
【0028】
いくつかの実施形態では、プロセッサ300は、一連のポーズ角度ベクトル(ω
cam)、および一連のジャイロスコープベクトル(ω
gyro)を使用して、直交回転行列R
cbならびに/またはスケールおよび非直交性行列(A)を計算することができる。いくつかの実施形態では、
図1の破線の矢印によって示されるように、プロセッサ300によって、偏り誤差(ω
bias)も随意に推定され得る。いくつかの実施形態では、スケールおよび非直交性行列(A)は、スケールと非直交性の両方の調整を含み、これは、その後のジャイロスコープ測定値を較正するために使用され得る。いくつかの実施形態では、スケールおよび非直交性の調整またはパラメータ、ならびに随意に偏り誤差ω
biasは、ジャイロスコープ200によって測定値を調整するために使用され得、および/またはたとえばARアプリケーションなどのアプリケーションに提供され得る。モバイルデバイス10は、示されていない追加要素を含み得る。たとえば、モバイルデバイス10は、たとえば本明細書で説明するパラメータに基づいて、オーグメンテーションなどを決定し、それらのオーグメンテーションおよび画像をディスプレイに表示させるために、入力要素、他のセンサー、ワイヤレス通信手段、ディスプレイ、および/またはモジュールを含み得る。
【0029】
図2は、開示された実施形態に従って、プロセッサ300を含み、プロセッサに結合された他のモジュールを示す例示的なモバイルデバイス10のブロック図である。一般に、示したモジュールは、ハードウェア、ソフトウェア、および/またはファームウェアの何らかの組合せによって実施され得る。
【0030】
図2に示すように、プロセッサ300に結合された例示的なコンピュータビジョン(CV)モジュール310に、カメラ100によってキャプチャされた一連の画像が入力され得る。いくつかの実施形態では、CVモジュール310は、画像シーケンスにおける画像を参照画像として選択し、参照画像に対する画像シーケンスにおける画像ごとのポーズ角度ベクトル(ω
cam)またはポーズ角度情報を計算することができる。たとえば、画像シーケンスにおける第1の画像が参照画像として選択され、他の画像のポーズ角度ベクトル(ω
cam)が、参照の第1の画像に対して計算され得る。さらに、いくつかの実施形態では、CVモジュール310は、一連の画像の平行移動行列(T)を計算することもできる。さらに、いくつかの実施形態では、CVモジュール310は、角速度(AV)モジュール320にカメラフレームレート同期信号350を出力することができ、これは、画像シーケンスにおけるキャプチャされたフレームに角速度測定値を同期させるために使用され得る。したがって、CVモジュール310は、カメラから一連の画像を受信するための手段、および/または一連のポーズ角度ベクトルを生成するためにコンピュータビジョンアルゴリズムを一連の画像に適用するための手段として働き得る。AVモジュール320は、バッファリングされた一連のジャイロスコープ測定値から一連のジャイロスコープベクトルを推定するための手段として働き得る。いくつかの実施形態では、一連のジャイロスコープベクトルおよび一連のポーズ角度ベクトルが同期される。他の実施形態では、そのような手段を実施するために、CVモジュール310および/またはAVモジュール320の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。
【0031】
いくつかの例では、CVモジュール310は、視覚ターゲットを検出し、ポーズを確立するための検出ステップを最初に実行することができ、その後で、追跡アルゴリズムがポーズを更新することができる。いくつかの実施形態では、検出および追跡ステップは、リアルタイムで稼働され得る。追跡ステップでは、各フレームにおいて、1組の特徴点の位置が計算され得る。たとえば、カメラ100によってキャプチャされる2つの別々の画像フレームにおける現実世界の特徴の識別および位置は、特徴一致を得ることができ、これは、ターゲットを追跡し、フレーム間のポーズを推定するために使用され得る。
【0032】
さらに、ジャイロスコープ200は、一連の生のジャイロスコープ測定値(ω
gyro-meas)をキャプチャすることができ、これは、例示的なジャイロスコープバッファモジュール340によってバッファリングされ得る。ジャイロスコープバッファモジュール340は、ジャイロスコープからの一連の生のジャイロスコープ測定値に基づいてバッファリングされた一連のジャイロスコープ測定値を提供するための手段として働き得る。後述するように、ジャイロスコープバッファモジュール340は、スケールおよび非直交性行列を受信するための手段、ならびに/またはスケールおよび非直交性行列を使用して一連の生のジャイロスコープ測定値を調整するための手段として働き得る。他の実装形態では、そのような手段を実施するために、ジャイロスコープバッファモジュール340の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。いくつかの実施形態では、バッファリングされた一連のジャイロスコープ測定値(ω'
gyro-meas)は、例示的なAVモジュール320に出力され得、これは、一連のポーズ角度ベクトル(ω
cam)に同期される一連のジャイロスコープベクトル(ω
gyro)を生成するために、カメラフレームレート同期信号350を使用することができる。
【0033】
いくつかの実施形態では、CVモジュール310によって計算された平行移動行列(T)、および一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報は、例示的なパラメータ推定モジュール330に入力され得る。パラメータ推定モジュール330は、スケール情報および非直交性情報を導出するために、一連のポーズ角度ベクトルおよび一連のジャイロスコープベクトルを処理するための手段として働き得る。パラメータ推定モジュール330は、拡張現実(AR)アプリケーションにスケール情報および非直交性情報を転送するための手段としても働き得る。他の実施形態では、そのような手段を実施するために、パラメータ推定モジュール330の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。
【0034】
さらに、パラメータ推定モジュール330は、AVモジュール320から一連のジャイロスコープベクトル(ω
gyro)またはジャイロスコープ情報を受信することもでき、一連のジャイロスコープベクトル(ω
gyro)またはジャイロスコープ情報は、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報に同期される。パラメータ推定モジュール330は、直交回転行列(R
cb)、スケールおよび非直交性行列(A)またはスケール情報および非直交性情報、ならびに随意にジャイロスコープ偏り誤差(ω
bias)を計算するために、受信した入力を使用することができる。いくつかの実施形態では、回転行列R
cb、スケールおよび非直交性行列(A)、ならびに/またはジャイロスコープ偏り誤差(ω
bias)は、たとえばARアプリケーションなどのアプリケーションに入力され得る。いくつかの実施形態では、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)またはスケール情報および非直交性情報は、(破線によって示すように)ジャイロスコープバッファモジュールに入力され、バッファリングされた一連のジャイロスコープ測定値(ω'
gyromeas)を調整するために使用され得る。
【0035】
図3は、例示的なパラメータ推定モジュール330のいくつかの機能を詳述するブロック図を示す。パラメータ推定モジュール330は、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報、および一連のジャイロスコープベクトル(ω
gyro)またはジャイロスコープ情報を入力として受信することができる。
【0036】
ジャイロスコープは一般的にスケールおよび非直交性誤差を有するので、これらの誤差の推定および補正は、ジャイロスコープ測定値からカメラ本体角速度測定値の取得を容易にする。いくつかの実施形態では、例示的な最小2乗推定(LSE)モジュール332は、後述するように、一連のポーズ角度ベクトル(ω
cam)および対応するバッファリングされた一連のジャイロスコープ測定値(ω
gyro-meas)を使用して、複合行列Bを計算することができる。
【0037】
測定値間の関係は、以下のように表される。
ω
gyro=Aω
gyro-meas
ω
cam=R
cbAω
gyro-meas=Bω
gyro-meas
【0038】
これは、一般的な複合行列を解く線形最小2乗推定問題である。
B=R
cb・A
これは、以下の目的関数を最小にする。
【0040】
式中、ω
cam(t)は、時刻tの一連のポーズ角度ベクトルであり、ω
gyro(t)は、対応する一連のジャイロスコープ測定値であり、arg minは、最小の引数を表し、これは、所与の目的関数がその最小値を獲得するための所与の引数のポイントの組である。Bは、式4を使用して決定され得、これは、解が線形システムである二次最適化問題である。
【0041】
BがLSEモジュール332によってひとたび計算されると、複合行列Bは、例示的なQR因数分解モジュール334に入力され得る。いくつかの実施形態では、次いで、式3は、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)を取得するためにQR分解を使用してBを分解することによって、QR因数分解モジュール334によって解かれ得る。上述のように、いくつかの実施形態では、直交回転行列(R
cb)ならびに/またはスケールおよび非直交性行列(A)がARアプリケーションに入力され得る。いくつかの実施形態では、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)は、生の一連のジャイロスコープ測定値(ω
gyro-meas)を調整するために使用され得る。
【0042】
いくつかの実施形態では、平行移動情報が入力された場合、カメラとジャイロセンターとの間の変位またはオフセットの推定値が、パラメータ推定モジュール330によって無視され得るように、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)を計算するために、平行移動情報は、パラメータ推定モジュール330によって使用されない場合がある。他の実施形態では、パラメータ推定モジュール330は、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)を計算するために、平行移動情報を使用しない場合、CVモジュール310は、平行移動行列(T)を計算しない場合がある。
【0043】
図4は、式3に示すように、複合行列(B)410と直交回転行列(R
cb)420とスケールおよび非直交性行列(A)430との間の関係を示す。いくつかの実施形態では、スケールおよび非直交性行列(A)430は、上三角行列としてモデル化され得る。上三角スケールおよび非直交性行列(A)の対角要素は、3つの軸のスケールパラメータであり、非対角要素は非直交性パラメータである。複合行列B 410を取得した後、式3は、たとえばQR因数分解モジュール334などによってQR分解技法を使用して複合行列B 410を分解することによって、直交回転行列(R
cb)420ならびにスケールおよび非直交性行列(A)430について解かれ得る。
【0044】
図5は、たとえばモバイルデバイス10などモバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスにおける方法を示す。たとえば、アプリケーションは、拡張現実アプリケーションでもよい。いくつかの実施形態では、
図5に示した方法は、モバイルデバイスにおいて実施され得る。450で、たとえばプロセッサ300または他のコンピューティング要素などのプロセッサは、たとえばカメラ100などのカメラから、一連の画像を受信することができる。460で、プロセッサは、ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用することができる。いくつかの実施形態では、460は、CVモジュール310によって実行され、および/または実施される。470で、プロセッサは、たとえばジャイロスコープ200など一連のジャイロスコープ測定値からジャイロスコープ情報を推定することができる。ジャイロスコープ情報およびポーズ角度情報は同期され得る。いくつかの実施形態では、470は、ジャイロスコープバッファモジュール340および/またはAVモジュール320によって実行され、および/または実施される。
【0045】
480で、プロセッサは、アプリケーションとともに使用するための(1)回転情報、(2)スケール情報、および(3)非直交性情報のうちの少なくとも2つを導出するように、ポーズ角度情報およびジャイロスコープ情報を処理し得る。いくつかの実施形態では、480は、パラメータ推定モジュール330、最小2乗推定モジュール332、QR因数分解モジュール334、および/またはカルマンフィルタ326によって実行され、および/または実施される。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、ポーズ角度情報およびジャイロスコープ情報から複合行列を計算することと、複合行列を回転行列ならびにスケールおよび非直交性行列に分解することとを含み、スケール情報および非直交性情報は、スケールおよび非直交性行列を含む。いくつかの例では、複合行列を計算することは、最小2乗推定をポーズ角度情報およびジャイロスコープ情報に適用することを含む。いくつかの例では、複合行列を分解することは、QR因数分解を複合行列に適用することを含む。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、推定されたジャイロスコープ偏り誤差を導出することをさらに含み得る。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、一連の画像から平行移動行列を決定することと、回転情報、スケール情報、および非直交性情報を計算するためにポーズ角度情報、平行移動行列、およびジャイロスコープ情報をカルマンフィルタに適用することとを含む。ポーズ角度情報は、一連のポーズ角度ベクトルでもよい。いくつかの実施形態では、
図5に示した機能のうちの1つまたは複数は、省略され、置き換えられ、および/または再配列され得る。たとえば、いくつかの実施形態では、470は省略される。そのような実施形態では、ポーズ角度情報およびジャイロスコープ測定値は、480で処理され得る。いくつかの実施形態では、ジャイロスコープ情報は、別のデバイス、構成要素、および/または要素で推定され得る。
図5に示した方法の他の改変は、いくつかの実施形態において実施され得る。
【0046】
図6は、開示された実施形態に従って、QR因数分解を使用して、一連の画像および一連のジャイロスコープ測定値から回転行列(R
cb)、ならびにスケールおよび非直交性行列(A)を導出する例示的な方法500を示すフローチャートを示す。いくつかの実施形態では、方法500は、モバイルデバイス上で実施され得る。
【0047】
いくつかの実施形態では、ステップ505で、一連の画像がキャプチャされ得る。たとえば、カメラ100は、一連の画像をキャプチャすることができる。次に、ステップ510で、一連の画像を処理し、たとえば、CVモジュール310によって、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報を取得するために、コンピュータビジョンベースのアルゴリズムが適用され得る。
【0048】
画像シーケンスのキャプチャ(ステップ505)と同時に、ステップ520において一連の生のジャイロスコープ測定値(ω
gyro-meas)がキャプチャされ得る。たとえば、ジャイロスコープ200は、カメラ100が一連の画像をキャプチャしている期間の間に、一連の生のジャイロスコープ測定値(ω
gyro-meas)をキャプチャすることができる。ステップ530で、バッファリングされた一連のジャイロスコープ測定値ベクトル(ω'
gyromeas)またはジャイロスコープ情報は、たとえば、ジャイロスコープバッファモジュール340によって、一連の生のジャイロスコープ測定値(ω
gyromeas)から取得され得る。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ω
gyromeas)は、バッファへの記憶の前に処理され得る。次に、ステップ535で、一連のジャイロスコープベクトル(ω
gyro)および一連のポーズ角度ベクトル(ω
cam)が時刻同期するように、たとえば、バッファリングされた一連のジャイロスコープ測定値(ω'
gyromeas)を使用してAVモジュール320によって、一連のジャイロスコープベクトル(ω
gyro)が決定され得る。
【0049】
ステップ540で、複合行列(B)は、たとえばパラメータ推定モジュール330によって、一連のポーズ角度ベクトル(ポーズ角度情報)(ω
cam)および一連のジャイロスコープベクトル(ジャイロスコープ情報)(ω
gyro)から計算され得る。いくつかの実施形態では、複合行列(B)は、式4を使用して計算され得る。
【0050】
次に、ステップ550で、回転行列(R
cb)ならびにスケールおよび非直交性行列(A)を取得するために、QR因数分解を使用して、複合行列(B)が分解され得、この場合、回転行列(R
cb)ならびにスケールおよび非直交性行列(A)は、出力パラメータである。たとえば、式3は、たとえばQR因数分解モジュール334によるなど、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)を取得するためにQR分解を使用してBを分解することによって解かれ得る。
【0051】
ステップ560で、いくつかの実施形態では、
図2および
図3に示すように、直交回転行列(R
cb)ならびに/またはスケールおよび非直交性行列(A)が随意にARアプリケーションに入力され得る。
【0052】
ステップ570で、
図2(点線)に示すように、生の一連のジャイロスコープ測定値(ω
gyromeas)を調整するために、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)が随意に使用され得る。たとえば、ジャイロスコープバッファモジュール340で、バッファリングされた一連のジャイロスコープ測定値(ω'
gyromeas)を調整する機能への入力として、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)、さらに随意に偏り誤差ω
biasが随意に使用され得る。
【0053】
図7は、開示された実施形態に従って、追加の例示的なパラメータ推定モジュールのブロック図を示す。
図7に示すように、パラメータ推定モジュール330は、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ω
gyro)またはジャイロスコープ情報を入力として受信することができる。いくつかの実施形態では、パラメータ推定モジュール330は、入力された一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ω
gyro)またはジャイロスコープ情報を受信することができるカルマンフィルタ326を含み得る。次いで、カルマンフィルタ326は、直交回転行列(R
cb)ならびにスケールおよび非直交性行列(A)、さらに随意に偏り誤差ω
biasを計算することができる。カルマンフィルタは、当技術分野ではよく知られている。いくつかの実施形態では、カルマンフィルタ326は、さらに以下で説明するように、反復拡張カルマンフィルタ(EKF)の形をとることができる。
【0054】
図8は、モバイルデバイスにおける様々なパラメータ間の関係を表す1組の式を示す図である。いくつかの実施形態では、式によって表される関係は、モバイルデバイス10によって行われる測定から、回転行列(R
cb)ならびにスケールおよび非直交性行列(A)、さらに随意に偏り誤差ω
biasを導出するために、例示的なEKFによって使用され得る。モバイルデバイスの様々なセンサーパラメータ間の関係の数学的説明およびモデルは、以下の文書で見つかり得る。「Vision Inertial Integration: Hybrid VINS」January 2011、Stefano Soatto(以下「Soatto」)および「Visual-Inertial Navigation, Localization and Mapping: A Scalable Real-time Large Scale Approach」、International Journal of Robotics Research、Eagle Jones and Stefano Soatto(以下「Jones」)。これらの全体は参照により本明細書に組み込まれる。関係を表すために使用されるパラメータおよびパラメータに関係する式は、概説されており、一般的な用語で以下に簡単に説明される。
【0055】
下付き文字「cb」は、較正パラメータを示すために使用される。これらのパラメータの一部は、較正ステージで推定されていると仮定され、EKFの動作の間、不変であると仮定され得る。下付き文字「sb」は、空間座標系に対するジャイロスコープの配向に関係するパラメータを示すために使用される。
【0056】
モデルダイナミクスの離散項バージョン(時刻「t」のパラメータの値を時刻「t+dt」のその値に関連付ける)は、以下でさらに説明するように、本体の配向のダイナミクスを決定するために使用され得る。カメラ-ジャイロスコープ間の回転アライメントは、以下によって示され、
【0058】
2つのセンサー間のオフセットは、「T
cb」によって示される。したがって、ジョーンズモデルを使用して、
【0062】
について、式は、以下のように書かれ得る。
【0064】
一般的に、ジャイロスコープ読取値は、角速度ω(t)および加速度a(t)の測定値を含み得る。角速度および加速度のダイナミクスは、以下の式7および式8に示される。
ω(t+dt)=ω(t)+n
w(t)
a(t+dt)=a(t)+n
a(t)
【0065】
式中、n
ω(t)およびn
a(t)は、ジャイロスコープ角速度および加速度の読取値における白色雑音をそれぞれモデル化する。
【0066】
T
sb(t)およびv(t)は、それぞれ、空間座標系に対してジャイロスコープによって行われた測定値から導出された位置および速度を示すとする。さらに、Υ(t)は、空間座標系における重力ベクトルを表し、n
Υ(t)は、重力推定における白色雑音をモデル化し、ω
bias(t)およびa
bias(t)は、状態パラメータとして推定されるゆっくり変化するジャイロスコープおよび加速度偏り誤差を表すとする。次いで、位置(変位)、速度、および重力のダイナミクスは、それぞれ、式9、式10、および式11に示される。
【0068】
式5〜式12は、モバイルデバイスにおける様々なセンサーで測定され、および/または関連付けられたパラメータに関する一般的なモデルを表し、モバイルデバイス10におけるジャイロスコープ200のスケールおよび非直交性とともに回転アライメントを推定するためのモデルを導出するためにEKFで使用され得る。具体的には、ジャイロスコープ200およびカメラ100の測定値に関する測定の式は、回転および平行移動フィルタと類似しており、以下で再現される。
【0070】
式中、Aは、上三角としてモデル化されるスケールおよび非直交性行列であり、ω
'gyro-meas(t)は、時刻tにおけるバッファリングされた一連のジャイロスコープ測定値、および一連のポーズ角度ベクトルであり、ω
cam(t
k)は、Ω
cam(t
k)の導関数である。Ω
cam(t
k)は、回転行列のための指数座標に関する式を使用して、ω
cam(t
k)から計算され得る。Aの対角要素は、3つの軸のスケールパラメータであり、非対角要素は非直交性パラメータである。スケールおよび非直交性パラメータが較正の間不変であると仮定されるので、式13は、スケールおよび非直交性行列Aについての一定のダイナミクスを仮定する。
【0071】
上記の式13〜式15で、カメラ-ジャイロスコープ間の回転アライメントΩ
cbならびにスケールおよび非直交性行列Aは未知のパラメータであり、問題は、フィルタ処理問題に変換するパラメータ同定の1つである。アライメント、スケール、および非直交性パラメータは、較正の間変わらず、これは、上記の式で反映され、ここでは、Ω
cbならびにスケールおよび非直交性行列Aの発展形のノイズはゼロである。さらに、直交回転行列R
cbは、Ω
cbの指数関数であり、ここでは、指数関数は、よく知られているロドリゲスの回転式を使用して取得され得る。
【0072】
いくつかの実施形態では、上記の式13〜式15を使用した再帰的解法は、たとえば、カルマンフィルタ326によって計算され得る。フィルタは、Ω
cbおよびAの最初の推定値で初期化され、これは、最初に仕様書から得られ、またはさもなければ推定され得る。いくつかの例では、ジャイロスコープ偏り誤差(ω
bias(t))は、未知である場合がある。しかしながら、偏り誤差は、経時的に一定と仮定され得るので、カルマンフィルタ326によって推定され得る。
【0073】
図9は、開示された実施形態に従って、カルマンフィルタを使用して、一連の画像および一連のジャイロスコープ測定値から回転行列(R
cb)、ならびにスケールおよび非直交性行列(A)を導出するための例示的な方法800を示すフローチャートを示す。いくつかの実施形態では、カルマンフィルタは、EKFの形をとることができる。
【0074】
いくつかの実施形態では、
図9の方法800は、モバイルデバイス上で実施され得る。いくつかの実施形態では、ステップ505で、一連の画像がキャプチャされ得る。たとえば、カメラ100は、一連の画像をキャプチャすることができる。次に、ステップ515で、一連の画像を処理し、たとえば、CVモジュール310によって、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報および平行移動行列(T)を取得するために、コンピュータビジョンベースのアルゴリズムが適用され得る。
【0075】
ステップ520、530、および535は、同時に行われてもよく、
図6に関して説明されている。ステップ545で、回転行列(R
cb)ならびにスケールおよび非直交性行列(A)、ならびに随意にジャイロスコープ偏り誤差(ω
bias)は、一連のポーズ角度ベクトル(ω
cam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ω
gyromeas)またはジャイロスコープ情報をカルマンフィルタに適用することによって計算され得、この場合、一部、上記の式13〜式15と連動して反復技法を使用することができる。いくつかの実施形態では、Ω
cam(t
k)は、回転行列のための指数座標に関する式を使用して、ω
cam(t
k)から計算され得る。ステップ560および570も、
図6に関して上記で説明されている。
【0076】
回転行列(R
cb)ならびに/またはスケールおよび非直角行列(A)は、ARアプリケーションへの入力として使用され得る。たとえば、ARアプリケーションは、(1)回転行列(R
cb)、(2)スケール情報、および(3)非直交性情報のうちの1つ、2つまたは全3つを使用して、生のジャイロスコープ測定値(ω
gyro-meas)を前処理し、および/または、カメラ100の基準フレームにおけるカメラ角速度を取得することができる。スケール情報および非直交性情報はいずれも、スケールおよび非直交性行列(A)内とすることができる。これらの角速度は、時間間隔におけるカメラ100(および/またはモバイルデバイス10)の漸進的回転を決定するために、時間間隔にわたって集積され得る。これによって、ARアプリケーションは、カメラ100および/またはモバイルデバイス10が表示された画像で見つかる特徴または対象に対して移動するかどうか、および/またはどのように移動するかを決定することができる。このように、ARアプリケーションは、表示されるオーグメンテーションおよび/または示されるオーグメンテーションを修正する方法を決定することができる。
【0077】
「いくつかの実施形態では」および「たとえば」という句は、最善の例ではなく、単なる例を意味し得る。本明細書に記載された方法は、用途に応じて様々な手段によって実施され得る。たとえば、コンピュータビジョンアルゴリズムを適用するための要素は、CVモジュール310またはコンピュータビジョンアルゴリズムを適用するための他の手段を含み得る。たとえば、これらの方法は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組合せで実装され得る。ハードウェア実装形態の場合、たとえばプロセッサ300などの処理ユニットは、本明細書で説明する機能を実行するように設計された、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、他の電子ユニット、あるいはそれらの組合せ内で実現されてもよい。たとえばモジュール310〜340など、本明細書に記載されるモジュールのうちのいずれも、ハードウェアで同様に実装され得る。
【0078】
ファームウェアおよび/またはソフトウェアの実装形態の場合、これらの方法は、本明細書に記載された機能を実行するモジュール(たとえば、プロシージャ、関数など)で実装され得る。本明細書で説明された方法を実施するとき、命令を有形に具現化する任意の機械可読媒体が用いられてもよい。たとえば、ソフトウェアコードはメモリに記憶され、プロセッサユニットにより実行され得る。したがって、方法500、800、および/または
図5に示した方法のいずれかは、機械可読媒体および/または様々なモジュールによって実装され得る。同様に、モジュール310〜340のいずれかは、機械可読媒体上のファームウェアおよび/またはソフトウェアにおいて同様に実装され得る。メモリは、プロセッサユニット内で実装されてよく、またはプロセッサユニットの外部で実装されてよい。本明細書では、「メモリ」という用語は、長期メモリ、短期メモリ、揮発性メモリ、不揮発性メモリ、または他のメモリのいずれかの種類を指し、メモリのいかなる特定の種類またはメモリの数、またはメモリが記憶される媒体の種類について限定されない。
【0079】
機能は、ファームウェアおよび/またはソフトウェアに実装する場合、コンピュータ可読媒体に1つまたは複数の命令またはコードとして記憶され得る。複数の例が、データ構造によって符号化されたコンピュータ可読媒体およびコンピュータプログラムによって符号化されたコンピュータ可読媒体を含む。コンピュータ可読媒体は、物理的なコンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体である可能性がある。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは、所望のプログラムコードを命令またはデータ構造の形で記憶するのに使用することができ、かつコンピュータまたは任意の他の形の非一時的媒体からアクセスすることのできる任意の他の媒体を含むことができ、本明細書で使用されるディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピィーディスク、およびブルーレイディスクが含まれ、このうちディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)はデータをレーザによって光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲の中に含まれるべきである。
【0080】
コンピュータ可読媒体に記憶するのに加えて、命令および/またはデータは、通信装置に含まれる伝送媒体上の信号として提供され得る。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含むことができる。命令およびデータは、1つまたは複数のプロセッサに特許請求の範囲で概説される機能を実装させるように構成される。すなわち、通信装置は、開示される機能を実行するための情報を示す信号を有する伝送媒体を含む。第1の時間において、通信装置中に含まれる伝送媒体は、開示する機能を実行するための情報の第1の部分を含んでよく、一方、第2の時間において、通信装置中に含まれる伝送媒体は、開示する機能を実行するための情報の第2の部分を含んでよい。
【0081】
開示される態様の上記の説明は、任意の当業者が本開示を作製または使用できるようにするために提供される。これらの態様への様々な修正が当業者には容易に明らかになることになり、本明細書に定義する一般的な原理は、本開示の趣旨や範囲を逸脱することなしに他の態様に適用され得る。