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