(57)【特許請求の範囲】
【請求項１】
第１のロボットデバイスによって、前記第１のロボットデバイスに関する第１の時間パラメータ化経路を受信することであって、前記第１の時間パラメータ化経路は、前記第１のロボットデバイスの予定された位置の第１タイムラインを含む、前記第１の時間パラメータ化経路を受信することと、
前記第１のロボットデバイスによって、第１の位置で前記第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することであって、前記第２の時間パラメータ化経路は、前記第１の時間パラメータ化経路とは異なる経路であり、前記第２のロボットデバイスの予定された位置の第２タイムラインを含む、前記第２のロボットデバイスのインジケーションを受信することと、
前記第１のロボットデバイスによって、前記第１の位置に到達する前に前記第１の時間パラメータ化経路の第１の部分を実行することであって、前記第１の部分の実行は、前記第１の時間パラメータ化経路に沿った前記第１のロボットデバイスの第１の進捗率に対応しており、前記第１の進捗率は調和タイムラインと前記第１タイムラインとの時間差に基づいていることと、
前記第１のロボットデバイスによって、前記第２の時間パラメータ化経路に沿った前記第２のロボットデバイスの第２の進捗率を示す、前記第２のロボットデバイスからの通信信号を受信することであって、前記第２の進捗率は前記調和タイムラインと前記第２タイムラインとの時間差に基づいていることと、
前記調和タイムラインとの比較における前記第１の進捗率と前記第２の進捗率との進捗の時間差を決定することと、
前記第１のロボットデバイスによって、前記決定された時間差に基づいて、前記第１の時間パラメータ化経路の実行を修正することと、
を備える、方法。
【請求項２】
前記第１のロボットデバイスによって、前記第２の時間パラメータ化経路を受信することと、
前記第２の時間パラメータ化経路に基づいて、前記第１のロボットデバイスが、前記第２のロボットデバイスとの通信を確立する前記第１の時間パラメータ化経路に沿った位置を決定することと、
を更に備える、請求項１に記載の方法。
【請求項３】
前記第２の進捗率は、前記第２のロボットデバイスが所与の時間だけスケジュールに遅れていることを示し、前記第１の時間パラメータ化経路の実行を修正することは、前記第１のロボットデバイスが前記所与の時間だけスケジュールに遅れるように前記第１の時間パラメータ化経路の実行を修正することを備える、請求項１に記載の方法。
【請求項４】
前記第１のロボットデバイスによって、前記第１の時間パラメータ化経路の実行を修正することは、前記第１の時間パラメータ化経路の実行に遅延を加えることを備える、請求項１に記載の方法。
【請求項５】
前記第１のロボットデバイスによって、前記第１の時間パラメータ化経路の実行を修正することは、前記第１の時間パラメータ化経路の実行を停止することを備える、請求項１に記載の方法。
【請求項６】
前記第１の時間パラメータ化経路の実行を修正することは、前記第１のロボットデバイスが、前記第１の時間パラメータ化経路に沿って以前の位置へ引き返すことを備える、請求項１に記載の方法。
【請求項７】
前記第１のロボットデバイスによって、前記第１の時間パラメータ化経路の実行を修正することは、
前記第１の時間パラメータ化経路とは異なる代替位置および対応するタイムスタンプを備える代替の第１の時間パラメータ化経路を決定することと、
前記代替の第１の時間パラメータ化経路を実行することと、
を備える、請求項１に記載の方法。
【請求項８】
前記第１のロボットデバイスから前記第２のロボットデバイスへ命令を送信することを更に備え、前記命令は、前記第２のロボットデバイスに、前記決定された時間差に基づいて前記第２の時間パラメータ化経路の実行を加速させる、請求項１に記載の方法。
【請求項９】
前記第２の時間パラメータ化経路に沿った前記第２のロボットデバイスの前記第２の進捗率が、前記第１の時間パラメータ化経路に沿った前記第１のロボットデバイスの前記第１の進捗率よりも進んでいることを決定することを更に備え、前記第１のロボットデバイスによって、前記第１の時間パラメータ化経路の実行を修正することは、前記第１の時間パラメータ化経路の前記実行を加速させることを備える、請求項１に記載の方法。
【請求項１０】
前記第１の進捗率と前記第２の進捗率との前記時間差が閾値時間パディングよりも大きいことを決定することと、
前記第１のロボットデバイスによって、前記第１の進捗率と前記第２の進捗率との前記時間差が前記閾値時間パディングよりも大きいという前記決定に基づいて、前記第１の時間パラメータ化経路の前記実行を修正することと、
を更に備える、請求項１に記載の方法。
【請求項１１】
前記第１のロボットデバイスと第３のロボットデバイスとの間の通信を確立することと、
前記第１のロボットデバイスから前記第３のロボットデバイスへ、前記第２の時間パラメータ化経路に沿った前記第２のロボットデバイスの前記第２の進捗率のインジケーションを送信することと、
を更に備える、請求項１に記載の方法。
【請求項１２】
前記第１のロボットデバイスによって、前記第３のロボットデバイスへ、前記第１の時間パラメータ化経路に沿った前記第１のロボットデバイスの前記第１の進捗率を示す通信信号を送信することと、
前記第１の時間パラメータ化経路の実行を修正した後、（ｉ）前記第１のロボットデバイスの修正された進捗率を決定することと、（ｉｉ）前記第１のロボットデバイスによって、前記第３のロボットデバイスへ、前記修正された進捗率を示す通信信号を送信することと、
を更に備える、請求項１１に記載の方法。
【請求項１３】
第１のロボットデバイスと、
第２のロボットデバイスと、
を備え、
前記第１のロボットデバイスは、
前記第１のロボットデバイスに関する第１の時間パラメータ化経路を受信し、ここで前記第１の時間パラメータ化経路は、前記第１のロボットデバイスの予定された位置の第１タイムラインを含み、
第１の位置で前記第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する前記第２のロボットデバイスのインジケーションを受信し、ここで前記第２の時間パラメータ化経路は、前記第１の時間パラメータ化経路とは異なる経路であり、前記第２のロボットデバイスの予定された位置の第２タイムラインを含み、
前記第１の位置に到達する前に前記第１の時間パラメータ化経路の第１の部分を実行し、ここで前記第１の部分の実行は、前記第１の時間パラメータ化経路に沿った前記第１のロボットデバイスの第１の進捗率に対応し、ここで前記第１の進捗率は調和タイムラインと前記第１タイムラインとの時間差に基づいており、
前記第２の時間パラメータ化経路に沿った前記第２のロボットデバイスの第２の進捗率を示す、前記第２のロボットデバイスからの通信信号を受信し、ここで前記第２の進捗率は前記調和タイムラインと前記第２タイムラインとの時間差に基づいており、
前記調和タイムラインとの比較における前記第１の進捗率と前記第２の進捗率との進捗の時間差を決定し、
前記決定された時間差に基づいて、前記第１の時間パラメータ化経路の実行を修正するように構成される、システム。
【請求項１４】
前記第１のロボットデバイスは更に、
前記第２の時間パラメータ化経路を受信し、
前記第２の時間パラメータ化経路に基づいて、前記第２のロボットデバイスとの通信を確立する前記第１の時間パラメータ化経路に沿った位置を決定するように構成される、請求項１３に記載のシステム。
【請求項１５】
前記第１のロボットデバイスは更に、
前記第１の進捗率と前記第２の進捗率との前記時間差が閾値時間パディングよりも大きいことを決定し、
前記第１の進捗率と前記第２の進捗率との前記時間差が前記閾値時間パディングよりも大きいという前記決定に基づいて、前記第１の時間パラメータ化経路の前記実行を修正するように構成される、請求項１３に記載のシステム。
【請求項１６】
前記第１のロボットデバイスに関する前記第１の時間パラメータ化経路および前記第２のロボットデバイスに関する前記第２の時間パラメータ化経路を、環境の所定の接続性マップに基づいて、前記第１および第２の時間パラメータ化経路の各々が経路計画システムとの接続性を有する位置で開始および終了するように提供するように構成された前記経路計画システムを更に備える、請求項１３に記載のシステム。
【請求項１７】
前記第１の位置は、前記経路計画システムとの接続性を有さず、前記第１のロボットデバイスは更に、前記第１の位置を通過して前記経路計画システムとの接続性を有する領域に入った後、前記第２のロボットデバイスの前記第２の進捗率を前記経路計画システムへ報告するように構成される、請求項１６に記載のシステム。
【請求項１８】
実行されると、
第１のロボットデバイスに関する第１の時間パラメータ化経路を受信することであって、前記第１の時間パラメータ化経路は、前記第１のロボットデバイスの予定された位置の第１タイムラインを含む、前記第１の時間パラメータ化経路を受信することと、
第１の位置で前記第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することであって、前記第２の時間パラメータ化経路は、前記第１の時間パラメータ化経路とは異なる経路であり、前記第２のロボットデバイスの予定された位置の第２タイムラインを含む、前記第２の時間パラメータ化経路を受信することと、
前記第１の位置に到達する前に前記第１の時間パラメータ化経路の第１の部分を実行することであって、前記第１の部分を実行することは、前記第１の時間パラメータ化経路に沿った前記第１のロボットデバイスの第１の進捗率に対応しており、前記第１の進捗率は調和タイムラインと前記第１タイムラインとの時間差に基づいていることと、
前記第２の時間パラメータ化経路に沿った前記第２のロボットデバイスの第２の進捗率を示す、前記第２のロボットデバイスからの通信信号を受信することであって、前記第２の進捗率は前記調和タイムラインと前記第２タイムラインとの時間差に基づいていることと、
前記調和タイムラインとの比較における前記第１の進捗率と前記第２の進捗率との進捗の時間差を決定することと、
前記決定された時間差に基づいて、前記第１の時間パラメータ化経路の実行を修正することと、
を備える行動のセットを履行させる命令を格納している、非一時的コンピュータ可読媒体。
【請求項１９】
前記行動のセットは更に、
前記第２の時間パラメータ化経路を受信することと、
前記第２の時間パラメータ化経路に基づいて、前記第２のロボットデバイスとの通信を確立する前記第１の時間パラメータ化経路に沿った位置を決定することと、
を備える、請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記行動のセットは更に、
前記第１の進捗率と前記第２の進捗率との前記時間差が閾値時間パディングよりも大きいことを決定することと、
前記第１の進捗率と前記第２の進捗率との前記時間差が前記閾値時間パディングよりも大きいという前記決定に基づいて、前記第１の時間パラメータ化経路の前記実行を修正することと、
を備える、請求項１８に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
［0001］  本出願は、その全体が参照によって本明細書に組み込まれる、２０１６年１２月２３日に出願された米国特許出願第１５／３９０，０１３号に対する優先権を主張するものである。
【背景技術】
【０００２】
［0002］  １または複数のロボットおよび／またはたとえば人間の行為者などの他の行為者は、共にタスクを実行および／または空間を利用するために、たとえば建物の一部または全部の内部および／またはその周囲の屋外領域などの空間全体を移動してよい。建物の一例は、製造業者、卸売業者、および輸送業者を含む様々な種類の商業団体によって物品の保管のために用いられ得る倉庫である。保管される物品の例は、原材料、部材または部品、包装材料、および完成品を含んでよい。場合によっては、倉庫は、配送トラックまたは他の種類の車両へ商品が荷積みされ、そこから荷下ろしされることを可能にする搬出口を備えてよい。また倉庫は、箱または他の物体の積み重ねを収容する平坦な搬送構造であるパレットの保管を可能にするパレットラックの列を用いてよい。また、倉庫は、たとえばクレーンおよびフォークリフトなど、物品または物品パレットを持ち上げ移動するための機械または車両を用いてよい。人間のオペレータは、機械、車両、および他の機器を操作するために倉庫に雇用され得る。場合によっては、機械または車両の１または複数は、コンピュータ制御システムによって動かされるロボットデバイスであってよい。
【０００３】
［0003］  移動ロボットデバイスは、様々なタスクを遂行するために数々の様々な環境で用いられ得る。たとえば、移動ロボットデバイスは、たとえば倉庫、病院、および／またはデータセンタなどの屋内環境において、たとえば部材または完成品などの物品を配送してよい。移動ロボットデバイスが展開される場合、これらは、配送位置および／または他の位置と行き来する１または複数の可能な経路を用いてよい。これらの経路は、１または複数のルート計画アルゴリズムを用いて決定され得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
［0004］  本出願は、環境内で移動するエージェントの調和のためのマルチエージェント計画フレームワークに関連する実装を開示する。中で動作する複数のエージェントを有する環境において、調和経路は、エージェントが互いに衝突することなく環境内で動作することを可能にするように、各エージェントに関して生成され得る。調和経路は、様々な調和経路を実行するロボットデバイスが同調し、互いに衝突しないように、互いに同期され得る。特に、様々なロボットデバイスによる複数の調和経路の同時実行のために、各調和経路が同調される全体タイムラインが存在し得る。
【０００５】
［0005］  一例において、本出願は、方法を説明する。方法は、第１のロボットデバイスによって、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信することを含む。また方法は、第１のロボットデバイスによって、第１の位置で第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することも含む。方法は更に、第１のロボットデバイスによって、第１の位置に到達する前に第１の時間パラメータ化経路の第１の部分を実行することを含み、第１の部分の実行は、第１の時間パラメータ化経路に沿った第１のロボットデバイスの第１の進捗率に対応する。方法はまた更に、第１のロボットデバイスによって、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信信号を受信することを含む。また方法は、第１の進捗率と第２の進捗率との差を決定することも含む。方法はまた更に、第１のロボットデバイスによって、決定された差に基づいて第１の時間パラメータ化経路の実行を修正することを含む。
【０００６】
［0006］  第２の例において、システムが説明される。システムは、第１のロボットデバイスおよび第２のロボットデバイスを含む。第１のロボットデバイスは、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信するように構成される。また第１のロボットデバイスは、第１の位置で第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信するようにも構成される。また第１のロボットデバイスは、第１の位置に到達する前に第１の時間パラメータ化経路の第１の部分を実行するようにも構成され、第１の部分の実行は、第１の時間パラメータ化経路に沿った第１のロボットデバイスの第１の進捗率に対応する。第１のロボットデバイスは更に、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信信号を受信するように構成される。第１のロボットデバイスはまた更に、第１の進捗率と第２の進捗率との差を決定するように構成される。第１のロボットデバイスはまた更に、決定された差に基づいて第１の時間パラメータ化経路の実行を修正するように構成される。
【０００７】
［0007］  第３の例において、非一時的コンピュータ可読媒体が説明される。非一時的コンピュータ可読媒体は、実行されると、行動のセットを履行させる命令を格納している。行動のセットは、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信することを含む。また行動のセットは、第１の位置で第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することも含む。行動のセットは更に、第１の位置に到達する前に第１の時間パラメータ化経路の第１の部分を実行することを含み、第１の部分の実行は、第１の時間パラメータ化経路に沿った第１のロボットデバイスの第１の進捗率に対応する。行動のセットはまた更に、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信信号を受信することを含む。行動のセットはまた更に、第１の進捗率と第２の進捗率との差を決定することを含む。また行動のセットは、決定された差に基づいて第１の時間パラメータ化経路の実行を修正することも含む。
【０００８】
［0008］  他の例において、制御システムが説明される。制御システムは、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信するための手段を含む。また制御システムは、第１の位置で第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信するための手段も含む。制御システムは更に、第１の位置に到達する前に第１の時間パラメータ化経路の第１の部分を実行するための手段を含み、第１の部分の実行は、第１の時間パラメータ化経路に沿った第１のロボットデバイスの第１の進捗率に対応する。制御システムはまた更に、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信信号を受信するための手段を含む。また制御システムは、第１の進捗率と第２の進捗率との差を決定するための手段も含む。制御システムは更に、決定された差に基づいて第１の時間パラメータ化経路の実行を修正するための手段を含む。
【０００９】
［0009］  上記概要は、例示にすぎず、いかなるようにも限定することは意図されていない。上述した例示的な態様、実施形態、および特徴に加えて、更なる態様、実施形態、および特徴が、図および以下の詳細な説明および添付図面を参照することによって明らかになる。
【図面の簡単な説明】
【００１０】
【図１】［0010］実施形態例に係る、システムのブロック図である。
【図２】［0011］実施形態例に係る、１または複数の倉庫を運営するためのシステムを示す。
【図３】［0012］実施形態例に係る、システムを示す。
【図４】［0013］実施形態例に係る、１または複数のロボットデバイスのためのロボットデバイスアーキテクチャを示す。
【図５】［0014］実施形態例に係る、１または複数のロボットデバイスのためのレーザスキャナアーキテクチャを示す。
【図６Ａ】［0015］実施形態例に係る、コンピューティングデバイスの例の機能ブロック図である。
【図６Ｂ】［0016］実施形態例に係る、クラウドベースサーバシステムとして構成されたコンピューティングクラスタのネットワークを示す。
【図７】［0017］実施形態例に係る、環境の例を示す。
【図８Ａ】［0018］本開示の実施形態の実行中の時間における４つの段階のシーケンスの例を示す。
【図８Ｂ】［0018］本開示の実施形態の実行中の時間における４つの段階のシーケンスの例を示す。
【図８Ｃ】［0018］本開示の実施形態の実行中の時間における４つの段階のシーケンスの例を示す。
【図８Ｄ】［0018］本開示の実施形態の実行中の時間における４つの段階のシーケンスの例を示す。
【図９Ａ】［0019］本開示の実施形態の実行中の時間における４つの段階のシーケンスの第２の例を示す。
【図９Ｂ】［0019］本開示の実施形態の実行中の時間における４つの段階のシーケンスの第２の例を示す。
【図９Ｃ】［0019］本開示の実施形態の実行中の時間における４つの段階のシーケンスの第２の例を示す。
【図９Ｄ】［0019］本開示の実施形態の実行中の時間における４つの段階のシーケンスの第２の例を示す。
【図１０】［0020］実施形態例に係る、方法のフローチャートである。
【発明を実施するための形態】
【００１１】
［0021］  以下の詳細な説明は、添付図面を参照して開示されるデバイス、システム、および方法の様々な特徴および機能を説明する。本明細書で説明される例示的なデバイス、システム、および方法の実施形態は、限定的であることが意図されない。「典型的」、「例」、および「例示的」という言葉は本明細書において、「例、例証、または実例としての役割を果たすこと」を意味するように用いられることを理解すべきである。「典型的」、「例」、または「例示的」として本明細書で説明される任意の実装、実施形態、または特徴は、必ずしも他の実装、実施形態、または特徴よりも好適または有利であるものとして解釈されない。また、本明細書で説明される実装および実施形態は、限定的であることが意図されない。開示されるデバイス、システム、および方法の特定の態様は異なる様々な構成で配置および結合されてよく、それら全てが本明細書において考慮されることが容易に理解される。また、以下の詳細な説明は、添付図面を参照して本開示の様々な特徴および機能を説明する。図において、類似の記号は一般に、特に例外が明記されない限り、類似の構成要素を識別する。
Ｉ．概観
【００１２】
［0022］  たとえば倉庫などの環境におけるロボットナビゲーションは、自律ロボットデバイスが、持続的な人間の制御を必要とせずに１または複数の行動を実行する能力を可能にし得る。複数のロボットデバイスを有する環境において、ロボットデバイスの動きは、たとえばそれらが互いに、または環境内の物体と衝突しないように、互いに調和され得る。また、エージェントの衝突の回避および効率的な動作の維持を支援するために、集中管理システムによるエージェントの持続的な通信および／または制御が存在し得る。継続的な通信および／または制御がない場合（すなわち、乏しいネットワーク接続の場合）、エージェントによる経路の実行における変動またはずれが、エージェント間または環境との衝突および他の予期せぬ動作エラーをもたらし得る。たとえば大規模倉庫などのいくつかの環境は、疎なＷｉＦｉまたは他のネットワークカバレージに起因する、エージェントと集中管理システムとの間の接続に関する問題を有し得る。たとえばいくつかの倉庫は、倉庫のサイズ、倉庫に収容された物品または壁の材料、または信号源または反応器の欠如によって、特定のエリアにおいて限られた信号強度を有し得る。
【００１３】
［0023］  本明細書に開示される実施形態例は、集中制御システムへのアクセスが制限され、または乱れた状態でも、環境内で動作する複数のエージェントによる調和経路の実行を可能にし得る。１または複数のエージェントが、それぞれの経路のスケジュールされた実行から逸脱した場合、実施形態例は、エージェントが、中央プランナからの通信または補正なしで、それぞれの経路の実行および動作を継続することを可能にし得る。また、エージェントは、それぞれの進捗率、状態、エラー、ずれ、またはそれぞれの経路の実行に関する他の情報を伝搬するために、アドホックベースで互いに通信してよい。
【００１４】
［0024］  ロボットデバイスは、タスクを与えられる時、ロボットデバイスのスケジュールされた位置、タイミング、速度、方向、および／またはロボットデバイスがタスクを実行することができるようなロボットデバイスに関する他の情報を含み得る対応する時間パラメータ化経路も付与され得る。いくつかの例において、複数のロボットデバイスは、同時に、またはある程度の重なる時間、同じ環境内で実行すべきタスクを有し得る。環境全体を同時に移動する複数のロボットデバイスが存在してよく、各ロボットデバイスは、辿るべきそれぞれの時間パラメータ化経路を与えられ得る。また、時間パラメータ化経路は、任意の特定の時点に関して、２つのロボットデバイスが同じ位置を占めるようにスケジュールされないように設計、生成、または選択され得る。
【００１５】
［0025］  実際、それぞれの時間パラメータ化経路を実行する１または複数のロボットデバイスは、予定よりも速くまたは遅く移動し、予定外の停止または経路逸脱をもたらし、あるいは時間パラメータ化経路の予定の実行から逸脱することがある。時間パラメータ化経路が、開始点および終了点を有するタイムラインとして考えられる場合、所与のロボットデバイスは、関連する時間パラメータ化経路のスケジュールされた実行より進みまたは遅れることがある。実行におけるこれらの差は、たとえばロボットデバイス間の衝突、どこへも移動できない位置で立ち往生するロボットデバイス、またはいくつもの問題などの問題を招き得る。これらの問題を解決しようとする１つの方法は、衝突、行き止まり、またはロボットデバイスが問題に陥る状況を回避するための命令を提供するために、集中計画システムにロボットデバイスと通信させることである。
【００１６】
［0026］  しかし、上述したように、いくつかの環境は、環境内の全ての場所で常時ロボットデバイスと集中計画システムとの間の通信に寄与できるわけではない。たとえば、倉庫は、倉庫の片側にあるオフィス付近の位置にＷｉＦｉルータを有し得るが、ＷｉＦｉ信号は倉庫の全域に到達しないことがある。ロボットデバイスは、フロントオフィス付近にあるＷｉＦｉルータによる通信を介して、時間パラメータ化経路を含む集中計画システムからの命令を受信してよい。しかし、時間パラメータ化経路がロボットデバイスをフロントオフィスから遠く離れた位置へ向かわせると、集中計画システムはロボットデバイスと通信することができず、更新された命令または代替時間パラメータ化経路を提供することができず、エラーが生じることになる。
【００１７】
［0027］  これらの概念を念頭に置き、本明細書に開示される方法の例は、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信する第１のロボットデバイスを含んでよい。第１の時間パラメータ化経路は、集中計画システム（または経路計画システム）から受信されてよく、他の時間パラメータ化経路と衝突しないように生成、選択、または作成され得る。第１の時間パラメータ化経路は、第１のロボットデバイスが任意の所与の時間に存在するようにスケジュールまたは予定された、経路の位置、エリア、セグメント、または他の部分のタイムラインであってよい。
【００１８】
［0028］  方法は、第１のロボットデバイスが、第１の位置で第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することも含んでよい。本明細書で論述されるように、別の時間パラメータ化経路と重なる１つの時間パラメータ化経路は、第１の経路が第２の経路と同じエリアを横断またはカバーする任意の段階を含んでよい。また、２つの経路は、第１の時間パラメータ化経路に対応するロボットデバイスの掃引空間が、対応する第２の時間パラメータ化経路を有する第２のロボットデバイスの任意の空間を占める場合、重なり得る。更に、重なり合う２つの経路は、無関係またはタイミング要素と考えられ得る。本明細書に開示される実施形態は、ロボットデバイスの１または両方がスケジュールから外れた場合、ロボットデバイスのペアがそれぞれの時間パラメータ化経路に沿って衝突する可能性のある任意の場所である重なりと関係する。たとえば重なりは、ロボットデバイスが環境を通ることがスケジュールされる時不変経路が、第２のロボットデバイスの時不変経路（両方のロボットデバイスの掃引エリアを含む）と衝突する任意の場所であってよい。
【００１９】
［0029］  第２のロボットデバイスのインジケーションは、第２のロボットデバイスを第１のロボットデバイス付近へ向かわせる第２の時間パラメータ化経路を辿ることが予想される第２のロボットデバイスに対応してよい。実際、第１および第２のロボットデバイスは、第１の位置またはその付近で互いに近付くことが予想され得る。この第１の位置が通信不感帯である場合、集中計画システムは、第１および／または第２のロボットデバイスがスケジュールから外れている場合の命令を提供することができない。
【００２０】
［0030］  方法はその後、第１のロボットデバイスが、第１の時間パラメータ化経路が第２の時間パラメータ化経路と重なる位置より前の位置へ移動することによって、第１の時間パラメータ化経路の実行を開始することを含んでよい。第１の時間パラメータ化経路の実行中、第１のロボットデバイスは、所与の時間に基づいてスケジュールまたは予定される位置と実際の位置とを比較することによって、自身の進捗率を決定してよい。たとえば、第１の時間パラメータ化経路は、第１のロボットデバイスが実行の最初の１０秒間で１０メートル移動することを含んでよい。第１のロボットデバイスは、この時間に実際は９．５メートル移動し、わずかにスケジュールに遅れ得る。進捗率は、距離、時間、距離／時間、または他の任意のメトリック単位で測定され得る。「進捗率」という用語は、本明細書において、スケジュールされた時間パラメータ化経路に沿ったロボットデバイスの進捗の程度を示す任意の測定値を指すように用いられる。第１の時間パラメータ化経路の実行の開始後、第１のロボットデバイスは、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信を受信してよい。
【００２１】
［0031］  理想的な世界では、時間パラメータ化経路は、ロボットデバイスによる完璧な実行がエラー、衝突、遅延、または他の問題をもたらさないように選択され得る。時間パラメータ化経路は、ロボットデバイスが、衝突が起こらないように位置へ移動し十分な時間を互いに与えるように設計され得る。しかし、第１および第２のロボットデバイスのいずれかまたは両方が、スケジュールに遅れる、またはスケジュールより進むことによって、自身の時間パラメータ化経路の不完全な実行をもたらすことがある。その結果、第１の進捗率と第２の進捗率との差が、ロボットデバイス間の相対差をもたらす。各ロボットデバイスが同じ秒数だけスケジュールより進むまたは遅れる場合、限られた衝突のリスクしかない。しかし、１つのロボットデバイスがスケジュールに遅れ、他方のロボットデバイスがそうではない場合、衝突または他の動作エラーのリスクが存在し得る。
【００２２】
［0032］  第１の進捗率と第２の進捗率との差に基づいて、第１のロボットデバイスは、第１の時間パラメータ化経路の実行を修正してよい。いくつかの例において、この修正は、第２のロボットデバイスの実行に存在する任意の遅延が第１のロボットデバイスに伝搬し、その結果両方のロボットデバイスが同じ程度遅れるように、進捗率を同期させることを伴ってよい。あるいは、第１または第２のロボットデバイスのいずれかが、減速または加速し、完全に停止し、異なるルートまたは経路をとり、以前の位置まで引き返し、他方のロボットデバイスに何らかの行動を実行させる命令を送信し、あるいは時間パラメータ化経路の実行を変更してよい。
【００２３】
［0033］  ３つ以上のロボットデバイスを有する環境において、第１および／または第２のロボットデバイスの進捗率は、１つのロボットデバイスによる実行の遅延がロボットデバイス隊全体に伝搬されるように、他のロボットデバイスへ送信され得る。このように、環境内で動作する全てのロボットデバイスの全部またはサブセットは、１つのロボットデバイスによる実行の遅延がこれを予定スケジュールから逸脱させた場合でも、衝突または他のエラーのリスクなく動作することができる。
ＩＩ．システム設計例
【００２４】
［0034］  図１は、実施形態例に係る、システム１００のブロック図である。システム１００は、計画システム１１０およびロボットデバイス１２０を含む。計画システム１１０は、環境内で動作する１または複数のロボットデバイスの動きを調和させ得るオフボードプランナ１１２を含んでよい。オフボードプランナ１１２は、ロードマッププランナ１１４を含んでよい。オフボードプランナ１１２および／またはロードマッププランナ１１４は、たとえばロボットデバイス１２０などのロボットデバイスが環境内で動作中に辿る１または複数の非同期経路１１６を生成してよい。
【００２５】
［0035］  たとえば図３に関連して後述する写真版グラフ３００などの、ロードマップグラフ、写真版グラフ、または環境を表す他のロードマップは、受信、決定、または他の方法で計画システム１１０、オフボードプランナ１１２、および／またはロードマッププランナ１１４へ提供され得る。非同期経路１１６は、ロードマップグラフ、写真版グラフ、または他のロードマップに基づく１または複数の経路であってよい。たとえば、ロードマップグラフ、写真版グラフ、または他のロードマップが、複数の交差点に接続する複数のエッジを有する場合、非同期経路１１６は、複数のエッジおよび／または複数の交差点に関して特定され得る。
【００２６】
［0036］  ロボットデバイス（複数も可）１２０は、オンボードソフトウェア１３０および／またはハードウェア１５０を含んでよい。オンボードソフトウェア１３０は、位置測定サブシステム１３２、障害物検出サブシステム１３４、オドメトリサブシステム１３６、経路追従サブシステム１３８、および軌道追従サブシステム１４２の１または複数を含んでよい。位置測定サブシステム１３２は、ロボットデバイスの位置測定、すなわち環境におけるロボットデバイスの位置を決定するために用いられ得る。位置測定サブシステム１３２は、ロボットデバイスおよび／またはロボットデバイスを位置測定するために用いられ得る他の物体の位置推定値を生成し、ロボットデバイスがたとえば非同期経路１１６などの経路を辿ることを支援し、および／またはロボットデバイスがたとえば軌道１４０などの軌道を辿ることを支援してよい。位置推定値が生成されると、位置測定サブシステム１３２は、位置推定値を経路追従サブシステム１３８へ提供してよい。
【００２７】
［0037］  非同期経路または短距離経路は、時不変プラン、またはロボットデバイス１２０がどのように出発点ＳＰから終着点ＥＰへ移動し得るかを示す他の情報であってよく、すなわち、（非同期）経路は時間を考慮しない。対照的に、軌道は、ロボットデバイス１２０が計画時間間隔ごとに辿り得る、操舵角およびトラクションモータ速度の値を含んでよい。
【００２８】
［0038］  計画時間間隔は、ロボットデバイスが経路、ルート、および／または行程を辿るようにガイドまたは計画された持続時間であってよい。いくつかの実施形態において、計画時間間隔は、たとえば５秒、１秒、０．２秒、または０．１秒など、所定の時間であってよい。特に、所定の計画時間間隔は、計画時間間隔の値を指定するユーザ入力に基づいて決定され得る。他の実施形態において、計画時間間隔は、たとえばステッチ時間、均一エッジ（または経路）コストに関連する時間、軌道に沿って移動するための推定時間など、１または複数の他の値に基づいて決定され得る。計画時間間隔および計画時間間隔の値を決定するための他の技術も可能である。
【００２９】
［0039］  その後、１または複数の軌道は、ロボットデバイス１２０がどのように出発点ＳＰから終着点ＥＰへ移動し得るかを時変方式で表すために用いられ得る。いくつかの実施形態において、軌道は、たとえば限定ではないがロボットデバイス１２０の他の運動学的変数（たとえば速度および加速度）およびロボットデバイス１２０のアクチュエータ位置など、計画時間間隔にわたる操舵角およびトラクションモータ速度以外の変数の値に関する情報も提供してよい。
【００３０】
［0040］  一例として、「ホーム」位置から「ワーク」位置へ車を運転する経路は、たとえば人間または自律車両の制御デバイスなどの制御エンティティがホームからワークへ車を運転するために用い得る車道の順序付きリストを含んでよい。この例において、ホームからワークへの軌道は、制御エンティティがホームからワークへ車を運転するために用い得る速度および／または加速度を指定する１または複数の命令を伴ってよい。いくつかの例において、軌道は、交通量、障害物、天候、および他の時間依存条件を考慮してよく、たとえば、ホームからワークへ向かう軌道は、制御エンティティが「１０秒以内に２０ＭＰＨ以下で右折する」、「５５ＭＰＨまで加速し３分間直進する」、「３０秒以内に２０ＭＰＨまで減速する」、「１０秒以内に２０ＭＰＨ以下で左折する」ことなどを示してよい。いくつかの実施形態において、軌道は、たとえば障害物、経路の変化などを考慮するために途中で変更され得る。
【００３１】
［0041］  障害物検出サブシステム１３４は、１または複数の障害物がロボットデバイス１２０の経路および／または軌道を遮断しているかを決定してよい。これらの障害物の例は、パレット、パレットから落下した可能性のある物体、ロボットデバイス、および環境内で働く人間オペレータを含んでよいが、これに限定されない。障害物が検出された場合、障害物検出サブシステム１３４は、障害物検出を示す１または複数の通信を経路追従サブシステム１３８へ提供してよい。障害物検出を示す１または複数の通信は、障害物検出サブシステム１３４によって検出された１または複数の障害物の１または複数の位置に関する位置情報、および／または障害物検出サブシステム１３４によって検出された１または複数の障害物に関する識別情報を含んでよい。オドメトリサブシステム１３６は、たとえばサーボドライブ１５２からのデータなどのデータを用いて、ロボットデバイス１２０の位置の１または複数の変化を経時的に推定してよい。
【００３２】
［0042］  経路追従サブシステム１３８および／または軌道追従サブシステム１４２は、ロボットデバイス１２０に搭載されたプランナとして機能してよい。このオンボードプランナは、位置測定サブシステム１３２によって提供された位置推定値に基づいて、たとえば非同期経路１１６などの１または複数の経路を辿ってよい。
【００３３】
［0043］  経路追従サブシステム１３８は、非同期経路１１６、位置測定サブシステム１３２からの位置推定値入力、障害物検出サブシステム１３４からの１または複数の障害物の１または複数の位置に関する位置情報、および／またはオドメトリサブシステム１３６からの１または複数の位置の変化に関する情報を受信し、１または複数の軌道１４０を出力として生成してよい。
【００３４】
［0044］  ハードウェア１５０は、サーボドライブ１５２および／またはモータ１５４を含んでよい。サーボドライブ１５２は、１または複数のサーボドライブを含んでよい。サーボドライブ１５２は、１または複数のサーボメカニズムに動力供給するために用いられる電子増幅器を含んでよく、および／またはサーボメカニズム（複数も可）からのフィードバック信号を監視してよい。サーボドライブ１５２は、オンボードソフトウェア１３０から、たとえば軌道１４４などの制御信号を受信し、制御信号に比例する動きを生成するためにサーボメカニズム（複数も可）へ電流を供給してよい。いくつかの実施形態において、サーボドライブ１５２は、サーボメカニズム（複数も可）から受信したステータス情報と、軌道１４４によって命令される予定ステータスとを比較してよい。その後、サーボドライブ１５２は、受信ステータス情報と予定ステータスとの間のずれを補正するために、供給した電流の電圧周波数またはパルス幅を調整してよい。他の実施形態において、サーボドライブ１５２は、たとえばフィードバック信号および／または位置関連情報などの情報をオンボードソフトウェア１３０へ提供してよい。
【００３５】
［0045］  １または複数のモータ１５４は、サーボドライブ１５２によって動かされるサーボメカニズム（複数も可）の一部または全部であってよい。たとえばモータ１５４は、ロボットデバイス１２０の一部または全部を駆動するための機械力を生成するためにサーボドライブ１５２によって供給される電流を用いてよく、たとえばモータ１５４は、ロボットデバイス１２０を推進させ、および／またはロボットデバイス１２０の１または複数のエフェクタを駆動する力を供給してよい。
【００３６】
［0046］  たとえば倉庫、オフィスビル、または住居などの屋内環境、および／またはたとえば公園、駐車場、または庭などの屋外環境を含む環境におけるロボットデバイスの経路計画は、たとえばロボットデバイスなどのエージェントが辿り得る経路の連結グラフであるロードマップグラフに関して実行され得る。環境内でのエージェントルート指定を計画するために自由空間アプローチではなくロードマップグラフを用いることによって、全体計画状態空間が低減され、大規模マルチエージェント調和を扱いやすくすることができる。また、ロードマップグラフの使用により、オペレータは、ロボットデバイスの通行が許可されたエリアを直感的に制御することが可能である。
【００３７】
［0047］  ロードマップグラフ生成は、第１に、レーンの大まかな位置および移動方向を示す写真版グラフの生成を伴ってよい。いくつかの例において、写真版グラフは、ロボットデバイスの移動方向およびレーンを示す有向グラフであってよい。他の例において、写真版グラフは、環境の図またはマップに基づいて手動で生成され得る。
【００３８】
［0048］  図２は、実施形態例に係る、１または複数の倉庫を運営するためのシステム２００を示す。システム２００は、倉庫管理システム２１０、計画システム１１０、およびロボットデバイス１２０を含む。倉庫管理システム２１０は、たとえば１または複数の物品を倉庫に保管する要求および／または１または複数の物品を倉庫から出荷する要求などの、倉庫に関連する１または複数の物流要求２１２を受信してよい。倉庫管理システム２１０は、物流要求２１２を１または複数の行動２１４に変換してよく、行動２１４は、１または複数の指定されたエージェントを１または複数の指定位置へ移動させるための「移動」行動、および１または複数の物品を１または複数の指定位置へ搬送するための「輸送」行動を含んでよいが、これに限定されない。いくつかの例において、行動２１４は、｛エージェントＩＤ、宛先｝形式の移動コマンドであってよいが、たとえばパレットの移動などの他の行動も可能である。しかしこれらは一般に、移動コマンド（ピック位置への移動、載置位置への移動）に分解することができる。
【００３９】
［0049］  計画システム１１０は、オフボードプランナ１１２および実行部２２０を含む。オフボードプランナ１１２は、行動２１４を入力として受信し、たとえば複数のロボットデバイスなどの、倉庫内で動作する１または複数のエージェントが行動２１４を実行するための１または複数の調和経路２１６を生成してよい。調和経路２１６は、倉庫内のエージェント全てが物流要求２１２を履行するための調和行動計画の一部であってよい。調和行動計画は、エージェントの優位性を考慮してよく、たとえばロボットデバイスＲＤ１およびＲＤ２の両方がほぼ同時に地点に到達すると予想される場合、たとえばロボットデバイスＲＤ１はロボットデバイスＲＤ２が地点を通過するまで待機する（またはその逆である）ように、ロボットデバイスの一方が他方に対し優位性または優先権を有してよい。実行部２２０は、調和経路２１６を受信し、ロボットデバイス１２０に、自身の調和行動計画の一部の遂行において行動２１４を実行し物流要求２１２を履行するように指示するために、非衝突サブ経路２２２を生成してよい。
【００４０】
［0050］  図２において上述したように、オフボードプランナ１１２および実行部２２０を含む計画システム１１０は、ロボットデバイス１２０と通信してよい。いくつかの実施形態において、ロボットデバイスは、たとえば任意のＯＳＨＡクラス１またはクラス３動力付き産業トラックなどのフォークトラックであってよい。他の実施形態において、計画システム１１０は、「クラウド」に存在する１または複数のネットワーク型コンピューティングデバイス（たとえば１または複数のネットワーク型コンピューティングデバイス）および／またはロボットデバイス１２０と同じ場所にある建物内のどこかに位置する１または複数のネットワーク型コンピューティングデバイスを用いて実行するソフトウェアを含んでよい。
【００４１】
［0051］  いくつかの実施形態において、オフボードプランナ１１２および実行部２２０は、同期され得る。実施形態例において、オフボードプランナ１１２および実行部２２０は、たとえば計画システム１１０またはロボットデバイス１２０などの１つのデバイスに実装され、デバイス内で同期され得る。他の実施形態例において、オフボードプランナ１１２および実行部２２０は、１または複数のデバイスにおいて同期的に行動してよい。
【００４２】
［0052］  図３は、実施形態例に係る、ネットワーク３１８を用いて接続された、物流インタフェース３１０、倉庫管理システム２１０、および１または複数のロボットデバイス１２０を含むシステム３００を示す。物流インタフェース３１０は、たとえばパレットなどの物体および／またはロボットデバイスの倉庫管理システム２１０への移動に関する棚卸タスク命令を、ネットワーク３１８を介して倉庫管理システム２１０へ提供してよい。棚卸タスクの例は、種類Ｂの物品を収容するパレットＡを位置Ｃへ運ぶことであってよい。
【００４３】
［0053］  倉庫管理システム２１０は、物流インタフェース３１０から棚卸タスク命令を受信し、１または複数のタスク／ミッション命令（たとえばロボットデバイスＡにパレットＢを位置Ｃから位置Ｄへ移動させる命令）および／または棚卸タスク命令を実行するようにロボットデバイス（複数も可）１２０を制御するための計画を生成してよい。タスク／ミッション命令および／または計画は、１または複数の経路および／または１または複数の軌道に関する情報を含んでよく、タスク／ミッション命令（複数も可）、計画（複数も可）、経路（複数も可）、および軌道（複数も可）は、図１、図２、および図６〜図７に関して説明される技術を用いて倉庫管理システム２１０の計画システム１１０によって生成される。
【００４４】
［0054］  たとえば、倉庫管理システム２１０は、たとえばサーバコンピューティングデバイスなどの１または複数のコンピューティングデバイスを用いてデータを実行および格納する集中制御サービスであってよい。これらのタスクを実行するために、倉庫管理システム２１０は、ＷＭＳミドルウェアを含んでよく、システム３００を監視および管理するためのツールへのアクセスを提供するユーザインタフェースを提供してよい。ＷＭＳミドルウェアおよび／または倉庫管理システム２１０の他の構成要素は、タスク／ミッション命令（たとえばロボットデバイスＡにパレットＢを位置Ｃから位置Ｄへ移動させる命令）からロボットデバイスの経路、姿勢、および／または軌道への変換、棚卸タスクとタスク／ミッション命令との間の変換、およびＡＰＩ間での変換のために、たとえばプロトコル変換ＡＰＩなどの１または複数のアプリケーションプログラミングインタフェース（ＡＰＩ）を用いてよい。
【００４５】
［0055］  倉庫管理システム２１０によって提供されるユーザインタフェースは、たとえば１または複数のロボットデバイスの位置、バッテリ状態、充電状態などに関するデータの提示など、ロボットデバイス（複数も可）１２０を監視すること、棚卸タスク命令（複数も可）、タスク／ミッション命令（複数も可）、計画（複数も可）、経路（複数も可）、および／または軌道（複数も可）の生成およびロボットデバイス（複数も可）１２０の１または複数への送信を可能にすること、および１または複数の倉庫マップ、パレット、ネットワーク、および／または計画システム（たとえば計画システム１１０、倉庫管理システム２１０、および／または物流インタフェース３１０）に関するデータを再検討、更新、削除、および／または挿入することを含むがこれに限定されない、システム３００に関する１または複数のユーザインタフェース機能を提供してよい。
【００４６】
［0056］  いくつかの実施形態において、倉庫管理システム２１０は、物流インタフェース３１０とロボットデバイス（複数も可）１２０との間およびロボットデバイス（複数も可）１２０の２つ以上の間の通信をルート指定し、たとえばロボットデバイス（複数も可）１２０の１または複数に搭載されたオンボードシステム３２０などの１または複数のオンボードシステムを管理してよい。他の実施形態において、倉庫管理システム２１０は、限定ではないがたとえば、ロボットデバイス（複数も可）１２０の１または複数によるタスク／ミッション命令の完了に関するデータ、ロボットデバイスが初期化／起動された位置を示すデータを含む、ロボットデバイス（複数も可）１２０の一部または全部の位置および／または姿勢に関するデータ、人間の行動に関する１または複数の監査追跡、事故分析、および／またはデバッギングに関するデータ、および状態追跡に関するデータなどの、システム３００に関するデータを格納、生成、読み取り、書き込み、更新、および／または削除してよい。他の実施形態において、倉庫管理システム２１０は、ロボットデバイス（複数も可）１２０および１または複数のアダプタと通信する中央メッセージルータ／持続性マネージャを含んでよい。１または複数のアダプタの各々は、倉庫管理システム２１０に利用可能なシステム３００の通信および／またはデータへのアクセスを提供してよく、限定ではないが、上述したユーザインタフェースのためのユーザインタフェースサービスアダプタ、システム３００に関する情報へのワールドワイドウェブ（ＷＷＷ）／インターネットアクセスを可能にするウェブコンテンツサービスアダプタ、ＡＰＩおよび／またはＷＭＳ間の通信の中継として機能するメッセージ代理アダプタおよび／またはＷＭＳアダプタを含んでよい。
【００４７】
［0057］  図３は、１または複数のロボットデバイス１２０の各々が、オンボードシステム３２０、ネットワークスイッチ３３０、車両コントローラ３３２、プログラマブル論理コントローラ（ＰＬＣ）３３４、１または複数のデバイスセンサ３３８、および１または複数のドライブ３４０の１または複数を含み得ることを示す。
【００４８】
［0058］  オンボードシステム３２０は、ロボットデバイス１２０へのインストールおよびロボットデバイス１２０との併用のために構成されたロボット計画のための計算およびセンサパッケージであってよく、オンボードシステム３２０は、オンボードセンサ３２２および１または複数の計画／実行プロセッサ３２４を含んでよい。図３は、オンボードシステム３２０が、（ネットワーク３１８を介して）計画システム１１０と、デバイスセンサ３３８と、および／またはロボットデバイス１２０の１または複数のアクチュエータと少なくとも通信するためにネットワークスイッチ３３０を用いるように構成されることも示す。
【００４９】
［0059］  オンボードシステム３２０は、ロボットデバイス１２０の位置測定、計画を実行するためのローカル軌道の生成および／または倉庫管理システム２１０によって提供された経路および／または軌道に沿った移動、ドライブ３４０に１または複数の（ローカル）軌道を辿らせるコマンドの生成、ロボットデバイス１２０のアクチュエータ（複数も可）を制御するコマンドの生成、および姿勢、状態、および／または他の情報を倉庫管理システム２１０へ報告することの１または複数を担ってよい。
【００５０】
［0060］  オンボードセンサ３２２は、オンボードシステム３２０をナビゲートおよび／または制御するための１または複数のナビゲーションレーザ、レーザスキャナ、カメラ、および／または他のセンサを含んでよい。たとえば、ロボットデバイス（複数も可）１２０のうちのロボットデバイスは、たとえばドイツ、ヴァルトキルヒ所在のＳＩＣＫ  ＡＧ社、日本、大阪府所在の北洋電機株式会社、または日本、大阪府所在の株式会社キーエンスによって供給される１または複数のレーザスキャナなどの、１または複数のレーザスキャナを含んでよい。レーザスキャナは、ロボットデバイスの移動方向およびロボットデバイスの側方、角、および／または後方に沿った障害物の検出および／または回避のために用いられ得る。レーザスキャナは、反射板ベースの位置測定を用いてロボットデバイスを位置測定するためにも用いられ得る。いくつかの実施形態において、カメラおよび／または他のセンサは、レーザスキャナの代わりに、またはレーザスキャナとともに、障害物検出、障害物回避、および／または位置測定のために用いられ得る。
【００５１】
［0061］  計画／実行プロセッサ（複数も可）３２４は、少なくともオンボードセンサ３２２に接続された１または複数のコンピュータプロセッサを含んでよい。計画／実行プロセッサ（複数も可）３２４は、オンボードセンサ３２２からのデータを読み取り、ローカル軌道および／またはロボットデバイス１２０を移動させるためのドライブ（複数も可）３４０へのコマンドを生成し、倉庫管理システム２１０と通信してよい。ローカル軌道は、ロボットデバイス１２０が始動姿勢で始動し、何らかの時間に終着姿勢に到達する軌道であってよい。いくつかの例において、始動姿勢は暗示的に指定されてよく、たとえば始動姿勢は、ロボットデバイス１２０の現在の姿勢であってよく、ローカル軌道は、始動姿勢がロボットデバイス１２０の現在の姿勢であるという前提に基づいてよい。
【００５２】
［0062］  計画／実行プロセッサ（複数も可）３２４は、コンポーネントフレームワークを利用してよい。コンポーネントフレームワークは、たとえばバージニア州オナンコックのｂｏｏｓｔ．ｏｒｇ社によって供給される「ｂｏｏｓｔ：：ａｓｉｏ」および「ｂｏｏｓｔ：：ｓｉｇｎａｌｓ２」ソフトウェアライブラリなど、ロボットデバイス１２０の無矛盾非同期モデルを提供するように構成された入力／出力（Ｉ／Ｏ）およびシグナリングに関するソフトウェアライブラリ上に構築されたマルチスレッド型ジョブスケジューリングおよびメッセージ受渡しシステムであってよい。コンポーネントフレームワークは、ソフトウェアコンポーネント（またはモジュール）間の通信を可能にし得るので、ソフトウェアコンポーネントは、スレッドセーフ方式で並行して実行され得る。
【００５３】
［0063］  コンポーネントフレームワークは、ステートマシンコンポーネント、位置測定コンポーネント、計画コンポーネント、および軌道追従コンポーネントの１または複数を含んでよい。ステートマシンコンポーネントは、車両初期化、車両指揮および故障対応のためにロボットデバイス１２０の状態を管理してよい。ステートマシンコンポーネントは、ロボットデバイスの状態を管理するために、決定性有限オートマンまたは他のステートマシンを用いてよい。
【００５４】
［0064］  位置測定コンポーネントは、車両センサからのデータを読み取り、ロボットデバイス１２０の姿勢を決定するためにロボットデバイス１２０の以前の状態情報を統合してよい。姿勢は、たとえばパレットまたは他の物体など、検出された１または複数のランドマーク／対象地点に対して決定され得る。計画コンポーネントは、倉庫管理システム２１０から１または複数の目的を受信し、ロボットデバイス１２０がこれらの目的を達成するためのローカル軌道を決定してよい。いくつかの実施形態において、ローカル軌道は、ロボットデバイス１２０が、たとえば１００ミリ秒、２００ミリ秒、５００ミリ秒、１秒、５秒など所定の時間辿るべき短期間軌道であってよい。軌道追従コンポーネントは、計画コンポーネントによって生成されたローカル軌道を受信し、ローカル軌道に沿って移動するドライブ制御命令を生成してよい。その後、ドライブ制御命令は、トラクションモータおよびロボットデバイス１２０に関する他のアクチュエータを制御するドライブ３４０へ中継される。
【００５５】
［0065］  ネットワークスイッチ３３０は、ロボットデバイス（複数も可）１２０のための通信を可能にし得る。これらの通信は、オンボードシステム３２０とロボットデバイス１２０の他の部分、たとえばデバイスセンサ３３８およびドライブ３４０との間の通信、およびネットワーク３１８を介した倉庫管理システム２１０との通信を含んでよいが、これに限定されない。たとえばネットワークスイッチ３３０は、たとえば台湾、新北市の株式会社プラネットテクノロジーによるプラネットイーサネットスイッチのように、イーサネットおよび／または他の有線通信インタフェース（複数も可）を介した有線ネットワークへの、および／または、ＷｉＦｉ（登録商標）および／または他の無線通信インタフェース（複数も可）を介した無線ネットワークへの、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）ベースの通信を可能にし得る。
【００５６】
［0066］  いくつかの実施形態において、ロボットデバイス（複数も可）１２０と計画システム１１０との間の通信は、リモートプロシージャコール（ＲＰＣ）を含んでよい。リモートプロシージャコールは、計画システム１１０のソフトウェアによってロボットデバイス（複数も可）１２０の１または複数に常駐するソフトウェア手順、方法、および／または機能を呼び出すこと、およびその逆を含んでよい。リモートプロシージャコールは、たとえばＴＣＰ／ＩＰ、たとえばＨＴＴＰ１．０および／またはＨＴＴＰ２．０などのハイパーテキスト転送プロトコル（ＨＴＴＰ）、および／または他の通信プロトコルなどの通信プロトコルに基づいてよい。リモートプロシージャコールの一部または全部は、暗号化データを含んでよく、そのようなデータは、セキュアソケットレイヤ（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、および／または１または複数の他の暗号化アルゴリズムおよび／またはプロトコルを用いて暗号化され得る。暗号化データが用いられる実施形態において、たとえばプライベート認証機関などの１または複数の認証機関は、暗号化データの暗号化および／または解読に用いられる１または複数の証明書を認証してよい。認証機関は、１または複数の証明書へのアクセスを制御するために、アクセス制御リスト（ＡＣＬ）を用いてよい。リモートプロシージャコールは、ＲＰＣ関連通信のための要求／応答プロトコルおよび／または双方向ストリーミングプロトコルを用いてよい。ＲＰＣ関連通信のために双方向ストリーミングプロトコルが用いられる実施形態において、双方向ストリーミングプロトコルを実装するために単一の長寿命ＲＰＣが用いられ得る。
【００５７】
［0067］  車両コントローラ３３２および／またはプログラマブル論理コントローラ３３４は、ロボットデバイス（複数も可）１２０のための電気およびセンサ管理機能を提供してよい。電気およびセンサ管理機能は、電気負荷制御、照明制御、センサ制御、センサおよび／またはスイッチ信号処理、および電力管理のための機能を含んでよいが、これに限定されない。車両マスタ３３６は、ロボットデバイス（複数も可）３２０の、たとえばリフトデバイスなどの１または複数のアクチュエータを制御するための機能を提供してよい。
【００５８】
［0068］  デバイスセンサ（複数も可）３３８は、ロボットデバイス（複数も可）１２０の制御および／または動作に関連するデータを提供し得る１または複数のセンサを含んでよい。データは、限定ではないがたとえば位置測定情報、位置推定、およびマッピングデータなどの、ロボットデバイス（複数も可）１２０に関する環境に関する情報を提供してよい。たとえば、デバイスセンサ（複数も可）３３８は、１または複数のレーザ（たとえば２方向（２Ｄ）レーザ、安全レーザ、レーザスキャナ）、カメラ（たとえば飛行時間（ＴｏＦ）カメラ、三原色（ＲＧＢ）カメラ、サーモカメラ）、電気センサ、近接センサ、ナビゲーションデバイス、および位置センサを含んでよい。
【００５９】
［0069］  デバイス（複数も可）３４０は、ロボットデバイス（複数も可）１２０を動かすための機能を提供する１または複数のドライブコントローラおよび／またはアクチュエータを含んでよい。ドライブコントローラは、ドライブアクチュエータに、ロボットデバイス（複数も可）１２０の動きを制御するように指示してよい。ドライブアクチュエータは、１または複数のトラクションモータ、電動ドライブ、油圧ドライブ、空圧ドライブを含んでよい。
【００６０】
［0070］  図４は、実施形態例に係る、ロボットデバイス（複数も可）１２０のロボットデバイスアーキテクチャ４００を示す。ロボットデバイス（複数も可）１２０のロボットデバイスアーキテクチャ４００は、ソフトウェアを含んでよい。ソフトウェアは、位置測定のためのソフトウェア４１０、パレット姿勢推定器のためのソフトウェア４１２、ステートマシンに関連するソフトウェア４１４、プランナフォロアのためのソフトウェア４１６、コンポーネントフレームワークのためのソフトウェア４２０、およびシステムを動作させるためのソフトウェア４３０を含んでよい。ソフトウェアは、１または複数のハードウェア計画／実行プロセッサ３２４によって実行され得る。ロボットデバイス（複数も可）１２０と他のデバイスとの間の通信は、ネットワークゲートウェイ４４０および／またはネットワークスイッチ３３０を用いて実行され得る。たとえば、ネットワークゲートウェイ４４０は、ロボットデバイス（複数も可）１２０のうちのロボットデバイス内での、またこれとの無線通信のために用いられ、ネットワークスイッチ３３０は、ロボットデバイス（複数も可）１２０のうちのロボットデバイス内での、またこれとの有線通信のために用いられ得る。ロボットデバイスアーキテクチャ４００は、たとえば図３に関連して上述したデバイスセンサ（複数も可）３３８およびドライブ（複数も可）３４０などの追加のハードウェアも含む。いくつかの実施形態において、ロボットデバイスアーキテクチャ４００は、ＴｏＦカメラ４５０およびＲＧＢカメラ４５２を含むがこれに限定されない１または複数のカメラを含んでよく、１または複数のカメラは、１または複数のスチルカメラおよび／または１または複数のビデオカメラを含んでよい。
【００６１】
［0071］  図５は、実施形態例に係る、ロボットデバイス（複数も可）１２０に関するレーザスキャナアーキテクチャ５００を示す。いくつかの実施形態において、デバイスセンサ（複数も可）３３８の一部または全部は、レーザスキャナアーキテクチャ５００によって示されるレーザおよびレーザスキャナであってよい。
【００６２】
［0072］  レーザスキャナアーキテクチャ５００は、レーザ５１０、５１２、５２０、５２２、レーザスキャナ５２４、プロトコルコンバータ５２６、ネットワークスイッチ３３０、およびオンボードシステム３２０を含んでよい。レーザ５１０、５１２、５２０、および５２２は、ロボットデバイス（複数も可）１２０の定位置にあってよく、たとえば、レーザ５１０はロボットデバイスの前部に位置し、レーザ５１２はロボットデバイスの後部に位置し、レーザ５２０はロボットデバイスの前部左角に位置し、レーザ５２２はロボットデバイスの前部右角に位置してよい。レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、環境内でロボットデバイスを位置測定するための情報を提供してよい。いくつかの実施形態において、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、１または複数の反射板から反射した光を放出してよく、反射光は、１または複数のレーザセンサによって検出されてよく、ロボットデバイスは、反射光を検出するために要する持続時間に基づいて環境内で位置測定され得る。これらの実施形態において特に、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４の一部または全部は、反射レーザ光を検出するための１または複数のレーザセンサを含んでよい。したがって、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４の一部または全部は、レーザに関連するデータ（たとえばレーザに関連するメンテナンスデータ）、レーザによって放出された光に関連するデータ、およびレーザセンサ（複数も可）によって反射レーザ光を検出するために要する１または複数の持続時間に関連するデータを含むがこれに限定されないデータを生成してよい。
【００６３】
［0073］  図５に示すように、たとえばレーザ５２０、５２２などのいくつかのレーザおよびレーザスキャナ５２４は、ネットワークスイッチ３３０に直接接続され得るが、たとえばレーザ５１０、５１２などの他のレーザは、プロトコルコンバータ５２６を介してネットワークスイッチ３３０に接続され得る。プロトコルコンバータ５２６は、たとえばレーザ５１０および／または５１２などのレーザによって用いられる通信プロトコルを、ネットワークスイッチ３３０によって用いられる通信プロトコルに変換してよく、たとえばＲＳ‐４２２に基づく通信プロトコルからイーサネットに基づく通信プロトコルに変換してよい。その後、レーザ５１０、５１２、５２０、５２２、およびレーザスキャナ５２４は、ネットワークスイッチ３３０および場合によってはプロトコルコンバータ５２６を介して、オンボードシステム３２０へデータを送信し、オンボードシステム３２０からのコマンドを受信してよい。
【００６４】
［0074］  いくつかの実施形態において、ロボットデバイス（複数も可）１２０は、１または複数の障害状態を仮定され得る。これらの障害状態および関連する修復戦略の例が以下の表２に表される。
【表１】
0006903687.tif 000002
【００６５】
［0075］  図６Ａは、実施形態例に係る、コンピューティングデバイス６００（たとえばシステム）の機能ブロック図である。特に、図６Ａに示すコンピューティングデバイス６００は、計画システム１１０、オンボードプランナ１１２、ロードマッププランナ１１４、ロボットデバイス１２０、オンボードソフトウェア１３０、ハードウェア１５０、システム２００、倉庫管理システム２１０、実行部２２０、物流インタフェース３１０、ネットワーク３１８、オンボードシステム３２０、オンボードセンサ３２２、計画／実行プロセッサ３２４、ネットワークスイッチ３３０、中央車両コントローラ３３２、プログラマブル論理コントローラ３３４、車両マスタ３３６、デバイスセンサ３３８、ドライブ３４０、ロボットデバイスアーキテクチャ４００、レーザスキャナアーキテクチャ５００、および方法１０００の１または複数に関連する少なくとも１つの機能を実行するように構成され得る。コンピューティングデバイス６００は、ユーザインタフェースモジュール６０１、ネットワーク通信インタフェースモジュール６０２、１または複数のプロセッサ６０３、データストレージ６０４、１または複数のセンサ６２０、および１または複数のアクチュエータ６３０を含んでよく、それら全ては、システムバス、ネットワーク、または他の接続メカニズム６０５を介して互いにリンクされ得る。いくつかの実施形態において、コンピューティングデバイス６００は、倉庫制御システムの一部または全部としての機能を果たすように構成され得る。
【００６６】
［0076］  ユーザインタフェースモジュール６０１は、外部ユーザ入力／出力デバイスへデータを送信し、および／またはそこからデータを受信するように動作可能であってよい。たとえば、ユーザインタフェースモジュール６０１は、たとえばキーボード、キーパッド、タッチスクリーン、コンピュータマウス、トラックボール、ジョイスティック、カメラ、音声認識モジュール、および／または他の同様のデバイスなどのユーザ入力デバイスへデータを送信および／またはそこからデータを受信するように構成され得る。ユーザインタフェースモジュール６０１は、現在既知であり、あるいは今後開発される、たとえば１または複数の陰極線管（ＣＲＴ）、液晶ディスプレイ、発光ダイオード（ＬＥＤ）、デジタル光処理（ＤＬＰ）技術を用いたディスプレイ、プリンタ、電球、および／または他の同様のデバイスなどのユーザディスプレイデバイスへの出力を提供するようにも構成され得る。ユーザインタフェースモジュール６０１は、たとえばスピーカ、スピーカジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤフォン、および／または他の同様のデバイスのように、可聴出力（複数も可）を生成するようにも構成され得る。
【００６７】
［0077］  ネットワーク通信インタフェースモジュール６０２は、ネットワークを介して通信するように構成可能な１または複数の無線インタフェース６０７および／または１または複数の有線インタフェース６０８を含んでよい。無線インタフェース６０７は、１または複数の無線送信機、受信機、および／または、たとえばＢｌｕｅｔｏｏｔｈ（登録商標）トランシーバ、Ｚｉｇｂｅｅ（登録商標）トランシーバ、ＷｉＦｉ（登録商標）トランシーバ、ＷｉＭＡＸ（登録商標）トランシーバ、および／または無線ネットワークを介して通信するように構成可能な他の同種の無線トランシーバなどのトランシーバを含んでよい。有線インタフェース６０８は、１または複数の有線送信機、受信機、および／または、たとえばイーサネットトランシーバ、ユニバーサルシリアルバス（ＵＳＢ）トランシーバ、またはツイストペア線、同軸ケーブル、光ファイバリンク、または有線ネットワークへの同様の物理的接続を介して通信するように構成可能な同様のトランシーバなどのトランシーバを含んでよい。
【００６８】
［0078］  いくつかの実施形態において、ネットワーク通信インタフェースモジュール６０２は、信頼できる、保護された、および／または認証された通信を提供するように構成され得る。本明細書で説明される各通信に関して、場合によってはメッセージヘッダおよび／またはフッタ（たとえばパケット／メッセージ順序付け情報、カプセル化ヘッダ（複数も可）および／またはフッタ（複数も可）、サイズ／時間情報、およびたとえばＣＲＣおよび／またはパリティチェック値などの伝送検証情報）の一部として、信頼できる通信（すなわち保証付きメッセージ配信）を確実にするための情報が提供され得る。通信は、保護（たとえば、符号化または暗号化）され、および／または、限定ではないがたとえばデータ暗号化標準（ＤＥＳ）、高度暗号化標準（ＡＥＳ）、Ｒｉｖｅｓｔ‐Ｓｈａｍｉｒ‐Ａｄｅｌｍａｎ（ＲＳＡ）アルゴリズム、Ｄｉｆｆｉｅ‐Ｈｅｌｌｍａｎアルゴリズム、たとえばセキュアソケットレイヤ（ＳＳＬ）またはトランスポート層セキュリティ（ＴＬＳ）などのセキュアソケットプロトコル、および／またはデジタル署名アルゴリズム（ＤＳＡ）などの１または複数の暗号プロトコルおよび／またはアルゴリズムを用いて解読／復号され得る。通信を保護（および後に解読／復号）するために、本明細書に記載されたものと同様、またはそれに加えて、他の暗号プロトコルおよび／またはアルゴリズムが用いられてもよい。
【００６９】
［0079］  プロセッサ６０３は、１または複数の汎用プロセッサ、および／または１または複数の専用プロセッサ（たとえばデジタル信号プロセッサ、グラフィック処理ユニット、特定用途向け集積回路など）を含んでよい。プロセッサ６０３は、データストレージ６０４に含まれるコンピュータ可読プログラム命令６０６および／または本明細書で説明される他の命令を実行するように構成され得る。
【００７０】
［0080］  データストレージ６０４は、プロセッサ６０３の少なくとも１つによって読み取りおよび／またはアクセスされ得る１または複数のコンピュータ可読記憶媒体を含んでよい。１または複数のコンピュータ可読記憶媒体は、たとえば光、磁気、有機、または他のメモリまたはディスクストレージなどの揮発性および／または不揮発性記憶部品を含んでよく、これらはプロセッサ６０３の少なくとも１つに全体または部分的に統合され得る。いくつかの実施形態において、データストレージ６０４は、単一の物理デバイス（たとえば１つの光、磁気、有機、または他のメモリまたはディスクストレージユニット）を用いて実装され得るが、他の実施形態において、データストレージ６０４は、２つ以上の物理デバイスを用いて実装され得る。
【００７１】
［0081］  データストレージ６０４は、コンピュータ可読プログラム命令６０６および場合によっては追加のデータを含んでよい。いくつかの実施形態において、データストレージ６０４は、本明細書で説明される方法および技術の少なくとも一部および／またはデバイスおよびネットワークの機能の少なくとも一部を実行するために必要なストレージを更に含んでよい。
【００７２】
［0082］  いくつかの実施形態において、コンピューティングデバイス６００は、１または複数のセンサ６２０を含んでよい。センサ（複数も可）６２０は、コンピューティングデバイス６００に関する環境内の条件を測定し、その環境、たとえば環境１００に関するデータを提供するように構成され得る。たとえば、センサ（複数も可）６２０は、（ｉ）限定ではないがたとえば無線周波数識別（ＲＦＩＤ）リーダ、近接センサ、１次元バーコードリーダ、２次元バーコード（たとえばクイックレスポンス（ＱＲ）コード）リーダ、およびレーザトラッカなど、他の物体および／またはデバイスを識別するための識別センサ、ここで識別センサ（複数も可）は、たとえばＲＦＩＤタグ、バーコード、ＱＲコード、および／または少なくとも識別情報を読み取り提供するように構成された他のデバイスおよび／または物体などの識別子を読み取るように構成され得る、（ｉｉ）限定ではないがたとえばジャイロスコープ、加速度計、ドップラーセンサ、グローバルポジショニングシステム（ＧＰＳ）デバイス、ソナーセンサ、リーダデバイス、レーザ変位センサ、およびコンパスなど、コンピューティングデバイス６００の位置および／または動きを測定するための位置センサ、（ｉｉｉ）限定ではないがたとえば赤外センサ、光学センサ、光センサ、カメラ、生体センサ、容量センサ、タッチセンサ、温度センサ、無線センサ、ラジオセンサ、運動センサ、マイクロフォン、音響センサ、超音波センサ、および／または煙センサなど、コンピューティングデバイス６００の環境を示すデータを取得するための環境センサ、および（ｉｖ）限定ではないがたとえば、１または複数の方向における力、トルク、接地力、摩擦を測定する１または複数のセンサ、および／またはＺＭＰおよび／またはＺＭＰの位置を識別するゼロモーメントポイント（ＺＮＰ）センサなど、コンピューティングデバイス６００に関して作用する１または複数の力（たとえば慣性力および／またはＧ力）を測定するための力センサの１または複数を含んでよい。センサ（複数も可）６２０の他の多数の例も可能である。
【００７３】
［0083］  コンピューティングデバイス６００は、コンピューティングデバイス６００が動きを開始することを可能にする１または複数のアクチュエータ６３０を含んでよい。たとえばアクチュエータ（複数も可）６３０は、ロボット肢体をロボット本体に連結するロボット関節を含み、または組み込んでよい。たとえばアクチュエータ（複数も可）６３０は、それぞれのロボット脚部および腕部をロボット本体に連結するそれぞれのロボット股関節および肩関節を含んでよい。また、アクチュエータ（複数も可）６３０は、ロボット脚部のそれぞれの部分（たとえばロボット大腿部およびロボット脹脛部）を連結するそれぞれのロボット膝関節、およびロボット腕部の部分（たとえば前腕部および上腕部）を連結する肘関節を含んでよい。更に、アクチュエータ（複数も可）６３０は、ロボット脚部とロボット足部とを連結するそれぞれのロボット足首関節、およびロボット腕部とロボット手部とを連結するそれぞれのロボット手首関節を含んでよい。加えて、アクチュエータ（複数も可）６３０は、ロボット肢体を動かすためのモータを含んでよい。このように、アクチュエータ（複数も可）６３０は、コンピューティングデバイス６００の可動性を可能にし得る。アクチュエータ（複数も可）６３０の他の多数の例も可能である。
【００７４】
［0084］  図６Ｂは、実施形態例に係るクラウドベースサーバシステムとして配置されたコンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃのネットワーク６１４を示す。コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃは、クラウドベースアプリケーションおよび／またはサービスのプログラム論理および／またはデータを格納する、たとえば、計画システム１１０、オフボードプランナ１１２、ロードマッププランナ１１４、ロボットデバイス１２０、オンボードソフトウェア１３０、ハードウェア１５０、システム２００、倉庫管理システム２１０、実行部２２０、物流インタフェース３１０、ネットワーク３６、オンボードシステム３２０、オンボードセンサ３２２、計画／実行プロセッサ３２４、ネットワークスイッチ３３０、中央車両コントローラ３３２、プログラマブル論理コントローラ３３４、車両マスタ３３６、デバイスセンサ３３８、ドライブ３４０、ロボットデバイスアーキテクチャ４００、レーザスキャナアーキテクチャ５００、および方法１０００の１または複数に関連する少なくとも１つの機能を実行するクラウドベースデバイスであってよい。
【００７５】
［0085］  いくつかの実施形態において、コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃは、単一のコンピューティングセンタに常駐する単一のコンピューティングデバイスであってよい。他の実施形態において、コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃは、単一のコンピューティングセンタ内の複数のコンピューティングデバイスを含んでよく、あるいは様々な地理的位置に存在する複数のコンピューティングセンタにある複数のコンピューティングデバイスを含んでもよい。たとえば図６Ｂは、様々な物理的位置に常駐するコンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃの各々を示す。
【００７６】
［0086］  いくつかの実施形態において、コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃにおけるデータおよびサービスは、非一時的有形コンピュータ可読媒体（またはコンピュータ可読記憶媒体）に格納され、他のコンピューティングデバイスによってアクセス可能なコンピュータ可読情報として符号化され得る。いくつかの実施形態において、コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃは、単一のディスクドライブまたは他の有形記憶媒体に格納されてよく、あるいは１または複数の様々な地理的位置に存在する複数のディスクドライブまたは他の有形記憶媒体に実装されてもよい。
【００７７】
［0087］  図６Ｂは、実施形態例に係るクラウドベースサーバシステムを示す。図６Ｂにおいて、計画システムの機能は、３つのコンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃに分散され得る。コンピューティングクラスタ６０９ａは、ローカルクラスタネットワーク６１２ａによって接続された、１または複数のコンピューティングデバイス６００ａ、クラスタストレージアレイ６１０ａ、およびクラスタルータ６１１ａを含んでよい。同様に、コンピューティングクラスタ６０９ｂは、ローカルクラスタネットワーク６１２ｂによって接続された、１または複数のコンピューティングデバイス６００ｂ、クラスタストレージアレイ６１０ｂ、およびクラスタルータ６１１ｂを含んでよい。同様に、コンピューティングクラスタ６０９ｃは、ローカルクラスタネットワーク６１２ｃによって接続された、１または複数のコンピューティングデバイス６００ｃ、クラスタストレージアレイ６１０ｃ、およびクラスタルータ６１１ｃを含んでよい。
【００７８】
［0088］  いくつかの実施形態において、コンピューティングクラスタ６０９ａ、６０９ｂ、６０９ｃの各々は、等しい数のコンピューティングデバイス、等しい数のクラスタストレージアレイ、および等しい数のクラスタルータを有してよい。しかし他の実施形態において、各コンピューティングクラスタは、異なる数のコンピューティングデバイス、異なる数のクラスタストレージアレイ、異なる数のクラスタルータを有してよい。各コンピューティングクラスタにおけるコンピューティングデバイス、クラスタストレージアレイ、およびクラスタルータの数は、各コンピューティングクラスタに割り当てられた１または複数のコンピューティングタスクに依存してよい。
【００７９】
［0089］  コンピューティングクラスタ６０９ａにおいて、たとえばコンピューティングデバイス６００ａは、計画システム、ロボットデバイス、および／またはコンピューティングデバイスの様々なコンピューティングタスクを実行するように構成され得る。１つの実施形態において、計画システム、ロボットデバイス、および／またはコンピューティングデバイスの様々な機能は、１または複数のコンピューティングデバイス６００ａ、６００ｂ、および６００ｃに分散され得る。それぞれのコンピューティングクラスタ６０９ｂおよび６０９ｃにおけるコンピューティングデバイス６００ｂおよび６００ｃは、コンピューティングクラスタ６０９ａにおけるコンピューティングデバイス６００ａと同様に構成され得る。一方、いくつかの実施形態において、コンピューティングデバイス６００ａ、６００ｂ、および６００ｃは、異なる機能を実行するように構成され得る。
【００８０】
［0090］  いくつかの実施形態において、計画システム、ロボットデバイス、および／またはコンピューティングデバイスに関連するコンピューティングタスクおよび格納データは、ロードマップエディタ、単一のエージェント計画ソフトウェア、複数のエージェント計画ソフトウェア、ルート指定コンピューティングデバイス、および／またはコンピューティングデバイスの処理要件、コンピューティングデバイス６００ａ、６００ｂ、および６００ｃの処理能力、各コンピューティングクラスタにおけるコンピューティングデバイス間およびコンピューティングクラスタ自体の間のネットワークリンクのレイテンシ、および／またはシステムアーキテクチャ全体のコスト、速度、耐故障性、復元性、効率性、および／または他の設計目標に寄与し得る他の要因に少なくとも部分的に基づいて、コンピューティングデバイス６００ａ、６００ｂ、および６００ｃに分散され得る。
【００８１】
［0091］  コンピューティングクラスタ６０９ａ、６０９ｂ、および６０９ｃのクラスタストレージアレイ６１０ａ、６１０ｂ、および６１０ｃは、ハードディスクドライブのグループへの読み取りおよび書き込みアクセスを管理するように構成されたディスクアレイコントローラを含むデータストレージアレイであってよい。ディスクアレイコントローラは、単独で、またはそれぞれのコンピューティングデバイスとともに、１または複数のコンピューティングデバイスが１または複数のクラスタストレージアレイへアクセスすることを妨げるディスクドライブまたは他のクラスタストレージアレイの故障および／またはネットワーク故障を防ぐために、クラスタストレージアレイに格納されたデータのバックアップまたは冗長コピーを管理するようにも構成され得る。
【００８２】
［0092］  計画システム、ロボットデバイス、および／またはコンピューティングデバイスの機能がコンピューティングクラスタ６０９ａ、６０９ｂ、および６０９ｃのコンピューティングデバイス６００ａ、６００ｂ、および６００ｃに分散され得る方法と同様に、これらの構成要素の様々なアクティブ部分および／またはバックアップ部分は、クラスタストレージアレイ６１０ａ、６１０ｂ、および６１０ｃに分散され得る。たとえば、いくつかのクラスタストレージアレイは、計画システム、ロボットデバイス、および／またはコンピューティングデバイスのデータの一部を格納するように構成されてよく、他のクラスタストレージアレイは、計画システム、ロボットデバイス、および／またはコンピューティングデバイスのデータの他の部分（複数も可）を格納してよい。また、いくつかのクラスタストレージアレイは、他のクラスタストレージアレイに格納されたデータのバックアップバージョンを格納するように構成され得る。
【００８３】
［0093］  コンピューティングクラスタ６０９ａ、６０９ｂ、および６０９ｃにおけるクラスタルータ６１１ａ、６１１ｂ、および６１１ｃは、コンピューティングクラスタのための内部および外部通信を提供するように構成されたネットワーク機器を含んでよい。たとえば、コンピューティングクラスタ６０９ａにおけるクラスタルータ６１１ａは、（ｉ）ローカルクラスタネットワーク６１２ａを介したコンピューティングデバイス６００ａとクラスタストレージアレイ６１０ａとの間のローカルエリアネットワーク通信、および（ｉｉ）ネットワーク６１４への広域ネットワーク接続６１３ａを介したコンピューティングクラスタ６０９ａとコンピューティングクラスタ６０９ｂおよび６０９ｃとの間の広域ネットワーク通信を提供するように構成された、１または複数のインターネット切換えおよびルート指定デバイスを含んでよい。クラスタルータ６１１ｂおよび６１１ｃは、クラスタルータ６１１ａと同様のネットワーク機器を含んでよく、クラスタルータ６１１ｂおよび６１１ｃは、クラスタルータ６１１ａがコンピューティングクラスタ６０９ａに関して実行するネットワーク機能と同様のネットワーク機能をコンピューティングクラスタ６０９ｂおよび６０９ｂに関して実行してよい。
【００８４】
［0094］  いくつかの実施形態において、クラスタルータ６１１ａ、６１１ｂ、および６１１ｃの構成は、コンピューティングデバイスおよびクラスタストレージアレイのデータ通信要件、クラスタルータ６１１ａ、６１１ｂ、および６１１ｃにおけるネットワーク機器のデータ通信能力、ローカルネットワーク６１２ａ、６１２ｂ、６１２ｃのレイテンシおよびスループット、広域ネットワークリンク６１３ａ、６１３ｂ、および６１３ｃのレイテンシ、スループット、およびコスト、および／またはモデレーションシステムアーキテクチャのコスト、速度、耐故障性、復元性、効率性、および／または他の設計基準に寄与し得る他の要因に少なくとも部分的に基づいてよい。
ＩＶ．実施形態例
【００８５】
［0095］  上述したように、本開示は、特に、ロボットデバイスと中央計画システムとの間の通信が弱い、または存在しないエリアを有する環境において動作するエージェントの調和のためのマルチエージェント計画フレームワークに関連する実装を含む。
【００８６】
［0096］  図７は、本明細書に開示される方法、システム、およびデバイスが動作し得る環境７００の例を示す。環境７００は、複数のエリア７０２ａ〜ｄを含んでよい。図７において、エリア７０２ａに位置するロボットデバイスは、経路計画システム７１０と通信することができる。しかし、環境７００のサイズ、形状、または他の特徴によって、エリア７０２ｂ〜ｄ内のロボットデバイスは、経路計画システム７１０と通信することができない。
【００８７】
［0097］  図７は、環境７００内で動作し得るシステムの例も示す。システムは、第１のロボットデバイス７２０および第２のロボットデバイス７３０を含む。ロボットデバイス７２０および７３０は、上述したロボットデバイス１２０と同様または同一であってよい。
【００８８】
［0098］  第１のロボットデバイス７２０は、第１のロボットデバイスに関する第１の時間パラメータ化経路７２２を受信するように構成され得る。図７において、第１の時間パラメータ化経路７２２は、第１のロボットデバイス７２０が西へ、続いて北へ移動する経路として示される。第１の時間パラメータ化経路７２２は、第１のロボットデバイス７２０が２０秒間西へ移動し、その後６０秒間北へ移動するように、タイミング成分も含んでよい。他の例において、第１の時間パラメータ化経路７２２は、ルート、位置および時間のリスト、または第１のロボットデバイス７２０がタスクを実行することを支援し得る他の構造化情報を備えてよい。いくつかの例において、第１の時間パラメータ化経路７２２は、たとえば経路計画システム７１０などの中央計画システムまたは倉庫管理システムによって決定され、生成され、選択され、または作成され得る。各時間パラメータ化経路は、時間パラメータ化経路を実行するロボットデバイスが可能な最大速度未満で移動するようにスケジュールされるように決定され得る。それによってロボットデバイスは、自身が遅れた場合「キャッチアップ」することができるように、スケジュールされた速度よりも速く移動するように自身を調整することが可能になり得る。本明細書に開示されるいくつかの例は、調和経路として時間パラメータ化経路に言及し得る。
【００８９】
［0099］  第１のロボットデバイス７２０が、たとえばエリア７０２ａなど、通信を容易にする環境７００のエリア内にある場合、第１の時間パラメータ化経路７２２は、第１のロボットデバイス７２０によって受信され得る。いくつかの例において、第１の時間パラメータ化経路７２２は、経路計画システム７１０から直接受信され得るが、他の例において、第１の時間パラメータ化経路７２２は、１または複数の中継デバイスまたはシステムを介して間接的に受信され得る。また、第１および／または第２の時間パラメータ化経路７２２および７３２は、その両方が、通信を容易にする環境７００のエリア内で開始および終了するように選択され得る。これは、時間パラメータ化経路の実行中に何が起こっても、経路計画システム７１０が命令を伝達し情報を受信することができるエリア内でロボットデバイスが開始および終了するようにスケジュールされることにより、保安レベルをもたらし得る。
【００９０】
［0100］  第１のロボットデバイス７２０は、第１の位置において第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信するようにも構成され得る。図７は、第１の位置７４０で第１の時間パラメータ化経路７２２と重なる第２の時間パラメータ化経路７３２を有する第２のロボットデバイス７３０を示す。いくつかの例において、第２のロボットデバイスのインジケーションは、第２のロボットデバイス７３０に関する情報を含んでよい。たとえば、第２のロボットデバイスのインジケーションは、たとえばデバイス種類および／またはサイズ、重量、および運搬している物体の形状など、第２のロボットデバイス７３０の１または複数の特徴を含んでよい。インジケーションは、第２の時間パラメータ化経路７３２に関する情報（たとえば、第２のロボットデバイス７３０が行くことがスケジュールされた全ての位置、および／または第２の時間パラメータ化経路が第１の時間パラメータ化経路と重なる１または複数の位置など）も含んでよい。第２の時間パラメータ化経路７３２は、第１の時間パラメータ化経路７２２と同様であるが、第２のロボットデバイス７３０に特有であってよい。
【００９１】
［0101］  第１の時間パラメータ化経路７２２および第２の時間パラメータ化経路７３２は、第１の位置７４０で重なってよい。図７は、第１のロボットデバイス７２０が西へ移動し、続いて第１の位置７４０を通り北へ移動するようにスケジュールされたこと、および第２のロボットデバイス７３０が、北へ移動し、続いて第１の位置７４０を通り西へ移動するようにスケジュールされたことを示す。このように、第１の時間パラメータ化経路７２２および第２の時間パラメータ化経路７３２は第１の位置７４０で重なる。２つまたはそれ以上の位置で重なる経路を含む他の時間パラメータ化経路も可能である。更に追加の例において、２つ以上の時間パラメータ化経路は、たとえば１つのロボットデバイスが第２のロボットデバイスと同じ経路または同じ経路の一部を移動するようにスケジュールされた場合（たとえば第１のロボットデバイスが第２のロボットデバイスに追従する場合）、複数の連続した位置で重なってよい。いくつかの例において、２つの時間パラメータ化経路は、正確に同じ位置を共有しなくてもよいが、それでもなお、経路を実行するようにスケジュールされたロボットデバイスの足跡に基づいて重なり得る。たとえば、第１のロボットデバイスは幅広の足跡を有してよく、そのため、第１の時間パラメータ化経路の両側に平行に走り得る経路と重なってよい。このように、第２の時間パラメータ化経路と重なる第１の時間パラメータ化経路は、１または複数のロボットデバイスの足跡または掃引エリアを含んでよい。
【００９２】
［0102］  いくつかの例において、第１のロボットデバイス７２０は、第２の時間パラメータ化経路７３２を受信するように構成されてよく、受信した第２の時間パラメータ化経路に基づいて、第１のロボットデバイス７２０は、第１の位置７４０を決定してよい。たとえば、第１のロボットデバイス７２０は、第１の時間パラメータ化経路７２２と第２の時間パラメータ化経路７３２とを比較し、経路が重なる（またはロボットデバイスの足跡が重なり得るほど接近した）任意の位置を決定してよい。
【００９３】
［0103］  いくつかの例において、第１の位置７４０は、第１のロボットデバイス７２０と経路計画システム７１０との間の通信を容易にしない環境エリアにあってよい。図７はこの事例を示し、第１の位置７４０はエリア７０２ｃにあり、その位置において、ロボットデバイス７２０は経路計画システム７１０と通信することができない。
【００９４】
［0104］  第１のロボットデバイス７２０は、第１の位置７４０に到達する前に第１の時間パラメータ化経路７２２の第１の部分を実行するようにも構成されてよく、第１の部分の実行は、第１の時間パラメータ化経路７２２に沿った第１のロボットデバイスの第１の進捗率に対応する。第１の時間パラメータ化経路７２２の第１の部分は、現在位置から後にスケジュールされた位置へ伸長する第１の時間パラメータ化経路のセグメント、チャンク、または離散化部分であってよい。いくつかの例において、第１の部分は、第１のロボットデバイス７２０および環境７００の１または複数の特徴に基づいて、第１のロボットデバイス７２０が所与の時間で移動すると予想される部分である。たとえば、第１の部分は、第１の時間パラメータ化経路７２２のうち、第１のロボットデバイス７２０が５秒間で移動すると予想される距離であってよい。実際の距離は、たとえば環境の勾配、１または複数の安全または成績係数、またはロボットデバイスの速度、配向、負荷、または他の特徴など、多数の要因に依存してよい。第１の時間パラメータ化経路７２２の第１の部分は、第１の位置７４０（すなわち、第１および第２の時間パラメータ化経路が重なる位置）まで伸長してよい。
【００９５】
［0105］  第１の部分の実行は、第１の進捗率に対応してよい。後述する図８Ａ〜Ｄおよび図９Ａ〜Ｄは、各ロボットデバイスが調和または予定タイムラインと比較してどの程度進んでまたは遅れているかを示す、各ロボットデバイスに関するタイムラインを示す。調和タイムラインと第１のロボットデバイス８２０に対応するタイムラインとの差が、第１の進捗率であってよい。図８〜図９には時間の差として示されるが、第１の進捗率は、距離、時間、距離／時間、または他の任意のメトリック単位で測定されてもよい。「進捗率」という用語は、スケジュールされた時間パラメータ化経路に沿ったロボットデバイスの進捗の程度を示す任意の測定値を指してよい。このように、第１の進捗率は、第１のロボットデバイス７２０が第１の部分の実行後に第１の時間パラメータ化経路７２２に沿ってどれほど移動したかを示してよい。第１の進捗率は、第１のロボットデバイス７２０がスケジュールよりどれほど進んでまたは遅れているかに対応する距離、時間、または他のメトリックの程度を示してもよい。たとえば、ロボットデバイスは、第１の部分の実行中に１０メートル移動するようにスケジュールされ得るが、実際には、９メートルしか移動しないことがある。その結果、ロボットデバイスは、スケジュールより１メートル遅れ得る（ロボットデバイスが第１の部分を毎秒０．５メートル移動する場合、これは２秒の遅延に対応し得る）。
【００９６】
［0106］  第１のロボットデバイス７２０は、その後、第２の時間パラメータ化経路７３２に沿った第２のロボットデバイス７３０の第２の進捗率を示す、第２のロボットデバイス７３０からの通信信号を受信するように構成され得る。ロボットデバイスの１または複数は、任意の種類の短距離無線通信（たとえばＢｌｕｅｔｏｏｔｈ、ＺｉｇＢｅｅ、赤外線など）を含む、他のロボットデバイスとの通信のために構成され得る。いくつかの例において、第１のロボットデバイス７２０が第１の位置７４０に接近する時、その位置には、第１のロボットデバイス７２０および第２のロボットデバイス７３０が、デバイス間で信号が送信されるのに十分なほど近付く地点があってよい。
【００９７】
［0107］  第２の進捗率は、上述した第１の進捗率と同様または同一であってよい。しかし、第２の進捗率は、第２の時間パラメータ化経路７３２に沿った第２のロボットデバイス７３０の進捗に対応してよい。いくつかの例において、第２の進捗率は、第２の時間パラメータ化経路７３２のスケジュールと比較して、第２のロボットデバイス７３０が（距離、時間、または他の何らかのメトリックのいずれかにおいて）スケジュールより進んでまたは遅れていることを示してよい。
【００９８】
［0108］  ロボットデバイス７２０は、第１の進捗率と第２の進捗率との差を決定するようにも構成され得る。第１および第２のロボットデバイスが互いに通信することしかできない環境において、進捗率の差は、時間パラメータ化経路と比較される絶対進捗率よりも重要であってよい。これは、両方のロボットデバイスが同じ程度だけ遅延している（よって、それぞれの時間パラメータ化経路と比較した場合に同じ進捗率を有する）場合、それらの経路は同調したままであり、問題が生じないためである。あるいは、進捗率に大きな差がある場合、それぞれの時間パラメータ化経路はもはや同調しておらず、問題が生じ得る。
【００９９】
［0109］  決定された第１および第２の進捗率の差に基づいて、第１のロボットデバイス７２０は、第１の時間パラメータ化経路７２２の実行を修正してよい。いくつかの例において、第１のロボットデバイスの実行を修正することは、動きおよび／または実行を停止し、減速し、またはこれに遅延を加えることを含んでよい。一定期間停止する第１のロボットデバイスの例は、図９Ａ〜Ｄに関して後述される。たとえば、第１のロボットデバイス７２０が、第１の進捗率と第２の進捗率との差が、第２のロボットデバイス７３０が第１のロボットデバイス７２０に対して３秒スケジュールに遅れているものであると決定した場合、第１のロボットデバイス７２０は、第２のロボットデバイス７３０と同調するために自身の実行に３秒間の休止を挿入してよい。挿入された遅延により、第１および第２のロボットデバイス７２０および７３０は、同じ結果をもたらす（相似性の閾値範囲内の）進捗率を有し得、両方のロボットデバイスは、同じまたは同様の程度だけスケジュールに遅れる。また、休止を挿入する代わりに、第１のロボットデバイス７２０は、比較的緩慢な速度で第１の時間パラメータ化経路７２２の実行を継続してよく、それによって第１および第２のロボットデバイスは、時間をかけてそれらの進捗率を同調させる。
【０１００】
［0110］  他の例において、第１の時間パラメータ化経路７２２の実行を修正することは、第１のロボットデバイス７２０に、以前の位置へ引き返させることを含んでよい。いくつかの環境は、ロボットデバイスが移動し得る廊下、通路、または他の狭いレーンを含んでよい。これらの環境において、たとえば、２つのロボットデバイスに関する時間パラメータ化経路は、同じ時間または同じ時間付近に反対方向へ廊下を通行するロボットデバイスを有してよい。１つのロボットデバイスが閾値量より大きくスケジュールから外れている場合、両方のロボットデバイスが同時に廊下内にあり、どちらも進行できない状況が発生し得る。第１のロボットデバイスは、これらの例において、第１の時間パラメータ化経路に沿って以前の位置まで引き返し、逆行、または後方へ移動することによって、第１の時間パラメータ化経路の実行を修正してよい。第１のロボットデバイスがスケジュール通りであり、第２のロボットデバイスがスケジュールに遅れており、両方のデバイスが互いに遮断し合っている場合、第１のロボットデバイスは、第２のロボットデバイスが更にスケジュールに遅れないように自身が引き返すべきであると決定してよい。
【０１０１】
［0111］  他の例において、第１の時間パラメータ化経路７２２を修正することは、第１のロボットデバイス７２０に加速させることを含んでよい。たとえば、第１のロボットデバイス７２０が、第２のロボットデバイス７３０がスケジュールより進んでいること、または第１のロボットデバイスが第２のロボットデバイスよりも大きくスケジュールに遅れていることを決定した場合、第１のロボットデバイスは、第２のロボットデバイス７３０にキャッチアップするために実行を加速してよい。あるいは、第１および第２の進捗率の相対差、およびどちらのロボットデバイスが他方より進んでいるかに依存して、第１のロボットデバイスは第２のロボットデバイス７３０に、第２の時間パラメータ化経路７３２の実行を加速させ、減速させ、停止させ、またはこれに遅延を加えさせるように命令を送信してよい。
【０１０２】
［0112］  また他の例において、第１の時間パラメータ化経路７２２の実行を修正することは、第１のロボットデバイス７２０に代替ルートまたは経路を決定させることを含んでよい。代替ルートまたは経路は、代替時間パラメータ化経路であってよく、１または複数の異なる位置および対応するタイムスタンプを含んでよい。このように、代替経路は、第１のロボットデバイス７２０に、第１の時間パラメータ化経路７２２によって決定された経路の外を移動させ得る。これは特に、第２のロボットデバイスが故障し、第１のロボットデバイスの経路を遮断している場合に適用可能であり得る。
【０１０３】
［0113］  いくつかの例において、第１のロボットデバイス７２０は、第１の進捗率と第２の進捗率との差が閾値時間パディングよりも大きいことを決定してよい。この決定に基づいて、第１のロボットデバイス７２０は、第１の時間パラメータ化経路７２２の実行を修正してよい。たとえば、時間パディングは、小さなずれに関してはロボットデバイスによる調整が必要でないように、時間パラメータ化経路が生成された時に考慮され得る。ロボットデバイスが時間パディングよりも小さく遅れている場合、調整の必要はなくてよい。このパディングは、ロボットデバイスが、持続的な調整および同期化の必要性を伴わずに動作することを可能にし得る。第１のロボットデバイス７２０が、第１の進捗率と第２の進捗率との差が１秒（すなわち閾値時間パディング）を上回ることを決定した場合、第１のロボットデバイス７２０は、第１の時間パラメータ化経路７２２の実行を修正してよい。しかし、差が１秒未満である場合、第１のロボットデバイス７２０は行動を起こさなくてよい。
【０１０４】
［0114］  また、時間（または空間）バッファの概念は、本明細書に開示される１または複数の他の例にも適用され得る。
【０１０５】
［0115］  第１のロボットデバイス７２０は更に、第３のロボットデバイスへ通信信号を送信するために構成され得る。通信信号は、第１のロボットデバイス７２０および第２のロボットデバイス７３０の進捗率を示してよい。また、第１のロボットデバイスは、第１の時間パラメータ化経路７２２、第２の時間パラメータ化経路７３２、および／または、第１および／または第２のロボットデバイスの経路、進捗、遅延、または他の特徴に関連する他の任意の情報を送信してよい。
【０１０６】
［0116］  いくつかの例において、第１のロボットデバイス７２０は、第１の時間パラメータ化経路７２２の実行を修正し、その後、修正された第１の進捗率を決定してよい。第１のロボットデバイス７２０はその後、第１の進捗率、修正された第１の進捗率、および第２の進捗率のいずれかまたは全てを示す通信信号を第３のロボットデバイスへ送信してよい。また、通信信号は、第１の進捗率と第２の進捗率との差に応答して第１のロボットデバイス７２０および／または第２のロボットデバイス７３０によって行われた任意の補正、遅延、修正、または他の変更を示してよい。
【０１０７】
［0117］  第１のロボットデバイス７２０は更に、１または複数のロボットデバイスの進捗率、１または複数のロボットデバイスへの任意の修正、または時間パラメータ化経路およびロボットデバイスに関する他の任意の情報を経路計画システム７１０へ報告するように構成され得る。報告は、第１のロボットデバイス７２０が第１の位置７４０を通過し、経路計画システム７１０との接続性を有する領域またはエリア（たとえばエリア７０２ａ）に入った後、発生してよい。
【０１０８】
［0118］  いくつかの例において、環境の所定の接続性マップが用いられ得る。所定の接続性マップは、経路計画システムとロボットデバイスとの間の通信が可能であるエリア、および通信が不可能または信頼できないエリアを記載するマップを提供してよい。このマップは、１または複数の時間パラメータ化経路に関する開始および／または終了位置を決定するため、および第１のロボットデバイスが第１の位置を通過し、経路計画システムとの接続性を有する領域に入った後、第２のロボットデバイスの第２の進捗率を経路計画システムへ報告するために用いられ得る。
Ｖ．シナリオ例
【０１０９】
［0119］  図８Ａ〜Ｄは、理想的な条件下での実施形態例の実行中の時間における４つの段階のセットを示す。図８Ａは、第１のロボットデバイス８２０および第２のロボットデバイス８３０が経路計画システム８１０付近に位置する第１の時点を示す。各ロボットデバイスは、ロボットデバイスが他の各ロボットデバイスまたはシステムと通信することができるエリアを表す点線の円とともに示される。図８および図９において、各ロボットデバイスの周囲の点線円は、短距離通信が行われ得る距離に対応する。
【０１１０】
［0120］  図８Ａにおいて、各ロボットデバイスは、それぞれの時間パラメータ化経路８２２および８３２を受信する。図８Ａは、調和タイムライン、およびそれぞれ第１のロボットデバイス８２０および第２のロボットデバイス８３０に対応する２つのタイムラインも示す。調和タイムラインは、理想または予定タイムラインに対応するグローバルまたはユニバーサルタイムラインであってよい。図８Ａ〜Ｄにおいて、時間パラメータ化経路８２２および８３２は同じ時間に開始し、タイムラインは全て同時に開始するものとして示される。このように、第１のロボットデバイス８２０および第２のロボットデバイス８３０は調和タイムラインを有する。しかし、いくつかの例は、異なる時点で開始または終了し、互いにずれた時間パラメータ化経路を含んでよい。これらの例において、各ロボットデバイスに対応する様々な調和タイムラインが存在してよい。これらの様々な調和タイムラインは、各ロボットデバイスがどの程度逸脱しているかを決定するために、各ロボットデバイスの実際のタイムラインと比較され得る。
【０１１１】
［0121］  図８Ａは、時間パラメータ化経路８２２および８３２が位置８４０で重なることも示す。このように、第１のロボットデバイス８２０は、第２のロボットデバイス８３０のインジケーションを受信してよく、インジケーションは、第１のロボットデバイス８２０が第２のロボットデバイス８３０に遭遇すると予想することができる場所（すなわち位置８４０またはその付近）を決定するために用いられ得る。
【０１１２】
［0122］  図８Ｂは、第１の段階から３０秒後の第２の時間段階を示す。経過した３０秒において、両方のロボットデバイス８２０および８３０は、それぞれの時間パラメータ化経路の一部を実行し、図８Ｂに示す位置へ移動した。この第２の時間段階において、両方のロボットデバイスはスケジュール通りであり、これらの進捗率は同じである。
【０１１３】
［0123］  図８Ｃは、第１の時間段階から５５秒後の第３の時間段階を示す。第１のロボットデバイス８２０は、位置８４０に接近すると、（受信した第２のロボットデバイスのインジケーションに基づいて）第２のロボットデバイス８３０に遭遇することを予想し得る。第２のロボットデバイス８３０は、自身がスケジュール通りであること、および第２の進捗率は調和タイムラインと比較してゼロ秒であることを示す通信信号を、第１のロボットデバイス８２０へ送信してよい。第１のロボットデバイス８２０もまた、調和タイムラインに対してゼロ秒の進捗率を有してスケジュール通りであるため、これらの進捗率に差はない。その結果、第１のロボットデバイス８２０は、第１の時間パラメータ化経路８２２の実行を修正するための行動を起こさなくてよい。
【０１１４】
［0124］  図８Ｄは、第１の時間段階から７５秒後の第４の時間段階を示す。両方のロボットデバイスはスケジュール通りであり、２つの経路の適切な計画および調和により、ロボットデバイスが衝突することはない。この第４の時間段階において、第２のロボットデバイス８３０は、位置８４０を通過して西へ移動中であり、第１のロボットデバイスは、北への移動中に位置８４０に到達した。
【０１１５】
［0125］  図９Ａ〜Ｄは、第２のロボットデバイス８３０がスケジュールに遅れ、それに応じて第１のロボットデバイス８２０が、第２のロボットデバイス８３０と同調するために時間パラメータ化経路８２２の実行を遅延させる状況下での実施形態例の実行中の時間における４つの段階を示す。
【０１１６】
［0126］  図９Ａは、両方のロボットデバイスが、同じ時点で開始し位置８４０で重なるそれぞれの時間パラメータ化経路を受信するという点で、図８Ａと同様または同一であってよい。
【０１１７】
［0127］  図９Ｂは、第１の時間段階から３０秒後の第２の時間段階を示す。第１のロボットデバイス８２０は、スケジュールに従って移動した結果、調和タイムラインと比較してゼロ秒の進捗率を有する。しかし第２のロボットデバイス８３０は、２０秒しか時間パラメータ化経路８３２に沿って前方へ移動しておらず、その結果、スケジュールより１０秒遅れている。したがって第２のロボットデバイスはマイナス１０秒の第２の進捗率を有する。
【０１１８】
［0128］  図９Ｃは、第１の時間段階から５５秒後の第３の時間段階を示す。第１のロボットデバイス８２０は、スケジュールに従って進行した結果、ゼロ秒の進捗率を有する。しかし第２のロボットデバイスは、追加の５秒遅れており、その結果、マイナス１５秒の第２の進捗率を有する。
【０１１９】
［0129］  第１のロボットデバイス８２０は、位置８４０に接近（し、点線円によって示すように第２のロボットデバイス８３０の通信距離範囲内に到来）すると、第２の進捗率を示す、第２のロボットデバイス８３０からの通信信号を受信することを予想してよい。第１のロボットデバイス８２０は、第２のロボットデバイス８３０の第２の進捗率がマイナス１５秒であることを示す通信信号を受信する。
【０１２０】
［0130］  第１のロボットデバイス８２０は、第２のロボットデバイス８３０が「キャッチアップ」することを可能にし、それぞれのロボットデバイスによる第１および第２の時間パラメータ化経路の実行を同調させるために、（受信した第２の進捗率に基づいて）１５秒間動きを停止してよい。
【０１２１】
［0131］  図９Ｄは、第１の時間段階から７５秒後の第４の時間段階を示す。この段階において、第１のロボットデバイス８２０は、１５秒間停止し、第２のロボットデバイス８３０がキャッチアップすることを可能にした。図９Ｄから分かるように、両方のロボットデバイスの進捗率は現在、調和タイムラインと比較してマイナス１５秒である。この時点で両方のロボットデバイスがスケジュールに遅れているが、これらは同じ程度スケジュールに遅れているので、衝突の危険は回避される。
【０１２２】
［0132］  図９Ａ〜Ｄは、第１のロボットデバイス８２０が、１５秒間停止および待機することによって第１の時間パラメータ化経路８２２の実行を修正したことを示す。しかし、第１のロボットデバイス８２０は代わりに、たとえば本開示で説明したような他の行動（移動を減速、逆行または引き返しなど）をとってもよいことを理解すべきである。
ＶＩ．動作例
【０１２３】
［0133］  図１０は、方法１０００の例のフローチャートを示す。この方法例は、ロボットデバイス１２０、７２０、７３０、８２０、または８３０、倉庫管理システム２１０、経路計画システム７１０、コンピューティングデバイス６００、コンピューティングクラスタ６０９ａ〜ｃ、または１または複数の他のコンピューティングデバイスまたはシステムによって実行され得る。
【０１２４】
［0134］  ブロック１０１０において、方法１０００は、第１のロボットデバイスに関する第１の時間パラメータ化経路を受信することを含んでよい。第１の時間パラメータ化経路は、第１のロボットデバイスが実行するように命令されたタスクに対応してよい。
【０１２５】
［0135］  ブロック１０２０において、方法１０００は、第１の位置において第１の時間パラメータ化経路と重なる第２の時間パラメータ化経路を有する第２のロボットデバイスのインジケーションを受信することを含んでよい。第２のロボットデバイスのインジケーションは、第１のロボットデバイスによって、第１の時間パラメータ化経路の実行中に第２のロボットデバイスを探索するため、または第２のロボットデバイスからの通信の受信を示し、またはこれに備えるために用いられ得る。
【０１２６】
［0136］  ブロック１０３０において、方法１０００は、第１の位置に到達する前に第１の時間パラメータ化経路の第１の部分を実行することを含んでよく、第１の部分の実行は、第１の時間パラメータ化経路に沿った第１のロボットデバイスの第１の進捗率に対応する。
【０１２７】
［0137］  ブロック１０４０において、方法１０００は、第２の時間パラメータ化経路に沿った第２のロボットデバイスの第２の進捗率を示す、第２のロボットデバイスからの通信信号を受信することを含んでよい。
【０１２８】
［0138］  ブロック１０５０において、方法１０００は、第１の進捗率と第２の進捗率との差を決定することを含んでよい。
【０１２９】
［0139］  ブロック１０６０において、方法１０００は、決定された差に基づいて、第１の時間パラメータ化経路の実行を修正することを含んでよい。
【０１３０】
［0140］  いくつかの実施形態において、方法１０００は更に、第３のロボットデバイスへ通信信号を送信することを含んでよく、通信信号は、第１および／または第２のロボットデバイスの進捗率、修正された進捗率、および第１および／または第２の時間パラメータ化経路の実行になされた調整または修正、または第１および第２のロボットデバイスに関する他の情報を示す。
【０１３１】
［0141］  また更に、方法１０００は、第１のロボットデバイスが経路計画システムへ、任意の進捗率、変更、修正、または、第１の時間パラメータ化経路の実行中に収集または決定された他の情報を報告することを含んでよい。報告は、第１のロボットデバイスが、経路計画システムとの通信を容易にする環境エリアまたは領域内へ移動すると、発生してよい。
ＶＩＩ．結論
【０１３２】
［0142］  本明細書に開示されるいくつかの例は、特定の配向またはレイアウトのロボットデバイスおよび調和経路に関して説明された。別の配向およびレイアウトが可能であり本明細書において考慮されることを理解すべきである。また、本明細書で説明される配置は、例示目的にすぎないことも理解すべきである。このように、当業者は、他の配置および他の要素（たとえばデバイス、システム、インタフェース、動作、順序、および動作のグルーピングなど）が代わりに用いられてよく、いくつかの要素は、所望の結果に従って省略され得ることを理解する。また、説明された要素の多くは、個別または分散型構成要素として、あるいは任意の適切な組み合わせおよび位置において他の構成要素とともに実装され得る機能エンティティであり、または、独立構造として説明された他の構造要素が結合されてもよい。
【０１３３】
［0143］  様々な態様および実装が本明細書に開示されたが、当業者には他の態様および実装は明らかである。本明細書に開示された様々な態様および実装は、例示目的であって、限定的であることは意図されておらず、適正な範囲は、クレームが権利を付与された全ての範囲の均等物とともに、以下のクレームによって示される。また、本明細書で用いられる用語は、特定の実装を説明することのみを目的としており、限定的であることは意図されないことも理解すべきである。
【図１】
0006903687.tif 000003
【図２】
0006903687.tif 000004
【図３】
0006903687.tif 000005
【図４】
0006903687.tif 000006
【図５】
0006903687.tif 000007
【図６Ａ】
0006903687.tif 000008
【図６Ｂ】
0006903687.tif 000009
【図７】
0006903687.tif 000010
【図８Ａ】
0006903687.tif 000011
【図８Ｂ】
0006903687.tif 000012
【図８Ｃ】
0006903687.tif 000013
【図８Ｄ】
0006903687.tif 000014
【図９Ａ】
0006903687.tif 000015
【図９Ｂ】
0006903687.tif 000016
【図９Ｃ】
0006903687.tif 000017
【図９Ｄ】
0006903687.tif 000018
【図１０】
0006903687.tif 000019