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