(57)【特許請求の範囲】
【請求項１】
移動ロボット装置であって、
オドメトリ測定値を生成するように構成された第１のセンサセットと、
前記移動ロボット装置の進行方向測定値を生成するように構成された第２のセンサセットと、
画像を取り込むように構成されたカメラと、
前記第１及び第２のセンサセットと、前記カメラとに通信可能に結合されたコントローラとを備え、
前記コントローラは、選択的に第１のモード及び選択的に第２のモードで動作するように構成され、
前記第１のモードでの動作中、前記コントローラは、少なくとも前記オドメトリ測定値から推定された進行方向と、前記第２のセンサセットにより生成された前記進行方向測定値とに基づいて、カーペットドリフトを推定するように構成され、
前記第２のモードでの動作中、前記コントローラは、少なくとも前記カメラが取り込んだ画像のうちの２つ以上の画像に基づいて、前記移動ロボット装置の動きの視覚測定値を生成するように構成され、かつ前記コントローラは、少なくとも前記オドメトリ測定値と前記動きの視覚測定値とに基づいて、カーペットドリフトを推定するように構成された移動ロボット装置。
【請求項２】
請求項１の移動ロボット装置において、
差動的に駆動される駆動輪を更に備え、
前記コントローラは、前記駆動輪の絶対差動回転が閾値よりも大きいときに、前記第１のモードで動作するように構成された移動ロボット装置。
【請求項３】
請求項１の移動ロボット装置において、
前記コントローラは、前記動きの視覚測定値に関連付けられる不確実性を計算するように構成され、かつ前記コントローラは、前記不確実性が閾値を下回っていれば、前記第２のモードで動作するように構成された移動ロボット装置。
【請求項４】
請求項１の移動ロボット装置において、
前記移動ロボット装置にカーペット敷きの表面を横切らせるように構成されたアクチュエータシステムを更に備えた移動ロボット装置。
【請求項５】
請求項４の移動ロボット装置において、
前記アクチュエータシステムは、回転可能な車輪を有し、前記第１のセンサセットは、前記アクチュエータシステムの前記車輪の回転を感知するように構成され、前記第２のセンサセットは、前記移動ロボット装置の回転を感知するように構成されたジャイロスコープセンサを有する移動ロボット装置。
【請求項６】
請求項５の移動ロボット装置において、
前記コントローラは、少なくとも感知された前記車輪の回転から推定される進行方向と、感知された前記移動ロボット装置の回転から推定される進行方向との比較結果に基づいて、前記カーペットドリフトを推定するように構成された移動ロボット装置。
【請求項７】
請求項４の移動ロボット装置において、
前記コントローラは、前記アクチュエータシステムを制御して、前記移動ロボット装置を少なくとも約１８０度回転させる操作を実行させるように構成され、かつ前記コントローラは、少なくとも前記操作中に感知された前記アクチュエータシステムの駆動特性と前記移動ロボット装置の運動特性との複数の比較結果に基づいて、前記カーペットドリフトを推定するように構成された移動ロボット装置。
【請求項８】
請求項７の移動ロボット装置において、
前記コントローラは、少なくとも前記操作中の進行方向の変化に対する全ドリフト量の比に基づいて、前記カーペットドリフトの大きさを推定するように構成された移動ロボット装置。
【請求項９】
請求項４の移動ロボット装置において、
前記コントローラは、少なくとも障害物を検出したことに対する操作の間に感知された前記アクチュエータシステムの駆動特性と前記移動ロボット装置の運動特性との複数の比較結果に基づいて、推定された前記カーペットドリフトを更新するように構成された移動ロボット装置。
【請求項１０】
請求項４の移動ロボット装置において、
前記アクチュエータシステムは、回転可能な車輪を有し、前記第１のセンサセットは、前記アクチュエータシステムの前記車輪の回転を感知するように構成され、
前記第２のセンサセットは、２つ以上の画像を取り込むように構成されたイメージセンサを有し、
前記コントローラは、前記イメージセンサが取り込んだ２つ以上の画像を比較することによって前記移動ロボット装置の運動特性を推定するように構成された移動ロボット装置。
【請求項１１】
請求項１０の移動ロボット装置において、
前記コントローラは、前記イメージセンサが取り込んだ２つ以上の画像のそれぞれに共通の特徴を検出するように構成され、かつ前記コントローラは、少なくとも前記イメージセンサが取り込んだ２つ以上の画像において検出された前記共通の特徴の相対位置の変化を比較することに基づいて、前記移動ロボット装置の進行方向を推定するように構成された移動ロボット装置。
【請求項１２】
請求項１の移動ロボット装置において、
前記コントローラは、前記２つ以上の画像から特徴を抽出し、前記２つ以上の画像から抽出した特徴をマッチングさせて、前記２つ以上の画像に関してマッチングした特徴の動きに基づいて、前記動きの視覚測定値を生成するように構成された移動ロボット装置。
【請求項１３】
請求項１２の移動ロボット装置において、
前記コントローラは、前記マッチングした特徴の動きと、前記オドメトリ測定値によって予測された動きとの差が閾値より低いことを受けて、前記動きの視覚測定値を生成するように構成された移動ロボット装置。
【請求項１４】
請求項１の移動ロボット装置において、
前記コントローラは、少なくともカルマンフィルタを用いて動きの視覚測定値を処理することに基づいて、前記カーペットドリフトを推定するように構成された移動ロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１２年６月８日に出願された米国仮出願第６１／６５７３９９号「差動センサ及び視覚測定を用いたカーペットドリフトの推定」の優先権の利益を主張するものであり、そのすべてが参照により組み込まれる。
【０００２】
本開示は、ロボットシステムに関し、特に表面を横切るように構成された移動ロボットシステムに関する。
【背景技術】
【０００３】
自律型ロボットは、人間による継続的な誘導なしに、環境において任意のタスクを実行することができるロボットである。ロボットの自律性の程度やその様式は様々である。例えば、自律型ロボットは、１又は複数のタスクを実行するために、人間による継続的な誘導なしに、整理されていない環境の作業表面を横断することができる。別の例では、自律型ロボットは、整理された環境において、あるいは人間の監督下で、タスクを実行することができる。家庭、オフィス及び／又は消費者向けのロボット工学分野においては、移動ロボットが真空掃除、床洗浄、巡回、芝刈り及びその他同様のタスクといった任務を実行するために採用されている。
【０００４】
しかしながら、従来の自律型ロボットの多くは、ロボットの位置及び／又は姿勢を適切又は正確に判定せず、また、ロボットが所定のルートにいること、及び／又はロボットが指定された位置及び／又は姿勢にあることを確認するためにロボット自身の動きを適切にコントロールしない。
【発明の概要】
【０００５】
以下に、１又は複数の態様を、その態様の基本的な理解のために簡潔に要約する。この要約は、検討される全ての態様についての広範な概要ではなく、全ての形態の重要又は不可欠な要素を特定したり、一部あるいは全部の態様の範囲を定義したりするものではない。その唯一の目的は、後に記載する詳細な説明の導入部として、１又は複数の態様の概念を簡潔に述べることである。特に、検討される態様には、ここに記載される１又は複数の態様の一部又は全部の概念を具体化する方法及び非一時的コンピュータ可読媒体が含まれる。
【０００６】
カーペット等の表面を横切るロボットが経験するカーペットドリフト等のドリフトを推定し、そのカーペットドリフト等のドリフトを補償するシステム及び方法を記載する。別の実施例において、ここに記載のシステム及び方法は、傾斜面や不安定な表面（例えば砂面や汚れた面）によるモーションドリフト及び／又はロボットを押し進めたり引き戻したりする風によるモーションドリフト等の、表面を横切るロボットの動きに影響を与えるその他の作用によるドリフトを推定するように構成されていてもよい。
【０００７】
いくつかの実施形態では、ロボット装置について検討する。ロボット装置は、本体と、本体に表面を横切らせるように構成されたアクチュエータシステムとを備えている。ロボット装置は、アクチュエータシステムの駆動特性を感知するように構成された第１のセンサセットを更に備えていてもよい。ロボット装置は、本体の運動特性を感知するように構成された第２のセンサセットを更に備えていてもよい。第１のセンサセットは、第２のセンサセットと異なる種類のセンサであってもよい。ロボット装置は、少なくとも第１のセンサセットによって感知された駆動特性と、第２のセンサセットによって感知された運動特性とに基づいて、カーペットドリフト等のドリフトを推定するコントローラを更に備えていてもよい。一実施形態において、アクチュエータシステムは、回転可能な車輪を有していてもよく、第１のセンサセットは、アクチュエータシステムの車輪の回転を感知するように構成されている。第２のセンサセットは、本体の回転を感知するように構成されたジャイロスコープセンサを有していてもよい。一実施形態において、アクチュエータシステムは、回転可能な車輪を有し、第１のセンサセットは、アクチュエータシステムの車輪の回転を感知するように構成されている。第２のセンサセットは、本体の回転を感知するように構成されたジャイロスコープセンサを有していてもよい。コントローラは更に、少なくとも感知された車輪の回転から推定される進行方向と、感知された本体の回転から推定される進行方向との比較結果に基づいて、カーペットドリフトを推定するように構成されている。一実施形態において、コントローラは更に、アクチュエータシステムを制御して、本体を少なくとも約１８０度回転させる操作を実行させるように構成されている。コントローラは更に、少なくとも操作中に感知された駆動特性と運動特性との複数の比較結果に基づいて、カーペットドリフトを推定するように構成されている。一実施形態において、コントローラは更に、少なくとも操作中の進行方向の変化に対する全ドリフト量の比に基づいて、カーペットドリフトの大きさを推定するように構成されている。一実施形態において、コントローラは更に、少なくとも障害物を検出したことに対する操作の間に感知された駆動特性と運動特性との複数の比較結果に基づいて、推定されたカーペットドリフトを更新するように構成されている。一実施形態において、アクチュエータシステムは、回転可能な車輪を有し、第１のセンサセットは、アクチュエータシステムの車輪の回転を感知するように構成されている。第２のセンサセットは、２つ以上の画像を取り込むように構成されたイメージセンサを有する。コントローラは、２つ以上の画像を比較することによって運動特性を推定するように構成されている。一実施形態において、コントローラは更に、２つ以上の画像のそれぞれに共通の特徴を検出するように構成され、コントローラは更に、少なくとも２つ以上の画像において検出された共通の特徴の相対位置の変化を比較することに基づいて、本体の進行方向を推定するように構成されている。
【０００８】
いくつかの実施形態では、ロボット装置について検討する。ロボット装置は、回転可能な左駆動輪及び回転可能な右駆動輪を備えている。ロボット装置は、当該ロボット装置が表面を移動するように、駆動信号に基づいて、左駆動輪と右駆動輪とを差動的に回転させるように構成された駆動サブシステムを更に備えている。ロボット装置は、左駆動輪及び右駆動輪の回転のオドメトリ測定値を生成するように構成された第１のセンサセットを更に備えている。ロボット装置は、当該ロボット装置の進行方向測定値を生成するように構成された第２のセンサセットを更に備えている。ロボット装置は、駆動信号を生成して、ロボット装置に進行方向角度の変更を伴う操作を実行させるように構成されたコントローラを更に備えている。コントローラは、少なくとも操作中の進行方向の変化の推定値と、操作中の進行方向測定値の変化とに基づいて、カーペットドリフト等のドリフトを推定するように構成されている。進行方向の変化の推定値は、操作中のオドメトリ測定値に基づく。一実施形態において、コントローラは更に、少なくとも進行方向測定値が少なくとも約１８０度の進行方向の変化を示すまで、操作を継続するように構成されている。コントローラは更に、操作中に複数のオドメトリ測定値を収集するように構成されている。コントローラは更に、操作中に複数の進行方向測定値を収集するように構成されている。コントローラは更に、少なくとも複数のオドメトリ測定値と複数の進行方向測定値との比較結果に基づいてカーペットドリフトを推定するように構成されている。一実施形態において、コントローラは更に、少なくとも部分的に、障害物に遭遇したことを受けて、カーペットドリフトを推定するように構成されている。一実施形態において、コントローラは更に、前回の推定が行われた後に、閾値の距離よりも長い距離を移動したことを受けて、カーペットドリフトを推定するように構成されている。
【０００９】
いくつかの実施形態では、移動ロボット装置について検討する。移動ロボット装置は、オドメトリ測定値を生成するように構成された第１のセンサセットを備えている。移動ロボット装置は、当該移動ロボット装置の進行方向測定値を生成するように構成された第２のセンサセットを備えている。移動ロボット装置は、画像を取り込むように構成されたカメラを備えている。移動ロボット装置は、第１及び第２のセンサセットと、カメラとに通信可能に結合されたコントローラを備えている。コントローラは、選択的に第１のモード及び選択的に第２のモードで動作するように構成されている。第１のモードでの動作中、コントローラは、少なくともオドメトリ測定値から推定された進行方向と、第２のセンサセットにより生成された進行方向測定値とに基づいて、カーペットドリフト等のドリフトを推定するように構成されている。第２のモードでの動作中、コントローラは、少なくともカメラが取り込んだ画像のうちの２つ以上の画像に基づいて、移動ロボット装置の動きの視覚測定値を生成するように構成されている。コントローラは、少なくともオドメトリ測定値と動きの視覚測定値とに基づいて、カーペットドリフトを推定するように構成されている。移動ロボット装置は、差動的に駆動される駆動輪を更に備えている。コントローラは、駆動輪の絶対差動回転が閾値よりも大きいときに、第１のモードで動作するように構成されている。一実施形態において、コントローラは、動きの視覚測定値に関連付けられる不確実性を計算するように構成され、かつコントローラは、不確実性が閾値を下回っていれば第２のモードで動作するように構成されている。
【００１０】
図面及び関連する記載は、発明の具体的な実施形態を説明するためのものであって、これを限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】ロボット装置の上面図を示す概略図である。
【図２】図１のロボット装置のアクチュエータシステムの一実施形態を示す概略図である。
【図３】図１のロボット装置のコントローラの一実施形態を示す概略図である。
【図４】カーペットドリフトを推定する方法のフロー図である。
【図５】少なくともオドメトリセンサ及びジャイロスコープセンサの測定値に基づいてカーペットドリフトを推定する方法の一実施形態を示すフロー図である。
【図６】少なくともオドメトリセンサ及びイメージセンサの測定値に基づいてカーペットドリフトを推定する方法の一実施形態を示すフロー図である。
【図７】動きの視覚測定値を測定する方法の一実施形態を示すフロー図である。
【図８】統計フィルタを実行する方法の一実施形態を示すフロー図である。
【発明を実施するための形態】
【００１２】
カーペットドリフト等のドリフトを推定する方法及びシステムを記載する。実施形態は、掃除ロボットが経験するカーペットドリフトを推定するシステム及び方法に関して記載されるが、例えばカーペットが敷かれた面を横断することができる移動ロボット装置等の、その他の種類の装置にも適用可能である。カーペットという用語は、織目又は起毛のあるラグやその他の床敷物を含む。また、ここに記載される実施形態は、例えば傾斜面や不安定な表面（例えば砂面や汚れた面）及び／又は風力（例えば、ロボットを押し進めたり引き戻したりする比較的一定又は緩やかに経時変化する風）によるモーションドリフト等の、カーペットの作用以外の作用によるドリフトの推定にも適用可能である。
【００１３】
カーペットの製造方法においては、カーペットの繊維が特定の方向に曲がるように繊維を揃えていることがある。この繊維がバイアスされる方向を、カーペットの織目方向又は起毛方向と称する。織目方向による作用は、例えば、カーペットに掃除機をかけることや、手をカーペットの上で滑らせることのような、物体をカーペットの上で移動させることによって、経験することができる。物体が織目方向に沿ってカーペットを横切ると、カーペットの繊維はその移動方向に倒れる傾向があるので、ロボットの織目方向への移動を助ける。しかし、物体が織目方向に逆らって移動すると、カーペットの繊維は立ち上がり、ロボットの移動の抵抗となったり、その移動を抑制したりする。
【００１４】
動いている物体に作用する、カーペットの織目方向に左右される力は、その物体の動作に影響を及ぼしうる。例えば、カーペットの織目の影響により、自律型清掃装置の軌道が乱れることがある。物体の動作に対するカーペットの織目の作用を、カーペットドリフトと称する。カーペットドリフトは、大きさと方向の両方を有するカーペットドリフトベクトルで表される。カーペットドリフトベクトルは、カーペットの特性である。
【００１５】
カーペットドリフトは、自律型ロボットに問題をもたらしうる。とりわけ、自律型ロボットは、ホイールエンコーダ、ジャイロスコープ、加速度計及び／又は同等のセンサを用いて求められる自身の位置及び／又は向きの推定値に左右される。例えば、ホイールエンコーダセンサは、ある期間中のロボット装置の車輪の回転量を感知することで走行距離を求めるために用いられる。しかしながら、自律型ロボットがカーペットを敷かれた環境を航行する場合、カーペットの織目に対するロボットの動きに基づいて、ロボットの車輪がカーペットの繊維を立ち上げたり倒したりする。特に、カーペットの織目に沿って繊維が倒れたときは、カーペットは、ロボットをカーペットの織目の方向に推進又は案内する。その結果、ロボットがカーペットの織目の方向に移動すると、ロボットの走行距離は、車輪の回転に基づいて求められた距離よりも長くなってしまう。一方で、直立している繊維の上をカーペットの織目に逆らってロボットが走行すると、ロボットの走行距離は、車輪の回転に基づいて求められた距離よりも短くなってしまう。いずれの場合においても、実際の走行距離は、自律航法に用いられるホイールエンコーダ及び同等のセンサ等のセンサで測定される距離と異なってしまう。
【００１６】
特定のカーペットの環境において、カーペットドリフトベクトルの方向は固定又は一定にすることができる一方で、ドリフト量は走行距離に比例するか、ある程度関連している。したがって、ロボットがカーペットを横断するにつれて、位置推定エラーが経時的に蓄積される可能性がある。このため、ロボットは環境の正確なマップを構築することができなくなってしまう。あるいは、掃除等のタスクを実行するために環境を効率良く正確に、かつ／又は安全に走行することができなくなってしまう。
【００１７】
カーペットドリフトの推定値は、オドメトリセンサ（例えば、一体型差動モーションセンサ）では説明されないロボット装置の動きに全体的又は部分的に基づいて、任意に生成することができる。特に、カーペットドリフトは、２種類以上のセンサ測定値を組み合わせることによって任意に推定してもよい。一実施形態において、あるセンサからの測定値は、任意の動き又は命令された動きを示すことができ、別のセンサ（例えば種類の異なるセンサ）からの測定値は、実際の動きを示すことができる。例えば、一実施形態において、オドメトリセンサ（例えば、車輪の回転量を測定する１又は複数のセンサ）は、測定又は命令された車輪の回転に基づいて、任意の動き又は命令された動きを示すことができる。追加又は代替として、車輪の速度、車輪の加速度及び／又はモータ制御信号等の、アクチュエータシステムのその他の特性を用いてもよい。ロボット装置の向き又は進行方向の変化のような、ロボット装置の実際の動きは、例えば、ジャイロスコープセンサ、イメージセンサ、あるいは同様のセンサ又はその他のセンサの組み合わせを用いることによって推定してもよい。カーペットドリフト（又はカーペットドリフトベクトル）は、任意の動きと実際の動きとを比較することによって推定してもよい。
【００１８】
カーペットドリフトの推定値を用いて、動きの推定を改良又は修正してもよい。例えば、推定されたカーペットドリフトベクトルは、カーペットの織目による影響を補償するためにモータコントローラと共に用いてもよく、かつ／又はオドメトリデータを調整する修正項を生成するために用いてもよい。カーペットドリフトの推定値を用いて、ロボットがカーペット敷きの床面にいるのか、あるいはカーペットが敷かれていない床面にいるのかを推定してもよい。
【００１９】
図１は、ロボット装置１００の上面図を示す概略図である（ロボット装置の内部構成要素は模式的に示されており、ロボット装置１００内での内部構成要素の実際の位置又は場所を図示するものではない）。ロボット装置１００は、本体１０２、アクチュエータシステム１０４、コミュニケーションバス１０６、コントローラ１０８、第１のセンサセット１１０、第２のセンサセット１１２、第３のセンサセット１１４及び清掃機構１１６を有している。
【００２０】
本体１０２は、ロボット装置１００の外面を形成する構造、ならびにシャーシ等の種々の内部構造を有していてもよい。したがって、本体１０２は、アクチュエータシステム１０４、コミュニケーションバス１０６、コントローラ１０８、１又は複数の第１のセンサセット１１０、１又は複数の第２のセンサセット１１２、１又は複数の第３のセンサセット１１４及び清掃機構１１６を収納するように構成されていてもよい。センサセットの数は、これより少なくてもよいし、多くてもよい。
【００２１】
ロボット装置１００の外面は、いずれの適用可能な形状であってもよく、例えば、矩形状又は三角形状等の、上面図において略直線状の端部を有する形状や、円形状、楕円形状及びＤ字状等の、１又は複数の実質的に曲線状又は円弧状の端部を有する形状であってもよいが、これらに限定されない。しかしながら、本体１０２は、その他の形状であってもよい。動作時において、外面は壁等の障害物に接触することがある。したがって、本体１０２の外面は、ロボット装置１００がそのような障害物に沿って摺動可能となるような摩擦係数を有する材料から形成された部分を有していてもよい。
【００２２】
アクチュエータシステム１０４は、本体１０２に、例えばカーペット敷きの床面及び／又はカーペットが敷かれていない床面等の表面を横切らせるように構成されている。例えば、アクチュエータシステム１０４は、コントローラ１０８からコミュニケーションバス１０６を介して、例えば１又は複数の車輪を表面で回転駆動させること等の、アクチュエータシステム１０４が発生させたアクチュエータの動作又は力を制御するための駆動コマンドを受け取ることができる。アクチュエータシステム１０４及び本体１０２は、発生したアクチュエータの動作又は力によって本体１０２が移動するように、適切に作用するように結合されていてもよい。アクチュエータシステム１０４は、本体１０２を移動させるための力を発生させる適切な数のモータ、車輪、トランスミッション及び同様のアセンブリを有していてもよい。アクチュエータシステム１０４については、図２を参照しながら更に詳細に後述する。
【００２３】
コミュニケーションバス１０６は、アクチュエータシステム１０４と、コントローラ１０８と、第１、第２及び第３のセンサセット１１０，１１２，１１４とを通信可能に相互接続するように構成されている。コミュニケーションバス１０６は、電気信号、光信号及び／又は機械信号を伝達することができる。図示された実施形態では、コミュニケーションバス１０６を共有バスとして記載しているが、当業者においては、例えば個々のアクチュエータシステム１０４、コントローラ１０８及び第１、第２及び第３のセンサセット１１０，１１２，１１４の間、又はこれらのサブグループ間における追加又は代替の通信チャネルのような、その他の構成が実施可能であることは理解されるだろう。
【００２４】
コントローラ１０８は、センサ１１０，１１２，１１４からのデータ／測定値を入力として受信し、カーペットドリフト等のドリフトを推定するように構成されている。例えば、コントローラ１０８は、コミュニケーションバス１０６から受信した、少なくとも第１のセンサセット１１０によって感知された駆動特性と、第２のセンサセット１１２によって感知された運動特性とに基づき、カーペットドリフト等のドリフトを推定するように構成されている。駆動特性の例としては、車輪の回転位置、回転速度、回転加速度及び／又は同様の、命令された動き又は任意の動きを示すアクチュエータの測定値が挙げられるが、これに限定されない。例えば、ロボット装置１００がアクチュエータシステム１０４の車輪によって移動する場合、ロボット装置１００の任意の変位量は、オドメトリによって（例えば、車輪の回転量及び車輪の直径に基づいて）推定される。運動特性の例としては、本体１０２の回転特性（例えば、角度方位、角速度及び／又は角加速度）、経路角（例えば、部屋座標におけるロボット装置１００の速度ベクトルの角度又はその変化）及び／又はロボット装置１００の実際の動きを示す同様の測定値が挙げられるが、これに限定されない。例えば、ジャイロスコープセンサは、ロボット装置１００の方位の回転変化の測定値を得ることができる。更に別の例として、イメージセンサは、装置の経路角に関連する測定値を得ることができる。
【００２５】
更に、コントローラ１０８は、アクチュエータシステム１０４及び／又は清掃機構１１６の動作を制御するように構成されていてもよい。例えば、コントローラ１０８は、アクチュエータシステム１０４にコミュニケーションバス１０６を介して制御信号を送り、ロボット装置１００を任意の軌道で移動させることができる。また、いくつかの実施形態において、コントローラ１０８は、制御信号をアクチュエータシステム１０４に送るか、又は直接清掃機構１１６に送ることにより、清掃機構１１６に関与することができる。コントローラ１０８については、図３を参照しながら更に詳細に後述する。
【００２６】
第１のセンサセット１１０は、アクチュエータシステム１０４の駆動特性を感知するように構成されている。例えば、第１のセンサセット１１０は、アクチュエータシステム１０４に結合されていてもよい。特定の一実施形態において、第１のセンサセット１１０は、アクチュエータシステム１０４の１又は複数の車輪に結合されるリニアエンコーダ又は回転エンコーダ等の、１又は複数のオドメトリセンサ、あるいはアクチュエータシステム１０４に供給された制御信号又は動力信号を測定又は収集するセンサ又はモジュールを有していてもよい。これらの測定値により、オドメトリ又は自律航法によってロボット装置１００の動きを推定する方法が提供される。しかし、推定値は、例えばカーペットドリフトによって、実際の動きとは異なることがある。
【００２７】
第２のセンサセット１１２は、本体１０２の運動特性を感知するように構成されている。例えば、第１のセンサセット１１０は、環境又は慣性系に関連する運動特性を感知するために本体１０２に結合されていてもよい。感知された運動特性は、コミュニケーションバス１０６を介してコントローラ１０８に供給されてもよい。一実施形態において、第２のセンサセット１１２は、本体１０２の回転を感知する１又は複数のジャイロスコープセンサを有していてもよい。別の実施形態において、第２のセンサセット１１２は、追加又は代替として、ロボット装置１００の経路角を推定するために環境の画像を取り込む１又は複数のイメージセンサを有していてもよい。
【００２８】
第３のセンサセット１１４は、本体１０２の第２の運動特性を感知するために任意に設けられる。例えば、ロボット装置１００のいくつかの実施形態では、本体の回転又は経路角のいずれか一方のみの変化を感知することができるが、その他の実施形態では、例えば第２及び第３のセンサセット１１２，１１４を用いることによって、その両方を任意に感知することができる。したがって、一実施形態において、ロボット装置１００は、本体１０２の回転を感知するための１又は複数のジャイロスコープセンサ、コンパスセンサ及び／又は加速度計（例えば第２のセンサセット１１２に相当する）を有していてもよく、画像に基づいて進行方向を推定する１又は複数のイメージセンサ（例えば第３のセンサセット１１４に相当する）を有していてもよい。
【００２９】
上述のように、第１、第２及び第３のセンサセット１１０，１１２，１１４は、任意の異なる種類のセンサであってもよい。例えば、一実施形態において、第１のセンサセット１１０は、１又は複数のオドメトリセンサを有していてもよい。第２のセンサセット１１２は、１又は複数のジャイロスコープセンサを有していてもよい。任意の第３のセンサセット１１４は、１又は複数のイメージセンサを有していてもよい。
【００３０】
清掃機構１１６は、表面から塵芥を捕捉するように構成されている。例えば、清掃機構１１６は、本体１０２に結合され、ロボット装置１００が表面を横断する際に表面から塵芥を捕捉できるように配置されたブラシ、清掃マット及び／又は真空アセンブリを有していてもよい。いくつかの実施形態において、清掃機構は、例えばアクチュエータシステム１０４から動力を受けて、ブラシアセンブリ（柔軟な多翼ビータであってもよく、ブラシの毛の列の間に柔軟なビータフラップを有していてもよい）に動力を供給し、掃除のための吸引力を発生させるように構成されていてもよい。清掃機構１１６は必須ではなく、任意に設けられる。
【００３１】
動作時において、コントローラ１０８は、アクチュエータシステム１０４に命令して、ロボット装置１００を、図示された実施形態においてベクトルａで表される任意の変位量（及び／又は任意の速度）で移動させることができる。上述の通り、カーペット敷きの床面は、ある程度はカーペットの織目によって、ロボット装置１００の動きに影響を及ぼしうる。したがって、ロボット装置１００は、図示された実施形態においてベクトルｃで表されるカーペットドリフトを経験する。実際の変位量ベクトルｂは、任意の変位量ベクトルａとカーペットドリフトベクトルｃとの重ね合わせである。
【００３２】
動作時において、コントローラ１０８は、コミュニケーションバス１０６を介して第１のセンサセット１１０から測定値を受け取ることができる。例えば、第１のセンサセット１１０の測定値は、任意の変位量ベクトルａに関連している。また、コントローラ１０８は、コミュニケーションバス１０６を介して第２のセンサセット１１２から測定値を受信することができる。例えば、第２のセンサセット１１２の測定値は、実際の運動ベクトルｂに関連している。これらの測定値に（全体的あるいは部分的に）基づいて、コントローラ１０８はカーペットドリフトベクトルｃの作用を推定することができる。この推定は、第１のセンサセット１１０の測定値（例えばオドメトリ測定値）の修正の一助となることができ、かつ／又はカーペットドリフトを補償することができる。
【００３３】
図２は、図１のロボット装置１００のアクチュエータシステム１０４の実施形態を示す概略図である。アクチュエータシステム１０４は、回転可能な左側車輪２０２、回転可能な右側車輪２０４、左側トランスミッションアセンブリ２０６、右側トランスミッションアセンブリ２０８及び駆動サブシステム２１０を有している。
【００３４】
駆動サブシステム２１０は、回転可能な左側及び右側車輪２０２，２０４を回転させてロボット装置１００を移動させるための動力を発生するように構成されていてもよい。例えば、左側トランスミッションアセンブリ２０６は、駆動サブシステム２１０によって発生された機械的動力を伝達して、左側車輪２０２を回転させるように構成されていてもよい。同様に、右側トランスミッションアセンブリ２０８は、駆動サブシステム２１０によって発生された機械的動力を伝達して、右側車輪２０４を回転させるように構成されていてもよい。左側及び右側車輪２０２，２０４は、差動的に駆動されてもよい。例えば、駆動サブシステム２１０は、左側車輪２０２を速度ｖｌで駆動し、右側車輪２０４を個別に速度ｖｒで駆動することができる。左側及び右側車輪２０２，２０４の差動速度を変化させることにより、差動速度の大きさと、ホイールベースの距離Ｌ（例えば、左側及び右側車輪２０２，２０４の間の距離）とに基づく半径で、ロボット装置１００の向きを変えることができる。したがって、アクチュエータシステム１０４の図示された実施形態は、車輪２０２，２０４が、制御可能な経路又は進行方向において床面に接触した状態で回転することで、ロボット装置１００を移動させるように構成されていてもよい。
【００３５】
いずれの適用可能な種類の車輪を選択してもよく、左側及び右側車輪２０２，２０４はそれぞれ、戦車の駆動システムに類似した、左側キャタピラにより相互接続される複数の左側車輪と、右側キャタピラにより相互接続される複数の右側車輪とを有する左側及び右側車輪サブシステム（図示せず）の一部であってもよい。また、その他の実施形態において、アクチュエータシステム１０４は、移動を行うための１又は複数の左脚部及び１又は複数の右脚部を有していてもよい。更に別の実施形態において、アクチュエータシステム１０４は、１又は複数の回転可能かつ旋回可能な車輪を有していてもよい。これらの車輪は、回転しながら、ロボット装置１００を、車輪の旋回角度に応じて可変する方向に移動させるように構成されている。
【００３６】
ロボット装置１００がカーペットの織目の方向に沿って移動しているときは、車輪２０２，２０４の回転から（例えばオドメトリによって）推定される変位量は、実際の変位量よりも小さいことがある。ロボット装置１００がカーペットの織目の方向に逆らって移動しているときは、この結果は全体的又は部分的に逆転する。図２に示す実施形態において、カーペットドリフトベクトルｃは、ロボットのホイールベースに対して角度θを有している。例えば、左側車輪２０２が速度ｖｌで駆動され、右側車輪２０４が速度ｖｒで駆動されているとき、ロボット装置１００は、カーペットドリフトと車輪のすべり量がない場合にｖｌ、ｖｒ及びＬで定義される円弧上で駆動される。しかしながら、カーペットドリフトによってロボット装置１００はカーペットドリフトベクトルｃの方向に移動しうるので、実際の変位量は任意の変位量とは異なる。
【００３７】
更に詳細に説明すると、左側及び右側車輪２０２，２０４がある期間（例えば単位時間）中にそれぞれ距離ｄｌ及び距離ｄｒを移動すると、この動きはオドメトリセンサ等の変位量センサによって感知される。この動きによる進行方向の変化（例えば、カーペットドリフトの不在、車輪のすべり量及び同様のアクチュエータに対する障害）は、次の数式によって近似的にモデル化される。
【００３８】
【数１】
0005913743.tif 000002
【００３９】
車輪の走行方向のカーペットドリフトを説明するために、各車輪の実際の変位量は、追加の条件として、カーペットドリフトベクトルｃと車輪が動く方向との内積を有していてもよい。その結果、実際の左側変位量及び右側変位量ｄｌｃ，ｄｒｃは、次の数式によって近似的にモデル化される。
【００４０】
【数２ａ】
0005913743.tif 000003
【００４１】
【数２ｂ】
0005913743.tif 000004
【００４２】
この変位量から、ジャイロスコープ等の進行方向センサによって測定される進行方向の変化は、次の数式によって近似的にモデル化される。
【００４３】
【数３】
0005913743.tif 000005
【００４４】
カーペットドリフトによる進行方向の変化は、オドメトリから計算される進行方向の変化と、ジャイロスコープセンサから計算される進行方向の変化との差を求めることによって推定される。
【００４５】
【数４】
0005913743.tif 000006
【００４６】
【数５】
0005913743.tif 000007
【００４７】
数式５において明らかなように、変位量センサ（例えばオドメトリセンサ）及び進行方向センサ（例えばジャイロスコープ）から計算された進行方向の差は、ロボットの進行方向を基準として、カーペットドリフト方向に比例する。数式４から、個々の車輪の絶対変位量は、実質的に異なり、かつ不変である。したがって、ロボットが全ての可能な方位を含む（例えば、１回転するために円弧状に移動する）場合、数式５で推定される進行方向の差は、正弦関数に帰結する。正弦関数の最大値と最小値は、ロボットがカーペットの織目の方向にほぼ一致したときと、カーペットの織目の反対方向に一致したときにそれぞれ生じる。
【００４８】
図３は、図１のロボット装置１００のコントローラ１０８の実施形態を示す概略図である。コントローラ１０８は、プロセッサ３０２と、メモリ３０４とを有している。メモリ３０４は、アクチュエータモジュール３０６と、センサモジュール３０８と、コントローラモジュール３１０と、推定モジュール３１２とを有している。
【００４９】
プロセッサ３０２は、メモリ３０４からの指令を実行し、アクチュエータシステム（例えば図１のアクチュエータシステム１０４）、センサ（例えば図１の第１、第２及び第３のセンサセット１１０，１１２，１１４）、清掃機構（例えば図１の清掃機構１１６）及び／又はロボット装置１００の同様の構成要素を制御して動作させるように構成されている、マイクロプロセッサ又はマイクロコントローラ等の回路を有している。特に、プロセッサ３０２は、汎用のシングルチップ又はマルチチップマイクロプロセッサ（例えばＡＲＭ）、専用のマイクロプロセッサ（例えばデジタル信号プロセッサ（ＤＳＰ））、マイクロコントローラ、プログラマブルゲートアレイ等であってもよい。コントローラ１０８中にはシングルプロセッサ３０２が示されているが、別の構成において、複数のプロセッサ（例えば、ＡＲＭ及びＤＳＰ）を組み合わせて用いてもよい。
【００５０】
メモリ３０４は、化学的、磁気的、電気的、光学的又は同様の手段によって情報を記録するように構成されている有形の非一時的コンピュータ可読媒体を有している。例えば、メモリ３０４は、フラッシュメモリ又はハードディスクドライブ等の不揮発性メモリ装置及び／又はダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックランダムアクセスメモリ（ＳＲＡＭ）等の揮発性メモリ装置、あるいは不揮発性メモリと揮発性メモリとを組み合わせたシステムであってもよい。
【００５１】
メモリ３０４は、ロボット装置１００のアクチュエータを動作させるようにプロセッサ３０２を設定する指令を有するアクチュエータモジュール３０６を有している。例えば、アクチュエータモジュール３０６は、メモリ３０４内の各種モジュールが図１のアクチュエータシステム１０４を使用できるようにする指令を有していてもよい。特に、アクチュエータモジュール３０６は、図１のコントローラ１０８とアクチュエータシステム１０４との間でのデータ及び制御メッセージの伝達を制御するためのドライバを形成する指令を有していてもよい。
【００５２】
メモリ３０４は、ロボット装置１００のセンサを動作させるようにプロセッサ３０２を設定する指令を有するセンサモジュール３０８を有している。例えば、センサモジュール３０８は、メモリ３０４内の各種モジュールが図１のセンサ１１０，１１２，１１４を使用できるようにする指令を有していてもよい。特に、センサモジュール３０８は、図１のコントローラ１０８とセンサ１１０，１１２，１１４との間でのデータ及び制御メッセージの伝達を制御するためのドライバを形成する指令を有していてもよい。
【００５３】
メモリ３０４は、ロボット装置１００のアクチュエータ１０４及びセンサ１１０，１１２，１１４を制御するように、かつアクチュエータモジュール３０６、センサモジュール３０８及び推定モジュール３１２の実行を制御するようにプロセッサ３０２を設定する指令を有するコントローラモジュール３１０を有している。例えば、コントローラモジュール３１０は、アクチュエータのための制御信号（例えばモータ制御則）の生成、ならびに生成された制御信号をアクチュエータシステム１０４に送るためのアクチュエータモジュール３０６の指令を呼び出す制御信号（例えばモータ制御則）の生成に関連する指令を有していてもよい。コントローラモジュール３１０は、センサ１１０，１１２，１１４からの測定値を受け取るセンサモジュール３０８の指令の呼び出しに関連する指令を有していてもよい。コントローラモジュール３１０は、カーペットドリフトを推定する推定モジュール３１２の指令の実行を制御する指令を有していてもよい。
【００５４】
メモリ３０４は、カーペットドリフトを推定するようにプロセッサ３０２を設定する指令を有する推定モジュール３１２を有している。図４〜図８を参照しながら、推定モジュール３１２が実施する種々の方法を以下に詳述する。
【００５５】
図４は、カーペットドリフトを推定する方法４００のフロー図である。一実施形態において、ロボット装置１００は、メモリ３０４内の推定モジュール３１２の指令を実行して、方法４００の動作を実行する。方法４００は、ブロック４０２で開始され、ロボット装置１００がパターンで移動されるブロック４０４に進む。例えば、コントローラ１０８は、アクチュエータシステム１０４に命令してロボット装置１００に表面を横切らせる。いくつかの実施形態において、ロボット装置１００を移動させることは、カーペットドリフト較正フェーズ（例えば、表面での初期動作中又は始動時）の一部である。例えば、較正プロセスの間、ロボット装置１００は、ロボット装置１００を少なくとも約１８０度又は少なくとも約３６０度回転させる操作を実行するように命令されてもよい。ロボット装置を少なくとも１８０度回転させることにより、ロボット装置はその回転の間、少なくともカーペットドリフトベクトルの方向又はその反対方向に一致することができる。したがって、例えば数式５と、Δαｄｒｉｆｔの最大値／最小値の位置判定とによって、カーペットドリフトベクトルｃの方向を推定することができる。ロボット装置を少なくとも３６０度回転させることにより、ロボット装置はその回転の間、カーペットドリフトベクトルの方向及びその反対方向に一致することができる。したがって、例えば数式５と、Δαｄｒｉｆｔの最大値及び／又は最小値の位置判定とによって、カーペットドリフトベクトルｃを推定することができる。追加又は代替として、ロボット装置１００の移動は、例えば空間の踏破又は清掃といった別のタスクの一部として実行してもよい。例えば、操作は、壁等の障害物に遭遇したことを受けて、向きを変えることであってもよい。別の例として、操作は、例えばロボット装置１００が第１の壁から第２の壁へ横断するときのような、略直線状の経路であってもよい。
【００５６】
ブロック４０４の間、又は同時に、方法４００は、ロボット装置１００のアクチュエータシステムの駆動特性を感知するためのブロック４０６を実行してもよい。例えば、コントローラ１０８は、第１のセンサセット１１０を用いて、複数の駆動特性の測定値を受け取ることができる。駆動特性は、例えばアクチュエータシステム１０４の１又は複数の車輪の回転に相当し、オドメトリを生成することができる。図３に関連して上記したように、オドメトリ測定値を用いて、ロボット装置１００の進行方向の任意の変化を推定してもよい。
【００５７】
ブロック４０４の間、又は同時に、方法４００は、ロボット装置１００の運動特性を感知するためのブロック４０８を実行してもよい。例えば、コントローラ１０８は、第２又は第３のセンサセット１１２，１１４を用いて、複数の運動特性の測定値を受け取ることができる。運動特性は、例えばジャイロスコープセンサによって感知されたロボット装置１００の回転の変化、又はイメージセンサによって感知された経路角の変化に相当する。
【００５８】
駆動特性及び運動特性のそれぞれの測定値を収集した後、方法４００は、少なくとも駆動特性及び運動特性に基づいてカーペットドリフトを推定するためのブロック４１０に進む。例えば、コントローラ１０８は、ロボット装置１００が操作を実行している間に収集された駆動特性の測定値と運動特性の測定値を比較する。ブロック４１０で実行される推定プロセスは、運動特性の性質に依存する。例えば、コントローラ１０８は、運動特性がロボット装置１００の回転に関連していれば、一方の推定方法（例えば図５の方法４１０ａ）を用いる一方、運動特性が経路角に関連していれば、別の推定方法（例えば図６の方法４１０ｂ）を用いる。このような推定方法の例を、図５〜図８を参照しながら更に詳細に後述する。
【００５９】
追加又は代替として、推定方法は、ブロック４０４で実行される操作に依存する。例えば、操作が少なくとも約１８０度又は少なくとも約３６０度の回転といった実質的な回転を含む場合、推定方法は、図５に関連する以下の記載に準じる。操作が、例えば約１０％又は約２０％より少ない差での左側車輪及び右側車輪（例えば図３の車輪２０２，２０４）の命令された差動回転又は速度に対応する任意の軌道等の、略直線状の任意の軌道を含む場合、推定方法は図６〜図８に関連した以下の記載に準じる。しかしながら、当業者においては、図６〜図８の推定方法は、略直線状の任意の軌道を必要とせず、湾曲した軌道等のその他の軌道を用いてもよいことは理解されるだろう。
【００６０】
カーペットドリフトが推定された後、方法４００はカーペットドリフトの修正を適用するためのブロック４１２に進む。例えば、織目方向の織目の大きさに比例又は関連するドリフト要素を追加することにより、オドメトリの読み取り値を修正してもよい。ロボットの位置を推定するために、修正されたオドメトリ値を用いてもよい。この修正により、カーペット敷きの床面でのロボット装置１００の自律航法を有意に向上することができる。
【００６１】
方法４００は、ロボット装置１００の稼動中、カーペットドリフト推定を調整し、位置推定を向上させるために、任意に間欠的に実行してもよい。例えば、方法４００は、時間又は走行距離に応じて周期的に実行してもよい。例えば、ロボット装置１００は、前回の推定が実行された後に閾値の距離（任意に予め設定される）よりも長い距離を走行した後、又は走行したことを受けて、方法４００を実行するように構成されていてもよい。更に、方法４００は、ロボット装置１００が、複数のカーペット（又は複数の表面）が存在する環境で動作しているか否かを評価するために実行してもよい。例えば、カーペット敷きの面が異なれば、それに関連するカーペットドリフトベクトルもまた異なる。方法４００は、複数のカーペットドリフト推定値を生成するために、複数回実行してもよい。複数のカーペットドリフト推定値が異なれば、複数のカーペット面が存在すると推定又は判定することができる。更に、カーペットドリフト推定によって、カーペットドリフトが皆無あるいはほぼ皆無であることが示された場合、車両はカーペットが敷かれていない面で動作していると推定又は判定される。方法４００が完了すると、ブロック４１４へ進み、終了する。
【００６２】
図５は、少なくともオドメトリセンサ及びジャイロスコープセンサからの測定値に基づいて、カーペットドリフトを推定する方法４１０ａの実施形態を示すフロー図である。例えば、方法４１０ａは、推定されたカーペットドリフトを用いて、修正されたオドメトリを較正するフェーズの一部として実行してもよい。また、方法４１０ａは、推定されたカーペットドリフトを調整するために、タスクの実施中に実行してもよい。例えば、方法４１０ａは、ロボット装置１００が部屋の表面を掃除している間に実行してもよい。特に、方法４１０ａは、ロボット装置１００が回転しているとき、例えば、障害物に遭遇したとき又は障害物の周辺を走行しているときに実行してもよい。ジャイロスコープセンサを用いる実施形態の数ある利点のうちの１つは、例えばイメージセンサと比較して、ハードウェア、実行、ランタイム計算の点において精度が向上し、複雑度が低いことである。一実施形態において、ロボット装置１００は、方法４１０ａの動作を実行するためにメモリ３０４内の推定モジュール３１２の指令を実行する。
【００６３】
方法４１０ａは、ブロック５０２で開始され、複数の第１及び第２の進行方向推定値を比較するためのブロック５０４へ進む。例えば、ブロック５０２で方法４１０ａを開始する前に、ロボット装置１００が例えば１つの車輪の回りを旋回することによって１回転する操作を実行する間に、測定値を収集してもよい。その他の運動もまた使用可能である。例えば、駆動輪間の差（例えば、｜ｄｒ｜−｜ｄｌ｜）をゼロ以外として操作を実行してもよい。一実施形態において、Ｎ個の第１の進行方向推定値Δαｏｄｏｍ，ｎ（ｎ＝１、２、．．、Ｎ）は、数式１を用いて、オドメトリ測定値から生成してもよい。Ｎ個の第２の進行方向推定値Δαｇｙｒｏ，ｎ（ｎ＝１、２、．．、Ｎ）は、ジャイロスコープセンサによって生成されてもよい。いくつかの実施形態において、測定値対（Δαｏｄｏｍ，ｎ、Δαｇｙｒｏ，ｎ）は、おおよその間隔で、例えば、前回の読み取り時と比較してロボット装置１００が約０．１ラジアン回転する毎に、収集してもよい。カーペットドリフトΔαｄｒｉｆｔ，ｎによる進行方向の差は、次の数式により概算される。
【００６４】
【数６】
0005913743.tif 000008
【００６５】
方法４１０ａは、少なくともブロック５０４での比較における差に基づいてカーペットドリフトの方向を推定するためのブロック５０６に進む。例えば、１回転のΔαｄｒｉｆｔ，ｎのプロットは、数式５においてモデル化される正弦波信号に近づくことができる。カーペットドリフトによる推定された進行方向の変化Δαｄｒｉｆｔ，ｎの極値又はピークは、オドメトリセンサ及びジャイロスコープセンサが最も異なるときに近似的に現れる。例えば、ロボット装置１００がカーペットの織目の方向に完全一致しているとき、オドメトリセンサは回転角度を実際よりも小さく見積もって、ジャイロスコープセンサによって測定された進行方向よりも遅れるため、最大値が生じる。逆に、ロボット装置１００がカーペットの織目と逆の方向に一致し、オドメトリセンサが回転角度を実際よりも大きく見積もると、最小値が生じる。したがって、カーペットの織目の方向は、第１及び第２の進行方向推定値の比較におけるピークに基づいて推定してもよい。この目的のために、標準又は非標準の相関関係／畳み込み及び／又は検索手法を用いてもよい。
【００６６】
方法４１０ａは、少なくとも全ドリフト量と進行方向の変化とに基づいてカーペットドリフトの大きさを推定するブロック５０８に進む。例えば、カーペットドリフトの大きさの推定値は、次の数式を用いて得ることができる。
【００６７】
【数６ａ】
0005913743.tif 000009
【００６８】
数式６ａは、１回転（例えば２π）の際の全ドリフト量の比である。数式６ａの分母を操作中の進行方向の全変化量に置き換えることによって、その他の回転量を用いてもよい。
【００６９】
床面にカーペットが敷かれていなければ、Δαｄｒｉｆｔ，ｎのプロットは、周期Ｎを有する正弦波に近似しない。したがって、Δαｄｒｉｆｔ，ｎが基本周期Ｎを有していなければ（又はΔαｄｒｉｆｔ，ｎが数式５から予期される実質的な正弦波形を有していなければ）、床面にはカーペットが敷かれていないと推定又は断定することができる。その後、方法４１０ａはブロック５１０に進み、終了する。
【００７０】
カーペットドリフトの推定における特段の課題は、カーペットドリフトの特定の作用は、ジャイロスコープセンサでは検知できないということである。例えば、ロボット装置１００が直線経路を追従するように命令されている場合、カーペットドリフトの一態様は、ロボット装置１００の進行方向を実質的に回転又は変化させない方法で（例えば、経路角を変化させることによって）ロボット装置１００の動きに影響を及ぼしうる。例えば、カーペットドリフトは、ロボット装置１００を回転させないロボット装置１００の並進運動に影響を及ぼしうる。したがって、略直線状の任意の経路を有する操作中にカーペットドリフトの態様を推定する場合（例えば車輪の変位量の絶対差｜ｄｒ｜−｜ｄｌ｜が実質的にゼロ）及び／又は進行方向が実質的に変化しない場合には、ジャイロスコープセンサは効果的ではない。このため、カーペットドリフトの推定に改良が要求される。
【００７１】
図６は、少なくともオドメトリセンサ及びイメージセンサの測定値に基づいてカーペットドリフトを推定する方法４１０ｂの実施形態を示すフロー図である。例えば、ロボット装置１００にカメラ等のイメージセンサが搭載されている場合、カーペットドリフトの推定は、画像に基づいた測定値を用いてオンラインで行うことができる。その他の実施形態において、ロボット装置１００は、一体型イメージセンサを有していなくてもよい。例えば、外部カメラによって取り込まれた画像を、例えばワイヤレスでロボット装置１００に伝達してもよい。追加又は代替として、プロセッサ及びカメラを有する外部システムを用いてロボットを撮影し、その画像からロボット装置１００の位置及び／又は向きを判定し、そのデータをロボット装置１００に伝達してもよい。画像に基づく推定を、完全一体型ロボットに関連して以下に記載する。しかしながら、これは分離型のロボット−カメラシステムにも適用可能である。
【００７２】
画像に基づく推定は、硬い床の上にカーペット、エリアラグ、及びその他の一般的な敷物が複数ある環境において任意に効果的である。画像に基づく感知は、実質的な車輪の差が要求されていない状況（例えば、ほぼ直線の操作中）においても効果的である。言い換えれば、方法４１０ｂは、ロボット装置１００が回転を要求されていない操作の間にカーペットドリフトを推定するのに効果的である。一実施形態において、ロボット装置１００は、方法４１０ｂの動作を実行するための、メモリ３０４内の推定モジュール３１２の指令を実行する。
【００７３】
方法４１０ｂは、ブロック６０２で開始され、イメージセンサが取り込んだ２つ以上の画像から動きの視覚測定値を測定するためのブロック６０４に進む。エピポーラマッチング、視覚オドメトリ、位相相関、ストラクチャ・フロム・モーション等の、視覚情報から動きの視覚測定値を測定する各種の方法が存在する。当業者においては、視覚測定値を測定するいずれかの適当な方法が使用可能であることは理解されるだろう。エピポーラマッチングを伴う一実施形態を、図７を参照しながら更に詳細に後述する。
【００７４】
動きの視覚測定値を測定した後、方法４１０ｂは統計フィルタを実行するためのブロック６０６に進む。カメラ画像から抽出されたロボット装置１００の動きの推定値を、統計推定フィルタを用いて組み合わせる。統計推定フィルタは、カーペットドリフト又はカーペットドリフトベクトルの推定値を維持することができる。拡張型カルマンフィルタ（ＥＫＦ）、拡張型情報フィルタ、非線形最適法及び粒子フィルタの変形を含む各種統計推定フィルタにより、視覚測定値を組み合わせることができる。反復ＥＫＦ（ＩＥＫＦ）を用いる一実施形態を、図８を参照しながら更に詳細に後述する。方法４１０ｂは、ブロック６０８で終了する。
【００７５】
一実施形態において、ロボット装置１００は、方法４１０ａ又は方法４１０ｂのいずれか一方のみを実行してもよい。しかしながら別の実施形態においては、方法４１０ａ，４１０ｂの両方を実行してもよく、動作中に２つの方法又はモードを切り替えてもよい。例えば、ロボット装置１００は、ジャイロスコープセンサ及びイメージセンサの両方を有していてもよい。ロボット装置１００は、較正フェーズ中及び／又はロボット装置１００が回転を要求された操作中に、方法４１０ａを実行してもよい。また、ロボット装置１００は、ロボット装置１００が回転を要求されていない操作中に、方法４１０ｂを実行してもよい。例えば、ある特定の実施形態において、ロボット装置１００は２つの壁の間を繰り返し横断して、部屋の床を掃除するように構成されていてもよい。したがって、ロボット装置１００は、一方の壁から他方の壁へ、略直線状に移動するように構成されていてもよい。この直線操作中に、ロボット装置１００は選択的に方法４１０ｂを実行するように構成されていてもよい。ロボット装置１００が他方の壁に接触したときは、ロボット装置１００は回転して（例えば約１８０度）一方の壁に向くように構成されていてもよい。この回転操作中に、ロボット装置１００は選択的に方法４１０ａを実行するように構成されていてもよい。
【００７６】
しかしながら別の実施形態においては、方法４１０ａ及び方法４１０ｂを並行して実行し、動作中にこの２つの方法を切り替えてもよい。例えば、図１のコントローラ１０８は、方法４１０ａ，４１０ｂの動作をモニターして、最も信頼できる推定値を提供する出力を選択してもよい。例えば、コントローラ１０８は、車輪の差（例えば｜ｄｒ｜−｜ｄｌ｜）が大きい場合に、方法４１０ａを実行するプロセスの出力を使用することを選択し、車輪の差が小さい場合にはこれを選択しない。別の例として、コントローラ１０８は、動きの視覚測定値が正確であることが示されていれば、方法４１０ｂを実行するプロセスの出力を使用することを選択してもよい。例えば、図７を参照しながら更に詳細に後述するように、方法４１０ｂは、確実性レベルを計算し、マッチングした特徴の密接度を測定することができる。一実施形態において、不確実性が低いとき及び／又は特徴が密接にマッチングしているときに、方法４１０ｂを選択してもよい。
【００７７】
追加又は代替として、２つの方法４１０ａ，４１０ｂ又はモードの決定の一助として、コントローラ１０８は、オンラインで評価及び比較可能な、２つの仮定的なパフォーマンスメトリックを比較してもよい。例えば、方法４１０ａは、オンラインで評価可能なパフォーマンスメトリックＰ１を割り当てられてもよい。メトリックの選択肢の一例は、Ｐ１＝μ１（｜ｄｒ｜−｜ｄｌ｜）−２である。式中、μ１は、特定用途向けの理由に基づいて選択される設計変数である。同様に、方法４１０ｂは、類似の又は異なるパフォーマンスメトリックＰ２を割り当てられてもよい。メトリックの選択肢の一例は、Ｐ２＝μ２||Ｐ||である。式中、μ２は特定用途向けの理由に基づいて選択される設計変数、||Ｐ||は画像に基づくドリフト推定値を生成するのに使用されるカルマンフィルタの共分散行列Ｐの行列ノルムである（例えば図８参照）。一実施形態において、コントローラ１０８は、Ｐ１＜Ｐ２のときに方法４１０ａの出力を使用することを選択してもよく、Ｐ２＜Ｐ１のときに方法４１０ｂの出力を使用することを選択してもよい。その他のパフォーマンスメトリックも選択可能であり、その他の決定ルールもまた使用可能である。
【００７８】
図７は、動きの視覚測定値を測定する方法６０４の実施形態を示すフロー図である。例えば、一実施形態において、ロボット装置１００は、メモリ３０４内の推定モジュール３１２の指令を実行し、イメージセンサが取り込んだ画像から、ロボット装置１００の経路角を示す視覚測定値を生成する。図示した方法６０４の実施形態は、画像内で検出された特徴のエピポーラマッチングに基づく。エピポーラマッチングは、マッチングする画像の特徴間のエピポーラ関係によって、１つの画像から別の画像への並進運動（例えば複数のカメラを用いたとき）、並進運動方向、ならびにカメラの回転を推定する。例えば、１つの画像において検出された特徴の位置及び／又は向きの別の画像に対する変化により、検出された特徴に対するカメラの動きを示すことができる。簡潔にするため、以下で用いられる「並進運動」とは、並進運動及び／又は並進運動方向を意味する。例えば、１個のカメラを有する実施形態の場合、並進運動方向は推定可能である。好都合なことに、エピポーラマッチングは、カメラが撮影する背景の知識を必要としない（とはいえ、そのような知識は使用可能である）。視覚による推定法の一態様では、不確実性が低く、並進運動が背景中の物体の奥行きに対して十分な並進運動の推定値を検出する。例えば、この種の推定は、統計推定フィルタによる処理のための観測として有用である。エピポーラマッチングは、１回につき２つの画像を用いるのが効果的であるので、その他の例えばストラクチャ・フロム・モーションに基づく視覚による動き推定方法に比べて計算が少ない。一実施形態において、ロボット装置１００は、方法６０４の動作を実行するためのメモリ３０４内の推定モジュール３１２の指令を実行する。
【００７９】
方法６０４は、ブロック７０２で開始され、保存された特徴集合を空集合に設定することと、オドメトリ測定値をリセットすることによって初期化を行うためのブロック７０４へ進む。例えば、保存された特徴集合は、ロボット装置１００のメモリ３０４に記憶してもよい。オドメトリ測定値をリセットした後、方法６０４は次のオドメトリデータと次のカメラフレーム（例えば画像）を検索するためのブロック７０６に進む。例えば、ロボット装置１００は、表面を横断して、オドメトリセンサを含む第１のセンサセットでオドメトリ測定値を収集し、１又は複数のカメラを含む第２のセンサセットで次のフレームを収集することができる。
【００８０】
次のフレームを収集した後、方法は、ブロック７０６からフレームの現在の特徴集合を抽出するためのブロック７０８に移る。例えば、ＳＩＦＴ（scale invariant feature transformation）、ハリス（Harris）の特徴等の特徴をフレームから抽出してもよい。ブロック７１０において、方法６０４は、保存された特徴集合が空集合であるか否かを確認する。保存された特徴集合が空集合であれば、方法６０４はブロック７１２へ進み、現在の特徴集合を保存された特徴集合に記憶し、蓄積されたオドメトリをリセットする。方法６０４は、次のオドメトリデータとカメラフレームを検索するためのブロック７０６に戻る。
【００８１】
ブロック７１０において、保存された特徴集合が空集合でなければ、方法は現在の特徴集合と保存された特徴集合とのエピポーラマッチングをとるためのブロック７１４に進む。エピポーラマッチングをとった後、方法６０４はマッチングの閾値を確認するブロック７１６に進む。例えば、方法６０４は整合対の十分性を確認する。とりわけ、特徴のマッチングは、例えばオドメトリ等の装置内のその他のソース、あるいはその他の視覚による動きの推定法から予期される動きに関する情報によって支援されてもよい。整合対は、十分な数の特徴がマッチングし、整合対間のエラー（例えば残留エラー）が十分に低ければ受け入れられる。例えば、整合対の数が閾値の大きさを越えており、整合対の不確実性が限界値を下回っており、かつ／又は整合対の動きとオドメトリにより予期された動きとの差が閾値を下回っていれば、整合対は閾値を満たす。したがって、整合対は信頼できる測定に基づくので、この整合対は使用可能であると判定される。一方で、マッチングする特徴が少なすぎたり、整合対間のエラーが大きかったりすると、信頼できない測定値が存在することを示し、この整合対は使用すべきではないと判断される。
【００８２】
整合対が閾値を満たさなければ、方法６０４は、現在の特徴集合を保存された特徴集合に記憶し、蓄積されたオドメトリをリセットするためのブロック７１２に進む。方法６０４は、次のオドメトリデータ及びカメラフレームを検索するためのブロック７０６に戻ってもよい。
【００８３】
ブロック７１６で整合対が閾値を満たせば、方法は、保存された特徴集合と現在の特徴集合の間でのカメラの回転及び並進運動を計算するためのブロック７１８へ進む。例えば、計算されたカメラの回転及び並進運動は、現在の特徴集合と保存された特徴集合の間のエピポーラ関係に基づいていてもよい。例えば、フレーム座標における特徴の並進運動及び回転は、幾何学関係により、例えば固定又は慣性系（例えば部屋）に対するカメラの並進運動及び回転にマッピングできる。実施形態において、エピポーラ座標からカメラの並進運動及び回転へのマッピングは、数値最適化、数理計画関数又は数理計画方法を用いて計算することができる。
【００８４】
回転及び並進運動を計算した後、方法６０４は、この回転及び並進運動が閾値を満たすか否かを判定するためのブロック７２０に進む。閾値が満たされれば、方法６０４は、動きの視覚測定値を設定するブロック７２１に進む。例えば、回転及び並進運動の大きさが閾値より大きく、不確実性が閾値より小さければ、動きの視覚測定値が生成され、方法６０４はブロック７２２で終了する。動きの視覚測定値は、１又は複数の推定された姿勢変化、推定値の不確実性、ならびに２つのカメラ位置間でのオドメトリに基づく姿勢変化を含んでいてもよい。
【００８５】
一方で、回転及び／又は並進運動の大きさが閾値より小さいか、あるいは不確実性が閾値より大きければ、方法６０４は、ブロック７２０から次のオドメトリデータ及びカメラフレームを検索するブロック７０６に進む。したがって、保存された特徴集合は変化せず、新たな画像及びオドメトリデータが検索される。このように、マッチングしたフレーム間において十分な動きがあるときは、別の測定方法を試みることができる。観測された回転及び並進運動に閾値を適用することの、数ある利点のうちの１つは、画像ノイズ（例えばカメラのジッター及びセンサノイズ）があっても、パフォーマンスが向上することである。
【００８６】
上記したように、回転及び／又は並進運動の不確実性は、動きの視覚測定値に含まれていてもよい。いくつかの実施形態において、不確実性情報は、視覚測定情報が信頼できる程度を求めるのに有用である。例えば、比較的低い不確実性に関連付けられた視覚測定値は、比較的高い不確実性に関連付けられた視覚測定値よりも多く重み付けされる。この目的のために、視覚測定の不確実性は、ブロック７０８で抽出された現在の特徴集合及び／又は保存された特徴集合に関連付けられた不確実性といった、様々な要素によって判定してもよい。更に、視覚測定の不確実性は、ブロック７１４で検出されたマッチングの密接度によって判定してもよい。密接にマッチングするエピポーラ整合対には、マッチングが弱いエピポーラ整合対よりも低い不確実性が割り当てられていてもよい。
【００８７】
特徴集合レベルでの不確実性は、所定の不確実性レベル（例えば設計的事項及び／又は用途に基づく仮定）、特徴の特性及び画像の特性に基づいてもよい。例えば、ある種の特徴は、その他の特徴よりも高品位なマッチングを提供することができる。例えば、特定の形状はその他の形状よりも簡単にマッチングできる。例えば、鮮明で高コントラストな輪郭を有する特徴は、ぼやけた低コントラストな輪郭を有する特徴よりも低い不確実性に関連付けられる。更に、角部を有する特徴は、より低い不確実性に関連付けられる。
【００８８】
特徴レベルでの不確実性は、回転及び並進運動レベル（例えば視覚測定レベル）での不確実性にマッピングすることができる。例えば、不確実性は、エピポーラ領域を回転及び並進運動領域にマッピングするためのブロック７１８の関数に入力することができる。
【００８９】
図８は、統計フィルタを実行する図６の方法６０６の実施形態を示すフロー図である。図示された実施形態では、ＩＥＫＦを使用して、正規化されたカーペットドリフトベクトル（ＮＣＤＶ）を追跡する。ＮＣＤＶは、並進運動の単位あたりのカーペットドリフトベクトルである。ＮＣＤＶは、床面の特性であり、ロボットが走行した距離やロボットの向きに左右されない。図示された実施形態のＩＥＫＦは、更に詳細に後述するように、ＮＣＤＶの推定に用いてもよい。例えば、ＩＥＫＦの状態ｘの推定値はＮＣＤＶの推定値に一致することができ、状態ｘの共分散はＰで示される。標準のＥＫＦではなく、ＩＥＫＦを用いることの利点の１つは、線形化によるエラーを減らすことで精度が向上することである。当業者においては、その他の推定手法もまた使用可能であることは理解されるだろう。一実施形態において、ロボット装置１００は、方法６０６の操作を行うための、メモリ３０４内の推定モジュール３１２の指令を実行する。
【００９０】
したがって、方法６０６はブロック８０２で開始され、ブロック８０３に進んで動きの視覚測定値を検索する。例えば、図７に関連して記載した方法６０４に従って、視覚測定値を測定してもよい。動きの視覚測定値は、時刻ｔｉからｔｉ＋１までの推定されたロボット装置１００の相対姿勢Ωに関する情報を含んでいてもよい。姿勢とは、並進運動、並進運動方向及び／又は向きの情報を意味する。例えば、動作の推定値は、オドメトリから推定された相対姿勢Ω及び関連する共分散Ｂという形、あるいは画像処理（例えば、図６のブロック６０４）によって推定された基平面における動作の方向θ及び関連する分散ｒという形に変換される。カメラの座標フレーム及びロボットの座標フレームが同じでないとき、当業者においては、動きの視覚測定値及びそれに関連する共分散に適切な変換を適用して、それを適切な座標（例えば部屋座標）に置くことは理解されるだろう。また、ｔｉ＋１で状態ｘをΩの座標フレームに回転させる回転マトリクスＭとしての、ロボットの向きの推定値が与えられる。
【００９１】
ブロック８０３において視覚測定値データを検索した後、方法６０６は、オドメトリ及び現在の状態推定値＾ｘに基づいて走行角度〜θを推定するためのブロック８０４に進む。公式的に、次の数式を用いてオドメトリ及び現在の状態推定値＾ｘに基づく走行角度の推定値〜θを生成してもよい。
【００９２】
【数７】
0005913743.tif 000010
【００９３】
【数８】
0005913743.tif 000011
【００９４】
【数９】
0005913743.tif 000012
【００９５】
【数１０】
0005913743.tif 000013
【００９６】
数式７において、距離ｄは、オドメトリに基づく時刻ｔｉからｔｉ＋１までの推定走行距離である。数式８において、成分ｈ０及びｈ１は、ベクトルｈの成分である。
【００９７】
走行角度〜θを推定した後、方法６０６は、ブロック８０４から、状態＾ｘの変化に対する予測された角度〜θの変化のヤコビアンＪｄを計算するためのブロック８０６へ進む。例えば、いくつかの実施形態において、ヤコビアンはＪｄ＝（ｄ・Ｍ−１ＪｈＴ）Ｔとして計算される。
【００９８】
方法６０６は、ブロック８０６からイノベーションν及びイノベーション分散Ｑを計算するためのブロック８０８へ進む。例えば、いくつかの実施形態において、イノベーションν及びイノベーション分散Ｑは、次の数式を用いて計算される。
【００９９】
【数１１】
0005913743.tif 000014
【０１００】
【数１２】
0005913743.tif 000015
【０１０１】
【数１３】
0005913743.tif 000016
【０１０２】
イノベーションν及びイノベーション分散Ｑが入手可能になった後、方法６０６はブロック８０８から進んで、イノベーションνをイノベーション分散Ｑと比較することによって観測をゲートする。方法６０６は、ブロック８１０からブロック８１２へ進み、新しい平均値＾ｘｎｅｘｔを更新する。例えば、新しい平均値＾ｘｎｅｘｔは、次のイテレーションのための平均値＾ｘであってもよい。一実施形態において、新しい平均値＾ｘｎｅｘｔは、次の数式によって計算される。
【０１０３】
【数１４】
0005913743.tif 000017
【０１０４】
【数１５】
0005913743.tif 000018
【０１０５】
【数１６】
0005913743.tif 000019
【０１０６】
【数１７】
0005913743.tif 000020
【０１０７】
ブロック８０４〜８１２の１回のイテレーションを完了した後、方法６０６はブロック８１４へ進み、方法が新たなイテレーションに進むべきか、又はブロック８１６で終了すべきかを確認する。イテレーションが完了すれば、新しい状態ｘ＝＾ｘｎｅｘｔ及び分散Ｐ＝（Ｙ＋Ｐ−１）−１が設定される。ＩＥＫＦのイテレーションの数は、全体的又は部分的に、イテレーション間の状態の差、又は既定数のイテレーションに基づいて決定される。
【０１０８】
修正されたオドメトリ推定値は、ＮＣＤＶを各時間ステップでオドメトリに適用することによって得ることができる。例えば、姿勢Ωのオドメトリ変化及び推定されたＮＣＤＶｘが与えられれば、修正された姿勢のオドメトリ変化は、Ωｃ＝Ω＋ｄ・Ｍｘによって推定される。前述のように、ｄはオドメトリから推定された走行距離、Ｍは推定されたＮＣＤＶｘをΩの座標フレームに回転させる回転マトリクスとしての、ロボットの向きの推定値である。
【０１０９】
以上、例えばカーペット上を移動するロボットが経験するカーペットドリフト等のドリフトを推定し、そのドリフトを補償する装置及び方法について記載した。
【０１１０】
前述の記載及び特許請求の範囲は、互いに「接続」又は「結合」された要素又は特徴について言及している。特に明記されているものを除き、「接続」とは、ある要素／特徴が直接的又は間接的に別の要素／特徴に接続されていることを意味し、必ずしも機械的な接続を意味するものではない。同様に、特に明記されているものを除き、「結合」とは、ある要素／特徴が直接的又は間接的に別の要素／特徴に結合されていることを意味し、必ずしも機械的な結合を意味するものではない。したがって、図面に示した種々の概略図において、要素及び構成要素の配置例を描写しているが、その他の介在する要素、装置、特徴又は構成要素が、（描写された回路に悪影響を及ぼさないという前提で）実際の実施形態に存在していてもよい。
【０１１１】
ここに記載の方法及びプロセスにおいて、工程又は状態の数は増減してもよく、工程又は状態は、異なる順序で実行されてもよい。必ずしも全ての工程又は状態に及ぶ必要はない。ここに記載の方法及びプロセスは具現化され、１又は複数の一般的及び／又は専用のコンピュータにより実行されるソフトウェアコードモジュールを介して、全体的又は部分的に自動化されてもよい。コードモジュールは、いずれの種類のコンピュータ可読媒体又はその他の記憶機器に保存されてもよい。開示された方法の結果は、揮発性及び／又は不揮発性メモリ（例えば磁気ディスク記憶装置、ＥＥＰＲＯＭ及び／又は固体ＲＡＭ）を用いるいずれの種類のコンピュータデータリポジトリに保存されてもよい。
【０１１２】
本発明を、特定の実施形態の観点から記載したが、記載された全ての特徴及び利点を提供しない実施形態を含む、当業者にとって明白なその他の実施形態もまた本発明の範囲に含まれる。また、上記の各実施形態を組み合わせて、更に別の実施形態とすることができる。更に、ある実施形態において提示された特徴を、その他の実施形態に組み込むことも可能である。
【図１】
0005913743.tif 000021
【図２】
0005913743.tif 000022
【図３】
0005913743.tif 000023
【図４】
0005913743.tif 000024
【図５】
0005913743.tif 000025
【図６】
0005913743.tif 000026
【図７】
0005913743.tif 000027
【図８】
0005913743.tif 000028