以下の発明を実施するための形態は、本質的に単に例示であり、本発明、又は本発明の用途及び使用を限定することを意図するものではない。更に、前出の技術分野、背景技術、発明の概要、若しくは以下の発明を実施するための形態に提示される、いかなる明示された又は暗示された理論によっても限定する意図はない。
本明細書に記述される実施形態は、カメラ視野内の遮蔽を検出すること、カメラ視野での遮蔽レベルを評価すること、および/または遮蔽分析のその他任意の態様を評価することなど、カメラ視野内の遮蔽を決定することに関する。遮蔽は、例えば、カメラ視野内の位置または位置を取り囲む領域の一部分が、カメラによって見えるかまたはその他の方法で検出されるかを遮断またはほとんど遮断することを指す。一部の実例では、遮蔽は、カメラからその位置まで、またはカメラからその位置を取り囲む領域の部分への視線を遮断または閉じることを遮断またはほとんど遮断する物体またはその部分に起因しうる。例えば、遮蔽物体は、カメラと遮蔽された位置、または位置を囲む領域の遮蔽された部分との間に位置してもよい。一部の実例では、標的特徴は、位置を囲む位置または領域に配置されてもよい。標的特徴は、例えば、物体認識を実施するために使用される領域の特徴であってもよく、例えば、その領域における構造とのロボットの相互作用を計画するために使用されてもよい。例えば、標的特徴は、その領域における物体もしくはその表面の角または縁であってもよく、あるいは表面上に配置された視覚的特徴であってもよい。遮蔽する物体の存在は、標的特徴を識別する能力、および/またはこうした識別の精度に影響を与えうる。したがって、本明細書の実施形態の一態様は、標的特徴またはカメラ視野内のその他任意の特徴に影響を与えうる遮蔽を検出またはそうでなければ評価することに関する。
一実施形態では、遮蔽を決定することは、遮蔽領域のサイズを決定することを含みうる。遮蔽領域は、例えば、カメラと標的特徴との間、またはカメラと標的特徴を囲む領域の一部分との間に位置する遮蔽する物体の領域であってもよい。例えば、遮蔽領域は、3D領域内である遮蔽物体(第一の2D領域であってもよい)の2D領域であってもよく、3D領域は、標的特徴を囲む(第二の2D領域であってもよい)2D領域にカメラの位置を接続することによって画定されてもよい。一実施形態では、遮蔽を決定することは、遮蔽された領域のサイズを決定することを含みうるが、これは以下でより詳細に考察される。一部の事例では、遮蔽領域(および/または遮蔽された領域)のサイズを使用して、例えば、標的特徴に関与したかまたは関与する物体認識に対する信頼度を決定しうる。一部の事例では、信頼度は、遮蔽領域のサイズおよび/または遮蔽された領域のサイズに反比例するような方法で決定されうる。
一実施形態では、遮蔽分析は、例えば、物体認識を再実行するかどうかを判断するため、または物体認識が実施される方法を調整するために使用されてもよい。例えば、物体認識演算の信頼度が定義された閾値(例えば、定義された信頼性閾値)未満である場合、物体認識演算は再実行されてもよい。物体認識の信頼度は、例えば、遮蔽領域のサイズと標的特徴を囲む2D領域のサイズとの間の比が定義された遮蔽の閾値を超える場合、または遮蔽領域のサイズが定義された遮蔽の閾値を超える場合など、遮蔽の程度が高すぎることの結果として定義された閾値より低くてもよい。定義された遮蔽の閾値は、一部の事例において、定義済みの信頼性閾値の逆関数であってもよく、かつ/または定義された信頼性閾値に反比例してもよい。一部の実例では、遮蔽の評価は、遮蔽物体、標的特徴または標的特徴が配置される物体、あるいはその他の任意の物体またはその構造体とのロボットの相互作用を計画するために使用されうる。例えば、ロボットの相互作用は、遮蔽の量を減少させる方法、または以下で詳細に説明するように、遮蔽領域のサイズをより具体的に減少させる方法で、遮蔽物体、および/または標的特徴が配置される物体を、移動させるように計画されうる。
図1Aは、カメラ視野内の遮蔽を検出および/または評価するためのシステム100のブロック図を示す。一実施形態において、システム100は、倉庫、製造工場、又は他の施設内に位置してもよい。例えば、システム100は、倉庫または製造プラント内の物体のカメラデータ(例えば、画像)を生成するために使用される視覚システムであってもよい。一部の事例では、視覚システムは、ロボット制御システムの一部であってもよく、またはロボット制御システムと通信してもよく、例えば、ロボットが物体と相互作用するロボット相互作用を起こす移動コマンドを生成するなど、カメラデータまたはカメラデータに由来する情報を使用することができる。
図1Aに示すように、システム100は、コンピューティングシステム110およびカメラ170を含んでもよい(これは第一のカメラ170とも呼ばれてよい)。一実施形態において、カメラ170は、カメラ170の視野(カメラの視野とも呼ばれる)の中の場面を取り込むカメラデータを生成するか、又は他の方法で取得するように構成されうる。例えば、カメラ170は、場面を撮影するように構成されてもよく、またはより具体的にはカメラ視野内の物体を撮影するように構成されてもよい。一実施形態では、カメラ170は、三次元(3D)カメラ、二次元(2D)カメラ、またはそれらの任意の組み合わせであってもよい(本明細書では「または」という用語は「および/または」を指すために使用される)。
一実施形態では、3Dカメラ(奥行き感知カメラまたは構造感知装置と呼ばれる場合もある)は、カメラ視野内の場面についての3D情報を含むカメラデータを生成するよう構成されたカメラであってもよく、3D情報は、場面の奥行き情報を含んでもよい。より具体的には、奥行き情報は、カメラ視野内の一つ以上の物体上の位置の3Dカメラに対するそれぞれの奥行き値を示しうる。一部の事例では、3D情報は、一つ以上の物体上の位置を表す3D座標など、複数の3Dデータ点を含みうる。例えば、複数の3Dデータ点は、カメラ視野内の一つ以上の物体の一つ以上の表面上の位置を表す点群を含みうる。一部の実例では、3Dカメラは、例えば、飛行時間(TOF)カメラまたは構造化光カメラを含みうる。
一実施形態では、2Dカメラは、カメラ視野内の場面についての2D情報を含むカメラデータを生成するよう構成されたカメラであってもよく、2D情報は、場面の外観を捕捉またはその他の方法で表示することができる。例えば、2D情報は、カメラ視野内の一つ以上の物体を捕捉またはその他の方法で表示する2D画像または他のピクセル配列であってもよい。2Dカメラは、例えば、2D色画像を生成するように構成されたカラーカメラ、2Dグレースケール画像を生成するように構成されたグレースケールカメラ、またはその他任意の2Dカメラを含みうる。
実例によっては、図1Aのコンピューティングシステム110は、カメラ170と通信するように構成されてもよい。例えば、コンピューティングシステム110は、カメラ170を制御するように構成されてもよい。例として、コンピューティングシステム110は、カメラ170の視野(カメラ視野とも呼ばれる)の中の場面を捕捉するカメラデータをカメラ170に生成させる、カメラコマンドを生成するように構成することができ、有線又は無線接続によってカメラコマンドをカメラ170へ伝達するように構成されうる。同じコマンドによって、カメラ170に、カメラデータをコンピューティングシステム110へ、又はより広くは、コンピューティングシステム110によって非一時的コンピュータ可読媒体(例えば、記憶デバイス)へ戻すように伝達させてもよい。代替的には、コンピューティングシステム110は、カメラコマンドを受信すると、カメラ170に、生じたカメラデータをコンピューティングシステム110へ伝達させる、別のカメラコマンドを生成してもよい。一実施形態において、カメラ170は、コンピューティングシステム110からのカメラコマンドを必要とすることなく、定期的に、又は定義されたトリガー条件に応答してのいずれかで、カメラ視野中の場面の画像を取り込むか、またはその他の方法でそれを表すカメラデータを自動的に生成してもよい。そのような実施形態では、カメラ170もまた、コンピューティングシステム110からのカメラコマンドなしで、コンピューティングシステム110へ、又はより広くは、コンピューティングシステム110によってアクセス可能な非一時的コンピュータ可読媒体へ、カメラデータを自動的に伝達するように構成されてもよい。
一実施形態では、システム100は、単一のカメラのみを含んでもよい。別の実施形態において、システム100は、複数のカメラを含んでもよい。例えば、図1Bは、カメラ170およびカメラ180を含むシステム100の実施形態であってもよく、それぞれ第一のカメラ170および第二のカメラ180と呼ばれる場合があるシステム100Aを描写する。一実施例では、第一のカメラ170は3Dカメラであってもよく、第二のカメラ180は2Dカメラであってもよく、または逆であってもよい。一部の実装形態では、コンピューティングシステム110は、図1Aに関して上述したように、第一のカメラ170を制御する方法と類似した方法または同様の方法で第二のカメラ180を制御するように構成されうる。一部の事例では、異なるカメラコマンドが第一のカメラ170および第二のカメラ180にそれぞれ送信されてもよい。一部の事例では、同一のカメラコマンドが第一のカメラ170および第二のカメラ180に送信されてもよい。一部の事例では、第一のカメラ170および第二のカメラ180は、第一のカメラ170の視野が第二のカメラ180の視野と実質的に重なるように位置付けられうる。このように、第一のカメラ170および第二のカメラ180は、同じ区域または実質的に同一の区域を表すカメラデータ(例えば、画像および/または点群)を生成するように位置付けられうる。
一部の事例では、図1Bの第一のカメラ170は、第二のカメラ180に対して固定位置および/または配向を持ちうる。例えば、第一のカメラ170は、直接的または間接的にカメラ180に固定して取り付けられてもよい。こうした配置は、第一のカメラ170とカメラ180との間の角度および/または距離を、固定されたままにしてもよい。一部の事例では、こうした配置は、第一のカメラ170の座標系と第二のカメラ180の座標系との間の空間的関係を固定されたままにしてもよい。
上述のように、一部の事例では、システム100/100Aは、ロボットオペレーションシステムまたはロボットオペレーションシステムの一部であってもよい。例えば、図1Cは、コンピューティングシステム110と通信するロボット150を含むシステム100/100Aの実施形態でありうるシステム100Bを図示する。一部の事例では、コンピューティングシステム110は、第一のカメラ170および/または第二のカメラ180によって生成された画像またはその他のカメラデータを使用して、ロボット150の操作を制御するか、ロボット150の動作を制御するための命令を実施/実行するように構成されうる。例えば、コンピューティングシステム110は、ロボット150を制御して、ロボット150が第一のカメラ170および/または第二のカメラ180によって生成されるカメラデータに基づいて、積み重ねられた箱またはその他の倉庫の物体を荷下ろしする脱パレット化をするように構成されてもよい。
一実施形態において、コンピューティングシステム110は、ロボット150ならびに第一のカメラ170および/または第二のカメラ180と有線又は無線通信によって通信するように構成されうる。例えば、コンピューティングシステム110は、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェース、イーサネットインターフェース、Bluetooth(登録商標)インターフェース、IEEE802.11インターフェース、又はそれらのいかなる組み合わせを介して、ロボット150、第一のカメラ170及び/又は第二のカメラ180と通信するように構成されうる。一実施形態において、コンピューティングシステム110は、周辺構成要素相互接続(PCI)バスなどのローカルコンピュータバスを介して、ロボット150及び/又はカメラ170/180と通信するように構成されうる。一実施形態において、コンピューティングシステム110、及びカメラ170/180は同じ施設(例えば、倉庫)に位置する。一実施形態において、コンピューティングシステム110は、ロボット150及びカメラ170/180から離れていてもよく、ネットワーク接続(例えば、ローカルエリアネットワーク(LAN)接続)を介してロボット150及びカメラ170/180と通信するように構成されてもよい。
一実施形態において、図1Cのコンピューティングシステム110は、ロボット150から分離していてもよく、上で論じた無線又は有線接続を介してロボット150と通信してもよい。例えば、コンピューティングシステム110は、有線接続又は無線接続を介して、ロボット150及びカメラ170/180と通信するように構成される、独立型コンピュータであってもよい。一実施形態において、図1Cのコンピューティングシステム110は、ロボット150の不可欠な構成要素であってもよく、上で論じたローカルコンピュータバスを介して、ロボット150の他の構成要素と通信してもよい。場合によっては、コンピューティングシステム110は、ロボット150のみを制御する、専用制御システム(専用コントローラーとも呼ばれる)であってもよい。他の場合には、コンピューティングシステム110は、ロボット150を含む、複数のロボットを制御するように構成されてもよい。
図2は、コンピューティングシステム110のブロック図を描写する。ブロック図に示すように、コンピューティングシステム110は、制御回路111、通信インターフェース113、及び非一時的コンピュータ可読媒体115(例えば、メモリまたはその他の記憶デバイス)を含みうる。一実施形態において、制御回路111は、一つ以上のプロセッサ、プログラマブル論理回路(PLC)若しくはプログラマブル論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又はいかなる他の制御回路を含みうる。
一実施形態において、通信インターフェース113は、図1A〜図1Cのカメラ170/180および/または図1Cのロボット150と通信するよう構成される、一つ以上の構成要素を含みうる。例えば、通信インターフェース113は、有線又は無線プロトコルによって通信を行うように構成される通信回路を含みうる。例として、通信回路は、RS−232ポートコントローラー、USBコントローラー、イーサネットコントローラー、IEEE802.11コントローラー、Bluetooth(登録商標)コントローラー、PCIバスコントローラー、いかなる他の通信回路、又はそれらの組み合わせを含みうる。
一実施形態において、非一時的コンピュータ可読媒体115は、コンピュータメモリなどの情報記憶デバイスを含みうる。コンピュータメモリは、例えば、ダイナミックランダムアクセスメモリ(DRAM)、ソリッドステートの統合メモリ(solid state integrated memory)、及び/又はハードディスクドライブ(HDD)を含んでもよい。場合によっては、カメラ視野内の遮蔽を決定することは、非一時的コンピュータ可読媒体115上に記憶される、コンピュータ実行可能命令(例えば、コンピュータコード)によって実施されてもよい。そのような場合には、制御回路111は、カメラ視野内の遮蔽を検出するよう、コンピュータ実行可能命令を実行する(例えば、図4Aおよび図4Bに示すステップ)ように構成される、一つ以上のプロセッサを含んでもよい。一実施形態では、非一時的コンピュータ可読媒体は、カメラ170/180によって生成され、カメラ170/180から直接的または間接的に受信されたカメラデータを保存するように構成されうる。こうした実施形態では、コンピューティングシステム110は、非一時的コンピュータ可読媒体115からカメラデータを受信またはその他の方法でアクセスするように構成されうる。一部の事例では、非一時的コンピュータ可読媒体115は、より詳細に以下で論じる物体認識テンプレートを保存しうる。
図3Aは、コンピューティングシステム110がカメラ視野の遮蔽を検出するためのシステム200の一部である実施例を図示する。システム200は、システム100/100Aの実施形態であってもよく、カメラ170の実施形態であってもよい図1A〜1Bのコンピューティングシステム110ならびにカメラ270を含んでもよい。図3Aに示すように、カメラ270(第一のカメラ270とも呼ばれてよい)は、コンピューティングシステム110と通信してもよく、視野(カメラ視野とも呼ばれる)272を持ちうる。カメラ視野272は、図3Aに図示するように、仮想ピラミッドを形成するか、または円錐などの他の形状を形成しうる。カメラ視野272の角錐、円錐、またはその他の形状の頂点は、カメラ270のレンズまたは画像センサー(ある場合)の位置など、カメラ270に位置しうる。
一実施形態では、カメラ270は、カメラ視野272の中に少なくとも部分的にある一つ以上の物体を捕捉する、またはより一般的には、一つ以上の物体を表すカメラデータを生成するように構成されうる。例えば、図3Aは、少なくとも部分的にカメラ視野272にある複数の物体251〜253のスタック250を図示する。図3Aの実施例では、複数の物体は、第一の物体251、第二の物体252、および第三の物体253を含む。物体251〜253は、例えば、脱パレット化される箱、または任意の他の物体としうる。一実施形態では、スタック250は複数の層を含んでもよい。例えば、スタック250は、第一の物体251および第三の物体253によって形成される第一の層、ならびに第二の物体252によって形成される第二の層を含み得る。第二の層の物体(例えば、252)は、第一の層の少なくとも一つの物体(例えば、253)上に積み重ねられてもよい(例えば、第二の物体252は、第三の物体253の上部に積み重ねられてもよい)。こうした配置では、第二の層の一つ以上の物体(例えば、252)は、第二の層がカメラ270と第一の層の間に配置されるため、カメラ270と第一の層の一つ以上の物体(例えば、251)との間の距離に対してカメラ270に近い場合がある。例えば、図3Aは、第二の物体252の表面252A(例えば、トップ面)にとって、カメラ270に対するZ1の奥行き値を示し、奥行き値は、カメラ270と表面252Aとの間の距離を意味しうる。表面251Aに対するZ1の奥行き値は、Z2の奥行き値よりも小さくてもよく、Z2の奥行き値は、第一の物体の表面251A(例えば、トップ面)の奥行き値および/または第三の物体253の表面253Aの奥行き値であってもよい。図3Aはさらに、Z3の奥行き値を示し、Z3の奥行き値は、例えば、スタック250が配置される床、または、カメラ270から遠いスタック250の別の層(例えば、より低い層)表面の奥行き値であってもよい。
一実施形態では、カメラ270によって生成されるカメラデータは、スタック250の構造を記述することができ、スタック250の積み重ね構造とも呼ばれ得る。積み重ね構造は、スタックの物体(物体構造とも呼ばれる)の少なくとも構造から形成されてもよい。例えば、スタック250の積み重ね構造は、少なくとも第一の物体251(第一の物体251の構造を意味する)、第二の物体252の物体構造、および第三の物体253の物体構造の少なくとも物体構造から形成されてもよい。一部の事例では、カメラデータは、カメラ270に対するスタック250の一つ以上の表面上の位置のそれぞれの奥行き値を記述する3D情報を有する積み重ね構造を記述しうる。例えば、3D情報は、スタック250の一つ以上の表面(例えば、251A、252A、253A)上のそれぞれの位置、またはより具体的にはスタック250の積み重ね構造の一つ以上の表面を記述する複数の3Dデータ点(3D座標)を含みうる。スタック250は物体251〜253から形成されるため、複数の3Dデータ点はまた、物体251〜253の一つ以上の表面上のそれぞれの位置、またはより具体的にはその物体構造のそれぞれの位置を描写しうる。複数の3Dデータ点は、例えば、これらの位置に対するZ1、Z2、またはZ3の奥行き値を示してもよい。一部の事例では、カメラデータは、スタック250の外観を捕捉またはその他の方法で表示する画像などの2D情報を含みうる。画像は、より詳細に以下で論じるように、積み重ね構造および/または物体構造の特徴(例えば、角または端)を示してもよい。
一実施形態では、システム200は二つ以上のカメラを有してもよい。例えば、図3Bは、システム100/100A/100B/200の実施形態としうるシステム200Aの例を示す。システム200Aは、カメラ270およびカメラ280を含み、これはそれぞれ第一のカメラ270および第二のカメラ280とも呼ばれうる。第一のカメラ270は、図1A〜図1Cの第一のカメラ170の実施形態であってもよく、第二のカメラ280は、図1B〜1Cの第二のカメラ180の実施形態であってもよい。図3Aと同様に、第一のカメラ270は、カメラ視野272を持ちうる。第二のカメラ280は、少なくとも部分的にカメラ視野272と重複する第二のカメラ視野282を持ちうる。一部の態様では、第一のカメラ270のカメラ視野272は、第一のカメラ270および第二のカメラ280がスタック250に対する積み重ね構造の実質的に同一の部分を取り込むカメラデータをそれぞれ生成しうるように、第二のカメラ280のカメラ視野282と実質的に重なりうる。一実施形態では、第一のカメラ270および第二のカメラ280は、異なるタイプのカメラであってもよい。例えば、第一のカメラ270は、3Dカメラであってもよく、第二のカメラ280は2Dカメラであってもよく、または逆であってもよい。他の実施形態では、第一のカメラ270および第二のカメラ280は、同じタイプのカメラであってもよい。
一実施形態では、コンピューティングシステム110は、第一のカメラ270と第二のカメラ280との間の空間的関係(例えば、相対位置および配向)を記述する情報にアクセスまたはその他の方法で受信するように構成されてもよい。例えば、この情報は、コンピューティングシステム110によってあらかじめ決定されていてもよく(例えば、ステレオカメラ較正動作を介して)、あるいは手動であらかじめ決定されてコンピューティングシステム110または別の装置の非一時的コンピュータ可読媒体115に保存されていてもよい。一例として、情報は、第一のカメラ270の座標系と第二のカメラ280の座標系との間の並進および回転を記述する変形マトリクスであってもよい。一部の事例では、コンピューティングシステム110は、共通座標システムなどの共通の基準フレームで第一のカメラ170によって生成されるカメラデータと第二カメラ280によって生成されるカメラデータを配置するように、第一のカメラ270と第二のカメラ280との間の空間的関係に関する情報を使用するように構成されてもよい。例えば、以下で詳細に論じるように、コンピューティングシステムが積み重ね構造の特徴の位置を決定するために第二のカメラ280からのカメラデータを使用している場合、コンピューティングシステム110は、カメラ280の基準フレームと共通基準フレームの間の差を補正するように構成されてもよい。一部の事例では、共通基準フレームは、第一のカメラ270などのカメラの一つの基準フレームであってもよい。
一実施形態では、第一のカメラ270および第二のカメラ280は、実質的に固定された空間的関係を有してもよい。例えば、図3Bは、第一のカメラ270および第二のカメラ280が両方とも固定的に取り付けられる取付構造202を図示する。固定された取付けは、相対的位置および配向の観点から、第一のカメラ270および第二のカメラ280を相互に対して固定させる。
一実施形態では、カメラの視野(例えば、272)の位置は、その位置とカメラ(例えば、270)の間の視線が、物体またはカメラの視野内のその一部によって遮断されうるか、ほとんど遮断されうるため、視界から塞がれてもよい。言い換えれば、物体またはその一部は、その位置、または位置を囲む領域の一部分を、カメラによって見ること、または近づいてそのようにすることを妨げうる。一実施形態では、物体は、その位置についての情報を検出するために使用されうる光または他の信号がカメラに直接的に到達することを防ぐか、または信号を著しく歪ませうる。図3Aおよび3Bにおいて、スタック250の一部分、またはより具体的には積み重ね構造の一部分は、積み重ね構造の別の部分によってカメラ270に対して塞がれうる。例えば、図3Bに示すように、第一の物体251の表面251Aにある領域251Aの領域251A−1または第三の物体253Aの表面253A1の領域253A−1にある位置は、第二の物体252によってカメラ270から塞がれてもよく、またはより具体的には領域252A−1によって占められるその一部分によって塞がれてもよい。一部の実例では、遮蔽は、カメラ270ならびにカメラ270に対するスタック250の物体251〜253および相互に対する位置決めに起因しうる。遮蔽は、カメラ270によって生成されたカメラデータに、スタック250の不完全な記述、またはより具体的にはその積み重ね構造の不完全な記述を提供させうる。例えば、カメラ270によって生成されたカメラデータが複数の3Dデータ点を含む場合、これらの3Dデータ点は、領域251A−1および領域253A−1に関する情報をほとんど提供できない。カメラ270によって生成されたカメラデータが2D画像を含む場合、2D画像は、領域251A−1および領域253A−1を表示できないか、そうでなければ表すことができない。上記の考察は、カメラ270に対する位置の遮蔽に関連するが、図3Bのスタック250の積み重ね構造の一つ以上の位置も、カメラ280に対して塞がれる可能性がある。
一実施形態では、カメラの視野内の一つ以上の位置の遮蔽は、ロボットの相互作用が、例えば、ロボットに対する物体の位置、サイズ、および/または配向を記述するカメラデータに依存しうるため、視野の物体とのロボットの相互作用に影響を与えうる。一部の事例では、ロボットの相互作用は、視野内の物体を認識するために物体認識を実行することを伴い、遮蔽は物体認識の精度に影響を与えうる。したがって、本明細書の実施形態の一部の態様は、カメラ視野内の遮蔽を検出またはその他の方法で決定することに関する。このような決定は、例えば、カメラの視野に遮蔽があったときに実行された物体認識を評価し、物体認識がどのように実行されるかを制御する、かつ/またはカメラ視野内の物体とのロボットの相互作用を制御するために使用されうる。図4Aおよび4Bは、カメラ視野内の遮蔽を決定するための方法400の例を示す。方法400は、図1A〜1Cおよび図2のコンピューティングシステム110の制御回路111などのコンピューティングシステムによって実施されてもよい。
一実施形態では、制御回路111は、コンピューティングシステム110の通信インターフェース113が少なくとも一つのカメラと通信している時に方法400を実行するように構成されてもよく、少なくとも一つのカメラは、第一のカメラ視野(例えば、272)を有する第一のカメラ(例えば、170/270)を含む。一例として、方法400は、カメラ270/280と通信する第一のカメラ270、第二のカメラ280、およびコンピューティングシステム110が関与する、図3A、3B、5A〜5D、6A〜6Dおよび7A〜7Cに示す状況に対して実施されうる。別の実施例では、方法400は、少なくとも一つのカメラが第一のカメラ270を含み、第二のカメラ280が存在しない状況のために実施されうる。
一実施形態では、方法400は、複数の物体を有するスタックが第一のカメラ(例えば、270)の第一のカメラ視野(例えば、272)にある時にさらに実施されうる。例えば、制御回路111は、例えば、図3A、3B、5Aおよび6Aの物体251〜253のスタック250が、第一のカメラ270の第一のカメラ視野272にある時、または図7Aの物体751〜753のスタック750が、第一のカメラ270の第一のカメラ視野272内にある時、方法400を実行しうる。上述のように、図5Aおよび6Aのスタック250の積み重ね構造は、少なくとも第一の物体251の物体構造から(物体構造は、物体の構造を意味する)、ならびに第二の物体252の物体構造および第三の物体253の物体構造から形成されてもよい。同様に、図7Aのスタック750の積み重ね構造は、少なくとも第一の物体751の物体構造、ならびに第二の物体752の物体構造および第三の物体753の物体構造から形成されてもよい。
一実施形態では、方法400は、ステップ402で始まるか、またはその他の方法でステップ402を含むことができ、制御回路111は、第一のカメラ視野(例えば、272)を有する第一のカメラ(例えば、170/270)を含む少なくとも一つのカメラによって生成されたカメラデータを受信し、そのカメラデータは、スタック(例えば、図5A、6Aおよび7Aの250/750)の積み重ね構造を記述し、その積み重ね構造はスタックの構造を参照しうる。一部のシナリオでは、少なくとも一つのカメラは、第一のカメラ(例えば、170/270)および第二のカメラ(例えば、180/280)を含みうる。こうしたシナリオでは、ステップ402で制御回路によって受信されるカメラデータは、第一のカメラ(例えば、170/270)によって生成されるカメラデータと、第二のカメラ(例えば、180/280)によって生成されるカメラデータの両方を含みうる。
上述のように、一部の事例では、ステップ402で制御回路111によって受信されるカメラデータは、第一のカメラ視野の場面に関する奥行き情報を含む3D情報を含むことができる。奥行き情報は、例えば、積み重ね構造上のそれぞれの位置の奥行き値を示してもよく、奥行き値は第一のカメラ(例えば、270)に関連しうる。一部の事例では、奥行き情報は、奥行き値を記述する複数の3Dデータ点を含みうる。たとえば、複数の3Dデータ点の各々は、スタック(積み重ね構造の表面と呼ばれる場合もある)の表面の対応する位置を記述する[X Y Z]T座標などの3D座標であってもよい。この例では、3Dデータ点のZ−構成要素は、3Dデータ点によって表される対応する位置の奥行き値であってもよい。一部の事例では、複数の3Dデータ点は、スタック(例えば、250/750)の積み重ね構造の一つ以上の表面上のそれぞれの位置を記述する点群を形成しうる。さらに上述のように、一部の場合、ステップ402で受信したカメラデータは、スタック(例えば、250/750)の2D画像を含むことができ、またはより具体的には積み重ね構造の2D画像を含むことができる。2D画像は、例えば、ピクセル座標[u v]Tに対応する複数のピクセルを含みうる。
一実施形態では、方法400は、制御回路111が少なくとも一つのカメラによって生成されるカメラデータに基づいて、(オブジェクトの標的特徴とも呼ばれうる)物体に対する物体構造の標的特徴またはその上に配置される標的特徴を識別しうる、ステップ404を含みうる。一例として、物体構造は、図5Aおよび6Aの第一の物体251の構造、または図7Aの第一の物体751の構造であってもよい。
一実施形態では、標的特徴は、コンピューティングシステム110によって使用されて、物体(例えば、図5Aの251または図7Aの751)に対する物体認識を実行し、かつ/または物体とのロボットの相互作用を計画する物体の任意の特徴(例えば、特徴)であってもよい。以下でより詳細に論じるように、一部の場合に、制御回路111は、例えば、物体構造のサイズ(例えば、寸法)、物体構造の形状、および/または物体構造の表面上に現れる視覚的特徴を記述しうる物体認識テンプレートの情報に基づいて、標的特徴を識別するように構成されてもよい。
一実施形態では、(物体の標的特徴とも呼ばれうる)物体構造の標的特徴またはその上に配置される標的特徴は、物体の物体構造の角、物体構造の縁、物体構造の表面上に配置された視覚的特徴、または物体構造の表面の輪郭のうちの少なくとも一つとしうる。上記の特徴はまた、物体の角、物体の縁、物体の表面上に配置された視覚的特徴、または物体の表面の輪郭と呼ばれることもある。
より具体的には、ステップ404で標的特徴を識別する一部の実施形態は、標的特徴として、図5Aの第一の物体251に対する物体構造の角251Bなどの物体構造の角(第一の物体251の角251Bとも呼ばれる)を識別することを含み得る。一部の事例では、コンピューティングシステム110の制御回路111は、第一のカメラ270によって生成されるカメラデータおよび/または図5Aの第二のカメラ280によって生成されるカメラデータからの3D情報に基づいて、角251Bを識別するように構成され得る。図5Bは、図3A、3Bおよび5Aのカメラ270(またはカメラ280)のカメラ視野272(または282)の一つ以上の表面上の位置のそれぞれの奥行き値を示す、複数の3Dデータ点を含む3D情報の実施例を提供する。例えば、複数の3Dデータ点は、カメラ270/280に対する第二の物体252の表面252A上の一つ以上の位置(図5Bにおける黒円によって示される)のそれぞれに対して、Z1の奥行き値を示す3Dデータ点の第一のセットを含みうる。複数の3Dデータ点は、カメラ270/280に対する第一の物体251の表面251Aおよび第三の物体253の表面253A上の一つ以上の位置(図5Bの白円によって示される)のそれぞれに対して、Z2の奥行き値を示すデータ点の第二のセットをさらに含みうる。複数の3Dデータ点は、例えば、図5Aのスタック250を囲む床、または第一の物体251および第三の物体253が配置されるその他任意の表面に対応しうる、一つ以上の追加的な表面の一つ以上の位置のそれぞれに対するZ3の奥行き値を示す3Dデータ点の第三のセットをさらに含みうる。上述のように、複数の3Dデータ点の各々は、一部の実施形態では、[X Y Z]などの3D座標であってもよい。こうした実施形態では、奥行き値は、例えば、3D座標のZ構成要素によって示されうる。
一実施形態では、制御回路111は、図5Bの複数の3Dデータ点に基づいて、凸角または融合角を識別することに基づいて、角251Bを識別するように構成され得る。融合角または融合角を特定することについては、「Method and Computing System for Object Identification」と題する米国特許出願第16/578,900号に詳細に記載されており、参照によりその全体が本明細書に組み込まれる。一実施形態では、制御回路111は、領域の4分の1の実質的に第一の奥行き値および領域の残りの4分の3に対する第二の奥行き値(例えば、より高い奥行き値)を有する領域を示す3Dデータ点を識別することによって、角251Bを識別するように構成されうる。一部の事例では、角251Bは、領域の中心として識別されうる。
一実施形態では、角251Bを識別することは、図5Bに示す通り、カメラデータに基づく座標[X Y Z]Tを決定するなど、その位置を決定することを含み得る。一部の事例では、制御回路111は、上述のように、共通の基準フレームに対する座標を決定してもよい。一例として、共通の基準フレームは、図5Aの第一のカメラ270の座標系であってもよい。一部の場合では、座標[X Y Z]Tが第一のカメラ270によって生成されたカメラデータに基づく場合、座標は既に共通の基準フレーム内にあってもよい。このような場合、座標[X Y Z]Tは、ステップ406などの方法400の他のステップに使用されてもよい。一部の場合では、座標[X Y Z]Tが最初に、図5Aの第二のカメラ280によって生成されたカメラデータに基づく場合、座標は最初に第二のカメラ280の基準フレーム(例えば、座標系)に対して表示されうる。こうした状況では、制御回路111は、第一のカメラ270の基準フレームと第二のカメラ280の基準フレームとの間の位置および/または配向の差異を考慮する調整された座標[X’Y’Z’]Tを生成するように構成されてもよい。例えば、制御回路111は、変形マトリックスを座標[X Y Z]Tに適用することによって、調整された座標[X’Y’Z’]Tを生成するように構成されてもよく、変形マトリクスは、上述のように、第一のカメラ270と第二のカメラ280との間の空間的関係を記述するものである。一部の実例では、第一のカメラ270および第二のカメラ280は同一平面上であってもよく、これによりZ’はZと等しくなりうる。上述の例では、調整された座標[X’Y’Z’]Tは、ステップ406などの方法400の他のステップで使用されてもよい。
一実施形態では、コンピューティングシステム110の制御回路111は、2D情報に基づいて、図5Aの角251Bを識別するように構成することができ、2D情報は、図5Aの第一のカメラ270によって生成されたカメラデータまたは図5Aの第二のカメラ280によって生成されたカメラデータによって生成されうる。例えば、第二のカメラ280は、一部の実例では、2D画像を生成するように構成される2Dカメラであってもよい。図5Cは、図5Aのスタック250の実施例2D画像を示す。この例では、第一の物体251の物体構造の表面251Aと、第二の物体252の物体構造の表面252Aと、第三の物体253の物体構造の表面253Aは、2D画像に現れる。制御回路111は、例えば、角251Bが画像内に現れ、ピクセル座標を3D座標[X Y Z]Tに変換するピクセル座標[u v]Tを決定することなどによって、図5Cの2D画像から角251Bを識別するように構成され得る。一部の場合では、ピクセル座標[u v]Tは、画像内の二本の線の間の交点として識別されてもよく、二つの線は、第一の物体251の物体構造の二つのそれぞれの外側端を表す。一実施形態では、ピクセル座標[u v]Tを3D座標[X Y Z]Tに変換することは、例えば、第一のカメラ270または第二のカメラ280など、2D画像を生成したカメラの逆射影行列K−1(および/または任意のその他のカメラ較正情報)に基づいてもよい。一部の事例では、変換は、同じカメラによって、または異なるカメラによって生成される3D情報にさらに基づいてもよい。一部の実例では、制御回路111は、上述のように、共通の基準フレーム内の3D座標を表示するように3D座標[X Y Z]Tをさらに調整するように構成されてもよい。
上述のように、ステップ404で標的特徴を識別する一部の実施形態は、図6Aの第一の物体251に対する物体構造の縁251Cなど(これも第一の物体251の縁251Cと呼ばれうる)物体構造の縁を標的特徴として特定することを含みうる。一部の事例では、コンピューティングシステム110の制御回路111は、3D情報に基づいて、縁251Cを識別するように構成することができ、縁251Cは、図6Aの第一のカメラ270によって生成されたカメラデータおよび/または図6Aの第二のカメラ280によって生成されたカメラデータからのものとしうる。例えば、図6Bは、複数の3Dデータ点を含む3D情報を示す。図6Bに示す複数の3Dデータ点は、図5Bのものと実質的に同一であってもよい。図6Bの実施例では、制御回路111は、3D情報に基づいて、および物体認識テンプレートに基づいて、第一の物体251の物体構造の縁251Cを識別するように構成されうる。物体認識テンプレートは、例えば、第一の物体251の物体構造のサイズを記述することによって、第一の物体251に対する物体認識を容易にすることができ、かつ/または物体認識を実施するために使用されうる第一の物体251の他の特徴を記述する。例えば、物体認識テンプレートは、第一の物体251の物体構造が長さLおよび幅Wを有していることを示してもよく、こうした例では、制御回路111は、例えば、複数の3Dデータ点に基づいて、図6Aおよび6Bの外側縁251Dを識別し、物体認識テンプレートで識別される、物体構造の幅Wだけ外側縁251Dからオフセットされた一組の位置(例えば、[X1 Y1 Z1]Tおよび[X2 Y2 Z2]T)として縁251Cを識別することによって、図6Bの縁251Cを識別するように構成されてもよい。一部の事例では、制御回路111は、奥行き値の不連続性(例えば、図3Aに図示した通りZ2〜Z3の不連続性)がある一組の位置を決定することによって、図6Aの外側縁251Dを識別するように構成されうる。
一部の事例では、コンピューティングシステム110の制御回路111は、2D情報に基づいて、縁251Cを識別するように構成することができ、縁251Cは、図6Aの第一のカメラ270によって生成されたカメラデータおよび/または図6Aの第二のカメラ280によって生成されたカメラデータからのものとしうる。例えば、図6Cは、図6Aのスタック250の2D画像を示す。図6Cの2D画像は、図5Cのものと実質的に同一であってもよい。一実施形態では、制御回路111は、縁251Cが図6Cの画像内に現れる一つ以上のピクセル座標を2D画像から識別するように構成され得る。例えば、制御回路111は、縁251Cの第一のエンドポイントが図6Cの2D画像に現れる位置を表す第一のピクセル座標[u1 v1]Tを識別することができ、縁251Cの第二のエンドポイントが2D画像に現れる位置を表す第二のピクセル座標[u2 v2]Tを識別することができる。一部の事例では、制御回路111は、図5Cに関連して上述したように、第一のピクセル座標[u1 v1]Tおよび第二のピクセル座標[u2 v2]Tを第一の3D座標[X1 Y1 Z1]Tおよび第二の3D座標[X2 Y2 Z2]Tにそれぞれ変換するように構成されてもよい。
上述の通り、ステップ404で標的特徴を識別する一部の実施形態は、標的特徴として、物体構造の表面上に配置された視覚的特徴を識別することを含みうる。一実施形態では、視覚的特徴は、グラフィカル要素、またはその他任意の視覚的マーキングを含みうる。例えば、図7Aは、第一の物体751の物体構造の表面751A上の視覚的特徴751Bを示す(これは第一の物体751の表面751A上に配置された視覚的特徴751Bとも呼ばれうる)。より具体的には、図7Aは、物体751〜753のスタック750が、第一のカメラ270のカメラ視野272、および/または第二のカメラ280のカメラ視野282内にある状況を描写する。第一の物体751および第三の物体753は、スタック750の第一の層を形成してもよく、第二の物体752は、スタック750の第二の層を形成してもよく、第一の物体751上および第三の物体753上に積み重ねてもよい。上述のように、第一の物体751は、第一の物体751の表面751A上に配置される視覚的特徴751Bを有してもよい。図7Aの実施例では、視覚的特徴751Bは、ブランド名または商標(例えば、「A」)を表示するロゴであってもよく、第一の物体751の物体構造の表面751A上に印刷されてもよく、またはそれに取り付けられてもよい。
一実施形態では、コンピューティングシステム110の制御回路111は、2D情報(例えば、2D画像)に基づいて視覚的特徴751Bを識別するように構成されてもよく、これは、図7Aの第一のカメラ270によって生成されるカメラデータおよび/または図7Aの第二のカメラ280によって生成されるカメラデータからのものであってもよい。例えば、図7Bは、スタック750の2D画像に見られる視覚的特徴751Bを示す。より具体的には、第一の物体751の表面751A(例えば、トップ面)、第二の物体752の表面752Aおよび第三の物体753の表面753Aは、図7Bに示す画像に現れ得る。
一実施形態では、制御回路111は、図7Bの2D情報(例えば、2D画像)の任意の部分が画定された視覚的特徴の外観またはその他の特性に一致するかどうかを判断することによって、視覚的特徴751Bを識別するように構成されうる。例えば、制御回路111は、図7Bの2D画像の任意の部分が、画定された視覚的特徴の外観の形状、マーキング、パターン、色、または任意の他の態様に一致するかどうかを認識するように試みるためにパターン認識を実行し得る。一実施形態では、画定された視覚的特徴の情報は、非一時的コンピュータ可読媒体115内に保存されてもよい。一実施形態では、画定された視覚的特徴の情報は、物体認識テンプレートに保存されてもよい。上述のように、物体認識テンプレートは、物体または物体のカテゴリの物体構造のサイズ(例えば、寸法)、物体構造の形状、および/または物体構造の表面上に配置された視覚的特徴などの物体構造の表面の外観など、その特徴を描写することによって特定の物体または物体のカテゴリに対する物体認識を容易にしうる。例えば、物体認識テンプレートは、第一の物体751の表面(例えば、751A)上または第一の物体751が属する物体のカテゴリの表面上に現れる視覚的特徴としての「A」ロゴを記述する情報を含み得る。こうした例では、制御回路111は、図7Bの2D画像の任意の部分が、「A」ロゴを描写するための物体認識テンプレートに格納された情報と一致するかどうかを判断することによって、視覚的特徴751Bを識別するように構成され得る。
一実施形態では、ステップ404で標的特徴を識別することは、標的特徴として、物体構造の表面の輪郭を識別することを含みうる。輪郭は、物体構造の表面の境界を記述しうる。例えば、制御回路111は、第一の物体751に対する物体構造の表面751Aのすべての四つの縁751C〜751Fを識別することによって、図7Aの第一の物体751の物体構造の輪郭を識別し得る。言い換えれば、四つの縁751C〜751Fは、表面751Aの輪郭を形成しうる。一部の事例では、制御回路111は、物体認識テンプレートに記述された定義されたサイズなど、第一の物体751の物体構造の定義されたサイズに基づいて、縁751C〜751Fを識別し得る。定義されたサイズは、例えば、長さおよび幅などの物体構造の寸法を示しうる。例えば、制御回路111は、カメラ270/280によって生成されるカメラデータの2D情報または3D情報に基づいて、縁751C〜751Fの少なくとも一つを識別するように構成されてもよく、第一の物体751の物体構造の定義されたサイズに基づいて、縁751C〜751Fの残りの部分を識別してもよい。
図4A〜4Bを再び参照すると、方法400は、制御回路111が標的特徴と同一平面上にあり、その境界が標的特徴を囲む2D領域を決定するステップ406をさらに含みうる。2D領域は、例えば、矩形形状(例えば、正方形状)、円形形状、六角形状、またはその他任意の2D形状を有する2D領域であってもよい。一部の事例では、2D領域は、より詳細に以下で説明するように、遮蔽領域を決定するために使用されるため、遮蔽分析領域と呼ばれうる。
一例として、図5Aは、標的特徴として角251Bを図示し、角251Bと同一平面上にあり、その境界が角251Bを囲む2D領域520(例えば、正方形領域)を示す。より具体的には、角251Bは、第一の物体251の物体構造の表面251Aの角であってもよく、2D領域520は、その表面251Aと同一平面上であってもよい。さらに、角251Bは、2D領域520の内側に位置してもよい。2D領域520は、正方形の領域であってもよいが、例えば、矩形領域または円形領域となるように修正することができる。一部の事例では、制御回路111は、(i)定義されたサイズおよび(ii)角251Bに位置する中心を有する領域として2D領域520を決定しうる。
別の例として、図6Aは、上述のように標的特徴として縁251Cを図示し、第一の物体251の物体構造の縁251Cと同一平面上にあり、その境界は縁251Cを囲む2D領域620(例えば、矩形領域)を示す。より具体的には、縁251Cは、第一の物体251の物体構造の表面251Aの縁であってもよく、2D領域620は、表面251Aと同一平面上であってもよい。さらに、縁251Cは、2D領域620内に位置してもよい。一部の態様では、制御回路111は、(i)定義されたサイズおよび(ii)縁251C上に位置する中心を有する領域として、2D領域620を決定しうる。一部の実例では、2D領域620の中心は、縁251Cの中心であってもよい。
図7Aは、上述のように、視覚的特徴751Bとしておよび/または第一の物体751の物体構造の表面751Aの輪郭として標的特徴を図示する。図7Aの実施例では、制御回路111は、ステップ406の一部として、2D領域720(例えば、正方形領域)を決定しうる。2D領域720は、視覚的特徴751Bおよび表面751Aの輪郭と同一平面上であってもよい。さらに、2D領域720は、視覚的特徴751Bを囲み、表面751Aの輪郭も囲む境界を持ちうる。
一実施形態では、制御回路111は、例えば、非一時的コンピュータ可読媒体に格納された定義されたサイズに基づいて、2D領域520/620/720を決定するように構成され得る。定義されたサイズは、例えば、2D領域520/620/720の固定サイズとしうる。例えば、標的特徴が角(例えば、251B)である場合、角を囲み、それと同一平面上にある2D領域(例えば、520)は、例えば、2cm×2cm、または5cm×5cmの固定サイズを有する正方形領域としうる。一実施形態では、制御回路111は、標的特徴のサイズに基づいて、2D領域(例えば、620/720)のサイズを決定するように構成されてもよい。例えば、制御回路111は、図6Aの縁250Cの長さを乗算した比として、2D領域620の長さを決定するように構成され得る。別の実施例では、制御回路111は、第一の物体751の表面751Aの輪郭を形成する第一の縁(例えば、750C)の長さを乗算した比として2D領域720の長さを決定するように構成されてもよく、輪郭を形成する第二の縁(例えば、751E)の長さを乗算した比として2D領域720の幅を決定するように構成されてもよく、第二の縁は第一の縁と直角を成してもよい。2D 720領域は、異なる値を有するか、または同じ値を有する長さおよび幅を有してもよい。一部の事例では、比は、非一時的コンピュータ可読媒体115または他の場所に格納された定義された値であってもよい。一部の事例では、比は、制御回路111によって動的に定義されてもよく、または別の方法で決定されてもよい。
一実施形態では、制御回路111は、標的特徴が属する環境要因または物体構造の特徴のうちの少なくとも一つに基づいて、2D領域(例えば、520/620/720)のサイズを決定するように構成されうる。一部の事例では、環境要因は、例えば、カメラ(例えば、270/280)の環境内の照明の量、またはその視野(例えば、272/282)の場面を正確に検知するためのカメラの能力に影響を与えうるその他任意の状態を示しうる画像ノイズレベルを含みうる。一部の事例では、標的特徴が属する物体構造の特徴は、例えば、物体構造の形状または物体構造の表面のテクスチャのうちの少なくとも一つを含みうる。例えば、丸型形状を有する物体構造は、3Dカメラの動作に影響を与える可能性が高く、物体構造を描写するための3Dカメラによって生成される3D情報の正確性の低下を引き起こす可能性が高い。一部の実例では、表面のテクスチャは、表面の反射率を示しうる。例えば、より反射的な(例えば、より輝く)表面は、2Dカメラの動作に影響を与え、表面の外観を捕捉またはその他の方法で表現するための2Dカメラによって生成される2D情報の精度を低下させる可能性が高くなりうる。一実施形態では、2D領域(例えば、620/720)のサイズを決定することは、標的特徴の寸法を乗算する上で論じた比を決定することを含み得る。こうした実施形態では、比は、環境要因および/または物体構造の特徴に基づいて決定されうる。一実施形態では、制御回路111は、画像ノイズレベルが増加するにつれサイズが増加する関係に基づいて、2D領域(例えば、520/620/720)のサイズを決定するように構成されうる。一部の実例では、2D領域(例えば、520/620/720)のサイズを増加することは、遮蔽領域のサイズを増加させる可能性があり、これは以下に考察される。
図4A〜4Bを再び参照すると、方法は、制御回路111がステップ402の第一のカメラ(例えば、第一のカメラ270)の位置と2D領域の境界を接続することによって画定される3D領域を決定するステップ408を含むことができ、そこでは、3D領域が第一のカメラ視野(例えば、272)の一部である。一実施形態では、3D領域を定義するために使用される第一のカメラ(例えば、270)の位置は、第一のカメラの焦点、画像センサの角または中心など第一のカメラ270の画像センサ上の位置、または任意の他の位置であってもよい。一部の事例では、3D領域は、遮蔽分析に使用される第一のカメラ視野(例えば、272)の一部分であってもよく、分析視野と呼ばれてもよい。
ステップ408の実施例として、図5Aは、第一のカメラ270の位置および2D領域520の境界を接続することによって画定される実施例3D領域530を描写する。より具体的には、3D領域530は、カメラ270の位置を2D領域520の境界の四つのそれぞれの角に接続する線530A〜530Dによって画定されうる。一部の実例では、3D領域を決定することは、線530A〜530Dを表す情報を決定することを含み得る。
別の実施例では、図6Aは、第一のカメラ270の位置と2D領域620の境界を接続することによって画定される実施例3D領域630を描写する。3D領域630はまた、カメラ270の位置を2D領域620の境界に接続することによって画定されてもよく、より具体的には、カメラ270の位置から2D領域620のそれぞれの角へ延在する線630A〜630Dによって画定されうる。図7Aは、3D領域730が第一のカメラ270の位置と2D領域720の境界を接続することによって画定される実施例を提供する。より具体的には、3D領域720は、カメラ270の位置から2D領域720の四つのそれぞれの角へ線730A〜730Dを接続することによって画定されうる。一実施形態では、3D領域(例えば、530/630/730)は、対応する2D領域(例えば、520/620/720)が矩形領域(例えば、正方形領域)である時など、仮想ピラミッドを形成してもよい。他の実施形態では、3D領域は、第一のカメラ270の位置を円形の2D領域と接続することによって画定される仮想円錐など、任意の他の3D形状を形成してもよい。
図4A〜4Bを再び参照すると、方法400は、カメラデータおよび3D領域に基づいて、制御回路111が遮蔽領域のサイズ(例えば、区域)を決定するステップ412を含みうる。一実施形態では、遮蔽領域は、標的特徴と少なくとも一つのカメラの間に位置する積み重ね構造(ステップ402の)の領域であってもよく、3D領域(例えば、530/630/730)内である。より具体的には、遮蔽領域が標的特徴と第一のカメラの間に位置するように、遮蔽領域は、標的特徴と同一平面ではなく、標的特徴よりも少なくとも一つのカメラの第一のカメラ(例えば、270)に近い領域であってもよい。例えば、遮蔽領域は、標的特徴よりも高い領域であってもよい。塞閉領域は第一のカメラと標的特徴の間であり、3D領域(例えば、530/630/730)内であるため、標的特徴(例えば、251B/251C/751B)を遮断またはほとんど遮断する場所であってもよい積み重ね構造の一部分、または、第一のカメラ(例えば、270)によって見られる、標的特徴を囲む領域の一部分を表す。従って、遮蔽領域のサイズは、第一のカメラ視野(例えば、272)の遮蔽の評価に使用されうる。
ステップ412の実施例を図示するために、図5Dは、遮蔽領域570を図示する。より具体的には、遮蔽領域570は、スタック250の積み重ね構造の領域、より具体的には、第二の物体252の物体構造の表面252A(例えば、トップ面)の領域であってもよい。さらに、遮蔽領域570は、角251Bと第一のカメラ270の間に位置してもよく(図5Aおよび5Dの標的特徴である)、3D領域530内にあってもよい。上述のように、3D領域530は、第一のカメラ視野272(図3Aおよび3Bに図示)内に位置する仮想ピラミッドであってもよく、その境界が角251Bを囲む2D領域520に基づいて画定されてもよい。この例では、2D領域520は、第一の2D領域であってもよく、遮蔽領域570は、第一の2D領域と平行であり、かつ、3D領域530の仮想ピラミッド内にある第二の2D領域であってもよい。一部の実例では、遮蔽領域570は、(i)2D領域520と平行、および(ii)3D領域530の内側にある少なくとも領域を含みうる。
別の実施例では、図6Dは、縁251C(図6Aおよび6Dの標的特徴)とカメラ270の間に位置するスタック250の積み重ね構造の領域であり、3D領域630内にある遮蔽領域670を図示する。より具体的には、遮蔽領域670は、第二の物体252の表面252A上の領域であってもよく、領域は、3D領域630によって形成される仮想ピラミッド内であり、第一のカメラ270と縁251Cの間に位置する。図6Dの実施例では、遮蔽領域670は、2D領域620と平行であってもよい。図7Cは、図7Aおよび7C(例えば、視覚的特徴751Bまたは表面751Aの輪郭)と第一のカメラ270の間に位置するスタック750の積み重ね構造の領域である遮蔽領域770であり、3D領域730内にある。より具体的には、遮蔽領域770は、第二の物体752の表面752A上の領域であってもよく、領域は3D領域730によって形成される仮想期間内であり、第一のカメラ270と標的特徴との間に位置する。図7Cの実施例では、遮蔽領域770は、2D領域720と平行であってもよい。上述のように、一実施形態では、遮蔽領域570/670/770は、第二の物体252/752の表面252A/752Aなど、ステップ406で決定される2D領域520/620/720と平行な表面上にある領域であってもよい。一部の事例では、遮蔽領域570/670/770は、2D領域520/620/720と平行な一つ以上の表面上に制限されてもよい。一部の事例では、遮蔽領域570は、表面252A/752Aに垂直な表面などの一つ以上の別の表面まで延びうる(しかし、未だ3D領域530/630/730内に残る)。
一部の態様では、制御回路111は、例えば、第一のカメラ270によって生成されるカメラデータからの3D情報に基づいて、遮蔽領域(例えば、570/670/770)のサイズを決定しうる。3D情報は、例えば、カメラ270に対する標的特徴(例えば、表面251A/751A上の位置)よりも第一のカメラ270に近いスタックの積み重ね構造の一つ以上の表面上の一群の位置を識別する奥行き情報などを示しうる。制御回路111は、ステップ408で決定される位置の群内からの位置のどれが3D領域(例えば、530/630/730)内にあるかを決定し、その位置の群に基づいて遮蔽領域のサイズを決定することができる。
例えば、図5D、6D、および7Cの実施例では、制御回路111は、スタック250/750の第一の物体251/751の表面251A/751A(例えば、トップ面)、スタック250/750の第二の物体252/752の表面252A/752Aおよびスタック250/750の第三の物体253/753の表面253A/753Aなど、積み重ね構造の一つ以上の表面上のそれぞれの位置を表す複数の3Dデータ点(例えば、3D座標)を、カメラデータから、決定するよう構成されてもよい。この例では、制御回路111は、予想される奥行き値として、目標の特徴251B/251C/751Bに関連付けられるZ2の奥行き値をさらに決定しうる。例えば、標的特徴251B/251C/751Bに関連付けられた予想される奥行き値は、標的特徴251B/251C/751Bの3D座標のZ−構成要素(例えば、[X Y Z]T)であってもよく、3D座標は、上述のように共通の基準フレーム内にあってもよい。さらに、制御回路111は、Z2の予想される奥行き値に比べて第一のカメラ270により近い、3D領域530/630/730内である積み重ね構造の一つ以上の表面上のそれぞれの位置を表す、複数の3Dデータ点のサブセットをさらに決定しうる。サブセットは、標的特徴251B/251C/751Bとカメラ270の間の位置に関連付けられた3Dデータ点を表し、3D領域530/630/730内に位置する。この例では、サブセットは、スタック250/750の第二の物体252/752の物体構造の表面252A/752Aの位置に関連付けられた3Dデータ点であってもよい。
一部の態様では、制御回路111は、遮蔽領域の区域、遮蔽領域の寸法、またはそれらの任意の組み合わせを決定することによって、遮蔽区域(例えば、570/670/770)のサイズを決定しうる。一部の実例では、制御回路111は、上述した3Dデータ点のサブセットに基づいて、遮蔽領域(例えば、570/670/770)のサイズを決定するように構成されうる。例えば、遮蔽領域のサイズは、3Dデータ点のサブセットにおける3Dデータ点の数、または3Dデータ点のサブセットによって定義される領域の境界を決定すること、およびその領域をその区域を決定するため組み入れることに基づいてもよい。
一実施形態では、3Dデータ点のサブセットは、予想される奥行き値(例えば、Z2)を複数の3Dデータ点に関連付けられたそれぞれの奥行き値(例えば、Z1およびZ2)と比較することに基づいてもよい。例えば、サブセットは、i)少なくとも定義された差異閾値だけ期待される奥行き値(例えば、Z2)よりも小さいそれぞれの奥行き値(例えば、Z1))と関連付けられ、ii)3D領域(例えば、530/630/730)内にある、複数の3Dデータ点の中の3Dデータ点を識別することによって決定されうる。この例では、定義された差異閾値は、実際に同じ表面(例えば、251A)上にある位置の奥行き値のわずかな変動を引き起こしうる画像ノイズまたは表面欠陥を考慮しうる。したがって、標的特徴が位置する第一の表面よりも近い表面上に位置があるかどうかを判定するために、制御回路111は、位置の奥行き値が少なくとも定義された差異閾値だけ第一の表面の予想される奥行き値よりも小さいかどうかを判定することができる。
一実施形態では、制御回路111は、図7Dの遮蔽領域751Cなどの遮蔽領域のサイズを決定するように構成されうる。遮蔽領域(例えば、751C)は、図5Aおよび6Aに示す標的特徴751B、および/または標的特徴251B/251Cなどの標的特徴と同一平面である領域であってもよい。例えば、遮蔽領域751Cは、標的特徴751Bがその上に位置する表面751A上にあってもよい。一実施形態では、制御回路111は、第一のカメラ270に対して標的特徴751B(または図5Aおよび6Aの251B/251C)より第一のカメラ270に近いスタック750に対する積み重ね構造の縁または角を識別すること、第一のカメラ270の位置から積み重ね構造の縁または角に延びる平面(平坦な面または湾曲した面)を画定すること、標的特徴が位置する表面に対して平面を突き出すこと、および平面と表面との間の交差を決定することによって、遮蔽領域751Cを画定し得る。図7Dの実施例では、制御回路111は、標的特徴751Bよりも第一のカメラ270に近い積み重ね構造の縁として表面752Aの縁752Bを識別することができる。制御回路111は、第一のカメラ270の位置から縁752Bへ延在する平面740を画定し、その上で標的特徴751Bが位置する表面751Aに平面740を突出することができる。制御回路111は、平面740と表面751Aとの間の交点として線741をさらに決定し得る。この例では、線741は、遮蔽領域751Cの境界の一部を形成する縁としうる。一部の事例では、遮蔽領域751Cの境界は、縁751Eおよび751Fなど、標的特徴751Bがその上に位置する表面751Aの一つ以上の縁によってさらに形成されうる。一部の事例では、境界は、標的特徴751Bが位置する表面751Aと交差する第二の物体752の表面752Cなど、積み重ね構造の一つ以上の表面によってさらに形成されてもよい。
図4A〜4Bを再び参照すると、方法400は、制御回路111が遮蔽領域のサイズに基づいて、物体認識信頼パラメータの値を決定するステップ414をさらに含みうる。一部の事例では、物体認識信頼パラメータの値は、遮蔽領域のサイズと逆相関を持ちうる。例えば、遮蔽領域のサイズの増加によって、物体認識信頼パラメータの値が、実行されたまたは計画されている物体認識動作の精度の信頼の低下を示す方向へ変化させることになりうる。一実施形態では、制御回路111は、ステップ406で決定される遮蔽領域(例えば、570/670/770)のサイズと2D領域(例えば、520/620/720)のサイズとの間の比、またはその比の逆を決定することによって、物体認識信頼パラメータの値を決定するように構成されうる。一実施形態では、制御回路111は代替的に、または追加的に、ステップ406で決定された遮蔽領域のサイズと2D領域(例えば、520/620/720)のサイズとの間の比またはその比の逆に基づいて、遮蔽領域(例えば、図7Dの751C)のサイズに基づく物体認識信頼パラメータの値を決定することができる。
一部の事例では、物体認識信頼パラメータの値は、比が定義された遮蔽閾値を超えるかどうかに基づいてもよい。定義された遮蔽閾値は、図2の非一時的コンピュータ可読媒体115で予め定義された値であってもよく、あるいは動的に定義されるか、または制御回路111によってその他の方法で決定されてもよい。一部の事例では、制御回路111は、例えば、カメラ(例えば、270)の環境における照明の量、標的特徴が属する物体の形状、および/または物体の表面のテクスチャに基づいて、遮蔽閾値を動的に定義するように構成されうる。一部の事例では、制御回路111は、遮蔽閾値の代わりに、またはそれに加えて、ステップ406の2D領域(例えば、520/620/720)のサイズを調整しうる。例えば、物体認識動作の精度を低下させうる状態(例えば、撮像ノイズ、丸い物体、および/または光沢表面を有する物体)は、2D領域のサイズを増加することによって、および/または画定された遮蔽閾値を減少させることによって表現されうる。
一実施形態では、方法400はさらに、制御回路111が積み重ね構造とロボットの相互作用を制御するための動作を実行するステップ416を含み、物体認識信頼パラメータの値に基づいて動作を実行してもよい。一部の事例では、ステップ416の動作には、ロボット動作を起こすための移動コマンドの出力が関与しうる。移動コマンドは、例えば、信頼パラメータの値を、標的特徴のより少ない遮蔽を示す方法(例えば、減少方向に)、および/または物体認識動作においてより信頼性を示す方法で変化させるように決定されうる。例えば、制御回路111は、物体認識信頼パラメータの値をより少ない遮蔽を示す方向に変化させうる、図5Aおよび7Aのスタック250/750の第一の物体251/751または第二の物体252/752などのスタックの一部分の移動の方向を決定することができる。こうした実施例では、制御回路111は、スタックの部分についてのこうした動きの方向を引き起こすロボット動作を決定し、ロボット動作を起こすための移動コマンドを決定しうる。制御回路111は、通信インターフェース113を介して移動コマンドをさらに出力し得る。移動コマンドが図1Cのロボット150によって受け取られる場合、ロボット150は、移動コマンドに応答してスタックの一部を決定された方向に移動しうる。
一実施形態では、スタック250/750の積み重ね構造とのロボットの相互作用は、物体認識を行うことを含んで、ロボットの相互作用を容易にすることができ、物体認識は、上述の標的特徴(例えば、251B/251C/751B)に基づくことができ、かつ例えば、第一のカメラ270からのカメラデータに基づくことができる。こうした実施形態では、ロボットの相互作用を制御するための動作は、物体認識を再度実施することを含み、かつ/または信頼パラメータの値に基づいて、物体認識を再実行するかどうかを決定することを含みうる。一部の事例では、制御回路111は、物体認識が再実行された後に、ロボット動作をさらに決定しうる。一例として、制御回路111は、信頼パラメータの値が定義された信頼性閾値を下回る決定に応答して物体認識を再実行することを決定しうる。一部の実例では、定義された信頼性閾値は、定義された遮蔽閾値の逆関数、および/または定義された遮蔽閾値に対して反比例でありうる。一部の実例では、制御回路111は、信頼パラメータの値が、遮蔽領域(例えば、570/670/770)のサイズが高すぎることを示す場合、物体認識を再度実行するように決定してもよい。例えば、制御回路111は、遮蔽領域(例えば、570/670/770)のサイズと2D領域のサイズ(例えば、520/620/720)との間の比が定義された遮蔽閾値を超える場合、物体認識を再度実施するように決定しうる。
様々な実施形態の簡潔な説明
本明細書の開示の一態様は、通信インターフェースおよび制御回路を有するコンピューティングシステムを含む実施形態1に関する。この実施形態では、通信インターフェースは、第一のカメラ視野を有する第一のカメラを含む少なくとも一つのカメラと通信するように構成される。この実施形態における制御回路は、複数の物体を有するスタックが第一のカメラ視野内にあるとき、少なくとも一つのカメラによって生成されるカメラデータを受信するように構成され、カメラデータは、スタックに対する積み重ね構造を記述し、積み重ね構造は、複数の物体の第一の物体の少なくとも物体構造から形成される。さらに、この実施形態では、制御回路は、少なくとも一つのカメラによって生成されるカメラデータに基づいて、物体構造の標的特徴または物体構造上に配置された標的特徴を識別するように構成され、標的特徴は、目標構造の角、目標構造の縁、物体構造の表面上に配置された視覚的特徴、または物体構造の表面の輪郭のうち少なくとも一つである。この実施形態での制御回路はまた、標的特徴と同一平面上にあり、その境界が標的特徴を取り囲む二次元(2D)領域を決定して、三次元(3D)領域が第一のカメラ視野の一部である、第一のカメラと2D領域の境界を接続することによって画定される3D領域を決定し、カメラデータおよび3D領域に基づいて、標的特徴と少なくとも一つのカメラとの間に位置する積み重ね構造の領域であり3D領域内にある、遮蔽領域のサイズを決定し、遮蔽領域のサイズに基づいて、物体認識信頼パラメータの値を決定するように構成される。この実施形態の制御回路は、積み重ね構造とのロボットの相互作用を制御するための動作を実行するようにさらに構成され、物体認識信頼パラメータの値に基づいて当該動作が実施される。
実施形態2は、実施形態1のコンピューティングシステムを含む。実施形態2において、制御回路は、物体構造のサイズを描写する物体認識テンプレートの情報、または物体構造の表面上に現れる視覚的特徴を記述する情報に基づいて、標的特徴を識別するように構成される。
実施形態3は、実施形態1又は2のコンピューティングシステムを含む。実施形態3では、視覚的特徴は、物体構造の表面上に配置された画像であり、制御回路は、標的特徴として画像を識別するように構成される。
実施形態4は、実施形態1〜3のうちのいずれか一つのコンピューティングシステムを含む。実施形態4では、制御回路は、画像ノイズレベル、物体構造の形状、または物体構造の表面のテクスチャのうちの少なくとも一つに基づいて、2D領域のサイズを決定するように構成される。
実施形態5は、実施形態1〜4のうちのいずれか一つのコンピューティングシステムを含む。実施形態5において、標的特徴は物体構造の縁であり、制御回路は、2D領域を、(i)定義されたサイズおよび(ii)端上に位置する中心を有する領域として決定するように構成される。
実施形態6は、実施形態1〜4のうちのいずれか一つのコンピューティングシステムを含む。実施形態6において、標的特徴は物体構造の角であり、制御回路は、2D領域を、(i)定義されたサイズおよび(ii)角に位置する中心を有する領域として決定するように構成される。
実施形態7は、実施形態1〜6のうちのいずれか一つのコンピューティングシステムを含む。実施形態6において、3D領域は、第一のカメラ視野内に位置する仮想ピラミッドであり、境界が標的特徴を囲む2D領域は、第一の2D領域であり、遮蔽領域は、第一の2D領域と平行であり、かつ、仮想ピラミッド内にある第二の2D領域である。
実施形態8は、実施形態1〜7のうちのいずれか一つのコンピューティングシステムを含む。実施形態8では、制御回路は、カメラデータからの、積み重ね構造の一つ以上の表面上のそれぞれの位置を表す複数の3Dデータ点を決定すること、予想される奥行き値として、第一のカメラに対する標的特徴の奥行き値を決定すること、予想される奥行き値に比べて第一のカメラより近く、3D領域内にある積み重ね構造の一つ以上の表面上のそれぞれの位置を表す複数の3Dデータ点のサブセットを決定することによって遮蔽領域のサイズを決定するように構成され、サブセットは予想される奥行き値を複数の3Dデータ点と関連付けられたそれぞれの奥行き値と比較することに基づいて決定される。
実施形態9は、実施形態8のコンピューティングシステムを含む。実施形態9において、3Dデータ点のサブセットは、i)少なくとも定義された差異閾値だけ予想される奥行き値よりも小さいそれぞれの奥行き値と関連付けられる、ii)3D領域内にある3Dデータ点を、複数の3Dデータ点の中から識別することによって決定される。
実施形態10は、実施形態1〜9のいずれか一つのコンピューティングシステムを含み、実施形態10では、通信インターフェースが通信するように構成される第一のカメラは、カメラデータの一部として、積み重ね構造の一つ以上の表面上の位置に対するそれぞれの奥行き値を示す複数の3Dデータ点を生成するように構成された3Dカメラである。
実施形態11は、実施形態10のコンピューティングシステムを含む。実施形態11において、通信インターフェースが通信するように構成される少なくとも一つのカメラは、カメラデータの一部として、2D画像を生成するように構成される第二のカメラをさらに含み、制御回路は2D画像に基づいて標的特徴を識別するように構成される。
実施形態12は、実施形態1〜9のうちのいずれか一つのコンピューティングシステムを含む。実施形態12において、通信インターフェースが通信するように構成される第一のカメラは、2Dカメラであり、通信インターフェースが通信するように構成される少なくとも一つのカメラが、カメラデータの一部として、積み重ね構造の一つ以上の表面上の位置のそれぞれの奥行き値を表すための複数の3Dデータ点を生成するように構成された第二のカメラをさらに含む。
実施形態13は、実施形態1〜12のうちのいずれか一つのコンピューティングシステムを含む。実施形態13において、制御回路は、遮蔽領域のサイズと2D領域のサイズとの間の比を決定すること、およびその比に基づいて物体認識信頼パラメータの値を決定することによって、物体認識信頼パラメータの値を決定するように構成される。
実施形態14は、実施形態13のコンピューティングシステムを含む。実施形態14では、物体認識信頼パラメータの値は、比が定義された遮蔽閾値を超えるかどうかに基づいて決定される。
実施形態15は、実施形態1〜14のうちのいずれか一つのコンピューティングシステムを含む。実施形態15において、第一のカメラの位置は、第一のカメラの焦点である。
実施形態16は、実施形態1〜15のうちのいずれか一つのコンピューティングシステムを含む。実施形態16において、ロボットの相互作用を制御するための動作は、ロボット動作を起こすための移動コマンドを出力することを含み、ここで移動コマンドは、標的特徴のより少ない遮蔽を示す方法で物体認識信頼パラメータの値を変化させるように決定される。
実施形態17は、実施形態1〜16のうちのいずれか一つのコンピューティングシステムを含む。実施形態17において、制御回路は、カメラデータに基づいて標的特徴に対する物体認識を実行するように構成され、ロボットの相互作用を制御するための動作は、物体認識信頼パラメータの値に基づいて、物体認識を再度実行するかどうか決定することを含み、物体認識の再実行後にロボットの動きを決定することを含む。
様々な実施形態について上に記載してきたが、それらは本発明の図解及び例としてのみ提示したもので、限定によるものではないことは理解されるべきである。当業者にとって、発明の精神及び範囲から逸脱することなく、実施形態において形態及び詳細を様々に変更できることは明らかであろう。したがって、本発明の範囲は上述の例示的実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。また、本明細書で論じた各実施形態、及び本明細書で言及した各参考文献の各特徴は、いかなる他の実施形態の特徴と組み合わせて使用できることも理解されるであろう。本明細書で論じた全ての特許及び刊行物は、参照によりその全体が本明細書に組み込まれる。