(57)【特許請求の範囲】
【請求項１】
ロボットデバイスであって、
複数の角度位置から画像を取り込むための単眼の多方向カメラデバイスと、
空間の内部で前記ロボットデバイスを移動させるための少なくとも1つの移動アクチュエータと、
前記空間の内部の前記ロボットデバイスの移動を制御するためのナビゲーションエンジンと、
前記空間の移動可能な部分を決定するための、前記ナビゲーションエンジンによってアクセス可能な占有マップとを備え、
前記ナビゲーションエンジンが、
前記少なくとも1つの移動アクチュエータを使用して、移動面における点のまわりで前記ロボットデバイスの移動を命令し、
前記単眼の多方向カメラデバイスを使用して、前記ロボットデバイスの前記命令された移動中に、複数の異なる角度位置における一連の画像を得、
前記命令された移動中の複数の位置における前記単眼の多方向カメラデバイスの前記位置および配向を示す姿勢データであって、前記一連の画像内で検知された1組の特徴を使用して決定される姿勢データを、前記一連の画像データから決定し、
前記一連の画像と前記姿勢データとのボリューム関数を評価することにより、前記空間における前記多方向カメラデバイスから物体までの距離をそれぞれ表す奥行き値を推定し、
推定された奥行き値に関する分散測度を決定し、
前記決定された分散測度に基づいて、前記推定された奥行き値をフィルタリングし、
前記フィルタリングされた奥行き値に基づいて、前記空間の前記占有マップを埋めるように構成されている、ロボットデバイス。
【請求項２】
前記単眼の多方向カメラデバイスによって取り込まれた画像をアンラップして前記ナビゲーションエンジンで使用されるパノラマ画像を出力するための画像プロセッサを備える、請求項1に記載のロボットデバイス。
【請求項３】
前記単眼の多方向カメラデバイスが、一連のフレームを含むビデオデータを取り込むためのビデオデバイスを備える、請求項1または2に記載のロボットデバイス。
【請求項４】
前記占有マップが多次元グリッドを含み、前記グリッドのエントリが、
前記移動面の領域が自由空間を含み、前記領域は前記ロボットデバイスが移動可能であること、および、
前記移動面の領域が物体を含み、前記領域は前記ロボットデバイスが移動不可能であること、のうち1つを示す、請求項1から3のいずれか一項に記載のロボットデバイス。
【請求項５】
較正パターンの少なくとも1つの取り込み画像を処理することにより、前記単眼の多方向カメラデバイスを較正するカメラ較正器を備え、
前記カメラ較正器は、取り込み画像値および回復された較正パターンの画像特性の関数を評価することによってカメラのモデルパラメータを決定するように構成されている、請求項1から4のいずれか一項に記載のロボットデバイス。
【請求項６】
前記単眼の多方向カメラデバイスが全方向カメラを備える、請求項1から5のいずれか一項に記載のロボットデバイス。
【請求項７】
前記全方向カメラがパノラマ環状レンズを備える、請求項6に記載のロボットデバイス。
【請求項８】
前記単眼の多方向カメラデバイスが、奥行きセンサおよび画像センサを備え、奥行きお
よび画像データを取り込むように構成されている、請求項1から7のいずれか一項に記載のロボットデバイス。
【請求項９】
掃除要素を備え、
前記ナビゲーションエンジンが、
前記物体占有マップを処理して、前記空間の占有されていない領域に関する掃除パターンを決定し、
前記掃除パターンに従って前記掃除要素の起動を命令するように構成されている、請求項1から8のいずれか一項に記載のロボットデバイス。
【請求項１０】
前記掃除要素が真空デバイスを備える、請求項9に記載のロボットデバイス。
【請求項１１】
ロボットデバイスによる移動が可能な空間の物体占有を判定するための方法であって、
移動面における点のまわりでの前記ロボットデバイスの移動の間に、前記ロボットデバイスに結合された単眼の多方向カメラデバイスから画像データを得るステップであって、前記単眼の多方向カメラデバイスが、複数の角度位置から画像データを取り込むように構成されており、前記画像データが、前記ロボットデバイスの移動面内に不同がある一連の画像を含む、ステップと、
前記画像データに対応する姿勢データを決定するステップであって、前記姿勢データが、前記単眼の多方向カメラデバイスの位置および配向を示すものであり、前記姿勢データが、前記画像データ内の検知された1組の特徴を使用して決定される、ステップと、
前記画像データと前記姿勢データとのボリューム関数を評価することにより、前記空間における前記単眼の多方向カメラデバイスから物体までの距離をそれぞれ表す奥行き値を推定するステップと、
推定された奥行き値に関する分散測度を決定するステップと、
前記決定された分散測度に基づいて、前記推定された奥行き値をフィルタリングするステップと、
前記フィルタリングされた奥行き値に基づいて、前記空間の物体占有マップを埋めるステップであって、前記物体占有マップが、前記ロボットデバイスによって前記空間を移動するために使用可能である、ステップとを含む方法。
【請求項１２】
前記画像データに対応する姿勢データを決定するステップが、
前記一連の画像における複数の画像の各々において1つまたは複数の特徴を検知するステップと、
前記複数の画像にわたって、前記検知された特徴を照合して、前記画像データ内の1組の目印を決定するステップと、
前記一連の画像について、1組のカメラ姿勢の推定と1組の目印位置の推定とを連帯的に最適化するステップであって、連帯的に最適化するステップの後に、前記姿勢データが、前記1組のカメラ姿勢の推定を含む、ステップとを含む、請求項11に記載の方法。
【請求項１３】
前記1組のカメラ姿勢の推定と前記1組の目印位置の推定とを連帯的に最適化するステップが、バンドル調整を遂行するステップを含む、請求項12に記載の方法。
【請求項１４】
前記1組のカメラ姿勢の推定と前記1組の目印位置の推定とを連帯的に最適化するステップが、前記ロボットデバイスからのオドメトリデータを使用して最適化関数を抑制するステップを含む、請求項11または12に記載の方法。
【請求項１５】
ボリューム関数を評価することによって奥行き値を推定するステップが、
前記一連の画像から参照画像を決定するステップと、
前記参照画像とオーバラップする1組の比較画像を決定するステップと、
前記参照画像の画像値と前記1組の比較画像からの投影画像値との間の測光誤差を決定するステップであって、
各投影画像値が、前記参照画像に関する姿勢データおよび前記比較画像に関する姿勢データを使用した、前記参照画像の視点への比較画像の投影を含む、ステップと、
前記測光誤差を最小化する奥行き値を選択するステップとを含む、請求項11から14のいずれか一項に記載の方法。
【請求項１６】
前記測光誤差が、正規化された画素測光誤差に基づいて決定される、請求項15に記載の方法。
【請求項１７】
前記単眼の多方向カメラデバイスが全方向カメラデバイスを備え、前記参照画像が前記空間の360度のパノラマを含み、
前記物体占有マップを埋めるステップが、
前記参照画像の各画素列に関して、最も近い奥行き値を決定するステップと、
前記最も近い奥行き値を使用して2次元の占有グリッド値を埋めるステップとを含む、請求項15または16に記載の方法。
【請求項１８】
前記分散測度が、参照画像に関連した画素の奥行き測定値の標準偏差を含み、
前記推定された奥行き値をフィルタリングするステップが、所定の閾値未満である標準偏差値を有する奥行き推定を使用するステップを含む、請求項11から17のいずれか一項に記載の方法。
【請求項１９】
奥行き値を推定するステップが、前記空間の準稠密な奥行きマップを計算するステップを含む、請求項11から18のいずれか一項に記載の方法。
【請求項２０】
前記方法が、前記空間の内部における前記ロボットデバイスの、複数の間隔をあけた円運動に対して繰り返され、
前記物体占有マップを埋めるステップが、複数の奥行きマップからの奥行き値を統合して前記物体占有マップを埋めるステップを含む、請求項11から19のいずれか一項に記載の方法。
【請求項２１】
前記物体占有マップを使用して、前記ロボットデバイスが前記空間の占有されていない領域を通る移動経路を決定するステップを含む、請求項11から20のいずれか一項に記載の方法。
【請求項２２】
前記ロボットデバイスが掃除要素を備え、
前記物体占有マップを使用して、前記空間の占有されていない領域に対する掃除パターンを決定するステップを含み、
前記掃除パターンが、前記空間の内部で前記掃除要素が適用されるべき領域を示す、請求項11から21のいずれか一項に記載の方法。
【請求項２３】
プロセッサによって実行されたとき、コンピュータデバイスに空間をマッピングさせるコンピュータ実行可能命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令により、前記コンピュータデバイスが、
複数の角度位置からのフレームの各々に関する画像データを取り込むように構成された単眼の多方向カメラから、前記空間に対する移動面内の別々の角度位置において取り込まれた一連のフレームを受け取り、
前記一連のフレームにわたって、検知された特徴を照合することにより、各フレームについて、前記カメラの位置および配向の推定を決定し、
前記一連のフレームにわたって、前記カメラの前記位置および配向の推定ならびに前記検知された特徴をバンドル調整して、前記カメラの位置および配向の推定の最適化された組を生成し、
前記一連のフレームから参照フレームを決定し、
前記参照フレームの画素値と、前記参照フレームとオーバラップする1組の比較画像からの投影画素値であって、前記カメラからの物体距離と、前記カメラの位置および配向の推定の最適化された組との関数である投影画素値との間の測光誤差関数を評価し、
前記評価された測光誤差関数に基づき、前記参照フレームの別々の画素列に対応する別々の角度位置に対する物体距離を決定し、
決定された物体距離に関する分散測度を決定し、
前記決定された分散測度に基づいて、前記決定された物体距離をフィルタリングし、
前記フィルタリングされた物体距離に基づいて、前記空間に対する前記移動面内で移動可能な領域のマップを生成し、
前記一連のフレームが、前記空間の内部で円周方向に移動する可動ビデオカメラから受け取られる、非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記単眼の多方向カメラデバイスが全方向カメラを備え、
各フレームが、アンラップされた全方向画像を含む、請求項23に記載の媒体。
【請求項２５】
前記全方向カメラがパノラマ環状レンズを備える、請求項24に記載の媒体。
【請求項２６】
前記単眼の多方向カメラが画像センサおよび奥行きセンサを備え、前記一連のフレームが画像データおよび奥行きデータを含み、前記奥行きデータが前記画像データとともに物体距離を決定するために使用される、請求項23から25のいずれか一項に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多方向カメラを使用して空間をマッピングすることに関するものである。本発明は、特に、単眼の多方向カメラからの、カメラの移動中に取り込まれた一連の画像に基づいて占有マップを生成することに関連するが、他を排除するものではない。
【背景技術】
【０００２】
床掃除ロボットなど低コストのロボットデバイスは、一般に、室内などの3次元空間を移動するのに、限られた認識および簡単なアルゴリズムに頼る。たとえば、1つの事例では、ロボットデバイスは、現場のラインの範囲内の、次に避けられ得る物体を検知する赤外線センサまたは超音波センサを備えてよい。同時位置決めおよびマッピング(SLAM)などの技術の周辺で大きな進歩があったものの、解決策の多くは、研究所にとって利用可能な、実質的な計算資源に頼るものである。このため、これらの解決策を、実環境の商用ロボットデバイスを制御する組込み型コンピュータデバイスに移すのは困難である。加えて、特定の解決策は、レーザ検知および測距(LADAR)センサ、構造化光センサ、または飛行時間型奥行きカメラ(time-of-flight depth cameras)などの特化されたセンサデバイス一式を必要とする。これらの特化されたセンサデバイスは費用および複雑さが増し、現実世界のロボットの用途にはあまり適していない。
【０００３】
米国特許出願公開第2010/0040279A1号は、自動走行装置を制御するための3次元グリッドマップを構築する方法および装置を説明している。無人車または移動ロボットの現在の位置および周辺環境を識別するために3次元マップを構築する際、3次元グリッドマップを正確かつより迅速に構築するために、2次元位置確認および3次元画像復元が使用される。しかしながら、この解決策は、少なくとも2つの個々の全方向カメラデバイスおよび対応するステレオ画像処理を備えるステレオ全方向カメラを使用する必要がある。これは、多くの家庭用または低コストのロボットデバイスにとって実用的でなく、またはコスト効率が悪いものであり得る。
【０００４】
米国特許出願公開第2014/0037136A1号は、道路における障害物を検知するために車載カメラの姿勢を決定するための方法およびシステムを説明している。環境に対する可動カメラの姿勢は、1組の初期画像から点対応を決定し、次いで、点対応に対して2点運動推定を適用して、カメラの1組の初期姿勢を決定することによって得られる。初期の姿勢の組および点対応から、点クラウドが生成される。次いで、それぞれの次の画像について、点クラウドを更新しながら、点対応および対応する姿勢が決定される。点クラウドは、自動車両の環境において障害を検知するために使用され得る。しかしながら、この出願公開で説明されている技術は、エンジン駆動の電源を利用することができる、より大規模で、より高度な仕様のコンピュータ資源を採用することができる、自動車および他の自動車両など、より大型のデバイスに対して、より適切である。これは、多くの家庭用または低コストのロボットデバイスにとって実用的でなく、またはコスト効率が悪いものであり得る。
【０００５】
米国特許出願公開第2013/0216098A1号は、たとえば多くの人が居る環境といった混雑した3次元空間のマップを構築するための技術を説明している。この出願公開は、ロボットの移動中に取り込まれた画像を得る連続画像取得ユニットと、画像から各特徴点における量を抽出する局所的特徴量抽出ユニットと、抽出ユニットにより抽出される入力画像間の量の照合を遂行する特徴量照合ユニットとを含み、照合ユニットによる、所定数の画像の間の一致した量の平均を、不変特徴量として計算する不変特徴量計算ユニットと、画像が得られたときのロボットの位置に基づいて、それぞれの不変特徴量に対応する距離情報を計算する距離情報収集ユニットと、ハイブリッドマップとして局所的測量マップを生成するマップ生成ユニットとによって抽出される。この技術は、混雑した空間において使用されたとき利点があるものの、コンピュータ資源が限られている組込み型コンピュータデバイスに採用するには、あまり適切ではない。
【０００６】
欧州特許出願公開第2854104A1号は、準稠密な(semi-dense)同時の位置確認およびマッピングのための方法を説明している。この方法では、画像収集手段の姿勢および奥行き情報が推定される。画像収集手段の位置および/または配向を追跡するステップと、奥行き情報を決定することによってマッピングするステップとが、交互に配置されている。奥行き情報は、たとえば輝度変化が十分に大きい画素といった画像画素のサブセットのみについて決定される。
【０００７】
前述の技術は、特定の状況に関する特定の利点を有するが、大抵の場合は複雑であって、強力な計算を必要とする。このため、これらの技術を、たとえば小さくて低コストの家庭用ロボットデバイスの組込み型コントローラに対して実装するのは困難である。そのため、入手可能なロボットデバイスの限られた認識および簡単なアルゴリズムを乗り越える一方で、このデバイスに適用するために依然として十分実用的かつ一般的である制御手法が切望されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第2010/0040279A1号
【特許文献２】米国特許出願公開第2014/0037136A1号
【特許文献３】米国特許出願公開第2013/0216098A1号
【特許文献４】欧州特許出願公開第2854104A1号
【非特許文献】
【０００９】
【非特許文献１】C. Geyer、「Catadioptric Projective Geometry: theory and applications」、博士論文、University of Pennsylvania、2003年
【非特許文献２】J. P. d. A. Barreto、「General central projection systems: Modeling, calibration and visual serving」、博士論文、University of Coimbra、2004年
【非特許文献３】E. RostenおよびT. Drummond、「Machine learning for highspeed corner detection」、European Conference on Computer Vision (ECCV)の論文集、2006年
【非特許文献４】D. G. Lowe、「Distinctive image features from scale invariant keypoints」、International Journal of Computer Vision (IJCV)、60(2)、91〜110頁、2004年
【非特許文献５】Bill Triggsら、「Bundle adjustment - a modern synthesis」、Vision algorithms: theory and practice、Springer Berlin Heidelberg、2000年、298〜372頁
【非特許文献６】R. A. Newcombe、S. Lovegrove、およびA. J. Davison、「DTAM: Dense Tracking and Mapping in Real-Time」、International Conference on Computer Vision (ICCV)の論文集、2011年
【発明の概要】
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、ロボットデバイスであって、複数の角度位置から画像を取り込むための単眼の多方向カメラデバイスと、空間の内部でロボットデバイスを移動させるための少なくとも1つの移動アクチュエータと、空間の内部のロボットデバイスの移動を制御するためのナビゲーションエンジンと、空間の移動可能な部分を決定するためのナビゲーションエンジンによってアクセス可能な占有マップとを備え、ナビゲーションエンジンは、少なくとも1つの移動アクチュエータを使用して移動面における点のまわりでロボットデバイスの移動を命令し、単眼の多方向カメラデバイスを使用してロボットデバイスの命令された移動中に複数の異なる角度位置における一連の画像を得、命令された移動中の複数の位置における単眼の多方向カメラデバイスの位置および配向を示す姿勢データであって、一連の画像内で検知された1組の特徴を使用して決定される姿勢データを、一連の画像から決定し、一連の画像と姿勢データとのボリューム関数を評価することにより、空間における多方向カメラデバイスから物体までの距離をそれぞれ表す奥行き値を推定し、空間に対する占有マップを埋める(populate)よう奥行き値を処理するように構成される、ロボットデバイスが提供される。
【００１１】
特定の例では、ロボットデバイスは、単眼の多方向カメラデバイスによって取り込まれた画像をアンラップしてナビゲーションエンジンで使用されるパノラマ画像を出力するための画像プロセッサを備える。単眼の多方向カメラデバイスは、一連のフレームを含むビデオデータを取り込むためのビデオデバイスを備え得る。単眼の多方向カメラデバイスは、全方向カメラを備え得る。全方向カメラはパノラマ環状レンズを備え得る。
【００１２】
特定の事例では、占有マップが多次元グリッドを含み、グリッドのエントリが、移動面の領域が自由空間を含みその領域はロボットデバイスが移動可能であること、および、移動面の領域が物体を含みその領域はロボットデバイスが移動不可能であること、のうちの1つを示す。
【００１３】
1つの事例では、ロボットデバイスは、較正パターンの少なくとも1つの取り込み画像を処理することによって単眼の多方向カメラデバイスを較正するカメラ較正器を備え得る。カメラ較正器は、取り込み画像値と回復された較正パターンの画像特性との関数を評価することによってカメラのモデルパラメータを決定するように構成されてよい。
【００１４】
一変形形態では、単眼の多方向カメラデバイスは、奥行きセンサおよび画像センサを備え、奥行きおよび画像のデータを取り込むように構成されている。
【００１５】
一実装形態では、ロボットデバイスは掃除要素を備えてよく、ナビゲーションエンジンは、物体占有マップを処理して、空間の占有されていない領域に関する掃除パターンを決定し、掃除パターンに従って掃除要素の起動を命令するように構成されている。この実装形態では、掃除要素は真空デバイスを備え得る。
【００１６】
本発明の第2の態様によれば、ロボットデバイスによる移動が可能な空間に対する物体占有を判定するための方法が提供され、この方法は、ロボットデバイスに結合された単眼の多方向カメラデバイスから画像データを得るステップであって、単眼の多方向カメラデバイスが、複数の角度位置から画像データを取り込むように構成されており、画像データが、ロボットデバイスの移動面内に不同がある一連の画像を含む、ステップと、画像データに対応する姿勢データを決定するステップであって、姿勢データが、単眼の多方向カメラデバイスの位置および配向を示すものであり、姿勢データが、画像データ内の検知された1組の特徴を使用して決定される、ステップと、画像データと姿勢データとのボリューム関数を評価することにより、空間における単眼の多方向カメラデバイスから物体までの距離をそれぞれ表す奥行き値を推定するステップと、空間に対する物体占有マップを埋めるよう奥行き値を処理するステップであって、物体占有マップが、ロボットデバイスが空間を移動するために使用可能である、ステップとを含む。
【００１７】
一例では、画像データに対応する姿勢データを決定するステップは、一連の画像における複数の画像の各々において1つまたは複数の特徴を検知するステップと、複数の画像にわたって、検知された特徴を照合して、画像データ内の1組の目印を決定するステップと、一連の画像について、1組のカメラ姿勢の推定と1組の目印位置の推定とを連帯的に最適化するステップであって、連帯的に最適化するステップの後に、姿勢データが、この1組のカメラ姿勢の推定を含む、ステップとを含む。1組のカメラ姿勢の推定と1組の目印位置の推定とを連帯的に最適化するステップは、バンドル調整を遂行するステップを含み得る。特定の事例では、1組のカメラ姿勢の推定と1組の目印位置の推定とを連帯的に最適化するステップは、ロボットデバイスからのオドメトリデータを使用して最適化関数を抑制するステップを含み得る。
【００１８】
一例では、ボリューム関数を評価することによって奥行き値を推定するステップは、一連の画像から参照画像を決定するステップと、参照画像とオーバラップする1組の比較画像を決定するステップと、参照画像の画像値と1組の比較画像からの投影画像値との間の測光誤差を決定するステップであって、各投影画像値が、参照画像に関する姿勢データおよび比較画像に関する姿勢データを使用した、参照画像の視点への比較画像の投影を含む、ステップと、測光誤差を最小化する奥行き値を選択するステップとを含む。測光誤差は、正規化された画素測光誤差に基づいて決定されてよい。
【００１９】
特定の事例では、単眼の多方向カメラデバイスは全方向カメラデバイスを含み、参照画像は空間の360度のパノラマを含む。これらの事例では、奥行き値を処理するステップは、参照画像の各画素列に関して、最も近い奥行き値を決定するステップと、最も近い奥行き値を使用して2次元の占有グリッド値を埋めるステップとを含み得る。
【００２０】
一例では、奥行き値を推定するステップは、推定された奥行き値に関する分散測度(variance measures)を決定するステップを含み、奥行き値を処理するステップは、決定された分散測度に基づいて、推定された奥行き値をフィルタリングするステップを含み、物体占有マップは、フィルタリングされた奥行き値に基づいて埋められる。この例では、分散測度は、参照画像に関連した画素の奥行き測定値の標準偏差を含み得、推定された奥行き値をフィルタリングするステップは、所定の閾値未満である標準偏差値を有する奥行き推定を使用するステップを含み得る。そのため、奥行き値を推定するステップは、空間の準稠密な奥行きマップを計算するステップを含み得る。
【００２１】
特定の例では、この方法は、空間の内部におけるロボットデバイスの、複数の間隔をあけた円運動に対して繰り返されてよい。これらの例では、物体占有マップを埋めるよう奥行き値を処理するステップは、複数の奥行きマップからの奥行き値を統合して物体占有マップを埋めるステップを含む。
【００２２】
この方法は、物体占有マップを使用して、ロボットデバイスが空間の占有されていない領域を通る移動経路を決定するステップを含み得る。それに加えて、またはその代わりに、ロボットデバイスは掃除要素を備えてよく、この方法は、物体占有マップを使用して、空間の占有されていない領域に対する掃除パターンを決定するステップであって、掃除パターンが空間の内部で掃除要素が適用されるべき場所を示す、ステップを含み得る。
【００２３】
本発明の第3の態様によれば、プロセッサによって実行されたとき、コンピュータデバイスに空間をマッピングさせるコンピュータ実行可能命令を含む非一時的コンピュータ可読記憶媒体が提供され、この命令により、コンピュータデバイスは、複数の角度位置からのフレームの各々に関する画像データを取り込むように構成された単眼の多方向カメラから、空間に対する移動面内の別々の角度位置において取り込まれた一連のフレームを受け取り、一連のフレームにわたって、検知された特徴を照合することにより、各フレームについて、カメラの位置および配向の推定を決定し、一連のフレームにわたって、カメラの位置および配向の推定ならびに検知された特徴をバンドル調整して、カメラの位置および配向の推定の最適化された組を生成し、一連のフレームから参照フレームを決定し、参照フレームの画素値と、参照フレームとオーバラップする1組の比較画像からの投影画素値であって、カメラからの物体距離と、カメラの位置および配向の推定の最適化された組との関数である投影画素値との間の測光誤差関数を評価し、評価された測光誤差関数に基づき、参照フレームの別々の画素列に対応する別々の角度位置に関して物体距離を決定し、決定された物体距離に基づいて、空間に対する移動面内で移動可能な領域のマップを生成する。
【００２４】
単眼の多方向カメラは、全方向カメラを備え得る。この場合、各フレームが、アンラップされた全方向画像を含み得る。全方向カメラはパノラマ環状レンズを備え得る。一連のフレームは、空間の内部で円周方向に移動する可動ビデオカメラから受け取られ得る。特定の変形形態では、単眼の多方向カメラは画像センサおよび奥行きセンサを備えてよく、一連のフレームが画像データおよび奥行きデータを含み、奥行きデータは画像データとともに物体距離を決定するために使用される。
【００２５】
他の例では、非一時的コンピュータ可読記憶媒体が含み得るコンピュータ実行可能命令がプロセッサによって実行されたとき、ロボットデバイスの組込み型コンピュータまたは分散システムの遠隔プロセッサなどのコンピュータデバイスが、上記で論じられた方法のうちの任意のものを遂行する。
【００２６】
本発明のさらなる特徴および利点が、添付図面の参照を伴って例としてのみ示される、以下の本発明の好ましい実施形態の説明から明白になるであろう。
【図面の簡単な説明】
【００２７】
【図１Ａ】ロボットデバイスの一例を示す概略図である。
【図１Ｂ】ロボットデバイスの一例を示す概略図である。
【図２Ａ】一例による、ロボットデバイスの運動を示す概略図である。
【図２Ｂ】一例による、ロボットデバイスの運動を示す概略図である。
【図３】一例による、占有マップの図的表現を示す概略図である。
【図４Ａ】一例による、占有マップを生成するのに用いる特定のシステム構成要素を示す概略図である。
【図４Ｂ】一例による、占有マップを生成するのに用いる特定のシステム構成要素を示す概略図である。
【図５】一例による、ナビゲーションエンジンの特定のシステム構成要素を示す概略図である。
【図６】一例による、ロボットデバイスによる移動が可能な空間に対する物体占有を判定するための方法を示す流れ図である。
【図７】一例による、カメラデバイスの姿勢データを推定する方法を示す流れ図である。
【図８】一例による、奥行き値を推定する方法を示す流れ図である。
【図９Ａ】ロボットデバイスからの、異なる画像特性を有する2つの領域を示す例示の画像である。
【図９Ｂ】一例による、図9Aの2つの領域に関する奥行き値を示すグラフである。
【図１０】一例による、非一時的コンピュータ可読媒体を示す概略図である。
【発明を実施するための形態】
【００２８】
本明細書で説明される特定の例は、ロボットデバイスが、たとえば室内または外部空間などの自由空間を迅速かつ正確に移動することを可能にするものである。特定の例は、単眼の多方向カメラデバイスを使用して、空間の内部の複数の異なる角度位置における一連の画像を得る。近似のxy移動面において移動する床ベースのロボットについては、これらの画像は、すべての水平方向において不同がある一連の密集した画像を含み得る。これらの画像は、複数の円形または周囲の移動を遂行することによって得られる。これらは空間のサイズに対して小さい移動でよい。カメラデバイスは単一の全方向カメラを備え得る。次いで、本明細書で説明される特定の例は、これらの画像に対する特別な処理演算を提供する。この処理は、ロボットデバイスに組み込まれたコンピュータ資源の内部で適用可能である。一例では、姿勢データは、一連の画像から、特徴に基づく手法を使用して決定される。一旦、一連の画像に対してこの姿勢データが計算されると、画像と姿勢データとのボリューム関数が評価され、たとえばカメラデバイスから空間の内部の物体までの距離を表す奥行き値が決定される。この2段階の手法は、環境をモデル化するための希薄な手法と稠密な手法の利益を組み合わせる一方で、両方の手法の相対的不利益を制限するように、適切な計算を選択するものである。次いで、空間に対する占有マップを埋めるために奥行き値が処理されてよい。この占有マップは、ロボットデバイスがその環境を移動するのに使用可能な2次元グリッドを備え得る。そのため、本明細書で説明される特定の例は、限られたコンピュータ資源および/またはリアルタイム動作における高速評価を可能にするやり方で、2次元計算と3次元計算を組み合わせる。
【００２９】
本明細書で説明された特定の技術は、可動ロボットデバイスが新規の部屋または外部空間に入るとき、初期化ルーチンまたは構成ルーチンとして適用され得る。これによって、次いで、ロボットデバイスは、たとえばほんの数秒で占有マップを迅速に埋めることができ、占有マップは、自由空間を正確にマッピングし、たとえばナビゲーション、掃除、または品目配送といった後の機能のために使用され得る。試験環境において、本明細書で説明された特定の手法は、比較のLADAR方法を使用して検知された自由空間の80%超を明らかにする高品質の占有マップをもたらし、その一方で、割高で複雑なLADAR機器の必要性を回避した。実際、本明細書で説明された特定の例は、たとえば赤/緑/青(RGB)のビデオカメラといった単一の低コストのパッシブカメラを使用する占有マッピングを提供するものである。これによって、ロボットデバイスは、まわりの空間の全体的な理解をリアルタイムで得ることができる。本明細書で説明された特定の例は拡張も容易であり、たとえば、第1の移動および初期の占有マップの生成に続いて、初期のマップを更新したり改善したりするために、さらなる移動が開始され得る。
【００３０】
例示のロボットデバイス
図1Aは、本明細書で説明されたような占有マップを生成するのに使用され得る試験ロボットデバイス105の第1の例100示す。この試験ロボットデバイスは、以下の例の理解を容易にするために提供されており、限定するものと見なされるべきではなく、異なる構成の他のロボットデバイスが、以下の段落において説明される動作に、同様に適合し得る。図1Aの試験ロボットデバイス105は、複数の角度位置から画像を取り込むための単眼の多方向カメラデバイス110を備える。使用において、複数の画像が次々に捕捉され得る。特定の事例では、複数の角度位置が広い視野をカバーする。特別な事例では、カメラデバイス110は、たとえば実質的に360度の視野を取り込むように構成されたデバイスといった、全方向カメラを備え得る。この場合、全方向カメラは、たとえば電荷結合アレイに対して取り付けられ得るレンズといったパノラマ環状レンズを有するデバイスを備え得る。図1Aの例では、カメラデバイス110は、ロボットデバイスの上の構成可能なアーム上に取り付けられ、他の事例では、カメラデバイス110は、試験ロボットデバイス105の本体部分の内部に静的に取り付けられてよい。1つの事例では、単眼の多方向カメラデバイスは、一連の画像を取り込むように構成された静止画像デバイスを備えてよく、別の事例では、単眼の多方向カメラデバイスは、ビデオフレームの形式の一連の画像を含むビデオデータを取り込むためのビデオデバイスを備えてよい。特定の事例では、ビデオデバイスは、約25フレーム/秒または30フレーム/秒の、またはそれより大きいフレームレートのビデオデータを取り込むように構成されてよい。
【００３１】
図1Aの試験ロボットデバイス105がさらに備える少なくとも1つの移動アクチュエータ115は、この場合、試験ロボットデバイス105の本体部分に関連して構成された1組の被駆動ホイールを備える。少なくとも1つの移動アクチュエータ115は、1つまたは複数のホイール、トラックおよび/またはローラーに結合された少なくとも1つの電動機を備えてよく、空間の内部でロボットデバイスを移動させるように構成されている。そのような空間の一例が、後に図2Aおよび図2Bを参照しながら説明される。試験ロボットデバイス105は、ナビゲーションエンジン120も備える。これは、図1Aの破線によって示されるような組込み型コンピュータデバイスを備え得る。たとえば、ナビゲーションエンジン120は、少なくとも1つのプロセッサおよびメモリならびに/あるいは1つまたは複数のシステムオンチップコントローラを使用して実施され得る。特定の事例では、ナビゲーションエンジン120は、消去可能なプログラム可能読取り専用メモリ(EPROM)などの読取り専用メモリまたはプログラム可能メモリから回復されるようなファームウェアといった機械可読命令によって実施され得る。ナビゲーションエンジン120は、空間の内部の試験ロボットデバイス105の移動を制御する。たとえば、ナビゲーションエンジン120は、少なくとも1つの移動アクチュエータに、試験ロボットデバイス105を前方もしくは後方へ推進するように命令してよく、またはデバイスを旋回させるかもしくは回転させるように、試験ロボットデバイス105のホイールを差動で駆動するように命令してよい。図1Aでは、試験ロボットデバイス105は、試験ロボットデバイス105の回転を可能にする回転可能なフリーホイール125も有する。動作において、ナビゲーションエンジン120は、占有マップ(図1Aには示されていない)を使用して、空間の移動可能な部分を判定する。たとえば、ナビゲーションエンジン120は、占有マップを実装するデータが記憶される記憶装置または他の機械可読媒体を備え得る。実験的な構成の1つでは、試験ロボットデバイス105を実装するためにPioneer 3DXの移動ロボットプラットフォームが使用された。
【００３２】
図1Bは、ロボットデバイス155の別の例150を示す。図1Bのロボットデバイス155は、家庭用掃除ロボットを備える。試験ロボットデバイス105と同様に、掃除ロボットデバイス155は単眼の多方向カメラデバイス160を備える。図1Bの例では、掃除ロボットデバイス155の上部にカメラデバイス160が取り付けられている。一実装形態では、掃除ロボットデバイス155の高さは約10〜15cmでよいが、他のサイズも可能である。掃除ロボットデバイス155は、少なくとも1つの移動アクチュエータ165も備え、本事例では、これは、デバイスを前方または後方へ推進するためにデバイスの両側に取り付けられた2組のトラックを駆動するように構成されている少なくとも1つの電動機を備える。これらのトラックは、掃除ロボットデバイス155を操縦するためにさらに差動で駆動され得る。他の例では、異なる駆動部品および/またはステアリング部品ならびに技術が提供され得る。図1Aと同様に、掃除ロボットデバイス155はナビゲーションエンジン170および回転可能なフリーホイール175を備える。
【００３３】
掃除ロボットデバイスは、図1Aに示された試験ロボットデバイス105の部品に加えて掃除要素180を備える。この掃除要素180は、部屋の床を掃除するための要素を備え得る。部屋の床を掃除するための要素は、ローラーもしくはブラシ185および/または湿式要素もしくは乾式要素を備え得る。1つの事例では、掃除要素180は、たとえばほこりおよびダスト粒子を取り込むように構成された真空デバイスを備え得る。この場合、ナビゲーションエンジンは、物体占有マップを使用して空間の占有されていない領域に対する掃除パターンを決定し、掃除パターンに従って掃除要素180の起動を命令するように構成されてよい。たとえば、真空デバイスは、部屋の内部の自由空間の領域を掃除するために物体占有マップによって示されたように起動されてよく、掃除ロボットデバイスは、物体占有マップを使用して部屋の内部の障害物をよけながら進む。
【００３４】
ロボットデバイスに関する例示の運動
図2Aおよび図2Bは、2つの例による、空間210の内部のロボットデバイス205の運動200、250を概略的に示す。ロボットデバイス205は、いくつかの例では、図1Aおよび図1Bに示されたようなデバイスを備え得る。図2Aおよび図2Bでは、空間210は室内の形態の3次元空間を備える。他の例では、空間は、たとえば少なくとも部屋または地理的位置の一部分といった何らかの内部の物理的空間および/または外部の物理的空間でよい。これらの例における空間210は、空間に配置されている複数の物理的物体220を備える。これらの物体220は、とりわけ、家具、建造物部分、機器、揚げ床部分、内壁部分、人、電子デバイス、動物などのうち1つまたは複数を含み得る。図2Aおよび図2Bにおける空間210は下部面を有する平面として上から示されているが、これは必ずしもすべての実装形態において必要なことではなく、環境はたとえば空中でよく、または地球圏外の空間の内部でもよい。空間の下部面は、水平な床である必要もなく、たとえば斜面および/または多重レベルの一連の面を備えてもよい。
【００３５】
図2Aの例では、ロボットデバイス205は、空間において点240のまわりを移動するように適合される。たとえば、図1Aに示されたナビゲーションエンジン120または図1Bに示されたナビゲーションエンジン170は、たとえば移動アクチュエータ115または165といった少なくとも1つの移動アクチュエータを使用して移動240を命令するように構成され得る。ロボットデバイス205は、移動240中に、たとえば図1Aの110または図1Bの160といった装備している単眼の多方向カメラデバイスを使用して複数の異なる角度位置における一連の画像を得るように構成されている。たとえば、移動240は、空間の一部分の内部における実質的に円形の運動を含み得る。移動240は、特定の事例では、たとえば点230のまわりの360度の回転といった完全なループを含んでよく、他の事例では、たとえば点230のまわりの360度未満の回転といったループの一部分を含んでよい。移動240は円形である必要はなく、たとえば等辺を有するものや不等辺を有するものを含む何らかの多角形といった任意の形状の周囲の少なくとも一部分のまわりの周囲の移動でよい。約4メートルまたは5メートルの正方形の比較的小さい部屋(たとえば平均的な家内の部屋)では、移動240は、端から端まで約0.5メートルを含み得、たとえばほぼ0.5メートルの直径の円運動を含み得る。これには10〜20秒を要する可能性がある。特定の試験例では、小さい部屋については、一連の画像は約100フレームまたは200フレームを含み得る。
【００３６】
一般に、図2Aの例では、ロボットデバイス205は、単眼の多方向カメラデバイスが、複数の方向において不同がある密集した画像(たとえばビデオフレーム)の少なくとも一続きを取り込むことができるように、少なくとも1つの運動を遂行するように制御される。たとえば近似的に水平な床を有する空間、すなわちロボットデバイス205のための移動面を形成する空間では、一連の密集した画像は、複数の水平方向において不同があり得る。比較すると、移動に対して角のある面を有する空間、または空中もしくは地球圏外の空間では、移動面に対して平行な複数の方向において不同があり得る。この移動240は、たとえば自分自身が部屋の内部に適応するために部屋のまわりをさっと見る、人間または動物の(潜在意識の)能力に類似した、簡単な解釈の移動と見なされてよい。ロボットデバイス205は、移動240により、空間の形状および/または主な特長の全体的な概念を迅速に得ることができる。これは、以下の段落においてより詳細に説明される。これにより、ロボットデバイス205は、次いで、部屋の内部の全体的な自由空間を迅速に理解する能力を得て、賢い高レベルの計画および空間の意味論的理解が容易になる。
【００３７】
図2Bは、たとえば外部空間および/または多分割の内部空間といった、より広い空間において使用され得る例示の運動250を示す。たとえば、図2Bの空間255は、10〜20メートルの少なくとも1つの壁を有する部屋を含み得る。特定の例では、空間は、図2Bに示されるように、目に見える障壁によって分離された複数の空間部分を含み得、たとえば、隔壁260は、とりわけ、部分的な壁もしくは完全な壁、デスクユニットまたは家具の品目を備え得る。図2Bにおいて、運動250は、たとえば図2Aを参照しながら説明されたような複数の移動といった複数の移動270、280および290を含む。図2Bでは3つの移動が示されているが、これは限定することを意図するわけではない。この場合、移動は、たとえば点のまわり、または形状の少なくとも一部分の周囲の、1組の円形の移動または周囲の移動から選択された、1組の類似または非類似の移動を含み得る。大きな部屋については、移動は、小さい部屋に関して説明されたものよりも大きくてよく、たとえば円運動の直径は約1メートルでよい。複数の移動が、隔壁260などの目に見える閉鎖が少なくとも部分的に迂回されるように制御され得る。たとえば、第1の移動270から得られたデータは、隔壁260を検知して、たとえばナビゲーションエンジンによって隔壁を超える第2の移動280を命じるために使用され得る。移動の数および/または異なる移動間の間隔は、空間のサイズおよび/または空間の内部の物体の位置に依拠してよい。10〜20メートルの少なくとも1つの壁を有する部屋では、間隔は約1〜3メートルでよい。特定の事例では、空間の所定の部分がマッピングされるまで、追加の移動が遂行されてよい。図2Bの例では、ロボットデバイス205は、いくつかの小さい円形走査を順に行い、中間の新規の視点へ移動し、それによって閉鎖している障害物を回るので、空間の追加の部分を明らかにするように構成されている。これらの走査のすべてから得られた自由空間の情報が、次いで1つの全体的な占有マップへと組み合わされてよく、このことは以下の段落においてより詳細に説明する。
【００３８】
例示の占有マップ
図3は例示の占有マップ300を示す。この占有マップ300は、ロボットデバイス105、155のうち1つまたは複数によって記憶されてよく、かつ/または図2Aおよび図2Bに示された運動200、250に類似の運動に基づいて生成されてよい。占有マップ300は、ロボットデバイスのナビゲーションエンジンによって空間の移動可能な部分を決定するためにアクセス可能でよい。
【００３９】
図3の例示の占有マップ300は多次元グリッド310を含む。図3では、占有マップ300は、10×10のセル320の規則的な2次元グリッドを含む。他の例では、占有マップ300は3次元でよく、かつ/または代替のセルの寸法、形状もしくは分解能を備え得る。特定の試験例では、占有マップのセルは、100mmの辺を有する空間の正方形の領域に関連付けられた。図3の占有マップ300は、自由空間を含む、ロボットデバイスによる移動が可能な移動面の領域、または、物体を含む、ロボットデバイスが移動不可能な移動面の領域のどちらかを示すグリッドまたはセルのエントリを有する。この例では、図3の占有マップ300は、図2Aに示された物体220-A〜220-Dの占有を示す。それ故に、網掛けセル330-Aの第1の組は、空間の対応する領域の部分が物体220-Aによって占有されていることを示し、網掛けセル330-Bの第2の組は、空間の対応する領域の部分が物体220-Bによって占有されていることを示し、網掛けセル330-Cの第3の組は、空間の対応する領域の部分が物体220-Cによって占有されていることを示し、網掛けセル330-Dの第4の組は、空間の対応する領域の部分が物体220-Dによって占有されていることを示す。網掛けのないセル(たとえば数字320によって示されたセル)は、たとえば部屋210の内部の自由空間を示す。したがって、たとえば105、155または205といったロボットデバイスは、図2Aの物体220を回避して自由空間を移動するために占有マップ300を使用し得る。
【００４０】
図3に示されたような2次元グリッドなどの占有マップは、ロボットデバイスによる空間のマッピングを可能にする、簡単ではあるが効果的な方法を提供する。占有マップは、マトリクスおよび/またはアレイデータ構造としてメモリに記憶され得る。特定の事例では、エントリは、たとえば物体の存在または不在を示す2進数でよく、他の事例では、エントリは、占有の確率を(たとえば確信の確実さの形態で)示す値を含んでよい。特定の事例では、占有マップは3次元空間におけるxおよびyの次元に関するものでよい。そのため、占有マップは空間の内部のz面を表し得る。このz面は、たとえば床面といった移動面と整列されてよい。特定の事例では、たとえばxy空間の領域といったグリッドセルに対応するz次元の少なくとも1つの部分を物体が占有している場合、グリッドセルは「占有されている」と設定されてよい。
【００４１】
処理パイプラインの例
図2Aおよび図2Bに示されたような運動の例と、図3に示されたような占有マップの一例とに続いて、次に処理動作の特定の例を説明する。この処理動作は、運動中に取り込まれた一連の画像を得て占有マップを生成するように構成されている。
【００４２】
図4Aは、一例による、占有マップを生成するための処理パイプライン400の特定のシステム構成要素を概略的に示すものである。図4Aでは、単眼の多方向カメラデバイスを備え得るカメラデバイス410が、一連の画像または順次の画像420(各画像は「I」とラベルを付けられている)を取り込む。これらの画像420は、ロボットデバイスの少なくとも1つの命令された移動中に、複数の異なる角度位置において取り込まれたものであり、たとえば、画像420は、ロボットデバイスが図2Aおよび図2Bに示された円形の運動または周囲の運動で移動するとき記録されるビデオデータの一部分から得られたビデオフレームを含み得る。ビデオの事例では、画像は連続したビデオフレームである必要はなく、たとえば最小のコントラストおよび/または焦点距離(focus metrics)を満たすような、少なくとも1つの画像処理基準に従って選択されたビデオフレームのサブセットを含み得る。
【００４３】
図4Aでは、ナビゲーションエンジン430によって画像420がアクセスされる。ナビゲーションエンジン430は、画像420を処理して占有マップ440を生成するように構成されている。一例では、ナビゲーションエンジン430は、一連の画像420から姿勢データを決定するように構成されている。この場合、姿勢データは、少なくとも1つの命令された移動中の、複数の場所におけるカメラデバイス410の位置および配向を示す。1つの事例では、姿勢データは、一連の画像内で検知された1組の特徴を使用して決定される。ナビゲーションエンジン430は、一連の画像420と姿勢データとのボリューム関数を評価することによって奥行き値を推定するようにさらに構成されている。それぞれの奥行き値が、空間におけるカメラデバイス410から物体までの距離を表す。そこで、ナビゲーションエンジン430は、空間に対する占有マップ440を埋めるよう奥行き値を処理するように構成されている。
【００４４】
特定の例では、カメラデバイス410は、RGB画像(またはビデオフレーム)を取り込むように構成されたRGBカメラデバイスを備え得る。1つの事例では、カメラデバイス410は電荷結合デバイス(CCD)または相補型金属酸化膜半導体(CMOS)センサを含む。1つの実験的構成では、Point Grey(登録商標)のFlea3カメラが、Sony(登録商標)のCMOSセンサを特徴として使用された。この実験的構成では、カメラデバイスに、多方向撮像をもたらすSony(登録商標)の薄型全方向レンズRPUC2512が取り付けられた。
【００４５】
他の事例では、カメラデバイス410は他の入手可能なデジタルデバイスおよび/またはアナログデバイスを備えてよく、画像420はアナログ信号源を変換することによって生成される。それぞれの画像420が測定データの2次元表現を含み得る。たとえば、画像420は、記録された画素値の2次元アレイまたはマトリクスを含み得る。すべての例においてそうであるとは限らないが、図4Aの例ではすべての画像420が同一のサイズである。画素値は、所与の分解能(たとえば1280×1024)に対して赤/緑/青の画素値を含み得る。他の例では、他の色空間が使用されてよく、かつ/または画像420が単色またはグレースケールの画素値を含み得る。1つの事例では、画像データは圧縮されたビデオストリームまたはファイルを含み得る。この場合、画像データのフレームは、ストリームまたはファイルから、たとえばビデオデコーダの出力として再構成されてよい。画像データは、ビデオストリームまたはファイルの前処理の後にメモリ位置から回復されてよい。
【００４６】
1つの事例では、カメラデバイス410は、たとえばロボットデバイスの一部分を形成する固体メモリデバイスといった結合されたデータ記憶デバイスに画像420を記憶するように構成されてよい。別の事例では、カメラデバイス410は、結合されたコンピュータデバイスに画像データ420を伝送してよい。結合されたコンピュータデバイスは、たとえばユニバーサルシリアルバス(USB)接続によって直接結合されてよく、または間接的に結合されてもよく、たとえば画像420は1つまたは複数のコンピュータネットワークを通じて伝送され得る。さらに別の事例では、カメラデバイス410は、画像420を、ネットワーク接続型記憶デバイスに記憶するために、1つまたは複数のコンピュータネットワークにわたって伝送するように構成されてよい。この伝送は、たとえば他のワイヤレスネットワークまたはブルートゥース(登録商標)接続といったワイヤレス伝送でよい。画像420はそれぞれのフレームごとに記憶され、かつ/または伝送されてよく、あるいはバッチ方式で、たとえば複数のフレームが互いにバンドルされてよい。
【００４７】
特定の事例では、ナビゲーションエンジン430は、たとえば図1Aおよび図1Bに示されたようにロボットデバイスの一部分を形成してよい。他の事例では、ナビゲーションエンジン430の少なくとも一部分が、たとえば1つまたは複数の結合されたコンピュータデバイス上に配置されて分散され得る。たとえば、これらのコンピュータデバイスは、給電された充電ステーションおよび/またはネットワーク接続型コンピュータ資源の一部分を備え得る。
【００４８】
図4Bは、特定の実装形態において占有マップ440を生成するのに使用され得る処理パイプライン450の第2の例を示す。図4Bの例では、カメラデバイス415は、たとえば上記で説明された実験的構成を使用して実装され得るような全方向カメラデバイスを備える。この場合、カメラデバイス415は未加工の全方向画像460を生成する。たとえば、全方向画像460は、空間の観測された半球に関連した円形画像を含み得る。処理パイプライン450は、未加工の全方向画像460を受け取るように構成された画像プロセッサ470を備える。画像プロセッサ470は、カメラデバイス415によって取り込まれた未加工の全方向画像460をアンラップして、ナビゲーションエンジン435によって使用されるパノラマ画像425を出力する。画像プロセッサ470は、カメラモデルパラメータを使用してアンラップを遂行し得る。未加工の全方向画像460をアンラップすると、後の姿勢および奥行きの推定演算が容易になる。一例では、画像プロセッサ470は、ルックアップ表を使用してアンラップを実施して、それぞれの未加工の全方向画像から、後の処理に用いる球状にマッピングされたパノラマ画像を生成するように構成され得る。特定の事例では、サブ画素補間が使用され得る。未加工の全方向画像をアンラップすると、画像の大きさが市販のグラフィック処理ユニットのメモリの範囲内にうまく適合し、それぞれの画素が球体の表面上の均一領域を表すという利益を得る。
【００４９】
図4Bの処理パイプライン450はカメラ較正器480も備える。図4Bには画像プロセッサとカメラ較正器の両方が示されているが、他の例では画像プロセッサとカメラ較正器は別個に使用され得る。カメラ較正器480は、較正パターン485の少なくとも1つの取り込み画像を処理することによってカメラデバイス415を較正するように構成されている。較正パターン485は、たとえば空間の内部で可視の印刷パターンまたは液晶表示器出力として、空間の内部に存在してよい。1つの事例では、較正パターン485は、ロボットデバイスの充電ステーションおよび/またはドッキングステーションに存在してよい。較正パターン485は、たとえば黒と白の枡のチェッカーボードパターンを含み得る。カメラ較正器480は、取り込み画像値と回復された較正パターンの画像特性との関数を評価することにより、カメラモデルパラメータ、すなわちカメラデバイス415の特性をモデル化するパラメータを決定するように構成されている。回復された較正パターンの画像特性は、較正パターンの回復された表現490から決定される。1つの事例では、カメラ較正器480は、カメラデバイス415が全体の視野をカバーするために移動している間に一連の(たとえば10の)画像の取り込みを命じように構成されてよい。この場合、それぞれの画像に対して(たとえばユーザによって、またはドッキングステーションからの所与の距離などの既知の位置に基づいて)パターンの大まかな位置が与えられる。次いで、それぞれの画像が長方形のパッチにアンラップされ、較正パターンのコーナーが検知される。次いで、コーナーの座標が原画像の空間へと再計算される。このプロシージャは、一連の画像のすべてに対して繰り返される。これから、1組の点対および初期パラメータ値を用いて、カメラモデルパラメータの関数を最小化するためにLevenberg-Marquardt非線形最適化が適用されてよい。例では、カメラモデルパラメータは、ミラー形状パラメータ、半径方向および接線方向の歪み係数ならびにピンホールカメラの固有パラメータうち少なくとも1つを含み得る。回転マトリクスおよび並進ベクトルなど外因性パラメータも、カメラモデルパラメータの一部分を形成し得、これらは、ナビゲーションエンジン435によって遂行される姿勢推定の一部分として、運動を使用し
て推定され得る。特定の事例では、これらの外因性パラメータは6自由度を表し得る。カメラモデルは、たとえば、C. Geyer、「Catadioptric Projective Geometry: theory and applications」、博士論文、University of Pennsylvania、2003年、およびJ. P. d. A. Barreto、「General central projection systems: Modeling, calibration and visual serving」、博士論文、University of Coimbra、2004年、に説明されているような適合されたGeyerおよび/またはBarretoの反射屈折カメラモデルを含み得る。そのようなカメラモデルは、レンズミラーの曲率を決定する特別なパラメータの追加を伴うピンホールモデルに類似し得る。
【００５０】
ナビゲーションエンジン構成要素の例
図5は、占有マップを生成するのに使用され得るナビゲーションエンジン510の一例500を示す。ナビゲーションエンジン510は、上記で説明されたナビゲーションエンジン120、170、430および435のうち任意のものを実装するために使用され得る。ナビゲーションエンジン510は、たとえば上記で説明されたようにロボットデバイスの移動中に取り込まれた一連の画像520を受け取る。一連の画像520は、図4Bを参照しながら説明されたようなアンラップされた全方向画像425を含み得る。ナビゲーションエンジン510は、姿勢推定器530、奥行き推定器540およびマップ生成器550といった少なくとも3つのシステム構成要素を備える。
【００５１】
姿勢推定器530は、一連の画像530を受け取って1組の姿勢推定Tを生成するように構成されている。姿勢推定はそれぞれの受け取られた画像520について生成されてよく、たとえば外因性カメラモデルパラメータである回転マトリクスおよび並進ベクトルの値を含み得る。特定の事例では、図4Bのカメラ較正器480によって遂行されるものなどの構成動作は、たとえばカメラデバイスとロボットデバイスの基部との間の取付け関係を表す、ロボットデバイスの基部/本体からカメラデバイスへの変換を決定してもよい。特定の静的取付けについては、このロボットデバイスの基部/本体のカメラデバイスへの変換は、アイデンティティ変換と見なされ得る。姿勢推定器530は、姿勢推定の組Tを生成するために、画像520から特徴を抽出し、それらの特徴を一連の画像520にわたって照合して、画像520に関する少なくとも1組の初期の姿勢推定をバンドル調整するように構成されてよい。
【００５２】
奥行き推定器540は、姿勢推定器530から一連の画像520および姿勢推定の組Tを受け取るように構成されている。特定の事例では、一連の画像520の中のすべての画像に対して、必ずしも姿勢推定が可能ではない可能性がある。この例の奥行き推定器540は、有効な姿勢推定を有する画像を使用してボリューム関数を評価して、奥行き推定Dを決定するように構成されている。1つの事例では、奥行き推定器540は、一連の画像520から選択された参照画像のあたりの稠密な全方向コストボリュームを評価するように構成されている。この場合、奥行き値は参照画像の1組の画素に対して計算されてよい。一連の画像520から、1組の比較画像との輝度相違を最小化する奥行き値が選択されてよい。一例では、奥行き値を評価するとき、特定の画素が無視されてよい。これは、占有マップを生成するために、関連する高い精度または確信度を有する奥行き推定のみ考慮に入れるように、奥行き値をフィルタリングすること、または選択することと考えられ得る。このフィルタリングのための手法の一例が、後に図9Aおよび図9Bを参照しながら説明される。
【００５３】
マップ生成器550は、奥行き推定Dを受け取って占有マップ560を埋めるように構成されている。1つの事例では、図示のように、マップ生成器550は、画像Iおよび姿勢推定Tも受け取ってよく、またはこのデータにアクセスすることができる。1つの事例では、参照画像の画素の奥行き値が奥行きマップを形成し得る。たとえば図4Bを参照しながら説明されたようにアンラップされた画像を用いる事例では、推定された奥行きマップのそれぞれの列(すなわち奥行き値のそれぞれの列)は、カメラデバイスを基準として異なる視角または角度位置を表す。全方向カメラデバイスが使用される場合、奥行きマップはアンラップされた球状画像に関連付けられてよく、そのため、奥行きマップのそれぞれの列は、360度の視野のまわりの異なる視角または角度位置を表す。1つの事例では、マップ生成器550は、奥行き値の各列に関して、最も近い有効な奥行き測定を選択するように構成され得る。最も近い奥行き推定がうまく見いだされた列については、次いで、これが、自由空間領域に対する境界点として使用される。参照画像の姿勢推定からこの点への見通し線は、ラインからセルへの交点をチェックして、交差したセルの自由空間カウンタを増加させることにより、下にある占有グリッドセルに自由空間として印を付ける。たとえば、ラインは、見通し線を投じることでよく、解析された奥行きマップに関する、特別な視角における、参照姿勢から推定された奥行き点への光線または見通し線と見なされる。占有マップにおいてセルに印を付けるために、ラインからセルへの交点試験が遂行されてよく、セルは空間における正方形として表され得る。そのため、ラインの下のセルに自由空間として印を付け、ラインの終点に、たとえば自由空間マップにおける境界点である占領空間として印を付けるために、幾何学的計算が使用され得る。奥行きマップから複数の自由空間境界点を統合することにより、占有マップ560を実装する占有グリッドにおいて、全体的な自由空間がマッピングされ得る。
【００５４】
特定の事例では、一連の画像520は、(たとえば図2Bの例のような)複数の移動からの画像のバッチを含む。この場合、姿勢推定器530および奥行き推定器540は、これらのバッチの各々に対して動作してよい。一実装形態では、奥行き推定器540は、各バッチについて、参照画像に対する奥行き値の関係を推定するように構成されてよく、バッチは移動270、280、290のうち1つに対応する。この場合、比較画像も、対応する一組の画像から選択されてよい。次いで、それぞれが特定のバッチおよび移動に対応する複数の奥行きマップが、奥行き推定器540によって生成され、マップ生成器550に渡されてよい。次いで、マップ生成器550は、空間の異なる部分のマップを表す複数の奥行きマップからの最も近い奥行き推定を統合して、空間に対する全体的な占有マップを埋めるように構成され得る。
【００５５】
システム構成要素510は、面倒な計算条件なくリアルタイムで占有マップを生成することを可能にするやり方で、「希薄な」画像処理と「稠密な」画像処理とを組み合わせるのが見られ得る。この場合、姿勢推定器530は、たとえば重要点または抽出された特徴を利用する処理といった「希薄な」処理を適用するのが見られ得る。これらの重要点および抽出された特徴は、空間をモデル化するために多くの体素を含み得る完全なボリュームモデルと比較して、数が限られている。抽出された特徴、照合された特徴、およびバンドル調整された特徴に基づく「希薄な」処理は、比較の「稠密な」姿勢推定技術よりも、処理がより迅速であるという利点を有する。参照画像を使用することによって決定され得る比較的「稠密な」奥行きマップでは、たとえばそれぞれの画素ごとに奥行き値が決定され、計算負荷が低減される。加えて、フィルタリングされた奥行き値または「準稠密な」奥行きマップを使用すると、処理をさらに迅速化する。奥行き値の正確さまたは確信度に基づく、フィルタリングされた奥行きマップまたは「準稠密な」奥行きマップは、質感がない領域を有する空間をマッピングする問題にさら対処する。これらの事例では、たとえば空室の壁といった質感がない領域には、奥行き推定のための情報量がほとんどない可能性がある。これにより、不正確な占有マップの原因になりかねない、信頼性の低い推定がもたらされる可能性がある。しかしながら、特定の事例では、そのような奥行き値はフィルタリングされ、そのため、占有マップを生成するのに使用されることはない。
【００５６】
1つの事例では、ナビゲーションエンジン510は画像収集インターフェースを介して一連の画像520を取得してよい。画像収集インターフェースは、以前の例のカメラデバイス110、160、410、415に結合されてよい。画像収集インターフェースは、USBまたはネットワークインターフェースなどのハードウェアインターフェースと、ソフトウェアドライバを実装するコンピュータプログラムコードとを含み得る。1つの事例では、ナビゲーションエンジン510は、たとえば生中継ビデオデータといったストリーミングデータに対して動作するように構成され得る。別の事例では、ナビゲーションエンジン510は、カメラデバイスに通信可能に結合されて、カメラデバイスから受け取られた画像520を、1つまたは複数の持続的データ記憶および非持続的データ記憶に記憶するように構成されてよく、たとえばデータのフレームはメモリにコピーされてよく、かつ/またはハードディスクドライブまたは固体記憶装置に記憶されてよい。別の事例では、画像520は、たとえばデータ記憶デバイスにおいてアクセス可能な1つまたは複数のファイルといった所与のファイルフォーマットで、ナビゲーションエンジン510の外部に記憶され得る。この場合、ナビゲーションエンジン510は、少なくとも、1つまたは複数のファイルからデータを読み取るために、ファイルシステムの一部分を使用するかまたは実装してよい。ナビゲーションエンジン510は、専用の処理電子回路を備えてよく、かつ/または少なくとも1つのコンピュータデバイスのプロセッサによって実行されるコンピュータプログラムコードによって実施されてもよい。図1Aおよび図1Bに示されたものなど事例では、ナビゲーションエンジン510は、1つまたは複数の組み込まれたコンピュータデバイスを備え得る。ナビゲーションエンジン510は、コンピュータ可読媒体にロードされたコンピュータプログラムコードを実行するようにメモリと連携して動作する少なくとも1つのプロセッサを備え得る。この媒体は消去可能なプログラム可能読取り専用メモリなどの固体記憶装置を備えてよく、コンピュータプログラムコードはファームウェアを含み得る。他の事例では、ナビゲーションエンジン510は、適切に構成されたシステムオンチップ、特定用途向け集積回路、および/または1つもしくは複数の適切
にプログラムされたフィールドプログラマブルゲートアレイを備え得る。1つの事例では、ナビゲーションエンジン510は、コンピュータプログラムコード、および/またはモバイルコンピュータデバイスにおける専用の処理電子回路、および/またはデスクトップコンピュータデバイスによって実装され得、この場合、ナビゲーションエンジン510は、ロボットデバイスから伝送された画像を受け取り、かつ/または生成された占有マップをロボットデバイスへ伝送するように構成され得る。分散コンピューティングの他の実装形態も、本明細書で説明された例から逸脱することなく使用され得る。1つの事例では、ナビゲーションエンジン510は、以前の事例と同様に、またはその代わりに、コンピュータプログラムコードを実行する1つまたは複数のグラフィック処理ユニットによって、全体的に、または部分的に実装され得る。特定の事例では、ナビゲーションエンジン510は、たとえばグラフィック処理ユニットの複数のプロセッサおよび/または各コア上で並行して実装される1つまたは複数の機能によって実装され得る。
【００５７】
物体占有を判定するための例示の方法
図6は、一例による、ロボットデバイスによる移動が可能な空間に対する物体占有を判定するための方法600を示す。この方法は、前述のナビゲーションエンジンの例または何らかの他の適切なコンピュータデバイスによって適用され得るものである。
【００５８】
ブロック610において、ロボットデバイスに結合された単眼の多方向カメラデバイスから画像データが得られる。以前の例のように、単眼の多方向カメラデバイスは、複数の視点または角度位置から画像データを取り込むように構成されている。画像データは、ロボットデバイスの移動面内に、床置きデバイスの場合には水平方向の不同といった不同がある、1組のビデオフレームなどの一連の画像を含む。
【００５９】
ブロック620において、画像データに対応する姿勢データが決定される。姿勢データは、単眼の多方向カメラデバイスの、たとえば6自由度までの回転パラメータ値および並進パラメータ値といった位置および配向を示す。特定の事例では自由度が抑制されることがあり、たとえば特定の実装形態では移動が床面に存在すると想定されてよく、そのためz軸に沿った並進はなく、回転はz軸のまわりに限定され得る。この例では、姿勢データは、画像内で検知された1組の特徴を使用して決定される。
【００６０】
ブロック630において、ブロック610からの画像データとブロック620からの姿勢データとのボリューム関数を評価することによって1組の奥行き値が推定される。この場合、それぞれの奥行き値が、空間における単眼の多方向カメラデバイスから物体までの距離を表す。
【００６１】
最後に、ブロック640において、奥行き値が処理されて空間に対する物体占有マップが埋められる。物体占有マップは、ロボットデバイスによって空間を移動するのに使用され得る。たとえば、1つの事例では、ロボットデバイスが、空間の占有されていない領域を通る移動経路を決定するために、たとえば占有されていると印を付けられた占有グリッドの領域を回避するために物体占有マップが使用され得る。1つの事例では、ロボットデバイスは掃除要素を備え得る。この場合、この方法は、物体占有マップを使用して、空間の占有されていない領域に対する掃除パターンを決定するステップを含んでよく、掃除パターンは、空間の内部で掃除要素が適用される予定の領域を示す。たとえば、掃除パターンは、自由空間の領域(たとえば占有グリッドにおいて占有されているとの印が付いていない領域)に掃除要素が適用される予定であることを示してよい。
【００６２】
図7は、特定の実装形態においてブロック620を実装するために使用され得る方法700を示すものである。
【００６３】
ブロック710では、ブロック610で得られた一連の画像の中の複数の画像の各々において1つまたは複数の特徴が検知される。1つの事例では、E. RostenおよびT. Drummond、「Machine learning for highspeed corner detection」、European Conference on Computer Vision (ECCV)の論文集、2006年、によって説明されているように、FAST (Features from Accelerated Segment Test:加速されたセグメント試験からの特徴)コーナー検出器を用いて特徴が検知され得る。これは、リアルタイムのビデオ処理に適する高速特徴検知をもたらす。特徴は、たとえばビデオデータの各フレーム、または画像の選択されたサブセット(ビデオ送りのxフレームごとなど)といった各画像において検知され得る。特徴は、たとえば、D. G. Lowe、「Distinctive image features from scale invariant keypoints」、International Journal of Computer Vision (IJCV)、60(2)、91〜110頁、2004年、によって説明されているように、スケール不変特徴変換(SIFT:scale-invariant feature transform)記述子を使用して記述され得る。他の特徴検知器および/または記述子が使用され得る。
【００６４】
ブロック720において、画像データの内部の1組の目印を決定するために、ブロック720から検知された特徴が複数の画像にわたって照合される。目印は、この場合は画像間の対応する点を含み、たとえばロボットデバイスが空間を動き回るとき、いくつかの連続した画像の中に取り込まれる空間の内部の物体の静的部分(たとえば家具の一部分のコーナー、壁の絵、または椅子の一部分)に関するものであり得る。このブロックは、特徴に基づく運動推定動作の繰返しを含んでよく、それぞれの新規の画像(たとえばビデオデータの新フレーム)を用いて、新規の画像の新たに検知された特徴を、既存の目印の特徴のリストまたはマップに対して照合する。一致が見つからず、たとえば検知された特徴が完全に新規の特徴を含む場合、リストまたはマップに、新規の目印のエントリが追加されてよい。特徴は、画像面における再投影誤差およびSIFT記述子距離に基づき、内部のフィルタリングループにおいて、現在の目印のリストまたはマップと照合されてよい。
【００６５】
ブロック730において、一連の画像に関する1組のカメラ姿勢推定および1組の目印位置推定が、連帯的に最適化される。次いで、図6のブロック620によって出力された姿勢データは、連帯的最適化の後に、1組のカメラ姿勢推定を含む。連帯的最適化は、少なくともカメラ姿勢推定と、目印位置と、それらの一致したそれぞれの特徴との間の制約を課す、目に見える部分を用いてエネルギー関数を最小化するステップを含み得る。エネルギー関数は、画像jの中に特定の特徴iが見られるかどうかを示す2進項を含み得る。エネルギー関数の目に見える部分は、予測された特徴値(たとえば画像jの特徴iに関連する予測された画素値)と、実際の特徴値(たとえば画像jの特徴iに関連する実際の画素値)との間の差を評価し得る。この差は、n個の特徴およびm個の画像にわたって評価され得る。予測された特徴値は、目印位置に回転マトリクスを適用したものから、並進ベクトルに回転マトリクスを適用したものを引いたカメラパラメータを使用して、投影に基づいて計算され得る。これは、初期の姿勢推定を使用して一連の画像におけるそれぞれの画像に対して適用されてよく、それぞれの初期の姿勢推定は、その画像に関する回転マトリクスおよび並進ベクトルの初期値を含む。目に見える部分は、差を正規化するためにHuberノルムを使用し得る。
【００６６】
実装形態において、最適化関数を抑制するために、ロボットデバイスからのオドメトリデータが使用され得る。オドメトリは、運動センサからのデータを使用して位置の経時変化を推定するものである。オドメトリデータは、ロボットデバイスの少なくとも1つの移動アクチュエータから生じてよく、たとえば図1Aおよび図1Bにおけるホイール115またはトラック165の位置を追跡する。最適化関数は、前述のエネルギー関数を含み得る。その場合、エネルギー関数は追加のオドメトリ部分(たとえばオドメトリの項)を有し得る。オドメトリ部分は、連続画像間の並進ベクトルの変化と、連続画像が取り込まれた時間に関連したオドメトリベクトルの変化との間の差を評価してよい。これは、並進ベクトルによって示される移動と、オドメトリデータによって示される移動との間の差を考えるのと等価であり、移動は、2つの連続画像の取り込みの間に生じるものである(たとえばビデオデータの画像間またはフレーム間の距離である)。この方法は、オドメトリが画像の取り込みと一緒に取り込まれなくても適用され得、高度な制御処理の必要性を低減する。それに加えて、またはその代わりに、オドメトリデータは、利用可能であれば、たとえば連帯的最適化の範囲内で1つまたは複数の姿勢推定を初期化するのに使用され得る。エネルギー関数における両方の項に重み付けするために、精度マトリクスからの標準偏差が使用されてよい。オドメトリ部分における差は、コーシーの損失関数を使用して重み付けされてよく、頑健になり得る。説明されたエネルギー関数は、反復するLevenberg-Marquardt関数を、自動微分によって計算されたヤコビアンとともに使用して最適化され得る。
【００６７】
一実装形態では、連帯的最適化はバンドル調整を含み得る。バンドル調整は、Bill Triggsら、「Bundle adjustment - a modern synthesis」、Vision algorithms: theory and practice、Springer Berlin Heidelberg、2000年、298〜372頁、によって説明されている方法の適合でよい。これは非線形最適化を使用し得る。
【００６８】
特定の事例では、特徴は、最初に推定照合によって照合されてよい。次いで、これらの推定照合に対して予備バンドル調整が適用され得る。次いで、推定照合は、その再投影誤差が大きすぎる場合には棄却されてよい。この選択および棄却は、最後のバンドル調整が遂行される前に複数回繰り返されてよい。1つの事例では、新規の目印を生成するために、画像が複数の(たとえば16の)パッチに分割される。次いで、それぞれのパッチにおいて、それぞれがすべての他のもの(たとえば10の画素)から離れたところにある少なくとも所与の画素数である、少なくとも特徴の所定数(たとえば5つ)が保たれるように、重要点の形態の特徴が選択されてよい。特別なこの動作は、追跡すべき高品質の特徴が一様に分布することに寄与し得る。新規の目印が、所与の距離(たとえば環境に依拠して7.5m)だけ離れて初期化されてよく、後に照合されるとき、正確な奥行きへとバンドル調整される。
【００６９】
図8は、特定の実装形態においてブロック630を実装するために使用され得る別の方法800を示すものである。方法800は、方法700とともに実装されてよく、または方法700から独立して実装されてもよい。
【００７０】
ブロック810において、ブロック610において得られた一連の画像から参照画像が決定される。1つの事例では、各画像が円または弧の移動経路に沿って取り込まれる場合には、参照画像は、円または弧の中間の近くから、参照画像の両側に対応する付加画像(たとえば決定された参照画像の前後に取り込まれたもの)が存在するように選択されてよい。他の事例では、たとえば全方向の運動および/または完全な円運動を使用するものでは、参照画像は、取り込み画像から無作為に選択されてよく、あるいは1つまたは複数の画像品質メトリクスに基づいて選択されてよい。ブロック820において、参照画像とオーバラップする1組の比較画像が決定される。オーバラップは、参照画像の画素の、たとえば異なる配向および/または位置からも撮像された空間の一部分からの画像データを包含している比較画像における、少なくとも1つの画素と定義され得る(しかし、参照画像と比較画像との間で画素の位置が異なる可能性がある)。ブロック830において、参照画像の画像値と1組の比較画像からの投影画像値との間の測光誤差が決定される。測光誤差は、正規化された画素測光誤差に基づくものでよい。
【００７１】
それぞれの投影画像値は、たとえば参照画像の視点への比較画像データの再投影といった、参照画像に関する姿勢データおよび比較画像に関する姿勢データを使用した、参照画像の視点への比較画像の投影を含む。ブロック840において、測光誤差を最小化する奥行き値が選択される。たとえば、比較画像の投影は、スカラの奥行き項dを含み得る。測光誤差は、参照画像から得られた画素値から、奥行き項、カメラパラメータおよび姿勢推定を使用して、(再)投影画素値を差し引くことを包含し得る。これは、Huberノルムを使用して正規化され、比較画像ごとに評価されてよく、全誤差は比較画像の組に関する誤差の合計である。測光誤差は、複数の好結果の(再)投影によって重み付けされてよい。奥行き値を選択するために、最小の測光誤差が見つかるまで、異なる奥行き値に関する1組の測光誤差dが検索されてよく、ここにおいて、画素に対して、最小の測光誤差に関連付けられる奥行き値が選択される。
【００７２】
方法800は、それぞれの体素が画像間の2乗測光誤差を蓄積する「コストボリューム」を使用するように見られ得る。方法800は、R. A. Newcombe、S. Lovegrove、およびA. J. Davison、「DTAM: Dense Tracking and Mapping in Real-Time」、International Conference on Computer Vision (ICCV)の論文集、2011年、によって説明されている方法の適合と見なされ得る。
【００７３】
特定の事例では、図8における800などの方法を適用するとき、滑らかで全面的に稠密な奥行きマップを得るために正規化コスト項が適用されてよい。この正規化は、Huber Rudin-Osher-Fatemi (ROF) Total Variation (TV) L1正規化器(regulariser)を使用して遂行され得る。しかしながら、これは、特定の画像領域が、奥行き推定に向けて悪く条件付けられる問題の原因となることがある。たとえば画像領域に質感がない場合、こうなる可能性がある。これらの画像領域は、正規化を適用しても奥行き値推定の信頼性が低くなる可能性がある。このことに基づき、特定の実装形態では、推定された奥行き値に対して1つまたは複数の分散測度が決定され、次いで、推定された奥行き値をフィルタリングするためにこれらの分散測度が使用され、物体占有マップは、フィルタリングされた奥行き値に基づいて埋められる。これは、次いで、たとえば奥行き値のサブセットのみが使用される「準稠密な」表現の形態といった、有益な、または正確な奥行き情報のみを抽出するように働く。これによって、正規化を遂行する必要性が緩和され得、したがって方法が簡単になって、計算条件が低減される。また、Huber ROF TV L1正規化器などの正規化器を使用すると、たとえば(空)部屋における開口部のない壁を表す、かなりの数の質感がない領域を有する空間において、性能低下の原因となり得、かつ/または過剰平滑化の原因となり得る。本明細書で説明されたような「準稠密な」手法を使用することにより、高度な確信度または信頼性を有する正確な(たとえば「信じられる」)測定値のみが使用される。これは、空室または開口部のない壁もしくは隔壁を有する部屋など、(たとえば画素変化によって表されるような)実質的な質感がない広い領域を有する空間の中でさえ優れた性能をもたらす。試験では、多くの環境が、信頼性の低い測定値を有する3次元奥行きマップのかなりの割合をもたらすことが見いだされた。この例の方法を使用することにより、これらの信頼性の低い測定値は占有マップを埋めるのに使用されない。
【００７４】
図8の例では、推定された奥行き値をフィルタリングするかまたは選択するステップは、参照画像に関して計算された画素の奥行き値のサブセットのみを選択するステップを含み得る。特定の事例では、分散測度は、参照画像に関連した画素の奥行き測定値の標準偏差を含む。これらの事例では、推定された奥行き値をフィルタリングするステップは、所定の閾値未満である標準偏差値を有する奥行き推定を使用するステップを含む。
【００７５】
図9Aは例示の画像部分900を示す。画像部分900は、本明細書で説明されたようなアンラップされたパノラマ画像(たとえば参照画像)の一部分を形成し得る。画像部分900は、第1の領域910および第2の領域920といった2つの強調された領域を有する。第1の領域910は、比較的滑らかで質感がなく(たとえば質感が低く)、デスクユニットの壁の後部の画像を取り込んだものである。そのため、第1の領域910は、正確な奥行き測定を生成しない可能性がある。第2の領域920は、正確な奥行き測定を生成するのに使用され得る細部(たとえば高い質感)を有する。図9Aにおいて、第2の領域920は、書棚の一部分の画像を取り込んだものである。これら2つの領域910、920は、それぞれのコストボリュームの奥行きサンプリングにおいて異なるエネルギー応答を有する。
【００７６】
1つの事例では、奥行き推定の標準偏差は、コスト関数にグラフを当てはめることによって推定され得る。図9Bは、図9Aの2つの領域910、920に関するコスト関数の出力930を示す。コスト関数値は、x軸上の奥行き値(たとえばd値またはz値)に対してy軸上にプロットされている。第1の領域910に関して第1の出力940が示されている。見られるように、第1の出力940は、約0.025から0.005へほぼ直線状に及ぶ比較的小さいコスト関数値を有する。次いで、第2の領域920に関して第2の出力950が示されている。見られるように、第2の出力950は第1の出力940と異なり、コスト関数は、約20のz値のあたりにくぼみがあって、0.1のコスト値のあたりへ変化する。
【００７７】
前述の方法では、奥行き値は、コスト関数の最小値を選択することによって推定され得る。図9Bに見られるように、比較的平坦な第1の出力940についてはこれが困難である。しかしながら、第2の出力950については、奥行き値20のあたりに明瞭な最小値がある。第1の出力940および第2の出力950の各々に放物線関数を当てはめることにより、奥行き推定に使用され得る最小値を決定すること、ならびに奥行き推定をフィルタリングするために使用され得る標準偏差を決定することが可能になる。その上、放物線関数を当てはめると、(たとえば放物線の最小値が連続値として選択され得るので)サブ画素の奥行き解明が可能になる。図9Bは、第1の出力940に対して当てはめられた第1の放物線945と、第2の出力に対して当てはめられた第2の放物線955とを示す。コスト関数の出力に対して2次関数を当てはめることにより、放物線の形状が、「a」パラメータの形態の関数(たとえばy=ax2+bx+c)で決定されてよい。これから、逆奥行き領域における画素の標準偏差は、「a」パラメータの平方根の逆数として計算され得る。次いで、これは、奥行き推定(たとえば当てはめられた2次関数の最小値に関連したサブ画素奥行き値)の平方で割ることにより、奥行き領域における標準偏差に変換され得る。この例では2次関数/放物線関数が使用されているが、他の例では、画像の性質に依拠して、代わりに他の適切な関数が当てはめられてよい。奥行き領域における標準偏差の演算に続いて閾値が適用されてよく、所与の閾値を超えた標準偏差を有する奥行き推定は、後の占有マップの決定については棄却される(たとえばフィルタリングされる)。1つの事例では、閾値適用は、画像領域の特定の割合(たとえば50%)を保つように適用されてよい。奥行き値(たとえば参照画像の画素に関連した奥行き値)のフィルタリングに続いて、たとえば前記画素のサブセットに対応する奥行き値のサブセットが残り、したがって、自由空間推測のためにより信頼できる「準稠密な」奥行きマップをもたらす。特定の実装形態では、奥行きが逆形式で表されてよく、かつ/または奥行き範囲が複数(たとえば1つの試験例では64)のコストボリュームビンの中へサンプリングされてよい。
【００７８】
上記で説明されたような奥行きマップは、図6のブロック640の処理のための基礎を形成し得る。1つまたは複数の奥行きマップを使用すると、占有マップを埋めるために、参照画像のカメラ姿勢のあたりの自由空間領域の量が推測され得る。1つの事例では、占有マップが、(たとえば図1A、図1B、図2Aおよび図2Bに示されたような)比較的小さいロボットデバイスにとって運転可能または移動可能な自由空間を推測するために使用される場合、ブロック640は、水平行の下の列の値を用いて開始してよい。これは、自由空間がテーブルまたは他のオーバーハングした家具の下に存在する場合に有益であり得る。水平軸の下に有効な奥行き測定値が見いだされない場合、カメラ高さではいくつかの垂直方向の壁に開口部がないものの、もっと上には有効な質感があるかもしれないという仮定のもとに、水平軸の上の列値が分析されてよい。全体の列における標準偏差の閾値適用において奥行き推定が残存しなければ、デフォルトまたはフェイルセーフの奥行き値(たとえば0.5m)が選択されてよい。デフォルトまたはフェイルセーフの値が選択されると、空間の関連する領域を本当に測定しなくてもよく、ロボットの幅に(たとえばローカルセンサによってもたらされるような)いくらかのマージンを足した安全な通路が、占有マップからその領域を除去し得ることを意味する。
【００７９】
試験の事例では、本明細書で説明されたグラフィック処理は、クーダ(CUDA:Compute Unified Device Architecture)に適合するグラフィック処理ユニットを使用して遂行された。一連の画像における画像の数は変化する可能性があり、たとえば30、100または160でよい。分散フィルタを使用する特定の試験例は、比較の画像勾配閾値適用よりも優れた結果をもたらし、後者では、出力がノイズで乱れ、奥行き推定のための実際の不同がない水平方向のエッジが残ることが判明した。他方では、分散フィルタの手法は、(コストボリュームにおけるより精細な奥行きサンプリングを伴って)カメラデバイスにより近い、垂直エッジを示す領域を、よりよく推定した。(たとえば有効な質感がない)空の部屋では、新しくペンキを塗られていても、単一の小さい円運動では、部屋の自由空間の50%超が試験マッピングでカバーされなかった。
【００８０】
特定の事例では、1つまたは複数の移動に対して複数の参照画像が選択され得る。これらの事例では、これらの参照画像に基づいて、複数の(フィルタリングされた)奥行きマップが生成され得る。これらの各々が、次いで、単一の占有マップへと統合されてよい。複数の移動を用いる事例では、たとえばすべての移動に関する一連の画像に関連して全体的に一貫した姿勢を決定するために、全体の道筋が全体的にバンドル調整されてよい。これにより、最終的に部屋全体にわたって自由空間をカバーするために、それぞれの移動位置において回復された自由空間情報を漸増的に使用することも可能になる。特定の事例では、空間の所定の量が発見されるまで、移動が繰り返されてよい。本明細書で説明された特定の例は、LADARシステムと比較して数分の1のコストの機器しか必要としないにもかかわらず、現実の状況においてうまく動作した。そのため、本明細書で論じられた手法は、(実質的な)ハードウェア変更の必要性なしで、カメラを有する既存のロボットデバイスの中に後付けされ得る。本明細書で説明された手法は、低コストの組込み型プラットフォーム上で動作可能であり、そのため、家庭用ロボットなどの、小さく低コストのロボットデバイスとともに使用するのに適する。(単眼の)RGBカメラとともに動作可能であることにより、本明細書の例は、実用的なコスト、サイズ、電力および/または分解能の制約の範囲内で使用され得る。
【００８１】
特定の事例では、全方向カメラが、広範囲の移動中に、広い視野をカバーし、対応の容易さをもたらす一方で、説明された例は、そのようなデバイスを使用するとき経験される可能性がある、比較的小さい角度分解能および較正することが困難な投影特性の影響を最小化するものである。特定の例は、多方向カメラに伴って見いだされた、斬新なジオメトリを使用する作業方法を実装することの課題も克服するものである。比較の方法は、複数のカメラから高解像度パノラマ画像を生成することを考慮に入れるものであるが、これらはロボットデバイスによるナビゲーションにそれほど有効ではない。本明細書で説明された特定の例では、特徴に基づく照合およびバンドル調整のプロシージャが、それぞれの画像の姿勢の正確な推定をもたらす。次いで、これらは、たとえば100〜160のフレームに基づいて全方向の光整合性(photoconsistency)コストボリュームを構築するために使用される。コストボリュームは、稠密な3次元頂点マップに変換され得る全方向奥行きマップを生成するために使用される。本明細書で説明された特定の例により、質感がない領域を有する空間における、屋内のパッシブな再構成が可能になり、正規化を適用しても奥行きの信頼性が低い、不完全に推定された領域を有する、全方向の奥行きマップ(および対応する稠密な3次元のジオメトリ推定)の問題が最小化される。これらの例では、奥行きの標準偏差は、コストボリュームデータと、抽出専用の準稠密な高品質の情報に対して適用される閾値とから推定され得る。このプロシージャにより、さらに、正規化が不要になる。屋内のナビゲーションに用いるために、この推定に、2次元への低減および可視性推論が続いてよく、2次元の規則的なグリッドにおけるセルの占有が推定され得る。
【００８２】
特定の比較の方法によって奥行き推定が可能になるが、これらは、一般的には、奥行きカメラ、レーザスキャナまたは立体視システムなどの高度なハードウェアを必要とする。本明細書で説明された特定の例は、標準的なRGBのパッシブなカメラデバイスを使用するナビゲーションのために情報を提供するという課題を克服するものである。その上、ほとんどの比較の方法は、組込み型コンピュータデバイスにとって、リアルタイムで実装するのが不可能ではないにしても困難である。対照的に、本明細書で説明された特定の例は、リアルタイムのマッピングおよびナビゲーションに使用され得る正確な占有マップを提供するものである。
【００８３】
例示の機械可読命令
本明細書で説明された特定のシステム構成要素および方法は、非一時的記憶媒体に記憶可能なコンピュータプログラムコードによって実装され得る。図10は、コンピュータ可読記憶媒体1020からデータを検索するように構成された少なくとも1つのプロセッサ1010を含むシステムの特定の例1000を示す。このシステムは、上記で説明されたような可動デバイスまたはロボットデバイスの一部分を備え得る。コンピュータ可読記憶媒体1020には、1組のコンピュータ可読命令1030が記憶されている。この例のコンピュータ可読記憶媒体1020は、画像データのフレーム1040および占有マップ1050を記憶するようにも構成されている。占有マップ1050は、図3に概略的に示されたものなどの占有マップを含み得る。他の例では、コンポーネント1030、1040および1050は分離した媒体に記憶され得る。使用において、少なくとも1つのプロセッサ1010は、命令1030を処理するためにメモリにロードするように構成されている。命令1030は、少なくとも1つのプロセッサ1010に、一連のアクションを遂行させるように構成されている。これらのアクションには、プロセッサが、命令1060において、単眼の多方向カメラから一連のフレーム1040を受け取るものが含まれる。この例では、多方向カメラは、空間に対する移動面内の別々の角度位置において取り込まれた一連のフレームの各々の画像データを取り込むように構成されている。これらのアクションには、プロセッサが、命令1065において、一連のフレームにわたって検知された特徴を照合することにより、それぞれのフレームに関してカメラの位置および配向の推定を決定するものがさらに含まれる。命令1070は、次いで、一連のフレームにわたって、カメラの位置および配向の推定ならびに検知された特徴をバンドル調整して、カメラの位置および配向の推定の最適化された組を生成することを含む。
【００８４】
バンドル調整に続いて、命令1075が、一連のフレームから参照フレームを決定するアクションをもたらす。次いで、命令1080が、参照フレームの画素値と、参照フレームとオーバラップする1組の比較画像からの投影画素値との間の測光誤差関数を評価するアクションをもたらす。この場合、前記投影画素値は、カメラからの物体距離と、カメラの位置および配向の推定の最適化された組との関数である。命令1085によって、プロセッサ1010は、評価された測光誤差関数に基づき、参照フレームの異なる画素列に対応する異なる角度位置に対する物体距離を決定するように構成される。次いで、プロセッサは、命令1090によって、空間に対する移動面内の移動可能な領域のマップを、決定された物体距離に基づいて生成するように命令される。そのため、機械可読命令1030は、たとえばロボットデバイスのファームウェアの一部分として、前述の特定の例を遂行するように使用され得る。
【００８５】
特定の事例では、単眼の多方向カメラが全方向カメラを備え、各フレームが、アンラップされた全方向画像を含む。全方向カメラはパノラマ環状レンズを備え得る。一連のフレームは、空間の内部で円周方向に移動する可動ビデオカメラから受け取られ得る。
【００８６】
上記の例は例示として理解されるべきである。さらなる例が構想される。1つの事例では、ロボットデバイスは、上記の例で説明された(RGB)画像センサに加えて奥行きセンサを備え得る。奥行きセンサは、単眼の多方向カメラデバイスの一部分を備え得る。この場合、一連のフレームが画像データおよび奥行きデータを含み得る。次いで、奥行きデータは、画像データとともに、奥行き値を推定するため、すなわち物体距離を決定するために使用され得る。たとえば、奥行きデータは、ボリューム関数の内部の追加の制約として使用されてよい。奥行きセンサは、説明された単眼の画像ばかりでなく、奥行き画像または点クラウドも供給するように使用され得る。任意の一例に関連して説明された任意の特徴は、単独で使用されてよく、説明された他の特徴と組み合わせて使用されてもよく、また、例のうち任意の他のものの1つまたは複数の特徴、あるいは例のうち任意の他のものの組合せの1つまたは複数の特徴と組み合わせて使用されてもよいことを理解されたい。その上、上記で説明されていない等価物および修正形態も、添付の特許請求の範囲において定義される本発明の範囲から逸脱することなく採用され得る。
【符号の説明】
【００８７】
100  試験ロボットデバイス105の第1の例
105  試験ロボットデバイス
110  単眼の多方向カメラデバイス
115  移動アクチュエータ
120  ナビゲーションエンジン
125  フリーホイール
150  ロボットデバイス155の別の例
155  掃除ロボットデバイス
160  カメラデバイス
165  移動アクチュエータ
170  ナビゲーションエンジン
175  フリーホイール
180  掃除要素
185  ローラーもしくはブラシ
200  ロボットデバイス205の運動
205  ロボットデバイス
210  空間
220-A  物体
220-B  物体
220-C  物体
220-D  物体
230  点
240  移動
250  ロボットデバイス205の運動
255  空間
260  隔壁
270  移動
280  移動
290  移動
300  占有マップ
310  多次元グリッド
320  セル
330-A  網掛けセル
330-B  網掛けセル
330-C  網掛けセル
330-D  網掛けセル
400  処理パイプライン
410  カメラデバイス
415  カメラデバイス
420  画像
425  アンラップされた全方向画像
430  ナビゲーションエンジン
435  ナビゲーションエンジン
440  占有マップ
450  処理パイプライン
460  未加工の全方向画像
470  画像プロセッサ
480  カメラ較正器
485  較正パターン
490  較正パターンの回復された表現
500  ナビゲーションエンジン510の一例
510  ナビゲーションエンジン
520  一連の画像
530  姿勢推定器
540  奥行き推定器
550  マップ生成器
560  占有マップ
900  画像部分
910  第1の領域
920  第2の領域
930  コスト関数の出力
940  第1の出力
945  第1の放物線
950  第2の出力
955  第2の放物線
1000  システムの特定の例
1010  プロセッサ
1020  コンピュータ可読記憶媒体
1030  コンピュータ可読命令
1040  画像データのフレーム
1050  占有マップ
1060  命令
1065  命令
1070  命令
1075  命令
1080  命令
1085  命令
1090  命令
【図１Ａ】
0006785860.tif 000002
【図１Ｂ】
0006785860.tif 000003
【図２Ａ】
0006785860.tif 000004
【図２Ｂ】
0006785860.tif 000005
【図３】
0006785860.tif 000006
【図４Ａ】
0006785860.tif 000007
【図４Ｂ】
0006785860.tif 000008
【図５】
0006785860.tif 000009
【図６】
0006785860.tif 000010
【図７】
0006785860.tif 000011
【図８】
0006785860.tif 000012
【図９Ａ】
0006785860.tif 000013
【図９Ｂ】
0006785860.tif 000014
【図１０】
0006785860.tif 000015