以下の発明を実施するための形態は、本質的に単に例示のものであり、本発明又は本発明の用途及び使用を限定することを意図するものではない。更に、前出の技術分野、背景技術、発明の概要又は以下の発明を実施するための形態において提示される、いかなる明示された又は暗示された理論によっても限定する意図はない。
本出願の一態様は、固有カメラキャリブレーション等、カメラキャリブレーションの精度を向上させることに関する。一実施形態では、固有カメラキャリブレーションは、レンズ歪みパラメーター及び/又は射影パラメーターに対して、それぞれの推定値を決定することを含むことができる。幾つかの実施態様では、カメラキャリブレーション動作に対する全てのレンズ歪みパラメーターを、単一の段階で推定することができる。しかしながら、レンズ歪みによって導入される非線形性が複雑で、正確に概算することが困難である場合があるため、単一の段階でレンズ歪みパラメーターに対してそれぞれの推定値を決定することによって、こうした推定値の精度が低減することがある。したがって、本出願の一態様は、複数の段階(複数ラウンドとも呼ばれる)でのレンズ歪みパラメーターの推定に関する。
場合により、複数の段階は、一連の段階として配置することができ、一つの段階によって出力される推定値は、次の段階の初期推定値又は他の入力として使用することができる。場合により、複数の段階のうちの一つ以上で、カメラキャリブレーションに使用されるレンズ歪みモデル(及び/又は射影モデル)に、単純化を適用することができる。例えば、複数の段階のうちの第一の段階で、幾つかのレンズ歪みパラメーターは、ごくわずかな影響を及ぼすが、その段階でこうしたレンズ歪みパラメーターをゼロに設定することによって、又は単純化された歪み関数を使用することによって等、その段階で無視できると想定することができる。場合により、複数の段階のうちのより早期の段階で、より単純なレンズ歪みモデルを使用して、例えば、レンズ歪みの大部分又は大きな成分を考慮する、レンズ歪みパラメーターの推定に集中することができ、より後期の段階で、レンズ歪みモデルの複雑性を増大して、レンズ歪みの残りの部分を考慮することができる、より多くのレンズ歪みパラメーターを推定することができる。場合により、より後期の段階で、他のカメラキャリブレーションパラメーター(例えば、他のレンズ歪みパラメーター)に対する、それぞれの推定値の更新に集中するために、特定のカメラキャリブレーションパラメーター(例えば、レンズ歪みパラメーター又は射影パラメーター)の値を固定することができる。
本出願の一態様は、ステレオカメラキャリブレーションの精度を向上させること、より具体的には、ステレオカメラキャリブレーションの誤差の量を特徴付ける誤差パラメーター値を決定し、誤差パラメーター値を減少させることによって、ステレオカメラキャリブレーションの精度を向上させることに関する。場合により、ステレオカメラキャリブレーションの実施には、第一のカメラと第二のカメラとの空間関係を記述する、変換関数の推定値を決定することを含むことができる。こうした場合、誤差パラメーター値は、変換関数の推定値に対して決定することができる。一実施形態では、変換関数を使用して、複数の変換された座標を決定することができ、これを別の複数の座標と比較して、誤差パラメーター値を決定することができる。より詳細に後述するように、誤差パラメーター値は、再投影誤差、再構成誤差、再構成誤差角度及び/又は他の何らかの誤差パラメーター値を含むことができる。
図1Aは、自動カメラキャリブレーションを実施するための、システム100のブロック図を示す。システム100は、計算システム110及びカメラ170を含む。一実施形態では、システム110は更に、キャリブレーションパターン160を含む。この例では、カメラ170は、キャリブレーションパターン160を表す画像である、キャリブレーション画像を生成するように構成することができ、計算システム110は、キャリブレーション画像に基づいて、カメラキャリブレーションを実施するように構成することができる。一実施形態では、計算システム110及びカメラ170は、同じ敷地(例えば、同じ倉庫)に位置することができる。一実施形態では、計算システム110及びカメラ170は、互いに遠隔に位置することができる。計算システム110は、有線接続を介して等、カメラ170から直接、又はカメラ170と計算システム110との間に位置する記憶装置を介して等、カメラ170から間接的にキャリブレーション画像を受け取るように構成することができる。一実施形態では、カメラ170は、カメラ視野でシーンを表す画像(又はより一般的には、画像データ)を生成するか、又は他の方法で取得するように構成される、任意のタイプの画像感知装置であってもよい。カメラ170は、例えば、カラー画像カメラ、グレースケール画像カメラ、奥行き感知カメラ(例えば、飛行時間(TOF)カメラ又は構造化光カメラ)、又は他の任意のカメラ(本開示では「又は」という用語は「及び/又は」を指すために使用することができる)。
一実施形態では、システム100は、図1Bに示すロボット動作システム100Aとすることができる。ロボット動作システム100Aは、計算システム110と、カメラ170と、キャリブレーションパターン160が配置されているロボット150とを含む。場合によっては、計算システム110は、ロボット150を制御するように構成することができ、それらの場合には、ロボット制御システム又はロボットコントローラーと呼ぶことができる。一実施形態において、ロボット動作システム100は、倉庫、製造工場又は他の敷地内に位置することができる。上述したように、計算システム110は、カメラキャリブレーション情報を決定することによって等、カメラキャリブレーションを実施するように構成することができる。図1Bの例では、後でカメラキャリブレーション情報を使用して、ロボット150を制御することができる。場合により、図1Bの計算システム110は、カメラキャリブレーションを実施すること、及びキャリブレーション情報に基づいてロボット150を制御することの両方を行うように構成される。場合により、計算システム110は、カメラキャリブレーションの実施専用とすることができ、ロボット150の制御専用である別の計算システムへ、キャリブレーション情報を伝達することができる。例えば、ロボット150は、カメラ170により生成される画像と、カメラキャリブレーション情報とに基づいて位置決めすることができる。場合により、計算システム110は、カメラ170が位置する環境の画像を取得する、視覚システムの一部とすることができる。ロボット150は、例えば、デバンニングロボット、デパレタイズロボット又は他の任意のロボットとすることができる。
一実施形態では、図1Bの計算システム110は、ロボット150及び/若しくはカメラ170との有線又は無線通信によって、通信するように構成することができる。例えば、計算システム110は、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェース、イーサネットインターフェース、Bluetooth(登録商標)インターフェース、近距離無線通信(NFC)インターフェース、IEEE 802.11インターフェース、IEEE 1394インターフェース又はそれらの任意の組み合わせを介して、ロボット150及び/又はカメラ170と通信するように構成することができる。一実施形態では、計算システム110は、ペリフェラルコンポーネントインターコネクト(PCI)バス又は小型コンピューターシステムインターフェース(SCSI)バス等のローカルコンピューターバスを介して、ロボット150及び/又はカメラ170と通信するように構成することができる。
一実施形態では、図1Bの計算システム110は、ロボット150から分離することができ、上述した無線又は有線接続を介して、ロボット150と通信することができる。例えば、計算システム110は、有線接続又は無線接続を介して、ロボット150及びカメラ170と通信するように構成される、スタンドアローンコンピューターとすることができる。一実施形態では、計算システム110は、ロボット150の一体構成要素とすることができ、上述したローカルコンピューターバスを介して、ロボット150の他の構成要素と通信することができる。場合により、計算システム110は、ロボット150のみを制御する、専用制御システム(専用コントローラーとも呼ばれる)とすることができる。他の場合では、計算システム110は、ロボット150を含む、複数のロボットを制御するように構成することができる。一実施形態では、計算システム110、ロボット150及びカメラ170は、同じ敷地(例えば、倉庫)に位置する。一実施形態では、計算システム110は、ロボット150及びカメラ170から遠隔とすることができ、ネットワーク接続(例えば、ローカルエリアネットワーク(LAN)接続)を介して、ロボット150及びカメラ170と通信するように構成することができる。
一実施形態では、図1Bの計算システム110は、キャリブレーションパターン160の画像である、キャリブレーション画像にアクセスして処理するように構成することができる。計算システム110は、カメラ170から、又はキャリブレーション画像が記憶される記憶装置若しくは他の非一時的コンピューター可読媒体から等、別の源からキャリブレーション画像を読み出し、又はより一般的には、受け取ることによって、キャリブレーション画像にアクセスすることができる。幾つかの例では、計算システム110は、カメラ170を制御して、こうした画像を取り込むか、又は他の方法で生成するように構成することができる。例えば、計算システム110は、カメラ170に、カメラ170の視野(カメラ視野とも呼ばれる)の中にシーンを取り込む画像を生成させる、カメラコマンドを生成し、有線又は無線接続を介してカメラコマンドをカメラ170へ伝達するように構成することができる。同じコマンドによって、カメラ170に、画像を(画像データとして)計算システム110へ、又はより一般的には、計算システム110がアクセス可能な記憶装置へ戻すように伝達させることもできる。代替的に、計算システム110によって、カメラコマンドを受信すると、カメラ170に、取り込んだ画像を計算システム110へ伝達させる、別のカメラコマンドを生成することができる。一実施形態では、カメラ170は、そのカメラ視野内のシーンの画像を、周期的に又は定義されたトリガー条件に応じて、計算システム110からのカメラコマンドを必要とすることなく、自動的に取り込むことができる。こうした実施形態では、カメラ170はまた、計算システム110に、又はより一般的には、計算システム110がアクセス可能な記憶装置に、計算システム110からのカメラコマンドなしに、画像を自動的に伝達するように構成することもできる。
一実施形態では、図1Bの計算システム110は、計算システム110によって生成され、ロボット150に有線又は無線接続を介して伝達される移動コマンドによって、ロボット150の移動を制御するように構成することができる。移動コマンドにより、ロボットにキャリブレーションパターン160を移動させることができる。キャリブレーションパターン160は、ロボット150に永久的に配置することができるか、又はロボット150に取り付けかつロボットから取り外すことができる、別個の構成要素とすることができる。
一実施形態では、計算システム110は、それぞれの画像を複数のカメラから受け取るように構成することができる。例えば、図1Cは、ロボット動作システム100Aの一実施形態である、ロボット動作システム100Bを示す。システム100Bは、カメラ170及びカメラ180等、複数のカメラを含む。カメラ170、180は、同じタイプのカメラであってもよく、又は異なるタイプのカメラとすることもできる。幾つかの例では、カメラ170、180は、固定された相対位置及び/又は相対的な向きを有することができる。例えば、カメラ170、180は両方、二つのカメラ170、180を互いに対して固定のままにさせることができる、共通の取付フレームに強固に取り付けることができる。
一実施形態では、図1Cのロボット制御システム110は、画像をカメラ170から受け取り、かつ画像をカメラ180から受け取るように両方構成することができる。場合により、計算システム110は、移動コマンドの生成によって等、二つのカメラ170、180からの画像に基づいて、ロボット150の移動を制御するように構成することができる。幾つかの例では、二つのカメラ170、180の存在により、計算システム110に立体視を与えることができる。場合により、計算システム110は、カメラ170によって生成される画像と、カメラ180によって生成される画像とを使用して、両画像によって取り込まれる物体の三次元構造を記述することができる、物体構造情報を決定するように構成することができる。幾つかの例では、計算システム110は、より詳細に後述するように、カメラ170及びカメラ180の両方に対して、カメラキャリブレーションを実施するように構成することができる。一実施形態では、計算システム110によって、カメラキャリブレーションを実施するために、両方のカメラ170、180を制御して、キャリブレーションパターン160のそれぞれの画像を取り込むことができる。こうした実施形態では、計算システム110によって、カメラ170と通信する方法と同じ又は同様に、カメラ180と通信することができる。一実施形態では、ロボット動作システム100Bは、厳密に二つのカメラを有することができるか、又は三つ以上のカメラを有することができる。
図2は、図1A〜1Cの計算システム110のブロック図を示す。ブロック図に示すように、計算システム110は、制御回路111、通信インターフェース113及び非一時的コンピューター可読媒体115(例えば、メモリ)を含むことができる。一実施形態では、制御回路111は、一つ以上のプロセッサ、プログラマブルロジック回路(PLC)若しくはプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他の任意の制御回路を含むことができる。場合により、制御回路111が複数のプロセッサを含む場合、プロセッサは、単一の装置の一部とすることができるか、又は複数の装置に渡って分散することができる。例えば、計算システム110が単一のスタンドアローン装置によって形成される場合、複数のプロセッサは全て、単一のスタンドアローン装置(例えば、マルチプロセッサデスクトップコンピューター)の一部とすることができる。計算システム110が、複数の計算装置(例えば、複数のデスクトップコンピューター)を含む分散システムである場合、複数のプロセッサは、複数の計算装置に渡って分散することができる。
一実施形態では、通信インターフェース113は、カメラ170及びロボット150と通信するように構成される、一つ以上の構成要素を含むことができる。例えば、通信インターフェース113は、有線又は無線プロトコルを介して通信を実施するように構成される、通信回路を含むことができる。一例として、通信回路は、RS−232ポートコントローラー、USBコントローラー、イーサネットコントローラー、IEEE 802.11コントローラー、IEEE 1394コントローラー、Bluetooth(登録商標)コントローラー、NFCコントローラー、PCIバス若しくはSCSIコントローラー、他の任意の通信回路、又はそれらの組み合わせを挙げることができる。
一実施形態では、非一時的コンピューター可読媒体115は、コンピューターメモリ等の情報記憶装置を含むことができる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ(DRAM)、ソリッドステート集積メモリ及び/又はハードディスクドライブ(HDD)を含むことができる。場合により、カメラキャリブレーションは、非一時的コンピューター可読媒体115に記憶されたコンピューター実行可能命令(例えば、コンピューターコード)を通して実施することができる。こうした場合、制御回路111は、コンピューター実行可能命令を実行して、カメラキャリブレーション(例えば、図9に示すステップ)を実施するように構成される、一つ以上のプロセッサを含むことができる。一実施形態では、非一時的コンピューター可読媒体115は、(図1A〜1Cの)カメラ170によって生成される一つ以上のキャリブレーション画像、及び/又はカメラ180によって生成される一つ以上のキャリブレーション画像を記憶するように構成することができる。
上述したように、本出願の一態様は、図1A〜1Cのカメラ170/180に対して、カメラキャリブレーション情報を決定することに関する。図3Aは、図1A〜1Cのカメラ170/180のより具体的な一実施形態とすることができる、カメラ370のブロック図を示す。この実施形態では、カメラ370は、一つ以上のレンズ371、画像センサー373及び通信インターフェース375を含むことができる。通信インターフェース375は、図1A〜1Cの計算システム110と通信するように構成することができ、計算システム110の図2の通信インターフェース113と同様とすることができる。
一実施形態では、一つ以上のレンズ371は、カメラ370の外側から入ってくる光(例えば、可視光又は赤外線)を画像センサー373上に収束させることができる。一実施形態では、画像センサー373は、それぞれのピクセル強度値によって画像を表すように構成される、ピクセルの配列を含むことができる。画像センサー373は、電荷結合素子(CCD)センサー、相補型金属酸化膜半導体(CMOS)センサー、量子イメージセンサー(QIS)又は他の任意の画像センサーを含むことができる。一実施形態では、画像センサー373は、画像センサーの表面と一致する二次元(2D)平面とすることができる、画像平面を定義することができる。
一実施形態では、カメラキャリブレーション情報は、一つ以上のカメラキャリブレーションパラメーター、又はより具体的には、一つ以上のカメラキャリブレーションパラメーターに対する一つ以上のそれぞれの値を含むことができる。カメラキャリブレーションパラメーターは、カメラ170/370の一つ以上の固有特性を記述することができる、固有カメラキャリブレーションパラメーター(単に固有キャリブレーションパラメーターとも呼ばれる)を含むことができる。場合により、一つ以上の固有カメラパラメーターは、カメラ170/370の位置及び向きとは独立している値を各々有することができる。一実施形態では、カメラキャリブレーションパラメーターは、カメラ170/370とその外部環境との関係を記述するパラメーターを含むことができる。例えば、これらのパラメーターは、ハンド−アイキャリブレーションパラメーター及び/又はステレオキャリブレーションパラメーターを含むことができる。ハンド−アイキャリブレーションパラメーターは、例えば、カメラ170/370とロボット150との空間関係を記述することができる。場合により、ハンド−アイキャリブレーションパラメーターは、カメラ170/370の座標系と、ロボット150に基づいて定義される座標系とすることができるワールド座標系との間の相対位置及び相対的な向きを記述する、変換関数を含むことができる。一実施形態では、ステレオキャリブレーションパラメーターは、例えば、カメラ170/370と、カメラ180等の他の任意のカメラとの空間関係を記述することができる。場合により、ステレオキャリブレーションパラメーターは、カメラ170/370の座標系と、他のカメラ180の座標系との間の相対位置及び相対的な向きを記述する、変換関数を含むことができる。場合により、カメラキャリブレーション情報は、カメラ170/370と(図1A〜1Cの)キャリブレーションパターン160との空間関係を記述するか、又はカメラ180とキャリブレーションパターン160との空間関係を記述する、変換関数を含むことができる。
一実施形態では、固有カメラキャリブレーションパラメーターは、射影パラメーターを含むことができる。射影パラメーターは、カメラと関連付けられる、カメラ画像の射影を記述することができる。カメラ画像の射影は、カメラ視野内の位置が、いかにカメラの画像センサー(例えば、373)上に投影されるかを示すことができる。例えば、図3Bは、カメラ370Aの外部であり、カメラ370Aの視野内にある位置
を示す(Tという上付き文字は転置を指し、Cameraという下付き文字は、カメラ座標系で表現されているX、Y及びZ座標成分を指す)。より具体的には、カメラ370Aは、カメラ370の一実施形態とすることができ、一つ以上のレンズ371A及び画像センサー373Aを含むことができる。この例におけるカメラ座標系は、カメラ370Aの位置及び向きに対して定義される、座標系とすることができる。より具体的には、図3Bは、カメラ座標系を、カメラ370Aの様々な構成要素の向きと位置合わせすることができる、直交座標軸
によって定義されるように示す。一実施形態では、位置
からの光は、画像センサー座標系上の画像座標
(例えば、ピクセル座標)へ投影することができる。図3Bに示すように、画像センサー座標系は、一例において、画像センサー373Aのそれぞれの縁と位置合わせすることができる、座標軸
によって定義することができる。一実施形態では、位置
が画像座標
の上に投影される様式は、射影行列Kによってモデル化することができる。射影行列Kは、関数、又はより具体的には、関係
に基づいて、位置
を画像座標
へ変換する線形変換とすることができる。この関係は、レンズ歪みの影響を除外することができる(レンズ歪みについてはより詳細に後述する)。
一つの例では、射影行列は
と等しくすることができる。この例では、f
xは、図3Bの焦点距離f、及び
軸に沿った画像センサー373Aのピクセルサイズに基づいた、第一のスケールファクターとすることができる。同様に、f
yは、カメラ370Aの焦点距離f、及び
軸に沿った画像センサー373Aのピクセルサイズに基づいた、第二のスケールファクターとすることができる。場合により、f
xは、
軸に沿ったカメラ370Aの焦点距離とみなすことができ、f
yは、
軸に沿ったカメラ370Aの焦点距離とみなすことができる。f
x及びf
yは共に、ピクセル/ミリメートルの単位を有することができ、物理測定値を画像センサー373A上の幾つかのピクセルと相関させることができる。値C
xは、主点オフセットの第一の部分とすることができ、画像センサー座標系の原点と、カメラ座標系の原点との間の
軸に沿った距離に基づくことができる。値C
yは、主点オフセットの第二の部分とすることができ、画像センサー座標系の原点と、カメラ座標系の原点との間の
軸に沿った距離に基づくことができる。場合により、C
x及びC
yは、カメラ371Aによって生成される画像の中心と、
軸及び
軸それぞれに沿った画像センサー座標系の原点との間のそれぞれのオフセットを記述することができる。
上記例では、射影行列Kは射影パラメーターとみなすことができ、fx、fy、Cx、及びCyの各々は射影行列の成分とすることができる。更に、成分fx、fy、Cx、Cy及び焦点距離fの各々はまた、射影パラメーターとみなすこともできる。こうした例では、射影行列Kの推定値は行列とすることができ、fx、fy、Cx又はCyの推定値(推定される値とも呼ばれる)はスカラー値とすることができる。
一実施形態では、固有カメラキャリブレーションパラメーターは、カメラ170/370/370A又はカメラ180と関連付けられる、レンズ歪みを記述することができる、レンズ歪みパラメーターを含むことができる。例えば、一つ以上のレンズ歪みパラメーターは、放射状のレンズ歪み(例えば、樽形歪曲又は糸巻き型歪曲)及び/又は接線方向のレンズ歪み等、一つ以上のレンズ371Aによってもたらされるレンズ歪みの影響を特徴付けることができる。一実施形態では、一つ以上のレンズ歪みパラメーターの各々は、レンズ歪みを特徴付けるか、又は他の方法で記述する、レンズ歪みモデルのパラメーターとすることができる。例えば、レンズ歪みモデルは、より詳細に後述する多項式歪みモデル、有理歪みモデル又は視野歪みモデルとすることができる。
一実施形態では、レンズ歪みモデルは、一つ以上の歪み関数とも呼ばれ、レンズ歪みを特徴付ける、一つ以上の関数を含むことができる。こうした実施形態では、レンズ歪みパラメーターは、一つ以上の歪み関数のうちのパラメーターとすることができる。より具体的には、カメラのレンズ歪みは、カメラの一つ以上のレンズ(例えば、371A)によっていかに、実際にはカメラの視野内の
に位置する特徴部を、代わりに
に位置するように見せるかを記述する、一つ以上の歪み関数を使用してモデル化することができる。レンズ歪みによって、カメラ視野内の位置と、画像センサー上のピクセル位置(例えば、373A)との関係を、非線形にさせることができる。一例として、予測される位置
のピクセル[u v]
Tを予測するとき、以下の方程式を使用することによって等、第一の歪み関数d
x及び第二の歪み関数d
yを使用して、レンズ歪みを考慮に入れることができる。
上記例では、
はX/Zを指すことができ、
はY/Zを指すことができる。第一の歪み関数d
xは、例えば、
を
及び
の関数として決定する非線形関数とすることができる。第二の歪み関数d
yは、例えば、
を
及び
の関数として決定する非線形関数とすることができる。レンズ歪みは、全体の内容が引用することにより全体として本明細書の一部をなす、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題される米国特許出願番号第16/295,940号でより詳細に考察されている。
上述したように、レンズ歪みモデルの例は、多項式歪みモデル、有理歪みモデル又は視野歪みモデルを含む。一実施形態では、多項式歪みモデルを使用して、放射状のレンズ歪みのみを、又は放射状のレンズ歪みを他の何らかのタイプのレンズ歪み(例えば、接線方向のレンズ歪み)と共に、特徴付けることができる。場合により、多項式歪みモデル用の歪み関数d
x及びd
yは、以下とすることができる。
上記例では、
である。更に、k
1、k
2、k
3、p
1、p
2は各々、レンズ歪みパラメーターとすることができる。場合により、上記レンズ歪みパラメーターのうちの幾つか又は全てが、スカラー値を有する。
一実施形態では、k
1、k
2及びk
3は、放射状のレンズ歪みを記述するそれぞれの係数とすることができ、放射状のレンズ歪みは、光を曲げるか又は屈折させる一つ以上のレンズ(例えば、371A)によってもたらされる、あるタイプのレンズ歪みとすることができる。より具体的には、k
1、k
2及びk
3は、それぞれ第一の多項式成分k
1r
2、第二の多項式成分k
2r
4及び第三の多項式成分k
3r
6を記述することができる。これらの多項式成分は、放射状のレンズ歪みを記述し、項rに基づくため、放射状多項式成分と呼ぶことができる。項rは、位置
と、カメラ(例えば、370A)の一つ以上のレンズ(例えば、371A)の中心軸との間の距離を示すことができる。例えば、中心軸は、ベクトル[0 0 Z]
T Cameraによって定義される光軸とすることができ、項rは、
と[0 0 Z]
T Cameraとの間の距離に等しいか、又はその距離に基づくことができる。増加する値であるrは、
に反射する光が、一つ以上のレンズ(例えば、371A)の中心からさらに離れていく経路に沿って移動するであろうことを示すことができ、それによって、より放射状のレンズ歪みを生じる場合がある。
一実施形態では、上述した放射状多項式成分は、異なる次数の放射状のレンズ歪みを記述することができる。例えば、第一の放射状多項式成分k1r2は、次数2(r2の項から)を有するとみなすことができ、場合により、2次の放射状歪み効果とも呼ぶことができる。第二の放射状多項式成分k2r4は、次数4(r4の項から)を有するとみなすことができ、場合により、4次の放射状歪み効果とも呼ぶことができる。第三の放射状多項式成分k3r6は、次数6(r6の項から)を有するとみなすことができ、場合により、6次の放射状歪み効果とも呼ぶことができる。この例では、第一の放射状多項式成分k1r2は、複数の放射状多項式成分(k1r2、k2r4、k3r6)の中で放射状の最低次多項式成分とすることができ、放射状の最低次多項式成分を記述することができる(最低次の放射状歪み効果、又は放射状レンズ歪みの最低次成分を記述するとも呼ばれる)。例えば、第一の放射状多項式成分は、r2の項を有するため、放射状のレンズ歪みの二次成分を記述することができる。第二の放射状多項式成分k2r4は、この例では、第一の放射状多項式成分に対して、放射状のレンズ歪みのより高次成分(例えば、4次成分)を記述することができる。この例では、第三の放射状多項式成分は、複数の放射状多項式成分(k1r2、k2r4、k3r6)の中で最高次多項式成分とすることができ、複数の放射状多項式成分の中で、放射状のレンズ歪みの最高次成分を記述することができる。
上記例では、p
1及びp
2(例えば、方程式2及び方程式3)は、接線方向のレンズ歪みを記述するそれぞれの係数とすることができ、接線方向のレンズ歪みは、画像の中で特徴部を広げる、あるタイプのレンズ歪みとすることができる。接線方向のレンズ歪みは、例えば、カメラ(例えば、370A)の画像センサー(例えば、373A)と完全に平行ではない、一つ以上のレンズ(例えば、371A)によってもたらされる場合がある。言い換えれば、一つ以上のレンズ(例えば、371A)の光軸が、画像センサーの平面(例えば、373A)に対して完全に直交していないときに、接線方向のレンズ歪みが生じる場合がある。より具体的には、レンズ歪みパラメーターp
1-は、第一の歪み関数d
xの中の接線方向の多項式成分
及び第二の歪み関数d
yの中の接線方向の多項式成分
を記述することができる。レンズ歪みパラメーターp
2は、第一の歪み関数d
xの中の接線方向の多項式成分
を記述し、第二の歪み関数d
yの中の接線方向の多項式成分
を記述することができる。
一実施形態では、有理多項式モデルはまた、放射状のレンズ歪み又は他の何らかのタイプの歪みを特徴付けるように使用することができ、以下の歪み関数d
x及びd
yを含むことができる。
多項式歪みモデルを含む例と同様に、有理歪みモデルでは
である。更に、k
1、k
2、k
3、k
4、k
5、k
6、p
1及びp
2の各々は、有理歪みモデルのレンズ歪みパラメーターとすることができる。レンズ歪みパラメーターk
1、k
2、k
3、k
4、k
5、k
6は、放射状歪みを記述することができ、レンズ歪みパラメーターp
1及びp
2は、接線方向の歪みを記述することができる。
一実施形態では、視野モデルは以下の歪み関数を含むことができる。
上記例では、
である。更に、ωはレンズ歪みパラメーターであり、スカラー値を有することができる。
上述したように、図1A〜1C並びに3A〜3Bにおけるカメラ170/370/370Aのレンズ歪みパラメーター及び/又は射影パラメーター等、固有カメラキャリブレーションパラメーターに対する値を推定することは、カメラ170/370/370Aを使用して、キャリブレーションパターン160を取り込むか、又はその他の方法で表す、一つ以上のキャリブレーション画像を生成することを含むことができる。図4A及び4Bは、キャリブレーション画像が生成される、より具体的な環境を示す。より具体的には、図4A及び4Bは、(図1B及び1Cの)ロボット動作システム100A又は100Bの実施形態とすることができる、ロボット動作システム400を示す。ロボット動作システム400は、計算システム110、ロボット450及びカメラ470を含む。更に、キャリブレーションパターン460は、ロボット450上に配置することができる。ロボット450、カメラ470及びキャリブレーションパターン460は、それぞれ(図1A〜1Cの)ロボット150、カメラ170及びキャリブレーションパターン160の実施形態とすることができる。一実施形態では、システム400が、カメラ470に加えて一つのカメラを含む場合、カメラ470は第一のカメラ470と呼ぶことができる。
図4Aの実施形態では、ロボット450はベース452と、ベース452に対して移動可能なロボットアーム454とを含むことができる。ロボットアーム454は、リンク454Aからリンク454E等、一つ以上のリンクを含むことができる。一実施形態では、ベース452は、ロボット450を、例えば、取付フレーム又は取付面(例えば、倉庫の床)に取り付けるように使用することができる。一実施形態では、ロボット450は、リンク454A〜454Eを回転又は他の方法で作動させることによって、ロボットアーム454を移動させるように構成される、複数のモーター又は他のアクチュエーターを含むことができる。場合により、ロボットアーム454は、リンク454A〜454Eのうちの一つに取り付けられる、ロボットハンド等のエンドエフェクターを含むことができる。キャリブレーションパターン460は、エンドエフェクター又はリンクのうちの一つ(例えば、454E)上に配置することができる。一実施形態では、リンク454A〜454Eは、互いに回転可能に取り付けることができ、直列に接続されて、例えば、複数のモーターの回転を通して等、カメラ470のカメラ視野410内でキャリブレーションパターン460を異なるポーズへ移動できる、運動連鎖を形成することができる。異なるポーズは、キャリブレーションパターン460のそれぞれの位置及びそれぞれの向きの異なる組み合わせを指すことができる。例えば、図4Aは、キャリブレーションパターン460を第一のポーズへ移動させるロボットアーム454を示し、図4Bは、キャリブレーションパターン460を第一のポーズとは異なる第二のポーズへ移動させる、ロボットアーム454を示す。
場合により、レンズ歪みパラメーター及び/又は射影パラメーターのそれぞれの推定値を使用して、他のカメラキャリブレーション情報、すなわち、カメラ470とロボット450との関係を記述する変換関数を決定することを含むことができる、ハンド−アイキャリブレーションを実施することができる。例えば、図4Bは、
によって定義されるカメラ座標系、及び
によって定義されるワールド座標系を示す。ワールド座標系は、ロボット450のベース452に対して固定している点とすることができる。図4Bの例では、ハンド−アイキャリブレーションは、カメラ座標系とワールド座標系との間の相対位置及び相対的な向きを記述する、変換行列を決定することを含むことができる。
一実施形態では、キャリブレーションパターン460は、ロボットアーム454上に直接印刷することができる。一実施形態では、図4A及び4Bに示すように、キャリブレーションパターン460は、平坦なキャリブレーションボードに印刷することができる。キャリブレーションボードは、カーボンファイバー等、温度によって誘発される反りに対して耐性がある材料から、形成することができる。図4Cは、キャリブレーションパターン460の一例を示し、キャリブレーションパターン460は、矩形格子の仮想直線格子線(4631から4635及び4651から4655)に沿って配列される、複数のパターン要素4611から46125を含むことができる。例えば、仮想格子線は、一様に離隔された直線4631から4635の第一の組と、一様に離隔された直線4651から4655の第二の組とを含むことができ、仮想格子線4631から4635の第一の組は、仮想格子線4651から4655の第二の組に直交する。図4Cの例では、パターン要素4611から46125の各々は、円形ドットとすることができる。一実施形態では、パターン要素4611から46125はサイズが異なる場合がある。例えば、パターン要素4618、46113及び46114は第一の直径を有し、残り全てのパターン要素は、第一の直径より小さい第二の直径を有する。一実施形態では、複数のパターン要素4611から46125は、定義されたサイズと、要素間の定義された間隔とを有する。例えば、第一の直径及び第二の直径は、キャリブレーションパターン460の製造業者によって、キャリブレーションパターンの製造前又は製造中に定義された値とすることができ、したがって、カメラキャリブレーション中に既知の、事前に定義された値とすることができる。更に、複数のパターン要素4611から46125は、格子線4651から4655に沿って定義された距離Δd1(事前に定義された距離とすることもできる)を有し、格子線4631から4635に沿って定義された距離Δd2を有することができ、定義された距離はカメラキャリブレーション中に既知の値とすることができる。一実施形態では、Δd1はΔd2に等しい。一実施形態では、パターン要素4611から46125は、全て同じサイズ(例えば、同じ直径)を有することができ、キャリブレーションパターン460は更に、キャリブレーションパターン460の向きを示す特徴(例えば、回転非対称形状)を含むことができる。
上述したように、パターン座標系は、キャリブレーションパターン460等のキャリブレーションパターンに対して定義することができる。一実施形態では、図4B及び4Cに示すように、パターン要素461
13等、キャリブレーションパターン460の中心にある又は中心に近いパターン要素は、キャリブレーション座標系の原点を定義することができる。すなわち、パターン要素461
13は、座標
を有することができる。この実施形態では、
軸は、仮想格子線463
1から463
5に位置合せすることができ、
軸は、仮想格子線465
1から465
5に位置合せすることができ、
軸は、キャリブレーションパターン460によって形成される平面に直交する。
上述したように、本出願の一態様は、レンズ歪みパラメーターを推定する精度を向上させるために、異なる段階(異なる段階とも呼ばれる)でレンズ歪みパラメーターを推定することに関する。異なる段階は、例えば、連続する段階とすることができ、その連続における一つの段階の出力は、その連続における次の段階用の入力として(例えば、次の段階の初期推定値として)使用される。段階のうちの一つ以上では、特定のレンズ歪みパラメーターの推定に集中することができる一方、他のレンズ歪みパラメーターを、ゼロ若しくは他の何らかの固定値として扱い、及び/又は他のレンズ歪みパラメーターを無視する。図5は、上述した特性に関するように、レンズ歪みパラメーターを推定する方法500を示す、フロー図を示す。
一実施形態では、方法500は、図1Aから図4の計算システム110の制御回路111によって実施することができ、カメラキャリブレーション実施の一部として実施されてもよい。図2に示すように、計算システム110は、カメラ(例えば、470)を伝達し及び/又はロボット(例えば、450)と通信するように構成される、通信インターフェース113を含むことができる。一実施形態では、方法500は、カメラ(例えば、470)がキャリブレーション画像を生成したときに、実施することができる。キャリブレーション画像は、カメラ(例えば、470)のカメラ視野(例えば、410)内にある、キャリブレーションパターン(例えば、460)を取り込むか、又は他の方法で表すことができる。図4Cに関して上述したように、キャリブレーションパターン(例えば、460)は、この例では、複数のパターン要素(例えば、4611から46125)を含むことができる。一実施形態では、複数のパターン要素は、定義された空間配置を有することができる。例えば、複数のパターン要素は、直交格子に沿って配列することができ、格子に沿って隣接するパターン要素は、定義された間隔を有することができる。場合により、間隔は、キャリブレーションパターン(例えば、460)の製造中又は製造前に定義することができ、その場合、間隔は事前に定義されていると呼ぶことができる。
場合により、パターン要素(例えば、4611から46125)は、パターン座標系(キャリブレーションパターンの位置及び向きに関して定義される座標系とすることができる)の中に、それぞれの定義されたパターン要素座標を有することができる。定義されたパターン要素座標はまた、定義されたパターン要素位置と呼ぶことができ、キャリブレーションパターン(例えば、460)の位置及び向きに関して、又はより具体的には、パターン座標系に関して、パターン要素(例えば、4611から46125)のそれぞれの物理的位置を識別することができる。例えば、定義されたパターン要素の位置又はパターン要素座標は、[X Y Z]Tの座標、又はより具体的には、パターン座標系におけるパターン要素4611から46125のそれぞれの物理的位置を定義する、[X1 Y1 Z1]T Patternから[X25 Y25 Z25]T Patternとすることができる。
一実施形態では、図5の方法500は、計算システム110、又はより具体的には、その制御回路111が、カメラ(例えば、470)によって生成されるキャリブレーション画像を受け取る、ステップ501を含むことができる。場合により、ステップ501は、図2の通信インターフェース113によって等、カメラ(例えば、470)から直接キャリブレーション画像を受け取る、計算システム110を含むことができる。場合により、キャリブレーション画像は、非一時的コンピューター可読媒体115(例えば、ハードディスクドライブ)又は他の何らかの装置に記憶されていた場合があり、ステップ501は、非一時的コンピューター可読媒体115から直接、キャリブレーション画像を受け取ることを含むことができる。一つの例では、ステップ501で受け取られるキャリブレーション画像は、図6A〜6Eのキャリブレーション画像680A〜680Eのうちの一つとすることができ、図6A〜6Eは、例えば、カメラ視野(例えば、410)内のキャリブレーションパターン(例えば、460)の五つの異なるそれぞれのポーズに対応する、五つのキャリブレーション画像を示す。場合により、ステップ501で受け取るキャリブレーション画像は、カメラ(例えば、470)の一つ以上のレンズによって導入される、レンズ歪みの影響を明らかにすることができる。例えば、レンズ歪みは、湾曲を画像の中に導入する、屈曲又は他の反りの影響を生み出す場合がある。一例として、図6A、6C及び6Eは、キャリブレーションパターン(例えば、図4Cのキャリブレーションパターン460)が実際には直線縁を有しても、キャリブレーションパターン(例えば、460)が曲線縁を有するように現れる、キャリブレーション画像680A、680C及び680Eを示す。
一実施形態では、方法500は、複数のパターン要素がキャリブレーション画像の中に現れる、それぞれの位置を示すか、又は他の方法で表す複数の画像座標(画像パターン要素位置とも呼ばれる)を、計算システム110によって決定する、ステップ503を含むことができる。例えば、図6Eに示すように、複数の画像座標は、パターン要素4611から46125それぞれがキャリブレーション画像の中のどこに現れるかを示す、それぞれのピクセル座標[u1 v1]Tから[u25 v25]Tとすることができる。場合により、画像座標の各々は、それぞれのパターン要素461nの中心が、キャリブレーション画像の中のどこに現れるかを示す、ピクセル座標[un vn]Tとすることができる。この例では、パターン要素4611から46125のピクセル座標は、ステップ505から509に関してより詳細に後述するように、カメラキャリブレーション情報を決定するために、パターン要素4611から46125の対応する定義されたパターン要素座標と共に使用することができる。
より具体的には、方法500のステップ505から509は、射影パラメーターの集合及びレンズ歪みパラメーターの集合を推定するための、カメラキャリブレーションプロセスの一部とすることができる。ステップ505では、計算システム110によって、複数の画像座標(例えば、[u1 v1]Tから[u25 v25]T)及び定義されたパターン要素座標(例えば、[X1 Y1 Z1]T Patternから[X25 Y25 Z25]T Pattern)に基づいて、レンズ歪みパラメーターの集合のうちの第一のレンズ歪みパラメーターに対する推定値を決定することができる一方、レンズ歪みパラメーターの集合のうちの第二のレンズ歪みパラメーターをゼロと推定するか、又は第二のレンズ歪みパラメーターは推定しない。
一実施形態では、ステップ505は、第一のレンズ歪みパラメーターが、第二のレンズ歪みパラメーターとは別個に推定される、第一のキャリブレーション段階の一部とすることができる。例えば、図7Aは、第一の段階(段階1と名付ける)に続き、第二の段階(段階2と名付ける)を含む、カメラキャリブレーションプロセスを示す。場合により、第二の段階は、一部又は完全に、第一の段階の後とすることができる。第一のキャリブレーション段階では、第一のレンズ歪みパラメーターに対する推定値を決定することに集中することができる一方、第二のレンズ歪みパラメーターを固定値(例えば、ゼロ)に限定するか、又は第二のレンズ歪みパラメーターを無視する。第二のレンズ歪みパラメーターとは別個に、第一のレンズ歪みパラメーターを推定することによって、第一のレンズ歪みパラメーターに対する推定値の精度を向上させることができる。場合により、第一の段階からの第一のレンズ歪みパラメーターの推定値は、図7Aに示すように、第二の段階へ出力することができ、第二の段階で、第一のレンズ歪みパラメーターの推定値を使用して、第二のレンズ歪みパラメーターを推定する精度を向上させることができる。例えば、第一の段階(第一ラウンドとも呼ばれる)の出力は、第二の段階(第二ラウンドとも呼ばれる)で、第二の段階における第一のレンズ歪みパラメーターの初期推定値(例えば、初期推量)として使用することができる。初期推定値を使用して、第二のレンズ歪みパラメーターの推定値を決定し、及び/又は第一のレンズ歪みパラメーターの更新された推定値を決定することができる。
一例として、方法500は、レンズ歪みパラメーターの集合の推定を含むことができ、レンズ歪みパラメーターの集合は、方法500のカメラキャリブレーションに使用されている、レンズ歪みモデルの全てのレンズ歪みパラメーターを指すことができる。例えば、レンズ歪みモデルが多項式歪みモデルである場合、レンズ歪みパラメーターの集合はk1、k2、k3、p1及びp2とすることができる。レンズ歪みモデルが有理多項式歪みモデルである場合、レンズ歪みパラメーターの集合はk1、k2、k3、k4、k5、k6、p1及びp2とすることができる。幾つかのカメラキャリブレーションプロセスでは、レンズ歪みパラメーターの集合は、単一の段階(単一のラウンドとも呼ばれる)で共に決定することができる。例えば、単一の段階は、歪み関数dx、dyの逆関数(すなわち、dx −1、dy −1)が、画像座標(例えば、[u1 v1]Tから[u25 v25]T)に、又はより一般的には、キャリブレーション画像の変更されたバージョンを生成するようにキャリブレーション画像に適用される、湾曲減少段階(湾曲減少ラウンドとも呼ばれる)とすることができる。こうした湾曲減少段階では、湾曲がレンズ歪みによってもらたされる反りを表す場合があるため、最適化技法(例えば、レーベンバーグ・マーカートアルゴリズム、ネルダー・ミードアルゴリズム又はブロイデン・フレッチャー・ゴールドファーブ・シャンノ(BFGS)アルゴリズム)によって、キャリブレーション画像の変更されたバージョンにおける湾曲の量を最小限にする、レンズ歪みパラメーター及び/又は射影パラメーターの全てに対する値の最適集合を見つけるために、レンズ歪みパラメーターの集合k1、k2、k3、p1及びp2の全て、並びに/又は射影パラメーターfx、fy、cx及び/若しくはcyの全てに対するそれぞれの値を調整することができる。しかしながら、歪み関数dx、dy及びそれらの逆関数が非線形であるため、単一の段階で全てのレンズ歪みパラメーターk1、k2、k3、p1及びp2に対する最適値を見つけることが難しい場合があり、レンズ歪みパラメーターに対して結果として得られる推定値が、準最適となるか、又はより一般的には、精度を失い得る。したがって、上述したように、本出願の一実施形態、及びより具体的には、ステップ505の一実施形態は、k1などの第一のレンズ歪みパラメーターに対する推定値を決定することに集中する一方、一つ以上の他のレンズ歪みパラメーターを固定値(例えば、ゼロ)に限定するか、又は一つ以上の他のレンズ歪みパラメーターは推定しない段階を含む。
一実施形態では、ステップ505で推定される第一のレンズ歪みパラメーターは、第一のタイプのレンズ歪みを記述することができ、ステップ505は、第二のタイプのレンズ歪みを記述する、一つ以上の他のレンズ歪みパラメーターを無視すること(又は第二のタイプのレンズ歪みを、ごくわずかとして扱うこと)を含むことができ、無視される一つ以上のレンズ歪みパラメーターは、第二のレンズ歪みパラメーターを含むことができる。例えば、ステップ505で推定される第一のレンズ歪みパラメーターは、放射状のレンズ歪みを記述する、k1とすることができる。この例では、ステップ505で計算システム110によって、放射状のレンズ歪みに対するレンズ歪みパラメーターの推定に集中するために、接線方向のレンズ歪みの影響を無視するか、又はごくわずかとして扱うことができる。したがって、計算システム110によって、k1(放射状のレンズ歪みを記述する)を推定することができ、p1及び/又はp2(接線方向のレンズ歪みを記述する)は、ゼロと推定されるか、又は推定されない。こうした例では、レンズ歪みパラメーターk1は、p1又はp2によって記述される成分より一層大きい影響を及ぼす、レンズ歪みの成分を記述することができる。
一実施形態では、ステップ505で推定される第一のレンズ歪みパラメーターは、放射状のレンズ歪み等、第一のタイプのレンズ歪みを記述することができ、このステップではまた、同じタイプのレンズ歪みを記述する、一つ以上のレンズ歪みパラメーターを無視することを含むことができ、無視される一つ以上のレンズ歪みパラメーターは、第二のレンズ歪みパラメーターを含むことができる。例えば、ステップ505は、放射状のレンズ歪みを記述する、放射状多項式成分(例えば、k1r2、k2r4、k3r6)の集合の中からの放射状のレンズ歪みを記述するために、放射状の最低次多項式成分k1r2(最低次の放射状多項式成分又は最低次の放射状歪み効果とも呼ばれる)を記述することができる、k1に対する推定値を決定することを含むことができる。上述したように、レンズ歪みパラメーターk2及びk3は共に、レンズ歪みパラメーターk1に対する、より高次の放射状多項式成分(k2r4、k3r6)を記述することができる。一実施形態では、ステップ505で計算システム110によって、放射状の最低次多項式成分k1r2が、k2r4、k3r6等のより高次の放射状多項式成分より一層大きい影響を及ぼすと想定することができる。したがって、ステップ505で(例えば、段階1で)計算システム110は、k1の推定に集中することができ、より高次の放射状多項式成分k2r4、k3r6の影響を無視するか、又はそれらの影響をごくわずかとして扱うことができる。言い換えれば、ステップ505で計算システム110によって、k1に対する推定値を決定することができ、k2及び/又はk3はゼロと推定されるか、又は推定されない。
場合により、ステップ505の上記実施形態は組み合わせることができる。例えば、ステップ505で、第一のレンズ歪みパラメーターとすることができる、k1に対する推定値を決定することができ、(i)p1及び/若しくはp2がゼロと推定されるか、又は推定されず、かつ(ii)k2及び/若しくはk3がゼロと推定されるか、又は推定されない。例えば、図7Bは、ステップ505を、段階1と名付けられる第一の段階の一部とすることができる、より具体的な例を示し、段階1では、第一のレンズ歪みパラメーターとすることができる、レンズ歪みパラメーターk1に対する推定値k1, stage1_estimateを決定する。上述したように、第一のレンズ歪みパラメーターに対する推定値を決定することができる一方、第二のレンズ歪みパラメーターに対する推定値をゼロと決定するか、又は第二のレンズ歪みパラメーターに対する推定値は推定しない。図7Bの例では、第二のレンズ歪みパラメーターは、k2、k3、p1又はp2のうちの一つとすることができ、k2, stage1_estimate、k3, stage1_estimate、p1, stage1_estimate又はp2, stage1_estimateはゼロと決定されるか、又は決定されない。より具体的には、図7Bの例は、k1, stage1_estimateを決定することを含むことができ、レンズ歪みモデルの残り全てのレンズ歪みパラメーターに対する推定値をゼロと決定するか、又は残りのレンズ歪みパラメーターの全てに対する推定値を決定しない。より具体的には、レンズ歪みモデルが多項式モデルである場合、図7Bに示すように、k2, stage1_estimate、k3, stage1_estimate、p1, stage1_estimate及びp2, stage1_estimateを段階1でゼロと決定するか、又は段階1で決定しない。レンズ歪みモデルが有理多項式モデルである場合、k2,stage1_estimate、k3,stage1_estimate、k4,stage1_estimate、k5,stage1_estimate、p1, stage1_estimate及びp2, stage1_estimateを段階1でゼロと決定するか、又は決定しない。
幾つかの実施態様では、図7Bの例は、k
1に対する多項式モデルの以下の方程式を解く一方で、k
2、k
3、p
1及びp
2をゼロに限定することを含むことができる。
これらの方程式は、上述した多項式歪みモデルの歪み関数を含み、上述した射影行列を含む。この例では、[u v 1]
Tの値は、キャリブレーション画像(例えば、図6Eの680E)から決定することができ、
の値は、定義されたパターン要素座標に基づいて決定することができる。場合により、
は、カメラ座標系(例えば、図3B及び4Bのカメラ座標系)に対して表現することができ、カメラ(例えば、470)とキャリブレーションパターン(例えば、460)との空間関係を記述する行列等、変換関数
に基づいて、定義されたパターン要素座標から決定することができる。こうした場合、
に対するパラメーター値は、パースペクティブ−nポイント(perspective−n−point)アルゴリズム又は他の何らかの技法によって決定することができる。一実施形態では、上記方程式は、全体の内容が引用することにより全体として本明細書の一部をなす、Zhengyou Zhangによる「A Flexible New Technique for Camera Calibration」(Technical Report MSR−TR−98−71)において考察されている技法(Zhangのアルゴリズムとも呼ばれる)等、任意の技法を使用して解くことができる。
幾つかの実施態様では、図7Bの例におけるステップ505は、単純化された歪み関数d
x_simplified又はd
y_simplifiedを含む、一つ以上の方程式を解くことを含むことができ、単純化された歪み関数は、k
2、k
3、p
1及びp
2をゼロに設定することによって得ることができる。
例えば、ステップ505で計算システム110によって、単純化された歪み関数dx_simplified及びdy_simplifiedを、非一時的コンピューター可読媒体115から読み出すか、又はより一般的には受け取り、上述した他の方程式(例えば、方程式9及び方程式10)と併せて解くことができる。こうした例では、ステップ505で、k1に対する推定値(すなわち、k1, stage1_estimate)を決定することができ、レンズ歪みパラメーターの集合の残り全てのレンズ歪みパラメーターに対するそれぞれの推定値は決定しない。
一実施形態では、ステップ505はまた、一つ以上の射影パラメーターに対するそれぞれの推定値を決定することも含むことができる。しかしながら、この決定は、場合により、一つ以上の制約を受ける場合がある。例えば、図7Bに示すように、射影パラメーターf
x、f
y、c
x及びc
yに対するそれぞれの推定値を決定することもできるが、f
x,stage1_estimate=f
y,stage1_estimateという制約を受ける場合がある。より具体的には、計算システム110によって、f
x及びf
yが非常に類似する値を有すると想定することができ、したがって、段階1で同じ推定値を有するようにそれらを限定し、段階1の複雑性を低減することができる。図7Bの例では更に、c
x,stage1_estimate及びc
y,stage1_estimateがそれぞれの固定値を有するという制約を課すことができる。一例として、c
x,stage1_estimate及びc
y,stage1_estimateは、各々ゼロに限定することができる。別の例では、図7Bに示すように、c
x,stage1_estimateは、図3Bの
軸に沿って、キャリブレーション画像(例えば、680E)の中心に限定することができ、c
y,stage1_estimateは、図3Bの
軸に沿って、キャリブレーション画像の中心に限定することができる。例えば、キャリブレーション画像がaピクセル×bピクセルのサイズを有する場合、c
x,stage1_estimateはa/2と等しくなるように限定することができ、c
y,stage1_estimateはb/2と等しくなるように限定することができる。上記制約によって、段階1でパラメーター値の推定を単純化することができる。更に、射影パラメーターの推定値を限定することによって、推定値の精度を向上させるために、段階1で、レンズ歪みパラメーターk
1の推定値の最適化に集中することができる。
図5に戻ると、方法500は、一実施形態において、計算システム110によって、第一のレンズ歪みパラメーターの推定値を決定した後に、第一のレンズ歪みパラメーターの推定値に基づいて、第二のレンズ歪みパラメーターに対する推定値を決定する、ステップ507を含むことができる。例えば、図8は、ステップ507を、段階2と名付けられる第二の段階の一部とすることができる例を示し、段階2で、レンズ歪みパラメーターk2に対する推定値k2,stage2_estimate、レンズ歪みパラメーターp1に対する推定値p1,stage2_estimate及びレンズ歪みパラメーターp2に対する推定値p2,stage2_estimateを、推定値k1,stage1_estimateを含む、段階1の推定される値に基づいて決定する。図8の例では、ステップ507の第二のレンズ歪みパラメーターはk2、p1又はp2とすることができる。幾つかの例では、更に図8に示すように、第一のレンズ歪みパラメーターk1に対する別の推定値(すなわち、k1,stage2_estimate)を、段階1からの推定値k1,stage1_estimateに基づいて、段階2で決定することができる。
例えば、図8の段階2はまた、dx、dy及び射影行列を含む上記方程式を解くことを含むことができる。一実施形態では、推定値k1,stage1_estimateは、段階2の間に上記方程式を解くときに、k1に対する初期推量(又はより一般的には、初期推定値)として使用することができる。段階1でk1の推定に集中するため、その推定値k1,stage1_estimateは高水準の精度を有することができ、それによって、段階2でより高精度及び/又は計算時間の削減をもたらす。段階2におけるより高水準の精度は、k1,stage2_estimateだけでなく、k2,stage2_estimate、p1,stage2_estimate、p2,stage2_estimateにも適用することができる。幾つかの例では、段階2で更に、段階1から推定される値に基づいて(例えば、k1,stage1_estimate、fx,stage1_estimate、cx,stage1_estimate及び/又はcy,stage1_estimateに基づいて)、一つ以上の射影パラメーターに対する、一つ以上のそれぞれの推定値fx, stage2_estimate、fy, stage2_estimate、cx, stage2_estimate及び/又はcy, stage2_estimateを決定することができる。段階2ではまた、初期推量として段階1の出力に依拠することによって、一つ以上の射影パラメーターに対するそれぞれの推定値の精度を向上することができる。一実施形態では、段階2で決定するレンズ歪みパラメーター及び/又は射影パラメーターに対するそれぞれの推定値(例えば、k2,stage2_estimate、p1,stage2_estimate、p2,stage2_estimate、k1,stage2_estimate、fx,stage2_estimate、fy,stage2_estimate、cx,stage2_estimate及び/又はcy,stage2_estimate)は更に、段階1で決定した射影パラメーターの推定値(例えば、fx,stage1_estimate、fy,stage1_estimate、cx,stage1_estimate及び/又はcy,stage1_estimate)に基づくことができる。
一実施形態では、ステップ507は、残りの一つ以上のレンズ歪みパラメーターをゼロと推定すると同時に、又は残りの一つ以上のレンズ歪みパラメーターを推定することなく、カメラキャリブレーションに使用されるレンズ歪みモデルのレンズ歪みパラメーターの部分集合のみを推定することを含むことができる。例えば、第二のレンズ歪みパラメーターに対する推定値は、ステップ507で決定することができ、第三のレンズ歪みパラメーターに対する推定値は、ゼロに決定されるか、又は推定されない。例えば、図8は、k2,stage2_estimate、p1,stage2_estimate及びp2,stage2_estimate(これらのうちの一つは、第二のレンズ歪みパラメーターに対する推定値とすることができる)、並びにk1,stage2_estimateをk2、p1、p2及びk1それぞれに対して決定し、レンズ歪みパラメーターk3に対するk3,stage2_estimateをゼロと推定するか、又は推定しない例を示す。この例では、k3は第三のレンズ歪みパラメーターとすることができる。一実施形態では、ステップ507用の第三のレンズ歪みパラメーターは、レンズ歪み又はある特定のタイプのレンズ歪みを記述する、成分の集合の中の最高次成分を記述する係数とすることができる。例えば、k3は、多項式モデルの放射状多項式成分k1r2、k2r4、k3r6の集合の中で最高次の放射状多項式成分k3r6を記述することができる。一実施形態では、k3r6が比較的高次の効果であるため、放射状のレンズ歪みはk3の小さな変化に敏感な場合があり、それによって、k3を正確に推定するのに不安定で困難にしうる。更に、不正確なk3が、k1、k2、p1及び/又はp2に対する推定値の精度にマイナスの影響を与える場合がある。したがって、ステップ507、又はより具体的には、段階2で、他のレンズ歪みパラメーター(例えば、k1、k2、p1及び/又はp2)の推定に集中するために、第三のレンズ歪みパラメーターk3の推定を控えるか、又はゼロと推定することができる。例えば、ステップ505〜507用に推定されているレンズ歪みパラメーターは、歪みモデルのレンズ歪みパラメーターの集合(例えば、多項式歪みモデル)とすることができ、第三のレンズ歪みパラメーター(例えば、k3)と、歪みモデルのレンズ歪みパラメーターの集合の全ての他のレンズ歪みパラメーターの部分集合(例えば、k1、k2、p1及びp2)等、他のレンズ歪みパラメーターの部分集合とに分割することができる。こうした例では、段階2で、第三のレンズ歪みパラメーター(例えば、k3)をゼロと推定すると同時に、又は第三のレンズ歪みパラメーターを推定することなく、レンズ歪みパラメーターの部分集合(例えば、k1、k2、p1及びp2)の全てのレンズ歪みパラメーターに対するそれぞれの推定値を決定することができる。場合により、第三のレンズ歪みパラメーター(例えば、k3)の推定は、より詳細に後述するように、後続する段階(例えば、段階3)に持ち越すことができる。
一実施形態では、ステップ507は、別の単純化されたバージョンの歪み関数d
x、d
yを含む方程式を解くことを含むことができる。この他の単純化されたバージョンは、第三のレンズ歪みパラメーター(例えば、k
3)をゼロに限定することによって得られ、d
x_simplified2及びd
y_simplified2をもたらすことができる。
幾つかの実施態様では、ステップ507で計算システム110によって、k1、k2、p1、p2、fx、fy、cx及びcyについて解くように、非一時的コンピューター可読媒体115からdx_simplified2及びdy_simplified2を受け取り、単純化された歪み関数を含み、射影行列を含む方程式を解くことができる。
図5に戻ると、方法500は、一実施形態において、計算システム110によって、レンズ歪みパラメーターの集合に対するそれぞれの推定値を含む、カメラキャリブレーション情報を決定する、ステップ509を含むことができる。レンズ歪みパラメーターの集合に対するそれぞれの推定値は、ステップ505で決定する第一のレンズ歪みパラメーターの推定値(例えば、k1, stage1_estimate)、及び/若しくはステップ507で決定する第二のレンズ歪みパラメーターの推定値(例えば、k2, stage1_estimate)を含むか、又はそれらに基づくことができる。
一実施形態では、固有カメラキャリブレーションパラメーターの推定は、段階1及び段階2のみを含むことができ、その場合、レンズ歪みパラメーターの集合に対するそれぞれの推定値は、ステップ507で決定する第二のレンズ歪みパラメーターの推定値を少なくとも含むか、又はより具体的には、k1,stage2_estimate、k2,stage2_estimate、k2,stage2_estimate、p1,stage2_estimate、p2,stage2_estimate、fx, stage2_estimate、fy, stage2_estimate、cx,stage2_estimate及びcy,stage2_estimateを含むことができる。それぞれの推定値は、例えば、ハンド−アイキャリブレーション若しくはステレオキャリブレーションを実施するように、又は他の何らかの目的のために直接使用することができる。一実施形態では、ステップ509での固有カメラキャリブレーションパラメーターの推定には、段階3〜5等、図9Aから12Bに示す、更なる段階を含むことができる。上述したように、一つの段階からの推定値は、連続する次の段階へ入力されて、より精密化した推定値を生成することができる。
図9Aは、段階2に続き、k1、k2、p1、p2に対するより精緻化した推定値を、段階2からのそれらのパラメーターの推定値に基づいて生成する、段階3の例を示す。より具体的には、段階3で、段階2の出力に基づいて、k2,stage3_estimate、p1,stage3_estimate、p2,stage3_estimate、k1,stage3_estimateを生成することができる。段階3で生成されるこれらの推定値は、段階2からの推定値に対して更新された推定値とみなすことができる。
一実施形態では、段階3は湾曲減少段階とすることができる。湾曲減少段階で、キャリブレーション画像(例えば、図6Eの680E)に、上述した歪み関数の逆関数を適用(すなわち、
を適用)して、レンズ歪みの影響を除去又は減少するように試みる、キャリブレーション画像の変更されたバージョンを生成することができる。例えば、逆射影行列K
−1をキャリブレーション画像に適用して、
座標を決定することができ、
は、例えば、特定のパターン要素又は他の特徴が、カメラ視野内のどこに位置するかを表すことができる。座標
は、レンズ歪みの影響を含むことができ、逆歪み関数を
に適用して、
又はレンズ歪みの影響が除去されたか、若しくは他の方法で低減した座標とすることができる、X及びYを決定することができる。射影行列Kを、
又はX及びYに適用して、レンズ歪みの影響を低減する、キャリブレーション画像の変更されたバージョンを生成することができる。キャリブレーション画像の変更されたバージョンの生成は、全体の内容が引用することにより本明細書の一部をなす、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題される米国特許出願番号第16/295,940号でより詳細に考察されている。上述したように、レンズ歪みによって、キャリブレーション画像のキャリブレーションパターン(例えば、460)の外観の中に、湾曲が導入される場合がある。段階3で、レンズ歪みパラメーターに対する推定値を見つけるように試みることができ、結果として得られる逆歪み関数によって、湾曲を除去又は低減する、キャリブレーション画像の変更されたバージョンを生成できる。
一実施形態では、段階3で、一つ以上のレンズ歪みパラメーターに対する一つ以上のそれぞれの初期推定値(例えば、k1、k2、k3、p1、p2に対する初期推定値)を使用することができる。これらの初期推定値を調整して、段階3用の更新された推定値をもたらすことができる。場合により、これらの初期推量は、先行する段階からのレンズ歪みパラメーターのそれぞれの推定値と等しいか、又はそれらに(直接又は間接的に)基づくことができる。例えば、段階3でのk1に対する初期推定値は、k1,stage2_estimate及び/若しくはk1,stage1_estimateと等しいか、又はそれらに基づくことができる。この例では、k1は第一のレンズ歪みパラメーターとすることができる。同様に、第二のレンズ歪みパラメーターに対する初期推定値(例えば、k2、p1、p2)は、段階2及び/若しくは段階1からのその推定値(例えば、k2,stage2_estimate及び/又はk2,stage1_estimate)と等しいか、又はそれに基づくことができる。図9Aに示すように、また湾曲減少段階で、この例では第三のレンズ歪みパラメーターとすることができる、k3に対する推定値を決定することができる。場合により、段階3で、k3の初期推定値をゼロと決定することができる。
上述したように、湾曲減少段階で、その段階用のk1、k2、k3、p1及び/又はp2の初期推定値に基づいて、カメラ(例えば、470)と関連付けられるレンズ歪みを補償する、キャリブレーション画像の変更されたバージョンを生成することができる。例えば、図9Bは、キャリブレーション画像680Eの変更されたバージョンの例を示す。湾曲減少段階は更に、キャリブレーション画像の変更されたバージョンにおける湾曲の量を決定することと、湾曲の量を低減する、k1、k2、k3、p1及び/又はp2に対するそれぞれの調整された推定値を生成するために、キャリブレーション画像の変更されたバージョンにおける湾曲の量に基づいて、k1、k2、k3、p1及び/又はp2のそれぞれの初期推定値を調整することとを含むことができる。調整は、一度実施することができるか、又はそれぞれの調整された推定値を生み出すように、複数の反復を複数回実施することができる。それぞれの調整された推定値は、湾曲減少段階により生み出される、レンズ歪みパラメーターのそれぞれの更新された推定値として設定することができる。すなわち、それぞれの調整された推定値は、k1,stage3_estimate、k2,stage3_estimate、k3,stage3_estimate、p1,stage3_estimate、p2,stage3_estimateとして設定することができる。
一実施形態では、直線当てはめ(line fitting)技法を使用して、キャリブレーション画像の変更されたバージョンにおける湾曲の量を決定することができる。例えば、キャリブレーションパターン(例えば、460)における複数のパターン要素が、複数のドット(例えば、円形ドット)であるとき、湾曲の量は、キャリブレーション画像の変更されたバージョンの中で、複数のドットを通って(例えば、それぞれのドットの中心を通って)複数の直線を当てはめること、及び複数の直線の各直線と、直線が当てはめられる、複数のドットのそれぞれのドット(例えば、それぞれのドットの中心)との間の距離に基づいて、湾曲の量を決定することによって決定することができる。図9Cは、未だある程度のレンズ歪みを呈する、キャリブレーション画像の変更されたバージョン(変更されたキャリブレーション画像とも呼ばれる)に対して実施されている、直線当てはめを示す。その結果、直線のうちの一つ以上は、その直線が当てはめられるパターン要素(例えば、ドット)の全てのそれぞれの中心を通らない。より具体的には、図9Cは、図9Bのドットの一部分に対する直線当てはめを示す。図9Cでは、四つのドットを通って当てはめられる直線は、四つのドットのうち三つのドットのそれぞれの中心からずれている。湾曲の量は、当てはめられた直線から出ているそれぞれの矢印によって示すように、図9Cにおける各ドットの中心と当てはめられた直線との間の、それぞれの距離に基づいて計算することができる。一実施形態では、キャリブレーション画像の変更されたバージョンに対する湾曲の量は、例えば、直線当てはめに関与する個々の直線に対する、それぞれの湾曲スコアの合計とすることができる、総湾曲スコアによって表すことができる。一実施形態では、湾曲減少段階は、キャリブレーション画像の変更されたバージョンに対する総湾曲スコアを最小限にするように、複数の歪みパラメーターのそれぞれの推定される値の最適化を含むことができ、変更されたバージョンは、推定される値に基づいて生成される。直線当てはめ技法は、全体の内容が引用することにより本明細書の一部をなす、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題される米国特許出願番号第16/295,940号でより詳細に考察されている。
一実施形態では、射影パラメーターのうちの一つ以上、又はより具体的には、射影行列若しくは逆射影行列は、段階3で値を固定することができる。例えば、図9Aは、段階3で射影パラメーターfx、fy、cx、cyが、段階2からのそれぞれの推定値に値を固定される例を示す。言い換えれば、fx,stage3_estimate=fx,stage2_estimate、fy,stage3_estimate=fy,stage2_estimate、cx,stage3_estimate=cx,stage2_estimate及びcy,stage3_estimate=cy,stage2_estimateである。段階3でのレンズ歪みパラメーターに対する更新された推定値は、段階2からの射影パラメーターに対するそれぞれの推定値に基づいて決定することができる。場合により、射影パラメーターは、カメラ視野内の位置とピクセル座標との線形変換を記述することができる。こうした場合、湾曲が非線形効果のためでありうるため、射影パラメーターは、キャリブレーション画像の変更されたバージョンにおける湾曲の量にほとんど又は全く影響を及ぼさない場合がある。したがって、射影パラメーターは、レンズ歪みパラメーター、又はキャリブレーション画像の変更されたバージョンにおける湾曲の量に影響を及ぼす他のパラメーターに集中するため、段階3の間、値を固定することができる。
一実施形態では、ステップ509でカメラキャリブレーション情報を決定することは、段階1から段階3のみを含むことができ、レンズ歪みパラメーターの集合に対するそれぞれの推定値は、ハンド−アイキャリブレーション若しくはステレオキャリブレーションを実施するように、又は他の何らかの目的のために直接使用することができるk1, stage3_estimate、k2, stage3_estimate、k3, stage3_estimate、p1, stage3_estimate、p2, stage3_estimateと等しくすることができる。一実施形態では、図10に示すように、ステップ509でカメラキャリブレーション情報を決定することは、段階3に続く段階4を含むことができる。段階4で、例えば、段階3からの推定値を入力として使用して、様々なレンズ歪みパラメーター及び/又は射影パラメーターに対する、より精密化した推定値を生成することができる。
一実施形態では、段階4で、k3の推定値、又はより一般的には、第三のレンズ歪みパラメーターの値を、k3,stage4_estimateがk3,stage3_estimateと等しくなるような、段階3で出力される推定値に固定することができる。上述したように、カメラキャリブレーション情報は、レンズ歪みモデル(例えば、多項式モデル)の放射状多項式成分の集合の中で、最高次の放射状多項式成分を記述する、第三のレンズ歪みパラメーター(例えば、k3)を含むことができる。場合により、第三のレンズ歪みパラメーターの感度が、他のレンズ歪みパラメーターに対する推定値の精度に影響を与える場合があるため、段階4で、こうした第三のレンズ歪みパラメーターの値を固定することができる。
一実施形態では、段階4で、fx、fy、cx及び/又はcy等、射影パラメーターに対する推定値を更新することができる。より具体的には、上述したように、射影パラメーターは、場合により、段階3で値を固定することができ、段階3で、第三のレンズ歪みパラメーターに対する推定値(例えば、k3,stage3_estimate)を生成し、第一のレンズ歪みパラメーターに対する更新された推定値(例えば、k1,stage3_estimate)及び第二のレンズ歪みパラメーターに対する更新された推定値(例えば、k2,stage3_estimate、p1,stage3_estimate又はp2,stage3_estimate)等、他のレンズ歪みパラメーターに対するそれぞれの更新された推定値を生成する。段階3では、射影パラメーターは、図9Aに示すように、fx,stage3_estimate=fx,stage2_estimate、fy,stage3_estimate=fy,stage2_estimate、cx,stage3_estimate=cx,stage2_estimate及びcy,stage3_estimate=cy,stage2_estimateという制約を受ける場合がある。段階3の後、射影パラメーターに対する推定値は、図10に示すように、ステップ4で更新することができる。例えば、段階4で計算システム110によって、fx,stage4_estimate、fy,stage4_estimate、cx,stage4_estimate、cy,stage4_estimateを決定することができる。段階4によって生成される射影パラメーターに対するこれらの更新された推定値は、k1,stage3_estimate、k2,stage3_estimate、k3,stage3_estimate、p1,stage3_estimate及び/又はp2,stage3_estimate等、段階3から決定されたレンズ歪みパラメーターの推定値に基づいて決定することができる。
一実施形態では、ステップ509でカメラキャリブレーション情報を決定することは、段階1から段階4のみを含むことができ、レンズ歪みパラメーターの集合のそれぞれの推定値は、k1,stage4_estimate、k2,stage4_estimate、k3,stage4_estimate、p1,stage4_estimate、p2,stage4_estimateと等しくすることができ、射影パラメーターに対するそれぞれの推定値は、ハンド−アイキャリブレーション若しくはステレオキャリブレーションを実施するように、又は他の何らかの目的のために直接使用することができる、fx,stage4_estimate、fy,stage4_estimate、fy,stage4_estimate、cx, stage4_estimate及びcy, stage4_estimateと等しくすることができる。一実施形態では、ステップ509は、段階4に続く段階5を含むことができる。図11に示すように、段階5は、段階4の後、又はより一般的には、段階1の後とすることができる。
場合により、第一のレンズ歪みパラメーター及び/又は第二のレンズ歪みパラメーター(例えば、k1及びk2)は、段階5で値を固定することができ、第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーター以外の、更なるレンズ歪みパラメーター(例えば、k3、p1、p2)に対する推定値が、その段階で決定される。こうした場合、段階4からのk1及びk2に対する推定値は、推定値が、段階5で更に精密化される必要がないように、十分正確であることができる。更に、k1及びk2の値を固定することによって、k3を正確に推定する安定性を向上させることができ、したがって、段階5でそのパラメーターの改善に集中することができる。
図11に示すように、段階5における第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーター(例えば、k1、k2)は、k1,stage4_estimate及びk2,stage4_estimate等、段階4で出力される推定値に値を固定することができる。幾つかの例では、第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーターの推定値(例えば、k1,stage1_estimate及びk2,stage1_estimate)が、より早期の段階(例えば、段階1)で決定される場合、段階4からの第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーターの推定値は、それぞれ第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーターの更新された推定値と呼ぶことができる。こうした例では、段階5の更なるレンズ歪みパラメーターに対する推定値は、第一のレンズ歪みパラメーターの更新された推定値及び/又は第二のレンズ歪みパラメーターの更新された推定値に基づいていると呼ぶことができる。
一実施形態では、ステップ509で決定されるカメラキャリブレーションは、k1,stage5_estimate、k2,stage5_estimate、k3,stage5_estimate、p1,stage5_estimate、p2,stage5_estimate、fx,stage5_estimate、fy,stage5_estimate、cx,stage5_estimate及びcy,stage5_estimate等、段階5からの推定値を含むことができる。一実施形態では、これらの推定値を使用して、図12Aに示すように、ハンド−アイキャリブレーション及び/又はステレオキャリブレーションを実施することができる。ハンド−アイキャリブレーションによって、カメラ(例えば、図4Bの470)とロボットのベース(例えば、ロボット450のベース452)との空間関係等、カメラ(例えば、470)とその外部環境との関係を決定することができる。ステレオキャリブレーションによって、カメラ(例えば、170/370/470)と別のカメラ(例えば、180)との空間関係を決定することができる。ハンド−アイキャリブレーション及びステレオキャリブレーションは、全体の内容が引用することにより全体として本明細書の一部をなす、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題される米国特許出願番号第16/295,940号でより詳細に考察されている。
場合により、段階5からの推定値を使用して、レンズ歪みパラメーターの更なる推定値を決定するか、又は他のレンズ歪みパラメーターに対する推定値を決定することができる。例えば、図12Bは、方法500のカメラキャリブレーションで、レンズ歪みパラメーターk1、k2、k3、k4、k5、k6、p1及びp2を含む、有理モデルを使用する例を示す。こうした例では、段階1から5では、多項式モデルのレンズ歪みパラメーター、又はより具体的には、k1、k2、k3、p1及びp2の推定に専念することができ、それらの段階におけるk4、k5、k6は、ゼロと推定されるか、又は推定されない。こうした例では、ステップ509は更に、少なくとも段階5からのk1、k2、k3、p1及びp2の推定値に基づいて、少なくともk4、k5又はk6に対する推定値を決定する、段階6を含むことができる。
一実施形態では、図7Aから12Bの段階1から段階6のうちの一つ以上の段階は、省略又は再配置することができる。例えば、幾つかの実施形態で、段階3から6を省略することができる。別の例として、幾つかの実施形態で、段階4から6を省略するか、又は段階2、段階4若しくは段階5を省略することができる。
図5に戻ると、方法500は、計算システム110によって、カメラキャリブレーションが実施された後に、カメラ(例えば、470)によって生成される後続する画像を受け取る、ステップ511を含むことができる。例えば、画像は、デパレタイズ動作又はビンピッキング動作等のロボットの動作中に、カメラ(例えば、470)によって生成することができる。幾つかのシナリオでは、画像は、ロボットと相互作用があるべき物体を取り込むか、又は他の方法で表すことができる。例えば、物体は、デパレタイズされるべき包装品、又はつかまれる部品とすることができる。一実施形態では、方法500は、計算システム110によって、図4A〜4Bのロボットアーム454の移動等、ロボット移動を制御するための移動コマンドを生成する、ステップ513を含むことができる。移動コマンドは、後続する画像に基づいて、かつカメラキャリブレーション情報(例えば、固有カメラキャリブレーション情報及び/又はハンド−アイキャリブレーション情報)に基づいて生成することができ、ロボットの相互作用を実施するように使用することができる。例えば、計算システム110は、ロボットアーム454とつかまれる物体との空間関係を決定するように構成することができ、空間関係は、全体の内容が引用することにより全体として本明細書の一部をなす、「Method and System for Performing Automatic Camera Calibration for Robot Control」と題される米国特許出願番号第16/295,940号でより詳細に考察されているように、後続する画像に基づいて、かつカメラキャリブレーション情報に基づいて決定することができる。一実施形態では、ステップ511及び513等、図5の中にある方法500の一つ以上のステップを省略することができる。
上述したように、本開示の一態様は、ステレオカメラキャリブレーションの精度を向上させること、より具体的には、ステレオカメラキャリブレーションによって使用される推定値(例えば、推定される変換関数)の中にどのくらい誤差があるのかを効果的に測定し、それにより、ステレオカメラキャリブレーションが、こうした推定値における誤差を低減することによって、ステレオカメラキャリブレーションの向上を可能にすることに関する。ステレオカメラキャリブレーションは、例えば、二つのカメラの空間関係を決定することを含むことができる。例えば、図13A〜13Bは、第一のカメラ470及び第二のカメラ480を含む、システム1300を示す。システム1300は、図1Cのシステム100B及び/又は図4A〜4Bのシステム400の一実施形態とすることができる。更に、カメラ480は、カメラ180の一実施形態とすることができる。システム1300は、第一のカメラ470及び第二のカメラ480が取り付けられる、取付フレーム1305を含むことができる。場合により、取付フレーム1305で、二つのカメラ470、480を、互いに対して場所及び/又は向きを固定したまま維持することができる。
図13A〜13Bの実施形態では、ステレオカメラキャリブレーションは、第一のカメラ470と第二のカメラ480との空間関係、例えば、二つのカメラの相対位置及び相対的な向きを決定するように実施することができる。例えば、ステレオキャリブレーションは、空間関係を記述する変換関数T
Camera1 Camera2又はT
Camera2 Camera1を決定することを含むことができる。変換関数は、例えば、第一のカメラ470の座標系と第二のカメラ480の座標系との間の回転及び/又は並進を記述する、以下の方程式におけるような、行列とすることができる。
一実施形態では、図13A〜13Bのシステム1300用のステレオカメラキャリブレーションは、ロボット450上に配置されるか、又は他の何らかの構造上に配置することができる、キャリブレーションパターン460の使用を含むことができる。図4Cに関して上述したように、キャリブレーションパターンは、パターン要素4611等、複数のパターン要素を有することができる。幾つかの例では、パターン要素は、第一のカメラ470に対するそれぞれの座標の第一の組を有し、第二のカメラ480に対するそれぞれの座標の第二の組を有する、それぞれの位置にあるとすることができる。より具体的には、パターン要素の物理的位置は、第一のカメラ470の座標系における座標の第一の組を有し、第二のカメラの座標系における座標の第二の組を有することができる。例えば、図13Bに示すように、パターン要素4611の位置は、第一のカメラ470の座標系に座標[x1 y1 z1]T Camera1を有し、第二のカメラ480の座標系に座標[x’1 y’1 z’1]T Camera2を有することができる。更に、図4Cに関して上述したように、パターン要素のそれぞれの位置はまた、パターン座標系における定義されたパターン要素座標を有することができる。例えば、パターン要素4611は、パターン座標系において座標[x’’1 y’’1 z’’1]T Patternにあるとすることができ、x’’1、y’’1及びz’’1の値は事前に定義される。一実施形態では、ステレオキャリブレーションは、より詳細に後述するように、座標の第一の組、座標の第二の組及び/又は定義されたパターン要素座標に基づいて実施することができる。
図14は、ステレオキャリブレーションを実施するための方法1400のフロー図を示す。一実施形態では、方法1400は、図1A〜1C及び図2の計算システム110によって、又はより具体的には、計算システム110の制御回路111によって実施することができる。ステレオキャリブレーションは、第一のカメラ視野(例えば、図13Aの410)を有する第一のカメラ(例えば、図1C及び13Aの170/470)と、第二のカメラ視野(例えば、420)を有する第二のカメラ(例えば、180/480)とを含むことができる。上述したように、計算システム110は、(図2の)通信インターフェース113を介して等、第一のカメラ(例えば、170/470)及び第二のカメラ(例えば、480)と通信するように構成することができる。一実施形態では、方法1400は、複数のパターン要素を有するキャリブレーションパターン(例えば、160/460)が、第一のカメラ視野(例えば、410)及び第二のカメラ視野(例えば、420)内にあるか、又はあったとき、かつ更に、第一のカメラ(例えば、470)及び第二のカメラ(例えば、480)が、第一のキャリブレーション画像及び第二のキャリブレーション画像それぞれを生成したときに実施することができる。第一のキャリブレーション画像及び第二のキャリブレーション画像は各々、キャリブレーションパターン(例えば、460)を表す画像とすることができる。例えば、図15A及び15Bは、第一のキャリブレーション画像1580A及び第二のキャリブレーション画像1580Bを示し、両方ともに、図13A及び13Bのキャリブレーションパターン460を表すそれぞれの画像である。第一のキャリブレーション画像1580Aは、第一のカメラ470によって生成することができ、第二のキャリブレーション画像1580Bは、第二のカメラ480によって生成することができる。更に、キャリブレーションパターン460は、キャリブレーション画像1580A、1580Bが生成される期間中、第一のカメラ470及び第二のカメラ480に対して固定したままとすることができる。こうした状況では、第一のキャリブレーション画像1580Aは、第二のキャリブレーション画像1580Bと一致すると呼ぶことができ、又は逆もまた同様である。
図14に戻ると、方法1400は、一実施形態において、計算システム110によって、第一のカメラ(例えば、470)により生成される第一のキャリブレーション画像(例えば、1580A)を受け取る、ステップ1401を含むことができる。方法は更に、計算システム110によって、第二のカメラ(例えば、480)により生成される第二のキャリブレーション画像(例えば、1580B)を受け取る、ステップ1403を含むことができる。場合により、計算システム110によって、第一のキャリブレーション画像(例えば、1580A)及び/又は第二のキャリブレーション画像(例えば、1580B)を、第一のカメラ(例えば、470)及び/又は第二のカメラ(例えば、480)から直接受け取ることができる。場合により、第一のキャリブレーション画像(例えば、1580A)及び/又は第二のキャリブレーション画像(例えば、1580B)は、図2の非一時的コンピューター可読媒体115(例えば、ソリッドステートドライブ)に記憶させておくことができ、計算システム110によって、第一の及び/又は第二のキャリブレーション画像を、ソリッドステートドライブから受け取ることができる。
一実施形態では、方法1400は、計算システムによって、上述した行列TCamera1 Camera2又はTCamera2 Camera1等、第一のカメラと第二のカメラとの空間関係を記述するために、変換関数の推定値を決定する、ステップ1405を含むことができる。行列は、例えば、第一のカメラ470の座標系と第二のカメラ480の座標系との間の回転及び/又は並進を記述することができる。一実施形態では、変換関数の推定値は、8点アルゴリズム又は他の何らかの技法を使用して決定することができる。
上述したように、本開示の一態様は、ステップ1405から決定される変換関数の誤差の量を決定することに関する。場合により、誤差は、第一のキャリブレーション画像(例えば、1580A)から決定される第一の複数の座標と、第二のキャリブレーション画像(例えば、1580B)から決定される複数の変換された座標との比較に基づいて決定することができる。ステップ1407から1413に関してより詳細に後述するように、比較は、第一の複数の座標と複数の変換された座標との間のオフセット(例えば、座標間のそれぞれの距離)を決定すること、及び/又は座標に基づいて角度値を決定することを含むことができる。更に後述するように、計算システムによって、再投影誤差、再構成誤差及び/又は再構成誤差角度を決定して、変換関数の誤差の量を特徴付けることができる。後述するステップを使用して、変換関数の誤差を決定する一方で、場合により、ステップを使用して変換関数を決定することもできる。例えば、より詳細に後述する、ステップ1407及び1409で決定される座標は、幾つかの例では、ステップ1405で変換関数の推定値を決定するように使用することができる。
より具体的には、方法1400は、計算システム110によって、第一のキャリブレーション画像(例えば、図15Aの1580A)に基づいて、第一のカメラ(例えば、470)に対する複数のパターン要素(例えば、図4Cの4611から46125)のそれぞれの位置を記述するか、又は他の方法で表す、第一の複数の座標を決定する、ステップ1407を含むことができる。一実施形態では、方法1400は、計算システム110によって、第二のキャリブレーション画像(例えば、図15Bの1580B)に基づいて、第二のカメラ(例えば、図13A及び13Bの480)に対する複数のパターン要素(例えば、図4Cの4611から46125)のそれぞれの位置を記述する、第二の複数の座標を決定する、ステップ1409を含むことができる。より詳細に後述する(ステップ1411及び1413に関して)ように、第二の複数の座標は、第一のカメラ(例えば、470)と第二のカメラ(例えば、480)との空間関係の推定値である、変換関数の推定値を使用して、複数の変換された座標に変換することができる。変換関数の推定値が、高水準の精度を有する場合、第一の複数の座標及び複数の変換された座標は、実質的に又は厳密に同じであることができる。変換関数の推定値が精度を失うと、第一の複数の座標及び複数の変換された座標は、互いとのより大きな差異を呈する場合がある。
ステップ1407及び1409を振り返ると、それらのステップで決定される第一の複数の座標及び/又は第二の複数の座標は、場合により、画像座標、又はより具体的には、ピクセル座標とすることができる。一例として、第一の複数の座標は、図15Aに示す、第一の複数のピクセル座標[u1 v1]T…[u25 v25]Tとすることができる。これらのピクセル座標は、(図4Cの)キャリブレーションパターン460の複数のパターン要素4611から46125が、図15Aの第一のキャリブレーション画像1580Aの中に現れる、それぞれの位置を記述することができる。その上、上述したように、第一の複数のピクセル座標[u1 v1]T…[u25 v25]Tは、第一のカメラ(例えば、470)に対して表現することができる。例えば、第一の複数の座標は、第一のカメラ(例えば、470)の画像センサー(例えば、図3Aの373/373A)の座標系で表現することができる。図15Bに示す一例では、第二の複数の座標は、(図4Cの)キャリブレーションパターン460の複数のパターン要素4611から46125が、第二のキャリブレーション画像1580Bの中に現れる、それぞれの位置を記述する、第二の複数のピクセル座標[u’1 v’1]T…[u’25 v’25]Tとすることができる。第二の複数のピクセル座標[u’1 v’1]T…[u’25 v’25]Tは、第二のカメラ(例えば、480)に対して表現することができる。例えば、第二の複数の座標は、第二のカメラ(例えば、480)の画像センサーの座標系で表現することができる。
場合により、ステップ1407で決定される第一の複数の座標、及び/又はステップ1409で決定される第二の複数の座標は、3D座標とすることができる。一例として、第一の複数の座標は、図13Bに示す、第一の複数の3D座標[X1 Y1 Z1]T Camera1…[X25 Y25 Z25]T Camera1とすることができ、図13Bの第一のカメラ470に対する、キャリブレーションパターン460の複数のパターン要素4611〜46125のそれぞれの物理的位置を記述するか、又は他の方法で表すことができる。第一の複数の3D座標[X1 Y1 Z1]T Camera1… [X25 Y25 Z25]T Camera1は、第一のカメラ470の位置及び向きに関して定義される座標系とすることができる、第一のカメラ470の座標系(第一のカメラ座標系と呼ぶこともできる)に対して表現することができる。更に図13Bに示すように、第二の複数の座標は、第二の複数の3D座標[X’1 Y’1 Z’1]T Camera2…[X’25 Y’25 Z’25]T Camera2とすることができ、第二のカメラ480に対する、キャリブレーションパターン460の複数のパターン要素4611〜46125のそれぞれの物理的位置を記述することができる。より具体的には、第二の複数の3D座標[X’1 Y’1 Z’1]T Camera2…[X’25 Y’25 Z’25]T Camera2は、第二のカメラ480の位置及び向きに関して定義される座標系とすることができる、第二のカメラ480の座標系(第二のカメラ座標系と呼ぶこともできる)に対して表現することができる。
一実施形態では、第一の複数の座標及び/又は第二の複数の座標が3D座標である場合、それらの座標は、場合により、画像座標に基づいて決定することができる。例えば、ステップ1407の第一の複数の座標が、3D座標[X1 Y1 Z1]T Camera1…[X25 Y25 Z25]T Camera1である場合、これらの3D座標は、第一のキャリブレーション画像(例えば、1580A)からのピクセル座標[u1 v1]T… [u25 v25]Tに基づいて決定することができる。こうした場合、3D座標[X1 Y1 Z1]T Camera1…[X25 Y25 Z25]T Camera1は、キャリブレーションパターン460が、第一のカメラ470によって撮影されるときの、パターン要素4611〜46125のそれぞれの物理的位置を示すことができる。3D座標[X1 Y1 Z1]T Camera1…[X25 Y25 Z25]T Camera1は、こうした例では、パースペクティブ−nポイントアルゴリズムに基づいて、カメラキャリブレーション情報(例えば、方法500からの)に基づいて、及び/又は他の何らかの技法に基づいて決定することができる。同様に、ステップ1409の第二の複数の座標が、3D座標[X’1 Y’1 Z’1]T Camera2…[X’25 Y’25 Z’25]T Camera2である場合、これらの3D座標は、図15Bの第二のキャリブレーション画像1580Bからのピクセル座標[u’1 v’1]T…[u’25 v’25]Tに基づいて決定することができる。
一実施形態では、方法1400は、計算システム110によって、変換関数の推定値に基づいて、第二の複数の座標を複数の変換された座標に変換する、ステップ1411を含むことができ、複数の変換された座標は、第一のカメラ(例えば、470)に対してのものである。場合により、ステップ1411は、第一のカメラ(例えば、470)に対して表現されることを意図している、変換された座標を生成するために、変換関数の推定値を第二の複数の座標(カメラ480等、第二のカメラに対して表現される)に適用することを含むことができる。上述したように、変換関数の推定値の精度は、変換された座標がどのくらい第一の複数の座標(また、第一のカメラに対しても表現される)に近いかによって、正確に測定することができる。
一実施形態では、複数の変換された座標は、複数の画像座標とすることができる。第一の複数の座標もまた、複数の画像座標である場合、複数の変換された座標は、更なる複数の画像座標と呼ぶことができる。変換された座標は、画像座標である場合、より詳細に後述する、再投影誤差を決定するために使用することができる。一例として、図16Aは、複数の変換された座標が、画像座標、又はより具体的には、ピクセル座標[q’1 r’1]T…[q’25 r’25]Tである例を示し、それらの座標によって、例えば、第二のキャリブレーション画像が、第二のカメラの代わりに第一のカメラ(例えば、470)によって生成されていた場合、パターン要素4611から46125が、第二のキャリブレーション画像の中のどこに現れるかを推定することができる。すなわち、ピクセル座標[q’1 r’1]T…[q’25 r’25]Tは、パターン要素4611から46125の物理的位置が、第一のカメラ(例えば、470)の画像センサー上で投影されるであろう場所に近似することができる。
一実施形態では、複数の変換された座標は、画像座標である場合、3D座標に基づいて生成することができる。例えば、3D座標は、パターン要素4611から46125の物理的位置を記述することができ、方法500からの射影パラメーターを使用する射影行列等の射影行列を使用して、画像座標の中に投影できる。例えば、図16Bは、変換関数の推定値を使用して生成され、第一のカメラ(例えば、470)に対して又はおおよそ対して表現する、複数の3D座標[a’1 b’1 c’1]T Camera1… [a’25 b’25 c’25]T Camera1を示す。場合により、画像座標[q’1 r’1]T… [q’25 r’25]Tは、方程式1又は方程式7〜10に関して上述したように、第一のカメラ(例えば、470)の射影行列及び/又はレンズ歪みパラメーターを、3D座標[a’1 b’1 c’1]T Camera1… [a’25 b’25 c’25]T Camera1に適用することによって決定することができる。上述したように、射影行列を使用して、第一のカメラの視野(例えば、410)、又はより具体的には、3D座標[a’1 b’1 c’1]T Camera1… [a’25 b’25 c’25]T Camera1における位置が、第一のカメラ(例えば、470)の画像平面へどのように投影されるかを決定することができる。この例で3D座標は、以下の関係(同次形で述べる)に基づいて決定することができる。
[a’n b’n c’n 1]T Camera1=TCamera2 Camera1 [X’n Y’n Z’n 1]T Camera2 (方程式15)
上記例では、TCamera2 Camera1は、ステップ1405で決定される変換関数の推定値である、行列とすることができ、[X’n Y’n Z’n]T Camera2は、図3Bに関して上述したように、第二のカメラ(例えば、480)に関するパターン要素4611から46125の物理的位置を記述する、3D座標とすることができる。3D座標[X’1 Y’1 Z’1]T Camera2…[X’25 Y’25 Z’25]T Camera2は、例えば、第二のキャリブレーション画像(例えば、1580B)及び定義されたパターン要素座標(例えば、[X’’1 Y’’1 Z’’1]T Pattern…[X’’25 Y’’25 Z’’25]T Pattern)に基づいて決定することができる。より具体的には、パースペクティブ−nポイントアルゴリズム又はZhangのアルゴリズム等の技法が、3D座標[X’1 Y’1 Z’1]T Camera2…[X’25 Y’25 Z’25]T Camera2を決定する際に使用することができる。上記方程式(方程式15)の結果を、場合により、画像座標[q’1 r’1]T…[q’25 r’25]Tを決定するように使用することができるため、これらの場合の画像座標は、変換関数の推定値に基づき、したがって、より詳細に後述するように、変換関数の推定値の精度を決定するために使用することができる。
一実施形態では、ステップ1411で決定される複数の変換された座標は、第一のカメラ座標系に対する等、第一のカメラ(例えば、470)に対するパターン要素4611から46125の物理的位置を推定する、複数の3D座標とすることができる。例えば、こうした実施形態における複数の変換された座標は、方程式15で上述したように、変換関数の推定値を使用して決定される、3D座標[a’n b’n c’n 1]T Camera1とすることができる。第一の複数の座標もまた、複数の3D座標である場合、複数の変換された座標は、複数の変換された座標と呼ぶことができる。
図14に戻ると、方法1400は、一実施形態において、計算システム110によって、第1の複数の座標と複数の変換された座標とのそれぞれの差異を記述する、誤差パラメーター値を決定する、ステップ1413を含むことができる。
一実施形態では、誤差パラメーター値は、第一の複数の座標と複数の変換された座標との間のそれぞれの距離(又はより一般的には、オフセット)を表す値に基づくことができる。第一の複数の座標及び複数の変換された座標が、画像座標(例えば、ピクセル座標)である場合、誤差パラメーター値は、後述するように、再投影誤差とすることができる。第一の複数の座標及び複数の変換された座標が、3D座標である場合、誤差パラメーター値は、また後述するように、再構成誤差又は再構成誤差角度とすることができる。
例えば、図17Aは、第一の複数の座標が、第一の複数のピクセル座標[u
1 v
1]
T…[u
25 v
25]
T(図15Aに示すような)であり、複数の変換された座標が、更なる複数のピクセル座標[q’
1 r’
1]
T…[q’
25 r’
25]
T(図16Aに示すような)である、例を示す。こうした例では、誤差パラメーター値は、第一の複数のピクセル座標と、更なる複数のピクセル座標との間のそれぞれの距離d_pixel
n(画像距離、又はより具体的には、ピクセル距離とも呼ばれる)に基づくことができる。
場合により、誤差パラメーター値は、それぞれのピクセル距離(例えば、d_pixel1からd_pixel25)の平均、又はそれぞれのピクセル距離に基づく他の何らかの統計の測定基準とすることができる。こうした誤差パラメーター値は、再投影誤差と呼ぶことができる。
別の例として、図17Bは、第一の複数の座標が、第一の複数の3D座標[X
1 Y
1 Z
1]
T Camera1…[X
25 Y
25 Z
25]
T Camera1(図13Aに示すような)であり、複数の変換された座標が、複数の3D座標[a’
1 b’
1 c’
1]
T Camera1…[a’
25 b’
25 c’
25]
T Camera1(図16Bに示すような)である状況を示す。こうした例では、誤差パラメーター値は、第一の複数の3D座標と更なる複数の3D座標との間のそれぞれの距離d_physical
n(3D距離又は物理的距離とも呼ばれる)に基づくことができる。
場合により、誤差パラメーター値は、それぞれの3D距離(例えば、d_physical1からd_physical25)の平均、又はそれぞれの3D距離に基づく他の何らかの統計の測定基準とすることができる。こうした誤差パラメーター値は、再構成誤差と呼ぶことができる。
一実施形態では、再投影誤差又は再構成誤差の有用性は、第一のカメラ(例えば、470)又は第二のカメラ(例えば、480)と、取り込まれている(例えば、撮影された)キャリブレーションパターン(例えば、460)との間の距離に依存することができる。例えば、キャリブレーションパターン(例えば、460)が、第一のカメラ(例えば、470)及び/又は第二のカメラ(例えば、480)により近いとき、再投影誤差はより有用性があるとすることができる。例えば、第一のカメラ(例えば、470)及び/又は第二のカメラ(例えば、480)が、限定された解像度を有する場合、キャリブレーションパターン(例えば、460)をより遠くのカメラから取り込むと、第一の複数のピクセル座標と更なる複数のピクセル座標との間の距離は、より小さくなり及び/又は粒度を失う場合がある。例えば、図17Cは、図13A及び13Bの第一のカメラ470によって生成される、キャリブレーションパターン460のキャリブレーション画像の例を示し、キャリブレーションパターン460は、図17Aのキャリブレーション画像が生成される状況と比較して、第一のカメラ470からより遠くに位置する。キャリブレーションパターン460は、図17Aのキャリブレーション画像でのその外観と比較して、図17Cのキャリブレーション画像ではより小さく現れる。図17Cにおけるキャリブレーション画像のより小さい外観によって、[un vn]T及び[q’n r’n]Tを互いにより近づいて見せることができ、したがって、ピクセル距離d_ピクセルnを減らすことができる。場合により、ピクセル距離の減少によって、変換関数の推定値の誤差を、過少に見積もらせるか、又は重み付けを少なくする場合がある。
上述したように、再構成誤差はまた、キャリブレーションパターン(例えば、460)と、第一のカメラ(例えば、470)及び/又は第二のカメラ(例えば、480)との間の距離に依存する場合がある。例えば、図17Dは、図17Bのシナリオと比較して、より遠くにあるカメラからの距離で取り込まれている、キャリブレーションパターン460を示す。この例では、キャリブレーションパターン460が、第一のカメラ470及び/又は第二のカメラ480からより遠くへ移動すると、変換関数の推定値によって、更なる複数の3D座標[a’1 b’1 c’1]T Camera1… [a’25 b’25 c’25]T Camera1が、第一の複数の3D座標[X1 Y1 Z1]T Camera1… [X25 Y25 Z25]T Camera1からのより大きなオフセットを有するようになる場合がある。より大きなオフセットによって、距離d_physicalが増大する場合があり、それによって、変換関数の推定値の誤差を過大に見積もらせるか、又は重み付けを大きくする場合がある。
一実施形態では、ステップ1413は、再構成誤差角度である誤差パラメーター値を決定することを含むことができ、再構成誤差角度は、カメラ(例えば、470)と、キャリブレーションパターン(例えば、460)又はカメラによって取り込まれている他の物体との間の距離に全く依存しないか、又は距離への依存度がより少ない場合がある。より具体的には、こうした実施形態における誤差パラメーター値は、第一のカメラ(例えば、470)と関連付けられる位置から第一の複数の3D座標へ延びる仮想線のそれぞれの対と、更なる複数の3D座標との間に形成される、それぞれの角度を表す値に基づくことができる。仮想線の対の各々は、第一の複数の3D座標のうちの一つへ延びる、第一の仮想線を含み、複数の変換された座標、又はより具体的には、更なる複数の3D座標のうちの対応する一つへ延びる、第二の仮想線を含むことができる。例えば、図18A及び18Bは、仮想線1801A、1801Bの第一の対の間に形成される、第一の角度1811を示す。より具体的には、仮想線の第一の対は、第一のカメラ470から第一の複数の3D座標のうちの3D座標[X1 Y1 Z1]T Camera1へ延びる、第一の仮想線1801Aを含み、第一のカメラ470から更なる複数の3D座標のうちの対応する3D座標[a’1 b’1 c’1]Tへ延びる、第二の仮想線を含むことができる。場合により、仮想線の第一の対は、第一のカメラ(例えば、470)の焦点から延びることができる。
上述したように、再構成誤差角度は、キャリブレーションパターン460と、第一のカメラ470及び/又は第二のカメラ480との間の距離への依存度がより少ない場合がある。例えば、図18Cは、キャリブレーションパターン460を、図18Bに示すシナリオと比較して、第一のカメラ470のより近くへ移動する状況を示す。この例では、変換関数の推定値によって、より小さいオフセットを有するように、変換された座標[a’1 b’1 c’1]T Camera1を、対応する座標[X1 Y1 Z1]T Camera1へより近づけることができる。しかしながら、再構成誤差角度1811は、図18B及び18Cのシナリオ間の距離の変化にもかかわらず、同じままの値を有することができる。
再構成誤差角度の別の例として、図18Dは、仮想線1802A、1802Bの第二の対の間に形成される、第二の角度1812を示す。仮想線1802Aは、第一のカメラ470から、第一の複数の3D座標のうちの別の3D座標[X2 Y2 Z2]T Camera1へ延びることができる。仮想線1802Bは、第一のカメラ470から、複数の変換された座標のうちの別の3D座標[a’2 b’2 c’2]Tへ延びることができる。場合により、再構成誤差角度は、第一の複数の3D座標と複数の変換された座標との間で、仮想線のそれぞれの対によって形成される、それぞれの角度(例えば、1811、1812等)の平均又は他の統計尺度である、角度値とすることができる。
図14に戻ると、方法1400は、一実施形態において、計算システム110によって、誤差パラメーター値に基づいて変換関数の推定値を更新して、変換関数の更新された推定値を生成する、ステップ1415を含むことができる。例えば、変換関数が、第一のカメラ(例えば、470)と第二のカメラ(例えば、480)との間の相対位置及び向きを記述する行列である場合、ステップ1415で、投影誤差、再構成誤差、再構成誤差角度及び/又は他の何らかの誤差パラメーター値を低減するために、上述した最適化アルゴリズムのうちの一つを使用して、行列のパラメーター値を調整することができる。
一実施形態では、方法1400は、計算システム110によって、変換関数の更新された推定値を含むか、またはそれに基づくステレオキャリブレーション情報を決定する、ステップ1417を含むことができる。例えば、ステレオキャリブレーション情報は、変換関数の更新された推定値と等しくすることができる。
一実施形態では、倉庫の中にある包装品等、キャリブレーションパターン(例えば、460)以外の物体が、第一のカメラ視野(例えば、410)内及び第二のカメラ視野(例えば、420)内にあるとき、計算システム110は、第一のカメラによって生成される第一の後続する画像と、第二のカメラによって生成される第二の後続する画像とを受け取るように、ステップ1417で構成することができる。方法1400は更に、計算システム110を、第一の後続する画像、第二の後続する画像及びステレオキャリブレーション情報に基づいて、物体についての物体構造情報を決定するように構成することができる、ステップ1419を含むことができる。
一実施形態では、方法1400の一つ以上のステップを省略することができる。例えば、ステップ1417及び1419は省略することができる。一実施形態では、方法1400からの一つ以上のステップを、方法500の一つ以上のステップと組み合わせることができる。例えば、場合により、ステップ501〜513は、カメラ(例えば、470)と関連付けられる固有カメラキャリブレーション情報を決定するように実施することができ、固有カメラキャリブレーションを使用して、ステップ1405で変換関数の推定値を決定し、及び/又はステップ1411で第二の複数の座標を第二の複数の変換された座標に変換することができる。
様々な実施形態の簡潔な説明
実施形態A1は、計算システム、又は計算システムによって実施される方法を含む。この実施形態で計算システムは、カメラ視野を有するカメラと通信するように構成される通信インターフェースを備えると共に、制御回路を備える。制御回路によって、方法を実行することができる(例えば、非一時的コンピューター可読媒体に記憶された命令を実行するとき。この実施形態では、制御回路は、カメラが、カメラ視野内にキャリブレーションパターンに対するキャリブレーション画像を生成したとき、かつキャリブレーションパターンが、パターン座標系の中にそれぞれの定義されたパターン要素座標を有する複数のパターン要素を含むとき、キャリブレーション画像を受け取ることであって、キャリブレーション画像は、キャリブレーションパターンを表す画像であることと、複数のパターン要素がキャリブレーション画像の中に現れるそれぞれの位置を表すための、複数の画像座標を決定することと、複数の画像座標及び定義されたパターン要素座標に基づいて、カメラと関連付けられるレンズ歪みを記述する、レンズ歪みパラメーターの集合のうちの第一のレンズ歪みパラメーターに対する推定値を決定することであって、第一のレンズ歪みパラメーターに対する推定値は、レンズ歪みパラメーターの集合のうちの第二のレンズ歪みパラメーターをゼロと推定すると同時に決定されるか、又は第二のレンズ歪みパラメーターを推定することなく決定されることと、第一のレンズ歪みパラメーターの推定値を決定した後に、第一のレンズ歪みパラメーターに対する推定値に基づいて、第二のレンズ歪みパラメーターに対する推定値を決定することと、レンズ歪みパラメーターの集合に対するそれぞれの推定値を含むカメラキャリブレーション情報を決定することであって、レンズ歪みパラメーターの集合に対するそれぞれの推定値は、第一のレンズ歪みパラメーターに対する推定値、及び第二のレンズ歪みパラメーターに対する推定値を含むか、又はそれらに基づくことと、によってカメラキャリブレーションを実施するように構成される。この実施形態では、制御回路は、通信インターフェースがカメラ及びロボットと通信するときに、カメラキャリブレーションが行われた後、カメラによって生成された後続する画像を受け取ることと、ロボット移動を制御するための移動コマンドを生成することと、をさらに行うように構成され、移動コマンドは、後続する画像に基づき、かつカメラキャリブレーション情報に基づく。
実施形態A2は、実施形態A1の計算システムを含み、制御回路は、レンズ歪みパラメーターの集合の他の全てのレンズ歪みパラメーターをゼロと推定すると同時に、第一のレンズ歪みパラメーターに対する推定値を決定するように構成されるか、又はレンズ歪みパラメーターの集合のうちの他の任意のレンズ歪みパラメーターを推定することなく、第一のレンズ歪みパラメーターに対する推定値を決定するように構成される。
実施形態A3は、実施形態A1又はA2の計算システムを含み、第一のレンズ歪みパラメーターは、カメラと関連付けられる第一のタイプのレンズ歪みを記述し、第二のレンズ歪みパラメーターは、カメラと関連付けられる第二のタイプのレンズ歪みを記述する。
実施形態A4は、実施形態A3の計算システムを含み、第一のタイプのレンズ歪みは、放射状のレンズ歪みであり、第二のタイプのレンズ歪みは、接線方向のレンズ歪みである。
実施形態A5は、実施形態A1又はA2の計算システムを含み、第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーターは、カメラと関連付けられる同じタイプのレンズ歪みを記述する。
実施形態A6は、実施形態A5の計算システムを含む。この実施形態では、レンズ歪みパラメーターの集合は、カメラと関連付けられる放射状のレンズ歪みのモデルの一部である、複数のそれぞれの放射状多項式成分を記述する、複数のレンズ歪みパラメーターを含み、第一のレンズ歪みパラメーターは、複数のレンズ歪みパラメーターのうちの一つであると共に、複数のそれぞれの放射状多項式成分の中で放射状の最低次多項式成分を記述する。
実施形態A7は、実施形態A6の計算システムを含み、レンズ歪みパラメーターの集合は、第三のレンズ歪みパラメーターを含み、第三のレンズ歪みパラメーターは、複数のそれぞれの放射状多項式成分の中で放射状の最高次多項式成分を記述する。この実施形態では、第二のレンズ歪みパラメーターに対する推定値は、第一のレンズ歪みパラメーターに対する推定値に基づいて決定されると共に、第三のレンズ歪みパラメーターをゼロと推定すると同時に、又は第三のレンズ歪みパラメーターを推定することなく決定される。
実施形態A8は、実施形態A7の計算システムを含み、第一のレンズ歪みパラメーターに対する推定値は、第一のレンズ歪みパラメーターの第一の推定値であると共に、第一のカメラキャリブレーション段階中に決定され、第二のレンズ歪みパラメーターに対する推定値は、第一のカメラキャリブレーション段階に続く、後続するカメラキャリブレーション段階中に決定される。この実施形態では、レンズ歪みパラメーターの集合は、第三のレンズ歪みパラメーターと、集合のうちの他のレンズ歪みパラメーターを有する部分集合とを含む。更に、制御回路は、後続するカメラキャリブレーション段階中に、第三のレンズ歪みパラメーターをゼロと推定すると同時に、又は第三のレンズ歪みパラメーターを推定することなく、レンズ歪みパラメーターの部分集合のうちのレンズ歪みパラメーターを推定するように構成される。加えて、部分集合のうちのレンズ歪みパラメーターの推定は、第二のレンズ歪みパラメーターの推定値を決定することと、第一のレンズ歪みパラメーターの第二の推定値を決定することとを含む。
実施形態A9は、実施形態A1〜A8のうちの任意の一つの計算システムを含み、カメラキャリブレーション情報は、カメラと関連付けられるカメラ画像の射影を記述する射影パラメーターの集合を記述し、制御回路は、射影パラメーターの集合に対するそれぞれの推定値を決定し、第一のレンズ歪みパラメーターに対する推定値及び第二のレンズ歪みパラメーターに対する推定値を決定した後、射影パラメーターの集合に対するそれぞれの推定値に基づいて、第一のレンズ歪みパラメーターに対する更新された推定値及び第二のレンズ歪みパラメーターに対する更新された推定値を決定するように構成される。この実施形態では、第一のレンズ歪みパラメーターに対する更新された推定値及び第二のレンズ歪みパラメーターに対する更新された推定値を決定し、射影パラメーターの集合が、射影パラメーターの集合のそれぞれの推定値に値を固定される。
実施形態A10は、実施形態A9の計算システムを含み、第一のレンズ歪みパラメーターの更新された推定値、及び第二のレンズ歪みパラメーターの更新された推定値は、制御回路が、以下、(a)湾曲減少段階中に、第一のレンズ歪みパラメーターの推定値に基づいて、かつ第二のレンズ歪みパラメーターの推定値に基づいて、第一のレンズ歪みパラメーターに対する初期推定値、及び第二のレンズ歪みパラメーターに対する初期推定値を決定することと、(b)第一のレンズ歪みパラメーターの初期推定値、第二のレンズ歪みパラメーターの初期推定値、及びキャリブレーション画像に基づいて、カメラと関連付けられるレンズ歪みを補償する、キャリブレーション画像の変更されたバージョンを生成することと、(c)キャリブレーション画像の変更されたバージョンの中で、湾曲の量を決定することと、(d)湾曲の量を減少させる、第一のレンズ歪みパラメーターに対する調整された推定値及び第二のレンズ歪みパラメーターに対する調整された推定値を生成するために、キャリブレーション画像の変更されたバージョンの中の湾曲の量に基づいて、第一のレンズ歪みパラメーターの初期推定値及び第二のレンズ歪みパラメーターの初期推定値を調整することであって、第一のレンズ歪みパラメーターに対する調整された推定値は、第一のレンズ歪みパラメーターの更新された推定値であり、第二のレンズ歪みパラメーターに対する調整された推定値は、第二のレンズ歪みパラメーターの更新された推定値であることと、を実施するように構成される、湾曲減少段階によって決定される。この実施形態では、制御回路は、第一のレンズ歪みパラメーターの更新された推定値、及び第二のレンズ歪みパラメーターの更新された推定値に基づいて、カメラキャリブレーション情報を決定するように構成される。
実施形態A11は、実施形態A9又はA10の計算システムを含み、レンズ歪みパラメーターの集合は、第三のレンズ歪みパラメーターを含み、第三のレンズ歪みパラメーターの推定値は、第一のレンズ歪みパラメーターに対する更新された推定値、及び第二のレンズ歪みパラメーターに対する更新された推定値と共に、湾曲減少段階で決定される。この実施形態では、制御回路は、第一のレンズ歪みパラメーターの更新された推定値、及び第二のレンズ歪みパラメーターの更新された推定値が決定された後、値として第三のレンズ歪みパラメーターの推定値を当該推定値に固定すると同時に、第一のレンズ歪みパラメーターの更新された推定値、第二のレンズ歪みパラメーターの更新された推定値、及び第三のレンズ歪みパラメーターの推定値に基づいて、射影パラメーターの集合に対するそれぞれの更新された推定値を決定するように構成される。
実施形態A12は、実施形態A1〜A11のうちの任意の一つの計算システムを含み、レンズ歪みパラメーターの集合は、第一のレンズ歪みパラメーター及び第二のレンズ歪みパラメーター以外の、更なるレンズ歪みパラメーターを含む。この実施形態では、制御回路は、(a)第一のレンズ歪みパラメーターの推定値に基づいて、かつ第二のレンズ歪みパラメーターの推定値に基づいて、第一のレンズ歪みパラメーターに対する更新された推定値を決定し、(b)更なるレンズ歪みパラメーターに対する推定値を決定し、第一のレンズ歪みパラメーターを、値として第一のレンズ歪みパラメーターの更新された推定値に固定し、第一のレンズ歪みパラメーターに対する更新された推定値に基づいて、更なるレンズ歪みパラメーターに対する推定値を決定するように構成される。
実施形態A13は、実施形態A1〜A12のうちの任意の一つの計算システムを含み、通信インターフェースが通信するように構成されるカメラは、第一のカメラであり、キャリブレーション画像は、第一のキャリブレーション画像であり、カメラ視野は、第一のカメラ視野であり、通信インターフェースは更に、第二のカメラ視野を有する第二のカメラと通信するように構成される。この実施形態では、制御回路は、キャリブレーションパターンが、第一のカメラ視野内及び第二のカメラ視野内にあるか、又は第一のカメラ視野内及び第二のカメラ視野内にあったときに、第二のキャリブレーション画像を受け取ることであって、第二のキャリブレーション画像は、キャリブレーションパターンを表す第二の画像であり、第二のカメラによって生成されることと、第一のカメラと第二のカメラとの空間関係を記述するための変換関数の推定値を決定することと、第一のキャリブレーション画像に基づいて、第一のカメラに対する複数のパターン要素のそれぞれの位置を記述する第一の複数の座標を決定することと、第二のキャリブレーション画像に基づいて、第二のカメラに対する複数のパターン要素のそれぞれの位置を記述する第二の複数の座標を決定することと、変換関数の推定値に基づいて、第二の複数の座標を、第一のカメラに対する複数の変換された座標に変換することと、第一の複数の座標と複数の変換された座標とのそれぞれの差異を記述する誤差パラメーター値を決定することと、誤差パラメーター値に基づいて、変換関数の推定値を更新して、変換関数の更新された推定値を生成することと、を行うように構成される。
実施形態A14は、実施形態A13の計算システムを含む。この実施形態では、第一の複数の座標は、複数のパターン要素が第一のキャリブレーション画像の中に現れるそれぞれの位置を表す、複数のそれぞれの画像座標である。この実施形態では、複数の変換された座標は、複数のパターン要素を表す、更なる複数のそれぞれの画像座標であり、制御回路は、第一のカメラに対するキャリブレーションを記述するためのカメラキャリブレーション情報に基づいて、更なる複数のそれぞれの画像座標を決定するように構成される。
実施形態A15は、実施形態A13の計算システムを含む。この実施形態では、第一の複数の座標は、第一のカメラに対する座標系である第一のカメラ座標系における、パターン要素に対する複数の3D座標である。この実施形態では、複数の変換された座標は、第一のカメラ座標系における、パターン要素に対する更なる複数の3D座標である。
実施形態A16は、実施形態A15の計算システムを含む。この実施形態では、誤差パラメーター値は、第一の複数の3D座標と更なる複数の3D座標との間のそれぞれの距離を表す値に基づく。
実施形態A17は、実施形態A15の計算システムを含む。この実施形態では、誤差パラメーター値は、第一のカメラと関連付けられる位置から延びる仮想線のそれぞれの対の間に形成される、それぞれの角度を表す値に基づいており、仮想線のそれぞれの対の各々は、第一の複数の3D座標のそれぞれの3D座標へ延びるそれぞれの第一の仮想線と、更なる複数の3D座標のそれぞれの3D座標へ延びるそれぞれの第二の仮想線と、を有する。
実施形態B1は、計算システム、又は計算システムによって実施される方法に関する。方法は、例えば、計算システムが、非一時的コンピューター可読媒体上に記憶される命令を実行するときに実施することができる。この実施形態では、計算システムは、第一のカメラ視野を有する第一のカメラ、及び第二のカメラ視野を有する第二のカメラと通信するように構成される通信インターフェースを備え、制御回路を備える。制御回路は、複数のパターン要素を有するキャリブレーションパターンが、第一のカメラ視野内及び第二のカメラ視野内にあるか、又は第一のカメラ視野内及び第二のカメラ視野内にあったとき、かつ第一のカメラが、キャリブレーションパターンに対する第一のキャリブレーション画像を生成し、第二のカメラが、キャリブレーションパターンに対する第二のキャリブレーション画像を生成したとき、第一のキャリブレーション画像を受け取ることであって、第一のキャリブレーション画像が、キャリブレーションパターンを表す第一の画像であることと、第二のキャリブレーション画像を受け取ることであって、第二のキャリブレーション画像は、キャリブレーションパターンを表す第二の画像であることと、第一のカメラと第2のカメラとの空間関係を記述するための変換関数の推定値を決定することと、第一のキャリブレーション画像に基づいて、第一のカメラに対する、複数のパターン要素のそれぞれの位置を記述する第一の複数の座標を決定することと、第二のキャリブレーション画像に基づいて、第二のカメラに対する、複数のパターン要素のそれぞれの位置を記述する第二の複数の座標を決定することと、変換関数の推定値に基づいて、第二の複数の座標を、第一のカメラに対する複数の変換された座標に変換することと、第一の複数の座標と複数の変換された座標とのそれぞれの差異を記述する誤差パラメーター値を決定することと、誤差パラメーター値に基づいて、変換関数の推定値を更新して、変換関数の更新された推定値を生成することと、変換関数の更新された推定値を含むか、またはそれに基づくステレオキャリブレーション情報を決定することと、を行うように構成される。この実施形態では、制御回路は更に、キャリブレーションパターン以外の物体が、第一のカメラ視野内及び第二のカメラ視野内にあるとき、第一のカメラによって生成される第一の後続する画像と、第二のカメラによって生成される第二の後続する画像とを受け取り、第一の後続する画像、第二の後続する画像及びステレオキャリブレーション情報に基づいて、物体を表す物体構造情報を決定するように構成される。
実施形態B2は、実施形態B1の計算システムを含む。この実施形態では、第一の複数の座標は、複数のパターン要素が第一のキャリブレーション画像の中に現れるそれぞれの位置を表すための、第一の複数のそれぞれの画像座標である。この実施形態では、通信インターフェースが第一のカメラと通信するか、又は通信していたとき、制御回路は、第一のカメラ視野内の位置が第一のカメラの画像平面へどのように投影されるかを記述する、固有カメラキャリブレーション情報を決定するように構成される。更に、この実施形態では、複数の変換された座標は、複数のパターン要素を表す、更なる複数のそれぞれの画像座標であり、制御回路は、固有カメラキャリブレーション情報に基づいて、更なる複数のそれぞれの画像座標を決定するように構成される。
実施形態B3は、実施形態B1の計算システムを含む。この実施形態では、第一の複数の座標は、第一のカメラに対する座標系である、第一のカメラ座標系における、パターン要素を表す複数の3D座標である。この実施形態では、複数の変換された座標は、第一のカメラ座標系における、パターン要素を表す更なる複数の3D座標である。
実施形態B4は、実施形態B3の計算システムを含む。この実施形態では、誤差パラメーター値は、第一の複数の3D座標と更なる複数の3D座標との間のそれぞれの距離を表す値に基づく。
実施形態B5は、実施形態B3の計算システムを含む。この実施形態では、誤差パラメーター値は、第一のカメラと関連付けられる位置から延びる、仮想線のそれぞれの対の間に形成される、それぞれの角度を表す値に基づく角度値であり、仮想線のそれぞれの対の各々は、1)第一の複数の3D座標のそれぞれの3D座標へ延びる、それぞれの第一の仮想線、及び2)更なる複数の3D座標のそれぞれの3D座標へ延びる、それぞれの第二の仮想線を有する。
実施形態B6は、実施形態B5の計算システムを含む。この実施形態では、仮想線のそれぞれの対が延び始める位置は、第一のカメラの焦点である。
実施形態B7は、実施形態B1〜B6のうちの任意の一つの計算システムを含む。この実施形態では、変換関数は、第一のカメラと第二のカメラとの間の相対位置及び相対的な向きを記述する変換行列であり、変換関数の推定値の更新は、変換行列を更新して誤差パラメーター値を減少させることを含む。
実施形態B8は、実施形態B1〜B7のうちの任意の一つの計算システムを含む。この実施形態では、キャリブレーションパターンの複数のパターン要素が、それぞれの定義されたパターン要素座標を有するとき、制御回路は、第一の複数の座標及び定義されたパターン要素座標に基づいて、第一のカメラと関連付けられるレンズ歪みを記述する、レンズ歪みパラメーターの集合のうちの第一のレンズ歪みパラメーターに対する推定値を決定し、第一のレンズ歪みパラメーターに対する推定値は、レンズ歪みパラメーターの集合のうちの第二のレンズ歪みパラメーターをゼロと推定すると同時に決定されるか、又は第二のレンズ歪みパラメーターを推定することなく決定され、第一のレンズ歪みパラメーターの推定値を決定した後に、第一のレンズ歪みパラメーターに対する推定値に基づいて、第二のレンズ歪みパラメーターに対する推定値を決定し、第一のカメラに対するキャリブレーションを記述し、レンズ歪みパラメーターの集合に対するそれぞれの推定値を含む、カメラキャリブレーション情報を決定するように構成される。この実施形態では、レンズ歪みパラメーターの集合に対するそれぞれの推定値は、第一のレンズ歪みパラメーターに対する推定値と、第二のレンズ歪みパラメーター対する推定値とを含むか、又はそれらに基づく。
種々の実施形態を上述してきたが、これらの実施形態は、限定としてではなく本発明の単なる説明及び例として提示されていることを理解すべきである。種々の変更は本発明の趣旨及び範囲から逸脱することなく、本発明内で行うことができることは当業者には明らかであろう。したがって、本発明の範囲(breadth and scope)は、上述の例示的な実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物によってのみ規定されるべきである。本明細書において論考された各実施形態、及び本明細書において引用された各引用文献の各特徴は、他の任意の実施形態の特徴と組み合わせて用いることができることも理解されるであろう。本明細書において論考された全ての特許及び刊行物は、引用することによりその全体が本明細書の一部をなす。