(57)【要約】  ロボット経路計画のためのシステムおよび方法が開示される。本開示のいくつかの実装態様では、ロボットは、ロボットの環境と関連付けられたコストマップを生成し得る。コストマップは、環境内の場所に各々対応する複数のピクセルを含み得、各ピクセルが、関連付けられたコストを有し得る。ロボットは、環境内のロボットの移動のための投影された経路部分を有する複数のマスクをさらに生成し得、各マスクが、環境内の場所に対応する複数のマスクピクセルを含む。ロボットは、次いで、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定し、マスクコストに少なくとも部分的に基づいて、マスクを選択し得る。選択されたマスク内の投影された経路部分に基づいて、ロボットは、空間をナビゲートし得る。【選択図】図１０
2020512644.tif 000002
【特許請求の範囲】
【請求項１】
ロボットによる経路計画のための方法であって、
前記ロボットの環境と関連付けられたコストマップを生成することであって、前記コストマップが、複数のコストマップピクセルを含み、前記複数のうちの各コストマップピクセルが、前記環境内のそれぞれの場所に対応し、前記複数のうちの各コストマップピクセルが、関連付けられたコストを有する、生成することと、
複数のマスクを生成することであって、前記複数のうちの各マスクが、前記環境内での前記ロボットの移動のための投影された経路部分を有し、前記複数のうちの各マスクが、複数のマスクピクセルを含み、前記複数のうちの各マスクピクセルが、前記環境内のそれぞれの場所に対応する、生成することと、
前記環境内の１つ以上の障害物に対する前記ロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、前記回復条件が適用される場合、（１）コストマップおよび／または（２）前記複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、
前記生成されたコストマップに少なくとも部分的に基づいて、前記複数のうちの各マスクと関連付けられたマスクコストを決定することと、
前記複数のマスクのうちの第１のマスクを、前記第１のマスクの前記決定されたマスクコストに少なくとも部分的に基づいて選択することと、
前記第１のマスク内に含まれる前記投影された経路部分を移動するように前記ロボットに対するアクチュエータコマンドを決定することと、
前記決定されたアクチュエータコマンドに少なくとも部分的に基づいて、前記ロボットのアクチュエータを作動させることと、を含む、方法。
【請求項２】
前記マスクコストを決定することが、
１つ以上のマスクを含む少なくとも１つのマトリックスを形成することと、
前記少なくとも１つのマトリックスと前記生成されたコストマップとの間のドット積を取得することと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記コストマップおよび各マスクが前記ロボットに対して実質的に同様に配向されるように、前記コストマップおよび各マスクを回転させることをさらに含む、請求項１に記載の方法。
【請求項４】
前記回転させることが、前記生成されたコストマップおよび前記複数の前記マスクのうちの各マスクをロボット中心にする、請求項３に記載の方法。
【請求項５】
複数の第２のコストマップピクセルを含む第２のコストマップを生成することをさらに含み、前記複数のうちの各第２のコストマップピクセルが、前記環境内のそれぞれの場所に対応し、前記複数のうちの各第２のコストマップピクセルが、前記ロボットの現在の場所および各第２のコストマップピクセルと関連付けられた前記それぞれの場所からの最短経路に対する前記ロボットの配向を少なくとも部分的に示すベクトルを含む、請求項１に記載の方法。
【請求項６】
前記複数のマスクのうちの各マスクと関連付けられた前記マスクコストを決定することが、前記生成された第２のコストマップに少なくとも部分的にさらに基づく、請求項５に記載の方法。
【請求項７】
前記回復条件が、障害物の存在に少なくとも部分的に基づいて、前記ロボットの運動制限を決定することを含む、請求項１に記載の方法。
【請求項８】
前記第１のマスクが選択されるたびにコストペナルティを実施することをさらに含み、前記実施されたコストペナルティは、前記第１のマスクが再び選択されることになる可能性を低下させる、請求項１に記載の方法。
【請求項９】
前記投影された経路部分のうちの経路部分が、経時的な前記ロボットの軌道を含む、請求項１に記載の方法。
【請求項１０】
前記投影された経路部分のうちの前記経路部分が、前記ロボットの清掃経路を含む、請求項９に記載の方法。
【請求項１１】
ロボットであって、
前記ロボットの環境に関するセンサデータを生成するように構成された１つ以上のセンサと、
前記ロボットの移動を推進するように構成された１つ以上のアクチュエータと、
プロセッサ装置と、を備え、前記プロセッサ装置が、
前記１つ以上のセンサによって生成された前記センサデータに少なくとも部分的に基づいて、前記環境のマップを生成することと、
前記環境の前記生成されたマップの少なくとも一部分と関連付けられたコストマップを生成することであって、前記生成されたコストマップが、複数のコストマップピクセルを含み、前記複数のうちの各コストマップピクセルが、前記環境内のそれぞれの場所に対応し、前記複数のうちの各コストマップピクセルが、関連付けられたコストを有する、生成することと、
複数のマスクを生成することであって、前記複数のうちの各マスクが、前記環境内での前記ロボットの移動のための投影された経路部分を有し、前記複数のうちの各マスクが、複数のマスクピクセルを含み、前記複数のうちの各マスクピクセルが、前記環境内のそれぞれの場所に対応する、生成することと、
前記環境内の１つ以上の障害物に対する前記ロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、前記回復条件が適用される場合、（１）コストマップおよび／または（２）前記複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、
前記生成されたコストマップに少なくとも部分的に基づいて、前記複数のうちの各マスクと関連付けられたマスクコストを決定することと、
前記複数のマスクのうちの第１のマスクを、前記第１のマスクの前記マスクコストに少なくとも部分的に基づいて選択することと、
前記第１のマスクに少なくとも部分的に基づいて、前記１つ以上のアクチュエータを作動させることと、を行うように構成されている、ロボット。
【請求項１２】
前記ロボットの清掃ブラシを動作させるように構成されている１つ以上のブラシアクチュエータをさらに備える、請求項１１に記載のロボット。
【請求項１３】
前記プロセッサ装置が、前記生成されたコストマップに少なくとも部分的に基づいて前記１つ以上のブラシアクチュエータを作動させるようにさらに構成されている、請求項１２に記載のロボット。
【請求項１４】
前記プロセッサ装置は、前記ロボットが前記環境内の障害物に遭遇することに少なくとも部分的に基づいて、前記複数のうちの少なくとも１つのマスクと関連付けられた前記マスクコストを更新するようにさらに構成されている、請求項１１に記載のロボット。
【請求項１５】
前記プロセッサ装置が、１つ以上の回復条件を識別する学習プロセスを実施するようにさらに構成されている、請求項１１に記載のロボット。
【請求項１６】
ロボットによる経路計画のための方法であって、
前記ロボットの環境と関連付けられたコストマップを生成することであって、前記コストマップが、複数のコストマップピクセルを含み、前記複数のうちの各コストマップピクセルが、前記環境内のそれぞれの場所に対応し、前記複数のうちの各コストマップピクセルが、前記それぞれの場所を清掃する要望に少なくとも部分的に基づく関連付けられたコストを有する、生成することと、
前記環境内の前記ロボットの姿勢からの移動のための投影された軌道を有する複数のマスクを生成することであって、前記複数のうちの各マスクが、複数のマスクピクセルを含み、前記複数のうちの各マスクピクセルは、前記ロボットが前記マスクを選択する場合に前記ロボットが清掃することになる前記環境内のそれぞれの場所に対応する、生成することと、
前記生成されたコストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することと、
前記複数のマスクのうちの第１のマスクを、前記第１のマスクの前記マスクコストに少なくとも部分的に基づいて選択することと、を含む、方法。
【請求項１７】
前記ロボットの１つ以上のアクチュエータを作動させて、前記第１のマスク内に含まれる第１の投影された軌道を清掃することをさらに含む、請求項１６に記載の方法。
【請求項１８】
ユーザフィードバックに応答して、前記生成されたコストマップを調整することをさらに含む、請求項１６に記載の方法。
【請求項１９】
前記複数のマスクを生成することが、
前記ロボットのフットプリントを受信することと、
前記環境内の障害物と前記ロボットの前記受信されたフットプリントとの間の衝突の回避に少なくとも部分的に基づいて、前記複数のマスクを生成することと、をさらに含む、請求項１６に記載の方法。
【請求項２０】
前記複数のマスクを生成することが、
前記ロボットの１つ以上の物理的属性を受信することであって、前記１つ以上の物理的属性が、前記ロボットの操縦能力を制限する、受信することと、
前記受信された１つ以上の物理的属性に少なくとも部分的に基づいて、前記複数のマスクを生成することと、をさらに含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権
本出願は、同じ名称の２０１７年３月３０日に出願された米国特許出願第１５／４７４，８１６号に対する優先権の利益を主張し、その全体が参照により本明細書に組み込まれる。
【０００２】
著作権
本特許文書の開示の一部には、著作権保護の対象となる資料が含まれている。著作権者は、特許商標庁の特許ファイルまたは記録に記載されているような本特許文書または本特許開示の、いかなる人物によるファクシミリ複製にも異論を唱えないが、それ以外の全ての著作権を留保する。
【０００３】
本出願は、概して、ロボット工学に関し、より具体的には、ロボット経路計画のためのシステムおよび方法に関する。
【背景技術】
【０００４】
現在、いくつかの従来の移動ロボットは、ある場所から別の目的地に移動するように構成され得る。そのような移動ロボットは、設定された経路をたどる、および／または目的地への移動中に設定された経路に沿って調整を行い得る。
【０００５】
いくつかの従来の移動ロボットは、特定の目的地を有していない。むしろ、移動ロボットは、空間内でタスクを実行し得る。例えば、いくつかの家庭用掃除機は、ある空間を清掃するように設計されているが、特定の目的地を有していない場合がある。
【０００６】
しかしながら、特定の動的環境では、移動ロボットが空間内でタスクを実行し、ある場所から目的地まで移動することの両方が望ましい場合があり得る。従来の移動ロボットでは、両方の挙動を最適化することに苦労し得る。したがって、当技術分野では、ロボット経路計画のための改善されたシステムおよび方法の必要性が存在する。
【発明の概要】
【０００７】
上記の必要性は、特に、ロボット経路計画のためのシステムおよび方法を提供する本開示によって満たされる。いくつかの実装態様では、ロボットは、ロボットが移動することになる経路を選択する前に、複数の投影された経路を移動するコストおよび／または利益を決定し得る。
【０００８】
本明細書に記載されている例示的な実装態様は、革新的な特徴を有しており、そのうちのどれも、それらの望ましい属性に対して不可欠ではなく、または単独でその責任を担うものではない。特許請求の範囲の範囲を限定することなく、いくつかの有利な特徴をここで要約する。
【０００９】
第１の態様では、ロボットによる経路計画のための方法が開示される。例示的な一実装態様では、本方法は、ロボットの環境と関連付けられたコストマップを生成することであって、コストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、関連付けられたコストを有する、生成することと、複数のマスクを生成することであって、複数のうちの各マスクが、環境内でのロボットの移動のための投影された経路部分を有し、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルが、環境内の場所に対応する、生成することと、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、回復条件が適用される場合、（１）コストマップおよび／または（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、生成されたコストマップに少なくとも部分的に基づいて、複数のうちの各マスクと関連付けられたマスクコストを決定することと、複数のマスクのうちの第１のマスクを、第１のマスクの決定されたマスクコストに少なくとも部分的に基づいて選択することと、第１のマスク内に含まれる投影された経路部分を移動するようにロボットに対するアクチュエータコマンドを決定することと、決定されたアクチュエータコマンドに少なくとも部分的に基づいて、ロボットのアクチュエータを作動させることと、を含む。
【００１０】
一変形形態では、マスクコストを決定することは、１つ以上のマスクを含む少なくとも１つのマトリックスを形成することと、少なくとも１つのマトリックスと生成されたコストマップとの間のドット積を取得することと、をさらに含む。
【００１１】
別の変形形態では、本方法は、コストマップおよび各マスクがロボットに対して実質的に同様に配向されるように、コストマップおよび各マスクを回転させることをさらに含む。別の変形形態では、回転させることは、生成されたコストマップおよび複数のマスクのうちの各マスクをロボット中心にする。
【００１２】
別の変形形態では、本方法は、複数の第２のコストマップピクセルを含む第２のコストマップを生成することをさらに含み、各第２のコストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各第２のコストマップピクセルが、ロボットの現在の場所および各第２のコストマップピクセルと関連付けられたそれぞれの場所からの最短経路に対するロボットの配向を少なくとも部分的に示すベクトルを含む。
【００１３】
別の変形形態では、複数のマスクのうちの各マスクと関連付けられたマスクコストを決定することは、生成された第２のコストマップに少なくとも部分的にさらに基づく。別の変形形態では、回復条件は、障害物の存在に少なくとも部分的に基づいて、ロボットの運動制限を決定することを含む。別の変形形態では、本方法は、第１のマスクが選択されるたびにコストペナルティを実施することをさらに含み、実施されたコストペナルティは、第１のマスクが再び選択されることになる可能性を低下させる。
【００１４】
別の変形形態では、投影された経路部分のうちの経路部分は、経時的なロボットの軌道を含む。別の変形形態では、投影された経路部分のうちの経路部分は、ロボットの清掃経路を含む。
【００１５】
別の例示的な実装態様では、ロボットによる経路計画のための方法は、ロボットの環境と関連付けられたコストマップを生成することであって、コストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、それぞれの場所を清掃する要望に少なくとも部分的に基づく関連付けられたコストを有する、生成することと、環境内のロボットの姿勢からの移動のための投影された軌道を有する複数のマスクを生成することであって、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルは、ロボットがマスクを選択する場合にロボットが清掃することになる環境内のそれぞれの場所に対応する、生成することと、生成されたコストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することと、複数のマスクのうちの第１のマスクを、第１のマスクの決定されたマスクコストに少なくとも部分的に基づいて選択することと、を含む。
【００１６】
一変形形態では、本方法は、ロボットの１つ以上のアクチュエータを作動させて、第１のマスク内に含まれる第１の投影された軌道を清掃することを含む。別の変形形態では、本方法は、ユーザフィードバックに応答して、生成されたコストマップを調整することをさらに含む。
【００１７】
別の変形形態では、複数のマスクを生成することは、ロボットのフットプリントを受信することと、環境内の障害物とロボットの受信されたフットプリントとの間の衝突の回避に少なくとも部分的に基づいて、複数のマスクを生成することと、をさらに含む。
【００１８】
別の変形形態では、複数のマスクを生成することは、ロボットの１つ以上の物理的属性を受信することであって、１つ以上の物理的属性が、ロボットの操縦能力を制限する、受信することと、受信された１つ以上の物理的属性に少なくとも部分的に基づいて、複数のマスクを生成することと、をさらに含む。
【００１９】
第２の態様では、ロボットが開示される。例示的な一実装態様では、ロボットは、ロボットの環境に関するセンサデータを生成するように構成された１つ以上のセンサと、ロボットの移動を推進するように構成された１つ以上のアクチュエータと、プロセッサ装置と、を備え、プロセッサ装置が、１つ以上のセンサによって生成されたセンサデータに少なくとも部分的に基づいて、環境のマップを生成することと、環境の生成されたマップの少なくとも一部分と関連付けられたコストマップを生成することであって、生成されたコストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、関連付けられたコストを有する、生成することと、複数のマスクを生成することであって、複数のうちの各マスクが、環境内でのロボットの移動のための投影された経路部分を有し、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルが、環境内のそれぞれの場所に対応する、生成することと、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、回復条件が適用される場合、（１）コストマップおよび／または（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、生成されたコストマップに少なくとも部分的に基づいて、複数のうちの少なくとも１つのマスクと関連付けられたマスクコストを決定することと、複数のマスクのうちの第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択することと、第１のマスクに少なくとも部分的に基づいて、１つ以上のアクチュエータを作動させることと、を行うように構成されている。
【００２０】
一変形形態では、ロボットは、ロボットの清掃ブラシを動作させるように構成されている１つ以上のブラシアクチュエータをさらに備える。別の変形形態では、プロセッサ装置は、生成されたコストマップに少なくとも部分的に基づいて、１つ以上のブラシアクチュエータを作動させるようにさらに構成されている。別の変形形態では、プロセッサ装置は、ロボットが環境内の障害物に遭遇することに少なくとも部分的に基づいて、複数のうちの各マスクと関連付けられたマスクコストを更新するようにさらに構成されている。別の変形形態では、プロセッサ装置は、１つ以上の回復条件を識別する学習プロセスを実施するようにさらに構成されている。
【００２１】
別の例示的な実装態様では、ロボットは、ロボットは、ロボットの環境に関するセンサデータを生成するように構成された１つ以上のセンサと、ロボットの移動を推進するように構成された１つ以上のアクチュエータと、マッピングユニットと、を備え、プロセッサ装置が、１つ以上のセンサによって生成されたセンサデータに少なくとも部分的に基づいて、環境のマップを生成することと、環境の生成されたマップの少なくとも一部分と関連付けられたコストマップを生成することであって、生成されたコストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、関連付けられたコストを有する、生成することと、複数のマスクを生成することであって、複数のうちの各マスクが、環境内でのロボットの移動のための投影された経路部分を有し、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルが、環境内のそれぞれの場所に対応する、生成することと、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、回復条件が適用される場合、（１）コストマップおよび／または（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、生成されたコストマップに少なくとも部分的に基づいて、複数のうちの少なくとも１つのマスクと関連付けられたマスクコストを決定することと、複数のマスクのうちの第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択することと、を行うように構成されており、１つ以上のアクチュエータが、第１のマスクに少なくとも部分的に基づいて作動する。
【００２２】
別の例示的な実装態様では、ロボットは、データに少なくとも部分的に基づいて、ロボットの環境のマップを生成するための手段と、ロボットの移動を推進するための手段と、環境の生成されたマップの少なくとも一部分と関連付けられたコストマップを生成するための手段であって、生成されたコストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、関連付けられたコストを有する、手段と、複数のマスクを生成するための手段であって、複数のうちの各マスクが、環境内のロボットの移動のための投影された経路部分を有し、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクが、環境内のそれぞれの場所に対応する、手段と、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定し、かつ回復条件が適用される場合、（１）コストマップおよび／または（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正するための手段と、生成されたコストマップに少なくとも部分的に基づいて、複数のうちの各マスクと関連付けられたマスクコストを決定するための手段と、複数のマスクのうちの第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択するための手段と、第１のマスクに少なくとも部分的に基づいて、ロボットの移動を推進するための手段を作動させるための手段と、を備える。
【００２３】
第３の態様では、ロボットを製造するための方法が開示される。例示的な一実装態様では、製造するための方法は、プロセッサおよび１つ以上のセンサを含むモジュールを取り付けることと、ロボットの環境のマップを生成するように１つ以上のセンサを構成することと、プロセッサを構成することであって、ロボットの環境と関連付けられたコストマップを生成することであって、コストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、場所を清掃する要望に少なくとも部分的に基づく関連付けられたコストを有する、生成することと、環境内のロボットの姿勢からの移動のための投影された軌道を有する複数のマスクを生成することであって、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルは、ロボットがマスクを選択する場合にロボットが清掃することになる環境内の場所に対応する、生成することと、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することと、第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択することと、を行うように、構成することと、を含む。
【００２４】
第４の態様では、非一時的コンピュータ可読記憶装置が開示される。例示的な一実装態様では、非一時的コンピュータ可読記憶媒体は、そこに記憶された複数の命令を有し、命令は、ロボットを動作させるように処理装置によって実行可能である。命令は、処理装置によって実行されたとき、処理装置に、ロボットの環境と関連付けられたコストマップを生成することであって、コストマップが、環境内の場所に各々対応する複数のコストマップピクセルを含み、各コストマップピクセルが、関連付けられたコストを有する、生成することと、環境内のロボットの移動のための投影された経路部分を有する複数のマスクを生成することであって、各マスクが、複数のマスクピクセルを含み、各マスクピクセルが、環境内の場所に対応する、生成することと、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することと、回復条件が適用される場合、（１）コストマップおよび（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正することと、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することと、第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択することと、第１のマスク内に含まれる投影された経路部分を移動するようにロボットに対するアクチュエータコマンドを決定することと、アクチュエータコマンドに少なくとも部分的に基づいて、ロボットのアクチュエータを作動させることと、を行わせる。
【００２５】
別の例示的な実装態様では、非一時的コンピュータ可読記憶媒体は、そこに記憶された複数の命令を有し、命令は、ロボットを動作させるように処理装置によって実行可能である。命令は、処理装置によって実行されたとき、処理装置に、ロボットの環境と関連付けられたコストマップを生成することであって、コストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、場所を清掃する要望に少なくとも部分的に基づく関連付けられたコストを有する、生成することと、環境内のロボットの姿勢からの移動のための投影された軌道を有する複数のマスクを生成することであって、複数のうちの各マスクが、複数のマスクピクセルを含み、複数のうちの各マスクピクセルは、ロボットがマスクを選択する場合にロボットが清掃することになる環境内の場所に対応する、生成することと、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することと、第１のマスクを、第１のマスクのマスクコストに少なくとも部分的に基づいて選択することと、を行わせる。
【００２６】
第５の態様では、ロボットの経路を計画するためのシステムが開示される。例示的な一実装態様では、システムは、ロボットの環境に関するセンサデータを生成するように構成された１つ以上のセンサを含むロボットと、ロボットに通信可能に連結されたネットワークであって、ネットワークが、環境の生成されたマップの少なくとも一部分と関連付けられたコストマップを生成するように構成され、生成されたコストマップが、複数のコストマップピクセルを含み、複数のうちの各コストマップピクセルが、環境内のそれぞれの場所に対応し、複数のうちの各コストマップピクセルが、関連付けられたコストを有する、ネットワークと、ユーザインターフェースを介してユーザ入力を提供するように構成されたアクセスポイントと、を含み、ネットワークが、ユーザ入力に基づいてコストマップをさらに生成する。
【００２７】
一変形形態では、コストマップの生成は、機械学習プロセスを利用する。
【００２８】
本開示のこれらおよび他の目的、特徴、および特性、ならびに構造の関連要素の操作方法および機能ならびに部品の組み合わせおよび製造の経済性は、それらの全てが本明細書の一部分を形成し、同様の参照番号が様々な図における対応する部分を示す、添付の図面を参照して下記の説明および添付の特許請求の範囲を考慮することにより、より明らかになるであろう。しかしながら、図面は、例示および説明の目的のみのためであり、本開示の限界の定義を意図するものではないことは、明白に理解されるべきである。本明細書および特許請求の範囲で使用されるように、「ａ」、「ａｎ」、および「ｔｈｅ」の単数形は、文脈から明らかに別様であると認められない限り、複数の指示対象を含む。
【図面の簡単な説明】
【００２９】
開示された態様は、添付の図面と併せて以下で説明され、開示される態様を例示するために提供され、限定するために提供されるものではなく、同様の名称は同様の要素を示す。
【００３０】
【図１Ａ】本開示のいくつかの実装態様による、ロボットをナビゲートする例示的な方法のプロセスフロー図である。
【図１Ｂ】本開示のいくつかの実装態様による、環境の一区分内の経路に沿って移動するロボットの俯瞰図である。
【図１Ｃ】本開示のいくつかの実装態様による、変更された経路部分に沿って移動するロボットの俯瞰図である。
【図２】本開示のいくつかの動作原理による、ロボットの機能ブロック図である。
【図３】本開示のいくつかの実装態様による、ネットワークに通信可能におよび／または動作可能に連結されたロボットを含むシステムの機能ブロック図である。
【図４】本開示のいくつかの実装態様による、ロボットのロボット経路計画を動作させるための例示的な方法のプロセスフロー図である。
【図５Ａ】本開示のいくつかの実装態様による、コストマップの俯瞰図の図形表現である。
【図５Ｂ】本開示のいくつかの実装態様による、インジケータの周りにスカートを有するコストマップの俯瞰図の図形表現である。
【図６】本開示のいくつかの実装態様による、ロボットにとってロボット中心であるコストマップの上面図である。
【図７Ａ】本開示のいくつかの実装態様による、ロボットのロボットフットプリントを例示する上面図である。
【図７Ｂ】本開示のいくつかの実装態様による、３つの車輪を有するロボットの左側面図を例示する。
【図７Ｃ】本開示のいくつかの実装態様による、３つの車輪を有するロボットの右側面図を例示する。
【図７Ｄ】本開示の動作原理による、経時的なコントローラ特性のチャートである。
【図７Ｅ】本開示のいくつかの実装態様による、連続コントローラ特性に追従するロボットの上面図である。
【図８Ａ】本開示のいくつかの実装態様による、決定された経路部分を例示する経路部分図を含む。
【図８Ｂ】本開示のいくつかの実装態様による、経路部分図の３次元マトリックスの図形表現である。
【図８Ｃ】本開示のいくつかの実装態様による、ロボットが障害物に衝突するロボットの軌道、およびロボットが障害物を迂回することを可能にするロボットの軌道の俯瞰図である。
【図８Ｄ】本開示の実装態様による、各点が離散場所である、マップ部分の離散化されたバージョンを例示する俯瞰図である。
【図８Ｅ】本開示のいくつかの実装態様による、図８Ｄに例示された離散化された点の区分からの最短非衝突経路を示す俯瞰図である。
【図８Ｆ】本開示のいくつかの実装態様による、図８Ｄに例示された離散化された点と関連付けられた最短経路のベクトルを示す俯瞰図である。
【図９Ａ】本開示のいくつかの実装態様による、壁に面し、それによって制限された前方移動性を有する、ロボットの俯瞰図である。
【図９Ｂ】本開示のいくつかの実装態様による、ロボットのフットプリントの計算された回転の上面図である。
【図９Ｃ−９Ｅ】本開示の実装態様による、マップを補正するためのユーザインターフェースである。
【図１０】本開示のいくつかの実装態様による、経路計画のための例示的な方法のプロセスフロー図である。
【図１１】本開示のいくつかの実装態様による、経路計画のための例示的な方法のプロセスフロー図である。
【図１２】本開示のいくつかの実装態様による、経路計画のための例示的な方法のプロセスフロー図である。  本明細書に開示された全ての図は、Ｂｒａｉｎ  Ｃｏｒｐｏｒａｔｉｏｎの著作権２０１７〜２０１８である。無断転用禁止。
【発明を実施するための形態】
【００３１】
本明細書に開示された新規なシステム、装置、および方法の様々な態様は、添付の図面を参照して以下でより完全に記載される。しかしながら、本開示は、多くの異なる形態で具現化することができ、本開示全体を通して提示される具体的な構造または機能に限定されると解釈されるべきではない。むしろ、これらの態様は、本開示が徹底的かつ完全であり、本開示の範囲を当業者に完全に伝えるように提供される。本明細書の教示に基づいて、当業者であれば、本開示の範囲が、本開示の任意の他の態様とは独立して実装されるか、またはそれと組み合わせられるかにかかわらず、本明細書に開示された新規のシステム、装置、および方法の任意の態様を包含することを意図していることを理解するであろう。例えば、本明細書に記載の任意の数の態様を使用して、装置を実装することができ、または方法を実施することができる。加えて、本開示の範囲は、本明細書に記載された開示の様々な態様に加えて、またはそれ以外の他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法を包含するように意図されている。本明細書に開示されるいかなる態様も、特許請求項の１つ以上の要素によって実装され得ることを理解されたい。
【００３２】
特定の態様が本明細書に記載されているが、これらの態様の多くの変形および置換が本開示の範囲内に含まれる。好ましい態様のいくつかの利益および利点が述べられているが、本開示の範囲は、特定の利益、用途、および／または目的に限定されることを意図しない。詳細な説明および図面は、限定ではなく本開示の単なる例示であり、本開示の範囲は、添付の特許請求の範囲およびその等価物によって定義される。
【００３３】
本開示は、改善されたモバイルプラットフォームを提供する。特に、本開示のいくつかの実装態様は、ロボットモバイルプラットフォームなどのロボットに関する。本明細書で使用される場合、ロボットは、複雑な一連の行動を自動的に実行するように構成された機械的および／または仮想的エンティティを含むことができる。場合によっては、ロボットは、コンピュータプログラムおよび／または電子回路によって案内および／または命令される機械であり得る。場合によっては、ロボットは、ナビゲーション用に構成された電子機械コンポーネントを含むことができ、ロボットは、ある場所から別の場所に移動することができる。このようなロボットは、自律的および／または半自律的自動車、床掃除機、ローバ、ドローン、飛行機、ボート、カート、路面列車、車椅子、産業機器、ストッキングマシン、モバイルプラットフォーム、個人用輸送デバイス（例えば、ホバーボード、ＳＥＧＷＡＹＳ（登録商標）、車椅子など）、ストッキングマシン、トレーラムーバ、車両などを含むことができる。ロボットは、アイテム、人、動物、貨物、荷物、物体、手荷物、および／または望ましいものをある場所から別の場所に輸送するための任意の自律的および／または半自律的機械も含むことができる。ロボットは自律的および／または半自律的にナビゲーションおよび／または移動することができるモバイルシステムであるため、場合によっては、輸送に使用されるこのようなロボットは、ロボットモバイルプラットフォームを含むことができる。これらのロボットモバイルプラットフォームは、自律的および／もしくは半自律的車椅子、自転車、手こぎボート、スクーター、フォークリフト、路面列車、列車、カート、車両、タグボート、ならびに／または輸送に使用される任意の機械を含むことができる。
【００３４】
本明細書で言及されるように、床清掃機は、手動制御（例えば、駆動制御または遠隔制御）および／または自律（例えば、ユーザ制御をほとんどまたは全く用いない）床清掃機を含むことができる。例えば、床清掃機は、管理者、管理人、または他の人が操作する床洗浄機、および／または環境を自律的にナビゲートおよび／または清掃するロボット床洗浄機を含むことができる。同様に、床清掃機はまた、掃除機、スチーマ、バッファ、モップ、ポリッシャ、スイーパ、バニッシャなどを含み得る。
【００３５】
特定の例が、床清掃機もしくはモバイルプラットフォーム、またはロボット床清掃機もしくはロボットモバイルプラットフォームに関して本明細書に説明される。そのような例は、例示用にのみ使用され、本明細書で説明される動作原理は、ロボット一般に容易に適用され得る。
【００３６】
場合によっては、ロボットは、１つ以上のタスクを実行するように自動化された電気器具、機械、および／または機器を含むことができる。例えば、それらが自律的に動作することができるように、モジュールを電気器具、機械、および／または機器に取り付けることができる。そのような取り付けは、エンドユーザによって、および／または製造プロセスの一部として行うことができる。いくつかの実装態様では、モジュールは、電気器具、機械、および／または機器の自律運動を駆動するモータを含むことができる。場合によっては、モジュールは、既存のコントローラ、アクチュエータ、ユニット、ならびに／または電気器具、機械、および／もしくは機器のコンポーネントに制御信号を送信することによってなど、少なくとも部分的にスプーフィングに基づいて、電気器具、機械、および／または機器を動作させる。モジュールは、データを受信および生成するためのセンサおよび／またはプロセッサを含むことができる。モジュールは、センサデータを処理し、制御信号を送信し、かつ／または既存のコントローラ、ユニット、および／もしくは電気器具、機械、および／もしくは機器のコンポーネントを他の方法で制御するために、プロセッサ、アクチュエータ、および／または本明細書に記載されるコンポーネントのいずれかを含むこともできる。そのような電気器具、機械、および／または機器は、自動車、床掃除機、ローバ、ドローン、飛行機、ボート、カート、路面列車、車椅子、産業機器、ストッキングマシン、モバイルプラットフォーム、個人用輸送デバイス、ストッキングマシン、トレーラムーバ、車両、および／または任意の種類の機械を含むことができる。
【００３７】
本開示のシステムおよび方法の様々な実装態様および変形形態の詳細な説明がここで提供される。本明細書で論じる多くの例はロボット式床掃除機に言及している可能性があるが、本明細書に含まれる説明されるシステムおよび方法は任意の種類のロボットに適用可能であることが理解されよう。本明細書に記載される技術の無数の他の例示的な実装態様または使用は、本開示の内容を考慮すれば、当業者であれば容易に想到するであろう。
【００３８】
有利なことに、本開示のシステムおよび方法は、少なくとも、（ｉ）ロボットが環境内で安全に動作することを可能にすることと、（ｉｉ）ロボットが自然に見える挙動を示すことを可能にすることによって、ロボットによる快適さ（例えば、人間や動物による）を提供することと、（ｉｉｉ）非対称および／または非円形ロボットがナビゲートすることを可能にすることと、（ｉｖ）ロボットリソースの計算効率の高い管理を提供することと、（ｖ）ロボットの効率を改善することと、（ｖｉ）ロボットがナビゲートし、タスクを実行することを可能にすることと、を行う。他の利点は、本開示の内容を考慮すれば、当業者は容易に認識することができる。
【００３９】
例えば、いくつかの実装態様では、ロボットは、床清掃機を含み得る。床清掃機は、床を清掃するタスクを実行し得る。したがって、床清掃機は、床面積の一部分を清掃し得る。場合によっては、オペレータが清掃を望む部分と、オペレータが清掃を望まないエリアが存在し得る。例えば、床清掃機は、硬質床洗浄機とすることができる。オペレータは、硬質床洗浄機で硬質表面（例えば、タイル、コンクリート、テラゾ、セラミック、および／またはその他の硬質表面）を清掃するが、軟質表面（例えば、カーペット、人工芝もしくは芝、マット、および／または他の軟質表面）を清掃しない。さらに、ロボットが床清掃機である場合、オペレータは、清掃可能な空間全体が清掃されることを望み得る。さらに、オペレータは、床清掃機が壁および／または他の物体に近づくことを望み得る。例えば、床の一部分を横断しないことは、その部分が清掃されないことにつながり得る。別の例として、床清掃機が壁に衝突せずに壁に近づくことが望ましい場合があり、例えば、床清掃機が、壁から約１、２、３、４、５、６センチメートル以上離れるなどの所定の距離で動作することが望ましい場合がある。加えて、オペレータはまた、ロボットが空間内での衝突を回避する、および／または特定の目的地にナビゲートすることも望み得る。他の非清掃ロボットは、同様の望ましい特性を有し得る。例えば、ストッキングロボットが特定の場所で特定のアイテムをストックすることが望ましい場合がある。人、アイテム、動物などを輸送して、特定の場所でアイテムを荷積みおよび／または荷降ろしするモバイルプラットフォームが望ましい場合がある。ロボットが同時にナビゲートしながら特定の箇所（他の箇所ではなく）でタスクを実行することが望ましい、無数の他の用途が存在する。有利なことに、本明細書で開示されるシステムおよび方法は、ロボットが空間をナビゲートし（かつ他のものをナビゲートしない）、障害物を回避し、所望されるタスクを実行し、および／または目的地に行くことを可能にする。現在のロボットの多くは、ロボットの複数の挙動を最適化することが難しいため、この能力を有していない。
【００４０】
別の例として、ロボットナビゲーションの課題は、一般的な規則の例外に対処することである。場合によっては、これらは、コーナーケースと呼ばれる場合があり、ロボットが、非典型的なシナリオに遭遇し得る。有利なことに、本開示で説明されるシステムおよび方法は、ロボットがそのような例外的な場合に対処することを可能にし得る。
【００４１】
別の例として、従来のロボットは、多くの場合、対称であり、円形であり、狭い半径で旋回し、任意の方向に移動し、および／またはロボットの形状に大きく依存せずに操縦される。しかしながら、多くの従来の機械は、非円形であり、非対称であり、狭い半径で旋回することができず、いかなる方向にも移動することができず、および／または形状に大きく依存して操縦される。例えば、円形の機械は、任意の方向に旋回および／または移動することができる。三輪車形状を有する機械は、ある方向に旋回および／または移動することができるように追加の操縦を必要とし得る。例示として、三輪車形状のロボットがある方向（例えば、左または右）に旋回した場合、その方向から別の方向に旋回するためにより多くの動きを行い得る。有利なことに、本開示のシステムおよび方法は、多くの形状の従来の機械がロボット化されることを可能にする。
【００４２】
別の例として、従来のロボットは、堅牢な計画を可能にしないソフトウェアおよびハードウェアを有する場合がある。計画に使用される多くの従来のシステムおよび方法は、法外に高価および／またはサイズが大きいハードウェアを利用する。結果として、そのような従来のシステムおよび方法は、ロボットおよび／またはロボットシステムに容易に統合されない場合がある。有利なことに、本開示のシステムおよび方法は、ロボット経路計画のためのハードウェアおよび／またはソフトウェアの効率的な使用を可能にする。
【００４３】
図１Ａは、本開示のいくつかの実装態様による、ロボットをナビゲートする例示的な方法１００のプロセスフロー図である。ブロック１０２は、経路を受信することを含む。例えば、経路は、実演または他の学習プロセスなどを介して、ロボットによって学習され得る。別の例として、経路は、地図、座標、画像、および／または他のデータ形式などを介して、ロボットにアップロードされ得る。
【００４４】
場合によっては、経路は、移動のルートを含み得る。例えば、ルートは、ロボットの第１の場所から第２の場所への移動を含み得る。ルートは、環境内の場所と関連付けられた複数の位置、配向、および／または姿勢などの、ロボットの複数の位置、配向、および／または姿勢を含み得る。場合によっては、ルートは、ロボットが第１の場所から第２の場所に直接移動する直線経路を含み得る。一部の実装態様では、経路は、より複雑であり得、ロボットが並進する際の環境内での回旋、ダブルバッキング、オーバーラッピング、Ｕターン、および／またはその他の操縦を含む。例えば、そのような操縦は、ロボットがタスクを完了することを可能にし得る。例示として、ロボットが床清掃機である場合、操縦は、ロボットが床のエリアを清掃することを可能にし得る。別の例として、ロボットがアイテム、人、動物、船荷、積荷、物体、荷物、および／またはある場所から別の場所への望ましい任意のものを輸送している場合、そのような操縦は、ロボットが荷積み、荷降ろし、現場の確認、障害物の回避、および／または任意の他の理由で異なる場所に行くことを可能にし得る。
【００４５】
ブロック１０４は、環境に基づいてブロック１０２で受信された経路を調整することを含む。場合によっては、ブロック１００で受信された経路は、ある時点での経路の少なくとも一部を示し得る。例えば、ロボットが実演によって訓練される場合、経路は、特定の時間に実演されたルートを示し得る。環境は、特定の時間に特定の特性を有し得、この特性は、別の時間に変化してもよい。例えば、環境は、１つ以上の物体および／または障害物を含み、動的であり得る。初回において、環境のセグメントは、障害物がない状態であり得る。いくつかの実装態様では、ブロック１０４は、ロボット２００の経路がリアルタイムで環境とともに変化し得る動的計画を含み得る。
【００４６】
例えば、図１Ｂは、本開示のいくつかの実装態様による、環境の一区分１０８内の経路に沿って移動するロボット２００の俯瞰図である。区分１０８は、ロボット２００が環境内を横断する部分であり得る。区分１０８では、ロボット２００は、経路部分１１０Ａに沿って移動し得る。経路部分１１０Ａは、ブロック１０２で受信された経路の一部分であり得る。例示されるように、経路部分１００は、壁１１２などの壁の周りをナビゲートし、それらの壁に衝突することを回避する。経路部分１１０Ａが壁を回避するため、ロボット２００は、経路部分１１０Ａに沿って移動している間、壁への衝突を回避することができる。
【００４７】
いくつかの実装態様では、壁１１２などの壁に加えて、物体および／または障害物が存在し得る。衝突を回避するためにロボット２００が移動する際に、ロボット２００がそのような物体および／または障害物を回避することが望ましい場合がある。したがって、経路部分１１０Ａは、物体および／または障害物などの環境条件の存在によって影響を受け得る。
【００４８】
例示として、図１Ｃは、本開示のいくつかの実装態様による、区分１０８の変更された経路部分１１０Ｂに沿って移動するロボット２００の俯瞰図である。物体１１４は、図１Ｂに例示されるように、経路部分１１０Ａ上を移動するロボット２００の通り道にあり得る。したがって、ロボット２００が経路部分１１０Ａに沿って移動した場合、ロボット２００は、物体１１４と衝突および／またはそれに妨害され得る。したがって、ブロック１０４によると、ロボット２００は、物体１１４を迂回するために、区分１０８を経路部分１１０Ｂに調整し得る。図１Ｂおよび１Ｃは、１つの調整を例示しているが、区分１０８内および／または環境内の経路の他の区分内に任意の数の調整が存在し得る。
【００４９】
ロボット２００が物体１１４の周りをどのように計画し、および／または区分１０８をトラバースすることをどのように計画するかは、当技術分野における現在の課題である。ロボット２００が採用し得る無数の可能な操縦が存在し得る。さらに、ロボット２００は、空間のナビゲート、ロボットタスクの実行（例えば、清掃、輸送、および／またはロボット２００が実行するように構成される任意の他のタスク）、可能な限り高速なタスクの実行、エネルギーの節約およびリソース費用のかかる操縦の回避、障害物からの安全な距離の維持、および／または他の目的などの、行動における複数の目的を有し得る。有利なことに、本開示のシステムおよび方法は、ロボット２００が、複数の目的が存在する条件下で空間を通る経路を効果的および／または効率的に計画することを可能にし得る。
【００５０】
図１Ａに戻ると、ブロック１０６は、経路に沿ってロボット２００をナビゲートするようにアクチュエータコマンドを生成することを含み得る。例示として、ロボット２００は、ロボット２００を前方に推進する、ロボット２００を旋回させる、および／またはロボット２００の部分を作動させるアクチュエータなどのアクチュエータを含み得る。ロボット２００が経路（例えば、経路部分１１０Ａまたは１１０Ｂ）に沿って移動するために、ロボット２００は、一連の作動を実行し得る。一連の作動（例えば、アクチュエータの）は、アクチュエータがどのように作動するかの少なくとも一部を示すコマンド信号などの、一連のコマンドに応答し得る。場合によっては、これらのコマンドは、アクチュエータコマンドおよび／またはモータコマンド（例えば、アクチュエータがモータである場合）とすることができる。場合によっては、そのようなコマンドは、モータプリミティブおよび／またはアクチュエータプリミティブなどのプリミティブとすることができる。動きを調整するために、コマンドは、ロボット２００の１つ以上の自由度（「ＤＯＦ」）に供給され得る。これらのアクチュエータコマンドは、ロボット２００が、経路部分１１０Ａまたは１１０Ｂなどの経路の少なくとも一部分に追従する軌道を形成することを可能にする。
【００５１】
図２は、本開示のいくつかの動作原理による、ロボット２００の機能ブロック図である。図２に例示されるように、ロボット２００は、コントローラ２０４、メモリ２０２、ユーザインターフェースユニット２１８、センサユニット２１２、アクチュエータユニット２２０、および通信ユニット２２２、ならびに他のコンポーネントおよびサブコンポーネント（例えば、それらのいくつかは例示されなくてもよい）を含むことができる。特定の実装態様が図２に例示されているが、本開示の内容が与えられた当業者には容易に明らかになるように、アーキテクチャは、特定の実装態様で変更され得ることが理解される。本明細書で使用される場合、ロボット２００は、本開示に記載される任意のロボットの少なくとも一部を表すことができる。ロボット２００は、方法１００などの、本開示で説明されるシステムおよび方法のうちの１つ以上をインスタンス化し得る。
【００５２】
コントローラ２０４は、ロボット２００によって実行される様々な操作を制御することができる。コントローラ２０４は、１つ以上のプロセッサ（例えば、マイクロプロセッサ）および他の周辺機器を含むことができる。本明細書で使用される場合、プロセッサ、マイクロプロセッサ、および／またはデジタルプロセッサは、限定することなく、デジタル信号プロセッサ（「ＤＳＰ」）、縮小命令セットコンピュータ（「ＲＩＳＣ」）、汎用（「ＣＩＳＣ」）プロセッサ、マイクロプロセッサ、ゲートアレイ（例えば、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」））、プログラマブルロジックデバイス（「ＰＬＤ」）、再構成可能コンピュータファブリック（「ＲＣＦ」）、アレイプロセッサ、セキュアマイクロプロセッサ、専用プロセッサ（例えば、ニューロモルフィック（ｎｅｕｒｏｍｏｒｐｈｉｃ）プロセッサ）、および特定用途向け集積回路（「ＡＳＩＣ」）などの、任意の種類のデジタル処理デバイスを含むことができる。そのようなデジタルプロセッサは、単一の一元的な集積回路ダイに含まれてもよく、または複数のコンポーネントにわたって分散されてもよい。
【００５３】
コントローラ２０４は、メモリ２０２と操作可能におよび／または通信可能に結合されてもよい。メモリ２０２は、読み取り専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、不揮発性ランダムアクセスメモリ（「ＮＶＲＡＭ」）、プログラマブル読み取り専用メモリ（「ＰＲＯＭ」）、電気的消去可能プログラマブル読み取り専用メモリ（「ＥＥＰＲＯＭ」）、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）、モバイルＤＲＡＭ、シンクロナスＤＲＡＭ（「ＳＤＲＡＭ」）、ダブルデータレートＳＤＲＡＭ（「ＤＤＲ／２ＳＤＲＡＭ」）、拡張データ出力（「ＥＤＯ」）ＲＡＭ、高速ページモードＲＡＭ（「ＦＰＭ」）、低遅延ＤＲＡＭ（「ＲＬＤＲＡＭ」）、スタティックＲＡＭ（「ＳＲＡＭ」）、フラッシュメモリ（例えば、ＮＡＮＤ／ＮＯＲ）、メモリスタメモリ、擬似スタティックＲＡＭ（「ＰＳＲＡＭ」）などを含むが、これらに限定されない、デジタルデータを格納するように構成された任意の種類の集積回路または他の記憶デバイスを含むことができる。メモリ２０２は、コントローラ２０４に命令およびデータを提供することができる。例えば、メモリ２０２は、ロボット２００を操作するために処理装置（例えば、コントローラ２０４）によって実行可能な、複数の命令が格納された非一時的なコンピュータ可読記憶装置および／または媒体であってもよい。場合によっては、命令は、処理装置によって実行されたときに、処理装置に本開示に記載される様々な方法、特徴、および／または機能を実行させるように構成され得る。したがって、コントローラ２０４は、メモリ２０２内に格納されたプログラム命令に基づいて論理演算および／または算術演算を実行することができる。場合によっては、メモリ２０２の命令および／またはデータは、一部がロボット２００内にローカルに位置し、一部がロボット２００から遠隔に位置する（例えば、クラウド、サーバ、ネットワークなど）ハードウェアの組み合わせに格納できる。
【００５４】
いくつかの実装態様では、センサユニット２１２は、ロボット２００内および／またはロボット２００の周りの特性を検出することができるシステムおよび／または方法を含むことができる。センサユニット２１２は、複数のセンサおよび／またはセンサの組み合わせを含むことができる。センサユニット２１２は、ロボット２００の内部もしくは外部にあり、かつ／または部分的に内部および／もしくは部分的に外部のコンポーネントを有するセンサを含むことができる。場合によっては、センサユニット２１２は、ソナー、光検出および測距（「ＬＩＤＡＲ」）センサ、レーダ、レーザ、カメラ（ビデオカメラ（赤青緑（「ＲＢＧ」）カメラ、赤外線カメラ、三次元（「３Ｄ」）カメラ、サーマルカメラなど）を含む）、飛行時間（「ＴＯＦ」）カメラ、構造化光カメラ、アンテナ、動き検出器、マイクロフォン、ならびに／または当技術分野で知られている他の任意のセンサなどの、１つ以上の外受容センサを含むことができる。いくつかの実装態様では、センサユニット２１２は、生の測定値（例えば、電流、電圧、抵抗、ゲートロジックなど）、および／または変換された測定値（例えば、距離、角度、障害物内の検出点など）を収集することができる。場合によっては、測定値は、集約および／または要約することができる。センサユニット２１２は、少なくとも部分的には測定値に基づいてデータを生成することができる。そのようなデータは、マトリックス、アレイ、待ち行列、リスト、アレイ、スタック、バッグなどのデータ構造に格納することができる。いくつかの実装態様では、センサデータのデータ構造は、画像と呼ぶことができる。
【００５５】
いくつかの実装態様では、センサユニット２１２は、ロボット２００の内部特性を測定することができるセンサを含むことができる。例えば、センサユニット２１２は、温度、動力レベル、ステータス、および／またはロボット２００の任意の特性を測定することができる。場合によっては、センサユニット２１２は、ロボット２００の走行距離測定を決定するように構成することができる。例えば、センサユニット２１２は、加速度計、慣性測定ユニット（「ＩＭＵ」）、走行距離計、ジャイロスコープ、スピードメータ、カメラ（例えば、視覚的走行距離測定を使用する）、時計／タイマなどのセンサを含むことができる、固有受容センサを含むことができる。走行距離測定は、ロボット２００の自律的なナビゲーションおよび／または自律的な行動を容易にすることができる。この走行距離測定は、初期の場所に対するロボット２００の位置を含むことができる（例えば、位置は、ロボットの場所、変位、および／または配向を含み、本明細書で使用される姿勢という用語と互換的である場合がある）。そのようなデータは、マトリックス、アレイ、待ち行列、リスト、アレイ、スタック、バッグなどのデータ構造に格納することができる。いくつかの実装態様では、センサデータのデータ構造は、画像と呼ぶことができる。
【００５６】
いくつかの実装態様では、コントローラ２０４は、ロボット２００をマップ内で位置特定するようにセンサデータをセンサユニット２１２から受信し得るマッピングおよび／または位置特定ユニットを含み得る。いくつかの実装態様では、マッピングおよび／または位置特定ユニットは、ロボット２００がそれ自体をマップの座標内および／または場所（例えば、初期化場所、終了場所、ビーコン、基準点など）に対して位置特定することを可能にする位置特定システムおよび方法を含み得る。マッピングおよび／または位置特定ユニットはまた、グラフおよび／またはマップを生成することなどによって、ロボット２００によって取得された測定値を処理し得る。マッピングおよび／または位置特定ユニットはまた、コントローラとは別個のユニットとすることもできる。
【００５７】
いくつかの実装態様では、ロボット２００は、学習プロセスを通じてルートをマッピングおよび学習することができる。例えば、オペレータは、環境内のルートに沿ってロボット２００を運転することにより、ロボット２００に環境内でどこを移動するかを教えることができる。センサユニット２１２からのセンサデータの組み合わせを介して、ロボット２００は、ロボット２００の相対姿勢および環境内のアイテムの姿勢を決定し得る。このようにして、ロボット２００は、ロボット２００が環境内のどこにいるか、ロボット２００がどこを移動したかを判定することができる。ロボット２００は、その後、ロボット２００がどこを移動したかを思い出し、実質的に同様の方法で移動することができる（ただし、その後の移動では、特定の障害物を回避する可能性がある）。ロボットは、ネットワーク３０２（図３を参照して説明される）などを介して、そのような経験を互いに共有することができる。いくつかの実装態様では、マッピングおよび位置特定ユニットは、限定されるものではないが、経路を受信および／または決定することと、経路の調整を行うことと、アクチュエータコマンドを決定することと、を含む、方法１００を実行するために使用され得る。
【００５８】
いくつかの実装態様では、ユーザインターフェースユニット２１８は、ユーザがロボット２００と対話できるように構成することができる。例えば、ユーザインターフェース２１８は、タッチパネル、ボタン、キーパッド／キーボード、ポート（例えば、汎用シリアルバス（「ＵＳＢ」）、デジタルビジュアルインターフェース（「ＤＶＩ」）、ディスプレイポート、Ｅ−Ｓａｔａ、Ｆｉｒｅｗｉｒｅ、ＰＳ／２、シリアル、ＶＧＡ、ＳＣＳＩ、オーディオポート、高品位マルチメディアインターフェース（「ＨＤＭＩ」）、パーソナルコンピュータメモリカード国際協会（「ＰＣＭＣＩＡ」）ポート、メモリカードポート（例えば、セキュアデジタル（「ＳＤ」）およびｍｉｎｉＳＤ）、および／もしくはコンピュータ読取可能媒体用のポート）、マウス、ローラーボール、コンソール、バイブレータ、オーディオトランスデューサ、ならびに／または、無線で結合されているか有線で結合されているかにかかわらず、ユーザがデータおよび／もしくはコマンドを入力および／もしくは受信するための任意のインターフェースを含むことができる。ユーザは、音声コマンドまたはジェスチャーを介して対話できる。ユーザインターフェースユニット２１８は、限定することなく、液晶ディスプレイ（「ＬＣＤ」）、発光ダイオード（「ＬＥＤ」）ディスプレイ、ＬＥＤ  ＬＣＤディスプレイ、面内スイッチング（「ＩＰＳ」）ディスプレイ、陰極線管、プラズマディスプレイ、高精細（「ＨＤ」）パネル、４Ｋディスプレイ、網膜ディスプレイ、有機ＬＥＤディスプレイ、タッチスクリーン、表面、キャンバス、ならびに／または視覚的表現のための当技術分野で既知の任意のディスプレイ、テレビ、モニタ、パネル、および／もしくはデバイスを含むことができる。いくつかの実装態様では、ユーザインターフェースユニット２１８は、ロボット２００の本体上に配置することができる。いくつかの実装態様では、ユーザインターフェースユニット２１８は、ロボット２００の本体から離れて配置することができるが、（例えば、送信機、受信機、および／もしくはトランシーバを含む通信ユニットを介して）ロボット２００と直接、または（例えば、ネットワーク、サーバ、および／もしくはクラウドを通じて）間接的に通信可能に結合することができる。いくつかの実装態様では、ユーザインターフェースユニット２１８は、例えば搭乗者またはロボットの周辺の人に情報を提供するために、ロボットの近位に位置する表面（例えば床）上に画像の１つ以上の投影を含むことができる。情報は、前方、左、右、後方、斜め、および／または他の方向への動きの表示など、ロボットの将来の動きの方向であり得る。場合によっては、そのような情報は矢印、色、記号などを利用できる。
【００５９】
いくつかの実装態様では、通信ユニット２２２は、１つ以上の受信機、送信機、および／またはトランシーバを含むことができる。通信ユニット２２２は、ＢＬＵＥＴＯＯＴＨ（登録商標）、ＺＩＧＢＥＥ（登録商標）、Ｗｉ−Ｆｉ、誘導ワイヤレスデータ伝送、無線周波数、無線伝送、無線周波数識別（「ＲＦＩＤ」）、近距離通信（「ＮＦＣ」）、赤外線、ネットワークインターフェース、３Ｇ（３ＧＰＰ／３ＧＰＰ２）などの携帯電話技術、高速ダウンリンクパケットアクセス（「ＨＳＤＰＡ」）、高速アップリンクパケットアクセス（「ＨＳＵＰＡ」）、時分割多重アクセス（「ＴＤＭＡ」）、符号分割多元接続（「ＣＤＭＡ」）（例えば、ＩＳ−９５Ａ、広帯域符号分割多元接続（「ＷＣＤＭＡ」）など）、周波数ホッピングスペクトラム拡散（「ＦＨＳＳ」）、直接シーケンス拡散スペクトル「ＤＳＳＳ」）、移動体通信用のグローバルシステム（「ＧＳＭ」）、パーソナルエリアネットワーク（「ＰＡＮ」）（例えば、ＰＡＮ／８０２．１５）、マイクロ波アクセスの世界的な相互運用性（「ＷｉＭＡＸ」）、８０２．２０、ロングタームエボリューション（「ＬＴＥ」）（例えば、ＬＴＥ／ＬＴＥ−Ａ）、時分割ＬＴＥ（「ＴＤ−ＬＴＥ」）、グローバル移動体通信システム（「ＧＳＭ」）、狭帯域／周波数分割多元接続（「ＦＤＭＡ」）、直交周波数分割多重（「ＯＦＤＭ」）、アナログセルラ、セルラデジタルパケットデータ（「ＣＤＰＤ」）、衛星システム、ミリ波またはマイクロ波システム、音響、および赤外線（例えば、赤外線データ結合（「ＩｒＤＡ」））、のような送信プロトコル、ならびに／またはワイヤレスデータ伝送の任意の他の形式を送信／受信するように構成することができる。
【００６０】
本明細書において使用される際、ネットワークインターフェースは、限定するわけではないが、ファイヤワイヤ（ＦｉｒｅＷｉｒｅ）（例えば、ＦＷ４００、ＦＷ８００、ＦＷＳ８００Ｔ、ＦＷＳ１６００、ＦＷＳ３２００など）、ユニバーサルシリアルバス（「ＵＳＢ」）（例えば、ＵＳＢ１．Ｘ、ＵＳＢ２．０、ＵＳＢ３．０、ＵＳＢ  Ｔｙｐｅ−Ｃなど）、イーサネット（例えば、１０／１００、１０／１００／１０００（ギガビットイーサネット）、１０−Ｇｉｇ−Ｅなど）、同軸ケーブルマルチメディア協会（「ＭｏＣＡ」）、コアックスシーズ（Ｃｏａｘｓｙｓ）（例えば、ＴＶＮＥＴ（商標））、無線周波数チューナー（例えば、インバンド（ｉｎ−ｂａｎｄ）またはＯＯＢ、ケーブルモデムなど）、ワイファイ（Ｗｉ−Ｆｉ）（８０２．１１）、ワイマックス（ＷｉＭＡＸ）（例えば、ＷｉＭＡＸ（８０２．１６））、パン（ＰＡＮ）（例えば、ＰＡＮ／８０２．１５）、セルラ（例えば、３Ｇ、ＬＴＥ／ＬＴＥ−Ａ／ＴＤ−ＬＴＥ／ＴＤ−ＬＴＥ、ＧＳＭなど）、ＩｒＤＡファミリなどを含む、コンポーネント、ネットワーク、またはプロセスとの任意の信号、データ、もしくはソフトウェアインターフェースを含むことができる。本明細書において使用される際、ワイファイ（Ｗｉ−Ｆｉ）は、ＩＥＥＥ  ８０２．１１規格、ＩＥＥＥ  ８０２．１１規格の変形、ＩＥＥＥ  ８０２．１１規格に関連する規格（例えば、８０２．１１ａ／ｂ／ｇ／ｎ／ａｃ／ａｄ／ａｆ／ａｈ／ａｉ／ａｊ／ａｑ／ａｘ／ａｙ）、および／または他の無線規格のうちの１つ以上を含むことができる。
【００６１】
通信ユニット２２２はまた、信号線および接地を有する任意のケーブルなどの、有線接続を介した伝送プロトコルを利用して信号を送信／受信するように構成することができる。例えば、そのようなケーブルは、イーサネットケーブル、同軸ケーブル、ユニバーサルシリアルバス（「ＵＳＢ」）、ＦｉｒｅＷｉｒｅ、および／または当技術分野で既知の任意の接続を含むことができる。そのようなプロトコルは、コンピュータ、スマートフォン、タブレット、データ取り込みシステム、移動体通信ネットワーク、クラウド、サーバなどの外部システムと通信するために通信ユニット２２２によって使用することができる。通信ユニット２２２は、数字、文字、英数字、および／または記号を含む信号を送信および受信するように構成することができる。場合によっては、１２８ビットもしくは２５６ビットキーなどのアルゴリズムおよび／またはＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（「ＡＥＳ」）、ＲＳＡ、Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（「ＤＥＳ」）、Ｔｒｉｐｌｅ  ＤＥＳなどの規格に準拠する他の暗号化アルゴリズムを使用して、信号を暗号化することができる。通信ユニット２２２は、ステータス、コマンド、および他のデータ／情報を送信および受信するように構成することができる。例えば、通信ユニット２２２は、ユーザがロボット２００を制御することを可能にするためにユーザオペレータと通信することができる。通信ユニット２２２は、ロボット２００がデータ、ステータス、コマンド、および他の通信をサーバに送信することを可能にするために、サーバ／ネットワーク（例えば、ネットワーク）と通信することができる。サーバはまた、ロボット２００を遠隔的に監視および／または制御するために使用することができるコンピュータ（複数可）および／またはデバイス（複数可）に通信可能に結合することができる。通信ユニット２２２はまた、ロボット２００用のサーバから更新（例えば、ファームウェアまたはデータ更新）、データ、ステータス、コマンド、および／または他の通信を受信し得る。
【００６２】
アクチュエータ２２０は、場合によってはタスクを実行するために、作動させるために使用される任意のシステムを含むことができる。例えば、アクチュエータ２２０は、駆動される磁石システム、モータ／エンジン（例えば、電気モータ、燃焼エンジン、蒸気エンジン、および／もしくは当技術分野で既知の任意のタイプのモータ／エンジン）、ソレノイド／ラチェット（ｒａｔｃｈｅｔ）システム、圧電システム（例えば、インチワーム（ｉｎｃｈｗｏｒｍ）モータ）、磁歪素子、ジェスティキュレーション（ｇｅｓｔｉｃｕｌａｔｉｏｎ）、ならびに／または当技術分野で既知の任意のアクチュエータを含むことができる。いくつかの実装態様において、アクチュエータユニット２２０は、推進を動力化するなど、ロボット２００の動きを可能にするシステムを含むことができる。例えば、動力推進は、ロボット２００を前方もしくは後方に移動させることができ、かつ／または少なくとも部分的にロボット２００を旋回させる（例えば、左、右、および／もしくは他の任意の方向）のに使用することができる。例示として、アクチュエータ２２０は、ロボット２００が移動しているか停止しているかを制御し、および／またはロボット２００がある場所から別の場所にナビゲーションすることを可能にする。
【００６３】
図２に関して説明されたユニット（メモリ２０２、コントローラ２０４、センサユニット２１２、ユーザインターフェースユニット２１８、アクチュエータユニット２２０、通信ユニット２２２、および／または他のユニットを含む）のうちの１つ以上は、統合されたシステムなどにおいて、ロボット２００に統合することができる。しかしながら、いくつかの実装態様では、これらのユニットの１つ以上は、取り付け可能なモジュールの一部とすることができる。このモジュールは、既存の装置がロボットとして挙動するように、自動化するために既存の装置に取り付けることができる。したがって、ロボット２００に関して本開示で記載されている特徴は、既存の装置に取り付けることができ、および／または統合システムにおいてロボット２００に統合することができるモジュール内でインスタンス化することができる。さらに、場合によっては、当業者であれば、本開示の内容から、本開示で説明される特徴の少なくとも一部もクラウド、ネットワーク、および／またはサーバなどで遠隔で実行できることを理解するであろう。
【００６４】
いくつかの実装態様では、ロボット２００は、ネットワークに通信可能に結合することができる。図３は、本開示のいくつかの実装態様による、ネットワーク３０２と通信可能におよび／または操作可能に結合されたロボット２００を含むシステム３００の機能ブロック図である。ネットワーク３０２は、限定された、もしくは定義された期間、または無期限もしくは未定義の期間にわたって、仮想マシン、プロセス、または他のリソースをインスタンス化するために呼び出すことができる、ハードウェア、ソフトウェア、サービス、および／またはリソースの集合を含むことができる。ネットワーク３０２は、インターネットにアクセスできるデバイスおよび／またはサーバを含む、複数のデバイス、システム、および／またはサーバと通信可能におよび／または操作可能に結合することができる。アクセスポイント３０４Ａおよび３０４Ｂなどのアクセスポイントのうちの１つ以上は、コンピュータ、モバイルデバイス、タブレット、スマートフォン、携帯電話、携帯情報端末、ファブレット、電子書籍リーダー、スマートウォッチ、セットトップボックス、インターネットストリーミングデバイス、ゲーム機、スマート家電、ならびに／またはインターネットおよび／もしくは任意のネットワークプロトコルにアクセスできる任意のデバイスを含むがこれらに限定されない、デバイス、システム、および／またはサーバであり得る。２つのアクセスポイントが例示されているが、所望に応じてより多くのまたはより少ないアクセスポイントがあってもよい。
【００６５】
本明細書で使用される場合、ネットワーク３０２は操作することができる、すなわち、ネットワーク３０２は、情報を受信、処理、および／または送信することができる、内蔵コンピュータを有することができる。これらのコンピュータは、自律的におよび／または１人以上の人間のオペレータによる制御下で、動作することができる。同様に、ネットワーク３０２は、ネットワーク３０２を操作するために同様に使用することができる、アクセスポイント（例えば、アクセスポイント３０４Ａおよび３０４Ｂ）を有することができる。アクセスポイントは、情報を受信、処理、および／または送信することができる、コンピュータおよび／または人間のオペレータを有することができる。したがって、本明細書におけるネットワーク３０２の動作への言及は、人間のオペレータおよび／またはコンピュータのオペレータに適用することができる。
【００６６】
いくつかの実装態様では、ロボット２００と実質的に同様の１つ以上のロボットは、ネットワーク３０２と通信可能におよび／または操作可能に結合することができる。これらのロボットのそれぞれは、ステータス、コマンド、および／または動作データをネットワーク３０２に通信することができる。ネットワーク３０２はまた、ステータス、コマンド、および／または動作データを、ロボットのうちの１つ以上に格納し、および／または通信することができる。場合によっては、ネットワーク３０２は、ロボット２００および／または他のロボットからのマップ、センサデータ、および他の情報を格納することができる。次いで、ネットワーク３０２は、接続された複数のロボットの経験を互いに共有することができる。さらに、情報の集約により、ネットワーク３０２は、機械学習アルゴリズムを実行して、ロボットの性能を改善することができる。
【００６７】
当業者であれば、本開示の内容から、本開示の一部がロボット２００、ネットワーク３０２、ならびに／またはアクセスポイント３０４Ａおよび／もしくは３０４Ｂによって実行され得ることを理解するであろう。特定の例は、ロボット２００、ネットワーク３０２、ならびに／またはアクセスポイント３０４Ａおよび／もしくは３０４Ｂのうちの１つまたは複数を参照して説明され得るが、例の特徴は、実質的に同様の結果を達成するようにロボット２００、ネットワーク３０２、ならびに／またはアクセスポイント３０４Ａおよび／もしくは３０４Ｂの間に分散することができることが理解されるであろう。
【００６８】
図４は、本開示のいくつかの実装態様による、ロボット２００のロボット経路計画を動作させるための例示的な方法４００のプロセスフロー図である。この例は、床清掃の文脈で本開示に折に触れて説明され得るが、当業者は、方法４００が、限定なしで本開示に別途説明されている用途のいずれかを含む、本開示の内容が与えられた他のロボット用途に即座に適用され得ることを理解するであろう。
【００６９】
ブロック４０４は、ロボットの環境と関連付けられたコストマップを生成することを含む。例えば、ロボット２００は、ロボットタスクを実行することができる。例示として、ロボットタスクは、床清掃などの清掃とすることができる。床清掃の結果として、ロボット２００が床および／またはマップ上の所定の箇所に移動することが望ましい場合がある。例えば、ロボット２００が実質的に床の表面全体を清掃することが望ましく、それによって、ロボット２００が床の実質的に全面積に移動することが望ましくなる場合がある（例えば、少なくとも１回であるが、エリアへの複数回の走行が望ましい場合もある）。別の例として、ロボット２００が清掃することが望ましい床の区分があり、それによって、ロボットをそれらの区分に移動させることが望ましくなる場合がある。別の例として、ロボット２００が清掃することが望ましくない床の区分が存在し得る。例えば、硬質表面の床清掃機（例えば、タイル、セラミック、コンクリートなどの清掃機）は、軟質表面（例えば、カーペット、人工芝もしくは芝、マット、および／または他の軟質表面）を清掃することができない場合があり、その逆も同様である。場合によっては、誤った表面で床清掃機を使用することは、水による損傷、摩耗、欠け、ならびに／または表面および／もしくはロボット２００への他の損傷などの、損傷につながる場合がある。
【００７０】
別の例として、ロボット２００は、輸送ロボットとすることができ、ロボット２００は、特定の場所に、および場合によっては特定の順序で移動することが望ましい。これは、スケジュールに追従すること、効率的および／または効果的にナビゲートすること、輸送の予測可能性を提供すること（例えば、商品、人、動物など）、輸送のために特定のもののみを荷積みすること、交通を回避すること、および／または任意の他の望ましい輸送の特性のために望ましい場合がある。そのような場合、特定の場所に（および／または特定の順序で）移動しないロボット２００は、商品、人、動物などが輸送されなくなることを結果としてもたらす可能性がある。したがって、ロボットがロボットタスクを実行する過程で特定のエリア、場所、および／または位置に移動することが望ましい場合がある。
【００７１】
他の類似のロボットの状況は、本開示の内容を与えられた当業者に容易に明らかになるであろう。例えば、ロボットアームは、物体を移動させるロボットタスクを実行することができる。ロボットアームが、物体を荷積みおよび／または荷降ろしするために、特定の場所／位置に移動することが望ましい場合がある。
【００７２】
いくつかの実装態様では、ロボットのタスク／動作の上記の選好は、少なくとも部分的にコストマップで実現することができる。いくつかの実装態様では、コストマップは、特定の場所へのロボット２００の移動（例えば、ナビゲーション、動きなど）の選好値の少なくとも一部を反映することができる。場合によっては、そのような移動は、ロボットタスクを実行することであってもよい。
【００７３】
例示として、コストマップは、コストマップの一部分が環境内の場所に相関する（例えば、相対的および／または絶対的）、２、３、４以上の次元のデータ構造とすることができる。場合によっては、それらの場所は、場所の特性が経時的に変化し得る場合、時間に相関されることができる。例えば、２次元（「２Ｄ」）マップでは、各ピクセルは、ロボット２００がナビゲートする環境内の物理的場所に少なくとも部分的に相関することができる。同様に、３次元（「３Ｄ」）マップでは、各ボクセルは、ロボット２００がナビゲートする環境内の物理的場所に少なくとも部分的に相関することができる。いくつかの実装態様では、２Ｄマップは、ロボット２００が実質的に平坦な動作で動作する場合（例えば、水平な表面上であるかどうかにかかわらず、ロボット２００の動きが、左、右、前方、後方、および／またはそれらの組み合わせなどの平面内で動作する場合）に使用することができる。いくつかの実装態様では、３Ｄマップは、ロボット２００が、左、右、前方、後方に加えて上、下、列、ピッチ、および／またはヨーなどの、平坦な動作を超えて動作する場合に使用することができる。空間が場所と関連付けられたより多くの特性（温度、時間、複雑さなど）を有する場合、マップにより多くの次元が存在し得る。
【００７４】
いくつかの実装態様では、値は、コストマップの１つ以上のピクセル（ここではピクセルが使用されるが、原理は、ボクセルおよび／または異なる次元の任意の他のアナログに容易に適用可能である）と関連付けられることができ、ピクセルと関連付けられた相対値の少なくとも一部を示す。例えば、コストマップは、バイナリ値を含むことができ、１つの値は、ロボット２００が移動することが望ましいエリアの少なくとも一部を示すことができ、別の値は、ロボット２００が移動することが望ましくない箇所の少なくとも一部を示すことができる。別の例として、コストマップは、ピクセルと関連付けられた異なる値を有してもよく、値の大きさは、ロボット２００がそのピクセルに移動することがどれほど望ましいおよび／または望ましくないかの少なくとも一部を示すことができる。
【００７５】
図５Ａは、本開示のいくつかの実装態様による、コストマップの俯瞰図の図形表現である。コストマップ５０２は、ロボット２００の環境と相関するマップを含む。例えば、ロボットインジケータ５００は、ロボット２００の位置を示す。場合によっては、ロボットインジケータ５００は、実際にはコストマップ５０２上に存在しない場合がある。インジケータ５０６Ａ〜５０６Ｃは、壁などの障害物の位置を少なくとも部分的に示すことができる。インジケータ５０４は、望ましい移動経路部分の少なくとも一部を示すことができ、ロボット２００がそのインジケータ５０４内を移動することが望ましい。当業者は、コストマップが画像としてではなく、むしろ、値を有するデータ構造として存在し得ることを理解するであろう。しかしながら、場合によっては、コストマップは、コストマップ５０２などの画像として存在してもよく、および／または画像としてより容易に視覚化され得る。
【００７６】
インジケータ５０６Ａ〜５０６Ｃは、そこに含有されるピクセルと関連付けられた値を有することができる。これらの値は、ロボット２００がそれらの場所（例えば、障害物に衝突する）に行かないように選好の少なくとも一部を示すことができる。同様に、値は、インジケータ５０４に含有されるピクセルと関連付けることができ、ロボット２００がそれらの場所に移動することの選好を示す。
【００７７】
例えば、コントローラ２０４を含むロボット２００は、経路部分を移動している間にロボット２００が触れるピクセルと関連付けられた値を最大化するように構成することができる。したがって、インジケータ５０４のピクセルは、他の箇所のピクセルよりも高い値を有することができる。さらに、インジケータ５０６Ａ〜５０６Ｃのピクセルは、ロボット２００がそれらの場所に行かないという選好を示すために、より低い値および／または負の値を有することができる。別の例として、ロボット２００は、それが触れるピクセルの値を最小化するように構成されてもよい。したがって、インジケータ５０４のピクセルは、ロボット２００がこれらの場所に行くという選好を示すために、より低い値および／または負の値を有してもよい。同様に、この状況では、インジケータ５０６Ａ〜５０６Ｃのピクセルは、ロボット２００がそれらの場所に行かないという選好を示すために、より高い値を有してもよい。当業者は、人がロボット２００およびコントローラ２０４を構成して、コストマップに基づく場所に行くように相対的な選好をロボット２００に与えることができる、任意の数の手段が存在することを理解するであろう。場合によっては、ロボット２００およびコントローラ２０４は、コストマップ内のより望ましいピクセルと関連付けられた場所に行こうとする。
【００７８】
いくつかの実装態様では、コストマップは、動的であってもよく、経時的に、かつロボット２００が移動するにつれて変化する。例えば、環境内の物体（例えば、インジケータ５０６Ａ〜５０６Ｃで示される）は、経時的に移動する場合がある。さらに、インジケータ５０４内のピクセルの値もまた、経時的に変化する場合がある。例えば、ロボット２００がピクセルを横切って移動した後、ロボット２００が再びそのピクセルと関連付けられた場所に移動することが、あまり好ましくないか、または全く好ましくない場合がある。その結果、そのような移動されたピクセルと関連付けられた値は、ロボット２００が移動していない場所と関連付けられた他のピクセルよりも低い選好（例えば、高いピクセル値が選好の少なくとも一部を示す場合は、より低く、低いピクセル値が選好の少なくとも一部を示す場合は、より高い）を示すことができる。しかしながら、そのような移動されたピクセルは、依然として、物体のピクセル（例えば、インジケータ５０６Ａ〜５０６Ｃのピクセル）または他の場所のピクセルよりも強い選好を示すように評価されてもよい。別の例として、障害物は、インジケータ５０８のピクセルと関連付けられた場所内などの、経路内に移動する場合がある。障害物および／または物体に加えて、表面の種類、エリア内の反射率、干渉（例えば、電子機器または他の構成要素に起因する）、危険、人および／もしくはアイテムの密度、ロボットの望ましくない妨害（例えば、社会的事象または他の出来事に起因する）、ならびに／またはその他の要因などの、望ましくない他の環境要因が存在する場合がある。
【００７９】
いくつかの実装態様では、ロボット２００がそのような場所に行くために達成しなければならない操縦と関連付けられたコストも存在し得る。例えば、ロボット２００は、近位ピクセルに触れる軌道に沿って移動することができるが、他の場所に行くためにピクセルを飛び越えることができない場合がある。したがって、近いピクセルに対する選考が存在し得、そのようなピクセルは、その選好を反映する値を有する場合がある。また、鋭い旋回およびＵターンを行うのではなく、直進して徐々に旋回することによるなどの、ロボット２００の特定の操縦を介して到達することができるピクセルに対する選好が存在し得る。さらに、一般に、ピクセルの値は、それらの場所に到達するためにロボット２００によって費やされるリソースの少なくとも一部を示すことができる。したがって、ロボット２００は、コストマップに従って好ましい場所に移動し、好ましくない場所を回避するように、その移動を最適化することができる。
【００８０】
いくつかの実装態様では、コストマップは、ロボットタスクに関連する情報を、直接的または間接的に含むことができる。例えば、ロボット２００が床清掃機である場合、ロボット２００がいくつかの箇所では清掃することが好ましいが、他の場所では清掃しないことが望ましい場合がある。したがって、コストマップは、どのエリアを、ロボットが、例えば、散水する、ブラシを動作させる、モップをかけるなどによって清掃すべきかを示すことができる。場合によっては、この指示は、コスト値自体によって行うことができ、より高い値（例えば、所定の動作閾値より上）および／またはより低い値（例えば、所定の動作閾値より下）は、ロボット２００の一部が実行するロボットタスクを示すことができる。
【００８１】
図５Ｂは、本開示のいくつかの実装態様による、インジケータ５０４の周りにスカート５１６Ａおよび５１６Ｂを有するコストマップの俯瞰図の図形表現である。インジケータ５０４のピクセルは、ロボット２００が移動する選好を示すことができる。例えば、ロボット２００が床清掃機である場合、ロボット２００が特定のエリアを清掃することが望ましい場合がある。しかしながら、そのエリアを離れることが好ましくない場合がある。例えば、あるエリアを離れることは、表面の損傷（床清掃機が硬質表面を清掃するように想定されているが、軟質表面に行く場合）および／または他の危険／損傷につながる場合がある。したがって、ロボット２００が運動の経路から離脱することを防止することが望ましい場合がある。スカート５１６Ａおよび５１６Ｂは、ロボット２００がインジケータ５０４のピクセルから離脱することを防止する手段を例示する。したがって、スカート５１６Ａおよび５１６Ｂは、好ましくない値のピクセルを含有することができる（例えば、より高い値が好ましいときに、より低いおよび／または負の値、より低い値が好ましいときに、より高い値）。有利なことに、これは、ロボット２００が特定のエリアに制約されることを可能にすることができ、場合によっては、ロボット２００がそのエリアを離れることによって生じ得る任意の損傷を防止する。
【００８２】
いくつかの実装態様では、コストマップの値は、コスト関数を使用して決定（例えば、計算）することができる。コスト関数は、上記の選好のいずれかに基づいて各ピクセルに値を割り当てることができる。コスト関数は、時間に依存してもよく、経時的に割り当てられたピクセルの値を部分的に変化させる。有利なことに、この時間依存性は、コストマップのピクセル値が経時的に変化することを可能にすることができる。一部の実装態様では、コスト関数は、ロボットの動きを考慮するために、経時的に値の低下をもたらす場合がある。
【００８３】
ブロック４０４のコストマップを生成する際の課題は、メモリおよびプロセッサの電力の使用を管理することである。より多くのピクセルを記憶するために、より多くのメモリが必要である。ピクセル数は、コストマップのサイズ、解像度、および／または次元数に関連し得る。このサイズ、解像度、および／または次元数は、少なくとも計画された経路の範囲、詳細、および／または空間の複雑さに関連し得る。さらに、各ピクセルが利用するメモリの量は、各ピクセルと関連付けられた値（例えば、データの形式）およびピクセルに利用されるデータ構造に関連し得る。また、コストマップと関連付けられたメモリおよびプロセッサの使用量は、コストマップ上で実行される動作数に依存し得る。したがって、コストマップのサイズ（例えば、ピクセル数）は、ロボット間で変動し得る、処理のためのメモリバジェットに少なくとも部分的に基づいて決定することができる。
【００８４】
いくつかの実装態様では、ロボット中心であるコストマップを有することが有利な場合がある。例えば、コストマップに共通の形式を有することは、それらが即座に比較されることを可能にすることができる。さらに、ロボット中心のコストマップは、コストマップが、環境の一時的な部分（例えば、開始位置）ではなく、永続的な要素に関連する（ロボット２００が測定する場所にロボット２００があることになる）ことを可能にする、コストマップを正規化することができる。
【００８５】
例示として、図６は、本開示のいくつかの実装態様による、ロボット２００のロボット中心であるコストマップ６０２の上面図である。ロボットアイコン５００は、コストマップ６０２に表されるように、空間内のロボット２００の相対位置に相関することができる。例えば、インジケータ６０４は、コストマップ６０２に表されるように、ロボット２００が移動するための望ましいエリアを示す。
【００８６】
いくつかの実装態様では、コストマップは、既にロボット中心として作成されている場合がある。例えば、センサ測定値は、既にロボット中心／エゴセントリックビュー（例えば、ロボットに対する障害物のＬＩＤＡＲ範囲）にあり、したがって、測定値は、ロボット中心のコストマップ上に投影することができる。そのような場合、ブロック４０６は、一部の実装態様では、スキップされてもよく、および／またはブロック４０４と組み合わせられてもよい。
【００８７】
ロボット中心ではないコストマップが作成される場合、コストマップは、コストマップがロボット中心になるように回転することができる。例えば、コストマップ（および／または移動経路またはロボットタスクに関連する動作マップなどの他のマップ）がロボット２００（例えば、コントローラ２０４）によって回転することができ、そのため、ロボットは、コストマップ内で静止し、他の全て（例えば、環境の特徴物および／またはロボット２００の経路）は、相対的であり、および／または静止ロボット２００の周りに投影される。有利なことに、これは、比較の計算を最小限に抑えながら、ロボット２００の異なる代替経路が探索されることを可能にする。さらに、エゴセントリック（例えば、ロボット中心）ビューは、ロボット２００が全配向を探索する必要がない場合に、利用可能な選択肢および／または順列を制限する。代わりに、いくつかの実装態様では、利用可能な選択肢は、ロボット２００がロボット２００の位置から見るものに基づいて、制限される。
【００８８】
ブロック４０６は、次いで、ロボット２００に対して複数の経路部分を投影することを含む。これらの軌道は、空間内のロボット２００の考えられる軌道を含むことができる。いくつかの実装態様では、これらの軌道は、ロボット２００の形状を考慮することができる。例えば、ロボット２００は、車台および／またはロボット２００の外部要素によって決定されるサイズおよび形状を有し得る。さらに、ロボット２００は、ロボット２００がそれ自体を知覚するサイズおよび形状を含み得る所定のフットプリントを有し得る。ロボットの事前定義されたロボット自体のフットプリントを例示するために、図７Ａは、本開示のいくつかの実装態様によるロボット２００のロボットフットプリント７０２を例示する上面図である。ロボット２００は、事前定義された本体形状および寸法を有することができる。ロボット２００は、前面７０４Ａ、右面７０４Ｃ、左面７０４Ｄ、および背面７０４Ｂなどの複数の面を備えた本体を含むことができる。ロボット２００はまた、上面および底面を有することができる。当業者であれば、本開示の内容が与えられれば、ロボット２００が、形状（例えば、長方形、ピラミッド形、人型、または任意の他の形状）によって変わり得る、ロボット２００の表面に対応する他の面もまた有することができることを理解するはずである。例示として、前面７０４Ａは、ロボット２００の前方に向いている側に配置することができ、前方に向いている側は、ロボット２００の前方への動きの方向において前方にある。背面７０４Ｂは、ロボット２００の後方に向いている側に配置することができ、後方に向いている側は、前方に向いている側と実質的に反対方向に向いている側である。右側面７０４Ｃは、前面７０４Ａに対して右側とすることができ、左側面７０４Ｄは、前面７０４Ａに対して左側とすることができる。
【００８９】
ロボット２００の実際の本体形状が例示されるが、フットプリント７０２は、ロボット２００がタスクをどのようにナビゲートおよび／またはタスクを実行することができるかを決定するロボット２００のソフトウェアおよび／またはハードウェアで構成されたロボット２００のサイズであり得る。例示として、フットプリント７０２は、（図示のように）前面７０４Ａ、右面７０４Ｃ、左面７０４Ｄ、および／または背面７０４Ｂを超えて広がり得、これが、ソフトウェアおよび／またはハードウェアにおけるロボット２００のサイズがどのようなもの（例えば、フットプリント７０２）であるとロボット２００が認識するかということと、ロボット２００の実際のサイズ／形状がどのようなものであるかということとの差を作る。これにより、ロボット２００および／または環境内の物体の間のクリアランスが付与され得る。有利なことに、フットプリント７０２により、ナビゲーションのための安全バッファが付与され得る。フットプリント７０２のサイズおよび／または形状は、所望のクリアランス、環境の複雑さ、支援に対する許容範囲、衝突のリスク（例えば、衝突の発生、衝突の損傷の量、など）、および／または他の要因を含む、いくつかの要因に少なくとも部分的に基づき得る。図示のように、フットプリント７０２は長方形であるが、フットプリント７０２は、正方形、三角形、長方形、平行四辺形の非対称形状、曲線など、望ましい任意の形状を採ることができる。さらに、フットプリント７０２は、２次元として見た平面図で例示されている。しかしながら、場合によっては、フットプリント７０２は、ロボット２００の複数の表面からのロボット２００の認識を反映する、３次元とすることができる。
【００９０】
図示のように、いくつかの実装態様では、フットプリント７０２は、ロボット２００の実際のサイズより大きくなり得る。当業者は、本開示の内容を考慮して、ロボット２００に対するフットプリント７０２の各側部からのクリアランスの量が、異なる点で独立して変化することができ、フットプリント７０２が、ロボット２００とは異なる形状および／もしくはサイズであり、非対称なクリアランスを有し、ならびに／または全体を通して変動を有し得ることを理解することができる。いくつかの実装態様では、フットプリント７０２は、ロボット２００とサイズおよび／または形状が実質的に同様であり、クリアランスを作らないことが可能である。有利なことに、この実質的な類似性を有することは、ロボット２００が、物体の周りをぴったりとナビゲートすること、および／またはロボット２００が適合することができないが、実際には適合することができることを認識する状況に関するオペレータの補助を最小限に抑えることを可能にする。しかしながら、ロボット２００とフットプリント７０２との間にこの実質的な類似性を有することは、ロボット２００のマッピングおよび／またはナビゲーションにおけるノイズおよび／または異常に起因する衝突のリスクを高める場合がある。
【００９１】
どこへ行くかを計画する際、ロボット２００は、ロボット２００が空間を移動することになるコース（例えば、移動ベクトルを含む）を含み得る軌道を計画することができる。いくつかの実装態様では、ロボット２００が所定の数の軌道を決定することが有利であり得る。これらの軌道は、エリアをナビゲートするためにロボット２００の空間内の可能な動きなどの、ロボット２００の可能な動きを表すことができる。いくつかの実装態様では、所定の数は、メモリおよび処理能力、処理速度、ロボット２００がナビゲートする環境の複雑さ、ロボット２００の可能な配向の数、ロボット２００のＤＯＦ、軌道内に包含される空間量、軌道内に包含される時間量、軌道を完了するために使用される時間量、および／または他の要因に少なくとも部分的に基づいて決定することができる。場合によっては、所定の数の軌道は、リアルタイムにどこに移動するかを決定することとロボットリソースを節約することとの実際的な考慮に対して、可能な限り多くの軌道を確認する要望のバランスを取る。床清掃機の用途におけるいくつかの例示的な実装態様では、５０００個の軌道が十分な所定の数の軌道であった。しかしながら、数百、数千、数百万以上の軌道などの他の数が、上述の要因に少なくとも部分的に基づいて、想定され、処理および記憶技術の可用性に応じて拡張すべきである。
【００９２】
いくつかの実装態様では、軌道は、ロボット２００の要素の従属運動を含むことができる。例えば、ロボット２００が複数の車輪を有してナビゲートしている場合、軌道は、ロボット２００の車輪の１つ以上の量および位置などのロボット駆動構成によって画定することができる。例示として、複数の車輪を有するいくつかのロボットでは、いくつかの車輪がロボットを操舵するために使用することができる。例えば、ロボットは、全輪、四輪、前輪、および／または後輪で駆動する。軌道は、１つ以上の車輪の動きを含むことができる。
【００９３】
例示として、図７Ｂは、本開示のいくつかの実装態様による、３つの車輪を有するロボット２００の左側面図を例示する。同様に、図７Ｃは、本開示のいくつかの実装態様による、３つの車輪を有するロボット２００の右側面図を例示する。例示されるように、いくつかの実装態様では、ロボット２００は、３つの車輪を有することができ、２つの車輪（例えば、車輪７１０Ａおよび７１０Ｃ）が、後側７０４Ｂの近位に位置付けられ、１つの車輪（例えば、車輪７１０Ｂ）が、前側７０４Ａの近位に位置付けられてもよい。本例示では、ロボット２００は、後輪駆動とすることができ、車輪７１０Ａおよび７１０Ｃは、駆動力を提供することができ、車輪７１０Ｂは、車輪７１０Ｂが位置付けられる角度に少なくとも部分的に基づいて、操舵を提供することができる。例えば、車輪７１０Ｂは、ロボット２００が直進するように、ロボット２００の本体に対して垂直に位置付けることができる。同様に、車輪７１０Ｂは、ロボット２００を旋回させるためにある角度にわたって旋回することができる。角度は、−９０〜９０度の範囲などのいくつかの離散的および／もしくはアナログの角度、ならびに／または操縦に望ましい任意の範囲のとすることができる。いくつかの実装態様では、車輪７１０Ｂの旋回は、操舵モータなどのアクチュエータによって制御され得る。このアクチュエータは、少なくとも部分的に、モータコマンドに従って車輪７１０Ｂを旋回させることができる。いくつかの実装態様では、スタビライザー、ショックアブソーバー、手動フィードバック（例えば、環境から車輪７１０Ｂに加えられる力からの）、および／または他の要素などの、追加の要素もまた、車輪７１０Ｂの位置を制御することができる。
【００９４】
いくつかの実装態様では、軌道は、一連のアクチュエータコマンドに分割することができる。例えば、いくつかの実装態様では、アクチュエータコマンドは、ロボット２００のナビゲーションを制御するために、車輪７１０Ｂの角度を決定することができる。例えば、アクチュエータコマンドは、プリミティブ（例えば、所定の時間間隔で所定の電圧を送る）および／またはより高いレベルのコマンド（例えば、所定の角度に車輪を設定する）とすることができる。したがって、ロボット２００の動きを制御する過程で、ロボット２００は、経時的に一連のアクチュエータコマンドを発することができる。
【００９５】
図７Ｄは、本開示の動作原理による、経時的なコントローラ特性のチャートである。タイムライン７１２は、時間ｔにわたる期間を例示している。タイムライン７１２は、単位７１４などの単位（例えば、セグメント）に分割することができる。セグメントは、実質的に等しいサイズである、および／または実施的に等しいサイズではない場合があり、少なくとも、アクチュエータコマンドが適用される速度、アクチュエータが応答する能力、ロボット２００に所望される操縦量、ロボット２００の速度、および／または他の要因に依存する。タイムライン７１２内の単位数は、ロボット２００の操縦の複雑さ、メモリおよび／またはプロセッサリソース、所望される解像度、計算された軌道の数、および／または他の要因に少なくとも部分的に依存し得る。同様に、期間は、少なくとも、アクチュエータコマンドが適用される速度、アクチュエータが応答する能力、ロボット２００に所望される操縦量、ロボット２００の速度、ロボット２００の操縦の複雑さ、メモリおよび／もしくはプロセッサリソース、所望される解像度、計算された軌道の数、および／またはその他の要因に依存し得る。いくつかの例示的な実装態様では、期間は、２５単位を有する約２．５秒であった。しかしながら、他の時間および／または単位数が、上述の要因に少なくとも部分的に基づいて考えられる。例えば、１、２、３、４、５、６秒以上の期間、および／またはその間の期間が使用されてもよい。単位数は、０〜１００、数千以上を含む値などの、任意の所望される値とすることができる。
【００９６】
各セグメントについて、制御特性が、計算され得る。例えば、図７Ｂおよび７Ｃに例示されるロボット２００の例では、制御特性は、車輪７１０Ｂの車輪角度および／またはロボット２００の線速度とすることができる。例示として、ロボット２００は、一組の所定の車輪角度にわたって一組の所定の速度を使用することができる。これらの所定の速度および車輪角度は、ロボット２００の動きを操縦するために組み合わせることができる。制御特性の他の例が、同様に想定される。例えば、ロボット２００がロボットアームである場合、制御は、アームの位置を制御するアクチュエータの位置とすることができる。場合によっては、ロボット２００がロボットアーム、多輪車両、歩行ロボット、および／または他のロボットであるかどうかにかかわらず、ロボット２００の様々なＤＯＦを制御する複数のアクチュエータが存在し得る。したがって、所与の時点で、ロボット２００の様々なアクチュエータの状態に対応する複数の制御特性（例えば、アレイ、マトリックス、または複数の構造に記憶される）が存在し得る。
【００９７】
また所与の時点で、制御特性の異なる変形が計算され得る。例えば、線７１６Ａ〜７１６Ｎは、制御特性のＮ個の変形を例示する。場合によっては、これらの制御特性は、ロボット２００の全ての可能な動きのサブセットとすることができる。例示として、例示された矢印は、ロボット２００の車輪角度に対応することができる。このサブセットは、必要に応じて制限されてもよく、および／または無制限であってもよい。例えば、サブセットは、現実的な動きを反映するために、制御特性を徐々に変化する（例えば、後続および／または進行中の制御特性からの所定の変動範囲内で）ものに制限することができる。別の例として、制御特性は、環境内の障害物および／または物体を認識し、衝突を回避するもののみを含むことができる。別の例として、いくつかの実装態様では、制御特性は、ロボット２００のフットプリントを認識することができ、ロボット２００に十分なクリアランスを与える、および／またはロボット２００のサイズおよび形状が物理的に現実的に与えられる操縦のみを含むことができる。しかしながら、場合によっては、これらの例に反して、軌道は、障害物に関する知識よりも前に計算される場合があり、それによって、制御特性は、クリアランスおよび障害物の衝突を考慮しない場合がある。別の例では、制御特性は、ロボット２００が現実的にどのようにナビゲートすることができるかに関係を有し得るロボット２００の他の要因を考慮することができる。例示として、ナビゲーションロボットに関して、ロボット２００の重量は、ロボット２００が現実的にどの程度鋭く旋回することができるかに影響を与え得る。別の例として、表面の滑り易さ、動的特徴物の存在、照明、湿気、温度、および／または他の環境要因などの環境要因は、ナビゲーションおよび／または任意の他のロボットタスクにおけるロボット２００の操縦性に影響を及ぼし得る。制御特性は、これらの環境要因を与えられたロボット２００の現実的な動作を反映するものに制限することができる。有利なことに、上述の制限のうちの１つ以上を使用することは、処理および／または検討する選択肢が少なくなることによって、より高速な（およびリソースの点でより効率的な）計算が可能になる場合がある。さらに、別の利点は、上述の制限が、ロボット２００がより少ない命令で空間を動作することを可能にし得ることである。
【００９８】
一方、より多くの選択肢を検討することは、より完全な分析につながり、場合によっては、より良好な決定が可能になる場合がある。例えば、障害物を考慮せずに制御特性を計算すると、障害物が動的である場合があり、いくつかの軌道は、障害物が移動する場合により有利になる場合がある。さらに、後述されることになるブロック４０８などの別のブロックで、可能な軌道のさらなる削除が行われる場合がある。場合によっては、そのような計算は、事前に（例えば、追加の複雑さおよび／または制約を追加する前に）実行されてもよく、依然として計算リソースの経済的な使用を可能にする。
【００９９】
したがって、Ｎ本の線は、制御特性の望ましい数に相関し得る。場合によっては、Ｎは、軌道の数（例えば、５０００個の軌道および／または任意の他の数）と相関してもよく、および／または少なくとも部分的に、メモリおよび処理能力、処理速度、ロボット２００がナビゲートする環境の複雑さ、ロボット２００の可能な配向の数、ロボット２００のＤＯＦ、制御特性に包含される空間量、制御特性に包含される時間量、および／または他の要因によって事前決定されてもよい。
【０１００】
場合によっては、軌道は、制御特性によって画定されてもよい。図７Ｅは、本開示のいくつかの実装態様による、連続コントローラ特性に追従するロボット２００の上面図である。例示されるように、ロボット２００は、線７１６Ａに例示されるコントローラ特性に追従する。したがって、ロボット２００は、線７１６Ａに例示されるコントローラ特性を含む軌道７２６に沿って移動し、緩やかな右折を形成することができる。この軌道は、経路部分をたどることができる。同様に、他の線７１６Ａ〜７１６Ｎは、ロボット２００の移動の軌道を形成することができる。
【０１０１】
図８Ａは、本開示のいくつかの実装態様による、決定された経路部分を例示する経路部分図８００Ａおよび８００Ｂを含む。場合によっては、これらの図はまた、マスクと呼ばれる場合もある。例えば、経路部分８０２Ａは、ロボット２００の軌道から決定された経路の図形表現であり得る。そのような軌道は、図７Ｂおよび７Ｃならびに本開示の他の場所を参照して説明されるものなどの、コントローラ特性を含むことができる。経路部分８０２Ａは、ロボット２００がナビゲートするエリアの少なくとも一部を示す第１の形状を有することができる。同様に、経路部分８０２Ｂは、ロボット２００の軌道から決定された経路の別の図形表現であり得る。そのような軌道は、図７Ｂおよび７Ｃならびに本開示の他の場所を参照して説明されるものなどの、コントローラ特性を含むことができる。当業者は、いくつかの図形表現が経路部分図８００Ａおよび８００Ｂとして示されているが、経路部分が、マトリックス、画像、アレイ、ベクトル、および／または当技術分野で公知の任意の他のデータ構造などの、他のデータ構造として保存することができることを理解するであろう。
【０１０２】
いくつかの実装態様では、経路部分図８００Ａおよび８００Ｂに例示される決定された経路部分は、ロボット２００に関連し、かつ／またはそれを中心にすることができる（例えば、図６を参照して説明されたものと実質的に同様）。いくつかの場合、各決定された経路部分がロボット２００に関連する場合、決定された経路部分は、容易に比較することができる。
【０１０３】
例えば、複数の経路部分が、決定され得る。図８Ｂは、本開示のいくつかの実装態様による、経路部分図の３次元マトリックス８００の図形表現である。マトリックス８００は、Ｎ個の経路部分を含むことができ、Ｎは、考慮すべき経路部分の望ましい数に相関することができる。場合によっては、Ｎは、軌道の数（例えば、５０００個の軌道および／または任意の他の数）、制御特性と相関してもよく、ならびに／または少なくとも部分的に、メモリおよび／もしくは処理能力、処理速度、ロボット２００がナビゲートする環境の複雑さ、ロボット２００の可能な配向の数、ロボット２００のＤＯＦ、制御特性に包含される空間量、制御特性に包含される時間量、および／もしくは他の要因によって事前決定されてもよい。
【０１０４】
図４に戻ると、ブロック４０８は、投影された複数の経路部分のコストを決定することを含むことができる。いくつかの実装態様では、経路部分のコストは、コストマップ（例えば、図５Ａ〜５Ｂ、６を参照して説明されたコストマップと実質的に同様のコストマップ）を参照して決定することができる。したがって、経路部分を介した移動のコストが、計算され得る。
【０１０５】
経路部分図が決定され、コストマップおよび経路部分図が実質的に同様に配向される場合（例えば、ロボット２００に対して、および／またはそれを中心として、の両方）、経路部分のコストは、容易に計算することができる。例えば、コストマップと経路部分図の間のドット積を取得することは、経路部分図と関連付けられたコストを計算し得る。したがって、複数の経路部分図が存在する場合、コストマップと複数の経路部分図との間のドット積は、各経路部分図と関連付けられたコストを与えることができる。マトリックス８００が複数の経路部分を含む場合、マトリックスとコストマップとのドット積は、マトリックス８００内に含まれた経路部分のコストを計算することになる。有利なことに、これは、複数の経路部分の迅速かつ間違いのない計算を可能にすることができ、そのため、それらを比較することができる。
【０１０６】
ブロック４１０は、経路部分の各々のコストに少なくとも部分的に基づいて、複数の経路部分から第１の経路部分を選択することを含むことができる。例えば、コストマップとマスクとの間のドット積は、マスクと関連付けられたコストを見つけるために取得することができる。コストマップ内のより高い値が、ロボット２００が移動することが望ましい箇所に割り当てられる場合、ドット積の結果として実質的な最大値および／またはより高い値を見つけることは、最適経路を示すことができる。別の例として、コストマップ内のより低い値が、ロボット２００が移動することが望ましい箇所に割り当てられる場合、ドット積の結果として実質的な最小値および／またはより低い値を見つけることは、最適経路を示すことができる。
【０１０７】
しかしながら、コストおよび／またはコストの修正に加えて、他の要因が考慮される場合がある。例えば、経路部分の操縦時間が考慮される場合がある。例示として、所定の操縦時間閾値が事前決定される場合がある。経路部分を完了するための操縦が所定の操縦時間閾値よりも長くかかる場合、経路部分は、無視される、および／またはペナルティを与えられる場合がある（例えば、乗算および／または加算によるコストの増加）。別の例として、コストマップは、時間を節約する操縦を反映するように調整される場合がある。例示として、ロボット２００は、操縦速度を最大化するように、経路を見つける際に貪欲なアプローチを取ることができる。
【０１０８】
別の例として、最短経路フィールドが計算され得る。例えば、終点がロボット２００に対して決定され得る。経路毎に、終点に対する最短経路が、ロボットの現在の配向を考慮して決定され得る。このようにして、最短経路は、マップ内の点毎に決定され得る。終点へのそのような最短経路は、コストマップの値を調整するために使用することができ、それによって、より短い経路（および／または現実的な経路）をより有利にする。場合によっては、最短経路を含むマップは、追加のマップである場合があり、本質的にコストマップを形成する。いくつかの実装態様では、最短経路は、当技術分野で公知のアルゴリズムを使用することなどによって、障害物をさらに考慮することができる。
【０１０９】
例えば、終点は、ロボット２００の制限された視野に関連する場合がある。例えば、ロボット２００は、所定の距離および／または時間範囲を有する視野を計画および／または見る場合がある。例えば、視野は、フィート、ヤード、メートルなどの事前定義された単位の距離とすることができる。視野は、秒、分などの事前定義された時間（例えば、ロボット２００が範囲外になる前に移動することができる）であってもよい。
【０１１０】
例示的な例として、図８Ｃは、本開示のいくつかの実装態様による、ロボット２００が障害物８２２に衝突するロボット２００の軌道８２０、およびロボット２００が障害物８２２を迂回することを可能にするロボット２００の軌道８２４の俯瞰図である。マップ部分８１８は、ロボット２００がナビゲートしている環境の一部分を例示する。マップ部分８１８は、コストマップに対応し得るロボット２００の視野を例示することができる。例示されるように、軌道８２０は、障害物８２２を通過し、それによって、潜在的に衝突させる、および／またはロボット２００を障害物８２２の正面で動かなくさせる。ロボット２００が障害物８２２に近づくほど、ロボット２００の操縦は、より制限されるようになる場合がある。一方、ロボット２００が障害物８２２を迂回すべきであると認識した場合、ロボット２００は、次いで、軌道８２４として例示されるものなどの、障害物８２２を迂回するより最適な経路を計画することができる。軌道８２４で例示されるこのより最適な経路は、ロボット２００をより速く旋回させる。
【０１１１】
最短経路を決定するために、マップ部分８１８は、複数の点を見ることなどによって、離散化され得る。図８Ｄは、本開示の実装態様による、各点が離散場所である、マップ部分８１８の離散化されたバージョンを例示する俯瞰図である。例えば、点８３０Ａは、マップ部分８１８内の離散化された点とすることができる。いくつかの実装態様では、ナビゲート不能な点が、障害物８２２内にある可能性がある、点８３４などの、離散化に含まれ得る。いくつかの実装態様では、ナビゲート不能な点が、含まれない場合がある。場合によっては、各離散化された点は、セルと呼ばれ得る。
【０１１２】
最短経路を決定するために（例えば、最短経路フィールドで）、点が選択され得る。任意の点を使用することができるが、いくつかの実装態様では、点は、ロボット２００が経路に沿って前進しているときに確認することができる実質的に最も遠い点（例えば、距離および／または時間において最も遠い）などの、ロボット２００の視野に沿った点である。有利なことに、これは、ロボット２００が、それが移動するときに前進する経路を計画することを可能にすることができる。ロボット２００は、次いで、各離散化された点（図８Ｄに例示される離散化された点などの）からその選択された点までの最短非衝突点を見つけることができる。
【０１１３】
図８Ｅは、本開示のいくつかの実装態様による、図８Ｄに例示された離散化された点の区分からの最短非衝突経路を示す俯瞰図である。例えば、マップ部分８１８Ａは、マップ部分８１８の例示的な部分（例えば、例示的な目的のための）であり得る。点８３０Ａは、他の点からの最短非衝突経路が計算される点を選択され得る。例えば、点８３０Ｂは、マップ部分８１８Ａ内の離散化された点および／またはセルとすることができる。最短非衝突経路（例えば、マップ部分８１８内に示される環境内の物体と衝突しない）は、点８３０Ｂから点８３０Ａに直進する、経路８３６Ｂによって示され得る。別の例として、点８３０Ｃは、障害物８２２の反対側の別の点であってもよい。したがって、点８３０Ｃと点８３０Ａとの間の最短非衝突経路は、障害物８２２を迂回する、経路８３６Ｃによって例示された曲線経路である。
【０１１４】
場合によっては、最短経路フィールドからの関連情報は、選択された点までの最短経路（例えば、最短非衝突経路）を移動するために、その点のロボット２００のベクトル（例えば、方向、配向、姿勢、位置、速度など）である。したがって、ベクトル場は、各離散化された点でのベクトルを示すように生成され得る。図８Ｆは、本開示のいくつかの実装態様による、図８Ｄに例示された離散化された点と関連付けられた最短経路のベクトルを示す俯瞰図である。例えば、点８３０Ｂは、ベクトル８３８Ｂに対応し、これは、点８３０Ａへの最短経路を移動するためにロボット２００のベクトルを与える。
【０１１５】
いくつかの実装態様では、各離散化された点のベクトルは、最短経路と関連付けられたベクトル場を形成することができる。後の計算を容易にするために、各ベクトルは、場合によっては、単位長さのベクトルとすることができる。これらのベクトルは、ロボット２００の計画された経路部分および／または軌道、例えば、マトリックス８００内に含まれる計画された経路部分と比較され得る。例えば、ロボット２００は、計画された経路部分および／または軌道の各々と関連付けられたベクトルを決定することができる。ベクトルは、計画された経路部分および／または軌道を開始するときのロボット２００の配向、速度、位置、姿勢などを反映することができる。いくつかの実装態様では、このベクトルは、計算を容易にするために、単位長さのベクトルとすることができる。したがって、計画された各経路部分および／または軌道の各々のベクトルは、最短経路と関連付けられたベクトル場のベクトルと比較され得る。場合によっては、ベクトル間の比較がなされ得る。例えば、ベクトルが角度において少なくとも所定の角度だけ異なる場合、次いで、経路部分および／または軌道は、検討から外され得る。この所定の角度は、計算リソース、環境の複雑さ、計算時間、経験的な検討事項、および／または他の要因に少なくとも部分的に基づいて決定することができる。９０度の所定の角度は、現実的には移動しない経路部分および／または軌道を考慮から除外するために効果的であったことがわかった。他の場合、ペナルティが、最短経路と関連付けられた軌道の角度とは実質的に異なるベクトルに対応する経路部分および／または軌道に割り当てられる場合がある。そのようなペナルティは、コスト値、乗算および／または加算などを介して、回復マトリックス、コストマップ、および／またはマトリックス（例えば、マトリックス８００）で実現することができる。場合によっては、比較が、最短経路のベクトルと、ロボット２００によって計算された経路部分および／または軌道のベクトルのベクトルとの間のドット積を調べることによって計算され得る。このようにして、軌道および／または経路部分が最短経路の方向と実質的に同様である適切な方向を有するとき、それは、ドット積に反映されることになる。このドット積は、最短経路と同じ初期方向を有する軌道および／または経路部分の値が優先されるように、コスト関数の依存関係になる場合がある。
【０１１６】
別の例として、回復条件が決定され得る。そのような回復条件は、事前決定された場合および／または状況に対する操縦を識別することができる。場合によっては、回復条件は、例示的な例を介して以下に説明されるように、状況から抜け出すためにロボット２００が実行する操縦であり得る。場合によっては、回復条件がロボット２００の意思決定に影響を与える場合があり、ロボット２００が使用する経路または経路部分に少なくとも部分的に影響を与える。
【０１１７】
例示として、図９Ａは、本開示のいくつかの実装態様による、壁９０６に面し、それによって、制限された前方移動性を有する、ロボット２００の俯瞰図である。壁９０６が例示されているが、ロボット２００のように他の障害物／物体を壁９０６の代わりに使用されてもよい。例示されるように、ロボット２００は、前側７０４Ａの近位に壁９０６を有する。この位置から、前方軌道９０２は、ロボット２００を壁９０６に向かって進ませて、場合によっては、壁９０６と衝突させ得る。ロボット２００が壁９０６と衝突しない場合でも、特に、ロボット２００の形状が、三輪車および／または他の形状などの非円形である場合、ロボット２００の操縦性は、ロボット２００が壁９０６に近づくにつれて、より制限される。したがって、軌道９０４上で少なくとも部分的に画定された経路などの旋回経路が望ましい場合がある。
【０１１８】
回復条件に基づいて、特定の軌道が考慮から除外されてもよく、より有利／不利にされてもよい。例えば、図９Ａに例示されている図では、ロボット２００を壁９０６に近づけておよび／またはその中に移動させる軌道が、マトリックス８００から取得され得る。別の例として、ロボット２００を壁９０６に近づけておよび／またはその中に移動させる軌道は、コストペナルティを有してもよく、マスクに対するコスト関数計算を変更し、それによって、それらを選択され難くする。別の例として、有利な軌道（例えば、図９Ａでは、軌道９０４および／または他の軌道）は、有利なコスト影響を有し得、マスクのコスト関数計算を変更し、それによって、それらが選択される可能性を高くする。場合によっては、ロボット２００は、壁９０６および／または任意の他の障害物に直面しないように、異なる方向（例えば、所定の角度で左または右）に移動するなどの所定の操縦を選択することができる。
【０１１９】
場合によっては、マトリックス８００を修正する代わりに、別の回復マトリックスが存在してもよい。有利なことに、完全に他の回復マトリックスを使用することは、個々の軌道の値を調整するよりも高速である場合がある。そのような場合、回復マトリックスは、軌道のコストを決定するために、マトリックス８００の代わりに使用され得る。したがって、本開示における参照は、コスト関数値の変更、コストペナルティの呼び出し、および／または有利なコスト影響を回復マトリックスの値に関連させることができると説明した。回復マトリックスの使用は、本明細書で説明された回復条件の例などの、回復条件のいずれかに関連する指標によってトリガーされ得る。例えば、ロボット２００がその正面に壁を検出したとき、ロボット２００は、実装するこができる様々な軌道選択肢と関連付けられたコストを反映する回復マトリックスを使用することができる。別の例として、ロボットは、それが外れた経路であることを決定し、その発生と関連付けられた回復マトリックスをトリガー／利用して、どのように回復するかを決定することができる。いくつかの実装態様では、ロボット２００は、マトリックス８００を使用して経路を決定することに失敗すると、回復マトリックスを利用することができる。したがって、回復マトリックスは、ロボット２００が移動するための軌道を識別することに他の計算が失敗したときの、代替および／または追加の計算であり得る。
【０１２０】
回復条件の別の例として、ロボット２００が、障害物（例えば、壁９０６などの壁に面している）によって制約されることによるなどの、動きを制限されている状況では、回復条件は、障害物から離れて移動するために、ロボット２００の回転を決定することができる。例示として、ロボット２００は、ロボット２００の回転を計算することができる。図９Ｂは、本開示のいくつかの実装態様による、ロボット２００のフットプリントの計算された回転の上面図である。フットプリント７０２Ａは、ロボット２００のフットプリントを少なくとも部分的に示すことができる。例えば、フットプリント７０２Ａは、障害物（例えば、壁９０６）に面するときのロボット２００のフットプリントであり得る。ロボット２００は、複数の角度で回転されたフットプリント７０２Ａの位置などの、フットプリント７０２Ａの回転を計算することができる。フットプリント７０２Ｂ〜７０２Ｈは、フットプリント回転角の例を例示する。フットプリント７０２Ａが回転される角度は、利用可能なメモリおよび／もしくは処理リソース、ロボット２００の利用可能な動きの範囲、検出された障害物の位置、ロボット２００のフットプリントの形状および／もしくはサイズ、ならびに／または他の要因に少なくとも部分的に基づいて決定され得る。いくつかの実装態様では、角度の範囲が計算され得る（例えば、回転の総面積を少なくとも部分的に決定する）。この範囲は、事前決定され得る、ケースバイケースに基づいて見つけられ得る、および／または全ての実行可能な回転を試行することによって決定され得る。角度は、回転範囲全体で周期的および／または断続的であり得る。いくつかの実装態様では、フットプリント７０２Ｂ〜７０２Ｈは、ロボット２００の中心（例えば、幾何学的中心、重心、旋回中心など）の共通中心点、および／または任意の他の点を中心として回転され得る。
【０１２１】
回復条件の別の例は、物体に接触および／または接近することに関し得る。例えば、ロボット２００は、所定の距離閾値内などの、近くにある物体を示すピクセルを検出することができる。そのような所定の距離閾値は、ロボット２００の停止距離、ロボット２００の速度、ロボット２００の物体との衝突の潜在的な損傷、衝突の許容度、ロボット２００の操縦に必要な空間量、および／または他の要因に少なくとも部分的に基づいて決定され得る。ロボット２００はまた、ロボット２００のフットプリント内の物体を示すピクセルを検出することができる。これらの場合、ロボット２００が物体から離れて移動することが望ましい場合がある。別の例として、ロボット２００は、物体と衝突してもよく、物体の１つ以上のピクセルがロボット２００のフットプリント内に突出する。物体の接触および／または接近の検出に応答して、ロボット２００は、物体から１８０度離れる（例えば、逆転および／または反転）またはロボット２００の形状および／もしくは操作性、ならびに／またはロボット２００のフットプリントに応じて物体から離れる角度などの、物体から離れる方向に移動され得る。この離れる動きは、ロボット２００が、経路を決定する前に物体から取り除かれることを可能にし得る。場合によっては、ロボット２００は、物体に対する様々なルートと関連付けられたコストを調整することができる。例えば、物体から離れる経路は、ロボット２００を物体の方向に進ませる経路よりもコストを有利にすることができる。
【０１２２】
回復条件の別の例は、ロボット２００が決定ループで動かなくなったときに起こり得る。例示として、ロボット２００は、移動する経路を選択することができるが、障害物が、その経路を追従することを妨げる場合がある。ロボット２００は、次いで、例えば、追従する異なるマスクを選択することによって、移動する別の経路を選択することができる。しかしながら、障害物は、次いで、移動してロボットを妨害する場合がある。他の妨害のシナリオが、ロボット２００に妨害を検出させ得るセンサノイズおよび／または人工物に起因して起こる場合がある。別のシナリオとして、実質的に静止している障害物が、障害物の以前には見えなかった部分が見えるようになる、回転などの変化のために移動しているように知覚され得る。場合によっては、ロボット２００が繰り返し第１の経路に沿って移動しようとするが、妨げられ、次いで、第２の経路に沿って移動しようとする、周期的な決定が起こる場合がある。ロボット２００は、次いで、第１の経路および第２の経路を移動しようとする間でサイクルに入る場合があり、それによると、ロボット２００は、ナビゲーション目標への移動および／またはロボット２００の動作タスクの終了にいかなる実質的な進捗ももたらさない。
【０１２３】
そのような循環を遮断するために、回復条件は、循環的決定の遮断器を含むことができる。いくつかの実装態様では、ロボット２００（例えば、コントローラ２０４）は、選択された軌道、経路／経路部分、および／または制御特性を記憶し（例えば、メモリ２０２に）、繰り返しを見つけることができる。例えば、循環的決定の閾値が存在してもよく、軌道、経路／経路部分、および／または制御特性が循環的決定の閾値以上繰り返された場合、その軌道、経路／部分、および／または制御特性は、もはや考慮されなくなる、および／またはコストペナルティを受けることになる。循環的決定の閾値は、所定の時間窓にわたる、および／または場所（および／または実質的に同様の場所）と関連付けられた、繰り返し数とすることができる。いくつかの実装態様では、循環的決定の決定数は、環境の複雑さ、ロボット２００の未決定／停止の許容度、オペレータの補助の利用可能性、繰り返しの類似性、および／またはその他の要因に、少なくとも部分的に依存し得る。場合によっては、３回の繰り返し決定の発生が、循環的決定の閾値として有効であることが見出された。
【０１２４】
説明されたように、循環的決定の閾値が満たされた後、ロボット２００は、そのような繰り返される決定をもはや考慮することができない。有利なことに、これは、循環を遮断し、ロボット２００が循環的意思決定につながり得ない別の経路を見つけることを可能にし得る。
【０１２５】
いくつかの実装態様では、上述の回復条件および／または選択のいずれかにおいて、軌道、経路部分、および／または制御特性が選択されるたびに、コストペナルティが、選択された軌道、経路／経路、および／または制御特性に対応するコストマップに追加され得る。代替的に、コストマップを調整する代わりに、ペナルティが、選択された軌道、経路／経路部分、および／または制御特性のマスクに追加されてもよく、そのため、マスクのコストが決定されるときに、そのコストは、マスク（それゆえに、軌道、経路／経路部分、および／またはそこに含まれる制御特性）が選択されることになる可能性を低下させることになる。上記のように、別個の回復マトリックスが使用されてもよい。
【０１２６】
いくつかの実装態様では、回復条件および／または動作制御特性（例えば、通常動作中またはその他）が学習プロセスの一部として決定され得る。そのような学習プロセスは、ロボット２００（例えば、コントローラ２０４を使用して）、ネットワーク３０２、アクセスポイント３０４Ａおよび／もしくは３０４Ｂ、ならびに／またはロボットシステムの任意の他の構成要素に実装され得る。例えば、コストマップが、調整されてもよく、および／または回復手順が、過去の性能および／またはロボット２００が受信するフィードバックに少なくとも部分的に基づいて、実装されてもよい。場合によっては、ユーザフィードバックが、ライブラリなどのメモリ内に保存され得る。フィードバックは、（ａ）制御入力、（ｂ）補正なし、（ｃ）物理的補正、（ｄ）マップ補正、および（ｅ）性能パラメータのうちの１つ以上の形態を採ることができる。場合によっては、学習されたケースが、マトリックス８００のマスクなどの、意思決定プロセスに統合され得る。
【０１２７】
例えば、制御入力は、手動操作を介するなどの、ロボット２００上で物理的に実行され得る。例示として、図７Ｂおよび７Ｃに例示されるなどの床清掃機は、カートと実質的に同様の手段で、操舵車輪およびフットペダルを使用して手動操作で駆動され得る。別の例として、オペレータは、遠隔制御を使用してコマンドを入力することができる。オペレータは、現場にいてもよく、ならびに／あるいはネットワーク３０２および／またはアクセスポイント３０４Ａもしくは３０４Ｂのうちの１つ以上を介するなどの、遠隔操作を行ってもよい。したがって、問題のあるエリアでは、オペレータは、そのエリアを清掃するためにロボット２００を駆動することができる。当業者は、他のロボットで同様の用途が存在することを認識することになる。例えば、オペレータは、問題のあるエリアで輸送ロボットを駆動し得る。別の例として、オペレータは、ロボットアームを制御してタスクを実行することができる。したがって、ロボット２００は、状況（例えば、センサデータ、場所、姿勢、環境要因など）を、オペレータが実行した手動操作（例えば、シナリオにおけるコントローラコマンド、軌道、および／または経路部分）と関連付けることができる。場合によっては、ロボット２００は、制御入力の軌道、経路／経路部分、および／または制御特性が、その後の実質的に同様の状況との遭遇で選択されることになる可能性をより高めることができる。いくつかの実装態様では、この可能性を高めることは、コストマップの値を変更して、ルートが選択される可能性を高めることを含み得る。いくつかの実装態様では、ロボット２００は、状況が発生したときに、実演された制御入力を自動的に実行することができる。有利なことに、本開示のシステムおよび方法は、ロボット２００が、より多くの情報を受信する際に、経路計画を継続的に学習および改善することができる。
【０１２８】
別の例として、補正がないことは、ロボット２００の経路計画をさらに定着させ得る。例えば、ロボット２００が、ある状況における経路／経路部分を追従し、かつ補正されないたびに、ロボット２００は、その状況が再び発生した場合に、その経路を移動することになる可能性をより高めることができる。これは、コストマップを調整して、実行したものと実質的に同様の経路／経路部分を優先させることによって、達成され得る。有利なことに、そのような挙動は、ロボット２００が成功した挙動を継続することを可能にし得る。
【０１２９】
別の例として、物理的補正が、ロボット２００にフィードバックを提供するために使用され得る。物理的補正は、オペレータがロボット２００に物理的に接触すること、および／またはそれを位置付けることを含み得る。例示として、ロボット２００がロボットアームである場合、オペレータは、ロボットアームの１つ以上の関節を旋回させること、および／またはアームを空間内に位置付けることによって、ロボットアームを調整することができる。別の例として、オペレータは、ロボット２００の少なくとも一部分を持ち上げて、必要に応じてその部分を位置変更することができる。したがって、ロボット２００は、物理的補正が起こった状況を観察し得る。場合によっては、ロボット２００は、物理的補正の軌道、経路／経路部分、および／または制御特性が、その後の実質的に同様の状況との遭遇で選択されることになる可能性をより高めることができる。いくつかの実装態様では、この可能性を高めることは、コストマップの値を変更して、ルートが選択される可能性を高めることを含み得る。いくつかの実装態様では、ロボット２００は、状況が発生したときに、実演された制御入力を自動的に実行することができる。有利なことに、本開示のシステムおよび方法は、ロボット２００が、ユーザがそれを単に物理的に補正するときなどの、暗黙の修正に従って調整することを可能にする。この能力は、制御入力の形式にこだわらずにユーザフィードバックを可能にすることによって、ユーザ体験を向上させることができる。
【０１３０】
別の例として、マップ補正は、ユーザ／オペレータによって入力され得る。例えば、ユーザは、経路の調整、コストマップの変更、ルートの移動、ルートの拡張、ルートの閉鎖、および／またはロボット２００が移動することができる環境の部分のさらなる制約（および／または拡張）を行うことができる。ユーザは、ユーザインターフェースユニット２１８、ネットワーク３０２、および／またはアクセスポイント３０４Ａおよび３０４Ｂを介してそのようにすることができる。場合によっては、ロボット２００は、マップ補正の変更を組み込む、軌道、経路／経路部分、および／または制御特性が、その後の実質的に同様の状況で選択されることになる可能性をより高めることができる。いくつかの実装態様では、この可能性を高めることは、コストマップの値を変更して、ルートが選択される可能性を高めることを含み得る。いくつかの実装態様では、ロボット２００は、状況が発生したときに、実演された制御入力を自動的に実行することができる。有利なことに、本開示のシステムおよび方法は、ロボット２００が、マップおよび／または性能データを評価する遠隔操作者によるなどの、異なる時点で異なる場所から補正されることを可能にし得る。この能力は、ロボットが後続の実行の間で効率を向上させることができるため、よりシームレスなユーザ体験を可能にし得る。
【０１３１】
例示として、図９Ｃ〜９Ｅは、本開示の実装態様による、マップを補正するためのユーザインターフェースである。例えば、図９Ｃは、本開示のいくつかの実装態様によって補正する地図を選択するためのユーザインターフェースを示す。デバイス９２０は、ユーザインターフェースユニット２１８ならびに／またはアクセスポイント３０４Ａおよび３０４Ｂ内に含まれるユーザインターフェースなどのユーザインターフェースとすることができる。例示として、デバイス９２０は、携帯電話として示されているが、ユーザインターフェースユニット２１８ならびに／またはアクセスポイント３０４Ａおよび３０４Ｂを参照して説明されたものうちのいずれかなどの、他のインターフェースが考えられる。デバイス９２０上では、表示される複数のセル（例えば、セル９２２Ａ〜９２２Ｆ）が存在し得、これらのセルは、ユーザによって選択され得るマップを示している。図９Ｃは、６つのセルのみを示しているが、表示されるセルの数は、必要に応じてより少なくてもよく、またはより多くてもよい。例示されるように、いくつかのセルは、空であり（例えば、セル９２２Ｃ〜９２２Ｆ）、いくつかのセルは、マップを有している（例えば、セル９２２Ａおよび９２２Ｂ）。セル９２２Ａおよび９２２Ｂは、実行されたマップを含有し、ロボット２００が環境内で以前に移動した場所の高レベルのマップを示している。
【０１３２】
マップを有するセルを選択した後、選択肢が、マップを編集するために現れ得る。図９Ｄは、本開示の実装態様による、ユーザによって実行され得るマップの様々な操作を例示する。例えば、デバイス９２０は、経路部分９４０を含むマップ９３２を表示することができる。ユーザは、項目を含む表示されたメニューから選ぶことができる。ユーザが実行することができるマップの操作に関連して、ユーザが選択することができる任意の数の選択肢が存在し得る。例えば、インターフェースは、ユーザが、マップの編集、経路の調整、開始位置（例えば、ホームマーカ）の移動、経路／経路セグメントの削除、動作の追加（例えば、清掃、操作、作動など）、および／またはユーザが所望し得る任意の他の操作を行うことを可能にし得る。例えば、選択肢９３４Ａは、ユーザが経路セグメントを削除することを可能にし得る。例えば、オプション９３４Ａを選択した後、ユーザは、次いで、マップ９３２および／または経路部分９４０に表示される経路の一部分を選択することができる。ロボット２００は、次いで、そのような選択された経路部分を削除することができる。別の例として、選択肢９３４Ｂは、ユーザが経路を調整することを可能にし得る。例えば、ユーザは、マップ９３２および／または経路部分９４０内に含まれる経路部分を選択し、その経路部分を移動／操作することができる。別の例として、選択肢９３４Ｃは、ユーザがホームマーカ（例えば、開始位置）を移動することを可能にする。例えば、開始位置は、ロボット２００がロボット動作を開始および／または終了する場所であり得る。例えば、ロボットは、ホームマーカで開始する空間のナビゲートを始め、および／またはホームマーカに戻ったときに終了することができる。アイコン９３６は、ホームマーカの場所を示すことができる。図９Ｅは、本開示のいくつかの実装態様による、ホームマーカを移動する動作を例示する。例えば、ホームマーカは、場所９３６Ａから場所９３６Ｂに移動され得る。
【０１３３】
有利なことに、ユーザ補正は、ロボット２００がユーザフィードバックに基づいて直接調整することを可能にする。そのようなフィードバックは、ユーザのフィードバックがロボット２００の所望される経路を示すことができるため、経路計画でロボット２００を支援することができる。したがって、ロボット２００は、フィードバックに従う経路をより有利に重み付けすることができる。
【０１３４】
別の例として、性能尺度がメモリ２０２内に記憶され得る。性能尺度は、少なくとも部分的に、どれほど良くロボット２００が実行したかを反映し得る。場合によっては、性能尺度がパラメータであってもよい。パラメータは、ロボット２００が目標軌道および／または経路／経路部分にどれほど接近しているかの尺度であり得る。当業者は、パーセンテージ、差など、この比較が数値的に測定され得る任意の数の手段が存在し得ることを理解するであろう。場合によっては、それは、どれほど良くロボット２００が実行しているかを反映し得るパラメータの相対値（例えば、ロボットの実行の間の）である。別の例として、パラメータは、コストマップロボット２００内の望ましいピクセルと関連付けられたいくつの場所が横断するかを測定し得る。ロボット２００がナビゲートする場合（例えば、床清掃機、運搬装置、および／または他のナビゲーションロボット）、性能パラメータは、ロボット２００が移動する床面積（例えば、平方メートル、平方フィート、平方インチ）の少なくとも一部を示すことができる。別の例として、パラメータは、ロボット２００が選択された経路／経路部分で達成する理想的な経路（コストマップの観点から最も価値がある）から外れたパーセンテージを測定することができる。性能尺度に少なくとも部分的に基づいて、ロボット２００は、動作を変更して性能を改善することができる。
【０１３５】
性能特性は、サブセット（例えば、１つの所与のインスタンスにおけるロボット２００の選択および／またはロボット２００の複数の選択）に起因し得る。したがって、ロボット２００は、インスタンスおよび／または複数のインスタンスで挙動を最適化することができ、それによって、挙動をさらに最適化することができる。同様に、ロボット２００は、ある状況での挙動をどのように最適化するかを観察し、その状況のその後の発生で実質的に同様の挙動を実行することができる。
【０１３６】
図４に戻ると、ブロック４１２は、第１の経路部分に対するアクチュエータコマンドを決定することを含み得る。アクチュエータコマンドは、ロボット２００が、１つ以上の制御特性によるなどの、経路部分に沿って移動することを可能にする。さらに、いくつかの実装態様では、アクチュエータコマンドは、ロボットが、ブラシの旋回、散水、物体（ならびに／または人および動物）の移動、関節運動、および／またはロボット２００の任意の他の機能などの動作タスクを実行することを可能にし得る。
【０１３７】
さらに、いくつかの実装態様では、アクチュエータコマンド関数が使用され得る。アクチュエータコマンド関数は、ロボット２００の様々な一時的要因を考慮することができ、ロボット２００が適切に挙動することを可能にする。実際、一時的要因がロボット２００に十分な影響を及ぼす場合、一時的要因は、ブロック４１０で考慮され得る。
【０１３８】
例えば、ロボット２００の動きの物理学は、例えば、ロボット２００の重量が変化したときに変わる場合がある。例示として、ロボット２００の重量は、流体レベルが変化する（例えば、水、洗浄液、燃料など）、および／またはロボットが貨物および／または人を乗せる／送達するときに変化し得る。したがって、ロボット２００の重量が変化したとき、旋回の物理特性が変化する。
【０１３９】
別の例として、ロボット２００のロボットタスクに関連するアクチュエータが、ロボット２００の動きの物理特性に影響を及ぼす場合がある。例えば、ロボット２００が回転ブラシを有する場合（例えば、バニッシャ、洗浄機、および／または他の床清掃機のように）、ブラシの回転は、ロボット２００にモーメントを生じさせる場合があり、これは、ロボット２００がどのように旋回および／または方向を変え得るかに影響を及ぼし得る。
【０１４０】
場合によっては、アクチュエータコマンドは、ロボット２００が第１の経路部分に沿って移動するために、ロボット２００に対して識別された制御特性に従ってアクチュエータを調整する形態を採ることができる。例えば、ロボット２００は、第１の経路部分の一連の制御特性のうちの第１の制御特性を実施するアクチュエータコマンドを生成することができる（例えば、軌道７２６の第１の矢印、ならびに／または任意の他の軌道、経路、および／もしくは経路部分に対応する制御特性を取る）。場合によっては、この第１の制御特性は、実施される唯一の制御特性であってもよく、ロボット２００は、次いで、第１の制御特性を含むアクチュエータコマンドを送信した後に経路を再評価する（例えば、方法４００によって、別の第１の経路部分を見つける）。有利なことに、これは、ロボット２００が各移動後に経路を再評価することを可能にし、最適な経路計画のより大きい潜在性を与える。場合によっては、第１の制御特性は、モデル予測制御とすることができる。例示として、第１の制御特性は、第１の車輪角度、第１のアーム位置、および／または本開示で説明される他の任意の制御特性に対応することができる。
【０１４１】
しかしながら、場合によっては、アクチュエータコマンドは、複数の制御特性を含んでもよい。例えば、複数の制御特性は、少なくとも部分的に、第１の経路部分の制御特性に関連し得る。制御特性を実施することによって、ロボット２００は、第１の経路部分の少なくとも一部分を移動することができる。例えば、２つ、３つ、４つ、５つ以上の制御特性が、アクチュエータコマンドに関連して使用され得る。例示として、そのような制御特性は、軌道６２６の矢印のうちの２つ、３つ、４つ、５つ以上に関連し得る。有利なことに、そのような複数を使用することは、より円滑な移動および／またはより少ない計算リソースの消費を可能にする。より円滑な移動は、ロボットが、移動する際により自然な外観を有することを可能にし得る。
【０１４２】
いくつかの実装態様では、ユーザインターフェース２１８は、起動されたときに、ロボット２００に方法４００の１つ以上のステップを実行させる、外部開始ボタンを含むことができる。例えば、外部開始ボタンは、少なくともブロック４０４、４０６、４０８、４１０、および４１２を繰り返すことができ、ロボット２００が状況を再評価することを可能にする。有利なことに、エラー、ノイズ、および／またはセンサデータの任意の他の問題は、ロボット２００に、そこに存在しない物体および／または障害物を誤って検出させる場合がある。外部ボタンは、ロボット２００をトリガーして、問題のあるデータを再評価および／または取り除き、それによって、経路計画を再度実行することができる。場合によっては、これは、ロボット２００がナビゲーションに問題があった空間を適切にナビゲートすることを可能にする。
【０１４３】
図１０は、本開示のいくつかの実装態様による、経路計画のための例示的な方法１０００のプロセスフロー図である。ブロック１００２は、ロボットの環境と関連付けられたコストマップを生成することを含み、コストマップは、環境内の場所に各々対応する複数のコストマップピクセルを含み、各コストマップピクセルは、関連付けられたコストを有する。ブロック１００４は、環境内のロボットの移動のための投影された経路部分を有する複数のマスクを生成することを含み、各マスクは、複数のマスクピクセルを含み、各マスクピクセルは、環境内の場所に対応する。ブロック１００６は、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することを含み、回復条件が適用される場合、（１）コストマップおよび（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正する。ブロック１００８は、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することを含む。ブロック１０１０は、第１のマスクのマスクコストに少なくとも部分的に基づいて、第１のマスクを選択することを含む。ブロック１０１２は、第１のマスク内に含まれる投影された経路部分を移動するようにロボットに対するアクチュエータコマンドを決定することを含む。ブロック１０１４は、アクチュエータコマンドに少なくとも部分的に基づいて、ロボットのアクチュエータを作動させることを含む。
【０１４４】
図１１は、本開示のいくつかの実装態様による、経路計画のための例示的な方法１１００のプロセスフロー図である。ブロック１１０２は、環境の生成されたマップの少なくとも一部分と関連付けられたコストマップを生成することを含み、コストマップが、複数のコストマップピクセルを含み、各コストマップピクセルが、環境内の場所に対応し、各コストマップピクセルが、関連付けられたコストを有する。ブロック１１０４は、環境内のロボットの移動のための投影された経路部分を有する複数のマスクを生成することを含み、各マスクは、複数のマスクピクセルを含み、各マスクピクセルは、環境内の場所に対応する。ブロック１１０６は、環境内の１つ以上の障害物に対するロボットの位置に少なくとも部分的に基づいて、回復条件が適用されるかどうかを決定することを含み、回復条件が適用される場合、（１）コストマップおよび（２）複数のマスクのうちの１つ以上、のうちの少なくとも１つを修正する。ブロック１１０８は、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することを含む。ブロック１１１０は、第１のマスクのマスクコストに少なくとも部分的に基づいて、第１のマスクを選択することを含む。ブロック１１１２は、第１のマスクに少なくとも部分的に基づいて、１つ以上のアクチュエータを作動させることを含む。
【０１４５】
図１２は、本開示のいくつかの実装態様による、経路計画のための例示的な方法１２００のプロセスフロー図である。ブロック１２０２は、ロボットの環境と関連付けられたコストマップを生成することを含み、コストマップが、環境内の場所に各々対応する複数のコストマップピクセルを含み、各コストマップピクセルが、場所を清掃する要望に少なくとも部分的に基づく関連付けられたコストを有する。ブロック１２０４は、環境内のロボットの姿勢からの移動のための投影された軌道を有する複数のマスクを生成することを含み、各マスクが、複数のマスクピクセルを含み、各マスクピクセルは、ロボットがマスクを選択する場合にロボットが清掃することになる環境内の場所に対応する。ブロック１２０６は、コストマップに少なくとも部分的に基づいて、各マスクと関連付けられたマスクコストを決定することを含む。ブロック１２０８は、第１のマスクのマスクコストに少なくとも部分的に基づいて、第１のマスクを選択することを含む。
【０１４６】
本明細書で使用されるように、コンピュータおよび／またはコンピューティングデバイスは、これらに限定されないが、  パーソナルコンピュータ（「ＰＣ」）およびミニコンピュータデスクトップ、ラップトップ、もしくはそれ以外、メインフレームコンピュータ、ワークステーション、サーバ、携帯情報端末（「ＰＤＡ」）携帯型コンピュータ、埋め込み式コンピュータ、プログラマブルロジックデバイス、パーソナルコミュニケータ、タブレットコンピュータ、モバイルデバイス、ポータブルナビゲーションエイド、Ｊ２ＭＥ搭載デバイス、携帯電話、スマートフォン、パーソナル統合通信またはエンターテインメントデバイス、および／または、一組の命令を実行し、入力してくるデータ信号を処理することが可能である、任意の他のデバイスを含むことができる。
【０１４７】
本明細書で使用される場合、コンピュータプログラムおよび／またはソフトウェアは、機能を実行する任意のシーケンスまたは人間もしくは機械認識可能なステップを含むことができる。そのようなコンピュータプログラムおよび／またはソフトウェアは、例えば、Ｃ／Ｃ＋＋、Ｃ＃、Ｆｏｒｔｒａｎ、ＣＯＢＯＬ、ＭＡＴＬＡＢ（商標）、ＰＡＳＣＡＬ、ＧＯ、ＲＵＳＴ、ＳＣＡＬＡ、Ｐｙｔｈｏｎ、アセンブリ言語、マークアップ言語（例えば、ＨＴＭＬ、ＳＧＭＬ、ＸＭＬ、ＶｏＸＭＬ）などを含む任意のプログラミング言語または環境、ならびにＣｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（「ＣＯＲＢＡ」）、ＪＡＶＡ（商標）（Ｊ２ＭＥ、Ｊａｖａ  Ｂｅａｎｓなどを含む）、バイナリランタイム環境（例えば、「ＢＲＥＷ」）などのオブジェクト指向環境によって提供することができる。
【０１４８】
本明細書で使用される場合、接続、リンク、および／またはワイヤレスリンクは、エンティティ間の情報交換を可能にする、（物理的か論理的／仮想的かにかかわらず）任意の２つ以上のエンティティ間の因果関係を含むことができる。
【０１４９】
本開示のある特定の態様は、方法のステップの特定のシーケンスに関して記載されているが、これらの記載は、本開示のより広範な方法の単なる例示であり、特定の用途によって要求されるように変更され得ることが認識されるであろう。ある特定の状況下では、ある特定のステップが不要または任意選択になることがあり得る。さらに、開示された実装態様にある特定のステップもしくは機能が追加されてもよく、または２つ以上のステップの実行順序は並べ換えることができる。そのような変形は全て、本明細書に開示および特許請求されている開示内に包含されると見なされる。
【０１５０】
上記の詳細な説明は、様々な実装態様に適用される本開示の新規な特徴を示し、説明し、指摘したが、例示されたデバイスまたはプロセスの形態および詳細における様々な省略、置換、および変更が、本開示から逸脱することなく当業者によりなされ得ることが理解されるであろう。前述の説明は、現在考えられる、本開示を実施する最良の形態に関するものである。この説明は、決して限定することを意味するものではなく、むしろ本開示の一般原理の例示として解釈されるべきである。本開示の範囲は、特許請求の範囲を参照して判断されるべきである。
【０１５１】
本開示を図面および前述の説明において詳細に例示および記載してきたが、そのような例示および説明は説明的または例示的であり、限定的ではないと見なされるべきである。本開示は、開示された実施形態に限定されない。開示された実施形態および／または実装態様に対する変形は、図面、本開示および添付の特許請求の範囲の検討から、特許請求された開示を実施する際に当業者によって理解され、達成され得る。
【０１５２】
本開示のある特定の特徴または態様を説明するときに特定の術語を使用することは、その術語が関連付けられている本開示の特徴または態様の任意の具体的な特性を含むように限定されるように、その術語が本明細書において再定義されていることを含意すると解釈されるべきではない。本出願で使用される用語および表現、ならびにとりわけ添付の特許請求の範囲中のその変形は、特に明記しない限り、限定ではなく非限定的なものとして解釈されるべきである。前述の例として、「含む（ｉｎｃｌｕｄｉｎｇ）」という用語は、「限定することなく含む（ｉｎｃｌｕｄｉｎｇ，ｗｉｔｈｏｕｔ  ｌｉｍｉｔａｔｉｏｎ）」、「含むがこれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」などを意味すると読まれるべきであり、本明細書で使用される「含む（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、「含む（ｉｎｃｌｕｄｉｎｇ）」、「含有する（ｃｏｎｔａｉｎｉｎｇ）」、または「によって特徴付けられる（ｃｈａｒａｃｔｅｒｉｚｅｄ  ｂｙ）」と同義であり、包括的かつ開放式であり、追加の列挙されていない要素または方法ステップを排除するものではなく、「有する（ｈａｖｉｎｇ）」という用語は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、「など（ｓｕｃｈ  ａｓ）」という用語は「限定することなく、〜など（ｓｕｃｈ  ａｓ，ｗｉｔｈｏｕｔ  ｌｉｍｉｔａｔｉｏｎ）」と解釈されるべきであり、「含む（ｉｎｃｌｕｄｅｓ）」という用語は、「含むがこれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、「例（ｅｘａｍｐｌｅ）」という用語は、考察における項目の例示的な例を提供するために使用され、それらの網羅的または限定的なリストではなく、「例として、しかし限定することなく（ｅｘａｍｐｌｅ，ｂｕｔ  ｗｉｔｈｏｕｔ  ｌｉｍｉｔａｔｉｏｎ）」として解釈されるべきであり、「既知の」、「普通の（ｎｏｒｍａｌ）」、「標準的な（ｓｔａｎｄａｒｄ）」などの形容詞および同様の意味の用語は、記載された項目を所与の期間または所与の時点で利用可能な物品に限定すると解釈されるべきではないが、代わりに、現在または将来の任意の時点で利用可能または既知となる可能性がある既知の、普通の、または標準的な技術を包含すると読まれるべきであり、「好ましくは（ｐｒｅｆｅｒａｂｌｙ）」、「好ましい（ｐｒｅｆｅｒｒｅｄ）」、「所望の（ｄｅｓｉｒｅｄ）」、または「望ましい（ｄｅｓｉｒａｂｌｅ）」などの用語の使用、および同様の意味の語句は、ある特定の特徴が本開示の構造または機能にとってクリティカル、不可欠、またはそれどころか重要であることを含意すると理解されるべきではないが、代わりに、単に特定の実施形態において利用されてもされなくてもよい代替または追加の特徴を強調することを意図したものとして理解されるべきである。同様に、接続詞「および（ａｎｄ）」によってリンクされた項目の群は、それらの項目のうちのひとつひとつがその群内に存在することを必要とするものとして読まれるべきではなく、むしろ特に明記しない限り「および／または（ａｎｄ／ｏｒ）」として読まれるべきである。同様に、接続詞「または（ｏｒ）」によってリンクされた項目の群は、そのグループ間の相互排他性を必要とするものとして読まれるべきではなく、むしろ特に明記しない限り「および／または（ａｎｄ／ｏｒ）」として読まれるべきである。「約（ａｂｏｕｔ）」または「およそ（ａｐｐｒｏｘｉｍａｔｅ）」などの用語は同義語であり、その用語によって修飾された値がそれに関連する理解された範囲を有することを示すために使用され、その範囲は±２０％、±１５％、±１０％、±５％、または±１％、であり得る。「実質的に（ｓｕｂｓｔａｎｔｉａｌｌｙ）」という用語は、結果（例えば、測定値）が目標値に近いことを示すために使用され、近いとは、例えば、結果がその値の８０％以内、その値の９０％以内、その値の９５％以内、またはその値の９９％以内であることを意味し得る。また、本明細書で使用される場合、「定義された（ｄｅｆｉｎｅｄ）」または「決定された（ｄｅｔｅｒｍｉｎｅｄ）」は、「事前に定義された（ｐｒｅｄｅｆｉｎｅｄ）」もしくは「事前に決定された（ｐｒｅｄｅｔｅｒｍｉｎｅｄ）」および／または他の方法で決定された値、条件、しきい値、測定値などを含み得る。
【図１Ａ】
2020512644.tif 000003
【図１Ｂ】
2020512644.tif 000004
【図１Ｃ】
2020512644.tif 000005
【図２】
2020512644.tif 000006
【図３】
2020512644.tif 000007
【図４】
2020512644.tif 000008
【図５Ａ】
2020512644.tif 000009
【図５Ｂ】
2020512644.tif 000010
【図６】
2020512644.tif 000011
【図７Ａ】
2020512644.tif 000012
【図７Ｂ】
2020512644.tif 000013
【図７Ｃ】
2020512644.tif 000014
【図７Ｄ】
2020512644.tif 000015
【図７Ｅ】
2020512644.tif 000016
【図８Ａ】
2020512644.tif 000017
【図８Ｂ】
2020512644.tif 000018
【図８Ｃ】
2020512644.tif 000019
【図８Ｄ】
2020512644.tif 000020
【図８Ｅ】
2020512644.tif 000021
【図８Ｆ】
2020512644.tif 000022
【図９Ａ】
2020512644.tif 000023
【図９Ｂ】
2020512644.tif 000024
【図９Ｃ】
2020512644.tif 000025
【図９Ｄ】
2020512644.tif 000026
【図９Ｅ】
2020512644.tif 000027
【図１０】
2020512644.tif 000028
【図１１】
2020512644.tif 000029
【図１２】
2020512644.tif 000030
【手続補正書】
【提出日】令和2年1月16日(2020.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロボットに対する軌道を決定するための方法であって、
環境に対応するコンピュータ可読マップに対するコストマップを生成することであって、前記コストマップが、前記環境内の空間の関数としてコスト関数を含み、前記コスト関数が、前記環境内の空間領域にわたってナビゲートするロボットに対する望ましさに比例しており、前記コストマップが、ロボット中心座標を含む、生成することと、
所定のマスクのマトリックスを受信することであって、それぞれの所定のマスクの各々が、ロボット中心座標および前記ロボットに対する関連付けられたアクチュエータコマンドを含む、受信することと、
所定のマスクの前記マトリックスを前記コストマップ上に投影することに基づいて、所定のマスクの前記マトリックスの各々に対するコストを評価することと、
前記それぞれの所定のマスクの最低の関連付けられたコストを決定することと、
最低の関連付けられたコストの前記所定のマスクの前記関連付けられたコマンドを実行することであって、前記関連付けられたアクチュエータコマンドの実行が、前記軌道の少なくとも一部分に沿った前記ロボットの動きを実施させる、実行することと、を含む、方法。
【請求項２】
前記コンピュータ可読マップを複数の点に離散化することと、
ナビゲート不能領域と関連付けられた、前記複数の点のうちの点を省略することと、
前記軌道に沿った経路部分の少なくとも１つのそれぞれのシーケンスの実行と関連付けられた少なくとも１つのコントローラ特性を決定することであって、前記コントローラ特性は、前記ロボットが、経路部分の前記少なくとも１つのシーケンスの各々を実行することによって点にわたってナビゲートするときの前記ロボットの複数の線速度ベクトルを含む、決定することと、
前記軌道の終点への最短経路およびそれに関連付けられた最短経路コントローラ特性を決定することと、
前記最短経路コントローラ特性の前記線速度ベクトルと前記マスクコントローラ特性の各々との間のドット積を実行して、前記ドット積に比例している関連付けられたコストを決定することと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記ナビゲート不能領域に近い前記複数の点のうちの点での前記ロボットのフットプリントを投影することと、
前記ロボットの前記フットプリントが前記ナビゲート不能領域の一部分を含む、前記複数の点のうちの点を省略することと、をさらに含み、前記フットプリントが、前記ロボットによって占有される空間領域以上の空間領域を含む、請求項２に記載の方法。
【請求項４】
前記軌道から所定の距離で前記コストマップ上に高コストの人工物領域を課すことをさらに含む、請求項１に記載の方法。
【請求項５】
所定のマスクが閾値未満の関連付けられたコストを含まないことに基づいて、回復条件が適用する場合、前記所定のマスクのうちの１つ以上を省略することをさらに含む、請求項１に記載の方法。
【請求項６】
前記コストマップ上の前記所定のマスクの前記投影が、所定のマスクの前記マトリックスと前記コストマップとの間のドット積を含む、請求項１に記載の方法。
【請求項７】
前記コストマップが、複数のコストピクセルを含み、各コストピクセルが、それに関連付けられたコストを含み、各コストピクセルが、前記環境内の空間領域に対応する、請求項１に記載の方法。
【請求項８】
ロボットシステムであって、
記憶された複数の命令を含む、非一時的コンピュータ可読記憶媒体と、
ロボットに連結された、１つ以上のプロセッサと、を備え、前記プロセッサは、前記命令を実行して、
環境に対応するコンピュータ可読マップに対するコストマップを生成することであって、前記コストマップが、前記環境内の空間の関数としてコスト関数を含み、前記コスト関数が、前記環境内の空間領域にわたってナビゲートするロボットに対する望ましさに比例しており、前記コストマップが、ロボット中心座標を含む、生成することと、
所定のマスクのマトリックスを受信することであって、それぞれの所定のマスクの各々が、ロボット中心座標および前記ロボットに対する関連付けられたアクチュエータコマンドを含む、受信することと、
所定のマスクの前記マトリックスを前記コストマップ上に投影することに基づいて、所定のマスクの前記マトリックスの各々に対するコストを評価することと、
前記それぞれの所定のマスクの最低の関連付けられたコストを決定することと、
最低の関連付けられたコストの前記所定のマスクの前記関連付けられたコマンドを実行することであって、前記関連付けられたアクチュエータコマンドの実行が、前記軌道の少なくとも一部分に沿った前記ロボットの動きを実施させる、実行することと、を行うように構成されている、ロボットシステム。
【請求項９】
前記１つ以上のプロセッサは、前記命令をさらに実行して、
前記コンピュータ可読マップを複数の点に離散化することと、
ナビゲート不能領域と関連付けられた、前記複数の点のうちの点を省略することと、
前記軌道に沿った経路部分の少なくとも１つのそれぞれのシーケンスの実行と関連付けられた少なくとも１つのコントローラ特性を決定することであって、前記コントローラ特性は、前記ロボットが、経路部分の前記少なくとも１つのシーケンスの各々を実行することによって点にわたってナビゲートするときの前記ロボットの複数の線速度ベクトルを含む、決定することと、
前記軌道の終点への最短経路およびそれに関連付けられた最短経路コントローラ特性を決定することと、
前記最短経路コントローラ特性の前記線速度ベクトルと前記マスクコントローラ特性の各々との間のドット積を実行して、前記ドット積に比例している関連付けられたコストを決定することと、を行う、請求項８に記載のロボットシステム。
【請求項１０】
前記１つ以上のプロセッサは、前記命令をさらに実行して、
前記ナビゲート不能領域に近い前記複数の点のうちの点での前記ロボットのフットプリントを投影することと、
前記ロボットの前記フットプリントが前記ナビゲート不能領域の一部分を含む、前記複数の点のうちの点を省略することと、を行い、前記フットプリントが、前記ロボットによって占有される空間領域以上の空間領域を含む、請求項９に記載のロボットシステム。
【請求項１１】
前記１つ以上のプロセッサは、前記命令をさらに実行して、
前記軌道から所定の距離で前記コストマップ上に高コストの人工物領域を課す、請求項８に記載のロボットシステム。
【請求項１２】
前記１つ以上のプロセッサは、前記命令をさらに実行して、
所定のマスクが閾値未満の関連付けられたコストを含まないことに基づいて、回復条件が適用する場合、前記所定のマスクのうちの１つ以上を省略する、請求項８に記載のロボットシステム。
【請求項１３】
前記コストマップ上の前記所定のマスクの前記投影が、所定のマスクの前記マトリックスと前記コストマップとの間のドット積を含む、請求項８に記載のロボットシステム。
【請求項１４】
前記コストマップが、複数のコストピクセルを含み、各コストピクセルが、それに関連付けられたコストを含み、各コストピクセルが、前記環境内の空間領域に対応する、請求項８に記載のロボットシステム。
【請求項１５】
非一時的コンピュータ可読記憶媒体であって、そこに記憶された複数の命令を含み、前記命令は、プロセッサによって実行されたときに、前記プロセッサに、
環境に対応するコンピュータ可読マップに対するコストマップを生成することであって、前記コストマップが、前記環境内の空間の関数としてコスト関数を含み、前記コスト関数が、前記環境内の空間領域にわたってナビゲートするロボットに対する望ましさに比例しており、前記コストマップが、ロボット中心座標を含む、生成することと、
所定のマスクのマトリックスを受信することであって、それぞれの所定のマスクの各々が、ロボット中心座標および前記ロボットに対する関連付けられたアクチュエータコマンドを含む、受信することと、
所定のマスクの前記マトリックスを前記コストマップ上に投影することに基づいて、所定のマスクの前記マトリックスの各々に対するコストを評価することと、
前記それぞれの所定のマスクの最低の関連付けられたコストを決定することと、
最低の関連付けられたコストの前記所定のマスクの前記関連付けられたコマンドを実行することであって、前記関連付けられたアクチュエータコマンドの実行が、前記軌道の少なくとも一部分に沿った前記ロボットの動きを実施させる、実行することと、を行わせるように構成されている、非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記プロセッサは、前記命令を実行して、
前記コンピュータ可読マップを複数の点に離散化することと、
ナビゲート不能領域と関連付けられた、前記複数の点のうちの点を省略することと、
前記軌道に沿った経路部分の少なくとも１つのそれぞれのシーケンスの実行と関連付けられた少なくとも１つのコントローラ特性を決定することであって、前記コントローラ特性は、前記ロボットが、経路部分の前記少なくとも１つのシーケンスの各々を実行することによって点にわたってナビゲートするときの前記ロボットの複数の線速度ベクトルを含む、決定することと、
前記軌道の終点への最短経路およびそれに関連付けられた最短経路コントローラ特性を決定することと、
前記最短経路コントローラ特性の前記線速度ベクトルと前記マスクコントローラ特性の各々との間のドット積を実行して、前記ドット積に比例している関連付けられたコストを決定することと、を行うようにさらに構成されている、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記プロセッサは、前記命令を実行して、
前記ナビゲート不能領域に近い前記複数の点のうちの点での前記ロボットのフットプリントを投影することと、
前記ロボットの前記フットプリントが前記ナビゲート不能領域の一部分を含む、前記複数の点のうちの点を省略することと、を行うようにさらに構成されており、前記フットプリントが、前記ロボットによって占有される空間領域以上の空間領域を含む、請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記プロセッサは、前記命令を実行して、
前記軌道から所定の距離で前記コストマップ上に、スカート、または高コストの人工物領域を課すようにさらに構成されている、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサは、前記命令を実行して、
前記軌道から所定の距離で前記コストマップ上に高コストの人工物領域を課すようにさらに構成されている、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記コストマップが、複数のコストピクセルを含み、各コストピクセルが、それに関連付けられたコストを含み、各コストピクセルが、前記環境内の空間領域に対応する、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2020512644.tif 000031
2020512644.tif 000032