優先権
本出願は、同一名称の2016年5月11日に出願された同時係属中の米国特許出願第15/152,425号の優先権の利益を主張するものであり、これは、その全体の参照によって本明細書に組み込まれる。
著作権
本特許文書の開示の一部分は、著作権保護の対象となる資料を含有する。著作権者は、特許商標庁の特許ファイルまたは記録に現れるように、特許文書または特許開示のいずれか一方による複製に異論を唱えないが、それ以外の場合は全ての著作権の一切の権利を留保する。
[技術分野]
背景
本出願は、概して、特に、ロボットシステムおよびその利用方法に関する。具体的には、一態様において、本開示は、経路を自律走行するようにロボットを訓練および動作させるためのシステムおよび方法に関する。
現在、ロボットのプログラミングは、多くの場合、ロボットが遭遇し得る、あらゆる状況を予測するか、または予測しようとする網羅的なコーディングを含み得る。かかるアプローチは、時間、エネルギー、およびコンピュータ資源の観点からコストがかかるのみならず、このアプローチはまた、ロボットの能力を制限する可能性もある。例えば、多くのロボットは、予測可能または画定済みの条件を有する制御された環境でのみ有効であり得る。これらのロボットは、動的に変化する環境および/またはロボットが特別にプログラムされていない新しい環境において有効ではない場合がある。ロボットが汎用的能力を有するようにプログラムされている場合、ロボットは多くの異なるタスクで有用であり得るが、それらのタスクのうちの任意の特定のタスクで有効ではないか、または非効率的であり得る。反対に、特定のタスクを有効かつ効率的に実施するようにプログラムされるロボットは、それらのタスクに限定され、他のタスクを実施することができない場合がある。同様に、多くの現在のロボットは、それらをプログラムする、および動作させるために、専門技術者および他の高度に熟練した作業者を必要とし得る。この要件は、ロボットを動作させる時間およびコストを増加させる。
これらの課題は、経路内を走行するようにロボットをプログラミングする際に特に顕著である。例えば、第1の地点から第2の地点まで所望される進路を自律的にナビゲートするようにロボットをプログラムするために、プログラマは、地図をプログラムし、またロボットがそれらの地点に走行するべき順序または論理と共に、ロボットが走行するべき地図上の各点を識別する必要があり得る。そのプログラマは、各環境に対してロボットをプログラムし、環境の地図と共に、所望される各経路または全経路を入力する必要があり得る。これに代えて、プログラマが、経路を決定するようにロボットに対する汎用的規則および論理をプログラムする場合、そのロボットは、任意の特定の経路を辿る際に遅く、非効率であり得る。いずれの場合においても、かかるプログラミングは、時間がかかり、またロボットを動作させるために高度に熟練した作業者を必要とし得る。したがって、経路を走行するようにロボットをプログラミングするための改善されたシステムおよび方法に対する必要性が存在する。
上記の必要性は、特に、自律ナビゲーション用のロボットを訓練および操作させるための装置および方法を提供する、本開示によって満たされる。本明細書に説明される実装例は、革新的な特徴を有し、それらのうちの単一のものは、不可欠ではないか、またはそれらの所望される属性の単独の要因ではない。特許請求の範囲を限定することなく、有利な特徴のうちのいくつかが、ここで要約されることになる。
本開示のいくつかの実装において、ロボットは、実演によって経路を学習し、その後、自律的にナビゲートしながら実演された経路を繰り返し得る。
第1の態様においてロボットが開示される。一代表的実装において、ロボットは、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成するように構成されたマッピングおよび定位ユニットを含む。ロボットはまた、地図を使用してロボットを自律的にナビゲートするように構成されたナビゲーションユニットも含む。
一変形例において、ロボットのナビゲーションユニットはまた、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定するようにも構成されている。
別の変形例において、ロボットは、ロボットのセンサ範囲内の物体の少なくとも一部を示すセンサデータを生成するように構成されたセンサユニットをさらに含み、ロボットのナビゲーションユニットは、生成されたセンサデータに少なくとも部分的に基づいて自律的にナビゲートするようにさらに構成されている。
別の変形例において、ロボットは、ブラシを作動させるように構成された第1のアクチュエータユニットをさらに有する。別の変形例において、ロボットはまた、ロボットを旋回させるように構成された第2のアクチュエータユニットも有する。
別の変形例において、ロボットは、地図上の位置を第1のアクチュエータユニットの作動と関連付けるように構成されたプロセッサをさらに有する。別の変形例において、ロボットは、地図上の位置を第2のアクチュエータユニットの作動と関連付けるように構成されたプロセッサを含む。
別の変形例において、ロボットは、ユーザ作成された地図の選択を受信するように構成されたユーザインターフェースを含み、ロボットは、受信された選択に少なくとも部分的に基づいて自律的にナビゲートする。
別の変形例において、ロボットは、地図内の誤りを補正するように構成された地図評価ユニットをさらに有する。別の変形例において、誤りの補正は、地図内の誤りのうちの少なくとも1つを補正された地図の少なくとも一部分と関連付ける機械学習を含む。
別の変形例において、ロボットは、サーバと通信するように構成された通信ユニットをさらに含み、ロボットは、地図をサーバに送信し、地図の品質の検証を受信する。
第2の態様において、ロボットを訓練する方法が開示される。一代表的実施形態において、方法は、初期化場所のロボットの第1の配置を検出することと、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成することと、初期化場所のロボットの第2の配置を検出することと、ロボットに、初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることと、を含む。
一変形例において、方法は、作成された地図の誤りを評価することと、誤りに少なくとも部分的に基づいて、ロボットに対してナビゲート可能経路を再び実演するようにユーザに要求することと、をさらに含む。
別の変形例において、方法は、地図内の誤り補正することをさらに含む。別の変形例において、方法は、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定することをさらに含む。
別の変形例において、方法は、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けることをさらに含む。
別の変形例において、方法は、作成された地図上に、ナビゲート可能経路上でロボットによって実施される動作をマッピングすることをさらに含む。
第3の態様において、ロボットを使用する方法が開示される。一代表的実施形態において、方法は、初期化場所のロボットの第1の配置を検出することと、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成することと、初期化場所のロボットの第2の配置を検出することと、ロボットに、初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることと、を含む。
一変形例において、方法は、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けることをさらに含む。
別の変形例において、方法は、作成された地図上に、ナビゲート可能経路上でロボットによって実施される動作をマッピングすることをさらに含む。
第4の態様において、非一時的コンピュータ可読媒体が開示される。一代表的実装において、非一時的コンピュータ可読記憶媒体が、そこに記憶された複数の命令を有して開示される。命令は、ロボットを動作させるために処理装置によって実行可能であり、命令は、処理装置によって実行されたとき、処理装置に、初期化場所のロボットの第1の配置を検出することと、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成することと、初期化場所のロボットの第2の配置を検出することと、ロボットに、初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることと、を行わせるように構成されている。
一変形例において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、作成された地図の誤りを評価することと、誤りに少なくとも部分的に基づいて、ロボットに対してナビゲート可能経路を再び実演することをユーザに要求することと、をさらに行わせる命令を含む。
別の変形例において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、地図内の誤りを補正することをさらに行わせる命令を含む。
他の変形例において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、ナビゲート可能経路を自律的にナビゲートしながら一時的に配置された障害物を回避するための命令をロボットに提供することをさらに行わせる命令を含む。
別の変形例において、非一時的コンピュータ可読記憶媒体は、実行されたとき、処理装置に、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせないことを決定することをさらに行わせる命令を含む。
別の変形例において、非一時的なコンピュータ可読記憶媒体は、実行されたとき、処理装置に、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けることをさらに行わせる命令を含む。
別の変形例において、ナビゲート可能経路および周囲環境の地図の作成は、センサを用いて周囲環境を検知するように構成された命令をさらに含む。
別の変形例において、非一時的コンピュータ可読記憶媒体は、実行されたとき、処理装置に、サーバと通信することをさらに行わせる命令を含み、ロボットは、地図をサーバに送信し、地図の品質の検証を受信する。
第5の態様において、環境およびロボットが開示される。一代表的実装において、ロボットは、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成するように構成されたマッピングおよび定位ユニットを含む。ロボットはまた、地図を使用してロボットを自律的にナビゲートするように構成されたナビゲーションユニットも含む。
一変形例において、ロボットのナビゲーションユニットはまた、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定するようにも構成されている。この決定は、環境の障害物を回避する決定を含む。
別の変形例において、ロボットは、ロボットのセンサ範囲内の物体の少なくとも一部を示すセンサデータを生成するように構成されたセンサユニットをさらに含み、ロボットのナビゲーションユニットは、生成されたセンサデータに少なくとも部分的に基づいて環境を自律的にナビゲートするようにさらに構成されている。
別の変形例において、ロボットは、清掃のためのブラシを作動させるように構成された第1のアクチュエータユニットをさらに有する。別の変形例において、ロボットはまた、環境内でロボットを旋回させるように構成された第2のアクチュエータユニットも有する。
別の変形例において、ロボットは、地図上の位置を第1のアクチュエータユニットの作動と関連付けるように構成されたプロセッサをさらに有する。別の変形例において、ロボットは、地図上の位置を第2のアクチュエータユニットの作動と関連付けるように構成されたプロセッサを含む。
本開示で説明される追加の態様および実装が存在する。例えば、いくつかの実施形態は、非一時的コンピュータ可読記憶媒体であって、そこに記憶された複数の命令を有する、非一時的コンピュータ可読記憶媒体を含み、命令は、ロボットを動作させるために処理装置によって実行可能であり、命令は、処理装置によって実行されたとき、処理装置に、初期化場所のロボットの第1の配置を検出することと、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に作成することと、初期化場所のロボットの第2の配置を検出することと、ロボットに、初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることと、を行わせるように構成されている。
いくつかの実装において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、作成された地図の誤りを評価することと、誤りに少なくとも部分的に基づいて、ロボットに対してナビゲート可能経路を再び実演することをユーザに要求することと、をさらに行わせる命令を含む。いくつかの実装において、誤りは、地図内のナビゲート可能経路の不連続部および地図内の周囲環境の不連続部のうちの少なくとも一方を含む。いくつかの実装において、誤りは、少なくとも重複する物体を含む。いくつかの実装において、誤りは、閉ループを形成することの失敗を含む。いくつかの実装において、誤りは、地図内の所定の誤りパターンを含む。
いくつかの実装において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、地図内の誤りを補正することをさらに行わせる命令を含む。いくつかの実装において、誤りの補正は、地図内の誤りのうちの少なくとも1つを補正された地図の少なくとも一部分と関連付ける機械学習を含む。
いくつかの実装において、非一時的コンピュータ可読記憶媒体は、処理装置によって実行されたとき、処理装置に、ナビゲート可能経路を自律的にナビゲートしながら一時的に配置された障害物を回避するための命令をロボットに提供することをさらに行わせる命令を含む。いくつかの実装において、非一時的コンピュータ可読記憶媒体は、実行されたとき、処理装置に、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせないことを決定することをさらに行わせる命令を含む。いくつかの実装において、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせないことを決定することは、障害物を回避する決定を含む。
いくつかの実装において、ロボットは、ユーザインターフェースからナビゲート可能経路の選択を受信させるように構成された命令をさらに備える。いくつかの実装において、非一時的なコンピュータ可読記憶媒体は、実行されたとき、処理装置に、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けることをさらに行わせる命令を含む。
いくつかの実装において、ロボットに自律的にナビゲートさせることは、処理装置に、ナビゲート可能経路および周囲環境の地図の初期化場所に対する関連付けに少なくとも部分的に基づいてナビゲート可能経路を決定させるように構成された命令をさらに含む。いくつかの実装において、ロボットに自律的にナビゲートさせることは、処理装置に、作成された地図に少なくとも部分的に基づいてナビゲートさせるように構成された命令をさらに含む。いくつかの実装において、ロボットは、床清掃機である。いくつかの実装において、ロボットは、床洗浄機である。
いくつかの実装において、作成された地図は、ナビゲート可能経路上のロボットによって実施された動作の少なくとも一部を表す表示を含む。いくつかの実装において、動作は、床を清掃することである。いくつかの実装において、動作は、旋回である。
いくつかの実装において、ナビゲート可能経路および周囲環境の地図の作成は、センサを用いて周囲環境を検知するように構成された命令をさらに含む。いくつかの実装において、ナビゲート可能経路および周囲環境の地図の作成は、3次元センサを用いて周囲環境を検知するように構成された命令をさらに含む。
いくつかの実装において、非一時的コンピュータ可読記憶媒体は、実行されたとき、処理装置に、サーバと通信することをさらに行わせる命令を含み、ロボットは、地図をサーバに送信し、地図の品質の検証を受信する。
別の例として、いくつかの実装は、ロボットを動作させる方法を含み、方法は、初期化場所のロボットの第1の配置を検出することと、ナビゲート可能経路および周囲環境の地図の作成を、初期化場所から始まるロボットに対するナビゲート可能経路の実演中に引き起こすことと、初期化場所のロボットの第2の配置を検出することと、ロボットに、初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることと、を含む。
いくつかの実装において、方法は、作成された地図の誤りを評価することと、誤りに少なくとも部分的に基づいて、ロボットに対してナビゲート可能経路を再び実演するようにユーザに要求することと、をさらに含む。いくつかの実装において、作成された地図の誤りを評価することは、重複する物体を識別することを含む。いくつかの実装において、作成された地図の誤りを評価することは、閉ループを形成することの失敗を識別することを含む。いくつかの実装において、作成された地図の誤りを評価することは、地図内の所定のパターンを識別することを含む。いくつかの実装において、方法は、地図をサーバに送信することと、地図の品質の少なくとも一部を示す信号をサーバから受信することと、をさらに含む。
いくつかの実装において、方法は、地図内の誤りを補正することをさらに含む。いくつかの実装において、誤りを補正することは、地図内の誤りのうちの少なくとも1つを、補正された地図の少なくとも一部分と関連付ける機械学習を含む。
いくつかの実装において、本方法は、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定することをさらに含む。いくつかの実装において、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定することは、障害物を回避することを決定することを含む。
いくつかの実装において、実演は、ユーザから制御信号を受信することを含む。いくつかの実装において、ナビゲート可能経路および周囲環境の地図を作成することは、センサを用いて周囲環境を検知することを含む。いくつかの実装において、ナビゲート可能経路および周囲環境の地図を作成することは、3次元センサを用いて周囲環境を検知することをさらに含む。
いくつかの実装において、ロボットに自律的にナビゲートさせることは、ユーザインターフェースからナビゲート可能経路の選択を受信することをさらに含む。いくつかの実装において、ロボットに自律的にナビゲートさせることは、ナビゲート可能経路および周囲環境の地図を使用してナビゲートすることを含む。
いくつかの実装において、方法は、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けることをさらに含む。
いくつかの実装において、方法は、ナビゲート可能経路および周囲環境の地図の初期化場所に対する関連付けに少なくとも部分的に基づいてナビゲート可能経路を決定することをさらに含む。
いくつかの実装において、方法は、作成された地図上に、ナビゲート可能経路上でロボットによって実施される動作をマッピングすることをさらに含む。いくつかの実装において、動作は、床を清掃することを含む。いくつかの実装において、動作は、旋回することを含む。
別の例として、いくつかの実装は、非一時的コンピュータ可読記憶媒体であって、そこに記憶された複数の命令を有する、非一時的コンピュータ可読記憶媒体を含み、命令は、ロボットを動作させるために処理装置によって実行可能であり、命令は、処理装置によって実行されたとき、処理装置に、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まる、ロボットに対するナビゲート可能経路の実演中に作成させるように構成されている。
いくつかの実装において、作成された地図は、ナビゲート可能経路上のロボットによって実施された動作の少なくとも一部を表す表示をさらに含む。いくつかの実装において、動作は、床を清掃することである。いくつかの実装において、ロボットは床清掃機である。いくつかの実装において、ナビゲーション経路の実演は、コンピュータシミュレーションである。
別の例として、いくつかの実装は、ロボットを含み、ロボットは、ナビゲート可能経路および周囲環境の地図を、初期化場所から始まる、ロボットに対するナビゲート可能経路の実演中に作成するように構成されたマッピングおよび定位ユニットと、地図を使用してロボットを自律的にナビゲートするように構成されたナビゲーションユニットと、を備える。
いくつかの実装において、ナビゲーションユニットは、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定するようにさらに構成されている。いくつかの実装において、自律的にナビゲートしない決定は、障害物を回避する決定を含む。
いくつかの実装において、ロボットは、ロボットのセンサ範囲内の物体の少なくとも一部を示すセンサデータを生成するように構成されたセンサユニットをさらに備え、ナビゲーションユニットは、生成されたセンサデータに少なくとも部分的に基づいて自律的にナビゲートするようにさらに構成されている。
いくつかの実装において、ロボットは、ブラシを作動させるように構成された第1のアクチュエータユニットをさらに備える。いくつかの実装において、ロボットは、ロボットを旋回させるように構成された第2のアクチュエータユニットをさらに備える。
いくつかの実装において、ロボットは、地図上の位置を第1のアクチュエータユニットの作動と関連付けるように構成されたプロセッサをさらに備える。いくつかの実装において、ロボットは、地図上の位置を第2のアクチュエータユニットの作動と関連付けるように構成されたプロセッサをさらに備える。
いくつかの実装において、ロボットは、ユーザ作成された地図の選択を受信するように構成されたユーザインターフェースをさらに備え、ロボットは、受信された選択に少なくとも部分的に基づいて自律的にナビゲートする。
いくつかの実装において、ロボットは、地図内の誤りを補正するように構成された地図評価ユニットをさらに備える。いくつかの実装において、誤りの補正は、地図内の誤りのうちの少なくとも1つを補正された地図の少なくとも一部分と関連付ける機械学習を含む。
いくつかの実装において、誤りは、少なくとも重複する物体を含む。いくつかの実装において、誤りは、閉ループを形成することの失敗を含む。いくつかの実装において、誤りは、地図内の所定のパターンを含む。
いくつかの実装において、地図評価ユニットは、地図内の誤りを補正するようにさらに構成されている。いくつかの実装において、誤りの補正は、地図内の誤りのうちの少なくとも1つを補正された地図の少なくとも一部分と関連付ける機械学習を含む。
いくつかの実装において、プロセッサは、ナビゲート可能経路および周囲環境の地図を初期化場所と関連付けるようにさらに構成されている。
いくつかの実装において、プロセッサは、ナビゲート可能経路および周囲環境の地図の初期化場所に対する関連付けに少なくとも部分的に基づいてナビゲート可能経路を決定するようにさらに構成されている。いくつかの実装において、ナビゲーションユニットは、自律的にナビゲートするロボットの作用をさらに構成され、処理装置に、作成された地図に少なくとも部分的に基づいてナビゲートさせるように構成された命令をさらに含む。
いくつかの実装において、ロボットは、サーバと通信するように構成された通信ユニットをさらに備え、ロボットは、地図をサーバに送信し、地図の品質の検証を受信する。
本開示のこれらおよび他の目的、特徴、および特性と共に、構造の関連要素および部品の組み合わせの動作および機能の方法ならびに製造の経済性は、添付の図面を参照して、以下の説明および添付の特許請求の範囲の検討に際してより明らかになり、それらの全てが、本明細書の一部を形成し、同様の参照番号は、様々な図の対応する部分を示す。しかしながら、図面が、例示および説明のみの目的のためのものであり、本開示の限定の定義として意図されるものではないことが明白に理解されるべきである。本明細書および特許請求の範囲に使用される、「a」、「an」および「the」の単数形は、文脈上、別途明確に指示されない限り、複数の指示対象を含む。
開示された態様は、添付の図面と併せて以下に説明され、開示される態様を例示するために提供され、限定するために提供されるものではなく、同様の呼称は、同様の要素を示す。
本開示の実施形態による、ロボットによって自律的にナビゲートされる経路の一例の俯瞰図である。
本開示の実施形態による、ロボットに対して経路を実演するユーザを例示する図1Aに例示された経路の例の俯瞰図である。
本開示の原理による、ロボットが物体を回避する、図1Aおよび図1Bに示されるロボットによって自律的にナビゲートされる経路の代替例の俯瞰図である。
本開示の原理による、経路の一例を自律的にナビゲートするようにロボットを訓練するための代表的方法のプロセスフロー図である。
本開示のいくつかの実装による、一代表的ロボットの機能ブロック図である。
本開示の原理による、代表的ロボットが学習し、その後、経路の一例を走行する、代表的方法のプロセスフロー図である。
本開示の原理による、経路の一例を教示または選択するためにユーザから入力を受信するための一代表的ユーザインターフェースである。
本開示の原理による、初期化場所を検出し、かつ配向の一例および位置の一例を初期化する代表的ロボットの俯瞰図である。
本開示の原理による、ロボットがエネルギーパターンを放射する、代表的ロボットの俯瞰図である。
本開示の原理による、ロボットのための代表的自律ナビゲーション経路を実演しながらロボットを制御するユーザを例示する側面図である。
本開示の原理による、床洗浄機のための代表的本体形態の様々な側面図を例示する。
本開示の原理による、ロボットのための代表的本体形態の様々な側面図を例示する。
本開示の原理による、ロボットがその周囲を検知している間にロボットを制御するユーザの俯瞰図である。
本開示の原理による、環境内を走行する際にロボットによって生成された様々な地図の例を例示する。
本開示の原理による、地図に現れ得るマッピングされた物体の様々な例を例示し、図8Aは、互いに実質的に平行である一組の物体の例を実演し、一方で図8Bは、互いに実質的に平行ではない別の一組の物体の例を実演する。
本開示の原理による、実質的に平行な物体のための地図を検索するために使用されるマスクの俯瞰図である。
本開示の原理による、地図の経路部分間の代表的経路不連続部の俯瞰図である。
本開示の原理による、地図の物体部分間の物体不連続部の俯瞰図である。
本開示の原理による、経路不連続部および物体不連続部の両方を含む代表的不連続部を有するマッピングされた部分の俯瞰図である。
本開示の原理による、代表的な重複する物体を有するマッピングされた部分の俯瞰図である。
本開示の原理による、初期化場所の例が終了場所の例と実質的に同様の代表的閉ループ経路内を走行しているロボットの俯瞰図である。
本開示の原理による、ロボットが、マッピングの誤りを補正された経路と関連付ける、代表的なマッピングの誤りである。
本開示の原理による、経路選択に使用され得るユーザインターフェースの例である。
本開示の原理による、ロボットを動作させるための代表的方法のプロセスフロー図である。
本明細書に開示されるすべての図は、Brain社が著作権(2017年)を有する。無断転写を禁ずる。
発明を実行するための形態
本明細書に開示された新規なシステム、装置、および方法の様々な態様は、添付の図面を参照して以下により完全に説明される。しかしながら、本開示は、多くの異なる形態で具現化されることができ、本開示全体を通して提示される任意の特定の構造または機能に限定されると解釈されるべきではない。むしろ、これらの態様は、本開示が徹底的かつ完全であり、本開示の範囲を当業者に完全に伝えることになるように提供される。本明細書の教示に基づいて、当業者は、本開示の範囲が、本開示の任意の他の態様とは独立して、またはそれらと組み合わされて実装されるか否かにかかわらず、本明細書に開示された新規のシステム、装置、および方法の任意の態様を包含するように意図されることを認めるべきである。例えば、本明細書に明らかにされる任意の数の態様を使用して、装置が実装され得るか、または方法が実施され得る。加えて、本開示の範囲は、本明細書に明らかにされる様々な態様に加えて、またはそれら以外の他の構造、機能、または構造および機能を使用して実施される、かかる装置または方法を包含するように意図される。本明細書に開示される任意の態様が、特許請求の範囲の1つ以上の要素によって実装され得ることが理解されるべきである。
特定の実装が本明細書に説明されているが、これらの実装の多くの変形および置換は、本開示の範囲内に収まる。実装のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、用途、および/または目的に限定されるように意図されない。詳細な説明および図面は、限定ではなく本開示の単なる例示であり、開示の範囲は、添付の特許請求の範囲およびその等価物によって定義される。
本開示は、自律ナビゲーション用のロボットを動作させる改良されたシステムおよび方法を提供する。本明細書に使用される際、ロボットは、複雑な一連の動作を自動的に実行するように構成された機械的または仮想的実体を含み得る。いくつかの場合において、ロボットは、コンピュータプログラムまたは電子回路によってガイドされる電気機械的機械であり得る。いくつかの場合において、ロボットは、自律ナビゲーション用に構成される電気機械的機械を含み得、ロボットは、少しのユーザ制御、またはユーザ制御なしで1つの場所から別の場所に動き得る。かかる自律ナビゲートロボットとしては、自律自動車、床清掃機(例えば、床洗浄機、掃除機等)、ローバ、ドローン等が挙げられ得る。いくつかの実装において、本開示に説明されるシステムおよび方法のうちのいくつかは、仮想環境に実装され得、仮想ロボットは、物理世界の特性を有するシミュレートされた環境内(例えば、コンピュータシミュレーション内)で実演された経路を学習し得る。それらの経路を学習した後、ロボットは、その後、本開示に開示されるシステムおよび方法を使用して、シミュレートされた環境および/または現実の世界で学習された経路を自律的にナビゲートし得る。
本開示の様々な実施形態、ならびにシステムおよび方法の変形の詳細な説明が、ここで提供される。ロボット床清掃機の文脈で主に論じられるが、本明細書に含有される、説明されたシステムおよび方法が、例えば、任意の自律ナビゲートロボットを含む他のロボットで使用され得ることが認められよう。本明細書に説明された技術の無数の他の代表的実装または用途は、本開示の内容が与えられた当業者によって容易に想定されるであろう。
有利には、本開示のシステムおよび方法は、少なくとも、(i)環境特有のプログラミングの必要性を低減または排除する、(ii)高度に熟練した技術者がロボットをプログラムする必要性を低減または排除する、(iii)汎用的にプログラムされたロボットからアプリケーション特有の性能を提供する、(iv)タスク特有のプログラミング(例えば、清掃のために障害物にどの程度近づくようにナビゲートするか等の必要性を除去または低減する、(v)ロボットの効果的な自律ナビゲーションを可能にする。他の利点は、本開示の内容が与えられた当業者によって容易に認識可能である。
例えば、実演によって経路を走行するようにロボットを訓練することで、ユーザは、事前に全ての経路をプログラムする必要がない。有利には、これは、ユーザが事前に予期していなかった環境をナビゲートするように、ユーザがロボットを訓練することを可能にし得る。また、ユーザは、ロボットを訓練するために任意の特定の専門的技術を利用しなくてもよい。例えば、ユーザは、コンピュータ科学を知る必要がなく、および/またはロボットをプログラムするやり方を学ぶ必要がない場合もある。代わりに、ユーザは、ユーザがロボットにさせることを所望するタスクを実施するやり方を単に知っていればよい。例えば、ロボットが床清掃機である場合、ユーザは、ユーザがロボットに実演し得る、床を清掃するやり方を単に知っていればよい。
いくつかの状況において、経路を走行するようにロボットを訓練することは、ロボットが仕様に対する特定のタスクを、それらの仕様の各々を識別およびプログラムすることを必要とせずに、実施することを可能にし得る。例示として、ロボットが床洗浄ユニットである場合、床洗浄ユニットが、壁、棚等から一定の距離を駆動することが望ましい場合がある。ユーザは、ロボットを訓練する際にそれらの距離を実演し、ロボットは、いくつかの場合において、それらの距離を繰り返し得る。
さらに、ナビゲート可能経路を学習し得るロボットを訓練することは、ロボットが、特定の環境を効率的にナビゲートするように具体的にプログラムされることを可能にし得るが、一方でまた、多くの環境で実施するように汎用的にプログラムされることも可能にし得る。有利には、これは、かかるロボットが、特定の用途に最適化されることと、様々な用途で実施する能力および柔軟性を依然として有することとの両方の利益を有することを可能にする。
いくつかの実装において、地図および経路は、ナビゲーション前に検証および/または確認され得る。この検証および/または確認は、事故、ならびに/またはロボットが、地図および/もしくは経路の品質が悪いために、壁および/もしくは障害物に衝突する可能性のある状況を防止し得る。
図1Aは、本開示の実装を通して、ロボット102によって自律的にナビゲートされる経路106の一例の俯瞰図を例示する。ロボット102は、様々な物体108、110、112、118を含み得る環境100を通して自律的にナビゲートし得る。ロボット102は、初期化場所104で開始し、終了場所114で終了し得る。
例示として、いくつかの実装において、ロボット102は、ロボット床洗浄機、真空掃除機、スチーマ、モップ、スイーパ等のロボット床清掃機であり得る。環境100は、清掃されることが所望される床を有する空間であり得る。例えば、環境100は、店舗、倉庫、オフィスビル、家屋、貯蔵施設等であってもよい。物体108、110、112、118のうちの1つ以上は、棚、ディスプレイ、物体、アイテム、人、動物、あるいは床上にあるか、またはそうでなければ環境を通してナビゲートするロボットの能力を妨げ得る、任意の他の実体もしくは物であり得る。経路106は、ロボット102によって走行される清掃進路であり得る。経路106は、経路106の一例に例示されるように、物体108、110、112、118の間を織りなす進路に追従し得る。例えば、物体108、110、112、118が、店舗内の棚である場合、ロボット102は、店舗の通路に沿って進み、通路の床を清掃し得る。しかしながら、他の経路もまた、考えられ、例えば、限定されるものではないが、開放床エリアおよび/またはユーザが床を清掃するために使用することになる任意の清掃進路に沿って前後に織りなす。したがって、図1A、図1Bおよび図1Cにそれぞれ例示される経路106、116、126のうちの1つ以上は、例示されるように異なって見え、単に例示的な例としての意味をもち得る。例示されるように、環境100の一例が示されているが、環境100が、任意の数の形態および配置(例えば、部屋または建物の任意のサイズ、構成およびレイアウトの)を採用し得、この開示によって限定されないことが認められるべきである。
経路106において、ロボット102は、その始点となり得る初期化場所104で始まり、それが清掃を停止し得る終了場所114に到達するまで経路106に沿って清掃し得る。終了場所114は、図6Aを参照して説明されるユーザ604によって指定され得る。いくつかの場合において、終了場所114は、ロボット102が床の所望されるエリアを洗浄した後の経路106内の場所であり得る。いくつかの場合において、終了場所114は、初期化場所104と同一または実質的に同様であり得、そのため、ロボット102は、清掃で実質的に閉ループを実施し、その開始点である初期化場所104の近くで終了する。いくつかの場合において、終了場所114は、一時的駐車場、保管室またはクローゼット等の、ロボット102の保管用の場所であり得る。いくつかの場合において、終了場所114は、ユーザ604が清掃および訓練ロボット102を停止することを決定した地点であり得る。ロボット102は、経路106に沿った全地点を清掃してもよく、または清掃しなくてもよい。例えば、ロボット102がロボット床洗浄機である場合、ロボット102の洗浄システム(例えば、水流、清掃ブラシ等)は、経路106のいくつかの部分のみで動作し、他の部分および/またはいくつかの軌道(例えば、経路106に沿って一定の方向または特定のシーケンスで動いている間)では動作しない場合がある。これは、床のいくつかのエリアのみが清掃されるべきであるが、他のエリアはそうではないときに望ましい場合がある。かかる場合において、ロボット102は、ユーザ604が、清掃するようにロボット102に実演したエリアで清掃システムをオンにし、そうでないエリアで清掃システムをオフにし得る。
図1Bは、ロボット102が環境100内の経路106を自律走行する前にロボット102に経路116を実演するユーザ604の俯瞰図を例示する。経路116を実演する際、ユーザは、初期化場所104でロボット102を始動させ得る。ロボット102は、その後、物体108、110、112、118の周囲を縫うように進み得る。ロボット102は、終了場所114で最終的に終了し得る。いくつかの場合において、自律的にナビゲートされた経路106は、実演された経路116と全く同一であり得る。いくつかの場合において、経路106は、経路116と正確に同一でなくてもよいが、実質的に同様であり得る。例えば、ロボット102が経路106をナビゲートする際、ロボット102は、そのセンサ(例えば、図5B〜Eを参照して説明されることになる、センサ560A〜Dおよび/またはセンサ568A〜B)を、その周囲に関する場所を検知するために使用する。かかる検知は、いくつかの事例において不正確であり得、これは、ロボット102が、実演され、ロボット102が追従するように訓練された正確な経路をナビゲートしないことを引き起こし得る。いくつかの場合において、棚の移動および/または棚上のアイテムの変化等の、環境100に対する小さな変化は、ロボット102が、経路106を自律的にナビゲートするときに経路116から逸脱することを引き起こし得る。別の例として、図1Cに例示されるように、ロボット102は、経路126を自律的にナビゲートするときに物体130、132の周囲を旋回することによって物体130、132を回避し得、これは、実演された経路116に少なくとも部分的に基づく、ロボット102によって走行される別の経路であり得る。物体130、132は、ユーザが経路116を実演するときには存在していなかった(かつ回避されなかった)場合がある。例えば、物体130、132は、一時的に配置され得る、および/もしくは一時の物体/アイテム、ならびに/または環境100に対する一時のおよび/もしくは動的な変化であり得る。別の例として、ユーザ604が、経路116を実演する不十分な仕事を行った可能性がある。例えば、ユーザ604が、壁、棚、物体、障害物等にぶつけた、および/または衝突させた場合がある。これらの場合において、ロボット102は、壁、棚、物体、障害物等にぶつかる、および/または衝突する等を補正し得る1つ以上の動作をメモリ(メモリ302)内に記憶し得る。ロボット102が、その後、経路126として実演された経路116を自律的にナビゲートするとき、ロボット102は、自律的にナビゲートするときに、かかる動作を補正し得、それらを実施しない(例えば、壁、棚、物体、障害物等にぶつからない、および/または衝突しない)。このようにして、ロボット102は、実演された経路等の、ナビゲート可能な経路の少なくとも一部分を自律的にナビゲートしないことを決定し得る。いくつかの実装において、いくつかの実装において、ナビゲート可能経路の少なくとも一部分を自律的にナビゲートしないことを決定することは、障害物および/または物体を回避するときを決定することを含む。
上述したように、ユーザが経路116を実演する際、ユーザは、経路116に沿って、どこ(例えば、どの位置で)、および/またはどの軌道に沿って、清掃するか(続いて、いつロボット102が経路106を自律的に清掃するか)についてロボット102を訓練するために、ロボット102の清掃システムをオンまたはオフにするか、または他の動作を実施し得る。ロボットは、これらの動作をメモリ302内に記録し、その後に自律的にナビゲートするときにそれらの動作を実施し得る。これらの動作としては、旋回すること、水のオン/オフを切り換えること、水を噴霧すること、吸引のオン/オフを切り換えること、吸引ホース位置を移動させること、アームをジェスチャ動作させること、リフトを昇降させること、センサを移動させること、センサのオン/オフを切り換えること等の、ロボット102が実施し得る任意の動作が挙げられ得る。
図2は、経路106を自律的にナビゲートするためにロボット102を訓練するための代表的方法200のプロセスフロー図を例示する。部分202は、初期化場所104にロボット102を位置付けることを含む。ロボット102の初期化場所104へのこの第1の配置は、ロボット102を初期化場所104に移動させるようにロボット102を駆動、遠隔制御、押す、またはそうでなければ制御する、管理人、守衛、または任意の他の人員であり得るユーザ604によって実施され得る(図6を参照して後で説明される)。例えば、ユーザ604は、制御信号をロボット102に送信させ得る。ロボット102は、移動のための命令としてこれらの制御信号を受信し得る。
図2に戻ると、部分204は、ロボット102にナビゲーション経路116を実演することを含む。図1Bを使用する例示によると、ユーザ604は、限定されるものではないが、経路116に沿ってロボット102を駆動、遠隔制御、押す、またはそうでなければ制御することによって、ロボット102に実演し得る。例えば、ユーザ604は、制御信号をロボット102に送信させ得る。ロボット102は、移動のための命令としてこれらの制御信号を受信し得る。複数のこれらの運動は、実演された経路を共に形成し得る。このようにして、ユーザ604は、移動のための所望される経路をロボット102に実演し得る。ロボット床清掃機の文脈において、実演された経路116は、床を清掃するための所望される経路であり得る。このようにして、ユーザ604は、ロボット102に床を清掃するやり方を訓練する。
図2に戻ると、部分206は、ロボット102を初期化場所104に再度位置付けることを含む。ロボット102の初期化場所104へのこの第2の配置は、部分204の実演の実質的に直後等の部分204の後の時点で起こり得るか、または数時間後、数日後、数週間後、またはユーザ604が床を清掃することを所望するいずれかのとき等の後の時点で起こり得る。
図2に戻ると、部分208は、自律ナビゲーションを開始することを含む。いくつかの場合において、ユーザが自律ナビゲーションを開始した後、ロボット102は、実演された経路116と実質的に同様であり得る経路106(またはいくつかの場合において経路126)に沿って走行し得る。いくつかの実装において、ユーザ604は、図11Aを参照して説明されることになるように、実演された経路をユーザインターフェース上で選択し得る。図1Aを使用する例示によると、ロボット102は、その後、経路106、または経路106と実質的に同様の経路を、初期化場所104から終了場所114まで自律的にナビゲートし得る。
図3は、いくつかの実装のロボット102の例の機能ブロック図を例示する。図3に例示されるように、ロボット102は、コントローラ304、メモリ302、電源306、および操作ユニット308を含み、これらの各々は、相互にならびに相互の構成要素および/もしくは部分構成要素に動作可能ならびに/または通信可能に連結され得る。コントローラ304は、ロボット102によって実施される様々な動作を制御する。具体的な実装が図3に例示されるが、本アーキテクチャが、本開示の内容を考慮して当業者にとって容易に明らかである一定の実装に変更され得ることが認められる。
コントローラ304は、1つ以上のプロセッサ(例えば、マイクロプロセッサ)および他の周辺機器を含み得る。本明細書に使用される際、プロセッサ、マイクロプロセッサ、およびデジタルプロセッサという用語は、限定されるものではないが、デジタル信号プロセッサ(「DSP」)、縮小命令セットコンピュータ(「RISC」)、汎用(「CISC」)プロセッサ、マイクロプロセッサ、ゲートアレイ(例えば、フィールドプログラマブルゲートアレイ(「FPGA」)、プログラマブルロジックデバイス(PLD)、再構成可能コンピュータファブリック(「RCF」)、アレイプロセッサ、セキュアマイクロプロセッサ、および特定用途向け集積回路(「ASIC」)等の、任意のタイプのデジタル処理デバイスを含み得る。かかるデジタルプロセッサは、単一の集積回路ダイに含有されてもよく、複数の構成要素にわたって分散されてもよい。
コントローラ304は、メモリ302に動作可能および/または通信可能に連結され得る。メモリ302は、任意のタイプの集積回路、または、限定されるものではないが、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、不揮発性ランダムアクセスメモリ(「NVRAM」)、プログラマブル読み出し専用メモリ(「PROM」)、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM」)、ダイナミックランダムアクセスメモリ(「DRAM」)、モバイルDRAM、同期DRAM(「SDRAM」)、ダブルデータレートSDRAM(「DDR/2 SDRAM」)、拡張データ出力RAM(「EDO」)、高速ページモードRAM(「FPM」)、低遅延DRAM(「RLDRAM」)、スタティックRAM(「SRAM」)、「フラッシュ」メモリ(例えば、NAND/NOR)、メモリスタメモリ、擬似スタティックRAM(「PSRAM」)等を含む、デジタルデータを記憶するために適合された記憶デバイスを含み得る。メモリ302は、コントローラ304に命令とデータを提供し得る。例えば、メモリ302は、非一時的コンピュータ可読記憶媒体であり得、そこに記憶された複数の命令を有し、命令は、ロボット102を動作させるために処理装置(例えば、コントローラ304)によって実行可能である。いくつかの場合において、命令は、処理装置によって実行されたときに、処理装置に、本開示に説明される様々な方法、特徴、および/または機能を実施させるように構成され得る。したがって、コントローラ304は、メモリ302内に記憶されたプログラム命令に基づいて論理演算および算術演算を実施し得る。
操作ユニット308は、本開示に説明された様々な動作を実施するために、コントローラ304、または任意の他のコントローラに連結され得る。操作ユニット308内のモジュールのうちの1つ以上が、いくつかの実装に含められ得るか、またはいずれも含められなくてもよい。この開示全体を通して、様々なコントローラおよび/またはプロセッサに対する参照がなされ得る。いくつかの実装において、単一のコントローラ(例えば、コントローラ304)は、説明された様々なコントローラおよび/またはプロセッサとして機能し得る。他の実装において、操作ユニット308のうちの1つ以上に対して特に使用されるコントローラおよび/またはプロセッサ等の、異なるコントローラおよび/またはプロセッサが使用され得る。コントローラ304は、操作ユニット308への離散信号およびアナログ信号を含む、電力信号、制御信号、センサ信号、質問信号、状態信号、データ信号、電気信号および/または任意の他の望ましい信号等の、信号を送信および/または受信し得る。コントローラ304は、操作ユニット308を調整および/もしくは管理する、ならびに/またはタイミングを設定する(例えば、同期または非同期)、オン/オフを切り換える、電力量を制御する、ネットワーク命令および/もしくは更新を受信/送信する、ファームウェアを更新する、質問信号を送信する、状態を受信および/もしくは送信する、ならびに/またはロボット102の特徴を動作させるための任意の動作を実施し得る。
操作ユニット308は、ロボット102の機能を実施する様々なユニットを含み得る。例えば、操作ユニット308のユニットは、マッピングおよび定位ユニット312、センサユニット314、地図評価ユニット324、アクチュエータユニット318、通信ユニット316、ナビゲーションユニット326、およびユーザインターフェースユニット322を含み得る。操作ユニット308は、ロボット102の様々な機能を提供する他のユニットも備え得る。いくつかの場合において、操作ユニット308のユニットは、ソフトウェアもしくはハードウェア、またはソフトウェアおよびハードウェアの両方で具体化され得る。例えば、いくつかの場合において、操作ユニット308のユニットは、コントローラによって実行されるコンピュータ実装命令を含み得る。いくつかの場合において、操作ユニット308のユニットは、ハードコードされた論理を含み得る。いくつかの場合において、操作ユニット308のユニットは、コントローラによって実行されるコンピュータ実装命令およびハードコードされた論理の両方を含み得る。操作ユニット308が少なくとも部分的にソフトウェアに実装される場合、操作ユニット308は、1つ以上の機能を提供するように構成されたコードのユニット/モジュールを含み得る。
いくつかの実装において、センサユニット314は、ロボット102内および/またはロボット102の周囲の特性を検出し得るシステムを備え得る。センサユニット314は、ロボット102の内部または外部にある、ならびに/または部分的に内部および/もしくは部分的に外部である構成要素を有するセンサを含み得る。センサユニット314は、ソナー、ライダ、レーダ、レーザ、ビデオカメラ、赤外線カメラ、3Dセンサ、3Dカメラ、および/または当該技術分野で既知の任意の他のセンサ等の外受容性センサを含み得る。センサユニット314はまた、加速度計、慣性測定ユニット、オドメータ、ジャイロスコープ、速度計等の外受容性センサも含み得る。いくつかの実装において、センサユニット314は、生の測定値(例えば、電流、電圧、抵抗ゲート論理等)および/または変換された測定値(例えば、距離、角度、障害物の検出点等)を収集し得る。
いくつかの実装において、マッピングおよび定位ユニット312は、ロボット102が環境100(または任意の他の環境)をナビゲートする際、環境100の地図700(図7A〜7Bを参照して説明されることになる)(または任意の環境の任意の他の生成された地図)を計算的に構築および更新し得るシステムおよび方法を含み得る。マッピングおよび定位ユニット312は、環境100をマッピングすること、およびロボット102を地図700内に定位させる(例えば、位置を見出す)ことの両方を行い得る。同時に、マッピングおよび定位ユニット312は、地図700(例えば、マッピングされた経路716)内の実演された経路(例えば、経路116)を記録し得る。マッピングは、センサユニット314によって少なくとも部分的に取得されたデータを、環境100の少なくとも一部を表現する、2次元(「2D」)、3次元(「3D」)、および/または4次元(「4D」)地図に加えることによって実施され得る。例えば、地図700は、ロボット102によって検出された障害物および/または物体の少なくとも一部を表現する図示を含み得る。地図700はまた、図7A〜図7Bを参照して説明されることになるように、マッピングされた地図716等の実演された経路を記録する場合もある。例えば、マッピングされた経路716は、初期化場所104等の基準に対するロボット102の相対位置に少なくとも部分的に基づく座標(例えば、2D地図内のxおよびy、ならびに3D地図内のx、y、およびz)を含み得る。座標は、初期化場所104等の基準に対する任意の所与の点でのロボット102の配向(例えば、変位角)を含み得る。本明細書に使用される際、位置という用語は、その通常の、かつ慣習的な意味を有する。例えば、いくつかの場合において、位置は、物体、ロボット102等の変位、座標等に関する場所を含み得る。いくつかの場合において、位置はまた、物体、ロボット102等の配向も含み得る。したがって、いくつかの場合において、位置および姿勢という用語は、場所、変位、および配向のうちの1つ以上を含むように互換的に使用され得る。実演プロセスを通して作成された地図700は、ロボット102が1つ以上の実演/訓練で検知した環境全体を実質的に記録し得る。このため、地図700をグローバル地図と呼ぶ場合がある。いくつかの場合において、地図700は、実演後に地図700が実質的に構成されないという点で静的であり得る。いくつかの実装において、地図700およびマッピングされた経路716はまた、別個に生成され(例えば、コンピュータを使用するユーザによって)、ロボット102上に更新されてもよい。
マッピングおよび定位ユニット312は、センサユニット314からセンサデータを受信して、地図700内のロボット102を定位し得る(例えば、位置付け得る)。いくつかの実装において、マッピングおよび定位ユニット312は、ロボット102が地図700の座標内にそれ自身を定位することを可能にする定位システムおよび方法を含み得る。センサ314からのデータに少なくとも部分的に基づいて、マッピングおよび定位ユニット312は、環境100の地図700の座標内のロボット102の位置を推定し得る。地図700の座標によってロボット102を定位させる能力は、ロボット102が、地図700を使用して環境100をナビゲートし、マッピングされた経路716上のロボット102の場所に接近することを可能にする。
いくつかの実装において、通信ユニット316は、1つ以上の受信機、送信機、および/または送受信機を含み得る。通信ユニット316は、BLUETOOTH(登録商標)、ZIGBEE(登録商標)、Wi−Fi、誘導無線データ送信、無線周波数、無線送信、無線周波数識別(「RFID」)、近距離無線通信(「NFC」)、汎ヨーロッパデジタル移動通信システム(「GSM」)、赤外線、ネットワークインターフェース、3G(3GPP/3GPP2)等のセル方式技術、高速ダウンリンクパケットアクセス(「HSDPA」)、高速アップリンクパケットアクセス(「HSUPA」)、時分割多元接続(「TDMA」)、符号分割多元接続(「CDMA」)(例えば、IS−95A、広帯域符号分割多元接続(「WCDMA」)等)、周波数ホッピングスペクトラム拡散(「FHSS」)、ダイレクトシーケンススペクトラム拡散(「DSSS」)、汎ヨーロッパデジタル移動通信システム(「GSM」)、パーソナルエリアネットワーク(「PAN」)(例えば、PAN/802.15)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(「WiMAX」)、802.20、ロングタームエボリューション(「LTE」)(例えば、LTE/LTE−A)、時分割LTE(「TD−LTE」)、汎ヨーロッパデジタル移動通信システム(「GSM」)、狭帯域/周波数分割多元接続(「FDMA」)、直交周波数分割多重方式(「OFDM」)、アナログセル方式、セル方式デジタルパケットデータ(「CDPD」)、衛星システム、ミリ波またはマイクロ波システム、音響、赤外線(例えば、赤外線データ協会(「IrDA」))、および/または無線データ伝送の任意の他の形態等の、伝送プロトコルを送信/受信するように構成され得る。
本明細書に使用される際、ネットワークインターフェースは、任意の信号、データ、あるいは、限定されるものではないが、FireWire(例えば、FW400、FW800、FWS800T、FWS1600、FWS3200等)、ユニバーサルシリアルバス(「USB」)(例えば、USB1.X、USB2.0、USB3.0、USBタイプC等)、イーサネット(例えば、10/100、10/100/1000(ギガビットイーサネット)、10−Gig−E等)、同軸ケーブルマルチメディア協会(MoCA)、Coaxsys(例えば、TVNETTM)、無線周波数チューナ(インバンドまたは00B、ケーブルモデム等)、Wi−Fi(802.11)、WiMAX(例えば、WiMAX(802.16))、PAN(例えば、PAN/802.15)、セル方式(例えば、3G、LTE/LTE−A/TD−LTE/TD−LTE、GSM等)、IrDA系統群等のものを含む、構成要素、ネットワーク、またはプロセスを有する、ソフトウェアインターフェースを含み得る。本明細書に使用される際、Wi−Fiは、IEEE標準802.11、IEEE標準802.11の変種、IEEE標準802.11(例えば、802.11a/b/g/n/ac/ad/af/ah/ai/aj/aq/ax/ay)に関する標準、および/または他の無線標準を含み得る。
通信ユニット316はまた、単一線および接地を有する任意のケーブル等の有線接続を介して伝送プロトコルを送信/受信するように構成されてもよい。例えば、かかるケーブルは、イーサネットケーブル、同軸ケーブル、ユニバーサルシリアルバス(「USB」)、FireWire、および/または当該技術分野で既知の任意の接続を含み得る。かかるプロトコルは、コンピュータ、スマートフォン、タブレット、データキャプチャシステム、移動通信ネットワーク、クラウド、サーバ等のような、外部システムに通信するために通信ユニット316によって使用され得る。通信ユニット316は、数字、文字、英数字、および/または記号からなる信号を送信および受信するように構成され得る。いくつかの場合において、信号は、128ビットまたは256ビット鍵等のアルゴリズム、および/または高度暗号化標準(「AES」)、RSA、データ暗号化標準(「DES」)、トリプルDES等のような標準に準拠する他の暗号アルゴリズムを使用して暗号化され得る。通信316は、状態、コマンド、および他のデータ/情報を送信および受信するように構成され得る。例えば、通信ユニット316は、ユーザがロボット102を制御することを可能にするようにユーザコントローラと通信し得る。通信ユニット316は、ロボット102がデータ、状態、コマンド、および他の通信をサーバに送信することを可能にするために、サーバ/ネットワークと通信し得る。サーバはまた、ロボット102を遠隔で監視および/または制御するために使用され得る、コンピュータおよび/またはデバイスに通信可能に連結されてもよい。通信ユニット316はまた、ロボット102および/またはその操作ユニット308のサーバからの更新(例えば、ファームウェアまたはデータの更新)、データ、状態、コマンド、および他の通信を受信してもよい。
いくつかの実装において、アクチュエータユニット318は、電気モータ、ガスモータ、駆動磁石システム、ソレノイド/ラチェットシステム、圧電システム(例えば、インチワームモータ)、磁歪素子、ジェスチャ、および/または当該技術分野で既知のアクチュエータを駆動する任意の方式等のアクチュエータを含み得る。例示として、かかるアクチュエータは、環境100または任意の他の環境を通してナビゲートするために、ロボット102用の車輪または他の変位可能化ドライバ(例えば、機械脚、ジェットエンジン、プロペラ、油圧技術等)を作動させ得る。いくつかの場合において、アクチュエータユニット318は、床清掃のためのブラシを起動すること、スキージを移動させること(例えば、上、下、左、右、前、後に移動させること)、水のオン/オフを切り換えること、水を噴霧すること、吸引のオン/オフを切り換えること、吸引ホース位置を移動させること、アームをジェスチャ動作させること、リフトを昇降させること、カメラおよび/もしくはセンサユニット314の任意のセンサを切り換えること、ならびに/または動作を実施するためにロボット102に所望される任意の運動等の、動作および/または動作固有タスクのために構成されたアクチュエータを含み得る。
いくつかの実装において、ユーザインターフェースユニット322は、ユーザ(例えば、ユーザ604または任意の他のユーザ)がロボット102と対話することを可能にするように構成され得る。例えば、ユーザインターフェースユニット322は、無線または有線を通して連結されるかどうかにかかわらず(限定されるものではないが、例えば、通信ユニット316を参照して、本開示に説明された無線または有線接続のいずれかを含む)、データおよび/またはコマンドを入力および/または受信するために、タッチパネル、ボタン、キーパッド/キーボード、ポート(例えば、USB、DVI、ディスプレイポート、E−Sata、Firewire、PS/2、VGA、SCSI、オーディオポート、HDMI、PCMCIAポート、メモリカードポート(例えば、SDおよびminiSD)、および/またはコンピュータ可読媒体用のポート)、マウス、ローラボール、コンソール、バイブレータ、オーディオトランスデューサ、および/またはユーザのための任意のインターフェースを含み得る。ユーザインターフェースユニット322は、限定されるものではないが、LCD、LEDディスプレイ、LED LCDディスプレイ、IPS、ブラウン管、プラズマディスプレイ、HDパネル、4Kディスプレイ、Retinaディスプレイ、有機LEDディスプレイ、タッチ画面、表面、キャンバス、ならびに/または視覚的表現のための当分野で既知の任意のディスプレイ、テレビ、モニタ、パネル、および/もしくはデバイス等の、ディスプレイを含み得る。いくつかの実装において、ユーザインターフェースユニット322は、ロボット102の本体上に位置付けられ得る。いくつかの実装において、ユーザインターフェースユニット322は、ロボット102の本体から離れて位置付けられてもよいが、直接的または間接的に(例えば、ネットワークまたはクラウドを介して)ロボット102に通信可能に連結され得る(例えば、通信ユニット316を介して)。
いくつかの実装において、地図評価ユニット324は、比較器、信号プロセッサ、画像プロセッサ、および他のソフトウェアまたはハードウェア構成要素を含み得る。図7A〜7B、8A〜8C、9A〜9C、10、11を参照して説明されることになるように、地図評価ユニット324は、地図700(または他の地図)を分析および評価して、マッピングの誤りを検出し、地図700の品質(例えば、高い、良好、容認可能、不十分、および/または任意の他の指定)、および/または自律ナビゲーションに対する地図700の有用性を決定し得る。いくつかの場合において、地図700または任意の他の地図の品質を分析する際に、地図評価ユニット324は、マッピングの誤りが存在したこと、および/または地図が不十分な品質であることを決定し得る。その結果、ロボット102は、ユーザインターフェースユニット322を使用して、または通信ユニット316を介して、ユーザ(例えば、ユーザ604)に、経路(例えば、経路116)を再実演するか、またはそうでなければ環境100を再マッピングすることを促し得る。
いくつかの実装において、ナビゲーションユニット326は、ナビゲートするためにロボット102に対する方向の命令を提供するように構成された構成要素および/またはソフトウェアを含み得る。ナビゲーションユニット326は、マッピングおよび定位ユニット312、センサユニット314からのセンサデータ、および/または他の操作ユニット308によって生成された地図および定位情報を処理し得る。例えば、ナビゲーションユニット326は、マッピングおよび定位ユニット312から地図700を受信し得る。ナビゲーションユニット326はまた、経路716を含む、地図700内のロボット102の場所の少なくとも一部を示し得る、マッピングおよび定位ユニット312からの定位情報も受信し得る。ナビゲーションユニット326はまた、ロボット102の周囲の物体の少なくとも一部を示し得るセンサユニット314からのセンサデータも受信し得る。地図、場所、およびセンサデータのうちの1つ以上を使用して、ナビゲーションユニット326は、ナビゲートする場所をロボット102に命令し得る(例えば、前、左、右、後に進む等)。
いくつかの実施形態において、電源306は、限定されるものではないが、リチウム、リチウムイオン、ニッケル−カドミウム、ニッケル−金属水素化物、ニッケル−水素、炭素−亜鉛、酸化銀、亜鉛−炭素、亜鉛−空気、酸化水銀、アルカリ、または当分野で既知の任意の他のタイプの電池を含む、1つ以上の電池を含み得る。一定の電池は、無線(例えば、共振回路および/または共振タンク回路によって)および/または外部電源へのプラグ接続等によって、充電され得る。電源306はまた、壁コンセント、ならびに太陽光、風力、水、原子力、水素、ガソリン、天然ガス、化石燃料、機械的エネルギー、蒸気、および/または任意の動力源を電気に変換する電子デバイスを含む、任意のエネルギー供給源であってもよい。
いくつかの実装において、オペレーティングシステム310は、メモリ302、コントローラ304、電源306、操作ユニット308内のモジュール、ならびに/またはロボット102の任意のソフトウェア、ハードウェアおよび/または特徴を管理するように構成され得る。例えば、限定されるものではないが、オペレーティングシステム310は、ロボット102のハードウェアリソースを管理するためのデバイスドライバを含み得る。
上述されたように、ロボット102の上述されたコンポーネントのいずれかは、ソフトウェアおよび/またはハードウェアで具体化され得る。例えば、ユニット/モジュールは、コンピュータ上で動作されたハードウェアの断片および/またはコードの断片であり得る。
図4は、ロボット102が経路を学習し、その後、その経路を走行する、代表的方法400のプロセスフロー図を例示する。例えば、教示段階414の部分402、404、406において、ロボット102は、ユーザ604によって実演された経路116を学習し得る。続いて、自律段階416の部分408、410、412において、ロボット102は、経路106または経路126に沿って自律的にナビゲートし得る。
いくつかの実装において、ロボット102は、図5Aに例示されるユーザインターフェース500内の入力574から入力を受信することによって教示段階414を開始し得る。ユーザインターフェース500は、画面を有するモバイルデバイス、専用デバイス、または任意の他のデバイスであり得るディスプレイ576上に現れ、ユーザ入力を受け入れるように構成され得る。いくつかの場合において、ディスプレイ576は、ロボット102のユーザインターフェースユニット322の一部であり得る。いくつかの場合において、ディスプレイ576は、限定されるものではないが、ロボット102の通信ユニット316を通して通信可能に連結される等の、ロボット102に通信可能に連結された別個のディスプレイであってもよい。入力574は、ボタン、ラジオボタン、プルダウンメニュー、テキスト入力、ならびに/または当分野で既知のユーザが情報および/もしくはコマンドを入れる任意の方式を含み得る。ユーザインターフェース500はまた、本開示で後に説明されることになる、自律段階416を開始するために使用され得る入力572も含み得る。入力572は、ボタン、ラジオボタン、プルダウンメニュー、テキスト入力、または当分野で既知のユーザが情報および/もしくはコマンドを入力する任意の方式を含み得る。
図4に戻ると、部分402において、ロボット102は、初期化場所104を検出し、ロボット102の位置および/または配向を初期化し得る。いくつかの実装において、初期化場所104は、床および/または床配置図に対する位置である。例えば、初期化場所104は、ロボット102がより後の経路初期化(例えば、学習された経路を呼び戻す際の)のために訓練する経路の初期化場所を使用し得るように、ユーザによって画定され得る(例えば、物理的またはデジタルに描写および/またはマーク付けされる)いくつかの実装において、ロボット102は、ユーザがロボット102を停止させた場所に少なくとも部分的に基づいて、ロボット102が初期化場所104にあることを検出し得る。したがって、ロボット102は、ユーザが停止し、続いて、ロボット102を訓練している場所(部分404を参照して説明されることになるように)が初期化場所104であることを仮定し得る。いくつかの実装において、初期化場所104に、または実質的にその近くに送信機(例えば、RFID、NFC、BLUETOOTH(登録商標)、無線伝送、無線周波数フィールド、および/または本開示に説明された任意の他の通信プロトコルを使用して送信する送信機)が存在し得る。ロボット102が、ロボット102が送信機上、または実質的にその近くにあることを検出したとき、ロボット102は、ロボット102が初期化場所104にあることを検出し得る。いくつかの場合において、送信機は、ロボット102が送信機からの通信を、開始場所にあるときのみ、検出し得るように、動作可能な範囲を有し得る。例示的な例として、NFCの伝送範囲は、10センチメートル以下であり得る。したがって、ロボット102がNFCを介して伝送を受信するとき、ロボット102は、それが初期化場所104内に位置付けられていることを検出し得る。いくつかの実装において、ロボット102は、送信機からの伝送を受信し、信号強度の減衰に少なくとも部分的に基づいて送信機までの距離を計算し得る。このようにして、ロボット102は、それが送信機にどの程度近いかを検出し得、その結果、送信機および/または初期化場所104に対するロボット102の位置を検出し得る。いくつかの実装において、ロボット102は、複数の送信機の信号強度を三角測量することによって、その場所を決定し得る。いくつかの実装において、初期化場所104は、床上の標示(例えば、マーキング、記号、線等)によって画定され得る。ロボット102の1つ以上のセンサ(例えば、センサユニット314のうちの)が、床の標示を検出したとき、ロボット102は、ロボット102が初期化場所104に位置付けられていることを検出し得る。
いくつかの実装において、カメラが、天井に位置付けられ、カメラは、ロボット102に通信可能に連結され得る(例えば、通信ユニット316を通して)。いくつかの場合において、カメラは、センサユニット314の一部であり得る。カメラは、画像処理および/または機械学習を通してロボット102の位置/姿勢を決定し、位置/姿勢をロボット102に通信し得る。いくつかの場合において、カメラは、画像処理および/または機械学習を通してロボット102が初期化場所104にあるときを認識し、ロボット102が初期化場所104にあることをロボット102に通信することになる。
いくつかの場合において、ユーザ604は、床上の画定された位置によってロボット102を位置付け得るが、ロボット102は、周囲物体に対する初期化場所104の関係によって初期化場所104を検出および登録することになる。例示的な例として、ロボット102は、図5B〜図5Dを参照して説明されることになるように、センサ560A〜560Dのうちの1つ以上によって周囲物体512、546、548、550のうちの1つ以上を検出することによって初期化場所104を検出し得る。いくつかの実装において、より具体的には、ロボット102は、センサ560A〜560Dのうちの1つ以上によって図5B〜5Dを参照して説明されることになるように、点590、592、594、596、598等の、1つ以上の周囲物体512、546、548、550上の1つ以上の位置を検出することによって初期化場所104を検出し得る。初期化場所104にある間、ロボット102は、その配向および位置を初期化し得る。
いくつかの実装において、初期化位置104から、ロボット102は、初期化位置104にあるロボット102の存在を検出する、ならびに/または1つ以上の周囲物体に対するロボット102の相対位置および/もしくは配向を決定し得る。かかる実装において、初期化位置104内のロボット102の存在を検出し、かつその配向および/または位置を初期化するために、ロボット102は、少なくとも部分的に、そのセンサ(例えば、センサユニット314)を使用して、その周囲を検知し得る。これらのセンサは、物体(例えば、アイテム、壁等)、床、天井、人員および物、標示、表面等の、周囲環境の特性を検知し得る。その周囲で検知された物体の相対位置および/または配向は、ロボットがその初期化場所に対するその方角を取得することを可能にし得る。
例示的な例として、図5B〜5Dは、初期化場所104内のロボット102の例の俯瞰図を例示し、ロボット102は、初期化場所104内のその存在を検出する、ならびに/またはその配向および/もしくは位置を検知し得る。図5Bに例示されるように、ロボット102は、初期化場所104内に位置付けられ得る。ロボット102は、前側502、右側508、左側506、および後側504等の、複数の側部を有する本体を含み得る。ロボット102はまた、上側564および底側(図示せず)を有してもよい。当業者は、ロボット102が、ロボット102の表面に対応する、形状(例えば、矩形、ピラミッド形、人間型、または任意の他の設計形状)によって異なり得る他の側部を同様に有し得ることを認めるべきである。例示として、前側502は、ロボット102の前方側に位置付けられ得、前方側は、ロボット102の前方運動の方向の前方にある。後側504は、ロボット102の後方側に位置付けられ得、後方側は、前方側の実質的に反対方向を向く側部である。右側508は、前側502に対して右手側であり得、左側506は、前側502に対して左手側であり得る。
ロボット102は、1つ以上の前側502、右側508、左側506、および/または後側504に沿って位置付けられた1つ以上のセンサ560A〜560D(センサユニット314の一部であり得る、および/または本開示に説明される任意のセンサと実質的に同様であり得る)を有し得る。センサ560A〜560Dは、外受容性センサを備え得る。いくつかの場合において、センサ560A〜560Dの各々は、周囲環境100の異なる特性を検出し得る複数のセンサを含み得る。ロボット102はまた、固有受容性センサを含み得る、1つ以上のセンサ568A、568Bを有してもよい。当業者は、より多くのセンサが使用され、異なるタイプのセンサおよび/または異なるセンサ範囲(例えば、環境100のより狭い範囲またはより広い範囲を検出する用に位置するセンサ)が所望される、図5B〜5Dに例示されるものとは異なる位置にあり得ることを認めるべきである。
センサ560A〜560Dは、側部(例えば、前側502、右側508、左側506、および後側504、上側564、底側(図示せず)、ならびに/または任意の他の側部)に直交するように位置付けられるか、または角度を有して配置され得る。角度は、検知されることを所望される物体、および範囲、焦点面、関心領域、および/またはセンサ560A〜560Dの各々の他の特性によって決定され得る。非限定的な例として、ソナーセンサは、ソナーセンサからの広がり(例えば、マルチローブパターン、ファン、またはセンサの他の特徴的な形状)で展開する音響信号を放射し得る。例えば、図5Eは、ロボット102の俯瞰図を例示し、ロボット102は、エネルギーパターン580Bを放射および/または受信する。エネルギーパターン580Bは、本質的に例示的であり、信号の実際の波形または伝送の表現ではない。その代わりに、エネルギーパターン580Bは、いくつかの場合において前側104からセンサ560Bによって放射および/またはその後反射され受信されるエネルギーを示し、エネルギーパターン580Bの広がりにわたる物体の検出を可能にする。エネルギーパターン580Bは、センサ560Bのタイプによって使用される特徴的なエネルギーであり得る。例えば、センサ560Bがライダである場合、エネルギーパターン580Bは、センサ560Bから放射された(およびいくつかの場合においてその後反射され受信される)複数の光波のパターンのうちの少なくとも一部を表し得る。センサ560Bがソナーセンサである場合、エネルギーパターン580Bは、センサ560Bによって放射された(いくつかの場合においてその後反射され受信される)音波のパターンであり得る。センサ560Bがカメラである場合、周辺光またはセンサ560Bのフラッシュからの光が、物体を照らし得、センサ560Bは、反射光を検出し得る。したがって、いくつかの場合において、エネルギーパターン580Bは、放射されたエネルギーを表わさず、センサ560Bによって放射されるエネルギーがない場合、受信されたエネルギーを表し得る。センサ560Bが赤外線センサまたは赤外線を検出する3Dカメラである場合、エネルギーパターン580Bは、センサ560Bによって放射された(およびその後反射され受信される)赤外線光のパターンであり得る。赤外線センサの場合において、センサ560Bはまた、反射された周囲の赤外光を認識するためにフィルタを使用してもよい。別の例として、センサ560Bは、3次元で環境を検知するために、エネルギーを放射および受信するように構成された3Dセンサであってもよい。当業者は、他のセンサが使用され得、エネルギーパターン580Bが、センサ560Bによって放射、反射、および/または受信される特徴的なエネルギーを少なくとも部分的に表し得ることを認めるべきである。
ソナーセンサの例は、広がりがロボット102から所望される領域または範囲を包含するように、センサ560A〜560Dのうちの1つ以上として位置付けられ得る。測定値(例えば、距離および/または角度測定値)は、センサ560A〜560Dに関して、またはロボット102の重心もしくは任意の他の設計位置等の、ロボット102の本体上の他の位置に関して取得され得る。
図5Bに戻ると、1つ以上のセンサ560A〜560Dを使用して、ロボット102は、その周囲環境内の物体512を検出し、物体512に対するロボット102の位置および/または配向を概算し得る。例えば、物体512は、障害物(例えば、アイテム、壁等)であり得る。物体512から、ロボット102は、物体512上の点590までの距離516を測定し得、これは、インチ、フィート、メートル、または任意の他の測定単位(例えば、メトリック、US、または他の測定システムの測定)等の、標準単位を使用する絶対距離測定であり得る。いくつかの実装において、距離516は、目盛、ピクセル、センサの範囲のパーセンテージ等のような、相対(または非絶対)単位で測定され得る。いくつかの実装において、距離516は、初期化場所104、物体512、センサ560A〜560Dのうちのいずれか1つ、ロボット102の重心、または任意の他の決定された場所等の、基準点に対するxおよびy座標で表現され得る。かかる場合において、x座標は、第1の軸に対する基準点までの距離であり得、y座標は、第2の軸の基準までの距離であり得、第1の軸に直交する第2の軸は、直交座標系を形成する。いくつかの場合において、距離516は、上述されたxおよびy座標、ならびにz座標を含む、3次元で測定され得、z座標は、第3の軸の基準点までの距離であり得る。
いくつかの実装において、1つ以上のセンサ560A〜560Dは、物体512の点590の距離516を測定または概算し得る。例えば、センサ560Aは、元の放射された音波とその音波のセンサ560Aへの反射との時間差を測定することによって距離を測定し得るソナーセンサであってもよく、放射された音波と反射された音波との間の時間差は、音速を使用して距離にスケール変更され得る。
いくつかの実装において、1つ以上のセンサ560A〜560Dは、後で説明されることになるように、地図700を作成し得、地図700は、物体512、および、いくつかの実装において、学習された経路を含む。距離516は、地図700上の相対単位を使用すること、または地図700の相対単位を絶対距離測定値にスケール変更すること等によって、地図700上で取得された概算測定値に少なくとも部分的に基づいて概算され得る。
ロボット102はまた、初期化場所104のその配向を概算し得る。いくつかの実装において、ロボット102は、初期化場所104内の点、物体512、センサ560A〜560D、ロボット102の重心、または任意の他の決定された位置に対する等の、基準点に対する相対角度514を概算し得る。角度514は、度、ラジアン、または任意の単位で測定され得る。いくつかの実装において、角度514は、水平面(例えば、上述された距離516または他の測定値の直交座標系)等の2D平面に対して測定され得る。いくつかの実装において、ロボット102に対する物体512のロール、ヨー、およびピッチのうちの1つ以上等の追加の角度が、測定され得る。
例示的な例として、ロボット102は、物体512に対する角度514を測定し得る。物体512に対する距離516を概算し得るやり方と同様、1つ以上のセンサ560A〜560Dは、物体512に対する角度514を概算し得る。例えば、センサ560Aは、受信された反射エネルギーの角度に基づいて、センサ560Aに対する物体512の配向(例えば、角度514)を決定し得るソナーセンサであり得る。上述されたように、いくつかの実装において、1つ以上のセンサ560A〜560Dは、物体512を含み得る地図700を作成し得る。角度514は、地図700上の相対単位を使用するか、またはそれらを測定された距離に対する相対単位にスケール変更する等によって、地図700上で取得された概算測定値に少なくとも部分的に基づいて概算され得る。
いくつかの実装において、ロボット102は、物体512に対するその位置および/もしくは配向(例えば、距離516および/もしくは角度514)、ならびに/またはその中の点590をメモリ302内に記録し、物体512および/もしくは点590に対するその位置を初期化位置104と関連付け得る。このようにして、ロボット102は、その後、初期化位置104を検出することと、続いて初期化位置104に戻るときに物体512および/または点590に対して位置を初期化することとの両方を行い得る。初期化位置104の検出および位置の初期化は、マッピングおよび定位ユニット312によって実施され得る。
図5Cは、初期化場所104内で角度を有して位置付けられたロボット102の俯瞰図を例示する。このとき、ロボット102のセンサ560Aは、図5Bを参照して説明された、センサ560Aが距離516および角度514を測定したやり方と実質的に同様のシステムおよび方法を使用して、物体512の点591までの角度518での距離524を測定し得る。加えて、図5Cは、複数のセンサ560A〜560Dが物体512に対する距離および角度を独立して測定し得ることを例示する。例えば、センサ560Bは、図5Bを参照して説明された、ロボット102のセンサ560Aが距離516および角度514を測定したやり方と実質的に同様のシステムおよび方法を使用して物体512の点592に対する距離522および角度520を測定し得る。このようにして、ロボット102は、初期化位置104を検出する、および/または物体512に対するロボット102の位置および/または配向を初期化し得る。いくつかの実装において、ロボット102は、物体512に対するロボット102の位置および/もしくは配向(例えば、距離516、522および角度514、520のうちの1つ以上)、ならびに/またはその中の点591、592をメモリ302内に記録し、物体512および/または点591、592に対するロボットの102位置および/または配向を初期化位置104と関連付け得る。したがって、ロボット102は、その後、初期化位置104を検出することと、続いて初期化位置104に戻るときに物体512および/または点591、592に対してロボットの102位置および/または配向を初期化することとの両方を行い得る。
図5Dは、複数の物体512、546、548、550の例が、初期化場所104を検出する、ならびに/またはロボット102の配向および/もしくは位置を初期化するために使用されるロボット102の例の俯瞰図を例示する。図5Bを参照して説明された、ロボット102のセンサ560Aが距離516および角度514を測定したやり方と実質的に同様のシステムおよび方法を使用すると、ロボット102はまた、物体546の点594に対する距離558および角度540、物体548の点596に対する距離554および角度542、ならびに物体550の点598に対する距離556および角度544も測定し得る。このようにして、ロボット102は、初期化位置104を検出し、1つ以上の物体512、546、548、550、および/またはその中のポイント590、594、596、598に対する、ロボット102の位置および/または配向を初期化し得る。いくつかの実装において、ロボット102は、物体512、546、548、550のうちの1つ以上の点590、594、596、598に対する、その位置および/または配向(例えば、距離516、558、554、556および/または角度514、540、542、544)をメモリ302内に記録し、物体512、546、548、550のうちの1つ以上、および/またはその中の点590、594、596、598に対する、ロボット102の位置および/または配向を初期化位置104と関連付け得る。したがって、ロボット102は、その後、初期化場所104を検出することと、続いて初期化位置104に戻るときにロボット102の位置および/または配向を初期化することとの両方を行い得る。
初期化場所104を検出するために複数の物体512、546、548、550を使用することは、ロボット102が初期化場所104により正確に位置することを可能にする際に有利であり得る。複数の物体512、546、548を使用することはまた、追加の一意性を初期化場所104に提供し得、これは、ロボット102が初期化場所104を検出することを補助する、および/またはロボット102が異なる場所を初期化場所104として間違える機会を低減し得る。
ロボット102が物体に対する距離および角度を測定する際、図5B〜図5Dを参照して説明されたように、ロボット102は、外受容性センサ568A〜568Bを初期化し得る。センサ568A〜568Bの初期化は、センサ568A〜568Bをゼロに合わせること、センサ568A〜568Bを初期値に設定すること、またはセンサ568A〜568Bの現在値をメモリ302内に記憶することを含み得る。いくつかの実装において、外受容性センサ568A〜568Bは、基準点に対して初期化し得る。例示的な例として、ロボット102は、点590が原点(2D地図内の(0、0)または3D地図内の(0、0、0))として扱われるように、点590に対して外受容性センサ568A〜568Bを初期化し得る。したがって、ロボット102は、点590に対する距離516および角度514を測定し、原点に対するロボット102の初期位置および/または配向を決定し得る。この決定は、マッピングおよび定位ユニット312によって実施され得る。いくつかの実装において、距離516および/または角度514を使用すると、ロボット102は、その後、ベクトル(例えば、距離516および角度514)に対して三角法を使用して、その座標(例えば、2D地図内の(x、y)または3D地図内(x、y、z))を決定し得る。例えば、x座標は、いくつかの場合において、距離516によって乗算された角度514の余弦であり得る。y座標は、いくつかの場合において、距離516によって乗算された角度514の正弦であり得る。限定されるものではないが、点591、592、594、596、598のうちの1つ等の別の点が、原点として同様に使用されてもよく、図5B〜5Dに関して例示および/または説明されたように対応するベクトル(例えば、距離516、518、522、558、554、556および/または角度514、518、520、540、542、544)と共に三角法に使用されてもよい。いくつかの場合において、複数の点(例えば、点590、591、592、594、596、598のうちの2つ以上)がロボット102を初期化し得るように、複数の原点が存在してもよい。複数の原点を使用することは、複数の地図を作成すること、計算の簡素化のために選択する複数の原点を提供すること、1つ以上が不正確な読み取り値を有する場合のセンサのチェックを提供すること、および他の利益のために望ましい場合がある。
有利には、センサ568A〜568Bは、オドメトリを使用するセンサ568A〜568Bのこの初期化に対して、ロボット102の運動(例えば、走行した距離および旋回量)を追跡し得る。例えば、センサ568A〜568Bは、ロボット102の角度旋回を検出し得る1つ以上のオドメータ(例えば、車輪エンコーダ(例えば、ロータリエンコーダ)、ビジュアルオドメトリ、コンパス、全地球測位システム(GPS)、慣性測定ユニット(IMU)、ライダ、3Dカメラ(例えば、赤色、緑色、青色、深度(「RGB−D」)カメラ)等)を含み得る。IMUは、加速度計、磁力計、角速度センサ等を含み得る。例えば、センサ568Aがライダを含む場合、変位(および対応する位置)は、異なる時間の異なる画像の位置の差に基づいて決定され得る。RGB−Dカメラが使用される場合、スキャンマッチングが、位置を決定するために使用され得る。センサ568A〜568Bはまた、ロボット102によって走行された距離を測定するために1つ以上のオドメータを含み得る。
図4の方法400に戻ると、部分404において、ロボット102は、経路116および環境100の地図700を記録しながら、経路116(図1Bに例示された)に沿ってユーザ制御下で走行し得る。図6Aは、ロボット102の例を制御するユーザ604の例の側面図を例示する。ユーザ604は、管理人、守衛、またはロボット102を使用し得る任意の他の人員であり得る。例示されるように、ロボット102は、店舗、倉庫、オフィスビル、家屋、貯蔵施設等の床を清掃するように構成された床清掃機であり得る。したがって、ロボット102は、ロボット102の下および/または周囲の床を清掃するように構成されたブラシ608を有し得る。
ロボット102は、動作および/または作動を地図700上の位置および/または軌道と関連付ける(例えば、後で実施する)ように訓練され得る。例えば、ブラシ608は、アクチュエータユニット318によって作動され得、ブラシ608は、アクチュエータユニット318によって、オン/オフを切り換える、および/または上昇/下降され得る。ロボット102は、経路716および地図700を記録しながら、ユーザがブラシ608を制御する際にブラシ608の作動を学習し得る。いくつかの実装において、地図700は、地図700および/またはその中の経路716上の1つ以上の位置および/または軌道でのブラシ608の作動のためのアクチュエータ命令を含み得る。いくつかの実装において、ロボット102はまた、1つ以上のスキージ616を有してもよい。スキージ616は、床を清掃するか、または擦るために、ゴムで縁取られた刃等のゴム片であり得る。アクチュエータユニット318はまた、スキージ616を上昇/下降させるために使用されてもよい。したがって、ロボット102は、経路116および地図700を記録しながら、ユーザがスキージ616を制御する際にスキージ616の作動を学習し得る。いくつかの実装において、地図700は、地図700上の1つ以上の場所および/または軌道でのスキージ616の作動のためのアクチュエータ命令を含み得る。水のオン/オフを切り換えること、水を噴霧すること、吸引のオン/オフを切り換えること、吸引ホース位置を移動させること、アームをジェスチャ動作させること、リフトを昇降させること、カメラおよび/もしくはセンサユニット314の任意のセンサを切り換えること、ならびに/または動作を実施するためにロボット102に所望される運動等の、洗浄機の他の器具、または任意の他のロボット形態の作動もまた、同様に学習され得る。
いくつかの実装において、動作および/またはアクチュエータ命令が地図700および/またはその中の経路716上の位置と関連付けられる場合、自律的にナビゲートしながら、ロボット102は、それらの位置を通過する毎に、それらの動作および/またはアクチュエータ命令を実施し得る。いくつかの実装において、動作および/またはアクチュエータ命令が、地図700上の位置および軌道、ならびに/またはその中の経路716と関連付けられる場合、自律的にナビゲートしながら、ロボット102は、経路内の同一方向および/または同一の相対的時間で、ある位置を通過するときに、それらの動作および/またはアクチュエータ命令を実施し得る。したがって、これらの実装において、ロボット102は、ある位置を通過する毎に(例えば、同一物理的場所を複数回、周回および通過する場合)、それらの動作および/またはアクチュエータ命令を実施しないが、ロボット102が経路内の特定の方向または特定の事例のいずれかの位置(例えば、場所)を通過するときのみ、かかる動作および/またはかかるアクチュエータ命令を実施し得る。
当業者は、ロボット102が床洗浄機であったとしても、ロボット102がいくつかの異なる形態を有し得ることを認めるべきである。図6Bは、床洗浄機用の本体形態の例の側面図を例示する。これらは、様々な本体形態をさらに例示するが、ロボット102をいかなる特定の本体形態またはさらに床洗浄機にも制限しないことを意図する非限定的な例である。本体形態652の例は、使用者が床を清掃するために本体形態652の後ろを押し得る小さいフレームを有する直立形状を有する。いくつかの場合において、本体形態652は、清掃において使用者を補助し得るが、本体形態652の自立運動も可能にし得る、電動推進力を有し得る。本体形態654は、本体形態652よりも大きい構造的形状を有する。本体形態654は、操舵以外に、本体形態654に対してユーザ労力がほとんどまたは全くない状態で移動することを可能にするように電動化され得る。ユーザは、本体形態654を移動させる際にそれを操舵し得る。本体形態656は、シート、ペダル、およびステアリングホイールを含み得、ユーザは、本体形態656が清掃する際に、車両のように本体形態656を運転し得る。本体形態658は、本体形態656よりも大きい形状を有し得、複数のブラシを有し得る。本体形態660は、ユーザが本体形態660を運転する際にユーザが座る、部分的または完全に覆われたエリアを有し得る。本体形態662は、ユーザが本体形態662を運転しながらユーザが立つ、足場を有し得る。
さらに、本開示で説明されるように、ロボット102は、そもそも床洗浄機でなくてもよい。追加の例示のために、限定ではなく、図6Cは、ロボット102の本体形態のいくつかの追加例を例示する。例えば、本体形態664は、ロボット102が起立店舗用掃除機である例を例示する。本体形態666は、ロボット102が人体と実質的に同様の外観を有する人間型ロボットである例を例示する。本体形態668は、ロボット102がプロペラを有するドローンである例を例示する。本体形態670は、ロボット102が車輪および客室を有する車両形状を有する例を例示する。本体形態672は、ロボット102がローバである例を例示する。
図6Aに戻ると、ロボット102は、ユーザ604による制御のための任意の数の方式で構成され得る。例示されるように、ユーザ604は、ロボット102の後ろを歩行し、操舵ホイール610を使用してロボット102を操舵し得る。他の実装において、ロボット102は、ユーザ604がロボット102の座席または起立する足場に乗ってロボット102を制御し得る、搭乗型床清掃機(図示せず)であってもよい。いくつかの実装において、ユーザ604は、無線リモート、モバイルデバイス、ジョイスティック、または当分野で既知のナビゲーション用の任意の他の装置等の、遠隔制御によって、ロボット102を遠隔に制御し得る。この制御は、左旋回、右旋回、前進(例えば、前方方向に進むように、ガスペダルを使用するか、またはロボット102に命じる)、後退(例えば、後方方向に進むように、逆ペダルを使用するか、またはロボット102に命じる)、オン/オフの切り換え、ブラシの上昇/下降、水のオン/オフの切り換え等を含み得る。いくつかの実装において、ユーザ604は、ロボット102の運動の駆動、ブラシの上昇/下降、水のオン/オフの切り換え等を行う、アクチュエータユニット318を制御し得る。他の実装において、ロボット102は、床清掃機ではなく、本開示に説明された他のロボットのいずれかであり得る。
図6Dは、ユーザ604がロボット102の例を制御し、ロボット102がその周囲を検知する際の俯瞰図を示す。ロボット102は、ロボットが経路116をナビゲートする際に、物体を検出し、かつロボット102の周囲をマッピングするために、センサ560A〜560Dおよび他のセンサのうちの1つ以上を使用し得る。例えば、ロボット102は、エネルギー波580A、580Cを放射し得る。エネルギー580Bは、図5Eを参照すると共に、本開示の全体を通していずれかの場所に、先に説明された。エネルギー波580A、580Cは、エネルギー波580Bと実質的に同様であり得、エネルギー波580Aは、センサ560Aに対応し、エネルギー波580Cは、センサ560Cに対応する。
図7Aは、ロボット102の例が環境100内を走行する際にロボット102によって生成される地図700および経路716の例を例示する。いくつかの実装において、地図700の生成は、マッピングおよび定位ユニット312によって実施され得る。地図700は、ピクセルを含み得、各ピクセルは、環境100のマッピングされたエリアに対応する。地図700内のピクセル数は、地図700の解像度に基づいて決定され得る。例えば、地図700は、様々なディスプレイサイズ(例えば、3.5インチ、10インチ、20インチ、および/または当分野で既知の画面の任意の他の対角線画面寸法)およびディスプレイ解像度(例えば、800×600、1024×768、1360×768、1680×1050、1920×1200、2560×1440、3840×2160、または当分野で既知の任意の既知のディスプレイ解像度)の画面上で閲覧され得る。地図700を表示する画面はまた、矩形、または円形、三角形、六角形、または任意の他の形状を含む、非矩形であり得る。これらの画面は、ユーザインターフェースユニット322の一部であり得る。地図700は、環境100と実質的に同様のレイアウトであり得、地図700の各ピクセルは、環境100内の場所にほぼ等しいものであり得る。
いくつかの実装において、地図700のピクセルは、1つ以上の状態を有し得、ピクセル状態は、そのピクセルによって表される環境100内の位置/場所の特性の少なくとも一部を示す。例えば、地図700のピクセルは、二値であり得、第1のピクセル状態(例えば、ピクセル値)は、障害物のない(例えば、ナビゲート可能)場所の少なくとも一部を示し、第2のピクセル状態は、通行止めの(例えば、ナビゲート不可能)場所の少なくとも一部を示す。例示として、ゼロ(0)のピクセル値は、障害物のない場所の少なくとも一部を示し得、1のピクセル値は、通行止めの場所の少なくとも一部を示し得る。
いくつかの実装において、上述の二値状態の代わりに、またはそれに加えて、地図700のピクセルは、不明場所(例えば、情報のない位置/場所)の少なくとも一部を示すピクセル状態、走行されるべきではない位置/場所の少なくとも一部を示すピクセル状態、ナビゲート可能経路(経路716)の一部である少なくとも一部を示すピクセル状態、ロボット102が走行したエリアの少なくとも一部を示すピクセル状態、ロボット102が走行していないエリアの少なくとも一部を示すピクセル状態、物体の少なくとも一部を示すピクセル状態、溜水の少なくとも一部を示すピクセル状態、および/または地図700上の位置/場所の任意の他の分類のうちの1つ以上等の他のピクセル状態を有し得る。
地図700のピクセルはまた、単一値よりも多い値、またはピクセル状態を記憶してもよい。例えば、地図700の各ピクセルは、ベクトルまたは行列内に記憶された値等の複数の値を記憶してもよい。これらの値は、位置が経路716に沿ってある点(例えば、ピクセル)で測定されたとき、ロボット102の位置/姿勢(例えば、場所および/または配向を含む)の少なくとも一部を示す値を含み得る。これらの値はまた、ロボット102が位置/場所を清掃するべきであるか、もしくは清掃するべきではないかどうか、またはロボット102によって取られるべき他の動作を含んでもよい。
ロボット102は、経路116(図1Bに図示される)に沿って走行し得、経路716として地図700に反映され得る。ロボット102は、地図700上のロボットインジケータ702によって表され得、地図700内のロボットインジケータ702の位置は、環境100内のロボット102の相対位置を少なくとも部分的に反映し得る。各場所において、ロボット102は、経路116に沿って走行し、ロボット102は、初期化場所104または別の基準点(例えば、物体512、546、548、550、点590、591、592、594、596、598、および/または初期化場所104での初期化中に使用される任意の他の基準点ロボット102)に対するその位置および/または配向を決定し得る。これらのマッピングおよび定位機能は、マッピングおよび定位ユニット312によって実施され得る。初期化場所104は、マッピングされた位置724として地図700上に表され得る。終了場所114は、マッピングされた位置726として地図700上に表され得る。例えば、ロボット102は、オドメトリを使用して初期化場所104(または別の基準点)からのその距離を測定または概算し得、ロボット102は、固有受容性センサ568A〜568B(例えば、車輪エンコーダ(例えば、ロータリエンコーダ)、ビジュアルオドメトリ、IMU(加速度計、磁力計、角速度センサ等を含む)を使用して、初期化場所104でのその初期化からのその運動を追跡する。例示的な例として、固有受容性センサ568A〜568Bのうちの1つ以上は、ロボット102の車輪の回転に基づいて距離を測定または推定する車輪エンコーダであり得る。別の例示的な例として、ビジュアルオドメータが、カメラによって撮影された連続画像を通してロボット102の走行距離および/または配向を測定または推定するために使用され得る。ビジュアルオドメータは、オプティカルフロー場(例えば、Lucas−Kanade法または他の方法を使用して)を構築し、カルマンフィルタまたは投影を使用すること等によって、カメラの運動を推定し得る。別の非限定的な例として、IMUが、ロボット102の位置および/または配向を測定または推定し得る。
ロボット102は、ロボット102が環境100を通してナビゲートするときと実質的に同様の方式でロボットインジケータ702が地図700に沿って進行する際に、地図700内の経路716を記録し得る。有利には、いくつかの実装において、地図700および経路716が、共に作成され、ロボット102は、環境100をマッピングし、経路716を実質的に同様の時間に記録する。したがって、いくつかの実装において、地図700および経路716は、共に対にされ得、各々記録された経路は、特定の地図のみで記憶される。
経路116の一部である各場所において、ロボット102は、地図700内の経路716上の対応するピクセルを、ピクセルがナビゲート可能経路の一部であることを示すピクセル状態に変更し得る。同時に、ロボット102はまた、図5A〜5Eに関してセンサ560A〜560Dを参照して説明されたものと実質的に同様のシステムおよび方法を使用して、1つ以上のセンサ560A〜560Dを使用して物体に対するロボット102の位置および/または配向を測定してもよい。このようにして、ロボット102は、地図700を生成するために、棚または壁等の物体に対するロボット102の位置および/または配向を検出および/または測定し得、ロボット102は、ロボット102によるこれらの測定および検出に少なくとも部分的に基づいてピクセル状態を変更し得る。
ロボット102が物体を検出する場合において、ロボット102は、センサ560A〜560Dを使用して、ロボット102に対して複数の方向にあるそれらの物体の位置および/または配向を検出および/または測定し得る。同時に、ロボット102は、センサ568A〜568Bを使用して、ロボット102の位置(例えば、走行距離)および/または配向を推定し得る。ロボット102が環境内を移動すると、異なる物体が、そのセンサの範囲内に入り得る。例えば、ロボット102の前側502に位置付けられ得るセンサ560Bは、範囲704を有し得る。例えば、ロボット102は、前側502の物体を範囲704まで検出し得る。同様に、センサ560A、560C、560Dは、各々範囲を有し、その範囲内の物体を検出し得る。ロボット102が、物体を検出し、ロボット102からの相対位置および/または配向を決定すると、ロボット102は、検出された物体に対応するピクセルの場所を地図700上に示し得る。かかるピクセルは、それらのピクセルが物体対応する少なくとも一部を示す状態(例えば、通行止めの場所または物体を示すピクセル状態)に切り換えられ得る。
ロボット102が、ピクセル基本単位で地図700を生成するため、地図700は、一定のアーチファクトを有し得る。例えば、平滑に見える壁は、センサによって受信された信号に少なくとも部分的に基づいてギザギザに見える場合がある。例えば、センサ560A、560Dが、ソナー、ライダ、または音、光、または表面からの他の要素の反射率に依存する他のセンサを含む場合、表面内に変動性が存在し得る。運動アーチファクトまたは他のアーチファクトおよび/または歪みもまた、存在し得る。
いくつかの場合において、センサ560A〜560Dは、一定のエリアを検知しない場合がある。例えば、物体が、エリアを検知するロボット102の有効性を妨げる場合があり、またはエリアが、死角(例えば、センサの測定範囲によってカバーされない配置)に現れる場合がある。別の非限定的な例として、ボックス706が、ロボット102が地図700上で旋回708を行った際に、ロボット102によって取得された地図700の測定値を強調する。ロボット102が旋回した際、センサ560A〜560Dは、ボックス706によって白色にマークされたエリア(例えば、ナビゲート可能場所として)測定したが、一定の物体がセンサの範囲を妨げ、ボックス706に例示される細長い破断した外観を作成した。
ロボット102は、初期化場所104から終了場所114まで経路116に沿って走行するので、ロボット102は、ロボット102のセンサの範囲内の経路116および経路116の周囲環境100の表現を含む地図700を生成し得る。図7Bは、一度完成した地図700の例を例示する。有利には、ロボット102は、マッピングされた経路716を記録し、1回の実演で地図700内のマッピングされた経路716の周囲環境をマッピングし得る。したがって、地図700は、ロボット102が、わずか1回の実演で、再度自律的に経路116(または経路116と実質的に同様の経路)をナビゲートすることを可能にする。
他の現代のシステムおよび方法は、ユーザアップロード地図を要求するか、地図上で経路を描写するか、または環境をマッピングする複数の実演を利用し得る。これらのシステムおよび方法は、ユーザにとって負担になる場合がある。例えば、これらのシステムおよび方法は、ユーザが、それらのシステムおよび方法が機能するために満足な様式で全てのステップを実施し得る場合でさえ、煩雑であり、不十分なユーザ体験を提供し得る。マッピングされた経路716を記録し、1回の実演で地図700内の周囲環境をマッピングするロボット102を有することは、ユーザが最小限のユーザ対話でロボット102を訓練および/またはプログラムすることを可能にする点で有利であり得る。この能力はまた、比較的少ないユーザ実演に基づいて多くの環境に容易に適応可能である点でも有利である。
図4に戻ると、部分406において、ロボット102は、地図700内のマッピングの誤りを決定し得る。この決定は、地図評価ユニット324によって実施され得る。有利には、ロボット102が、望ましくは、地図700を生成する単一の実演後、自律的に経路106を走行する場合(例えば、自律段階416)、地図700(経路716を含む)内のマッピングの誤りが存在しているかどうかを決定することは、ロボット102が、例えば、衝突、誤り、および/または間違ったもしくは不正確なマッピングの任意のマイナスの結果を回避することを可能にし得る。ロボット102が、地図700に著しいマッピングの誤りが存在していること、および/または地図700の品質が不十分であることを見出した場合、ロボット102は、警告、警報、助言および/または他の表示をユーザ(例えば、ユーザ604または別のユーザ)に送信して(例えば、ユーザインターフェースユニット322を介して)、地図が不十分な品質であることを示し得る。いくつかの場合において、ロボット102は、経路を再度実演する(例えば、部分402、404を再度実施することによって)ように、警告、警報、助言または他の標示をユーザに送信し得る。有利には、自律ナビゲーションの前に地図700の誤りを決定すること、および/または品質を評価することは、ロボット102が障害物にぶつからず、またはロボット102のマッピングによって動かなくならないことを確実にすることによって、時間を節約し、損傷を防止し得る。
ロボット102がマッピングの誤りを検出する、および/または地図700(経路716を含む)の品質を評価し得る、いくつかの方式が存在し、各方式は、単独で、または組み合わせて実装される。特に、全てのマッピングの誤りまたはマッピングの誤りの存在が、地図700の品質が不十分であること、および/または自律的にナビゲートするために使用されることができないことを意味するものではない。実際に、地図700は、多くの誤りを有してもよく、それでもなお自律ナビゲーションのための使用に適合する場合がある。むしろ、部分406は、ロボット102が地図700に少なくとも部分的に基づいて自律的にナビゲートすることができないか、またはするべきではない程、地図700が、著しい欠陥を有するかどうかを決定するために使用され得る。上記のものは、ロボット102がかかる評価を行い得る方式のいくつかの例示的な例を与える。いくつかの実装において、マッピングの誤りを検出する際、および/または地図700の品質を評価する際に、ロボット102は、地図700内の誤りの少なくとも一部の特性を考慮し得る。有利には、いくつかの場合において、ロボット102は、ユーザ604による入力および/または労力がほとんどまたは全くない状態で、マッピングの誤りを検出する、および/または地図700の品質を評価し得る。これは、ロボット102のユーザ604に対する自律性をさらに強化および補強するシームレスな体験を作り出し得る。
例示的な例として、いくつかの実装において、ロボット102は、地図700および/または経路716を検証するために、地図700をサーバ、制御センター、モバイルデバイス、および/またはユーザ/閲覧者の任意のインターフェースに送信し得る。閲覧者は、画面、コンピュータモニタ、テレビ等のようなディスプレイ、および/またはユーザインターフェース322内の任意のディスプレイ上で地図700を閲覧することができる。閲覧者はまた、ロボット102に返信する場合もあり、かかる返信は、地図700および/または経路716が自律ナビゲーションに対して容認可能であるか否かの少なくとも一部を示し得る。いくつかの場合において、ロボット102は、通信ユニット316を使用して地図700を送信し得、通信ユニット316は、地図700を送信し、地図700および/または経路716が自律ナビゲーションのための使用に対して容認可能であるか否かの少なくとも一部を示す通信を受信し得る。いくつかの場合において、ユーザ(例えば、ユーザインターフェースユニット322)のインターフェースは、ロボット102上にあり得、ユーザは、地図700および/または経路716を閲覧し、地図700および/または経路716が自律的なナビゲーションに対して容認可能である否かの少なくとも一部を示す入力を提供し得る。
別の例示的な例として、いくつかの実装において、ロボット102は、経路716を含む地図700内の特定の所定パターン(例えば、所定の誤りのパターン)を探し得、特定の所定パターンの有無は、マッピングの誤りおよび/または地図700の品質の少なくとも一部を示し得る。例示的な例として、ロボット102が店舗内で動作する床清掃機である場合、ロボット102は、商品を展示する棚を表し得る、1つ以上の一連の略平行な物体108、110、112(図1A〜1Cに例示される)を予想および/または探すように構成され得る。地図700に表されるように、物体108、110、112は、図8Aに例示されるように、マッピングされた物体808、810、812として平行に現れ得る。したがって、ロボット102が、代わりに、図8Bに例示されるように、マッピングされた物体858、860、862をマッピングする場合、ロボット102は、地図700内に誤りが存在していることを見出し得る。
ロボット102は、かかる特定のパターンをピクセル毎の基本単位または領域毎の基本単位で検出し得る。いくつかの場合において、ロボット102は、区分化、エッジ検出、形状認識、および/または他の技術等の画像処理を使用して、地図700内の1つ以上の物体858、860、862を識別し得る。一度、物体858、860、862が識別されると、ロボット102は、物体858、860、862が物体858、860、862のうちの他の物体と略平行であるか否かを決定するために様々な方法を使用し得る。ロボット102は、その後、物体858、860、852の間の距離および/または相対角度等の、物体858、860、862の配向および/または位置を測定し得る。測定された配向および/または位置に少なくとも部分的に基づいて、ロボット102は、物体858、860、862が略平行であるか否かを決定し得る。
例示的な例として、ロボット102は、物体858、860、862を画定する(例えば、対応するピクセルを見出す)ために、シード処理または領域形成法を使用し得る。これらのピクセルによって、ロボット102は、その後、物体858、860、862内の複数の点を識別し得る。例示的な例として、ロボット102は、物体862内の点868、866、864および物体860の点890、892、894を識別し得る。ロボット102は、物体862の点864、866、868の各々と物体860の点890、892、894との間の距離を測定し、それらの距離を比較して、物体860、862が略平行であるかどうかを少なくとも部分的に決定し得る。例えば、点866および点892と、点868および点894との間の距離の差が所定の閾値(例えば、限定されるものではないが、5%、10%、15%の差等の測定値または略平行な棚の実際の場所の考えられる偏差を示す閾値)を超える場合、ロボット102は、物体860、862が略平行ではないことを見出し得る。いくつかの場合において、所定の閾値は、メモリ302内に記憶され得る。距離の差が所定の閾値以下である場合、ロボット102は、それらが略平行であることを見出し得る。当業者は、ロボット102が、点864、866、868、890、892、894、および/または物体860、862内の他の点を使用して、距離および距離の間の差の同様の計算を行い得ることを認めるべきである。ロボット102は、物体858、860、862の各々もしくはいずれか、および/または存在し得る任意の他の物体の間の同様の比較を行い得る。ロボット102が、予想が物体108、110、112、118等の平行な物体であった、1つ以上の実質的に平行ではない物体を見出した場合、ロボット102は、地図700内のマッピングの誤りを検出する、および/または地図700の品質が良好ではないことを見出し得る。いくつかの場合において、ロボット102は、その後、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェースユニット322を介して)。
別の実装例において、図8Cは、物体808、810、812等の平行な物体の地図700を検索するために使用され得るマスク870の一例を例示する。マスク870は、行列として視覚化され得る構造的テンプレートであり得、行列の各セルは、地図700のピクセルまたはピクセルグループ、およびそれらの対応するピクセル状態を表す。当分野の一定の用途で使用されるように、マスク870はまた、フィルタとも呼ばれ得る。マスク870は、メモリ302内に記憶される、および/または地図700を処理するように構成されたソフトウェアの一部であり得る。いくつかの実装において、マスク870は、地図700および物体808、810、812のサイズに少なくとも部分的に基づいて、サイズ決めされ得る(例えば、x方向にmピクセル、y方向にnピクセルのm×n行列として)。例えば、マスク870のサイズは、地図700の総ピクセル寸法のパーセンテージ(例えば、5%、10%、15%、20%、25%以上)に少なくとも部分的に基づいて、または物体808、810、812の既知の概算測定値に少なくとも部分的に基づいて、事前決定され得る。いくつかの場合において、マスク870は、検索方法の反復を通してサイズが変化し得、マスク870は、第1のサイズとして地図700を検索し始め、その後、第2のサイズとして再び地図700を検索し、第3のサイズとして再び地図700を検索し、所定の回数について以下同様である。例えば、マスク870は、より大きなマスクとして開始し、後続の反復でより小さいマスクになり得る。図8Cに例示されるマスク870のサイズは、例示目的のためのものであり、一定の縮尺ではない場合があることに留意されたい。
マスク870は、地図700にわたって、および地図700の周囲を見渡し、かつマスク870の内容を地図700のものと比較することによって地図700を検索し得る。例えば、マスク870は、行列であり得、行列の各々は、地図700のピクセル状態(例えば、障害物のない(例えば、ナビゲート可能)場所、通行止め(例えば、ナビゲート不可能場所)、不明場所、走行するべきではない、ナビゲート可能経路の一部、走行された、走行されていない、物体、水、および/または本開示に説明される地図700の任意の他の分類)に少なくとも部分的に対応する値を有する。行列のセル872、または任意の他のセル(例えば、右上隅のセル、左下隅のセル、右下隅のセル、中央のセル、またはマスク870内の任意の他のセル)は、地図700のピクセルのうちの1つ以上または全部と連続的に整列し得る。そのセルが地図700の各ピクセルと整列すると、マスク870の他のセルもまた、地図700内の周囲ピクセルと整列し得る。地図700からの整列された各ピクセルは、マスク870とそれが整列された地図700の領域との間の類似性を検出するために、マスク870の対応するピクセルと比較され得る。
例示されるように、マスク870は、平行な物体(例えば、物体808、810、812のうちの2つ)の少なくとも一部を示し得る、構造体876、878を画定する。構造体876、878のセル(例えば、セル876)は、検索された物体の一定の特性を示す値を有し得る。例えば、構造体876、878のセルの各々は、地図700の物体の少なくとも一部を示す(例えば、地図700内の物体のピクセル状態の少なくとも一部を示す)値を有し得る。構造体876、878の間は、構造体880であり得、そのピクセルは、障害物のない場所を示す値を有し得る。このようにして、いくつかの実装において、構造体876、878は、棚を表し得、構造体880は、それらの間の通路を表し得る。マスク870の各セルは、したがって、地図700の予想されるピクセルを示す値を有し得る。マスク870内のセルの指定は、地図700が検索されるピクセルのパターンを反映し得る。いくつかの実装において、反復検索において、マスク870は、配向を回転および/または変更し得る。有利には、これは、マスク870が、ある角度で傾斜され得るアイテムについて、および/またはある角度で傾斜され得る地図700自体について、地図700を検索することを可能にし得る。
マスク870が、マスク870の構造体におけるマスク870のセル値と実質的に一致する(例えば、70%、80%、90%以上の所定の一致閾値を有する)地図700内のピクセルグループを識別する場合、ロボット102は、ロボット102がマスク870と地図700との間の一致、および/またはかかる一致の場所を見出したことの表示(例えば、メッセージ、値、またはコマンド)を生成し得る。いくつかの場合において、過小な一致が見出された場合(例えば、見出されることが予想されるアイテムの所定の数に基づいて)、ロボット102は、地図700内のマッピングの誤りを検出する、および/または地図700が良好な品質ではないと決定し得る。いくつかの場合において、過大な一致が見出された場合(例えば、マスク870が望ましくない構造体を識別するように構成されているとき)、ロボット102はまた、地図700のマッピングの誤りを検出する、および/または地図700が良好な品質ではないと決定し得る。いずれの場合においても、ロボット102は、その後、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェースユニット322を介して)。
別の例として、いくつかの実装において、ロボット102は、地図700および/または経路716内の不連続の点を探し得る。例えば、図9Aは、マッピングされた部分900の例の経路部分902Aの例と経路部分902Bの例との間の経路不連続部904の例を例示する。マッピングされた部分900は、地図700の一部分であり得る。マッピングされた部分900は、物体906A〜906B、およびそれらの間の障害物のない空間908を含み得る。障害物のない空間908内で、経路は、経路部分902Aおよび経路部分902Bによって例示される。経路部分902Aと経路部分902Bとの間は、経路不連続部904である。経路不連続部904は、ロボット102が経路部分902Aから経路部分902Bまで、またはその逆に、いずれの空間の中間にも移動せず、移動しなかった可能性があるため、誤りの少なくとも一部を示し得る。いくつかの場合において、経路不連続部904は、ロボット102が経路部分902Aから経路部分902Bまで問題なく障害物のない空間908にわたって走行し得るため、マッピングされた経路716をナビゲートするロボット102に対して問題にはならない場合がある。しかしながら、経路不連続部904は、それ自体によって、または他の経路不連続部および/もしくは誤りとの組み合わせで、マッピングの誤り、および/または地図700の品質(例えば、地図700の品質が不十分であること)の少なくとも一部を示し得る。
マッピングの誤りを検出する際、および/または地図700の品質を評価する際、ロボット102は、経路不連続部904のサイズ(例えば、経路不連続部904のピクセル数、距離等)および他の経路不連続部が地図700内の他の場所に存在するかどうかも考慮し得る。いくつかの場合において、経路不連続部904のサイズが所定のサイズ閾値(例えば、メモリ302内に記憶される)を超える場合、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。所定のサイズ閾値は、インチ、フィート、メートル、または任意の他の測定単位(例えば、メトリック、US、または測定の他のシステムの測定)等の標準単位を使用して絶対距離測定で測定されるか、または目盛、ピクセル、センサの範囲のパーセンテージ等のような、相対(または非絶対)単位で測定され得る。この所定のサイズ閾値は、ロボット102のセンサ(例えばセンサユニット314のうちの)の信号分解能および/または忠実度、環境100の複雑さ、ロボット102による経路不連続部とマッピングの誤り/不十分な地図品質との間の経験的相関、経路不連続部904によってナビゲートするロボット102の能力、および/または他の因子を含む、1つ以上の因子を少なくとも部分的に決定され得る。例えば、ロボット102のセンサの信号分解能および/または忠実度が低い場合、ロボット102は、マッピングでいくつかの経路不連続部(例えば、経路不連続部904)が存在するであろうことを予想し得、かかる経路不連続部は、より大きいサイズであり得る。これらの経路不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示さない場合があり、したがって、所定のサイズ閾値は、比較的高くなり得る。これに対し、ロボット102のセンサの信号分解能および/または忠実度が高い場合、経路不連続部904は、予想外であり得、小さいサイズの経路不連続部でさえ、地図の誤りおよび/または不十分な地図品質の少なくとも一部を示し得、したがって、所定のサイズ閾値は、比較的低くなり得る。別の例として、高度に複雑な環境100は、ロボット102のマッピングおよび定位性能(例えば、マッピングおよび定位ユニット312の)を損なわせる場合があり、不連続部904が予想され得、したがって、所定のサイズ閾値は、比較的高くなり得る。これに対し、比較的単純な環境100は、ロボット102のマッピングおよび定位性能を損なわない場合があり、経路不連続部904は、予想されない場合があり、したがって、所定のサイズ閾値は、比較的低くなり得る。別の例として、環境の安全性が懸念される場合、所定のサイズ閾値は、比較的低くなり得る。別の例として、ロボット102は、地図品質(および/またはマッピングの誤りの欠如)が独立して評価された(例えば、ユーザまたは他の人員によって)先行地図(またはサーバ上に集約された地図)を有し得る。ロボット102は、その後、不連続部904および/または他の経路不連続部に少なくとも部分的に基づいて、マッピングの誤りを検出する際、および/または地図700の品質を評価する際の所定のサイズ閾値を決定する際に経路不連続部のサイズ間の相関を考慮し得る。別の例として、所定のサイズ閾値は、地図700をナビゲートするロボット102の能力に少なくとも部分的に基づき得る。経路不連続部904が所定のサイズ閾値よりも大きくなった後、ロボット102は、もはや地図700をナビゲートすることができなくなる場合があり、したがって、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。検出された誤りおよび/または不十分な品質の決定のいずれの場合においても、ロボット102は、その後、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェースユニット322を介して)。
同様に、経路不連続部904は、地図700の複数の経路不連続部のうちの1つであり得る。ロボット102は、これらの他の経路不連続部を考慮し得る。経路不連続部の数が所定の数の閾値(例えば、メモリ302に記憶される)を超える場合、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。例えば、この所定の数の閾値は、ロボット102のセンサ(例えばセンサユニット314のうちの)の信号分解能および/または忠実度、環境100の複雑さ、ロボット102による経路不連続部とマッピングの誤り/地図品質との間の経験的相関、経路不連続部904によってナビゲートするロボット102の能力、および/または他の因子を含む、1つ以上の因子を少なくとも部分的に決定され得る。例えば、ロボット102のセンサの信号分解能および/または忠実度が低い場合、ロボット102は、マッピングでいくつかの経路不連続部(例えば、経路不連続部904)が存在するであろうことを予想し得る。これらの経路不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示さない場合があり、したがって、所定の数の閾値は、比較的高くなり得る。これに対し、ロボット102のセンサの信号分解能および/または忠実度が高い場合、不連続部904は、予想外であり得、経路不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示し得、したがって、所定の数の閾値は、比較的低くなり得る。別の例として、高度に複雑な環境100は、ロボット102のマッピングおよび定位性能(例えば、マッピングおよび定位ユニット312の)を損なわせる場合があり、経路不連続部904が予想され得、したがって、所定の数の閾値は、比較的高くなり得る。これに対し、比較的単純な環境100は、ロボット102のマッピングおよび定位性能を損なわない場合があり、経路不連続部904は、予想されない場合があり、したがって、所定の数の閾値は、比較的低くなり得る。別の例として、環境の安全性が懸念される場合、所定の数の閾値は、比較的低くなり得る。別の例として、ロボット102は、地図品質(および/またはマッピングの誤りの欠如)が独立して評価された(例えば、ユーザまたは他の人員によって)先行地図(またはサーバ上に集約された地図)を有し得る。ロボット102は、その後、不連続部904および/または他の経路不連続部に少なくとも部分的に基づいて、マッピングの誤りを検出する際、および/または地図700の品質を評価する際の所定の数の閾値を決定する際に経路不連続部の数の間の相関を考慮し得る。別の例として、所定の数の閾値は、地図700をナビゲートするロボット102の能力に少なくとも部分的に基づき得る。経路不連続部の所定の数の閾値が経路不連続部904と実質的に合致した後、ロボット102は、もはや地図700をナビゲートすることができなくなる場合があり、したがって、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。検出された誤りおよび/または不十分な品質の決定のいずれの場合においても、ロボット102は、その後、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェースユニット322を介して)。
いくつかの場合において、上に説明された所定のサイズ閾値と所定の数の閾値とが組み合わせて使用される、混成閾値が使用され得る。例えば、所定の数の閾値は、これを超えると、地図700がマッピングの誤りを含有する、および/または不十分な品質であるように決定されるが、所定のサイズ閾値を超える経路不連続部の数に少なくとも部分的に基づき得る。マッピングの誤りが検出される、および/または地図700の品質が不十分であるように決定された場合において、ロボット102は、その後、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェースユニット322を介して)。
図9Bは、マッピングされた部分920の例の物体部分926Aの例と物体部分926Bの例との間の物体不連続部924の例を例示する。マッピングされた部分920は、地図700の一部分であり得る。例示されるように、経路部分922は、任意の経路不連続部を有しない場合がある。しかしながら、物体部分926Aと物体部分926Bとの間には、物体の一部分がマッピングされていない物体不連続部924が存在し得る。物体不連続部924は、物体不連続部924が、マッピングされるべきであった位置の地図部分924のマッピングされていない部分である可能性があるため、誤りを示し得る。いくつかの場合において、物体不連続部924は、ロボット102が、経路部分922を通ってナビゲートする際に、そのセンサによって物体の存在を検出し得るため、ナビゲートするロボット102にとって問題にならない場合がある。しかしながら、物体不連続部924は、それ自体によって、または他の不連続部および/もしくはマッピングの誤りの他の特性と組み合わせて、マッピングの誤りおよび/または不十分な品質の地図を示し得る。
図9Aを参照して説明されたマッピングの誤りの検出および/または品質の評価と同様、地図700を評価する際、ロボット102は、物体不連続部924のサイズ(例えば、物体不連続部924のピクセル数、距離等)および他の物体不連続部が地図700内の他の場所に存在するかどうかも考慮し得る。いくつかの場合において、物体不連続部924のサイズが所定のサイズ閾値(例えば、メモリ302内に記憶される)を超える場合、ロボット102は、地図700がマッピングの誤りを有する、および/または品質が不十分であると決定し得る。例えば、この所定のサイズ閾値は、ロボット102のセンサ(例えばセンサユニット314のうちの)の信号分解能および/または忠実度、環境100の複雑さ、ロボット102による物体不連続部とマッピングの誤り/地図品質との間の経験的相関、物体不連続部924によってナビゲートするロボット102の能力、および/または他の因子を含む、1つ以上の因子を少なくとも部分的に決定され得る。例えば、ロボット102のセンサの信号分解能および/または忠実度が低い場合、ロボット102は、マッピングでいくつかの物体不連続部(例えば、物体不連続部904)が存在するであろうことを予想し得、かかる物体不連続部は、より大きいサイズであり得る。これらの物体不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示さない場合があり、したがって、所定のサイズ閾値は、比較的高くなり得る。これに対し、ロボット102のセンサの信号分解能および/または忠実度が高い場合、物体不連続部924は、予想外であり得、小さいサイズの不連続部でさえ、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示し得、したがって、所定のサイズ閾値は、比較的低くなり得る。別の例として、高度に複雑な環境100は、ロボット102のマッピングおよび定位性能(例えば、マッピングおよび定位ユニット312の)を損なわせる場合があり、物体不連続部924が予想され得、したがって、所定のサイズ閾値は、比較的高くなり得る。これに対し、比較的単純な環境100は、ロボット102のマッピングおよび定位性能を損なわない場合があり、物体不連続部924は、予想されない場合があり、したがって、所定のサイズ閾値は、比較的低くなり得る。別の例として、環境の安全性が懸念される場合、所定のサイズ閾値は、比較的低くなり得る。別の例として、ロボット102は、地図品質(および/またはマッピングの誤りの欠如)が独立して評価された(例えば、ユーザまたは他の人員によって)先行地図(またはサーバ上に集約された地図)を有し得る。ロボット102は、その後、物体不連続部924および他の物体不連続部に少なくとも部分的に基づいて、マッピングの誤りを検出する際、および/または地図700の品質を評価する際の所定のサイズ閾値を決定する際に物体不連続部のサイズ間の相関を考慮し得る。別の例として、所定のサイズ閾値は、地図700をナビゲートするロボット102の能力に少なくとも部分的に基づき得る。物体不連続部924が所定のサイズよりも大きくなった後、ロボット102は、もはや地図700をナビゲートすることができなくなる場合があり、したがって、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。検出された誤りおよび/または不十分な品質の決定のいずれの場合においても、ロボット102は、その後、経路を再度実演することをユーザに促し得る(例えば、ユーザインターフェースユニット322を介して)。
同様に、物体不連続部924は、地図700の複数の物体不連続部のうちの1つであり得る。ロボット102は、これらの他の物体不連続部を考慮し得る。物体不連続部の数が所定の数の閾値(例えば、メモリ302に記憶される)を超える場合、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。例えば、この所定の数の閾値は、ロボット102のセンサ(例えばセンサユニット314のうちの)の信号分解能および/または忠実度、環境100の複雑さ、ロボット102による物体不連続部とマッピングの誤り/地図品質との間の経験的相関、物体不連続部924によってナビゲートするロボット102の能力、および/または他の因子を含む、1つ以上の因子を少なくとも部分的に決定され得る。例えば、ロボット102のセンサの信号分解能および/または忠実度が低い場合、ロボット102は、マッピングでいくつかの物体不連続部(例えば、不連続部904)が存在するであろうことを予想し得る。これらの物体不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質を示さない場合があり、したがって、所定の数の閾値は、比較的高くなり得る。これに対し、ロボット102のセンサの信号分解能および/または忠実度が高い場合、物体不連続部924は、予想外であり得、物体不連続部の存在は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示し得、したがって、所定の数の閾値は、比較的低くなり得る。別の例として、高度に複雑な環境100は、ロボット102のマッピングおよび定位性能(例えば、マッピングおよび定位ユニット312の)を損なわせる場合があり、物体不連続部924が予想され得、したがって、所定の数の閾値は、比較的高くなり得る。これに対し、比較的単純な環境100は、ロボット102のマッピングおよび定位性能を損なわない場合があり、物体不連続部924は、予想されない場合があり、したがって、所定の数の閾値は、比較的低くなり得る。別の例として、環境の安全性が懸念される場合、所定の数の閾値は、比較的低くなり得る。別の例として、ロボット102は、地図品質(および/またはマッピングの誤りの欠如)が独立して評価された(例えば、ユーザまたは他の人員によって)先行地図(またはサーバ上に集約された地図)を有し得る。ロボット102は、その後、物体不連続部924および他の不連続部に少なくとも部分的に基づいて、マッピングの誤りを検出する際、および/または地図700の品質を評価する際の所定の数の閾値を決定する際に物体不連続部の数の間の相関を考慮し得る。別の例として、所定の数の閾値は、地図700をナビゲートするロボット102の能力に少なくとも部分的に基づき得る。物体不連続部の所定の数が物体不連続部924と実質的に合致した後、ロボット102は、もはや地図700をナビゲートすることができなくなる場合があり、したがって、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。検出された誤りおよび/または不十分な品質の決定のいずれの場合においても、ロボット102は、その後、経路を再度実演することをユーザに促し得る(例えば、ユーザインターフェースユニット322を介して)。
いくつかの場合において、上に説明された所定のサイズ閾値と所定の数の閾値とが組み合わせて使用される、混成閾値が使用され得る。例えば、所定の数の閾値は、これを超えると、地図700がマッピングの誤りを有し、および/または不十分な品質であるように決定されるが、所定のサイズ閾値を超える物体不連続部の数に少なくとも部分的に基づき得る。マッピングの誤りが検出される、および/または地図700の品質が不十分であるように決定された場合において、ロボット102は、その後、経路を再度実演することをユーザ704に促し得る(例えば、ユーザインターフェースユニット322を介して)。
図9Cは、経路不連続部および物体不連続部の両方を含む、不連続部934を有するマッピングされた部分920の例を例示する。マッピングされた部分920は、地図700の一部分であり得る。不連続部934は、経路部分930と経路部分932との間の不連続部であり得る。不連続部934はまた、物体936の不連続部でもあり得る。図9A〜9Cを参照して説明されたように、経路不連続部および物体不連続部の両方は、マッピングの誤りおよび/または不十分な地図品質の少なくとも一部を示し得る。ロボット102が地図700を評価するとき、ロボット102は、マッピングの誤りを検出する際、および/または地図700の品質を決定する際、経路不連続部または物体不連続部のいずれか、または共に両方を考慮し得る。
別の例として、いくつかの実装において、ロボット102は、マッピングの誤りを検出する際、および/または地図700の品質を決定する際、地図700内のアイテム(例えば、経路、障害物、または他の物体)間の重なり量を評価し得る。図10は、重なる物体1002、1004、1006を有するマッピングされた部分1000の例を例示する。マッピングされた部分1000は、地図700の一部分であり得る。例示されるように、物体1002、1004、1006は、地図700を作成している間にロボット102が検出した壁、物体、棚等であり得る。ロボット102の測定された位置付けおよび配向に少なくとも部分的に基づいて、ロボット102は、物体1002、1004、1006をマッピングした。物体1002、1004、1006の各々の推定された位置および/または配向が互いに重なり合うため、ロボット102は、マッピングに誤りが存在したと決定し得る。かかる重なりのエリアを識別する際、ロボット102は、ピクセル毎または領域毎に地図700を検査し得る。いくつかの場合において、ロボット102は、地図700内の所定の形状(例えば、所定の形状を探すために修正されたマスク870と実質的に同様の)を見出すためにマスクおよび/またはフィルタを使用し得る。所定の形状は、物体の場所および/またはセンサの誤りの以前に観察された変形等の、マッピングの際のロボット102の既知の誤りに少なくとも部分的に基づき得る。
重なりはまた、ピクセルもしくはピクセルの領域内および/またはその周囲の検出された物体1002、1004、1006の濃い濃度によって少なくとも部分的に識別されてもよい。いくつかの場合において、ロボット102は、地図700内の形状、すなわち形状の異常を検出し得る。例えば、ロボット102は、空間1008等の閉じ込められた空間を検出し得る。いくつかの場合において、空間1008は、障害物のない、走行される、および/またはナビゲート可能空間であり得る。空間1008は、マッピングされる際に空間1008へのアクセスをロボット102が有さないため、通常、物体1002、1004、1006の間には生じない。したがって、ロボット102は、空間1008を検出した場合、地図700がマッピングの誤りを有する、および/または品質が不十分であると決定し得る。別の例として、ロボット102は、ギザギザの突出部分1010、1012を検出し得る。形状の異常は、かかる突出部分が、通常、環境100内で生じないため、ロボット102が、物体1002、1004、1008のうちの1つ以上に誤ったマッピングが存在していると決定することを可能にし得る。したがって、突出部分1010、1012の異常に少なくとも部分的に基づいて、ロボット102は、マッピングの誤りを検出する、および/または地図700の品質が不十分であると決定し得る。
重なりを認識することを通して識別可能なマッピングの誤りの別の例として、ロボット102(および/またはロボット102が走行する経路)は、物体を通り抜けるように地図700内で表され得る。ロボット102が物体を通り抜ける可能性は低いため、かかる出来事は、マッピングの誤りの少なくとも一部を示し得る。
別の例として、ロボット102は、地図700を、ロボット102のセンサのうちの少なくとも1つからのデータと比較することによって、マッピングの誤りおよび/または地図700の品質を識別し得る。例えば、いくつかの実装において、地図700は、センサ560A〜560Dのうちの1つ以上およびセンサ568A〜568Bのうちの1つ以上を少なくとも部分的に使用して生成された。しかしながら、地図700の正確さのチェックは、地図700を、センサ560A〜560Dおよびセンサ568A〜568Bの全てよりも少ないものによって記録されたデータと比較し得る。1つの例示的な例として、センサ568A〜Bのうちの1つ以上は、ロボット102のオドメトリを決定し得る。オドメトリのみに基づくロボット102の経路の表現は、オドメトリフレーム内の地図と考えられ得る。オドメトリフレーム内のこの地図は、比較器、減法、および/または本開示の地図を比較する任意の他の方法を使用すること等によって、地図700と比較され得る。オドメトリフレーム内の地図と地図700との間の偏差が所定の閾値(例えば、40%、50%、60%、または不十分な地図品質に対する相関の経験的決定に少なくとも部分的に基づいて決定される任意のパーセンテージを超える)、ロボット102は、マッピングの誤り存在したこと、および/または地図700の品質が不十分であったことを決定し得る。
別の例として、いくつかの実装において、ロボット102は、閉ループ(例えば、終了場所が初期化場所と実質的に同様である)で走行するように構成され得る。ロボット102が、常に閉ループで走行するとは限らないことが留意されるべきである。例えば、図1Aは、初期化場所104が終了場所114と実質的に同一場所にないように例示されたため、閉ループを形成しなかった経路を例示した。図11Aは、場所1102が初期化場所および終了場所の両方である、閉ループ経路1104の例で走行するロボット102を例示する。この場合において、経路1104の地図が場所1102に近接する初期化場所および終了場所を有しなかった場合、ロボット102は、マッピングの誤りを検出する、および/または地図の品質が不十分であったと決定し得る。いくつかの場合において、所定の距離閾値(例えば、メモリ302内に記憶された)が存在し得る。マッピングされた初期化場所および終了場所が所定の距離閾値内にない場合(例えば、初期化場所と終了場所との間の距離が所定の距離閾値を超えない場合)、ロボット102はマッピングの誤りを検出する、および/または地図の品質が不十分であると決定し得る。この所定の距離閾値は、地図のサイズ(例えば、所定の距離閾値は、地図サイズのパーセンテージであり得る)、センサ分解能および/もしくは忠実度、ならびに/または他の因子に少なくとも部分的に基づいて決定され得る。
別の実装例として、ロボット102は、メモリ302内に記憶された環境のアップロードされた地図を有し得る。ロボット102は、その後、地図700をアップロードされた地図と比較し得る。例示として、ロボット102は、ピクセル毎または領域毎に地図700をアップロードされた地図と比較する地図評価ユニット324の1つ以上の比較器を利用し得る。いくつかの実装において、アップロードされた地図および/または地図700は、その比較を容易にするためにサイズ変更され得る。地図700がピクセル毎または領域毎にアップロードされた地図と同様であるように見出されない場合、ロボット102は、マッピングの誤りが存在している、および/または地図700の品質が不十分であると決定し得る。その結果、ロボット102は、経路を再度実演することをユーザ604に促し得る(例えば、ロボット102は、部分404を再度実施し得る)。
いくつかの実装において、類似性のパーセンテージがアップロードされた地図と地図700との間で計算され得、類似性のパーセンテージは、アップロードされた地図が地図700にどの程度類似しているかを少なくとも部分的に反映する。類似性のパーセンテージが所定の閾値(例えば、70%、80%、90%、またはアップロードされた地図と地図700との間の実質的な類似性の少なくとも一部を示す任意のパーセンテージ)未満に収まる場合、ロボット102は、マッピングの誤りが存在している、および/またはその地図700の品質が不十分であると決定し得る。その結果、ロボット102は、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェース322を介して)(例えば、ロボット102は、部分404を再度実施し得る)。
いくつかの実装において、アップロードされた地図は、形状(例えば、物体または障害物のない空間の形状)を分析され得る。地図700は、少なくとも部分的に、それらの同一形状が地図700内に存在するかどうかを決定するために、それらの同一形状を分析され得る。マスクおよび/またはフィルタが、いくつかの実装において検索のために使用され得る(例えば、形状を探すために修正されたマスク870と実質的に同様である)。アップロードされた地図からの形状が、地図700内に見出されなかった場合、ロボット102は、マッピングの誤りが存在している、および/または地図700の品質が不十分であると決定し得る。その結果、ロボット102は、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェース322を介して)(例えば、ロボット102は、部分404を再度実施し得る)。同様に、地図700は、形状(例えば、物体または障害物のない空間の形状)を分析され得、アップロードされた地図は、それらの同一形状が存在するかどうかを確認するために分析される。同一方式において、ロボット102が、アップロードされた地図内に地図700から検出された形状を見出さなかった場合、ロボット102は、マッピングの誤りが存在している、および/または地図700の品質が不十分であると決定し、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェース322を介して)(例えば、ロボット102は、部分404を再度実施し得る)。
いくつかの実装において、ロボット102は、環境100の一定の予想される特性/特徴に対して地図700を分析し得る。例えば、食料雑貨店または同様の環境において、ロボット102は、通路および/または棚の列を予想し得る。ロボット102が、通路および/または棚の列を示す物体を検出しないか、または過小もしくは過多に検出する場合、ロボット102は、地図700の品質が不十分である、および/または地図700がマッピングの誤りを含有し得ると決定し得る。別の例として、環境の複雑さに対する一定のレベルの予想が存在し得る。地図700が、過多な旋回または過小な旋回を有する場合、ロボット102は、地図700の品質が不十分である、および/または地図700がマッピングの誤りを含有し得ると決定し得る。別の例として、環境100は、予想されるサイズを有し得る。地図700のサイズが過大または過小である場合、ロボット102は、地図700の品質が不十分である、および/または地図700がマッピングの誤りを含有し得ると決定し得る。地図700が環境100の所定の予想される特性/特徴を有していない上記の場合のいずれかにおいて、ロボット102は、地図700を検証するようにユーザ(例えば、ユーザ604またはサーバ上の地図にアクセスを有するユーザ)に促し得る。したがって、ロボットは、地図をサーバに送信し、地図の品質の検証を受信し得る。
いくつかの実装において、機械学習アルゴリズムが使用され得、ロボット102(例えば、ロボット102のコントローラ304)は、良好な地図および品質の悪い地図を識別することを学習する。例えば、ロボット102は、良好な地図および品質の悪い地図として識別されている(例えば、手動ラベル付けまたは機械ラベル付けされている)地図のライブラリを有し得る。当分野で既知の教師ありまたは教師なしのアルゴリズムを使用して、ロボット102は、その後、特性を関連付けることを学習し得、ロボット102は、良好な地図または品質の悪い地図を示すようにそのライブラリにわたって決定し得る。したがって、ロボット102が、地図を品質の悪い地図として識別した場合、ロボット102は、マッピングの誤りが存在している、および/または地図700の品質が不十分であると決定し、経路を再度実演することをユーザ604に促し得る(例えば、ユーザインターフェース322を介して)(例えば、ロボット102は、部分404を再度実施し得る)。
いくつかの場合において、ロボット102はまた、不十分な品質の地図700内の誤りを訂正することもできる。例えば、いくつかの場合において、ロボット102が閉ループ(例えば、閉ループ経路1104)で正確に走行しなかった場合、初期化場所と終了場所との間の差が、ロボット102のオドメトリを補正するために使用され得る。例えば、ロボット102は、初期化場所と終了場所との間の差を取得し、オドメトリが現実からどの程度ドリフトされているかをその差が示すことを決定し得る。したがって、ロボット102は、決定されたドリフトを考慮に入れて、記録された経路を調節し得る。
別の例として、一定のマッピングの誤りは、ロボット102が、1つ以上の誤りを補正する地図700のバージョンであり得る、補正された地図の少なくとも一部分と関連付け得るパターンを結果として生じ得る。図11Bは、ロボット102の例が、マッピングの誤りの一例を補正された経路1108の一例と関連付ける一例を例示する。例えば、地図700は、マッピングされた経路1106A〜1106N等の、実質的に同様の形状の一連のドリフトされた経路を含有し得、Nは、任意の数のマッピングされた経路1106A〜1106Nがマッピングされ得ることを示す。ロボット102は、かかるドラフトされた、マッピングされた経路1106A〜1106Nが、ユーザ604が同一経路を何度もナビゲートすることの少なくとも一部を示し得ることを決定し得る。結果として、ロボット102は、その後、マッピングされた経路1106A〜1106Nを、マッピングされた経路1108に補正し得、これは、ユーザ604が同一経路を繰り返しナビゲートすることを示す。地図700が、マッピングされた経路1106A〜1106Nを含有した場合、ロボット102は、マッピングされた経路1106A〜1106Nを、地図700内のマッピングされた経路1108に補正し得る。同様に、他の誤りパターン(例えば、ドリフトおよび/または他の誤り)が存在し得、その識別情報は、ロボット102がそれらを自動的に補正し得るように、ロボット102にプログラムされ得る。したがって、ロボット102は、地図700の誤りを補正し得る。
ロボット102はまた、機械学習を使用して、誤りをそれらの誤りの補正と関連付けることを学習することもできる。例えば、ロボット102は、メモリ302および/またはサーバ上に誤りを含む地図を記憶し得る。例示として、いくつかの場合において、ユーザ604は、最初に経路を実演し得る。経路および周囲環境で作成された地図は、マッピングの誤りを含有し得る。マッピングの誤りに直面したとき、ユーザ604は、環境および/または経路を再マッピングし得る。したがって、ロボット102は、不十分な品質の地図のバージョン(例えば、正常なナビゲーションを妨げることになるマッピングの誤りを含む)、および品質が不十分ではないバージョン(例えば、正常なナビゲーションを妨げることになるマッピングの誤りを含まない)を有し得る。ロボット102は、その後、不十分な品質の地図の少なくとも一部分を、不十分な品質ではない再マッピングされたバージョンの対応する部分と関連付け得る。1つ以上の実質的に同様の関連付けに基づいて、ロボット102は、生じたマッピングの誤りを識別し、かつその後、一度マッピングの誤りを認識すると、補正された地図の少なくとも一部分を生成すること学習し得る。
図4に戻ると、教示段階414の後、ロボット102は、その後、自律段階416に進み得る。部分408において、ロボット102は、初期化場所104を検出し、ロボット102の位置および/または配向を初期化し得る。いくつかの実装において、ユーザは、ロボット102を駆動すること、ロボット102を遠隔制御すること、ロボット102を操舵すること、ロボット102を押すこと、および/またはアクチュエータユニット318を駆動する任意の制御等の任意の他の制御によって、ロボット102を初期化場所104に移動させ得る。いくつかの実装において、ロボット102は、自律的に初期化場所104に戻り得る。例えば、ロボット102は、初期化場所104の場所をメモリ302内に記憶し(例えば、図5B〜5Eを参照して上に説明されたように)、その場所に戻り得る。
いくつかの実装において、ロボット102は、図5B〜5Eおよび本開示全体を通していずれかの場所を参照して説明された、部分402における初期化場所104を検出するために使用したシステムおよび方法と実質的に同様の方式で初期化場所104を検出し得る。いくつかの場合において、ロボット102が部分408において初期化場所104に戻ったとき、例えば、物体512、546、548、550のうちの1つ以上に対するロボット102の位置がメモリ302に記憶されていることになる(例えば、部分402から)。ロボット102が、物体512、546、548、550の1つ以上に対して同一相対場所にロボット102があることを検出したとき、ロボット102は、ロボット102が初期化場所104にあると決定し得る。いくつかの実装において、ロボット102は、ユーザがロボット102を停止させた場所に少なくとも部分的に基づいて、ロボット102が初期化場所104にあることを検出し得る。したがって、ロボット102は、ユーザが停止し、続いて、部分410を参照して説明されることになるように、経路を選択した場所が初期化場所104であることを仮定し得る。いくつかの実装において、初期化場所104に、または実質的にその近くに送信機(例えば、RFID、NFC、BLUETOOTH(登録商標)、無線伝送、無線周波数フィールド、および/または本開示に説明された任意の他の通信プロトコルを使用して送信する送信機)が存在し得る。ロボット102が、ロボット102が送信機上、または実質的にその近くにあることを検出したとき、ロボット102は、ロボット102が初期化場所104にあることを検出し得る。いくつかの場合において、送信機は、ロボット102が送信機からの通信を、開始場所にあるときのみ、検出し得るように、動作可能な範囲を有し得る。例示的な例として、NFCの伝送範囲は、10センチメートル以下であり得る。したがって、ロボット102がNFCを介して伝送を受信するとき、ロボット102は、それが初期化場所104内に位置付けられていることを検出し得る。いくつかの実装において、ロボット102は、送信機からの伝送を受信し、信号強度の減衰に少なくとも部分的に基づいて送信機までの距離を計算し得る。このようにして、ロボット102は、それが送信機にどの程度近いかを検出し得、その結果、送信機および/または初期化場所104に対するロボット102の位置を検出し得る。いくつかの実装において、ロボット102は、複数の送信機の信号強度を三角測量することによって、その場所を決定し得る。いくつかの実装において、初期化場所104は、床上の標示(例えば、マーキング、記号、線等)によって画定され得る。ロボット102の1つ以上のセンサ(例えば、センサユニット314のうちの)が、床の標示を検出したとき、ロボット102は、ロボット102が初期化場所104に位置付けられていることを検出し得る。
部分410において、ロボット102は、その後、記録された経路を選択して、自律的にナビゲートし得る。いくつかの実装において、ロボット102による記録された経路(例えば、経路116)の選択は、ユーザ入力に少なくとも部分的に基づき得る。例えば、ユーザは、ディスプレイ576上のユーザインターフェース500(図5Aに例示される)上の入力572を選択し得、入力572は、ユーザがロボット102の記録された経路を選択することを可能にする。入力572を選択した後、図12に例示されるインターフェース1200が現れ得る。図12は、経路選択のために使用され得る、インターフェース1200の例を例示する。インターフェース1200は、選択可能な入力1202A〜1202Fとして表示される選択のための複数の経路を提示し得る。ユーザは、タッチ(例えば、ディスプレイ576がタッチ画面を含む場合)および/またはユーザインターフェースユニット322の任意の他の入力機構を介して、選択可能な入力1202A〜1202Fのうちの1つを選択し得る。例えば、いくつかの実装において、入力1202Fは、ロボット102によって学習された、マッピングされた経路716と対応し得る。ユーザが入力1202Fを選択するとき、ロボット102は、その後、ユーザの選択に少なくとも部分的に基づいて、地図700およびマッピングされた経路716(経路116のユーザの実演に基づく)を選択し得る。
いくつかの実装において、ロボット102は、それが部分408で検出した初期化場所に基づいて、記録された経路を自律的に選択し得る。例えば、初期化場所104は、実演された経路116(またはマッピングされた経路716としてマッピングされたもの)のみと関連付けられ得る。同様に、ロボット102は、他の実演された経路と関連付けられた他の初期化場所を有し得る。有利には、複数の初期化場所を有することは、ユーザが、様々な経路を実演することを可能にし、かつロボット102が、様々な経路を通って自律的に移動することを可能にし得る。さらに、ロボット102が初期化場所に基づいて記録された経路を自動的に選択するようにすることによって、ロボット102は、最小限の追加のユーザ入力でより迅速に自律ナビゲーションを開始し得る。
図4を参照すると、部分412において、ロボット102は、その後、部分410で選択され記録された経路に沿って自律的に走行し得る。例えば、ロボット102は、地図700およびマッピングされた経路716を使用して自律的に走行し得る。
経路716を追従することにおいて、ロボット102は、少なくとも地図700、経路716、ならびにセンサ560A〜560Dおよびセンサ568A〜568Bからのデータのうちの1つ以上を処理し得る、少なくともナビゲーションユニット326に依拠し得る。図6Dおよび本開示のいずれかの場所を参照して例示および説明されるように、センサ560A〜560Dは、ロボット102がその周囲の物体を検知することを可能にし得る。このようにして、ロボット102は、地図700および近くの物体の検出に少なくとも部分的に基づいてナビゲートし得、ロボット102は、検出された物体を回避し得る。例えば、これらの物体は、一時的に配置され得る、および/もしくは一時のアイテム、ならびに/または環境に対する一時のおよび/もしくは動的な変化であり得る。近くの物体の検出はまた、ロボット102が地図700上で検出する物体の位置の決定に少なくとも部分的に基づいて、地図700上でロボット102自体を定位することを可能にすることもできる。
ロボット102はまた、少なくとも図5B〜5Dを参照して説明されるように、原点に対するその位置/姿勢(例えば、距離および/または配向)を少なくとも部分的に決定するために、オドメトリ用のセンサ568A〜568Bを利用することもできる。少なくとも地図700、経路716、センサ560A〜560D、およびセンサ568A〜568Bのうちの1つ以上を使用することによって、ロボット102は、図1Aに例示されたような経路106、FIG.1Cに例示された経路126、または環境100、もしくは他の環境を通る他の自律経路を、少なくとも方法400を利用して自律的に走行し得る。
また、経路106に沿って自律的に走行している間、ロボット102は、部分404の間に学習された、および/または地図700内に記録された、ブラシ908および/またはスキージ616等の、ロボット102上の様々な器具を作動させ得る。水のオン/オフを切り換えること、水を噴霧すること、吸引のオン/オフを切り換えること、吸引ホース位置を移動させること、アームをジェスチャ動作させること、リフトを昇降させること、カメラおよび/もしくはセンサユニット314の任意のセンサを切り換えること、ならびに/または動作を実施するためにロボット102に所望される運動等の、洗浄機、または任意の他のロボット形態の器具の学習された動作の作動もまた、同様に実施され得る。
図13は、ロボット102の例を動作させるための方法1300の一例を例示する。部分1302は、初期化場所内のロボットの第1の配置を検出することを含む。部分1304は、初期化場所から開始するロボットへのナビゲート可能経路の実演中に、ナビゲート可能経路および周囲環境の地図を作成することを含む。部分1306は、初期化場所内のロボットの第2の配置を検出することを含む。部分1308は、ロボットに初期化場所からナビゲート可能経路の少なくとも一部分を自律的にナビゲートさせることを含む。
本明細書に使用される際、コンピュータおよび/またはコンピューティングデバイスは、限定されるものではないが、デスクトップ、ラップトップ、もしくはその他のいずれかの、パーソナルコンピュータ(「PC」)およびミニコンピュータ、メインフレームコンピュータ、ワークステーション、サーバ、携帯情報端末(「PDA」)、ハンドヘルドコンピュータ、組込み型コンピュータ、プログラマブルロジックデバイス、パーソナルコミュニケータ、タブレットコンピュータ、モバイルデバイス、ポータブルナビゲーションエイド、J2ME搭載デバイス、携帯電話、スマートフォン、パーソナル統合通信またはエンターテインメントデバイス、および/または一式の命令を実行し、かつ着信データ信号を処理することができる任意の他のデバイスを含み得る。
本明細書に使用される際、コンピュータプログラムおよび/またはソフトウェアは、機能を実施する任意のシーケンスまたはヒトもしくは機械認識可能ステップを含み得る。かかるコンピュータプログラムおよび/またはソフトウェアは、例えば、C/C++、C#、Fortran、COBOL、MATLAB(商標)、PASCAL、Python、アセンブリ言語、マークアップ言語(例えば、HTML、SGML、XML、VoXML)等、およびコモンオブジェクトリクエストブローカアーキテクチャ(「CORBA」)、JAVA(商標)(J2ME、Java Beans等を含む)、バイナリランタイム環境(例えば、BREW)等のようなオブジェクト指向環境を含む、任意のプログラミング言語または環境で表現され得る。
本明細書に使用される際、接続、リンク、伝送チャネル、遅延線、および/または無線は、実体間で情報交換を可能にする任意の2つ以上の実体(物理的または論理的/仮想的のいずれか)間の因果リンクを含み得る。
本開示の一定の態様が、方法の特定の一連のステップに関して説明されるが、これらの説明は本開示の広範な方法の単なる例示であり、特定の用途によって要求される際に修正され得ることが認識されるであろう。一定のステップは、一定の状況下で、不必要または任意であり得る。加えて、一定のステップまたは機能性が、開示された実装、または置換された2つ以上のステップの実施順序に追加されてもよい。全てのかかる変形は、本明細書に開示され主張される開示内に含まれるとみなされる。
上記の詳細な説明が、様々な実装に適用されるように本開示の新規な特徴を示し、説明し、指摘してきたが、例示されたデバイスまたはプロセスの形態および詳細の様々な省略、置換、および変更が、本開示から逸脱することなく当業者によってなされ得ることが理解されるであろう。上記の説明は、本開示を実行する、現在考えられる最良の形態である。この説明は、決して限定を意味するものではなく、むしろ本開示の一般原理の例示として解釈されるべきである。本開示の範囲は、特許請求の範囲を参照して決定されるべきである。
本開示は、図面および上記の説明において詳細に例示および説明されてきたが、かかる例示および説明は、例示的または代表的であって限定的ではないとみなされるべきである。本開示は、開示された実施形態に限定されない。開示された実施形態に対する変形は、図面、開示および添付の特許請求の範囲の検討から、主張された開示を実施する際に当業者によって理解および成立され得る。
本開示の一定の特徴または態様を説明するときの特定の用語の使用が、その用語が関連付けられる本開示の特徴または態様の任意の具体的特性を含むために制限されるように、用語が本明細書で再定義されることを意味するようにとられるべきではないことが留意されるべきである。特に明記されない限り、本出願で使用される用語および語句、ならびにその変形は、特に添付の特許請求の範囲において、限定ではなく非限定として解釈されるべきである。上記の例として、「含む」という用語は、「限定するものではないが、含む」、「含むが、これに限定されない」等を意味するように読まれるべきであり、本明細書で使用される「備える」という用語は、「含む」、「含有する」または「によって特徴づけられる」と同義語であり、包括的または非限定であり、追加の列挙されていない要素または方法ステップを排除するものではなく、「有する」という用語は、「少なくとも有する」と解釈されるべきであり、「等の」という用語は、「限定するものではないが、〜等の」と解釈されるべきであり、「含む」という用語は、「含むが、これに限定されない」と解釈されるべきであり、「例」という用語は、その網羅的または限定的なリストではなく、論述中の項目の代表的な事例を提供するために使用され、「限定ではなく、例」として解釈されるべきであり、「既知」、「通常」、「標準」等の形容詞および同様の意味の用語は、説明された項目を所定の期間または所定の時点で利用可能な項目に限定するように解釈されるべきではなく、代わりに、現在または将来の任意の時点で利用可能または既知であり得る、既知、通常、または標準の技術を包含するように読まれるべきであり、「好ましくは」、「好ましい」、「所望される」、または「望ましい」のような用語の使用、および同様の意味を有する単語は、一定の特徴が、本開示の構造または機能にとって決定的、本質的またはさらに重要であることを意味するものとして理解されるべきではなく、代わりに、特定の実施形態で利用されてもよく、または利用されなくてもよい代替的または追加的な特徴を強調することを単に意図するように理解されるべきである。同様に、接続詞「および」によって繋げられた項目のグループは、グループ内に存在するそれらの項目のうちの各々および全てのものを必要とするように読まれるべきではなく、別途明確に記述されない限り、「および/または」として読まれるべきである。同様に、接続詞「または」によって繋げられた項目のグループは、そのグループ間の相互排他性を必要とするように読まれるべきではなく、別途明確に記述されない限り、「および/または」として読まれるべきである。「約」または「略」等の用語は、同義語であり、該用語によって修飾された値が、それと関連付けられた、±20%、±15%、±10%、±5%、または±1%であり得る、理解される範囲を有することを示すために使用される。「実質的に」という用語は、結果(例えば、測定値)が目標値に近いことを示すために使用され、近いとは、結果が、値の80%以内、値の90%いない、値の95%以内、または値の99%以内であることを意味し得る。また、本明細書に使用される「画定された」または「決定された」は、「画定済みの」もしくは「所定の」および/または別途決定された値、条件、閾値、測定値等を含み得る。