(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-03-16
(54)【発明の名称】ロボットデバイスの状態を使用した環境のマッピング
(51)【国際特許分類】
G06T 7/70 20170101AFI20220309BHJP
【FI】
G06T7/70 Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021543212
(86)(22)【出願日】2020-01-15
(85)【翻訳文提出日】2021-07-26
(86)【国際出願番号】 GB2020050083
(87)【国際公開番号】W WO2020152436
(87)【国際公開日】2020-07-30
(32)【優先日】2019-01-24
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】519426058
【氏名又は名称】インペリアル カレッジ イノベイションズ リミテッド
【氏名又は名称原語表記】IMPERIAL COLLEGE INNOVATIONS LIMITED
【住所又は居所原語表記】Level 1 Faculty Building, C/O Imperial College, Exhibition Road London SW7 2AZ, United Kingdom
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】チャールズ・フレッチャー・オウセアゴ
(72)【発明者】
【氏名】マイケル・ブロエッシュ
(72)【発明者】
【氏名】シュテファン・ロイテネッガー
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA09
5L096BA05
5L096CA02
5L096FA66
5L096FA67
5L096FA69
5L096GA30
(57)【要約】
本明細書に説明する特定の例は、ロボットデバイスが周囲環境を正確にマッピングすることを可能にする。ロボットデバイスは画像キャプチャデバイスを使用し、画像キャプチャデバイス及びロボットデバイスの少なくとも1つは環境内で移動する。画像キャプチャデバイス及びロボットデバイスの少なくとも1つの移動と関連する測定値は、ロボットデバイスの状態を決定するために使用される。ロボットデバイスの状態は、マッピングエンジンによって構築される環境のモデルに対して画像キャプチャデバイス及びロボットデバイスをモデル化する。ロボットデバイスの状態をロボットデバイスの測定された変化と比較することによって、ロボットデバイスの状態の正確な表現が構築され得る。この状態は、環境のモデルを更新するためにマッピングエンジンによって使用される。
【特許請求の範囲】
【請求項1】
ロボットデバイス用のマッピングシステムであって、前記ロボットデバイスが、環境内で前記ロボットデバイスを移動させるための1つ以上のアクチュエータと、画像キャプチャデバイス用の可動マウントとを備え、前記マッピングシステムが、
前記ロボットデバイスの現在の状態と、前記ロボットデバイスの以前の状態を、運動誤差、走行距離計誤差、及び幾何学的誤差に基づいてともに最適化するための状態エンジン
を備え、
前記ロボットデバイスの各状態が、前記環境のモデルに対する前記ロボットデバイスのポーズを示すデータ、及び前記モデルに対する前記画像キャプチャデバイスのポーズを示すデータを含み、
前記運動誤差が、前記可動マウントと関連する運動測定値、及び前記現在の状態から導出された前記ロボットデバイスに対する前記画像キャプチャデバイスのポーズの関数を含み、
前記走行距離計誤差が、前記1つ以上のアクチュエータと関連する走行距離計測法の測定値、及び前記現在の状態と前記以前の状態との間の走行距離計差異の関数を含み、
前記幾何学的誤差が、前記キャプチャデバイスからの画像データと、前記環境の前記モデルとの比較を含み、前記比較が、前記現在の状態に基づいた投影を使用し、
前記マッピングシステムが、前記状態エンジンによる最適化に続いて前記現在の状態を使用し、前記モデルを更新するように構成される
前記マッピングシステム。
【請求項2】
前記可動マウントが複数の関節を備え、前記ロボットデバイスに対する前記画像キャプチャデバイスの前記ポーズが、順運動学を使用して決定される、請求項1に記載のマッピングシステム。
【請求項3】
前記モデルに対する前記ロボットデバイスの前記ポーズ、及び前記モデルに対する前記画像キャプチャデバイスの前記ポーズが、6自由度の範囲内で定義される、請求項1または請求項2に記載のマッピングシステム。
【請求項4】
前記状態エンジンが、一次事前確率を使用して前記現在の状態と前記以前の状態をともに最適化するように構成され、前記状態エンジンが、前記運動誤差、前記走行距離計誤差、前記幾何学的誤差、及び前記以前の状態の周辺化に基づいて、最適化に続いて前記一次事前確率を更新するように構成される、請求項1~3のいずれか1項に記載のマッピングシステム。
【請求項5】
前記マッピングエンジンが、前記モデルの第1のセットの部分を前記モデルの第2のセットの部分とアラインさせるために変形グラフを使用するように構成され、前記変形グラフが、アライメント中に所与の位置で前記モデルを修正するために使用される、前記モデルの前記所与の位置の近接点のセットを示す、請求項4に記載のマッピングシステム。
【請求項6】
前記マッピングエンジンが、ループクロージャ中に前記モデルの前記第1のセットの部分を前記モデルの前記第2のセットの部分とアラインさせるように構成され、前記ループクロージャに続いて、前記一次事前確率及び前記以前の状態が再初期化される、請求項5に記載のマッピングシステム。
【請求項7】
前記モデルが面素モデルを含み、前記面素モデルの各面素が、少なくとも、3次元での前記面素の位置を定義するデータ、及び3次元での前記面素の法線ベクトルを定義するデータを含み、各面素が、3次元空間での2次元領域を表す、請求項1~6のいずれか1項に記載のマッピングシステム。
【請求項8】
前記マッピングシステムが、前記画像キャプチャデバイスのためのポーズグラフなしで前記モデルを生成するように構成される、請求項1~7のいずれか1項に記載のマッピングシステム。
【請求項9】
ロボットデバイスであって、
前記ロボットデバイスに対して移動できるように取り付けられた画像キャプチャデバイスと、
環境に対して前記ロボットデバイス及び前記画像キャプチャデバイスの1つ以上を移動させるための1つ以上のアクチュエータと、
前記ロボットデバイスの状態を更新するための状態エンジンと、
前記ロボットデバイスの前記状態を使用して前記環境の3次元モデルを生成するためのマッピングエンジンと
を備え、
前記ロボットデバイスの前記状態が、前記3次元モデルに対する前記画像キャプチャデバイスの少なくとも変換を含み、
前記状態エンジンが、前記ロボットデバイスの前記状態と、前記1つ以上のアクチュエータから取得した測定値との比較に基づいて、前記ロボットデバイスの前記状態を更新するように構成され、
前記マッピングエンジンが、前記3次元モデルを更新するために、前記ロボットデバイスの前記状態に基づいて、前記画像キャプチャデバイスからの画像を前記3次元モデルと比較するように構成される
前記ロボットデバイス。
【請求項10】
前記マッピングエンジンが、反復最接近点誤差を決定するように構成され、前記状態エンジンが、前記ロボットデバイスの前記状態を更新するために前記反復最接近点誤差をさらに使用するように構成される、請求項9に記載のロボットデバイス。
【請求項11】
前記1つ以上のアクチュエータが、
前記環境に対して前記ロボットデバイスを移動させるためのアクチュエータの第1のセットと、
前記ロボットデバイスに対して前記画像キャプチャデバイスを移動させるためのアクチュエータの第2のセットと、
を備え、
前記ロボットデバイスの前記状態が、前記3次元モデルに対する前記ロボットデバイスの変換をさらに含む、
請求項9または請求項10に記載のロボットデバイス。
【請求項12】
前記アクチュエータの第1のセットが、前記ロボットデバイスと前記環境との間で複数の自由度を提供し、前記アクチュエータの第2のセットが、前記画像キャプチャデバイスと前記ロボットデバイスとの間で複数の自由度を提供する、請求項11に記載のロボットデバイス。
【請求項13】
前記画像キャプチャデバイスが、カラー画像データ及び深度マップを出力するように構成され、前記マッピングエンジンが、前記3次元モデルを更新するために前記カラー画像データ及び前記深度マップを使用するように構成される、請求項9~12のいずれか1項に記載のロボットデバイス。
【請求項14】
移動できるように結合された画像キャプチャデバイスを有するロボットデバイスを使用して環境の3次元モデルを更新する方法であって、
前記画像キャプチャデバイス及び前記ロボットデバイスの少なくとも1つの前記環境内での移動を命令することと、
前記画像キャプチャデバイスを用いて前記環境の観測を表す画像データを取得することと、
前記移動の測定値を取得することと、
前記ロボットデバイスのモデル状態を更新することであって、前記ロボットデバイスの前記モデル状態が、前記ロボットデバイス及び前記画像キャプチャデバイスのポーズデータを含み、前記更新することが前記モデル状態及び前記移動の前記測定値の関数を最適化することを含む、前記更新することと、
前記更新したモデル状態を使用する前記画像データと前記3次元モデルとの比較に基づいて、前記環境の前記3次元モデルを更新することであって、前記比較が、前記更新したモデル状態を使用する投影を含む、前記更新することと
を含む、前記方法。
【請求項15】
前記ポーズデータが、前記3次元モデルに対する前記ロボットデバイスの変換、及び前記ロボットデバイス及び前記3次元モデルの少なくとも1つに対する前記画像キャプチャデバイスの変換を含む、請求項14に記載の方法。
【請求項16】
移動を命令することが、
アクチュエータの第1のセットに、前記環境内で前記ロボットデバイスを移動させるように命令することと、
アクチュエータの第2のセットに、前記ロボットデバイスに対して前記画像キャプチャデバイスを移動させるように命令することと
の1つ以上を含み、
前記ロボットデバイスから移動の測定値を取得することが、
前記アクチュエータの第1のセットから走行距離計測法データを取得することと、
前記アクチュエータの第2のセットから運動データを取得することと
の1つ以上を含む、請求項14または請求項15に記載の方法。
【請求項17】
前記ロボットデバイス及び前記画像キャプチャデバイスの前記モデル状態を更新することが、
コスト関数を最適化することであって、前記コスト関数が、運動誤差と関連する誤差項、及び走行距離計誤差と関連する誤差項を含む、前記最適化すること
を含み、
前記運動誤差が、前記画像キャプチャデバイスと前記ロボットデバイスとの間の空間関係と、前記ロボットデバイスからの運動測定値との比較を含み、
前記走行距離計誤差が、前記ロボットデバイスと前記環境の前記3次元モデルとの間の前記空間関係の変化と、前記ロボットデバイスからの走行距離計測法データとの比較を含む、
請求項14~16のいずれか1項に記載の方法。
【請求項18】
前記コスト関数が、一次事前確率と関連する誤差項を含み、前記一次事前確率が、誤差値、及び以前の更新操作からの前記ロボットデバイスの前記モデル状態を使用して構築される、請求項17に記載の方法。
【請求項19】
前記コスト関数が、幾何学的アライメント誤差に関連する誤差項を含み、前記幾何学的アライメント誤差が、前記取得した画像データから導出された深度データと、前記更新前の前記ロボットデバイスの前記モデル状態を使用する前記3次元モデルとの比較を含む、請求項17または請求項18に記載の方法。
【請求項20】
プロセッサによる実行時に、コンピューティングデバイスに、請求項14~19のいずれか1項に記載の方法を実行させるコンピュータ実行可能命令を含む、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットデバイスを使用し、環境をマッピングすることに関する。本発明は、ロボットデバイスの状態を使用して環境のモデルを生成することに特に関連するが、これに限定されるものではなく、状態は、ロボットデバイスが環境内で移動するにつれ、測定値に基づいて更新される。
【背景技術】
【0002】
コンピュータビジョン及びロボティックスの分野では、多くの場合、ロボットデバイスを使用してナビゲート可能である3次元空間など、環境の表現を構築する必要がある。3次元空間の表現を構築することによって、電子機器が環境のマップを使用及び操作し得る仮想領域またはデジタル領域に、現実世界環境をマッピングすることが可能になる。例えば、可動ロボットデバイスは、3次元空間の表現が、自己位置推定とマッピングの同時実行(多くの場合「SLAM」と呼ぶ)、したがってその環境のナビゲーションを可能にすることを必要とする場合がある。ロボットデバイスは、屋内の家庭環境もしくは商業環境、または屋外の自然環境において動作し得る。環境の表現は、その空間内のオブジェクトのモデルを識別及び/または抽出することを可能にし得る。これらは、現実世界環境で測定を実行するために使用し得る、及び/または例えば積層造形システムを介して3次元複製物を生成するために使用し得る。同様に、3次元空間での人体の部分の検出によって、新規のマンマシンインタラクションが可能になり得、現実の世界での動作を使用し、オブジェクトの仮想表現を操作することを可能にする。
【0003】
環境の表現を構築するために利用可能ないくつかの技術がある。例えば、運動からの構造復元及びマルチビューステレオは、これを行うために使用し得る2つの技術である。多くの技術が環境の画像から特徴を抽出し、次に、特徴が画像から画像に相互に関連付けられ、3次元表現を構築する。表現を生成するために、削減した数の点または特徴を使用する特定の技術を「スパース」技術と呼ぶ。例えば、これらの技術は、十から百の特徴及び/点を使用して表現を生成し得る。これらは、多くの数千または数百万の点を有する表現を生成する「高密度」技術と対比される場合がある。「スパース」技術は、例えば毎秒30フレームのフレームレートなど、リアルタイムで実装するのがたやすいという利点を有する。限られた数の点または特徴を使用することによって、3次元表現を構築するために必要とされる処理の範囲が制限される。それに比べ、環境のリアルタイム「高密度」マッピングを実行することは、計算上の要件のためより困難である。例えば、30分の提供された画像データから「高密度」表現を生成するには10時間かかる場合があるなど、多くの場合、例えばオフラインで「高密度」マッピングを実施する方が好まれる。
【0004】
移動するキャプチャデバイスから環境の表現を生成するとき、空間内でのキャプチャデバイスの位置及び向きを決定し、例えば広範囲の「不安定な」または「混乱した」動きなど、予測不可能な動きに対処する課題がある。例えば、平らではない地形及び均一ではない操作条件は、キャプチャデバイスの位置及び向きに頻繁な変化を生じさせる場合があり、自律ロボットデバイスは3次元空間内の以前にキャプチャした場所を再訪する場合がある。また、画像データのキャプチャはリアルタイムで連続し、大量のキャプチャデータを生じさせる場合がある。これらの要因のすべては、現実世界のシステムに課題を提示している。多くの技術は、データが限られた、またはキャプチャ軌跡が厳しく定義された状態で成功し得るが、可動ロボットデバイスからリアルタイムで表現を構築することに苦労している。
【0005】
Stefan Leuteneggerらは、その論文「Keyframe-Based Visual Inertial SLAM Using Nonlinear Optimization」、Robotics:Science and Systems 2013、Berlin、Germany、June 24-28、2013の中で、SLAMシステムで視覚的なキューと慣性キューを融合する方法を説明している。この論文は、ロボットデバイスが体験する力を測定するために一連の加速度計及びジャイロスコープを含む慣性計測装置(IMU)の使用を説明している。しかしながら、実際には、この論文で提案されているIMUを使用すると、3次元モデルの構築時に問題を引き起こすドリフト及び劣化に悩まされることが判明している。また、提案された解決策は、キーフレームに作用し、ポーズグラフベースのマッピングシステムを必要とする。ポーズグラフベースのマッピングシステムは、シーンの異なるビュー、及びその中のオブジェクトを提示し得るワールドモデルをキーフレームから構築しなければならない。また、モデリングが十分に定義されていない(underdefined)という問題もある。
【0006】
WO2016/189274A1は、3次元空間をモデル化する方法を説明している。3次元空間の3次元モデルを生成するために、少なくとも1つのキャプチャデバイスからの画像データが使用される。特定の例では、3次元モデルは、少なくとも1つのモデル特性に基づいてアクティブ部分と非アクティブ部分にセグメント化される。例は、経時的に3次元モデルを更新するためにアクティブ部分を使用するように構成される。また、3次元モデルのアクティブ部分を3次元モデルの非アクティブ部分と経時的にアラインさせるために、位置合わせも実行される。位置合わせによって、3次元空間のリージョンの観測に続いて生成された3次元モデルのアクティブ部分は、該リージョンの少なくとも1つの以前の観測に続いて生成されたモデルの非アクティブ部分とアラインする。
【0007】
WO2016/189274A1の方法は、ポーズグラフなしに動作する。これによって、方法は、Leuteneggerらによって提示された、環境をマッピングしながらポーズグラフを構築する以前の手法と互換性がなくなる。WO2016/189274A1に提示された方法は、環境のモデルを構築するための改善策を提供するが、方法を特定の現実世界ロボットデバイスに適用することには問題がある。例えば、ロボットデバイスは多くの場合、ハンドヘルドデバイスによって追跡される円滑な経路とは異なる画像経路を有するなど、例えば特定のロボットデバイスは円滑に移動しない。また、ロボットデバイスは、多くの場合、ぎくしゃくしたカメラの移動を生じさせる非平面状の地形を横切る。特定の状況では、WO2016/189274A1の実施態様もリアルタイムでこれらのロボットデバイスから画像を処理しようと苦心していることが判明している。
【発明の概要】
【0008】
本発明の一態様によれば、ロボットデバイス用のマッピングシステムが提供され、ロボットデバイスは環境内でロボットデバイスを移動させるための1つ以上のアクチュエータ、及び画像キャプチャデバイス用の可動マウントを含む。マッピングシステムは、運動誤差、走行距離計誤差、及び幾何学的誤差に基づいてロボットデバイスの現在の状態及び以前の状態をともに最適化するために状態エンジンを含む。ロボットデバイスの各状態は、環境のモデルに対するロボットデバイスのポーズを示すデータ、及びモデルに対する画像キャプチャデバイスのポーズを示すデータを含む。運動誤差は、可動マウントと関連する運動測定値、及び現在の状態から導出されたロボットデバイスに対する画像キャプチャデバイスのポーズの関数を含む。走行距離計誤差は、1つ以上のアクチュエータと関連する走行距離計測法の測定値、及び現在の状態と以前の状態との走行距離計の差異の関数を含む。幾何学的誤差は、キャプチャデバイスからの画像データと環境のモデルとの比較を含み、比較は、現在の状態に基づいた投影を使用する。マッピングシステムは、状態エンジンによる最適化に続く現在の状態を使用し、モデルを更新するように構成される。
【0009】
特定の例では、可動マウントは複数の関節を含み、画像キャプチャデバイスのロボットデバイスに対するポーズは、順運動学を使用し、決定される。
【0010】
特定の例では、モデルに対するロボットデバイスのポーズ、及びモデルに対する画像キャプチャデバイスのポーズは、6自由度の範囲内で定義される。
【0011】
特定の例では、状態エンジンは、一次事前確率(linear prior)を使用し、現在の状態と以前の状態をともに最適化するように構成され、状態エンジンは、運動誤差、走行距離計誤差、幾何学的誤差、及び以前の状態の周辺化に基づいて最適化に続いて一次事前確率を更新するように構成されている。そのような例では、マッピングエンジンは、モデルの第1のセットの部分をモデルの第2のセットの部分とアラインさせるために変形グラフを使用するように構成され得、変形グラフは、アライメント中に所与の位置でモデルを修正するために使用される、モデルの所与の位置の近接点(neighbours)のセットを示す。これらの例では、マッピングエンジンは、ループクロージャ中にモデルの第1のセットの部分をモデルの第2のセットの部分とアラインさせるように構成され得、ループクロージャに続いて、一次事前確率及び以前の状態は再初期化される。
【0012】
特定の例では、モデルは面素モデルを含み、面素モデルの各面素は、少なくとも、3次元における面素の位置を定義するデータ、及び3次元における面素の法線ベクトルを定義するデータを含み、各面素は3次元空間内の2次元領域を表す。
【0013】
特定の例では、マッピングシステムは、画像キャプチャデバイスのポーズグラフのないモデルを生成するように構成される。
【0014】
本発明の第2の態様によれば、ロボットデバイスに対して移動できるように取り付けられた画像キャプチャデバイス、環境に対してロボットデバイス及び画像キャプチャデバイスの1つ以上を移動させるための1つ以上のアクチュエータ、ロボットデバイスの状態を更新するための状態エンジン、及びロボットデバイスの状態を使用して環境の3次元モデルを生成するためのマッピングエンジンを含むロボットデバイスが提供される。ロボットデバイスの状態は、3次元モデルに対する画像キャプチャデバイスの少なくとも変換を含む。状態エンジンは、ロボットデバイスの状態と1つ以上のアクチュエータから取得される測定値との比較に基づいてロボットデバイスの状態を更新するように構成される。マッピングエンジンは、3次元モデルを更新するために、ロボットデバイスの状態に基づいて画像キャプチャデバイスからの画像を3次元モデルと比較するように構成される。
【0015】
特定の例では、マッピングエンジンは、反復最接近点誤差を決定するように構成され、状態エンジンは、反復最接近点誤差をさらに使用してロボットデバイスの状態を更新するように構成される。
【0016】
特定の例では、1つ以上のアクチュエータは、環境に対してロボットデバイスを移動させるためのアクチュエータの第1のセット、及びロボットデバイスに対して画像キャプチャデバイスを移動させるためのアクチュエータの第2のセットを含み、ロボットデバイスの状態は、3次元モデルに対するロボットデバイスの変換をさらに含む。そのような例では、アクチュエータの第1のセットは、ロボットデバイスと環境との間に複数の自由度を提供し得、アクチュエータの第2のセットは、画像キャプチャデバイスとロボットデバイスとの間に複数の自由度を提供し得る。
【0017】
特定の例では、画像キャプチャデバイスは、カラー画像データ及び深度マップを出力するように構成され、マッピングエンジンは、3次元モデルを更新するためにカラー画像データ及び深度マップを使用するように構成される。
【0018】
本発明の第3の態様によれば、移動できるように結合された画像キャプチャデバイスを有するロボットデバイスを使用し、環境の3次元モデルを更新する方法が提供される。方法は、画像キャプチャデバイス及びロボットデバイスの少なくとも1つの環境内での移動を命令すること、画像キャプチャデバイスを用いて環境の観測を表すデータを取得すること、移動の測定値を取得すること、ロボットデバイスのモデル状態を更新することであって、ロボットデバイスのモデル状態は、ロボットデバイス及び画像キャプチャデバイスのポーズデータを含み、更新することはモデル状態及び移動の測定値の関数を最適化することを含む、更新すること、及び更新したモデル状態を使用し、画像データと3次元モデルとの比較に基づき環境の3次元モデルを更新することであって、比較が更新したモデル状態を使用する投影を含む、更新することを含む。
【0019】
特定の例では、ポーズデータは、3次元モデルに対するロボットデバイスの変換、及びロボットデバイス及び3次元モデルの少なくとも1つに対する画像キャプチャデバイスの変換を含む。
【0020】
特定の例では、移動を命令することは、アクチュエータの第1のセットに環境内でロボットデバイスを移動させるように命令すること、及びアクチュエータの第2のセットにロボットデバイスに対して画像キャプチャデバイスを移動させるように命令することの1つ以上を含む。これらの例では、ロボットデバイスから移動の測定値を取得することは、アクチュエータの第1のセットから走行距離計測法データを取得すること、及びアクチュエータの第2のセットから運動データを取得することの1つ以上を含む。
【0021】
特定の例では、ロボットデバイス及び画像キャプチャデバイスのモデル状態を更新することは、コスト関数を最適化することを含み、コスト関数は、運動誤差と関連する誤差項及び走行距離計誤差と関連する誤差項を含む。そのような例では、運動誤差は、画像キャプチャデバイスとロボットデバイスの空間関係性と、ロボットデバイスからの運動測定値との比較を含み、走行距離計誤差は、ロボットデバイスと環境の3次元モデルの空間関係性の変化と、ロボットデバイスからの走行距離計測法データとの比較を含む。これらの例では、コスト関数は一次事前確率と関連する誤差項を含み得、一次事前確率は、以前の更新操作から誤差値、及びロボットデバイスのモデル状態を使用して構築される。これらの例では、コスト関数は幾何学的アライメント誤差と関連する誤差項を含み得、幾何学的アライメント誤差は、取得した画像データから導出した深度データと、更新前のロボットデバイスのモデル状態を使用する3次元モデルとの比較を含む。
【0022】
本発明の第4の態様によれば、プロセッサによる実行時に、コンピューティングデバイスに、上述の方法のいずれかを実行させるコンピュータ実行可能命令を含む非一時的なコンピュータ可読記憶媒体が提供される。
【0023】
本発明のさらなる特徴及び優位点は、添付図面を参照して行われる、ほんの一例として示される本発明の好ましい実施形態の以下の説明から明らかになる。
【図面の簡単な説明】
【0024】
【
図1A】マッピングされる環境の第1の例を示す概略図である。
【
図1B】例示的なデバイスの利用可能な自由度を示す概略図である。
【
図1C】ロボットデバイスを、そのロボットデバイスの第1の例及び状態に従ってそれぞれ示す概略図である。
【
図1D】ロボットデバイスを、そのロボットデバイスの第1の例及び状態に従ってそれぞれ示す概略図である。
【
図1E】ロボットデバイスを、そのロボットデバイスの第2の例及び状態に従ってそれぞれ示す概略図である。
【
図1F】ロボットデバイスを、そのロボットデバイスの第2の例及び状態に従ってそれぞれ示す概略図である。
【
図1G】ロボットデバイスを、そのロボットデバイスの第3の例及び状態に従ってそれぞれ示す概略図である。
【
図1H】ロボットデバイスを、そのロボットデバイスの第2の例及び状態に従ってそれぞれ示す概略図である。
【
図2】A~Cは、例示的なキャプチャデバイスを示す概略図である。
【
図3A】第1の例によるロボットデバイスのマッピングシステムの概略図である。
【
図3B】第2の例によるロボットデバイスのマッピングシステムの概略図である。
【
図4B】一例によるロボットデバイスの状態の構成要素を示す概略図である。
【
図5】一例によるマッピングエンジンの特定のコンポーネントを示す概略図である。
【
図6A】3次元面素モデルの例示的なデータを示す概略図である。
【
図6B】一例による面素の属性を示す概略図である。
【
図7】一例によるマッピングシステムによる画像データの処理を示す概略図である。
【
図8】格納されている表現及び変形グラフを使用する一例を示す概略図である。
【
図9】一例に従って環境のモデルを更新する方法を示す流れ図である。
【
図10】一例に従って、ロボットデバイスの移動、及び状態最適化を使用するモデル空間内でのドリフトの補正を示す概略図である。
【
図11】一例に係る状態最適化の状態グラフである。
【
図12】例示的なマッピング性能を示すチャートである。
【
図13】一例に係る非一時的なコンピュータ可読媒体を示す概略図である。
【発明を実施するための形態】
【0025】
本明細書で説明する特定の例によって、ロボットデバイスは周囲の環境を正確にマッピングすることが可能になる。ロボットデバイスは画像キャプチャデバイスを含み、画像キャプチャデバイス及びロボットデバイスの少なくとも1つは環境内で移動する。例えば、ロボットデバイスに対する画像キャプチャデバイスの移動または環境に対するロボットデバイスの移動の測定値などの画像キャプチャデバイス及びロボットデバイスの少なくとも1つと関連する測定値は、ロボットデバイスの状態を決定するために使用される。ロボットデバイスの状態は、マッピングエンジンによって構築される環境のモデルに関して、画像キャプチャデバイス及びロボットデバイスをモデル化する。状態は、ロボットデバイスと関連する測定値を使用して更新され得る。この状態は、環境のモデルを更新するためにマッピングエンジンによって使用される。ロボットデバイスの状態の精度を高めることによって、マッピング精度を高め得る。
【0026】
本明細書に説明する特定の例は、1つ以上の画像キャプチャデバイス用の複雑な機械的なマウントを有するロボットデバイスに適用し得る。また、特定の例は、非平面状の表面を有する、複雑な内部環境及び/外部環境をナビゲートするロボットデバイスに適用してもよい。これらの応用例では、説明した例は、環境な正確なマッピングを維持することができるシステム及び方法を提供する。それらはこのようにして自律性の探索及び救出ならびに災害復旧などの分野でのマッピングの改善を提供する。これらは、多くの比較手法が、正確なマッピングを提供しようと苦心している分野である。
【0027】
本明細書に説明する特定の例は、ポーズグラフを使用しないマッピングシステムと統合し得る。マッピングシステムは、このようにして、例えばハンドヘルドデバイスを使用する屋内シーンマッピングでのその証明された適用性など、3次元空間のマッピングにおけるその精度を強化することができる。マッピングシステムは、これらの手法をより広範囲な状況及び環境において確実に使用できるようにする。
【0028】
特定の例では、3次元空間の高密度で一貫性があり、包括的なモデルは、ロボットデバイスが画像キャプチャデバイスの可動マウントを有することから生じる「混乱した」及び/または「不安定な」キャプチャデバイスの軌跡から生成される場合がある。本明細書に説明する特定の例は、状態最適化及びモデル構築が、リアルタイムの、またはほぼリアルタイムのフレームレートで発生することを可能にする特徴を含む。例えば、特定の特徴は、例えば特定の問題をもたらし、マッピング精度を減少させる可能性があるキーフレームベースの手法を使用せずに、フレーム単位で自己位置推定と高密度マッピングの同時実行を可能にする。
【0029】
特定の例では、3次元モデルまたはマップ(本明細書では「モデル」と呼ぶ)は、モデルの少なくとも1つの特性に基づいて少なくともアクティブ部分と非アクティブ部分にセグメント化される。例えば、そのようなモデルの位置要素は、モデル修正の時間に基づいてアクティブまたは非アクティブに分類される場合があり、例えば、モデルのより古い部分は非アクティブと分類される場合がある、及び/またはキャプチャデバイスもしくは空間内の定義された場所から特定の距離上にある位置要素などの3次元空間内のキャプチャデバイスからの距離は、非アクティブと分類される場合がある。これらの場合、3次元モデルのアクティブ部分は、該モデルを更新するために使用され、非アクティブ部分は、モデルを更新するために使用されない。この更新は、画像データからモデルの新しい位置要素を決定するなど、画像データのフレームをモデルと融合することを含み得る。
【0030】
また、本明細書に説明する特定の例は、アクティブモデル部分と非アクティブモデル部分のアライメントも提供する。これによって、キャプチャデバイスが3次元空間内の所与の場所を再訪または再観測するときにいわゆる「ループ」クロージャが可能になる。キャプチャされた画像データが処理されるにつれ、フレーム単位の頻度で実行され得るこのアライメント、及びロボットデバイスの状態の正確な追跡によって、モデルの精度及び安定性が維持され、可動カメラマウントを有する現実世界のロボットデバイスによってキャプチャされる「混乱した」及び/または「不安定な」キャプチャデバイス軌跡に確実に対処する能力が提供される。特定の場合、アライメントは、2つの態様、つまり、アクティブモデルと非アクティブモデルの各々から生成された予測フレームをアラインさせようと試みる「ローカルループクロージャ」、及び画像データの所与のフレームを画像データの以前処理されたフレームの表現とアラインさせようと試みる「グローバルローカルクロージャ」を組み込み得る。アライメントは、例えばスペースデフォメーションを介してモデルを変形することによって実行され得る。特定の場合、この変形は剛体ではなく、変形グラフを使用してモデルの位置要素に変換を適用し得る。これによって、例えばモデリングプロセスの構造体であり、モデル化されている3次元空間を反映しない不連続点を低減することによって、3次元におけるモデルの精度及び一貫性をさらに高め得る。特に、そのような変形グラフはスパースであってよい、及び/または、例えばモデルの位置要素と関連付けられるなど、空間に埋め込まれ得る。これらの技術は、例えば画像フレームの独立キーフレームを剛体変換するために使用される、カメラデバイスの場所及び向きの確率論的表現など、ポーズグラフを必要とする技術とは異なる。
【0031】
本明細書に説明する特定の例は、運動測定値及び走行距離計測法の測定値などの移動測定値に基づいて追跡機能を提供する。精度は、幾何学的誤差に基づいて制約を組み込むことによってさらに高め得る。運動誤差は、ロボットデバイスに移動できるように取り付けられた画像キャプチャデバイスに対して定義され得る。走行距離計誤差は、ロボットデバイスの以前の状態と現在の状態の両方に対してロボットデバイスのポーズを制約するために定義され得る。特定の場合、追跡はフレーム単位でビデオデータに対して実行され得、以前の状態の構成要素と現在の状態の構成要素を含む状態グラフは、各フレームが受け取られるにつれ解決される。以前の状態及び誤差は一次事前確率に周辺化され得、一次事前確率は、状態推定値も制約し得る。上述のループクロージャは、手動処理され得る。ループクロージャの場合、一貫したモデルは、モデルを円滑に変形させ、次にロボットデバイスの少なくとも以前の状態を更新することによって維持され得る。
【0032】
図1A、
図1B、及び
図1Cは、環境及びその環境と関連する画像データのキャプチャの例を概略で示す。これらの例は、本明細書に説明する特定の特徴をより良く説明するために提示されており、限定的と見なすべきではない。特定の特徴は、説明を容易にするために省略され、簡略化されている。
【0033】
図1Aは、3次元空間110の形をとる環境の例100を示す。3次元空間110は、例えば部屋または地理的な位置の少なくとも一部分などの内部及び/または外部の物理的な空間であってよい。3次元空間110は、惑星上の場所である場合がある。本例100の3次元空間110は、3次元空間とともに位置するいくつかの物理オブジェクト115を含む。これらのオブジェクト115は、とりわけ、人、電子機器、家具、動物、建物の部分、及び設備の1つ以上を含む場合がある。また、例100は、3次元空間110と関連する画像データをキャプチャしている画像キャプチャデバイス120も示す。画像キャプチャデバイス120は、3次元空間110を観測することから生じるデータを記録するように配置された、デジタル形式またはアナログ形式のどちらかのカメラを含み得る。
図1Aでは、画像キャプチャデバイス120は、アクチュエータ135を使用し、3次元空間110をナビゲートするように配置されたロボットデバイス130に取り付けられている。本例では、これらのアクチュエータは車輪を含む。他の場合、アクチュエータは、線路、穴堀機構、脚部、回転子などを含み得る。例えば、ロボットデバイス130は、制御されたまたは自律性の航空の及び/または地上のデバイスまたは車両を含み得る。
図1Aの3次元空間110は、より低い表面と示されているが、これはすべての実施態様でそうである必要はなく、例えば、環境は、気中空間または地球外の空間内である場合がある。
図1Aで、画像キャプチャデバイス120は、ロボットデバイス130に移動できるように取り付けられている。例えば、画像キャプチャデバイス120は、ロボットデバイス130に機械的に結合され得、ロボットデバイスは3次元空間110内で移動するように配置される。
【0034】
図1Bは、例示的な画像キャプチャデバイス120及び例示的なロボットデバイス130が利用可能な自由度の例140を示す。画像キャプチャデバイス120の場合、画像キャプチャデバイス120の方向150は、レンズまたは他の撮像装置の軸と同一直線上であってよい。3つの軸の1つの周りでの回転の例として、垂直軸155が図示されている。同様に、ロボットデバイス130の場合、ロボットデバイス145のアライメントの方向が定義され得る。これは、ロボットデバイスの向き及び/または移動の方向を示し得る。また、垂直軸155も図示されている。画像キャプチャデバイス120またはロボットデバイス130に関して単一の垂直軸だけしか示していないが、これらのデバイスは、以下に説明するように、140として概略で示す軸のいずれか1つ以上の周りで回転し得る。
【0035】
より一般的には、デバイスの位置及び向きは、6自由度に関して3次元で定義され得る。つまり、位置または場所は、例えば[x、y、z]座標など3次元のそれぞれ内で定義され得、向きは、例えば[θ
x、θ
y、θ
z]など3つの軸のそれぞれの周りでの回転を表す角度ベクトルによって定義され得る。本明細書に説明する例では、デバイスの位置及び向きは、デバイスのポーズとして定義される。デバイスのポーズは経時的に変わる場合があり、その結果、デバイスは時間tで時間t+1とは異なるポーズを有する場合がある。これは、画像キャプチャデバイスとロボットデバイスの両方に当てはまり得る。また、デバイスのポーズは、例えばロボットデバイスが環境内で動き回るにつれ、または画像キャプチャデバイスがロボットデバイスに関して移動するにつれなど、経時的に変化する場合がある。これは、以下に
図1C~
図1Hを参照してさらに説明される。
【0036】
図1C~
図1Hは、3つの例示的なロボットデバイス160、180、及び190を示している。これらのロボットデバイスは例示的な例であり、本明細書に説明する方法及びシステムは、多種多様の構成及び構造を有するロボットデバイスに適用し得る。
【0037】
図1Cは、ロボットデバイス160の第1の例を示している。ロボットデバイス160は、シャシ162、アクチュエータ164のセット、可動マウント165、及び画像キャプチャデバイス166を含む。本例のアクチュエータ164のセットは、車輪のセットを含む。可動マウント165は、一端でシャシ162に、他端で(「エンドエフェクタ」位置で)画像キャプチャデバイス166に機械的に結合されている。可動マウント165は、例えばロボットデバイス160のシャシ162に対する、画像キャプチャデバイス166の移動に1以上の自由度を提供する。
図1Cの可動マウント165は複数の関節を含む。可動マウント165の正確な構成及び各関節での可能な移動の範囲は、デバイスごとに変わり得る。本例では、可動マウントによって、画像キャプチャデバイス166は、ロボットデバイス160のシャシ162とは異なる位置及び向きを有することができる。アクチュエータ164のセットによって、ロボットデバイス160のシャシ162は、周囲の環境内で変化する位置及び向きを有することができる。したがって、シャシ162及び画像キャプチャデバイス166の各々は、最大6つまでの変数で表される異なる状態を有し得、例えば、シャシ162及び画像キャプチャデバイス166の各々の状態は、3次元空間の座標、及び空間内の各軸の周りの回転のセットを示すマトリクスによって定義され得る。3次元空間は、環境をナビゲートするためにロボットデバイスによって使用されるモデルに関して定義され得る。1つの場合では、可動マウントは、無指向性ロボットデバイスに取り付けられたアームまたはマニピュレータを含み得る。この場合、ロボットデバイスは、ほぼ一定な高さの表面で任意の方向に移動可能であり得る。
【0038】
図1Dは、ロボットデバイス160の状態がどのようにモデル化され得るのかを示す。
図1Dは、定義された座標系を有するモデル空間を示している。モデル空間は、
図1Bに示す軸によって定義された3次元ユークリッド空間であってよい。例えば、デバイスが起動されるときのロボットデバイス160の初期の位置、及び/または(例えば、多次元バーコードなど、符号化されたデータを使用し)環境内の1つ以上のオブジェクトに対して較正された位置に基づき得るなど、モデル空間内の原点は任意に選び得る。
図1Dでは、ロボットデバイス160の状態は、モデル空間に対するロボットデバイス160のポーズを示すデータ168を含む。この場合、ロボットデバイス160のポーズは、ロボットデバイスのシャシ162のモデルの位置及び向きとして解釈される。例えば、データ168は、シャシ162の3次元表現(例えば、定義された直方体の角)と関連する所与の点のモデル空間の原点に対する変換-T
WB-として格納され得る。ここで、「W」は、モデル空間の「ワールド」を指し、「B」はシャシ162によって提供されるロボットデバイスの基部を指す。また、
図1Dでは、ロボットデバイス160の状態は、モデル空間に対する画像キャプチャデバイス166のポーズを示すデータ170も含む。この場合、画像キャプチャデバイス166のポーズは、画像キャプチャデバイス166の位置及び向きとして解釈される。データ168と同様に、データ170は、画像キャプチャデバイス166の3次元表現と関連する所与の点のモデル空間の原点に対する変換-T
WC-として格納され得る。再び、「W」はモデル空間の「ワールド」を指し、「C」はキャプチャデバイスを指す。画像キャプチャデバイス166のポーズは、モデル空間に対する画像キャプチャデバイスの座標系の位置として表し得る。
【0039】
図1Eは、ロボットデバイス180の第2の例を示す。ロボットデバイス180は、本体182、及びこの場合、4本の脚184を有する脚型ロボットとして構築されている。各脚は、一連のアクチュエータで動き得る。ロボットデバイス180の頭部186は、頭部186に取り付けられた複数の画像キャプチャデバイスの可動マウントとして機能するネック185を介して本体182に機械的に結合されている。
図1Fは、本体182のポーズを定義するデータ168、及び頭部186に取り付けられた複数の画像キャプチャデバイスのポーズをそれぞれ定義するデータ170A、170Bを示す。この場合、ネック185は可動であってよく、頭部186はネック185の上で回転可能であってよい。特定の構成では、画像キャプチャデバイスは、頭部186上でさらに可動であってよい。
【0040】
図1Gは、ロボットデバイス190の第3の例を示す。ロボットデバイス190は、航空機(例えば、「ドローン」)を含む。ロボットデバイス190は、シャシ192及び4つのアクチュエータ194を含む。4つのアクチュエータは、大気空間内でロボットデバイス190を推進するためにロータブレードを含み得る。また、ロボットデバイス190は、画像キャプチャデバイス196を支持するジンバルの形をとる可動マウント195も含む。可動マウント195によって、画像キャプチャデバイス196はシャシ192とは関係なく移動することが可能である。
図1Hは、シャシ168のポーズを定義するデータ168、及び画像キャプチャデバイス196のポーズを定義するデータ170を示す。
【0041】
図1C、
図1E、及び
図1Gは、ロボットデバイスがとり得る形のいくつかの非限定的な例を示す。
図1D、
図1F、及び
図1Hは、様々なロボットデバイスの状態がどのように表されるのか、つまりロボットデバイスのポーズを表すデータ168、及び可動マウントを使用し、ロボットデバイスに機械的に結合された少なくとも1つの画像キャプチャデバイスのポーズを表すデータ170を示す。本例では、ロボットデバイス及び可動マウントは多数の形をとり得る。可動マウントは、ロボットデバイスに対する移動を可能にするために1つ以上のアクチュエータを含み得る。また、ロボットデバイスは、周囲環境に対する移動を可能にするために1つ以上のアクチュエータも有する場合もある。アクチュエータのセットは、移動を提供するために異なる機構を結合する変形可能なポリマー及び/またはシステムを含むいわゆる「ソフト」アクチュエータを含む、1つ以上の機械的、電気的、油圧、空気圧、ポリマー、熱的、及び/または磁気的な機構を含み得る。
【0042】
図2A、
図2B、及び
図2Cは、異なる画像キャプチャデバイス構成の3つの包括的ではない例を概略で示す。これらの構成は、ロボットデバイスに移動できるように取り付けられた1つ以上の画像キャプチャデバイスに適用し得る。
図2Aの例200では、画像キャプチャデバイス210は、画像データ220を生成するように構成される。画像キャプチャデバイス210がデジタルカメラである場合、これは直接的に実行され得、例えば、画像データ220が電荷結合素子または相補型金属酸化物半導体(CMOS)センサからの処理データを含み得る。画像データ220を、例えばアナログ信号源を変換するなど、他の画像ソースを処理することによって間接的に生成することも可能である。
【0043】
1つの場合では、画像データ220は、経時的にキャプチャされた画像データを含む。このフォーマットの一例230は、
図2Bに示される。この場合、画像データ220は複数のフレーム240を含む。各フレーム240は、
図1の環境110などの環境の画像がキャプチャされる期間のある特定のときtに関する場合がある(つまり、F
t)。したがって、画像データ220はビデオデータと見なされ得、画像キャプチャデバイス210はビデオカメラであると見なされ得る。フレーム240は、一般的に、測定されたデータの2次元表現から成る。例えば、フレーム240は、時間tで記録されたピクセル値の2次元配列または2次元マトリクスを含み得る。
図2Bの例では、画像データ内のすべてのフレーム240は同じサイズであるが、これはすべての例でそうである必要はない。フレーム230内のピクセル値は、環境の3次元空間の特定の部分の測定値を表す。
図2Bの例では、各フレーム240は、2つの異なる形の画像データの値を含む。値の第1のセットは、深度データ250(例えば、D
t)に関する。深度データは、キャプチャデバイスからの距離の表示を含み得、例えば、各ピクセル値または各画素値は画像キャプチャデバイス210からの3次元空間の一部分の距離を表し得る。値の第2のセットは、測光データ260(例えば、色データC
t)に関する。これらの値は、所与の解像度の赤、緑、青のピクセル値を含み得る。他の例では、他の色空間が使用され得る、及び/または測光データ260はモノピクセル値またはグレイスケールピクセル値を含み得る。1つの場合では、画像データは、圧縮ビデオストリームまたはファイルを含み得る。この場合、画像データのフレームは、例えばビデオデコーダの出力など、ストリームまたはファイルから再構築され得る。画像データは、ビデオストリームまたはファイルの前処理に続いて、記憶場所から取り出され得る。
【0044】
図2Bの画像キャプチャデバイス210は、RGBデータ260と深度(「D」)データ250の両方をキャプチャするように配置されたいわゆるRGB-Dカメラを含み得る。1つの場合では、RGB-Dカメラは、経時的にビデオデータをキャプチャするように配置される。深度データ250及びRGBデータの1つ以上は、どんなときにも使用され得る。深度データ250は、赤外線レーザープロジェクタが、次に白黒CMOS画像センサによって撮像される3次元空間の観測された部分の上に赤外光のパターンを投影する構造化光方式など、技術で既知の1つ以上の技術によって生成され得る。
【0045】
1つの場合では、画像キャプチャデバイス210は、結合されたデータストレージデバイスに画像データ220を格納するように配置され得る。データストレージデバイスは、画像キャプチャデバイス210、画像キャプチャデバイス210をロボットデバイスに結合する可動マウント、及びロボットデバイスの1つ以上内に位置する場合がある。別の場合、画像キャプチャデバイス210は、結合されたコンピューティングデバイスに画像データ220を送信し得る。コンピューティングデバイスは、画像キャプチャデバイス210とロボットデバイスの両方共から遠隔であってよい。他の場合、コンピューティングデバイスは、ロボットデバイスの組み込み型コンピューティングデバイスを含み得る。結合されたコンピューティングデバイスは、例えばユニバーサルシリアルバス(USB)接続を介して直接的に結合される場合もあれば、間接的に結合される場合もあり、例えば、画像データ220は1つ以上のコンピュータネットワークを介して送信され得る。さらに別の場合、画像キャプチャデバイス210は、ネットワークアタッチドストレージデバイスでの格納のために1つ以上のコンピュータネットワーク全体で画像データ220を送信するように構成され得る。画像データ220は、フレーム単位で、または例えば複数のフレームを互いにバンドルし得るなど、バッチ単位で格納及び/または送信され得る。深度データ240は、測光データ250と同じ解像度またはフレームレートである必要はない。例えば、深度データ250は、測光データ260よりも低い解像度で測定され得る。また、1つ以上の前処理操作は、画像データ220が以下に説明する例で使用される前に、画像データ220に対して実行され得る。本明細書に説明しないさらなる構成も可能である。
【0046】
図2Cは、画像データ220を取得するための別の可能な構成270を示す。本例では、2つの画像キャプチャデバイス、つまり深度データ280のフレームを含む画像データ220-Aをキャプチャするように配置された第1の画像キャプチャデバイス210-A、及び測光データ290のフレームを含む画像データ220-Bをキャプチャするように配置された第2の画像キャプチャデバイス210-Bが使用される。これらのデータチャネルは、任意のコンピューティングデバイスで別々に処理される場合もあれば、共通の画像処理パイプラインにマージされる場合もある。例えば、
図2Cの構成270は、
図1Eの構成に適用し得る。1つの場合では、第1の画像キャプチャデバイス210-Aは、3次元空間(内の深度の)を測定し、その測定値を測定データのフレームに変換するように配置された赤外線デバイス、超音波デバイス、及び/またはレーダーデバイスであってよい。第2の画像キャプチャデバイス210-Bは、次にカラー画像データ290のフレームをキャプチャするように配置されたRGBカメラを含み得る。深度データ280及び測光データ290のフレームサイズ及び/または解像度は、キャプチャのフレームレートがそうであるように異なる場合がある。1つの場合では、2つのフレームセットが1つの共通したサイズ及び解像度を有するように、前処理が適用され得る。この場合、
図2Cのデータは、それが
図2Bに示す形となるように前処理され得る。
【0047】
特定の例では、画像キャプチャデバイスは、例えばロボットデバイスなどのロボットデバイスの中に組み込まれ得、可動マウント及び画像キャプチャデバイスは単一のユニットを含み得る。他の例では、画像キャプチャデバイスは、ロボットデバイスに結合可能な分割可能なデバイスであってよい。特定の例では、可動マウントはロボットデバイスに内蔵され得る。他の例では、可動マウントは、ロボットデバイスに取り外し可能に結合され得る。特定の場合、ロボットデバイス、可動マウント、及び画像キャプチャデバイスの2つ以上は、様々な異なるデバイスに結合され得る別個のモジュール式コンポーネントであってよい。
【0048】
図2A、
図2B、及び
図2Cはいくつかの例として提供されており、理解されるように、図に示す構成と異なる構成は、以下に説明する方法及びシステムで使用するための画像データ220を生成するために使用され得る。画像データ220は、画像キャプチャデバイスを用いてキャプチャまたは記録された環境のビューを表す2次元形式で配置された任意の測定された感覚入力をさらに含み得る。例えば、これは、とりわけ深度データまたは測光データ、電磁波イメージング、超音波イメージング、及びレーダー出力のうちの1つだけを含み得る。これらの場合、特定の形式のデータと関連する撮像デバイスだけが必要とされ得る。例えば、1つの場合では、画像キャプチャデバイスは、深度データのない単眼のRGBデバイスを含み得る。同様に、特定の場合、画像データは、深度データしか含まない場合があり、例えば260と290などの測光データは省略され得る。
【0049】
特定の場合、画像キャプチャデバイスは深度データを生成するために前処理を実行するように配置され得る。例えば、ハードウェア検知デバイスは、相違データまたは複数の立体画像の形をとるデータを生成し得、このデータを処理して深度情報を計算するために、ソフトウェア及びハードウェアの1つ以上が使用される。他の場合、単眼のRGBカメラからの画像データは、深度データを生成するために再構築システムによって処理され得る。同様に、深度データは、深度情報を再構築するために使用され得る位相画像を出力するフライトカメラの時間から生じ得る。深度データを利用する例では、任意の適切な技術は、画像データ220の一部を形成する深度データを生成するために使用され得る。
【0050】
図2Aの画像データ及び
図2Bと
図2Cの測光データC
tはカラー画像を含み得、x
R1掛けるy
R1の解像度を有するフレームの各[x、y]ピクセル値は、RGBベクトル[R、G、B]を含む。例として、解像度は640掛ける480ピクセルであってよい。
図2B及び
図2Cの深度データD
tは、深度値の2次元マトリクスを含み得る。これは、例えばx
R2掛けるy
R2の解像度を有するフレーム内の各[x、y]ピクセル値が、3次元空間の表面のキャプチャデバイスからの距離を表す深度値dを含むグレイスケール画像として表し得る。
【0051】
特定の場合、画像データ220は、例えば特定の3次元空間を観測している複数のカメラなど、複数のデータソースを結合することによって生成され得る。特定の場合、画像データ220はビデオデータである必要はない。代わりに、画像データ220は1つ以上のキャプチャデバイスを使用し、経時的に異なる場所からキャプチャした一連の静止画像を含み得る。特定の場合、深度データは、例えば空間の周りでのキャプチャデバイスの動きを表す測光データを処理することからなど、測光データから生成される。
【0052】
上述の図は、
図3A~
図8の例と併せて使用し得るロボットデバイス及び画像キャプチャデバイスの例を提示する。
【0053】
図3Aは、一例によるロボットデバイス310のコンポーネントを示す。ロボットデバイス310は、
図1A~
図1Hのロボットデバイス120、160、180、及び190の1つなどのデバイスであってよい。ロボットデバイス310のコンポーネントは、図の中で統合されたコンポーネントとして示されているが、コンポーネントは別々に実装し得、例えば
図2A~
図2Cの画像キャプチャデバイス210に関して上述したように、ロボットデバイス310に通信可能に結合し得る。
【0054】
図3Aで、ロボットデバイス310は、画像キャプチャデバイス320、1つ以上のアクチュエータ330のセット、状態エンジン340、及びマッピングエンジン350を含む。画像キャプチャデバイス320は、
図1A~
図1Hに示す画像キャプチャデバイス120、166、186、及び196の1つ、
図2A~
図2Cに示す画像キャプチャデバイス210の1つ、または別のキャプチャデバイスであってよい。画像キャプチャデバイス320は、画像データをキャプチャするように構成される。アクチュエータ330のセットは、アクチュエータ164、184、及び194などのアクチュエータ、及び/または
図1C~
図1Hの可動マウント165、185、及び195で見られるアクチュエータを含み得る。アクチュエータ330は、環境に対してロボットデバイス及び画像キャプチャデバイスの1つ以上を移動させるように構成される。例えば、アクチュエータ330は、ロボットデバイスの基部またはシャシを環境内で移動させる、及び/または基部またはシャシに対して画像キャプチャデバイス320を移動させるように構成され得る。
【0055】
状態エンジン340及びマッピングエンジン350は、ロボットデバイス310用の処理デバイスを含む。状態エンジン340及びマッピングエンジン350は、専用の処理電子回路を含み得る、及び/または少なくとも1つのコンピューティングデバイスのプロセッサによって実行されるコンピュータプログラムコードによって実装され得る。状態エンジン340及びマッピングエンジン350の1つ以上は、1つ以上の組み込み型コンピューティングデバイスによって実装され得、例えば、別々の組み込み型コンピューティングデバイスまたは単一の共通の組み込み型コンピューティングデバイスを含み得る。各コンピューティングデバイスは、コンピュータ可読媒体にロードされたコンピュータプログラムコードを実行するためにメモリと関連して少なくとも1つのプロセッサを含み得る。この媒体は、消去可能プログラマブル読み取り専用メモリなどのソリッドステートストレージを含み得、コンピュータプログラムコードはファームウェアを含み得る。他の場合、状態エンジン340及びマッピングエンジン350の1つ以上は、適切に構成されたシステムオンチップ、特定用途向け集積回路、及び/または1つ以上の適切にプログラムされたフィールドプログラマブルゲートアレイを含み得る。特定の場合、状態エンジン340及びマッピングエンジン350の1つ以上は、コンピュータプログラムコードを実行する1つ以上の図形処理ユニットによって実装され得るだけではなく、上記の事例の代わりに実装され得る。特定の場合、状態エンジン340及びマッピングエンジン350の1つ以上は、例えば、複数のプロセッサ及び/または図形処理ユニットのコアになど、並行して実装される1つ以上の機能によって実装され得る。
【0056】
状態エンジン340は、ロボットデバイス360の状態を決定するように構成される。ロボットデバイス360の状態は、ロボットデバイス310のメモリ及び/またはストレージデバイスに格納されたデータを含み得る。マッピングエンジン350は、ロボットデバイス360の状態を使用し、環境370の3次元モデルを生成するように構成される。
【0057】
マッピングエンジン350によって生成された3次元モデル370は、画像データ内で表される環境の3次元空間内の位置または場所を表す位置要素を有する任意のモデルまたはマップを含み得る。また、3次元モデル370は、ロボットデバイス310のメモリ及び/またはストレージデバイスに格納されたデータも含み得る。特定の場合、3次元モデル370は、3次元空間の「高密度」モデルである。この場合、例えば数十万または数百万の要素など、モデルを形成する多数の位置要素がある。これは、特徴ベースのモデル、または数十または数百の定義されたモデル点しかない場合がある「スパース」モデルに比較され得る。1つの場合では、位置要素は、空間を有する表面が、3次元の特定の解像度のボクセル空間内のボクセル値に関して定義される、空間のボクセルモデルに基づいてよい。別の場合、面素(「surfel」)モデルが使用されてよい。面素モデルは、
図6A及び
図6Bに関してより詳細に説明される。面素モデルでは、特定の位置に配向されたいくつかの表面は位置要素として定義される。3次元モデル370の範囲は、画像キャプチャデバイス320によって観測された環境の範囲に依存し得る。
【0058】
図3Aの例では、ロボットデバイス360の状態は、3次元モデル370に対する画像キャプチャデバイス320の少なくとも1つの変換を含む。例えば、3次元モデル370は、(本明細書では「W」で表す)「ワールドフレーム」を表し得、ロボットデバイス360の状態は、ワールドフレームの(本明細書では「C」で表す)画像キャプチャデバイス320のポーズ、及びワールドフレームのロボットデバイス310(例えば、基部、本体、メインシャシ、またはロボットデバイスの他の基準点-本明細書では「B」で表す)のポーズを含み得る。特定の場合、ワールドフレームの画像キャプチャデバイス320のポーズは、移動W
rWCを表すデータ、及び向きq
WCを表すデータとして格納され得る。同様に、ワールドフレームのロボットデバイス310のポーズは、移動W
rWBを表すデータ、及び向きq
WBを表すデータとして格納され得る。この場合、ロボットデバイス360の状態は、12次元多様体に定義された点として存在する。
【0059】
図3Aの例では、状態エンジン340は、ロボットデバイス310が環境を探索するにつれ、ロボットデバイス360の状態を決定するように構成される。例えば、経時的に、画像キャプチャデバイス320及びロボットデバイス310の少なくとも1つの位置及び向きは、空間内で変化する場合がある。変化は、1つ以上のアクチュエータ330を使用するアクティブな動き、及び/または環境内の画像キャプチャデバイス320及びロボットデバイス310のノイズが多い摂動に起因する(例えば、滑り、風、機械的反発力、凹凸した表面などに起因する)場合がある。したがって、これらの変化を反映するために、ロボットデバイス360の状態を更新する必要がある。本例では、状態エンジン340は、ロボットデバイスの状態の変化と、1つ以上のアクチュエータ330から取得された測定値との比較に基づいて、ロボットデバイス360の状態を更新するように構成される。特定の場合、ロボットデバイスの状態の変化は、連続する画像が画像キャプチャデバイス320によってキャプチャされる2回の間で決定される。画像キャプチャデバイス320がビデオカメラを含む場合、次に状態エンジン340は、フレーム単位でロボットデバイス360の状態を更新し得る。特定の場合、状態エンジン340は、例えばn番目のフレームごとに、キャプチャしたフレームの選択されたサブセットに対して状態更新を実行するように構成され得る。後続の例に関してより詳細に説明するように、特定の場合、ロボットデバイス360は、ロボットデバイスの現在の状態と以前の状態を含み得る。これらの場合、状態エンジン340は、現在の状態と以前の状態の構成要素をともに最適化するように構成され得る。例えば、これは、新しい更新された状態を計算すること、及び次の更新のために以前の状態として既存の現在の状態を格納することを含み得る。
【0060】
図3Aの状態エンジン340及びマッピングエンジン350は、協力するように構成される。
図3Aの例で、マッピングエンジン350は、ロボットデバイス360の状態に基づいて画像キャプチャデバイス320からの画像を3次元モデル370の投影と比較し、この比較の結果を使用して3次元モデル370を更新するように構成される。投影は、画像キャプチャデバイス320の現在のポーズからのモデルの2次元ビューを表す合成画像の生成を含み得る。投影は、完全な画像のために、またはピクセル単位で実行され得る。例えば、合成画像のピクセル値は、3次元モデル370をカメラ平面上に投影することによって計算され得、カメラ平面の位置及び向きは、ロボットデバイス360の状態として表す画像キャプチャデバイス320の現在のポーズによって決定される。
【0061】
1つの場合では、画像キャプチャデバイス320からの画像データ内のピクセル値が処理され、3次元空間のモデリングに寄与するので、3次元モデル370は、「高密度」と見なし得る。例えば、「高密度」表現では、画像内のあらゆるピクセルは、可能な限り多くの情報を追跡及びマッピング推定手順に提供し得る。これによって、3次元モデル370、つまりシーンのマップの結果として生じる表現を合成キャプチャデバイスまたはカメラに投影し直して、「高密度」画像、つまり、合成された画像内のピクセルの大多数がモデルと格納された情報に基づいて合成されたデータを有する、画像キャプチャデバイス320の解像度での画像を再構築することが可能になる。この投影は、画像キャプチャデバイス320の少なくともポーズを表す、ロボットデバイス360の状態を使用し、実行され得る。対照的に、例えばキーポイントまたは抽出された特徴を利用するシステムなど、「スパース」システムは、モデルを生成するために画像データのピクセル値の小さいサブセットのみを使用する。「スパース」の場合、モデル内に十分な情報がないので、合成された画像はキャプチャデバイス解像度で作成することができない。このようにして、「高密度」システムは、例えば現実環境の所与の公差内など、高い精度で3次元空間内の1つ以上の表面を推定するために機能する。「スパース」システムが離散点の小さいセットに対して作用するのに対し、「高密度」システムは量子化された連続システムに類似すると見なし得る。
【0062】
図3Bは、
図3Aの例の変形形態であるロボットデバイス380を示す。この変形形態では、
図3Aの1つ以上のアクチュエータ330は、アクチュエータの2つの別々のセットを含む。ロボットアクチュエータ332の第1のセットは、環境に対してロボットデバイス380を移動させるために提供される。例えば、これらは、
図1C~
図1Hに示すように、車輪、脚部、または回転子のセットを含み得る。また、キャプチャデバイスアクチュエータ334の第2のセットは、次にロボットデバイス380に対して画像キャプチャデバイス320を移動させるために提供される。例えば、これらは、画像キャプチャデバイス320をロボットデバイス380に結合する可動マウントの用のアクチュエータのセットを含み得る。キャプチャデバイスアクチュエータ334は、複数の関節を有する可動マウントの1つ以上の関節を移動させるために使用される一連のモータを含み得る。特定の例では、ロボットアクチュエータ332は、ロボットデバイス380と環境との間で複数の自由度を提供し、キャプチャデバイスアクチュエータ334は、画像キャプチャデバイス320とロボットデバイス380との間で複数の自由度を提供する。
【0063】
また、
図3Bのロボットデバイス380は、それが移動コントローラ390を含む点で
図3Aのロボットデバイス310とは異なる。移動コントローラ390は、環境内でのロボットデバイス380の移動を制御するために使用される、上述の追加の処理デバイスを含んでもよい。移動コントローラ390は、手動制御及び自律制御の1つ以上を可能にし得る。移動コントローラ390は、ロボットアクチュエータ332及びキャプチャデバイスアクチュエータ334に通信可能に結合される。移動コントローラ390は、このようにしてロボットデバイス380及び画像キャプチャデバイス320の移動を制御することができる。新しい環境を探索するとき、ロボットデバイス380は、ロボットデバイス380の移動及び画像キャプチャデバイス320の移動を含む探索戦略を実装し得る。例えば、検索及び救出の状況では、移動コントローラ390は、ロボットデバイス380を新しい場所に移動させるためにロボットアクチュエータ332を制御し得る。いったん新しい場所に入ると、移動コントローラ390は、ロボットデバイス380が静止しているときにキャプチャデバイスアクチュエータ334を制御して、その場所での環境の周りをパニングし得る。
【0064】
図3Bの例では、移動コントローラ390は、環境をナビゲートするために3次元モデル370を使用するように構成される。例えば、3次元モデル370は、環境内の物理的な境界及び障害物(例えば、
図1Aのオブジェクト115など)を示し得る。この場合、移動コントローラ390は、環境内でロボットデバイスを移動させながら、物理的な境界及び障害物を回避するための移動経路を決定し得る。別の場合、部屋または他の屋内場所の3次元モデル370は、ロボットデバイス380が部屋を出ることを可能にする退出点を示し得る。また、移動コントローラ390は、例えば低い高さの壁、物体、または通路などの物理的な境界及び障害物を回避するために、画像キャプチャデバイス320の場所を制御する必要がある場合もある。
【0065】
図3Bの例では、状態エンジン340は、ロボットデバイス360の状態を更新するために、画像キャプチャデバイス320及び3次元モデル370からの画像データを使用するようにさらに構成される。1つの場合では、状態エンジン340は、画像キャプチャデバイス320によってキャプチャされた画像の逆投影点と、3次元モデル370の対応する点との間の点対平面の誤差を最小限に抑えようと努めるようにロボットデバイス360の状態を更新するように構成される。この場合、逆投影は、ロボットデバイス360の状態によって示される画像キャプチャデバイス320の現在のポーズに基づく。この場合の画像データは深度データを含み得、状態の更新は、深度データと3次元モデル370との間の幾何学的誤差を最小限に抑えようと努め得る。
【0066】
特定の場合、マッピングエンジン350は、反復最接近点誤差を決定するように構成され得る。この場合、状態エンジン340は、ロボットデバイス360の状態を決定するために反復最接近点誤差をさらに使用するように構成されてもよい。
【0067】
特定の場合、画像キャプチャデバイス320は、例えば
図2B及び
図2Cに示すように、カラー画像データ及び深度マップを出力するように構成される。この場合、マッピングエンジン350は、3次元モデル370を更新するためにカラー画像データ及び深度マップを使用するように構成される。これは、
図5及び
図7の例に関して以下により詳細に説明される。特定の場合、状態エンジン340は、深度マップのみ使用し得る。状態エンジン340及びマッピングエンジン350は、
図3A及び
図3Bの例で別個のコンポーネントとして説明されているが、特定の場合、それらの機能は、単一のコンポーネントに結合され得る、または全体としてシステムの機能を失うことなく、特定の機能を一方のコンポーネントから他方のコンポーネントに移動し得ることに留意されたい。
【0068】
1つの場合では、
図3A及び
図3Bのロボットデバイス310、380は、1つ以上の機能を実行するように配置され得る。例えば、ロボットデバイスは、マッピング機能を実行し、(例えば、緊急時に)特定の人物及び/または物体の位置を突き止め、物体を移送し、清掃または保守を実行するなどのように配置され得る。1つ以上の機能を実行するために、ロボットデバイスは、さらなる知覚装置、真空システム、及び/またはアクチュエータなどの追加のコンポーネントを含んで環境とインタラクションし得る。
【0069】
図4Aは、ロボットデバイスの例のマッピングシステム400を示す。マッピングシステム400は、
図3A及び
図3Bではロボットデバイス310、380の一部として、または別の例のロボットデバイスの一部として使用され得る。マッピングシステム400は、例えば、
図3A及び
図3Bのアクチュエータ330及び332、または
図1A~
図1Hのアクチュエータ135、164、184、及び194など、環境内でロボットデバイスを移動させるために1つ以上のアクチュエータを含むロボットデバイスと動作するように構成される。また、この場合のロボットデバイスは、画像キャプチャデバイス用の可動マウントも含む。可動マウントは、
図1C、
図1E、及び
図1Gに示すマウント165、185、195、
図3Bのキャプチャデバイスアクチュエータ334を含むマウント、またはロボットデバイスと画像キャプチャデバイスとの間で延びる別の可動機械結合の1つを含み得る。本例では、「可動マウント」は、対応するモータのセットによって移動できる1つ以上の関節を含み得る。したがって、特定の場合、可動マウントは、ロボットデバイスに対して移動でき、例えば、可動マウントは、ロボットデバイスの上に取り付けられ得るが、独立して移動できる。ロボットデバイス上で移動されるとき、可動マウントは、環境内で移動を達成し得る。可動マウントは、より複雑な多関節リンク機構だけではなく、単純な回転要素及び枢動要素を含む多種多様の可能な実施態様を有し得る。
【0070】
マッピングシステム400は、エラーデータ405に作用する。本例のエラーデータ405は、運動誤差410、走行距離計誤差420、及び幾何学的誤差430を含む。エラーデータ405は、状態エンジン440によってアクセスされる。状態エンジン440は、
図3A及び
図3Bから状態エンジン340の1つ、または別の処理デバイスを含み得る。状態エンジン440は、ロボットデバイスの状態データ445を更新するように構成される。本例では、状態データ445は、ロボットデバイス450の現在の状態を表すデータ、及びロボットデバイス460の以前の状態を表すデータに区分される。説明を簡単にするために、「現在の状態」と「以前の状態」に参照がなされ、これは、ロボットデバイスの少なくとも1つの構成を示すメモリまたはストレージデバイスに保持されるデータを指すと解釈されるべきである。状態エンジン440は、ロボットデバイス450の現在の状態、及びロボットデバイス460の以前の状態をともに最適化するように構成される。これによって、環境のモデルを更新するためにマッピングシステム400によって使用され得る、ロボットデバイス450の更新された現在の状態を含む更新状態データ445が生じる。例えば、ロボットデバイス450の更新された現在の状態は、
図3A及び
図3Bのマッピングエンジン350に類似したコンポーネントによって使用されてモデル370に類似した3次元モデルを更新し得る。
【0071】
本例では、ロボットデバイス450の現在の状態とロボットデバイス460の以前の状態の各々は2つのデータコンポーネントを含む。これは、ロボットデバイス462の一般的な状態に関して
図4Bに示されている。
図4Bで、ロボットデバイス462の一般的な状態は、環境464のモデルに対するロボットデバイスのポーズを示すデータ、及びモデル466に対する画像キャプチャデバイスのポーズを示すデータを含む。
図4Bで、これらのポーズは、
図1A~
図1Hに関して上述した2つの変換T
WBとT
WCとして表されている。ポーズはいくつかの異なる方法で格納され得、例えば、ポーズは、別々に格納され得る移動及び回転の態様に分解され得る。
【0072】
運動誤差410は、ロボットデバイスの可動マウントと関連する運動測定値、及びロボットデバイス450の現在の状態から導出されるロボットデバイスに対する画像キャプチャデバイスのポーズの関数を含む。例えば、運動測定値は、可動マウントを制御するロボットデバイスの1つ以上のアクチュエータから直接的にまたは間接的に取得される1つ以上の測定値を含み得る。
【0073】
走行距離計誤差420は、1つ以上のアクチュエータと関連する走行距離計測法の測定値、及び現在の状態と以前の状態との間の走行距離計差の関数を含む。この場合の1つ以上のアクチュエータは、
図3Bのロボットアクチュエータ332または
図1C、
図1E、及び
図1Gのアクチュエータ164、184、及び194などのアクチュエータ、つまり、環境内でロボットデバイスを移動させるアクチュエータを含み得る。走行距離計測定値は、これらのアクチュエータから直接的にまたは間接的に取得される1つ以上の測定値を含み得る。運動誤差410が可動マウントによって達成される画像キャプチャデバイスの移動に関するのに対し、走行距離計誤差420は、環境内でのロボットデバイスの移動に関する。
【0074】
幾何学的誤差430は、画像キャプチャデバイス及び環境のモデルからの画像データの比較を含み、比較は、ロボットデバイス450の現在の状態に基づいた投影を使用する。例えば、画像データはモデルの上に逆投影される場合もあれば、モデルが画像データのための平面上に投影される場合もある。逆投影は、例えばT
WCなど、ロボットデバイスの現在の状態からのモデルに対する画像キャプチャデバイスのポーズを使用し得、投影は、ポーズの計算された逆数を使用し得る。どちらの手法も適用してもよい。幾何学的誤差430は、画像データの提供されたフレームのための深度データと、環境のモデルとの比較に基づいてよい。幾何学的誤差430は、例えば、
図2B及び
図2Cの深度データ250または280などの深度データからの複数の深度測定値など、画像データからの複数のピクセルについて計算され得る。複数のピクセルは、画像データのサブセット、または画像データの全ピクセルを含み得る。1つの場合では、幾何学的誤差430は、点対平面の反復最接近点誤差(ICP)関数に基づいて計算され得る。
【0075】
1つの場合では、状態エンジン440は、運動誤差410、走行距離計誤差420、及び幾何学的誤差430を含むコスト関数を最適化する。例えば、状態エンジン440は、コスト関数を最小限に抑える以前の状態と現在の状態の値を決定し得、誤差410、420、及び430の各々は、現在の状態と以前の状態の1つ以上と関連する変数を有する関数として定義される。例えば、状態エンジン440は、少なくとも、現在の状態の変換TWBとTWC及びコスト関数を最低限に抑える以前の状態の変換TWBの値を決定し得る。このようにして、モデルに対する画像キャプチャデバイスのポーズ、及びモデルに対するロボットデバイスのポーズは、幾何学的追跡、及びロボットデバイスと関連する運動データと走行距離計測法データによって制約されるとして決定され得る。運動誤差410は、ロボットデバイス450の現在の状態の中で表される2つの変換TWB及びTWCの値を制約し得る。走行距離計誤差420は、ロボットデバイス450の現在の状態、及びロボットデバイス460の以前の状態の中で変換TWBの値を制約し得る。幾何学的誤差430は、ロボットデバイス450の現在の状態の中で変換TWCの値を制約し得る。
【0076】
運動誤差410を決定するために使用される運動測定値は、
図3Bに示すキャプチャデバイスアクチュエータ334などのマウントアクチュエータ、つまり可動マウントを移動させるために使用されるアクチュエータから取得され得る。運動測定値は、例えば、ロボットデバイスのシステムバスを介して通信されるデータパケットまたは信号としてマウントアクチュエータから直接的に受信され得る、及び/または間接的に受信され得、例えば、状態エンジン440は、運動測定値を取り出すためにロボットデバイスのメモリまたはレジスタにアクセスし得る。1つの場合では、運動測定値は、可動マウントの観測を介して測定され得、例えば、ロボットデバイスを特徴付ける画像データから決定され得る。別の場合、運動測定値は、アクチュエータからフィードバックを受け取るように配置される、
図3の移動コントローラ390など、アクチュエータのコントローラから取得され得る。
【0077】
運動測定値は、ロボットデバイスに対する画像キャプチャデバイスのポーズの変換の測定値、例えば
【数1】
を含み得る。可動マウントが、各関節が1つ以上のモータを使用し、移動される複数の関節を含む場合、運動測定値は、順運動学を使用し、決定され得る。順運動学は、例えば、可動マウントの最後の点などのエンドエフェクタの位置を、関節パラメータの指定された値に基づいて決定することを可能にするロボットデバイスと関連する運動方程式を使用することを指す。この場合、指定された値は、関節と関連するモータ位置の測定値から導出し得る。この場合、可動マウントは、2つのリンクが関節と接合されるリンクの連続チェーンとして定義され得る。第1の剛体変換は、関節で可能である相対的な移動を特徴付けるために各関節に定義され、第2の剛体変換は各関節の寸法を定義し得る。変換は、可動マウント及び/またはロボットデバイスの形に依存する。ロボットデバイスの基部からエンドエフェクタへの可動マウントの移動をモデル化する第1の剛体変換及び第2の剛体変換のシーケンスが定義され得、画像キャプチャデバイスはエンドエフェクタに取り付けられる。状態エンジン440は、「未処理の」関節測定値を受け取り、剛体変換のシーケンスを評価することによってロボットデバイスに対する画像キャプチャデバイスのポーズ
【数2】
を計算する場合もあれば、例えば、可動マウント及びロボットデバイスの1つ内に位置する可動マウントと関連するマイクロコントローラなど、外部コンポーネントからポーズを受け取る場合もある。
【0078】
特定の場合、その状態エンジン440は、運動測定値及び走行距離計測定値を使用してロボットデバイスの状態を初期化する。ロボットデバイス460の以前の状態の値の第1のセットは、0値のセットまたは所定の開始構成(例えば、既知の開始位置及び向き)であってよい。ロボットデバイス450の現在の状態の値の第1のセットは、次に初期化した以前の状態及び初期の運動測定値及び初期の走行距離計測定値(例えば、ビデオデータのフレームの開始位置と受け取りとの間で測定される)に基づいて決定され得る。例えば、ロボットデバイスは、任意の本体のポーズ及び順運動学の決定に基づいて決定された画像キャプチャデバイスのポーズで初期化され得る。
【0079】
1つの場合では、運動誤差410は、ロボットデバイスに対する画像キャプチャデバイスの位置を示す測定された移動と、ロボットデバイス450の現在の状態に基づいた移動との間の差を含む。また、運動誤差410は、ロボットデバイスに対する画像キャプチャデバイスの測定された向きと、ロボットデバイス450の現在の状態に基づいた移動との間の差も含み得る。ロボットデバイスに対する画像キャプチャデバイスのポーズは、
【数3】
として計算され得る。1つの場合では、運動誤差410は、以下のように決定され、
【数4】
上式で、
【数5】
は、ロボットデバイスに対する画像キャプチャデバイスの測定された移動であり、
Br
BCは、ロボットデバイスの状態で表されるロボットデバイスに対する画像キャプチャデバイスの移動であり、
【数6】
は、ロボットデバイスに対する画像キャプチャデバイスの測定された向きであり、q
BCは、ロボットデバイスの状態で表されるロボットデバイスに対する画像キャプチャデバイスの向きである。ロボットデバイスの状態を最適化することは、
【数7】
の提供された値を使用し、
Br
BCとq
BCの値を決定することを含み得る。
【0080】
1つの場合では、走行距離計誤差420は、運動誤差と同様に決定され得る。走行距離計誤差420は、ロボットデバイスの現在の状態と以前の状態の両方を含む誤差である場合がある。例えば、走行距離計誤差は、2つの状態の時間の間のロボットデバイスのポーズの測定された変化と、現在の状態と以前の状態との間のロボットデバイスのポーズの変化との間の誤差を考慮する場合がある。例えば、ポーズの変化は、変換
【数8】
によって表され得、上式で、0は以前の状態を示し、1は現在の状態を示す。上記の例に従うと、1つの場合では、走行距離計誤差420は、以下のように決定され、
【数9】
上式で、
【数10】
は、ロボットデバイスの位置の測定された変化であり、
B0r
B0B1は、ロボットデバイスの現在の状態と以前の状態によって表されるロボットデバイスの位置の変化であり、
【数11】
は、ロボットデバイスの向きの測定された変化であり、q
B0B1は、ロボットデバイスの現在の状態と以前の状態によって表されるロボットデバイスの向きの変化である。ロボットデバイスの状態を最適化することは、
【数12】
の提供された値を使用し、
B0r
B0B1とq
B0B1の値を決定することを含み得る。
【0081】
1つの場合では、幾何学的誤差430は、深度マップのk番目のピクセルについて、以下のように決定され、
【数13】
上式で、括弧に入れられた部分は、画像データから取得された逆投影点
cv
k(ロボットデバイス450の現在の状態からモデルT
WCに対する画像キャプチャデバイスのポーズを使用する投影)と、モデル
wv
kの対応する点の間の差異を表し、この差異はモデルに示される点の面法線
wn
kに沿って投影されている。
【0082】
1つの場合では、情報行列は、測定の不確実性をモデル化するために誤差項の各々のために構築される。例えば、運動誤差410及び/または走行距離計誤差420の情報行列は、以下として決定され得、
【数14】
上式で、σ
rは移動測定値の分散であり、σ
αは向き測定値の分散である。幾何学的誤差430の情報行列は、深度測定値と関連する逆共分散行列であってよい。
【0083】
状態エンジン440は、経時的にロボットデバイス450の現在の状態を維持するために反復して動作し得る。例えば、状態エンジン440は、画像キャプチャデバイスからのビデオデータの新しいフレームの到着に続いて起動され得る。状態エンジン440が、運動測定値及び走行距離計測定値に基づいて行われるロボットデバイス450の現在の状態の予測を精緻化するために動作するのが見られ得る。
【0084】
1つの場合では、状態エンジン440は、状態に対する局所摂動δxとしてモデル化されるロボットデバイスの状態の変化を決定するように構成される。この局所摂動は、移動成分及び向き成分に分割され得る。この場合、状態エンジン440は、コスト関数を最小限に抑える最小の局所摂動を決定することによって上述のコスト関数を最適化し得る。最適化は、任意の既知の最適化手順を使用し、実行され得る。1つの場合では、ヤコビ行列及び残余のセットが、コスト関数の各項について計算される。各項のヤコビ行列及び残余は、コスト関数のヤコビ行列J及び残余のセットbに結合され得る。1つの場合では、最適化は、以下のような最小二乗解を計算することによって実行され得る。
【数15】
【0085】
1つの場合では、ロボットデバイス460の以前の状態及びロボットデバイス450の現在の状態の各々に対する局所摂動が計算される。例えば、状態エンジン440の反復中の状態更新は、
【数16】
を決定することを含み得、0は、以前の状態を表し、1は現在の状態を表す。最適化は、正規方程式の24x24システムから成る場合がある。これは、1つ以上のプロセッサを使用して解き得る。1つの場合では、3レベル粗密ピラミッドを有するガウス-ニュートン反復法を使用し、これを解き得る。特定の場合、1つ以上のプロセッサは、1つ以上の図形処理ユニットの一部を形成し得る。これらの図形処理ユニットは、ロボットデバイスの1つ以上の組み込みプロセッサに設けられ得る。
【0086】
特定の場合、
図4Aの状態エンジン440は、一次事前確率を使用し、現在の状態と以前の状態をともに最適化するように構成される。例えば、状態更新を決定するために状態エンジン440によって最適化されるコスト関数は、一次事前確率を表す追加の項を含む。一次事前確率は、運動誤差、走行距離計誤差、及び幾何学的誤差、及び/または後続の反復の準備が完了した以前の状態を周辺化することによって決定され得る。状態エンジン440は、上述したように状態最適化で使用されるヤコビ行列H*及び残余b*のセットを計算するように構成され得る。1つの場合では、シューア補行列が、以下のように使用され得、
【数17】
上式で、J
iは、(例えば、0が以前の状態であり、1が現在の状態である)状態iのコスト関数のヤコビ行列であり、biは、(例えば、0が以前の状態であり、1が現在の状態である)状態iのコスト関数の残余のセットである。ヤコビ行列H*及び残余のセットb*は、例えば、ビデオデータの新しいフレームが受け取られるとき、次の最適化反復の一次事前確率として使用され得る。特定の場合、一次補正は、例えば、b
*’=b
*+H
*Δxなど、後続の更新の残余のセットのために実行され得、Δxは、後続の線形化点と以前の線形化点の間の差異である。一次事前確率は、以下の形式を有する、
【数18】
つまり、モデル(「W」)に対するロボットデバイス(「B」)及び画像キャプチャデバイス(「C」)の移動及び向きの差異を示す項を有する、誤差項としてコスト関数に表されてよい。この誤差項は、最適化内で、及び/またはロボットデバイス及びループクロージャ補正の初期化の1つ以上のために使用され得る。最適化中、誤差項及び以前のヤコビ行列及び残余のセットを利用し得る。新しいヤコビ行列及び残余のセットは、各最適化手順の最後に取得され得、これらは、後続のフレームの最適化に使用され得る。
【0087】
特定の場合、可動マウントのエンドエフェクタに対するキャプチャデバイス固有の変換は、ビジュアルタグなどを使用し、較正し得る。例えば、カメラに固有の変換は、画像キャプチャデバイスの外来性(extrinsics)及びモデルに対するビジュアルタグの相対的なポーズをともに最適化することによって検出された端点の再投影誤差を最小限に抑えることによって決定し得る。キャプチャデバイス固有の変換は、較正段階中に決定され、ロボットデバイスの動作にとって一定であると見なされ得る。
【0088】
図4Aの例で、状態エンジン440は、ロボットデバイス450の現在の状態の少なくとも更新された値のセットを決定するように構成され得る。マッピングシステム400は、次にロボットデバイス450の更新された現在の状態を使用し、環境のモデルを更新するように構成される。例えば、変換T
WCで表すモデルに対する画像キャプチャデバイスのポーズは、画像キャプチャデバイスからの画像データを環境のモデルと融合するために使用され得る。モデルを更新するプロセスは、
図5、
図7、及び
図8の例に関して以下により詳細に説明される。1つの場合では、状態エンジン440は、
図3A及び
図3Bに示すマッピングエンジン350などのマッピングエンジン用の追跡モジュールとして使用され得る。
【0089】
特定の場合、マッピングシステム400は、モデルの第1のセットの部分をモデルの第2のセットの部分とアラインさせるために変形グラフを使用するように構成される。これは、
図7及び
図8に関して以下により詳細に説明される。変形グラフは、アライメント中に所与の位置でモデルを修正するために使用されるモデルの所与の位置の近接点のセットを示す。このアライメントは、モデルに対して「ループクロージャ」を成立させる(enact)ために実行され得る。マッピングシステム400は、以下により詳細に説明するように「ループクロージャ」を検出し、実行するように構成され得る。「ループクロージャ」の場合、マッピングシステム400は、画像キャプチャデバイスの新しいポーズ(例えば、T
WC’)を計算し得る。この場合、状態エンジン440は、
図3A及び
図3Bのマッピングエンジン350などのマッピングエンジンから新しいポーズを受け取り得る。この新しいポーズは、例えばビデオデータの次のフレームの現在の状態を決定するとき、ロボットデバイス460の以前の状態をリセットするために使用し得る。以前の状態の画像キャプチャデバイスのポーズは、マッピングエンジンから受け取った新しいポーズに基づいて置換され得、ロボットデバイスのポーズは、例えば
【数19】
など、画像キャプチャデバイスの更新されたポーズを使用し、更新され得、T
BCは、(例えば、新しいポーズが受け取られる前にロボットデバイスの状態を使用し、計算された)ロボットデバイスに対する画像キャプチャデバイスの計算されたポーズである。一次事前確率が使用される場合、それは、状態エンジン440の初期起動に類似した方法で初期化し得る。初期の本体ポーズ及び/または初期のカメラポーズは、一次事前確率を初期化するために測定され得る。
【0090】
図5は、環境のモデルを構築するために使用し得るマッピングエンジン510の例500を示す。マッピングエンジン510は、ロボットデバイスの現在の状態が、環境のモデルを更新するためにどのように使用され得るのかをよりよく説明するために例として提示されているが、マッピングエンジンの異なる実施態様も、この状態を同様に使用し得ることに留意されたい。マッピングエンジン510は、画像データ520を取得するように構成される。これは、上記の図の画像キャプチャデバイス120、210、及び320など、画像キャプチャデバイスによってアクティブに生成される、または以前に生成された画像データであってよい。画像データ520は、例えば経時的に3次元空間のビューなど、キャプチャデバイスを使用し、環境の観測と関連付けられる。例えば、画像データ520は、所与の期間にわたってビデオデータを含み得、所与の期間にわたって、ロボットデバイスは環境内で移動する。マッピングエンジン510は、画像データ520を処理し、環境のモデル530を計算するように構成される。本例で、このモデルは、3次元空間の3次元モデルである。
【0091】
本例のマッピングエンジン510は、少なくとも1つのモデル区分器540及び位置合わせエンジン550を含む。モデル区分器540は、少なくとも1つのモデル特性に基づいて、3次元モデル530を少なくともアクティブ部分と非アクティブ部分にセグメント化するように構成される。位置合わせエンジン550は、経時的に3次元モデル530のアクティブ部分を3次元モデル530の非アクティブ部分とアラインさせるように構成される。マッピングエンジン510は、該モデルを経時的に更新するために3次元モデル530のアクティブ部分を使用するようにさらに構成される。つまり、非アクティブ部分は、モデルを更新するために使用されない。
【0092】
特定の場合、マッピングエンジン510は、フレーム単位で動作するように構成される。一実施態様では、マッピングエンジン510は、画像データの連続するフレームFtをメモリにロードするように配置され得る。これらのフレームは、ロボットデバイスにとって内部のデータストレージに格納され得る、または外部データストレージから取得され得る。他の実施態様では、マッピングエンジン510は、ロボットデバイスにとって内部のメモリから画像データの1つ以上のフレームを取り出し得る。一実施態様では、内部メモリの一部分は、特定の時間tにフレームデータを保持し得、新しい画像データ520がキャプチャデバイスから受け取られると、上書きされ得る。
【0093】
マッピングエンジン510がフレーム単位で動作するように構成されるとき、マッピングエンジン510は、フレーム単位で3次元モデル530を更新するように構成され得る。これは、画像データ520の特定のフレームを3次元モデル530と「融合する」こと、つまり、画像データ520のフレームを使用して、3次元モデル530を修正及び更新することを含み得る。これは、画像データ520のフレームから導出され得る新しい位置要素を含むことを含み得る。3次元モデル530がどのように生成または更新され得るのかの特定の具体的な例は、以下により詳細に説明される。本明細書に説明する手法は、不完全である及び/またはノイズがある画像データのフレームに適用し得ることに留意されたい。3次元モデル530を更新することは、画像データの測光データ及び深度データのコンポーネントの1つ以上を使用し、実行され得る。1つの場合では、3次元モデル530を更新するために、深度データのみキャプチャし、使用し得る。
【0094】
1つの場合では、マッピングエンジン510は、例えば、
図3A及び
図3Bの状態360または
図4A及び
図4Bの状態450、462など、ロボットデバイスの現在の状態の中で表されるキャプチャデバイスのポーズを使用するように構成される。2つ以上のキャプチャデバイスが使用される場合、ロボットデバイスの状態は、各キャプチャデバイスのポーズを表すデータを含み得る。
【0095】
モデル区分器540は、モデルデータを修正することによって3次元モデル530をセグメント化するように構成され得る。例えば、1つの場合では、3次元モデル530の所与の位置要素は、それがモデルのアクティブ部分の一部を形成するのか、それともモデルの非アクティブ部分の一部を形成するのかを示す変数を有し得る。別の場合、モデル区分器540は、3次元モデル530を、該モデルに適用された関数としてセグメント化するように構成され得る。例えば、3次元モデル530は、モデル区分器540に入力され得、モデル区分器540は、3次元モデル530のアクティブ部分及び非アクティブ部分の1つ以上を出力するように構成され得る。どちらの手法を使用してもよい。
【0096】
3次元モデル530をセグメント化するためにモデル区分器540によって使用されるモデル特性は、3次元モデル530の確実性のレベルを示し得る。例えば、モデル区分器540は、時間及び距離の1つ以上に基づいて、3次元モデル530をセグメント化し得る。第1の場合、モデル特性は、3次元モデルの所与の位置のモデル生成の時間及びモデル更新の時間の1つを含み得る。この場合、非アクティブ部分は、現在の観測時間と、所定の量より多く異なる過去の観測時間を示し得る。例えば、モデル区分器540は、3次元モデル530を作り上げる位置要素ごとに時間データを処理して、3次元モデル530の位置要素のセットを、アクティブな要素を表す2つの互いの素なセットθ、及び非アクティブな要素を表すΨに分割するように配置されてよい。これを行うために、モデル区分器540は、各位置要素のタイムスタンプtPを処理し得(例えば、位置要素の時間は前回修正された)、その結果、(例えば、画像データFtの特定の処理されたフレームに関係する)セグメント化の所与の時間tの間、各位置要素は、モデルPc(cは、3次元空間の座標である)内にあり、位置要素は、t-tP<δtの場合、集合θ(つまり、Pc∈θ)内にあり、位置要素は、t-tP≧δtの場合、集合Ψ(つまり、Pc∈Ψ)内にあり、δtは定めれた期間である。この形のセグメント化またはモデル要素分類は、期間δtの間、非アクティブと見なされていなかった位置要素に徐々にラベルを付ける。それは、時間ウィンドウの応用例と見なし得る。上述のように、マッピングエンジン510は、画像データの新しいフレームを3次元モデル530のアクティブ部分に融合するように構成され得、モデルの非アクティブ部分は、追跡及び/またはデータ融合に使用されない。この場合、位置合わせエンジン550によるアクティブ部分と非アクティブ部分のアライメントに続いて、アラインされた非アクティブ部分は、それらがいますぐアクティブ部分になるように修正され得る。例えば、非アクティブ部分のアライメント時、位置合わせエンジン550は、非アクティブ部分の各位置要素と関連する前回の修正の時間を更新し得る。これは、このアラインされた非アクティブ部分が、モデル区分器540による3次元モデル530の処理に続いて、いますぐアクティブになるという効果を有し得る。これによって、連続するフレーム対モデルの追跡及びモデル対モデルの追跡も可能になり、視点が不変のループクロージャが可能になる。
【0097】
1つの場合では、マッピングエンジン510は、モデルを更新する際に使用するための3次元モデル530のアクティブ部分からの投影に基づいてアクティブモデルフレームを計算するように構成される。例えば、そのような投影は、予測されたビューまたは3次元モデル530のアクティブ部分の観測を表す2次元の視点または仮想フレームを提供し得る。1つの場合では、アクティブモデルフレームは、(例えば、ビデオデータの所与のフレームの)所与の時間にロボットデバイスの現在の状態から取得されるモデルに対する画像キャプチャデバイスのポーズに基づいて生成され得る。1つの場合では、予測フレームは、画像データ520を作り上げる各データセットに計算され得る。例えば、
図2B及び
図2Cに示す画像データと同様の画像データを処理するとき、各アクティブモデルフレームは、深度データの予測フレーム
【数20】
及び特定の場合、測光データの予測フレーム
【数21】
を含み得る。これらは、画像データ520から記録またはキャプチャされた画像フレームF
tと同じ解像度であってよい。アクティブモデルフレームの使用は、以下に
図5に関してより詳細に説明される。
【0098】
上述のように、マッピングエンジン510は、例えば記録した画像データ520の複数のフレームが処理されるとなど、経時的に3次元モデル530を生成するように配置され得る。1つの場合では、画像データ520は、例えばロボットデバイスの移動及びロボットデバイス上で可動マウントの移動の1つ以上を介して画像キャプチャデバイスが移動するにつれ、経時的に3次元空間の観測を表す。したがって、画像データ520のフレームがマッピングエンジン510によって処理されると、3次元モデル530はサイズが大きくなり、例えば3次元空間の異なる部分を表すより多くの位置要素を組み込む。さらに、位置合わせエンジン550は、経時的にモデルのアクティブ部分と非アクティブ部分のアライメントを実行するように構成される。これは、3次元空間の部分が再訪または再観測されると、つまりキャプチャデバイスの動きの「ループ」が閉じられると発生し得る。これは、画像データ520のより多くのフレームが処理されるにつれ、3次元モデル530の精度及び一貫性も高まることを意味する。
【0099】
マッピングエンジン510の出力は、観測された3次元空間の3次元モデル530を含むと見なし得る。このモデル530は、3次元に関して定義された少なくとも位置要素を含み得る。各位置要素は、3次元空間内の固体表面の存在を示すデータとさらに関連付けられ得る。例えば、ボクセルベースモデルでは、表面は、自由空間を表す変数のゼロ値または交差点として表し得る。面素モデルでは、位置要素は、3次元空間内の表面に定義され得、したがって各位置要素はモデル内の特定の面を示し得る。
【0100】
図6Aは、例えば本明細書に説明する例で更新される環境のモデルの位置要素を格納するために使用し得るデータ構造610の概略表現を示す。データ構造610は、例のためだけに示され、限定的と見なされるべきではない。データを格納するための他の手法及びデータは、実施態様に応じて使用され得る。本例では、モデルは、3次元面素モデルを含む。面素モデルは、複数の面素つまり「サーフェル」のデータ定義を含み、各面素は、3次元空間内の2次元領域(つまり、表面)を表す。これは、例えば「{surfels:...}など、面素のリストの定義とともに開くとき
図6Aに示される。このリストは、順序なしリストであってよい。この場合、面素モデルの各面素は、少なくとも3次元の面素(つまり、位置要素またはコンポーネント)の位置を定義するデータ、及び3次元の面素(つまり、要素と関連する表面の「面」方位)の法線ベクトルを定義するデータを含む。これは、
図6Bに概略で示されている。「サーフェル」の1つの説明は、コンピュータグラフィックス及びインタラクティブ技術に関する第27回年次会議の会議記録、ACM Press/Addison-Wesley Publishing Co.、2000年7月に発表されたPfister,Hanspeter,et al.による論文「Surfels:Surface elements as rendering primitives」に見られる。
【0101】
図6Bは、面素つまり「サーフェル」620の概略の表現を示す。サーフェル620は、3次元に表面sを含む。サーフェルは、3次元に位置pを有する。
図6Aで、この位置は、3次元座標、例えばx座標、y座標、及びz座標を定義するデータ「位置:p
x、p
y、p
z;」など3次元座標を使用し、定義される。他の例では、他の座標系を使用し得る。
図6Bで、サーフェルは、3次元内で定義される法線ベクトルnも有する。
図6Aで、この位置は、例えばデータ「法線:n
x、n
y、n
z;」など3次元ベクトルを使用し、定義される。方向は、ベクトル定義内の符号付きの値を使用し、示し得る。また、
図6Aの例610は、特定の例では、面素を記述するために使用され得るさらなるデータも有する。この場合、サーフェルの表面は3次元空間の円または円盤である。したがって、
図6A及び
図6Bの表面は、データ「半径:r;」として提示されるように半径rによって定義される。各サーフェルの半径は、眼に見える穴を最小限に抑えつつ、所与の点の周りの局所的な表面積を表すことを目的とする。他の例では、異なるデータは、例えば、3次元内の表面の範囲を示す異なる形状定義及び/または変数を使用し、表面を定義するために使用され得る。
図6Aは、本例では、サーフェル定義が、表面の色(「色:R、G、B;」-この場合、RGB色空間が使用されるが、任意の既知の色空間も可能である)、サーフェルの重み(「重み:w;」-これは、新しい測定値をサーフェルと融合するときに使用される実数であってよい)、サーフェルが最初に生成されたときを示す初期化時間(「Init_Time:t0;」)、及びサーフェルが前回更新または修正された時間を示す前回修正時間(「Last_Modified:t;」)を定義するデータも含むことを示している。このモデル表現内のサーフェルは、そのサーフェルが前回更新または修正されて(例えば、データ融合のためにそれと関連する未処理画像データ値を有していた)からの時間がδ
tよりも大きいときに非アクティブとして宣言され得る。実施態様に応じて、サーフェルの属性を定義するデータを追加、修正、または省略し得ることを理解されたい。
図6Aに示すように、複数のサーフェルは、リスト内(例えば、例の「{...}」の間)で定義され得る。
【0102】
図7は、一例に係るマッピングシステム700を示す。マッピングシステムは、
図4Aのマッピングシステム400の実施態様を含み得る。
図7のマッピングシステム700は、状態エンジン705及びマッピングエンジン710を含む。状態エンジン705は、
図3A及び
図3Bの状態エンジン340、及び/または
図4Aの状態エンジン440を含み得る。マッピングエンジン710は、
図3A及び
図3Bのマッピングエンジン350及び/または
図5のマッピングエンジン510を含み得る。
図7の例700は、マッピングエンジン710の特定のコンポーネントが、画像データのフレームの受け取りに続いて3次元モデルを更新するために、どのように状態エンジン705とインタラクションするのかを概略で示す。
【0103】
図7の状態エンジン705及びマッピングエンジン710は、画像データ715にアクセスする。画像データ715は、
図1A~
図1Hの画像キャプチャデバイス120、または
図3A及び
図3Bの画像キャプチャデバイス320などの画像キャプチャデバイスによって提供される。画像データ715は、
図2A~
図2Cに示す画像データ220を含み得る。画像データ715は、状態エンジン705及びマッピングエンジン710のモデル融合コンポーネント725によってアクセスされる。画像データ715は、画像データのフレームを含み得る。1つの場合では、状態エンジン705は、
図4Aに関して説明するように、幾何学的誤差を計算するために時間tで画像データから深度データを受け取り得る。モデル融合コンポーネントは、時間tで、深度データ
【数22】
及び測光データ
【数23】
を受け取り得る。簡易な場合、これらは、例えば、640x480x1深度値及び640x480x3色値など、時間tでメモリ内の2次元配列に格納されたデータを含み得る。このデータは、キャプチャまたは以前に記録された画像データを表す時間インデックス付きデータ構造から取り出され得る、及び/またはライブビデオフィードの一部として提供され得、各々の場合、データは少なくとも1つのキャプチャデバイスによって現在提供されるライブフレームに関する。モデル融合コンポーネント725は、画像データ715からのフレームに基づいて3次元モデル730を更新するように構成される。
【0104】
図7の例では、状態エンジン705は、時間tで画像データ715を提供する少なくとも1つの画像キャプチャデバイスのポーズP
tを決定するように構成される。このポーズは、画像キャプチャデバイスを含むロボットデバイスの現在の状態を使用し、決定される。ポーズは、例えば、
図4A及び
図4Bに関して説明する状態最適化手順に従って変換T
WCの値を含み得る。状態エンジン705は、マッピングエンジン710のアクティブモデルフレームジェネレータ720に通信可能に結合される。アクティブモデルフレームジェネレータ720は、アクティブモデルフレーム-AMF
tを計算するように構成される。
【0105】
また、
図7は、モデル区分器735も示す。これは、
図5に関して説明するように、モデル区分器540の実施態様を含み得る。モデル区分器735は、3次元モデル730を2つの部分またはセットに分割するように配置される。第1の部分またはセットは、本明細書では「アクティブ」部分740と呼ばれ、第2の部分またはセットは、本明細書では「非アクティブ」部分745と呼ばれる。これは、時間ウィンドウを3次元モデル730に適用することを含み得る。
図7に見られるように、アクティブ部分740は、アクティブモデルフレームジェネレータ720及びモデル融合コンポーネント725によって使用される。非アクティブ部分745は、アクティブモデルフレームジェネレータ720及びモデル融合コンポーネント725によって使用されない。
【0106】
特に、アクティブモデルジェネレータ720は、アクティブモデルフレームを生成するためにアクティブ部分740にアクセスするように配置される。これは、3次元モデルのアクティブ部分740からの投影に基づいて実行され得る。アクティブモデルフレームジェネレータ720は、時間tのアクティブモデルフレームAMFtを決定するために、時間tのポーズ推定値Ptを使用するように構成される。これは、3次元モデルのアクティブ部分740を含む位置要素を使用して投影形状を決定するためにポーズ推定値の可変値を使用することを含み得る。
【0107】
アクティブモデルフレームジェネレータ720だけではなく、
図7のマッピングエンジン710は、非アクティブモデルフレームジェネレータ750をさらに含む。非アクティブモデルフレームジェネレータ750は、アクティブモデルフレームジェネレータ720に類似しているが、3次元モデルの非アクティブ部分745から非アクティブモデルフレームIMF
tを生成するように構成される。例えば、非アクティブモデルフレームは、非アクティブ部分745からの幾何学的投影に基づいて、非アクティブモデルフレームジェネレータ750によって計算され得る。1つの場合では、アクティブモデルフレームジェネレータ720及び非アクティブモデルフレームジェネレータ750は、アクティブモデルフレームと非アクティブモデルフレームをそれぞれ生成するために、差別化された入力としてモデルのアクティブ部分と非アクティブ部分を受け取るように構成された共通フレームジェネレータによって実装され得る。アクティブモデルフレームに関して説明されたように、各非アクティブフレームは、深度データの予測フレーム
【数24】
及び測光データの予測フレーム
【数25】
を含み得る。
【0108】
図7で、位置合わせエンジン760は、アクティブモデルフレームジェネレータ720からアクティブモデルフレームAMF
t、及び非アクティブモデルフレームジェネレータ750から非アクティブモデルフレームIMF
tを受け取るように配置される。本例では、位置合わせエンジン760は、アクティブモデルフレームを非アクティブモデルフレームにアラインさせる変換を決定するためにこれら2つのフレームを比較するように構成される。
図7の矢印で示すように、この変換は、次に、3次元モデル730を更新して、モデルのアクティブ部分と非アクティブ部分をアラインさせるために使用され得る。この変換は、アクティブ部分と非アクティブ部分の両方に位置要素の非剛体スペースデフォメーションを適用するために使用され得る。1つの場合では、変形は、変形グラフを使用し、適用し得る。これは、
図8に関してより詳細に説明される。変形またはアライメントは、現在のポーズ推定値P
tを利用し得る。特定の場合、アクティブモデルフレームと非アクティブモデルフレームの位置合わせは、状態エンジン705によって決定されるように、ロボットデバイスの現在の状態を使用し得る。1つの場合では、位置合わせエンジン760は、以前に予測されたフレームを新規に受け取った画像データのフレームにアラインさせようと試みるよりむしろ、アクティブフレームと非アクティブフレームをアラインさせる変換、H
t、を決定するように構成される。アライメントが実行される場合、位置合わせエンジン760は、例えば、非アクティブモデルフレーム内で見える位置要素など、すべての目に見える非アクティブ位置要素を、アクティブとなるように設定し得る。
【0109】
位置合わせエンジン760によって実行されるアライメントまたは変形は、「ループ」クロージャを成立させ得る、つまり新規に受け取った画像データから生成されたモデルの位置要素を、以前に受け取った画像データに基づいて以前に生成及び/または修正された3次元空間の同じリージョンに対応する位置要素とアラインさせ得る。例えば、位置合わせエンジン760なしで、キャプチャデバイスが、例えば以前に観測された空間のリージョンを見るために戻るなど、モーションループを完了すると、モデルの以前の部分はモデルのより新しい部分とのアライメントから外れる場合がある。モデルでのこのずれ、つまり「ドリフト」は、例えばモデルの生成が非確定的に動作するなど、推定値を使用し、誤差関数を最小限に抑えようとすると、発生し、その結果、モデルが生成されるにつれ、ポーズ推定値及びモデルの小さな誤差が生じ得る。
図7の位置合わせエンジン760は、例えばフレームごとに、連続的に、現在の推定されたキャプチャデバイス内のモデル(つまり、アクティブモデル)フレームのアクティブ部分を、同じフレーム内のモデルの非アクティブ部分と位置合わせしようと試みる。例えば、アライメントメトリックまたは必要とされる変形のレベルに基づいて位置合わせが成功した場合、キャプチャデバイスのモーションループは閉じられ、より新しいアクティブ部分はより古い非アクティブ部分にアラインされ、3次元モデル730全体は、この位置合わせを反映するための場所に非剛体で変形され得る。特定の場合、位置合わせエンジン760は、例えば、非アクティブモデルフレームの生成で使用されたものなど、位置合わせを実行するために使用されたモデルの非アクティブ部分を再活性化するように構成される。これによって、モデル融合コンポーネント725によるモデル融合を、モデルの位置合わせされた領域間で行うことができる。上述のように、データを融合することは、直近で観測された(つまり、モデルのアクティブ部分740または領域)3次元モデル730の領域で実行され、一方、ある期間観測されなかったモデルのより古い部分は、モデル区分器735によって、追跡またはデータ融合に使用されていないモデルの非アクティブ部分745または領域にセグメント化され得る。
【0110】
図8は、特定の実施態様で使用し得る位置合わせエンジン810の追加の特徴の例800を示す。
図8で、以前に説明した位置合わせエンジン550または760のいずれかと同じ機能を有し得る位置合わせエンジン810は、データストレージデバイス820に通信可能に結合される。データストレージデバイス820は、経時的に3次元モデルの表現830(「ε」)を格納する。これらの表現830は、それらがモデルエンジンによって生成されると、アクティブモデルフレームAMF
tの表現を含み得、例えば深度データの表現
【数26】
及び測光データの表現
【数27】
を含み得る。1つの場合では、表現は、アクティブモデルフレームの圧縮及び/またはダウンサンプリングされた表現であってよい。任意のマッピングされた表面を欠いているアクティブモデルフレームの予測されたビューの部分は、特定の場合、画像データから現在のフレームを使用し、充填され得る。特定の場合、表現は、アクティブモデルフレームのファーン符号化(fern-encoding)を含み得る。各表現は、ファーン符号化文字列、深度データのダウンサンプリングされた予測フレーム、測光データのダウンサンプリングされた予測フレーム、現在のポーズ推定値、及び表現の初期化時間の1つ以上と関連するデータを含み得る。例えば、80x60などのダウンサンプリングされたフレームサイズを使用し得る。
【0111】
図8の例で、アクティブモデルフレームAMF
tは、位置合わせエンジン810によって受け取られる。次にアクティブモデルフレームAMF
tを、データストレージデバイス820の表現830の1つと一致させるようとする試みが行われる。例えば、新しい表現は、受け取ったアクティブモデルフレームAMF
tから生成され、データストレージデバイス820に格納された表現830と比較され得、例えば、一致は、ファーン符号化された表現を使用し実行され得る。一致は、比較関数の出力によって示され得、例えば、誤差または一致撮像メトリックは、比較されたフレームまたは表現の間の類似度を示し得る。例えば、比較はファーン符号化間で行い得る。この場合、ファーン符号化はバイナリコードを含み得、2つの画像は、2つのバイナリコード間の「距離」を合計することによって比較され得る。最小の距離は「最善の」一致であると見なされ、距離は、一致が「有効」であるかどうかを判断するために閾値に比較され得る。アクティブモデルフレーム、AMF
tは、マッチングを実行するためにダウンサンプリングされ得、例えば、ファーン符号化はダウンサンプリングされたフレームに対して行い得る。この場合、最善の一致を示すメトリック値(例えば、差異または誤差を示す撮像メトリックの最低の値)は、マッチング格納表現ε
jを示すために使用され得る。マッチング(例えば、ファーン符号化)に使用されるデータを有するだけではなく、格納された表現は、例えば、
【数28】
など、モデルフレームの表現を含んでもよい。1つの場合では、最善の一致の撮像メトリック値は、一致が有効であるかどうかを判断するために所定の閾値とさらに比較され得る。例えば、「最善の」一致でも不十分な実際の一致である場合があり、例えば高い一致誤差を有する。したがって、閾値比較は、これらの不十分な一致の使用を回避する。ダウンサンプリングは、比較的に「粗い」一致が検出され、正しいかのように、位置合わせエンジン810によって使用され得、次に、後続のアクティブモデルフレームと非アクティブモデルフレームは、
図8で実行するアライメントを可能にするほど十分に近く、例えば、それらが、より正確な「ローカル」ループクロージャが可能となるように、「グローバル」ループクロージャに続いて十分にアラインする。
【0112】
1つの場合では、例えばマッチング撮像メトリックが所与の誤差閾値を超えているなど、一致が検出されない場合、次にアクティブモデルフレームAMF
tと非アクティブモデルフレームの位置合わせが、例えば
図7に示すように実行される。他方、例えばマッチング撮像メトリックも所与の誤差閾値以下であるなど、「最善の」一致が検出される場合、次にマッチング表現ε
jがデータストレージデバイス820から取り出され、位置合わせエンジン810によってアクセスされる。位置合わせエンジン810は、次に、
図7に関して説明する操作に類似するアライメント操作を命令するように構成される。しかしながら、本例では、アライメントは、アクティブモデルフレームAMF
tとマッチング表現ε
iとの間で実行される。例えば、アクティブモデルフレームのコンポーネント、例えば
【数29】
は、例えば
【数30】
など、マッチング表現ε
jのコンポーネントとアラインされ得る。1つの場合では、アライメントメトリックは評価され、アライメントを実行すべきかどうかを判断するために閾値と比較され得、例えば、アライメントを続行するために、所定の閾値に比較して低レベルのずれが必要とされる。アライメントが実行されるべきではない場合、位置合わせエンジン810は、
図7に関して説明したように、アクティブモデルフレームと非アクティブモデルフレームのアライメントを実行しようと試み得る。アライメントが実行されるべきである場合、位置合わせエンジン810は、モデルデフォーマ840に、例えばアクティブモデルフレームのコンポーネントをマッチング表現のコンポーネントとアラインさせるために機能する3次元での変形を決定するなど、既存の3次元モデル850を変形するように命令するように配置されてよい。特定の場合、「グローバルループクロージャ」と見なし得るこのアライメントに続いて、3次元モデルのアクティブ部分と非アクティブ部分は更新されない。これは、アライメントによってアクティブ部分と非アクティブ部分がより大きいアライメントになり、したがって
図7に示す位置合わせが実行され得る(例えば、したがって「ローカルループクロージャ」が次のフレームで無事に実行され得る)ためである場合がある。また、部分を更新しないことによって、潜在的に不正確なアライメントを補正する、または後続の位置合わせ操作の中から回復することも可能になる。
【0113】
本例では、モデルデフォーマ840は、既存の3次元モデル850にアクセスし、アラインされた3次元モデル870を生成するために、変形グラフ860を使用し、このモデルを変形するように配置される。変形グラフ860は、既存の3次元モデル850の分散した位置要素と関連付けられたノード及び端縁のセットを含む。1つの場合では、各ノードは、タイムスタンプ、3次元の位置、変換の定義、及び近接点のセットを含み得る。各ノードの近接点は、有向であってよいグラフの端縁を作り上げる。このようにして、変形グラフは、モデルの変形が実行されるときに互いに影響を与える3次元モデルの部分を接続する。近接点の数は、例えば一実施態様では4つの近接点に制限される場合がある。変換の定義は、(単位行列に初期化された)3x3行列及び(ゼロに初期化された)3x1ベクトルによる、またはデュアルクオータニオンによって表すようなアフィン変換の定義を含み得る。変形を実行するとき、各ノードの変換の定義は、一連の表面制約に従って最適化され得る。変形が適用されると、3次元モデルの特定の位置要素のグラフ内の影響を与えるノードのセットが識別される。これに基づいて、3次元モデルの位置要素の位置は、例えば、現在の位置要素からそれらのノードの位置の距離に従って影響を与えるノードの各々に適用される変換の定義の加重和など、変換された影響を与えるノードの加重和に基づいて変形され得る。例えば、
図6A及び
図6Bに関して説明されたように面素モデルを使用すると、面素の位置と法線の両方ともこのように変形され得る。例えば、変形グラフのノードはその初期化時間に基づいて面素と関連付けられ得る。これらのノードのリストは、次にこのタイムスタンプによってソートされ得る。変形が面素のために命令されると、時間的に近傍のノードのセットにデータを追加するために、二分探索がこのノードのリストを通して実行され得る。このセットから、k個の最寄りのノードのセットが、距離メトリックに基づいて面素のために決定される。これらのノードは、次に要素を変形するために使用される。このプロセスは迅速であり、リアルタイムまたはほぼリアルタイムの実行を可能にするために役立つ。
【0114】
一例では、変形グラフは、フレーム単位で構築され得る。1つの特定の場合、3次元モデルの新しい変形グラフは、画像データの各フレームに構築され得る。これは、例えば各グラフノードの近接点のセットなど、変形グラフの接続性を決定することを含み得る。1つの場合では、変形グラフは、3次元モデルを使用し、初期化される。例えば、フレームのノード位置は、3次元モデル内の位置要素の位置(例えば、サーフェルモデル内のp)から決定され得、ノードタイムスタンプは、位置要素タイムスタンプ(例えば、
図6Aの「Init_Time」)に設定され得る。1つの場合では、変形グラフのノードは、3次元モデルの位置要素の、体系的なサンプリングなどサンプリングに基づいて生成され得る。このサンプリングは、総数(population)に対して均一に分布し得、変形グラフの空間密度を3次元モデルの空間密度に酷似させる。サンプリングされたノードのセットは、ノードのタイムスタンプに基づいて順序付け得る。これに続いて、時間情報を使用し、変形グラフの接続性を決定し得る。1つの場合では、例えばノードのタイムスタンプに基づいて時間で近接点であるノードのセットを選択し得る。例えば、4つの近接点があり、所与のノードが検討されている場合、(時間順序を付けたリストの)以前の2つのタイムスタンプを有するノード、及び(リスト中の)後続の2つのタイムスタンプを有するノードは、所与のノードの近接点として選択され得る。これは、計算上効率的であるという優位点、及び3次元モデルの時間的に相互に関連付けられていない領域が互いに影響を与えることを防ぐ(例えば、アクティブ領域が非アクティブ領域に影響を与えるのを防ぐ)という優位点を有する。例えば、共通の3次元空間の複数のパスと関連する変形グラフは、空間的に考慮されるとき、複雑であり、それ自体の中で絡み合っている場合がある。しかしながら、グラフを時間的に順序付け、考慮することによって、複数のパスをばらばらにし、自由にアラインすることが可能になる。これは、例えば、ポーズグラフを使用する場合に、ポーズ時間に基づいてグラフ接続性を決定する比較方法と対比し得る。
【0115】
既存の3次元モデル850を変形して、変形したモデル870を生成するために変形グラフ860を使用するためにモデルデフォーマ840によって適用され得る例のプロセスをここでより詳細に説明する。モデルデフォーマ840は、既存の3次元モデル850の所与の位置要素(例えば、
図6Aに関して説明されたサーフェル定義または別のボクセルベースの定義)にアクセスすることによって開始する。第1の操作として、モデルデフォーマ840は、所与の位置要素に時間で最も近い変形グラフ860のノードの位置を突き止める。時間分離は変数として格納される。次に、モデルデフォーマ840は、時間的に近傍のノードの位置を突き止め、例えば、定義された数のノードが探索するために時間分離から離れる。これらの近傍のノードは、次に所与の位置要素の位置に対するユークリッド距離など、距離メトリックによってソートされてもよい。例えば、上述の近接点制限を使用する所与の数の「近接点」ノードは、次に最も近いk個のノードとして選択され得る。これらの近接点の各々の重みのセットは、次に、ノードと所与の位置要素との間の正規化距離に基づいて生成され得る。また、重みの合計も決定し得る。次に、最後の操作として、各近接点の個々の計算された重みを介して重み付けされ、重みの合計によって正規化されるとして、近接点の変換の定義を適用し得る。これは、所与の位置要素の位置及び法線ベクトルを変形するために、所与の位置要素に関して上述したアフィン変換に変数を適用することを含み得る。
図6Aの面素の場合、所与の位置要素の他の態様は同じままである(例えば、変形したモデル870にコピーし得る)。
【0116】
一例では、位置合わせエンジン550、760、または810によって実行されるアライメントは、モデルデフォーマ840を使用して実行される。本例では、これは、変形グラフ860のパラメータを最適化することによって達成される。最適化は、位置合わせエンジン550、760、または810の出力に基づいて設定された表面相応関係のセットを所与として、3次元モデルの面位置合わせを反映し得る。これらの表面相応関係は、第1の時間の特定のソース位置が、第2の時間の特定の目的位置に達するまたは一致することを示し得る。各個別表面相応関係は、絶対的(変形した位置を3次元空間の絶対位置に関連付ける)または相対的(変形された位置を異なる変形された位置に関連付ける)のどちらかであってよい。(例えば、
図7に関して説明するように)アクティブフレームと非アクティブフレームをアラインさせると、ソース点は、アクティブモデルフレームの点を表す場合があり、目的点は、モデルのアクティブ部分及び非アクティブ部分をアラインさせるために機能する、非アクティブモデルフレームの点を表す場合がある。例えば、第1の時間は、所与の非アクティブモデルフレームを生成するために使用された非アクティブモデル位置要素の初期化の時間を含み得、第2の時間は、現在のフレーム時間であってよい。ソース点は、現在のポーズ推定値P
tに基づいて見られる、(例えば、
【数31】
を計算するために使用される)アクティブモデルフレームを生成するために使用されるサンプリングされた位置要素であってよく、目的点は、3次元において、定義された変換Hを加えた現在のポーズ推定値P
tに基づいて見られる、(例えば、
【数32】
を計算するために使用される)アクティブモデルフレームを生成するために使用されるサンプリングされた位置要素であってよい。この場合、モデルのアクティブ部分を非アクティブ部分にマッピングするために計算された定義された変換(H)を適用しているので、目的点は、非アクティブモデルフレームの点と同等であり、例えば、変換は
図7の位置合わせエンジン760によって実行されるアライメントの少なくとも一部である。これらの表面相応関係は、「ローカルループクロージャ」を適用するために使用され得る。同様に、(例えば、
図8に関して説明されるように)アクティブフレームを格納された表現とアラインさせるとき、第1の時間は、格納された表現の初期化の時間を含み得、第2の時間は、現在のフレーム時間であってよい。ソース点は、現在のポーズ推定値P
tに基づいて見られる、(例えば、
【数33】
を計算するために使用される)アクティブモデルフレームを生成するために使用されたサンプリングされた位置要素であってよく、目的点は、3次元において、定義された変換Hを加えた表現のポーズ推定値に基づいて見られるように、(例えば、
【数34】
を計算するために使用される)アクティブモデルフレームを生成するために使用されたサンプリングされた位置要素であってよい。再び、定義された変換がアクティブモデル部分に適用されると、目的点は、アクティブモデルと非アクティブモデルのアライメントを表す。これらの表面相応関係は、「グローバルループクロージャ」を適用するために使用され得る。表面相応関係は、例えば使用されるフレームについてなど、ピクセルのサンプリングされたセットについて計算されてよい。これらの場合、アライメントまたは位置合わせは、表面相応関係のセットに対して3次元の定義された変換を解決することを含み得る。
【0117】
上記例では、表面相応関係は、変形グラフのパラメータの最適化のために1つ以上のコスト関数で使用され得る。例えば、1つのコスト関数は、変形したソース点(例えば、変形グラフを適用するとき)と、目的点との間の距離誤差の合計に等しい誤差関数を含み得、ソース点と目的点は、表面相応関係で使用される点である。本明細書に説明する3次元モデルの時間的なパラメータ化によって、3次元空間の同じ部分の複数のパスをアライメントに非剛体で変形することが可能になり、モデリングの続行、及び3次元モデルの再訪された領域への新しいデータ融合が可能となる。また、3次元モデルの非アクティブ部分を適所に「ピンで固定する」、つまりモデルのアクティブ部分を非アクティブ部分に変形させるために別のコスト関数も使用し得る。このコスト関数は、変形したソース点(例えば、変形グラフを適用するとき)と変形していない目的点との間の距離誤差の合計に等しい誤差関数を含み得、目的点は、表面相応関係で使用される点である。3次元モデルの以前に位置合わせした領域を適所に保つために、つまりマップの別の領域を変形するとき、別のコスト関数も使用し得、以前に位置合わせした領域の相対的な位置を、同じままとなるように制約する必要がある場合がある。このコスト関数は、変形したソース点(例えば、変形グラフを適用するとき)と、変形した目的点との間の距離誤差の合計に等しい誤差関数を含み得る。このコスト関数は、ループクロージャ及びそれらの関連する変形が3次元モデルの以前に位置合わせされた領域を引き離すのを防ぐ。また、誤差関数は、(例えば、その転置行列で乗算された変換と単位行列との間の距離メトリックを最小限に抑えることによって)変形グラフの定義された変換の剛性を最大限にするために、及び(例えば、近接点変換を組み込んだ距離メトリックに基づいて)円滑な変形を確実にするために定義されてもよい。これらの説明した誤差関数の1つ以上は、変形グラフの変換定義を決定するために(例えば、加重和内で)最小限に抑え得る。コスト関数の1つ以上が、所定の閾値(例えば、変形したソース点と目的点を比較するコスト関数など)以下である誤差値を出力する場合、次にアライメントが受け入れられる。誤差値が所定の閾値を超える場合、次にアライメントは(等式事例が適切に割り当てられて)拒絶される。
【0118】
図9は、ロボットデバイスを使用し、環境の3次元モデルを更新する方法900を示す。ロボットデバイスは、
図1A~
図1Hに示すロボットデバイス130、160、180、190、または
図3A及び
図3Bに示すロボットデバイス310、380であってよい。本例では、ロボットデバイスは、移動できるように結合された画像キャプチャデバイスを有する。つまり、画像キャプチャデバイスは、ロボットデバイスに対する画像キャプチャデバイスの移動を可能にするようにロボットデバイスに結合されている。例えば、画像キャプチャデバイスは、
図1C、
図1E、及び
図1Gに関して図示し、説明するように取り付け得る。代替として、方法900は、別の例示的なロボットデバイスを用いて実行し得る。
【0119】
ブロック910で、画像キャプチャデバイス及びロボットデバイスの少なくとも1つの環境内での移動が命令される。例えば、これは、
図3Bの移動コントローラ390などの移動コントローラを介する場合がある。移動は、例えばリモコン装置を使用して手作業で命令し得る、及び/または例えばロボットデバイスのナビゲーションシステムによって命令されるなど、自律移動の一部である場合がある。移動は、単にロボットデバイスを移動させること、(例えば、可動マウントを使用し)単に画像キャプチャデバイスを移動させること、またはロボットデバイスと画像キャプチャデバイスの両方を移動させることを含み得る。移動が反復して実行される場合、ロボットデバイスの異なる部分は各反復で移動され得、例えば、ロボットデバイスが環境内で移動する探索段階、及び画像キャプチャデバイスを移動させるために可動マウントが移動される走査段階があり得る。これらの段階は、周期的に繰り返し得る。
【0120】
ブロック920で、画像キャプチャデバイスを用いた環境の観測を表す画像データが取得される。例えば、これは、
図2A~
図2Cに示すように画像データ220を取得することを含み得る。画像データは、深度データ及び/または測光データのフレームを含み得る。
【0121】
ブロック930で、移動の測定値が取得される。これは、ロボットデバイス及び画像キャプチャデバイスの1つ以上の測定値を含み得る。測定値は、
図3Bに示すように、ロボットアクチュエータ332及び/またはキャプチャデバイスアクチュエータ334などのアクチュエータのセットから取得され得る。他の場合、測定値は、ロボットデバイス及び画像キャプチャデバイスの1つ以上の観測から取得され得る。測定値は、運動コンポーネント用の駆動モータ及び/または関節キャプチャデバイスマウント用の関節モータなど、1つ以上のモータから取得し得る。
【0122】
ブロック940で、ロボットデバイスのモデル状態が更新される。モデル状態は、例えば
図3A及び
図3Bの状態360に関して説明するようなロボットデバイスの状態を含み得る。モデル状態は、ロボットデバイス及び画像キャプチャデバイスの1つ以上のポーズを定義するポーズデータを使用して表し得る。例えば、モデル状態は、上述の変換T
WCとT
WBを定義するデータを含み得る。1つの場合では、ブロック920は、ビデオデータのフレームを取得することを含み、モデル状態は、ビデオデータの現在のフレームとビデオデータの以前のフレームの両方について決定される。この場合、ブロック940は、例えば、
図4Aの現在の状態と以前の状態450、460など、以前のモデル状態と現在のモデル状態を決定することを含み得る。ブロック940は、ロボットデバイスの追跡操作として見なし得る。この場合、追跡操作は、モデル状態を精緻化するために移動の測定値を使用する。ブロック940で更新することは、モデル状態及び移動の測定値の関数を最適化することを含む。例えば、これは、移動の測定値に基づいて、モデル状態の更新を制約することを含み得る。ブロック940は、
図4Aの状態エンジン440に関して説明する操作に類似した操作を含み得る。
【0123】
ブロック950で、環境の3次元モデルは、画像データと3次元モデルの比較に基づいて更新される。この比較は、ブロック940から更新されたモデル状態を使用する。比較は、例えば、ブロック920の画像データの3次元モデルへの逆投影または画像キャプチャデバイスの現在のポーズと関連する平面への3次元モデルの投影のどちらかなど、更新したモデル状態を使用する投影を含む。比較は、このようにして2次元空間でまたは3次元モデル空間で行い得る。3次元モデルの更新は、
図5、
図7、及び
図8に関して説明する操作に類似した操作も含み得る。
【0124】
特定の場合、ブロック910は、アクチュエータの第1のセットに、環境内でロボットデバイスを移動させるように命令すること、及びアクチュエータの第2のセットに、ロボットデバイスに対して画像キャプチャデバイスを移動させるように命令することの1つ以上を含む。この場合、ブロック930は、アクチュエータの第1のセットから走行距離計測法データを取得すること、及びアクチュエータの第2のセットから運動データを取得することを含む。
【0125】
図4Aの状態エンジン440に関して説明するように、ロボットデバイスのモデル状態を更新することは、コスト関数を最適化することを含み得る。コスト関数は、選択可能な誤差項のセットを含み得る。1つの場合では、コスト関数は、運動誤差と関連する誤差項、及び走行距離計誤差と関連する誤差項を含む。この場合、運動誤差は、画像キャプチャデバイスとロボットデバイスの空間関係と、ロボットデバイスからの運動測定値との比較を含む。例えば、空間関係は、画像キャプチャデバイス用の可動マウントに適用される順運動学を使用してモデル化され得る。走行距離計誤差は、ロボットデバイスと環境の3次元モデルの空間関係の変化と、ロボットデバイスからの走行距離計測法データとの比較を含み得る。走行距離計測法データは、ロボットデバイス用の駆動システムによって提供され得る。
【0126】
特定の場合、コスト関数は、一次事前確率と関連する誤差項を含む。一次事前確率は、誤差値及び以前の更新動作からのロボットデバイスのモデル状態を使用して構築し得る。特定の場合、ブロック940は、ロボットデバイスの以前の状態とロボットデバイスの現在の状態を最適化することを含む。特定の例で、コスト関数は、幾何学的アライメント誤差と関連する誤差項を含む。この場合、幾何学的アライメント誤差は、取得した画像データから導出したデータと、ブロック940の前のロボットデバイスのモデル状態を使用する3次元モデルとの比較を含み得る。例示的な誤差項は、
図4Aに関して説明する誤差項を含み得る。
【0127】
図10及び
図11は、例えば、
図3A及び
図3Bのロボットデバイス310、380、
図4Aの状態エンジン440を使用し、及び/または
図9の方法900を使用し、実行されるなど、状態更新の例を提供する。
図10は、現実世界での移動及びロボットデバイスの状態の対応する変化の例1000を示す。
図11は、状態をどのようにモデル化し得るのかの例を示す。
【0128】
図10では、左部分1010は、環境の第1の位置1015から環境の第2の位置1020に移動するロボットデバイスを示す。本例のロボットデバイスは、
図1C及び
図1Dのロボットデバイスである。移動は、ロボットデバイスのシャシの移動、及び例えば画像キャプチャデバイスをシャシに結合するアームの移動を介した画像キャプチャデバイスの移動の1つ以上を含み得る。
【0129】
図10の右部分1030は、例えば
図1Dに関して提示された慣例を使用してなど、モデル空間内のロボットデバイスの状態を示す。第1の位置1015で、ロボットデバイスは、シャシ1032のポーズを定義するデータ、及び画像キャプチャデバイス1034のポーズを定義するデータによって表される状態を有し、両方のポーズはモデル空間に関して定義されている。
【0130】
図10は、比較方法を使用するときに、モデル空間のロボットデバイスの状態がどのようにドリフトする場合があるのかを示す。例えば、モデルドリフトは、シャシ1042のポーズを定義するデータ、及び
図10の画像キャプチャデバイス1044のポーズを定義するデータによって示されるように、発生する場合がある。モデルドリフトは、運動測定値及び走行距離計測定値が、例えば追加の幾何学的誤差項なしになど、状態最適化なしに使用される場合に発生する場合がある。同様に、モデルドリフトは、例えば画像キャプチャデバイスからのビデオデータのフレームを環境のモデルと一致させることによって、運動測定値及び走行距離計測定値を利用することなく、結合された測光誤差及び幾何学的誤差を使用し、発生する場合がある。本例では、状態最適化手順の中で移動測定値を使用すると、モデル空間内の状態がロボットデバイスの現実世界の構成をより正確に反映するのに役立つ。したがって、
図10で、状態最適化に続いてシャシ1052のポーズを定義するデータ、及び状態最適化に続いて画像キャプチャデバイス1054のポーズを定義するデータが、例えば
図4Aの状態エンジン440によって実行される操作に続いて示される。このデータ1052、1054は、ロボットデバイスの第2の位置1020をより正確に反映する。この向上した精度は、特に画像キャプチャデバイス及びロボットデバイスの移動の複雑な組合せに有用であり、比較手法は、容易にドリフトし、ロボットデバイス及び結合された画像キャプチャデバイスの現在の位置及び向きを「失う」場合がある。
【0131】
図11は、ロボットデバイスの2つの状態の例の状態グラフ1100を示す。状態グラフ1100は、4つの部分1102~1108に分割される。第1の部分1102は以前の構成要素を表し、第2の部分1104は以前の状態の構成要素を表し、第3の部分1106は、誤差成分を表し、第4の部分1108は現在の状態の構成要素を表す。第1の部分1102は、一次事前確率1110を示す。一次事前確率1110は、特に画像キャプチャデバイス1120のポーズ及びロボットデバイス1130のポーズにおいて、以前の状態を制約するために使用される。各ポーズは、
図4Bに関して説明した変換を使用し、表される(例えば、T
WBとT
WC)。第3の部分1106の誤差成分は、幾何学的誤差項1140、運動誤差項1150、及び走行距離計誤差項1160を含む。例えば、これらの誤差項は、
図4Aの誤差項410~430に相当し得る。走行距離計誤差項1160は、以前の状態でのロボットデバイス1130のポーズ、及び(第4の部分1108に示す)現在の状態でのロボットデバイス1180のポーズを制約するために使用される。運動誤差項1150は、現在の状態でのロボットデバイス1180のポーズ、及び現在の状態の画像キャプチャデバイス1170のポーズを制約するために使用される。最後に、幾何学的誤差項1140も、現在の状態での画像キャプチャデバイス1170のポーズを制約するために使用される。
【0132】
図11の例では、以前の状態と現在の状態は、画像キャプチャデバイスから取得したビデオデータの以前のフレームと現在のフレームに関する場合がある。ビデオの新しい「現在の」フレームが受け取られた後、状態最適化操作を介して以前のフレーム及び現在のフレームのポーズの値を決定し得る。第3の部分1106の誤差成分は、例えば電気機械制御システムなど、ロボットデバイスのサブシステムから行われる測定値に基づく場合がある。一次事前確率1110は、以前の時間反復からの状態及び誤差の周辺化から取得し得る。状態グラフは、このようにして以前の状態と現在の状態の値を決定するために反復して解決し得るスライドウィンドウ最適化問題を構築するために使用し得る。
【0133】
本明細書に説明する特定の例は、高密度SLAMシステムなど、マッピングシステム内の可動ロボットデバイスからの運動データ及び走行距離計データの密結合を可能にする。例は、ロボットデバイスの(例えば、ロボットの「本体」、「コア」、または「シャシ」の)、及び(例えば、ロボットの「アーム」または「頭部」上で)ロボットデバイスに結合された画像キャプチャデバイスの最大6自由度を特徴とする多種多様のロボットデバイスにリアルタイムでまたはほぼリアルタイムで実装され得る。本明細書に説明する特定の例は、ロボットデバイス及び画像キャプチャデバイスのポーズを推定するために状態モデルをともに最適化する。この同時最適化は運動誤差項、走行距離計誤差項、幾何学的誤差項、及び以前の状態と誤差を表す一次事前確率の1つ以上を含み得る。
【0134】
本明細書に説明する特定の例は、ロボットデバイスが環境をナビゲートするにつれ、環境の高密度3次元モデルをリアルタイムでまたはほぼリアルタイムで構築することを可能にする。移動できる画像キャプチャデバイスを使用することにより、環境のより効率的かつ柔軟なマッピングが可能になり、生活空間及び/または災害激甚地もしくは紛争地帯など制約された環境をマッピングするために特に適用可能である。特定の例では、3次元モデルは、密なローカルループクロージャを達成するためにアクティブ領域を使用する。これは、面素モデル使用時の表面に関するものであり得る。モデルのアクティブ部分が、非アクティブ部分から遠くにドリフトしすぎて局所的なアライメントが集束できない場合、密なグローバルループクロージャ及びモデル一貫性のために、例えばモデルの表面に対して、モデルのアクティブ部分を下部の非アクティブ部分とアラインし直す変形をブートするために、外観ベースのグローバルループクロージャ方法を使用し得る。
【0135】
説明した例の実施態様の実行は、急速な回転を有する高速で不規則な動きなど、困難な動き及び視覚データの大幅な改善を提供しながら、簡略かつ円滑なカメラ軌跡のための比較手法に匹敵する。また、本明細書に説明する例は、(例えば、カメラがタイル張りの天井またはカーペットを敷いた床を観測する)共通の彩色の壁及び床など、著しい光度計の変動及び幾何学的な変動を欠く領域に改善されたマッピングも提供する。比較手法では、参考になる画像データが欠如していると、例えば
図10に示すような大規模なモデルドリフトにつながる場合がある。
【0136】
本明細書に説明する特定の例は、例えばグラウンドトゥルース測定値と比較して、定量的な追跡精度、及び定性的な再構築一貫性のための改善を提供する。
図12は、これらの改善を明示する例のテストデータを示す。
図12は、環境の2次元平面図を示す。テストケースでは、環境は、約5メートルかける5メートルの部屋であった。線1210は、ロボットデバイスの「グラウンドトゥルース」経路、つまり本明細書に説明するシステム及び方法とは関係なく測定されたロボットデバイスの実際の経路を表す。線1220は、次に、例えば
図3A、
図3B、または
図4Aに示すコンポーネントを適用することによって、本明細書に説明する状態最適化の例でモデル化されるロボットデバイスのモデル化された位置を表す。線1230は、次に、例えば本明細書に説明する運動誤差項及び走行距離計誤差項なしに、結合された幾何学的誤差及び測光誤差を最小限に抑えることによって位置を追跡する比較システムを使用し、ロボットデバイスのモデル化された位置を示す。見られるように、線1220は、線1210と密接に一致しているが、線1230はいくつかの場所で線1210とは異なっている。このテストケースでは、比較システムは、高速回転中、特に画像データが変動を欠いていた場合に、正確な軌跡を維持することに苦心した。対照的に、本明細書に説明する例は、ナビゲーションを支援するために、ロボットデバイスからのオンボード測定値を利用することができた。
【0137】
本明細書に説明する特定の例は、ポーズグラフなしでSLAMシステムを使用するときに堅牢かつ一貫性のあるマップを生成することを可能にする。例えば、本例は、ポーズグラフのないSLAMシステムを改善するために使用し得、運動測定値及び走行距離計測定値の制約なしに、3次元モデルは実際の「グラウンドトゥルース」形状から逸脱するようにいびつになる場合がある。本例は、このようにして環境の3次元構造をマッピングし、生成された構造内でロボットデバイスの位置を突き止める高密度視覚SLAM方法を改善する。また、本明細書に説明する例は、繰り返し見られるオブジェクトを、環境のグローバルモデルで正確に位置決めすることも可能にし得る。また、モデルは、改善された局所的な一貫性も示す。
【0138】
本明細書に説明する特定の例は、IMUによって提供される慣性測定など、慣性測定値を使用する比較方法に優る改善も提供する。これらの方法は、慣性測定値のノイズ及びバイアスに起因する大局的なドリフトを受けやすい。ドリフトは、加速度計の測定値及びIMUバイアスに対する依存に起因する場合がある。例えば、特定の比較システムは、画像の対(例えば、連続ビデオフレーム)間の変換を推定するために拡張カルマンフィルタを使用し得る。
【0139】
本明細書に説明する特定の例は、可動ロボットプラットフォーム使用時に「無料で」利用できる場合がある運動測定値及び走行距離計測定値を利用する。例えば、車輪付きのロボットは、多くの場合、アクセス可能な走行距離計測法データを提供し、マニピュレータ運動学は、マニピュレータ制御プロセスの一部として計算され得る。共通マニピュレータに基づいたデータなど、可動マウントからのデータを使用し行われる予測は、堅牢性の改善を提供しながらも、慣性系で見られるようにドリフトを低減できる直接的な関節角度測定値に基づき得る。また、マニピュレータ上のエンドエフェクタ位置に画像キャプチャデバイスを取り付けることは、環境マッピング時に改善を提供することが示されてきた。相対的な走行距離計測定値は、現在の状態と以前の状態の両方を最適化するために使用し得る。本明細書に説明する例は、リアルタイムフレームレート(例えば、毎秒30フレーム)で実装し得るため、ポーズグラフを使用しないシステムなど高速SLAMシステム及びサーフェルモデルでの柔軟な変形操作にも良好に適合する。
【0140】
本明細書に説明する特定のシステムコンポーネント及び方法は、非一時的な記憶媒体上に格納可能であるコンピュータプログラムコードによって実装し得る。
図13は、コンピュータ可読記憶媒体1320からデータを取り出すように配置された少なくとも1つのプロセッサ1310を含むシステムの特定の例1300を示している。システムは、上述のような可動ロボットデバイスの一部を含み得る。コンピュータ可読記憶媒体1320は、その上に格納されたコンピュータ可読命令1330のセットを含む。命令1330は、少なくとも1つのプロセッサ1310に一連の動作を実行させるように配置される。これらの動作は、
図9の方法900またはその変形形態、及び/または
図4Aを参照して説明する状態エンジン440の動作を含み得る。
【0141】
上記例は、例示的と理解されるべきである。さらなる例が予想される。各例の特定のコンポーネントは別々に説明されたが、1つの例に関して説明された機能性は、別の例で適切に実装され得ること、及び特定のコンポーネントが実施態様に応じて省略し得ることを理解されたい。任意の一例に関して説明したいずれの特徴も単独で、または説明された他の特徴と組み合わせて使用し得、例のいずれか他の例の1つ以上の特徴またはいずれか他の例のいずれかの組み合わせと組み合わせて使用し得ることを理解されたい。さらに、上述していない均等物及び修正形態も、添付の特許請求の範囲に定義する本発明の範囲から逸脱することなく利用し得る。
【符号の説明】
【0142】
110 3次元空間
115 オブジェクト
120 画像キャプチャデバイス
130 ロボットデバイス
135 アクチュエータ
145 ロボットデバイス
155 垂直軸
160 ロボットデバイス
162 シャシ
164 アクチュエータ
165 可動マウント
166 画像キャプチャデバイス
168 シャシ
180 ロボットデバイス
182 本体
184 アクチュエータ
185 ネック
185 マウント
186 頭部
190 ロボットデバイス
192 シャシ
194 アクチュエータ
195 可動マウント
196 画像キャプチャデバイス
210 画像キャプチャデバイス
220 画像データ
230 フレーム
240 複数のフレーム
250 測光データ
260 測光データ
280 深度データ
310 ロボットデバイス
320 画像キャプチャデバイス
330 アクチュエータ
332 ロボットアクチュエータ
334 キャプチャデバイスアクチュエータ
340 状態エンジン
350 マッピングエンジン
360 ロボットデバイス
360 の状態
380 ロボットデバイス
390 移動コントローラ
400 マッピングシステム
440 状態エンジン
445 状態データ
450 ロボットデバイス
460 ロボットデバイス
462 ロボットデバイス
510 マッピングエンジン
520 画像データ
530 モデル
540 モデル区分器
550 位置合わせエンジン
610 データ構造
620 サーフェル
700 マッピングシステム
705 状態エンジン
710 マッピングエンジン
715 画像データ
720 アクティブモデルフレームジェネレータ
725 モデル融合コンポーネント
735 モデル区分器
740 アクティブ部分
745 非アクティブ部分
750 非アクティブモデルフレームジェネレータ
760 位置合わせエンジン
810 位置合わせエンジン
820 データストレージデバイス
840 モデルデフォーマ
860 変形グラフ
1015 第1の位置
1020 第2の位置
1032 シャシ
1034 画像キャプチャデバイス
1042 シャシ
1044 画像キャプチャデバイス
1310 プロセッサ
1320 コンピュータ可読記憶媒体
1330 命令
【国際調査報告】