本明細書では、壁に基づくパッキング機構を有するロボットシステムのためのシステム及び方法を説明する。いくつかの実施形態に従って構成されるロボットシステム(たとえば、1つまたは複数の指定タスクを実行するデバイスの統合システム)は、コンテナ壁に関してオブジェクト(たとえば、パッケージ、ボックス、ケースなど)をパッキングすることによって、制御、有用性、及び柔軟性を向上させる。たとえば、ロボットシステムは、オブジェクトをレイヤ状にスタックして、ベースレイヤの上の1つまたは複数のオブジェクトが、(1)1つまたは複数のコンテナ壁に接触するかまたは寄りかかる、及び/または(2)コンテナ壁に最も近い1つまたは複数のベースレイヤオブジェクト(複数可)から張り出す(たとえば、それらの周縁(複数可)から横方向に突出する)ようにすることができる。
ロボットシステムは、様々なパッキングコンポーネントを離散化することに基づいて、コンテナ壁(たとえば、カート、ケージ、ビン、ボックスなどの垂直な向きの壁または仕切り)に関してオブジェクトをパッキングすることができる。パッキングコンポーネントのいくつかの例は、オブジェクト(たとえば、登録されたまたは想定されるオブジェクト及び/または認識されないオブジェクト)、オブジェクトを受け取るように構成されるコンテナまたはパッキング台、及び/またはロボット式マニピュレータ(たとえば、エンドエフェクタ、ロボットアーム、それらの一部、またはそれらの組み合わせ)を含むことができる。ロボットシステムは、パッキングコンポーネントの離散化モデルを生成することができる。
離散化モデルを使用して、ロボットシステムは、コンテナ内のオブジェクトの載置位置を決めるパッキングプランを導出することができる。パッキングプランは、オブジェクトを互いの上に(たとえば、レイヤ状に)スタックする載置位置を含むことができる。ロボットシステムは、オブジェクト間及び/またはオブジェクトとコンテナ壁との間の離間距離、張り出し距離またはその一部、他のオブジェクト−オブジェクト間の測定値、及び/または他のオブジェクト−コンテナ間の測定値を計算/推定することができる。計算に基づいて、ロボットシステムは、載置されたオブジェクトがコンテナ壁に接触する/寄りかかる、及び/または下の1つまたは複数のオブジェクトから張り出す載置位置を有するパッキングプランを導出することができる。いくつかの実施形態では、ロボットシステムは、オブジェクトの重心(CoM)位置、回転点、質量/重量、寸法、及び/または他の物理的特質を導出及び利用して、パッキングプランを導出することができる。
いくつかの実施形態では、ロボットシステムは、パッキングプランに対応するモーションプランを導出することができる。各モーションプランはオブジェクトに対応し、モーション経路、あるいはオブジェクト及び/またはロボットユニット(たとえば、ロボットアーム及び/またはエンドエフェクタ)に対する対応するコマンド/設定のセットを含むことができる。モーションプランは、開始位置にあるオブジェクトに近づき、オブジェクトをエンドエフェクタで把持し、オブジェクトを持ち上げてその載置位置まで移動させ、オブジェクトを載置位置で放す/載置するためのロボットユニットの動作に対応することができる。
ロボットシステムは、モーションプラン及び/または対応するコマンド/設定のうちの1つまたは複数を対象ロボットユニットに伝達することなどにより、パッキングプランを実施することができる。ロボットシステムはさらに、対象ロボットユニットにおいてコマンド/設定を実行することにより、パッキングプランを実施することができる。したがって、ロボットシステムは、パッキングプランに従ってオブジェクトを開始位置からそれぞれの載置位置まで転置するようにロボットユニットを動作させることができる。
ロボットシステムは、たとえば、想定外の状況(たとえば、コンテナ異常)を考慮して、パッキングプランを動的に調整するように構成することができる。たとえば、コンテナ(たとえば、壁が2つのカート及び/または壁が3つのケージ)は垂直な向きの壁を含み得、これは変形し、曲がり、位置ずれし、部分的に閉じられ、及び/または想定される状況とは別の方法で物理的に異なり得る。そのような想定外の状況は、コンテナ内の載置エリア、及び/または載置エリアへの進入路に影響し得る。ロボットシステムは、そのような想定外の状況を検出し、パッキングプランを動的に調整することができる。以下で詳細に説明するように、ロボットシステムは、離散化モデルを使用して、軸平行バウンディングボックス(AABB:axis aligned bounding box)を決定し、AABBをオフセットし、及び/またはオフセットされたAABBを有効性確認することができる。また、動的な調整に基づいて、ロボットシステムは、想定外の状況を考慮するようにモーションプランを更新することができる。いくつかの実施形態では、ロボットシステムは、調整されたオブジェクト載置位置から開始し、開始位置まで段階的に後退して、モーションプランを決定することができる。ロボットシステムは、逆トレース経路に沿ってエンドエフェクタの離散化モデルを載置して、モーションプランを更新及び/または有効性確認することができる。
以下の説明では、本開示技術の完全な理解を提供するために、多数の具体的な詳細を記載している。他の実施形態では、本明細書で紹介する技術は、これらの具体的な詳細がなくとも実践することができる。他の例では、よく知られている特徴、たとえば、特定の関数またはルーチンについては、本開示を不必要に不明瞭にしないように、詳細には説明していない。本明細書における「実施形態」、「一実施形態」などへの言及は、説明している特定の特徴、構造、材料、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書におけるそのような文言の出現は、必ずしも全てが同一の実施形態を指すものではない。一方、そのような言及は、必ずしも相互に排他的ではない。さらに、特定の特徴、構造、材料、または特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせることができる。図面に示す様々な実施形態は説明のための表現にすぎず、必ずしも縮尺通りに描いていないことを理解されたい。
よく知られており、ロボットシステム及びサブシステムに関連付けられることが多いが、開示した技術のいくつかの重要な側面を不必要に不明瞭にし得る、構造または処理を説明する一部の詳細については、明瞭にするために以下の説明には記載していない。また、以下の開示では本技術の異なる態様のいくつかの実施形態を記載しているが、いくつかの他の実施形態は、このセクションに記載したものとは異なる構成または異なるコンポーネントを有し得る。したがって、開示した技術は、追加の要素を有し、後述の要素の一部を有さない他の実施形態を有し得る。
以下で説明する本開示の多くの実施形態または態様は、プログラム可能コンピュータまたはプロセッサによって実行されるルーチンを含むコンピュータ実行可能命令またはプロセッサ実行可能命令の形態をとり得る。当業者であれば、開示した技術が以下に図示及び説明した以外のコンピュータまたはプロセッサシステム上で実践され得ることを理解するであろう。本明細書に記載の技術は、後述のコンピュータ実行可能命令のうちの1つまたは複数を実行するように特別にプログラムされ、構成され、または構築された専用コンピュータまたはデータプロセッサにおいて実施することができる。したがって、本明細書で一般的に使用される「コンピュータ」及び「プロセッサ」という用語は、任意のデータプロセッサを指し、インターネット機器及びハンドヘルドデバイス(たとえば、パームトップコンピュータ、ウェアラブルコンピュータ、セルラーまたはモバイル電話、マルチプロセッサシステム、プロセッサベースまたはプログラム可能コンシューマ電子機器、ネットワークコンピュータ、ミニコンピュータなど)を含むことができる。これらのコンピュータ及びプロセッサによって扱われる情報は、任意の好適な表示媒体、たとえば、液晶ディスプレイ(LCD)に提示することができる。コンピュータ実行可能タスクまたはプロセッサ実行可能タスクを実行するための命令は、ハードウェア、ファームウェア、またはハードウェア及びファームウェアの組み合わせを含む、任意の好適なコンピュータ可読媒体内に、またはその媒体上に記憶することができる。命令は、たとえば、フラッシュドライブ及び/または他の好適な媒体を含む任意の好適なメモリデバイスに含めることができる。
「結合される」及び「接続される」という用語、ならびにこれらの派生形は、本明細書においてコンポーネント間の構造関係を記述するために使用され得る。これらの用語が互いに同義語であることが意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続される」は、2つ以上の要素が互いに直接接していることを示すために使用され得る。文脈において別途明記していない限り、「結合される」という用語は、2つ以上の要素が互いに直接的にもしくは間接的に(間に他の介在要素を介して)接していること、または2つ以上の要素が(たとえば、信号の送受信もしくは関数呼び出しなどのための因果関係のように)互いに協力または相互作用すること、あるいはその両方を示すために使用され得る。
好適な環境
図1は、壁に基づくパッキング機構を有するロボットシステム100が動作し得る例示的な環境の図である。ロボットシステム100は、1つまたは複数のタスクを実行するように構成される1つまたは複数のユニット(たとえば、ロボット)を含む及び/またはこれらと通信することができる。壁に基づくパッキング機構の態様は、様々なユニットによって実践または実装することができる。
図1に示す例では、ロボットシステム100は、倉庫または流通/出荷拠点における、荷下ろしユニット102、転置ユニット104(たとえば、パレタイズロボット及び/またはピースピッカーロボット)、輸送ユニット106、積載ユニット108、またはそれらの組み合わせを含むことができる。ロボットシステム100内の各ユニットは、1つまたは複数のタスクを実行するように構成することができる。タスクを順番に組み合わせて目標を達成する動作を行うことができ、たとえば、トラックもしくはバンからオブジェクトを荷下ろしし、倉庫に保管する、または保管位置からオブジェクトを荷下ろしし、出荷準備することができる。他の例では、タスクは、オブジェクトを目標場所に(たとえば、パレットの上、及び/またはビン/ケージ/ボックス/ケースの中に)載置することを含むことができる。後述のように、ロボットシステムは、オブジェクトを載置及び/またはスタックするためのプラン(たとえば、載置位置/向き、オブジェクトを転置するためのシーケンス、及び/または対応するモーションプラン)を導出することができる。各ユニットは、導出されたプランのうちの1つまたは複数に従ってアクションのシーケンスを実行して(たとえば、その中の1つまたは複数のコンポーネントを動作させることによって)タスクを実行するように構成することができる。
いくつかの実施形態では、タスクは、開始位置114からタスク位置116までの対象オブジェクト112(たとえば、実行しているタスクに対応するパッケージ、ボックス、ケース、ケージ、パレットなどのうちの1つ)の操作(たとえば、移動及び/または向き変更)を含むことができる。たとえば、荷下ろしユニット102(たとえば、デバンニングロボット)は、対象オブジェクト112をキャリア(たとえば、トラック)内の位置からコンベヤベルト上の位置に転置するように構成することができる。また、転置ユニット104は、対象オブジェクト112をある位置(たとえば、コンベヤベルト、パレット、またはビン)から他の位置(たとえば、パレット、ビンなど)に転置するように構成することができる。他の例では、転置ユニット104(たとえば、パレタイズロボット)は、対象オブジェクト112をソース位置(たとえば、パレット、拾得エリア、及び/またはコンベヤ)から目的地パレットに転置するように構成することができる。動作を完了する際に、輸送ユニット106は、対象オブジェクト112を転置ユニット104に関連付けられたエリアから積載ユニット108に関連付けられたエリアに転置することができ、積載ユニット108は、対象オブジェクト112を(たとえば、対象オブジェクト112を運ぶパレットを移動させることによって)転置ユニット104から保管位置(たとえば、棚上の位置)に転置することができる。タスク及び関連するアクションに関する詳細については後述する。
例示の目的で、ロボットシステム100は出荷センターの状況で説明しているが、ロボットシステム100は、他の環境/他の目的での、たとえば、製造、組み立て、パッケージング、ヘルスケア、及び/または他のタイプの自動化のためのタスクを実行するように構成できることを理解されたい。また、ロボットシステム100は、図1に示していない他のユニット、たとえば、マニピュレータ、サービスロボット、モジュール式ロボットなどを含むことができることも理解されたい。たとえば、いくつかの実施形態では、ロボットシステム100は、オブジェクトをケージカートまたはパレットからコンベヤまたは他のパレット上に転置するためのデパレタイズユニット、あるコンテナから他のコンテナにオブジェクトを転置するためのコンテナ切替ユニット、オブジェクトを包装するためのパッケージングユニット、オブジェクトをそれらの1つまたは複数の特性に応じてグループ化するためのソーティングユニット、オブジェクトをそれらの1つまたは複数の特性に応じて異なって操作するための(たとえば、ソートする、グループ化する、及び/または転置するための)ピースピッキングユニット、あるいはそれらの組み合わせを含むことができる。
ロボットシステム100は、動き(たとえば、回転変位及び/または並進変位)のために関節において接続された物理的な部材または構造部材(たとえば、ロボット式マニピュレータアーム)を含み、及び/またはこれらに結合することができる。構造部材及び関節は、ロボットシステム100の用途/動作に応じて1つまたは複数のタスク(たとえば、把持、回転、接合など)を実行するように構成されるエンドエフェクタ(たとえば、グリッパ)を操作するように構成される運動連鎖を形成することができる。ロボットシステム100は、対応する関節周りでまたはその位置で構造部材を駆動または操作する(たとえば、変位させる及び/または向き変更する)ように構成されるアクチュエーションデバイス(たとえば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマーなど)を含むことができる。いくつかの実施形態では、ロボットシステム100は、対応するユニット/シャーシをある場所から他の場所へ輸送するように構成される輸送モータを含むことができる。
ロボットシステム100は、たとえば、構造部材を操作する及び/またはロボットユニットを輸送するためのタスクを実施するために使用される情報を取得するように構成されるセンサを含むことができる。センサは、ロボットシステム100の1つまたは複数の物理的な特性(たとえば、1つまたは複数の構造部材/その関節の状態、状況、及び/または位置)、及び/または周辺環境を検出または測定するように構成されるデバイスを含むことができる。センサのいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダなどを含むことができる。
いくつかの実施形態では、たとえば、センサは、周辺環境を検出するように構成される1つまたは複数の撮像デバイス(たとえば、視覚及び/または赤外線カメラ、2D及び/または3D撮像カメラ、距離測定デバイス、たとえば、ライダーまたはレーダーなど)を含むことができる。撮像デバイスは、マシン/コンピュータビジョン(たとえば、自動検査、ロボット案内、または他のロボットアプリケーションのためのもの)を介して処理され得るデジタル画像及び/または点群などの、検出された環境の表現を生成することができる。以下でより詳細に説明するように、ロボットシステム100は、デジタル画像及び/または点群を処理して、対象オブジェクト112、開始位置114、タスク位置116、対象オブジェクト112の姿勢、開始位置114及び/または姿勢に関する信頼基準、あるいはそれらの組み合わせを識別することができる。
対象オブジェクト112を操作するために、ロボットシステム100は、指定領域(たとえば、トラック内またはコンベヤベルト上などの拾得位置)の画像を撮影し分析して、対象オブジェクト112及びその開始位置114を識別することができる。同様に、ロボットシステム100は、他の指定領域(たとえば、オブジェクトをコンベヤ上に載置するための降下位置、オブジェクトをコンテナ内に載置するための位置、またはスタッキング目的のパレット上の位置)の画像を撮影し分析して、タスク位置116を識別することができる。たとえば、撮像デバイスは、拾得エリアの画像を生成するように構成される1つまたは複数のカメラ、及び/またはタスクエリア(たとえば、降下エリア)の画像を生成するように構成される1つまたは複数のカメラを含むことができる。撮影画像に基づいて、後述のように、ロボットシステム100は、開始位置114、タスク位置116、関連する姿勢、パッキング/載置プラン、転置/パッキングシーケンス、及び/または他の処理結果を決定することができる。
いくつかの実施形態では、たとえば、センサは、ロボットシステム100の構造部材(たとえば、ロボットアーム及び/またはエンドエフェクタ)及び/または対応する関節の位置を検出するように構成される位置センサ(たとえば、位置エンコーダ、電位差計など)を含むことができる。ロボットシステム100は、位置センサを使用して、タスクの実行中に構造部材及び/または関節の位置及び/または向きを追跡することができる。
好適なシステム
図2は、本技術の1つまたは複数の実施形態によるロボットシステム100を示すブロック図である。いくつかの実施形態では、たとえば、ロボットシステム100は(たとえば、上述のユニット及び/またはロボットのうちの1つまたは複数において)、電子/電気デバイス、たとえば、1つまたは複数のプロセッサ202、1つまたは複数の記憶デバイス204、1つまたは複数の通信デバイス206、1つまたは複数の入出力デバイス208、1つまたは複数のアクチュエーションデバイス212、1つまたは複数の輸送モータ214、1つまたは複数のセンサ216、あるいはそれらの組み合わせを含むことができる。様々なデバイスは、有線接続及び/または無線接続を介して互いに結合することができる。たとえば、ロボットシステム100は、たとえば、システムバス、ペリフェラルコンポーネントインターコネクト(PCI)バスもしくはPCI−Expressバス、ハイパートランスポートもしくは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインターフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、IIC(I2C)バス、または電気電子技術者協会(IEEE)標準1394バス(「Firewire」とも呼ばれる)などのバスを含むことができる。また、たとえば、ロボットシステム100は、ブリッジ、アダプタ、プロセッサ、またはデバイス間に有線接続を提供するための他の信号関連デバイスを含むことができる。無線接続は、たとえば、セルラー通信プロトコル(たとえば、3G、4G、LTE、5Gなど)、無線ローカルエリアネットワーク(LAN)プロトコル(たとえば、ワイヤレスフィディリティ(WIFI))、ピアツーピアもしくはデバイスツーデバイス通信プロトコル(たとえば、Bluetooth、近距離無線通信(NFC)など)、モノのインターネット(IoT)プロトコル(たとえば、NB−IoT、LTE−Mなど)、及び/または他の無線通信プロトコルに基づくことができる。
プロセッサ202は、記憶デバイス204(たとえば、コンピュータメモリ)に記憶された命令(たとえばソフトウェア命令)を実行するように構成されるデータプロセッサ(たとえば、中央処理装置(CPU)、専用コンピュータ、及び/またはオンボードサーバ)を含むことができる。いくつかの実施形態では、プロセッサ202は、図2に示す他の電子/電気デバイス及び/または図1に示すロボットユニットに動作可能に結合される独立した/スタンドアローンのコントローラに含めることができる。プロセッサ202は、他のデバイスを制御して/インターフェースをとって、ロボットシステム100にアクション、タスク、及び/または動作を実行させるプログラム命令を実施することができる。
記憶デバイス204は、プログラム命令(たとえば、ソフトウェア)が記憶された非一時的コンピュータ可読媒体を含むことができる。記憶デバイス204のいくつかの例は、揮発性メモリ(たとえば、キャッシュ及び/またはランダムアクセスメモリ(RAM))、及び/または不揮発性メモリ(たとえば、フラッシュメモリ及び/または磁気ディスクドライブ)を含むことができる。記憶デバイス204の他の例は、ポータブルメモリドライブ及び/またはクラウドストレージデバイスを含むことができる。
いくつかの実施形態では、記憶デバイス204を使用して、さらに処理結果及び/または所定のデータ/閾値を記憶し、これらへのアクセスを提供することができる。たとえば、記憶デバイス204は、ロボットシステム100によって操作され得るオブジェクト(たとえば、ボックス、ケース、及び/または製品)の説明を含むマスターデータ252を記憶することができる。1つまたは複数の実施形態では、マスターデータ252は、そのようなオブジェクトごとに登録データ254を含むことができる。登録データ254は、ロボットシステム100によって操作されると想定されるオブジェクトについての寸法、形状(たとえば、可能な姿勢についてのテンプレート及び/または異なる姿勢のオブジェクトを認識するためのコンピュータ生成モデル)、色彩設計、画像、識別情報(たとえば、バーコード、クイックレスポンス(QR)コード(登録商標)、ロゴなど、及び/またはその想定位置)、想定重量、他の物理的/視覚的特性、あるいはそれらの組み合わせを含むことができる。いくつかの実施形態では、マスターデータ252は、オブジェクトに関する操作関連情報、たとえば、各オブジェクトの重心(CoM)位置またはその推定値、1つまたは複数のアクション/手順に対応する想定されるセンサ測定値(たとえば、力、トルク、圧力、及び/または接触測定値に関するもの)、あるいはそれらの組み合わせを含むことができる。
通信デバイス206は、ネットワークを介して外部または遠隔のデバイスと通信するように構成される回路を含むことができる。たとえば、通信デバイス206は、受信器、送信器、変調器/復調器(モデム)、信号検出器、信号符号化器/復号器、コネクタポート、ネットワークカードなどを含むことができる。通信デバイス206は、1つまたは複数の通信プロトコル(たとえば、インターネットプロトコロル(IP)、無線通信プロトコルなど)に従って電気信号を送信、受信、及び/または処理するように構成することができる。いくつかの実施形態では、ロボットシステム100は通信デバイス206を使用して、ロボットシステム100のユニット間で情報を交換する、及び/または(たとえば、報告、データ収集、分析、及び/またはトラブルシューティングの目的で)ロボットシステム100の外部のシステムまたはデバイスと情報を交換することができる。
入出力デバイス208は、人間のオペレータとの間で情報を伝達及び/または受信するように構成されるユーザインターフェースデバイスを含むことができる。たとえば、入出力デバイス208は、情報を人間のオペレータに伝達するためのディスプレイ210及び/または他の出力デバイス(たとえば、スピーカー、ハプティックス回路、または触覚フィードバックデバイスなど)を含むことができる。また、入出力デバイス208は、制御デバイスまたは受信デバイス、たとえば、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインターフェース(UI)センサ(たとえば、モーションコマンドを受信するためのカメラ)、ウェアラブル入力デバイスなどを含むことができる。いくつかの実施形態では、ロボットシステム100は、入出力デバイス208を使用して、アクション、タスク、動作、またはそれらの組み合わせを実行する際に人間のオペレータと対話することができる。
ロボットシステム100は、動き(たとえば、回転変位及び/または並進変位)のために関節において接続された物理的な部材または構造部材(たとえば、ロボット式マニピュレータアーム)を含むことができる。構造部材及び関節は、ロボットシステム100の用途/動作に応じて1つまたは複数のタスク(たとえば、把持、回転、接合など)を実行するように構成されるエンドエフェクタ(たとえば、グリッパ)を操作するように構成される運動連鎖を形成することができる。ロボットシステム100は、対応する関節周りでまたはその位置で構造部材を駆動または操作する(たとえば、変位させる及び/または向き変更する)ように構成されるアクチュエーションデバイス212(たとえば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマーなど)を含むことができる。いくつかの実施形態では、ロボットシステム100は、対応するユニット/シャーシをある場所から他の場所へ輸送するように構成される輸送モータ214を含むことができる。
ロボットシステム100は、たとえば、構造部材を操作する及び/またはロボットユニットを輸送するためのタスクを実施するために使用される情報を取得するように構成されるセンサ216を含むことができる。センサ216は、ロボットシステム100の1つまたは複数の物理的な特性(たとえば、1つまたは複数の構造部材/その関節の状態、条件、及び/または位置)、及び/または周辺環境を検出または測定するように構成されるデバイスを含むことができる。センサ216のいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダなどを含むことができる。
いくつかの実施形態では、たとえば、センサ216は、周辺環境を検出するように構成される1つまたは複数の撮像デバイス222(たとえば、視覚及び/または赤外線カメラ、2D及び/または3D撮像カメラ、距離測定デバイス、たとえば、ライダーまたはレーダーなど)を含むことができる。撮像デバイス222は、マシン/コンピュータビジョン(たとえば、自動検査、ロボット案内、または他のロボットアプリケーションのためのもの)を介して処理され得るデジタル画像及び/または点群などの、検出された環境の表現を生成することができる。以下でより詳細に説明するように、ロボットシステム100は(たとえば、プロセッサ202を介して)デジタル画像及び/または点群を処理して、図1の対象オブジェクト112、図1の開始位置114、図1のタスク位置116、対象オブジェクト112の姿勢、開始位置114及び/または姿勢に関する信頼基準、あるいはそれらの組み合わせを識別することができる。
対象オブジェクト112を操作するために、ロボットシステム100は(たとえば、上述の様々な回路/デバイスを介して)、指定領域(たとえば、トラック内またはコンベヤベルト上などの拾得位置)の画像を撮影し分析して、対象オブジェクト112及びその開始位置114を識別することができる。同様に、ロボットシステム100は、他の指定領域(たとえば、オブジェクトをコンベヤ上に載置するための降下位置、オブジェクトをコンテナ内に載置するための位置、またはスタッキング目的のパレット上の位置)の画像を撮影し分析して、タスク位置116を識別することができる。たとえば、撮像デバイス222は、拾得エリアの画像を生成するように構成される1つまたは複数のカメラ、及び/またはタスクエリア(たとえば、降下エリア)の画像を生成するように構成される1つまたは複数のカメラを含むことができる。撮影画像に基づいて、後述のように、ロボットシステム100は、開始位置114、タスク位置116、関連する姿勢、パッキング/載置プラン、転置/パッキングシーケンス、及び/または他の処理結果を決定することができる。
いくつかの実施形態では、たとえば、センサ216は、構造部材(たとえば、ロボットアーム及び/またはエンドエフェクタ)及び/またはロボットシステム100の対応する関節の位置を検出するように構成される位置センサ224(たとえば、位置エンコーダ、電位差計など)を含むことができる。ロボットシステム100は、位置センサ224を使用して、タスクの実行中に構造部材及び/または関節の位置及び/または向きを追跡することができる。
例示的なオブジェクト転置及びパッキング
図3は、本技術の1つまたは複数の実施形態による図1のロボットシステム100の図である。ロボットシステム100は、エンドエフェクタ304(たとえば、グリッパ)を含むロボットアーム302を含むか、またはこれに通信可能に結合することができる。ロボットアーム302は、図1に示すロボットユニットのうちの1つまたはその一部(たとえば、図1の転置ユニット104のインスタンス)とすることができる。たとえば、ロボットアーム302は、パッケージハンドリングアプリケーションを含む産業用アプリケーションで採用される産業用ロボットシステムを含むことができる。ロボットアーム302は、いくつかの軸に沿った、またはそれらを中心とする関節があり、たとえば、6軸産業用ロボットアーム構造であり得る。
ロボットアーム302は、図1の開始位置114と図1のタスク位置116との間で対象オブジェクト112を転置するように構成することができる。図3に示すように、開始位置114は、コンベヤ306(たとえば、図1の輸送ユニット106のインスタンス)上の位置(たとえば、終点/入口(ingress)点)に対応することができる。ロボットアーム302のタスク位置116は、載置台308(たとえば、カートもしくはケージなどのコンテナ)またはその内部の位置とすることができる。たとえば、ロボットアーム302は、コンベヤ306からオブジェクト112を拾得し、他の目的地への輸送/タスクのために載置台308内/上に載置することができる。
エンドエフェクタ304は、ロボットアーム302の遠位端に結合される任意の1つまたは複数のコンポーネントを含むことができる。エンドエフェクタ304は、1つまたは複数のオブジェクトと相互作用するように構成することができる。いくつかの実施形態では、エンドエフェクタ304は、フォーストルク(F−T)センサ(図示せず)、アームインターフェース、グリッパシステム、及び/またはグリッパインターフェースを含むことができる。例示の目的で、エンドエフェクタ304は吸引カップの列を有するように図示しているが、エンドエフェクタ304が異なる構成を有することができることは理解されたい。たとえば、エンドエフェクタ304は、統合型吸引チャネルを有する吸引パッド、ピンチャー型把持デバイス、またはオブジェクトを掴むための他の任意のタイプの把持システムを有することができる。
ロボットシステム100は、ロボットアーム302による転置動作を行う際に、図2のセンサ216のうちの1つまたは複数を使用することができる。ロボットシステム100は、開始位置114及び/またはタスク位置116の、またはその付近のセンサのセット(たとえば、2D及び/または3Dセンサ、たとえば、カメラ及び/または深度センサ)を含むか、またはこれらに結合することができる。いくつかの実施形態では、ロボットシステム100は、タスク位置116の上にあり、タスク位置116に向けられた上面視センサ310、及び/またはタスク位置116に隣接し、タスク位置116へ横方向に向けられた側面視センサ312を含むか、またはこれらに結合することができる。ロボットシステム100は、開始位置114に向けられた1つまたは複数のソースセンサ314を同様に含むことができる。センサは、対応する位置を撮像及び/または分析するように構成することができる。たとえば、上面視センサ310は、載置台308及び/またはその上のオブジェクトの上面視を描いた画像データを生成及び/または処理することができる。また、側面視センサ312は、載置台308及び/またはその上のオブジェクトの側面視を描いた画像データを生成及び/または処理することができる。
ロボットシステム100は、センサ216からの画像データを使用して、たとえば、開始位置114からタスク位置116までオブジェクトを転置するためのタスクを実行することができる。したがって、ロボットシステム100は、画像データを使用して、タスクを実行するための1つまたは複数のパッキングプラン及び/またはモーションプランを導出及び実施することができる。以下でより詳細に説明するように、ロボットシステム100は、載置台308の上または中にオブジェクトを載置するためのパッキングプラン及び対応するモーションプランを導出し、及び/または動的に調整することができる。プランは、1つまたは複数のオブジェクトが他のオブジェクトの上に載置されること(たとえば、スタッキング)に対応することができる。ロボットシステム100は、オブジェクトの周辺部(複数可)が、下のオブジェクトの周辺部(複数可)を横方向に越えて延在するように、スタックされたオブジェクト(たとえば、下のオブジェクトの上に載置されたオブジェクト)が載置されるよう、様々なプランを導出及び/または調整し得る。いくつかの例では、ロボットシステム100は、突出しているスタックされたオブジェクトが、載置台308の垂直な向きの壁または仕切りに接触する、及び/またはこれらに寄りかかるように、プランを導出及び/または調整し得る。したがって、ロボットシステム100は、載置台308内の載置ゾーンを効果的に増やし、垂直な向きの壁または仕切りを使用してその中のオブジェクトを支持するように、パッキングプラン及びモーションプランを導出することができる。
同様に以下で詳細に説明するように、ロボットシステム100は、載置台308に関連する異常を検出したことに基づいて、パッキングプラン及び/またはモーションプランを動的に調整することができる。たとえば、ロボットシステム100は、実際の載置台(たとえば、カート及び/またはケージ)のリアルタイム画像を、ロボットシステム100の動作中にそれらが載置されたときに取得することができる。ロボットシステム100は、リアルタイム画像を分析して、半開、位置ずれ、及び/または垂直な壁の反りによる(たとえば、所定のまたは想定されるスペースと比較した)載置ゾーンの減少など、載置台における異常を検出することができる。リアルタイムに異常を検出したことに基づいて、ロボットシステム100は、(たとえば、配備場所において、及び/または最初に導出されたプランを実施/トリガする直前に)プランを動的に更新することができる。いくつかの実施形態では、ロボットシステム100は、様々なずらされた載置位置をテスト及び検証することができる。ロボットシステム100はさらに、リアルタイムの状況に応じて載置位置に対応する更新されたモーションプランをテストすることができる。
ロボットシステム100は同様に、センサ216のうちの1つまたは複数を使用して、ロボットアーム302、エンドエフェクタ304、及び/または対象オブジェクト112を位置特定し、追跡することができる。いくつかの実施形態では、ロボットシステム100は、位置センサからの読取値に基づいて、位置(図3に座標セット(x,y,z)として図示)を追跡することができる。また、ロボットシステム100は、伝達または実行されたコマンド/設定に基づいて、位置を計算し、追跡することができる。ロボットシステムは、所定の座標系またはグリッドに従う位置を決定し、追跡することができる。
例示的な載置台
図4A〜図4Dは、本技術の1つまたは複数の実施形態による例示的なオブジェクトコンテナ(たとえば、図3の載置台308)の図である。図4Aは例示的なカート410の側面視であり、図4Bはカート410の上面視である。カート410は、カート底面412と、1対の対向するカート側壁414とを有するオブジェクトコンテナとすることができる。たとえば、カート底面412は、長方形形状のフットプリント(たとえば、上面視または底面視からの外周形状またはシルエット)を有することができる。カート側壁414は、カート底面412の1対の対向する周縁に/周縁の上に取り付けるか、または周縁と一体化することができる。カート底面412の残りの周縁の上のスペースは、開いたまま、または遮られていないままにすることができる。
図4Cは例示的なケージ420の側面視であり、図4Dはケージ420の上面視である。ケージ420は、ケージ底面422及び3つの垂直な向きの壁(たとえば、1対の対向するケージ側壁424及びケージ後壁426)を有するオブジェクトコンテナとすることができる。たとえば、ケージ底面422は、長方形形状のフットプリントを有することができる。ケージ側壁424は、ケージ底面422の1対の対向する周縁に/周縁の上に取り付けるか、または周縁と一体化することができる。ケージ後壁426は、ケージ底面422の残りの周縁のうちの1つに/その上に取り付けるか、またはそれと一体化することができる。ケージ後壁426の反対側のスペースは、開いたまま、または遮られていないままにすることができる。
各載置台308は、運ばれる/積載されたオブジェクトによって占有することができる想定載置ゾーン430を含むことができる。換言すれば、想定載置ゾーン430は、対応する載置台308の意図されたまたは所定の貨物スペースを表すことができる。図4A〜図4Dを一緒に参照すると、カート410及びケージ420の想定載置ゾーン430は、垂直な向きの壁(たとえば、カート側壁414、ケージ側壁424、及び/またはケージ後壁426)まで広がることができ、及び/またはそれらによって囲むことができる。したがって、ロボットシステム100は、オブジェクトが垂直な向きの壁に接触する、及び/またはこれらによって支持されるように、カート410及び/またはケージ420内にオブジェクトを載置するためのプランを導出、実施、及び/または実行し得る。載置ゾーン430は、カート底面412及び/またはケージ底面422の開いた/遮られていないエッジまで(たとえば、その手前または同一平面上/一致)あるいはそれを越えて、横方向に(たとえば、y軸に沿って)延在し得る。同様に、載置ゾーン430は、垂直な向きの壁の上端まで、またはそれを越えて、垂直方向に(たとえば、z軸に沿って)延在し得る。換言すれば、いくつかの例では、ロボットシステム100は、載置されたオブジェクトの少なくとも一部が、対応する載置台308の垂直な向きの壁の上端を越えるように、オブジェクトを載置するためのプランを導出、実施、及び/または実行し得る。
例示的なエンドエフェクタ
図5A〜図5Cは、本技術の1つまたは複数の実施形態による例示的なエンドエフェクタ(たとえば、図3のエンドエフェクタ304)の図である。図5A及び図5Bはそれぞれ、例示的なグリッパアセンブリ502及びロボットアーム302の一部の側面視及び上面視である。いくつかの実施形態では、グリッパアセンブリ502は、グリッパアセンブリ502とオブジェクトとの間に真空を生成して、オブジェクトをグリッパアセンブリ502に付着させる(たとえば、オブジェクトを把持する)ように構成される真空式グリッパに対応することができる。
グリッパアセンブリ502は、ロボットアーム302をグリッパ514に構造的に結合する構造部材512(たとえば、回転関節、延長アームなど)を含み得る。グリッパ514は、1つまたは複数の対象オブジェクトをグリッパ514に接触及び付着させるように把持インターフェース516を動作させるよう構成される回路、モータ、及び/または他の機械部品を含むことができる。いくつかの実施形態では、把持インターフェース516は、アクチュエータ及び/またはグリッパ514の他の機械部品によって制御される吸引カップを含むことができる。グリッパ514は、各吸引カップ及び接触面によって囲まれるスペース内に真空を形成して制御することによって、対象オブジェクトを付着させて把持するように構成することができる。
グリッパアセンブリ502は、他のコンポーネントを含み得る。いくつかの実施形態では、グリッパアセンブリ502は、グリッパアセンブリ502及び/またはその1つまたは複数の部分の位置を特定するために使用される機能を提供するように構成される較正ボード518を含み得る。較正ボード518は、取得された画像内の基準として使用し、及び/または較正処理用に詳細な位置情報を提供することができる。較正ボード518は、グリッパ514の周縁に取り付けられるかまたは一体化され、周縁から離れる方向に延在し得る。いくつかの実施形態では、較正ボード518は、グリッパ514の上面から離れるように垂直方向に延在することができる。較正ボード518はまた、構造部材512及び/またはグリッパ514の中心部に向かって、またはこれらから離れて横方向に延在し得る。
グリッパアセンブリ502は、所定の、またはロボットシステム100に既知の寸法を有することができる。たとえば、グリッパアセンブリ502は、アセンブリ高522、ベース長524、及び/またはベース幅526を有することができる。アセンブリ高522は、構造部材の最外部(たとえば、最上部またはロボットアーム302に接続された部分)と、最外部の反対側の把持インターフェース516の部分との間の(たとえば、z軸に沿った)距離に対応することができる。ベース長524及びベース幅526は、直交する方向(たとえば、x軸及びy軸)に沿って測定されるグリッパ514の横方向の寸法に対応することができる。寸法は、対象オブジェクトの係合または把持に関連するグリッパアセンブリ502の所定の姿勢/配置に対応することができる。
いくつかの実施形態では、グリッパアセンブリ502の1つまたは複数の寸法は、オブジェクトを把持している間に変化し得る。図5Cは、本技術の1つまたは複数の実施形態による、対象オブジェクト112を把持して持ち上げた後のグリッパアセンブリ502の例示的な側面視である。真空式グリッパの場合、延伸状態のインターフェース高532は、初期の非係合状態での吸引カップの高さに対応し得る。吸引カップに接触し、その中に真空を生成し、維持する際に、吸引カップの形状は変形及び/または圧縮し得る。したがって、グリッパ514が対象オブジェクト112を係合及び把持する場合、把持インターフェース516は、延伸状態のインターフェース高532未満の係合状態のインターフェース高534に対応し得る。したがって、アセンブリ高522は、対象オブジェクト112を係合/把持する場合に減少し得る。ロボットシステム100は、高さの変化(たとえば、係合状態のインターフェース高534)を特定または識別して、グリッパ514、対象オブジェクト112、及び/またはそれらの一部の位置を正確に特定及び追跡することができる。いくつかの実施形態では、ロボットシステム100は、所定の、図2の記憶デバイス204に記憶された、係合状態のインターフェース高534を有することができる。いくつかの実施形態では、ロボットシステム100は、対象オブジェクト112を把持してグリッパ514を所定の高さだけ持ち上げた後に、図3の側面視センサ312からの画像データをキャプチャして分析することに基づいて、係合状態のインターフェース高534をリアルタイムに(たとえば、配備/動作中に)特定することができる。
例示的な離散化モデル
図6は、本技術の1つまたは複数の実施形態によるパッキングコンポーネントの例示的な離散化モデル600の図である。離散化モデル600は、操作/パッキングされるオブジェクト(たとえば、登録済みオブジェクト)、ロボットユニットもしくはその一部、及び/またはオブジェクト容器(たとえば、図3の載置台308)などのパッキングコンポーネントのピクセル化表現を含むことができる。たとえば、離散化モデル600は、離散化単位602に従ってパッキングコンポーネントの物理的なサイズ/形状を記述することができる(すなわち、1つの離散エリア/スペースは所定の寸法に対応する)。換言すれば、離散化単位602は、離散化長さに対応する1つまたは複数の寸法を有するポリゴン(たとえば、四角形または立方体)などの単位ピクセルに対応することができる。
離散化単位602の寸法は、システムオペレータ、システム設計者、所定の入力/設定、またはそれらの組み合わせによって事前設定される長さを含むことができる。いくつかの実施形態では、離散化単位602の寸法は、ロボットシステム100の動作中に動的に調整することができる。いくつかの実施形態では、離散化単位602(たとえば、離散化単位)のサイズは、オブジェクトの寸法及び/または荷台の寸法に応じて変化することができる。また、離散化単位602(たとえば、ピクセル)のサイズを(たとえば、事前設定されたルール/式、及び/またはオペレータ選択を介して)調整して、必要とされるリソース(たとえば、計算時間、必要メモリなど)をパッキング精度とバランスさせることができる。サイズが減少すると、その結果得られる増加したデータに基づいて、計算時間及びパッキング精度が増加し得る。したがって、調整可能な離散化単位602を使用してパッキングタスク(たとえば、対象パッケージ、エンドエフェクタアセンブリ、及びパッキング台)を離散化することによって、パッケージをパレタイズするための柔軟性が向上する。ロボットシステム100は、特有のシナリオ、パターン、及び/または環境に応じて、計算リソース/時間とパッキング精度とのバランスを制御することができる。
ロボットシステム100は、図3のロボットアーム302、図3のエンドエフェクタ304、図1の対象オブジェクト112、載置台308(たとえば、図4Aのカート410及び/または図4Bのケージ420)、載置済みオブジェクト、及び/またはそれらの一部を、既知または所定の単位を介して記述または表現することができる。このようにして、ロボットシステムは、連続的な実世界の空間/エリアをコンピュータ読み取り可能なデジタル情報に変換することができる。さらに、離散化データによって、パッケージングコンポーネントにより占有されるスペースを記述する際の、様々なパッケージ載置位置を比較するための計算複雑性を削減することが可能になる。たとえば、パッケージ寸法は、実世界の小数ではなく整数個の離散化単位に対応することができ、これにより関連する数学的計算の複雑性を削減することができる。
ロボットシステム100は、離散化メカニズム(たとえば、処理、回路、関数、及び/またはルーチン)によって生成される離散化モデル600を利用することができる。いくつかの例では、離散化モデル600は、外部ソース(たとえば、製造業者、販売業者、顧客など)によって提供され得る。また、ロボットシステム100は、パッキングコンポーネントを表す対象データ(たとえば、画像データ、形状テンプレート、及び/または他のデジタル化された物理的表現)をセグメント化することに基づいて、離散化モデル600を生成し得る。ロボットシステム100は、たとえば、エッジ検出メカニズム(たとえば、Sobelフィルタ)を使用してセグメント化対象データ内の実際の特徴606(たとえば、エッジ及び/またはコーナー)を識別することができる。識別された実際の特徴606(実線で図示)に基づいて、ロボットシステム100は、セグメント化対象データ内の基準点/エッジ604(たとえば、コーナー、中心部、中央部、目印、及び/または位置特定デバイス)を決定することができる。ロボットシステム100は、基準位置604を原点として使用し、それに従って、離散化単位602(点線で図示)に対応する所定の寸法及び/または方向を使用してセグメント化対象データを分割することができる。結果として得られるセグメントは、撮像されたコンポーネントの離散化/ピクセル化された単位とすることができる。このようにして、ロボットシステム100は(たとえば、図2のプロセッサ202を介して)、実世界のオブジェクト(たとえば、パッケージ、ロボットアーム、グリッパ、それらの1つまたは複数の部分、及び/またはタスクに関連する他のオブジェクト)の連続面/エッジを離散的な対応物(たとえば、単位長さ及び/または単位面積)にマッピングすることができる。
いくつかの例では、実際の特徴606は、離散化単位602と一致しなくてもよい。換言すれば、パッキングコンポーネントは、小数/分数成分の離散化単位(たとえば、1.2単位または3/4単位)を有する寸法を有し得る。ロボットシステム100は、状況に応じて切り上げるかまたは切り下げることに基づいて離散化モデル600を生成することができる。たとえば、離散化モデル600は、モデルオブジェクト(たとえば、図1の対象オブジェクト112)、図3の載置台308、図3のロボットアーム302、及び/または図3のエンドエフェクタ304とすることができ、またはこれらを含むことができる。オブジェクト容器に入るコンポーネント(たとえば、ロボットアーム302、エンドエフェクタ304、及び/またはオブジェクト)について、ロボットシステム100は、寸法を離散化単位602の数量に切り上げることにより、対応する離散化モデル600を生成し得る。換言すれば、ロボットシステム100は、図4のカート410及び/または図4のケージ420に入るモデル化されるコンポーネントの実際の特徴606を越えるモデル境界608(破線で図示)を有する離散化モデル600を生成することができる。オブジェクト容器(たとえば、カート410及び/またはケージ420などの載置台308)について、ロボットシステム100は、寸法を離散化単位602の数量に切り下げることにより、対応する離散化モデル600を生成し得る。換言すれば、ロボットシステム100は、モデル化されるコンポーネントの実際の特徴606の前または間で離散化モデル600を生成することができる。
ロボットシステム100は、離間距離610だけ実際の特徴606を越えた(たとえば、離れた)モデル境界608を有する離散化モデル600を生成し得る。たとえば、離間距離610は、ロボットシステム100が、たとえば、エンドエフェクタ304などについて、実際のコンポーネントよりも広いスペースをモデル化するかまたは考慮するような、追加されたバッファに対応することができる。したがって、ロボットシステム100は、モデル化されたコンポーネントが、動作中に(たとえば、コンポーネントの移動中に)他のオブジェクト/構造に接触も衝突もしないようにすることができる。このようにして、ロボットシステム100は、離間距離610に応じて生成された離散化モデル600を使用して衝突率を低下させることができる。また、いくつかの実施形態では、ロボットシステム100は、モデル化されるコンポーネントの最外部に一致するかまたはこれに基づくモデル境界608を有する長方形の断面形状を有する離散化モデル600を生成することができる。したがって、ロボットシステム100は、モデル化されたコンポーネントの位置/モーションをテストするために、より複雑でないかまたは簡単な処理(すなわち、全てのエッジ/コーナー/特徴を考慮するものと比較して)を提供することができる。
いくつかの実施形態では、離散化モデル600は、事前に決定されるかまたはオフラインで(たとえば、対応する動作/実施とは独立に、その前に)生成され、マスターデータ252に記憶されて、ロボットシステム100の配備または動作中にアクセスできるようになり得る。他の実施形態では、離散化モデル600は、開始位置114及び/またはタスク位置116を表す画像データを取得したこと基づいて、リアルタイムで(たとえば、動作中に)生成され得る。
離散化モデル600は、パッケージングコンポーネントの形状、寸法などを2D及び/または3Dで表現することができる。たとえば、離散化モデル600は、登録済みのまたは撮像されたオブジェクトのインスタンスまたはタイプごとに、オブジェクトモデル(たとえば、オブジェクトフットプリントモデル612及び/またはオブジェクト側面モデル614)を含むことができる。また、離散化モデル600は、載置台308のインスタンスまたはタイプごとに、コンテナモデル(たとえば、コンテナフットプリントモデル622及び/またはコンテナ側面モデル624)を含むことができる。コンテナモデル622及び624は、離散化単位602に従って、載置面(たとえば、図4A〜図4Dに示す横方向の囲いを有するオブジェクト容器の内側の底面)を表現することができる。コンテナモデル622及び624は、既知のまたは標準サイズのオブジェクト容器に基づくことができる。さらに、離散化モデル600は、載置台308上/内へのオブジェクト(たとえば、対象オブジェクト112)の載置に関連するタスクを実行するために使用されるロボットユニットの部分を表すグリッパフットプリントモデル632及び/またはグリッパ側面モデル634を含むことができる。たとえば、グリッパモデル632及び/または634は、エンドエフェクタ304、ロボットアーム302、及び/またはそれらの一部を表すことができる。
フットプリントモデルは、横方向の平面(たとえば、x−y平面)に沿った、モデル化されるコンポーネントの外周に対応することができる。側面モデルは、垂直平面(たとえば、x−z及び/またはy−z平面)に沿った、モデル化されるコンポーネントの外周に対応することができる。いくつかの実施形態では、離散化モデル600は、3−Dモデルを含むことができる。
例示的な載置計算
図7Aは、本技術の1つまたは複数の実施形態による例示的なパッキングプラン700の図である。ロボットシステム100は、図6の離散化モデル600を使用して、図3の載置台308(たとえば、コンテナ)内またはその上のオブジェクトのセットに対して導出された載置位置を含むパッキングプラン700を導出することができる。パッキングプラン700は、載置位置及び/または載置されたオブジェクトを2D及び/または3Dで表現することができる。いくつかの実施形態では、パッキングプラン700は、3Dモデルとすることができる。パッキングプラン700は、図4Aの想定載置ゾーン430内に載置されたオブジェクトの横方向占有状態及び/または垂直方向占有状態を表す上面視702及び/または側面視704に対応することができる。
図7Aに示す例では、対象オブジェクトは、カート410のインスタンス内にパッキングされるように指定された第1、第2、及び第3のタイプのオブジェクトを含むことができる。したがって、ロボットシステム100は、第1、第2、及び第3のオブジェクトタイプにそれぞれ対応する第1のオブジェクトモデル706、第2のオブジェクトモデル708、及び第3のオブジェクトモデル710と、コンテナモデル(たとえば、コンテナフットプリントモデル622及び/またはコンテナ側面モデル624)とを使用して、パッキングプラン700を導出することができる。ロボットシステム100は、コンテナモデル上に重ねられたオブジェクトモデルの様々な位置を導出し、テストし、評価することに基づいて、パッキングプラン700を導出することができる。以下で詳細に説明するルール及び/または条件に従って、ロボットシステム100は、第1及び第2のタイプのオブジェクトを下位レイヤ712(たとえば、図4Aのカート底面412に接触する最下位レイヤ)に載置し、第3のタイプのオブジェクトをスタックされたレイヤ722に載置するパッキングプラン700を導出し得る。
ロボットシステム100は、対象オブジェクトを指定された/割り当てられた載置台308に載置/パッキングするためのパッキングプラン700を導出することができる。ロボットシステム100は、対象オブジェクトのオブジェクトモデル(たとえば、図6のオブジェクトフットプリントモデル612及び/または図6のオブジェクト側面モデル614のインスタンス)を、指定された載置台308のコンテナモデル(たとえば、図6のコンテナフットプリントモデル622及び/または図6のコンテナ側面モデル624)上に重ねることに基づいて、パッキングプラン700を導出することができる。ロボットシステム100は、所定のルール及び/または条件のセットに従って、対応する載置位置を導出及び/またはテストすることができる。ロボットシステム100は、対象オブジェクトの載置位置を反復的に導出して、パッキングプラン700を導出することができる。ロボットシステム100はさらに、リソース消費(たとえば、手順の数、対応する期間など)を最小化し、パッキングされるオブジェクトの数を最大化し、及び/またはエラー/失敗(たとえば、紛失、衝突など)を最小化することに基づいて、パッキングプラン700及び/または対応するモーションプランのセットを導出することができる。
さらに、ロボットシステム100は、オブジェクトを互いの上に、たとえば、レイヤ状(たとえば、下位レイヤ712及びスタックされたレイヤ722)にスタッキングするためのパッキングプラン700を導出することができる。また、ロボットシステム100は、オブジェクトがコンテナの垂直な向きの壁(たとえば、図4Aのカート側壁414及び/または図4Cのケージ側壁424)に接触する及び/または寄りかかるパッキングプラン700を導出することができる。たとえば、下位レイヤ712は、支持壁725(たとえば、オブジェクトに接触する/これを支持するために使用/指定され得る想定載置ゾーン430を画定するかまたはその内部にあるコンテナの垂直な向きの構造)に最も近く、オブジェクト−壁間隔726(たとえば、支持壁725と、対応する直接隣接するオブジェクトの最も近い周縁/点との間の距離及び/またはピクセル数)だけ離れた、下位の最外部のオブジェクト714を含むことができる。オブジェクト/壁は、たとえば横方向に沿った対応する1対のオブジェクト間のスペースを占有する他のオブジェクトが存在しない場合に、直接隣接し得る。上位のスタックされたレイヤ722は、下位の最外部のオブジェクト714上に少なくとも部分的に載置され、それによって支持される、スタックされたオブジェクト724を含むことができる。スタックされたオブジェクト724の周辺部は、下位の最外部のオブジェクト714の周縁を横方向に越えて突出することができる。スタックされたオブジェクト724の周縁/周面(たとえば、垂直な向きの面/エッジ及び/または上のコーナー/エッジ)は、支持壁725により近いか、またはこれに接触することができる。ロボットシステム100は、オブジェクト−壁間隔726に基づいて、スタックされるオブジェクト724(たとえば、下位の最外部のオブジェクト714を越えて張り出し/突出し、及び/また支持壁725に接触するもの)の載置位置を有するパッキングプラン700を導出することができる。いくつかの実施形態では、最も近いオブジェクトのエッジ/面が支持壁725と平行でない場合、ロボットシステム100は、オブジェクト−壁間隔726を対応する距離の平均値として計算することができる。ロボットシステム100はさらに、対象オブジェクトのオブジェクト基準位置728、たとえば、CoM位置及び/または中心部に従って、パッキングプラン700を導出することができる。導出に関する詳細については後述する。
いくつかの実施形態では、ロボットシステム100は、コンテナ内に載置されるように指定されたオブジェクトのセットに対して、軸平行バウンディングボックス(AABB)730を導出し、利用することができる。換言すれば、AABB730は、導出された載置プランに従って、オブジェクトの最外部を包含する及び/またはこれと一致する指定された平面形状(たとえば、長方形)とすることができる。図7Aに示す例では、AABB730は、パッキングプラン700内のオブジェクトの最外点と一致する所定の軸のセット(たとえば、x、y、及びz軸)に従って位置調整された長方形のセットとすることができる。AABB730は、パッキングプラン700の全体のサイズ(たとえば、パックサイズ)を表すことができる。ロボットシステム100は、AABB730を導出及び使用して、パッキングプラン700を調整し、想定外の実世界の状況(たとえば、半開のコンテナ及び/または反ったコンテナ壁)を考慮し得る。以下で詳細に説明するように、ロボットシステム100は、オブジェクトの載置または位置(たとえば、パッキングプラン700)を変更するかまたはずらす際に、AABB730を導出及び使用し得る。いくつかの実施形態では、AABB730を使用して、ロボットシステム100は、パッキングプラン700のオブジェクトのスタック全体を単一のオブジェクトとみなすことができる。AABB730は、上述の離散化単位に従って導出することができる。
図7Bは、本技術の1つまたは複数の実施形態による載置計画処理の図である。図1のロボットシステム100は(たとえば、図2の1つまたは複数のプロセッサ202を介して)、利用可能パッケージ742のセットについて図7Aのパッキングプラン700を導出することができる。利用可能パッケージ742は、出荷及び/または保管のためにパッキングされる必要があるかまたはその対象となるオブジェクトに対応することができる。たとえば、利用可能パッケージ742は、入荷を介して受け取られた到着オブジェクト、及び/または出荷のために注文された保管されたオブジェクトに対応することができる。いくつかの実施形態では、ロボットシステム100は出荷目録、注文リストなどを使用して、リアルタイムに、たとえば、目録、リストなどの受け取りにすぐに(すなわち、閾値期間内に)応答して、利用可能パッケージ742を識別することができる。したがって、ロボットシステム100は、識別された利用可能パッケージ742を使用して、パッキングプラン700をリアルタイムに導出し得る。したがって、パッケージの仮の数/セット/組み合わせを利用してリアルタイム条件とは無関係に適用されるプランを導出するオフラインパッキングシミュレータの代わりに、ロボットシステム100は、リアルタイム条件、利用可能性、及び/または需要を使用してパッキングプラン700を導出することができる。いくつかの実施形態では、ロボットシステム100は、たとえば、出荷拠点及び/または倉庫など、オブジェクトを受け取り、保管し、及び/または送る場所にあるデバイス(たとえば、プロセッサ202のうちの1つまたは複数)を使用することができる。他の実施形態では、ロボットシステム100は、想定される状況を使用して、パッキング導出をオフラインで実施することができる。
パッキングプランを導出する際に、ロボットシステム100は、利用可能パッケージ742をグループ化する及び/または配列することができる。ロボットシステム100は、利用可能パッケージ742の順序付きセットを使用してパッキングプラン700を導出することができる。ロボットシステム100は、利用可能パッケージ742に対して一意の載置位置/組み合わせを決定し評価して、パッキングプラン700を導出することができる。換言すれば、ロボットシステム100は、可能な載置組み合わせ744のセットを決定し、所定の要件、条件、重量、コスト、その後の影響、またはそれらの組み合わせのセットに従って、それらを評価する(たとえば、スコア付けする)ことができる。評価に基づいて、ロボットシステム100は、載置組み合わせを選択してパッキングプラン700を導出することができる。
少なくとも1つの実施形態では、ロボットシステム100は、配列されたパッケージの載置を反復的に評価するアルゴリズムを使用してパッキングプラン700を導出することができる。図7Bに示すように、たとえば、ロボットシステム100は、利用可能パッケージ742の中の最初のパッケージについての初期載置を決定することによって、導出を開始することができる。したがって、ロボットシステム100は、対応する離散化オブジェクトモデル(たとえば、図7Aに示す第1のオブジェクトモデル706、第2のオブジェクトモデル708、及び/または第3のオブジェクトモデル710)を離散化台モデル(たとえば、図6のコンテナモデル622及び/または624)上の初期位置(たとえば、コーナー、中央位置、及び/または他の事前設定位置)に重ねることができる。ロボットシステム100は、利用可能パッケージ742から載置済みのパッケージ(たとえば、最初のパッケージ)を除去することに基づいて、残余パッケージ752を追跡することができる。
初期載置に基づいて、ロボットシステム100は、利用可能パッケージ742の中の2番目のパッケージについての可能な載置のセットを決定することができる。ロボットシステム100は、所定のルール、パターン、またはそれらの組み合わせに従って可能な載置のセットを決定することができる。たとえば、ロボットシステム100は、載置済みのパッケージ(複数可)に対する(たとえば、載置済みのパッケージ(複数可)に対する)位置のパターンに従って、載置位置を決定することができる。また、ロボットシステム100は、パッケージのうちの1つまたは複数の間で必要とされる最小/最大の離間距離またはその欠如に基づいて、載置位置を決定することができる。さらに、ロボットシステム100は、90度などの所定の量に従ってパッケージ(すなわち、対応する離散化オブジェクトモデル)を回転させることに基づいて、載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、所定の閾値及び/またはパターンに従って載置候補を限定することができる。さらに、ロボットシステム100は、それに応じて残余パッケージ752を更新することができる。
ロボットシステム100は、停止条件に達するまで、上述の処理を反復し、利用可能パッケージ742を反復的に処理することができる。停止条件のいくつかの例は、全てのパッケージが載置された(すなわち、残余パッケージ752が空である)こと、載置を改善できない(たとえば、前の階層/反復と同じ評価スコアである)こと、これ以上パッケージを離散化台モデル上に載置できないこと、またはそれらの組み合わせを表すことができる。
いくつかの実施形態では、ロボットシステム100は探索木754を使用して、可能な載置と、対応する可能な載置組み合わせ744とを追跡することができる。探索木754の根は初期載置に対応することができ、各レベルまたは階層は利用可能パッケージ742の中の後続のパッケージの可能な載置を含むことができる。異なる階層を接続して、パッケージのセットについての一意の載置組み合わせに対応する枝を形成することができる。
各パッケージの可能な載置について、ロボットシステム100は、(たとえば、図7Bにおいて「×」で表す)冗長なフットプリントを識別し排除することができる。たとえば、探索木754の各階層において、ロボットシステム100は、可能な載置位置/組み合わせの得られたフットプリントを比較する(たとえば、重ねる)ことができる。比較に基づいて、ロボットシステム100は、得られたフットプリントの重複を排除することができる。いくつかの実施形態では、ロボットシステム100はさらに、得られたフットプリントの転置、回転、及び/または反転バージョンを比較して、関連する重複を排除することができる。たとえば、ロボットシステム100は、1つのフットプリントを±90度回転させ、及び/または1つまたは複数の反転ライン(たとえば、対角に伸びる対角線、x方向及び/またはy方向に伸びる二等分線(複数可)、またはそれらの組み合わせ)にわたってフットプリントを転置し、これを他のフットプリントと比較することができる。
また、各パッケージの可能な載置について、ロボットシステム100は、1つまたは複数の要件/制約に違反する載置を識別し排除することができる。要件/制約の一例は、衝突確率に基づくことができる。ロボットシステム100は、既存のフットプリント、パッケージの1つまたは複数の寸法、転置ロボットの位置、前のイベントまたは履歴、あるいはそれらの組み合わせに応じて、各載置位置についての進入路と、対応する衝突確率とを計算することができる。ロボットシステム100は、衝突確率が所定の閾値を超える載置を排除することができる。要件/制約の他の例は、パッケージをスタックする(すなわち、1つまたは複数の支持パッケージのすぐ上に/上を覆って載置する)ための支持重量とすることができる。載置位置の下のパッケージのうちの1つまたは複数について、ロボットシステム100は、載置されたパッケージの重量に基づいて、支持重量(すなわち、すぐ上を覆うパッケージまたはその一部の合計重量)を計算することができる。ロボットシステム100は、載置位置の下のパッケージのうちの1つまたは複数について、支持重量が脆性要件(たとえば、最大支持可能重量)に違反する(たとえば、要件を超えるまたは要件から閾値範囲内である)載置を排除することができる。
いくつかの実施形態では、ロボットシステム100は、優先度キュー756(たとえば、ヒープ構造など)を使用して、載置組み合わせ744を追跡及び/または評価することができる。優先度キュー756は、一連の設定に従って載置組み合わせ744を並べることができる。ロボットシステム100は、1つまたは複数の所定の基準に従って各載置組み合わせ744を評価またはスコア付けすることができる。基準は、載置済みのアイテムに関連する1つまたは複数のコスト、及び/または現在の載置が今後の載置または候補にどのように影響するかに関連する1つまたは複数のヒューリスティックスコアを含むことができる。
基準の一例は、フットプリント密度の最大化を含むことができる。ロボットシステム100は、パッケージのグループの外周762について、フットプリント密度を計算することができる。いくつかの実施形態では、外周762は、パッケージのグループの露出した/外周のエッジに基づいて決定することができる。ロボットシステム100はさらに、2つ以上のエッジを伸ばして交点を発見することによって、及び/またはフットプリントの1つまたは複数のコーナーを結ぶ線を描くことによって、周囲の/関連するエリアを囲むことができる。ロボットシステム100は、実際の占有面積764(たとえば、図6の離散化単位602または影付きエリアに対応する単位ピクセルの数)と、空き面積766(たとえば、囲まれた/関連するエリアに対応する離散化単位602の数)との比として、フットプリント密度を計算することができる。ロボットシステム100は、空き面積766を最小化する載置プランを(たとえば、より高い/より低いスコアを割り当てることによって)優先するように構成することができる。
図7Cは、本技術の1つまたは複数の実施形態による例示的な載置ルールの図である。ロボットシステム100は、載置ルールを使用して、指定されたコンテナ内のオブジェクトの載置位置を導出し得る。たとえば、ロボットシステム100は、1つまたは複数の載置ルールを満たすことができない可能な載置位置を破棄するかまたは不適格とみなし得る。
載置ルールのいくつかの例は、オブジェクトを互いの上に載置するためのものであり、たとえば、1つまたは複数のパッケージのレイヤを、1つまたは複数の他のパッケージのレイヤ(複数可)の上にスタック/載置するためのものとすることができる。ロボットシステム100は、スタックされたオブジェクトの安定性を向上/確保するための載置ルールを使用することができ、コンテナの移動中に任意のオブジェクトが滑る及び/または傾くのを防ぐことができる。例示の目的で、図7Cに、上のパッケージ772が1つまたは複数の支持パッケージ774のすぐ上にあり、これによって支持される(たとえば、直接接触する)複数のシナリオを示す。
ロボットシステム100は、3D載置位置(たとえば、図7Aの3Dパッキングプラン700)を導出するための水平オフセットルール776を使用し得る。水平オフセットルール776は、スタックされたアイテム間の垂直エッジ/面の水平オフセットを制御するための規制、要件、またはそれらの組み合わせを含むことができる。たとえば、水平オフセットルール776は、重なり要件778、張り出し要件780、またはそれらの組み合わせに基づくことができる。重なり要件778は、スタックされたパッケージの間の最小量(たとえば、長さ、幅、及び/または表面積の割合または比)の重なりを含むことができる。いくつかの実施形態では、重なり要件778は、上のパッケージ772の最小量の水平寸法/表面積が支持パッケージ774のそれと重なる、及び/または接触することを要求することができる。張り出し要件780は、支持パッケージ774の周辺エッジ/面を越えて水平に伸びる上のパッケージ772の一部など、最大量(たとえば、長さ、幅、及び/または表面積の割合または比)の突出を含むことができる。
いくつかの実施形態では、水平オフセットルール776は、重量、寸法、及び/または重心(CoM)位置782に基づくことができる。たとえば、重なり要件778及び/または張り出し要件780は、CoM位置782に基づくことができ、たとえば、上のCoM位置と支持パッケージ774の水平エッジ/面との距離に対する、上のパッケージ772及び支持パッケージ774のCoM位置782間の距離を評価するためのものとすることができる。また、重なり要件778及び/または張り出し要件780は、張り出し距離(たとえば、支持パッケージ774の周縁(複数可)を超えて伸びる上のパッケージ772の一部の水平方向に沿った度合い)に対する上のパッケージ772及び支持パッケージ774のCoM位置782間の距離の評価に対応することができる。いくつかの実施形態では、水平オフセットルール776は、上のパッケージ772及び支持パッケージ774のCoM位置782がCoM支持閾値内であることを要求するCoMオフセット要件784に基づくことができる。CoM支持閾値は、所定の距離、水平寸法に対するCoM位置782間のオフセット距離の比の限界値、張り出し距離、重なり距離、またはそれらの組み合わせを含むことができる。
ロボットシステム100はまた、支持物離間ルール786を使用して、3D載置位置を導出し得る。支持物離間ルール786は、支持パッケージ774間の横方向離間距離788を制御するための規制、要件、またはそれらの組み合わせを含むことができる。横方向離間距離788は、直接隣接する支持パッケージ774の周面/周縁間の水平距離に対応することができる。いくつかの実施形態では、支持物離間ルール786は、上のパッケージ772と支持パッケージ774との重なった面の位置及び/または量にさらに基づくことができる。たとえば、支持物離間ルール786は、横方向離間距離788が任意の張り出し距離よりも所定の割合だけ長いことを要求することができる。また、支持物離間ルール786は、横方向離間距離788が上のパッケージ772のCoM位置782の下に伸びることを要求することができる。いくつかの実施形態では、上のパッケージ772の載置位置が支持物離間ルール786を満たす場合、ロボットシステム100は、支持パッケージ774間の上のパッケージ772の部分(たとえば、横方向離間距離788上の部分)を、最下位レイヤのオブジェクトによって支持され、及び/またはこれに接触するものとみなし得る。
ロボットシステム100はまた、垂直オフセットルール790を使用して、3D載置位置を導出し得る。垂直オフセットルール790は、支持パッケージ774の垂直位置間の支持高低差792を制御するための規制、要件、またはそれらの組み合わせを含むことができる。支持高低差792は、対応する支持パッケージ774の頂部間の、たとえば、対応する支持パッケージ774上に載置された上のパッケージ772に接する可能性が高い部分同士の間の垂直距離に対応することができる。いくつかの実施形態では、垂直オフセットルール790は、支持高低差792が、1つまたは複数のパッケージを支持パッケージ774の上にスタックするための所定の閾値要件を下回ることを必要とすることができる。
いくつかの実施形態では、垂直オフセットルール790は、レイヤの高さに基づいて異なることができる。たとえば、上のパッケージ772(たとえば、支持されるパッケージ)が最上位レイヤの一部である場合、支持高低差792の限度は下位レイヤよりも大きくすることができる。いくつかの実施形態では、垂直オフセットルール790は、指定されたコンテナの垂直な向きの壁/仕切りへの近接性に基づいて変化することができる。たとえば、高さがより低い支持パッケージ774が垂直な壁に最も近い(たとえば、支持パッケージ774と壁との間に他のオブジェクトがない)場合、支持が失敗した及び/または上のパッケージ772がずれた場合であっても、上のパッケージ772は垂直な壁によって支持され得るので、支持高低差792の限度をより大きくすることができる。
ロボットシステム100は、上のパッケージ772の向き(たとえば、横方向/水平基準平面の下への傾き)に関連するピボット位置793を導出/推定し得る。ピボット位置793は、より高い支持パッケージの最上部(すなわち、最も高い支持位置)とすることができる。ロボットシステム100は、ピボット位置793を、より低い支持パッケージに最も近い支持パッケージの周縁及び/または最高部として導出することができる。ロボットシステム100はさらに、CoM位置782、上のパッケージ772の横方向の寸法、及び/または上のパッケージ772の重量に基づいて、ピボット位置793を導出することができる。同様に、ロボットシステム100は、ピボット位置793を中心とする上のパッケージ772の回転を推定することができる。ロボットシステム100は、オブジェクト基準位置728(たとえば、CoM位置782)、上のパッケージ772の横方向の寸法、及び/または上のパッケージ772の重量に従って、回転を推定し得る。
ロボットシステム100は、載置ルールに従ってパッキングプラン(たとえば、複数の2D載置プラン/位置の3Dの組み合わせ)を生成することができる。たとえば、ロボットシステム100は、高さ要件(たとえば、オブジェクトグループの高さを閾値距離内に維持するためのもの)に従って、2D載置プラン(たとえば、横方向のレイヤ/平面に沿った載置位置)を生成することができる。続いて、ロボットシステム100は、2D載置プランを垂直に重ねる(たとえば、スタックする)ことに基づいて、スタッキングプランを生成することができる。
ロボットシステム100は、オブジェクトを支持壁725に寄りかからせるための載置ルールに従ってパッキングプランを生成することができる。いくつかの実施形態では、載置ルールは、壁支持ルール794、傾き支持ルール796、及び/または複数張り出しルール798を含むことができる。壁支持ルール794は、垂直な向きのコンテナ構造に対する/接触するオブジェクトの載置を制御するための規制、要件、またはそれらの組み合わせを含むことができる。1つまたは複数の実施形態では、壁支持ルール794が最初に分析され得、提案/分析された載置位置が壁支持ルール794を満たす場合に、他のルール(たとえば、傾き支持ルール796及び/または複数張り出しルール798)が分析またはチェックされ得る。
壁支持ルール794は、上のパッケージ772が支持パッケージ774上に載置された場合に、支持パッケージ774に接触する及び/またはこれによって支持される上のパッケージ772の一部(たとえば、その底面の一部)に対応する実効支持795に基づき得る。換言すれば、実効支持795は、支持パッケージ774と上のパッケージ772との重なり部分、及び/または上のパッケージ772の、その張り出し部分を除外した/残りの部分に対応し得る。いくつかの実施形態では、壁支持ルール794は、最小量(たとえば、51%以上などの最小割合閾値)の実効支持795を要求し得る。換言すれば、壁支持ルール794は、張り出し距離が実効支持795よりも所定量だけ短くなることを要求することができる。1つまたは複数の実施形態では、壁支持ルール794は、最小数のコーナー(たとえば、ボックスタイプ構造の8つのコーナーのうち4つ〜6つのコーナー)が支持パッケージ774の上にある/それによって支持されることを要求し得る。
壁支持ルール794はまた、支持壁725と支持パッケージ774との間で測定されるオブジェクト−壁間隔726、上のパッケージ772の1つまたは複数の寸法、及び/または上のパッケージ772のCoM位置782に基づき得る。たとえば、壁支持ルール794は、CoM位置782が支持パッケージ774の上にある及び/またはそれによって支持されるように、CoM位置782が実効支持795の周縁の上または内部にあることを要求し得る。また、壁支持ルール794は、オブジェクト−壁間隔726が実効支持795の横方向の寸法(たとえば、上のパッケージ772の残りの/重なった部分)未満になることを要求し得る。壁支持ルール794は、水平オフセットルール776と類似の態様であるが、上のパッケージ772の支持壁725との接触及び/またはそれによって提供される支持に基づく下げられた支持要件を有する態様を検討し得る。換言すれば、ロボットシステム100は、水平オフセットルール776に違反するが、壁支持ルール794を満たす可能な載置位置を導出、分析、及び/または有効化することができる。たとえば、壁支持ルール794は、水平オフセットルール776によって許容されるよりも横方向にさらに張り出す可能な載置位置を導出し、有効化することができる。載置位置に載置されたオブジェクトは、支持壁725に接触し、コンテナからの構造的支持/安定性を導くので、オブジェクトは本来水平オフセットルール776に違反する位置に載置され得る。
傾き支持ルール796は、上のパッケージ772と支持壁725との接触に関する上のパッケージ772の傾きまたは姿勢の変化に応じてオブジェクトの載置を制御するための規制、要件、またはそれらの組み合わせを含むことができる。いくつかの実施形態では、傾き支持ルール796は、上のパッケージ772が支持壁725に接触せずに隣接する(たとえば、上のパッケージ772の最外部のエッジと支持壁725との間の横方向に沿った離間距離がゼロでない)場合に、適用/テストすることができる。傾き支持ルール796を使用して、輸送中に生じ得る上のパッケージ772のずれ及び/または回転と、その結果生じるコンテナ内の他のオブジェクトへの影響とを考慮することができる。
いくつかの実施形態では、傾き支持ルール796は、上のパッケージ772に関連する傾き角度797に制限(たとえば、最大閾値)を加え得る。傾き角度797は、意図した姿勢であるかまたは候補載置位置にあり回転した姿勢である上のパッケージ772の基準面(たとえば、上面)の角度とすることができる。ロボットシステム100は、ピボット位置793(たとえば、支持壁725に最も近い支持パッケージ774の周縁)を中心として上のパッケージ772の対応する離散化モデルを回転させることに基づいて、傾き角度797を計算することができる。傾き角度797は、支持壁725に接触する上のパッケージ772の周辺部(たとえば、支持壁725に最も近い最上部)に対応することができる。したがって、傾き支持ルール796を使用して、上のパッケージ772の過度な回転(すなわち、支持パッケージ774の位置がずれる、及び/または上のパッケージ772がオブジェクト−壁間隔726に倒れる/落下する回転量)なしで、上のパッケージ772が支持壁725に接触する及び/またはそれによって支持される載置位置を有効化し得る。ロボットシステム100は、傾き支持ルール796を使用して、水平オフセットルール776及び/または壁支持ルール794などの他のルールに違反し得る可能な載置位置を導出、分析、及び/または有効化することができる。換言すれば、傾き支持ルール796に基づいて、ロボットシステム100は、オブジェクトが水平オフセットルール776によって許可されるよりもさらに延在する/張り出す位置を有効化することができ、その理由は、オブジェクトが輸送中にずれた場合でも、オブジェクトが支持/固定されたままとなるためである。
1つまたは複数の実施形態では、傾き支持ルール796は、上のパッケージ772の重量、及び/またはピボット位置793に対する上のパッケージ772のCoM位置782にさらに基づき得る。たとえば、ロボットシステム100は、上のパッケージ772のオブジェクトずれの可能性(たとえば、転置中の横方向の変位の可能性)を、その重量に基づいて計算することができる。また、ロボットシステム100は、上のパッケージ772のオブジェクト回転の可能性を、重量と、ピボット位置793に対する上のパッケージ772のCoM位置782とに基づいて計算することができる。ロボットシステム100は、転置中にオブジェクトが遭遇した力、載置されたオブジェクト及び/またはコンテナの間の摩擦力、及び/または他の関連する物理的なパラメータを考慮した1つまたは複数の所定の式/処理に従って、様々な可能性を計算し得る。ロボットシステム100は、様々な可能性に対する適格な閾値(複数可)を含み得る。換言すれば、ロボットシステム100は、傾き角度797の考慮の有無にかかわらず、計算されたずれ/回転の可能性が適格な閾値を下回る場合に、対象載置位置が傾き支持ルール796を満たすと結論付け得る。
複数張り出しルール798は、複数の/連続した張り出しオブジェクトの載置を制御するための規制、要件、またはそれらの組み合わせを含むことができる。換言すれば、複数張り出しルール798を使用して、支持パッケージ774の上にありそれによって支持される中間オブジェクト799の上にありそれによって支持される候補載置位置を評価することができる。ロボットシステム100は、候補載置位置が中間オブジェクト799の上にあり、中間オブジェクト799が下の1つまたは複数のオブジェクトから張り出しており、中間オブジェクト799の周辺部が、下の1つまたは複数のオブジェクトの周辺部を越えて横方向に延在している場合に、複数張り出しルール798を検討し得る。他の例では(たとえば、中間オブジェクト799の周辺部が、下のオブジェクトの周辺部まで、それを越えずに横方向に延在している場合)、ロボットシステム100は、たとえば、中間オブジェクト799を支持オブジェクトとみなすことによって、中間オブジェクト799に対する候補載置位置を検討し得る。
複数張り出しルール798を処理する際に、ロボットシステム100は、中間の張り出しているオブジェクト799の下の1つまたは複数のパッケージに対する上のパッケージ772の実効支持795を導出することができる。たとえば、ロボットシステム100は、上のパッケージ772及び一番下のパッケージ及び/または支持壁725から横方向に最も遠いパッケージの間の重なりに基づいて、実効支持795を導出することができる。換言すれば、ロボットシステム100は、一番下のオブジェクトまたは支持壁725から横方向に最も遠いオブジェクトを、上のパッケージ772を含む上のオブジェクトの支持パッケージ774として指定し得る。いくつかの実施形態では、複数張り出しルール798の処理の一部として、ロボットシステム100は、上のパッケージ772の得られた実効支持795を使用して、水平オフセットルール776及び/または壁支持ルール794をテストすることができる。ロボットシステム100は、上のパッケージ772の調整された実効支持795が、上述の水平オフセットルール776及び/または壁支持ルール794を満たす場合に、候補載置位置を有効化し、複数張り出しルール798が満たされていると判定することができる。
代替的または追加的には、ロボットシステム100は、上のパッケージ772の候補載置位置を含む、指定された支持パッケージ774(たとえば、一番下のオブジェクト、及び/または候補載置位置の下の、支持壁725から横方向に最も遠いオブジェクト)の上のオブジェクトについての結合基準位置734を有する結合オブジェクト推定(estimation)732を導出することができる。ロボットシステム100は、結合オブジェクト推定732を、結合されたオブジェクト(たとえば、指定された支持パッケージ774の上の、及び/またはそれによって支持されるオブジェクト)の最外部を包含する及び/またはこれと一致する指定された平面形状(たとえば、長方形)として導出することができる。換言すれば、ロボットシステム100は、AABB730に類似しているが、結合されたオブジェクトに関するものである、結合オブジェクト推定732を導出することができる。ロボットシステム100は、結合されたオブジェクトの基準位置(たとえば、CoM位置)を結合することに基づいて、結合基準位置734を導出することができる。たとえば、ロボットシステム100は、対応するパッケージ重量をCoM位置782に対するパラメータ重みとして、(たとえば、空間平均によって)CoM位置782を結合することに基づいて、結合基準位置734を導出することができる。したがって、ロボットシステム100は、結合されたオブジェクトのセットのCoM位置を推定し、処理することができる。
複数張り出しルール798の順守をテストするために、ロボットシステム100は、上のパッケージ772及び/または対応するCoM位置782の代わりに、結合オブジェクト推定732及び/または結合基準位置734を処理/テストすることができる。たとえば、ロボットシステム100は、対応する結合オブジェクト推定732及び/または結合基準位置734が、水平オフセットルール776、壁支持ルール794、傾き支持ルール796、及び/または他の任意の載置ルールを満たす場合に、候補載置位置を有効化することができる。
いくつかの実施形態では、ロボットシステム100は、オブジェクト−壁間隔726を、上のパッケージ772を支持するための限度を表す支持閾値距離と比較し得る。支持閾値距離は、上のパッケージ772の1つまたは複数の物理的な側面(たとえば、パッケージの高さ)に基づき得る。たとえば、支持閾値距離は、オブジェクト−壁間隔726が、上のパッケージ772が横方向にずれて支持壁725と支持パッケージ774との間に落下するほど大きいか否かを判定するためのものとすることができる。したがって、水平オフセットルール776、壁支持ルール794、傾き支持ルール796、及び/または他の載置ルールは、オブジェクト−壁間隔726が支持閾値距離(たとえば、上のパッケージの寸法の分数)を下回ることを要求し得る。1つまたは複数の実施形態では、ロボットシステム100は、オブジェクト−壁間隔726と支持閾値距離との間の関係に基づいて、実効支持795の閾値要件を調整し得る。たとえば、ロボットシステム100は、オブジェクト−壁間隔726が支持閾値距離より大きい場合に、実効支持795の閾値要件を(たとえば、51%〜60%から75%以上まで)増加させ得る。
いくつかの実施形態では、ロボットシステム100は、上のパッケージ772が支持壁725の上端の上に延在する候補載置位置を検討し、有効性確認することができる。ロボットシステム100は、たとえば、(1)支持壁725と上のパッケージ772との重なり量、(2)上端の上に突出している上のパッケージ772の部分の突出量、(3)(1)と(2)との比、(4)上のパッケージ772のCoM位置782(たとえば、壁のエッジに対するCoMの垂直位置)、(5)上のパッケージ772と支持壁725との間の横方向の距離、(6)ピボット位置、(7)載置されたオブジェクトの推定されたまたは所定の摩擦係数、(8)オブジェクトの重量、(9)ずれている/倒れているオブジェクトに関連する最大加速度/力閾値、及び/または他の類似の物理的なパラメータに基づいて、そのような載置位置を有効性確認し得る。
ロボットシステム100は、1つまたは複数の所定のシーケンス及び/または相互作用パターンに従って、様々な載置ルールを処理し得る。たとえば、ロボットシステム100は、載置ルールに関連する所定のシーケンス及び/またはフロー(たとえば、if−thenタイプの処理)に従って、候補載置位置をテストし得る。また、ロボットシステム100は、各載置ルールに対応するスコアを処理し、得られたスコアを合計し、合計スコアを載置スコア閾値と比較して、候補載置位置を有効性確認し得る。
例示的な3D計算
図8A及び図8Bは、本技術の1つまたは複数の実施形態による支持の計算の様々な態様の図である。上述のように、図1のロボットシステム100は、図1の対象オブジェクト112の候補載置位置を導出し、テストすることに基づいて、図7Aのパッキングプラン700を導出することができる。候補載置位置は、図7Bの探索木754内のノードを表すことができる。図8A及び図8Bは、オブジェクト(たとえば、スタッキングオブジェクト)の3D載置を計算するための例示的なメカニズムを示し得、これは少なくとも部分的にオフラインで(たとえば、想定されるまたは既知のパラメータを使用して)、及び/または少なくとも部分的にリアルタイムで(たとえば、リアルタイムセンサデータに基づいて)実行され得る。
いくつかの実施形態では、ロボットシステム100は、指定された載置コンテナの離散化モデル(たとえば、図6のコンテナフットプリントモデル622)の至るところに対象オブジェクトの離散化モデル(たとえば、図6のオブジェクトフットプリントモデル612)を反復的に移動させて、候補位置を生成することができる。たとえば、ロボットシステム100は、1つまたは複数の向きに従って離散化台モデルの所定の初期位置(たとえば、コーナー)に対応する離散化オブジェクトモデルを載置することによって、候補位置801の最初のインスタンスを生成することができる。候補位置801の次のインスタンスについて、ロボットシステム100は、離散化オブジェクトモデルを、所定の方向/パターンに従って所定の距離(たとえば、1つまたは複数の単位ピクセル)だけ移動させることができる。
候補位置801が、計画された位置において1つまたは複数のオブジェクトまたは既存のオブジェクト/構造(たとえば、リアルタイム載置計算用)に重なる場合、ロボットシステム100は、載置済みオブジェクトによって提供される支持(たとえば、図7Cの実効支持795)の度合いを計算し、評価することができる。支持の度合いを計算し、評価するために、ロボットシステム100は、載置エリアについての高さ/輪郭を決定し、追跡することができる。たとえば、ロボットシステム100は、処理されたオブジェクト(たとえば、確定または有効化された載置位置を有するオブジェクト)の既知の/想定される高さに応じて、単位面積(たとえば、図6の離散化単位602)あたりの高さ寸法802を更新することができる。リアルタイム処理のために、ロボットシステム100は、図1のタスク位置116に向けられた図2の撮像デバイス222のうちの1つまたは複数からの深度寸法(たとえば、点群値)を使用することができる。地面及び/または台表面の垂直位置は既知であるので(たとえば、施設地面上方のカート/ケージ底面の高さ)、ロボットシステム100は、深度寸法を使用して、台、載置されたオブジェクト、またはそれらの組み合わせの露出した上面(複数可)の高さ/輪郭を計算することができる。
ロボットシステム100は、反復的な載置の導出中に高さ寸法802を含むように離散化台モデルを更新することができる。ロボットシステム100は、離散化台モデル内の各離散化ピクセルに従って高さ寸法802を決定することができる。たとえば、ロボットシステム100は、コンテナ底部及び/または対応する単位ピクセル内の載置/処理済みオブジェクトの表面部分の最大高さとして、高さ寸法802を決定することができる。
載置済みオブジェクトのうちの1つまたは複数に重なる各候補位置801について、ロボットシステム100は、高さ寸法802に基づいて載置確率を評価することができる。いくつかの実施形態では、ロボットシステム100は、各候補位置801において重なる高さ寸法802の最大値を特定することに基づいて、載置確率を評価することができる。ロボットシステム100はさらに、高さ寸法802のうちの最大寸法に対して差分閾値の限度内の高さ寸法802を有する各候補位置801に位置する他の高さ寸法802を特定することができる。適格なセル/ピクセルは、スタックされたオブジェクトが基本的に平坦/水平(すなわち、コンテナ底部の載置面に対して平行)になるように、スタックされたオブジェクトに対して支持を提供することができる位置を表すことができる。
図8Aに示すように、候補位置801の1つ目(たとえば、コンテナフットプリントモデル622の左上角)について、最大の高さ寸法は0.3(すなわち、300ミリメートル(mm)の高さ)とすることができる。0.02(たとえば、20mmを表す)として事前決定された差分閾値では、ロボットシステム100は、上の4つの離散化セル/ピクセルを、差分閾値を満たすものとして識別することができる。ロボットシステム100は、識別された/適格なセル/ピクセルを使用して、支持の度合いを評価/表現することができる。
図8Bに、支持の計算のさらなる例を示す。図8Bに、コンテナフットプリントモデル622(実線の太い輪郭で図示)が候補位置801の左上角に重ねられた、候補位置801のうちの1つを示す。ロボットシステム100は、候補位置801を評価するのに使用されるパラメータである様々な支持パラメータ804を計算/利用することができる。たとえば、支持パラメータ804は、離散化寸法806、重なり面積808、高低差閾値810、支持閾値812、最大高さ814、高さ下限816、適格数818、支持エリア輪郭820のセット、支持エリアサイズ822、支持比率824、CoM位置782、またはそれらの組み合わせを含むことができる。
離散化寸法806は、図6の離散化単位602に応じた図1の対象オブジェクト112の物理的な寸法(たとえば、長さ、幅、高さ、外周など)を記述することができる。たとえば、離散化寸法806は、離散化オブジェクトモデル612/614の周縁を形成する離散化単位602の数量を含むことができる。重なり面積808は、対象オブジェクト112によって占有される面積(たとえば、水平面に沿ったフットプリントサイズ)を記述することができ、これは離散化単位602に従って同様に表現することができる。換言すれば、重なり面積808は、離散化オブジェクトモデル内の離散化単位602の数量に対応することができる。図8Bに示す例では、対象オブジェクト112は、6ピクセル×7ピクセルの離散化寸法806を有することができ、これは42ピクセルの重なり面積808に対応する。
高低差閾値810及び支持閾値812は、候補位置801を処理及び/または有効性確認するために使用される限度に対応することができる。高低差閾値810は、オペレータ及び/または注文によって事前決定及び/または調整できるものであるが、上に載置されたパッケージに接触する及び/またはこれを支持するために、他の基準高さ(たとえば、離散化オブジェクトモデルが重なるエリア内の高さ寸法802のうちの最大のインスタンスに対応する最大高さ814)から許容できる偏差を表すことができる。換言すれば、高低差閾値810は、上に載置されたパッケージに接触する及び/またはこれを支持することができる面の高さの範囲を定義するために使用することができる。したがって、最大高さ814に対して、高さ下限816は、スタックされたパッケージに対して支持を提供できる重なり面積808内の高さの下限に対応することができる。図8Bに示す例では、高低差閾値810は0.02とすることができる。最大高さ814が0.2である場合、高さ下限816は0.18とすることができる。したがって、対象オブジェクト112を候補位置801に載置する際、ロボットシステム100は、0.18より大きい高さを有する面/ピクセルが対象オブジェクト112に接触する及び/またはこれに支持を提供すると推定することができる。
したがって、1つまたは複数の実施形態では、ロボットシステム100は、高低差閾値810に応じて重なり面積808内の離散化単位602をカテゴリ化することができる。たとえば、ロボットシステム100は、高低差閾値810を満たす高さ(すなわち、高さ下限816以上の値)を有する離散化単位602を、支持位置828(たとえば、図4Bに影付きのピクセルで表した、オブジェクトを上にスタックすることが可能な面を表す離散化単位602のグループ)としてカテゴリ化することができる。ロボットシステム100は、他の離散化単位602を、不適格位置830(たとえば、高さ下限816未満の高さを有するピクセル)としてカテゴリ化することができる。
支持閾値812は、支持位置828の十分性に基づいて候補位置801を評価するための限度を表すことができる。たとえば、支持閾値812は、支持位置828に関連する量、比、面積、位置、またはそれらの組み合わせを評価するためのものとすることができる。いくつかの実施形態では、支持閾値812は、候補位置801についての適格数818(たとえば、支持位置828の総数)が対象オブジェクト112を支持するのに十分であるか否かを判定するために使用することができる。
1つまたは複数の実施形態では、支持閾値812は、支持位置828に関連する支持エリア(たとえば、高さ閾値によって決定することができる、上にスタックされたオブジェクトに支持を提供できる離散化単位602)を評価するために使用することができる。たとえば、ロボットシステム100は、不適格位置830をまたぐまたはその周囲に伸びるエッジを伸ばす及び/または線を決定することによって、支持位置828の最も外側の/外周のインスタンスのコーナーをつなぐことに基づいて、支持エリア輪郭820を決定することができる。このようにして、支持エリア輪郭820は、不適格位置830を除外することができる。したがって、支持エリア輪郭820は、支持位置828の外周インスタンスに基づいて支持エリアの外周を画定することができる。支持エリア輪郭820は不適格位置830をまたぐ及び/または含むことができるので、支持エリアサイズ822(たとえば、支持エリア内の離散化単位602の数量)は、適格数818より大きくすることができる。したがって、支持エリアサイズ822は実質的に、支持が提供される最も外側のエッジ/コーナー間の間隔を表す。より広い支持が好ましいので(たとえば、張り出しを減らす及び/または安定性を向上させるために、支持エリア輪郭820の部分がオブジェクトの重なり面積808より大きい場合)、支持閾値812は、(たとえば、支持エリア輪郭820を評価するために)支持エリア内の離散化単位602の最小数に対応することができ、それによって、支持が提供される最も外側のエッジ/コーナー間の間隔を効果的に評価することができる。
いくつかの実施形態では、支持閾値812は支持比率824を評価するためのものとすることができ、支持比率824は、適格数818及び/または支持エリアサイズ822を重なり面積808と比較することに基づいて計算することができる。たとえば、支持比率824は、水平安定性、支持重量の集中度、またはそれらの組み合わせを表現するために、適格数818と重なり面積808との比率を含むことができる。また、支持比率824は、対象オブジェクト112の下の支持エッジ/コーナー間の相対幅を表すために、支持エリアサイズ822と重なり面積808との比を含むことができる。
さらに、ロボットシステム100は、対象オブジェクト112のCoM位置782に基づいて候補位置801をさらに評価することができる。いくつかの実施形態では、ロボットシステム100は、図2のマスターデータ252から対象オブジェクト112のCoM位置782にアクセスする、及び/または対象オブジェクト112を把持する及び/または持ち上げることに基づいてCoM位置782を動的に推定することができる。アクセス/推定されると、ロボットシステム100は、CoM位置782を支持エリア輪郭820と比較することができる。ロボットシステム100は、候補位置801がCoM位置782を支持エリア輪郭820内に含むように要求し、そのような要求を満たすことができない候補位置801を排除する/不適格とみなすことができる。1つまたは複数の実施形態では、ロボットシステム100は、CoM位置782と支持エリア輪郭820との間の(たとえば、x軸及び/またはy軸に沿った)離間距離に基づいて、載置スコアを計算し、評価することができる。
ロボットシステム100は、支持パラメータ804を使用して制約/要件を評価することができる。たとえば、ロボットシステム100は、支持閾値812、CoM位置閾値(たとえば、CoM位置782を支持エリア輪郭820内に含める要求)、及び/または他のスタッキングルールを満たさない候補位置を排除する/不適格とみなすことができる。また、ロボットシステム100は、支持パラメータ804を使用して、所定の重み及び/または式に従って、候補位置801(たとえば、制約を満たす位置)についての載置スコアを計算することができる。以下で詳細に説明するように、ロボットシステム100は、計算された載置スコアを使用して、所定の設定(たとえば、重み/式によって反映されるもの)に従って候補位置801をランク付けすることができる。
いくつかの実施形態では、ロボットシステム100は、対象オブジェクト112を載置するように図3のエンドエフェクタ304を位置付けることができるか否かを判定することができる。たとえば、ロボットシステム100は、導出された候補位置801に応じて、離散化エンドエフェクタモデル(たとえば、図6のグリッパフットプリントモデル632及び/または図6のグリッパ側面モデル634)を、図1のタスク位置116の離散化台モデル(たとえば、コンテナフットプリントモデル622及び/またはコンテナ側面モデル624)上に重ねることができる。ロボットシステム100は、離散化エンドエフェクタモデルが図7Cの支持壁725または対応する離散化部分の間に(たとえば、重ならずに)存在する場合に、候補位置801を検証し得る。
説明用の例として、ロボットシステム100は、候補位置801のうちの1つまたは複数(たとえば、各々)について、エンドエフェクタ304の利用可能な把持構成のセット(たとえば、中心部の上の、周縁に対して位置合わせされた、オブジェクトに対して1〜359度回転されたものなど)を検証することができる。各把持構成について、ロボットシステム100は、把持構成に従って離散化エンドエフェクタモデルを調整し、調整されたモデルを離散化台モデルに重ねることができる。重ねられたモデルを使用して、ロボットシステム100は、対象オブジェクト112の載置位置における(すなわち、対象オブジェクト112が候補位置801において載置面に置かれている状態での)エンドエフェクタ304の深度値を計算することができる。候補位置801における対象オブジェクト112の上面の深度値(複数可)は、離散化台モデルに応じた載置面の深度値、コンテナフロアと候補位置801との間に載置されたまたは載置するように計画された1つまたは複数のオブジェクトの高さ、及び/または対象オブジェクト112の高さの合計として計算することができる。エンドエフェクタの対応する深度値(複数可)は、候補位置801における対象オブジェクトの上面の計算された深度値と、離散化エンドエフェクタモデルに対応する深度値(複数可)との合計として計算することができる。
各把持構成について、ロボットシステム100は、離散化エンドエフェクタモデルの深度値を、候補位置801において対象オブジェクト112を囲む深度値(たとえば、他のオブジェクト及び/または支持壁725の高さ)と比較することができる。ロボットシステム100は、離散化エンドエフェクタモデルの2Dメッシュが、コンテナの一部(たとえば、支持壁725)またはその中にスタックされたオブジェクトと衝突することを、離散化台及び/またはその上のオブジェクトの深度値が示している場合に、把持構成を却下することができる。ロボットシステム100は、離散化台モデルと離散化エンドエフェクタモデルとの間で深度値が同じであるかまたは閾値範囲内である場合、起こりそうな衝突を検出することができる。ロボットシステム100はまた、離散化エンドエフェクタが離散化台モデルの対応する/重なる部分より低いことを深度値が示している場合に、起こりそうな衝突を検出し得る。同様に、ロボットシステム100は、エンドエフェクタ及びロボットアームの取り付けられた部分を表す2Dメッシュが離散化台モデルの境界に接触するかまたはこれを越えて延在する場合に、潜在的な衝突を決定することができる。
ロボットシステム100は、衝突分析に合格した把持構成を承認または有効化することができる。換言すれば、ロボットシステム100は、いかなる潜在的な衝突にも対応しない残りの把持構成を有効化することができる。ロボットシステム100はさらに、把持構成を有効化することに基づいて、対応する候補位置801を有効化することができる。このようにして、ロボットシステム100は、対象オブジェクト112の載置を導出する際に、エンドエフェクタ304を考慮することができる。ロボットシステム100はさらに上述の処理を使用して、想定外の状況(たとえば、支持壁725の想定外の位置及び/または形状)に応じて調整するように載置プランをリアルタイムに更新する場合に、エンドエフェクタ304を考慮することができる。
例示的なモーション計画
図9A〜図9Cは、本技術の1つまたは複数の実施形態による例示的なモーションプラン計算の例示した態様である。図9A及び図9Bは、図1の対象オブジェクト112を載置するための例示的な進入を示す側面視である。図6A及び図6Bはそれぞれ、対象オブジェクト112をコンテナ内の1つまたは複数の先行オブジェクト508(たとえば、載置済みの、または先に載置するように計画されたオブジェクト)の上の図8Aの対応する候補位置801に載置するための進入路901を示す。
図1のロボットシステム100は、F−1からF−5までの破線のボックスで図示した進入増分903に基づいて、進入路901を導出することができる。進入増分903は、対応する進入路901に沿った3D空間における対象オブジェクト112、図3のロボットアーム302(もしくはその一部)、図3のエンドエフェクタ304、またはそれらの組み合わせの順次位置に対応するサンプリング刻みを表すことができる。いくつかの実施形態では、進入増分903は、モデルに使用される図6の離散化単位602の1つまたは複数の寸法に一致することができる。進入路901は、直線セグメント/方向に対応する経路セグメント904を含むことができる。経路セグメント904は、対象オブジェクト112を図8Aの対応する候補位置801に載置するための最終セグメント906を含み得る。いくつかの実施形態では、最終セグメント906は、垂直(たとえば、下向き)方向または移動を含むことができる。他の実施形態では、最終セグメント906は、垂直な下向きの進入増分に続く、候補位置801への角度がついた下向きの軌道であって、たとえば、オブジェクトを張り出しの下に及び/または横方向に延在して載置するためのものを含むことができる。
進入路901を導出するために、ロボットシステム100は、対象オブジェクト112を候補位置801に載置する場合に、対象オブジェクト112、ロボットアーム302、及び/またはエンドエフェクタ304の障害物になり得る先行オブジェクト902及び/または支持壁725のいずれかを識別することができる。1つまたは複数の実施形態では、ロボットシステム100は、潜在的な障害物(複数可)910を、開始位置114の上の位置と対応する候補位置801との間で延在する水平線(たとえば、x−y平面に沿った直線)及び/または2D平面に重なる先行オブジェクト902のインスタンス(複数可)として識別することができる。ロボットシステム100はさらに、潜在的な障害物(複数可)910を、たとえば、水平線と平行でありこれに重なるレーン912であって、対象オブジェクト112の1つまたは複数の寸法(たとえば、幅、長さ、及び/または高さ)に基づく幅を有するレーン912を導出することに基づいて、水平線付近に導出されたレーン912(図9Cに図示)と重なる先行オブジェクト902のインスタンス(複数可)として識別することができる。図9A及び図9Bに示すように、開始位置114は、候補位置801の右側とすることができる。同様に、ロボットシステム100はさらに、潜在的な障害物(複数可)910をコンテナの支持壁725として識別することができる。
いくつかの実施形態では、ロボットシステム100は、上述の深度寸法に基づいて潜在的な障害物910を有効性確認することができる。たとえば、ロボットシステム100は、上面深度寸法のうちの1つまたは複数が候補位置801の上面深度寸法以上である潜在的な障害物910を有効性確認/識別することができる。ロボットシステム100は、候補位置801の上面深度寸法未満の上面深度寸法を有する先行オブジェクト902を潜在的な障害物910から排除することができる。1つまたは複数の実施形態では、ロボットシステム100は、候補位置801の高さ及び/または潜在的な障害物910の高さに関連する曖昧さに基づいて、潜在的な障害物910を識別/排除することができる。
いくつかの実施形態では、ロボットシステム100は、進入路901を逆順で導出することができ、たとえば、候補位置801から開始して開始位置114で終了することができる。したがって、ロボットシステム100は、潜在的な障害物910を回避するように、最終セグメント906を最初に(たとえば、他のセグメントより前に)を導出することができる。たとえば、ロボットシステム100は、オブジェクト及びエンドエフェクタ(たとえば、図5Cの係合状態のインターフェース高534に応じたグリッパモデル及びオブジェクトモデルの組み合わせ)の寸法に応じてレーン912のセットを決定することができる。いくつかの実施形態では、レーンのセットは、対象オブジェクトの高さ及び/または幅に対応する1つまたは複数の横方向延在レーンを含むことができる。レーンのセットはまた、対象オブジェクトの長さ及び/または幅に対応する1つまたは複数の垂直方向延在レーンを含み得る。
ロボットシステム100は、候補位置801から上に延在する垂直方向延在レーンを最初に導出することができる。ロボットシステム100は、垂直方向延在レーンが任意の先行オブジェクト902及び/または支持壁725に重なる/接触するか否かを評価することができる。ロボットシステム100は、重なり/接触を検出したことに基づいて候補位置801を不適格とみなし、及び/または横方向の移動を評価することができる。垂直方向延在レーンが、いずれの潜在的な障害物910(たとえば、先行オブジェクト902及び/または支持壁725)にも重ならない/接触しない場合、ロボットシステム100は、垂直方向延在レーンから開始位置114の上の位置までの横方向延在レーンを導出することができる。ロボットシステム100は、所定の最小の高さ(たとえば、最小/最大の降下高さ及び/またはコンテナ壁の高さ)の横方向延在レーンを導出することができる。
ロボットシステム100は同様に、横方向延在レーンが任意の潜在的な障害物910に重なる/接触するか否かを評価することができる。ロボットシステム100は、潜在的な障害物の検出に基づいて、横方向延在レーンの高さを(たとえば、1つまたは複数の進入増分903だけ)反復的に増加させることができる。このようにして、ロボットシステム100は、邪魔のない進入レーンが決定され、及び/または最大評価高さに達するまで、増加する高さの横方向レーンを評価することができる。邪魔のないレーンなしで最大評価高さに達した場合、ロボットシステム100は、候補位置801を否認することができる。そうでなければ、ロボットシステム100は、横方向延在レーンを有効性確認することができる。
ロボットシステム100は、有効性確認された垂直レーン(たとえば、最終セグメント906に対応するもの)と、有効性確認された横方向レーン(たとえば、経路セグメント904に対応するもの)とに応じて、進入路901を導出することができる。いくつかの実施形態では、ロボットシステム100は同様に、進入路901に対して、斜めに延在するレーン(たとえば、上向きにある角度で伸びるレーン)及び/または複数のレーンセグメント(たとえば、ステップパターンに従うように反復的に、上昇した後に横移動するもの)を評価することができる。
説明用の例として、ロボットシステム100は、底面/レーンエッジが潜在的な障害物910の上方にあり、及び/または最も近い潜在的な障害物を間隙閾値914(たとえば、対象オブジェクト112と潜在的な障害物910との間の接触または衝突を回避するための、潜在的な障害物910の最高点の上方の対象オブジェクト112に対する最小垂直間隔に関する要件)だけ離れて飛び越えるまで、横方向延在レーンの高さを増加させ続けることができる。レーンが間隙閾値914を満たす場合、ロボットシステム100は、対応する進入増分を水平方向に沿って(たとえば、開始位置114へ向けて)所定の距離だけ調整し得る。したがって、ロボットシステム100は、候補位置801及び進入路901に基づいて最終セグメント906及び/または後続の経路セグメント904を導出することができる。
導出されると、ロボットシステム100は、進入路901を使用して、対応する候補位置801を評価することができる。いくつかの実施形態では、ロボットシステム100は、進入路901に応じて載置スコアを計算することができる。たとえば、ロボットシステム100は、最終/垂直セグメントについてのより短い長さ/距離のための設定(たとえば、所定の載置設定に対応する1つまたは複数の重みに応じたもの)に応じて、載置スコアを計算することができる。1つまたは複数の実施形態では、ロボットシステム100は、候補位置801を排除するかまたは不適格とみなすために使用される進入路901に関連する上限などの制約(たとえば、最終/垂直セグメント906についてのもの)を含むことができる。
いくつかの実施形態では、ロボットシステム100はさらに、他の衝突/障害関連パラメータに従って対応する候補位置801を評価することができる。たとえば、ロボットシステム100は、候補位置360と、先行オブジェクト902のうちの1つまたは複数との間の水平間隔916に応じて候補位置801を評価することができる。各水平間隔916は、対応する候補位置360と、先行オブジェクト902の隣接するインスタンスとの間の、水平方向(たとえば、x−y平面)に沿った距離(たとえば、最短距離)とすることができる。ロボットシステム100は、進入路901について上述したのと同様に、水平間隔916に基づいて候補位置360についての載置スコアを計算することができる。また、ロボットシステム100は、水平間隔916が最小要件を満たさない場合などに、水平間隔916に基づいて候補位置360を排除するかまたは不適格とみなすことができる。最終セグメント906は一般的にはオブジェクト載置に関して最も難しいので、最終セグメント906から開始する進入路901の有効性確認によって、進入路901を有効性確認するための処理時間が短縮される。
想定外の状況のための例示的な調整
図10に、本技術の1つまたは複数の実施形態による例示的なリアルタイムセンサデータ(たとえば、センサ出力1000)を示す。図1のロボットシステム100は、対応するセンサを介してセンサ出力1000を取得することができる。たとえば、センサ出力1000は、図3の上面視センサ310からの上面視画像1052、及び/または図3の側面視センサ312からの側面視画像1054を含み得る。上面視画像1052及び/または側面視画像1054は、図1のタスク位置116にあるコンテナ(たとえば、図4Aのカート410及び/または図4Cのケージ420)及び/またはコンテナ内のオブジェクトを描くことができる。
図1のロボットシステム100は、コンテナに関連する想定外の特徴1002についてセンサ出力1000を分析することができる。たとえば、ロボットシステム100は、(たとえば、Sobelフィルタなどのエッジ検出メカニズムを介して)実際の特徴606を検出し、それらをコンテナの所定の/想定される特徴(たとえば、エッジ)と比較することに基づいて、センサ出力1000を分析することができる。ロボットシステム100は、センサ出力1000内に描かれた実際の特徴606が、コンテナの想定される特徴(たとえば、対応するテンプレートによって表されるもの)及び/または所定のエラー条件用のテンプレートパターンから偏位している場合に、想定外の特徴1002を検出することができる。想定外の特徴1002のいくつかの例は、図7Cの支持壁725のエラー条件、たとえば、半開のカート壁(左の壁で図示)及び/または反った壁(右の壁で図示)などに対応することができる。
想定外の特徴1002は、想定載置面から偏位した載置面に対応し得る。たとえば、半開のカート壁及び/または反った壁によって、コンテナ底面の減少した部分が露出され得る。したがって、想定される状況に基づいて導出された図7Aのパッキングプラン700は、想定外の特徴1002を有する実際のコンテナには適用できない場合がある(たとえば、調整なしで適合しない場合がある)。また、想定外の特徴1002は、パッキングプラン700に関連するモーションプラン(たとえば、図9Aの進入路901)についての想定外の障害物/妨害物を示し得る。
したがって、想定外の特徴1002を検出したことに応答して、ロボットシステム100は、想定外の特徴1002を考慮するようにパッキングプラン700を動的に調整し得る。換言すれば、ロボットシステム100は、想定外の特徴1002によらず、またはこれを考慮して、計画されたオブジェクトをコンテナ内に載置するようにパッキングプラン700を動的に(たとえば、パッキング/積載動作中に)生成または更新することができる。パッキングプラン700を動的に調整する際に、ロボットシステム100は、センサ出力1000を使用して、想定外の特徴1002を含むかまたは表現する1つまたは複数の実際のコンテナモデルを動的に生成することができる。たとえば、ロボットシステム100は動的に、上面視画像1052に基づいて調整されたフットプリントモデル1022を生成し、及び/または側面視画像1054に基づいて調整された側面モデル1024を生成することができる。ロボットシステム100は、図6の離散化単位602及び/または図9Aの進入増分903に従って、センサ出力1000をピクセル化及び/または離散化することに基づいて、調整されたモデルを生成することができる。たとえば、ロボットシステム100は、深度、色、形状、及び/または他のパラメータに関連する所定のパターンに基づいて、支持壁725(たとえば、その1つまたは複数の内側の上端)及び/またはコンテナ底部に対応する検出されたエッジを識別することができる。ロボットシステム100は、識別されたエッジの1つまたは複数の所定のインスタンスを開始/基準エッジ(たとえば、モデル境界608の一部)として選択することができる。ロボットシステム100は、選択されたエッジを使用し、ピクセル化処理のために支持壁725の間のエリア/スペースの分割を開始することができる。ロボットシステム100は、支持壁725に対応するエッジ及び/または関連する位置/高さを超えることも、それらを越えて延在することもなく、エリア/スペースをピクセル化することができる。このようにして、ロボットシステム100は、モデル境界608の残りの部分を決定することができる。したがって、ロボットシステム100は、オブジェクトが格納され得る調整済み載置ゾーン1026を表す調整されたモデルを動的に生成することができる。
上述のように、ロボットシステム100は、図4Aの想定載置ゾーン430とは異なり得る調整済み載置ゾーン1026を動的に決定することができる。想定外の特徴1002が検出された場合、ロボットシステム100は、調整済み載置ゾーン1026を想定載置ゾーン430及び/またはオブジェクトをコンテナ内に載置するためのパッキングプラン700と比較することができる。たとえば、ロボットシステム100は、コンテナモデル及び/またはパッキングプラン700を調整されたモデルに重ねることができる。したがって、ロボットシステム100は、想定載置ゾーン430が調整済み載置ゾーン1026と異なるか否か、及び/またはパッキングプラン700が調整済み載置ゾーン1026を越えて延在するか否かを判定することができる。
ロボットシステム100は、想定載置ゾーン430が調整済み載置ゾーン1026と異なる場合、及び/またはパッキングプラン700またはその一部が調整済み載置ゾーン1026を越えて延在する場合、パック再配置を開始することができる。ロボットシステム100は、調整済み載置ゾーン1026内でパッキングプラン700を動かすことに基づいて、パック再配置を実施することができる。たとえば、ロボットシステム100は、最初に図7AのAABB730を調整済み載置ゾーン1026の所定のコーナー/エッジに位置合わせし、AABB730が調整済み載置ゾーン1026内に含まれるか否かを評価することができる。AABB730の最初の位置合わせが調整済み載置ゾーン1026の境界内に含まれない場合、ロボットシステム100は、所定のパターンに従って調整済み載置ゾーン1026内でAABB730を反復的にずらし、AABB730が調整済み載置ゾーン1026内に含まれるか否かを評価することができる。このようにして、ロボットシステム100は、パッキングプラン700内の全てのオブジェクトの載置位置をグループ/ユニットとして調整し得る。
AABB730の載置が調整済み載置ゾーン1026内に収まる場合、ロボットシステム100は、パッキングプラン700の調整された位置を有効性確認することができる。いくつかの実施形態では、ロボットシステム100は、図9Aの進入路901が、パッキングプラン700のずらされたまたは調整されたインスタンス内の1つまたは複数のオブジェクトについて、検出されたコンテナエッジと重なるか否かを評価することに基づいて、パッキングプラン700の調整された位置を有効性確認することができる。たとえば、ロボットシステム100は、調整載置位置を考慮するように、第1のオブジェクトの進入路901、第1のレイヤ、AABB730の周辺位置のオブジェクト、及び/または他のオブジェクトを更新することができる。ずらされた進入路901をセンサ出力1000に重ねて比較することによって、ずらされた進入路901がコンテナ壁及び/または先行オブジェクトと重なるか/衝突するかを判定することができる。評価された進入路が、想定外の特徴に関して図9Aの潜在的な障害物910を回避する場合、ロボットシステム100は、ずらされた位置に従ってパッキングプラン700を有効化し、実施することができる。このようにして、ロボットシステム100は、たとえば、パッキングプラン700及び/または進入路901を再導出することなく、想定外の特徴1002を踏まえてパッキングプラン700を実施することができる。全てのオブジェクトが調整済み載置ゾーン1026内に含まれるAABB730の代替的位置をロボットシステム100が決定できない場合、ロボットシステム100は、パッキングプラン700を再導出し、及び/またはコンテナの交換を開始/実施し得る。想定外の特徴1002に対する動的な調整に関する詳細については後述する。
図11は、本技術の1つまたは複数の実施形態による、図1のロボットシステム100を動作させる第1の例示的な方法1100の流れ図である。方法1100は、オブジェクト(たとえば、パッケージ、ケース、及び/またはボックス)をコンテナ(たとえば、図4Aのカート410及び/または図4Cのケージ420)内に載置するための図7Aのパッキングプラン700を導出するためのものとすることができる。方法1100は、図2の記憶デバイス204のうちの1つまたは複数に記憶された命令を、図2のプロセッサ202のうちの1つまたは複数によって実行することに基づいて、実施することができる。プロセッサ202は、たとえば、図1の対象オブジェクト112を図1の開始位置114から図1のタスク位置116にあるコンテナまで転置することによって、パッキングプラン700に従って図3のロボットアーム302及び/または図3のエンドエフェクタ304を制御することができる。たとえば、プロセッサ202は、図9Aの進入路901に沿ってコンポーネント/オブジェクトを操作し、それらをコンテナ内の対応する載置位置に載置するようにロボットユニットを制御することができる。
ブロック1102において、ロボットシステム100は、タスク位置116にあるコンテナ内に載置されるように指定されたオブジェクトのセット(たとえば、図7Bのスタックされたオブジェクト724、図7Cの上のパッケージ772、図7Cの支持パッケージ774、図7Cの中間オブジェクト799などと判定されるオブジェクト)を識別することができる。たとえば、ロボットシステム100は、パッキングに利用可能な、入荷内の、指定された位置に到着した、ソースに配置された、載置されるように指定された、及び/または注文/要求/目録内にリスト化されたオブジェクト(たとえば、図7Bの利用可能パッケージ742のセット)を識別することができる。
また、ブロック1102において、ロボットシステム100は、識別されたオブジェクトを受け取るために利用可能なコンテナを識別することができる。たとえば、ロボットシステム100は、空きまたは部分的に満たされたステータスを有する及び/またはアクセス可能(たとえば、現在使用中でなく、ブロックもされていない)カート410及び/またはケージ420を識別することができる。また、ロボットシステム100は、キューなどから利用可能になるコンテナを識別することができる。ロボットシステム100は、識別されたコンテナの特性/特質(たとえば、カテゴリ、寸法、識別子など)をさらに特定し得る。ロボットシステム100は、他のシステム(たとえば、輸送ロボットシステム)とインターフェースをとり、図2のマスターデータ252から情報にアクセスし、及び/またはコンテナから(たとえば、所定の位置のセンサを介して)リアルタイム情報を取得して、コンテナ及び/またはそれらの特性を特定することができる。
ブロック1104において、ロボットシステム100は、1つまたは複数の離散化モデルを(たとえば、リアルタイムに生成する及び/またマスターデータ252からアクセスすることにより)取得することができる。たとえば、ロボットシステム100は、たとえば、図7Aのオブジェクトモデル706〜710、図6の対応するフットプリントモデル612、及び/または図6の対応する側面モデル614などの識別されたオブジェクトを表す離散化モデルを取得することができる。また、ロボットシステム100は、たとえば、図6のコンテナフットプリントモデル622及び/または図6のコンテナ側面モデル624などの識別されたコンテナを表す離散化モデルを取得することができる。
いくつかの実施形態では、ロボットシステム100は、図6の離散化単位602(たとえば、設定された寸法を有するピクセル)に従ってオブジェクト/コンテナの物理的な寸法または画像をピクセル化または分割することに基づいて、リアルタイムに(たとえば、注文を受けた後及び/またはパッキング動作を開始する前に、あるいはオフラインで)離散化モデルを生成することができる。離散化単位602の寸法は、製造業者、注文した顧客、及び/またはオペレータによって、事前に決定するかまたは動的に設定することができる。たとえば、離散化単位602は、1ミリメートル(mm)もしくは1/16インチ(in)またはそれ以上(たとえば、5mmもしくは20mm)であり得る。いくつかの実施形態では、離散化単位602は、オブジェクトのうちの1つまたは複数及び/またはコンテナの寸法またはサイズに基づくことができる(たとえば、割合または分数)。
いくつかの実施形態では、ロボットシステム100は、記憶デバイス204及び/または他のデバイス(たとえば、図2の通信デバイス206を介してアクセスされるパッケージ供給元の記憶デバイス、データベース、輸送ロボットを制御するためのシステム、及び/またはサーバ)に記憶された離散化モデルにアクセスすることができる。ロボットシステム100は、識別されたオブジェクト及び/または識別されたコンテナを表す所定の離散化モデルにアクセスすることができる。たとえば、ロボットシステム100は、マスターデータ252(たとえば、所定のテーブルまたはルックアップテーブル)において利用可能オブジェクト及びそれらに対応するモデルを検索することによって、識別されたオブジェクトに対応する離散化オブジェクトモデルにアクセスすることができる。同様に、ロボットシステム100は、利用可能オブジェクトが載置されることになる識別されたカートまたはケージなどのタスク位置116を表す離散化コンテナモデルにアクセスすることができる。
ブロック1106において、ロボットシステム100は、オブジェクトグループ(たとえば、識別されたオブジェクトのサブグループ)を決定することができる。ロボットシステム100は、識別されたオブジェクトの1つまたは複数の特性における類似性及び/またはパターンに応じて、オブジェクトグループを決定することができる。いくつかの実施形態では、ロボットシステム100は、所定のグループ化条件/要件、たとえば、オブジェクト優先度(たとえば、1つまたは複数の顧客によって指定されるもの)、脆性レーティング(たとえば、オブジェクトによって支持可能な最大重量)、重量、寸法(たとえば、高さ)、タイプ、またはそれらの組み合わせに従ってオブジェクトグループを決定することができる。オブジェクトをグループ化する際に、ロボットシステム100は、グループ化条件/要件に合致する識別されたオブジェクトの様々な特性をマスターデータ252において検索することができる。
ブロック1108において、ロボットシステム100は、識別されたオブジェクト及び/またはオブジェクトグループに対する処理順序(たとえば、載置位置を検討/導出するシーケンス)を導出することができる。いくつかの実施形態では、ロボットシステム100は、1つまたは複数の配列条件/要件に従って処理順序を導出することができる。たとえば、ロボットシステム100は、たとえば、オブジェクト数が多いグループを載置計画においてより早く処理するために、各グループ内のオブジェクト数に応じて、オブジェクトグループの処理を優先することができる。いくつかの実施形態では、配列条件は、たとえば、重量範囲、脆性レーティングなどについて、グループ化条件と重複することができる。たとえば、ロボットシステム100は、より重い及び/またはより脆弱でないオブジェクトの処理を優先して、より早く処理し、及び/またはより下位のレイヤに載置するようにすることができる。
いくつかの実施形態では、ロボットシステム100は、合計水平面積に応じて載置計画を優先することができる。ロボットシステム100は、マスターデータ252において指定された情報を使用して、グループ内のオブジェクトの上面の表面積を(たとえば、対応する幅と長さとを乗算することなどによって)計算するまたはアクセスすることができる。合計水平面積を計算する際に、ロボットシステム100は、同一のタイプである及び/または閾値範囲内の高さを有するオブジェクトの表面積を加算することができる。いくつかの実施形態では、ロボットシステム100は、より大きい合計水平面積を有するグループの載置計画を優先して、より早く処理し、及び/またはより下位のレイヤに載置するようにすることができる。
1つまたは複数の実施形態について、ロボットシステム100は、識別されたオブジェクトの識別子及び/または数量をバッファ(たとえば、記憶デバイス204)にロードすることができる。ロボットシステム100は、グループに従ってバッファ内の識別子を配列することができる。さらに、ロボットシステム100は、処理順序に応じてバッファ内の識別子を配列することができる。したがって、バッファ内の配列された値は、図7Bに示す利用可能パッケージ742及び/または残余パッケージ752に対応することができる。
ロボットシステム100はオフラインで、たとえば、オブジェクトのいずれかが台に載置される前に、利用可能パッケージ742の初期セットに対する処理順序を導出し得る。いくつかの実施形態では、ロボットシステム100は、対応するパッキングプラン700の開始後または実施中に、利用可能または残余パッケージ752の残余セットに対する処理順序を動的に導出することができる。たとえば、ブロック1116からのフィードバックループによって示すように、ロボットシステム100は、1つまたは複数のトリガ条件に従って、残余セット(たとえば、台に転置されていない及び/またはソース位置に残っている利用可能または残余パッケージ752の一部)に対する処理順序を計算することができる。例示的なトリガ条件は、スタッキングエラー(たとえば、オブジェクトの紛失または落下)、衝突イベント、所定の再トリガタイミング、コンテナ異常(たとえば、図10の想定外の特徴1004の検出)、またはそれらの組み合わせを含むことができる。
ロボットシステム100は、1つまたは複数の載置ルールに従って候補位置801及び/またはそれらの組み合わせを反復的に導出し、評価することに基づいて、パッキングプラン700を導出することができる。ロボットシステム100は、オブジェクトモデルを離散化コンテナモデル上に候補位置801に重ねることに基づいて、パッキングプラン700を導出することができる。ロボットシステム100は、候補位置801に重ねられたオブジェクトモデルに関連する1つまたは複数の属性(たとえば、オブジェクトの物理的な配置、結果的な重量、衝突確率、安定性など)を推定することができる。
いくつかの実施形態では、ロボットシステム100は、レイヤに応じて候補位置801を導出することによって、2Dプランを導出し、評価することができる。たとえば、ロボットシステム100は、載置されたオブジェクトがコンテナ底部(すなわち、載置面)に直接接触する最下位レイヤを形成するオブジェクト載置位置を導出する(たとえば、候補位置801のインスタンスを有効性確認する)ことができる。レイヤを導出する際に、及び/または後続の評価のために、ロボットシステム100は、図8Aの高さ寸法802を載置位置に追加し、位置を3Dで処理し得る。最下位レイヤが導出/有効化されると、ロボットシステム100は、最下位レイヤに載置するよう計画されたオブジェクトの上に(たとえば、その上面に直接接触するように)オブジェクトを載置するための候補位置801を導出することができる。したがって、ロボットシステム100は、互いの上にスタックされた複数の2Dレイヤを含むパッキングプラン700を導出することができる。さらに、パッキングプラン700を導出する際に、ロボットシステム100は、スタックされたオブジェクトがそれぞれ、スタックされたオブジェクトの下に配置された1つまたは複数のオブジェクトから張り出しており、支持のために支持壁725を利用する位置を導出し、有効性確認することができる。パッキングプラン700の導出に関する詳細については後述する。
ブロック1110において、ロボットシステム100は、利用可能パッケージ742を対応する水平面に沿って載置するための2Dプラン(たとえば、図7Aに示す下位レイヤ712及び/またはスタックされたレイヤ722などのレイヤ)を導出することができる。たとえば、ロボットシステム100は、利用可能パッケージ742のサブセットに対して水平面に沿った載置位置の2Dマッピングを導出することができる。ロボットシステム100は、たとえば、離散化オブジェクトモデルを離散化コンテナモデルに重ねる/これと比較することによって、離散化モデルに基づいて載置プランを導出することができる。したがって、ロボットシステム100は、離散化オブジェクトモデルの異なる配置(たとえば、図8Aの候補位置801)を分析し、離散化台モデルの境界線内にある配置を有効性確認することができる。ロボットシステム100は、離散化コンテナモデルの境界線内に載置することができないオブジェクトに、他のレイヤを指定することができる。したがって、ロボットシステム100は、パッケージセット内の各パッケージに位置が割り当てられるまで、パッキングプラン700の2Dレイヤの載置位置を反復的に導出することができる。
いくつかの実施形態では、ロボットシステム100は、オブジェクトグループに基づいてパッキングプラン700及び/またはその中のレイヤを生成することができる。たとえば、ロボットシステム100は、あるグループ内のオブジェクトの配置を、他のグループ内のオブジェクトの載置を検討する前に、決定することができる。オブジェクトグループ内のオブジェクトがレイヤから溢れる場合(すなわち、離散化台モデルの1つのレイヤまたは1つのインスタンスに収まらない場合)、及び/または1つのグループの全てのパッケージを載置した後、ロボットシステム100は、次のグループ内のオブジェクトについての位置を、離散化コンテナモデル内の任意の残っている/占有されていないエリアに割り当てることができる。ロボットシステム100は、未割り当てオブジェクトが離散化コンテナモデルの残余スペースに収まらなくなるまで、割り当てを反復的に繰り返すことができる。
同様に、ロボットシステム100は、処理順序に基づいて(たとえば、処理順序に応じたオブジェクトグループに基づいて)プランレイヤを生成することができる。たとえば、ロボットシステム100は、処理順序に応じてオブジェクト及び/またはグループを割り当てることに基づいて、テスト配置を決定することができる。ロボットシステム100は、最も早く配列されたオブジェクト/グループにテスト配置の最初の載置を割り当て、次いで、処理順序に応じて後続のオブジェクト/グループをテストする/割り当てることができる。いくつかの実施形態では、ロボットシステム100は、レイヤにわたって(たとえば、載置プラン350のインスタンスにわたって)オブジェクト/グループに対する処理順序を保持することができる。いくつかの実施形態では、ロボットシステム100は、各レイヤが充填された後、処理順序を再導出し更新することができる(図6に破線のフィードバック線で図示)。いくつかの実施形態では、上述の処理の説明用の例として、ロボットシステム100は、各オブジェクトグループ及び/またはパッケージセット内の異なる/一意のパッケージタイプを識別することによって、2Dプランを生成することができる。
ロボットシステム100は、各利用可能パッケージ742について載置位置を(たとえば、反復的に)導出することができる。ロボットシステム100は、処理順序に応じてシーケンスの最初の独特のオブジェクトについての初期載置位置(たとえば、候補位置801)を決定することができる。ロボットシステム100は、上述のように所定のパターン(たとえば、所定の向き/位置のシーケンス)に従って初期載置位置を決定することができる。いくつかの実施形態では、ロボットシステム100は、独特のパッケージごとに初期載置を計算することができる。得られた初期載置はそれぞれ、たとえば、反復にわたって載置位置の組み合わせを追跡することによって、一意の載置組み合わせ(たとえば、図7Bの探索木754のインスタンス)に発展させることができる。ロボットシステム100は、処理順序及び/または上述の残余パッケージに応じて、後続のオブジェクトについての候補載置位置を導出し追跡することができる。したがって、ロボットシステム100は、図7Bの載置組み合わせ744を反復的に導出することができる。
載置組み合わせ744(たとえば、候補位置801のセット)を導出する際に、ロボットシステム100は、スタッキングシナリオ候補(たとえば、導出された候補位置801のオブジェクトの上のオブジェクトの可能な載置)を反復的に導出し評価することができる。たとえば、ロボットシステム100は、結果的に得られる上面エリア、安定性推定値、支持推定値、及び/または他の基準に従ってレイヤ内の候補位置801のセットを評価することができる。評価される基準は、離散化オブジェクトモデルが載置ゾーンの水平境界線内に完全に収まることを要求/選好することができる。また、載置基準は、離散化オブジェクトモデルの載置が、隣接載置または離間要件などのために、(たとえば、水平方向などに沿った)初期載置位置及び/または前の載置位置に対して閾値距離内にあることを要求することができる。載置基準の他の例は、1つまたは複数のパッケージ寸法(たとえば、高さ)、脆性レーティング、パッケージ重量範囲、またはそれらの組み合わせの差(複数可)が最小であるパッケージを隣接して載置するための設定を含むことができる。いくつかの実施形態では、載置基準は、基準位置(たとえば、パレタイズロボットの位置)に対するレイヤ内の割り当て済みのパッケージの位置及び/または特性(たとえば、高さ)に対応し得る衝突確率を含むことができる。したがって、ロボットシステム100は、パッケージ載置位置の複数の一意の載置組み合わせ(すなわち、各レイヤについての載置プラン候補、及び/または各々が複数のレイヤを含むスタッキングシナリオ候補)を生成することができる。いくつかの実施形態では、ロボットシステム100は、載置反復にわたって探索木754を生成し更新することに基づいて、組み合わせの載置を追跡することができる。
2Dレイヤの載置位置を確定する際に、ロボットシステム100は、各組み合わせ/パッケージ載置についての載置スコアを計算/更新することができる。ロボットシステム100は、載置条件/設定(たとえば、パッケージ寸法、衝突確率、脆性レーティング、パッケージ重量範囲、離間要件、パッケージ数量条件)のうちの1つまたは複数に従って載置スコアを計算することができる。たとえば、ロボットシステム100は、選好係数(たとえば、乗数の重み)及び/または式を使用して、パッケージ間の離間距離、隣接パッケージについてのパッケージ寸法/脆性レーティング/パッケージ重量の差、衝突確率、同じ高さの連続面/隣接面、それらの統計結果(たとえば、平均、最大、最小、標準偏差など)、またはそれらの組み合わせについての選好を記述することができる。各組み合わせは、システム製造業者、注文、及び/またはシステムオペレータによって事前定義され得る選好係数及び/または式に従ってスコア付けすることができる。いくつかの実施形態では、ロボットシステム100は、載置反復全体の最後に載置スコアを計算することができる。
いくつかの実施形態では、ロボットシステム100は、各載置反復後に、図7Bの優先度キュー756内の載置組み合わせ744のシーケンスを更新することができる。ロボットシステム100は、載置スコアに基づいてシーケンスを更新することができる。
ロボットシステム100は、空きソースステータス、満杯レイヤステータス、または不変スコアステータスを判定することに基づいて、載置反復を停止することができる(たとえば、1つの載置プラン候補の完了)。空きソースステータスは、全ての利用可能オブジェクトが載置されたことを表すことができる。満杯レイヤステータスは、他のオブジェクトを検討中の離散化コンテナモデルの残余エリア内に載置できないことを表すことができる。不変スコアステータスは、組み合わせについての載置スコアが、1つまたは複数の連続した載置反復にわたって一定のままであることを表すことができる。いくつかの実施形態では、ロボットシステム100は、(たとえば、配列条件に関連する配列値/スコアが同一であるグループを並べ直すために)異なる初期載置位置及び/または異なる処理順序を使用して載置反復を繰り返すことによって、スタッキングシナリオ候補の他のインスタンスを導出することができる。換言すれば、ロボットシステム100は複数の2D載置プランを生成することができ、ここで、各2D載置プランは、(たとえば、スタッキングシナリオ候補のインスタンスなどの)3Dスタック内のレイヤを表すことができる。他の実施形態では、ロボットシステム100は、2D載置プランが導出された場合に3D効果を反復的に検討し、2D載置プランが満杯になった場合に、次のレイヤを次の反復として導出することを開始することができる。
ブロック1112において、ロボットシステム100は、2Dプランのスタッキングシナリオを計算することができる。そうする際に、ロボットシステム100は、ブロック1152に示すように、載置組み合わせ744及び/または2D載置プランのそれぞれを3D状態に変換することができる。たとえば、ロボットシステム100は、オブジェクトの高さ値を載置組み合わせ744に割り当てることができる。ロボットシステム100は、載置組み合わせ744内の対応するオブジェクトの高さに応じて、コンテナモデル(たとえば、コンテナフットプリントモデル622)の離散化単位602/ピクセルごとに高さ寸法802を計算することに基づいて、輪郭マップ(深度マップの推定)を生成し得る。複数のレイヤについて、ロボットシステム100は、ピクセル化された位置に載置/スタッキングするように計画されたオブジェクトの高さを組み合わせた高さ寸法802を計算することができる。
3D状態によって、ロボットシステム100は、1つまたは複数のスタッキングルール(たとえば、図7Cの水平オフセットルール776、図7Cの支持物離間ルール786、及び/または図7Cの垂直オフセットルール790)に従って、載置組み合わせ744を評価することができる。説明用の例として、ロボットシステム100は、上述の図7Cの重なり要件778、図7Cの張り出し要件780、垂直オフセットルール790、図7CのCoMオフセット要件784、またはそれらの組み合わせに違反する載置組み合わせ744またはそのフラグ位置に対して減少したスコアを計算することができる。1つまたは複数の実施形態では、ロボットシステム100は、たとえば、重ねられたパッケージにおける支持重量を推定し、下位レイヤ用に計画されたオブジェクトの対応する脆性レーティングと比較することによって、1つまたは複数のオブジェクトの脆性レーティングを計算することができる。
ブロック1154において、ロボットシステム100は、3Dスコア/更新に応じて組み合わせを選択することができる。換言すれば、3D載置スコアを計算するかまたは載置スコアを更新し、それに応じて組み合わせを選択することができる。ロボットシステム100は、3D載置についての載置コスト及び/またはヒューリスティック値に関連する所定の設定(たとえば、重み及び/または式)を使用することができる。所定の3D設定は、2D設定、グループ設定、配列条件、またはそれらの組み合わせに類似することができる。たとえば、3D設定は、3D状態に基づいて衝突確率を計算し、衝突確率がより低い載置組み合わせを優先するスコアを計算するように構成することができる。また、ロボットシステム100は、残余パッケージ752、共通の高さを有する支持エリアのサイズ、3D状態のパッキングされたアイテムの数、処理済みパッケージの高さの差、またはそれらの組み合わせに基づいて、スコアを計算することができる。いくつかの実施形態では、ロボットシステム100は、スコアに応じて優先度キュー756内の載置組み合わせ744のシーケンスを更新することができる。
3D状態が処理された後、ロボットシステム100は、ブロック1110などにおいて、残余パッケージ752内の次のパッケージについての載置を導出することによって、2Dプランを更新することができる。ロボットシステム100は、たとえば、利用可能パッケージ742が全て処理された(すなわち、残余パッケージ752についての空の値/セット)場合、及び/または載置組み合わせ744を改善できない(改善されない組み合わせとも呼ばれる)場合など、停止条件まで上述の処理を反復することができる。改善されない組み合わせのいくつかの例は、現在処理されている載置が、違反のうちの1つまたは複数によって優先度キュー756内の載置組み合わせ744の最後のものを排除する場合、及び/または載置スコアが優先される組み合わせについて閾値数の反復にわたって一定のままである場合を含むことができる。
停止条件が検出された場合、ロボットシステム100は、載置スコア(たとえば、2D及び/または3D関連スコア)に応じて、導出された載置組み合わせ744のうちの1つを選択することができる。したがって、ロボットシステム100は、選択された載置組み合わせをパッキングプラン700として指定することができる。
説明用の例として、ロボットシステム100は、ブロック1110及び1112の機能を異なって実施することができる。たとえば、ブロック1110において、ロボットシステム100は、上述のように最下位レイヤについての2Dプラン(たとえば、載置プラン350のインスタンス)を生成することができる。その際、ロボットシステム100は、載置及び/または処理順序を検討する際に、一致するパッケージ高、より重いパッケージ重量、及び/またはパッケージについてのより大きい支持可能重量に対してより重い設定(たとえば、より大きいパラメータの重み)を与えるように構成することができる。ロボットシステム100は、ブロック1110について上述したように、ベースレイヤについて第1の2Dプランを導出することができる。
第1の2Dレイヤが上述のように完全/満杯となってベースレイヤが形成されると、ロボットシステム100は、ブロック1112について説明したように載置プランを3D状態に変換することができる。3D情報を使用して、ロボットシステム100は、上述のようにベースレイヤの1つまたは複数の平面セクション/エリアを特定することができる。平面セクションを使用して、ロボットシステム100は、ベースレイヤの上の次のレイヤについてのパッケージ載置を反復的に/再帰的に導出することができる。ロボットシステム100は、実質的に各平面セクションを離散化の新たなインスタンスとみなし、ブロック1110について上述したように異なる載置をテスト/評価し得る。いくつかの実施形態では、ロボットシステム100は、載置面を使用して2D載置を導出することができるが、載置エリア/スペース全体にわたってスコアを計算することができる。したがって、ロボットシステム100は、先行する載置エリアに制限されることなく、後続のレイヤに対してより大きい載置エリアを優先するように構成することができる。
反復的載置処理が第2のレイヤについて停止すると、ロボットシステム100は、導出されたレイヤについての平面セクション(たとえば、閾値範囲内の高さを有する上面)を計算して、次の上のレイヤについての残余パッケージ/グループの2D載置を生成することができる。反復的レイヤ化処理は、上述のように停止条件が満たされるまで継続することができる。
第2のレイヤ以上の2Dプランを導出する際に、ロボットシステム100は、載置予定のオブジェクトが、下の1つまたは複数のオブジェクト(すなわち、下位レイヤの2D載置プランのオブジェクト)から張り出すオブジェクト載置位置を導出することができる。たとえば、ロボットシステム100は、第1のオブジェクト(たとえば、図7Cの支持パッケージ774)が支持壁725に直接隣接し、オブジェクト−壁間隔726だけ離れている下位の/第1のレイヤの2Dプランを導出することができる。上位の/スタックされるレイヤの2Dプランを導出する際に、ロボットシステム100は、第2のオブジェクトの一部が第1のオブジェクトの周縁を越えて、支持壁725に向かって横方向に突出している状態で、第1のオブジェクトの上にスタック/載置される第2のオブジェクト(たとえば、スタックされるオブジェクト724)の候補位置801を導出することができる。ロボットシステム100は、支持壁725を利用して第2のオブジェクト載置を支持するための候補位置801を導出し、有効性確認することができる。
ブロック1122において、説明用の例として、ロボットシステム100は、2D載置プランを導出する際に壁支持に関連する候補位置801を導出し得る。換言すれば、ロボットシステム100は、第2のオブジェクトが載置されると、オブジェクトが支持壁725に直接接触し、それによって支持される、第2のオブジェクト(たとえば、スタックされるオブジェクト724)の位置を導出することができる。ロボットシステム100はさらに、オブジェクトがコンテナ輸送中にずれた場合に、オブジェクトが支持壁725に接触し、それによって支持され得るように、支持壁725から閾値距離未満だけ離れた第2のオブジェクトの位置を導出することができる。候補位置801は、第2のオブジェクトを載置するための離散化コンテナモデル内とすることができる。候補位置801は、第2のオブジェクトが、第1のオブジェクトの周縁(複数可)を越えて横方向に突出し(たとえば、第1のオブジェクトから張り出し)、支持壁725に向かって横方向に突出するようなものとすることもできる。
ブロック1124において、ロボットシステム100は、候補位置801の1つまたは複数の属性を推定することができる。換言すれば、ロボットシステム100は、第2のオブジェクトを候補位置801に載置したことによる、起こりそうな物理的な結果を計算することができる。ロボットシステム100は、第1のオブジェクトモデルを第1の載置位置に載置し、第2のオブジェクトモデルを候補位置に載置することに基づいて、1つまたは複数の属性を推定することができる。
ブロック1132において、ロボットシステム100は、複数張り出しシナリオ用の図7の結合オブジェクト推定732を導出し得る。複数張り出しシナリオは、図7Cの中間オブジェクト799が下位のオブジェクトから張り出すことを含むことができ、候補位置801は中間オブジェクト799またはその上のオブジェクトから張り出す。いくつかの実施形態では、ロボットシステム100は、下の計画されたオブジェクトから張り出す載置位置を追跡することができる。追跡されたステータスを使用して、ロボットシステム100は、候補位置801が下の計画されたオブジェクトから張り出し、下の1つまたは複数の計画された位置も他のオブジェクトから張り出す場合を判定することができる。
候補位置801が複数張り出しシナリオに対応する場合、ロボットシステム100は、候補位置801及び最下位の推定された張り出し位置に基づいて、結合オブジェクト推定732を導出し得る。ロボットシステム100は、候補位置801に関連する1つまたは複数の属性を推定するための結合オブジェクト推定732を導出することができる。ロボットシステム100は、スタック/処理されるオブジェクト(たとえば、上のパッケージ772)のオブジェクトモデルを候補位置801に載置し、中間オブジェクト799のオブジェクトモデルを含む、候補位置801の下に載置するように計画されたオブジェクトモデルを載置することに基づいて、結合オブジェクト推定732を導出し得る。いくつかの実施形態では、ロボットシステム100は、載置されたオブジェクトモデルのセットの最外面/エッジと一致するかまたはこれらを含む輪郭を導出することに基づいて、結合オブジェクト推定732を導出し得る。したがって、ロボットシステム100は、張り出しているスタックされたオブジェクトのセットを1つのオブジェクトとして表すモデルまたは推定(estimate)を導出し得る。
ブロック1134において、ロボットシステム100は、実効支持及び/または張り出し寸法を計算し得る。たとえば、ロボットシステム100は、計画された位置において、たとえば上のパッケージ772及び支持パッケージ774などのスタックされたオブジェクトのオブジェクトモデル間で重なる離散化単位602の数をカウントすることに基づいて、図7Cの実効支持795を計算し得る。複数張り出しシナリオの場合、ロボットシステム100は、候補位置801における上のパッケージ772のオブジェクトモデルと、候補位置801の下に載置するように計画されたオブジェクトのモデルとの重なりに基づいて、実効支持795を計算し得る。いくつかの実施形態では、ロボットシステム100は、実効支持795を、候補位置801のモデルと、下のモデル、たとえば、支持壁725から最も遠い支持オブジェクトとの重なりの最小量として計算し得る。他の実施形態では、ロボットシステム100は、実効支持795を、上のオブジェクトと一番下のオブジェクトと重なりとして計算し得る。さらに他の実施形態では、ロボットシステム100は、実効支持795を、結合オブジェクト推定732と、下の1つまたは複数のオブジェクトとの重なりとして計算し得る。
また、ロボットシステム100は、一番下のオブジェクトモデルの周縁を越えて支持壁725に向かって延在する上のオブジェクトモデルの離散化単位602の数をカウントすることに基づいて、張り出し寸法を計算し得る。いくつかの実施形態では、ロボットシステム100は、実効支持795から離れたままの上のオブジェクトモデルの部分(たとえば、離散化単位602の数)に基づいて、張り出し寸法を計算し得る。
ブロック1136において、ロボットシステム100は、候補位置における上のオブジェクトモデルのCoM位置782を推定し得る。いくつかの実施形態では、ロボットシステム100は、オブジェクトモデル内の、及び/またはマスターデータ252からの所定の情報にアクセスすることに基づいて、CoM位置782を推定し得る。また、いくつかの実施形態では、ロボットシステム100は、CoM位置をオブジェクトモデルの中間部分として推定し得る。
ロボットシステム100はさらに、CoM位置782と、下のオブジェクトとの間の関係を導出し得る。たとえば、ロボットシステム100は、支持パッケージ774の周縁に対する上のパッケージ772のCoM位置482を特定することができる。
複数張り出しシナリオの場合、ロボットシステム100は、結合オブジェクト推定732について、図7Cの結合基準位置734を導出し得る。ロボットシステム100は、結合オブジェクト推定732の横方向のエリア/寸法にわたるスタックされたオブジェクトのセットのCoM位置782を結合することに基づいて、結合基準位置734を導出し得る。ロボットシステム100は、オブジェクトの重みと、横方向のエリア/寸法にわたる対応するCoM位置782とに応じて、加重平均または重み分布を計算することに基づいて、CoM位置782を結合し得る。
ブロック1138において、ロボットシステム100は、候補位置801のピボット位置793を推定し得る。ロボットシステム100は、ピボット位置793を、スタッキングシナリオに従って最大の高さを有する支持パッケージ774の一部として推定し得る。支持パッケージ774の複数の部分が同じ高さ値または3D状態を有する場合、ロボットシステム100は、ピボット位置793を、支持壁725に最も近い部分(複数可)として推定することができる。したがって、ロボットシステム100は、ピボット位置を支持パッケージ774の周縁として推定し得る。
ブロック1140において、ロボットシステム100は、候補位置801に基づいてずれた姿勢を導出し得る。たとえば、候補位置801が、支持壁725から離れた(すなわち、直接接触しない)上のパッケージ772を有する場合、ロボットシステム100は、上のオブジェクトモデルを候補位置801から支持壁725に向けてずらすことに基づいて、ずれた姿勢を導出することができる。ロボットシステム100は、モデルが支持壁725に接触するまで、上のオブジェクトモデルを横方向にずらすことができる。また、ロボットシステム100は、ピボット位置を中心に上のオブジェクトモデルを回転させることに基づいて、ずれた姿勢を導出することができる。ロボットシステム100は、CoM位置782が支持パッケージ774の上にある場合、回転した姿勢を無視または否認することができる。ロボットシステム100は、CoM位置782が支持パッケージ774の周縁と支持壁725との間にある場合、回転した姿勢を維持することができる。ずれた姿勢は、たとえばコンテナの輸送中に、上のパッケージ772が候補位置801からずれること、及び/または支持壁725にもたれることを表すことができる。
ブロック1126において、ロボットシステム100は、上のパッケージ772を候補位置801に載置するための、図9Aの進入路901を導出することができる。ロボットシステム100は、上のオブジェクトモデルとグリッパモデルとの組み合わせを導出することに基づいて、進入路901を導出することができる。いくつかの実施形態では、ロボットシステム100は、図5Cの係合状態のインターフェース高534に応じて調整することに基づいて、モデルの組み合わせを導出することができる。ロボットシステム100は、結合モデルを候補位置801に載置することに基づいて、進入路901を導出することができる。したがって、ロボットシステム100は、結合モデルをコンテナモデル及び/または他のオブジェクトモデルに重ねることができる。
いくつかの実施形態では、ロボットシステム100は、図9Cの横方向延在レーン912を識別することに基づいて、進入路901を導出することができる。上述のように、ロボットシステム100は、結合モデルの周縁/点からロボットユニットの計画された位置に向かって横線を延在することに基づいて、横方向延在レーン912を識別することができる。いくつかの実施形態では、ロボットシステム100は、所定の間隙距離に応じてレーン912を広げることができる。
横方向延在レーン912を使用して、ロボットシステム100は、1つまたは複数の潜在的な障害物を識別することができる。たとえば、ロボットシステム100は、潜在的な障害物を、図9Aの先行オブジェクト902(たとえば、上のパッケージ772の前に載置するように計画されたオブジェクト)及び/またはレーン912に重なる支持壁725として識別することができる。換言すれば、ロボットシステム100は、評価される高さにおいて、横方向延在レーン912が1つまたは複数の潜在的な障害物に重なるか否かを判定することができる。
説明用の例として、ロボットシステム100は、ブロック1142に示すように異なる高さのレーン912を段階的に識別することにより、進入路901を導出し、ブロック1144に示すようにレーンの潜在的な障害物を反復的に識別することができる。換言すれば、ロボットシステム100は、レーン912が少なくとも1つの潜在的な障害物に重なる場合、進入増分903に従って横方向延在レーン912の高さを反復的に増加させることができる。したがって、ロボットシステム100は、横方向延在レーン912が全ての潜在的な障害物をクリアする高さを特定することができる。ロボットシステム100は、特定された高さに基づいて、図9Aの経路セグメント904及び/または図9Aの最終セグメント906を導出することができる。このようにして、ロボットシステム100は、上のパッケージ772の転置をシミュレートするための、逆順の(たとえば、候補位置801から開始点までの)進入路を導出することができる。横方向延在レーン912は、候補位置801までの横方向の移動中の、エンドエフェクタ304及び上のパッケージ772によって占有されるスペースに対応することができる。
ブロック1128において、ロボットシステム100は、オブジェクト載置の候補位置801を有効性確認することができる。ロボットシステム100は、パッキングプラン700用の載置位置を導出する際に、候補位置801を有効性確認し得る。ロボットシステム100は、対応するルール/閾値に従って推定された属性を評価することに基づいて、候補位置801を有効性確認することができる。いくつかの実施形態では、ロボットシステム100は、支持壁に直接隣接するかまたは支持壁に接触する候補位置801(たとえば、コンテナ/壁の1つまたは複数の境界に重なる候補位置801のオブジェクトモデルの1つまたは複数の周辺境界)を識別することができる。識別された候補位置801について、ロボットシステム100は、対応するルールに従って有効性確認することができる。たとえば、ロボットシステム100は、垂直な向きのコンテナ部分との所定の関係に従ってオブジェクトを載置するための1つまたは複数の要件を表す図7Cの壁支持ルール794及び/または他の関連するルール(たとえば、図7Cの傾き支持ルール796及び/または図7Cの複数張り出しルール798)を推定された属性が満たす場合に、候補位置801を有効化することができる。
たとえば、ロボットシステム100は、実効支持795(たとえば、重なったピクセルの数)が、コンテナ壁に直接隣接して載置されたオブジェクトに関して図7の重なり要件778を満たす、及び/またはコンテナ壁に接触して載置されたオブジェクトに関して壁支持ルール794を満たすと判定したことに基づいて、候補位置801を有効化することができる。また、ロボットシステム100は、張り出し寸法が、コンテナ壁に直接隣接して載置されたオブジェクトに関して図7Cの張り出し要件780を満たす、及び/またはコンテナ壁に接触して載置されたオブジェクトに関して壁支持ルール794を満たすと判定したことに基づいて、候補位置801を有効化することができる。さらに、ロボットシステム100は、たとえば、CoM位置782が、支持パッケージ(複数可)774のモデルの周縁内にある、そのような周縁から閾値距離内にある、及び/または1つまたは複数の支持パッケージ(複数可)774のCoM位置から閾値距離内にある場合(たとえば、支持パッケージが、他の下位のオブジェクトの上にスタックされるよう計画されている場合)に、CoM位置782がCoMオフセット要件784を満たすと判定したことに基づいて、候補位置801を有効化することができる。コンテナ壁に直接隣接して載置されるオブジェクトの候補位置801を有効性確認するために、ロボットシステム100は、追加的または代替的には、1つまたは複数のずれた姿勢(たとえば、図7の傾き角度797)が傾き支持ルール796を満たす場合に、候補位置801を有効化し得る。
いくつかの実施形態では、(たとえば、ブロック1132に関して)上記で論じたように、ロボットシステム100は、候補位置801に関連するかまたはそれによって生じる複数張り出し状況を識別することができる。複数張り出し状況に関連する候補位置801を有効性確認するために、ロボットシステム100は、複数張り出しルール798に従って、候補位置801(たとえば、一番下の、最もオフセットした、及び/または他の適格な下の支持オブジェクトに対する関連する実効支持795)を評価することができる。代替的または追加的には、ロボットシステム100は、水平オフセットルール776、壁支持ルール794、及び/または上述の1つまたは複数の他のルールに従って結合オブジェクト推定732を評価することに基づいて、有効性確認し得る。したがって、ロボットシステム100は、1つまたは複数の計算された属性が対応するルール及び要件を満たす場合に、複数張り出し状況に関連する候補位置801を有効化することができる。
ロボットシステム100は、対応する進入路901に基づいて、候補位置801を有効性確認することもできる。ロボットシステム100は、上述のように遮られない進入路901に対応する候補位置801を有効化することができる。いくつかの実施形態では、ロボットシステム100は、全ての潜在的な障害物910を回避する候補位置801からの/候補位置801への進入路901の導出に成功できない場合に、候補位置801を不適格とみなすことができる。上述のように、ロボットシステム100は、進入路901に関して導出/有効性確認する際に、グリッパモデルと、対応するオブジェクトモデルとの組み合わせを、任意の把持関連の調整と共に(たとえば、係合状態のインターフェース高534と、延伸状態のインターフェース高532との差を考慮して)利用することができる。
いくつかの実施形態では、ロボットシステム100は、対象オブジェクト112の可能な載置位置のセットを反復的に分析し得る。結果として、ロボットシステム100は、同じ対象オブジェクト112に対して複数の有効性確認された位置を生成し得る。そのようなシナリオでは、ロボットシステム100は、1つの有効性確認された位置をオブジェクトの載置位置として選択するように構成され得る。たとえば、ロボットシステム100は、有効性確認処理の間に対応する位置の載置スコアを計算し、最大のスコアを有する位置を選択し得る。説明用の例として、ロボットシステム100は、より大きい実効支持795に対応する位置に対してより高い載置スコアを計算し得る。また、説明用の例として、ロボットシステム100は、より短い進入路に関連する位置に対してより高い載置スコアを計算し得る。
さらなる説明用の例として、載置されたパッケージが1つまたは複数の処理済みのパッケージの上に/上を覆ってスタックされている場合、ロボットシステム100は、上述の重なり要件778、張り出し要件780、垂直オフセットルール790、CoMオフセット要件784、またはそれらの組み合わせに違反する載置組み合わせ744のいずれかを排除することができる。1つまたは複数の実施形態では、ロボットシステム100は、たとえば、重ねられたパッケージにおける支持重量を推定し、対応する脆性レーティングと比較することによって、処理済みのパッケージの下の1つまたは複数のパッケージの脆性レーティングに違反する載置組み合わせ744のいずれかを排除することができる。ロボットシステム100は、残りの組み合わせに基づいて載置位置を選択し得る。
いくつかの実施形態では、ロボットシステム100は、方法1100またはその一部をオフラインで、たとえば、注文及び出荷目録を受け取ったとき、及び対象のオブジェクトのセットがリアルタイム処理/載置に利用可能になる前に、実施し得る。代替的または追加的には、ロボットシステム100は、方法1100またはその一部をリアルタイムで実施し得る。たとえば、ロボットシステム100は、コンテナが図10の想定外の特徴1002のうちの1つまたは複数を有する場合にパッキングプランを再導出するための方法1100の一部を実施し得る。ロボットシステム100は、タスク位置116にあるコンテナを表す画像データ(たとえば、上面視画像1052及び/または側面視画像1054に対応するセンサ出力1000であり、全て図10に図示している)を取得し得る。ロボットシステム100は、取得された画像データを、たとえば、その中に描かれたエッジを検出し、分析することに基づいて分析して、想定外の特徴1002の存在を検出または特定することができる。以下で詳細に説明するように、ロボットシステム100は、想定外の特徴1002に関して既存のパッキングプラン700を評価し、既存のパッキングプラン700を調整/有効性確認し得る。
既存のパッキングプラン700への調整が利用可能でないか、または有効性確認することができない場合、ロボットシステム100は、方法1100の一部を実施し得る。たとえば、ロボットシステム100は、既存のパッキングプラン700に関連するオブジェクトに対してパッケージグループ(ブロック1106)及び/または処理順序(ブロック1108)を再決定することができる。いくつかの実施形態では、ロボットシステム100は、パッケージグループ及び/または処理順序の決定済みのインスタンスにアクセスし得る。結果的に得られる情報によって、ロボットシステム100は、コンテナモデル(複数可)の代わりに取得された画像(複数可)を使用して新たな2Dプランを再導出することができる。したがって、ロボットシステム100は、想定外の特徴1002を考慮し、既存のパッキングプラン700に置き換わるパッキングプランの新たなインスタンスを導出することができる。
ブロック1116において、ロボットシステム100は、利用可能パッケージ742をコンテナ(複数可)内に載置するためのパッキングプラン700(リアルタイム処理またはオフライン処理から得られるもの)を実施することができる。ロボットシステム100は、パッキングプラン700に従って、1つまたは複数のモーションプラン、アクチュエータコマンド/設定、またはそれらの組み合わせを、対応するデバイス/ユニット(たとえば、図1の転置ユニット104、図2のアクチュエーションデバイス212、図2のセンサ216など)に伝達することに基づいて、パッキングプラン700を実施することができる。ロボットシステム100はさらに、デバイス/ユニットにおいて伝達された情報を実行して、利用可能パッケージ742をソース位置から目的地コンテナに転置することに基づいて、パッキングプラン700を実施することができる。したがって、ロボットシステム100は、パッキングプラン700における対応する3D載置位置に従って利用可能パッケージ742を載置することができる。
図12は、本技術の1つまたは複数の実施形態による図1のロボットシステム100を動作させる第2の例示的な方法1200の流れ図である。いくつかの実施形態では、方法1200は、図11のブロック1116に対応する処理のサブルーチンとして実装することができる。たとえば、図7Bの利用可能パッケージ742をコンテナ内に載置するためのリアルタイム動作中またはその開始時に、ロボットシステム100は、ブロック1201に示すように、1つまたは複数の事前計算されたパッキングプラン(たとえば、図7Aのパッキングプラン700)を取得し得る。ロボットシステム100は、リアルタイムパッキング動作を開始する前に(たとえば、オフライン計算によって)導出されたパッキングプラン700を取得し得る。ロボットシステム100は、パッキングプラン700を記憶デバイス(たとえば、図2の記憶デバイス204及び/または他のコンピュータ可読媒体)に記憶し得る。ロボットシステム100は、既存のパッキングプラン700を、記憶デバイスから読み出すことにより取得するかまたはこれにアクセスすることができる。
ブロック1202において、ロボットシステム100は、ブロック1202に示すように、コンテナを描いた1つまたは複数の画像(たとえば、上面視画像1052及び/または側面視画像1054であり、共に図11に図示している)を取得し得る。上述のように、ロボットシステム100は、図1のタスク位置116に関連付けられたセンサ216のうちの1つまたは複数を介して(たとえば、図3に示す上面視センサ310及び/または側面視センサ312)を介して画像をリアルタイムに取得することができる。したがって、ロボットシステム100は、利用可能パッケージ742またはそのサブセットを受け取るように指定されたコンテナ(たとえば、図4A〜図4Dに示すカート410またはケージ420)の1つまたは複数のリアルタイム画像を取得し得る。ロボットシステム100は、利用可能パッケージ742をタスク位置116に配置されたコンテナ内に載置するためのリアルタイム動作中またはその開始時に、1つまたは複数の画像を取得し得る。換言すれば、ロボットシステム100は、コンテナを描いた画像を、任意のオブジェクトがその中に載置される前に、あるいは1つまたは複数のオブジェクトを載置した後に、取得し得る。
判定ブロック1204において、ロボットシステム100は、リアルタイム画像(複数可)に基づいて、コンテナの1つまたは複数の物理的な属性が想定通りであるか否かを判定することができる。ロボットシステム100は、取得されたリアルタイム画像データを分析して、描かれたコンテナの1つまたは複数の物理的な属性を識別することができる。たとえば、ロボットシステム100は、画像データに描かれた2D及び/または3Dエッジを検出するためにエッジ検出メカニズム(たとえば、Sobelフィルタ)を実装することができる。ロボットシステム100はさらに、2つ以上のエッジセグメントを接続するコーナー及び/または接合点を識別することができる。エッジ及びコーナー/接合点に基づいて、ロボットシステム100は、エッジで囲まれる領域を、コンテナ及び/またはその一部などの構造に対応するものとして識別することができる。ロボットシステム100はさらに、タスク位置116における指定されたコンテナ姿勢(たとえば、位置及び/または向き)に対応する所定の閾値及び/またはテンプレート、コンテナの想定サイズ、コンテナの想定寸法、許容誤差尺度のセット、及び/またはコンテナの他の既知のもしくは想定される物理的特質に基づいて、コンテナ及び/またはその一部の推定を検証することができる。
画像データに描かれたコンテナを推定または認識する際に、ロボットシステム100は、コンテナの1つまたは複数の物理的な属性が想定通りであるか否かを判定し得る。たとえば、ロボットシステム100は、コンテナ壁(たとえば、側壁及び/または後壁)の位置、形状、及び/または向きが想定通りであるか否かを判定することができる。ロボットシステム100は、推定されたコンテナまたはその一部をテンプレートと比較することに基づいて、コンテナの状態を特定し得る。追加的または代替的には、ロボットシステム100は、コンテナ及び/またはその一部の推定に関連する信頼スコアを計算することができる。ロボットシステム100は、対応する部分がテンプレートによって定義された閾値範囲内にある場合、及び/または対応する信頼スコアが期待閾値を満たす場合に、1つまたは複数の物理的な属性(たとえば、1つまたは複数のコンテナ壁のステータス)が想定通りであるか否かを検出することができる。ロボットシステム100は、対応する部分がテンプレートによって定義された閾値範囲を超える場合、及び/または対応する信頼スコアが期待閾値を満たすことができない場合に、想定外の状況(たとえば、コンテナあるいはその1つまたは複数の支持壁に関連するエラー状況)を検出することができる。想定外の状況の検出は、図10の想定外の特徴1002の検出を表すことができる。
ブロック1206において、ロボットシステム100は、パッキングプランの現在の/アクティブなインスタンスを実施することができる。たとえば、タスク位置116にあるコンテナが想定される状況に対応する場合、ロボットシステム100は、パッキングプラン700の既存のインスタンス(すなわち、初期/オフライン計算後に調整されていないもの)を実施することができる。また、以下で詳細に説明するように、ロボットシステム100は、パッキングプランの調整されたインスタンスを実施することができる。ロボットシステム100は、パッキングプラン700に従って、(たとえば、コマンド/設定をロボットユニットに送信し、ロボットユニットにおいてコマンド/設定を実行することにより)ロボットユニットを制御することに基づいて、パッキングプランを実施することができる。したがって、ロボットシステム100は、パッキングプラン700に従って利用可能パッケージ742をコンテナ内の対応する載置位置に載置することができる。
タスク位置116にあるコンテナが想定外の状況に対応する場合、たとえばブロック1208に示すように、ロボットシステム100は、実際のコンテナモデルを動的に生成し得る。換言すれば、ロボットシステム100は、実際のコンテナのリアルタイム状態(たとえば、想定外の特徴1002)を考慮したコンテナモデルを動的に生成することができる。後続の処理/分析のために、ロボットシステム100は、コンテナの想定される状況を表すコンテナモデル(たとえば、図6のコンテナフットプリントモデル622及び/または図6のコンテナ側面モデル624)の代わりに実際のコンテナモデルを使用することができる。
ロボットシステム100は、リアルタイム画像データに基づいて実際のコンテナモデルを動的に生成することができる。たとえば、ロボットシステム100は、図6の離散化単位602に従って上面視画像1052及び/または側面視画像1054を分割することに基づいて、実際のコンテナモデルを動的に生成することができる。ロボットシステム100は、リアルタイム画像内で検出されたコンテナについて図6の基準位置604(たとえば、中心部及び/または所定のコーナー)を識別または推定することができる。ロボットシステム100は、推定された基準位置604と所定の関係を有する1つまたは複数の検出されたエッジ(たとえば、基準位置と一致するエッジ)が、座標系及び対応するスペースの所定の基準方向/軸と位置合わせされるように、画像を位置合わせまたは向き変更することができる。基準位置及び軸の位置合わせに基づいて、ロボットシステム100は、離散化単位602の寸法に基づいて分割を特定することによって、リアルタイム画像(複数可)をピクセル化することができる。
ブロック1210において、ロボットシステム100は、タスク位置116にあるコンテナ内の実際のパッキングエリア/スペースを計算することができる。ロボットシステム100は、推定されたコンテナ壁の間の載置ゾーンを推定することができる。たとえば、ロボットシステム100は、壁の1つまたは複数の所定の物理的特質(たとえば、サイズ、位置、向き、形状、色など)に基づいて、画像データ内の部分をコンテナ壁として識別または推定することができる。ロボットシステム100は、壁の間の画像データ内の部分を実際のコンテナの載置ゾーンとして識別することができる。いくつかの実施形態では、ロボットシステム100は、載置ゾーンを、座標系軸のうちの1つまたは複数と位置合わせされた、コンテナの中心部に最も近いコンテナ壁/コンテナ底部のエッジと一致する長方形形状のエリアとして識別することができる。換言すれば、ロボットシステム100は、載置ゾーンを、コンテナ壁の間のエリア/スペースに対する、軸平行バウンディングボックスのインスタンスとして識別することができる。
ロボットシステム100はさらに、載置ゾーンを分析して、実際のパッキングエリア/スペースを計算することができる。たとえば、ロボットシステム100は、載置ゾーンのサイズ及び/または寸法のセットを計算することができる。いくつかの実施形態では、ロボットシステム100は、離散化単位602に基づいてサイズ及び/または寸法のセットを計算し得る。したがって、ロボットシステム100は、実際のパッキングエリア/スペースを、載置ゾーン内の離散化単位602の総量及び/または座標系軸に沿った長さ(たとえば、離散化単位602の数)として表し得る。サイズ/寸法を計算する際に、ロボットシステム100は、載置ゾーンを越えて延在する離散化単位602(すなわち、コンテナ壁またはコンテナ底部の外側のエリアに重なるかまたはこれらを部分的に含む離散化単位602)を切り下げるかまたは無視することができる。
判定ブロック1212において、ロボットシステム100は、計算されたエリア/スペースが、パッキングエリア/スペースの1つまたは複数の最小閾値要件より大きいか否かを判定することができる。たとえば、ロボットシステム100は、載置ゾーンのサイズ/寸法を、全てのコンテナに一般的に適用可能な最小閾値と比較することができる。追加的または代替的には、ロボットシステム100は、そのサイズを既存のパッキングプラン700のサイズと比較することができる。
利用可能載置エリア/スペースが比較された閾値(複数可)を満たすことができない場合、たとえばブロック1214に示すように、ロボットシステム100は、タスク位置116にあるコンテナに再度積載するかまたはこれを交換することができる。たとえば、タスク位置116にあるコンテナの計算された載置エリア/スペースが最小閾値以下である場合、ロボットシステム100は、輸送ユニット/ロボット及び/または対応するシステムと通信して、(1)タスク位置116にあるコンテナを除去する、及び/または(2)新たな/異なるコンテナをタスク位置116に載置することができる。新たなコンテナがタスク位置116に載置される場合、ロボットシステム100は、ブロック1202に示すように、上述のように、コンテナ画像を取得することができる。
利用可能載置エリア/スペースが最小閾値を満たす場合、たとえばブロック1216において、ロボットシステム100は、パック輪郭を計算することができる。たとえば、ロボットシステム100は、既存のパッキングプラン700に基づいてAABB730を導出することができる。ロボットシステム100は、AABB730を、載置するように計画されたオブジェクトのセットの1つまたは複数の物理的な属性の表現として導出することができる。ロボットシステム100は、指定された平面形状(たとえば、長方形)に従ってAABB730を導出することができる。ロボットシステム100は、指定された平面形状を座標系軸及びパッキングプラン700の周辺点(たとえば、最外部の1つ)と位置合わせすることができる。ロボットシステム100は続いて、指定された平面形状の他の/位置合わせされていないエッジを、パッキングプラン700の他の周辺点と一致するように延在/移動することができる。いくつかの実施形態では、たとえば、ロボットシステム100は、座標系軸に沿ったパッキングプラン700の全体寸法を表す長方形を計算することができる。したがって、ロボットシステム10は、既存のパッキングプラン700の最外点と一致するAABB730を計算することができる。
ブロック1218において、ロボットシステム100は、候補パック載置位置を導出することができる。ロボットシステム100は、コンテナ内の既存のパッキングプランの載置を調整するための候補パック位置を導出することができる。いくつかの実施形態では、ロボットシステム100は、候補パック位置を実際のコンテナモデル(たとえば、コンテナの載置エリア)のコーナーとして導出することができる。ロボットシステム100は、AABB730のコーナーが実際のコンテナモデルのコーナーと揃うような、候補パック位置を導出することができる。たとえば、ロボットシステム100は、所定のパターン/シーケンスに従ってコーナーを選択することができる。選択されたコーナーに基づいて、ロボットシステム100は、AABB730及び実際のコンテナモデルの対応するコーナーが揃うまたは一致するような、AABB730及び/または実際のコンテナモデルの基準点の座標/オフセットを計算することができる。
したがって、ロボットシステム100は、対応するコーナーが揃えられるように候補パック位置に従ってAABB730を実際のコンテナモデルに重ねることができる。判定ブロック1220において、ロボットシステム100は、候補パック載置位置で重ねられたパック輪郭が利用可能載置エリア/スペース内に収まるか否かを判定することができる。ロボットシステム100は、AABB730が実際のコンテナモデルの少なくとも1つの周縁に重なる及び/またはこれを越えて延在するか否かに応じて、適合ステータスを特定することができる。いくつかの実施形態では、ロボットシステム100は、AABB730の寸法(たとえば、座標系軸に沿った離散化単位602の数)を計算し、計算された寸法を載置ゾーンの寸法と比較することに基づいて、適合ステータスを特定することができる。
候補パック載置位置におけるパック輪郭が利用可能な載置エリア/スペース内に収まらない場合、たとえば判定ブロック1222に示すように、ロボットシステム100は、終了条件に達したか否かを判定することができる。たとえば、ロボットシステム100は、全ての可能な候補パック載置位置(たとえば、実際のコンテナモデルに関連する全てのコーナー及び/または他の利用可能な位置)が分析/処理済みであるか否かを判定することができる。ロボットシステム100が終了条件に達していないと判定した場合、ロボットシステム100は、ブロック1218において他の候補パック載置位置を導出することができる。したがって、ロボットシステム100は、AABB730が実際のコンテナモデルに収まっていることを適合ステータスが示すか、または終了条件に達するまで、可能な候補パック載置位置を反復的に処理し、分析することができる。
候補パック載置位置におけるパック輪郭が利用可能な載置エリア/スペースに収まる場合、たとえば判定ブロック1224に示すように、ロボットシステム100は、調整されたパック載置を分析することができる。ロボットシステム100は、有効性確認処理の一部として、調整されたパック載置(たとえば、適合する候補パック載置位置に応じてずらされたパッキングプラン700)を分析することができる。たとえば、ロボットシステム100は、1つまたは複数の結果的に得られた進入路及び/または1つまたは複数のオブジェクトについての支持要件に基づいて、調整されたパック載置を分析することができる。
いくつかの実施形態では、ロボットシステム100は、既存のパッキングプラン700が、コンテナの垂直な壁(たとえば、図7Aの支持壁725)によって支持されるように指定された対応するオブジェクトを載置するための1つまたは複数の載置位置を含むか否かを判定することができる。たとえば、ロボットシステム100は、パッキングプラン700の最初の導出中に、壁で支持される位置を指示することができる。したがって、ロボットシステム100は続いて、パッキングプラン700及び所定の指示にアクセスすることに基づいて、既存のパッキングプラン700が1つまたは複数の壁で支持される載置位置を含むか否かを判定することができる。代替的または追加的には、ロボットシステム100は、既存のパッキングプラン700を想定コンテナモデル(たとえば、想定外の特徴1002を考慮していないコンテナフットプリントモデル622及び/またはコンテナ側面モデル624)に重ねることができる。ロボットシステム100は、既存のパッキングプラン700の一部が、想定コンテナモデルのコンテナ壁部分と一致するかまたは所定の距離内にある場合に、既存のパッキングプラン700が1つまたは複数の壁で支持される載置位置を含むと判定することができる。
ロボットシステム100は、既存のパッキングプラン700内の識別された壁で支持される載置位置について更新された載置位置を決定することができる。たとえば、ロボットシステム100は、既存のパッキングプラン700と、適合する候補パック載置位置との差を表す並進パラメータ(たとえば、1つまたは複数の座標系軸に沿った直線変位、及び/またはそれらを中心とする回転)を計算することができる。ロボットシステム100は、並進パラメータを識別された壁で支持される載置位置に適用して、更新された載置位置を決定することができる。以下でさらに説明するように、ロボットシステム100は、有効性確認の目的で壁支持に関して更新された載置位置を分析することができる。
いくつかの実施形態では、ロボットシステム100は、パッキングプラン700の可能な調整された位置(複数可)及び/またはその載置位置に対応する、図9Aの進入路901の1つまたは複数の更新されたインスタンスを導出することができる。進入路901の更新されたインスタンスは、既存のパッキングプラン700を適合する候補パック位置にずらすことに対応する、調整された位置への対応するオブジェクトの載置に関連するモーションプランを表すことができる。ロボットシステム100は、有効性確認分析のために1つまたは複数のオブジェクト載置位置を選択することができる。たとえば、ロボットシステム100は、有効性確認分析のために、既存のパッキングプラン700に従って最初に載置されたオブジェクトの載置位置を選択することができる。追加的または代替的には、ロボットシステム100は、有効性確認分析のために、既存のパッキングプラン700の1つまたは複数の外周エッジまたはコーナーを形成する1つまたは複数の載置位置を選択することができる。選択された載置位置(複数可)について、ロボットシステム100は、(たとえば、図11のブロック1126に関して)上述したように、対応する進入路を導出することができる。
判定ブロック1226において、ロボットシステム100は、調整されたパック載置が有効であるか否かを判定することができる。ロボットシステム100は、適合ステータスに基づいて候補パック載置位置を有効性確認することができる。換言すれば、ロボットシステム100は、予備の有効性確認/適格性確認のために適合ステータスを使用することができる。したがって、ロボットシステム100は、AABB730が実際のコンテナモデルに収まることにつながる任意の候補パック載置位置を排除することができる。ロボットシステム100はさらに、適合する候補パック載置位置を、たとえば、対応する更新された進入路及び/または更新された壁支持位置に基づいて、有効性確認することができる。
いくつかの実施形態では、ロボットシステム100は、垂直な向きの構造からの支持を分析するように構成される1つまたは複数のルール(たとえば、壁支持ルール794、傾き支持ルール796、複数張り出しルール798、及び/または図7Cに示す他のルール/要件)に従って、更新された壁で支持される載置位置を有効性確認することに基づいて、適合する候補パック位置を有効性確認することができる。ロボットシステム100は、(たとえば、図11のブロック1110及び/またはブロック1128に関して)上述したルールに従って有効性確認することができる。ロボットシステム100は、更新された壁で支持される載置位置のうちの1つまたは複数もしくは全てが1つまたは複数の壁支持関連ルールを満たす場合に、適合する候補パック位置を有効化することができる。追加的または代替的には、ロボットシステム100は、更新された進入路の導出に成功したことに基づいて、適合する候補パック位置を有効化することができる。換言すれば、ロボットシステム100は、図9Aの潜在的な障害物910を回避する選択された基準位置(複数可)についての進入路901の更新されたインスタンスのうちの1つまたは複数もしくは全ての導出に成功したことに基づいて、適合する候補パック位置を有効化することができる。
ロボットシステム100が候補パック載置位置を有効化した場合、たとえばブロック1228に示すように、ロボットシステム100は、既存のパッキングプラン700を調整することができる。ロボットシステム100は、有効化された候補パック載置位置に応じて、既存のパッキングプラン700のオブジェクト載置位置及び/または対応する進入路901(たとえば、モーションプラン)を調整することができる。たとえば、ロボットシステム100は、既存のパッキングプラン700と上述の適合する候補パック載置位置との差、及びその差を表す対応する並進パラメータを計算することができる。ロボットシステム100は、並進パラメータを既存のパッキングプラン700のオブジェクト載置位置を適用して、有効化されたパック載置位置に関連する調整/更新された載置位置を導出することができる。換言すれば、ロボットシステム100は、候補パック載置位置に応じて既存のパッキングプラン700及び対応する載置位置をずらすことができる。したがって、ロボットシステム100は、たとえば、(図11のブロック1110などに関して)上述した載置位置を導出するために使用される初期処理を繰り返すことなく、初期載置位置を調整する/ずらすことに基づいて、更新された載置位置を直接導出することができる。
代替的または追加的には、ロボットシステム100は、基準載置位置について進入路901の初期インスタンスと更新されたインスタンスとの間の差を計算することができる。たとえば、ロボットシステム100は、進入路901の初期インスタンスを調整して、有効化されたパック載置位置に対応するその更新されたインスタンスを生成するのに必要な差分ベクトルまたはパラメータを計算することができる。ロボットシステム100は、他のオブジェクト載置についての残りの進入路/モーションプランを、たとえば、差分ベクトル/そのパラメータをそれらに適用することにより、調整することができる。したがって、ロボットシステム100は、たとえば、パッキングプラン700の進入路901を導出するのに使用される初期処理を繰り返すことなく、差分ベクトル/パラメータに基づいて更新された進入路/モーションプランを直接導出することができる。
ロボットシステム100は、調整されたパッキングプランを実施することができる。たとえば、処理フローはブロック1206に移ることができ、ロボットシステム100は、パッキングプランの現在の/アクティブなインスタンス、たとえば、パッキングプラン700の調整されたインスタンスを実施することができる。したがって、ロボットシステム100は、オブジェクトのセットをコンテナ内に載置するための調整されたパッキングプランを実施することができる。
ロボットシステム100が候補パック載置位置を有効化することができない場合、ロボットシステム100は、たとえば判定ブロック1222に示すように、終了条件に達したか否かを判定することができる。上述のように、ロボットシステム100は、複数の候補パック載置位置を反復的に検討し得る。終了条件に達すると、たとえば、利用可能な/分析された候補パック載置位置のいずれもが、実際のパッキングエリア/スペース内に収まるAABB730を提供しない場合、ロボットシステムは、ブロック1230に示すように、解決策を実行し得る。いくつかの実施形態では、解決策を実行することは、ブロック1214に関して上述したように、タスク位置116にあるコンテナに再度積載することを含み得る。
いくつかの実施形態では、解決策を実行することは、動的なパック計画処理を含み得る。換言すれば、ロボットシステム100は、既存のパッキングプランを置き換えるための新たなパッキングプランを動的に再導出し得る。たとえば、ロボットシステム100は、想定外の特徴に関連するコンテナの新たなパッキングプランを導出するために、図11の方法1100またはその一部を実施することができる。動的な再導出のために、ロボットシステム100は、ブロック1232に示すように、コンテナ内に載置されるように最初に指定されたオブジェクトのセットと、そのようなオブジェクトを表すモデルとを識別し得る。ロボットシステム100は、タスク位置116にある実際のコンテナ内に載置するように最初に意図されたオブジェクトの一意のタイプ/カテゴリを識別することができる。ロボットシステム100はまた、識別された一意のオブジェクトタイプ/カテゴリを表すオブジェクトモデル(たとえば、図6に示すオブジェクトフットプリントモデル612及び/またはオブジェクト側面モデル614)を取得し得る。
ブロック1234において、ロボットシステム100は、オブジェクトグループ及び/または順序を取得し得る。いくつかの実施形態では、ロボットシステム100は、パッキングプランの最初の導出中に計算されたオブジェクトグループ/順序を記憶することができる。ロボットシステム100は、記憶された情報にアクセスすることにより、オブジェクトグループ及び/または順序を取得し得る。代替的または追加的には、ロボットシステム100は、(たとえば、図11のブロック1106及び/または1108に関して)上述したように、グループ/順序を再処理することができる。
ロボットシステム100は、結果的に得られる情報を処理して、たとえば、図11のブロック1110について上述したように、2Dプランの新たなインスタンスを導出することができる。導出のために、ロボットシステム100は、想定外の特徴1002を考慮していない想定コンテナモデルの代わりに、実際のコンテナモデルを使用することができる。
たとえば、ロボットシステム100は、識別されたオブジェクトのセットを載置するための候補位置を決定することができる。ロボットシステム100は、決定された候補位置に従って、オブジェクトモデルを実際のコンテナモデルに重ねることができる。ロボットシステム100は、上述の1つまたは複数の載置ルールに基づいて、重ねられたモデルを分析し、候補位置を有効性確認することができる。
結論
開示した技術の実施例の上記の詳細な説明は、網羅的なものではなく、開示した技術を上記で開示した厳密な形に限定するものでもない。開示した技術の具体例を例示の目的で上述しているが、当業者であれば理解するように、開示した技術の範囲内で様々な等価な修正が可能である。たとえば、処理またはブロックを所与の順序で提示しているが、代替的な実施態様は異なる順序のステップを有するルーチンを実行してもよく、または異なる順序のブロックを有するシステムを採用してもよく、一部の処理またはブロックを削除、移動、追加、細分化、結合、及び/または修正して、代替的な組み合わせまたは部分的な組み合わせを提供してもよい。これらの処理またはブロックのそれぞれは、種々の異なる方法で実施されてもよい。また、処理またはブロックは順番に実行されるように示している場合があるが、これらの処理またはブロックは代わりに並列に実行または実施されてもよく、または異なる時刻に実行されてもよい。さらに、本明細書に記載の任意の特定の数字は例にすぎず、代替的な実施態様は異なる値または範囲を採用してもよい。
これらの及び他の変更は、上記の詳細な説明に照らして、開示した技術に対して行うことができる。詳細な説明では、開示した技術の特定の例だけでなく、企図される最良の形態を説明しているが、上記の説明が文中でどれほど詳細に見えても、開示した技術は多くの方法で実践することができる。システムの詳細はその特定の実施態様において大幅に異なってもよく、本明細書で開示した技術によってなおも包含される。上述のように、開示した技術の特定の特徴または態様を説明する際に使用される特定の用語は、その用語が関連する開示した技術の任意の特定の特性、特徴、または態様に限定されるようにその用語が本明細書で再定義されることを意味するよう解釈されるべきではない。したがって、本発明は、添付の特許請求の範囲を除いて、限定されない。一般に、以下の特許請求の範囲で使用される用語は、上記の詳細な説明のセクションがそのような用語を明確に定義していない限り、開示した技術を本明細書で開示した具体例に限定するように解釈されるべきではない。
本発明の特定の態様を特定の請求項の形式で以下に提示するが、出願人は本発明の様々な態様を任意数の請求項の形式で企図している。したがって、出願人は、本出願または継続出願において、そのような追加の請求項の形式を追求するために本出願を提出した後に追加の請求を追求する権利を留保している。