(58)【調査した分野】(Int.Cl.,DB名)
前記パッキングシーケンスを計算することは、前記利用可能パッケージの高さ、ユニット位置に対する前記利用可能パッケージの載置位置、またはこれらの組み合わせに応じて前記スタッキングプランを分析することを含む、
請求項2に記載の方法。
前記パッケージグループを決定することは、前記利用可能パッケージについての指定された優先度、脆性レーティング、パッケージ重量範囲、高さ、パッケージタイプ、またはこれらの組み合わせに応じて前記利用可能パッケージをグループ化することを含む、
請求項1に記載の方法。
前記処理順序を計算することは、前記パッケージグループを、含まれるパッケージ数、合計水平面積、重量範囲、脆性レーティング、またはこれらの組み合わせに応じて優先順位付けすることを含む、
請求項1に記載の方法。
前記1つまたは複数の載置条件は、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件、またはこれらの組み合わせを含む、
請求項9に記載の方法。
前記スタッキングプランを生成することは、上のパッケージと支持パッケージとの重なり、前記支持パッケージ上の前記上のパッケージの突出、1つまたは複数の支持パッケージに対する前記上のパッケージの重心(CoM)位置、2つ以上の支持パッケージ間の離間距離、2つ以上の支持パッケージの高さの差、またはこれらの組み合わせに関するスタッキングルールに従って前記スタッキングプランを生成することを含む、
請求項1に記載の方法。
ロボットシステムによりその1つまたは複数のプロセッサを介して実行された場合に、前記ロボットシステムに方法を実施させるプロセッサ命令が記憶される有形非一時的コンピュータ可読媒体であって、前記命令は、
プラットフォームに載置するように指定された利用可能パッケージを表すパッケージセットを識別する命令と、
前記利用可能パッケージ内のパッケージタイプの物理的な寸法、形状、またはこれらの組み合わせを表し、かつ、前記パッケージセットに対応する離散化オブジェクトモデルにアクセスする命令と、
前記利用可能パッケージが載置される前記プラットフォームを表す離散化プラットフォームモデルにアクセスする命令と、
前記利用可能パッケージに基づいて、前記利用可能パッケージのサブグループを表すパッケージグループを決定する命令と、
前記パッケージグループに対する処理順序を計算する命令と、
前記パッケージグループに基づいて、前記処理順序に従って、水平面に沿った前記利用可能パッケージの2次元(2D)マッピングを表す載置プランを生成する命令と、
3Dマッピング内のレイヤに対応する前記載置プランを3次元(3D)状態に変換することに基づいて、前記利用可能パッケージの3Dマッピングを表すスタッキングプランを生成する命令と、
前記スタッキングプランを実施して、前記利用可能パッケージのうちの1つまたは複数を1つまたは複数の他のパッケージの上に載置して、前記3Dマッピングに従って前記利用可能パッケージを前記プラットフォームに載置する命令と、
を含む前記有形非一時的コンピュータ可読媒体。
前記パッケージグループを決定する前記命令は、前記利用可能パッケージについての指定された優先度、脆性レーティング、パッケージ重量範囲、高さ、パッケージタイプ、またはこれらの組み合わせに応じて前記利用可能パッケージをグループ化する命令を含み、
前記処理順序を計算する前記命令は、前記パッケージグループを、含まれるパッケージ数、合計水平面積、前記パッケージ重量範囲、前記脆性レーティング、またはこれらの組み合わせに応じて優先順位付けする命令を含み、
前記載置プランを生成する前記命令は、
前記利用可能パッケージ内のパッケージタイプを識別する命令と、
前記パッケージタイプのうちの1つについての初期載置位置を決定すること、および、1つまたは複数の載置条件に基づいて次のアイテムについての載置位置候補を導出すること、に基づいて、前記利用可能パッケージのそれぞれについての載置位置を反復的に導出する命令と、
前記1つまたは複数の載置条件に従って前記載置プランを配列する命令と、
を含む、
請求項18に記載の有形非一時的コンピュータ可読媒体。
【発明を実施するための形態】
【0009】
本明細書では、パッキング機構を有するロボットシステムのためのシステムおよび方法を説明する。いくつかの実施形態に従って構成されるロボットシステム(たとえば、1つまたは複数の指定タスクを実行するデバイスの統合システム)により、オブジェクトについての最適な保管位置を導出し、それに従ってスタックすることによって、パッキングおよび保管効率が向上する。
【0010】
従来のシステムは、オフラインパッキングシミュレータを使用して、パッキングシーケンス/配置を事前に決定する。従来のパッキングシミュレータは、所定のまたは推定されるケースのセットに関するオブジェクト情報(たとえば、ケースの形状/サイズ)を処理してパッキングプラン(梱包プラン)を生成する。決定されると、パッキングプランは、目的地(たとえば、パレット、ビン、ケージ、ボックスなど)におけるオブジェクトの具体的な載置位置/姿勢、事前定義された載置のシーケンス、および/または所定のモーションプランを規定および/または要求することができる。従来のパッキングシミュレータは、所定のパッキングプランから、そのパッキングプランに合致するまたは可能にするソース要件(たとえば、オブジェクトについてのシーケンスおよび/または載置)を導出し得る。パッキングプランは従来のシステムではオフラインで開発されるので、プランは実際のパッキング動作/条件、オブジェクトの到着、および/または他のシステムの実装とは独立している。したがって、全体的な動作/実装では、(たとえば、開始/拾得位置において)受け取ったパッケージが、所定のパッキングプランに合致する固定のシーケンスに従うことが必要になる。したがって、従来のシステムは、リアルタイムの条件および/または受け取ったパッケージのばらつき(たとえば、異なるシーケンス、位置、および/または向き)、予期しないエラー(たとえば、衝突および/または紛失)、リアルタイムのパッキング要求(たとえば、受注)、および/または他のリアルタイム要因に適応することができない。
【0011】
さらに、従来のシステムは、厳格な所定のプラン/シーケンスに従ってオブジェクトをグループ化し、パッキングするので、ソース位置にある全てのオブジェクトが(1)同一の寸法/タイプを有すること、および/または(2)既知のシーケンスに従って到着することを必要とする。たとえば、従来のシステムでは、オブジェクトが固定のシーケンスに従って(コンベヤなどを介して)拾得位置に到着することが必要となる。また、たとえば、従来のシステムでは、拾得位置にあるオブジェクトが所定の姿勢に従って指定位置に載置されることが必要となる。したがって、従来のシステムでは、所定のシーケンス/配置に従ってオブジェクトをソースに(すなわち、パッキング動作の前に)並べるおよび/または載置するための1つまたは複数の動作が必要である。大抵、従来のシステムは、所定のシーケンス/姿勢に従ってオブジェクトをソースに並べるおよび/または載置するためのシーケンスバッファを必要とし、これは100万USドル以上かかる。
【0012】
一方、本明細書に記載のロボットシステムは、システム動作中にパッキングプランを生成することができる。ロボットシステムは、様々なリアルタイム条件に基づいてシステム動作中にリアルタイムのおよび/または動的なパッキングプランを生成することができる。リアルタイム条件は、現在存在するまたは進行中の条件、たとえば、オブジェクトの実際のソースシーケンス/位置/姿勢、オブジェクト条件および/または要件、載置要件、および/または他のリアルタイム要因を含むことができる。ロボットシステムは、パッキングプランの処理時の現在の/進行中の条件および要因に従って、たとえば、トリガイベント(たとえば、受注/要求、出荷スケジュール、および/またはオペレータの入力)に応答して、パッキングプランをリアルタイムで生成することができる。いくつかの実施形態では、パッキングプランは、たとえば、対応するイベント(たとえば、再評価タイミング、パッキング/操作エラー、たとえば、衝突または紛失、および/または他の動的な条件の発生)に応答して、動的に(たとえば、最初に1つまたは複数の動作を開始した後に、たとえば、実際のパッキング動作が開始した後に)生成および/または調整することができる。
【0013】
従来のシステムとは異なり、本明細書に記載のロボットシステムは、現在の/ライブの条件(たとえば、オブジェクトのソースシーケンス/位置/姿勢、オブジェクト条件および/または要件など)に従ってリアルタイムに載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、離散化メカニズム(たとえば、処理、回路、関数、および/またはルーチン)に基づいてパッキングプランを生成することができる。たとえば、ロボットシステムは離散化メカニズムを使用して、離散化単位(すなわち、1つの離散エリア/スペース)に従って、オブジェクトおよび/または目標場所の物理的なサイズ/形状を記述することができる。ロボットシステムは、離散化単位を使用して想定オブジェクトを記述する離散化オブジェクトのプロフィール、および/または目標場所(たとえば、パレットの上面および/またはビン/ケース/ボックス内の空間/底面)を記述する離散化された目的地のプロフィールを生成することができる。したがって、ロボットシステムは、連続的な実世界の空間/エリアをコンピュータ読み取り可能なデジタル情報に変換することができる。さらに、離散化データによって、パッケージフットプリントを記述し、様々なパッケージ載置を比較するための計算複雑性を削減することが可能になり得る。たとえば、パッケージ寸法は、実世界の10進数ではなく、離散化単位の整数に対応することができ、これにより数学的計算が容易になる。
【0014】
いくつかの実施形態では、ロボットシステムは、オブジェクトグループを決定することに基づいてパッキングプランを生成することができる。オブジェクトグループは、オブジェクトの記述、たとえば、顧客指定の優先度、オブジェクトの脆性限度(たとえば、支持重量制限)、オブジェクト重量、オブジェクトの高さ、オブジェクトタイプ、および/またはオブジェクトの他の側面に基づくことができる。ロボットシステムは、オブジェクトグループを使用して、1つまたは複数のオブジェクトグループを含む2次元(2D)載置プランを生成し評価することができる。ロボットシステムは、1つまたは複数の条件/ルールを満たす2D載置プランを選択し、選択した2D載置プランを3次元(3D)マッピング結果に変換することができる。3Dマッピング結果は、たとえば、2D載置プランに含まれるオブジェクトの高さ測定値と、レイヤ内のそれらの相対位置とに応じて、2D載置プランの高さを記述することができる。ロボットシステムは、垂直順序/シーケンスへの3Dマッピング結果を評価して、2D載置プランについての垂直シーケンスを含む3D載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、初期状態の(たとえば、あらゆるオブジェクトが目的地ゾーンに載置される前の)オブジェクトについて、および/またはパッキングされていない状態のままの(たとえば、1つまたは複数のオブジェクトが目的地ゾーンに載置された後の)オブジェクトについて、2D/3D載置プランを生成することができる。オブジェクトのグループ化および載置プランに関する詳細については後述する。
【0015】
以下に説明するロボットシステムは、リアルタイムの実装のための簡素化され合理化された処理アーキテクチャ/シーケンスを利用することができる。たとえば、ロボットシステムは(たとえば、デスクトップ、サーバなどのコンシューマコンピューティングデバイスを介して)、従来のシーケンサおよびシミュレータを利用することなく、リアルタイムのニーズ(たとえば、受注)、および/またはリアルタイムの利用可能性(たとえば、到着オブジェクトおよび/または現在アクセス可能なオブジェクトの出荷目録)に基づいて、パッキングプランを生成することができる。オフラインの状況で利用される場合、たとえば、従来のシーケンサおよびシミュレータを置き換えるために、ロボットシステムは、よりシンプルかつ安価なソリューションを使用してオフラインパッキングプランを提供することができる。
【0016】
したがって、ロボットシステムは、リアルタイム条件への適応に基づいて、オブジェクトをパッキングする効率、速度、および精度を向上させることができる。たとえば、本明細書に記載のシステムは、現在のニーズ(たとえば、受注)、パッケージの現在のステータス(たとえば、位置、向き、および/または数量/利用可能性)、および/またはスタック済み/載置済みのパッケージのリアルタイムステータスに合致する/対処する載置プランを生成することができる。したがって、ロボットシステムは、様々な、異なる/想定外の数量、位置、向き、および/またはシーケンスのパッケージを受け取り、パッキングすることができる。
【0017】
さらに、ロボットシステムは、従来のシステムにおいてオブジェクトをソースに並べるまたは載置するためにおよび/またはパッキング動作のために(たとえば、エラー処理のために)必要なはずの1つまたは複数の動作、機械(たとえば、シーケンスバッファ)、および/または人間の支援を無くすことによって、全体のコストを削減することができる。現在のパッケージの状態(たとえば、数量、位置、および/または向き)に応じてパッキングプランを生成することによって、ロボットシステムは、従来のシステムの要件に合致するようにパッケージを再編成または配列する必要性を、関連する機械/人間の動作と共に排除する。
【0018】
以下の説明では、本開示技術の完全な理解を提供するために、多数の具体的な詳細を記載している。他の実施形態では、本明細書で紹介する技術は、これらの具体的な詳細がなくとも実践することができる。他の例では、よく知られている特徴、たとえば、特定の関数またはルーチンについては、本開示を不必要に不明瞭にしないように、詳細には説明していない。本明細書における「実施形態」、「一実施形態」などへの言及は、説明している特定の特徴、構造、材料、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書におけるそのような文言の出現は、必ずしも全てが同一の実施形態を指すものではない。一方、そのような言及は、必ずしも相互に排他的ではない。さらに、特定の特徴、構造、材料、または特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせることができる。図面に示す様々な実施形態は説明のための表現にすぎず、必ずしも縮尺どおりに描いていないことを理解されたい。
【0019】
よく知られており、ロボットシステムおよびサブシステムに関連付けられることが多いが、開示した技術のいくつかの重要な側面を不必要に不明瞭にし得る、構造または処理を説明する一部の詳細については、明瞭にするために以下の説明には記載していない。また、以下の開示では本技術の異なる態様のいくつかの実施形態を記載しているが、いくつかの他の実施形態は、このセクションに記載したものとは異なる構成または異なるコンポーネントを有し得る。したがって、開示した技術は、追加の要素を有し、後述の要素の一部を有さない他の実施形態を有し得る。
【0020】
以下で説明する本開示の多くの実施形態または態様は、プログラム可能コンピュータまたはプロセッサによって実行されるルーチンを含むコンピュータ実行可能命令またはプロセッサ実行可能命令の形態をとり得る。当業者であれば、開示した技術が以下に図示および説明した以外のコンピュータまたはプロセッサシステム上で実践され得ることを理解するであろう。本明細書に記載の技術は、後述のコンピュータ実行可能命令のうちの1つまたは複数を実行するように特別にプログラムされ、構成され、または構築された専用コンピュータまたはデータプロセッサにおいて実施することができる。したがって、本明細書で一般的に使用される「コンピュータ」および「プロセッサ」という用語は、任意のデータプロセッサを指し、インターネット機器およびハンドヘルドデバイス(たとえば、パームトップコンピュータ、ウェアラブルコンピュータ、セルラーまたはモバイル電話、マルチプロセッサシステム、プロセッサベースまたはプログラム可能コンシューマ電子機器、ネットワークコンピュータ、ミニコンピュータなど)を含むことができる。これらのコンピュータおよびプロセッサによって扱われる情報は、任意の好適な表示媒体、たとえば、液晶ディスプレイ(LCD)に提示することができる。コンピュータ実行可能タスクまたはプロセッサ実行可能タスクを実行するための命令は、ハードウェア、ファームウェア、またはハードウェアおよびファームウェアの組合せを含む、任意の好適なコンピュータ可読媒体内に、またはその媒体上に記憶することができる。命令は、たとえば、フラッシュドライブおよび/または他の好適な媒体を含む任意の好適なメモリデバイスに含めることができる。
【0021】
「結合される」および「接続される」という用語、ならびにこれらの派生形は、本明細書においてコンポーネント間の構造関係を記述するために使用され得る。これらの用語が互いに同義語であることが意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続される」は、2つ以上の要素が互いに直接接していることを示すために使用され得る。文脈において別途明記していない限り、「結合される」という用語は、2つ以上の要素が互いに直接的にもしくは間接的に(間に他の介在要素を介して)接していること、または2つ以上の要素が(たとえば、信号の送受信もしくは関数呼び出しなどのための因果関係のように)互いに協力または相互作用すること、あるいはその両方を示すために使用され得る。
【0022】
好適な環境
図1は、パッキング機構を有するロボットシステム100が動作し得る例示的な環境の図である。ロボットシステム100は、1つまたは複数のタスクを実行するように構成される1つまたは複数のユニット(たとえば、ロボット)を含む、および/または、複数のユニット間で通信することができる。パッキング機構の態様は、様々なユニットによって実践または実装することができる。
【0023】
図1に示す例では、ロボットシステム100は、倉庫または流通/出荷拠点における、荷下ろしユニット102、移載ユニット104(たとえば、パレタイズロボットおよび/またはピースピッカーロボット)、輸送ユニット106、積載ユニット108、またはこれらの組合せを含むことができる。ロボットシステム100内の各ユニットは、1つまたは複数のタスクを実行するように構成することができる。タスクを順番に組み合わせて目標を達成する動作を行うことができ、たとえば、トラックもしくはバンからオブジェクトを荷下ろしし、倉庫に保管する、または保管位置からオブジェクトを荷下ろしし、出荷準備することができる。他の例では、タスクは、オブジェクトを目標場所に(たとえば、パレットの上、および/またはビン/ケージ/ボックス/ケースの中に)載置することを含むことができる。後述のように、ロボットシステムは、オブジェクトを載置および/またはスタックするためのプラン(たとえば、載置位置/向き、オブジェクトを移載するためのシーケンス、および/または、対応するモーションプラン)を導出することができる。各ユニットは、アクションのシーケンスを実行して(たとえば、その中の1つまたは複数のコンポーネントを動作させて)タスクを実行するように構成することができる。
【0024】
いくつかの実施形態では、タスクは、開始位置114からタスク位置116までの対象オブジェクト112(たとえば、実行しているタスクに対応するパッケージ、ボックス、ケース、ケージ、パレットなどのうちの1つ)の操作(たとえば、移動および/または向き変更)を含むことができる。たとえば、荷下ろしユニット102(たとえば、デバンニングロボット)は、対象オブジェクト112をキャリア(たとえば、トラック)内の位置からコンベヤベルト上の位置に移載するように構成することができる。また、移載ユニット104は、対象オブジェクト112をある位置(たとえば、コンベヤベルト、パレット、またはビン)から他の位置(たとえば、パレット、ビンなど)に移載するように構成することができる。他の例では、移載ユニット104(たとえば、パレタイズロボット)は、対象オブジェクト112をソース位置(たとえば、パレット、拾得エリア、および/またはコンベヤ)から目的地パレットに移載するように構成することができる。動作を完了する際に、輸送ユニット106は、対象オブジェクト112を移載ユニット104に関連付けられたエリアから積載ユニット108に関連付けられたエリアに移載することができ、積載ユニット108は、対象オブジェクト112を(たとえば、対象オブジェクト112を運ぶパレットを移動させることによって)移載ユニット104から保管位置(たとえば、棚上の位置)に移載することができる。タスクおよび関連するアクションに関する詳細については後述する。
【0025】
例示の目的で、ロボットシステム100は出荷センターの状況で説明しているが、ロボットシステム100は、他の環境/他の目的での、たとえば、製造、組み立て、パッケージング、ヘルスケア、および/または他のタイプの自動化のためのタスクを実行するように構成できることを理解されたい。また、ロボットシステム100は、
図1に示していない他のユニット、たとえば、マニピュレータ、サービスロボット、モジュール式ロボットなどを含むことができることも理解されたい。たとえば、いくつかの実施形態では、ロボットシステム100は、オブジェクトをケージカートまたはパレットからコンベヤまたは他のパレット上に移載するためのデパレタイズユニット、あるコンテナから他のコンテナにオブジェクトを移載するためのコンテナ切替ユニット、オブジェクトを包装するためのパッケージングユニット、オブジェクトをそれらの1つまたは複数の特性に応じてグループ化するためのソーティングユニット、オブジェクトをそれらの1つまたは複数の特性に応じて異なって操作するための(たとえば、ソートする、グループ化する、および/または移載するための)ピースピッキングユニット、あるいはこれらの組合せを含むことができる。
【0026】
好適なシステム
図2は、本技術の1つまたは複数の実施形態によるロボットシステム100を示すブロック図である。いくつかの実施形態では、たとえば、ロボットシステム100は(たとえば、上述のユニットおよび/またはロボットのうちの1つまたは複数において)、電子/電気デバイス、たとえば、1つまたは複数のプロセッサ202、1つまたは複数の記憶デバイス204、1つまたは複数の通信デバイス206、1つまたは複数の入出力デバイス208、1つまたは複数のアクチュエーションデバイス212、1つまたは複数の輸送モータ214、1つまたは複数のセンサ216、あるいはこれらの組合せを含むことができる。様々なデバイスは、有線接続および/または無線接続を介して互いに結合することができる。たとえば、ロボットシステム100は、たとえば、システムバス、ペリフェラルコンポーネントインターコネクト(PCI)バスもしくはPCI−Expressバス、ハイパートランスポートもしくは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインターフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、IIC(I2C)バス、または電気電子技術者協会(IEEE)標準1394バス(「Firewire」とも呼ばれる)などのバスを含むことができる。また、たとえば、ロボットシステム100は、ブリッジ、アダプタ、プロセッサ、またはデバイス間に有線接続を提供するための他の信号関連デバイスを含むことができる。無線接続は、たとえば、セルラー通信プロトコル(たとえば、3G、4G、LTE、5Gなど)、無線ローカルエリアネットワーク(LAN)プロトコル(たとえば、ワイヤレスフィディリティ(WIFI))、ピアツーピアもしくはデバイスツーデバイス通信プロトコル(たとえば、Bluetooth、近距離無線通信(NFC)など)、モノのインターネット(IoT)プロトコル(たとえば、NB−IoT、LTE−Mなど)、および/または他の無線通信プロトコルに基づくことができる。
【0027】
プロセッサ202は、記憶デバイス204(たとえば、コンピュータメモリ)に記憶された命令(たとえばソフトウェア命令)を実行するように構成されるデータプロセッサ(たとえば、中央処理装置(CPU)、専用コンピュータ、および/またはオンボードサーバ)を含むことができる。いくつかの実施形態では、プロセッサ202は、
図2に示す他の電子/電気デバイスおよび/または
図1に示すロボットユニットに動作可能に結合される独立した/スタンドアローンのコントローラに含めることができる。プロセッサ202は、他のデバイスを制御して/インターフェースをとって、ロボットシステム100にアクション、タスク、および/または動作を実行させるプログラム命令を実施することができる。
【0028】
記憶デバイス204は、プログラム命令(たとえば、ソフトウェア)が記憶された非一時的コンピュータ可読媒体を含むことができる。記憶デバイス204のいくつかの例は、揮発性メモリ(たとえば、キャッシュおよび/またはランダムアクセスメモリ(RAM))、および/または不揮発性メモリ(たとえば、フラッシュメモリおよび/または磁気ディスクドライブ)を含むことができる。記憶デバイス204の他の例は、ポータブルメモリドライブおよび/またはクラウド記憶デバイスを含むことができる。
【0029】
いくつかの実施形態では、記憶デバイス204を使用して、さらに処理結果および/または所定のデータ/閾値を記憶し、これらへのアクセスを提供することができる。たとえば、記憶デバイス204は、ロボットシステム100によって操作され得るオブジェクト(たとえば、ボックス、ケース、および/または製品)の説明を含むマスターデータ252を記憶することができる。1つまたは複数の実施形態では、マスターデータ252は、ロボットシステム100によって操作されると想定されるオブジェクトについての寸法、形状(たとえば、可能な姿勢についてのテンプレートおよび/または異なる姿勢のオブジェクトを認識するためのコンピュータ生成モデル)、色彩設計、画像、識別情報(たとえば、バーコード、クイックレスポンス(QR)コード、ロゴなど、および/またはその想定位置)、想定重量、他の物理的/視覚的特性、あるいはこれらの組合せを含むことができる。いくつかの実施形態では、マスターデータ252は、オブジェクトに関する操作関連情報、たとえば、各オブジェクトの重心(CoM)位置、1つまたは複数のアクション/手順に対応する想定されるセンサ測定値(たとえば、力、トルク、圧力、および/または接触測定値に関するもの)、あるいはこれらの組合せを含むことができる。また、たとえば、記憶デバイス204はオブジェクト追跡データ254を記憶することができる。いくつかの実施形態では、オブジェクト追跡データ254は、スキャンまたは操作されるオブジェクトのログを含むことができる。いくつかの実施形態では、オブジェクト追跡データ254は、1つまたは複数の位置(たとえば、指定された拾得位置または降下位置および/またはコンベヤベルト)におけるオブジェクトの撮像データ(たとえば、写真、点群、ライブビデオフィードなど)を含むことができる。いくつかの実施形態では、オブジェクト追跡データ254は、1つまたは複数の位置におけるオブジェクトの位置および/または向きを含むことができる。
【0030】
通信デバイス206は、ネットワークを介して外部または遠隔のデバイスと通信するように構成される回路を含むことができる。たとえば、通信デバイス206は、受信器、送信器、変調器/復調器(モデム)、信号検出器、信号符号化器/復号器、コネクタポート、ネットワークカードなどを含むことができる。通信デバイス206は、1つまたは複数の通信プロトコル(たとえば、インターネットプロトコロル(IP)、無線通信プロトコルなど)に従って電気信号を送信、受信、および/または処理するように構成することができる。いくつかの実施形態では、ロボットシステム100は通信デバイス206を使用して、ロボットシステム100のユニット間で情報を交換する、および/または(たとえば、報告、データ収集、分析、および/またはトラブルシューティングの目的で)ロボットシステム100の外部のシステムまたはデバイスと情報を交換することができる。
【0031】
入出力デバイス208は、人間のオペレータとの間で情報を伝達および/または受信するように構成されるユーザインターフェースデバイスを含むことができる。たとえば、入出力デバイス208は、情報を人間のオペレータに伝達するためのディスプレイ210および/または他の出力デバイス(たとえば、スピーカー、ハプティックス回路、または触覚フィードバックデバイスなど)を含むことができる。また、入出力デバイス208は、制御デバイスまたは受信デバイス、たとえば、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインターフェース(UI)センサ(たとえば、モーションコマンドを受信するためのカメラ)、ウェアラブル入力デバイスなどを含むことができる。いくつかの実施形態では、ロボットシステム100は、入出力デバイス208を使用して、アクション、タスク、動作、またはこれらの組合せを実行する際に人間のオペレータと対話することができる。
【0032】
ロボットシステム100は、動き(たとえば、回転変位および/または並進変位)のために関節において接続された物理的な部材または構造部材(たとえば、ロボット式マニピュレータアーム)を含むことができる。構造部材および関節は、ロボットシステム100の用途/動作に応じて1つまたは複数のタスク(たとえば、把持、回転、接合など)を実行するように構成されるエンドエフェクタ(たとえば、グリッパ)を操作するように構成される運動連鎖を形成することができる。ロボットシステム100は、対応する関節周りでまたはその位置で構造部材を駆動または操作する(たとえば、変位させるおよび/または向き変更する)ように構成されるアクチュエーションデバイス212(たとえば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマーなど)を含むことができる。いくつかの実施形態では、ロボットシステム100は、対応するユニット/シャーシをある場所から他の場所へ輸送するように構成される輸送モータ214を含むことができる。
【0033】
ロボットシステム100は、たとえば、構造部材を操作するおよび/またはロボットユニットを輸送するためのタスクを実施するために使用される情報を取得するように構成されるセンサ216を含むことができる。センサ216は、ロボットシステム100の1つまたは複数の物理的な特性(たとえば、1つまたは複数の構造部材/その関節の状態、条件、および/または位置)、および/または周辺環境を検出または測定するように構成されるデバイスを含むことができる。センサ216のいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダなどを含むことができる。
【0034】
いくつかの実施形態では、たとえば、センサ216は、周辺環境を検出するように構成される1つまたは複数の撮像デバイス222(たとえば、視覚および/または赤外線カメラ、2Dおよび/または3D撮像カメラ、距離測定デバイス、たとえば、ライダーまたはレーダーなど)を含むことができる。撮像デバイス222は、マシン/コンピュータビジョン(たとえば、自動検査、ロボット案内、または他のロボットアプリケーションのためのもの)を介して処理され得るデジタル画像および/または点群などの、検出された環境の表現を生成することができる。以下でより詳細に説明するように、ロボットシステム100は(たとえば、プロセッサ202を介して)デジタル画像および/または点群を処理して、
図1の対象オブジェクト112、
図1の開始位置114、
図1のタスク位置116、対象オブジェクト112の姿勢、開始位置114および/または姿勢に関する信頼基準、あるいはこれらの組合せを識別することができる。
【0035】
対象オブジェクト112を操作するために、ロボットシステム100は(たとえば、上述の様々な回路/デバイスを介して)、指定領域(たとえば、トラック内またはコンベヤベルト上などの拾得位置)の画像を撮影し分析して、対象オブジェクト112およびその開始位置114を識別することができる。同様に、ロボットシステム100は、他の指定領域(たとえば、オブジェクトをコンベヤ上に載置するための降下位置、オブジェクトをコンテナ内に載置するための位置、またはスタッキング目的のパレット上の位置)の画像を撮影し分析して、タスク位置116を識別することができる。たとえば、撮像デバイス222は、拾得エリアの画像を生成するように構成される1つまたは複数のカメラ、および/またはタスクエリア(たとえば、降下エリア)の画像を生成するように構成される1つまたは複数のカメラを含むことができる。撮影画像に基づいて、後述のように、ロボットシステム100は、開始位置114、タスク位置116、関連する姿勢、パッキング/載置プラン、移載/パッキングシーケンス、および/または他の処理結果を決定することができる。パッキングアルゴリズムに関する詳細については後述する。
【0036】
いくつかの実施形態では、たとえば、センサ216は、構造部材(たとえば、ロボットアームおよび/またはエンドエフェクタ)および/またはロボットシステム100の対応する関節の位置を検出するように構成される位置センサ224(たとえば、位置エンコーダ、電位差計など)を含むことができる。ロボットシステム100は、位置センサ224を使用して、タスクの実行中に構造部材および/または関節の位置および/または向きを追跡することができる。
【0037】
離散化モデル処理
図3Aおよび
図3Bは、本技術の1つまたは複数の実施形態による、オブジェクトについて計画し、パッキングするのに使用される離散化データの図である。
図3Aは離散化オブジェクトを示し、
図3Bはオブジェクトのパッキングおよびその計画のための離散化パッキングプラットフォーム(台)を示す。たとえば、
図1のロボットシステム100は(たとえば、
図2のプロセッサ202を介して)、実世界のオブジェクト(たとえば、パッケージ、パレット、および/またはタスクに関連する他のオブジェクト)の連続面/エッジを離散的な対応物(たとえば、単位長さおよび/または単位面積)にマッピングすることができる。また、ロボットシステム100は、
図2のマスターデータ252に記憶された想定オブジェクトの離散化モデル/表現を含むことができる。
【0038】
いくつかの実施形態では、
図3Aに示すように、ロボットシステム100は離散化オブジェクトモデル302を使用して、オブジェクトのスタッキング載置を計画する/導出することができる。離散化オブジェクトモデル302(点線で図示)は、離散化単位(たとえば、単位長さ)に従って、既知のおよび/または想定オブジェクト(たとえば、パッケージ、ボックス、ケースなど)についての外観の物理的な寸法、形状、エッジ、面、またはこれらの組合せ(実線で図示)を表現することができる。いくつかの実施形態では、
図3Bに示すように、ロボットシステム100は、1つまたは複数の離散化プラットフォーム(台)モデル304を使用して、オブジェクトのスタッキング載置を計画する/導出することができる。離散化プラットフォーム(台)モデル304は、離散化単位に従って載置面(たとえば、パレットの上面)を表現することができる。いくつかの実施形態では、離散化単位は、システムオペレータ、システム設計者、所定の入力/設定、またはこれらの組合せによって事前設定された長さを含むことができる。
【0039】
いくつかの実施形態では、離散化プラットフォーム(台)モデル304は、1つまたは複数の標準サイズのパレット(たとえば、1.1m×1.1mのパレット)の上面視を含むことができる。したがって、離散化プラットフォーム(台)モデル304は、ロボットシステム100よって利用されるグリッド方式に従う、水平面(たとえば、x−y平面)に沿ったパレット上面のピクセル化された2D表現に対応することができる。いくつかの実施形態では、離散化オブジェクトモデル302は、ロボットシステム100によって想定される/既知のオブジェクトについての上面視(たとえば、
図3Aの左側に示すx−y平面)、および/または水平視/側面視(たとえば、右側に示すx−z平面)を含むことができる。したがって、離散化オブジェクトモデル302は、オブジェクトのピクセル化された2D/3D表現に対応することができる。
【0040】
説明用の例として、ロボットシステム100は、単位ピクセル310(たとえば、離散化単位に従う1つまたは複数の次元を有するポリゴン、たとえば、四角形)を使用して、対象オブジェクトのエリア/面を(たとえば、離散化オブジェクトモデル302を介して)記述し、荷台を(たとえば、離散化プラットフォーム(台)モデル304を介して)記述することができる。したがって、ロボットシステム100は、x−y軸に沿ってオブジェクトおよび荷台をピクセル化することができる。いくつかの実施形態では、単位ピクセル310(たとえば、離散化単位)のサイズは、オブジェクトの寸法および/または荷台の寸法に応じて変化することができる。また、単位ピクセル310のサイズを(たとえば、事前設定されたルール/式、および/またはオペレータ選択を介して)調整して、必要とされるリソース(たとえば、計算時間、必要メモリなど)をパッキング精度とバランスさせることができる。たとえば、サイズが減少すると、計算時間およびパッキング精度が増加することができる。したがって、調整可能な単位ピクセル310を使用してパッキングタスク(たとえば、対象パッケージおよびパッキングプラットフォーム(台))を離散化することによって、パッケージをパレタイズするための柔軟性が向上する。ロボットシステム100は、独特のシナリオ、パターン、および/または環境に応じて、計算資源/時間とパッキング精度とのバランスを制御することができる。
【0041】
図3Aおよび
図3Bに示す例では、ロボットシステム100は、第1のパッケージタイプ321、第2のパッケージタイプ322、第3のパッケージタイプ323、第4のパッケージタイプ324、および/または第5のパッケージタイプ325に対応するオブジェクトを想定/処理することができる。ロボットシステム100は、パッケージについて計画し、
図1のタスク位置116に対応する載置パレット340上に載置/スタックすることができる。載置計画のために、ロボットシステム100は、単位ピクセル310を使用して対応するパッケージをそれぞれ表現する第1のオブジェクトモデル331、第2のオブジェクトモデル332、第3のオブジェクトモデル333、第4のオブジェクトモデル334、および/または第5のオブジェクトモデル335を含む離散化オブジェクトモデル302を生成および/または利用することができる。同様に、ロボットシステム100は、単位ピクセル310を使用して載置パレット340についての離散化プラットフォーム(台)モデル304を生成および/または利用することができる。
【0042】
いくつかの実施形態では、ロボットシステム100は、(たとえば、第3のオブジェクトモデル333および/または第4のオブジェクトモデル334などの離散化オブジェクトモデル302のために)オブジェクトの実際の寸法を端数切り上げして、単位ピクセル310がオブジェクトの実際の周縁を超えて広がるようにすることができる。いくつかの実施形態では、ロボットシステム100は、(たとえば、離散化プラットフォーム(台)モデル304のために)プラットフォーム(台)表面の実際の寸法を端数切り捨てして、単位ピクセル310がオブジェクトの実際の周縁に覆われるおよび/または内側に含まれるようにすることができる。
【0043】
離散化データ/表現に基づいて、ロボットシステム100は、パッケージを載置パレット340上に載置/パッキングするための載置プラン350を生成することができる。載置プラン350は、対象パッケージについての載置パレット340上の計画された位置を含むことができる。ロボットシステム100は、積載/パレタイズに指定された利用可能パッケージのうちの1つまたは複数を載置するための載置プラン350を生成することができる。たとえば、ロボットシステム100は、利用可能パッケージ(たとえば、受け取ったパッケージおよび/または持ち帰り用の注文のパッケージ)からパッケージのセットをスタックするための載置プラン350を生成することができる。
【0044】
ロボットシステム100は、載置ルール、載置条件、パラメータ、要件などのセットに従って載置プラン350を生成することができる。いくつかの実施形態では、ロボットシステム100は、そのセットに従って、たとえば、パッケージタイプ(たとえば、パッケージタイプ321−325)、パッケージの高さ、顧客指定の優先度、脆性(たとえば、その上にスタックされるパッケージなどについての最大支持重量)、重量範囲、またはこれらの組合せに応じてグループ化されたパッケージに基づいて、載置プラン350を生成することができる。いくつかの実施形態では、ロボットシステム100は、たとえば、より高いパッケージをデパレタイズユニットからより遠くにスタックするなどのスタッキング条件に従って載置プラン350を生成することができる。載置ルール、条件、パラメータ、要件などの他の例は、パッケージ寸法、無衝突要件、スタック安定性、グループ化条件(たとえば、パッケージタイプ、パッケージ高、優先度など)、パッケージ離間要件もしくはその欠如、総積載パッケージの最大化、またはこれらの組合せを含むことができる。載置計画に関する詳細については後述する。
【0045】
図3Bに示す例では、ロボットシステム100は、パッケージタイプ321−325に対応するパッケージのセットについての2D載置プラン(たとえば、載置プラン350)を生成することができる。ロボットシステム100は、第1のパッケージタイプ321の3つのパッケージ、第2のパッケージタイプ322の4つのパッケージ、第3のパッケージタイプ323の4つのパッケージ、第4のパッケージタイプ324の5つのパッケージ、および第5のパッケージタイプ325の4つのパッケージを載置する載置プラン350を生成することができる。載置プラン350は、類似の高さ(たとえば、等しい、または互いから限界値以内)を有するパッケージの隣接するグループを最大化するようにパッケージをグループ化することができる。したがって、ロボットシステム100は、載置パレット340の左下コーナーに位置する2×2配置の第2のパッケージタイプ322の4つをグループ化することができる。パッケージの第2のグループ(たとえば、第1のパッケージタイプ321、第4のパッケージタイプ324、および第5のパッケージタイプ325のパッケージ)は、最初に載置されたグループの周辺に載置することができる。したがって、(たとえば、4単位ピクセル310の高さの)第1のグループについての連続した表面積、および(たとえば、2単位ピクセル310の高さの)第2のグループについての表面積を最大化することができる。また、ロボットシステム100は、1つまたは複数の要件、たとえば、脆性要件(たとえば、支持されるアイテム数の制限)および/または離間要件に基づいて、第3のパッケージタイプ323のパッケージを離間させることができる。同様に、ロボットシステム100は、境界要件(たとえば、載置パレット340のエッジから1つまたは複数の単位ピクセル310)に従って2D載置プランを生成することができる。
【0046】
いくつかの実施形態では、ロボットシステム100は、2D計画(たとえば、上面視などのx−yフットプリント)、および/または3D計画(たとえば、側面視などのx−zまたはy−zフットプリント)に基づいて載置プラン350を生成することができる。たとえば、ロボットシステム100は、x−y平面に沿って可能な2D載置を反復的に導出すること、載置ルール、条件などに従って可能な載置をテストすること、載置スコアを計算すること、またはこれらの組合せに基づいて、載置プラン350を生成することができる。ロボットシステム100は、載置スコアを最適化(たとえば、最大化または最小化)する2D載置プランを選択することに基づいて、載置プラン350を生成することができる。いくつかの実施形態では、ロボットシステム100は2D載置プランを使用して、3Dプラン(たとえば、
図3Bには図示しないスタッキングプラン)をさらに生成することができる。たとえば、ロボットシステム100は、2D載置プランをスタック内のレイヤとして使用することに基づいて、3D載置プランを生成することができる。換言すれば、ロボットシステム100は、生成された2D載置を1つまたは複数のレイヤ(たとえば、他の2D載置プラン)の上方/上に、および/または1つまたは複数の他のレイヤの下/下方に載置することができる。
【0047】
説明用の例として、ロボットシステム1002Dプランを導出する際に、載置されたオブジェクトの高さを推定し考慮することができる。たとえば、ロボットシステム100は、
図3Dに示すように、(たとえば、マスターデータに記憶された)オブジェクトの高さをピクセル化することができる。また、ロボットシステム100は、載置されたオブジェクトの所定の高さデータを、オブジェクトによって占有される各単位ピクセルにマッピングすることができる。高さが各ピクセルにマッピングされた状態で、ロボットシステム100は、得られた2D載置プラン350の載置面を導出する。各載置面は、たとえば、導出された表面を形成するオブジェクトの高さが同一または類似しているために、上にオブジェクトを載置し支持することが可能な導出された表面/平面に対応することができる。
【0048】
ロボットシステム100は、互いから閾値範囲内にある高さ値を有する単位ピクセルのグループを識別することに基づいて、載置面を導出することができる。いくつかの実施形態では、ロボットシステム100は、載置プラン350についての最大の高さを識別することに基づいて、載置面を導出することができる。最大の高さに基づいて、ロボットシステム100は、最大の高さに一致するまたは最大の高さから閾値範囲内にある高さを有する載置プラン350における単位ピクセルを識別することができる。ロボットシステム100は、条件を満たす高さを有する最も外側の/外周の単位ピクセルのコーナーを接続し、および/またはエッジを伸ばして載置面を導出することに基づいて、輪郭を導出することができる。ロボットシステム100は、より低い高さを使用して載置エリアの外側の領域に対して処理を再帰的に反復することができる。
図3Bに示す例では、ロボットシステム100は、第1の載置面352、第2の載置面354、および第3の載置面356を導出することができる。第1の載置面352は、最大の4単位ピクセルの高さを有する載置プラン350の左下コーナーに示す長方形のエリアに対応することができる。第2の載置面354は、2単位ピクセルの高さを有する周囲のエリア(破線で図示)に対応することができる。第3の載置面356は、1単位ピクセルの高さを有する載置プラン350の右側にある独立したエリアに対応することができる。2Dおよび3D載置計画についての詳細は後述する。
【0049】
図3Cは、本技術の1つまたは複数の実施形態による載置計画処理の図である。ロボットシステム100は(たとえば、
図2の1つまたは複数のプロセッサ202を介して)、利用可能パッケージ362のセットについて
図3Bの載置プラン350を導出することができる。利用可能パッケージ362は、エグレス(egress)出荷および/または保管のためにパッキングされる必要があるオブジェクトに対応することができる。たとえば、利用可能パッケージ362は、イングレス(ingress)出荷を介して受け取られた到着オブジェクト、および/またはエグレス出荷のために注文された保管されたオブジェクトに対応することができる。いくつかの実施形態では、ロボットシステム100は出荷目録、注文リストなどを使用して、リアルタイムに、たとえば、目録、リストなどの受け取りにすぐに(すなわち、閾値期間内に)応答して、利用可能パッケージ362を識別することができる。したがって、ロボットシステム100は、識別された利用可能パッケージ362を使用して、載置プラン350をリアルタイムに導出することができる。したがって、パッケージの仮の数/セット/組み合わせを利用してリアルタイム条件とは無関係に適用されるプランを導出するオフラインパッキングシミュレータの代わりに、ロボットシステム100は、リアルタイム条件、利用可能性、および/または需要を使用して載置プラン350を導出することができる。いくつかの実施形態では、ロボットシステム100は、たとえば、出荷拠点および/または倉庫など、オブジェクトを受け取り、保管し、および/または送る場所にあるデバイス(たとえば、プロセッサ202のうちの1つまたは複数)を使用することができる。
【0050】
いくつかの実施形態では、以下に詳述するように、ロボットシステム100は、利用可能パッケージ362をグループ化するおよび/または配列することができる。ロボットシステム100は、利用可能パッケージ362の順序付きセットを使用して載置プラン350を導出することができる。ロボットシステム100は、利用可能パッケージ362に対して一意の載置位置/組み合わせを決定し評価して、載置プラン350を導出することができる。換言すれば、ロボットシステム100は、可能な載置組み合わせ364のセットを決定し、所定の要件、条件、重量、コスト、その後の影響、またはこれらの組合せのセットに従って、それらを評価する(たとえば、スコア付けする)ことができる。評価に基づいて、ロボットシステム100は、載置組み合わせを選択して載置プラン350を導出することができる。
【0051】
少なくとも1つの実施形態では、ロボットシステム100は、配列されたパッケージの載置を反復的に評価するアルゴリズムを使用して載置プラン350を導出することができる。
図3Cに示すように、たとえば、ロボットシステム100は、利用可能パッケージ362の中の最初のパッケージについての初期載置を決定することによって、導出を開始することができる。したがって、ロボットシステム100は、
図3Aの対応する離散化オブジェクトモデル302を
図3Bの離散化プラットフォーム(台)モデル304上の初期位置(たとえば、コーナー、中央位置、および/または他の事前設定位置)に重ねることができる。ロボットシステム100は、利用可能パッケージ362から載置済みのパッケージ(たとえば、最初のパッケージ)を除去することに基づいて、残余パッケージ372を追跡することができる。
【0052】
初期載置に基づいて、ロボットシステム100は、利用可能パッケージ362の中の2番目のパッケージについての可能な載置のセットを決定することができる。ロボットシステム100は、所定のルール、パターン、またはこれらの組合せに従って可能な載置のセットを決定することができる。たとえば、ロボットシステム100は、載置済みのパッケージに対する(たとえば、載置済みのパッケージ(複数可)に対する)位置のパターンに従って、載置位置を決定することができる。また、ロボットシステム100は、パッケージのうちの1つまたは複数の間で必要とされる最小/最大の離間距離またはその欠如に基づいて、載置位置を決定することができる。さらに、ロボットシステム100は、90度などの所定の量に従ってパッケージ(すなわち、対応する離散化オブジェクトモデル302)を回転させることに基づいて、載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、所定の閾値および/またはパターンに従って載置候補を限定することができる。さらに、ロボットシステム100は、それに従って残余パッケージ372を更新することができる。
【0053】
ロボットシステム100は、停止条件に達するまで、上述の処理を反復し、利用可能パッケージ362を反復的に処理することができる。停止条件のいくつかの例は、全てのパッケージが載置された(すなわち、残余パッケージ372が空である)こと、載置を改善できない(たとえば、前の階層/反復と同じ評価スコアである)こと、これ以上パッケージを離散化プラットフォーム(台)モデル304上に載置できないこと、またはこれらの組合せを表すことができる。
【0054】
いくつかの実施形態では、ロボットシステム100は探索木374を使用して、可能な載置と、対応する可能な載置組み合わせ364とを追跡することができる。探索木374の根は初期載置に対応することができ、各レベルまたは階層は利用可能パッケージ362の中の後続のパッケージの可能な載置を含むことができる。異なる階層を接続して、パッケージのセットについての一意の載置組み合わせに対応する枝を形成することができる。
【0055】
各パッケージの可能な載置について、ロボットシステム100は、(たとえば、
図3Cにおいて「X」で表される)冗長なフットプリントを識別し排除することができる。たとえば、探索木374の各階層において、ロボットシステム100は、可能な載置位置/組み合わせの得られたフットプリントを比較する(たとえば、重ねる)ことができる。比較に基づいて、ロボットシステム100は、得られたフットプリントの重複を排除することができる。いくつかの実施形態では、ロボットシステム100はさらに、得られたフットプリントの移載、回転、および/または反転バージョンを比較して、関連する重複を排除することができる。たとえば、ロボットシステム100は、1つのフットプリントを90度回転させ、および/または1つまたは複数の反転ライン(たとえば、対角に伸びる対角線、x方向および/またはy方向に伸びる二等分線、またはこれらの組合せ)にわたってフットプリントを移載し、これを他のフットプリントと比較することができる。
【0056】
また、各パッケージの可能な載置について、ロボットシステム100は、1つまたは複数の要件/制約に違反する載置を識別し排除することができる。要件/制約の一例は、衝突確率に基づくことができる。ロボットシステム100は、既存のフットプリント、パッケージの1つまたは複数の寸法、移載ロボットの位置、前のイベントまたは履歴、あるいはこれらの組合せに応じて、各載置位置についての進入路と、対応する衝突確率とを計算することができる。ロボットシステム100は、衝突確率が所定の閾値を超える載置を排除することができる。要件/制約の他の例は、パッケージをスタックする(すなわち、1つまたは複数の支持パッケージのすぐ上に/上を覆って載置する)ための支持重量とすることができる。載置位置の下のパッケージのうちの1つまたは複数について、ロボットシステム100は、載置されたパッケージの重量に基づいて、支持重量(すなわち、すぐ上を覆うパッケージまたはその一部の合計重量)を計算することができる。ロボットシステム100は、載置位置の下のパッケージのうちの1つまたは複数について、支持重量が脆性要件(たとえば、最大支持可能重量)に違反する(たとえば、要件を超えるまたは要件から閾値範囲内である)載置を排除することができる。
【0057】
いくつかの実施形態では、ロボットシステム100は、優先度キュー376(たとえば、ヒープ構造など)を使用して、載置組み合わせ364を追跡および/または評価することができる。優先度キュー376は、一連の設定に従って載置組み合わせ364を並べることができる。ロボットシステム100は、1つまたは複数の所定の基準に従って各載置組み合わせ364を評価またはスコア付けすることができる。基準は、載置済みのアイテムに関連する1つまたは複数のコスト、および/または現在の載置が今後の載置または候補にどのように影響するかに関連する1つまたは複数のヒューリスティックスコアを含むことができる。
【0058】
基準の一例は、フットプリント密度の最大化を含むことができる。ロボットシステム100は、パッケージのグループの外周382について、フットプリント密度を計算することができる。いくつかの実施形態では、外周382は、パッケージのグループの露出した/外周のエッジに基づいて決定することができる。ロボットシステム100はさらに、2つ以上のエッジを伸ばして交点を発見することによって、および/またはフットプリントの1つまたは複数のコーナーを結ぶ線を描くことによって、周囲の/関連するエリアを囲むことができる。ロボットシステム100は、実際の占有面積384(たとえば、影付きエリアに対応する単位ピクセル310の数)と、空き面積386(たとえば、囲まれた/関連するエリアに対応する単位ピクセル310の数)との比として、フットプリント密度を計算することができる。ロボットシステム100は、空き面積386を最小化する載置プランを(たとえば、より高い/より低いスコアを割り当てることによって)優先するように構成することができる。
【0059】
スタッキングルール
図4A〜
図4Cは、本技術の1つまたは複数の実施形態によるスタッキングルールの図である。ロボットシステム100はスタッキングルールを使用して、パッケージを互いの上に載置することができ、たとえば、1つまたは複数のパッケージのレイヤ(複数可)を、1つまたは複数の他のパッケージのレイヤの上にスタック/載置することができる。ロボットシステム100は、スタッキングルールを使用してスタックされたパッケージの安定性を向上させることができ、パレットの移動中に任意のパッケージが滑るおよび/または傾くことを防ぐことができる。例示の目的で、
図4A〜
図4Cに、上のパッケージ452が1つまたは複数の支持パッケージ454のすぐ上にあり、これによって支持される(たとえば、直接接する)ことを示す。
【0060】
図4Aに、3D載置(たとえば、3D載置プラン350)を生成するために使用される水平オフセットルール402を示す。水平オフセットルール402は、スタックされたアイテム間の垂直エッジ/面の水平オフセットを制限するための規制、要件、またはこれらの組合せを含むことができる。たとえば、水平オフセットルール402は、重なり要件422、突出要件424、またはこれらの組合せに基づくことができる。重なり要件422は、スタックされたパッケージの間の最小量(たとえば、長さ、幅、および/または表面積の割合または比)の重なりを含むことができる。いくつかの実施形態では、重なり要件422は、上のパッケージ452の水平寸法/表面積の最小量が支持パッケージ454のそれと重なることを要求することができる。突出要件424は、支持パッケージ454の周辺エッジ/面を超えて水平に伸びる上のパッケージ452の一部など、最大量(たとえば、長さ、幅、および/または表面積の割合または比)の突出を含むことができる。
【0061】
いくつかの実施形態では、水平オフセットルール402は、重量、寸法、および/または重心(CoM)位置412に基づくことができる。たとえば、重なり要件422および/または突出要件424は、CoM位置412に基づくことができ、たとえば、上のCoM位置と支持パッケージ454の水平エッジ/面との距離、および/または突出距離(たとえば、支持パッケージ454の周縁(複数可)を超えて伸びる上のパッケージ452の一部の水平方向に沿った度合い)に対する、上のパッケージ452および支持パッケージ454のCoM位置412間の距離を評価するようにする。いくつかの実施形態では、水平オフセットルール402は、上のパッケージ452および支持パッケージ454のCoM位置412が閾値内であることを要求するCoMオフセット要件426に基づくことができる。閾値は、所定の距離、水平寸法に対するCoM位置412間のオフセット距離の比の限界値、突出距離、重なり距離、またはこれらの組合せを含むことができる。
【0062】
図4Bに、3D載置(たとえば、スタッキングプラン)を生成するために使用される支持物離間ルール404を示す。支持物離間ルール404は、支持パッケージ454間の水平離間距離414を制限するための規制、要件、またはこれらの組合せを含むことができる。水平離間距離414は、隣接する支持パッケージ454の周面/周縁間の水平距離に対応することができる。いくつかの実施形態では、支持物離間ルール404は、上のパッケージ452と支持パッケージ454との重なった面の位置および/または量にさらに基づくことができる。たとえば、支持物離間ルール404は、水平離間距離414が任意の突出距離よりも所定の割合だけ長いことを要求することができる。また、支持物離間ルール404は、水平離間距離414が上のパッケージ452のCoM位置412の下に伸びることを要求することができる。
【0063】
図4Cに、3D載置(たとえば、3D載置プラン350)を生成するために使用される垂直オフセットルール406を示す。垂直オフセットルール406は、支持パッケージ454の垂直位置間の支持高低差416を制限するための規制、要件、またはこれらの組合せを含むことができる。支持高低差416は、対応する支持パッケージ454の頂部間の、たとえば、対応する支持パッケージ454上に載置された上のパッケージ452に接する可能性が高い部分同士の間の垂直距離に対応することができる。いくつかの実施形態では、垂直オフセットルール406は、支持高低差416が、1つまたは複数のパッケージを支持パッケージ454の上にスタックするための所定の閾値要件を下回ることを必要とすることができる。いくつかの実施形態では、支持物離間ルール404は、レイヤの高さに基づいて異なることができる。たとえば、上のパッケージ452(たとえば、支持されるパッケージ)が最上位レイヤの一部である場合、支持高低差416の限度は下位レイヤよりも大きくすることができる。
【0064】
ロボットシステム100は、スタッキングルールに従ってスタッキングプラン(たとえば、複数の2D載置プランの3Dの組み合わせ)を生成することができる。たとえば、ロボットシステム100は、高さ要件(たとえば、パッケージグループの高さを閾値距離内に維持するためのもの)に従って、2D載置プラン(たとえば、
図3Bの載置プラン350)を生成することができる。続いて、ロボットシステム100は、2D載置プランを垂直に重ねる(たとえば、スタックする)ことに基づいて、スタッキングプランを生成することができる。
【0065】
スタッキングシーケンス
図5Aは、本技術の1つまたは複数の実施形態によるスタッキングプラン502の一例の図である(たとえば、利用可能パッケージの3Dマッピングを表すプラン、および/または載置プラン350は、3Dマッピング内のレイヤに対応する)。例示の目的で、第1のパッケージのスタック520(たとえば、少なくともパッケージ1−1〜1−4、2−1〜2−2、および3−1〜3−3など)についての第1のレイヤ512、第2のレイヤ514、および第3のレイヤ516を使用するスタッキングプラン502を示す。第1のレイヤ512、第2のレイヤ514、および第3のレイヤ516のそれぞれは、載置プラン350のインスタンスとすることができる。第1のレイヤ512を底部に位置させて、その中のパッケージ(たとえば、少なくともパッケージ1−1、1−2、1−3、および1−4)が載置パレット340に直接接するようにすることができる。第2のレイヤ514内のパッケージ(たとえば、少なくともパッケージ2−1および2−2)は、第1のレイヤ512のすぐ上(すなわち、直接接する)および上方に置くことができる。同様に、第3のレイヤ516のパッケージ(たとえば、少なくともパッケージ3−1および3−2)は、第2のレイヤ514のすぐ上にあり、接することができる。
【0066】
以下に詳述するように、ロボットシステム100は、垂直パラメータ(たとえば、支持重量、レイヤの高さなど)を考慮しながら、各レイヤを別々に計画することができる。スタッキングプラン502を生成する際に、ロボットシステム100は、垂直パラメータおよび/またはスタッキングルールに従って別々のレイヤを垂直に組み合わせるおよび/または配列することができる。いくつかの実施形態では、ロボットシステム100は、パッケージの垂直載置に応じてレイヤを計画することができる。たとえば、ロボットシステム100は、第1のレイヤ512を、たとえば、第2のスタック522内の下の2つのパッケージを含む、載置パレット340に直接接する全てのパッケージを含むものとして、生成することができる。また、ロボットシステム100は、「3−3」とラベル付けされたパッケージを第2のレイヤ514の一部として計画することができる。いくつかの実施形態では、ロボットシステム100は、スタッキングプラン502を生成する際に、レイヤ(たとえば、載置プラン350)を再計画および/または調整することができる。たとえば、ロボットシステム100は、スタッキング/載置シーケンスを容易にするように、レイヤを調整することができる。
図5Aに示すように、ロボットシステム100は、第2のスタック522が独立したスタック(すなわち、第1、第2、および第3のレイヤ512−516とは独立したもの)とみなされるように、レイヤを調整することができる。したがって、ロボットシステム100は、第1のスタック520のレイヤとは独立して/異なって、第2のスタック522のパッケージを自由に計画し、および/またはスタックすることができる。
【0067】
また、いくつかの実施形態では、ロボットシステム100は、
図1の移載ユニット104(たとえば、パレタイズロボット)に最も近いより大きいパッケージをより上位のレイヤに移動させて、スタッキングシーケンスを容易にすることができる。移載ユニット104が
図5Aに示す載置パレット340の右にあると仮定すると、「3−3」パッケージは、「3−1」および「3−2」とラベル付けされたパッケージより前に載置される場合、障害物となり得る(すなわち、高さが原因)。したがって、ロボットシステム100は、「3−3」パッケージがより上位のレイヤ(たとえば、第2のレイヤ512ではなく第3のレイヤ516)の一部となるように、レイヤを調整することができる。結果として、ロボットシステム100がレイヤに従ってパッケージを載置する場合、「3−3」パッケージは「3−1」および「3−2」パッケージの後に載置することができる。
【0068】
他の代替的実施形態では、ロボットシステム100は、レイヤに縛られずに、スタッキングプラン502を分析することに基づいて、スタッキングまたは載置シーケンスを独立して計算することができる。議論の目的で、
図5Bは、本技術の1つまたは複数の実施形態による、レイヤに応じたパッケージのスタッキングに縛られないスタッキングシーケンス530(たとえば、利用可能パッケージについての載置順序の特定)の図である。スタッキングシーケンス530は、スタックされるパッケージ532を支持パッケージの上に、かつ2つの端のパッケージ間に水平に載置するためのものとすることができる。スタッキングシーケンス530は、移載ユニット104(
図5Bに図示せず、載置パレット340の右に位置すると仮定する)から最も遠いパッケージ(「1」とラベル付けされたもの)を最初に載置することができ、その後に第2のパッケージ(「2」とラベル付けされたもの)が載置パレット340に載置されるようなものとすることができる。ロボットシステム100は、端のパッケージ534(「4」とラベル付けされたもの)のうちの1つ(たとえば、3つ目)より前に、スタックされるパッケージ532(「3」とラベル付けされたもの)が載置されるように、スタッキングシーケンス530を計算することができる。上述のように、ロボットシステム100は、端のパッケージ534の1つを、スタックされたパッケージ532と共に第2のレイヤに属するように調整することに基づいて、またはスタッキングプラン502とは独立してスタッキング順序を計算することに基づいて、スタッキングシーケンス530を計算することができる。
【0069】
動作フロー
図6は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100を動作させる方法600についての流れ図である。方法600は、パッケージ(たとえば、ケースおよび/またはボックス)をプラットフォーム(台)(たとえば、パレット)に載置するための、および/またはそれに従ってパッケージを載置するための2D/3Dパッキングプランを生成するためのものとすることができる。方法600は、
図2の記憶デバイス204のうちの1つまたは複数に記憶された命令を、
図2のプロセッサ202のうちの1つまたは複数によって実行することに基づいて、実施することができる。
【0070】
ブロック602において、ロボットシステム100は、パッケージセット(たとえば、
図3Cの利用可能パッケージ362)と、目的地(たとえば、パッケージを受け取るためのパレットおよび/またはコンテナなどの、
図1のタスク位置116)とを識別することができる。たとえば、ロボットシステム100は、パッキングに利用可能な、ソースに位置する、載置するために指定された、および/または注文/要求/目録内にリスト化されたパッケージを含む利用可能パッケージ362を表すパッケージセットを識別することができる。また、ロボットシステム100は、パッケージを載置可能なタスク位置116のエリア(たとえば、
図3の載置パレット340などのパレットの一番上の積載面)のサイズまたは寸法を特定する。いくつかの実施形態では、ロボットシステム100は、パレットのサイズ、寸法、タイプ、またはこれらの組合せを特定することができる。
【0071】
ブロック604において、ロボットシステム100は、利用可能パッケージ362および/またはタスク位置116を表す、パッケージセットに対応する離散化モデル(たとえば、
図3Aの離散化オブジェクトモデル302および/または
図3Bの離散化プラットフォーム(台)モデル304)を生成および/またはアクセスすることができる。いくつかの実施形態では、ロボットシステム100は、オブジェクトおよび/またはプラットフォーム(台)エリア(たとえば、
図3Bの単位ピクセル310に従うパレット上面)の物理的な寸法を分割することに基づいて、(たとえば、リアルタイムに、すなわち、たとえば、注文を受けた後および/またはパッキング動作を開始する前に、あるいはオフラインで)離散化モデルを生成することができる。単位ピクセル310は、(たとえば、製造業者、注文した顧客、および/またはオペレータによって)、たとえば、1ミリメートル(mm)もしくは1/16インチ(in)またはそれ以上(たとえば、5mmもしくは20mm)など、事前に決定することができる。いくつかの実施形態では、単位ピクセル310は、パッケージのうちの1つまたは複数および/またはプラットフォーム(台)の寸法またはサイズに基づくことができる(たとえば、割合または分数)。
【0072】
いくつかの実施形態では、ロボットシステム100は、記憶デバイス204および/または他のデバイス(たとえば、
図2の通信デバイス206を介してアクセスされるパッケージ供給元の記憶デバイス、データベース、および/またはサーバ)に記憶された離散化モデルにアクセスすることができる。ロボットシステム100は、利用可能パッケージ362および/またはタスク位置116を表す所定の離散化モデルにアクセスすることができる。たとえば、ロボットシステム100は、
図2のマスターデータ252(たとえば、所定のテーブルまたはルックアップテーブル)において利用可能パッケージおよびそれらに対応するモデルを検索することによって、利用可能パッケージ362に対応する離散化オブジェクトモデル302にアクセスすることができる。同様に、ロボットシステム100は、利用可能パッケージが載置されることになる識別されたパレットなどのプラットフォーム(台)を表す離散化プラットフォーム(台)モデル304にアクセスすることができる。
【0073】
ブロック606において、ロボットシステム100は、パッケージグループ(たとえば、利用可能パッケージのサブグループ)を決定することができる。ロボットシステム100は、識別されたプラットフォーム(台)(たとえば、載置パレット340)に載置するために、利用可能パッケージ362に基づいてパッケージグループを決定することができる。ロボットシステム100は、利用可能パッケージ362の1つまたは複数の特性における類似性および/またはパターンに応じて、パッケージグループを決定することができる。いくつかの実施形態では、ブロック621に示すように、ロボットシステム100は、グループ化条件/要件に従って利用可能パッケージ362をグループ化することによって、パッケージグループを決定することができる。グループ化条件/要件のいくつかの例は、パッケージ優先度(たとえば、1つまたは複数の顧客によって指定されるもの)、脆性レーティング(たとえば、パッケージによって支持可能な最大重量)、重量、パッケージ寸法(たとえば、パッケージ高)、パッケージタイプ、またはこれらの組合せを含むことができる。利用可能パッケージ362をグループ化する際に、ロボットシステム100は、グループ化条件/要件に合致する利用可能パッケージ362の様々な特性をマスターデータ252において検索することができる。
【0074】
ブロック608において、ロボットシステム100は、利用可能パッケージ362および/またはそのグループ(すなわち、パッケージグループ)に対する処理順序(たとえば、載置位置を検討/導出するシーケンス)を計算することができる。いくつかの実施形態では、ブロック622に示すように、ロボットシステム100は、1つまたは複数の配列条件/要件に従って処理順序を計算することができる。たとえば、ロボットシステム100は、たとえば、パッケージ数が多いパッケージグループを載置計画において早く処理するために、各グループ内のパッケージ数に応じて、パッケージグループの載置計画を優先することができる。いくつかの実施形態では、配列条件は、たとえば、重量範囲、脆性レーティングなどについて、グループ化条件と重複することができる。たとえば、ロボットシステム100は、より重いおよび/またはより脆弱でないパッケージの処理を優先して、より早く処理し、および/またはより下位レイヤに載置するようにすることができる。
【0075】
いくつかの実施形態では、ロボットシステム100は、合計水平面積に応じて載置計画を優先することができる。ロボットシステム100は、マスターデータ252において指定された情報を使用して、グループ内のパッケージの上面の表面積を(たとえば、対応する幅と長さとを乗算することによって)計算するまたはアクセスすることができる。合計水平面積を計算する際に、ロボットシステム100は、同一のタイプであるおよび/または閾値範囲内の高さを有するパッケージの表面積を加算することができる。いくつかの実施形態では、ロボットシステム100は、より大きい合計水平面積を有するグループの載置計画を優先して、より早く処理し、および/またはより下位レイヤに載置するようにすることができる。
【0076】
1つまたは複数の実施形態について、ロボットシステム100は、利用可能パッケージ362の識別子および/または数量をバッファにロードすることができる。ロボットシステム100は、グループに従ってバッファ内の識別子を配列することができる。さらに、ロボットシステム100は、処理順序に応じてバッファ内の識別子を配列することができる。したがって、バッファ内の配列された値は、
図3Cに示す利用可能パッケージ362および/または残余パッケージ372に対応することができる。
【0077】
ブロック624に示すように、たとえば、ロボットシステム100は、
図5の対応するスタッキングプラン502を実施する前に、たとえば、パッケージセット内のパッケージのいずれかがプラットフォーム(台)に載置される前に、利用可能パッケージ362の初期セット(たとえば、パッケージセット)に対する処理順序を計算することができる。いくつかの実施形態では、ブロック626に示すように、ロボットシステム100は、対応するスタッキングプラン502の開始後または実施中に、利用可能パッケージ362の残余セットに対する処理順序を計算することができる。たとえば、ブロック616からのフィードバックループによって示すように、ロボットシステム100は、1つまたは複数のトリガ条件に従って、残余セット(たとえば、プラットフォーム(台)に移載されていないおよび/またはソース位置に残っている利用可能パッケージ362の一部)に対する処理順序を計算することができる。例示的なトリガ条件は、スタッキングエラー(たとえば、パッケージの紛失または落下)、衝突イベント、所定の再トリガタイミング、またはこれらの組合せを含むことができる。
【0078】
ブロック610において、ロボットシステム100は、利用可能パッケージ362を水平面に沿って載置するための2Dプラン(たとえば、
図3Bの載置プラン350)を生成することができる。たとえば、ロボットシステム100は、載置プラン350を生成して、水平面に沿った利用可能パッケージ362の2Dマッピングを表現することができる。ロボットシステム100は、離散化モデルに基づいて2つ以上の載置プランを生成することができる。たとえば、ロボットシステム100は、離散化オブジェクトモデル302を離散化プラットフォーム(台)モデル304と比較することに基づいて、載置プラン350を生成することができる。ロボットシステム100は、離散化オブジェクトモデル302の異なる載置/配置を決定し、離散化プラットフォーム(台)モデル304に重ね/比較し、重なった場合、離散化プラットフォーム(台)モデル304の境界線内にある配置を検証/保持することができる。ロボットシステム100は、離散化プラットフォーム(台)モデル304の境界線内に載置することができないパッケージに、他のレイヤ(たとえば、載置プラン350の他のインスタンス)を指定することができる。したがって、ロボットシステム100は、パッケージセット内の各パッケージに載置プラン350内の位置が割り当てられるまで、スタッキングプラン502の2Dレイヤを表す載置プラン350についての載置位置を反復的に導出することができる。
【0079】
いくつかの実施形態では、ロボットシステム100は、パッケージグループに基づいて載置プラン350を生成することができる。たとえば、ロボットシステム100は、あるパッケージグループ内のパッケージの配置を、他のグループ内のパッケージの載置を検討する前に、決定することができる。パッケージグループ内のパッケージがレイヤから溢れる場合(すなわち、離散化プラットフォーム(台)モデル304の1つのレイヤまたは1つのインスタンスに収まらない場合)、および/または1つのグループの全てのパッケージを載置した後、ロボットシステム100は、次のグループ内のパッケージについての位置を、離散化プラットフォーム(台)モデル304内の任意の残っている/占有されていないエリアに割り当てることができる。ロボットシステム100は、離散化プラットフォーム(台)モデル304の残余スペースに収まらない未割り当てパッケージがなくなるまで、割り当てを反復的に繰り返すことができる。
【0080】
同様に、ロボットシステム100は、処理順序に基づいて(たとえば、処理順序に応じたパッケージグループに基づいて)載置プラン350を生成することができる。たとえば、ロボットシステム100は、処理順序に応じてパッケージおよび/またはグループを割り当てることに基づいて、テスト配置を決定することができる。ロボットシステム100は、最も早く配列されたパッケージ/グループにテスト配置の最初の載置を割り当て、次いで、処理順序に応じて後続のパッケージ/グループをテストする/割り当てることができる。いくつかの実施形態では、ロボットシステム100は、レイヤにわたって(たとえば、載置プラン350のインスタンスにわたって)パッケージ/グループに対する処理順序を保持することができる。いくつかの実施形態では、ロボットシステム100は、各レイヤが充填された後、処理順序を再計算し更新することができる(
図6に破線のフィードバック線で図示)。
【0081】
いくつかの実施形態では、上述の処理の説明用の例として、ロボットシステム100は、パッケージセット内の異なるパッケージタイプ(たとえば、
図3Aの第1、第2、第3、第4、および/または第5のそれぞれのパッケージタイプ321−325)を識別することによって、2Dプランを生成することができる。換言すれば、ブロック632において、ロボットシステム100は、各パッケージグループおよび/またはパッケージセット内の(たとえば、パッケージタイプによって表される)独特のパッケージを識別することができる。
【0082】
ブロック634において、ロボットシステム100は、各利用可能パッケージ362について載置位置を(たとえば、反復的に)導出することができる。ブロック636において、ロボットシステム100は、処理順序に応じてシーケンスの最初の独特のパッケージについての初期載置位置を決定することができる。ロボットシステム100は、上述のように所定のパターンに従って初期載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、独特のパッケージごとに初期載置を計算することができる。得られた初期載置はそれぞれ、たとえば、反復にわたって載置プラン350を追跡することによって、一意の載置組み合わせ(たとえば、
図3Cの探索木374のインスタンス)に発展させることができる。ブロック638において、ロボットシステム100は、処理順序および/または上述の残余パッケージ372に応じて、後続のパッケージについての載置位置候補を導出し追跡することができる。したがって、ロボットシステム100は、
図3Cの載置組み合わせ364を反復的に導出することができる。
【0083】
載置組み合わせ364(たとえば、載置位置候補)を導出する際に、ロボットシステム100は、スタッキングシナリオ候補(たとえば、利用可能パッケージについての一意の載置位置の可能な組み合わせ)を反復的に導出し評価することに基づいて、対応するパッケージの離散化オブジェクトモデル302の位置をテスト/評価することができる。各スタッキングシナリオ候補は、上述のシーケンスに従ってパッケージについての一意の可能な位置を(たとえば、載置位置についての所定のシーケンス/ルールに従って)識別することに基づいて、導出することができる。スタッキングシナリオ候補および/または一意の載置位置は、1つまたは複数の載置基準(たとえば、要件、制約、載置コスト、および/またはヒューリスティックスコア)に従って評価することができる。たとえば、載置基準は、選択された位置に載置される場合、離散化オブジェクトモデル302が離散化プラットフォーム(台)モデル304の水平境界線内に完全に収まることを要求することができる。また、載置基準は、離散化オブジェクトモデル302の載置が、隣接載置または離間要件などのために、(たとえば、水平方向などに沿った)初期載置位置および/または前の載置位置に対して閾値距離内または閾値距離を超えることを要求することができる。載置基準の他の例は、1つまたは複数のパッケージ寸法(たとえば、高さ)、脆性レーティング、パッケージ重量範囲、またはこれらの組合せの差が最小であるパッケージを隣接して載置するための設定を含むことができる。いくつかの実施形態では、載置基準は、基準位置(たとえば、パレタイズロボットの位置)に対するレイヤ内の割り当て済みのパッケージの位置および/または特性(たとえば、高さ)に対応し得る衝突確率を含むことができる。したがって、ロボットシステム100は、パッケージ載置位置の複数の一意の載置組み合わせ(すなわち、各レイヤについての載置プラン候補、および/または各レイヤが複数のレイヤ含むスタッキングシナリオ候補)を生成することができる。いくつかの実施形態では、ロボットシステム100は、載置反復にわたって探索木374を生成し更新することに基づいて、組み合わせの載置を追跡することができる。
【0084】
ブロック640において、ロボットシステム100は、各組み合わせ/パッケージ載置についての載置スコアを計算/更新することができる。ロボットシステム100は、載置条件/設定(たとえば、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件)のうちの1つまたは複数に従って載置スコアを計算することができる。たとえば、ロボットシステム100は、選好係数(たとえば、乗数の重み)および/または式を使用して、パッケージ間の離間距離、隣接パッケージについてのパッケージ寸法/脆性レーティング/パッケージ重量の差、衝突確率、同じ高さの連続面/隣接面、その統計結果(たとえば、平均、最大、最小、標準偏差など)、またはこれらの組合せについての選好を記述することができる。各組み合わせは、システム製造業者、注文、および/またはシステムオペレータによって事前定義され得る選好係数および/または式に従ってスコア付けすることができる。いくつかの実施形態では、ロボットシステム100は、載置反復全体の最後に載置スコアを計算することができる。
【0085】
いくつかの実施形態では、ロボットシステム100は、各載置反復後に、
図3Cの優先度キュー376内の載置組み合わせ364のシーケンスを更新することができる。ロボットシステム100は、載置スコアに基づいてシーケンスを更新することができる。
【0086】
ロボットシステム100は、たとえば、1つの載置プラン候補が終了した場合に、空きソースステータス、満杯レイヤステータス、または不変スコアステータスを判定することに基づいて、載置反復を停止することができる。空きソースステータスは、全ての利用可能パッケージが載置されたことを表すことができる。満杯レイヤステータスは、他のパッケージを検討中の離散化プラットフォーム(台)モデル304の残余エリア内に載置できないことを表すことができる。不変スコアステータスは、組み合わせについての載置スコアが、1つまたは複数の連続した載置反復にわたって一定のままであることを表すことができる。いくつかの実施形態では、ロボットシステム100は、(たとえば、配列条件に関連する配列値/スコアが同一であるグループを並べ直すために)異なる初期載置位置および/または異なる処理順序を使用して載置反復を繰り返すことによって、スタッキングシナリオ候補の他のインスタンスを導出することができる。換言すれば、ロボットシステム100は複数の2D載置プランを生成することができ、ここで、各2D載置プランは、(たとえば、スタッキングシナリオ候補のインスタンスなどの)3Dスタック内のレイヤを表すことができる。他の実施形態では、ロボットシステム100は、2D載置プランが導出された場合に3D効果を反復的に検討し、2D載置プランが満杯になった場合に、次のレイヤを次の反復として導出することを開始することができる。
【0087】
ブロック612において、ロボットシステム100は、スタッキングプラン(たとえば、スタッキングプラン502)を生成することができる。いくつかの実施形態では、ロボットシステム100は、処理されるパッケージの載置位置が1つまたは複数の載置/処理済みのパッケージと重なる場合に、スタッキングプラン502の生成を開始することができる。
【0088】
スタッキングプラン502を生成し、および/または2Dプランを査定する際に、ロボットシステム100は、ブロック652に示すように、載置組み合わせ364および/または載置プランのそれぞれを3D状態に変換することができる。たとえば、ロボットシステム100は、パッケージについての高さ値を載置組み合わせ364に割り当てることができる。換言すれば、ロボットシステム100は、パッケージ高を載置組み合わせ364に追加することに基づいて、等高線図(深度マップの推定)を生成することができる。
【0089】
3D状態によって、ロボットシステム100は、1つまたは複数のスタッキングルール(たとえば、
図4Aの水平オフセットルール402、
図4Bの支持物離間ルール404、および/または
図4Cの垂直オフセットルール406)に従って、載置組み合わせ364を評価することができる。説明用の例として、載置されるパッケージが1つまたは複数の処理済みのパッケージの上に/上を覆ってスタックされる場合、ロボットシステム100は、上述の
図2の重なり要件422、
図4Aの突出要件424、垂直オフセットルール406、
図4AのCoMオフセット要件426、またはこれらの組合せに違反する載置組み合わせ364のいずれかを排除することができる。1つまたは複数の実施形態では、ロボットシステム100は、たとえば、重なったパッケージにおける支持重量を推定し、対応する脆性レーティングと比較することによって、処理済みのパッケージの下の1つまたは複数のパッケージの脆性レーティングに違反する載置組み合わせ364のいずれかを排除することができる。
【0090】
残余の載置組み合わせ364について、ロボットシステム100は、たとえば、ブロック654に示すように、3D載置スコアを計算するまたは載置スコアを更新することができる。ロボットシステム100は、3D載置についての載置コストおよび/またはヒューリスティック値に関連する所定の設定(たとえば、重みおよび/または式)を使用することができる。所定の3D設定は、2D設定、グループ設定、配列条件、またはこれらの組合せに類似することができる。たとえば、3D設定は、3D状態に基づいて衝突確率を計算し、衝突確率がより低い載置組み合わせを優先するスコアを計算するように構成することができる。また、ロボットシステム100は、残余パッケージ372、共通の高さを有する支持エリアのサイズ、3D状態のパッキングされたアイテムの数、処理済みパッケージの高さの差、またはこれらの組合せに基づいて、スコアを計算することができる。いくつかの実施形態では、ロボットシステム100は、スコアに応じて優先度キュー376内の載置組み合わせ364のシーケンスを更新することができる。
【0091】
3D状態が処理された後、ロボットシステム100は、ブロック610などにおいて、残余パッケージ372内の次のパッケージについての載置を導出することによって、2Dプランを更新することができる。ロボットシステム100は、たとえば、利用可能パッケージ362が全て処理された(すなわち、残余パッケージ372についての空の値/セット)場合、および/または載置組み合わせ364を改善できない(改善されない組み合わせとも呼ばれる)場合など、停止条件まで上述の処理を反復することができる。改善されない組み合わせのいくつかの例は、現在処理されている載置が、違反のうちの1つまたは複数によって優先度キュー376内の載置組み合わせ364の最後のものを排除する場合、および/または載置スコアが優先される組み合わせについて閾値数の反復にわたって一定のままである場合を含むことができる。
【0092】
停止条件が検出された場合、たとえば、ブロック656において、ロボットシステム100は、載置スコア(たとえば、2Dおよび/または3D関連スコア)に応じて、導出された載置組み合わせ364のうちの1つを選択することができる。したがって、ロボットシステム100は、選択された載置組み合わせをスタッキングプラン502(たとえば、載置プラン350のセット)として指定することができる。
【0093】
いくつかの実施形態では、説明用の例として、ロボットシステム100は、ブロック610および612の機能を異なって実施することができる。たとえば、ブロック610において、ロボットシステム100は、上述のように最下位レイヤについての2Dプラン(たとえば、載置プラン350のインスタンス)を生成することができる。その際、ロボットシステム100は、載置および/または処理順序を検討する際に、一致するパッケージ高、より重いパッケージ重量、および/またはパッケージについてのより大きい支持可能重量に対してより重い設定(たとえば、より大きいパラメータの重み)を与えるように構成することができる。ロボットシステム100は、ブロック610について上述したように、ベースレイヤについて第1の2Dプランを導出することができる。
【0094】
第1の2Dレイヤが上述のように完全/満杯となってベースレイヤが形成されると、ロボットシステム100は、ブロック612/652について説明したように載置プランを3D状態に変換することができる。3D情報を使用して、ロボットシステム100は、上述のようにベースレイヤの1つまたは複数の平面セクション/エリア(たとえば、
図3Bの載置面352−356)を特定することができる。平面セクションを使用して、ロボットシステム100は、ベースレイヤの上の次のレイヤについてのパッケージ載置を反復的に/再帰的に導出することができる。ロボットシステム100は、各平面セクションを離散化プラットフォーム(台)モデル304の新たなインスタンスとみなし、ブロック610について上述したように異なる載置をテスト/評価することができる。いくつかの実施形態では、ロボットシステム100は、載置面を使用して2D載置を導出することができるが、載置パレット340全体にわたってスコアを計算することができる。したがって、ロボットシステム100は、先行する載置エリアに制限されることなく、後続のレイヤに対してより大きい載置エリアを優先するように構成することができる。
【0095】
反復的載置処理が第2のレイヤについて停止すると、ロボットシステム100は、導出されたレイヤについての平面セクション(たとえば、閾値範囲内の高さを有する上面)を計算して、次の上のレイヤについての残余パッケージ/グループの2D載置を生成することができる。反復的レイヤ化処理は、上述のように停止条件が満たされるまで継続することができる。
【0096】
いくつかの実施形態では、ロボットシステム100は、ブロック612において2Dプラン(たとえば、載置プラン350のうちの2つ以上)を独立して生成することができる。ロボットシステム100は、2Dプランを垂直に組み合わせる(たとえば、垂直方向に沿って2D載置プランを配置する/重ねる)ことに基づいてスタッキングプラン502を生成することができる。
【0097】
ブロック614において、ロボットシステム100は、スタッキングプラン502に基づいてパッキングシーケンス(たとえば、
図5Bのスタッキングシーケンス530)を計算することができる。一例として、パッキングシーケンスは、利用可能パッケージ362の載置順序を特定するためのものとすることができる。いくつかの実施形態では、ブロック662に示すように、ロボットシステム100は、パッキングシーケンスをレイヤごとに計算することができる。換言すれば、ロボットシステム100は、各レイヤについてパッキングシーケンスを計算し、次いで、レイヤの順序/位置に従ってシーケンスを下から上へ接続することができる。パッキングシーケンスを計算する際に、いくつかの実施形態では、ロボットシステム100は、ブロック672に示すように載置プランを調整することができる。たとえば、ロボットシステム100は、下位レイヤの載置プランから上位レイヤの載置プランまでパッケージ(たとえば、後続の操作/移載について衝突確率を増加させる高さを有するパッケージ)のうちの1つまたは複数を再割り当てすることによって、載置プランを調整することができる。再割り当てされたパッケージによって支持される任意のパッケージは、さらなる上位レイヤに再割り当てすることもできる。換言すれば、再割り当てされたパッケージは、同じ水平載置のままとし、上位レイヤに関連付けて、パッケージを
図5Bに示すように後で載置できるようにすることができる。ブロック674において、ロボットシステム100は、たとえば、下位レイヤに割り当てられたオブジェクトの後に、上位レイヤに割り当てられたオブジェクトをパッキング/操作することによって、調整された載置プランに基づいてパッキングシーケンス(たとえば、スタッキングシーケンス530)を計算することができる。
【0098】
他の実施形態では、ブロック664に示すように、ロボットシステム100は、レイヤ割り当てとは無関係に/独立してパッキングシーケンスを計算することができる。換言すれば、ロボットシステム100は、下位レイヤに割り当てられたパッケージが上位レイヤに割り当てられたパッケージの後に載置されるように、パッキングシーケンスを計算することができる。
【0099】
パッキングシーケンスを計算する際に、レイヤ内またはレイヤ間の両方で、ロボットシステム100は、1つまたは複数のパッケージ寸法(たとえば、高さ)、相対的な載置位置、またはこれらの組合せに応じて、スタッキングプラン502内のパッケージの位置を分析することができる。たとえば、ロボットシステム100は、ユニット/基準位置(たとえば、パレタイズロボットの位置)から遠いボックスの載置を、近くに割り当てられたパッケージよりも前に配列することができる。また、ロボットシステム100は、割り当てられた位置が載置プランの外周に沿っており、ユニット位置から離れている場合、より高い/より重いパッケージをより早く載置することができる。
【0100】
ブロック616において、ロボットシステム100は、利用可能パッケージ362をプラットフォーム(台)に載置するためにスタッキングプラン502を実施することができる。ロボットシステム100は、スタッキングプラン502に従って、1つまたは複数のモーションプラン、アクチュエータコマンド/設定、またはこれらの組合せを、対応するデバイス/ユニット(たとえば、
図1の移載ユニット104、
図2のアクチュエーションデバイス212、
図2のセンサ216など)に伝達することに基づいて、スタッキングプラン502を実施することができる。ロボットシステム100はさらに、デバイス/ユニットにおいて伝達された情報を実行して、利用可能パッケージ362をソース位置から目的地のプラットフォーム(台)に移載することに基づいて、スタッキングプラン502を実施することができる。したがって、ロボットシステム100は、3Dマッピングに従って利用可能パッケージ362を載置することができ、ここで、利用可能パッケージ362のうちの1つまたは複数は他のパッケージの上に載置/スタックされ、たとえば、利用可能パッケージ362がレイヤごとに載置される。さらに、ロボットシステム100は、パッキングシーケンスに従ってパッケージを操作/移載することができる。したがって、ロボットシステム100は、上述のように、パッケージをレイヤごとに、またはそのような制約なしで載置することができる。
【0101】
上述のタスクの離散化および2D/3Dレイヤ化によって、オブジェクトをパッキングする効率、速度、および精度が向上する。したがって、オペレータ入力の削減および精度の向上によって、自動化パッキング処理に関する人間の労力をさらに減少させることができる。一部の環境では、上述のロボットシステム100は、約100万USドルまたはそれ以上のコストがかかり得る配列バッファの必要性を排除することができる。
【0102】
結論
開示した技術の実施例の上記の詳細な説明は、網羅的なものではなく、開示した技術を上記で開示した厳密な形に限定するものでもない。開示した技術の具体例を例示の目的で上述しているが、当業者であれば理解するように、開示した技術の範囲内で様々な等価な修正が可能である。たとえば、処理またはブロックを所与の順序で提示しているが、代替的な実施態様は異なる順序のステップを有するルーチンを実行してもよく、または異なる順序のブロックを有するシステムを採用してもよく、一部の処理またはブロックを削除、移動、追加、細分化、結合、および/または修正して、代替的な組み合わせまたは部分的な組み合わせを提供してもよい。これらの処理またはブロックのそれぞれは、種々の異なる方法で実施されてもよい。また、処理またはブロックは順番に実行されるように示している場合があるが、これらの処理またはブロックは代わりに並列に実行または実施されてもよく、または異なる時刻に実行されてもよい。さらに、本明細書に記載の任意の特定の数字は例にすぎず、代替的な実施態様は異なる値または範囲を採用してもよい。
【0103】
これらのおよび他の変更は、上記の詳細な説明に照らして、開示した技術に対して行うことができる。詳細な説明では、開示した技術の特定の例だけでなく、企図される最良の形態を説明しているが、上記の説明が文中でどれほど詳細に見えても、開示した技術は多くの方法で実践することができる。システムの詳細はその特定の実施態様において大幅に異なってもよく、本明細書で開示した技術によってなおも包含される。上述のように、開示した技術の特定の特徴または態様を説明する際に使用される特定の用語は、その用語が関連する開示した技術の任意の特定の特性、特徴、または態様に限定されるようにその用語が本明細書で再定義されることを意味するよう解釈されるべきではない。したがって、本発明は、添付の特許請求の範囲を除いて、限定されない。一般に、以下の特許請求の範囲で使用される用語は、上記の詳細な説明のセクションがそのような用語を明確に定義していない限り、開示した技術を本明細書で開示した具体例に限定するように解釈されるべきではない。
【0104】
本発明の特定の態様を特定の請求項の形式で以下に提示するが、出願人は本発明の様々な態様を任意数の請求項の形式で企図している。したがって、出願人は、本出願または継続出願において、そのような追加の請求項の形式を追求するために本出願を提出した後に追加の請求を追求する権利を留保している。
【解決手段】ロボットシステムを動作させるための方法は、利用可能パッケージを台に載置するためのパッケージグループを決定することと、利用可能パッケージおよび台を表す離散化モデルに基づいて2次元(2D)載置プランを生成することと、2D載置プランに基づいて3次元(3D)スタッキングプランを生成することと、3Dスタッキングプランを実施して利用可能パッケージを台に載置することとを含む。