(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムであって、
（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるアクチュエーターと通信するように構成される通信インターフェースであって、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられる、通信インターフェースと、
前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに、カメラキャリブレーションを実行するように構成される制御回路と、
を備え、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、前記第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、前記カメラキャリブレーションは、
前記通信インターフェースを介して前記第１のカメラから第１の組のキャリブレーション画像を受信することであって、該第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記多面体の前記第１の組の面を取り込み、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンを取り込むことと、
前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記第１の組の面によって形成されるそれぞれの仮想面を記述する情報を特定することと、
前記第１の組のキャリブレーション画像内の前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体を表す３Ｄモデルを特定することであって、前記３Ｄモデルは、少なくとも、前記それぞれの仮想面を記述する前記情報によって表されることと、
前記多面体の前記３Ｄモデルに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、
前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
によって実行され、
前記制御回路は、前記カメラキャリブレーションが実行された後に、前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成するように更に構成され、前記３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信される前記物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信される前記物体の画像に基づいて生成される、コンピューティングシステム。
【請求項２】
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記第２の組の１つ以上のキャリブレーション画像は、第１のキャリブレーション画像及び第２のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記制御回路は、前記カメラキャリブレーションを実行するときに、
前記第１の光源を点灯させ、前記第２の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記第２の光源を点灯させ、前記第１の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに、前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、別の２Ｄキャリブレーションパターンを取り込み、該別の２Ｄキャリブレーションパターンは前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部であることと、
を行うように構成され、
前記制御回路は、前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像に基づいて、前記第２の組の座標を特定するように更に構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
前記制御回路は、前記第１のカメラ及び前記第１の光源が前記プラットフォームの前記第１の表面の上方に配置され、前記第２のカメラ及び前記第２の光源が前記プラットフォームの前記第２の表面の下方に配置され、前記３Ｄキャリブレーションパターンの前記別の面が前記プラットフォームの前記第１の表面と接触しているときに、前記カメラキャリブレーションを実行するように構成される、請求項２に記載のコンピューティングシステム。
【請求項４】
前記制御回路は、前記カメラキャリブレーションを実行するときに、
前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像に基づいて、前記第２のキャリブレーション画像内に前記別の２Ｄキャリブレーションパターンのそれぞれの角が現れる１組のピクセル領域を特定し、
同じく前記１組のピクセル領域内で、前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を探索し、前記第１のキャリブレーション画像内に前記別の面の前記１組のそれぞれの角が現れるピクセル座標を識別するように構成され、
前記１組のそれぞれの角に関する前記第２の組の座標は、前記第１のキャリブレーション画像内において前記１組のそれぞれの角が現れる前記ピクセル座標に基づいて特定される、請求項２に記載のコンピューティングシステム。
【請求項５】
コンピューティングシステムであって、
通信インターフェース及び制御回路を備え、
前記通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられ、
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記制御回路は、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに、カメラキャリブレーションを実行するように構成され、
前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、前記第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、
前記カメラキャリブレーションは、
前記通信インターフェースを介して前記第１のカメラから第１の組のキャリブレーション画像を受信することであって、該第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記多面体の前記第１の組の面を取り込み、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンを取り込むことと、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第１の光源を点灯させ、前記第２の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに、前記多面体の前記別の面を取り込む少なくとも一対のキャリブレーション画像の第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記第２の光源を点灯させ、前記第１の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに、前記少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、別の２Ｄキャリブレーションパターンを取り込み、該別の２Ｄキャリブレーションパターンは前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部であることと、
前記通信インターフェースを介して前記第２のカメラから、前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像を含む前記少なくとも一対のキャリブレーション画像を受信することと、
前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像内に取り込まれた前記別の面の前記シルエットに基づいて、前記多面体の前記別の面の前記１組のそれぞれの角の第２の組の座標の第１の推定座標を特定することであって、前記第２の組の座標は、前記多面体の前記別の面の前記１組のそれぞれの角を表すと共に、前記第２のカメラの位置及び向きを基準としていることと、
前記第２のキャリブレーション画像内に取り込まれた前記別の２Ｄキャリブレーションパターンに基づいて、前記別の面によって形成される仮想面を記述する情報を特定することと、
前記仮想面と前記第２の組の座標の前記第１の推定座標との間のそれぞれの偏差量を特定することと、
前記それぞれの偏差量に基づいて、前記第２の組の座標の第２の推定座標を特定するすることと、
前記第１の組の座標と前記第２の組の座標の前記第２の推定座標とに基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
によって実行され、
前記制御回路は、前記カメラキャリブレーションが実行された後に、前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成するように更に構成され、前記３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信される前記物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信される前記物体の画像に基づいて生成される、コンピューティングシステム。
【請求項６】
命令を有する非一時的コンピューター可読媒体であって、コンピューティングシステムの制御回路によって実行されるときに、該命令によって、該制御回路が
前記コンピューティングシステムの通信インターフェースを介して、第１の組のキャリブレーション画像を受信するように構成され、
前記通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられ、
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、
前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面と、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンとを取り込み、
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第１の光源を点灯させ、前記第２の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに、前記多面体の前記別の面を取り込む少なくとも一対のキャリブレーション画像の第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記第２の光源を点灯させ、前記第１の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに、前記少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、別の２Ｄキャリブレーションパターンを取り込み、該別の２Ｄキャリブレーションパターンは前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部であることと、
前記通信インターフェースを介して前記第２のカメラから、前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像を含む前記少なくとも一対のキャリブレーション画像を受信することと、
前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像内に取り込まれた前記別の面の前記シルエットに基づいて、前記多面体の前記別の面の前記１組のそれぞれの角の第２の組の座標の第１の推定座標を特定することであって、前記第２の組の座標は、前記多面体の前記別の面の前記１組のそれぞれの角を表すと共に、前記第２のカメラの位置及び向きを基準としていることと、
前記第２のキャリブレーション画像内に取り込まれた前記別の２Ｄキャリブレーションパターンに基づいて、前記別の面によって形成される仮想面を記述する情報を特定することと、
前記仮想面と前記第２の組の座標の前記第１の推定座標との間のそれぞれの偏差量を特定することと、
前記それぞれの偏差量に基づいて、前記第２の組の座標の第２の推定座標を特定するすることと、
前記第１の組の座標と前記第２の組の座標の前記第２の推定座標とに基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることと、
を行う、非一時的コンピューター可読媒体。
【請求項７】
物体走査の方法であって、
コンピューティングシステムによって、該コンピューティングシステムの通信インターフェースを介して第１の組のキャリブレーション画像を受信することを含み、
前記通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられ、
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、
前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面と、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンとを取り込み、
該方法は、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第１の光源を点灯させ、前記第２の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに、前記多面体の前記別の面を取り込む少なくとも一対のキャリブレーション画像の第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記第２の光源を点灯させ、前記第１の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに、前記少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、別の２Ｄキャリブレーションパターンを取り込み、該別の２Ｄキャリブレーションパターンは前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部であることと、
前記通信インターフェースを介して前記第２のカメラから、前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像を含む前記少なくとも一対のキャリブレーション画像を受信することと、
前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像内に取り込まれた前記別の面の前記シルエットに基づいて、前記多面体の前記別の面の前記１組のそれぞれの角の第２の組の座標の第１の推定座標を特定することであって、前記第２の組の座標は、前記多面体の前記別の面の前記１組のそれぞれの角を表すと共に、前記第２のカメラの位置及び向きを基準としていることと、
前記第２のキャリブレーション画像内に取り込まれた前記別の２Ｄキャリブレーションパターンに基づいて、前記別の面によって形成される仮想面を記述する情報を特定することと、
前記仮想面と前記第２の組の座標の前記第１の推定座標との間のそれぞれの偏差量を特定することと、
前記それぞれの偏差量に基づいて、前記第２の組の座標の第２の推定座標を特定するすることと、
前記第１の組の座標と前記第２の組の座標の前記第２の推定座標とに基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることと、
を更に含む、方法。
【請求項８】
前記第１の組のキャリブレーション画像の各キャリブレーション画像は前記第１の組の２Ｄキャリブレーションパターンのうちの少なくとも２つの２Ｄキャリブレーションパターンを取り込み、前記制御回路は、前記第１の組のキャリブレーション画像のキャリブレーション画像ごとに、
前記キャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第１の２Ｄキャリブレーションパターンを取り込む第１の画像部分を抽出し、
前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶し、
前記キャリブレーション画像から前記第１の画像部分を除去することによって、更新されたキャリブレーション画像を生成し、
前記更新されたキャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第２の２Ｄキャリブレーションパターンを取り込む別の画像部分を抽出し、
前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶するように構成され、
前記制御回路は、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第１のカメラのキャリブレーションパラメーターの推定値を特定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項９】
前記制御回路は、前記カメラキャリブレーションを実行するときに、前記多面体の前記第１の組の面間の空間的関係を特定するように構成され、
前記それぞれの仮想面を記述する前記情報は、前記多面体の前記第１の組の面間の前記空間的関係に基づいて特定される、請求項１に記載のコンピューティングシステム。
【請求項１０】
前記多面体の前記別の面の前記１組の角は前記多面体の第２の組の角であり、前記制御回路は、前記カメラキャリブレーションを実行するときに、
前記それぞれの仮想面のうちの少なくとも３つが交わる位置を特定することによって、前記多面体の第１の組の角に関するそれぞれの位置を、別の１組の座標として特定するように構成され、
前記第１の組の座標は、前記別の１組の座標及び前記多面体の規定サイズに基づいて特定される、請求項１に記載のコンピューティングシステム。
【請求項１１】
前記変換関数は第１の変換関数であり、前記制御回路は、
前記第１のカメラと前記プラットフォームの中心との間の空間的関係を記述する第２の変換関数を特定することと、
前記第１の変換関数及び前記第２の変換関数に基づいて、前記第２のカメラと前記プラットフォームの前記中心との間の空間的関係を記述する第３の変換関数を特定することと、
によって更に、前記カメラキャリブレーションを実行するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１２】
前記制御回路は、前記プラットフォームに、前記第１のカメラに対して複数の向きを有するように前記３Ｄキャリブレーションパターンを回転させるために、前記通信インターフェースを介して前記プラットフォームに１つ以上のモーターコマンドを出力するように構成され、前記第１の組のキャリブレーション画像は、前記３Ｄキャリブレーションパターンが前記第１のカメラに対して前記複数の向きを有するときにそれぞれ生成される、請求項１に記載のコンピューティングシステム。
【請求項１３】
前記通信インターフェースは、前記プラットフォームの前記第１の表面に向けられる第３のカメラと通信するように構成され、前記制御回路は、
前記通信インターフェースを介して前記第３のカメラから第３の組のキャリブレーション画像を受信することであって、該第３の組のキャリブレーション画像も前記多面体の前記第１の組の面と、前記第１の組のそれぞれの２Ｄキャリブレーションパターンとを取り込むことと、
前記第１の組のキャリブレーション画像及び前記第３の組のキャリブレーション画像に基づいて、別の変換関数を特定することであって、該別の変換関数は前記第１のカメラと前記第３のカメラとの間の空間的関係を記述することと、
によって更に、カメラキャリブレーションを実行するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１４】
命令を有する非一時的コンピューター可読媒体であって、コンピューティングシステムの制御回路によって実行されるときに、該命令によって、該制御回路が
前記コンピューティングシステムの通信インターフェースを介して、第１の組のキャリブレーション画像を受信し、該通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられ、
前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、
前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面と、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンとを取り込み、
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、
前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記第１の組の面によって形成されるそれぞれの仮想面を記述する情報を特定することと、
前記第１の組のキャリブレーション画像内の前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体を表す３Ｄモデルを特定することであって、前記３Ｄモデルは、少なくとも、前記それぞれの仮想面を記述する前記情報によって表されることと、
前記多面体の前記３Ｄモデルに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、
前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることと、
を行う、非一時的コンピューター可読媒体。
【請求項１５】
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記第２の組の１つ以上のキャリブレーション画像は、第１のキャリブレーション画像及び第２のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、
前記通信インターフェースを介して、前記第１の光源を点灯させ、前記第２の光源を消灯させる第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記通信インターフェースを介して、前記第１の光源を消灯させ、前記第２の光源を点灯させる第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、
前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部である別の２Ｄキャリブレーションパターンを取り込むことと、
前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像に基づいて、前記第２の組の座標を特定することと、
を更に行う、請求項１４に記載の非一時的コンピューター可読媒体。
【請求項１６】
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が更に、前記第１の組のキャリブレーション画像内の前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体を表す３Ｄモデルを特定し、
前記多面体の前記別の面の前記１組のそれぞれの角に関する前記第１の組の座標は、前記多面体の前記３Ｄモデルに基づいて特定される、請求項１４に記載の非一時的コンピューター可読媒体。
【請求項１７】
前記第１の組のキャリブレーション画像の各キャリブレーション画像は、前記第１の組の２Ｄキャリブレーションパターンのうちの少なくとも２つの２Ｄキャリブレーションパターンを取り込み、前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、前記第１の組のキャリブレーション画像のキャリブレーション画像ごとに、
前記キャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第１の２Ｄキャリブレーションパターンを取り込む第１の画像部分を抽出することと、
前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶することと、
前記キャリブレーション画像から前記第１の画像部分を除去することによって、更新されたキャリブレーション画像を生成することと、
前記更新されたキャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第２の２Ｄキャリブレーションパターンを取り込む別の画像部分を抽出することと、
前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶することと、
を更に行い、
前記制御回路は、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第１のカメラのキャリブレーションパラメーターの推定値を特定するように構成される、請求項１５に記載の非一時的コンピューター可読媒体。
【請求項１８】
前記変換関数は第１の変換関数であり、前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が更に、
前記第１のカメラと前記プラットフォームの中心との間の関係を記述する第２の変換関数を特定することと、
前記第１の変換関数及び前記第２の変換関数に基づいて、前記第２のカメラと前記プラットフォームの前記中心との間の関係を記述する第３の変換関数を特定することと、
を行う、請求項１４に記載の非一時的コンピューター可読媒体。
【請求項１９】
物体走査の方法であって、
コンピューティングシステムによって、該コンピューティングシステムの通信インターフェースを介して第１の組のキャリブレーション画像を受信することを含み、該通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられ、
前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備え、
前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面を取り込み、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンを取り込み、
該方法は、
前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、
前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記第１の組の面によって形成されるそれぞれの仮想面を記述する情報を特定することと、
前記第１の組のキャリブレーション画像内の前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体を表す３Ｄモデルを特定することであって、前記３Ｄモデルは、少なくとも、前記それぞれの仮想面を記述する前記情報によって表されることと、
前記多面体の前記３Ｄモデルに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、
前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、
前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、
前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることと、
を更に含む、方法。
【請求項２０】
前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置され、
前記第２の組の１つ以上のキャリブレーション画像は、第１のキャリブレーション画像及び第２のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記方法は、
前記通信インターフェースを介して、前記第１の光源を点灯させ、前記第２の光源を消灯させる第１の組の１つ以上の光源コマンドを出力することと、
前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記通信インターフェースを介して、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を生成させる第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記通信インターフェースを介して、前記第１の光源を消灯させ、前記第２の光源を点灯させる第２の組の１つ以上の光源コマンドを出力することと、
前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記通信インターフェースを介して、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像を生成させる第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部である別の２Ｄキャリブレーションパターンを取り込むことと、
を更に含み、
前記第２の組の座標を前記特定することは、前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像に基づく、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、走査システムのための自動カメラキャリブレーションを実行する方法及びシステムに関する。
【背景技術】
【０００２】
物体走査を用いて、物体の形状等の、物体の特徴を特定してきた。物体走査のいくつかの実施態様は、カメラによって取得された物体の画像に頼る。場合によっては、物体走査の結果を用いて、物体の３次元（３Ｄ）モデルを生成してきた。３Ｄモデルは、ロボットが物体とインタラクトする状況等の、オートメーションとの関連において使用される場合がある。
【発明の概要】
【０００３】
本明細書における実施形態の一態様は、自動カメラキャリブレーションを実行する方法、コンピューティングシステム及びそれを実行する命令を有する非一時的コンピューター可読媒体に関連する。コンピューティングシステムは、通信インターフェース及び制御回路を備える。通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、第１のカメラと第２のカメラとの間に配置されるプラットフォームを回転させるアクチュエーターと通信するように構成され、第１のカメラは、プラットフォームの第１の表面に向けられ、第２のカメラは、プラットフォームの第２の、反対に面する表面に向けられる。制御回路は、３次元（３Ｄ）キャリブレーションパターンがプラットフォームの第１の表面上に配置されるときに、カメラキャリブレーションを実行するように構成される。３Ｄキャリブレーションパターンは、第１の組の面と、第１の組の面の一部ではない別の面（additional face）とを含む、複数の面を有する多面体を備え、第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備える。カメラキャリブレーションは、通信インターフェースを介して第１のカメラから第１の組のキャリブレーション画像を受信することであって、第１の組のキャリブレーション画像は、多面体の別の面を取り込むことなく、多面体の第１の組の面を取り込み、第１の組の面上にそれぞれ配置される第１の組の２Ｄキャリブレーションパターンを取り込むことと、通信インターフェースを介して第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、第２の組の１つの以上のキャリブレーション画像は、多面体の別の面を取り込むこととによって実行される。カメラキャリブレーションは、第１の組の２Ｄキャリブレーションパターンに基づいて、多面体の別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、第１の組の座標は、第１のカメラの位置及び向きを基準としていることと、第２の組の１つ以上のキャリブレーション画像に基づいて、多面体の別の面の１組のそれぞれの角を表す第２の組の座標を特定することであって、第２の組の座標は、第２のカメラの位置及び向きを基準としていることとによって更に実行される。カメラキャリブレーションは、第１の組の座標及び第２の組の座標に基づいて、第１のカメラと第２のカメラとの間の空間的関係を記述する変換関数を特定することによって更に実行される。制御回路は、カメラキャリブレーションが実行された後に、３Ｄキャリブレーションパターン以外の物体がプラットフォームの第１の表面上に配置されるときに、その物体を表現する３Ｄモデルを生成するように更に構成され、３Ｄモデルは、変換関数に基づいて、通信インターフェースを介して第１のカメラから受信される物体の画像に基づいて、及び、通信インターフェースを介して第２のカメラから受信される物体の画像に基づいて生成される。
【０００４】
本発明の上述の特徴、目的、及び利点、並びに他の特徴、目的、及び利点は、添付の図面に示されるような本発明の実施形態の以下の説明から明らかであろう。本明細書に組み込まれるとともに本明細書の一部をなす添付の図面は更に、本発明の原理を説明するとともに、当業者が本発明を実施及び使用することを可能にする役割を果たす。図面は一定縮尺ではない。
【図面の簡単な説明】
【０００５】
【図１Ａ】本明細書における一実施形態による、ロボット運用システムと通信する走査システムのブロック図である。
【図１Ｂ】本明細書における一実施形態による、走査システムの構成要素のブロック図である。
【図１Ｃ】本明細書における一実施形態による、カメラキャリブレーションを実行するように構成されるコンピューティングシステムのブロック図である。
【図１Ｄ】本明細書における一実施形態による、走査システムのブロック図である。
【図１Ｅ】本明細書における一実施形態による、走査システムのブロック図である。
【図２】本明細書における一実施形態による、第１のカメラと第２のカメラとの間の空間的関係を特定するための方法を示すフロー図である。
【図３Ａ】本明細書における一実施形態による、走査システムの例示的な構成要素を示す図である。
【図３Ｂ】本明細書における一実施形態による、３Ｄキャリブレーションパターンの多面体の面を示す図である。
【図３Ｃ】本明細書における一実施形態による、３Ｄキャリブレーションパターンの多面体の面を示す図である。
【図３Ｄ】本明細書における一実施形態による、３Ｄキャリブレーションパターンの一部である２Ｄキャリブレーションパターンを示す図である。
【図３Ｅ】本明細書における一実施形態による、３Ｄキャリブレーションパターンの一部である２Ｄキャリブレーションパターンを示す図である。
【図３Ｆ】本明細書における一実施形態による、３Ｄキャリブレーションパターンの一部である２Ｄキャリブレーションパターンを示す図である。
【図３Ｇ】本明細書における一実施形態による、走査システム内の種々の座標系を示す図である。
【図３Ｈ】本明細書における一実施形態による、走査システム内の種々の座標系を示す図である。
【図４Ａ】本明細書における一実施形態による、第１のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図４Ｂ】本明細書における一実施形態による、第１のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図４Ｃ】本明細書における一実施形態による、第１のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図５Ａ】本明細書における一実施形態による、第２のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図５Ｂ】本明細書における一実施形態による、第２のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図５Ｃ】本明細書における一実施形態による、第２のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【図５Ｄ】本明細書における一実施形態による、第２のカメラによって生成される種々のキャリブレーション画像の例を示す図である。
【発明を実施するための形態】
【０００６】
以下の詳細な説明は、本質的に単に例示のものであり、本発明又は本発明の用途及び使用を限定することを意図するものではない。さらに、前出の技術分野、背景技術、発明の概要又は以下の詳細な説明において提示されるいかなる明示された又は暗示された理論によっても限定する意図はない。
【０００７】
本明細書に記載される実施形態は、走査システムのためのキャリブレーション動作の一部として、第１のカメラと第２のカメラとの間の空間的関係を特定することに関連する。一実施形態において、走査システムは、異なる視点から物体の画像を取得することができる複数のカメラを備えることができる。それらの画像を用いて、物体の３Ｄモデルを生成することができる。場合によっては、３Ｄモデルを用いて、ロボットと、物体又はその物体が属する物体群との間のインラタクションを助長することができる。例えば、物体は、倉庫内の梱包品とすることができ、物体の３Ｄモデルは、ロボットアームが梱包品をいかに持ち上げることができるかを判断するために、ロボット制御システムによって使用される場合がある。一実施形態において、走査システムの第１のカメラ及び第２のカメラは、一般的に重なり合わない物体のそれぞれの領域を視認することができる。例えば、走査システムは、物体が配置される透明なプラットフォームを含むことができる。第１のカメラは、例えば、透明なプラットフォームの上面の上方に配置することができ、第１のカメラに物体の斜視図を与える方向に向けることができる。この例において、第２のカメラは、例えば、透明なプラットフォームの底面の下方にわたって配置することができ、第２のカメラに物体の底面図を与える方向に向けることができる。上記の例において、第１のカメラは上部カメラと呼ばれる場合があり、第２のカメラは底部カメラと呼ばれる場合がある。本明細書における実施形態の一態様は、そのような第１のカメラとそのような第２のカメラとの間の空間的関係を特定するキャリブレーション動作に関連する。空間的関係は、例えば、第１のカメラによって取得される画像を第２のカメラによって取得される画像と合成する方法を決定するために、後に使用することができる。
【０００８】
一実施形態において、キャリブレーション動作は、透明なプラットフォーム上に配置される３Ｄキャリブレーションパターンを用いて実行することができる。３Ｄキャリブレーションパターンは、例えば、多面体と、多面体のそれぞれの面上に配置される複数の２Ｄキャリブレーションパターンとを含むことができる。場合によっては、キャリブレーション動作は、３Ｄキャリブレーションパターン上のそれぞれの位置の第１の組の座標（３Ｄキャリブレーションパターン上のそれぞれの位置を表す第１の組の座標とも呼ばれる）を特定することを伴うことができ、第１の組の座標は第１のカメラの位置及び向きを基準としている。キャリブレーション動作は、当該それぞれの位置に関する第２の組の座標（当該それぞれの位置を表す第２の組の座標とも呼ばれる）を特定することを更に伴うことができ、第２の組の座標は第２のカメラの位置及び向きを基準としている。例えば、それぞれの位置は、３Ｄキャリブレーションパターンの多面体の底面角の位置とすることができる。第１のカメラと第２のカメラとの間の空間的関係は、底面角に関する第１の組の座標と、当該底面角に関する第２の組の座標とに基づいて特定することができる。場合によっては、第１のカメラの位置及び向きは第１のカメラの座標系によって表される場合があり、第２のカメラの位置及び向きは第２のカメラの座標系によって表される場合がある。そのような場合に、第１の組の座標は第１のカメラの座標系内に存在する場合があり、第２の組の座標は第２のカメラの座標系内に存在する場合がある。
【０００９】
一実施形態において、キャリブレーション動作は、３Ｄキャリブレーションパターンの他の位置（例えば、上面角）に関する座標を特定し、３Ｄキャリブレーションパターンの単数又は複数の寸法についての既知の情報を用いて、その後、第１の組の座標を特定することによって、３Ｄキャリブレーションパターン上の位置（例えば、底面角）に関する第１の組の座標を特定することを伴うことができる。例えば、第１の組の座標が３Ｄキャリブレーションパターンの多面体の底面角に属する場合には、そのような実施形態は、最初に、多面体の上面角の１組の座標を特定することと、その後、多面体の各辺の既知のサイズ等の、多面体の既知の寸法だけ多面体の上面角から離間した座標として、多面体の底面角の第１の組の座標を特定することとを伴うことができる。
【００１０】
一実施形態において、キャリブレーション動作は、３Ｄキャリブレーションパターンの３Ｄモデルを特定することを伴うことができる。場合によっては、３Ｄモデルは、３Ｄキャリブレーションパターンの多面体の面によって画定されるか、又はより一般的には、多面体の面を表す仮想面を記述する情報を含むことができる。すなわち、仮想面は、多面体の３Ｄモデルの少なくとも一部を形成することができる。そのような実施形態において、キャリブレーション動作は、多面体の３Ｄモデルに基づいて、多面体の特定の角（例えば、上面の角）の座標を特定することができる。例えば、その角の座標は、多面体の少なくとも３つの仮想面の交点として特定することができる。
【００１１】
一実施形態において、第２のカメラを用いて３Ｄキャリブレーションパターンの画像（それはキャリブレーション画像と呼ばれる場合がある）を生成することは、複数対のキャリブレーション画像を生成することを伴うことができ、各対は、多面体の特定の面（例えば、底面）のシルエットを取り込む第１のキャリブレーション画像と、その面上に配置される２Ｄキャリブレーションパターンを取り込む第２のキャリブレーション画像とを含む。そのような実施形態において、第２のカメラは、ガラス等の透明材料を通して３Ｄキャリブレーションパターンを視認することができる。ガラスは、光の屈折効果又はキャリブレーション画像の中への光の散乱を導入する等によって、撮像誤差の発生源を導入する場合がある。撮像誤差は、キャリブレーション画像から、多面体の面の角を、又は３Ｄキャリブレーションパターンの何らかの他の特徴を正確に識別する難易度を高める場合がある。しかしながら、角を識別するために第１のキャリブレーション画像及び第２のキャリブレーション画像の両方を使用することによって、撮像誤差の影響を補償することができ、それにより、キャリブレーション画像から３Ｄキャリブレーションパターンの角又は他の特徴を識別することができるロバスト性を高めることができ、キャリブレーション動作の全体的なロバスト性を高めることができる。
【００１２】
一実施形態において、３Ｄキャリブレーションパターンの多面体の特定の面のシルエットを取り込む第１のキャリブレーション画像は、第１の照明条件で生成することができる。第１の照明条件は、第２のカメラから見て、多面体のその面の後方にある第１の光源（例えば、上部光源）を点灯させ（activate)、多面体のその面の方に向けられる第２の光源（例えば、底部光源）を消灯させる（deactivate）ことによって作り出すことができる。その後、第１の照明条件が作り出された後に、第２のカメラが第１のキャリブレーション画像を取得することができる。一実施形態において、多面体のその面上に配置される２Ｄキャリブレーションパターンを取り込む第２のキャリブレーション画像は、第２の照明条件で生成することができる。第２の照明条件は、第１の光源を消灯させ、第２の光源を点灯させることによって作り出すことができる。その後、第２の照明条件が作り出された後に、第２のカメラが第２のキャリブレーション画像を取得することができる。
【００１３】
上記で言及されたように、キャリブレーション動作は、走査システムが物体の画像及び／又は３Ｄモデルを生成する能力を助長することができ、３Ｄモデルは、ロボットが物体とインタラクトする能力を助長することができる。図１Ａは、ロボット運用システム１０１と通信するように構成される走査システム１００のブロック図を示す。走査システム１００（レジストレーションシステム１００又は製品レジストレーションシステム１００とも呼ばれる）を用いて、物体を走査する、より具体的には、物体の画像を取得することができ、その画像を用いて、物体の３Ｄモデル（例えば、点群）を生成することができる。物体の画像を用いて、ロボット運用システム１０１が、物体とインタラクトする能力、又は物体と実質的に同じ形状及び／又はサイズを有する他の物体とインタラクトする能力を助長することができる。一実施形態において、走査システム１００は、走査システム１００によって取得された画像に基づいて、物体の３Ｄモデルを生成するように構成することができ、物体の３Ｄモデルをロボット運用システム１０１に通信するように構成することができる。一実施形態において、走査システム１００は、物体の取得された画像をロボット運用システム１０１に通信するように構成することができ、ロボット運用システム１０１は、取得された画像に基づいて、物体の３Ｄモデルを生成することができる。
【００１４】
一実施形態において、走査システム１００及び／又はロボット運用システム１０１は、倉庫、製造工場又は他の構内に配置することができる。そのような実施形態において、走査される物体は、例えば、倉庫内の製品（例えば、１つの在庫品）、製造工場内の最終製品を製造する際に使用される部品、又は何らかの他の物体とすることができる。走査システム１００は、物体の特性、物体の３Ｄモデル（例えば、物体の形状及びサイズを記述する情報）、又は物体に関する何らかの他の情報を特定するように物体を走査することができる。物体に関する３Ｄモデル又は他の情報は、物体とインタラクトするために、ロボット運用システム１０１によって使用される場合がある。例えば、ロボット運用システム１０１は、ロボットアームを有するロボットを含むことができ、インタラクションは、倉庫内の梱包品を持ち上げるためのビンピッキング動作等において、ロボットアームが物体を持ち上げることを伴うことができる。ロボット運用システム１０１の一例が、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第１６／２９５，９４０号に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。一実施形態において、ロボット運用システム１０１は、ロボットを制御するためのロボット制御システム（ロボットコントローラーとも呼ばれる）を備えることができる。場合によっては、走査システム１００は、ロボット制御システムに、物体の３Ｄモデル、物体の取得された画像、又は他の情報を通信するように構成することができる。一実施形態において、ロボット運用システム１０１は、１つ以上のカメラを含む視覚システムを含むことができる。視覚システムの一例が、「Method and Control System for Updating a First Image Generated by a First Camera Based on a Second Image Generated by a Second Camera」と題する米国特許出願第１６／４３８，０８４号（ＭＪ００２０−ＵＳ／００７７−０００５ＵＳ１）に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。場合によっては、走査システム１００は、物体の３Ｄモデル、物体の取得された画像、又は他の情報を視覚システムに通信するように構成することができる。
【００１５】
図１Ｂは、走査システム１００の一実施形態のブロック図を示す。図１Ｂに示される実施形態において、走査システム１００は、コンピューティングシステム１１０（走査制御システム又はスキャンコントローラーとも呼ばれる）と、アクチュエーター１４０と、プラットフォーム１５０と、第１のカメラ１７０（「カメラ１」と表記される）と、第２のカメラ１８０（「カメラ２」と表記される）とを含む。場合によっては、走査システム１００は、図１Ｂに示される第１の光源１２０（「光源１」と表記される）及び第２の光源１３０（「光源２」と表記される）等の、１つ以上の光源を更に含むことができる。一実施形態において、走査システム１００は、走査システム１００のいくつか又は全ての構成要素がその中に位置する密閉空間を与える、収納箱のような密閉ハウジングを含むことができる。
【００１６】
一実施形態において、プラットフォーム１５０は、走査されることになる物体がその上に配置される表面を与えることができる。場合によっては、プラットフォーム１５０が動くことによって物体が動くように、プラットフォーム１５０を動かすことができる。例えば、プラットフォーム１５０は、アクチュエーター１４０（例えば、モーター）によって板の中心の周りで回転可能である円形のガラス板とすることができる。プラットフォーム１５０を回転させることによって、物体の異なる部分を、例えば、第１のカメラ１７０の視野に入れることができる場合がある。一実施形態において、物体を配置することができる表面はプラットフォームの第１の表面（例えば、上面）とすることができ、一方、プラットフォームは、第２の、反対に面する表面（例えば、底面）を更に有することができる。
【００１７】
一実施形態において、プラットフォーム１５０は、第１のカメラ１７０と第２のカメラ１８０との間に配置することができる。例えば、図１Ｂは、プラットフォーム１５０の第１の表面１５２（例えば、上面）と、プラットフォーム１５０の第２の表面１５４（例えば、底面）とを示し、第１の表面１５２及び第２の表面１５４は、プラットフォーム１５０の、互いに反対方向を向く表面である。この例において、第１のカメラ１７０は、プラットフォーム１５０の第１の表面１５２に隣接して配置することができ、第１の表面１５２は第１のカメラ１７０とプラットフォーム１５０の第２の表面１５４との間に配置される。例えば、第１のカメラ１７０は、第１の表面１５２の上方に配置することができる（上方にわたって配置されるとも言われる）。さらに、第１のカメラ１７０は、プラットフォーム１５０の第１の表面１５２（例えば、プラットフォーム１５０の上面）に向けることができる。この例において更に、第２のカメラ１８０は、プラットフォーム１５０の第２の表面１５４に隣接して配置することができ、第２の表面１５４は第２のカメラ１８０とプラットフォームの第１の表面１５２との間に配置される。例えば、第２のカメラ１８０は、第２の表面１５４の下方に配置することができる（下方にわたって配置されるとも言われる）。さらに、第２のカメラ１８０は、プラットフォーム１５０の第２の表面１５４（例えば、プラットフォーム１５０の底面）に向けることができる。場合によっては、第１の表面１５２及び第２の表面１５４はいずれも平面とすることができ、かつ互いに平行とすることができる。
【００１８】
一実施形態において、プラットフォーム１５０は、ガラス板等の透明なプラットフォームとすることができる。透明なプラットフォーム上に物体が配置されるとき、物体上の種々の領域を第１のカメラ１７０又は第２のカメラ１８０のうちの少なくとも一方から視認できる場合がある。例えば、物体上の第１の領域（例えば、上部領域）は第２のカメラ１８０から視認できない場合があるが、第１のカメラ１７０から視認できる場合がある。同様に、物体の第２の領域（例えば、下部領域）は、第１のカメラ１７０から視認できない場合があるが、第２のカメラ１８０から視認できる場合がある。さらに、いくつかの領域が、最初に、例えば、第１のカメラ１７０に対する視野から遮られる場合には、上記で論じられたように、プラットフォーム１５０を後に動かすことにより、それらの領域を視野に入れることができる場合がある。
【００１９】
一実施形態において、第１のカメラ１７０及び／又は第２のカメラ１８０は、カラーカメラ、白黒カメラ、深度検知カメラ、ビデオカメラ、その任意の組み合わせ、又は任意の他のタイプのカメラとすることができる。一実施形態において、第１のカメラ１７０は、プラットフォーム１５０の中心から外して配置することができる。そのような実施形態では、第１のカメラ１７０は、プラットフォーム１５０の中心の真上には配置されない。プラットフォーム１５０の中心は、例えば、プラットフォーム１５０の第１の表面１５２の中心、プラットフォーム１５０の第２の表面１５４の中心、又はそれらの２つの位置の平均を指す場合がある。より具体的な例として、第１のカメラ１７０は、図１Ｂのプラットフォーム１５０の中心軸１５６と交わらないことによって中心から外すことができ、中心軸１５６は、プラットフォーム１５０の第１の表面１５２又は第２の表面１５４に対して垂直であり、かつプラットフォーム１５０の中心を通って延在する軸とすることができる。場合によっては、第１のカメラ１７０は、プラットフォーム１５０の第１の表面１５２に対して第１のカメラ１７０が傾けられ、プラットフォーム１５０の第１の表面１５２の方向に向けられるような向きを有することができる。そのような向きによって、第１のカメラ１７０は、例えば、物体の平面図のみを有するのとは対照的に、プラットフォーム１５０の第１の表面１５２上に配置される物体の斜視図を有することができる場合がある。例えば、プラットフォーム１５０の第１の表面１５２上に物体が配置されるとき、第１のカメラ１７０を傾けることによって、上部領域及び側部領域等の複数の領域を第１のカメラ１７０から同時に視認できるようになる場合がある。より具体的な例として、第１のカメラ１７０の光軸がプラットフォーム１５０の中心軸１５６と平行でない（又はより一般的には、一直線に合わせられない）ような向きを有することによって、第１のカメラ１７０をプラットフォーム１５０の第１の表面１５２に対して傾けることができる。
【００２０】
一実施形態において、第２のカメラ１８０は、プラットフォーム１５０の中心に位置することができる。例えば、第２のカメラ１８０は、プラットフォーム１５０の中心軸１５６と交わることができる。より具体的な例として、第２のカメラ１８０のレンズ又は画像センサーが中心軸１５６と交わるときに、第２のカメラ１８０は、プラットフォーム１５０の中心に位置することができる。別の実施形態では、第２のカメラ１８０は、プラットフォーム１５０の中心から外すことができる。一実施形態において、第２のカメラ１８０が、第２のカメラ１８０の光軸が中心軸１５６と平行であるか、又は第２のカメラ１８０の光軸が第２の表面１５４によって画定又は形成される仮想面に対して垂直であるような向きを有するように、第２のカメラ１８０はプラットフォーム１５０の第２の表面１５４に対して傾斜を有しないようにすることができる。そのような実施形態では、プラットフォーム１５０の第１の表面上に物体が配置されるとき、第２のカメラ１８０のその向きによって、第２のカメラ１８０は、プラットフォーム１５０の透明材料を通して物体を正面から視認することができる。例えば、プラットフォーム１５０の第２の表面１５４が底面である場合には、第２のカメラ１８０は、プラットフォーム１５０のガラス又は他の材料を通して、例えば、物体の底面図のみを有することができる。第２のカメラ１８０が傾かないことは、プラットフォーム１５０の透明材料を光が通り抜けることから生じる、光の屈折量、光の散乱又はひずみの他の発生源を最小化することができる。そのような結果が、第２のカメラ１８０によって取得された画像内の撮像誤差の量を低減することができる。
【００２１】
一実施形態において、第１の光源１２０はプラットフォーム１５０の第１の表面１５２に隣接して配置する（例えば、その上方に配置する）ことができ、第１の表面１５２は第１の光源１２０とプラットフォーム１５０の表面１５４との間に配置される。第１の光源１２０は、プラットフォーム１５０の第１の表面１５２に向けることができる。さらに、第２の光源１３０はプラットフォーム１５０の第２の表面１５４に隣接して配置する（例えば、その下方に配置する）ことができ、第２の表面１５４は第２の光源１３０とプラットフォーム１５０の第１の表面１５２との間に配置される。第２の光源１３０は、プラットフォーム１５０の第２の表面１５４に向けることができる。第１の光源１２０及び第２の光源１３０はそれぞれ、例えば、発光ダイオード（ＬＥＤ）、ハロゲンランプ、又は任意の他の光源とすることができる。さらに、第１の光源１２０及び第２の光源１３０は、プラットフォーム１５０の第１の表面１５２及び第２の表面１５４にそれぞれ向かって、可視光、赤外線放射又は任意の他の形の光を放射するように構成することができる。いくつかの実施態様において、コンピューティングシステム１１０は、プラットフォーム１５０の第１の表面１５２に関する照明条件を制御するために第１の光源１２０を制御することができ、プラットフォーム１５０の第２の表面１５４に関する照明条件を制御するために第２の光源１３０を制御することができる。
【００２２】
一実施形態において、コンピューティングシステム１１０（走査制御システム又は走査コントローラーとも呼ばれる）は、第１のカメラ１７０、第２のカメラ１８０、第１の光源１２０、第２の光源１３０及び／又はアクチュエーター１４０のうちの１つ以上と通信することができ、及び／又は１つ以上を制御するように構成することができる。場合によっては、通信は、例えば、ＲＳ−２３２インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、イーサネット（登録商標）インターフェース、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェース、ＩＥＥＥ８０２．１１インターフェース、又はその任意の組み合わせを介して行うことができる。場合によっては、通信は、周辺構成要素相互接続（ＰＣＩ：peripheral component interconnect）バス等のローカルコンピューターバスを介して行うことができる。
【００２３】
図１Ｃは、コンピューティングシステム１１０のブロック図を示す。コンピューティングシステム１１０は、コンピューター、制御チップ、回路基板、又は任意の他のコンピューティングシステムとすることができる。図１Ｃのブロック図に示されるように、コンピューティングシステム１１０は、制御回路１１１と、通信インターフェース１１３と、非一時的コンピューター可読媒体１１５（例えば、メモリ）とを含むことができる。
【００２４】
一実施形態において、通信インターフェース１１３は、図１Ｂのアクチュエーター１４０、第１のカメラ１７０、第２のカメラ１８０、第１の光源１２０及び／又は第２の光源１３０と通信し、及び／又は図１Ａのロボット運用システム１０１と通信するように構成される１つ以上の構成要素を含むことができる。場合によっては、通信インターフェース１１３は、有線プロトコル又はワイヤレスプロトコルを介して通信を実行するように構成される通信回路を含むことができる。一例として、通信回路は、ＲＳ−２３２ポートコントローラー、ＵＳＢコントローラー、イーサネット（登録商標）コントローラー、Ｂｌｕｅｔｏｏｔｈ（登録商標）コントローラー、ＰＣＩバスコントローラー、任意の他の通信回路、又はその組合せを含むことができる。
【００２５】
一実施形態において、制御回路１１１は、１つ以上のプロセッサ、プログラマブル論理回路（ＰＬＣ）又はプログラマブル論理アレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、又は任意の他の制御回路を含むことができる。一実施形態において、非一時的コンピューター可読媒体１１５はコンピューターメモリを含むことができる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、半導体集積メモリ（solid state integrated memory）、及び／又はハードディスクドライブ（ＨＤＤ）を含むことができる。場合によっては、非一時的コンピューター可読媒体１１５は、後に更に詳細に論じられるように、カメラキャリブレーションを実行する命令等の、制御回路１１１が実行するように構成される命令（例えば、コンピューターコード）を記憶することができる。そのような場合に、制御回路１１１は、カメラキャリブレーションを実行するコンピューター実行可能命令を実行するように構成される１つ以上のプロセッサを含むことができる。
【００２６】
一実施形態において、コンピューティングシステム１１０は、図１Ｂのアクチュエーター１４０、図１Ｂの第１のカメラ１７０、図１Ｂの第２のカメラ１８０、図１Ｂの第１の光源１２０及び／又は図１Ｂの第２の光源１３０の動作を含む、走査システム１００の動作のみを制御する専用制御システム（専用コントローラーとも呼ばれる）とすることができる。他の事例では、コンピューティングシステム１１０は、ロボット運用システム（例えば、図１Ａのロボット運用システム１０１）の動作等の、別の動作を制御するように構成することができる。一実施形態において、コンピューティングシステム１１０は、プラットフォーム１５０、アクチュエーター１４０、第１のカメラ１７０、第２のカメラ１８０、第１の光源１２０及び／又は第２の光源１３０等の、走査システム１００の他の構成要素にローカル接続することができる。一実施形態において、コンピューティングシステム１１０は、走査システム１００の１つ以上の他の構成要素からリモート接続することができる。例えば、プラットフォーム１５０、アクチュエーター１４０、第１のカメラ１７０、第２のカメラ１８０、第１の光源１２０及び第２の光源１３０は倉庫又は他の構内に位置することができ、コンピューティングシステム１１０は、倉庫から遠隔しているデータセンター又は他の位置に配置することができ、ネットワーク接続を介して、走査システム１００のそれらの他の構成要素と通信するように構成することができる。
【００２７】
一実施形態において、コンピューティングシステム１１０は、第１のカメラ１７０によって取得される画像及び第２のカメラによって取得される画像を引き出すか、又は別の方法で受信するように構成することができる。場合によっては、画像は、後に更に詳細に論じられるように、キャリブレーションパターンからなることができる（そのような画像は、キャリブレーション画像と呼ばれる場合がある）。一実施形態において、コンピューティングシステム１１０は、そのようなキャリブレーション画像を取得するために、第１のカメラ１７０及び／又は第２のカメラ１８０を制御するように構成することができる。例えば、コンピューティングシステム１１０は、第１のカメラ１７０及び／又は第２のカメラ１８０に、第１のカメラ１７０又は第２のカメラ１８０の視野内のシーンの画像をそれぞれ取得させるか、又は別の方法で生成させるカメラコマンドを生成するように構成することができる（カメラの視野は、カメラ視野と呼ばれる場合もある）。同じカメラコマンド又は異なるカメラコマンドが更に、第１のカメラ１７０及び／又は第２のカメラ１８０に、図１Ｃの通信インターフェース１１３を介して、取得された画像をコンピューティングシステム１１０に、又はより一般的には、コンピューティングシステム１１０によってアクセス可能な記憶デバイス（例えば、図１Ｃの非一時的コンピューター可読媒体１１５）に通信させることができる。一実施形態において、第１のカメラ１７０及び／又は第２のカメラ１８０は、コンピューティングシステム１１０からのカメラコマンドを必要とすることなく、定期的に、又は規定されたトリガー処理条件に応答して、それぞれのカメラ視野内のシーンの画像を自動的に取得するか、又は別の方法で生成することができる。そのような実施形態では、第１のカメラ１７０及び／又は第２のカメラ１８０は、コンピューティングシステム１１０からのカメラコマンドを用いることなく、取得された画像をコンピューティングシステム１１０に、又はより一般的には、コンピューティングシステム１１０によってアクセス可能な記憶デバイスに自動的に通信するように構成することもできる。
【００２８】
一実施形態において、コンピューティングシステム１１０の制御回路１１１又は他の構成要素は、アクチュエーター１４０によって受信されるときに、アクチュエーター１４０にプラットフォーム１５０を作動させる（例えば、回転させる）動作コマンドを生成するように構成することができる。動作コマンドは、通信インターフェース１１３を介して、制御回路１１１からアクチュエーター１４０に通信することができる。一例において、アクチュエーター１４０はモーターとすることができ、動作コマンドはモーターコマンド又は任意の他のタイプの動作コマンドとすることができる。
【００２９】
一実施形態において、コンピューティングシステム１１０の制御回路１１１又は他の構成要素は、第１の光源１２０及び／又は第２の光源１３０に関する照明コマンドを生成し、通信インターフェース１１３を介して、制御回路１１１から第１の光源１２０及び／又は第２の光源１３０に照明コマンドを通信するように構成することができる。照明コマンドは、例えば、特定の光源を点灯させるか、消灯させるかを、又は光源を点灯させる強度若しくは持続時間等の、光源を点灯させる方法を制御することができる。
【００３０】
一実施形態において、図１Ｂの走査システム１００内のカメラは第１のカメラ１７０及び第２のカメラ１８０だけである。一実施形態において、走査システム１００は、３つ以上のカメラ等の、別のカメラを含むことができる。例えば、図１Ｄは、第１のカメラ１７０及び第２のカメラ１８０だけでなく、第３のカメラ１９０（「カメラ３」と表記される）も含む、走査システム１００の一実施形態である走査システム１００Ａを示す。この実施形態において、第１のカメラ１７０及び第３のカメラ１９０はいずれもプラットフォーム１５０の第１の表面１５２に隣接して配置する（例えば、第１の表面１５２の上方にわたって配置する）ことができ、一方、プラットフォーム１５０は、第１のカメラ１７０と第２のカメラ１８０との間に位置するだけでなく、第３のカメラ１９０と第２のカメラ１８０との間に配置される。より具体的には、第１の表面１５２は第３のカメラ１９０と、プラットフォーム１５０の第２の表面１５４との間に配置することができ、第１のカメラ１７０とプラットフォーム１５０の第２の表面１５４との間に配置することができる。第３のカメラ１９０は、プラットフォーム１５０の中心から外すことができるか、又はプラットフォーム１５０の中心に位置することができる。さらに、第３のカメラ１９０は、プラットフォーム１５０の第１の表面１５２に対して傾けることができるか、又はプラットフォーム１５０の第１の表面１５２に対して傾斜を有しないようにすることができる。第１のカメラ１７０及び第３のカメラ１９０は、プラットフォーム１５０上に配置される物体の異なる視点又は観察位置をカバーすることができる。場合によっては、第１のカメラ１７０及び第３のカメラ１９０の両方が存在することにより、コンピューティングシステム１１０に、第１のカメラ１７０及び第３のカメラ１９０の両方から視認可能である物体上の領域の立体視を与えることができる。
【００３１】
上記で言及されたように、本開示の一態様は、キャリブレーションパターンの画像に基づいて、カメラキャリブレーションを実行することに関連する。図１Ｅは、３Ｄキャリブレーションパターン１６０を用いて、カメラキャリブレーションを実行する実施形態を示す。より具体的には、３Ｄキャリブレーションパターン１６０は、走査システム１００のプラットフォーム１５０の第１の表面１５２上に配置され、そのコンピューティングシステム１１０は、３Ｄキャリブレーションパターン１６０のキャリブレーション画像に基づいて、カメラキャリブレーションを実行するように構成される。後に更に詳細に論じられるように、３Ｄキャリブレーションパターン１６０の一例が、多面体のそれぞれの面上に配置される複数の２Ｄパターンを有する多面体を含む。多面体は、その面のそれぞれに、又はその面の一部の面のみに配置される、それぞれの２Ｄパターンを有することができる。
【００３２】
上記で言及されたように、第１のカメラ１７０は、一実施形態において、第１のカメラ１７０がプラットフォーム１５０の第１の表面１５２に対して傾けられるような向きを有することができる。そのような向きは、第１のカメラ１７０に３Ｄキャリブレーションパターン１６０の斜視図を与えることができ、それにより、３Ｄキャリブレーションパターン１６０の複数の面を、第１のカメラ１７０から視認できるように、又はより一般的には、第１のカメラ１７０のカメラ視野内に入れることができるようにする場合がある。一実施形態では、同様に上記で言及されたように、第２のカメラ１８０は、第２のカメラ１８０がプラットフォーム１５０の第２の表面１５４に対して傾斜を有しないような向きを有することができる。そのような向きは、３Ｄキャリブレーションパターン１６０の多面体の１つの面のみを、又は面のうちの一部の面のみを第２のカメラ１８０から視認できるようにする場合がある。例えば、そのような実施形態における第２のカメラ１８０は、多面体の底面のみを視認できる場合がある。言い換えると、そのような例における第２のカメラ１８０は、３Ｄキャリブレーションパターン１６０の底面図のみを有する場合がある。
【００３３】
一実施形態において、コンピューティングシステム１１０は、プラットフォーム１５０をその中心の周りで回転させる等、プラットフォーム１５０を作動させるために、アクチュエーター１４０を制御するように構成することができる。そのような動作により、３Ｄキャリブレーションパターン１６０を、第１のカメラ１７０及び／又は第２のカメラ１８０に対して異なる位置及び／又は異なる向きに配置することができる。さらに、３Ｄキャリブレーションパターン１６０の特定の面が、最初に、例えば、第１のカメラ１７０から見えないように隠れていた場合には、プラットフォーム１５０が、その面を、例えば、第１のカメラ１７０の視野に入るように後に動かすことができる。一実施形態において、コンピューティングシステム１１０は、３Ｄキャリブレーションパターン１６０の多面体の１つ以上の面を照明するために、第１のカメラ１７０及び／又は第２のカメラ１８０が３Ｄキャリブレーションパターン１６０の画像を取得しているときに点灯するように、第１の光源１２０及び／又は第２の光源１３０を制御するように構成することができる。
【００３４】
図２は、図１Ｅの３Ｄキャリブレーションパターン１６０等のキャリブレーションパターンのキャリブレーション画像に基づいて、図１Ａ〜図１Ｅの走査システム１００等の走査システムに関するカメラキャリブレーションを実行する方法２００を示すフロー図を示す。方法２００は、一実施形態において、ステップ２０１〜２０９に従ってカメラキャリブレーションを実行することができ、その後、カメラキャリブレーションから特定された情報を用いて、ステップ２１１において物体の３Ｄモデルを生成することができる。一実施形態において、方法２００は、コンピューティングシステム１１０によって、より具体的には、図１Ｃの制御回路１１１によって実行することができる。場合によっては、制御回路１１１は、図１Ｃの非一時的コンピューター可読媒体１１５上に、又は任意の他の記憶デバイス上に記憶される命令に基づいて、方法２００を実行することができる。
【００３５】
一実施形態において、方法２００はステップ２０１から開始することができ、そのステップでは、制御回路１１１が、通信インターフェース１１３を介して、図１Ｂ、図１Ｄ及び／又は図１Ｅの第１のカメラ１７０から、又はより具体的には、後に論じられる図３Ａの第１のカメラ３７０から、第１の組のキャリブレーション画像を受信する。第１の組のキャリブレーション画像は３Ｄキャリブレーションパターン１６０の画像とすることができ、３Ｄキャリブレーションパターン１６０は、複数の面を有する多面体を含むことができ、複数の面上に配置される複数の２Ｄキャリブレーションパターンを含むことができる。複数の面は第１の組の面と、別の面（additional face）とを含むことができる。さらに、第１の組のキャリブレーション画像は、具体的には、多面体の別の面を取り込むことなく、多面体の第１の組の面を取り込むことができ、多面体の第１の組の面上にそれぞれ配置される第１の組の２Ｄキャリブレーションパターンを取り込むことができる。
【００３６】
例えば、図３Ａは、図２の方法２００を実行するための例示的な環境を示し、より具体的には、図１Ａ〜図１Ｅの走査システム１００の一実施形態である走査システム３００を示す。この実施形態において、走査システム３００は、図１Ｂ〜図１Ｅのコンピューティングシステム１１０を含む。走査システム３００は、図１Ｂ及び図１Ｄ〜図１Ｅのそれぞれプラットフォーム１５０、アクチュエーター１４０、第１のカメラ１７０、第１の光源１２０、第２のカメラ１８０及び第２の光源１３０のそれぞれの実施形態とすることができる、プラットフォーム３５０、プラットフォーム３５０を作動させるように構成されるアクチュエーター３４０、第１のカメラ３７０、第１の光源３２０、第２のカメラ３８０及び第２の光源３３０を更に含む。一実施形態において、プラットフォーム３５０は第１の表面３５２と、第１の表面３５２の反対に面する第２の表面３５４とを有し、第１のカメラ３７０と第２のカメラ３８０との間に配置される。図３Ａに示されるように、第１のカメラ３７０及び第１の光源３２０は、プラットフォーム３５０の第１の表面３５２に隣接して配置することができ、第１の表面３５２は第１のカメラ３７０とプラットフォーム３５０の第２の表面３５４（例えば、底面）との間に配置され、第１の光源３２０と第２の表面３５４との間に配置される。第１のカメラ３７０及び第１の光源３２０は、プラットフォーム３５０の第１の表面３５２に面している（例えば、向ける）ことができる。一例において、第１の表面３５２は、プラットフォーム３５０の上面とすることができ、第１の光源及び第１のカメラ３７０は第１の表面３５２の上方にわたって配置することができる。
【００３７】
図３Ａに更に示されるように、第２のカメラ３８０及び第２の光源３３０はプラットフォーム３５０の第２の表面３５４（例えば、底面）に隣接して配置することができ、第２の表面３５４は第２のカメラ３８０とプラットフォーム３５０の第１の表面３５２との間に配置され、第２の光源３３０と第１の表面３５２との間に配置される。第２のカメラ３８０及び第２の光源３３０はプラットフォーム３５０の第２の表面３５４に面している（例えば、向ける）ことができる。一例において、第２の表面３５４はプラットフォーム３５０の底面３５４とすることができ、第２の光源３３０及び第２のカメラ３８０は第２の表面３５４の下方にわたって配置することができる。一実施形態において、第１のカメラ３７０及び第２のカメラ３８０はそれぞれ、それぞれの画像センサー（例えば、電荷結合ダイオード（charge-coupled diode）すなわちＣＣＤセンサー）を有することができる。そのような実施形態において、第１のカメラ３７０／第２のカメラ３８０のそれぞれの画像センサーが特定の表面に面しているとき、第１のカメラ３７０／第２のカメラ３８０は、その表面に向けられると見なすことができる。より具体的な例として、第１のカメラ３７０がプラットフォーム３５０の第１の表面３５２の上方にわたって配置され、第１の表面３５２に向けられる場合には、第１の表面３５２から反射するか、又は第１の表面３５２上に配置される物体から反射する光が、第１のカメラ３７０の画像センサーに直接達することができる。この例において、プラットフォーム３５０は透明とすることができ、光が、物体の底面から反射した後に、プラットフォーム３５０を通り抜けることができる。第２のカメラ３８０が第２の表面３５４の下方にわたって配置され、第２の表面３５４に向けられる場合には、物体の底面から反射する光が、第２のカメラ３８０の画像センサーに直接達することができる。
【００３８】
図３Ａの実施形態において、プラットフォーム３５０は円形のガラス板又は他のタイプの透明なプラットフォームとすることができ、アクチュエーター３４０は、中心軸３５６の周りでプラットフォーム３５０を回転させるように構成することができる。中心軸３５６は、プラットフォーム３５０の中心３５５を通り抜け、プラットフォーム３５０の第１の表面３５２又は第２の表面３５４に対して垂直である軸とすることができる。図３Ａの例において、プラットフォーム３５０の中心３５５は、プラットフォーム３５０の第１の表面３５２の中心を指すことができる。図３Ａに更に示されるように、アクチュエーター３４０は、ローター３４２と、モーターシャフト３４４と、モーターシャフト３４４に取り付けられる回転伝達部３４６とを含むモーターとすることができる。ローター３４２は、モーターシャフト３４４を回転させるように構成することができ、モーターシャフト３４４は回転伝達部３４６を回転させるように構成することができる。回転伝達部３４６は、プラットフォーム３５０をプラットフォーム３５０の中心軸３５６の周りで回転させるために、プラットフォーム３５０にトルクを加えるように構成することができる。一例において、回転伝達部３４６は、回転をローター３４２及びモーターシャフト３４４からプラットフォーム３５０に伝達するように構成されるギア又はギアボックスとすることができる。別の例において、回転伝達部３４６が回転するときにプラットフォーム３５０を回転させるだけの十分な摩擦で、回転伝達部３４６はプラットフォーム３５０の周縁部と接触することができる。一実施形態において、ローター３４２はコンピューティングシステム１１０によって制御することができ、コンピューティングシステム１１０は、ローター３４２に駆動信号又は他の形の動作コマンドを通信するように構成することができる。図３Ａに更に示されるように、第１のカメラ３７０は、プラットフォーム３５０の第１の表面３５２に対して傾斜を有することができる。例えば、第１のカメラ３７０は、その光軸３７１がプラットフォーム３５０の中心軸３５６と平行でないような向きを有することができる。この例において、第２のカメラ３８０は、プラットフォーム３５０の第２の表面３５４に対して傾斜を有しないことができる。例えば、第２のカメラ３８０は、その光軸３８１がプラットフォームの中心軸３５６と平行であるような向きを有することができる。
【００３９】
上記で言及されたように、図２のステップ２０１は、図１Ｅの３Ｄキャリブレーションパターン１６０の第１の組のキャリブレーション画像を受信することを伴うことができる。図３Ａは、３Ｄキャリブレーションパターン１６０の一実施形態である３Ｄキャリブレーションパターン３６０を示し、３Ｄキャリブレーションパターン３６０は、プラットフォーム３５０の第１の表面３５２上に配置される。一実施形態において、３Ｄキャリブレーションパターン３６０は、複数の面を有する多面体３６２を含む。図３Ａの例において、多面体３６２は、全部で６つの面を有する、立方体、又はより一般的には、直方体である。別の例では、３Ｄキャリブレーションパターン３６０は、四面体又は十二面体等の異なる多面体を含むことができる。図３Ｂ及び図３Ｃは、図３Ａの多面体３６２の複数の面を示す。より具体的には、図３Ｂは、３Ｄキャリブレーションパターン３６０の多面体３６２の３つの面、すなわち、面３６２Ａ、３６２Ｂ及び３６２Ｃを識別する。図３Ｃは、図３Ｂにおいて視認できない、多面体３６２の３つの残りの面、すなわち、面３６２Ｄ、３６２Ｅ及び３６２Ｆを示す。
【００４０】
一実施形態において、多面体３６２は規定寸法（所定の寸法とも呼ばれる）を有することができ、規定寸法は、例えば、多面体３６２の形状及び／又はサイズの規定値とすることができる。例えば、図３Ａの多面体３６２は、立方体の辺ごとに規定寸法「ｄ」（例えば、５０ｍｍ）と実質的に一致するように厳しい公差で製造された立方体とすることができる。製造工程は、規定寸法からの偏差量を、例えば、±０．５ｍｍ以下に制限した高い精度を有していた場合がある。場合によっては、図３Ａのコンピューティングシステム１１０は、規定寸法の値を記憶することができるか、又は規定寸法の値を（例えば、リモートデータベースから）引き出すことができ、その値を用いて、後に更に詳細に論じられるように、カメラキャリブレーションを実行することができる。
【００４１】
一実施形態において、図３Ｂ及び図３Ｃの多面体３６２の面は第１の組の面３６２Ａ〜３６２Ｅと、別の面３６２Ｆとに分割することができ、別の面３６２Ｆは第１の組の面３６２Ａ〜３６２Ｅの一部ではない。別の面３６２Ｆは多面体３６２の第２の組の１つ以上の面の一部と見なすこともでき、第２の組の１つ以上の面（例えば、３６２Ｆ）は、第１の組の面３６２Ａ〜３６２Ｅと共通の面を有しない。
【００４２】
一実施形態において、第１の組の面３６２Ａ〜３６２Ｅは、（図３Ａの）第１のカメラ３７０から視認できるか、又は第１のカメラ３７０から視認できる位置までプラットフォーム３５０によって回転させることができる多面体３６２の面とすることができる。例えば、第１の組の面３６２Ａ〜３６２Ｅは、多面体３６２の上面と、４つの側面とを含むことができる。一実施形態において、第１の組の面３６２Ａ〜３６２Ｅは、（図３Ａの）第２のカメラ３８０から視認できない多面体３６２の面とすることができる。状況によっては、第１の組の面３６２Ａ〜３６２Ｅは、多面体３６２がプラットフォーム３５０によって動かされるときでも、第２のカメラ３８０から決して視認できない場合がある。そのような状況は、例えば、第２のカメラ３８０が、第１の組の面３６２Ａ〜３６２Ｅから反射する任意の光を途中で取り込むか、又は別の方法で収集するのを防ぐ位置及び／又は向きを有するときに生じる場合がある。例えば、これらの状況は、第２のカメラ３８０がプラットフォーム３５０の第２の表面３５４の非常に近くに位置し、プラットフォーム３５０の第２の表面３５４に対する傾斜を有しないときに生じる場合がある。
【００４３】
一実施形態において、別の面３６２Ｆは、第１のカメラ３７０から決して視認できず、第２のカメラ３８０から視認できる多面体３６２の面とすることができる。例えば、別の面（additional face）３６２Ｆは、図３Ａのプラットフォーム３５０（例えば、プラットフォーム３５０の第１の表面３５２）と直接接触している多面体３６２の底面とすることができ、一方、第１の組の面３６２Ａ〜３６２Ｅは、プラットフォーム３５０と直接接触していない多面体３６２の面とすることができる。多面体３６２が立方体である図３Ｂ及び図３Ｃの実施形態において、第１の組の面３６２Ａ〜３６２Ｅは厳密に５つの面を有することができ、別の面３６２Ｆは、第２のカメラ３８０から視認することができ、第１のカメラ３７０から視認できないただ１つの、別の面３６２Ｆとすることができる。多面体３６２が立方体とは異なる（例えば、多面体３６２が十二面体である）別の実施形態では、多面体３６２の面は、第１のカメラ３７０から視認できる第１の組の面と、第２のカメラ３８０から視認できるが、第１のカメラ３７０から視認できない複数の別の面（第２の組の面とも呼ばれる）とに分割することができる。
【００４４】
図２のステップ２０１を再び参照すると、そのステップにおける３Ｄキャリブレーションパターン１６０／３６０は、３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、３６２）の複数の面上にそれぞれ配置される複数の２Ｄキャリブレーションパターンを更に含むことができる。図３Ｄ〜図３Ｆは、３Ｄキャリブレーションパターン３６０の２Ｄキャリブレーションパターンを示す。より具体的には、図３Ｄは多面体３６２の面３６２Ａ、３６２Ｂ及び３６２Ｃ上にそれぞれ配置される、２Ｄキャリブレーションパターン３６６Ａ、３６６Ｂ及び３６６Ｃを示す。図３Ｅは、図３Ｄ内の矢印Ａに沿って視認されるような多面体３６２を示す。より具体的には、図３Ｅは、多面体３６２の面３６２Ｂ、３６２Ｅ及び３６２Ｆ上にそれぞれ配置される２Ｄキャリブレーションパターン３６６Ｂ、３６６Ｅ及び３６６Ｆを示す。図３Ｆは、図３Ｄ内の矢印Ｂに沿って視認されるような多面体３６２を表す。より具体的には、図３Ｆは、多面体３６２の面３６２Ａ、３６２Ｄ及び３６２Ｅ上にそれぞれ配置される２Ｄキャリブレーションパターン３６６Ａ、３６６Ｄ及び３６６Ｅを示す。
【００４５】
一実施形態において、図３Ｄ〜図３Ｆの２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆは、第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅと、別の（additional）２Ｄキャリブレーションパターン３６６Ｆとに分割することができ、第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅは多面体３６２の第１の組の面３６２Ａ〜３６２Ｅ上にそれぞれ配置され、別の２Ｄキャリブレーションパターン３６６Ｆは多面体３６２の別の面３６２Ｆ上に配置される。別の２Ｄキャリブレーションパターン３６６Ｆは、第２の組の１つ以上の２Ｄキャリブレーションパターンの一部と見なすこともでき、第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅと、第２の組の１つ以上の２Ｄキャリブレーションパターン（例えば、３６６Ｆ）との間に共通の２Ｄキャリブレーションパターンは存在しない。一実施形態において、第２の組の１つ以上の２Ｄキャリブレーションパターンは、第１のカメラ３７０から視認できないキャリブレーションパターン（複数の場合もある）を含むことができる。上記の実施形態において、又は別の実施形態において、第２の組の１つ以上の２Ｄキャリブレーションパターンは、第２のカメラ３８０から視認できるキャリブレーションパターン（複数の場合もある）を含むことができる。一実施形態において、第２の組の１つ以上の２Ｄキャリブレーションパターンは２Ｄキャリブレーションパターン３６６Ｆのみを含む。このシナリオは、例えば、第２のカメラ３８０及び３Ｄキャリブレーションパターン３６０の両方がプラットフォーム３５０の中心に位置するときに生じる場合がある。別の実施形態において、第２の組の１つ以上の２Ｄキャリブレーションパターンは２つ以上の２Ｄキャリブレーションパターンを含む。
【００４６】
一実施形態において、３Ｄキャリブレーションパターン３６０の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆは、多面体３６２のそれぞれの面３６２Ａ〜３６２Ｆ上に固定されるようにして配置することができる。例えば、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆはそれぞれ、多面体３６２のそれぞれの面に接着されるか、又は別の方法で取り付けられるフラットシート（例えば、ステッカー）又は平板とすることができる。一実施形態において、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆの１つ以上は、多面体３６２のそれぞれの面３６２Ａ〜３６２Ｆ上に塗布される場合がある。一実施形態において、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆのいずれかは、多面体３６２のそれぞれの面３６２Ａ〜３６２Ｆの中心に位置し、及び／又はそれぞれの面に対して位置合わせされる場合があるか（図３Ｄ及び図３Ｅの２Ｄキャリブレーションパターン３６６Ｂに関して表される）、又は多面体３６２のそれぞれの面３６２Ａ〜３６２Ｆの中心から外れて位置し、及び／又はそれぞれの面と位置合わせされない場合がある（図３Ｆの２Ｄキャリブレーションパターン３６６Ｄに関して示される）。
【００４７】
一実施形態において、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆの各２Ｄキャリブレーションパターンは、ドットのアレイ等の複数のパターン要素を有する場合があり、パターン要素はそれぞれ、２Ｄキャリブレーションパターンの座標系及び／又は３Ｄキャリブレーションパターン３６０の座標系において規定された位置（所定の位置とも呼ばれる）を有することができる。図３Ｇは、プラットフォーム３５０の座標系、第１のカメラ３７０の座標系及び第２のカメラ３８０の座標系だけでなく、３Ｄキャリブレーションパターン３６０の座標系も示す。一実施形態において、３Ｄキャリブレーションパターン３６０の座標系は、多面体３６２の辺と位置合わせされる座標軸
【数１】
0006737522.tif 000002
を有することができる。３Ｄキャリブレーションパターン３６０の座標系の原点は、多面体３６２内の或る位置（例えば、多面体３６２の中心）、多面体３６２の表面上の或る位置（例えば、面３６２Ａの中心）、又は任意の他の位置とすることができる。一実施形態において、図３Ｇにおいて表されるように、プラットフォーム３５０の座標系は、プラットフォーム３５０の中心軸３５６（図３Ａを参照）と位置合わせされる座標軸
【数２】
0006737522.tif 000003
を有することができ、プラットフォーム３５０の中心３５５に位置する原点を有することができる。場合によっては、第１のカメラ３７０又は第２のカメラ３８０の座標系が、カメラ３７０／３８０の任意のレンズの光軸と位置合わせされる座標軸（第１のカメラ３７０に関して、
【数３】
0006737522.tif 000004
及び第２のカメラ３８０に関して、
【数４】
0006737522.tif 000005
）を有することができ、カメラ３７０／３８０のレンズの中心、カメラ３７０／３８０の画像センサーの中心若しくは角、又は何らかの他の位置に位置する原点を有することができる。図３Ｇは、リンク点（link point）３５７に関する座標系を更に示し、その座標系は座標軸
【数５】
0006737522.tif 000006
によって規定される。この座標系は、後に更に詳細に論じられる。
【００４８】
一実施形態において、３Ｄキャリブレーションパターン３６０の各２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆは、自らの座標系を有することができる。例えば、図３Ｈはキャリブレーションパターン３６６Ａに関する第１の座標系を示し、第１の座標系は座標軸
【数６】
0006737522.tif 000007
によって規定される。その図は、キャリブレーションパターン３６６Ｂに関する第２の座標系及びキャリブレーションパターン３６６Ｃに関する第３の座標系を更に示す。第２の座標系は座標軸
【数７】
0006737522.tif 000008
によって規定され、一方、第３の座標系は座標軸
【数８】
0006737522.tif 000009
によって規定される。キャリブレーションパターンは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第１６／２９５，９４０号において更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【００４９】
図２のステップ２０１を再び参照すると、そのステップは、制御回路１１１が、図１Ｂ又は図３Ａの第１のカメラ１７０／３７０から第１の組のキャリブレーション画像を受信することを伴うことができる。一実施形態において、３Ｄキャリブレーションパターン１６０／３６０が、第１のカメラ１７０／３７０に対して異なる位置及び／又は向きに動かされる間に、第１のカメラ１７０／３７０によって第１の組のキャリブレーション画像が取得されるか、又は別の方法で生成される。場合によっては、プラットフォーム１５０／３５０を介してそのような動作を生み出すように、制御回路１１１がアクチュエーター１４０／３４０を制御することができる。例えば、制御回路１１１は、（図１Ｃの）通信インターフェース１１３を介して、アクチュエーター１４０／３４０に１つ以上のモーターコマンドを出力することができる。１つ以上のモーターコマンドは、アクチュエーター１４０／３４０にプラットフォーム１５０／３５０を回転させることができ、これにより、第１のカメラ１７０／３７０に対して複数の向きを有するように、３Ｄキャリブレーションパターン１６０／３６０が動く。この例において、ステップ２０１の第１の組のキャリブレーション画像はそれぞれ、３Ｄキャリブレーションパターン１６０／３６０が第１のカメラ１７０／３７０に対して複数の向きを有するときに生成される。一実施形態において、第１の組のキャリブレーション画像の各キャリブレーション画像は、第１のカメラ１７０／３７０に対する３Ｄキャリブレーションパターン１６０／３６０の異なるそれぞれの位置及び／又は向きに対応することができる。言い換えると、３Ｄキャリブレーションパターン１６０／３６０が第１のカメラ１７０／３７０に対して種々の位置及び／又は向きを有するように動かされるにつれて、３Ｄキャリブレーションパターン１６０／３６０が異なる位置及び／又は向きにある間に、第１のカメラ１７０／３７０が３Ｄキャリブレーションパターン１６０／３６０のそれぞれのキャリブレーション画像を生成する。これらのキャリブレーション画像は第１の組のキャリブレーション画像を形成することができ、第１の組のキャリブレーション画像は、その後、第１のカメラ３７０からコンピューティングシステム１１０の制御回路１１１に送信することができる。
【００５０】
一実施形態において、第１の組のキャリブレーション画像の各キャリブレーション画像は、多面体３６２の少なくとも２つの面（例えば、第１の組の面３６２Ａ〜３６２Ｅ）と、第１の組の２Ｄキャリブレーションパターンの少なくとも２つの２Ｄキャリブレーションパターン（例えば、図３Ｄ〜図３Ｆの第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅ）とを取り込むことができる。例えば、第１の組のキャリブレーション画像はそれぞれ、図３Ａの第１のカメラ３７０によって生成することができ、第１のカメラ３７０は、３Ｄキャリブレーションパターン３６０に対して、３Ｄキャリブレーションパターン３６０の少なくとも２つの２Ｄキャリブレーションパターンを第１のカメラ３７０から常に視認できるようにする位置及び向きを有することができる。図４Ａは、図３Ａの３Ｄキャリブレーションパターン３６０の第１の組のキャリブレーション画像のうちの１つである例示的なキャリブレーション画像５００を示す。図４Ａの例示的なキャリブレーション画像５００は、図３Ａ及び図３Ｄの多面体３６２の図３Ｂ及び図３Ｄの２Ｄキャリブレーションパターン３６６Ａ及び面３６２Ａを取り込む、第１の画像部分５６６Ａを有することができる。キャリブレーション画像５００は、図３Ｂ及び図３Ｄ両方の２Ｄキャリブレーションパターン３６６Ｂ及び面３６２Ｂを取り込む第２の画像部分５６６Ｂを更に有することができ、図３Ｂ及び図３Ｄ両方の２Ｄキャリブレーションパターン３６６Ｃ及び面３６２Ｃを取り込む第３の画像部分５６６Ｃを更に有することができる。一実施形態において、第１の組のキャリブレーション画像は、３Ｄキャリブレーションパターン３６０の多面体３６２の別の面３６２Ｆを取り込まない。
【００５１】
一実施形態において、図１Ｃ又は図３Ａの制御回路１１１は、（例えば、図２のステップ２０１の一部として、又はステップ２０１後に）、第１の組のキャリブレーション画像の各キャリブレーション画像から、それぞれの２Ｄキャリブレーションパターンを取り込む画像部分（例えば、５６６Ａ、５６６Ｂ、５６６Ｃ）を抽出することができる。例えば、制御回路１１１は、第１の組のキャリブレーション画像のキャリブレーション画像ごとに、キャリブレーション画像から、第１の２Ｄキャリブレーションパターンを取り込む第１の画像部分を抽出することができ、そのキャリブレーション画像は、少なくとも２つの２Ｄキャリブレーションパターンを取り込むことができる。一例において、図４Ａは、制御回路１１１が、キャリブレーション画像５００から（図３Ｄの）２Ｄキャリブレーションパターン３６６Ａを取り込む画像部分５６６Ａを抽出することを示す。制御回路１１１は、第１の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ａ）のパターン要素を記述する情報を更に記憶することができる。例えば、パターン要素がドットである場合には、記憶される情報は、ドットがキャリブレーション画像５００内に現れるそれぞれの位置のピクセル座標［ｕ  ｖ］Ｔとすることができる。
【００５２】
一実施形態において、制御回路１１１は、図４Ａのキャリブレーション画像５００内の画像部分５６６Ｂ及び５６６Ｃ等の、キャリブレーション画像内の他の２Ｄキャリブレーションパターンを表す他の画像部分を抽出することができる。画像部分５６６Ｂは２Ｄキャリブレーションパターン３６６Ｂを取り込むことができ、画像部分５６６Ｃは２Ｄキャリブレーションパターン３６６Ｃを取り込むことができる。場合によっては、制御回路１１１は、他の画像部分の検出を助長するために、そして、第１の画像部分の任意の部分が他の画像部分の一部であると誤って識別される可能性を低減するために、抽出された第１の画像部分をキャリブレーション画像（例えば、キャリブレーション画像５００）から除去することができる。例えば、制御回路１１１は、キャリブレーション画像（例えば、キャリブレーション画像５００）から第１の画像部分（例えば、画像部分５６６Ａ）を除去することによって、更新されたキャリブレーション画像を生成することができる。場合によっては、除去は第１の画像部分を黒塗りすることによって行うことができる。一例として、図４Ｂは更新されたキャリブレーション画像５３０を示し、第１の画像部分５６６Ａを、第１の画像部分５６６Ａに対応する第１の黒塗りされた部分５３４に置き換えるように、第１の画像部分５６６Ａが黒塗りされる。場合によっては、第１の画像部分５６６Ａの黒塗りは、第１の画像部分５６６Ａの全てのピクセルを、所定の強度値（例えば、０）を有するように設定することを伴うことができる。
【００５３】
一実施形態において、制御回路１１１は、更新されたキャリブレーション画像（例えば、図４Ｂの更新されたキャリブレーション画像５３０）から、第２の２Ｄキャリブレーションパターン（例えば、図３Ｄのキャリブレーションパターン３６６Ｃ）を取り込む、別の画像部分とも呼ばれる第２の画像部分（例えば、画像部分５６６Ｃ）を抽出することができ、第２の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶することができる。記憶された情報は、例えば、第２の２Ｄキャリブレーションパターンのパターン要素が更新されたキャリブレーション画像（例えば、更新されたキャリブレーション画像５３０）内に現れるそれぞれの位置のピクセル座標［ｕ  ｖ］Ｔを含むことができる。
【００５４】
一実施形態において、制御回路１１１は、そのような画像部分のうちの１つを除く全ての画像部分がキャリブレーション画像５００から除去されるまで、２Ｄキャリブレーションパターンを取り込む第２の画像部分（例えば、５６６Ｃ）及び他の画像部分を除去する（黒塗りする）ことができる。例えば、図４Ｃは、更新されたキャリブレーション画像５３０から第２の画像部分５５６Ｃを更に除去することによって、制御回路１１１が別の更新されたキャリブレーション画像５６０を生成することを示す。除去は、更新されたキャリブレーション画像５６０内の第２の画像部分５６６Ｃを、第２の画像部分５６６Ｃに対応する第２の黒塗りされた部分５３５に置き換えることによって実行することができる。制御回路１１１は、別の更新されたキャリブレーション画像５６０から、図４Ａのキャリブレーション画像５００内に表される３つの２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｃのうちの第３の２Ｄキャリブレーションパターン３６６Ｂを取り込む第３の画像部分５６６Ｂを抽出することができる。制御回路１１１は、第３の２Ｄキャリブレーションパターン３６６Ｂのパターン要素を記述する情報を更に記憶することができる。
【００５５】
一実施形態において、制御回路１１１は、図２のステップ２０１において受信された第１の組のキャリブレーション画像に基づいて、図１Ｂ、図１Ｄ、図１Ｅ及び／又は図３Ａの第１のカメラ１７０／３７０のキャリブレーションパラメーターの推定値を特定することができる。例えば、この特定は、第１の組のキャリブレーション画像によって取り込まれた第１の２Ｄキャリブレーションパターンのパターン要素及び第２の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報に基づくことができる。場合によっては、キャリブレーションパラメーターは、第１のカメラ１７０／３７０の画像センサー上への画像射影を記述する射影行列Ｋ等の内部キャリブレーションパラメーター、又はレンズひずみ若しくは第１のカメラ１７０／３７０が受ける任意の他の形のひずみを記述するひずみパラメーターとすることができる。そのような例において、特定は、制御回路１１１によって実行される内部カメラキャリブレーションの一部とすることができる。場合によっては、キャリブレーションパラメーターは、第１のカメラ１７０／３７０と、３Ｄキャリブレーションパターン１６０／３６０の特定の２Ｄキャリブレーションパターンとの間の空間的関係、又はより一般的には、第１のカメラ１７０／３７０と、図１Ｅ及び／又は図３Ａ〜図３Ｆの３Ｄキャリブレーションパターン１６０／３６０との間の空間的関係を記述する変換関数とすることができる。例えば、変換関数は、カメラＮ（例えば、第１のカメラ３７０）の座標系と、２ＤキャリブレーションパターンＭ（例えば、第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅのいずれか）の座標系との間の線形変換（例えば、回転及び並進）を記述する行列
【数９】
0006737522.tif 000010
とすることができる。より具体的な例として、制御回路１１１は、第１のカメラ１７０／３７０に関する射影行列ＫＣａｍｅｒａ１の推定行列、第１のカメラ１７０／３７０に関する複数のひずみパラメーターのそれぞれの推定値、及び行列
【数１０】
0006737522.tif 000011
を特定することができる。上記の例において、Ｃａｍｅｒａ１は第１のカメラ３７０を指すことができ、２ＤＰａｔｔｅｒｎ１〜２ＤＰａｔｔｅｒｎ５は、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅをそれぞれ指すことができる。一実施形態において、制御回路１１１は、３Ｄキャリブレーションパターン１６０／３６０の第１の組の２Ｄキャリブレーションパターン（例えば、３６６Ａ〜３６６Ｅ）のパターン要素（例えば、ドット）を記述する記憶された情報に基づいて、内部キャリブレーションパラメーターの推定値及び変換関数の推定関数を特定することができる。例えば、特定は、パターン要素が第１の組のキャリブレーション画像内に現れる位置を記述するピクセル座標に基づくことができ、３Ｄキャリブレーションパターン１６０／３６０の座標系内、又は２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｆのうちの１つの２Ｄキャリブレーションパターンの座標系内のパターン要素に関する規定された位置に基づくことができる。特定は、例えば、Zhengyou Zhangによる「A Flexible New Technique for Camera Calibration」（Technical Report MSR-TR-98-71）に記述されているパースペクティブｎポイント（Perspective-n-Point）アルゴリズム（Zhangのアルゴリズムとも呼ばれる）、任意の他のアルゴリズム、又はその組み合わせを使用することができる。キャリブレーション画像に基づいて、キャリブレーションパラメーターの推定値を特定することは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第１６／２９５，９４０号において更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【００５６】
一実施形態において、推定されるキャリブレーションパラメーターは、第１のカメラ１７０／３７０と図１Ｂ、図１Ｄ、図１Ｅ及び／又は図３Ａのプラットフォーム１５０／３５０との間の空間的関係、又はより具体的には、第１のカメラ１７０／３７０と、プラットフォーム１５０／３５０の図３Ａの中心３５５との間の空間的関係を記述する変換関数とすることができる。例えば、変換関数は、第１のカメラ１７０／３７０の座標系と、プラットフォーム１５０／３５０の座標系との間の線形変換を記述する行列
【数１１】
0006737522.tif 000012
とすることができる。場合によっては、プラットフォーム１５０／３５０の中心３５５は、或る世界点（world point）として取り扱うことができ、
【数１２】
0006737522.tif 000013
は、第１のカメラ１７０／３７０とその世界点との間の関係を記述することができる。場合によっては、キャリブレーションパラメーターの推定値を特定することは、ハンドアイキャリブレーション段階（hand-eye calibration phase）の一部とすることができる。例えば、ハンドアイキャリブレーション段階は、式：
【数１３】
0006737522.tif 000014
に基づいて、
【数１４】
0006737522.tif 000015
を解くことを伴うことができる。
【００５７】
この例において、
【数１５】
0006737522.tif 000016
は、プラットフォーム１５０／３５０の座標系と、図３Ｇのリンク点３５７等のリンク点の座標系との間の空間的関係を記述する変換関数とすることができる。一実施形態において、リンク点３５７は、プラットフォーム３５０の中心３５５以外の、プラットフォーム３５０上の任意の点とすることができる。場合によっては、リンク点３５７は、３Ｄキャリブレーションパターン３６０に対して静止している点とすることができる。一実施形態において、リンク点３５７は、３Ｄキャリブレーションパターン３６０と接触しているプラットフォーム３５０上の任意の点とすることができる。この例において、
【数１６】
0006737522.tif 000017
は、（図３Ａの）アクチュエーター３４０がプラットフォーム３５０を回転させるか、又は別の方法で作動させる量に基づいて、制御回路１１１によって特定することができる。例えば、
【数１７】
0006737522.tif 000018
は、規定された初期位置に対してリンク点３５７が受ける回転量（例えば、６０度又は１００度の回転）を記述する回転行列を含むことができる。
【００５８】
上記の例において、
【数１８】
0006737522.tif 000019
は、３Ｄキャリブレーションパターン１６０／３６０の座標系と、第１のカメラ１７０／３７０の座標系との間の空間的関係を記述する行列とすることができ、パースペクティブｎポイントアルゴリズム又はZhangのアルゴリズム等の、上記のアルゴリズムのうちの１つに基づいて特定できた場合がある。さらに、
【数１９】
0006737522.tif 000020
は３Ｄキャリブレーションパターン１６０／３６０の座標系とリンク点３５７の座標系との間の空間的関係を記述する行列とすることができ、一方、
【数２０】
0006737522.tif 000021
は、第１のカメラ１７０／３７０の座標系とプラットフォーム１５０／３５０の座標系との間の空間的関係を記述する行列とすることができる。上記の例は、式１に基づいて、
【数２１】
0006737522.tif 000022
及び
【数２２】
0006737522.tif 000023
を解くハンドアイキャリブレーション演算を伴うことができる。ハンドアイキャリブレーション及び式１を解くことは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第１６／２９５，９４０号に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【００５９】
図２に戻ると、方法２００は、ステップ２０３を更に含むことができ、そのステップでは、制御回路１１１が、（図１Ｃの）通信インターフェース１１３を介して、第２のカメラ１８０／３８０から第２の組の１つ以上のキャリブレーション画像を受信することができる。第２の組の１つ以上のキャリブレーション画像は、図３Ｂ〜図３Ｆの多面体３６２の図３Ｃ／図３Ｅの面３６２Ｆ（例えば、底面）等の、多面体の別の面を取り込むことができる。別の面（例えば、面３６２Ｆ）は、第２のカメラ１８０／３８０が向けられる面とすることができ、及び／又はプラットフォーム１５０／３５０（例えば、プラットフォーム３５０の第１の表面３５２）と直接接触している多面体３６２の面とすることができる。さらに、第２の組の１つ以上のキャリブレーション画像は、別の面上に配置される別の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ｆ）を取り込むことができるか、又は別の面の輪郭（別の面の外形又はシルエットとも呼ばれる）を取り込むことができる。
【００６０】
一実施形態において、第２の組の１つ以上のキャリブレーション画像は、異なるそれぞれの照明条件で第２のカメラ１８０／３８０によって取得された少なくとも一対のキャリブレーション画像を含むことができる。少なくとも一対のキャリブレーション画像は、第１の照明条件で第２のカメラ１８０／３８０によって取得される第１のキャリブレーション画像と、第１の照明条件とは異なる第２の照明条件で第２のカメラ１８０／３８０によって取得される第２のキャリブレーション画像とを含むことができ、第１のキャリブレーション画像及び第２のキャリブレーション画像はいずれも、プラットフォーム１５０／３５０上の３Ｄキャリブレーションパターン１６０／３６０の同じ位置及び／又は姿勢に関して生成される。より具体的には、３Ｄキャリブレーションパターン１６０／３６０は、少なくとも一対のキャリブレーション画像の第１のキャリブレーション画像が取得される時点と、少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像が取得される時点との間で、第２のカメラ１８０／３８０に対して静止したままであった場合がある。場合によっては、第２の組の１つ以上のキャリブレーション画像は、複数対のキャリブレーション画像を含むことができ、各対が、第１の照明条件で第２のカメラ１８０／３８０によって取得されるそれぞれの第１のキャリブレーション画像と、第２の照明条件で第２のカメラ１８０／３８０によって取得されるそれぞれの第２のキャリブレーション画像とを含む。
【００６１】
一実施形態において、第１の照明条件は、第２のカメラ１８０／３８０から見て、３Ｄキャリブレーションパターン１６０／３６０が後方から照明されるバックライト照明条件である。バックライト照明条件は、例えば、第１の光源１２０／３２０を点灯させることによって作り出すことができる。３Ｄキャリブレーションパターン１６０／３６０は第２のカメラ１８０／３８０と第１の光源１２０／３２０との間に配置されるので、第２のカメラ１８０／３８０から見て、３Ｄキャリブレーションパターン１６０／３６０が後方から照明されると見なすことができる。そのような実施形態では、少なくとも一対のキャリブレーション画像の第１のキャリブレーション画像は、その対のそれぞれのバックライトキャリブレーション画像と呼ばれる場合がある。場合によっては、第１の照明条件は、第２の光源１３０／３３０が消灯することを更に伴うことができる。場合によっては、後に更に詳細に論じられるように、バックライトキャリブレーション画像は、３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、３６２）の別の面（例えば、３６２Ｆ）のシルエットを取り込むことができる。
【００６２】
一実施形態において、第２の照明条件は、第２のカメラ１８０／３８０から見て、３Ｄキャリブレーションパターン１６０／３６０が前方から照明されるフロントライト照明条件である。フロントライト照明条件は、例えば、第２の光源１３０／３３０を点灯させることによって作り出すことができる。第２の光源１３０／３３０は、３Ｄキャリブレーションパターン１６０／３６０の多面体の別の面（例えば、３６２Ｆ）（又は第２のカメラ１８０／３８０から視認できる多面体の任意の他の面）を直接照明することができるので、第２のカメラ１８０／３８０から見て、３Ｄキャリブレーションパターン１６０／３６０は前方から照明されると見なすことができる。そのような実施形態では、少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像は、その対のそれぞれのフロントライトキャリブレーション画像と呼ばれる場合がある。場合によっては、第２の照明条件は、第１の光源１２０／３２０を消灯させることを更に伴うことができる。場合によっては、後に更に詳細に論じられるように、フロントライトキャリブレーション画像は、３Ｄキャリブレーションパターン１６０／３６０の多面体の別の面（例えば、３６２Ｆ）上に配置される２Ｄキャリブレーションパターン（例えば、３６６Ｆ）を取り込むことができる。一実施形態において、第２の組の１つ以上のキャリブレーション画像は複数対の画像を含むことができ、各対がそれぞれのバックライトキャリブレーション画像及びそれぞれのフロントライトキャリブレーション画像を含む。少なくとも一対のキャリブレーション画像の一例として、図５Ａ及び図５Ｂは、第１の照明条件で第２のカメラ１８０／３８０によって取得される第１のキャリブレーション画像４００（例えば、バックライトキャリブレーション画像）と第２の照明条件で第２のカメラ１８０／３８０によって取得される第２のキャリブレーション画像４５０（例えば、フロントライトキャリブレーション画像）との対を示す。
【００６３】
場合によっては、図１Ｂ、図１Ｄ、図１Ｅ及び／又は図３Ａの第２のカメラ１８０／３８０を用いて、その対のそれぞれの第１のキャリブレーション画像４００及びその対のそれぞれの第２のキャリブレーション画像４５０の両方を取得することは、撮像誤差源を補償することができる。例えば、図１Ｄ〜図１Ｅ／図３Ａのプラットフォーム１５０／３５０の透明材料（例えば、ガラス）は、その材料を通って第２のカメラ１８０／３８０まで進む光を曲げるか、又は別の方法でひずませる場合がある。このひずみは撮像誤差源になる場合があり、図１Ｃ／図３Ａの制御回路１１１が、例えば、３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、図３Ａの多面体３６２）の底面角の位置等の図１Ｅ／図３Ａの３Ｄキャリブレーションパターン１６０／３６０の特徴を正確に識別する能力を低下させるおそれがある。２つのキャリブレーション画像４００／４５０は異なる照明条件で取得されるので、場合によっては、その対のそれぞれの第２のキャリブレーション画像４５０（例えば、フロントライトキャリブレーション画像）が、その対のそれぞれの第１のキャリブレーション画像４００（例えば、バックライトキャリブレーション画像）内に存在する場合があるひずみ又は他の撮像誤差を補償するために使用することができる情報を含む場合があり、逆も同様である。例えば、後に更に詳細に論じられるように、制御回路１１１は、第２のカメラ１８０／３８０によって取得される一対のキャリブレーション画像のそれぞれの第１のキャリブレーション画像４００及びそれぞれの第２のキャリブレーション画像４５０の両方を用いて、３Ｄキャリブレーションパターン１６０／３６０の多面体の別の面（例えば、図３Ｅの面３６２Ｆ）の角の位置に関する座標を特定するように構成することができる。
【００６４】
一実施形態において、第２のカメラ１８０／３８０によって取得される一対のキャリブレーション画像のそれぞれの第１のキャリブレーション画像４００は、上記で言及されたように、３Ｄキャリブレーションパターン（例えば、３６０）の多面体（例えば、３６２）の別の面（例えば、３６２Ｆ）のシルエット４１２を取り込むことができ、バックライト照明条件で生成することができる。一例において、バックライト照明条件は、図１Ｂ及び図３Ａの第１の光源１２０／３２０（例えば、上部ＬＥＤ）を点灯させ、図１Ｂ及び図３Ａの第２の光源１３０／３３０（例えば、底部ＬＥＤ）を消灯させることによって作り出すことができる。例えば、制御回路１１１は、第１の光源１２０／３２０を点灯させ、第２の光源１３０／３３０を消灯させるために、図１Ｃの通信インターフェース１１３を介して、第１の光源１２０／３２０及び第２の光源１３０／３３０に第１の組の１つ以上の光源コマンドを出力することができる。第２の光源１３０／３３０は、多面体（例えば、多面体３６２）の別の面（例えば、面３６２Ｆ）の方に、又は別の面に向けることができ、一方、第１の光源１２０／３２０は別の面の後方に（例えば、第２の光源１３０／３３０から見て、又は第２のカメラ１８０／３８０から見て後方に）位置すると見なすことができる。この実施形態では、第１の光源１２０／３２０が点灯し、第２の光源１３０／３３０が消灯している間に、第２のカメラ１８０／３８０に少なくとも一対のキャリブレーション画像のうちの（図５Ａの）第１のキャリブレーション画像４００を生成させるために、通信インターフェース１１３を介して、第２のカメラ１８０／３８０に第１の組の１つ以上のカメラコマンドを更に出力することができ、少なくとも一対のキャリブレーション画像は、第２のカメラ１８０／３８０によって取得されるか、又は別の方法で生成される第２の組の１つ以上のキャリブレーション画像の一部である。上記の実施形態において、第２の光源１３０／３３０は消灯しているので、図１Ｂ又は図３Ａのプラットフォーム１５０／３５０の図１Ｂ、図１Ｄ〜図１Ｅ／図３Ａの第２の表面１５４／３５４（例えば、底面）にも、キャリブレーションパターン１６０／３６０の多面体（例えば、３６２）の別の面（例えば、面３６２Ｆ）にも光は与えられない。したがって、多面体の別の面は、一対のキャリブレーション画像の第１のキャリブレーション画像（例えば、４００）において暗く見える場合がある。さらに、３Ｄキャリブレーションパターン１６０／３６０は、第１の光源１２０／３２０を遮るか、若しくは覆い隠す場合があるか、又はより一般的には、点灯している第１の光源１２０／３２０から、第２のカメラ１８０／３８０を部分的に、又は完全に遮断する場合がある。そのような条件が、３Ｄキャリブレーションパターン１６０／３６０の多面体の別の面（例えば、３６２Ｆ）のシルエット４１２を更に強調することができる。
【００６５】
一実施形態において、図５Ｂの第２のキャリブレーション画像４５０は、上記で論じられたように、フロントライト照明条件の間に生成することができる。一例において、フロントライト照明条件は、図１Ｂ又は図３Ａの第１の光源１２０／３２０（例えば、上部ＬＥＤ）が消灯し、第２の光源１３０／３３０（例えば、底部ＬＥＤ）が点灯するときに作り出すことができる。例えば、制御回路１１１は、通信インターフェース１１３を介して、第１の光源１２０／３２０に、そして第２の光源１３０／３３０を点灯させるために第２の光源１３０／３３０に、第２の組の１つ以上の光源コマンドを出力することができる。場合によっては、第２の組の１つ以上の光源コマンドは、第１の光源１２０／３２０を消灯させることもできる。第２の光源１３０／３３０が点灯しており、第１の光源１２０／３２０が消灯している間に、第２のカメラ１８０／３８０に少なくとも一対のキャリブレーション画像の第２のキャリブレーション画像４５０を生成させるために、制御回路１１１は、通信インターフェース１１３を介して、第２のカメラ１８０／３８０に第２の組の１つ以上のカメラコマンドを更に出力することができ、少なくとも一対のキャリブレーション画像は、第２のカメラ１８０／３８０によって取得される第２の組の１つ以上のキャリブレーション画像の一部である。図５Ｂに示されるように、第２のキャリブレーション画像４５０は、３Ｄキャリブレーションパターン１６０／３６０の複数の２Ｄキャリブレーションパターン（例えば、３６６Ａ〜３６６Ｆ）のうちの別の２Ｄキャリブレーションパターン（例えば、図３Ｅの２Ｄキャリブレーションパターン３６６Ｆ）を取り込む画像部分４６６Ｆを有することができ、別の２Ｄキャリブレーションパターンは、３Ｄキャリブレーションパターン１６０／３６０の多面体の別の面（例えば面３６２Ｆ）上に配置される。
【００６６】
図５Ａ及び図５Ｂは、ステップ２０３における第２の組のキャリブレーション画像が３Ｄキャリブレーションパターンの多面体の別の面（例えば、３６２Ｆ）のみを取り込むことができ、かつ多面体の第１の組の面（例えば、面３６６Ａ〜３６６Ｅ）のいずれも取り込まない実施形態を示す。別の面は、プラットフォーム１５０／３５０と直接接触している面とすることができる。他の実施形態では、第２の組のキャリブレーション画像は、３Ｄキャリブレーションパターンの多面体の第１の組の面のうちの１つ以上（例えば、図３Ｄ及び図３Ｅの面３６６Ｃ又は３６６Ｅ）を取り込むこともできる。例えば、第２のカメラ１８０／３８０は、或る角度をなして第１の組の面のうちの１つ以上を視認し、（別の面３６２Ｆを取り込むことに加えて）第１の組の面の１つ以上を取り込むキャリブレーション画像を生成できる場合がある。しかしながら、第２のカメラ１８０／３８０はプラットフォーム１５０／３５０の透明材料を通して第１の組の面の１つ以上（例えば、面３６２Ｃ）を視認しているので、第２のカメラ１８０／３８０が第１の組の面を正面から視認していない場合に特に、透明材料は、第２の組の１つ以上のキャリブレーション画像における第１の組の面の見え方にひずみを導入する場合がある。したがって、制御回路１１１は、いくつかの実施態様において、第２の組の１つ以上のキャリブレーション画像から、多面体の第１の組の面のいずれか（例えば、面３６２Ｃ、３６２Ｅ）を取り込む画像部分を除去することができる。いくつかの実施態様において、制御回路１１１は、第１の組の面のいずれかを取り込む第２の組の１つ以上のキャリブレーション画像の画像部分を単に無視することができる。
【００６７】
一実施形態において、制御回路１１１は、第２の組の１つ以上のキャリブレーション画像に基づいて、第２のカメラ１８０／３８０に関するキャリブレーションパラメーターの推定値を特定するように構成することができる。例えば、制御回路１１１は、第２のカメラ１８０／３８０に関する、射影行列ＫＣａｍｅｒａ２又はひずみパラメーター等の、内部キャリブレーションパラメーターの推定値を特定するために、第２のカメラ１８０／３８０に関する内部キャリブレーションを実行するように構成することができる。場合によっては、キャリブレーションパラメーターは、変換関数
【数２３】
0006737522.tif 000024
を含むことができ、２ＤＰａｔｔｅｒｎ６は、例えば、別の３Ｄキャリブレーションパターン３６６Ｆを指すことができ、Ｃａｍｅｒａ２は第２のカメラ３８０を指すことができる。一実施形態において、内部キャリブレーションパラメーターの推定値又は
【数２４】
0006737522.tif 000025
の推定関数は、キャリブレーション画像４５０内に、又はそのパターン要素が現れる第２の組の１つ以上のキャリブレーション画像の任意の他のキャリブレーション画像内に現れる、別の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ｆ）のパターン要素（例えば、ドット）に基づいて特定することができる。その推定は、第１のカメラ１７０／３７０の場合の推定と同じようにして実行することができる。
【００６８】
一実施形態において、ステップ２０１の間に第１のカメラ１７０／３７０によって生成される第１の組のキャリブレーション画像はそれぞれ、ステップ２０３の間に第２のカメラ１８０／３８０によって生成される第２の組のキャリブレーション画像の少なくとも１つに対応することができ、逆も同様である。第１の組のキャリブレーション画像のキャリブレーション画像が生成された時点と、第２の組の１つ以上のキャリブレーション画像のキャリブレーション画像が生成された時点との間の期間において、３Ｄキャリブレーションパターン１６０／３６０が、第１のカメラ１７０／３７０に対して、かつ第２のカメラ１８０／３８０に対して静止したままであった場合には、場合によっては、第１の組のキャリブレーション画像のキャリブレーション画像が、第２の組の１つ以上のキャリブレーション画像のキャリブレーション画像に対応すると見なすことができる。両方のキャリブレーション画像に関して、３Ｄキャリブレーションパターン１６０／３６０がプラットフォーム１５０／３５０上で同じ位置及び／又は姿勢にあった間に、２つのキャリブレーション画像が取得されたか、又は別の方法で生成された場合には、場合によっては、第１のカメラ１７０／３７０によって取得されるか、又は別の方法で生成されるキャリブレーション画像は、第２のカメラ１８０／３８０によって取得されるか、又は別の方法で生成されるキャリブレーション画像に対応すると見なすことができる。
【００６９】
図２に戻ると、方法２００はステップ２０５〜２０９を更に含むことができ、それらのステップでは、制御回路１１１が、３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、多面体３６２）の１組の角の座標を特定することができる。制御回路１１１は、第１のカメラ１７０／３７０に対する（例えば、第１のカメラ１７０／３７０の座標系において）これらの角に関する１組の座標を特定し、第２のカメラ１８０／３８０に対する（例えば、第２のカメラ１８０／３８０の座標系において）当該角に関する１組の座標を特定することができる。場合によっては、制御回路１１１は、２組の座標を用いて、第１のカメラ１７０／３７０と第２のカメラ１８０／３８０との間の空間的関係を特定することができる。空間的関係は、第２のカメラ１８０／３８０に対する第１のカメラ１７０／３７０の位置及び／又は向きを記述することができ、逆も同様である。一例において、空間的関係は、行列
【数２５】
0006737522.tif 000026
として表すことができ、その行列は、第１のカメラ１７０／３７０の座標系（Ｃａｍｅｒａ１と表記される）と、第２のカメラ１８０／３８０の座標系（Ｃａｍｅｒａ２と表記される）との間の線形変換を表す。
【００７０】
より具体的には、ステップ２０５において、制御回路１１１は、第１の組の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅ）に基づいて、第１のカメラ１７０／３７０の位置及び向きに対する多面体（例えば、多面体３６２）の別の面（例えば、面３６２Ｆ）の１組のそれぞれの角を表す第１の組の座標を特定することができる。例えば、１組のそれぞれの角は、図３Ｃに表されるような、面３６２Ｆの１組の４つの角３６４ａ〜３６４ｄとすることができる。場合によっては、この１組のそれぞれの角３６４ａ〜３６４ｄは、３Ｄキャリブレーションパターン３６０の多面体３６２の底面角とすることができる。場合によっては、第１の組の座標は、第１のカメラ１７０／３７０の座標系内に存在することができる。一実施形態において、１組のそれぞれの角は３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、多面体３６２）の、例えば、底面の角であるので、それらの角は第２のカメラ１８０／３８０から常に視認できる場合があるのに対して、１組のそれぞれの角の１つ以上は、場合によって、第１のカメラ１７０／３７０から視認できない場合がある。一実施形態において、制御回路１１１は、ステップ２０１において受信された第１の組のキャリブレーション画像のキャリブレーション画像ごとにステップ２０５を実行することができ、ステップ２０５は、キャリブレーション画像内に取り込まれた２Ｄキャリブレーションパターン及びパターン要素に基づいて、実行することができる。
【００７１】
場合によっては、制御回路１１１は、３Ｄキャリブレーションパターン１６０／３６０の幾何学的形状に関する規定された情報（所定の情報とも呼ばれる）を用いて、第１の組の座標を特定することができる。例えば、ステップ２０５は、第１の組のキャリブレーション画像内の第１の組の２Ｄキャリブレーションパターン（例えば、３６６Ａ〜３６６Ｅ）に基づいて、多面体（例えば、多面体３６２）の３Ｄモデルを決定することを伴うことができる。そのような実施形態において、多面体の別の面の１組のそれぞれの角（例えば、角３６４ａ〜３６４ｄ）に関する第１の組の座標は、多面体（例えば、多面体３６２）の３Ｄモデルに基づいて特定することができる。一実施形態において、多面体の３Ｄモデルは、多面体の３次元構造を記述することができる。例えば、３Ｄモデルは、多面体の面間の空間的関係を記述することができる。場合によっては、多面体の２つ以上の面間の空間的関係は、行列等の変換関数として表すことができる。
【００７２】
３Ｄキャリブレーションパターンの多面体の３Ｄモデルを生成し、使用する一例として、制御回路１１１は、第１の組の２Ｄキャリブレーションパターン（例えば、３６６Ａ〜３６６Ｅ）に基づいて、多面体（例えば、多面体３６２）の第１の組の面（例えば、３６２Ａ〜３６２Ｅ）によって形成されるそれぞれの仮想面を記述する情報を特定することができる。この例において、多面体の３Ｄモデルは、少なくとも、それぞれの仮想面を記述する情報によって表すことができる。場合によっては、制御回路１１１は、多面体の３つのそれぞれの面（例えば、多面体３６２の面３６２Ａ、面３６２Ｂ及び面３６２Ｃ）に対応する３つの仮想面の交点として、多面体の上面（例えば、図３Ｂの面３６２Ａ）の角等の、多面体の角の座標を特定することができる。また、交点は、それぞれの仮想面のうちの少なくとも３つが交わる位置と呼ばれる場合もある。場合によっては、多面体の３Ｄモデルは、多面体の寸法の規定値を更に含むことができる。キャリブレーションパターン１６０／３６０の多面体の寸法（例えば、サイズ）は、制御回路１１１によって記憶できるか、又は別の方法でアクセス可能な場合がある規定値を有するので、制御回路１１１は、後に更に詳細に論じられるように、規定寸法を用いて、多面体の底面の角等の、多面体の別の角の座標を更に特定することができる。
【００７３】
一実施形態において、制御回路１１１は、多面体（例えば、多面体３６２）の第１の組の面（例えば、面３６２Ａ〜３６２Ｅ）間の関係に基づいて、それぞれの仮想面を記述する情報を特定することができる。一例として、図３Ａの３Ｄキャリブレーションパターン３６０は、３Ｄキャリブレーションパターン３６０の多面体３６２の６つの面３６２Ａ〜３６２Ｆのそれぞれの向きを規定する、６つの仮想面によって画定することができる。６つの仮想面はそれぞれ、６つの面３６２Ａ〜３６２Ｆと同一平面をなすことができる。一実施形態において、制御回路１１１は、仮想面に対応する面上に配置される２Ｄキャリブレーションパターンのパターン要素に基づいて、特定の仮想面を識別するように構成することができる。例えば、制御回路１１１は、面３６２Ａ上に配置される２Ｄキャリブレーションパターン３６６Ａの少なくとも３つのドットの位置に基づいて、図３Ｄの多面体３６２の面３６２Ａによって画定される仮想面を識別するように構成することができ、それらの少なくとも３つのドットは同一直線上にない。より具体的には、制御回路１１１は、面３６２Ａによって画定される仮想面を識別する情報を特定するように構成することができる。その情報は、例えば、仮想面に対する法線ベクトル、若しくは平面を表す式（例えば、ａｘ＋ｂｙ＋ｃｚ＝０）の形をとることができるか、又は何らかの他の形の情報を有することができる。制御回路１１１は、２Ｄキャリブレーションパターン３６６Ａの少なくとも３つのドットのそれぞれの位置に基づいて、この情報を特定するように構成することができる。同様に、制御回路１１１は、２Ｄキャリブレーションパターン３６６Ｂ〜３６６Ｅのパターン要素の位置に基づいて、面３６２Ｂ〜３６２Ｅのうちの１つ以上によって画定されるそれぞれの仮想面を識別するように構成することができる。
【００７４】
上記で言及されたように、制御回路１１１は、多面体の第１の組の面（例えば、３６２Ａ〜３６２Ｅ）間の空間的関係を特定することができる。そのような実施形態では、それぞれの仮想面を記述する情報は、多面体（例えば、多面体３６２）の第１の組の面（例えば、面３６２Ａ〜３６２Ｅ）間の空間的関係に基づくことができる。一実施形態において、第１の組の面間の空間的関係は変換関数
【数２６】
0006737522.tif 000027
として表すことができ、２ＤＰａｔｔｅｒｎＭは第１の組の２Ｄキャリブレーションパターンのうちの１つ（例えば、第１の組の２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅのうちの１つ）であり、２ＤＰａｔｔｅｒｎＮは第１の組の２Ｄキャリブレーションパターンのうちの別の１つである。例えば、
【数２７】
0006737522.tif 000028
は、２Ｄキャリブレーションパターン３６６Ａによって形成される仮想面と２Ｄキャリブレーションパターン３６６Ｂによって形成される仮想面との間の９０度回転を記述することができ、２Ｄ  Ｐａｔｔｅｒｎ１は図３Ｄの２Ｄキャリブレーションパターン３６６Ａを指しており、２Ｄ  Ｐａｔｔｅｒｎ２は図３Ｄの２Ｄキャリブレーションパターン３６６Ｂを指している。変換関数によって記述されるこの空間的関係を用いて、共通の座標系において仮想面に関する情報を表すことができる。
【数２８】
0006737522.tif 000029
を特定する一例として、制御回路１１１は、
【数２９】
0006737522.tif 000030
及び
【数３０】
0006737522.tif 000031
に基づいて、
【数３１】
0006737522.tif 000032
を特定することができる。
【数３２】
0006737522.tif 000033
及び
【数３３】
0006737522.tif 000034
の特定は上記で説明されている。一例において、
【数３４】
0006737522.tif 000035
及び
【数３５】
0006737522.tif 000036
の特定は、式：
【数３６】
0006737522.tif 000037
を解くことを伴うことができる。
【００７５】
上記の式において、［ｕ，ｖ］は、キャリブレーション画像内に２ＤキャリブレーションパターンＮ（例えば、３６６Ａ又は３６６Ｂ）のパターン要素が現れるピクセル座標を指すことができ、ｋＣａｍｅｒａ１は、第１のカメラ１７０／３７０の射影行列とすることができる。キャリブレーション画像は、ステップ２０１において受信された第１の組のキャリブレーション画像のうちの１つとすることができる。さらに、座標［ｘ，ｙ，ｚ］は２ＤキャリブレーションパターンＮの座標系（２ＤキャリブレーションパターンＮのパターン座標系とも呼ばれる）内のそのパターン要素の規定された座標とすることができる。上記で言及されたように、
【数３７】
0006737522.tif 000038
及び
【数３８】
0006737522.tif 000039
は、２Ｄキャリブレーションパターン３６６Ａ（２ＤＰａｔｔｅｒｎ１と表記される）と２Ｄキャリブレーションパターン３６６Ｂ（２ＤＰａｔｔｅｒｎ２と表記される）との間の空間的関係を特定するために特定することができる。一例において、２Ｄキャリブレーションパターン３６６Ａと２Ｄキャリブレーションパターン３６６Ｂとの間の空間的関係は、式：
【数３９】
0006737522.tif 000040
に基づいて特定することができる。
【００７６】
上記の例において、２Ｄキャリブレーションパターン３６６Ａは面３６２Ａ上に配置され、２Ｄキャリブレーションパターン３６６Ｂは面３６２Ｂ上に配置されるので、変換関数
【数４０】
0006737522.tif 000041
は、図３Ｄの多面体３６２の面３６２Ａと面３６２Ｂとの間の空間的関係を更に記述することができる。一例において、上記で言及されたように、
【数４１】
0006737522.tif 000042
は、面３６２Ａと面３６２Ｂとの間の９０度回転を記述することができる。一実施形態において、制御回路１１１は、上記で説明されたのと同じようにして、
【数４２】
0006737522.tif 000043
（２ＤＰａｔｔｅｒｎ３、２ＤＰａｔｔｅｒｎ４及び２ＤＰａｔｔｅｒｎ５はそれぞれ２Ｄキャリブレーションパターン３６６Ｃ〜３６６Ｅを指す）のうちの１つ以上を特定することができるか、又は２Ｄキャリブレーションパターンの何らかの他の組み合わせ間の変換関数を特定することができる。
【００７７】
一実施形態において、制御回路１１１は、多面体（例えば、多面体３６２）の第１の組の面（例えば、３６２Ａ〜３６２Ｅ）間の空間的関係を用いて、多面体の第１の組の角（例えば、上面角）に関する１組の座標を特定することができる。これらの座標を用いて、多面体の他の角（例えば、底面角）に関する座標を特定することができる。例えば、空間的関係は、
【数４３】
0006737522.tif 000044
及び
【数４４】
0006737522.tif 000045
等の変換関数によって記述することができ、第１の組の角は、図３Ｄの多面体３６２の面３６２Ａの角とすることができる。この例において、制御回路１１１は、上記のように、図３Ｄの、面３６２Ａによって画定される第１の仮想面を識別する情報を特定し、面３６２Ｂによって画定される第２の仮想面を識別する情報を特定し、面３６２Ｃによって画定される第３の仮想面を識別する情報を特定することができる。一実施形態において、制御回路は、
【数４５】
0006737522.tif 000046
及び
【数４６】
0006737522.tif 000047
を用いて、２Ｄキャリブレーションパターン３６６Ａである、Ｐａｔｔｅｒｎ１の座標系等の、共通の座標系において上記の情報を表すことができる。より具体的には、制御回路１１１が、第２の仮想面を識別する情報を特定するとき、この情報は最初に、面３６２Ｂ上に配置される２Ｄキャリブレーションパターン３６６Ｂである、Ｐａｔｔｅｒｎ２の座標系に対して表すことができる。同様に、制御回路１１１が、第３の仮想面を識別する情報を特定するとき、この情報は最初に、面３６２Ｃ上に配置される２Ｄキャリブレーションパターン３６６Ｃである、Ｐａｔｔｅｒｎ３の座標系に対して表すことができる。第２の仮想面を識別する情報（例えば、法線ベクトル又は仮想面を記述する式）を２Ｄキャリブレーションパターン３６６Ｂの座標系において表すことから、２Ｄキャリブレーションパターン３６６Ａの座標系において表すように変換するために、制御回路１１１は、その情報に、
【数４７】
0006737522.tif 000048
又はその逆関数を適用する（例えば、乗算する）ことができる。第３の仮想面を識別する情報を２Ｄキャリブレーションパターン３６６Ｃの座標系において表すことから、２Ｄキャリブレーションパターン３６６Ａの座標系において表すように変換するために、制御回路１１１は、その情報に、
【数４８】
0006737522.tif 000049
又はその逆関数を更に適用することができる。
【００７８】
一実施形態において、第１の仮想面、第２の仮想面及び第３の仮想面を識別する情報が、２Ｄキャリブレーションパターン３６６Ａの座標系等の共通の座標系に対して表された後に、制御回路１１１は、第１の仮想面、第２の仮想面及び第３の仮想面が交わる座標を特定するように構成することができる。この座標は、第１の組の角のうちの１つ（例えば、図３Ｃの角３６４ｂの真上にある面３６２Ａの角）の位置とすることができる。一実施形態において、この交点の特定は、後に更に詳細に論じられるように、制御回路１１１が、第４の仮想面及び第５の仮想面を識別する情報を特定した後に行うことができる。
【００７９】
より具体的には、上記の例において、第１の仮想面、第２の仮想面及び第３の仮想面は、多面体３６２の第１の組の面３６２Ａ〜３６２Ｅのうちの第１の面３６２Ａ、第２の面３６２Ｂ及び第３の面３６２Ｃによって画定することができ、より一般的には、それらの面と同一平面をなすことができる。一実施形態において、制御回路１１１は、多面体（例えば、３６２）の第１の組の面３６２Ａ〜３６２Ｅの第４の面３６２Ｄによって画定される、より一般的には、第４の面３６２Ｄと同一平面をなす第４の仮想面を識別する情報を特定するように構成することができる。この特定は、３Ｄキャリブレーションパターン３６０の多面体３６２の規定寸法「ｄ」に基づくことができる。上記で言及されたように、規定寸法「ｄ」は、多面体３６２の３Ｄモデルの一部とすることができる。３Ｄモデルは、例えば、多面体３６２が立方体であることを示すことができる。制御回路１１１は、多面体３６２が寸法「ｄ」を有する立方体であるので、第４の面３６２Ｄが、それゆえ、第１の面３６２Ａに平行であり、規定寸法「ｄ」に等しい距離だけ第１の面３６２Ａから離間されると判断することができる。その際、制御回路１１１は、第１の仮想面に平行であり、寸法「ｄ」に等しい距離だけ第１の仮想面から離間される仮想面として第４の仮想面を特定することができる。
【００８０】
同様に、制御回路１１１は、（図３Ｅの）第５の面３６２Ｅによって画定されるか、又はより一般的には、その面と同一平面をなす第５の仮想面を識別する情報を特定するように構成することができる。例えば、制御回路は、多面体３６２が寸法「ｄ」を有する立方体であるので、第５の面３６２Ｅが、それゆえ、第３の面３６２Ｃと平行であり、第３の面３６２Ｃから寸法「ｄ」に等しい距離だけ離間されると判断することができる。その際、制御回路１１１は、第３の仮想面と平行であり、第３の仮想面から寸法「ｄ」に等しい距離だけ離間される仮想面として第５の仮想面を特定することができる。
【００８１】
一実施形態において、制御回路１１１は、第１の仮想面から第５の仮想面までの仮想面が互いに交わる点の座標を特定することができ、それらの点はそれぞれ、第１の仮想面から第５の仮想面までの仮想面の中からの少なくとも３つの仮想面の交点である。上記の例において、第１の仮想面から第５の仮想面までの仮想面は少なくとも４つの交点を有することができ、各交点は、仮想面のうちの少なくとも３つの仮想面の交点である。これら４つの交点は、多面体３６２の面３６２Ａの４つの角と一致する場合がある。これら４つの角は、上記で列挙された第１の組の角とすることができる。一実施形態において、これら４つの角は、多面体３６２の１組の上面角とすることができる。一実施形態において、制御回路１１１は、例えば、２Ｄキャリブレーションパターン３６６ＡであるＰａｔｔｅｒｎ１の座標系において最初に上記の座標を特定する。制御回路１１１は、
【数４９】
0006737522.tif 000050
を用いて、これらの座標を、Ｐａｔｔｅｒｎ１の座標系内から第１のカメラ１７０／３７０の座標系内に変換するように構成することができる。これらの座標は別の１組の座標と見なすことができ、その座標を用いて、ステップ２０５において多面体の別の面（例えば、３６２Ｆ）の角の第１の組の座標を特定することができる。
【００８２】
より具体的には、ステップ２０５を再び参照すると、制御回路１１１は、一実施形態において、第１の組の角に関して上記で特定された座標に基づいて、３Ｄキャリブレーションパターン１６０／３６０の多面体（例えば、３６２）の別の面（例えば、面３６２Ｆ）の１組のそれぞれの角に関する第１の組の座標を特定することができる。例えば、ステップ２０５における別の面のそれぞれの角（例えば、角３６４ａ〜３６４ｄ）は多面体（例えば、多面体３６２）の底面角とすることができ、一方、上記の第１の組の角（例えば、面３６２Ａの角）は多面体の上面角とすることができる。場合によっては、第１の組の角の座標は、別の１組の座標、すなわち第３の組の座標と呼ばれる場合がある。そのような例において、制御回路１１１は、第１の組の角（例えば、上面角）に関する別の１組の座標すなわち第３の組の座標に基づいて、かつ３Ｄキャリブレーションパターン３６０の多面体（例えば、３６２）の規定寸法に基づいて、別の面の角（例えば、底面角）に関する第１の組の座標を特定するように構成することができる。
【００８３】
例えば、制御回路１１１は、多面体の別の面の角に関する第１の組の座標を、別の１組の座標のそれぞれの座標から規定寸法「ｄ」に等しい距離だけそれぞれ離間された１組の座標として特定するように構成することができる。例えば、別の１組の座標が３Ｄキャリブレーションパターン３６０のキャリブレーションパターン３６６Ａの座標系内の座標［ｘ１，ｙ１，ｚ１］、［ｘ２，ｙ２，ｚ２］、［ｘ３，ｙ３，ｚ３］、［ｘ４，ｙ４，ｚ４］を含む場合には、制御回路１１１は、第１の組の座標の対応する座標を、同じくキャリブレーションパターン３６６Ａの座標系内の、［ｘ１，ｙ１，ｚ１−ｄ］、［ｘ２，ｙ２，ｚ２−ｄ］、［ｘ３，ｙ３，ｚ３−ｄ］、［ｘ４，ｙ４，ｚ４−ｄ］に等しいと判断することができる。そのような例において、制御回路１１１は、これらの座標をキャリブレーションパターン３６６Ａの座標系内から第１のカメラ３７０の座標系内に変換するために、［ｘ１，ｙ１，ｚ１−ｄ］、［ｘ２，ｙ２，ｚ２−ｄ］、［ｘ３，ｙ３，ｚ３−ｄ］、［ｘ４，ｙ４，ｚ４−ｄ］のそれぞれを
【数５０】
0006737522.tif 000051
又はその逆関数と乗算するように構成することができる。
【００８４】
図２に戻ると、方法２００はステップ２０７を更に含むことができ、そのステップでは、ステップ２０３において受信された第２の組の１つ以上のキャリブレーション画像に基づいて、制御回路１１１が、第２のカメラ１８０／３８０の位置及び向きに対する多面体（例えば、３６２）の別の面（例えば、３６２Ｆ）の１組のそれぞれの角（例えば、３６４ａ〜３６４ｄ）を表す第２の組の座標を特定することができる。一実施形態において、第２の組の座標は、第２のカメラ１８０／３８０の座標系内に存在することができる。ステップ２０９に関して後に更に詳細に論じられるように、制御回路１１１は、第１の組の座標を第２の組の座標に変換する変換関数を特定することによって、第１のカメラ１７０／３７０と第２のカメラ１８０／３８０との間の空間的関係を特定するように構成することができ、逆も同様である。第１の組の座標は、第１の組のキャリブレーション画像のうちの少なくとも１つのキャリブレーション画像から特定することができ、第２の組の座標は、第２の組の１つ以上のキャリブレーション画像のうちの１つ以上の対応するキャリブレーション画像から特定することができる。上記で論じられたように、第１のカメラ１７０／３７０によって取得されたキャリブレーション画像及び第２のカメラ１８０／３８０によって取得されたキャリブレーション画像は、２つのキャリブレーション画像が取得された時点間で、３Ｄキャリブレーションパターン１６０／３６０が両方のカメラに対して静止したままであった場合には、互いに対応することができる。この実施形態において、制御回路１１１は、第２の組のキャリブレーション画像のうちの１つにおいて１組のそれぞれの角（例えば、３６４ａ〜３６４ｄ）が現れるピクセル座標（例えば、４つのピクセル座標）を識別し、そのピクセル座標に逆射影行列
【数５１】
0006737522.tif 000052
を適用して、第２のカメラ１８０／３８０の座標系内のそれぞれの角の対応する座標を特定することによって、第２の組の座標を特定することができる。一実施形態において、制御回路１１１は、第２の組の１つ以上のキャリブレーション画像のキャリブレーション画像ごとにステップ２０７を実行することができる。
【００８５】
一実施形態において、第２の組の１つ以上のキャリブレーション画像が、第１の照明条件で第２のカメラ１８０／３８０によって取得される第１のキャリブレーション画像（例えば、図５Ａの４００）と、第２の照明条件で第２のカメラ１８０／３８０によって取得される第２のキャリブレーション画像（例えば、図５Ｂの４５０）との少なくとも１つの対を含む場合には、ステップ２０７は、その対の第１のキャリブレーション画像及びその対の第２のキャリブレーション画像の両方を用いて実行することができる。第２の組の１つ以上のキャリブレーション画像が、それぞれの第１のキャリブレーション画像及びそれぞれの第２のキャリブレーション画像の複数対を含む場合には、ステップ２０７は、その対のそれぞれの第１のキャリブレーション画像及びその対のそれぞれの第２のキャリブレーション画像を用いて、対ごとに実行することができる。そのような実施形態の一例が図５Ｃ及び図５Ｄに示される。より具体的には、図５Ｃは、第１の照明条件で第２のカメラ１８０／３８０によって取得される第１のキャリブレーション画像４００の一部を示し、図５Ｄは、第２の照明条件で第２のカメラ１８０／３８０によって取得される第２のキャリブレーション画像４５０の一部を示す。この例において、制御回路１１１は、図５Ｂ及び図５Ｄの第２のキャリブレーション画像４５０に基づいて、第２のカメラ１８０／３８０によって取得される一対の画像の第２のキャリブレーション画像４５０において別の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ｆ）のそれぞれの角が現れる１組のピクセル領域を特定することができる。例えば、図５Ｄは、制御回路１１１が、（図３Ｅの）別のキャリブレーションパターン３６６Ｆの４つのそれぞれの角が現れる１組のピクセル領域４８０ａ〜４８０ｄを特定した例を示す。一実施形態において、制御回路１１１は、１組のピクセル領域４８０ａ〜４８０ｄを、第２のキャリブレーション画像４５０内に現れるそれぞれの周辺パターン要素（例えば、周辺ドット）付近にある第２のキャリブレーション画像４５０内の領域として特定するか、又は別の方法で識別することができる。場合によっては、周辺パターン要素は、そのパターン要素の少なくとも一方の側において隣接するパターン要素を有しないか、又はそのパターン要素の複数の側において隣接するパターン要素を有しないパターン要素とすることができる。例えば、図５Ｄは、第２のキャリブレーション画像４５０内に現れる周辺パターン要素４８２ａ〜４８２ｄを示し、周辺パターン要素４８２ａ〜４８２ｄはそれぞれ、その周辺パターン要素の少なくとも２つの側において隣接するパターン要素を有しない。場合によっては、図５Ｄに示されるように、ピクセル領域４８０ａ〜４８０ｄはそれぞれ、規定サイズを有することができ、及び／又はそれぞれの周辺パターン要素４８２ａ〜４８２ｄから規定距離だけ離間することができる。他の場合には、ピクセル領域４８０ａ〜４８０ｄはそれぞれ、それぞれの周辺パターン要素４８２ａ〜４８２ｄを含むことができる。
【００８６】
一実施形態において、制御回路１１１が、図５Ｄの第２のキャリブレーション画像４５０内のピクセル領域４８０ａ〜４８０ｄを識別したか、又は別の方法で特定したとき、制御回路は、同じく１組のピクセル領域４８０ａ〜４８０ｄ内で、図５Ｃの第１のキャリブレーション画像４００を探索し、第２のカメラ１８０／３８０によって取得される一対の画像の第１のキャリブレーション画像４００内に別の面（例えば、３６２Ｆ）の１組のそれぞれの角（例えば、図３Ｃの３６４ａ〜３６４ｄ）が現れるピクセル座標を識別することができる。例えば、制御回路１１１が、一対の画像の第２のキャリブレーション画像４５０から、ピクセル領域のうちの１つがピクセル［ｕ１，ｖ１］、［ｕ２，ｖ２］、［ｕ３，ｖ３］、［ｕ４，ｖ４］によって囲まれる長方形領域であると判断する場合には、制御回路１１１は、一対の画像の第１のキャリブレーション画像４００内の同じ長方形領域（すなわち、［ｕ１，ｖ１］、［ｕ２，ｖ２］、［ｕ３，ｖ３］、［ｕ４，ｖ４］によって囲まれる領域）を探索し、多面体の別の面のそれぞれの角のうちの１つの角のピクセル座標［ｕａ，ｖａ］を識別することができる。
【００８７】
一実施形態において、第２のカメラ１８０／３８０によって取得される一対のキャリブレーション画像の第１のキャリブレーション画像（例えば、４００）内に１組のそれぞれの角が現れるピクセル座標に基づいて、ステップ２０７において、１組のそれぞれの角に関する第２の組の座標が特定される。例えば、上記で言及されたように、制御回路１１１は、多面体の別の面のそれぞれの角のうちの１つの角のピクセル座標［ｕａ，ｖａ］を識別することができる。この例では、制御回路１１１は、その後、
【数５２】
0006737522.tif 000053
を計算した結果に基づいて、第２の組の座標のうちの１つ［ｘ’ｙ’ｚ’］を特定することができる。
【００８８】
異なるそれぞれの照明条件を用いて取得された一対のキャリブレーション画像を使用することを伴う上記の実施形態は、別の面のそれぞれの角のピクセル座標が特定されるロバスト性を改善することができる。例えば、図５Ａ〜図５Ｄを参照すると、その対の第１のキャリブレーション画像４００は、プラットフォーム１５０／３５０の透明材料によって、又は何らかの他の撮像誤差源によって引き起こされるひずみの結果として撮像誤差を含む場合がある。場合によっては、撮像誤差によって、第１のキャリブレーション画像４００のいくつかの部分が、３Ｄキャリブレーションパターン１６０／３６０の多面体の面の角として誤って現れるおそれがある。しかしながら、制御回路１１１は、その対の第２のキャリブレーション画像４５０から識別されるピクセル領域のみに探索を制限することによって、そのような部分を多面体の面の角として誤って識別するのを回避することができる。第２のキャリブレーション画像４５０内で視認できるドット又は他のパターン要素に頼り、そのパターン要素のうちのいくつかに隣接するか、又はそれを包囲する領域のみを探索して、多面体の面の角を検出することによって、第２のキャリブレーション画像４５０は、ピクセル領域を十分な精度で識別できるようにする場合がある。結果として、第１の照明条件で取得される第１のキャリブレーション画像４００と、第２の照明条件で取得される第２のキャリブレーション画像４５０との組み合わせを使用することは、３Ｄキャリブレーションパターン１６０／３６０の別の面のそれぞれの角のピクセル座標が特定されるロバスト性を改善することができる。
【００８９】
一実施形態において、ステップ２０７は、図５Ｂ及び図５Ｄの第２のキャリブレーション画像４５０からの情報に基づいて、第２の組の座標を調整することを伴うことができる。例えば、制御回路１１１は、図５Ａ及び図５Ｃの第１のキャリブレーション画像４００内に取り込まれた別の面（例えば、面３６２Ｆ）のシルエット４１２に基づいて、多面体（例えば、多面体３６２）の別の面（例えば、面３６２Ｆ）の１組のそれぞれの角（例えば、３６４ａ〜３６４ｄ）の第２の組の座標の第１の推定座標を特定することができる。一例として、制御回路１１１は、角３６４ａ〜３６４ｄの座標の第１の推定座標を［ａ１’，ｂ１’，ｃ１’］、［ａ２’，ｂ２’，ｃ２’］、［ａ３’，ｂ３’，ｃ３’］及び［ａ４’，ｂ４’，ｃ４’］と特定することができる。制御回路１１１は、角３６４ａ〜３６４ｄの座標の第１の推定座標が或る仮想面上に位置するか否かに基づいて、第１の推定座標を調整することができ、その仮想面は、第２のキャリブレーション画像４５０内に現れるパターン要素に基づいて特定される。より具体的には、制御回路１１１は、第２のキャリブレーション画像４５０内に取り込まれた別の２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ｆ）に基づいて、多面体の別の面（例えば、３６２Ｆ）によって形成される仮想面を記述する情報を更に特定することができる。例えば、仮想面は、別の２Ｄキャリブレーションパターン３６６Ｆの少なくとも３つのドット又は他のパターン要素によって画定される平面とすることができ、これら少なくとも３つのドットは同一直線上にない。その後、制御回路１１１は、第２の組の座標の第１の推定座標（例えば、［ａ１’，ｂ１’，ｃ１’］、［ａ２’，ｂ２’，ｃ２’］、［ａ３’，ｂ３’，ｃ３’］及び［ａ４’，ｂ４’，ｃ４’］）と仮想面との間のそれぞれの偏差量を特定することができる。特定の推定座標に関する偏差量が、例えば、推定座標と仮想面との間で最も小さい距離、又は最短距離になる場合がある。この実施形態において、制御回路１１１は、第２の組の座標の第１の推定座標と仮想面との間のそれぞれの偏差量に基づいて、第２の組の座標の第２の推定座標（例えば、［ｘ１’，ｙ１’，ｚ１’］、［ｘ２’，ｙ２’，ｚ２’］、［ｘ３’，ｙ３’，ｚ３’］及び［ｘ４’，ｙ４’，ｚ４’］）を特定することができる。例えば、制御回路１１１は、第２の組の座標の調整された推定座標と仮想面との間のそれぞれの偏差量を減少させるように、第２の組の座標の第１の推定座標（例えば、［ａ１’，ｂ１’，ｃ１’］、［ａ２’，ｂ２’，ｃ２’］、［ａ３’，ｂ３’，ｃ３’］及び［ａ４’，ｂ４’，ｃ４’］）を調整することによって、第２の組の座標の第２の推定座標（例えば、［ｘ１’，ｙ１’，ｚ１’］、［ｘ２’，ｙ２’，ｚ２’］、［ｘ３’，ｙ３’，ｚ３’］及び［ｘ４’，ｙ４’，ｚ４’］）を特定することができる。この実施形態において、第２の組の座標の第２の推定座標は、後に更に詳細に論じられるように、ステップ２０９において使用することができる。
【００９０】
図２に戻ると、方法２００はステップ２０９を更に含むことができ、そのステップでは、制御回路１１１が、第１の組の座標及び第２の組の座標に基づいて、第１のカメラ１７０／３７０と第２のカメラ１８０／３８０との間の空間的関係を記述する変換関数を特定することができる。空間的関係は、例えば、第２のカメラ１８０／３８０に対する第１のカメラ１７０／３７０の位置及び向きを記述することができ、逆も同様である。一実施形態において、変換関数は、第１のカメラ１７０／３７０であるＣａｍｅｒａ１の座標系と、第２のカメラ１８０／３８０であるＣａｍｅｒａ２の座標系との間の線形変換を記述する行列
【数５３】
0006737522.tif 000054
とすることができる。一実施形態において、ステップ２０９は、式（同次形）：
【数５４】
0006737522.tif 000055
に基づいて、行列
【数５５】
0006737522.tif 000056
を特定することを伴うことができる。
【００９１】
上記の例において、［Ｘ  Ｙ  Ｚ］Ｔは、ステップ２０５において特定された第１の組の座標のうちの１つとすることができ、（例えば、第１のカメラ１７０／３７０の座標系内の）第１のカメラ１７０／３７０の位置及び向きを基準としている場合がある。例えば、座標［Ｘ  Ｙ  Ｚ］Ｔは、例えば、図３Ｃの底面角３６４ａの座標とすることができ、図４Ａのキャリブレーション画像５００等の、ステップ２０１において受信された第１の組のキャリブレーション画像のうちの１つであるキャリブレーション画像Ｍから特定することができる。この例において、［Ｘ’  Ｙ’  Ｚ’］Ｔはステップ２０７において特定された第２の組の座標のうちの１つとすることができ、（例えば、第２のカメラ１８０／３８０の座標系内の）第２のカメラ１８０／３８０の位置及び向きを基準としている場合がある。さらに、［Ｘ’  Ｙ’  Ｚ’］Ｔは［Ｘ  Ｙ  Ｚ］Ｔによって表されるのと同じ角（例えば、底面角３６４ａ）の座標とすることができ、キャリブレーション画像Ｍに対応するステップ２０３の第２の組のキャリブレーション画像のうちの１つ以上のキャリブレーション画像から特定することができる。例えば、１つ以上のキャリブレーション画像は、図４Ａ及び図４Ｂのキャリブレーション画像４００及び４５０とすることができる。上記で言及されたように、キャリブレーション画像４００／４５０が取得された時点とキャリブレーション画像５００が取得された時点との間で、３Ｄキャリブレーションパターン１６０／３６０が第１のカメラ１７０／３７０及び第２のカメラ１８０／３８０に対して静止したままであった場合には、キャリブレーション画像４００／４５０はキャリブレーション画像５００に対応することができる。一実施形態において、ステップ２０９は、角Ｎ及びキャリブレーション画像Ｍの組み合わせごとに上記の式に最も当てはまる行列
【数５６】
0006737522.tif 000057
を特定することを伴うことができる。
【００９２】
一実施形態において、変換関数（例えば、
【数５７】
0006737522.tif 000058
）は、第１の変換関数と呼ばれる場合がある。そのような実施形態において、制御回路１１１は、第１のカメラ１７０／３７０とプラットフォーム１５０／３５０（例えば、プラットフォーム３５０の中心３５５）との間の関係を記述する第２の変換関数（例えば、
【数５８】
0006737522.tif 000059
）を特定することによって、カメラキャリブレーションを実行することができる。この特定は、上記で論じられたように、第１のカメラ１７０／３７０のためのハンドアイキャリブレーションの一部とすることができる。
【００９３】
一実施形態において、制御回路１１１は、第１の変換関数に基づいて、かつ第１のカメラ１７０／３７０のために実行されたハンドアイキャリブレーションに基づいて、第２のカメラ１８０／３８０のためのハンドアイキャリブレーションを実行することができる。例えば、制御回路１１１は、第１の変換関数（例えば、
【数５９】
0006737522.tif 000060
）及び第２の変換関数（例えば、
【数６０】
0006737522.tif 000061
）に基づいて、第２のカメラ１８０／３８０とプラットフォーム１５０／３５０（例えば、プラットフォーム３５０の中心３５５）との間の関係を記述する第３の変換関数を特定することができる。例えば、第３の変換関数は、関係：
【数６１】
0006737522.tif 000062
に基づいて特定することができる。
【００９４】
一実施形態において、方法２００は、第３のカメラ１９０を有するシステム（例えば、図１Ｄのシステム１００Ａ）に関して実行することができる。場合によっては、第３のカメラ１９０は、プラットフォーム１５０／３５０の第１の表面１５２／３５２に隣接して配置する（例えば、その上方にわたって配置する）ことができ、プラットフォーム１５０／３５０の第１の表面１５２／３５２に向けることができ、第１の表面１５２／３５２は第３のカメラ１９０と、プラットフォーム１５０／３５０の第２の表面３５４との間に配置される。そのような実施形態では、通信インターフェース１１３は第３のカメラ１９０と通信することができ、制御回路１１１は、通信インターフェース１１３を介して、第３のカメラ１９０から第３の組のキャリブレーション画像を更に受信することによって、カメラキャリブレーションを実行することができ、第３の組のキャリブレーション画像も、多面体（例えば、多面体３６２）の第１の組の面（例えば、３６２Ａ〜３６２Ｅ）と、第１の組の面上に配置される第１の組のそれぞれの２Ｄキャリブレーションパターン（例えば、２Ｄキャリブレーションパターン３６６Ａ〜３６６Ｅ）とを取り込む。制御回路１１１は、別の変換関数（例えば、
【数６２】
0006737522.tif 000063
）を特定することができ、別の変換関数は、第１のカメラ１７０／３７０と第３のカメラ１９０との間の空間的関係を記述する。場合によっては、別の変換関数は、ステレオキャリブレーション技法に基づいて実行することができる。
【００９５】
図２に戻ると、方法２００はステップ２１１を更に含むことができ、そのステップでは、制御回路１１１は、カメラキャリブレーションが実行された後に、３Ｄキャリブレーションパターン１６０／３６０以外の物体がプラットフォーム１５０／３５０の第１の表面１５２／３５２上に配置されるときに、その物体を表す物体の３Ｄモデル（例えば、点群）を生成することができ、３Ｄモデルは、ステップ２０９からの変換関数（例えば、
【数６３】
0006737522.tif 000064
）に基づいて、通信インターフェース１１３を介して第１のカメラ１７０／３７０から受信される物体の画像に基づいて、そして、通信インターフェース１１３を介して第２のカメラ１８０／３８０から受信される物体の画像に基づいて生成される。物体は、例えば、倉庫内の梱包品又は１つの在庫品とすることができるか、又は製造工場において製品上に組み立てられることになる構成部品とすることができる。いくつかの実施態様において、３Ｄモデルは、第１のカメラ１７０／３７０とプラットフォーム１５０／３５０との間の関係を記述する変換関数（例えば、
【数６４】
0006737522.tif 000065
）、及び第２のカメラ１８０／３８０とプラットフォーム１５０／３５０との間の関係を記述する別の変換関数（例えば、
【数６５】
0006737522.tif 000066
）に基づいて特定することができる。一実施形態において、制御回路１１１は、ロボット運用システム１０１のロボットと物体（又はその物体と同じ形状及び／又はサイズを有する他の３Ｄ物体）との間のインタラクションを助長するために、通信インターフェース１１３を介して、ロボット運用システム１０１に３Ｄモデルを通信するように構成することができる。
【００９６】
種々の実施形態の簡潔な説明
実施形態１は、通信インターフェースと制御回路とを備えるコンピューティングシステムに関する。前記通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられる。前記制御回路は、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに、カメラキャリブレーションを実行するように構成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、前記第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備える。前記カメラキャリブレーションは、前記通信インターフェースを介して前記第１のカメラから第１の組のキャリブレーション画像を受信することであって、該第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記多面体の前記第１の組の面を取り込み、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンを取り込むことと、前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は前記第１のカメラの位置及び向きを基準としていることと、前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することとによって実行される。前記制御回路は、前記カメラキャリブレーションが実行された後に、前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成するように更に構成され、前記３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信される前記物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信される前記物体の画像に基づいて生成される。
【００９７】
実施形態２は、実施形態１のコンピューティングシステムを含み、前記通信インターフェースは、（ｉ）前記プラットフォームの前記第１の表面に向けられる第１の光源、及び（ｉｉ）前記プラットフォームの前記第２の表面に向けられる第２の光源と通信するように更に構成され、前記プラットフォームは前記第１の光源と前記第２の光源との間に配置される。さらに、前記第２の組の１つ以上のキャリブレーション画像は、第１のキャリブレーション画像及び第２のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含む。前記制御回路は、前記カメラキャリブレーションを実行するときに、前記第１の光源を点灯させ、前記第２の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第１の組の１つ以上の光源コマンドを出力することと、前記第１の光源が点灯し、前記第２の光源が消灯している間に、前記第２のカメラに前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、第２のカメラに第１の組の１つ以上のカメラコマンドを出力することであって、前記第１のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、前記第２の光源を点灯させ、前記第１の光源を消灯させるために、前記通信インターフェースを介して前記第１の光源及び前記第２の光源に第２の組の１つ以上の光源コマンドを出力することと、前記第２の光源が点灯し、前記第１の光源が消灯している間に、前記第２のカメラに、前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第２のカメラに第２の組の１つ以上のカメラコマンドを出力することであって、前記第２のキャリブレーション画像は、別の２Ｄキャリブレーションパターンを取り込み、該別の２Ｄキャリブレーションパターンは前記別の面上に配置され、前記３Ｄキャリブレーションパターンの一部であることとを行うように構成される。前記制御回路は、前記一対のキャリブレーション画像の前記第１のキャリブレーション画像及び前記第２のキャリブレーション画像に基づいて、前記第２の組の座標を特定するように構成される。
【００９８】
実施形態３は、実施形態２のコンピューティングシステムを含み、前記制御回路は、前記第１のカメラ及び前記第１の光源が前記プラットフォームの前記第１の表面の上方に配置され、前記第２のカメラ及び前記第２の光源が前記プラットフォームの前記第２の表面の下方に配置され、前記３Ｄキャリブレーションパターンの前記別の面が前記プラットフォームの前記第１の表面と接触しているときに、前記カメラキャリブレーションを実行するように構成される。
【００９９】
実施形態４は、実施形態２又は３のコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記少なくとも一対のキャリブレーション画像の前記第２のキャリブレーション画像に基づいて、前記第２のキャリブレーション画像内に前記別のキャリブレーションパターンのそれぞれの角が現れる１組のピクセル領域を特定し、同じく前記１組のピクセル領域内で、前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像を探索し、前記第１のキャリブレーション画像内において前記別の面の前記１組のそれぞれの角が現れるピクセル座標を識別するように構成される。前記１組のそれぞれの角に関する前記第２の組の座標は、前記第１のキャリブレーション画像内に前記１組のそれぞれの角が現れる前記ピクセル座標に基づいて特定される。
【０１００】
実施形態５は、実施形態２〜４のいずれか１つのコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記少なくとも一対のキャリブレーション画像の前記第１のキャリブレーション画像内に取り込まれた前記別の面の前記シルエットに基づいて、前記多面体の前記別の面の前記１組のそれぞれの角の前記第２の組の座標の第１の推定座標を特定し、前記第２のキャリブレーション画像内に取り込まれた前記別のキャリブレーションパターンに基づいて、前記別の面によって形成される仮想面を記述する情報を特定し、前記仮想面と前記第２の組の座標の前記第１の推定座標との間のそれぞれの偏差量を特定し、前記それぞれの偏差量に基づいて、前記第２の組の座標の第２の推定座標を特定するように構成される。前記変換関数は、前記第２の組の座標の前記第２の推定座標に基づいて、かつ前記第１の組の座標に基づいて特定される。
【０１０１】
実施形態６は、実施形態１〜５のいずれか１つのコンピューティングシステムを含み、前記第１の組のキャリブレーション画像の各キャリブレーション画像は前記第１の組の２Ｄキャリブレーションパターンのうちの少なくとも２つの２Ｄキャリブレーションパターンを取り込む。前記制御回路は、前記第１の組のキャリブレーション画像のキャリブレーション画像ごとに、前記キャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第１の２Ｄキャリブレーションパターンを取り込む第１の画像部分を抽出し、前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶し、前記キャリブレーション画像から前記第１の画像部分を除去することによって、更新されたキャリブレーション画像を生成し、前記更新されたキャリブレーション画像から、前記少なくとも２つの２Ｄキャリブレーションパターンの第２の２Ｄキャリブレーションパターンを取り込む別の画像部分を抽出し、前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する情報を記憶するように構成され、前記制御回路は、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第１の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも２つの２Ｄキャリブレーションパターンの前記第２の２Ｄキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第１のカメラのキャリブレーションパラメーターの推定値を特定するように構成される。
【０１０２】
実施形態７は、実施形態１〜６のいずれか１つのコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記第１の組のキャリブレーション画像内の前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体を表す３Ｄモデルを特定するように構成される。前記多面体の前記別の面の前記１組のそれぞれの角に関する前記第１の組の座標は、前記多面体の前記３Ｄモデルに基づいて特定される。
【０１０３】
実施形態８は、実施形態７のコンピューティングシステムを含み、前記制御回路は、カメラキャリブレーションを実行するときに、前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記第１の組の面によって形成されるそれぞれの仮想面を記述する情報を特定するように構成され、前記３Ｄモデルは、少なくとも、前記それぞれの仮想面を記述する前記情報によって表される。
【０１０４】
実施形態９は、実施形態８のコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記多面体の前記第１の組の面間の空間的関係を特定するように構成される。前記それぞれの仮想面を記述する前記情報は、前記多面体の前記第１の組の面間の前記空間的関係に基づいて特定される。
【０１０５】
実施形態１０は、実施形態８又は９のコンピューティングシステムを含み、前記多面体の前記別の面の前記１組の角は前記多面体の第２の組の角である。前記制御回路は、前記カメラキャリブレーションを実行するときに、前記それぞれの仮想面のうちの少なくとも３つが交わる位置を特定することによって、前記多面体の第１の組の角に関するそれぞれの位置を、別の１組の座標として特定するように構成される。前記第１の組の座標は、前記別の１組の座標及び前記多面体の規定サイズに基づいて特定される。
【０１０６】
実施形態１１は、実施形態１〜１０のいずれか１つのコンピューティングシステムを含み、前記変換関数は第１の変換関数であり、前記制御回路は、前記第１のカメラと前記プラットフォームの中心との間の空間的関係を記述する第２の変換関数を特定することと、前記第１の変換関数及び前記第２の変換関数に基づいて、前記第２のカメラと前記プラットフォームの前記中心との間の空間的関係を記述する第３の変換関数を特定することとによって更に、前記カメラキャリブレーションを実行するように構成される。
【０１０７】
実施形態１２は、実施形態１〜１１のいずれか１つのコンピューティングシステムを含み、前記制御回路は、前記プラットフォームに、前記第１のカメラに対して複数の向きを有するように前記３Ｄキャリブレーションパターンを回転させるために、前記通信インターフェースを介して前記プラットフォームに１つ以上のモーターコマンドを出力するように構成され、前記第１の組のキャリブレーション画像は、前記３Ｄキャリブレーションパターンが前記第１のカメラに対して前記複数の向きを有するときにそれぞれ生成される。
【０１０８】
実施形態１３は、実施形態１〜１２のいずれか１つのコンピューティングシステムを含み、前記通信インターフェースは、前記プラットフォームの前記第１の表面に向けられる第３のカメラと通信するように構成される。前記制御回路は、前記通信インターフェースを介して前記第３のカメラから第３の組のキャリブレーション画像を受信することであって、該第３の組のキャリブレーション画像も前記多面体の前記第１の組の面と、前記第１の組のそれぞれの２Ｄキャリブレーションパターンとを取り込むことと、前記第１の組のキャリブレーション画像及び前記第３の組のキャリブレーション画像に基づいて、別の変換関数を特定することであって、該別の変換関数は前記第１のカメラと前記第３のカメラとの間の空間的関係を記述することとによって更に、カメラキャリブレーションを実行するように構成される。
【０１０９】
実施形態１４は、命令を有する非一時的コンピューター可読媒体であって、コンピューティングシステムの制御回路によって実行されるときに、該命令によって、該制御回路が、前記コンピューティングシステムの通信インターフェースを介して、第１の組のキャリブレーション画像を受信し、該通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられる、非一時的コンピューター可読媒体に関する。前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備える。前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面と、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンとを取り込む。前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は位置及び向きを基準としていることと、前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることとを行う。
【０１１０】
実施形態１５は、物体走査の方法であって、コンピューティングシステムによって、該コンピューティングシステムの通信インターフェースを介して第１の組のキャリブレーション画像を受信することを含む、方法に関し、該通信インターフェースは、（ｉ）第１のカメラ、（ｉｉ）第２のカメラ、及び（ｉｉｉ）透明であり、（ｉｉ）前記プラットフォームの第１の表面に面する第１のカメラ、該第１のカメラと該第２のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第１のカメラは該プラットフォームの第１の表面に向けられ、該第２のカメラは該プラットフォームの第２の、反対に面する表面に向けられる。前記第１の組のキャリブレーション画像は、前記第１のカメラから受信され、前記プラットフォームの前記第１の表面上に３次元（３Ｄ）キャリブレーションパターンが配置されるときに生成され、前記３Ｄキャリブレーションパターンは、第１の組の面と、該第１の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第１の組の面のそれぞれの面上に配置される第１の組の２Ｄキャリブレーションパターンを備える。前記第１の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第１の組の面を取り込み、前記第１の組の面上にそれぞれ配置される前記第１の組の２Ｄキャリブレーションパターンを取り込む。該方法は、前記通信インターフェースを介して前記第２のカメラから第２の組の１つ以上のキャリブレーション画像を受信することであって、該第２の組の１つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第１の組の２Ｄキャリブレーションパターンに基づいて、前記多面体の前記別の面の１組のそれぞれの角を表す第１の組の座標を特定することであって、該第１の組の座標は位置及び向きを基準としていることと、前記第２の組の１つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記１組のそれぞれの角を表す第２の組の座標を特定することであって、該第２の組の座標は前記第２のカメラの位置及び向きを基準としていることと、前記第１の組の座標及び前記第２の組の座標に基づいて、前記第１のカメラと前記第２のカメラとの間の空間的関係を記述する変換関数を特定することと、前記プラットフォームの前記第１の表面上に前記３Ｄキャリブレーションパターン以外の物体が配置されるときに、該３Ｄ物体を表す３Ｄモデルを生成することであって、該３Ｄモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第１のカメラから受信された該物体の画像に基づいて、そして、前記通信インターフェースを介して前記第２のカメラから受信された該物体の画像に基づいて生成されることとを更に含む。
【０１１１】
種々の実施形態を上述してきたが、これらの実施形態は、限定としてではなく本発明の単なる説明及び例として提示されていることを理解すべきである。形式及び細部における種々の変更は本発明の趣旨及び範囲から逸脱することなく本発明内で行うことができることは当業者には明らかであろう。したがって、本発明の範囲（breadth and scope）は、上述の例示的な実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物によってのみ規定されるべきである。本明細書において論考された各実施形態、及び本明細書において引用された各引用文献の各特徴は、他の任意の実施形態の特徴と組み合わせて用いることができることも理解されるであろう。本明細書において論考された全ての特許及び刊行物は、引用することによりその全体が本明細書の一部をなす。
【要約】
【課題】自動カメラキャリブレーションを実行するシステム及び方法が提示される。
【解決手段】そのシステムは第１のカメラ及び第２のカメラと通信し、これらの２つのカメラ間に透明なプラットフォームが配置される。プラットフォーム上に３Ｄキャリブレーションパターンが配置されるとき、システムは、第１のカメラから第１の組のキャリブレーション画像を受信し、第２のカメラから第２の組のキャリブレーション画像を受信する。システムは、第１の組のキャリブレーション画像に基づいて、多面体の角に関する第１の組の座標を特定する。システムは、第２の組のキャリブレーション画像に基づいて、その角に関する第２の組の座標を更に特定する。システムは、座標に基づいて、第１のカメラと第２のカメラとの間の空間的関係を特定する。システムは、空間的関係の記述を更に用いて、３Ｄキャリブレーションパターン以外の物体の３Ｄモデルを生成する。
【選択図】図２【図１Ａ】
0006737522.tif 000067
【図１Ｂ】
0006737522.tif 000068
【図１Ｃ】
0006737522.tif 000069
【図１Ｄ】
0006737522.tif 000070
【図１Ｅ】
0006737522.tif 000071
【図２】
0006737522.tif 000072
【図３Ａ】
0006737522.tif 000073
【図３Ｂ】
0006737522.tif 000074
【図３Ｃ】
0006737522.tif 000075
【図３Ｄ】
0006737522.tif 000076
【図３Ｅ】
0006737522.tif 000077
【図３Ｆ】
0006737522.tif 000078
【図３Ｇ】
0006737522.tif 000079
【図３Ｈ】
0006737522.tif 000080
【図４Ａ】
0006737522.tif 000081
【図４Ｂ】
0006737522.tif 000082
【図４Ｃ】
0006737522.tif 000083
【図５Ａ】
0006737522.tif 000084
【図５Ｂ】
0006737522.tif 000085
【図５Ｃ】
0006737522.tif 000086
【図５Ｄ】
0006737522.tif 000087