以下の発明を実施するための形態は、本質的に単に例示であり、本発明、又は本発明の用途及び使用を限定することを意図するものではない。更に、前出の技術分野、背景技術、発明の概要、若しくは以下の発明を実施するための形態に提示される、いかなる明示された又は暗示された理論によっても限定する意図はない。
本明細書に記載する実施形態は、カメラキャリブレーションを行うための姿勢の決定に関する。姿勢は、例えば、キャリブレーションパターンが置かれる配向(パターン配向と呼ばれうる)、キャリブレーションパターンが置かれる位置、又はそれらの組み合わせを指しうる。カメラは、姿勢に対応するキャリブレーション画像を生成するために、キャリブレーションパターンがその姿勢を有している間に、キャリブレーションパターンを写真に撮るか、又は他の方法で撮像してもよく、キャリブレーション画像を使用して、カメラキャリブレーションを行ってもよい。カメラキャリブレーションを行うには、例えば、カメラの特性、及び/又はカメラとその環境との間の関係を推定することを伴いうる。カメラキャリブレーションを行った後、カメラにより生成される画像によって、カメラの環境の中にある物体と相互作用するように使用される、ロボットの制御が容易になる場合がある。例えば、ロボットは、倉庫で包装品を拾い取るように使用されてもよく、ロボットのアーム又は他の構成要素の動作は、カメラにより生成される包装品の画像に基づいてもよい。
本明細書における実施形態の一態様は、姿勢が概して、キャリブレーションパターンの位置及び/又はパターン配向の観点で広がる、姿勢の分布を達成する試みに関する。代わりに、姿勢がある領域の中に集中するか、又は望ましいパターン配向の範囲中のあるパターン配向の周りに集中するかの分布を、姿勢が有する場合、結果として生じるキャリブレーション画像は、写真を撮られた物体がそれらの領域及び/又は配向にあるときに明らかとなる、あるカメラ挙動を取り込みうるが、他の領域及び/又は配向にある写真を撮られた物体に対応するカメラ挙動を逃しうる。例えば、位置及び/又は配向の観点から姿勢のより一様な分布を作り出すために、代わりに姿勢を広げるように、姿勢を決定することによって、結果として生じるキャリブレーション画像に、より完全に又はより正確にカメラ挙動を取り込ませうる。例えば、カメラ挙動が、カメラのレンズにより導入されうるレンズひずみである場合、キャリブレーションパターンの姿勢を広げることで、キャリブレーションパターンが、多様な姿勢を有し、多様な位置及び/若しくはパターン配向で写真を撮られるか、又は他の方法で撮像されるかが可能になりうる。そのような多様な姿勢によって、レンズひずみを明らかにする、より多くの手段を取り込む可能性が高くなるように、結果として生じるキャリブレーション画像を表示しうる。そのようなキャリブレーション画像によって、レンズひずみ又はカメラの別の特性を、より完全かつ正確に、特徴付ける又は他の方法で推定することが可能になりうる。
本明細書における実施形態の一態様は、キャリブレーションパターンの異なる姿勢に対して姿勢角度値を決定すること、より具体的には、キャリブレーションパターンのパターン配向に対して、望ましい分布を達成するように、姿勢角度値を決定することに関する。パターン配向の分布は、キャリブレーションパターンが配向する方向の分布を指しうる。例えば、望ましいパターン配向の範囲内の概して一様な分布は、キャリブレーションパターンが、望ましい方向の範囲内にあり、望ましい方向の範囲中に概して均等に分布する方向を有する分布を指してもよく、望ましいパターン配向の範囲は、望ましい方向の範囲によって画定されうる。
一実施形態において、上で論じた姿勢角度値は、キャリブレーションパターンと、カメラの光軸などの基準系との間の角度であってもよい、姿勢角度の角度値でありうる。姿勢角度は、例えば、カメラに対するキャリブレーションパターンの傾斜を制御するのに使用されうる(そのような傾きは、相対的な傾きと呼ばれうる)。一実施形態において、複数の姿勢角度を使用してキャリブレーションパターンの傾斜を制御してもよく、複数の姿勢角度に対するそれぞれの姿勢角度値のセットを使用して、キャリブレーションパターンの相対的な傾きの方向及び量を制御しうる。場合によっては、パターン配向のセットは、望ましい分布(例えば、一様分布)に従って、複数の姿勢角度の各々に対して、それぞれの姿勢角度値のセットを個々に決定することによって決定されうる。しかしながら、実際にはそのような手法では、パターン配向のセットに対する望ましい分布が達成されない場合がある。例えば、パターン配向が三つの姿勢角度によって制御される場合、一様分布に従い三つの姿勢角度の各々に対して、姿勢角度値のセットを個々に決定しても、実際には、結果として生じるパターン配向のセットの一様分布につながらない場合がある。したがって、本明細書における実施形態の一態様は、最初に望ましい分布と合致するパターン配向を決定し、その後、望ましい分布に基づいて姿勢角度値を決定することによる、姿勢角度に対する姿勢角度値の決定に関する。
一実施形態において、望ましい分布と合致するパターン配向を決定することには、仮想球上にある表面点の選択を伴いうる。表面点は、キャリブレーションパターンに対する可能なパターン配向を表してもよく、より具体的には、キャリブレーションパターンに対する法線ベクトルが指し示すことができる方向を表してもよい、仮想球の表面上にある点でありうる。場合によっては、仮想球の中心は、法線ベクトルの一つの終点にあってもよく、仮想球は、法線ベクトルの他の終点によって、指し示すか、又はより広くは、方向付けることができる、点の軌跡である表面を有してもよい。場合によっては、仮想球の表面上にある領域(表面領域と呼ばれうる)は、望ましいパターン配向の範囲を表してもよく、表面領域内の表面点は、望ましい範囲内のそれぞれのパターン配向を表してもよい。一実施形態において、表面点は、望ましい分布に従って、仮想球の表面から、より具体的には、表面領域内から選択されてもよい。例えば、望ましい一様分布に従って表面点を選択することには、それらの表面点のうちの一つを選択するための、表面領域内の表面点のサンプリングを伴ってもよく、サンプリングは、表面領域内の表面点の各々が選択される可能性が同程度にあるように行われうる。この実施形態では、姿勢角度の姿勢角度値は、選択される表面点に基づいて決定されうる。パターン配向が複数の姿勢角度によって制御される場合、それぞれの姿勢角度値は、選択される表面点に基づいて、複数の姿勢角度の各々に対して決定されうる。複数のパターン配向が、複数のそれぞれの姿勢に対して上のように決定される場合、複数のパターン配向は、一様分布などの望ましい分布を有する可能性が高くなりうる。
本明細書における実施形態の一態様は、複数の姿勢がカメラの視野(カメラ視野とも呼ばれうる)内に広がるように、複数の姿勢に対するそれぞれの位置の決定に関する。決定される位置の各々は、場合によっては、キャリブレーションパターンに対して姿勢を形成するように、姿勢角度値のそれぞれのセットと組み合わせられてもよい。それぞれの姿勢角度値のセットは、例えば、上に記載した様式を使用して決定されてもよい。一実施形態において、カメラの視野内の空間は、一つ以上の層を有し、複数の行及び複数の列を有する、グリッドに分けられうる。場合によっては、それぞれの位置の決定には、複数の姿勢を多様な領域に置く第一の空間分布を達成するであろう、位置を見つける試みを伴いうる。第一の空間分布を達成できない場合、決定には更に、複数の姿勢を多様な領域に置くようにも試みうるが、第一の空間分布に対してより少ない条件、又はより緩和された条件を有しうる、第二の空間分布を達成するように、位置を見つける試みを伴いうる。場合によっては、第一の空間分布、第二の空間分布、及び/又は別の空間分布を達成できない場合、複数の姿勢に対する位置は、ランダム空間分布を達成するように決定されうる。
一実施形態において、第一の空間分布は、i)グリッドのある決定の層の中の各行が、一つのみの姿勢を含むか、又は一つ以下の姿勢を含む、及びii)層の中の各列が、一つのみの姿勢を含むか、又は一つ以下の姿勢を含む、分布であってもよい。一実施形態において、第二の空間分布は、第一の空間分布に対する上の基準のうちの一つのみを満たす必要がある、分布であってもよい。より具体的には、第二の空間分布は、i)グリッドのある決定の層中の各行が、一つのみの姿勢を含むか、若しくは一つ以下の姿勢を含む、又はii)ある決定の層中の各列が、一つのみの姿勢を含むか、若しくは一つ以下の姿勢を含む、分布であってもよい。
図1は、自動カメラキャリブレーションを行うための、ロボット運用システム100のブロック図を示す。ロボット運用システム100は、ロボット150、コンピューティングシステム110、及びカメラ170を含む。場合によっては、コンピューティングシステム110は、ロボット150を制御するように構成されてもよく、それらの場合には、ロボット制御システム又はロボットコントローラーと呼ばれうる。一実施形態において、ロボット運用システム100は、倉庫、製造工場、又は他の施設内に位置してもよい。コンピューティングシステム110は、後にロボット150を制御するのに使用される、キャリブレーション情報の決定によってなど、カメラキャリブレーションを行うように構成されうる。場合によっては、コンピューティングシステム110は、カメラキャリブレーションを行うこと、及びキャリブレーション情報に基づいてロボット150を制御することの両方を行うように構成される。場合によっては、コンピューティングシステム110は、カメラキャリブレーションを行う専用であってもよく、ロボットの制御専用である別のコンピューティングシステムへ、キャリブレーション情報を伝達してもよい。ロボット150は、カメラ170により取り込まれる画像と、キャリブレーション情報とに基づいて位置付けられうる。場合によっては、コンピューティングシステム110は、カメラ170が位置する環境の画像を取得する、視覚システムの一部であってもよい。
一実施形態において、コンピューティングシステム110は、ロボット150及びカメラ170と有線又は無線通信によって通信するように構成されうる。例えば、コンピューティングシステム110は、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェース、イーサネットインターフェース、Bluetooth(登録商標)インターフェース、IEEE802.11インターフェース、又はそれらのいかなる組み合わせを介して、ロボット150及び/又はカメラ170と通信するように構成されうる。一実施形態において、コンピューティングシステム110は、周辺構成要素相互接続(PCI)バスなどのローカルコンピュータバスを介して、ロボット150及び/又はカメラ170と通信するように構成されうる。
一実施形態において、コンピューティングシステム110は、ロボット150から分離していてもよく、上で論じた無線又は有線接続を介してロボット150と通信してもよい。例えば、コンピューティングシステム110は、有線接続又は無線接続を介して、ロボット150及びカメラ170と通信するように構成される、独立型コンピューターであってもよい。一実施形態において、コンピューティングシステム110は、ロボット150の不可欠な構成要素であってもよく、上で論じたローカルコンピュータバスを介して、ロボット150の他の構成要素と通信してもよい。場合によっては、コンピューティングシステム110は、ロボット150のみを制御する、専用制御システム(専用コントローラーとも呼ばれる)であってもよい。他の場合には、コンピューティングシステム110は、ロボット150を含む、複数のロボットを制御するように構成されてもよい。一実施形態において、コンピューティングシステム110、ロボット150、及びカメラ170は同じ施設(例えば、倉庫)に位置する。一実施形態において、コンピューティングシステム110は、ロボット150及びカメラ170から離れていてもよく、ネットワーク接続(例えば、ローカルエリアネットワーク(LAN)接続)を介してロボット150及びカメラ170と通信するように構成されてもよい。
一実施形態において、コンピューティングシステム110は、ロボット150上に配置されるキャリブレーションパターン160の画像である、キャリブレーション画像にアクセスして処理するように構成されうる。コンピューティングシステム110は、カメラ170から、又はキャリブレーション画像が記憶される記憶デバイス若しくは他の非一時的コンピューター可読媒体からなど別の資源から、キャリブレーション画像を読み出し、又はより広くは、受信することによって、キャリブレーション画像にアクセスしうる。実例によっては、コンピューティングシステム110は、そのような画像を取り込むよう、カメラ170を制御するように構成されてもよい。例えば、コンピューティングシステム110は、カメラ170の視野(カメラ視野とも呼ばれる)の中の場面を取り込む画像をカメラ170に生成させる、カメラコマンドを生成し、有線又は無線接続によってカメラコマンドをカメラ170へ伝達するように構成されうる。同じコマンドによって、カメラ170に、画像を(画像データとして)コンピューティングシステム110へ、又はより広くは、コンピューティングシステム110によってアクセス可能な記憶デバイスへ戻して、同様に伝達させてもよい。代替的には、コンピューティングシステム110は、カメラコマンドを受信すると、カメラ170に、取り込んだ画像(複数の場合もある)をコンピューティングシステム110へ伝達させる、別のカメラコマンドを生成してもよい。一実施形態において、カメラ170は、コンピューティングシステム110からのカメラコマンドを必要とすることなく、定期的に、又は定義されたトリガー条件に応答してのいずれかで、カメラ視野中の場面の画像を自動的に取り込んでもよい。そのような実施形態では、カメラ170もまた、コンピューティングシステム110からのカメラコマンドなしで、コンピューティングシステム110へ、又はより広くは、コンピューティングシステム110によってアクセス可能な記憶デバイスへ、画像を自動的に伝達するように構成されてもよい。
一実施形態において、コンピューティングシステム110は、コンピューティングシステム110によって生成され、有線又は無線接続によってロボット150へ伝達される動作コマンドで、ロボット150の動作を制御するように構成されうる。動作コマンドによって、ロボット上に配置されるキャリブレーションパターン160をロボットに動かせてもよい。キャリブレーションパターン160は、ロボット150上に永久に配置されてもよく、又はロボット150に着脱可能である別個の構成要素であってもよい。
一実施形態において、カメラ170は、場面の写真を撮ることによってなど、カメラ視野の中の場面を取り込む画像を生成するか、又は他の方法で取得するように構成されうる。画像は、ピクセルの配列など、画像データによって形成されてもよい。カメラ170は、カラー画像カメラ、グレースケール画像カメラ、奥行き感知カメラ(例えば、飛行時間(TOF)カメラ又は構造化光カメラ)、又はいかなる他のカメラであってもよい。一実施形態において、カメラ170は、一つ以上のレンズ、画像センサー、及び/又はいかなる他の構成要素を含みうる。画像センサーは、例えば、電荷結合素子(CCD)センサー、相補型金属酸化膜半導体(CMOS)センサー、量子イメージセンサー(QIS)、又はいかなる他の画像センサーを含みうる。
図2は、コンピューティングシステム110のブロック図を描写する。ブロック図に示すように、コンピューティングシステム110は、制御回路111、通信インターフェース113、及び非一時的コンピューター可読媒体115(例えば、メモリ)を含みうる。一実施形態において、制御回路111は、一つ以上のプロセッサ、プログラマブル論理回路(PLC)若しくはプログラマブル論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、決定用途向け集積回路(ASIC)、又はいかなる他の制御回路を含みうる。
一実施形態において、通信インターフェース113は、カメラ170及びロボット150と通信するよう構成される一つ以上の構成要素を含みうる。例えば、通信インターフェース113は、有線又は無線プロトコルによって通信を行うように構成される通信回路を含みうる。例として、通信回路は、RS−232ポートコントローラー、USBコントローラー、イーサネットコントローラー、IEEE802.11コントローラー、Bluetooth(登録商標)コントローラー、PCIバスコントローラー、いかなる他の通信回路、又はそれらの組み合わせを含みうる。
一実施形態において、非一時的コンピューター可読媒体115は、コンピューターメモリなどの情報記憶デバイスを含みうる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ(DRAM)、ソリッドステートの統合メモリ(solid state integrated memory)、及び/又はハードディスクドライブ(HDD)を含んでもよい。場合によっては、カメラキャリブレーションは、非一時的コンピューター可読媒体115上に記憶される、コンピューター実行可能命令(例えば、コンピューターコード)によって実施されてもよい。そのような場合には、制御回路111は、カメラキャリブレーションを行うよう、コンピューター実行可能命令を実行する(例えば、図9に示すステップ)ように構成される、一つ以上のプロセッサを含んでもよい。一実施形態において、非一時的コンピューター可読媒体は、カメラ170によって生成される、一つ以上のキャリブレーション画像を記憶するように構成されうる。
上記で言及したように、本明細書における実施形態の一態様は、キャリブレーションパターン160に対する複数の姿勢の決定に関する。各姿勢は、キャリブレーションパターン160の位置及びパターン配向の組み合わせを指しうる。複数の姿勢は、キャリブレーションパターン160を(ロボット150によって)カメラ視野内の異なる位置に置くために、及びカメラ170に対して異なるパターン配向を有するように、キャリブレーションパターン160を傾けるか、又は他の方法で動かすために決定されうる。例えば、図3A及び3Bは、ロボット運用システム200内の、キャリブレーションパターン260に対する二つの異なる姿勢を描写する。ロボット運用システム200は、ロボット運用システム100の実施形態であってもよく、コンピューティングシステム110、カメラ270(カメラ170の実施形態であってもよい)、ロボット250(ロボット150の実施形態であってもよい)、及びキャリブレーションパターン260の実施形態であってもよい、キャリブレーションパターン260を含む。
図3A及び3Bの例では、ロボット250は、ジョイントによって接続する複数のリンク254A〜254Eを備える、ロボットアームを有しうる。ロボットアームは、キャリブレーションパターン260を動かすように構成されうる。動作は、カメラ270のカメラ視野272内における異なる位置に、キャリブレーションパターン260を置くこと、及び/又はカメラ270に対して異なる配向へ、キャリブレーションパターン260を傾けることを含みうる。場合によっては、ロボットアームは、複数のリンク254A〜254Eのうちの一つ以上のリンクの回転によって、複数のリンク254A〜254Eを接続するジョイントのうちの一つ以上の周りを動くように構成されうる。実例によっては、ロボットアームは、動作コマンド(ロボット動作コマンドとも呼ばれる)に応答して動きうる。例えば、ロボット250は、リンク254A〜254Eのうちの少なくともいくつかを回転させるために、リンク254A〜254Eを接続する複数のジョイントにて回転を産み出すように構成される、一つ以上のモーター(図示せず)を含みうる。そのような例では、動作コマンドは、モーターのうちの一つ以上を起動させる、一つ以上のモーターコマンドを含みうる。場合によっては、動作コマンドは、コンピューティングシステム110によって生成され、コンピューティングシステム110によってロボット150へ出力されうる。場合によっては、ロボット動作コマンドは、別のコンピューティングシステムによって、及び/又はロボット250によって生成されうる。
一実施形態において、キャリブレーションパターン160の実施形態である、キャリブレーションパターン260は、ロボット250のロボットアームによって、異なる姿勢に動かされうる。より具体的には、図3A及び3Bは、第一の姿勢及び第二の姿勢をそれぞれ有する、キャリブレーションパターン260を描写する。第一の姿勢及び第二の姿勢は、キャリブレーションパターン260に対する位置と、キャリブレーションパターン260のパターン配向とのそれぞれの異なる組み合わせを有するため、異なる姿勢とみなされうる。
一実施形態において、カメラ270は、キャリブレーションパターン260が図3Aに描写する第一の姿勢を有する間に、キャリブレーションパターン260を取り込む第一のキャリブレーション画像を生成してもよく、又は他の方法で取得してもよく、キャリブレーションパターン260が図3Bに描写する第二の姿勢を有する間に、キャリブレーションパターン260を取り込む第二のキャリブレーション画像を生成してもよく、又は他の方法で取得してもよい。キャリブレーションパターン260が第一の姿勢及び第二の姿勢それぞれにある間に、第一のキャリブレーション画像及び第二のキャリブレーション画像が、キャリブレーションパターンを取り込むため、二つの姿勢はまた、画像取り込み姿勢とも呼ばれうる。第一のキャリブレーション画像及び第二のキャリブレーション画像は、カメラキャリブレーションを行うように、コンピューティングシステム110又はいかなる他のコンピューティングシステムによってもアクセスされうる。
一実施形態において、カメラキャリブレーションは、例えば、カメラ270用の一つ以上の内部カメラパラメーターの推定値、及び/又はカメラ270とその環境との間の関係を決定しうる。一つ以上の内部カメラパラメーターは、例えば、カメラ270の射影行列、カメラ270の一つ以上のひずみパラメーター、又はそれらのいかなる組み合わせを含みうる。カメラ270とその環境との間の関係は、例えば、カメラ270とロボット250との間の空間関係を記述する行列を含みうる。より具体的には、行列は、カメラ270と、ロボット250のベース252に対して定常な点でありうる、ワールド点294(図3Bに描写する)との間の空間関係を記述しうる。カメラキャリブレーション情報は、その後、ロボット250と倉庫の中の包装品などの物体との間の、相互作用を容易にするために使用されうる。例えば、カメラ270は、物体の画像を生成するか、又は他の方法で取得するように構成されてもよく、コンピューティングシステム110又は何らかの他のコンピューティングシステムは、物体の画像及びカメラキャリブレーション情報を使用して、ロボット250と物体との間の空間関係を決定するように構成されてもよい。カメラキャリブレーションパラメーターの推定値の決定については、「METHOD AND SYSTEM FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」と題される米国特許出願番号第16/295,940号(参照によりその全体が本明細書に組み込まれる)でより詳細に論じる。
一実施形態において、上記でも言及したように、キャリブレーションパターン160/260のパターン配向は、一つ以上の姿勢角度によって制御されうる。概して言えば、姿勢角度は、キャリブレーションパターン160/260と基準軸との間の角度でありうる。例えば、図4Aは、キャリブレーションパターン260の法線ベクトル261と
軸との間に形成される、姿勢角度αを描写する。法線ベクトル261は、図4Aのキャリブレーションパターン260により画定される平面に直交する、ベクトルであってもよい。実例によっては、法線ベクトルは、以下でより詳細に論じる、
軸と一致する、又はより広くは、一直線になるベクトルであってもよい。
軸は、姿勢角度αを測定するのに対比させる基準軸であってもよい。図4Aの例では、
は、カメラ270の座標系(カメラ座標系とも呼ばれる)のZ軸と平行及び/又は一致してもよく、Z軸は
と名付けられる。ワールド座標系と共に、カメラ座標系を図4Bに示す。場合によっては、カメラ270が一つ以上のレンズを有する場合、カメラ座標系の
は、一つ以上のレンズの光軸でありうる。更に、カメラ270が画像センサー(例えば、CCDセンサー)を有する場合、X軸、すなわちカメラ座標系の
、及びY軸、すなわちカメラ座標系の
によって、画像センサーの二次元(2D)画像平面を画定してもよい。カメラ座標系は、一つ以上のレンズに、画像センサーの表面上に、又はいかなる他の位置にも位置する、原点を有しうる。図4Bは更に、ワールド点294の周りに原点を有する座標系でありうる、ワールド座標系を示す。図4Bに描写するように、ワールド座標系は軸
によって画定されうる。
上記で言及したように、キャリブレーションパターン260の法線ベクトル261は、場合によっては、パターン座標系のZ軸、すなわち
と一致してもよく、又はより広くは、平行であってもよい。図4Cは、パターン座標系、すなわち、
、及び
の座標軸を描写する。いくつかの実施態様では、キャリブレーションパターン260は、パターン座標系における既知の位置、又はより広くは、画定された位置を有する、複数のパターン要素(例えば、ドット)を有しうる。例えば、複数のパターン要素は、事前に画定された間隔を有する、ドットのグリッドであってもよい。そのような実施態様では、パターン座標系の原点は、パターン要素のうちの一つに位置してもよく、又は他の場所に位置してもよい。キャリブレーションパターンについては、「METHOD AND SYSTEM FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」と題される米国特許出願番号第16/295,940号(参照によりその内容全体が本明細書に組み込まれる)でより詳細に論じる。
一実施形態において、キャリブレーションパターン160/260のパターン配向は、姿勢角度のセットによって、より具体的には、姿勢角度に対するそれぞれの姿勢角度値のセットによって制御されてもよい。例えば、図5A〜5Cは、キャリブレーションパターン260のパターン配向を画定する、三つの姿勢角度α、β、θのうちのいくつか又は全ての使用を描写する。この例では、姿勢角度αは、法線ベクトル261と、
及び
によって形成されるYZ平面に沿う
との間に形成される、角度であってもよい。この例では、法線ベクトル261は
と一致してもよく、そのため、姿勢角度αはまた、
と
との間の角度でありうる。実例によっては、基準軸
は、図4Bの
と一致する、又はより広くは、平行である軸であってもよい。実例によっては、
軸はカメラ270の光軸であってもよい。実例によっては、
は図4Bの
軸と平行な軸であってもよく、一方、
軸は図4Bの
軸と平行な軸であってもよい。図5Aに描写する例では、姿勢角度αはまた、
と
との間の角度として、及び/又は角度αに対する回転の軸でありうる
軸の周りで、キャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。
一実施形態において、図5Bに示す姿勢角度βは、法線ベクトル261と、
及び
によって形成されるXZ平面に沿う
との間に形成される、角度であってもよい。法線ベクトル261が
と一致しうるため、姿勢角度βはまた、
と
との間の角度でありうる。図5Bに描写する例では、姿勢角度βはまた、
と
との間の角度として、及び/又は角度βに対する回転の軸でありうる
軸の周りで、キャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。
一実施形態において、図5Cに示す姿勢角度θは、
及び
によって形成されるXY平面に沿って、
と
との間に又は
と
との間に形成される角度であってもよい。図5Cに描写する例では、姿勢角度θはまた、角度θの回転軸でありうる、
軸の周りで及び/又は法線ベクトル261の周りで、キャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。したがって、一実施形態において、姿勢角度α、β、θは、それぞれの回転軸(例えば、
)を回るキャリブレーションパターン260のそれぞれの回転量を表してもよく、それぞれの軸は互いに直交する。実例によっては、それぞれの軸は、
と平行な軸であってもよいカメラ光軸と、平行又は直交であってもよい。他の実例では、それぞれの軸はカメラ光軸に対して斜めであってもよい。
一実施形態において、姿勢角度α、β、θは、座標軸の異なるセットを有してもよい、異なる基準座標系に基づいて画定されてもよい。例えば、図6A〜6Cは、姿勢角度βが、姿勢角度αに基づく基準軸に対して画定される例を描写し、更に、姿勢角度θが、姿勢角度α及びβに基づく別の基準軸に対して画定される例を描写する。より具体的には、図6Aは、図5Aの実施形態に類似して、姿勢角度αが、法線ベクトル261と、
及び
によって形成されるYZ平面に沿う基準軸
との間に形成される角度である、実施形態を示し、
、及び
は、第一の基準座標系の座標軸であってもよい。法線ベクトル261は、
と一致し、又はより広くは、平行であってもよい。基準軸
は、図4Bの
と一致する、又はより広くは、平行である軸であってもよい。実例によっては、
軸はカメラ270の光軸であってもよい。実例によっては、
は図4Bの
軸と平行な軸であってもよく、一方、
軸は図4Bの
軸と平行な軸であってもよい。図6Aに描写する例では、姿勢角度αはまた、
と
との間の角度として、及び/又は
軸の周りでキャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。
図6A〜6Cの例では、軸
は第一の基準座標系であってもよく、一方、姿勢角度βは第二の基準座標系に対して画定されてもよい。第二の基準座標系によって、キャリブレーションボード260が姿勢角度βだけ回転する前に、キャリブレーションボード260の開始点が画定されうる。そのような開始点では、キャリブレーションボード260は、第一の基準座標系に対して、姿勢角度αだけ既に回転している。したがって、この例における第二の基準座標系は、第一の基準座標系に対してαだけ回転する座標系であってもよい。第二の基準座標系は、座標軸
によって画定されうる。図6Bに描写するように、姿勢角度βは、
及び
によって形成されるXZ平面に沿って、法線ベクトル261と
との間に又は
と
との間に形成される角度であってもよい。図6Bに描写する例では、姿勢角度βはまた、
と
との間の角度として、及び/又は
軸の周りでキャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。
同じように、姿勢角度θは、第三の基準座標系に対して画定されてもよい。第三の基準座標系によって、キャリブレーションボード260が角度θだけ回転する前に、キャリブレーションボード260の開始点が画定されうる。この開始点は、角度βだけ第二の座標系を回転させることによって画定されてもよく、それによって、第三の基準座標系の座標軸
を得うる。図6Cに示すように、姿勢角度θは、
及び
によって形成されるXY平面に沿って、
と
との間に又は
と
との間に形成される角度であってもよい。図6Cに描写する例では、姿勢角度θはまた、
軸の周りで又は法線ベクトル261の周りで、キャリブレーションボード260を回転させることによって形成される角度として画定されてもよい。
上記で言及したように、本明細書における実施形態の一態様は、多様な姿勢を有するためのキャリブレーションパターン160/260の制御、より具体的には、望ましいパターン配向の範囲内における概して一様な分布など、望ましい分布を有する複数のパターン配向の採用に関する。パターン配向は、α、β、θなど、一つ以上の姿勢角度によって制御されうる。しかしながら、一様分布に従って、姿勢角度α、β、θの各々に対して個々にただ角度値(姿勢角度値とも呼ばれる)を生成するのみでは、結果として生じるパターン配向が一様分布を必ずしも有さない場合がある。
例えば、図7Aは、個々の、一様な確率密度分布(PDF)に基づくαに対するランダムな姿勢角度値の生成、及び一様なPDFに基づくβに対するランダムな姿勢角度値の生成に各々起因する、パターン配向を表す例を描写する。場合によっては、θに対するランダムな姿勢角度値もまた、一様なPDFに従って個々に生成されてもよい。より具体的には、図7Aは、キャリブレーションパターン160/260に対して、可能なパターン配向を表しうる、仮想球302を描写する。仮想球の表面は、キャリブレーションパターン160/260の法線ベクトル261を指し示すことができる、可能な方向を表しうる。より具体的には、仮想球302の表面は、キャリブレーションパターン260の法線ベクトル261を指し示すことができる、全方向の軌跡であってもよく、又はそれを表しうる。法線ベクトル261に割り当てられた長さ(例えば、10cm)がある場合、仮想球302は、割り当てられた長さと等しい半径を有してもよい。法線ベクトル261の例は図7Bに描写し、キャリブレーションパターン260に直交するベクトルであってもよい。一実施形態において、法線ベクトル261は、キャリブレーションパターン260上にある一つの終点を有してもよい。例えば、終点は、キャリブレーションパターン260に対するパターン座標系の原点に位置しうる。図7Bの例では、仮想球302の中心は、法線ベクトル261のその終点にあってもよく、仮想球302の表面は、法線ベクトル261の他方の終点によって画定されてもよい。仮想球302の表面上にある決定の表面点は、キャリブレーションパターン260に対する法線ベクトルに、その表面点を指し示させるであろう、キャリブレーションパターン260の決定のパターン配向を表しうる。例えば、キャリブレーションパターン260が、図7Bに描写する、ある決定の配向を有するとき、法線ベクトル261は表面点304aを指し示す。したがって、表面点304aは、そのパターン配向を表してもよく、又は他の方法でそのパターン配向に対応してもよい。キャリブレーションパターン260が配向を変化させると、法線ベクトル261は、図7Aに示す表面点304b又は304cなど、仮想球302上の異なる表面点を指し示しうる。
上記で言及したように、図7Aの例では、一様な確率密度分布(PDF)に基づいてαに対するランダムな姿勢角度値を生成し、一様なPDFに基づいてβに対するランダムな姿勢角度値を生成しうる。一様なPDFは、角度値の望ましい範囲中にある値を、ランダムに出力するように構成されてもよく、範囲の中の各角度値は出力される尤度が等しい。図7Aの例では、望ましい範囲は−180度から180度までであってもよい。角度値の望ましい範囲は、望ましいパターン配向の範囲に対応しうる。図7Aでは、そのような角度値の望ましい範囲(−180度から180度まで)は、キャリブレーションパターン260に対する全ての可能なパターン配向に対応してもよい。
図7Aに描写するように、一様なPDFを使用して、姿勢角度α、β、θの各々に対する姿勢角度値を個々に決定するが、結果として生じるパターン配向は、望ましいパターン配向の範囲内で一様には分布しない。より具体的には、図7Aの例における望ましいパターン配向の範囲には、全ての可能なパターン配向を含んでもよく、一様なPDFを使用する角度値の決定から結果として生じるパターン配向は、仮想球302の表面上にある表面点(例えば、304a〜304d)として表される。図7Aの複数の表面点は、仮想球302の表面のある部分内に、仮想球302の表面の他の部分内よりも密に分布する。したがって、結果として生じるパターン配向は、他の方向に対する方向のある一つ又は複数の範囲に、より密に分布しうる。対照的に、図7Cは、パターン配向がより一様な分布を有するシナリオを示し、そのため、パターン配向を表す表面点もまた、仮想球302の表面上により一様な分布を有する。
図7Aでは、パターン配向は、−180度から180度までである、α、β、及び/又はθに対する角度値の望ましい範囲から結果として生じた。図8A〜8Cは、角度値の異なる望ましい範囲に基づく、パターン配向の分布を描写する。より具体的には、図8Aは、パターン配向が、−10度から−30度までの角度値である第一の望ましい範囲802(第一の範囲802とも呼ばれる)と、10度から30度までの角度値である第二の望ましい範囲804(第二の範囲804とも呼ばれる)とに起因する例を描写する。姿勢角度αの姿勢角度値は、第一の範囲及び第二の範囲に制約されうる。姿勢角度αは、キャリブレーション画像を取得すると、キャリブレーションパターン260がカメラ270に対して傾くが、傾きすぎないように、第一の範囲802及び第二の範囲804に制約されうる。場合によっては、α、β、θのうちの一つ以上に対する、一つ又は複数の望ましい角度の範囲は、一つ以上のユーザー定義の範囲であってもよい。
一実施形態において、角度値の望ましい範囲は、α及びβになど、複数の姿勢角度に適用されうる。そのような実施形態では、姿勢角度βもまた、上で論じた第一の範囲802及び第二の範囲804に制約されるであろう。一実施形態において、仮想球の表面上にある領域(表面領域とも呼ばれうる)は、角度値の望ましい範囲802/804に起因する、パターン配向の一つ又は複数の範囲を表しうる。例えば、図8Bは仮想球302の表面領域306を示す。表面領域306は、望ましいパターン配向の範囲を表す、表面点を包含しうる。例えば、図8Bに描写する例のパターン260のパターン配向は、表面点304dによって表されうる。一実施形態において、表面領域306は、仮想球302の表面上に円形帯又は楕円形帯を形成してもよい。一実施形態において、円形帯又は楕円形帯は一様な幅を有してもよい。
図7Aの例では、α及びβの各々に対する姿勢角度値は、−180度から180度までである角度値の望ましい範囲の中で、角度値をランダムに選択する一様確率分布に基づいて決定されうる。図8Bは、α及びβの姿勢角度値が類似の手段で決定される例を描写するが、角度値の望ましい範囲は、図8Aの第一の範囲802及び第二の範囲804、すなわち、−10度から−30度及び10度から30度である。姿勢角度α及びβは、第一の範囲802及び第二の範囲804に制限されてもよく、それによって、表面領域306により表される望ましいパターン配向の範囲をもたらしうる。しかしながら、このようにα及びβを決定することによってもまた、概して一様ではない、又はより広くは、望ましい分布を有さない、望ましいパターン配向の範囲内におけるパターン配向の分布になる。より具体的には、図8Cは、上の技法による姿勢角度値の決定に起因する、パターン配向の分布を表す、表面点306a〜306cなどの複数の表面点を描写する。図面が示すように、複数の表面点は、表面領域306内で一様には分布せず、むしろ表面領域306の最上部付近に集中する。この表面点の分布は、結果として生じるパターン配向が、
とより密接して整列し、カメラ170/270に対してより少ない傾きを呈する傾向がある、方向の周りにより集中しうることを示しうる。
上記で言及したように、本明細書における実施形態の一態様は、キャリブレーションパターン160/260に対する望ましいパターン配向の範囲内で概して一様になど、望ましいように分布するパターン配向を有する、複数の姿勢の決定に関する。例えば、図9は、望ましいように分布するパターン配向を有しうる、複数の姿勢を決定するための方法900を描写する。方法900は、カメラキャリブレーションを行う一部として、コンピューティングシステム110の制御回路111によって行われてもよい。カメラキャリブレーションは、例えば、カメラ170用の内部カメラパラメーターの推定値を決定し、及び/又はロボット150に対するカメラ170の位置及び配向など、カメラ170とその環境との間の空間関係を決定するように使用できる。
一実施形態において、方法900は、制御回路111によって、カメラキャリブレーションを行うための、図1/3Aのキャリブレーションパターン160/260のパターン配向の範囲でありうる、パターン配向の範囲を決定するステップ902を含みうる。実例によっては、パターン配向の範囲は、望ましいパターン配向の範囲でありうる。実例によっては、パターン配向の範囲は、キャリブレーションパターン160/260によって採用できる、可能なパターン配向のうちのいくつかのみを含み、他の可能なパターン配向を除外しうる。除外されたパターン配向によって、例えば、カメラキャリブレーションを行うには最適でない、キャリブレーション画像が提供されうる。例えば、図1/3Aのカメラ170/270に対して傾きを全く呈さないパターン配向によって、レンズひずみパラメーター若しくは他のカメラキャリブレーションパラメーターの推定値を決定する価値を限定しうる、パースペクティブ効果及び/又はレンズひずみ効果も全く呈さないキャリブレーション画像を得うる。そのようなパターン配向は、α及びβ両方の姿勢角度に対するゼロ度の姿勢角度値に対応しうる。いくつかの他のパターン配向は、これらの姿勢でキャリブレーションパターン160/260の写真を撮ることによって、パターン要素をはっきりと取り込むのに失敗するキャリブレーション画像を得る場合があるため、キャリブレーションパターン160/260上のパターン要素又は他の特徴を、カメラ170/270から離れすぎた方を向かせるので除外されてもよい。
一実施形態において、ステップ902におけるパターン配向の範囲の決定は、上で論じた姿勢角度α、β、又はθなど、少なくとも一つの姿勢角度に対する、角度値の一つ以上の範囲の決定を伴いうる。姿勢角度に対して決定される範囲は、その姿勢角度に対してどの姿勢角度値が決定できるかを制約しうる。一例では、一つ以上の範囲は、図8Aに描写する第一の範囲802及び第二の範囲804でありうる。より具体的には、そのような例におけるパターン配向の範囲の決定は、姿勢角度α及び姿勢角度βの両方が、二つの範囲、すなわち、−10度と−30度との間である第一の範囲802、及び10度と30度との間である第二の範囲804に制約されると決定することを伴いうる。実例によっては、一つ以上の範囲は、大きさ(すなわち、絶対値)が小さすぎる姿勢角度値を除外してもよく、大きすぎる姿勢角度値を更に除外してもよい。大きさが小さすぎる姿勢角度値によって、キャリブレーションパターン160/260が、カメラ170/270に対して全く傾きを呈さないか、又はほとんど傾きを呈さない場合があり、カメラパラメーター値を正確に推定するには最適ではない、キャリブレーション画像をもたらしうる。大きすぎる姿勢角度値によって、キャリブレーションパターン160/260が、カメラ170/270に関してパターン配向へ傾きすぎる場合があり、キャリブレーションパターン160/260上の様々なパターン要素又は他の特徴が、結果として生じるキャリブレーション画像の中に取り込まれないか、又は結果として生じるキャリブレーション画像の中で歪みすぎて見える。
場合によっては、ステップ902のパターン配向の範囲は、ユーザー定義の値に基づいてもよい。例えば、パターン配向の範囲の決定には、非一時的コンピューター可読媒体115から、姿勢角度値の一つ又は複数のユーザー定義範囲にアクセスする、図2の制御回路111を伴いうる。より具体的には、制御回路111によって、非一時的コンピューター可読媒体115からユーザー定義の範囲を読み出すか、又はより広くは、受信してもよい。
一実施形態において、方法900は、図2の制御回路111によって、仮想球の表面上にある表面領域を決定する、ステップ904を含む。例として、仮想球は、図7A〜7C、8B、8Cの、並びにまた図10A及び10Bの仮想球302でありうる。仮想球(例えば、仮想球302)は、キャリブレーションパターン160/260の可能なパターン配向を表しうる。より具体的な例では、仮想球は、キャリブレーションパターン160/260の全ての可能なパターン配向を表しうる。例えば、仮想球の表面は、キャリブレーションパターン160/260の法線ベクトル(例えば、261)が指し示せる、全ての点の軌跡であってもよく、法線ベクトルが指し示せる全ての方向に対応してもよい。法線ベクトルに、例えば、10cmの画定された長さを割り当てる場合、仮想球は半径10cmを有する球でありうる。一実施形態において、表面領域の外側にある表面点は、姿勢角度値を決定するためには使用されない。言い換えると、制御回路111は、姿勢角度値を決定し、姿勢を決定するために、表面領域の外側にある表面点を無視してもよい。
一実施形態において、仮想球(例えば、302)の表面上にある表面領域(例えば、306)は、カメラキャリブレーションを行うためのパターン配向の範囲(例えば、カメラキャリブレーションを行うための望ましいパターン配向の範囲)を表す。例えば、表面領域は、図10A及び8Cの表面領域306であってもよい。場合によっては、表面領域は、キャリブレーションパターン160/260に対する法線ベクトルが、望ましいパターン配向の範囲内に留まっている間、指し示すことができる点の軌跡であってもよい。例として、パターン配向の範囲が、少なくとも一つの姿勢角度(例えば、α及びβ)に対する、姿勢角度値の一つ以上の範囲に基づく場合、表面領域(例えば、306)は、法線ベクトル(例えば、法線ベクトル261)が、少なくとも一つの姿勢角度に対する姿勢角度値の一つ以上の範囲内に留まっている間、指し示すことができる点の軌跡であってもよい。場合によっては、図10A及び8Cの表面領域306などの表面領域は、仮想球の表面上に円形帯(円形片とも呼ばれる)を形成しうる。円形帯は、一様な幅を有してもよく、又は変化する幅を有してもよい。
一実施形態において、方法900は、制御回路111によって、キャリブレーションパターン160/260に対する複数の姿勢を決定する、ステップ906を含む。実例によっては、複数の姿勢は、キャリブレーション画像を生成するように、キャリブレーションパターン160/260が写真を撮られるか、又は他の方法で撮像される姿勢であってもよく、画像取り込み姿勢又は撮像姿勢と呼ばれうる。複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定されうる。例えば、複数のそれぞれの位置は、図3A、3B、及び4Bのカメラ視野272内の位置であってもよい。この例では、姿勢角度値のそれぞれのセットの各々は、α及びβのそれぞれの姿勢角度値、又はα、β、及びθのそれぞれの姿勢角度値であってもよい。そのような例では、ある決定の姿勢は、カメラ視野272内の位置、αの姿勢角度値、βの姿勢角度値、及びθの姿勢角度値によって画定されうる。場合によっては、姿勢を画定するのに使用される姿勢角度は、キャリブレーションパターン160/260がどのくらいカメラ170/270に対して傾いているかに影響を与える、角度でありうる。そのような角度は、姿勢角度α及びβを含みうる。例えば、姿勢角度θが、キャリブレーションパターン160/260の相対的な傾きに影響を与えない場合、キャリブレーションパターン160/260の姿勢は、姿勢角度α及びβ、並びにカメラ視野272内の位置のみによって画定されてもよい。
一実施形態において、ステップ906における姿勢角度値の複数のセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択される、それぞれの表面点に基づいて決定されてもよい。例えば、姿勢角度値のセットは、姿勢角度α、β、及びθそれぞれの三つの角度値を含みうるか、又は、姿勢角度α及びβそれぞれの二つの角度値を含みうる。この例では、姿勢角度値のセット中の姿勢角度値のうちのいくつか又は全てが、図10A中の仮想球302の表面上にある表面領域306内から選択される、図面中の表面点308a〜308iのうちの一つなど、それぞれの表面点に基づきうる。表面点(例えば、表面点308a)は、キャリブレーションパターン160/260の法線ベクトル261を指し示す方向を表しうる。姿勢角度値の決定については、以下でより詳細に論じる。
一実施形態において、キャリブレーションパターン160/260に対する可能なパターン配向を表す、仮想球上の表面点を選択し、次に、選択された表面点に基づいて、少なくとも一つの姿勢角度の姿勢角度値を決定することによる、キャリブレーションパターン160/260に対する姿勢の決定によって、結果として生じるパターン配向が望ましい分布を達成することができる可能性がより高くなりうる。例えば、姿勢角度値のそれぞれのセットが基づく表面点は、一様確率分布又は何らかの他の確率分布(例えば、ガウス分布)に従って、表面領域内からランダムに選択されうる。表面点を選択するために一様確率分布を使用することで、選択された表面点が表面領域内で一様分布を有する可能性が高いことを保証しうる。そのような例では、選択される表面点が、表面領域内で一様分布を有する可能性が高いため、選択された表面点に基づいて決定される姿勢角度値もまた、一様分布又は何らかの他の望ましい分布を有する、結果として生じるパターン配向を得る可能性が高い。
図10Aは、仮想球302の表面領域306内から選択され、表面領域306内で実質的に一様な分布を持つ複数の表面点308a〜308iの例を描写する。より具体的には、表面領域306は円形帯を形成してもよく、表面点308a〜308iは、円形帯の周りに円形帯の幅に沿って実質的に一様に分布する。上記で言及したように、少なくとも一つの姿勢角度の姿勢角度値を決定するために表面点308a〜308iを使用することで、実質的に一様な分布を有するパターン配向を得うる。
一実施形態において、制御回路111は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点(例えば、308a〜308i)に対して、一様確率分布に従って、図10A及び10Bの表面領域306などの表面領域内から、それぞれの表面点の各々をランダムに選択するように構成されうる。場合によっては、ランダムな選択は、rand()など、疑似ランダム関数に依存しうる。場合によっては、表面領域は、極座標の範囲の観点から画定されてもよく、それぞれの表面点の各表面点は、極座標の範囲の中から極座標をランダムに選択することによって選択されてもよい。ランダムな選択は、極座標の範囲中の各極座標が選択される可能性が同程度にあるような、一様確率分布に従って行われてもよい。場合によっては、制御回路111は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、一様な表面点のセットのみの中から、それぞれの表面点の各々をランダムに選択するように構成されてもよい。一様な表面点のセットは、仮想球の表面上にある表面領域内に一様に分布する、表面点のセットであってもよい。例えば、図10A及び10Bは一様な表面点のセットを描写する。そのような例では、複数の表面点308a〜308iは、一様な表面点のセット中からランダムに選択される表面点であってもよい。ランダムな選択は、一様な表面点のセットの各々が選択される可能性が同程度にある、一様確率分布に従って行われてもよい。このように選択を行うことによって、選択される表面点(例えば、308a〜308i)は、表面領域306内に概して一様な分布を有する傾向がありうる。
上記で言及したように、実例によっては、仮想球(例えば、302)の表面上にある表面点は、キャリブレーションパターンに対する法線ベクトル(例えば、261)に表面点の方を指し示させるか、又は他の方法で法線ベクトルを表面点へ方向付けるであろう、キャリブレーションパターン160/260に対するそれぞれの配向を表しうる。例えば、図10Bは、法線ベクトル261に表面点308aを指し示させるであろう、キャリブレーションパターン160/260に対するそれぞれの配向を表す、その表面点308aを示す。そのような実例では、表面点に基づく姿勢角度値の決定には、表面点308aのそれぞれの座標に逆正接を適用することを伴いうる。この例では、表面点308aのそれぞれの座標はまた、法線ベクトル261の座標とも呼ばれうる。例えば、表面点308aがデカルト座標[x,y,z]T(カメラ座標系又は何らかの他の座標系にある)を有する場合、姿勢角度のうちの一つに対する角度値(例えば、α)は、arctan(y/z)に等しいか、又はこれに基づいてもよい。いくつかの実施態様では、角度値は、法線ベクトルを、指し示す最初の方向(例えば、カメラ光軸に沿って座標[0 0 10cm]Tの方を指し示す)から、表面点308aの方(例えば、座標[x y z]Tの方)を指すように変換するであろう、一つ以上の回転行列を解くことで決定されうる。一例では、回転行列を解くことは、方程式[x y z]T=RαRβRθ[0 0 10cm]Tを解くことを伴ってもよく、式中、Rα、Rβ、及びRθは、図5A〜5C及び6A〜6Cに関して上に記載したように、姿勢角度α、β、及びθによりキャリブレーションパターン160/260の回転を表す、それぞれの回転行列である。いくつかの実施態様では、表面点308aが、極座標系で表示する極座標である座標を有する場合、姿勢角度のうちのいくつかの姿勢角度値は、極座標の構成要素に基づきうるか、又はより具体的には、等しくなりうる。
上記で言及したように、一実施形態において、ステップ906で決定される複数の姿勢は、カメラキャリブレーションを行うためにキャリブレーション画像を生成するように、カメラ170/270によってキャリブレーションパターン160/260の写真を撮る、又は他の方法で撮像する姿勢であってもよい。したがって、ステップ906で決定される複数の姿勢もまた、画像取り込み姿勢と呼ばれうる。いくつかの実施態様では、ステップ906における複数の姿勢の決定は、候補姿勢のセットの決定と、候補姿勢のうちのどれがロボットで達成可能な候補姿勢であるかの決定と、ロボットで達成可能な候補姿勢の中からの複数の姿勢(画像取り込み姿勢である)の選択とを伴いうる。
一実施形態において、候補姿勢は、以下でより詳細に論じるように、制御回路111により決定されたが、姿勢がロボット150/250によって達成できるかをまだ評価していない姿勢であってもよい。場合によっては、候補姿勢は、制御回路111によって位置及び姿勢角度値のセットを決定した姿勢であってもよい。例えば、候補姿勢のセットの各候補姿勢は、候補姿勢に対するカメラ視野内のそれぞれの位置を決定することと、候補姿勢に対する姿勢角度値のそれぞれのセットを決定することとによって決定されうる。それぞれの位置は、以下でより詳細に論じるように、例えば、空間の中に広がるロボットで達成可能な候補姿勢をもたらすように決定されうる。場合によっては、それぞれの位置の決定は、それぞれの位置に対する座標のいくつかの若しくは全て構成要素のランダム値又は疑似ランダム値を生成する関数(例えば、rand()関数)に依存しうる。一実施形態において、姿勢角度値のそれぞれのセットは、上で論じたように、例えば、仮想球(例えば、302)の表面上にある表面領域(例えば、306)内からそれぞれの表面点を選択することと、それぞれの表面点に基づく候補姿勢に対して、姿勢角度値のそれぞれのセットを決定することとによって決定されうる。別の実施形態では、姿勢角度値のそれぞれのセットは、異なる様式で決定されてもよい。
一実施形態において、制御回路111は、候補姿勢のセットからロボットで達成可能な候補姿勢のセットを決定するように構成されてもよい。ロボットで達成可能な候補姿勢は、ロボット150/250によって達成できる、キャリブレーションパターン160/260に対する候補姿勢でありうる。より具体的には、ロボット150/250は、いくつかのシナリオでは、いくつかの候補姿勢を達成できない場合がある。例えば、ある決定の候補姿勢は、ロボット150/250が、姿勢角度値のセットにより示されるように、キャリブレーションパターンを傾けることができないため、ロボット150/250が遂行できない、その姿勢角度値のセットを有しうる。加えて、キャリブレーションパターンに対する候補姿勢には、キャリブレーションパターン160/260を置くべき姿勢角度値のセットだけでなく、キャリブレーションパターン160/260を置くべきカメラ視野(例えば、272)内の位置も伴いうる。実例によっては、ロボット150/250は、キャリブレーションパターン160/260を決定された位置に置くことができない場合がある。実例によっては、ロボット150/250は、候補姿勢の姿勢角度値のセット又は位置のどちらかを遂行できうるが、ロボット150/250の動作に関する制約から、姿勢角度のセット及び候補姿勢の位置両方の組み合わせを遂行できない場合がある。例えば、ロボット150/250の動作は、ロボット150/250が、キャリブレーションパターン160/260をカメラ視野(例えば、272)中のある位置へ動かすのを妨げうる、障害物によって制約されうる。実例によっては、ロボット150/250の機械構成によって、その動作の自由を制約しうる。例として、図3A及び3Bのロボット250は、ロボットアームの様々なリンク254A〜254Eが互いに接続し、互いに対して限定的な自由度を有する機械構成を有しうる。そのような機械構成によって、ロボット250が、キャリブレーションパターン260が取り付けられるリンク254Eの位置及び配向の、ある組み合わせを達成するのを妨げうる。したがって、ロボット250の機械構成によって、ロボット250が、キャリブレーションパターン260の位置及びパターン配向の、ある組み合わせを達成するのを妨げうる。言い換えると、ロボット250の機械構成によって、ロボット250が、キャリブレーションパターン260に対するある姿勢を達成するのを妨げうる。
したがって、一実施形態において、ステップ906で制御回路111によって、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能であるか(すなわち、候補姿勢がロボット150/250によって達成できるか)を決定してもよい。制御回路111によって、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢を候補姿勢のセットへ追加しうる。制御回路111によって更に、候補姿勢がロボットで達成可能ではないという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットから除外してもよく、又はより広くは、カメラキャリブレーションを行う目的で候補姿勢を無視してもよい。
場合によっては、制御回路111によって、キャリブレーションパターン160/260を動かして候補姿勢を達成するよう実際に試みるように、ロボット150/250を制御することと、ロボット150/250が定義した時間内に候補姿勢を達成できるかを決定することとによって、ある決定の候補姿勢がロボットで達成可能であるかを決定しうる。場合によっては、制御回路111によって、逆運動学関数が候補姿勢用の動作コマンドを出力できるかを決定してもよい。逆運動学関数は、ロボット150/250がある決定の姿勢を達成するための、一つ以上のモーターコマンドなど、動作コマンドを計算するように設計される関数であってもよい。逆運動学関数がある決定の候補姿勢用の動作コマンドを出力できる場合、制御回路111によって、候補姿勢がロボットで達成可能な候補姿勢であると決定しうる。関数がある決定の候補姿勢用の動作コマンドを出力できない場合、制御回路111によって、候補姿勢がロボットで達成可能な候補姿勢ではないと決定しうる。
上記で言及したように、一実施形態において、ステップ906で制御回路111によって更に、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢(画像取り込み姿勢であるか、又はそうなるであろう)を選択しうる。場合によっては、選択には、ロボットで達成可能な候補姿勢の目標数を、複数の姿勢として選択することを伴いうる。目標数は、例えば、ユーザー定義の値であってもよく、又は何らかのノイズレベル、カメラキャリブレーションを行うのに割り振られる時間、若しくは何らかの他の要因に基づいて決定されてもよい。例えば、ロボットで達成可能な候補姿勢のセットは、少なくとも9つのロボットで達成可能な候補姿勢を含んでもよく、目標数は8であってもよい。そのような例では、ステップ906で制御回路111によって、複数の姿勢として、9つのロボットで達成可能な候補姿勢のセットの中から、8つのロボットで達成可能な候補姿勢を選択してもよい。別の例では、ロボットで達成可能な候補姿勢のセットは、少なくとも64個の候補姿勢を含んでもよく、目標数は15であってもよい。そのような例では、制御回路111によって、複数の姿勢として、64個のロボットで達成可能な候補姿勢のセットの中から、15個のロボットで達成可能な候補姿勢を選択してもよい。いくつかの実施態様では、制御回路111によってランダムに選択を行いうる。例えば、制御回路111によって、ロボットで達成可能な候補姿勢の各々が選択される可能性が同程度にある一様確率分布に従って、64個のロボットで達成可能な候補姿勢のセットの中から、15個のロボットで達成可能な候補姿勢をランダムに選択しうる。ランダムな選択は、いくつかの実施態様では、疑似ランダム関数に依存しうる。
上記で言及したように、制御回路111によって、一実施形態において、仮想球(例えば、302)の表面上にある表面領域(例えば、306)内から選択される表面点に基づいて、候補姿勢のセットの各々に対して、姿勢角度値のそれぞれのセット(例えば、それぞれの姿勢角度α、β、θの)を決定してもよい。ステップ906で決定される複数の姿勢(画像取り込み姿勢であるか、又はそうなるであろう)が、最終的に候補姿勢のセットから選択されるため、複数の姿勢の各々は、同様に、仮想球の表面上にある表面領域内から選択されるそれぞれの表面点に基づいて決定される、姿勢角度値のセットを有するとみなされうる。
一実施形態において、制御回路111によって、ランダムに候補姿勢に対するそれぞれの位置を決定しうる。例えば、制御回路111によって、カメラ視野(例えば、272)内の位置をランダムに選択し、仮想球の表面領域内から選択される表面点に基づいて(上に記載するように)姿勢角度値のセットを決定し、決定された位置及び姿勢角度値のセットを有する候補姿勢が、ロボットで達成可能な候補姿勢であるかを評価しうる。場合によっては、姿勢角度値のセットは、表面点の決定に依存しない、何らかの他の様式で決定されてもよい。一実施形態において、制御回路111によって、候補姿勢がカメラ視野内に広がるように、候補姿勢の位置を決定しうる。より具体的には、候補姿勢により、カメラ視野内に広がるロボットで達成可能な候補姿勢をもたらすように、制御回路111によって、それらの候補姿勢の位置を決定しうる。ステップ906で決定される複数の姿勢が、ロボットで達成可能な候補姿勢から選択されてもよいため、複数の姿勢もまた、その後、カメラ視野内に広がりうる。
一実施形態において、候補姿勢、ロボットで達成可能な候補姿勢、及び/又は画像取り込み姿勢を広げるように試みるには、制御回路111によって、カメラ視野(例えば、272)内の空間を分ける3D領域のグリッドを決定し、候補姿勢がグリッドの中に広がるように、及び/又はロボットで達成可能な候補姿勢がグリッドの中に広がるように、候補姿勢の位置を決定しうる。一実施形態において、3D領域のグリッドが、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する、一つ以上の層に分けうる。
一実施形態において、カメラ視野内の空間は、キャリブレーションパターン160/260が、ロボット150/250によって動かされ、カメラ270によって写真を撮られて、カメラキャリブレーションを行う空間でありうる。空間は、ロボット150/250がキャリブレーションパターン160/260を動かすことができる、カメラ視野(例えば、272)内の全ての位置を含むほど、十分大きい場合があり、又は空間からそれらの位置のうちのいくつかを省くサイズを有しうる。場合によっては、空間のサイズ又は境界は、ロボット150/250の動きの範囲に基づいてもよい。例えば、空間の境界は、ロボット150/250(例えば、ロボットアームを介して)が、ロボットのベース(例えば、252)に対して、若しくはカメラ170/270に対して、又は何らかの他の位置に対してキャリブレーションパターン160/260を置くことができる、最も遠い位置に対応しうる。実例によっては、空間の境界は、第一の奥行き値及び第二の奥行き値によって画定されうる。例えば、図11Aは、カメラ270のカメラ視野272内にある空間271を描写する。この例では、空間271には、カメラ視野272内であり、第一の奥行き値Depthminと第二の奥行き値Depthmaxとの間にある、全ての位置(及びそれらの位置のみ)が収められてもよく、両方の奥行き値はカメラ270に対してである。場合によっては、第一の奥行き値及び第二の奥行き値は、図2の非一時的コンピューター可読媒体115、又は何らかの他のデバイスに記憶され、制御回路111にアクセス可能なユーザー定義の値であってもよい。場合によっては、制御回路111によって、ロボット150/250の動きの範囲に基づいて、第一の奥行き値及び第二の奥行き値を決定しうる。一実施形態において、空間271は、円錐台若しくは角錐台を形成してもよく、又は収めてもよい。角錐又は円錐がカメラ視野を画定しうる。例えば、図11Aの視野272は角錐によって画定され、空間271は角錐台を形成しうる。
上記で言及したように、3D領域のグリッドによって、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を、各々有する一つ以上の層に分けうる。例えば、図11Aは、空間271を第一の層274、第二の層275、及び第三の層276に分ける、27個の3D領域2731〜27(すなわち、3D領域2731、2732、2733、・・・27325、27326、27327)のグリッドを描写する。図11Bに示すグリッドは、3×3×3グリッドであってもよい。すなわち、グリッドは三つの層(第一の層274、第二の層275、及び第三の層275)を有してもよく、各層は3D領域の三行及び3D領域の三列を有しうる。言い換えると、層274、275、及び276の各々は、三列及び三行の3×3グリッドでありうるか、又はこれに分けられうる。第一の層274は3D領域2731〜9を包含してもよく、第二の層275は3D領域27310〜18を包含してもよく、第三の層276は3D領域27319〜27を包含してもよい。
視野272が角錐によって画定される図11Bの例では、各3D領域は六面体を形成してもよく、又は六面体として形作られてもよい。場合によっては、六面体は複数の立方体であってもよい。カメラ視野が、円錐など、別の形状によって画定される別の例では、3D領域のいくつか又は全てが異なる形状を有してもよい。一実施形態において、3D領域2731〜27は、まとめて空間271の全てを完全に占有してもよく、重複しない領域であってもよい。一実施形態において、3D領域2731〜27の各々は、3D領域が他の3D領域のいくつかと境界を共有するように、3D領域の他の領域に直接隣接していてもよい。例えば、図11Aに描写するように、3D領域2731は、第一の層274で二つの他の3D領域と境界を共有し、第二の層275で別の3D領域と境界を共有する。
一実施形態において、制御回路111は、ステップ906で複数の姿勢に対して何個の姿勢が望ましいかを示す、目標数を決定するように構成されてもよく、目標数に基づいてグリッドのサイズを決定しうる。サイズは、何個の3D領域がグリッド中にあるかに影響しうる、何個の層、行、及び/又は列がグリッドの中にあるかを示してもよい。場合によっては、制御回路111によって、目標数の平方根以上である最も小さい整数として、グリッドサイズを決定してもよい。より具体的には、グリッドは、一つ以上の層を有し、一層当たりn個の行、及び一行当たりn個の列を有しうる。いくつかの状況では、グリッドは、以下でより詳細に論じるように、ロボットで達成可能な候補姿勢が、ラテン方格の空間分布又は層状空間分布を満たす必要がある例でなど、一層当たり最大でもn個のロボットで達成可能な候補姿勢を包含できうる。グリッドが更にn個の層(すなわち、グリッドがn×n×nグリッドである)を有する場合、グリッドは、上の状況では、最大でもn2個のロボットで達成可能な候補姿勢を収容し包含できうる。ステップ906で複数の姿勢をロボットで達成可能な候補姿勢のセット中から選択してもよいため、n2個のロボットで達成可能な候補姿勢は、ステップ906で複数の姿勢に対して、何個の姿勢を決定すべきかを示す目標数よりも大きい量である必要がある。したがって、制御回路111は、グリッドのサイズとして、姿勢の目標数の平方根以上である、最小の整数としての値nを決定するように構成されてもよい。nに対するそのような値によって、n2に等しい、上の状況におけるロボットで達成可能な候補姿勢の数が、ステップ906のために決定される目標数よりも大きいことが確実となりうる。決定されるサイズnは、グリッドの中に何行あるか、グリッドの中に何列あるか、グリッドの中に何層あるか、それらのいかなる組み合わせを示してもよく、又は何らかの他の情報を示しうる。
上記で言及したように、制御回路111によって、候補姿勢、又はより具体的には、ロボットで達成可能な候補姿勢である候補姿勢のサブセットが、3D領域のグリッド内に広がるように、候補姿勢に対するそれぞれの位置を決定しうる。ステップ906で決定される複数の姿勢(画像取り込み姿勢と呼ばれうる)を、ロボットで達成可能な候補姿勢の中から選択するため、ステップ906で決定される姿勢もまた、3D領域のグリッド内に広がりうる。一実施形態において、候補姿勢/ロボットで達成可能な候補姿勢/画像取り込み姿勢は、3Dグリッドの各層内に広がってもよい。例えば、それらは、図11Bのグリッドの第一の層274内に広がり、グリッドの第二の層275内に広がり、グリッドの第三の層276内に広がりうる。
いくつかの実施態様では、以下でより詳細に論じるように、制御回路111によって、ロボットで達成可能な候補姿勢である正確に一つの候補姿勢で、3D領域のグリッドの全3D領域を埋める(又はより広くは、同様にロボットで達成可能な候補姿勢である等しい数の候補姿勢で、全3D領域を埋める)ように、候補姿勢を見つけようと試みてもよい。いくつかの実施態様では、以下でもより詳細に論じるように、制御回路111によって、候補姿勢で、又はより具体的には、ロボットで達成可能な候補姿勢である候補姿勢で3D領域のサブセットのみを埋めようとして、候補姿勢の位置を決定しうる。これらの実施態様では、制御回路111によって、ある決定の層にあるロボットで達成可能な候補姿勢が、以下でより詳細に論じるように、ラテン超立方体の空間分布(ラテン方格の空間分布とも呼ばれる)、層状空間分布、又は何らかの他の分布など、ある決定の空間分布を有するような位置を決定しうる。
上記で言及したように、一実施形態において、制御回路111によって、3D領域のグリッドの全3D領域(例えば、2731〜27)を、等しい数の候補姿勢で(例えば、正確に一つの姿勢で)、又はより具体的には、ロボットで達成可能な候補姿勢でもある、等しい数の候補姿勢で埋めようとして、候補姿勢のそれぞれの位置を決定してもよい。そのような実施形態では、ロボットで達成可能な候補姿勢は、それゆえ、概して一様な空間分布を有しうる。場合によっては、ステップ906で決定される複数の姿勢(画像取り込み姿勢)は、それらのロボットで達成可能な候補姿勢の全てを含んでもよく、又はロボットで達成可能な候補姿勢の全てのうちのランダムに選択されるサブセットであってもよい。しかしながら、3D領域のグリッドの全3D領域に対して、ロボットで達成可能な候補姿勢でもある候補姿勢を見つけるのは、困難でありうる。例えば、上で論じたように、いくつかの3D領域は、その3D領域の中へのロボット150/250及びキャリブレーションパターン160/260の動作を邪魔する、障害物を有しうる。実例によっては、各候補姿勢は、ある決定の3D領域内にある位置のみでなく、姿勢角度値のセットも含みうる。姿勢角度値は、上で論じたように、仮想球の表面点に基づいて、又は何らかの他の様式で決定されうる。ロボット150/250は、キャリブレーションパターン160/260をその位置に置くことができうるが、姿勢角度値のセットを遂行するように、同様にキャリブレーションパターン160/260を傾けることができない場合があり、それゆえ、その候補姿勢を達成できない場合がある。
したがって、場合によっては、制御回路111によって、グリッド層の3D領域のサブセットのみを、ロボットで達成可能な候補姿勢で埋めるために、候補姿勢のそれぞれの位置を決定しうる。実例によっては、制御回路111によって、ロボットで達成可能な候補姿勢を見つけて、層の全3D領域を埋めることができない、又はより具体的には、そのようなロボットで達成可能な候補姿勢を定義された時間内に見つけることができないという決定に応答して、3D領域のサブセットのみを埋めるように、これらの位置を決定しうる。実例によっては、制御回路111によって、層の全3D領域を埋めるため、事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、3D領域のサブセットのみを埋めるように、位置を決定してもよい。
一実施形態において、制御回路111によって、グリッドの層内に広がる空間分布を伴う、ロボットで達成可能な候補姿勢の識別を試みるために、候補姿勢のそれぞれの位置を決定しうる。場合によっては、制御回路111によって、候補姿勢が、ラテン方格の空間分布(ラテン超立方体の空間分布とも呼ばれる)を有するロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定しうる。ロボットで達成可能な候補姿勢に対する、ラテン方格の空間分布又はラテン超立方体の空間分布は、層内の複数行の各行が、正確に一つのロボットで達成可能な候補姿勢を含み、層内の複数列の各列が、正確に一つのロボットで達成可能な候補姿勢を含む、空間分布であってもよい。より具体的な例では、上で論じたグリッドが、3D領域のn個の行及び3D領域のn個の列を各々有する、一つ以上の層を有する場合、制御回路111によって、各行(層のn個の行の)が、一つのみのロボットで達成可能な候補姿勢を含み、各列(層のn個の列の)が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、n個のロボットで達成可能な候補姿勢がn個の位置を有するという初期条件に基づいて、一つ以上の層の各層に対して、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することによって、ロボットで達成可能な候補姿勢のセットを決定してもよい。場合によっては、ロボットで達成可能な候補姿勢のそれぞれのサブセットは更に、仮想球(例えば、302)の表面上にある表面領域(例えば、306)から選択される、n個のそれぞれの表面点に基づく、姿勢角度値のn個のセットを有してもよい。
例えば、図12Aは、図11A及び11Bに描写するグリッドの層274中に、三つのロボットで達成可能な候補姿勢に対するラテン方格の空間分布の例を描写する。図12Aでは、三つのロボットで達成可能な候補姿勢をXで表す。より具体的には、三つのロボットで達成可能な候補姿勢は、行1、列1を占有する(又はより具体的には、行1、列1を占有する3D領域内の)位置にある第一の姿勢を含み、行3、列2を占有する位置にある第二の姿勢を含み、行2、列3を占有する第三の姿勢を含む。図12Aの例では、層274内における3D領域の複数行の各行は、正確に一つのロボットで達成可能な候補姿勢を含み、層274内における3D領域の複数列の各列は、正確に一つのロボットで達成可能な候補姿勢を含む。この空間分布によって、ロボットで達成可能な候補姿勢をカメラ視野272内に広げうる。
上記で言及したように、ステップ906で決定される姿勢(すなわち、画像取り込み姿勢)は、ロボットで達成可能な候補姿勢から選択されうる。したがって、一実施形態において、ロボットで達成可能な候補姿勢がラテン方格の空間分布を有する場合、複数の姿勢は、層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含む、空間分布を有しうる。例えば、図12Bは、ステップ906で決定される複数の姿勢が、図12Aの第一のロボットで達成可能な候補姿勢(行1、列1を占有する3D領域の中の)、及び図12Aの第三のロボットで達成可能な候補姿勢(行3、列2を占有する3D領域の中の)を含む、例を描写する。この例では、グリッドの行1及び行3が、複数の姿勢のうちの正確に一つの姿勢を含む一方、行2は、複数の姿勢のうちの姿勢を全く含まない。加えて、グリッドの列1及び列2は、複数の姿勢のうちの正確に一つの姿勢を含む一方、列3は、複数の姿勢のうちの姿勢を全く含まない。
一実施形態において、制御回路111により、それぞれの位置を候補姿勢に対してどのように決定するかを制御することによって、ラテン方格の空間分布を達成するように試みうる。概して言えば、制御回路111によって、ある決定の候補姿勢に対する位置を決定しているとき、以前に決定されたロボットで達成可能な候補姿勢を既に包含する3D領域に、候補姿勢を置くことを避け、以前に決定されたロボットで達成可能な候補姿勢と行又は列を共有する3D領域に、候補姿勢を置くことを避けてもよい。より具体的には、制御回路111は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、i)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、ii)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成されてもよい。
例えば、図12Cは、制御回路111により、第一の候補姿勢に対する第一の位置及び第一の姿勢角度値のセットを決定することによって、第一の候補姿勢を決定しうる、例を描写する。この例では、制御回路111によって、第一の候補姿勢を決定しているときに、第一の層274の中で、いずれのロボットで達成可能な候補姿勢もまだ識別していない。したがって、第一の候補姿勢を、第一の層274の中のいかなる3D領域にも置くことができる。場合によっては、制御回路111によって、例えば、疑似ランダム関数を使用してランダムに、第一の位置を決定してもよい。図12Cの例では、第一の位置は行2、列3にあってもよい。更にこの例では、第一の候補姿勢は、ロボットで達成可能な候補姿勢として決定されてもよい。
更に図12Cでは、制御回路111により更に、第二の候補姿勢に対して、第二の位置及び第二の姿勢角度値のセットを決定することによって、第二の候補姿勢を決定しうる。この例では、行2、列3の3D領域中にロボットで達成可能な候補姿勢があるため、制御回路によって、第二の位置に対して、行2でも列3でもない3D領域を選択しうる。図12Cの例では、制御回路111によって、行1、列2にある3D領域を選択してもよい。場合によっては、制御回路111によって、行1、列3を占有する3D領域内でランダムに位置を選択することによって、第二の位置を決定しうる。しかしながら、制御回路111によって更に、第二の候補姿勢がロボットで達成可能な候補姿勢ではないと決定してもよい。この例の制御回路111により、同じように、第三の候補姿勢に対して、第三の位置及び第三の姿勢角度値のセットを決定することによって、第三の候補姿勢を決定してもよい。例えば、制御回路111によって、グリッドの行3、列2を占有する3D領域を選択し、その3D領域内でランダムに位置を選択することによって、第三の位置を決定してもよい。この例の第三の候補姿勢は、ロボットで達成可能な候補姿勢として決定されてもよい。更にその後、制御回路111により、第四の位置及び第四の姿勢角度値のセットを決定することによって、第四の候補姿勢を決定してもよい。行2、列3の第一の3D領域にロボットで達成可能な候補姿勢があり、行3、列2の別の3D領域に別のロボットで達成可能な候補姿勢があるため、制御回路111は、第四の位置を行1、列1の3D領域内の位置に決定するように限定されうる。
一実施形態において、ロボットで達成可能な候補姿勢のセットが、一つ以上のロボットで達成可能な候補姿勢を既に含むとき、制御回路111によって、概して又は定義された時間内のいずれかで、ラテン方格の空間分布を満たすように、別のロボットで達成可能な候補姿勢を識別できない場合、セットのロボットで達成可能な候補姿勢のうちのいくつか又は全てを削除しうる。制御回路111によってその後、ラテン方格の空間分布を満たすことができる、ロボットで達成可能な候補姿勢を識別する試みに再挑戦してもよい。例えば、図12Cの例にある制御回路111によって、第四の候補姿勢がロボットで達成可能な候補姿勢でないと決定し、更に行1、列1の3D領域にてロボットで達成可能な候補姿勢を識別できない場合、制御回路111によって、ロボットで達成可能な候補姿勢のセットから、行2、列3のロボットで達成可能な候補姿勢を除去し、及び/又は行3、列2のロボットで達成可能な候補姿勢を除去しうる。制御回路111によってその後、ラテン方格の空間分布を満たすように、ロボットで達成可能な候補姿勢を見つけるようとして、追加の候補姿勢を生成してもよい。場合によっては、制御回路111によって、概して又は定義された時間内のいずれかで、ラテン方格の空間分布を満たす、ロボットで達成可能な候補姿勢をまだ識別できない場合、以下でより詳細に論じるように、層状空間分布を満たすロボットで達成可能な候補姿勢を識別するように試みうる。
一実施形態において、制御回路111によって、候補姿勢が、層状空間分布によるロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定してもよい。場合によっては、制御回路111によって、ラテン方格の分布について記載する、上で論じた初期条件を満たすことができないという決定に応答して、層状空間分布を使用しうる。例えば、n×n×nグリッドを伴う上の例では、n個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合、制御回路によって、グリッドのn個の層の各層に対して、層に対するn個のロボットで達成可能な候補姿勢が決定できるかを決定しうる。例えば、制御回路によって、定義された時間制限が切れる前に、又は他の制約より先に、初期条件を満たす、n個のロボットで達成可能な候補姿勢を見つけるのに成功したかを決定しうる。場合によっては、上で論じたように、ロボットで達成可能な候補姿勢は、仮想球の表面領域から選択(例えば、一様確率分布に基づく選択)される表面点に基づいて決定される、それぞれの配向を有しうる。そのような場合には、制御回路によって、初期条件の空間分布と、仮想球の表面点を使用して決定される、それぞれの配向との両方を有する、n個のロボットで達成可能な候補姿勢を見つけることに成功できるかを決定しているであろう。いくつかの状況では、制御回路によって、グリッドのある決定の層に対して、n個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合に決定できないと決定しうる(例えば、定義された時間制限の期限が切れる前、又は何らかの他の定義された制約より先に、層に対する初期条件を満たす、n個のロボットで達成可能な候補姿勢を見つけるのに成功していない)。場合によっては、制御回路111によって、ラテン方格の空間分布を満たす候補姿勢を見つけるよう事前に試みることなく、ラテン方格の空間分布を満たすロボットで達成可能な候補姿勢を見つけられるかを決定することなく、層状空間分布を使用しうる。ロボットで達成可能な候補姿勢の層状空間分布は、3D領域のグリッドのある決定の層に対して、(i)層内における3D領域の複数行の各行が、正確に一つのロボットで達成可能な候補姿勢を含むか、又は(ii)層内において複数列の各列が、正確に一つのロボットで達成可能な候補姿勢を含む、空間分布であってもよい(「又は」は概して、本明細書では「及び/又は」を指すように使用する)。n×n×nグリッドを伴う上の例では、制御回路111により、各行(層の複数行の)が、一つのみのロボットで達成可能な候補姿勢を含むか、又は各列(層の複数列の)が一つのみのロボットで達成可能な候補姿勢を含むかのn個の位置を、n個のロボットで達成可能な姿勢が有する、第二の条件に基づいて、グリッドの各層に対して、n個のロボットで達成する候補姿勢のそれぞれのサブセットを決定することによって、層状空間分布を達成するように試みうる。場合によっては、n個のロボットで達成可能な候補姿勢は、仮想球の表面上にある表面領域から選択される、それぞれの表面点に基づく、姿勢角度のn個のセットを有しうる。
例えば、図13Aは、図11A及び11Bに描写するグリッドの層275中に、三つのロボットで達成可能な候補姿勢に対する層状空間分布の例を描写する。図13Aの例では、三つのロボットで達成可能な候補姿勢をXで表す。より具体的には、三つのロボットで達成可能な候補姿勢は、行1、列3を占有する(又はより具体的には、行1、列1を占有する3D領域内の)位置にある第一の姿勢と、行2、列1を占有する位置にある第二の姿勢と、行3、列3を占有する第三の姿勢とを含む。各列が、正確に一つのロボットで達成可能な候補姿勢を包含しない(列3が、列の中で二つのそれぞれの3D領域を占有する、二つのロボットで達成可能な候補姿勢を含む)ものの、各行が、正確に一つのロボットで達成可能な候補姿勢を包含し含むため、この例はまだ層状空間分布を満たす。
一実施形態において、ロボットで達成可能な候補姿勢が、層状空間分布を有する場合、ステップ906で決定される複数の姿勢は、層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むかの空間分布を有しうる。例えば、図13Bは、ステップ906で決定される複数の姿勢(画像取り込み姿勢)が、図13Aの第一のロボットで達成可能な候補姿勢(行1、列3を占有する3D領域の中の)、及び図13Aの第三のロボットで達成可能な候補姿勢(行3、列3を占有する3D領域の中の)を含む、例を描写する。この例では、グリッドの列3が、複数の姿勢のうちの二つの姿勢を含むが、グリッドの行1及び行3が、複数の姿勢のうちの正確に一つの姿勢を含む一方、行2は、複数の姿勢のうちの姿勢を全く含まない。
一実施形態において、制御回路111により、候補姿勢の位置を制御することによって、層状空間分布を達成するように試みうる。例えば、制御回路111は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、i)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有しないか、又はii)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しないかの位置であると、決定するように構成されてもよい。
一実施形態において、制御回路111によって、候補姿勢が、いかなるランダム空間分布によるロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定してもよい。場合によっては、制御回路111によって、ラテン方格の空間分布を満たすのに十分なロボットで達成可能な候補姿勢を見つけることができず、層状空間分布を満たすのに十分なロボットで達成可能な候補姿勢を見つけることができないという決定に応答して、ロボットで達成可能な候補姿勢に対して、いかなるランダム空間分布を使用してもよい。場合によっては、制御回路111によって、ラテン方格の空間分布を満たすよう事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、及び/又は層状空間分布を満たすよう事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、ロボットで達成可能な候補姿勢に対して、いかなるランダム空間分布を使用してもよい。n×n×nグリッドを伴う上の例では、制御回路111は、n個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合に決定できない、及び/又はn個のロボットで達成可能な候補姿勢が、第二の条件を満たす必要がある場合に決定できないと決定するように構成されてもよい。例えば、制御回路によって、定義された時間制限内に、グリッドの層に対する初期条件を満たす、n個のロボットで達成可能な候補姿勢を見つけることに成功していないと決定してもよく、及び/又は定義された時間制限内に、層に対する第二の条件を満たす、n個のロボットで達成可能な候補姿勢を見つけることに成功していないと決定された。初期条件はラテン方格の空間分布と関連付けられ、第二の条件は層状空間分布と関連付けられる。言い換えると、制御回路111は、ラテン方格の空間分布及び層状空間分布を満たす、n個のロボットで達成可能な候補姿勢を見つけることができない場合がある。そのような状況では、制御回路111によって、グリッドのその層に対して、n個のロボットで達成可能な候補姿勢が、(a)層のn個のそれぞれの3D領域内に、ランダムに分布するn個の位置を有する、第三の条件に基づいて、その層に対してn個のロボットで達成可能な候補姿勢のそれぞれのサブセットの決定を行いうる。場合によっては、n個のロボットで達成可能な候補姿勢は、仮想球の表面上にある表面領域から選択される、n個のそれぞれの表面点に基づく、姿勢角度値のn個のセットを有しうる。
図14Aは、位置が、図11A及び11Bに描写する、グリッドの層276の三つの異なる3D領域を占有するように、位置がランダムに決定された、三つのロボットで達成可能な候補姿勢の例を描写する。図14Bは、図14Aのロボットで達成可能な候補姿勢の中から選択される、二つの画像取り込み姿勢の例を描写する。
ラテン方格の空間分布及び層状空間分布に関する上の議論には、複数の行及び複数の列を伴う層を有するグリッドを伴い、各行は、正確に一つのロボットで達成可能な候補姿勢を包含し、及び/又は各列は、正確に一つのロボットで達成可能な候補姿勢を包含する。一実施形態において、ラテン方格の空間分布及び層状空間分布は、より広くは、その他の行として等しい数のロボットで達成可能な候補姿勢を有する各行、及び/又はその他の列として等しい数のロボットで達成可能な候補姿勢を有する各列を伴いうる。例えば、制御回路111によって、いくつかの状況では、グリッドのある決定の層内の各行が、正確に二つのロボットで達成可能な候補姿勢を有し、層内の各列が、正確に二つのロボットで達成可能な候補姿勢を有するような、ロボットで達成可能な候補姿勢を決定しうる。
一実施形態において、制御回路111は、層ごとにある決定の空間分布を満たしているかの決定を行うように構成されてもよい。例えば、制御回路111によって、ある決定の候補姿勢の位置を決定し、位置は、グリッド(例えば、図11A及び11Bのグリッド)のある決定の層内の、ある決定の3D領域内にあり、制御回路111によって、候補姿勢が、ロボットで達成可能な候補姿勢のうちの一つと同じ行又は同じ列の中にあるかを評価するように、候補姿勢の位置と既存のロボットで達成可能な候補姿勢の位置とを比較することによって、ラテン方格の空間分布又は層状空間分布が満たされているかを評価してもよい。しかしながら、制御回路111によって、より具体的には、候補姿勢が、グリッドの同じ層の中のロボットで達成可能な候補姿勢と同じ行又は同じ列の中になるかを決定するために、候補姿勢の位置と、その層の中にある、それらのロボットで達成可能な候補姿勢のみのそれぞれの位置とを比較してもよい。層ごとの決定に関する例は、第一の層274、第二の層275、及び第三の層276の各層に対して、ラテン方格の空間分布を満たす、ロボットで達成可能な候補姿勢を有するグリッドを描写する図15Aに示す。第一のロボットで達成可能な候補姿勢の対が、同じ行及び同じ列を有する、それぞれの3D領域の中にあるとしても、制御回路111によって、図15Aに描写する空間分布を決定しうる。より具体的には、ロボットで達成可能な候補姿勢のうちの一つは、層274中の行1、列1である3D領域の中にあり、ロボットで達成可能な候補姿勢の別の一つは、層276中だが同様に行1、列1にある別の3D領域の中にある。しかしながら、この例の制御回路111によって、層ごとに、ある決定の空間分布を満たすかの評価を行うため、図15Aのロボットで達成可能な候補姿勢は、層274、275、276の各々に対してラテン方格の空間分布を満たすとまだみなされうる。
一実施形態において、制御回路111は、グリッドの異なる層が、異なる空間分布を有することが可能になるように構成されてもよい。例えば、図15Bは、制御回路111によって、グリッドの第一の層274に対してラテン方格の空間分布を有する、三つのロボットで達成可能な候補姿勢を識別し、グリッドの第二の層275に対して層状空間分布を満たす、別の三つのロボットで達成可能な候補姿勢を識別し、グリッドの第三の層276に対してランダム空間分布を満たす、更に別の三つのロボットで達成可能な候補姿勢を識別した例を描写する。場合によっては、制御回路111によって、第二の層275の中でラテン方格の空間分布を満たすことができる、三つのロボットで達成可能な候補姿勢を見つけることに成功できなかった後に、第二の層275の中で、ロボットで達成可能な候補姿勢に対する層状空間分布を満たすように、位置を決定していてもよい。
一実施形態において、制御回路111によって、ラテン方格の空間分布を満たすために、より厳しい条件を適用しうる。より厳しい条件には、m個の層を有するグリッドに分けられる、空間を伴ってもよく、各層は、n個の行及びn個の列を有する。層の数は、行若しくは列の数と同じであってもよく、又は行若しくは列の数と異なってもよい。m個の層の各層に対して、各行は、一つのみのロボットで達成可能な候補姿勢を有してもよく、各列は、一つのみのロボットで達成可能な候補姿勢を有してもよい。このより厳しい条件下において、グリッドの中の各積層は、ロボットで達成可能な候補姿勢のみを有してもよい。積層は、グリッドのそれぞれの異なる層上にあり、それぞれの層内で同じ行及び同じ列を占有していた、グリッドのm個の3D領域を指してもよい。図15Cは、上で論じた、より厳しい条件を満たす、九つのロボットで達成可能な候補姿勢の例を描写する。
上記で言及したように、ステップ906で決定される複数の姿勢は、カメラ視野(例えば、272)内の空間を分ける3D領域のグリッド内に分布する、ロボットで達成可能な候補姿勢から選択されうる。選択されるロボットで達成可能な候補姿勢の総数は、上で論じた目標数に等しくてもよい。複数の姿勢は、複数のキャリブレーション画像を生成するように使用されてもよく、キャリブレーション画像の総数も、上で論じた目標数に等しい。例として、図15A〜15Cは、制御回路111によって、カメラ視野内に分布する九つのロボットで達成可能な候補姿勢を識別した状況を示す。この例では、目標数が、例えば、8に等しい場合、ステップ906は、九つのロボットで達成可能な候補姿勢の中から八つの姿勢を選択することを伴いうる。一実施形態において、選択は、疑似ランダム関数の使用を通じてなど、ランダムに行われてもよい。
上の議論が示すように、ステップ906は、姿勢角度値の複数のそれぞれのセットを決定することによる、複数の姿勢の決定を伴ってもよく、姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択される、それぞれの表面点に基づいて決定される。場合によっては、ステップ906は更に、ラテン方格の空間分布又は層状空間分布など、望ましい空間分布を満たそうと試みるように、複数の姿勢の位置の決定を伴いうる。一実施形態において、ステップ906は、姿勢角度値の複数のそれぞれのセットの決定を省略するために修正されてもよく、又は姿勢角度値の複数のそれぞれのセットの決定を、仮想球上の表面領域内からの表面点の選択を伴わない、何らかの他の様式で行うように修正されてもよい。例えば、そのように修正されたステップ906では、姿勢角度値のそれぞれのセットの中の姿勢角度値の各々を、上で論じたように、一様確率分布関数に基づいてランダムに決定してもよい。この実施形態では、ステップ902及び904は、省略されてもよく、又はまだ含まれてもよく、ステップ906はまだ、複数の姿勢の決定を伴ってもよい。複数の姿勢は、複数の姿勢に対するそれぞれの位置の決定によって決定されてもよく、それぞれの位置は、ラテン方格の空間分布又は層状空間分布など、望ましい空間分布を満たすように決定されてもよい。例えば、そのように修正されたステップ906は、上で論じたように、3D領域の複数行及び3D領域の複数列の一つ以上の層に、カメラ視野内の空間を分けるグリッドの決定と、候補姿勢が、ラテン方格の空間分布又は層状空間分布を満たす、ロボットで達成可能な候補姿勢になるであろうような、候補姿勢のそれぞれの位置の決定とを伴いうる。そのように修正されたステップ906によって更に、グリッドの各層に対して、行の各々が、複数の姿勢のうちの一つ以下の姿勢を含み、各列が、複数の姿勢のうちの一つ以下の姿勢を含む、複数の姿勢がもたらされうる。
図9に戻ると、方法900は更に、制御回路111によって、キャリブレーションパターンの配置を制御するために、複数の動作コマンド(ロボット動作コマンドとも呼ばれる)を出力する、ステップ908を含みうる。例えば、ロボット動作コマンドは、キャリブレーションパターン160/260をある決定の姿勢へ置くように、ロボット150/250を制御するための複数のモーターコマンドを伴ってもよく、複数のモーターコマンドは、キャリブレーションパターン160/260を姿勢のある決定の位置へ動かすこと、及び/又はキャリブレーションパターン160/260を姿勢のある決定のパターン配向へ傾けることを伴いうる。実例によっては、ロボット動作コマンドは、ステップ906で決定された姿勢に対して決定される、姿勢角度値のそれぞれのセットに基づいてもよい。実例によっては、ロボット動作コマンドは、望ましい姿勢に基づいてロボット動作コマンドを決定する、逆運動学関数に基づいて決定されうる。
一実施形態において、方法900は、制御回路によって更に、複数のキャリブレーション画像を受信するステップ910を含んでもよく、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し(例えば、取り込み)、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成される。例えば、八つの姿勢がステップ906で決定される場合、ステップ910で制御回路111によって、八つのキャリブレーション画像を受信しうる。場合によっては、カメラ170/270は、八つの姿勢を生成するために、キャリブレーションパターン160/260が、八つの姿勢の各々にある間に、キャリブレーションパターン160/260の写真を撮っていてもよく、又は他の方法で撮像していてもよい。いくつかの実施態様では、ステップ910で制御回路111によって、カメラ170/270にキャリブレーションパターン160/260の写真を撮らせる、カメラコマンドを生成させてもよく、カメラコマンドを(例えば、通信インターフェース113を介して)カメラ170/270へ出力してもよい。一実施形態において、制御回路111によって、カメラ170/270から、通信インターフェース113を介してなど、複数のキャリブレーション画像を受信してもよい。一実施形態において、制御回路111によって、非一時的コンピューター可読媒体115など、キャリブレーション画像が記憶される記憶デバイスから、又は何らかの他の非一時的コンピューター可読媒体から、複数のキャリブレーション画像を受信してもよい。
一実施形態において、方法900は更に、制御回路111によって、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定する、ステップ912を含んでもよい。上記で言及したように、カメラキャリブレーションパラメーターは、カメラ170/270の射影行列若しくはレンズひずみパラメーターなど、内部カメラキャリブレーションパラメーターであってもよく、又はロボット150/250に対するカメラ170/270の位置及び配向など、カメラ170/270とその環境との間の空間関係を記述するパラメーターであってもよい。一実施形態において、制御回路111によって、パターン座標系におけるキャリブレーションパターン160/260上のパターン要素(例えば、ドット)の定義された位置と、パターン要素がキャリブレーション画像の中に現れる位置との間の関係を記述する方程式に基づいて、カメラキャリブレーションパラメーターの推定値を決定しうる。カメラキャリブレーションパラメーターの推定値決定については、「METHOD AND SYSTEM FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」と題される米国特許出願番号第16/295,940号(参照によりその内容全体が本明細書に組み込まれる)により詳細に記載されている。
一実施形態において、制御回路は、カメラキャリブレーションを行った後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される、後続のロボット動作コマンドを出力するように構成されうる。例えば、後続の画像は、ロボット150/250によってパレットから降ろされるべき、倉庫の中の包装品又は包装品の積層の画像でありうる。実例によっては、制御回路111は、「METHOD AND SYSTEM FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」と題される米国特許出願番号第16/295,940号(参照によりその内容全体が本明細書に組み込まれる)にもより詳細に記載するように、包装品の画像と、ステップ912で決定されるカメラキャリブレーションパラメーターの推定値とに基づいて、ロボット150/250と包装品との間の空間関係、及び/又はカメラ170/270と包装品との間の空間関係を決定するように構成されてもよい。その後、制御回路111は、包装品と、ロボット150/250又はカメラ170/270との間の決定された空間関係に基づいてロボット動作コマンドを生成し、ロボット動作コマンドをロボット150/250へ出力するように構成されうる。
様々な実施形態の簡潔な説明
実施形態1は、通信インターフェース及び制御回路を備えるコンピューティングシステムに関する。通信インターフェースは、ロボット、及び、カメラ視野を有するカメラと通信するように構成され、ロボットは、ロボット上に配置されたキャリブレーションパターンを有する。制御回路は、コンピューティングシステムがロボット及びカメラと通信するとき、カメラキャリブレーションを実行するように構成される。かかる実行は、カメラキャリブレーションを実行するためにパターン配向の範囲を決定することであって、パターン配向の範囲は、キャリブレーションパターンに対する配向の範囲であることと、仮想球の表面上に表面領域を決定することであって、仮想球の表面は、キャリブレーションパターンに対する可能なパターン配向を表し、表面領域は、カメラキャリブレーションを行うためのパターン配向の範囲を表すことと、カメラキャリブレーションが実行されているときにキャリブレーションパターンが採用する複数の姿勢を決定することであって、複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、複数のそれぞれのセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択されるそれぞれの表面点に基づくことと、キャリブレーションパターンの配置を制御するための複数のロボット動作コマンドを出力することであって、複数のロボット動作コマンドは、決定される複数の姿勢に基づいて生成されることと、複数のキャリブレーション画像を受信することであって、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し、かつ、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成されることと、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされる。制御回路は、カメラキャリブレーションが実行された後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される後続のロボット動作コマンドを出力するようにさらに構成される。
実施形態2は、実施形態1のコンピューティングシステムを含む。この実施形態では、制御回路は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、一様確率分布に従って、それぞれの表面点の各々を表面領域内からランダムに選択するように構成される。
実施形態3は、実施形態2のコンピューティングシステムを含む。この実施形態では、制御回路は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、それぞれの表面点の各々を、一様な表面点のセットのみの中からランダムに選択するように構成され、一様な表面点のセットは、仮想球の表面上の表面領域内に一様に分布する表面点のセットである。
実施形態4は、実施形態1〜3のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、仮想球の表面上にある表面領域は、一様な幅の円形帯を形成する。
実施形態5は、実施形態1〜4のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、姿勢角度値の複数のセットの姿勢角度値の各セットは、それぞれの回転軸を回るキャリブレーションパターンのそれぞれの回転量を表す角度値のセットであり、それぞれの軸は、互いに直交し、それぞれの軸の各々は、カメラ光軸と平行であるか、又は直交する。
実施形態6は、実施形態5のコンピューティングシステムを含む。この実施形態では、仮想球の表面上にある各表面点は、キャリブレーションパターンに対する法線ベクトルに表面点を指し示させるであろう、キャリブレーションパターンのそれぞれのパターン配向を表す。更に制御回路は、逆正接関数を、それぞれの表面点のそれぞれの座標に適用することによって、それぞれの表面点に基づいて、複数のセットの姿勢角度値の各セットを決定するように構成される。
実施形態7は、実施形態1〜6のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定することと、複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、(i)層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、かつ、(ii)層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
実施形態8は、実施形態1〜6のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定することと、複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、(i)層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は(ii)層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むことと、によって、複数の姿勢を決定するように構成される。
実施形態9は、実施形態1〜6のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、(a)候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定し、仮想球の表面上にある表面領域内からそれぞれの表面点を選択し、選択される表面点に基づいて、候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定されることと、(b)ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定することと、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することとによってなされることと、および、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することと、によって複数の姿勢を決定するように構成される。
実施形態10は、実施形態9のコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定するように構成される。更に制御回路は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、かつ、i)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、また、ii)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成される。
実施形態11は、実施形態9のコンピューティングシステムを含む。この実施形態では、制御回路は、複数の姿勢に対していくつの姿勢が望ましいかを示す目標数を決定し、姿勢の目標数に基づいて、グリッドサイズnを決定し、カメラ視野内の空間を、3D領域のn個の行及び3D領域のn個の列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定し、一つ以上の層の各層に対して、ロボットで達成可能な候補姿勢のセットの一部として、i)層のn個の行の各行が、一つのみのロボットで達成可能な候補姿勢を含み、ii)層のn個の列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、n個のロボットで達成可能な候補姿勢がn個の位置を有するという初期条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定するように構成される。
実施形態12は、実施形態11のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、(a)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、層に対するn個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかを決定することであって、初期条件は、第一の条件であることと、(b)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、i)層の複数行の各行が、一つのみのロボットで達成可能な候補姿勢を含むか、又はii)層の複数列の各列が、一つのみのロボットで達成可能な候補姿勢を含むかの、第二の空間分布で、n個のロボットで達成可能な候補姿勢がn個の位置を有するという、第二の条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
実施形態13は、実施形態12のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、(a)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、層に対するn個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できるかどうかを決定することと、(b)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、n個のロボットで達成可能な候補姿勢が、層のn個のそれぞれの3D領域内にランダムに分布するn個の位置を有するという、第三の条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を更に行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
実施形態14は、実施形態12又は13のコンピューティングシステムを含む。この実施形態では、グリッドはn個の層を有し、グリッドサイズnは、複数の姿勢に対する姿勢の目標数の平方根を決定することと、グリッドサイズnを、姿勢の目標数の平方根以上である最も小さい整数として決定することとによって決定される。
実施形態15は、通信インターフェース及び制御回路を備えるコンピューティングシステムに関する。通信インターフェースは、ロボットと、カメラ視野を有するカメラと通信するように構成され、ロボットは、ロボット上に配置されたキャリブレーションパターンを有する。制御回路は、コンピューティングシステムがロボット及びカメラと通信するとき、カメラキャリブレーションを実行するように構成される。かかる実行は、カメラキャリブレーションが実行されているときにキャリブレーションパターンが採用する複数の姿勢を決定することであって、複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、複数のパターン配向とのそれぞれの組み合わせによって画定されることと、キャリブレーションパターンの配置を制御するための複数のロボット動作コマンドを出力することであって、複数のロボット動作コマンドは、決定される複数の姿勢に基づいて生成されることと、複数のキャリブレーション画像を受信することであって、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し、かつ、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成されることと、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされる。制御回路は、カメラキャリブレーションが実行された後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される後続のロボット動作コマンドを出力するようにさらに構成される。
実施形態16は、実施形態15のコンピューティングシステムを含む。この実施形態では、制御回路は、(a)カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定することと、(b)複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、(i)層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、かつ、(ii)層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
実施形態17は、実施形態15のコンピューティングシステムを含む。この実施形態では、コンピューティングシステムは、(a)カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定することと、(b)複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、(i)層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は(ii)層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
実施形態18は、実施形態15のコンピューティングシステムを含む。この実施形態では、コンピューティングシステムは、(a)候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定することによって、決定されることと、(b)ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定することとと、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することとによってなされる、ことと、(c)ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することと、によって複数の姿勢を決定するように構成される。
実施形態19は、実施形態18のコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、3D領域の複数行及び3D領域の複数列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定するように構成され、制御回路は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、かつ、i)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、また、ii)その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成される。
実施形態20は、実施形態18のコンピューティングシステムを含む。この実施形態では、制御回路は、複数の姿勢に対していくつの姿勢が望ましいかを示す目標数を決定し、姿勢の目標数に基づいて、グリッドサイズnを決定し、カメラ視野内の空間を、3D領域のn個の行及び3D領域のn個の列を各々有する一つ以上の層に分ける、3D領域のグリッドを決定し、一つ以上の層の各層に対して、ロボットで達成可能な候補姿勢のセットの一部として、i)層のn個の行の各行が、一つのみのロボットで達成可能な候補姿勢を含み、ii)層のn個の列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、n個のロボットで達成可能な候補姿勢がn個の位置を有するという初期条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定するように構成される。
実施形態21は、実施形態20のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、(a)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、層に対するn個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかどうかを決定することであって、初期条件は、第一の条件であることと、(b)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、i)層の複数行の各行が、一つのみのロボットで達成可能な候補姿勢を含むか、又はii)層の複数列の各列が、一つのみのロボットで達成可能な候補姿勢を含むかの第二の空間分布で、n個のロボットで達成可能な候補姿勢がn個の位置を有するという、第二の条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
実施形態22は、実施形態21のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、(a)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、層に対するn個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかどうかを決定することと、(b)n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、n個のロボットで達成可能な候補姿勢が、層のn個のそれぞれの3D領域内にランダムに分布するn個の位置を有するという、第三の条件に基づいて、n個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を更に行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
実施形態23は、実施形態20〜22のうちのいずれか一つのコンピューティングシステムを含み、グリッドはn個の層を有し、グリッドサイズnは、(a)複数の姿勢に対する姿勢の目標数の平方根を決定することと、(b)グリッドサイズnを、姿勢の目標数の平方根以上である最も小さい整数として決定することとによって決定される。
実施形態24は、実施形態15〜23のうちのいずれか一つのコンピューティングシステムを含み、複数のそれぞれのパターン配向は、姿勢角度値の複数のそれぞれのセットによって画定され、制御回路は、カメラキャリブレーションを行うためにパターン配向の範囲を決定することであって、パターン配向の範囲は、キャリブレーションパターンに対する配向の範囲であることと、仮想球の表面上に表面領域を決定することであって、仮想球の表面は、キャリブレーションパターンに対する可能なパターン配向を表し、表面領域は、カメラキャリブレーションを行うためのパターン配向の範囲を表すことと、仮想球の表面上にある表面領域内から選択される(例えば、一様確率分布に基づいて選択される)、それぞれの表面点に基づいて、複数のそれぞれのセットの姿勢角度値の各セットを決定することとを行うように構成される。例えば、実施形態24に対する上記技法は、実施形態18で使用されてもよい。そのような実例では、制御回路は、(a)候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定し、仮想球の表面上にある表面領域内からそれぞれの表面点を選択し、選択される表面点に基づいて、候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定されることと、(b)ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定し、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することによってなされることと、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することとによって、複数の姿勢を決定するように構成される。
様々な実施形態について上に記載してきたが、それらは本発明の図解及び例としてのみ提示したもので、限定によるものではないことは理解されるべきである。当業者にとって、発明の精神及び範囲から逸脱することなく、実施形態において形態及び詳細を様々に変更できることは明らかであろう。したがって、本発明の範囲は上述の例示的実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。また、本明細書で論じた各実施形態、及び本明細書で言及した各参考文献の各特徴は、いかなる他の実施形態の特徴と組み合わせて使用できることも理解されるであろう。本明細書で論じた全ての特許及び刊行物は、参照によりその全体が本明細書に組み込まれる。