(58)【調査した分野】(Int.Cl.,DB名)
前記通信インターフェースは、(i)前記プラットフォームの前記第1の表面に向けられる第1の光源、及び(ii)前記プラットフォームの前記第2の表面に向けられる第2の光源と通信するように更に構成され、前記プラットフォームは前記第1の光源と前記第2の光源との間に配置され、
前記第2の組の1つ以上のキャリブレーション画像は、第1のキャリブレーション画像及び第2のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記制御回路は、前記カメラキャリブレーションを実行するときに、
前記第1の光源を点灯させ、前記第2の光源を消灯させるために、前記通信インターフェースを介して前記第1の光源及び前記第2の光源に第1の組の1つ以上の光源コマンドを出力することと、
前記第1の光源が点灯し、前記第2の光源が消灯している間に、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第2のカメラに第1の組の1つ以上のカメラコマンドを出力することであって、前記第1のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記第2の光源を点灯させ、前記第1の光源を消灯させるために、前記通信インターフェースを介して前記第1の光源及び前記第2の光源に第2の組の1つ以上の光源コマンドを出力することと、
前記第2の光源が点灯し、前記第1の光源が消灯している間に、前記第2のカメラに、前記少なくとも一対のキャリブレーション画像の前記第2のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第2のカメラに第2の組の1つ以上のカメラコマンドを出力することであって、前記第2のキャリブレーション画像は、別の2Dキャリブレーションパターンを取り込み、該別の2Dキャリブレーションパターンは前記別の面上に配置され、前記3Dキャリブレーションパターンの一部であることと、
を行うように構成され、
前記制御回路は、前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像及び前記第2のキャリブレーション画像に基づいて、前記第2の組の座標を特定するように更に構成される、請求項1に記載のコンピューティングシステム。
前記制御回路は、前記第1のカメラ及び前記第1の光源が前記プラットフォームの前記第1の表面の上方に配置され、前記第2のカメラ及び前記第2の光源が前記プラットフォームの前記第2の表面の下方に配置され、前記3Dキャリブレーションパターンの前記別の面が前記プラットフォームの前記第1の表面と接触しているときに、前記カメラキャリブレーションを実行するように構成される、請求項2に記載のコンピューティングシステム。
前記第1の組のキャリブレーション画像の各キャリブレーション画像は前記第1の組の2Dキャリブレーションパターンのうちの少なくとも2つの2Dキャリブレーションパターンを取り込み、前記制御回路は、前記第1の組のキャリブレーション画像のキャリブレーション画像ごとに、
前記キャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第1の2Dキャリブレーションパターンを取り込む第1の画像部分を抽出し、
前記第1の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶し、
前記キャリブレーション画像から前記第1の画像部分を除去することによって、更新されたキャリブレーション画像を生成し、
前記更新されたキャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第2の2Dキャリブレーションパターンを取り込む別の画像部分を抽出し、
前記第2の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶するように構成され、
前記制御回路は、前記少なくとも2つの2Dキャリブレーションパターンの前記第1の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも2つの2Dキャリブレーションパターンの前記第2の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第1のカメラのキャリブレーションパラメーターの推定値を特定するように構成される、請求項1に記載のコンピューティングシステム。
前記制御回路は、前記プラットフォームに、前記第1のカメラに対して複数の向きを有するように前記3Dキャリブレーションパターンを回転させるために、前記通信インターフェースを介して前記プラットフォームに1つ以上のモーターコマンドを出力するように構成され、前記第1の組のキャリブレーション画像は、前記3Dキャリブレーションパターンが前記第1のカメラに対して前記複数の向きを有するときにそれぞれ生成される、請求項1に記載のコンピューティングシステム。
前記通信インターフェースは、(i)前記プラットフォームの前記第1の表面に向けられる第1の光源、及び(ii)前記プラットフォームの前記第2の表面に向けられる第2の光源と通信するように更に構成され、前記プラットフォームは前記第1の光源と前記第2の光源との間に配置され、
前記第2の組の1つ以上のキャリブレーション画像は、第1のキャリブレーション画像及び第2のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、
前記通信インターフェースを介して、前記第1の光源を点灯させ、前記第2の光源を消灯させる第1の組の1つ以上の光源コマンドを出力することと、
前記第1の光源が点灯し、前記第2の光源が消灯している間に、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第2のカメラに第1の組の1つ以上のカメラコマンドを出力することであって、前記第1のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記通信インターフェースを介して、前記第1の光源を消灯させ、前記第2の光源を点灯させる第2の組の1つ以上の光源コマンドを出力することと、
前記第2の光源が点灯し、前記第1の光源が消灯している間に、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第2のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第2のカメラに第2の組の1つ以上のカメラコマンドを出力することであって、前記第2のキャリブレーション画像は、
前記別の面上に配置され、前記3Dキャリブレーションパターンの一部である別の2Dキャリブレーションパターンを取り込むことと、
前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像及び前記第2のキャリブレーション画像に基づいて、前記第2の組の座標を特定することと、
を更に行う、請求項14に記載の非一時的コンピューター可読媒体。
前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が更に、前記第1の組のキャリブレーション画像内の前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体を表す3Dモデルを特定し、
前記多面体の前記別の面の前記1組のそれぞれの角に関する前記第1の組の座標は、前記多面体の前記3Dモデルに基づいて特定される、請求項14に記載の非一時的コンピューター可読媒体。
前記第1の組のキャリブレーション画像の各キャリブレーション画像は、前記第1の組の2Dキャリブレーションパターンのうちの少なくとも2つの2Dキャリブレーションパターンを取り込み、前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、前記第1の組のキャリブレーション画像のキャリブレーション画像ごとに、
前記キャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第1の2Dキャリブレーションパターンを取り込む第1の画像部分を抽出することと、
前記第1の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶することと、
前記キャリブレーション画像から前記第1の画像部分を除去することによって、更新されたキャリブレーション画像を生成することと、
前記更新されたキャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第2の2Dキャリブレーションパターンを取り込む別の画像部分を抽出することと、
前記第2の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶することと、
を更に行い、
前記制御回路は、前記少なくとも2つの2Dキャリブレーションパターンの前記第1の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも2つの2Dキャリブレーションパターンの前記第2の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第1のカメラのキャリブレーションパラメーターの推定値を特定するように構成される、請求項15に記載の非一時的コンピューター可読媒体。
前記通信インターフェースは、(i)前記プラットフォームの前記第1の表面に向けられる第1の光源、及び(ii)前記プラットフォームの前記第2の表面に向けられる第2の光源と通信するように更に構成され、前記プラットフォームは前記第1の光源と前記第2の光源との間に配置され、
前記第2の組の1つ以上のキャリブレーション画像は、第1のキャリブレーション画像及び第2のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含み、
前記方法は、
前記通信インターフェースを介して、前記第1の光源を点灯させ、前記第2の光源を消灯させる第1の組の1つ以上の光源コマンドを出力することと、
前記第1の光源が点灯し、前記第2の光源が消灯している間に、前記通信インターフェースを介して、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像を生成させる第1の組の1つ以上のカメラコマンドを出力することであって、前記第1のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、
前記通信インターフェースを介して、前記第1の光源を消灯させ、前記第2の光源を点灯させる第2の組の1つ以上の光源コマンドを出力することと、
前記第2の光源が点灯し、前記第1の光源が消灯している間に、前記通信インターフェースを介して、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第2のキャリブレーション画像を生成させる第2の組の1つ以上のカメラコマンドを出力することであって、前記第2のキャリブレーション画像は、前記別の面上に配置され、前記3Dキャリブレーションパターンの一部である別の2Dキャリブレーションパターンを取り込むことと、
を更に含み、
前記第2の組の座標を前記特定することは、前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像及び前記第2のキャリブレーション画像に基づく、請求項19に記載の方法。
【発明を実施するための形態】
【0006】
以下の詳細な説明は、本質的に単に例示のものであり、本発明又は本発明の用途及び使用を限定することを意図するものではない。さらに、前出の技術分野、背景技術、発明の概要又は以下の詳細な説明において提示されるいかなる明示された又は暗示された理論によっても限定する意図はない。
【0007】
本明細書に記載される実施形態は、走査システムのためのキャリブレーション動作の一部として、第1のカメラと第2のカメラとの間の空間的関係を特定することに関連する。一実施形態において、走査システムは、異なる視点から物体の画像を取得することができる複数のカメラを備えることができる。それらの画像を用いて、物体の3Dモデルを生成することができる。場合によっては、3Dモデルを用いて、ロボットと、物体又はその物体が属する物体群との間のインラタクションを助長することができる。例えば、物体は、倉庫内の梱包品とすることができ、物体の3Dモデルは、ロボットアームが梱包品をいかに持ち上げることができるかを判断するために、ロボット制御システムによって使用される場合がある。一実施形態において、走査システムの第1のカメラ及び第2のカメラは、一般的に重なり合わない物体のそれぞれの領域を視認することができる。例えば、走査システムは、物体が配置される透明なプラットフォームを含むことができる。第1のカメラは、例えば、透明なプラットフォームの上面の上方に配置することができ、第1のカメラに物体の斜視図を与える方向に向けることができる。この例において、第2のカメラは、例えば、透明なプラットフォームの底面の下方にわたって配置することができ、第2のカメラに物体の底面図を与える方向に向けることができる。上記の例において、第1のカメラは上部カメラと呼ばれる場合があり、第2のカメラは底部カメラと呼ばれる場合がある。本明細書における実施形態の一態様は、そのような第1のカメラとそのような第2のカメラとの間の空間的関係を特定するキャリブレーション動作に関連する。空間的関係は、例えば、第1のカメラによって取得される画像を第2のカメラによって取得される画像と合成する方法を決定するために、後に使用することができる。
【0008】
一実施形態において、キャリブレーション動作は、透明なプラットフォーム上に配置される3Dキャリブレーションパターンを用いて実行することができる。3Dキャリブレーションパターンは、例えば、多面体と、多面体のそれぞれの面上に配置される複数の2Dキャリブレーションパターンとを含むことができる。場合によっては、キャリブレーション動作は、3Dキャリブレーションパターン上のそれぞれの位置の第1の組の座標(3Dキャリブレーションパターン上のそれぞれの位置を表す第1の組の座標とも呼ばれる)を特定することを伴うことができ、第1の組の座標は第1のカメラの位置及び向きを基準としている。キャリブレーション動作は、当該それぞれの位置に関する第2の組の座標(当該それぞれの位置を表す第2の組の座標とも呼ばれる)を特定することを更に伴うことができ、第2の組の座標は第2のカメラの位置及び向きを基準としている。例えば、それぞれの位置は、3Dキャリブレーションパターンの多面体の底面角の位置とすることができる。第1のカメラと第2のカメラとの間の空間的関係は、底面角に関する第1の組の座標と、当該底面角に関する第2の組の座標とに基づいて特定することができる。場合によっては、第1のカメラの位置及び向きは第1のカメラの座標系によって表される場合があり、第2のカメラの位置及び向きは第2のカメラの座標系によって表される場合がある。そのような場合に、第1の組の座標は第1のカメラの座標系内に存在する場合があり、第2の組の座標は第2のカメラの座標系内に存在する場合がある。
【0009】
一実施形態において、キャリブレーション動作は、3Dキャリブレーションパターンの他の位置(例えば、上面角)に関する座標を特定し、3Dキャリブレーションパターンの単数又は複数の寸法についての既知の情報を用いて、その後、第1の組の座標を特定することによって、3Dキャリブレーションパターン上の位置(例えば、底面角)に関する第1の組の座標を特定することを伴うことができる。例えば、第1の組の座標が3Dキャリブレーションパターンの多面体の底面角に属する場合には、そのような実施形態は、最初に、多面体の上面角の1組の座標を特定することと、その後、多面体の各辺の既知のサイズ等の、多面体の既知の寸法だけ多面体の上面角から離間した座標として、多面体の底面角の第1の組の座標を特定することとを伴うことができる。
【0010】
一実施形態において、キャリブレーション動作は、3Dキャリブレーションパターンの3Dモデルを特定することを伴うことができる。場合によっては、3Dモデルは、3Dキャリブレーションパターンの多面体の面によって画定されるか、又はより一般的には、多面体の面を表す仮想面を記述する情報を含むことができる。すなわち、仮想面は、多面体の3Dモデルの少なくとも一部を形成することができる。そのような実施形態において、キャリブレーション動作は、多面体の3Dモデルに基づいて、多面体の特定の角(例えば、上面の角)の座標を特定することができる。例えば、その角の座標は、多面体の少なくとも3つの仮想面の交点として特定することができる。
【0011】
一実施形態において、第2のカメラを用いて3Dキャリブレーションパターンの画像(それはキャリブレーション画像と呼ばれる場合がある)を生成することは、複数対のキャリブレーション画像を生成することを伴うことができ、各対は、多面体の特定の面(例えば、底面)のシルエットを取り込む第1のキャリブレーション画像と、その面上に配置される2Dキャリブレーションパターンを取り込む第2のキャリブレーション画像とを含む。そのような実施形態において、第2のカメラは、ガラス等の透明材料を通して3Dキャリブレーションパターンを視認することができる。ガラスは、光の屈折効果又はキャリブレーション画像の中への光の散乱を導入する等によって、撮像誤差の発生源を導入する場合がある。撮像誤差は、キャリブレーション画像から、多面体の面の角を、又は3Dキャリブレーションパターンの何らかの他の特徴を正確に識別する難易度を高める場合がある。しかしながら、角を識別するために第1のキャリブレーション画像及び第2のキャリブレーション画像の両方を使用することによって、撮像誤差の影響を補償することができ、それにより、キャリブレーション画像から3Dキャリブレーションパターンの角又は他の特徴を識別することができるロバスト性を高めることができ、キャリブレーション動作の全体的なロバスト性を高めることができる。
【0012】
一実施形態において、3Dキャリブレーションパターンの多面体の特定の面のシルエットを取り込む第1のキャリブレーション画像は、第1の照明条件で生成することができる。第1の照明条件は、第2のカメラから見て、多面体のその面の後方にある第1の光源(例えば、上部光源)を点灯させ(activate)、多面体のその面の方に向けられる第2の光源(例えば、底部光源)を消灯させる(deactivate)ことによって作り出すことができる。その後、第1の照明条件が作り出された後に、第2のカメラが第1のキャリブレーション画像を取得することができる。一実施形態において、多面体のその面上に配置される2Dキャリブレーションパターンを取り込む第2のキャリブレーション画像は、第2の照明条件で生成することができる。第2の照明条件は、第1の光源を消灯させ、第2の光源を点灯させることによって作り出すことができる。その後、第2の照明条件が作り出された後に、第2のカメラが第2のキャリブレーション画像を取得することができる。
【0013】
上記で言及されたように、キャリブレーション動作は、走査システムが物体の画像及び/又は3Dモデルを生成する能力を助長することができ、3Dモデルは、ロボットが物体とインタラクトする能力を助長することができる。
図1Aは、ロボット運用システム101と通信するように構成される走査システム100のブロック図を示す。走査システム100(レジストレーションシステム100又は製品レジストレーションシステム100とも呼ばれる)を用いて、物体を走査する、より具体的には、物体の画像を取得することができ、その画像を用いて、物体の3Dモデル(例えば、点群)を生成することができる。物体の画像を用いて、ロボット運用システム101が、物体とインタラクトする能力、又は物体と実質的に同じ形状及び/又はサイズを有する他の物体とインタラクトする能力を助長することができる。一実施形態において、走査システム100は、走査システム100によって取得された画像に基づいて、物体の3Dモデルを生成するように構成することができ、物体の3Dモデルをロボット運用システム101に通信するように構成することができる。一実施形態において、走査システム100は、物体の取得された画像をロボット運用システム101に通信するように構成することができ、ロボット運用システム101は、取得された画像に基づいて、物体の3Dモデルを生成することができる。
【0014】
一実施形態において、走査システム100及び/又はロボット運用システム101は、倉庫、製造工場又は他の構内に配置することができる。そのような実施形態において、走査される物体は、例えば、倉庫内の製品(例えば、1つの在庫品)、製造工場内の最終製品を製造する際に使用される部品、又は何らかの他の物体とすることができる。走査システム100は、物体の特性、物体の3Dモデル(例えば、物体の形状及びサイズを記述する情報)、又は物体に関する何らかの他の情報を特定するように物体を走査することができる。物体に関する3Dモデル又は他の情報は、物体とインタラクトするために、ロボット運用システム101によって使用される場合がある。例えば、ロボット運用システム101は、ロボットアームを有するロボットを含むことができ、インタラクションは、倉庫内の梱包品を持ち上げるためのビンピッキング動作等において、ロボットアームが物体を持ち上げることを伴うことができる。ロボット運用システム101の一例が、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第16/295,940号に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。一実施形態において、ロボット運用システム101は、ロボットを制御するためのロボット制御システム(ロボットコントローラーとも呼ばれる)を備えることができる。場合によっては、走査システム100は、ロボット制御システムに、物体の3Dモデル、物体の取得された画像、又は他の情報を通信するように構成することができる。一実施形態において、ロボット運用システム101は、1つ以上のカメラを含む視覚システムを含むことができる。視覚システムの一例が、「Method and Control System for Updating a First Image Generated by a First Camera Based on a Second Image Generated by a Second Camera」と題する米国特許出願第16/438,084号(MJ0020−US/0077−0005US1)に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。場合によっては、走査システム100は、物体の3Dモデル、物体の取得された画像、又は他の情報を視覚システムに通信するように構成することができる。
【0015】
図1Bは、走査システム100の一実施形態のブロック図を示す。
図1Bに示される実施形態において、走査システム100は、コンピューティングシステム110(走査制御システム又はスキャンコントローラーとも呼ばれる)と、アクチュエーター140と、プラットフォーム150と、第1のカメラ170(「カメラ1」と表記される)と、第2のカメラ180(「カメラ2」と表記される)とを含む。場合によっては、走査システム100は、
図1Bに示される第1の光源120(「光源1」と表記される)及び第2の光源130(「光源2」と表記される)等の、1つ以上の光源を更に含むことができる。一実施形態において、走査システム100は、走査システム100のいくつか又は全ての構成要素がその中に位置する密閉空間を与える、収納箱のような密閉ハウジングを含むことができる。
【0016】
一実施形態において、プラットフォーム150は、走査されることになる物体がその上に配置される表面を与えることができる。場合によっては、プラットフォーム150が動くことによって物体が動くように、プラットフォーム150を動かすことができる。例えば、プラットフォーム150は、アクチュエーター140(例えば、モーター)によって板の中心の周りで回転可能である円形のガラス板とすることができる。プラットフォーム150を回転させることによって、物体の異なる部分を、例えば、第1のカメラ170の視野に入れることができる場合がある。一実施形態において、物体を配置することができる表面はプラットフォームの第1の表面(例えば、上面)とすることができ、一方、プラットフォームは、第2の、反対に面する表面(例えば、底面)を更に有することができる。
【0017】
一実施形態において、プラットフォーム150は、第1のカメラ170と第2のカメラ180との間に配置することができる。例えば、
図1Bは、プラットフォーム150の第1の表面152(例えば、上面)と、プラットフォーム150の第2の表面154(例えば、底面)とを示し、第1の表面152及び第2の表面154は、プラットフォーム150の、互いに反対方向を向く表面である。この例において、第1のカメラ170は、プラットフォーム150の第1の表面152に隣接して配置することができ、第1の表面152は第1のカメラ170とプラットフォーム150の第2の表面154との間に配置される。例えば、第1のカメラ170は、第1の表面152の上方に配置することができる(上方にわたって配置されるとも言われる)。さらに、第1のカメラ170は、プラットフォーム150の第1の表面152(例えば、プラットフォーム150の上面)に向けることができる。この例において更に、第2のカメラ180は、プラットフォーム150の第2の表面154に隣接して配置することができ、第2の表面154は第2のカメラ180とプラットフォームの第1の表面152との間に配置される。例えば、第2のカメラ180は、第2の表面154の下方に配置することができる(下方にわたって配置されるとも言われる)。さらに、第2のカメラ180は、プラットフォーム150の第2の表面154(例えば、プラットフォーム150の底面)に向けることができる。場合によっては、第1の表面152及び第2の表面154はいずれも平面とすることができ、かつ互いに平行とすることができる。
【0018】
一実施形態において、プラットフォーム150は、ガラス板等の透明なプラットフォームとすることができる。透明なプラットフォーム上に物体が配置されるとき、物体上の種々の領域を第1のカメラ170又は第2のカメラ180のうちの少なくとも一方から視認できる場合がある。例えば、物体上の第1の領域(例えば、上部領域)は第2のカメラ180から視認できない場合があるが、第1のカメラ170から視認できる場合がある。同様に、物体の第2の領域(例えば、下部領域)は、第1のカメラ170から視認できない場合があるが、第2のカメラ180から視認できる場合がある。さらに、いくつかの領域が、最初に、例えば、第1のカメラ170に対する視野から遮られる場合には、上記で論じられたように、プラットフォーム150を後に動かすことにより、それらの領域を視野に入れることができる場合がある。
【0019】
一実施形態において、第1のカメラ170及び/又は第2のカメラ180は、カラーカメラ、白黒カメラ、深度検知カメラ、ビデオカメラ、その任意の組み合わせ、又は任意の他のタイプのカメラとすることができる。一実施形態において、第1のカメラ170は、プラットフォーム150の中心から外して配置することができる。そのような実施形態では、第1のカメラ170は、プラットフォーム150の中心の真上には配置されない。プラットフォーム150の中心は、例えば、プラットフォーム150の第1の表面152の中心、プラットフォーム150の第2の表面154の中心、又はそれらの2つの位置の平均を指す場合がある。より具体的な例として、第1のカメラ170は、
図1Bのプラットフォーム150の中心軸156と交わらないことによって中心から外すことができ、中心軸156は、プラットフォーム150の第1の表面152又は第2の表面154に対して垂直であり、かつプラットフォーム150の中心を通って延在する軸とすることができる。場合によっては、第1のカメラ170は、プラットフォーム150の第1の表面152に対して第1のカメラ170が傾けられ、プラットフォーム150の第1の表面152の方向に向けられるような向きを有することができる。そのような向きによって、第1のカメラ170は、例えば、物体の平面図のみを有するのとは対照的に、プラットフォーム150の第1の表面152上に配置される物体の斜視図を有することができる場合がある。例えば、プラットフォーム150の第1の表面152上に物体が配置されるとき、第1のカメラ170を傾けることによって、上部領域及び側部領域等の複数の領域を第1のカメラ170から同時に視認できるようになる場合がある。より具体的な例として、第1のカメラ170の光軸がプラットフォーム150の中心軸156と平行でない(又はより一般的には、一直線に合わせられない)ような向きを有することによって、第1のカメラ170をプラットフォーム150の第1の表面152に対して傾けることができる。
【0020】
一実施形態において、第2のカメラ180は、プラットフォーム150の中心に位置することができる。例えば、第2のカメラ180は、プラットフォーム150の中心軸156と交わることができる。より具体的な例として、第2のカメラ180のレンズ又は画像センサーが中心軸156と交わるときに、第2のカメラ180は、プラットフォーム150の中心に位置することができる。別の実施形態では、第2のカメラ180は、プラットフォーム150の中心から外すことができる。一実施形態において、第2のカメラ180が、第2のカメラ180の光軸が中心軸156と平行であるか、又は第2のカメラ180の光軸が第2の表面154によって画定又は形成される仮想面に対して垂直であるような向きを有するように、第2のカメラ180はプラットフォーム150の第2の表面154に対して傾斜を有しないようにすることができる。そのような実施形態では、プラットフォーム150の第1の表面上に物体が配置されるとき、第2のカメラ180のその向きによって、第2のカメラ180は、プラットフォーム150の透明材料を通して物体を正面から視認することができる。例えば、プラットフォーム150の第2の表面154が底面である場合には、第2のカメラ180は、プラットフォーム150のガラス又は他の材料を通して、例えば、物体の底面図のみを有することができる。第2のカメラ180が傾かないことは、プラットフォーム150の透明材料を光が通り抜けることから生じる、光の屈折量、光の散乱又はひずみの他の発生源を最小化することができる。そのような結果が、第2のカメラ180によって取得された画像内の撮像誤差の量を低減することができる。
【0021】
一実施形態において、第1の光源120はプラットフォーム150の第1の表面152に隣接して配置する(例えば、その上方に配置する)ことができ、第1の表面152は第1の光源120とプラットフォーム150の表面154との間に配置される。第1の光源120は、プラットフォーム150の第1の表面152に向けることができる。さらに、第2の光源130はプラットフォーム150の第2の表面154に隣接して配置する(例えば、その下方に配置する)ことができ、第2の表面154は第2の光源130とプラットフォーム150の第1の表面152との間に配置される。第2の光源130は、プラットフォーム150の第2の表面154に向けることができる。第1の光源120及び第2の光源130はそれぞれ、例えば、発光ダイオード(LED)、ハロゲンランプ、又は任意の他の光源とすることができる。さらに、第1の光源120及び第2の光源130は、プラットフォーム150の第1の表面152及び第2の表面154にそれぞれ向かって、可視光、赤外線放射又は任意の他の形の光を放射するように構成することができる。いくつかの実施態様において、コンピューティングシステム110は、プラットフォーム150の第1の表面152に関する照明条件を制御するために第1の光源120を制御することができ、プラットフォーム150の第2の表面154に関する照明条件を制御するために第2の光源130を制御することができる。
【0022】
一実施形態において、コンピューティングシステム110(走査制御システム又は走査コントローラーとも呼ばれる)は、第1のカメラ170、第2のカメラ180、第1の光源120、第2の光源130及び/又はアクチュエーター140のうちの1つ以上と通信することができ、及び/又は1つ以上を制御するように構成することができる。場合によっては、通信は、例えば、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェース、イーサネット(登録商標)インターフェース、Bluetooth(登録商標)インターフェース、IEEE802.11インターフェース、又はその任意の組み合わせを介して行うことができる。場合によっては、通信は、周辺構成要素相互接続(PCI:peripheral component interconnect)バス等のローカルコンピューターバスを介して行うことができる。
【0023】
図1Cは、コンピューティングシステム110のブロック図を示す。コンピューティングシステム110は、コンピューター、制御チップ、回路基板、又は任意の他のコンピューティングシステムとすることができる。
図1Cのブロック図に示されるように、コンピューティングシステム110は、制御回路111と、通信インターフェース113と、非一時的コンピューター可読媒体115(例えば、メモリ)とを含むことができる。
【0024】
一実施形態において、通信インターフェース113は、
図1Bのアクチュエーター140、第1のカメラ170、第2のカメラ180、第1の光源120及び/又は第2の光源130と通信し、及び/又は
図1Aのロボット運用システム101と通信するように構成される1つ以上の構成要素を含むことができる。場合によっては、通信インターフェース113は、有線プロトコル又はワイヤレスプロトコルを介して通信を実行するように構成される通信回路を含むことができる。一例として、通信回路は、RS−232ポートコントローラー、USBコントローラー、イーサネット(登録商標)コントローラー、Bluetooth(登録商標)コントローラー、PCIバスコントローラー、任意の他の通信回路、又はその組合せを含むことができる。
【0025】
一実施形態において、制御回路111は、1つ以上のプロセッサ、プログラマブル論理回路(PLC)又はプログラマブル論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は任意の他の制御回路を含むことができる。一実施形態において、非一時的コンピューター可読媒体115はコンピューターメモリを含むことができる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ(DRAM)、半導体集積メモリ(solid state integrated memory)、及び/又はハードディスクドライブ(HDD)を含むことができる。場合によっては、非一時的コンピューター可読媒体115は、後に更に詳細に論じられるように、カメラキャリブレーションを実行する命令等の、制御回路111が実行するように構成される命令(例えば、コンピューターコード)を記憶することができる。そのような場合に、制御回路111は、カメラキャリブレーションを実行するコンピューター実行可能命令を実行するように構成される1つ以上のプロセッサを含むことができる。
【0026】
一実施形態において、コンピューティングシステム110は、
図1Bのアクチュエーター140、
図1Bの第1のカメラ170、
図1Bの第2のカメラ180、
図1Bの第1の光源120及び/又は
図1Bの第2の光源130の動作を含む、走査システム100の動作のみを制御する専用制御システム(専用コントローラーとも呼ばれる)とすることができる。他の事例では、コンピューティングシステム110は、ロボット運用システム(例えば、
図1Aのロボット運用システム101)の動作等の、別の動作を制御するように構成することができる。一実施形態において、コンピューティングシステム110は、プラットフォーム150、アクチュエーター140、第1のカメラ170、第2のカメラ180、第1の光源120及び/又は第2の光源130等の、走査システム100の他の構成要素にローカル接続することができる。一実施形態において、コンピューティングシステム110は、走査システム100の1つ以上の他の構成要素からリモート接続することができる。例えば、プラットフォーム150、アクチュエーター140、第1のカメラ170、第2のカメラ180、第1の光源120及び第2の光源130は倉庫又は他の構内に位置することができ、コンピューティングシステム110は、倉庫から遠隔しているデータセンター又は他の位置に配置することができ、ネットワーク接続を介して、走査システム100のそれらの他の構成要素と通信するように構成することができる。
【0027】
一実施形態において、コンピューティングシステム110は、第1のカメラ170によって取得される画像及び第2のカメラによって取得される画像を引き出すか、又は別の方法で受信するように構成することができる。場合によっては、画像は、後に更に詳細に論じられるように、キャリブレーションパターンからなることができる(そのような画像は、キャリブレーション画像と呼ばれる場合がある)。一実施形態において、コンピューティングシステム110は、そのようなキャリブレーション画像を取得するために、第1のカメラ170及び/又は第2のカメラ180を制御するように構成することができる。例えば、コンピューティングシステム110は、第1のカメラ170及び/又は第2のカメラ180に、第1のカメラ170又は第2のカメラ180の視野内のシーンの画像をそれぞれ取得させるか、又は別の方法で生成させるカメラコマンドを生成するように構成することができる(カメラの視野は、カメラ視野と呼ばれる場合もある)。同じカメラコマンド又は異なるカメラコマンドが更に、第1のカメラ170及び/又は第2のカメラ180に、
図1Cの通信インターフェース113を介して、取得された画像をコンピューティングシステム110に、又はより一般的には、コンピューティングシステム110によってアクセス可能な記憶デバイス(例えば、
図1Cの非一時的コンピューター可読媒体115)に通信させることができる。一実施形態において、第1のカメラ170及び/又は第2のカメラ180は、コンピューティングシステム110からのカメラコマンドを必要とすることなく、定期的に、又は規定されたトリガー処理条件に応答して、それぞれのカメラ視野内のシーンの画像を自動的に取得するか、又は別の方法で生成することができる。そのような実施形態では、第1のカメラ170及び/又は第2のカメラ180は、コンピューティングシステム110からのカメラコマンドを用いることなく、取得された画像をコンピューティングシステム110に、又はより一般的には、コンピューティングシステム110によってアクセス可能な記憶デバイスに自動的に通信するように構成することもできる。
【0028】
一実施形態において、コンピューティングシステム110の制御回路111又は他の構成要素は、アクチュエーター140によって受信されるときに、アクチュエーター140にプラットフォーム150を作動させる(例えば、回転させる)動作コマンドを生成するように構成することができる。動作コマンドは、通信インターフェース113を介して、制御回路111からアクチュエーター140に通信することができる。一例において、アクチュエーター140はモーターとすることができ、動作コマンドはモーターコマンド又は任意の他のタイプの動作コマンドとすることができる。
【0029】
一実施形態において、コンピューティングシステム110の制御回路111又は他の構成要素は、第1の光源120及び/又は第2の光源130に関する照明コマンドを生成し、通信インターフェース113を介して、制御回路111から第1の光源120及び/又は第2の光源130に照明コマンドを通信するように構成することができる。照明コマンドは、例えば、特定の光源を点灯させるか、消灯させるかを、又は光源を点灯させる強度若しくは持続時間等の、光源を点灯させる方法を制御することができる。
【0030】
一実施形態において、
図1Bの走査システム100内のカメラは第1のカメラ170及び第2のカメラ180だけである。一実施形態において、走査システム100は、3つ以上のカメラ等の、別のカメラを含むことができる。例えば、
図1Dは、第1のカメラ170及び第2のカメラ180だけでなく、第3のカメラ190(「カメラ3」と表記される)も含む、走査システム100の一実施形態である走査システム100Aを示す。この実施形態において、第1のカメラ170及び第3のカメラ190はいずれもプラットフォーム150の第1の表面152に隣接して配置する(例えば、第1の表面152の上方にわたって配置する)ことができ、一方、プラットフォーム150は、第1のカメラ170と第2のカメラ180との間に位置するだけでなく、第3のカメラ190と第2のカメラ180との間に配置される。より具体的には、第1の表面152は第3のカメラ190と、プラットフォーム150の第2の表面154との間に配置することができ、第1のカメラ170とプラットフォーム150の第2の表面154との間に配置することができる。第3のカメラ190は、プラットフォーム150の中心から外すことができるか、又はプラットフォーム150の中心に位置することができる。さらに、第3のカメラ190は、プラットフォーム150の第1の表面152に対して傾けることができるか、又はプラットフォーム150の第1の表面152に対して傾斜を有しないようにすることができる。第1のカメラ170及び第3のカメラ190は、プラットフォーム150上に配置される物体の異なる視点又は観察位置をカバーすることができる。場合によっては、第1のカメラ170及び第3のカメラ190の両方が存在することにより、コンピューティングシステム110に、第1のカメラ170及び第3のカメラ190の両方から視認可能である物体上の領域の立体視を与えることができる。
【0031】
上記で言及されたように、本開示の一態様は、キャリブレーションパターンの画像に基づいて、カメラキャリブレーションを実行することに関連する。
図1Eは、3Dキャリブレーションパターン160を用いて、カメラキャリブレーションを実行する実施形態を示す。より具体的には、3Dキャリブレーションパターン160は、走査システム100のプラットフォーム150の第1の表面152上に配置され、そのコンピューティングシステム110は、3Dキャリブレーションパターン160のキャリブレーション画像に基づいて、カメラキャリブレーションを実行するように構成される。後に更に詳細に論じられるように、3Dキャリブレーションパターン160の一例が、多面体のそれぞれの面上に配置される複数の2Dパターンを有する多面体を含む。多面体は、その面のそれぞれに、又はその面の一部の面のみに配置される、それぞれの2Dパターンを有することができる。
【0032】
上記で言及されたように、第1のカメラ170は、一実施形態において、第1のカメラ170がプラットフォーム150の第1の表面152に対して傾けられるような向きを有することができる。そのような向きは、第1のカメラ170に3Dキャリブレーションパターン160の斜視図を与えることができ、それにより、3Dキャリブレーションパターン160の複数の面を、第1のカメラ170から視認できるように、又はより一般的には、第1のカメラ170のカメラ視野内に入れることができるようにする場合がある。一実施形態では、同様に上記で言及されたように、第2のカメラ180は、第2のカメラ180がプラットフォーム150の第2の表面154に対して傾斜を有しないような向きを有することができる。そのような向きは、3Dキャリブレーションパターン160の多面体の1つの面のみを、又は面のうちの一部の面のみを第2のカメラ180から視認できるようにする場合がある。例えば、そのような実施形態における第2のカメラ180は、多面体の底面のみを視認できる場合がある。言い換えると、そのような例における第2のカメラ180は、3Dキャリブレーションパターン160の底面図のみを有する場合がある。
【0033】
一実施形態において、コンピューティングシステム110は、プラットフォーム150をその中心の周りで回転させる等、プラットフォーム150を作動させるために、アクチュエーター140を制御するように構成することができる。そのような動作により、3Dキャリブレーションパターン160を、第1のカメラ170及び/又は第2のカメラ180に対して異なる位置及び/又は異なる向きに配置することができる。さらに、3Dキャリブレーションパターン160の特定の面が、最初に、例えば、第1のカメラ170から見えないように隠れていた場合には、プラットフォーム150が、その面を、例えば、第1のカメラ170の視野に入るように後に動かすことができる。一実施形態において、コンピューティングシステム110は、3Dキャリブレーションパターン160の多面体の1つ以上の面を照明するために、第1のカメラ170及び/又は第2のカメラ180が3Dキャリブレーションパターン160の画像を取得しているときに点灯するように、第1の光源120及び/又は第2の光源130を制御するように構成することができる。
【0034】
図2は、
図1Eの3Dキャリブレーションパターン160等のキャリブレーションパターンのキャリブレーション画像に基づいて、
図1A〜
図1Eの走査システム100等の走査システムに関するカメラキャリブレーションを実行する方法200を示すフロー図を示す。方法200は、一実施形態において、ステップ201〜209に従ってカメラキャリブレーションを実行することができ、その後、カメラキャリブレーションから特定された情報を用いて、ステップ211において物体の3Dモデルを生成することができる。一実施形態において、方法200は、コンピューティングシステム110によって、より具体的には、
図1Cの制御回路111によって実行することができる。場合によっては、制御回路111は、
図1Cの非一時的コンピューター可読媒体115上に、又は任意の他の記憶デバイス上に記憶される命令に基づいて、方法200を実行することができる。
【0035】
一実施形態において、方法200はステップ201から開始することができ、そのステップでは、制御回路111が、通信インターフェース113を介して、
図1B、
図1D及び/又は
図1Eの第1のカメラ170から、又はより具体的には、後に論じられる
図3Aの第1のカメラ370から、第1の組のキャリブレーション画像を受信する。第1の組のキャリブレーション画像は3Dキャリブレーションパターン160の画像とすることができ、3Dキャリブレーションパターン160は、複数の面を有する多面体を含むことができ、複数の面上に配置される複数の2Dキャリブレーションパターンを含むことができる。複数の面は第1の組の面と、別の面(additional face)とを含むことができる。さらに、第1の組のキャリブレーション画像は、具体的には、多面体の別の面を取り込むことなく、多面体の第1の組の面を取り込むことができ、多面体の第1の組の面上にそれぞれ配置される第1の組の2Dキャリブレーションパターンを取り込むことができる。
【0036】
例えば、
図3Aは、
図2の方法200を実行するための例示的な環境を示し、より具体的には、
図1A〜
図1Eの走査システム100の一実施形態である走査システム300を示す。この実施形態において、走査システム300は、
図1B〜
図1Eのコンピューティングシステム110を含む。走査システム300は、
図1B及び
図1D〜
図1Eのそれぞれプラットフォーム150、アクチュエーター140、第1のカメラ170、第1の光源120、第2のカメラ180及び第2の光源130のそれぞれの実施形態とすることができる、プラットフォーム350、プラットフォーム350を作動させるように構成されるアクチュエーター340、第1のカメラ370、第1の光源320、第2のカメラ380及び第2の光源330を更に含む。一実施形態において、プラットフォーム350は第1の表面352と、第1の表面352の反対に面する第2の表面354とを有し、第1のカメラ370と第2のカメラ380との間に配置される。
図3Aに示されるように、第1のカメラ370及び第1の光源320は、プラットフォーム350の第1の表面352に隣接して配置することができ、第1の表面352は第1のカメラ370とプラットフォーム350の第2の表面354(例えば、底面)との間に配置され、第1の光源320と第2の表面354との間に配置される。第1のカメラ370及び第1の光源320は、プラットフォーム350の第1の表面352に面している(例えば、向ける)ことができる。一例において、第1の表面352は、プラットフォーム350の上面とすることができ、第1の光源及び第1のカメラ370は第1の表面352の上方にわたって配置することができる。
【0037】
図3Aに更に示されるように、第2のカメラ380及び第2の光源330はプラットフォーム350の第2の表面354(例えば、底面)に隣接して配置することができ、第2の表面354は第2のカメラ380とプラットフォーム350の第1の表面352との間に配置され、第2の光源330と第1の表面352との間に配置される。第2のカメラ380及び第2の光源330はプラットフォーム350の第2の表面354に面している(例えば、向ける)ことができる。一例において、第2の表面354はプラットフォーム350の底面354とすることができ、第2の光源330及び第2のカメラ380は第2の表面354の下方にわたって配置することができる。一実施形態において、第1のカメラ370及び第2のカメラ380はそれぞれ、それぞれの画像センサー(例えば、電荷結合ダイオード(charge-coupled diode)すなわちCCDセンサー)を有することができる。そのような実施形態において、第1のカメラ370/第2のカメラ380のそれぞれの画像センサーが特定の表面に面しているとき、第1のカメラ370/第2のカメラ380は、その表面に向けられると見なすことができる。より具体的な例として、第1のカメラ370がプラットフォーム350の第1の表面352の上方にわたって配置され、第1の表面352に向けられる場合には、第1の表面352から反射するか、又は第1の表面352上に配置される物体から反射する光が、第1のカメラ370の画像センサーに直接達することができる。この例において、プラットフォーム350は透明とすることができ、光が、物体の底面から反射した後に、プラットフォーム350を通り抜けることができる。第2のカメラ380が第2の表面354の下方にわたって配置され、第2の表面354に向けられる場合には、物体の底面から反射する光が、第2のカメラ380の画像センサーに直接達することができる。
【0038】
図3Aの実施形態において、プラットフォーム350は円形のガラス板又は他のタイプの透明なプラットフォームとすることができ、アクチュエーター340は、中心軸356の周りでプラットフォーム350を回転させるように構成することができる。中心軸356は、プラットフォーム350の中心355を通り抜け、プラットフォーム350の第1の表面352又は第2の表面354に対して垂直である軸とすることができる。
図3Aの例において、プラットフォーム350の中心355は、プラットフォーム350の第1の表面352の中心を指すことができる。
図3Aに更に示されるように、アクチュエーター340は、ローター342と、モーターシャフト344と、モーターシャフト344に取り付けられる回転伝達部346とを含むモーターとすることができる。ローター342は、モーターシャフト344を回転させるように構成することができ、モーターシャフト344は回転伝達部346を回転させるように構成することができる。回転伝達部346は、プラットフォーム350をプラットフォーム350の中心軸356の周りで回転させるために、プラットフォーム350にトルクを加えるように構成することができる。一例において、回転伝達部346は、回転をローター342及びモーターシャフト344からプラットフォーム350に伝達するように構成されるギア又はギアボックスとすることができる。別の例において、回転伝達部346が回転するときにプラットフォーム350を回転させるだけの十分な摩擦で、回転伝達部346はプラットフォーム350の周縁部と接触することができる。一実施形態において、ローター342はコンピューティングシステム110によって制御することができ、コンピューティングシステム110は、ローター342に駆動信号又は他の形の動作コマンドを通信するように構成することができる。
図3Aに更に示されるように、第1のカメラ370は、プラットフォーム350の第1の表面352に対して傾斜を有することができる。例えば、第1のカメラ370は、その光軸371がプラットフォーム350の中心軸356と平行でないような向きを有することができる。この例において、第2のカメラ380は、プラットフォーム350の第2の表面354に対して傾斜を有しないことができる。例えば、第2のカメラ380は、その光軸381がプラットフォームの中心軸356と平行であるような向きを有することができる。
【0039】
上記で言及されたように、
図2のステップ201は、
図1Eの3Dキャリブレーションパターン160の第1の組のキャリブレーション画像を受信することを伴うことができる。
図3Aは、3Dキャリブレーションパターン160の一実施形態である3Dキャリブレーションパターン360を示し、3Dキャリブレーションパターン360は、プラットフォーム350の第1の表面352上に配置される。一実施形態において、3Dキャリブレーションパターン360は、複数の面を有する多面体362を含む。
図3Aの例において、多面体362は、全部で6つの面を有する、立方体、又はより一般的には、直方体である。別の例では、3Dキャリブレーションパターン360は、四面体又は十二面体等の異なる多面体を含むことができる。
図3B及び
図3Cは、
図3Aの多面体362の複数の面を示す。より具体的には、
図3Bは、3Dキャリブレーションパターン360の多面体362の3つの面、すなわち、面362A、362B及び362Cを識別する。
図3Cは、
図3Bにおいて視認できない、多面体362の3つの残りの面、すなわち、面362D、362E及び362Fを示す。
【0040】
一実施形態において、多面体362は規定寸法(所定の寸法とも呼ばれる)を有することができ、規定寸法は、例えば、多面体362の形状及び/又はサイズの規定値とすることができる。例えば、
図3Aの多面体362は、立方体の辺ごとに規定寸法「d」(例えば、50mm)と実質的に一致するように厳しい公差で製造された立方体とすることができる。製造工程は、規定寸法からの偏差量を、例えば、±0.5mm以下に制限した高い精度を有していた場合がある。場合によっては、
図3Aのコンピューティングシステム110は、規定寸法の値を記憶することができるか、又は規定寸法の値を(例えば、リモートデータベースから)引き出すことができ、その値を用いて、後に更に詳細に論じられるように、カメラキャリブレーションを実行することができる。
【0041】
一実施形態において、
図3B及び
図3Cの多面体362の面は第1の組の面362A〜362Eと、別の面362Fとに分割することができ、別の面362Fは第1の組の面362A〜362Eの一部ではない。別の面362Fは多面体362の第2の組の1つ以上の面の一部と見なすこともでき、第2の組の1つ以上の面(例えば、362F)は、第1の組の面362A〜362Eと共通の面を有しない。
【0042】
一実施形態において、第1の組の面362A〜362Eは、(
図3Aの)第1のカメラ370から視認できるか、又は第1のカメラ370から視認できる位置までプラットフォーム350によって回転させることができる多面体362の面とすることができる。例えば、第1の組の面362A〜362Eは、多面体362の上面と、4つの側面とを含むことができる。一実施形態において、第1の組の面362A〜362Eは、(
図3Aの)第2のカメラ380から視認できない多面体362の面とすることができる。状況によっては、第1の組の面362A〜362Eは、多面体362がプラットフォーム350によって動かされるときでも、第2のカメラ380から決して視認できない場合がある。そのような状況は、例えば、第2のカメラ380が、第1の組の面362A〜362Eから反射する任意の光を途中で取り込むか、又は別の方法で収集するのを防ぐ位置及び/又は向きを有するときに生じる場合がある。例えば、これらの状況は、第2のカメラ380がプラットフォーム350の第2の表面354の非常に近くに位置し、プラットフォーム350の第2の表面354に対する傾斜を有しないときに生じる場合がある。
【0043】
一実施形態において、別の面362Fは、第1のカメラ370から決して視認できず、第2のカメラ380から視認できる多面体362の面とすることができる。例えば、別の面(additional face)362Fは、
図3Aのプラットフォーム350(例えば、プラットフォーム350の第1の表面352)と直接接触している多面体362の底面とすることができ、一方、第1の組の面362A〜362Eは、プラットフォーム350と直接接触していない多面体362の面とすることができる。多面体362が立方体である
図3B及び
図3Cの実施形態において、第1の組の面362A〜362Eは厳密に5つの面を有することができ、別の面362Fは、第2のカメラ380から視認することができ、第1のカメラ370から視認できないただ1つの、別の面362Fとすることができる。多面体362が立方体とは異なる(例えば、多面体362が十二面体である)別の実施形態では、多面体362の面は、第1のカメラ370から視認できる第1の組の面と、第2のカメラ380から視認できるが、第1のカメラ370から視認できない複数の別の面(第2の組の面とも呼ばれる)とに分割することができる。
【0044】
図2のステップ201を再び参照すると、そのステップにおける3Dキャリブレーションパターン160/360は、3Dキャリブレーションパターン160/360の多面体(例えば、362)の複数の面上にそれぞれ配置される複数の2Dキャリブレーションパターンを更に含むことができる。
図3D〜
図3Fは、3Dキャリブレーションパターン360の2Dキャリブレーションパターンを示す。より具体的には、
図3Dは多面体362の面362A、362B及び362C上にそれぞれ配置される、2Dキャリブレーションパターン366A、366B及び366Cを示す。
図3Eは、
図3D内の矢印Aに沿って視認されるような多面体362を示す。より具体的には、
図3Eは、多面体362の面362B、362E及び362F上にそれぞれ配置される2Dキャリブレーションパターン366B、366E及び366Fを示す。
図3Fは、
図3D内の矢印Bに沿って視認されるような多面体362を表す。より具体的には、
図3Fは、多面体362の面362A、362D及び362E上にそれぞれ配置される2Dキャリブレーションパターン366A、366D及び366Eを示す。
【0045】
一実施形態において、
図3D〜
図3Fの2Dキャリブレーションパターン366A〜366Fは、第1の組の2Dキャリブレーションパターン366A〜366Eと、別の(additional)2Dキャリブレーションパターン366Fとに分割することができ、第1の組の2Dキャリブレーションパターン366A〜366Eは多面体362の第1の組の面362A〜362E上にそれぞれ配置され、別の2Dキャリブレーションパターン366Fは多面体362の別の面362F上に配置される。別の2Dキャリブレーションパターン366Fは、第2の組の1つ以上の2Dキャリブレーションパターンの一部と見なすこともでき、第1の組の2Dキャリブレーションパターン366A〜366Eと、第2の組の1つ以上の2Dキャリブレーションパターン(例えば、366F)との間に共通の2Dキャリブレーションパターンは存在しない。一実施形態において、第2の組の1つ以上の2Dキャリブレーションパターンは、第1のカメラ370から視認できないキャリブレーションパターン(複数の場合もある)を含むことができる。上記の実施形態において、又は別の実施形態において、第2の組の1つ以上の2Dキャリブレーションパターンは、第2のカメラ380から視認できるキャリブレーションパターン(複数の場合もある)を含むことができる。一実施形態において、第2の組の1つ以上の2Dキャリブレーションパターンは2Dキャリブレーションパターン366Fのみを含む。このシナリオは、例えば、第2のカメラ380及び3Dキャリブレーションパターン360の両方がプラットフォーム350の中心に位置するときに生じる場合がある。別の実施形態において、第2の組の1つ以上の2Dキャリブレーションパターンは2つ以上の2Dキャリブレーションパターンを含む。
【0046】
一実施形態において、3Dキャリブレーションパターン360の2Dキャリブレーションパターン366A〜366Fは、多面体362のそれぞれの面362A〜362F上に固定されるようにして配置することができる。例えば、2Dキャリブレーションパターン366A〜366Fはそれぞれ、多面体362のそれぞれの面に接着されるか、又は別の方法で取り付けられるフラットシート(例えば、ステッカー)又は平板とすることができる。一実施形態において、2Dキャリブレーションパターン366A〜366Fの1つ以上は、多面体362のそれぞれの面362A〜362F上に塗布される場合がある。一実施形態において、2Dキャリブレーションパターン366A〜366Fのいずれかは、多面体362のそれぞれの面362A〜362Fの中心に位置し、及び/又はそれぞれの面に対して位置合わせされる場合があるか(
図3D及び
図3Eの2Dキャリブレーションパターン366Bに関して表される)、又は多面体362のそれぞれの面362A〜362Fの中心から外れて位置し、及び/又はそれぞれの面と位置合わせされない場合がある(
図3Fの2Dキャリブレーションパターン366Dに関して示される)。
【0047】
一実施形態において、2Dキャリブレーションパターン366A〜366Fの各2Dキャリブレーションパターンは、ドットのアレイ等の複数のパターン要素を有する場合があり、パターン要素はそれぞれ、2Dキャリブレーションパターンの座標系及び/又は3Dキャリブレーションパターン360の座標系において規定された位置(所定の位置とも呼ばれる)を有することができる。
図3Gは、プラットフォーム350の座標系、第1のカメラ370の座標系及び第2のカメラ380の座標系だけでなく、3Dキャリブレーションパターン360の座標系も示す。一実施形態において、3Dキャリブレーションパターン360の座標系は、多面体362の辺と位置合わせされる座標軸
【数1】
を有することができる。3Dキャリブレーションパターン360の座標系の原点は、多面体362内の或る位置(例えば、多面体362の中心)、多面体362の表面上の或る位置(例えば、面362Aの中心)、又は任意の他の位置とすることができる。一実施形態において、
図3Gにおいて表されるように、プラットフォーム350の座標系は、プラットフォーム350の中心軸356(
図3Aを参照)と位置合わせされる座標軸
【数2】
を有することができ、プラットフォーム350の中心355に位置する原点を有することができる。場合によっては、第1のカメラ370又は第2のカメラ380の座標系が、カメラ370/380の任意のレンズの光軸と位置合わせされる座標軸(第1のカメラ370に関して、
【数3】
及び第2のカメラ380に関して、
【数4】
)を有することができ、カメラ370/380のレンズの中心、カメラ370/380の画像センサーの中心若しくは角、又は何らかの他の位置に位置する原点を有することができる。
図3Gは、リンク点(link point)357に関する座標系を更に示し、その座標系は座標軸
【数5】
によって規定される。この座標系は、後に更に詳細に論じられる。
【0048】
一実施形態において、3Dキャリブレーションパターン360の各2Dキャリブレーションパターン366A〜366Fは、自らの座標系を有することができる。例えば、
図3Hはキャリブレーションパターン366Aに関する第1の座標系を示し、第1の座標系は座標軸
【数6】
によって規定される。その図は、キャリブレーションパターン366Bに関する第2の座標系及びキャリブレーションパターン366Cに関する第3の座標系を更に示す。第2の座標系は座標軸
【数7】
によって規定され、一方、第3の座標系は座標軸
【数8】
によって規定される。キャリブレーションパターンは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第16/295,940号において更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【0049】
図2のステップ201を再び参照すると、そのステップは、制御回路111が、
図1B又は
図3Aの第1のカメラ170/370から第1の組のキャリブレーション画像を受信することを伴うことができる。一実施形態において、3Dキャリブレーションパターン160/360が、第1のカメラ170/370に対して異なる位置及び/又は向きに動かされる間に、第1のカメラ170/370によって第1の組のキャリブレーション画像が取得されるか、又は別の方法で生成される。場合によっては、プラットフォーム150/350を介してそのような動作を生み出すように、制御回路111がアクチュエーター140/340を制御することができる。例えば、制御回路111は、(
図1Cの)通信インターフェース113を介して、アクチュエーター140/340に1つ以上のモーターコマンドを出力することができる。1つ以上のモーターコマンドは、アクチュエーター140/340にプラットフォーム150/350を回転させることができ、これにより、第1のカメラ170/370に対して複数の向きを有するように、3Dキャリブレーションパターン160/360が動く。この例において、ステップ201の第1の組のキャリブレーション画像はそれぞれ、3Dキャリブレーションパターン160/360が第1のカメラ170/370に対して複数の向きを有するときに生成される。一実施形態において、第1の組のキャリブレーション画像の各キャリブレーション画像は、第1のカメラ170/370に対する3Dキャリブレーションパターン160/360の異なるそれぞれの位置及び/又は向きに対応することができる。言い換えると、3Dキャリブレーションパターン160/360が第1のカメラ170/370に対して種々の位置及び/又は向きを有するように動かされるにつれて、3Dキャリブレーションパターン160/360が異なる位置及び/又は向きにある間に、第1のカメラ170/370が3Dキャリブレーションパターン160/360のそれぞれのキャリブレーション画像を生成する。これらのキャリブレーション画像は第1の組のキャリブレーション画像を形成することができ、第1の組のキャリブレーション画像は、その後、第1のカメラ370からコンピューティングシステム110の制御回路111に送信することができる。
【0050】
一実施形態において、第1の組のキャリブレーション画像の各キャリブレーション画像は、多面体362の少なくとも2つの面(例えば、第1の組の面362A〜362E)と、第1の組の2Dキャリブレーションパターンの少なくとも2つの2Dキャリブレーションパターン(例えば、
図3D〜
図3Fの第1の組の2Dキャリブレーションパターン366A〜366E)とを取り込むことができる。例えば、第1の組のキャリブレーション画像はそれぞれ、
図3Aの第1のカメラ370によって生成することができ、第1のカメラ370は、3Dキャリブレーションパターン360に対して、3Dキャリブレーションパターン360の少なくとも2つの2Dキャリブレーションパターンを第1のカメラ370から常に視認できるようにする位置及び向きを有することができる。
図4Aは、
図3Aの3Dキャリブレーションパターン360の第1の組のキャリブレーション画像のうちの1つである例示的なキャリブレーション画像500を示す。
図4Aの例示的なキャリブレーション画像500は、
図3A及び
図3Dの多面体362の
図3B及び
図3Dの2Dキャリブレーションパターン366A及び面362Aを取り込む、第1の画像部分566Aを有することができる。キャリブレーション画像500は、
図3B及び
図3D両方の2Dキャリブレーションパターン366B及び面362Bを取り込む第2の画像部分566Bを更に有することができ、
図3B及び
図3D両方の2Dキャリブレーションパターン366C及び面362Cを取り込む第3の画像部分566Cを更に有することができる。一実施形態において、第1の組のキャリブレーション画像は、3Dキャリブレーションパターン360の多面体362の別の面362Fを取り込まない。
【0051】
一実施形態において、
図1C又は
図3Aの制御回路111は、(例えば、
図2のステップ201の一部として、又はステップ201後に)、第1の組のキャリブレーション画像の各キャリブレーション画像から、それぞれの2Dキャリブレーションパターンを取り込む画像部分(例えば、566A、566B、566C)を抽出することができる。例えば、制御回路111は、第1の組のキャリブレーション画像のキャリブレーション画像ごとに、キャリブレーション画像から、第1の2Dキャリブレーションパターンを取り込む第1の画像部分を抽出することができ、そのキャリブレーション画像は、少なくとも2つの2Dキャリブレーションパターンを取り込むことができる。一例において、
図4Aは、制御回路111が、キャリブレーション画像500から(
図3Dの)2Dキャリブレーションパターン366Aを取り込む画像部分566Aを抽出することを示す。制御回路111は、第1の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366A)のパターン要素を記述する情報を更に記憶することができる。例えば、パターン要素がドットである場合には、記憶される情報は、ドットがキャリブレーション画像500内に現れるそれぞれの位置のピクセル座標[u v]
Tとすることができる。
【0052】
一実施形態において、制御回路111は、
図4Aのキャリブレーション画像500内の画像部分566B及び566C等の、キャリブレーション画像内の他の2Dキャリブレーションパターンを表す他の画像部分を抽出することができる。画像部分566Bは2Dキャリブレーションパターン366Bを取り込むことができ、画像部分566Cは2Dキャリブレーションパターン366Cを取り込むことができる。場合によっては、制御回路111は、他の画像部分の検出を助長するために、そして、第1の画像部分の任意の部分が他の画像部分の一部であると誤って識別される可能性を低減するために、抽出された第1の画像部分をキャリブレーション画像(例えば、キャリブレーション画像500)から除去することができる。例えば、制御回路111は、キャリブレーション画像(例えば、キャリブレーション画像500)から第1の画像部分(例えば、画像部分566A)を除去することによって、更新されたキャリブレーション画像を生成することができる。場合によっては、除去は第1の画像部分を黒塗りすることによって行うことができる。一例として、
図4Bは更新されたキャリブレーション画像530を示し、第1の画像部分566Aを、第1の画像部分566Aに対応する第1の黒塗りされた部分534に置き換えるように、第1の画像部分566Aが黒塗りされる。場合によっては、第1の画像部分566Aの黒塗りは、第1の画像部分566Aの全てのピクセルを、所定の強度値(例えば、0)を有するように設定することを伴うことができる。
【0053】
一実施形態において、制御回路111は、更新されたキャリブレーション画像(例えば、
図4Bの更新されたキャリブレーション画像530)から、第2の2Dキャリブレーションパターン(例えば、
図3Dのキャリブレーションパターン366C)を取り込む、別の画像部分とも呼ばれる第2の画像部分(例えば、画像部分566C)を抽出することができ、第2の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶することができる。記憶された情報は、例えば、第2の2Dキャリブレーションパターンのパターン要素が更新されたキャリブレーション画像(例えば、更新されたキャリブレーション画像530)内に現れるそれぞれの位置のピクセル座標[u v]
Tを含むことができる。
【0054】
一実施形態において、制御回路111は、そのような画像部分のうちの1つを除く全ての画像部分がキャリブレーション画像500から除去されるまで、2Dキャリブレーションパターンを取り込む第2の画像部分(例えば、566C)及び他の画像部分を除去する(黒塗りする)ことができる。例えば、
図4Cは、更新されたキャリブレーション画像530から第2の画像部分556Cを更に除去することによって、制御回路111が別の更新されたキャリブレーション画像560を生成することを示す。除去は、更新されたキャリブレーション画像560内の第2の画像部分566Cを、第2の画像部分566Cに対応する第2の黒塗りされた部分535に置き換えることによって実行することができる。制御回路111は、別の更新されたキャリブレーション画像560から、
図4Aのキャリブレーション画像500内に表される3つの2Dキャリブレーションパターン366A〜366Cのうちの第3の2Dキャリブレーションパターン366Bを取り込む第3の画像部分566Bを抽出することができる。制御回路111は、第3の2Dキャリブレーションパターン366Bのパターン要素を記述する情報を更に記憶することができる。
【0055】
一実施形態において、制御回路111は、
図2のステップ201において受信された第1の組のキャリブレーション画像に基づいて、
図1B、
図1D、
図1E及び/又は
図3Aの第1のカメラ170/370のキャリブレーションパラメーターの推定値を特定することができる。例えば、この特定は、第1の組のキャリブレーション画像によって取り込まれた第1の2Dキャリブレーションパターンのパターン要素及び第2の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報に基づくことができる。場合によっては、キャリブレーションパラメーターは、第1のカメラ170/370の画像センサー上への画像射影を記述する射影行列K等の内部キャリブレーションパラメーター、又はレンズひずみ若しくは第1のカメラ170/370が受ける任意の他の形のひずみを記述するひずみパラメーターとすることができる。そのような例において、特定は、制御回路111によって実行される内部カメラキャリブレーションの一部とすることができる。場合によっては、キャリブレーションパラメーターは、第1のカメラ170/370と、3Dキャリブレーションパターン160/360の特定の2Dキャリブレーションパターンとの間の空間的関係、又はより一般的には、第1のカメラ170/370と、
図1E及び/又は
図3A〜
図3Fの3Dキャリブレーションパターン160/360との間の空間的関係を記述する変換関数とすることができる。例えば、変換関数は、カメラN(例えば、第1のカメラ370)の座標系と、2DキャリブレーションパターンM(例えば、第1の組の2Dキャリブレーションパターン366A〜366Eのいずれか)の座標系との間の線形変換(例えば、回転及び並進)を記述する行列
【数9】
とすることができる。より具体的な例として、制御回路111は、第1のカメラ170/370に関する射影行列K
Camera1の推定行列、第1のカメラ170/370に関する複数のひずみパラメーターのそれぞれの推定値、及び行列
【数10】
を特定することができる。上記の例において、Camera1は第1のカメラ370を指すことができ、2DPattern1〜2DPattern5は、2Dキャリブレーションパターン366A〜366Eをそれぞれ指すことができる。一実施形態において、制御回路111は、3Dキャリブレーションパターン160/360の第1の組の2Dキャリブレーションパターン(例えば、366A〜366E)のパターン要素(例えば、ドット)を記述する記憶された情報に基づいて、内部キャリブレーションパラメーターの推定値及び変換関数の推定関数を特定することができる。例えば、特定は、パターン要素が第1の組のキャリブレーション画像内に現れる位置を記述するピクセル座標に基づくことができ、3Dキャリブレーションパターン160/360の座標系内、又は2Dキャリブレーションパターン366A〜366Fのうちの1つの2Dキャリブレーションパターンの座標系内のパターン要素に関する規定された位置に基づくことができる。特定は、例えば、Zhengyou Zhangによる「A Flexible New Technique for Camera Calibration」(Technical Report MSR-TR-98-71)に記述されているパースペクティブnポイント(Perspective-n-Point)アルゴリズム(Zhangのアルゴリズムとも呼ばれる)、任意の他のアルゴリズム、又はその組み合わせを使用することができる。キャリブレーション画像に基づいて、キャリブレーションパラメーターの推定値を特定することは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第16/295,940号において更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【0056】
一実施形態において、推定されるキャリブレーションパラメーターは、第1のカメラ170/370と
図1B、
図1D、
図1E及び/又は
図3Aのプラットフォーム150/350との間の空間的関係、又はより具体的には、第1のカメラ170/370と、プラットフォーム150/350の
図3Aの中心355との間の空間的関係を記述する変換関数とすることができる。例えば、変換関数は、第1のカメラ170/370の座標系と、プラットフォーム150/350の座標系との間の線形変換を記述する行列
【数11】
とすることができる。場合によっては、プラットフォーム150/350の中心355は、或る世界点(world point)として取り扱うことができ、
【数12】
は、第1のカメラ170/370とその世界点との間の関係を記述することができる。場合によっては、キャリブレーションパラメーターの推定値を特定することは、ハンドアイキャリブレーション段階(hand-eye calibration phase)の一部とすることができる。例えば、ハンドアイキャリブレーション段階は、式:
【数13】
に基づいて、
【数14】
を解くことを伴うことができる。
【0057】
この例において、
【数15】
は、プラットフォーム150/350の座標系と、
図3Gのリンク点357等のリンク点の座標系との間の空間的関係を記述する変換関数とすることができる。一実施形態において、リンク点357は、プラットフォーム350の中心355以外の、プラットフォーム350上の任意の点とすることができる。場合によっては、リンク点357は、3Dキャリブレーションパターン360に対して静止している点とすることができる。一実施形態において、リンク点357は、3Dキャリブレーションパターン360と接触しているプラットフォーム350上の任意の点とすることができる。この例において、
【数16】
は、(
図3Aの)アクチュエーター340がプラットフォーム350を回転させるか、又は別の方法で作動させる量に基づいて、制御回路111によって特定することができる。例えば、
【数17】
は、規定された初期位置に対してリンク点357が受ける回転量(例えば、60度又は100度の回転)を記述する回転行列を含むことができる。
【0058】
上記の例において、
【数18】
は、3Dキャリブレーションパターン160/360の座標系と、第1のカメラ170/370の座標系との間の空間的関係を記述する行列とすることができ、パースペクティブnポイントアルゴリズム又はZhangのアルゴリズム等の、上記のアルゴリズムのうちの1つに基づいて特定できた場合がある。さらに、
【数19】
は3Dキャリブレーションパターン160/360の座標系とリンク点357の座標系との間の空間的関係を記述する行列とすることができ、一方、
【数20】
は、第1のカメラ170/370の座標系とプラットフォーム150/350の座標系との間の空間的関係を記述する行列とすることができる。上記の例は、式1に基づいて、
【数21】
及び
【数22】
を解くハンドアイキャリブレーション演算を伴うことができる。ハンドアイキャリブレーション及び式1を解くことは、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題する米国特許出願第16/295,940号に更に詳細に記述されており、その内容全体が引用することにより本明細書の一部をなす。
【0059】
図2に戻ると、方法200は、ステップ203を更に含むことができ、そのステップでは、制御回路111が、(
図1Cの)通信インターフェース113を介して、第2のカメラ180/380から第2の組の1つ以上のキャリブレーション画像を受信することができる。第2の組の1つ以上のキャリブレーション画像は、
図3B〜
図3Fの多面体362の
図3C/
図3Eの面362F(例えば、底面)等の、多面体の別の面を取り込むことができる。別の面(例えば、面362F)は、第2のカメラ180/380が向けられる面とすることができ、及び/又はプラットフォーム150/350(例えば、プラットフォーム350の第1の表面352)と直接接触している多面体362の面とすることができる。さらに、第2の組の1つ以上のキャリブレーション画像は、別の面上に配置される別の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366F)を取り込むことができるか、又は別の面の輪郭(別の面の外形又はシルエットとも呼ばれる)を取り込むことができる。
【0060】
一実施形態において、第2の組の1つ以上のキャリブレーション画像は、異なるそれぞれの照明条件で第2のカメラ180/380によって取得された少なくとも一対のキャリブレーション画像を含むことができる。少なくとも一対のキャリブレーション画像は、第1の照明条件で第2のカメラ180/380によって取得される第1のキャリブレーション画像と、第1の照明条件とは異なる第2の照明条件で第2のカメラ180/380によって取得される第2のキャリブレーション画像とを含むことができ、第1のキャリブレーション画像及び第2のキャリブレーション画像はいずれも、プラットフォーム150/350上の3Dキャリブレーションパターン160/360の同じ位置及び/又は姿勢に関して生成される。より具体的には、3Dキャリブレーションパターン160/360は、少なくとも一対のキャリブレーション画像の第1のキャリブレーション画像が取得される時点と、少なくとも一対のキャリブレーション画像の第2のキャリブレーション画像が取得される時点との間で、第2のカメラ180/380に対して静止したままであった場合がある。場合によっては、第2の組の1つ以上のキャリブレーション画像は、複数対のキャリブレーション画像を含むことができ、各対が、第1の照明条件で第2のカメラ180/380によって取得されるそれぞれの第1のキャリブレーション画像と、第2の照明条件で第2のカメラ180/380によって取得されるそれぞれの第2のキャリブレーション画像とを含む。
【0061】
一実施形態において、第1の照明条件は、第2のカメラ180/380から見て、3Dキャリブレーションパターン160/360が後方から照明されるバックライト照明条件である。バックライト照明条件は、例えば、第1の光源120/320を点灯させることによって作り出すことができる。3Dキャリブレーションパターン160/360は第2のカメラ180/380と第1の光源120/320との間に配置されるので、第2のカメラ180/380から見て、3Dキャリブレーションパターン160/360が後方から照明されると見なすことができる。そのような実施形態では、少なくとも一対のキャリブレーション画像の第1のキャリブレーション画像は、その対のそれぞれのバックライトキャリブレーション画像と呼ばれる場合がある。場合によっては、第1の照明条件は、第2の光源130/330が消灯することを更に伴うことができる。場合によっては、後に更に詳細に論じられるように、バックライトキャリブレーション画像は、3Dキャリブレーションパターン160/360の多面体(例えば、362)の別の面(例えば、362F)のシルエットを取り込むことができる。
【0062】
一実施形態において、第2の照明条件は、第2のカメラ180/380から見て、3Dキャリブレーションパターン160/360が前方から照明されるフロントライト照明条件である。フロントライト照明条件は、例えば、第2の光源130/330を点灯させることによって作り出すことができる。第2の光源130/330は、3Dキャリブレーションパターン160/360の多面体の別の面(例えば、362F)(又は第2のカメラ180/380から視認できる多面体の任意の他の面)を直接照明することができるので、第2のカメラ180/380から見て、3Dキャリブレーションパターン160/360は前方から照明されると見なすことができる。そのような実施形態では、少なくとも一対のキャリブレーション画像の第2のキャリブレーション画像は、その対のそれぞれのフロントライトキャリブレーション画像と呼ばれる場合がある。場合によっては、第2の照明条件は、第1の光源120/320を消灯させることを更に伴うことができる。場合によっては、後に更に詳細に論じられるように、フロントライトキャリブレーション画像は、3Dキャリブレーションパターン160/360の多面体の別の面(例えば、362F)上に配置される2Dキャリブレーションパターン(例えば、366F)を取り込むことができる。一実施形態において、第2の組の1つ以上のキャリブレーション画像は複数対の画像を含むことができ、各対がそれぞれのバックライトキャリブレーション画像及びそれぞれのフロントライトキャリブレーション画像を含む。少なくとも一対のキャリブレーション画像の一例として、
図5A及び
図5Bは、第1の照明条件で第2のカメラ180/380によって取得される第1のキャリブレーション画像400(例えば、バックライトキャリブレーション画像)と第2の照明条件で第2のカメラ180/380によって取得される第2のキャリブレーション画像450(例えば、フロントライトキャリブレーション画像)との対を示す。
【0063】
場合によっては、
図1B、
図1D、
図1E及び/又は
図3Aの第2のカメラ180/380を用いて、その対のそれぞれの第1のキャリブレーション画像400及びその対のそれぞれの第2のキャリブレーション画像450の両方を取得することは、撮像誤差源を補償することができる。例えば、
図1D〜
図1E/
図3Aのプラットフォーム150/350の透明材料(例えば、ガラス)は、その材料を通って第2のカメラ180/380まで進む光を曲げるか、又は別の方法でひずませる場合がある。このひずみは撮像誤差源になる場合があり、
図1C/
図3Aの制御回路111が、例えば、3Dキャリブレーションパターン160/360の多面体(例えば、
図3Aの多面体362)の底面角の位置等の
図1E/
図3Aの3Dキャリブレーションパターン160/360の特徴を正確に識別する能力を低下させるおそれがある。2つのキャリブレーション画像400/450は異なる照明条件で取得されるので、場合によっては、その対のそれぞれの第2のキャリブレーション画像450(例えば、フロントライトキャリブレーション画像)が、その対のそれぞれの第1のキャリブレーション画像400(例えば、バックライトキャリブレーション画像)内に存在する場合があるひずみ又は他の撮像誤差を補償するために使用することができる情報を含む場合があり、逆も同様である。例えば、後に更に詳細に論じられるように、制御回路111は、第2のカメラ180/380によって取得される一対のキャリブレーション画像のそれぞれの第1のキャリブレーション画像400及びそれぞれの第2のキャリブレーション画像450の両方を用いて、3Dキャリブレーションパターン160/360の多面体の別の面(例えば、
図3Eの面362F)の角の位置に関する座標を特定するように構成することができる。
【0064】
一実施形態において、第2のカメラ180/380によって取得される一対のキャリブレーション画像のそれぞれの第1のキャリブレーション画像400は、上記で言及されたように、3Dキャリブレーションパターン(例えば、360)の多面体(例えば、362)の別の面(例えば、362F)のシルエット412を取り込むことができ、バックライト照明条件で生成することができる。一例において、バックライト照明条件は、
図1B及び
図3Aの第1の光源120/320(例えば、上部LED)を点灯させ、
図1B及び
図3Aの第2の光源130/330(例えば、底部LED)を消灯させることによって作り出すことができる。例えば、制御回路111は、第1の光源120/320を点灯させ、第2の光源130/330を消灯させるために、
図1Cの通信インターフェース113を介して、第1の光源120/320及び第2の光源130/330に第1の組の1つ以上の光源コマンドを出力することができる。第2の光源130/330は、多面体(例えば、多面体362)の別の面(例えば、面362F)の方に、又は別の面に向けることができ、一方、第1の光源120/320は別の面の後方に(例えば、第2の光源130/330から見て、又は第2のカメラ180/380から見て後方に)位置すると見なすことができる。この実施形態では、第1の光源120/320が点灯し、第2の光源130/330が消灯している間に、第2のカメラ180/380に少なくとも一対のキャリブレーション画像のうちの(
図5Aの)第1のキャリブレーション画像400を生成させるために、通信インターフェース113を介して、第2のカメラ180/380に第1の組の1つ以上のカメラコマンドを更に出力することができ、少なくとも一対のキャリブレーション画像は、第2のカメラ180/380によって取得されるか、又は別の方法で生成される第2の組の1つ以上のキャリブレーション画像の一部である。上記の実施形態において、第2の光源130/330は消灯しているので、
図1B又は
図3Aのプラットフォーム150/350の
図1B、
図1D〜
図1E/
図3Aの第2の表面154/354(例えば、底面)にも、キャリブレーションパターン160/360の多面体(例えば、362)の別の面(例えば、面362F)にも光は与えられない。したがって、多面体の別の面は、一対のキャリブレーション画像の第1のキャリブレーション画像(例えば、400)において暗く見える場合がある。さらに、3Dキャリブレーションパターン160/360は、第1の光源120/320を遮るか、若しくは覆い隠す場合があるか、又はより一般的には、点灯している第1の光源120/320から、第2のカメラ180/380を部分的に、又は完全に遮断する場合がある。そのような条件が、3Dキャリブレーションパターン160/360の多面体の別の面(例えば、362F)のシルエット412を更に強調することができる。
【0065】
一実施形態において、
図5Bの第2のキャリブレーション画像450は、上記で論じられたように、フロントライト照明条件の間に生成することができる。一例において、フロントライト照明条件は、
図1B又は
図3Aの第1の光源120/320(例えば、上部LED)が消灯し、第2の光源130/330(例えば、底部LED)が点灯するときに作り出すことができる。例えば、制御回路111は、通信インターフェース113を介して、第1の光源120/320に、そして第2の光源130/330を点灯させるために第2の光源130/330に、第2の組の1つ以上の光源コマンドを出力することができる。場合によっては、第2の組の1つ以上の光源コマンドは、第1の光源120/320を消灯させることもできる。第2の光源130/330が点灯しており、第1の光源120/320が消灯している間に、第2のカメラ180/380に少なくとも一対のキャリブレーション画像の第2のキャリブレーション画像450を生成させるために、制御回路111は、通信インターフェース113を介して、第2のカメラ180/380に第2の組の1つ以上のカメラコマンドを更に出力することができ、少なくとも一対のキャリブレーション画像は、第2のカメラ180/380によって取得される第2の組の1つ以上のキャリブレーション画像の一部である。
図5Bに示されるように、第2のキャリブレーション画像450は、3Dキャリブレーションパターン160/360の複数の2Dキャリブレーションパターン(例えば、366A〜366F)のうちの別の2Dキャリブレーションパターン(例えば、
図3Eの2Dキャリブレーションパターン366F)を取り込む画像部分466Fを有することができ、別の2Dキャリブレーションパターンは、3Dキャリブレーションパターン160/360の多面体の別の面(例えば面362F)上に配置される。
【0066】
図5A及び
図5Bは、ステップ203における第2の組のキャリブレーション画像が3Dキャリブレーションパターンの多面体の別の面(例えば、362F)のみを取り込むことができ、かつ多面体の第1の組の面(例えば、面366A〜366E)のいずれも取り込まない実施形態を示す。別の面は、プラットフォーム150/350と直接接触している面とすることができる。他の実施形態では、第2の組のキャリブレーション画像は、3Dキャリブレーションパターンの多面体の第1の組の面のうちの1つ以上(例えば、
図3D及び
図3Eの面366C又は366E)を取り込むこともできる。例えば、第2のカメラ180/380は、或る角度をなして第1の組の面のうちの1つ以上を視認し、(別の面362Fを取り込むことに加えて)第1の組の面の1つ以上を取り込むキャリブレーション画像を生成できる場合がある。しかしながら、第2のカメラ180/380はプラットフォーム150/350の透明材料を通して第1の組の面の1つ以上(例えば、面362C)を視認しているので、第2のカメラ180/380が第1の組の面を正面から視認していない場合に特に、透明材料は、第2の組の1つ以上のキャリブレーション画像における第1の組の面の見え方にひずみを導入する場合がある。したがって、制御回路111は、いくつかの実施態様において、第2の組の1つ以上のキャリブレーション画像から、多面体の第1の組の面のいずれか(例えば、面362C、362E)を取り込む画像部分を除去することができる。いくつかの実施態様において、制御回路111は、第1の組の面のいずれかを取り込む第2の組の1つ以上のキャリブレーション画像の画像部分を単に無視することができる。
【0067】
一実施形態において、制御回路111は、第2の組の1つ以上のキャリブレーション画像に基づいて、第2のカメラ180/380に関するキャリブレーションパラメーターの推定値を特定するように構成することができる。例えば、制御回路111は、第2のカメラ180/380に関する、射影行列K
Camera2又はひずみパラメーター等の、内部キャリブレーションパラメーターの推定値を特定するために、第2のカメラ180/380に関する内部キャリブレーションを実行するように構成することができる。場合によっては、キャリブレーションパラメーターは、変換関数
【数23】
を含むことができ、2DPattern6は、例えば、別の3Dキャリブレーションパターン366Fを指すことができ、Camera2は第2のカメラ380を指すことができる。一実施形態において、内部キャリブレーションパラメーターの推定値又は
【数24】
の推定関数は、キャリブレーション画像450内に、又はそのパターン要素が現れる第2の組の1つ以上のキャリブレーション画像の任意の他のキャリブレーション画像内に現れる、別の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366F)のパターン要素(例えば、ドット)に基づいて特定することができる。その推定は、第1のカメラ170/370の場合の推定と同じようにして実行することができる。
【0068】
一実施形態において、ステップ201の間に第1のカメラ170/370によって生成される第1の組のキャリブレーション画像はそれぞれ、ステップ203の間に第2のカメラ180/380によって生成される第2の組のキャリブレーション画像の少なくとも1つに対応することができ、逆も同様である。第1の組のキャリブレーション画像のキャリブレーション画像が生成された時点と、第2の組の1つ以上のキャリブレーション画像のキャリブレーション画像が生成された時点との間の期間において、3Dキャリブレーションパターン160/360が、第1のカメラ170/370に対して、かつ第2のカメラ180/380に対して静止したままであった場合には、場合によっては、第1の組のキャリブレーション画像のキャリブレーション画像が、第2の組の1つ以上のキャリブレーション画像のキャリブレーション画像に対応すると見なすことができる。両方のキャリブレーション画像に関して、3Dキャリブレーションパターン160/360がプラットフォーム150/350上で同じ位置及び/又は姿勢にあった間に、2つのキャリブレーション画像が取得されたか、又は別の方法で生成された場合には、場合によっては、第1のカメラ170/370によって取得されるか、又は別の方法で生成されるキャリブレーション画像は、第2のカメラ180/380によって取得されるか、又は別の方法で生成されるキャリブレーション画像に対応すると見なすことができる。
【0069】
図2に戻ると、方法200はステップ205〜209を更に含むことができ、それらのステップでは、制御回路111が、3Dキャリブレーションパターン160/360の多面体(例えば、多面体362)の1組の角の座標を特定することができる。制御回路111は、第1のカメラ170/370に対する(例えば、第1のカメラ170/370の座標系において)これらの角に関する1組の座標を特定し、第2のカメラ180/380に対する(例えば、第2のカメラ180/380の座標系において)当該角に関する1組の座標を特定することができる。場合によっては、制御回路111は、2組の座標を用いて、第1のカメラ170/370と第2のカメラ180/380との間の空間的関係を特定することができる。空間的関係は、第2のカメラ180/380に対する第1のカメラ170/370の位置及び/又は向きを記述することができ、逆も同様である。一例において、空間的関係は、行列
【数25】
として表すことができ、その行列は、第1のカメラ170/370の座標系(Camera1と表記される)と、第2のカメラ180/380の座標系(Camera2と表記される)との間の線形変換を表す。
【0070】
より具体的には、ステップ205において、制御回路111は、第1の組の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366A〜366E)に基づいて、第1のカメラ170/370の位置及び向きに対する多面体(例えば、多面体362)の別の面(例えば、面362F)の1組のそれぞれの角を表す第1の組の座標を特定することができる。例えば、1組のそれぞれの角は、
図3Cに表されるような、面362Fの1組の4つの角364a〜364dとすることができる。場合によっては、この1組のそれぞれの角364a〜364dは、3Dキャリブレーションパターン360の多面体362の底面角とすることができる。場合によっては、第1の組の座標は、第1のカメラ170/370の座標系内に存在することができる。一実施形態において、1組のそれぞれの角は3Dキャリブレーションパターン160/360の多面体(例えば、多面体362)の、例えば、底面の角であるので、それらの角は第2のカメラ180/380から常に視認できる場合があるのに対して、1組のそれぞれの角の1つ以上は、場合によって、第1のカメラ170/370から視認できない場合がある。一実施形態において、制御回路111は、ステップ201において受信された第1の組のキャリブレーション画像のキャリブレーション画像ごとにステップ205を実行することができ、ステップ205は、キャリブレーション画像内に取り込まれた2Dキャリブレーションパターン及びパターン要素に基づいて、実行することができる。
【0071】
場合によっては、制御回路111は、3Dキャリブレーションパターン160/360の幾何学的形状に関する規定された情報(所定の情報とも呼ばれる)を用いて、第1の組の座標を特定することができる。例えば、ステップ205は、第1の組のキャリブレーション画像内の第1の組の2Dキャリブレーションパターン(例えば、366A〜366E)に基づいて、多面体(例えば、多面体362)の3Dモデルを決定することを伴うことができる。そのような実施形態において、多面体の別の面の1組のそれぞれの角(例えば、角364a〜364d)に関する第1の組の座標は、多面体(例えば、多面体362)の3Dモデルに基づいて特定することができる。一実施形態において、多面体の3Dモデルは、多面体の3次元構造を記述することができる。例えば、3Dモデルは、多面体の面間の空間的関係を記述することができる。場合によっては、多面体の2つ以上の面間の空間的関係は、行列等の変換関数として表すことができる。
【0072】
3Dキャリブレーションパターンの多面体の3Dモデルを生成し、使用する一例として、制御回路111は、第1の組の2Dキャリブレーションパターン(例えば、366A〜366E)に基づいて、多面体(例えば、多面体362)の第1の組の面(例えば、362A〜362E)によって形成されるそれぞれの仮想面を記述する情報を特定することができる。この例において、多面体の3Dモデルは、少なくとも、それぞれの仮想面を記述する情報によって表すことができる。場合によっては、制御回路111は、多面体の3つのそれぞれの面(例えば、多面体362の面362A、面362B及び面362C)に対応する3つの仮想面の交点として、多面体の上面(例えば、
図3Bの面362A)の角等の、多面体の角の座標を特定することができる。また、交点は、それぞれの仮想面のうちの少なくとも3つが交わる位置と呼ばれる場合もある。場合によっては、多面体の3Dモデルは、多面体の寸法の規定値を更に含むことができる。キャリブレーションパターン160/360の多面体の寸法(例えば、サイズ)は、制御回路111によって記憶できるか、又は別の方法でアクセス可能な場合がある規定値を有するので、制御回路111は、後に更に詳細に論じられるように、規定寸法を用いて、多面体の底面の角等の、多面体の別の角の座標を更に特定することができる。
【0073】
一実施形態において、制御回路111は、多面体(例えば、多面体362)の第1の組の面(例えば、面362A〜362E)間の関係に基づいて、それぞれの仮想面を記述する情報を特定することができる。一例として、
図3Aの3Dキャリブレーションパターン360は、3Dキャリブレーションパターン360の多面体362の6つの面362A〜362Fのそれぞれの向きを規定する、6つの仮想面によって画定することができる。6つの仮想面はそれぞれ、6つの面362A〜362Fと同一平面をなすことができる。一実施形態において、制御回路111は、仮想面に対応する面上に配置される2Dキャリブレーションパターンのパターン要素に基づいて、特定の仮想面を識別するように構成することができる。例えば、制御回路111は、面362A上に配置される2Dキャリブレーションパターン366Aの少なくとも3つのドットの位置に基づいて、
図3Dの多面体362の面362Aによって画定される仮想面を識別するように構成することができ、それらの少なくとも3つのドットは同一直線上にない。より具体的には、制御回路111は、面362Aによって画定される仮想面を識別する情報を特定するように構成することができる。その情報は、例えば、仮想面に対する法線ベクトル、若しくは平面を表す式(例えば、ax+by+cz=0)の形をとることができるか、又は何らかの他の形の情報を有することができる。制御回路111は、2Dキャリブレーションパターン366Aの少なくとも3つのドットのそれぞれの位置に基づいて、この情報を特定するように構成することができる。同様に、制御回路111は、2Dキャリブレーションパターン366B〜366Eのパターン要素の位置に基づいて、面362B〜362Eのうちの1つ以上によって画定されるそれぞれの仮想面を識別するように構成することができる。
【0074】
上記で言及されたように、制御回路111は、多面体の第1の組の面(例えば、362A〜362E)間の空間的関係を特定することができる。そのような実施形態では、それぞれの仮想面を記述する情報は、多面体(例えば、多面体362)の第1の組の面(例えば、面362A〜362E)間の空間的関係に基づくことができる。一実施形態において、第1の組の面間の空間的関係は変換関数
【数26】
として表すことができ、2DPatternMは第1の組の2Dキャリブレーションパターンのうちの1つ(例えば、第1の組の2Dキャリブレーションパターン366A〜366Eのうちの1つ)であり、2DPatternNは第1の組の2Dキャリブレーションパターンのうちの別の1つである。例えば、
【数27】
は、2Dキャリブレーションパターン366Aによって形成される仮想面と2Dキャリブレーションパターン366Bによって形成される仮想面との間の90度回転を記述することができ、2D Pattern1は
図3Dの2Dキャリブレーションパターン366Aを指しており、2D Pattern2は
図3Dの2Dキャリブレーションパターン366Bを指している。変換関数によって記述されるこの空間的関係を用いて、共通の座標系において仮想面に関する情報を表すことができる。
【数28】
を特定する一例として、制御回路111は、
【数29】
及び
【数30】
に基づいて、
【数31】
を特定することができる。
【数32】
及び
【数33】
の特定は上記で説明されている。一例において、
【数34】
及び
【数35】
の特定は、式:
【数36】
を解くことを伴うことができる。
【0075】
上記の式において、[u,v]は、キャリブレーション画像内に2DキャリブレーションパターンN(例えば、366A又は366B)のパターン要素が現れるピクセル座標を指すことができ、k
Camera1は、第1のカメラ170/370の射影行列とすることができる。キャリブレーション画像は、ステップ201において受信された第1の組のキャリブレーション画像のうちの1つとすることができる。さらに、座標[x,y,z]は2DキャリブレーションパターンNの座標系(2DキャリブレーションパターンNのパターン座標系とも呼ばれる)内のそのパターン要素の規定された座標とすることができる。上記で言及されたように、
【数37】
及び
【数38】
は、2Dキャリブレーションパターン366A(2DPattern1と表記される)と2Dキャリブレーションパターン366B(2DPattern2と表記される)との間の空間的関係を特定するために特定することができる。一例において、2Dキャリブレーションパターン366Aと2Dキャリブレーションパターン366Bとの間の空間的関係は、式:
【数39】
に基づいて特定することができる。
【0076】
上記の例において、2Dキャリブレーションパターン366Aは面362A上に配置され、2Dキャリブレーションパターン366Bは面362B上に配置されるので、変換関数
【数40】
は、
図3Dの多面体362の面362Aと面362Bとの間の空間的関係を更に記述することができる。一例において、上記で言及されたように、
【数41】
は、面362Aと面362Bとの間の90度回転を記述することができる。一実施形態において、制御回路111は、上記で説明されたのと同じようにして、
【数42】
(2DPattern3、2DPattern4及び2DPattern5はそれぞれ2Dキャリブレーションパターン366C〜366Eを指す)のうちの1つ以上を特定することができるか、又は2Dキャリブレーションパターンの何らかの他の組み合わせ間の変換関数を特定することができる。
【0077】
一実施形態において、制御回路111は、多面体(例えば、多面体362)の第1の組の面(例えば、362A〜362E)間の空間的関係を用いて、多面体の第1の組の角(例えば、上面角)に関する1組の座標を特定することができる。これらの座標を用いて、多面体の他の角(例えば、底面角)に関する座標を特定することができる。例えば、空間的関係は、
【数43】
及び
【数44】
等の変換関数によって記述することができ、第1の組の角は、
図3Dの多面体362の面362Aの角とすることができる。この例において、制御回路111は、上記のように、
図3Dの、面362Aによって画定される第1の仮想面を識別する情報を特定し、面362Bによって画定される第2の仮想面を識別する情報を特定し、面362Cによって画定される第3の仮想面を識別する情報を特定することができる。一実施形態において、制御回路は、
【数45】
及び
【数46】
を用いて、2Dキャリブレーションパターン366Aである、Pattern1の座標系等の、共通の座標系において上記の情報を表すことができる。より具体的には、制御回路111が、第2の仮想面を識別する情報を特定するとき、この情報は最初に、面362B上に配置される2Dキャリブレーションパターン366Bである、Pattern2の座標系に対して表すことができる。同様に、制御回路111が、第3の仮想面を識別する情報を特定するとき、この情報は最初に、面362C上に配置される2Dキャリブレーションパターン366Cである、Pattern3の座標系に対して表すことができる。第2の仮想面を識別する情報(例えば、法線ベクトル又は仮想面を記述する式)を2Dキャリブレーションパターン366Bの座標系において表すことから、2Dキャリブレーションパターン366Aの座標系において表すように変換するために、制御回路111は、その情報に、
【数47】
又はその逆関数を適用する(例えば、乗算する)ことができる。第3の仮想面を識別する情報を2Dキャリブレーションパターン366Cの座標系において表すことから、2Dキャリブレーションパターン366Aの座標系において表すように変換するために、制御回路111は、その情報に、
【数48】
又はその逆関数を更に適用することができる。
【0078】
一実施形態において、第1の仮想面、第2の仮想面及び第3の仮想面を識別する情報が、2Dキャリブレーションパターン366Aの座標系等の共通の座標系に対して表された後に、制御回路111は、第1の仮想面、第2の仮想面及び第3の仮想面が交わる座標を特定するように構成することができる。この座標は、第1の組の角のうちの1つ(例えば、
図3Cの角364bの真上にある面362Aの角)の位置とすることができる。一実施形態において、この交点の特定は、後に更に詳細に論じられるように、制御回路111が、第4の仮想面及び第5の仮想面を識別する情報を特定した後に行うことができる。
【0079】
より具体的には、上記の例において、第1の仮想面、第2の仮想面及び第3の仮想面は、多面体362の第1の組の面362A〜362Eのうちの第1の面362A、第2の面362B及び第3の面362Cによって画定することができ、より一般的には、それらの面と同一平面をなすことができる。一実施形態において、制御回路111は、多面体(例えば、362)の第1の組の面362A〜362Eの第4の面362Dによって画定される、より一般的には、第4の面362Dと同一平面をなす第4の仮想面を識別する情報を特定するように構成することができる。この特定は、3Dキャリブレーションパターン360の多面体362の規定寸法「d」に基づくことができる。上記で言及されたように、規定寸法「d」は、多面体362の3Dモデルの一部とすることができる。3Dモデルは、例えば、多面体362が立方体であることを示すことができる。制御回路111は、多面体362が寸法「d」を有する立方体であるので、第4の面362Dが、それゆえ、第1の面362Aに平行であり、規定寸法「d」に等しい距離だけ第1の面362Aから離間されると判断することができる。その際、制御回路111は、第1の仮想面に平行であり、寸法「d」に等しい距離だけ第1の仮想面から離間される仮想面として第4の仮想面を特定することができる。
【0080】
同様に、制御回路111は、(
図3Eの)第5の面362Eによって画定されるか、又はより一般的には、その面と同一平面をなす第5の仮想面を識別する情報を特定するように構成することができる。例えば、制御回路は、多面体362が寸法「d」を有する立方体であるので、第5の面362Eが、それゆえ、第3の面362Cと平行であり、第3の面362Cから寸法「d」に等しい距離だけ離間されると判断することができる。その際、制御回路111は、第3の仮想面と平行であり、第3の仮想面から寸法「d」に等しい距離だけ離間される仮想面として第5の仮想面を特定することができる。
【0081】
一実施形態において、制御回路111は、第1の仮想面から第5の仮想面までの仮想面が互いに交わる点の座標を特定することができ、それらの点はそれぞれ、第1の仮想面から第5の仮想面までの仮想面の中からの少なくとも3つの仮想面の交点である。上記の例において、第1の仮想面から第5の仮想面までの仮想面は少なくとも4つの交点を有することができ、各交点は、仮想面のうちの少なくとも3つの仮想面の交点である。これら4つの交点は、多面体362の面362Aの4つの角と一致する場合がある。これら4つの角は、上記で列挙された第1の組の角とすることができる。一実施形態において、これら4つの角は、多面体362の1組の上面角とすることができる。一実施形態において、制御回路111は、例えば、2Dキャリブレーションパターン366AであるPattern1の座標系において最初に上記の座標を特定する。制御回路111は、
【数49】
を用いて、これらの座標を、Pattern1の座標系内から第1のカメラ170/370の座標系内に変換するように構成することができる。これらの座標は別の1組の座標と見なすことができ、その座標を用いて、ステップ205において多面体の別の面(例えば、362F)の角の第1の組の座標を特定することができる。
【0082】
より具体的には、ステップ205を再び参照すると、制御回路111は、一実施形態において、第1の組の角に関して上記で特定された座標に基づいて、3Dキャリブレーションパターン160/360の多面体(例えば、362)の別の面(例えば、面362F)の1組のそれぞれの角に関する第1の組の座標を特定することができる。例えば、ステップ205における別の面のそれぞれの角(例えば、角364a〜364d)は多面体(例えば、多面体362)の底面角とすることができ、一方、上記の第1の組の角(例えば、面362Aの角)は多面体の上面角とすることができる。場合によっては、第1の組の角の座標は、別の1組の座標、すなわち第3の組の座標と呼ばれる場合がある。そのような例において、制御回路111は、第1の組の角(例えば、上面角)に関する別の1組の座標すなわち第3の組の座標に基づいて、かつ3Dキャリブレーションパターン360の多面体(例えば、362)の規定寸法に基づいて、別の面の角(例えば、底面角)に関する第1の組の座標を特定するように構成することができる。
【0083】
例えば、制御回路111は、多面体の別の面の角に関する第1の組の座標を、別の1組の座標のそれぞれの座標から規定寸法「d」に等しい距離だけそれぞれ離間された1組の座標として特定するように構成することができる。例えば、別の1組の座標が3Dキャリブレーションパターン360のキャリブレーションパターン366Aの座標系内の座標[x
1,y
1,z
1]、[x
2,y
2,z
2]、[x
3,y
3,z
3]、[x
4,y
4,z
4]を含む場合には、制御回路111は、第1の組の座標の対応する座標を、同じくキャリブレーションパターン366Aの座標系内の、[x
1,y
1,z
1−d]、[x
2,y
2,z
2−d]、[x
3,y
3,z
3−d]、[x
4,y
4,z
4−d]に等しいと判断することができる。そのような例において、制御回路111は、これらの座標をキャリブレーションパターン366Aの座標系内から第1のカメラ370の座標系内に変換するために、[x
1,y
1,z
1−d]、[x
2,y
2,z
2−d]、[x
3,y
3,z
3−d]、[x
4,y
4,z
4−d]のそれぞれを
【数50】
又はその逆関数と乗算するように構成することができる。
【0084】
図2に戻ると、方法200はステップ207を更に含むことができ、そのステップでは、ステップ203において受信された第2の組の1つ以上のキャリブレーション画像に基づいて、制御回路111が、第2のカメラ180/380の位置及び向きに対する多面体(例えば、362)の別の面(例えば、362F)の1組のそれぞれの角(例えば、364a〜364d)を表す第2の組の座標を特定することができる。一実施形態において、第2の組の座標は、第2のカメラ180/380の座標系内に存在することができる。ステップ209に関して後に更に詳細に論じられるように、制御回路111は、第1の組の座標を第2の組の座標に変換する変換関数を特定することによって、第1のカメラ170/370と第2のカメラ180/380との間の空間的関係を特定するように構成することができ、逆も同様である。第1の組の座標は、第1の組のキャリブレーション画像のうちの少なくとも1つのキャリブレーション画像から特定することができ、第2の組の座標は、第2の組の1つ以上のキャリブレーション画像のうちの1つ以上の対応するキャリブレーション画像から特定することができる。上記で論じられたように、第1のカメラ170/370によって取得されたキャリブレーション画像及び第2のカメラ180/380によって取得されたキャリブレーション画像は、2つのキャリブレーション画像が取得された時点間で、3Dキャリブレーションパターン160/360が両方のカメラに対して静止したままであった場合には、互いに対応することができる。この実施形態において、制御回路111は、第2の組のキャリブレーション画像のうちの1つにおいて1組のそれぞれの角(例えば、364a〜364d)が現れるピクセル座標(例えば、4つのピクセル座標)を識別し、そのピクセル座標に逆射影行列
【数51】
を適用して、第2のカメラ180/380の座標系内のそれぞれの角の対応する座標を特定することによって、第2の組の座標を特定することができる。一実施形態において、制御回路111は、第2の組の1つ以上のキャリブレーション画像のキャリブレーション画像ごとにステップ207を実行することができる。
【0085】
一実施形態において、第2の組の1つ以上のキャリブレーション画像が、第1の照明条件で第2のカメラ180/380によって取得される第1のキャリブレーション画像(例えば、
図5Aの400)と、第2の照明条件で第2のカメラ180/380によって取得される第2のキャリブレーション画像(例えば、
図5Bの450)との少なくとも1つの対を含む場合には、ステップ207は、その対の第1のキャリブレーション画像及びその対の第2のキャリブレーション画像の両方を用いて実行することができる。第2の組の1つ以上のキャリブレーション画像が、それぞれの第1のキャリブレーション画像及びそれぞれの第2のキャリブレーション画像の複数対を含む場合には、ステップ207は、その対のそれぞれの第1のキャリブレーション画像及びその対のそれぞれの第2のキャリブレーション画像を用いて、対ごとに実行することができる。そのような実施形態の一例が
図5C及び
図5Dに示される。より具体的には、
図5Cは、第1の照明条件で第2のカメラ180/380によって取得される第1のキャリブレーション画像400の一部を示し、
図5Dは、第2の照明条件で第2のカメラ180/380によって取得される第2のキャリブレーション画像450の一部を示す。この例において、制御回路111は、
図5B及び
図5Dの第2のキャリブレーション画像450に基づいて、第2のカメラ180/380によって取得される一対の画像の第2のキャリブレーション画像450において別の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366F)のそれぞれの角が現れる1組のピクセル領域を特定することができる。例えば、
図5Dは、制御回路111が、(
図3Eの)別のキャリブレーションパターン366Fの4つのそれぞれの角が現れる1組のピクセル領域480a〜480dを特定した例を示す。一実施形態において、制御回路111は、1組のピクセル領域480a〜480dを、第2のキャリブレーション画像450内に現れるそれぞれの周辺パターン要素(例えば、周辺ドット)付近にある第2のキャリブレーション画像450内の領域として特定するか、又は別の方法で識別することができる。場合によっては、周辺パターン要素は、そのパターン要素の少なくとも一方の側において隣接するパターン要素を有しないか、又はそのパターン要素の複数の側において隣接するパターン要素を有しないパターン要素とすることができる。例えば、
図5Dは、第2のキャリブレーション画像450内に現れる周辺パターン要素482a〜482dを示し、周辺パターン要素482a〜482dはそれぞれ、その周辺パターン要素の少なくとも2つの側において隣接するパターン要素を有しない。場合によっては、
図5Dに示されるように、ピクセル領域480a〜480dはそれぞれ、規定サイズを有することができ、及び/又はそれぞれの周辺パターン要素482a〜482dから規定距離だけ離間することができる。他の場合には、ピクセル領域480a〜480dはそれぞれ、それぞれの周辺パターン要素482a〜482dを含むことができる。
【0086】
一実施形態において、制御回路111が、
図5Dの第2のキャリブレーション画像450内のピクセル領域480a〜480dを識別したか、又は別の方法で特定したとき、制御回路は、同じく1組のピクセル領域480a〜480d内で、
図5Cの第1のキャリブレーション画像400を探索し、第2のカメラ180/380によって取得される一対の画像の第1のキャリブレーション画像400内に別の面(例えば、362F)の1組のそれぞれの角(例えば、
図3Cの364a〜364d)が現れるピクセル座標を識別することができる。例えば、制御回路111が、一対の画像の第2のキャリブレーション画像450から、ピクセル領域のうちの1つがピクセル[u
1,v
1]、[u
2,v
2]、[u
3,v
3]、[u
4,v
4]によって囲まれる長方形領域であると判断する場合には、制御回路111は、一対の画像の第1のキャリブレーション画像400内の同じ長方形領域(すなわち、[u
1,v
1]、[u
2,v
2]、[u
3,v
3]、[u
4,v
4]によって囲まれる領域)を探索し、多面体の別の面のそれぞれの角のうちの1つの角のピクセル座標[u
a,v
a]を識別することができる。
【0087】
一実施形態において、第2のカメラ180/380によって取得される一対のキャリブレーション画像の第1のキャリブレーション画像(例えば、400)内に1組のそれぞれの角が現れるピクセル座標に基づいて、ステップ207において、1組のそれぞれの角に関する第2の組の座標が特定される。例えば、上記で言及されたように、制御回路111は、多面体の別の面のそれぞれの角のうちの1つの角のピクセル座標[u
a,v
a]を識別することができる。この例では、制御回路111は、その後、
【数52】
を計算した結果に基づいて、第2の組の座標のうちの1つ[x’y’z’]を特定することができる。
【0088】
異なるそれぞれの照明条件を用いて取得された一対のキャリブレーション画像を使用することを伴う上記の実施形態は、別の面のそれぞれの角のピクセル座標が特定されるロバスト性を改善することができる。例えば、
図5A〜
図5Dを参照すると、その対の第1のキャリブレーション画像400は、プラットフォーム150/350の透明材料によって、又は何らかの他の撮像誤差源によって引き起こされるひずみの結果として撮像誤差を含む場合がある。場合によっては、撮像誤差によって、第1のキャリブレーション画像400のいくつかの部分が、3Dキャリブレーションパターン160/360の多面体の面の角として誤って現れるおそれがある。しかしながら、制御回路111は、その対の第2のキャリブレーション画像450から識別されるピクセル領域のみに探索を制限することによって、そのような部分を多面体の面の角として誤って識別するのを回避することができる。第2のキャリブレーション画像450内で視認できるドット又は他のパターン要素に頼り、そのパターン要素のうちのいくつかに隣接するか、又はそれを包囲する領域のみを探索して、多面体の面の角を検出することによって、第2のキャリブレーション画像450は、ピクセル領域を十分な精度で識別できるようにする場合がある。結果として、第1の照明条件で取得される第1のキャリブレーション画像400と、第2の照明条件で取得される第2のキャリブレーション画像450との組み合わせを使用することは、3Dキャリブレーションパターン160/360の別の面のそれぞれの角のピクセル座標が特定されるロバスト性を改善することができる。
【0089】
一実施形態において、ステップ207は、
図5B及び
図5Dの第2のキャリブレーション画像450からの情報に基づいて、第2の組の座標を調整することを伴うことができる。例えば、制御回路111は、
図5A及び
図5Cの第1のキャリブレーション画像400内に取り込まれた別の面(例えば、面362F)のシルエット412に基づいて、多面体(例えば、多面体362)の別の面(例えば、面362F)の1組のそれぞれの角(例えば、364a〜364d)の第2の組の座標の第1の推定座標を特定することができる。一例として、制御回路111は、角364a〜364dの座標の第1の推定座標を[a
1’,b
1’,c
1’]、[a
2’,b
2’,c
2’]、[a
3’,b
3’,c
3’]及び[a
4’,b
4’,c
4’]と特定することができる。制御回路111は、角364a〜364dの座標の第1の推定座標が或る仮想面上に位置するか否かに基づいて、第1の推定座標を調整することができ、その仮想面は、第2のキャリブレーション画像450内に現れるパターン要素に基づいて特定される。より具体的には、制御回路111は、第2のキャリブレーション画像450内に取り込まれた別の2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366F)に基づいて、多面体の別の面(例えば、362F)によって形成される仮想面を記述する情報を更に特定することができる。例えば、仮想面は、別の2Dキャリブレーションパターン366Fの少なくとも3つのドット又は他のパターン要素によって画定される平面とすることができ、これら少なくとも3つのドットは同一直線上にない。その後、制御回路111は、第2の組の座標の第1の推定座標(例えば、[a
1’,b
1’,c
1’]、[a
2’,b
2’,c
2’]、[a
3’,b
3’,c
3’]及び[a
4’,b
4’,c
4’])と仮想面との間のそれぞれの偏差量を特定することができる。特定の推定座標に関する偏差量が、例えば、推定座標と仮想面との間で最も小さい距離、又は最短距離になる場合がある。この実施形態において、制御回路111は、第2の組の座標の第1の推定座標と仮想面との間のそれぞれの偏差量に基づいて、第2の組の座標の第2の推定座標(例えば、[x
1’,y
1’,z
1’]、[x
2’,y
2’,z
2’]、[x
3’,y
3’,z
3’]及び[x
4’,y
4’,z
4’])を特定することができる。例えば、制御回路111は、第2の組の座標の調整された推定座標と仮想面との間のそれぞれの偏差量を減少させるように、第2の組の座標の第1の推定座標(例えば、[a
1’,b
1’,c
1’]、[a
2’,b
2’,c
2’]、[a
3’,b
3’,c
3’]及び[a
4’,b
4’,c
4’])を調整することによって、第2の組の座標の第2の推定座標(例えば、[x
1’,y
1’,z
1’]、[x
2’,y
2’,z
2’]、[x
3’,y
3’,z
3’]及び[x
4’,y
4’,z
4’])を特定することができる。この実施形態において、第2の組の座標の第2の推定座標は、後に更に詳細に論じられるように、ステップ209において使用することができる。
【0090】
図2に戻ると、方法200はステップ209を更に含むことができ、そのステップでは、制御回路111が、第1の組の座標及び第2の組の座標に基づいて、第1のカメラ170/370と第2のカメラ180/380との間の空間的関係を記述する変換関数を特定することができる。空間的関係は、例えば、第2のカメラ180/380に対する第1のカメラ170/370の位置及び向きを記述することができ、逆も同様である。一実施形態において、変換関数は、第1のカメラ170/370であるCamera1の座標系と、第2のカメラ180/380であるCamera2の座標系との間の線形変換を記述する行列
【数53】
とすることができる。一実施形態において、ステップ209は、式(同次形):
【数54】
に基づいて、行列
【数55】
を特定することを伴うことができる。
【0091】
上記の例において、[X Y Z]
Tは、ステップ205において特定された第1の組の座標のうちの1つとすることができ、(例えば、第1のカメラ170/370の座標系内の)第1のカメラ170/370の位置及び向きを基準としている場合がある。例えば、座標[X Y Z]
Tは、例えば、
図3Cの底面角364aの座標とすることができ、
図4Aのキャリブレーション画像500等の、ステップ201において受信された第1の組のキャリブレーション画像のうちの1つであるキャリブレーション画像Mから特定することができる。この例において、[X’ Y’ Z’]
Tはステップ207において特定された第2の組の座標のうちの1つとすることができ、(例えば、第2のカメラ180/380の座標系内の)第2のカメラ180/380の位置及び向きを基準としている場合がある。さらに、[X’ Y’ Z’]
Tは[X Y Z]
Tによって表されるのと同じ角(例えば、底面角364a)の座標とすることができ、キャリブレーション画像Mに対応するステップ203の第2の組のキャリブレーション画像のうちの1つ以上のキャリブレーション画像から特定することができる。例えば、1つ以上のキャリブレーション画像は、
図4A及び
図4Bのキャリブレーション画像400及び450とすることができる。上記で言及されたように、キャリブレーション画像400/450が取得された時点とキャリブレーション画像500が取得された時点との間で、3Dキャリブレーションパターン160/360が第1のカメラ170/370及び第2のカメラ180/380に対して静止したままであった場合には、キャリブレーション画像400/450はキャリブレーション画像500に対応することができる。一実施形態において、ステップ209は、角N及びキャリブレーション画像Mの組み合わせごとに上記の式に最も当てはまる行列
【数56】
を特定することを伴うことができる。
【0092】
一実施形態において、変換関数(例えば、
【数57】
)は、第1の変換関数と呼ばれる場合がある。そのような実施形態において、制御回路111は、第1のカメラ170/370とプラットフォーム150/350(例えば、プラットフォーム350の中心355)との間の関係を記述する第2の変換関数(例えば、
【数58】
)を特定することによって、カメラキャリブレーションを実行することができる。この特定は、上記で論じられたように、第1のカメラ170/370のためのハンドアイキャリブレーションの一部とすることができる。
【0093】
一実施形態において、制御回路111は、第1の変換関数に基づいて、かつ第1のカメラ170/370のために実行されたハンドアイキャリブレーションに基づいて、第2のカメラ180/380のためのハンドアイキャリブレーションを実行することができる。例えば、制御回路111は、第1の変換関数(例えば、
【数59】
)及び第2の変換関数(例えば、
【数60】
)に基づいて、第2のカメラ180/380とプラットフォーム150/350(例えば、プラットフォーム350の中心355)との間の関係を記述する第3の変換関数を特定することができる。例えば、第3の変換関数は、関係:
【数61】
に基づいて特定することができる。
【0094】
一実施形態において、方法200は、第3のカメラ190を有するシステム(例えば、
図1Dのシステム100A)に関して実行することができる。場合によっては、第3のカメラ190は、プラットフォーム150/350の第1の表面152/352に隣接して配置する(例えば、その上方にわたって配置する)ことができ、プラットフォーム150/350の第1の表面152/352に向けることができ、第1の表面152/352は第3のカメラ190と、プラットフォーム150/350の第2の表面354との間に配置される。そのような実施形態では、通信インターフェース113は第3のカメラ190と通信することができ、制御回路111は、通信インターフェース113を介して、第3のカメラ190から第3の組のキャリブレーション画像を更に受信することによって、カメラキャリブレーションを実行することができ、第3の組のキャリブレーション画像も、多面体(例えば、多面体362)の第1の組の面(例えば、362A〜362E)と、第1の組の面上に配置される第1の組のそれぞれの2Dキャリブレーションパターン(例えば、2Dキャリブレーションパターン366A〜366E)とを取り込む。制御回路111は、別の変換関数(例えば、
【数62】
)を特定することができ、別の変換関数は、第1のカメラ170/370と第3のカメラ190との間の空間的関係を記述する。場合によっては、別の変換関数は、ステレオキャリブレーション技法に基づいて実行することができる。
【0095】
図2に戻ると、方法200はステップ211を更に含むことができ、そのステップでは、制御回路111は、カメラキャリブレーションが実行された後に、3Dキャリブレーションパターン160/360以外の物体がプラットフォーム150/350の第1の表面152/352上に配置されるときに、その物体を表す物体の3Dモデル(例えば、点群)を生成することができ、3Dモデルは、ステップ209からの変換関数(例えば、
【数63】
)に基づいて、通信インターフェース113を介して第1のカメラ170/370から受信される物体の画像に基づいて、そして、通信インターフェース113を介して第2のカメラ180/380から受信される物体の画像に基づいて生成される。物体は、例えば、倉庫内の梱包品又は1つの在庫品とすることができるか、又は製造工場において製品上に組み立てられることになる構成部品とすることができる。いくつかの実施態様において、3Dモデルは、第1のカメラ170/370とプラットフォーム150/350との間の関係を記述する変換関数(例えば、
【数64】
)、及び第2のカメラ180/380とプラットフォーム150/350との間の関係を記述する別の変換関数(例えば、
【数65】
)に基づいて特定することができる。一実施形態において、制御回路111は、ロボット運用システム101のロボットと物体(又はその物体と同じ形状及び/又はサイズを有する他の3D物体)との間のインタラクションを助長するために、通信インターフェース113を介して、ロボット運用システム101に3Dモデルを通信するように構成することができる。
【0096】
種々の実施形態の簡潔な説明
実施形態1は、通信インターフェースと制御回路とを備えるコンピューティングシステムに関する。前記通信インターフェースは、(i)第1のカメラ、(ii)第2のカメラ、及び(iii)透明であり、該第1のカメラと該第2のカメラとの間に配置されるプラットフォームを回転させるアクチュエーターと通信するように構成され、該第1のカメラは該プラットフォームの第1の表面に向けられ、該第2のカメラは該プラットフォームの第2の、反対に面する表面に向けられる。前記制御回路は、前記プラットフォームの前記第1の表面上に3次元(3D)キャリブレーションパターンが配置されるときに、カメラキャリブレーションを実行するように構成され、前記3Dキャリブレーションパターンは、第1の組の面と、該第1の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、前記第1の組の面のそれぞれの面上に配置される第1の組の2Dキャリブレーションパターンを備える。前記カメラキャリブレーションは、前記通信インターフェースを介して前記第1のカメラから第1の組のキャリブレーション画像を受信することであって、該第1の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記多面体の前記第1の組の面を取り込み、前記第1の組の面上にそれぞれ配置される前記第1の組の2Dキャリブレーションパターンを取り込むことと、前記通信インターフェースを介して前記第2のカメラから第2の組の1つ以上のキャリブレーション画像を受信することであって、該第2の組の1つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体の前記別の面の1組のそれぞれの角を表す第1の組の座標を特定することであって、該第1の組の座標は前記第1のカメラの位置及び向きを基準としていることと、前記第2の組の1つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記1組のそれぞれの角を表す第2の組の座標を特定することであって、該第2の組の座標は前記第2のカメラの位置及び向きを基準としていることと、前記第1の組の座標及び前記第2の組の座標に基づいて、前記第1のカメラと前記第2のカメラとの間の空間的関係を記述する変換関数を特定することとによって実行される。前記制御回路は、前記カメラキャリブレーションが実行された後に、前記プラットフォームの前記第1の表面上に前記3Dキャリブレーションパターン以外の物体が配置されるときに、該物体を表す3Dモデルを生成するように更に構成され、前記3Dモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第1のカメラから受信される前記物体の画像に基づいて、及び、前記通信インターフェースを介して前記第2のカメラから受信される前記物体の画像に基づいて生成される。
【0097】
実施形態2は、実施形態1のコンピューティングシステムを含み、前記通信インターフェースは、(i)前記プラットフォームの前記第1の表面に向けられる第1の光源、及び(ii)前記プラットフォームの前記第2の表面に向けられる第2の光源と通信するように更に構成され、前記プラットフォームは前記第1の光源と前記第2の光源との間に配置される。さらに、前記第2の組の1つ以上のキャリブレーション画像は、第1のキャリブレーション画像及び第2のキャリブレーション画像を含む、少なくとも一対のキャリブレーション画像を含む。前記制御回路は、前記カメラキャリブレーションを実行するときに、前記第1の光源を点灯させ、前記第2の光源を消灯させるために、前記通信インターフェースを介して前記第1の光源及び前記第2の光源に第1の組の1つ以上の光源コマンドを出力することと、前記第1の光源が点灯し、前記第2の光源が消灯している間に、前記第2のカメラに前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、第2のカメラに第1の組の1つ以上のカメラコマンドを出力することであって、前記第1のキャリブレーション画像は前記多面体の前記別の面の少なくともシルエットを取り込むことと、前記第2の光源を点灯させ、前記第1の光源を消灯させるために、前記通信インターフェースを介して前記第1の光源及び前記第2の光源に第2の組の1つ以上の光源コマンドを出力することと、前記第2の光源が点灯し、前記第1の光源が消灯している間に、前記第2のカメラに、前記少なくとも一対のキャリブレーション画像の前記第2のキャリブレーション画像を生成させるために、前記通信インターフェースを介して、前記第2のカメラに第2の組の1つ以上のカメラコマンドを出力することであって、前記第2のキャリブレーション画像は、別の2Dキャリブレーションパターンを取り込み、該別の2Dキャリブレーションパターンは前記別の面上に配置され、前記3Dキャリブレーションパターンの一部であることとを行うように構成される。前記制御回路は、前記一対のキャリブレーション画像の前記第1のキャリブレーション画像及び前記第2のキャリブレーション画像に基づいて、前記第2の組の座標を特定するように構成される。
【0098】
実施形態3は、実施形態2のコンピューティングシステムを含み、前記制御回路は、前記第1のカメラ及び前記第1の光源が前記プラットフォームの前記第1の表面の上方に配置され、前記第2のカメラ及び前記第2の光源が前記プラットフォームの前記第2の表面の下方に配置され、前記3Dキャリブレーションパターンの前記別の面が前記プラットフォームの前記第1の表面と接触しているときに、前記カメラキャリブレーションを実行するように構成される。
【0099】
実施形態4は、実施形態2又は3のコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記少なくとも一対のキャリブレーション画像の前記第2のキャリブレーション画像に基づいて、前記第2のキャリブレーション画像内に前記別のキャリブレーションパターンのそれぞれの角が現れる1組のピクセル領域を特定し、同じく前記1組のピクセル領域内で、前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像を探索し、前記第1のキャリブレーション画像内において前記別の面の前記1組のそれぞれの角が現れるピクセル座標を識別するように構成される。前記1組のそれぞれの角に関する前記第2の組の座標は、前記第1のキャリブレーション画像内に前記1組のそれぞれの角が現れる前記ピクセル座標に基づいて特定される。
【0100】
実施形態5は、実施形態2〜4のいずれか1つのコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記少なくとも一対のキャリブレーション画像の前記第1のキャリブレーション画像内に取り込まれた前記別の面の前記シルエットに基づいて、前記多面体の前記別の面の前記1組のそれぞれの角の前記第2の組の座標の第1の推定座標を特定し、前記第2のキャリブレーション画像内に取り込まれた前記別のキャリブレーションパターンに基づいて、前記別の面によって形成される仮想面を記述する情報を特定し、前記仮想面と前記第2の組の座標の前記第1の推定座標との間のそれぞれの偏差量を特定し、前記それぞれの偏差量に基づいて、前記第2の組の座標の第2の推定座標を特定するように構成される。前記変換関数は、前記第2の組の座標の前記第2の推定座標に基づいて、かつ前記第1の組の座標に基づいて特定される。
【0101】
実施形態6は、実施形態1〜5のいずれか1つのコンピューティングシステムを含み、前記第1の組のキャリブレーション画像の各キャリブレーション画像は前記第1の組の2Dキャリブレーションパターンのうちの少なくとも2つの2Dキャリブレーションパターンを取り込む。前記制御回路は、前記第1の組のキャリブレーション画像のキャリブレーション画像ごとに、前記キャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第1の2Dキャリブレーションパターンを取り込む第1の画像部分を抽出し、前記第1の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶し、前記キャリブレーション画像から前記第1の画像部分を除去することによって、更新されたキャリブレーション画像を生成し、前記更新されたキャリブレーション画像から、前記少なくとも2つの2Dキャリブレーションパターンの第2の2Dキャリブレーションパターンを取り込む別の画像部分を抽出し、前記第2の2Dキャリブレーションパターンのパターン要素を記述する情報を記憶するように構成され、前記制御回路は、前記少なくとも2つの2Dキャリブレーションパターンの前記第1の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報と、前記少なくとも2つの2Dキャリブレーションパターンの前記第2の2Dキャリブレーションパターンのパターン要素を記述する記憶された情報とに基づいて、前記第1のカメラのキャリブレーションパラメーターの推定値を特定するように構成される。
【0102】
実施形態7は、実施形態1〜6のいずれか1つのコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記第1の組のキャリブレーション画像内の前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体を表す3Dモデルを特定するように構成される。前記多面体の前記別の面の前記1組のそれぞれの角に関する前記第1の組の座標は、前記多面体の前記3Dモデルに基づいて特定される。
【0103】
実施形態8は、実施形態7のコンピューティングシステムを含み、前記制御回路は、カメラキャリブレーションを実行するときに、前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体の前記第1の組の面によって形成されるそれぞれの仮想面を記述する情報を特定するように構成され、前記3Dモデルは、少なくとも、前記それぞれの仮想面を記述する前記情報によって表される。
【0104】
実施形態9は、実施形態8のコンピューティングシステムを含み、前記制御回路は、前記カメラキャリブレーションを実行するときに、前記多面体の前記第1の組の面間の空間的関係を特定するように構成される。前記それぞれの仮想面を記述する前記情報は、前記多面体の前記第1の組の面間の前記空間的関係に基づいて特定される。
【0105】
実施形態10は、実施形態8又は9のコンピューティングシステムを含み、前記多面体の前記別の面の前記1組の角は前記多面体の第2の組の角である。前記制御回路は、前記カメラキャリブレーションを実行するときに、前記それぞれの仮想面のうちの少なくとも3つが交わる位置を特定することによって、前記多面体の第1の組の角に関するそれぞれの位置を、別の1組の座標として特定するように構成される。前記第1の組の座標は、前記別の1組の座標及び前記多面体の規定サイズに基づいて特定される。
【0106】
実施形態11は、実施形態1〜10のいずれか1つのコンピューティングシステムを含み、前記変換関数は第1の変換関数であり、前記制御回路は、前記第1のカメラと前記プラットフォームの中心との間の空間的関係を記述する第2の変換関数を特定することと、前記第1の変換関数及び前記第2の変換関数に基づいて、前記第2のカメラと前記プラットフォームの前記中心との間の空間的関係を記述する第3の変換関数を特定することとによって更に、前記カメラキャリブレーションを実行するように構成される。
【0107】
実施形態12は、実施形態1〜11のいずれか1つのコンピューティングシステムを含み、前記制御回路は、前記プラットフォームに、前記第1のカメラに対して複数の向きを有するように前記3Dキャリブレーションパターンを回転させるために、前記通信インターフェースを介して前記プラットフォームに1つ以上のモーターコマンドを出力するように構成され、前記第1の組のキャリブレーション画像は、前記3Dキャリブレーションパターンが前記第1のカメラに対して前記複数の向きを有するときにそれぞれ生成される。
【0108】
実施形態13は、実施形態1〜12のいずれか1つのコンピューティングシステムを含み、前記通信インターフェースは、前記プラットフォームの前記第1の表面に向けられる第3のカメラと通信するように構成される。前記制御回路は、前記通信インターフェースを介して前記第3のカメラから第3の組のキャリブレーション画像を受信することであって、該第3の組のキャリブレーション画像も前記多面体の前記第1の組の面と、前記第1の組のそれぞれの2Dキャリブレーションパターンとを取り込むことと、前記第1の組のキャリブレーション画像及び前記第3の組のキャリブレーション画像に基づいて、別の変換関数を特定することであって、該別の変換関数は前記第1のカメラと前記第3のカメラとの間の空間的関係を記述することとによって更に、カメラキャリブレーションを実行するように構成される。
【0109】
実施形態14は、命令を有する非一時的コンピューター可読媒体であって、コンピューティングシステムの制御回路によって実行されるときに、該命令によって、該制御回路が、前記コンピューティングシステムの通信インターフェースを介して、第1の組のキャリブレーション画像を受信し、該通信インターフェースは、(i)第1のカメラ、(ii)第2のカメラ、及び(iii)透明であり、該第1のカメラと該第2のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第1のカメラは該プラットフォームの第1の表面に向けられ、該第2のカメラは該プラットフォームの第2の、反対に面する表面に向けられる、非一時的コンピューター可読媒体に関する。前記第1の組のキャリブレーション画像は、前記第1のカメラから受信され、前記プラットフォームの前記第1の表面上に3次元(3D)キャリブレーションパターンが配置されるときに生成され、前記3Dキャリブレーションパターンは、第1の組の面と、該第1の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第1の組の面のそれぞれの面上に配置される第1の組の2Dキャリブレーションパターンを備える。前記第1の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第1の組の面と、前記第1の組の面上にそれぞれ配置される前記第1の組の2Dキャリブレーションパターンとを取り込む。前記命令が前記制御回路によって実行されるときに、前記命令によって、前記制御回路が、前記通信インターフェースを介して前記第2のカメラから第2の組の1つ以上のキャリブレーション画像を受信することであって、該第2の組の1つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体の前記別の面の1組のそれぞれの角を表す第1の組の座標を特定することであって、該第1の組の座標は位置及び向きを基準としていることと、前記第2の組の1つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記1組のそれぞれの角を表す第2の組の座標を特定することであって、該第2の組の座標は前記第2のカメラの位置及び向きを基準としていることと、前記第1の組の座標及び前記第2の組の座標に基づいて、前記第1のカメラと前記第2のカメラとの間の空間的関係を記述する変換関数を特定することと、前記プラットフォームの前記第1の表面上に前記3Dキャリブレーションパターン以外の物体が配置されるときに、該物体を表す3Dモデルを生成することであって、該3Dモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第1のカメラから受信された該物体の画像に基づいて、及び、前記通信インターフェースを介して前記第2のカメラから受信された該物体の画像に基づいて生成されることとを行う。
【0110】
実施形態15は、物体走査の方法であって、コンピューティングシステムによって、該コンピューティングシステムの通信インターフェースを介して第1の組のキャリブレーション画像を受信することを含む、方法に関し、該通信インターフェースは、(i)第1のカメラ、(ii)第2のカメラ、及び(iii)透明であり、(ii)前記プラットフォームの第1の表面に面する第1のカメラ、該第1のカメラと該第2のカメラとの間に配置されるプラットフォームを回転させるように構成されるアクチュエーターと通信するように構成され、該第1のカメラは該プラットフォームの第1の表面に向けられ、該第2のカメラは該プラットフォームの第2の、反対に面する表面に向けられる。前記第1の組のキャリブレーション画像は、前記第1のカメラから受信され、前記プラットフォームの前記第1の表面上に3次元(3D)キャリブレーションパターンが配置されるときに生成され、前記3Dキャリブレーションパターンは、第1の組の面と、該第1の組の面の一部ではない別の面とを含む複数の面を有する多面体を備え、該多面体の該第1の組の面のそれぞれの面上に配置される第1の組の2Dキャリブレーションパターンを備える。前記第1の組のキャリブレーション画像は、前記多面体の前記別の面を取り込むことなく、前記第1の組の面を取り込み、前記第1の組の面上にそれぞれ配置される前記第1の組の2Dキャリブレーションパターンを取り込む。該方法は、前記通信インターフェースを介して前記第2のカメラから第2の組の1つ以上のキャリブレーション画像を受信することであって、該第2の組の1つ以上のキャリブレーション画像は前記多面体の前記別の面を取り込むことと、前記第1の組の2Dキャリブレーションパターンに基づいて、前記多面体の前記別の面の1組のそれぞれの角を表す第1の組の座標を特定することであって、該第1の組の座標は位置及び向きを基準としていることと、前記第2の組の1つ以上のキャリブレーション画像に基づいて、前記多面体の前記別の面の前記1組のそれぞれの角を表す第2の組の座標を特定することであって、該第2の組の座標は前記第2のカメラの位置及び向きを基準としていることと、前記第1の組の座標及び前記第2の組の座標に基づいて、前記第1のカメラと前記第2のカメラとの間の空間的関係を記述する変換関数を特定することと、前記プラットフォームの前記第1の表面上に前記3Dキャリブレーションパターン以外の物体が配置されるときに、該3D物体を表す3Dモデルを生成することであって、該3Dモデルは、前記変換関数に基づいて、前記通信インターフェースを介して前記第1のカメラから受信された該物体の画像に基づいて、そして、前記通信インターフェースを介して前記第2のカメラから受信された該物体の画像に基づいて生成されることとを更に含む。
【0111】
種々の実施形態を上述してきたが、これらの実施形態は、限定としてではなく本発明の単なる説明及び例として提示されていることを理解すべきである。形式及び細部における種々の変更は本発明の趣旨及び範囲から逸脱することなく本発明内で行うことができることは当業者には明らかであろう。したがって、本発明の範囲(breadth and scope)は、上述の例示的な実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物によってのみ規定されるべきである。本明細書において論考された各実施形態、及び本明細書において引用された各引用文献の各特徴は、他の任意の実施形態の特徴と組み合わせて用いることができることも理解されるであろう。本明細書において論考された全ての特許及び刊行物は、引用することによりその全体が本明細書の一部をなす。
【解決手段】そのシステムは第1のカメラ及び第2のカメラと通信し、これらの2つのカメラ間に透明なプラットフォームが配置される。プラットフォーム上に3Dキャリブレーションパターンが配置されるとき、システムは、第1のカメラから第1の組のキャリブレーション画像を受信し、第2のカメラから第2の組のキャリブレーション画像を受信する。システムは、第1の組のキャリブレーション画像に基づいて、多面体の角に関する第1の組の座標を特定する。システムは、第2の組のキャリブレーション画像に基づいて、その角に関する第2の組の座標を更に特定する。システムは、座標に基づいて、第1のカメラと第2のカメラとの間の空間的関係を特定する。システムは、空間的関係の記述を更に用いて、3Dキャリブレーションパターン以外の物体の3Dモデルを生成する。