(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムであって、
ロボット、及び、カメラ視野を有するカメラと通信するように構成された通信インターフェースであって、前記ロボットが、当該ロボット上に配置されたキャリブレーションパターンを有する、通信インターフェースと、
前記コンピューティングシステムが前記ロボット及び前記カメラと通信するとき、カメラキャリブレーションを実行するように構成された制御回路と、を備え、
前記カメラキャリブレーションの実行は、
前記カメラキャリブレーションを実行するためにパターン配向の範囲を決定することであって、前記パターン配向の範囲は、前記キャリブレーションパターンに対する配向の範囲である、ことと、
仮想球の表面上に表面領域を決定することであって、前記仮想球の前記表面は、前記キャリブレーションパターンに対する可能なパターン配向を表し、前記表面領域は、前記カメラキャリブレーションを実行するための前記パターン配向の範囲を表す、ことと、
前記カメラキャリブレーションが実行されているときに前記キャリブレーションパターンが採用する複数の姿勢を決定することであって、前記複数の姿勢は、前記カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、前記複数のそれぞれのセットの姿勢角度値の各セットは、前記仮想球の前記表面上にある前記表面領域内から選択されるそれぞれの表面点に基づく、ことと、
前記キャリブレーションパターンの配置を制御するための、複数のロボット動作コマンドを出力することであって、前記複数のロボット動作コマンドは、決定される前記複数の姿勢に基づいて生成される、ことと、
複数のキャリブレーション画像を受信することであって、前記複数のキャリブレーション画像の各キャリブレーション画像は、前記キャリブレーションパターンを表し、かつ、前記キャリブレーションパターンが前記複数の姿勢のそれぞれの姿勢を有する間に生成される、ことと、
前記複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされ、
前記制御回路は、前記カメラキャリブレーションが実行された後、前記カメラから前記通信インターフェースを介して後続の画像を受信し、前記後続の画像と、前記カメラキャリブレーションパラメーターの前記推定値とに基づいて生成される後続のロボット動作コマンドを出力するようにさらに構成される、コンピューティングシステム。
【請求項２】
前記制御回路は、前記姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、一様確率分布に従って、前記それぞれの表面点の各々を前記表面領域内からランダムに選択するように構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
前記制御回路は、前記姿勢角度値のそれぞれのセットが基づく前記それぞれの表面点に対して、前記それぞれの表面点の各々を、一様な表面点のセットのみの中からランダムに選択するように構成され、
前記一様な表面点のセットは、前記仮想球の前記表面上の前記表面領域内に一様に分布する表面点のセットである、請求項２に記載のコンピューティングシステム。
【請求項４】
前記仮想球の前記表面上にある前記表面領域は、一様な幅の円形帯を形成する、請求項１に記載のコンピューティングシステム。
【請求項５】
前記姿勢角度値の複数のセットの前記姿勢角度値の各セットは、それぞれの回転軸を回る前記キャリブレーションパターンのそれぞれの回転量を表す角度値のセットであり、
前記それぞれの軸は、互いに直交し、
前記それぞれの軸の各々は、カメラ光軸と平行であるか、又は直交する、請求項１に記載のコンピューティングシステム。
【請求項６】
前記仮想球の前記表面上にある各表面点は、前記キャリブレーションパターンに対する法線ベクトルに前記表面点を指し示させるであろう、前記キャリブレーションパターンのそれぞれのパターン配向を表し、
前記制御回路は、逆正接関数を、それぞれの表面点のそれぞれの座標に適用することによって、前記それぞれの表面点に基づいて、前記複数のセットの姿勢角度値の各セットを決定するように構成される、請求項５に記載のコンピューティングシステム。
【請求項７】
前記制御回路は、
前記カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、
前記複数の姿勢が前記グリッド内に空間分布を有するように、前記複数の姿勢の前記複数の位置を決定することであって、前記グリッドでは、前記一つ以上の層の各層に対して、（ｉ）前記層内の前記複数行の各行が、前記複数の姿勢のうちの一つ以下の姿勢を含み、かつ、（ｉｉ）前記層内の前記複数列の各列が、前記複数の姿勢のうちの一つ以下の姿勢を含む、ことと、によって、
前記複数の姿勢を決定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項８】
前記制御回路は、
前記カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、
前記複数の姿勢が前記グリッド内に空間分布を有するように、前記複数の姿勢の前記複数の位置を決定することであって、前記グリッドでは、前記一つ以上の層の各層に対して、（ｉ）前記層内の前記複数行の各行が、前記複数の姿勢のうちの一つ以下の姿勢を含むか、又は（ｉｉ）前記層内の前記複数列の各列が、前記複数の姿勢のうちの一つ以下の姿勢を含む、ことと、によって、
前記複数の姿勢を決定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項９】
前記制御回路は、
候補姿勢のセットを決定することであって、前記候補姿勢のセットの各候補姿勢は、前記候補姿勢に対して前記カメラ視野内のそれぞれの位置を決定し、前記仮想球の前記表面上にある前記表面領域内からそれぞれの表面点を選択し、選択される前記表面点に基づいて、前記候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定される、ことと、
ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、前記候補姿勢のセットの各候補姿勢に対して、前記候補姿勢がロボットで達成可能かを決定することと、前記候補姿勢がロボットで達成可能であるという決定に応答して、前記候補姿勢を前記ロボットで達成可能な候補姿勢のセットへ追加することとによってなされる、ことと、
前記ロボットで達成可能な候補姿勢のセットのみの中から、前記複数の姿勢を選択することと、によって、
前記複数の姿勢を決定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１０】
前記制御回路は、前記カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定するように構成され、
前記制御回路は、前記候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、
前記グリッドの前記一つ以上の層のうちの層の中にあり、かつ、
ｉ）その層の中で、前記ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、また、
ｉｉ）その層の中で、前記ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成される、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記制御回路は、
前記複数の姿勢に対していくつの姿勢が望ましいかを示す目標数を決定し、
前記姿勢の目標数に基づいて、グリッドサイズｎを決定し、
前記カメラ視野内の空間を、３Ｄ領域のｎ個の行及び３Ｄ領域のｎ個の列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定し、
前記一つ以上の層の各層に対して、前記ロボットで達成可能な候補姿勢のセットの一部として、ｉ）前記層のｎ個の行の各行が、一つのみのロボットで達成可能な候補姿勢を含み、ｉｉ）前記層のｎ個の列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという初期条件に基づいて、前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定する、ように構成される、請求項９に記載のコンピューティングシステム。
【請求項１２】
前記制御回路は更に、前記グリッドの前記一つ以上の層の各層に対して、
前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、前記初期条件を満たす必要がある場合に、前記層に対する前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できるかを決定することであって、前記初期条件は、第一の条件である、ことと、
前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、前記初期条件を満たす必要がある場合に、前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、ｉ）前記層の前記複数行の各行が、一つのみのロボットで達成可能な候補姿勢を含むか、又はｉｉ）前記層の前記複数列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第二の空間分布で、前記ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという、第二の条件に基づいて、前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を行うことによって、
前記ロボットで達成可能な候補姿勢のセットを決定するように構成される、請求項１１に記載のコンピューティングシステム。
【請求項１３】
前記制御回路は更に、前記グリッドの前記一つ以上の層の各層に対して、
前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、前記第二の条件を満たす必要がある場合に、前記層に対する前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できるかどうかを決定することと、
前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、前記第二の条件を満たす必要がある場合に、前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、前記ｎ個のロボットで達成可能な候補姿勢が、前記層のｎ個のそれぞれの３Ｄ領域内にランダムに分布するｎ個の位置を有するという、第三の条件に基づいて、前記ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を更に行うことによって、
前記ロボットで達成可能な候補姿勢のセットを決定するように構成される、請求項１２に記載のコンピューティングシステム。
【請求項１４】
前記グリッドは、ｎ個の層を有し、
前記グリッドサイズｎは、
前記複数の姿勢に対する前記姿勢の目標数の平方根を決定することと、
前記グリッドサイズｎを、前記姿勢の目標数の前記平方根以上である最も小さい整数として決定することと、によって決定される、請求項１２に記載のコンピューティングシステム。
【請求項１５】
非一時的コンピューター可読媒体であって、当該非一時的コンピューター可読媒体に記憶された命令を有する非一時的コンピューター可読媒体であって、
コンピューティングシステムの制御回路によって実行されるとき、前記命令は、前記制御回路に、
前記コンピューティングシステムが、カメラ視野を有するカメラと、ロボット上に配置したキャリブレーションパターンを有する当該ロボットと通信するとき、
カメラキャリブレーションを実行させ、
前記カメラキャリブレーションの実行は、
前記カメラキャリブレーションを実行するためにパターン配向の範囲を決定することであって、前記コンピューティングシステムは、前記ロボット及び前記カメラと通信するように構成された通信インターフェースを有し、前記パターン配向の範囲は、前記キャリブレーションパターンに対する配向の範囲である、ことと、
仮想球の表面上に表面領域を決定することであって、前記仮想球の前記表面は、前記キャリブレーションパターンに対する可能なパターン配向を表し、前記表面上の前記領域は、前記カメラキャリブレーションを実行するための前記パターン配向の範囲を表す、ことと、
前記カメラキャリブレーションが実行されているときに前記キャリブレーションパターンが採用する複数の姿勢を決定することであって、前記複数の姿勢は、前記カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、前記複数のそれぞれのセットの姿勢角度値の各セットは、前記仮想球の前記表面上にある前記表面領域内から選択されるそれぞれの表面点に基づく、ことと、
前記キャリブレーションパターンの配置を制御するための、複数のロボット動作コマンドを出力することであって、前記複数のロボット動作コマンドは、決定される前記複数の姿勢に基づいて生成される、ことと、
複数のキャリブレーション画像を受信することであって、前記複数のキャリブレーション画像の各キャリブレーション画像は、前記キャリブレーションパターンを表し、かつ、前記キャリブレーションパターンが前記複数の姿勢のそれぞれの姿勢を有する間に生成される、ことと、
前記複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされ、
前記命令は、前記カメラキャリブレーションが実行された後で前記制御回路によって実行されるとき、前記制御回路に、さらに、前記カメラから前記通信インターフェースを介して後続の画像を受信させ、前記後続の画像と、前記カメラキャリブレーションパラメーターの前記推定値とに基づいて生成される後続のロボット動作コマンドを出力させる、非一時的コンピューター可読媒体。
【請求項１６】
前記命令は、前記制御回路によって実行されるとき、前記制御回路に、一様な表面点のセットのみの中から表面点をランダムに選択することによって、前記複数の姿勢の前記決定を行わせ、
前記一様な表面点のセットは、前記仮想球の前記表面上の前記表面領域内に一様に分布する表面点のセットであり、
前記姿勢角度値のそれぞれのセットは、選択される前記表面点のセットに基づく、請求項１５に記載の非一時的コンピューター可読媒体。
【請求項１７】
前記命令は、前記制御回路によって実行されるとき及び前記コンピューティングシステムが前記ロボット及び前記カメラと通信するとき、
前記カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、
前記複数の姿勢が前記グリッド内に空間分布を有するように、前記複数の姿勢の前記複数の位置を決定することであって、前記グリッドでは、前記一つ以上の層の各層に対して、（ｉ）前記層内の前記複数行の各行が、前記複数の姿勢のうちの一つ以下の姿勢を含み、かつ、（ｉｉ）前記層内の前記複数列の各列が、前記複数の姿勢のうちの一つ以下の姿勢を含む、ことと、によって、
前記制御回路に前記複数の姿勢を決定させる、請求項１５に記載の非一時的コンピューター可読媒体。
【請求項１８】
前記命令は、前記制御回路によって実行されるとき及び前記コンピューティングシステムが前記ロボット及び前記カメラと通信するとき、
候補姿勢のセットを決定することであって、前記候補姿勢のセットの各候補姿勢は、前記候補姿勢に対して前記カメラ視野内のそれぞれの位置を決定し、前記仮想球の前記表面上にある前記表面領域内からそれぞれの表面点を選択し、選択される前記表面点に基づいて、前記候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定される、ことと、
ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、前記候補姿勢のセットの各候補姿勢に対して、前記候補姿勢がロボットで達成可能かを決定することと、前記候補姿勢がロボットで達成可能であるという決定に応答して、前記候補姿勢を前記ロボットで達成可能な候補姿勢のセットへ追加することとによってなされる、ことと、
前記ロボットで達成可能な候補姿勢のセットのみの中から、前記複数の姿勢を選択することと、によって、
前記制御回路に前記複数の姿勢を決定させる、請求項１５に記載の非一時的コンピューター可読媒体。
【請求項１９】
ロボット制御を行うための方法であって、
コンピューティングシステムによって、カメラキャリブレーションを実行するためのパターン配向の範囲を決定することであって、前記コンピューティングシステムは、ロボット上に配置したキャリブレーションパターンを有する当該ロボットと、カメラと通信するように構成された通信インターフェースを備える、ことと、
前記コンピューティングシステムによって、仮想球の表面上に表面領域を決定することであって、前記仮想球の前記表面は、前記キャリブレーションパターンに対する可能なパターン配向を表し、前記表面上の前記領域は、前記カメラキャリブレーションを実行するための前記パターン配向の範囲を表す、ことと、
前記コンピューティングシステムによって、前記カメラキャリブレーションが実行されているときに前記キャリブレーションパターンが採用する複数の姿勢を決定することであって、前記複数の姿勢は、前記カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、前記複数のそれぞれのセットの姿勢角度値の各セットは、前記仮想球の前記表面上にある前記表面領域内から選択されるそれぞれの表面点に基づく、ことと、
前記コンピューティングシステムによって、前記キャリブレーションパターンの配置を制御するための、複数のロボット動作コマンドを出力することであって、前記複数のロボット動作コマンドは、決定される前記複数の姿勢に基づいて生成される、ことと、
前記コンピューティングシステムによって、複数のキャリブレーション画像を受信することであって、前記複数のキャリブレーション画像の各キャリブレーション画像は、前記キャリブレーションパターンを表し、かつ、前記キャリブレーションパターンが前記複数の姿勢のそれぞれの姿勢を有する間に生成される、ことと、
前記コンピューティングシステムによって、前記複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、
前記カメラキャリブレーションパラメーターの前記推定値が決定された後、前記コンピューティングシステムによって、前記通信インターフェースを介して後続の画像を受信することと、
前記コンピューティングシステムによって、前記後続の画像と、前記カメラキャリブレーションパラメーターの前記推定値とに基づいて生成される後続のロボット動作コマンドを出力することと、を含む、方法。
【請求項２０】
前記複数の姿勢を決定することは、一様な表面点のセットのみの中から表面点をランダムに選択することを含み、
前記一様な表面点のセットは、前記仮想球の前記表面上の前記表面領域内に一様に分布する表面点のセットであり、
前記姿勢角度値のそれぞれのセットは、選択される前記表面点のセットに基づく、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラキャリブレーション及びロボット制御の姿勢を決定するための、方法及びシステムを対象とする。
【背景技術】
【０００２】
自動化がより一般的になるにつれ、倉庫や製造環境など、より多くの環境でロボットが使用されている。例えば、ロボットは、倉庫でパレットに品物を積む、若しくはパレットから品物を降ろす、又は工場でコンベヤベルトから物体を拾い取るように使用されてもよい。ロボットの動作は、固定されてもよく、又は倉庫若しくは工場のカメラによって撮られた画像などの、入力に基づいてもよい。後者の状況では、キャリブレーションは、カメラの特性を決定し、カメラとロボットが位置する環境との間の関係を決定するように行いうる。キャリブレーションは、カメラキャリブレーションンと呼ばれる場合があり、カメラによって取り込まれた画像に基づいてロボットを制御するように使用される、キャリブレーション情報を生成しうる。いくつかの実施態様では、カメラキャリブレーションは、人による手動操作を伴う場合があり、人は、ロボットの動作を手動で制御するか、又はカメラを手動で制御して、ロボットの画像を取り込んでもよい。
【発明の概要】
【０００３】
本明細書における実施形態の一態様は、コンピューティングシステムによって行われる（例えば、非一時的コンピューター可読媒体上の命令によって）コンピューティングシステム又は方法に関する。コンピューティングシステムは、ロボット、及び、カメラ視野を有するカメラと通信するように構成された通信インターフェースを備えてもよく、ロボットが、ロボット上に配置されたキャリブレーションパターンを有する。コンピューティングシステムは更に、コンピューティングシステムがロボット及びカメラと通信するとき、カメラキャリブレーションを実行するように構成された制御回路を有してもよい。カメラキャリブレーションの実行は、カメラキャリブレーションを実行するためにパターン配向の範囲を決定することであって、パターン配向の範囲は、キャリブレーションパターンに対する配向の範囲であることと、仮想球の表面上に表面領域を決定することであって、仮想球の表面は、キャリブレーションパターンに対する可能なパターン配向を表し、表面領域は、カメラキャリブレーションを行うためのパターン配向の範囲を表すことと、カメラキャリブレーションが実行されているときにキャリブレーションパターンが採用する複数の姿勢を決定することであって、複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、複数のそれぞれのセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択されるそれぞれの表面点に基づくことと、キャリブレーションパターンの配置を制御するための、複数のロボット動作コマンドを出力することであって、複数のロボット動作コマンドは、決定される複数の姿勢に基づいて生成されることと、複数のキャリブレーション画像を受信することであって、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し、かつ、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成されることと、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされる。制御回路は、カメラキャリブレーションが実行された後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される後続のロボット動作コマンドを出力するように構成される。
【図面の簡単な説明】
【０００４】
本発明の上述及び他の特徴、目的、並びに利点は、添付の図面に示すような本明細書の実施形態の以下の記述から明らかであろう。本明細書に組み込まれ、本明細書の一部を形成する、添付の図面は更に、本発明の原理を説明し、当業者が本発明を実施及び使用することを可能にする役割を果たす。図面は一定の縮尺ではない。
【０００５】
【図１】本明細書の実施形態による、カメラキャリブレーションが行われるシステムのブロック図を描写する。
【図２】本明細書の実施形態による、カメラキャリブレーションを行うための姿勢を決定するように構成される、コンピューティングシステムのブロック図を描写する。
【図３Ａ】本明細書の実施形態による、カメラキャリブレーションが行われ、キャリブレーションパターンが様々な姿勢を採用できる、システムを描写する。
【図３Ｂ】本明細書の実施形態による、カメラキャリブレーションが行われ、キャリブレーションパターンが様々な姿勢を採用できる、システムを描写する。
【図４Ａ】本明細書の実施形態による、キャリブレーションパターンとカメラとの間の姿勢角度の角度値を示す。
【図４Ｂ】本明細書の実施形態による、キャリブレーションパターンに対する法線ベクトル、カメラ座標系、及びパターン座標系を描写する。
【図４Ｃ】本明細書の実施形態による、キャリブレーションパターンに対する法線ベクトル、カメラ座標系、及びパターン座標系を描写する。
【図５Ａ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図５Ｂ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図５Ｃ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図６Ａ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図６Ｂ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図６Ｃ】本明細書の実施形態による、キャリブレーションパターンに対する様々な姿勢角度を描写する。
【図７Ａ】キャリブレーションパターンの可能なパターン配向を表す仮想球、及び仮想球上の表面点を示す。
【図７Ｂ】キャリブレーションパターンの可能なパターン配向を表す仮想球、及び仮想球上の表面点を示す。
【図７Ｃ】キャリブレーションパターンの可能なパターン配向を表す仮想球、及び仮想球上の表面点を示す。
【図８Ａ】本明細書の実施形態による、姿勢角度値に関する制約の例を描写する。
【図８Ｂ】本明細書の実施形態による、キャリブレーションパターンの可能な配向を表す仮想球と、カメラキャリブレーションを行うためのパターン配向の範囲を表す表面領域と、仮想球上の表面点とを示す。
【図８Ｃ】本明細書の実施形態による、キャリブレーションパターンの可能な配向を表す仮想球と、カメラキャリブレーションを行うためのパターン配向の範囲を表す表面領域と、仮想球上の表面点とを示す。
【図９】本明細書の実施形態による、カメラキャリブレーションを行うための姿勢を決定する、例示的な方法のフロー図を描写する。
【図１０Ａ】本明細書の実施形態による、パターン配向を表す仮想球の表面領域内に、一様に分布する表面点を描写する。
【図１０Ｂ】本明細書の実施形態による、パターン配向を表す仮想球の表面領域内に、一様に分布する表面点を描写する。
【図１１Ａ】本明細書の実施形態による、カメラ視野中の空間を分ける、例示的なグリッドを描写する。
【図１１Ｂ】本明細書の実施形態による、カメラ視野中の空間を分ける、例示的なグリッドを描写する。
【図１２Ａ】本明細書の実施形態による、様々な姿勢に対するラテン方格の空間分布の例を示す。
【図１２Ｂ】本明細書の実施形態による、様々な姿勢に対するラテン方格の空間分布の例を示す。
【図１２Ｃ】本明細書の実施形態による、様々な姿勢に対するラテン方格の空間分布の例を示す。
【図１３Ａ】本明細書の実施形態による、様々な姿勢に対する層状空間分布の例を示す。
【図１３Ｂ】本明細書の実施形態による、様々な姿勢に対する層状空間分布の例を示す。
【図１４Ａ】本明細書の実施形態による、様々な姿勢に対するランダム空間分布の例を示す。
【図１４Ｂ】本明細書の実施形態による、様々な姿勢に対するランダム空間分布の例を示す。
【図１５Ａ】本明細書の実施形態による、ロボットで達成可能な候補姿勢に対する様々な空間分布を示す。
【図１５Ｂ】本明細書の実施形態による、ロボットで達成可能な候補姿勢に対する様々な空間分布を示す。
【図１５Ｃ】本明細書の実施形態による、ロボットで達成可能な候補姿勢に対する様々な空間分布を示す。
【発明を実施するための形態】
【０００６】
以下の発明を実施するための形態は、本質的に単に例示であり、本発明、又は本発明の用途及び使用を限定することを意図するものではない。更に、前出の技術分野、背景技術、発明の概要、若しくは以下の発明を実施するための形態に提示される、いかなる明示された又は暗示された理論によっても限定する意図はない。
【０００７】
本明細書に記載する実施形態は、カメラキャリブレーションを行うための姿勢の決定に関する。姿勢は、例えば、キャリブレーションパターンが置かれる配向（パターン配向と呼ばれうる）、キャリブレーションパターンが置かれる位置、又はそれらの組み合わせを指しうる。カメラは、姿勢に対応するキャリブレーション画像を生成するために、キャリブレーションパターンがその姿勢を有している間に、キャリブレーションパターンを写真に撮るか、又は他の方法で撮像してもよく、キャリブレーション画像を使用して、カメラキャリブレーションを行ってもよい。カメラキャリブレーションを行うには、例えば、カメラの特性、及び／又はカメラとその環境との間の関係を推定することを伴いうる。カメラキャリブレーションを行った後、カメラにより生成される画像によって、カメラの環境の中にある物体と相互作用するように使用される、ロボットの制御が容易になる場合がある。例えば、ロボットは、倉庫で包装品を拾い取るように使用されてもよく、ロボットのアーム又は他の構成要素の動作は、カメラにより生成される包装品の画像に基づいてもよい。
【０００８】
本明細書における実施形態の一態様は、姿勢が概して、キャリブレーションパターンの位置及び／又はパターン配向の観点で広がる、姿勢の分布を達成する試みに関する。代わりに、姿勢がある領域の中に集中するか、又は望ましいパターン配向の範囲中のあるパターン配向の周りに集中するかの分布を、姿勢が有する場合、結果として生じるキャリブレーション画像は、写真を撮られた物体がそれらの領域及び／又は配向にあるときに明らかとなる、あるカメラ挙動を取り込みうるが、他の領域及び／又は配向にある写真を撮られた物体に対応するカメラ挙動を逃しうる。例えば、位置及び／又は配向の観点から姿勢のより一様な分布を作り出すために、代わりに姿勢を広げるように、姿勢を決定することによって、結果として生じるキャリブレーション画像に、より完全に又はより正確にカメラ挙動を取り込ませうる。例えば、カメラ挙動が、カメラのレンズにより導入されうるレンズひずみである場合、キャリブレーションパターンの姿勢を広げることで、キャリブレーションパターンが、多様な姿勢を有し、多様な位置及び／若しくはパターン配向で写真を撮られるか、又は他の方法で撮像されるかが可能になりうる。そのような多様な姿勢によって、レンズひずみを明らかにする、より多くの手段を取り込む可能性が高くなるように、結果として生じるキャリブレーション画像を表示しうる。そのようなキャリブレーション画像によって、レンズひずみ又はカメラの別の特性を、より完全かつ正確に、特徴付ける又は他の方法で推定することが可能になりうる。
【０００９】
本明細書における実施形態の一態様は、キャリブレーションパターンの異なる姿勢に対して姿勢角度値を決定すること、より具体的には、キャリブレーションパターンのパターン配向に対して、望ましい分布を達成するように、姿勢角度値を決定することに関する。パターン配向の分布は、キャリブレーションパターンが配向する方向の分布を指しうる。例えば、望ましいパターン配向の範囲内の概して一様な分布は、キャリブレーションパターンが、望ましい方向の範囲内にあり、望ましい方向の範囲中に概して均等に分布する方向を有する分布を指してもよく、望ましいパターン配向の範囲は、望ましい方向の範囲によって画定されうる。
【００１０】
一実施形態において、上で論じた姿勢角度値は、キャリブレーションパターンと、カメラの光軸などの基準系との間の角度であってもよい、姿勢角度の角度値でありうる。姿勢角度は、例えば、カメラに対するキャリブレーションパターンの傾斜を制御するのに使用されうる（そのような傾きは、相対的な傾きと呼ばれうる）。一実施形態において、複数の姿勢角度を使用してキャリブレーションパターンの傾斜を制御してもよく、複数の姿勢角度に対するそれぞれの姿勢角度値のセットを使用して、キャリブレーションパターンの相対的な傾きの方向及び量を制御しうる。場合によっては、パターン配向のセットは、望ましい分布（例えば、一様分布）に従って、複数の姿勢角度の各々に対して、それぞれの姿勢角度値のセットを個々に決定することによって決定されうる。しかしながら、実際にはそのような手法では、パターン配向のセットに対する望ましい分布が達成されない場合がある。例えば、パターン配向が三つの姿勢角度によって制御される場合、一様分布に従い三つの姿勢角度の各々に対して、姿勢角度値のセットを個々に決定しても、実際には、結果として生じるパターン配向のセットの一様分布につながらない場合がある。したがって、本明細書における実施形態の一態様は、最初に望ましい分布と合致するパターン配向を決定し、その後、望ましい分布に基づいて姿勢角度値を決定することによる、姿勢角度に対する姿勢角度値の決定に関する。
【００１１】
一実施形態において、望ましい分布と合致するパターン配向を決定することには、仮想球上にある表面点の選択を伴いうる。表面点は、キャリブレーションパターンに対する可能なパターン配向を表してもよく、より具体的には、キャリブレーションパターンに対する法線ベクトルが指し示すことができる方向を表してもよい、仮想球の表面上にある点でありうる。場合によっては、仮想球の中心は、法線ベクトルの一つの終点にあってもよく、仮想球は、法線ベクトルの他の終点によって、指し示すか、又はより広くは、方向付けることができる、点の軌跡である表面を有してもよい。場合によっては、仮想球の表面上にある領域（表面領域と呼ばれうる）は、望ましいパターン配向の範囲を表してもよく、表面領域内の表面点は、望ましい範囲内のそれぞれのパターン配向を表してもよい。一実施形態において、表面点は、望ましい分布に従って、仮想球の表面から、より具体的には、表面領域内から選択されてもよい。例えば、望ましい一様分布に従って表面点を選択することには、それらの表面点のうちの一つを選択するための、表面領域内の表面点のサンプリングを伴ってもよく、サンプリングは、表面領域内の表面点の各々が選択される可能性が同程度にあるように行われうる。この実施形態では、姿勢角度の姿勢角度値は、選択される表面点に基づいて決定されうる。パターン配向が複数の姿勢角度によって制御される場合、それぞれの姿勢角度値は、選択される表面点に基づいて、複数の姿勢角度の各々に対して決定されうる。複数のパターン配向が、複数のそれぞれの姿勢に対して上のように決定される場合、複数のパターン配向は、一様分布などの望ましい分布を有する可能性が高くなりうる。
【００１２】
本明細書における実施形態の一態様は、複数の姿勢がカメラの視野（カメラ視野とも呼ばれうる）内に広がるように、複数の姿勢に対するそれぞれの位置の決定に関する。決定される位置の各々は、場合によっては、キャリブレーションパターンに対して姿勢を形成するように、姿勢角度値のそれぞれのセットと組み合わせられてもよい。それぞれの姿勢角度値のセットは、例えば、上に記載した様式を使用して決定されてもよい。一実施形態において、カメラの視野内の空間は、一つ以上の層を有し、複数の行及び複数の列を有する、グリッドに分けられうる。場合によっては、それぞれの位置の決定には、複数の姿勢を多様な領域に置く第一の空間分布を達成するであろう、位置を見つける試みを伴いうる。第一の空間分布を達成できない場合、決定には更に、複数の姿勢を多様な領域に置くようにも試みうるが、第一の空間分布に対してより少ない条件、又はより緩和された条件を有しうる、第二の空間分布を達成するように、位置を見つける試みを伴いうる。場合によっては、第一の空間分布、第二の空間分布、及び／又は別の空間分布を達成できない場合、複数の姿勢に対する位置は、ランダム空間分布を達成するように決定されうる。
【００１３】
一実施形態において、第一の空間分布は、ｉ）グリッドのある決定の層の中の各行が、一つのみの姿勢を含むか、又は一つ以下の姿勢を含む、及びｉｉ）層の中の各列が、一つのみの姿勢を含むか、又は一つ以下の姿勢を含む、分布であってもよい。一実施形態において、第二の空間分布は、第一の空間分布に対する上の基準のうちの一つのみを満たす必要がある、分布であってもよい。より具体的には、第二の空間分布は、ｉ）グリッドのある決定の層中の各行が、一つのみの姿勢を含むか、若しくは一つ以下の姿勢を含む、又はｉｉ）ある決定の層中の各列が、一つのみの姿勢を含むか、若しくは一つ以下の姿勢を含む、分布であってもよい。
【００１４】
図１は、自動カメラキャリブレーションを行うための、ロボット運用システム１００のブロック図を示す。ロボット運用システム１００は、ロボット１５０、コンピューティングシステム１１０、及びカメラ１７０を含む。場合によっては、コンピューティングシステム１１０は、ロボット１５０を制御するように構成されてもよく、それらの場合には、ロボット制御システム又はロボットコントローラーと呼ばれうる。一実施形態において、ロボット運用システム１００は、倉庫、製造工場、又は他の施設内に位置してもよい。コンピューティングシステム１１０は、後にロボット１５０を制御するのに使用される、キャリブレーション情報の決定によってなど、カメラキャリブレーションを行うように構成されうる。場合によっては、コンピューティングシステム１１０は、カメラキャリブレーションを行うこと、及びキャリブレーション情報に基づいてロボット１５０を制御することの両方を行うように構成される。場合によっては、コンピューティングシステム１１０は、カメラキャリブレーションを行う専用であってもよく、ロボットの制御専用である別のコンピューティングシステムへ、キャリブレーション情報を伝達してもよい。ロボット１５０は、カメラ１７０により取り込まれる画像と、キャリブレーション情報とに基づいて位置付けられうる。場合によっては、コンピューティングシステム１１０は、カメラ１７０が位置する環境の画像を取得する、視覚システムの一部であってもよい。
【００１５】
一実施形態において、コンピューティングシステム１１０は、ロボット１５０及びカメラ１７０と有線又は無線通信によって通信するように構成されうる。例えば、コンピューティングシステム１１０は、ＲＳ−２３２インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、イーサネットインターフェース、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェース、ＩＥＥＥ８０２．１１インターフェース、又はそれらのいかなる組み合わせを介して、ロボット１５０及び／又はカメラ１７０と通信するように構成されうる。一実施形態において、コンピューティングシステム１１０は、周辺構成要素相互接続（ＰＣＩ）バスなどのローカルコンピュータバスを介して、ロボット１５０及び／又はカメラ１７０と通信するように構成されうる。
【００１６】
一実施形態において、コンピューティングシステム１１０は、ロボット１５０から分離していてもよく、上で論じた無線又は有線接続を介してロボット１５０と通信してもよい。例えば、コンピューティングシステム１１０は、有線接続又は無線接続を介して、ロボット１５０及びカメラ１７０と通信するように構成される、独立型コンピューターであってもよい。一実施形態において、コンピューティングシステム１１０は、ロボット１５０の不可欠な構成要素であってもよく、上で論じたローカルコンピュータバスを介して、ロボット１５０の他の構成要素と通信してもよい。場合によっては、コンピューティングシステム１１０は、ロボット１５０のみを制御する、専用制御システム（専用コントローラーとも呼ばれる）であってもよい。他の場合には、コンピューティングシステム１１０は、ロボット１５０を含む、複数のロボットを制御するように構成されてもよい。一実施形態において、コンピューティングシステム１１０、ロボット１５０、及びカメラ１７０は同じ施設（例えば、倉庫）に位置する。一実施形態において、コンピューティングシステム１１０は、ロボット１５０及びカメラ１７０から離れていてもよく、ネットワーク接続（例えば、ローカルエリアネットワーク（ＬＡＮ）接続）を介してロボット１５０及びカメラ１７０と通信するように構成されてもよい。
【００１７】
一実施形態において、コンピューティングシステム１１０は、ロボット１５０上に配置されるキャリブレーションパターン１６０の画像である、キャリブレーション画像にアクセスして処理するように構成されうる。コンピューティングシステム１１０は、カメラ１７０から、又はキャリブレーション画像が記憶される記憶デバイス若しくは他の非一時的コンピューター可読媒体からなど別の資源から、キャリブレーション画像を読み出し、又はより広くは、受信することによって、キャリブレーション画像にアクセスしうる。実例によっては、コンピューティングシステム１１０は、そのような画像を取り込むよう、カメラ１７０を制御するように構成されてもよい。例えば、コンピューティングシステム１１０は、カメラ１７０の視野（カメラ視野とも呼ばれる）の中の場面を取り込む画像をカメラ１７０に生成させる、カメラコマンドを生成し、有線又は無線接続によってカメラコマンドをカメラ１７０へ伝達するように構成されうる。同じコマンドによって、カメラ１７０に、画像を（画像データとして）コンピューティングシステム１１０へ、又はより広くは、コンピューティングシステム１１０によってアクセス可能な記憶デバイスへ戻して、同様に伝達させてもよい。代替的には、コンピューティングシステム１１０は、カメラコマンドを受信すると、カメラ１７０に、取り込んだ画像（複数の場合もある）をコンピューティングシステム１１０へ伝達させる、別のカメラコマンドを生成してもよい。一実施形態において、カメラ１７０は、コンピューティングシステム１１０からのカメラコマンドを必要とすることなく、定期的に、又は定義されたトリガー条件に応答してのいずれかで、カメラ視野中の場面の画像を自動的に取り込んでもよい。そのような実施形態では、カメラ１７０もまた、コンピューティングシステム１１０からのカメラコマンドなしで、コンピューティングシステム１１０へ、又はより広くは、コンピューティングシステム１１０によってアクセス可能な記憶デバイスへ、画像を自動的に伝達するように構成されてもよい。
【００１８】
一実施形態において、コンピューティングシステム１１０は、コンピューティングシステム１１０によって生成され、有線又は無線接続によってロボット１５０へ伝達される動作コマンドで、ロボット１５０の動作を制御するように構成されうる。動作コマンドによって、ロボット上に配置されるキャリブレーションパターン１６０をロボットに動かせてもよい。キャリブレーションパターン１６０は、ロボット１５０上に永久に配置されてもよく、又はロボット１５０に着脱可能である別個の構成要素であってもよい。
【００１９】
一実施形態において、カメラ１７０は、場面の写真を撮ることによってなど、カメラ視野の中の場面を取り込む画像を生成するか、又は他の方法で取得するように構成されうる。画像は、ピクセルの配列など、画像データによって形成されてもよい。カメラ１７０は、カラー画像カメラ、グレースケール画像カメラ、奥行き感知カメラ（例えば、飛行時間（ＴＯＦ）カメラ又は構造化光カメラ）、又はいかなる他のカメラであってもよい。一実施形態において、カメラ１７０は、一つ以上のレンズ、画像センサー、及び／又はいかなる他の構成要素を含みうる。画像センサーは、例えば、電荷結合素子（ＣＣＤ）センサー、相補型金属酸化膜半導体（ＣＭＯＳ）センサー、量子イメージセンサー（ＱＩＳ）、又はいかなる他の画像センサーを含みうる。
【００２０】
図２は、コンピューティングシステム１１０のブロック図を描写する。ブロック図に示すように、コンピューティングシステム１１０は、制御回路１１１、通信インターフェース１１３、及び非一時的コンピューター可読媒体１１５（例えば、メモリ）を含みうる。一実施形態において、制御回路１１１は、一つ以上のプロセッサ、プログラマブル論理回路（ＰＬＣ）若しくはプログラマブル論理アレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、決定用途向け集積回路（ＡＳＩＣ）、又はいかなる他の制御回路を含みうる。
【００２１】
一実施形態において、通信インターフェース１１３は、カメラ１７０及びロボット１５０と通信するよう構成される一つ以上の構成要素を含みうる。例えば、通信インターフェース１１３は、有線又は無線プロトコルによって通信を行うように構成される通信回路を含みうる。例として、通信回路は、ＲＳ−２３２ポートコントローラー、ＵＳＢコントローラー、イーサネットコントローラー、ＩＥＥＥ８０２．１１コントローラー、Ｂｌｕｅｔｏｏｔｈ（登録商標）コントローラー、ＰＣＩバスコントローラー、いかなる他の通信回路、又はそれらの組み合わせを含みうる。
【００２２】
一実施形態において、非一時的コンピューター可読媒体１１５は、コンピューターメモリなどの情報記憶デバイスを含みうる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ソリッドステートの統合メモリ（ｓｏｌｉｄ  ｓｔａｔｅ  ｉｎｔｅｇｒａｔｅｄ  ｍｅｍｏｒｙ）、及び／又はハードディスクドライブ（ＨＤＤ）を含んでもよい。場合によっては、カメラキャリブレーションは、非一時的コンピューター可読媒体１１５上に記憶される、コンピューター実行可能命令（例えば、コンピューターコード）によって実施されてもよい。そのような場合には、制御回路１１１は、カメラキャリブレーションを行うよう、コンピューター実行可能命令を実行する（例えば、図９に示すステップ）ように構成される、一つ以上のプロセッサを含んでもよい。一実施形態において、非一時的コンピューター可読媒体は、カメラ１７０によって生成される、一つ以上のキャリブレーション画像を記憶するように構成されうる。
【００２３】
上記で言及したように、本明細書における実施形態の一態様は、キャリブレーションパターン１６０に対する複数の姿勢の決定に関する。各姿勢は、キャリブレーションパターン１６０の位置及びパターン配向の組み合わせを指しうる。複数の姿勢は、キャリブレーションパターン１６０を（ロボット１５０によって）カメラ視野内の異なる位置に置くために、及びカメラ１７０に対して異なるパターン配向を有するように、キャリブレーションパターン１６０を傾けるか、又は他の方法で動かすために決定されうる。例えば、図３Ａ及び３Ｂは、ロボット運用システム２００内の、キャリブレーションパターン２６０に対する二つの異なる姿勢を描写する。ロボット運用システム２００は、ロボット運用システム１００の実施形態であってもよく、コンピューティングシステム１１０、カメラ２７０（カメラ１７０の実施形態であってもよい）、ロボット２５０（ロボット１５０の実施形態であってもよい）、及びキャリブレーションパターン２６０の実施形態であってもよい、キャリブレーションパターン２６０を含む。
【００２４】
図３Ａ及び３Ｂの例では、ロボット２５０は、ジョイントによって接続する複数のリンク２５４Ａ〜２５４Ｅを備える、ロボットアームを有しうる。ロボットアームは、キャリブレーションパターン２６０を動かすように構成されうる。動作は、カメラ２７０のカメラ視野２７２内における異なる位置に、キャリブレーションパターン２６０を置くこと、及び／又はカメラ２７０に対して異なる配向へ、キャリブレーションパターン２６０を傾けることを含みうる。場合によっては、ロボットアームは、複数のリンク２５４Ａ〜２５４Ｅのうちの一つ以上のリンクの回転によって、複数のリンク２５４Ａ〜２５４Ｅを接続するジョイントのうちの一つ以上の周りを動くように構成されうる。実例によっては、ロボットアームは、動作コマンド（ロボット動作コマンドとも呼ばれる）に応答して動きうる。例えば、ロボット２５０は、リンク２５４Ａ〜２５４Ｅのうちの少なくともいくつかを回転させるために、リンク２５４Ａ〜２５４Ｅを接続する複数のジョイントにて回転を産み出すように構成される、一つ以上のモーター（図示せず）を含みうる。そのような例では、動作コマンドは、モーターのうちの一つ以上を起動させる、一つ以上のモーターコマンドを含みうる。場合によっては、動作コマンドは、コンピューティングシステム１１０によって生成され、コンピューティングシステム１１０によってロボット１５０へ出力されうる。場合によっては、ロボット動作コマンドは、別のコンピューティングシステムによって、及び／又はロボット２５０によって生成されうる。
【００２５】
一実施形態において、キャリブレーションパターン１６０の実施形態である、キャリブレーションパターン２６０は、ロボット２５０のロボットアームによって、異なる姿勢に動かされうる。より具体的には、図３Ａ及び３Ｂは、第一の姿勢及び第二の姿勢をそれぞれ有する、キャリブレーションパターン２６０を描写する。第一の姿勢及び第二の姿勢は、キャリブレーションパターン２６０に対する位置と、キャリブレーションパターン２６０のパターン配向とのそれぞれの異なる組み合わせを有するため、異なる姿勢とみなされうる。
【００２６】
一実施形態において、カメラ２７０は、キャリブレーションパターン２６０が図３Ａに描写する第一の姿勢を有する間に、キャリブレーションパターン２６０を取り込む第一のキャリブレーション画像を生成してもよく、又は他の方法で取得してもよく、キャリブレーションパターン２６０が図３Ｂに描写する第二の姿勢を有する間に、キャリブレーションパターン２６０を取り込む第二のキャリブレーション画像を生成してもよく、又は他の方法で取得してもよい。キャリブレーションパターン２６０が第一の姿勢及び第二の姿勢それぞれにある間に、第一のキャリブレーション画像及び第二のキャリブレーション画像が、キャリブレーションパターンを取り込むため、二つの姿勢はまた、画像取り込み姿勢とも呼ばれうる。第一のキャリブレーション画像及び第二のキャリブレーション画像は、カメラキャリブレーションを行うように、コンピューティングシステム１１０又はいかなる他のコンピューティングシステムによってもアクセスされうる。
【００２７】
一実施形態において、カメラキャリブレーションは、例えば、カメラ２７０用の一つ以上の内部カメラパラメーターの推定値、及び／又はカメラ２７０とその環境との間の関係を決定しうる。一つ以上の内部カメラパラメーターは、例えば、カメラ２７０の射影行列、カメラ２７０の一つ以上のひずみパラメーター、又はそれらのいかなる組み合わせを含みうる。カメラ２７０とその環境との間の関係は、例えば、カメラ２７０とロボット２５０との間の空間関係を記述する行列を含みうる。より具体的には、行列は、カメラ２７０と、ロボット２５０のベース２５２に対して定常な点でありうる、ワールド点２９４（図３Ｂに描写する）との間の空間関係を記述しうる。カメラキャリブレーション情報は、その後、ロボット２５０と倉庫の中の包装品などの物体との間の、相互作用を容易にするために使用されうる。例えば、カメラ２７０は、物体の画像を生成するか、又は他の方法で取得するように構成されてもよく、コンピューティングシステム１１０又は何らかの他のコンピューティングシステムは、物体の画像及びカメラキャリブレーション情報を使用して、ロボット２５０と物体との間の空間関係を決定するように構成されてもよい。カメラキャリブレーションパラメーターの推定値の決定については、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＥＲＦＯＲＭＩＮＧ  ＡＵＴＯＭＡＴＩＣ  ＣＡＭＥＲＡ  ＣＡＬＩＢＲＡＴＩＯＮ  ＦＯＲ  ＲＯＢＯＴ  ＣＯＮＴＲＯＬ」と題される米国特許出願番号第１６／２９５，９４０号（参照によりその全体が本明細書に組み込まれる）でより詳細に論じる。
【００２８】
一実施形態において、上記でも言及したように、キャリブレーションパターン１６０／２６０のパターン配向は、一つ以上の姿勢角度によって制御されうる。概して言えば、姿勢角度は、キャリブレーションパターン１６０／２６０と基準軸との間の角度でありうる。例えば、図４Ａは、キャリブレーションパターン２６０の法線ベクトル２６１と
【数１】
0006678984.tif 000002
軸との間に形成される、姿勢角度αを描写する。法線ベクトル２６１は、図４Ａのキャリブレーションパターン２６０により画定される平面に直交する、ベクトルであってもよい。実例によっては、法線ベクトルは、以下でより詳細に論じる、
【数２】
0006678984.tif 000003
軸と一致する、又はより広くは、一直線になるベクトルであってもよい。
【数３】
0006678984.tif 000004
軸は、姿勢角度αを測定するのに対比させる基準軸であってもよい。図４Ａの例では、  
【数４】
0006678984.tif 000005
は、カメラ２７０の座標系（カメラ座標系とも呼ばれる）のＺ軸と平行及び／又は一致してもよく、Ｚ軸は
【数５】
0006678984.tif 000006
と名付けられる。ワールド座標系と共に、カメラ座標系を図４Ｂに示す。場合によっては、カメラ２７０が一つ以上のレンズを有する場合、カメラ座標系の
【数６】
0006678984.tif 000007
は、一つ以上のレンズの光軸でありうる。更に、カメラ２７０が画像センサー（例えば、ＣＣＤセンサー）を有する場合、Ｘ軸、すなわちカメラ座標系の
【数７】
0006678984.tif 000008
、及びＹ軸、すなわちカメラ座標系の
【数８】
0006678984.tif 000009
によって、画像センサーの二次元（２Ｄ）画像平面を画定してもよい。カメラ座標系は、一つ以上のレンズに、画像センサーの表面上に、又はいかなる他の位置にも位置する、原点を有しうる。図４Ｂは更に、ワールド点２９４の周りに原点を有する座標系でありうる、ワールド座標系を示す。図４Ｂに描写するように、ワールド座標系は軸
【数９】
0006678984.tif 000010
によって画定されうる。
【００２９】
上記で言及したように、キャリブレーションパターン２６０の法線ベクトル２６１は、場合によっては、パターン座標系のＺ軸、すなわち
【数１０】
0006678984.tif 000011
と一致してもよく、又はより広くは、平行であってもよい。図４Ｃは、パターン座標系、すなわち、
【数１１】
0006678984.tif 000012
、及び
【数１２】
0006678984.tif 000013
の座標軸を描写する。いくつかの実施態様では、キャリブレーションパターン２６０は、パターン座標系における既知の位置、又はより広くは、画定された位置を有する、複数のパターン要素（例えば、ドット）を有しうる。例えば、複数のパターン要素は、事前に画定された間隔を有する、ドットのグリッドであってもよい。そのような実施態様では、パターン座標系の原点は、パターン要素のうちの一つに位置してもよく、又は他の場所に位置してもよい。キャリブレーションパターンについては、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＥＲＦＯＲＭＩＮＧ  ＡＵＴＯＭＡＴＩＣ  ＣＡＭＥＲＡ  ＣＡＬＩＢＲＡＴＩＯＮ  ＦＯＲ  ＲＯＢＯＴ  ＣＯＮＴＲＯＬ」と題される米国特許出願番号第１６／２９５，９４０号（参照によりその内容全体が本明細書に組み込まれる）でより詳細に論じる。
【００３０】
一実施形態において、キャリブレーションパターン１６０／２６０のパターン配向は、姿勢角度のセットによって、より具体的には、姿勢角度に対するそれぞれの姿勢角度値のセットによって制御されてもよい。例えば、図５Ａ〜５Ｃは、キャリブレーションパターン２６０のパターン配向を画定する、三つの姿勢角度α、β、θのうちのいくつか又は全ての使用を描写する。この例では、姿勢角度αは、法線ベクトル２６１と、
【数１３】
0006678984.tif 000014
及び
【数１４】
0006678984.tif 000015
によって形成されるＹＺ平面に沿う
【数１５】
0006678984.tif 000016
との間に形成される、角度であってもよい。この例では、法線ベクトル２６１は
【数１６】
0006678984.tif 000017
と一致してもよく、そのため、姿勢角度αはまた、
【数１７】
0006678984.tif 000018
と
【数１８】
0006678984.tif 000019
との間の角度でありうる。実例によっては、基準軸
【数１９】
0006678984.tif 000020
は、図４Ｂの
【数２０】
0006678984.tif 000021
と一致する、又はより広くは、平行である軸であってもよい。実例によっては、
【数２１】
0006678984.tif 000022
軸はカメラ２７０の光軸であってもよい。実例によっては、
【数２２】
0006678984.tif 000023
は図４Ｂの
【数２３】
0006678984.tif 000024
軸と平行な軸であってもよく、一方、
【数２４】
0006678984.tif 000025
軸は図４Ｂの
【数２５】
0006678984.tif 000026
軸と平行な軸であってもよい。図５Ａに描写する例では、姿勢角度αはまた、
【数２６】
0006678984.tif 000027
と
【数２７】
0006678984.tif 000028
との間の角度として、及び／又は角度αに対する回転の軸でありうる
【数２８】
0006678984.tif 000029
軸の周りで、キャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。
【００３１】
一実施形態において、図５Ｂに示す姿勢角度βは、法線ベクトル２６１と、
【数２９】
0006678984.tif 000030
及び
【数３０】
0006678984.tif 000031
によって形成されるＸＺ平面に沿う
【数３１】
0006678984.tif 000032
との間に形成される、角度であってもよい。法線ベクトル２６１が
【数３２】
0006678984.tif 000033
と一致しうるため、姿勢角度βはまた、
【数３３】
0006678984.tif 000034
と
【数３４】
0006678984.tif 000035
との間の角度でありうる。図５Ｂに描写する例では、姿勢角度βはまた、
【数３５】
0006678984.tif 000036
と
【数３６】
0006678984.tif 000037
との間の角度として、及び／又は角度βに対する回転の軸でありうる
【数３７】
0006678984.tif 000038
軸の周りで、キャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。
【００３２】
一実施形態において、図５Ｃに示す姿勢角度θは、
【数３８】
0006678984.tif 000039
及び
【数３９】
0006678984.tif 000040
によって形成されるＸＹ平面に沿って、
【数４０】
0006678984.tif 000041
と
【数４１】
0006678984.tif 000042
との間に又は
【数４２】
0006678984.tif 000043
と
【数４３】
0006678984.tif 000044
との間に形成される角度であってもよい。図５Ｃに描写する例では、姿勢角度θはまた、角度θの回転軸でありうる、
【数４４】
0006678984.tif 000045
軸の周りで及び／又は法線ベクトル２６１の周りで、キャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。したがって、一実施形態において、姿勢角度α、β、θは、それぞれの回転軸（例えば、
【数４５】
0006678984.tif 000046
）を回るキャリブレーションパターン２６０のそれぞれの回転量を表してもよく、それぞれの軸は互いに直交する。実例によっては、それぞれの軸は、
【数４６】
0006678984.tif 000047
と平行な軸であってもよいカメラ光軸と、平行又は直交であってもよい。他の実例では、それぞれの軸はカメラ光軸に対して斜めであってもよい。
【００３３】
一実施形態において、姿勢角度α、β、θは、座標軸の異なるセットを有してもよい、異なる基準座標系に基づいて画定されてもよい。例えば、図６Ａ〜６Ｃは、姿勢角度βが、姿勢角度αに基づく基準軸に対して画定される例を描写し、更に、姿勢角度θが、姿勢角度α及びβに基づく別の基準軸に対して画定される例を描写する。より具体的には、図６Ａは、図５Ａの実施形態に類似して、姿勢角度αが、法線ベクトル２６１と、
【数４７】
0006678984.tif 000048
及び
【数４８】
0006678984.tif 000049
によって形成されるＹＺ平面に沿う基準軸
【数４９】
0006678984.tif 000050
との間に形成される角度である、実施形態を示し、
【数５０】
0006678984.tif 000051
、及び
【数５１】
0006678984.tif 000052
は、第一の基準座標系の座標軸であってもよい。法線ベクトル２６１は、
【数５２】
0006678984.tif 000053
と一致し、又はより広くは、平行であってもよい。基準軸
【数５３】
0006678984.tif 000054
は、図４Ｂの
【数５４】
0006678984.tif 000055
と一致する、又はより広くは、平行である軸であってもよい。実例によっては、
【数５５】
0006678984.tif 000056
軸はカメラ２７０の光軸であってもよい。実例によっては、
【数５６】
0006678984.tif 000057
は図４Ｂの
【数５７】
0006678984.tif 000058
軸と平行な軸であってもよく、一方、
【数５８】
0006678984.tif 000059
軸は図４Ｂの
【数５９】
0006678984.tif 000060
軸と平行な軸であってもよい。図６Ａに描写する例では、姿勢角度αはまた、
【数６０】
0006678984.tif 000061
と
【数６１】
0006678984.tif 000062
との間の角度として、及び／又は
【数６２】
0006678984.tif 000063
軸の周りでキャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。
【００３４】
図６Ａ〜６Ｃの例では、軸
【数６３】
0006678984.tif 000064
は第一の基準座標系であってもよく、一方、姿勢角度βは第二の基準座標系に対して画定されてもよい。第二の基準座標系によって、キャリブレーションボード２６０が姿勢角度βだけ回転する前に、キャリブレーションボード２６０の開始点が画定されうる。そのような開始点では、キャリブレーションボード２６０は、第一の基準座標系に対して、姿勢角度αだけ既に回転している。したがって、この例における第二の基準座標系は、第一の基準座標系に対してαだけ回転する座標系であってもよい。第二の基準座標系は、座標軸
【数６４】
0006678984.tif 000065
によって画定されうる。図６Ｂに描写するように、姿勢角度βは、
【数６５】
0006678984.tif 000066
及び
【数６６】
0006678984.tif 000067
によって形成されるＸＺ平面に沿って、法線ベクトル２６１と
【数６７】
0006678984.tif 000068
との間に又は
【数６８】
0006678984.tif 000069
と
【数６９】
0006678984.tif 000070
との間に形成される角度であってもよい。図６Ｂに描写する例では、姿勢角度βはまた、
【数７０】
0006678984.tif 000071
と
【数７１】
0006678984.tif 000072
との間の角度として、及び／又は
【数７２】
0006678984.tif 000073
軸の周りでキャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。
【００３５】
同じように、姿勢角度θは、第三の基準座標系に対して画定されてもよい。第三の基準座標系によって、キャリブレーションボード２６０が角度θだけ回転する前に、キャリブレーションボード２６０の開始点が画定されうる。この開始点は、角度βだけ第二の座標系を回転させることによって画定されてもよく、それによって、第三の基準座標系の座標軸
【数７３】
0006678984.tif 000074
を得うる。図６Ｃに示すように、姿勢角度θは、
【数７４】
0006678984.tif 000075
及び
【数７５】
0006678984.tif 000076
によって形成されるＸＹ平面に沿って、
【数７６】
0006678984.tif 000077
と
【数７７】
0006678984.tif 000078
との間に又は
【数７８】
0006678984.tif 000079
と
【数７９】
0006678984.tif 000080
との間に形成される角度であってもよい。図６Ｃに描写する例では、姿勢角度θはまた、  
【数８０】
0006678984.tif 000081
軸の周りで又は法線ベクトル２６１の周りで、キャリブレーションボード２６０を回転させることによって形成される角度として画定されてもよい。
【００３６】
上記で言及したように、本明細書における実施形態の一態様は、多様な姿勢を有するためのキャリブレーションパターン１６０／２６０の制御、より具体的には、望ましいパターン配向の範囲内における概して一様な分布など、望ましい分布を有する複数のパターン配向の採用に関する。パターン配向は、α、β、θなど、一つ以上の姿勢角度によって制御されうる。しかしながら、一様分布に従って、姿勢角度α、β、θの各々に対して個々にただ角度値（姿勢角度値とも呼ばれる）を生成するのみでは、結果として生じるパターン配向が一様分布を必ずしも有さない場合がある。
【００３７】
例えば、図７Ａは、個々の、一様な確率密度分布（ＰＤＦ）に基づくαに対するランダムな姿勢角度値の生成、及び一様なＰＤＦに基づくβに対するランダムな姿勢角度値の生成に各々起因する、パターン配向を表す例を描写する。場合によっては、θに対するランダムな姿勢角度値もまた、一様なＰＤＦに従って個々に生成されてもよい。より具体的には、図７Ａは、キャリブレーションパターン１６０／２６０に対して、可能なパターン配向を表しうる、仮想球３０２を描写する。仮想球の表面は、キャリブレーションパターン１６０／２６０の法線ベクトル２６１を指し示すことができる、可能な方向を表しうる。より具体的には、仮想球３０２の表面は、キャリブレーションパターン２６０の法線ベクトル２６１を指し示すことができる、全方向の軌跡であってもよく、又はそれを表しうる。法線ベクトル２６１に割り当てられた長さ（例えば、１０ｃｍ）がある場合、仮想球３０２は、割り当てられた長さと等しい半径を有してもよい。法線ベクトル２６１の例は図７Ｂに描写し、キャリブレーションパターン２６０に直交するベクトルであってもよい。一実施形態において、法線ベクトル２６１は、キャリブレーションパターン２６０上にある一つの終点を有してもよい。例えば、終点は、キャリブレーションパターン２６０に対するパターン座標系の原点に位置しうる。図７Ｂの例では、仮想球３０２の中心は、法線ベクトル２６１のその終点にあってもよく、仮想球３０２の表面は、法線ベクトル２６１の他方の終点によって画定されてもよい。仮想球３０２の表面上にある決定の表面点は、キャリブレーションパターン２６０に対する法線ベクトルに、その表面点を指し示させるであろう、キャリブレーションパターン２６０の決定のパターン配向を表しうる。例えば、キャリブレーションパターン２６０が、図７Ｂに描写する、ある決定の配向を有するとき、法線ベクトル２６１は表面点３０４ａを指し示す。したがって、表面点３０４ａは、そのパターン配向を表してもよく、又は他の方法でそのパターン配向に対応してもよい。キャリブレーションパターン２６０が配向を変化させると、法線ベクトル２６１は、図７Ａに示す表面点３０４ｂ又は３０４ｃなど、仮想球３０２上の異なる表面点を指し示しうる。
【００３８】
上記で言及したように、図７Ａの例では、一様な確率密度分布（ＰＤＦ）に基づいてαに対するランダムな姿勢角度値を生成し、一様なＰＤＦに基づいてβに対するランダムな姿勢角度値を生成しうる。一様なＰＤＦは、角度値の望ましい範囲中にある値を、ランダムに出力するように構成されてもよく、範囲の中の各角度値は出力される尤度が等しい。図７Ａの例では、望ましい範囲は−１８０度から１８０度までであってもよい。角度値の望ましい範囲は、望ましいパターン配向の範囲に対応しうる。図７Ａでは、そのような角度値の望ましい範囲（−１８０度から１８０度まで）は、キャリブレーションパターン２６０に対する全ての可能なパターン配向に対応してもよい。
【００３９】
図７Ａに描写するように、一様なＰＤＦを使用して、姿勢角度α、β、θの各々に対する姿勢角度値を個々に決定するが、結果として生じるパターン配向は、望ましいパターン配向の範囲内で一様には分布しない。より具体的には、図７Ａの例における望ましいパターン配向の範囲には、全ての可能なパターン配向を含んでもよく、一様なＰＤＦを使用する角度値の決定から結果として生じるパターン配向は、仮想球３０２の表面上にある表面点（例えば、３０４ａ〜３０４ｄ）として表される。図７Ａの複数の表面点は、仮想球３０２の表面のある部分内に、仮想球３０２の表面の他の部分内よりも密に分布する。したがって、結果として生じるパターン配向は、他の方向に対する方向のある一つ又は複数の範囲に、より密に分布しうる。対照的に、図７Ｃは、パターン配向がより一様な分布を有するシナリオを示し、そのため、パターン配向を表す表面点もまた、仮想球３０２の表面上により一様な分布を有する。
【００４０】
図７Ａでは、パターン配向は、−１８０度から１８０度までである、α、β、及び／又はθに対する角度値の望ましい範囲から結果として生じた。図８Ａ〜８Ｃは、角度値の異なる望ましい範囲に基づく、パターン配向の分布を描写する。より具体的には、図８Ａは、パターン配向が、−１０度から−３０度までの角度値である第一の望ましい範囲８０２（第一の範囲８０２とも呼ばれる）と、１０度から３０度までの角度値である第二の望ましい範囲８０４（第二の範囲８０４とも呼ばれる）とに起因する例を描写する。姿勢角度αの姿勢角度値は、第一の範囲及び第二の範囲に制約されうる。姿勢角度αは、キャリブレーション画像を取得すると、キャリブレーションパターン２６０がカメラ２７０に対して傾くが、傾きすぎないように、第一の範囲８０２及び第二の範囲８０４に制約されうる。場合によっては、α、β、θのうちの一つ以上に対する、一つ又は複数の望ましい角度の範囲は、一つ以上のユーザー定義の範囲であってもよい。
【００４１】
一実施形態において、角度値の望ましい範囲は、α及びβになど、複数の姿勢角度に適用されうる。そのような実施形態では、姿勢角度βもまた、上で論じた第一の範囲８０２及び第二の範囲８０４に制約されるであろう。一実施形態において、仮想球の表面上にある領域（表面領域とも呼ばれうる）は、角度値の望ましい範囲８０２／８０４に起因する、パターン配向の一つ又は複数の範囲を表しうる。例えば、図８Ｂは仮想球３０２の表面領域３０６を示す。表面領域３０６は、望ましいパターン配向の範囲を表す、表面点を包含しうる。例えば、図８Ｂに描写する例のパターン２６０のパターン配向は、表面点３０４ｄによって表されうる。一実施形態において、表面領域３０６は、仮想球３０２の表面上に円形帯又は楕円形帯を形成してもよい。一実施形態において、円形帯又は楕円形帯は一様な幅を有してもよい。
【００４２】
図７Ａの例では、α及びβの各々に対する姿勢角度値は、−１８０度から１８０度までである角度値の望ましい範囲の中で、角度値をランダムに選択する一様確率分布に基づいて決定されうる。図８Ｂは、α及びβの姿勢角度値が類似の手段で決定される例を描写するが、角度値の望ましい範囲は、図８Ａの第一の範囲８０２及び第二の範囲８０４、すなわち、−１０度から−３０度及び１０度から３０度である。姿勢角度α及びβは、第一の範囲８０２及び第二の範囲８０４に制限されてもよく、それによって、表面領域３０６により表される望ましいパターン配向の範囲をもたらしうる。しかしながら、このようにα及びβを決定することによってもまた、概して一様ではない、又はより広くは、望ましい分布を有さない、望ましいパターン配向の範囲内におけるパターン配向の分布になる。より具体的には、図８Ｃは、上の技法による姿勢角度値の決定に起因する、パターン配向の分布を表す、表面点３０６ａ〜３０６ｃなどの複数の表面点を描写する。図面が示すように、複数の表面点は、表面領域３０６内で一様には分布せず、むしろ表面領域３０６の最上部付近に集中する。この表面点の分布は、結果として生じるパターン配向が、
【数８１】
0006678984.tif 000082
とより密接して整列し、カメラ１７０／２７０に対してより少ない傾きを呈する傾向がある、方向の周りにより集中しうることを示しうる。
【００４３】
上記で言及したように、本明細書における実施形態の一態様は、キャリブレーションパターン１６０／２６０に対する望ましいパターン配向の範囲内で概して一様になど、望ましいように分布するパターン配向を有する、複数の姿勢の決定に関する。例えば、図９は、望ましいように分布するパターン配向を有しうる、複数の姿勢を決定するための方法９００を描写する。方法９００は、カメラキャリブレーションを行う一部として、コンピューティングシステム１１０の制御回路１１１によって行われてもよい。カメラキャリブレーションは、例えば、カメラ１７０用の内部カメラパラメーターの推定値を決定し、及び／又はロボット１５０に対するカメラ１７０の位置及び配向など、カメラ１７０とその環境との間の空間関係を決定するように使用できる。
【００４４】
一実施形態において、方法９００は、制御回路１１１によって、カメラキャリブレーションを行うための、図１／３Ａのキャリブレーションパターン１６０／２６０のパターン配向の範囲でありうる、パターン配向の範囲を決定するステップ９０２を含みうる。実例によっては、パターン配向の範囲は、望ましいパターン配向の範囲でありうる。実例によっては、パターン配向の範囲は、キャリブレーションパターン１６０／２６０によって採用できる、可能なパターン配向のうちのいくつかのみを含み、他の可能なパターン配向を除外しうる。除外されたパターン配向によって、例えば、カメラキャリブレーションを行うには最適でない、キャリブレーション画像が提供されうる。例えば、図１／３Ａのカメラ１７０／２７０に対して傾きを全く呈さないパターン配向によって、レンズひずみパラメーター若しくは他のカメラキャリブレーションパラメーターの推定値を決定する価値を限定しうる、パースペクティブ効果及び／又はレンズひずみ効果も全く呈さないキャリブレーション画像を得うる。そのようなパターン配向は、α及びβ両方の姿勢角度に対するゼロ度の姿勢角度値に対応しうる。いくつかの他のパターン配向は、これらの姿勢でキャリブレーションパターン１６０／２６０の写真を撮ることによって、パターン要素をはっきりと取り込むのに失敗するキャリブレーション画像を得る場合があるため、キャリブレーションパターン１６０／２６０上のパターン要素又は他の特徴を、カメラ１７０／２７０から離れすぎた方を向かせるので除外されてもよい。
【００４５】
一実施形態において、ステップ９０２におけるパターン配向の範囲の決定は、上で論じた姿勢角度α、β、又はθなど、少なくとも一つの姿勢角度に対する、角度値の一つ以上の範囲の決定を伴いうる。姿勢角度に対して決定される範囲は、その姿勢角度に対してどの姿勢角度値が決定できるかを制約しうる。一例では、一つ以上の範囲は、図８Ａに描写する第一の範囲８０２及び第二の範囲８０４でありうる。より具体的には、そのような例におけるパターン配向の範囲の決定は、姿勢角度α及び姿勢角度βの両方が、二つの範囲、すなわち、−１０度と−３０度との間である第一の範囲８０２、及び１０度と３０度との間である第二の範囲８０４に制約されると決定することを伴いうる。実例によっては、一つ以上の範囲は、大きさ（すなわち、絶対値）が小さすぎる姿勢角度値を除外してもよく、大きすぎる姿勢角度値を更に除外してもよい。大きさが小さすぎる姿勢角度値によって、キャリブレーションパターン１６０／２６０が、カメラ１７０／２７０に対して全く傾きを呈さないか、又はほとんど傾きを呈さない場合があり、カメラパラメーター値を正確に推定するには最適ではない、キャリブレーション画像をもたらしうる。大きすぎる姿勢角度値によって、キャリブレーションパターン１６０／２６０が、カメラ１７０／２７０に関してパターン配向へ傾きすぎる場合があり、キャリブレーションパターン１６０／２６０上の様々なパターン要素又は他の特徴が、結果として生じるキャリブレーション画像の中に取り込まれないか、又は結果として生じるキャリブレーション画像の中で歪みすぎて見える。
【００４６】
場合によっては、ステップ９０２のパターン配向の範囲は、ユーザー定義の値に基づいてもよい。例えば、パターン配向の範囲の決定には、非一時的コンピューター可読媒体１１５から、姿勢角度値の一つ又は複数のユーザー定義範囲にアクセスする、図２の制御回路１１１を伴いうる。より具体的には、制御回路１１１によって、非一時的コンピューター可読媒体１１５からユーザー定義の範囲を読み出すか、又はより広くは、受信してもよい。
【００４７】
一実施形態において、方法９００は、図２の制御回路１１１によって、仮想球の表面上にある表面領域を決定する、ステップ９０４を含む。例として、仮想球は、図７Ａ〜７Ｃ、８Ｂ、８Ｃの、並びにまた図１０Ａ及び１０Ｂの仮想球３０２でありうる。仮想球（例えば、仮想球３０２）は、キャリブレーションパターン１６０／２６０の可能なパターン配向を表しうる。より具体的な例では、仮想球は、キャリブレーションパターン１６０／２６０の全ての可能なパターン配向を表しうる。例えば、仮想球の表面は、キャリブレーションパターン１６０／２６０の法線ベクトル（例えば、２６１）が指し示せる、全ての点の軌跡であってもよく、法線ベクトルが指し示せる全ての方向に対応してもよい。法線ベクトルに、例えば、１０ｃｍの画定された長さを割り当てる場合、仮想球は半径１０ｃｍを有する球でありうる。一実施形態において、表面領域の外側にある表面点は、姿勢角度値を決定するためには使用されない。言い換えると、制御回路１１１は、姿勢角度値を決定し、姿勢を決定するために、表面領域の外側にある表面点を無視してもよい。
【００４８】
一実施形態において、仮想球（例えば、３０２）の表面上にある表面領域（例えば、３０６）は、カメラキャリブレーションを行うためのパターン配向の範囲（例えば、カメラキャリブレーションを行うための望ましいパターン配向の範囲）を表す。例えば、表面領域は、図１０Ａ及び８Ｃの表面領域３０６であってもよい。場合によっては、表面領域は、キャリブレーションパターン１６０／２６０に対する法線ベクトルが、望ましいパターン配向の範囲内に留まっている間、指し示すことができる点の軌跡であってもよい。例として、パターン配向の範囲が、少なくとも一つの姿勢角度（例えば、α及びβ）に対する、姿勢角度値の一つ以上の範囲に基づく場合、表面領域（例えば、３０６）は、法線ベクトル（例えば、法線ベクトル２６１）が、少なくとも一つの姿勢角度に対する姿勢角度値の一つ以上の範囲内に留まっている間、指し示すことができる点の軌跡であってもよい。場合によっては、図１０Ａ及び８Ｃの表面領域３０６などの表面領域は、仮想球の表面上に円形帯（円形片とも呼ばれる）を形成しうる。円形帯は、一様な幅を有してもよく、又は変化する幅を有してもよい。
【００４９】
一実施形態において、方法９００は、制御回路１１１によって、キャリブレーションパターン１６０／２６０に対する複数の姿勢を決定する、ステップ９０６を含む。実例によっては、複数の姿勢は、キャリブレーション画像を生成するように、キャリブレーションパターン１６０／２６０が写真を撮られるか、又は他の方法で撮像される姿勢であってもよく、画像取り込み姿勢又は撮像姿勢と呼ばれうる。複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定されうる。例えば、複数のそれぞれの位置は、図３Ａ、３Ｂ、及び４Ｂのカメラ視野２７２内の位置であってもよい。この例では、姿勢角度値のそれぞれのセットの各々は、α及びβのそれぞれの姿勢角度値、又はα、β、及びθのそれぞれの姿勢角度値であってもよい。そのような例では、ある決定の姿勢は、カメラ視野２７２内の位置、αの姿勢角度値、βの姿勢角度値、及びθの姿勢角度値によって画定されうる。場合によっては、姿勢を画定するのに使用される姿勢角度は、キャリブレーションパターン１６０／２６０がどのくらいカメラ１７０／２７０に対して傾いているかに影響を与える、角度でありうる。そのような角度は、姿勢角度α及びβを含みうる。例えば、姿勢角度θが、キャリブレーションパターン１６０／２６０の相対的な傾きに影響を与えない場合、キャリブレーションパターン１６０／２６０の姿勢は、姿勢角度α及びβ、並びにカメラ視野２７２内の位置のみによって画定されてもよい。
【００５０】
一実施形態において、ステップ９０６における姿勢角度値の複数のセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択される、それぞれの表面点に基づいて決定されてもよい。例えば、姿勢角度値のセットは、姿勢角度α、β、及びθそれぞれの三つの角度値を含みうるか、又は、姿勢角度α及びβそれぞれの二つの角度値を含みうる。この例では、姿勢角度値のセット中の姿勢角度値のうちのいくつか又は全てが、図１０Ａ中の仮想球３０２の表面上にある表面領域３０６内から選択される、図面中の表面点３０８ａ〜３０８ｉのうちの一つなど、それぞれの表面点に基づきうる。表面点（例えば、表面点３０８ａ）は、キャリブレーションパターン１６０／２６０の法線ベクトル２６１を指し示す方向を表しうる。姿勢角度値の決定については、以下でより詳細に論じる。
【００５１】
一実施形態において、キャリブレーションパターン１６０／２６０に対する可能なパターン配向を表す、仮想球上の表面点を選択し、次に、選択された表面点に基づいて、少なくとも一つの姿勢角度の姿勢角度値を決定することによる、キャリブレーションパターン１６０／２６０に対する姿勢の決定によって、結果として生じるパターン配向が望ましい分布を達成することができる可能性がより高くなりうる。例えば、姿勢角度値のそれぞれのセットが基づく表面点は、一様確率分布又は何らかの他の確率分布（例えば、ガウス分布）に従って、表面領域内からランダムに選択されうる。表面点を選択するために一様確率分布を使用することで、選択された表面点が表面領域内で一様分布を有する可能性が高いことを保証しうる。そのような例では、選択される表面点が、表面領域内で一様分布を有する可能性が高いため、選択された表面点に基づいて決定される姿勢角度値もまた、一様分布又は何らかの他の望ましい分布を有する、結果として生じるパターン配向を得る可能性が高い。
【００５２】
図１０Ａは、仮想球３０２の表面領域３０６内から選択され、表面領域３０６内で実質的に一様な分布を持つ複数の表面点３０８ａ〜３０８ｉの例を描写する。より具体的には、表面領域３０６は円形帯を形成してもよく、表面点３０８ａ〜３０８ｉは、円形帯の周りに円形帯の幅に沿って実質的に一様に分布する。上記で言及したように、少なくとも一つの姿勢角度の姿勢角度値を決定するために表面点３０８ａ〜３０８ｉを使用することで、実質的に一様な分布を有するパターン配向を得うる。
【００５３】
一実施形態において、制御回路１１１は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点（例えば、３０８ａ〜３０８ｉ）に対して、一様確率分布に従って、図１０Ａ及び１０Ｂの表面領域３０６などの表面領域内から、それぞれの表面点の各々をランダムに選択するように構成されうる。場合によっては、ランダムな選択は、ｒａｎｄ（）など、疑似ランダム関数に依存しうる。場合によっては、表面領域は、極座標の範囲の観点から画定されてもよく、それぞれの表面点の各表面点は、極座標の範囲の中から極座標をランダムに選択することによって選択されてもよい。ランダムな選択は、極座標の範囲中の各極座標が選択される可能性が同程度にあるような、一様確率分布に従って行われてもよい。場合によっては、制御回路１１１は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、一様な表面点のセットのみの中から、それぞれの表面点の各々をランダムに選択するように構成されてもよい。一様な表面点のセットは、仮想球の表面上にある表面領域内に一様に分布する、表面点のセットであってもよい。例えば、図１０Ａ及び１０Ｂは一様な表面点のセットを描写する。そのような例では、複数の表面点３０８ａ〜３０８ｉは、一様な表面点のセット中からランダムに選択される表面点であってもよい。ランダムな選択は、一様な表面点のセットの各々が選択される可能性が同程度にある、一様確率分布に従って行われてもよい。このように選択を行うことによって、選択される表面点（例えば、３０８ａ〜３０８ｉ）は、表面領域３０６内に概して一様な分布を有する傾向がありうる。
【００５４】
上記で言及したように、実例によっては、仮想球（例えば、３０２）の表面上にある表面点は、キャリブレーションパターンに対する法線ベクトル（例えば、２６１）に表面点の方を指し示させるか、又は他の方法で法線ベクトルを表面点へ方向付けるであろう、キャリブレーションパターン１６０／２６０に対するそれぞれの配向を表しうる。例えば、図１０Ｂは、法線ベクトル２６１に表面点３０８ａを指し示させるであろう、キャリブレーションパターン１６０／２６０に対するそれぞれの配向を表す、その表面点３０８ａを示す。そのような実例では、表面点に基づく姿勢角度値の決定には、表面点３０８ａのそれぞれの座標に逆正接を適用することを伴いうる。この例では、表面点３０８ａのそれぞれの座標はまた、法線ベクトル２６１の座標とも呼ばれうる。例えば、表面点３０８ａがデカルト座標［ｘ，ｙ，ｚ］Ｔ（カメラ座標系又は何らかの他の座標系にある）を有する場合、姿勢角度のうちの一つに対する角度値（例えば、α）は、ａｒｃｔａｎ（ｙ／ｚ）に等しいか、又はこれに基づいてもよい。いくつかの実施態様では、角度値は、法線ベクトルを、指し示す最初の方向（例えば、カメラ光軸に沿って座標［０  ０  １０ｃｍ］Ｔの方を指し示す）から、表面点３０８ａの方（例えば、座標［ｘ  ｙ  ｚ］Ｔの方）を指すように変換するであろう、一つ以上の回転行列を解くことで決定されうる。一例では、回転行列を解くことは、方程式［ｘ  ｙ  ｚ］Ｔ＝ＲαＲβＲθ［０  ０  １０ｃｍ］Ｔを解くことを伴ってもよく、式中、Ｒα、Ｒβ、及びＲθは、図５Ａ〜５Ｃ及び６Ａ〜６Ｃに関して上に記載したように、姿勢角度α、β、及びθによりキャリブレーションパターン１６０／２６０の回転を表す、それぞれの回転行列である。いくつかの実施態様では、表面点３０８ａが、極座標系で表示する極座標である座標を有する場合、姿勢角度のうちのいくつかの姿勢角度値は、極座標の構成要素に基づきうるか、又はより具体的には、等しくなりうる。
【００５５】
上記で言及したように、一実施形態において、ステップ９０６で決定される複数の姿勢は、カメラキャリブレーションを行うためにキャリブレーション画像を生成するように、カメラ１７０／２７０によってキャリブレーションパターン１６０／２６０の写真を撮る、又は他の方法で撮像する姿勢であってもよい。したがって、ステップ９０６で決定される複数の姿勢もまた、画像取り込み姿勢と呼ばれうる。いくつかの実施態様では、ステップ９０６における複数の姿勢の決定は、候補姿勢のセットの決定と、候補姿勢のうちのどれがロボットで達成可能な候補姿勢であるかの決定と、ロボットで達成可能な候補姿勢の中からの複数の姿勢（画像取り込み姿勢である）の選択とを伴いうる。
【００５６】
一実施形態において、候補姿勢は、以下でより詳細に論じるように、制御回路１１１により決定されたが、姿勢がロボット１５０／２５０によって達成できるかをまだ評価していない姿勢であってもよい。場合によっては、候補姿勢は、制御回路１１１によって位置及び姿勢角度値のセットを決定した姿勢であってもよい。例えば、候補姿勢のセットの各候補姿勢は、候補姿勢に対するカメラ視野内のそれぞれの位置を決定することと、候補姿勢に対する姿勢角度値のそれぞれのセットを決定することとによって決定されうる。それぞれの位置は、以下でより詳細に論じるように、例えば、空間の中に広がるロボットで達成可能な候補姿勢をもたらすように決定されうる。場合によっては、それぞれの位置の決定は、それぞれの位置に対する座標のいくつかの若しくは全て構成要素のランダム値又は疑似ランダム値を生成する関数（例えば、ｒａｎｄ（）関数）に依存しうる。一実施形態において、姿勢角度値のそれぞれのセットは、上で論じたように、例えば、仮想球（例えば、３０２）の表面上にある表面領域（例えば、３０６）内からそれぞれの表面点を選択することと、それぞれの表面点に基づく候補姿勢に対して、姿勢角度値のそれぞれのセットを決定することとによって決定されうる。別の実施形態では、姿勢角度値のそれぞれのセットは、異なる様式で決定されてもよい。
【００５７】
一実施形態において、制御回路１１１は、候補姿勢のセットからロボットで達成可能な候補姿勢のセットを決定するように構成されてもよい。ロボットで達成可能な候補姿勢は、ロボット１５０／２５０によって達成できる、キャリブレーションパターン１６０／２６０に対する候補姿勢でありうる。より具体的には、ロボット１５０／２５０は、いくつかのシナリオでは、いくつかの候補姿勢を達成できない場合がある。例えば、ある決定の候補姿勢は、ロボット１５０／２５０が、姿勢角度値のセットにより示されるように、キャリブレーションパターンを傾けることができないため、ロボット１５０／２５０が遂行できない、その姿勢角度値のセットを有しうる。加えて、キャリブレーションパターンに対する候補姿勢には、キャリブレーションパターン１６０／２６０を置くべき姿勢角度値のセットだけでなく、キャリブレーションパターン１６０／２６０を置くべきカメラ視野（例えば、２７２）内の位置も伴いうる。実例によっては、ロボット１５０／２５０は、キャリブレーションパターン１６０／２６０を決定された位置に置くことができない場合がある。実例によっては、ロボット１５０／２５０は、候補姿勢の姿勢角度値のセット又は位置のどちらかを遂行できうるが、ロボット１５０／２５０の動作に関する制約から、姿勢角度のセット及び候補姿勢の位置両方の組み合わせを遂行できない場合がある。例えば、ロボット１５０／２５０の動作は、ロボット１５０／２５０が、キャリブレーションパターン１６０／２６０をカメラ視野（例えば、２７２）中のある位置へ動かすのを妨げうる、障害物によって制約されうる。実例によっては、ロボット１５０／２５０の機械構成によって、その動作の自由を制約しうる。例として、図３Ａ及び３Ｂのロボット２５０は、ロボットアームの様々なリンク２５４Ａ〜２５４Ｅが互いに接続し、互いに対して限定的な自由度を有する機械構成を有しうる。そのような機械構成によって、ロボット２５０が、キャリブレーションパターン２６０が取り付けられるリンク２５４Ｅの位置及び配向の、ある組み合わせを達成するのを妨げうる。したがって、ロボット２５０の機械構成によって、ロボット２５０が、キャリブレーションパターン２６０の位置及びパターン配向の、ある組み合わせを達成するのを妨げうる。言い換えると、ロボット２５０の機械構成によって、ロボット２５０が、キャリブレーションパターン２６０に対するある姿勢を達成するのを妨げうる。
【００５８】
したがって、一実施形態において、ステップ９０６で制御回路１１１によって、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能であるか（すなわち、候補姿勢がロボット１５０／２５０によって達成できるか）を決定してもよい。制御回路１１１によって、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢を候補姿勢のセットへ追加しうる。制御回路１１１によって更に、候補姿勢がロボットで達成可能ではないという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットから除外してもよく、又はより広くは、カメラキャリブレーションを行う目的で候補姿勢を無視してもよい。
【００５９】
場合によっては、制御回路１１１によって、キャリブレーションパターン１６０／２６０を動かして候補姿勢を達成するよう実際に試みるように、ロボット１５０／２５０を制御することと、ロボット１５０／２５０が定義した時間内に候補姿勢を達成できるかを決定することとによって、ある決定の候補姿勢がロボットで達成可能であるかを決定しうる。場合によっては、制御回路１１１によって、逆運動学関数が候補姿勢用の動作コマンドを出力できるかを決定してもよい。逆運動学関数は、ロボット１５０／２５０がある決定の姿勢を達成するための、一つ以上のモーターコマンドなど、動作コマンドを計算するように設計される関数であってもよい。逆運動学関数がある決定の候補姿勢用の動作コマンドを出力できる場合、制御回路１１１によって、候補姿勢がロボットで達成可能な候補姿勢であると決定しうる。関数がある決定の候補姿勢用の動作コマンドを出力できない場合、制御回路１１１によって、候補姿勢がロボットで達成可能な候補姿勢ではないと決定しうる。
【００６０】
上記で言及したように、一実施形態において、ステップ９０６で制御回路１１１によって更に、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢（画像取り込み姿勢であるか、又はそうなるであろう）を選択しうる。場合によっては、選択には、ロボットで達成可能な候補姿勢の目標数を、複数の姿勢として選択することを伴いうる。目標数は、例えば、ユーザー定義の値であってもよく、又は何らかのノイズレベル、カメラキャリブレーションを行うのに割り振られる時間、若しくは何らかの他の要因に基づいて決定されてもよい。例えば、ロボットで達成可能な候補姿勢のセットは、少なくとも９つのロボットで達成可能な候補姿勢を含んでもよく、目標数は８であってもよい。そのような例では、ステップ９０６で制御回路１１１によって、複数の姿勢として、９つのロボットで達成可能な候補姿勢のセットの中から、８つのロボットで達成可能な候補姿勢を選択してもよい。別の例では、ロボットで達成可能な候補姿勢のセットは、少なくとも６４個の候補姿勢を含んでもよく、目標数は１５であってもよい。そのような例では、制御回路１１１によって、複数の姿勢として、６４個のロボットで達成可能な候補姿勢のセットの中から、１５個のロボットで達成可能な候補姿勢を選択してもよい。いくつかの実施態様では、制御回路１１１によってランダムに選択を行いうる。例えば、制御回路１１１によって、ロボットで達成可能な候補姿勢の各々が選択される可能性が同程度にある一様確率分布に従って、６４個のロボットで達成可能な候補姿勢のセットの中から、１５個のロボットで達成可能な候補姿勢をランダムに選択しうる。ランダムな選択は、いくつかの実施態様では、疑似ランダム関数に依存しうる。
【００６１】
上記で言及したように、制御回路１１１によって、一実施形態において、仮想球（例えば、３０２）の表面上にある表面領域（例えば、３０６）内から選択される表面点に基づいて、候補姿勢のセットの各々に対して、姿勢角度値のそれぞれのセット（例えば、それぞれの姿勢角度α、β、θの）を決定してもよい。ステップ９０６で決定される複数の姿勢（画像取り込み姿勢であるか、又はそうなるであろう）が、最終的に候補姿勢のセットから選択されるため、複数の姿勢の各々は、同様に、仮想球の表面上にある表面領域内から選択されるそれぞれの表面点に基づいて決定される、姿勢角度値のセットを有するとみなされうる。
【００６２】
一実施形態において、制御回路１１１によって、ランダムに候補姿勢に対するそれぞれの位置を決定しうる。例えば、制御回路１１１によって、カメラ視野（例えば、２７２）内の位置をランダムに選択し、仮想球の表面領域内から選択される表面点に基づいて（上に記載するように）姿勢角度値のセットを決定し、決定された位置及び姿勢角度値のセットを有する候補姿勢が、ロボットで達成可能な候補姿勢であるかを評価しうる。場合によっては、姿勢角度値のセットは、表面点の決定に依存しない、何らかの他の様式で決定されてもよい。一実施形態において、制御回路１１１によって、候補姿勢がカメラ視野内に広がるように、候補姿勢の位置を決定しうる。より具体的には、候補姿勢により、カメラ視野内に広がるロボットで達成可能な候補姿勢をもたらすように、制御回路１１１によって、それらの候補姿勢の位置を決定しうる。ステップ９０６で決定される複数の姿勢が、ロボットで達成可能な候補姿勢から選択されてもよいため、複数の姿勢もまた、その後、カメラ視野内に広がりうる。
【００６３】
一実施形態において、候補姿勢、ロボットで達成可能な候補姿勢、及び／又は画像取り込み姿勢を広げるように試みるには、制御回路１１１によって、カメラ視野（例えば、２７２）内の空間を分ける３Ｄ領域のグリッドを決定し、候補姿勢がグリッドの中に広がるように、及び／又はロボットで達成可能な候補姿勢がグリッドの中に広がるように、候補姿勢の位置を決定しうる。一実施形態において、３Ｄ領域のグリッドが、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する、一つ以上の層に分けうる。
【００６４】
一実施形態において、カメラ視野内の空間は、キャリブレーションパターン１６０／２６０が、ロボット１５０／２５０によって動かされ、カメラ２７０によって写真を撮られて、カメラキャリブレーションを行う空間でありうる。空間は、ロボット１５０／２５０がキャリブレーションパターン１６０／２６０を動かすことができる、カメラ視野（例えば、２７２）内の全ての位置を含むほど、十分大きい場合があり、又は空間からそれらの位置のうちのいくつかを省くサイズを有しうる。場合によっては、空間のサイズ又は境界は、ロボット１５０／２５０の動きの範囲に基づいてもよい。例えば、空間の境界は、ロボット１５０／２５０（例えば、ロボットアームを介して）が、ロボットのベース（例えば、２５２）に対して、若しくはカメラ１７０／２７０に対して、又は何らかの他の位置に対してキャリブレーションパターン１６０／２６０を置くことができる、最も遠い位置に対応しうる。実例によっては、空間の境界は、第一の奥行き値及び第二の奥行き値によって画定されうる。例えば、図１１Ａは、カメラ２７０のカメラ視野２７２内にある空間２７１を描写する。この例では、空間２７１には、カメラ視野２７２内であり、第一の奥行き値Ｄｅｐｔｈｍｉｎと第二の奥行き値Ｄｅｐｔｈｍａｘとの間にある、全ての位置（及びそれらの位置のみ）が収められてもよく、両方の奥行き値はカメラ２７０に対してである。場合によっては、第一の奥行き値及び第二の奥行き値は、図２の非一時的コンピューター可読媒体１１５、又は何らかの他のデバイスに記憶され、制御回路１１１にアクセス可能なユーザー定義の値であってもよい。場合によっては、制御回路１１１によって、ロボット１５０／２５０の動きの範囲に基づいて、第一の奥行き値及び第二の奥行き値を決定しうる。一実施形態において、空間２７１は、円錐台若しくは角錐台を形成してもよく、又は収めてもよい。角錐又は円錐がカメラ視野を画定しうる。例えば、図１１Ａの視野２７２は角錐によって画定され、空間２７１は角錐台を形成しうる。
【００６５】
上記で言及したように、３Ｄ領域のグリッドによって、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を、各々有する一つ以上の層に分けうる。例えば、図１１Ａは、空間２７１を第一の層２７４、第二の層２７５、及び第三の層２７６に分ける、２７個の３Ｄ領域２７３１〜２７（すなわち、３Ｄ領域２７３１、２７３２、２７３３、・・・２７３２５、２７３２６、２７３２７）のグリッドを描写する。図１１Ｂに示すグリッドは、３×３×３グリッドであってもよい。すなわち、グリッドは三つの層（第一の層２７４、第二の層２７５、及び第三の層２７５）を有してもよく、各層は３Ｄ領域の三行及び３Ｄ領域の三列を有しうる。言い換えると、層２７４、２７５、及び２７６の各々は、三列及び三行の３×３グリッドでありうるか、又はこれに分けられうる。第一の層２７４は３Ｄ領域２７３１〜９を包含してもよく、第二の層２７５は３Ｄ領域２７３１０〜１８を包含してもよく、第三の層２７６は３Ｄ領域２７３１９〜２７を包含してもよい。
【００６６】
視野２７２が角錐によって画定される図１１Ｂの例では、各３Ｄ領域は六面体を形成してもよく、又は六面体として形作られてもよい。場合によっては、六面体は複数の立方体であってもよい。カメラ視野が、円錐など、別の形状によって画定される別の例では、３Ｄ領域のいくつか又は全てが異なる形状を有してもよい。一実施形態において、３Ｄ領域２７３１〜２７は、まとめて空間２７１の全てを完全に占有してもよく、重複しない領域であってもよい。一実施形態において、３Ｄ領域２７３１〜２７の各々は、３Ｄ領域が他の３Ｄ領域のいくつかと境界を共有するように、３Ｄ領域の他の領域に直接隣接していてもよい。例えば、図１１Ａに描写するように、３Ｄ領域２７３１は、第一の層２７４で二つの他の３Ｄ領域と境界を共有し、第二の層２７５で別の３Ｄ領域と境界を共有する。
【００６７】
一実施形態において、制御回路１１１は、ステップ９０６で複数の姿勢に対して何個の姿勢が望ましいかを示す、目標数を決定するように構成されてもよく、目標数に基づいてグリッドのサイズを決定しうる。サイズは、何個の３Ｄ領域がグリッド中にあるかに影響しうる、何個の層、行、及び／又は列がグリッドの中にあるかを示してもよい。場合によっては、制御回路１１１によって、目標数の平方根以上である最も小さい整数として、グリッドサイズを決定してもよい。より具体的には、グリッドは、一つ以上の層を有し、一層当たりｎ個の行、及び一行当たりｎ個の列を有しうる。いくつかの状況では、グリッドは、以下でより詳細に論じるように、ロボットで達成可能な候補姿勢が、ラテン方格の空間分布又は層状空間分布を満たす必要がある例でなど、一層当たり最大でもｎ個のロボットで達成可能な候補姿勢を包含できうる。グリッドが更にｎ個の層（すなわち、グリッドがｎ×ｎ×ｎグリッドである）を有する場合、グリッドは、上の状況では、最大でもｎ２個のロボットで達成可能な候補姿勢を収容し包含できうる。ステップ９０６で複数の姿勢をロボットで達成可能な候補姿勢のセット中から選択してもよいため、ｎ２個のロボットで達成可能な候補姿勢は、ステップ９０６で複数の姿勢に対して、何個の姿勢を決定すべきかを示す目標数よりも大きい量である必要がある。したがって、制御回路１１１は、グリッドのサイズとして、姿勢の目標数の平方根以上である、最小の整数としての値ｎを決定するように構成されてもよい。ｎに対するそのような値によって、ｎ２に等しい、上の状況におけるロボットで達成可能な候補姿勢の数が、ステップ９０６のために決定される目標数よりも大きいことが確実となりうる。決定されるサイズｎは、グリッドの中に何行あるか、グリッドの中に何列あるか、グリッドの中に何層あるか、それらのいかなる組み合わせを示してもよく、又は何らかの他の情報を示しうる。
【００６８】
上記で言及したように、制御回路１１１によって、候補姿勢、又はより具体的には、ロボットで達成可能な候補姿勢である候補姿勢のサブセットが、３Ｄ領域のグリッド内に広がるように、候補姿勢に対するそれぞれの位置を決定しうる。ステップ９０６で決定される複数の姿勢（画像取り込み姿勢と呼ばれうる）を、ロボットで達成可能な候補姿勢の中から選択するため、ステップ９０６で決定される姿勢もまた、３Ｄ領域のグリッド内に広がりうる。一実施形態において、候補姿勢／ロボットで達成可能な候補姿勢／画像取り込み姿勢は、３Ｄグリッドの各層内に広がってもよい。例えば、それらは、図１１Ｂのグリッドの第一の層２７４内に広がり、グリッドの第二の層２７５内に広がり、グリッドの第三の層２７６内に広がりうる。
【００６９】
いくつかの実施態様では、以下でより詳細に論じるように、制御回路１１１によって、ロボットで達成可能な候補姿勢である正確に一つの候補姿勢で、３Ｄ領域のグリッドの全３Ｄ領域を埋める（又はより広くは、同様にロボットで達成可能な候補姿勢である等しい数の候補姿勢で、全３Ｄ領域を埋める）ように、候補姿勢を見つけようと試みてもよい。いくつかの実施態様では、以下でもより詳細に論じるように、制御回路１１１によって、候補姿勢で、又はより具体的には、ロボットで達成可能な候補姿勢である候補姿勢で３Ｄ領域のサブセットのみを埋めようとして、候補姿勢の位置を決定しうる。これらの実施態様では、制御回路１１１によって、ある決定の層にあるロボットで達成可能な候補姿勢が、以下でより詳細に論じるように、ラテン超立方体の空間分布（ラテン方格の空間分布とも呼ばれる）、層状空間分布、又は何らかの他の分布など、ある決定の空間分布を有するような位置を決定しうる。
【００７０】
上記で言及したように、一実施形態において、制御回路１１１によって、３Ｄ領域のグリッドの全３Ｄ領域（例えば、２７３１〜２７）を、等しい数の候補姿勢で（例えば、正確に一つの姿勢で）、又はより具体的には、ロボットで達成可能な候補姿勢でもある、等しい数の候補姿勢で埋めようとして、候補姿勢のそれぞれの位置を決定してもよい。そのような実施形態では、ロボットで達成可能な候補姿勢は、それゆえ、概して一様な空間分布を有しうる。場合によっては、ステップ９０６で決定される複数の姿勢（画像取り込み姿勢）は、それらのロボットで達成可能な候補姿勢の全てを含んでもよく、又はロボットで達成可能な候補姿勢の全てのうちのランダムに選択されるサブセットであってもよい。しかしながら、３Ｄ領域のグリッドの全３Ｄ領域に対して、ロボットで達成可能な候補姿勢でもある候補姿勢を見つけるのは、困難でありうる。例えば、上で論じたように、いくつかの３Ｄ領域は、その３Ｄ領域の中へのロボット１５０／２５０及びキャリブレーションパターン１６０／２６０の動作を邪魔する、障害物を有しうる。実例によっては、各候補姿勢は、ある決定の３Ｄ領域内にある位置のみでなく、姿勢角度値のセットも含みうる。姿勢角度値は、上で論じたように、仮想球の表面点に基づいて、又は何らかの他の様式で決定されうる。ロボット１５０／２５０は、キャリブレーションパターン１６０／２６０をその位置に置くことができうるが、姿勢角度値のセットを遂行するように、同様にキャリブレーションパターン１６０／２６０を傾けることができない場合があり、それゆえ、その候補姿勢を達成できない場合がある。
【００７１】
したがって、場合によっては、制御回路１１１によって、グリッド層の３Ｄ領域のサブセットのみを、ロボットで達成可能な候補姿勢で埋めるために、候補姿勢のそれぞれの位置を決定しうる。実例によっては、制御回路１１１によって、ロボットで達成可能な候補姿勢を見つけて、層の全３Ｄ領域を埋めることができない、又はより具体的には、そのようなロボットで達成可能な候補姿勢を定義された時間内に見つけることができないという決定に応答して、３Ｄ領域のサブセットのみを埋めるように、これらの位置を決定しうる。実例によっては、制御回路１１１によって、層の全３Ｄ領域を埋めるため、事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、３Ｄ領域のサブセットのみを埋めるように、位置を決定してもよい。
【００７２】
一実施形態において、制御回路１１１によって、グリッドの層内に広がる空間分布を伴う、ロボットで達成可能な候補姿勢の識別を試みるために、候補姿勢のそれぞれの位置を決定しうる。場合によっては、制御回路１１１によって、候補姿勢が、ラテン方格の空間分布（ラテン超立方体の空間分布とも呼ばれる）を有するロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定しうる。ロボットで達成可能な候補姿勢に対する、ラテン方格の空間分布又はラテン超立方体の空間分布は、層内の複数行の各行が、正確に一つのロボットで達成可能な候補姿勢を含み、層内の複数列の各列が、正確に一つのロボットで達成可能な候補姿勢を含む、空間分布であってもよい。より具体的な例では、上で論じたグリッドが、３Ｄ領域のｎ個の行及び３Ｄ領域のｎ個の列を各々有する、一つ以上の層を有する場合、制御回路１１１によって、各行（層のｎ個の行の）が、一つのみのロボットで達成可能な候補姿勢を含み、各列（層のｎ個の列の）が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという初期条件に基づいて、一つ以上の層の各層に対して、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することによって、ロボットで達成可能な候補姿勢のセットを決定してもよい。場合によっては、ロボットで達成可能な候補姿勢のそれぞれのサブセットは更に、仮想球（例えば、３０２）の表面上にある表面領域（例えば、３０６）から選択される、ｎ個のそれぞれの表面点に基づく、姿勢角度値のｎ個のセットを有してもよい。
【００７３】
例えば、図１２Ａは、図１１Ａ及び１１Ｂに描写するグリッドの層２７４中に、三つのロボットで達成可能な候補姿勢に対するラテン方格の空間分布の例を描写する。図１２Ａでは、三つのロボットで達成可能な候補姿勢をＸで表す。より具体的には、三つのロボットで達成可能な候補姿勢は、行１、列１を占有する（又はより具体的には、行１、列１を占有する３Ｄ領域内の）位置にある第一の姿勢を含み、行３、列２を占有する位置にある第二の姿勢を含み、行２、列３を占有する第三の姿勢を含む。図１２Ａの例では、層２７４内における３Ｄ領域の複数行の各行は、正確に一つのロボットで達成可能な候補姿勢を含み、層２７４内における３Ｄ領域の複数列の各列は、正確に一つのロボットで達成可能な候補姿勢を含む。この空間分布によって、ロボットで達成可能な候補姿勢をカメラ視野２７２内に広げうる。
【００７４】
上記で言及したように、ステップ９０６で決定される姿勢（すなわち、画像取り込み姿勢）は、ロボットで達成可能な候補姿勢から選択されうる。したがって、一実施形態において、ロボットで達成可能な候補姿勢がラテン方格の空間分布を有する場合、複数の姿勢は、層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含む、空間分布を有しうる。例えば、図１２Ｂは、ステップ９０６で決定される複数の姿勢が、図１２Ａの第一のロボットで達成可能な候補姿勢（行１、列１を占有する３Ｄ領域の中の）、及び図１２Ａの第三のロボットで達成可能な候補姿勢（行３、列２を占有する３Ｄ領域の中の）を含む、例を描写する。この例では、グリッドの行１及び行３が、複数の姿勢のうちの正確に一つの姿勢を含む一方、行２は、複数の姿勢のうちの姿勢を全く含まない。加えて、グリッドの列１及び列２は、複数の姿勢のうちの正確に一つの姿勢を含む一方、列３は、複数の姿勢のうちの姿勢を全く含まない。
【００７５】
一実施形態において、制御回路１１１により、それぞれの位置を候補姿勢に対してどのように決定するかを制御することによって、ラテン方格の空間分布を達成するように試みうる。概して言えば、制御回路１１１によって、ある決定の候補姿勢に対する位置を決定しているとき、以前に決定されたロボットで達成可能な候補姿勢を既に包含する３Ｄ領域に、候補姿勢を置くことを避け、以前に決定されたロボットで達成可能な候補姿勢と行又は列を共有する３Ｄ領域に、候補姿勢を置くことを避けてもよい。より具体的には、制御回路１１１は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、ｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、ｉｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成されてもよい。
【００７６】
例えば、図１２Ｃは、制御回路１１１により、第一の候補姿勢に対する第一の位置及び第一の姿勢角度値のセットを決定することによって、第一の候補姿勢を決定しうる、例を描写する。この例では、制御回路１１１によって、第一の候補姿勢を決定しているときに、第一の層２７４の中で、いずれのロボットで達成可能な候補姿勢もまだ識別していない。したがって、第一の候補姿勢を、第一の層２７４の中のいかなる３Ｄ領域にも置くことができる。場合によっては、制御回路１１１によって、例えば、疑似ランダム関数を使用してランダムに、第一の位置を決定してもよい。図１２Ｃの例では、第一の位置は行２、列３にあってもよい。更にこの例では、第一の候補姿勢は、ロボットで達成可能な候補姿勢として決定されてもよい。
【００７７】
更に図１２Ｃでは、制御回路１１１により更に、第二の候補姿勢に対して、第二の位置及び第二の姿勢角度値のセットを決定することによって、第二の候補姿勢を決定しうる。この例では、行２、列３の３Ｄ領域中にロボットで達成可能な候補姿勢があるため、制御回路によって、第二の位置に対して、行２でも列３でもない３Ｄ領域を選択しうる。図１２Ｃの例では、制御回路１１１によって、行１、列２にある３Ｄ領域を選択してもよい。場合によっては、制御回路１１１によって、行１、列３を占有する３Ｄ領域内でランダムに位置を選択することによって、第二の位置を決定しうる。しかしながら、制御回路１１１によって更に、第二の候補姿勢がロボットで達成可能な候補姿勢ではないと決定してもよい。この例の制御回路１１１により、同じように、第三の候補姿勢に対して、第三の位置及び第三の姿勢角度値のセットを決定することによって、第三の候補姿勢を決定してもよい。例えば、制御回路１１１によって、グリッドの行３、列２を占有する３Ｄ領域を選択し、その３Ｄ領域内でランダムに位置を選択することによって、第三の位置を決定してもよい。この例の第三の候補姿勢は、ロボットで達成可能な候補姿勢として決定されてもよい。更にその後、制御回路１１１により、第四の位置及び第四の姿勢角度値のセットを決定することによって、第四の候補姿勢を決定してもよい。行２、列３の第一の３Ｄ領域にロボットで達成可能な候補姿勢があり、行３、列２の別の３Ｄ領域に別のロボットで達成可能な候補姿勢があるため、制御回路１１１は、第四の位置を行１、列１の３Ｄ領域内の位置に決定するように限定されうる。
【００７８】
一実施形態において、ロボットで達成可能な候補姿勢のセットが、一つ以上のロボットで達成可能な候補姿勢を既に含むとき、制御回路１１１によって、概して又は定義された時間内のいずれかで、ラテン方格の空間分布を満たすように、別のロボットで達成可能な候補姿勢を識別できない場合、セットのロボットで達成可能な候補姿勢のうちのいくつか又は全てを削除しうる。制御回路１１１によってその後、ラテン方格の空間分布を満たすことができる、ロボットで達成可能な候補姿勢を識別する試みに再挑戦してもよい。例えば、図１２Ｃの例にある制御回路１１１によって、第四の候補姿勢がロボットで達成可能な候補姿勢でないと決定し、更に行１、列１の３Ｄ領域にてロボットで達成可能な候補姿勢を識別できない場合、制御回路１１１によって、ロボットで達成可能な候補姿勢のセットから、行２、列３のロボットで達成可能な候補姿勢を除去し、及び／又は行３、列２のロボットで達成可能な候補姿勢を除去しうる。制御回路１１１によってその後、ラテン方格の空間分布を満たすように、ロボットで達成可能な候補姿勢を見つけるようとして、追加の候補姿勢を生成してもよい。場合によっては、制御回路１１１によって、概して又は定義された時間内のいずれかで、ラテン方格の空間分布を満たす、ロボットで達成可能な候補姿勢をまだ識別できない場合、以下でより詳細に論じるように、層状空間分布を満たすロボットで達成可能な候補姿勢を識別するように試みうる。
【００７９】
一実施形態において、制御回路１１１によって、候補姿勢が、層状空間分布によるロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定してもよい。場合によっては、制御回路１１１によって、ラテン方格の分布について記載する、上で論じた初期条件を満たすことができないという決定に応答して、層状空間分布を使用しうる。例えば、ｎ×ｎ×ｎグリッドを伴う上の例では、ｎ個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合、制御回路によって、グリッドのｎ個の層の各層に対して、層に対するｎ個のロボットで達成可能な候補姿勢が決定できるかを決定しうる。例えば、制御回路によって、定義された時間制限が切れる前に、又は他の制約より先に、初期条件を満たす、ｎ個のロボットで達成可能な候補姿勢を見つけるのに成功したかを決定しうる。場合によっては、上で論じたように、ロボットで達成可能な候補姿勢は、仮想球の表面領域から選択（例えば、一様確率分布に基づく選択）される表面点に基づいて決定される、それぞれの配向を有しうる。そのような場合には、制御回路によって、初期条件の空間分布と、仮想球の表面点を使用して決定される、それぞれの配向との両方を有する、ｎ個のロボットで達成可能な候補姿勢を見つけることに成功できるかを決定しているであろう。いくつかの状況では、制御回路によって、グリッドのある決定の層に対して、ｎ個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合に決定できないと決定しうる（例えば、定義された時間制限の期限が切れる前、又は何らかの他の定義された制約より先に、層に対する初期条件を満たす、ｎ個のロボットで達成可能な候補姿勢を見つけるのに成功していない）。場合によっては、制御回路１１１によって、ラテン方格の空間分布を満たす候補姿勢を見つけるよう事前に試みることなく、ラテン方格の空間分布を満たすロボットで達成可能な候補姿勢を見つけられるかを決定することなく、層状空間分布を使用しうる。ロボットで達成可能な候補姿勢の層状空間分布は、３Ｄ領域のグリッドのある決定の層に対して、（ｉ）層内における３Ｄ領域の複数行の各行が、正確に一つのロボットで達成可能な候補姿勢を含むか、又は（ｉｉ）層内において複数列の各列が、正確に一つのロボットで達成可能な候補姿勢を含む、空間分布であってもよい（「又は」は概して、本明細書では「及び／又は」を指すように使用する）。ｎ×ｎ×ｎグリッドを伴う上の例では、制御回路１１１により、各行（層の複数行の）が、一つのみのロボットで達成可能な候補姿勢を含むか、又は各列（層の複数列の）が一つのみのロボットで達成可能な候補姿勢を含むかのｎ個の位置を、ｎ個のロボットで達成可能な姿勢が有する、第二の条件に基づいて、グリッドの各層に対して、ｎ個のロボットで達成する候補姿勢のそれぞれのサブセットを決定することによって、層状空間分布を達成するように試みうる。場合によっては、ｎ個のロボットで達成可能な候補姿勢は、仮想球の表面上にある表面領域から選択される、それぞれの表面点に基づく、姿勢角度のｎ個のセットを有しうる。
【００８０】
例えば、図１３Ａは、図１１Ａ及び１１Ｂに描写するグリッドの層２７５中に、三つのロボットで達成可能な候補姿勢に対する層状空間分布の例を描写する。図１３Ａの例では、三つのロボットで達成可能な候補姿勢をＸで表す。より具体的には、三つのロボットで達成可能な候補姿勢は、行１、列３を占有する（又はより具体的には、行１、列１を占有する３Ｄ領域内の）位置にある第一の姿勢と、行２、列１を占有する位置にある第二の姿勢と、行３、列３を占有する第三の姿勢とを含む。各列が、正確に一つのロボットで達成可能な候補姿勢を包含しない（列３が、列の中で二つのそれぞれの３Ｄ領域を占有する、二つのロボットで達成可能な候補姿勢を含む）ものの、各行が、正確に一つのロボットで達成可能な候補姿勢を包含し含むため、この例はまだ層状空間分布を満たす。
【００８１】
一実施形態において、ロボットで達成可能な候補姿勢が、層状空間分布を有する場合、ステップ９０６で決定される複数の姿勢は、層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むかの空間分布を有しうる。例えば、図１３Ｂは、ステップ９０６で決定される複数の姿勢（画像取り込み姿勢）が、図１３Ａの第一のロボットで達成可能な候補姿勢（行１、列３を占有する３Ｄ領域の中の）、及び図１３Ａの第三のロボットで達成可能な候補姿勢（行３、列３を占有する３Ｄ領域の中の）を含む、例を描写する。この例では、グリッドの列３が、複数の姿勢のうちの二つの姿勢を含むが、グリッドの行１及び行３が、複数の姿勢のうちの正確に一つの姿勢を含む一方、行２は、複数の姿勢のうちの姿勢を全く含まない。
【００８２】
一実施形態において、制御回路１１１により、候補姿勢の位置を制御することによって、層状空間分布を達成するように試みうる。例えば、制御回路１１１は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、ｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有しないか、又はｉｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しないかの位置であると、決定するように構成されてもよい。
【００８３】
一実施形態において、制御回路１１１によって、候補姿勢が、いかなるランダム空間分布によるロボットで達成可能な候補姿勢になるような、候補姿勢の位置を決定してもよい。場合によっては、制御回路１１１によって、ラテン方格の空間分布を満たすのに十分なロボットで達成可能な候補姿勢を見つけることができず、層状空間分布を満たすのに十分なロボットで達成可能な候補姿勢を見つけることができないという決定に応答して、ロボットで達成可能な候補姿勢に対して、いかなるランダム空間分布を使用してもよい。場合によっては、制御回路１１１によって、ラテン方格の空間分布を満たすよう事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、及び／又は層状空間分布を満たすよう事前にロボットで達成可能な候補姿勢を見つけるように試みることなく、ロボットで達成可能な候補姿勢に対して、いかなるランダム空間分布を使用してもよい。ｎ×ｎ×ｎグリッドを伴う上の例では、制御回路１１１は、ｎ個のロボットで達成可能な候補姿勢が、初期条件を満たす必要がある場合に決定できない、及び／又はｎ個のロボットで達成可能な候補姿勢が、第二の条件を満たす必要がある場合に決定できないと決定するように構成されてもよい。例えば、制御回路によって、定義された時間制限内に、グリッドの層に対する初期条件を満たす、ｎ個のロボットで達成可能な候補姿勢を見つけることに成功していないと決定してもよく、及び／又は定義された時間制限内に、層に対する第二の条件を満たす、ｎ個のロボットで達成可能な候補姿勢を見つけることに成功していないと決定された。初期条件はラテン方格の空間分布と関連付けられ、第二の条件は層状空間分布と関連付けられる。言い換えると、制御回路１１１は、ラテン方格の空間分布及び層状空間分布を満たす、ｎ個のロボットで達成可能な候補姿勢を見つけることができない場合がある。そのような状況では、制御回路１１１によって、グリッドのその層に対して、ｎ個のロボットで達成可能な候補姿勢が、（ａ）層のｎ個のそれぞれの３Ｄ領域内に、ランダムに分布するｎ個の位置を有する、第三の条件に基づいて、その層に対してｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットの決定を行いうる。場合によっては、ｎ個のロボットで達成可能な候補姿勢は、仮想球の表面上にある表面領域から選択される、ｎ個のそれぞれの表面点に基づく、姿勢角度値のｎ個のセットを有しうる。
【００８４】
図１４Ａは、位置が、図１１Ａ及び１１Ｂに描写する、グリッドの層２７６の三つの異なる３Ｄ領域を占有するように、位置がランダムに決定された、三つのロボットで達成可能な候補姿勢の例を描写する。図１４Ｂは、図１４Ａのロボットで達成可能な候補姿勢の中から選択される、二つの画像取り込み姿勢の例を描写する。
【００８５】
ラテン方格の空間分布及び層状空間分布に関する上の議論には、複数の行及び複数の列を伴う層を有するグリッドを伴い、各行は、正確に一つのロボットで達成可能な候補姿勢を包含し、及び／又は各列は、正確に一つのロボットで達成可能な候補姿勢を包含する。一実施形態において、ラテン方格の空間分布及び層状空間分布は、より広くは、その他の行として等しい数のロボットで達成可能な候補姿勢を有する各行、及び／又はその他の列として等しい数のロボットで達成可能な候補姿勢を有する各列を伴いうる。例えば、制御回路１１１によって、いくつかの状況では、グリッドのある決定の層内の各行が、正確に二つのロボットで達成可能な候補姿勢を有し、層内の各列が、正確に二つのロボットで達成可能な候補姿勢を有するような、ロボットで達成可能な候補姿勢を決定しうる。
【００８６】
一実施形態において、制御回路１１１は、層ごとにある決定の空間分布を満たしているかの決定を行うように構成されてもよい。例えば、制御回路１１１によって、ある決定の候補姿勢の位置を決定し、位置は、グリッド（例えば、図１１Ａ及び１１Ｂのグリッド）のある決定の層内の、ある決定の３Ｄ領域内にあり、制御回路１１１によって、候補姿勢が、ロボットで達成可能な候補姿勢のうちの一つと同じ行又は同じ列の中にあるかを評価するように、候補姿勢の位置と既存のロボットで達成可能な候補姿勢の位置とを比較することによって、ラテン方格の空間分布又は層状空間分布が満たされているかを評価してもよい。しかしながら、制御回路１１１によって、より具体的には、候補姿勢が、グリッドの同じ層の中のロボットで達成可能な候補姿勢と同じ行又は同じ列の中になるかを決定するために、候補姿勢の位置と、その層の中にある、それらのロボットで達成可能な候補姿勢のみのそれぞれの位置とを比較してもよい。層ごとの決定に関する例は、第一の層２７４、第二の層２７５、及び第三の層２７６の各層に対して、ラテン方格の空間分布を満たす、ロボットで達成可能な候補姿勢を有するグリッドを描写する図１５Ａに示す。第一のロボットで達成可能な候補姿勢の対が、同じ行及び同じ列を有する、それぞれの３Ｄ領域の中にあるとしても、制御回路１１１によって、図１５Ａに描写する空間分布を決定しうる。より具体的には、ロボットで達成可能な候補姿勢のうちの一つは、層２７４中の行１、列１である３Ｄ領域の中にあり、ロボットで達成可能な候補姿勢の別の一つは、層２７６中だが同様に行１、列１にある別の３Ｄ領域の中にある。しかしながら、この例の制御回路１１１によって、層ごとに、ある決定の空間分布を満たすかの評価を行うため、図１５Ａのロボットで達成可能な候補姿勢は、層２７４、２７５、２７６の各々に対してラテン方格の空間分布を満たすとまだみなされうる。
【００８７】
一実施形態において、制御回路１１１は、グリッドの異なる層が、異なる空間分布を有することが可能になるように構成されてもよい。例えば、図１５Ｂは、制御回路１１１によって、グリッドの第一の層２７４に対してラテン方格の空間分布を有する、三つのロボットで達成可能な候補姿勢を識別し、グリッドの第二の層２７５に対して層状空間分布を満たす、別の三つのロボットで達成可能な候補姿勢を識別し、グリッドの第三の層２７６に対してランダム空間分布を満たす、更に別の三つのロボットで達成可能な候補姿勢を識別した例を描写する。場合によっては、制御回路１１１によって、第二の層２７５の中でラテン方格の空間分布を満たすことができる、三つのロボットで達成可能な候補姿勢を見つけることに成功できなかった後に、第二の層２７５の中で、ロボットで達成可能な候補姿勢に対する層状空間分布を満たすように、位置を決定していてもよい。
【００８８】
一実施形態において、制御回路１１１によって、ラテン方格の空間分布を満たすために、より厳しい条件を適用しうる。より厳しい条件には、ｍ個の層を有するグリッドに分けられる、空間を伴ってもよく、各層は、ｎ個の行及びｎ個の列を有する。層の数は、行若しくは列の数と同じであってもよく、又は行若しくは列の数と異なってもよい。ｍ個の層の各層に対して、各行は、一つのみのロボットで達成可能な候補姿勢を有してもよく、各列は、一つのみのロボットで達成可能な候補姿勢を有してもよい。このより厳しい条件下において、グリッドの中の各積層は、ロボットで達成可能な候補姿勢のみを有してもよい。積層は、グリッドのそれぞれの異なる層上にあり、それぞれの層内で同じ行及び同じ列を占有していた、グリッドのｍ個の３Ｄ領域を指してもよい。図１５Ｃは、上で論じた、より厳しい条件を満たす、九つのロボットで達成可能な候補姿勢の例を描写する。
【００８９】
上記で言及したように、ステップ９０６で決定される複数の姿勢は、カメラ視野（例えば、２７２）内の空間を分ける３Ｄ領域のグリッド内に分布する、ロボットで達成可能な候補姿勢から選択されうる。選択されるロボットで達成可能な候補姿勢の総数は、上で論じた目標数に等しくてもよい。複数の姿勢は、複数のキャリブレーション画像を生成するように使用されてもよく、キャリブレーション画像の総数も、上で論じた目標数に等しい。例として、図１５Ａ〜１５Ｃは、制御回路１１１によって、カメラ視野内に分布する九つのロボットで達成可能な候補姿勢を識別した状況を示す。この例では、目標数が、例えば、８に等しい場合、ステップ９０６は、九つのロボットで達成可能な候補姿勢の中から八つの姿勢を選択することを伴いうる。一実施形態において、選択は、疑似ランダム関数の使用を通じてなど、ランダムに行われてもよい。
【００９０】
上の議論が示すように、ステップ９０６は、姿勢角度値の複数のそれぞれのセットを決定することによる、複数の姿勢の決定を伴ってもよく、姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択される、それぞれの表面点に基づいて決定される。場合によっては、ステップ９０６は更に、ラテン方格の空間分布又は層状空間分布など、望ましい空間分布を満たそうと試みるように、複数の姿勢の位置の決定を伴いうる。一実施形態において、ステップ９０６は、姿勢角度値の複数のそれぞれのセットの決定を省略するために修正されてもよく、又は姿勢角度値の複数のそれぞれのセットの決定を、仮想球上の表面領域内からの表面点の選択を伴わない、何らかの他の様式で行うように修正されてもよい。例えば、そのように修正されたステップ９０６では、姿勢角度値のそれぞれのセットの中の姿勢角度値の各々を、上で論じたように、一様確率分布関数に基づいてランダムに決定してもよい。この実施形態では、ステップ９０２及び９０４は、省略されてもよく、又はまだ含まれてもよく、ステップ９０６はまだ、複数の姿勢の決定を伴ってもよい。複数の姿勢は、複数の姿勢に対するそれぞれの位置の決定によって決定されてもよく、それぞれの位置は、ラテン方格の空間分布又は層状空間分布など、望ましい空間分布を満たすように決定されてもよい。例えば、そのように修正されたステップ９０６は、上で論じたように、３Ｄ領域の複数行及び３Ｄ領域の複数列の一つ以上の層に、カメラ視野内の空間を分けるグリッドの決定と、候補姿勢が、ラテン方格の空間分布又は層状空間分布を満たす、ロボットで達成可能な候補姿勢になるであろうような、候補姿勢のそれぞれの位置の決定とを伴いうる。そのように修正されたステップ９０６によって更に、グリッドの各層に対して、行の各々が、複数の姿勢のうちの一つ以下の姿勢を含み、各列が、複数の姿勢のうちの一つ以下の姿勢を含む、複数の姿勢がもたらされうる。
【００９１】
図９に戻ると、方法９００は更に、制御回路１１１によって、キャリブレーションパターンの配置を制御するために、複数の動作コマンド（ロボット動作コマンドとも呼ばれる）を出力する、ステップ９０８を含みうる。例えば、ロボット動作コマンドは、キャリブレーションパターン１６０／２６０をある決定の姿勢へ置くように、ロボット１５０／２５０を制御するための複数のモーターコマンドを伴ってもよく、複数のモーターコマンドは、キャリブレーションパターン１６０／２６０を姿勢のある決定の位置へ動かすこと、及び／又はキャリブレーションパターン１６０／２６０を姿勢のある決定のパターン配向へ傾けることを伴いうる。実例によっては、ロボット動作コマンドは、ステップ９０６で決定された姿勢に対して決定される、姿勢角度値のそれぞれのセットに基づいてもよい。実例によっては、ロボット動作コマンドは、望ましい姿勢に基づいてロボット動作コマンドを決定する、逆運動学関数に基づいて決定されうる。
【００９２】
一実施形態において、方法９００は、制御回路によって更に、複数のキャリブレーション画像を受信するステップ９１０を含んでもよく、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し（例えば、取り込み）、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成される。例えば、八つの姿勢がステップ９０６で決定される場合、ステップ９１０で制御回路１１１によって、八つのキャリブレーション画像を受信しうる。場合によっては、カメラ１７０／２７０は、八つの姿勢を生成するために、キャリブレーションパターン１６０／２６０が、八つの姿勢の各々にある間に、キャリブレーションパターン１６０／２６０の写真を撮っていてもよく、又は他の方法で撮像していてもよい。いくつかの実施態様では、ステップ９１０で制御回路１１１によって、カメラ１７０／２７０にキャリブレーションパターン１６０／２６０の写真を撮らせる、カメラコマンドを生成させてもよく、カメラコマンドを（例えば、通信インターフェース１１３を介して）カメラ１７０／２７０へ出力してもよい。一実施形態において、制御回路１１１によって、カメラ１７０／２７０から、通信インターフェース１１３を介してなど、複数のキャリブレーション画像を受信してもよい。一実施形態において、制御回路１１１によって、非一時的コンピューター可読媒体１１５など、キャリブレーション画像が記憶される記憶デバイスから、又は何らかの他の非一時的コンピューター可読媒体から、複数のキャリブレーション画像を受信してもよい。
【００９３】
一実施形態において、方法９００は更に、制御回路１１１によって、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定する、ステップ９１２を含んでもよい。上記で言及したように、カメラキャリブレーションパラメーターは、カメラ１７０／２７０の射影行列若しくはレンズひずみパラメーターなど、内部カメラキャリブレーションパラメーターであってもよく、又はロボット１５０／２５０に対するカメラ１７０／２７０の位置及び配向など、カメラ１７０／２７０とその環境との間の空間関係を記述するパラメーターであってもよい。一実施形態において、制御回路１１１によって、パターン座標系におけるキャリブレーションパターン１６０／２６０上のパターン要素（例えば、ドット）の定義された位置と、パターン要素がキャリブレーション画像の中に現れる位置との間の関係を記述する方程式に基づいて、カメラキャリブレーションパラメーターの推定値を決定しうる。カメラキャリブレーションパラメーターの推定値決定については、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＥＲＦＯＲＭＩＮＧ  ＡＵＴＯＭＡＴＩＣ  ＣＡＭＥＲＡ  ＣＡＬＩＢＲＡＴＩＯＮ  ＦＯＲ  ＲＯＢＯＴ  ＣＯＮＴＲＯＬ」と題される米国特許出願番号第１６／２９５，９４０号（参照によりその内容全体が本明細書に組み込まれる）により詳細に記載されている。
【００９４】
一実施形態において、制御回路は、カメラキャリブレーションを行った後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される、後続のロボット動作コマンドを出力するように構成されうる。例えば、後続の画像は、ロボット１５０／２５０によってパレットから降ろされるべき、倉庫の中の包装品又は包装品の積層の画像でありうる。実例によっては、制御回路１１１は、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＥＲＦＯＲＭＩＮＧ  ＡＵＴＯＭＡＴＩＣ  ＣＡＭＥＲＡ  ＣＡＬＩＢＲＡＴＩＯＮ  ＦＯＲ  ＲＯＢＯＴ  ＣＯＮＴＲＯＬ」と題される米国特許出願番号第１６／２９５，９４０号（参照によりその内容全体が本明細書に組み込まれる）にもより詳細に記載するように、包装品の画像と、ステップ９１２で決定されるカメラキャリブレーションパラメーターの推定値とに基づいて、ロボット１５０／２５０と包装品との間の空間関係、及び／又はカメラ１７０／２７０と包装品との間の空間関係を決定するように構成されてもよい。その後、制御回路１１１は、包装品と、ロボット１５０／２５０又はカメラ１７０／２７０との間の決定された空間関係に基づいてロボット動作コマンドを生成し、ロボット動作コマンドをロボット１５０／２５０へ出力するように構成されうる。
【００９５】
様々な実施形態の簡潔な説明
【００９６】
実施形態１は、通信インターフェース及び制御回路を備えるコンピューティングシステムに関する。通信インターフェースは、ロボット、及び、カメラ視野を有するカメラと通信するように構成され、ロボットは、ロボット上に配置されたキャリブレーションパターンを有する。制御回路は、コンピューティングシステムがロボット及びカメラと通信するとき、カメラキャリブレーションを実行するように構成される。かかる実行は、カメラキャリブレーションを実行するためにパターン配向の範囲を決定することであって、パターン配向の範囲は、キャリブレーションパターンに対する配向の範囲であることと、仮想球の表面上に表面領域を決定することであって、仮想球の表面は、キャリブレーションパターンに対する可能なパターン配向を表し、表面領域は、カメラキャリブレーションを行うためのパターン配向の範囲を表すことと、カメラキャリブレーションが実行されているときにキャリブレーションパターンが採用する複数の姿勢を決定することであって、複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定され、複数のそれぞれのセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択されるそれぞれの表面点に基づくことと、キャリブレーションパターンの配置を制御するための複数のロボット動作コマンドを出力することであって、複数のロボット動作コマンドは、決定される複数の姿勢に基づいて生成されることと、複数のキャリブレーション画像を受信することであって、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し、かつ、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成されることと、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされる。制御回路は、カメラキャリブレーションが実行された後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される後続のロボット動作コマンドを出力するようにさらに構成される。
【００９７】
実施形態２は、実施形態１のコンピューティングシステムを含む。この実施形態では、制御回路は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、一様確率分布に従って、それぞれの表面点の各々を表面領域内からランダムに選択するように構成される。
【００９８】
実施形態３は、実施形態２のコンピューティングシステムを含む。この実施形態では、制御回路は、姿勢角度値のそれぞれのセットが基づくそれぞれの表面点に対して、それぞれの表面点の各々を、一様な表面点のセットのみの中からランダムに選択するように構成され、一様な表面点のセットは、仮想球の表面上の表面領域内に一様に分布する表面点のセットである。
【００９９】
実施形態４は、実施形態１〜３のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、仮想球の表面上にある表面領域は、一様な幅の円形帯を形成する。
【０１００】
実施形態５は、実施形態１〜４のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、姿勢角度値の複数のセットの姿勢角度値の各セットは、それぞれの回転軸を回るキャリブレーションパターンのそれぞれの回転量を表す角度値のセットであり、それぞれの軸は、互いに直交し、それぞれの軸の各々は、カメラ光軸と平行であるか、又は直交する。
【０１０１】
実施形態６は、実施形態５のコンピューティングシステムを含む。この実施形態では、仮想球の表面上にある各表面点は、キャリブレーションパターンに対する法線ベクトルに表面点を指し示させるであろう、キャリブレーションパターンのそれぞれのパターン配向を表す。更に制御回路は、逆正接関数を、それぞれの表面点のそれぞれの座標に適用することによって、それぞれの表面点に基づいて、複数のセットの姿勢角度値の各セットを決定するように構成される。
【０１０２】
実施形態７は、実施形態１〜６のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、（ｉ）層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、かつ、（ｉｉ）層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
【０１０３】
実施形態８は、実施形態１〜６のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、（ｉ）層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は（ｉｉ）層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むことと、によって、複数の姿勢を決定するように構成される。
【０１０４】
実施形態９は、実施形態１〜６のうちのいずれか一つのコンピューティングシステムを含む。この実施形態では、制御回路は、（ａ）候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定し、仮想球の表面上にある表面領域内からそれぞれの表面点を選択し、選択される表面点に基づいて、候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定されることと、（ｂ）ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定することと、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することとによってなされることと、および、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することと、によって複数の姿勢を決定するように構成される。
【０１０５】
実施形態１０は、実施形態９のコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定するように構成される。更に制御回路は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、かつ、ｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、また、ｉｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成される。
【０１０６】
実施形態１１は、実施形態９のコンピューティングシステムを含む。この実施形態では、制御回路は、複数の姿勢に対していくつの姿勢が望ましいかを示す目標数を決定し、姿勢の目標数に基づいて、グリッドサイズｎを決定し、カメラ視野内の空間を、３Ｄ領域のｎ個の行及び３Ｄ領域のｎ個の列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定し、一つ以上の層の各層に対して、ロボットで達成可能な候補姿勢のセットの一部として、ｉ）層のｎ個の行の各行が、一つのみのロボットで達成可能な候補姿勢を含み、ｉｉ）層のｎ個の列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという初期条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定するように構成される。
【０１０７】
実施形態１２は、実施形態１１のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、（ａ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、層に対するｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかを決定することであって、初期条件は、第一の条件であることと、（ｂ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、ｉ）層の複数行の各行が、一つのみのロボットで達成可能な候補姿勢を含むか、又はｉｉ）層の複数列の各列が、一つのみのロボットで達成可能な候補姿勢を含むかの、第二の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという、第二の条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
【０１０８】
実施形態１３は、実施形態１２のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、（ａ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、層に対するｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できるかどうかを決定することと、（ｂ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、ｎ個のロボットで達成可能な候補姿勢が、層のｎ個のそれぞれの３Ｄ領域内にランダムに分布するｎ個の位置を有するという、第三の条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を更に行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
【０１０９】
実施形態１４は、実施形態１２又は１３のコンピューティングシステムを含む。この実施形態では、グリッドはｎ個の層を有し、グリッドサイズｎは、複数の姿勢に対する姿勢の目標数の平方根を決定することと、グリッドサイズｎを、姿勢の目標数の平方根以上である最も小さい整数として決定することとによって決定される。
【０１１０】
実施形態１５は、通信インターフェース及び制御回路を備えるコンピューティングシステムに関する。通信インターフェースは、ロボットと、カメラ視野を有するカメラと通信するように構成され、ロボットは、ロボット上に配置されたキャリブレーションパターンを有する。制御回路は、コンピューティングシステムがロボット及びカメラと通信するとき、カメラキャリブレーションを実行するように構成される。かかる実行は、カメラキャリブレーションが実行されているときにキャリブレーションパターンが採用する複数の姿勢を決定することであって、複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、複数のパターン配向とのそれぞれの組み合わせによって画定されることと、キャリブレーションパターンの配置を制御するための複数のロボット動作コマンドを出力することであって、複数のロボット動作コマンドは、決定される複数の姿勢に基づいて生成されることと、複数のキャリブレーション画像を受信することであって、複数のキャリブレーション画像の各キャリブレーション画像は、キャリブレーションパターンを表し、かつ、キャリブレーションパターンが複数の姿勢のそれぞれの姿勢を有する間に生成されることと、複数のキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を決定することと、によってなされる。制御回路は、カメラキャリブレーションが実行された後、カメラから通信インターフェースを介して後続の画像を受信し、後続の画像と、カメラキャリブレーションパラメーターの推定値とに基づいて生成される後続のロボット動作コマンドを出力するようにさらに構成される。
【０１１１】
実施形態１６は、実施形態１５のコンピューティングシステムを含む。この実施形態では、制御回路は、（ａ）カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、（ｂ）複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、（ｉ）層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含み、かつ、（ｉｉ）層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
【０１１２】
実施形態１７は、実施形態１５のコンピューティングシステムを含む。この実施形態では、コンピューティングシステムは、（ａ）カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定することと、（ｂ）複数の姿勢がグリッド内に空間分布を有するように、複数の姿勢の複数の位置を決定することであって、グリッドでは、一つ以上の層の各層に対して、（ｉ）層内の複数行の各行が、複数の姿勢のうちの一つ以下の姿勢を含むか、又は（ｉｉ）層内の複数列の各列が、複数の姿勢のうちの一つ以下の姿勢を含むこととによって、複数の姿勢を決定するように構成される。
【０１１３】
実施形態１８は、実施形態１５のコンピューティングシステムを含む。この実施形態では、コンピューティングシステムは、（ａ）候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定することによって、決定されることと、（ｂ）ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定することとと、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することとによってなされる、ことと、（ｃ）ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することと、によって複数の姿勢を決定するように構成される。
【０１１４】
実施形態１９は、実施形態１８のコンピューティングシステムを含む。この実施形態では、制御回路は、カメラ視野内の空間を、３Ｄ領域の複数行及び３Ｄ領域の複数列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定するように構成され、制御回路は、候補姿勢のセットの各候補姿勢に対するそれぞれの位置を、グリッドの一つ以上の層のうちの層の中にあり、かつ、ｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも行を共有せず、また、ｉｉ）その層の中で、ロボットで達成可能な候補姿勢のセットのいずれのロボットで達成可能な候補姿勢とも列を共有しない位置であると、決定するように構成される。
【０１１５】
実施形態２０は、実施形態１８のコンピューティングシステムを含む。この実施形態では、制御回路は、複数の姿勢に対していくつの姿勢が望ましいかを示す目標数を決定し、姿勢の目標数に基づいて、グリッドサイズｎを決定し、カメラ視野内の空間を、３Ｄ領域のｎ個の行及び３Ｄ領域のｎ個の列を各々有する一つ以上の層に分ける、３Ｄ領域のグリッドを決定し、一つ以上の層の各層に対して、ロボットで達成可能な候補姿勢のセットの一部として、ｉ）層のｎ個の行の各行が、一つのみのロボットで達成可能な候補姿勢を含み、ｉｉ）層のｎ個の列の各列が、一つのみのロボットで達成可能な候補姿勢を含む、第一の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという初期条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定するように構成される。
【０１１６】
実施形態２１は、実施形態２０のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、（ａ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、層に対するｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかどうかを決定することであって、初期条件は、第一の条件であることと、（ｂ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、初期条件を満たす必要がある場合に、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、ｉ）層の複数行の各行が、一つのみのロボットで達成可能な候補姿勢を含むか、又はｉｉ）層の複数列の各列が、一つのみのロボットで達成可能な候補姿勢を含むかの第二の空間分布で、ｎ個のロボットで達成可能な候補姿勢がｎ個の位置を有するという、第二の条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
【０１１７】
実施形態２２は、実施形態２１のコンピューティングシステムを含む。この実施形態では、制御回路は更に、グリッドの一つ以上の層の各層に対して、（ａ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、層に対するｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、決定できるかどうかを決定することと、（ｂ）ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが、第二の条件を満たす必要がある場合に、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットが決定できないという決定に応答して、ｎ個のロボットで達成可能な候補姿勢が、層のｎ個のそれぞれの３Ｄ領域内にランダムに分布するｎ個の位置を有するという、第三の条件に基づいて、ｎ個のロボットで達成可能な候補姿勢のそれぞれのサブセットを決定することと、を更に行うことによって、ロボットで達成可能な候補姿勢のセットを決定するように構成される。
【０１１８】
実施形態２３は、実施形態２０〜２２のうちのいずれか一つのコンピューティングシステムを含み、グリッドはｎ個の層を有し、グリッドサイズｎは、（ａ）複数の姿勢に対する姿勢の目標数の平方根を決定することと、（ｂ）グリッドサイズｎを、姿勢の目標数の平方根以上である最も小さい整数として決定することとによって決定される。
【０１１９】
実施形態２４は、実施形態１５〜２３のうちのいずれか一つのコンピューティングシステムを含み、複数のそれぞれのパターン配向は、姿勢角度値の複数のそれぞれのセットによって画定され、制御回路は、カメラキャリブレーションを行うためにパターン配向の範囲を決定することであって、パターン配向の範囲は、キャリブレーションパターンに対する配向の範囲であることと、仮想球の表面上に表面領域を決定することであって、仮想球の表面は、キャリブレーションパターンに対する可能なパターン配向を表し、表面領域は、カメラキャリブレーションを行うためのパターン配向の範囲を表すことと、仮想球の表面上にある表面領域内から選択される（例えば、一様確率分布に基づいて選択される）、それぞれの表面点に基づいて、複数のそれぞれのセットの姿勢角度値の各セットを決定することとを行うように構成される。例えば、実施形態２４に対する上記技法は、実施形態１８で使用されてもよい。そのような実例では、制御回路は、（ａ）候補姿勢のセットを決定することであって、候補姿勢のセットの各候補姿勢は、候補姿勢に対してカメラ視野内のそれぞれの位置を決定し、仮想球の表面上にある表面領域内からそれぞれの表面点を選択し、選択される表面点に基づいて、候補姿勢に対して姿勢角度値のそれぞれのセットを決定することによって、決定されることと、（ｂ）ロボットで達成可能な候補姿勢のセットを決定することであって、かかる決定が、候補姿勢のセットの各候補姿勢に対して、候補姿勢がロボットで達成可能かを決定し、候補姿勢がロボットで達成可能であるという決定に応答して、候補姿勢をロボットで達成可能な候補姿勢のセットへ追加することによってなされることと、ロボットで達成可能な候補姿勢のセットのみの中から、複数の姿勢を選択することとによって、複数の姿勢を決定するように構成される。
【０１２０】
様々な実施形態について上に記載してきたが、それらは本発明の図解及び例としてのみ提示したもので、限定によるものではないことは理解されるべきである。当業者にとって、発明の精神及び範囲から逸脱することなく、実施形態において形態及び詳細を様々に変更できることは明らかであろう。したがって、本発明の範囲は上述の例示的実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。また、本明細書で論じた各実施形態、及び本明細書で言及した各参考文献の各特徴は、いかなる他の実施形態の特徴と組み合わせて使用できることも理解されるであろう。本明細書で論じた全ての特許及び刊行物は、参照によりその全体が本明細書に組み込まれる。
【要約】
【課題】カメラキャリブレーションの姿勢を決定するための方法及びシステムを提示する。
【解決手段】システムによって、カメラキャリブレーションを行うためのパターン配向の範囲を決定し、キャリブレーションパターンに対する可能なパターン配向を表す、仮想球の表面上に表面領域を決定する。システムによって、キャリブレーションパターンが採用する、複数の姿勢を決定する。複数の姿勢は、カメラ視野内の複数のそれぞれの位置と、姿勢角度値の複数のそれぞれのセットとのそれぞれの組み合わせによって画定されうる。複数のそれぞれのセットの姿勢角度値の各セットは、仮想球の表面上にある表面領域内から選択される、それぞれの表面点に基づいてもよい。システムによって、決定される複数の姿勢に基づいて、複数のロボット動作コマンドを出力する。
【選択図】図９【図１】
0006678984.tif 000083
【図２】
0006678984.tif 000084
【図３Ａ】
0006678984.tif 000085
【図３Ｂ】
0006678984.tif 000086
【図４Ａ】
0006678984.tif 000087
【図４Ｂ】
0006678984.tif 000088
【図４Ｃ】
0006678984.tif 000089
【図５Ａ】
0006678984.tif 000090
【図５Ｂ】
0006678984.tif 000091
【図５Ｃ】
0006678984.tif 000092
【図６Ａ】
0006678984.tif 000093
【図６Ｂ】
0006678984.tif 000094
【図６Ｃ】
0006678984.tif 000095
【図７Ａ】
0006678984.tif 000096
【図７Ｂ】
0006678984.tif 000097
【図７Ｃ】
0006678984.tif 000098
【図８Ａ】
0006678984.tif 000099
【図８Ｂ】
0006678984.tif 000100
【図８Ｃ】
0006678984.tif 000101
【図９】
0006678984.tif 000102
【図１０Ａ】
0006678984.tif 000103
【図１０Ｂ】
0006678984.tif 000104
【図１１Ａ】
0006678984.tif 000105
【図１１Ｂ】
0006678984.tif 000106
【図１２Ａ】
0006678984.tif 000107
【図１２Ｂ】
0006678984.tif 000108
【図１２Ｃ】
0006678984.tif 000109
【図１３Ａ】
0006678984.tif 000110
【図１３Ｂ】
0006678984.tif 000111
【図１４Ａ】
0006678984.tif 000112
【図１４Ｂ】
0006678984.tif 000113
【図１５Ａ】
0006678984.tif 000114
【図１５Ｂ】
0006678984.tif 000115
【図１５Ｃ】
0006678984.tif 000116