(58)【調査した分野】(Int.Cl.,DB名)
プロセッサ命令を記憶した有形で非一時的なコンピュータ読み取り可能媒体であって、前記プロセッサ命令は、ロボットシステムによって前記ロボットシステムの1つまたは複数のプロセッサを介して実行されると、前記ロボットシステムに;
スタート位置にある既知の物体の登録データと一致しない物体を表す画像データを受信することと、
前記既知の物体の登録データと一致しない物体の少なくとも部分を前記画像データに基づいて突き止めることと、
前記既知の物体の登録データと一致しない物体をタスク位置に移動するタスクを、前記突き止められた部分の少なくとも一部に基づいて実施することと、
前記タスクを実施している間、追加情報を取得することと、
前記画像データに表されていなかった前記既知の物体の登録データと一致しない物体の少なくとも一部をスキャンセンサに提示する1つまたは複数のスキャン位置を、前記取得された追加情報に基づいて導出することと、
前記タスクを実施している間、前記画像データに表されていなかった前記既知の物体の登録データと一致しない物体の前記少なくとも一部をスキャンする動作を、前記1つまたは複数のスキャン位置に基づいて実施することと、
前記既知の物体の登録データと一致しない物体の前記少なくとも一部をスキャンする前記動作を実施することに基づいて、スキャン結果を生成することと、
前記既知の物体の登録データと一致しない物体の新しい記録であり、前記スキャン結果を含む新しい登録データを作成することと、
を含む方法を行わせる、
有形で非一時的なコンピュータ読み取り可能媒体。
【発明を実施するための形態】
【0005】
自動パッケージスキャンおよび登録メカニズムを備えたロボットシステムのためのシステムおよび方法を本明細書に記載する。ある実施形態にしたがって構成されたロボットシステム(例えば、1つまたは複数の指定されたタスクを実行するデバイスを統合したシステム)は、以前は知られていなかった、または、認識されていなかった物体(例えば、パッケージ、箱、ケース等)を自律的に(例えば、人間オペレータによる入力が殆どまたは全く無く自動的に)スキャン、登録することによって、使用性と柔軟性を向上させる。
【0006】
様々なタスクを行うために、ロボットシステムは、スタート位置の物体に関するデータ(例えば、物体の露出した表面の1つまたは複数の画像)を取得し、既知のまたは予測された物体の登録データと比較できる。ある例においては、予測された物体の情報のセットが不完全なため、および/または、コンピュータビジョンに関する誤差のため等により、比較が一致しない場合がある。比較データの一部が既知または予測された物体の登録データと一致しない時、ロボットシステムは、対応する位置の物体(複数可)は認識されていないと判断できる。
【0007】
本明細書に記載のロボットシステムの実施形態は、認識されていない物体を自律的に、識別、操作、および、登録する。ロボットシステムが、センサ出力の部分が、1つまたは複数の認識されていない物体に対応すると判断すると、ロボットシステムは、他の物体とは別個の、または、隣り合わない認識されていない物体の露出した辺、および/または、露出した外側角部を識別できる。露出した辺および/または露出した外側角部に基づいて、ロボットシステムは、露出した表面上の最小実行可能領域(MVR)を導出できる。MVRは、対応する物体と接触および対応する物体を持ち上げるためのエリアに関連付けられてよい。したがって、ロボットシステムは、MVRを用いて認識されていない物体を把持し、認識されていない物体を操作して、認識されていない物体に関連付けられたタスクを完了(例えば、1つの位置から別の位置に移動)できる。
【0008】
タスクを行っている間、ロボットシステムは、認識されていない物体に関するさらなる情報を取得および利用できる。例えば、ロボットシステムは、認識されていない物体の高さおよび/または深度等の追加情報を、認識されていない物体の移動中に取得できる。タスクを完了する時、ロボットシステムは、交差基準(例えば、交差センサに対応する検出線/平面)を越えて認識されていない物体を上昇または下降させることができる。交差基準は、スタート位置の真上、および/または、タスク位置の真上等、移動された物体が占める必要がある位置にわたって横方向に延びてよい。ロボットシステムは、下降する物体が最初に交差基準を越える時、および/または、上昇する物体が交差基準を通過する時等、センサイベントを検出できる。ロボットシステムは、そのイベント時に、操作されている物体に接触しているエンドエフェクタ(例えば、把持部)の垂直位置(例えば、高さ)を決定できる。したがって、ロボットシステムは、イベント時のエンドエフェクタの高さを交差センサの既知の垂直位置と比較することに基づいて、物体の高さ(例えば、物体高さ)を決定できる。
【0009】
さらに、ロボットシステムは、未知の物体のマーク(例えば、バーコード、クイックレスポンス(QR)コード(登録商標)、および/または、物体の識別に使用される他のメカニズム)の識別に関するプロファイル/側面図の画像および/または情報を自律的に取得できる。タスクを完了している間、ロボットシステムは、タスクを行いながら、スキャンセンサ(例えば、バーコードセンサ、クイックレスポンス(QR)コードセンサ(登録商標)、視覚カメラ、および/または、他の識別子センサ)の前の1つまたは複数の導出された位置に認識されていない物体を配置できる。配置位置は、タスクを行っている間に取得された長さ、幅、高さ/深度の測定値等、認識されていない物体の他の取得された特性に基づいて導出されてよい。ロボットシステムは、同様に、認識されていない物体の複数の表面をスキャンイメージャに提示するスキャン操作(例えば、水平方向直線運動、垂直方向直線運動、および/または、回転運動)を導出できる。ロボットシステムは、スキャン操作にしたがって、スキャンセンサを動作させるタイミングも導出できる。
【0010】
ロボットシステムは、新しく発見された(例えば、以前は不確かだった)辺および/または角部、関連する測定値(例えば、物体の寸法)、更新された表面画像/デプスマップ、識別マークの位置および/または値、または、これらの組み合わせを使用して、認識されていない物体を登録できる。換言すると、ロボットシステムは、新しい情報をマスタデータに記憶して、以前は認識されなかった物体を自律的に登録(「自動登録」)できる。したがって、ロボットシステムは、自動登録データを使用して、同じ種類の物体のその後のインスタンスを識別、処理、および/または、操作できる。
【0011】
さらに、以下に記載のように認識されていない物体の特性を取得および導出することは、オペレータの助けを借りずに、認識されていない物体であっても処理(例えば、移動、梱包、開梱等)する能力をロボットシステムに提供する。したがって、ロボットシステムの動作全体は、認識されていない物体が存在する時でさえ、中断されずに続けることができる。また、導出されたスキャン位置および対応する操作は、移動/物体操作を中断することなく、認識されていない物体の識別マークのスキャンに成功する可能性を高める。したがって、ロボットシステムは、タスクベースの動作計画から逸脱せずに、物体を3Dでスキャンできる。
【0012】
以下の記載において、本開示の技術の完全な理解を提供するために、多くの特定の詳細を記載する。他の実施形態においては、本明細書で紹介する技術は、これらの特定の詳細が無くても実践できる。他の例においては、特定の機能またはルーチン等の周知の特徴は、本開示を不必要に曖昧にしないように、詳細には記載しない。本明細書において、「ある実施形態」「一実施形態」等の言及は、記載している特定の特徴、構造、材料、または、特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書におけるこのような句の出現は、全て同じ実施形態を必ずしも指してはいない。他方、このような言及は、必ずしも互いに排他的なものではない。さらに、特定の特徴、構造、材料、または、特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせることができる。図に示す様々な実施形態は、説明のための表現に過ぎず、必ずしも、縮尺通りに描いてはいないことは理解されたい。
【0013】
ロボットシステムおよびサブシステムに関連付けられることが多いが、開示の技術の幾つかの重要な態様を不必要に曖昧にし得る構造またはプロセスを記載する周知の幾つかの詳細は、明確にするために、以下には記載していない。さらに、以下の開示は、本明細書に紹介した異なる態様の幾つかの実施形態を記載するが、幾つかの他の実施形態は、この項に記載するのとは異なる構成または構成要素を有し得る。したがって、開示の技術は、追加の要素を有する、または、以下に記載の要素の幾つかを含まない他の実施形態を有し得る。
【0014】
以下に記載の本開示の多くの実施形態または態様は、プログラム可能なコンピュータまたはプロセッサによって実行されるルーチンを含む、コンピュータまたはプロセッサで実行可能な命令の形を取り得る。以下に示し、記載する以外のコンピュータまたはプロセッサシステムで開示の技術を実践できることを当業者は認識されよう。本明細書に記載の技術は、以下に記載のコンピュータ実行可能命令の1つまたは複数を実行するように具体的にプログラム、構成、または、構築された専用コンピュータまたはデータプロセッサで実現できる。したがって、本明細書で一般的に使用される「コンピュータ」および「プロセッサ」という用語は、任意のデータプロセッサを指し、(パームトップコンピュータ、ウェアラブルコンピュータ、セルラーフォン、モバイルフォン、マルチプロセッサシステム、プロセッサベースもしくはプログラム可能家電製品、ネットワークコンピュータ、ミニコンピュータ等を含む)インターネット家電およびハンドヘルドデバイスを含み得る。これらのコンピュータおよびプロセッサが取り扱う情報は、液晶ディスプレイ(LCD)を含む任意の適切な表示媒体に提示できる。コンピュータまたはプロセッサで実行可能なタスクを実行するための命令は、ハードウェア、ファームウェア、または、ハードウェアおよびファームウェアの組み合わせを含む、任意の適切なコンピュータ可読媒体に記憶できる。命令は、例えば、フラッシュドライブおよび/または他の適切な媒体を含む任意の適切なメモリデバイスに含まれてよい。
【0015】
「結合された」および「接続された」という用語、並びに、これらの派生語は、構成要素間の構造的関係を記載するために本明細書では使用されてよい。これらの用語は、互いに同意語と意図されていないことを理解されたい。むしろ、特定の実施形態において、「接続された」を使用して、2つ以上の要素が互いに直接接触していることを示すことができる。文脈においてそうでないことが明らかでない限り、「結合された」という用語を使用して、2つ以上の要素が、互いに直接的または間接的に(要素と要素の間に他の介在する要素がある)接触していること、(例えば、信号送信/受信、または、関数呼び出し等の因果関係においてのように)2つ以上の要素が互いに協力または相互作用すること、または、その両方を示すことができる。
【0016】
好適な環境
図1は、パッケージスキャン登録メカニズムを備えたロボットシステム100が動作し得る環境の例である。ロボットシステム100は、1つまたは複数のタスクを実行するように構成された1つまたは複数のユニット(例えば、ロボット)を含むことができる、および/または、それらと通信できる。梱包メカニズムの態様は、様々なユニットによって実践または実施できる。
【0017】
図1に示す例に関しては、ロボットシステム100は、倉庫または分配/出荷拠点において、荷降ろしユニット102、移動ユニット104(例えば、パレットに載せるロボット、および/または、ピースピッキングロボット)、運搬ユニット106、積み込みユニット108、または、これらの組み合わせを含み得る。ロボットシステム100の各ユニットは、1つまたは複数のタスクを実行するように構成できる。タスクは、トラックまたはバンから物体を降ろし、物体を倉庫に保管する、または、保管場所から物体を降ろし、出荷の準備をする等、目的を達成する動作を行うように順次、組み合わせることができる。他の例に関しては、タスクは、対象位置(例えば、パレットの上、および/または、大箱/ケージ/箱/ケース内)に物体を載置することを含み得る。以下に記載のように、ロボットシステムは、物体を載置するおよび/または積み重ねるための計画(例えば、置き場所/向き、物体を移動する順番、および/または、対応する動作計画)を導出できる。各ユニットは、(例えば、ユニットの1つまたは複数の構成要素を動作させる)一連のアクションを実行してタスクを実行するように構成されてよい。
【0018】
ある実施形態においては、タスクはスタート位置114からタスク位置116への対象物体112(例えば、実行するタスクに対応するパッケージ、箱、ケース、ケージ、パレット等の1つ)の操作(例えば、移動および/または向きの変更)を含み得る。例えば、荷降ろしユニット102(例えば、デバンニングロボット)は、運搬装置(例えば、トラック)内の位置から、コンベヤベルト上の位置に対象物体112を移動するように構成されてよい。また、移動ユニット104は、1つの位置(例えば、コンベヤベルト、パレット、または、大箱)から他の位置(例えば、パレット、大箱等)に対象物体112を移動するように構成されてよい。他の例に関しては、移動ユニット104(例えば、パレットに載せるロボット)は、対象物体112を元の位置(例えば、パレット、ピックアップエリア、および/または、コンベヤ)から目的パレットに移動するように構成されてよい。動作を完了する時、運搬ユニット106は、移動ユニット104に関連付けられたエリアから、積み込みユニット108に関連付けられたエリアに対象物体112を移動でき、積み込みユニット108は、移動ユニット104から保管場所(例えば、棚上の位置)に(例えば、対象物体112を載せたパレットを動かすことによって)対象物体112を移動できる。このタスクおよびそれに関連する動作に関する詳細を以下に記載する。
【0019】
説明目的で、ロボットシステム100を、出荷センタの文脈で記載するが、ロボットシステム100は、製造、アセンブリ、梱包、ヘルスケア、および/または、他の種類の自動化等、他の環境において/他の目的のために、タスクを実行するように構成されてよいことは理解されたい。ロボットシステム100は、
図1に示されていない、マニピュレータ、サービスロボット、モジュール式ロボット等、他のユニットを含み得ることも理解されたい。例えば、ある実施形態においては、ロボットシステム100は、ケージカートまたはパレットからコンベヤまたは他のパレット上に物体を移動するデパレタイズユニット、1つのコンテナから別のコンテナに物体を移動するコンテナ切替ユニット、物体を梱包する梱包ユニット、物体の1つまたは複数の特性にしたがって物体をグループにする仕分けユニット、物体の1つまたは複数の特性にしたがって物体を異なるように操作(例えば、仕分け、グループ化、および/または、移動)するピースピッキングユニット、または、これらの組み合わせを含み得る。さらに、ロボットシステム100は、物体を梱包/配置し、その物体を出荷用に積み込むため、および/または、入荷貨物から物体を処理、保管するため等、異なる順番でタスクを実行するように構成されてよいことは、理解されたい。
【0020】
好適なシステム
図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等)、および/または、他の無線通信プロトコルに基づいてよい。
【0021】
プロセッサ202は、記憶装置204(例えば、コンピュータメモリ)に記憶された命令(例えば、ソフトウェア命令)を実行するように構成されたデータプロセッサ(例えば、中央処理装置(CPU)、専用コンピュータ、および/または、オンボードサーバ)を含み得る。ある実施形態においては、プロセッサ202は、
図2に示された他の電子/電気デバイス、および/または、
図1に示されたロボットユニットに動作可能に結合された別個の/スタンドアロンコントローラに含まれてよい。プロセッサ202は、プログラム命令を実施して、他のデバイスを制御/他のデバイスとインタフェースすることによって、ロボットシステム100に、アクション、タスク、および/または、動作を実行させることができる。
【0022】
記憶装置204は、プログラム命令(例えば、ソフトウェア)を記憶した非一時的なコンピュータ読み取り可能媒体を含み得る。記憶装置204の幾つかの例は、揮発性メモリ(例えば、キャッシュおよび/またはランダムアクセスメモリ(RAM))、および/または、不揮発性メモリ(例えば、フラッシュメモリ、および/または、磁気ディスクドライブ)を含み得る。記憶装置204の他の例は、ポータブルメモリドライブ、および/または、クラウドストレージデバイスを含み得る。
【0023】
ある実施形態においては、記憶装置204を使用して、処理結果、および/または、所定のデータ/閾値をさらに記憶し、それらにアクセスできる。例えば、記憶装置204は、ロボットシステム100によって操作され得る物体(例えば、箱、ケース、および/または、製品)の記載を含むマスタデータ252を記憶できる。1つまたは複数の実施形態において、マスタデータ252は、このような各物体の登録データ254を含み得る。登録データ254は、ロボットシステム100によって操作されることが予測される物体の、寸法、形状(例えば、異なる姿勢の物体を認識するための、可能な姿勢のテンプレート、および/または、コンピュータによって生成されたモデル)、カラースキーム、画像、識別情報(例えば、バーコード、クイックレスポンス(QR)コード(登録商標)、ロゴ等、および/または、これらの予測される位置)、予測重量、他の物理的/視覚的特性、または、これらの組み合わせを含み得る。ある実施形態においては、マスタデータ252は、質量中心(CoM)の位置、または、各物体に対するCoMの位置の推定、1つまたは複数のアクション/操作に対応する予測されるセンサ測定値(例えば、力、トルク、圧力、および/または、接触の測定値)、または、これらの組み合わせ等、物体の操作に関連する情報を含み得る。
【0024】
通信装置206は、ネットワークを介して外部装置またはリモート装置と通信するように構成された回路を含み得る。例えば、通信装置206は、受信器、送信器、変調器/復調器(モデム)、信号検出器、信号エンコーダ/デコーダ、コネクタポート、ネットワークカード等を含み得る。通信装置206は、1つまたは複数の通信プロトコル(例えば、インターネットプロトコル(IP)、無線通信プロトコル等)にしたがって、電気信号を送信、受信、および/または、処理するように構成されてよい。ある実施形態においては、ロボットシステム100は、通信装置206を使用して、ロボットシステム100のユニット間で情報を交換できる、および/または、(例えば、報告、データ収集、分析、および/または、トラブルシューティングの目的で)ロボットシステム100の外部にあるシステムまたはデバイスと情報を交換できる。
【0025】
入出力装置208は、人間オペレータに情報を通信するように、および/または、人間オペレータから情報を受信するように構成されたユーザインタフェース装置を含み得る。例えば、入出力装置208は、人間オペレータに情報を通信するためのディスプレイ210、および/または、他の出力装置(例えば、スピーカ、触覚回路、または、触覚フィードバック装置等)を含み得る。また、入出力装置208は、キーボード、マウス、タッチスクリーン、マイクロフォン、ユーザインタフェース(UI)センサ(例えば、動作コマンドを受信するためのカメラ)、ウェアラブル入力装置等、制御装置または受信装置も含み得る。ある実施形態においては、ロボットシステム100は、アクション、タスク、動作、または、これらの組み合わせを実行する時、入出力装置208を使用して、人間オペレータと対話できる。
【0026】
ロボットシステム100は、動き(例えば、回転変位および/または並進変位)のためにジョイントに接続された物理的または構造的な部材(例えば、ロボットマニピュレータアーム)を含み得る。構造部材およびジョイントは、ロボットシステム100の使用/動作に応じて、1つまたは複数のタスク(例えば、把持、回転、溶接等)を実行するように構成されたエンドエフェクタ(例えば、把持部)を操作するように構成された運動連鎖を形成できる。ロボットシステム100は、対応するジョイントを中心に、または、対応するジョイントで構造部材を作動または操作(例えば、変位、および/または、向き変更)するように構成された駆動装置212(例えば、モータ、アクチュエータ、ワイヤ、人工筋肉、電気活性ポリマー等)を含み得る。ある実施形態においては、ロボットシステム100は、対応するユニット/シャシを場所から場所へと運搬するように構成された運搬モータ214を含み得る。
【0027】
ロボットシステム100は、構造部材を操作するため、および/または、ロボットユニットを運搬するため等、タスクの実施に使用される情報を取得するように構成されたセンサ216を含み得る。センサ216は、ロボットシステム100の1つまたは複数の物理的特性(例えば、ロボットシステムの1つまたは複数の構造部材/ジョイントの状況、状態、および/または、位置)、および/または、周囲環境の1つまたは複数の物理的特性を検出または測定するように構成されたデバイスを含み得る。センサ216の幾つかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、触覚センサ、トルクセンサ、位置エンコーダ等を含み得る。
【0028】
ある実施形態においては、例えば、センサ216は、周囲環境を検出するように構成された1つまたは複数の撮像装置222(例えば、視覚カメラ、および/または、赤外線カメラ、2Dおよび/または3Dイメージングカメラ、ライダまたはレーダ等の距離測定装置等)を含み得る。撮像装置222は、(例えば、自動検査、ロボット誘導、または、他のロボット用途のために)機械/コンピュータビジョンを介して処理され得る、デジタル画像および/または点群等、検出された環境の表現を生成し得る。以下にさらに詳細に記載するように、ロボットシステム100は、(例えば、プロセッサ202を介して)デジタル画像および/または点群を処理して、
図1の対象物体112、
図1のスタート位置114、
図1のタスク位置116、対象物体112の姿勢、スタート位置114および/または姿勢に関する信頼基準、または、これらの組み合わせを識別できる。
【0029】
対象物体112を操作するために、ロボットシステム100は、(例えば、上記の様々な回路/デバイスを介して)、指定エリア(例えば、トラック内またはコンベヤベルト等のピックアップ位置)の画像を撮影、分析して、対象物体112と対象物体112のスタート位置114とを識別できる。同様に、ロボットシステム100は、別の指定エリア(例えば、コンベヤ上に物体を載置するための投下位置、コンテナ内の物体を置く位置、または、積み重ねるためのパレット上の位置)の画像を撮影、分析して、タスク位置116を識別できる。例えば、撮像装置222は、ピックアップエリアの画像を生成するように構成された1つまたは複数のカメラ、および/または、タスクエリア(例えば、投下エリア)の画像を生成するように構成された1つまたは複数のカメラを含み得る。撮影画像に基づいて、以下に記載のように、ロボットシステム100は、スタート位置114、タスク位置116、関連する姿勢、梱包/載置計画、運搬/梱包順序、および/または、他の処理結果を判断できる。梱包アルゴリズムに関する詳細を以下に記載する。
【0030】
ある実施形態においては、例えば、センサ216は、構造部材(例えば、ロボットアームおよび/またはエンドエフェクタ)、および/または、ロボットシステム100の対応するジョイントの位置を検出するように構成された位置センサ224(例えば、位置エンコーダ、ポテンショメータ等)を含み得る。ロボットシステム100は、タスク実行中に、位置センサ224を使用して、構造部材および/またはジョイントの位置および/または向きを追跡できる。
【0031】
目的地ベースのセンサを用いた物体の移動、スキャン、および、登録
図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に載せるように構成されてよい。
【0032】
ロボットシステム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つまたは複数の上面図に対応する画像データを生成できる。
【0033】
ある実施形態においては、ロボットシステム100は、対応する検出線/平面を物体が越える/離れる交差イベントを検出するように構成された1つまたは複数の交差センサ(例えば、目的地交差センサ316、および/または、解放点センサ318)を含み得る。例えば、交差センサは、送信信号および/または反射信号(例えば、光信号、レーザ等)の連続性/中断に基づいて、交差イベントを検出するラインセンサまたは平面センサを含み得る。交差センサは、ある実施形態においては、検出線に沿って光信号を送信し、検出線の端で送信信号を検出および/または反射できる。したがって、交差センサは、送信された光信号の受信の中断(例えば、不連続性)を検出でき、これは、物体が検出線を越える/検出線に入ることを表す進入イベントに対応し得る。同様に、交差センサは、中断期間の後、送信信号を再検出でき、これは、物体が検出線を出ることを表す退出イベントに対応し得る。交差センサは、光信号および/または光信号のシーケンス中断の検出、再検出に基づいて、イベントデータ(例えば、フラグ、状態決定、交差方向、および/または、タイムスタンプ)を生成および/または通信できる。
【0034】
ある実施形態においては、解放点センサ318を使用して、把持した物体を解放できる。解放点センサ318は、タスク位置116より上に配置されてよく、および/または、所定の高さに検出線を確立できる。検出線/平面の高さ(例えば、解放高さ)は、物体を損傷することなく、安全に物体を解放/投下できる高さであってよい。例として、検出線の高さは、コンベヤ306の載置位置の上10cm以下であってよい。したがって、ロボットシステム100は、解放点センサ318が検出した交差イベントを、運んでいる物体をエンドエフェクタ304から解放するトリガとして使用できる。ある実施形態においては、解放高さは、目的地交差センサ316の検出線/平面と重なってよい、または、一致してよい。他の実施形態においては、解放高さは、目的地交差センサ316の検出線/平面の垂直位置と、タスク位置116の載置面(例えば、コンベヤ306の載置面)の垂直位置との間であってよい。換言すると、目的地交差センサ316の検出線/平面は、解放点センサ318に対応する解放高さより上に位置してよい。
【0035】
ある実施形態においては、目的地交差センサ316を使用して、移動中の対象物体112の高さを測定できる。例えば、ロボットシステム100は、進入イベント時に目的地交差センサ316が検出した把持部高さ322(例えば、地面等の基準点に対するエンドエフェクタ304の垂直位置/場所/座標)を決定できる。ロボットシステム100は、把持部高さ322を交差基準高さ324(例えば、目的地交差センサ316の既知の垂直位置、および/または、目的地交差センサ316の基準線/平面)と比較して、移動中の対象物体112の物体高さ320を計算できる。換言すると、目的地交差センサ316は、対象物体112の底部が検出線を越える時を示すトリガとして機能することができる。したがって、ロボットシステム100は、このような時の把持部高さ322と検出線の既知の高さとを使用して、対象物体112の物体高さ320を計算できる。
【0036】
ある実施形態においては、ロボットシステム100は、移動中に物体をスキャンするように構成された1つまたは複数のスキャンセンサ330を含み得る。スキャンセンサ330の幾つかの例は、バーコードスキャナ、QRコードスキャナ(登録商標)、イメージング(2D)カメラ、無線周波数識別(RFID)スキャナ、および/または、他の種類の識別スキャン装置を含み得る。スキャンセンサ330は、スタート位置114の真上の空間、および/または、タスク位置116の真上の空間等、移動された物体が占める必要がある位置をスキャンするように配置されてよい。さらに、スキャンセンサ330は、目的地交差センサ316および/または他の基準位置(例えば、地面)に対して既知の位置に配置されてよい。
【0037】
目的地交差センサ316およびスキャンセンサ330の相対的な位置/配置に基づいて、ロボットシステム100は、目的地交差センサ316からの情報、または、目的地交差センサ316に関連付けられた情報にしたがって、スキャンセンサ330を動作させることができる。
図3に示す例に関して、スキャンセンサ330は、目的地交差センサ316より上の既知の高さに位置し、タスク位置116の上の領域をスキャンするように配置されてよい。ある実施形態においては、目的地交差センサ316のステータス(例えば、交差/退出イベント)は、スキャンセンサ330(例えば、タスク位置116の上の空間に向けられた水平方向に向いたカメラ)の1つまたは複数のインスタンスをトリガして、データをスキャンおよび収集できる。他の実施形態においては、ロボットシステム100は、計算した物体高さ320、または、その処理結果に基づいて、スキャン位置および/またはスキャン操作を導出できる。したがって、ロボットシステム100は、タスクを行いながら、異なる視点からの物体に関するデータ(例えば、側面またはプロファイル図/画像、異なる次元に沿った形状測定値等)を取得できる、および/または、識別情報をスキャンできる。
【0038】
説明目的で、コンベヤ306に取り付けられた目的地交差センサ316およびスキャンセンサ330を示す。しかしながら、目的地交差センサ316およびスキャンセンサ330は異なる構成であってよいことは理解されたい。例えば、目的地交差センサ316およびスキャンセンサ330は、タスク位置116のいずれの装置とも接続されなくてよく、および/または、独立していてよい。また、スキャンセンサ330は、物体の複数の表面を同時に/連続してスキャンする異なる位置および向きに配置されたスキャナのセットを含み得ることを理解されたい。
【0039】
目的地交差センサ316およびスキャンセンサ330(例えば、水平方向を向いているカメラまたはIDスキャナ)は、移動中の認識されていない物体の追加データを取得できる。上記のように、目的地交差センサ316を使用して、物体を移動している時に、追加の操作/動き無しに、移動される物体の物体高さ320を計算できる。さらに、他の物体の上に載っている時に変形する物体もあるので、物体を持ち上げた後に物体高さ320を決定することは、高さ測定の精度を向上させる。換言すると、物体の形状、および、任意の対応する寸法は、物体が持ち上げられる/吊り下げられる時、変化する場合がある。例えば、吊り下げられる時、物体のプロファイル、および/または、対応する高さ(例えば、エンドエフェクタ304から物体の底部までの距離)は、プラスチック包装の布ベースの品物またはゴムベースの品物等、パッケージの剛性の不足のために変化する場合がある。交差センサ(例えば、目的地交差センサ316)を用いて、移動中、物体高さ320を決定することによって、ロボットシステム100は、移動中の物体の形状/寸法の任意の変化を、(例えば、動作計画を介して)正確に考慮できる。したがって、ロボットシステム100は、物体を移動している時に、実際の物体高さ(例えば、置いた時の高さではなく、吊り下げられた時の物体の高さ)を使用することによって、形状の変化が原因で生じ得る衝突を低減/除去できる。ある実施形態においては、ロボットシステム100は、移動される物体の揺れ、または、振り子のような揺れの低減等のために、実際の物体高さにしたがって、運搬速度、運搬加速度、または、これらの組み合わせを調整できる。ある実施形態においては、ロボットシステム100は、止まっている物体高さ、および/または、移動している物体高さを使用して、認識されていない物体を登録できる。
【0040】
さらに、ロボットシステム100は、計算した物体高さ320にしたがって、物体を操作し、スキャンセンサ330を動作させて、第1の画像センサ312および/または第2の画像センサ314では検出できないことがある認識されていない物体に関する正確な識別情報(例えば、1つまたは複数の垂直方向に向いた表面/辺、プロファイル形状、識別子の値、および/または、識別子の位置の2D/3D画像)を提供できる。以下にさらに詳細に記載するように、物体高さおよび/または追加情報を使用して、認識されていない物体の
図2の登録データ254を生成できる。したがって、ロボットシステム100は、認識されていない物体に関してより多くの情報を取得でき、この情報を使用して、移動タスクを妨害することなく、他の類似の物体のその後の認識の可能性を向上させることができ、および/または、物体のさらなる操作の精度を向上させることができる。
【0041】
ある実施形態においては、ロボットシステム100は、物体高さおよび/または追加情報を使用して、上面に加えて、物体の他の表面(例えば、垂直方向に向いた表面/寸法)を分析する等によって、物体を再分析、認識できる。したがって、ロボットシステム100は、認識されない箱の数、または、検出漏れの結果を低減できる。
【0042】
目的地ベースセンサの物体の高さ計算およびスキャンシーケンス
図4A〜4Dは、本明細書で紹介した1つまたは複数の実施形態による、高さ計算と物体のスキャンのシーケンス(例えば、様々な例示の処理状態)を示す。
図4Aは、高さが未知の状態402を示す。高さが未知の状態402に関して、
図1のロボットシステム100は、
図3のロボットアーム302を動作させて、または、動作させるための命令を実行して、エンドエフェクタ304と対象物体112をタスク位置116の上に水平方向に重なるように配置できる。高さが未知の状態402は、物体高さ320の計算に先行する。したがって、ロボットシステム100は、タスク位置116(すなわち、コンベヤ306)の方に対象物体112を下降させることができる。高さが未知の状態402中、ロボットシステム100は、スキャンセンサ330に関連付けられたスキャンゾーンの外側(例えば、上および/または下)に対象物体112を配置し得る。したがって、スキャンセンサ330は、非アクティブなままであってよい。
【0043】
図4Bは、対象物体112の底部が検出線416(例えば、目的地交差センサ316によって送信/検出されるレーザ/光信号によって横切られる線)に入る、または、検出線416を越えることに対応する高さ計算状態404を示す。上記のように、ロボットシステム100は、交差イベント時に把持部高さ322を取得できる。
図3の把持部高さ322と交差基準高さ324(例えば、検出線416の高さ)とを用いて、ロボットシステム100は、(例えば、2つのパラメータ間の差として)物体高さ320を計算できる。高さ計算状態404中、ロボットシステム100は、スキャンセンサ330に関連付けられたスキャンゾーンの外側(例えば、上および/または下)に対象物体112を配置し得る。したがって、スキャンセンサ330は、非アクティブなままであってよい。
【0044】
図4Cは、スキャン状態406を示す。計算した物体高さ320に基づいて、ロボットシステム100は、1つまたは複数のスキャン位置412および/またはスキャン操作414を導出できる。スキャン位置412は、対象物体112の1つまたは複数の表面(例えば、周囲の/垂直方向に向いた表面)、または、その表面の一部を提示し、スキャンセンサ330を用いてスキャンするようにエンドエフェクタ304を配置する位置および/または向き(例えば、姿勢)を含み得る。換言すると、スキャン位置412は、スキャンセンサ330の(例えば、前、および/または、所定の距離内の)スキャンゾーン内に対象物体112を配置する位置であってよい。スキャン操作414は、認識されていない物体をスキャンするための空間にわたってエンドエフェクタ304を移動するように構成されたコマンドおよび/または設定のシーケンス(例えば、動作計画)を含み得る。換言すると、スキャン操作414は、認識されていない物体の表面および/または複数の表面の複数の部分をスキャンするための(例えば、z軸に沿った)垂直変位、(例えば、x軸および/またはy軸に沿った)水平変位、および/または、回転(例えば、z軸を中心とした回転)に対応し得る。
【0045】
説明のための例として、物体は、1つまたは複数の物体表面の角部および/または端部上のバーコードおよび/またはQRコード(登録商標)を典型的に含んでよい。バーコードおよび/またはQRコード(登録商標)をスキャンするために、ロボットシステム100は、計算した物体高さ320を使用して、対象物体112(例えば、認識されていない物体)の角部および/または端部を突き止めることができる。したがって、物体高さ320に基づいて、ロボットシステム100は、認識されていない物体上のバーコード、QRコード(登録商標)、および/または、他の識別子を正確に突き止める可能性を高くすることができる。
【0046】
ロボットシステム100は、角部および/または端部の位置の推定を使用して、スキャン位置412を導出できる。ロボットシステム100は、スキャン位置412にしたがって、
図3のロボットアーム302および/またはエンドエフェクタ304を動作させることによって、対象物体112の1つまたは複数の表面をスキャンセンサ330のスキャンゾーンに配置できる。例えば、ロボットシステム100は、対象物体の底部が検出線416を越えた後、垂直方向に向いた表面の底部または上部がスキャンゾーン内になるように、対象物体112を上昇させることができる。また、ロボットシステム100は、垂直方向に向いた表面の上部がスキャンゾーン内になるように、対象物体112を下降させることができる。ロボットシステム100は、対象物体112がスキャンゾーン内の垂直方向の中心になるように、対象物体112を上昇/下降させてよい。
【0047】
ロボットシステム100は、角部および/または端部の位置の推定に基づいて、スキャン操作414をさらに導出できる。例えば、ロボットシステム100は、対象物体112を水平に/垂直に移動して、対象物体112の複数の角部および/または端部をスキャンセンサ330に提示するスキャン操作414を導出できる。また、ロボットシステム100は、対象物体112を回転させて対象物体112の複数の表面をスキャンセンサ330に提示するスキャン操作404を導出できる。
【0048】
ロボットシステム100は、エンドエフェクタ304をスキャン位置412に配置することに基づいて、および/または、スキャン操作414を実施することに基づいて、スキャンセンサ330を動作できる。例えば、ロボットシステム100は、エンドエフェクタ304をスキャン位置412に配置した後、および/または、スキャン操作414の実施中に所定のタイミングで、スキャンセンサ330をトリガできる。また、ロボットシステム100は、スキャンセンサ330を作動させたままで、スキャン操作414を実施できる。したがって、スキャン位置412および/またはスキャン操作414に基づいて、ロボットシステム100は、認識されていない物体の複数の表面/部分を提示し、認識されていない物体上の識別子を正確に突き止め、スキャンする可能性を高めることができる。
【0049】
代替実施形態において、ロボットシステム100は、スキャンセンサ330を(例えば、ロボットアームを介して)移動させて、対象物体112をスキャンできる。したがって、ロボットシステム100は、対象物体112の代わりに、スキャンセンサ330を移動または再配置するためのスキャン位置412および/またはスキャン操作414を導出できる。したがって、ロボットシステム100は、スキャン中、対象物体112の移動を最小限にすることによって、スキャン中の(例えば、把持失敗または衝突による)物体の損失の可能性を低減/除去できる。
【0050】
図4Dは、スキャン状態406をさらに示す。より具体的には、
図4Dは、上から見た対象物体112を示す。ある実施形態においては、ロボットシステム100は、複数のスキャンセンサ330と対応するスキャンゾーンとにしたがって、スキャン位置412および/またはスキャン操作414を導出できる。また、説明のための例として、ロボットシステム100は、x軸および/またはy軸に沿って認識された物体を移動するための、および/または、z軸を中心に物体を回転させるためのスキャン操作414を導出できる。
【0051】
ソースベースのセンサを用いた物体の移動、スキャン、および、登録
図5は、本明細書で紹介した1つまたは複数の実施形態による、
図1のロボットシステム100の図である。
図5に示すロボットシステム100の態様は、
図3に示す態様と類似し得るが、1つまたは複数のセンサが異なる位置に配置されている。
【0052】
ロボットシステム100は、エンドエフェクタ504(例えば、把持部)を含むロボットアーム502(例えば、
図1の移動ユニット104のインスタンス)を含み得る。ロボットアーム502は、
図1のスタート位置114と
図1のタスク位置116との間で
図1の対象物体112を移動するように構成されてよい。ある実施形態においては、スタート位置114は、対象スタック510(例えば、対象物体112を含み得る物体のグループ)を載せたコンテナ508(例えば、囲いのあるカート)に対応し得る。ロボットアーム502のタスク位置116は、コンベヤ506(例えば、
図1の運搬ユニット106のインスタンス)上の載置位置(例えば、スタート/出口点)であってよい。例えば、ロボットアーム502は、対象スタック510から物体を持ち上げ、他の目的地/タスクに運搬するためにコンベヤ506にその物体を置くように構成されてよい。
【0053】
ロボットシステム100は、ロボットアーム502を用いて移動動作を行う時、
図2のセンサ216の1つまたは複数を使用できる。ある実施形態においては、ロボットシステム100は、第1の画像センサ512および/または第2の画像センサ514を含み得る。第1の画像センサ512は、スタート位置114を撮像および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。第2の画像センサ514は、タスク位置116を撮像および/または分析するように構成された、カメラおよび/またはデプスセンサ等、1つまたは複数の2Dおよび/または3Dセンサを含み得る。例えば、第1の画像センサ512は、スタート位置114の上でスタート位置114を向いている既知の位置に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。第1の画像センサ512は、対象スタック510の上面図等、スタート位置114の1つまたは複数の上面図に対応する画像データを生成できる。また、第2の画像センサ514は、タスク位置116の上でタスク位置116を向いている1つまたは複数の既知の位置に配置された1つまたは複数のカメラおよび/またはデプスセンサを含み得る。したがって、第2の画像センサ514は、タスク位置116に、または、タスク位置116から閾値距離内にある対象物体112の1つまたは複数の上面図に対応する画像データを生成できる。
【0054】
ある実施形態においては、ロボットシステム100は、物体が、対応する検出線/平面(例えば、交差基準520)を越える/出る交差イベントを検出するように構成された1つまたは複数の交差センサ(例えば、ソース交差センサ516および/または解放点センサ518)を含み得る。例えば、交差センサは、送信信号および/または反射信号(例えば、光信号、レーザ等)の連続性/中断に基づいて、交差イベントを検出するラインセンサまたは平面センサに対応し得る。交差センサは、ある実施形態においては、検出線に沿って光信号を送信し、検出線の端で送信信号を検出および/または反射することによって、交差基準520を確立できる。したがって、交差センサは、送信された光信号の受信の中断(例えば、不連続性)を検出でき、これは、交差基準520を越える/に入る物体を表す進入イベントに対応し得る。同様に、交差センサは、中断期間後、送信信号を再検出でき、これは、物体が交差基準520を出ることを表す退出イベントに対応し得る。
【0055】
ある実施形態においては、解放点センサ518を使用して、把持した物体を解放できる。解放点センサ518は、タスク位置116より上に配置されてよい、および/または、所定の高さに検出線を確立できる。検出線の高さは、物体を損傷することなく、物体を安全に投下する高さであってよい。例として、検出線の高さは、コンベヤ506の載置位置の上10cm未満であってよい。したがって、ロボットシステム100は、解放点センサ518が検出した交差イベントを、エンドエフェクタ304から運搬中の物体を解放するトリガとして、使用してよい。
【0056】
ある実施形態においては、移動中、ソース交差センサ516を使用して、対象物体112の物体高さを測定できる。例えば、ロボットシステム100は、ソース交差センサ516が検出した交差イベント(例えば、退出イベント)時に、把持部高さ522(例えば、地面等の基準点に対するエンドエフェクタ504の垂直位置/場所)を決定できる。ロボットシステム100は、把持部高さ522を交差基準高さ524(例えば、ソース交差センサ516の既知の垂直位置、および/または、交差基準520)と比較して、移動中の対象物体112の物体高さを計算できる。換言すると、ソース交差センサ516は、対象物体112の底部が検出線を出る時を示すトリガとして機能することができる。したがって、ロボットシステム100は、このような時の把持部高さ522と、交差基準520の既知の高さとを使用して、対象物体112の物体高さを計算できる。
【0057】
ある実施形態においては、ロボットシステム100は、移動中の物体をスキャンするように構成された1つまたは複数のスキャンセンサ530を含み得る。スキャンセンサ530の幾つかの例は、バーコードスキャナ、QRコードスキャナ(登録商標)、イメージング(2D)カメラ、無線周波数識別(RFID)スキャナ、および/または、他の種類の識別スキャン装置を含み得る。スキャンセンサ530は、スタート位置114および/またはタスク位置116の真上/隣の空間等、移動された物体が占める必要がある位置をスキャンするように配置されてよい。さらに、スキャンセンサ530は、
図3の目的地交差センサ316、ソース交差センサ516、および/または、他の基準位置(例えば、地面)に対して既知の位置に配置されてよい。
【0058】
ソース交差センサ516およびスキャンセンサ530の相対的な位置/配置に基づいて、ロボットシステム100は、ソース交差センサ516からの情報、または、ソース交差センサ516に関連付けられた情報にしたがって、スキャンセンサ530を動作できる。
図5に示す例に関しては、スキャンセンサ530は、ソース交差センサ516より上の既知の高さに位置してよく、スタート位置114の上の領域をスキャンするように配置されてよい。ある実施形態においては、ソース交差センサ516のステータス(例えば、交差/退出イベント)は、スキャンセンサ530(例えば、スタート位置114の上の空間に向けられた水平方向を向くカメラ)の1つまたは複数のインスタンスをトリガして、データをスキャンおよび収集できる。他の実施形態においては、ロボットシステム100は、計算された物体高さ、または、その1つまたは複数の処理結果に基づいて、スキャン位置および/またはスキャン操作を導出できる。したがって、ロボットシステム100は、タスクを行っている間、異なる視点からの物体に関するデータ(例えば、側面またはプロファイル図/画像、底面図/画像、異なる次元に沿った形状測定値等)を取得できる、および/または、識別情報をスキャンできる。
【0059】
説明目的で、コンテナ508に取り付けられたソース交差センサ516およびスキャンセンサ530が示されている。しかしながら、ソース交差センサ516およびスキャンセンサ530は異なる構成であってよいことは理解されたい。例えば、ソース交差センサ516およびスキャンセンサ530は、スタート位置114のいずれの装置とも接続されなくてよく、および/または、独立していてよい。また、スキャンセンサ530は、異なる位置および向きで配置され、物体の複数の表面を同時に/連続してスキャンするスキャナのセットを含み得ることを理解されたい。
【0060】
ソース交差センサ516およびスキャンセンサ530(例えば、水平方向および/または上方向を向いたカメラまたはIDスキャナ)は、移動中の認識されていない物体の追加データを取得できる。上記のように、ソース交差センサ516を使用して、物体を移動する追加の操作/動き無しに、移動された物体の物体高さを計算できる。さらに、物体を持ち上げた後に物体高さを決定することは、他の物体の上に載ると変形する物体があるので、高さ測定値の精度を向上させる。換言すると、物体の形状、および、任意の対応する寸法は、物体が持ち上げられる/吊り下げられる時、変化する場合がある。例えば、吊り下げられる時、物体のプロファイル、および/または、対応する高さ(例えば、エンドエフェクタ504から物体の底部までの距離)は、プラスチック包装の布ベースの品物またはゴムベースの品物等、パッケージの剛性の不足のために変化する場合がある。交差センサ(例えば、ソース交差センサ516)を用いて、移動中の物体高さを決定することによって、ロボットシステム100は、移動中の物体の形状/寸法の任意の変化を、(例えば、動作計画を介して)正確に考慮できる。したがって、ロボットシステム100は、物体を移動している時に、実際の物体高さ(例えば、置いた時の高さではなく、吊り下げられた時の物体の高さ)を使用することによって、形状の変化が原因で生じ得る衝突を低減/除去できる。ある実施形態においては、ロボットシステム100は、移動される物体の揺れ、または、振り子のような揺れの低減等のために、実際の物体高さにしたがって、運搬速度、運搬加速度、または、これらの組み合わせを調整できる。ある実施形態においては、ロボットシステム100は、止まっている物体高さ、および/または、移動している物体高さを使用して、認識されていない物体を登録できる。
【0061】
さらに、ロボットシステム100は、計算された物体高さにしたがって物体を操作し、スキャンセンサ530を動作させて、第1の画像センサ512および/または第2の画像センサ514によって検出できない場合がある認識されていない物体に関する正確な識別情報(例えば、1つまたは複数の垂直および/または底部の面/辺、プロファイル形状、識別子の値、および/または、識別子位置の2D/3D画像)を提供できる。以下にさらに詳細に記載するように、物体高さおよび/または追加情報を使用して、認識されていない物体の
図2の登録データ254を生成できる。したがって、ロボットシステム100は、認識されていない物体に関してより多くの情報を取得でき、この情報を使用して、移動タスクを妨害することなく、他の類似の物体のその後の認識の可能性を向上させることができ、および/または、物体のさらなる操作の精度を向上させることができる。
【0062】
ある実施形態においては、ロボットシステム100は、物体高さおよび/または追加情報を使用して、上面に加えて、物体の他の表面(例えば、垂直方向に向いた表面/寸法)を分析する等によって、物体を再分析、認識できる。したがって、ロボットシステム100は、認識されない箱の数、または、検出漏れの結果を低減できる。
【0063】
ソースベースセンサの物体の高さ計算およびスキャンシーケンス
図6A〜6Dは、本明細書で紹介した1つまたは複数の実施形態による、高さ計算および物体スキャンのシーケンス(例えば、様々な例示の処理状態)を示す。
図1のロボットシステム100は、エンドエフェクタ504の位置/高さ、および/または、
図1の対象物体112にしたがって、ソース交差センサ516を動作できる/ソース交差センサ516の動作の命令を実行できる。
【0064】
図6Aは、コンテナ508の上および/または外に位置する
図5のロボットアーム502および/またはエンドエフェクタ504に対応する最初の状態602を表す。最初の状態602は、ロボットアーム502が、対象物体112の把持および持ち上げのためにコンテナ508内に入り始めることに対応し得る。したがって、ロボットシステム100は、最初の状態602の間は、
図5のソース交差センサ516および/またはスキャンセンサ530からの出力をオフにおよび/または無視することができる。
【0065】
図6Bは、ロボットアーム502が、コンテナ508の上部部分に入って下に降り、対象物体112に接触、把持すること、および/または、対象物体112を最初に持ち上げることに対応する接近状態604を表す。例えば、接近状態604は、エンドエフェクタ504が対象物体112の上(例えば、
図1のスタート位置114に関連付けられた境界内)にあり、および/または、
図5の交差基準高さ524より下にあることを表してよい。ロボットシステム100は、接近状態604中、スキャンセンサ530を引きき続きオフのままにしてよい、および/または、スキャンセンサ530の出力を無視してよい。
【0066】
図6Cは、対象物体112が交差基準520を越えるまたは進入することに対応する交差状態606を表す。ロボットシステム100は、ロボットアーム502を動作させながら、
図5の把持部高さ522を含む把持部位置(例えば、
図5に示すx−y−zの値等、座標値のセット)を追跡できる。把持部高さ522が
図5の交差基準高さ524を越える時、ロボットシステム100は、作動イベント612を生成して、ソース交差センサ516をオンにできる。ソース交差センサ516からの出力は、対象物体112が交差基準520を越えるまたは進入する最初の交差状態614に対応し得る。
【0067】
ある実施形態においては、ロボットシステム100は、最初の状態602の後(例えば、接近状態604中)、ロボットアーム502が交差基準520を越えるので、作動イベント612を生成でき、および/または、最初の交差状態614を決定できる。換言すると、ロボットシステム100は、エンドエフェクタ504がコンテナ508の上にあり(例えば、水平方向に重なり)、且つ、把持部高さ522が交差基準高さ524未満の時、作動イベント612を生成でき、および/または、最初の交差状態614を決定できる。ある実施形態においては、ロボットシステム100は、交差状態606中、スキャンセンサ530をオフにしたままでよい、または、スキャンセンサ530の出力を無視してよい。他の実施形態においては、ロボットシステム100は、交差状態606中、把持部高さ522に基づいて、スキャンセンサ530をトリガまたは作動させてよい。
【0068】
図6Dは、対象物体112が交差基準520を出るまたは通過することに対応する通過状態608を表す。通過状態608は、ソース交差センサ516が検出する退出イベント616に対応し得る。例えば、送信された光/レーザ信号は、対象物体112の底部が交差基準520より上にある時、ソース交差センサ516によって検出されてよい。
【0069】
ロボットシステム100は、退出イベント616、または、そのタイミング(すなわち、退出イベント616に対応するタイムスタンプ)を使用して、対象物体112の物体高さ620を計算できる。ソース交差センサ516からの情報を用いて物体高さ620を計算する処理は、目的地交差センサ(例えば、
図3の目的地交差センサ316)からの情報を用いた高さ計算の処理と類似してよい。例えば、ロボットシステム100は、退出イベント616時に、把持部高さ522を決定できる。ロボットシステム100は、退出イベント616時に、把持部高さ522と交差基準高さ524(例えば、既知/所定の値)との差に基づいて、物体高さ620を計算できる。ある実施形態においては、ロボットシステム100は、接近状態604中、スキャンセンサ530をオフにしたままであってよい、または、スキャンセンサ530からの出力を無視してよい。他の実施形態においては、ロボットシステム100は、退出イベント616および/または把持部高さ522に基づいて、スキャンセンサ530を作動またはトリガできる。
【0070】
図6Eは、対象物体112が交差基準520を出るまたは通過することに対応する通過状態610を表す。計算された物体高さ620に基づいて、ロボットシステム100は、1つまたは複数のスキャン位置652および/またはスキャン操作654を導出できる。スキャン位置652は、対象物体112の1つまたは複数の表面(例えば、周囲の/垂直方向に向いた表面および/または底面)、または、その一部を提示し、スキャンセンサ530を用いてスキャンするようにエンドエフェクタ504を配置するための位置を含み得る。換言すると、スキャン位置652は、スキャンセンサ530のスキャンゾーン内(例えば、正面、および/または、所定距離内)に対象物体112を配置する位置であってよい。スキャン操作654は、認識されていない物体をスキャンする空間にわたってエンドエフェクタ504を移動させるように構成されたコマンドおよび/または設定のシーケンス(例えば、動作計画)を含み得る。換言すると、スキャン操作654は、認識されていない物体の表面および/または複数の表面の複数の部分をスキャンするための、認識されていない物体の(例えば、z軸に沿った)垂直変位、(例えば、x軸および/またはy軸に沿った)水平変位、および/または、回転(例えば、z軸を中心とした回転)に対応し得る。
【0071】
説明のための例として、物体は、典型的に、1つまたは複数の物体表面の角部および/または端部上のバーコードおよび/またはQRコード(登録商標)を含んでよい。バーコードおよび/またはQRコード(登録商標)をスキャンするために、ロボットシステム100は、物体高さ620を使用して、対象物体112の底面を突き止めることができる。ロボットシステム100は、計算された物体高さ620および/または水平方向の寸法を使用して、対象物体112(例えば、認識されていない物体)の1つまたは複数の表面の角部および/または端部をさらに突き止めることができる。したがって、物体高さ620に基づいて、ロボットシステム100は、認識されていない物体上のバーコード、QRコード(登録商標)、および/または、他の識別子を正確に突き止める可能性を高めることができる。
【0072】
ロボットシステム100は、角部および/または端部位置の推定位置を使用して、スキャン位置652を導出できる。ロボットシステム100は、スキャン位置562にしたがってロボットアーム502および/またはエンドエフェクタ504を動作させることによって、スキャンセンサ530のスキャンゾーンに対象物体112の1つまたは複数の表面を配置できる。例えば、ロボットシステム100は、対象物体112の底部が基準平面620を出た後、垂直方向に向いた表面の底部もしくは上部、または、底面がスキャンゾーン内になるように、対象物体112を上昇させることができる。また、ロボットシステム100は、垂直方向に向いた表面の上部がスキャンゾーン内になるように、対象物体112を下降させることができる。ロボットシステム100は、また、対象物体112がスキャンゾーン内の垂直方向の中心になるように、対象物体112を上昇/下降させてよい。
【0073】
ロボットシステム100は、角部および/または端部位置の位置推定値に基づいて、スキャン操作654をさらに導出できる。例えば、ロボットシステム100は、対象物体112を水平に/垂直に移動して、対象物体の複数の角部、端部、および/または、表面をスキャンセンサ530に提示するスキャン操作654を導出できる。また、ロボットシステム100は、対象物体112を回転させて、対象物体112の複数の表面をスキャンセンサ530に提示するスキャン操作654を導出できる。
【0074】
ロボットシステム100は、エンドエフェクタ504をスキャン位置652に配置することに基づいて、および/または、スキャン操作654を実施することに基づいて、スキャンセンサ530を動作させる命令を動作/実行できる。例えば、ロボットシステム100は、スキャン操作654を実施しながら、スキャン位置652におよび/または所定のタイミングでエンドエフェクタ504を配置した後、スキャンセンサ530をトリガできる。また、ロボットシステム100は、スキャンセンサ530を作動させている間、スキャン操作654を実施できる。したがって、スキャン位置652および/またはスキャン操作654に基づいて、ロボットシステム100は、認識されていない物体の複数の表面/部分を提示し、認識されていない物体上の識別子を正確に突き止め、スキャンする可能性を高めることができる。
【0075】
代替実施形態において、ロボットシステム100は、(例えば、ロボットアームを介して)スキャンセンサ530を移動させて、対象物体112をスキャンできる。したがって、ロボットシステム100は、対象物体112の代わりに、スキャンセンサ530を移動または再配置するスキャン位置652および/またはスキャン操作654を導出できる。したがって、ロボットシステム100は、スキャン中の対象物体112の移動を最小にすることによって、(例えば、把持失敗または衝突による)物体損失の可能性を低減/除去できる。
【0076】
図6Fは、スキャン状態610をさらに示す。ある実施形態においては、ロボットシステム100は、1つまたは複数のスキャンセンサ530と対応するスキャンゾーンとにしたがって、
図6Eのスキャン位置652および/または
図6Eのスキャン操作654を導出できる。また、説明のための例として、ロボットシステム100は、x軸および/またはy軸に沿って認識されていない物体を移動させる、および/または、z軸(垂直軸とも呼ばれる)を中心に認識されていない物体を回転させるスキャン操作654を導出できる。
【0077】
説明目的で、交差センサとスキャンセンサの間の特定の配置に関してスキャンシーケンスを記載した。しかしながら、スキャンシーケンスが、異なる実施形態に異なるように適用できることは理解されたい。例えば、ロボットシステム100は、ソース交差センサ516を使用して、(例えば、状態602〜608を介して)物体高さ620を計算でき、
図3のスキャンセンサ330を用いて等、
図1のタスク位置116の近くの認識されていない物体をスキャンできる。したがって、ロボットシステム100は、認識されていない物体をタスク位置116に向けて下降させることに関連付けられたスキャン位置/操作を導出できる。
【0078】
タスク実行中のスキャンおよび登録の動作フロー
図7は、本明細書で紹介した1つまたは複数の実施形態による、
図1のロボットシステム100を動作させる方法700のフロー図である。方法700は、
図1のスタート位置114(例えば、パレットおよび/またはコンテナ)から
図1のタスク位置116(例えば、コンベヤ)に認識されていない物体を移動するため等、異なるタスクを実行しながら、認識されていない物体を登録する方法である。方法700は、交差センサ(例えば、
図3の目的地交差センサ316、および/または、
図5のソース交差センサ516)および/またはスキャンセンサ(例えば、
図3のスキャンセンサ330および/または
図5のスキャンセンサ530)を用いて、認識されていない物体に関する情報を取得する方法であってよい。取得された情報を使用して、認識されていない物体を登録できる。方法700は、
図2の記憶装置204の1つまたは複数に記憶された命令を
図2のプロセッサ202の1つまたは複数を用いて実行することに基づいて実施されてよい。
【0079】
ブロック702において、ロボットシステム100(例えば、ロボットシステム100内の
図2のプロセッサ202および/またはセンサ216)は、ソースデータを取得できる。例えば、ロボットシステム100は、スタート位置114の(例えば、1つまたは複数の物体を操作/移動する前の)
図3の対象スタック310を表す最初の2Dおよび/または3D画像データを取得できる。ある実施形態においては、ロボットシステム100は、
図3の第1の画像センサ312、
図5の第1の画像センサ512、および/または、他のセンサを動作させて、スタート位置114にある(例えば、認識可能、または、そうでない)物体の上面を表す画像データを生成できる。ロボットシステム100は、センサ(例えば、第1の画像センサ312/512)とプロセッサ202との間で、さらなる処理のために画像データを通信できる。
【0080】
ブロック704において、ロボットシステム100は、取得されたソースデータを処理して、認識可能な物体を検索できる。例えば、ロボットシステム100は、ソースデータまたはソースデータの派生値を
図2のマスタデータ252と比較できる。ある実施形態においては、ロボットシステム100は、第1の画像センサ312/512からの1つまたは複数の2D画像データ(例えば、対象スタック310の対応する上面図)をマスタデータ252の既知のまたは予測された物体の表面画像と比較できる。
【0081】
ブロック706において、ロボットシステム100は、ソースデータまたはソースデータの任意の部分がマスタデータ252に表された既知のまたは予測された物体の態様と一致するか否かを判断できる。ロボットシステム100は、ソースデータまたはソースデータの派生値がマスタデータ252のエントリ(例えば、既知の物体を表す登録データ)と一致する時、認識された物体を判断できる。そうでない場合、ロボットシステム100は、ソースデータに表された物体の1つまたは複数は、認識されていない物体の1つまたは複数を含むと判断できる。
【0082】
物体が認識された時、ブロック708において、ロボットシステム100は、認識された物体をタスク位置116(例えば、コンベヤ306/506)に移動する等によって、認識された物体をさらに処理できる。ロボットシステム100は、認識された物体をタスク位置116に移動する動作計画を導出および/または実施できる。例えば、ロボットシステム100は、認識された物体の位置を使用して、ロボットアームおよび/またはエンドエフェクタの対応する位置を導出できる。ロボットシステム100は、
図3のロボットアーム302もしくは
図5のロボットアーム502、および/または、
図3のエンドエフェクタ304/
図5のエンドエフェクタ504の導出された位置および現在の/投影された位置を使用して、動きおよび/または対応するアクチュエータのコマンド/設定をさらに導出できる。同様に、ロボットシステム100は、移動のための認識された物体の持ち上げ、水平移動、下降、および/または、回転に対応するロボットアーム302/502および/またはエンドエフェクタ304/504の位置、動き、および/または、対応するアクチュエータのコマンド/設定を導出できる。ロボットシステム100は、スタート位置114からタスク位置116に認識された物体を移動するためにアクチュエータのコマンド/設定をシーケンスで組み合わせることに基づいて、動作計画を導出できる。ロボットシステム100は、移動コマンド/設定を所定の動きのシーケンス、および/または、対応するアクチュエータのコマンド/設定と組み合わせることに基づいて、物体を把持および/または解放する動作計画をさらに導出できる。ある実施形態においては、ロボットシステム100は、
図3の解放点センサ318または
図5の解放点センサ518からのトリガ信号に基づいて、物体を解放する動作計画を導出できる。解放点センサ318は、移動される物体の底部が載置表面より上の安全な解放高さに対応する検出線/平面を越える時、トリガ信号を生成するように構成されてよい。
【0083】
ある実施形態において、ロボットシステム100は、コマンド/設定をロボットアーム302および/またはエンドエフェクタ304と通信することに基づいて、動作計画を実施/実行できる。したがって、ロボットシステム100は、導出したコマンド/設定にしたがってロボットアーム302/502および/またはエンドエフェクタ304/502の
図2の駆動装置212および/または
図2の運搬モータ214を動作させることに基づいて、導出した動作計画を実行できる。ある実施形態において、方法700は、認識された物体の1つまたは複数を移動した後、ブロック702に戻り、更新されたソースデータを取得できる。露出したおよび/またはアクセス可能な認識された物体の全て(例えば、対象スタック310の一番上の層の全ての認識された物体)がタスク位置116に移動されるまで、方法は、上記プロセス(例えば、ブロック702〜808)を繰り返し、実施できる。
【0084】
残りの露出したおよび/またはアクセス可能な(例えば、マスタデータ252のエントリに対応または一致する)物体が認識されなくなった時、ロボットシステム100は、スタート位置112にある認識されていない物体を表す画像データを受信できる。例えば、画像データは、残りの認識されていない物体の1つまたは複数の上面を表すことができる。
【0085】
ブロック710において、ロボットシステム100は、残りの認識されていない物体の位置を推定できる。例えば、ロボットシステム100は、第1のセンサ312/512からの撮像結果を使用して、認識されていない物体の水平方向の寸法、位置、および/または、境界を推定できる。認識されていない物体および/またはその境界を突き止めるために、ロボットシステム100は、ブロック712等に示すように、スタート位置114の物体の周囲の(露出された)辺および/または関連する角部を識別できる。例えば、ロボットシステム100は、3D画像出力(例えば、デプスマップ)にしたがって高さの差を決定することによって、および/または、画素の明るさ、画素の色、高さ/深度測定値等のパターン(例えば、連続したおよび/または線形のパターン)に関して2D画像出力を分析することによって、周囲の辺を識別できる。ある実施形態においては、ロボットシステム100は、ソーベルフィルタを用いて画像出力を処理して、露出した辺を識別できる。ロボットシステム100は、異なる向き/傾斜を有する2つの露出した辺の間の接合点または交点として、露出した外側角部を同様に識別できる。露出した角部を用いて、ロボットシステム100は、1つの対象の認識されていない物体に対応する最小エリアを表す最小実行可能領域(MVR)を導出できる。MVRは、認識されていない物体の連続した表面の最初の推定値を表すことができる。したがって、ブロック714で示すように、ロボットシステム100は、MVRを使用して、エンドエフェクタ304/504を用いて認識されていない物体に接触および把持する把持位置を導出できる。
【0086】
ブロック720において、ロボットシステム100は、認識されていない物体に関連付けられた1つまたは複数のタスクを実施できる。例えば、ロボットシステム100は、スタート位置114からタスク位置116に認識されていない物体を移動できる。ある実施形態においては、ロボットシステム100は、画像データに基づいてタスクを実施できる。ロボットシステム100は、(3Dの辺の対向する側の深度値の段階的変化を示す3D点群で識別される辺であってよい)開口したまたは3Dの辺、および/または、認識されていない物体の上面(複数可)に対応する目に見える2Dの辺等の、画像データに表された周囲の辺のセットを識別できる。ロボットシステム100は、識別された周囲の辺に基づいて、MVRを導出できる。ロボットシステム100は、MVRを使用して、ロボットアーム302/502および/またはエンドエフェクタ304/504を動作して、または、動作させる命令を実行して、認識されていない物体を把持および移動できる。
【0087】
ある実施形態においては、ロボットシステム100は、タスク実施中に、認識されていない物体に関する追加データを取得できる。例えば、ロボットシステム100は、認識されていない物体を移動して(例えば、持ち上げて)、または、移動する命令を実行して、認識されていない物体を隣の物体からさらに分離できる。ロボットシステム100は、次に、対象スタック310と移動された物体とを再撮像して、または、再撮像する命令を実行して、移動された物体の周囲の他の辺(例えば、他の隣の物体に以前は隣接していた、または、当接していた辺)をさらに識別できる。また、ロボットシステム100は、対応するスタート位置112から認識されていない物体を最初に移動した後等、タスクの最初の部分を実施中/実施している間、認識されていない物体の上面の寸法(例えば、幅および長さ)を計算/確定できる。
【0088】
他の追加データを取得するために、ロボットシステム100は、ブロック732に示すように、認識されていない物体の物体高さ(例えば、
図3の物体高さ320、および/または、
図6の物体高さ620)を計算できる。ロボットシステム100は、上記のように、認識されていない物体の移動中の物体高さを計算できる。例えば、ロボットシステム100は、(例えば、関連付けられた動作計画、コマンド、および/または、設定を生成/送信することによって)動作を実施してタスクを行っている間、把持部位置を追跡することと交差イベントを検出することとに基づいて、物体高さを計算できる。交差イベントは、交差センサに関連付けられた交差基準(例えば、検出線)に対する(例えば、進入するおよび/または退出する)認識されていない物体の底部を表すことができる。ある実施形態においては、ロボットシステム100は、タスク位置116に向けて下降している間に、
図3の目的地交差センサ316の検出線/平面に底部が進入することに関連付けられた交差イベントを使用できる。他の実施形態においては、ロボットシステム100は、スタート位置114から持ち上げられている間に、底部が
図5のソース交差センサ516の検出線/平面に進入することおよび/または検出線/平面から退出することに関連付けられた交差イベントを使用できる。
【0089】
ロボットシステム100は、イベントまたはイベントのタイミングを使用して、物体高さを計算できる。例えば、ロボットシステム100は、交差イベントのタイミングを使用して、把持部位置(例えば、交差イベント時の把持部高さ)を決定できる。ロボットシステム100は、交差イベント時の交差基準の既知の高さと把持部位置(例えば、把持部高さ)との間の差として物体高さを計算できる。
【0090】
ブロック734において、ロボットシステム100は、移動中、計算された物体高さを使用して、認識されていない物体上の対象領域を突き止めることができる。対象領域は、最初の画像データに表されていなかった認識されていない物体の一部を表すことができる(例えば、第1の画像センサ312からの上面図画像は、認識されていない物体の側面/垂直方向に向いた表面または底部の表現を含まない場合がある)。ロボットシステム100は、最初の画像データで見えていた垂直方向に向いた表面、および/または、その周囲の辺の姿勢を推定できる。
【0091】
説明のための例として、ロボットシステム100は、対象領域(例えば、垂直方向に向いた表面、および/または、その一部)の現在位置を、物体高さと上面の周囲の辺の寸法/位置とに基づいて、推定できる。タスク動作を実施している間、ロボットシステム100は、追跡された把持部位置に基づいた移動下の認識されていない物体の上面の現在の姿勢を導出/追跡できる。認識されていない物体(例えば、箱、円筒等)の全体形状を推定するテンプレート方程式またはプロセスにしたがって、ロボットシステム100は、上面の姿勢と物体高さとを使用して、認識されていない物体の姿勢(例えば、位置および/または向き)および/または1つまたは複数の垂直方向に向いた表面を画定する周囲の辺の位置を導出できる。周囲の辺の導出した姿勢に基づいて、ロボットシステム100は、認識されていない物体の垂直方向に向いた表面の端部(例えば、周囲の辺の近くのエリア)および/または角部として対象領域を突き止めることができる。ある実施形態においては、ロボットシステム100は、垂直方向に向いた表面の全体、および/または、識別子(例えば、バーコード、QRコード(登録商標)等)を有する可能性が高い表面上の他の部分として、対象領域を突き止めることができる。
【0092】
ロボットシステム100は、垂直方向に向いた表面の寸法をさらに計算してよい。例えば、ロボットシステム100は、認識されていない物体が箱または円筒形状を有し、垂直方向に向いた表面の共通の長さとして物体高さを設定すると仮定できる。ロボットシステム100は、垂直方向に向いた表面のそれぞれの幅として、上面の対応する寸法を設定できる。追加的に、または、代替的に、ロボットシステム100は、移動中の認識されていない物体の底面の姿勢および/または寸法を導出してよい。
【0093】
ブロック736において、ロボットシステム100は、突き止められた対象領域を使用して、スキャン位置(例えば、
図4Cのスキャン位置412、および/または
図6Eのスキャン位置652)を導出できる。スキャン位置の導出時に、ロボットシステム100は、利用可能なスキャンセンサ(例えば、スキャンセンサ(複数可)330および/またはスキャンセンサ(複数可)530)のスキャンゾーンを決定できる。スキャンゾーンは、センサの検出部分の前、センサの検出部分から閾値距離内、および/または、センサの検出部分を中心とした閾値角度範囲内の空間等、対応するスキャンセンサによって検出可能な空間を表すことができる。ロボットシステム100は、スキャンゾーンを突き止めるまたは画定する所定のデータを調べること、または、アクセスすることに基づいて、スキャンゾーンを決定できる。
【0094】
ロボットシステム100は、一般的にスキャンゾーン内にセンサが向くように対象領域(例えば、垂直方向に向いた表面、および/または、その一部)を配置するためのスキャン位置を導出できる。換言すると、スキャン位置は、対象領域の1つまたは複数をスキャンセンサに提示するエンドエフェクタ304/504の所望の姿勢(例えば、位置および/または向き)を含み得る。
【0095】
説明のための例として、ロボットシステム100は、垂直方向に向いた表面の寸法をスキャンゾーンの1つまたは複数の所定の寸法閾値と比較することによって、垂直方向に向いた表面全体が一度にスキャンできるか否かを判断できる。寸法が所定の寸法閾値未満の時、ロボットシステム100は、垂直方向に向いた表面の中心部分(例えば、垂直方向に向いた表面の導出された辺と辺の間の中点を含む対象位置)、および/または、所定の位置にある導出された辺の1つ(例えば、上の辺の中点を含む対象位置)をスキャンセンサに対して配置するスキャン位置を導出できる。例えば、ロボットシステム100は、垂直方向に向いた表面を、スキャンセンサの前から所定の距離だけ離して、中心にくるように配置できる。
【0096】
垂直方向に向いた表面の寸法の1つまたは複数が、所定の寸法閾値の1つまたは複数より大きい時、ロボットシステム100は、認識されていない物体の垂直方向に向いた表面が大きすぎて1つの画像として正確に撮像または撮影できないと判断できる。したがって、ロボットシステム100は、対象位置(例えば、別個の角部/端部)をスキャンセンサに提示する1つまたは複数のスキャン位置を導出できる。換言すると、ロボットシステム100は、垂直方向に向いた表面の対象部分をスキャンセンサに向けてスキャンゾーンに配置するエンドエフェクタ304/504のスキャン位置を導出できる。例えば、ロボットシステム100は、閾値を超える垂直方向に向いた表面の寸法(複数可)にしたがって、垂直方向に向いた表面を完全にカバーまたは撮影するように構成された対象領域のセットを選択できる。セット内の個々の対象領域は、それぞれ、合計して、そのセットが垂直方向に向いた表面全体を撮影するように、異なる部分をカバーするように構成されてよい。ロボットシステム100は、垂直方向に向いた表面の1つまたは複数の周囲の辺、および/または、その対応する寸法にしたがって、選択された対象領域のそれぞれの基準位置を導出できる。ロボットシステム100は、対応する基準位置の選択された対象領域のそれぞれに対応するスキャン位置をスキャンセンサに対する既知の位置で導出できる。例えば、ロボットシステム100は、垂直方向に向いた表面の第1の角部または第1の端部をスキャンセンサに提示することに対応する第1のスキャン位置を導出できる。ロボットシステム100は、同様に、第2の角部または第2の端部を提示することに対応する第2のスキャン位置を導出できる。
【0097】
ロボットシステム100は、認識されていない物体の底面に関連付けられたスキャン位置をさらに導出できる。例えば、ロボットシステム100は、上方を向いているスキャンセンサの上に底面を配置するスキャン位置を導出できる。ある実施形態においては、ロボットシステム100は、表面および/または1つまたは複数の表面内の一部のスキャンシーケンスを決定できる。例えば、ロボットシステム100は、識別子が対応する対象部分上にある可能性を表す信頼値を計算できる。ある実施形態においては、ロボットシステム100は、上面の1つまたは複数の視覚特性にしたがって、信頼値を計算できる。例えば、記載/ロゴが無いこと、および/または、長方形のフラップを分離する折り目または線の存在等、視覚特性が、認識されていない物体の上面が最初の画像に示されていることを示す時、ロボットシステム100は、信頼値を増加させることができる。ロボットシステム100は、可能性の値にしたがって、スキャン位置を順序付けることができる。
【0098】
ある実施形態においては、ロボットシステム100は、ブロック738に示すように、スキャン操作(例えば、
図4Cのスキャン操作414、および/または、
図6Eのスキャン操作654)を導出できる。ロボットシステム100は、スキャン位置に基づいて、スキャン操作を導出できる。例えば、ロボットシステム100は、スキャン位置から他の位置に行くためにエンドエフェクタ304を水平方向におよび/または垂直方向に移動するスキャン操作を導出できる。また、ロボットシステム100は、エンドエフェクタをスキャン位置に配置した後、エンドエフェクタを、それにより、認識されていない物体を、垂直軸(例えば、z軸)を中心に回転させるスキャン操作を導出できる。スキャン操作を実施することによって、ロボットシステム100は、認識されていない物体を移動して、表面および/または複数の表面上の複数の部分をスキャンセンサに提示できる。
【0099】
ブロック740において、ロボットシステム100は、対応するロボットユニットまたはロボットユニットの構成要素にコマンド、設定、および/または、動作計画を通信すること等によって、スキャン動作を実施できる。ロボットシステム100は、タスクを実施している間、または、タスク実施の途中で、スキャン動作を実施できる。ある実施形態においては、例えば、ロボットシステム100は、タスクの実施を停止でき、スキャン動作を実施でき、その後、タスクを再び始めることができる。他の実施形態においては、ロボットシステム100は、段階的にタスクを生成および実施できる。最初に、ロボットシステム100は、タスクの第1の部分を実施して、交差イベントまで認識されていない物体を移動できる。交差イベントにしたがって、ロボットシステム100は、上記処理結果に基づいて、スキャン動作を実施できる。スキャン動作実施後、ロボットシステム100は、タスクの残りを生成および実施できる。さらに、タスク、および/または、タスクの残りを実施することは、認識されていない物体をさらに持ち上げること、認識されていない物体をタスク位置116の上に水平方向に移動すること、認識されていない物体をタスク位置116に下降させること、および/または、タスク位置116でもしくはタスク位置の上で認識されていない物体を解放することをさらに含み得る。
【0100】
ロボットシステム100は、スキャン位置(複数可)にしたがって、ロボットアーム302/502および/またはエンドエフェクタ304/504を動作させるコマンド、設定、および/または、動作計画を生成/送信することによって、スキャン動作を実施できる。例えば、
図2の1つまたは複数のプロセッサ202は、ロボットアーム302/502および/またはエンドエフェクタ304/504によって実行されると、エンドエフェクタ304/504をスキャン位置に配置するコマンド、設定、および/または、動作計画を決定および通信できる。したがって、ロボットシステム100は、スキャンセンサ(複数可)の前に、認識されていない物体の対象部分を提示できる。また、ロボットシステム100は、エンドエフェクタ304/504をスキャン位置に配置した後、スキャン操作を実施できる。
【0101】
ロボットシステム100は、ロボットアーム302/502および/またはエンドエフェクタ304/504の動作にしたがって、スキャンセンサをさらに動作できる。例えば、ロボットシステム100は、各スキャン位置にエンドエフェクタ304/504を配置した後、スキャンセンサを作動させることができる。また、ロボットシステム100は、エンドエフェクタ304/504を1つのスキャン位置に配置した後、(例えば、作動コマンドを生成することによって)スキャンセンサを作動させることができ、スキャン操作を実施している間、スキャンセンサをアクティブなままにすることができる。したがって、ロボットシステム100は、最初の画像データで見えなかった/アクセスできなかった認識されていない物体の1つまたは複数の部分をスキャンできる。
【0102】
ブロック742において、ロボットシステム100は、スキャン動作に関連付けられた1つまたは複数の結果を受信できる。例えば、ロボットシステム100は、ステータス、スキャンされた値、および/または、タイムスタンプをスキャンセンサから受信できる。ステータスは、スキャンの成功、または、スキャンゾーン内に識別子が存在しない等によるスキャンエラーを表すことができる。スキャンされた値は、識別子によって表される値、および/または、スキャンセンサによって撮影された画像を含み得る。タイムスタンプは、スキャン値がスキャンセンサによって生成された時、および/または、スキャン値が1つまたは複数のプロセッサ202によって受信された時に対応し得る。
【0103】
ロボットシステム100は、取得した結果を使用して、スキャン結果を生成できる。スキャン結果は、値、画像、タイムスタンプ、および/または、その処理結果を含み得る。例えば、スキャン結果は、バーコード、QRコード(登録商標)、RF識別子送信器等によって表される値を含み得る。また、スキャン結果は、識別子の推定位置を含むことができ、推定位置は、タイムスタンプに対応するエンドエフェクタ304/504の現在位置に基づいて、導出されてよい。ある実施形態においては、ロボットシステム100は、スキャンセンサからのスキャンされた画像を(例えば、所定の視覚パターン認識プロセスを介して)視覚的に処理して、識別子と、識別子の表された値とを突き止めることができる。代替的に、または、追加的に、ロボットシステム100は、スキャンされた画像で周囲の辺を識別でき、その後、周囲の辺の外側の画像の部分をクロップして取り除くことができる。ロボットシステム100は、スキャンされた表面を視覚的に表すクロップされた画像を含むスキャン結果を生成できる。
【0104】
ブロック724において、ロボットシステム100は、移動された物体(例えば、認識されていない物体)を、その物体に対応する登録データ254の新しいインスタンスを作成および/またはポピュレートすること等に基づいて、登録できる。新しい登録データ254は、移動中の認識されていない物体の新しい記録を表すことができる。ある実施形態においては、ロボットシステム100は、さらに、クロップされた画像または識別子の値を含む取得された情報を、マスタデータ252のエントリと比較できる。比較が一致すると、ロボットシステム100は、それにしたがって、移動されている物体の認識ステータスを調整できる。そうでない場合、ロボットシステム100は、認識されていない物体の登録を続けることができる。
【0105】
認識されていない物体の登録時に、ロボットシステム100は、識別子および/または他の物理的特性に関連付けられた情報をマスタデータ252に記憶できる。例えば、ロボットシステム100は、移動中または移動前に登録データ254のエントリを作成できる。ロボットシステム100は、上面図、辺の長さ、物体高さ、または、これらの組み合わせ等、取得したデータを作成したエントリに記憶できる。また、ロボットシステム100は、スキャン結果を登録データ254に記憶できる。ロボットシステム100は、認識されていない物体がタスク位置116に配置される、および/または、エンドエフェクタ304/504から解放される時、登録データ254を確定および/または記憶できる。
【0106】
物体を登録している間、または、登録後、ロボットシステム100は、タスクを完了できる。例えば、ロボットシステム100は、スキャンセンサが識別子の値またはスキャンした画像の返信に成功した時、スキャン動作を停止できる。ロボットシステム100は、次に、タスクの残りの部分の実施を続け、認識されていない物体をタスク位置116に載置できる。ある実施形態においては、ロボットシステム100は、タスクの完了と並行して、スキャン結果を取得し、および/または、移動された物体を登録できる。
ある実施形態においては、方法700は、認識されていない物体のグループを1つの画像から繰り返し、移動、登録できる。したがって、1つの未知の物体を移動、登録した後、方法700は、ブロック710へのフィードバックパスが示すように、残りの認識されていない物体の中から新しい登録対象を決定できる。ある実施形態においては、ブロック702へのフィードバックパスによって示すように、方法700は、未知の物体を移動、登録した後、スタート位置114を再撮像することを含み得る。
【0107】
ロボットシステムを動作する方法は、スタート位置にある認識されていない物体の上面を表す画像データを受信することと、画像データに表された上面の周囲の辺の第1のセットを識別することと、周囲の辺の第1のセットの少なくとも一部に基づいて、認識されていない物体をタスク位置に移動する動作を実施することと、認識されていない物体を移動する動作を実施している間に、交差基準高さにある横方向に向いた交差基準に対する認識されていない物体の進入または退出である(を表す)イベントを検出することと、認識されていない物体の物体高さをイベントに基づいて計算することと、認識されていない物体の垂直方向に向いた表面またはその一部の位置を物体高さと周囲の辺の第1のセットとに基づいて導出することと、垂直方向に向いた表面の導出された位置に基づいて、垂直方向に向いた表面をスキャンセンサに提示する姿勢を表すスキャン位置を導出することと、認識されていない物体を移動して、垂直方向に向いた表面をスキャンセンサに対して露出させる動作をスキャン位置に基づいて実施することと、垂直方向に向いた表面またはその一部をスキャンするスキャンセンサからの出力である(を表す)スキャン結果を生成することと、認識されていない物体の新しい記録であり(を表し)、スキャン結果を含む新しい登録データを作成することと、を含んでよい。
【0108】
方法は、認識されていない物体を移動して垂直方向に向いた表面をスキャンセンサに対して露出させる動作を実施することに基づいて、スキャンセンサを動作させる1つまたは複数のコマンドを生成することをさらに含んでよく、スキャン結果は、垂直方向に向いた表面上のバーコードおよび/またはクイックレスポンス(QR)コード(登録商標)によって表される値である。方法は、認識されていない物体を移動して、その複数の部分をスキャンセンサに提示するスキャン操作をスキャン位置に基づいて導出することと、垂直方向に向いた表面を移動する動作を実施した後、認識されていない物体の垂直方向に向いた表面および/または複数の表面の複数の部分をスキャンセンサに提示するスキャン操作にしたがって動作を実施することと、垂直方向に向いた表面および/または複数の表面の複数の部分をスキャンするスキャン操作にしたがって動作を実施することに基づいて、スキャンセンサを動作させる1つまたは複数のコマンドを生成することと、をさらに含んでよい。さらに、方法は、垂直軸を中心に認識されていない物体を回転させることに対応するスキャン操作に基づいてよい。方法は、また、物体高さおよび/または周囲の辺の第1のセットに基づいて、垂直方向に向いた表面の寸法を計算することと、寸法が閾値を超える場合に、垂直方向に向いた表面の導出された位置に基づいて、第2のスキャン位置を導出することとをさらに含んでよく、スキャン位置および第2のスキャン位置は、垂直方向に向いた表面の異なる端部または角部をスキャンセンサに提示する位置であり、スキャン操作は、認識されていない物体をスキャン位置から第2のスキャン位置に移動する操作であり、スキャンセンサを動作させる1つまたは複数のコマンドは、スキャン操作にしたがった動作を実施している間、スキャンセンサをアクティブなままにすることを表す。
【0109】
ロボットシステムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに接続され、プロセッサによって実行可能である以下の命令を記憶した少なくとも1つのメモリデバイスとを含んでよく、命令は、スタート位置にある認識されていない物体を表す画像データを受信することと、認識されていない物体をタスク位置に移動する動作を含むタスクを実施することと、認識されていない物体を移動する動作を実施している間、画像データに表されていなかった認識されていない物体の少なくとも一部をスキャンする動作を実施することと、認識されていない物体の少なくとも一部をスキャンする動作を実施することに基づいて、スキャン結果を生成することと、認識されていない物体の新しい記録であり、スキャン結果を含む新しい登録データを作成することと、を含む。命令は、また、タスクを実施している間、認識されていない物体と対応する追加データとを取得することと、認識されていない物体の物体高さを追加データに基づいて計算することと、画像データに表されていなかった認識されていない物体の少なくとも一部をスキャンセンサに提示する姿勢を表すスキャン位置を物体高さに基づいて導出することと、スキャン位置にしたがって認識されていない物体を配置するコマンドおよび/または設定と、スキャン位置にしたがって認識されていない物体を配置している間および/または配置した後、スキャンセンサを動作させる作動コマンドとに基づいて、認識されていない物体の少なくとも一部をスキャンする動作を実施することであってもよい。
【0110】
ある実施形態においては、画像データは、認識されていない物体の上面を表す。命令は、画像データに表された上面の1つまたは複数の周囲の辺の位置を識別することと、画像データに表されていなかった認識されていない物体の少なくとも一部を表す対象位置を、1つまたは複数の周囲の辺と物体高さとに基づいて導出することと、スキャンセンサによって検出可能な空間を表すスキャンゾーンを決定することと、対象位置とスキャンゾーンとに基づいて、スキャン位置を導出することとに対応してよい。ある実施形態においては、画像データに表されていなかった認識されていない物体の少なくとも一部は、認識されていない物体の垂直方向に向いた表面、または、その周囲の部分を含む。ある実施形態においては、スキャン位置は、垂直方向に向いた表面の第1の角部に対応してよい。命令は、物体高さに基づいて導出され、垂直方向に向いた表面の第2の角部をスキャンセンサに提示する姿勢を表す第2のスキャン位置と、垂直方向に向いた表面を垂直方向におよび/または水平方向に移動するスキャン位置および第2のスキャン位置にしたがって導出されたスキャン操作とに基づいて、スキャン動作を実施することに対応してよい。ある実施形態においては、命令は、垂直方向に向いた表面のアクセス可能な識別子をスキャンすることから生じる識別子の値を受信することと、識別子の値の受信時に把持部位置を決定することと、垂直方向に向いた表面上の識別子の位置を表す識別子位置を把持部位置に基づいて導出することと、識別子の値と識別子位置とを含むスキャン結果を生成することに基づいて、識別子位置を含むスキャン結果を生成する命令であってよい。命令は、また、認識されていない物体を、垂直軸を中心に回転させるコマンドおよび/または設定をさらに生成して複数の表面をスキャンセンサに提示することに基づいて、認識されていない物体の少なくとも一部をスキャンする動作を実施する命令であってよい。
【0111】
1つまたは複数の実施形態においては、命令は、認識されていない物体の少なくとも一部の視覚表現であるスキャンされた画像を受信する命令と、スキャン画像に基づいてスキャン結果を生成する命令であってよい。さらに、命令は、垂直方向に向いた表面上のアクセス可能な識別子に対応する識別子の値を、スキャンされた画像を視覚的に処理することに基づいて決定する命令と、垂直方向に向いた表面上の識別子の位置を表す識別子位置を、スキャンされた画像を視覚的に処理することに基づいて導出する命令と、識別子の値と識別子位置とを含むスキャン結果を生成する命令と、であってよい。また、命令は、スキャンされた画像の認識されていない物体の周囲の辺を識別する命令と、識別された周囲の辺の内部のスキャンされた画像のクロップされた部分を含むスキャン結果を生成する命令とであってよい。
【0112】
プロセッサ命令を記憶した有形で非一時的なコンピュータ読み取り可能媒体は、プロセッサ命令が、ロボットシステムによって、ロボットシステムの1つまたは複数のプロセッサを介して実行されると、ロボットシステムに以下の方法を行わせ、方法は、スタート位置にある認識されていない物体を表す画像データを受信することと、画像データに基づいて、認識されていない物体の少なくとも一部を突き止めることと、突き止められた部分の少なくとも一部に基づいて、タスク位置に認識されていない物体を移動するタスクを実施することと、タスクを実施している間、追加情報を取得することと、取得された追加情報に基づいて、画像データに表されていなかった認識されていない物体の少なくとも一部をスキャンセンサに提示する1つまたは複数のスキャン位置を導出することと、タスクを実施している間、1つまたは複数のスキャン位置に基づいて、画像データに表されていなかった認識されていない物体の少なくとも一部をスキャンする動作を実施することと、認識されていない物体の少なくとも一部をスキャンする動作を実施することに基づいて、スキャン結果を生成することと、認識されていない物体の新しい記録であり、スキャン結果を含む新しい登録データを作成することと、を含んでよい。
【0113】
追加情報を取得することは、タスク実施中、認識されていない物体をタスク位置に向けて下降させる動作を実施している間に、既知の高さにある横方向に向いた交差基準に対する認識されていない物体の進入および/または退出である交差イベントを検出することと、1つまたは複数のスキャン位置の導出に使用される物体高さを、交差イベントに基づいて計算することと、を含んでよい。追加情報を取得することは、タスク実施中、認識されていない物体をスタート位置から持ち上げる動作を実施している間に、既知の高さにある横方向に向いた交差基準に対する認識されていない物体の進入および/または退出である交差イベントを検出することと、1つまたは複数のスキャン位置の導出に使用される物体高さを、交差イベントに基づいて計算することと、も含んでよい。
【0114】
タスクを実施している間、認識されていない物体の少なくとも一部をスキャンする動作を実施することは、タスクの実施を少なくとも一時的に停止することと、タスクの実施を一時的に停止している間、認識されていない物体の少なくとも一部をスキャンする動作を実施することと、スキャン結果生成後、タスクを完了するために、認識されていない物体をタスク位置に向けて下降させることと、を含んでよい。タスクを実施している間、認識されていない物体の少なくとも一部をスキャンする動作を実施することは、タスクの実施を少なくとも一時的に停止することと、タスクの実施を一時的に停止している間、認識されていない物体の少なくとも一部をスキャンする動作を実施することと、スキャン結果生成後、タスクを完了するために、認識されていない物体をタスク位置の方に下降させることと、を含んでよい。
【0115】
ある実施形態においては、認識されていない物体の少なくとも一部は、垂直方向に向いた表面を含んでよい。したがって、認識されていない物体の少なくとも一部をスキャンする動作を実施することは、交差イベントを検出後、認識されていない物体の垂直方向に向いた表面をスキャンセンサの水平方向に向いたインスタンスに提示する動作を実施することを含んでよく、スキャン結果を生成することは、認識されていない物体の垂直方向に向いた表面をスキャンする動作を実施することに基づいて、スキャン結果を生成することを含む。ある実施形態においては、認識されていない物体の少なくとも一部は、底面を含んでよい。したがって、認識されていない物体の少なくとも一部をスキャンする動作を実施することは、交差イベントを検出後、認識されていない物体の底面をスキャンセンサの上方向を向いたインスタンスに提示する動作を実施することを含んでよく、スキャン結果を生成することは、認識されていない物体の底面をスキャンする動作を実施することに基づいて、スキャン結果を生成することを含む。
【0116】
結論
開示の技術の実施例の上記の詳細な説明は、網羅的なものではなく、また、開示の技術を上記特定の形態に制限することを意図してはいない。開示の技術の具体的な例を説明の目的で前述したが、当業者であれば認識するように、様々な同等の修正が、開示の技術の範囲内で可能である。例えば、プロセスまたはブロックを所与の順序で提示したが、代替の実施態様は、異なる順序で、ステップを有するルーチンを行ってよい、または、ブロックを有するシステムを採用してよい、また、一部のプロセスもしくはブロックは、削除、移動、追加、さらに分割、組み合わせ、および/または、修正されて、代替またはサブコンビネーションを提供してよい。これらのプロセスまたはブロックは、それぞれ、様々な異なる方法で実施されてよい。また、プロセスまたはブロックは、順次行われるとして示されている場合があるが、これらのプロセスまたはブロックは、代わりに、並行に実行もしくは実施されてよい、または、異なる時に行われてよい。さらに、本明細書に記載する具体的な数はいずれも、例に過ぎず、代替実施態様は、異なる値または範囲を採用してよい。
【0117】
これらの変更および他の変更は、上記発明を実施するための形態を考慮して、開示の技術に対して行われてよい。発明を実施するための形態が、開示の技術と、企図したベストモードとの特定の例を記載したが、開示の技術は、上記記載で本文にどんなに詳細に書かれていても、多くの方法で実践できる。システムの詳細は、特定の実施態様で大きく変わり得るが、それでも、本明細書に開示の技術に含まれる。上記のように、開示の技術の一定の特徴または態様を記載する時に使用される特定の用語は、その用語が、その用語が関連付けられた開示の技術のいずれの具体的な特性、特徴、または、態様に制限されるとして本明細書で再定義されていることを示唆しているととらえるべきではない。したがって、発明は、添付の請求項によって以外は制限されない。一般に、以下の請求項で使用される用語は、上記発明を実施するための形態の項が明示的にその用語を定義していない限り、開示の技術を明細書に開示の具体的な例に制限するとみなすべきではない。
【0118】
発明の特定の態様を特定の請求項の形で以下に記載するが、出願者は、発明の様々な態様を任意の数の請求項の形態で企図する。したがって、出願者は、本出願または継続出願のいずれにおいても、本出願を提出後、追加の請求項を追求する権利を保持して、このような追加の請求項の形を追求する。