(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-17
(45)【発行日】2023-11-28
(54)【発明の名称】ロボットシステムシミュレーションエンジン
(51)【国際特許分類】
B25J 9/22 20060101AFI20231120BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2022519113
(86)(22)【出願日】2020-09-28
(86)【国際出願番号】 US2020053073
(87)【国際公開番号】W WO2021080744
(87)【国際公開日】2021-04-29
【審査請求日】2022-05-24
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521105662
【氏名又は名称】デクステリティ・インコーポレーテッド
【氏名又は名称原語表記】DEXTERITY,INC.
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】サン・チョウエン
(72)【発明者】
【氏名】クラリー・ウィリアム・アーサー
(72)【発明者】
【氏名】チャベス・ケヴィン・ホセ
(72)【発明者】
【氏名】ポッテイル・ベン・ヴァーキー・ベンジャミン
(72)【発明者】
【氏名】ピダパーシ・ロイット・アルカ
(72)【発明者】
【氏名】ハウ・ロジャー・ラム
(72)【発明者】
【氏名】メノン・サミア
【審査官】樋口 幸太郎
(56)【参考文献】
【文献】特開2019-081204(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/22
(57)【特許請求の範囲】
【請求項1】
システムであって、
通信インターフェースと、
前記通信インターフェースに接続されているプロセッサと、
を備え、
前記プロセッサは、
ロボット制御システムから、前記通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信し、
前記ロボット要素による前記行動の実行をシミュレートし、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新し、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告するよう構成されて
おり、
前記行動は、前記プロセッサが第1物理的位置でシミュレートするよう構成されている第1行動セットに含まれており、前記プロセッサは、さらに、第2物理的位置で第2行動セットをシミュレートするよう構成され、前記ロボット制御システムは、前記第1行動セットの前記シミュレーションおよび前記第2行動セットの前記シミュレーションを用いて、前記第1物理的位置で動作を実行するための計画を決定するよう構成され、
前記第1物理的位置は、アイテムの供給元の位置であり、
前記第2物理的位置は、前記アイテムが出荷される1または複数の目的地である、システム。
【請求項2】
請求項1に記載のシステムであって、
さらに、前記プロセッサに接続され、前記状態追跡データを格納するよう構成されているメモリを備える、システム。
【請求項3】
請求項1に記載のシステムであって、
前記通信内で示される前記行動は、前記ロボット要素を含む1セットのロボット要素を用いて
要求のセットを満たすために前記ロボット制御システムによって生成された計画に従って、前記ロボット制御システムによって決定される、システム。
【請求項4】
請求項3に記載のシステムであって、
前記ロボット制御システムは、前記ロボット要素による前記行動の前記シミュレートされた実行に少なくとも部分的に基づいて生成されたシミュレーション結果を用いて、前記計画を検証または改良するよう構成されている、システム。
【請求項5】
請求項3に記載のシステムであって、
現実の物理的な世界で前記行動を実行するように前記ロボット要素の動作を制御するよう構成されている非シミュレーションエージェントと通信するために前記ロボット制御システムによって用いられるのと同じインターフェースを介して、前記通信が前記ロボット制御システムから受信され、前記報告が前記ロボット制御システムへ送信される、システム。
【請求項6】
請求項1に記載のシステムであって、
前記プロセッサは、さらに、前記ロボット要素に関連付けられたロボット制御エージェントをエミュレートするよう構成されている、システム。
【請求項7】
請求項1に記載のシステムであって、
前記プロセッサは、少なくとも部分的には、前記ロボット要素の物理的構成および動的挙動特性を表すデータを含むモデルを用いることによって、前記ロボット要素による前記行動の実行をシミュレートするよう構成されている、システム。
【請求項8】
請求項7に記載のシステムであって、
前記モデルは、前記ロボット要素による前記行動の実行に関連する時間を示すデータを含む、システム。
【請求項9】
請求項1に記載のシステムであって、
前記ロボット要素は、エンドエフェクタを有するロボットアームを備える、システム。
【請求項10】
請求項9に記載のシステムであって、
前記行動は、前記ロボットアームおよびエンドエフェクタを用いて、アイテムを移動元位置からピックして、前記アイテムを移動先位置にプレースすることを含む、システム。
【請求項11】
請求項10に記載のシステムであって、
前記移動元位置は、移動元トレイまたはその他の移動元容器を含み、前記移動先位置は、移動先トレイまたはその他の容器を含む、システム。
【請求項12】
請求項1に記載のシステムであって、
前記プロセッサは、前記ロボット要素による前記行動のシミュレートされた実行に関連するエラー状態を検出するよう構成されている、システム。
【請求項13】
請求項12に記載のシステムであって、
前記プロセッサは、前記エラー状態を示すフィードバックデータを前記ロボット制御システムに提供するよう構成されている、システム。
【請求項14】
請求項13に記載のシステムであって、
前記ロボット制御システムは、前記フィードバックデータに少なくとも部分的に基づいて計画を改良するよう構成されている、システム。
【請求項15】
方法であって、
ロボット制御システムから、通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信する工程と、
前記ロボット要素による前記行動の実行をシミュレートする工程と、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新する工程と、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告する工程と、
を備え
、
前記行動は、第1物理的位置でシミュレートするよう構成されている第1行動セットに含まれており、
前記シミュレートする工程は、さらに、第2物理的位置で第2行動セットをシミュレートする工程を含み、
前記ロボット制御システムによって、前記第1行動セットの前記シミュレーションおよび前記第2行動セットの前記シミュレーションを用いて、前記第1物理的位置で動作を実行するための計画を決定する工程を、さらに備え、
前記第1物理的位置は、アイテムの供給元の位置であり、
前記第2物理的位置は、前記アイテムが出荷される1または複数の目的地である、方法。
【請求項16】
請求項
15に記載の方法であって、
前記通信内で示される前記行動は、前記ロボット要素を含む
ロボット要素のセットを用いて
要求のセットを満たすために前記ロボット制御システムによって生成された計画に従って、前記ロボット制御システムによって決定される、方法。
【請求項17】
請求項
16に記載の方法であって、
前記ロボット制御システムは、前記ロボット要素による前記行動の前記シミュレートされた実行に少なくとも部分的に基づいて生成されたシミュレーション結果を用いて、前記計画を検証または改良するよう構成されている、方法。
【請求項18】
請求項
16に記載の方法であって、
現実の物理的な世界で前記行動を実行するように前記ロボット要素の動作を制御するよう構成されている非シミュレーションエージェントと通信するために前記ロボット制御システムによって用いられるのと同じインターフェースを介して、前記通信が前記ロボット制御システムから受信され、前記報告が前記ロボット制御システムへ送信される、方法。
【請求項19】
コンピュータプログラム製品であって、非一時的なコンピュータ読み取り可能媒体内に具現化され、
ロボット制御システムから、通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信するためのコンピュータ命令と、
前記ロボット要素による前記行動の実行をシミュレートするためのコンピュータ命令と、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新するためのコンピュータ命令と、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告するためのコンピュータ命令と、
を備え
、
前記行動は、第1物理的位置でシミュレートするよう構成されている第1行動セットに含まれており、
前記シミュレートするためのコンピュータ命令は、さらに、第2物理的位置で第2行動セットをシミュレートするためのコンピュータ命令を含み、
前記ロボット制御システムによって、前記第1行動セットの前記シミュレーションおよび前記第2行動セットの前記シミュレーションを用いて、前記第1物理的位置で動作を実行するための計画を決定するためのコンピュータ命令を、さらに備え、
前記第1物理的位置は、アイテムの供給元の位置であり、
前記第2物理的位置は、前記アイテムが出荷される1または複数の目的地である、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
他の出願への相互参照
本願は、2019年10月25日出願の米国仮特許出願第62/926,172号「ROBOTIC SYSTEM SIMULATION ENGINE」に基づく優先権を主張し、その仮特許出願は、すべての目的のために参照により本明細書に組み込まれる。
【背景技術】
【0002】
ロボットキッティングシステムが、類似および/または非類似のアイテムのキットを組むために提供されてきた。含められるべきアイテムが、移動元位置(収容箱、棚、または、その他の容器など)からピックされ、移動先容器(箱、収容箱(bin)、トレイ、または、トート(tote)、など)にプレースされる。
【0003】
求められるスループットを達成するために、いくつかの文脈においては、多くのおよび/または様々なキットを組むなど、タスクのセットを実行するために、協調的に作業する複数のロボットを用いることが、必要または望ましい場合がある。複数のロボットが利用される場合、計画および制御が、衝突または干渉を回避し、ならびに、所望のスループットまたはその他の性能の尺度を達成するためにロボットの利用を最適化する、などの目標を達成しなければならない。
【0004】
全体目標の達成に向けて動作およびタスクを実行するようロボットを計画および/またはスケジューリングするためのアルゴリズムが、計算上および/または運用上実際的な時間で計画を生成ができるように、単純化の仮定に依存してよい。
【図面の簡単な説明】
【0005】
以下の詳細な説明および添付の図面において、本発明の様々な実施形態を開示する。
【0006】
【
図1】移動元容器から移動先容器へアイテムをピックアンドプレースするためのロボットシステムの一実施形態を示すブロック図。
【0007】
【0008】
【
図3】ロボットシステムおよび作業空間の一実施形態を示すブロック図。
【0009】
【
図4A】ロボット制御システムの一実施形態を示すブロック図。
【0010】
【
図4B】ロボットシステムシミュレーションエンジンの一実施形態を示すブロック図。
【0011】
【
図5A】ロボットシステムシミュレーションエンジンの一実施形態を示すブロック図。
【0012】
【
図5B】ロボットシステムをシミュレートするための処理の一実施形態を示す機能フロー図。
【0013】
【
図6】ロボットシステムを制御するための処理の一実施形態を示すフローチャート。
【0014】
【
図7】計画を検証および/または改良するためのシミュレーションを実行するための処理の一実施形態を示すフローチャート。
【0015】
【
図8】計画を用いてロボットシステムを制御するための処理の一実施形態を示すフローチャート。
【0016】
【
図9A】ロボットシステムシミュレーションエンジンの一実施形態において、複数の物理的位置にわたって最適化を行う一例を示す図。
【0017】
【
図9B】複数の物理的位置にわたって最適化を行うための処理の一実施形態を示すフローチャート。
【発明を実施するための形態】
【0018】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実施されうる。本明細書では、これらの実施例または本発明が取りうる任意の他の形態が、技術と呼ばれうる。一般に、開示されている処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、或る時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【0019】
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【0020】
ロボットシステムシミュレーションエンジンが開示されている。シミュレーションエンジンは、システムの属性、物理的寸法、制約、機能、性能特性などに基づいて、システムをモデル化する。様々な実施形態において、本明細書で開示されているロボットシステムシミュレーションエンジンは、キッティング動作を実行するためのロボットシステムの利用を決定して調整するために用いられる。いくつかの実施形態において、複数の計画が、実施されるべき最適な計画を決定するためにシミュレートされてよい。いくつかの実施形態において、1または複数の単純化の仮定に少なくとも部分的に依存するスケジューリングアルゴリズムを用いて、例えば、スケジューラまたはその他のシステム、モジュール、または、構成要素によって、プログラム的に生成された計画が、その計画に従ってロボットシステムの動作をシミュレートすることによって検証および/または改良される。
【0021】
いくつかの実施形態において、シミュレーションの結果は、動画シーケンスなどの表示を提供するため、動作がどのように実行されるのか(または、実行されうるのか/実行されえたのか)を視覚的に示すため、所望の結果、スループット、または、その他の性能の尺度が達成されうる/達成される/達成されるだろうことを立証するため、などの目的で用いられてよい。
【0022】
様々な実施形態において、本明細書で開示されているロボットシステムシミュレーションエンジンは、マルチロボットシステムをモデル化する。シミュレーションエンジンは、求められるスループットなどで一連のキッティング動作を実行するために複数のロボットが用いられるロボット動作を計画および実施するために様々な実施形態において用いられるシミュレーション結果を生成する。
【0023】
様々な実施形態において、ロボット設備/システムがスループット要件を満たすことを保証するため、および/または、スループットを最大化するためのロボットピッキングおよび移動のパターンの最適化を助けるために、プロセスシミュレーションが用いられる。いくつかの実施形態において、プロセスシミュレーションは、ロボットシステムが、システムによって達成されることが期待されるおよび/または求められる結果が達成されることを検証すること、ならびに/もしくは、一連のタスクを実行するための代替シナリオもしくは計画をテストして最適または比較的最適なソリューションを選択すること、を可能にするシミュレーション結果を生成するために、例えば、環境が変化した時、予期せぬイベントが発生した時、などに、生成および/または再生成/更新される。
【0024】
いくつかの実施形態において、本明細書で開示されているキッティングプロセスシミュレーションエンジンは、求められているスループット、目標などが達成されうる/達成されることを人間のユーザに向けて立証/説明する目的で、視覚的表示(例えば、動画シーケンス)を提供するために用いられてよい。
【0025】
図1~
図3は、ロボットシステムおよび関連作業空間の例を示しており、そこで、ロボット設備/システムがスループットおよび/またはその他の要件を満たすことを補償するため、ならびに/もしくは、スループットの最大化、衝突回避などのために、ロボットピッキングおよび移動のパターンを最適化する助けとなるために、プロセスシミュレーションが本明細書で開示されているように用いられる。具体的な環境が、
図1~
図3に示されているが、本明細書で開示されている技術は、様々な実施形態において、その他のロボット作業空間、環境、および、コンテキスト(状況)で同様に用いられてよい。
【0026】
図1は、移動元容器から移動先容器へアイテムをピックアンドプレースするためのロボットシステムの一実施形態を示すブロック図である。図の例において、システム100は、レール106に沿って平行移動するよう構成されているキャリッジ104上に回転可能に取り付けられたロボットアーム102を備える。例えば、キャリッジ104は、キャリッジ104をレール106に沿って移動させて、例えば、ロボットアーム102を所望の位置に再配置するために、ロボット/コンピュータの制御下で用いられるよう構成されているコンピュータ制御機械および/または電気機械駆動メカニズムを備えてよい。この例において、ロボットアーム102は、キャリッジ104およびレール106上に移動可能に取り付けられているが、様々な他の実施形態において、ロボットアーム102は、固定されていてもよいし、例えば、カルーセル上に取り付けられている、モータ駆動シャーシ上で完全に移動可能である、など、レールに沿った平行移動以外で、完全にまたは部分的に移動可能であってもよい。
【0027】
図の例において、ロボットアーム102は、その作用遠位端(キャリッジ104から最も遠い端部)にエンドエフェクタ108を有する。エンドエフェクタ108は、コンプライアントな真空(または「吸着」)カップ110を備える。様々な実施形態において、吸着カップ110は、シリコーンもしくは別の天然材料または合成材料を含んでおり、それらの材料は、耐久性があるが、ロボットシステム100が、ロボットアーム102およびエンドエフェクタ108を用いて、例えば、吸着によって、把持しようとしているアイテム(プラスチック袋またはラッピングのような非剛体パッケージの中のパンもしくはその他の柔らかいおよび/または壊れやすいアイテムなど)と(最初におよび/または徐々に)接触する時に、少なくとも若干「へこむ」のに十分なコンプライアント性を有する。
【0028】
この例において、エンドエフェクタ108は、エンドエフェクタ108の側面に取り付けられたカメラ112を有する。他の実施形態において、カメラ112は、(
図1に示した位置および向きの)エンドエフェクタ108の本体の下向きの面上など、より中央に配置されてもよい。さらなるカメラが、ロボットアーム102および/またはエンドエフェクタ108上の他の場所に(例えば、ロボットアーム102を含むアームセグメント上に)取り付けられてもよい。さらに、この例において壁に取り付けられているカメラ114および116が、シーン(システム100が配置されて動作するよう構成さているシーン)の3Dビューを構築するために利用可能なさらなる画像データを提供する。
【0029】
様々な実施形態において、ロボットアーム102は、図に示すように、ピックアップされるアイテムの上にエンドエフェクタ108の吸着カップ110を配置するために用いられ、真空源が、アイテムを把持し、アイテムをその移動元位置から持ち上げ、アイテムを移動先位置にプレースするための吸着力を提供する。
【0030】
図1に示す例において、ロボットアーム102は、製パン所から受け取ったアイテムのトレイからピックされたパンアイテムなど、この例では異種である任意のアイテムを移動元トレイ120からピックして、移動先トレイにそれらのアイテムをプレースするために用いられるよう構成されている。図の例において、移動先トレイ118および移動元トレイ120は、四隅に車輪を備えたベース上に積み重ねられるよう構成されている積み重ね可能トレイを含む。いくつかの実施形態において、トレイ118および/または120は、人間の労働者によって所定位置に押し込まれてよい。いくつかの実施形態において、トレイ118および/または120は、例えば、ピックおよび/またはプレースされるための所定位置に置き場のスタックを移動させ、ならびに/もしくは、小売店への配達に向けて配達車両に積み込まれるためにステージングエリア(待機エリア)および/または搬送エリアに完成したトレイのスタックを移動させるために用いられるよう構成されているモータ駆動および/またはロボット制御ベース上に積み重ねられてよい。いくつかの実施形態において、
図1に示していない他のロボットが、積み下ろしのための所定位置ならびに/もしくは搬送されるためにトラックまたはその他の目的地、などに、トレイ118および/または120を押し込むために用いられてもよい。
【0031】
様々な実施形態において、カメラ112、114、および、116の内の1または複数のカメラによって生成された3Dまたはその他の画像データが、システム100の作業エリアおよび作業エリア内のアイテムの3Dビューを生成するために用いられてよい。3D画像データは、色、形状、または、その他の属性などで、ピック/プレースされるアイテムを識別するために用いられてよい。様々な実施形態において、カメラ112、114、および、116の内の1または複数が、システム100の作業エリア内のアイテム上に見えるおよび/またはアイテムを含む、テキスト、ロゴ、写真、図、画像、マーク、バーコード、QRコード(登録商標)、または、その他の符号化および/またはグラフィック情報またはコンテンツを読み取るために用いられてよい。
【0032】
図1をさらに参照すると、図の例において、システム100は、この例では無線通信を介して(ただし、様々な実施形態において、有線通信および無線通信の一方または両方で)、ロボットアーム102、キャリッジ104、エフェクタ108、および、センサ(カメラ112、114、および、116、ならびに/もしくは、
図1に示していない重量センサ、力センサ、および/または、その他のセンサなど)などの要素と通信するよう構成されている制御コンピュータ122を備える。様々な実施形態において、制御コンピュータ122は、センサ(カメラ112、114、および、116、ならびに/もしくは、
図1に示していない重量センサ、力センサ、および/または、その他のセンサなど)からの入力を用いて、トレイ120からトレイ118へ荷積みおよび/または荷下ろしされるアイテムの1または複数の属性を観察、識別、および、決定するよう構成されている。様々な実施形態において、制御コンピュータ122は、例えば、画像および/またはその他のセンサデータに基づいて、制御コンピュータ122に格納されたライブラリ内および/または制御コンピュータ122にとってアクセス可能なライブラリ内のアイテムモデルデータを用いて、アイテムおよび/またはその属性を識別する。制御コンピュータ122は、アイテムに対応するモデルを用いて、移動先(トレイ118など)の中/上に、他のアイテムと共に、アイテムを積み重ねるための計画を決定および実施する。様々な実施形態において、アイテム属性および/またはモデルは、アイテムを把持、移動させて、移動先位置(例えば、トレイ118の中/上にアイテム積み重ねるための計画/再計画処理の一部として、アイテムがプレースされると決定された位置)にプレースするための戦略を決定するのに利用される。
【0033】
図の例において、制御コンピュータ122は、「オンデマンド」遠隔操作装置124に接続されている。いくつかの実施形態において、制御コンピュータ122が、完全自動モードで続行できない場合、例えば、制御コンピュータ122が完全自動モードでアイテムのピックアンドプレースを完了するための戦略を持たなくなるように、アイテムを把持、移動、および、プレースするための戦略が、決定できなくなり、および/または、失敗した場合、制御コンピュータ122は、例えば、アイテムを把持、移動、および、プレースするために、遠隔操作装置124を用いて、ロボットアーム102、キャリッジ104、および/または、エンドエフェクタ108の内の1または複数を操作することによって介入するように人間ユーザ126に指示する。
【0034】
図2は、ロボットシステムの一実施形態を示す図である。様々な実施形態において、ロボットシステム200は、本明細書で開示されているロボットシステムシミュレーションエンジンを用いて、1または複数のマニフェスト(積荷目録)、注文、インボイスなどのセットに従って、移動元容器からそれぞれの移動先容器へ様々なアイテムをピックアンドプレースするなどの動作要求を満たすための計画を生成、評価、および、改良する。
【0035】
図の例において、システム200は、レール204および206に沿ってコンピュータ制御下で移動するようにそれぞれ取り付けられているロボットアーム208および210を備える。ロボットアーム208および210は、それぞれ、吸着タイプのエンドエフェクタ212および214を末端に有する。様々な実施形態において、ロボットアーム208および210ならびにエンドエフェクタ212および214は、制御コンピュータ(
図1の制御コンピュータ122など)を備えたロボット制御システムによって制御される。
【0036】
図2に示す例において、ロボットアーム208および210ならびにエンドエフェクタ212および214は、車輪付きベース202上の移動元トレイから、車輪付きベース216および218上の移動先トレイへ、パンなどのアイテムを移動させるために用いられる。様々な実施形態において、人間および/またはロボットが、図に示すように、移動元トレイおよび車輪付きベース202を、レール204および206の間の開始場所へ配置してよい。車輪付きベース202は、例えば、図に示すように、ベース202の遠端で始まる矢印の方向に、レール204および206によって形成された通路を通って前進されてよい。様々な実施形態において、ベース202は、ロボットアーム208および210の一方または両方を用いて、手動で1または複数の人間オペレータ、1または複数の固定または非固定のロボット、などによって押されることにより、レール204および206に沿っておよび/またはそれらの間で動作するコンベヤベルトまたはチェーンタイプのメカニズムにより、ベース202に組み込まれたロボット制御の推進および/または運搬メカニズム(コンピュータ制御されるモータ駆動の車輪およびブレーキなど)によるなどして、前進されてよい。
【0037】
車輪付きベース202が、レール204および206に沿って/それらの間を前進する時、ならびに/もしくは、ベース202が、一時的に、レール204および206の間の静止位置にある間に、様々な実施形態において、ロボットシステムは、ロボットアーム208および210ならびにエンドエフェクタ212および214を用いて、計画に従って、車輪付きベース202上の移動元トレイから車輪付きベース216および218上の移動先トレイへ、アイテム(パンなど)を移動させる。例えば、計画は、どの1または複数のタイプのパンが、作業エリア内のベース202および/またはその他のベース上の移動元トレイ内で利用可能であるのかを示す在庫および/またはセンサデータに基づき、さらに、どの組み合わせのパンまたはその他のアイテムが、どのそれぞれの最終的な配達場所(小売店など)への配達に向けた移動先トレイにプレースされるのかを示すマニフェストまたはその他のデータに基づいて、計算されてよい。
【0038】
図の例において、ベース216および218上の移動先トレイが満たされると、ベース216および218は、それぞれ、レール204および206から離れて外向きに、例えば、配達車両に積み込まれるためにステージングエリアおよび積み込みエリアへ、移動される。
【0039】
図2では、単一のベース202上の単一セットの移動元トレイが示されているが、様々な実施形態において、高レベル動作が実行されることに応じて、1または複数のさらなるベース(各々が、積み上げられたアイテムで満たされた0以上のトレイを有する)が、レール204および206の間、および/または、近くのステージングエリアに配置されてもよい。同様に、いくつかの実施形態において、各々対応する車輪付きベース上の複数セットの移動先トレイが、レール204またはレール206に隣接するステージであってよく、各々の最上部のトレイが、例えば、積荷目録および関連する実行計画に従って、同時におよび/または順に満たされる途中であってよい。
【0040】
様々な実施形態において、移動元トレイが空になると、システムは、ロボットアーム208および/または210を用いて、ステージングエリアへ、および/または、移動先トレイのスタックの上部へ、トレイを移動させてよく、それにより、満たされて最終目的地へ送られるトレイの供給を生み出し、および/または、注文を満たすためにアイテムをピックできる次の移動元トレイを露出させる。
【0041】
図2では、単一のロボットアーム(208、210)が各レール(204、206)に配置されているが、いくつかの実施形態において、2以上のロボットアームが、各レールに提供されてもよい。いくつかの実施形態において、単一のレール上の2つのロボットアームが、空のトレイをピックアップして移動させるために用いられてよい。例えば、各アームは、トレイの構造と係合することによって機械的に、または、様々な実施形態において吸着または把持によって、トレイの反対側に係合するために用いられてよく、2つのアームは、新しい位置(バッファまたはステージングエリア、もしくは、移動先トレイのスタックの上部、など)へ移動させつつ、空のトレイの制御を維持するよう協調的に動作されてよい。いくつかの実施形態において、1または複数のロボットアームが、さらなるアイテムを追加する、新しいまたは修正された計画に従ってアイテムを再配置する、などの目的で、スタックの下側にあるトレイを露出させるために、スタックの上部から、(例えば、ステージングエリアへ移動される)満杯または部分的に満杯のトレイを移動させる際に用いられてよい。
【0042】
エンドエフェクタ212および214にそれぞれ取り付けられたカメラ220および222、ならびに/もしくは、カメラ224および226が、様々な実施形態において、本明細書で開示されているピック/プレース動作を計画および実行するための画像データを生成するために用いられる。
【0043】
図3は、ロボットシステムおよび作業空間の一実施形態を示すブロック図である。様々な実施形態において、ロボットシステム300は、本明細書で開示されているロボットシステムシミュレーションエンジンを用いて、1または複数のマニフェスト、注文、インボイスなどのセットに従って、移動元容器から個別の移動先容器へ様々なアイテムをピックアンドプレースするなどの動作要求を満たすための計画を生成、評価、および、改良する。
【0044】
図の例において、システム300は、レール306に沿ってコンピュータ制御下で移動するように取り付けられているロボットアーム302および304と、レール312に沿ってコンピュータ制御下で移動するように取り付けられているロボットアーム308および310と、を備える。図の例では、2つのレール取り付け型のロボットアームが、レール306および312の各々に取り付けられているが、様々な実施形態において、より多いまたはより少ないロボットアームが、各レール306、312に取り付けられてもよい。同様に、異なる数のロボットアームが、各レールに取り付けられてもよい。様々な実施形態において、シミュレーションが、異なる数、位置、および、構成のロボットアームを用いて本明細書で開示されているように実行されてよく、配置および構成が、シミュレーション結果に少なくとも部分的に基づいて選択および実施されてよい。例えば、シミュレートされたその他の組みあわせに対して適用可能なコスト関数を最小化しつつ、動作要求を達成することを理由に、ロボットアームの数、配置、および、構成が選択されてよい。
【0045】
様々な実施形態において、ロボットアーム302、304、308、および、310は、同じまたは異なるエンドエフェクタを有してよい。例えば、いくつかの実施形態において、システム300によってピックアンドプレースされる様子が図3に示されているアイテムは、柔らかく変形しやすいパッケージ(プラスチック袋など)に包まれた比較的軽くて壊れやすい製品(例えば、パンまたはその他のベーカリー製品)を含みうる。かかる実施形態において、ロボットアーム302、304、308、および、310の各々は、吸着タイプのエンドエフェクタを備えてよく、ピックアンドプレースされるアイテムを包むプラスチックが吸着カップに吸い込まれるように、エンドエフェクタの作用面または作用端にある吸着カップに真空を供給することで、ロボットアームによってアイテムを持ち上げて移動させることが可能になる。いくつかの実施形態において、ロボットアーム302、304、308、および、310の一部が、吸着タイプのエンドエフェクタを有してよく、それらの内のその他が、グリッパタイプのエンドエフェクタなど、他のタイプのエンドエフェクタを有してよい。様々な実施形態において、エンドエフェクタのタイプおよび組み合わせは、ピックアンドプレースされるアイテムのタイプに基づいて選択されてよい。いくつかの実施形態において、本明細書で開示されているシミュレーションは、異なるタイプ、組み合わせ、および、位置のエンドエフェクタを用いて実行されてよく、エンドエフェクタのタイプ、組み合わせ、および、配置が、シミュレーション結果に少なくとも部分的に基づいて選択されてよい。例えば、1または複数のタイプのエンドエフェクタおよび各々の配置(例えば、どのエンドエフェクタがロボットアーム302、304、308、および、310のどれに配置されるのか)が、最良の結果を達成した構成を示すシミュレーションの結果として選択されてよい。
【0046】
様々な実施形態において、
図3のシステム300は、レール306および312の各々の上に複数のロボットアーム302、304、308、310が存在することを除けば、
図2のロボットシステム200と同様に動作する。様々な実施形態において、1または複数のパレット、トレイ、収容箱、および/または、その他の積み重ね可能な容器を各々含むスタックが、ガイドまたは軌道314および316によって規定された中央経路に沿って進む。スタックは、ステージング位置318から中央経路に供給され、ステージング位置318へは、スタックが、人間、ロボット、および、その他の装置、の内の1または複数によって搬送されてよい。ガイドまたはトラック314および316によって規定された中央経路に入ると、スタック/容器は、様々な実施形態において、ガイドまたはトラック314および316を構成し、または、その他の方法で関連付けられている推進メカニズムのロボットシステム制御下の動作によって前進される。例えば、ガイドまたはトラック314および316は、ガイドまたはトラック314および316によって規定された中央経路に沿って1または複数のトレイまたはその他の容器のスタックを前進させるためにコンベヤ、プッシャ、ベルト、ギア、チェーン、または、その他の電気機械構造を備えてよい。
【0047】
図の例において、ロボットアーム302、304、308、および、310は、ガイドまたはトラック314および316によって規定された中央経路エリア内のスタックの最上段のトレイからアイテムをピックし、出力スタック作業エリア320および322で組まれているスタックの最上段のトレイにアイテムをプレースするために用いられる。エリア320および322内の完成したスタック(図の例におけるスタック326および328など)は、エリア320および322から、
図3に示されていない他の作業空間(他の地理的位置における下流の目的地へ輸送されるためのステージングエリアなど)に移動される。
【0048】
レール306および312の間のピッキング作業エリアのトレイが空になると(例えば、トレイ330)、ロボットアーム302、304、308、および、310を用いて、空のトレイは、出力作業エリア320、322内のスタックの最上部に移動される(例えば、図の例においては、トレイ332)。例えば、空のトレイは、最大スタック高さに達しておらず、現在スタックの上に満杯のトレイを有している出力トレイのスタックの上にプレースされてよく、そうすれば、アイテムをプレースする余地がもはや残らない。
【0049】
様々な実施形態において、
図3のロボットシステム300は、それぞれの下流目的地への流通に向けてトレイのスタックを組み立てるために用いられ、各トレイは、1または複数の異なるタイプのアイテムの組み合わせを含み、各目的地に関連付けられたトレイのセットは、集合的にアイテムの混合を含み、各アイテムについて、目的地に対応する数量のアイテムを含む。例えば、いくつかの実施形態において、システム300は、複数の小売店の各々に、その店によってまたはその店のために注文された数量で、各々対応する焼いた商品のセットを満たして送るために、製パン所または関連する中央流通センターで用いられてよい。
【0050】
様々な実施形態において、1以上のコンピュータおよび/またはその他の処理要素(
図3には図示せず)が、注文、インボイス、マニフェストなどを処理するため、ならびに、人的介入なしに、注文、インボイスなどによって規定された要求を満たすための計画を、本明細書で開示されているようにプログラム的に生成および実施するために、用いられる。様々な実施形態において、コンピュータは、1または複数のスケジューリングアルゴリズムを適用して初期計画を生成し、その後、初期計画は、本明細書で開示されているように、シミュレーションエンジンを用いて検証および/または改良される。様々な実施形態において、シミュレーションエンジンは、システム300がコンピュータによって最初に生成された計画の下でどのように実行するのかをシミュレートするために、作業空間、他のロボット要素、および、環境因子によって規定される制約に照らして、ロボット要素(ロボットアーム302、304、308、および、310など)の挙動および動作を、ロボット要素の形状、機能、および性能特性と共に、モデル化する。
【0051】
様々な実施形態において、シミュレーションエンジンおよび/またはモデルは、ロボットアーム302、304、308、310が、互いに、または、環境内の物体と、または、同じ作業空間内のその他の動作主体(例えば、人間の作業員)と、衝突することを避ける必要性を考慮に入れる。例えば、衝突を避けるため、および/または、生成された計画の下での動作が衝突をもたらす(またはそのリスクが高すぎる)か否かを評価するために、シミュレーションエンジンは、各ロボットアーム302、304、308、310について、それぞれのロボットアームの連続的な同時の位置および姿勢で、例えば、対応する旋回円(
図3に示す例における旋回円334、336、338、および、340など)を計算してよい。シミュレーションの所与の時点で旋回円が重なる場合、いくつかの実施形態において、システム300は、例えば、かかる重なりを生じない修正計画を生成するために、見直し(例えば、人間のユーザによる見直し)および/または改良に向けて、計画のその部分にフラグを立てる。いくつかの実施形態において、旋回円は、例えば、シミュレーションの動画またはその他の視覚表現で、かかる円の対応する視覚表現を生成するために用いられてよい。
【0052】
図4Aは、ロボット制御システムの一実施形態を示すブロック図である。様々な実施形態において、
図4のシステム400は、それぞれの下流の目的地に配達されるアイテムに関連するインボイス、注文、マニフェストなど、
要求のセットを満たすために、物理的な作業空間内のロボット要素を制御するために用いられる。いくつかの実施形態において、システム400は、ロボット要素(
図3のロボットアーム302、304、308、および、310など)を制御するために用いられてよい。
【0053】
図の例において、システム400は、注文管理システム404から注文のセットを受信するよう構成されているスケジューラ402を備える。スケジューラ402は、注文管理システム404からの注文情報を用いて、注文情報によって規定された要求のセットを満たすためにロボット要素のセットを利用するための計画を生成、検証、および、改良するよう構成されているソフトウェア構成要素および/またはプロセスのセットとして実装されてよい。注文管理システム404は、注文情報を追跡する(例えば、どの顧客が、どれだけの数量のどの製品を注文したのか、各顧客が何を受け取ったか、など)。
【0054】
様々な実施形態において、スケジューラ402は、システム状態(例えば、すべての製品/アイテムがどこにあるか、トレイまたはその他の容器の入力スタックおよび出力スタックがどれだけの高さか、ロボットの位置および姿勢、など)を追跡する内部状態マシン416からシステム状態を取得し、注文管理システム404から注文情報を取得し、エージェント408、410、412が実行するスケジュールを計算してディスパッチャ406へ提供する。例えば、スケジューラ402は、複数の目的地(例えば、小売店のセット)の各々について、その目的地に配達される1または複数のアイテムのセットならびに各アイテムの数量を示すセットまたは注文(マニフェスト、インボイス、など)を注文管理システム404から受信してよい。様々な実施形態において、スケジューラ402は、1または複数の周知のスケジューリングアルゴリズムを用いて、初期計画を生成してよい。初期計画は、1または複数の単純化の仮定を立てることによって生成されてよい。
【0055】
スケジューラ402によって生成されたスケジュールは、
エージェントのセット(
図4Aにおいて、エージェント408、410、および、412として表されている)を介してロボット要素を動作させることによって計画/スケジュールを実行するために、ディスパッチャ406に提供され、ディスパッチャ406によって利用されるよう構成されている。エージェント408、410、および、412は、1以上のロボット制御要素(例えば、ロボットアーム、コンベヤなど)および/またはセンサ(例えば、3Dまたはその他のカメラ、光学コードスキャナ、スケール、圧力センサ、接触センサ、など)に対する制御ソフトウェア、ドライバ、および/または、通信インターフェースを備えてよい。
【0056】
様々な実施形態において、ディスパッチャ406は、スケジューラ402からスケジュール(例えば、ロボットが実行する行動のリスト)を受信し、それらを(エージェント408、410、412を介して)実行するそれぞれのロボットに伝達する。ディスパッチャ406は、エラー処理、ロボットによる予期せぬまたはむらのある挙動、などに対処する。スケジューリングされた行動が実行された後、ディスパッチャ406は、内部状態マシン416および注文管理システム404を更新し、新たなスケジュールを要求する。
【0057】
ディスパッチャ406は、インターフェース414を介して、エージェント408、410、412と通信する。ディスパッチャ406は、インターフェース414を介して、エージェント408、410、412に特定の制御コマンドを送信し、エージェント408、410、412は、同じインターフェース414を介してフィードバックを提供して、例えば、タスクの成功/失敗、センサ読み取り値(例えば、ロボットアームの力センサ)、などを報告する。ディスパッチャ406は、スケジューラ402からの情報およびエージェント408、410、412からのフィードバックを用いて、内部状態マシン416を更新および維持する。
【0058】
様々な実施形態において、内部状態マシン416は、ロボットシステムが操作するアイテム(
図3に示した例におけるトレイと、トレイからピック/トレイへプレースされるアイテム、など)の位置および状態を含め、システム400を構成する要素および(例えば、エージェント408、410、412を介して)システム400によって制御されるロボット要素の状態の現在の一貫したビューを維持するために用いられる。状態マシンは、各トレイおよび各注文/マニフェストの状態および位置を、例えば、システムを構成する各ロボットアームまたはその他のロボット要素の位置および状態(例えば、姿勢)と共に、追跡するために用いられてよい。内部状態マシン416は、各注文の状態(例えば、未着手、進行中、完了)と、互いに関連するトレイまたはその他の要素の位置またはその他の現在の配置とを追跡するために用いられてよい。
【0059】
図4Bは、ロボットシステムシミュレーションエンジンの一実施形態を示すブロック図である。図の例において、システム420は、同じスケジューラ402、注文管理システム404、ディスパッチャ406、および、内部状態マシン416を備える。しかしながら、システム420では、ディスパッチャ406は、インターフェース414を介して、シミュレータ(「シミュレータエンジン」とも呼ばれる)422と通信する。シミュレータ422は、
図4Aのシステム400の実際のエージェント408、410、412の各々に対応する模擬エージェント428、430、432を備えており、各模擬エージェントは、「実際の」(非シミュレーション)対応物と同じインターフェース414を介してディスパッチャ406と通信するよう構成されている。
【0060】
様々な実施形態において、模擬エージェント428、430、432は、それらの現実世界の対応物と同じ方法で、ディスパッチャ406からのコマンドに応答するよう構成されている。各模擬エージェント428、430、432は、対応するモデルおよび/または構成ファイルを用いて、それが表すロボット要素がディスパッチャ406からのコマンドに応答して示す挙動をシミュレートし、各々が、ディスパッチャ406によって命令された行動のシミュレートされた実行に基づいて、対応する現実世界のロボット要素が返すと期待される情報を含む応答通信を生成してディスパッチャ406に提供する。
【0061】
図の例において、シミュレータ422は、システムのシミュレートされた状態を追跡するために用いられる状態トラッカ434を備える。様々な実施形態において、シミュレータ422は、状態トラッカ434を用いて、内部状態マシン416とは独立してシステム状態を追跡する。この状態は、行動完了時間を推定するために用いられ、模擬エージェント428、430、432によって更新される。
【0062】
模擬エージェント428、430、432は、状態トラッカ434へ通信可能に接続されており、例えば、模擬エージェントが割り当てられたタスク/操作を実行するのにかかる時間を推定するために、状態トラッカ434から状態情報を読み出してよく、自身のシミュレートされた状態(例えば、位置、軌道、タスクの成功/失敗、など)で状態トラッカ434を更新するよう構成されている。様々な実施形態において、状態トラッカ434を構成する一貫性ロジックが、例えば、模擬エージェント428、430,432の内の2以上からの一貫性のない更新を検出して防止することによって、一貫した状態が維持されることを保証する。
【0063】
図5Aは、ロボットシステムシミュレーションエンジンの一実施形態を示すブロック図である。様々な実施形態において、
図5Aのシステムは、
図4Bのシミュレータ422を実施するために用いられる。図の例において、
図4Bの状態トラッカ434は、
システム状態データ構造のセットおよび関連ロジック502を備える。データ構造は、例えば、ディスパッチャ406によって受信されて、シミュレートされた実行に向けて模擬エージェント428、430、432に通信されたスケジュールに応答して実行されるものとして行動がシミュレートされた時に、模擬エージェント428、430、432によって読み出されおよび/または更新される1または複数のテーブルまたはその他のデータ構造を含んでよい。個々の行動、行動の結果、および、その他のイベントが、ログファイル504に、例えば、模擬エージェント428、430、432によって記録されてよい。いくつかの実施形態において、各模擬エージェント428、430、432、および/または、ロボット要素が操作しうる各リソース(例えば、トレイまたはその他の容器など)が、別個のログファイルまたは文書によってログファイル504に表されてよい。
【0064】
模擬エージェント428、430、432は、様々な実施形態において、モデル506を用いて、その模擬エージェント428、430、432が挙動をシミュレートするよう構成されているロボット要素(例えば、ロボットアーム)によって各行動がどれだけの時間でならびに/もしくはどのような具体的なおよび/またはきめ細かい方法で実行されるのかを決定する。
【0065】
様々な実施形態において、シミュレーション/状態ロジック502は、実際のまたは構造的な衝突もしくはその他の非一貫性および/または不適合な動作を検出するためのロジックを含む。例えば、いくつかの実施形態において、ロジック502は、2以上のロボットアームが同時に同じ三次元空間にあるものとして更新されたか否かを検出する。いくつかの実施形態において、旋回円(またはその他の2Dまたは3D形状または体積)が、各ロボットアームについて、例えば、各ロボットの現在の位置および姿勢(例えば、アームセグメントの向きなど)に基づいて、計算される。2つのロボットの旋回円(またはその他の形状または体積)が交わる場合、例外イベントがトリガされる。いくつかの実施形態において、各模擬エージェントは、計画された行動が現在のシステム状態と一貫しているか否かを、シミュレートされた行動の更新をポストする前に決定する。一貫しない場合、例えば、その行動を取ることによって、ロボットが、作業空間内の別のロボットまたは物体と衝突する場合、模擬エージェントは、その行動をポストしない。いくつかの実施形態において、模擬エージェントは、例えば、所定の遅延期間後に、その行動を再試行してよい。再試行に失敗した場合、模擬エージェントは、ディスパッチャに失敗を通知してよい。
【0066】
図5Bは、ロボットシステムをシミュレートするための処理の一実施形態を示す機能フロー図である。図の例において、ディスパッチャ406は、実行される模擬エージェント522に行動を割り当てる。模擬エージェント522は、状態トラッカデータ構造526から状態変数524を読み出し、状態情報(およびロボット/その他のリソースに固有なモデル)を用いて、行動のシミュレートされた実行から生じる最終状態を反映するために1または複数の状態変数のそれぞれの更新値を決定することなどによって、ディスパッチャ406によって割り当てられた行動の実行をシミュレートする。模擬エージェントは、更新528を一貫性/状態遷移ロジック530へ提供する。
【0067】
様々な実施形態において、一貫性/状態遷移ロジック530は、例えば、一貫性のない状態またはその他の形で許容されない状態(例えば、2つのロボットアームの間の衝突)にあるロボットまたはその他の要素が多すぎないことを保証するために、各更新528を検証する。更新が許容された場合、一貫性/状態遷移ロジック530は、模擬エージェント522から受信した更新528に基づいて一貫性/状態遷移ロジック530によって決定されたグローバル状態変数またはその他の状態変数への更新があればそれらを含め、更新532を状態トラッカデータ構造526内の適切な位置に書き込む。上記の処理は、連続的な後続の行動セットがディスパッチャ406によって模擬エージェント522に割り当てられるのに伴って繰り返す。
【0068】
様々な実施形態において、ディスパッチャ406によって割り当てられた行動の実行をシミュレートするために、模擬エージェント522は、例えば、所定の間隔で、および/または、模擬エージェントがシミュレートするよう構成されているロボットまたはその他のリソースによって実行されるものとしてシミュレートされる複数のサブ行動の各々のシミュレーション完了時に、一連の更新528を提供してよい。このように、行動の開始時のロボットまたはその他のリソースの状態と完了時の終了状態との間の中間状態がシミュレートされてよく、ロボットまたはその他のリソースがかかる中間状態にある間に発生しうる衝突またはその他の問題が検出されうる。例えば、中間の位置/状態をシミュレートすることにより、(例えば、
図3に示した例における)両側のレール上の2つのロボットアームの間の衝突が検出されうる。
【0069】
図6は、ロボットシステムを制御するための処理の一実施形態を示すフローチャートである。様々な実施形態において、
図6の処理600は、1以上の制御コンピュータ(
図1の制御コンピュータ122など)上で動作する1以上の構成要素、モジュール、または、プロセスによって実行されてよい。図の例において、工程602で、要求および初期状態情報が受信される。例えば、
図4Aおよび
図4Bに示した例において、工程602で、スケジューラ402が、注文管理システム404から注文情報を受信し、内部状態マシン416から状態情報を受信してよい。工程604で、スケジューリングアルゴリズムが、工程602で受信された状態情報に照らして、工程602で受信された要求を満たすための計画を決定するために用いられる。工程606で、1または複数のシミュレーションが、工程604で決定された計画を検証および/または改良するために、例えば、本明細書で開示されているように、実行される。工程608で、計画は、工程602で受信された要求の全部または一部を満たすようにロボットシステムを制御するために用いられる。例えば、計画は、1または複数のロボットアームまたはその他のロボット要素を制御するために、例えば、
図4Aおよび
図4Bに示した例のディスパッチャ406によって、用いられてよい。
【0070】
様々な実施形態において、工程602、604、および、606の内の1以上の工程の継続的および/または継続中または連続的な反復が、計画を生成、再生成、検証、および/または、改良するために、必要な時/場合に実行されてよい。例えば、最初の計画またはその部分が実行されると、状態および/または注文情報が、新たなまたは更新された計画の生成、検証、および/または、改良につながるような方法で更新されてよい。すべての要求が満たされるまで、継続的な反復が繰り返されてよい。
【0071】
図7は、計画を検証および/または改良するためのシミュレーションを実行するための処理の一実施形態を示すフローチャートである。様々な実施形態において、
図7の処理は、
図6の工程606を実施するために用いられる。図の例において、工程702で、処理は、所定の制約内(例えば、所与の作業日またはその他の作業期間内)にシステム要求(例えば、
製品注文のセットを満たすこと)を達成すると期待される初期に受信した計画から始める。例えば、最初にシミュレーションなしに生成された計画(例えば、1または複数のスケジューリングアルゴリズムを適用することによって生成された計画)が受信されてよい。
【0072】
工程704で、初期(または現在の)計画に従った動作が、例えば、本明細書に開示されているようにシミュレートされる。工程706で、シミュレートされた動作が期待通りに(または、計画に従って、期待されていることの所定のおよび/または設定されたまたは設定可能な許容範囲内で)進んでいる場合/間は、工程708において完了と判定されるまで、または、シミュレートされた動作が期待通りに進行していないと工程706において判定されない限り/されるまで、シミュレートされた処理が、計画に従って継続する。例えば、工程706で、スケジューリングされた行動がシミュレーション通りに成功裏に完了できずまたは完了していないことの示唆が受信されてよく、または、そうでなければ、そのような判定がなされてよい。あるいは、ロボットもしくはその他の動作主体またはリソースの予測せぬイベントまたは挙動が検出されうる。
【0073】
シミュレートされた動作が期待通りに進んでいないと工程706で判定された場合、工程710で、計画(スケジュール)は改良される。例えば、スケジューラが、元々の/以前の計画に従って、シミュレートされた動作で発生した問題を示す情報で(ディスパッチャを介して)更新されてよい。スケジューラは、シミュレーションで直面した問題を回避する改良された(または新たな)計画を生成するためのロジックおよび/またはプロセスを備えてよい。例えば、シミュレーションによって遭遇および/また予測された問題を回避するために、別のロボットが、行動を実行するよう割り当てられてよく、もしくは、行動が並べ替えられ、または、1以上の行動のタイミングが他の方法で変更されてよい(例えば、遅らせる、同時ではなく順次にする、など)。改良された計画が工程710で生成されると、工程704で、シミュレーションは、改良された計画に基づいて再開する。
【0074】
工程704、706、および、710の継続的な反復が、例えば、シミュレートされたように動作において問題が発生した時に、必要に応じて、計画を改良またはさらに改良するために実行されてよい。
【0075】
図8は、計画を用いてロボットシステムを制御するための処理の一実施形態を示すフローチャートである。様々な実施形態において、
図8の処理は、
図6の工程608を実施するために用いられる。図の例において、工程802で、ロボット動作が(現在の)計画に従って実行される。例えば、
図4Aに示した例において、スケジューラ402で生成された計画が、ディスパッチャ406に提供されてよく、ディスパッチャ406は、次に、行動を実行するように対応するロボット要素(例えば、ロボットアーム、その他のロボット)を制御するよう構成されたエージェント408、410、412に行動を割り当てることによって計画を実施する。工程804で、計画の残りの/後続の部分の結果として、衝突もその他のエラーもなしに要求が満たされることを確実にするために、進行中のシミュレーションが実行される。例えば、ディスパッチャ406によって実際のエージェント408、410、412に割り当てた行動が、さらに(または最初に)、行動のシミュレートされた実行のために模擬エージェント428、430、432に提供されてよい。工程806で、シミュレーションが計画の問題(もしくは、改善の可能性および/または必要性)を示唆していると判定された場合、工程808で、計画は改良され、改良された計画は、ロボットシステムの動作を制御するために工程802で、そして、ロボットシステムの動作をシミュレートするために工程804で利用され始める。処理は、完了(工程810)(例えば、すべての要求が満たされる)まで継続する。
【0076】
様々な実施形態において、シミュレーションは、グローバルな目標を達成するために(例えば、グローバルコスト関数を最小化するために)、複数の物理的位置でロボット動作および/またはその他の動作に関して実行されてよい。例えば、
図1、
図2、および、
図3は、倉庫またはその他の流通センターなどで、注文を満たすために用いられるロボットシステムの例を示している。いくつかの実施形態において、シミュレーションは、アイテムが出荷される1または複数の目的地に関しても実行されてよい。例えば、それぞれの目的地(小売店またはさらなる(例えば、地域的またはローカルな)流通ノードなど)への出荷/配達に向けてトレイまたはその他の容器を組むために計画がなされてよく、様々な実施形態において、供給元位置でのロボットシステムの動作が実行され、さらに、目的地ノードでの非効率または衝突につながらないように流通ノード(供給元)でトレイ/キットを組む計画を生成、検証、および/または、改良するために、1または複数の目的地の各々でのロボット動作および/または非ロボット動作(例えば、手動/人間による動作)がシミュレートされてよい。
【0077】
図9Aは、ロボットシステムシミュレーションエンジンの一実施形態において、複数の物理的位置にわたって最適化を行う一例を示す図である。図の例において、流通ネットワーク900は、流通センター902と、アイテムが流通センター902から出荷される先の複数の目的地(
図9Aに、目的地904、906、および、908で表されている)と、を備える。様々な実施形態において、第1ロボットシステム(例えば、
図1から
図4)が、例えば、目的地(904、906、および、908など)へそれぞれの量のそれぞれのアイテムを搬送するのに向けて注文を満たすために、流通センター902に配備されている。さらに、目的地(904、906、および、908など)の少なくとも一部には、目的地のロボット(またはその他の)システムが、例えば、トレイまたはその他の容器を受け取って開封し、アイテムを棚にピックアンドプレースする、などのために、配備されている。様々な実施形態において、シミュレーションが、複数位置にわたってグローバルに(端から端まで)要求を達成する計画を決定して実施するために、流通センター902と、目的地904、906、および、908の内の1以上とで、動作に関して実行される。
【0078】
図9Bは、複数の物理的位置にわたって最適化を行うための処理の一実施形態を示すフローチャートである。様々な実施形態において、処理920は、本明細書で開示されているシミュレーションを用いて、複数位置にわたる目標および要求を考慮した方法で要求を満たすために、実行される。図の例において、工程922で、候補計画が、第1位置でロボットシステム動作を通して
要求のセットを満たすために生成される。例えば、スケジューリングアルゴリズムが、
候補計画のセットを生成するために適用されてよい。それぞれの候補計画は、第1位置に適用可能なコスト関数(例えば、時間、エネルギ利用、ロボット利用率、その他の効率の尺度、などを考慮したもの)に関して互いに対して、スコアがつけられ、順位付けされ、または、他の方法で重み付けされてよい。より高い(最高の)順位/スコアの計画の内の1以上が、第1位置に関して計画を検証および/または改良するためにシミュレートされてよい。
【0079】
工程924で、上位n個の計画が、各目的地に関して計画に関連するコストを決定するために、1または複数の目的地位置の各々でおよび/または各々に関してシミュレートされる。各位置でシミュレートされた各計画に関連する目的地位置コストは、総コストを生成するために、集約され、第1位置でのコストに追加される。最小の総コストを持つ計画が、最終計画を決定して実施するために、選択および/またはさらに改良される。
【0080】
様々な実施形態において、本明細書で開示されている技術は、要求のセットを満たすようにロボットシステムを制御するための計画を生成、検証、および、改良するために用いられてよい。スケジューリングアルゴリズムが、発生しうる現実世界の問題を予測して回避するために、本明細書で開示されているように、シミュレーションを通してリアルタイムでその実行を検証および/または改良されうる計画を決定するために、計算上実現可能な方法で適用されてよい。
【0081】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供されている詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示されている実施形態は、例示であり、限定を意図するものではない。本開示は、以下の形態により実現されてもよい。
[形態1]
システムであって、
通信インターフェースと、
前記通信インターフェースに接続されているプロセッサと、
を備え、
前記プロセッサは、
ロボット制御システムから、前記通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信し、
前記ロボット要素による前記行動の実行をシミュレートし、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新し、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告するよう構成されている、システム。
[形態2]
形態1に記載のシステムであって、
さらに、前記プロセッサに接続され、前記状態追跡データを格納するよう構成されているメモリを備える、システム。
[形態3]
形態1に記載のシステムであって、
前記通信内で示される前記行動は、前記ロボット要素を含む1セットのロボット要素を用いて1セットの要求を満たすために前記ロボット制御システムによって生成された計画に従って、前記ロボット制御システムによって決定される、システム。
[形態4]
形態3に記載のシステムであって、
前記ロボット制御システムは、前記ロボット要素による前記行動の前記シミュレートされた実行に少なくとも部分的に基づいて生成されたシミュレーション結果を用いて、前記計画を検証または改良するよう構成されている、システム。
[形態5]
形態3に記載のシステムであって、
現実の物理的な世界で前記行動を実行するように前記ロボット要素の動作を制御するよう構成されている非シミュレーションエージェントと通信するために前記ロボット制御システムによって用いられるのと同じインターフェースを介して、前記通信が前記ロボット制御システムから受信され、前記報告が前記ロボット制御システムへ送信される、システム。
[形態6]
形態1に記載のシステムであって、
前記プロセッサは、さらに、前記ロボット要素に関連付けられたロボット制御エージェントをエミュレートするよう構成されている、システム。
[形態7]
形態1に記載のシステムであって、
前記プロセッサは、少なくとも部分的には、前記ロボット要素の物理的構成および動的挙動特性を表すデータを含むモデルを用いることによって、前記ロボット要素による前記行動の実行をシミュレートするよう構成されている、システム。
[形態8]
形態7に記載のシステムであって、
前記モデルは、前記ロボット要素による前記行動の実行に関連する時間を示すデータを含む、システム。
[形態9]
形態1に記載のシステムであって、
前記ロボット要素は、エンドエフェクタを有するロボットアームを備える、システム。
[形態10]
形態9に記載のシステムであって、
前記行動は、前記ロボットアームおよびエンドエフェクタを用いて、アイテムを移動元位置からピックして、前記アイテムを移動先位置にプレースすることを含む、システム。
[形態11]
形態10に記載のシステムであって、
前記移動元位置は、移動元トレイまたはその他の移動元容器を含み、前記移動先位置は、移動先トレイまたはその他の容器を含む、システム。
[形態12]
形態1に記載のシステムであって、
前記プロセッサは、前記ロボット要素による前記行動のシミュレートされた実行に関連するエラー状態を検出するよう構成されている、システム。
[形態13]
形態12に記載のシステムであって、
前記プロセッサは、前記エラー状態を示すフィードバックデータを前記ロボット制御システムに提供するよう構成されている、システム。
[形態14]
形態13に記載のシステムであって、
前記ロボット制御システムは、前記フィードバックデータに少なくとも部分的に基づいて計画を改良するよう構成されている、システム。
[形態15]
形態1に記載のシステムであって、
前記行動は、前記プロセッサが第1物理的位置でシミュレートするよう構成されている第1行動セットに含まれており、前記プロセッサは、さらに、第2物理的位置で第2行動セットをシミュレートするよう構成され、前記ロボット制御システムは、前記第1行動セットの前記シミュレーションおよび前記第2行動セットの前記シミュレーションを用いて、前記第1物理的位置で動作を実行するための計画を決定するよう構成されている、システム。
[形態16]
方法であって、
ロボット制御システムから、通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信する工程と、
前記ロボット要素による前記行動の実行をシミュレートする工程と、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新する工程と、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告する工程と、
を備える、方法。
[形態17]
形態16に記載の方法であって、
前記通信内で示される前記行動は、前記ロボット要素を含む1セットのロボット要素を用いて1セットの要求を満たすために前記ロボット制御システムによって生成された計画に従って、前記ロボット制御システムによって決定される、方法。
[形態18]
形態17に記載の方法であって、
前記ロボット制御システムは、前記ロボット要素による前記行動の前記シミュレートされた実行に少なくとも部分的に基づいて生成されたシミュレーション結果を用いて、前記計画を検証または改良するよう構成されている、方法。
[形態19]
形態17に記載の方法であって、
現実の物理的な世界で前記行動を実行するように前記ロボット要素の動作を制御するよう構成されている非シミュレーションエージェントと通信するために前記ロボット制御システムによって用いられるのと同じインターフェースを介して、前記通信が前記ロボット制御システムから受信され、前記報告が前記ロボット制御システムへ送信される、方法。
[形態20]
コンピュータプログラム製品であって、非一時的なコンピュータ読み取り可能媒体内に具現化され、
ロボット制御システムから、通信インターフェースを介して、ロボット要素によって実行される行動を示す通信を受信するためのコンピュータ命令と、
前記ロボット要素による前記行動の実行をシミュレートするためのコンピュータ命令と、
前記行動のシミュレートされた実行の結果として1または複数の状態変数の仮想の変化を反映するために、状態追跡データを更新するためのコンピュータ命令と、
前記ロボット制御システムへ、前記通信インターフェースを介して、前記ロボット要素による前記行動の完了成功を報告するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。