(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】拡張現実デバイスのためのニューラルネットワークを用いる地図支援慣性オドメトリ
(51)【国際特許分類】
G01C 21/28 20060101AFI20240920BHJP
G06T 7/70 20170101ALI20240920BHJP
G06T 7/00 20170101ALI20240920BHJP
G06V 10/82 20220101ALI20240920BHJP
G01P 21/00 20060101ALI20240920BHJP
【FI】
G01C21/28
G06T7/70 Z
G06T7/00 350C
G06V10/82
G01P21/00
【外国語出願】
(21)【出願番号】P 2023197406
(22)【出願日】2023-11-21
【審査請求日】2024-01-23
(32)【優先日】2022-11-23
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】チーユエ・チャン
(72)【発明者】
【氏名】ルカ・バラン
(72)【発明者】
【氏名】ユ・ホンシェン
(72)【発明者】
【氏名】ファン・フェンタオ
(72)【発明者】
【氏名】マヘシュ・ラマチャンドラン
(72)【発明者】
【氏名】グオ・チャオ
【審査官】西畑 智道
(56)【参考文献】
【文献】特開2019-023865(JP,A)
【文献】米国特許出願公開第2022/0306089(US,A1)
【文献】米国特許第11113894(US,B1)
【文献】米国特許出願公開第2019/0146598(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G01C 21/00-21/36
G01C 23/00-25/00
G06T 7/70
G06T 7/00
G06V 10/82
G01P 21/00
G08G 1/00-99/00
(57)【特許請求の範囲】
【請求項1】
コンピュータの処理回路によって実行される方法であって、
慣性計測装置(IMU)からIMUデータを受け取るステップを含み、
前記IMUデータは回転速度および加速度の値を含み、前記IMUは、ある位置にある電子デバイスのカメラに接続されており、
前記方法は、
前記位置でのシーンの画像を表す画像データを受け取るステップと、
前記画像データおよび前記位置の近傍の地図に基づいて、前記IMUの第1の6自由度姿勢データを生成するステップと、
をさらに含み、
前記第1の6自由度姿勢データは、前記IMUの第1の位置および向きを表し、
前記方法は、
前記回転速度および前記加速度の前記値に基づいて前記IMUの第2の6自由度姿勢データを生成するステップをさらに含み、
前記第2の6自由度姿勢データは、前記IMUの第2の位置および向きを表し、
前記方法は、
前記第1の6自由度姿勢データおよび前記第2の6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成するステップをさらに含み、
前記補正された6自由度姿勢データを生成するステップは、
カルマンフィルタの状態を更新するために、前記第1の6自由度姿勢データおよび前記第2の6自由度姿勢データを
前記カルマンフィルタに入力することを含
み、
前記第1の6自由度姿勢データは、第1の頻度で前記カルマンフィルタへ入力され、
前記第2の6自由度姿勢データは、前記第1の頻度より高い第2の頻度で前記カルマンフィルタへ入力される、方法。
【請求項2】
前記カルマンフィルタの前記状態は、前記IMUの演算パラメータのうち1以上のパラメータの値を含み、
前記1以上のパラメータは、前記IMUの、バイアス、スケールファクタ、およびミスアライメントのうち少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記補正された6自由度姿勢データを生成するステップは、更新後の前記状態の前記1以上のパラメータの値を用いて、前記IMUデータの誤差を補償することを含む、請求項2に記載の方法。
【請求項4】
前記第2の頻度は、前記第1の頻度の2倍である、請求項1に記載の方法。
【請求項5】
前記第2の頻度は、前記第1の頻度の10倍である、請求項1に記載の方法。
【請求項6】
前記第2の6自由度姿勢データを生成するステップは、
前記IMUデータを畳み込みニューラルネットワークに入力することを含み、
前記第2の6自由度姿勢データは前記畳み込みニューラルネットワークの出力である、請求項1に記載の方法。
【請求項7】
前記IMUの前記演算パラメータの前記値は、前記IMUの温度の値を含む、請求項
2に記載の方法。
【請求項8】
処理回路によって実行されると、前記処理回路に方法を実行させるコードを含み、前記方法は、
慣性計測装置(IMU)からIMUデータを受け取るステップを含み、
前記IMUデータは回転速度および加速度の値を含み、前記IMUは、ある位置にある電子デバイスのカメラに接続されており、
前記方法は、
前記位置でのシーンの画像を表す画像データを受け取るステップと、
前記画像データおよび前記位置の近傍の地図に基づいて、前記IMUの第1の6自由度姿勢データを生成するステップと、
をさらに含み、
前記第1の6自由度姿勢データは、前記IMUの第1の位置および向きを表し、
前記方法は、
前記回転速度および前記加速度の前記値に基づいて前記IMUの第2の6自由度姿勢データを生成するステップをさらに含み、
前記第2の6自由度姿勢データは、前記IMUの第2の位置および向きを表し、
前記方法は、
前記IMUの前記第1の6自由度姿勢データおよび前記IMUの前記第2の6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成するステップをさらに含み、
前記IMUの前記補正された6自由度姿勢データを生成するステップは、
カルマンフィルタの状態を更新するために、前記第1の6自由度姿勢データおよび前記第2の6自由度姿勢データを
前記カルマンフィルタに入力すること
を含
み、
前記第1の6自由度姿勢データは、第1の頻度で前記カルマンフィルタへ入力され、
前記第2の6自由度姿勢データは、前記第1の頻度より高い第2の頻度で前記カルマンフィルタへ入力される、
コンピュータプログラム。
【請求項9】
前記カルマンフィルタの前記状態は、前記IMUの演算パラメータのうち1以上のパラメータの値を含み、
前記1以上のパラメータは、前記IMUの、バイアス、スケールファクタ、およびミスアライメントのうち少なくとも1つを含む、請求項8に記載のコンピュータプログラム。
【請求項10】
前記補正された6自由度姿勢データを生成するステップは、更新後の前記状態の前記1以上のパラメータの値を用いて、前記IMUデータの誤差を補償することを含む、請求項9に記載のコンピュータプログラム。
【請求項11】
前記第2の頻度は、前記第1の頻度の2倍である、請求項
8に記載のコンピュータプログラム。
【請求項12】
前記第2の頻度は、前記第1の頻度の10倍である、請求項
8に記載のコンピュータプログラム。
【請求項13】
前記第2の6自由度姿勢データを生成するステップは、
前記IMUデータを畳み込みニューラルネットワークに入力することを含み、
前記第2の6自由度姿勢データは前記畳み込みニューラルネットワークの出力である、請求項
8に記載のコンピュータプログラム。
【請求項14】
前記IMUの前記演算パラメータの前記値は、前記IMUの温度の値を含む、請求項
9に記載のコンピュータプログラム。
【請求項15】
メモリと、
前記メモリに結合された処理回路と、
を備え、前記処理回路は、
慣性計測装置(IMU)からIMUデータを受け取り、前記IMUデータは回転速度および加速度の値を含み、前記IMUは、ある位置にある電子デバイスのカメラに接続されており、
前記位置でのシーンの画像を表す画像データを受け取り、
前記画像データおよび前記位置の近傍の地図に基づいて、前記IMUの第1の6自由度姿勢データを生成し、前記第1の6自由度姿勢データは、前記IMUの第1の位置および向きを表し、
前記回転速度および前記加速度の前記値に基づいて前記IMUの第2の6自由度姿勢データを生成し、前記第2の6自由度姿勢データは、前記IMUの第2の位置および向きを表し、
前記IMUの前記第1の6自由度姿勢データおよび前記IMUの前記第2の6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成する
ように構成されており、
前記補正された6自由度姿勢データを生成するように構成されている前記処理回路は、
カルマンフィルタの値を更新するために、前記第1の6自由度姿勢データおよび前記第2の6自由度姿勢データを
前記カルマンフィルタに入力する
ようにさらに構成されて
おり、
前記第1の6自由度姿勢データは、第1の頻度で前記カルマンフィルタへ入力され、
前記第2の6自由度姿勢データは、前記第1の頻度より高い第2の頻度で前記カルマンフィルタへ入力される、装置。
【請求項16】
前記カルマンフィルタの前記状態は、前記IMUの演算パラメータのうち1以上のパラメータの値を含み、
前記1以上のパラメータは、前記IMUの、バイアス、スケールファクタ、およびミスアライメントのうち少なくとも1つを含む、請求項15に記載の装置。
【請求項17】
前記処理回路は、更新後の前記状態の前記1以上のパラメータの値を用いて、前記IMUデータの誤差を補償するようにさらに構成されている、請求項16に記載の装置。
【請求項18】
前記第2の頻度は、前記第1の頻度の2倍である、請求項
15に記載の装置。
【請求項19】
前記第2の頻度は、前記第1の頻度の10倍である、請求項
15に記載の装置。
【請求項20】
前記第2の6自由度姿勢データを生成するように構成された前記処理回路は、
前記IMUデータを畳み込みニューラルネットワークに入力する
ようにさらに構成され、
前記第2の6自由度姿勢データは前記畳み込みニューラルネットワークの出力である、請求項
15に記載の装置。
【発明の詳細な説明】
【背景技術】
【0001】
背景
ビジュアルオドメトリは、開始位置に対して移動するカメラの6自由度(6DoF)姿勢(位置および向き)、および場合によっては速度を推定するコンピュータビジョン技術である。動きが追跡されるとき、カメラは、ある領域を通してナビゲーションを行う。ビジュアルオドメトリは、カメラからの連続した画像を分析し、連続した画像に現れる画像内の物体を追跡することによって機能する。
【0002】
視覚慣性オドメトリ(VIO:visual inertial odometry)は、慣性計測装置(IMU)を使用して行われるビジュアルオドメトリである。IMUは加速度計およびジャイロスコープを有し、加速度および回転速度を出力する。これらを6DoF姿勢に変換するために、加速度を位置に変換する2つの積分演算と、回転速度を向きに変換する1つの積分演算とを行う積分モジュールがある。それにも関わらず、IMUにはドリフト誤差があり、積分演算がドリフト誤差を悪化させるため、IMUから出力されるデータにより、姿勢が大きいレベルの誤差を含むことになる。
【0003】
この誤差に対処するため、従来のVIOは、連続した画像の間でIMUによって測定される変化が小さくなるように、画像を頻繁に更新する。場合によっては、従来のVIOは、10Hzのレートで、すなわち0.1秒ごとに画像を撮影する。
【発明の概要】
【0004】
概要
本明細書に記載する実施態様は、拡張現実(AR)システムにおけるナビゲーションのための慣性オドメトリに関する。従来のVIOでは、ARスマートグラスのフレーム上のワールドフェイシングカメラ(world-facing camera)から画像を頻繁に生成する必要がある。こうした頻繁な画像生成により、ARスマートグラスに電力を供給しているバッテリがすぐに消耗する可能性があるという問題が起こる可能性がある。バッテリを節約しながらIMUのドリフト誤差を軽減するために、改良された慣性オドメトリは、カメラの第1の6DoF姿勢を導出するために、画像に対するある位置の近傍の地図から自己位置推定を提供する。この第1の6DoF姿勢は、IMU固有値(ジャイロのバイアス、ジャイロのミスアライメントなど)から導出される補償された回転速度および加速度の測定値に基づく第2の予測された6DoF姿勢と組み合わされる。第1の6DoF姿勢および第2の6DoF姿勢の各々は、補正された6DoF姿勢およびIMU固有値を提供するために拡張カルマンフィルタ(EKF)に入力される。いくつかの実施態様では、第2の6DoF姿勢は、10Hz~200HzのレートでEKFに入力され、第1の6DoF姿勢は、1Hz以下のレートでEKFに入力される。いくつかの実施態様では、第2のDoF姿勢は、ニューラルネットワークを介して予測される。ニューラルネットワークによって使用されるリソースは、200Hzであっても、10Hzでカメラによって使用されるリソースよりもはるかに少ない。このように、地図とニューラルネットワーク/予測エンジンによって支援される慣性オドメトリは、はるかに少ない計算リソースを使用しながら正確なナビゲーションを提供することができ、その結果、ARスマートグラスのバッテリ寿命が長くなる。
【0005】
1つの全体的な態様では、方法は、慣性計測装置(IMU)からIMUデータを受け取るステップを含むことができ、IMUデータは、回転速度、加速度、および温度の値を含み、IMUは、ある位置にあるスマートグラスデバイスのフレーム上でワールドフェイシングカメラに接続されている。本方法は、上記位置でのシーンの画像を表す画像データを受け取るステップも含むことができる。本方法は、画像データおよび上記位置の近傍の地図に基づいて、IMUの第1の6自由度姿勢データを生成するステップをさらに含むことができ、第1の6自由度姿勢データは、ワールド座標系におけるIMUの第1の位置および向きを表す。本方法は、回転速度および加速度の値に基づいてIMUの第2の6自由度姿勢データを生成するステップをさらに含むことができ、第2の6自由度姿勢データは、ワールド座標系におけるIMUの第2の位置および向きを表す。本方法は、第1の6自由度姿勢データおよび第2の6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成するステップをさらに含むことができる。
【0006】
別の全体的な態様では、コンピュータプログラム製品は非一時的記憶媒体を含み、コンピュータプログラム製品は、処理回路によって実行されると、処理回路に方法を実行させるコードを含む。上記方法は、慣性計測装置(IMU)からIMUデータを受け取るステップを含むことができ、IMUデータは、回転速度、加速度、および温度の値を含み、IMUは、ある位置にあるスマートグラスデバイスのフレーム上でワールドフェイシングカメラに接続されている。上記方法は、上記位置でのシーンの画像を表す画像データを受け取るステップも含むことができる。上記方法は、画像データおよび上記位置の近傍の地図に基づいて、IMUの第1の6自由度姿勢データを生成するステップをさらに含むことができ、第1の6自由度姿勢データは、ワールド座標系におけるIMUの第1の位置および向きを表す。上記方法は、回転速度および加速度の値に基づいてIMUの第2の6自由度姿勢データを生成するステップをさらに含むことができ、第2の6自由度姿勢データは、ワールド座標系におけるIMUの第2の位置および向きを表す。上記方法は、第1の6自由度姿勢データおよび第2の6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成するステップをさらに含むことができる。
【0007】
別の全体的な態様では、装置は、メモリと、メモリに結合された処理回路とを備える。処理回路は、慣性計測装置(IMU)からIMUデータを受け取るように構成することができ、IMUデータは、回転速度、加速度、および温度の値を含み、IMUは、ある位置にあるスマートグラスデバイスのフレーム上でワールドフェイシングカメラに接続されている。処理回路は、上記位置でのシーンの画像を表す画像データを受け取るように構成することもできる。処理回路は、画像データおよび上記位置の近傍の地図に基づいて、IMUの第1の6自由度姿勢データを生成するようにさらに構成することができ、第1の6自由度姿勢データは、ワールド座標系におけるIMUの第1の位置および向きを表す。処理回路は、回転速度および加速度の値に基づいてIMUの第2の6自由度姿勢データを生成するようにさらに構成することができ、第1の6自由度姿勢データは、ワールド座標系におけるIMUの第2の位置および向きを表す。処理回路は、IMUの第1の6自由度姿勢データおよび6自由度姿勢データに基づいて、補正された6自由度姿勢データを生成するようにさらに構成することができる。
【0008】
1つまたは複数の実施態様の詳細を、添付の図面および以下の説明に示す。他の特徴は、説明および図面から、ならびに特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0009】
【
図1A】ユーザによって着用されている頭部装着型ウェアラブルデバイス例を示す図である。
【
図1B】
図1Aに示す頭部装着型ウェアラブルデバイス例の正面図である。
【
図1C】
図1Aに示す頭部装着型ウェアラブルデバイス例の背面図である。
【
図2A】スマートグラスフレーム上の関連するIMUを有するワールドフェイシングカメラ例を示す図である。
【
図2B】ユーザがARスマートグラスを使用して慣性オドメトリを行うことができるシーン例を示す図である。
【
図2C】ワールドフェイシングカメラを介してARスマートグラスで見られるようなシーン例を示す図である
【
図3】本明細書に記載する改良された技術に従って地図支援慣性オドメトリを実行する装置例を示す図である。
【
図4】地図支援慣性オドメトリを実行するフロー例を示すフローチャートである。
【
図5】本明細書に記載する改良された技術に従って地図支援慣性オドメトリを実行する方法を示すフローチャートである。
【発明を実施するための形態】
【0010】
詳細な説明
本開示は、ARスマートグラスを使用するナビゲーションのための慣性オドメトリに関する。従来のVIOでは、ARスマートグラスのフレーム上のワールドフェイシングカメラから画像を頻繁に生成する必要がある。こうした頻繁な画像生成の技術的な問題は、ARスマートグラスに電力を供給しているバッテリがすぐに消耗する可能性があるということである。
【0011】
IMUのドリフト誤差を軽減するために、かつ本明細書に記載する実施態様に従って、上述した技術的課題に対する技術的解決法は、それぞれ、画像に対するある位置の近傍の地図からの自己位置推定からの、およびIMUデータに基づく予測された6DoF姿勢からの、第1の6DoF姿勢および第2の6DoF姿勢を組み合わせる。
【0012】
第1の自己位置推定に基づく6DoF姿勢は、IMUから独立したワールド座標で6DoF姿勢を提供する、ARスマートグラスのワールドフェイシングカメラからの画像と組み合わされる、ある位置の近傍からの地図データ(例えば、Google,inc.のStreetView(登録商標)マップ)を使用するビジュアルポジショニングシステム(visual positioning system)に基づく。いくつかの実施態様では、10Hzで画像を更新するのではなく、画像は、1Hz未満で更新される。これが達成可能であるのは、慣性オドメトリが、連続した画像に依存しなくなり、むしろ地図自己位置推定データと、より頻繁に更新される予測された6DoF姿勢データとの組み合わせに基づくためである。
【0013】
第2の6DoF姿勢は、IMU固有値(例えば、ジャイロバイアス、ジャイロミスアライメント)から導出される補償された回転速度および加速度の測定値に基づく。いくつかの実施態様では、補償された回転速度および加速度の値を積分して6DoF姿勢を生成するのではなく、補償された回転速度および加速度の値は、補償された回転速度および加速度の値から直接6DoF姿勢を予測する予測エンジンに入力される。いくつかの実施態様では、予測エンジンはニューラルネットワークである。いくつかの実施態様では、第2の6DoF姿勢は、10Hz~200Hzの周波数で更新される。いくつかの実施態様では、予測エンジンは畳み込みニューラルネットワークを含む。
【0014】
第1の6DoF姿勢および第2の6DoF姿勢の各々は、補正された6DoF姿勢およびIMU固有値を提供するために拡張カルマンフィルタ(EKF)に入力することができる。EKFは、一組の測定値と更新方程式とに基づいて、状態および共分散行列を更新する。この場合に推定すべきEKFの状態は、ワールド座標系での位置、向き、および速度、ジャイロおよび加速度計のバイアス、ジャイロおよび加速度計のスケールファクタ、ジャイロおよび加速度計のミスアライメント、ならびに加速度計の座標系からワールド座標系への変換を含む、9つの3要素ベクトル成分を有する、27要素の状態ベクトルである。共分散行列は、状態推定値の誤差を表し、連続的な更新によって減少するため、共分散行列の大きさが閾値を下回ると、状態推定値はあるエポックで最終的なものになる。
【0015】
いくつかの実施態様では、ジャイロおよび加速度計のバイアス、ジャイロおよび加速度計のスケールファクタ、ならびにジャイロおよび加速度計のミスアライメントなどの状態ベクトルの要素は、IMU固有パラメータを表す。IMU固有パラメータおよびそれらの値は、IMU出力補償モジュールにフィードバックすることができる。IMU出力補償モジュールは、ドリフト誤差を補正するために、回転速度および加速度の値を補償するように構成されている。これらの補償された値は、その後、予測エンジンおよび/または積分モジュールへの入力として使用することができる。
【0016】
上述した技術的解決法の技術的利点は、地図およびニューラルネットワーク/予測エンジンによって支援される慣性オドメトリが、はるかに少ない計算リソースを使用しながら正確なナビゲーションを提供することができ、その結果、ARスマートグラスのバッテリ寿命が長くなる、ということである。これが可能であるのは、予測エンジンからの第2の6DoF姿勢に対する更新の各々が、10Hzで連続した画像を分析するよりもはるかに少ない計算リソースを使用し、ここで生成される画像は、はるかに低い周波数、例えば1Hz未満で生成されるためである。
【0017】
図1Aは、ディスプレイ機能、アイトラッキング/視線追跡機能、およびコンピューティング/処理機能を含むスマートグラス例100を着用している、ユーザを示す。
図1Bは、
図1Aに示すスマートグラス例100の正面図であり、
図1Cは背面図である。スマートグラス例100はフレーム110を含む。フレーム110は、フロントフレーム部分120と、それぞれのヒンジ部分140によってフロントフレーム部分120に回転可能に連結された一対のテンプルアーム部分130とを含む。フロントフレーム部分120は、レンズ127の形態のそれぞれの光学部分を取り囲むリム部分123を含み、ブリッジ部分129がリム部分123を接続している。テンプルアーム部分130は、それぞれのリム部分123の周辺部分でフロントフレーム部分120に、例えば枢動可能にまたは回転可能に、連結されている。いくつかの例では、レンズ127は矯正/度付きレンズである。いくつかの例では、レンズ127は、必ずしも矯正/処方パラメータを組み込まないガラスおよび/またはプラスチック部分を含む光学材料である。
【0018】
いくつかの例では、スマートグラス100は、視覚的コンテンツがユーザに見えるように、例えば出力カプラ105で視覚的コンテンツを出力することができる、ディスプレイデバイス104を含む。
図1Bおよび
図1Cに示す例では、ディスプレイデバイス104は、単に考察および説明の目的で、2つのアーム部分130のうちの一方に設けられている。ディスプレイデバイス104は、コンテンツの両眼出力を提供するように、2つのアーム部分130の各々に設けてもよい。いくつかの例では、ディスプレイデバイス104は、透けて見えるニアアイディスプレイ(near eye display)であり得る。いくつかの例では、ディスプレイデバイス104は、ディスプレイ光源からの光を、斜めに(例えば、30~45度で)設置されたビームスプリッタとして機能するテレプロンプタガラスの一部分に投影するように構成することができる。ビームスプリッタは、ディスプレイ光源からの光を部分的に反射させる一方で残りの光を透過させる、反射値および透過値を可能にすることができる。こうした光学設計により、ユーザは、ディスプレイデバイス104によって出力されるコンテンツ(例えば、デジタル画像、ユーザインターフェース要素、仮想コンテンツなど)の隣に、現実世界の物理的項目をともに、例えばレンズ127を通して見ることができる。いくつかの実施態様では、導波路光学系を使用して、ディスプレイデバイス104にコンテンツを描写することができる。
【0019】
いくつかの例では、スマートグラス100は、音声出力デバイス106(例えば、1つまたは複数のスピーカなど)、照明デバイス108、検知システム111、制御システム112、少なくとも1つのプロセッサ114、および外向き画像センサ、すなわちワールドフェイシングカメラ116のうちの1つまたは複数を含む。いくつかの例では、検知システム111は、さまざまな検知デバイスを含むことができ、制御システム112は、例えば、制御システム112の構成要素に動作可能に結合された1つまたは複数のプロセッサ114を含むさまざまな制御システムデバイスを含むことができる。いくつかの例では、制御システム112は、スマートグラス100と他の外部デバイスとの間の通信および情報交換を提供する通信モジュールを含むことができる。いくつかの例では、頭部装着型スマートグラス100は、視線の方向および動きを検出および追跡する視線追跡デバイス115を含む。視線追跡デバイス115によって取り込まれたデータを処理して、ユーザ入力として視線の方向および動きを検出および追跡することができる。
図1Bおよび
図1Cに示す例では、視線追跡デバイス115は、単に考察および説明の目的で、2つのアーム部分130のうちの一方に設けられている。
図1Bおよび
図1Cに示す配置例では、視線追跡デバイス115は、ディスプレイデバイス104と同じアーム部分130に設けられており、そのため、ユーザの視線は、物理的環境内の物体に関してだけでなく、ディスプレイデバイス104によって表示されるために出力されるコンテンツに関しても追跡することができる。いくつかの例では、視線、または視線追跡デバイス115は、ユーザの両眼の各々の視線追跡を提供するために、2つのアーム部分130の各々に設けてもよい。いくつかの例では、ディスプレイデバイス104は、視覚的コンテンツの両眼表示を提供するために、2つのアーム部分130の各々に設けてもよい。
【0020】
図2Aは、スマートグラスフレーム110上のワールドフェイシングカメラ116の一例を示す図である。
図2Aに示すように、ワールドフェイシングカメラ116は、取り付けられた慣性計測装置(IMU)202を有する。IMU202は、回転速度を測定するように構成された一組のジャイロと、カメラが頭部および/もしくは身体またはユーザとともに移動する際にカメラ116の加速度を測定するように構成された加速度計とを含む。
【0021】
図2Bは、ユーザがARスマートグラス100を使用して慣性オドメトリを行うことができるシーン例200を示す図である。
図2Bに示すように、ユーザは、シーン200内の位置210でシーン200を見る。ユーザが、位置210からシーン200を見ると、ワールドフェイシングカメラ116がシーン200の一部分をディスプレイに表示し、その部分は、シーンの世界座標系におけるカメラ116の6DoF姿勢によって決まる。ユーザがシーン200内を移動すると、カメラは、IMU202からのデータに基づいて、ナビゲーション(すなわち、シーン200内でユーザがどの方向に移動しているかをユーザに知らせること)を提供することができる。
【0022】
図2Cは、ワールドフェイシングカメラ116を介してARスマートグラス100で見られるようなシーン例200を示す図である。ARスマートグラス100は、ワールドフェイシングカメラからの画像をディスプレイに投影する。ユーザが西寄りの方向に移動した場合、IMU202からのデータは、ユーザが西寄りの方向に移動していることを示すことができる。そして、スマートグラス100は、例えば、ユーザがシーン200内で移動する方向をユーザに知らせる矢印220を、画像の上でディスプレイに重ねることができる。このように、スマートグラスは、慣性オドメトリを使用してナビゲーションを提供することができる。
【0023】
図3は、処理回路320の一例を示す図である。処理回路320は、ネットワークインターフェース322、1つまたは複数の処理ユニット324、および非一時的メモリ326を含む。ネットワークインターフェース322は、ネットワークから受信した電子および/または光信号を、処理回路320が使用する電子形態に変換する、例えば、イーサネット(登録商標)アダプタ、トークンリングアダプタ、Bluetooth(登録商標)アダプタ、WiFiアダプタ、NFCアダプタなどを含む。一組の処理ユニット324は、1つまたは複数の処理チップおよび/またはアセンブリを含む。メモリ326は、揮発性メモリ(例えば、RAM)と、1つまたは複数のROM、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリとの両方を含む。一組の処理ユニット324およびメモリ326は、合わせて処理回路を形成し、この処理回路は、本明細書に記載するようなさまざまな方法および機能を実行するように構成および配置されている。
【0024】
いくつかの実施態様では、処理回路320の構成要素のうちの1つまたは複数は、メモリ326に格納された命令を処理するように構成されたプロセッサ(例えば、処理ユニット324)とすることができ、またはそうしたプロセッサを含むことができる。
図3に示すようなそうした命令の例は、IMUマネージャ330、ニューラルネットワークマネージャ340、ビジュアルポジショニングシステムマネージャ350、および拡張カルマンフィルタマネージャ360を含む。さらに、
図3に示すように、メモリ326は、さまざまなデータを記憶するように構成されており、こうしたデータについて、そうしたデータを使用するそれぞれのマネージャに関して説明する。
【0025】
IMUマネージャ330は、IMUデータ333を取得するように構成されている。いくつかの実施態様では、IMUマネージャ330は、IMUデータ333を無線で取得する。
図3に示すように、IMUマネージャ330は、誤差補償マネージャ331および積分マネージャ332を含む。
【0026】
誤差補償マネージャ331は、EKFマネージャ360からIMU固有パラメータ値を受け取るように構成されている。誤差補償マネージャ331は、さらに、例えばIMUマネージャ330からIMU出力(IMUデータ333)を受け取り、IMU固有パラメータ値を使用して、IMU出力をドリフト誤差に対して補償するように構成されている。そして、誤差補償マネージャ331は、誤差補償を実行した後、IMUデータ333を生成するように構成されている。
【0027】
積分マネージャ332は、IMUデータ333に対して積分演算(例えば、時間依存値の合計)を実行するように構成されている。特に、回転速度データ334は経時的に積分されて、向きを生成する。さらに、加速度データ335は2回にわたって積分されて、位置を生成する。したがって、積分マネージャ332は、IMU出力、すなわち回転速度データ334および加速度データ335から、6DoF姿勢(位置および向き)を生成する。
【0028】
IMUデータ333は、EKFマネージャ360によって決定されたIMU固有パラメータ値を使用してドリフト誤差が補償された、(ローカル座標系、すなわちIMUの座標系とは対照的な)ワールド座標系におけるジャイロおよび加速度計の測定値、回転速度データ334、および加速度データ335を表す。さらに、IMUデータ333は、ジャイロおよび加速度計の測定値から導出される、6DoF姿勢および移動データ、位置データ337、向きデータ338、および速度データ339を含む。最後に、いくつかの実施態様では、IMUデータ333はIMU温度データ336も含み、これは回転速度データ334および加速度データ335におけるさらなる誤差を示す可能性がある。
【0029】
ニューラルネットワークマネージャ340は、回転速度データ334および加速度データ335を入力として取得し、第2の位置データ344、第2の向きデータ346、および第2の速度データ348を含むニューラルネットワークデータ342を生成するように構成されている。いくつかの実施態様では、入力された回転速度データ334および加速度データ335は、生の、すなわちIMU固有パラメータ値によって補償される誤差を含むIMU出力値に作用する、誤差補償マネージャ331によって生成される。
図3に示すように、ニューラルネットワークマネージャ340は、ニューラルネットワークトレーニングマネージャ341を含む。
【0030】
ニューラルネットワークトレーニングマネージャ341は、トレーニングデータ349を取り込み、層ならびにコスト関数および値に関するデータを含むニューラルネットワークデータ342を生成するように構成されている。いくつかの実施態様では、トレーニングデータ349は、ARスマートグラスを着用し、頭部および身体の他の部分を動かしている人々の測定値から取得される動きデータとともに、それらの測定値から取得されたグランドトゥルース6DoF姿勢データを含む。いくつかの実施態様では、トレーニングデータ349は、測定された6DoF姿勢および速度と対になった、動きからの測定された回転速度および加速度を含む。
【0031】
加えて、いくつかの実施態様では、ニューラルネットワークマネージャ340は、IMUからの履歴データを使用して、第1の位置データ344、第1の向きデータ346、および第1の速度データ348を生成する。例えば、履歴データを使用して、以前の回転速度、加速度、および温度の、それらの結果としての6DoF姿勢および動きの結果へのマップを用いてトレーニングデータ349が補強され、したがってニューラルネットワークがさらに精緻化される。
【0032】
いくつかの実施態様では、ニューラルネットワークマネージャ340によって表されるニューラルネットワークは、畳み込みニューラルネットワークであり、層は畳み込み層である。
【0033】
ビジュアルポジショニングシステム(VPS)マネージャ350は、画像と、画像の位置の近傍の領域の地図とを入力として取り込み、第1の位置データ354、第1の向きデータ356を含むVPSデータ352を生成するように構成されており、いくつかの実施態様では、VPSデータはまた、第1の速度データ358、すなわち、画像内の地図自己位置推定に基づく6DoF姿勢も含む。いくつかの実施態様では、画像は、ARスマートグラスのフレーム上のワールドフェイシングカメラ(例えば、116)を用いて取得される。
【0034】
画像の地図自己位置推定は、地図を使用して、ワールドフェイシングカメラの6DoF姿勢のワールド座標を決定することである。いくつかの実施態様では、地図はGoogle Maps Street View(登録商標)である。例えば、地図自己位置推定は、Google(登録商標)ビジュアルポジショニングシステム(Visual Positioning System)または他の同様の地図などのシステムを使用して達成することができる。
【0035】
いくつかの実施態様では、VPSデータ352を生成する際のVPSマネージャ350の精度レベルは、その位置を取り巻く環境によって決まる。例えば、屋内位置に対する精度要件はほぼ1~10cmであり得るが、屋外位置に対する精度要件はほぼ1~10mであり得る。
【0036】
拡張カルマンフィルタ(EKF)マネージャ360は、EKFデータ362に基づいて6DoF姿勢の推定値を生成し、例えば、ある位置を通ってユーザをナビゲートするための、最終6DoF姿勢データ370を返すように構成されている。
【0037】
EKFデータ362は、EKFマネージャ360によって更新される状態および共分散、ならびに更新方程式の一部である残差項および誤差項を表す。
図3に示すように、EKFデータ362は、状態データ363、共分散行列データ364、残差データ365、残差勾配データ366、測定ノイズ行列データ367、およびプロセスノイズ行列データ368を含む。
【0038】
状態データ363は、EKFマネージャ360によって更新される状態xを表す。ここで、状態xは、1×30配列であり、x=[v,p,qg,qa,bg,ba,sg,sa,mg,ma]であり、各1x3要素は以下の通りである。
【0039】
・vは、ワールド座標系での速度であり、
・pは、ワールド座標系での位置であり、
・qgは、ワールド座標系に対するジャイロの(例えばオイラー角で表される)向きであり、
・qaは、ワールド座標系に対する加速度計の向きであり、
・bgは、ジャイロのバイアス(固有パラメータ)であり、
・baは、加速度計のバイアス(固有パラメータ)であり、
・sgは、ジャイロのスケールファクタ(固有パラメータ)であり、
・saは、加速度計のスケールファクタ(固有パラメータ)であり、
・mgは、ジャイロのミスアライメント(固有パラメータ)であり、
・maは、加速度計のミスアライメント(固有パラメータ)である。
【0040】
共分散行列データ364は、30×30の共分散行列Pを表し、これは状態xの推定値の精度の尺度である。
【0041】
残差データ366は、残差ベクトル、すなわちイノベーションベクトルを表し、ここでは、νk=zk-h(xk,k)によって与えられ、式中、zkはエポックkでの測定値であり、h(xk,k)は、その観測のエポックkでの予測値であり、エポックkでの予測された状態xkの関数である。(エポックは、EKFで更新が発生する時間間隔であることに留意されたい)。例えば、ニューラルネットワーク観測値zk=[pnk,vnk,qnk]+n1(式中、n1はニューラルネットワークの測定誤差、すなわちノイズである)に対して、予測値はh(xk,k)=[pk,vk,qk]であり、イノベーションνkは差である。地図観測値は、zk=[pmk,qnk]+m1であり、予測値h(xk,k)=[pk,qk]であり、したがって、イノベーションνkは差である。
【0042】
残差勾配データ366は、状態xに対する残差y(t)の3×10の勾配Hを表す。
測定ノイズ行列データ367は、3×3の測定ノイズ行列Rを表す。これは、測定ノイズの分散を表す。
【0043】
プロセスノイズ行列データ368は、30×30のプロセスノイズ行列Qを表す。これは、バイアスの緩慢な変化およびモデルの線形化に起因する誤差などのモデル誤差を表す。
【0044】
EKFマネージャ360は、以下の更新方程式を通して状態データ363および共分散行列データ364を更新する。
【0045】
【0046】
(*)は状態更新方程式であり、(**)は共分散行列更新方程式であることに留意されたい。共分散行列Pの大きさは、許容範囲が達成されるまで、反復するたびに小さくなるはずである。許容範囲が達成されると、その状態が最終的な状態となり、その状態の回転行列が最終的な6DoF姿勢データ370を提供する。
【0047】
ニューラルネットワークおよび地図からの観測値は、異なる周波数でEKFマネージャ360に提供される可能性があることに留意されたい。これについては、
図4に関して説明する。
【0048】
処理回路320の構成要素(例えば、モジュール、処理ユニット324)は、1つまたは複数のタイプのハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリなどを含むことができる1つまたは複数のプラットフォーム(例えば、1つまたは複数の同様のまたは異なるプラットフォーム)に基づいて動作するように構成することができる。いくつかの実施態様では、処理回路320の構成要素は、デバイスのクラスタ(例えば、サーバファーム)内で動作するように構成することができる。こうした実施態様では、処理回路320の構成要素の機能性および処理は、デバイスのクラスタのいくつかのデバイスに分散させることができる。
【0049】
処理回路320の構成要素は、属性を処理するように構成された任意のタイプのハードウェアおよび/またはソフトウェアとすることができ、またはそうしたものを含むことができる。いくつかの実施態様では、
図3の処理回路320の構成要素に示す構成要素の1つまたは複数の部分は、ハードウェアベースのモジュール(例えば、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリ)、ファームウェアモジュール、および/またはソフトウェアベースのモジュール(例えば、コンピュータコードのモジュール、コンピュータで実行することができるコンピュータ可読命令のセット)とすることができ、またはそうしたものを含むことができる。例えば、いくつかの実施態様では、処理回路320の構成要素の1つまたは複数の部分は、少なくとも1つのプロセッサ(図示せず)によって実行されるように構成されたソフトウェアモジュールとすることができ、またはそうしたソフトウェアモジュールを含むことができる。いくつかの実施態様では、構成要素の機能性は、2つの構成要素として示す機能性を組み合わせて単一の構成要素にすることなど、
図3に示すものとは異なるモジュールおよび/または異なる構成要素に含めることができる。
【0050】
図示しないが、いくつかの実施態様では、処理回路320の構成要素(またはその一部)は、例えば、データセンタ(例えば、クラウドコンピューティング環境)、コンピュータシステム、1つまたは複数のサーバ/ホストデバイスなどの中で動作するように構成することができる。いくつかの実施態様では、処理回路320の構成要素(またはその一部)は、ネットワーク内で動作するように構成することができる。したがって、処理回路320の構成要素(またはその一部)は、1つもしくは複数のデバイスおよび/または1つもしくは複数のサーバデバイスを含むことができるさまざまなタイプのネットワーク環境内で機能するように構成することができる。例えば、ネットワークは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)などとすることができ、またはそうしたものを含むことができる。ネットワークは、例えば、ゲートウェイデバイス、ブリッジ、スイッチなどを使用して実装される無線ネットワークおよび/または無線ネットワークとすることができ、またはそうしたものを含むことができる。ネットワークは、1つまたは複数のセグメントを含むことができ、かつ/または、インターネットプロトコル(IP)および/またはプロプラエタリプロトコルなどのさまざまなプロトコルに基づく部分を有することができる。ネットワークは、インターネットの少なくとも一部を含むことができる。
【0051】
いくつかの実施態様では、検索システムの構成要素の1つまたは複数は、メモリに格納された命令を処理するように構成されたプロセッサとすることができ、またはそうしたプロセッサを含むことができる。例えば、IMUマネージャ330(および/またはその一部)、ニューラルネットワークマネージャ340(および/またはその一部)、VPSマネージャ350、およびEKFマネージャ360(および/またはその一部)は、そうした命令の例である。
【0052】
いくつかの実施態様では、メモリ326は、ランダムアクセスメモリ、ディスクドライブメモリ、フラッシュメモリなどの任意のタイプのメモリとすることができる。いくつかの実施態様では、メモリ326は、処理回路320の構成要素に関連付けられた2つ以上のメモリコンポーネント(例えば、2つ以上のRAMコンポーネントまたはディスクドライブメモリ)として実装することができる。いくつかの実施態様では、メモリ326は、データベースメモリとすることができる。いくつかの実施態様では、メモリ326は、非ローカルメモリとすることができ、または非ローカルメモリを含むことができる。例えば、メモリ326は、複数のデバイス(図示せず)によって共有されるメモリとすることができ、またはそうしたメモリを含むことができる。いくつかの実施態様では、メモリ326は、ネットワーク内のサーバデバイス(図示せず)に関連付け、処理回路320の構成要素にサービスを提供するように構成することができる
図4は、地図支援慣性オドメトリを実行するフロー例400を示すフローチャートである。フロー400は、処理回路320のメモリ326に常駐し、一組の処理ユニット324によって実行される、
図3に関連して記載したソフトウェア構成体によって実行することができる。
【0053】
410において、IMUは、離散的な瞬間における回転速度および加速度を測定する。IMUはまた、その瞬間の温度も測定することができる。これらの値は、IMUドリフトに起因して、時間が長くなるに従い誤差が大きくなる可能性がある。
【0054】
420において、誤差補償マネージャ(例えば、誤差補償マネージャ331)は、IMU固有パラメータ値に基づく誤差補償値を用いて、その瞬間の回転速度および加速度の値を補償して、誤差補償された回転速度および加速度の値を生成する。IMU固有パラメータ値は、
図3に関して定義した、以下の状態ベクトルの要素である。
【0055】
・ジャイロのバイアスbg、
・加速度計のバイアスba、
・ジャイロのスケールファクタsg、
・加速度計のスケールファクタsa、
・ジャイロのミスアライメントmg、および
・加速度計のミスアライメントma。
【0056】
430において、IMU積分器が、誤差補償された回転速度および加速度の値を積分して、積分された6DoF姿勢および速度を生成する。具体的には、回転速度は、向きを生成するために1回加速され、加速度は、速度を生成するために1回積分され、位置を生成するためにもう1回積分される。6DoF姿勢および速度はワールド座標系にある。
【0057】
420での誤差補償と430での積分とは、高頻度で、例えば約200Hzで発生する。
【0058】
440において、ニューラルネットワークモジュールが、第2の6DoF姿勢および第2の速度を生成するための畳み込みニューラルネットワークモデルへの入力として、誤差補償された回転速度および加速度の値を取得する。ニューラルネットワークモジュールは、ニューラルネットワークモデリングを実行し、10~200Hzのレートで第1の6DoF姿勢および第1の速度を生成することができる。第1の6DoF姿勢は、人の動きに対する制約を提供して、その制約がトレーニングデータに反映されるようにする。
【0059】
450において、(IMUに関連付けられた)ワールドフェイシングカメラが、低周波数、例えば5Hz未満で、ある位置におけるシーンの画像を取得する。
【0060】
460において、自己位置推定モジュールが、シーンのその位置に対応する地図データを取得する。
【0061】
470において、自己位置推定モジュールは、ビジュアルポジショニングシステムを使用して、ワールドフェイシングカメラの第1の6DoF姿勢のためのワールド座標を決定する。VPSは、第2の6DoF姿勢における空間誤差を制限するための誤差範囲制御を提供する。
【0062】
480において、EKFは、それぞれの周波数で、すなわち、10~200Hzで第2の6自由度姿勢を取り込み、5Hz未満で第1の6自由度姿勢を取り込む。これは、最大でも2エポックごとにVPS測定値があり、大部分の場合、10エポックごとにVPS測定値があり、一方、すべてのエポックにニューラルネットワーク測定値があることを意味する。次いで、EKFは、200Hzで6DoF姿勢の正確な推定を行う。
【0063】
図5は、方法例500を示すフローチャートである。方法500は、処理回路320のメモリ326に常駐し、一組の処理ユニット324によって実行される、
図3に関連して記載したソフトウェア構成体によって実行することができる。
【0064】
502において、IMUマネージャ(330)は、慣性計測装置(IMU)からIMUデータ(IMUデータ333)を受け取り、IMUデータは、回転速度(334)および加速度(335)の値を含み、IMUは、ある位置でスマートグラスデバイス(100)のフレーム(110)上のワールドフェイシングカメラ(116)に接続されている。
【0065】
504において、ニューラルネットワークマネージャ(340)は、IMUデータに基づいてIMUの第2の6自由度姿勢データ(344、346)を生成し、IMUの第2の6自由度姿勢データは、ワールド座標系におけるIMUの位置および向きを表す。
【0066】
506において、VPSマネージャ(350)は、その位置でのシーンの画像を表す画像データを受け取る。
【0067】
508において、VPSマネージャは、画像データおよびその位置の近傍の地図(例えば、シーン200)に基づいて、IMUの第1の6自由度姿勢データ(354、356)を生成し、IMUの第1の6自由度姿勢データは、ワールド座標系におけるIMUの位置および向きを表す。
【0068】
510において、EKFマネージャ(360)は、IMUの第1の6自由度姿勢データおよびIMUの第2の6自由度姿勢データに基づいて、IMUの補正された6自由度姿勢データ(370)を生成する。
【0069】
多くの実施態様について説明した。それにもかかわらず、本明細書の趣旨および範囲から逸脱することなく、さまざまな変更を行うことができることが理解されよう。
【0070】
ある要素が、別の要素上にある、別の要素に接続されている、別の要素に電気的に接続されている、別の要素に連結されている、または別の要素に電気的に連結されていると言う場合、その要素は、直接、他の要素の上にある、他の要素に接続されている、または他の要素に連結されている可能性があるか、または1つもしくは複数の介在要素が存在する場合があることもまた理解されよう。対照的に、ある要素が、直接別の要素の上にある、別の要素に直接接続されている、または別の要素に直接連結されていると言う場合、介在要素は存在しない。直接上にある、直接接続されている、または直接連結されているという用語は、詳細な説明全体を通して使用していない場合があるが、直接上にある、直接接続されている、または直接連結されているとして示す要素は、そういうものとしてみなすことができる。明細書に記載するかまたは図に示す関係例を記載するように、本出願の特許請求の範囲を補正することができる。
【0071】
記載した実施態様のいくつかの特徴を、本明細書に記載したように例示しているが、当業者であれば、多くの改変、置換、変更、および均等物が想到するであろう。したがって、添付の特許請求の範囲は、実施態様の範囲内にあるようなすべてのこうした変更および変形を包含することが意図されていることが理解されるべきである。これらは、限定ではなく、単に例として提示されており、形態および詳細におけるさまざまな変更を行ってもよいことが理解されるべきである。本明細書に記載する装置および/または方法のいずれの部分も、相互に排他的な組み合わせを除き、任意の組み合わせで組み合わせることができる。本明細書に記載する実施態様は、記載する異なる実施態様の機能、構成要素、および/または特徴のさまざまな組み合わせおよび/またはサブコンビネーションを含むことができる。
【0072】
加えて、図に示す論理フローは、望ましい結果を得るために、図示する特定の順序、または連続した順序を必須とするものではない。加えて、記載したフローに他のステップを設けてもよく、または、記載したフローからステップを削除してもよく、記載したシステムに他の構成要素を追加してもよく、または記載したシステム削除してもよい。したがって、他の実施態様も以下の特許請求の範囲内にある。