(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-24
(54)【発明の名称】パレタイズのための幾何学的データおよびビジョンシステムを利用する状態推定
(51)【国際特許分類】
B25J 13/08 20060101AFI20240717BHJP
B65G 61/00 20060101ALI20240717BHJP
B65G 57/03 20060101ALI20240717BHJP
B65G 57/04 20060101ALI20240717BHJP
B65G 59/04 20060101ALI20240717BHJP
【FI】
B25J13/08 A
B65G61/00
B65G57/03 G
B65G57/04
B65G59/04
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023571268
(86)(22)【出願日】2022-06-10
(85)【翻訳文提出日】2024-01-09
(86)【国際出願番号】 US2022033041
(87)【国際公開番号】W WO2022265929
(87)【国際公開日】2022-12-22
(32)【優先日】2021-06-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521105662
【氏名又は名称】デクステリティ・インコーポレーテッド
【氏名又は名称原語表記】DEXTERITY,INC.
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】ピダパーシ・ロイット・アルカ
(72)【発明者】
【氏名】クラリー・ウィリアム・アーサー
(72)【発明者】
【氏名】アビヤンカー・ニーラジャ
(72)【発明者】
【氏名】カック・ジョナサン
(72)【発明者】
【氏名】ポッテイル・ベン・バーキー・ベンジャミン
(72)【発明者】
【氏名】チャベス・ケヴィン・ホセ
(72)【発明者】
【氏名】クマー・シティジ
【テーマコード(参考)】
3C707
3F029
3F030
【Fターム(参考)】
3C707AS02
3C707BS10
3C707KT02
3C707KT03
3C707KT06
3C707LS15
3C707LV14
3C707MT10
3C707NS02
3C707NS19
3F029AA01
3F029BA01
3F029BA02
3F029BA13
3F029CA82
3F029DA02
3F030AA01
3F030AA04
3F030AB04
(57)【要約】
【解決手段】ロボットシステムが開示されている。システムは、作業空間に配備されている1または複数のセンサから、作業空間の現在の状態を示すセンサデータを受信する通信インターフェースを備えており、作業空間は、パレットまたはその他の容器と、容器の上または中に積み重ねられている複数のアイテムとを含む。システムは、パレットまたはその他の容器の上または中にアイテムの第1セットをプレースし、もしくは、パレットまたはその他の容器からアイテムの第1セットを取り出すよう、ロボットアームを制御し、容器の上または中にプレースされたアイテムの第1セットに基づいて、幾何学的モデルを更新し、幾何学的モデルとセンサデータとを併用して、容器の上または中にある1または複数のアイテムのスタックを推定し、推定状態を用いて、アイテムの第2セットをプレースするようロボットアームを制御するための計画を生成または更新する1または複数のプロセッサを備える。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ロボットシステムであって、
作業空間に配備されている1または複数のセンサから、前記作業空間の現在の状態を示すセンサデータを受信するよう構成されている通信インターフェースと、前記作業空間は、パレットまたはその他の容器と、前記容器の上または中に積み重ねられている複数のアイテムとを含み、
前記通信インターフェースに接続されている1または複数のプロセッサと、
を備え、
前記1または複数のプロセッサは、
前記パレットまたはその他の容器の上または中にアイテムの第1セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第1セットを取り出すよう、ロボットアームを制御し、
前記パレットまたはその他の容器の上または中にプレースされ、もしくは、前記パレットまたはその他の容器から取り出された前記アイテムの第1セットに基づいて、幾何学的モデルを更新し、
前記幾何学的モデルと前記センサデータとを併用して、前記パレットまたはその他の容器ならびに前記容器の上または中に積み重ねられた1または複数のアイテムの状態を推定し、
前記推定状態を用いて、前記パレットまたはその他の容器の上または中にアイテムの第2セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第2セットを取り出すよう、前記ロボットアームを制御するための計画を生成または更新するよう構成されている、ロボットシステム。
【請求項2】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記アイテムの第1セットおよび前記アイテムの第2セットの内の1または複数のそれぞれの属性を反映する、ロボットシステム。
【請求項3】
請求項2に記載のロボットシステムであって、前記幾何学的モデルは、前記アイテムの第1セットおよび前記アイテムの第2セットの内の前記1または複数に含まれるアイテムのそれぞれの重量を反映する、ロボットシステム。
【請求項4】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記アイテムの第1セットおよび前記アイテムの第2セットの内の1または複数に含まれるアイテムのそれぞれの圧縮剛性(rigidity compressibility)を反映する、ロボットシステム。
【請求項5】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記アイテムの第1セットおよび前記アイテムの第2セットの内の1または複数に含まれるアイテムのそれぞれのパッケージ強度を反映する、ロボットシステム。
【請求項6】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記アイテムの第1セットおよび前記アイテムの第2セットの内の1または複数に含まれる複数のアイテムにわたる重量の分布を反映する、ロボットシステム。
【請求項7】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記容器の上または中に積み重ねられた前記1または複数のアイテムの予測安定性を含む、ロボットシステム。
【請求項8】
請求項7に記載のロボットシステムであって、前記予測安定性は、各アイテムがプレースされたと前記ロボットシステムが考える位置のセットと、前記容器の上または中に積み重ねられた各アイテムの1または複数の属性とに少なくとも部分的に基づく、ロボットシステム。
【請求項9】
請求項1に記載のロボットシステムであって、前記幾何学的モデルは、前記容器の上または中に積み重ねられた前記1または複数のアイテム、ならびに、1または複数のシミュレートされたアイテムの積み重ねのシミュレーションが実行された前記1または複数のシミュレートされたアイテム、の予測安定性を含む、ロボットシステム。
【請求項10】
請求項1に記載のロボットシステムであって、前記1または複数のセンサは、画像センサを含む、ロボットシステム。
【請求項11】
請求項10に記載のロボットシステムであって、前記画像センサは、3Dカメラを含む、システム。
【請求項12】
請求項1に記載のロボットシステムであって、点群が、前記センサデータに少なくとも部分的に基づいて決定される、ロボットシステム。
【請求項13】
請求項1に記載のロボットシステムであって、前記パレットまたはその他の容器と、前記容器の上または中に積み重ねられた前記1または複数のアイテムとの前記推定状態は、前記センサデータと前記幾何学的モデルとの間の補間に少なくとも部分的に基づいて決定される、ロボットシステム。
【請求項14】
請求項13に記載のロボットシステムであって、各アイテムの位置が、(i)前記センサデータに従った前記それぞれのアイテムの位置と、(ii)前記幾何学的モデルに従った前記それぞれのアイテムの位置との間の補間に基づいて決定される、ロボットシステム。
【請求項15】
請求項1に記載のロボットシステムであって、前記パレットまたはその他の容器と、前記容器の上または中に積み重ねられた前記1または複数のアイテムとの前記推定状態は、前記センサデータと前記幾何学的モデルとの間の中点に少なくとも部分的に基づいて決定される、ロボットシステム。
【請求項16】
請求項1に記載のロボットシステムであって、前記1または複数のプロセッサは、さらに、
前記センサデータに従った前記作業空間の前記現在の状態が異常を含むとの判定に応じて、前記幾何学的モデルを用いて、前記センサデータに従った前記作業空間の前記現在の状態を更新するよう構成されている、ロボットシステム。
【請求項17】
請求項16に記載のロボットシステムであって、前記異常は、前記1または複数のセンサの内のセンサが、前記作業空間内の特定の点に関する視野を遮られ、または、不明瞭にされていること、(ii)前記作業空間の前記現在の状態にギャップを引き起こす前記センサデータ内のノイズまたはギャップ、の内の1または複数によって引き起こされる、ロボットシステム。
【請求項18】
請求項1に記載のロボットシステムであって、前記1または複数のプロセッサは、さらに、
前記幾何学的モデルに基づいて予測された状態と、前記1または複数のセンサを介して観察された状態との間の差異が閾値を超えていると判定するよう構成されている、ロボットシステム。
【請求項19】
請求項18に記載のロボットシステムであって、前記差異が前記閾値を超えているとの判定に応じて、前記容器の上または中の前記1または複数のアイテムのスタックが問題ないことを確認するよう、ユーザへ警告を通信する、ロボットシステム。
【請求項20】
請求項1に記載のロボットシステムであって、前記1または複数のプロセッサは、
前記1または複数のプロセッサの第1サブセットであって、
前記パレットまたはその他の容器の上または中に前記アイテムの第2セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第2セットを取り出すよう、前記ロボットアームを制御するための前記計画を生成または更新し、
前記ロボットアームを制御するための前記計画は、前記推定状態に少なくとも部分的に基づいて生成または更新されるよう構成されている、前記1または複数のプロセッサの第1サブセットと、
前記1または複数のプロセッサの第2サブセットであって、
前記幾何学的モデルを更新し、前記幾何学的モデルと前記センサデータとの組み合わせに少なくとも部分的に基づいて、前記パレットまたはその他の容器と、前記容器の上または中に積み重ねられた前記1または複数のアイテムとの前記状態の前記推定を決定するよう構成されている、前記1または複数のプロセッサの第2サブセットと、
を備える、ロボットシステム。
【請求項21】
請求項20に記載のロボットシステムであって、前記1または複数のプロセッサの前記第2サブセットは、前記作業空間から離れている、ロボットシステム。
【請求項22】
請求項1に記載のロボットシステムであって、
前記アイテムの第1セットは、N個のアイテムを含み、
Nは、動的に決定される正の整数である、ロボットシステム。
【請求項23】
請求項22に記載のロボットシステムであって、前記パレットまたはその他の容器の上または中に積み重ねられた前記1または複数のアイテムの前記状態は、前記N個のアイテムが積み重ねられた後に推定される、ロボットシステム。
【請求項24】
請求項23に記載のロボットシステムであって、前記状態は、不規則形状のアイテムがプレースされたとの判定に応じて、前記N個のアイテムが積み重ねられる前に推定される、ロボットシステム。
【請求項25】
請求項1に記載のロボットシステムであって、
前記アイテムの第2セットは、前記パレットまたはその他の容器にプレースされるソース上の次のM個のアイテムに対応し、
Mは、正の整数である、ロボットシステム。
【請求項26】
請求項25に記載のロボットシステムであって、前記ソースは、コンベヤである、ロボットシステム。
【請求項27】
ロボットを制御するための方法であって、
作業空間に配備されている1または複数のセンサから、前記作業空間の現在の状態を示すセンサデータを受信し、前記作業空間は、パレットまたはその他の容器と、前記容器の上または中に積み重ねられている複数のアイテムとを含み、
1または複数のプロセッサによって、前記パレットまたはその他の容器の上または中にアイテムの第1セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第1セットを取り出すよう、ロボットアームを制御し、
前記パレットまたはその他の容器の上または中にプレースされ、もしくは、前記パレットまたはその他の容器から取り出された前記アイテムの第1セットに基づいて、幾何学的モデルを更新し、
前記幾何学的モデルと前記センサデータとを併用して、前記パレットまたはその他の容器ならびに前記容器の上または中に積み重ねられた1または複数のアイテムの状態を推定し、
前記推定状態を用いて、前記パレットまたはその他の容器の上または中にアイテムの第2セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第2セットを取り出すよう、前記ロボットアームを制御するための計画を生成または更新すること、
を備える、方法。
【請求項28】
ロボットを制御するためのコンピュータプログラム製品であって、非一時的なコンピュータ読み取り可能媒体内に具現化され、
作業空間に配備されている1または複数のセンサから、前記作業空間の現在の状態を示すセンサデータを受信するためのコンピュータ命令と、前記作業空間は、パレットまたはその他の容器と、前記容器の上または中に積み重ねられている複数のアイテムとを含み、
1または複数のプロセッサによって、前記パレットまたはその他の容器の上または中にアイテムの第1セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第1セットを取り出すよう、ロボットアームを制御するためのコンピュータ命令と、
前記パレットまたはその他の容器の上または中にプレースされ、もしくは、前記パレットまたはその他の容器から取り出された前記アイテムの第1セットに基づいて、幾何学的モデルを更新するためのコンピュータ命令と、
前記幾何学的モデルと前記センサデータとを併用して、前記パレットまたはその他の容器ならびに前記容器の上または中に積み重ねられた1または複数のアイテムの状態を推定するためのコンピュータ命令と、
前記推定状態を用いて、前記パレットまたはその他の容器の上または中にアイテムの第2セットをプレースし、もしくは、前記パレットまたはその他の容器から前記アイテムの第2セットを取り出すよう、前記ロボットアームを制御するための計画を生成または更新するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【他の出願への相互参照】
【0001】
本願は、2021年6月16日出願の「STATE ESTIMATION USING GEOMETRIC DATA AND VISION SYSTEM FOR PALLETIZING」と題する米国仮特許出願第63/211,361号に基づく優先権を主張し、その仮特許出願は、すべての目的のために参照により本明細書に組み込まれる。
【背景技術】
【0002】
出荷センターおよび流通センター、倉庫、荷役用ドック、航空貨物ターミナル、大規模小売店、および、不均質なアイテムセットを出荷および受け取るその他の活動は、箱、木箱、コンテナ、コンベヤベルト、および、パレット、などに異種のアイテムを梱包および開梱するなどの戦略を利用する。箱、木箱、パレットなどに異種のアイテムを梱包することで、結果として得られるアイテムセットを揚重機(フォークリフト、クレーンなど)によってハンドリングすることを可能にし、(例えば、倉庫内での)保管および/または(例えば、トラック、貨物倉などの中での)出荷に向けて、より効率的にアイテムを梱包することを可能にする。
【0003】
いくつかの文脈において、アイテムは、サイズ、重量、密度、かさばり、剛性、パッケージ強度などがあまりに異なりうるので、任意の所与のアイテムまたはアイテムセットが、(例えば、箱、コンテナ、パレットなどに)梱包する必要がありうる所与の他のアイテムのサイズ、重量、重量分布などをサポートすることを可能にする属性を、それらのアイテムが持つ場合と持たない場合がある。異種のアイテムをパレットまたはその他のセットにまとめる際に、パレタイズされたスタックが、(例えば、フォークリフトなどの機械によってハンドリングすることができなくなるように)、崩れ、傾き、または、その他の形で不安定にならないことを保証するために、そして、アイテムの損傷を避けるために、注意深くアイテムを選択して積み重ねなければならない。
【0004】
現在、パレットでは、通例、手作業で荷積みおよび/または荷下ろしがなされる。人間の労働者が、例えば、シッピングインボイスまたはマニフェストなどに基づいて、積み重ねるアイテムを選択し、人間の判断力および直感を用いて、例えば、より大きく重いアイテムを底に置くように選択する。しかしながら、一部の場合に、アイテムが、単に、コンベヤまたはその他のメカニズムで到着し、および/または、順序リスト内のビンから選ばれる、などの結果として、パレタイズまたはその他の方法で梱包されたセットが不安定になる。
【0005】
アイテムの多様性と、例えば所与のパレット上に梱包されるアイテムの順序、数、および、組み合わせのばらつきと、コンテナおよび/または供給メカニズム(アイテムをパレットまたは他のコンテナに置くために、そこからピックアップしなければならない)のタイプおよび位置の多様性とに起因して、ロボット工学の利用は、多くの環境において、より困難になっている。
【図面の簡単な説明】
【0006】
以下の詳細な説明および添付の図面において、本発明の様々な実施形態を開示する。
【0007】
【
図1】様々な実施形態に従って、異質なアイテムをパレタイズおよび/またはデパレタイズするためのロボットシステムを示す図。
【0008】
【
図2】様々な実施形態に従って、異質なアイテムをパレタイズおよび/またはデパレタイズするためのロボットシステムを示す図。
【0009】
【
図3】様々な実施形態に従って、1または複数のアイテムをパレタイズするための処理を示すフローチャート。
【0010】
【
図4】様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャート。
【0011】
【
図5】様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャート。
【0012】
【
図6】様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャート。
【0013】
【
図7A】様々な実施形態に従って、幾何学的データを用いた場合のパレット/アイテムのスタックの状態を示す図。
【0014】
【
図7B】様々な実施形態に従って、ビジョンシステムまたはセンサデータを用いた場合のパレット/アイテムのスタックの状態を示す図。
【0015】
【
図7C】様々な実施形態に従って、幾何学的データと、ビジョンシステムまたはセンサデータとを用いた場合のパレット/アイテムのスタックの状態を示す図。
【0016】
【
図8】パレットおよび/またはアイテムのスタックの状態の推定を決定する一実施形態を示すフローチャート。
【0017】
【
図9】様々な実施形態に従って、アイテムのセットをパレタイズ/デパレタイズする処理を示すフローチャート。
【発明を実施するための形態】
【0018】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実施されうる。本明細書では、これらの実施例または本発明が取りうる任意の他の形態が、技術と呼ばれうる。一般に、開示されている処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、或る時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【0019】
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【0020】
本明細書で用いられている幾何学的モデルは、作業空間の状態(プログラム的に決定された状態など)のモデルを意味しうる。例えば、幾何学的モデルは、作業空間内のアイテムを移動させるための計画と、アイテムが計画に従って移動された場合に期待される結果とを生成することに関連して決定された幾何学的データを用いて生成される。例えば、幾何学的モデルは、作業空間内のアイテムをピック、移動、および/または、プレースするようロボットアームを制御することによって変化する作業空間の状態に対応し、アイテムのピック、移動、および、プレースは、(例えば、(i)作業空間におけるロボットアームまたは別の構成要素の誤構成またはミスアライメント、(ii)ロボットアームとの相互作用に基づくアイテムの変形、(iii)作業空間内の別のアイテム、作業空間内の別の物体、(iv)ロボットアームまたはロボットアームによって移動されているアイテムと、作業空間内の別の物体との間の衝突、に基づいて引き起こされうるエラー(エラーまたはノイズなど)なしに)計画に従って実行されると見なされる。
【0021】
本明細書で用いられている「パレット」は、1または複数のアイテムが上または中に積み重ねられまたはプレースされうるプラットフォーム、容器、または、その他のコンテナを含む。さらに、本明細書で用いられているパレットは、1または複数のアイテムのセットをパッケージングして分配することに関連して用いられてよい。一例として、パレットという用語は、アイテムを支持し、フォークリフト、パレットジャック、クレーンなどによって移動可能である典型的な平らな運搬構造を含む。本明細書で用いられているパレットは、木材、金属、合金、ポリマなど、様々な材料で作られていてよい。
【0022】
本明細書で用いられているアイテムまたは1セットのアイテムのパレチゼーションは、移動元位置(搬送構造など)からアイテムをピックして、パレット上(パレット上のアイテムのスタック上など)にアイテムをプレースすることを含む。
【0023】
本明細書で用いられているデパレチゼーションは、パレットから(パレット上のアイテムのスタックから、など)アイテムをピックして、アイテムを移動させ、移動先位置(搬送構造など)にアイテムをプレースすることを含む。アイテムのセットをパレタイズ/デパレタイズするためのパレチゼーション/デパレチゼーションシステムおよび/または処理の例が、米国特許出願第17/343,609号でさらに記載されており、その出願は、参照によりすべての目的のためにその全体が本明細書に組み込まれる。
【0024】
本明細書で用いられているアイテムのシンギュレーションは、移動元の山/流れからアイテムをピックして、搬送構造(例えば、仕切り付きコンベヤまたは同様の搬送手段)にアイテムをプレースすることを含む。任意選択的に、シンギュレーションは、移動元の山/流れからコンベヤ上のスロットまたはトレイへアイテムを1つずつプレースするなど、搬送構造上の様々なアイテムの仕分けを含みうる。アイテムのセットをシンギュレートするためのシンギュレーションシステムおよび/または処理の例が、米国特許出願第17/246,356号でさらに記載されており、その出願は、参照によりすべての目的のためにその全体が本明細書に組み込まれる。
【0025】
本明細書で用いられているキッティングは、1または複数のアイテム/物体を対応する位置からピックして、1または複数のアイテムのセットがキットに対応するように1または複数のアイテムを所定の位置にプレースすることを含む。アイテムのセットをキッティングするためのキッティングシステムおよび/または処理の例が、米国特許出願第17/219,503号でさらに記載されており、その出願は、参照によりすべての目的のためにその全体が本明細書に組み込まれる。
【0026】
本明細書で用いられているビジョンシステムは、センサデータ(例えば、作業空間に関するセンサデータ)を取得する1または複数のセンサを備える。センサは、カメラ、高解像度カメラ、2Dカメラ、3D(例えば、RGBD)カメラ、赤外線(IR)センサ、作業空間(または、パレットおよびパレット上のアイテムのスタックなど、作業空間の一部)の三次元ビューを生成するためのその他のセンサ、上述したものの任意の組みあわせ、および/または、上述の複数のセンサを含むセンサアレイ、などの内の1または複数を含んでよい。
【0027】
不均質なアイテム(例えば、異なるサイズ、形状、重量、重量分布、剛性、壊れやすさ、タイプ、パッケージ、など)の任意のセットをパレタイズ/デパレタイズならびに/もしくは他の方法で梱包および/または開梱するために、1または複数のロボット(例えば、吸着器、グリッパ、および/または、その他のエンドエフェクタを作用端に備えたロボットアーム)を含むロボットシステムをプログラム的に利用する技術が開示されている。
【0028】
様々な実施形態が、アイテムをピックアンドプレースするためのシステム、方法、および/または、装置を含む。システムは、通信インターフェースと、通信インターフェースに接続された1または複数のプロセッサと、を備える。通信インターフェースは、作業空間に配備されている1または複数のセンサから、作業空間の現在の状態を示すセンサデータを受信するよう構成されており、作業空間は、パレットまたはその他の容器と、容器の上または中に積み重ねられている複数のアイテムとを含む。1または複数のプロセッサは、(i)パレットまたはその他の容器の上または中にアイテムの第1セットをプレースし、もしくは、そこからアイテムの第1セットを取り出すようロボットアームを制御し、(ii)パレットまたはその他の容器の上または中にプレースされ、もしくは、そこから取り出されたアイテムの第1セットに基づいて幾何学的モデルを更新し、(iii)幾何学的モデルとセンサデータとを併用して、パレットまたはその他の容器ならびに容器の上または中にスタックされた1または複数のアイテムの状態を推定し、(iv)推定された状態を用いて、パレットまたはその他の容器の上または中にアイテムの第2セットをプレースし、もしくは、そこからアイテムの第2セットを取り出すようロボットアームを制御するための計画を生成または更新するよう構成されている。
【0029】
関連技術のシステムは、幾何学的データのみに基づいてロボットを制御し(例えば、作業空間のセンサデータをフィードバックとして利用することなしにモータを駆動することによってロボットを制御する)、または、センサデータのみに基づいてロボットを制御しうる(例えば、センサデータに基づいてロボットを制御する)。しかしながら、関連技術のシステムは、アイテムを移動させるための計画を決定または更新し、計画に従ってアイテムを移動させるようロボットアームを制御することに関連して、幾何学的データおよびセンサデータの両方を用いることがない。さらに、関連技術のシステムは、計画を決定/更新し、および/または、アイテムを移動させるようロボットアームを制御するために、幾何学的データおよびセンサデータを組み合わせることがない。アイテムを移動させるようロボットアームを制御することに関連して幾何学的データのみに頼る関連技術のロボットシステムについては、ロボットシステムは、ロボット/ロボットアームの製造に関して非常に厳しい公差を有する。かかる厳しい公差は、一般に、ロボット/ロボットアームのコストを増大させる。
【0030】
ロボットシステムは、パレットにアイテムをアセンブルしおよび/またはパレットからアイテムをディスアセンブルするために実装されうる。ロボットシステムは、センサおよびロボット(例えば、アイテムと係合するためのエンドエフェクタを備えたロボットアーム)を利用しうる。パレット上にアセンブルされるアイテムは、異質なアイテムのセットであってよい。ロボットシステムは、一般に、アイテムのセットをプレースするための計画を決定し、その後、その計画に従って、アイテムのセットをプレースするようロボットアームを制御する。例えば、各アイテムに対して、ロボットシステムは、一般に、アイテムがプレースされるパレット上の移動先位置を決定する。アイテムをプレースする場所(例えば、移動先位置)を決定する時、ロボットシステムは、一般に、作業空間に方向付けられたセンサデータ(パレットまたはパレット上のアイテムのスタックに方向付けられたセンサデータ)を取得する。ロボットシステムは、センサデータに基づいて移動先位置を決定する。
【0031】
アイテムをプレースする位置、または、その位置にアイテムを移動させるための計画を決定するために、センサデータに頼ることは、少なくとも、センサデータに内在するノイズならびに/もしくはセンサデータを取得するために用いられるセンサのミスアライメントまたは誤較正から、エラーを引き起こし、または、そうでなくとも不正確でありうる。したがって、パレットへのアイテムのアセンブリおよび/またはパレットからのアイテムのディスアセンブリが、予測不可能になりうる。
【0032】
アイテムをプレースする移動先位置を決定しおよび/またはパレットに対するアイテムのアセンブリ/ディスアセンブリ(例えば、アイテムのパレチゼーション/デパレチゼーション)を決定するためにセンサデータを利用することから生じるいくつかの課題は、以下を含む。
・センサデータにおけるノイズセンサデータにおけるノイズ源の例は、(i)作業空間内のアイテムまたは物体から反射した光、(ii)作業空間内、パレット/スタック上のアイテム上、および/または、プレースされるアイテム上のちり、(iii)低品質の反射面(鏡など)、(iv)作業空間内の反射面(ロボット、フレーム、棚、別のアイテム、パレット上のアイテム、など)、(v)環境における熱またはその他の温度変化、(vi)環境中の湿気、(vii)センサにおける振動、(viii)センサがセンサデータのキャプチャ中にぶつかられまたは移動されること、などを含む。
・誤較正されたセンサに少なくとも部分的に基づいて、センサデータが不正確になる。
・センサのミスアライメントに少なくとも部分的に基づいて、センサデータが不正確になる
・センサエラーに少なくとも部分的に基づいて、センサデータが不正確になる。
・センサの視野に少なくとも部分的に基づいて、センサデータが不正確または不完全になる。センサの視野は、ロボットの作業空間内のアイテムまたは物体によって不完全になりまたはブロックされうる。
・機械的ミスアライメントまたは誤較正に基づいて、ロボットアームの制御が不正確/不精密になる。
【0033】
様々な実施形態が、パレット上に1または複数のアイテムをプレースする位置を決定することに関連して(もしくは、パレットから1または複数のアイテムのデパレタイズすることに関連して)センサデータおよび幾何学的データ(例えば、幾何学的モデル)を利用するロボットシステムを含む。システムは、異なるデータソースを用いて、パレット(またはパレット上のアイテムのスタック)の状態をモデル化してよい。例えば、システムは、パレット上の1または複数のアイテムの位置と、1または複数のアイテムに関連する1または複数の特徴(または属性)(例えば、アイテムのサイズ)とを推定してよい。1または複数のアイテムに関連する1または複数の特徴は、アイテムのサイズ(例えば、アイテムの寸法)、重心、アイテムの剛性、パッケージのタイプ、変形性、形状、識別子の位置、などを含んでよい。
【0034】
様々な実施形態によると、システムは、幾何学的データ(例えば、作業空間の幾何学的モデル)およびセンサデータ(例えば、作業空間に配備された1または複数のセンサによって取得されたデータ)に少なくとも部分的に基づいて、作業空間の状態(本明細書では推定状態とも呼ぶ)を推定する。作業空間の推定状態を取得したことに応じて、システムは、作業空間内のアイテムを移動することに関連して推定状態を利用する。例えば、システムは、推定状態を用いて、移動元位置からアイテムをピックし、目標位置(本明細書では移動先位置とも呼ぶ)にプレースするための計画および/または戦略を決定する。
【0035】
様々な実施形態によると、システムは、少なくとも部分的には、幾何学的データの少なくとも一部およびセンサデータの少なくとも一部に基づいて補間を実行することによって、推定状態を決定する。いくつかの実施形態において、推定状態の第1部分を取得するために幾何学的モデルの第1部分およびセンサデータの第1部分に関して実行される補間処理は、推定状態の第2部分を取得するために幾何学的モデルの第2部分およびセンサデータの第2部分に関して実行される補間とは異なる。
【0036】
いくつかの実施形態において、システムは、1または複数のアイテムをパレタイズするための計画を決定することに関連して推定状態を利用する。例えば、システムは、1セットのアイテム(例えば、作業空間に入力される一連のアイテム)を含むコンベヤ(またはその他のアイテム源)からアイテムを選択し、アイテムをピックするようロボットアームを制御し、パレット上またはパレット上のアイテムのスタックの中の場所に対応する移動先位置を選択し、アイテムを移動させ、移動先位置にアイテムをプレースすることに関連して、推定状態を利用する。
【0037】
いくつかの実施形態において、システムは、1または複数のアイテムをデパレタイズするための計画を決定することに関連して推定状態を利用する。例えば、システムは、パレットからまたはパレット上のアイテムのスタックの中からアイテムを選択し、アイテムをピックするようロボットアームを制御し、容器または(例えば、作業空間からアイテムを運ぶ)コンベヤ上の場所に対応する移動先位置を選択し、アイテムを移動させ、移動先位置にアイテムをプレースすることに関連して、推定状態を利用する。
【0038】
いくつかの実施形態において、システムは、1または複数のアイテムをシンギュレートするための計画を決定することに関連して推定状態を利用する。例えば、システムは、1セットのアイテムを含むシュートからアイテムを選択し、アイテムをピックするようロボットアームを制御し、移動先位置(例えば、トレイ、コンベヤのセグメント、など)を選択し、アイテムを移動させ、移動先位置にアイテムをプレースすることに関連して、推定状態を利用する。
【0039】
いくつかの実施形態において、システムは、1または複数のアイテムに関するキッティングを実行するための計画を決定することに関連して推定状態を利用する。例えば、システムは、アイテムが配置された複数の棚を備えたキッティング棚システムからアイテムを選択し、アイテムを棚からピックするようロボットアームを制御し、移動先位置(例えば、箱、トートなどの容器)、アイテムを移動させ、移動先位置にアイテムをプレースすることに関連して、推定状態を利用する。
【0040】
様々な実施形態によると、幾何学的モデルは、作業空間内の1または複数のアイテムの1または複数の属性に少なくとも部分的に基づいて決定される。例えば、幾何学的モデルは、1セットのアイテム(例えば、パレタイズ/スタックされた第1セットの内の1または複数、ならびに、パレタイズ/スタックされる第2のセットのアイテム、など)のそれぞれの属性を反映する。アイテムの例は、アイテムのサイズ(例えば、アイテムの寸法)、重心、アイテムの剛性、パッケージのタイプ、識別子の位置、アイテムの変形性、アイテムの形状、などを含む。作業空間内のアイテムまたは物体の様々なその他の属性が実装されてもよい。別の例として、幾何学的モデルは、容器(例えば、パレット)の上または中にスタックされた1または複数のアイテムの予測安定性を含む。幾何学的モデルは、アイテムのセット(例えば、アイテムのスタック)の予測安定性、および/または、アイテムのスタックに含まれる個々のアイテムの予測安定性を含んでよい。いくつかの実施形態において、システムは、(i)アイテムの1または複数の属性と、(ii)作業空間内のアイテムならびに別のアイテムまたは物体(例えば、パレット)に関する1または複数の予測相互作用とに少なくとも部分的に基づいて、アイテムの予測安定性を決定する。例えば、システムは、予測安定性が計算されているアイテムと接触する(または、アイテムに近接して配置されている)別のアイテムまたは物体の属性の決定に基づいて、予測安定性を決定してよい。特定のアイテムの予測安定性に影響を与えうる他のアイテムの属性の例は、剛性、変形性、サイズ、などを含む。一例として、特定のアイテムが剛性の他のアイテムの上に載っている場合、特定のアイテムは、特定のアイテムが、剛性ではなくまたは剛性の低い他のアイテムの上に載っている場合と比較して、高い予測安定性を有する可能性がある。別の例として、特定のアイテムが、変形可能な別のアイテム(柔らかいパッケージで構成されているものなど)の上に載っている場合、特定のアイテムは、特定のアイテムが、変形可能でなくまたは変形性の低い別のアイテムの上に載っている場合と比較して、低い予測安定性を有する可能性がある。別の例として、特定のアイテムが、特定のアイテムの底部表面積よりも大きい上部表面積を有する別のアイテムの上に載っている場合、もしくは、特定のアイテムの底部表面の比較的高い割合が、別のアイテムの上面によって支持されている場合、アイテムの予測安定性は、特定のアイテムが、特定のアイテムの底部表面積よりも小さい上部表面積を有する場合、もしくは、特定のアイテムの底部表面の比較的高い割合が、別のアイテムの上面に支持されておらず/相互作用していない場合よりも、比較的高くまたは少なくとも高い。
【0041】
いくつかの実施形態において、システムは、ノイズ(例えば、センサノイス)を考慮するために、センサデータを調整する。システムは、ビジョンシステムの実証分析に少なくとも部分的に基づいて、センサデータに含まれるノイズを推定できる。例えば、ビジョンシステムの性能の実証分析が、センサデータに含まれる(例えば、センサデータに内在する)ノイズを判断するために実行されうる。いくつかの実施形態において、システムは、ビジョンシステムに関連する所定のセンサノイズプロファイルを格納している。システムは、ノイズを考慮するためにセンサデータを調整することに関連して、センサノイズプロファイルを利用できる。例えば、システムは、センサプロファイルに少なくとも部分的に基づいて予測されたノイズを打ち消すために調整を適用できる。ビジョンシステムの性能の実証分析は、(i)手動で/物理的にアイテムまたは作業空間を測定し、(ii)ビジョンシステムを用いて同じものをキャプチャし、(iii)アイテム/作業空間の手動/物理的測定値と、センサデータを用いた同じものの測定値との間の差を(例えば、デジタル処理などを用いて)決定することを含みうる。システムは、アイテム/作業空間の手動/物理的測定値とセンサデータを用いた同じものの測定値と間の差をノイズプロファイルと見なしてよい。一例として、システムは、センサデータの変動を決定し、変動に少なくとも部分的に基づいてセンサノイズプロファイルを決定する。実証分析は、統計的に有意な実験/測定のセットに関して実行されうる。ノイズ(またはセンサデータの不正確さ)の例は、(i)ビジョンシステムの視野の端における画像の不正確さ、(ii)作業空間内のアイテムまたはその他の物体からのグレア/反射、などを含みうる。
【0042】
いくつかの実施形態において、システムは、ノイズ(例えば、ロボットアームを制御ことなどによって物理的な世界への幾何学的モデルの遷移から生じる幾何学的ノイズまたは不正確さ)を考慮するために幾何学的モデルを調整する。システムは、ロボット制御の精度または作業空間内のその他の物体の実証分析(例えば、パレットの推定変形、幾何学的モデルで利用される位置に対するパレットの配置の逸脱、など)に少なくとも部分的に基づいて、幾何学的モデルに含まれるノイズを推定できる。例えば、(例えば、アイテムをプレースするなどのタスクを実行する際の)ロボットアームの制御の性能の実証分析が、幾何学的モデルに取り込まれた(例えば、内在する)ノイズを決定するために実行されうる。一例として、システムは幾何学的モデルの変動を決定し、変動に少なくとも部分的に基づいて幾何学的ノイズプロファイルを決定する。いくつかの実施形態において、システムは、ビジョンシステムに関連する所定の幾何学的ノイズプロファイルを格納している。システムは、ノイズを考慮するために幾何学的モデルを調整することに関連して、幾何学的ノイズプロファイルを利用できる。例えば、システムは、幾何学的モデルに含まれる予測ノイズ(例えば、幾何学的モデルに基づいて決定された計画に従ってロボットを制御することに基づいて発生するノイズ)を打ち消すために調整を適用できる。
【0043】
様々な実施形態によると、システムは、幾何学的モデルおよびセンサデータを用いて、作業空間の状態の最良推定を決定する。システムは、幾何学的モデルおよび/またはセンサデータの1または複数におけるノイズ(例えば、ノイズの打ち消し)のために調整を行うことができる。いくつかの実施形態において、システムは、幾何学的モデルに従った状態とセンサデータに従った状態との間の異常または差異を検出する。幾何学的モデルとセンサデータとの間に異常または差異があると判定したことに応じて、システムは、異常または差異にかかわらず、状態の最良推定を行うことができる。例えば、システムは、幾何学的モデルまたはセンサデータを用いるのか、もしくは、幾何学的モデルおよびセンサデータの組み合わせ(例えば、それらの間の補間)を用いるのか、などを決定できる。いくつかの実施形態において、システムは、セグメントごと(例えば、作業空間内のボクセルごと、アイテムごと、または、物体ごと、など)に推定状態を決定する。例えば、作業空間の第1部分が、幾何学的モデルのみを用いて推定され、作業空間の第2部分が、センサデータのみを用いて推定され(例えば、幾何学的モデルに異常があった場合)、および/または、作業空間の第3部分が、幾何学的モデルとセンサデータとの組み合わせに基づいて推定されてよい。
【0044】
様々な実施形態によると、システムは、所定のバイアスに少なくとも部分的に基づいて作業空間の推定状態を決定するために、幾何学的モデルおよびセンサデータを組み合わせる。いくつかの実施形態において、システムは、幾何学的モデルまたはセンサデータを、(例えば、幾何学的モデルとセンサデータとの間の異常を修正するために)幾何学的モデルまたはセンサデータの他方で修正されたグランドトゥルースと見なすか否かを決定することに関連して、所定のバイアスを利用する。一例として、幾何学的モデルがバイアスされることを所定のバイアスが示している場合、システムは、幾何学的モデルを利用し、幾何学的モデルに従った状態をセンサデータで補うことができる。幾何学的モデルに従った状態に関してシステムが実行しうる修正の例は、センサデータを用いて、幾何学的モデルによって予測されたアイテムの配置を確認し、センサデータと幾何学的モデルとの間の差異が所定の閾値を超えた場合に、差異が生じている作業空間の部分に関してセンサデータを利用すること、もしくは、幾何学的モデルおよびセンサデータを利用したデータの補間で幾何学的モデルを修正することである(例えば、異常/差異が存在する作業空間の部分が補間の対象になってもよいし、作業空間全体が補間の対象となってもよい、など)。
【0045】
いくつかの実施形態において、幾何学的モデルおよびセンサデータに関するバイアス(または、各タイプの情報に適用される対応する重み付け)は、幾何学的モデルとセンサデータとのどちらがより正確であるかの判定に少なくとも部分的に基づいて決定される。幾何学的モデルまたはセンサデータの精度は、実証的試行を通して、もしくは、幾何学的モデルおよび/またはセンサデータに含まれる情報またはノイズの変動に基づいて、決定されうる。ロボットは、一般に、センサよりも正確であると考えられる。したがって、いくつかの実施形態において、バイアスは、センサデータと比較して、優先度またはより高い重み付けを幾何学的モデルに与えるように設定される。例えば、デフォルトのバイアスは、センサデータよりもむしろ幾何学的モデルをより優先的に重み付けるように設定されてよい。
【0046】
幾何学的モデルおよびセンサデータが不一致でありうる(例えば、所定の差異閾値よりも差が大きい)状況の一例は、システムが幾何学的モデルを用いて、1セットの10個のアイテムが対応する位置にスタックされていると判定したが(例えば、システムがプログラム的に10個のアイテム配置を格納している)、センサデータは、8個のアイテムのみがそれらの位置(例えば、幾何学的モデルによってアイテムがスタックされる位置)にスタックされていることを示唆しうる状況を含む。2つの箱が見つからないことをセンサデータが示していると判断したことに応じて、システムは、幾何学的データとセンサデータとの間の不一致が、(i)箱がスタックから落下した(例えば、センサデータは、床の上またはスタックの側方にある箱を含みうる)、(ii)センサの視野が別の物体(例えば、ロボットアーム)によって部分的に遮られている、(iii)センサデータに含まれていない箱が他の箱の背後にスタックされているためにセンサデータでは見えないと、幾何学的モデルによって見なされている、などのいずれを理由に生じたのかを決定できる。
【0047】
幾何学的モデルおよびセンサデータが不一致でありうる(例えば、所定の差異閾値よりも差が大きい)状況の別の例は、システムが特定のアイテムをアイテムのスタックの中/上にプレースしたが、特定のアイテムのプレース後に、特定のアイテムがアイテムのスタックから落下した状況を含む。かかる状況における幾何学的モデルによれば、システムは、推定状態に基づいて決定された計画に従って、アイテムがアイテムのスタック上に(例えば、ロボットアームが、計画に従って制御されたことに応じてアイテムをプレースした位置に)あると見なす。しかしながら、センサデータは、期待移動先位置に(例えば、アイテムのスタックの中に)プレースされた特定のアイテムを含まない。その代わり、センサデータは、アイテムがアイテムのスタックから落下したことを反映する(例えば、アイテムは、アイテムのスタックのそばにあり、または、他の形でセンサデータの視野の外側に存在しうる)。アイテムが見つからないことをセンサデータが示していると判断したことに応じて、システムは、アイテムがスタックから落下したか否かを判定できる(例えば、センサデータは、床の上またはスタックの側方にある箱を含みうる)。
【0048】
幾何学的モデルおよびセンサデータが互いから逸脱しうる(例えば、所定の差異閾値よりも差が大きい)状況の一例は、システムがアイテムを他のアイテムの上にプレースしたことで、別のアイテムが変形しうる場合を含む。幾何学的モデルによれば、他のアイテムの変形性が(もしあれば)予測変形を超えている場合、変形可能な他のアイテム上に特定のアイテムをプレースすることは、特定のアイテムの実際の配置が幾何学的モデルから逸脱する原因となりうる(例えば、アイテムの配置は、他のアイテムがその上に配置された特定のアイテムとの相互作用に少なくとも部分的に基づいて変形した程度、または、他のアイテムの変形が予測変形を超えた程度によって歪みうる)。
【0049】
所定のバイアスは、ユーザ選択(例えば、管理者による定義)または所定の状態決定ポリシーに基づいて設定されてよい。所定の状態決定ポリシーは、アイテムのピックアンドプレースの経験的データまたはシミュレーションに基づいて設定されてよい。例えば、所定のバイアスは、アイテムを移動させまたはアイテムをパレタイズすることに関連するコスト関数を最小化するための最良のバイアス(例えば、最適バイアス)に対応する。いくつかの実施形態において、コスト関数は、アイテムを移動させる効率、アイテムを移動させるための予測時間、アイテムの移動/スタックが成功する可能性、アイテムの配置に関連する予測安定性(例えば、特定のアイテムをプレースした後のアイテムの安定性、特定のアイテムをプレースした後の1または複数のその他のアイテムまたはスタックの安定性、など)、などの内の1または複数に少なくとも部分的に基づいている。いくつかの実施形態において、所定のバイアスは、コスト関数が所定のコスト閾値より小さいアイテムの配置に対応する潜在的なバイアスのセットの中から選択される。
【0050】
様々な実施形態によると、システムは、幾何学的モデルおよびセンサデータのためのそれぞれの重み付けを決定することに関連して、所定のバイアスを用いる。例えば、システムは、幾何学的モデルに対応する第1重み付けおよびセンサデータに対応する第2重み付けを決定し、システムは、(例えば、第1重み付けおよび第2重み付けに従って組み合わせた)幾何学的モデルおよびセンサデータの組み合わせを用いて、作業空間の推定状態を決定する。
【0051】
現在の推定状態を取得したことに応じて、システムは、推定状態を用いて、作業空間内の第1アイテムを移動させる(例えば、アイテムをアイテムのスタック上に積み重ねる)ための第1計画を決定し、システムは、第1計画に従って第1アイテムを移動させるようロボットを制御する。第1アイテムをプレースしたことに応じて、システムは、最初の更新推定状態を決定することに関連して、第1アイテムのアイテムの配置に対応する幾何学的データを用いる。システムは、(例えば、ビジョンシステムから)センサデータを取得し、センサデータを分割して物体を決定し(例えば、作業空間のセンサモデル内で物体を識別し)、最初の更新推定状態(例えば、幾何学的モデル)およびセンサデータに少なくとも部分的に基づいて更新推定状態を決定する。例えば、システムは、更新推定状態を決定することに関連して、幾何学的モデルおよびセンサデータを組み合わせる。更新推定状態を決定したことに応じて、システムは、更新推定状態を用いて、作業空間内の第2アイテムを移動させるための第2計画を決定し、システムは、第2計画に少なくとも部分的に基づいて第2アイテムを移動させるようロボットを制御する。
【0052】
幾何学的モデルおよびセンサデータ(例えば、幾何学的モデルの組みあわせ)の利用は、様々な実施形態が関連技術のシステムと比べて低コストになることを可能にする。例えば、システムは、幾何学的モデルおよびセンサデータを用いて、(例えば、幾何学的モデルまたはセンサデータによって引き起こされた)異常を検出し、(例えば、幾何学的モデルまたはセンサデータ、もしくは、両方の間の補間を選択的に利用することに基づいて)異常にかかわらず作業空間の推定状態を決定することができる。したがって、関連技術のシステムは、高精度(例えば、高耐性)のロボットまたは高精度のカメラのいずれかを必要とするが、様々な実施形態は、比較的低い精度(例えば、低い耐性)のロボットまたはより低い精度(例えば、低い耐性)のビジョンシステムを利用できる。関連技術のシステムのロボットまたはカメラに対する高耐性の要件の結果として、かかるシステムによって用いられるロボットおよび/またはカメラが非常に高価になる。様々な実施形態によると、幾何学的モデルおよびセンサデータの両方を組み合わせれば、ロボットまたはビジョンシステムのコストと精度/正確さの必要性とを低減することができる。
【0053】
様々な実施形態によると、ロボットがパレット上にアイテムをプレースしたことに応じて、パレットおよび/またはパレット上のアイテムのスタックの状態を推定するためのシステムが、アイテムの配置に関する情報(例えば、アイテムの位置、アイテムのサイズ、など)を記録する。例えば、システムは、ロボットがパレット上に様々なアイテムをプレースした場所に基づいて、システムの状態の論理的知識を有している。論理的知識は、幾何学的データ(ロボットが制御される方法に基づいて得られた情報など)に対応しうる。しかしながら、論理的知識は、パレットおよび/またはパレット上のアイテムのスタックの実際の状態とは異なりうる。同様に、上述のように、ビジョンシステムによって検出されたパレットおよび/またはパレット上のアイテムのスタックの状態(例えば、センサデータに基づいてモデル化された実際の状態)は、センサデータのノイズまたは不正確/不完全なセンサデータなどに基づいて、実際の状態とは異なりうる。様々な実施形態が、幾何学的データ(例えば、論理的知識)およびセンサデータを用いて、世界のビューを組み合わせる。幾何学的データおよびセンサデータの両方を利用して世界をモデル化することで、各データセットの世界のビューのギャップが埋められる。例えば、ビジョンシステムに基づいて得られたセンサデータは、パレットまたはパレット上のアイテムのスタックの予測状態を更新/改善する必要があるか否かを判定することに関連して利用されてよい。様々な実施形態による状態推定は、パレットおよび/またはパレット上のアイテムのスタックの状態について、センサデータのみまたは幾何学データのみを用いて可能であるよりも良好な推定を提供する。さらに、パレットおよび/またはパレット上のアイテムのスタックの推定状態は、パレットへ/からアイテムをパレタイズ/デパレタイズすることに関連して利用されうる。パレットへの/パレットからのアイテムのパレタイズ/デパレタイズを決定することに関連して、パレットおよび/またはパレット上のアイテムのスタックの状態のより良好な推定状態を利用すれば、より良好な配置を提供でき、より良い最終的なパレット(例えば、より隙間なく/密にパッキングされたパレット、より安定したパレット、など)につながりうる。
【0054】
いくつかの実施形態において、幾何学的データを用いたパレットまたはアイテムのスタックの予測状態が、ビジョンシステム(例えば、センサデータ)を用いたパレットまたはアイテムのスタックの状態と十分に異なるとの判定に応じて、システムは、ユーザへ示唆を提供してよい。例えば、システムは、幾何学的データを利用した予測状態が正しいか、ビジョンシステムを利用した状態が正しいか、または、どちらも正しくなくユーザが現在の状態を修正すべきなのか、を確認するよう、ユーザに促してよい。ユーザは、ユーザインターフェースを用いて、幾何学的データを利用した予測状態と、ビジョンシステムを利用した状態との間の差異を調整してよい。幾何学的データを利用した予測状態がビジョンシステムを利用した状態と十分に異なるとの判定は、2つの状態または状態のモデルの間の差異が所定の閾値を超えているとの判定に基づいてよい。
【0055】
様々な実施形態によると、パレットおよび/またはパレット上のアイテムのスタックの状態を推定するためのシステムは、別のコンピュータシステム(サーバなど)上に実装されている。幾何学的データを用いて状態をモデル化し、ビジョンシステム(例えば、センサデータ)を用いて状態をモデル化し、(例えば、状態の間の差異の調整に基づいて)予測状態を更新するためのモジュールまたはアルゴリズムは、高コストであり、比較的高い計算能力を必要としうる。さらに、ロボットの作業空間またはロボットを制御するコンピュータシステムにおける処理能力が、モジュールを実行するための計算能力および/または帯域幅に対する制約を有しうる。いくつかの実施形態において、ロボットを制御するシステムは、プレースされるアイテムに関するセンサデータおよび情報を取得し、プレースされるアイテムに関するセンサデータおよび情報を、1または複数のネットワークを介してサーバへ送信してよい。いくつかの実施形態において、システムの状態(例えば、パレットの状態および/またはパレット上のアイテムのスタックの状態)を推定するための様々なモジュールを実装することに関連して、複数のサーバが利用されてよい。例えば、幾何学的データを用いて状態をモデル化するためのモジュールが第1サーバによって実行され、ビジョンシステムを用いて状態をモデル化するためのモジュールが第2サーバによって実行され、状態の間の差異に少なくとも部分的に基づいて予測状態を更新するためのモジュールが第3サーバによって実行されてよい。予測状態を決定するための様々なモジュールを実装しうる様々なサーバは、互いに通信してよい。
【0056】
いくつかの実施形態において、推定状態を決定するシステム(例えば、パレット状態推定モジュール/サービスなど)が、(i)幾何学的データに基づいてモデル化された状態と、(ii)ビジョンシステムに基づいてモデル化された状態との間の差異を格納および/または管理してよい。例えば、パレット状態推定器が、パレットおよび/またはパレット上のアイテムのスタックの現在の状態を格納/管理してよい。パレット状態推定器は、パレットへ/パレットからアイテムをパレタイズ/デパレタイズしているロボットを制御するロボットシステムなどのコンピュータシステムによって、または、ロボットを制御するロボットシステムが通信しているサーバによって、実行されるモジュールであってよい。
【0057】
様々な実施形態によると、パレット状態推定器は、各アイテムの計画/プレースを行っている間に現在の状態を決定することに関連して利用されてよい。例えば、ロボットを制御し、および/または、アイテムを移動させるための計画を決定するロボットシステムは、アイテムを移動させるための計画を決定することに関連して、パレット状態推定器にクエリしてよい。パレット状態推定器は、(i)プレースされるアイテムに関する情報と、(ii)ビジョンシステムによって取得された現在のセンサデータとを用いて、クエリされてよい。幾何学的データを用いた現在の状態は、パレット状態推定器によって格納されてもよいし、パレット状態推定器によってアクセス可能であってもよい。いくつかの実施形態において、現在の幾何学的データに関する情報が、現在の状態をパレット状態推定器へクエリすることに関連して、パレット状態推定器へ通信されてよい。いくつかの実施形態において、幾何学的データおよびビジョンシステム(例えば、センサデータ)の両方を用いて現在の状態を決定する際の計算強度のために、パレット状態推定器は、所定の数のアイテム(例えば、N個のアイテム、Nは整数)のプレース後に現在の状態をクエリされてよい。例えば、パレット状態推定器は、一定の頻度でクエリされてよい。別の例として、パレット状態推定器は、プレースされたアイテム(例えば、以前にプレースされたアイテム)が不規則形状または特定のタイプのパッケージ(例えば、ポリバッグのような剛性の低いパッケージタイプ)を有するとの判定に応じて、クエリされてもよい。
【0058】
いくつかの実施形態において、パレット状態推定器は、アイテムのプレース後に、状態(例えば、世界、パレット、および/または、パレット上のアイテムのスタック、など)の内部モデルを繰り返し更新する。状態の内部モデルは、パレットおよび/またはパレット上のアイテムのスタックの現在の状態に対応しうる。パレット状態推定器は、各アイテムのプレース後に内部モデルを更新してよい。例えば、ロボットを制御するロボットシステムは、アイテムに関する情報(例えば、寸法、重量、重心などのアイテムの特徴)、ビジョンシステムによって得られたセンサデータ、および/または、ロボットが制御されてアイテムをプレースした位置に対応する幾何学的データを提供してよい。アイテムに関する情報、センサデータ、および/または、幾何学的データを受信したことに応じて、パレット状態推定器は、その内部モデルを更新してよい。例えば、パレット状態推定器は、(i)センサデータを用いて状態をモデル化するためのモジュールへセンサデータを提供し、(ii)幾何学的データを用いて状態をモデル化するためのモジュールへ幾何学的データおよび/またはアイテムに関する情報を提供し、(iii)センサデータに基づいた状態のモデルおよび/または幾何学的データに基づいた状態のモデル(例えば、もしくは、2つの状態の間の際)に基づいて、その内部モデルを更新してよい。
【0059】
パレットおよび/またはアイテムのスタックの状態のモデルは、パレットを基準として用いて決定されてよい(例えば、パレットの底部がスタックの底部としての基準点として用いられてよい、など)。モデルは、アイテムが、アイテムのプレースされた位置に表されるように、アイテムがプレースされた後に更新されてよい。状態のモデルは、二次元グリッド(例えば、10×10)として格納されてよい。モデルは、さらに、パレット上のアイテムのスタック内の各アイテムに関連する情報を含んでよい。例えば、アイテムに関連する1または複数の特徴が、モデル内のアイテムに関連付けて格納されてよい。いくつかの実施形態において、アイテムのスタックの安定性が、スタック上の様々なアイテムの位置と、アイテムに関連する1または複数の特徴とに基づいて決定/計算されてよい。パレットの状態のモデルは、格納済みのモデルのユニットと物理的世界のユニットとの間の所定の変換に基づいて、物理的世界における表現に変換されてよい。
【0060】
様々な実施形態が、通信インターフェースと、通信インターフェースに接続された1または複数のプロセッサと、を備えたロボットシステムを含む。1または複数のプロセッサは、通信インターフェースを介して、移動先位置の上または中に積み重ねられる複数のアイテムに関連するデータを受信し、受信されたデータに少なくとも部分的に基づいて、移動先位置の上または中にアイテムを積み重ねるための計画を生成し、少なくとも部分的には、計画に従ってアイテムをピックアップして移動先位置の上または中にアイテムを積み重ねることによって、計画を実行するよう構成されていてよい。アイテムを移動先位置の上または中にスタックするための計画を生成することは、各アイテムについて、アイテムに関連する特徴と、(i)1または複数のアイテムが積み重ねられるプラットフォームまたは容器の特徴および(ii)プラットフォームまたは容器の上のアイテムのスタックの現在の状態の内の少なくとも1つと、に少なくとも部分的に基づいて移動先位置を決定することを含んでよく、プラットフォームまたは容器の上のアイテムのスタックの現在の状態は、アイテムのスタックに含まれている1または複数のアイテムの配置に関する幾何学的データと、ビジョンシステムによって取得されたアイテムのスタックに関するセンサデータとに少なくとも部分的に基づく。アイテムのスタックの現在の状態は、アイテムのスタックに含まれている1または複数のアイテムの配置に関する幾何学的データと、ビジョンシステムによって取得されたアイテムのスタックに関するセンサデータとの間の際に少なくとも部分的に基づいて、決定されてよい。プラットフォームまたは容器の上のアイテムのスタックの現在の状態は、サーバ上で実行するパレット状態推定器にロボットシステムがクエリすることに少なくとも部分的に基づいて、取得されてよい。
【0061】
図1は、様々な実施形態に従って、異質なアイテムをパレタイズおよび/またはデパレタイズするためのロボットシステムを示す図である。いくつかの実施形態において、ロボットシステム100は、少なくとも部分的には、
図3の処理300、
図4の処理400、
図5の処理500、
図6の処理600、
図8の処理800、および/または、
図9の処理900に実装される。
【0062】
図の例において、ロボットシステム100は、ロボットアーム102を備える。この例において、ロボットアーム102は、固定されているが、様々な別の実施形態において、ロボットアーム102は、例えば、レール上に取り付けられている、モータ駆動シャーシ上で完全に移動可能である、など、完全にまたは部分的に移動可能であってもよい。図に示すように、ロボットアーム102は、コンベヤ(またはその他のソース)104から任意のおよび/または異種のアイテム(例えば、箱、パッケージ、など)をピックして、パレット(例えば、プラットフォームまたはその他の容器)106上に積み重ねるために用いられる。パレット(例えば、プラットフォームまたは容器)106は、四隅に車輪を備え、四方の側面の内の3つが少なくとも部分的に閉じているパレット、容器、または、ベースを備えており、三面の「ロールパレット」、「ロールケージ」、ならびに/もしくは、「ロール」または「ケージ」「トロリー」とも呼ばれる。他の実施形態において、より多い側面を備え、より少ない側面を備え、および/または、側面のないロールまたは車輪なしのパレットが用いられてもよい。いくつかの実施形態において、
図1に示していない他のロボットが、積み下ろしのための所定位置ならびに/もしくは搬送されるためにトラックまたはその他の目的地、などに、容器106を押し込むために用いられてもよい。
【0063】
いくつかの実施形態において、複数の容器106が、ロボットアーム102の周囲に(例えば、ロボットアームの閾値近傍の範囲内、または、その他のロボットアームのレンジ内に)配置されてもよい。ロボットアーム102は、同時に(例えば、並列しておよび/または同時期に)、1または複数のアイテムを複数のパレット上に積み重ねてよい。複数のパレットの各々は、マニフェストおよび/または注文に関係付けられていてよい。例えば、パレットの各々は、予め設定された宛先(例えば、顧客、住所、など)に関連付けられていてよい。いくつかの例において、複数のパレットの一部は、同じマニフェストおよび/または注文に関係付けられていてよい。しかしながら、複数のパレットの各々が、異なるマニフェストおよび/または注文に関係付けられてもよい。ロボットアーム102は、同じ注文にそれぞれ対応する複数のアイテムを複数のパレットにプレースしてよい。ロボットシステム100は、複数のパレット上の配列(例えば、アイテムのスタック)を決定してよい(例えば、注文に対する複数のアイテムが複数のパレットの間にどのように分けられるのか、任意の1つのパレット上のアイテムがどのように積み重ねられるのか、など)。ロボットシステム100は、1または複数の他のアイテムがパレットに積み重ねられる間、1または複数のアイテム(例えば、注文に対するアイテム)をバッファエリアまたはステージングエリアに保管してよい。一例として、1または複数のアイテムは、パレットへの(例えば、スタックへの)1または複数のアイテムのそれぞれの配置が閾値適合性または閾値安定性を満たす(例えば、超える)とロボットシステム100が判定する時まで、バッファエリアまたはステージングエリアに保管されてよい。閾値適合性または閾値安定性は、所定の値であってもよいし、履歴情報に少なくとも部分的に基づいて経験的に決定された値であってもよい。スタック上のアイテムの配置が閾値適合性または閾値安定性を満たす(例えば、超える)と予期されるか否かを判定することに関連して、ならびに/もしくは、閾値適合性または閾値安定性(例えば、スタックにアイテムをプレースするか否かを評価するためにシミュレーションまたはモデルが比較される閾値)を決定することに関連して、機械学習アルゴリズムが実装されてよい。
【0064】
図の例において、ロボットアーム102は、吸着タイプのエンドエフェクタ(例えば、エンドエフェクタ108)を備えている。エンドエフェクタ108は、複数の吸着カップ110を有する。ロボットアーム102は、図に示すように、ピックアップされるアイテムの上にエンドエフェクタ108の吸着カップ110を配置するために用いられ、真空源が、アイテムを把持し、アイテムをコンベヤ104から持ち上げ、アイテムを容器106上の移動先位置にプレースするための吸着力を提供する。様々なのタイプのエンドエフェクタが実装されてよい。
【0065】
様々な実施形態において、ロボットシステム100は、作業空間のモデル(例えば、作業空間の3Dモデル、および/または、幾何学的モデル)を生成するために用いられるビジョンシステムを備える。例えば、エンドエフェクタ108に取り付けられた3Dカメラまたはその他のカメラ112と、ロボットシステム100が配備されている空間内に取り付けられたカメラ114、116と、の内の1または複数が、コンベヤ104上のアイテムを識別するため、および/または、アイテムを把持し、ピック/プレースし、容器106上に積み重ねる(または、該当する場合、アイテムをバッファエリアまたはステージングエリアにプレースする)ための計画を決定するために用いられる。様々な実施形態において、図示されていないさらなるセンサが、アイテムの属性を識別し(例えば、決定し)、アイテムを把持し、アイテムをピックアップし、決定された軌道を通してアイテムを移動させ、ならびに/もしくは、例えばシステム100によって、アイテムが配置および/または再配置されうるコンベヤ104および/または他のソースおよび/またはステージングエリア上の容器106のアイテムの上または中の移動先位置にアイテムをプレースするために用いられてよい。図示されていないかかるさらなるセンサの例は、コンベヤ104および/またはロボットアーム102に埋め込まれおよび/または隣接する重量センサまたは力センサ、吸着カップ110のx-y平面および/またはz方向(垂直方向)の力センサを含みうる。
【0066】
図の例において、カメラ112は、エンドエフェクタ108の本体の側面に取り付けられているが、いくつかの実施形態において、カメラ112および/またはさらなるカメラが、他の位置に取り付けられてもよい(例えば、吸着カップ110の間の位置から下向きに、エンドエフェクタ108の本体の下面に取り付けられ、もしくは、ロボットアーム102のセグメントまたはその他の構造に取り付けられ、もしくは、その他の位置に取り付けられる、など)。様々な実施形態において、112、114、および、116などのカメラが、コンベヤ104上のアイテム上に見えるおよび/またはアイテムを構成する、テキスト、ロゴ、写真、図、画像、マーク、バーコード、QRコード(登録商標)、または、その他の符号化および/またはグラフィック情報またはコンテンツを読み取るために用いられてよい。
【0067】
いくつかの実施形態において、ロボットシステム100は、制御信号に応答してスペーサ材料の供給源から或る量のスペーサ材料を供給するよう構成されているディスペンサ装置(図示せず)を備える。ディスペンサ装置は、ロボットアーム102上に配置されてもよいし、作業空間の近傍(例えば、作業空間の閾値距離内)に配置されてもよい。例えば、ディスペンサ装置は、ディスペンサ装置が、容器106(例えば、パレット)の上または周囲、もしくは、ロボットアーム102のエンドエフェクタ108の所定の距離内に、スペーサ材料を供給するように、ロボットアーム102の作業空間内に開示されてよい。いくつかの実施形態において、ディスペンサ装置は、ディスペンサ装置をロボットアーム102のエンドエフェクタ108上にまたはエンドエフェクタ108に隣接して取り付けるよう構成されている取り付け具を備える。取り付け具は、ブラケット、ストラップ、1または複数の締め具、などの内の少なくとも1つである。一例として、ディスペンサ装置は、ディスペンサ装置から押し出され/供給されるようにディスペンサ装置内の供給材料を付勢する付勢装置/メカニズムを備えてよい。ディスペンサ装置は、スペーサ材料の供給を制御するために用いられるゲーティング構造を備えてよい(例えば、ゲーティング構造の作動がなければスペーサ材料の供給が防止され、作動に応じて、供給されるスペーサ材料の供給が可能になる)。
【0068】
ディスペンサ装置は、制御信号を受信するよう構成されている通信インターフェースを備えてよい。例えば、ディスペンサ装置は、1または複数の端末(制御コンピュータ118など)と通信してよい。ディスペンサ装置は、1または複数の有線接続ならびに/もしくは1または複数の無線接続を介して、1または複数の端末と通信してよい。いくつかの実施形態において、ディスペンサ装置は、1または複数の端末へ情報を通信する。例えば、ディスペンサ装置は、ディスペンサ装置の状態の示唆(例えば、ディスペンサ装置が正常に動作しているか否かの示唆)、ディスペンサ装置内に備えられているスペーサ材料の種類の示唆、ディスペンサ装置内のスペーサ材料の供給レベルの示唆(例えば、ディスペンサ装置が満杯であるか、空であるか、半量であるか、などの示唆)、などを制御コンピュータ118へ送信してよい。制御コンピュータ118は、或る量のスペーサ材料を供給するようディスペンサ装置を制御することに関連して利用されてよい。例えば、制御コンピュータ118は、容器106の上/中のアイテムのスタックの予測安定性を改善するなどのために、1または複数のアイテムをパレタイズすることに関連してスペーサが利用されることを決定してよい。制御コンピュータ118は、1または複数のアイテムをパレタイズすることに関連して利用するスペーサ材料の量(例えば、スペーサの数、スペーサ材料の量、など)を決定してよい。例えば、1または複数のアイテムをパレタイズすることに関連して利用するスペーサ材料の量は、1または複数のアイテムをパレタイズするための計画を決定することに少なくとも部分的に基づいて決定されてよい。
【0069】
いくつかの実施形態において、ディスペンサ装置は、制御信号に応答してスペーサ材料の供給源から或る量のスペーサ材料の量を供給するよう構成されているアクチュエータを備える。1または複数のアイテムをパレタイズすることに関連してスペーサ/スペーサ材料が利用されると決定したことに応じて、制御コンピュータ118は、アクチュエータに或る量のスペーサ材料を供給させるための制御信号を生成してよい。制御信号は、スペーサとして利用されるスペーサ材料の量の示唆を含んでよい。
【0070】
様々な実施形態によると、スペーサまたはスペーサ材料は剛ブロックである。例えば、スペーサまたはスペーサ材料は、発泡体の剛ブロックであってよい。いくつかの実施形態において、スペーサまたはスペーサ材料は、ポリウレタンを含む。
【0071】
いくつかの実施形態において、スペーサ材料の供給源は、複数の切断済みブロックを含む。複数の切断済みブロックは、複数の切断済みブロックを供給端へ付勢するバネ式カートリッジに予め装填されてよい。切断済みブロックがカートリッジから供給されたことに応じて、複数の切断済みブロックの内の別のブロックが、カートリッジから次に供給される位置に押し出される。
【0072】
いくつかの実施形態において、スペーサ材料の供給源は、より大きいスペーサ材料ブロック、スペーサ材料のストリップ、および、スペーサ材料のロール、の内の1または複数を含む。ディスペンサ装置またはロボットシステム100は、スペーサ材料の供給源から或る量のスペーサ材料を切断するよう構成されているカッターを備えてよい。制御信号がアクチュエータに供給されたことに応じて、アクチュエータは、カッターにスペーサ材料の供給源から或る量のスペーサ材料を切断させてよい。
【0073】
いくつかの実施形態において、スペーサ材料の供給源は、液体前駆体を含む。制御信号がアクチュエータに供給されたことに応じて、アクチュエータは、パレットまたはパレット上のアイテムのスタックの表面上に或る量のスペーサ材料を供給させる。供給された前駆体は、パレットまたはパレット上のアイテムのスタックの表面上に供給された後に硬化しうる。
【0074】
いくつかの実施形態において、スペーサ材料の供給源は、押し出し材料を含む。制御信号がアクチュエータに供給されたことに応じて、押し出し材料は、所望のサイズおよび所望の硬度の1または複数まで満たされる。押し出し材料は、押し出し材料が所望のサイズおよび所望の硬度の1または複数まで満たされたとの判定に応じて密封されてよい。いくつかの実施形態において、押し出し材料は、流体で満たされる。流体は、空気、水、などの内の1または複数であってよい。いくつかの実施形態において、押し出し材料は、ゲルで満たされる。
【0075】
様々な実施形態において、ロボット制御されたディスペンサ、ツーリング、または、機械が、次の箱/層が配置されるための表面領域を準備するために、箱の間および/または箱に隣接する隙間を埋める。いくつかの実施形態において、ロボットシステム100は、ロボットアーム102を用いて、所定の切断済み材料をピック/プレースしてよく、および/または、次のアイテムの表面領域が配置される必要性に合わせてスペーサ材料を動的にトリミングしてもよい。いくつかの実施形態において、ロボット制御されたディスペンサ装置、または、ロボット制御されたディスペンサ装置を備えたロボットパレチゼーションシステムは、パレット表面領域(例えば、前の層の上面)上に通常は収まらない可能性があるとシステムが判定した次の箱またはアイテムのための表面領域を準備することに関連して、長いチューブおよび/またはパッケージから直方体のサイズをトリミングし、直方体を既存のパレット上にプレースするための装置を備える。スペーサは、発泡体、空気で膨らませたプラスチック袋、木材、金属、プラスチック、などを含みうるが、これらに限定されない。ディスペンサ装置は、直方体(例えば、スペーサ)をパレット上へ直接的にプレース(例えば、押し出し、供給、など)してよく、および/または、装置は、ロボットアームの近くに直方体(例えば、スペーサ)を供給してもよく、エンドエフェクタが、直方体(例えば、スペーサ)をパレット表面領域上に再配置/プレースしてよい。ディスペンサ装置は、次の箱またはアイテムのための表面領域を準備するために、層上(例えば、層の上面上)にある箱またはアイテムの間の表面領域の不一致を修正または改善するように、所定の量(例えば、正しい量または期待量)のスペーサ材料を供給してよい。
【0076】
図1をさらに参照すると、図の例において、ロボットシステム100は、この例では無線通信を介して(ただし、様々な実施形態において、有線通信および無線通信の一方または両方で)、ロボットアーム102、コンベヤ104、エンドエフェクタ108、および、センサ(カメラ112、114、および、116、ならびに/もしくは、
図1に示していない重量センサ、力センサ、および/または、その他のセンサなど)などの要素と通信するよう構成されている制御コンピュータ118を備える。様々な実施形態において、制御コンピュータ118は、センサ(カメラ112、114、および、116、ならびに/もしくは、
図1に示していない重量センサ、力センサ、および/または、その他のセンサなど)からの入力を用いて、容器106へ荷積みおよび/または容器106から荷下ろしされるアイテムの1または複数の属性を観察、識別、および、決定するよう構成されている。様々な実施形態において、制御コンピュータ118は、例えば、画像および/またはその他のセンサデータに基づいて、制御コンピュータ118に格納されたライブラリ内および/または制御コンピュータ118にとってアクセス可能なライブラリ内のアイテムモデルデータを用いて、アイテムおよび/またはその属性を識別する。制御コンピュータ118は、アイテムに対応するモデルを用いて、移動先(容器106など)の中/上に、他のアイテムと共に、アイテムを積み重ねるための計画を決定および実施する。様々な実施形態において、アイテム属性および/またはモデルは、アイテムを把持、移動させて、移動先位置(例えば、容器106の中/上にアイテム積み重ねるための計画/再計画処理の一部として、アイテムがプレースされると決定された位置)にプレースするための戦略を決定するのに利用される。
【0077】
図の例において、制御コンピュータ118は、「オンデマンド」遠隔操作装置122に接続されている。いくつかの実施形態において、制御コンピュータ118が、完全自動モードで続行できない場合、例えば、制御コンピュータ118が完全自動モードでアイテムのピックアンドプレースを完了するための戦略を持たなくなるように、アイテムを把持、移動、および、プレースするための戦略が、決定できなくなり、および/または、失敗した場合、制御コンピュータ118は、例えば、アイテムを把持、移動、および、プレースするために、遠隔操作装置122を用いて、ロボットアーム102および/またはエンドエフェクタ108を操作することによって介入するように人間ユーザ124に指示する。
【0078】
ロボットシステム100の操作に関するユーザインターフェースが、制御コンピュータ118および/または遠隔操作装置122によって提供されてよい。ユーザインターフェースは、パレット(または、それに関連するアイテムのスタック)の現在の状態、パレタイズまたはデパレタイズされている現在の注文またはマニフェスト、ロボットシステム100の性能(例えば、時間までにパレタイズ/デパレタイズされたアイテムの数)、などに関連する情報を含む、ロボットシステム100の現在の状態を提供してよい。ユーザは、ロボットシステム100および/またはロボットシステム100内の特定のロボットアームを作動または休止させるために、ユーザインターフェース上の1または複数の要素を選択し、もしくは、他の方法でユーザインターフェースに入力を提供してよい。
【0079】
様々な実施形態によると、ロボットシステム100は、パレット上のスタックのモデルを生成するなどのために、パレットの状態をモデル化するための機械学習処理を実行する。機械学習処理は、パレットの状態をモデル化するための適応的および/または動的な処理を含んでよい。機械学習処理は、ロボットシステム100がパレットの状態のモデルを生成するための処理を規定および/または更新/改良してよい。モデルは、ロボットシステム100内の1または複数のセンサ(ロボットアーム102の作業空間内の1または複数のセンサまたはセンサアレイなど)からの入力(例えば、センサから取得された情報)に少なくとも部分的に基づいて生成されてよい。モデルは、スタックの形状、ビジョン応答(例えば、作業空間内の1または複数のセンサによって取得された情報)、および、機械学習処理、などに少なくとも部分的に基づいて生成されてよい。ロボットシステム100は、1または複数のアイテムをパレタイズ/デパレタイズするための効率的な(例えば、効率を最大化/最適化する)方法を決定することに関連してモデルを利用してよく、パレタイズ/デパレタイズするための方法は、最小閾値安定性値によって制限されうる。1または複数のアイテムをパレタイズ/デパレタイズするための処理は、ユーザ管理者によって設定可能であってよい。例えば、パレタイズ/デパレタイズするための処理が最大化される1または複数の指標は、設定可能であってよい(例えば、ユーザ/管理者によって設定されてよい)。
【0080】
1または複数のアイテムをパレタイズする文脈において、ロボットシステム100は、アイテムをパレット上(例えば、スタック上)にプレースするか否かを決定し、アイテムがプレースされる移動先位置、および、アイテムが移動元位置(例えば、コンベヤなど現在の目的地)から移動先位置へ移動させられる軌道など、アイテムをパレット上にプレースするための計画を選択することに関連して、パレットの状態のモデルを生成してよい。また、ロボットシステム100は、アイテムを解放し、または、他の方法でアイテムをパレット上にプレースする(例えば、アイテムをスタック上に収めるためにアイテムに力を印加する)ための戦略を決定することに関連して、モデルを用いてよい。パレットの状態のモデル化は、パレット上の(例えば、スタック上の)異なる移動先位置へのアイテムのプレースをシミュレートし、異なる位置へのアイテムのプレースから生じると予測される対応する異なる予測適合性および/または予測安定性(例えば、安定性指標)を決定することを含んでよい。ロボットシステム100は、予測適合性および/または予測安定性が、対応する閾値を満たす(例えば、超える)移動先位置を選択してよい。追加的または代替的に、ロボットシステム100は、(例えば、スタック上のアイテムの)予測適合性および/または(例えば、スタックの)予測安定性を最適化する移動先位置を選択してもよい。
【0081】
逆に、パレット(例えば、パレット上のスタック)から1または複数のアイテムをデパレタイズする文脈において、ロボットシステム100(例えば、制御コンピュータ118)は、パレット上(例えば、スタック上)のアイテムを取り出すか否かを決定し、パレットからアイテムを取り出すための計画を選択することに関連して、パレットの状態のモデルを生成してよい。パレットの状態のモデルは、アイテムがパレットから取り出される順序を決定することに関連して利用されてよい。例えば、制御コンピュータ118は、アイテムを取り出すことがパレット(例えば、スタック)の状態の安定性を閾値安定性よりも低下させると予測されるか否かを判断するためにモデルを利用してよい。ロボットシステム100(例えば、制御コンピュータ118)は、パレットからの1または複数のアイテムの取り出しをシミュレートし、パレット(例えば、スタック)の状態の安定性を最適化するパレットからアイテムを取り出すための順序を選択してよい。ロボットシステム100は、モデルを用いて、パレットから取り出す次のアイテムを決定してよい。例えば、制御コンピュータ118は、アイテムの取り出し中および/または取り出し後のスタックの予測安定性が閾値安定性を超えるとの判定に少なくとも部分的に基づいて、パレットから取り出す次のアイテムとしてアイテムを選択してよい。モデルおよび/または機械学習処理は、スタックからアイテムをピックするための戦略を決定することに関連して利用されてよい。例えば、アイテムが、スタックから取り出される次のアイテムとして選択された後、ロボットシステム100は、アイテムをピックするための戦略を決定してよい。アイテムをピックするための戦略は、パレットの状態(例えば、スタックの決定済みの安定性)、アイテムの属性(例えば、サイズ、形状、重量または予測重量、重心、パッケージのタイプ、など)、アイテムの位置(例えば、スタック内の1または複数の他のアイテムに対する位置)、スタック上の他のアイテムの属性(例えば、隣接するアイテムの属性など)などに少なくとも部分的に基づいてよい。
【0082】
様々な実施形態によると、把持戦略(例えば、アイテムを把持するための戦略)を改善することに関連して、機械学習処理が実行される。ロボットシステム100は、パレタイズ/デパレタイズされる1または複数のアイテムに関する属性情報を取得してよい。属性情報は、アイテムの向き、材料(パッケージタイプなど)、サイズ、重量(または予測重量)、または、重心、などの内の1または複数を含んでよい。また、ロボットシステム100は、移動元位置(例えば、アイテムがピックされる入力コンベヤに関する情報)を取得してよく、アイテムがプレ-スされるパレット(または、アイテムが積み重ねられている注文に対応するパレットのセットなど、移動先パレットがそこから決定されるパレットのセット)に関する情報を取得してよい。アイテムをピックアンドプレースするための計画を決定することに関連して、ロボットシステム100は、アイテムに関する情報(例えば、属性情報、移動先位置、など)を用いて、アイテムをピックするための戦略を決定してよい。ピック戦略は、ピック位置(例えば、ロボットアーム102がエンドエフェクタなどを介してアイテムに係合するアイテム上の位置)の示唆を含んでよい。ピック戦略は、アイテムをピックするために印加される力、および/または、ロボットアーム102がアイテムを移動元位置から移動先位置へ移動させる間にアイテムを把持するための保持力を含んでよい。ロボットシステム100は、アイテムに関する情報(例えば、属性情報、移動先位置、など)と、アイテムをピックする性能(例えば、そのアイテムまたは類似したアイテム(1または複数の類似した属性を共有するアイテムなど)をピックアンドプレースした過去の反復に関連する履歴情報)との間の関連性に少なくとも部分的に基づいてピック戦略を改善するために、機械学習処理を利用してよい。
【0083】
様々な実施形態によると、ロボットシステム100は、スペーサまたは或る量のスペーサ材料の利用がパレット上のアイテムのスタックの結果を改善する(例えば、アイテムのスタックの安定性を改善する)との判定に応じて、1または複数のアイテムをパレタイズすることに関連してスペーサまたは或る量のスペーサ材料を利用することを決定してよい。いくつかの実施形態において、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数のスペーサを配置することが、パレット上のアイテムのスタックを改善するとの判定は、パッキング密度、平らな上面、および、安定性、の内の1または複数に少なくとも部分的に基づく。いくつかの実施形態において、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数のスペーサを配置することが、パレット上のアイテムのスタックを改善するとの判定は、N個のアイテムのセットを含むアイテムのスタックのパッキング密度が、N個のアイテムのセットが1または複数のスペーサなしでパレット上にプレースされた場合のパッキング密度よりも高いとの判定に少なくとも部分的に基づく。いくつかの実施形態において、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数のスペーサを配置することが、パレット上のアイテムのスタックを改善するとの判定は、上面が、N個のアイテムのセットが1または複数のスペーサなしでパレット上にプレースされた場合の上面よりも平らであるとの判定に少なくとも部分的に基づく。いくつかの実施形態において、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数のスペーサを配置することが、パレット上のアイテムのスタックを改善するとの判定は、N個のアイテムのセットを含むアイテムのスタックの安定性が、N個のアイテムのセットが1または複数のスペーサなしでパレット上にプレースされた場合の安定性よりも高いとの判定に少なくとも部分的に基づく。Nは、正の整数であってよい(例えば、完成時のパレットにパレタイズされるアイテムの総数よりも小さい正の整数)。
【0084】
一例として、Nは、パレタイズされるアイテムの総数よりも小さい場合があるため、ロボットシステム100は、アイテムのスタックの最適化において制限されうる(例えば、ロボットシステム100は、一度にN個のアイテムのプレースのみを計画しうる)。したがって、1または複数のスペーサを利用することで、N個のアイテムをプレースすることに関連する自由度数が増す。ロボットシステム100は、N個のアイテムの積み重ねを最適化するために(または、最小安定性閾値を満たすスタックなど、N個のアイテムで「十分に良好な」スタックを達成するために)、1または複数のスペーサを利用してよい。ロボットシステム100は、1または複数のスペーサを利用するか否か、利用するスペーサの数、スペーサの配置、などを決定することに関連して、コスト関数を利用してよい。例えば、コスト関数は、安定性値、1または複数のアイテムをプレースするための時間、アイテムのスタックのパッキング密度、アイテムのスタックの上面の上部の平坦値または変動率、ならびに、供給材料のコスト、などの内の1または複数を含んでよい。
【0085】
様々な実施形態によると、制御コンピュータ118は、容器106上のアイテムのスタックの安定性を改善することに関連して、スペーサを容器106(例えば、パレット)またはアイテムのスタック上に配置するようロボットシステム100を制御する。一例として、スペーサは、スペーサが利用された場合にアイテムのスタックの安定性が改善されると推定される(例えば、所定の可能性閾値を超える確率を有するなど、可能性が高い)との判定に応じて配置されてよい。別の例として、制御コンピュータ118は、アイテムのセット(例えば、N個のアイテムのセット、Nは整数)の配置に関連して、アイテムのスタックの安定性が閾値安定性値より小さい、および/または、アイテムのスタックの安定性が閾値安定性値よりも小さいと推定されるとの判定に応じて、スペーサを利用するようロボットシステム100を制御してもよい。
【0086】
様々な実施形態によると、制御コンピュータ118は、アイテムのスタックのモデル、ならびに/もしくは、1または複数のアイテムのセットをプレースするシミュレーションに少なくとも部分的に基づいて、アイテムのスタックの安定性を決定してよい。コンピュータシステムは、アイテムのスタックの現在のモデルを取得(例えば、決定)し、アイテムのセットの配置をモデル化(例えば、シミュレート)してよい。アイテムのスタックをモデル化することに関連して、アイテムのスタックの予測安定性が決定されてよい。アイテムのスタックのモデル化は、アイテムのセットの配置のモデル化に関連してスペーサの配置をモデル化することを含んでよい。
【0087】
いくつかの実施形態において、制御コンピュータ118は、アイテムのスタック(または、シミュレートされたアイテムのスタック)および/またはスペーサの上面の1または複数の属性に少なくとも部分的に基づいて、アイテムのスタック(または、シミュレートされたアイテムのスタック)の安定性を決定してよい。例えば、上面が平らである程度の測定が、アイテムのスタックの安定性を決定することに関連して利用されてよい。平らな面に箱をプレースすることは、アイテムの安定した配置および/またはスタックにつながりうる。別の例として、上面の上の平らな領域の表面積が、アイテムのスタック上のアイテムの配置の安定性または予測安定性を決定することに関連して利用されてもよい。アイテムのスタックの上面の上の平らな領域が、アイテムのスタック上に配置されるアイテムの底面に対して大きいほど、アイテムのスタックの安定性が閾値安定性値を満たす(例えば、超える)可能性が高くなる。
【0088】
様々な実施形態によると、ロボットシステム100は、パレットもしくはパレット上の1または複数のアイテムのスタックのモデルを生成し、スペーサまたはスペーサ材料は、パレットもしくはパレット上の1または複数のアイテムのスタックのモデルに少なくとも部分的に基づいて、1または複数のアイテムのパレチゼーションに関連して配置されるように決定される。ロボットシステム100は、パレットもしくはパレット上の1または複数のアイテムのスタックの少なくとも上面のモデルを生成し、パレット上に次にプレースされるN個のアイテムのセットを決定し(例えば、Nは正の整数)、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数のスペーサを配置することが、スペーサなしでN個のアイテムのセットをプレースした結果のスタックと比較して、パレット上のアイテムのスタックを改善すると判定し、1または複数のスペーサに対応する量のスペーサ材料をアクチュエータに供給させるための1または複数の制御信号を生成し、N個のアイテムのセットをパレット上にプレースすることに関連して1または複数の制御信号をアクチュエータに提供してよい。
【0089】
様々な実施形態によると、パレタイズされるアイテムの間のアイテム(例えば、アイテムのタイプ)のばらつきが、安定した方法での(例えば、アイテムのスタックの安定性が閾値安定性値を満たす方法での)アイテムのパレチゼーションを複雑にしうる。いくつかの実施形態において、制御コンピュータ118は、パレタイズされる或る数のアイテムしか予測できない場合がある。例えば、システムは、パレタイズされるN個のアイテムのキュー/バッファを有してよく、ここで、Nは、正の整数である。Nは、パレット上にスタックされるアイテムの総数の一部でありうる。例えば、Nは、パレットにスタックされるアイテムの総数に対して比較的小さい場合がある。したがって、ロボットシステム100は、次のN個の既知のアイテムを利用してアイテムの積み重ねを最適化することしかできない場合がある。例えば、ロボットシステム100は、アイテムのスタックの現在の状態(例えば、現在のモデル)と、次にスタックされるN個のアイテムに関連する1または複数の属性とに従って、1または複数のアイテムを積み重ねるための計画を決定してよい。いくつかの実施形態において、1または複数のスペーサの利用は、次のN個のアイテムが積み重ねられる方法の柔軟性を提供し、および/または、アイテムのスタックの安定性を改善しうる。
【0090】
様々な実施形態が、パレット上への比較的多数の混在した箱またはアイテムのパレチゼーションを含む。パレタイズされる様々な箱およびアイテムは、異なる属性(高さ、形状、サイズ、剛性、パッケージタイプ、など)を有しうる。様々な箱またはアイテムの1または複数の属性におけるばらつきは、アイテムを安定した方法でパレット上にプレースすることを困難しうる。いくつかの実施形態において、ロボットシステム100(例えば、制御コンピュータ118)は、プレースされるアイテムの下にある箱または他のアイテムよりも大きい表面積(例えば、より大きい底面)を有するアイテムのための移動先位置(例えば、アイテムがプレースされる位置)を決定してよい。いくつかの実施形態において、異なる高さ(例えば、異なる箱の高さ)を有するアイテムが、パレットの比較的高い領域(例えば、最大パレット高さに0.5を乗じた値に等しい高さ閾値よりも高い高さ、最大パレット高さに2/3を乗じた値に等しい高さ閾値よりも高い高さ、最大パレット高さに0.75を乗じた値に等しい高さ閾値よりも高い高さ、最大パレット高さに別の所定の値を乗じた値に等しい高さ閾値よりも高い高さ)にプレースされてよい。
【0091】
様々な実施形態によると、スペーサ材料の供給/利用戦略(例えば、1または複数のアイテムをパレタイズすることに関連してスペーサ材料を利用するための戦略)を改善することに関連して、機械学習処理が実行される。ロボットシステム100は、パレタイズ/デパレタイズされる1または複数のアイテムに関する属性情報と、1または複数のアイテムをパレタイズ/デパレタイズすることに関連して利用される1または複数のスペーサに関する属性情報とを取得してよい。属性情報は、アイテムの向き、材料(例えば、スペーサ材料のタイプ)、サイズ、重量(または予測重量)、重心、剛性、寸法、などの内の1または複数を含んでよい。また、ロボットシステム100は、移動元位置(例えば、アイテムがピックされる入力コンベヤに関する情報)を取得してよく、アイテムがプレ-スされるパレット(または、アイテムが積み重ねられている注文に対応するパレットのセットなど、移動先パレットがそこから決定されるパレットのセット)に関する情報を取得してよい。アイテムをピックアンドプレースするための計画を決定することに関連して、ロボットシステム100は、アイテムに関する情報(例えば、属性情報、移動先位置、など)を用いて、アイテムをパレタイズ(例えば、アイテムをピックおよび/またはプレース)するための戦略を決定してよい。パレタイズ戦略は、ピック位置(例えば、ロボットアーム102がエンドエフェクタなどを介してアイテムに係合するアイテム上の位置)と、移動先位置(例えば、パレット/容器106またはアイテムのスタック上の位置)との示唆を含んでよい。パレタイズ戦略は、アイテムをピックするために印加される力、および/または、アイテムを移動元位置から移動先位置へ移動させる間にロボットアーム102がアイテムを把持するための保持力、ロボットアームがアイテムを移動先位置へ移動させる軌道、移動先位置にアイテムをプレースすることに関連して利用されるスペーサ材料の量(もしあれば)の示唆、ならびに、スペーサ材料を配置するための計画を含んでよい。ロボットシステム100は、アイテムに関する情報(例えば、属性情報、移動先位置、など)と、(i)アイテムをピックおよび/またはプレースする性能(例えば、そのアイテムまたは類似したアイテム(1または複数の類似した属性を共有するアイテムなど)をピックアンドプレースした過去の反復に関連する履歴情報)、(ii)アイテムのスタックのモデルを用いて生成された予測安定性などに対する、アイテムが移動先位置にプレースされた後のアイテムの安定性の性能(例えば、そのアイテムまたは類似したアイテム(1または複数の類似した属性を共有するアイテムなど)をパレタイズした過去の反復に関連する履歴情報)、ならびに、(iii)アイテムのスタックのモデルを用いて生成された予測安定性などに対する、アイテムおよび/またはスペーサ材料が移動先位置にプレースされた後のアイテムのスタックの安定性の性能(そのアイテムもしくは類似したアイテムおよび/またはスペーサ(1または複数の類似した属性を共有するアイテム/スペーサなど)をパレタイズした過去の反復に関連する履歴情報)、の内の1または複数との間の関係性に少なくとも部分的に基づいてパレタイズ戦略を改善するために、機械学習処理を利用してよい。いくつかの実施形態において、ロボットシステム100は、スペーサならびに/もしくはパレタイズされる1または複数のアイテムに関連する情報(例えば、パレタイズ戦略に関連して、スペーサおよび/またはパレタイズされる1または複数のアイテムに関する情報(例えば、属性情報、移動先位置、など)と、1または複数のスペーサを用いてアイテムのセットをパレタイズした場合の予測安定性(例えば、アイテムのスタックのモデルを用いたアイテムのパレタイズのシミュレーションに基づく予測安定性)に対する、1または複数のスペーサを用いてアイテムのセットをパレタイズした場合の安定性能との間の関係性に少なくとも部分的に基づいて、パレタイズ戦略に関連して1または複数のスペーサの利用を改善するために、機械学習処理を用いてよい。
【0092】
ロボットシステム100によって生成されるモデルは、幾何学的モデルに対応し、または、幾何学的モデルに少なくとも部分的に基づきうる。いくつかの実施形態において、ロボットシステム100は、プレースされた1または複数のアイテム(例えば、ロボットシステム100がロボットアーム102を制御してプレースさせたアイテム)と、1または複数のアイテムの少なくとも一部にそれぞれ関連する1または複数の属性と、作業空間内の1または複数の物体(例えば、パレット、ロボットアーム、棚システム、シュート、または、作業空間内に備えられている他のインフラストラクチャなど、所定の物体)とに少なくとも部分的に基づいて、幾何学的モデルを生成する。幾何学的モデルは、アイテムの積み重ねをモデル化する(例えば、アイテムのスタックの状態/安定性をモデル化する、など)ために制御コンピュータ118上で物理エンジンを実行することに少なくとも部分的に基づいて決定されてよい。幾何学的モデルは、作業空間の様々な構成要素の予測相互作用(アイテムと、別のアイテム、物体、または、(例えば、アイテムのスタックが位置するパレットまたはその他の容器を上昇/移動させるためのフォークリフトまたはその他の装置の利用をモデル化するために)スタックに印加されるシミュレート済みの力との相互作用など)に基づいて決定されてよい。
【0093】
いくつかの実施形態において、システムは、各アイテムの移動(例えば、プレース)後に幾何学的モデルを更新する。例えば、システムは、作業空間の状態(アイテムのスタックの状態/安定性、ならびに、アイテムのスタックの中の1または複数のアイテムの位置、など)に対応する幾何学的モデルを維持する(例えば、幾何学的モデルを格納する)。幾何学的モデルは、アイテムを移動させる計画を決定し、アイテムを移動させるようロボットアームを制御することに関連して、現在の幾何学的モデルを利用する。アイテムの動きに応じて、システムは、アイテムの動きを反映するように、幾何学的モデルを更新する。例えば、アイテムのスタックをデパレタイズする場合、特定のアイテムがピックされ、アイテムのスタックから移動されたことに応じて、システムは、特定のアイテムがもはやスタック上にあるものとして表されず、特定のアイテムのプレースされた移動先位置で幾何学的モデル内に含まれるように、幾何学的モデルを更新し、もしくは、移動先位置が作業空間の外にある場合、幾何学的モデルは、アイテムを除去するように更新される。さらに、幾何学的モデルは、特定のアイテムがスタックから除去された後のアイテムのスタックの安定性を反映するように更新される。別の例として、アイテムのセットをパレタイズする場合、システムは、アイテムのスタックの上/中での特定のアイテムの配置を反映するように幾何学的モデルを更新する。システムは、(例えば、特定のアイテムが他のアイテムとの間に有する相互作用、または、特定のアイテムの配置に基づく他のアイテムの間の相互作用、などを反映するために)アイテムのスタックの上/中でのアイテムの配置に少なくとも部分的に基づいて、アイテムのスタックの更新された安定性を含むように幾何学的モデルを更新できる。
【0094】
いくつかの実施形態において、システムは、(i)所定の数のアイテムの移動(例えば、プレース)の後、もしくは、(ii)所定の数のアイテムの移動、または、異常(1または複数の異常基準(例えば、異常の程度が異常閾値を超えること、など)を満たす異常など)の検出のいずれか早い方の後に、現在の状態を更新する(例えば、幾何学的モデルへの更新に基づいて更新する)。アイテムの所定の数(例えば、X個のアイテム、Xは正の整数)は、ユーザ選択、ロボット制御システムポリシーに基づいて設定され、または、アイテムの配置の実証分析に基づいて他の方法で決定されうる。一例として、アイテムの所定の数は、アイテムの数が所定のコスト関数(例えば、効率、安定性、安定性の予測変化、などを反映するコスト関数)に関して最適/最良の結果をもたらすとの判断に基づいて設定される。一例として、システムは、現在の推定状態を決定し、現在の推定状態を用いて、次のX個のアイテムを移動させるための計画を決定し、X個のアイテムの移動(例えば、アイテムのスタッキングまたはデスタッキング)の後に、システムは、更新された推定状態(例えば、X個のアイテムの配置を反映するための幾何的な更新/モデル)を決定する。システムは、幾何学的モデルおよびセンサデータ(例えば、現在の幾何学的モデルおよび現在のセンサデータ、など)の組み合わせに少なくとも部分的に基づいて、更新された状態を決定する。次いで、システムは、計画を決定し、計画に従って次のアイテムのセットをプレースするようロボットを制御することに関連して、更新された状態を利用する。
【0095】
いくつかの実施形態において、システムが推定状態を更新する頻度は、動的に決定される。例えば、システムは、移動後にシステムが推定状態を更新するアイテムの数に対応する値Xを動的に決定する。いくつかの実施形態において、システムは、アイテムの1または複数の属性(例えば、以前に移動/プレースされたアイテムの属性、および/または、移動されるアイテムの属性)に少なくとも部分的に基づいて、値X(例えば、推定状態の更新頻度に対応する)を動的に決定する。一例として、システムは、現在の推定状態を用いてX個のアイテムのセットがプレースされる前(例えば、直前など)に、不規則にプレースされたアイテムまたは変形可能なアイテムがプレースされ、もしくは、X個のアイテムのセットが不規則形状のアイテムまたは変形可能なアイテムを含むとの判定に基づいて、値Xを動的に決定する。
【0096】
推定状態の動的な決定/更新の例は、(i)第1セットのX個のアイテムをパレットまたはその他の容器の上または中にプレースし、もしくは、第1セットのX個のアイテムをパレットまたはその他の容器から除去するよう、ロボットアームを制御すること、(ii)(例えば、第1セットのX個のアイテムのプレース/除去を反映する)推定状態を決定すること、(iii)推定状態を用いて、第2セットのY個のアイテムをパレットまたはその他の容器の上または中にプレースし、もしくは、第2セットのY個のアイテムをパレットまたはその他の容器から除去するよう、ロボットアームを制御するための計画を生成または更新すること、ならびに/もしくは、(iv)パレットまたはその他の容器の上または中に第1セットのY個のアイテムをプレースし、もしくは、パレットまたは他の容器から第1セットのY個のアイテムを除去するよう、ロボットアームを制御すること、を含む。いくつかの実施形態において、パレットまたはその他の容器の上または中に積み重ねられた1または複数のアイテムの状態は、N個のアイテムが積み重ねられた後に推定される。
【0097】
上述の例は、システムが1または複数のパレット上にアイテムのセットをパレタイズする文脈で論じられているが、ロボットシステムは、1または複数のパレットからアイテムのセットをデパレタイズすることに関連して利用されることが可能である。
【0098】
図2は、様々な実施形態に従って、異質なアイテムをパレタイズおよび/またはデパレタイズするためのロボットシステムを示す図である。いくつかの実施形態において、システム200は、少なくとも部分的には、
図3の処理300、
図4の処理400、
図5の処理500、
図6の処理600、
図8の処理800、および/または、
図9の処理900によって実装される。
【0099】
図の例において、システム200は、ロボットアーム205を備える。この例において、ロボットアーム205は、固定されているが、様々な別の実施形態において、ロボットアーム205は、例えば、レール上に取り付けられている、モータ駆動シャーシ上で完全に移動可能である、など、完全にまたは部分的に移動可能であってもよい。他の実装例において、システム200は、作業空間を有する複数のロボットアームを備えてよい。図に示すように、ロボットアーム205は、1または複数のコンベヤ(またはその他のソース)225および230から任意のおよび/または異種のアイテムと、パレット210、パレット215、および/またはパレット220などのパレット(例えば、プラットフォームまたはその他の容器)上のアイテムと、をピックするために利用される。いくつかの実施形態において、
図2に示していない他のロボットが、積み下ろしのための所定位置ならびに/もしくは搬送されるためにトラックまたはその他の目的地、などに、パレット210、パレット215、および/または、パレット220を押し込むために用いられてよい。
【0100】
図2に示すように、システム200は、1または複数の所定のゾーンを備えてよい。例えば、パレット210、パレット215、および、パレット220は、所定のゾーン内に配置されていることが図示されている。所定のゾーンは、地面にマークまたはラベルを付すことによって、または、システム200に示されているフレームを用いるなど、別の方法で構造的に示されていてよい。いくつかの実施形態において、所定のゾーンは、ロボットアーム205の周りに放射状に配置されていてよい。いくつかの場合において、単一のパレットが、所定のゾーンに挿入される。他の場合においては、1または複数のパレットが、所定のゾーンに挿入される。所定のゾーンの各々は、(例えば、ロボットアーム205が、対応するパレット上にアイテムをプレースし、または、対応するパレットからアイテムをデパレタイズする、などできるように)、ロボットアーム205のレンジ内に配置されてよい。いくつかの実施形態において、所定のゾーンまたは所定のゾーン内に配置されたパレットの内の1つが、アイテムが一時的に保管される(例えば、アイテムが所定のゾーン内のパレットにプレースされるまでの一時的な保管など)バッファエリアまたはステージングエリアとして利用される。
【0101】
1または複数のアイテムが、コンベヤ225および/またはコンベヤ230を介するなどして、ロボットアーム205の作業空間に提供されてよい(例えば、運ばれてよい)。システム200は、コンベヤ225および/またはコンベヤ230の速度を制御してよい。例えば、システム200は、コンベヤ225の速度をコンベヤ230の速度とは独立的に制御してよく、システム200は、コンベヤ225および/またはコンベヤ230の両方の速度を制御してよい。いくつかの実施形態において、システム200は、(例えば、ロボットアーム205がアイテムをピックアンドプレースするのに十分な時間を確保するために)コンベヤ225および/またはコンベヤ230を一時停止してよい。いくつかの実施形態において、コンベヤ225および/またはコンベヤ230は、1または複数のマニフェスト(例えば、注文)のためのアイテムを運ぶ。例えば、コンベヤ225およびコンベヤ230は、同じマニフェストおよび/または異なるマニフェストのためのアイテムを運んでよい。同様に、パレット/所定のゾーンの内の1または複数が、特定のマニフェストに関連付けられていてよい。例えば、パレット210およびパレット215は、同じマニフェストに関連付けられてよい。別の例として、パレット210およびパレット220は、異なるマニフェストに関連付けられてよい。
【0102】
システム200は、コンベヤ(コンベヤ225またはコンベヤ230など)からアイテムをピックし、パレット(パレット210、パレット215、または、パレット220など)にアイテムをプレースするよう、ロボットアーム205を制御してよい。ロボットアーム205は、アイテムに関連する計画に少なくとも部分的に基づいて、アイテムをピックし、アイテムを対応する移動先位置(例えば、パレットまたはパレット上のスタックの上の位置)へ移動させてよい。いくつかの実施形態において、システム200は、アイテムがコンベヤ上にある間などに、アイテムに関連する計画を決定し、システム200は、アイテムのピックアップ時に(例えば、アイテムの取得された属性(重量など)に基づいて、もしくは、他のアイテムまたは人間との衝突が予想される旨の示唆など作業空間内のセンサによって取得された情報に応答して)計画を更新してよい。システム200は、アイテムに関連付けられた識別子(アイテム上のバーコード、QRコード、もしくは、その他の識別子もしくは情報など)を取得してよい。例えば、システム200は、アイテムがコンベヤで運ばれている時に、識別子をスキャン/取得してよい。識別子を取得したことに応じて、システム200は、マニフェストに対するアイテム識別子のマッピングおよび/またはパレットに対するマニフェストのマッピングに対してルックアップを実行することなどによって、アイテムがプレースされるパレットを決定することに関連して識別子を利用してよい。アイテムが属するマニフェスト/注文に対応する1または複数のパレットを決定したことに応じて、システム200は、パレット上のアイテムのスタックのモデルまたはシミュレーション、および/または、パレット上へのアイテムのプレースに少なくとも部分的に基づいて、アイテムをプレースするパレットを選択してよい。また、システム200は、アイテムが選択済みのパレットにプレースされる特定の場所(例えば、移動先位置)を決定してよい。さらに、アイテムが移動されうる計画された経路または軌道を含め、アイテムを移動先位置へ移動させるための計画が決定されてよい。いくつかの実施形態において、計画は、作業空間内の1または複数のアイテム/物体に関連する検出された状態または条件を変更またはそれに適応するための積極的な対策を実行することなどに関連して、ロボットアーム205がアイテムを移動されている時に更新される(例えば、予想される衝突イベントを回避するため、アイテムの測定された重量が予測重量よりも大きいことを考慮するため、アイテムが移動される時にアイテムに掛かるせん断力を低減するため、など)。
【0103】
様々な実施形態によると、システム200は、1または複数のセンサおよび/またはセンサアレイを備える。例えば、システム200は、コンベヤ225および/またはコンベヤ230の近傍に、1または複数のセンサ(センサ240および/またはセンサ241んど)を備えてよい。1または複数のセンサは、アイテムのラベル上の識別子または情報、もしくは、アイテムの寸法のようなアイテムの属性など、コンベヤ上のアイテムに関連する情報を取得してよい。いくつかの実施形態において、システム200は、所定のゾーンおよび/またはゾーン内のパレットに関する情報を取得する1または複数のセンサおよび/またはセンサアレイを備える。例えば、システム200は、パレット220またはパレット220が配置されている所定のゾーンに関連する情報を取得するセンサ242を備えてよい。センサは、1または複数の2Dカメラ、3D(例えば、RGBD)カメラ、赤外線、および、作業空間(または、パレットおよびパレット上のアイテムのスタックなど、作業空間の一部)の三次元ビューを生成するためのその他のセンサを含んでよい。パレットに関する情報は、パレットおよび/またはパレット上のアイテムのスタックの状態を決定することに関連して利用されてよい。一例として、システム200は、パレットに関する情報に少なくとも部分的に基づいて、パレット上のアイテムのスタックのモデルを生成してよい。次いで、システム200は、アイテムをパレットにプレースするための計画を決定することに関連して、モデルを利用してよい。別の例として、システム200は、パレットに関する情報に少なくとも部分的に基づいて、アイテムのスタックが完成したことを決定してよい。
【0104】
様々な実施形態によると、システム200は、パレット上のスタックの安定性の判定に少なくとも部分的に基づいて、アイテムをピックアンドプレースするための計画を決定する(または、計画を更新する)。システム200は、パレット210、215、および/または、220の内の1または複数についてスタックのモデルを決定してよく、システム200は、アイテムをプレースするスタックを決定することに関連して、モデルを利用してよい。一例として、次に移動されるアイテムが比較的大きい場合(例えば、アイテムの表面積がパレットのフットプリントに対して大きいような場合)、システム200は、パレット210上にそのアイテムをプレースすると、(例えば、スタックの表面が非平面であるために)その上のスタックが不安定になりうると判断しうる。対照的に、システム200は、比較的大きい(例えば、平坦な)アイテムをパレット215および/またはパレット220のスタック上にプレースすることが、比較的安定したスタックをもたらしうると判断してよい。パレット215および/またはパレット220に対するスタックの上面は、比較的平坦であり、比較的大きいアイテムをその上にプレースすることは、スタックの不安定性につながりえない。システム200は、アイテムをパレット215および/またはパレット220上にプレースした際の予測安定性が所定の安定性閾値よりも大きくなりうること、もしくは、アイテムをパレット215またはパレット220上にプレースすることがアイテムの(例えば、少なくとも安定性に関して)最適なプレースをもたらしうることを決定してよい。
【0105】
システム200は、所定のゾーン内のパレットの状態および/またはロボットアーム205の動作の状態を通信してよい。パレットの状態および/またはロボットアームの動作の状態は、ユーザまたはその他の人間のオペレータへ通信されてよい。例えば、システム200は、システム200の状態に関する情報(例えば、パレット、所定のゾーン、ロボットアームなどの状態)が、端末(オンデマンド遠隔操作装置、および/または、人間のオペレータによって利用される端末、など)へ通信される通信インターフェース(図示せず)を備えてよい。別の例として、システム200は、所定のゾーンの近傍にある状態インジケータ(状態インジケータ245および/または状態インジケータ250など)を備えてよい。
【0106】
状態インジケータ250は、対応する所定のゾーン内のパレットの状態および/またはロボットアーム205の動作の状態を通信することに関連して利用されてよい。例えば、システム200が、パレット220が配置されている所定のゾーンに関してアクティブである場合、状態インジケータは、緑色のライトを点灯させ、もしくは、他の方法で状態インジケータ250を介してアクティブ状態の情報または示唆を伝えることで、その旨を示唆することができる。システム200は、ロボットアーム205が所定のゾーン内のパレット上の1または複数のアイテムをアクティブにパレタイズしていると判定したことに応じて、所定のゾーンに関してアクティブ状態であると決定されてよい。別の例として、システム200が、パレット220が配置されている所定のゾーンに関して非アクティブである場合、状態インジケータは、赤色のライトを点灯させ、もしくは、他の方法で状態インジケータ250を介してアクティブ状態の情報または示唆を伝えることで、その旨を示唆することができる。システム200は、ロボットアーム205が、所定のゾーン内のパレット上の1または複数のアイテムをアクティブにパレタイズしていないとの判定に応じて(例えば、ユーザがその所定のゾーン(またはセル)を一時停止したことに応じて)、もしくは、パレット220上のアイテムのパレチゼーションが完了したとの判定に応じて、非アクティブであると判定されてよい。人間のオペレータまたはユーザは、対応する事前に所定のゾーンに入ることが安全であるか否かの示唆として、状態インジケータを利用してよい。例えば、対応する所定のゾーンへ/から、完成したパレットを搬出し、または、空のパレットを挿入する作業を行うユーザは、対応する状態インジケータを参照し、所定のゾーン内の動作が非アクティブであることを状態インジケータが示している時に所定のゾーンに安全に入ることができる。
【0107】
様々な実施形態によると、システム200は、作業空間内の1または複数のセンサによって得られた情報を用いて、パレットおよび/またはパレット上に積み重ねられたアイテムに関する異常状態を判定してよい。例えば、システム200は、センサによって得られた情報に少なくとも部分的に基づいて、ロボットアーム205および/または対応する所定のゾーンに対してパレットがずれていると判定してよい。別の例として、システム200は、センサによって得られた情報に少なくとも部分的に基づいて、スタックが不安定であること、パレット上のアイテムが乱流を経験していること、などを判定してもよい。異常状態を検出したことに応じて、システムは、オペレータによって利用されるオンデマンド遠隔操作装置またはその他の端末などへ異常状態の示唆を通信してよい。いくつかの実施形態において、異常状態を検出したことに応じて、システム200は、パレットおよび/または対応するゾーンを非アクティブ状態に自動設定してよい。異常状態をオペレータに通知することに加えて、または、その代わりに、システム200は、積極的な対策を実行してもよい。積極的な対策は、異常状態を少なくとも部分的に修正する(例えば、落下したアイテムを再び積み重ねる、パレットを再整列させる、など)よう、ロボットアーム205を制御することを含んでよい。いくつかの実装例において、挿入されたパレットがずれている(例えば、所定のゾーンに不正確に挿入されている)ことを検出したことに応じて、システム200は、ずれを修正するために、スタックをモデル化するための処理および/またはアイテムをパレット上にプレースするための処理を較正してよい。例えば、システム200は、アイテムをパレット上にプレースするための計画を決定して実施する時に、ずれに対応するオフセットを生成および利用してよい。いくつかの実施形態において、システム200は、異常の程度が閾値より小さいと判定したことに応じて、異常状態を部分的に修正するための積極的な対策を実行する。異常の程度が閾値より小さいと判定する例は、(i)パレットのずれが閾値ずれ値より小さいとの判定、(ii)位置ずれしたアイテム、誤配置されたアイテム、または、落下したアイテムの数が閾値数より小さいとの判定、(iii)位置ずれしたアイテム、誤配置されたアイテム、または、落下したアイテムのサイズがサイズ閾値を満たすとの判定、などを含む。
【0108】
人間のオペレータは、ネットワーク(有線ネットワークおよび/または無線ネットワークなど)を介してシステム200と通信してよい。例えば、システム200は、システム200を1または複数のネットワークに接続するための通信インターフェースを備えてよい。いくつかの実施形態において、ネットワークを介してシステム200に接続された端末が、人間のオペレータがシステム200へ命令を提供でき、および/または、人間のオペレータがシステム200の状態に関する情報(例えば、ロボットアームの状態、特定のパレットの状態、特定のマニフェストに対するパレチゼーション処理の状態、など)を取得できるユーザインターフェースを提供する。人間のオペレータは、ユーザインターフェースへの入力によってシステム200に指示を提供してよい。例えば、人間のオペレータは、ユーザインターフェースを用いて、ロボットアームを一時停止し、特定のマニフェストに関するパレチゼーション処理を一時停止し、特定のパレットに対するパレチゼーション処理を一時停止し、パレット/所定のゾーンの状態をアクティブ/非アクティブの間で切り替える、などしてよい。
【0109】
様々な実施形態において、システム200の要素が、追加、除去、交換などされてもよい。かかる例において、制御コンピュータは、新たな要素を初期化および登録し、動作テストを実行し、キッティング動作を開始/再開して、例えば、新たに追加された要素を組み込む。
【0110】
様々な実施形態によると、システム200は、複数のゾーン内の各パレット(例えば、パレット210、パレット215、および/または、パレット220)についての推定状態、もしくは、複数のゾーンの間のパレットのセットについて集合推定状態、もしくは、個々の推定状態および集合推定状態の両方を決定(例えば、計算、維持、格納、など)する。いくつかの実施形態において、個々の推定状態および集合推定状態は、
図1のロボットシステム100に関連して記載した推定状態と同様に決定される。
【0111】
様々な実施形態によると、システム200は、1または複数のセンサ(例えば、センサ240、センサ241、など)を備えたビジョンシステムを備える。様々な実施形態において、システム200は、パレット上に1または複数のアイテムをプレースする位置を決定することに関連して(もしくは、パレットから1または複数のアイテムのデパレタイズすることに関連して)センサデータおよび幾何学的データ(例えば、幾何学的モデル)を利用する。システム200は、異なるデータソースを用いて、パレット(またはパレット上のアイテムのスタック)の状態をモデル化する。例えば、システム200は、パレット上の1または複数のアイテムの位置と、1または複数のアイテムに関連する1または複数の特徴(または属性)(例えば、アイテムのサイズ)とを推定してよい。1または複数のアイテムに関連する1または複数の特徴は、アイテムのサイズ(例えば、アイテムの寸法)、重心、アイテムの剛性、パッケージのタイプ、識別子の位置、などを含んでよい。
【0112】
システム200は、作業空間内の1または複数のアイテムの1または複数の属性に少なくとも部分的に基づいて、幾何学的モデルを決定する。例えば、幾何学的モデルは、1セットのアイテム(例えば、パレタイズ/スタックされた第1セットの内の1または複数、ならびに、パレタイズ/スタックされる第2のセットのアイテム、など)のそれぞれの属性を反映する。アイテムの例は、アイテムのサイズ(例えば、アイテムの寸法)、重心、アイテムの剛性、パッケージのタイプ、識別子の位置、アイテムの変形性、アイテムの形状、などを含む。作業空間内のアイテムまたは物体の様々なその他の属性が実装されてもよい。
【0113】
システム200によって生成されるモデルは、幾何学的モデルに対応し、または、幾何学的モデルに少なくとも部分的に基づきうる。いくつかの実施形態において、システム200は、プレースされた1または複数のアイテム(例えば、システム200がロボットアーム205を制御してプレースさせたアイテム)、1または複数のアイテムの少なくとも一部にそれぞれ関連する1または複数の属性、作業空間内の1または複数の物体(例えば、パレット、ロボットアーム、棚システム、シュート、または、作業空間内に備えられている他のインフラストラクチャなど、所定の物体)、などに少なくとも部分的に基づいて、幾何学的モデルを生成する。幾何学的モデルは、アイテムの積み重ねをモデル化する(例えば、アイテムのスタックの状態/安定性をモデル化する、など)ために制御コンピュータ上で物理エンジンを実行することに少なくとも部分的に基づいて決定されてよい。幾何学的モデルは、作業空間の様々な構成要素の予測相互作用(アイテムと、別のアイテム、物体、(例えば、アイテムのスタックが位置するパレットまたはその他の容器を上昇/移動させるためのフォークリフトまたはその他の装置の利用をモデル化するために)スタックに印加されるシミュレート済みの力との相互作用など)に基づいて決定されてよい。
【0114】
様々な実施形態によると、システム200は、幾何学的モデルおよびセンサデータを用いて、作業空間の状態の最良推定を決定する。システム200は、幾何学的モデルおよび/またはセンサデータの1または複数におけるノイズ(例えば、ノイズの打ち消し)のために調整を行うことができる。いくつかの実施形態において、システム200は、幾何学的モデルに従った状態とセンサデータに従った状態との間の異常または差異を検出する。幾何学的モデルとセンサデータとの間に異常または差異があると判定したことに応じて、システム200は、異常または差異にかかわらず、状態の最良推定を行うことができる。例えば、システム200は、幾何学的モデルまたはセンサデータを用いるのか、もしくは、幾何学的モデルおよびセンサデータの組み合わせ(例えば、それらの間の補間)を用いるのか、などを決定する。いくつかの実施形態において、システム200は、セグメントごと(例えば、作業空間内のボクセルごと、アイテムごと、または、物体ごと、など)に推定状態を決定する。例えば、作業空間の第1部分が、幾何学的モデルのみを用いて推定され、作業空間の第2部分が、センサデータのみを用いて推定され(例えば、幾何学的モデルに異常があった場合)、および/または、作業空間の第3部分が、幾何学的モデルとセンサデータとの組み合わせに基づいて推定されてよい。
図2に示す例を用いて、システム200は、集合推定状態を決定することに関連して、パレット210上のアイテムのスタックについて個々の推定状態を決定するために幾何学的モデルのみを利用し、パレット215上のアイテムのスタックについて個々の推定状態を決定するためにセンサデータのみを利用し、パレット220上のアイテムのスタックのためにそれぞれの幾何学的モデルおよびセンサデータの組み合わせを利用してよい。
【0115】
上述の例は、システムが1または複数のパレット上にアイテムのセットをパレタイズする文脈で論じられているが、ロボットシステムは、1または複数のパレットからアイテムのセットをデパレタイズすることに関連して利用されることが可能である。
【0116】
図3は、様々な実施形態に従って、1または複数のアイテムをパレタイズするための処理を示すフローチャートである。いくつかの実施形態において、処理300は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0117】
工程310で、アイテムのリストが取得される。アイテムのリストは、1または複数のパレット上にまとめてパレタイズされるアイテムのセットに対応しうる。様々な実施形態によると、パレタイズされるアイテムのセットは、マニフェストまたは注文が遂行される指示に少なくとも部分的に基づいて決定される。例えば、注文を受信したことに応じて、注文のアイテムのリストが生成されてよい。別の例として、同じ受領者に送られる複数の注文に対応するアイテムのリストが生成されてもよい。
【0118】
アイテムは、倉庫内の棚またはその他の位置に置かれていてよい。アイテムをパレタイズするために、アイテムは、アイテムをパレタイズするロボットシステムへ移動される。例えば、アイテムは、アイテムを1または複数のパレット上にパレタイズする1または複数のロボットアームのレンジ内へアイテムを移動させる1または複数のコンベヤ上に置かれてよい。アイテムのリストを取得したことに応じて、アイテムの少なくとも一部は、特定のロボットアーム、特定のロボットアームに対応する所定のゾーン、および/または、特定のパレット(例えば、パレット識別子、所定のゾーンに配置されたパレット)などに関連付けられる。
【0119】
工程320で、アイテムのリストと、利用可能なセンサ情報とに基づいて、アイテムをピック/プレースする計画を生成するために、プランニング(または再プランニング)が実行される。計画は、アイテムのリスト上の1または複数のアイテムを取ってきて、アイテムをロボットアームへ運ぶための対応する1または複数のコンベヤ上にかかるアイテムをプレースするための1または複数の戦略を含んでよい。様々な実施形態によると、アイテムのリスト上のアイテムがパレタイズに向けて適切なロボットアームに提供される順序が、アイテムのリストに少なくとも部分的に基づいて決定される。
【0120】
アイテムがコンベヤ上にプレースされる順序は、アイテムと、1または複数のパレット上のアイテムの予測スタックとに少なくとも大まかに基づいてよい。例えば、コンベヤ上にアイテムをプレースする順序を決定するシステムは、(例えば、スタックのベース/底部を形成するアイテムを最初に搬送し、スタックの上に向かってアイテムを段階的に搬送するために)、アイテムの予測スタックのモデルを生成し、モデルに基づいて順序を決定してよい。アイテムのリスト上のアイテムが複数のパレット上にパレタイズされる場合、それぞれのスタックのベース/底部を形成する(または、そうでなければスタックの底部に比較的近い)と予期されるアイテムが、スタックの実質的に中央部または上部に積まれると予期されるアイテムの前にコンベヤ上に置かれてよい。複数のパレット上にパレタイズされる様々なアイテムが、互いに散在している場合があり、ロボットシステムは、ロボットアームへの到着時にアイテムをソートしてよい(例えば、ロボットアームは、アイテム(アイテムの識別子またはアイテムの属性など)に少なくとも基づいて、アイテムをピックして適切なパレット上にプレースしてよい)。したがって、対応するスタックのベース/底部に対応するアイテムは、互いに散在している場合があり、各パレット/スタックのための様々なアイテムは、対応するスタックが構築される時にコンベヤ上に置かれてよい。
【0121】
コンピュータシステムは、アイテムのリストに属するアイテムについて、1または複数の予測スタックのモデルを生成してよい。モデルは、1または複数の閾値(適合性閾値または安定性閾値、その他のパッキング指標(例えば、密度)、など)に少なくとも部分的に基づいて生成されてよい。例えば、コンピュータシステムは、予測安定性値が安定性閾値を満たす(例えば、超える)スタックのモデルを生成できる。モデルは、機械学習処理を用いて生成されてよい。機械学習処理は、アイテムの以前のスタックなどの履歴情報(例えば、以前のスタック内のアイテムの属性、以前のスタックに関する性能指標(安定性、密度、適合性、など))に基づいて、繰り返し更新されてよい。いくつかの実施形態において、アイテムのリスト上のアイテムをパレタイズするためのスタックのモデルは、アイテムの1または複数の属性に少なくとも部分的に基づいて生成される。
【0122】
アイテムの様々な属性が、計画を決定する前または間に取得されてよい。属性は、アイテムのサイズ、アイテムの形状、アイテムのパッケージのタイプ、アイテムの識別子、アイテムの重心、アイテムが壊れやすいか否かの表示、アイテムの上部または底部の表示、などを含んでよい。一例として、アイテムの少なくとも一部に関連する1または複数の属性が、アイテムのリストに少なくとも部分的に基づいて取得されてよい。1または複数の属性は、1または複数のセンサによって取得された情報に少なくとも部分的に基づいて、ならびに/もしくは、アイテム(例えば、アイテムタイプ、アイテム識別子(シリアル番号、モデル番号、など))に対する属性のマッピングにおいてルックアップを実行することによって、取得されてよい。
【0123】
いくつかの実施形態において、アイテムのリストに属するアイテムについて、1または複数の予測統計値のモデルを生成することは、作業空間(例えば、アイテムの1または複数のスタックを含む作業空間)について、推定状態を生成する(例えば、決定する)ことを含む。コンピュータシステムは、1または複数のアイテムのセットを移動(例えば、パレタイズまたはデパレタイズ、など)させるための計画を決定し、コンピュータシステムは、計画に従って、1または複数のアイテムのセットを移動させるようロボット(例えば、ロボットアーム)を制御する。計画に従って1または複数のアイテムのセットを移動したことに応じて、コンピュータシステムは、作業空間の推定状態を決定する。例えば、コンピュータシステムは、アイテムのセットの移動に少なくとも部分的に基づいて、推定状態を更新する。いくつかの実施形態において、推定状態は、幾何学的モデルおよびセンサデータが不一致である(例えば、幾何学的モデルとセンサデータとの間の差異が所定の差異閾値よりも大きい、または、異常を含んでいる、など)との判定に応じて、幾何学的モデルまたはセンサデータ、もしくは、幾何学的モデルおよびセンサデータの組み合わせに少なくとも部分的に基づいて決定される。更新された/現在の推定状態は、1または複数のアイテムのセットの移動を反映している(例えば、パレタイズの場合、更新された推定状態は、スタック上への1または複数のアイテムのセットのプレースに関する情報などを含む)。更新された/現在の推定状態を決定したことに応じて、コンピュータシステムは、1または複数のアイテムの別のセットを移動させるための計画を決定し、コンピュータシステムは、計画に従って、1または複数のアイテムの別のセットを移動させるようロボットを制御する。
【0124】
いくつかの実施形態において、コンピュータシステムは、(i)所定の数のアイテムの移動(例えば、プレース)の後、もしくは、(ii)所定の数のアイテムの移動、または、異常(1または複数の異常基準(例えば、異常の程度が異常閾値を超えること、など)を満たす異常など)の検出のいずれか早い方の後に、現在の状態を更新する(例えば、幾何学的モデルへの更新に基づいて更新する)。アイテムの所定の数(例えば、X個のアイテム、Xは正の整数)は、ユーザ選択、ロボット制御システムポリシーに基づいて設定され、または、アイテムの配置の実証分析に基づいて他の方法で決定されうる。一例として、アイテムの所定の数は、アイテムの数が所定のコスト関数(例えば、効率、安定性、安定性の予測変化、などを反映するコスト関数)に関して最適/最良の結果をもたらすとの判断に基づいて設定される。一例として、コンピュータシステムは、現在の推定状態を決定し、現在の推定状態を用いて、次のX個のアイテムを移動させるための計画を決定し、X個のアイテムの移動(例えば、アイテムのスタッキングまたはデスタッキング)の後に、コンピュータシステムは、更新された推定状態(例えば、X個のアイテムの配置を反映するための幾何的な更新/モデル)を決定する。コンピュータシステムは、幾何学的モデルおよびセンサデータ(例えば、現在の幾何学的モデルおよび現在のセンサデータ、など)の組み合わせに少なくとも部分的に基づいて、更新された状態を決定する。次いで、コンピュータシステムは、計画を決定し、計画に従って次のアイテムのセットをプレースするようロボットを制御することに関連して、更新された状態を利用する。
【0125】
様々な実施形態によると、コンピュータシステムは、幾何学的モデルとセンサデータとの間の補間を実行することに少なくとも部分的に基づいて、推定状態を決定する。例えば、システムは、幾何学的モデルの特定の部分とセンサデータの対応する部分とに対して補間を実行する(例えば、特定の部分は、差異閾値を超えまたは異常を含む幾何学的モデルとセンサデータとの間の差異に対応しうる)。
【0126】
様々な補間技術が実施されてよい。幾何学的モデルの特定の部分は、幾何学的モデルのための点群における特定の点(または点のセット)に対応してよく、センサデータの対応する部分は、センサデータのための点群におけるその特定の点に対するセンサデータであってよい、などである。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの間で適応補間を実行する。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの間で非適応補間を実行する。適応補間処理の例は、最近傍補間、バイリニア補間、バイキュービック補間、スプライン補間、シンク補間、ランチョス補間、などを含む。様々な他の補間処理が、推定状態を決定することに関連して実行されてもよい。
【0127】
工程330で、アイテムは、工程320で決定および/または更新された計画に従って、ピックされ、対応するコンベヤ上にアイテムがプレースされる場所の近くの位置へ(所定の/計画された)軌道を通して移動され、移動先位置にプレースされる。
【0128】
図の例において、(再)プランニングおよび計画実施(工程320、330)は、アイテムのリスト上のアイテムを提供する高レベル目標が完了(工程340)するまで継続し、完了すると、処理300は終了する。様々な実施形態において、再プランニング(工程320)は、予期しないおよび/または識別できないアイテムの到着、属性を示すセンサ読み取り値が、アイテム識別および/または関連するアイテムモデル情報に基づいて予測されたもの以外の値を有すること、などの条件によってトリガされてよい。予期されない条件の他の例は、予期されたアイテムが紛失していると判定すること、アイテム識別を再評価して、アイテムが元々識別されたもの以外であると判定すること、識別されたアイテムと一致しないアイテム重量またはその他の属性を検出すること、アイテムを落下させ、または、アイテムを把持しなおす必要があること、後に到着するアイテムが元々の計画および/または現在の計画によって予定されているように1または複数の他のアイテム上に積み重ねられるには重すぎると判定すること、ならびに、容器に積み重ねられたアイテムのセットにおける不安定性を検出することを含むが、これらに限定されない。
【0129】
図4は、様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャートである。いくつかの実施形態において、処理400は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0130】
様々な実施形態によると、処理400は、システムが1または複数のアイテムを移動させるための計画を決定するとの決定に応じて呼び出される。いくつかの実施形態において、処理400は、積み重ねられるアイテムのセットにおける各アイテムのプレースに関して呼び出される。いくつかの実施形態において、処理400は、推定状態の最後の決定から所定数のアイテムが移動された後など、所定の頻度/間隔で呼び出される。前述のいずれかに加えて、システムは、以前にプレースされたアイテムまたは現在プレースされているアイテムの属性に少なくとも部分的に基づいて、処理400を呼び出してよい。例えば、処理400は、以前にプレースされたアイテムまたは現在のアイテムが不規則形状(例えば、閾値サイズを超えるサイズ/寸法、非長方形の形状、など)を有し、および/または、変形可能である(例えば、アイテムが変形性閾値を超える予測変形性を有し、または、アイテムが柔らかいパッケージ(ポリバッグなど)を有する、など)との判定に応じて呼び出される。別の例として、システムは、以前にプレースされたアイテムまたはプレースされる現在のアイテムが、アイテムのスタックの中で不安定性(例えば、閾値不安定性)を引き起こしうるとの判定に応じて、処理400を呼び出す。
【0131】
工程410で、プレースされたアイテムに関連する情報が取得される。システムは、(例えば、アイテムがパレタイズされることをマニフェスト上などで予め知られている場合に)アイテムに関連する予め格納された情報に基づいて、または、ビジョンシステムによって取得された情報(例えば、アイテム識別子、サイズ、パッケージのタイプ、重量、など)に基づいて、アイテムに関連する情報を取得する。プレースされたアイテムに関連する情報は、アイテムの属性などに対応しうる。
【0132】
工程420では、プレースされたアイテムを含むアイテムのスタックに関する幾何学的データが受信される。いくつかの実施形態において、システムは、アイテムの配置を反映するように更新された現在の幾何学的モデルを取得する。現在の幾何学的モデルは、アイテムの配置またはアイテムが属するアイテムのセットの配置(例えば、計画に従ってロボットがアイテムをプレースする動作に基づく予測配置)を決定することに関連して利用される推定状態であってよい。
【0133】
工程430で、ビジョンシステムによって取得されたセンサデータが取得される。いくつかの実施形態において、システムは、ビジョンシステムによって取得されたセンサデータを取得する。例えば、システムは、作業空間の現在の状態をキャプチャするようビジョンシステムに命令し、システムは、かかるキャプチャに関する情報を用いて、センサデータを取得する。
【0134】
工程440で、現在の状態またはモデルが、幾何学的データおよびセンサデータに少なくとも部分的に基づいて更新される。システムは、幾何学的モデルとセンサデータとの差異の決定などに応じて、幾何学的モデルまたはセンサデータもしくは幾何学的モデルおよびセンサデータの両方に少なくとも部分的に基づいて、予測状態を決定する。
【0135】
様々な実施形態によると、システムは、少なくとも部分的には、幾何学的データの少なくとも一部およびセンサデータの少なくとも一部に基づいて補間を実行することによって、推定状態(例えば、更新された推定状態)を決定する。いくつかの実施形態において、推定状態の第1部分を取得するために幾何学的モデルの第1部分およびセンサデータの第1部分に関して実行される補間処理は、推定状態の第2部分を取得するために幾何学的モデルの第2部分およびセンサデータの第2部分に関して実行される補間とは異なる。
【0136】
いくつかの実施形態において、システムは、1または複数のアイテムを移動させるための計画を決定し、計画に従って1または複数のアイテムを移動させるようロボットを制御することに関連して、更新された推定状態を利用する。
【0137】
工程450で、処理400が完了したか否かについて判定がなされる。いくつかの実施形態において、処理400は、推定状態のさらなる更新が実行されないこと、さらなるアイテムが移動されないこと、ユーザがシステムを終了したこと、管理者が処理400の一時停止または停止を示唆していること、などの決定に応じて、完了したと判定される。処理400が完了したとの判定に応じて、処理400は終了する。処理400が完了していないという判定に応じて、処理400は工程410へ戻る。
【0138】
図5は、様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャートである。いくつかの実施形態において、処理500は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0139】
様々な実施形態によると、処理500は、システムが1または複数のアイテムを移動させるための計画を決定するとの決定に応じて呼び出される。いくつかの実施形態において、処理500は、積み重ねられるアイテムのセットにおける各アイテムのプレースに関して呼び出される。いくつかの実施形態において、処理500は、推定状態の最後の決定から所定数のアイテムが移動された後など、所定の頻度/間隔で呼び出される。前述のいずれかに加えて、システムは、以前にプレースされたアイテムまたは現在プレースされているアイテムの属性に少なくとも部分的に基づいて、処理500を呼び出してよい。例えば、処理500は、以前にプレースされたアイテムまたは現在のアイテムが不規則形状(例えば、閾値サイズを超えるサイズ/寸法、非長方形の形状、など)を有し、および/または、変形可能である(例えば、アイテムが変形性閾値を超える予測変形性を有し、または、アイテムが柔らかいパッケージ(ポリバッグなど)を有する、など)との判定に応じて呼び出される。別の例として、システムは、以前にプレースされたアイテムまたはプレースされる現在のアイテムが、アイテムのスタックの中で不安定性(例えば、閾値不安定性)を引き起こしうるとの判定に応じて、処理500を呼び出す。
【0140】
様々な実施形態によると、処理500は、アイテムを移動させる1または複数のロボットシステム(例えば、パレチゼーション/デパレチゼーションシステム、シンギュレーションシステム、キッティングシステム、など)にサービスを提供する1または複数のサーバによって実行される。例えば、システムは、1または複数のロボットシステムからクエリを受信して、推定状態を提供する。システムは、(例えば、アイテムのスタックに関してアイテムをピックアンドプレースするロボットシステムの動作に基づいて、および/または、センサデータに基づいて)、アイテムの1または複数のスタックの現在の推定状態を維持してよい。
【0141】
工程510で、プレースされたアイテムと関連する情報が受信される。いくつかの実施形態において、システムは、アイテムに関連する予め格納された情報に基づいて、アイテムに関連する情報を取得する。例えば、システムは、(例えば、アイテムに関連付けられた識別子に基づいて)アイテムに対する属性のマッピングに関するルックアップを実行する。いくつかの実施形態において、プレースされたアイテムに関連する情報は、アイテムをプレースする際に1または複数のセンサ(例えば、ビジョンシステム)によって取得されたアイテムの属性(例えば、アイテムまたはパッケージの剛性/変形性、サイズ、重量、など)に少なくとも部分的に基づいて受信される。
【0142】
工程520では、プレースされたアイテムを含むアイテムのスタックに関する幾何学的データが受信される。いくつかの実施形態において、システムは、アイテムの配置を反映するように更新された現在の幾何学的モデルを取得する。現在の幾何学的モデルは、アイテムのスタックの予測状態(例えば、アイテムが計画に従って正確にプレースされたとシステムが推測するアイテムのスタックの状態、など)に対応しうる。例えば、システムは、プレースされたアイテム(または、プレースされたアイテムが属するアイテムのセット)を移動させるための計画を決定することに関連して用いられる幾何学的モデルを取得し、システムは、プレースされたアイテムの配置を反映するように幾何学的モデルを更新する。
【0143】
工程530で、ビジョンシステムによって取得されたセンサデータが取得される。いくつかの実施形態において、システムは、ビジョンシステムによって取得されたセンサデータを取得する。例えば、システムは、作業空間の現在の状態をキャプチャするようビジョンシステムに命令し、システムは、かかるキャプチャに関する情報を用いて、センサデータを取得する。
【0144】
工程540で、現在の状態またはモデルが、幾何学的データおよびセンサデータに少なくとも部分的に基づいて更新される。システムは、幾何学的モデルとセンサデータとの差異の決定などに応じて、幾何学的モデルまたはセンサデータもしくは幾何学的モデルおよびセンサデータの両方に少なくとも部分的に基づいて、予測状態を決定する。
【0145】
様々な実施形態によると、システムは、少なくとも部分的には、幾何学的データの少なくとも一部およびセンサデータの少なくとも一部に基づいて補間を実行することによって、推定状態(例えば、更新された推定状態)を決定する。いくつかの実施形態において、推定状態の第1部分を取得するために幾何学的モデルの第1部分およびセンサデータの第1部分に関して実行される補間処理は、推定状態の第2部分を取得するために幾何学的モデルの第2部分およびセンサデータの第2部分に関して実行される補間とは異なる。
【0146】
いくつかの実施形態において、更新された推定状態は、1または複数のアイテムを移動させるための計画を決定し、計画に従って1または複数のアイテムを移動させるようロボットを制御することに関連して利用される。
【0147】
工程550で、更新された現在の状態またはモデルが、ロボットシステムに提供される。いくつかの実施形態において、推定状態(例えば、初期の推定状態、または、アイテムの以前のピック/プレースに基づいて更新された推定状態)を決定したことに応じて、システムは、推定状態を用いて1または複数の他のアイテムを移動させるための計画を決定するロボットシステムへ推定状態を提供する。いくつかの実施形態において、システムは、ロボットシステムからの要求に応答して、推定状態を提供する。例えば、システムは、アイテムを移動させる1または複数のロボットシステム(例えば、パレチゼーション/デパレチゼーションシステム、シンギュレーションシステム、キッティングシステム、など)にサービスを提供する1または複数のサーバ(例えば、リモートサーバ)を備える。
【0148】
工程560で、処理500が完了したか否かについて判定がなされる。いくつかの実施形態において、処理500は、推定状態のさらなる更新が実行されないこと、さらなるアイテムが移動されないこと、ユーザがシステムを終了したこと、管理者が処理500の一時停止または停止を示唆していること、などの決定に応じて、完了したと判定される。処理500が完了したとの判定に応じて、処理500は終了する。処理500が完了していないという判定に応じて、処理500は工程510へ戻る。
【0149】
図6は、様々な実施形態に従って、パレットおよび/またはアイテムのスタックの現在の状態を決定するための処理を示すフローチャートである。いくつかの実施形態において、処理600は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0150】
工程610で、状態のモデルが、幾何学的データに基づいて取得される。いくつかの実施形態において、システムは、システムの現在の幾何学的モデルを取得する。例えば、システムは、以前の幾何学的モデル/推定状態が決定された時点からシステムがロボットアームを制御して実行したアイテムの移動(例えば、スタックへのアイテムのプレース、スタックからのアイテムの除去、など)を含むように、以前の幾何学的モデルを更新する。
【0151】
工程620で、状態のモデルが、センサデータに基づいて取得される。システムは、作業空間に備えられた1または複数のセンサ(例えば、ビジョンシステム)によってキャプチャされた情報に基づいて、センサデータを取得する。
【0152】
工程630で、幾何学的データに基づいたモデルとセンサデータに基づいたモデルとの差異が決定される。システムは、幾何学的モデルとセンサデータとの間の差異を計算し、または、幾何学的中央センサデータの間の差異を定性的に決定する、などする。例えば、システムは、アイテムのスタックの中の様々なアイテムの位置/境界の間の差異を計算する。別の例として、システムは、ビジョンシステムの視野が遮られた場合、または、アイテムがアイテムのスタックから倒れた場合(例えば、幾何学的モデルに予想も反映もされていない)などに、アイテムが幾何学的モデルおよびセンサデータの一方に含まれ、幾何学的モデルおよびセンサデータの他方で見つからないか否かを判定する。
【0153】
工程640で、差異が所定の閾値を超えているか否かの判定がなされる。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの間の差異を所定の差異閾値と比較する。所定の差異閾値は、幾何学的データおよびセンサデータの補間または組み合わせでは解決が期待されない異常(例えば、システムが人的介入を必要とする判断する異常)に対応しうる。
【0154】
工程640において差異が所定の閾値を超えていないと判定されたことに応じて、処理600は、幾何学的データに基づいて決定されたモデルと、センサデータに基づいて決定されたモデルとの間の差異に少なくとも部分的に基づいて、現在のモデルまたは状態が更新される工程650に進む。
【0155】
工程640において差異が所定の閾値を超えていると判定されたことに応じて、処理600は、示唆がユーザへ提供される工程660に進む。例えば、差異が所定の閾値を超えていると判定したことに応じて、システムは、手動による人的介入を求めることを決定する。システムは、幾何学的モデルまたはセンサデータ、幾何学的モデルおよびセンサデータの組み合わせのいずれを用いるか、もしくは、どちらも用いないか(例えば、rモデルのユーザ定義された態様を利用するため、など)を確認するようユーザに促すことができる。
【0156】
いくつかの実施形態において、ユーザに提供される示唆は、作業空間の一部(アイテムのスタックの一部など)に関する幾何学的モデルとセンサデータに基づくモデルとの間の差異の示唆である。例えば、その示唆は、幾何学的モデル部分とセンサデータとの差異が所定の閾値を超えているアイテムのスタックの特定の部分を示す。
【0157】
いくつかの実施形態において、ユーザに提供される示唆は、作業空間全体(例えば、幾何学的モデル全体およびセンサデータ全体)に関する差異の示唆である。例えば、システムは、作業空間について幾何学的モデルとセンサデータとの間に現れた異常を明確にするようユーザに促す。別の例として、システムは、幾何学的モデルおよびセンサデータに関して適用されるバイアスまたは重み付けを定義するようユーザに促す。さらなる例として、システムは、幾何学的モデルおよびセンサデータの両方に基づいて推定状態を決定することに関連して実施する補間処理を定義するようユーザに促す。
【0158】
工程670で、入力が、ユーザから受信される。ユーザ入力は、幾何学的モデルまたはセンサデータもしくは幾何学的モデルとセンサデータとの組み合わせを利用するための選択でありうる。いくつかの実施形態において、ユーザは、作業空間状態の特定の部分(例えば、アイテムのスタックの上部、ビジョンシステムの視野が遮られているアイテムのスタックの部分、など)に対して幾何学的モデルを利用するかセンサデータを利用するかを定義する。
【0159】
工程680で、現在の状態/モデルは、ユーザ入力に少なくとも部分的に基づいて更新される。例えば、推定状態は、幾何学的モデル、または、センサデータ、もしくは、幾何学的モデルとセンサデータとの組み合わせのいずれを現在の状態/モデルのグランドトゥルースとして利用するのかを示すユーザ選択を反映するように更新される。
【0160】
工程690で、処理600が完了したか否かについて判定がなされる。いくつかの実施形態において、処理600は、推定状態のさらなる更新が実行されないこと、さらなるアイテムが移動されないこと、ユーザがシステムを終了したこと、管理者が処理600の一時停止または停止を示唆していること、などの決定に応じて、完了したと判定される。処理600が完了したとの判定に応じて、処理600は終了する。処理600が完了していないという判定に応じて、処理600は工程610へ戻る。
【0161】
図7Aは、様々な実施形態に従って、幾何学的データを用いた場合のパレット/アイテムのスタックの状態を示す図である。
図7Bは、様々な実施形態に従って、ビジョンシステムまたはセンサデータを用いた場合のパレット/アイテムのスタックの状態を示す図である。
【0162】
状態700は、幾何学的データに従ったアイテムのスタックの状態に対応する。例えば、状態700は、アイテムのスタックの幾何学的モデルに対応する。
図7Aに示すように、幾何学的モデルは、正確にプレースされたアイテムを含む。幾何学的モデルは、ロボットアームが計画に従って(例えば、モデル化された計画から逸脱することなしに、など)アイテムのスタックに関してアイテムをピック/プレースした場合の、アイテムのスタックの理想的な状態に対応しうる。
【0163】
状態750は、センサデータに従ったアイテムのスタックの状態に対応する。例えば、状態750は、作業空間に備えられたビジョンシステムによってキャプチャされた情報に基づくアイテムのスタックに対応する。
図7Bに示すように、状態750は、不正確に配置されたアイテム、または、情報が提供されていないアイテムのスタックの部分(例えば、ビジョンシステムの視野が遮られているスタックの部分、など)を含む。
【0164】
図7Aに示すように、状態700は、アイテム706a、アイテム708a、アイテム710a、アイテム712a、および、アイテム714aを含むアイテムのセットの上にスタックされたアイテム704aを含む。しかしながら、状態750は、センサデータがアイテムの存在を反映していない隙間752を有する。一例として、センサデータにノイズが非常に多い場合、または、ビジョンシステムの視野が作業空間のかかる部分に対して遮られている場合、アイテムのスタック内の隙間がセンサデータに含まれうる。換言すると、状態750のセンサデータは、幾何学的モデルに含まれているアイテム708a、710a、712a、および、714aに関する情報を含まない。幾何学的モデルではなく、センサデータが利用され、または、強いバイアスを有していた場合、システムは、隙間752によって支持されていないアイテムの上にアイテム704bが配置されていることに基づいて、アイテムのスタックが不安定性を有すると判定しうる。
【0165】
状態700は、アイテム706aを含み、そのアイテムは、アイテムのスタックの様々な他のアイテムに対して正確に配置されているように見える。対照的に、状態750は、アイテム706bを含み、そのアイテムは、その下のアイテム上に正確に/真っ直ぐに配置されていない。例えば、センサデータは、アイテム706bと、隣接するアイテムとの間の空間を反映している。アイテム706bの位置/配置の原因の例は、(i)ロボットアームによる配置後のアイテムの移動、または、ロボットアームによるアイテムの不正確な配置(例えば、その時点の推定状態に従って決定された計画に対して)、(ii)ロボットアームによるアイテムの不精密な配置、(iii)センサデータのノイズ、および/または、(iv)センサデータにおける不正確さ、を含む。
【0166】
状態700は、アイテム716aを含み、そのアイテムは、アイテムのスタックの様々な他のアイテムに対して正確に配置されているように見える。対照的に、状態750は、アイテム716bを含み、そのアイテムは、隣接するアイテムに対して正確に配置されていない。例えば、センサデータは、アイテム716bと、隣接するアイテムとの間の隙間754を反映している。アイテム716bの位置/配置の原因の例は、(i)ロボットアームによる配置後のアイテムの移動、または、ロボットアームによるアイテムの不正確な配置(例えば、その時点の推定状態に従って決定された計画に対して)、(ii)ロボットアームによるアイテムの不精密な配置、(iii)センサデータのノイズ、および/または、(iv)センサデータにおける不正確さ、を含む。
【0167】
状態700は、アイテム718aを含み、そのアイテムは、アイテムのスタックの様々な他のアイテムに対して正確に配置されているように見える。対照的に、状態750は、スタック内で幾何学的モデルがアイテム718aを含んでいるのと同じ位置に隙間758を含む。例えば、センサデータは、アイテム702bおよび隣接するアイテムの下にある隙間758を反映している。隙間758の原因の例は、(i)ロボットアームによる配置後のアイテムの移動、または、ロボットアームによるアイテムの不正確な配置(例えば、その時点の推定状態に従って決定された計画に対して)、(ii)ロボットアームによるアイテムの不精密な配置、(iii)センサデータのノイズ、および/または、(iv)センサデータにおける不正確さ、を含む。システムが、隙間758に対応するアイテムのスタックの部分のセンサデータを用いた場合、システムは、アイテムのスタックが不安定であると見なしうる。例えば、システムは、アイテム702bが部分的に支持されておらず、不安定であると見なしうる。
【0168】
状態700は、アイテム702aを含み、そのアイテムは、アイテムのスタックの様々な他のアイテムに対して正確に配置されているように見える。対照的に、状態750は、アイテム702bを含み、そのアイテムは、その下のアイテム上に正確に/真っ直ぐに配置されていない。例えば、センサデータは、アイテム702bの下のアイテムに対するアイテム702bのずれ(例えば、張り出し)を反映している。ずれ756の原因の例は、(i)ロボットアームによる配置後のアイテムの移動、または、ロボットアームによるアイテムの不正確な配置(例えば、その時点の推定状態に従って決定された計画に対して)、(ii)ロボットアームによるアイテムの不精密な配置、(iii)センサデータのノイズ、および/または、(iv)センサデータにおける不正確さ、を含む。
【0169】
図7Cは、様々な実施形態に従って、幾何学的データと、ビジョンシステムまたはセンサデータとを用いた場合のパレット/アイテムのスタックの状態を示す図である。
【0170】
図7Cに示すように、推定状態775は、幾何学的モデル(例えば、状態700)とセンサデータ(例えば、状態750)との組み合わせに基づくアイテムのスタックの状態を含む。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの間の差異を決定し、その差異を推定状態にどのように反映させるかを決定する。例えば、アイテムのスタックの特定の部分の差異に関して、システムは、(i)推定状態においてスタックの特定の部分をモデル化するために幾何学的モデルのみを利用するか、(ii)推定状態においてスタックの特定の部分をモデル化するためにセンサデータのみを利用するか、または、(iii)幾何学的モデルとセンサデータとの組み合わせを利用するか、を決定する。推定状態の特定の部分について幾何学的モデルとセンサデータとの組み合わせを利用すると決定したことに応じて、システムは、幾何学的モデルとセンサデータとを組み合わせる方法を決定する。例えば、システムは、補間処理を決定する。システムは、幾何学的モデルとセンサデータとの間の特定の差異に少なくとも部分的に基づいて、幾何学的モデルとセンサデータとを組み合わせる方法を決定してよい(例えば、システムは、差異がセンサデータのノイズ、または、ビジョンシステムの遮られた視野、などに起因すると決定しうる)。
【0171】
推定状態775は、アイテム704cを含む。状態700において対応するアイテム704aは、アイテム702aの隣に正確に配置されていることが示されており、状態750において対応するアイテム704bは、アイテム702bから或る距離に配置されていることが示されている。
【0172】
いくつかの実施形態において、システムは、アイテム704aおよび704bの見かけ上の位置の差異が、(i)ロボットアームによる配置後のアイテムの移動、または、ロボットアームによるアイテムの不正確な配置(例えば、その時点の推定状態に従って決定された計画に対して)、(ii)ロボットアームによるアイテムの不精密な配置、(iii)センサデータのノイズ、および/または、(iv)センサデータにおける不正確さ、の内の1または複数に起因していると決定する。システムは、差異のその他の原因の決定を実施してもよい。アイテム704aおよび704bの位置の差異について予測される原因を決定したことに応じて、システムは、アイテム704cをどのようにモデル化するのかを決定する。例えば、システムは、(i)推定状態においてスタックの特定の部分をモデル化するために幾何学的モデルのみを利用するか、(ii)推定状態においてスタックの特定の部分をモデル化するためにセンサデータのみを利用するか、または、(iii)幾何学的モデルとセンサデータとの組み合わせを利用するか、を決定する。いくつかの実施形態において、システムは、アイテム704aおよび704bの位置の差異の決定済みの予測原因に少なくとも部分的に基づいて、アイテム704cをモデル化する方法を決定する。
【0173】
いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの組み合わせに基づいてアイテム704cをモデル化すると決定する。例えば、アイテム704cの位置は、幾何学的モデル(例えば、アイテム704aの位置)およびセンサデータ(例えば、アイテム704bの位置)の補間に基づいて決定される。別の例として、アイテム704cの位置は、幾何学的モデルとセンサデータとの間の中点として決定される。
【0174】
いくつかの実施形態において、システムは、アイテム704aおよび704bの位置の差異が、統計的に関連しているが、完全にされないものではないと見なされることを決定する。例えば、システムは、アイテム704aおよび704bの位置の差異は、アイテムの配置の不正確さに起因すると見なす。したがって、システムは、アイテム704bの位置を推定状態におけるアイテム704cの位置として利用することを決定する。
【0175】
推定状態775は、アイテム718cを含む。状態700において対応するアイテム718aは、アイテム702aの下に正確に配置されていることが示されており、状態750は、状態700においてアイテム718aが含まれている位置に隙間758を有する。システムは、状態700および750との間の差異(例えば、アイテム718aの存在と、隙間758の存在)を決定し、システムは、推定状態におけるスタックのかかる対応する部分をモデル化する方法を決定する。図に示す例において、システムは、センサデータが不正確であると判定する(例えば、データが、アイテム718cの配置される場所に隙間758を含むため)。例えば、システムは、スタックのかかる部分に対するビジョンシステムの視野が遮られていると決定してよい。したがって、システムは、推定状態におけるアイテム718cの位置をモデル化することに関連して、幾何学的モデルにおけるアイテム718aの情報を利用すると決定する。例えば、システムは、幾何学的モデルのみを利用する(そして、センサデータなどの対応する情報を組み合わせない)ことを決定する。
【0176】
推定状態775は、アイテム708c、710c、712c、および、714cを含む。状態700において対応するアイテム708a、710a、712a、および、714aは、アイテム704aの下に正確に配置されていることが示されており、状態750は、かかるアイテムの位置に隙間752を有する。システムは、状態700および750との間の差異(例えば、アイテム718aの存在と、隙間758の存在)を決定し、システムは、推定状態におけるスタックのかかる対応する部分をモデル化する方法を決定する。図に示す例において、システムは、センサデータが不正確であると判定する(例えば、データが、アイテム708a、710a、712a、および、714aの配置される場所に隙間752を含むため)。例えば、システムは、スタックのかかる部分に対するビジョンシステムの視野が遮られていると決定してよい。システムは、センサデータ(例えば、
図7Bの状態750)が、隙間752から生じる不安定さを伴わずにアイテムのセットの上に配置された704bを含むことから、センサデータが矛盾していると判定してよい。したがって、システムは、推定状態におけるアイテム708c、710c、712c、および、714cの位置をモデル化することに関連して、幾何学的モデルにおけるアイテム708a、710a、712a、および、714aの情報を利用すると決定する。例えば、システムは、幾何学的モデルのみを利用する(そして、センサデータなどの対応する情報を組み合わせない)ことを決定する。
【0177】
上記の例と同様に、システムは、隣接するアイテムとの間に隙間754を伴って配置されたアイテム716cと、ずれ756を伴って配置されたアイテム702cと、ずれを伴って配置されたアイテム706cとを含むように、推定状態を決定する。システムは、アイテム702cおよび716cの配置をモデル化するために、幾何学的モデル、センサデータ、または、その両方のいずれを利用するのかを決定する。いくつかの実施形態において、システムは、702cの位置を決定するためにアイテム702aおよび702bの位置を補間し、ならびに/もしくは、アイテム716cの位置を決定するためにアイテム716aおよび716bの位置を補間する。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの間の中点を用いて、推定状態のための対応する情報を決定する。
【0178】
図8は、パレットおよび/またはアイテムのスタックの状態の推定を決定する一実施形態を示すフローチャートである。いくつかの実施形態において、処理800は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0179】
いくつかの実施形態において、処理800は、ロボットアームのための制御システム上で実行されるアプリ802、サーバ804、状態推定器806、ビジョンシステム808、および、配置決定器810、の内の1または複数によって実行される。
【0180】
工程820で、アプリ802が、サーバ804へ要求を送信する。要求は、アイテムをプレースするための計画および/または戦略を求める配置要求に対応しうる。
【0181】
配置要求を受信したことに応じて、工程822で、サーバ804が、状態判定を呼び出す。例えば、サーバ804は、推定状態を決定(および提供)するために、状態推定器806へ要求または命令を送信する。いくつかの実施形態において、状態推定器806は、サーバ804上で動作するモジュールである。いくつかの実施形態において、状態推定器806は、複数の異なるサーバ/ロボットシステムによってクエリされるサービスである。例えば、状態推定器806は、クラウドサービスであってよい。
【0182】
状態決定を呼び出したことに応じて、状態推定器806は、ビジョン状態を取得する。いくつかの実施形態において、状態推定器806は、ビジョン状態の要求をビジョンシステム808へ送信する。
【0183】
工程824においてビジョン状態の要求を受信したことに応じて、工程826で、ビジョンシステム808は、ビジョン状態を状態推定器806へ提供する。例えば、ビジョン状態の要求を受信したことに応じて、ビジョンシステム808は、作業空間内の1または複数のセンサを用いて、作業空間のスナップショットをキャプチャする。
【0184】
ビジョン状態を受信したことに応じて、状態推定器806は、パレット状態(例えば、パレットおよび/またはアイテムのスタックの推定状態)を決定する。状態推定器806は、幾何学的モデルおよびビジョン状態の内の1または複数に基づいて、推定状態を決定してよい。いくつかの実施形態において、状態推定器806は、(少なくともスタックの一部に関して)幾何学的モデルおよびビジョン状態を組み合わせる。
【0185】
工程828で、状態推定器806は、パレット状態をサーバ804へ提供する。
【0186】
工程830で、サーバ804は、パレット状態を含む配置要求を配置決定器810へ送信する。いくつかの実施形態において、配置決定器810は、サーバ804上で動作するモジュールである。いくつかの実施形態において、配置決定器810は、複数の異なるサーバ/ロボットシステムによってクエリされるサービスである。例えば、配置決定器810は、クラウドサービスであってよい。
【0187】
工程832で、配置決定器810は、1または複数の潜在的配置のセットをサーバ804へ提供する。1または複数の潜在的配置のセットは、プレースされるアイテム(例えば、アイテムに関連する属性)およびパレット状態(例えば、利用可能な位置、および、アイテムのスタック内のアイテムの属性)などに少なくとも部分的に基づいて決定されてよい。
【0188】
いくつかの実施形態において、1または複数の潜在的配置のセットは、すべての可能な配置の一部である。例えば、配置決定器810は、コスト関数を用いて、サーバ804への提供に向けて1または複数の潜在的配置のセットを決定する。配置決定器810は、コスト関数に関してコスト基準を満たす(例えば、コスト閾値より小さいコストを有する)潜在的配置を決定してよい。
【0189】
1または複数の潜在的配置のセットを受信したことに応じて、工程834で、サーバ804は、配置を選択し、選択された配置をアプリ802へ送信する。例えば、選択された配置は、工程820における最初の配置要求への応答として提供される。
【0190】
工程836で、アプリ802は、アイテムをプレースするようロボットアームを制御する。いくつかの実施形態において、アプリ802は、(例えば、アイテムの属性、および、選択された配置に対応する位置(作業空間内の座標など)に基づいて)選択された配置へアイテムを移動させるための計画を決定する。
【0191】
工程838で、アプリ802は、幾何学的状態に関する更新を実行するために指示をサーバ804へ提供する。例えば、アプリ802は、アイテムのプレースが工程836で実行されたことの確認を提供し、サーバ804は、かかる確認を、幾何学的状態(例えば、幾何学的モデル)への更新が呼び出されることの指示であると見なす。
【0192】
工程840で、サーバ804は、幾何学的状態を更新する要求を状態推定器806へ送信する。例えば、サーバ804は、状態推定器806が、対応する計画に従ったアイテムの配置を反映するように幾何学的モデルを更新することを要求する。
【0193】
幾何学的状態を更新する要求を受信したことに応じて、状態推定器806は、対応する更新を実行する。工程842で、状態推定器806は、幾何学的状態が成功裏に更新された旨の示唆をサーバ804へ提供する。
【0194】
工程844で、サーバ804は、幾何学的状態がアイテムの配置を反映するよう成功裏に更新された旨の示唆をアプリ802へ提供する。
【0195】
処理800は、積み重ねられるアイテムのセットに対して繰り返されてよい。
【0196】
図9は、様々な実施形態に従って、アイテムのセットをパレタイズ/デパレタイズする処理を示すフローチャートである。いくつかの実施形態において、処理900は、少なくとも部分的には、
図1のロボットシステム100および/または
図2のシステム200によって実施される。
【0197】
工程910で、作業空間の現在の状態を示すセンサデータが取得される。いくつかの実施形態において、システムは、作業空間内に備えられたビジョンシステムからセンサデータを受信する。
【0198】
工程920で、ロボットアームが、アイテムの第1セットを移動させるよう制御される。いくつかの実施形態において、システムは、アイテムの第1セットを移動させるための計画を決定し、計画に従ってアイテムの第1セットを移動(例えば、ピックアンドプレース)するようロボットアームを制御する。
【0199】
工程930で、幾何学的モデルが、アイテムの第1セットの移動に基づいて更新される。いくつかの実施形態において、アイテムの第1セットを移動させたことに応じて、システムは、移動(例えば、アイテムの第1セットの配置)を反映するように幾何学的モデルを更新する。アイテムのパレチゼーションの場合、幾何学的モデルは、スタック上のアイテムの第1セットの配置を反映するように更新される。
【0200】
工程940で、推定状態(例えば、アイテムのスタックの状態)が、幾何学的モデルおよびセンサデータに少なくとも部分的に基づいて決定される。センサデータは、工程910において取得されたセンサデータ、あるいは、アイテムの第1セットの移動の後/間にキャプチャされた更新センサデータに対応しうる。いくつかの実施形態において、システムは、幾何学的モデルとセンサデータとの組み合わせに基づいて、推定状態を決定する。
【0201】
工程950で、アイテムの第2セットを移動させるようロボットアームを制御するための計画が、推定状態に少なくとも部分的に基づいて決定される。いくつかの実施形態において、アイテムの第2セットを移動させるための計画を決定したことに応じて、システムは、対応する計画に従ってアイテムの第2セットを移動させるようロボットアームを制御する。
【0202】
様々な実施形態によると、システムは、アイテムの各セット(例えば、アイテムの数に基づいて、もしくは、現在のアイテムまたは以前に配置されたアイテムの属性に基づいて決定されたアイテムのセット、など)の移動後に推定状態を決定する。
【0203】
工程960で、処理900が完了したか否かについて判定がなされる。いくつかの実施形態において、処理900は、推定状態のさらなる更新が実行されないこと、さらなるアイテムが移動されないこと、ユーザがシステムを終了したこと、管理者が処理900の一時停止または停止を示唆していること、などの決定に応じて、完了したと判定される。処理900が完了したとの判定に応じて、処理900は終了する。処理900が完了していないという判定に応じて、処理900は工程910へ戻る。
【0204】
上述の例は、1セットのアイテムをパレタイズまたはデパレタイズする文脈で記載されているが、様々な実施形態が、1セットのアイテムをシンギュレートしおよび/または1セットのアイテムをキッティングすることに関連して実施されてよい。例えば、様々な実施形態は、幾何学的データおよびセンサデータ(例えば、幾何学的データとセンサデータとの間の補間など、幾何学的データとセンサデータとの組み合わせ)に少なくとも部分的に基づいて、作業空間(例えば、シュート、コンベヤ、容器、など)の状態を決定/推定するために実施される。
【0205】
本明細書に記載されている実施形態の様々な例は、フローチャートに関連して記載されている。それらの例は、特定の順序で実行されるいくつかの工程を含みうるが、様々な実施形態に従って、様々な工程が、様々な順序で実行されてよく、および/または、様々な工程が、単一の工程に統合されまたは並行して実行されてよい。
【0206】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供されている詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示されている実施形態は、例示であり、限定を意図するものではない。
【国際調査報告】