(57)【要約】【課題】ロボット制御システム及び自動カメラキャリブレーション方法を提示する。【解決手段】ロボット制御システムは、カメラ視野内に収まる仮想立方体の全ての角位置を求め、仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めるように構成された制御回路を備える。制御回路は、複数の位置にキャリブレーションパターンを移動させるようにロボットアームを制御し、複数の位置に対応する複数のキャリブレーション画像を受け取り、複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求め、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めるように更に構成される。制御回路は、変換関数の推定値に基づきロボットアームの配置を制御するように更に構成される。【選択図】図４
2020144829.tif 000002
【特許請求の範囲】
【請求項１】
ロボットと通信し、かつカメラ視野を有するカメラと通信するように構成された通信インターフェースであって、前記ロボットは、ベースと、キャリブレーションパターンが配置されているロボットアームとを有する、通信インターフェースと、
制御回路であって、
前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記通信インターフェースを介して前記ロボットに移動コマンドを出力することにより、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御することと、
前記通信インターフェースを介して前記カメラから複数のキャリブレーション画像を受け取ることであって、該複数のキャリブレーション画像は、前記カメラによって取り込まれ、前記複数の位置における前記キャリブレーションパターンのそれぞれの画像であることと、
前記複数のキャリブレーション画像に基づき、固有カメラパラメーターのそれぞれの推定値を求めることと、
前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記ロボットの前記ベースに対して固定である位置に関して定義された座標系であることと、
により、カメラキャリブレーションを実施するように構成された制御回路と、
を備え、
前記制御回路は、前記カメラキャリブレーションが実施された後、前記通信インターフェースを介して前記カメラから後続する画像を受け取り、前記後続する画像に基づきかつ前記変換関数の前記推定値に基づく後続する移動コマンドを、前記通信インターフェースを介して前記ロボットに出力することにより、前記ロボットアームの配置を制御するように更に構成されている、ロボット制御システム。
【請求項２】
前記複数の位置は、前記仮想立方体の上に又は該仮想立方体を通して一様に分散されている、請求項１に記載のロボット制御システム。
【請求項３】
前記複数の位置は、該複数の位置のうちの隣接する位置の間に、前記仮想立方体の縁に沿って測定される一様の間隔を有する、請求項２に記載のロボット制御システム。
【請求項４】
前記制御回路は、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断に応じて、前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御するように構成されている、請求項１に記載のロボット制御システム。
【請求項５】
前記制御回路は、（ａ）前記ロボットアームが、前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断、及び（ｂ）前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるという判断に応じてのみ、前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御するように構成されている、請求項４に記載のロボット制御システム。
【請求項６】
前記仮想立方体が、前記制御回路によって求められる第２の仮想立方体であり、前記制御回路は、
前記カメラ視野内に収まる第１の仮想立方体を求め、
前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないと判断するか、又は、前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないと判断する、
ように更に構成され、
前記制御回路は、（ａ）前記ロボットアームが前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないという判断、又は（ｂ）前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないという判断のうちの少なくとも一方に応じて、前記第２の仮想立方体の全ての角位置を求めるように構成されている、請求項５に記載のロボット制御システム。
【請求項７】
前記第１の仮想立方体は、前記カメラ視野内に収まることができる最大サイズの仮想立方体であり、前記第２の仮想立方体は、前記第１の仮想立方体より小さい、請求項６に記載のロボット制御システム。
【請求項８】
前記複数の位置は厳密にｎ３個の位置を含み、ｎは２以上の整数である、請求項１に記載のロボット制御システム。
【請求項９】
前記制御回路は、前記移動コマンドを介して、前記仮想立方体の上に又は該仮想立方体を通して一様に分散される前記複数の位置に対して前記カメラに対する異なるそれぞれの角度まで前記キャリブレーションパターンを傾けるように、前記ロボットアームを制御するように構成され、それにより、前記複数のそれぞれのキャリブレーション画像は、前記カメラに対する異なるそれぞれの角度における前記キャリブレーションパターンを取り込む、請求項１に記載のロボット制御システム。
【請求項１０】
前記キャリブレーションパターンは複数のパターン要素を含み、前記制御回路は、
前記複数のキャリブレーション画像が受け取られる前に前記カメラから第１のキャリブレーション画像を受け取り、該第１のキャリブレーション画像は、前記キャリブレーションパターンの画像であり、前記複数のそれぞれのキャリブレーション画像が取り込まれる前に前記カメラによって取り込まれ、
前記第１のキャリブレーション画像における前記パターン要素のうちの少なくとも１つの強度のレベル及びコントラストのレベルを求め、
前記第１のキャリブレーション画像における前記パターン要素のうちの少なくとも１つの前記強度のレベル及び前記コントラストのレベルのうちの少なくとも一方に基づき、前記カメラの露出パラメーター及び焦点パラメーターのそれぞれの値を求める、
ように構成され、
前記複数のそれぞれのキャリブレーション画像は、前記露出パラメーター及び前記焦点パラメーターの前記それぞれの値を備えた前記カメラによって取り込まれる、請求項１に記載のロボット制御システム。
【請求項１１】
前記制御回路は、前記仮想立方体を複数の非オーバーラップ領域に分割することにより、かつ、前記複数の位置のそれぞれの位置を前記複数の非オーバーラップ領域の各領域となるように割り当てることにより、前記複数の位置を求めるように構成されている、請求項１に記載のロボット制御システム。
【請求項１２】
前記制御回路は、一連の反復にわたり前記複数の位置を求めるように構成され、該複数の位置のうちの第１の位置は、前記仮想立方体内の任意の位置として求められ、かつ、前記一連の反復のうちの第１の反復の間に求められ、前記仮想立方体は、前記第１の反復を実施するために使用される第１の領域を形成し、
残りの反復に対するそれぞれの位置は、該残りの反復の各々に対し、（ａ）先行する反復を実施するために使用された領域を、互いにオーバーラップしない第１の半分領域及び第２の半分領域に分割することであって、該第１の半分領域及び該第２の半分領域の各々は、現反復を実施するために使用される領域であることと、（ｂ）前記第１の半分領域及び前記第２の半分領域のうちのいずれが先行する位置を含むかを判断することであって、該先行する位置は、前記先行する反復において求められた前記複数の位置のそれぞれの位置であることと、（ｃ）現位置として、前記第１の半分領域及び前記第２の半分領域のうちの他方における任意の位置を求めることであって、前記現位置は、前記現反復に対して求められる前記複数の位置のうちの１つの位置であることとを実施することにより、求められる、請求項１に記載のロボット制御システム。
【請求項１３】
ロボット制御を実施する方法であって、
ロボット制御システムにより、カメラ視野を示す情報を求めることであって、前記ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、前記カメラ視野は前記カメラの視野であることと、
前記ロボット制御システムにより、前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記ロボット制御システムにより、前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記ロボット制御システムにより、前記通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームに対し、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記ロボット制御システムにより、前記通信インターフェースから複数のキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記複数のキャリブレーション画像を受け取るように構成され、該複数のキャリブレーション画像は、前記カメラにより取り込まれ、前記複数の位置における前記キャリブレーションパターンの複数のそれぞれの画像であることと、
前記ロボット制御システムにより、前記複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、
前記ロボット制御システムにより、前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義される座標系であることと、
前記ロボット制御システムにより、前記通信インターフェースから後続する画像を受け取ることであって、該通信インターフェースは、前記固有カメラパラメーターの前記それぞれの推定値と前記変換関数の前記推定値とを求めた後、前記カメラから前記後続する画像を受け取るように構成されることと、
前記ロボット制御システムにより、前記後続する画像に基づき、かつ、前記変換関数の前記推定値に基づき、後続する移動コマンドを生成することと、
前記ロボット制御システムにより、前記通信インターフェースに前記後続する移動コマンドを出力することであって、該通信インターフェースは、前記ロボットアームの配置を制御するように前記ロボットに前記後続する移動コマンドを通信するように構成されることと、
を含む、方法。
【請求項１４】
前記複数の位置は、前記仮想立方体の上に又は該仮想立方体を通して一様に分散される、請求項１３に記載の方法。
【請求項１５】
前記複数の位置は厳密にｎ３個の位置を含み、ｎは２以上の整数である、請求項１４に記載の方法。
【請求項１６】
ロボット制御システムの制御回路によって実行されると、該制御回路に対して、
カメラ視野を示す情報を求めることであって、前記ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、前記カメラ視野は前記カメラの視野であることと、
前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームに対し、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記通信インターフェースから複数のキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記複数のキャリブレーション画像を受け取るように構成され、該複数のキャリブレーション画像は、前記カメラにより取り込まれ、前記複数の位置における前記キャリブレーションパターンの複数のそれぞれの画像であることと、
前記複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、
前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義される座標系であることと、
により、カメラキャリブレーションを実施させ、
前記通信インターフェースから後続する画像を受け取らせ、該通信インターフェースは、前記固有カメラパラメーターの前記それぞれの推定値と前記変換関数の前記推定値とを求めた後に前記カメラから前記後続する画像を受け取るように構成され、
前記後続する画像に基づきかつ前記変換関数の前記推定値に基づく後続する移動コマンドを、前記通信インターフェースを介して前記ロボットに出力することにより、前記ロボットアームの配置を制御させる、
命令が記憶されている非一時的コンピューター可読媒体。
【請求項１７】
前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるか否かを判断させ、前記複数の位置まで前記キャリブレーションパターンを移動させる前記移動コマンドは、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断に応じて出力される、請求項１６に記載の非一時的コンピューター可読媒体。
【請求項１８】
前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるか否かを判断させ、前記複数の位置まで前記キャリブレーションパターンを移動させる前記移動コマンドは、（ａ）前記ロボットアームが、前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断、及び（ｂ）前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるという判断に応じて出力される、請求項１７に記載の非一時的コンピューター可読媒体。
【請求項１９】
前記仮想立方体は前記制御回路によって求められる第２の仮想立方体であり、前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、
前記カメラ視野内に収まる第１の仮想立方体を求めさせ、
前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないと判断させるか、又は、前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないと判断させ、
前記第２の仮想立方体の全ての角位置を求めることは、（ａ）前記ロボットアームが前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないという判断、又は（ｂ）前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないという判断のうちの少なくとも一方にのみ応じる、請求項１８に記載の非一時的コンピューター可読媒体。
【請求項２０】
前記第１の仮想立方体は、前記カメラ視野内に収まることができる最大サイズの仮想立方体であり、前記第２の仮想立方体は、前記第１の仮想立方体より小さい、請求項１９に記載の非一時的コンピューター可読媒体。
【請求項２１】
ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボット、及び、
カメラ視野を有するカメラ、
と通信するように構成された通信インターフェースであって、
前記キャリブレーションパターンは、パターン座標系においてそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、前記パターン座標系は、前記キャリブレーションパターンの位置及び向きに関して定義された座標系である、通信インターフェースと、
制御回路であって、
前記通信インターフェースを介して前記ロボットに移動コマンドを出力することにより、前記カメラ視野内の少なくとも１つの位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御することと、
前記通信インターフェースを介して前記カメラからキャリブレーション画像を受け取ることであって、該キャリブレーション画像は、前記カメラによって取り込まれ、前記少なくとも１つの位置における前記キャリブレーションパターンの画像であることと、
前記複数のパターン要素が前記キャリブレーション画像に現れるそれぞれの位置を示す複数の画像パターン要素位置を求めることと、
前記複数の画像パターン要素位置に基づき、かつ、定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、
前記第１の固有カメラパラメーターの前記第１の推定値が求められた後、該第１の固有カメラパラメーターの該第１の推定値に基づき、かつ、前記複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、
前記第２の固有カメラパラメーターの前記第１の推定値に基づき、かつ、前記複数の画像パターン要素位置及び前記定義されたパターン要素位置に基づき、前記第１の固有カメラパラメーターの第２の推定値及び前記第２の固有カメラパラメーターの第２の推定値を求めることと、
前記第１の固有カメラパラメーターの前記第２の推定値及び前記第２の固有カメラパラメーターの前記第２の推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記ロボットの前記ベースに対して固定である位置に関して定義された座標系であることと、
により、カメラキャリブレーションを実施するように構成された制御回路と、
を備え、
前記制御回路は、前記カメラキャリブレーションが実施された後、前記カメラから後続する画像を受け取り、該後続する画像に基づきかつ前記変換関数の推定値に基づく後続する移動コマンドを前記ロボットに出力することにより、前記ロボットアームの配置を制御するように更に構成されている、ロボット制御システム。
【請求項２２】
前記変換関数は第２の変換関数であり、前記制御回路は、前記第１の固有カメラパラメーターの前記第２の推定値及び前記第２の固有カメラパラメーターの前記第２の推定値に基づき、前記パターン座標系と前記カメラ座標系との関係を記述する第１の変換関数の推定値を更に求めることにより、前記カメラキャリブレーションを実施するように構成され、前記第２の変換関数は前記第１の変換関数に基づいて求められる、請求項２１に記載のロボット制御システム。
【請求項２３】
前記第１の固有カメラパラメーターは、前記通信インターフェースが通信するように構成されている前記カメラの画像センサー上の像射影を記述する射影行列であり、前記第２の固有カメラパラメーターは、前記通信インターフェースが通信するように構成されている前記カメラのレンズによってもたらされるレンズ歪みを記述する歪みパラメーターである、請求項２１に記載のロボット制御システム。
【請求項２４】
前記制御回路は、（ａ）前記第２の固有カメラパラメーターの初期推定値を求めることと、（ｂ）前記第２の固有カメラパラメーターの前記初期推定値、前記第１の固有カメラパラメーターの前記第１の推定値、及び前記キャリブレーション画像に基づき、前記レンズによってもたらされるレンズ歪みを補償する前記キャリブレーション画像の変更されたバージョンを生成することと、（ｃ）前記キャリブレーション画像の前記変更されたバージョンにおける湾曲の量を求めることと、（ｄ）前記キャリブレーション画像の前記変更されたバージョンにおける前記湾曲の量に基づき前記第２の固有カメラパラメーターの前記初期推定値を調整して、前記湾曲の量を低減させる前記第２の固有カメラパラメーターの調整された推定値を生成することであって、前記調整された推定値は前記第２の固有カメラパラメーターの前記第１の推定値であることとにより、前記第２の固有カメラパラメーターの前記第１の推定値を求めるように構成されている、請求項２３に記載のロボット制御システム。
【請求項２５】
前記キャリブレーションパターンにおける前記複数のパターン要素は複数のドットであり、
前記制御回路は、前記キャリブレーション画像の前記変更されたバージョンにおける前記複数のドットを通して複数の直線を当てはめることと、前記複数の直線のうちの各直線と該直線が当てはめられる前記複数のドットのそれぞれのドットとの間のそれぞれの距離に基づき、前記湾曲の量を求めることとにより、前記湾曲の量を求めるように構成されている、請求項２４に記載のロボット制御システム。
【請求項２６】
前記制御回路は、（ａ）前記第１の変換関数の前記推定値、前記第２の固有カメラパラメーターの前記第２の推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、（ｂ）前記シミュレートキャリブレーション画像と前記カメラによって取り込まれる前記キャリブレーション画像との差を求めることと、（ｃ）前記差に基づき前記第２の固有カメラパラメーターの前記第２の推定値及び前記第１の固有カメラパラメーターの前記第２の推定値を調整して、前記差を低減させる、前記第２の固有カメラパラメーターの調整された推定値及び前記第１の固有カメラパラメーターの調整された推定値を生成することであって、前記第２の固有カメラパラメーターの前記調整された推定値は該第２の固有カメラパラメーターの第３の推定値であり、前記第１の固有カメラパラメーターの前記調整された推定値は該第１の固有カメラパラメーターの第３の推定値であることとによって、前記第２の固有カメラパラメーターの第３の推定値及び前記第１の固有カメラパラメーターの第３の推定値を求めるように更に構成され、
前記第１の変換関数の前記推定値は、前記第２の固有カメラパラメーターの前記第３の推定値と前記第１の固有カメラパラメーターの前記第３の推定値とに基づいて求められる、請求項２２に記載のロボット制御システム。
【請求項２７】
前記制御回路は、さらに、
前記ワールド座標系とリンク座標系との関係を記述する第３の変換関数の推定値を求めることであって、前記リンク座標系は、前記キャリブレーションパターンが配置されている前記ロボットアームのリンクにおける位置に関して定義された座標系であることと、
前記パターン座標系と前記リンク座標系との関係を記述する第４の変換関数の推定値を求めることであって、前記第２の変換関数の前記推定値と前記第４の変換関数の前記推定値とは、ともに、前記第１の変換関数の推定値と前記第３の変換関数の推定値とに基づいて求められることと、
により、前記カメラキャリブレーションを実施するように構成されている、請求項２２に記載のロボット制御システム。
【請求項２８】
前記制御回路は、さらに、
前記第４の変換関数の前記推定値、前記第３の変換関数の前記推定値、前記第２の変換関数の前記推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、
前記第２の固有カメラパラメーターの前記第２の推定値に基づき、前記カメラのレンズによってもたらされるレンズ歪みを補償するように該カメラによって取り込まれる前記キャリブレーション画像の変更されたバージョンを求めることと、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの差を求めることと、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの前記差を低減させるように、少なくとも前記第４の変換関数の前記推定値及び前記第２の変換関数の前記推定値を調整することと、
により、前記カメラキャリブレーションを実施するように構成されている、請求項２７に記載のロボット制御システム。
【請求項２９】
前記通信インターフェースが通信するように構成されている前記カメラは第１のカメラであり、前記カメラ座標系は第１のカメラ座標系であり、
前記通信インターフェースは、第２のカメラと通信するように構成され、
前記制御回路は、前記第１のカメラ座標系と第２のカメラ座標系との関係を更に求めることにより前記カメラキャリブレーションを実施するように構成され、前記第２のカメラ座標系は、前記第２のカメラの位置及び向きに関して定義される、請求項２７に記載のロボット制御システム。
【請求項３０】
ロボット制御を実施する方法であって、
ロボット制御システムにより、該ロボット制御システムの通信インターフェースに出力する移動コマンドを生成することであって、該通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボットと通信するように構成され、カメラ視野を有するカメラと通信するように構成されることと、
前記ロボット制御システムにより、前記通信インターフェースに前記移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームが前記カメラ視野内の少なくとも１つの位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記ロボット制御システムにより、前記通信インターフェースからキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記キャリブレーション画像を受け取るように構成され、該キャリブレーション画像は、前記カメラ視野内の前記少なくとも１つの位置における前記キャリブレーションパターンの画像であり、該キャリブレーションパターンは、パターン座標系におけるそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、前記パターン座標系は、前記キャリブレーションパターンの位置及び向きに関して定義された座標系であることと、
前記ロボット制御システムにより、前記キャリブレーション画像から複数の画像パターン要素位置を求めることであって、該複数の画像パターン要素位置は、前記複数のパターン要素が前記キャリブレーション画像に現れるそれぞれの位置を示すことと、
前記ロボット制御システムにより、前記複数の画像パターン要素位置に基づき、かつ前記定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、
前記ロボット制御システムにより、前記第１の固有カメラパラメーターの前記第１の推定値が求められた後、前記第１の固有カメラパラメーターの前記第１の推定値に基づき、かつ前記複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、
前記ロボット制御システムにより、前記第２の固有カメラパラメーターの前記第１の推定値に基づき、かつ前記複数の画像パターン要素位置及び前記定義されたパターン要素位置に基づき、前記第１の固有カメラパラメーターの第２の推定値と前記第２の固有カメラパラメーターの第２の推定値とを求めることと、
前記ロボット制御システムにより、前記第１の固有カメラパラメーターの前記第２の推定値と前記第２の固有カメラパラメーターの前記第２の推定値とに基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義された座標系であることと、
前記ロボット制御システムにより、前記通信インターフェースから後続する画像を受け取ることであって、該通信インターフェースは、前記変換関数の前記推定値が求められた後に前記カメラから前記後続する画像を受け取るように構成されることと、
前記ロボット制御システムにより、前記後続する画像に基づき、かつ前記変換関数の前記推定値に基づき、後続する移動コマンドを生成することと、
前記ロボット制御システムにより、前記通信インターフェースに前記後続する移動コマンドを出力することであって、該通信インターフェースは、前記ロボットアームの配置を制御するように前記ロボットに前記後続する移動コマンドを出力するように構成されることと、
を含む、方法。
【請求項３１】
前記変換関数は第２の変換関数であり、前記方法は、前記第１の固有カメラパラメーターの前記第２の推定値と前記第２の固有カメラパラメーターの前記第２の推定値とに基づき、前記パターン座標系と前記カメラ座標系との関係を記述する第１の変換関数の推定値を求めることを更に含み、前記第２の変換関数は、前記第１の変換関数に基づいて求められる、請求項３０に記載の方法。
【請求項３２】
前記第２の固有カメラパラメーターの前記第１の推定値を求めることは、（ａ）前記第２の固有カメラパラメーターの初期推定値を求めることと、（ｂ）前記第２の固有カメラパラメーターの前記初期推定値、前記第１の固有カメラパラメーターの前記第１の推定値、及び前記キャリブレーション画像に基づき、レンズによってもたらされるレンズ歪みを補償する前記キャリブレーション画像の変更されたバージョンを生成することと、（ｃ）前記キャリブレーション画像の前記変更されたバージョンにおける湾曲の量を求めることと、（ｄ）前記キャリブレーション画像の前記変更されたバージョンにおける前記湾曲の量に基づき前記第２の固有カメラパラメーターの前記初期推定値を調整して、前記湾曲の量を低減させる前記第２の固有カメラパラメーターの調整された推定値を生成することであって、該調整された推定値は、前記第２の固有カメラパラメーターの前記第１の推定値であることとを含む、請求項３０に記載の方法。
【請求項３３】
（ａ）前記第１の変換関数の前記推定値、前記第２の固有カメラパラメーターの前記第２の推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、（ｂ）前記シミュレートキャリブレーション画像と前記キャリブレーション画像との差を求めることと、（ｃ）前記差に基づき前記第２の固有カメラパラメーターの前記第２の推定値と前記第１の固有カメラパラメーターの前記第２の推定値とを調整して、前記差を低減させる、前記第２の固有カメラパラメーターの調整された推定値及び前記第１の固有カメラパラメーターの調整された推定値を生成することであって、前記第２の固有カメラパラメーターの前記調整された推定値は、該第２の固有カメラパラメーターの第３の推定値であり、前記第１の固有カメラパラメーターの前記調整された推定値は、該第１の固有カメラパラメーターの第３の推定値であることとによって、前記第２の固有カメラパラメーターの第３の推定値と前記第１の固有カメラパラメーターの第３の推定値とを求めることを更に含み、
前記第１の変換関数の前記推定値は、前記第２の固有カメラパラメーターの前記第３の推定値と前記第１の固有カメラパラメーターの前記第３の推定値とに基づいて求められる、請求項３１に記載の方法。
【請求項３４】
前記ワールド座標系とリンク座標系との関係を記述する第３の変換関数の推定値を求めることであって、前記リンク座標系は、前記ロボットアームのリンクにおける位置に関して定義された座標系であり、前記キャリブレーションパターンは前記リンクに配置されることと、
前記パターン座標系と前記リンク座標系との関係を記述する第４の変換関数の推定値を求めることであって、前記第２の変換関数の前記推定値と前記第４の変換関数の前記推定値とは、ともに、前記第１の変換関数の前記推定値と前記第３の変換関数の前記推定値とに基づいて求められることと、
を更に含む、請求項３１に記載の方法。
【請求項３５】
前記第４の変換関数の前記推定値、前記第３の変換関数の前記推定値、前記第２の変換関数の前記推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、
前記第２の固有カメラパラメーターの前記第２の推定値に基づき、レンズ歪みを補償するように前記キャリブレーション画像の変更されたバージョンを求めることと、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの差を求めることと、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの前記差を低減させるように、少なくとも前記第４の変換関数の前記推定値及び前記第２の変換関数の前記推定値を調整することと、
を更に含む、請求項３４に記載の方法。
【請求項３６】
ロボット制御システムの制御回路によって実行されると、該制御回路に対して、
前記ロボット制御システムの通信インターフェースに出力する移動コマンドを生成することであって、該通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボットと通信するように構成され、カメラ視野を有するカメラと通信するように構成されることと、
前記通信インターフェースに前記移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームが前記カメラ視野内の少なくとも１つの位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記通信インターフェースからキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記キャリブレーション画像を受け取るように構成され、該キャリブレーション画像は、前記カメラ視野内の前記少なくとも１つの位置における前記キャリブレーションパターンの画像であり、該キャリブレーションパターンは、パターン座標系におけるそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、前記パターン座標系は、前記キャリブレーションパターンの位置及び向きに関して定義された座標系であることと、
前記キャリブレーション画像から複数の画像パターン要素位置を求めることであって、該複数の画像パターン要素位置は、前記複数のパターン要素が前記キャリブレーション画像に現れるそれぞれの位置を示すことと、
前記複数の画像パターン要素位置に基づき、かつ前記定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、
前記第１の固有カメラパラメーターの前記第１の推定値が求められた後、前記第１の固有カメラパラメーターの前記第１の推定値に基づき、かつ前記複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、
前記第２の固有カメラパラメーターの前記第１の推定値に基づき、かつ前記複数の画像パターン要素位置及び前記定義されたパターン要素位置に基づき、前記第１の固有カメラパラメーターの第２の推定値と前記第２の固有カメラパラメーターの第２の推定値とを求めることと、
前記第１の固有カメラパラメーターの前記第２の推定値と前記第２の固有カメラパラメーターの前記第２の推定値とに基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義された座標系であることと、
により、カメラキャリブレーションを実施させる命令が記憶されており、
前記命令は、前記制御回路によって実行されると、前記制御回路に対し更に、前記カメラキャリブレーションが実施された後、前記通信インターフェースから後続する画像を受け取らせ、該通信インターフェースは、前記カメラから前記後続する画像を受け取るように構成され、前記命令は、前記制御回路によって実行されると、前記制御回路に対しさらに、前記後続する画像に基づきかつ前記変換関数の前記推定値に基づく後続する移動コマンドを前記ロボットに出力することにより、前記通信インターフェースが通信するように構成される前記ロボットの前記ロボットアームの配置を制御させる、非一時的コンピューター可読媒体。
【請求項３７】
前記変換関数は第２の変換関数であり、前記命令は、前記制御回路によって実行されると、前記制御回路に対しさらに、前記第１の固有カメラパラメーターの前記第２の推定値と前記第２の固有カメラパラメーターの前記第２の推定値とに基づき、前記パターン座標系と前記カメラ座標系との関係を記述する第１の変換関数の推定値を求めさせ、前記第２の変換関数は、前記第１の変換関数に基づいて求められる、請求項３６に記載の非一時的コンピューター可読媒体。
【請求項３８】
前記命令は、前記制御回路によって実行されると、前記制御回路に対しさらに、（ａ）前記第１の変換関数の前記推定値、前記第２の固有カメラパラメーターの前記第２の推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、（ｂ）前記シミュレートキャリブレーション画像と前記キャリブレーション画像との差を求めることと、（ｃ）前記差に基づき前記第２の固有カメラパラメーターの前記第２の推定値と前記第１の固有カメラパラメーターの前記第２の推定値とを調整して、前記差を低減させる、前記第２の固有カメラパラメーターの調整された推定値及び前記第１の固有カメラパラメーターの調整された推定値を生成することであって、前記第２の固有カメラパラメーターの前記調整された推定値は、該第２の固有カメラパラメーターの第３の推定値であり、前記第１の固有カメラパラメーターの前記調整された推定値は、該第１の固有カメラパラメーターの第３の推定値であることとによって、前記第２の固有カメラパラメーターの第３の推定値と前記第１の固有カメラパラメーターの第３の推定値とを求めさせ、
前記第１の変換関数の前記推定値は、前記第２の固有カメラパラメーターの前記第３の推定値と前記第１の固有カメラパラメーターの前記第３の推定値とに基づいて求められる、請求項３７に記載の非一時的コンピューター可読媒体。
【請求項３９】
前記命令は、前記制御回路によって実行されると、前記制御回路に対しさらに、
前記ワールド座標系とリンク座標系との関係を記述する第３の変換関数の推定値を求めさせ、前記リンク座標系は、前記ロボットアームのリンクにおける位置に関して定義された座標系であり、前記キャリブレーションパターンは前記リンクに配置され、
前記パターン座標系と前記リンク座標系との関係を記述する第４の変換関数の推定値を求めさせ、前記第２の変換関数の前記推定値と前記第４の変換関数の前記推定値とは、ともに、前記第１の変換関数の推定値と前記第３の変換関数の推定値とに基づいて求められる、
請求項３７に記載の非一時的コンピューター可読媒体。
【請求項４０】
前記命令は、前記制御回路によって実行されると、前記制御回路に対しさらに、
前記第４の変換関数の前記推定値、前記第３の変換関数の前記推定値、前記第２の変換関数の前記推定値、及び前記第１の固有カメラパラメーターの前記第２の推定値に基づき、前記キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めさせ、
前記第２の固有カメラパラメーターの前記第２の推定値に基づき、レンズ歪みを補償するように前記キャリブレーション画像の変更されたバージョンを求めさせ、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの差を求めさせ、
前記シミュレートキャリブレーション画像と前記キャリブレーション画像の前記変更されたバージョンとの前記差を低減させるように、少なくとも前記第４の変換関数の前記推定値及び前記第２の変換関数の前記推定値を調整させる、
請求項３９に記載の非一時的コンピューター可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御のために自動カメラキャリブレーションを実施する方法及びシステムに関する。
【背景技術】
【０００２】
自動化がより一般的になるに従い、倉庫保管及び製造環境等、より多くの環境においてロボットが使用されている。例えば、ロボットは、倉庫において物品をパレットに積むか若しくはパレットから降ろすために、又は、工場においてコンベヤベルトから物体を拾い上げるために使用される場合がある。ロボットの移動は、一定である場合があり、又は、倉庫若しくは工場においてカメラによって撮影される画像等の入力に基づく場合がある。後者の状況では、カメラの特性を求めるために、かつ、カメラとロボットが位置する環境との関係を求めるために、キャリブレーションが行われる場合がある。キャリブレーションは、カメラキャリブレーションと呼ばれる場合があり、カメラによって取り込まれた画像に基づいてロボットを制御するために使用されるキャリブレーション情報を生成することができる。幾つかの実施態様では、カメラキャリブレーションは、人による手動操作を必要とする場合があり、人は、ロボットの移動を手動で制御するか、又は、カメラを手動で制御して、ロボットの画像を取り込むことができる。
【発明の概要】
【０００３】
本発明の実施形態の一態様は、ロボット制御のために自動カメラキャリブレーションを実施することに関する。自動カメラキャリブレーションは、通信インターフェース及び制御回路を備えるロボット制御システムによって実施することができる。通信インターフェースは、ロボット及びカメラ視野を有するカメラと通信するように構成することができ、ロボットは、ベースと、キャリブレーションパターンが配置されているロボットアームとを有することができる。ロボット制御システムの制御回路は、ａ）カメラ視野内に収まる仮想立方体の全ての角位置（コーナー・ロケーション）を求めることと、ｂ）仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めることと、ｃ）通信インターフェースを介してロボットに移動コマンドを出力することにより、仮想立方体の上に又は仮想立方体を通して分散される複数の位置までキャリブレーションパターンを移動させるようにロボットアームを制御することと、ｄ）通信インターフェースを介してカメラから複数のキャリブレーション画像を受け取ることであって、複数のキャリブレーション画像は、カメラによって取り込まれ、複数の位置におけるキャリブレーションパターンのそれぞれの画像であることと、ｅ）複数のキャリブレーション画像に基づき、固有カメラパラメーターのそれぞれの推定値を求めることと、ｆ）固有カメラパラメーターのそれぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、カメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、ロボットのベースに対して固定である位置に関して定義された座標系であることとにより、カメラキャリブレーションを実施するように構成することができる。制御回路は、カメラキャリブレーションが実施された後、通信インターフェースを介してカメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを、通信インターフェースを介してロボットに出力することにより、ロボットアームの配置を制御するように、更に構成することができる。一実施形態では、ロボット制御システムは、制御回路によって実行されると制御回路に対して上記ステップを実施させる命令を記憶する、非一時的コンピューター可読媒体を有することができる。
【０００４】
実施形態の１つの態様はまた、ロボット制御のために自動カメラキャリブレーションを実施することに関する。自動カメラキャリブレーションは、通信インターフェース及び制御回路を備えるロボット制御システムによって実施することができる。通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボット、及びカメラ視野を有するカメラと通信するように構成することができる。キャリブレーションパターンは、パターン座標系においてそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含むことができ、パターン座標系は、キャリブレーションパターンの位置及び向きに関して定義された座標系である。制御回路は、ａ）通信インターフェースを介してロボットに移動コマンドを出力することにより、カメラ視野内の少なくとも１つの位置までキャリブレーションパターンを移動させるようにロボットアームを制御することと、ｂ）通信インターフェースを介してカメラからキャリブレーション画像を受け取ることであって、キャリブレーション画像は、カメラによって取り込まれ、少なくとも１つの位置におけるキャリブレーションパターンの画像であることと、ｃ）複数のパターン要素がキャリブレーション画像に現れるそれぞれの位置を示す複数の画像パターン要素位置を求めることと、ｄ）複数の画像パターン要素位置に基づき、かつ、定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、ｅ）第１の固有カメラパラメーターの第１推定値が求められた後、第１の固有カメラパラメーターの第１の推定値に基づき、かつ、複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、ｆ）第２の固有カメラパラメーターの第１の推定値に基づき、かつ、複数の画像パターン要素位置及び定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第２の推定値及び第２の固有カメラパラメーターの第２の推定値を求めることと、ｇ）第１の固有カメラパラメーターの第２の推定値及び第２の固有カメラパラメーターの第２の推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、カメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、ロボットのベースに対して固定である位置に関して定義された座標系であることとにより、カメラキャリブレーションを実施するように構成することができる。制御回路は、カメラキャリブレーションが実施された後、カメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドをロボットに出力することにより、ロボットアームの配置を制御するように、更に構成することができる。
【０００５】
本発明の上述の特徴、目的、及び利点、並びに他の特徴、目的、及び利点は、添付の図面に示されるような本発明の実施形態の以下の説明から明らかであろう。本明細書に組み込まれるとともに本明細書の一部をなす添付の図面は更に、本発明の原理を説明するとともに、当業者が本発明を実施及び使用することを可能にする役割を果たす。図面は一定縮尺ではない。
【図面の簡単な説明】
【０００６】
【図１Ａ】本発明の実施形態による、カメラキャリブレーションが実施されるシステムのブロック図である。
【図１Ｂ】本発明の実施形態による、カメラキャリブレーションが実施されるシステムのブロック図である。
【図１Ｃ】本発明の実施形態による、カメラキャリブレーションを実施するように構成されたロボット制御システムのブロック図である。
【図２Ａ】本発明の実施形態による、ロボットがカメラキャリブレーションから得られるキャリブレーション情報に基づいて制御されていることを示すシステムの図である。
【図２Ｂ】本発明の実施形態による、カメラキャリブレーションの固有キャリブレーションフェーズ及びハンド−アイキャリブレーションフェーズによって得られるキャリブレーション情報の一例を示す図である。
【図３Ａ】本発明の実施形態による、カメラキャリブレーションに関与するカメラのモデルを示す図である。
【図３Ｂ】本発明の実施形態による、カメラキャリブレーションを実施することに関与する座標系を示す図である。
【図３Ｃ】本発明の実施形態による、カメラキャリブレーションを実施することに関与する座標系を示す図である。
【図４】本発明の実施形態による、カメラの視野（カメラ視野とも呼ぶ）内のキャリブレーションパターンを配置すべき位置を求め、求められた位置においてキャリブレーションパターンのそれぞれの画像を取り込む方法を示すフロー図である。
【図５Ａ】本発明の実施形態による、ロボットアームがカメラの視野内の様々な位置にキャリブレーションパターンを配置するシステム例を示す図である。
【図５Ｂ】本発明の実施形態による、ロボットアームがカメラの視野内の様々な位置にキャリブレーションパターンを配置するシステム例を示す図である。
【図５Ｃ】本発明の実施形態による、キャリブレーションパターンが配置される様々な位置を囲む仮想立方体を示す図である。
【図５Ｄ】本発明の実施形態による、キャリブレーションパターンが配置される様々な位置を囲む仮想立方体を示す図である。
【図５Ｅ】本発明の実施形態による、キャリブレーションパターンが配置される様々な位置を囲む仮想立方体を示す図である。
【図５Ｆ】本発明の実施形態による、キャリブレーションパターンが配置される様々な位置を囲む仮想立方体を示す図である。
【図６Ａ】本発明の実施形態による、カメラによって取り込まれたキャリブレーションパターンの画像であるキャリブレーション画像例を示す図である。
【図６Ｂ】本発明の実施形態による、カメラによって取り込まれたキャリブレーションパターンの画像であるキャリブレーション画像例を示す図である。
【図６Ｃ】本発明の実施形態による、カメラによって取り込まれたキャリブレーションパターンの画像であるキャリブレーション画像例を示す図である。
【図６Ｄ】本発明の実施形態による、カメラによって取り込まれたキャリブレーションパターンの画像であるキャリブレーション画像例を示す図である。
【図７】本発明の実施形態による、カメラの視野内に収まる仮想立方体を示す図である。
【図８Ａ】本発明の実施形態による、キャリブレーションパターン例を示す図である。
【図８Ｂ】本発明の実施形態による、画像がレンズ歪みの影響を示すキャリブレーションパターンの画像例を示す図である。
【図９Ａ】本発明の実施形態による、カメラキャリブレーションを実施する方法を示すフロー図である。
【図９Ｂ】本発明の実施形態による、カメラキャリブレーションを実施する方法を示すフロー図である。
【図１０】本発明の実施形態による、キャリブレーションパターンの画像における湾曲の量を求める態様を示す図である。
【図１１Ａ】本発明の実施形態による、カメラキャリブレーションの固有キャリブレーションフェーズの例を示す図である。
【図１１Ｂ】本発明の実施形態による、カメラキャリブレーションの固有キャリブレーションフェーズの例を示す図である。
【図１２】本発明の実施形態による、カメラキャリブレーションのハンド−アイキャリブレーションフェーズの一例を示す図である。
【発明を実施するための形態】
【０００７】
以下の詳細な説明は、本質的に単に例示のものであり、本発明又は本発明の用途及び使用を限定することを意図するものではない。さらに、前出の技術分野、背景技術、発明の概要又は以下の詳細な説明において提示されるいかなる明示された又は暗示された理論によっても限定する意図はない。
【０００８】
本明細書に記載する実施形態は、倉庫、製造工場において、又は他の何らかの環境において使用されるロボット等、ロボットを制御するために使用されるカメラのキャリブレーションを実施することに関する。キャリブレーションは、カメラキャリブレーションと呼ばれる場合があり、例えば、ロボット制御システム（ロボットコントローラーとも呼ぶ）が、カメラによって取り込まれる画像に基づいてロボットを制御するロボット制御システムの能力を促進するキャリブレーション情報を生成するために実施することができる。例えば、ロボットは、倉庫において包装品を拾い上げるために使用される場合があり、そこでは、ロボットのアーム又は他の構成要素の配置は、カメラによって取り込まれる包装品の画像に基づくことができる。その場合、キャリブレーション情報は、例えば、ロボットのアームに対する包装品の位置及び向きを求めるために、包装品の画像とともに使用することができる。より詳細に後述するように、カメラキャリブレーションは、カメラの固有（intrinsic）カメラパラメーターのそれぞれの推定値を求めることと、カメラとその外部環境との関係の推定値を求めることとを含むことができる。固有カメラパラメーターは、カメラの固有パラメーターを指すことができ、カメラの内部（internal）パラメーターとも呼ぶことができ、例えば、行列、ベクトル又はスカラー値である値を有することができる。より詳細に後述するように、固有カメラパラメーターの例としては、射影行列及び歪みパラメーターが挙げられ、固有カメラパラメーターの推定値は、推定された値と呼ぶこともできる。カメラとその外部環境との関係は、場合により、変換関数として表現することができ、この変換関数の推定値は、推定された関数と呼ぶこともできる。場合により、変換関数は、行列によって表される線形変換とすることができる。場合により、カメラキャリブレーションは、定義された位置に配置されるパターン要素を有することができるキャリブレーションパターンを用いて実施することができる。カメラは、キャリブレーションパターンのパターン要素の画像を取り込むことができ、カメラキャリブレーションは、パターン要素の画像をパターン要素の定義された位置と比較することに基づいて実施することができる。
【０００９】
本発明の実施形態の１つの態様は、第２の固有カメラパラメーター（例えば、歪みパラメーター）の推定値を求めるために使用されるものとは別個の段階において第１の固有カメラパラメーター（例えば、射影行列）の推定値を求めることにより、カメラキャリブレーションの精度を向上させることに関する。より具体的には、第１の固有カメラパラメーターは、第１の段階において推定することができ、結果として得られる推定値は、第２の段階に対する入力として使用することができ、第２の段階では、第２の固有カメラパラメーターの推定値が求められる。この手法の下では、第１の固有カメラパラメーターの推定値は、第２の段階の間では既知であるとみなすことができ、それにより、第２の段階は、第２の固有カメラパラメーターの推定値を求めることに対して限定することができる。さらに、第１の固有カメラパラメーターの推定値は既知であるとみなされるため、第２の段階は、カメラの全ての固有カメラパラメーターに対してそれぞれの推定値を求める必要はないが、第２の固有カメラパラメーターの推定値のみを求めることに焦点を当てることができる。その結果、第２の段階は、全ての固有カメラパラメーターに対するそれぞれの推定値が、単一の段階において同時に推定され、その後、固有キャリブレーションの出力として使用される実施態様と比較して、キャリブレーションエラーに対してよりロバストである、第２の固有カメラパラメーターのより正確な推定値をもたらすことができる。
【００１０】
例えば、単一の段階は、例えば、固有カメラパラメーターを含み、かつ、キャリブレーションパターンのパターン要素の画像とパターン要素の定義された位置との関係を記述する、一組の連立方程式を生成し解くことにより、カメラの全ての固有カメラパラメーターに対するそれぞれの推定値を同時に求めることができる。場合により、連立方程式は、パターン要素が現れる取り込まれた画像（キャリブレーション画像と呼ぶこともできる）における位置とパターン要素の定義された位置との関係を記述することができる。しかしながら、カメラからの取り込まれたキャリブレーション画像は、画像ノイズを含む可能性があり、それにより、連立方程式の精度が低下する可能性がある。その結果、連立方程式から導出される固有カメラパラメーターのそれぞれの推定値もまた、精度が低下する可能性がある。さらに、連立方程式の各固有カメラパラメーターに対するそれぞれの推定値は、連立方程式を満たすことができるように幾つかの精度を犠牲にする可能性がある。したがって、この単一の段階は、固有カメラパラメーターのその推定値にキャリブレーションエラーを引き起こす可能性があり、それは、カメラによって取り込まれる画像に基づいてロボットのアームを正確に位置決めする能力に影響を与える可能性がある。
【００１１】
一実施形態では、キャリブレーションエラーは、カメラの全ての固有カメラパラメーターに対してそれぞれの推定値を求めるために複数の段階を使用することによって低減させることができる。上述したように、第１の段階を用いて、第１の固有カメラパラメーターの第１の推定値を求めることができ、第２の段階を用いて、第２の固有カメラパラメーターの第１の推定値を求めることができる。場合により、第１の段階はまた、第２の固有カメラパラメーターに対して別の推定値も生成することができるが、第２の段階は、第１の段階からのこの推定値を無視することができ、代わりに、第２の固有カメラパラメーターに対してそれ自体の推定値を生成することができる。場合により、第２の段階は、全ての固有カメラパラメーターに対してそれぞれの推定値を求める汎用段階ではなく、第２の固有カメラパラメーターのみに対する推定値を求めることに専用である専用段階とすることができる。その結果、第２の段階は、第２の固有カメラパラメーターに対してより正確な推定値を生成することができる。
【００１２】
一実施形態では、複数の段階をパイプライン式に使用することができ、そこでは、上述したように、第１の段階の結果が、第２の段階に対する入力として使用される。より具体的には、第２の段階は、第１の段階からの第１の固有カメラパラメーターの推定値に基づいて第２の固有カメラパラメーターに対する推定値を生成することができる。場合により、第２の段階からの第２の固有カメラパラメーターの推定値は、その後、第１の固有カメラパラメーターの推定値を精密化するために使用することができ、それは、第３の段階として扱うことができる。場合により、第３の段階もまた、第２の固有カメラパラメーターの推定値を精密化することができる。例えば、第２の段階からの第２の固有カメラパラメーターの推定値は、第３の段階により、第２の固有カメラパラメーターに関する通知された初期推量として使用することができる。この初期推量は、高水準の精度を有することができ、したがって、第３の段階が、第１の固有カメラパラメーター及び第２の固有カメラパラメーターの推定値を更に改善するのに役立つことができる。
【００１３】
一実施形態では、固有カメラパラメーターのそれぞれの推定値は、それぞれのパターン要素のシミュレートされた位置を求めるために使用することにより、推定値の精度を評価する第４の段階において、更に精密化することができる。場合により、第４の段階は、第３の段階に続くことができる。他の場合では、第４の段階は、第２の段階の直後に実施することができ、上述した第３の段階はスキップすることができる。より詳細に後述するように、パターン要素に対するシミュレートされた位置は、固有カメラパラメーターの推定値に基づきパターン要素が現れると予測される、キャリブレーション画像における予測された位置とすることができる。第４の段階は、それぞれのパターン要素のシミュレートされた位置を、パターン要素が取り込まれたキャリブレーション画像に現れる実際の位置と比較することができる。この段階により、シミュレートされた位置とパターン要素が現れる実際の位置との差を低減させるように、固有カメラパラメーターの推定値を調整することができる。
【００１４】
一実施形態では、シミュレートされた位置の確定は、カメラキャリブレーションの固有キャリブレーションフェーズの一部として実施することができる。より詳細に後述するように、カメラキャリブレーションは、ハンド−アイキャリブレーションフェーズを更に含むことができる。一実施形態では、ハンド−アイキャリブレーションフェーズはまた、様々な関数の推定値がそれぞれのパターン要素のシミュレートされた位置に基づいて調整される段階も含むことができる。
【００１５】
本発明の実施形態の１つの態様は、キャリブレーションパターンに対して様々なポーズを計画することに関し、そこでは、キャリブレーションパターンは、こうしたポーズでカメラによって撮影される。ロボット制御システムが、ポーズを決定し、それらのポーズにキャリブレーションパターンを移動させるようにロボットアームを制御することができる。各ポーズは、カメラに対するキャリブレーションパターンの位置及び／又は向きを指すことができる。一実施形態では、ポーズ計画は、カメラの視野内における、ロボットがキャリブレーションパターンを移動させる複数の位置を決定することを含むことができる。
【００１６】
場合により、複数の位置は、カメラの視野（カメラ視野とも呼ぶ）内に収まる（例えば、完全に収まる）仮想立方体の上に又は仮想立方体を通して分散させることができる。仮想立方体の使用により、カメラは、一組の多様な位置においてキャリブレーションパターンを取り込むことができ、それにより、カメラキャリブレーションがより多くの組の状況を考慮するようにすることができ、したがって、カメラキャリブレーションをよりロバストにすることができる。例えば、多様な位置は、仮想立方体の角位置とともに、仮想立方体の中心位置を含むことができる。角位置は、カメラの視野の周縁部により近い可能性がある。中心位置は、カメラの真正面である可能性があり、より具体的には、カメラの視野の中心軸に沿って位置することができる。場合により、カメラは、カメラの視野の周縁部の近くに位置する物体を撮影しているときに重要な量のレンズ歪みを導入する可能性があり、カメラの視野の中心軸の近くにある物体を撮影しているときはレンズ歪みをほとんど又は全く導入しない可能性がある。キャリブレーションパターンを配置するための仮想立方体の使用により、キャリブレーションパターンは、カメラの視野の周縁部の近くで撮影され、かつカメラの視野の中心軸の近くで撮影されるようにすることができる。その結果、カメラは、程度の異なるレンズ歪みを示す可能性がある、キャリブレーション画像の多様な組を取り込むことができる。したがって、キャリブレーション画像の多様な組により、カメラキャリブレーションは、カメラのレンズ歪みの特性をより適切に推定することができる。
【００１７】
一実施形態では、カメラキャリブレーションに使用される一組のキャリブレーション画像にわたって、キャリブレーションパターンの向きもまた変更することができる。例えば、ロボット制御システムは、複数の位置のうちの各位置に対して、ロボットアームがカメラに対してキャリブレーションパターンを傾かせる角度を求めることができる。一実施形態では、ロボットアームがキャリブレーションパターンを移動させる複数の位置は、仮想立方体の上で又は仮想立方体を通して一様に分散させるか、又は、仮想立方体を通してランダムに分散させることができる。一実施形態では、仮想立方体は、ロボットアームを介してキャリブレーションパターンが全ての角位置に達することができる立方体でなければならない可能性がある。さらに、角位置は、ロボットアームが、キャリブレーションパターンを、幾つかの又は全ての角位置に対して、カメラに対する角度の定義された範囲内にあるように傾かせることができるように、位置付けられなければならない可能性がある。場合により、特定の仮想立方体が上記条件を満たさない場合、ロボット制御システムは、より小さい仮想立方体を用いて上記条件を満たすように試行することができる。
【００１８】
図１Ａは、自動カメラキャリブレーションを実施するロボット動作システム１００のブロック図を示す。ロボット動作システム１００は、ロボット１５０と、ロボット制御システム１１０（ロボットコントローラーとも呼ぶ）と、カメラ１７０とを備える。一実施形態では、ロボット動作システム１００は、倉庫、製造工場又は他の敷地内に位置することができる。ロボット制御システム１１０は、カメラキャリブレーション（より詳細に後述する）を実施して、後にロボット１５０を制御するために使用されるキャリブレーション情報を求めるように構成することができる。場合により、ロボット制御システム１１０は、カメラキャリブレーションを実施し、かつ、キャリブレーション情報に基づいてロボット１５０を制御するように構成される。場合により、ロボット制御システム１１０は、カメラキャリブレーションを実施することに専用とすることができ、別のロボット制御システム（別のロボットコントローラーとも呼ぶ）にキャリブレーション情報を通信することができ、別のロボット制御システムは、それにより、キャリブレーション情報に基づいてロボット１５０を制御する。ロボット１５０は、カメラ１７０によって取り込まれる画像と、キャリブレーション情報とに基づいて、位置決めすることができる。
【００１９】
一実施形態において、ロボット制御システム１１０は、ロボット１５０及びカメラ１７０と有線又は無線通信を介して通信するように構成することができる。例えば、ロボット制御システム１１０は、ＲＳ−２３２インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、Ｅｔｈｅｒｎｅｔインターフェース、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェース、ＩＥＥＥ８０２．１１インターフェース又はそれらの任意の組合せを介して、ロボット１５０及び／又はカメラ１７０と通信するように構成することができる。一実施形態では、ロボット制御システム１１０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス等、ローカルコンピューターバスを介して、ロボット１５０及び／又はカメラ１７０と通信するように構成することができる。
【００２０】
一実施形態では、ロボット制御システム１１０は、ロボット１５０とは別個とすることができ、上述した無線又は有線接続を介してロボット１５０と通信することができる。例えば、ロボット制御システム１１０は、有線接続又は無線接続を介してロボット１５０及びカメラ１７０と通信するように構成されているスタンドアローンコンピューターとすることができる。一実施形態では、ロボット制御システム１１０は、ロボット１５０の一体構成要素とすることができ、上述したローカルコンピューターバスを介してロボット１５０の他の構成要素と通信することができる。場合により、ロボット制御システム１１０は、ロボット１５０のみを制御する専用制御システム（専用コントローラーとも呼ぶ）とすることができる。他の場合では、ロボット制御システム１１０は、ロボット１５０を含む複数のロボットを制御するように構成することができる。一実施形態では、ロボット制御システム１１０、ロボット１５０及びカメラ１７０は、同じ敷地（例えば、倉庫）に位置する。一実施形態では、ロボット制御システム１１０は、ロボット１５０及びカメラ１７０から遠隔とすることができ、ネットワーク接続（例えば、ローカルエリアネットワーク（ＬＡＮ）接続）を介してロボット１５０及びカメラ１７０と通信するように構成することができる。
【００２１】
一実施形態では、ロボット制御システム１１０は、ロボット１５０に配置されたキャリブレーションパターン１６０の画像（キャリブレーション画像とも呼ぶ）を取得する（retrieve）か又は他の方法で受け取るように構成することができる。場合により、ロボット制御システム１１０は、こうした画像を取り込むようにカメラ１７０を制御するように構成することができる。例えば、ロボット制御システム１１０は、カメラ１７０に対してカメラ１７０の視野（カメラ視野とも呼ぶ）内のシーンの画像を取り込ませるカメラコマンドを生成し、有線又は無線接続を介してカメラコマンドをカメラ１７０に通信するように構成することができる。同じコマンドにより、カメラ１７０はまた、画像を（画像データとして）ロボット制御システム１１０、又はより一般的には、ロボット制御システム１１０がアクセス可能な記憶装置に通信して戻すこともできる。代替的に、ロボット制御システム１１０は、別のカメラコマンドを生成することができ、それにより、カメラ１７０は、そのカメラコマンドを受け取ると、カメラ１７０が取り込んだ画像（複数の場合もある）をロボット制御システム１１０に通信する。一実施形態では、カメラ１７０は、そのカメラ視野内のシーンの画像を、周期的に又は定義されたトリガー条件に応じて、ロボット制御システム１１０からのカメラコマンドを必要とすることなく、自動的に取り込むことができる。こうした実施形態では、カメラ１７０はまた、ロボット制御システム１１０に、又はより一般的には、ロボット制御システム１１０がアクセス可能な記憶装置に、ロボット制御システム１１０からのカメラコマンドなしに、画像を自動的に通信するように構成することもできる。
【００２２】
一実施形態では、ロボット制御システム１１０は、ロボット制御システム１１０によって生成されかつロボット１５０に有線又は無線接続を介して通信される移動コマンドを介して、ロボット１５０の移動を制御するように構成することができる。移動コマンドにより、ロボットは、ロボットに配置されたキャリブレーションパターン１６０を移動させることができる。キャリブレーションパターン１６０は、ロボット１５０に永久的に配置することができ、又は、ロボット１５０に取り付けかつロボットから取り外すことができる別個の構成要素とすることができる。
【００２３】
一実施形態では、ロボット１５０を制御するために使用される唯一の画像は、カメラ１７０によって取り込まれる画像である。別の実施形態では、ロボット１５０は、複数のカメラからの画像によって制御することができる。図１Ｂは、ロボット動作システム１００の一実施形態であるロボット動作システム１００Ａを示す。システム１００Ａは、カメラ１７０及びカメラ１８０等の複数のカメラを備える。ロボット制御システム１１０は、カメラ１７０及びカメラ１８０の両方から画像を受け取り、２つのカメラ１７０、１８０からの画像に基づきロボット１５０の移動を制御するように構成することができる。場合により、２つのカメラ１７０、１８０の存在により、ロボット制御システム１１０に立体視を与えることができる。ロボット制御システム１１０は、より詳細に後述するように、カメラ１７０及びカメラ１８０の両方に対してカメラキャリブレーションを実施するように構成することができる。一実施形態では、ロボット制御システム１１０は、カメラキャリブレーションを実施するために、両方のカメラ１７０、１８０を制御して、キャリブレーションパターン１６０のそれぞれの画像を取り込むことができる。一実施形態では、ロボット動作システム１００Ａは、厳密に２つのカメラを有することができ、又は、３つ以上のカメラを有することができる。
【００２４】
図１Ｃは、ロボット制御システム１１０のブロック図を示す。このブロック図に示すように、ロボット制御システム１１０は、制御回路１１１と、通信インターフェース１１３と、非一時的コンピューター可読媒体１１５（例えば、メモリ）とを備えることができる。一実施形態では、制御回路１１１は、１つ以上のプロセッサ、プログラマブルロジック回路（ＰＬＣ）若しくはプログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）又は他の任意の制御回路を含むことができる。
【００２５】
一実施形態では、通信インターフェース１１３は、カメラ１７０及びロボット１５０と通信するように構成されている１つ以上の構成要素を備えることができる。例えば、通信インターフェース１１３は、有線又は無線プロトコルでの通信を実施するように構成された通信回路を備えることができる。一例として、通信回路としては、ＲＳ−２３２ポートコントローラー、ＵＳＢコントローラー、Ｅｔｈｅｒｎｅｔコントローラー、Ｂｌｕｅｔｏｏｔｈ（登録商標）コントローラー、ＰＣＩバスコントローラー、他の任意の通信回路又はそれらの組合せを挙げることができる。
【００２６】
一実施形態では、非一時的コンピューター可読媒体１１５はコンピューターメモリを含むことができる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ソリッドステート集積メモリ及び／又はハードディスクドライブ（ＨＤＤ）を含むことができる。場合により、カメラキャリブレーションは、非一時的コンピューター可読媒体１１５に記憶されたコンピューター実行可能命令（例えば、コンピューターコード）を通して実施することができる。こうした場合、制御回路１１１は、コンピューター実行可能命令を実施してカメラキャリブレーション（例えば、図４並びに図９Ａ及び図９Ｂに示すステップ）を実施するように構成された１つ以上のプロセッサを含むことができる。
【００２７】
上述したように、カメラキャリブレーションは、カメラによって取り込まれる画像に基づいてロボットの制御を容易にするために実施することができる。例えば、図２Ａは、画像を使用して、倉庫において物体２９２を拾い上げるようにロボット２５０を制御する、ロボット動作システム２００を示す。より具体的には、ロボット動作システム２００は、図１Ａのシステム１００の一実施形態とすることができ、カメラ２７０と、ロボット２５０と、図１Ａのロボット制御システム１１０とを含む。カメラ２７０は、図１Ａのカメラ１７０の一実施形態とすることができ、ロボット２５０は、図１Ａのロボット１５０の一実施形態とすることができる。カメラ２７０は、倉庫内のコンベヤベルト２９３の上に配置された物体２９２（例えば、出荷のための包装品）の画像を取り込むように構成することができ、ロボット制御システム１１０は、物体２９２を拾い上げるようにロボット２５０を制御するように構成することができる。
【００２８】
図２Ａの実施形態では、ロボット２５０は、ベース２５２と、ベース２５２に対して移動可能なロボットアームとを有することができる。より具体的には、ロボットアームは、互いに対して回転可能である複数のリンク２５４Ａ〜２５４Ｃと、リンク２５４Ｃに取り付けられた把持部２５５とを備えることができ、ここでは、把持部は、物体を拾い上げるために使用することができる。一実施形態では、ロボット制御システム１１０は、リンク２５４Ａ〜２５４Ｃのうちの１つ以上を回転させる移動コマンドを通信するように構成することができる。移動コマンドは、モーター移動コマンド等の低水準コマンド、又は高水準コマンドとすることができる。ロボット制御システム１１０からの移動コマンドが高水準コマンドである場合、ロボット１５０は、高水準コマンドを低水準コマンドに変換するように構成することができる。
【００２９】
一実施形態では、カメラキャリブレーションの目的のうちの１つは、カメラ２７０とロボット２５０との関係、又はより具体的には、カメラ２７０と、ロボット２５０のベース２５２に対して固定である基準点２９４との関係を求めることである。言い換えれば、キャリブレーション情報は、カメラ２７０と基準点２９４との関係を記述する情報を含むことができる。一実施形態では、この関係は、基準点２９４に対するカメラ２７０の位置とともに、ロボット２５０の基準向きに対するカメラ２７０の向きを指すことができる。一実施形態では、基準向きは、より詳細に後述するように、ワールド座標系を定義するために使用することができ、上記関係は、カメラ−ワールド関係と呼ぶことができる。場合により、カメラ−ワールド関係は、カメラ２７０と物体２９２との関係（カメラ−物体関係とも呼ぶ）と、物体２９２と基準点２９４との関係（物体−ワールド関係とも呼ぶ）とを求めるために使用することができる。カメラ−物体関係及び物体−ワールド関係を使用して、物体２９２を拾い上げるようにロボット２５０を制御することができる。例えば、ロボット制御システム１１０は、カメラ−物体関係、物体−ワールド関係、カメラ−ワールド関係又はそれらの組合せに基づいて、物体２９２に対する把持部２５５又はリンク２５４Ｃの位置及び向き（例えば、リンク−物体関係）を求めるように構成することができる。
【００３０】
一実施形態では、カメラキャリブレーションは、固有キャリブレーションフェーズ及びハンド−アイキャリブレーションフェーズを含む。図２Ｂは、固有キャリブレーションフェーズ及びハンド−アイキャリブレーションフェーズから求められる情報の一例を示し、カメラキャリブレーションを実施するために使用されるキャリブレーションパターン２６０を更に示す。一実施形態では、キャリブレーションパターン２６０は、リンク２５４Ｃに直接かつ固定して取り付けることができ、それにより、キャリブレーションパターン２６０はリンク２５４Ｃに対して固定のままである。固有キャリブレーションフェーズは、カメラ２７０の固有カメラパラメーターに対してそれぞれの推定値を自動的に求めることを含むことができる。一実施形態では、カメラ２７０の固有カメラパラメーターは、値がカメラ２７０の位置及び向きとは独立している任意のパラメーターとすることができる。より詳細に後述するように、固有カメラパラメーターは、カメラ２７０の焦点距離、カメラの画像センサーのサイズ、又はカメラ２７０によって導入されるレンズ歪みの影響等、カメラ２７０の特性を特徴付けることができる。一実施形態では、ハンド−アイキャリブレーションフェーズは、カメラ−ワールド関係及びキャリブレーションパターン２６０とリンク２５４Ｃとの関係（パターン−リンク関係とも呼ぶ）、又はより具体的には、キャリブレーションパターン２６０とリンク２５４Ｃ上の基準点２９６との関係を自動的に求めることを含むことができる。一実施形態では、カメラ−ワールド関係及びパターン−リンク関係は、カメラ２７０とパターン２６０との関係（カメラ−パターン関係とも呼ぶ）と、リンク２５４Ｃと基準点２９４との関係（リンク−ワールド関係とも呼ぶ）とに基づいて求めることができる。場合により、カメラ−パターン関係は、固有キャリブレーションの結果に基づいて求めることができ、リンク−ワールド関係は、ロボット制御システム１１０がロボット２５０に通信した移動コマンドに基づいて求めることができる。一実施形態では、カメラキャリブレーションは、複数のカメラを備えるシステムに対するステレオキャリブレーションフェーズを含むことができる。ステレオキャリブレーションフェーズは、１つのカメラの別のカメラの位置及び向きに対する位置及び向き等、複数のカメラの間の関係を求めることを含むことができる。
【００３１】
一実施形態では、カメラの固有カメラパラメーターは、カメラの外部の物体がその画像センサー上に画像としていかに投影されるかと、レンズが画像において物体の外観をいかに歪めるかとを記述することができる。例えば、図３Ａは、１つ以上のレンズ３７１と、画像センサー３７３と、通信インターフェース３７５とを備える、図１Ａのカメラ１７０及び図２Ａのカメラ２７０の一実施形態であるカメラ３７０のブロック図を示す。通信インターフェース３７５は、図１Ａのロボット制御システム１１０と通信するように構成することができ、ロボット制御システム１１０の図１Ａの通信インターフェース１１３と同様とすることができる。一実施形態では、１つ以上のレンズ３７１は、カメラ３７０の外側から入ってくる光を画像センサー３７３上に集束させることができる。一実施形態では、画像センサー３７３は、それぞれのピクセル強度値を介して画像を表すように構成されたピクセルのアレイを含むことができる。画像センサー３７３は、電荷結合素子（ＣＣＤ）センサー、相補型金属酸化膜半導体（ＣＭＯＳ）センサー、量子イメージセンサー（ＱＩＳ：quanta image sensor）又は他の任意の画像センサーを含むことができる。
【００３２】
上述したように、固有カメラパラメーターは、カメラ３７０の視野（そのカメラ視野とも呼ぶ）内の物体が、画像センサー上に像としていかに投影されるか、又はより具体的には、物体が配置されている様々な位置が画像センサーのピクセルアレイ上にいかに投影されるかを記述することができる。例えば、図３Ｂは、カメラ３７０Ａの外部の位置
【数１】
2020144829.tif 000003
を示し、ここで、Ｔという上付き文字は転置を指し、Ｃａｍｅｒａという下付き文字は、カメラ座標系において表現されているものとしてのＸ、Ｙ及びＺ座標を指す。より具体的には、カメラ３７０Ａは、カメラ３７０の一実施形態とすることができ、１つ以上のレンズ３７１Ａ及び画像センサー３７３Ａを備えることができる。カメラ３７０Ａの位置及び向きは、カメラ座標系を定義するために使用することができる。図３Ｂは、カメラ座標系を直交座標軸
【数２】
2020144829.tif 000004
によって定義されるように示す。座標軸は、カメラ３７０Ａの様々な構成要素の向きと位置合わせすることができる。例えば、
【数３】
2020144829.tif 000005
座標軸は、１つ以上のレンズ３７１Ａの光軸と等しくすることができる、カメラ３７０Ａのカメラ視野の中心軸と等しくすることができる。場合により、
【数４】
2020144829.tif 000006
及び
【数５】
2020144829.tif 000007
座標軸は、画像センサー３７３Ａの縁に対して平行とすることができる。さらに、カメラ座標系の原点は、１つ以上のレンズ３７１Ａのうちの１つのレンズの位置、カメラ３７０Ａの絞りの位置、又は別の位置（例えば、画像センサー３７３Ａの上、正面又は後方の位置）と等しくすることができる。
【００３３】
一実施形態では、位置
【数６】
2020144829.tif 000008
からの光は、カメラ内の座標
【数７】
2020144829.tif 000009
の上に投影することができ、ここで、ｆは、１つ以上のレンズ３７１Ａの焦点距離である。カメラ座標系におけるこの座標はまた、画像センサー座標系におけるピクセル座標
【数８】
2020144829.tif 000010
にも対応することができる。図３Ｂは、画像センサー３７３Ａのそれぞれの縁と位置合わせすることができる座標軸
【数９】
2020144829.tif 000011
によって定義されるように画像センサー座標系を示す。画像センサー座標系は、画像センサー３７３Ａの角に位置する原点を有することができる。
【００３４】
一実施形態では、固有カメラパラメーターは、スカラー値、ベクトル又は行列である値を有することができる。一実施形態では、固有カメラパラメーターのうちの１つは、
位置
【数１０】
2020144829.tif 000012
と位置
【数１１】
2020144829.tif 000013
との幾何学的関係をモデル化する射影行列Ｋである。この固有カメラパラメーターの推定値は推定された行列とすることができ、それは、行列の成分のそれぞれの推定された値を含むことができる。場合により、より詳細に後述するように、射影行列Ｋは、
【数１２】
2020144829.tif 000014
と
【数１３】
2020144829.tif 000015
との歪みなし関係をモデル化することができ、別の固有カメラパラメーター又は一組の固有カメラパラメーターは、レンズ歪みの影響を考慮することができる。一実施形態では、
【数１４】
2020144829.tif 000016
及び
【数１５】
2020144829.tif 000017
である。この例では、ｆｘは、焦点距離ｆと、
【数１６】
2020144829.tif 000018
軸に沿った画像センサー３７３Ａのピクセルサイズとに基づく第１のスケールファクターとすることができる。同様に、ｆｙは、カメラ３７０Ａの焦点距離ｆと、
【数１７】
2020144829.tif 000019
軸に沿った画像センサー３７３Ａのピクセルサイズとに基づく第２のスケールファクターとすることができる。ｆｘ及びｆｙはともに、ピクセル／ミリメートルの単位を有することができる。値Ｃｘは、主点オフセットの第１の部分とすることができ、画像センサー座標系の原点とカメラ座標系の原点との間の
【数１８】
2020144829.tif 000020
軸に沿った距離に基づくことができる。値Ｃｙは、主点オフセットの第２の部分とすることができ、画像センサー座標系の原点とカメラ座標系の原点との間の
【数１９】
2020144829.tif 000021
軸に沿った距離に基づくことができる。上述したように、射影行列Ｋは、固有カメラパラメーターであり、ｆｘ、ｆｙ、Ｃｘ及びＣｙの各々は行列の成分であり、成分の各々はスカラー値を有する。一実施形態では、ｆｘ、ｆｙ、Ｃｘ、Ｃｙの各々及び焦点距離ｆもまた、固有カメラパラメーターとみなすことができ、それらの固有カメラパラメーターの各々の値はスカラー値である。
【００３５】
一実施形態では、固有カメラパラメーターは、１つ以上のレンズ３７１Ａによってもたらされるレンズ歪みの影響を特徴付けることができる１つ以上の歪みパラメーターを含む。一実施形態では、固有カメラパラメーターは、歪み関数におけるパラメーターとすることができる。例えば、１つ以上のレンズ３７１Ａのレンズ歪みは、位置
【数２０】
2020144829.tif 000022
が、
【数２１】
2020144829.tif 000023
にあるかのように見えるようにする効果としてモデル化することができ、ここで、第１の関数ｄｘ（第１の歪み関数と呼ぶことができる）が、
【数２２】
2020144829.tif 000024
をＸ、Ｙ及びＺの値に関連付けることができ、第２の関数ｄｙ（第２の関数とも呼ぶ）が、
【数２３】
2020144829.tif 000025
をＸ、Ｙ及びＺの値に関連付けることができる。例えば、１つのモデルでは、
【数２４】
2020144829.tif 000026
であり、式中、
【数２５】
2020144829.tif 000027
である。この例では、ｋ１、ｋ２、ｋ３、ｐ１、ｐ２の各々は、スカラー値を有する歪みパラメーターとすることができ、特定の歪みパラメーターの推定値は、推定されたスカラー値とすることができる。さらに、推定値は、一組の歪みパラメーター（例えば、ｋ１、ｋ２、ｋ３、ｐ１、ｐ２）に対して求めることができ、一組の歪みパラメーターの推定値は、一組の歪みパラメーターに対する一組のそれぞれの推定されたスカラー値を指す。
【００３６】
上述したように、カメラキャリブレーションは、カメラとカメラの環境との関係、又は、キャリブレーションパターンとパターンの環境との関係を求める、ハンド−アイキャリブレーションフェーズを含むことができる。ハンド−アイキャリブレーションについては、より詳細に後述する。一実施形態では、外部パラメーターは、図２Ｂに示すカメラ−ワールド関係及びパターン−リンク関係を記述することができる。一実施形態では、カメラ−ワールド関係は、カメラ座標系とワールド座標系との関係を記述する変換関数を介して記述することができる。ワールド座標系は、図３Ｃに示され、座標軸
【数２６】
2020144829.tif 000028
によって定義される。ワールド座標系の原点は、基準点３９４であり、基準点３９４は、ロボット３５０のベース３５２に対して固定である任意の点とすることができる。一実施形態では、軸
【数２７】
2020144829.tif 000029
は、任意の向きを有することができる。一実施形態では、軸
【数２８】
2020144829.tif 000030
は、ロボット３５０、又はロボット３５０が位置する環境（例えば、倉庫）の構造に対して、定義することができる。例えば、軸
【数２９】
2020144829.tif 000031
は、倉庫の床に対して直交していなければならない場合がある。一実施形態では、上記変換関数は、カメラ座標系からワールド座標系への線形変換を定義する行列
【数３０】
2020144829.tif 000032
とすることができる。上記
【数３１】
2020144829.tif 000033
という命名は、座標系「ｂ」における座標から座標系「ａ」における座標への写像を定義するｂ−ａ変換に対する変換行列を指す。１つの例では、
【数３２】
2020144829.tif 000034
は、形式
【数３３】
2020144829.tif 000035
を有する。
【００３７】
上記例では、Ｒｂａは、座標系ｂと座標系ａとの間の相対的な回転行列であり、ｔｂａは、座標系ｂと座標系ａとの間の相対的な並進ベクトルである。
【００３８】
一実施形態では、パターン−リンク関係は、パターン座標系とリンク座標系との関係を記述する変換関数を介して記述することができ、その例を図３Ｃに示す。一実施形態では、キャリブレーションパターン３６０は、カメラキャリブレーションを実施するために使用することができ、ロボット３５０のリンク３５４に取り付けることができ、リンク３５４は、ロボット３５０のロボットアームの少なくとも一部を形成することができる。パターン座標系は、キャリブレーションパターン３６０に関して定義される座標系とすることができる。例えば、パターン座標系は、座標軸
【数３４】
2020144829.tif 000036
によって定義することができ、キャリブレーションパターン３６０の中心に位置する原点を有することができる。一実施形態では、キャリブレーションパターン３６０は、平坦な矩形ボード又は平坦な矩形シート（例えば、ステッカー）から形成することができ、
【数３５】
2020144829.tif 000037
は、平坦ボード又は平坦シートのそれぞれの縁に対して平行とすることができ、
【数３６】
2020144829.tif 000038
は、平坦ボード又は平坦シートに対して直交している。図３Ｃはまた、座標軸
【数３７】
2020144829.tif 000039
によって定義することができるリンク座標系も示す。一実施形態では、リンク座標系の原点は、リンク３５４の点３９６である。リンク３５４は、キャリブレーションパターン３６０に固定して取り付けることができ、それにより、キャリブレーションパターン３６０は、リンク３５４に対して固定である。一実施形態では、座標軸
【数３８】
2020144829.tif 000040
の向きは、リンク３５４の向きと同じとすることができる。一実施形態では、パターン−リンク関係に対する変換関数は、パターン座標系とリンク座標系との間の線形変換を定義する行列
【数３９】
2020144829.tif 000041
とすることができる。一実施形態では、
【数４０】
2020144829.tif 000042
は、ハンド−アイキャリブレーションフェーズを実施する前には未知である可能性があり、ハンド−アイキャリブレーションフェーズは、カメラ−ワールド関係（例えば、
【数４１】
2020144829.tif 000043
）の推定値とともに、
【数４２】
2020144829.tif 000044
の推定値を求めることを含むことができる。
【００３９】
より詳細に後述するように、ハンド−アイキャリブレーションフェーズの幾つかの実施形態は、カメラ−パターン関係及びリンク−ワールド関係に基づいて、カメラ−ワールド関係及びパターン−リンク関係を求めることができる。一実施形態では、カメラ−パターン関係は、カメラ座標系とパターン座標系との間の線形変換を定義する行列
【数４３】
2020144829.tif 000045
によって定義することができる。一実施形態では、リンク−ワールド関係は、リンク座標系とワールド座標系との間の線形変換を定義する行列
【数４４】
2020144829.tif 000046
によって定義することができる。
【００４０】
或るロボットが２つ以上のカメラからの画像に基づいて制御される一実施形態では、カメラキャリブレーションは、第１のカメラ（例えば、図１Ｂにおけるカメラ１）のカメラ座標系と第２のカメラ（例えば、図１Ｂにおけるカメラ２）のカメラ座標系との関係を記述する変換関数を推定するか又は他の方法で求める、ステレオキャリブレーションフェーズを含むことができる。一実施形態では、こうした変換関数は、２つのカメラ座標系の間の線形変換を定義する行列
【数４５】
2020144829.tif 000047
とすることができる。
【００４１】
上述したように、カメラキャリブレーションは、キャリブレーションパターンがカメラによって撮影される位置及び／又は向きを求めることを含むことができ、結果として得られる画像は、固有キャリブレーション、ハンド−アイキャリブレーション及び／又はステレオキャリブレーションを実施するために使用される。例えば、キャリブレーションパターンは、カメラのカメラ視野内に収まる仮想立方体の上に又は仮想立方体を通して分散される複数の位置まで移動させることができる。図４は、カメラキャリブレーションを実施するためのキャリブレーションパターンの画像（キャリブレーション画像とも呼ぶ）を得る方法４００を示すフロー図を示す。一実施形態では、方法４００は、図１Ａのロボット制御システム１１０の図１Ａの制御回路１１１によって実施される。上述したように、ロボット制御システム１１０は、ロボットアーム及びカメラと通信するように構成された通信インターフェースを備えることができる。
【００４２】
図５Ａに、方法４００が実施される環境例を示し、図５Ａは、カメラ４７０及びロボット４５０と通信する図１Ａのロボット制御システム１１０を含むロボット動作システム５００を示す。カメラ４７０は、図１Ａ／図２Ａ／図３Ａのカメラ１７０／２７０／３７０の一実施形態とすることができ、ロボットは、図１Ａ／図２Ａ／図３Ａのロボット１５０／２５０／３５０の一実施形態とすることができる。ロボット４５０は、ベース４５２とベース４５２に対して移動可能なロボットアームとを備えることができる。ロボットアームは、リンク４５４Ａ〜リンク４５４Ｅ等、１つ以上のリンクを備える。一実施形態では、リンク４５４Ａ〜４５４Ｅは、互いに回転可能に取り付けることができる。例えば、リンク４５４Ａは、ジョイント４５６Ａを介してロボットベース４５２に回転可能に取り付けることができる。残りのリンク４５４Ｂ〜４５４Ｅは、ジョイント４５６Ｂ〜４５６Ｅを介して互いに回転可能に取り付けることができる。一実施形態では、リンク（例えば、４５４Ｂ〜４５４Ｅ）は、１つ以上の直動ジョイントのみを介して、又は直動ジョイントを他のタイプのジョイント（例えば、１つ以上の円筒ジョイント）と組み合わせて、接続することができる。１つ以上の直動ジョイントを含むこうした実施形態では、リンクは、互いに直線的に取り付けられていると言うことができる。一実施形態では、ベース４５２は、ロボット４５０を、例えば、取付フレーム又は取付面（例えば、倉庫の床）に取り付けるために使用することができる。一実施形態では、ロボット４５０は、リンク４５４Ａ〜４５４Ｅを回転させることによりロボットアームを移動させるように構成されている複数のモーターを備えることができる。例えば、モーターのうちの１つは、図５Ａにおいて点線矢印によって示すように、ジョイント４５６Ａ及びベース４０２に対して第１のリンク４５４Ａを回転させるように構成することができる。同様に、複数のモーターのうちの他のモーターは、リンク４５４Ｂ〜４５４Ｅを回転させるように構成することができる。複数のモーターは、ロボット制御システム１１０によって制御することができる。図５Ａは、第５のリンク４５４Ｅに固定して配置されたキャリブレーションパターン４６０を更に示し、それにより、リンク４５４Ａ〜４５４Ｅの回転又はロボット４５０の他の移動により、リンク４５４Ｅに対してキャリブレーションパターン４６０の位置も向きも変化しない。一実施形態では、リンク４５４Ｅの上にキャリブレーションパターン４６０を塗装することができる。一実施形態では、キャリブレーションパターン４６０は、リンク４５４Ｅに取り付けられているキャリブレーションボードの一部とすることができる。
【００４３】
図４に戻ると、方法４００は、一実施形態において、ステップ４０１で開始することができ、そこでは、制御回路１１１は、カメラ視野内に収まる（例えば、完全に収まる）仮想立方体の全ての角位置を求めることができ、カメラ視野はカメラの視野を指すことができる。図５Ｂは、カメラ４７０の視野とすることができる、カメラ視野例５１０を示し、カメラ視野５１０内に収まる仮想立方体５５０を更に示す。一実施形態では、カメラ視野５１０は、カメラ４７０から外向きに広がる仮想ピラミッドを形成することができる。場合により、カメラ視野５１０の幅は、カメラ４７０の１つ以上のレンズの焦点距離によって決まる可能性がある。図５Ｃは、仮想立方体５５０の角位置の一例を示す。より具体的には、仮想立方体５５０は、仮想立方体５５０の８つの角に対応する８つの角位置５５１Ａ〜５５１Ｈを有する。一実施形態では、仮想立方体の角位置を求めることは、角位置の座標（例えば、
【数４６】
2020144829.tif 000048
）を求めることを含むことができる。
【００４４】
一実施形態では、仮想立方体５５０は空間を画定することができ、その空間の上又は中で、ロボット４５０のロボットアームがキャリブレーションパターン４６０を移動させる。カメラ４７０は、仮想立方体５５０の上又は中の種々の位置に対応するキャリブレーションパターン４６０の複数の画像（キャリブレーション画像とも呼ぶ）を取り込むことができる。キャリブレーションパターン４６０は、球体等の異なる形状によって画定される空間を通して移動させることができるが、仮想立方体５５０によって画定される空間は、カメラ４７０のカメラ視野５１０の周縁部に近い方の位置を含むことができる。例えば、仮想立方体５５０の８つの角位置は、カメラ視野５１０の周縁部に近い可能性がある。カメラ４７０が、レンズ歪み又は他の形態のカメラ歪みを示す場合、キャリブレーション画像に対するレンズ歪みの影響は、例えば、キャリブレーションパターン４６０がカメラ視野５１０の中心の周囲に位置する場合と比較して、キャリブレーションパターン４６０がカメラ視野５１０の周縁部の近くに位置する場合、より顕著である可能性がある。したがって、仮想立方体５５０は、歪みの影響がより顕著であるキャリブレーション画像の取得を容易にすることができ、それにより、カメラキャリブレーションは、カメラ４７０の歪みパラメーターに対してより正確な推定値を生成することができる。
【００４５】
図４に戻ると、方法４００はステップ４０３を更に含むことができ、そこでは、制御回路１１１は、仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めることができ、キャリブレーションパターンは、複数の位置の各位置において少なくとも部分的にカメラに可視である。
【００４６】
一実施形態では、複数の位置は、仮想立方体の上に又は仮想立方体を通して一様に分散されている（均一に分散されているとも言う）。一実施形態では、複数の位置は、仮想立方体の上に又は中に一様に分散されている厳密にｎ３個の位置とすることができ、ｎは、２以上であるか又は３以上である正の整数である。例えば、図５Ｃは、仮想立方体５５０の上に又は仮想立方体を通して一様に分散されている厳密に２７個の位置の一実施形態を示す。一実施形態では、複数の一様に分散された位置は、複数の位置のうちの隣接する位置の間に、仮想立方体の縁に沿って測定される、一様な間隔を有する。例えば、角位置５５１Ａは、位置５５１Ｉ〜５５１Ｎに対する隣接する位置とすることができる。角位置５５１Ａ及び隣接する位置５５１Ｉ〜５５１Ｎは、仮想立方体５５０の縁に沿って測定される、一様の間隔を有することができる。より具体的には、角位置５５１Ａは、隣接する位置５５１Ｉ〜５５１Ｎの各々まで、縁５５３Ａ、５５３Ｂ又は５５３Ｃに沿って測定される、同じ距離を有することができる。この距離は、例えば、仮想立方体５５０の各辺の長さの半分とすることができる。別の実施形態では、仮想立方体５５０は、ｎ３個のより小さい、オーバーラップしない立方体（例えば、２７個のより小さい立方体）に分割することができ、より小さい立方体は、仮想立方体５５０を一様に分割する。こうした実施態様では、複数の一様に分散された位置のうちの各位置は、それぞれのより小さい立方体の中心位置とすることができる。
【００４７】
一実施形態では、複数の位置は、仮想立方体５５０を通してランダムに分散される。場合により、制御回路１１１は、仮想立方体５５０を複数のオーバーラップしない領域に分割することにより、かつ、複数のオーバーラップしない領域のうちの各領域にあるように複数の位置のうちのそれぞれの位置を割り当てることにより、複数の位置を求めるように構成され、特定の領域におけるそれぞれの位置は、その領域におけるランダムな位置とすることができる。場合により、制御回路１１１は、再帰的に又は反復的に、半分の領域の各々をより小さい半分の領域に分割し、異なる半分領域に位置を割り当てるように構成することができ、それにより、複数の位置は、仮想立方体５５０の１つの領域の周囲に密集しない。
【００４８】
例えば、制御回路は、一連の反復にわたり複数の位置を求めるように構成することができ、複数の位置のうちの第１の位置は、仮想立方体内の任意の位置として求められ、一連の反復のうちの第１の反復の間に求められ、仮想立方体は、第１の反復を実施するために使用される第１の領域を形成する。図５Ｄは、第１の反復において求められる第１の位置５５５Ａの一例を示す。この例では、残りの反復に対するそれぞれの位置は、残りの反復の各々に対して以下を実施することにより求められる。すなわち、（ａ）先行する反復を実施するために使用された領域を、オーバーラップしない第１の領域及び第２の領域に分割し、第１の領域及び第２の領域の各々は、現反復を実施するために使用される領域であり、（ｂ）第１の領域及び第２の領域のうちのいずれが先行する位置を含むかを判断し、先行する位置は、先行する反復において求められた複数の位置のうちのそれぞれの位置であり、（ｃ）現位置として、第１の領域及び第２の領域のうちの他方の内部の任意の位置を求め、現位置は、現反復に対して求められる複数の位置のうちの位置である。例えば、図５Ｄは、先行する反復（すなわち、第１の反復）で使用された領域を第１の半分領域５５３Ａ及び第２の半分領域５５３Ｂに分割する第２の反復を示す。さらに、第１の反復に対する位置は第１の半分領域５５３Ａにあるため、第２の反復に対する位置は、他方の第２の反復領域５５３Ｂにある。図５Ｅは、先行する反復で使用された領域５５３Ａを第１の反復領域５５３Ｃ及び第２の反復領域５５３Ｄに分割する第３の反復を示す。さらに、先行する反復からの位置５５５Ａが半分領域５５３Ｄにあったため、第３の反復に対する位置５５５Ｃは、他方の半分領域５５３Ｃにある。図５Ｆは、先行する反復で使用された領域５５３Ｂを半分領域５５３Ｅ及び５５３Ｆに分割する第４の反復を示す。先行する反復からの位置は半分領域５５３Ｆにあったため、第４の反復に対する位置５５５Ｄは他方の半分領域５５３Ｅにある。
【００４９】
図４に戻ると、方法４００はステップ４０５を含み、そこでは、制御回路１１１は、ロボットアームを制御して、ステップ４０３で求められた複数の位置までキャリブレーションパターンを移動させることができる。例えば、図５Ｂに関して、ロボット４５０は、ロボットアームのリンク４５４Ａ〜４５４Ｅのうちの１つ以上を移動させることにより、ロボットアームを移動させることができる。制御回路１１１は、例えば、ロボットに対して複数のリンク４５４Ａ〜４５４Ｅを移動させる１つ以上の移動コマンドを生成し、通信インターフェース１１３を介して１つ以上の移動コマンドをロボット４５０に出力することができる。より具体的には、制御回路１１１は、１つ以上の移動コマンドを通信インターフェース１１３に出力することができ、通信インターフェース１１３は、ロボットアーム（例えば、複数のリンク４５４Ａ〜４５４Ｅ）に対して、１つ以上の移動コマンドに基づき、仮想立方体の上に又は仮想立方体を通して分散されている複数の位置までキャリブレーションパターンを移動させるように、ロボット４５０に１つ以上の移動コマンドを通信することができる。一実施形態では、１つ以上の移動コマンドは、リンク４５４Ａ〜４５４Ｅが互いに対して回転する回転の量を制御する１つ以上のモーターコマンドを含むことができる。一実施形態では、制御回路は、デカルト座標
【数４７】
2020144829.tif 000049
として位置を求め、このデカルト座標に基づきモーターコマンドを決定するように構成することができる。一実施形態では、制御回路１１１は、ロボットアームを（例えば、ロボット４５０に通信される移動コマンドを介して）制御して、仮想立方体５５０の上に又は仮想立方体５５０を通して分散されている複数の位置に対して、カメラ４７０に対する異なるそれぞれの角度にキャリブレーションパターン４６０を傾けさせるように構成することができ、それにより、複数のそれぞれのキャリブレーション画像は、カメラ４７０に対して異なるそれぞれの角度でキャリブレーションパターン４６０を取り込む。
【００５０】
一実施形態では、方法４００はステップ４０７を含み、そこでは、制御回路１１１は、通信インターフェース１１３を介してカメラ４７０から複数のキャリブレーション画像を取得するか又は他の方法で受け取ることができ、複数のキャリブレーション画像は、カメラによって取り込まれ、ステップ４０３及び４０５の複数の位置におけるキャリブレーションパターン４６０のそれぞれの画像である。場合により、ステップ４０７は、制御回路が、複数の位置に配置されているキャリブレーションパターンに対応する複数のそれぞれのキャリブレーション画像を取り込むようにカメラを制御することを含むことができる。例えば、図６Ａ〜図６Ｄは、カメラ４７０に対する異なる位置及び／又は異なるそれぞれの角度における図５Ａのキャリブレーションパターン４６０の４つのそれぞれの画像の一例を示す。場合により、複数のそれぞれのキャリブレーション画像の各キャリブレーション画像は、それぞれのピクセル強度値を有するピクセルのアレイを含むことができる。一実施形態では、キャリブレーション画像のうちの１つ以上は、キャリブレーションパターンの実際には直線である要素において又は要素の間で湾曲して現れる可能性がある歪みを示す場合がある。歪みについては、図８Ｂに関してより詳細に後述する。
【００５１】
一実施形態では、ステップ４０７は、制御回路が、カメラコマンドを生成し、そのカメラコマンドを、通信インターフェース１１３を介してカメラに通信することにより、キャリブレーション画像を取得することを含むことができる。カメラコマンドは、カメラによって受け取られると、カメラに対し、カメラ視野からキャリブレーション画像若しくは他の任意の画像を取り込ませ、及び／又は、カメラに対し、取り込んだ画像を通信インターフェース１１３に戻すように通信させることができ、それにより、通信インターフェース１１３は、取り込まれた画像を制御回路１１１に通信することができる。したがって、その結果、制御回路１１１は、通信インターフェース１１３を介してカメラから、取り込まれたキャリブレーション画像を受け取ることができる。一実施形態では、制御回路１１１は、カメラコマンドを生成することなく、カメラから、取り込まれた画像を受け取ることができる。例えば、カメラは、制御回路１１１からのカメラコマンドを必要とすることなく、周期的に又は定義されたトリガー条件に応じて、そのカメラ視野からキャリブレーション画像又は他の任意の画像を自動的に取り込むことができる。こうした実施形態では、カメラはまた、制御回路１１１からのカメラコマンドなしに、自動的に、キャリブレーション画像を通信インターフェース１１３に通信するように構成することもでき、そのため、通信インターフェース１１３は、画像を制御回路１１１に通信することができる。
【００５２】
図４に戻ると、方法４００はステップ４０９を含み、そこでは、制御回路１１１は、複数のそれぞれのキャリブレーション画像に基づき、固有カメラパラメーターのそれぞれの推定値を求めることができる。方法４００はステップ４１１を更に含み、そこでは、制御回路１１１は、固有カメラパラメーターのそれぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求める。一実施形態では、ステップ４０９及び４１１は、固有キャリブレーションフェーズ及びハンド−アイキャリブレーションフェーズの一部とすることができ、それらについてはより詳細に後述する。一実施形態では、方法４００はステップ４１３を含むことができ、そこでは、制御回路は、カメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを（例えば、通信インターフェース１１３を介して）ロボットに出力することにより、ロボットアームの配置を制御する。例えば、後続する画像は、カメラによって取り込まれた（例えば、自動的に又はカメラコマンドに応じて取り込まれた）包装品又は他の物体の画像とすることができる。１つの例では、ステップ４１３は、変換関数及び後続する画像を用いて物体−ワールド関係（例えば、行列
【数４８】
2020144829.tif 000050
）を求めることを含むことができ、この関係を使用して、包装品に対するロボットアーム又はロボットの他の構成要素の配置を制御する移動コマンドを生成することができる。
【００５３】
一実施形態では、（仮想立方体の上に又は仮想立方体を通して分散された位置までキャリブレーションパターンを移動させる）ステップ４０５において使用される仮想立方体は、カメラ視野（例えば、５１０）内に収まる（例えば、完全に収まる）ことができる最大仮想立方体とすることができる。一実施形態では、ステップ４０５において、仮想立方体の全ての角位置までロボットアームがキャリブレーションパターンを移動させることができる場合（例えば、そうした場合にのみ）、最大仮想立方体が使用される。そうでない場合、ステップ４０５に対して、より小さい仮想立方体を使用することができる。例えば、方法４００の１つの実施形態では、ステップ４０１は、ステップ４０５の前に実施され、制御回路１１１が、カメラのカメラ視野内に収まる第１の仮想立方体を求めることを含む。図７は、第１の仮想立方体６４９の一例を示し、それは、場合により、カメラのカメラ視野に収まることができる最大仮想立方体とすることができる。その場合、制御回路１１１は、（例えば、ロボット４５０の）ロボットアームが第１の仮想立方体の全ての角位置までキャリブレーションパターンを移動させることができるか否かを判断することができる。ロボットアームがそのようにすることができる場合、ステップ４０３及び４０５において仮想立方体として、第１の仮想立方体を使用することができる。
【００５４】
場合により、制御回路１１１は、ロボットアームが、第１の仮想立方体６４９の１つ以上の角位置までキャリブレーションパターンを移動させることができないと判断する場合がある。例えば、制御回路１１１は、ロボットアームが、第１の仮想立方体６４９の６つの角位置までしかキャリブレーションパターンを移動させることができないと判断する場合があり、第１の仮想立方体６４９の第７の角位置又は第８の角位置までキャリブレーションパターンを移動させることができない場合がある。こうした判断は、キャリブレーションパターンを第７の角位置及び第８の角位置の近くに配置することができない可能性を反映する。こうした状況では、第１の仮想立方体６４９が、キャリブレーションパターンがカメラによって撮影される位置を求めるために使用される場合、キャリブレーションパターンを第７の角位置及び第８の角位置の近くに移動させることができないため、カメラは、第７の角位置及び第８の角位置の近くでキャリブレーションパターンのキャリブレーション画像を取り込むことができない可能性がある。この状況により、カメラキャリブレーションに利用可能なキャリブレーション画像の多様性が低減する可能性があり、それにより、カメラキャリブレーションの精度又はロバスト性が低下する可能性がある。したがって、制御回路１１１は、ロボットアームが第１の仮想立方体６４９の少なくとも１つの角位置までキャリブレーションパターンを移動させることができないという判断に応じて、第１の仮想立方体６４９より小さい（例えば、２０％小さい）第２の仮想立方体６５０を求めることができる。ロボットアームが、第２の仮想立方体６５０の全ての角位置までキャリブレーションパターンを移動させることができる場合、第２の仮想立方体６５０は、ステップ４０３及び４０５の仮想立方体として使用することができる。
【００５５】
一実施形態では、制御回路は、ロボットアームが特定の位置までキャリブレーションパターンを移動させることができるか否かを、物理的な物体（例えば、電源ケーブル）がロボットアームからその位置までの経路を妨げているか否かを検出することに基づき、判断することができる。一実施形態では、ロボットアームが、単に到達することができない幾つかの位置がある可能性があり、その理由は、そうした位置が、ロボットのベースから遠すぎるため、又は、ロボットアームがその物理的構造によりその位置まで移動することが妨げられるためである。例えば、ロボットアームは、ロボットアームを構成している１つ以上のリンクのサイズ、１つ以上のリンクの向き、１つ以上のリンクを接続するジョイントにより何度の自由度が与えられるか、又は他の何らかの制約により、妨げられる可能性がある。一実施形態では、制御回路は、ロボットアームを実際に移動させることなく、上記判断を行うことができる。別の実施形態では、制御回路は、ロボットアームを介して特定の位置までキャリブレーションアームを移動させるように実際に試み、こうした試みが成功するか否かを判断することにより、上記判断を行うことができる。
【００５６】
一実施形態では、ステップ４０５に対して、各角位置において、ロボットアームがカメラに対する角度の定義された範囲内にあるようにキャリブレーションパターンを傾けることができる場合、特定の仮想立方体が使用される。場合により、ステップ４０５に対して、上に列挙した条件が満足される場合にのみ、特定の仮想立方体が使用される。例えば、カメラキャリブレーションは、キャリブレーションパターンとカメラとの間の角度が０度〜４５度の範囲内にあるキャリブレーション画像のみを使用することができる。したがって、一実施形態では、ステップ４０１は、制御回路１１１が、ロボットアームが第１の仮想立方体６４９の全ての角位置までキャリブレーションパターンを移動させることができるか否かと、第１の仮想立方体６４９の全ての角位置のうちの各角位置において、カメラに対する角度の定義された範囲内にある角度までキャリブレーションパターンを傾けることができるか否かとを判断することを含むことができる。制御回路が、ロボットアームが第１の仮想立方体６４９の１つ以上の角位置までキャリブレーションパターンを移動させることができないか、又は、ロボットアームが、第１の仮想立方体６４９の少なくとも１つの角位置において、カメラに対する角度の定義された範囲内にある角度までキャリブレーションパターンを傾けることができないと判断した場合、制御回路１１１は、第２の仮想立方体６５０の全ての角位置を求めることができる。上記条件が満足される場合、ステップ４０５に対して、第２の仮想立方体６５０を使用することができる。
【００５７】
一実施形態では、制御回路１１１は、キャリブレーションパターンの画像に基づき、焦点パラメーターの値と露出パラメーターの値とを求めるように構成することができる。場合により、この確定は、ステップ４０１の前に実施することができる。例えば、制御回路１１１は、ステップ４０１の前にキャリブレーションパターンの第１のキャリブレーション画像を取り込むようにカメラを制御し、キャリブレーションパターンの少なくとも１つのパターン要素（例えば、ドット）の強度のレベル及びコントラストのレベルを求めるように構成することができる。制御回路１１１は、第１のキャリブレーション画像におけるパターン要素のうちの少なくとも１つの強度のレベル及びコントラストのレベルのうちの少なくとも一方に基づき、カメラの露出パラメーター（例えば、絞り、シャッタースピード又はＩＳＯ）及び焦点パラメーターのそれぞれの値を求めるように構成することができる。その場合、これらのパラメーターのそれぞれの値は、カメラが、ステップ４０７においてキャリブレーションパターンのキャリブレーション画像を取り込むために使用することができる。
【００５８】
上述したように、カメラキャリブレーションは、キャリブレーションパターン４６０の画像等、キャリブレーション画像に基づくことができる。一実施形態では、キャリブレーションパターン４６０は、平坦なキャリブレーションボードに印刷することができる。キャリブレーションボードは、カーボンファイバー等、温度によって誘発される反りに対して耐性がある材料から形成することができる。図８Ａは、キャリブレーションパターン４６０の一例を示し、それは、矩形格子の仮想直線格子線（４６３１〜４６３５及び４６５１〜４６５５）に沿って配置されている複数のパターン要素４６１１〜４６１２５を含むことができる。例えば、仮想格子線は、一様に間隔を空けて配置された直線４６３１〜４６３５の第１の組と、一様に間隔を空けて配置された直線４６５１〜４６５５の第２の組とを含むことができ、仮想格子線４６３１〜４６３５の第１の組は、仮想格子線４６５１〜４６５５の第２の組に対して直交している。一実施形態では、パターン要素４６１１〜４６１２５の各々は円形ドットとすることができる。一実施形態では、パターン要素４６１１〜４６１２５は、サイズが異なる場合がある。例えば、パターン要素４６１８、４６１１３及び４６１１４は、第１の直径を有し、残りの全てのパターン要素は、第１の直径より小さい第２の直径を有する。一実施形態では、複数のパターン要素４６１１〜４６１２５は、定義されたサイズ（複数の場合もある）とそれらの間の定義された間隔とを有する。例えば、第１の直径及び第２の直径は、キャリブレーションパターン４６０のメーカー（例えば、キャリブレーションボード製造業者）によって定義された値とすることができ、カメラキャリブレーション中に既知の値とすることができる。さらに、複数のパターン要素４６１１〜４６１２５は、格子線４６５１〜４６５５に沿って定義された距離Δｄ１を有し、格子線４６３１〜４６３５に沿って定義された距離Δｄ２を有することができ、それらの定義された距離は、カメラキャリブレーション中に既知の値とすることができる。一実施形態では、Δｄ１はΔｄ２に等しい。一実施形態では、パターン要素４６１１〜４６１２５は、全て同じサイズ（例えば、同じ直径）を有することができ、キャリブレーションパターン４６０は、キャリブレーションパターン４６０の向きを示す特徴（例えば、回転非対称形状）を更に含むことができる。
【００５９】
上述したように、パターン座標系は、キャリブレーションパターン４６０等のキャリブレーションパターンに対して定義することができる。一実施形態では、パターン要素４６１１３等、キャリブレーションパターン４６０の中心にある又は中心に近いパターン要素が、キャリブレーション座標系の原点を定義することができる。この実施形態では、
【数４９】
2020144829.tif 000051
軸は、仮想格子線４６３１〜４６３５に位置合せすることができ、
【数５０】
2020144829.tif 000052
軸は、仮想格子線４６５１〜４６５５に位置合せすることができ、
【数５１】
2020144829.tif 000053
軸は、キャリブレーションパターン４６０によって形成された平面に対して直交する。
【００６０】
パターン要素は、直線仮想線に沿って配置されているが、レンズ歪みの影響により、キャリブレーション画像では湾曲経路に沿って配置されているように見える可能性がある。例えば、図８Ｂは、キャリブレーション画像がレンズ歪みの影響を含む、キャリブレーションパターン４６０に対するキャリブレーション画像の一例を示す。例えば、キャリブレーションパターン４６０におけるパターン要素は、矩形格子の直線に沿って配置されているが、レンズ歪みにより、パターン要素は、湾曲経路に沿って配置されているかのように見える可能性がある。より詳細に後述するように、カメラキャリブレーションは、キャリブレーション画像における湾曲の検出に基づき、１つの歪みパラメーター又は一組の歪みパラメーターの推定値を求めることができる。
【００６１】
上述したように、カメラキャリブレーションの一態様は、後述する固有キャリブレーションフェーズ（固有キャリブレーションの実施とも呼ぶ）を含むことができる。一実施形態では、固有キャリブレーションは、歪みパラメーター及び射影行列等、図１Ａ／図３Ｂ／図５Ａのカメラ１７０／３７０／４７０の固有カメラパラメーターに対してそれぞれの推定値を求めることを含むことができる。
【００６２】
一実施形態では、射影行列は、値がスカラー値から形成された行列である、固有カメラパラメーターとすることができる。例えば、カメラ１７０／３７０／４７０の射影行列Ｋは、９個のスカラー値から構成された３×３行列として定義することができる。上述したように、射影行列の一例は以下の通りである。
【数５２】
2020144829.tif 000054
【００６３】
一実施形態では、射影行列は、以下のように、カメラのカメラ視野内のパターン要素の座標
【数５３】
2020144829.tif 000055
を、パターン要素がキャリブレーション画像に現れるピクセル座標
【数５４】
2020144829.tif 000056
に射影する線形変換又は他の写像を定義する。
【数５５】
2020144829.tif 000057
【００６４】
上記関係は、レンズ歪みがないと想定することができる。上記例では、ベクトル［Ｘ／Ｚ  Ｙ／Ｚ  １］Ｔは、カメラ座標系における同次３Ｄ座標であり、ベクトル［ｕ  ｖ  １］Ｔは、画像センサー座標系における同次３Ｄ座標である。
【００６５】
一実施形態では、パターン要素のピクセル座標
【数５６】
2020144829.tif 000058
は、キャリブレーション画像におけるパターン要素の中心の推定値を指すことができる。例えば、パターン要素が、キャリブレーション画像において円形ドットとして現れる場合、ピクセル座標は、円形ドットの中心とすることができる。状況により、パターン要素は、キャリブレーションパターン上では実際には円形ドットであっても、キャリブレーション画像において楕円形として現れる場合がある。このように現れるのは、カメラとキャリブレーションパターンとの間の角度に起因する可能性がある。これらの状況では、パターン要素のピクセル座標は、楕円形の幾何学的中心とはわずかに異なる可能性がある。
【００６６】
一実施形態では、ｆｘ、ｆｙ、Ｃｘ及びＣｙの各々は、射影行列の成分とすることができ、値がスカラー値である固有カメラパラメーターでもあり得る。上述したように、パラメーターｆｘ及びｆｙは、カメラの焦点距離とＸ又はＹ方向における画像センサーのピクセルサイズとに基づくスケールファクターとすることができる。パラメーターＣｘ及びＣｙは、画像センサー座標系で表される画像中心のピクセル座標とすることができる。
【００６７】
一実施形態では、歪みパラメーターは、歪み関数のパラメーターとすることができる。より具体的には、カメラのレンズ歪みは、カメラの視野内の
【数５７】
2020144829.tif 000059
に実際に位置するパターン要素を、そのパターン要素が
【数５８】
2020144829.tif 000060
に位置するかのように見えるようにする、１つ以上の関数ｄｘ及びｄｙとしてモデル化することができる。このモデルでは、射影行列Ｋは、
【数５９】
2020144829.tif 000061
ではなく
【数６０】
2020144829.tif 000062
に適用される。この現象は、以下のように表すことができる。
【数６１】
2020144829.tif 000063
【００６８】
上記例では、Ｘ／Ｚ及びＹ／Ｚは、
【数６２】
2020144829.tif 000064
及び
【数６３】
2020144829.tif 000065
としてより単純に書かれる。非線形歪み関数ｄｘが、
【数６４】
2020144829.tif 000066
及び
【数６５】
2020144829.tif 000067
の関数として
【数６６】
2020144829.tif 000068
を求めることができ、非線形歪み関数ｄｙが、
【数６７】
2020144829.tif 000069
及び
【数６８】
2020144829.tif 000070
の関数として
【数６９】
2020144829.tif 000071
を求めることができる。場合により、固有カメラパラメーターは、歪み関数ｄｘ又はｄｙにおけるパラメーターとすることができ、その場合、固有カメラパラメーターは、歪みパラメーターと呼ぶことができる。
【００６９】
一実施形態では、歪み関数は、多項式歪みモデルに基づくことができ、そこでは、
【数７０】
2020144829.tif 000072
である。
【００７０】
上記例では、
【数７１】
2020144829.tif 000073
である。さらに、この例における固有カメラパラメーターは、ｋ１、ｋ２、ｋ３、ｐ１、ｐ２を含むことができ、それらの各々は、より具体的には、歪みパラメーターと呼ぶことができる。場合により、歪みパラメーターのうちの幾つか又は全てが、スカラー値である値を有することができる。
【００７１】
一実施形態において、歪み関数は、有理歪みモデルに基づくことができ、そこでは、
【数７２】
2020144829.tif 000074
である。
【００７２】
上記例では、
【数７３】
2020144829.tif 000075
であり、ｋ１、ｋ２、ｋ３、ｋ４、ｋ５、ｋ６、ｐ１及びｐ２の各々は固有カメラパラメーター、より具体的には歪みパラメーターである。
【００７３】
一実施形態では、歪み関数は、視野モデルに基づくことができ、そこでは、
【数７４】
2020144829.tif 000076
である。
【００７４】
上記例では、ωは、固有カメラパラメーター、より具体的には、値がスカラー値である歪みパラメーターである。
【００７５】
より詳細に後述するように、固有キャリブレーションフェーズの幾つかの事例は、歪みパラメーターの推定値を求めることを含むことができ、その推定値は、逆歪み関数
【数７５】
2020144829.tif 000077
及び
【数７６】
2020144829.tif 000078
に適用される場合、レンズ歪みの影響を補償することができる値とすることができる。例えば、逆歪み関数は、歪みパラメーターの推定値が適用されると、湾曲を示す画像（例えば、図８Ｂの画像）を、湾曲を低減させるか又はなくす「無歪み」画像に変換することができる。
【００７６】
図９Ａ及び図９Ｂは、カメラキャリブレーションを実施する方法例９００のフロー図を示し、カメラキャリブレーションは、固有キャリブレーションフェーズを含むことができる。本方法は、異なる段階において異なる固有カメラパラメーターの推定された値を求めることができる。方法９００は、例えば、図１Ａのロボット制御システム１１０の図１Ａの制御回路１１１によって実施することができる。上述したように、ロボット制御システム１１０は、図５Ａのロボット４５０等のロボット、及び、カメラ視野５１０を有する、図５Ａのカメラ４７０等のカメラと通信することができる。ロボット４５０は、図５Ａのキャリブレーションパターン４６０等のキャリブレーションパターンが配置されるロボットアームを有することができる。キャリブレーションパターン４６０は、図３Ｃ及び図８Ａに示すもの等、パターン座標系にそれぞれの定義されたパターン要素位置（例えば、パターン座標）を有する、図８Ａの複数のパターン要素４６１１〜４６１２５を含む。パターン座標系は、キャリブレーションパターン４６０の位置及び向きに関して定義された座標系とすることができる。例えば、図８Ａに示すように、パターン座標系は、座標軸
【数７７】
2020144829.tif 000079
、
【数７８】
2020144829.tif 000080
及び
【数７９】
2020144829.tif 000081
によって定義される。一実施形態では、パターン要素４６１１３は、パターン座標系の原点であり、その定義されたパターン要素位置は、パターン座標
【数８０】
2020144829.tif 000082
である。この実施形態では、パターン要素４６１１４の定義されたパターン要素位置は、例えば、
【数８１】
2020144829.tif 000083
であり、ここで、ｄ１は、既知である定義された値である。別の例として、パターン要素４６１８の定義されたパターン要素位置は、
【数８２】
2020144829.tif 000084
である。
【００７７】
一実施形態では、方法９００はステップ９０１で開始することができ、そこでは、制御回路１１１は、ロボットアームを制御して、カメラ視野（例えば、図５Ｂの５１０）内の少なくとも１つの位置までキャリブレーションパターン（例えば４６０）を移動させることができ、カメラ視野はカメラの視野（例えば、４７０）を指すことができる。場合により、ステップ９０１は、制御回路１１１が、ロボット制御システム１１０の通信インターフェース１１３に出力する移動コマンドを生成し、通信インターフェース１１３に移動コマンドを出力することを含むことができる。通信インターフェース１１３は、ロボットに移動コマンドを通信することができ、移動コマンドにより、ロボットアームは、カメラ視野における少なくとも１つの位置までキャリブレーションパターンを移動させることができる。一実施形態では、ステップ９０１は、図４のステップ４０１〜４０５と同様に実施することができる。
【００７８】
ステップ９０２において、制御回路１１１は、通信インターフェース１１３を介してカメラからキャリブレーション画像を取得するか又は他の方法で受け取り、キャリブレーション画像は、カメラによって取り込まれ、少なくとも１つの位置におけるキャリブレーションパターンの画像である。一実施形態では、ステップ９０２は、ステップ４０７と同様に実施することができる。一実施形態では、ステップ９０２は、制御回路１１１が、カメラコマンドを介して、図６Ａ〜図６Ｄ又は図８Ｂにおけるキャリブレーション画像のうちの１つ等、少なくとも１つの位置にあるキャリブレーションパターンに対応するキャリブレーション画像を取り込むように、カメラを制御することを含むことができる。
【００７９】
ステップ９０３において、制御回路１１１は、複数のパターン要素がキャリブレーション画像に現れるそれぞれの位置を示す複数の画像パターン要素位置（取り込まれたパターン要素位置とも呼ぶ）を求めることができる。例えば、パターン要素の各々は円形ドットである場合があり、特定の円形ドットの取り込まれた要素位置は、円形ドットがキャリブレーション画像に現れるピクセル座標［ｕ  ｖ］Ｔとすることができ、より具体的には、円形ドットの中心の推定されたピクセル座標とすることができる。
【００８０】
ステップ９０５において、制御回路１１１は、複数の画像パターン要素位置（例えば、一組の［ｕ  ｖ］Ｔ座標）に基づき、かつ定義されたパターン要素位置（例えば、一組の
【数８３】
2020144829.tif 000085
座標）に基づき、カメラの第１の固有カメラパラメーターの第１の推定値を求めることができる。場合により、カメラは、レンズ及び画像センサーを備え、第１の固有カメラパラメーターは、画像センサーへの画像射影を記述する射影行列とすることができる。例えば、第１の固有カメラパラメーターは射影行列Ｋとすることができる。場合により、第１の固有カメラパラメーターは、パラメーターｆｘ、ｆｙ、Ｃｘ及びＣｙのうちの１つ等、射影行列Ｋの成分とすることができる。
【００８１】
上述したように、射影行列Ｋは、様々なパターン要素の
【数８４】
2020144829.tif 000086
のそれぞれの既知の座標に基づき、かつ、様々なパターン要素がキャリブレーションパターンのキャリブレーション画像に現れるそれぞれの既知の［ｕ  ｖ］Ｔ座標に基づき、推定することができる。一実施形態では、［ｕ  ｖ］Ｔは、
【数８５】
2020144829.tif 000087
に関連することができる。この実施形態では、
【数８６】
2020144829.tif 000088
は、図３Ｂ及び図３Ｃに示すもの等の、パターン座標系とカメラ座標系との関係を記述する線形変換とすることができる。例えば、それは、以下の関係を反映することができる。
【数８７】
2020144829.tif 000089
【００８２】
場合により、
【数８８】
2020144829.tif 000090
は、回転行列Ｒ及び並進ベクトルｔを含むことができる。例えば、それは、以下の形式の４×４行列として書くことができる。
【数８９】
2020144829.tif 000091
【００８３】
一実施形態では、ステップ９０５は、複数のピクセル座標［ｕ  ｖ］Ｔ及びそれらの対応する座標
【数９０】
2020144829.tif 000092
に基づいて、Ｋ及び
【数９１】
2020144829.tif 000093
を解くことを含むことができる。一実施形態では、パースペクティブ−ｎポイント（perspective-n-point）アルゴリズムを用いて、
【数９２】
2020144829.tif 000094
の推定値を求めることができる。一実施形態では、このステップは、レンズ歪みも考慮することができ、歪みパラメーターの推定値を求めることができる。しかしながら、この推定された値は、ステップ９０５が実施された後に破棄することができ、又はより一般的には、方法９００の他のステップでは使用されない。一実施形態では、ステップ９０５は、開示内容が引用することにより全体として本明細書の一部をなす、Zhengyou Zhangによる「A Flexible New Technique for Camera Calibration」（Technical Report MSR-TR-98-71）において考察されている、カメラキャリブレーションアルゴリズム（Zhangのアルゴリズムとも呼ぶ）に基づいて実施することができる。より具体的には、Zhangのアルゴリズムは、［ｕ  ｖ］Ｔ及び
【数９３】
2020144829.tif 000095
座標を使用して、射影行列Ｋの推定値、
【数９４】
2020144829.tif 000096
行列の推定値、及び１つの歪みパラメーター又は一組の歪みパラメーターの推定値を求めることができる。この例では、射影行列Ｋの推定値は、より詳細に後述するステップ９０７に対して使用することができ、
【数９５】
2020144829.tif 000097
の推定された値及び／又は歪みパラメーター（複数の場合もある）の推定値は破棄される場合があり、又は、代替的に、上記推定値のうちの１つ以上は、より詳細に後述するように、ステップ９０７において、パラメーター値の初期推量として使用することもできる。
【００８４】
ステップ９０７において、制御回路は、第１の固有カメラパラメーターの第１の推定値に基づき、かつ、複数の画像パターン要素位置（取り込まれたパターン要素位置とも呼ぶ）に基づき、カメラの第２の固有カメラパラメーター（複数の場合もある）の第１の推定値を求めることができる。場合により、第２の固有カメラパラメーターは、レンズによってもたらされる歪みを記述する歪みパラメーターとすることができる。例えば、上述したように、第２の固有カメラパラメーターは、非線形歪み関数ｄｘ及びｄｙに対して使用される歪みパラメーターとすることができる。
【００８５】
一実施形態では、ステップ９０７において、制御回路は、（ａ）第２の固有カメラパラメーター（複数の場合もある）の初期推定値を求めることと、（ｂ）第２の固有カメラパラメーター（複数の場合もある）の初期推定値、射影行列の第１の推定値、及びキャリブレーション画像に基づき、レンズによってもたらされる歪みを補償するキャリブレーション画像の変更されたバージョンを生成することと、（ｃ）キャリブレーション画像の変更されたバージョンにおける湾曲の量を求めることと、（ｄ）キャリブレーション画像の変更されたバージョンにおける湾曲の量に基づき第２の固有カメラパラメーターの初期推定値を調整して、湾曲の量を低減させる第２の固有カメラパラメーターの調整された推定値を生成することであって、該調整された推定値は、第２の固有カメラパラメーターの第１の推定値であることとによって、第２の固有カメラパラメーター（複数の場合もある）（例えば、歪みパラメーター（複数の場合もある））の第１の推定値を求めることができる。一実施形態では、第２の固有カメラパラメーターに対する初期推定値は、ゼロ値又は一組のゼロ値を有することができる（例えば、上記歪み関数におけるｋ１、ｋ２、ｋ３、ｐ１及び／又はｐ２はゼロに等しい）。一実施形態では、第２の固有カメラパラメーターに対する初期推定値は、ステップ９０５の結果から得ることができる。例えば、ステップ９０５がZhangのアルゴリズムを使用する場合、このアルゴリズムは、第２の固有カメラパラメーターに対する推定値を出力することができ、この出力された推定値は、第２の固有カメラパラメーターの初期推定値としてステップ９０７に入力することができる。
【００８６】
一実施形態では、キャリブレーション画像の変更されたバージョンは、キャリブレーション画像におけるレンズ歪みを補償しようと試みるバージョンとすることができる。例えば、変更されたバージョンは、キャリブレーション画像に逆歪み関数
【数９６】
2020144829.tif 000098
及び
【数９７】
2020144829.tif 000099
を適用することにより生成することができる。1つの例では、カメラによって取り込まれるキャリブレーション画像は、パターン要素がキャリブレーション画像に現れる位置を表すピクセル座標［ｕ，ｖ］Ｔによって表すことができ、キャリブレーション画像の変更されたバージョンは、同じパターン要素が、当該変更されたバージョンにおいて現れる位置を表すピクセル座標
【数９８】
2020144829.tif 000100
によって表すことができる。この例では、ピクセル座標
【数９９】
2020144829.tif 000101
は、射影行列Ｋ及び逆歪み関数の推定値によって計算することができる。より具体的には、上述したように、射影行列の推定値を用いて、逆射影行列を求めることができ、それを用いて以下を求めることができる。
【数１００】
2020144829.tif 000102
【００８７】
さらに上述したように、上記結果を逆歪みに適用して、以下を求めることができる。
【数１０１】
2020144829.tif 000103
【００８８】
上記例では、パターン要素に対する
【数１０２】
2020144829.tif 000104
及び
【数１０３】
2020144829.tif 000105
は、レンズ歪みが適用される場合にパターン要素がカメラの視野において現れる場所に関連し、
【数１０４】
2020144829.tif 000106
及び
【数１０５】
2020144829.tif 000107
は、レンズ歪みに対する補償がある場合にパターン要素がカメラの視野において現れる場所に関連する。射影行列を
【数１０６】
2020144829.tif 000108
及び
【数１０７】
2020144829.tif 000109
に適用して、関係
【数１０８】
2020144829.tif 000110
に基づき、ピクセル座標
【数１０９】
2020144829.tif 000111
を求めることができる。
【００８９】
上記例では、逆歪み関数は、１つ以上の歪みパラメーターを含むことができる。１つ以上の歪みパラメーターに対する推定値は、レンズ歪みを最適に補償するように最適化することができる。より具体的には、推定値は、１つ以上の歪みパラメーターに対してそれぞれ１つ以上の推定された値を含むことができ、キャリブレーション画像の変更されたバージョンにおいて歪みの量を最小限にするか又は他の方法で低減させるように最適化することができる。例えば、制御回路１１１は、いずれの推定値がキャリブレーション画像の変更されたバージョンにおいて湾曲の量を最小限にするかを評価するために、キャリブレーション画像の異なる変更されたバージョンを生成するように、１つ以上の歪みパラメーターに対して異なる推定を試行することができ、湾曲の量は、湾曲スコアとして求めることができる。歪みパラメーターに対する最適な推定値は、歪みパラメーターの第１の推定値として扱うことができる。上述したように、キャリブレーションパターンは、場合により、直線格子線に沿って配置されるパターン要素を含むことができる。レンズ歪みにより、パターン要素は、キャリブレーション画像において、湾曲経路に沿って配置されているかのように見える可能性がある。歪みのないキャリブレーション画像の変更されたバージョンは、いかなる湾曲も示さない可能性があり、それにより、パターン要素は、キャリブレーション画像の変更されたバージョンにおいて、直線格子線に沿って配置されているかのように見える。
【００９０】
一実施形態では、直線当てはめ（line fitting）技法を用いて、キャリブレーション画像の変更されたバージョンにおける湾曲の量を求めることができる。例えば、キャリブレーションパターンにおける複数のパターン要素は、複数のドット（例えば、円形ドット）である場合がある。こうした場合、制御回路は、ステップ９０７において、キャリブレーション画像の変更されたバージョンにおいて複数のドットを通して（例えば、ドットのそれぞれの中心を通して）複数の直線を当てはめ、複数の直線のうちの各直線と、直線が当てはめられる複数のドットのうちのそれぞれのドット（例えば、ドットのそれぞれの中心）との間の距離に基づき、湾曲の量を求めることにより、湾曲の量を求めることができる。キャリブレーション画像の変更されたバージョンが歪んでいなかった場合、各直線は、その直線が当てはめられるドットとゼロの距離、又はより具体的には、ドットのそれぞれの中心とゼロの距離を有する。例えば、直線は、ドットのそれぞれの中心を通る。しかしながら、図１０Ａは、或る程度のレンズ歪みを示すキャリブレーション画像を示す。その結果、直線のうちの１つ以上は、その直線が当てはめられるドットの全てのそれぞれの中心は通らない。図１０Ｂは、図１０Ａのドットの一部に対する直線当てはめを示す。この図では、４つのドットを通して当てはめられる直線は、４つのドットのうち３つのドットのそれぞれの中心からずれている。湾曲の量は、当てはめられた直線から出ているそれぞれの矢印によって示すように、図１０Ｂにおける各ドットの中心と当てはめられた直線との間のそれぞれの距離に基づいて計算することができる。一実施形態では、キャリブレーション画像の変更されたバージョンに対する湾曲の量は、例えば、直線当てはめに関与する個々の直線に対するそれぞれの湾曲スコアの合計とすることができる、総湾曲スコアによって表すことができる。一実施形態では、ステップ９０７は、キャリブレーション画像の変更されたバージョンに対する総湾曲スコアを最小限にするように、複数の歪みパラメーターのそれぞれの推定された値を最適化することを含むことができ、変更されたバージョンは、推定された値に基づいて生成される。
【００９１】
図９Ｂに示すように、ステップ９０９において、制御回路１１１は、第２の固有カメラパラメーターの第１の推定値に基づき、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とを求めることができる。一実施形態では、ステップ９０９における判断はまた、複数の画像パターン要素位置と定義されたパターン要素位置とにも基づく。ステップ９０９において、第２の固有カメラパラメーターの第１の推定値を用いて、第１の固有カメラパラメーターの第１の推定値を精密化することができ、精密化された推定値は、第１の固有カメラパラメーターの第２の推定値である。上述したように、ステップ９０７において第２の固有カメラパラメーターは別個の段階で推定されるため、第２の固有カメラパラメーターのこの推定値は、第１の固有カメラパラメーターの第１の推定値及び第２の固有カメラパラメーターの第１の推定値が同じ段階で同時に求められる状況と比較して、より正確である可能性がある。一実施形態では、その後、第２の固有カメラパラメーターのこのより正確な推定値を用いて、第１の固有カメラパラメーターのより適切な更新された推定値を生成することができ、更新された推定値は、第１の固有カメラパラメーターの第２の推定値である。
【００９２】
一実施形態では、ステップ９０９において、Zhangのアルゴリズムを使用することができる。より具体的には、Zhangのアルゴリズムは、入力として、第２の固有カメラパラメーターに対する初期推量値を受け入れることができる。初期推量値は、Zhangのアルゴリズムに対する任意選択的な入力とすることができる。場合により、この任意選択的な入力は、ステップ９０５において使用されていない可能性がある。しかしながら、この任意選択的な入力はステップ９０９において使用することができ、そこでは、第２の固有カメラパラメーターの第１の推定値は、Zhangのアルゴリズムに対する初期推量値として適用され、Zhangのアルゴリズムは、複数の画像パターン要素位置と定義されたパターン要素位置とを更に使用して、第１の固有カメラパラメーターの第２の推定値を生成することができる。一実施態様では、Zhangのアルゴリズムは、第２の固有カメラパラメーターの第２の推定値を更に生成することができ、カメラ座標系とパターン座標との関係を記述する変換関数（例えば、
【数１１０】
2020144829.tif 000112
）の推定値を更に出力することができる。
【００９３】
ステップ９０１〜９０９は、カメラキャリブレーションプロセスの固有キャリブレーションフェーズの一部とすることができる。一実施形態では、固有キャリブレーションフェーズは、制御回路が、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とを用いて、パターン要素のシミュレートされた位置を求め、それらの推定値を調整して、パターン要素のシミュレートされた位置と実際の位置との差を最小限にする第３の推定値を生成する段階を更に含むことができる。
【００９４】
より具体的には、制御回路は、（ａ）第１の変換関数の推定値、第２の固有カメラパラメーターの第２の推定値、及び第１の固有カメラパラメーターの第２の推定値に基づいて、キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、（ｂ）シミュレートキャリブレーション画像とカメラによって取り込まれたキャリブレーション画像との差を求めることと、（ｃ）差に基づき、第２の固有カメラパラメーターの第２の推定値と第１の固有カメラパラメーターの第２の推定値とを調整して、差を低減させる、第２の固有カメラパラメーターの調整された推定値及び第１の固有カメラパラメーターの調整された推定値を生成することであって、第２の固有カメラパラメーターの調整された推定値は、第２の固有カメラパラメーターの第３の推定値であり、第１の固有カメラパラメーターの調整された推定値は、第１の固有カメラパラメーターの第３の推定値であることと、によって、第２の固有カメラパラメーターの第３の推定値と第１の固有カメラパラメーターの第３の推定値とを求めることができる。
【００９５】
一実施形態では、シミュレートキャリブレーション画像は、様々なパターン要素のシミュレートされたピクセル座標［ｕｓｉｍｕｌａｔｅｄ  ｖｓｉｍｕｌａｔｅｄ］Ｔを含むことができる。パターン要素に対するシミュレートされたピクセル座標は、固有カメラパラメーターの、例えば
【数１１１】
2020144829.tif 000113
のそれぞれの推定値に基づいてパターンが現れる場所を予測する、予測されたピクセル座標とすることができる。例えば、シミュレートされたピクセル座標は、以下の関係に基づくことができる。
【数１１２】
2020144829.tif 000114
【００９６】
上記例では、Ｋは、第１の固有カメラパラメーターの第２の推定値とすることができ、第１の固有カメラパラメーターの第３の推定値を見つけるように調整することができる。歪み関数ｄｘ及びｄｙは、第２の固有カメラパラメーター（複数の場合もある）の第２の推定値に基づくことができ、それは、第２の固有カメラパラメーターの第３の推定値を見つけるように調整することができる。さらに、
【数１１３】
2020144829.tif 000115
は、ステップ９０９から得られる推定値とすることができ、［Ｘ’  Ｙ’  Ｚ’］ｐａｔｔｅｒｎは、パターン座標系におけるパターン要素の既知の座標である。
【００９７】
上記例では、制御回路１１１は、それぞれのシミュレートされたピクセル座標と実際のピクセル座標との間の距離を計算することができ、シミュレートされたピクセル座標は、［Ｘ’  Ｙ’  Ｚ’］ｐａｔｔｅｒｎにおけるパターン要素がシミュレートキャリブレーション画像に現れる場所を表し、実際のピクセル座標は、パターン要素が、カメラによって取り込まれたキャリブレーション画像に実際に現れる場所を表す。制御回路１１１は、第１の固有カメラパラメーター（射影行列Ｋ）の第２の推定値と、第２の固有カメラパラメーター（複数の場合もある）（例えば、歪みパラメーター（複数の場合もある））の推定値と、
【数１１４】
2020144829.tif 000116
の推定値とを、距離が最小化する（例えば、ゼロに近づく）まで調整することにより、最適化を実施することができる。これらのパラメーターに対する調整された推定値は、それらの第３の推定値になることができる。一実施形態では、第１の固有カメラパラメーターの第３の推定値は、第１の固有カメラパラメーターの最終推定値とすることができ、第２の固有カメラパラメーターの第３の推定値は、第２の固有カメラパラメーターの最終推定値とすることができ、それにより、固有キャリブレーションフェーズの出力は、第１の固有カメラパラメーター及び第２の固有カメラパラメーターの第３の推定値とすることができる。
【００９８】
上述したように、カメラキャリブレーションは、固有キャリブレーションフェーズに加えてステレオキャリブレーションフェーズを含むことができる。例えば、システム１００Ａ等、２つ以上のカメラを含むシステムでは、ロボット制御システム１１０は、第１のカメラ及び第２のカメラと通信するように構成される。第１のカメラは、第１のカメラの位置及び向きに関して定義される第１のカメラ座標系を有することができ、第２のカメラは、第２のカメラの位置及び向きに関して定義される第２のカメラ座標系を有することができる。この例では、ロボット制御システム１１０の制御回路１１１は、第１のカメラ座標系と第２のカメラ座標系との関係を記述する関数（例えば、行列）を求めることにより、ステレオキャリブレーションフェーズを実施するように構成することができる。
【００９９】
例えば、ロボット制御システム１１０は、複数のカメラと通信する場合、複数のカメラの各々に対する固有カメラパラメーターの値を推定し、複数のカメラの互いに対する位置及び／又は互いに対するそれらの向きを推定するように構成することができる。一実施形態では、２つのカメラ（例えば、図１Ａの１７０及び１８０）の間の相対位置及び向きは、２つのカメラの間の並進ベクトル及び回転行列として表すことができる。
【０１００】
上述したように、カメラキャリブレーションは、ハンド−アイキャリブレーションフェーズを含むことができる。例えば、ステップ９１１において、制御回路１１１は、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とに基づき、カメラ座標系とワールド座標系との関係を記述する変換関数（例えば、
【数１１５】
2020144829.tif 000117
）の推定値を求めることができる。上述したように、カメラ座標系は、カメラの位置及び向きに関して定義される座標系とすることができ、ワールド座標系は、ロボットのベースに対して固定である位置に関して定義される座標系である。ステップ９１１は、固有カメラパラメーターの第２の推定値に直接基づくことができ、又は、それらの固有カメラパラメーターの第２の推定値に間接的に基づくことができる。例えば、ステップ９１１は、第１の固有カメラパラメーターの第３の推定値と第２の固有カメラパラメーターの第３の推定値とに直接基づくことができ、それらは、さらに、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とに基づく。こうした場合、ステップ９１１は、固有カメラパラメーターの第２の推定値に間接的に基づく。
【０１０１】
一実施形態では、
【数１１６】
2020144829.tif 000118
は、第１の変換関数の一例とすることができ、
【数１１７】
2020144829.tif 000119
は、第２の変換関数の一例とすることができる。場合により、第２の変換関数は、第１の変換関数に基づいて求めることができる。
【０１０２】
より具体的な例では、ハンド−アイキャリブレーションの目的は、（第３の変換関数の一例とすることができる）
【数１１８】
2020144829.tif 000120
及び
【数１１９】
2020144829.tif 000121
に基づき、（第４の変換関数の一例とすることができる）
【数１２０】
2020144829.tif 000122
及び
【数１２１】
2020144829.tif 000123
を求めることとすることができる。
【０１０３】
一実施形態では、ハンド−アイキャリブレーションは、以下の関係に基づくことができる。
【数１２２】
2020144829.tif 000124
【０１０４】
上記例では、
【数１２３】
2020144829.tif 000125
及び
【数１２４】
2020144829.tif 000126
は、ハンド−アイキャリブレーションフェーズの開始時に既知であるか又は求めることができる。例えば、
【数１２５】
2020144829.tif 000127
は、ロボット制御システム１１０がロボット（例えば、図１Ａの１５０）に通信した移動コマンドに基づいて求めることができる。１つの例では、移動コマンドは、ロボットのロボットアームを形成するリンクの回転をもたらすモーターコマンドとすることができ、
【数１２６】
2020144829.tif 000128
は、モーターコマンドによってもたらされる回転から求めることができる。一例では、
【数１２７】
2020144829.tif 000129
は、固有キャリブレーションフェーズから推定される射影行列Ｋに基づいて求めることができる。例えば、
【数１２８】
2020144829.tif 000130
は、以下の関係に基づく。
【数１２９】
2020144829.tif 000131
【０１０５】
上記例では、
【数１３０】
2020144829.tif 000132
は、パターン要素のカメラの視野における座標とすることができ、パターン要素が現れるキャリブレーション画像から、かつ、射影行列の推定値及び歪みパラメーターの推定値から推定することができる。場合により、
【数１３１】
2020144829.tif 000133
は、パースペクティブ−ｎポイント（perspective-n-point）アルゴリズムを使用して推定することができ、パースペクティブ−ｎポイントアルゴリズムは、射影行列の推定値とカメラの歪みパラメーター（複数の場合もある）の推定値とを用いて、
【数１３２】
2020144829.tif 000134
を求めることができる。射影行列及び歪みパラメーター（複数の場合もある）のこうした推定値は、固有キャリブレーションフェーズからのものとすることができ、又は、カメラの製造業者からの定義された値とすることができる。別の例では、
【数１３３】
2020144829.tif 000135
自体が、固有キャリブレーションフェーズの副産物とすることができる。例えば、固有キャリブレーションフェーズがZhangのアルゴリズムを使用する場合、アルゴリズムは、
【数１３４】
2020144829.tif 000136
の推定値を出力することができ、この推定値は、ハンド−アイキャリブレーションフェーズのために保存することができる。
【０１０６】
一実施形態では、方程式
【数１３５】
2020144829.tif 000137
は、未知の行列
【数１３６】
2020144829.tif 000138
及び
【数１３７】
2020144829.tif 000139
に対して非線形であり非凸である。非凸形式は、行列の値に対する異なる推量を通して反復することの有効性を制限する可能性があり、その理由は、反復により、大域的に最適ではなく局所的にのみ最適である解が導き出される可能性があるためである。したがって、ハンド−アイキャリブレーションフェーズの実施態様は、上記方程式を凸形式に再公式化することを含むことができる。一実施形態では、再公式化は、ベクトル化行列のクロネッカー積として上記方程式を書き換えることを含むことができる。
【０１０７】
より具体的には、上記方程式は、以下のように書き換えることができる。
【数１３８】
2020144829.tif 000140
【０１０８】
この方程式は、さらに、以下のように２つの方程式として書き換えることができる。
【数１３９】
2020144829.tif 000141
【０１０９】
上記方程式では、様々な回転行列及び並進ベクトルに対する命名は、以下のように書かれる。
【数１４０】
2020144829.tif 000142
【０１１０】
上記方程式は、上記行列及びクロネッカー積のベクトル化バージョンを使用して以下の方程式として書き換えることができる。
【数１４１】
2020144829.tif 000143
【０１１１】
上記例では、Ｉ３は３×３単位行列である。上記方程式は、線形かつ凸であり、それにより、ＲＸ、ｔＸ、ＲＺ、ｔＺの最適な値、すなわち、
【数１４２】
2020144829.tif 000144
を解くのを容易にすることができる。より具体的には、上記方程式において、項
【数１４３】
2020144829.tif 000145
及び
【数１４４】
2020144829.tif 000146
は、
【数１４５】
2020144829.tif 000147
及び
【数１４６】
2020144829.tif 000148
に属する成分を含むため、既知とすることができる。したがって、上記方程式は、未知の項である
【数１４７】
2020144829.tif 000149
を解くことができる。上述したように、方程式の線形及び凸の性質により、この未知の項を解くことをより容易にすることができ、未知の項の解は、
【数１４８】
2020144829.tif 000150
及び
【数１４９】
2020144829.tif 000151
の成分であるＲＸ、ｔＸ、ＲＺ、ｔＺを再構築するために使用することができる。
【０１１２】
一実施形態では、上記方程式に対する解により、完全回転行列ではないＲＸ及びＲＺが導き出される可能性があり、その理由は、それらが各々、互いに直交ではない列ベクトルを含む可能性があるためである。この実施形態では、制御回路１１１は、ＲＸから、互いに直交する列ベクトルを有する行列
【数１５０】
2020144829.tif 000152
を導出することができる。同様に、制御回路１１１は、ＲＺから、互いに直交する列ベクトルを有する回転行列
【数１５１】
2020144829.tif 000153
を導出することができる。一実施形態では、制御回路１１１は、直交プロクラステス問題を解くことに基づき、この演算を実施することができ、それは、非直交行列ＲＸ（フロベニウスノルムに関する）に最も近い直交行列
【数１５２】
2020144829.tif 000154
を見つけることと、非直交行列ＲＺに最も近い直交行列
【数１５３】
2020144829.tif 000155
を見つけることとを含む。場合により、これは、特異値分解を介して行うことができ、それは、
【数１５４】
2020144829.tif 000156
がＲＸに等しいような行列ＣＸ及びＤＸを見つけることと、Σが対角行列である場合、
【数１５５】
2020144829.tif 000157
がＲＺに等しいような行列ＣＺ及びＤＺを見つけることとを含むことができる。この実施形態では、
【数１５６】
2020144829.tif 000158
は、
【数１５７】
2020144829.tif 000159
として求めることができ、
【数１５８】
2020144829.tif 000160
は、
【数１５９】
2020144829.tif 000161
として求めることができる。
【０１１３】
一実施形態では、制御回路１１１は、直交行列
【数１６０】
2020144829.tif 000162
及び
【数１６１】
2020144829.tif 000163
を使用して、並進ベクトルｔＸ及びｔＺを更に更新することができる。更新された並進ベクトルは、
【数１６２】
2020144829.tif 000164
及び
【数１６３】
2020144829.tif 000165
と呼ぶことができる。幾つかの実施態様では、更新は、上記方程式ＲＺｔＢ−ＲＡｔＸ＋ｔＺ＝ｔＡを使用するが、ＲＺの代わりに
【数１６４】
2020144829.tif 000166
を使用し、ｔＸの代わりに
【数１６５】
2020144829.tif 000167
を使用し、ｔＺの代わりに
【数１６６】
2020144829.tif 000168
を使用することにより、行うことができる。結果として得られる方程式は、
【数１６７】
2020144829.tif 000169
として表すことができ、それは、
【数１６８】
2020144829.tif 000170
と書き換えることができる。上記方程式は、
【数１６９】
2020144829.tif 000171
及び
【数１７０】
2020144829.tif 000172
に対して解くことができる。結果として得られる回転行列及び並進ベクトルは、
【数１７１】
2020144829.tif 000173
及び
【数１７２】
2020144829.tif 000174
の推定値を形成することができ、それらは、
【数１７３】
2020144829.tif 000175
として表すことができる。
【０１１４】
一実施形態では、ハンド−アイキャリブレーションフェーズは、上記パラメーターを使用してキャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、シミュレートキャリブレーション画像と、キャリブレーションパターンの実際の画像である実際のキャリブレーション画像との差を最小限にするように、上記パラメーターの値を調整することとを含むことができる。より具体的には、制御回路１１１は、第４の変換関数（例えば、
【数１７４】
2020144829.tif 000176
）の推定値、第３の変換関数（例えば、
【数１７５】
2020144829.tif 000177
）の推定値、第２の変換関数（例えば、
【数１７６】
2020144829.tif 000178
）の推定値に基づき、かつ、第１の固有カメラパラメーター（例えば、射影行列Ｋ）の第２の推定値に（直接又は間接的に）基づき、キャリブレーションパターンのシミュレートキャリブレーション画像を求めることができる。シミュレートキャリブレーション画像は、例えば、パターン要素がシミュレートキャリブレーション画像に現れる場所のピクセル座標
【数１７７】
2020144829.tif 000179
、パターン要素に対するシミュレートされた座標は、パターン要素が上記変換関数のそれぞれの推定値に基づくキャリブレーション画像に現れる場所を予測する、予測された座標とすることができる。例えば、シミュレートされたピクセル座標は、以下の関係に基づいて計算することができる。
【数１７８】
2020144829.tif 000180
【０１１５】
一実施形態では、シミュレートキャリブレーション画像は、レンズ歪みの影響を考慮する必要はない。別の実施形態では、シミュレートキャリブレーション画像は、Ｘ／Ｚ及びＹ／Ｚに歪み関数を適用することによる等、レンズ歪みの影響を考慮する。
【０１１６】
一実施形態では、シミュレートキャリブレーション画像は、カメラによって取り込まれた実際のキャリブレーション画像の変更されたバージョンと比較することができる。変更されたバージョンは、カメラのレンズによってもたらされる歪みを補償することができる。より具体的には、実際のキャリブレーション画像は、パターン要素のピクセル座標［ｕ，ｖ］Ｔによって表すことができ、レンズ歪みを示す可能性がある。キャリブレーション画像の変更されたバージョンは、パターン要素のピクセル座標
【数１７９】
2020144829.tif 000181
によって表すことができ、レンズ歪みの影響を補償することができる。上述したように、キャリブレーション画像の変更されたバージョンは、以下の関係に基づいて求めることができる。
【数１８０】
2020144829.tif 000182
【０１１７】
一実施形態では、制御回路１１１は、シミュレートキャリブレーション画像におけるパターン要素のシミュレートされたピクセル座標と、カメラによって取り込まれるキャリブレーション画像の変更されたバージョンにおける対応するパターン要素のピクセル座標との（例えば、
【数１８１】
2020144829.tif 000183
【数１８２】
2020144829.tif 000184
との）差を求めることができる。一実施形態では、差は、
【数１８３】
2020144829.tif 000185
として求められる距離として表すことができる。
【０１１８】
一実施形態では、制御回路１１１は、少なくとも、第４の変換関数（例えば、
【数１８４】
2020144829.tif 000186
）の推定値と、第２の変換関数（例えば、
【数１８５】
2020144829.tif 000187
）の推定値とを調整して、シミュレートキャリブレーション画像とキャリブレーション画像の変更されたバージョンとの差を低減させることができる。例えば、制御回路１１１は、
【数１８６】
2020144829.tif 000188
及び
【数１８７】
2020144829.tif 000189
の成分のそれぞれの値を調整し、調整された行列に基づいて
【数１８８】
2020144829.tif 000190
を再計算し、再計算された
【数１８９】
2020144829.tif 000191
に基づいて距離を求めることができる。制御回路１１１は、上記距離を最小限にするように調整を繰り返すことができる。一実施形態では、制御回路１１１は、シミュレートキャリブレーション画像における誤差を最小限にするように上記行列を調整することができ、誤差は、（ａ）キャリブレーション画像の変更されたバージョンにおける全てのパターン要素のそれぞれのピクセル座標と、（ｂ）シミュレートキャリブレーション画像における同じ対応するパターン要素のそれぞれのピクセルとの間のそれぞれの距離の和とすることができる。一実施形態では、調整は、ネルダー−ミード（Nelder-Mead）アルゴリズム、ブロイデン−フレッチャー−ゴールドファーブ−シャンノ（ＢＦＧＳ：Broyden-Flecher-Goldfarb-Shanno）アルゴリズム及び最急降下法アルゴリズム等、制約なし非線形最適化問題を解く最適化アルゴリズムに基づくことができる。一実施形態では、上記最適化は、
【数１９０】
2020144829.tif 000192
、Ｋ及び／又は１つ以上の歪みパラメーターのそれぞれの値に対する調整も含むことができる。一実施形態では、最適化の結果は、ハンド−アイキャリブレーションフェーズに対する最終推定値（例えば、
【数１９１】
2020144829.tif 000193
及び／又は
【数１９２】
2020144829.tif 000194
の最終推定値）とすることができる。
【０１１９】
図９Ｂに戻ると、方法９００は、ステップ９１１の後に実施されるステップ９１３を含むことができる。ステップ９１３では、制御回路１１１は、カメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを（例えば、通信インターフェース１１３を介して）ロボットに出力することにより、ロボットアームの配置を制御することができる。例えば、後続する画像は、コンベヤベルト上の包装品又はカメラ視野内の別の物体の画像とすることができる。カメラは、自動的に、又は、制御回路１１１によって生成され通信インターフェースを介してカメラに通信されるカメラコマンドに応じて、後続する画像を取り込むことができる。一実施形態では、制御回路１１１は、変換関数（例えば、
【数１９３】
2020144829.tif 000195
）の推定値に基づき、後続する移動コマンドを生成することができる。例えば、
【数１９４】
2020144829.tif 000196
を使用して、撮影された物体（例えば、包装品）と、物体と相互作用するロボットとの関係を、以下の関係に基づいて求めることができる。
【数１９５】
2020144829.tif 000197
【０１２０】
上記方程式では、
【数１９６】
2020144829.tif 000198
は、カメラキャリブレーションから求められ、
【数１９７】
2020144829.tif 000199
は、場合により、マシンビジョンアルゴリズムから求めることができる。本明細書で考察するカメラキャリブレーションは、
【数１９８】
2020144829.tif 000200
のより正確な推定値等、より正確なキャリブレーション情報を生成するため、このキャリブレーション情報は、
【数１９９】
2020144829.tif 000201
のより正確な推定値をもたらすことができ、それにより、ロボットが、物体とのよりロバストな相互作用を提供するように制御されるのを可能にすることができる。
【０１２１】
図１１Ａは、カメラキャリブレーションの固有キャリブレーションフェーズの一実施形態を示す別の図を提供する。場合により、図１１Ａの動作は、例えば、図１Ａのロボット制御システム１１０の図１Ａの制御回路１１１によって実施することができる。一実施形態では、固有キャリブレーションフェーズは、段階０を含み、そこでは、複数のキャリブレーション画像が受け取られ、当該キャリブレーション画像はキャリブレーションパターンの画像である。キャリブレーションパターンは、ロボットのロボットアームに固定して取り付けることができ、パターンドットであるパターン要素を有することができる。パターンドットの各々は、定義されたパターン要素位置を有することができ、それは、この例では、３Ｄパターン座標
【数２００】
2020144829.tif 000202
とすることができる。複数のキャリブレーション画像のうちの各キャリブレーション画像に対して、パターンドットの各々はまた、画像パターン要素位置（取り込まれたパターン要素位置とも呼ぶ）を有することもでき、それは、この例では、２Ｄピクセル座標とすることができる。一実施形態では、固有キャリブレーションフェーズの段階０は、パターン座標系におけるパターンドットのそれぞれの３Ｄパターン座標を求めることと、パターンドットが複数のキャリブレーション画像において現れる２Ｄピクセル座標を求めることとを含む。
【０１２２】
一実施形態では、固有キャリブレーションフェーズの段階１は、パターンドットの３Ｄパターン座標及び２Ｄピクセル座標を、射影行列Ｋ、変換関数
【数２０１】
2020144829.tif 000203
及び歪み関数の歪みパラメーターに対するそれぞれの値を推定するアルゴリズムに入力することを含む。例えば、段階１は、Zhangのアルゴリズムを用いて、射影行列Ｋの第１の推定値を生成することができる。この例では、Zhangのアルゴリズム又は他の何らかのアルゴリズムはまた、同じ段階において、
【数２０２】
2020144829.tif 000204
の推定値及び歪みパラメーターのそれぞれの値もまた求めることができるが、これらの推定値は、次の段階に対して破棄するか又は他の方法で無視することができる。一実施形態では、Zhangのアルゴリズムは、任意選択的な入力として、１つ以上のそれぞれの歪みパラメーターに対する１つ以上の推量値を有することができる。しかしながら、図１１Ａの例では、この任意選択的な入力は段階１では使用されない。
【０１２３】
一実施形態では、固有キャリブレーションフェーズの段階２は、射影行列Ｋの第１の推定値を線直線化（line straightening）アルゴリズムに入力することを含み、線直線化アルゴリズムは、歪みパラメーターの第１の推定値、又は、一組の歪みパラメーターのそれぞれの推定値の第１の組を生成することができる。一実施形態では、線直線化アルゴリズムは、方法９００のステップ９０７に関してかつ図１０Ａ及び図１０Ｂに関して上述した操作を含むことができる。
【０１２４】
一実施形態では、固有キャリブレーションフェーズの段階３は、歪みパラメーターの第１の推定値（又は、複数の歪みパラメーターのそれぞれの推定値の第１の組）を使用して、射影行列Ｋの第２の推定値、歪みパラメーターの第２の推定値（又は、複数の歪みパラメーターのそれぞれの推定値の第２の組）及び
【数２０３】
2020144829.tif 000205
の推定値を生成することを含む。場合により、段階３において、Zhangのアルゴリズムが再度使用される。しかしながら、この段階は、上述した任意選択的な入力として歪みパラメーターの第１の推定値（又は、複数の歪みパラメーターのそれぞれの推定値の第１の組）を使用することができ、任意選択的な入力は、Zhangのアルゴリズムからのより正確な出力をもたらす推量とすることができる。
【０１２５】
一実施形態では、固有キャリブレーションフェーズの段階４は、射影行列の第３の推定値と歪みパラメーターの第３の推定値（又は、複数の歪みパラメーターに対するそれぞれの推定値の第３の組）とを求めることを含む。図１１Ａに示すように、段階４は、オプティマイザーを用いて実施することができる。上述したように、オプティマイザーによって実施される最適化は、
【数２０４】
2020144829.tif 000206
の推定値、Ｋの第２の推定値、及び歪みパラメーターの第２の推定値に基づき、キャリブレーションパターンのシミュレートキャリブレーション画像を求めることと、シミュレートキャリブレーション画像とキャリブレーションパターンの実際のキャリブレーション画像との差を最小限にするように第２の推定値を調整することとを含むことができる。
【０１２６】
図１１Ａの上記実施形態では、段階１における
【数２０５】
2020144829.tif 000207
の推定値及び／又は歪みパラメーターのそれぞれの値は、次の段階に対して破棄するか又は他の方法で無視することができる。別の実施形態では、段階１に続く任意の段階に対して、上記推定値のうちの１つ以上を使用することができる。例えば、図１１Ｂに示すように、段階１における歪みパラメーター値の推定値は、固有キャリブレーションフェーズの段階２における歪みパラメーター値の初期推量として使用することができる。さらに、図１１Ｂにおいて、
【数２０６】
2020144829.tif 000208
の推定値を用いて、図１２のハンド−アイキャリブレーションフェーズの段階２においてハンド−アイキャリブレーションを実施することができる。
【０１２７】
図１２は、カメラキャリブレーションのハンド−アイキャリブレーションフェーズの実施形態例を示す図であり、これもまた、図１Ａのロボット制御システム１１０によって実施することができる。場合により、ハンド−アイキャリブレーションフェーズは、図１１Ａの固有キャリブレーションフェーズの後に実施される。一実施形態では、ハンド−アイキャリブレーションフェーズの段階１は、
【数２０７】
2020144829.tif 000209
及び
【数２０８】
2020144829.tif 000210
の推定値を求めることを含む。場合により、
【数２０９】
2020144829.tif 000211
は、例えば、ロボットのロボットアームの複数のモーターに対するそれぞれの回転量を示すセンサー値を含むことができる、モーター読取値に基づく。場合により、
【数２１０】
2020144829.tif 000212
は、画像処理アルゴリズムに基づき、射影行列Ｋの最終推定値と歪みパラメーターの最終推定値（又は、複数の歪みパラメーターの推定値の最終の組）に基づくことができる。一例では、
【数２１１】
2020144829.tif 000213
は、図１１Ｂの固有キャリブレーションフェーズの段階１からのものとすることができる。
【０１２８】
一実施形態では、ハンド−アイキャリブレーションフェーズの段階２は、
【数２１２】
2020144829.tif 000214
及び
【数２１３】
2020144829.tif 000215
を求めることを含む。この判断は、例えば、方程式
【数２１４】
2020144829.tif 000216
を解くことを含むことができる。
【０１２９】
一実施形態では、ハンド−アイキャリブレーションフェーズの段階３は、少なくとも
【数２１５】
2020144829.tif 000217
及び
【数２１６】
2020144829.tif 000218
の推定値を調整することを含む。この調整は、キャリブレーションパターンのシミュレートキャリブレーション画像とキャリブレーションパターンの実際のキャリブレーション画像との差を最小限にすることに基づいて最適化を実施することができる、オプティマイザーによって実施することができる。シミュレートキャリブレーション画像は、上述したように、
【数２１７】
2020144829.tif 000219
に基づくことができる。一実施形態では、
【数２１８】
2020144829.tif 000220
及び
【数２１９】
2020144829.tif 000221
の調整された推定値は、ハンド−アイキャリブレーションフェーズのその最終推定値とすることができる。
【０１３０】
様々な実施形態の簡単な説明
本開示の実施形態Ａ１は、通信インターフェース及び制御回路を備えるロボット制御システムに関する。通信インターフェースは、ロボット及びカメラ視野を有するカメラと通信するように構成され、ロボットは、ベースと、キャリブレーションパターンが配置されているロボットアームとを有する。制御回路は、ａ）カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、ｂ）仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めることと、ｃ）通信インターフェースを介してロボットに移動コマンドを出力することにより、仮想立方体の上に又は仮想立方体を通して分散される複数の位置までキャリブレーションパターンを移動させるようにロボットアームを制御することと、ｄ）通信インターフェースを介してカメラから複数のキャリブレーション画像を受け取ることであって、複数のキャリブレーション画像は、カメラによって取り込まれ、複数の位置におけるキャリブレーションパターンのそれぞれの画像であることと、ｅ）複数のキャリブレーション画像に基づき、固有カメラパラメーターのそれぞれの推定値を求めることと、ｆ）固有カメラパラメーターのそれぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、カメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、ロボットのベースに対して固定である位置に関して定義された座標系であることとにより、カメラキャリブレーションを実施するように構成される。制御回路は、カメラキャリブレーションが実施された後、通信インターフェースを介してカメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを、通信インターフェースを介してロボットに出力することにより、ロボットアームの配置を制御するように、更に構成される。
【０１３１】
実施形態Ａ２は、実施形態Ａ１のロボット制御システムを含み、複数の位置は、仮想立方体の上に又は仮想立方体を通して一様に分散されている。
【０１３２】
実施形態Ａ３は、実施形態Ａ２のロボット制御システムを含み、複数の位置は、該複数の位置のうちの隣接する位置の間に、仮想立方体の縁に沿って測定される一様の間隔を有する。
【０１３３】
実施形態Ａ４は、実施形態Ａ１〜Ａ３のうちの任意の１つのロボット制御システムを含み、制御回路は、ロボットアームが仮想立方体の全ての角位置までキャリブレーションパターンを移動させることができるという判断に応じて、複数の位置までキャリブレーションパターンを移動させるようにロボットアームを制御するように構成されている。
【０１３４】
実施形態Ａ５は、実施形態Ａ４のロボット制御システムを含み、制御回路は、（ａ）ロボットアームが、仮想立方体の全ての角位置までキャリブレーションパターンを移動させることができるという判断、及び（ｂ）ロボットアームが、仮想立方体の全ての角位置のうちの各角位置において、カメラに対する角度の定義された範囲内にある角度までキャリブレーションパターンを傾けることができるという判断に応じてのみ、複数の位置までキャリブレーションパターンを移動させるようにロボットアームを制御するように構成されている。
【０１３５】
実施形態Ａ６は、実施形態Ａ５のロボット制御システムを含み、仮想立方体は、制御回路によって求められる第２の仮想立方体である。この実施形態では、制御回路は、カメラ視野内に収まる第１の仮想立方体を求めるように更に構成される。制御回路は、ロボットアームが、第１の仮想立方体の１つ以上の角位置までキャリブレーションパターンを移動させることができないと判断するか、又は、ロボットアームが、第１の仮想立方体の１つ以上の角位置に対して、カメラに対する角度の定義された範囲内にある角度までキャリブレーションパターンを傾けることができないと判断するように更に構成される。制御回路は、（ａ）ロボットアームが第１の仮想立方体の１つ以上の角位置までキャリブレーションパターンを移動させることができないという判断、又は（ｂ）ロボットアームが、第１の仮想立方体の１つ以上の角位置に対して、カメラに対する角度の定義された範囲内にある角度までキャリブレーションパターンを傾けることができないという判断のうちの少なくとも一方に応じて、第２の仮想立方体の全ての角位置を求めるように構成される。
【０１３６】
実施形態Ａ７は、実施形態Ａ６のロボット制御システムを含み、第１の仮想立方体は、カメラ視野内に収まることができる最大サイズの仮想立方体であり、第２の仮想立方体は、第１の仮想立方体より小さい。
【０１３７】
実施形態Ａ８は、実施形態Ａ１〜Ａ７のうちの任意の１つのロボット制御システムを含み、複数の位置は厳密にｎ３個の位置を含み、ｎは２以上の整数である。
【０１３８】
実施形態Ａ９は、実施形態Ａ１〜Ａ８のうちの任意の１つのロボット制御システムを含み、制御回路は、移動コマンドを介して、仮想立方体の上に又は仮想立方体を通して一様に分散される複数の位置に対してカメラに対する異なるそれぞれの角度までキャリブレーションパターンを傾けるように、ロボットアームを制御するように構成され、それにより、複数のそれぞれのキャリブレーション画像は、カメラに対する異なるそれぞれの角度におけるキャリブレーションパターンを取り込む。
【０１３９】
実施形態Ａ１０は、実施形態Ａ１〜Ａ９のうちの任意の１つのロボット制御システムを含み、キャリブレーションパターンは複数のパターン要素を含み、制御回路は、複数のキャリブレーション画像が受け取られる前にカメラから第１のキャリブレーション画像を受け取るように構成され、第１のキャリブレーション画像は、キャリブレーションパターンの画像であり、複数のそれぞれのキャリブレーション画像が取り込まれる前にカメラによって取り込まれる。制御回路は、第１のキャリブレーション画像におけるパターン要素のうちの少なくとも１つの強度のレベル及びコントラストのレベルを求め、第１のキャリブレーション画像におけるパターン要素のうちの少なくとも１つの強度のレベル及びコントラストのレベルのうちの少なくとも一方に基づき、カメラの露出パラメーター及び焦点パラメーターのそれぞれの値を求めるように更に構成されている。複数のそれぞれのキャリブレーション画像は、当該露出パラメーター及び焦点パラメーターのそれぞれの値を備えたカメラによって取り込まれる。
【０１４０】
実施形態Ａ１１は、実施形態Ａ４〜Ａ１０のうちの任意の１つのロボット制御システムを含み、制御回路は、仮想立方体を複数の非オーバーラップ領域に分割することにより、かつ、複数の位置のそれぞれの位置を複数の非オーバーラップ領域の各領域となるように割り当てることにより、複数の位置を求めるように構成されている。
【０１４１】
実施形態Ａ１２は、実施形態Ａ４〜Ａ１１のうちの任意の１つのロボット制御システムを含み、制御回路は、一連の反復にわたり複数の位置を求めるように構成され、該複数の位置のうちの第１の位置は、仮想立方体内の任意の位置として求められ、かつ、一連の反復のうちの第１の反復の間に求められ、仮想立方体は、第１の反復を実施するために使用される第１の領域を形成する。この実施形態では、残りの反復に対するそれぞれの位置は、該残りの反復の各々に対し、（ａ）先行する反復を実施するために使用された領域を、互いにオーバーラップしない第１の半分領域及び第２の半分領域に分割することであって、該第１の半分領域及び該第２の半分領域の各々は、現反復を実施するために使用される領域であることと、（ｂ）第１の半分領域及び第２の半分領域のうちのいずれが先行する位置を含むかを判断することであって、該先行する位置は、先行する反復において求められた複数の位置のそれぞれの位置であることと、（ｃ）現位置として、第１の半分領域及び第２の半分領域のうちの他方における任意の位置を求めることであって、現位置は、現反復に対して求められる複数の位置のうちの１つの位置であることとを実施することにより、求められる。
【０１４２】
実施形態Ａ１３は、ロボット制御を実施する方法に関する。この実施形態では、方法は、ａ）ロボット制御システムにより、カメラ視野を示す情報を求めることであって、ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、カメラ視野はカメラの視野であることと、ｂ）ロボット制御システムにより、カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、ｃ）ロボット制御システムにより、仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めることと、ｄ）ロボット制御システムにより、通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、ロボットに移動コマンドを通信して、ロボットアームに対し、仮想立方体の上に又は仮想立方体を通して分散される複数の位置までキャリブレーションパターンを移動させるように構成されることと、ｅ）ロボット制御システムにより、通信インターフェースから複数のキャリブレーション画像を受け取ることであって、該通信インターフェースは、カメラから複数のキャリブレーション画像を受け取るように構成され、該複数のキャリブレーション画像は、カメラにより取り込まれ、複数の位置におけるキャリブレーションパターンの複数のそれぞれの画像であることと、ｆ）ロボット制御システムにより、複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、ｇ）ロボット制御システムにより、固有カメラパラメーターのそれぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、通信インターフェースが通信するように構成されるカメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、通信インターフェースが通信するように構成されるロボットのベースに対して固定である位置に関して定義される座標系であることと、ｈ）ロボット制御システムにより、通信インターフェースから後続する画像を受け取ることであって、該通信インターフェースは、固有カメラパラメーターのそれぞれの推定値と変換関数の推定値とを求めた後、カメラから後続する画像を受け取るように構成されることと、ｉ）ロボット制御システムにより、後続する画像に基づき、かつ、変換関数の推定値に基づき、後続する移動コマンドを生成することと、ｊ）ロボット制御システムにより、通信インターフェースに後続する移動コマンドを出力することであって、該通信インターフェースは、ロボットアームの配置を制御するようにロボットに後続する移動コマンドを通信するように構成されることとを含む。
【０１４３】
実施形態Ａ１４は、ロボット制御システムの制御回路によって実行されると、制御回路に対して、ａ）カメラ視野を示す情報を求めることであって、ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、カメラ視野はカメラの視野であることと、ｂ）カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、ｃ）仮想立方体の上に又は仮想立方体を通して分散される複数の位置を求めることと、ｄ）通信インターフェースに移動コマンドを出力することであって、通信インターフェースは、ロボットに移動コマンドを通信して、ロボットアームに対し、仮想立方体の上に又は仮想立方体を通して分散される複数の位置までキャリブレーションパターンを移動させるように構成されることと、ｅ）通信インターフェースから複数のキャリブレーション画像を受け取ることであって、通信インターフェースは、カメラから複数のキャリブレーション画像を受け取るように構成され、複数のキャリブレーション画像は、カメラにより取り込まれ、複数の位置におけるキャリブレーションパターンの複数のそれぞれの画像であることと、ｆ）複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、ｇ）固有カメラパラメーターのそれぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、通信インターフェースが通信するように構成されるカメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、通信インターフェースが通信するように構成されるロボットのベースに対して固定である位置に関して定義される座標系であることとにより、カメラキャリブレーションを実施させる命令が記憶されている非一時的コンピューター可読媒体に関する。命令は、制御回路によって実行されると、制御回路に対し更に、通信インターフェースから後続する画像を受け取らせ、通信インターフェースは、固有カメラパラメーターのそれぞれの推定値と変換関数の推定値とを求めた後にカメラから後続する画像を受け取るように構成される。制御回路はまた、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを、通信インターフェースを介してロボットに出力することにより、ロボットアームの配置を制御するように構成される。
【０１４４】
実施形態Ｂ１は、通信インターフェース及び制御回路を備えるロボット制御システムに関する。通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボット、及びカメラ視野を有するカメラと通信するように構成される。キャリブレーションパターンは、パターン座標系においてそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、パターン座標系は、キャリブレーションパターンの位置及び向きに関して定義された座標系である。制御回路は、ａ）通信インターフェースを介してロボットに移動コマンドを出力することにより、カメラ視野内の少なくとも１つの位置までキャリブレーションパターンを移動させるようにロボットアームを制御することと、ｂ）通信インターフェースを介してカメラからキャリブレーション画像を受け取ることであって、キャリブレーション画像は、カメラによって取り込まれ、少なくとも１つの位置におけるキャリブレーションパターンの画像であることと、ｃ）複数のパターン要素がキャリブレーション画像に現れるそれぞれの位置を示す複数の画像パターン要素位置を求めることと、ｄ）複数の画像パターン要素位置に基づき、かつ、定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、ｅ）第１の固有カメラパラメーターの第１の推定値が求められた後、第１の固有カメラパラメーターの第１の推定値に基づき、かつ、複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、ｆ）第２の固有カメラパラメーターの第１の推定値に基づき、かつ、複数の画像パターン要素位置及び定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第２の推定値及び第２の固有カメラパラメーターの第２の推定値を求めることと、ｇ）第１の固有カメラパラメーターの第２の推定値及び第２の固有カメラパラメーターの第２の推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、カメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、ロボットのベースに対して固定である位置に関して定義された座標系であることとにより、カメラキャリブレーションを実施するように構成される。制御回路は、カメラキャリブレーションが実施された後、カメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドをロボットに出力することにより、ロボットアームの配置を制御するように更に構成される。
【０１４５】
実施形態Ｂ２は、実施形態Ｂ１のロボット制御システムを含み、変換関数は第２の変換関数であり、制御回路は、第１の固有カメラパラメーターの第２の推定値及び第２の固有カメラパラメーターの第２の推定値に基づき、パターン座標系とカメラ座標系との関係を記述する第１の変換関数の推定値を更に求めることにより、カメラキャリブレーションを実施するように構成され、第２の変換関数は第１の変換関数に基づいて求められる。
【０１４６】
実施形態Ｂ３は、実施形態Ｂ１又はＢ２のロボット制御システムを含み、カメラはレンズ及び画像センサーを備え、第１の固有カメラパラメーターは、画像センサー上の像射影を記述する射影行列であり、第２の固有カメラパラメーターは、レンズによってもたらされるレンズ歪みを記述する歪みパラメーターである。
【０１４７】
実施形態Ｂ４は、実施形態Ｂ１〜Ｂ３のうちの任意の１つのロボット制御システムを含む。この実施形態では、制御回路は、（ａ）第２の固有カメラパラメーターの初期推定値を求めることと、（ｂ）第２の固有カメラパラメーターの初期推定値、第１の固有カメラパラメーターの第１の推定値、及びキャリブレーション画像に基づき、レンズによってもたらされる歪みを補償するキャリブレーション画像の変更されたバージョンを生成することと、（ｃ）キャリブレーション画像の変更されたバージョンにおける湾曲の量を求めることと、（ｄ）キャリブレーション画像の変更されたバージョンにおける湾曲の量に基づき第２の固有カメラパラメーターの初期推定値を調整して、湾曲の量を低減させる第２の固有カメラパラメーターの調整された推定値を生成することであって、調整された推定値は第２の固有カメラパラメーターの第１の推定値であることとにより、第２の固有カメラパラメーターの第１の推定値を求めるように構成されている。
【０１４８】
実施形態Ｂ５は、実施形態Ｂ４のロボット制御システムを含み、キャリブレーションパターンにおける複数のパターン要素は複数のドットであり、制御回路は、キャリブレーション画像の変更されたバージョンにおける複数のドットを通して複数の直線を当てはめることと、複数の直線のうちの各直線と該直線が当てはめられる複数のドットのそれぞれのドットとの間のそれぞれの距離に基づき、湾曲の量を求めることとにより、湾曲の量を求めるように構成されている。
【０１４９】
実施形態Ｂ６は、実施形態Ｂ２〜Ｂ５のうちの任意の１つのロボット制御システムを含む。この実施形態では、制御回路は、（ａ）第１の変換関数の推定値、第２の固有カメラパラメーターの第２の推定値、及び第１の固有カメラパラメーターの第２の推定値に基づき、キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、（ｂ）シミュレートキャリブレーション画像とカメラによって取り込まれるキャリブレーション画像との差を求めることと、（ｃ）差に基づき第２の固有カメラパラメーターの第２の推定値及び第１の固有カメラパラメーターの第２の推定値を調整して、差を低減させる、第２の固有カメラパラメーターの調整された推定値及び第１の固有カメラパラメーターの調整された推定値を生成することであって、第２の固有カメラパラメーターの調整された推定値は該第２の固有カメラパラメーターの第３の推定値であり、第１の固有カメラパラメーターの調整された推定値は該第１の固有カメラパラメーターの第３の推定値であることとによって、第２の固有カメラパラメーターの第３の推定値及び第１の固有カメラパラメーターの第３の推定値を求めるように更に構成される。さらに、この実施形態では、第１の変換関数の推定値は、第２の固有カメラパラメーターの第３の推定値と第１の固有カメラパラメーターの第３の推定値とに基づいて求められる。
【０１５０】
実施形態Ｂ７は、実施形態Ｂ２〜Ｂ６のうちの任意の１つのロボット制御システムを含み、ロボットアームは、キャリブレーションパターンが配置されるリンクを備える。この実施形態では、制御回路は、さらに、ワールド座標系とリンク座標系との関係を記述する第３の変換関数の推定値を求めることであって、リンク座標系は、リンクにおける位置に関して定義された座標系であることと、パターン座標系とリンク座標系との関係を記述する第４の変換関数の推定値を求めることであって、第２の変換関数の推定値と第４の変換関数の推定値とは、ともに、第１の変換関数の推定値と第３の変換関数の推定値とに基づいて求められることとにより、カメラキャリブレーションを実施するように構成されている。
【０１５１】
実施形態Ｂ８は、実施形態Ｂ７のロボット制御システムを含み、制御回路は、さらに、ａ）第４の変換関数の推定値、第３の変換関数の推定値、第２の変換関数の推定値、及び第１の固有カメラパラメーターの第２の推定値に基づき、キャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、ｂ）第２の固有カメラパラメーターの第２の推定値に基づき、カメラのレンズによってもたらされる歪みを補償するように、該カメラによって取り込まれるキャリブレーション画像の変更されたバージョンを求めることと、ｃ）シミュレートキャリブレーション画像とキャリブレーション画像の変更されたバージョンとの差を求めることと、ｄ）シミュレートキャリブレーション画像とキャリブレーション画像の変更されたバージョンとの差を低減させるように、少なくとも第４の変換関数の推定値及び第２の変換関数の推定値を調整することとにより、カメラキャリブレーションを実施するように構成されている。
【０１５２】
実施形態Ｂ９は、実施形態Ｂ１〜Ｂ８のうちの任意の１つのロボット制御システムを含み、通信インターフェースが通信するように構成されているカメラは第１のカメラであり、カメラ座標系は第１のカメラ座標系であり、通信インターフェースは、第２のカメラと通信するように構成される。この実施形態では、制御回路は、第１のカメラ座標系と第２のカメラ座標系との関係を更に求めることによりカメラキャリブレーションを実施するように構成され、第２のカメラ座標系は、第２のカメラの位置及び向きに関して定義される。
【０１５３】
実施形態Ｂ１０は、ロボット制御を実施する方法であって、ａ）ロボット制御システムにより、該ロボット制御システムの通信インターフェースに出力する移動コマンドを生成することであって、該通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボットと通信するように構成され、カメラ視野を有するカメラと通信するように構成されることと、ｂ）ロボット制御システムにより、通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、ロボットに移動コマンドを通信して、ロボットアームがカメラ視野内の少なくとも１つの位置までキャリブレーションパターンを移動させるように構成されることと、ｃ）ロボット制御システムにより、通信インターフェースからキャリブレーション画像を受け取ることであって、該通信インターフェースは、カメラからキャリブレーション画像を受け取るように構成され、該キャリブレーション画像は、カメラ視野内の少なくとも１つの位置におけるキャリブレーションパターンの画像であり、該キャリブレーションパターンは、パターン座標系におけるそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、パターン座標系は、キャリブレーションパターンの位置及び向きに関して定義された座標系であることと、ｄ）ロボット制御システムにより、キャリブレーション画像から複数の画像パターン要素位置を求めることであって、該複数の画像パターン要素位置は、複数のパターン要素がキャリブレーション画像に現れるそれぞれの位置を示すことと、ｅ）ロボット制御システムにより、複数の画像パターン要素位置に基づき、かつ定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、ｆ）ロボット制御システムにより、第１の固有カメラパラメーターの第１の推定値が求められた後、第１の固有カメラパラメーターの第１の推定値に基づき、かつ複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、ｇ）ロボット制御システムにより、第２の固有カメラパラメーターの第１の推定値に基づき、かつ複数の画像パターン要素位置及び定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とを求めることと、ｈ）ロボット制御システムにより、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とに基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、通信インターフェースが通信するように構成されるカメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、通信インターフェースが通信するように構成されるロボットのベースに対して固定である位置に関して定義された座標系であることと、ｉ）ロボット制御システムにより、通信インターフェースから後続する画像を受け取ることであって、該通信インターフェースは、変換関数の推定値が求められた後にカメラから後続する画像を受け取るように構成されることと、ｊ）ロボット制御システムにより、後続する画像に基づき、かつ変換関数の推定値に基づき、後続する移動コマンドを生成することと、ｋ）ロボット制御システムにより、通信インターフェースに後続する移動コマンドを出力することであって、該通信インターフェースは、ロボットアームの配置を制御するようにロボットに後続する移動コマンドを出力するように構成されることとを含む、方法に関する。
【０１５４】
実施形態Ｂ１１は、ロボット制御システムの制御回路によって実行されると、制御回路に対してａ）ロボット制御システムの通信インターフェースに出力する移動コマンドを生成することであって、通信インターフェースは、ベースとキャリブレーションパターンが配置されているロボットアームとを有するロボットと通信し、かつカメラ視野を有するカメラと通信するように構成されることと、ｂ）通信インターフェースに移動コマンドを出力することであって、通信インターフェースは、ロボットに移動コマンドを通信して、ロボットアームがカメラ視野内の少なくとも１つの位置までキャリブレーションパターンを移動させるように構成されることと、ｃ）通信インターフェースからキャリブレーション画像を受け取ることであって、通信インターフェースは、カメラからキャリブレーション画像を受け取るように構成され、キャリブレーション画像は、カメラ視野内の少なくとも１つの位置におけるキャリブレーションパターンの画像であり、キャリブレーションパターンは、パターン座標系におけるそれぞれの定義されたパターン要素位置を有する複数のパターン要素を含み、パターン座標系は、キャリブレーションパターンの位置及び向きに関して定義された座標系であることと、ｄ）キャリブレーション画像から複数の画像パターン要素位置を求めることであって、複数の画像パターン要素位置は、複数のパターン要素が前記キャリブレーション画像に現れるそれぞれの位置を示すことと、ｅ）複数の画像パターン要素位置に基づき、かつ定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第１の推定値を求めることと、ｆ）第１の固有カメラパラメーターの第１の推定値が求められた後、第１の固有カメラパラメーターの第１の推定値に基づき、かつ複数の画像パターン要素位置に基づき、第２の固有カメラパラメーターの第１の推定値を求めることと、ｇ）第２の固有カメラパラメーターの第１の推定値に基づき、かつ複数の画像パターン要素位置及び定義されたパターン要素位置に基づき、第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とを求めることと、ｈ）第１の固有カメラパラメーターの第２の推定値と第２の固有カメラパラメーターの第２の推定値とに基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、カメラ座標系は、通信インターフェースが通信するように構成されるカメラの位置及び向きに関して定義された座標系であり、ワールド座標系は、通信インターフェースが通信するように構成されるロボットのベースに対して固定である位置に関して定義された座標系であることとにより、カメラキャリブレーションを実施させる命令が記憶されている非一時的コンピューター可読媒体に関する。命令は、制御回路によって実行されると、制御回路に対し更に、通信インターフェースから後続する画像を受け取らせ、通信インターフェースは、カメラキャリブレーションが実施された後、カメラから後続する画像を受け取り、後続する画像に基づきかつ変換関数の推定値に基づく後続する移動コマンドを、通信インターフェースを介してロボットに出力することにより、ロボットアームの配置を制御するように構成される。
【０１５５】
種々の実施形態を上述してきたが、これらの実施形態は、限定としてではなく本発明の単なる説明及び例として提示されていることを理解すべきである。形式及び細部における種々の変更は本発明の趣旨及び範囲から逸脱することなく本発明内で行うことができることは当業者には明らかであろう。したがって、本発明の範囲（breadth and scope）は、上述の例示的な実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物によってのみ規定されるべきである。本明細書において論考された各実施形態、及び本明細書において引用された各引用文献の各特徴は、他の任意の実施形態の特徴と組み合わせて用いることができることも理解されるであろう。本明細書において論考された全ての特許及び刊行物は、引用することによりその全体が本明細書の一部をなす。
【図１Ａ】
2020144829.tif 000222
【図１Ｂ】
2020144829.tif 000223
【図１Ｃ】
2020144829.tif 000224
【図２Ａ】
2020144829.tif 000225
【図２Ｂ】
2020144829.tif 000226
【図３Ａ】
2020144829.tif 000227
【図３Ｂ】
2020144829.tif 000228
【図３Ｃ】
2020144829.tif 000229
【図４】
2020144829.tif 000230
【図５Ａ】
2020144829.tif 000231
【図５Ｂ】
2020144829.tif 000232
【図５Ｃ】
2020144829.tif 000233
【図５Ｄ】
2020144829.tif 000234
【図５Ｅ】
2020144829.tif 000235
【図５Ｆ】
2020144829.tif 000236
【図６Ａ】
2020144829.tif 000237
【図６Ｂ】
2020144829.tif 000238
【図６Ｃ】
2020144829.tif 000239
【図６Ｄ】
2020144829.tif 000240
【図７】
2020144829.tif 000241
【図８Ａ】
2020144829.tif 000242
【図８Ｂ】
2020144829.tif 000243
【図９Ａ】
2020144829.tif 000244
【図９Ｂ】
2020144829.tif 000245
【図１０】
2020144829.tif 000246
【図１１Ａ】
2020144829.tif 000247
【図１１Ｂ】
2020144829.tif 000248
【図１２】
2020144829.tif 000249
【手続補正書】
【提出日】令和2年1月8日(2020.1.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロボットと通信し、かつカメラ視野を有するカメラと通信するように構成された通信インターフェースであって、前記ロボットは、ベースと、キャリブレーションパターンが配置されているロボットアームとを有する、通信インターフェースと、
制御回路であって、
前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記通信インターフェースを介して前記ロボットに移動コマンドを出力することにより、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御することと、
前記通信インターフェースを介して前記カメラから複数のキャリブレーション画像を受け取ることであって、該複数のキャリブレーション画像は、前記カメラによって取り込まれ、前記複数の位置における前記キャリブレーションパターンのそれぞれの画像であることと、
前記複数のキャリブレーション画像に基づき、固有カメラパラメーターのそれぞれの推定値を求めることと、
前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記ロボットの前記ベースに対して固定である位置に関して定義された座標系であることと、
により、カメラキャリブレーションを実施するように構成された制御回路と、
を備え、
前記制御回路は、前記カメラキャリブレーションが実施された後、前記通信インターフェースを介して前記カメラから後続する画像を受け取り、前記後続する画像に基づきかつ前記変換関数の前記推定値に基づく後続する移動コマンドを、前記通信インターフェースを介して前記ロボットに出力することにより、前記ロボットアームの配置を制御するように更に構成されている、ロボット制御システム。
【請求項２】
前記複数の位置は、前記仮想立方体の上に又は該仮想立方体を通して一様に分散されている、請求項１に記載のロボット制御システム。
【請求項３】
前記複数の位置は、該複数の位置のうちの隣接する位置の間に、前記仮想立方体の縁に沿って測定される一様の間隔を有する、請求項２に記載のロボット制御システム。
【請求項４】
前記制御回路は、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断に応じて、前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御するように構成されている、請求項１に記載のロボット制御システム。
【請求項５】
前記制御回路は、（ａ）前記ロボットアームが、前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断、及び（ｂ）前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるという判断に応じてのみ、前記複数の位置まで前記キャリブレーションパターンを移動させるように前記ロボットアームを制御するように構成されている、請求項４に記載のロボット制御システム。
【請求項６】
前記仮想立方体が、前記制御回路によって求められる第２の仮想立方体であり、前記制御回路は、
前記カメラ視野内に収まる第１の仮想立方体を求め、
前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないと判断するか、又は、前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないと判断する、
ように更に構成され、
前記制御回路は、（ａ）前記ロボットアームが前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないという判断、又は（ｂ）前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないという判断のうちの少なくとも一方に応じて、前記第２の仮想立方体の全ての角位置を求めるように構成されている、請求項５に記載のロボット制御システム。
【請求項７】
前記第１の仮想立方体は、前記カメラ視野内に収まることができる最大サイズの仮想立方体であり、前記第２の仮想立方体は、前記第１の仮想立方体より小さい、請求項６に記載のロボット制御システム。
【請求項８】
前記複数の位置は厳密にｎ３個の位置を含み、ｎは２以上の整数である、請求項１に記載のロボット制御システム。
【請求項９】
前記制御回路は、前記移動コマンドを介して、前記仮想立方体の上に又は該仮想立方体を通して一様に分散される前記複数の位置に対して前記カメラに対する異なるそれぞれの角度まで前記キャリブレーションパターンを傾けるように、前記ロボットアームを制御するように構成され、それにより、前記複数のそれぞれのキャリブレーション画像は、前記カメラに対する異なるそれぞれの角度における前記キャリブレーションパターンを取り込む、請求項１に記載のロボット制御システム。
【請求項１０】
前記キャリブレーションパターンは複数のパターン要素を含み、前記制御回路は、
前記複数のキャリブレーション画像が受け取られる前に前記カメラから第１のキャリブレーション画像を受け取り、該第１のキャリブレーション画像は、前記キャリブレーションパターンの画像であり、前記複数のそれぞれのキャリブレーション画像が取り込まれる前に前記カメラによって取り込まれ、
前記第１のキャリブレーション画像における前記パターン要素のうちの少なくとも１つの強度のレベル及びコントラストのレベルを求め、
前記第１のキャリブレーション画像における前記パターン要素のうちの少なくとも１つの前記強度のレベル及び前記コントラストのレベルのうちの少なくとも一方に基づき、前記カメラの露出パラメーター及び焦点パラメーターのそれぞれの値を求める、
ように構成され、
前記複数のそれぞれのキャリブレーション画像は、前記露出パラメーター及び前記焦点パラメーターの前記それぞれの値を備えた前記カメラによって取り込まれる、請求項１に記載のロボット制御システム。
【請求項１１】
前記制御回路は、前記仮想立方体を複数の非オーバーラップ領域に分割することにより、かつ、前記複数の位置のそれぞれの位置を前記複数の非オーバーラップ領域の各領域となるように割り当てることにより、前記複数の位置を求めるように構成されている、請求項１に記載のロボット制御システム。
【請求項１２】
前記制御回路は、一連の反復にわたり前記複数の位置を求めるように構成され、該複数の位置のうちの第１の位置は、前記仮想立方体内の任意の位置として求められ、かつ、前記一連の反復のうちの第１の反復の間に求められ、前記仮想立方体は、前記第１の反復を実施するために使用される第１の領域を形成し、
残りの反復に対するそれぞれの位置は、該残りの反復の各々に対し、（ａ）先行する反復を実施するために使用された領域を、互いにオーバーラップしない第１の半分領域及び第２の半分領域に分割することであって、該第１の半分領域及び該第２の半分領域の各々は、現反復を実施するために使用される領域であることと、（ｂ）前記第１の半分領域及び前記第２の半分領域のうちのいずれが先行する位置を含むかを判断することであって、該先行する位置は、前記先行する反復において求められた前記複数の位置のそれぞれの位置であることと、（ｃ）現位置として、前記第１の半分領域及び前記第２の半分領域のうちの他方における任意の位置を求めることであって、前記現位置は、前記現反復に対して求められる前記複数の位置のうちの１つの位置であることとを実施することにより、求められる、請求項１に記載のロボット制御システム。
【請求項１３】
ロボット制御を実施する方法であって、
ロボット制御システムにより、カメラ視野を示す情報を求めることであって、前記ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、前記カメラ視野は前記カメラの視野であることと、
前記ロボット制御システムにより、前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記ロボット制御システムにより、前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記ロボット制御システムにより、前記通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームに対し、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記ロボット制御システムにより、前記通信インターフェースから複数のキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記複数のキャリブレーション画像を受け取るように構成され、該複数のキャリブレーション画像は、前記カメラにより取り込まれ、前記複数の位置における前記キャリブレーションパターンの複数のそれぞれの画像であることと、
前記ロボット制御システムにより、前記複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、
前記ロボット制御システムにより、前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義される座標系であることと、
前記ロボット制御システムにより、前記通信インターフェースから後続する画像を受け取ることであって、該通信インターフェースは、前記固有カメラパラメーターの前記それぞれの推定値と前記変換関数の前記推定値とを求めた後、前記カメラから前記後続する画像を受け取るように構成されることと、
前記ロボット制御システムにより、前記後続する画像に基づき、かつ、前記変換関数の前記推定値に基づき、後続する移動コマンドを生成することと、
前記ロボット制御システムにより、前記通信インターフェースに前記後続する移動コマンドを出力することであって、該通信インターフェースは、前記ロボットアームの配置を制御するように前記ロボットに前記後続する移動コマンドを通信するように構成されることと、
を含む、方法。
【請求項１４】
前記複数の位置は、前記仮想立方体の上に又は該仮想立方体を通して一様に分散される、請求項１３に記載の方法。
【請求項１５】
前記複数の位置は厳密にｎ３個の位置を含み、ｎは２以上の整数である、請求項１４に記載の方法。
【請求項１６】
ロボット制御システムの制御回路によって実行されると、該制御回路に対して、
カメラ視野を示す情報を求めることであって、前記ロボット制御システムは、カメラと通信し、かつ、ベース、ロボットアーム及び該ロボットアームに配置されたキャリブレーションパターンを有するロボットと通信するように構成された通信インターフェースを備え、前記カメラ視野は前記カメラの視野であることと、
前記カメラ視野内に収まる仮想立方体の全ての角位置を求めることと、
前記仮想立方体の上に又は該仮想立方体を通して分散される複数の位置を求めることと、
前記通信インターフェースに移動コマンドを出力することであって、該通信インターフェースは、前記ロボットに前記移動コマンドを通信して、前記ロボットアームに対し、前記仮想立方体の上に又は該仮想立方体を通して分散される前記複数の位置まで前記キャリブレーションパターンを移動させるように構成されることと、
前記通信インターフェースから複数のキャリブレーション画像を受け取ることであって、該通信インターフェースは、前記カメラから前記複数のキャリブレーション画像を受け取るように構成され、該複数のキャリブレーション画像は、前記カメラにより取り込まれ、前記複数の位置における前記キャリブレーションパターンの複数のそれぞれの画像であることと、
前記複数のキャリブレーション画像に基づき固有カメラパラメーターのそれぞれの推定値を求めることと、
前記固有カメラパラメーターの前記それぞれの推定値に基づき、カメラ座標系とワールド座標系との関係を記述する変換関数の推定値を求めることであって、前記カメラ座標系は、前記通信インターフェースが通信するように構成される前記カメラの位置及び向きに関して定義された座標系であり、前記ワールド座標系は、前記通信インターフェースが通信するように構成される前記ロボットの前記ベースに対して固定である位置に関して定義される座標系であることと、
により、カメラキャリブレーションを実施させ、
前記通信インターフェースから後続する画像を受け取らせ、該通信インターフェースは、前記固有カメラパラメーターの前記それぞれの推定値と前記変換関数の前記推定値とを求めた後に前記カメラから前記後続する画像を受け取るように構成され、
前記後続する画像に基づきかつ前記変換関数の前記推定値に基づく後続する移動コマンドを、前記通信インターフェースを介して前記ロボットに出力することにより、前記ロボットアームの配置を制御させる、
命令が記憶されている非一時的コンピューター可読媒体。
【請求項１７】
前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるか否かを判断させ、前記複数の位置まで前記キャリブレーションパターンを移動させる前記移動コマンドは、前記ロボットアームが前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断に応じて出力される、請求項１６に記載の非一時的コンピューター可読媒体。
【請求項１８】
前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるか否かを判断させ、前記複数の位置まで前記キャリブレーションパターンを移動させる前記移動コマンドは、（ａ）前記ロボットアームが、前記仮想立方体の全ての角位置まで前記キャリブレーションパターンを移動させることができるという判断、及び（ｂ）前記ロボットアームが、前記仮想立方体の全ての角位置のうちの各角位置において、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができるという判断に応じて出力される、請求項１７に記載の非一時的コンピューター可読媒体。
【請求項１９】
前記仮想立方体は前記制御回路によって求められる第２の仮想立方体であり、前記命令は、前記制御回路により実行されると、さらに、前記制御回路に対し、
前記カメラ視野内に収まる第１の仮想立方体を求めさせ、
前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないと判断させるか、又は、前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないと判断させ、
前記第２の仮想立方体の全ての角位置を求めることは、（ａ）前記ロボットアームが前記第１の仮想立方体の１つ以上の角位置まで前記キャリブレーションパターンを移動させることができないという判断、又は（ｂ）前記ロボットアームが、前記第１の仮想立方体の１つ以上の角位置に対して、前記カメラに対する角度の定義された範囲内にある角度まで前記キャリブレーションパターンを傾けることができないという判断のうちの少なくとも一方にのみ応じる、請求項１８に記載の非一時的コンピューター可読媒体。
【請求項２０】
前記第１の仮想立方体は、前記カメラ視野内に収まることができる最大サイズの仮想立方体であり、前記第２の仮想立方体は、前記第１の仮想立方体より小さい、請求項１９に記載の非一時的コンピューター可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
上述したように、固有カメラパラメーターは、カメラ３７０の視野（そのカメラ視野とも呼ぶ）内の物体が、画像センサー上に像としていかに投影されるか、又はより具体的には、物体が配置されている様々な位置が画像センサーのピクセルアレイ上にいかに投影されるかを記述することができる。例えば、図３Ｂは、カメラ３７０Ａの外部の位置
【数１】
2020144829.tif 000250
を示し、ここで、Ｔという上付き文字は転置を指し、Ｃａｍｅｒａという下付き文字は、カメラ座標系において表現されているものとしてのＸ、Ｙ及びＺ座標を指す。より具体的には、カメラ３７０Ａは、カメラ３７０の一実施形態とすることができ、１つ以上のレンズ３７１Ａ及び画像センサー３７３Ａを備えることができる。カメラ３７０Ａの位置及び向きは、カメラ座標系を定義するために使用することができる。図３Ｂは、カメラ座標系を直交座標軸
【数２】
2020144829.tif 000251
によって定義されるように示す。座標軸は、カメラ３７０Ａの様々な構成要素の向きと位置合わせすることができる。例えば、
【数３】
2020144829.tif 000252
座標軸は、１つ以上のレンズ３７１Ａの光軸と等しくすることができる、カメラ３７０Ａのカメラ視野の中心軸と等しくすることができる。場合により、
【数４】
2020144829.tif 000253
及び
【数５】
2020144829.tif 000254
座標軸は、画像センサー３７３Ａの縁に対して平行とすることができる。さらに、カメラ座標系の原点は、１つ以上のレンズ３７１Ａのうちの１つのレンズの位置、カメラ３７０Ａの絞りの位置、又は別の位置（例えば、画像センサー３７３Ａの上、正面又は後方の位置）と等しくすることができる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
一実施形態では、ハンド−アイキャリブレーションフェーズは、上記パラメーターを使用してキャリブレーションパターンのシミュレートされた画像であるシミュレートキャリブレーション画像を求めることと、シミュレートキャリブレーション画像と、キャリブレーションパターンの実際の画像である実際のキャリブレーション画像との差を最小限にするように、上記パラメーターの値を調整することとを含むことができる。より具体的には、制御回路１１１は、第４の変換関数（例えば、
【数１７４】
2020144829.tif 000255
）の推定値、第３の変換関数（例えば、
【数１７５】
2020144829.tif 000256
）の推定値、第２の変換関数（例えば、
【数１７６】
2020144829.tif 000257
）の推定値に基づき、かつ、第１の固有カメラパラメーター（例えば、射影行列Ｋ）の第２の推定値に（直接又は間接的に）基づき、キャリブレーションパターンのシミュレートキャリブレーション画像を求めることができる。シミュレートキャリブレーション画像は、例えば、パターン要素がシミュレートキャリブレーション画像に現れる場所のピクセル座標
【数１７７】
2020144829.tif 000258
、パターン要素に対するシミュレートされた座標は、パターン要素が上記変換関数のそれぞれの推定値に基づくキャリブレーション画像に現れる場所を予測する、予測された座標とすることができる。例えば、シミュレートされたピクセル座標は、以下の関係に基づいて計算することができる。
【数１７８】
2020144829.tif 000259
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
一実施形態では、制御回路１１１は、シミュレートキャリブレーション画像におけるパターン要素のシミュレートされたピクセル座標と、カメラによって取り込まれるキャリブレーション画像の変更されたバージョンにおける対応するパターン要素のピクセル座標との（例えば、
【数１８１】
2020144829.tif 000260
【数１８２】
2020144829.tif 000261
との）差を求めることができる。一実施形態では、差は、
【数１８３】
2020144829.tif 000262
として求められる距離として表すことができる。
【外国語明細書】
2020144829.tif 000263
2020144829.tif 000264
2020144829.tif 000265
2020144829.tif 000266
2020144829.tif 000267
2020144829.tif 000268
2020144829.tif 000269
2020144829.tif 000270
2020144829.tif 000271
2020144829.tif 000272
2020144829.tif 000273
2020144829.tif 000274
2020144829.tif 000275
2020144829.tif 000276
2020144829.tif 000277
2020144829.tif 000278
2020144829.tif 000279
2020144829.tif 000280
2020144829.tif 000281
2020144829.tif 000282
2020144829.tif 000283
2020144829.tif 000284
2020144829.tif 000285
2020144829.tif 000286
2020144829.tif 000287
2020144829.tif 000288
2020144829.tif 000289
2020144829.tif 000290
2020144829.tif 000291
2020144829.tif 000292
2020144829.tif 000293
2020144829.tif 000294
2020144829.tif 000295
2020144829.tif 000296
2020144829.tif 000297
2020144829.tif 000298
2020144829.tif 000299
2020144829.tif 000300
2020144829.tif 000301
2020144829.tif 000302
2020144829.tif 000303
2020144829.tif 000304
2020144829.tif 000305
2020144829.tif 000306
2020144829.tif 000307
2020144829.tif 000308
2020144829.tif 000309
2020144829.tif 000310
2020144829.tif 000311
2020144829.tif 000312
2020144829.tif 000313
2020144829.tif 000314
2020144829.tif 000315
2020144829.tif 000316
2020144829.tif 000317
2020144829.tif 000318
2020144829.tif 000319
2020144829.tif 000320
2020144829.tif 000321
2020144829.tif 000322
2020144829.tif 000323
2020144829.tif 000324
2020144829.tif 000325
2020144829.tif 000326
2020144829.tif 000327
2020144829.tif 000328
2020144829.tif 000329
2020144829.tif 000330
2020144829.tif 000331
2020144829.tif 000332
2020144829.tif 000333
2020144829.tif 000334
2020144829.tif 000335
2020144829.tif 000336
2020144829.tif 000337
2020144829.tif 000338
2020144829.tif 000339
2020144829.tif 000340
2020144829.tif 000341
2020144829.tif 000342
2020144829.tif 000343
2020144829.tif 000344
2020144829.tif 000345
2020144829.tif 000346
2020144829.tif 000347
2020144829.tif 000348
2020144829.tif 000349
2020144829.tif 000350
2020144829.tif 000351
2020144829.tif 000352
2020144829.tif 000353
2020144829.tif 000354
2020144829.tif 000355
2020144829.tif 000356
2020144829.tif 000357
2020144829.tif 000358
2020144829.tif 000359
2020144829.tif 000360
2020144829.tif 000361
2020144829.tif 000362
2020144829.tif 000363
2020144829.tif 000364
2020144829.tif 000365
2020144829.tif 000366