(57)【要約】【課題】様々な実世界の要因によらずタスクを完了するようにロボットの様々な側面を制御し管理するための改良された技術およびシステムを提供する。【解決手段】ロボットシステムを動作させるための方法は、利用可能パッケージを台に載置するためのパッケージグループを決定することと、利用可能パッケージおよび台を表す離散化モデルに基づいて２次元（２Ｄ）載置プランを生成することと、２Ｄ載置プランに基づいて３次元（３Ｄ）スタッキングプランを生成することと、３Ｄスタッキングプランを実施して利用可能パッケージを台に載置することとを含む。【選択図】図６
2020196626.tif 000002
【特許請求の範囲】
【請求項１】
ロボットシステムを動作させる方法であって、
プラットフォームに載置するように指定された利用可能パッケージを表すパッケージセットを識別することと、
前記利用可能パッケージ内のパッケージタイプの物理的な寸法、形状、またはこれらの組み合わせを表し、かつ、前記パッケージセットに対応する離散化オブジェクトモデルにアクセスすることと、
前記利用可能パッケージが載置される前記プラットフォームを表す離散化プラットフォームモデルにアクセスすることと、
前記利用可能パッケージに基づいて、前記利用可能パッケージのサブグループを表すパッケージグループを決定することと、
前記パッケージグループに対する処理順序を計算することと、
前記パッケージグループに基づいて、前記処理順序に従って、水平面に沿った前記利用可能パッケージの２次元（２Ｄ）マッピングを表す載置プランを生成することと、
３Ｄマッピング内のレイヤに対応する前記載置プランを３次元（３Ｄ）状態に変換することに基づいて、前記利用可能パッケージの３Ｄマッピングを表すスタッキングプランを生成することと、
前記スタッキングプランを実施して、前記利用可能パッケージのうちの１つまたは複数を１つまたは複数の他のパッケージの上に載置して、前記３Ｄマッピングに従って前記利用可能パッケージを前記プラットフォームに載置することと、
を含む前記方法。
【請求項２】
前記スタッキングプランに基づいて、前記利用可能パッケージについての載置順序を特定するためのパッキングシーケンスを計算することをさらに含み、
前記スタッキングプランを実施することは、前記パッキングシーケンスに従って前記スタッキングプランを実施して、前記利用可能パッケージを移載および載置することを含む、
請求項１に記載の方法。
【請求項３】
前記パッキングシーケンスを計算することは、
前記利用可能パッケージのうちの１つまたは複数を下位レイヤの載置プランから上位レイヤの載置プランへ再割り当てすることによって、前記載置プランを調整することと、
各載置プランについて前記パッキングシーケンスを計算することと、
を含み、
前記スタッキングプランを実施することは、前記スタッキングプランを実施して、前記利用可能パッケージをレイヤごとに載置することを含む、
請求項２に記載の方法。
【請求項４】
前記パッキングシーケンスを計算することは、前記利用可能パッケージの高さ、ユニット位置に対する前記利用可能パッケージの載置位置、またはこれらの組み合わせに応じて前記スタッキングプランを分析することを含む、
請求項２に記載の方法。
【請求項５】
前記パッケージグループを決定することは、前記利用可能パッケージについての指定された優先度、脆性レーティング、パッケージ重量範囲、高さ、パッケージタイプ、またはこれらの組み合わせに応じて前記利用可能パッケージをグループ化することを含む、
請求項１に記載の方法。
【請求項６】
前記処理順序を計算することは、前記パッケージグループを、含まれるパッケージ数、合計水平面積、重量範囲、脆性レーティング、またはこれらの組み合わせに応じて優先順位付けすることを含む、
請求項１に記載の方法。
【請求項７】
前記処理順序を計算することは、前記スタッキングプランを実施する前に、前記利用可能パッケージの初期セットに対する前記処理順序を計算することを含む、
請求項６に記載の方法。
【請求項８】
前記処理順序を計算することは、前記スタッキングプランの実施後または実施中に、前記利用可能パッケージの残余セットに対する前記処理順序を計算することを含む、
請求項６に記載の方法。
【請求項９】
前記載置プランを生成することは、
前記利用可能パッケージ内のパッケージタイプを識別することと、
前記パッケージタイプのうちの１つについての初期載置位置を決定すること、および、１つまたは複数の載置条件に基づいて次のパッケージについての載置位置候補を導出すること、に基づいて、前記利用可能パッケージのそれぞれについての載置位置を反復的に導出することと、
を含み、
前記載置プランはそれぞれ、前記利用可能パッケージのうちの１つまたは複数についての前記初期載置位置および前記載置位置候補の一意の載置組み合わせを表す、
請求項１に記載の方法。
【請求項１０】
前記１つまたは複数の載置条件は、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件、またはこれらの組み合わせを含む、
請求項９に記載の方法。
【請求項１１】
前記載置位置を反復的に導出することは、
反復にわたって前記載置プランを追跡することと、
前記１つまたは複数の載置条件に従って前記載置プランについての載置スコアを計算することと、
前記載置スコアに応じて前記載置プランを配列することと、
を含む、
請求項９に記載の方法。
【請求項１２】
前記組み合わせを追跡することは、
前記載置プランを含む探索木を生成および更新することと、
空きソースステータスまたは不変ソースステータスを判定することに基づいて前記反復を停止することと、
を含む、
請求項１１に記載の方法。
【請求項１３】
前記載置位置候補は、水平方向に沿って前記初期載置位置から閾値距離内にある、
請求項９に記載の方法。
【請求項１４】
前記スタッキングプランを生成することは、上のパッケージと支持パッケージとの重なり、前記支持パッケージ上の前記上のパッケージの突出、１つまたは複数の支持パッケージに対する前記上のパッケージの重心（ＣｏＭ）位置、２つ以上の支持パッケージ間の離間距離、２つ以上の支持パッケージの高さの差、またはこれらの組み合わせに関するスタッキングルールに従って前記スタッキングプランを生成することを含む、
請求項１に記載の方法。
【請求項１５】
前記載置プランを生成すること、および前記スタッキングプランを生成することは、
スタッキングシナリオ候補を導出することと、
前記載置スコアに応じて前記スタッキングシナリオ候補のうちの１つを選択することに基づいて前記スタッキングプランを生成することと、
を含み、
前記各スタッキングシナリオ候補は、再帰的または反復的に、
下位レイヤを形成するための下位２Ｄプランを生成することと、
第１の２Ｄプラン候補の隣接および／または連続した水平な上面を表す１つまたは複数の平面セクションを特定することと、
前記１つまたは複数の平面セクションに対する残余パッケージグループの載置をテストすることに基づいて上位２Ｄプランを生成することと、
少なくとも載置されるパッケージ数に基づいて前記スタッキングシナリオ候補についての載置スコアを計算することと、
空きソースステータス、満杯レイヤステータス、または不変スコアステータスを判定することに基づいて、前記反復または前記再帰を停止することと、
に基づいて導出される、
請求項１に記載の方法。
【請求項１６】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに接続され、前記プロセッサによって実行可能な命令が記憶される、少なくとも１つのメモリデバイスと、
を備え、
前記命令は、
利用可能パッケージをプラットフォームに載置するためのパッケージグループを決定することと、
前記利用可能パッケージおよび前記プラットフォームを表す離散化モデルにアクセスすることと、
前記離散化モデルに基づいて、水平面に沿って前記利用可能パッケージを載置するための２つ以上の２次元（２Ｄ）載置プランを生成することと、
前記２つ以上の２Ｄ載置プランに基づいて、垂直方向に沿って配置される前記２つ以上の２Ｄ載置プランを含むスタッキングプランを生成することと、
前記スタッキングプランを実施して、前記利用可能パッケージのうちの１つまたは複数を１つまたは複数の他のパッケージの上に載置して、前記利用可能パッケージを前記台に載置することと、
を行わせる、
ロボットシステム。
【請求項１７】
ロボットシステムによりその１つまたは複数のプロセッサを介して実行された場合に、前記ロボットシステムに方法を実施させるプロセッサ命令が記憶される有形非一時的コンピュータ可読媒体であって、前記命令は、
プラットフォームに載置するように指定された利用可能パッケージを表すパッケージセットを識別する命令と、
前記利用可能パッケージ内のパッケージタイプの物理的な寸法、形状、またはこれらの組み合わせを表し、かつ、前記パッケージセットに対応する離散化オブジェクトモデルにアクセスする命令と、
前記利用可能パッケージが載置される前記プラットフォームを表す離散化プラットフォームモデルにアクセスする命令と、
前記利用可能パッケージに基づいて、前記利用可能パッケージのサブグループを表すパッケージグループを決定する命令と、
前記パッケージグループに対する処理順序を計算する命令と、
前記パッケージグループに基づいて、前記処理順序に従って、水平面に沿った前記利用可能パッケージの２次元（２Ｄ）マッピングを表す載置プランを生成する命令と、
３Ｄマッピング内のレイヤに対応する前記載置プランを３次元（３Ｄ）状態に変換することに基づいて、前記利用可能パッケージの３Ｄマッピングを表すスタッキングプランを生成する命令と、
前記スタッキングプランを実施して、前記利用可能パッケージのうちの１つまたは複数を１つまたは複数の他のパッケージの上に載置して、前記３Ｄマッピングに従って前記利用可能パッケージを前記プラットフォームに載置する命令と、
を含む前記有形非一時的コンピュータ可読媒体。
【請求項１８】
前記命令は、
前記スタッキングプランに基づいて、前記利用可能パッケージについての載置順序を特定するためのパッキングシーケンスを計算する命令をさらに含み、
前記スタッキングプランを実施する前記命令は、前記パッキングシーケンスに従って前記スタッキングプランを実施して、前記利用可能パッケージを移載および載置する命令を含む、
請求項１７に記載の有形非一時的コンピュータ可読媒体。
【請求項１９】
前記パッケージグループを決定する前記命令は、前記利用可能パッケージについての指定された優先度、脆性レーティング、パッケージ重量範囲、高さ、パッケージタイプ、またはこれらの組み合わせに応じて前記利用可能パッケージをグループ化する命令を含み、
前記処理順序を計算する前記命令は、前記パッケージグループを、含まれるパッケージ数、合計水平面積、前記パッケージ重量範囲、前記脆性レーティング、またはこれらの組み合わせに応じて優先順位付けする命令を含み、
前記載置プランを生成する前記命令は、
前記利用可能パッケージ内のパッケージタイプを識別する命令と、
前記パッケージタイプのうちの１つについての初期載置位置を決定すること、および、１つまたは複数の載置条件に基づいて次のアイテムについての載置位置候補を導出すること、に基づいて、前記利用可能パッケージのそれぞれについての載置位置を反復的に導出する命令と、
前記１つまたは複数の載置条件に従って前記載置プランを配列する命令と、
を含む、
請求項１８に記載の有形非一時的コンピュータ可読媒体。
【請求項２０】
前記載置プランを生成する前記命令、および前記スタッキングプランを生成する前記命令は、
前記載置プランに追加される前記パッケージに関する高さ情報に基づいて前記載置プランを３Ｄ状態に変換することと、
前記３Ｄ状態および３Ｄ載置設定または基準に基づいて、前記載置プランについての載置スコアを計算することと、
前記載置スコアに応じて前記載置プランのうちの１つを選択することに基づいて、前記スタッキングプランを生成するための命令と、
を含む、
請求項１８に記載の有形非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、Ｒｏｓｅｎ  Ｎ．ＤｉａｎｋｏｖおよびＤｅｎｙｓ  Ｋａｎｕｎｉｋｏｖによる、「Ａ  ＲＯＢＯＴＩＣ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＤＹＮＡＭＩＣ  ＰＡＣＫＩＮＧ  ＭＥＣＨＡＮＩＳＭ」と題された、同時出願された米国特許出願に関する主題を含み、これはＭｕｊｉｎ，Ｉｎｃに譲渡され、代理人整理番号１３１８３７−８００６．ＵＳ０１によって識別され、その全体が引用により本明細書に組み込まれている。
【０００２】
本出願は、Ｒｏｓｅｎ  Ｎ．ＤｉａｎｋｏｖおよびＤｅｎｙｓ  Ｋａｎｕｎｉｋｏｖによる、「Ａ  ＲＯＢＯＴＩＣ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＥＲＲＯＲ  ＤＥＴＥＣＴＩＯＮ  ＡＮＤ  ＤＹＮＡＭＩＣ  ＰＡＣＫＩＮＧ  ＭＥＣＨＡＮＩＳＭ」と題された、同時出願された米国特許出願に関する主題を含み、これはＭｕｊｉｎ，Ｉｎｃに譲渡され、代理人整理番号１３１８３７−８００７．ＵＳ０１によって識別され、その全体が引用により本明細書に組み込まれている。
【０００３】
本出願は、Ｒｏｓｅｎ  Ｎ．ＤｉａｎｋｏｖおよびＤｅｎｙｓ  Ｋａｎｕｎｉｋｏｖによる、「ＲＯＢＯＴＩＣ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＰＡＣＫＡＧＥＳ  ＡＲＲＩＶＩＮＧ  ＯＵＴ  ＯＦ  ＳＥＱＵＥＮＣＥ」と題された、同時出願された米国特許出願に関する主題を含み、これはＭｕｊｉｎ，Ｉｎｃに譲渡され、代理人整理番号１３１８３７−８００８．ＵＳ０１によって識別され、その全体が引用により本明細書に組み込まれている。
【０００４】
本出願は、Ｒｏｓｅｎ  Ｎ．ＤｉａｎｋｏｖおよびＤｅｎｙｓ  Ｋａｎｕｎｉｋｏｖによる、「ＲＯＢＯＴＩＣ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＡＬＬＥＴＩＺＩＮＧ  ＰＡＣＫＡＧＥＳ  ＵＳＩＮＧ  ＲＥＡＬ−ＴＩＭＥ  ＰＬＡＣＥＭＥＮＴ  ＳＩＭＵＬＡＴＩＯＮ」と題された、同時出願された米国特許出願に関する主題を含み、これはＭｕｊｉｎ，Ｉｎｃに譲渡され、代理人整理番号１３１８３７−８００９．ＵＳ０１によって識別され、その全体が引用により本明細書に組み込まれている。
【０００５】
本技術は、一般にはロボットシステムを対象とし、より詳細には、オブジェクトをパッキングするためのシステム、処理、および技術を対象とする。
【背景技術】
【０００６】
向上し続ける性能および低下するコストによって、多くのロボット（たとえば、物理的なアクションを自動的／自律的に実行するように構成される機械）が、現在多くの分野において広く使用されている。ロボットは、たとえば、製造および／または組み立て、パッキングおよび／またはパッケージング、輸送および／または出荷などにおける様々なタスク（たとえば、オブジェクトを操作するまたは空間を通して移載する）を実行するために使用することができる。タスクを実行する際に、ロボットは人間のアクションを再現することによって、危険または反復的なタスクを実行するのに本来必要とされる人間の関与を置き換えるまたは減らすことができる。
【０００７】
しかしながら、技術的進歩にもかかわらず、ロボットはより複雑なタスクを実行するのに必要とされる人間の敏感性および／または順応性を複製するのに必要な精巧さを欠いていることが多い。たとえば、ロボットは、様々な実世界の要因から生じ得るばらつきまたは不確実性を考慮するための、実行されるアクションにおける制御の粒度および柔軟性を欠いていることが多い。したがって、様々な実世界の要因によらずタスクを完了するようにロボットの様々な側面を制御し管理するための改良された技術およびシステムへの必要性が残っている。
【図面の簡単な説明】
【０００８】
【図１】３次元パッキング機構を有するロボットシステムが動作し得る例示的な環境の図である。
【図２】本技術の１つまたは複数の実施形態によるロボットシステムを示すブロック図である。
【図３Ａ】本技術の１つまたは複数の実施形態による離散化オブジェクトの図である。
【図３Ｂ】本技術の１つまたは複数の実施形態による離散化パッキングプラットフォーム（台）の図である。
【図３Ｃ】本技術の１つまたは複数の実施形態による載置計画処理の図である。
【図４】図４Ａ〜図４Ｃは、本技術の１つまたは複数の実施形態によるスタッキングルールの図である。
【図５】図５Ａは、本技術の１つまたは複数の実施形態による例示的なスタッキングプランの図である。図５Ｂは、本技術の１つまたは複数の実施形態によるスタッキングシーケンスの図である。
【図６】本技術の１つまたは複数の実施形態による図１のロボットシステムを動作させる（操作する）ための流れ図である。
【発明を実施するための形態】
【０００９】
本明細書では、パッキング機構を有するロボットシステムのためのシステムおよび方法を説明する。いくつかの実施形態に従って構成されるロボットシステム（たとえば、１つまたは複数の指定タスクを実行するデバイスの統合システム）により、オブジェクトについての最適な保管位置を導出し、それに従ってスタックすることによって、パッキングおよび保管効率が向上する。
【００１０】
従来のシステムは、オフラインパッキングシミュレータを使用して、パッキングシーケンス／配置を事前に決定する。従来のパッキングシミュレータは、所定のまたは推定されるケースのセットに関するオブジェクト情報（たとえば、ケースの形状／サイズ）を処理してパッキングプラン（梱包プラン）を生成する。決定されると、パッキングプランは、目的地（たとえば、パレット、ビン、ケージ、ボックスなど）におけるオブジェクトの具体的な載置位置／姿勢、事前定義された載置のシーケンス、および／または所定のモーションプランを規定および／または要求することができる。従来のパッキングシミュレータは、所定のパッキングプランから、そのパッキングプランに合致するまたは可能にするソース要件（たとえば、オブジェクトについてのシーケンスおよび／または載置）を導出し得る。パッキングプランは従来のシステムではオフラインで開発されるので、プランは実際のパッキング動作／条件、オブジェクトの到着、および／または他のシステムの実装とは独立している。したがって、全体的な動作／実装では、（たとえば、開始／拾得位置において）受け取ったパッケージが、所定のパッキングプランに合致する固定のシーケンスに従うことが必要になる。したがって、従来のシステムは、リアルタイムの条件および／または受け取ったパッケージのばらつき（たとえば、異なるシーケンス、位置、および／または向き）、予期しないエラー（たとえば、衝突および／または紛失）、リアルタイムのパッキング要求（たとえば、受注）、および／または他のリアルタイム要因に適応することができない。
【００１１】
さらに、従来のシステムは、厳格な所定のプラン／シーケンスに従ってオブジェクトをグループ化し、パッキングするので、ソース位置にある全てのオブジェクトが（１）同一の寸法／タイプを有すること、および／または（２）既知のシーケンスに従って到着することを必要とする。たとえば、従来のシステムでは、オブジェクトが固定のシーケンスに従って（コンベヤなどを介して）拾得位置に到着することが必要となる。また、たとえば、従来のシステムでは、拾得位置にあるオブジェクトが所定の姿勢に従って指定位置に載置されることが必要となる。したがって、従来のシステムでは、所定のシーケンス／配置に従ってオブジェクトをソースに（すなわち、パッキング動作の前に）並べるおよび／または載置するための１つまたは複数の動作が必要である。大抵、従来のシステムは、所定のシーケンス／姿勢に従ってオブジェクトをソースに並べるおよび／または載置するためのシーケンスバッファを必要とし、これは１００万ＵＳドル以上かかる。
【００１２】
一方、本明細書に記載のロボットシステムは、システム動作中にパッキングプランを生成することができる。ロボットシステムは、様々なリアルタイム条件に基づいてシステム動作中にリアルタイムのおよび／または動的なパッキングプランを生成することができる。リアルタイム条件は、現在存在するまたは進行中の条件、たとえば、オブジェクトの実際のソースシーケンス／位置／姿勢、オブジェクト条件および／または要件、載置要件、および／または他のリアルタイム要因を含むことができる。ロボットシステムは、パッキングプランの処理時の現在の／進行中の条件および要因に従って、たとえば、トリガイベント（たとえば、受注／要求、出荷スケジュール、および／またはオペレータの入力）に応答して、パッキングプランをリアルタイムで生成することができる。いくつかの実施形態では、パッキングプランは、たとえば、対応するイベント（たとえば、再評価タイミング、パッキング／操作エラー、たとえば、衝突または紛失、および／または他の動的な条件の発生）に応答して、動的に（たとえば、最初に１つまたは複数の動作を開始した後に、たとえば、実際のパッキング動作が開始した後に）生成および／または調整することができる。
【００１３】
従来のシステムとは異なり、本明細書に記載のロボットシステムは、現在の／ライブの条件（たとえば、オブジェクトのソースシーケンス／位置／姿勢、オブジェクト条件および／または要件など）に従ってリアルタイムに載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、離散化メカニズム（たとえば、処理、回路、関数、および／またはルーチン）に基づいてパッキングプランを生成することができる。たとえば、ロボットシステムは離散化メカニズムを使用して、離散化単位（すなわち、１つの離散エリア／スペース）に従って、オブジェクトおよび／または目標場所の物理的なサイズ／形状を記述することができる。ロボットシステムは、離散化単位を使用して想定オブジェクトを記述する離散化オブジェクトのプロフィール、および／または目標場所（たとえば、パレットの上面および／またはビン／ケース／ボックス内の空間／底面）を記述する離散化された目的地のプロフィールを生成することができる。したがって、ロボットシステムは、連続的な実世界の空間／エリアをコンピュータ読み取り可能なデジタル情報に変換することができる。さらに、離散化データによって、パッケージフットプリントを記述し、様々なパッケージ載置を比較するための計算複雑性を削減することが可能になり得る。たとえば、パッケージ寸法は、実世界の１０進数ではなく、離散化単位の整数に対応することができ、これにより数学的計算が容易になる。
【００１４】
いくつかの実施形態では、ロボットシステムは、オブジェクトグループを決定することに基づいてパッキングプランを生成することができる。オブジェクトグループは、オブジェクトの記述、たとえば、顧客指定の優先度、オブジェクトの脆性限度（たとえば、支持重量制限）、オブジェクト重量、オブジェクトの高さ、オブジェクトタイプ、および／またはオブジェクトの他の側面に基づくことができる。ロボットシステムは、オブジェクトグループを使用して、１つまたは複数のオブジェクトグループを含む２次元（２Ｄ）載置プランを生成し評価することができる。ロボットシステムは、１つまたは複数の条件／ルールを満たす２Ｄ載置プランを選択し、選択した２Ｄ載置プランを３次元（３Ｄ）マッピング結果に変換することができる。３Ｄマッピング結果は、たとえば、２Ｄ載置プランに含まれるオブジェクトの高さ測定値と、レイヤ内のそれらの相対位置とに応じて、２Ｄ載置プランの高さを記述することができる。ロボットシステムは、垂直順序／シーケンスへの３Ｄマッピング結果を評価して、２Ｄ載置プランについての垂直シーケンスを含む３Ｄ載置プランを生成することができる。いくつかの実施形態では、ロボットシステムは、初期状態の（たとえば、あらゆるオブジェクトが目的地ゾーンに載置される前の）オブジェクトについて、および／またはパッキングされていない状態のままの（たとえば、１つまたは複数のオブジェクトが目的地ゾーンに載置された後の）オブジェクトについて、２Ｄ／３Ｄ載置プランを生成することができる。オブジェクトのグループ化および載置プランに関する詳細については後述する。
【００１５】
以下に説明するロボットシステムは、リアルタイムの実装のための簡素化され合理化された処理アーキテクチャ／シーケンスを利用することができる。たとえば、ロボットシステムは（たとえば、デスクトップ、サーバなどのコンシューマコンピューティングデバイスを介して）、従来のシーケンサおよびシミュレータを利用することなく、リアルタイムのニーズ（たとえば、受注）、および／またはリアルタイムの利用可能性（たとえば、到着オブジェクトおよび／または現在アクセス可能なオブジェクトの出荷目録）に基づいて、パッキングプランを生成することができる。オフラインの状況で利用される場合、たとえば、従来のシーケンサおよびシミュレータを置き換えるために、ロボットシステムは、よりシンプルかつ安価なソリューションを使用してオフラインパッキングプランを提供することができる。
【００１６】
したがって、ロボットシステムは、リアルタイム条件への適応に基づいて、オブジェクトをパッキングする効率、速度、および精度を向上させることができる。たとえば、本明細書に記載のシステムは、現在のニーズ（たとえば、受注）、パッケージの現在のステータス（たとえば、位置、向き、および／または数量／利用可能性）、および／またはスタック済み／載置済みのパッケージのリアルタイムステータスに合致する／対処する載置プランを生成することができる。したがって、ロボットシステムは、様々な、異なる／想定外の数量、位置、向き、および／またはシーケンスのパッケージを受け取り、パッキングすることができる。
【００１７】
さらに、ロボットシステムは、従来のシステムにおいてオブジェクトをソースに並べるまたは載置するためにおよび／またはパッキング動作のために（たとえば、エラー処理のために）必要なはずの１つまたは複数の動作、機械（たとえば、シーケンスバッファ）、および／または人間の支援を無くすことによって、全体のコストを削減することができる。現在のパッケージの状態（たとえば、数量、位置、および／または向き）に応じてパッキングプランを生成することによって、ロボットシステムは、従来のシステムの要件に合致するようにパッケージを再編成または配列する必要性を、関連する機械／人間の動作と共に排除する。
【００１８】
以下の説明では、本開示技術の完全な理解を提供するために、多数の具体的な詳細を記載している。他の実施形態では、本明細書で紹介する技術は、これらの具体的な詳細がなくとも実践することができる。他の例では、よく知られている特徴、たとえば、特定の関数またはルーチンについては、本開示を不必要に不明瞭にしないように、詳細には説明していない。本明細書における「実施形態」、「一実施形態」などへの言及は、説明している特定の特徴、構造、材料、または特性が本開示の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書におけるそのような文言の出現は、必ずしも全てが同一の実施形態を指すものではない。一方、そのような言及は、必ずしも相互に排他的ではない。さらに、特定の特徴、構造、材料、または特性は、１つまたは複数の実施形態において任意の好適な方法で組み合わせることができる。図面に示す様々な実施形態は説明のための表現にすぎず、必ずしも縮尺どおりに描いていないことを理解されたい。
【００１９】
よく知られており、ロボットシステムおよびサブシステムに関連付けられることが多いが、開示した技術のいくつかの重要な側面を不必要に不明瞭にし得る、構造または処理を説明する一部の詳細については、明瞭にするために以下の説明には記載していない。また、以下の開示では本技術の異なる態様のいくつかの実施形態を記載しているが、いくつかの他の実施形態は、このセクションに記載したものとは異なる構成または異なるコンポーネントを有し得る。したがって、開示した技術は、追加の要素を有し、後述の要素の一部を有さない他の実施形態を有し得る。
【００２０】
以下で説明する本開示の多くの実施形態または態様は、プログラム可能コンピュータまたはプロセッサによって実行されるルーチンを含むコンピュータ実行可能命令またはプロセッサ実行可能命令の形態をとり得る。当業者であれば、開示した技術が以下に図示および説明した以外のコンピュータまたはプロセッサシステム上で実践され得ることを理解するであろう。本明細書に記載の技術は、後述のコンピュータ実行可能命令のうちの１つまたは複数を実行するように特別にプログラムされ、構成され、または構築された専用コンピュータまたはデータプロセッサにおいて実施することができる。したがって、本明細書で一般的に使用される「コンピュータ」および「プロセッサ」という用語は、任意のデータプロセッサを指し、インターネット機器およびハンドヘルドデバイス（たとえば、パームトップコンピュータ、ウェアラブルコンピュータ、セルラーまたはモバイル電話、マルチプロセッサシステム、プロセッサベースまたはプログラム可能コンシューマ電子機器、ネットワークコンピュータ、ミニコンピュータなど）を含むことができる。これらのコンピュータおよびプロセッサによって扱われる情報は、任意の好適な表示媒体、たとえば、液晶ディスプレイ（ＬＣＤ）に提示することができる。コンピュータ実行可能タスクまたはプロセッサ実行可能タスクを実行するための命令は、ハードウェア、ファームウェア、またはハードウェアおよびファームウェアの組合せを含む、任意の好適なコンピュータ可読媒体内に、またはその媒体上に記憶することができる。命令は、たとえば、フラッシュドライブおよび／または他の好適な媒体を含む任意の好適なメモリデバイスに含めることができる。
【００２１】
「結合される」および「接続される」という用語、ならびにこれらの派生形は、本明細書においてコンポーネント間の構造関係を記述するために使用され得る。これらの用語が互いに同義語であることが意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続される」は、２つ以上の要素が互いに直接接していることを示すために使用され得る。文脈において別途明記していない限り、「結合される」という用語は、２つ以上の要素が互いに直接的にもしくは間接的に（間に他の介在要素を介して）接していること、または２つ以上の要素が（たとえば、信号の送受信もしくは関数呼び出しなどのための因果関係のように）互いに協力または相互作用すること、あるいはその両方を示すために使用され得る。
【００２２】
好適な環境
図１は、パッキング機構を有するロボットシステム１００が動作し得る例示的な環境の図である。ロボットシステム１００は、１つまたは複数のタスクを実行するように構成される１つまたは複数のユニット（たとえば、ロボット）を含む、および／または、複数のユニット間で通信することができる。パッキング機構の態様は、様々なユニットによって実践または実装することができる。
【００２３】
図１に示す例では、ロボットシステム１００は、倉庫または流通／出荷拠点における、荷下ろしユニット１０２、移載ユニット１０４（たとえば、パレタイズロボットおよび／またはピースピッカーロボット）、輸送ユニット１０６、積載ユニット１０８、またはこれらの組合せを含むことができる。ロボットシステム１００内の各ユニットは、１つまたは複数のタスクを実行するように構成することができる。タスクを順番に組み合わせて目標を達成する動作を行うことができ、たとえば、トラックもしくはバンからオブジェクトを荷下ろしし、倉庫に保管する、または保管位置からオブジェクトを荷下ろしし、出荷準備することができる。他の例では、タスクは、オブジェクトを目標場所に（たとえば、パレットの上、および／またはビン／ケージ／ボックス／ケースの中に）載置することを含むことができる。後述のように、ロボットシステムは、オブジェクトを載置および／またはスタックするためのプラン（たとえば、載置位置／向き、オブジェクトを移載するためのシーケンス、および／または、対応するモーションプラン）を導出することができる。各ユニットは、アクションのシーケンスを実行して（たとえば、その中の１つまたは複数のコンポーネントを動作させて）タスクを実行するように構成することができる。
【００２４】
いくつかの実施形態では、タスクは、開始位置１１４からタスク位置１１６までの対象オブジェクト１１２（たとえば、実行しているタスクに対応するパッケージ、ボックス、ケース、ケージ、パレットなどのうちの１つ）の操作（たとえば、移動および／または向き変更）を含むことができる。たとえば、荷下ろしユニット１０２（たとえば、デバンニングロボット）は、対象オブジェクト１１２をキャリア（たとえば、トラック）内の位置からコンベヤベルト上の位置に移載するように構成することができる。また、移載ユニット１０４は、対象オブジェクト１１２をある位置（たとえば、コンベヤベルト、パレット、またはビン）から他の位置（たとえば、パレット、ビンなど）に移載するように構成することができる。他の例では、移載ユニット１０４（たとえば、パレタイズロボット）は、対象オブジェクト１１２をソース位置（たとえば、パレット、拾得エリア、および／またはコンベヤ）から目的地パレットに移載するように構成することができる。動作を完了する際に、輸送ユニット１０６は、対象オブジェクト１１２を移載ユニット１０４に関連付けられたエリアから積載ユニット１０８に関連付けられたエリアに移載することができ、積載ユニット１０８は、対象オブジェクト１１２を（たとえば、対象オブジェクト１１２を運ぶパレットを移動させることによって）移載ユニット１０４から保管位置（たとえば、棚上の位置）に移載することができる。タスクおよび関連するアクションに関する詳細については後述する。
【００２５】
例示の目的で、ロボットシステム１００は出荷センターの状況で説明しているが、ロボットシステム１００は、他の環境／他の目的での、たとえば、製造、組み立て、パッケージング、ヘルスケア、および／または他のタイプの自動化のためのタスクを実行するように構成できることを理解されたい。また、ロボットシステム１００は、図１に示していない他のユニット、たとえば、マニピュレータ、サービスロボット、モジュール式ロボットなどを含むことができることも理解されたい。たとえば、いくつかの実施形態では、ロボットシステム１００は、オブジェクトをケージカートまたはパレットからコンベヤまたは他のパレット上に移載するためのデパレタイズユニット、あるコンテナから他のコンテナにオブジェクトを移載するためのコンテナ切替ユニット、オブジェクトを包装するためのパッケージングユニット、オブジェクトをそれらの１つまたは複数の特性に応じてグループ化するためのソーティングユニット、オブジェクトをそれらの１つまたは複数の特性に応じて異なって操作するための（たとえば、ソートする、グループ化する、および／または移載するための）ピースピッキングユニット、あるいはこれらの組合せを含むことができる。
【００２６】
好適なシステム
図２は、本技術の１つまたは複数の実施形態によるロボットシステム１００を示すブロック図である。いくつかの実施形態では、たとえば、ロボットシステム１００は（たとえば、上述のユニットおよび／またはロボットのうちの１つまたは複数において）、電子／電気デバイス、たとえば、１つまたは複数のプロセッサ２０２、１つまたは複数の記憶デバイス２０４、１つまたは複数の通信デバイス２０６、１つまたは複数の入出力デバイス２０８、１つまたは複数のアクチュエーションデバイス２１２、１つまたは複数の輸送モータ２１４、１つまたは複数のセンサ２１６、あるいはこれらの組合せを含むことができる。様々なデバイスは、有線接続および／または無線接続を介して互いに結合することができる。たとえば、ロボットシステム１００は、たとえば、システムバス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスもしくはＰＣＩ−Ｅｘｐｒｅｓｓバス、ハイパートランスポートもしくは業界標準アーキテクチャ（ＩＳＡ）バス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、ユニバーサルシリアルバス（ＵＳＢ）、ＩＩＣ（Ｉ２Ｃ）バス、または電気電子技術者協会（ＩＥＥＥ）標準１３９４バス（「Ｆｉｒｅｗｉｒｅ」とも呼ばれる）などのバスを含むことができる。また、たとえば、ロボットシステム１００は、ブリッジ、アダプタ、プロセッサ、またはデバイス間に有線接続を提供するための他の信号関連デバイスを含むことができる。無線接続は、たとえば、セルラー通信プロトコル（たとえば、３Ｇ、４Ｇ、ＬＴＥ、５Ｇなど）、無線ローカルエリアネットワーク（ＬＡＮ）プロトコル（たとえば、ワイヤレスフィディリティ（ＷＩＦＩ））、ピアツーピアもしくはデバイスツーデバイス通信プロトコル（たとえば、Ｂｌｕｅｔｏｏｔｈ、近距離無線通信（ＮＦＣ）など）、モノのインターネット（ＩｏＴ）プロトコル（たとえば、ＮＢ−ＩｏＴ、ＬＴＥ−Ｍなど）、および／または他の無線通信プロトコルに基づくことができる。
【００２７】
プロセッサ２０２は、記憶デバイス２０４（たとえば、コンピュータメモリ）に記憶された命令（たとえばソフトウェア命令）を実行するように構成されるデータプロセッサ（たとえば、中央処理装置（ＣＰＵ）、専用コンピュータ、および／またはオンボードサーバ）を含むことができる。いくつかの実施形態では、プロセッサ２０２は、図２に示す他の電子／電気デバイスおよび／または図１に示すロボットユニットに動作可能に結合される独立した／スタンドアローンのコントローラに含めることができる。プロセッサ２０２は、他のデバイスを制御して／インターフェースをとって、ロボットシステム１００にアクション、タスク、および／または動作を実行させるプログラム命令を実施することができる。
【００２８】
記憶デバイス２０４は、プログラム命令（たとえば、ソフトウェア）が記憶された非一時的コンピュータ可読媒体を含むことができる。記憶デバイス２０４のいくつかの例は、揮発性メモリ（たとえば、キャッシュおよび／またはランダムアクセスメモリ（ＲＡＭ））、および／または不揮発性メモリ（たとえば、フラッシュメモリおよび／または磁気ディスクドライブ）を含むことができる。記憶デバイス２０４の他の例は、ポータブルメモリドライブおよび／またはクラウド記憶デバイスを含むことができる。
【００２９】
いくつかの実施形態では、記憶デバイス２０４を使用して、さらに処理結果および／または所定のデータ／閾値を記憶し、これらへのアクセスを提供することができる。たとえば、記憶デバイス２０４は、ロボットシステム１００によって操作され得るオブジェクト（たとえば、ボックス、ケース、および／または製品）の説明を含むマスターデータ２５２を記憶することができる。１つまたは複数の実施形態では、マスターデータ２５２は、ロボットシステム１００によって操作されると想定されるオブジェクトについての寸法、形状（たとえば、可能な姿勢についてのテンプレートおよび／または異なる姿勢のオブジェクトを認識するためのコンピュータ生成モデル）、色彩設計、画像、識別情報（たとえば、バーコード、クイックレスポンス（ＱＲ）コード、ロゴなど、および／またはその想定位置）、想定重量、他の物理的／視覚的特性、あるいはこれらの組合せを含むことができる。いくつかの実施形態では、マスターデータ２５２は、オブジェクトに関する操作関連情報、たとえば、各オブジェクトの重心（ＣｏＭ）位置、１つまたは複数のアクション／手順に対応する想定されるセンサ測定値（たとえば、力、トルク、圧力、および／または接触測定値に関するもの）、あるいはこれらの組合せを含むことができる。また、たとえば、記憶デバイス２０４はオブジェクト追跡データ２５４を記憶することができる。いくつかの実施形態では、オブジェクト追跡データ２５４は、スキャンまたは操作されるオブジェクトのログを含むことができる。いくつかの実施形態では、オブジェクト追跡データ２５４は、１つまたは複数の位置（たとえば、指定された拾得位置または降下位置および／またはコンベヤベルト）におけるオブジェクトの撮像データ（たとえば、写真、点群、ライブビデオフィードなど）を含むことができる。いくつかの実施形態では、オブジェクト追跡データ２５４は、１つまたは複数の位置におけるオブジェクトの位置および／または向きを含むことができる。
【００３０】
通信デバイス２０６は、ネットワークを介して外部または遠隔のデバイスと通信するように構成される回路を含むことができる。たとえば、通信デバイス２０６は、受信器、送信器、変調器／復調器（モデム）、信号検出器、信号符号化器／復号器、コネクタポート、ネットワークカードなどを含むことができる。通信デバイス２０６は、１つまたは複数の通信プロトコル（たとえば、インターネットプロトコロル（ＩＰ）、無線通信プロトコルなど）に従って電気信号を送信、受信、および／または処理するように構成することができる。いくつかの実施形態では、ロボットシステム１００は通信デバイス２０６を使用して、ロボットシステム１００のユニット間で情報を交換する、および／または（たとえば、報告、データ収集、分析、および／またはトラブルシューティングの目的で）ロボットシステム１００の外部のシステムまたはデバイスと情報を交換することができる。
【００３１】
入出力デバイス２０８は、人間のオペレータとの間で情報を伝達および／または受信するように構成されるユーザインターフェースデバイスを含むことができる。たとえば、入出力デバイス２０８は、情報を人間のオペレータに伝達するためのディスプレイ２１０および／または他の出力デバイス（たとえば、スピーカー、ハプティックス回路、または触覚フィードバックデバイスなど）を含むことができる。また、入出力デバイス２０８は、制御デバイスまたは受信デバイス、たとえば、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインターフェース（ＵＩ）センサ（たとえば、モーションコマンドを受信するためのカメラ）、ウェアラブル入力デバイスなどを含むことができる。いくつかの実施形態では、ロボットシステム１００は、入出力デバイス２０８を使用して、アクション、タスク、動作、またはこれらの組合せを実行する際に人間のオペレータと対話することができる。
【００３２】
ロボットシステム１００は、動き（たとえば、回転変位および／または並進変位）のために関節において接続された物理的な部材または構造部材（たとえば、ロボット式マニピュレータアーム）を含むことができる。構造部材および関節は、ロボットシステム１００の用途／動作に応じて１つまたは複数のタスク（たとえば、把持、回転、接合など）を実行するように構成されるエンドエフェクタ（たとえば、グリッパ）を操作するように構成される運動連鎖を形成することができる。ロボットシステム１００は、対応する関節周りでまたはその位置で構造部材を駆動または操作する（たとえば、変位させるおよび／または向き変更する）ように構成されるアクチュエーションデバイス２１２（たとえば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマーなど）を含むことができる。いくつかの実施形態では、ロボットシステム１００は、対応するユニット／シャーシをある場所から他の場所へ輸送するように構成される輸送モータ２１４を含むことができる。
【００３３】
ロボットシステム１００は、たとえば、構造部材を操作するおよび／またはロボットユニットを輸送するためのタスクを実施するために使用される情報を取得するように構成されるセンサ２１６を含むことができる。センサ２１６は、ロボットシステム１００の１つまたは複数の物理的な特性（たとえば、１つまたは複数の構造部材／その関節の状態、条件、および／または位置）、および／または周辺環境を検出または測定するように構成されるデバイスを含むことができる。センサ２１６のいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダなどを含むことができる。
【００３４】
いくつかの実施形態では、たとえば、センサ２１６は、周辺環境を検出するように構成される１つまたは複数の撮像デバイス２２２（たとえば、視覚および／または赤外線カメラ、２Ｄおよび／または３Ｄ撮像カメラ、距離測定デバイス、たとえば、ライダーまたはレーダーなど）を含むことができる。撮像デバイス２２２は、マシン／コンピュータビジョン（たとえば、自動検査、ロボット案内、または他のロボットアプリケーションのためのもの）を介して処理され得るデジタル画像および／または点群などの、検出された環境の表現を生成することができる。以下でより詳細に説明するように、ロボットシステム１００は（たとえば、プロセッサ２０２を介して）デジタル画像および／または点群を処理して、図１の対象オブジェクト１１２、図１の開始位置１１４、図１のタスク位置１１６、対象オブジェクト１１２の姿勢、開始位置１１４および／または姿勢に関する信頼基準、あるいはこれらの組合せを識別することができる。
【００３５】
対象オブジェクト１１２を操作するために、ロボットシステム１００は（たとえば、上述の様々な回路／デバイスを介して）、指定領域（たとえば、トラック内またはコンベヤベルト上などの拾得位置）の画像を撮影し分析して、対象オブジェクト１１２およびその開始位置１１４を識別することができる。同様に、ロボットシステム１００は、他の指定領域（たとえば、オブジェクトをコンベヤ上に載置するための降下位置、オブジェクトをコンテナ内に載置するための位置、またはスタッキング目的のパレット上の位置）の画像を撮影し分析して、タスク位置１１６を識別することができる。たとえば、撮像デバイス２２２は、拾得エリアの画像を生成するように構成される１つまたは複数のカメラ、および／またはタスクエリア（たとえば、降下エリア）の画像を生成するように構成される１つまたは複数のカメラを含むことができる。撮影画像に基づいて、後述のように、ロボットシステム１００は、開始位置１１４、タスク位置１１６、関連する姿勢、パッキング／載置プラン、移載／パッキングシーケンス、および／または他の処理結果を決定することができる。パッキングアルゴリズムに関する詳細については後述する。
【００３６】
いくつかの実施形態では、たとえば、センサ２１６は、構造部材（たとえば、ロボットアームおよび／またはエンドエフェクタ）および／またはロボットシステム１００の対応する関節の位置を検出するように構成される位置センサ２２４（たとえば、位置エンコーダ、電位差計など）を含むことができる。ロボットシステム１００は、位置センサ２２４を使用して、タスクの実行中に構造部材および／または関節の位置および／または向きを追跡することができる。
【００３７】
離散化モデル処理
図３Ａおよび図３Ｂは、本技術の１つまたは複数の実施形態による、オブジェクトについて計画し、パッキングするのに使用される離散化データの図である。図３Ａは離散化オブジェクトを示し、図３Ｂはオブジェクトのパッキングおよびその計画のための離散化パッキングプラットフォーム（台）を示す。たとえば、図１のロボットシステム１００は（たとえば、図２のプロセッサ２０２を介して）、実世界のオブジェクト（たとえば、パッケージ、パレット、および／またはタスクに関連する他のオブジェクト）の連続面／エッジを離散的な対応物（たとえば、単位長さおよび／または単位面積）にマッピングすることができる。また、ロボットシステム１００は、図２のマスターデータ２５２に記憶された想定オブジェクトの離散化モデル／表現を含むことができる。
【００３８】
いくつかの実施形態では、図３Ａに示すように、ロボットシステム１００は離散化オブジェクトモデル３０２を使用して、オブジェクトのスタッキング載置を計画する／導出することができる。離散化オブジェクトモデル３０２（点線で図示）は、離散化単位（たとえば、単位長さ）に従って、既知のおよび／または想定オブジェクト（たとえば、パッケージ、ボックス、ケースなど）についての外観の物理的な寸法、形状、エッジ、面、またはこれらの組合せ（実線で図示）を表現することができる。いくつかの実施形態では、図３Ｂに示すように、ロボットシステム１００は、１つまたは複数の離散化プラットフォーム（台）モデル３０４を使用して、オブジェクトのスタッキング載置を計画する／導出することができる。離散化プラットフォーム（台）モデル３０４は、離散化単位に従って載置面（たとえば、パレットの上面）を表現することができる。いくつかの実施形態では、離散化単位は、システムオペレータ、システム設計者、所定の入力／設定、またはこれらの組合せによって事前設定された長さを含むことができる。
【００３９】
いくつかの実施形態では、離散化プラットフォーム（台）モデル３０４は、１つまたは複数の標準サイズのパレット（たとえば、１．１ｍ×１．１ｍのパレット）の上面視を含むことができる。したがって、離散化プラットフォーム（台）モデル３０４は、ロボットシステム１００よって利用されるグリッド方式に従う、水平面（たとえば、ｘ−ｙ平面）に沿ったパレット上面のピクセル化された２Ｄ表現に対応することができる。いくつかの実施形態では、離散化オブジェクトモデル３０２は、ロボットシステム１００によって想定される／既知のオブジェクトについての上面視（たとえば、図３Ａの左側に示すｘ−ｙ平面）、および／または水平視／側面視（たとえば、右側に示すｘ−ｚ平面）を含むことができる。したがって、離散化オブジェクトモデル３０２は、オブジェクトのピクセル化された２Ｄ／３Ｄ表現に対応することができる。
【００４０】
説明用の例として、ロボットシステム１００は、単位ピクセル３１０（たとえば、離散化単位に従う１つまたは複数の次元を有するポリゴン、たとえば、四角形）を使用して、対象オブジェクトのエリア／面を（たとえば、離散化オブジェクトモデル３０２を介して）記述し、荷台を（たとえば、離散化プラットフォーム（台）モデル３０４を介して）記述することができる。したがって、ロボットシステム１００は、ｘ−ｙ軸に沿ってオブジェクトおよび荷台をピクセル化することができる。いくつかの実施形態では、単位ピクセル３１０（たとえば、離散化単位）のサイズは、オブジェクトの寸法および／または荷台の寸法に応じて変化することができる。また、単位ピクセル３１０のサイズを（たとえば、事前設定されたルール／式、および／またはオペレータ選択を介して）調整して、必要とされるリソース（たとえば、計算時間、必要メモリなど）をパッキング精度とバランスさせることができる。たとえば、サイズが減少すると、計算時間およびパッキング精度が増加することができる。したがって、調整可能な単位ピクセル３１０を使用してパッキングタスク（たとえば、対象パッケージおよびパッキングプラットフォーム（台））を離散化することによって、パッケージをパレタイズするための柔軟性が向上する。ロボットシステム１００は、独特のシナリオ、パターン、および／または環境に応じて、計算資源／時間とパッキング精度とのバランスを制御することができる。
【００４１】
図３Ａおよび図３Ｂに示す例では、ロボットシステム１００は、第１のパッケージタイプ３２１、第２のパッケージタイプ３２２、第３のパッケージタイプ３２３、第４のパッケージタイプ３２４、および／または第５のパッケージタイプ３２５に対応するオブジェクトを想定／処理することができる。ロボットシステム１００は、パッケージについて計画し、図１のタスク位置１１６に対応する載置パレット３４０上に載置／スタックすることができる。載置計画のために、ロボットシステム１００は、単位ピクセル３１０を使用して対応するパッケージをそれぞれ表現する第１のオブジェクトモデル３３１、第２のオブジェクトモデル３３２、第３のオブジェクトモデル３３３、第４のオブジェクトモデル３３４、および／または第５のオブジェクトモデル３３５を含む離散化オブジェクトモデル３０２を生成および／または利用することができる。同様に、ロボットシステム１００は、単位ピクセル３１０を使用して載置パレット３４０についての離散化プラットフォーム（台）モデル３０４を生成および／または利用することができる。
【００４２】
いくつかの実施形態では、ロボットシステム１００は、（たとえば、第３のオブジェクトモデル３３３および／または第４のオブジェクトモデル３３４などの離散化オブジェクトモデル３０２のために）オブジェクトの実際の寸法を端数切り上げして、単位ピクセル３１０がオブジェクトの実際の周縁を超えて広がるようにすることができる。いくつかの実施形態では、ロボットシステム１００は、（たとえば、離散化プラットフォーム（台）モデル３０４のために）プラットフォーム（台）表面の実際の寸法を端数切り捨てして、単位ピクセル３１０がオブジェクトの実際の周縁に覆われるおよび／または内側に含まれるようにすることができる。
【００４３】
離散化データ／表現に基づいて、ロボットシステム１００は、パッケージを載置パレット３４０上に載置／パッキングするための載置プラン３５０を生成することができる。載置プラン３５０は、対象パッケージについての載置パレット３４０上の計画された位置を含むことができる。ロボットシステム１００は、積載／パレタイズに指定された利用可能パッケージのうちの１つまたは複数を載置するための載置プラン３５０を生成することができる。たとえば、ロボットシステム１００は、利用可能パッケージ（たとえば、受け取ったパッケージおよび／または持ち帰り用の注文のパッケージ）からパッケージのセットをスタックするための載置プラン３５０を生成することができる。
【００４４】
ロボットシステム１００は、載置ルール、載置条件、パラメータ、要件などのセットに従って載置プラン３５０を生成することができる。いくつかの実施形態では、ロボットシステム１００は、そのセットに従って、たとえば、パッケージタイプ（たとえば、パッケージタイプ３２１−３２５）、パッケージの高さ、顧客指定の優先度、脆性（たとえば、その上にスタックされるパッケージなどについての最大支持重量）、重量範囲、またはこれらの組合せに応じてグループ化されたパッケージに基づいて、載置プラン３５０を生成することができる。いくつかの実施形態では、ロボットシステム１００は、たとえば、より高いパッケージをデパレタイズユニットからより遠くにスタックするなどのスタッキング条件に従って載置プラン３５０を生成することができる。載置ルール、条件、パラメータ、要件などの他の例は、パッケージ寸法、無衝突要件、スタック安定性、グループ化条件（たとえば、パッケージタイプ、パッケージ高、優先度など）、パッケージ離間要件もしくはその欠如、総積載パッケージの最大化、またはこれらの組合せを含むことができる。載置計画に関する詳細については後述する。
【００４５】
図３Ｂに示す例では、ロボットシステム１００は、パッケージタイプ３２１−３２５に対応するパッケージのセットについての２Ｄ載置プラン（たとえば、載置プラン３５０）を生成することができる。ロボットシステム１００は、第１のパッケージタイプ３２１の３つのパッケージ、第２のパッケージタイプ３２２の４つのパッケージ、第３のパッケージタイプ３２３の４つのパッケージ、第４のパッケージタイプ３２４の５つのパッケージ、および第５のパッケージタイプ３２５の４つのパッケージを載置する載置プラン３５０を生成することができる。載置プラン３５０は、類似の高さ（たとえば、等しい、または互いから限界値以内）を有するパッケージの隣接するグループを最大化するようにパッケージをグループ化することができる。したがって、ロボットシステム１００は、載置パレット３４０の左下コーナーに位置する２×２配置の第２のパッケージタイプ３２２の４つをグループ化することができる。パッケージの第２のグループ（たとえば、第１のパッケージタイプ３２１、第４のパッケージタイプ３２４、および第５のパッケージタイプ３２５のパッケージ）は、最初に載置されたグループの周辺に載置することができる。したがって、（たとえば、４単位ピクセル３１０の高さの）第１のグループについての連続した表面積、および（たとえば、２単位ピクセル３１０の高さの）第２のグループについての表面積を最大化することができる。また、ロボットシステム１００は、１つまたは複数の要件、たとえば、脆性要件（たとえば、支持されるアイテム数の制限）および／または離間要件に基づいて、第３のパッケージタイプ３２３のパッケージを離間させることができる。同様に、ロボットシステム１００は、境界要件（たとえば、載置パレット３４０のエッジから１つまたは複数の単位ピクセル３１０）に従って２Ｄ載置プランを生成することができる。
【００４６】
いくつかの実施形態では、ロボットシステム１００は、２Ｄ計画（たとえば、上面視などのｘ−ｙフットプリント）、および／または３Ｄ計画（たとえば、側面視などのｘ−ｚまたはｙ−ｚフットプリント）に基づいて載置プラン３５０を生成することができる。たとえば、ロボットシステム１００は、ｘ−ｙ平面に沿って可能な２Ｄ載置を反復的に導出すること、載置ルール、条件などに従って可能な載置をテストすること、載置スコアを計算すること、またはこれらの組合せに基づいて、載置プラン３５０を生成することができる。ロボットシステム１００は、載置スコアを最適化（たとえば、最大化または最小化）する２Ｄ載置プランを選択することに基づいて、載置プラン３５０を生成することができる。いくつかの実施形態では、ロボットシステム１００は２Ｄ載置プランを使用して、３Ｄプラン（たとえば、図３Ｂには図示しないスタッキングプラン）をさらに生成することができる。たとえば、ロボットシステム１００は、２Ｄ載置プランをスタック内のレイヤとして使用することに基づいて、３Ｄ載置プランを生成することができる。換言すれば、ロボットシステム１００は、生成された２Ｄ載置を１つまたは複数のレイヤ（たとえば、他の２Ｄ載置プラン）の上方／上に、および／または１つまたは複数の他のレイヤの下／下方に載置することができる。
【００４７】
説明用の例として、ロボットシステム１００２Ｄプランを導出する際に、載置されたオブジェクトの高さを推定し考慮することができる。たとえば、ロボットシステム１００は、図３Ｄに示すように、（たとえば、マスターデータに記憶された）オブジェクトの高さをピクセル化することができる。また、ロボットシステム１００は、載置されたオブジェクトの所定の高さデータを、オブジェクトによって占有される各単位ピクセルにマッピングすることができる。高さが各ピクセルにマッピングされた状態で、ロボットシステム１００は、得られた２Ｄ載置プラン３５０の載置面を導出する。各載置面は、たとえば、導出された表面を形成するオブジェクトの高さが同一または類似しているために、上にオブジェクトを載置し支持することが可能な導出された表面／平面に対応することができる。
【００４８】
ロボットシステム１００は、互いから閾値範囲内にある高さ値を有する単位ピクセルのグループを識別することに基づいて、載置面を導出することができる。いくつかの実施形態では、ロボットシステム１００は、載置プラン３５０についての最大の高さを識別することに基づいて、載置面を導出することができる。最大の高さに基づいて、ロボットシステム１００は、最大の高さに一致するまたは最大の高さから閾値範囲内にある高さを有する載置プラン３５０における単位ピクセルを識別することができる。ロボットシステム１００は、条件を満たす高さを有する最も外側の／外周の単位ピクセルのコーナーを接続し、および／またはエッジを伸ばして載置面を導出することに基づいて、輪郭を導出することができる。ロボットシステム１００は、より低い高さを使用して載置エリアの外側の領域に対して処理を再帰的に反復することができる。図３Ｂに示す例では、ロボットシステム１００は、第１の載置面３５２、第２の載置面３５４、および第３の載置面３５６を導出することができる。第１の載置面３５２は、最大の４単位ピクセルの高さを有する載置プラン３５０の左下コーナーに示す長方形のエリアに対応することができる。第２の載置面３５４は、２単位ピクセルの高さを有する周囲のエリア（破線で図示）に対応することができる。第３の載置面３５６は、１単位ピクセルの高さを有する載置プラン３５０の右側にある独立したエリアに対応することができる。２Ｄおよび３Ｄ載置計画についての詳細は後述する。
【００４９】
図３Ｃは、本技術の１つまたは複数の実施形態による載置計画処理の図である。ロボットシステム１００は（たとえば、図２の１つまたは複数のプロセッサ２０２を介して）、利用可能パッケージ３６２のセットについて図３Ｂの載置プラン３５０を導出することができる。利用可能パッケージ３６２は、エグレス（ｅｇｒｅｓｓ）出荷および／または保管のためにパッキングされる必要があるオブジェクトに対応することができる。たとえば、利用可能パッケージ３６２は、イングレス（ｉｎｇｒｅｓｓ）出荷を介して受け取られた到着オブジェクト、および／またはエグレス出荷のために注文された保管されたオブジェクトに対応することができる。いくつかの実施形態では、ロボットシステム１００は出荷目録、注文リストなどを使用して、リアルタイムに、たとえば、目録、リストなどの受け取りにすぐに（すなわち、閾値期間内に）応答して、利用可能パッケージ３６２を識別することができる。したがって、ロボットシステム１００は、識別された利用可能パッケージ３６２を使用して、載置プラン３５０をリアルタイムに導出することができる。したがって、パッケージの仮の数／セット／組み合わせを利用してリアルタイム条件とは無関係に適用されるプランを導出するオフラインパッキングシミュレータの代わりに、ロボットシステム１００は、リアルタイム条件、利用可能性、および／または需要を使用して載置プラン３５０を導出することができる。いくつかの実施形態では、ロボットシステム１００は、たとえば、出荷拠点および／または倉庫など、オブジェクトを受け取り、保管し、および／または送る場所にあるデバイス（たとえば、プロセッサ２０２のうちの１つまたは複数）を使用することができる。
【００５０】
いくつかの実施形態では、以下に詳述するように、ロボットシステム１００は、利用可能パッケージ３６２をグループ化するおよび／または配列することができる。ロボットシステム１００は、利用可能パッケージ３６２の順序付きセットを使用して載置プラン３５０を導出することができる。ロボットシステム１００は、利用可能パッケージ３６２に対して一意の載置位置／組み合わせを決定し評価して、載置プラン３５０を導出することができる。換言すれば、ロボットシステム１００は、可能な載置組み合わせ３６４のセットを決定し、所定の要件、条件、重量、コスト、その後の影響、またはこれらの組合せのセットに従って、それらを評価する（たとえば、スコア付けする）ことができる。評価に基づいて、ロボットシステム１００は、載置組み合わせを選択して載置プラン３５０を導出することができる。
【００５１】
少なくとも１つの実施形態では、ロボットシステム１００は、配列されたパッケージの載置を反復的に評価するアルゴリズムを使用して載置プラン３５０を導出することができる。図３Ｃに示すように、たとえば、ロボットシステム１００は、利用可能パッケージ３６２の中の最初のパッケージについての初期載置を決定することによって、導出を開始することができる。したがって、ロボットシステム１００は、図３Ａの対応する離散化オブジェクトモデル３０２を図３Ｂの離散化プラットフォーム（台）モデル３０４上の初期位置（たとえば、コーナー、中央位置、および／または他の事前設定位置）に重ねることができる。ロボットシステム１００は、利用可能パッケージ３６２から載置済みのパッケージ（たとえば、最初のパッケージ）を除去することに基づいて、残余パッケージ３７２を追跡することができる。
【００５２】
初期載置に基づいて、ロボットシステム１００は、利用可能パッケージ３６２の中の２番目のパッケージについての可能な載置のセットを決定することができる。ロボットシステム１００は、所定のルール、パターン、またはこれらの組合せに従って可能な載置のセットを決定することができる。たとえば、ロボットシステム１００は、載置済みのパッケージに対する（たとえば、載置済みのパッケージ（複数可）に対する）位置のパターンに従って、載置位置を決定することができる。また、ロボットシステム１００は、パッケージのうちの１つまたは複数の間で必要とされる最小／最大の離間距離またはその欠如に基づいて、載置位置を決定することができる。さらに、ロボットシステム１００は、９０度などの所定の量に従ってパッケージ（すなわち、対応する離散化オブジェクトモデル３０２）を回転させることに基づいて、載置位置を決定することができる。いくつかの実施形態では、ロボットシステム１００は、所定の閾値および／またはパターンに従って載置候補を限定することができる。さらに、ロボットシステム１００は、それに従って残余パッケージ３７２を更新することができる。
【００５３】
ロボットシステム１００は、停止条件に達するまで、上述の処理を反復し、利用可能パッケージ３６２を反復的に処理することができる。停止条件のいくつかの例は、全てのパッケージが載置された（すなわち、残余パッケージ３７２が空である）こと、載置を改善できない（たとえば、前の階層／反復と同じ評価スコアである）こと、これ以上パッケージを離散化プラットフォーム（台）モデル３０４上に載置できないこと、またはこれらの組合せを表すことができる。
【００５４】
いくつかの実施形態では、ロボットシステム１００は探索木３７４を使用して、可能な載置と、対応する可能な載置組み合わせ３６４とを追跡することができる。探索木３７４の根は初期載置に対応することができ、各レベルまたは階層は利用可能パッケージ３６２の中の後続のパッケージの可能な載置を含むことができる。異なる階層を接続して、パッケージのセットについての一意の載置組み合わせに対応する枝を形成することができる。
【００５５】
各パッケージの可能な載置について、ロボットシステム１００は、（たとえば、図３Ｃにおいて「Ｘ」で表される）冗長なフットプリントを識別し排除することができる。たとえば、探索木３７４の各階層において、ロボットシステム１００は、可能な載置位置／組み合わせの得られたフットプリントを比較する（たとえば、重ねる）ことができる。比較に基づいて、ロボットシステム１００は、得られたフットプリントの重複を排除することができる。いくつかの実施形態では、ロボットシステム１００はさらに、得られたフットプリントの移載、回転、および／または反転バージョンを比較して、関連する重複を排除することができる。たとえば、ロボットシステム１００は、１つのフットプリントを９０度回転させ、および／または１つまたは複数の反転ライン（たとえば、対角に伸びる対角線、ｘ方向および／またはｙ方向に伸びる二等分線、またはこれらの組合せ）にわたってフットプリントを移載し、これを他のフットプリントと比較することができる。
【００５６】
また、各パッケージの可能な載置について、ロボットシステム１００は、１つまたは複数の要件／制約に違反する載置を識別し排除することができる。要件／制約の一例は、衝突確率に基づくことができる。ロボットシステム１００は、既存のフットプリント、パッケージの１つまたは複数の寸法、移載ロボットの位置、前のイベントまたは履歴、あるいはこれらの組合せに応じて、各載置位置についての進入路と、対応する衝突確率とを計算することができる。ロボットシステム１００は、衝突確率が所定の閾値を超える載置を排除することができる。要件／制約の他の例は、パッケージをスタックする（すなわち、１つまたは複数の支持パッケージのすぐ上に／上を覆って載置する）ための支持重量とすることができる。載置位置の下のパッケージのうちの１つまたは複数について、ロボットシステム１００は、載置されたパッケージの重量に基づいて、支持重量（すなわち、すぐ上を覆うパッケージまたはその一部の合計重量）を計算することができる。ロボットシステム１００は、載置位置の下のパッケージのうちの１つまたは複数について、支持重量が脆性要件（たとえば、最大支持可能重量）に違反する（たとえば、要件を超えるまたは要件から閾値範囲内である）載置を排除することができる。
【００５７】
いくつかの実施形態では、ロボットシステム１００は、優先度キュー３７６（たとえば、ヒープ構造など）を使用して、載置組み合わせ３６４を追跡および／または評価することができる。優先度キュー３７６は、一連の設定に従って載置組み合わせ３６４を並べることができる。ロボットシステム１００は、１つまたは複数の所定の基準に従って各載置組み合わせ３６４を評価またはスコア付けすることができる。基準は、載置済みのアイテムに関連する１つまたは複数のコスト、および／または現在の載置が今後の載置または候補にどのように影響するかに関連する１つまたは複数のヒューリスティックスコアを含むことができる。
【００５８】
基準の一例は、フットプリント密度の最大化を含むことができる。ロボットシステム１００は、パッケージのグループの外周３８２について、フットプリント密度を計算することができる。いくつかの実施形態では、外周３８２は、パッケージのグループの露出した／外周のエッジに基づいて決定することができる。ロボットシステム１００はさらに、２つ以上のエッジを伸ばして交点を発見することによって、および／またはフットプリントの１つまたは複数のコーナーを結ぶ線を描くことによって、周囲の／関連するエリアを囲むことができる。ロボットシステム１００は、実際の占有面積３８４（たとえば、影付きエリアに対応する単位ピクセル３１０の数）と、空き面積３８６（たとえば、囲まれた／関連するエリアに対応する単位ピクセル３１０の数）との比として、フットプリント密度を計算することができる。ロボットシステム１００は、空き面積３８６を最小化する載置プランを（たとえば、より高い／より低いスコアを割り当てることによって）優先するように構成することができる。
【００５９】
スタッキングルール
図４Ａ〜図４Ｃは、本技術の１つまたは複数の実施形態によるスタッキングルールの図である。ロボットシステム１００はスタッキングルールを使用して、パッケージを互いの上に載置することができ、たとえば、１つまたは複数のパッケージのレイヤ（複数可）を、１つまたは複数の他のパッケージのレイヤの上にスタック／載置することができる。ロボットシステム１００は、スタッキングルールを使用してスタックされたパッケージの安定性を向上させることができ、パレットの移動中に任意のパッケージが滑るおよび／または傾くことを防ぐことができる。例示の目的で、図４Ａ〜図４Ｃに、上のパッケージ４５２が１つまたは複数の支持パッケージ４５４のすぐ上にあり、これによって支持される（たとえば、直接接する）ことを示す。
【００６０】
図４Ａに、３Ｄ載置（たとえば、３Ｄ載置プラン３５０）を生成するために使用される水平オフセットルール４０２を示す。水平オフセットルール４０２は、スタックされたアイテム間の垂直エッジ／面の水平オフセットを制限するための規制、要件、またはこれらの組合せを含むことができる。たとえば、水平オフセットルール４０２は、重なり要件４２２、突出要件４２４、またはこれらの組合せに基づくことができる。重なり要件４２２は、スタックされたパッケージの間の最小量（たとえば、長さ、幅、および／または表面積の割合または比）の重なりを含むことができる。いくつかの実施形態では、重なり要件４２２は、上のパッケージ４５２の水平寸法／表面積の最小量が支持パッケージ４５４のそれと重なることを要求することができる。突出要件４２４は、支持パッケージ４５４の周辺エッジ／面を超えて水平に伸びる上のパッケージ４５２の一部など、最大量（たとえば、長さ、幅、および／または表面積の割合または比）の突出を含むことができる。
【００６１】
いくつかの実施形態では、水平オフセットルール４０２は、重量、寸法、および／または重心（ＣｏＭ）位置４１２に基づくことができる。たとえば、重なり要件４２２および／または突出要件４２４は、ＣｏＭ位置４１２に基づくことができ、たとえば、上のＣｏＭ位置と支持パッケージ４５４の水平エッジ／面との距離、および／または突出距離（たとえば、支持パッケージ４５４の周縁（複数可）を超えて伸びる上のパッケージ４５２の一部の水平方向に沿った度合い）に対する、上のパッケージ４５２および支持パッケージ４５４のＣｏＭ位置４１２間の距離を評価するようにする。いくつかの実施形態では、水平オフセットルール４０２は、上のパッケージ４５２および支持パッケージ４５４のＣｏＭ位置４１２が閾値内であることを要求するＣｏＭオフセット要件４２６に基づくことができる。閾値は、所定の距離、水平寸法に対するＣｏＭ位置４１２間のオフセット距離の比の限界値、突出距離、重なり距離、またはこれらの組合せを含むことができる。
【００６２】
図４Ｂに、３Ｄ載置（たとえば、スタッキングプラン）を生成するために使用される支持物離間ルール４０４を示す。支持物離間ルール４０４は、支持パッケージ４５４間の水平離間距離４１４を制限するための規制、要件、またはこれらの組合せを含むことができる。水平離間距離４１４は、隣接する支持パッケージ４５４の周面／周縁間の水平距離に対応することができる。いくつかの実施形態では、支持物離間ルール４０４は、上のパッケージ４５２と支持パッケージ４５４との重なった面の位置および／または量にさらに基づくことができる。たとえば、支持物離間ルール４０４は、水平離間距離４１４が任意の突出距離よりも所定の割合だけ長いことを要求することができる。また、支持物離間ルール４０４は、水平離間距離４１４が上のパッケージ４５２のＣｏＭ位置４１２の下に伸びることを要求することができる。
【００６３】
図４Ｃに、３Ｄ載置（たとえば、３Ｄ載置プラン３５０）を生成するために使用される垂直オフセットルール４０６を示す。垂直オフセットルール４０６は、支持パッケージ４５４の垂直位置間の支持高低差４１６を制限するための規制、要件、またはこれらの組合せを含むことができる。支持高低差４１６は、対応する支持パッケージ４５４の頂部間の、たとえば、対応する支持パッケージ４５４上に載置された上のパッケージ４５２に接する可能性が高い部分同士の間の垂直距離に対応することができる。いくつかの実施形態では、垂直オフセットルール４０６は、支持高低差４１６が、１つまたは複数のパッケージを支持パッケージ４５４の上にスタックするための所定の閾値要件を下回ることを必要とすることができる。いくつかの実施形態では、支持物離間ルール４０４は、レイヤの高さに基づいて異なることができる。たとえば、上のパッケージ４５２（たとえば、支持されるパッケージ）が最上位レイヤの一部である場合、支持高低差４１６の限度は下位レイヤよりも大きくすることができる。
【００６４】
ロボットシステム１００は、スタッキングルールに従ってスタッキングプラン（たとえば、複数の２Ｄ載置プランの３Ｄの組み合わせ）を生成することができる。たとえば、ロボットシステム１００は、高さ要件（たとえば、パッケージグループの高さを閾値距離内に維持するためのもの）に従って、２Ｄ載置プラン（たとえば、図３Ｂの載置プラン３５０）を生成することができる。続いて、ロボットシステム１００は、２Ｄ載置プランを垂直に重ねる（たとえば、スタックする）ことに基づいて、スタッキングプランを生成することができる。
【００６５】
スタッキングシーケンス
図５Ａは、本技術の１つまたは複数の実施形態によるスタッキングプラン５０２の一例の図である（たとえば、利用可能パッケージの３Ｄマッピングを表すプラン、および／または載置プラン３５０は、３Ｄマッピング内のレイヤに対応する）。例示の目的で、第１のパッケージのスタック５２０（たとえば、少なくともパッケージ１−１〜１−４、２−１〜２−２、および３−１〜３−３など）についての第１のレイヤ５１２、第２のレイヤ５１４、および第３のレイヤ５１６を使用するスタッキングプラン５０２を示す。第１のレイヤ５１２、第２のレイヤ５１４、および第３のレイヤ５１６のそれぞれは、載置プラン３５０のインスタンスとすることができる。第１のレイヤ５１２を底部に位置させて、その中のパッケージ（たとえば、少なくともパッケージ１−１、１−２、１−３、および１−４）が載置パレット３４０に直接接するようにすることができる。第２のレイヤ５１４内のパッケージ（たとえば、少なくともパッケージ２−１および２−２）は、第１のレイヤ５１２のすぐ上（すなわち、直接接する）および上方に置くことができる。同様に、第３のレイヤ５１６のパッケージ（たとえば、少なくともパッケージ３−１および３−２）は、第２のレイヤ５１４のすぐ上にあり、接することができる。
【００６６】
以下に詳述するように、ロボットシステム１００は、垂直パラメータ（たとえば、支持重量、レイヤの高さなど）を考慮しながら、各レイヤを別々に計画することができる。スタッキングプラン５０２を生成する際に、ロボットシステム１００は、垂直パラメータおよび／またはスタッキングルールに従って別々のレイヤを垂直に組み合わせるおよび／または配列することができる。いくつかの実施形態では、ロボットシステム１００は、パッケージの垂直載置に応じてレイヤを計画することができる。たとえば、ロボットシステム１００は、第１のレイヤ５１２を、たとえば、第２のスタック５２２内の下の２つのパッケージを含む、載置パレット３４０に直接接する全てのパッケージを含むものとして、生成することができる。また、ロボットシステム１００は、「３−３」とラベル付けされたパッケージを第２のレイヤ５１４の一部として計画することができる。いくつかの実施形態では、ロボットシステム１００は、スタッキングプラン５０２を生成する際に、レイヤ（たとえば、載置プラン３５０）を再計画および／または調整することができる。たとえば、ロボットシステム１００は、スタッキング／載置シーケンスを容易にするように、レイヤを調整することができる。図５Ａに示すように、ロボットシステム１００は、第２のスタック５２２が独立したスタック（すなわち、第１、第２、および第３のレイヤ５１２−５１６とは独立したもの）とみなされるように、レイヤを調整することができる。したがって、ロボットシステム１００は、第１のスタック５２０のレイヤとは独立して／異なって、第２のスタック５２２のパッケージを自由に計画し、および／またはスタックすることができる。
【００６７】
また、いくつかの実施形態では、ロボットシステム１００は、図１の移載ユニット１０４（たとえば、パレタイズロボット）に最も近いより大きいパッケージをより上位のレイヤに移動させて、スタッキングシーケンスを容易にすることができる。移載ユニット１０４が図５Ａに示す載置パレット３４０の右にあると仮定すると、「３−３」パッケージは、「３−１」および「３−２」とラベル付けされたパッケージより前に載置される場合、障害物となり得る（すなわち、高さが原因）。したがって、ロボットシステム１００は、「３−３」パッケージがより上位のレイヤ（たとえば、第２のレイヤ５１２ではなく第３のレイヤ５１６）の一部となるように、レイヤを調整することができる。結果として、ロボットシステム１００がレイヤに従ってパッケージを載置する場合、「３−３」パッケージは「３−１」および「３−２」パッケージの後に載置することができる。
【００６８】
他の代替的実施形態では、ロボットシステム１００は、レイヤに縛られずに、スタッキングプラン５０２を分析することに基づいて、スタッキングまたは載置シーケンスを独立して計算することができる。議論の目的で、図５Ｂは、本技術の１つまたは複数の実施形態による、レイヤに応じたパッケージのスタッキングに縛られないスタッキングシーケンス５３０（たとえば、利用可能パッケージについての載置順序の特定）の図である。スタッキングシーケンス５３０は、スタックされるパッケージ５３２を支持パッケージの上に、かつ２つの端のパッケージ間に水平に載置するためのものとすることができる。スタッキングシーケンス５３０は、移載ユニット１０４（図５Ｂに図示せず、載置パレット３４０の右に位置すると仮定する）から最も遠いパッケージ（「１」とラベル付けされたもの）を最初に載置することができ、その後に第２のパッケージ（「２」とラベル付けされたもの）が載置パレット３４０に載置されるようなものとすることができる。ロボットシステム１００は、端のパッケージ５３４（「４」とラベル付けされたもの）のうちの１つ（たとえば、３つ目）より前に、スタックされるパッケージ５３２（「３」とラベル付けされたもの）が載置されるように、スタッキングシーケンス５３０を計算することができる。上述のように、ロボットシステム１００は、端のパッケージ５３４の１つを、スタックされたパッケージ５３２と共に第２のレイヤに属するように調整することに基づいて、またはスタッキングプラン５０２とは独立してスタッキング順序を計算することに基づいて、スタッキングシーケンス５３０を計算することができる。
【００６９】
動作フロー
図６は、本技術の１つまたは複数の実施形態による、図１のロボットシステム１００を動作させる方法６００についての流れ図である。方法６００は、パッケージ（たとえば、ケースおよび／またはボックス）をプラットフォーム（台）（たとえば、パレット）に載置するための、および／またはそれに従ってパッケージを載置するための２Ｄ／３Ｄパッキングプランを生成するためのものとすることができる。方法６００は、図２の記憶デバイス２０４のうちの１つまたは複数に記憶された命令を、図２のプロセッサ２０２のうちの１つまたは複数によって実行することに基づいて、実施することができる。
【００７０】
ブロック６０２において、ロボットシステム１００は、パッケージセット（たとえば、図３Ｃの利用可能パッケージ３６２）と、目的地（たとえば、パッケージを受け取るためのパレットおよび／またはコンテナなどの、図１のタスク位置１１６）とを識別することができる。たとえば、ロボットシステム１００は、パッキングに利用可能な、ソースに位置する、載置するために指定された、および／または注文／要求／目録内にリスト化されたパッケージを含む利用可能パッケージ３６２を表すパッケージセットを識別することができる。また、ロボットシステム１００は、パッケージを載置可能なタスク位置１１６のエリア（たとえば、図３の載置パレット３４０などのパレットの一番上の積載面）のサイズまたは寸法を特定する。いくつかの実施形態では、ロボットシステム１００は、パレットのサイズ、寸法、タイプ、またはこれらの組合せを特定することができる。
【００７１】
ブロック６０４において、ロボットシステム１００は、利用可能パッケージ３６２および／またはタスク位置１１６を表す、パッケージセットに対応する離散化モデル（たとえば、図３Ａの離散化オブジェクトモデル３０２および／または図３Ｂの離散化プラットフォーム（台）モデル３０４）を生成および／またはアクセスすることができる。いくつかの実施形態では、ロボットシステム１００は、オブジェクトおよび／またはプラットフォーム（台）エリア（たとえば、図３Ｂの単位ピクセル３１０に従うパレット上面）の物理的な寸法を分割することに基づいて、（たとえば、リアルタイムに、すなわち、たとえば、注文を受けた後および／またはパッキング動作を開始する前に、あるいはオフラインで）離散化モデルを生成することができる。単位ピクセル３１０は、（たとえば、製造業者、注文した顧客、および／またはオペレータによって）、たとえば、１ミリメートル（ｍｍ）もしくは１／１６インチ（ｉｎ）またはそれ以上（たとえば、５ｍｍもしくは２０ｍｍ）など、事前に決定することができる。いくつかの実施形態では、単位ピクセル３１０は、パッケージのうちの１つまたは複数および／またはプラットフォーム（台）の寸法またはサイズに基づくことができる（たとえば、割合または分数）。
【００７２】
いくつかの実施形態では、ロボットシステム１００は、記憶デバイス２０４および／または他のデバイス（たとえば、図２の通信デバイス２０６を介してアクセスされるパッケージ供給元の記憶デバイス、データベース、および／またはサーバ）に記憶された離散化モデルにアクセスすることができる。ロボットシステム１００は、利用可能パッケージ３６２および／またはタスク位置１１６を表す所定の離散化モデルにアクセスすることができる。たとえば、ロボットシステム１００は、図２のマスターデータ２５２（たとえば、所定のテーブルまたはルックアップテーブル）において利用可能パッケージおよびそれらに対応するモデルを検索することによって、利用可能パッケージ３６２に対応する離散化オブジェクトモデル３０２にアクセスすることができる。同様に、ロボットシステム１００は、利用可能パッケージが載置されることになる識別されたパレットなどのプラットフォーム（台）を表す離散化プラットフォーム（台）モデル３０４にアクセスすることができる。
【００７３】
ブロック６０６において、ロボットシステム１００は、パッケージグループ（たとえば、利用可能パッケージのサブグループ）を決定することができる。ロボットシステム１００は、識別されたプラットフォーム（台）（たとえば、載置パレット３４０）に載置するために、利用可能パッケージ３６２に基づいてパッケージグループを決定することができる。ロボットシステム１００は、利用可能パッケージ３６２の１つまたは複数の特性における類似性および／またはパターンに応じて、パッケージグループを決定することができる。いくつかの実施形態では、ブロック６２１に示すように、ロボットシステム１００は、グループ化条件／要件に従って利用可能パッケージ３６２をグループ化することによって、パッケージグループを決定することができる。グループ化条件／要件のいくつかの例は、パッケージ優先度（たとえば、１つまたは複数の顧客によって指定されるもの）、脆性レーティング（たとえば、パッケージによって支持可能な最大重量）、重量、パッケージ寸法（たとえば、パッケージ高）、パッケージタイプ、またはこれらの組合せを含むことができる。利用可能パッケージ３６２をグループ化する際に、ロボットシステム１００は、グループ化条件／要件に合致する利用可能パッケージ３６２の様々な特性をマスターデータ２５２において検索することができる。
【００７４】
ブロック６０８において、ロボットシステム１００は、利用可能パッケージ３６２および／またはそのグループ（すなわち、パッケージグループ）に対する処理順序（たとえば、載置位置を検討／導出するシーケンス）を計算することができる。いくつかの実施形態では、ブロック６２２に示すように、ロボットシステム１００は、１つまたは複数の配列条件／要件に従って処理順序を計算することができる。たとえば、ロボットシステム１００は、たとえば、パッケージ数が多いパッケージグループを載置計画において早く処理するために、各グループ内のパッケージ数に応じて、パッケージグループの載置計画を優先することができる。いくつかの実施形態では、配列条件は、たとえば、重量範囲、脆性レーティングなどについて、グループ化条件と重複することができる。たとえば、ロボットシステム１００は、より重いおよび／またはより脆弱でないパッケージの処理を優先して、より早く処理し、および／またはより下位レイヤに載置するようにすることができる。
【００７５】
いくつかの実施形態では、ロボットシステム１００は、合計水平面積に応じて載置計画を優先することができる。ロボットシステム１００は、マスターデータ２５２において指定された情報を使用して、グループ内のパッケージの上面の表面積を（たとえば、対応する幅と長さとを乗算することによって）計算するまたはアクセスすることができる。合計水平面積を計算する際に、ロボットシステム１００は、同一のタイプであるおよび／または閾値範囲内の高さを有するパッケージの表面積を加算することができる。いくつかの実施形態では、ロボットシステム１００は、より大きい合計水平面積を有するグループの載置計画を優先して、より早く処理し、および／またはより下位レイヤに載置するようにすることができる。
【００７６】
１つまたは複数の実施形態について、ロボットシステム１００は、利用可能パッケージ３６２の識別子および／または数量をバッファにロードすることができる。ロボットシステム１００は、グループに従ってバッファ内の識別子を配列することができる。さらに、ロボットシステム１００は、処理順序に応じてバッファ内の識別子を配列することができる。したがって、バッファ内の配列された値は、図３Ｃに示す利用可能パッケージ３６２および／または残余パッケージ３７２に対応することができる。
【００７７】
ブロック６２４に示すように、たとえば、ロボットシステム１００は、図５の対応するスタッキングプラン５０２を実施する前に、たとえば、パッケージセット内のパッケージのいずれかがプラットフォーム（台）に載置される前に、利用可能パッケージ３６２の初期セット（たとえば、パッケージセット）に対する処理順序を計算することができる。いくつかの実施形態では、ブロック６２６に示すように、ロボットシステム１００は、対応するスタッキングプラン５０２の開始後または実施中に、利用可能パッケージ３６２の残余セットに対する処理順序を計算することができる。たとえば、ブロック６１６からのフィードバックループによって示すように、ロボットシステム１００は、１つまたは複数のトリガ条件に従って、残余セット（たとえば、プラットフォーム（台）に移載されていないおよび／またはソース位置に残っている利用可能パッケージ３６２の一部）に対する処理順序を計算することができる。例示的なトリガ条件は、スタッキングエラー（たとえば、パッケージの紛失または落下）、衝突イベント、所定の再トリガタイミング、またはこれらの組合せを含むことができる。
【００７８】
ブロック６１０において、ロボットシステム１００は、利用可能パッケージ３６２を水平面に沿って載置するための２Ｄプラン（たとえば、図３Ｂの載置プラン３５０）を生成することができる。たとえば、ロボットシステム１００は、載置プラン３５０を生成して、水平面に沿った利用可能パッケージ３６２の２Ｄマッピングを表現することができる。ロボットシステム１００は、離散化モデルに基づいて２つ以上の載置プランを生成することができる。たとえば、ロボットシステム１００は、離散化オブジェクトモデル３０２を離散化プラットフォーム（台）モデル３０４と比較することに基づいて、載置プラン３５０を生成することができる。ロボットシステム１００は、離散化オブジェクトモデル３０２の異なる載置／配置を決定し、離散化プラットフォーム（台）モデル３０４に重ね／比較し、重なった場合、離散化プラットフォーム（台）モデル３０４の境界線内にある配置を検証／保持することができる。ロボットシステム１００は、離散化プラットフォーム（台）モデル３０４の境界線内に載置することができないパッケージに、他のレイヤ（たとえば、載置プラン３５０の他のインスタンス）を指定することができる。したがって、ロボットシステム１００は、パッケージセット内の各パッケージに載置プラン３５０内の位置が割り当てられるまで、スタッキングプラン５０２の２Ｄレイヤを表す載置プラン３５０についての載置位置を反復的に導出することができる。
【００７９】
いくつかの実施形態では、ロボットシステム１００は、パッケージグループに基づいて載置プラン３５０を生成することができる。たとえば、ロボットシステム１００は、あるパッケージグループ内のパッケージの配置を、他のグループ内のパッケージの載置を検討する前に、決定することができる。パッケージグループ内のパッケージがレイヤから溢れる場合（すなわち、離散化プラットフォーム（台）モデル３０４の１つのレイヤまたは１つのインスタンスに収まらない場合）、および／または１つのグループの全てのパッケージを載置した後、ロボットシステム１００は、次のグループ内のパッケージについての位置を、離散化プラットフォーム（台）モデル３０４内の任意の残っている／占有されていないエリアに割り当てることができる。ロボットシステム１００は、離散化プラットフォーム（台）モデル３０４の残余スペースに収まらない未割り当てパッケージがなくなるまで、割り当てを反復的に繰り返すことができる。
【００８０】
同様に、ロボットシステム１００は、処理順序に基づいて（たとえば、処理順序に応じたパッケージグループに基づいて）載置プラン３５０を生成することができる。たとえば、ロボットシステム１００は、処理順序に応じてパッケージおよび／またはグループを割り当てることに基づいて、テスト配置を決定することができる。ロボットシステム１００は、最も早く配列されたパッケージ／グループにテスト配置の最初の載置を割り当て、次いで、処理順序に応じて後続のパッケージ／グループをテストする／割り当てることができる。いくつかの実施形態では、ロボットシステム１００は、レイヤにわたって（たとえば、載置プラン３５０のインスタンスにわたって）パッケージ／グループに対する処理順序を保持することができる。いくつかの実施形態では、ロボットシステム１００は、各レイヤが充填された後、処理順序を再計算し更新することができる（図６に破線のフィードバック線で図示）。
【００８１】
いくつかの実施形態では、上述の処理の説明用の例として、ロボットシステム１００は、パッケージセット内の異なるパッケージタイプ（たとえば、図３Ａの第１、第２、第３、第４、および／または第５のそれぞれのパッケージタイプ３２１−３２５）を識別することによって、２Ｄプランを生成することができる。換言すれば、ブロック６３２において、ロボットシステム１００は、各パッケージグループおよび／またはパッケージセット内の（たとえば、パッケージタイプによって表される）独特のパッケージを識別することができる。
【００８２】
ブロック６３４において、ロボットシステム１００は、各利用可能パッケージ３６２について載置位置を（たとえば、反復的に）導出することができる。ブロック６３６において、ロボットシステム１００は、処理順序に応じてシーケンスの最初の独特のパッケージについての初期載置位置を決定することができる。ロボットシステム１００は、上述のように所定のパターンに従って初期載置位置を決定することができる。いくつかの実施形態では、ロボットシステム１００は、独特のパッケージごとに初期載置を計算することができる。得られた初期載置はそれぞれ、たとえば、反復にわたって載置プラン３５０を追跡することによって、一意の載置組み合わせ（たとえば、図３Ｃの探索木３７４のインスタンス）に発展させることができる。ブロック６３８において、ロボットシステム１００は、処理順序および／または上述の残余パッケージ３７２に応じて、後続のパッケージについての載置位置候補を導出し追跡することができる。したがって、ロボットシステム１００は、図３Ｃの載置組み合わせ３６４を反復的に導出することができる。
【００８３】
載置組み合わせ３６４（たとえば、載置位置候補）を導出する際に、ロボットシステム１００は、スタッキングシナリオ候補（たとえば、利用可能パッケージについての一意の載置位置の可能な組み合わせ）を反復的に導出し評価することに基づいて、対応するパッケージの離散化オブジェクトモデル３０２の位置をテスト／評価することができる。各スタッキングシナリオ候補は、上述のシーケンスに従ってパッケージについての一意の可能な位置を（たとえば、載置位置についての所定のシーケンス／ルールに従って）識別することに基づいて、導出することができる。スタッキングシナリオ候補および／または一意の載置位置は、１つまたは複数の載置基準（たとえば、要件、制約、載置コスト、および／またはヒューリスティックスコア）に従って評価することができる。たとえば、載置基準は、選択された位置に載置される場合、離散化オブジェクトモデル３０２が離散化プラットフォーム（台）モデル３０４の水平境界線内に完全に収まることを要求することができる。また、載置基準は、離散化オブジェクトモデル３０２の載置が、隣接載置または離間要件などのために、（たとえば、水平方向などに沿った）初期載置位置および／または前の載置位置に対して閾値距離内または閾値距離を超えることを要求することができる。載置基準の他の例は、１つまたは複数のパッケージ寸法（たとえば、高さ）、脆性レーティング、パッケージ重量範囲、またはこれらの組合せの差が最小であるパッケージを隣接して載置するための設定を含むことができる。いくつかの実施形態では、載置基準は、基準位置（たとえば、パレタイズロボットの位置）に対するレイヤ内の割り当て済みのパッケージの位置および／または特性（たとえば、高さ）に対応し得る衝突確率を含むことができる。したがって、ロボットシステム１００は、パッケージ載置位置の複数の一意の載置組み合わせ（すなわち、各レイヤについての載置プラン候補、および／または各レイヤが複数のレイヤ含むスタッキングシナリオ候補）を生成することができる。いくつかの実施形態では、ロボットシステム１００は、載置反復にわたって探索木３７４を生成し更新することに基づいて、組み合わせの載置を追跡することができる。
【００８４】
ブロック６４０において、ロボットシステム１００は、各組み合わせ／パッケージ載置についての載置スコアを計算／更新することができる。ロボットシステム１００は、載置条件／設定（たとえば、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件）のうちの１つまたは複数に従って載置スコアを計算することができる。たとえば、ロボットシステム１００は、選好係数（たとえば、乗数の重み）および／または式を使用して、パッケージ間の離間距離、隣接パッケージについてのパッケージ寸法／脆性レーティング／パッケージ重量の差、衝突確率、同じ高さの連続面／隣接面、その統計結果（たとえば、平均、最大、最小、標準偏差など）、またはこれらの組合せについての選好を記述することができる。各組み合わせは、システム製造業者、注文、および／またはシステムオペレータによって事前定義され得る選好係数および／または式に従ってスコア付けすることができる。いくつかの実施形態では、ロボットシステム１００は、載置反復全体の最後に載置スコアを計算することができる。
【００８５】
いくつかの実施形態では、ロボットシステム１００は、各載置反復後に、図３Ｃの優先度キュー３７６内の載置組み合わせ３６４のシーケンスを更新することができる。ロボットシステム１００は、載置スコアに基づいてシーケンスを更新することができる。
【００８６】
ロボットシステム１００は、たとえば、１つの載置プラン候補が終了した場合に、空きソースステータス、満杯レイヤステータス、または不変スコアステータスを判定することに基づいて、載置反復を停止することができる。空きソースステータスは、全ての利用可能パッケージが載置されたことを表すことができる。満杯レイヤステータスは、他のパッケージを検討中の離散化プラットフォーム（台）モデル３０４の残余エリア内に載置できないことを表すことができる。不変スコアステータスは、組み合わせについての載置スコアが、１つまたは複数の連続した載置反復にわたって一定のままであることを表すことができる。いくつかの実施形態では、ロボットシステム１００は、（たとえば、配列条件に関連する配列値／スコアが同一であるグループを並べ直すために）異なる初期載置位置および／または異なる処理順序を使用して載置反復を繰り返すことによって、スタッキングシナリオ候補の他のインスタンスを導出することができる。換言すれば、ロボットシステム１００は複数の２Ｄ載置プランを生成することができ、ここで、各２Ｄ載置プランは、（たとえば、スタッキングシナリオ候補のインスタンスなどの）３Ｄスタック内のレイヤを表すことができる。他の実施形態では、ロボットシステム１００は、２Ｄ載置プランが導出された場合に３Ｄ効果を反復的に検討し、２Ｄ載置プランが満杯になった場合に、次のレイヤを次の反復として導出することを開始することができる。
【００８７】
ブロック６１２において、ロボットシステム１００は、スタッキングプラン（たとえば、スタッキングプラン５０２）を生成することができる。いくつかの実施形態では、ロボットシステム１００は、処理されるパッケージの載置位置が１つまたは複数の載置／処理済みのパッケージと重なる場合に、スタッキングプラン５０２の生成を開始することができる。
【００８８】
スタッキングプラン５０２を生成し、および／または２Ｄプランを査定する際に、ロボットシステム１００は、ブロック６５２に示すように、載置組み合わせ３６４および／または載置プランのそれぞれを３Ｄ状態に変換することができる。たとえば、ロボットシステム１００は、パッケージについての高さ値を載置組み合わせ３６４に割り当てることができる。換言すれば、ロボットシステム１００は、パッケージ高を載置組み合わせ３６４に追加することに基づいて、等高線図（深度マップの推定）を生成することができる。
【００８９】
３Ｄ状態によって、ロボットシステム１００は、１つまたは複数のスタッキングルール（たとえば、図４Ａの水平オフセットルール４０２、図４Ｂの支持物離間ルール４０４、および／または図４Ｃの垂直オフセットルール４０６）に従って、載置組み合わせ３６４を評価することができる。説明用の例として、載置されるパッケージが１つまたは複数の処理済みのパッケージの上に／上を覆ってスタックされる場合、ロボットシステム１００は、上述の図２の重なり要件４２２、図４Ａの突出要件４２４、垂直オフセットルール４０６、図４ＡのＣｏＭオフセット要件４２６、またはこれらの組合せに違反する載置組み合わせ３６４のいずれかを排除することができる。１つまたは複数の実施形態では、ロボットシステム１００は、たとえば、重なったパッケージにおける支持重量を推定し、対応する脆性レーティングと比較することによって、処理済みのパッケージの下の１つまたは複数のパッケージの脆性レーティングに違反する載置組み合わせ３６４のいずれかを排除することができる。
【００９０】
残余の載置組み合わせ３６４について、ロボットシステム１００は、たとえば、ブロック６５４に示すように、３Ｄ載置スコアを計算するまたは載置スコアを更新することができる。ロボットシステム１００は、３Ｄ載置についての載置コストおよび／またはヒューリスティック値に関連する所定の設定（たとえば、重みおよび／または式）を使用することができる。所定の３Ｄ設定は、２Ｄ設定、グループ設定、配列条件、またはこれらの組合せに類似することができる。たとえば、３Ｄ設定は、３Ｄ状態に基づいて衝突確率を計算し、衝突確率がより低い載置組み合わせを優先するスコアを計算するように構成することができる。また、ロボットシステム１００は、残余パッケージ３７２、共通の高さを有する支持エリアのサイズ、３Ｄ状態のパッキングされたアイテムの数、処理済みパッケージの高さの差、またはこれらの組合せに基づいて、スコアを計算することができる。いくつかの実施形態では、ロボットシステム１００は、スコアに応じて優先度キュー３７６内の載置組み合わせ３６４のシーケンスを更新することができる。
【００９１】
３Ｄ状態が処理された後、ロボットシステム１００は、ブロック６１０などにおいて、残余パッケージ３７２内の次のパッケージについての載置を導出することによって、２Ｄプランを更新することができる。ロボットシステム１００は、たとえば、利用可能パッケージ３６２が全て処理された（すなわち、残余パッケージ３７２についての空の値／セット）場合、および／または載置組み合わせ３６４を改善できない（改善されない組み合わせとも呼ばれる）場合など、停止条件まで上述の処理を反復することができる。改善されない組み合わせのいくつかの例は、現在処理されている載置が、違反のうちの１つまたは複数によって優先度キュー３７６内の載置組み合わせ３６４の最後のものを排除する場合、および／または載置スコアが優先される組み合わせについて閾値数の反復にわたって一定のままである場合を含むことができる。
【００９２】
停止条件が検出された場合、たとえば、ブロック６５６において、ロボットシステム１００は、載置スコア（たとえば、２Ｄおよび／または３Ｄ関連スコア）に応じて、導出された載置組み合わせ３６４のうちの１つを選択することができる。したがって、ロボットシステム１００は、選択された載置組み合わせをスタッキングプラン５０２（たとえば、載置プラン３５０のセット）として指定することができる。
【００９３】
いくつかの実施形態では、説明用の例として、ロボットシステム１００は、ブロック６１０および６１２の機能を異なって実施することができる。たとえば、ブロック６１０において、ロボットシステム１００は、上述のように最下位レイヤについての２Ｄプラン（たとえば、載置プラン３５０のインスタンス）を生成することができる。その際、ロボットシステム１００は、載置および／または処理順序を検討する際に、一致するパッケージ高、より重いパッケージ重量、および／またはパッケージについてのより大きい支持可能重量に対してより重い設定（たとえば、より大きいパラメータの重み）を与えるように構成することができる。ロボットシステム１００は、ブロック６１０について上述したように、ベースレイヤについて第１の２Ｄプランを導出することができる。
【００９４】
第１の２Ｄレイヤが上述のように完全／満杯となってベースレイヤが形成されると、ロボットシステム１００は、ブロック６１２／６５２について説明したように載置プランを３Ｄ状態に変換することができる。３Ｄ情報を使用して、ロボットシステム１００は、上述のようにベースレイヤの１つまたは複数の平面セクション／エリア（たとえば、図３Ｂの載置面３５２−３５６）を特定することができる。平面セクションを使用して、ロボットシステム１００は、ベースレイヤの上の次のレイヤについてのパッケージ載置を反復的に／再帰的に導出することができる。ロボットシステム１００は、各平面セクションを離散化プラットフォーム（台）モデル３０４の新たなインスタンスとみなし、ブロック６１０について上述したように異なる載置をテスト／評価することができる。いくつかの実施形態では、ロボットシステム１００は、載置面を使用して２Ｄ載置を導出することができるが、載置パレット３４０全体にわたってスコアを計算することができる。したがって、ロボットシステム１００は、先行する載置エリアに制限されることなく、後続のレイヤに対してより大きい載置エリアを優先するように構成することができる。
【００９５】
反復的載置処理が第２のレイヤについて停止すると、ロボットシステム１００は、導出されたレイヤについての平面セクション（たとえば、閾値範囲内の高さを有する上面）を計算して、次の上のレイヤについての残余パッケージ／グループの２Ｄ載置を生成することができる。反復的レイヤ化処理は、上述のように停止条件が満たされるまで継続することができる。
【００９６】
いくつかの実施形態では、ロボットシステム１００は、ブロック６１２において２Ｄプラン（たとえば、載置プラン３５０のうちの２つ以上）を独立して生成することができる。ロボットシステム１００は、２Ｄプランを垂直に組み合わせる（たとえば、垂直方向に沿って２Ｄ載置プランを配置する／重ねる）ことに基づいてスタッキングプラン５０２を生成することができる。
【００９７】
ブロック６１４において、ロボットシステム１００は、スタッキングプラン５０２に基づいてパッキングシーケンス（たとえば、図５Ｂのスタッキングシーケンス５３０）を計算することができる。一例として、パッキングシーケンスは、利用可能パッケージ３６２の載置順序を特定するためのものとすることができる。いくつかの実施形態では、ブロック６６２に示すように、ロボットシステム１００は、パッキングシーケンスをレイヤごとに計算することができる。換言すれば、ロボットシステム１００は、各レイヤについてパッキングシーケンスを計算し、次いで、レイヤの順序／位置に従ってシーケンスを下から上へ接続することができる。パッキングシーケンスを計算する際に、いくつかの実施形態では、ロボットシステム１００は、ブロック６７２に示すように載置プランを調整することができる。たとえば、ロボットシステム１００は、下位レイヤの載置プランから上位レイヤの載置プランまでパッケージ（たとえば、後続の操作／移載について衝突確率を増加させる高さを有するパッケージ）のうちの１つまたは複数を再割り当てすることによって、載置プランを調整することができる。再割り当てされたパッケージによって支持される任意のパッケージは、さらなる上位レイヤに再割り当てすることもできる。換言すれば、再割り当てされたパッケージは、同じ水平載置のままとし、上位レイヤに関連付けて、パッケージを図５Ｂに示すように後で載置できるようにすることができる。ブロック６７４において、ロボットシステム１００は、たとえば、下位レイヤに割り当てられたオブジェクトの後に、上位レイヤに割り当てられたオブジェクトをパッキング／操作することによって、調整された載置プランに基づいてパッキングシーケンス（たとえば、スタッキングシーケンス５３０）を計算することができる。
【００９８】
他の実施形態では、ブロック６６４に示すように、ロボットシステム１００は、レイヤ割り当てとは無関係に／独立してパッキングシーケンスを計算することができる。換言すれば、ロボットシステム１００は、下位レイヤに割り当てられたパッケージが上位レイヤに割り当てられたパッケージの後に載置されるように、パッキングシーケンスを計算することができる。
【００９９】
パッキングシーケンスを計算する際に、レイヤ内またはレイヤ間の両方で、ロボットシステム１００は、１つまたは複数のパッケージ寸法（たとえば、高さ）、相対的な載置位置、またはこれらの組合せに応じて、スタッキングプラン５０２内のパッケージの位置を分析することができる。たとえば、ロボットシステム１００は、ユニット／基準位置（たとえば、パレタイズロボットの位置）から遠いボックスの載置を、近くに割り当てられたパッケージよりも前に配列することができる。また、ロボットシステム１００は、割り当てられた位置が載置プランの外周に沿っており、ユニット位置から離れている場合、より高い／より重いパッケージをより早く載置することができる。
【０１００】
ブロック６１６において、ロボットシステム１００は、利用可能パッケージ３６２をプラットフォーム（台）に載置するためにスタッキングプラン５０２を実施することができる。ロボットシステム１００は、スタッキングプラン５０２に従って、１つまたは複数のモーションプラン、アクチュエータコマンド／設定、またはこれらの組合せを、対応するデバイス／ユニット（たとえば、図１の移載ユニット１０４、図２のアクチュエーションデバイス２１２、図２のセンサ２１６など）に伝達することに基づいて、スタッキングプラン５０２を実施することができる。ロボットシステム１００はさらに、デバイス／ユニットにおいて伝達された情報を実行して、利用可能パッケージ３６２をソース位置から目的地のプラットフォーム（台）に移載することに基づいて、スタッキングプラン５０２を実施することができる。したがって、ロボットシステム１００は、３Ｄマッピングに従って利用可能パッケージ３６２を載置することができ、ここで、利用可能パッケージ３６２のうちの１つまたは複数は他のパッケージの上に載置／スタックされ、たとえば、利用可能パッケージ３６２がレイヤごとに載置される。さらに、ロボットシステム１００は、パッキングシーケンスに従ってパッケージを操作／移載することができる。したがって、ロボットシステム１００は、上述のように、パッケージをレイヤごとに、またはそのような制約なしで載置することができる。
【０１０１】
上述のタスクの離散化および２Ｄ／３Ｄレイヤ化によって、オブジェクトをパッキングする効率、速度、および精度が向上する。したがって、オペレータ入力の削減および精度の向上によって、自動化パッキング処理に関する人間の労力をさらに減少させることができる。一部の環境では、上述のロボットシステム１００は、約１００万ＵＳドルまたはそれ以上のコストがかかり得る配列バッファの必要性を排除することができる。
【０１０２】
結論
開示した技術の実施例の上記の詳細な説明は、網羅的なものではなく、開示した技術を上記で開示した厳密な形に限定するものでもない。開示した技術の具体例を例示の目的で上述しているが、当業者であれば理解するように、開示した技術の範囲内で様々な等価な修正が可能である。たとえば、処理またはブロックを所与の順序で提示しているが、代替的な実施態様は異なる順序のステップを有するルーチンを実行してもよく、または異なる順序のブロックを有するシステムを採用してもよく、一部の処理またはブロックを削除、移動、追加、細分化、結合、および／または修正して、代替的な組み合わせまたは部分的な組み合わせを提供してもよい。これらの処理またはブロックのそれぞれは、種々の異なる方法で実施されてもよい。また、処理またはブロックは順番に実行されるように示している場合があるが、これらの処理またはブロックは代わりに並列に実行または実施されてもよく、または異なる時刻に実行されてもよい。さらに、本明細書に記載の任意の特定の数字は例にすぎず、代替的な実施態様は異なる値または範囲を採用してもよい。
【０１０３】
これらのおよび他の変更は、上記の詳細な説明に照らして、開示した技術に対して行うことができる。詳細な説明では、開示した技術の特定の例だけでなく、企図される最良の形態を説明しているが、上記の説明が文中でどれほど詳細に見えても、開示した技術は多くの方法で実践することができる。システムの詳細はその特定の実施態様において大幅に異なってもよく、本明細書で開示した技術によってなおも包含される。上述のように、開示した技術の特定の特徴または態様を説明する際に使用される特定の用語は、その用語が関連する開示した技術の任意の特定の特性、特徴、または態様に限定されるようにその用語が本明細書で再定義されることを意味するよう解釈されるべきではない。したがって、本発明は、添付の特許請求の範囲を除いて、限定されない。一般に、以下の特許請求の範囲で使用される用語は、上記の詳細な説明のセクションがそのような用語を明確に定義していない限り、開示した技術を本明細書で開示した具体例に限定するように解釈されるべきではない。
【０１０４】
本発明の特定の態様を特定の請求項の形式で以下に提示するが、出願人は本発明の様々な態様を任意数の請求項の形式で企図している。したがって、出願人は、本出願または継続出願において、そのような追加の請求項の形式を追求するために本出願を提出した後に追加の請求を追求する権利を留保している。
【図１】
2020196626.tif 000003
【図２】
2020196626.tif 000004
【図３Ａ】
2020196626.tif 000005
【図３Ｂ】
2020196626.tif 000006
【図３Ｃ】
2020196626.tif 000007
【図４】
2020196626.tif 000008
【図５】
2020196626.tif 000009
【図６】
2020196626.tif 000010
【外国語明細書】
2020196626000001.pdf