本開示によれば、複数のユニット(例えば、各種ロボット、各種デバイス、それらと一体又は別体に設けられた制御装置等)が高度に統合されたロボットシステム、その制御装置、及び、それらを備える物流システム、並びにそのための方法等が提供される。すなわち、本開示の実施形態に係るロボットシステムは、例えば、1つ以上の作業を自律的に実行することができる統合システムである。また、本開示の実施形態に係るロボットシステムは、操作対象を収納容器等に収納する際に、操作対象の形状や寸法と収容容器の空間容積に基づいて、その収容効率を格段に高めることができる高度化したハンドリングを含むように作動する。また、操作対象の最初のポーズに関連する信頼基準に基づいて、制御シークエンスを作成又は取得して実行することにより、操作対象の高度化されたスキャン作業を提供する。
本開示の実施形態に係るロボットシステムは、操作対象を操作すること(例えば、物理的移動及び/又は方向付け)に基づいて、作業を実行するように構成することができる。より具体的には、ロボットシステムは、例えば、スタート位置を含むピックアップエリア(例えば、操作対象の供給元である大箱、ビン、コンテナ、パレット、収納容器、バケット、ケージ、ベルトコンベヤ等)から操作対象を取り上げ、それを目的の作業位置を含むドロップエリア(例えば、操作対象の移動先の大箱、ビン、コンテナ、パレット、収納容器、バケット、ケージ、ベルトコンベヤ等)に移動させ、様々な操作対象を並び替えたり置き換えたりすること等を実施することができる。
また、ロボットシステムが実行する制御シークエンスには、操作対象の1つ以上の特定の位置及び/又は表面上に位置する1つ以上の識別子(例えば、バーコード又はクイックレスポンス(QR)コード(登録商標)等)を、移送の際にスキャンすることが含まれ得る。従って、ロボットシステムは、操作対象を、把持してピックアップし、適宜の位置/向きで識別子をスキャンし、ポーズを調整し、ポーズを変えて持ち替え(把持を解放し、再度把持し直してピックアップする)、作業位置に移送して把持を解放し、作業位置に配置するといった種々の作業を実行することができる。
また、ロボットシステムは、操作対象の位置及びポーズ、操作対象の周りの環境を識別するための撮像デバイス(例えば、カメラ、赤外センサ/カメラ、レーダー、ライダー等)を備えることができる。さらに、ロボットシステムは、操作対象のポーズに関する信頼基準を計算することができる。また、ロボットシステムは、スタート位置を含むピックアップエリア、作業位置を含むドロップエリア、及び、操作対象の移動経路の途中にある持ち替え位置を含むエリア(例えば、仮置き台等の適宜の作業台、他のロボット等)等に移送されるときの操作対象の位置及び向きを示す画像を取得することができる。
さらに、ロボットシステムは、操作対象を、所定の順番(例えば、上から底、、外側から内側、内側から外側等)に従って、識別又は選択するように、画像処理を行うことができる。またさらに、ロボットシステムは、例えば、撮像データのパターン画像におけるピクセルの色、輝度、深さ/位置、及び/又は、それらの組み合わせやそれらの値の変化に基づいて、操作対象のアウトラインを識別し、また、それをグルーピング等することにより、その画像から、例えばピックアップエリアにおける操作対象の最初のポーズを判定することができる。最初のポーズの判定において、ロボットシステムは、所定のプロセス及び/又は方程式に従って、信頼基準を計算することができる。
また、ロボットシステムは、スタート位置を含むピックアップエリア等から作業位置を含むドロップエリア等までの経路の途中に設けられた持ち替え位置において、必要に応じて、操作対象の持ち替え(操作対象の把持位置の変更)を行うことができる。そして、ロボットシステムは、操作対象がスタート位置を含むピックアップエリア等から作業位置を含むドロップエリア等へ移動される間に、例えば測距機能を有する撮像デバイスにより、必要に応じて、操作対象の高さを取得することができる。
また、ロボットシステムは、操作対象の位置、ポーズ、高さ、信頼基準、若しくはそれらの組合せ、及び/又は、ロボットの位置、ポーズ、若しくはそれらの組み合わせに応じて、各作業を実行するための制御シークエンスを実行することができる。かかる制御シークエンスは、例えば、モーションプランニング、ディープラーニング等の機械学習等によって作成又は取得することができる。制御シークエンスは、例えば、操作対象の並び替え、持ち替え、置き換え等のためには、スタート位置、及び/又は、移動途中の任意の位置で、操作対象を把持すること、操作対象を操縦すること、操作対象を目的の作業位置に置くこと等に対応する。
ここで、従来のロボットシステムでは、操作対象を、スタート位置を含むピックアップエリア等で把持し、操作対象をその把持状態で作業位置を含むドロップエリア等へ移動して解放するような制御シークエンスを実行する。従って、従来のシステムでは、把持された操作対象はその把持状態で移動されて、その把持状態から解放されるのみであり、操作対象が積み付け又は収納される空間を十分に有効に利用できていたとはいえなかった。このため、操作対象の積み付け又は収納効率の観点から、人間による介入(調整、やり直し、補完、システム停止等)及びそのための操作入力を必要とする場合があった。
一方、本開示によるロボットシステムは、従来とは異なり、操作対象の形状情報、及び、操作対象の積み付け又は収納情報に基づいて、制御シークエンスを作成又は取得して実行することができる。換言すると、本開示によるロボットシステムは、操作対象の形状情報、及び、操作対象の積み付け又は収納情報に基づいて、更なる操作対象の積み付け又は収納効率を最適化することができる。また、本開示によるロボットシステムは、スタート位置から作業位置の途中に位置する持ち替え位置において、操作対象の把持位置を、操作対象の積み付け又は収納効率の最適化に適合する把持位置へと変更することができる。
また、本開示によるロボットシステムは、従来のシステムと異なり、必要に応じて、操作対象の実際の高さに従って、操作対象の積み付け又は収納効率の最適化に適合する制御シークエンスを作成又は取得して実行することができる。例えば、スキャニングされた操作対象の1つ以上の特定の位置及び/又は表面上に位置する1つ以上の識別子が同一である操作対象であっても、実際には異なる形状寸法を有する場合があり得る。そこで、持ち替え位置よりも制御シークエンスの上流側(前段階)において、例えば、鉛直方向に位置決めされた撮像デバイス(カメラや距離測定デバイス)から、支持されている位置が既知である操作対象までの距離情報に基づいて、操作対象の高さを実測する。そして、実測された操作対象の高さに基づいて、作業位置における操作対象の積み付け又は収納効率を計算することができ、その結果に基づいて、制御シークエンスをより最適化することができる。
さらに、本開示によるロボットシステムは、従来のシステムとは異なり、必要に応じて、信頼基準に従って、制御シークエンスを作成又は取得して実行することができる。例えば、信頼基準に従って、操作対象に対するアプローチを変化させ、操作対象上の把持位置を変更し、操作対象のポーズ/位置を変更し、及び/又は移動経路の一部を変更することができる。
また、ピックアップエリア等で把持された測定対象のポーズは、概して、その頂部表面が水平に向いて(上方向に)露出し、かつ、操作対象の側部表面が垂直に向いて(横方向に)露出し得る。そこで、本開示によるロボットシステムは、マスターデータにおいて、操作対象が、1つの識別子を操作対象の底部表面(すなわち、操作対象の頂部表面とは反対側)に有し、かつ、他の識別子を操作対象の側部表面の1つに有していることを含み得る。
また、本開示によるロボットシステムは、操作対象の識別においてピックアップエリアの画像を処理する場合、必要に応じて、信頼基準を計算することができる。その信頼基準が十分性閾値を超え、操作対象の頂部表面が露出していることの十分な確実性が認識された場合、ロボットシステムは、その露出した頂部表面上にエンドエフェクタを配置し、頂部表面を把持し、スキャナの前に所定の位置で操作対象の底部表面を提供するように、操作対象を回転させることができる。一方、信頼基準が十分性閾値未満であり、操作対象の頂部表面又は底部表面が露出しているか否かが認識されない場合、ロボットシステムは、操作対象の側部表面の1つに沿ってエンドエフェクタを配置し、操作対象の側部表面を把持し、例えば対向するスキャナのセットの間を通すように、操作対象を回転させることができる。
この場合、操作対象の移動経路内、例えば、スタート位置を含むピックアップエリアと作業位置を含むドロップエリアとの間等において操作対象をスキャンすることにより、作業効率及び作業速度が向上される。その際、本開示によるロボットシステムは、スキャン位置において、スキャナと協働もする制御シークエンスを作成又は取得することにより、操作対象の移動作業と操作対象のスキャン作業を効果的に組み合わせることができる。さらに、操作対象の最初のポーズの信頼基準に基づく制御シークエンスを作成又は取得することにより、スキャン作業に関する効率、速度及び精度をさらに向上させることができる。
また、本開示によるロボットシステムは、操作対象の最初のポーズが正確ではない場合に対応する制御シークエンスを作成又は取得することができる。これにより、操作対象のポーズの判定のエラー(例えば、較正エラー、予期しないポーズ、予期しない光の条件等の結果の判定のエラー)を伴う場合であっても、操作対象を正確に及び確実にスキャンする可能性を増大させることができる。その結果、ロボットシステムに関する全体のスループットを増大させることができるとともに、操作者の労力/介入を更に低減することができる。
なお、本明細書では、複数の特定の詳細な説明が、本開示を完全に理解させるために説明されるが、本開示はそれらに限定されない。また、本開示の実施形態では、本明細書に記載された技術に関し、それら特定の詳細を伴わずに実施することができる。さらに、よく知られている特定の機能又はルーチン等は、本開示を不要にわかりにくくすることを避けるために、詳細には記載されない。本明細書における「実施形態(an embodiment)」、「1つの実施形態(one embodiment)」等の参照は、記載の特定の特徴、構造、材料、又は特性が、本開示の少なくとも1つの実施形態に含まれていることを意味する。このため、本明細書におけるそのようなフレーズの表示は、必ずしも、すべてが同じ実施形態を参照してはいない。一方、そのような参照は、必ずしも相互に排他的であることもない。さらに、特定の特徴、構造、材料、又は特性は、1つ以上の実施形態において、任意の適切な方式で組み合わせることができる。加えて、図示の様々な実施形態は、説明的表示に過ぎず、必ずしも正寸で示されていないことを理解されたい。
また、よく知られていてかつロボットシステム及びサブシステムとしばしば関連付けられる構造又はプロセスであって、本開示のいくつかの顕著な態様を不要に妨げ得る構造又はプロセスについては、本開示の明確化の目的のために、説明を省略する。さらに、本明細書では、本開示の様々な実施形態を説明しているが、本開示は、他の実施形態として、このセクションにおける記載とは異なる構成、又は異なる構成要素を有するものを含むことができる。従って、本開示は、追加の要素を伴うか、以下に記載の要素のいくつかを伴わないような他の実施形態を含み得る。
また、本開示の各実施形態は、プログラム可能なコンピュータ又はコントローラによって実行されるルーチンを含み、コンピュータ又はコントローラで実行可能な命令の形態を採ることができる。本開示が属する技術分野の当業者であれば、本開示の技術が、種々のコンピュータ又はコントローラを含むシステムで実施され得ることを理解することができる点に留意されたい。本開示の技術は、種々のコンピュータで1つ以上の命令を実行するように、プログラムされ、構成され、又は、構築された特定用途のコンピュータ又はデータプロセッサで実施することができる。従って、本明細書で使用される「コンピュータ(computer)」及び「コントローラ(controller)」との用語は、任意のデータプロセッサであってもよく、インターネットの装置及びハンドヘルドデバイス(パームトップ型コンピュータ、ウェアラブルコンピュータ、セルラ又は移動電話、複数プロセッサシステム、プロセッサベースであるかプログラム可能な家庭用電気機械器具、ネットワークコンピュータ、ミニコンピュータ等を含む)を含むことができる。これらコンピュータ及びコントローラによって扱われる情報は、液晶ディスプレイ(LCD)等の任意の適切な表示媒体に提供することができる。コンピュータ又はコントローラで実行可能な作業を実行するための命令は、ハードウェア、ファームウェア、又はハードウェアとファームウェアとの組合せを含む任意の適切なコンピュータ読取可能な記録媒体に記憶することができる。また、それらの命令は、例えば、フラッシュドライブ、及び/又は、他の適切な媒体を含む任意の適切なメモリデバイスに記録することができる。
また、本明細書における「結合された(coupled)」及び「接続された(connected)」との用語は、その派生形とともに、構成要素間の構造的な関係を記載するために使用され得る。これらの用語が、互いに関して同義であることは意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続された(connected)」は、2つ以上の要素が互いに直接接触していることを示すために使用することができる。文脈において明示がない限り、「結合された(coupled)」との用語は、2つ以上の要素が直接的か、或いは、それらの間に他の介在要素を伴って間接的に互いに接触していること、又は、例えば、信号の送信/受信、又は、関数の呼び出しに関するもの等のように、因果関係にあるように、2つ以上の要素が互いに協働するか相互作用すること、又は、その両方を示すために使用することができる。
[適切な環境]
図1は、本開示の一実施形態に係るロボットシステム100が作動し得る例示的環境を示す図である。ロボットシステム100は、1つ以上の作業を実行するように構成された1つ以上のロボット等のユニットを備える。
図1に示す例に関し、ロボットシステム100は、倉庫又は分配/輸送ハブ内の、荷下ろしユニット102、移送ユニット104、輸送ユニット106、荷積みユニット108、又はそれらの組合せを備えることができる。これらのユニットにおいて、操作対象を操作するロボットとしては、例えば、デバンニングロボット、ピースピッキングロボット、フェッチングロボットといったロボットアーム及びエンドエフェクタ等によって操作対象を操作するためのロボットが挙げられる。また、ロボットシステム100における各々のユニットは、1つ以上の作業、例えば、倉庫に貯蔵するために、操作対象をトラックやバン等から荷下ろししたり、操作対象を貯蔵位置から荷下ろししたり、例えばコンテナ間で操作対象を移動させたり、操作対象を輸送のためにトラックやバン等に荷積みしたりといった複数の作業を実施するように、それらの複数の作業を組み合わせた制御シークエンスを実行することができる。すなわち、ここでの「作業」とは、「ある位置」から「他のある位置」へ操作対象を移載すること目的とする種々の操作及び動作を含む概念である。
より具体的には、「作業」には、操作対象112のスタート位置114から作業位置116への操作対象112の操作(例えば、移動、方向付け、ポーズの変更等)、スタート位置114から作業位置116への操作対象112の移動経路の途中に設けられた持ち替え位置118における操作対象112の持ち替え、操作対象112の識別情報を取得するための操作対象112のスキャン等を含む。
また、例えば、荷下ろしユニット102は、キャリア(例えば、トラック)内のある位置から、ベルトコンベヤ上のある位置まで、操作対象112を移送するように構成することができる。さらに、移送ユニット104は、ある位置(例えば、スタート位置を含むピックアップエリア)から別の位置(例えば、輸送ユニット106上の作業位置を含むドロップエリア)に、操作対象112を移送し、また、その移動経路の途中においてその操作対象112を持ち替えるように構成することができる。さらに、輸送ユニット106は、操作対象112を、移送ユニット104に関連するエリアから、荷積みユニット108に関連するエリアに移送することができる。またさらに、荷積みユニット108は、操作対象112を、例えば、操作対象112を載せたパレット等を移動することにより、移送ユニット104から貯蔵位置(例えば、倉庫におけるラック等の棚上の所定位置)に移送することができる。
なお、ここでの説明においては、ロボットシステム100が、輸送センターに適用されるものの一例として記載するが、ロボットシステム100は、製造、組立て、パッケージング、ヘルスケア、及び/又は他のタイプのオートメーション等のために、他の環境で/他の目的で作業を実行するように構成することができることを理解されたい。ロボットシステム100が、図1に示されていない、マニピュレータ、サービスロボット、モジュール式ロボット等の、他のユニットを含むことができることも理解されたい。例えば、ロボットシステム100は、例えば、ケージカート又はパレットから、コンベヤ又は他のパレットに操作対象112を移送するための、パレットからの荷下ろしユニット、コンテナ間で操作対象112を移送するためのコンテナ切替えユニット、操作対象112をラッピングするためのパッケージングユニット、操作対象112の特性に応じてグルーピングするための並び替えユニット、操作対象112の特性に応じて様々に操作対象112を操作(例えば、並び替え、グルーピング、及び/又は移送)のピッキングユニット、操作対象112を収納するためのパレットやラックを移動させる自走式台車ユニット(例えば自動搬送車、無人搬送車等)、又は、それらの任意の組合せを含むことができる。
[適切なシステム]
図2は、本開示の一実施形態に係るロボットシステム100のハード構成の一例を示すブロック図である。ロボットシステム100は、例えば、1つ以上のプロセッサ202、1つ以上のストレージデバイス204、1つ以上の通信デバイス206、1つ以上の入力−出力デバイス208、1つ以上の作動デバイス212、1つ以上の移送モータ214、1つ以上のセンサ216、又は、それらの組合せ等の電子又は電気デバイスを備えることができる。それらの様々な電子又は電気デバイスは、有線接続及び/又は無線接続を介して互いに結合することができる。
また、ロボットシステム100は、例えば、システムバス、周辺部品相互接続(PCI)バス又はPCI−エクスプレスバス、HyperTransport又は産業標準構成(ISA)バス、小型コンピュータシステムインターフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、IIC(I2C)バス、又は電気電子技術者協会(IEEE)規格1394のバス(「Firewire」とも呼ばれる)等のバスを含むことができる。さらに、ロボットシステム100は、例えば、電子又は電気デバイス間の有線接続を提供するための、ブリッジ、アダプタ、コントローラ、又は、他の信号に関するデバイスを含むことができる。また、無線接続は、例えば、セルラ通信プロトコル(例えば、3G、4G、LTE、5G等)、無線ローカルエリアネットワーク(LAN)プロトコル(例えば、忠実な無線通信環境(wireless fidelity(WIFI))、ピアツーピア又はデバイスツーデバイスの通信プロトコル(例えば、Bluetooth(登録商標)、Near−Field通信(NFC)等)、モノのインターネット(IoT)プロトコル(例えば、NB−IoT、LTE−M等)、及び/又は、他の無線通信プロトコルに基づくものとすることができる。
プロセッサ202は、ストレージデバイス204(例えば、コンピュータメモリ)に記憶された命令(例えば、ソフトウェア命令)を実行するように構成されたデータプロセッサ(例えば、中央処理ユニット(CPU)、特定用途のコンピュータ、及び/又はオンボードサーバ)を含むことができる。プロセッサ202は、他のデバイスを制御/相互作用するようにプログラム命令を実施することができ、それにより、ロボットシステム100に、種々の動作、作業、及び/又は操作を含む制御シークエンスを実行させる。
ストレージデバイス204は、そこに記憶されたプログラム命令(例えば、ソフトウェア)を有する非一時的なコンピュータ読取可能な記録媒体を含むことができる。ストレージデバイス204としては、例えば、揮発性メモリ(例えば、キャッシュ及び/又はランダムアクセスメモリ(RAM))及び/又は不揮発性メモリ(例えば、フラッシュメモリ及び/又は磁気ディスクドライブ)、ポータブルメモリドライブ及び/又はクラウドストレージデバイス等が挙げられる。また、ストレージデバイス204は、処理結果及び/又は所定のデータ/閾値を更に記憶するとともにアクセスを提供するために使用することができ、例えば、操作対象112に関する情報を含むマスターデータ252を記憶することができる。
このマスターデータ252は、操作対象112に関する情報として、例えば、寸法、形状、質量、重心、質量中心の位置、ポーズやアウトラインに関するテンプレート、異なるポーズを認識するためのモデルデータ、在庫管理単位(SKU:Stock Keeping Unit)等、カラースキーム、イメージ、識別情報、ロゴ、操作対象の予期される位置、予期されるセンサによる測定値(例えば、力、トルク、圧力、接触基準値に関する物理量)、又は、それらの組合せ等を含むことができる。
また、ストレージデバイス204は、例えば、操作対象112の追跡データ254を記憶することができる。この追跡データ254には、スキャン又は操作される操作対象のログ、1つ以上の位置(例えば、適宜のスタート位置、作業位置、持ち替え位置等)における操作対象112の撮像データ(例えば、写真、ポイントクラウド、ライブビデオ等)、その1つ以上の位置における操作対象112の位置及び/又はポーズが含まれ得る。
通信デバイス206は、例えば、外部又は遠隔のデバイスとネットワークを介して通信するように構成された回路、受信機、送信機、調整器/復調器(モデム)、信号検出器、信号エンコーダ/デコーダ、コネクタポート、ネットワークカード等を含むことができる。また、通信デバイス206は、1つ以上の通信プロトコル(例えば、インターネットプロトコル(IP)、無線通信プロトコル等)に応じて電気信号を送信、受信、及び/又は処理するように構成することができる。ロボットシステム100は、例えば、レポート、データの収集、分析、トラブルシューティング等の適宜の目的のために、各ユニット間での情報の交換や、外部システム又は外部デバイスとの情報の交換をするように、通信デバイス206を使用することができる。
入力−出力デバイス208は、操作者からの情報や指示の入力、操作者への情報の通信及び提示等を行うように構成されたユーザインターフェースデバイスとして、例えば、キーボード、マウス、タッチスクリーン、マイク、ユーザインターフェース(UI)センサ(例えば、モーションコマンドを受信するためのカメラ)、ウェアラブル入力デバイス等の入力デバイス、及び、ディスプレイ210、スピーカ、触覚回路、タクティールフィードバックデバイス等の出力デバイスを含むことができる。また、ロボットシステム100は、動作、作業、操作、又はそれらの組合せを実行する際に、入力−出力デバイス208を使用して、操作者と相互の意思疎通を図ることができる。
ロボットシステム100は、例えば、操作対象112の移動や回転等の変位を含む制御シークエンスを実行するために、リンクやジョイントで接続された物理的又は構造的な部材(例えば、ロボットマニピュレータ、ロボットアーム等。以下単に「構造的部材」という。)を含むことができる。かかる物理的な又は構造的部材、及び、リンクやジョイントは、ロボットシステム100における1つ以上の作業(例えば、把持、回転、溶接、組み立て等)を実行するように構成されたエンドエフェクタ(例えば、グリッパ、ハンド等)を操縦するように構成され得る。また、ロボットシステム100は、ジョイントの周り又はジョイントにおいて、構造的部材を駆動又は操縦(例えば、変位及び/又は再度の方向付け)するように構成された作動デバイス212(例えば、モータ、アクチュエータ、ワイヤ、人工筋、電気活性ポリマ等)、及び、ある位置から別の位置にユニットを移送するように構成された移送モータ214を含むことができる。
また、ロボットシステム100は、構造的部材を操縦し、及び/又は、ユニットを移送する等の作業を実施するために使用される情報を取得するように構成されたセンサ216を含むことができる。センサ216は、ロボットシステム100の1つ以上の物理的特性(例えば、1つ以上の構造的部材、リンク又はジョイントの状態、条件、位置等)、及び/又は、周囲の環境の特性を検出又は測定するように構成されたデバイス、例えば、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、タクティールセンサ、トルクセンサ、位置エンコーダ等を含むことができる。
さらに、センサ216は、周囲の環境を検出するように構成された1つ以上の撮像デバイス222(例えば、可視及び/又は赤外カメラ、2次元及び/又は3次元の撮像カメラ、ライダー又はレーダー等の距離測定デバイス等)を含むことができる。撮像デバイス222は、例えば、自動検査、ロボットのガイダンス、他のロボットのアプリケーションのための視覚情報を得るために、デジタル画像及び/又はポイントクラウド等の検出環境の表示を生成することができる。
また、ロボットシステム100は、例えば、プロセッサ202を介して、デジタル画像、ポイントクラウド、測距データ等を処理し、図1の操作対象112、図1のスタート位置114、図1の作業位置116、スタート位置114及び作業位置116間の持ち替え位置118、操作対象112のポーズ、スタート位置114等における操作対象のポーズに関する信頼基準、操作対象112の高さに関する信頼基準、又は、それらの組合せを識別することができる。
さらに、ロボットシステム100は、操作対象112を操作するために、指定されたエリア(例えば、トラック内又はベルトコンベヤ上等のピックアップエリア、ベルトコンベヤ上に操作対象112を配置するためのドロップエリア、操作対象112を持ち替えるためのエリア、コンテナ内に操作対象を配置するためのエリア、操作対象112を積み付けるためのパレット上のエリア等)の画像を、様々なユニットを介して取得及び分析して、操作対象112、そのスタート位置114、その作業位置116、持ち替え位置118等を識別することができる。また、撮像デバイス222は、例えば、ピックアップエリア、ドロップエリア、及び、それらの間に設定された操作対象112を持ち替えるためのエリア等の画像を生成するように構成された1つ以上のカメラを含むことができる。
また、撮像デバイス222は、持ち替え位置118よりも上流側(前段階)において、例えば、所定位置で支持されている操作対象112までの距離を測定するように構成されたライダー又はレーダー等の1つ以上の距離測定デバイスを含むことができる。ロボットシステム100は、取得された画像及び/又は測距データに基づき、スタート位置114、作業位置116、持ち替え位置118、関連するポーズ、操作対象112の実際の高さ、、信頼基準等を判定することができる。
また、撮像デバイス222は、操作対象112のスキャンを行うために、操作対象の輸送又は移動の間、例えば、スタート位置114と作業位置116(好ましくは持ち替え位置118の前段階)との間に操作対象112の識別情報(例えば、後述する図3A及び/又は図3Cの識別子332)をスキャンするように構成された1つ以上のスキャナ412,416(例えば、バーコードスキャナ、QRコードスキャナ(登録商標)等:後述する図4A及び図4B参照)を含むことができる。そして、ロボットシステム100は、1つ以上のスキャナ412に対し、操作対象112の1つ以上の部分を提供するための制御シークエンスを作成又は取得することができる。
さらにセンサ216は、例えば、構造的部材やリンク又はジョイントの位置を検出するように構成された位置センサ224(例えば、位置エンコーダ、ポテンショメータ等)を含むことができる。この位置センサ224は、作業の実行の間、構造的部材やリンク又はジョイントの位置及び/又は向きを追跡するために使用され得る。
また、センサ216は、例えば、物理的構造又は表面間の直接の接触に関連する特性を測定するように構成された接触センサ226(例えば、圧力センサ、力センサ、ひずみゲージ、圧電抵抗性/圧電性センサ、容量性センサ、弾性抵抗性センサ、他のタクティールセンサ等)を含むことができる。接触センサ226は、操作対象112のエンドエフェクタの把持に対応する特性を測定することができる。これにより、接触センサ226は、エンドエフェクタと操作対象112との間の接触の程度に対応する定量化された測定値(例えば、測定された力、トルク、位置等)を示す接触基準を出力することができる。ここで、「接触基準」は、例えば、エンドエフェクタによって操作対象112に印加された力に関する1つ以上の力又はトルクの読取り値を含むことができる。
[最初のポーズに関する信頼基準の判定]
図3A、図3B、及び図3Cは、それぞれ、操作対象302の様々なポーズ(位置及び向き)の一例として、第1のポーズ312、第2のポーズ314、及び第3のポーズ316を模式的に示す斜視図である。ロボットシステム100は、操作対象302のポーズを識別するために、例えば、撮像デバイス222からの2次元画像、3次元画像、ポイントクラウド、及び/又は他の撮像データを処理することができる。また、ロボットシステム100は、例えば、操作対象302の最初のポーズを識別するために、ピックアップエリアに向けられた1つ以上の撮像デバイス222による撮像データを分析することができる。
ロボットシステム100は、操作対象302のポーズを識別するために、まず、所定の認識メカニズム、認識ルール、及び/又は、ポーズやアウトラインに関するテンプレートに基づいて、撮像データにおける操作対象302のパターン画像を分析し、操作対象302のアウトライン(例えば、周囲の縁部又は表面)を識別し、又は、それをグルーピングすることができる。より具体的には、ロボットシステム100は、例えば、マスターデータ252におけるアウトラインやポーズのテンプレートに基づいて、操作対象のアウトラインにわたり、色、輝度、深さ/位置、及び/又は、それらの組合せやそれらの値の変化におけるパターン(例えば、同じ値であるか、既知の割合/パターンで変化するか等)に対応するアウトラインのグループピングを識別することができる。
操作対象302のアウトラインがグルーピングされると、ロボットシステム100は、ロボットシステム100で使用されるグリッド又は座標系において、例えば、操作対象302の1つ以上の表面、縁部、及び/又は、ポイント、並びに、ポーズを識別することができる。
また、ロボットシステム100は、撮像データ内の操作対象302の1つ以上の露出表面(例えば、第1の露出表面304、第2の露出表面306等)を識別することができる。さらにロボットシステム100は、例えば、操作対象302のアウトライン及び較正に係る撮像データ、又は、撮像デバイス222に関するマッピングデータから、操作対象302のアウトラインの形状、1つ以上の複数の寸法(例えば、長さ、幅、及び/又は高さ)を判定し、判定された寸法をマスターデータ252内の対応するデータと比較して、操作対象302を識別することができる。さらに、ロボットシステム100は、露出表面の寸法が識別された操作対象302の長さ、幅、及び高さに基づいて、その露出表面が頂部表面322底部表面324、及び外周表面326の何れに該当するかを識別することができる。
また、ロボットシステム100は、例えば、1つ以上の露出表面に表示された1つ以上のマーキング(例えば、文字、数、形状、可視画像、ロゴ、又はそれらの組合せ)をマスターデータ252内の1つ以上の所定の画像と比較することにより、操作対象302を識別することができる。この場合、マスターデータ252は、例えば、操作対象302のパッケージ表面上の製品名、ロゴ、デザイン/画像、又はそれらの組合せの1つ以上の画像を含むことができる。また、ロボットシステム100は、撮像データの一部(例えば、操作対象302のアウトライン内の部分)を、マスターデータ252と比較して、操作対象302を識別し、また、同様に、表面に特有の所定の画像パターンに基づいて、操作対象302のポーズ(特に向き)を識別することができる。
ここで、図3Aは、第1の露出表面304(例えば、上を向いた露出表面)が、操作対象302の頂部表面322であり、第2の露出表面306(例えば、概して撮像データのソースに向いた露出表面)が操作対象302の外周表面326の1つである場合の第1のポーズ312を示している。
露出表面の識別において、ロボットシステム100は、図3Aの撮像データを処理して、第1の露出表面304及び/又は第2の露出表面306の寸法(例えば、ピクセル数)の測定値を所定の較正又はマッピング機能を使用して、現実世界の寸法にマッピングすることができる。また、ロボットシステム100は、マッピングされた寸法を、マスターデータ252内の既知の/予期される操作対象302の寸法と比較し、その結果に基づいて、操作対象302を識別することができる。さらに、ロボットシステム100は、第1の露出表面304の境界を定める一対の交差する縁部が、識別された操作対象302の長さ及び幅にマッチすることから、第1の露出表面304が、頂部表面322であるか底部表面324であるかを識別することができる。同様に、ロボットシステム100は、第2の露出表面306を規定する縁部の1つが、識別された操作対象302の高さにマッチすることから、第2の露出表面306を外周表面326として識別することができる。
また、ロボットシステム100は、図3Aの撮像データを処理して、操作対象302の表面に特有な1つ以上のマーキングを識別することができる。この場合、マスターデータ252は、上述のような操作対象302の表面及び/又は特有のマーキングの1つ以上の画像及び/又は他の視覚的特性(例えば、色、寸法、サイズ等)を含むことができる。図3Aに示すように、操作対象302が頂部表面322に「A」を有することから、ロボットシステム100は、操作対象302をマスターデータ252に記憶されている操作対象として識別することができ、さらに、第1の露出表面304を操作対象302の頂部表面322として識別することができる。
またマスターデータ252は、操作対象302の識別情報としての識別子332を含むことができる。より具体的には、マスターデータ252は、操作対象302の識別子332の画像及び/又はコード化されたメッセージ、表面及び/又は縁部のセットに対する識別子332の位置334、それらの1つ以上の視覚的特性、又はそれらの組合せを含むことができる。図3Aに示すように、ロボットシステム100は、第2の露出表面306を、識別子332の存在、及び/又は、識別子332の位置334にマッチするそれらの位置に基づき、外周表面326として識別することができる。
また、図3Bは、操作対象302が図3Aの方向Bに沿う垂直軸周りに90度回転した第2のポーズ314を示している。例えば、操作対象302の基準ポイント「α」は、図3Aの左下の角、及び、図3Bの右下の角とすることができる。従って、第1のポーズ312との比較において、操作対象302の頂部表面322は、撮像データにおいて異なる向きとして認識され、及び/又は、識別子332を有する操作対象302の外周表面326は視認されない。
ロボットシステム100は、1つ以上の視覚的特徴の識別子332の特定の向きに基づいて、操作対象302の様々なポーズを識別することができる。例えば、操作対象302の既知の長さにマッチする寸法が撮像データにおいて水平に延び、操作対象302の既知の高さにマッチする寸法が撮像データにおいて垂直に延び、及び/又は、操作対象302の既知の幅にマッチする寸法が撮像データにおいて深さの軸に沿って延びる場合、第1のポーズ312及び/又は第3のポーズ316を判定することができる。同様に、ロボットシステム100は、幅にマッチする寸法が撮像データにおいて水平に延び、高さにマッチする寸法が撮像データにおいて垂直に延び、及び/又は、長さにマッチする寸法が撮像データにおいて深さの軸に沿って延びる場合に、第2のポーズ314を判定することができる。
また、ロボットシステム100は、例えば、図3A及び図3Bに示す「A」等の視覚的マーキングの向きに基づいて、操作対象302が、第1のポーズ312又は第2のポーズ314にあることを判定することができる。さらに、ロボットシステム100は、例えば、操作対象302の識別子332がマーキング「A」を伴って(すなわち、異なる表面上で)視認される場合等、各表面の組合せにおいて視認されるべき視覚的マーキングに基づいて、操作対象302が第1のポーズ312内にあることを判定することができる。
さらに、図3Cは、操作対象302が図3Aの方向Cに沿う水平軸周りに180度回転した第3のポーズ316を示している。例えば、操作対象302の基準ポイント「α」は、図3Aの左下前方の角、及び、図3Cの左上後方の角とすることができる。従って、第1のポーズ312との比較において、第1の露出表面304は、操作対象の底部表面324であり、また、操作対象302の識別子332を有する頂部表面322及び外周表面326の両方は視認されない。
上述のようにして、ロボットシステム100は、画像データから判定される寸法に基づいて、操作対象302が第1のポーズ312又は第3のポーズ316にあることを識別することができ、頂部表面322のマーカ(例えば、「A」)が可視である場合、操作対象302が第1のポーズ312にあることを識別することができる。また、ロボットシステム100は、底部表面のマーカ(例えば、操作対象の識別子332の例)が視認される場合、操作対象302が第3のポーズ316にあることを識別することができる。
また、操作対象302のポーズを判定する際、現実世界の状況が、判定の正確さに影響する場合がある。例えば、光の状況が、反射及び/又は陰影に起因する等して、表面のマーキングの視認性を低下させる場合がある。さらに、操作対象302の実際の向きによっては、1つ以上の表面の露出又は視認角度が低減される場合があり、それにより、表面上のいずれのマーキングも、識別不能となる場合が生じ得る。従って、ロボットシステム100は、判定された操作対象302のポーズに関する信頼基準を計算することができる。
また、ロボットシステム100は、撮像データにおける画像内の寸法測定に係る確実性の間隔(インターバル)に基づいて、信頼基準を計算することができる。この場合、確実性の間隔は、操作対象302と撮像元(例えば、撮像デバイス222)との間の距離が減少するにつれて、及び/又は、操作対象302の測定された縁部が撮像元から放射する方向に対して直交する方向に近くなるにつれて、放射方向に対して平行な方向から離れる場合に増大し得る。さらに、ロボットシステム100は、例えば、撮像データにおけるマーカ又はデザインと、マスターデータ252における既知のマーカ/デザインとの間のマッチの程度に基づいて、信頼基準を計算することができる。またさらに、ロボットシステム100は、撮像データの少なくとも一部と、所定のマーカ/画像との間の、重複又は逸脱の程度を測定することができる。
この場合、ロボットシステム100は、最小平均自乗誤差(MMSE)のメカニズムに関するもの等、もっとも大である重複、及び/又は、もっとも少ない逸脱の測定に従って、操作対象302及び/又はその向きを識別することができ、さらにまた、得られる重複/逸脱の程度に基づいて、信頼基準を計算することができる。そして、ロボットシステム100は、得られた信頼基準に基づいて、制御シークエンスにおける操作対象302の移動経路を計算することができ、換言すればと、ロボットシステム100は、得られた信頼基準に基づいて、操作対象302を適宜移動させることができる。
[システム操作]
図4Aは、本開示の一実施形態に係るロボットシステム100によって実行される例示的作業402を示す上面図である。上述のように、作業402は、ロボットシステム100によって実行される(例えば、図1に示すユニット等によって実行される)制御シークエンスの一例である。図4Aに示すように、例えば、作業402は、操作対象112を、スタート位置114を含むピックアップエリアから、持ち替え位置118を経由して、作業位置116を含むドロップエリアに移動すること、スタート位置114から作業位置116に移動する間に操作対象112をスキャンすること、及び、持ち替え位置118において操作対象112を持ち替える(把持位置を変更する)ことを含むことができる。これにより、ロボットシステム100は、操作対象112の追跡データ254にスキャンされた操作対象112を追加し、追跡データ254から操作対象112を除去し、及び/又は、操作対象112を評価する等により、追跡データ254を随時アップデートすることができる。
また、ロボットシステム100は、スタート位置114を識別及び/又は特定するために、ピックアップエリア(より具体的には、例えば、部品調達用のパレット又は大箱に関して指定されたエリア、及び/又は、ベルトコンベヤの受領側の領域等)を撮像するようにためのピックアップエリアに向けられた3Dビジョン等のスキャナ412(撮像デバイス222の一例)を含むことができ、これにより、指定されたエリアの撮像データを取得することができる。そして、ロボットシステム100は、例えばプロセッサ202を介して、指定されたエリアに位置する様々な操作対象112を識別するために、撮像データのコンピュータによる画像処理(視野処理)を実施することができる。
また、ロボットシステム100は、認識された操作対象112のなかから、作業402を実行するための操作対象112を、例えば、所定の選択基準、及び/又は、選択ルール、及び/又は、ポーズやアウトラインに関するテンプレートに基づいて)、選択し、その操作対象112に関し、スタート位置114及び/又は最初のポーズを判定するために、撮像データをさらに処理することができる。
ロボットシステム100は、作業位置116及び持ち替え位置118を識別及び/又は特定するために、ドロップエリア及び別の所定のエリア(より具体的には、例えば、並び替えされたパレット又は大箱、及び/又は、ベルトコンベヤの送り側の領域に関して指定されたエリア等)を撮像するようにそれらのエリアに向けられた別のスキャナ416(撮像デバイス222の一例)を含むことができ、これにより、指定されたエリアの撮像データを取得することができる。そして、ロボットシステム100は、例えばプロセッサ202を介して、操作対象112を配置するための作業位置116、持ち替え位置118、及び/又は、操作対象112のポーズを識別するために、撮像データのコンピュータによる画像処理(視野処理)を実施することができる。また、ロボットシステム100は、複数の操作対象112を積載及び/又は配置するための所定の基準又はルールに基づいて、作業位置116及び持ち替え位置118を(撮像結果に基づくか、又は、撮像結果に基づくことなく)、識別及び選定することができる。
ここで、スキャナ416は、それに隣接し(例えば、対応するスキャナ(複数可)の高さに対応する高さにある)且つ垂直に向けられた操作対象112の表面上にあるマークをスキャンするように、水平方向向かって配置することができる。また、スキャナ416は、それの上/下にあり且つ水平に向いた操作対象112の表面上にあるマークをスキャンするように、垂直方向に向かって配置することもできる。さらに、スキャナ416は、スキャナ416間に置かれた操作対象112の両側をスキャンすることができるように、互いに対抗して配置することもできる。
また、ロボットシステム100は、スキャナ416の位置及び/又はスキャン方向に従って、操作対象112を提供位置に置くように、及び/又は、操作対象112の1つ以上の表面/部分をスキャナ416でスキャンすることができるように、操作対象112を操作することができる。さらに、ロボットシステム100は、例えば、スキャナ416でスキャンされており、かつ、その支持位置が既知である操作対象112の底部表面324の高さ位置を測定するように構成された撮像デバイス222を含むことができる(図4B参照)。
こうして識別されたスタート位置114、持ち替え位置118、及び/又は作業位置116を使用して、ロボットシステム100は、作業402を実行するために、各ユニットの1つ以上の構造的部材(例えば、ロボットアーム414及び/又はエンドエフェクタ)を操作することができる。従って、ロボットシステム100は、例えばプロセッサ202を介して、作業402を実行するために対応するユニットによって実施される1つ以上の動作に対応する制御シークエンスを作成又は取得することができる。
例えば、移送ユニット104に関する制御シークエンスは、アプローチ位置(例えば、操作対象112を把持するためのエンドエフェクタを配置するための位置/場所)にエンドエフェクタを配置すること、操作対象112を把持すること、操作対象112を持ち上げること、操作対象112をスタート位置114の上からスキャン操作のための提供位置/ポーズに移動すること、操作対象112を持ち替え位置118で持ち替える(把持位置を変更する)こと、操作対象112をスタート位置114から、必要に応じて持ち替え位置118を経由して、作業位置116の上に移動すること、操作対象112を下げること、及び、操作対象112の把持を解放することを含むことができる。
また、ロボットシステム100は、ロボットアーム414及び/又はエンドエフェクタを操作する1つ以上の作動デバイス212のためのコマンド及び/又は設定のシークエンスを判定することにより、制御シークエンスを作成又は取得することができる。この場合、ロボットシステム100は、例えば、プロセッサ202を使用して、エンドエフェクタをスタート位置114周りのアプローチ位置に置き、エンドエフェクタで操作対象112を把持し、エンドエフェクタをスキャン位置や持ち替え位置118周りのアプローチ位置に置き、エンドエフェクタを作業位置116周りのアプローチ位置に置き、操作対象112をエンドエフェクタから解放するように、エンドエフェクタ及びロボットアーム414を操縦するための作動デバイス212のコマンド及び/又は設定を計算することができる。これにより、ロボットシステム100は、コマンド及び/又は設定の判定された制御シークエンスに従って作動デバイス212を操作することにより、作業402を完了するための操作を実行することができる。
また、ロボットシステム100は、操作対象112のポーズに関する信頼基準に基づいて、制御シークエンスを作成又は取得することができる。この場合、ロボットシステム100は、例えば、ポーズに関する信頼基準に従って、異なる表面を把持又はカバーするため等、エンドエフェクタをピックアップのための様々な位置に置くか、操作対象112に関する様々な提供位置/ポーズを計算するか、それらの組合せを行うことができる。
一例として、操作対象112が、図3Aの第1のポーズ312に置かれた操作対象302(この場合、操作対象302の頂部表面322が、概して上に向くとともに露出している。)であり、ポーズに関する信頼基準が高い(すなわち、確実性の程度が十分性閾値を超え、判定されたポーズが正確である可能性が高い)場合、ロボットシステム100は、第1のアプローチ位置432及び第1の提供位置442を含む第1の制御シークエンス422を作成又は取得することができる。このとき、例えば、操作対象302の頂部表面322が上を向いている(すなわち、図3Cの対象識別子332を有する底部表面324が下を向いている)ことの確実性が十分にあることから、ロボットシステム100は、エンドエフェクタを操作対象302の頂部表面322の上に直接置くための第1のアプローチ位置432を含む第1の制御シークエンス422を計算し得る。
その結果、ロボットシステム100は、操作対象302の底部表面324が露出するように、操作対象302の頂部表面322に接触/カバーするエンドエフェクタで、操作対象112を把持することができる。また、ロボットシステム100は、操作対象112が、底部表面324に位置する識別子332をスキャンする上を向いたスキャナ416の真上になるための第1の提供位置442を含む第1の制御シークエンス422を計算することができる。
一方、ポーズに関する信頼基準が低い(すなわち、確実性の程度が十分性閾値未満であり、判定されたポーズが正確である可能性が低い)場合、ロボットシステム100は、第2のアプローチ位置434及び1つ以上の第2の提供位置444を含む、第2の制御シークエンス424(すなわち、第1の制御シークエンス422とは異なる)を作成又は取得することができる。このとき、ロボットシステム100は、例えば、操作対象112の寸法を測定するとともにマスターデータ252と比較し、操作対象302が図3Aの第1のポーズ312又は図3Cの第3のポーズ316にあることを(例えば、測定の確実性のレベルが所定の閾値を超える場合に)判定することができる。
しかし、ロボットシステム100には、操作対象112の表面上にプリントされたマークを撮像/処理するのに困難な場合があり、その結果、判定されたポーズに関する信頼基準が十分性閾値未満となり得る。換言すると、ロボットシステム100は、操作対象302の上に向いた露出表面がその頂部表面322である(例えば、第1のポーズ312)か、或いは、その底部表面324(例えば、第3のポーズ316)であるかを、十分に確信していない場合がある。
この場合、信頼基準が低い(確実性の程度が低い)ために、ロボットシステム100は、図3Aの操作対象302の外周表面326の1つに隣接して(例えば、操作対象302の頂部表面322及び/又は底部表面324に対して平行な方向に整列する、及び/又は、面している)エンドエフェクタを配置するための第2のアプローチ位置434を含む第2の制御シークエンス424を計算し得る。
その結果、ロボットシステム100は、操作対象302の外周表面326の1つに接触/カバーするとともに、操作対象302の頂部表面322及び底部表面324の両方を露出させるエンドエフェクタで、操作対象112を把持することができる。また、ロボットシステム100は、スキャナ416の前(例えば、スキャンフィールド内、及び/又はスキャンフィールドに面して)に、操作対象302の頂部表面322及び底部表面324を同時又は連続して提供又は置くことができる。操作対象112がスキャン位置にある場合、ロボットシステム100は、スキャナ416(例えば、少なくとも、操作対象302の頂部表面322及び底部表面324を向いたスキャナ416)を用いて、提供された表面を同時に及び/又は連続してスキャンし、その上の操作対象302の識別子332(複数可)を取得することができる。
また、第2の制御シークエンス424は、最初は下を向いていた表面(操作対象302の底部表面324)を水平に、かつ、上を向いたスキャナ416の真上に配置するため、及び/又は、最初は上を向いていた表面(操作対象の頂部表面322)を垂直に、かつ、水平に向いたスキャナ416のすぐ前方に置くための、第2の提供位置444(複数可)を含んでいる。第2の制御シークエンス424は、2つの提供位置/ポーズを提供するために、再度の方向付け/回転の動作(例えば、破線の中空の円で示したような動作)を含むことができ、それにより、直交して向けられたスキャナ416を使用して、頂部表面322及び底部表面324の両方をスキャンする。さらに、ロボットシステム100は、例えば、操作対象302の頂部表面322を、上に向いたスキャナに連続して提供するとともにスキャンし、次いで、操作対象302を90度回転させて、その底部表面324を、スキャンのために水平に向いたスキャナ416に提供することができる。その際、再度の方向付け/回転の動作は、操作対象302の識別子332を読み取ることを失敗した場合にロボットシステム100が対応するコマンドを実施するように、条件付きのものとすることができる。
代替的には、一例として、ロボットシステム100は、信頼基準が低い場合に、操作対象302の幅に沿う外周表面326の1つを把持/カバーするための制御シークエンス(図示せず)を作成又は取得することができる。この場合、ロボットシステム100は、水平に対向した一対のスキャナ416の間で操作対象302を移動して、そのの長さに沿って操作対象302の外周表面326を提供し、例えば、図3Aに示すように、外周表面326の1つの上の識別子332をスキャンすることができる。なお、信頼基準に基づく制御シークエンスに関する詳細については、後記の図5A及び図5Bを参照して後述する。
また、ロボットシステム100は、エンドエフェクタで把持されている操作対象112(以下、「操作対象302」に替えて「操作対象112」という)の2次元又は3次元形状と、作業位置116に置かれた収納容器450(例えば大箱、バケット等)内の操作対象112に関する情報に基づいて、制御シークエンスを再取得することができる。
一例として、ロボットシステム100は、例えば、前述の第1の制御シークエンス及び第2の制御シークエンスの何れの場合でも、操作対象112の寸法を把握している。また、作業位置116に置かれた収納容器450内に既に収容された別の操作対象112と、それらの寸法も既知であるから、ロボットシステム100は、収納容器450内の空いている容積の空間情報を求めることができる。ロボットシステム100は、エンドエフェクタで把持されている操作対象112の種々のポーズを2次元又は3次元的に変化させた場合の操作対象112の空間形状パラメータを計算することができる。よって、それらの空間形状パラメータと、収納容器450内の空間情報とを比較することにより、収納容器450内に、より高い充填密度でその操作対象112を収納することができるパターン又はプランを最適化して選定することができる。
この場合、ロボットシステム100は、エンドエフェクタが収納容器450にアクセスする際に、エンドエフェクタと、収納容器450や既に収容されている操作対象112との干渉の有無を考慮することができる。そして、その時点で把持されている操作対象112をそのままの向きで収納容器450に収納するよりも、操作対象112のポーズを変えた方が、収納容器450への操作対象112の充填率が高いときには、ロボットシステム100は、収納に最適化されたポーズに操作対象112を持ち替える操作を含む制御シークエンスを作成又は取得することができる。
図4Bは、本開示の一実施形態に係るロボットシステム100によって実行される例示的作業404を示す正面図である。この例では、複数の操作対象112がパレット464上に混載されており、そのパレット464が、例えばAGV(Automated Guided Vehicle:自動搬送車)といった自走式台車462に搭載された状態でスタート位置114を含むピックアップエリアへ搬送される。なお、図4Bにおいて、同一形状の複数の操作対象112が整然と混載されている状態を示すが、実際の荷下ろしの状況によっては、寸法形状が異なる複数の操作対象112がランダムにパレット464上に積載されることが多いことに留意されたい。
パレット464が搬送されたピックアップエリアはスキャナ412で撮像され、図4Aで説明したのと同様にして操作対象112が選択される。選択された操作対象112は、移送ユニット104のロボットアーム414の先端部に設置されたエンドエフェクタによって、この例では操作対象112の頂部表面322が把持され、スキャナ416でスキャンされて識別子332が取得される。ロボットシステム100は、例えば、その操作対象112の識別子332の情報をマスターデータ252と比較して、操作対象112の寸法を含む情報を把握することができる。
一方、識別子332が同一である操作対象112であっても、実際には異なる寸法(特に高さ)を有する場合があり得る。そこで、ロボットシステム100は、例えば操作対象112をスキャンしているときに、作業スペースの床面又は床面付近に設置された距離測定デバイス466(撮像デバイス222の一例)により、操作対象112の底部表面324までの距離を測定する。この際、スキャンしているときに操作対象112の移動を一時停止させる場合、その一時停止中に操作対象112の底部表面324までの距離を測定することができる。なお、図4Bにおいて、操作対象112をパレット464から荷下ろし(デパレタイズ)した直後に、距離測定デバイス466による測定を行うように示したが、その測定のタイミングは、制御シークエンスにおいて持ち替え位置118よりも上流位置で行うのであれば、特に制限されない。
この例では、ロボットシステム100は、測定時の操作対象112の頂部表面322の高さ位置(把持レベル)を、制御シークエンス又は適宜の位置測定により把握することができる。よって、操作対象112の底部表面324までの距離の測定値を取得することにより、操作対象112の高さ112hを求めることができる。すなわち、ロボットシステム100は、距離測定デバイス466による操作対象112の底部表面324の測定データを受け取り、この受け取った測定データと、操作対象112の頂部表面322の高さ位置(把持レベル)とから、高さ112hを計算することができる。この高さ112hが、操作対象112のマスターデータ252として記憶された値と異なる場合には、ロボットシステム100は、マスターデータ252を置換、又は、マスターデータ252に追加して更新することができる。
こうして操作対象112の実際の寸法が判明した後、ロボットシステム100は、操作対象112を種々の方向から把持したときのポーズの空間形状パラメータを計算することができる。それから、ロボットシステム100は、それらの空間形状パラメータと、作業位置116に置かれた収納容器450内の空間情報とを比較することにより、収納容器450内に、より高い充填密度でその操作対象112を収納することができるプラン又はパターンを最適化して選定することができる。
このとき、ロボットシステム100は、エンドエフェクタが収納容器450にアクセスする際に、エンドエフェクタと、収納容器450や既に収容されている操作対象112との干渉の有無を計算し、干渉が生じ得る場合には、そのパターンを排除することができる。そして、その時点で把持されている操作対象112をそのままの向きで収納容器450に収納するよりも、操作対象112のポーズを変えた方が、収納容器450への操作対象112の充填率が高いときには、ロボットシステム100は、それまでの制御シークエンス472(図4A及び図4Bにおける第1の制御シークエンス422又は第2の制御シークエンス424に相当する。)を変更し、収納に最適化されたポーズとなるように操作対象112を持ち替える操作を含む制御シークエンスを再作成することができる。
逆に、現時点で把持している操作対象112のポーズが収納効率の観点から最適な場合には、ロボットシステム100は、制御シークエンス472の変更を行わず、把持した操作対象112を、作業位置116における輸送ユニット106の入庫用コンベヤ等の上に載置されたバケット等の収納容器450に収納する。
また、ロボットシステム100は、操作対象112を持ち替える場合、再計算後の制御シークエンス474に従って、操作対象112を操作する。例えば、スキャン後の操作対象112を、持ち替え位置118の周辺エリアへ移動し、エンドエフェクタを所定の向きに向けて操作対象112を仮り置き用のポーズとし、その状態で仮置き台468に載置して、把持を解放する。仮置き台としては、特に制限されず、例えば、操作対象112を、その少なくとも2面が露出されるように載置でき、特に、把持の行い易さ及び把持時の安定性の観点から、操作対象112を支持しつつ傾いた状態で保持することができる台座等が好ましい例として挙げられる。ロボットシステム100は、エンドエフェクタの向きを変え、仮り置きする前に把持していた面とは異なる面を把持して、操作対象112を持ち替えることができる。
ロボットシステム100は、その持ち替えた操作対象112を作業位置116における輸送ユニット106の入庫用コンベヤ等の上に載置されたバケット等の収納容器450に収納する。この際、エンドエフェクタを一時に直接的に位置決めせずに、例えば、目的位置に対して前後/左右/上下に揺れ動かすように動作させてもよい。また、エンドエフェクタを複数台又は複数ユニット設け、操作対象112のサイズとの関係で、個々のエンドエフェクタを使い分けるように制御してもよい。
なお、上記において、作業402に関する動作を実行するために、ロボットシステム100は、操作対象112の現在の位置(例えば、ロボットシステム100によって使用されるグリッドに対応する座標のセット)、及び/又は、現在のポーズを追跡することができる。例えば、ロボットシステム100は、例えばプロセッサ202を介して、図2の位置センサ224からのデータに従って、現在の位置/ポーズを追跡することができる。ロボットシステム100は、位置センサ224からのデータに従って、ロボットアーム414の1つ以上の部分(例えば、リンクやジョイント)を配置することができる。ロボットシステム100は、ロボットアーム414の位置及び向きに基づき、エンドエフェクタの位置/ポーズをさらに計算することができ、それにより、エンドエフェクタによって保持される操作対象112の現在の位置を計算することができる。また、ロボットシステム100は、推測メカニズムに従って、他のセンサの読取り値(例えば、力の読取り値又は加速度計の読取り値)の処理、実行された作動コマンド/設定、及び/又は、関連するタイミング、又はそれらの組合せに基づいて、現在の位置を追跡することができる。
[操作フロー(信頼基準に基づく制御シークエンス)]
図5Aは、本開示の一実施形態に係るロボットシステム100の動作における手順の一例示す方法500のフロー図である。方法500は、操作対象112の最初のポーズの判定に関連する信頼基準に従って図4Aの作業402を実行するために、信頼基準に基づく制御シークエンスを取得/計算し、及び、実施する手順を含む。また、方法500は、1つ以上のプロセッサ202で、1つ以上のストレージデバイス204に記憶された命令を実行することに基づいて、実施することができる。
ブロック501では、ロボットシステム100は、図2の1つ以上の撮像デバイス222のスキャンフィールドを識別することができる。例えば、ロボットシステム100は、例えば、1つ以上のプロセッサ202を介して、図4A及び図4Bのスキャナ412,416等の1つ以上の撮像デバイス222によってスキャンされ得る空間を識別することができる。ロボットシステム100は、スキャナ416の向きに従って、逆向きの方向(opposite directions)及び/又は直交した方向に向けられたスキャンフィールドを識別することができる。図4A及び図4Bに示すように、スキャナ416は、水平方向の両側、又は、垂直方向の両側等、互いに反対側に、及び/又は、互いに面して配置することができる。また、スキャナ416は、1つが上又は下に向き、別のものが水平方向を向く等、互いに垂直に配置することもできる。
ロボットシステム100は、例えば、マスターデータ252に従ってスキャンフィールドを識別することができる。マスターデータ252は、撮像デバイス222及び/又は対応するスキャンフィールドを示すグリッド位置、座標、及び/又は、他のマーカを含むことができる。マスターデータ252は、撮像デバイス222のレイアウト及び/又は物理的配置、撮像デバイス222の能力、環境的因子(例えば、光の条件、及び/又は遮蔽物/構造)、又はそれらの組合せに従って、予め判定することができる。また、ロボットシステム100は、スキャンフィールドを識別するために、較正プロセスを実施することができる。例えば、ロボットシステム100は、移送ユニット104を使用して、位置のセットに既知のマーク又はコードを配置し、対応する撮像デバイス222が既知のマークを正確にスキャンしたかを判定することができる。ロボットシステム100は、正確なスキャン結果となった既知のマークの位置に基づいて、スキャンフィールドを識別することができる。
ブロック502では、ロボットシステム100は、指定されたエリアをスキャンすることができる。ロボットシステム100は、1つ以上の撮像デバイス222(例えば、図4A及び図4Bのスキャナ412及び/又は他のエリアスキャナ)を、例えば、プロセッサ202によって送信されたコマンド/プロンプトを介して使用して、ピックアップエリア及び/又はドロップエリア等の1つ以上の指定されたエリアの撮像データ(例えば、取得されたデジタル画像及び/又はポイントクラウド)を生成することができる。撮像データは、撮像デバイス222から1つ以上のプロセッサ202に通信することができる。従って、1つ以上のプロセッサ202は、さらなる処理のために、ピックアップエリア(例えば、作業の実行前の操作対象112を含む)、持ち替えエリア、及び/又は、ドロップエリア(例えば、作業の実行後の操作対象112を含む)を示す撮像データを受信することができる。
ブロック504では、ロボットシステム100は、操作対象112及び関連する位置(例えば、図1のスタート位置114、及び/又は、図1の作業位置116)、及び/又は、操作対象112の最初のポーズを識別することができる。ロボットシステム100、例えば、プロセッサ202を介して、操作対象112のアウトライン(例えば、周囲の縁部及び/又は表面)を識別するために、パターン認識メカニズム及び/又は認識ルールに基づいて、撮像データを分析することができる。ロボットシステム100は、さらに、種々の操作対象112に対応するような、例えば、所定の認識メカニズム、認識ルール、及び/又は、ポーズやアウトラインに関するテンプレートに基づいて操作対象112のアウトライン及び/又は表面のグルーピングを識別することができる。
ロボットシステム100は、例えば、操作対象112のアウトラインにわたり、色、輝度、深さ/位置、及び/又は、それらの組合せにおけるパターン(例えば、同じ値であるか、既知の割合/パターンで変化するか)に対応する操作対象112のアウトラインのグルーピングを識別することができる。また、例えば、ロボットシステム100は、マスターデータ252において規定された所定の形状/ポーズのテンプレート、画像、又はそれらの組合せに従って、操作対象112のアウトライン及び/又は表面のグルーピングを識別することができる。
ピックアップエリアで認識された操作対象112から、ロボットシステム100は、操作対象112として、(例えば、所定のシークエンス又は規則のセット、及び/又は、操作対象のアウトラインのテンプレートに従って)1つを選択することができる。ロボットシステム100は、例えば、スキャナ412の既知の位置に対する距離/位置を示すポイントクラウドに従う等して、操作対象112を選択することができる。また、ロボットシステム100は、例えば、角/縁部に位置し、撮像結果に露出する/示される2つ以上の表面を有する操作対象112を選択することができる。さらに、ロボットシステム100は、所定のパターン又はシークエンス(例えば、基準位置に対し、左から右へ、もっとも近くからもっとも遠くへ等)に従って、操作対象112を選択することができる。
選択された操作対象112に関し、ロボットシステム100は、スタート位置114及び/又は最初のポーズを判定するために、撮像データをさらに処理することができる。例えば、ロボットシステム100は、撮像データにおける操作対象112の位置(例えば、判定されたポーズに関する所定の基準ポイント)を、ロボットシステム100によって使用されるグリッド内の位置へマッピングすることにより、スタート位置114を判定することができ、所定の較正マップに従って位置をマッピングすることができる。
ロボットシステム100は、ドロップエリアの撮像データを処理して、操作対象112間のあいているスペースを判定することができる。ロボットシステム100は、画像の位置を、現実の位置及び/又はシステムによって使用される座標にマッピングする所定の較正マップに従って、操作対象112のアウトラインをマッピングし、それに基づいて、空いているスペースを判定することができる。ロボットシステム100は、異なるグルーピングに属する操作対象112のアウトライン(そしてひいては、操作対象112の表面)間の空間として、空いているスペースを判定することができる。さらに、ロボットシステム100は、空いているスペースの1つ以上の寸法を測定し、測定された寸法を操作対象112の1つ以上の寸法(例えば、マスターデータ252に記憶されているようなもの)と比較することにより、操作対象112にとって適切な空いているスペースを判定することができる。また、ロボットシステム100は、所定のパターン(例えば、基準位置に対し、左から右へ、もっとも近くからもっとも遠くへ、底部から頂部へ等)に従って、適切な/空いているスペースの1つを、作業位置116として選択することができる。
ロボットシステム100は、撮像データを処理せずに又は処理することに加えて、作業位置116を判定することができる。例えば、ロボットシステム100は、エリアを撮像することなく、所定の制御シークエンス及び位置に従って、配置エリアに操作対象112を配置することができる。また、例えば、ロボットシステム100は、複数の作業(例えば、スタックの共通の層/列に位置する操作対象112に関するもの等、複数の操作対象112を移動すること)を実施するために、撮像データを処理することができる。
ブロック522では、例えば、ロボットシステム100は、撮像データ(例えば、スキャナ412からの撮像データ)の処理に基づき、最初のポーズ(例えば、ピックアップエリアにおける操作対象112の停止したポーズの推定)を判定することができる。ロボットシステム100は、操作対象112のアウトラインと、マスターデータ252の所定のポーズのテンプレートにおけるアウトラインとを比較すること(例えば、ピクセル値を比較すること)に基づいて、操作対象112の最初のポーズを判定することができる。所定のポーズのテンプレートには、例えば、予期される操作対象112の対応する向きに係る、操作対象112のアウトラインの異なる可能性のある配置を含むことができる。ロボットシステム100は、選択された操作対象112と前に関連付けられた操作対象112のアウトラインのセット(例えば、図3A及び/又は図3Cの第1の露出表面304、及び/又は、図3Aの第2の露出表面306等の、露出表面の縁部)を識別することができる。ロボットシステム100は、比較された操作対象112のアウトライン間の、もっとも少ない差異の測定に対応するポーズのテンプレートの1つを選択することにより、最初のポーズを判定することができる。
さらなる例に関し、ロボットシステム100は、操作対象112の物理的寸法に基づき、操作対象112の最初のポーズを判定することができる。ロボットシステム100は、撮像データで取得された露出表面の寸法に基づき、操作対象112の物理的寸法を概算することができる。ロボットシステム100は、撮像データにおける操作対象112のアウトラインの各々に関する長さ及び/又は角度を測定し、次いで、較正マップ、変換テーブル若しくはプロセス、所定の方程式、又はそれらの組合せを使用して、測定された長さを現実世界の長さ又は標準的な長さにマッピング又は変換することができる。ロボットシステム100は、物理的寸法に対応する操作対象112及び/又は露出表面(複数可)を識別するために、測定された寸法を使用することができる。
ロボットシステム100は、概算された物理的寸法を、マスターデータ252内の操作対象112の既知の寸法のセット(例えば、高さ、長さ、及び/又は幅)並びにその表面と比較することにより、操作対象112及び/又は露出表面(複数可)を識別することができる。ロボットシステム100は、マッチした寸法のセットを使用して、露出表面(複数可)及び対応するポーズを識別することができる。例えば、ロボットシステム100は、露出表面の寸法が、予期された操作対象112に関する長さ及び幅にマッチする場合に、露出表面を、図3Aの操作対象302の頂部表面322、又は、図3Bの操作対象302の底部表面324(例えば、一対の両側の表面)として識別することができる。露出表面の向きに基づき、ロボットシステム100は、操作対象112の最初のポーズ(例えば、露出表面が上を向いている場合、操作対象302の第1のポーズ312又は第3のポーズ316)を判定することができる。
例えば、ロボットシステム100は、操作対象112の1つ以上の表面、及び/又は、その1つ以上のマーキングの可視画像に基づき、操作対象112の最初のポーズを判定することができる。ロボットシステム100は、接続されたアウトラインのセットのピクセル値を、マスターデータ252の、所定のマーキングベースのポーズのテンプレートと比較することができる。マーキングベースのポーズのテンプレートには、例えば、様々な異なる向きの予期される操作対象112の、1つ以上の特有のマーキングが含まれ得る。ロボットシステム100は、比較された画像に関するもっとも少ない差異の測定の結果となる、表面、表面の向き、及び/又は対応するポーズの1つを選択することにより、操作対象112の最初のポーズを判定することができる。
ブロック524では、ロボットシステム100は、操作対象112の最初のポーズに関する信頼基準を計算することができる。ロボットシステム100は、最初のポーズを判定することの一部として、信頼基準を計算することができる。例えば、信頼基準は、操作対象112のアウトラインと、上述の選択されたテンプレートのアウトラインとの間の差異の基準に対応し得る。また、例えば、信頼基準は、上述の概算された物理的寸法及び/又は角度に関連する公差レベルに対応し得る。また、例えば、信頼基準は、撮像データ内の可視マーキングと、上述のテンプレートの画像との間の差異の基準に対応し得る。
ブロック506では、ロボットシステム100は、操作対象112に関する作業402を実行するための制御シークエンス(例えば、図4Aの第1の制御シークエンス422、図4Aの第2の制御シークエンス424、図4Bにおける制御シークエンス472等)、並びに、図4Bに示す操作対象112の持ち替え操作を含む制御シークエンス474を計算することができる。
例えば、ロボットシステム100は、図4A及び図4Bのロボットアーム414及び/又はエンドエフェクタを操作する作動デバイス212に関するコマンド若しくは設定のシークエンス、又はそれらの組合せを計算することに基づいて、制御シークエンスを作成又は取得することができる。いくつかの作業に関し、ロボットシステム100は、ロボットアーム414及び/又はエンドエフェクタを操縦して、操作対象112をスタート位置114から、必要に応じて持ち替え位置118を経由して作業位置116に移動する制御シークエンス及び設定値を計算することができる。ロボットシステム100は、空間内の移動経路を計算するように構成された制御シークエンスメカニズム(例えば、処理、機能、方程式、アルゴリズム、コンピュータで生成された/読取り可能なモデル、又はそれらの組合せ)を実施することができる。
例えば、ロボットシステム100は、操作対象112をスタート位置114から、必要に応じて持ち替え位置118を経由して作業位置116に、1つ以上の提供のポーズ/位置(例えば、エンドエフェクタのための1つ以上の対応するスキャン位置)を通して移動するために、空間を通る移動経路を計算するように、A*アルゴリズム、D*アルゴリズム、及び/又は他のグリッドに基づく検索を使用することができる。制御シークエンスメカニズムは、さらなる処理、機能、若しくは方程式、及び/又はマッピングテーブルを使用して、移動経路を、作動デバイス212に関するコマンド若しくは設定のシークエンス、又はそれらの組合せに変換することができる。制御シークエンスメカニズムを使用する際、ロボットシステム100は、ロボットアーム414及び/又はエンドエフェクタを操縦し、操作対象112に計算された移動経路をたどらせる制御シークエンスを計算することができる。
ロボットシステム100は、信頼基準に基づき、制御シークエンスを選択的に作成又は取得することができる。ロボットシステム100は、信頼基準に従って、アプローチ位置(例えば、図4Aの第1のアプローチ位置432及び/又は図4Aの第2のアプローチ位置434)、1つ以上のスキャン位置(例えば、図4の第1の提供位置442及び/又は図4の第2の提供位置444)、又はそれらの組合せを含む制御シークエンスを計算することができる。例えば、ロボットシステム100は、信頼基準を十分性閾値と比較した結果に基づいて、メトリック(例えば、性能のメトリック、及び/又は、スキャンのメトリック)に係る、アプローチ位置及び/又はスキャン位置を計算することができる。スキャン位置は、操作対象112の1つ以上の識別子332をスキャンするものである1つ以上の対応する対象スキャナ416の前(すなわち、そのスキャンフィールド)に、操作対象112の1つ以上の表面を提供するように、エンドエフェクタを配置するためのものとすることができる。
ブロック532では、ロボットシステム100は、例えば、プロセッサ202を介して、利用可能なアプローチ位置のセットを計算することができる。利用可能なアプローチ位置は、エンドエフェクタを配置するのに十分な、スタート位置114周りに開放されているか又は占められていない空間に対応するものとすることができる。また、ロボットシステム100は、他の操作対象112を妨げることなく、操作対象112に接触及び把持するために、選択されたアプローチ位置にエンドエフェクタを置くことができる。
例えば、ロボットシステム100は、操作対象112のアウトラインと、隣接する操作対象112のアウトラインとの間の分離距離を計算することにより、利用可能なアプローチ位置のセットを計算することができる。ロボットシステム100は、その分離距離を、エンドエフェクタの物理的サイズ/形状、及び/又は、それらの様々な向きに対応する、所定の距離のセットと比較することができる。ロボットシステムは、対応する分離距離が、エンドエフェクタのサイズに対応する距離の所定のセットを超える場合、利用可能なアプローチ位置の各々を識別することができる。
決定ブロック534では、ロボットシステム100は、信頼基準を1つ以上の十分性閾値と比較して、これらが満たされているか否かを判定することができる。ブロック536で示されるもの等、信頼基準が十分性閾値を満たす場合(例えば、信頼基準が必要とされる十分性閾値を超える場合)、ロボットシステム100は、性能のメトリックに基づき、制御シークエンス(例えば、第1の制御シークエンス422)を計算することができる。信頼基準が十分性閾値を満たす場合、ロボットシステム100は、最初のポーズが適切であると推定し、操作対象112の少なくとも1つの識別子332をスキャンすることに関する可能性、及び/又は、最初のポーズが不正確である場合があることの可能性に対応する、スキャンのメトリックを考慮することなく、制御シークエンスを計算することができる。
一例として、ロボットシステム100は、ブロック542において、候補のプランを計算することができる。候補のプランの各々は、利用可能なアプローチ位置とスキャン位置との特有の組合せ(例えば、操作対象112に関する対応する提供位置/向き)に対応する制御シークエンスの例とすることができる。ロボットシステム100は、マスターデータ252内の、識別子332の位置(複数可)334又は対応するモデル/ポーズを回転させる等により、最初のポーズに従って、識別子332の位置334を計算することができる。ロボットシステム100は、エンドエフェクタに識別子332の位置334をカバーさせる(例えば、直上、前方、及び/又は閾値の距離内に置く)利用可能なアプローチ位置を除去することができる。
ロボットシステム100は、セット内の残りの利用可能なアプローチ位置(例えば、ブロック532の計算結果)の各々に関し、候補のプランを計算することができる。候補のプランの各々に関し、ロボットシステム100は、利用可能なアプローチ位置に従って、特有のスキャン位置をさらに計算することができる。ロボットシステム100は、操作対象112のモデルの回転及び/又は移動に基づき、スキャン位置を計算することができ、それにより、識別子332の位置334に対応する表面が、スキャンフィールド内にあるとともに、対応するスキャナ416に面する。ロボットシステム100は、所定のプロセス、方程式、関数等に従って、モデルを回転及び/又は移動することができる。
ブロック544では、ロボットシステム100は、各候補のプランに関する性能のメトリックを計算することができる。ロボットシステム100は、作業402を完了することに関するスループット(率)に対応する性能のメトリックを計算することができる。例えば、性能のメトリックは、候補のプランに関する、操作対象112が移動する距離、概算される移動時間、作動デバイス212に関するコマンド及び/又は設定の変更の数、達成率(すなわち、ピースロスの量と相補的である)、又はそれらの組合せに関連し得る。ロボットシステム100は、1つ以上の測定された又は既知のデータ(例えば、設定/コマンドに関連する加速度/速度、及び/又は、把持表面及び/又は動きに関連するピースロスの割合)、並びに、所定の計算プロセス、方程式、関数等を使用して、候補の制御シークエンスに関する対応する値を計算することができる。
ブロック546では、ロボットシステム100は、制御シークエンスとして、最大の性能のメトリックをもった候補のプラン(すなわち、対応するアプローチ位置を伴う)を選択することができる。例えば、ロボットシステム100は、制御シークエンスとして、候補のプランのセットの中で、もっとも高い達成率、もっとも短い移動距離、もっとも少ないコマンド及び/又は設定の変更の数、もっとも速い移動の持続時間、又はそれらの組合せに対応する候補のプランを選択することができる。従って、ロボットシステム100は、アプローチ位置として、もっとも高い性能のメトリックに対応するセット内の利用可能なアプローチ位置を選択することができる。
比較すると、ロボットシステム100は、信頼基準が十分性閾値を満たさない(例えば、信頼基準が必要な十分性閾値未満である)場合、異なる基準に従って、候補のプランを計算することができる。ブロック538で示すように、ロボットシステム100は、スキャンのメトリックに基づき、制御シークエンス(例えば、第2の制御シークエンス424)を計算することができる。スキャンのメトリックは、操作対象112の識別子332の少なくとも1つが、最初のポーズが正確であるかに関わらず、エンドエフェクタによってカバーされないままであり、かつ、スキャン可能であることの可能性に対応する値(例えば、2要素の値、又は、2要素ではないスコア/パーセンテージ)である。
例えば、ロボットシステム100は、信頼基準が十分性閾値を満たさない場合、性能のメトリックに対してスキャンのメトリックを優先させる(例えば、最初に満たす及び/又はより重い重要度を与える)ことができる。従って、ロボットシステム100は、1つ以上のスキャナ416の前に、少なくとも1つのカバーされていない操作対象112の識別子332を提供するための1つ以上のスキャン位置(すなわち、スキャンフィールド内にある、及び/又は、対応するスキャナに向いている)を含む制御シークエンスを計算することができる。
図5Bは、本開示の一実施形態に係るロボットシステムの動作における手順の一例を示すフロー図であり、スキャンメトリックに基づいて、制御シークエンス(例えば、エンドエフェクタのための1つ以上の位置)を選択的に計算するためのフロー図538を示す。
この例では、スキャンのメトリックに基づき、制御シークエンスを計算することには、ブロック552に示したように、露出した識別子332の位置のセットを計算することを含むことができる。ロボットシステム100は、操作対象112の最初のポーズに対し、露出した識別子332の位置のセット(例えば、把持位置において、エンドエフェクタでスキャン可能なままであり得る識別子332の位置334)を計算することができる。ロボットシステム100は、利用可能なアプローチ位置の各々に関する、露出した識別子332の位置334を計算することができる。露出した識別子332の位置334は、最初のポーズが正確であるとの仮定に従って、対応するアプローチ位置において、エンドエフェクタでカバーされないままである操作対象112の識別子332の位置334に対応するものとすることができる。
ブロック542に関して上述したように、マスターデータ252は、予期される操作対象112の各々に関する識別子332の位置334を記載するコンピュータモデル又はテンプレート(例えば、1つ以上の操作対象112の縁部及び/又は画像に対してのオフセットの測定)を含むことができる。ロボットシステム100は、最初のポーズにマッチするように、マスターデータ252内の所定のモデル/テンプレートを回転及び/又は移動させることに基づき、露出した識別子332の位置のセットを計算することができる。ロボットシステム100は、エンドエフェクタに識別子332の位置334をカバーさせる(例えば、直上、前方、及び/又は閾値の距離内に置く)、アプローチ位置を除去することができる。換言すると、ロボットシステム100は、識別子332の位置334の直上、前方、及び/又は閾値の距離内にある、利用可能なアプローチ位置を除去することができる。
ブロック554では、ロボットシステム100は、代替的な識別子332の位置334のセットを計算することができる。ロボットシステム100は、最初のポーズの代替のポーズに関し、代替的な識別子332の位置334のセットを計算することができる。利用可能なアプローチ位置の各々に関し、ロボットシステム100は、代替的ポーズを計算することができ、代替的ポーズの各々に関し、ロボットシステム100は、代替的な識別子332の位置を計算することができる。従って、代替的な識別子332の位置は、最初のポーズが正確ではないとの仮定に従って、対応するアプローチ位置において、エンドエフェクタでカバーされないままである操作対象112の識別子332の位置334に対応するものとすることができる。露出した識別子332の位置334に関して上述したように、ロボットシステム100は、代替的なポーズに従って、マスターデータ252内の所定のモデル/テンプレートを回転及び/又は移動させることに基づいて、代替的な識別子332の位置334を計算することができる。
ブロック556では、ロボットシステム100は、アプローチ位置の各々、代替的ポーズの各々、操作対象112の識別子332の各々、又はそれらの組合せに関する露出の可能性を計算することができる。露出の可能性は、1つ以上の操作対象112の識別子が、露出したままであるとともに、対応するアプローチ位置から、操作対象112を把持しているエンドエフェクタでスキャン可能のままである可能性を示している。露出の可能性は、最初のポーズが正確であるシナリオと、最初のポーズが正確ではないシナリオとの両方を示すことができる。換言すると、露出の可能性は、最初のポーズが正確ではない場合であっても、1つ以上の操作対象112の識別子が、露出したままであるとともにスキャン可能なままである可能性を示すことができる。
例えば、ロボットシステム100は、特定の条件(例えば、アプローチ位置、代替的なポーズ、操作対象112の識別子、又はそれらの組合せの特有の例)に対応する確率的な値等、条件に関する確実性として、露出の可能性を計算することができる。ロボットシステム100は、条件に関する確実性を、特定の条件が真であることの確実性/可能性(例えば、信頼基準に近い値)と合わせること(例えば、追加及び/又は複数倍することを介する)に基づき、露出の可能性を計算することができる。ロボットシステム100は、複数の識別子が、考慮されるアプローチ位置及び/又は考慮されるポーズに関して露出した際に、露出していると思われる識別子の各々に関する確実性を付加することに基づき、露出の可能性を計算することができる。
ロボットシステム100は、考慮されるアプローチ位置に関する潜在的なポーズの各々等、露出した識別子の位置と代替的な識別子の位置とに基づく確実性の値を組み合わせることに基づいて、露出の可能性を計算することができる。例えば、ロボットシステム100は、露出した識別子の位置と、逆の符号(例えば、正及び負)を有する代替的な識別子の位置とに関する確実性を使用して、露出の可能性を計算することができる。ロボットシステム100は、2つの確実性の大きさを加えること、及び/又は、符号を伴う確実性を加えることに基づき、露出の可能性を計算することができる。全体の大きさは、操作対象112の1つ以上の識別子332がスキャン可能なままであることの全体の可能性を示し得、符号が付された/ベクトルの可能性は、操作対象112の1つ以上の識別子が、最初のポーズが正確ではない場合であっても、スキャン可能なままであることの可能性を示し得る。従って、最初のポーズの正確さに関わらず、操作対象112の識別子332がスキャン可能であることの類似の可能性を示すため等、アプローチ位置は、全体の大きさがより大である場合に理想的であり、符号が付された/ベクトルの可能性が、ゼロに近くなる。
ブロック558では、ロボットシステム100は、アプローチ位置を選択することができる。ロボットシステム100は、アプローチ位置として、露出された識別子332のセット(例えば、最初のポーズが正確であることの仮定に従う、操作対象112の識別子332の概算の位置のセット)と、代替的な識別子332のセット(例えば、最初のポーズが正確ではないことの仮定に従う、操作対象112の識別子332の概算の位置の1つ以上のセット)との両方に、カバーされていない識別子332の位置334を含む利用可能なアプローチ位置を選択することができる。換言すると、ロボットシステム100は、最初のポーズの正確さに関わらず、露出したスキャン可能である操作対象112の少なくとも1つの識別子332を残すアプローチ位置を選択することができる。ロボットシステム100は、アプローチ位置として、全体の大きさがもっとも大であるもの、及び/又は、符号が付された/ベクトルの可能性がゼロにより近いもの等、ターゲットとされる条件にマッチする、及び/又はもっとも近い露出の可能性に対応する、利用可能なアプローチ位置を選択することができる。
ロボットシステム100は、露出の可能性に基づき、スキャンの可能性(例えば、露出した操作対象112の識別子332が、成功してスキャンされる可能性)を計算することができる。例えば、ロボットシステム100は、露出の可能性を、対応する露出した操作対象112の識別子332に関連する評価値(例えば、成功したスキャンの追跡の割合、物理的サイズ、及び/又は識別子332のタイプ)と組み合わせることができる。ロボットシステム100は、アプローチ位置として、もっとも高いスキャンの可能性に対応する、利用可能なアプローチ位置を選択することができる。
ロボットシステム100は、露出した識別子332のセットを、代替的な識別子332のセットと比較して、露出した識別子332のセット及び代替的な識別子332のセットが、操作対象112の対向する表面の位置(例えば、第1のポーズ312と第3のポーズ316との間)を含むかを判定することができる。従って、ロボットシステム100は、2つの対向する表面と直交する、第3の表面(例えば、操作対象302の外周表面326の1つ)に対応する利用可能なアプローチ位置を選択することができる。
ブロック560では、信頼基準が十分性閾値を満たさない等の場合、ロボットシステム100は、選択されたアプローチ位置に基づいて、候補となる制御シークエンスを作成又は取得することができる。ロボットシステム100は、操作対象112の識別子332を、露出した識別子332のセットと代替的な識別子332のセットとの両方に置く1つ以上の提供位置/向きに対応するエンドエフェクタに関する1つ以上のスキャン位置を含む候補となる制御シークエンスを計算することができる。換言すると、ロボットシステム100は、最初のポーズの正確さに関わらず、操作対象112をスキャンすることができる候補となる制御シークエンスを計算することができる。
ロボットシステム100は、露出した識別子332のセットと、代替的な識別子332のセットとの両方において、識別子332の位置334に対処する候補となる制御シークエンスを作成又は取得することができる。例えば、ロボットシステム100は、対向する及び/又は直交する表面の、可能性のある識別子332の位置に対処する候補となる制御シークエンスを計算することができる。従って、ロボットシステム100は、最初のポーズに加え、逆向きのポーズ(例えば、操作対象112のアウトラインが視認位置/角度から同じに置かれている逆方向に向いたポーズ)、及び/又は、回転された他のポーズに対処することができる。説明の例として図3A及び図3Cを再び参照すると、ロボットシステム100は、把持位置が操作対象302の外周表面326の1つに対応する場合、第1のポーズ312と第3のポーズ316との両方に対処する候補となる制御シークエンスを計算することができる。
複数の可能性のあるポーズに対処する(例えば、最初のポーズにおけるエラーの概算)ために、ロボットシステム100は、操作対象112の識別子332を、露出した識別子332のセットと、代替的な識別子332のセットとの両方に置くスキャンポーズを計算することができる。ブロック562で示すように、ロボットシステム100は、スキャンフィールド内又はスキャンフィールドを通して、操作対象112に関する候補のポーズのセットを計算することができる。アプローチ位置が選択されると、ロボットシステム100は、スキャンフィールド内に識別子332の位置334を配置するように、識別子332の位置334のモデルを回転及び/又は移動させること等により、ブロック542に関して上述したように、候補となるスキャン位置を計算することができる。
ブロック564では、ロボットシステム100は、露出した識別子332のセットと、代替的な識別子332のセットとを、候補となるスキャン位置の各々にマッピングすることができる。ロボットシステム100は、最初のポーズを始点とし、識別子332の位置335のモデルを回転させることに基づき、露出した識別子332のセットをマッピングすることができる。ロボットシステム100は、代替的なポーズの1つ(例えば、逆向きのポーズ)を始点とし、識別子332の位置334のモデルを回転させることに基づき、代替的な識別子332のセットをマッピングすることができる。
識別子332の位置334がマッピングされると、ブロック568において、ロボットシステム100は、露出した識別子332のセットと、代替的な識別子332のセットとの両方における操作対象112の識別子332の位置334及び/又は向きを、スキャンフィールドと比較することができる。決定ブロック570では、ロボットシステム100は、候補のポーズが、露出した識別子332のセットと、代替的な識別子332のセットとの両方における操作対象112の識別子332をスキャナに同時に提供したかを判定することができる。
ブロック572では、ロボットシステム100は、露出した識別子332のセットと代替的な識別子332のセットとの両方における操作対象112の識別子332を、異なるスキャナ/スキャンフィールドに同時に提供する候補のポーズを、スキャンポーズとして識別することができる。例えば、露出した操作対象112の識別子332のセットと代替的な識別子332のセットとにおける操作対象112の位置が対向する表面上にある状態で、把持位置が操作対象112の外周表面326の1つに対応する場合、ロボットシステム100は、操作対象112の両側の表面の各々がスキャナの1つに向いた状態で、対向/対面している一対のスキャナの間に操作対象112を置くスキャンポーズを識別することができる。
ブロック574では、候補のポーズのどれも、露出した操作対象112の識別子332のセットと代替的な識別子332のセットとの両方において、操作対象112の識別子332を同時に提供しない場合、ロボットシステム100は、露出した操作対象112の識別子332のセット及び代替的な識別子332のセットから、各々が少なくとも1つの操作対象112の識別子332を提供する複数のスキャン位置(例えば、第1のスキャン位置及び第2のスキャン位置)を計算することができる。例えば、第1のスキャン位置は、露出した操作対象112の識別子332のセット内の1つ以上の識別子332の位置334を、対象スキャナの1つに提供することができ、第2のスキャン位置は、代替的な操作対象112の識別子332のセット内の1つ以上の識別子332の位置334を、スキャナの1つに提供することができる。第2のスキャン位置は、第1のスキャン位置から、エンドエフェクタを軸周りに回転させること、エンドエフェクタを平行移動すること、又はそれらの組合せに関連し得る。
ふたたび図4A及び図4Bに示す例を参照すると、第2の制御シークエンス424は、上述のように、2つの対向する表面(例えば、第1のポーズ312及び第3のポーズ316に関する)に直交する第3の表面(例えば、操作対象112の外周表面326の1つ)に対応する、第2のアプローチ位置434に対応するものとすることができる。従って、第1のスキャン位置は、最初のポーズ(例えば、第1のポーズ312)に対応する表面(例えば、操作対象112の底部表面324であると概算される)を、上に向いたスキャナ416の上であるとともにこのスキャナに向く第2の提供位置444の一つの第1の位置に対応し得る。第2のスキャン位置は、操作対象112を90度だけ、例えば、概してスタート位置114から作業位置116への全体の移動方向に対して反時計回りの方向に回転させた第2の提供位置444の一つの第2の位置に対応するものとすることができる。従って、第2のスキャン位置は、代替的なポーズ(例えば、第3のポーズ316)に対応する表面(例えば、操作対象112の底部表面324であると判断される)を、水平に向いたスキャナ416の前方及びこのスキャナ416に向く垂直な向きに配置する第2の提供位置444に対応するものとすることができる。
結果として得られるスキャンポーズ及び/又はスキャン位置のセットに従って、ロボットシステム100は、候補の制御シークエンスを作成又は取得することができる。ロボットシステム100は、上述の1つ以上のメカニズム(例えば、A*メカニズム)を使用して、エンドエフェクタを選択されたアプローチ位置に置き、それに応じて操作対象112に接触及び把持し、また、操作対象112を、識別されたスキャンポーズ及び/又はスキャン位置のセットまで、持ち上げるとともに移動する候補のプランを計算することができる。例えば、スキャンポーズが識別されると、ロボットシステム100は、候補のプランを計算して、スキャンフィールド内又はスキャンフィールドを通る操作対象112に関するスキャンポーズを確立することができる。ロボットシステム100がスキャンポーズを識別しない場合、ロボットシステム100は、候補のプランを計算して、複数のスキャン位置のセットを連続して通るようにエンドエフェクタを移動/方向付けすることができ、それにより、複数の提供位置/向きに従って、操作対象112を連続して移動/回転させる。
ブロック576では、ロボットシステム100は、候補の制御シークエンスの各々に関するスキャンの可能性を再作成又はアップデートすることができる。ロボットシステム100は、ブロック544に関して上述した様々な可能性及び/又は優先度(例えば、アプローチ位置、スキャン位置、利用されるスキャナ416、露出していると思われる識別子332、関連するエラー、及び/又は損失率、又はそれらの組合せに関する、可能性及び/又はスコア)を組み合わせることに基づくが、性能のメトリックの代わりに、スキャンのメトリックに関して、スキャンの可能性をアップデートすることができる。
ブロック578では、ロボットシステム100は、スキャンの可能性に従って、候補のプランの選択に基づき、制御シークエンスを作成又は取得することができる。ロボットシステム100は、制御シークエンスとして、候補のプランの中でスキャンの可能性が最大である候補のプランを選択することができる。例えば、ロボットシステム100は、例えば、スタート位置114と作業位置116との間の空間のスキャンのための操作対象112の移動の間、1つ以上のスキャンフィールド(すなわち、1つ以上のスキャナ416の前)における、露出した識別子332の位置334の少なくとも1つ及び代替的な識別子332の位置334の少なくとも1つを配置することの可能性がもっとも高い候補のプランを選択することができる。
比較的小さい差異の値(例えば、所定の閾値)内で、2つ以上の候補のプランがスキャンの可能性に対応する場合、ロボットシステム100は、対応する候補のプランに対応する性能のメトリックを(例えば、ブロック544及びブロック546に関して上述したように)計算及び評価することができる。ロボットシステム100は、制御シークエンスとして、ターゲットとされる条件にもっとも近い候補のプランを選択することができる。
ロボットシステム100は、図示の例示的フローから外れることができる。例えば、ロボットシステム100は、上述のように、アプローチ位置を選択することができる。選択されたアプローチ位置に基づき、ロボットシステム100は、操作対象112を把持し、持ち上げ、再度の方向付け、水平移動、下に戻すとともに解放する、又はそれらの組合せ等、動きの所定のセットを実施することができる。動きの所定のセットの間又は後に、ロボットシステム100は、(例えば、ブロック502に戻るようにループすることを介して)ピックアップエリアを再度撮像又はスキャンし、最初のポーズ及び信頼基準(例えば、ブロック522及びブロック524を介する)を再度判定することができる。
図5Aに戻ると、ブロック508において、ロボットシステム100は、結果としての制御シークエンスの実施を開始することができる。ロボットシステム100は、制御シークエンスのコマンド及び/又は設定を他のデバイス(例えば、対応する作動デバイス212及び/又は他のプロセッサ)に送信して、作業402,404を実行するように1つ以上のプロセッサ202を操作することに基づく制御シークエンスを実施することができる。従って、ロボットシステム100は、コマンド若しくは設定、又はそれらの組合せのシークエンスに応じて、作動デバイス212を操作することにより、制御シークエンスを実行することができる。例えば、ロボットシステム100は、作動デバイス212を操作して、エンドエフェクタをスタート位置114周りのアプローチ位置に配置すること、操作対象112に接触及び把持すること、又はそれらの組合せを行うことができる。
ブロック582では、ロボットシステム100は、エンドエフェクタをスキャン位置に移動することができ、それにより、操作対象112を提供位置/向きに移動する。例えば、操作対象112をスタート位置114から持ち上げた後、又は持ち上げるのに伴い、ロボットシステム100は、エンドエフェクタを移動して、操作対象112に関するスキャンポーズを確立することができる。また、ロボットシステム100は、エンドエフェクタを第1のスキャン位置に移動することができる。
ブロック584では、ロボットシステム100は、スキャナ416を操作して、操作対象112をスキャンすることができる。例えば、1つ以上のプロセッサ202は、コマンドをスキャナ416に送信して、スキャンを実施する、及び/又は、質問をスキャナ416に送信して、スキャンステータス及び/又はスキャンされた値を受信することができる。ブロック585等において、制御シークエンスがスキャンポーズを含む場合、ロボットシステム100は、制御シークエンスを実施して、スキャンフィールドの向きに直交する方向に、スキャンフィールドにわたって、スキャンポーズの操作対象112を移動することができる。操作対象112が移動される間、スキャナ416は、操作対象112の識別子332の複数の可能性のある位置334に関する複数の表面を(同時に、及び/又は連続して)スキャンすることができる。
決定ブロック586では、ロボットシステム100は、スキャン結果(例えば、ステータス及び/又はスキャンされた値)を評価して、操作対象112がスキャンされたかどうかを判定することができる。例えば、ロボットシステム100は、制御シークエンスを、第1のスキャン位置まで実施した後に、スキャン結果を評価することができる。ブロック588等において、スキャン結果が、操作対象112のスキャンが成功したことを示す(例えば、ステータスが、有効なコード/識別子の検出に対応する、及び/又は、スキャンされた値が、識別された/予期された操作対象112にマッチする)場合、ロボットシステム100は、操作対象112を作業位置116に移動することができる。スキャンが成功したことに基づき、ロボットシステム100は、任意の後のスキャン位置(例えば、第2のスキャン位置)を無視し、操作対象112を作業位置116に直接移動することができる。
スキャン結果が、操作対象112のスキャンが成功しなかったことを示す場合、ロボットシステム100は、決定ブロック590において、現在のスキャン位置が、制御シークエンスにおける最後のものであるかどうかを判定することができる。最後の制御シークエンスではない場合、ロボットシステム100は、ブロック582へ戻るループによって示されるように、操作対象112を次の提供位置/向きに移動することができる。
現在のスキャン位置が、制御シークエンスにおける最後のものである場合、ロボットシステム100は、ブロック592で示すように、1つ以上の改善作業を実施することができる。ロボットシステム100は、制御シークエンスにおけるスキャン位置のすべてに関するスキャン結果が、スキャンの失敗を示す場合、制御シークエンスを停止及び/又はキャンセルすることができる。ロボットシステム100は、操作者に知らせるためのエラーのステータス/メッセージを生成することができる。ロボットシステム100は、スキャンが失敗した操作対象112に関して指定されたエリア内(すなわち、スタート位置114及び作業位置116とは異なる位置)に、操作対象112を配置することができる。
作業402,404(すなわち、操作対象112のスキャンを成功し、作業位置116に置くこと)を成功して完了したか、あるいは改善作業を実施したかに基づき、ロボットシステム100は、次の作業/操作対象112に移動することができる。ロボットシステム100は、ブロック502に戻るループによって示すように、指定されたエリアを再スキャンすることができ、また、ブロック504に戻るループによって示すように、既存の撮像データを使用して、次の操作対象112を選択することができる。
空間内(例えば、スタート位置114と作業位置116との間の位置)で操作対象112をスキャンすることにより、作業402,404を実行することに関する効率及び速度が向上される。スキャン位置を含む制御シークエンスであって、スキャナ416と協働もする制御シークエンスを計算することにより、ロボットシステム100は、操作対象112を移動するための作業を、操作対象112をスキャンするための作業と効果的に組み合わせることができる。さらに、最初のポーズの信頼基準に従って制御シークエンスを作成又は取得することにより、スキャン作業に関する効率、速度、及び精度がさらに向上する。上述のように、ロボットシステム100は、最初のポーズが正確ではないというシナリオに対応する代替的な向きに対処する制御シークエンスを作成又は取得することができる。従って、ロボットシステム100は、較正エラー、予期しないポーズ、予期しない光の条件等に起因するもの等、ポーズの判定のエラーを伴う場合であっても、操作対象112を正確に/成功的にスキャンする可能性を増大させることができる。正確なスキャンの可能性の増大は、ロボットシステム100に関する全体のスループットの増大につながるとともに、操作者の労力/介入をさらに低減することができる。
[まとめ]
本開示の実施例の上述の発明を実施するための形態は、排他的であるか、本開示を上記に開示の明確な形態に限定されることは意図されていない。本開示に関する特定の実施例が、説明の目的のために上述されているが、様々な均等の変形形態が、当業者が認識することになるように、本開示の範囲内で可能である。例えば、プロセス又はブロックが所与の順番で提供されているが、代替的な実施態様により、異なる順番で、ステップを有するルーチンを実施するか、ブロックを有するシステムを採用する場合があり、また、いくつかのプロセス又はブロックは、削除、移動、追加、細分化、結合、及び/又は変形されて、代替的又はサブの組合せを提供する場合がある。これらプロセス又はブロックの各々は、様々な異なる方法で実施される場合がある。また、プロセス又はブロックが、図示の時点で、連続して実施されるものであるが、これらプロセス又はブロックは、代わりに、並行して実施されるか実行される場合があり、あるいは、異なる時間に実施される場合がある。さらに、本明細書に示されたあらゆる特定の数は、実施例にすぎず、代替的実施態様では、異なる値又はレンジが採用される場合がある。
これら及び他の変更は、上述の発明を実施するための形態に照らして、本開示に行うことができる。発明を実施するための形態には、本開示の特定の実施例と、想定されるベストモードとが記載されているが、本開示は、上述の説明が、テキストにおいてどれだけ詳細に示されるかに関わらず、多くの方法で実施することができる。本システムの詳細は、その特定の実施態様において、著しく変化する場合があるが、依然として、本明細書に開示の技術に包含されている。上述のように、本開示の特定の特徴又は態様を記載する際に使用された特定の用語は、その用語が、用語が関連付けられた本開示の特定の特性、特徴、又は態様のいずれにも限定されるように本明細書で再定義されることを暗示するものとは取られないものとする。従って、本発明は、添付の特許請求の範囲によるものを除き、限定されない。概して、添付の特許請求の範囲で使用される用語は、上述の発明を実施するための形態のセクションが、そのような用語を明示的に規定していない限り、本開示を、明細書に開示の特定の実施例に制限するようには解釈されないものとする。
本発明の特定の態様が、特定の特許請求の範囲の形態で添付のように与えられているが、本出願人は、任意の数の請求項の形態で、本発明の様々な態様を想定している。従って、本出願人は、本出願又は継続出願において、本出願を出願した後に、さらなる特許請求の範囲を実行する権利を留保して、そのような追加の請求項の形態を実行する。