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