(57)【特許請求の範囲】
【請求項１】
モバイルデバイスのアプリケーションのためのパラメータを生成するための前記モバイルデバイスにおける方法であって、
カメラから一連の画像を受信するステップと、
ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを前記一連の画像に適用するステップと、
一連のジャイロスコープ測定値からジャイロスコープ情報を推定するステップと、
(1)回転情報、(2)スケール情報、および(3)非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するステップと
を含み、
(1)前記回転情報、(2)前記スケール情報、および(3)前記非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するステップが、
前記一連の画像から平行移動行列を決定するステップと、
前記アプリケーションとともに使用するための(1)前記回転情報、(2)前記スケール情報、および(3)前記非直交性情報のうちの少なくとも2つを計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用するステップと
を含む、方法。
【請求項２】
前記ジャイロスコープ情報および前記ポーズ角度情報が同期される、請求項1に記載の方法。
【請求項３】
前記スケール情報または前記非直交性情報のうちの少なくとも1つを使用して、一連の生のジャイロスコープ測定値を調整することによって、前記一連のジャイロスコープ測定値を提供するステップをさらに含む請求項1に記載の方法。
【請求項４】
前記アプリケーションに前記スケール情報および前記非直交性情報のうちの少なくとも1つを適用するステップ
をさらに含む、請求項1に記載の方法。
【請求項５】
前記ポーズ角度情報および前記ジャイロスコープ情報を処理するステップが、
前記ポーズ角度情報および前記ジャイロスコープ情報から複合行列を計算するステップと、
複合行列を回転行列ならびにスケールおよび非直交性行列に分解するステップと
を含み、前記スケール情報および前記非直交性情報が、前記スケールおよび非直交性行列を含む
請求項1に記載の方法。
【請求項６】
前記複合行列を計算するステップが、最小2乗推定を前記ポーズ角度情報および前記ジャイロスコープ情報に適用するステップを含む、請求項5に記載の方法。
【請求項７】
前記複合行列を分解するステップが、QR因数分解を前記複合行列に適用するステップを含む、請求項5に記載の方法。
【請求項８】
前記ポーズ角度情報が、一連のポーズ角度ベクトルを含む、請求項1に記載の方法。
【請求項９】
前記一連のジャイロスコープ測定値が、バッファリングされた一連のジャイロスコープ測定値を含み、前記一連のジャイロスコープ測定値から前記ジャイロスコープ情報を推定するステップが、
ジャイロスコープから一連の生のジャイロスコープ測定値を取得するステップと、
前記バッファリングされた一連のジャイロスコープ測定値を取得するために、前記一連の生のジャイロスコープ測定値をバッファリングするステップと
を含む、請求項1に記載の方法。
【請求項１０】
前記ジャイロスコープ情報が、一連のジャイロスコープベクトルを含む、請求項9に記載の方法。
【請求項１１】
前記アプリケーションが拡張現実アプリケーションを含む、請求項1に記載の方法。
【請求項１２】
前記ポーズ角度情報および前記ジャイロスコープ情報を処理するステップが、推定されたジャイロスコープ偏り誤差を導出するステップをさらに含む、請求項1に記載の方法。
【請求項１３】
モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスであって、
一連の画像を提供するように構成されたカメラと、
一連のジャイロスコープ測定値を生成するように構成されたジャイロスコープと、
前記カメラおよび前記ジャイロスコープに結合されたプロセッサであり、前記プロセッサが、
前記カメラから前記一連の画像を受信するために結合されたコンピュータビジョンモジュールであり、前記一連の画像に基づいて、ポーズ角度情報を生成するコンピュータビジョンモジュールと、
前記一連のジャイロスコープ測定値からジャイロスコープ情報を生成するための角速度モジュールと、
前記コンピュータビジョンモジュールから前記ポーズ角度情報を受信するために結合され、前記角速度モジュールから前記ジャイロスコープ情報を受信するために結合されたパラメータ推定モジュールであり、回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するパラメータ推定モジュールと
を含み、
前記パラメータ推定モジュールが、
前記一連の画像から平行移動行列を決定し、
前記モバイルデバイスの前記アプリケーションとともに使用するための前記回転情報、前記スケール情報、および前記非直交性情報のうちの少なくとも2つを計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用する
ことによって、前記スケール情報および前記非直交性情報を導出する、モバイルデバイス。
【請求項１４】
前記スケール情報および前記非直交性情報を受信するために前記パラメータ推定モジュールに結合されたジャイロスコープバッファモジュールをさらに含み、前記ジャイロスコープバッファモジュールが、前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を調整するように構成される、請求項13に記載のモバイルデバイス。
【請求項１５】
前記ジャイロスコープが、前記スケール情報および前記非直交性情報を受信するために前記パラメータ推定モジュールに結合され、前記ジャイロスコープが、前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を較正するようにさらに構成される、請求項13に記載のモバイルデバイス。
【請求項１６】
前記パラメータ推定モジュールが回転情報をさらに導出する、請求項13に記載のモバイルデバイス。
【請求項１７】
前記パラメータ推定モジュールが、
前記ポーズ角度情報および前記ジャイロスコープ情報から複合行列を計算し、
前記複合行列を回転行列ならびにスケールおよび非直交性行列に分解することであり、前記スケール情報および前記非直交性情報が、前記スケールおよび非直交性行列を含む
ことによって、前記スケール情報および前記非直交性情報を導出する、請求項13に記載のモバイルデバイス。
【請求項１８】
前記パラメータ推定モジュールが、最小2乗推定を前記ポーズ角度情報および前記ジャイロスコープ情報に適用することによって、前記複合行列を計算する、請求項17に記載のモバイルデバイス。
【請求項１９】
前記パラメータ推定モジュールによって導出される前記スケール情報および前記非直交性情報が拡張現実(AR)アプリケーションに入力される、請求項13に記載のモバイルデバイス。
【請求項２０】
モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスであって、
カメラから一連の画像を受信するための手段と、
ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを前記一連の画像に適用するための手段と、
一連のジャイロスコープ測定値からジャイロスコープ情報を推定するための手段と、
回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための手段と
を含み、
前記処理するための手段が、
前記一連の画像から平行移動行列を決定するための手段と、
前記モバイルデバイスの前記アプリケーションとともに使用するための前記回転情報、前記スケール情報、および前記非直交性情報のうちの少なくとも2つを計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用するための手段と
を含む、モバイルデバイス。
【請求項２１】
前記スケール情報、前記スケール情報および前記非直交性情報が、スケールおよび非直交性行列を含む、請求項20に記載のモバイルデバイス。
【請求項２２】
前記回転情報、前記スケール情報、および前記非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための前記手段が、
スケールおよび非直交性行列を導出するように、一連のポーズ角度ベクトルおよび一連のジャイロスコープベクトルを処理するための手段
を含み、前記ポーズ角度情報が、前記一連のポーズ角度ベクトルを含み、
前記ジャイロスコープ情報が、前記一連のジャイロスコープベクトルを含み、
前記スケール情報および前記非直交性情報が、前記スケールおよび非直交性行列を含む
請求項20に記載のモバイルデバイス。
【請求項２３】
前記スケール情報および前記非直交性情報を受信するための手段と、
前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を調整するための手段と
をさらに含む請求項20に記載のモバイルデバイス。
【請求項２４】
前記スケール情報および前記非直交性情報を受信するための手段と、
前記スケール情報および前記非直交性情報を使用して一連の生のジャイロスコープ測定値を較正するための手段と
をさらに含む請求項20に記載のモバイルデバイス。
【請求項２５】
回転情報を導出するための手段をさらに含む、請求項20に記載のモバイルデバイス。
【請求項２６】
前記スケール情報および前記非直交性情報を導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための前記手段が、
前記ポーズ角度情報および前記ジャイロスコープ情報から複合行列を計算するための手段と、
前記複合行列を回転行列ならびにスケールおよび非直交性行列に分解するための手段と
をさらに含み、前記スケール情報および前記非直交性情報が、前記スケールおよび非直交性行列を含む
請求項20に記載のモバイルデバイス。
【請求項２７】
前記スケール情報および前記非直交性情報を拡張現実(AR)アプリケーションに転送するための手段をさらに含む、請求項20に記載のモバイルデバイス。
【請求項２８】
モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスであって、前記モバイルデバイスが、プロセッサとメモリとを含み、前記メモリが、
カメラから一連の画像を受信するための命令と、
ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを前記一連の画像に適用するための命令と、
一連のジャイロスコープ測定値からジャイロスコープ情報を推定するための命令と、
前記モバイルデバイスの前記アプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための命令と
を含み、
前記回転情報、前記スケール情報、および前記非直交性情報を導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するための命令が、
前記一連の画像から平行移動行列を決定し、
前記回転情報、前記スケール情報、および前記非直交性情報を計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用する
ための命令を含む、モバイルデバイス。
【請求項２９】
前記メモリが、前記スケール情報および前記非直交性情報を前記アプリケーションに適用するための命令をさらに含み、前記アプリケーションが拡張現実アプリケーションを含む、請求項28に記載のモバイルデバイス。
【請求項３０】
モバイルデバイスのアプリケーションのためのパラメータを生成するためのプログラムコードを記憶した非一時的コンピュータ可読記憶媒体であって、前記プログラムコードが、
カメラから一連の画像を受信するためのプログラムコードと、
ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを前記一連の画像に適用するためのプログラムコードと、
一連のジャイロスコープ測定値からジャイロスコープ情報を推定するためのプログラムコードと、
回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するように、前記ポーズ角度情報および前記ジャイロスコープ情報を処理するためのプログラムコードと
を含み、
前記処理するためのプログラムコードが、
前記一連の画像から平行移動行列を決定し、
前記モバイルデバイスの前記アプリケーションとともに使用するための前記回転情報、前記スケール情報、および前記非直交性情報のうちの少なくとも2つを計算するために前記ポーズ角度情報、前記平行移動行列、および前記ジャイロスコープ情報をカルマンフィルタに適用する
ためのプログラムコードを含む、非一時的コンピュータ可読記憶媒体。
【請求項３１】
前記プログラムコードが、前記スケール情報および前記非直交性情報を拡張現実アプリケーションに適用するためのプログラムコードをさらに含む、請求項30に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全体が参照により本明細書に組み込まれている、2012年10月12日に出願した、「Gyroscope conditioning and gyro-camera alignment」という名称の米国特許出願第13/651,055号の優先権を主張する。
【０００２】
本開示は、たとえば、拡張現実アプリケーションなどのアプリケーション、およびジャイロスコープ測定値の調整で使用されるいくつかの態様において使用されるパラメータを生成するためのシステム、装置、および方法に関する。
【背景技術】
【０００３】
ますます多くの現代のスマートフォンが、1つまたは複数のカメラおよび様々なセンサーを含む。たとえばジャイロスコープおよび加速度計など、動きを検知する慣性センサーは、高サンプリングレートで角速度および加速度を測定するそれらの能力により、特に重要である。これらのセンサーは、スマートフォン上の拡張現実(AR)アプリケーションを強化するために使用され得る。参照ベースの追跡において、追跡の失敗の主な原因は、ターゲットに対して離れた高速回転およびカメラドリフトを含む。ジャイロスコープは、カメラ関連の追跡の失敗の期間中にターゲットの追跡を維持するのを助けることができる。しかしながら、たとえば、カメラに対してジャイロスコープのアライメントを正確に較正し、ジャイロスコープのスケールおよび非直交性パラメータ(non-orthogonality parameter)を決定するために、ジャイロスコープを調整することは、しばしば困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、ジャイロスコープの正確な較正を取得し、維持することが必要である。ジャイロスコープの正確で低コストの較正は、たとえばARアプリケーションなど、様々なアプリケーションとともに使用するために、有益であり得る。
【課題を解決するための手段】
【０００５】
いくつかの態様によれば、モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスにおける方法が開示され、方法は、カメラから一連の画像を受信するステップと、ポーズ角度情報(pose angular information)を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用するステップと、一連のジャイロスコープ測定値からジャイロスコープ情報を推定するステップと、アプリケーションとともに使用するための(1)回転情報、(2)スケール情報、および(3)非直交性情報のうちの少なくとも2つを導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するステップとを含む。いくつかの態様では、方法は、アプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するステップを含む。
【０００６】
いくつかの態様によれば、モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスが開示され、モバイルデバイスは、一連の画像を提供するように構成されたカメラと、一連のジャイロスコープ測定値を生成するように構成されたジャイロスコープと、カメラおよびジャイロスコープに結合されたプロセッサとを含み、プロセッサが、カメラから一連の画像を受信するために結合されたコンピュータビジョンモジュールであり、一連の画像に基づいて、ポーズ角度情報を生成するコンピュータビジョンモジュールと、一連のジャイロスコープ測定値からジャイロスコープ情報を生成するための角速度モジュールと、コンピュータビジョンモジュールからポーズ角度情報を受信するために結合され、角速度モジュールからジャイロスコープ情報を受信するように結合されたパラメータ推定モジュールであり、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するパラメータ推定モジュールとを含む。
【０００７】
いくつかの態様によれば、モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスが開示され、モバイルデバイスは、カメラから一連の画像を受信するための手段と、ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用するための手段と、一連のジャイロスコープ測定値からジャイロスコープ情報を推定するための手段と、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するための手段とを含む。いくつかの態様では、処理するための手段は、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するための手段を含む。
【０００８】
いくつかの態様によれば、モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスが開示され、モバイルデバイスが、プロセッサとメモリとを含み、メモリが、カメラから一連の画像を受信するための命令と、ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用するための命令と、一連のジャイロスコープ測定値からジャイロスコープ情報を推定するための命令と、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するための命令とを含む。
【０００９】
いくつかの態様によれば、モバイルデバイスのアプリケーションのためのパラメータを生成するためのプログラムコードを記憶した非一時的コンピュータ可読媒体が開示され、プログラムコードが、カメラから一連の画像を受信するためのプログラムコードと、ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用するためのプログラムコードと、一連のジャイロスコープ測定値からジャイロスコープ情報を推定するためのプログラムコードと、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報のうちの少なくとも2つを導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するためのプログラムコードとを含む。いくつかの態様では、処理するためのプログラムコードは、モバイルデバイスのアプリケーションとともに使用するための回転情報、スケール情報、および非直交性情報を導出するように、ポーズ角度情報およびジャイロスコープ情報を処理するためのプログラムコードを含む。
【００１０】
以下の発明を実施するための形態から、他の態様が当業者に容易に明らかになり、例として様々な態様が示され説明されることを理解されたい。図面および詳細な説明は、限定としてではなく、本質的に例示として見なされるべきである。
【００１１】
様々な実施形態について、単に例として、図面を参照しながら以下で説明する。
【図面の簡単な説明】
【００１２】
【図１】開示された実施形態に従って、回転行列(Rcb)、ならびにスケールおよび非直交性行列(A)、さらに随意にジャイロスコープ偏り誤差(ωbias)を生成することが可能な例示的なモバイルデバイスを示す簡略化されたブロック図である。
【図２】開示された実施形態に従って、プロセッサと、プロセッサに結合された様々な他のモジュールとを含む例示的な移動局のブロック図である。
【図３】例示的なパラメータ推定モジュールのいくつかの機能を詳述するブロック図である。
【図４】複合行列(composite matrix)(B)と直交回転行列(Rcb)とスケールおよび非直交性行列(A)との間の関係を示す図である。
【図５】モバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスにおける方法を示す図である。
【図６】開示された実施形態に従って、QR因数分解を使用して、一連の画像および一連のジャイロスコープ測定値から回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を導出する例示的な方法を示すフローチャートである。
【図７】開示された実施形態に従って、追加の例示的なパラメータ推定モジュールを示すブロック図である。
【図８】モバイルデバイスにおける様々なパラメータ間の関係を表す1組の式を示す図である。
【図９】開示された実施形態に従って、カルマンフィルタを使用することによって、一連の画像および一連のジャイロスコープ測定値から回転行列(Rcb)、ならびにスケールおよび非直交性行列(A)、さらに随意にジャイロスコープ偏り誤差(ωbias)を導出するための例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１３】
添付の図面に関する下記の詳細な説明は、本開示の様々な態様の説明として意図されており、本開示が実施され得る唯一の態様を表すことが意図されているわけではない。本開示で説明される各態様は、本開示の単なる例または説明として与えられ、他の態様よりも好適または有利であるとは、必ずしも解釈されるべきではない。発明を実施するための形態は、本開示の完全な理解を提供するために、具体的な詳細を含む。しかし、本開示がこれらの具体的な詳細なしに実施され得ることが、当業者には明らかであろう。場合によっては、本開示の概念を曖昧にするのを回避するために、周知の構造およびデバイスがブロック図の形式で示されている。略語または他の説明のための用語は、単に便宜および明瞭さのために用いられ得るものであり、本開示の範囲を限定することは意図されない。
【００１４】
本明細書で使用するモバイルデバイスは、移動局(MS)またはユーザ装置(UE)と呼ばれることがあり、セルラー電話、携帯電話、または他のワイヤレス通信デバイス、パーソナル通信システム(PCS)デバイス、パーソナルナビゲーションデバイス(PND)、個人情報マネージャ(PIM)、携帯情報端末(PDA)、タブレット、ラップトップ、または画像をキャプチャもしくは受信することが可能であり、ジャイロスコープ情報を測定もしくは取得することが可能である他の好適なモバイルデバイスを含み得る。いくつかの実施形態では、移動局は、ワイヤレス通信および/またはナビゲーション信号を受信することが可能である。「移動局」という用語はまた、衛星信号受信、支援データ受信、および/または位置関連処理がそのデバイスでまたはPNDで発生するかどうかにかかわらず、短距離ワイヤレス、赤外線、有線接続、または他の接続などによって、パーソナルナビゲーションデバイス(PND)と通信するデバイスを含むものであることが意図されている。また、「移動局」は、インターネット、WiFi、または他のネットワークなどを介してサーバとの通信が可能である、ワイヤレス通信デバイス、コンピュータ、ラップトップなどを含むすべてのデバイスを、衛星信号受信、支援データ受信、および/または位置に関係する処理がそのデバイスにおいて行われるか、サーバにおいて行われるか、またはネットワークに関連する別のデバイスにおいて行われるかにかかわらずに含むものであることが意図されている。したがって、モバイルデバイスは、たとえば、セルラーまたはWiFi技術を使用して、1つまたは複数の他のデバイスとワイヤレスに通信することができるが、他の実施形態ではそのような機能を省略する場合がある。上記の任意の動作可能な組合せも、「モバイルデバイス」と見なされる。
【００１５】
本明細書の教示は、カメラからの一連のカメラ画像およびジャイロスコープからの一連のジャイロスコープ測定値を処理することによって、回転、スケール、および/または非直交性パラメータを生成することを可能にする。回転、スケール、および非直交性パラメータは、拡張現実アプリケーション(ARアプリケーションまたはARアプリと呼ばれる)のために使用され得る。これらの生成されたパラメータは、工場較正または外部の機器を必要とすることなく、スマートフォンまたはタブレットまたは他のモバイルデバイスで見つかるジャイロスコープから内部ジャイロスコープの測定値を調整するためにも使用され得る。較正または調整は、ジャイロスコープ測定値とともにカメラからの一連の画像における追跡特徴からのポーズ測定値のみを使用することができる。
【００１６】
ARアプリケーションは、一般的に、人工的な環境のような仮想現実を作成するよりむしろ、現実の世界のシナリオを補うユーザ対話型の体験を提供する。ARにおいて、ユーザの環境は、コンピュータ生成されたグラフィックスおよび他のタイプのアノテーションおよびアニメーションによってオーグメンテーションのために背景を形成することができる。
【００１７】
いくつかの実施形態では、(コンピュータビジョンアルゴリズムを通過した一連の画像から生成された)ポーズ、および(生のジャイロスコープ測定値から生成された)一連のジャイロスコープベクトルは、モバイルデバイスのミスアライメントを解決し、ならびに生のジャイロスコープ測定値に関連するスケールおよび非直交性誤差を考慮に入れるために、生のジャイロスコープ測定値を調整するために使用され得る。コンピュータビジョンポーズ(すなわち、ポーズ角度ベクトル(ωcam))およびジャイロスコープ測定値は、線形システムの解である複合行列(B)によって関係付けられる。
【００１８】
複合行列(B)の分解は、QR因数分解(QR分解としても知られる)を含むいくつかの方法によって実行され得る。QR因数分解において、分解は、複合行列(B)を直交回転行列(Rcb)および上三角行列(A)(スケールおよび非直交性行列(A)とも呼ばれる)に分ける。上三角行列(A)は、スケールと非直交性の両方の調整を含み、これは、その後のジャイロスコープ測定値を較正するために使用され得る。
【００１９】
いくつかの実施形態では、スケールおよび非直交性パラメータを導出するために、カルマンフィルタ処理が適用され得る。カルマンフィルタ処理では、カルマンフィルタ(たとえば、反復拡張カルマンフィルタ(EKF))は、スケールおよび非直交性行列(A)ならびに回転行列(Rcb)から成る状態空間を推定するために、ジャイロスコープベクトルとともにポーズ角度回転(ωcam)と平行移動(T)の両方を使用する。回転(ωcam)に加えてコンピュータビジョンポーズの平行移動(T)を使用して、ARアプリの精度を高めることができる。
【００２０】
図1は、開示された実施形態に従って、回転行列(Rcb)、ならびにスケールおよび非直交性行列(A)を生成することが可能な例示的なモバイルデバイス10の簡略化されたブロック図を示す。いくつかの実施形態では、モバイルデバイス10は、例示的なカメラ100およびジャイロスコープ200を含み得、これらはいずれも、例示的なプロセッサ300に結合され得る。カメラ100は、様々な時に一連の画像をキャプチャすることができる。いくつかの実施形態では、カメラ100は、様々な解像度および/またはフレームレートの静止画像およびビデオ画像をキャプチャすることが可能であり得る。
【００２１】
いくつかの実施形態では、カメラ100は、カメラ軸に対するターゲットの配向に関する情報を提供することができる、1つまたは複数の較正されたセンサーに結合され得る。これらのセンサーは、限定はしないが、配向センサー、磁界センサーなどを含み得る。カメラ100によってキャプチャされる一連の画像は、プロセッサ300によってアクセス可能なメモリおよび/または画像バッファおよび/またはビデオバッファに記憶され得る。いくつかの実施形態では、カメラ100は、様々な時に別個に画像をキャプチャし、画像をプロセッサに送ることができる。
【００２２】
いくつかの実施形態では、プロセッサ300は、カメラ100によってキャプチャされる画像において提供される情報に部分的に基づいてポーズを計算することが可能であり得る。いくつかの実施形態では、プロセッサ300は、カメラ100に結合されたセンサーからの情報を使用することもできる。「ポーズ」という用語は、ターゲットに対するカメラの位置および配向を示すために使用される。たとえば、ターゲットが複数の画像フレームにわたって追跡されるとき、画像フレームのうちの1つが基準フレームとして使用され得、画像シーケンスにおける他のフレームのポーズは、基準フレームに応じて表され得る。画像シーケンスについてのカメラ配向情報は、一連のポーズ角度ベクトル(ωcam)として表され得る。いくつかの実施形態では、すべてのフレームがポーズ推定値を有し得るとは限らない。たとえば、プロセッサは、フレームをスキップすることができ、断続的なブラックアウト期間もあり得る。
【００２３】
3D画像表現では、ポーズ角度ベクトル(ωcam)は、次元ごとに1つの、3つの成分を含み得る。さらに、プロセッサ300は、カメラ100に結合されるセンサーから取得された情報および一連の画像における特徴を使用して、基準フレームにおけるカメラの位置に対するカメラの平行移動または空間変位を計算することもできる。いくつかの実施形態では、一連の画像中の画像の対ごとの平行移動が平行移動行列(T)に記憶され得る。
【００２４】
ジャイロスコープ200は、生の角速度測定値を含み得る一連の生の測定値(ωgyro-meas)をキャプチャすることができる。後述するように、ジャイロスコープ200は、回転情報を導出するための手段、スケールおよび非直交性行列を受信するための手段、ならびに/またはスケールおよび非直交性行列を使用して一連の生のジャイロスコープ測定値を較正するための手段として働き得る。他の実装形態では、そのような手段を実施するために、ジャイロスコープ200の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。いくつかの実施形態では、生のジャイロスコープ測定値(ωgyro-meas)は、モバイルデバイス10上のシステムクロックの構成可能な数のクロックサイクルの後および/または一定の時間間隔で提供され得る。いくつかの実施形態では、生の角速度測定値は、たとえば、x、yおよびz軸の各々について1つの、3つの成分を含み得る。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ωgyromeas)は、プロセッサ300によってアクセスされ得るバッファ(図示せず)に記憶され得る。
【００２５】
一般に、プロセッサ300は、中央処理装置(CPU)、マルチコアCPU、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、組込みプロセッサ、デジタル信号プロセッサ(DSP)、またはモバイルデバイス10において動作し、本明細書で開示する機能を実行することが可能な任意の他のプロセッサとすることができる。プロセッサ300は、本明細書で開示する実施形態に従って、モバイルデバイス10に結合されたメモリにおける、ファームウェアにおける、および/またはメディアからのプログラムコードを実行することが可能であり得る。
【００２６】
いくつかの実施形態では、プロセッサ300は、一連のジャイロスコープベクトル(ωgyro)および一連のポーズ角度ベクトル(ωcam)が時刻同期されるように、一連のジャイロスコープベクトル(ωgyro)を推定するために、バッファリングされた一連のジャイロスコープ測定値(ω'gyro-meas)を処理することができる。いくつかの実施形態では、ジャイロスコープベクトルのシーケンス(ωgyro)は各々、x、yおよびz軸の各々について1つの、3つの成分を含み得る。いくつかの実施形態では、一連の画像および一連のジャイロスコープベクトル(ωgyro)は、タイムスタンプが付けられ、またはインデックスが付けられて、対応するジャイロスコープベクトル(ωgyro)を有する画像とのポーズ角度ベクトル(ωcam)の関連付けを可能にすることができる。
【００２７】
生のジャイロスコープ測定値(ωgyro-meas)は、一般的に、誤差の欠陥がある。たとえば、ジャイロスコープ200の軸は、少量だけ互いに対して非直交であり得、このことは、生の角速度測定値(ωgyro-meas)の精度に影響を及ぼし、非直交性誤差をもたらし得る。さらに、たとえばジャイロスコープ200などのジャイロスコープも、たとえば偏りおよびスケール誤差など他の決定論的な誤差を呈し得る。たとえば、ジャイロスコープ200が何らかの生のゼロ以外のジャイロスコープ(角速度)測定値(ωgyro-meas=ωbias≠0)を示したとき、ジャイロスコープ200が事実上回転していない(ωtrue=0)とき、ジャイロスコープ偏り誤差(ωbias)が生じ得、この場合、ωtrueは、真のジャイロスコープ(角速度)測定値である。偏りの補正の後、ジャイロスコープ200は、生のジャイロスコープ(角速度)測定値(ωgyro-meas、この場合、ωgyro-meas=αωtrue)を示した場合、「α」は、スケール係数またはスケール誤差と呼ばれる。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ωgyro-meas)は、バッファへの記憶の前に処理され得る。
【００２８】
いくつかの実施形態では、プロセッサ300は、一連のポーズ角度ベクトル(ωcam)、および一連のジャイロスコープベクトル(ωgyro)を使用して、直交回転行列Rcbならびに/またはスケールおよび非直交性行列(A)を計算することができる。いくつかの実施形態では、図1の破線の矢印によって示されるように、プロセッサ300によって、偏り誤差(ωbias)も随意に推定され得る。いくつかの実施形態では、スケールおよび非直交性行列(A)は、スケールと非直交性の両方の調整を含み、これは、その後のジャイロスコープ測定値を較正するために使用され得る。いくつかの実施形態では、スケールおよび非直交性の調整またはパラメータ、ならびに随意に偏り誤差ωbiasは、ジャイロスコープ200によって測定値を調整するために使用され得、および/またはたとえばARアプリケーションなどのアプリケーションに提供され得る。モバイルデバイス10は、示されていない追加要素を含み得る。たとえば、モバイルデバイス10は、たとえば本明細書で説明するパラメータに基づいて、オーグメンテーションなどを決定し、それらのオーグメンテーションおよび画像をディスプレイに表示させるために、入力要素、他のセンサー、ワイヤレス通信手段、ディスプレイ、および/またはモジュールを含み得る。
【００２９】
図2は、開示された実施形態に従って、プロセッサ300を含み、プロセッサに結合された他のモジュールを示す例示的なモバイルデバイス10のブロック図である。一般に、示したモジュールは、ハードウェア、ソフトウェア、および/またはファームウェアの何らかの組合せによって実施され得る。
【００３０】
図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つまたは複数の他の要素が使用され得る。
【００３１】
いくつかの例では、CVモジュール310は、視覚ターゲットを検出し、ポーズを確立するための検出ステップを最初に実行することができ、その後で、追跡アルゴリズムがポーズを更新することができる。いくつかの実施形態では、検出および追跡ステップは、リアルタイムで稼働され得る。追跡ステップでは、各フレームにおいて、1組の特徴点の位置が計算され得る。たとえば、カメラ100によってキャプチャされる2つの別々の画像フレームにおける現実世界の特徴の識別および位置は、特徴一致を得ることができ、これは、ターゲットを追跡し、フレーム間のポーズを推定するために使用され得る。
【００３２】
さらに、ジャイロスコープ200は、一連の生のジャイロスコープ測定値(ωgyro-meas)をキャプチャすることができ、これは、例示的なジャイロスコープバッファモジュール340によってバッファリングされ得る。ジャイロスコープバッファモジュール340は、ジャイロスコープからの一連の生のジャイロスコープ測定値に基づいてバッファリングされた一連のジャイロスコープ測定値を提供するための手段として働き得る。後述するように、ジャイロスコープバッファモジュール340は、スケールおよび非直交性行列を受信するための手段、ならびに/またはスケールおよび非直交性行列を使用して一連の生のジャイロスコープ測定値を調整するための手段として働き得る。他の実装形態では、そのような手段を実施するために、ジャイロスコープバッファモジュール340の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。いくつかの実施形態では、バッファリングされた一連のジャイロスコープ測定値(ω'gyro-meas)は、例示的なAVモジュール320に出力され得、これは、一連のポーズ角度ベクトル(ωcam)に同期される一連のジャイロスコープベクトル(ωgyro)を生成するために、カメラフレームレート同期信号350を使用することができる。
【００３３】
いくつかの実施形態では、CVモジュール310によって計算された平行移動行列(T)、および一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報は、例示的なパラメータ推定モジュール330に入力され得る。パラメータ推定モジュール330は、スケール情報および非直交性情報を導出するために、一連のポーズ角度ベクトルおよび一連のジャイロスコープベクトルを処理するための手段として働き得る。パラメータ推定モジュール330は、拡張現実(AR)アプリケーションにスケール情報および非直交性情報を転送するための手段としても働き得る。他の実施形態では、そのような手段を実施するために、パラメータ推定モジュール330の代わりに、またはそれに加えて、1つまたは複数の他の要素が使用され得る。
【００３４】
さらに、パラメータ推定モジュール330は、AVモジュール320から一連のジャイロスコープベクトル(ωgyro)またはジャイロスコープ情報を受信することもでき、一連のジャイロスコープベクトル(ωgyro)またはジャイロスコープ情報は、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報に同期される。パラメータ推定モジュール330は、直交回転行列(Rcb)、スケールおよび非直交性行列(A)またはスケール情報および非直交性情報、ならびに随意にジャイロスコープ偏り誤差(ωbias)を計算するために、受信した入力を使用することができる。いくつかの実施形態では、回転行列Rcb、スケールおよび非直交性行列(A)、ならびに/またはジャイロスコープ偏り誤差(ωbias)は、たとえばARアプリケーションなどのアプリケーションに入力され得る。いくつかの実施形態では、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)またはスケール情報および非直交性情報は、(破線によって示すように)ジャイロスコープバッファモジュールに入力され、バッファリングされた一連のジャイロスコープ測定値(ω'gyromeas)を調整するために使用され得る。
【００３５】
図3は、例示的なパラメータ推定モジュール330のいくつかの機能を詳述するブロック図を示す。パラメータ推定モジュール330は、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報、および一連のジャイロスコープベクトル(ωgyro)またはジャイロスコープ情報を入力として受信することができる。
【００３６】
ジャイロスコープは一般的にスケールおよび非直交性誤差を有するので、これらの誤差の推定および補正は、ジャイロスコープ測定値からカメラ本体角速度測定値の取得を容易にする。いくつかの実施形態では、例示的な最小2乗推定(LSE)モジュール332は、後述するように、一連のポーズ角度ベクトル(ωcam)および対応するバッファリングされた一連のジャイロスコープ測定値(ωgyro-meas)を使用して、複合行列Bを計算することができる。
【００３７】
測定値間の関係は、以下のように表される。
ωgyro=Aωgyro-meas
ωcam=RcbAωgyro-meas=Bωgyro-meas
【００３８】
これは、一般的な複合行列を解く線形最小2乗推定問題である。
B=Rcb・A
これは、以下の目的関数を最小にする。
【００３９】
【数１】
0005930451.tif 000002
【００４０】
式中、ωcam(t)は、時刻tの一連のポーズ角度ベクトルであり、ωgyro(t)は、対応する一連のジャイロスコープ測定値であり、arg minは、最小の引数を表し、これは、所与の目的関数がその最小値を獲得するための所与の引数のポイントの組である。Bは、式4を使用して決定され得、これは、解が線形システムである二次最適化問題である。
【００４１】
BがLSEモジュール332によってひとたび計算されると、複合行列Bは、例示的なQR因数分解モジュール334に入力され得る。いくつかの実施形態では、次いで、式3は、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を取得するためにQR分解を使用してBを分解することによって、QR因数分解モジュール334によって解かれ得る。上述のように、いくつかの実施形態では、直交回転行列(Rcb)ならびに/またはスケールおよび非直交性行列(A)がARアプリケーションに入力され得る。いくつかの実施形態では、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)は、生の一連のジャイロスコープ測定値(ωgyro-meas)を調整するために使用され得る。
【００４２】
いくつかの実施形態では、平行移動情報が入力された場合、カメラとジャイロセンターとの間の変位またはオフセットの推定値が、パラメータ推定モジュール330によって無視され得るように、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を計算するために、平行移動情報は、パラメータ推定モジュール330によって使用されない場合がある。他の実施形態では、パラメータ推定モジュール330は、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を計算するために、平行移動情報を使用しない場合、CVモジュール310は、平行移動行列(T)を計算しない場合がある。
【００４３】
図4は、式3に示すように、複合行列(B)410と直交回転行列(Rcb)420とスケールおよび非直交性行列(A)430との間の関係を示す。いくつかの実施形態では、スケールおよび非直交性行列(A)430は、上三角行列としてモデル化され得る。上三角スケールおよび非直交性行列(A)の対角要素は、3つの軸のスケールパラメータであり、非対角要素は非直交性パラメータである。複合行列B 410を取得した後、式3は、たとえばQR因数分解モジュール334などによってQR分解技法を使用して複合行列B 410を分解することによって、直交回転行列(Rcb)420ならびにスケールおよび非直交性行列(A)430について解かれ得る。
【００４４】
図5は、たとえばモバイルデバイス10などモバイルデバイスのアプリケーションのためのパラメータを生成するためのモバイルデバイスにおける方法を示す。たとえば、アプリケーションは、拡張現実アプリケーションでもよい。いくつかの実施形態では、図5に示した方法は、モバイルデバイスにおいて実施され得る。450で、たとえばプロセッサ300または他のコンピューティング要素などのプロセッサは、たとえばカメラ100などのカメラから、一連の画像を受信することができる。460で、プロセッサは、ポーズ角度情報を生成するために、コンピュータビジョンアルゴリズムを一連の画像に適用することができる。いくつかの実施形態では、460は、CVモジュール310によって実行され、および/または実施される。470で、プロセッサは、たとえばジャイロスコープ200など一連のジャイロスコープ測定値からジャイロスコープ情報を推定することができる。ジャイロスコープ情報およびポーズ角度情報は同期され得る。いくつかの実施形態では、470は、ジャイロスコープバッファモジュール340および/またはAVモジュール320によって実行され、および/または実施される。
【００４５】
480で、プロセッサは、アプリケーションとともに使用するための(1)回転情報、(2)スケール情報、および(3)非直交性情報のうちの少なくとも2つを導出するように、ポーズ角度情報およびジャイロスコープ情報を処理し得る。いくつかの実施形態では、480は、パラメータ推定モジュール330、最小2乗推定モジュール332、QR因数分解モジュール334、および/またはカルマンフィルタ326によって実行され、および/または実施される。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、ポーズ角度情報およびジャイロスコープ情報から複合行列を計算することと、複合行列を回転行列ならびにスケールおよび非直交性行列に分解することとを含み、スケール情報および非直交性情報は、スケールおよび非直交性行列を含む。いくつかの例では、複合行列を計算することは、最小2乗推定をポーズ角度情報およびジャイロスコープ情報に適用することを含む。いくつかの例では、複合行列を分解することは、QR因数分解を複合行列に適用することを含む。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、推定されたジャイロスコープ偏り誤差を導出することをさらに含み得る。いくつかの例では、ポーズ角度情報およびジャイロスコープ情報を処理することは、一連の画像から平行移動行列を決定することと、回転情報、スケール情報、および非直交性情報を計算するためにポーズ角度情報、平行移動行列、およびジャイロスコープ情報をカルマンフィルタに適用することとを含む。ポーズ角度情報は、一連のポーズ角度ベクトルでもよい。いくつかの実施形態では、図5に示した機能のうちの1つまたは複数は、省略され、置き換えられ、および/または再配列され得る。たとえば、いくつかの実施形態では、470は省略される。そのような実施形態では、ポーズ角度情報およびジャイロスコープ測定値は、480で処理され得る。いくつかの実施形態では、ジャイロスコープ情報は、別のデバイス、構成要素、および/または要素で推定され得る。図5に示した方法の他の改変は、いくつかの実施形態において実施され得る。
【００４６】
図6は、開示された実施形態に従って、QR因数分解を使用して、一連の画像および一連のジャイロスコープ測定値から回転行列(Rcb)、ならびにスケールおよび非直交性行列(A)を導出する例示的な方法500を示すフローチャートを示す。いくつかの実施形態では、方法500は、モバイルデバイス上で実施され得る。
【００４７】
いくつかの実施形態では、ステップ505で、一連の画像がキャプチャされ得る。たとえば、カメラ100は、一連の画像をキャプチャすることができる。次に、ステップ510で、一連の画像を処理し、たとえば、CVモジュール310によって、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報を取得するために、コンピュータビジョンベースのアルゴリズムが適用され得る。
【００４８】
画像シーケンスのキャプチャ(ステップ505)と同時に、ステップ520において一連の生のジャイロスコープ測定値(ωgyro-meas)がキャプチャされ得る。たとえば、ジャイロスコープ200は、カメラ100が一連の画像をキャプチャしている期間の間に、一連の生のジャイロスコープ測定値(ωgyro-meas)をキャプチャすることができる。ステップ530で、バッファリングされた一連のジャイロスコープ測定値ベクトル(ω'gyromeas)またはジャイロスコープ情報は、たとえば、ジャイロスコープバッファモジュール340によって、一連の生のジャイロスコープ測定値(ωgyromeas)から取得され得る。いくつかの実施形態では、一連の生のジャイロスコープ測定値(ωgyromeas)は、バッファへの記憶の前に処理され得る。次に、ステップ535で、一連のジャイロスコープベクトル(ωgyro)および一連のポーズ角度ベクトル(ωcam)が時刻同期するように、たとえば、バッファリングされた一連のジャイロスコープ測定値(ω'gyromeas)を使用してAVモジュール320によって、一連のジャイロスコープベクトル(ωgyro)が決定され得る。
【００４９】
ステップ540で、複合行列(B)は、たとえばパラメータ推定モジュール330によって、一連のポーズ角度ベクトル(ポーズ角度情報)(ωcam)および一連のジャイロスコープベクトル(ジャイロスコープ情報)(ωgyro)から計算され得る。いくつかの実施形態では、複合行列(B)は、式4を使用して計算され得る。
【００５０】
次に、ステップ550で、回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を取得するために、QR因数分解を使用して、複合行列(B)が分解され得、この場合、回転行列(Rcb)ならびにスケールおよび非直交性行列(A)は、出力パラメータである。たとえば、式3は、たとえばQR因数分解モジュール334によるなど、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)を取得するためにQR分解を使用してBを分解することによって解かれ得る。
【００５１】
ステップ560で、いくつかの実施形態では、図2および図3に示すように、直交回転行列(Rcb)ならびに/またはスケールおよび非直交性行列(A)が随意にARアプリケーションに入力され得る。
【００５２】
ステップ570で、図2(点線)に示すように、生の一連のジャイロスコープ測定値(ωgyromeas)を調整するために、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)が随意に使用され得る。たとえば、ジャイロスコープバッファモジュール340で、バッファリングされた一連のジャイロスコープ測定値(ω'gyromeas)を調整する機能への入力として、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)、さらに随意に偏り誤差ωbiasが随意に使用され得る。
【００５３】
図7は、開示された実施形態に従って、追加の例示的なパラメータ推定モジュールのブロック図を示す。図7に示すように、パラメータ推定モジュール330は、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ωgyro)またはジャイロスコープ情報を入力として受信することができる。いくつかの実施形態では、パラメータ推定モジュール330は、入力された一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ωgyro)またはジャイロスコープ情報を受信することができるカルマンフィルタ326を含み得る。次いで、カルマンフィルタ326は、直交回転行列(Rcb)ならびにスケールおよび非直交性行列(A)、さらに随意に偏り誤差ωbiasを計算することができる。カルマンフィルタは、当技術分野ではよく知られている。いくつかの実施形態では、カルマンフィルタ326は、さらに以下で説明するように、反復拡張カルマンフィルタ(EKF)の形をとることができる。
【００５４】
図8は、モバイルデバイスにおける様々なパラメータ間の関係を表す1組の式を示す図である。いくつかの実施形態では、式によって表される関係は、モバイルデバイス10によって行われる測定から、回転行列(Rcb)ならびにスケールおよび非直交性行列(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」)。これらの全体は参照により本明細書に組み込まれる。関係を表すために使用されるパラメータおよびパラメータに関係する式は、概説されており、一般的な用語で以下に簡単に説明される。
【００５５】
下付き文字「cb」は、較正パラメータを示すために使用される。これらのパラメータの一部は、較正ステージで推定されていると仮定され、EKFの動作の間、不変であると仮定され得る。下付き文字「sb」は、空間座標系に対するジャイロスコープの配向に関係するパラメータを示すために使用される。
【００５６】
モデルダイナミクスの離散項バージョン(時刻「t」のパラメータの値を時刻「t+dt」のその値に関連付ける)は、以下でさらに説明するように、本体の配向のダイナミクスを決定するために使用され得る。カメラ-ジャイロスコープ間の回転アライメントは、以下によって示され、
【００５７】
【数２】
0005930451.tif 000003
【００５８】
2つのセンサー間のオフセットは、「Tcb」によって示される。したがって、ジョーンズモデルを使用して、
【００５９】
【数３】
0005930451.tif 000004
【００６０】
および
【００６１】
【数４】
0005930451.tif 000005
【００６２】
について、式は、以下のように書かれ得る。
【００６３】
【数５】
0005930451.tif 000006
【００６４】
一般的に、ジャイロスコープ読取値は、角速度ω(t)および加速度a(t)の測定値を含み得る。角速度および加速度のダイナミクスは、以下の式7および式8に示される。
ω(t+dt)=ω(t)+nw(t)
a(t+dt)=a(t)+na(t)
【００６５】
式中、nω(t)およびna(t)は、ジャイロスコープ角速度および加速度の読取値における白色雑音をそれぞれモデル化する。
【００６６】
Tsb(t)およびv(t)は、それぞれ、空間座標系に対してジャイロスコープによって行われた測定値から導出された位置および速度を示すとする。さらに、Υ(t)は、空間座標系における重力ベクトルを表し、nΥ(t)は、重力推定における白色雑音をモデル化し、ωbias(t)およびabias(t)は、状態パラメータとして推定されるゆっくり変化するジャイロスコープおよび加速度偏り誤差を表すとする。次いで、位置(変位)、速度、および重力のダイナミクスは、それぞれ、式9、式10、および式11に示される。
【００６７】
【数６】
0005930451.tif 000007
【００６８】
式5〜式12は、モバイルデバイスにおける様々なセンサーで測定され、および/または関連付けられたパラメータに関する一般的なモデルを表し、モバイルデバイス10におけるジャイロスコープ200のスケールおよび非直交性とともに回転アライメントを推定するためのモデルを導出するためにEKFで使用され得る。具体的には、ジャイロスコープ200およびカメラ100の測定値に関する測定の式は、回転および平行移動フィルタと類似しており、以下で再現される。
【００６９】
【数７】
0005930451.tif 000008
【００７０】
式中、Aは、上三角としてモデル化されるスケールおよび非直交性行列であり、ω'gyro-meas(t)は、時刻tにおけるバッファリングされた一連のジャイロスコープ測定値、および一連のポーズ角度ベクトルであり、ωcam(tk)は、Ωcam(tk)の導関数である。Ωcam(tk)は、回転行列のための指数座標に関する式を使用して、ωcam(tk)から計算され得る。Aの対角要素は、3つの軸のスケールパラメータであり、非対角要素は非直交性パラメータである。スケールおよび非直交性パラメータが較正の間不変であると仮定されるので、式13は、スケールおよび非直交性行列Aについての一定のダイナミクスを仮定する。
【００７１】
上記の式13〜式15で、カメラ-ジャイロスコープ間の回転アライメントΩcbならびにスケールおよび非直交性行列Aは未知のパラメータであり、問題は、フィルタ処理問題に変換するパラメータ同定の1つである。アライメント、スケール、および非直交性パラメータは、較正の間変わらず、これは、上記の式で反映され、ここでは、Ωcbならびにスケールおよび非直交性行列Aの発展形のノイズはゼロである。さらに、直交回転行列Rcbは、Ωcbの指数関数であり、ここでは、指数関数は、よく知られているロドリゲスの回転式を使用して取得され得る。
【００７２】
いくつかの実施形態では、上記の式13〜式15を使用した再帰的解法は、たとえば、カルマンフィルタ326によって計算され得る。フィルタは、ΩcbおよびAの最初の推定値で初期化され、これは、最初に仕様書から得られ、またはさもなければ推定され得る。いくつかの例では、ジャイロスコープ偏り誤差(ωbias(t))は、未知である場合がある。しかしながら、偏り誤差は、経時的に一定と仮定され得るので、カルマンフィルタ326によって推定され得る。
【００７３】
図9は、開示された実施形態に従って、カルマンフィルタを使用して、一連の画像および一連のジャイロスコープ測定値から回転行列(Rcb)、ならびにスケールおよび非直交性行列(A)を導出するための例示的な方法800を示すフローチャートを示す。いくつかの実施形態では、カルマンフィルタは、EKFの形をとることができる。
【００７４】
いくつかの実施形態では、図9の方法800は、モバイルデバイス上で実施され得る。いくつかの実施形態では、ステップ505で、一連の画像がキャプチャされ得る。たとえば、カメラ100は、一連の画像をキャプチャすることができる。次に、ステップ515で、一連の画像を処理し、たとえば、CVモジュール310によって、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報および平行移動行列(T)を取得するために、コンピュータビジョンベースのアルゴリズムが適用され得る。
【００７５】
ステップ520、530、および535は、同時に行われてもよく、図6に関して説明されている。ステップ545で、回転行列(Rcb)ならびにスケールおよび非直交性行列(A)、ならびに随意にジャイロスコープ偏り誤差(ωbias)は、一連のポーズ角度ベクトル(ωcam)またはポーズ角度情報、平行移動行列(T)、および一連のジャイロスコープベクトル(ωgyromeas)またはジャイロスコープ情報をカルマンフィルタに適用することによって計算され得、この場合、一部、上記の式13〜式15と連動して反復技法を使用することができる。いくつかの実施形態では、Ωcam(tk)は、回転行列のための指数座標に関する式を使用して、ωcam(tk)から計算され得る。ステップ560および570も、図6に関して上記で説明されている。
【００７６】
回転行列(Rcb)ならびに/またはスケールおよび非直角行列(A)は、ARアプリケーションへの入力として使用され得る。たとえば、ARアプリケーションは、(1)回転行列(Rcb)、(2)スケール情報、および(3)非直交性情報のうちの1つ、2つまたは全3つを使用して、生のジャイロスコープ測定値(ωgyro-meas)を前処理し、および/または、カメラ100の基準フレームにおけるカメラ角速度を取得することができる。スケール情報および非直交性情報はいずれも、スケールおよび非直交性行列(A)内とすることができる。これらの角速度は、時間間隔におけるカメラ100(および/またはモバイルデバイス10)の漸進的回転を決定するために、時間間隔にわたって集積され得る。これによって、ARアプリケーションは、カメラ100および/またはモバイルデバイス10が表示された画像で見つかる特徴または対象に対して移動するかどうか、および/またはどのように移動するかを決定することができる。このように、ARアプリケーションは、表示されるオーグメンテーションおよび/または示されるオーグメンテーションを修正する方法を決定することができる。
【００７７】
「いくつかの実施形態では」および「たとえば」という句は、最善の例ではなく、単なる例を意味し得る。本明細書に記載された方法は、用途に応じて様々な手段によって実施され得る。たとえば、コンピュータビジョンアルゴリズムを適用するための要素は、CVモジュール310またはコンピュータビジョンアルゴリズムを適用するための他の手段を含み得る。たとえば、これらの方法は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組合せで実装され得る。ハードウェア実装形態の場合、たとえばプロセッサ300などの処理ユニットは、本明細書で説明する機能を実行するように設計された、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、他の電子ユニット、あるいはそれらの組合せ内で実現されてもよい。たとえばモジュール310〜340など、本明細書に記載されるモジュールのうちのいずれも、ハードウェアで同様に実装され得る。
【００７８】
ファームウェアおよび/またはソフトウェアの実装形態の場合、これらの方法は、本明細書に記載された機能を実行するモジュール(たとえば、プロシージャ、関数など)で実装され得る。本明細書で説明された方法を実施するとき、命令を有形に具現化する任意の機械可読媒体が用いられてもよい。たとえば、ソフトウェアコードはメモリに記憶され、プロセッサユニットにより実行され得る。したがって、方法500、800、および/または図5に示した方法のいずれかは、機械可読媒体および/または様々なモジュールによって実装され得る。同様に、モジュール310〜340のいずれかは、機械可読媒体上のファームウェアおよび/またはソフトウェアにおいて同様に実装され得る。メモリは、プロセッサユニット内で実装されてよく、またはプロセッサユニットの外部で実装されてよい。本明細書では、「メモリ」という用語は、長期メモリ、短期メモリ、揮発性メモリ、不揮発性メモリ、または他のメモリのいずれかの種類を指し、メモリのいかなる特定の種類またはメモリの数、またはメモリが記憶される媒体の種類について限定されない。
【００７９】
機能は、ファームウェアおよび/またはソフトウェアに実装する場合、コンピュータ可読媒体に1つまたは複数の命令またはコードとして記憶され得る。複数の例が、データ構造によって符号化されたコンピュータ可読媒体およびコンピュータプログラムによって符号化されたコンピュータ可読媒体を含む。コンピュータ可読媒体は、物理的なコンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体である可能性がある。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは、所望のプログラムコードを命令またはデータ構造の形で記憶するのに使用することができ、かつコンピュータまたは任意の他の形の非一時的媒体からアクセスすることのできる任意の他の媒体を含むことができ、本明細書で使用されるディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピィーディスク、およびブルーレイディスクが含まれ、このうちディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)はデータをレーザによって光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲の中に含まれるべきである。
【００８０】
コンピュータ可読媒体に記憶するのに加えて、命令および/またはデータは、通信装置に含まれる伝送媒体上の信号として提供され得る。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含むことができる。命令およびデータは、1つまたは複数のプロセッサに特許請求の範囲で概説される機能を実装させるように構成される。すなわち、通信装置は、開示される機能を実行するための情報を示す信号を有する伝送媒体を含む。第1の時間において、通信装置中に含まれる伝送媒体は、開示する機能を実行するための情報の第1の部分を含んでよく、一方、第2の時間において、通信装置中に含まれる伝送媒体は、開示する機能を実行するための情報の第2の部分を含んでよい。
【００８１】
開示される態様の上記の説明は、任意の当業者が本開示を作製または使用できるようにするために提供される。これらの態様への様々な修正が当業者には容易に明らかになることになり、本明細書に定義する一般的な原理は、本開示の趣旨や範囲を逸脱することなしに他の態様に適用され得る。
【符号の説明】
【００８２】
10  モバイルデバイス
100  カメラ
200  ジャイロスコープ
300  プロセッサ
310  コンピュータビジョン(CV)モジュール
320  角速度(AV)モジュール
326  カルマンフィルタ
330  パラメータ推定モジュール
332  最小2乗推定(LSE)モジュール
334  QR因数分解モジュール
340  ジャイロスコープバッファモジュール
350  カメラフレームレート同期信号
410  複合行列B
420  直交回転行列(Rcb)
430  スケールおよび非直交性行列(A)
【図１】
0005930451.tif 000009
【図２】
0005930451.tif 000010
【図３】
0005930451.tif 000011
【図４】
0005930451.tif 000012
【図５】
0005930451.tif 000013
【図６】
0005930451.tif 000014
【図７】
0005930451.tif 000015
【図８】
0005930451.tif 000016
【図９】
0005930451.tif 000017