(58)【調査した分野】(Int.Cl.,DB名)
前記パッケージの前記均一パッキングレイヤを実現する前記シミュレートされたスタッキングプランを生成または更新することは、スタッキング表面積要件を満たすことを含む、請求項2に記載の方法。
前記スタッキング表面積要件は、前記均一パッキングレイヤの前記上面についての合計水平面積が表面積閾値より大きいという合計面積要件を含む、請求項5に記載の方法。
前記スタッキング表面積要件は、前記均一パッキングレイヤの前記上面を形成する前記パッケージ間の間隙領域および/または空きスペースが間隔閾値未満であるというパッケージ間隔要件を含む、請求項5に記載の方法。
前記均一レイヤトリガの前記パレタイズトリガの発生を判定することは、前記シミュレートされた前記スタッキングプランがスタッキング表面積要件を満たす均一パッケージレイヤを実現したと判定することを含む、請求項1に記載の方法。
前記タイムリミットトリガの前記パレタイズトリガの発生を判定することは、前記転置ユニットのユニットアイドル時間および/または総動作時間が動作時間閾値を超えたと判定することを含む、請求項1に記載の方法。
前記保管容量トリガの前記パレタイズトリガの発生を判定することは、前記保管エリアについての保管容量カウンタが保管容量閾値を超えたと判定することを含む、請求項1に記載の方法。
前記タイムリミットトリガ、前記保管容量トリガの発生を判定するか、または前記載置開始コマンドを受信すると、前記シミュレートされたスタッキングプランを残余パッケージプランとして生成することをさらに含み、
前記残余パッケージプランは、パレタイズ基準に従って、現在前記保管エリアにある前記パッケージの全てを載置するためのものである、請求項1に記載の方法。
【発明を実施するための形態】
【0011】
3次元(3D)パッキング機構を有するロボットシステムのためのシステムおよび方法を本明細書において説明する。いくつかの実施形態に従って構成されるロボットシステム(たとえば、1つまたは複数の指定タスクを実行するデバイスの統合システム)は、オブジェクト(たとえば、パッケージ)に対して最適な保管位置を導出し、それに従ってスタッキングすることによって、パッキングおよび保管効率を高める。一例では、ロボットシステムは、パッケージがロボットに提供される順序とは無関係に、スタッキングプランに基づいてパッケージを目的地(たとえば、パレット、ビン、ケージ、ボックスなど)において積み重ねることができる。スタッキングプランは、典型的には、たとえば、後述するパレット上のパッケージの具体的な載置位置/姿勢、および/または所定のモーションプランなどの詳細の中でも特に、パッケージがパレットに載置されるスタッキングシーケンスまたは順序を含む。ロボットシステムは、パッケージをロボットシステムにスタッキングシーケンスで提供する必要なく、パッケージをパレットに載置するためのスタッキングプランを実施することができる。
【0012】
たとえばコンベヤベルト上でパッケージが次々にロボットシステムの開始位置に到着すると、ロボットシステムは各パッケージを処理して台に載置する。いくつかの実施形態では、パッケージを処理することは、パッケージの属性、たとえば、形状、サイズ、高さ、幅、長さおよび他の物理的な寸法を特定することと、パッケージを保管エリア内に、たとえば、複数の保管ラックのうちの1つに保管して、後でパレットに載置できるようにすることとを含むことができる。パッケージが保管エリアに保管されているときに、ロボットシステムはシミュレーション機能を実行して、パッケージをパレットに載置するためのスタッキングプランを決定することができる。いくつかの実施形態では、シミュレーション機能はパッケージの処理と並列して実行され、たとえば、新たなパッケージが処理される限り、継続的に更新することができる。パレタイズトリガが発生した場合、ロボットシステムは、スタッキングプランに従って保管エリアからパッケージを取ってきてパレットに載置する。パレタイズトリガは、タイムリミットトリガ、均一レイヤトリガ、保管容量トリガ、または載置開始コマンドの受信のうちの1つとすることができる。
【0013】
パッケージを保管するための一時的な保管エリアを使用し、パッケージをリアルタイムに識別し、パッケージのスタッキングプランをリアルタイムに(たとえば、パッケージが開始位置に到着したときに)生成することによって、ロボットシステムは、パッケージが、(a)ロボットシステムに提供される前に識別用属性によって(たとえば、バーコードを使用して)ラベル付けされ、(b)スタッキングシーケンスで受け取られる必要性をなくすことができ、これは配列マシンの必要性もなくす。そのため、リソースの消費を最小限にし、パッキング機構を改良することによって、開示した実施形態は改良されたロボットシステムをもたらす。
【0014】
本明細書に記載のロボットシステムは、システム動作中にパッキングプランを生成することができる。ロボットシステムは、様々なリアルタイム条件に基づいてシステム動作中にリアルタイムのおよび/または動的なパッキングプランを生成することができる。リアルタイム条件は、現在存在するまたは進行中の条件、たとえば、オブジェクトの実際のソースシーケンス/位置/姿勢、オブジェクト条件および/または要件、載置要件、および/または他のリアルタイム要因を含むことができる。ロボットシステムは、パッキングプランの処理時の現在の/進行中の条件および要因に従って、たとえば、トリガイベント(たとえば、受注/要求、出荷スケジュール、および/またはオペレータの入力)に応答して、パッキングプランをリアルタイムに生成することができる。いくつかの実施形態では、パッキングプランは、たとえば、対応するイベント(たとえば、再評価タイミング、パッキング/操作エラー、たとえば、衝突または紛失、および/または他の動的な条件の発生)に応答して、動的に(たとえば、最初に1つまたは複数の動作を開始した後に、たとえば、実際のパッキング動作が開始した後に)生成および/または調整することができる。
【0015】
従来のシステムとは異なり、本明細書に記載のロボットシステムは、現在の/ライブの条件(たとえば、オブジェクトのソースシーケンス/位置/姿勢、オブジェクト条件および/または要件など)に従ってリアルタイムに載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、離散化メカニズム(たとえば、処理、回路、関数、および/またはルーチン)に基づいてパッキングプランを生成することができる。たとえば、ロボットシステムは離散化メカニズムを使用して、離散化単位(すなわち、1つの離散エリア/スペース)に従って、オブジェクトおよび/または目標場所の物理的なサイズ/形状を記述することができる。ロボットシステムは、離散化単位を使用して想定オブジェクトを記述する離散化オブジェクトのプロフィール、および/または目標場所(たとえば、パレットの上面および/またはビン/ケース/ボックス内の空間/底面)を記述する離散化された目的地のプロフィールを生成することができる。したがって、ロボットシステムは、連続的な実世界の空間/エリアをコンピュータ読み取り可能なデジタル情報に変換することができる。さらに、離散化データによって、パッケージフットプリントを記述し、様々なパッケージ載置を比較するための計算複雑性を削減することが可能になり得る。たとえば、パッケージ寸法は、実世界の10進数ではなく、離散化単位の整数に対応することができ、これにより数学的計算が容易になる。
【0016】
ロボットシステムは、2次元(2D)載置プランを生成し評価することができる。ロボットシステムは、1つまたは複数の条件/ルールを満たす2D載置プランを選択し、選択した2D載置プランを3次元(3D)マッピング結果に変換することができる。3Dマッピング結果は、たとえば、2D載置プランに含まれるオブジェクトの高さ測定値と、レイヤ内のそれらの相対位置とに応じて、2D載置プランの高さを記述することができる。ロボットシステムは、垂直順序/シーケンスへの3Dマッピング結果を評価して、2D載置プランについての垂直シーケンスを含む3D載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、初期状態の(たとえば、あらゆるオブジェクトが目的地ゾーンに載置される前の)オブジェクトについて、および/またはパッキングされていない状態のままの(たとえば、1つまたは複数のオブジェクトが目的地ゾーンに載置された後の)オブジェクトについて、2D/3D載置プランを生成することができる。オブジェクトのグループ化および載置プランに関する詳細については後述する。
【0017】
以下に説明するロボットシステムは、リアルタイムの実装のための簡素化され合理化された処理アーキテクチャ/シーケンスを利用することができる。たとえば、ロボットシステムは(たとえば、デスクトップ、サーバなどのコンシューマコンピューティングデバイスを介して)、従来のシーケンサおよびシミュレータを利用することなく、リアルタイムのニーズ(たとえば、受注)、および/またはリアルタイムの利用可能性(たとえば、到着オブジェクトおよび/または現在アクセス可能なオブジェクトの出荷目録)に基づいて、パッキングプランを生成することができる。オフラインの状況で利用される場合、たとえば、従来のシーケンサおよびシミュレータを置き換えるために、ロボットシステムは、よりシンプルかつ安価なソリューションを使用してオフラインパッキングプランを提供することができる。
【0018】
したがって、ロボットシステムは、リアルタイム条件への適応に基づいて、オブジェクトをパッキングする効率、速度、および精度を向上させることができる。たとえば、本明細書に記載のシステムは、現在のニーズ(たとえば、受注)、パッケージの現在のステータス(たとえば、位置、向き、および/または数量/利用可能性)、および/またはスタック済み/載置済みのパッケージのリアルタイムステータスに合致する/対処する載置プランを生成することができる。したがって、ロボットシステムは、様々な、異なる/想定外の数量、位置、向き、および/またはシーケンスのパッケージを受け取り、パッキングすることができる。
【0019】
さらに、ロボットシステムは、従来のシステムにおいてオブジェクトをソースに並べるまたは載置するためにおよび/またはパッキング動作のために(たとえば、エラー処理のために)必要なはずの1つまたは複数の動作、機械(たとえば、シーケンスバッファ)、および/または人間の支援を無くすことによって、全体のコストを削減することができる。
【0020】
以下の説明では、本開示技術の完全な理解を提供するために、多数の具体的な詳細を記載している。他の実施形態では、本明細書で紹介する技術は、これらの具体的な詳細がなくとも実践することができる。他の例では、よく知られている特徴、たとえば、特定の関数またはルーチンについては、本開示を不必要に不明瞭にしないように、詳細には説明していない。本明細書における「実施形態」、「一実施形態」などへの言及は、説明している特定の特徴、構造、材料、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書におけるそのような文言の出現は、必ずしも全てが同一の実施形態を指すものではない。一方、そのような言及は、必ずしも相互に排他的ではない。さらに、特定の特徴、構造、材料、または特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせることができる。図面に示す様々な実施形態は説明のための表現にすぎず、必ずしも縮尺通りに描いていないことを理解されたい。
【0021】
よく知られており、ロボットシステムおよびサブシステムに関連付けられることが多いが、開示した技術のいくつかの重要な側面を不必要に不明瞭にし得る、構造または処理を説明する一部の詳細については、明瞭にするために以下の説明には記載していない。また、以下の開示では本技術の異なる態様のいくつかの実施形態を記載しているが、いくつかの他の実施形態は、このセクションに記載したものとは異なる構成または異なるコンポーネントを有し得る。したがって、開示した技術は、追加の要素を有し、後述の要素の一部を有さない他の実施形態を有し得る。
【0022】
以下で説明する本開示の多くの実施形態または態様は、プログラム可能コンピュータまたはプロセッサによって実行されるルーチンを含むコンピュータ実行可能命令またはプロセッサ実行可能命令の形態をとり得る。当業者であれば、開示した技術が以下に図示および説明した以外のコンピュータまたはプロセッサシステム上で実践され得ることを理解するであろう。本明細書に記載の技術は、後述のコンピュータ実行可能命令のうちの1つまたは複数を実行するように特別にプログラムされ、構成され、または構築された専用コンピュータまたはデータプロセッサにおいて実施することができる。したがって、本明細書で一般的に使用される「コンピュータ」および「プロセッサ」という用語は、任意のデータプロセッサを指し、インターネット機器およびハンドヘルドデバイス(たとえば、パームトップコンピュータ、ウェアラブルコンピュータ、セルラーまたはモバイル電話、マルチプロセッサシステム、プロセッサベースまたはプログラム可能コンシューマ電子機器、ネットワークコンピュータ、ミニコンピュータなど)を含むことができる。これらのコンピュータおよびプロセッサによって扱われる情報は、任意の好適な表示媒体、たとえば、液晶ディスプレイ(LCD)に提示することができる。コンピュータ実行可能タスクまたはプロセッサ実行可能タスクを実行するための命令は、ハードウェア、ファームウェア、またはハードウェアおよびファームウェアの組合せを含む、任意の好適なコンピュータ可読媒体内に、またはその媒体上に記憶することができる。命令は、たとえば、フラッシュドライブおよび/または他の好適な媒体を含む任意の好適なメモリデバイスに含めることができる。
【0023】
「結合される」および「接続される」という用語、ならびにこれらの派生形は、本明細書においてコンポーネント間の構造関係を記述するために使用され得る。これらの用語が互いに同義語であることが意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続される」は、2つ以上の要素が互いに直接接していることを示すために使用され得る。文脈において別途明記していない限り、「結合される」という用語は、2つ以上の要素が互いに直接的にもしくは間接的に(間に他の介在要素を介して)接していること、または2つ以上の要素が(たとえば、信号の送受信もしくは関数呼び出しなどのための因果関係のように)互いに協力または相互作用すること、あるいはその両方を示すために使用され得る。
【0024】
好適な環境
図1は、パッキング機構を有するロボットシステム100が動作し得る例示的な環境の図である。ロボットシステム100は、1つまたは複数のタスクを実行するように構成される1つまたは複数のユニット(たとえば、ロボット)を含むおよび/または通信することができる。パッキング機構の態様は、様々なユニットによって実践または実装することができる。
【0025】
図1に示す例では、ロボットシステム100は、倉庫または流通/出荷拠点における、荷下ろしユニット102、転置ユニット104(たとえば、パレタイズロボットおよび/またはピースピッカーロボット)、輸送ユニット106、積載ユニット108、またはこれらの組合せを含むことができる。ロボットシステム100内の各ユニットは、1つまたは複数のタスクを実行するように構成することができる。タスクを順番に組み合わせて目標を達成する動作を行うことができ、たとえば、トラックもしくはバンからオブジェクトを荷下ろしし、倉庫に保管する、または保管位置からオブジェクトを荷下ろしし、出荷準備することができる。他の例では、タスクは、オブジェクトを目標場所に(たとえば、パレットの上、および/またはビン/ケージ/ボックス/ケースの中に)載置することを含むことができる。後述のように、ロボットシステムは、オブジェクトを載置および/またはスタックするためのプラン(たとえば、載置位置/向き、オブジェクトを転置するためのシーケンス、および/または対応するモーションプラン)を導出することができる。各ユニットは、アクションのシーケンスを実行して(たとえば、その中の1つまたは複数のコンポーネントを動作させて)タスクを実行するように構成することができる。
【0026】
いくつかの実施形態では、タスクは、開始位置114からタスク位置116までの対象オブジェクト112(たとえば、実行しているタスクに対応するパッケージ、ボックス、ケース、ケージ、パレットなどのうちの1つ)の操作(たとえば、移動および/または向き変更)を含むことができる。たとえば、荷下ろしユニット102(たとえば、デバンニングロボット)は、対象オブジェクト112をキャリア(たとえば、トラック)内の位置からコンベヤベルト上の位置に転置するように構成することができる。また、転置ユニット104は、対象オブジェクト112をある位置(たとえば、コンベヤベルト、パレット、またはビン)から他の位置(たとえば、パレット、ビンなど)に転置するように構成することができる。他の例では、転置ユニット104(たとえば、パレタイズロボット)は、対象オブジェクト112をソース位置(たとえば、パレット、拾得エリア、および/またはコンベヤ)から目的地パレットに転置するように構成することができる。動作を完了する際に、輸送ユニット106は、対象オブジェクト112を転置ユニット104に関連付けられたエリアから積載ユニット108に関連付けられたエリアに転置することができ、積載ユニット108は、対象オブジェクト112を(たとえば、対象オブジェクト112を運ぶパレットを移動させることによって)転置ユニット104から保管位置(たとえば、棚上の位置)に転置することができる。タスクおよび関連するアクションに関する詳細については後述する。
【0027】
例示の目的で、ロボットシステム100は出荷センターの状況で説明しているが、ロボットシステム100は、他の環境/他の目的での、たとえば、製造、組み立て、パッケージング、ヘルスケア、および/または他のタイプの自動化のためのタスクを実行するように構成できることを理解されたい。また、ロボットシステム100は、
図1に示していない他のユニット、たとえば、マニピュレータ、サービスロボット、モジュール式ロボットなどを含むことができることも理解されたい。たとえば、いくつかの実施形態では、ロボットシステム100は、オブジェクトをケージカートまたはパレットからコンベヤまたは他のパレット上に転置するためのデパレタイズユニット、あるコンテナから他のコンテナにオブジェクトを転置するためのコンテナ切替ユニット、オブジェクトを包装するためのパッケージングユニット、オブジェクトをそれらの1つまたは複数の特性に応じてグループ化するためのソーティングユニット、オブジェクトをそれらの1つまたは複数の特性に応じて異なって操作するための(たとえば、ソートする、グループ化する、および/または転置するための)ピースピッキングユニット、あるいはこれらの組合せを含むことができる。
【0028】
好適なシステム
図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など)、および/または他の無線通信プロトコルに基づくことができる。
【0029】
プロセッサ202は、記憶デバイス204(たとえば、コンピュータメモリ)に記憶された命令(たとえばソフトウェア命令)を実行するように構成されるデータプロセッサ(たとえば、中央処理装置(CPU)、専用コンピュータ、および/またはオンボードサーバ)を含むことができる。いくつかの実施形態では、プロセッサ202は、
図2に示す他の電子/電気デバイスおよび/または
図1に示すロボットユニットに動作可能に結合される独立した/スタンドアローンのコントローラに含めることができる。プロセッサ202は、他のデバイスを制御して/インターフェースをとって、ロボットシステム100にアクション、タスク、および/または動作を実行させるプログラム命令を実施することができる。
【0030】
記憶デバイス204は、プログラム命令(たとえば、ソフトウェア)が記憶された非一時的コンピュータ可読媒体を含むことができる。記憶デバイス204のいくつかの例は、揮発性メモリ(たとえば、キャッシュおよび/またはランダムアクセスメモリ(RAM))、および/または不揮発性メモリ(たとえば、フラッシュメモリおよび/または磁気ディスクドライブ)を含むことができる。記憶デバイス204の他の例は、ポータブルメモリドライブおよび/またはクラウド記憶デバイスを含むことができる。
【0031】
いくつかの実施形態では、記憶デバイス204を使用して、さらに処理結果および/または所定のデータ/閾値を記憶し、これらへのアクセスを提供することができる。たとえば、記憶デバイス204は、ロボットシステム100によって操作され得るオブジェクト(たとえば、ボックス、ケース、および/または製品)の説明を含むマスターデータ252を記憶することができる。1つまたは複数の実施形態では、マスターデータ252は、ロボットシステム100によって操作されると想定されるオブジェクトについての寸法、形状(たとえば、可能な姿勢についてのテンプレートおよび/または異なる姿勢のオブジェクトを認識するためのコンピュータ生成モデル)、色彩設計、画像、識別情報(たとえば、バーコード、クイックレスポンス(QR)コード(登録商標)、ロゴなど、および/またはその想定位置)、想定重量、他の物理的/視覚的特性、あるいはこれらの組合せを含むことができる。いくつかの実施形態では、マスターデータ252は、オブジェクトに関する操作関連情報、たとえば、各オブジェクトの重心(CoM)位置、1つまたは複数のアクション/手順に対応する想定されるセンサ測定値(たとえば、力、トルク、圧力、および/または接触測定値に関するもの)、あるいはこれらの組合せを含むことができる。また、たとえば、記憶デバイス204はオブジェクト追跡データ254を記憶することができる。いくつかの実施形態では、オブジェクト追跡データ254は、スキャンまたは操作されるオブジェクトのログを含むことができる。いくつかの実施形態では、オブジェクト追跡データ254は、1つまたは複数の位置(たとえば、指定された拾得位置または降下位置および/またはコンベヤベルト)におけるオブジェクトの撮像データ(たとえば、写真、点群、ライブビデオフィードなど)を含むことができる。いくつかの実施形態では、オブジェクト追跡データ254は、1つまたは複数の位置におけるオブジェクトの位置および/または向きを含むことができる。
【0032】
通信デバイス206は、ネットワークを介して外部または遠隔のデバイスと通信するように構成される回路を含むことができる。たとえば、通信デバイス206は、受信器、送信器、変調器/復調器(モデム)、信号検出器、信号符号化器/復号器、コネクタポート、ネットワークカードなどを含むことができる。通信デバイス206は、1つまたは複数の通信プロトコル(たとえば、インターネットプロトコロル(IP)、無線通信プロトコルなど)に従って電気信号を送信、受信、および/または処理するように構成することができる。いくつかの実施形態では、ロボットシステム100は通信デバイス206を使用して、ロボットシステム100のユニット間で情報を交換する、および/または(たとえば、報告、データ収集、分析、および/またはトラブルシューティングの目的で)ロボットシステム100の外部のシステムまたはデバイスと情報を交換することができる。
【0033】
入出力デバイス208は、人間のオペレータとの間で情報を伝達および/または受信するように構成されるユーザインターフェースデバイスを含むことができる。たとえば、入出力デバイス208は、情報を人間のオペレータに伝達するためのディスプレイ210および/または他の出力デバイス(たとえば、スピーカー、ハプティックス回路、または触覚フィードバックデバイスなど)を含むことができる。また、入出力デバイス208は、制御デバイスまたは受信デバイス、たとえば、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインターフェース(UI)センサ(たとえば、モーションコマンドを受信するためのカメラ)、ウェアラブル入力デバイスなどを含むことができる。いくつかの実施形態では、ロボットシステム100は、入出力デバイス208を使用して、アクション、タスク、動作、またはこれらの組合せを実行する際に人間のオペレータと対話することができる。
【0034】
ロボットシステム100は、動き(たとえば、回転変位および/または並進変位)のために関節において接続された物理的な部材または構造部材(たとえば、ロボット式マニピュレータアーム)を含むことができる。構造部材および関節は、ロボットシステム100の用途/動作に応じて1つまたは複数のタスク(たとえば、把持、回転、接合など)を実行するように構成されるエンドエフェクタ(たとえば、グリッパ)を操作するように構成される運動連鎖を形成することができる。ロボットシステム100は、対応する関節周りでまたはその位置で構造部材を駆動または操作する(たとえば、変位させるおよび/または向き変更する)ように構成されるアクチュエーションデバイス212(たとえば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマーなど)を含むことができる。いくつかの実施形態では、ロボットシステム100は、対応するユニット/シャーシをある場所から他の場所へ輸送するように構成される輸送モータ214を含むことができる。
【0035】
ロボットシステム100は、たとえば、構造部材を操作するおよび/またはロボットユニットを輸送するためのタスクを実施するために使用される情報を取得するように構成されるセンサ216を含むことができる。センサ216は、ロボットシステム100の1つまたは複数の物理的な特性(たとえば、1つまたは複数の構造部材/その関節の状態、条件、および/または位置)、および/または周辺環境を検出または測定するように構成されるデバイスを含むことができる。センサ216のいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダなどを含むことができる。
【0036】
いくつかの実施形態では、たとえば、センサ216は、周辺環境を検出するように構成される1つまたは複数の撮像デバイス222(たとえば、視覚および/または赤外線カメラ、2Dおよび/または3D撮像カメラ、距離測定デバイス、たとえば、ライダーまたはレーダーなど)を含むことができる。撮像デバイス222は、マシン/コンピュータビジョン(たとえば、自動検査、ロボット案内、または他のロボットアプリケーションのためのもの)を介して処理され得るデジタル画像および/または点群などの、検出された環境の表現を生成することができる。以下でより詳細に説明するように、ロボットシステム100は(たとえば、プロセッサ202を介して)デジタル画像および/または点群を処理して、
図1の対象オブジェクト112、
図1の開始位置114、
図1のタスク位置116、対象オブジェクト112の姿勢、開始位置114および/または姿勢に関する信頼基準、あるいはこれらの組合せを識別することができる。
【0037】
対象オブジェクト112を操作するために、ロボットシステム100は(たとえば、上述の様々な回路/デバイスを介して)、指定領域(たとえば、トラック内またはコンベヤベルト上などの拾得位置)の画像を撮影し分析して、対象オブジェクト112およびその開始位置114を識別することができる。同様に、ロボットシステム100は、他の指定領域(たとえば、オブジェクトをコンベヤ上に載置するための降下位置、オブジェクトをコンテナ内に載置するための位置、またはスタッキング目的のパレット上の位置)の画像を撮影し分析して、タスク位置116を識別することができる。たとえば、撮像デバイス222は、拾得エリアの画像を生成するように構成される1つまたは複数のカメラ、および/またはタスクエリア(たとえば、降下エリア)の画像を生成するように構成される1つまたは複数のカメラを含むことができる。撮影画像に基づいて、後述のように、ロボットシステム100は、開始位置114、タスク位置116、関連する姿勢、パッキング/載置プラン、転置/パッキングシーケンス、および/または他の処理結果を決定することができる。パッキングアルゴリズムに関する詳細については後述する。
【0038】
いくつかの実施形態では、たとえば、センサ216は、構造部材(たとえば、ロボットアームおよび/またはエンドエフェクタ)および/またはロボットシステム100の対応する関節の位置を検出するように構成される位置センサ224(たとえば、位置エンコーダ、電位差計など)を含むことができる。ロボットシステム100は、位置センサ224を使用して、タスクの実行中に構造部材および/または関節の位置および/または向きを追跡することができる。
【0039】
離散化モデル処理
図3Aおよび
図3Bは、本技術の1つまたは複数の実施形態による、オブジェクトについて計画し、パッキングするのに使用される離散化データの図である。
図3Aは離散化オブジェクトを示し、
図3Bはオブジェクトのパッキングおよびその計画のための離散化パッキング台を示す。たとえば、
図1のロボットシステム100は(たとえば、
図2のプロセッサ202を介して)、実世界のオブジェクト(たとえば、パッケージ、パレット、および/またはタスクに関連する他のオブジェクト)の連続面/エッジを離散的な対応物(たとえば、単位長さおよび/または単位面積)にマッピングすることができる。また、ロボットシステム100は、
図2のマスターデータ252に記憶された想定オブジェクトの離散化モデル/表現を含むことができる。
【0040】
いくつかの実施形態では、
図3Aに示すように、ロボットシステム100は離散化オブジェクトモデル302を使用して、オブジェクトのスタッキング載置を計画する/導出することができる。離散化オブジェクトモデル302(点線で図示)は、離散化単位(たとえば、単位長さ)に従って、既知のおよび/または想定オブジェクト(たとえば、パッケージ、ボックス、ケースなど)についての外観の物理的な寸法、形状、エッジ、面、またはこれらの組合せ(実線で図示)を表現することができる。いくつかの実施形態では、
図3Bに示すように、ロボットシステム100は、1つまたは複数の離散化台モデル304を使用して、オブジェクトのスタッキング載置を計画する/導出することができる。離散化台モデル304は、離散化単位に従って載置面(たとえば、パレットの上面)を表現することができる。いくつかの実施形態では、離散化単位は、システムオペレータ、システム設計者、所定の入力/設定、またはこれらの組合せによって事前設定された長さを含むことができる。
【0041】
いくつかの実施形態では、離散化台モデル304は、1つまたは複数の標準サイズのパレット(たとえば、1.1m×1.1mのパレット)の上面視を含むことができる。したがって、離散化台モデル304は、ロボットシステム100よって利用されるグリッド方式に従う、水平面(たとえば、x−y平面)に沿ったパレット上面のピクセル化された2D表現に対応することができる。いくつかの実施形態では、離散化オブジェクトモデル302は、ロボットシステム100によって想定される/既知のオブジェクトについての上面視(たとえば、
図3Aの左側に示すx−y平面)、および/または水平視/側面視(たとえば、右側に示すx−z平面)を含むことができる。したがって、離散化オブジェクトモデル302は、オブジェクトのピクセル化された2D/3D表現に対応することができる。
【0042】
説明用の例として、ロボットシステム100は、単位ピクセル310(たとえば、離散化単位に従う1つまたは複数の次元を有するポリゴン、たとえば、四角形)を使用して、対象オブジェクトのエリア/面を(たとえば、離散化オブジェクトモデル302を介して)記述し、荷台を(たとえば、離散化台モデル304を介して)記述することができる。したがって、ロボットシステム100は、x−y軸に沿ってオブジェクトおよび荷台をピクセル化することができる。いくつかの実施形態では、単位ピクセル310(たとえば、離散化単位)のサイズは、オブジェクトの寸法および/または荷台の寸法に応じて変化することができる。また、単位ピクセル310のサイズを(たとえば、事前設定されたルール/式、および/またはオペレータ選択を介して)調整して、必要とされるリソース(たとえば、計算時間、必要メモリなど)をパッキング精度とバランスさせることができる。たとえば、サイズが減少すると、計算時間およびパッキング精度が増加することができる。したがって、調整可能な単位ピクセル310を使用してパッキングタスク(たとえば、対象パッケージおよびパッキング台)を離散化することによって、パッケージをパレタイズするための柔軟性が向上する。ロボットシステム100は、独特のシナリオ、パターン、および/または環境に応じて、計算資源/時間とパッキング精度とのバランスを制御することができる。
【0043】
図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を生成および/または利用することができる。
【0044】
いくつかの実施形態では、ロボットシステム100は、(たとえば、第3のオブジェクトモデル333および/または第4のオブジェクトモデル334などの離散化オブジェクトモデル302のために)オブジェクトの実際の寸法を端数切り上げして、単位ピクセル310がオブジェクトの実際の周縁を超えて広がるようにすることができる。いくつかの実施形態では、ロボットシステム100は、(たとえば、離散化台モデル304のために)台表面の実際の寸法を端数切り捨てして、単位ピクセル310がオブジェクトの実際の周縁に覆われるおよび/または内側に含まれるようにすることができる。
【0045】
離散化データ/表現に基づいて、ロボットシステム100は、パッケージを載置パレット340上に載置/パッキングするための載置プラン350を生成することができる。載置プラン350は、対象パッケージについての載置パレット340上の計画された位置を含むことができる。ロボットシステム100は、積載/パレタイズに指定された利用可能パッケージのうちの1つまたは複数を載置するための載置プラン350を生成することができる。たとえば、ロボットシステム100は、利用可能パッケージ(たとえば、受け取ったパッケージおよび/または持ち帰り用の注文のパッケージ)からパッケージのセットをスタックするための載置プラン350を生成することができる。
【0046】
ロボットシステム100は、載置ルール、載置条件、パラメータ、要件などのセットに従って載置プラン350を生成することができる。いくつかの実施形態では、ロボットシステム100は、そのセットに従って、たとえば、パッケージタイプ(たとえば、パッケージタイプ321−325)、パッケージの高さ、顧客指定の優先度、脆性(たとえば、その上にスタックされるパッケージなどについての最大支持重量)、重量範囲、またはこれらの組合せに応じてグループ化されたパッケージに基づいて、載置プラン350を生成することができる。いくつかの実施形態では、ロボットシステム100は、たとえば、より高いパッケージをデパレタイズユニットからより遠くにスタックするなどのスタッキング条件に従って載置プラン350を生成することができる。載置ルール、条件、パラメータ、要件などの他の例は、パッケージ寸法、無衝突要件、スタック安定性、グループ化条件(たとえば、パッケージタイプ、パッケージ高さ、優先度など)、パッケージ離間要件もしくはその欠如、総積載パッケージの最大化、またはこれらの組合せを含むことができる。載置計画に関する詳細については後述する。
【0047】
図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載置プランを生成することができる。
【0048】
いくつかの実施形態では、ロボットシステム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つまたは複数の他のレイヤの下/下方に載置することができる。
【0049】
説明用の例として、ロボットシステム1002Dプランを導出する際に、載置されたオブジェクトの高さを推定し考慮することができる。たとえば、ロボットシステム100は、
図3Dに示すように、(たとえば、マスターデータに記憶された)オブジェクトの高さをピクセル化することができる。また、ロボットシステム100は、載置されたオブジェクトの所定の高さデータを、オブジェクトによって占有される各単位ピクセルにマッピングすることができる。高さが各ピクセルにマッピングされた状態で、ロボットシステム100は、得られた2D載置プラン350の載置面を導出する。各載置面は、たとえば、導出された表面を形成するオブジェクトの高さが同一または類似しているために、上にオブジェクトを載置し支持することが可能な導出された表面/平面に対応することができる。
【0050】
ロボットシステム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載置計画についての詳細は後述する。
【0051】
図3Cは、本技術の1つまたは複数の実施形態による載置計画処理の図である。ロボットシステム100は(たとえば、
図2の1つまたは複数のプロセッサ202を介して)、利用可能パッケージ362のセットについて
図3Bの載置プラン350を導出することができる。利用可能パッケージ362は、エグレス(egress)出荷および/または保管のためにパッキングされる必要があるオブジェクトに対応することができる。たとえば、利用可能パッケージ362は、イングレス(ingress)出荷を介して受け取られた到着オブジェクト、および/またはエグレス出荷のために注文された保管されたオブジェクトに対応することができる。いくつかの実施形態では、ロボットシステム100は出荷目録、注文リストなどを使用して、リアルタイムに、たとえば、目録、リストなどの受け取りにすぐに(すなわち、閾値期間内に)応答して、利用可能パッケージ362を識別することができる。したがって、ロボットシステム100は、識別された利用可能パッケージ362を使用して、載置プラン350をリアルタイムに導出することができる。したがって、パッケージの仮の数/セット/組み合わせを利用してリアルタイム条件とは無関係に適用されるプランを導出するオフラインパッキングシミュレータの代わりに、ロボットシステム100は、リアルタイム条件、利用可能性、および/または需要を使用して載置プラン350を導出することができる。いくつかの実施形態では、ロボットシステム100は、たとえば、出荷拠点および/または倉庫など、オブジェクトを受け取り、保管し、および/または送る場所にあるデバイス(たとえば、プロセッサ202のうちの1つまたは複数)を使用することができる。
【0052】
いくつかの実施形態では、以下に詳述するように、ロボットシステム100は、利用可能パッケージ362をグループ化するおよび/または配列することができる。ロボットシステム100は、利用可能パッケージ362の順序付きセットを使用して載置プラン350を導出することができる。ロボットシステム100は、利用可能パッケージ362に対して一意の載置位置/組み合わせを決定し評価して、載置プラン350を導出することができる。換言すれば、ロボットシステム100は、可能な載置組み合わせ364のセットを決定し、所定の要件、条件、重量、コスト、その後の影響、またはこれらの組合せのセットに従って、それらを評価する(たとえば、スコア付けする)ことができる。評価に基づいて、ロボットシステム100は、載置組み合わせを選択して載置プラン350を導出することができる。
【0053】
少なくとも1つの実施形態では、ロボットシステム100は、配列されたパッケージの載置を反復的に評価するアルゴリズムを使用して載置プラン350を導出することができる。
図3Cに示すように、たとえば、ロボットシステム100は、利用可能パッケージ362の中の最初のパッケージについての初期載置を決定することによって、導出を開始することができる。したがって、ロボットシステム100は、
図3Aの対応する離散化オブジェクトモデル302を
図3Bの離散化台モデル304上の初期位置(たとえば、コーナー、中央位置、および/または他の事前設定位置)に重ねることができる。ロボットシステム100は、利用可能パッケージ362から載置済みのパッケージ(たとえば、最初のパッケージ)を除去することに基づいて、残余パッケージ372を追跡することができる。
【0054】
初期載置に基づいて、ロボットシステム100は、利用可能パッケージ362の中の2番目のパッケージについての可能な載置のセットを決定することができる。ロボットシステム100は、所定のルール、パターン、またはこれらの組合せに従って可能な載置のセットを決定することができる。たとえば、ロボットシステム100は、載置済みのパッケージに対する(たとえば、載置済みのパッケージ(複数可)に対する)位置のパターンに従って、載置位置を決定することができる。また、ロボットシステム100は、パッケージのうちの1つまたは複数の間で必要とされる最小/最大の離間距離またはその欠如に基づいて、載置位置を決定することができる。さらに、ロボットシステム100は、90度などの所定の量に従ってパッケージ(すなわち、対応する離散化オブジェクトモデル302)を回転させることに基づいて、載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、所定の閾値および/またはパターンに従って載置候補を限定することができる。さらに、ロボットシステム100は、それに従って残余パッケージ372を更新することができる。
【0055】
ロボットシステム100は、停止条件に達するまで、上述の処理を反復し、利用可能パッケージ362を反復的に処理することができる。停止条件のいくつかの例は、全てのパッケージが載置された(すなわち、残余パッケージ372が空である)こと、載置を改善できない(たとえば、前の階層/反復と同じ評価スコアである)こと、これ以上パッケージを離散化台モデル304上に載置できないこと、またはこれらの組合せを表すことができる。
【0056】
いくつかの実施形態では、ロボットシステム100は探索木374を使用して、可能な載置と、対応する可能な載置組み合わせ364とを追跡することができる。探索木374の根は初期載置に対応することができ、各レベルまたは階層は利用可能パッケージ362の中の後続のパッケージの可能な載置を含むことができる。異なる階層を接続して、パッケージのセットについての一意の載置組み合わせに対応する枝を形成することができる。
【0057】
各パッケージの可能な載置について、ロボットシステム100は、(たとえば、
図3Cにおいて「X」で表される)冗長なフットプリントを識別し排除することができる。たとえば、探索木374の各階層において、ロボットシステム100は、可能な載置位置/組み合わせの得られたフットプリントを比較する(たとえば、重ねる)ことができる。比較に基づいて、ロボットシステム100は、得られたフットプリントの重複を排除することができる。いくつかの実施形態では、ロボットシステム100はさらに、得られたフットプリントの転置、回転、および/または反転バージョンを比較して、関連する重複を排除することができる。たとえば、ロボットシステム100は、1つのフットプリントを90度回転させ、および/または1つまたは複数の反転ライン(たとえば、対角に伸びる対角線、x方向および/またはy方向に伸びる二等分線、またはこれらの組合せ)にわたってフットプリントを転置し、これを他のフットプリントと比較することができる。
【0058】
また、各パッケージの可能な載置について、ロボットシステム100は、1つまたは複数の要件/制約に違反する載置を識別し排除することができる。要件/制約の一例は、衝突確率に基づくことができる。ロボットシステム100は、既存のフットプリント、パッケージの1つまたは複数の寸法、転置ロボットの位置、前のイベントまたは履歴、あるいはこれらの組合せに応じて、各載置位置についての進入路と、対応する衝突確率とを計算することができる。ロボットシステム100は、衝突確率が所定の閾値を超える載置を排除することができる。要件/制約の他の例は、パッケージをスタックする(すなわち、1つまたは複数の支持パッケージのすぐ上に/上を覆って載置する)ための支持重量とすることができる。載置位置の下のパッケージのうちの1つまたは複数について、ロボットシステム100は、載置されたパッケージの重量に基づいて、支持重量(すなわち、すぐ上を覆うパッケージまたはその一部の合計重量)を計算することができる。ロボットシステム100は、載置位置の下のパッケージのうちの1つまたは複数について、支持重量が脆性要件(たとえば、最大支持可能重量)に違反する(たとえば、要件を超えるまたは要件から閾値範囲内である)載置を排除することができる。
【0059】
いくつかの実施形態では、ロボットシステム100は、優先度キュー376(たとえば、ヒープ構造など)を使用して、載置組み合わせ364を追跡および/または評価することができる。優先度キュー376は、一連の設定に従って載置組み合わせ364を並べることができる。ロボットシステム100は、1つまたは複数の所定の基準に従って各載置組み合わせ364を評価またはスコア付けすることができる。基準は、載置済みのアイテムに関連する1つまたは複数のコスト、および/または現在の載置が今後の載置または候補にどのように影響するかに関連する1つまたは複数のヒューリスティックスコアを含むことができる。
【0060】
基準の一例は、フットプリント密度の最大化を含むことができる。ロボットシステム100は、パッケージのグループの外周382について、フットプリント密度を計算することができる。いくつかの実施形態では、外周382は、パッケージのグループの露出した/外周のエッジに基づいて決定することができる。ロボットシステム100はさらに、2つ以上のエッジを伸ばして交点を発見することによって、および/またはフットプリントの1つまたは複数のコーナーを結ぶ線を描くことによって、周囲の/関連するエリアを囲むことができる。ロボットシステム100は、実際の占有面積384(たとえば、影付きエリアに対応する単位ピクセル310の数)と、空き面積386(たとえば、囲まれた/関連するエリアに対応する単位ピクセル310の数)との比として、フットプリント密度を計算することができる。ロボットシステム100は、空き面積386を最小化する載置プランを(たとえば、より高い/より低いスコアを割り当てることによって)優先するように構成することができる。
【0061】
スタッキングルール
図4A〜
図4Cは、本技術の1つまたは複数の実施形態によるスタッキングルールの図である。ロボットシステム100はスタッキングルールを使用して、パッケージを互いの上に載置することができ、たとえば、1つまたは複数のパッケージのレイヤ(複数可)を、1つまたは複数の他のパッケージのレイヤの上にスタック/載置することができる。ロボットシステム100は、スタッキングルールを使用してスタックされたパッケージの安定性を向上させることができ、パレットの移動中に任意のパッケージが滑るおよび/または傾くことを防ぐことができる。例示の目的で、
図4A〜
図4Cに、上のパッケージ452が1つまたは複数の支持パッケージ454のすぐ上にあり、これによって支持される(たとえば、直接接する)ことを示す。
【0062】
図4Aに、3D載置(たとえば、3D載置プラン350)を生成するために使用される水平オフセットルール402を示す。水平オフセットルール402は、スタックされたアイテム間の垂直エッジ/面の水平オフセットを制限するための規制、要件、またはこれらの組合せを含むことができる。たとえば、水平オフセットルール402は、重なり要件422、突出要件424、またはこれらの組合せに基づくことができる。重なり要件422は、スタックされたパッケージの間の最小量(たとえば、長さ、幅、および/または表面積の割合または比)の重なりを含むことができる。いくつかの実施形態では、重なり要件422は、上のパッケージ452の水平寸法/表面積の最小量が支持パッケージ454のそれと重なることを要求することができる。突出要件424は、支持パッケージ454の周辺エッジ/面を超えて水平に伸びる上のパッケージ452の一部など、最大量(たとえば、長さ、幅、および/または表面積の割合または比)の突出を含むことができる。
【0063】
いくつかの実施形態では、水平オフセットルール402は、重量、寸法、および/または重心(CoM)位置412に基づくことができる。たとえば、重なり要件422および/または突出要件424は、CoM位置412に基づくことができ、たとえば、上のCoM位置と支持パッケージ454の水平エッジ/面との距離、および/または突出距離(たとえば、支持パッケージ454の周縁(複数可)を超えて伸びる上のパッケージ452の一部の水平方向に沿った度合い)に対する、上のパッケージ452および支持パッケージ454のCoM位置412間の距離を評価するようにする。いくつかの実施形態では、水平オフセットルール402は、上のパッケージ452および支持パッケージ454のCoM位置412が閾値内であることを要求するCoMオフセット要件426に基づくことができる。閾値は、所定の距離、水平寸法に対するCoM位置412間のオフセット距離の比の限界値、突出距離、重なり距離、またはこれらの組合せを含むことができる。
【0064】
図4Bに、3D載置(たとえば、スタッキングプラン)を生成するために使用される支持物離間ルール404を示す。支持物離間ルール404は、支持パッケージ454間の水平離間距離414を制限するための規制、要件、またはこれらの組合せを含むことができる。水平離間距離414は、隣接する支持パッケージ454の周面/周縁間の水平距離に対応することができる。いくつかの実施形態では、支持物離間ルール404は、上のパッケージ452と支持パッケージ454との重なった面の位置および/または量にさらに基づくことができる。たとえば、支持物離間ルール404は、水平離間距離414が任意の突出距離よりも所定の割合だけ長いことを要求することができる。また、支持物離間ルール404は、水平離間距離414が上のパッケージ452のCoM位置412の下に伸びることを要求することができる。
【0065】
図4Cに、3D載置(たとえば、3D載置プラン350)を生成するために使用される垂直オフセットルール406を示す。垂直オフセットルール406は、支持パッケージ454の垂直位置間の支持高低差416を制限するための規制、要件、またはこれらの組合せを含むことができる。支持高低差416は、対応する支持パッケージ454の頂部間の、たとえば、対応する支持パッケージ454上に載置された上のパッケージ452に接する可能性が高い部分同士の間の垂直距離に対応することができる。いくつかの実施形態では、垂直オフセットルール406は、支持高低差416が、1つまたは複数のパッケージを支持パッケージ454の上にスタックするための所定の閾値要件を下回ることを必要とすることができる。いくつかの実施形態では、支持物離間ルール404は、レイヤの高さに基づいて異なることができる。たとえば、上のパッケージ452(たとえば、支持されるパッケージ)が最上位レイヤの一部である場合、支持高低差416の限度は下位レイヤよりも大きくすることができる。
【0066】
ロボットシステム100は、スタッキングルールに従ってスタッキングプラン(たとえば、複数の2D載置プランの3Dの組み合わせ)を生成することができる。たとえば、ロボットシステム100は、高さ要件(たとえば、パッケージグループの高さを閾値距離内に維持するためのもの)に従って、2D載置プラン(たとえば、
図3Bの載置プラン350)を生成することができる。続いて、ロボットシステム100は、2D載置プランを垂直に重ねる(たとえば、スタックする)ことに基づいて、スタッキングプランを生成することができる。
【0067】
スタッキングシーケンス
図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のすぐ上にあり、接することができる。
【0068】
以下に詳述するように、ロボットシステム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のパッケージを自由に計画し、および/またはスタックすることができる。
【0069】
また、いくつかの実施形態では、ロボットシステム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」パッケージの後に載置することができる。
【0070】
他の代替的実施形態では、ロボットシステム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を計算することができる。
【0071】
動作フロー
図6は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100を動作させる方法600についての流れ図である。方法600は、パッケージ(たとえば、ケースおよび/またはボックス)を台(たとえば、パレット)に載置するための、および/またはそれに従ってパッケージを載置するための2D/3Dパッキングプランを生成するためのものとすることができる。方法600は、
図2の記憶デバイス204のうちの1つまたは複数に記憶された命令を、
図2のプロセッサ202のうちの1つまたは複数によって実行することに基づいて、実施することができる。
【0072】
ブロック602において、ロボットシステム100は、パッケージセット(たとえば、
図3Cの利用可能パッケージ362)と、目的地(たとえば、パッケージを受け取るためのパレットおよび/またはコンテナなどの、
図1のタスク位置116)とを識別することができる。たとえば、ロボットシステム100は、パッキングに利用可能な、ソースに位置する、載置するために指定された、および/または注文/要求/目録内にリスト化されたパッケージを含む利用可能パッケージ362を表すパッケージセットを識別することができる。また、ロボットシステム100は、パッケージを載置可能なタスク位置116のエリア(たとえば、
図3の載置パレット340などのパレットの一番上の積載面)のサイズまたは寸法を特定する。いくつかの実施形態では、ロボットシステム100は、パレットのサイズ、寸法、タイプ、またはこれらの組合せを特定することができる。
【0073】
ブロック604において、ロボットシステム100は、利用可能パッケージ362および/またはタスク位置116を表す、パッケージセットに対応する離散化モデル(たとえば、
図3Aの離散化オブジェクトモデル302および/または
図3Bの離散化台モデル304)を生成および/またはアクセスすることができる。いくつかの実施形態では、ロボットシステム100は、オブジェクトおよび/または台エリア(たとえば、
図3Bの単位ピクセル310に従うパレット上面)の物理的な寸法を分割することに基づいて、(たとえば、リアルタイムに、すなわち、たとえば、注文を受けた後および/またはパッキング動作を開始する前に、あるいはオフラインで)離散化モデルを生成することができる。単位ピクセル310は、(たとえば、製造業者、注文した顧客、および/またはオペレータによって)、たとえば、1ミリメートル(mm)もしくは1/16インチ(in)またはそれ以上(たとえば、5mmもしくは20mm)など、事前に決定することができる。いくつかの実施形態では、単位ピクセル310は、パッケージのうちの1つまたは複数および/または台の寸法またはサイズに基づくことができる(たとえば、割合または分数)。
【0074】
いくつかの実施形態では、ロボットシステム100は、記憶デバイス204および/または他のデバイス(たとえば、
図2の通信デバイス206を介してアクセスされるパッケージ供給元の記憶デバイス、データベース、および/またはサーバ)に記憶された離散化モデルにアクセスすることができる。ロボットシステム100は、利用可能パッケージ362および/またはタスク位置116を表す所定の離散化モデルにアクセスすることができる。たとえば、ロボットシステム100は、
図2のマスターデータ252(たとえば、所定のテーブルまたはルックアップテーブル)において利用可能パッケージおよびそれらに対応するモデルを検索することによって、利用可能パッケージ362に対応する離散化オブジェクトモデル302にアクセスすることができる。同様に、ロボットシステム100は、利用可能パッケージが載置されることになる識別されたパレットなどの台を表す離散化台モデル304にアクセスすることができる。
【0075】
ブロック606において、ロボットシステム100は、パッケージグループ(たとえば、利用可能パッケージのサブグループ)を決定することができる。ロボットシステム100は、識別された台(たとえば、載置パレット340)に載置するために、利用可能パッケージ362に基づいてパッケージグループを決定することができる。ロボットシステム100は、利用可能パッケージ362の1つまたは複数の特性における類似性および/またはパターンに応じて、パッケージグループを決定することができる。いくつかの実施形態では、ブロック621に示すように、ロボットシステム100は、グループ化条件/要件に従って利用可能パッケージ362をグループ化することによって、パッケージグループを決定することができる。グループ化条件/要件のいくつかの例は、パッケージ優先度(たとえば、1つまたは複数の顧客によって指定されるもの)、脆性レーティング(たとえば、パッケージによって支持可能な最大重量)、重量、パッケージ寸法(たとえば、パッケージ高さ)、パッケージタイプ、またはこれらの組合せを含むことができる。利用可能パッケージ362をグループ化する際に、ロボットシステム100は、グループ化条件/要件に合致する利用可能パッケージ362の様々な特性をマスターデータ252において検索することができる。
【0076】
ブロック608において、ロボットシステム100は、利用可能パッケージ362および/またはそのグループ(すなわち、パッケージグループ)に対する処理順序(たとえば、載置位置を検討/導出するシーケンス)を計算することができる。いくつかの実施形態では、ブロック622に示すように、ロボットシステム100は、1つまたは複数の配列条件/要件に従って処理順序を計算することができる。たとえば、ロボットシステム100は、たとえば、パッケージ数が多いパッケージグループを載置計画において早く処理するために、各グループ内のパッケージ数に応じて、パッケージグループの載置計画を優先することができる。いくつかの実施形態では、配列条件は、たとえば、重量範囲、脆性レーティングなどについて、グループ化条件と重複することができる。たとえば、ロボットシステム100は、より重いおよび/またはより脆弱でないパッケージの処理を優先して、より早く処理し、および/またはより下位レイヤに載置するようにすることができる。
【0077】
いくつかの実施形態では、ロボットシステム100は、合計水平面積に応じて載置計画を優先することができる。ロボットシステム100は、マスターデータ252において指定された情報を使用して、グループ内のパッケージの上面の表面積を(たとえば、対応する幅と長さとを乗算することによって)計算するまたはアクセスすることができる。合計水平面積を計算する際に、ロボットシステム100は、同一のタイプであるおよび/または閾値範囲内の高さを有するパッケージの表面積を加算することができる。いくつかの実施形態では、ロボットシステム100は、より大きい合計水平面積を有するグループの載置計画を優先して、より早く処理し、および/またはより下位レイヤに載置するようにすることができる。
【0078】
1つまたは複数の実施形態について、ロボットシステム100は、利用可能パッケージ362の識別子および/または数量をバッファにロードすることができる。ロボットシステム100は、グループに従ってバッファ内の識別子を配列することができる。さらに、ロボットシステム100は、処理順序に応じてバッファ内の識別子を配列することができる。したがって、バッファ内の配列された値は、
図3Cに示す利用可能パッケージ362および/または残余パッケージ372に対応することができる。
【0079】
ブロック624に示すように、たとえば、ロボットシステム100は、
図5の対応するスタッキングプラン502を実施する前に、たとえば、パッケージセット内のパッケージのいずれかが台に載置される前に、利用可能パッケージ362の初期セット(たとえば、パッケージセット)に対する処理順序を計算することができる。いくつかの実施形態では、ブロック626に示すように、ロボットシステム100は、対応するスタッキングプラン502の開始後または実施中に、利用可能パッケージ362の残余セットに対する処理順序を計算することができる。たとえば、ブロック616からのフィードバックループによって示すように、ロボットシステム100は、1つまたは複数のトリガ条件に従って、残余セット(たとえば、台に転置されていないおよび/またはソース位置に残っている利用可能パッケージ362の一部)に対する処理順序を計算することができる。例示的なトリガ条件は、スタッキングエラー(たとえば、パッケージの紛失または落下)、衝突イベント、所定の再トリガタイミング、またはこれらの組合せを含むことができる。
【0080】
ブロック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についての載置位置を反復的に導出することができる。
【0081】
いくつかの実施形態では、ロボットシステム100は、パッケージグループに基づいて載置プラン350を生成することができる。たとえば、ロボットシステム100は、あるパッケージグループ内のパッケージの配置を、他のグループ内のパッケージの載置を検討する前に、決定することができる。パッケージグループ内のパッケージがレイヤから溢れる場合(すなわち、離散化台モデル304の1つのレイヤまたは1つのインスタンスに収まらない場合)、および/または1つのグループの全てのパッケージを載置した後、ロボットシステム100は、次のグループ内のパッケージについての位置を、離散化台モデル304内の任意の残っている/占有されていないエリアに割り当てることができる。ロボットシステム100は、離散化台モデル304の残余スペースに収まらない未割り当てパッケージがなくなるまで、割り当てを反復的に繰り返すことができる。
【0082】
同様に、ロボットシステム100は、処理順序に基づいて(たとえば、処理順序に応じたパッケージグループに基づいて)載置プラン350を生成することができる。たとえば、ロボットシステム100は、処理順序に応じてパッケージおよび/またはグループを割り当てることに基づいて、テスト配置を決定することができる。ロボットシステム100は、最も早く配列されたパッケージ/グループにテスト配置の最初の載置を割り当て、次いで、処理順序に応じて後続のパッケージ/グループをテストする/割り当てることができる。いくつかの実施形態では、ロボットシステム100は、レイヤにわたって(たとえば、載置プラン350のインスタンスにわたって)パッケージ/グループに対する処理順序を保持することができる。いくつかの実施形態では、ロボットシステム100は、各レイヤが充填された後、処理順序を再計算し更新することができる(
図6に破線のフィードバック線で図示)。
【0083】
いくつかの実施形態では、上述の処理の説明用の例として、ロボットシステム100は、パッケージセット内の異なるパッケージタイプ(たとえば、
図3Aの第1、第2、第3、第4、および/または第5のそれぞれのパッケージタイプ321−325)を識別することによって、2Dプランを生成することができる。換言すれば、ブロック632において、ロボットシステム100は、各パッケージグループおよび/またはパッケージセット内の(たとえば、パッケージタイプによって表される)独特のパッケージを識別することができる。
【0084】
ブロック634において、ロボットシステム100は、各利用可能パッケージ362について載置位置を(たとえば、反復的に)導出することができる。ブロック636において、ロボットシステム100は、処理順序に応じてシーケンスの最初の独特のパッケージについての初期載置位置を決定することができる。ロボットシステム100は、上述のように所定のパターンに従って初期載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、独特のパッケージごとに初期載置を計算することができる。得られた初期載置はそれぞれ、たとえば、反復にわたって載置プラン350を追跡することによって、一意の載置組み合わせ(たとえば、
図3Cの探索木374のインスタンス)に発展させることができる。ブロック638において、ロボットシステム100は、処理順序および/または上述の残余パッケージ372に応じて、後続のパッケージについての載置位置候補を導出し追跡することができる。したがって、ロボットシステム100は、
図3Cの載置組み合わせ364を反復的に導出することができる。
【0085】
載置組み合わせ364(たとえば、載置位置候補)を導出する際に、ロボットシステム100は、スタッキングシナリオ候補(たとえば、利用可能パッケージについての一意の載置位置の可能な組み合わせ)を反復的に導出し評価することに基づいて、対応するパッケージの離散化オブジェクトモデル302の位置をテスト/評価することができる。各スタッキングシナリオ候補は、上述のシーケンスに従ってパッケージについての一意の可能な位置を(たとえば、載置位置についての所定のシーケンス/ルールに従って)識別することに基づいて、導出することができる。スタッキングシナリオ候補および/または一意の載置位置は、1つまたは複数の載置基準(たとえば、要件、制約、載置コスト、および/またはヒューリスティックスコア)に従って評価することができる。たとえば、載置基準は、選択された位置に載置される場合、離散化オブジェクトモデル302が離散化台モデル304の水平境界線内に完全に収まることを要求することができる。また、載置基準は、離散化オブジェクトモデル302の載置が、隣接載置または離間要件などのために、(たとえば、水平方向などに沿った)初期載置位置および/または前の載置位置に対して閾値距離内または閾値距離を超えることを要求することができる。載置基準の他の例は、1つまたは複数のパッケージ寸法(たとえば、高さ)、脆性レーティング、パッケージ重量範囲、またはこれらの組合せの差が最小であるパッケージを隣接して載置するための設定を含むことができる。いくつかの実施形態では、載置基準は、基準位置(たとえば、パレタイズロボットの位置)に対するレイヤ内の割り当て済みのパッケージの位置および/または特性(たとえば、高さ)に対応し得る衝突確率を含むことができる。したがって、ロボットシステム100は、パッケージ載置位置の複数の一意の載置組み合わせ(すなわち、各レイヤについての載置プラン候補、および/または各レイヤが複数のレイヤ含むスタッキングシナリオ候補)を生成することができる。いくつかの実施形態では、ロボットシステム100は、載置反復にわたって探索木374を生成し更新することに基づいて、組み合わせの載置を追跡することができる。
【0086】
ブロック640において、ロボットシステム100は、各組み合わせ/パッケージ載置についての載置スコアを計算/更新することができる。ロボットシステム100は、載置条件/設定(たとえば、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件)のうちの1つまたは複数に従って載置スコアを計算することができる。たとえば、ロボットシステム100は、選好係数(たとえば、乗数の重み)および/または式を使用して、パッケージ間の離間距離、隣接パッケージについてのパッケージ寸法/脆性レーティング/パッケージ重量の差、衝突確率、同じ高さの連続面/隣接面、その統計結果(たとえば、平均、最大、最小、標準偏差など)、またはこれらの組合せについての選好を記述することができる。各組み合わせは、システム製造業者、注文、および/またはシステムオペレータによって事前定義され得る選好係数および/または式に従ってスコア付けすることができる。いくつかの実施形態では、ロボットシステム100は、載置反復全体の最後に載置スコアを計算することができる。
【0087】
いくつかの実施形態では、ロボットシステム100は、各載置反復後に、
図3Cの優先度キュー376内の載置組み合わせ364のシーケンスを更新することができる。ロボットシステム100は、載置スコアに基づいてシーケンスを更新することができる。
【0088】
ロボットシステム100は、たとえば、1つの載置プラン候補が終了した場合に、空きソースステータス、満杯レイヤステータス、または不変スコアステータスを判定することに基づいて、載置反復を停止することができる。空きソースステータスは、全ての利用可能パッケージが載置されたことを表すことができる。満杯レイヤステータスは、他のパッケージを検討中の離散化台モデル304の残余エリア内に載置できないことを表すことができる。不変スコアステータスは、組み合わせについての載置スコアが、1つまたは複数の連続した載置反復にわたって一定のままであることを表すことができる。いくつかの実施形態では、ロボットシステム100は、(たとえば、配列条件に関連する配列値/スコアが同一であるグループを並べ直すために)異なる初期載置位置および/または異なる処理順序を使用して載置反復を繰り返すことによって、スタッキングシナリオ候補の他のインスタンスを導出することができる。換言すれば、ロボットシステム100は複数の2D載置プランを生成することができ、ここで、各2D載置プランは、(たとえば、スタッキングシナリオ候補のインスタンスなどの)3Dスタック内のレイヤを表すことができる。他の実施形態では、ロボットシステム100は、2D載置プランが導出された場合に3D効果を反復的に検討し、2D載置プランが満杯になった場合に、次のレイヤを次の反復として導出することを開始することができる。
【0089】
ブロック612において、ロボットシステム100は、スタッキングプラン(たとえば、スタッキングプラン502)を生成することができる。いくつかの実施形態では、ロボットシステム100は、処理されるパッケージの載置位置が1つまたは複数の載置/処理済みのパッケージと重なる場合に、スタッキングプラン502の生成を開始することができる。
【0090】
スタッキングプラン502を生成し、および/または2Dプランを査定する際に、ロボットシステム100は、ブロック652に示すように、載置組み合わせ364および/または載置プランのそれぞれを3D状態に変換することができる。たとえば、ロボットシステム100は、パッケージについての高さ値を載置組み合わせ364に割り当てることができる。換言すれば、ロボットシステム100は、パッケージ高さを載置組み合わせ364に追加することに基づいて、等高線図(深度マップの推定)を生成することができる。
【0091】
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のいずれかを排除することができる。
【0092】
残余の載置組み合わせ364について、ロボットシステム100は、たとえば、ブロック654に示すように、3D載置スコアを計算するまたは載置スコアを更新することができる。ロボットシステム100は、3D載置についての載置コストおよび/またはヒューリスティック値に関連する所定の設定(たとえば、重みおよび/または式)を使用することができる。所定の3D設定は、2D設定、グループ設定、配列条件、またはこれらの組合せに類似することができる。たとえば、3D設定は、3D状態に基づいて衝突確率を計算し、衝突確率がより低い載置組み合わせを優先するスコアを計算するように構成することができる。また、ロボットシステム100は、残余パッケージ372、共通の高さを有する支持エリアのサイズ、3D状態のパッキングされたアイテムの数、処理済みパッケージの高さの差、またはこれらの組合せに基づいて、スコアを計算することができる。いくつかの実施形態では、ロボットシステム100は、スコアに応じて優先度キュー376内の載置組み合わせ364のシーケンスを更新することができる。
【0093】
3D状態が処理された後、ロボットシステム100は、ブロック610などにおいて、残余パッケージ372内の次のパッケージについての載置を導出することによって、2Dプランを更新することができる。ロボットシステム100は、たとえば、利用可能パッケージ362が全て処理された(すなわち、残余パッケージ372についての空の値/セット)場合、および/または載置組み合わせ364を改善できない(改善されない組み合わせとも呼ばれる)場合など、停止条件まで上述の処理を反復することができる。改善されない組み合わせのいくつかの例は、現在処理されている載置が、違反のうちの1つまたは複数によって優先度キュー376内の載置組み合わせ364の最後のものを排除する場合、および/または載置スコアが優先される組み合わせについて閾値数の反復にわたって一定のままである場合を含むことができる。
【0094】
停止条件が検出された場合、たとえば、ブロック656において、ロボットシステム100は、載置スコア(たとえば、2Dおよび/または3D関連スコア)に応じて、導出された載置組み合わせ364のうちの1つを選択することができる。したがって、ロボットシステム100は、選択された載置組み合わせをスタッキングプラン502(たとえば、載置プラン350のセット)として指定することができる。
【0095】
いくつかの実施形態では、説明用の例として、ロボットシステム100は、ブロック610および612の機能を異なって実施することができる。たとえば、ブロック610において、ロボットシステム100は、上述のように最下位レイヤについての2Dプラン(たとえば、載置プラン350のインスタンス)を生成することができる。その際、ロボットシステム100は、載置および/または処理順序を検討する際に、一致するパッケージ高さ、より重いパッケージ重量、および/またはパッケージについてのより大きい支持可能重量に対してより重い設定(たとえば、より大きいパラメータの重み)を与えるように構成することができる。ロボットシステム100は、ブロック610について上述したように、ベースレイヤについて第1の2Dプランを導出することができる。
【0096】
第1の2Dレイヤが上述のように完全/満杯となってベースレイヤが形成されると、ロボットシステム100は、ブロック612/652について説明したように載置プランを3D状態に変換することができる。3D情報を使用して、ロボットシステム100は、上述のようにベースレイヤの1つまたは複数の平面セクション/エリア(たとえば、
図3Bの載置面352−356)を特定することができる。平面セクションを使用して、ロボットシステム100は、ベースレイヤの上の次のレイヤについてのパッケージ載置を反復的に/再帰的に導出することができる。ロボットシステム100は、各平面セクションを離散化台モデル304の新たなインスタンスとみなし、ブロック610について上述したように異なる載置をテスト/評価することができる。いくつかの実施形態では、ロボットシステム100は、載置面を使用して2D載置を導出することができるが、載置パレット340全体にわたってスコアを計算することができる。したがって、ロボットシステム100は、先行する載置エリアに制限されることなく、後続のレイヤに対してより大きい載置エリアを優先するように構成することができる。
【0097】
反復的載置処理が第2のレイヤについて停止すると、ロボットシステム100は、導出されたレイヤについての平面セクション(たとえば、閾値範囲内の高さを有する上面)を計算して、次の上のレイヤについての残余パッケージ/グループの2D載置を生成することができる。反復的レイヤ化処理は、上述のように停止条件が満たされるまで継続することができる。
【0098】
いくつかの実施形態では、ロボットシステム100は、ブロック612において2Dプラン(たとえば、載置プラン350のうちの2つ以上)を独立して生成することができる。ロボットシステム100は、2Dプランを垂直に組み合わせる(たとえば、垂直方向に沿って2D載置プランを配置する/重ねる)ことに基づいてスタッキングプラン502を生成することができる。
【0099】
ブロック614において、ロボットシステム100は、スタッキングプラン502に基づいてパッキングシーケンス(たとえば、
図5Bのスタッキングシーケンス530)を計算することができる。一例として、パッキングシーケンスは、利用可能パッケージ362の載置順序を特定するためのものとすることができる。いくつかの実施形態では、ブロック662に示すように、ロボットシステム100は、パッキングシーケンスをレイヤごとに計算することができる。換言すれば、ロボットシステム100は、各レイヤについてパッキングシーケンスを計算し、次いで、レイヤの順序/位置に従ってシーケンスを下から上へ接続することができる。パッキングシーケンスを計算する際に、いくつかの実施形態では、ロボットシステム100は、ブロック672に示すように載置プランを調整することができる。たとえば、ロボットシステム100は、下位レイヤの載置プランから上位レイヤの載置プランまでパッケージ(たとえば、後続の操作/転置について衝突確率を増加させる高さを有するパッケージ)のうちの1つまたは複数を再割り当てすることによって、載置プランを調整することができる。再割り当てされたパッケージによって支持される任意のパッケージは、さらなる上位レイヤに再割り当てすることもできる。換言すれば、再割り当てされたパッケージは、同じ水平載置のままとし、上位レイヤに関連付けて、パッケージを
図5Bに示すように後で載置できるようにすることができる。ブロック674において、ロボットシステム100は、たとえば、下位レイヤに割り当てられたオブジェクトの後に、上位レイヤに割り当てられたオブジェクトをパッキング/操作することによって、調整された載置プランに基づいてパッキングシーケンス(たとえば、スタッキングシーケンス530)を計算することができる。
【0100】
他の実施形態では、ブロック664に示すように、ロボットシステム100は、レイヤ割り当てとは無関係に/独立してパッキングシーケンスを計算することができる。換言すれば、ロボットシステム100は、下位レイヤに割り当てられたパッケージが上位レイヤに割り当てられたパッケージの後に載置されるように、パッキングシーケンスを計算することができる。
【0101】
パッキングシーケンスを計算する際に、レイヤ内またはレイヤ間の両方で、ロボットシステム100は、1つまたは複数のパッケージ寸法(たとえば、高さ)、相対的な載置位置、またはこれらの組合せに応じて、スタッキングプラン502内のパッケージの位置を分析することができる。たとえば、ロボットシステム100は、ユニット/基準位置(たとえば、パレタイズロボットの位置)から遠いボックスの載置を、近くに割り当てられたパッケージよりも前に配列することができる。また、ロボットシステム100は、割り当てられた位置が載置プランの外周に沿っており、ユニット位置から離れている場合、より高い/より重いパッケージをより早く載置することができる。
【0102】
ブロック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は、上述のように、パッケージをレイヤごとに、またはそのような制約なしで載置することができる。
【0103】
上述のタスクの離散化および2D/3Dレイヤ化によって、オブジェクトをパッキングする効率、速度、および精度が向上する。したがって、オペレータ入力の削減および精度の向上によって、自動化パッキング処理に関する人間の労力をさらに減少させることができる。一部の環境では、上述のロボットシステム100は、約100万USドルまたはそれ以上のコストがかかり得る配列バッファの必要性を排除することができる。
【0104】
パッケージの処理
利用可能パッケージ362を保管するための一時的な保管エリアを使用し、利用可能パッケージ362をリアルタイムに特定し、利用可能パッケージ362についてのシミュレートされたスタッキングプランをリアルタイムに、たとえば、パッケージが開始位置114に到着したときに生成することによって、ロボットシステム100は、利用可能パッケージ362が、(a)ロボットシステム100に提供される前に識別用属性によって(たとえば、バーコードを使用して)ラベル付けされ、(b)スタッキングシーケンスで受け取られる必要性を排除することができ、これは別途の配列マシンの必要性も排除する。そのため、リソースの消費を最小限にし、パッキング機構を改良することにより、開示した実施形態によって、ロボットシステムが改良される。
【0105】
図7は、ロボットシステム100がシミュレートされたスタッキングプランを使用してパッケージを処理して台に載置するように動作し得る例示的な環境であり、これを以下に詳述する。ロボットシステム100は、パッケージを処理して特定の目的地、たとえば、倉庫またはキャリアに載置するために使用することができる。
図7の例におけるロボットシステム100は、キャリアからパッケージをパレタイズし、パレタイズされたパッケージを倉庫に載置するものとして示している。しかしながら、ロボットシステム100は、倉庫からトラックなどのキャリア内にパッケージを載置するように実装することもできる。
【0106】
いくつかの実施態様では、ロボットシステム100の転置ユニット104は、荷下ろしユニット102からパッケージのセットを受け取って、タスク位置116(パレットまたは台とも呼ばれる)に載置することができる。一例として、パッケージのセットは、ロボットシステム100によって受け取ってタスク位置116に載置することができる利用可能パッケージ362の全ての可能なインスタンスを含むことができる。いくつかの実施形態では、ロボットシステム100に、パッケージのセットについての事前知識、たとえば、開始位置114に到着する利用可能パッケージ362の総数などを提供することができる。他の実施形態では、ロボットシステム100は、パッケージのセットについての事前知識を有さないことができ、開始位置114に到着する利用可能パッケージ362の総数についての事前知識なしで動作することができる。
【0107】
ロボットシステム100は、シミュレートされたスタッキングプランに従って利用可能パッケージ362をタスク位置116に載置できるまで、利用可能パッケージ362のうちの1つまたは複数を一時的に保管するための、タスク位置116とは異なるエリアである保管エリア705を利用するように転置ユニット104を実装することができる。保管エリア705は、転置ユニット104がパッケージを載置するおよび/またはパッケージを取り出すのに好適な多くの構成のうちの1つで設計することができる。たとえば、保管エリア705は、円形劇場の座席形式または階段形式で構成され得る棚または載置位置を有する1つまたは複数の保管ラック710を含むように構成することができる。他の例では、保管ラック710は、複数の行および列として構成することができる。
【0108】
図7に、ロボットシステム100によって処理するために、コンベヤベルト110などの輸送機構を介して並んで次々に開始位置114に到着するパッケージのセットの一部である、パッケージ「B」−「E」などの利用可能パッケージ362の一例を示す。開始位置114に位置する利用可能パッケージ362のインスタンスは、対象オブジェクト112と呼ばれ得る。コンベヤベルト110は基本機能、たとえば、オンオフ制御および速度制御を提供するように構成することができる。いくつかの実施形態では、コンベヤベルト110は、内蔵のまたは統合されたインテリジェンス機能を提供せず、外部システムまたはオペレータによる動作機能の制御および/または有効化/無効化を一般に必要とする。
【0109】
ロボットシステム100は、利用可能パッケージ362をスキャンするための1つまたは複数の3次元(3D)センサ715を含むことができる。たとえば、コンベヤベルト110は、3Dセンサ715のうちの1つまたは複数を具備することによって3D点群情報などのセンサ情報を生成することができ、ロボットシステム100はセンサ情報を使用して、各利用可能パッケージ362に関連する1つまたは複数のパッケージ属性を計算することができる。3Dセンサ715からのセンサ情報に基づいて計算されるパッケージ属性のいくつかの例は、パッケージ寸法(すなわち、パッケージ高さ、パッケージ幅、およびパッケージ長)、および/またはパッケージの向きの詳細を含むことができる。パッケージ属性に関するさらなる詳細については後述する。3Dセンサ715の載置は事前に設定することができる。いくつかの実施形態では、3Dセンサ715は、開始位置114付近に設置することができる。たとえば、3Dセンサ715は、開始位置114の上方に、コンベヤベルト110の上面へ対向するように位置付けて、利用可能パッケージ362、より詳細には、対象オブジェクト112の上から見下ろす視野を生成することができる。利用可能パッケージ362が3Dセンサ715を次々に通過すると、3Dセンサ715は利用可能パッケージ362をスキャンしてセンサ情報を生成することができる。
【0110】
転置ユニット104は、3Dセンサ715によって対象オブジェクト112としてスキャンされた利用可能パッケージ362を受け取ることができ、対象オブジェクト112を保管エリア705内の保管位置に保管することができる。保管位置は、たとえば、利用可能パッケージ362などのオブジェクトを載置し保管するための保管エリア705内の物理的な位置、たとえば、保管ラック710の特定のインスタンス、および/または保管ラック710の棚上の位置などである。保管エリア705内の利用可能パッケージ362の例は、保管ラック710上に位置する「S」および「T」とラベル付けされた利用可能パッケージ362によって示している。
【0111】
利用可能パッケージ362を保管エリア705内に載置した後、ロボットシステム100は、利用可能パッケージ362の保管位置情報を、たとえば、
図2の追跡データ254内に記録することができる。保管位置情報は、保管エリア705内の利用可能パッケージ362の保管位置に関する情報とすることができる。いくつかの実施形態では、ロボットシステム100は、保管エリア705を表現したものであり得る「保管マップ」と呼ばれるデータ構造を生成することができる。保管マップは保管エントリを含むことができ、保管エントリは、保管エリア705内の各利用可能オブジェクト362に対応するデータ構造のデータエントリとすることができる。保管マップ内の保管エントリは、保管エリア705に一時的に保管された各利用可能パッケージ362についてのパッケージ識別情報(ID)、保管位置情報、および/またはパッケージ属性(たとえば、物理的な寸法)を記憶することができる。パッケージIDは、ロボットシステム100によって(すなわち、利用可能パッケージ362が受け取られる順序に対応する割り当て値として)生成することができ、またはパッケージから、たとえば、パッケージに関連付けられたバーコードから決定することができ、バーコードは、パッケージがコンベヤベルト110上で輸送されている間に、バーコードスキャナ(図示せず)を使用して自動的に読み取ることができる。
【0112】
いくつかの実施形態では、ロボットシステムは、保管エリア705についての保管容量カウンタを維持することができる。一実施態様では、保管容量カウンタは、利用可能パッケージ362によって現在占有されている保管スペースの量または保管エリア705内の保管位置の数を表す値とすることができる。他の実施態様では、保管容量カウンタは、現在保管に利用可能であるまたは占有されていない保管スペースの量または保管エリア705内の保管位置の数を表す値とすることができる。一例として、ロボットシステム100は、利用可能パッケージ362のインスタンスが保管エリア705に対して追加または削除された場合に、保管容量カウンタの値を増加または減少させることによって、保管容量カウンタを維持することができる。
【0113】
いくつかの実施形態では、ロボットシステム100は、保管エリア715に保管されている利用可能パッケージ362に対してパッケージグループを生成することができる。たとえば、ロボットシステム100は、保管エリア715に保管されている各利用可能パッケージ362のパッケージ属性、たとえば、パッケージ高さおよび/またはパッケージ重量に基づいて、パッケージグループを生成することができる。パッケージグループの生成については以下で詳述する。
【0114】
ロボットシステム100は、シミュレーション機能を実行して、利用可能パッケージ362についての、より詳細には、保管エリア705に現在保管されている利用可能パッケージ362についてのシミュレートされたスタッキングプランを生成することができる。一般に、ロボットシステム100の目的は、利用可能パッケージ362を使用して保管エリア705内の利用可能パッケージ362のうちの少なくとも一部を均一パッキングレイヤとして載置して、均一パッケージレイヤの上面が同じ高さになるようにするための、シミュレートされたスタッキングプランを生成することである。一例では、均一パッキングレイヤは、均一パッキングレイヤ内の各利用可能パッケージ362のパッケージ高さが同じになる(すなわち、同一または類似のパッケージ高さの値を共有する)ような、利用可能パッケージ362の単一のレイヤとして生成することができる。具体例として、シミュレーション機能は、パッケージ高さに応じてカテゴライズされたパッケージグループに基づいてシミュレートされたスタッキングプランを生成することができる。
【0115】
他の例では、均一パッキングレイヤは、組み合わせレイヤとして生成することができる。一実施形態では、組み合わせレイヤとして生成される均一パッキングレイヤは、利用可能パッケージ362の単一のインスタンスと、利用可能パッケージ362のうちの1つまたは複数のパッケージスタックとの組み合わせとして実現することができ、ここで、パッケージの単一のインスタンスのパッケージ高さは、パッケージスタック内の1つまたは複数のパッケージのパッケージ高さの合計と同じである(すなわち、組み合わせレイヤの上面が同じ高さになるようにする)。実例として、組み合わせレイヤは、組み合わせレイヤの上面が同じ高さ(すなわち、「X」)になるような、利用可能パッケージ362の単一のインスタンス(すなわち、パッケージ高さ「X」を有するもの)と、利用可能パッケージの複数のインスタンスのパッケージスタック(すなわち、パッケージスタック内の各利用可能パッケージ362のパッケージ高さの合計であって、合計して「X」となる、スタック高さ合計を有する利用可能パッケージ362のうちの2つ以上)とを含むことができる。他の実施形態では、組み合わせレイヤとして生成される均一パッキングレイヤは、各パッケージスタック内の利用可能パッケージ362のパッケージ高さの合計が同じである限り、パッケージスタックの複数のインスタンスによって実現することができる。均一パッキングレイヤを組み合わせレイヤとして実現するシミュレートされたスタッキングプランの生成に関連するさらなる詳細については後述する。均一パッキングレイヤを含むように、シミュレートされたスタッキングプランを生成することによって、ロボットシステム100は、利用可能パッケージ362の追加のレイヤをスタックするための安定したベースを提供することができる。
【0116】
均一パッキングレイヤを実現するようにシミュレートされたスタッキングプランを生成することは、スタッキング表面積要件を満たすことを含むことができる。スタッキング表面積要件は、均一パッケージレイヤを形成する利用可能パッケージ362間の間隔および/または間隙についての要件、および/または均一パッケージレイヤを形成する利用可能パッケージ362の上面の合計水平面積についての要件とすることができる。利用可能パッケージ362の上面の合計水平面積とは、均一パッキングレイヤの上面を形成する各利用可能パッケージ362の上面の表面積の合計を指す。スタッキング表面積要件は、合計面積要件および/またはパッケージ間隔要件を含むことができる。
【0117】
いくつかの実施形態では、合計面積要件のスタッキング表面積要件は、均一パッキングレイヤの上面の合計水平面積が表面積閾値より大きいことを含むことができる。一例として、表面積閾値は、タスク位置116の水平載置面の割合に基づくことができる。他の例として、表面積閾値は、システムユーザなどによって事前に決定することができる。
【0118】
他の実施形態では、パッケージ間隔要件のスタッキング表面積要件は、均一パッキングレイヤの上面を形成する利用可能パッケージ362間の任意の間隙領域および/または空きスペースが間隔閾値未満であることを要求することを含み得る。一例として、間隔閾値はロボットシステム100によって、保管エリア705内の利用可能パッケージ362のうちのいずれかのパッケージ寸法に基づいて計算される面積未満の面積となるように動的に設定することができる。したがって、間隙領域および/または空きスペースは、利用可能パッケージ362のうちのいずれかが、均一パッキングレイヤの上面を形成する利用可能パッケージ362間に入ることが可能なほど十分に大きくはない。他の例では、間隔閾値は、システムユーザなどによって事前に決定することができる。
【0119】
スタッキング表面積要件(すなわち、合計面積要件およびパッケージ間隔要件の両方)を満たす均一パッキングレイヤを実現するシミュレートされたスタッキングプランを生成することによって、表面が安定しており利用可能パッケージ362の追加のインスタンスの載置が最大化されるという利点が提供される。たとえば、ロボットシステム100は次いで、均一パッケージレイヤの上面を最大化された載置エリアを有する離散化台モデル304の新たなインスタンスとして使用して、均一パッケージレイヤの上の次のレイヤについてのパッケージ載置を反復的/再帰的に導出することができる。
【0120】
状況によっては、現在保管エリア705内にある利用可能パッケージ362をシミュレーション機能によって配置して、均一パッキングレイヤを実現するシミュレートされたスタッキングプランを生成することができないことを理解されたい。これらの状況では、ロボットシステム100は、シミュレートされたスタッキングプランを残余パッケージプランとして生成することができる。いくつかの実施形態では、残余パッケージプランは、現在保管エリア705内にある利用可能パッケージ362の全ての残余インスタンスをタスク位置116に載置するためのプランとすることができる。残余パッケージプランは、シミュレーション機能によって、利用可能パッケージ362をタスク位置116に載置するための1つまたは複数のパレタイズ基準を満たすように生成することができる。
【0121】
パレタイズ基準は、パッキング密度、および/またはタスク位置116上の利用可能パッケージ362の数に関する要件とすることができる。一例として、パレタイズ基準は、利用可能パッケージ361をタスク位置116に載置するための要件、たとえば、パッキング体積効率、パレット上の想定パッケージ数、タスク位置116上の利用可能パッケージ362のスタックの最大スタック可能高さ、またはこれらの組合せを含むことができる。パッキング体積効率は、利用可能パッケージ362の総体積とタスク位置116のパッキング体積容量との比などの関係とすることができ、これは、タスク位置116によって支えられ得るオブジェクトまたはパッケージの総体積についての値とすることができる。一例として、パッキング体積効率は、(すなわち、シミュレートされたスタッキングプランなどに従って)タスク位置116に載置される全ての利用可能パッケージ362のパッケージ体積の合計と、タスク位置116のパッキング体積容量との比とすることができる。想定パッケージ数は、タスク位置116に載置されると想定される利用可能パッケージ362の最小数とすることができる。最大スタッキング高さは、タスク位置116上のスタックされたパッケージの高さの合計(たとえば、利用可能パッケージ362が互いの上にスタックされた場合の、各利用可能パッケージ362についてのパッケージ高さの合計)の限度とすることができる。
【0122】
いくつかの実施形態では、ロボットシステム100は、シミュレーション機能をリアルタイムに、たとえば、利用可能パッケージ362の新たなインスタンスが開始位置に到着したまたは保管エリア705に追加された後に、実行することができる。たとえば、ロボットシステム100は、利用可能パッケージ362のうちの第1のパッケージが3Dセンサ715によってスキャンされた場合にシミュレーション機能を実行することができ、利用可能パッケージ362の後続のインスタンスが受け取られる限り、シミュレートされたスタッキングプランを更新し続ける。具体例として、利用可能パッケージ362の第1のパッケージ「S」が保管エリア705に保管された場合、ロボットシステム100は、第1のパッケージ「S」に基づいてシミュレートされたスタッキングプランを生成することができ、利用可能パッケージ362の第2のパッケージ「T」が保管エリア705に保管された場合、ロボットシステム100は、第1のパッケージ「S」および第2のパッケージ「T」に基づいてシミュレートされたスタッキングプランを更新することができる。
【0123】
いくつかの実施形態では、シミュレートされたスタッキングプランを更新することは、利用可能パッケージ362のシーケンス識別情報(ID)などの載置情報を更新すること、目標場所114上の利用可能パッケージ362の載置位置を更新すること、および/または利用可能パッケージ364の載置の向きを更新することのうちの1つまたは複数を含むことができる。シーケンスIDは、利用可能パッケージ362がタスク位置116に載置される順序を示すことができる。いくつかの実施形態では、利用可能パッケージ362についての載置情報は、保管マップの保管エントリに記憶することができる。シミュレーション機能を実行してシミュレートされたパッキングプランを生成することに関するさらなる詳細については後述する。
【0124】
パッケージ処理動作中に、ロボットシステム100は、パレタイズトリガの発生を判定することができる。パレタイズトリガは、シミュレートされたスタッキングプランに従ってロボットシステム100によって利用可能パッケージ362のうちの1つまたは複数を保管エリア705からタスク位置116に載置させることができるイベントとすることができる。いくつかの実施形態では、パレタイズトリガは、ロボットシステム100の1つまたは複数のユニットに対するタイムリミットトリガ、スタッキングプラントリガ、保管容量トリガ、または載置開始コマンドの受信に基づくことができる。スタッキングプラントリガは、シミュレーション機能が、スタッキング表面積要件を満たす均一パッキングレイヤを実現するシミュレートされたスタッキングプランを生成または更新した場合に、発生することができる。
【0125】
タイムリミットトリガは、ロボットシステム100のユニット動作時間に基づくことができる。いくつかの実施態様では、タイムリミットトリガは、タスク位置116に載置される利用可能パッケージ362についての出荷スケジュール(すなわち、完全に積載されたパレットが出荷されなければならない時刻)に基づくことができる。他の実施態様では、タイムリミットトリガは、ロボットシステム100が利用可能パッケージ362をタスク位置116に載置せずに費やした時間量に基づくことができる。一例として、タイムリミットトリガは、ユニット動作時間が動作閾値を超えた場合に発生することができる。いくつかの実施態様では、ユニット動作時間は、転置ユニット104がいずれの利用可能パッケージ362もタスク位置116に載置しなかった期間とすることができる。他の実施態様では、ユニット動作時間は、転置ユニット104がタスク位置116の現在のインスタンスについてのパレタイズ動作に費やした総時間量とすることができる。動作時間閾値は、ロボットシステム100またはシステムユーザによって、アイドル時間要件および/または出荷スケジュールに基づいて決定することができる事前定義された期間とすることができる。
【0126】
保管容量トリガは、保管容量カウンタに基づくことができる。たとえば、保管容量トリガは、保管容量カウンタが保管容量閾値を超えた場合に発生することができる。保管容量閾値は、保管エリア705が最大保管容量に近づいていることを示すことができる。たとえば、保管容量閾値は、保管エリア705内の保管位置の割合または数を表す事前定義された値とすることができる。
【0127】
載置開始コマンドは、保管エリア705内の利用可能パッケージ362をタスク位置116に載置することを開始する命令またはコマンドとすることができる。載置開始コマンドは、ロボットシステム100から受信される命令、またはシステムユーザから受信される命令とすることができる。たとえば、システムユーザから受信される載置開始コマンドは、システムユーザがロボットシステム100に関連付けられたボタンを押して、処理すべきパッケージがこれ以上ないことを示した場合に発生することができる。
【0128】
いくつかの実施形態では、ロボットシステム100がタイムリミットトリガ、保管容量トリガの発生を判定した、または載置開始コマンドを受信した場合、ロボットシステム100は、パレタイズ基準に従って保管エリア705に残っている利用可能パッケージ362をタスク位置116に載置するための残余パッケージプランとして、シミュレートされたスタッキングプランを生成する必要があり得る。パレタイズトリガの発生の判定に関するさらなる詳細については後述する。
【0129】
いくつかの実施形態では、パッケージのセット内の利用可能パッケージ362の数量は、シミュレートされたスタッキングプランを決定する前に、(たとえば、ユーザ入力を介して)ロボットシステム100にとって既知である。ロボットシステム100がタスク位置116に載置すべき利用可能パッケージ362の数を知っている場合、ロボットシステム100は、パッケージのセット内の利用可能パッケージ362の総数を考慮して、シミュレートされたスタッキングプランを生成することができる。しかしながら、いくつかの実施形態では、利用可能パッケージ362の数量は、ロボットシステム100にとって既知ではない。シミュレートされたスタッキングプランを生成するための戦略は両方の場合で異なることができ、これはパレタイズ基準などの要因に依存することができる。たとえば、ロボットシステム100がパレタイズすべき利用可能パッケージ362が36個あると知っている場合、かつ、パレット上の想定パッケージ数が25個に設定されているが、パッキング体積効率を最大化するように優先度が設定されている場合、各利用可能パッケージ362が同一または類似のパッケージ寸法を有すると仮定して、ロボットシステム100は、18個のパッケージのシミュレートされたスタッキングプランの2つのインスタンスを、それぞれ2つのパレットに対して生成し(たとえば、体積効率が両方のパレットにおいて等しく利用されるようにし)、シミュレートされたスタッキングプランが載置すべき利用可能パッケージ362のうちの最初の18個の好適なパッケージを識別するとすぐに、パレタイズを開始することができる。対照的に、利用可能パッケージ362の数がロボットシステム100にとって事前に既知でない場合、ロボットシステム100は、パレタイズトリガ、たとえば、タイムリミットトリガ、均一レイヤトリガ、または保管容量トリガが発生するまで利用可能パッケージ362を保管エリア705に保管し、シミュレートされたスタッキングプランに従ってパレタイズを開始して、パレット上の想定パッケージ数である25個のパッケージを載置することができ、その場合、あるパレットは25個のパッケージを有することができ、他のパレットは11個のパッケージを有することができる。
【0130】
図8は、様々な実施形態と整合する、利用可能パッケージ362をタスク位置116に載置する際の様々なステージの一例800を示すブロック図である。いくつかの実施形態では、例800は、
図7の環境において実施することができる。上述のように、利用可能パッケージ362が開始位置114またはその途中にある3Dセンサ715を通過した後、ロボットシステム100は、利用可能パッケージ362のパッケージ属性を決定し、利用可能パッケージ362を保管エリア705に一時的に保管し、シミュレーション機能を実行してパッケージ属性に基づいてシミュレートされたスタッキングプランを生成または更新し、パレタイズトリガの発生を判定し、保管エリア705に一時的に保管された利用可能パッケージ362をタスク位置116にパレタイズすることを進めることができる。たとえば、利用可能パッケージ362のうちの第1のパッケージ「P1」がスキャナ715を通過した場合、ロボットシステム100は、3Dセンサ715から受信されたセンサ情報を使用して第1のパッケージに関連するパッケージ属性(たとえば、パッケージ「P1」の物理的な寸法)を決定することができ、第1の載置805に示すように第1のパッケージを保管エリア705の保管ラック710上に保管することができる。
【0131】
パッケージ「P1」を保管エリア705の保管ラック710に載置した後、ロボットシステム100はパッケージ「P1」の保管位置情報を保管マップに記録する。保管位置情報は、保管エリア705内のパッケージ「P1」の保管位置を含むことができる。ロボットシステム100は、たとえば、保管エリア705から利用可能パッケージ362を移動させてタスク位置116に載置する場合に、利用可能パッケージ362の保管位置情報を使用して、転置ユニット104が保管エリア705から利用可能パッケージ362を取り出すための命令を生成することができる。ロボットシステム100は、パッケージID(もしあれば)およびパッケージ属性、たとえば、物理的な寸法(たとえば、パッケージ高さ、パッケージ長、およびパッケージ幅)および/またはパッケージ重量を保管マップに記憶することもできる。保管マップは、追跡データ254の一部とすることができる。ロボットシステム100はまた、シミュレーション機能を実行して、第1の載置805に示すようにパッケージ「P1」をタスク位置116(たとえば、パレット)に載置するためのシミュレートされたスタッキングプランを決定することができる。一例として、第1のパッケージ「P1」を処理した後に生成することができるシミュレートされたスタッキングプランは、パッケージ「P1」の最大の面がタスク位置116に接する状態で、パッケージ「P1」がタスク位置116上の、タスク位置116の指定されたコーナーに載置されることを示す。ロボットシステム100は、パレタイズトリガ、たとえば、タイムリミットトリガ、均一レイヤトリガ、保管容量トリガ、または載置開始コマンドの受信などの発生を判定することができる。第1の載置805では、パレタイズトリガが発生していないので、ロボットシステム100は次のパッケージである「P2」の受け取りを進める。
【0132】
ロボットシステム100は、パッケージ「P2」によって利用可能パッケージ362の処理を続けることができる。たとえば、パッケージ「P2」が開始位置114に到着すると、ロボットシステム100は、パッケージ「P2」に関連するパッケージ属性を決定し、第2の載置806に示すようにパッケージを保管エリア705に保管する。ロボットシステム100は、パッケージ「P2」の保管位置情報およびパッケージ属性を保管マップに記録する。シミュレーション機能は、第2の載置806に示すようにパッケージ「P1」と共にタスク位置116に載置するために、パッケージ「P2」を含むようにシミュレートされたスタッキングプランを更新する。ロボットシステム100はパレタイズトリガが発生したか否かを判定する。第2の載置806では、パレタイズトリガが発生していないので、ロボットシステム100は次のパッケージである「P3」の受け取りを進める。
【0133】
ロボットシステム100は、パッケージ「P3」によって利用可能パッケージ362の処理を続けることができる。たとえば、パッケージ「P3」が開始位置114に到着すると、ロボットシステム100は、パッケージ「P3」に関連するパッケージ属性を決定し、第3の載置807に示すようにパッケージ「P3」を保管エリア705に保管する。ロボットシステム100は、パッケージ「P3」の保管位置情報およびパッケージ属性を保管マップに記録する。シミュレーション機能は、パッケージ「P1」および「P2」と共にタスク位置116に載置するために、パッケージ「P3」を含むようにシミュレートされたスタッキングプランを更新する。いくつかの実施形態では、シミュレーション機能は、パッケージがタスク位置116に載置するのにまだ適さないと決定し(その理由は、たとえば、パッケージを他の処理済みのパッケージと共に効率的に載置するのに、形状およびサイズがまだ適さないためである)、そのため、第3の載置807に示すように、パッケージをスタッキングプランに含めない。ロボットシステム100は、パレタイズトリガが発生したか否かを判定する。第3の載置807では、パレタイズトリガが発生していないので、ロボットシステム100は次のパッケージである「P4」の受け取りを進める。
【0134】
ロボットシステム100は、パッケージ「P4」によって利用可能パッケージ362の処理を続けることができる。たとえば、パッケージ「P4」が開始位置114に到着すると、ロボットシステム100は、パッケージ「P4」に関連するパッケージ属性を決定し、第4の載置808に示すようにパッケージを保管エリア705に保管する。ロボットシステム100は、パッケージ「P4」の保管位置情報およびパッケージ属性を保管マップに記録する。シミュレーション機能は、第4の載置808に示すようにパッケージ「P1」−「P3」と共にタスク位置116に載置するために、パッケージ「P4」を含むようにシミュレートされたスタッキングプランを更新する。第4の載置808は、「P4」の載置をシミュレートする場合に、パッケージ「P1」および「P2」の位置および向きを再調整するようにシミュレートされたスタッキングプランを更新することを示す。より具体的には、パッケージ「P2」および「P4」が同じパッケージ高さの値「h1」を有するので、互いに隣接するように載置して均一パッキング表面を実現することができ、「P1」はタスク位置116上の異なる位置において向き変更および位置変更される。なお、パッケージ「P3」は、まだスタッキングプランに含まれていない。ロボットシステム100は、パレタイズトリガが発生したか否かを判定する。第4の載置808では、パレタイズトリガが発生していないので、ロボットシステム100は次のパッケージである「P5」の受け取りを進める。
【0135】
ロボットシステム100は、パッケージ「P5」によって利用可能パッケージ362の処理を続けることができる。たとえば、パッケージ「P5」が開始位置114に到着すると、ロボットシステムは、パッケージ「P5」に関連するパッケージ属性を決定し、第5の載置809に示すようにパッケージ「P5」を保管エリア705に保管する。ロボットシステム100は、パッケージ「P5」の保管位置情報およびパッケージ属性を保管マップに記録する。シミュレーション機能は、第5の載置809に示すようにパッケージ「P1」−「P4」と共にタスク位置116に載置するために、パッケージ「P5」を含むようにシミュレートされたスタッキングプランを更新する。なお、パッケージ「P3」は、まだスタッキングプランに含まれていない。ロボットシステム100は、スタッキングプランが1つまたは複数のパレタイズ基準を満たすか否かを判定する。いくつかの実施形態では、ロボットシステム100は、第5の載置809において、パッキング体積効率のパレタイズ基準を満たすと共に、想定パッケージ数(たとえば、5個のパッケージ)のパレタイズトリガが発生したと判定する。したがって、ロボットシステム100は、パレタイズ動作810に示すように、パッケージ「P1」、「P2」、「P4」、および「P5」をタスク位置116に載置することを進める。
【0136】
いくつかの実施形態では、ロボットシステム100は、想定パッケージ数について異なる値(たとえば、5個を超える利用可能パッケージ362)を有することができ、第5の載置809ではパレタイズトリガが発生していないと判定する。したがって、ロボットシステム100は、次のパッケージ「P6」の受け取りを進める。たとえば、パッケージ「P6」が開始位置114に到着すると、ロボットシステム100は、パッケージ「P6」に関連するパッケージ属性を決定し、第6の載置811に示すようにパッケージ「P6」を保管エリア705に記憶する。ロボットシステム100は、パッケージ「P6」の保管位置情報およびパッケージ属性を保管マップに記録する。シミュレーション機能は、第6の載置811に示すようにパッケージ「P1」−「P5」と共にタスク位置116に載置するために、パッケージ「P6」を含むようにシミュレートされたスタッキングプランを更新する。なお、パッケージ「P3」は、まだスタッキングプランに含まれていない。ロボットシステム100は、パレタイズトリガが発生したか否かを判定する。いくつかの実施形態では、ロボットシステム100は、シミュレートされたスタッキングプランが均一パッキングレイヤを組み合わせレイヤとして実現したために、均一レイヤトリガのパレタイズトリガが発生したと判定する。より具体的には、「P4」および「P5」のパッケージスタックと、「P2」および「P6」のパッケージスタックとがそれぞれ、合計「h1」となるパッケージ高さの合計(すなわち、「h2」および「h3」の合計)を有しており、これはパッケージ「P1」のパッケージ高さ「h1」と一致しているために、組み合わせレイヤ(すなわち、均一パッキングレイヤを形成するパッケージの上面が同じ高さである)が提供されるので、第6の載置811のシミュレートされたスタッキングプランは、均一パッキングレイヤを実現している。したがって、ロボットシステム100は、パレタイズ動作812に示すように、パッケージ「P1」、「P2」、および「P4」−「P6」をタスク位置116に載置することを進める。ロボットシステム100は、保管マップを使用して保管エリア705内のパッケージ「P1」、「P2」、および「P4」−「P6」の保管位置を決定し、それに従って(すなわち、各パッケージのシーケンスIDに基づいて)保管エリア705から取り出して、タスク位置116に載置することができる。パッケージ「P3」はまだ保管エリア705内にあり、続いて処理されるパッケージ、たとえば、パッケージ「P7」などと共にタスク位置116に載置するよう検討することができる。
【0137】
いくつかの実施形態では、ロボットシステム100は、コンベヤベルト110を操作してもよく、たとえば、コンベヤベルト110を停止もしくは開始し、または速度変更(すなわち、減速または加速)してもよい。たとえば、ロボットシステム100が、保管エリア705に保管されている利用可能パッケージ362の一部がパレタイズされると判定した場合、ロボットシステム100は、パレタイズされる利用可能パッケージ362がタスク位置116に載置されるまで、利用可能パッケージ362の次のインスタンスの処理を遅らせるために、コンベヤベルト110を停止または減速させる必要があり得る。ロボットシステム100は、パレタイズ動作が完了した後に、次の利用可能パッケージを届けるために、コンベヤベルト110を開始または加速させてもよい。
【0138】
図9は、様々な実施形態と整合する、一時的な保管エリアを使用して利用可能パッケージをタスク位置に載置するための処理900の流れ図である。いくつかの実施形態では、処理900は、
図1〜
図7の環境において実施することができる。さらに、いくつかの実施形態では、少なくとも
図8を参照して説明したパッケージ載置は、処理900の説明用の例である。処理900は、
図2の記憶デバイス204のうちの1つまたは複数に記憶された命令を
図2のプロセッサ202のうちの1つまたは複数によって実行することに基づいて、実施することができる。
【0139】
ロボットシステム100は、ブロック901において、
図3の利用可能パッケージ362を載置するための処理を開始することができる。ブロック901に示すように、ロボットシステム100は、
図7のタスク位置116(たとえば、利用可能パッケージ362を受け取る/載置するためのパレット、台、ビン、および/またはコンテナ)に関する目的地情報を決定することができる。たとえば、タスク位置116に関する目的地情報は、物理的な寸法、パッキング体積容量、最大スタッキング高さ、またはこれらの組合せを含むことができる。一実施形態では、ロボットシステム100は、利用可能パッケージ362を載置するこができるタスク位置116の載置面(たとえば、
図3の載置パレット340などのパレットの一番上の積載面)のサイズまたは寸法を含むように目的地情報を決定することができる。
【0140】
他の実施形態では、ロボットシステム100は、タスク位置116のパッキング体積容量を含むように目的地情報を決定することができる。たとえば、パッキング体積容量は、コンピューティングシステム100によって受信されるか、マスターデータ252内に記憶されるか、または、たとえば、載置面の水平寸法(すなわち、xおよびy寸法)にタスク位置116のパッキング高さ(すなわち、z寸法)を乗算することにより、コンピューティングシステム100によってリアルタイムに計算される所定の値とすることができる。一例として、タスク位置116のパッキング高さ寸法は、タスク位置116の構成に対応する値、たとえば、ビンの壁の高さ、またはパレット上のオブジェクトの安定したスタッキングに関連する最大の高さとすることができる。他の例では、タスク位置116のパッキング高さ寸法は、タスク位置116の最大スタッキング高さに対応することができる。
【0141】
さらなる実施形態では、ロボットシステム100は、タスク位置116に対応する
図3Bの離散化台モデル304を含むように目的地情報を決定することができる。たとえば、ロボットシステム100は、
図3Bの単位ピクセル310に応じてタスク位置116(たとえば、パレット上面)の物理的な寸法を分割することに基づいて、離散化台モデル304を(たとえば、オフラインまたはリアルタイムで)生成することができる。単位ピクセル310は、(たとえば、製造業者、注文した顧客、および/またはオペレータによる)所定の値または寸法、たとえば、1ミリメートル(mm)もしくは1/16インチ(in)またはそれ以上(たとえば、5mmもしくは20mm)とすることができる。いくつかの実施形態では、単位ピクセル310は、台の寸法またはサイズに基づくことができる(たとえば、割合または分数)。
【0142】
ブロック902において、ロボットシステム100は、
図7の開始位置114において利用可能パッケージ362のうちの1つまたは複数を含むパッケージのセットを受け取るためのプランを生成および/または実施することができる。たとえば、パッケージのセットを受け取るためのプランは、開始位置112において利用可能パッケージ362を次々に受け取る命令を含むことができ、これは
図7のコンベヤベルト110によって開始位置114まで輸送することができる。パッケージのセットを受け取るためのプランは、現在開始位置114にある利用可能パッケージ362のインスタンスを
図7の対象オブジェクト112として識別することを含むことができる。
【0143】
ブロック903において、ロボットシステム100は、各利用可能パッケージ362を順番に処理するためのプランを生成および/または実施することができる。たとえば、利用可能パッケージ362を処理するためのプランは、利用可能パッケージ362、より詳細には、対象オブジェクト114のパッケージ属性を決定することと、利用可能パッケージ362を
図7の保管エリア705に保管することとを含むことができる。一実施態様では、利用可能パッケージ362を処理するためのプランは、パッケージ属性を決定するためのブロック920、利用可能パッケージ362のパッケージ識別情報(ID)を決定するためのブロック922、利用可能パッケージ362を保管エリア705に保管するためのブロック924、利用可能パッケージ362についての情報を記録するためのブロック926、保管容量カウンタを更新するためのブロック928、またはこれらの組合せを含むことができる。
【0144】
ブロック920に示すように、ロボットシステム100は、対象オブジェクト112のパッケージ属性を決定することができる。パッケージ属性は、対象オブジェクト114の形状、サイズ、パッケージ寸法(すなわち、高さ、幅、長さ、外周、直径)、重量、他の物理的な特性を特徴付けるまたはこれらに関連する1つまたは複数の特性、開始位置114にある対象オブジェクト112の場所および/または位置、対象オブジェクト112と利用可能パッケージ362の隣接するインスタンスとの離間、またはこれらの組合せを含むことができる。
【0145】
いくつかの実施形態では、ロボットシステム100は、
図2のセンサ216(たとえば、
図1の3Dセンサ715)から受信されるセンサ情報(すなわち、3D点群情報)に基づくパッケージ寸法を含むように対象オブジェクト112のパッケージ属性を決定することができる。一例として、ロボットシステム100は、センサ情報を分析して、対象オブジェクト114に対応する3D点群内の検出されたエッジの測定値(すなわち、対象オブジェクト114の上から見下ろした視野に関する対象オブジェクト112の上面に対応する長さおよび幅)に基づいて、パッケージ長および/またはパッケージ幅のパッケージ属性を決定することができる。同様に、ロボットシステム100は、センサ情報を分析して、円筒形状を有する対象オブジェクト112についてのパッケージ外周またはパッケージ直径のパッケージ属性を決定することができる。他の例では、ロボットシステム100、センサ情報を分析して、3Dセンサ705に最も近い/対向する対象オブジェクト112の面(すなわち、対象オブジェクト112の上面)と、3Dセンサ705に最も近い/対向するコンベヤベルト110の面(すなわち、コンベヤベルト110の上面)とに対応する3D点群値の間の差に基づいて、パッケージ高さのパッケージ属性を計算することができる。
【0146】
いくつかの実施形態では、ロボットシステム100は、
図3Aの離散化オブジェクトモデル302を含むようにパッケージ属性を決定することができる。たとえば、ロボットシステム100は、パッケージ寸法に基づいて対象オブジェクト112に対応する離散化オブジェクトモデル302を生成するおよび/またはアクセスすることができる。いくつかの実施形態では、ロボットシステム100は、対象オブジェクト112の物理的な寸法を分割することに基づいて、(たとえば、オフラインまたはリアルタイムで、たとえば、利用可能パッケージ362を受け取った後、および/またはパッキング動作を開始する前に)離散化オブジェクトモデル302を生成することができる。単位ピクセル310は、(たとえば、製造業者、注文した顧客、および/またはオペレータによる)所定の値の寸法、たとえば、1mmもしくは1/16インチまたはそれ以上(たとえば、5mmもしくは20mm)とすることができる。いくつかの実施形態では、単位ピクセル310は、利用可能パッケージ362のうちの1つまたは複数の寸法またはサイズに基づくことができる(たとえば、割合または分数)。いくつかの実施形態では、ロボットシステム100は、記憶デバイス204および/または他のデバイス(たとえば、
図2の通信デバイス206を介してアクセスされるパッケージ供給元の記憶デバイス、データベース、および/またはサーバ)に記憶された離散化オブジェクトモデル304にアクセスすることができる。
【0147】
ブロック922に示すように、ロボットシステム100は、対象オブジェクト112のパッケージIDを決定することができる。たとえば、パッケージIDは、ロボットシステム100によって生成することができ、たとえば、利用可能パッケージ362が開始位置114において受け取られる順序に応じた割り当て値などである。他の例として、パッケージIDはパッケージから決定することができ、たとえば、バーコードスキャナ(図示せず)を使用して自動的に読み取ることができる、パッケージに関連付けられたバーコードから決定することができる。
【0148】
ブロック924に示すように、ロボットシステム100は、利用可能パッケージ362(すなわち、対象オブジェクト112)を保管エリア705に保管するためのプランを生成および/または実施することができる。たとえば、ロボットシステム100は、転置ユニット104が対象オブジェクト112を把持し、輸送し、利用可能パッケージ362の他のインスタンスによって占有されていない保管エリア705内の保管位置に載置するための命令を含むように、対象オブジェクト112を保管するためのプランを生成することができる。
【0149】
利用可能パッケージ362を保管エリア705に保管するためのプランは、いくつかの実施形態では、転置ユニット104が利用可能パッケージ362を保管エリア705に様々な配置で載置するための命令を含むことができる。たとえば、命令は、転置ユニット104がパッケージをある保管ラック710上に横方向に(すなわち、隣同士に)載置した後、他の保管ラック710上に移動させるためのものを含むことができる。他の例では、転置ユニット104に対する命令は、パッケージを保管エリア705内にランダムに載置するためのものとすることができる。さらに他の例では、命令は、利用可能パッケージ362を保管エリア705に載置するための載置プラン、たとえば、少なくとも
図3A〜
図3Cに関して説明した載置プランとして生成することができる。載置プランは、保管ラック710の数、保管ラック710の寸法、保管ラック710の重量支持力、または利用可能パッケージ362を保管エリア705に載置するための他の要因を考慮してもよい。ともかく、転置ユニット104が、保管エリア705内の利用可能な保管スペースを効率的に利用して、利用可能パッケージ362のうちの1つまたは複数を保管するおよび/または取り出すことができるように、利用可能パッケージ362を保管エリア705に載置することができる。
【0150】
いくつかの実施形態では、ロボットシステム100は、対象オブジェクト112の輸送中に対象オブジェクト112のパッケージ重量を含むようにパッケージ属性を決定することができる。たとえば、ロボットシステム100は、対象オブジェクト112を最初に持ち上げている間に、転置ユニット104の
図2のセンサ216(たとえば、トルクまたは力センサ)から受信されたセンサ情報に基づいて、パッケージ重量を計算することができる。
【0151】
ブロック926に示すように、ロボットシステム100は、保管エリア705に転置される利用可能パッケージ362に関する情報を記録することができる。たとえば、ロボットシステム100は、利用可能パッケージ362の保管位置情報を保管マップに記録することができる。保管位置情報は、保管エリア705内の利用可能パッケージ362の保管位置に対応する情報とすることができ、これは2Dおよび/または3Dセンサを使用して決定することができる。ロボットシステム100は、各利用可能パッケージ362についてのパッケージ属性、パッケージID、またはこれらの組合せを記憶することができる。たとえば、ロボットシステム100は、対象オブジェクト112に対応するパッケージ属性およびパッケージIDを、対象オブジェクト112を表す保管エントリとしてマスターデータ252に記憶することができる。
【0152】
ブロック928において、ロボットシステム100は、保管エリア705についての保管容量カウンタを更新することができる。例として、ロボットシステム100は、保管エリア705に追加された利用可能パッケージ362の数に対応する保管容量カウンタの値を増加させることによって、保管容量カウンタを更新することができる。
【0153】
ブロック904において、ロボットシステム100は、現在保管エリア705に保管されている利用可能パッケージ362についてのパッケージグループ(たとえば、利用可能パッケージのサブグループ)を決定することができる。たとえば、ロボットシステム100は、現在保管エリア705内にある利用可能パッケージ362のパッケージ属性の類似性に応じてパッケージグループを決定することができる。具体的には、ロボットシステム100は、パッケージ高さに応じてパッケージンググループを決定することができる。換言すれば、パッケージグループのうちの1つにおける各利用可能パッケージ362は、そのパッケージグループ内の利用可能パッケージ362の他のインスタンスと同一(または類似)のパッケージ高さの値となる。ロボットシステム100は、利用可能パッケージ362が保管エリア705の内外に移動された場合に、パッケージグループのうちの1つまたは複数を更新することができる。たとえば、対象オブジェクト112の処理中に(すなわち、対象オブジェクト112が保管エリア705に移動される前、間、または後に)、ロボットシステム110は、対象オブジェクト112のパッケージ高さをパッケージグループのパッケージ高さと比較することができる。ロボットシステム100が、対象オブジェクト112のパッケージ高さと、パッケージグループ内の1つのパッケージ高さとが一致すると判定した場合、ロボットシステム100は、対象オブジェクト112をパッケージグループ内の特定の1つに追加することができる。そうでなければ、ロボットシステム100は、対象オブジェクト112のパッケージ高さに対応するパッケージグループの新たなインスタンスを生成することができ、これは続いて、同じ値のパッケージ高さを有する利用可能パッケージ362のさらなるインスタンスに追加することができる。
【0154】
ブロック906において、ロボットシステム100は、シミュレーション機能を実行して、現在保管エリア705に保管されている利用可能パッケージ362についてのシミュレートされたスタッキングプランを生成または更新することができる。シミュレートされたスタッキングプランは、タスク位置116上の利用可能パッケージ362の配置に関する詳細を含む。シミュレートされたスタッキングプランは、利用可能パッケージ362がパレットまたは台などのタスク位置116に載置されるスタッキングシーケンスIDに関する情報を含むこともできる。
【0155】
ロボットシステム100は、利用可能パッケージ362が開始位置114に到着した場合、利用可能パッケージ362のうちの1つが保管エリア705に追加され、パッケージグループのうちの1つにカテゴライズされた後、またはこれらの組合せにおいて、シミュレートされたスタッキングプランを反復的に生成または更新することができる。一実施形態では、ロボットシステム100は、パッケージ高さに基づいて各パッケージグループについて独立にシミュレーション機能を実行して、均一パッケージレイヤを実現するシミュレートされたスタッキングプランを生成することができる。均一パッキングレイヤを利用可能パッケージの単一のレイヤとして生成する場合、たとえば、ロボットシステム100は、離散化モデルに基づいて水平面に沿って利用可能パッケージ362を載置するための2Dプラン(たとえば、
図3Bの載置プラン350)としてシミュレートされたスタッキングプランを生成することができる。たとえば、ロボットシステム100は、パッケージグループのうちの1つに属する利用可能パッケージ362に対応する離散化オブジェクトモデル302を離散化台モデル304と比較することに基づいて、載置プラン350を生成することができる。ロボットシステム100は、離散化オブジェクトモデル302の異なる載置/配置を決定し、離散化台モデル304と重ね/比較し、重なる場合に離散化台モデル304の境界線内にある配置を検証/保持することができる。
【0156】
他の実施形態では、均一パッキングレイヤを組み合わせレイヤとして実現するようにシミュレートされたスタッキングプランを生成する場合、ロボットシステム100は、パッケージグループとは独立してシミュレーション機能を実行することができる。たとえば、ロボットシステム100は、利用可能パッケージ362に対する向きの制限(すなわち、特定の面がタスク位置116の載置面に対して仰向けで/反対を向いて、またはうつ伏せで/向かい合っている状態で、利用可能パッケージ362が載置されなければならない)がない場合、現在保管エリア705内に様々な向きで存在する(すなわち、パッケージが3次元で回転されている)各利用可能パッケージ362についてのパッケージ寸法(すなわち、パッケージ長、パッケージ幅、パッケージ高さ)を考慮するようにシミュレーション機能を実行することができる。例をさらに進めると、ロボットシステム100は、利用可能パッケージ362の1つまたは複数のパッケージスタックのパッケージ高さの合計を考慮するようにシミュレーション機能を実行することができ、これを利用可能パッケージ362の他のインスタンスのパッケージ寸法と比較して、(たとえば、
図8の載置811に示すように)組み合わせレイヤを実現することができるか否かを判定することができる。より具体的には、シミュレーション機能は、タスク位置116に載置された異なる向きの利用可能パッケージ362の単一のインスタンスと、利用可能パッケージ362のうちの1つまたは複数のパッケージスタックとの組み合わせを、パッケージの単一のインスタンスのパッケージ高さがパッケージスタック内の1つまたは複数のパッケージのパッケージ高さの合計と同じである場合に考慮するように、シミュレートされたスタッキングプランを生成することができる。同様に、パッケージスタック内の利用可能パッケージ362のパッケージ高さの合計が同じである限り、パッケージスタックの複数のインスタンスによって組み合わせレイヤを実現することができる。なお、パッケージ高さは、タスク位置116の載置エリアの平面に垂直なパッケージ寸法として決定され、これは、センサ情報に基づいて決定された(すなわち、ブロック920における)パッケージ高さとは無関係とすることができる。
【0157】
したがって、シミュレートされたスタッキングプランが均一パッキングレイヤを実現したか否かを判定するために、ロボットシステム100は、特に利用可能パッケージ362の新たなインスタンスが保管エリア705に追加された後に、合計面積要件および/またはパッケージ間隔要件を含むスタッキング表面積要件が満たされるまで、各利用可能パッケージ362についての載置位置を(たとえば、離散化オブジェクトモデル302などに従って)反復的に導出することができる。一例として、合計面積要件について、ロボットシステム100は、利用可能パッケージ362のうちの1つがシミュレートされたスタッキングプランに追加された後に、均一パッキングレイヤ(現在は不完全な状態にあり得る)の上面を形成するために使用される各利用可能パッケージ362の上面面積の合計として、合計水平面積を計算することができる。ロボットシステム100は、均一パッキングレイヤの上面を形成するために使用される各利用可能パッケージ362の上面面積の合計が表面積閾値を超える場合に、均一パッキングレイヤが合計面積要件を満たしていると決定することができる。
【0158】
他の例として、パッケージ間隔要件について、シミュレートされたスタッキングプランに対するそれぞれの反復的に導出された利用可能パッケージ362の載置を受けて、ロボットシステム100は、利用可能パッケージ362間の間隙領域および/またはオープンスペースのそれぞれを識別し、間隔閾値と比較することができる。ロボットシステム100は、間隙領域および/またはオープンスペースのそれぞれが間隔閾値未満である場合、均一パッキングレイヤがパッケージ間隔要件を満たしていると決定することができる。
【0159】
ブロック907において、ロボットシステム100は、均一レイヤトリガ、タイムリミットトリガ、保管容量トリガ、または載置開始コマンドの受信を含むパレタイズトリガの発生を判定することができる。たとえば、ロボットシステム100は、各利用可能パッケージ362が保管エリア705に保管された、および/またはシミュレートされたスタッキングプランが更新された後に、パレタイズトリガの発生をチェックすることができる。一実施形態では、ロボットシステム100は、システムユーザなど、ロボットシステム100の外部のソースからのものであり得る載置開始コマンドをロボットシステムが受信した場合に、パレタイズトリガが発生したと判定することができる。
【0160】
他の実施形態では、ロボットシステム100は、シミュレートされたスタッキングプランの評価に基づいて、均一レイヤトリガの発生を判定することができる。たとえば、ロボットシステム100は、(たとえば、パッケージグループのうちの1つまたは複数についての)シミュレートされたスタッキングプランを評価し、シミュレートされたスタッキングプランが、スタッキング表面積要件を満たす均一パッケージレイヤを実現した場合に、均一レイヤトリガが発生したと判定することができる。
【0161】
さらなる実施形態では、ロボットシステム100は、ユニット動作時間に基づいてタイムリミットトリガの発生を判定することができる。たとえば、ロボットシステム100は、ユニット動作時間を監視し、ユニット動作時間、たとえば、転置ユニット104のユニットアイドル時間および/または総動作時間がタイムリミット閾値を超えたと判定したことに応じて、タイムリミットトリガが発生したと判定することができる。
【0162】
さらに他の実施形態では、ロボットシステム100は、保管容量カウンタに基づいて保管容量トリガの発生を判定することができる。たとえば、ロボットシステム100は、保管容量カウンタを監視し、保管エリア507についての保管容量カウンタが保管容量閾値を超えたと判定したことに応じて、保管容量トリガが発生したと判定することができる。
【0163】
判定ブロック908において、ロボットシステム100が均一レイヤトリガとしてのパレタイズトリガの発生を判定した場合、処理はブロック910へ進んで、均一パッケージレイヤを実現したシミュレートされたスタッキングプランに従って、利用可能パッケージ362をタスク位置116に載置することができる。いくつかの実施形態では、ブロック908における判定に付け加えて、ロボットシステム100は、利用可能パッケージ362を載置するためにブロック910へ進むことを遅らせることができる。
【0164】
たとえば、ロボットシステム100は、パッキンググループのさらなるインスタンスについてのシミュレートされたスタッキングプランがスタッキング表面積要件に近づいている間に(不完全な均一パッキングレイヤとも呼ばれる)、パッケージグループのうちの1つについてのシミュレートされたスタッキングプランが均一パッキングレイヤを実現した状況において、利用可能パッケージ362の載置を遅らせることができる。具体的には、均一パッキングレイヤの不完全なインスタンスのシミュレートされたスタッキングプランにおける利用可能パッケージ362のパッケージ重量の合計が、スタッキング表面積要件を満たす均一パッキングレイヤを実現したパッケージグループのインスタンスについてのシミュレートされたスタッキングプランのそれよりも大きい(または大きいと想定される)場合、ロボットシステム100は、ブロック910へ進むことを遅らせることができる。したがって、ロボットシステム100は、パッケージ重量に応じて、利用可能パッケージ362の載置を優先することができる(すなわち、より重いパッケージをタスク位置の載置エリアにより近くに載置する)。いくつかの実施形態では、ロボットシステム100は、パレタイズトリガの異なるインスタンス(すなわち、タイムリミットトリガ、保管容量トリガ、または載置開始コマンドの受信)が発生するまで、ブロック910へ進むことを遅らせることができ、発生した時点で、処理はブロック910へ進んで、スタッキング表面積要件を満たす均一パッケージングレイヤを実現したシミュレートされたスタッキングプランに従って利用可能パッケージ362を載置することができる。
【0165】
ロボットシステム100が、タイムリミットトリガ、保管容量トリガ、または載置開始コマンドの受信であるパレタイズトリガの発生を判定した状況において、処理はブロック909へ進むことができる。ブロック909において、ロボットシステム100は、残余パッケージプランに基づいてシミュレートされたスタッキングプランを生成することができる。一実施形態では、ロボットシステム100は、シミュレーション機能を実施して、
図6の方法600を適用することによって、現在保管エリア705にある利用可能パッケージ362に基づいて、パレタイズ基準に従って、
図5のスタッキングプラン500であるシミュレートされたスタッキングプランを生成することができる。たとえば、シミュレーション機能を実行して、2次元(2D)載置プランを生成することができ、2D載置プランは、タスク位置116の水平面に沿った利用可能パッケージ362のうちの1つまたは複数の2Dマッピングを表す。例を続けると、シミュレーション機能を実行して、2D載置プランの複数のインスタンスを1つまたは複数のパッケージの3次元(3D)マッピングに変換することによって、残余パッケージプランを生成することができ、3Dマッピングは、タスク位置116上の複数のレイヤ内の利用可能パッケージ362のうちの1つまたは複数の配置を表し、各レイヤは他のレイヤの上にあり、2D載置プランの対応するインスタンスを有する。例をさらに進めると、残余パッケージプランを生成することは、シミュレートされたスタッキングプランに基づいて利用可能パッケージ362についてのスタッキングシーケンスIDを決定することを含むことができ、ここで、スタッキングシーケンスIDは、タスク位置362上の利用可能パッケージ362についての載置順序を識別するためのものである。
【0166】
パレタイズ基準などに従って残余パッケージプランを生成することは、利用可能パッケージ362の最大スタック可能高さを観察しながら、パッキング体積効率および/または想定パッケージ数を満たすことを含むことができる。いくつかの実施形態では、残余パッケージプランは、たとえば、均一パッケージレイヤとして載置されている利用可能パッケージ362などの載置済みのパッケージの既存のレイヤ上に利用可能パッケージ362の残余インスタンスを載置するように生成することができる。
【0167】
ブロック910において、ロボットシステム100は、(たとえば、ブロック906を介して)スタッキング表面積要件を満たす均一スタッキングレイヤを実現したシミュレートされたスタッキングプラン、または(たとえば、ブロック909を介して)残余パッケージプランとして生成されたシミュレートされたスタッキングプランなどのシミュレートされたスタッキングプランに従って、保管エリア705内の利用可能パッケージ362のうちの少なくとも一部を目標場所116に載置するためのプランを実施することができる。たとえば、ロボットシステム100は、転置ユニット104がシミュレートされたスタッキングプランに従って保管エリア705からパッケージを取り出し、タスク位置116に載置するための命令を生成することができる。ロボットシステム100は保管マップを使用して、利用可能パッケージ362と、保管エリア705内の対応する保管位置とを識別することができる。利用可能パッケージ362を目標場所116に載置するためのプランに関する詳細については、以下の
図10において論じる。
【0168】
利用可能パッケージ362を目標場所116に載置した後、ブロック911において、ロボットシステム100は、保管エリア705から利用可能パッケージ362を持ち去ったことを反映するように、保管マップおよび/または保管位置カウンタを更新することができる。たとえば、ロボットシステム100は、保管エリア705から持ち去られた(すなわち、ブロック910)利用可能パッケージ362に対応するエントリ(たとえば、パッケージID、保管位置情報、パッケージ属性、載置情報など)を除去するように保管マップを更新して、保管位置が利用可能パッケージ362の新たな到着インスタンスを保管するのに現在利用可能であることを示すことができる。同様に、ロボットシステム100は、利用可能パッケージ362をタスク位置に載置するためのプランの実施中に持ち去られた(すなわち、ブロック910)利用可能パッケージ362の数だけ保管位置カウンタの現在の値を減らすことによって、保管位置カウンタを更新することができる。
【0169】
判定ブロック907を再度参照すると、ロボットシステム100がパレタイズトリガの発生を判定しなかった場合、ロボットシステム100はブロック902へ進むことができる。ブロック902において、ロボットシステム100は、開始位置114にある、次の順番の利用可能パッケージ362の処理を継続することができる。
【0170】
判定ブロック912において、ロボットシステム100は、処理すべき利用可能パッケージ362がまだあるか否かを判定する。受け取るべき利用可能パッケージ362がまだある場合、処理900はブロック902へ進むことができ、系列またはシーケンス内の次の利用可能パッケージ362を処理することができる。台116に載置するために処理すべきパッケージがこれ以上ない場合、処理は完結する。
【0171】
いくつかの実施形態では、ベルトコンベヤ110の動作は、ロボットシステム100のステータスに応じて調整することができる。たとえば、ロボットシステム100が利用可能パッケージ362をパレタイズしている間に、たとえば、パッケージを保管エリア705から目標エリア116に転置している間に(たとえば、ブロック910内)、コンベヤベルト110上に処理すべき利用可能パッケージ362がまだある場合、転置ユニット104が利用可能パッケージ362のうちの1つまたは複数を保管エリア705から目標場所116に移動させることができるように、コンベヤベルト110を停止する必要があり得、またはその速度を低下させる必要があり得る。たとえば、開始位置114にあるパッケージ、すなわち、対象オブジェクト112が指定期間を超えて転置ユニット104により収集されない場合、コンベヤベルト110は自動的に停止してもよく、またはいくつかの実施形態では、ロボットシステム100によって停止または減速させてもよい。いくつかの実施形態では、ロボットシステム100は、コンベヤベルト110の速度を制御する(たとえば、開始、停止、または調整する)命令を生成することによって、コンベヤベルト110の速度を規制するためのプランを実施することができる。
【0172】
図10は、様々な実施形態と整合する、パッケージを保管エリアからタスク位置に載置するための処理1000の流れ図である。いくつかの実施形態では、処理1000は、
図1および
図7の環境において、
図9のブロック910の一部として実施することができる。処理1000は、
図9のブロック907においてパレタイズトリガが発生したと判定した後に、開始することができる。
【0173】
ブロック1001において、ロボットシステム100は、シミュレートされたスタッキングプランにアクセスして、タスク位置116に載置すべきシーケンス内の次の利用可能パッケージ362のインスタンスなど、シミュレートされたスタッキングプランに従って利用可能パッケージ362の載置順序を決定することができる。たとえば、ロボットシステム100は、ブロック906において生成された均一パッキングレイヤを実現したシミュレートされたスタッキングプラン、または(スタッキングシーケンスIDを含み得る)
図9のブロック909において生成された残余パッケージプランとしてのシミュレートされたスタッキングプランに従って、各利用可能パッケージ362についての載置順序を決定することができる。
【0174】
ブロック1002において、ロボットシステム100は、タスク位置116(たとえば台)に載置するために識別された利用可能パッケージ362のインスタンス(すなわち、識別されたパッケージ)を保管エリア705から取り出すためのプランを実施することができる。たとえば、ロボットシステム100は、転置ユニット104が識別されたパッケージを保管エリア705から取り出すための命令を生成することができる。ロボットシステム100は、保管マップを使用して保管エリア705における識別されたパッケージの保管位置を決定し、それに従って保管エリア705から識別されたパッケージを取り出すことができる。
【0175】
ブロック1003において、ロボットシステム100は、シミュレートされたスタッキングプランに従って、識別されたパッケージをタスク位置116に載置するためのプランを実施することができる。たとえば、ロボットシステム100は、保管エリア705から識別されたパッケージを取り出し、スタッキングシーケンスIDに応じて識別されたパッケージをタスク位置116に載置するように、転置ユニット104を実装することができる。
【0176】
判定ブロック1004において、ロボットシステム100は、まだタスク位置116に載置されていないシミュレートされたスタッキングプランにおける利用可能パッケージ362がまだあるか否かを判定することができる。タスク位置116に載置すべき利用可能パッケージ362がまだある場合、処理はブロック1001へ進んで、シミュレートされたスタッキングプランに従って、シーケンス内の次の利用可能パッケージ362のインスタンスを取り出すことができる。タスク位置116に載置すべき利用可能パッケージ362がもうない場合、処理は完結する。
【0177】
結論
開示した技術の実施例の上記の詳細な説明は、網羅的なものではなく、開示した技術を上記で開示した厳密な形に限定するものでもない。開示した技術の具体例を例示の目的で上述しているが、当業者であれば理解するように、開示した技術の範囲内で様々な等価な修正が可能である。たとえば、処理またはブロックを所与の順序で提示しているが、代替的な実施態様は異なる順序のステップを有するルーチンを実行してもよく、または異なる順序のブロックを有するシステムを採用してもよく、一部の処理またはブロックを削除、移動、追加、細分化、結合、および/または修正して、代替的な組み合わせまたは部分的な組み合わせを提供してもよい。これらの処理またはブロックのそれぞれは、種々の異なる方法で実施されてもよい。また、処理またはブロックは順番に実行されるように示している場合があるが、これらの処理またはブロックは代わりに並列に実行または実施されてもよく、または異なる時刻に実行されてもよい。さらに、本明細書に記載の任意の特定の数字は例にすぎず、代替的な実施態様は異なる値または範囲を採用してもよい。
【0178】
これらのおよび他の変更は、上記の詳細な説明に照らして、開示した技術に対して行うことができる。詳細な説明では、開示した技術の特定の例だけでなく、企図される最良の形態を説明しているが、上記の説明が文中でどれほど詳細に見えても、開示した技術は多くの方法で実践することができる。システムの詳細はその特定の実施態様において大幅に異なってもよく、本明細書で開示した技術によってなおも包含される。上述のように、開示した技術の特定の特徴または態様を説明する際に使用される特定の用語は、その用語が関連する開示した技術の任意の特定の特性、特徴、または態様に限定されるようにその用語が本明細書で再定義されることを意味するよう解釈されるべきではない。したがって、本発明は、添付の特許請求の範囲を除いて、限定されない。一般に、以下の特許請求の範囲で使用される用語は、上記の詳細な説明のセクションがそのような用語を明確に定義していない限り、開示した技術を本明細書で開示した具体例に限定するように解釈されるべきではない。
【0179】
本発明の特定の態様を特定の請求項の形式で以下に提示するが、出願人は本発明の様々な態様を任意数の請求項の形式で企図している。したがって、出願人は、本出願または継続出願において、そのような追加の請求項の形式を追求するために本出願を提出した後に追加の請求を追求する権利を留保している。
【課題】従来のシステムは、受け取ったパッケージのばらつき(たとえば、異なるシーケンス、位置、および/または向き)、予期しないエラー(たとえば、衝突および/または紛失)、リアルタイムのパッキング要求(たとえば、受注)、および/または他のリアルタイム要因に適応することができない
【解決手段】パッケージを目的地に指定された配置で配置するためのロボットシステムは、到着パッケージを処理し、パッケージを一時的な保管エリアに保管し、シミュレーション機能を実行してシミュレートされたスタッキングプランを生成または更新し、パレタイズトリガの発生を判定する。そして、パレタイズトリガの発生を判定すると、シミュレートされたスタッキングプランに従ってパッケージをパレットに載置する。パレタイズトリガは、タイムリミットトリガ、均一レイヤトリガ、保管容量トリガ、または載置開始コマンドの受信のうちの1つとすることができる。