(58)【調査した分野】(Int.Cl.,DB名)
前記イベントは、前記横方向に向いた交差基準に対応する線または平面に沿って送信された光信号を検出するように構成された交差センサからの出力である、請求項1に記載の方法。
前記プロファイルデータは、前記スタート位置にある前記物体の前記画像データに表された前記表面に直交する1つまたは複数の表面を表す二次元(2D)および/または三次元(3D)の画像データを含む、請求項3に記載の方法。
前記イベントは、解放トリガ高さより上に位置する前記横方向に向いた交差基準に対する前記認識されていない物体の前記進入または前記退出である、請求項5に記載の方法。
前記イベントを検出することは、前記認識されていない物体を前記スタート位置から持ち上げる前記動作に同時に対応する前記イベントを検出することを含む、請求項8に記載の方法。
前記最初の持ち上げを実施することに基づいて前記物体を表すデータを取得することは、前記エンドエフェクタに取り付けられた、または、前記エンドエフェクタと一体のセンサから、下向きの力の測定値を受信することを含み、
前記新しい登録データは、前記下向きの力の測定値に基づいた前記物体の重量を含む、請求項1に記載の方法。
前記最初の持ち上げを実施することに基づいて前記物体を表すデータを取得することは、前記エンドエフェクタに取り付けられた、または、前記エンドエフェクタと一体のセンサから、トルク測定値を表す前記データを受信することを含み、
前記新しい登録データは、前記トルク測定値に基づいた前記物体の推定質量中心(CoM)を含む、請求項1に記載の方法。
プロセッサ命令を記憶した有形で非一時的なコンピュータ読み取り可能媒体であって、前記プロセッサ命令は、ロボットシステムによって前記ロボットシステムの1つまたは複数のプロセッサを介して実行されると、前記ロボットシステムに、
スタート位置にある物体の表面を表す画像データを受信することと、
前記画像データと既知の物体を表す登録データとを比較することに基づいて、前記物体は認識されていない物体であると判断することと、
前記認識されていない物体を持ち上げるための最小実行可能領域を前記画像データに基づいて決定することと、
前記物体の前記表面を、当接している物体の1つまたは複数の表面から垂直方向に離し、且つ、前記最小実行可能領域に基づいて前記物体を垂直に移動させる最初の持ち上げ実施後、前記認識されていない物体を表すデータを取得することと、
前記最初の持ち上げの実施後に取得される前記データに基づいて、前記物体の辺を表す辺の長さの測定値を計算することと、
前記認識されていない物体をタスク位置に移動させる動作を実施することと、
前記動作を実施している間、交差基準高さにある横方向に向いた交差基準に対する前記認識されていない物体の進入または退出であるイベントと、対応するタイムスタンプとを検出することと、
前記イベントに対応し、且つ、エンドエフェクタの垂直位置を表すエンドエフェクタ高さを決定することと、
前記イベント、前記イベントに対応する前記エンドエフェクタ高さ、および/または、前記交差基準高さに基づいて、前記認識されていない物体の高さを計算することと、
前記認識されていない物体の新しい記録を表し、且つ、前記辺の長さの測定値、及び、前記認識されていない物体の前記高さを含む新しい登録データを作成することと、
を行わせる、有形で非一時的なコンピュータ読み取り可能媒体。
【発明を実施するための形態】
【0006】
自動パッケージ登録メカニズムを備えたロボットシステムのためのシステムおよび方法を本明細書に記載する。ある実施形態にしたがって構成されたロボットシステム(例えば、1つまたは複数の指定されたタスクを実行するデバイスを統合したシステム)は、(例えば、人間オペレータによる入力が殆どまたは全く無く)以前は知られていなかった、または、認識されていなかった物体(例えば、パッケージ、箱、ケース等)を自律的/自動的に登録することによって、使用性と柔軟性を向上させる。物体が認識されたか否かを判断するために、ロボットシステムは、スタート位置の物体に関するデータ(例えば、物体の露出面の1つまたは複数の画像)を取得し、既知のまたは予測される物体の登録データと比較できる。ロボットシステムは、比較されたデータ(例えば、比較された画像の一部)が、物体の1つに関して、登録データ(例えば、登録された表面画像の1つ)と一致する場合に、その物体は認識されていると判断できる。ロボットシステムは、比較データが既知または予測された物体の登録データと一致しない場合に、物体は認識されていないと判断できる。
【0007】
ある実施形態においては、ロボットシステムは、物体のセット(例えば、対象スタック)内の認識されていない物体を識別、登録できる。ロボットシステムは、1つまたは複数の既知の/予測された物体の物理的特性に関する所定の情報を含むマスタデータとセンサ出力(例えば、画像および/またはデプスマップ)を比較することに基づいて、認識されていない物体を識別できる。例えば、ロボットシステムは、センサ出力またはセンサ出力の一部を既知の/予測された物体の画像と比較して、センサ出力の物体を認識できる。ロボットシステムは、センサ出力の一致しない部分は1つまたは複数の認識されていない物体に対応すると判断できる。
【0008】
以下に詳細に記載するように、ある実施形態においては、ロボットシステムは、1つまたは複数の推定値にしたがって、認識されていない物体を操作し、認識されていない物体に関する追加情報(例えば、表面画像、および/または、物理的寸法)を決定できる。例えば、ロボットシステムは、他の物体とは離れた、または、隣り合わない認識されていない物体の露出した辺、および/または、露出した外側の角部を識別できる。1つまたは複数の実施形態において、ロボットシステムは、対象のスタックの角部に位置する、および/または、共通の層に位置する他の物体と比べて突き出た認識されていない物体(例えば、互いから閾値範囲内の高さを有する露出した表面を有する物体)の露出した辺、および/または、露出した外側の角部を識別できる。露出した辺、および/または、露出した外側の角部に基づいて、ロボットシステムは、露出した表面の最小実行可能領域(MVR)を導出できる。MVRは、対応する物体に接触し、持ち上げるのに必要なエリアを表すことができる。ロボットシステムは、MVR上の認識されていない物体を把持し、最初の持ち上げを行うことによって、以前は不明瞭であった辺を、隣り合う物体と(例えば、垂直および/または水平に)分離できる。
【0009】
最初の持ち上げの後、ロボットシステムは、比較データ(例えば、最初の持ち上げの後、認識されていない物体を表すセンサデータ)を取得、処理して、認識されていない物体に関する新しい情報を識別できる。例えば、ロボットシステムは、比較データを処理して、認識されていない物体に関して、新しく発見された(例えば、以前は不確かだった)辺および/または角部、関連する測定値(例えば、物体の寸法)、更新された画像/デプスマップ、または、これらの組み合わせを識別できる。ロボットシステムは、新しい情報をマスタデータに記憶して、以前は認識されなかった物体を自律的/自動的に登録(「自動登録」)できる。したがって、ロボットシステムは、自動登録データを使用して、同じ種類の物体を識別、処理、および/または、操作できる。
【0010】
ある実施形態においては、ロボットシステムは、認識されていない物体の追加情報(例えば、高さ、深度、および/または、プロファイル図もしくは側面図)をさらに取得できる。例えば、ロボットシステムは、横方向(例えば、水平方向)に沿って延びる交差基準(例えば、交差センサに対応する検出された線/平面)を越えて認識されていない物体を上昇または下降させることができる。1つまたは複数の実施形態において、交差基準は、スタート位置の真上、および/または、タスク位置の真上等、移動された物体が占める必要のある位置にわたって延びてよい。ロボットシステムは、下降する物体が最初に交差基準を超える場合、および/または、上昇する物体が交差基準を通過する場合等に、センサイベントを検出できる。ロボットシステムは、そのイベント時に、操作されている物体に接触しているエンドエフェクタ(例えば、把持部)の垂直位置(例えば、高さ)を決定できる。したがって、ロボットシステムは、イベント時のエンドエフェクタの高さを交差センサの既知の垂直位置と比較することに基づいて、物体の高さ(例えば、物体高さ)を決定できる。
【0011】
ある実施形態においては、交差センサは、物理的物体が交差基準を遮るまたは交差基準と重なる場合等に、信号検出の中断/不連続を検出する光/レーザベースのセンサを含み得る。1つまたは複数の実施形態において、交差センサは、物体が少なくとも一時的に占める必要のある重要な位置(例えば、ソース位置、および/または、目的地)の近くに配置されてよい。例えば、交差センサは、コンベヤの着荷位置より上、および/または、パッケージコンテナ(例えば、車の軌道、大箱等)より上に取り付けられてよい。
【0012】
したがって、ロボットシステムは、以前は認識されなかった物体に関する様々なデータを取得し、そのデータを使用して、対応する登録データを自律的に生成し、且つ、マスタデータを更新できる。生成された登録データは、対応する物体の表面画像、寸法(物体の高さを含む)、重量、推定質量中心(CoM)位置、および/または、他の物理的特性を含み得る。したがって、ロボットシステムは、自律的に(例えば、人間オペレータの入力無く)、物体を登録し、登録したデータを使用して、同じ種類の物体のその後のインスタンスを認識、処理できる。
【0013】
さらに、自律登録を使用して、ロボットシステムは、認識されていない物体を、オペレータの助けを借りずに、処理(例えば、移動、梱包、開梱等)できる。したがって、ロボットシステムの全体としての動作は、物体が認識されていない物体である場合でさえ、中断なく継続できる。また、交差センサは、移動/物体操作を中断することなく、物体高さの正確な測定を可能にする。したがって、ロボットシステムは、タスクベースの動作計画から逸脱せずに、物体を3Dで測定できる。
【0014】
以下の記載において、本開示の技術の完全な理解を提供するために、多くの特定の詳細を記載する。他の実施形態においては、本明細書に含まれる技術は、これらの特定の詳細が無くても実践できる。他の例においては、特定の機能またはルーチン等の周知の特徴は、本開示を不必要に曖昧にしないように、詳細には記載しない。本明細書において、「ある実施形態」「一実施形態」等の言及は、記載している特定の特徴、構造、材料、または、特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書におけるこのような句の出現は、全て同じ実施形態を必ずしも指してはいない。他方、このような言及は、必ずしも互いに排他的なものではない。さらに、特定の特徴、構造、材料、または、特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせることができる。図に示す様々な実施形態は、説明のための表現に過ぎず、必ずしも、縮尺通りに描いてはいないことは理解されたい。
【0015】
ロボットシステムおよびサブシステムに関連付けられることが多いが、開示の技術の幾つかの重要な態様を不必要に曖昧にし得る構造またはプロセスを記載する周知の幾つかの詳細は、明確にするために、以下には記載していない。さらに、以下の開示は、本技術の異なる態様の幾つかの実施形態を記載するが、幾つかの他の実施形態は、この項に記載するのとは異なる構成または構成要素を有し得る。したがって、開示の技術は、追加の要素を有する、または、以下に記載の要素の幾つかを含まない他の実施形態を有し得る。
【0016】
以下に記載の本開示の多くの実施形態または態様は、プログラム可能なコンピュータまたはプロセッサによって実行されるルーチンを含む、コンピュータまたはプロセッサで実行可能な命令の形を取り得る。以下に示し、記載する以外のコンピュータまたはプロセッサシステムで開示の技術を実践できることを当業者は認識されよう。本明細書に記載の技術は、以下に記載のコンピュータ実行可能命令の1つまたは複数を実行するように詳細にプログラム、構成、または、構築された専用コンピュータまたはデータプロセッサで実現できる。したがって、本明細書で一般的に使用される「コンピュータ」および「プロセッサ」という用語は、任意のデータプロセッサを指し、(パームトップコンピュータ、ウェアラブルコンピュータ、セルラーフォン、モバイルフォン、マルチプロセッサシステム、プロセッサベースもしくはプログラム可能家電製品、ネットワークコンピュータ、ミニコンピュータ等を含む)インターネット家電およびハンドヘルドデバイスを含み得る。これらのコンピュータおよびプロセッサが取り扱う情報は、液晶ディスプレイ(LCD)を含む任意の適切な表示媒体に提示できる。コンピュータまたはプロセッサで実行可能なタスクを実行するための命令は、ハードウェア、ファームウェア、または、ハードウェアおよびファームウェアの組み合わせを含む、任意の適切なコンピュータ可読媒体に記憶できる。命令は、例えば、フラッシュドライブおよび/または他の適切な媒体を含む任意の適切なメモリデバイスに含まれてよい。
【0017】
「結合された」および「接続された」という用語、並びに、これらの派生語は、構成要素間の構造的関係を記載するために本明細書では使用されてよい。これらの用語は、互いに同意語と意図されていないことを理解されたい。むしろ、特定の実施形態において、「接続された」を使用して、2つ以上の要素が互いに直接接触していることを示すことができる。文脈においてそうでないことが明らかでない限り、「結合された」という用語を使用して、2つ以上の要素が、互いに直接的または間接的に(要素と要素の間に他の介在する要素がある)接触していること、(例えば、信号送信/受信、または、関数呼び出し等の因果関係においてのように)2つ以上の要素が互いに協力または相互作用すること、または、その両方を示すことができる。
【0018】
好適な環境
図1は、パッケージメカニズムを備えたロボットシステム100が動作し得る環境の例を示している。ロボットシステム100は、1つまたは複数のタスクを実行するように構成された1つまたは複数のユニット(例えば、ロボット)を含むことができる、および/または、それらと通信することができる。パッケージメカニズムの態様は、様々なユニットによって実践または実施できる。
【0019】
図1に示す例では、ロボットシステム100は、倉庫または分配/出荷拠点において、荷降ろしユニット102、移動ユニット104(例えば、パレットに載せるロボット、および/または、ピースピッキングロボット)、運搬ユニット106、積み込みユニット108、または、これらの組み合わせを含み得る。ロボットシステム100の各ユニットは、1つまたは複数のタスクを実行するように構成できる。タスクは、トラックまたはバンから物体を降ろし、物体を倉庫に保管する、または、保管場所から物体を降ろし、出荷の準備をする等、目的を達成する動作を行うように順次、組み合わせることができる。他の例に関しては、タスクは、目的の場所(例えば、パレットの上、および/または、大箱/ケージ/箱/ケース内)に物体を載置することを含み得る。以下に記載のように、ロボットシステムは、物体を載置するおよび/または積み重ねるための計画(例えば、置き場所/向き、物体を移動させる順番、および/または、対応する動作計画)を導出できる。各ユニットは、(例えば、ユニットの1つまたは複数の構成要素を動作させる)一連のアクションを実行してタスクを実行するように構成されてよい。
【0020】
ある実施形態においては、タスクはスタート位置114からタスク位置116への対象物体112(例えば、実行するタスクに対応するパッケージ、箱、ケース、ケージ、パレット等の1つ)の操作(例えば、移動および/または向きの変更)を含み得る。例えば、荷降ろしユニット102(例えば、デバンニングロボット)は、運搬装置(例えば、トラック)内の位置から、コンベヤベルト上の位置に対象物体112を移動するように構成されてよい。また、移動ユニット104は、1つの位置(例えば、コンベヤベルト、パレット、または、大箱)から他の位置(例えば、パレット、大箱等)に対象物体112を移動するように構成されてよい。他の例に関しては、移動ユニット104(例えば、パレットに載せるロボット)は、対象物体112を元の位置(例えば、パレット、ピックアップエリア、および/または、コンベヤ)から目的パレットに移動するように構成されてよい。動作を完了する時、運搬ユニット106は、移動ユニット104に関連付けられたエリアから、積み込みユニット108に関連付けられたエリアに対象物体112を移動でき、積み込みユニット108は、移動ユニット104から保管場所(例えば、棚上の位置)に(例えば、対象物体112を載せたパレットを動かすことによって)対象物体112を移動できる。このタスクおよびそれに関連する動作に関する詳細を以下に記載する。
【0021】
説明目的で、ロボットシステム100を、出荷センタの文脈で記載するが、ロボットシステム100は、製造、アセンブリ、梱包、ヘルスケア、および/または、他の種類の自動化等、他の環境において/他の目的のために、タスクを実行するように構成されてよいことは理解されたい。ロボットシステム100は、
図1に示されていない、マニピュレータ、サービスロボット、モジュール式ロボット等、他のユニットを含み得ることも理解されたい。例えば、ある実施形態においては、ロボットシステム100は、ケージカートまたはパレットからコンベヤまたは他のパレット上に物体を移動するデパレタイズユニット、1つのコンテナから別のコンテナに物体を移動するコンテナ切替ユニット、物体を梱包する梱包ユニット、物体の1つまたは複数の特性にしたがって物体をグループにする仕分けユニット、物体の1つまたは複数の特性にしたがって物体を異なるように操作(例えば、仕分け、グループ化、および/または、移動)するピースピッキングユニット、または、これらの組み合わせを含み得る。
【0022】
好適なシステム
図2は、本技術の1つまたは複数の実施形態による、ロボットシステム100を示すブロック図である。ある実施形態においては、例えば、ロボットシステム100(例えば、上記のユニットおよび/またはロボットの1つまたは複数において)1つまたは複数のプロセッサ202、1つまたは複数の記憶装置204、1つまたは複数の通信装置206、1つまたは複数の入出力装置208、1つまたは複数の駆動装置212、1つまたは複数の運搬モータ214、1つまたは複数のセンサ216、または、これらの組み合わせ等、電子/電気デバイスを含み得る。様々なデバイスは、有線接続および/または無線接続を介して互いに結合されてよい。例えば、ロボットシステム100は、システムバス、ペリフェラルコンポーネントインターコネクト(PCI:Peripheral Component Interconnect)バスもしくはPCIエクスプレスバス、ハイパートランスポート(HyperTransport)もしくはインダストリスタンダートアーキテクチャ(ISA:industry standard architecture)バス、小型コンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、IIC(I2C)バス、または、電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers)規格1394バス(「ファイヤワイヤ」とも言われる)等のバスを含み得る。また、例えば、ロボットシステム100は、ブリッジ、アダプタ、プロセッサ、または、デバイス間に有線接続を提供するための他の信号に関連するデバイスを含み得る。無線接続は、例えば、セルラー通信プロトコル(例えば、3G、4G、LTE、5G等)、無線ローカルエリアネットワーク(LAN)プロトコル(例えば、ワイヤレスフィデリティ(WIFI))、ピアツーピアもしくはデバイスツーデバイス通信プロトコル(例えば、ブルートゥース、近距離無線通信(NFC)等)、インターネットオブシングズ(IoT)プロトコル(例えば、NB−IoT、LTE−M等)、および/または、他の無線通信プロトコルに基づいてよい。
【0023】
プロセッサ202は、記憶装置204(例えば、コンピュータメモリ)に記憶された命令(例えば、ソフトウェア命令)を実行するように構成されたデータプロセッサ(例えば、中央処理装置(CPU)、専用コンピュータ、および/または、オンボードサーバ)を含み得る。ある実施形態においては、プロセッサ202は、
図2に示された他の電子/電気デバイス、および/または、
図1に示されたロボットユニットに動作可能に結合された別個の/スタンドアロンコントローラに含まれてよい。プロセッサ202は、プログラム命令を実施して、他のデバイスを制御/他のデバイスとインタフェースすることによって、ロボットシステム100に、アクション、タスク、および/または、動作を実行させることができる。
【0024】
記憶装置204は、プログラム命令(例えば、ソフトウェア)を記憶した非一時的なコンピュータ読み取り可能媒体を含み得る。記憶装置204の幾つかの例は、揮発性メモリ(例えば、キャッシュおよび/またはランダムアクセスメモリ(RAM))、および/または、不揮発性メモリ(例えば、フラッシュメモリ、および/または、磁気ディスクドライブ)を含み得る。記憶装置204の他の例は、ポータブルメモリドライブ、および/または、クラウドストレージデバイスを含み得る。
【0025】
ある実施形態においては、記憶装置204を使用して、処理結果、および/または、所定のデータ/閾値をさらに記憶し、それらにアクセスできる。例えば、記憶装置204は、ロボットシステム100によって操作され得る物体(例えば、箱、ケース、および/または、製品)の記載を含むマスタデータ252を記憶できる。1つまたは複数の実施形態において、マスタデータ252は、このような各物体の登録データ254を含み得る。登録データ254は、ロボットシステム100によって操作されることが予測される物体の、寸法、形状(例えば、異なる姿勢の物体を認識するための、可能な姿勢のテンプレート、および/または、コンピュータによって生成されたモデル)、カラースキーム、画像、ID情報(例えば、バーコード、クイックレスポンス(QR)コード(登録商標)、ロゴ等、および/または、これらの予測される位置)、予測重量、他の物理的/視覚的特性、または、これらの組み合わせを含み得る。ある実施形態においては、マスタデータ252は、質量中心(CoM)の位置、または、各物体に対するCoMの位置の推定、1つまたは複数のアクション/操作に対応する予測されるセンサ測定値(例えば、力、トルク、圧力、および/または、接触の測定値)、または、これらの組み合わせ等、物体の操作に関連する情報を含み得る。
【0026】
通信装置206は、ネットワークを介して外部装置またはリモート装置と通信するように構成された回路を含み得る。例えば、通信装置206は、受信器、送信器、変調器/復調器(モデム)、信号検出器、信号エンコーダ/デコーダ、コネクタポート、ネットワークカード等を含み得る。通信装置206は、1つまたは複数の通信プロトコル(例えば、インターネットプロトコル(IP)、無線通信プロトコル等)にしたがって、電気信号を送信、受信、および/または、処理するように構成されてよい。ある実施形態においては、ロボットシステム100は、通信装置206を使用して、ロボットシステム100のユニット間で情報を交換できる、および/または、(例えば、報告、データ収集、分析、および/または、トラブルシューティングの目的で)ロボットシステム100の外部にあるシステムまたはデバイスと情報を交換できる。
【0027】
入出力装置208は、人間オペレータに情報を通信するように、および/または、人間オペレータから情報を受信するように構成されたユーザインタフェース装置を含み得る。例えば、入出力装置208は、人間オペレータに情報を通信するためのディスプレイ210、および/または、他の出力装置(例えば、スピーカ、触覚回路、または、触覚フィードバック装置等)を含み得る。また、入出力装置208は、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインタフェース(UI)センサ(例えば、動作コマンドを受信するためのカメラ)、ウェアラブル入力装置等、制御装置または受信装置も含み得る。ある実施形態においては、ロボットシステム100は、アクション、タスク、動作、または、これらの組み合わせを実行する時、入出力装置208を使用して、人間オペレータと対話できる。
【0028】
ロボットシステム100は、動き(例えば、回転変位および/または並進変位)のためにジョイントに接続された物理的または構造的な部材(例えば、ロボットマニピュレータアーム)を含み得る。構造部材およびジョイントは、ロボットシステム100の使用/動作に応じて、1つまたは複数のタスク(例えば、把持、回転、溶接等)を実行するように構成されたエンドエフェクタ(例えば、把持部)を操作するように構成された運動連鎖を形成できる。ロボットシステム100は、対応するジョイントを中心に、または、対応するジョイントで構造部材を作動または操作(例えば、変位、および/または、向き変更)するように構成された駆動装置212(例えば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマー等)を含み得る。ある実施形態においては、ロボットシステム100は、対応するユニット/シャシを場所から場所へと運搬するように構成された運搬モータ214を含み得る。
【0029】
ロボットシステム100は、構造部材を操作するため、および/または、ロボットユニットを運搬するため等、タスクの実施に使用される情報を取得するように構成されたセンサ216を含み得る。センサ216は、ロボットシステム100の1つまたは複数の物理的特性(例えば、ロボットシステムの1つまたは複数の構造部材/ジョイントの状況、状態、および/または、位置)、および/または、周囲環境の1つまたは複数の物理的特性を検出または測定するように構成されたデバイスを含み得る。センサ216の幾つかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダ等を含み得る。
【0030】
ある実施形態においては、例えば、センサ216は、周囲環境を検出するように構成された1つまたは複数の撮像装置222(例えば、視覚カメラ、および/または、赤外線カメラ、2Dおよび/または3Dイメージングカメラ、ライダまたはレーダ等の距離測定装置等)を含み得る。撮像装置222は、(例えば、自動検査、ロボット誘導、または、他のロボット用途のために)機械/コンピュータビジョンを介して処理され得る、デジタル画像および/または点群等、検出された環境の表現を生成し得る。以下にさらに詳細に記載するように、ロボットシステム100は、(例えば、プロセッサ202を介して)デジタル画像および/または点群を処理して、
図1の対象物体112、
図1のスタート位置114、
図1のタスク位置116、対象物体112の姿勢、スタート位置114および/または姿勢に関する信頼基準、または、これらの組み合わせを識別できる。
【0031】
対象物体112を操作するために、ロボットシステム100は、(例えば、上記の様々な回路/デバイスを介して)、指定エリア(例えば、トラック内またはコンベヤベルト等のピックアップ位置)の画像を撮影、分析して、対象物体112と対象物体112のスタート位置114とを識別できる。同様に、ロボットシステム100は、別の指定エリア(例えば、コンベヤ上に物体を載置するための投下位置、コンテナ内の物体を置く位置、または、積み重ねるためのパレット上の位置)の画像を撮影、分析して、タスク位置116を識別できる。例えば、撮像装置222は、ピックアップエリアの画像を生成するように構成された1つまたは複数のカメラ、および/または、タスクエリア(例えば、投下エリア)の画像を生成するように構成された1つまたは複数のカメラを含み得る。撮影画像に基づいて、以下に記載のように、ロボットシステム100は、スタート位置114、タスク位置116、関連する姿勢、梱包/載置計画、運搬/梱包順序、および/または、他の処理結果を判断できる。梱包アルゴリズムに関する詳細を以下に記載する。
【0032】
ある実施形態においては、例えば、センサ216は、構造部材(例えば、ロボットアームおよび/またはエンドエフェクタ)、および/または、ロボットシステム100の対応するジョイントの位置を検出するように構成された位置センサ224(例えば、位置エンコーダ、ポテンショメータ等)を含み得る。ロボットシステム100は、タスク実行中に、位置センサ224を使用して、構造部材および/またはジョイントの位置および/または向きを追跡できる。
【0033】
目的地ベースのセンサを用いた物体の移動および登録
図3は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100の図である。ロボットシステム100は、エンドエフェクタ304(例えば、把持部)を含むロボットアーム302(例えば、
図1の移動ユニット104の例)を含み得る。ロボットアーム302は、
図1のスタート位置114と
図1のタスク位置116との間で対象物体112を移動するように構成されてよい。
図3に示すように、スタート位置114は、対象スタック310(例えば、物体のグループ)を載せたパレット308を有し得る。ロボットアーム302のタスク位置116は、コンベヤ306(例えば、
図1の運搬ユニット106の例)の載置位置(例えば、開始/放出点)であってよい。例えば、ロボットアーム302は、対象スタック310から物体を掴み取るように、且つ、物体を他の目的地/タスクに運搬するためにコンベヤ306に載せるように構成されてよい。
【0034】
ロボットシステム100は、ロボットアーム302を用いた移動動作を行う時、
図2のセンサ216の1つまたは複数を使用できる。ある実施形態においては、ロボットシステム100は、第1の画像センサ312および/または第2の画像センサ314を含み得る。第1の画像センサ312は、スタート位置114を撮影および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。第2の画像センサ314は、タスク位置116を撮影および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。例えば、第1の画像センサ312は、スタート位置114より上でスタート位置114の方を向く既知の位置に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。第1の画像センサ312は、対象スタック310の上面図等、スタート位置114の1つまたは複数の上面図に対応する画像データを生成できる。また、第2の画像センサ314は、タスク位置116の上/横でタスク位置116の方を向く1つまたは複数の既知の位置、または関連する空間に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。したがって、第2の画像センサ314は、タスク位置116から閾値距離に、または、閾値距離内にある対象物体112の1つまたは複数の上面図および/または側面図に対応する画像データを生成できる。
【0035】
ある実施形態においては、ロボットシステム100は、物体が対応する検出線/平面を超える/離れる交差イベントを検出するように構成された1つまたは複数の交差センサ(例えば、第1の交差センサ316、および/または、第2の交差センサ318)を含み得る。例えば、交差センサは、送信信号および/または反射信号(例えば、光信号、レーザ等)の連続性/中断に基づいて、交差イベントを検出するラインセンサまたは平面センサに対応し得る。交差センサは、ある実施形態においては、検出線に沿って光信号を送信し、検出線の端で送信信号を検出および/または反射できる。したがって、交差センサは、送信された光信号の受信の中断(例えば、不連続性)を検出でき、これは、物体が検出線を超える/検出線に入ることを表す進入イベントに対応し得る。同様に、交差センサは、中断期間の後、送信信号を再検出でき、これは、物体が検出線を出ることを表す退出イベントに対応し得る。交差センサは、光信号および/または光信号のシーケンス中断の検出、再検出に基づいて、イベントデータ(例えば、フラグ、状態決定、交差方向、および/または、タイムスタンプ)を生成および/または通信できる。
【0036】
ある実施形態においては、第2の交差センサ318を使用して、把持した物体を解放できる。第2の交差センサ318は、タスク位置116より上に配置されてよく、および/または、所定の高さに検出線を確立できる。検出線/平面の高さ(例えば、解放高さ)は、物体を損傷することなく、安全に物体を投下できる高さであってよい。例として、検出線の高さは、コンベヤ306の載置位置の上10cm以下であってよい。したがって、ロボットシステム100は、第2の交差センサ318が検出した交差イベントを、運んでいる物体をエンドエフェクタ304から解放するトリガとして使用できる。ある実施形態においては、解放高さは、第1の交差センサ316の検出線/平面と重なってよい、または、一致してよい。他の実施形態においては、解放高さは、第1の交差センサ316の検出線/平面の垂直位置と、タスク位置116の載置面(例えば、コンベヤ306の載置面)の垂直位置との間であってよい。換言すると、第1の交差センサ316の検出線/平面は、第2の交差センサ318に対応する解放高さより上に位置してよい。
【0037】
ある実施形態においては、第1の交差センサ316を使用して、移動中の対象物体112の高さを測定できる。例えば、ロボットシステム100は、進入イベント時に第1の交差センサ316が検出した把持部高さ322(例えば、地面等の基準点に対するエンドエフェクタ304の垂直位置/場所/座標)を決定できる。ロボットシステム100は、把持部高さ322を交差基準高さ324(例えば、第1の交差センサ316の既知の垂直位置、および/または、第1の交差センサ316の基準線/平面)と比較して、移動中の対象物体112の物体高さを計算できる。換言すると、第1の交差センサ316は、対象物体112の底部が検出線を超える時を示すトリガとして働くことができる。したがって、ロボットシステム100は、このような時の把持部高さ322と検出線の既知の高さとを使用して、対象物体112の物体高さを計算できる。ある実施形態においては、第1の交差センサ316は、対象物体112の底部が検出線を超える時、(例えば、タスク位置116に向けられたカメラと水平方向に向かい合う)第2の画像センサ314がデータを収集する1つまたは複数のインスタンスをトリガすることができる。したがって、ロボットシステム100は、異なる視点からの物体に関するデータ(例えば、側面もしくはプロファイル図/画像、異なる次元に沿った形状測定値等)を取得できる。
【0038】
説明目的で、コンベヤ306に取り付けられた第1の交差センサ316を示す。しかしながら、第1の交差センサ316は異なる構成であってよいことは理解されたい。例えば、第1の交差センサ316は、タスク位置116のいずれの装置とも接続されなくてよく、および/または、独立していてよい。第1の交差センサ316は、タスク位置116より上の線/平面より上の、および/または、タスク位置116に重なる(例えば、交差基準高さ324)に対する交差イベントを検出するように構成されてよい。ある実施形態においては、第1の交差センサ316は、比較的短い距離(例えば、10センチメートル等、1メートル未満)だけ載置面/位置より上で横方向/水平方向に延びる線/平面に対する交差イベントを検出するように構成されてよい。1つまたは複数の実施形態においては、第1の交差センサ316および第2の交差センサ318の機能は、ロボットシステム100が、1つの交差イベントに基づいて、物体高さを決定し、物体を解放するように、組み合わされてよい。
【0039】
第1の交差センサ316および/または第2の画像センサ314(例えば、水平方向を向いているカメラ)は、移動中、物体(例えば、認識されていない物体)の追加データを提供する。上記のように、第1の交差センサ316を使用して、物体を移動している時に、追加の操作/動き無しに、移動される物体の物体高さを計算できる。さらに、他の物体の上に載っている時に変形する物体もあるので、物体を持ち上げた後に物体高さを決定することは、高さ測定の精度を向上させる。換言すると、物体の形状、および、任意の対応する寸法は、物体が持ち上げられる/吊り下げられる時、変化する場合がある。例えば、吊り下げられる時、物体のプロファイル、および/または、対応する高さ(例えば、エンドエフェクタ304から物体の底部までの距離)は、プラスチック包装の布ベースの品物またはゴムベースの品物等、パッケージの剛性の不足のために変化する場合がある。交差センサ(例えば、第1の交差センサ316)を用いて、移動中、物体高さを決定することによって、ロボットシステム100は、移動中の物体の形状/寸法の任意の変化を、(例えば、動作計画を介して)正確に考慮できる。したがって、ロボットシステム100は、物体を移動している時に、実際の物体高さ(例えば、置いた時の高さではなく、吊り下げられた時の物体の高さ)を使用することによって、形状の変化が原因で生じ得る衝突を低減/除去できる。ある実施形態においては、ロボットシステム100は、移動される物体の揺れ、または、振り子のような揺れの低減等のために、実際の物体高さにしたがって、走行速度、走行加速度、または、これらの組み合わせを調整できる。ある実施形態においては、ロボットシステム100は、止まっている物体高さ、および/または、移動している物体高さを使用して、認識されていない物体を登録できる。
【0040】
さらに、第1の交差センサ316は、第1の画像センサ312および/または第2の画像センサ314によって検出できない場合のある物体に関する追加情報(例えば、1つまたは複数の垂直面/辺、および/または、プロファイル形状の2D/3D画像)を取得するように追加のセンサをトリガできる。以下にさらに詳細に記載するように、物体高さおよび/または追加情報を使用して、認識されていない物体の
図2の登録データ254を生成できる。したがって、ロボットシステム100は、認識されていない物体に関してより多くの情報を取得でき、この情報を使用して、移動タスクを妨害することなく、他の類似の物体のその後の認識の可能性を向上させることができ、および/または、物体のさらなる操作の精度を向上させることができる。
【0041】
ある実施形態においては、ロボットシステム100は、物体高さおよび/または追加情報を使用して、上面に加えて、物体の他の表面(例えば、垂直表面/寸法)を分析する等によって、物体を再分析、認識できる。したがって、ロボットシステム100は、認識されない箱の数、または、検出漏れの結果を低減できる。
【0042】
物体認識
本技術の1つまたは複数の実施形態にしたがって、
図4Aは、
図1のロボットシステム100によって処理される物体のスタックの例(例えば、
図3の対象スタック310)の図であり、
図4Bは、スタックの例の上面の図(例えば、対象スタック310の実際の上面
図410)であり、
図4Cは、上面に対応するセンサデータ(例えば、上面図データ420)の図である。
図4A、4B、および4Cを一緒に参照すると、ロボットシステム100は、前述のように、対象スタック310内の物体を、
図1のタスク位置116(例えば、
図3のコンベヤ306)等、他の位置に移動させるように構成されてよい。物体の移動に関しては、ロボットシステム100は、対象スタック310の上に配置された
図3の第1の画像センサ312からの画像データ(例えば、上面図データ420)を使用できる。例えば、上面図データ420は、実際の上面
図410を示すまたは表す1つまたは複数の視覚画像および/または1つまたは複数のデプスマップを含み得る。さらに、ロボットシステム100は、上面図データ420を分析して、物体の境界に対応し得る辺を識別できる。例えば、ロボットシステム100は、深度測定値および/または画像特性(例えば、異なる色、線形パターン、影、鮮明さの相違等)に基づいて、画像データで表現された辺および/または連続した表面を識別できる。また、ロボットシステム100は、深度測定値の差等に基づいて、露出した辺422(例えば、ほぼ同じ高さの他の物体/表面と水平に接触していない物体の上面の辺)を識別できる。
【0043】
対象スタック310は、
図2のマスタデータ252に登録された物体、および/または、マスタデータ252に登録されていない予期せぬ物体を含み得る。したがって、ロボットシステム100は、物体表面416の画像データを使用して、対象スタック310内にある物体を認識または識別できる。ある実施形態においては、ロボットシステム100は、画像データ、または、画像データの1つまたは複数の部分を、マスタデータ252(例えば、物体表面416に対応するマスタデータ252内の
図2の様々な登録データ254)と比較して、対象スタック310内の物体を認識できる。例えば、ロボットシステム100は、上面図データ420の一部が登録データ254の物体表面416の1つまたは複数の画像に一致する場合に、対象スタック310内の既知の物体(例えば、認識された物体412)を識別できる。実際の上面
図410の残りの部分(例えば、登録データ254と一致しない部分)は、認識されていない物体414に対応し得る。認識されていない物体414の辺は、
図4Cに破線を用いて示される。
【0044】
画像データの一致に基づいて、ロボットシステム100は、対応する画像データ内で認識された物体412の位置を突き止めることができ、この位置は、さらに、(例えば、画素位置を座標系にマッピングするプレキャリブレーション表および/または方程式を介して)対象スタック310の実世界の位置に変換されてよい。さらに、ロボットシステム100は、認識された物体412の露出していない辺の位置を、一致に基づいて推定できる。例えば、ロボットシステム100は、認識された物体412の寸法をマスタデータ252から取得できる。ロボットシステム100は、認識された物体412の露出した辺422から既知の寸法によって分けられる画像データの部分を測定できる。マッピングにしたがって、ロボットシステム100は、認識された物体412の1つまたは複数の登録に基づいた辺424を決定できる、および/または、上記のように、登録に基づいた辺424を実世界の位置に同様にマッピングできる。
【0045】
ある実施形態においては、ロボットシステム100は、画像データに表現された対象スタック310の露出した外側角部426を識別できる。例えば、ロボットシステム100は、異なる向きを有する(例えば、異なる角度で延びる)露出した辺422の2つ以上の間の交点/接合点を検出することに基づいて、露出した外側角部426を識別できる。1つまたは複数の実施形態において、露出した辺422が、閾値範囲約90度等、所定の範囲内の角度を形成する場合に、ロボットシステム100は、露出した外側角部426を識別できる。以下に詳細に記載するように、ロボットシステム100は、露出した外側角部426と対応する露出した辺422を使用して、認識されていない物体414を処理および/または操作できる。
【0046】
認識されていない物体の処理
ある実施形態においては、ロボットシステム100は、対象スタック310内の物体の認識ステータスおよび/または相対的位置にしたがって、物体を処理(例えば、識別、および/または、移動)できる。例えば、ロボットシステム100は、認識された物体を最初に掴み取り、移動し、次に、センサ(例えば、
図3の第1の画像センサ312)から別の画像データセットを生成できる。
図5Aは、本技術の1つまたは複数の実施形態による、最初の動作セット(例えば、認識された物体412を掴むこと、および、移動すること)の後の上面に対応するセンサデータ501の図である。
図5Aの網掛部分は、
図4Bおよび
図4Cに示された認識された物体412を取り除いた後の深度測定値の変化に対応する。
【0047】
ロボットシステム100が、画像データで、認識された物体412を識別しない場合に、ロボットシステム100は、
図4Aの認識されていない物体414の位置を突き止めるために、任意の露出した角部、および/または、露出した辺422を識別できる。例えば、ロボットシステム100は、上記と同様に、センサデータ501を処理して、露出した外側角部426および/または露出した辺422を識別できる。したがって、ロボットシステム100は、認識された物体412を取り除いた後に露出された任意の角部/辺をさらに識別し、および/または、その位置を突き止めることができる。ある実施形態においては、ロボットシステム100は、対応する閾値にしたがって、
図4Bの露出した辺422の2つ以上の間の交点/接合点として、露出した内側角部502をさらに識別できる。例えば、ロボットシステム100は、対応する連続した表面に対して180度を超える露出した辺422の2つ以上の間の接合点として、露出した内側角部502を識別できる。ある実施形態においては、ロボットシステム100は、露出した辺422が約270度の閾値範囲内にある角度を形成する場合に、露出した内側角部502を識別できる。
【0048】
ある実施形態においては、認識された物体412が何も残っていない場合に、ロボットシステム100は、露出した角部および/または露出した辺に基づいて、(例えば、認識されていない物体414のうちから)対象スタック310の登録対象506を識別できる。例えば、ロボットシステム100は、露出した外側角部426に関連付けられたセンサデータ501の領域と、対応する認識されていない物体414とを選択できる。換言すると、認識された物体412を処理した後、ロボットシステム100は、対象スタック310の露出した外側角部426を形成/構成する認識されていない物体414を処理できる。センサデータ501の対応する部分を分析することに基づいて、ロボットシステム100は、認識されていない物体414を把持し、把持した物体を持ち上げ、および/または、水平に移動し、および/または、登録のために把持した物体を撮影できる。さらに、把持した物体を撮影した後、ロボットシステム100は、把持した物体を目的地(例えば、
図3のコンベヤ306)に移動できる。
【0049】
センサデータ分析をさらに記載するために、
図5Bは、本技術の1つまたは複数の実施形態による、
図5Aのセンサデータ501の部分5Bの詳細な図である。ロボットシステム100は、MVR512にしたがってセンサデータ501を分析して、把持位置520を決定できる。MVR512は、物体と接触、物体を把持、および/または、物体を上げるのに必要な最小サイズのエリアを表し得る。したがって、ある実施形態においては、MVR512は、
図3のエンドエフェクタ304に基づいてよい。例えば、MVR512は、エンドエフェクタ304(例えば、把持部の吸引カップ)が占めるエリア、または、取付面積を囲む追加の/緩衝領域を有するより大きいエリア等、エンドエフェクタ304の取付面積に関連付けられてよい。ある実施形態においては、MVR512は、最小候補サイズに対応してよく、最小候補サイズは、対象スタック310の物体の最小の可能なインスタンスの物理的寸法(例えば、長さ、幅、高さ、直径、外周等)に対応し得る。換言すると、対象スタック310内には、最小候補サイズより小さい寸法を有する物体は無い。最小候補サイズは、所定の値(すなわち、対象スタック310を処理する前に与えられた値)であってよい。
【0050】
ある実施形態においては、ロボットシステム100は、対応する表面(例えば、互いから閾値範囲内にある高さ/深度の値を有するエリア)の上の露出した辺422から延びる2つ以上の交差する線に基づいて、MVR512を導出できる。例えば、ロボットシステム100は、露出した外側角部426の周囲の露出した辺422から延びる垂直な線に基づいて、MVR512を導出できる。線は、露出した外側角部426からの分離距離に対応する露出した辺422上の部分(例えば、点)から延ばされてよい。分離距離は、所定の値、および/または、1つまたは複数の処理結果にしたがって計算された値(例えば、推定した辺524もしくは対応する信頼値、および/または、対応する物体の推定される識別もしくは対応する信頼値)であってよい。したがって、ロボットシステム100は、延長された線と露出した辺422とによって画定されるエリアとしてMVR512を導出できる。
【0051】
ある実施形態においては、ロボットシステム100は、MVR512を用いて、可能な把持位置のセットを導出できる。例えば、ロボットシステム100は、第1の露出した辺に整列したMVR512の寸法を用いて、第1の把持位置を導出でき、第2の露出した辺に整列したMVR512の寸法を用いて第2の把持位置を導出できる。ある実施形態においては、ロボットシステム100は、露出した辺の1つに整列したMVR512を用いて、2つ以上の把持位置を導出できる。
【0052】
ロボットシステム100は、MVR512を用いて、把持位置520を決定できる。把持位置520は、最初の操作のためにエンドエフェクタ304の真下にくる、および/または、エンドエフェクタ304に接触する物体/スタック上のエリアに対応し得る。換言すると、ロボットシステム100は、次の操作(例えば、持ち上げプロセス、水平移動プロセス、および/または、登録のためのデータ収集プロセス)のために、把持位置520の上に把持部を置いて、対応する物体を把持できる。ある実施形態においては、ロボットシステム100は、可能な把持位置のセットから把持位置520を選択できる。例えば、ロボットシステム100は、(例えば、ロボットアームが露出した辺422にわたって延び、他の部分に重ならないことを優先して)アームの相対的向きにしたがって、把持位置のセットから選択できる。
【0053】
ある実施形態においては、ロボットシステム100は、検出した線522および/または推定した辺524に基づいて、把持位置520を導出できる。例えば、ロボットシステム100は、センサデータ501の深度測定値および/または画像特性の差に基づいて、検出した線522および/または推定した辺524を識別できる。ロボットシステム100は、露出した辺422と交差しない結果を、検出した線522として識別し、検出した線522は、物体の表面記号内の線、または、物体の辺に対応し得る。ロボットシステム100は、少なくとも1つの露出した辺422と交差する結果を、推定した辺524として識別できる。したがって、ロボットシステム100は、検出した線522および/または推定した辺524と重ならない把持位置520を導出できる。ロボットシステム100は、MVR512の辺と、最も近くの検出した線522および/または推定した辺524との間の距離間の比率を釣り合わせることに基づいて、把持位置520を導出できる。ロボットシステム100は、MVR512に基づいて、角部の、または、角部の近くの物体を把持するので、ロボットシステム100は、その比率を釣り合わせることに基づいて、任意の1つの特定の方向に沿った最大の潜在的トルクを低減する把持位置520を導出できる。
【0054】
ロボットシステム100は、導出した把持位置520を使用して、
図3のロボットアーム302とエンドエフェクタ304とを操作できる。ロボットシステム100は、把持位置520でスタックの角部にある物体(例えば、登録対象506)を把持できる。ある実施形態においては、ロボットシステム100は、以前は露出していなかった辺を明瞭に区別するために、把持した物体を持ち上げ、および/または、水平に移動させることができる。例えば、ロボットシステム100は、辺を正確に区別するために、最小距離に対応する所定の高さだけ、物体を持ち上げ、および/または、物体を水平に移動させることができる。また、例えば、ロボットシステム100は、エンドエフェクタの高さの変化および/または傾きを監視および/または分析しながら、物体を持ち上げ、および/または水平に移動させることができ、それによって、露出した辺422の反対側の追加の辺が認識可能になる。ロボットシステム100は、最初の持ち上げ中、および/または、最初の持ち上げ後、データを取得、処理して、認識されていない物体414をさらに記載することができる。
【0055】
認識されていない物体の登録データの収集
図6は、本技術の1つまたは複数の実施形態による、最初の持ち上げ操作の後の物体の図である。前述のように、また、以下にさらに詳細に記載するように、ロボットシステム100は、移動動作中、物体の高さ(例えば、最初の停止姿勢、移動姿勢、および/または、最終的な載置姿勢に対して垂直方向に沿って測定された物体高さ620)を導出できる。物体高さ620は、登録目的で、および/または、移動動作(例えば、加速度、速度、および/または、移動経路)を調整するために、使用できる。
【0056】
ある実施形態においては、ロボットシステム100は、外部の物体(例えば、把持した物体)、および/または、その物体の動きによって
図3のロボットアーム302にかかる力を測定するように構成された1つまたは複数のセンサを含み得る。例えば、ロボットシステム100は、エンドエフェクタ304に取り付けられた、および/または、エンドエフェクタ304と一体になった力センサ、トルクセンサ、または、これらの組み合わせ(例えば、力トルク(FT)センサ602)を含み得る。したがって、ロボットシステム100は、
図5の把持位置520で把持された把持物体(例えば、登録対象506と判断された
図4の認識されていない物体414の1つ)を持ち上げながら、下向きの力の測定値604、および/または、トルク測定値606を測定できる。
【0057】
ある実施形態においては、ロボットシステム100は、下向きの力の測定値604を使用して、登録対象506の重さを決定できる。ある実施形態においては、ロボットシステム100は、下向きの力の測定値604および/またはトルク測定値606を使用して、登録対象506の推定トルク‐アームベクトル608および/または推定質量中心(CoM)610を計算できる。推定トルク‐アームベクトル608は、FTセンサ602によって提供された測定ベクトルの和に一致し得る。ロボットシステム100は、推定トルク‐アームベクトル608、トルク測定値606、および/または、下向きの力の測定値604を入力として使用する所定のプロセスおよび/または方程式にしたがって、推定CoM610を計算できる。
【0058】
ある実施形態においては、ロボットシステム100は、最初の持ち上げ操作を行うためのフィードバック信号として、センサ測定値を使用できる。例えば、ロボットシステム100は、下向きの力の測定値604および/またはトルク測定値606が安定する(例えば、ある測定期間にわたって測定値が閾値範囲内にある)まで、最初の持ち上げ操作を行うことができる。したがって、ロボットシステム100は、把持した物体が下にある物体または構造から離れて持ち上げられ(すなわち、もはや支持されておらず)、ロボットアーム302だけによって支持されるようになった時を判断できる。ロボットシステム100は、最初の持ち上げ操作の停止、および/または、把持した物体に関する追加データ(例えば、寸法、重さ、CoM、および/または、表面画像)取得のトリガとして、安定の判断を使用できる。
【0059】
把持した物体(例えば、
図4Bの認識されていない物体414)に関して取得したデータをさらに記載するために、本技術の1つまたは複数の実施形態にしたがって、
図7Aは、比較データ702の図であり、
図7Bは、更新されたデータ740の図である。上記のように、ロボットシステム100は、
図5BのMVR512に基づいて、認識されていない物体414を把持できる。把持に基づいて、ロボットシステム100は、把持した物体を(例えば、最初の持ち上げ操作を介して)持ち上げ、および/または、水平に移動して、隣の当接している物体から把持した物体を分離できる。ロボットシステム100は、把持した物体を持ち上げ、および/または、水平に移動した後、比較データ702(例えば、視覚画像、デプスマップ、点群等の2D/3D測定データ)を取得できる。ある実施形態においては、比較データ702は、
図3の第1の画像センサ312等、
図2のセンサ216の1つまたは複数を介して取得できる。
【0060】
ロボットシステム100は、最初のセンサデータ(例えば、
図4Cの上面図データ420、および/または、物体の持ち上げ前に取得した
図5Aのセンサデータ501)、および/または、比較データ702に基づいて、認識されていない物体414の更新された画像(例えば、更新されたデータ740)をさらに生成できる。ある実施形態においては、ロボットシステム100は、最初の持ち上げ操作の前後の視覚画像または2D画像を組み合わせることに基づいて、更新されたデータ740を生成できる。例えば、ロボットシステム100は、上面図データ420、および/または、MVR512および/または把持位置520に対応するセンサデータ501から、クロップされた部分734を導出できる。ロボットシステム100は、MVR512および/または把持位置520を撮影した画像にマッピングし、画素情報を対応するエリアにコピーすることに基づいて、クロップされた部分734を導出できる。ロボットシステム100は、クロップされた部分734を比較データ702の上に重ね合わせることに基づいて、更新されたデータ740を生成できる。更新されたデータ740に対するクロップされた部分734の位置は、露出した外側角部426と露出した辺422とを基準として用いることによって決定できる。したがって、ロボットシステム100は、クロップされた部分734を使用して、
図3のロボットアーム302および/または
図3のエンドエフェクタ304を描く比較データ702内のエリアをカバーできる。
【0061】
ある実施形態においては、ロボットシステム100は、覆われていない部分732を比較データ702から導出できる。覆われていない部分732は、エンドエフェクタ304および/またはロボットアーム302によって覆われていない認識されていない物体414の上面に対応し得る。ロボットシステム100は、エンドエフェクタ304および/またはロボットアーム302の1つまたは複数の所定の視覚的/画素パターンを使用して、覆われていない部分732を導出できる。例えば、ロボットシステム100は、所定の視覚的/画素パターンに一致する比較データ702の部分を認識、除去することに基づいて、覆われていない部分732を導出できる。ロボットシステム100は、覆われていない部分732をクロップされた部分734と組み合わせて、更新されたデータ740を生成できる。
【0062】
ロボットシステム100は、比較データ702および/または更新されたデータ740を処理して、把持した物体の1つまたは複数の物理的特性に関する情報を取得できる。例えば、ロボットシステム100は、発見された辺722、発見された角部726、辺の長さの測定値728、および/または、角部の角度の測定値730を含む、物体の輪郭/形状の比較データ702を処理できる。ロボットシステム100は、上記1つまたは複数の辺検出スキームを使用して、対応する露出した辺422の反対側の発見された辺722を決定できる。MVR512にしたがった導出および把持に基づいて認識されていない物体414を上昇させることによって、持ち上げた物体の上面と周囲の物体/表面との間に高さの差が生じる。高さの差を使用して、発見された辺722を明瞭に決定できる。ロボットシステム100は、露出した辺422から延びる辺を検索することに基づいて、発見された辺722を決定できる。ある実施形態においては、ロボットシステム100は、長方形の上面を有する長方形の箱/パッケージ等に関して、露出した辺422からほぼ直角に延びる辺を決定することに基づいて、発見された辺722を決定できる。
【0063】
ロボットシステム100は、異なる向きを有する発見された辺722の2つ以上が交差する接合点として、発見された角部726を決定することができる。ある実施形態においては、ロボットシステム100は、所定の関数または方程式等にしたがって、発見された角部726の角度(例えば、角部の角度の測定値730)を決定できる。
【0064】
発見された辺722を決定することに基づいて、ロボットシステム100は、発見された辺722および/または露出した辺422の辺の長さの測定値728(例えば、物体の寸法)を計算できる。ロボットシステム100は、撮影画像(例えば、比較データ702および/またはセンサデータ501)の辺の長さを決定することと、画像内のその長さを1つまたは複数の所定のマッピング関数/方程式等にしたがって実世界の長さに変換することとに基づいて、辺の長さの測定値728を計算できる。
【0065】
ある実施形態においては、ロボットシステム100は、比較データ702に基づいて、辺の長さの測定値728を決定でき、辺の長さの測定値728を使用して、更新されたデータ740を生成できる。例えば、上面図データ420および/またはセンサデータ501の一部分をクロップする時、ロボットシステム100は、MVR512の1つまたは複数の境界を越えて、対応する辺の長さの測定値728まで延びることができる。露出した辺/角部にしたがって幾つかの物体を持ち上げる時、ロボットアーム302は、露出した角部がロボットの土台の反対側に位置する時等、比較データ702において、持ち上げた物体の一部を遮蔽することになり得る。したがって、ロボットシステム100は、露出した角部/辺、および/または、辺の長さの測定値728と比べて、遮蔽された領域を判断し、上面図データ420および/またはセンサデータ501から対応する部分をクロップできる。上記のように、ロボットシステム100は、露出した角部/辺、および/または、辺の長さの測定値728を基準として用いて、クロップされた部分を重ね合わせて、遮蔽された領域に置き換えることができる。ロボットシステム100は、最初の画像(例えば、持ち上げ前に取得した第1の画像)からクロップした部分を比較データ702の遮蔽された部分に重ね合わせたまたは置き換えた複合画像として、更新されたデータ740を生成できる。
【0066】
上記処理結果の1つまたは複数に基づいて、ロボットシステム100は、対応する物体(例えば、認識されていない物体414)の登録データ254を生成できる。例えば、ロボットシステム100が、対象スタック310、または、その一部分(例えば、最上層)が、1つまたは複数の認識されていない物体414を含むと判断すると、ロボットシステム100は、上記のように、認識されていない物体414のうちの1つを登録対象506として選択し、登録対象506を操作し、および/または、登録対象506に関するデータを取得できる。さらに、ロボットシステム100は、所定のプロトコル/フォーマットにしたがって、登録対象506に関して、登録データ254の新しいインスタンス(例えば、
図2のマスタデータ252に新しいエントリまたは記録)を作成できる。したがって、ロボットシステム100は、取得したデータを登録データ254の新しいインスタンスに記憶できる。例えば、ロボットシステム100は、登録対象506に関して、下向きの力の測定値604を重量として、推定CoM610をCoMとして、辺の長さの測定値728を水平寸法として、角部の角度の測定値730もしくはその派生値を水平方向の形状として、更新されたデータ740を表面画像として、または、これらの組み合わせを記憶できる。
【0067】
比較データ702と最初のデータとに基づいて更新されたデータ740は、物体認識を向上させる。登録対象506を持ち上げた後に取得された比較データ702を、更新されたデータ740を生成するベースとして用いることは、物体の辺の正確な決定につながる。物体の辺の決定の精度が向上することは、さらに、表面画像と、上記様々な測定値の決定の精度を向上させる。取得したデータおよび表面画像の精度が向上すると、さらに、対応する登録データ254に基づいて、その後に同じ種類の物体を認識する可能性を向上させる。ある実施形態においては、比較データ702を取得、処理することは、最初のデータのみを処理すること、または、スタックの状態を処理することよりも測定値および表面画像の精度を向上させる。最初の持ち上げ、および/または、水平方向の移動は、登録対象506の周囲の物体の邪魔をしたり、その物体を動かしたりする場合があるので、最初の持ち上げおよび/または水平方向の移動の後、残りのスタックの代わりに、登録対象506を直接、分析することは、精度を向上させる。
【0068】
目的地ベースのセンサを用いた登録の動作フロー
図8は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100を動作させる方法800のフロー図である。方法800は、未知の物体(例えば、
図4Bの認識されていない物体414)を登録する方法であってよい。ある実施形態においては、方法800は、認識されていない物体414を
図1のスタート位置114(例えば、
図3の対象スタック310)から
図1のタスク位置116(例えば、
図3のコンベヤ306)に移動させている間に、または、移動させる一部として、認識されていない物体414を登録することを含んでよい。方法800は、
図2の記憶装置204の1つまたは複数に記憶された命令を
図2のプロセッサ202の1つまたは複数を用いて実行することに基づいて、実施されてよい。
【0069】
ブロック802において、ロボットシステム100(例えば、ロボットシステム100の
図2のプロセッサ202および/またはセンサ216)は、ソースデータを取得できる。例えば、ロボットシステム100は、スタート位置114で、(例えば、1つまたは複数の物体を操作/移動する前の)対象スタック310の最初の2Dおよび/または3D表現を取得できる。ある実施形態においては、ロボットシステム100は、
図3の第1の画像センサ312および/または他のセンサを動作させて、ソースデータを生成できる。したがって、ロボットシステム100は、
図4Bの上面図データ420、
図5Aのセンサデータ501等を生成できる。ロボットシステム100は、センサ(例えば、第1の画像センサ312)とプロセッサ202との間でソースデータを通信できる。
【0070】
ブロック804において、ロボットシステム100は、取得したソースデータを処理して、認識可能な物体を検索できる。例えば、ロボットシステム100は、ソースデータまたはその派生値を
図2のマスタデータ252と比較できる。ある実施形態においては、ロボットシステム100は、第1の画像センサ312からの(例えば、対象スタック310の上面図に対応する)1つまたは複数の2D画像データを、マスタデータ252の既知のまたは予測された物体の表面画像と比較できる。
【0071】
ブロック806において、ロボットシステム100は、ソースデータまたはソースデータの任意の一部が、マスタデータ252に表される既知のまたは予測した物体の態様と一致するか否かを判断できる。ロボットシステム100は、ソースデータまたはその派生値が、マスタデータ252のエントリ(例えば、既知の物体を表す登録データ)と一致する場合に、
図4Bの認識された物体412を決定できる。そうでない場合、ロボットシステム100は、ソースデータに表された物体の1つまたは複数は、
図4Bの認識されていない物体414の1つまたは複数を含むと判断できる。
【0072】
物体が認識された場合、ブロック808において、ロボットシステム100は、認識された物体412をタスク位置116(例えば、コンベヤ306)に移動することを含む、認識された物体412をさらに処理できる。ある実施形態においては、ロボットシステム100は、一致に基づいて、認識された物体412の位置、辺、重心(CoG)位置、把持位置、または、これらの組み合わせを決定することによって、ソースデータをさらに処理できる。例えば、ロボットシステム100は、画像内の一致する部分の位置を決定し、その位置を、画像ソースの既知の位置にしたがって、所定の座標系、画像から座標へのマッピング関数/方程式、または、他の所定のアルゴリズムを用いて、実世界の位置に変換できる。ロボットシステム100は、マスタデータ252の一致部分に対して、(例えば、
図4の登録ベースの辺424に対応する)辺の位置をさらに決定し、同様に、その辺の位置を画像出力、および/または、実世界の位置/座標に変換できる。さらに、ロボットシステム100は、認識された物体412を移動するために、マスタデータ252の一致するエントリ/物体の他の態様を検索して、CoM位置、所定の把持位置、または、これらの組み合わせにアクセスできる。
【0073】
ロボットシステム100は、認識された物体412をタスク位置116に移動する動作計画を導出および/または実施することができる。例えば、ロボットシステム100は、認識された物体412の位置および/または上記把持位置を使用して、
図3のロボットアーム302および/または
図3のエンドエフェクタ304の対応する位置を導出できる。ロボットシステム100は、ロボットアーム302および/またはエンドエフェクタ304の導出した位置と現在の/投影された位置とを使用して、動き、および/または、対応するアクチュエータのコマンド/設定をさらに導出できる。同様に、ロボットシステム100は、認識された物体412をスタート位置114からタスク位置116に移動するために、認識された物体412の持ち上げ、水平方向の移動、下降、および/または、回転に対応するロボットアーム302および/またはエンドエフェクタ304の位置、動き、および/または、対応するアクチュエータのコマンド/設定を導出できる。ロボットシステム100は、アクチュエータのコマンド/設定を順番に組み合わせることに基づいて、認識された物体412をスタート位置114からタスク位置116に移動させる動作計画を導出できる。ロボットシステム100は、移動コマンド/設定を所定の動きのシーケンス、および/または、対応するアクチュエータのコマンド/設定と組み合わせることに基づいて、物体を把持および/または解放する動作計画をさらに導出できる。ある実施形態においては、ロボットシステム100は、
図3の第2の交差センサ318からのトリガ信号に基づいて、物体を解放する動作計画を導出できる。第2の交差センサ318は、移動された物体の底部が載置面より上の安全な解放高さに対応する検出線/平面を超える時、トリガ信号を生成するように構成されてよい。
【0074】
ある実施形態においては、ロボットシステム100は、コマンド/設定をロボットアーム302および/またはエンドエフェクタ304と通信することに基づいて、動作計画を実施/実行できる。したがって、ロボットシステム100は、導出したコマンド/設定にしたがって、ロボットアーム302および/またはエンドエフェクタ304の
図2の駆動装置212および/または
図2の運搬モータ214を動作させることに基づいて、導出した動作計画を実行できる。ある実施形態においては、方法800は、ブロック802に戻り、認識された物体412の1つまたは複数を移動した後、更新されたソースデータを取得できる。露出したおよび/またはアクセス可能な認識された物体412の全て(例えば、対象スタック310の一番上の層の全ての認識された物体412)がタスク位置116に移動されるまで、方法は、上記プロセス(例えば、ブロック802〜808)を繰り返し、実施できる。
【0075】
残りの露出したおよび/またはアクセス可能な(例えば、マスタデータ252のエントリに対応または一致する)物体が認識されなくなった場合に、ロボットシステム100は、ブロック810に示すように、スタート位置114の物体の露出した辺および/または角部を識別できる。ある実施形態においては、ロボットシステム100は、ソースデータ(例えば、2Dおよび/または3Dの画像出力)を処理して、露出した、および/または、ロボットアーム302がアクセスできる表面の高さ/向きの差を決定できる。例えば、ロボットシステム100は、パターン(例えば、連続したおよび/または線形のパターン)の画像出力の画素の明るさ、画素の色、高さ/深度測定値等を分析して、
図2の露出した辺422を識別できる。ある実施形態においては、例えば、ロボットシステム100は、ソーベルフィルタを用いて画像出力を処理して、露出した辺422を識別できる。ロボットシステム100は、異なる向き/傾斜を有する2つの露出した辺の間の接合点または交点として、
図4の露出した外側角部426を同様に識別できる。
【0076】
ブロック812において、ロボットシステム100は、露出した外側角部426の1つを選択することに基づいて、登録対象を決定できる。換言すると、ロボットシステム100は、選択された露出した外側角部426にある、または、選択された露出した外側角部426を形成する認識されていない物体414の1つを、後続の処理のための
図5の登録対象506として、決定できる。ロボットシステム100は、所定のパターンまたは規則のセットにしたがって、露出した外側角部426の1つを選択できる。例えば、ロボットシステム100は、ロボットアーム302、または、
図1の対応する移動ユニット104の土台の方を向く、および/または、それらに最も近い角部を選択できる。以下にさらに詳細に記載するように、ロボットシステム100は、ある層の全ての物体が移動された場合等に、認識されていない物体414の全てが取り除かれるまで、繰り返し、角部を選択し、対応する登録対象506を処理/移動することができる。
【0077】
ブロック814において、ロボットシステム100は、登録対象506の
図5のMVR512および/または
図5の把持位置520を、ソースデータに基づいて決定できる。ある実施形態においては、ロボットシステム100は、エンドエフェクタ304にしたがって、および/または、上記の露出した辺422から延びる2つ以上の交差する線に基づいて、MVR512を決定できる。ロボットシステム100は、上記のように選択された露出した外側角部426の周囲で1つまたは複数の位置/向きでMVR512を重ね合わせることができる。例えば、ロボットシステム100は、MVR512の基準点(例えば、角部)の1つまたは複数を、選択された露出した外側角部426と整列させてよい。ロボットシステム100は、MVR512の少なくとも1対の平行でない隣り合う辺が、露出した辺422の1対の平行でない隣り合うインスタンスと重なるように、MVR512を重ね合わせることができる。ある実施形態においては、ロボットシステム100は、MVR512の異なる重ね合わされた位置/向きを分析して、把持位置520を決定できる。例えば、ロボットシステム100は、MVR512が、
図5の検出した線522と重ならない、
図5の推定した辺524と重ならない、および/または、上記の露出した表面の比率に関する規則を満たす場合、MVR512の位置/向きとして把持位置520を決定できる。
【0078】
ある実施形態においては、ロボットシステム100は、吸引カップの部分的なグループを作動させることに基づいて等、把持位置/エリアを調整できるエンドエフェクタ304を含み得る。例えば、ロボットシステム100は、エンドエフェクタ304の外側角部に対応する左/右もしくは上/下の半分、4分の1/セグメント、エンドエフェクタ304とロボットアーム302の継ぎ目に対応する中央部分、または、これらの組み合わせ等、エンドエフェクタ304の下の特定のエリアに対応する所定のグループにしたがって、吸引カップを個々に作動させることができる。したがって、ロボットシステム100は、所定のグループの1つまたは複数に対応するMVR512および/または把持位置520を使用できる。例えば、ロボットシステム100は、露出した辺422と、検出した線522および/または推定した辺524との間の1つまたは複数の寸法を導出できる。ロボットシステム100は、導出した寸法内に収まり、対応するMVR512を選択できる最大のグループを決定できる。ロボットシステム100は、露出した辺422の1対の平行でない隣り合うインスタンスにMVR512を整列させる等によって、上記と同様に、選択したMVR512を使用して、把持位置520を決定できる。
【0079】
ブロック816において、ロボットシステム100は、登録対象506を最初に移動させることができる。例えば、ロボットシステム100は、登録対象506を把持位置520で把持し、登録対象506を最初に持ち上げ、および/または、水平方向に移動させる動作計画を導出、実施、および/または、実行できる。ロボットシステム100は、上記と同様に、動作計画を導出、実施、および/または、実行できるが、タスク位置116に移動する代わりに、限られたまたは所定の距離/方向だけ登録対象506を移動させてよい。例えば、ロボットシステム100は、登録対象506を持ち上げ、および/または、所定の距離にわたって水平方向に移動させることができる。また、ロボットシステム100は、少なくとも下向きの力の測定値604が安定するまで、および/または、連続した撮像の結果、上記のように、新しく区別できる辺が示されるまで、登録対象506を持ち上げ、および/または、水平方向に移動させることができる。
【0080】
ブロック818において、ロボットシステム100は、移動された登録対象506のデータ(例えば、
図7の比較データ702等、撮像結果)を取得できる。ある実施形態においては、ロボットシステム100は、登録対象506を最初に持ち上げ、および/または、水平方向に移動した後、対象スタック310の上の第1の画像センサ312から画像データを取得できる。
【0081】
登録対象506は、隣または周囲の物体から垂直方向におよび/または水平方向に離れたので、比較データ702は、他の物体/表面と以前は隣り合っていたまたは当接していた登録対象506の辺(例えば、
図7の発見された辺722)を明瞭に捉えることができる。したがって、ブロック820において、ロボットシステム100は、登録対象506の特性を決定できる。ある実施形態においては、ロボットシステム100は、取得した撮像結果を処理して、視覚的または外側の特性を決定できる。例えば、ロボットシステム100は、比較データ702に表された辺を検出することに基づいて等、上記のように、
図7の発見された辺722および/または発見された角部726を決定できる。また、ロボットシステム100は、上記のように、
図7の辺の長さの測定値728を計算でき、
図7の角部の角度の測定値730を決定でき、および/または、
図7の更新されたデータ740を生成できる。さらに、ある実施形態においては、ロボットシステム100は、力および/またはトルク測定値等の他のデータを取得、処理できる。例えば、ロボットシステム100は、
図6の下向きの力の測定値604および/または
図6のトルク測定値606等、
図6の力トルクセンサ602からの出力を表すデータを取得できる。ロボットシステム100は、そのデータを使用して、登録対象506の
図6の重量および/または推定CoM610を決定できる。
【0082】
ある実施形態においては、ブロック822に示すように、ロボットシステム100は、登録対象506を再把持するか否かを判断できる。例えば、ロボットシステム100は、下向きの力の測定値604および/またはトルク測定値606を1つまたは複数の閾値と比較して、登録対象506を再把持するか否かを判断できる。また、ロボットシステム100は、把持位置520と推定CoM610との間の分離距離を決定し、それにしたがって、比較のための閾値を調整できる。1つまたは複数の実施形態において、ロボットシステム100は、登録対象506を再把持するか否かを判断する時に、把持尺度(例えば、吸引カップと把持する表面との間の真空度の測定値)をさらに決定、処理できる。
【0083】
重量、トルク、把持、および/または、推定CoM610に対応する処理結果が、1つまたは複数の閾値条件を超える場合に、ロボットシステム100は、ブロック824に示すように登録対象506を再把持できる。ロボットシステム100は、登録対象506を元の位置に移動し、把持を解放することに基づいて、登録対象506を再把持できる。ロボットシステム100は、推定CoM610の上に把持位置520を再決定できる。ある実施形態においては、ロボットシステム100は、
図6の推定トルク‐アームベクトル608にしたがって、選択された露出した外側角部426から離れる方に把持位置520を調整できる。ある実施形態においては、ブロック822および824の(破線を用いて示す)プロセスは、任意選択で実施されてよい、または、方法800から除かれてよい。したがって、ある実施形態においては、方法800は、ブロック822および824を実施せずに、ブロック820からブロック826に移行してよい。
【0084】
ブロック826において、ロボットシステム100は、登録対象506を現在の位置から目的地に移動できる。ある実施形態においては、ロボットシステム100は、登録対象506を再把持することなく、および/または、登録対象506の再把持を検討することなく、最初の持ち上げ/水平移動後、登録対象506を移動させることができる。ロボットシステム100は、再把持後、登録対象506を移動もできる。ある実施形態においては、ロボットシステム100は、比較した値が閾値条件未満の場合等に、現在の把持位置が登録対象506の移動に十分であると判断できる。
【0085】
ロボットシステム100は、認識された物体412を移動するために前述と同様に、登録対象506を移動できる。例えば、ロボットシステム100は、動作計画を導出、実施、および/または、実行することによって、登録対象506を現在位置からタスク位置116に移動させるようにロボットアーム302および/またはエンドエフェクタ304を動作させることができる。ある実施形態においては、ロボットシステム100は、ブロック820で決定された特性に基づいて、動作計画を導出、実施、および/または、実行できる。例えば、ロボットシステム100は、登録対象506の決定された重量にしたがって、移動速度を制御できる。ある実施形態においては、ロボットシステム100は、把持尺度、および/または、ブロック820で決定された特性の変化に基づいて、動作計画を導出、実施、および/または、実行できる。例えば、ロボットシステム100は、把持尺度が閾値未満に低下または降下する場合に、移動速度を低減でき、および/または、登録対象506を指定/決定された位置に載置できる。また、移動中の把持の失敗によって、物体の一部(例えば、パッケージの底部または中身)が落下する、物体の中身が移動する、および/または、エンドエフェクタに対して物体が移動する場合等に、トルク測定値、および/または、重量の変化を検出することに基づいて、ロボットシステム100は、移動速度を低減でき、および/または、登録対象506を指定/決定された位置に載置できる。
【0086】
ブロック828において、ロボットシステム100は、移動中、追加データを取得できる。追加データは、垂直の辺、寸法、および/または、表面に関する情報等、最初のソースデータには表れていない場合がある登録対象506の物理的特性に関する情報を含み得る。
【0087】
ブロック830において、ロボットシステム100は、動作の実施中、交差イベントを検出し、検出されたイベントが同時に動作に対応するように、対応するタイムスタンプを検出できる。交差イベントは、タスク位置116の上にタスク位置に重なるように位置する
図3の第1の交差センサ316の検出線/平面(例えば、横方向または水平方向の線/平面)を登録対象506の底部が超える/に進入することに対応してよい。ロボットシステム100は、以前の画像データで捉えられていない場合のある登録対象506の他の物理的特性の決定に、交差イベントまたは対応するタイムマーカを使用できる。
【0088】
ブロック832において、ロボットシステム100は、交差イベント時に、エンドエフェクタ位置を決定できる。ある実施形態においては、ロボットシステム100は、動作計画を実行中の時間にわたって、エンドエフェクタ304の位置を追跡または推定できる。例えば、ロボットシステム100は、(例えば、ロボットシステム100に関連付けられた空間の所定のグリッドまたはマッピングにしたがって)エンドエフェクタ304の現在位置を1つまたは複数の座標セットとして、導出および/または追跡できる。また、ロボットシステム100は、対応する動作計画の進行を追跡することに基づいて、エンドエフェクタ304の現在位置を導出または追跡できる。したがって、ロボットシステム100は、交差イベントのタイムマーカに対応するエンドエフェクタ位置(例えば、
図3に表されたx−y−z座標値)を決定できる。ある実施形態においては、ロボットシステム100は、交差イベント、または、第1の交差センサ316からの対応する出力を、
図3の把持部高さ322を導出または取得するトリガとして使用できる。例えば、ロボットシステム100は、垂直座標値(例えば、y軸に沿った座標値)を使用して、把持部高さ322を導出または取得できる。
【0089】
ブロック834において、ロボットシステム100は、把持部高さ322を使用して、
図6の物体高さ620(例えば、登録対象506の高さ)を計算できる。例えば、ロボットシステム100は、交差イベント時の把持部高さ322と
図3の交差基準高さ324(例えば、既知の記憶されていた値)との差を計算することに基づいて、物体高さ620を計算できる。
【0090】
ある実施形態においては、ブロック836に示すように、ロボットシステム100は、登録対象506のプロファイルデータ(例えば、辺および/または表面等に関する側面図を表すデータ)を取得するトリガとして交差イベントを使用できる。例えば、ロボットシステム100は、タスク位置116と、交差イベントに対応する空間とに向けられた1つまたは複数の水平方向に向いたセンサ/カメラを含み得る。したがって、プロファイルデータは、水平方向に向いたセンサ/カメラからの登録対象506の画像(例えば、プロファイル画像データ)を含み得る。具体的な例として、ロボットシステム100は、タイムマーカを使用して、水平方向に向いたセンサからのビデオフィードの時間を識別でき、および/または、水平方向に向いたセンサが画像を撮影するようトリガできる。画像に基づいて、ロボットシステム100は、下向きのセンサ(例えば、第1の画像センサ312および/または第2の画像センサ314)では検出できなかった場合のある登録対象506の垂直の辺/表面に関する追加情報(例えば、物体高さ620、および/または、1つまたは複数の表面画像)を取得できる。
【0091】
ある実施形態においては、ロボットシステム100は、登録対象506の物体高さ620を使用して、動作計画を再導出でき、および/または、動作計画の実施/実行を調整できる。例えば、物体高さ620は加速度に影響を与え得るので、ロボットシステム100は、登録対象506の物体高さ620に対応する移動速度/加速度(例えば、最大移動速度/加速度)を計算できる。ロボットシステム100は、計算された移動速度/加速度にしたがって動作計画(例えば、コマンド、設定、および/または、それらのシーケンス)を再導出または調整でき、それに応じて、実施/実行を行うことができる。交差センサ(例えば、
図3の第1の交差センサ316)を使用して移動中に物体高さ620を決定することによって、ロボットシステム100は、移動中の物体の形状/寸法の任意の変化を正確に考慮できる。したがって、ロボットシステム100は、物体の移動中、実際の物体高さ620(例えば、置いた状態ではなく、吊るされた状態の物体の高さ)を使用して、形状の変化に関連する衝突を低減/除去できる。
【0092】
ブロック838において、ロボットシステム100は、移動された物体(例えば、登録対象506)を、それに対応する登録データ254の新しいインスタンスを作成および/またはポピュレートすること等に基づいて、登録できる。新しい登録データ254は、登録対象506(例えば、以前は認識されていない物体414)の新しい記録を表し得る。ある実施形態においては、ロボットシステム100は、プロファイルデータまたはプロファイルデータの処理結果(例えば、高さ測定値および/または表面画像)を含む取得した情報を、マスタデータ252のエントリとさらに比較できる。比較が一致する場合に、ロボットシステム100は、登録対象506の認識状態を認識された物体412に更新できる。そうでない場合、ロボットシステム100は、以前は認識されていなかった物体の登録を続けてよい。ロボットシステム100は、登録対象506の物理的特性に関する取得した情報をマスタデータ252に記憶することによって、登録対象506を登録できる。例えば、ロボットシステム100は、(例えば、ブロック812で登録対象を決定する一部として)移動中または移動前に登録データ254のエントリを作成できる。ロボットシステム100は、重量(例えば、下向きの力の測定値604)、推定CoM610、辺の長さの測定値728、角部の角度の測定値730、更新されたデータ740、および/または、他の画像データ、または、これらの組み合わせ等、取得したデータを作成したエントリに記憶できる。ロボットシステム100は、登録対象506がタスク位置116に置かれる時、および/または、エンドエフェクタ304から解放される時、登録データ254を確定および/または記憶できる。
【0093】
ある実施形態においては、方法800は、認識されていない物体のグループを1つの画像から繰り返し、移動、登録できる。したがって、1つの未知の物体を移動、登録した後、方法800は、ブロック812へのフィードバックパスが示すように、残りの認識されていない物体414の中から新しい登録対象を決定できる。ある実施形態においては、ブロック802へのフィードバックパスによって示すように、方法800は、未知の物体を移動、登録した後、スタート位置114を再撮像することを含み得る。
【0094】
ソースベースのセンサを用いた物体の移動および登録
図9は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100の図である。
図9に示すロボットシステム100の態様は、
図3に示す態様と類似し得るが、1つまたは複数のセンサが異なる位置に配置されている。
【0095】
ロボットシステム100は、エンドエフェクタ904(例えば、把持部)を含むロボットアーム902(例えば、
図1の移動ユニット104のインスタンス)を含み得る。ロボットアーム902は、
図1のスタート位置114と
図1のタスク位置116との間で
図1の対象物体112を移動するように構成されてよい。ある実施形態においては、スタート位置114は、対象スタック910(例えば、対象物体112を含み得る物体のグループ)を載せたコンテナ908(例えば、囲いのあるカート)に対応し得る。ロボットアーム902のタスク位置116は、コンベヤ906(例えば、
図1の運搬ユニット106のインスタンス)上の載置位置(例えば、スタート/出口点)であってよい。例えば、ロボットアーム902は、対象スタック910から物体を持ち上げ、他の目的地/タスクに運搬するためにコンベヤ906にその物体を置くように構成されてよい。
【0096】
ロボットシステム100は、ロボットアーム902を用いて移動動作を行う時、
図2のセンサ216の1つまたは複数を使用できる。ある実施形態においては、ロボットシステム100は、第1の画像センサ912および/または第2の画像センサ914を含み得る。第1の画像センサ912は、スタート位置114を撮像および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。第2の画像センサ914は、タスク位置116を撮像および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。例えば、第1の画像センサ912は、スタート位置114の上でスタート位置114を向いている既知の位置に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。第1の画像センサ912は、対象スタック910の上面図等、スタート位置114の1つまたは複数の上面図に対応する画像データを生成できる。また、第2の画像センサ914は、タスク位置116の上/横でタスク位置116を向いている1つまたは複数の既知の位置に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。したがって、第2の画像センサ914は、タスク位置116に、または、タスク位置116から閾値距離内にある対象物体112の1つまたは複数の上面図および/または側面図に対応する画像データを生成できる。
【0097】
ある実施形態においては、ロボットシステム100は、物体が、対応する検出線/平面(例えば、交差基準920)を超える/出る交差イベントを検出するように構成された1つまたは複数の交差センサ(例えば、ソース交差センサ916および/または解放点センサ918)を含み得る。例えば、交差センサは、送信信号および/または反射信号(例えば、光信号、レーザ等)の連続性/中断に基づいて、交差イベントを検出するラインセンサまたは平面センサに対応し得る。交差センサは、ある実施形態においては、検出線に沿って光信号を送信し、検出線の端で送信信号を検出および/または反射することによって、交差基準920を確立できる。したがって、交差センサは、送信された光信号の受信の中断(例えば、不連続性)を検出でき、これは、検出線を超える/に入る物体を表す進入イベントに対応し得る。同様に、交差センサは、中断期間後、送信信号を再検出でき、これは、物体が検出線を出ることを表す退出イベントに対応し得る。
【0098】
ある実施形態においては、解放点センサ918を使用して、把持した物体を解放できる。解放点センサ918は、タスク位置116より上に配置されてよい、および/または、所定の高さに検出線を確立できる。検出線の高さは、物体を損傷することなく、物体を安全に投下する高さであってよい。例として、検出線の高さは、コンベヤ906の載置位置の上10cm未満であってよい。したがって、ロボットシステム100は、解放点センサ918が検出した交差イベントを、エンドエフェクタ304から運搬中の物体を解放するトリガとして、使用してよい。
【0099】
ある実施形態においては、移動中、ソース交差センサ916を使用して、対象物体112の
図6の物体高さ620を測定できる。例えば、ロボットシステム100は、ソース交差センサ916が検出した交差イベント(例えば、退出イベント)時に、把持部高さ922(例えば、地面等の基準点に対するエンドエフェクタ904の垂直位置/場所)を決定できる。ロボットシステム100は、把持部高さ922を交差基準高さ924(例えば、ソース交差センサ916の既知の垂直位置、および/または、交差基準920)と比較して、移動中の対象物体112の物体高さ620を計算できる。換言すると、ソース交差センサ916は、対象物体112の底部が検出線を出る時を示すトリガとして働くことができる。したがって、ロボットシステム100は、このような時の把持部高さ922と、交差基準920の既知の高さとを使用して、対象物体112の物体高さ620を計算できる。ある実施形態においては、ソース交差センサ916は、対象物体112の底部が検出線を超える場合に、1つまたは複数のセンサ(例えば、2Dおよび/または3Dのカメラ)をトリガしてデータを収集できる。したがって、ロボットシステム100は、異なる視点から物体に関するデータ(例えば、水平方向に向けられたカメラからの側面もしくはプロファイル図/画像、異なる次元に沿った形状測定値等)を取得できる。
【0100】
説明目的で、コンテナ908に取り付けられたソース交差センサ916を示している。しかしながら、ソース交差センサ916は異なった構成で(例えば、スタート位置114の装置/コンテナとは独立していて)よいことは理解されたい。ソース交差センサ916は、スタート位置114に、または、スタート位置114の近くに配置されて、スタート位置114の上のおよび/またはスタート位置114に重なるライン/平面(例えば、交差基準高さ924の交差基準920)に対する交差イベントを検出するように構成された1つまたは複数のデバイスを含み得る。ある実施形態においては、ソース交差センサ916は、比較的短い距離(例えば、10センチメートル等、1メートル未満)だけ載置面/位置より上にある線/平面に対する交差イベントを検出するように構成されてよい。
【0101】
ある実施形態においては、ロボットシステム100は、スタート位置114に向けられた1つまたは複数の追加のセンサを含み得る、および/または、それらのセンサと対話できる。例えば、ロボットシステム100は、物体および/または対象スタック910の追加情報(例えば、1つまたは複数の垂直の表面および/またはプロファイル形状の画像)を取得するように構成された1つまたは複数の水平方向に向いた2D/3D撮像装置を含み得る。水平方向に向いた2D/3D撮像装置は、交差基準920を出る時の物体のプロファイル/側面図を取得するように構成されてよい。
【0102】
ソース交差センサ916および/または追加のセンサは、移動中の物体(例えば、認識されていない物体)の追加データを提供する。前述のように、物体を移動中、ソース交差センサ916を使用して、追加の操作/動き無しに、移動された物体の物体高さ620を計算できる。さらに、物体を持ち上げた後、物体高さ620を決定することは、他の物体の上に載ると変形する物体があるので、高さ測定値の精度を向上させる。さらに、ソース交差センサ916は、第1の画像センサ912および/または第2の画像センサ914によって検出できないことのある物体に関する情報を取得するように追加のセンサをトリガできる。以下にさらに詳細に記載するように、物体高さ620および/または追加情報を使用して、認識されていない物体の
図2の登録データ254を生成できる。したがって、ロボットシステム100は、認識されていない物体に関してより多くの情報を取得でき、この情報を使用して、移動タスクを妨害することなしに、他の類似の物体のその後の認識の可能性を高め、および/または、物体のさらなる操作の精度を向上させる。
【0103】
ある実施形態においては、ロボットシステム100は、物体高さ620および/または追加情報を使用して、上面に加えて、物体の他の表面(例えば、垂直の表面/寸法)を分析すること等によって、物体を再分析、認識できる。したがって、ロボットシステム100は、認識されない箱または検出漏れ結果の数を低減できる。
【0104】
ソースベースのセンサの処理状態
図10A〜
図10Dは、
図9のソース交差センサ916を利用する様々な処理状態の例を記載するために様々な処理状態を示す。
図1のロボットシステム100は、エンドエフェクタ904および/または
図1の対象物体112の位置/高さにしたがって、ソース交差センサ916を動作させることができる。
【0105】
図10Aは、コンテナ908の上および/または外に位置する
図9のロボットアーム902および/またはエンドエフェクタ904に対応する最初の状態1002を表す。最初の状態1002は、横方向に向いた交差基準に対応するセンサからの1つまたは複数の出力を表すことができる。最初の状態1002は、ロボットアーム902が、対象物体112の把持および持ち上げのためにコンテナ908内に入り始めることに対応し得る。したがって、ロボットシステム100は、最初の状態1002の間は、ソース交差センサ916からの出力をオフにおよび/または無視することができる。
【0106】
図10Bは、
図9のロボットアーム902が、コンテナ908の上部部分に入って下に降り、対象物体112に接触、把持すること、および/または、対象物体112を最初に持ち上げることに対応する接近状態1004を表す。例えば、接近状態1004は、エンドエフェクタ904が対象物体112の上(例えば、
図1のスタート位置114に関連付けられた境界内)にあり、および/または、
図9の交差基準高さ924より下にあることを表してよい。ある実施形態においては、ロボットシステム100は、接近状態1004中、交差センサを引き続きオフのままにしてよい、および/または、交差センサの出力を無視してよい。
【0107】
図10Cは、対象物体112が交差基準920を超えるまたは進入することに対応する交差状態1006を表す。ロボットシステム100は、ロボットアーム902を動作させながら、
図9の把持部高さ922を含む把持部位置(例えば、
図9に示すx−y−zの値等、座標値のセット)を追跡できる。把持部高さ922が
図9の交差基準高さ924を超える場合に、ロボットシステム100は、作動イベント1012を生成して、ソース交差センサ916をオンにできる。ソース交差センサ916からの出力は、対象物体112が交差基準920を超えるまたは進入する最初の交差状態1014に対応し得る。
【0108】
ある実施形態においては、ロボットシステム100は、最初の状態1002の後(例えば、接近状態1004中)、ロボットアーム902が交差基準920を超えるので、作動イベント1012を生成でき、および/または、最初の交差状態1014を決定できる。換言すると、ロボットシステム100は、エンドエフェクタ904がコンテナ908の上にあり、且つ、把持部高さ922が交差基準高さ924未満の場合に、作動イベント1012を生成でき、および/または、最初の交差状態1014を決定できる。
【0109】
図10Dは、対象物体112が交差基準920を出るまたは通過することに対応する通過状態1008を表す。通過状態1008は、ソース交差センサ916が検出する退出イベント1016に対応し得る。例えば、送信された光/レーザ信号は、対象物体112の底部が交差基準920より上にある時、ソース交差センサ916によって検出され得る。
【0110】
ロボットシステム100は、退出イベント1016、または、そのタイミング(すなわち、退出イベント1016に対応するタイムスタンプ)を使用して、対象物体112の物体高さ620を計算できる。ソース交差センサ916からの情報を用いて物体高さ620を計算する処理は、目的地交差センサ(例えば、
図3の第1の交差センサ316)からの情報を用いた高さ計算の処理と類似してよい。例えば、ロボットシステム100は、退出イベント1016時に、把持部高さ922を決定できる。ロボットシステム100は、退出イベント1016時に、把持部高さ922と交差基準高さ924(例えば、既知/所定の値)との差に基づいて、物体高さ620を計算できる。
【0111】
ソースベースのセンサを用いた登録の動作フロー
図11は、本技術の1つまたは複数の実施形態による、
図1のロボットシステム100を動作させる方法1100の更なるフロー図である。方法1100は、
図2の記憶装置204の1つまたは複数に記憶された命令を
図2のプロセッサ202の1つまたは複数で実行することに基づいて、実施されてよい。
【0112】
方法1100は、未知の物体(例えば、
図4Bの認識されていない物体414)を登録する方法であってよい。ある実施形態においては、方法1100は、認識されていない物体414を
図1のスタート位置114(例えば、
図9の対象スタック910)から
図1のタスク位置116(例えば、
図9のコンベヤ906)に移動させる間、または、移動させる一部として、認識されていない物体414を登録することを含み得る。さらに、方法1100は、
図10A〜
図10Dに示す様々な状態およびデータを処理することを含み得る。方法1100は、
図3の第1の交差センサ316の代わりに
図9のソース交差センサ916を利用して移動された物体に関するデータを取得すること以外は、
図8の方法800と類似してよい。
【0113】
ブロック1102において、ロボットシステム100は、
図8のブロック802に関して前述と同様に、ソースデータを取得できる。ブロック1104において、ロボットシステム100は、
図8のブロック804に関して前述と同様に、認識可能な物体を検索できる。ブロック1106において、ロボットシステム100は、
図8のブロック806に関して前述と同様に、取得したソースデータが
図4Bのいずれかの認識された物体412を表すか否かを判断できる。ブロック1108において、
図8のブロック808に関して前述と同様に、ロボットシステム100は、認識された物体412を移動できる。
【0114】
ブロック1110において、ロボットシステム100は、
図8のブロック810〜824に関して前述と同様に、認識できない物体を処理できる。例えば、ロボットシステム100は、露出した辺および/または角部を識別し、登録対象を決定し、MVRおよび/または把持位置を決定し、登録対象を最初に移動し、移動された登録対象の更新された画像を取得し、登録対象の特性を決定し、および/または、登録対象を再把持できる。
【0115】
ブロック1126において、ロボットシステム100は、
図8のブロック826に関して前述と同様に、登録対象506を目的地に移動できる。ブロック1128において、ロボットシステム100は、ソース交差センサ916の使用等によって、移動中、追加データを決定できる。例えば、ロボットシステム100は、1つまたは複数の状態(
図10A〜
図10Dに示す、例えば、最初の状態1002、接近状態1004、交差状態1006、および/または、通過状態1008)を判断し、それにしたがって、ソース交差センサ916を作動/停止できる。
【0116】
ブロック1152において、ロボットシステム100は、エンドエフェクタ904がスタート位置114に関連付けられた監視空間にまだ進入していない外部状態(例えば、最初の状態1002)を識別できる。換言すると、エンドエフェクタ904の底部が交差基準920を越えて下になる前、および/または、エンドエフェクタ904が登録対象506の上になる前(例えば、エンドエフェクタ904がスタート位置114に関連付けられた境界の外側にある場合)ロボットシステム100は、最初の状態1002を識別できる。ロボットシステム100は、動作中(例えば、動作計画を実施および/または実行している間)エンドエフェクタ904の位置および/または高さを追跡し、追跡した高さまたはその派生値(例えば、一番下の部分を突き止めるためのオフセット)を交差基準高さ924と比較することに基づいて、最初の状態1002を決定できる。ロボットシステム100は、追跡された高さまたはその派生値が交差基準高さ924より上の場合に、最初の状態1002を決定できる。したがって、ロボットシステム100は、ソース交差センサ916を停止できる、および/または、ソース交差センサ916を停止状態のままにできる。
【0117】
ブロック1154において、ロボットシステム100は、エンドエフェクタ304またはその基準部分が、交差基準920の下にある作動状態(例えば、接近状態1004および/または交差状態1006)を識別できる。換言すると、ロボットシステム100は、エンドエフェクタ904の底部が交差基準920より下にある場合に、作動状態を識別できる。ロボットシステム100は、追跡した高さまたはその派生値が交差基準高さ924より下にある場合に、作動状態を決定できる。ロボットシステム100は、外部状態の後すぐに、および/または、エンドエフェクタ904の水平位置がスタート位置114と重なる場合に、または、スタート位置114から所定の距離内にある場合に、作動状態を決定できる。
【0118】
ブロック1156において、ロボットシステム100は、1つまたは複数のセンサ(例えば、ソース交差センサ916および/または追加のセンサ)を作動させることができる。作動状態を識別することに基づいて、ロボットシステム100は、
図10Cの作動イベント1012等のために、スタート位置114に向けられたソース交差センサ916および/または撮像装置を作動させることができる。したがって、ロボットシステム100は、ロボットアーム902、エンドエフェクタ904、および/または、登録対象506が交差基準920を超える、に入る、および/または、交差基準920と交差する登録対象506の部分を有することに対応する交差イベント(例えば、
図10Cの最初の交差状態1014)を予測または判断できる。
【0119】
ブロック1160において、ロボットシステム100は、通過状態1008に対応する
図10Dの退出イベント1016を検出できる。ロボットシステム100は、作動状態のソース交差センサ916および/または追加のセンサを用いて、登録対象506の移動を続ける。換言すると、ロボットシステム100は、作動イベント1012の後、および/または、最初の交差状態1014を判断した後、登録対象506の持ち上げを続けることができる。したがって、登録対象506を持ち上げている間、ロボットシステム100は、ソース交差センサ916を使用して、登録対象506がスタート位置114より上に位置し、スタート位置114と重なる交差基準920を出る、または、交差基準920ともはや交差していない場合に、退出イベント1016を検出できる。例えば、ソース交差センサ916は、登録対象506が以前は遮っていた送信信号(例えば、レーザ等の光信号)を検出することに基づいて、退出イベント1016を検出できる。したがって、ソース交差センサ916は、退出イベント1016をプロセッサ202および/またはイベントのタイムスタンプに通信できる。
【0120】
ブロック1162において、ロボットシステム100は、退出イベント1016時に、エンドエフェクタ位置(例えば、把持部高さ922)を決定できる。ある実施形態においては、ロボットシステム100は、エンドエフェクタ904を動作している間に(例えば、動作計画を実施/実行している間に)エンドエフェクタ位置の追跡および/または記録を続けることができる。したがって、ロボットシステム100は、追跡した座標をサンプリングまたはマーク付けするトリガとして退出イベント1016を使用できる。換言すると、ロボットシステム100は、退出イベント1016がソース交差センサ916によって検出される場合、および/または、プロセッサ202で受信される場合に、エンドエフェクタ904の追跡した座標を取得できる。ある実施形態においては、ロボットシステム100は、イベントのタイムスタンプを使用して、記録したエンドエフェクタ座標を調べることによって、エンドエフェクタ位置を決定できる。ある実施形態においては、ロボットシステム100は、動作計画と、1つまたは複数の基準時刻(例えば、動作計画の開始、終了、および/または、基準タイムマーカ)とに基づいて、エンドエフェクタ位置の1つまたは複数の推定時刻を計算できる。したがって、ロボットシステム100は、退出イベント1016時に、動作計画と1つまたは複数の基準時刻とに基づいて、エンドエフェクタ位置を計算、推定、または、外挿できる。退出イベント時にエンドエフェクタ位置に基づいて、ロボットシステム100は、その垂直座標値を使用して、把持部高さ922を決定できる。
【0121】
ブロック1164において、ロボットシステム100は、退出イベント1016時に、エンドエフェクタ位置(例えば、把持部高さ922)に基づいて、物体高さを計算できる。例えば、ロボットシステム100は、退出イベント1016時の把持部高さ922と交差基準高さ924(例えば、既知の記憶された値)との差を計算することに基づいて、登録対象506の高さを計算できる。
【0122】
ある実施形態においては、ブロック1166に示すように、ロボットシステム100は、退出イベント1016を使用して、登録対象506に関する追加データを取得できる。例えば、ロボットシステム100は、追加のセンサ(例えば、スタート位置114に向けられた、または、スタート位置114より上にある水平方向に向いた2D/3Dカメラ)からプロファイルデータ(例えば、登録対象506の側面図画像等、2D/3D画像データ)を取得するトリガとして、退出イベント1016を使用できる。また、ロボットシステム100は、退出イベント1016のタイムスタンプを使用して、追加のセンサからの記録された画像ストリーム(例えば、ビデオフィード)を検索することによって、追加情報を取得できる。したがって、ロボットシステム100は、下向きのセンサ(例えば、第1の画像センサ912および/または第2の画像センサ914)では検出できていない可能性のある登録対象506の垂直の辺/表面/形状(形状の変化等)に関する追加情報(例えば、高さ、および/または、表面画像/表現の1つまたは複数)を取得できる。
【0123】
1つまたは複数の実施形態において、ロボットシステム100は、取得したプロファイルデータを処理して、登録対象506の高さを計算できる。例えば、ロボットシステム100は、画像内の1つまたは複数の垂直の辺の長さを決定し、所定の関数および/または方程式にしたがって、その長さを実世界の測定値にマッピング/変換できる。ロボットシステム100は、タイミングに基づいて計算した高さの代わりに、プロファイルデータから計算した高さを使用できる。ロボットシステム100は、画像から計算した高さも使用して、タイミングに基づいて計算した高さを検証または補強できる。
【0124】
ブロック1168において、ロボットシステム100は、移動された物体(例えば、登録対象506)を、その物体に対応する
図2の登録データ254を作成および/またはポピュレートすること等に基づいて、登録できる。ロボットシステム100は、登録対象506の物理的特性の取得した情報をマスタデータ252に記憶することによって、登録対象506を登録できる。例えば、ロボットシステム100は、(例えば、ブロック1110で認識できない物体を処理する一部として)移動中または移動前に登録データ254のエントリを作成できる。ロボットシステム100は、重量(例えば、
図6の下向きの力の測定値604)、
図6の推定CoM610、
図7Aの辺の長さの測定値728、
図7Aの角部の角度の測定値730、
図7Bの更新されたデータ740、および/または、他の画像データ、または、これらの組み合わせ等、取得した情報を作成したエントリに記憶できる。登録対象506が、タスク位置116に置かれた場合、エンドエフェクタ904から解放された場合に、および/または、登録対象506の垂直の辺/表面に関する情報(例えば、高さおよび/または表面画像)を決定、記憶した後、ロボットシステム100は、登録データ254を確定および/または記憶できる。
【0125】
ある実施形態においては、方法1100は、認識されていない物体414のグループを1つの画像から繰り返し、移動、登録できる。したがって、認識されていない物体414の1つを移動、登録した後、方法1100は、ブロック1110へのフィードバックパスが示すように、残りの認識されていない物体414の中から新しい登録対象を決定できる。ある実施形態においては、ブロック1102へのフィードバックパスが示すように、方法1100は、認識されていない物体414の1つを移動、登録した後、スタート位置114を再撮像することを含み得る。
【0126】
水平方向に向いた交差センサ(例えば、
図3の第1の交差センサ316、および/または、ソース交差センサ916)を使用して、認識されていない物体414の高さを決定することは、間違いを減らし、タスク実行への影響を最小化/除去しながら、認識されていない物体414に関する追加情報を提供する。スタックの上面図を処理することに関して前述したように、スタック全体(すなわち、対象スタック910)の側面図画像を分析して、個々の物体の高さを決定することは、各物体の区別できない辺/境界が原因の間違いにつながり得る。したがって、交差センサは、複数の積み重ねられた物体の側面図画像を処理することなく、移動された物体の高さを決定するメカニズムを提供する。さらに、ある実施形態においては、ロボットシステム100は、交差/退出イベントのタイミングを使用して、高さを決定でき、これは、一般的に、追加の画像を取得、処理して、高さを決定するよりもリソース消費が少ない。さらに、ロボットシステム100は、認識されていない物体414を移動しながら、様々な上記登録データを取得するので、ロボットシステム100は、(例えば、対象スタックの物体をタスク位置116に移動する)タスク全体の完了に必要な時間/リソース全体への影響なく、または、最小限の影響で、認識されていない物体414を登録できる。
【0127】
ある実施形態においては、ロボットシステムを動作させる方法は、スタート位置にある物体の表面を表す画像データを受信することと、物体を持ち上げる(把持及び上げる)ための最小実行可能領域を画像データに基づいて決定することと、最小実行可能領域に基づいて物体を垂直に移動させる最初の持ち上げの実施後、物体を表すデータを取得することと、物体をタスク位置に移動させる動作を実施することと、動作を実施しながら、交差基準高さに位置する横方向に向いた交差基準に対する物体の進入または退出である(を表す)イベントと、対応するタイムスタンプとを、検出することと、イベントに対応し、且つ、エンドエフェクタの垂直位置を表す把持部高さを決定することと、イベント、把持部高さ、および/または、交差基準高さに基づいて、物体の物体高さを計算することと、物体の新しい記録を表し、且つ、物体高さを含む新しい登録データを作成することとを含んでよい。イベントは、横方向に向いた交差基準に対応する線または平面に沿って送信された光信号を検出するように構成された交差センサからの出力であってもよい。方法は、イベントに基づいたプロファイルデータを取得することをさらに含み、プロファイルデータは、物体の垂直の辺、垂直の表面、または、これらの組み合わせに関する情報を取得するように構成された横向きのセンサからの出力である。プロファイルデータは、スタート位置にある物体の画像データに表された表面に直交する1つまたは複数の表面を表す二次元(2D)および/または三次元(3D)の画像データを含んでよい。方法は、画像データを既知の物体を表す登録データと比較することに基づいて、物体が認識されていない物体であると判断することをさらに含んでよく、ここで、イベントは、物体が認識できないと判断することに基づいて検出され、イベントは、タスク位置より上に位置し、タスク位置と重なる横方向に向いた交差基準に対する認識されていない物体の進入である。イベントは、エンドエフェクタを動作させて認識されていない物体を解放するためのトリガに対応してよい。イベントは、解放トリガ高さより上に位置する横方向に向いた交差基準に対する認識されていない物体の進入または退出であってもよい。
【0128】
ある実施形態においては、方法は、画像データと既知の物体を表す登録データとを比較することに基づいて、物体が認識されていない物体であると判断することを含んでよく、ここで、イベントは、物体が認識されていないと判断することに基づいて検出され、イベントは、スタート位置より上に位置するスタート位置と重なる横方向に向いた交差基準に対する認識されていない物体の退出である。イベントを検出することは、認識されていない物体をスタート位置から持ち上げる動作に同時に対応するイベントを検出すること、および/または、認識されていない物体を把持する動作の後にイベントを検出することを含んでよい。1つまたは複数の実施形態において、イベントを検出することは、横方向に向いた交差基準に対応するセンサを作動させることも含んでよい。方法は、認識されていない物体を移動させる動作と同時にエンドエフェクタ位置を追跡することをさらに含んでよく、エンドエフェクタ位置は、座標値のセットに対応し、把持部高さは、エンドエフェクタ位置の垂直座標値に対応し、イベントを検出することは、把持部高さが基準高さ未満の場合、および/または、エンドエフェクタ位置の水平座標値がスタート位置に関連付けられた境界の外にある場合に、最初の状態を無視することを含み、最初の状態は、横方向に向いた交差基準に対応するセンサからの1つまたは複数の出力である。方法は、動作中、外部状態であって、エンドエフェクタ位置が境界の外にある外部状態を識別することと、動作中、接近状態であって、エンドエフェクタ位置が境界内で基準高さより下にある接近状態を識別することとをさらに含んでよく、ここで、最初の状態を無視することは、外部状態および/または接近状態中、最初の状態を無視することを含む。
【0129】
ある実施形態においては、データは、最初の持ち上げ実施後の物体は表面の比較画像を含むことを表してよく、比較画像は、表面を垂直方向に分離することによって生じる1つまたは複数の発見された辺に対応し、最初の持ち上げは、当接している物体の1つまたは複数の表面から物体の表面を垂直方向に分離するためであり、新しい登録データは、表面の更新された画像を含んでよく、方法は、画像データと比較画像を組み合わせることに基づいて、更新された画像を生成することをさらに含んでよい。ある実施形態においては、最初の持ち上げを実施することに基づいた物体を表すデータを取得することは、エンドエフェクタに取り付けられたまたは一体化されたセンサからの下向きの力の測定値を受信することを含んでよく、新しい登録データは、物体の重量を含んでよく、重量は、下向きの力の測定値に基づく。ある実施形態においては、最初の持ち上げを実施することに基づいた物体を表すデータを取得することは、エンドエフェクタに取り付けられたまたは一体化されたセンサからのトルク測定値を表すデータを受信することを含んでよく、新しい登録データは、物体の推定質量中心(CoM)を含んでよく、推定CoMは、トルク測定値に基づく。ある実施形態においては、新しい登録データを作成することは、取得したデータと認識されていない物体の高さとを記憶することを含んでよい。
【0130】
ある実施形態においては、ロボットシステムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに接続され、プロセッサによって実行可能な命令を含む少なくとも1つのメモリデバイスとを含んでよく、命令は、スタート位置の物体を表す画像データを取得し、画像データにしたがって、物体をタスク位置に移動する動作計画を実施中に、交差基準に対する物体の進入または退出を表すイベントを検出し、イベントに基づき、、物体の態様を記載し、且つ、画像データとは別の追加データを取得し、物体を表し、且つ、追加データを含む新しい登録データを作成する。命令は、上記の方法の1つまたは複数の態様を、プロセッサにさらに実施させてよい。
【0131】
ある実施形態においては、有形で非一時的なコンピュータ読み取り可能媒体は、プロセッサ命令を記憶してよく、プロセッサ命令は、ロボットシステムの1つまたは複数のプロセッサを介してロボットシステムによって実行されると、スタート位置にある物体の表面を表す画像データを受信することと、画像データと既知の物体を表す登録データとを比較することに基づいて、物体が認識されていない物体であると判断することと、認識されていない物体を持ち上げるための最小実行可能領域を画像データに基づいて決定することと、最小実行可能領域に基づいて最初の持ち上げを実施して物体を垂直方向に移動させた後、認識されていない物体を表すデータを取得することと、認識されていない物体をタスク位置に移動させる動作を実施することと、交差基準高さにある横方向に向いた交差基準に対する認識されていない物体の進入または退出であるイベントと、対応するタイムスタンプとを、動作の実施中に検出することと、イベントに対応し、且つ、エンドエフェクタの垂直位置を表す把持部高さを決定することと、イベント、イベントに対応する把持部高さ、および/または、所定の基準高さに基づいて、認識されていない物体の高さを計算することと、認識されていない物体の新しい記録を表し、且つ、認識されていない物体の高さを含む新しい登録データを作成することとを、ロボットシステムに行わせる。プロセッサ命令は、上記方法の1つまたは複数の態様を、1つまたは複数のプロセッサにさらに行わせてよい。
【0132】
結論
開示の技術の実施例の上記の詳細な説明は、網羅的なものではなく、また、開示の技術を上記特定の形態に制限することを意図してはいない。開示の技術の具体的な例を説明の目的で前述したが、当業者であれば認識するように、様々な同等の修正が、開示の技術の範囲内で可能である。例えば、プロセスまたはブロックを所与の順序で提示したが、代替の実施態様は、異なる順序で、ステップを有するルーチンを行ってよい、または、ブロックを有するシステムを採用してよい、また、一部のプロセスもしくはブロックは、削除、移動、追加、さらに分割、組み合わせ、および/または、修正されて、代替またはサブコンビネーションを提供してよい。これらのプロセスまたはブロックは、それぞれ、様々な異なる方法で実施されてよい。また、プロセスまたはブロックは、順次行われるとして示されている場合があるが、これらのプロセスまたはブロックは、代わりに、並行に実行もしくは実施されてよい、または、異なる時に行われてよい。さらに、本明細書に記載する具体的な数はいずれも、例に過ぎず、代替実施態様は、異なる値または範囲を採用してよい。
【0133】
これらの変更および他の変更は、上記発明を実施するための形態を考慮して、開示の技術に対して行われてよい。発明を実施するための形態が、開示の技術と、企図したベストモードとの特定の例を記載したが、開示の技術は、上記記載で本文にどんなに詳細に書かれていても、多くの方法で実践できる。システムの詳細は、特定の実施態様で大きく変わり得るが、それでも、本明細書に開示の技術に含まれる。上記のように、開示の技術の一定の特徴または態様を記載する時に使用される特定の用語は、その用語が、その用語が関連付けられた開示の技術のいずれの具体的な特性、特徴、または、態様に制限されるとして本明細書で再定義されていることを示唆しているととらえるべきではない。したがって、発明は、添付の請求項によって以外は制限されない。一般に、以下の請求項で使用される用語は、上記発明を実施するための形態の項が明示的にその用語を定義していない限り、開示の技術を明細書に開示の具体的な例に制限するとみなすべきではない。
【0134】
発明の特定の態様を特定の請求項の形で以下に記載するが、出願者は、発明の様々な態様を任意の数の請求項の形態で企図する。したがって、出願者は、本出願または継続出願のいずれにおいても、本出願を提出後、追加の請求項を追求する権利を保持して、このような追加の請求項の形を追求する。
【解決手段】ロボットシステムを動作させる方法は、スタート位置の物体を表す第1のデータを取得、処理することと、物体がタスク位置に移動される時、追加データであって、第1のデータで捉えた物体の部分とは別の1つまたは複数の辺および/または1つまたは複数の表面に関する情報を含む追加データを取得することと、追加データに基づいて、物体を表す登録データを作成することとを含む。