以下の詳細な説明は、本質的に単に例示のものであり、本発明又は本発明の用途及び使用を限定することを意図するものではない。さらに、前出の技術分野、背景技術、発明の概要又は以下の詳細な説明において提示されるいかなる明示された又は暗示された理論によっても限定する意図はない。
本明細書に記載する実施形態は、倉庫、製造工場において、又は他の何らかの環境において使用されるロボット等、ロボットを制御するために使用されるキャリブレーション情報を検証及び/又は更新することに関する。より具体的には、キャリブレーション情報は、ロボット操作システムの制御を容易にするために実行されてもよく、システムキャリブレーションと呼ばれる場合があるキャリブレーション操作を実行することによって判断することができる。システムキャリブレーションは、カメラのキャリブレーション(カメラキャリブレーション若しくはカメラキャリブレーション操作と呼ばれる場合がある)、ロボットのキャリブレーション(ロボットキャリブレーションと呼ばれる場合がある)、ロボット操作システムの別の要素のキャリブレーション、又はそれらの任意の組み合わせを含むことができる。システムキャリブレーションは、例えば、ロボット制御システム(又は、ロボットコントローラーとも呼ばれる)によって実行されて、カメラによって取り込まれる(例えば、撮影される)画像に基づいて、ロボットを制御するロボット制御システムの能力を促進するキャリブレーション情報(例えば、カメラキャリブレーション情報)を生成することができる。例えば、ロボットは、倉庫において包装品を持ち上げるために使用される場合があり、そこでは、ロボットのロボットアーム又は他の構成要素の配置は、カメラによって取り込まれる包装品の画像に基づくことができる。その場合、キャリブレーション情報が、カメラキャリブレーション情報を含むと、カメラキャリブレーション情報は、例えば、ロボットのロボットアームに対する包装品の箇所及び向きを判断するために、包装品の画像とともに使用することができる。システムキャリブレーションが、カメラキャリブレーションを含む場合、カメラキャリブレーションは、カメラの固有パラメーター(内部パラメーターと呼ばれる場合もある)のそれぞれの推定値を判断することと、カメラとその外部環境との間の関係の推定値を判断することと、を含むことができる。カメラの固有パラメーターは、行列、ベクトル又はスカラー値等の1つ以上のパラメーター値を有することができる。さらに、固有パラメーターの例は、射影行列及びひずみパラメーターを含む。一例において、カメラキャリブレーションは、外部環境内の或る定位置(fixed position)に対するカメラの位置を特定することを含むことができ、それは、カメラと外部環境内の定位置との間の関係を表す変換関数(transformation function)として表すことができる。場合によっては、カメラキャリブレーションは、キャリブレーションパターンの助けを借りて実行することができ、キャリブレーションパターンは、キャリブレーションパターン上の規定された位置に配置されるパターン要素を有することができる。カメラはキャリブレーションパターンのパターン要素の画像(キャリブレーション画像とも呼ばれる)を取り込むことができ、カメラキャリブレーションは、パターン要素の画像をパターン要素の規定された位置と比較することに基づいて実行することができる。カメラキャリブレーションは、2019年3月7日出願の米国特許出願第16/295,940号(整理番号MJ0021US1)、発明の名称「METHOD AND DEVICE FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」においてより詳細に論じられており、その内容全体が参照により本明細書に組み込まれる。
上記で言及されたように、本開示の一態様は、早期の時点において実行されたカメラキャリブレーション又は他のキャリブレーション操作が、後の時点において依然として正確であることを検証することに関する。早期の時点において実行されるカメラキャリブレーションは、カメラの固有パラメーター、又はその時点におけるカメラとその外部環境との間の関係等の、その時点のカメラの特性を反映するカメラキャリブレーション情報を生成することができる。場合によっては、カメラの特性が経時的に変化する場合があるため、早期のカメラキャリブレーションは経時的に精度を維持できなくなる場合がある。第1の例において、カメラの固有パラメーターが経時的に変化する場合がある。そのような変化は、例えば、温度変化によって引き起こされる場合があり、温度変化が、カメラのハウジング及び/又はレンズの形状を変更する。第2の例において、カメラとその外部環境との間の関係が経時的に変化する場合がある。例えば、カメラが、例えば、ロボットのベース、又は倉庫内の位置に対して位置又は向きを変える場合がある。そのような変化は、例えば、カメラを搭載するために使用される任意の構成要素を膨張若しくは収縮させる温度変化、カメラに衝突する人若しくは他の物体、カメラの外部環境(例えば、倉庫)内の振動、カメラの自らの重量に起因する力(すなわち、重力によって)、又は何らかの他の要因によって引き起こされる場合がある。これらの変化によって、カメラキャリブレーション情報又は他のキャリブレーション情報が古くなる場合があり、このカメラキャリブレーション情報又は他のキャリブレーション情報を使用して、後の時点においてロボットアーム又はロボットの他の構成要素を位置決めする結果として、誤差が生じる恐れがある。言い換えると、カメラに関連付けられる特性が経時的に変化しているが、そのような変化を反映するようにカメラキャリブレーション情報が更新されない場合には、ロボットは、古くなったか、又は別の事情で不正確なカメラキャリブレーション情報に基づいて動作する場合があり、それにより、ロボットの動作に望ましくない誤差を引き起こす恐れがある。カメラの1つ以上の特性に変化が生じ得る可能性に対処するために、ロボット制御システムが、カメラキャリブレーションからのカメラキャリブレーション情報が、もはや十分に正確ではないとき(又は、より一般的に、キャリブレーション操作からのキャリブレーション情報が、もはや十分に正確ではないとき)を検出する、検証を自動的に実行することができる。そのような条件を検出することにより、カメラの特性における変化、又はロボット操作システムのいくつかの他の要素に関する指標を提供し得る。その検証が、キャリブレーション情報がもはや十分に正確でないことを検出する場合、ロボット制御システムは、キャリブレーション操作を実行して、カメラ又はロボット操作システムの別の要素のより最新の単数又は複数の特性を反映することができる、更新されたキャリブレーション情報を判断することができる。更新されたキャリブレーション情報を使用して、ロボットアームの配置、又はロボットの動作の何らかの他の態様を制御することができる。したがって、キャリブレーション情報の自動検証及び/又はキャリブレーション情報の更新を実行して、カメラ又はロボット操作システムの任意の他の要素と関連付けられる1つ以上の特性についての正確な情報に基づいて、ロボットが動作することを確実にする。
本明細書の実施形態の一態様は、カメラによって取り込まれた参照画像とカメラによって取り込まれた検証画像とを比較することによって、カメラに関するキャリブレーション情報を検証することに関する。場合によっては、参照画像は、物体が早期の時点において特定の位置にあるときに取り込まれた物体の画像とすることができ、検証画像は、同じ位置において後の時点において取り込まれたその物体の画像とすることができる。検証は、偏差が或る特定の閾値を超過するか否か等の、参照画像と検証画像との間の偏差が大きすぎるか否かを判断することができる。いくつかの実施態様において、物体は検証記号とすることができる。より具体的には、ロボットアーム又はロボットの他の構成要素が、キャリブレーション情報を検証するために使用される検証記号を有することができる。参照画像及び検証画像はいずれも、検証記号を取り込むか、又は別の方法で含むことができ、ロボット制御システムは、参照画像内の検証記号の外観を検証画像内の検証記号の外観と比較することによって2つの画像を比較することができる。例えば、ロボット制御システムが、特定の時点においてキャリブレーション情報を生成するキャリブレーション操作を実行した後に、ロボット制御システムは、検証記号をカメラの視野(カメラのカメラ視野とも呼ばれる)内の1組の所定の箇所まで動かすように、ロボットアームを(例えば、動作コマンドを介して)制御することができ、これらの箇所は、検証のための1組の参照箇所として使用することができる。カメラは、1組の参照箇所において、検証記号のそれぞれの参照画像を取り込むことができる。場合によっては、参照画像は、キャリブレーション操作が実行された直後に取り込むことができる。ロボットアームの動作、又はより具体的には、ロボットアームを動作させるために使用される動作コマンドは、実行されたばかりのキャリブレーション操作からのキャリブレーション情報に基づくことができるか、又はキャリブレーション情報から独立していることができる。場合によっては、参照画像は、ロボットがロボット操作(robot operation)を開始する前に取り込むことができる。参照画像が取り込まれた後に、ロボットは、作業を実行するためにロボット操作を開始する準備ができたと見なすことができ、ロボット制御システムは、例えば、カメラによって次に取り込まれる画像に基づいて、ロボットアームの位置決めを制御することができる。
上記で言及されたように、参照画像は、次に取り込まれる検証画像と比較することができる。一実施形態において、検証画像は、ロボット制御システムによって検出される1つ以上の休止期間中に取り込むことができる。より具体的には、ロボット操作が開始すると、ロボットはロボット作業(robot task)を実行し始めることができる(例えば、荷物又は他の物体との相互作用による)。ロボットがロボット操作を実行しているとき、ロボット制御システムは、ロボットに関する1つ以上の休止期間を検出することができる。場合によっては、休止期間は、ロボット操作中にロボットがロボット作業を実行していない期間とすることができる。場合によっては、ロボット制御システムは、ロボットが相互作用する必要がある物体を検出するか、又は別の方法で予測するのに基づいて、ロボット操作をスケジューリングすることができ、ロボットが相互作用する必要がある物体が存在しないことを検出するか、又は別の方法で予測するのに基づいて、休止期間を検出することができる。
休止期間(複数の場合もある)中に、ロボット制御システムは、ロボットアーム又はロボットの他の構成要素を(例えば、動作コマンドを介して)参照箇所まで動かし、各参照箇所において、それぞれの検証画像を(例えば、カメラコマンドを介して)取り込むように制御することができる。ロボットが、その上に配置される検証記号を有する場合、ロボット制御システムは、より具体的には、検証記号を参照箇所まで動かし、検証画像を取り込むようにロボットアームを制御することができる。その後、ロボット制御システムは、それぞれの参照箇所においてそれぞれの検証画像が対応する参照画像からどれだけ外れるかを判断することができる。場合によっては、検証画像とそれぞれの参照画像との間の偏差は、偏差パラメーターとして表すことができる。偏差パラメーターの値(偏差パラメーター値とも呼ばれる)が偏差パラメーターに関して規定された閾値(規定された偏差閾値と呼ばれる場合もある)を超過する場合には、ロボット制御システムは、さらなるキャリブレーション操作(例えば、さらなるカメラキャリブレーション)をさらに実行して、カメラに関する更新されたキャリブレーション情報(例えば、更新されたカメラキャリブレーション情報)を判断することができる。偏差パラメーターの値が規定された偏差閾値を超過するとき、この条件は、以前に生成されたキャリブレーション情報を使用すると、結果としてロボット操作に望ましくない量の誤差をもたらす恐れがあることを示し得る。したがって、場合によっては、さらなるキャリブレーション操作が実行される間、ロボット操作は中断又は停止される場合がある(中断は、別の休止期間と見なされてもよい)。さらなるキャリブレーション操作が完了した後に、新たな1組の参照画像を取り込むことができ、更新されたキャリブレーション情報を用いてロボット操作を継続することができる。後続の休止期間(複数の場合もある)中に、新たな1組の検証画像を取り込むことができ、ロボット制御システムは、新たな1組の参照画像を新たな1組の検証画像と比較することによって、さらなるキャリブレーション操作の検証を実行することができる。
上記で言及されたように、偏差パラメーターの値が規定された偏差閾値を超過する場合、ロボット制御システムは、さらなるキャリブレーション操作を実行することができる。偏差パラメーターの値が偏差閾値を超過しない場合には、ロボット制御システムがさらなるキャリブレーション操作を実行することなく、休止期間後にロボット操作を継続することができる。このシナリオにおいて、カメラは、後続の休止期間(複数の場合もある)中にそれぞれの参照箇所において新たな1組の検証画像を取り込むことができる。新たな1組の検証画像が取り込まれると、ロボット制御システムは、それぞれの参照箇所において新たな1組の検証画像がそれぞれの参照画像からどれだけ外れるかを判断することによって、キャリブレーション情報の検証を再び実行することができる。
上記で言及されたように、ロボットアームは、その上に配置される、リングパターン等の検証記号を有することができ、検証記号は、参照画像及び検証画像によって取り込まれる場合があるか、又は別の方法でそれらの画像内に含まれる場合がある。一実施形態において、ロボット制御システムは、参照画像内に検証記号が現れるそれぞれの位置に基づいて、かつ検証画像内に検証記号が現れるそれぞれの位置に基づいて、参照画像とそれぞれの検証画像との間の偏差を特定することができる。例えば、ロボット制御システムは、参照箇所ごとに参照画像座標を特定することができる。特定の箇所に関する参照画像座標は、検証記号がその参照箇所に配置されたときに取り込まれた参照画像内に検証記号が現れる座標とすることができる。より具体的には、参照画像座標は特定の参照箇所に関連付けることができ、その参照箇所に検証記号が配置されたときにカメラによって取り込まれた参照画像内に検証記号が現れる画像座標を指すことができる。上記の例において、画像座標は、ピクセル座標等の、画像内の座標を指す場合がある。ロボット制御システムが、その後の時点において、特定の参照箇所に検証記号を続いて配置し、対応する検証画像を取得すると、ロボット制御システムは、検証画像座標を判断することができる。また、検証画像座標も参照箇所に関連付けることができ、検証記号が参照箇所に配置されたときにカメラによって取り込まれた検証画像内に検証記号が現れる画像座標(例えば、ピクセル座標)を指すことができる。ロボット制御システムは、特定の参照箇所に関連付けられる参照画像座標を、同じ参照箇所に関連付けられる検証画像座標と比較することができる。この比較は、検証画像及び参照画像が取り込まれた参照箇所ごとに行うことができる。
一例において、参照画像内に検証記号が現れる参照画像座標は、参照画像内の検証記号の中心の座標とすることができる(参照画像内の検証記号の中心座標とも呼ばれる)。同様に、検証画像内に検証記号が現れる検証画像座標は、検証画像内の検証記号の中心の座標とすることができる(検証画像内の検証記号の中心座標とも呼ばれる)。対応する検証画像が取り込まれたときにロボットアーム及び/又は検証記号が位置した参照箇所ごとに、ロボット制御システムは、参照箇所に関連付けられる参照画像座標と、同じ参照箇所に関連付けられる検証画像座標との間の偏差を特定することができる。ロボットアーム及び/又は検証記号が複数の参照箇所に配置されてきた場合には、ロボット制御システムは、複数の参照箇所に関して、それぞれの参照画像座標とそれぞれの検証画像座標との間のそれぞれの偏差量を特定することができる。ロボット制御システムはさらに、参照箇所ごとの参照画像座標とそれぞれの検証画像座標との間のそれぞれの偏差量に基づいて、偏差パラメーターの値を特定することができる。
一例において、検証記号内の複数の形状のそれぞれの中心が同じ、又は実質的に同じ位置にあるように、検証記号は互いに同心である複数の形状を含むことができる。例えば、検証記号は、2つ以上の同心円を含むリングパターンとすることができる。場合によっては、検証記号の参照画像座標が参照画像内の検証記号の中心座標である場合には、ロボット制御システムは、参照画像内の複数の形状のそれぞれの中心座標に基づいて、検証記号の中心座標を特定することができ、特定の形状の中心座標は、その形状の中心の座標である。検証記号がリングパターンである場合には、参照画像内のリングパターンを形成する第1の円の中心座標と、リングパターンを形成する第2の円の中心座標との平均として、参照画像内のリングパターンの中心座標を特定することができる。同様に、検証画像内の検証記号の中心座標は、検証画像内の検証記号を形成する複数の形状のそれぞれの中心座標に基づいて特定することができる。場合によっては、複数の形状を用いて、検証記号を形成することにより、検証の精度を改善することができる。例えば、1つの画像内の複数の形状のそれぞれの中心座標を用いて、検証記号の中心座標を特定することにより、画像ノイズに対する検証のロバストネスを改善することができる。より具体的には、検証記号の画像が画像ノイズを含む場合には、画像ノイズによって、ロボット制御システムが検証記号の特定の形状の中心座標を検出する精度が低下する場合がある。しかしながら、その形状の中心座標が別の形状の中心座標と平均され、検証記号の中心座標が特定される場合には、平均した中心座標は、画像ノイズの影響を低減することができる。結果として、検証記号の中心座標を特定する際の精度を改善することができる。
一例において、検証記号はそれぞれ色が異なる複数の領域を有することができ、複数の領域のそれぞれの面積が、識別できる規定された比を有することができる。例えば、検証記号は、第1の色(例えば、黒)を有する第1の領域と、第2の色(例えば、白)を有する第2の領域とを有することができ、第1の領域の面積と第2の領域の面積との比が規定されるか、又は別の方法で既知である。識別できる比は、画像がキャリブレーションパターンのドット等の他の特徴を取り込むか、又は別の方法で含む場合には特に、画像内の検証記号を識別するのを容易にすることができる。例えば、検証記号を動かしているロボットアームが、ロボットアーム上に配置されるキャリブレーションパターンを有する場合もある。ロボット制御システムは、その比を用いて、検証記号と、キャリブレーションパターンのドットとを区別することができる。より具体的には、検証記号の複数の領域の面積の比が識別できる比として規定されるので、ロボット制御システムは、規定された比に基づいて、画像内の検証記号を識別することができる。画像内に現れる検証記号の識別中に、ロボット制御システムは、規定された比に基づいて、検証記号と、キャリブレーションパターン又は他の特徴とを区別することができる。場合によっては、検証記号は、それぞれ異なる色の複数の領域を有し、複数の領域のそれぞれの面積間に規定された比を有する画像の部分として、その画像内で識別することができる。ロボット制御システム又は他のシステム若しくはデバイスが、画像の特定の部分が、それぞれ色が異なる複数の領域を有しないと判断する場合には、又は複数の領域のそれぞれの面積が規定された比とは異なる比を有すると判断する場合には、ロボット制御システムは、画像の部分が検証記号でないと判断することができる。
一例において、ロボット制御システムは、ロボットの周囲の温度に基づいて、検証を実行することができる。例えば、ロボット制御システムは、温度に基づいて、規定された偏差閾値を調整する(すなわち、偏差閾値に関する新たな値を規定する)ことができる。例えば、或る材料が温度の影響を受けやすい場合があり、及び/又は温度に応じて膨張/収縮する場合があるので、温度はカメラ内、及び/又はロボット内の種々の部品に影響を及ぼす場合がある。温度の変化によって、カメラの固有パラメーター(複数の場合もある)が変化する場合があり、及び/又はカメラとその外部環境との間の関係が変化する場合がある。一実施形態において、偏差閾値は、温度が規定範囲外にあるときに第1の値を有するように設定することができ、一方、偏差閾値は、温度が規定範囲内にあるときに、第1の値より低い第2の値を有するように設定することができる。例えば、温度が規定された正常動作温度範囲内(例えば、室温の10度以内に)あるとき、偏差閾値は、第1の値とすることができる。温度が正常動作温度範囲外にあるとき、偏差閾値は、第1の値より低い第2の値を有することができる。正常動作温度範囲外の温度では、カメラに、又はカメラと外部環境との関係に変化が生じる可能性が高くなる場合があり、それゆえ、以前に生成されたカメラキャリブレーション情報又は任意の他のキャリブレーション情報でロボットを動作させる際に誤差が生じる可能性が高くなる場合があるので、温度が正常動作範囲外にあるときに、さらなるキャリブレーション操作をより容易にトリガーするために、第2の値は第1の値より低くすることができる。
一実施形態において、キャリブレーション情報の検証は、単一の参照箇所にのみ頼る場合がある。代替的に、キャリブレーション情報の検証は、複数の参照箇所に頼ることができる。参照箇所は、カメラ視野内の任意の位置とすることができるか、又は特定の規定された位置とすることができる。例えば、参照箇所は、カメラに対して凹形である少なくとも1つの仮想球の表面上の位置として規定することができる。このシナリオにおける各参照箇所において、検証記号が、カメラに面するときに少なくとも1つの仮想球の表面に対して接線方向に位置決めされるように、検証記号を位置決めするようにロボットアームを制御することができる。この位置決めによれば、検証記号をカメラによって真正面から、より良好に撮影できるか、又は別の方法で取り込めるようになる場合がある(検証記号がカメラの真正面を向く)ので、検証記号の画像が、検証記号の斜視図ではなく、平面図に近くなる。例えば、検証記号がリングパターンである場合には、リングパターンを仮想球の表面に対して接線方向に位置決めすることによって、結果として生じるリングパターン画像が、楕円形に見えるのではなく、依然として円形に見えるようにすることができる。結果として生じる画像は、(リングパターンが画像内で楕円形に見えるシナリオに対して)少ない射影ひずみを示す場合があるか、又は全く射影ひずみを示さない場合がある。射影ひずみがないことは、リングパターンの中心座標の正確な特定を助長することができる。場合によっては、参照箇所は、カメラに対して全て凹形である複数の仮想球の中に分割することができる。複数の仮想球は共通の中心を共有することができ、異なるサイズとすることができ、それにより、各仮想球は、カメラからそれぞれ異なる距離を有する球面を有する。場合によっては、カメラは、全ての仮想球のための共通の中心とすることができる。
図1Aは、自動カメラキャリブレーション及びカメラキャリブレーションの自動検証を実行するためのロボット操作システム100(システム100とも呼ばれる)のブロック図を例示する。以下の実施例のいくつかは、自動カメラキャリブレーションを実行することと、自動カメラキャリブレーションから判断されるカメラキャリブレーション情報を検証することと、を論じているが、これらの実施例は、より一般的には、任意のタイプの自動キャリブレーション操作、及び自動キャリブレーション操作から判断された任意のタイプのキャリブレーション情報を検証することに適用され得る。ロボット運用システム100は、ロボット150と、ロボット制御システム110(ロボットコントローラーとも呼ばれる)と、カメラ170とを含む。一実施形態において、システム100は倉庫内に、製造工場内に、又は他の施設内に位置することができる。ロボット制御システム110は、後にさらに詳細に論じられるカメラキャリブレーションを実行し、カメラキャリブレーション情報を特定するように構成することができ、カメラキャリブレーション情報は、倉庫内で荷物を持ち上げる等のロボット操作を実行するようにロボット150を制御するために後に使用される。ロボット制御システム110は、同じく後にさらに詳細に論じられるカメラキャリブレーション検証を実行し、カメラキャリブレーション情報が依然として十分に正確であるか否かを検証するようにさらに構成することができる。場合によっては、ロボット制御システム110は、カメラキャリブレーションを実行し、カメラキャリブレーション情報に基づいて、ロボット操作を実行するように、ロボット150を制御するように構成される。場合によっては、ロボット制御システム110は、ロボット150及びカメラ170と通信する単一のデバイス(例えば、単一のコンソール又は単一のコンピューター)を形成することができる。場合によっては、ロボット制御システム110は複数のデバイスを含むことができる。
場合によっては、ロボット制御システム110は、カメラキャリブレーション及び/又はカメラキャリブレーションの検証を実行する専用システムとすることができ、最新のカメラキャリブレーション情報を別の制御システム(別のコントローラーとも呼ばれる、図示せず)に通信することができ、その後、別の制御システムが、最新のカメラキャリブレーション情報に基づいて、ロボット操作を実行するように、ロボット150を制御する。ロボット150は、カメラ170によって取り込まれた画像に基づいて、かつカメラキャリブレーション情報に基づいて位置決めすることができる。より具体的には、ロボット制御システム110は、一実施形態において、画像に基づいて、かつカメラキャリブレーション情報に基づいて、動作コマンドを生成し、動作コマンドをロボット150に通信し、そのロボットアームの動作を制御するように構成することができる。場合によっては、ロボット制御システム110は、ロボット操作時の休止期間中にカメラキャリブレーションの検証を実行するように構成される。場合によっては、ロボット制御システム110は、ロボット150でロボット操作を実行している間に検証を実行するように構成される。
一実施形態において、ロボット制御システム110は、有線通信又はワイヤレス通信を介して、ロボット150及びカメラ170と通信するように構成することができる。例えば、ロボット制御システム110は、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェース、イーサネット(登録商標)インターフェース、Bluetooth(登録商標)インターフェース、IEEE802.11インターフェース又はそれらの任意の組み合わせを介して、ロボット150及び/又はカメラ170と通信するように構成することができる。一実施形態において、ロボット制御システム110は、ペリフェラルコンポーネントインターコネクト(PCI)バス等のローカルコンピューターバスを介して、ロボット150及び/又はカメラ170と通信するように構成することができる。
一実施形態において、ロボット制御システム110は、ロボット150とは別に存在することができ、上記で論じられたワイヤレス接続又は有線接続を介して、ロボットと通信することができる。例えば、ロボット制御システム110は、有線接続又はワイヤレス接続を介してロボット150及びカメラ170と通信するように構成されるスタンドアローンコンピューターとすることができる。一実施形態において、ロボット制御システム110は、ロボット150と一体の構成要素とすることができ、上記で論じられたローカルコンピューターバスを介して、ロボット150の他の構成要素と通信することができる。場合によっては、ロボット制御システム110は、ロボット150のみを制御する専用制御システム(専用コントローラーとも呼ばれる)とすることができる。他の場合には、ロボット制御システム110は、ロボット150を含む、複数のロボットを制御するように構成することができる。一実施形態において、ロボット制御システム110、ロボット150及びカメラ170は同じ施設(例えば、倉庫)内に位置する。一実施形態において、ロボット制御システム110は、ロボット150及びカメラ170から遠隔とすることができ、ネットワーク通信(例えば、ローカルエリアネットワーク(LAN)接続)を介して、ロボット150及びカメラ170と通信するように構成することができる。
一実施形態において、ロボット制御システム110は、カメラ170から、ロボット150上(例えば、ロボットのロボットアーム上)に配置されるキャリブレーションパターン160及び/又は検証記号165の画像を読み出す(retrieve)か、又は別の方法で受信するように構成することができる。場合によっては、ロボット制御システム110は、そのような画像を取り込むように、カメラ170を制御するように構成することができる。例えば、ロボット制御システム110は、カメラ170にカメラ170の視野(カメラ視野とも呼ばれる)の画像を取り込ませるカメラコマンドを生成し、有線接続又はワイヤレス接続を介して、カメラコマンドをカメラ170に通信するように構成することができる。同じコマンドによって、カメラ170に、ロボット制御システム110、又はより一般的には、ロボット制御システム110によってアクセス可能な記憶デバイスに画像を通信させることもできる。代替的には、ロボット制御システム110は、カメラコマンドを受信すると、カメラ170が取り込んだ画像(複数の場合もある)をロボット制御システム110に通信する別のカメラコマンドを生成することができる。一実施形態において、カメラ170は、ロボット制御システム110からのカメラコマンドを必要とすることなく、定期的に、又は規定されたトリガー条件に応答して、自らのカメラ視野内の画像を自動的に取り込むことができる。そのような実施形態において、カメラ170は、ロボット制御システム110からのカメラコマンドを用いることなく、ロボット制御システム110に、又はより一般的にはロボット制御システム110によってアクセス可能な記憶デバイスに画像を自動的に通信するように構成することもできる。
一実施形態において、ロボット制御システム110は、ロボット制御システム110によって生成され、有線接続又はワイヤレス接続を介してロボット150に通信される動作コマンドを介して、ロボット150の動作を制御するように構成することができる。ロボット150は、ロボット150上にキャリブレーションパターン160及び検証記号165の一方又は両方を有するように構成することができる。例えば、図1Bは、図1Aのキャリブレーションパターン160が存在しない場合の、ロボット150上に検証記号165が配置されるロボット操作システム100Aを図示する。一例において、検証記号165は、ロボット150の一部とすることができ、ロボット150上に永久に配置することができる。例えば、検証記号165は、ロボット150上に永久に塗布することができるか、又はロボット150に永久に取り付けられるステッカー又はボードの一部とすることができる。別の例において、検証記号165は、ロボット150に着脱可能である別の構成要素とすることができる。検証記号165は、ロボット150上に永久に配置することができるか、又はロボット150に着脱可能である別の構成要素とすることができる。
一実施形態において、ロボット150を制御するためにシステム100において使用される唯一の画像が、カメラ170によって取り込まれた画像である場合がある。別の実施形態において、システム100は、複数のカメラを含むことができ、ロボット150は、複数のカメラからの画像によって制御することができる。
図1Bは、ロボット制御システム110がユーザーインターフェースデバイス180と通信する実施形態をさらに例示する。ユーザーインターフェースデバイス180は、ロボット150が位置する倉庫にいる従業員等の、ロボット150の運用者とのインターフェースを構成することができる。ユーザーインターフェースデバイス180は、ロボット150の運用に関連する情報を表示するユーザーインターフェースを提供する、例えば、タブレットコンピューター又はデスクトップコンピューターを含むことができる。上記で言及されたように、ロボット制御システム110は、偏差パラメーター値が規定された偏差閾値を超過する時点を検出するように構成することができる。一実施形態において、ユーザーインターフェースデバイス180は、偏差パラメーター値が規定された偏差閾値を超過することを運用者に通知する警報又は他の警告を与えることができる。
図1Cは、ロボット制御システム110のブロック図を図示する。ブロック図に示されるように、ロボット制御システム110は、制御回路111と、通信インターフェース113と、非一時的コンピューター可読媒体115(例えば、メモリ)とを含む。一実施形態において、制御回路111は1つ以上のプロセッサ、プログラマブル論理回路(PLC)又はプログラマブル論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は任意の他の制御回路を含むことができる。
一実施形態において、通信インターフェース113は、図1A又は図1Bのカメラ170及び図1A又は図1Bのロボット150と通信するように構成される1つ以上の構成要素を含むことができる。例えば、通信インターフェース113は、有線プロトコル又はワイヤレスプロトコルを介して通信を実行するように構成される通信回路を含むことができる。一例として、通信回路は、RS−232ポートコントローラー、USBコントローラー、イーサネットコントローラー、Bluetooth(登録商標)コントローラー、PCIバスコントローラー、任意の他の通信回路、又はそれらの組み合わせを含むことができる。一実施形態において、制御回路111は、動作コマンド(例えば、モーター動作コマンド)を生成し、動作コマンドを通信インターフェース113に出力するように構成することができる。この実施形態において、通信インターフェース113は、ロボット150のロボットアーム又は他の構成要素の動作を制御するために、動作コマンドをロボット150に通信するように構成することができる。一実施形態において、制御回路111は、カメラコマンドを生成し、カメラコマンド(例えば、画像取り込みコマンド)を通信インターフェース113に出力するように構成することができる。この実施形態において、通信インターフェース113は、カメラの視野内の物体の画像を撮影するか、又は別の方法で取り込むようにカメラ170を制御するために、カメラコマンドをカメラ170に通信するように構成することができる。一実施形態において、通信インターフェース113は、カメラ170から画像又は他のデータを受信するように構成することができ、制御回路111は、通信インターフェース113から画像を受信するように構成することができる。
一実施形態において、非一時的コンピューター可読媒体115はコンピューターメモリを含むことができる。コンピューターメモリは、例えば、ダイナミックランダムアクセスメモリ(DRAM)、半導体集積メモリ(solid state integrated memory)、及び/又はハードディスクドライブ(HDD)を含むことができる。場合によっては、カメラキャリブレーションは、非一時的コンピューター可読媒体115上に記憶されるコンピューター実行可能命令(例えば、コンピューターコード)を通して実施することができる。そのような場合に、制御回路111は、コンピューター実行可能命令を実行し、カメラキャリブレーションの検証(例えば、図4A、図4B、及び図9に例示されるステップ)を実行するように構成される1つ以上のプロセッサを含むことができる。
図1Dは、1つ以上のレンズ171と、イメージセンサー173と、通信インターフェース175と、を含むカメラ170のブロック図を図示する。通信インターフェース175は、図1A、図1B、又は図1Cのロボット制御システム110と通信するように構成することができ、ロボット制御システム110の図1Cの通信インターフェース113に類似とすることができる。一実施形態において、1つ以上のレンズ171は、カメラ170の外部から到来している光をイメージセンサー173上に合焦することができる。一実施形態において、イメージセンサー173は、それぞれのピクセル強度値を介して画像を表すように構成されるピクセルのアレイを含むことができる。イメージセンサー173は、電荷結合素子(CCD)センサー、相補型金属酸化膜半導体(CMOS)センサー、量子イメージセンサー(QIS:quanta image sensor)又は任意の他のイメージセンサーを含むことができる。
上記で言及されたように、カメラによって取り込まれた画像に基づいて、ロボットの制御を助長するために、カメラキャリブレーションを実行することができる。例えば、図2は、ロボット操作システム200(システム200とも呼ばれる)を図示しており、そのシステムでは、画像を使用して、倉庫内の物体292を持ち上げる操作等の、ロボット操作を実行するようにロボット250を制御する。より具体的には、システム200は、図1Aのシステム100の一実施形態とすることができ、カメラ270、ロボット250、及びロボット制御システム110を含む。カメラ270は、図1A、図1B、又は図1Dのカメラ170の一実施形態とすることができ、ロボット250は、図1A、又は図1Bのロボット150の一実施形態とすることができる。カメラ270は、倉庫内のコンベヤベルト293上に配置される物体292(例えば、出荷するための荷物)の画像を取り込むように構成することができ、ロボット制御システム110は、物体292を持ち上げるように、ロボット250を制御するように構成することができる。コンベヤベルト293上に1つ以上の物体が存在するとき、ロボット制御システム110は、物体を持ち上げるロボット250の動作をスケジューリングするように構成することができる。ロボット制御システム110は、場合によっては、コンベヤベルト293上に物体が存在しない時点、又はコンベヤベルト293上の、ロボット250の届く範囲内に物体が存在しない時点を検出することによって、ロボット操作のための休止期間を検出するように構成することができる。
図2の実施形態において、ロボット250は、ベース252と、ベース252に対して動作可能であるロボットアームと、を有することができる。より具体的には、ロボットアームは複数のリンク254A〜254Eと、リンク254Eに取り付けられるロボットハンド255とを備えることができる。複数のリンク254A〜254Eは互いに対して回動可能とすることができ、及び/又は互いに対して直線的に移動可能である直動リンク(prismatic links)とすることができる。図2は、物体を持ち上げるために使用されるロボット250に関わるため、ロボットハンド255は、物体292を掴むために使用される把持部255A及び255Bを含むことができる。一実施形態において、ロボット制御システム110は、リンク254A〜254Eのうちの1つ以上を回動させる動作コマンドを通信するように構成することができる。動作コマンドは、モーター動作コマンド等のローレベルコマンド、又はハイレベルコマンドとすることができる。ロボット制御システム110からの動作コマンドがハイレベルコマンドである場合には、ロボット150は、ハイレベルコマンドをローレベルコマンドに変換するように構成することができる。
一実施形態において、カメラキャリブレーションから特定されるカメラキャリブレーション情報は、カメラ270とロボット250との間の関係、又はより具体的には、カメラ270と、ロボット250のベース252に対して静止しているワールド点(world point)294との間の関係を記述する。ワールド点294は、ロボット250が位置する世界又は他の環境を表すことができ、ベース252に対して静止している任意の仮想点(imaginary point)とすることができる。言い換えると、カメラキャリブレーション情報は、カメラ270とワールド点294との間の関係を記述する情報を含むことができる。一実施形態において、その関係は、ワールド点294に対するカメラ270の位置と、ロボット250のための参照方向に対するカメラ270の向きとを指すことができる。カメラ270とワールド点294との間の上記の関係はカメラ−ワールド関係と呼ばれる場合があり、カメラ270とロボット250との間の関係を表すために使用することができる。場合によっては、カメラ−ワールド関係を用いて、カメラ270と物体292との間の関係(カメラ−物体関係とも呼ばれる)、及び物体292とワールド点294との間の関係(物体−ワールド関係とも呼ばれる)を特定することができる。カメラ−物体関係及び物体−ワールド関係を用いて、物体292を持ち上げるようにロボット250を制御することができる。
一実施形態において、カメラキャリブレーション情報は、カメラ270の固有パラメーターを記述することができ、固有パラメーターは、その値がカメラ270の位置及び向きから独立している任意のパラメーターとすることができる。固有パラメーターは、カメラの焦点距離、カメラのイメージセンサーのサイズ、又はカメラ270によって導入されるレンズひずみの影響等の、カメラ270の特性を特徴付けることができる。
ロボット350の一実施例の詳細な構造を示す一実施例が図3に図示され、図3は、カメラ370及びロボット350と通信するロボット制御システム110を含むロボット操作システム300を図示する。カメラ370は、図1A、図1B、図1D、又は図2のそれぞれカメラ170/270の一実施形態とすることができ、ロボット350は、図1A、図1B、又は図2のそれぞれロボット150/250の一実施形態とすることができる。カメラ370は、カメラ視野330内の画像を取り込むことができる場合がある。ロボット350は、ベース352と、ベース352に対して移動可能であるロボットアームとを含むことができる。ロボットアームは、リンク354A〜354E等の1つ以上のリンクと、ロボットハンド355とを含む。一実施形態において、リンク354A〜354Eは互いに回動可能に取り付けることができる。例えば、リンク354Aは、ジョイント356Aを介して、ロボットベース352に回動可能に取り付けることができる。残りのリンク354B〜354Eは、ジョイント356B〜356Eを介して、互いに回動可能に取り付けることができる。一実施形態において、ベース352を用いて、ロボット350を、例えば、取り付けフレーム又は取り付け面(例えば、倉庫の床)に取り付けることができる。一実施形態において、ロボット350は、リンク354A〜354Eを回動させることによってロボットアームを動かすように構成される複数のモーターを含むことができる。例えば、モーターのうちの1つは、図3において破線矢印で示されるように、ジョイント356A及びベース302に対して第1のリンク354Aを回動させるように構成することができる。同様に、複数のモーターのうちの他のモーターも、リンク354B〜354Eを回動させるように構成することができる。複数のモーターはロボット制御システム110によって制御することができる。図3は、第5のリンク354E上に固定されるように配置されるロボットハンド355をさらに図示する。ロボットハンド355は、その上にキャリブレーションパターン320を有することができ、ロボット制御システム110がカメラ370を介してキャリブレーションパターン320の画像を取り込み、キャリブレーションパターン320の取り込まれた画像に基づいて、カメラキャリブレーションを実行できるようにする。例えば、ロボット制御システム110は、キャリブレーションパターン320の画像(キャリブレーション画像とも呼ばれる)を取り込むためにカメラ370が使用されているときに、キャリブレーションパターン320がカメラ視野330内に存在することができ、カメラ370から視認可能であるように、ロボットアームを動かすことができる。カメラキャリブレーションが実行された後に、ロボットハンド355を取り外し、後にさらに詳細に論じられるように、その上に配置される検証記号を有するロボットハンド等の別のロボットハンドと交換することができる。
上記で言及されたように、一実施形態によれば、キャリブレーション検証は、参照画像内に検証記号が現れる参照画像座標と、検証画像内に検証記号が現れる検証画像座標とを比較することを含むことができる。その比較は、検証画像座標と参照画像座標との間の偏差を判断することができ、その偏差を使用して、さらなるキャリブレーション操作を実行すべきかどうかを判断することができる。検証画像は、ロボット操作の休止期間中に取り込むことができる。図4A及び図4Bは、一実施形態による、カメラキャリブレーションの検証のための方法400を例示するフロー図を図示する。以下の実施形態のいくつかは、カメラキャリブレーションから判断されるカメラキャリブレーション情報を検証することを論じているが、方法400は、ロボット操作システムのために実行される任意のキャリブレーション操作から判断されるキャリブレーション情報をより一般的に検証するために使用され得る。一実施形態において、方法400は、ロボット制御システム110の制御回路111によって実行することができる。上記で言及されたように、ロボット制御システム110は、図1Cの通信インターフェース113を含むことができ、通信インターフェースは、図1A又は図1Bのロボット150、及び図1A、図1B、又は図1Dのカメラ170と通信するように構成される。一実施形態において、ロボットは、ベース(例えば、図2のベース252、又は図3のベース352)と、その上に検証記号が配置されるロボットアーム(例えば、図2又は図3のロボットアーム)と、を有することができ、ロボットアームは、ベースに対して動作可能である。
方法400が実行される例示的な環境が、図5A及び図5Bに図示されており、その図は、カメラ570及びロボット550と通信するロボット制御システム110を各々含む、ロボット操作システム500/500Aを図示する。カメラ570は、図1、図2、又は図3のそれぞれカメラ170/270/370の一実施形態とすることができ、ロボット550は、図1A、図1B、図2、又は図3のそれぞれロボット150/250/350の一実施形態とすることができる。ロボット550は、ベース552と、ベース552に対して動作可能であるロボットアーム(図5A及び図5Bにおいて553と表示される)と、を含むことができる。ロボットアームは、リンク554A〜リンク554E等の1つ以上のリンクを含む。リンク554A〜554Eはまた、互いに動作可能に取り付けられたロボットアーム553のアーム部分の実施例であってもよい。一実施形態において、リンク554A〜554Eは互いに回動可能に取り付けることができる。例えば、リンク554Aは、ロボットベース552に回動可能に取り付けることができる。残りのリンク554B〜554Eは、複数のジョイントを介して、互いに回動可能に取り付けることができる。一実施形態において、ベース552を用いて、ロボット552を、例えば、取り付けフレーム又は取り付け面(例えば、倉庫の床)に取り付けることができる。ロボット550は、図3のロボット350と同じように操作することができる。例えば、ロボット550は、互いに対してリンク554A〜554Eを回動させることによってロボットアームを動かすように構成される複数のモーターを含むことができる。ロボットアームは、リンク554Eに取り付けられるロボットハンドをさらに含むことができる。例えば、図5Aは、第1のロボットハンド555、第2のロボットハンド557、及び第3のロボットハンド559を図示し、各々第5のリンク554Eから着脱可能とすることができる。ロボットハンド555/557/559は、コンベヤベルト573から物体(例えば、582A、582B、582C)を持ち上げるように構成される、例えば、把持部又は吸引デバイスを含むことができる。ロボットハンド555/557/559が第5のリンク554Eに取り付けられるとき、その取り付けは、混在するように行うことができる。その着脱は手動で、又は自動的に実行することができる。一例において、第5のリンク554Eは、図5A及び図5Bに図示されるように、第1のロボットハンド555に取り付けることができ、ロボット制御システム110は、第5のリンク554Eに第1のロボットハンド555を解放させて、第5のリンク554Eを第2のロボットハンド557に取り付けるように、ロボット550を制御することができる。別の実施形態では、第5のリンク554Eは、ロボットハンド(例えば、ロボットハンド559)に永久に取り付けることができる。
一実施形態において、ロボット550は、その上に配置される検証記号530を有することができる。場合によっては、検証記号530はロボット550上に永久に配置することができる。場合によっては、検証記号530は、リンク554A〜554Eのうちの1つ等のロボット550のロボットアーム上に、又はロボットハンド上に配置することができる。例えば、図5Aは、第1のロボットハンド555及び第3のロボットハンド559上に配置される検証記号530を図示し、一方、図5Bは、リンク554E上に配置される検証記号530を図示する。検証記号530は、ロボット550上に直接塗布することができるか、又はステッカー又は平板等を介して、ロボット550に取り付けることができる。図5Aに図示される実施例において、第2のロボットハンド557又は第3のロボットハンド559は、各々がその上に配置されるそれぞれキャリブレーションパターン520/527を有するので、カメラキャリブレーションを実行するために使用されてもよく、一方で、第1のロボットハンド555又は第3のロボットハンド559は、各々がその上に配置されるそれぞれ検証記号530を有するので、カメラキャリブレーションの検証を実行するために使用されてもよい。
図4Aに戻ると、一実施形態において、方法400は、ステップ401から開始することができ、そのステップでは、制御回路111が、第1のカメラキャリブレーションを実行して、カメラ(例えば、図1、図2、図3、又は図5のそれぞれカメラ170/270/370/570)と関連付けられるカメラキャリブレーション情報を判断する。より具体的には、カメラキャリブレーション情報は、カメラに関するカメラキャリブレーション値を含むことができる。この実施形態において、制御回路111は、キャリブレーションパターンの画像(キャリブレーション画像とも呼ばれる)に基づいて、第1のカメラキャリブレーションを実行することができる。
例えば、第1のキャリブレーションを実行するために、図5Aのロボット550は、キャリブレーションパターン520を有する第2のロボットハンド557に、又はキャリブレーションパターン527を有する第3のロボットハンド559に取り付けることができる。図3は、第1のカメラキャリブレーションを実行することができる類似の環境を図示する。このステップ中に、カメラキャリブレーションを実行するためにそのキャリブレーションパターン320が使用される第1のロボットハンド555を、第5のリンク554Eから取り外すことができる。第1のカメラキャリブレーションは、ロボット操作を開始する前に実行することができる。例えば、ロボット操作は、第1のロボットハンド555がコンベヤベルト上の第1の物体582Aと相互作用する等のロボット作業から開始することができる。第1のカメラキャリブレーション中に、ロボット550は第2のロボットハンド557を備えることができる。ロボット制御システム110は、キャリブレーションパターン520をカメラ570のカメラ視野510内の種々の位置に動かし、そのような位置においてキャリブレーションパターン520のそれぞれの画像を取り込むように、動作コマンドを介して、ロボット550のロボットアームを制御することができる。ロボット制御システム110は、キャリブレーションパターン520の取り込まれた画像に基づいて、第1のカメラキャリブレーションを実行し、カメラ570に関するカメラキャリブレーション情報を特定することができる。一例において、カメラキャリブレーション情報は、カメラ570とロボット550との間の関係を記述する情報を含むことができる。一例において、カメラキャリブレーション情報は、カメラ570の固有パラメーターを記述することができる。カメラキャリブレーションは、2019年3月7日出願の米国特許出願第16/295,940号(整理番号MJ0021US1)、発明の名称「METHOD AND DEVICE FOR PERFORMING AUTOMATIC CAMERA CALIBRATION FOR ROBOT CONTROL」においてより詳細に論じられており、その内容全体が参照より本明細書に組み込まれる。
図4Aに戻ると、方法400は、ステップ403をさらに含むことができ、そのステップでは、制御回路111が、ロボット制御システム110の通信インターフェース113に第1の動作コマンドを出力することによって、第1のカメラキャリブレーション中又は後に、検証記号(例えば、図5の530)をカメラ(例えば、570)のカメラ視野(例えば、510)内の1つの箇所に動かすようにロボットアームを制御する。通信インターフェース113は、ロボットアームが、第1のカメラキャリブレーション中又は後に、検証記号(例えば、530)をカメラ視野(例えば、510)内のその位置に動かすために、ロボットに動作コマンドを通信するように構成することができる。また、動作コマンドによって、ロボットアームは、検証記号をカメラ(例えば、570)に面するように、又はより一般的には、カメラから視認可能であるように、検証記号を向けることができる。その位置は、第1のカメラキャリブレーションの検証のための1つ以上の参照箇所のうちの1つの参照箇所として使用することができる。例えば、検証プロセスが経時的に検証記号の画像を取得するとき、制御回路111は、1つ以上の位置を1つ以上の参照箇所として使用することができるように、検証記号(例えば、530)を同じ1つ以上の位置に絶えず位置決めするように、ロボットアームを制御することができる。さらに、ステップ405〜459に関して後に説明されるように、検証プロセスは、検証記号の後の画像を、第1のカメラキャリブレーションが実行された直後に得られた画像等の、検証記号(例えば、530)の1組の早期の画像と比較することができる。後の画像は検証画像として使用することができ、一方、後の画像が比較される画像は、参照画像として使用することができる。
ステップ405において、制御回路111が、通信インターフェース113を介して、カメラ(例えば、170/270/370/570)から検証記号(例えば、530)の画像を受信する(例えば、読み出す)ことができ、その画像は検証のための参照画像である。画像は、検証記号が参照箇所にあるか、又は参照箇所にあった間に、カメラによって取り込まれている場合がある。一実施形態において、最初に、通信インターフェース113がカメラから参照画像を受信することができ、その後、制御回路111が、通信インターフェース113から参照画像を受信することができる。一実施形態において、ステップ405は、制御回路111がカメラのためのカメラコマンドを生成することなく実行される。一実施形態において、ステップ405は、制御回路111がカメラコマンドを生成することと、通信インターフェース113を介してカメラにカメラコマンドを通信することとを含むことができる。カメラコマンドは、参照箇所において検証記号の画像を取り込むように、カメラを制御することができる。
図5A〜図6Bは、ステップ403及びステップ405の態様を例示する。図5Aの実施形態において、第1のカメラキャリブレーションが、例えば、第2のロボットハンド557を用いて実行された後に、第2のロボットハンド557を、その上に配置される検証記号530を有する第3のロボットハンド559と交換することができる。この例において、ロボット制御システム110は、検証記号530をカメラ570のカメラ視野510内の1つ以上の参照箇所に動かすように、ロボット550のロボットアームを(例えば、1つ以上の動作コマンドを介して)制御する。1つ以上の参照箇所は、カメラ視野510内の任意の位置を含むことができるか、又は後にさらに詳細に論じられるような、仮想球の表面上に配置される位置等の1組の1つ以上の特定の位置とすることができる。別の例では、図5Bの実施形態において、第1のカメラキャリブレーション中又は後に、ロボット制御システム110は、検証記号530をカメラ視野510内の1つ以上の参照箇所に動かすようにロボットアームを制御することができる。この例において、1つ以上の参照箇所は、第1のカメラキャリブレーション中に検証記号530が(キャリブレーションパターン520とともに)撮影された任意の位置を含むことができるか、又は第1のカメラキャリブレーションが実行された後に検証記号530が動かされた1組の1つ以上の特定の位置とすることができる。ロボット制御システム110は、第1のカメラキャリブレーションから得られるカメラキャリブレーション情報に基づいて、カメラ570からの指示によってこのステップにおいてロボット550のロボットアームの動作を制御することができるか、又はそのような指示を用いることなく動作を制御することができる。一実施形態において、参照箇所は、ローカル又はリモート記憶デバイス内に記憶され、読み出すことができる規定された位置とすることができる。参照箇所は、座標(例えば、直交座標)の形で、又はリンク554A〜554Eを回動させるためのモーターコマンドとして、又は何らかの他の態様において記憶することができる。
一実施形態において、ロボットアームが検証記号(例えば、530)を動かす1つ以上の参照箇所は、複数の参照箇所を含むことができ、複数の参照箇所のそれぞれが、カメラに対して凹形である仮想球の表面上に配置される位置である。そのような実施形態において、制御回路111は、複数の参照箇所の各参照箇所において検証記号が仮想球の表面に対して接線方向に向くように動かすために、ロボットアームを制御するようにさらに構成することができる。例えば、図6A、図6B、図6C、及び図6Dに例示されるように、ロボット制御システム110は、検証記号530を参照箇所610A〜610Iに動かすように、ロボット550のロボットアームを制御することができ、参照箇所610A〜610Iの各々においてそれぞれの参照画像を取り込むようにカメラ570を制御することができる。図6A及び図6Bの参照箇所610A〜610Iは、カメラ視野510内の複数の仮想球の中で分割することができる。参照箇所610A及び610Bは第1の仮想球620の第1の球面621上に配置することができ、ここで、第1の球面621はカメラ視野510内にある。参照箇所610C、610D及び610Eは第2の仮想球630の第2の球面631上に配置することができ、ここで、第2の球面631はカメラ視野510内にある。参照箇所610F、610G、610H及び610Iは、第3の仮想球640の第3の球面641上に配置することができ、ここで、第3の球面641はカメラ視野510内にある。図6A及び図6Bに例示されるように、第1の球面621、第2の球面631、及び第3の球面641はそれぞれ、カメラ570に対して凹形である。図6A及び図6Bの実施例は、3つの球に基づく3つの球面を示すが、参照箇所を配置することができる異なる球面の数は、3つよりも多くすることも、3つよりも少なくすることもできる。一実施形態において、カメラ570は、仮想球620、630、640のそれぞれの中心に存在することができる。
一実施形態において、図6A〜図6Dに示されるように、検証記号530が或る参照箇所に動かされるとき、ロボット制御システム110は、検証記号530を参照箇所が配置される球面に対して接線方向に位置決めするように、ロボット550のロボットアーム553を(例えば、動作コマンドを介して)制御することができる。例えば、図6A及び図6Bは、参照箇所610Dにおいて第2の球面631に対して接線方向に向いている検証記号530を例示し、図6C及び図6Dは、参照箇所610Cにおいて第2の球面631に対して接線方向に向いている検証記号530を例示する。より具体的には、検証記号530は、平面(例えば、ステッカー)上に配置することができ、検証記号530の平面が、図6A及び図6B内の参照箇所610Dにおいて第2の球面631に対して接線方向に向いていてもよく、図6C及び図6D内の参照箇所610Cにおいて第2の球面631に対して接線方向に向いていてもよい。一実施形態において、ロボットアーム553は、図6A及び図6Bにおいて第1のポーズとすることができ、図6C及び図6Dにおいて第2のポーズとすることができる。ロボットアーム553のポーズは、例えば、ロボットアーム553のリンク又は他のアーム部分によって形成される形状、又はより一般的には幾何学形状を指し得る。例えば、ロボットアーム553のポーズは、ロボットアーム553のリンクが、ロボットアーム553の先行リンクに対して回動又は並進(例えば、伸長又は後退)した角度又は距離の特定の順列化を指し得る。一例として、図6Aに図示される第1のポーズは、ロボットアーム553の一連のリンクの連続するリンクの間に形成される角度の第1の順列に対応し得るが、図6Cに図示される第2のポーズは、ロボットアーム553の一連のリンクの連続するリンクの間の角度の第2の順列に対応し得る。かかる例では、検証記号630の参照箇所610Dは、図6Aに例示されるロボットアーム553のための第1のポーズと関連付けられてもよく、一方、検証記号630の参照箇所610Cは、図6Cに例示されるように、ロボットアーム553のための第2のポーズと関連付けられてもよい。
一実施形態において、制御回路111は、検証記号が参照箇所に動かされるときに、カメラの真正面を向くように検証記号(例えば、530)を動かすために、ロボットアームを制御するように構成される。例えば、図6Aに例示されるように、ロボット制御システム110は、検証記号530が参照箇所610Dに動かされるときに、カメラ570の真正面を向くように検証記号530を動かすために、ロボット550のロボットアーム553を制御することができる。この例において、ロボット制御システム110は、検証記号530がカメラ570の真正面を向くように回動するように、ロボットハンド555を制御することができる。場合によっては、検証記号は、カメラ視野510において球面に対して接線方向に向くことによって、カメラ570の真正面を向くことができる。検証記号530がカメラ570の真正面を向くとき、カメラ570は、検証記号530を真正面から撮影できる場合があり、それにより、結果として生じる検証記号530の画像への斜視効果がないか、又は少ない。
一実施形態において、検証記号(例えば、530)は、第1の色を有する第1の領域と、第2の色を有する第2の領域とを含み、第1の領域の面積と第2の領域の面積との比が規定され、ロボット制御システム110の非一時的コンピューター可読媒体(例えば、記憶デバイス)上に記憶される。そのような実施形態において、制御回路111は、規定された比に基づいて、参照画像又は検証画像内の検証記号を識別するように構成することができる。例えば、図5Cに例示されるように、検証記号530は、リング状であり、第1の色を有する第1の領域531(例えば、黒色領域)を含むことができ、第1の領域531によって包囲され、第2の色を有する第2の領域533(例えば、白色領域)を含む。検証記号530内の黒色の第1の領域531の面積と白色の第2の領域533の面積との比は、識別できる規定値とすることができる。取り込まれた画像内の色を解析することによって、ロボット制御システム110は、その部分が円形領域を包囲するリング状領域であるかどうかを判断し、リング状領域の面積と円形領域の面積との間の比が規定された比に一致するかどうかを判断することによって、検証記号530に対応する画像の部分を識別できる場合がある。これにより、ロボット制御システム110が画像内に取り込まれた他の特徴から、検証記号530を区別することを可能にし得る。例えば、図5Aに例示されるように、ロボット550は、キャリブレーションパターン527及び検証記号530の組み合わせを有する第3のロボットハンド559を利用するように設定することができる。この例において、参照画像は、検証記号530及びキャリブレーションパターン527の両方を示すことができる。この例において、キャリブレーションパターン527は、いかなるリングパターンも有しない場合があるか、又は上記で論じられた規定された比とは異なる比のリングパターンを有する場合がある。制御回路111は、参照画像の部分が第1の色を有する第1の画像領域を有するか、及び第2の色を有する第2の画像領域を有するかを判断し、第1の画像領域の面積と第2の画像領域の面積との比が規定された比に等しいか否かを判断することによって、参照画像のその部分が検証記号530であるか、キャリブレーションパターン527であるかを判断することができる。
場合によっては、ロボット制御システム110は、取り込まれた画像の特定の部分が第1の色を有する第1の領域を有するか、及び第2の色を有する第2の領域を有するかを判断し、第1の領域の面積と第2の領域の面積との比が規定された範囲内にあるか否かを判断することができる。一例において、規定された比が1.5である場合には、ロボット制御システム110は、特定の領域内の比が1.4〜1.6の範囲内に入る場合に、その特定の領域が検証記号530に対応すると判断することができる。第1の領域及び第2の領域の2つの色は黒及び白には限定されず、ロボット制御システム110によって識別可能である任意の2つの異なる色とすることができる。
一態様において、検証記号(例えば、530)は、互いに同心である第1の形状及び第2の形状を含むことができ、第1の形状及び第2の形状のそれぞれの中心が実質的に同じ位置にある。例えば、検証記号は円形リングとして形成することができ、円形リングは、互いに同心である第1の円及び第2の円を含む。より具体的には、図5Cに示されるように、検証記号530は、第1の形状535(例えば、外円)及び第2の形状537(例えば、内円)を含むことができる。第1の形状535の中心及び第2の形状537の中心が実質的に同じ位置にあるように、第1の形状535及び第2の形状537は互いに同心とすることができる。例えば、第1の形状535の中心が座標
にあり、第2の形状537の中心が座標
にある場合には、座標
及び座標
は、実質的に同じであるとすることができる。
図4Aに戻ると、方法400は、ステップ407をさらに含むことができ、そのステップでは、制御回路111が、検証記号に関する参照画像座標を判断し、参照画像座標は、参照画像内に検証記号(例えば、530)が現れる座標である。例えば、図6Aに例示されるように、検証記号530の画像を参照箇所610Dにおいて取り込むことができ、参照画像として使用することができる。検証記号530は、特定の座標において参照画像内に現れることができ、その座標は参照画像座標と呼ばれる場合がある。
一実施形態において、上記で論じられたように、検証記号(例えば、530)は、互いに同心である第1の形状及び第2の形状を含むことができ、第1の形状及び第2の形状のそれぞれの中心が、実質的に同じ箇所にある。そのような実施形態において、制御回路111は、ステップ407において、参照画像内の第1の形状の中心の第1の座標を特定することと、参照画像内の第2の形状の中心の第2の座標を特定することと、参照画像内の第1の座標及び第2の座標の平均として参照画像座標を特定することとによって、そのような検証記号に関する参照画像座標を特定するように構成することができる。
例えば、図7Aは、参照箇所のうちの参照箇所N(ただし、Nは整数)において取り込まれた参照画像710を示す。参照画像710は、検証部分730を含み、検証部分は、図5A、図5B、又は図5Cの検証記号530を示す参照画像710内の画像部分である。図1A又は図1Bのロボット制御システム110は、検証部分730から、図5Cの検証記号530の第1の形状535と同じ、又は実質的に同じである第1の形状735(例えば、外円)を識別するように構成することができる。ロボット制御システム110は、検証部分730から、図5Cの検証記号530の第2の形状537と同じ、又は実質的に同じである第2の形状737(例えば、内円)をさらに識別するように構成することができる。その後、参照箇所Nに関して、ロボット制御システム110は、参照画像710内に示される第1の形状735の中心の第1の座標
(すなわち、第1の形状735の中心座標)と、参照画像710内に示される第2の形状737の中心の第2の座標
(すなわち、第2の形状737の中心座標)とを判断することができる。参照画像710が参照箇所Nにある検証記号530に対応するとき、参照画像710に関する参照画像座標
を全体として判断するために、ロボット制御システム110は、以下のように、参照画像710内の第1の座標
及び第2の座標
の平均を計算することができる。
一実施形態において、検証記号に関する参照画像座標は、その中心座標とすることができ、第1の形状735及び第2の形状735のそれぞれの中心座標に基づいて、検証記号530の中心座標を特定することは、画像ノイズに対する検証プロセスのロバストネスを改善することができる。例えば、画像ノイズは、第1の形状735に関する中心座標の決定に誤差を導入する場合があるが、第2の形状737に関する中心座標の特定に誤差を導入しない場合がある。場合によっては、第2の形状737が実際には第1の形状735と同じ中心位置を共有する場合があるが、画像ノイズによって、第2の形状737の中心座標が第1の形状735の中心座標とは異なるように画像内に現れる場合がある。このシナリオにおいて、検証記号530の中心座標として第2の形状737の中心座標を単に使用すると、結果として望ましくない誤差量が生じる場合がある。誤差量は、検証記号530の中心座標として、第1の形状735に関する中心座標と第2の形状737に関する中心座標との平均を使用することによって低減することができる。
一実施形態において、上記で論じられた1つ以上の参照箇所は、複数の参照画像座標にそれぞれ対応する複数の参照箇所とすることができる。この実施形態では、参照画像座標は複数の参照画像座標のうちの1つとすることができる。例えば、図6A及び図6Bに例示されるように、検証記号530が動かされるか、又は別の方法で配置される、参照箇所610A〜610I等の複数の参照箇所が存在する場合がある。検証記号530の参照箇所610A〜610Iごとに、ロボット制御システム110は、その箇所において検証記号530の、カメラ570によって取り込まれたそれぞれの参照画像を読み出すか、又は別の方法で受信することができ、それぞれの参照画像内に検証記号530が現れる位置を示すそれぞれの参照画像座標を特定することができる。
図4Aに戻ると、方法400は、ステップ409をさらに含むことができ、そのステップでは、制御回路111が、キャリブレーション情報に基づいて、ロボット操作を実行するように、ロボットアームの動作を制御する。一実施形態において、このステップは、制御回路111が、カメラキャリブレーション情報に基づく第2の動作コマンドを生成することと、第2の動作コマンドを通信インターフェース113に出力することとを含むことができる。通信インターフェース113は、その後、ロボットアームの動作を制御するために、第2の動作コマンドをロボットに通信することができる。例えば、図5Aに例示されるように、第1のカメラキャリブレーション後に、ロボット制御システム110は、物体582A、582B、及び582Cを持ち上げる等の、ロボット作業を含むロボット操作を実行するように、ロボット550を制御する。ロボット550の動作は、第1のカメラキャリブレーションから得られるカメラキャリブレーション情報に基づくことができ、かつカメラ570によって取り込まれる物体582A、582B、582Cの画像に基づくことができる。
ステップ411において、制御回路111がロボット操作中に休止期間を検出する。一態様において、ロボットの休止期間は、ロボット操作中にロボットがロボット作業を実行していない期間とすることができる。場合によっては、ロボット操作がコンベヤベルト573から物体を持ち上げることに基づく場合には、休止期間は、コンベヤベルト573上に物体が存在しないことに基づくことができる。より具体的には、コンベヤベルト573は、ロボットアーム553によって到達可能とすることができ、制御回路111は、コンベヤベルト573上に物体が存在しないこと、又はロボット550とコンベヤベルト573上の最も近い物体との間の距離が規定された距離閾値を超過することを検出することによって、休止期間を検出するように構成される。場合によっては、制御回路111は、休止期間が発生しようとしていることを示す信号を受信することができ、その信号は、ロボット操作を監視する別のデバイス又は構成要素から受信される場合がある。例えば、図5Aに例示されるように、ロボット制御システム110は、第2の物体582Bと第3の物体582Cとの間に長い距離があるために、ロボット操作中に、第2の物体582Bを持ち上げることを含むロボット作業と、第3の物体582Cを持ち上げることを含むロボット作業との間に休止期間を検出することができる。この休止期間中、ロボット550が第2の物体582Bを持ち上げた後に、物体582Cはロボット550によってまだ到達可能でないので、ロボットは、ロボット作業を実行していない休止期間を有することができる。一例において、ロボット制御システム110は、コンベヤベルト573上の物体がロボット550によって到達可能でないときに、及び/又はロボット550とコンベヤベルト573上の上流の最も近い物体(例えば、第3の物体582C)との間の距離が或る特定の閾値を超過するとロボット制御システム110が判断するときに、休止期間を検出することができる。
図4A及び図4Bに戻ると、方法400はステップ451をさらに含むことができ、そのステップでは、制御回路111が、休止期間中に、検証記号530をステップ403において使用された(参照画像を取り込むために使用された)少なくとも参照箇所に動かすように、ロボットアーム553を制御する。一実施形態において、ステップ451は、制御回路111が第3の動作コマンドを生成することと、第3の動作コマンドを通信インターフェース113に出力することとを含むことができる。通信インターフェース113は、動作コマンドに基づいて、ロボットアーム553が動くように、第3の動作をロボットに通信するように構成することができる。場合によっては、第3の動作コマンドは、参照箇所に対応する1組の記憶されたモーターコマンドを含むことができる。場合によっては、第3の動作コマンドは、ステップ401からのカメラキャリブレーション情報に基づいて生成することができる。場合によっては、ステップ451の第3の動作コマンドは、ステップ401からのカメラキャリブレーション情報に頼らない。
ステップ453において、制御回路111が、休止期間中にカメラ(例えば、570)から検証記号(例えば、530)のさらなる画像を読み出すか、又は別の方法で受信し、さらなる画像は、検証のための検証画像であり、休止期間中の少なくとも参照箇所における検証記号の画像である。すなわち、参照箇所に関する検証画像は、検証記号(例えば、530)が参照箇所にあるか、又は参照箇所にあった間に取り込まれる。一実施形態において、ステップ453は、制御回路111が、検証画像を取り込むようにカメラ(例えば、570)を制御するカメラコマンドを生成することを含む。制御回路111は、通信インターフェース113にカメラコマンドを出力することができ、通信インターフェースがカメラコマンドをカメラ(例えば、570)に通信することができる。一実施形態において、ステップ451は、検証記号を複数の参照箇所に動かすようにロボットアームを制御することと、カメラによって取り込まれた複数のそれぞれの検証画像を受信することとを含むことができる。例えば、図6A及び図6Bに例示されるように、休止期間中に、ロボット制御システム110は、検証記号530を参照箇所610A〜610Iのうちの1つに動かし、その箇所における検証記号530の画像を検証画像として取り込むように、ロボット550のロボットアーム553を制御することができる。休止期間がまだ終わっていない場合、より具体的には、休止期間内に十分な長さの時間が残っている場合には、ロボット制御システム110は、検証記号530を参照箇所610A〜610Iのうちの別の箇所に動かし、その他の箇所における検証記号530の画像を別の検証画像として取り込むように、ロボット550のロボットアーム553を制御することができる。休止期間が終了する場合には、ロボット制御システム110は、検証画像を取り込むのを中止することができる。その場合に、各休止期間中に、ロボット制御システム110は、検証記号530を参照箇所610A〜610Iのうちの1つ以上に動かし、参照箇所610A〜610Iの1つ以上のそれぞれの参照箇所において検証画像を取り込むように、ロボット550のロボットアーム553を制御することができる。
図4Bに戻ると、方法400は、ステップ455をさらに含むことができ、そのステップでは、制御回路111が、検証のために使用される検証画像座標を判断し、検証画像座標は、検証画像内に検証記号が現れる座標である。検証記号(例えば、530)が複数の参照箇所(例えば、610A〜610I)に動かされる場合には、カメラ(例えば、570)が複数の参照箇所にそれぞれ対応する複数の検証画像を取り込むことができ、制御回路111が、複数の検証画像にそれぞれ対応し、複数の参照箇所にそれぞれ対応する複数の検証画像座標を特定することができる。複数の検証画像は全て、カメラ(例えば、570)によって単一の休止期間において取り込まれる場合があるか(例えば、単一の休止期間が、ロボットアームが検証記号(例えば、530)を全ての参照箇所610A〜610Iに動かすことができるほど十分に長い場合)、又は複数の異なる休止期間において取り込まれる場合がある(例えば、各休止期間が、ロボットアームが検証記号530を全ての参照箇所610A〜610Iに動かすほど十分に長くない場合)。
一実施形態において、検証画像座標は、参照画像座標と同じようにして特定することができる。例えば、検証画像座標は検証記号(例えば、530)の中心座標とすることができ、検証画像(例えば、760)内の検証記号(例えば、530)の第1の形状の中心座標と、検証記号の第2の形状の中心座標との平均として特定することができる。例えば、図7Bは、参照箇所のうちの参照箇所Nにおいて取り込まれた検証画像760を示す。検証画像760は検証部分780を示し、その部分は、検証記号530を示す検証画像760内の画像部分である。ロボット制御システム110は、検証部分780から、図5Cの検証記号530の第1の形状585と同じ、又は実質的に同じである第1の形状785を識別することができる。ロボット制御システム110はさらに、検証部分780から、検証記号530の第2の形状587と同じ、又は実質的に同じである第2の形状787を識別することができる。さらに、ロボット制御システム110は、検証画像760の検証部分780内に示される第1の形状785の中心座標
を判断し、検証画像760の検証部分780内に示される第2の形状787の中心座標
を判断するように構成することができる。ロボット制御システム110はさらに、以下のように、検証画像座標760に関する検証画像座標
を、検証画像760内の第1の形状785の中心座標と第2の形状787の中心座標との平均として判断することができる。
図4Bに戻ると、方法400は、ステップ457をさらに含むことができ、そのステップでは、制御回路111が、ステップ403の参照画像座標とステップ455の検証画像座標との間の偏差量に基づいて、偏差パラメーター値を判断し、参照画像座標及び検証画像座標は、両方とも参照箇所Nと関連付けられる。一例では、参照画像座標と検証画像座標との間の偏差は、参照画像座標と検証画像座標との間の距離であってもよい。例えば、参照箇所Nにおける参照画像座標が、
として表され、参照箇所Nにおける検証画像座標が、
として表されると仮定すると、参照箇所Nにおける偏差(例えば、距離)は、
として表すことができる。
上記で論じられたように、1つ以上の参照箇所が複数の参照箇所である態様では、制御回路111は、複数の参照箇所にそれぞれ対応する複数の検証画像座標を特定するように構成することができ、上記で論じられた検証画像座標は複数の検証画像座標のうちの1つである。そのような態様において、偏差パラメーター値は、複数の参照箇所に関する、複数の参照画像座標と複数の検証画像座標との間のそれぞれの偏差量に基づき、それぞれの偏差量のうちの各偏差量は、(a)複数の参照箇所のそれぞれの参照箇所に対応する参照画像座標と、(b)同じ参照箇所に対応する検証画像座標と、の間にある。複数の検証画像座標は、複数の検証画像内に検証記号が現れるそれぞれの座標とすることができ、上記で論じられた検証画像は複数の検証画像のうちの1つである。制御回路111は、1つの休止期間内に複数の検証画像の全てを取り込むように、カメラを制御するように構成することができ、及び/又は異なる休止期間内に複数の検証画像を取り込むように、カメラを制御するように構成することができる。
例えば、図6A及び図6Bに示されるように、複数の参照箇所が存在するとき、ロボット制御システム110は、複数の参照箇所に対応する複数のそれぞれの参照画像座標を判断することができ、複数の参照箇所に対応する複数のそれぞれの検証画像座標を判断することができ、複数の参照画像座標と複数の検証画像座標との間のそれぞれの偏差量を判断することができる。偏差パラメーター値は、複数の参照画像座標と複数の検証画像座標との間のそれぞれの偏差量に基づくことができる。例えば、偏差パラメーターは、以下のように、それぞれの偏差量の平均とすることができる。
上記の式において、Nは第Nの参照箇所を指すことができ、一方、Mは参照箇所の全数を指すことができる。
図4Bに戻ると、方法400は、ステップ459をさらに含むことができ、そのステップでは、制御回路111が、偏差パラメーター値が規定された閾値(規定された偏差閾値と呼ばれる場合もある)を超過するかどうかを判断する。さらに、ステップ461において、制御回路111が、偏差パラメーター値が規定された閾値を超過すると判断するのに応答して、第2のカメラキャリブレーションを実行し、カメラに関する更新されたカメラキャリブレーション情報を特定することができる。例えば、規定された閾値を超過する偏差パラメーター値は、カメラのカメラキャリブレーション情報が古くなり、及び/又はロボット操作において望ましくない誤差量を生じさせる可能性が高いことを示す場合がある。それゆえ、偏差パラメーター値が規定された閾値を超過する場合には、カメラに関する第2のカメラキャリブレーションを実行して、カメラ(例えば、570)に関するカメラキャリブレーション情報を更新することができる。第2のカメラキャリブレーションは第1のカメラキャリブレーションと同じ技法を使用することができるが、カメラによって第1のカメラキャリブレーションより後に取り込まれた画像に基づくことができる。一例において、ステップ459が、偏差パラメーター値が規定された閾値を超過することを示す場合には、ロボット操作を中止又は中断することができ、その後、第2のカメラキャリブレーションを実行し始めることができ、第2のカメラキャリブレーションは、第2のカメラキャリブレーションのための画像を取り込むことによって開始することができる。第2のカメラキャリブレーションが完了し、カメラに関するカメラキャリブレーション情報が更新された後に、ロボット制御システム110は、更新されたカメラキャリブレーション情報を用いて、ロボット操作を再開することができる。
一実施形態において、制御回路111は、偏差パラメーター値が規定された閾値を超過しないと判断するのに応答して、さらなるカメラキャリブレーションを実行することなく(例えば、通信インターフェースを介してロボットに第4の動作コマンドを出力することによって)、休止期間後にロボット操作を継続するように、ロボットを制御するように構成することができる。そのような条件は、ステップ401からのカメラキャリブレーション情報が依然として十分に正確であること、及び望ましくない誤差量を受けることなく、ロボット操作が継続できることを示すことができる。
一実施形態において、制御回路111は、ロボットが位置する環境の温度を特定し、測定された温度に基づいて、規定された偏差閾値(偏差閾値を再規定するとも呼ばれる)又はカメラに関するカメラキャリブレーション情報の少なくとも一方を調整するように構成することができる。例えば、制御回路111は、温度を測定することによって、又は別のデバイス若しくは構成要素から温度データを受信することによって、環境の温度を特定することができる。そのような実施形態において、制御回路111は、測定された温度が規定範囲外にあるとき、規定された閾値を第1の値を有するように設定し、測定された温度が規定範囲内にあるとき、閾値を第1の値より低い第2の値を有するように設定することによって、測定された温度に基づいて、規定された閾値を調整するように構成することができる。例えば、過度に高い温度又は過度に低い温度は、カメラに変化を引き起こす場合がある。より具体的には、温度変化は、カメラの固有パラメーターに影響を及ぼす場合がある。例えば、カメラ内の構成要素は、温度が上昇するときに膨張し、温度が降下するときに収縮する場合があり、それがカメラの固有パラメーターに影響を及ぼす場合がある。それゆえ、温度又は温度変化の量に基づいて、規定された偏差閾値を調整することが有利な場合がある。例えば、温度が正常動作温度の範囲(例えば、周囲の室温に基づいて規定された範囲)内にあるとき、その温度はカメラに悪影響を及ぼさないので、規定された偏差閾値が下げられる場合がある。一方、温度が、正常動作温度の範囲外にあるとき、低温又は高温がカメラに悪影響を及ぼすので、偏差閾値が上げられる場合がある。代替の例において、偏差閾値は、さらなるカメラキャリブレーションをより頻繁にトリガーするために、温度が正常動作温度外にあるとき、より低くなるように規定することができる。この例において、偏差閾値は、温度が正常動作温度内にあるときに、さらなるカメラキャリブレーションをトリガーする頻度を下げるために、偏差閾値は、より高くなるように規定することができる。
図8は、カメラキャリブレーション及びカメラキャリブレーションの検証が実行される例示的なタイムライン800を図示する。以下の実施例は、カメラキャリブレーションを検証することを論じているが、これらはより一般的に、ロボット操作システムのために実行される任意のタイプのキャリブレーション操作を検証することに適用され得る。ロボット操作開始前、図1A又は図1Bのロボット制御システム110は、キャリブレーション期間811中に、第1のカメラキャリブレーションを実行して、カメラ(例えば、図5A又は図5Bのカメラ570)に関するカメラキャリブレーション情報を判断する。第1のカメラキャリブレーションが完了した後に、ロボット制御システム110は、参照取得期間813中に、種々の参照箇所において検証記号(例えば、検証記号530)の参照画像を取り込み、それぞれの参照画像(例えば、図7Aの参照画像710)内に検証記号が現れる参照画像座標を判断する。参照画像座標を特定すると、参照取得期間813後に、ロボット操作を開始することができる。
ロボット操作開始後、作業期間815中に、ロボット制御システム110は、1つの以上のロボット作業を実行するようにロボット(例えば、図5A又は図5Bのロボット550)を制御し、それゆえ、一実施形態において、検証画像(例えば、図7Bの検証画像760)を収集できない場合がある。ロボット制御システム110は、作業期間815後にロボットがロボット作業を実行していない休止期間817を検出する。それゆえ、休止期間817中に、ロボット制御システム110は、参照箇所のうちの第1の組の1つ以上の参照箇所(例えば、610A及び610B)においてそれぞれ、検証記号の1つ以上の検証画像を取り込む。休止期間817が終了した後、作業期間819中に、ロボット制御システム110は、1つ以上のロボット作業を実行するようにロボットを制御するのを再開し、それゆえ、検証画像を収集しない場合がある。ロボット制御システム110は、作業期間817後に、ロボットがロボット作業を実行していない休止期間821を検出する。休止期間821中に、ロボット制御システム110は、参照箇所のうちの第2の組の1つ以上の参照箇所(例えば、610C〜610E)においてそれぞれ、検証記号の1つ以上の検証画像を取り込む。休止期間821後、ロボット作業期間823中に、ロボット制御システム110は、1つ以上のロボット作業を実行するようにロボットを制御するのを再開し、それゆえ、検証画像を収集しない場合がある。ロボット制御システム110は、作業期間823後にロボットがロボット作業を実行していない休止期間825を検出する。休止期間825中に、ロボット制御システム110は、参照箇所のうちの第3の組の1つ以上の位置(例えば、610F〜610I)においてそれぞれ、検証記号の1つ以上の検証画像を取り込む。
休止期間817、821及び825中に取り込まれる検証画像(例えば、760)は、参照箇所のうちの異なるそれぞれの位置において取り込むことができる。例えば、第1の組、第2の組及び第3の組の1つ以上の位置は、互いに異なることができ、重ならないようにすることができる。さらに、休止期間825中に、ロボット制御システム110は、検証画像取り込みが完了したと判断することができ、それは、カメラキャリブレーションの検証のために十分な数の検証画像が取り込まれたことを示すことができる。一実施形態において、ロボット制御システム110は、全ての参照箇所(例えば、610A〜610I)において検証画像が取り込まれた場合に、検証画像取り込みが完了したと判断することができる。一実施形態において、ロボット制御システム110は、検証画像の数が規定された目標総数に達した場合に、検証画像取り込みが完了したと判断することができる。
検証画像取り込みが完了したと判断すると、ロボット制御システム110は、それぞれの検証画像内に検証記号が現れる検証画像座標を特定する。その後、ロボット制御システム110は、参照画像座標からの検証画像座標のそれぞれの偏差量に基づいて、偏差パラメーター値を特定する。偏差パラメーターが規定された閾値を超過する場合には、ロボット制御システム110は、別のカメラキャリブレーションを実行する。しかしながら、この例では、偏差パラメーターは規定された閾値を超過せず、それゆえ、ロボット制御システム110は、さらなるカメラキャリブレーションを実行することなく、休止期間825後、作業期間827中にロボット作業を実行し続ける。
図9は、図8のタイムラインに関する検証プロセスを示す例示的なフロー図900を図示する。ステップ901において、図1A、図1B、又は図1Cのロボット制御システム110が、カメラ(例えば、図5A又は図5Bのカメラ570)の第1のカメラキャリブレーションを実行して、カメラのカメラキャリブレーション情報を判断する。ステップ903において、ロボット制御システム110が、検証記号(例えば、図5A又は図5Bの検証記号530)を参照箇所に動かすように、ロボット(例えば、図5A又は図5Bのロボット550)を制御して、カメラを介して、それぞれの参照箇所において検証記号の参照画像(例えば、図7Aの参照画像710)のそれぞれの事例を取り込む。ステップ905において、ロボット制御システム110が、第1のカメラキャリブレーションから得られるカメラキャリブレーション情報に基づいて、ロボットのロボット操作を開始する。
ステップ907において、ロボット制御システム110が、ロボット操作中に休止期間を検出する。ステップ909において、ロボット制御システム110が、休止期間中に検証記号(例えば、図5A又は図5Bの検証記号530)を参照箇所のうちの1つ以上の参照箇所に動かすように、ロボット(例えば、図5A又は図5Bのロボット550)を制御し、カメラを介して、参照箇所のうちの1つ以上の参照箇所においてそれぞれ1つ以上の検証画像(例えば、図7Bの検証画像760)を取り込む。場合によっては、ロボット制御システム110は、検証記号を、休止期間の持続時間が許すだけ多くの参照箇所に動かすようにロボットを制御することができる。ステップ911において、ロボット制御システム110が、取り込まれた検証画像の全数が規定された目標総数に達したか否かを判断する。取り込まれた検証画像の全数が目標総数に達していなかった場合には、ロボット制御システム110は、より多くの検証画像を取り込むために、ステップ907に戻ることによって、ロボット操作中に別の後続の休止期間を検出しようと試みる。
取り込まれた検証画像の全数が、目標総数に達していた場合には、ステップ913において、ロボット制御システム110は、参照画像(例えば、710)及び検証画像(例えば、760)に基づいて、カメラキャリブレーションの検証を実行する。カメラキャリブレーションの検証は、偏差パラメーターを生成する。ステップ915において、ロボット制御システム110が、偏差パラメーターが規定された閾値を超過するか否かを判断する。偏差パラメーターが閾値を超過していない場合には、ロボット制御システム110は、ステップ919において、取り込まれた検証画像の全数を0にリセットすることができ、休止期間後にロボット操作を継続することができ、その一方で、ステップ907に戻ることによって、新たな1組の検証画像を取り込むために別の休止期間を検出しようと試みる。
偏差パラメーターが閾値を超過する場合には、ロボット制御システム110は、ロボット操作を中止し、ステップ917において、第2のカメラキャリブレーションを実行することができる。917における第2のカメラキャリブレーション後に、ロボット制御システム110は、921において、取り込まれた検証画像の全数を0にリセットすることができる。ステップ921後に、そのフロー図はステップ903に戻ることができ、ロボット制御システム110が、検証記号(例えば、530)を参照箇所に動かすように、ロボット(例えば、550)を制御し、カメラ(例えば、570)を介して、それぞれの参照箇所において検証記号の新たな1組の参照画像(例えば、710)を取り込み、それにより、後の検証のために、新たな1組の参照画像を使用できるようになる。
上記で言及されたように、本開示の一態様は、図6A〜図6Dのロボット550のロボットアーム553等のロボットアーム上の物理的位置に配置された、共通の検証記号(例えば、図6A〜図6Dの検証記号530)を取り込むか、又はそれ以外の方法で表す両方の参照画像(例えば、図7Aの参照画像710)及び検証画像(例えば、図7Bの検証画像760)を受信することを含む。一実施形態において、参照画像(例えば、710)は、早期の時点等の、第1の時点において生成され得、一方、検証画像(例えば、760)は、例えば、後の時点等の、第2の時点において生成される新しい画像であり得る。場合によっては、参照画像は、図1Cのロボット制御システム110等の、コンピューティングシステムによって生成される1つ以上のコマンド(又は、1つ以上の命令とも呼ばれる)に基づいて、生成されてもよい。場合によっては、1つ以上のコマンドは、動作コマンド及び/又はカメラコマンドを含むことができる。動作コマンドは、ロボットアームが検証記号を参照箇所に動かすためのものであり得る。例えば、動作コマンドは、ロボットアームに特定のポーズを採用させることができ、それによって検証記号が、ロボットアームの特定のポーズと関連付けられた参照箇所に動かされる。カメラコマンドは、図6A〜図6Dのカメラ570等のカメラに、ロボットアームが特定のポーズにある間、及び/又は検証記号が特定のポーズと関連付けられた参照箇所にある間に参照画像を生成させるためのものであり得る。それゆえ、参照画像は、参照箇所に対応し得る。同様に、検証画像は、動作コマンド及び/又はカメラコマンド等の1つ以上のコマンドに基づいて生成されてもよく、これは、参照画像に関して上記で論じられる動作コマンド及び/又はカメラコマンドと同一又は類似していてもよい。検証画像に関する1つ以上のコマンドは、ロボット制御システム110等の参照画像を生成させた同じコンピューティングシステムによって、又は別のコンピューティングシステムによって生成することができる。この実施例において、検証画像を生成するための1つ以上のコマンドは、検証記号を再び参照箇所に動かすことができる。例えば、1つ以上のコマンドは、ロボットアームに、参照箇所と関連付けられる特定のポーズを再び採用させることができる。
上記の実施例において、検証画像を受信するコンピューティングシステムは、それを参照画像に対して比較して、キャリブレーション情報が依然として十分に正確であるかどうかを判断することができる。キャリブレーション情報は、ロボット操作システムに対して実行されるキャリブレーション操作によって判断され得る。システムキャリブレーションとも呼ばれ得るキャリブレーション操作は、カメラキャリブレーション、ロボットキャリブレーション、又はロボット操作システムの1つ以上の構成要素を制御するための任意の他のキャリブレーションを含むことができる。一実施形態において、キャリブレーション情報は、カメラキャリブレーション情報、ロボットキャリブレーション情報、又は任意の他のキャリブレーション情報を含むことができる。上記で論じられる比較は、例えば、参照画像内に検証記号が現れる箇所と、検証画像内に検証記号が現れる箇所との間の差に基づいている、偏差パラメーター値を判断することを含み得る。偏差パラメーター値が規定された偏差閾値(例えば、所定の偏差閾値)を超過する場合等、大きすぎる場合、コンピューティングシステムは、キャリブレーション情報がもはや十分に正確でないと判断することができる。そのような状況において、キャリブレーション情報は、ミスキャリブレーション又はミスアライメントを反映する、又は含むと称される場合がある。カメラキャリブレーション情報がミスキャリブレーション又はミスアライメントを含む場合、カメラの固有特性(例えば、投影特性又はレンズ歪み特性)を正確に記述することができなくなり、及び/又はカメラとその外部環境との間の関係(例えば、カメラとロボットのベースとの間の空間的関係)を正確に記述することができなる場合がある。ロボットキャリブレーション情報がミスキャリブレーション又はミスアライメントを含むとき、ロボットアーム又は他の構成要素を所望の箇所及び/又は向きに正確に動かすことに関して信頼できない可能性がある。
一実施形態において、上記の参照画像と検証画像とを比較する方法は、複数の検証記号を含むことができる。例えば、図10A〜図10Cは、複数の検証記号530A〜530Cのグループを図示する。より具体的には、検証記号のグループ530A〜530Cは、ロボット操作システム500の一実施形態とすることができる、ロボット操作システム500Aの一部であってもよい。ロボット操作システム500Aは、ロボット550A(ロボット550の一実施形態であり得る)、カメラ視野510を有するカメラ570、及びロボットコントローラー110等のコンピューティングシステムを含み得る。ロボット550と同様に、ロボット550Aは、互いに動作可能に取り付けられる複数のアーム部分を含む、ロボットアーム553を有する。例えば、複数のアーム部分は、リンク554A〜554Eを含み得、リンク554Eに取り付けられるロボットハンド555等のロボットエンドエフェクタを含む。場合によっては、図10A〜図10Cに図示されるように、複数のアーム部分が、ロボット550Aのベース552からロボットエンドエフェクタ(例えば、ロボットハンド555)に直列に接続、又は別様に配置されてもよい。そのような場合、一連のアーム部分は、運動鎖を形成し得、その一連の特定のアーム部分の動作は、その特定のアーム部分の下流のいくつか又は全てのアーム部分の動作を引き起こし得る。特定のアーム部分の下流にあるアーム部分は、一連のアーム部分において特定のアーム部分に続くアーム部分を指し得る。例えば、リンク554B〜554E、及びロボットハンド555は、リンク554Aの下流にあり得る。言い換えると、リンク554Aは、リンク554B〜554Eの上流であり得、ロボットハンド555の上流であり得る。この実施例では、一連のアーム部分又はその部分集合内の各アーム部分は、一連のアーム部分においてアーム部分の直前にあるそれぞれのアーム部分に対して回動可能であり、伸縮可能であり、後退可能であり、又は別様に動作可能であり得る。例えば、リンク554Cは、リンク554Bに対して回動可能であり得、リンク554Bは、図10Aに図示される一連のアーム部分において、リンク554Cの直前にあるアーム部分であり得る。図10A〜図10Cの実施例では、リンク554A〜554E及びロボットハンド555は、ジョイント556A〜556Dを介して互いに動作可能に取り付けることができる。
上記で論じられるように、ロボットアーム(例えば、553)は、異なるポーズに動かされてもよく、ポーズは、ロボットアームのアーム部分(例えば、リンク)によって形成される形状、又はより一般的には幾何学形状を指してもよい。例えば、図10A〜図10Cは、ロボットアーム553に関する3つの異なるそれぞれのポーズを図示する。一実施形態において、図10A〜図10Cにおけるロボット550Aは、互いに対してリンク554A〜554E及びロボットハンド555を回動させる、並進させる(例えば、伸縮若しくは後退させる)、又は別様に動かすように構成される1つ以上のアクチュエータ(例えば、モーター)を含むことができる。そのような実施形態において、図10A〜図10Cのポーズの各々は、1つ以上のアクチュエータによって出力される動作の特定の順列と関連付けられ得る。例えば、順列は、ロボットアーム553の種々のアーム部分が、種々のアーム部分の直前のそれぞれのアーム部分に対して回動された角度値、及び/又は種々のアーム部分が、種々のアーム部分の直前のそれぞれのアーム部分に対して並進された距離を記述し得る。一例として、図10A〜図10Cにおけるポーズは、それぞれ、リンク554Aに対するリンク554Bの回動方向及び量、リンク554Bに対するリンク554Cの回動方向及び量、リンク554Cに対するリンク554Dの回動方向及び量、リンク554Dに対するリンク554Eの回動方向及び量、及びリンク554Eに対するロボットハンド555の方向及び回動を記述する5つの角度値の異なる順列と関連付けられ得る。
上記で言及されたように、図10A〜図10Cは、ロボットアーム553の1つ以上のアーム部分上に配置される複数の検証記号530A〜530Cのグループを図示する。より具体的には、検証記号530Aは、リンク554B上に配置され得、一方で検証記号530Bは、リンク554C上に配置され得、検証記号530Cは、ロボットハンド555上に配置され得る。場合によっては、ロボット(例えば、ロボット550)は、任意の数の検証記号を有することができ、それらは、任意の方法でロボット上に配置されてもよい。例えば、検証記号530A〜530Cは、ロボット550A上のそれぞれの箇所にランダムに配置され得る。場合によっては、検証記号(例えば、530A〜530C)の数及び相対配置は、1つ以上の規定された制約を受ける場合もある。例えば、それらの相対配置は、隣接する検証記号(例えば、530B及び530C)が、5cmの規定された最小距離等の、規定された最小距離(記号間隔とも呼ばれる)によって区切されることを必要とする、規定された制約の対象となり得る。そのような制約は、コンピューティングシステム(例えば、ロボットコントローラー110)が、隣接する検証記号(例えば、530C)について特定の検証記号(例えば、530B)を混同する可能性を低減し得る。
図11A〜図11Cは、複数の検証記号1130A〜1130Cのグループを含む別の例を図示する。より具体的には、検証記号1130A〜1130Cは、ロボット1150、カメラ視野1110を有するカメラ1170、及びロボットコントローラー110等のコンピューティングシステムを含むロボット操作システム1100の一部であり得る。ロボット操作システム1100及びカメラ1170は、例えば、各々が、ロボット操作システム500及びカメラ570のそれぞれ一実施形態とすることができる。ロボット1150は、リンク1154A〜1154E等の複数のアーム部分と、ロボットハンド1155(又は他のロボットエンドエフェクタ)と、を含むロボットアーム1153を有し得る。複数のアーム部分は、例えば、ジョイント1156A〜1156Dを介して、互いに動作可能に取り付けられ得る。図11Aは、ロボットアーム1153が第1のポーズであることを示し、図11Bは、ロボットアーム1153が第2のポーズであることを示す。図10A〜図10Cと同様に、複数のアーム部分は、ロボット1150のベース1152からロボットハンド1155まで、直列に接続又は別様に配置されてもよい。一連のアーム部分は、運動鎖を形成し得、その運動鎖において、一連の一アーム部分の動作は、鎖内の下流のアーム部分に伝播し得る。図11Aに図示されるように、検証記号1130Aはリンク1154C上に配置され得、一方、検証記号1130Bは、リンク1154D上に配置され得、検証記号1130Cは、ロボットハンド1155上に配置され得る。
一実施形態において、検証記号(例えば、530A〜530C、又は1130A〜1130C)のグループのうちの1つ以上の検証記号は、円形形状を有することができる。例えば、図10A〜図10Cの検証記号530A〜530C又は図11A〜図11Cの検証記号1130A〜1130Cの各々は、図5Cに関して上記で論じられるように、リングパターン、又はより具体的には円形リングであり得る。図5Cの例では、環パターンは、同心円領域(例えば、531及び533)又は同心円(例えば、535及び537)を有し得る。同心円形領域又は同心円形は、例えば、内円領域及び外円領域、又は内円並びに外円を含んでもよい。図11Cに図示される実施例では、検証記号1130Aは、一例では、半径r1,1130Aを有する内円及び半径r2,1130Aを有する外円を有する円形リングとして形成することができる。この実施例において、検証記号1130Bは、半径r1,1130Bを有する内円及び半径r2,1130Bを有する外円を有する別の円形リングであってもよい。検証記号1130Cはまた、半径r1,1130Cを有する内円及び半径r2,1130Cを有する外円を有する円形として成形されてもよい。
一実施形態において、検証記号(例えば、530A〜530C、又は1130A〜1130C)のグループは、異なるそれぞれのサイズを有するそれぞれの円形リングとして成形されてもよい。例えば、図11Cに図示されるように、検証記号1130A〜1130Cは、それぞれの外円領域又は外円について異なる半径を有し得る。すなわち、それらは、全てが互いに異なるr2,1130A、r2,1130B、及びr2,1130Cを有し得る。一実施形態において、検証記号1130A〜1130Cのための円形リングは、それらの内円領域又は内円のそれぞれの半径と、それらの外円領域又は外円のそれぞれの半径との間に異なる比率を有することができる。すなわち、比r2,1130A/r1,1130A、比r2,1130B/r1,1130B、及び比r2,1130C/r1,1130Cは、全て互いに異なってよい。以下でより詳細に論じられるように、コンピューティングシステム(例えば、ロボット制御システム110)は、検証記号1130A/1130B/1130Cを形成するそれぞれの円形リングのサイズに基づいて、及び/又は円形リングの内円の半径と円形リングの外円の半径との間のそれぞれの比に基づいて、検証記号1130A/1130B/1130Cを識別するように構成されてもよい。
一実施形態において、検証記号(例えば、図10A〜図10Cの530a〜530C、又は図11A〜図11Bの1130A〜1130C)の一部又は全ては、ロボットアーム(例えば、533又は1130)上に永久に取り付けられてもよく、又は別様に配置されてもよい。そのような実施形態は、カメラキャリブレーションを実行するために使用されるキャリブレーションパターン(例えば、図5A及び図5Bの520)を含んでよく、これは、カメラキャリブレーションに関して十分に正確な結果を得るために、非常に複雑であるパターンを収容するのに十分な大きさ、及び/又は十分な数のパターン要素を収容するのに足りる大きさであるサイズを有する。しかしながら、キャリブレーションパターン(例えば、520)のかかる大きいサイズは、キャリブレーションパターン(例えば、520)の大きいサイズが、通常のロボット操作を妨害する可能性があるため、ロボットアームの永久部分又は別様に持続的な部分であるには大きすぎることになり得る。このような例では、キャリブレーションパターン520は、例えば、通常のロボット操作を再開する前に、ロボットアーム(例えば、553)から取り外されてもよい。この実施形態では、検証記号(例えば、530A〜530C又は1130A〜1130C)の一部又は全ては、キャリブレーションパターン(例えば、520)よりも複雑ではなく、及び/又は小さくてもよい。検証記号のより小さいサイズは、通常のロボット操作中に、それらがロボットアーム(例えば、553又は1153)上に留まることを可能にしてもよく、一方で、通常のロボット操作に干渉がない、又は最小限の干渉のみを提示してもよい。それゆえ、そのような例では、検証記号(例えば、530A〜530C、又は1130A〜1130C)の一部又は全ては、場合によっては、ロボットアーム(例えば、533又は1133)上に永久に、又は別様に持続的に配置され得る。そのような配置は、ロボットコントローラー又は他のコンピューティングシステムが、より頻繁に及び/又はより迅速にキャリブレーション検証を実行することができ、更新されたカメラキャリブレーションが判断される必要があるかどうかを評価することができるという利点を提供する。
図12A及び図12Bは、カメラキャリブレーション情報等のキャリブレーション情報を検証するために、複数の検証記号を使用することに関する方法1200を示す。一実施形態において、方法1200は、図10A〜図10C、又は図11A〜図11Bのロボット制御システム110等の、コンピューティングシステムによって実行され、若しくはより具体的には、図1Cのロボット制御システム110の制御回路111等の、コンピューティングシステムの制御回路によって実行され得る。図1Cに示されるように、コンピューティングシステムは、それぞれカメラ視野510又は1110を有する、図10Aのカメラ570若しくは図11Aのカメラ1170等の、カメラ視野を有するカメラと通信するように構成される通信インターフェース113を含んでもよい。通信インターフェース113は、図10A〜図10Cのロボット550A、又は図11A〜図11Cのロボット1150等の、ロボットと通信するようにさらに構成されてもよい。上記で言及されたように、ロボット550A/1150は、互いに動作可能に取り付けられる複数のアーム部分を有するロボットアーム553/1153を含んでもよく、複数のアーム部分のそれぞれのアーム部分上に配置される検証記号のグループを含んでもよい。図10A〜図10Cの実施例では、検証記号のグループは、リンク554B、リンク554C、及びロボットハンド555上にそれぞれ配置される、検証記号530A〜530Cを含んでもよい。図11A〜図11Cの実施例では、検証記号のグループは、リンク1154C、1154D、及びロボットハンド1155上にそれぞれ配置され得る、検証記号1130A〜1130Cを含んでよい。
一実施形態において、方法1200は、ステップ1201を含むことができ、ステップでは、ロボット制御システム又は他のコンピューティングシステムの制御回路111が、ロボット操作を実行するために、ロボットアーム(例えば、ロボットアーム533/1153)の動作を制御するための動作コマンドを出力する。動作コマンドは、例えば、キャリブレーション情報に基づいてもよい。カメラキャリブレーション情報等のキャリブレーション情報は、第1のカメラキャリブレーション等の、第1のキャリブレーション操作から判断され得る。場合によっては、ステップ1201は、ロボット操作を実行するために、制御回路111がロボットアームの動作を制御する、方法400のステップ409と同一又は類似であり得る。例えば、ロボット操作は、倉庫内の箱又は他の物体を取り出すことを含む場合がある。この例において、制御回路111は、カメラ(例えば、図10A〜図10Cのカメラ570、又は図11A〜図11Bのカメラ1170)によって生成される箱の画像に基づいて、かつキャリブレーション情報、カメラと箱との間の空間関係、及び/又はロボット(例えば、ロボット550A〜1150)と箱との間の空間関係に基づいて判断するように構成され得る。一実施形態において、方法1200は、制御回路111が、キャリブレーション情報を判断するために第1のキャリブレーション操作を実行するステップを含むことができる。第1のキャリブレーション操作を実行するこのようなステップは、図4Aの方法400のステップ401と同様であり得、ステップ1201の前に実行され得る。一例として、第1のキャリブレーション操作は、カメラによって生成されるキャリブレーション画像に基づいて、カメラキャリブレーションパラメーターの推定値を判断することを含むカメラキャリブレーションであってもよい。
一実施形態において、方法1200は、ステップ1203を含むことができ、そのステップでは、制御回路111又はコンピューティングシステムの他の構成要素が、参照画像座標のグループを判断する。参照画像座標のグループは、例えば、参照画像内に検証記号(例えば、530A〜530C/1130A〜1130C)のグループが現れるそれぞれの座標であり得、参照画像は、検証記号(例えば、530A〜530C/1130A〜1130C)のグループを表すための画像であり得る。一実施形態において、参照画像座標のグループを使用して、キャリブレーション情報を検証することができる。
例えば、図13Aは、図11Aの検証記号1130A〜1130Cのグループを表す参照画像1120を図示する。図13Aの実施例では、参照画像座標のグループは、第1の参照画像座標、第2の参照画像座標、及び第3の参照画像座標を含み得る。かかる実施例では、第1の参照画像座標は、参照画像1120内に検証記号1130Aが現れる箇所を識別することができ、第2の参照画像座標は、参照画像1120内に検証記号1130Bが現れる箇所を識別することができ、第3の参照画像座標は、参照画像1120内に検証記号1130Cが現れる箇所を識別することができる。より具体的な例では、第1の参照画像座標、第2の参照画像座標、及び第3の参照画像座標の各々は、画素座標[u v]Tであってもよい。より具体的には、図13Aは、検証記号1130A、1130B、及び1130Cの3つの参照画像座標を、それぞれ、[uref_1 vref_1]T 1130A、[uref_1 vref_1]T 1130B、[uref_1 vref_1]T 1130Cとして図示する。この実施例では、ラベルref_N(例えば、ref_1)は、ロボットアーム1153が、第1のポーズ(N=1のとき)等の、N番目のポーズにあるときに生成される参照画像と関連付けられた座標を指し得る。以下でより詳細に論じられるように、図13Aの参照画像1120は、図11Aに示されるロボットアーム1153の例示的なポーズであり得る、第1のポーズに対応し得るか、又はより一般的に、第1のポーズと関連付けられ得る。異なるポーズは、検証記号1130A〜1130Cをカメラ視野1110内のそれぞれの箇所の異なるグループにおいて配置することができる。例えば、図11Aのポーズは、検証記号1130A〜1130Cを、それぞれ、3Dの箇所、[xref_1 yref_1 zref_1]T 1130A、[xref_1 yref_1 zref_1]T 1130B、[xref_1 yref_1 zref_1]T 1130Cに配置し得る。このような例では、これらの3D箇所[xref_1 yref_1 zref_1]T 1130A、[xref_1 yref_1 zref_1]T 1130B、[xref_1 yref_1 zref_1]T 1130Cは、参照画像1120内の画素座標[uref_1 vref_1]T 1130A、[uref_1 vref_1]T 1130B、[uref_1 vref_1]T 1130Cに投影するか、又は別様にマッピングすることができる。一実施形態において、画素座標 [uref_1 vref_1]T 1130A、[uref_1 vref_1]T 1130B、[uref_1 vref_1]T 1130Cの各々は、参照画像1120内にそのそれぞれの検証記号1130A/1130B/1130Cが現れる中心を識別し得る。
一実施形態において、ステップ1203は、制御回路111が、ロボット制御システム110又は他のコンピューティングシステムの通信インターフェース113及び/又は非一時的コンピューター可読媒体115から参照画像(例えば、1120)を受信することを含むことができる。例えば、図13Aの参照画像1120は、ロボットアーム1153が、図11Aのポーズであるとき、カメラ1170によって生成され得る。コンピューティングシステム110は、通信インターフェース113を介してカメラ1170から参照画像1120を受信することができ、参照画像1120を非一時的コンピューター可読媒体115に記憶することができる。ステップ1203において、制御回路111は、一例において、非一時的コンピューター可読媒体115から参照画像1120を取得するか、又は別様に受信することができる。非一時的コンピューター可読媒体115はまた、検証画像(以下で論じられる)を記憶することができ、制御回路111は、非一時的コンピューター可読媒体115から検証画像を受信することができる。
一実施形態において、制御回路111は、ロボットアーム(例えば、1153)の幾何学形状を記述する規定されたモデルに基づいて、参照画像(例えば、1120)内の検証記号(例えば、1130A〜1130C)のグループの少なくとも1つの検証記号(例えば、1130A)を識別するように構成することができる。例えば、規定されたモデルは、どのリンク、ロボットエンドエフェクタ、又は他のアーム部分がロボットアームを形成するか、それらのそれぞれのサイズ(例えば、長さ)、及びそれらがどのように接続されているか、を説明することができ、並びに/若しくはどのアーム部分が、その上に配置された少なくとも1つの検証記号(例えば、1130A)を有するか、を記述することができる。そのような実施形態において、制御回路は、モデルに基づいて、少なくとも1つの検証記号が現れることが予想される参照画像(例えば、1120)内の領域を判断し、参照画像の領域内の少なくとも1つの検証記号(例えば、1130A)を検索するように構成することができる。一実施形態において、モデルは、ロボットアーム(例えば、1153)上の検証記号(例えば、1130A)の位置を記憶することができ、又はより一般的に記述することができる。検証記号の位置(記号位置とも呼ばれる)は、ロボットアーム(例えば、1153)上の検証記号のおおよその箇所であり得る。
例えば、参照画像(例えば、1120)が、参照画像と関連付けられたポーズ、又はより具体的には、参照画像内に現れるロボットアームのポーズを生成するために使用される動作コマンドの1つ以上のパラメーター値とともに記憶される場合、1つ以上のパラメーター値及びモデルは、ロボットアームが動作コマンドに従って動かされるとき、ロボットアーム(例えば、1153)のポーズを推定するために使用され得る。以下でより詳細に論じられるように、1つ以上のパラメーター値は、一実施形態において、ロボットアーム(例えば、1153)を動かすために使用される1つ以上のアクチュエータ(例えば、1つ以上のモーター)を制御するために使用される1つ以上のアクチュエータパラメーターに属し得る。推定されるポーズを使用して、ロボットアーム(例えば、1153)上の検証記号(例えば、1130A)の箇所を推定することができ、推定される箇所を使用して、検証記号が参照画像(例えば、1120)内に現れる可能性が高い箇所を推定することができる。
上記の実施例では、制御回路111は、検証記号又は複数の検証記号が現れることが予想される参照画像(例えば、1120)の領域(複数の場合もある)に焦点を合わせるように構成され得る。かかる技術は、制御回路111が検証記号(例えば、1130A〜1130C)について参照画像(例えば、1120)の全体を検索することを回避し、それゆえ参照画像(例えば、1120)内の検証記号(例えば、1130A〜1130C)をより迅速に識別することを可能にし得る。上記の実施例におけるモデルはまた、検証画像内の検証記号を検索するために使用され得る(以下で論じられる)。
上記で言及されたように、検証記号(例えば、1130A〜1130C)のグループは、一実施形態において、それぞれの円環として成形されてもよい。そのような実施形態では、制御回路111は、検証記号を形成する円形リングを識別することによって、参照画像(例えば、1120)内の検証記号(例えば、1130A)を認識するか、又はそうでなければ識別するように構成することができる。検証記号のグループが、図11Cに関して、上記に示されるように、異なるそれぞれのサイズを有するそれぞれの円形リングとして成形される場合、制御回路111は、検証記号を形成するそれぞれの円形リングのサイズ(例えば、半径r2,1130A)に基づいて、検証記号(例えば、1130A)を識別するように構成することができる。場合によっては、検証記号(例えば、1130A)が少なくとも第1の円形領域若しくは第1の円形及び第2の円形領域若しくは第2の円形を有する円形リングとして成形される場合、制御回路111は、第1の円形領域若しくは第1の円形の半径と第2の円形領域若しくは第2の円形の半径との間の比に基づいて、検証記号を識別するように構成することができる。例えば、制御回路111は、円形リングを識別し、リングが、比r2,1130A/r1,1130Aを有することを確認することに基づいて、検証記号1130Aを識別するように構成することができる。
上記でさらに言及されたように、ステップ1203の参照画像(例えば、図13Aの1120)は、ロボットアーム(例えば、1153)が、図11Aに図示されるポーズ等の、第1のポーズにあるとき、カメラ(例えば、図11Aの1170)によって生成され得る。参照画像は、第1の期間中、又はより一般的には、第1の時点でカメラによって生成され得る。第1の期間は、参照画像を生成するために使用される、又は別様に関連付けられる期間(例えば、ミリ秒、秒、又は分の期間)を指してもよい。例えば、第1の期間は、参照画像を取り込むためのカメラ動作用の時間を含んでよく、いくつかの例では、検証記号をカメラ視野内に位置決めするためのロボット動作のための時間をさら含んでよい。場合によっては、参照画像が生成される第1の期間は、例えば、ステップ1201及び/又はステップ1203の数時間、数日、又は数週間前であってもよい。一実施形態において、コンピューティングシステム、又はより具体的には、ステップ1201及び1203を実行する制御回路111は、参照画像(例えば、1120)を生成することに非関与であり得る。一実施形態において、コンピューティングシステム、又はより具体的には、ステップ1201及び1203を実行する制御回路111は、参照画像(例えば、1120)の生成に関与することができる。例えば、コンピューティングシステムは、ステップ1201及び/又は1203に先行するステップにおいて、ロボットアーム(例えば、1153)を第1のポーズに動作させるための第1の期間中に動作コマンドを出力し得る。そのような例において、この先行するステップは、方法1200の一部であり得る。第1のポーズは、検証記号(例えば、1130A〜1130C)のグループを、上記で論じられた箇所[xref_1 yref_1 zref_1]T 1130A、[xref_1 yref_1 zref_1]T 1130B、[xref_1 yref_1 zref_1]T 1130C等の、第1のポーズと関連付けられたそれぞれの箇所の第1のグループに動かされ得る。場合によっては、このようなステップは、図4Aのステップ403と同様であってもよい。上記の例では、コンピューティングシステム、又はより具体的には、制御回路111は、このステップにおいて、カメラコマンドをさらに出力することができ、これにより、ロボットアーム(例えば、1153)が第1のポーズにある間に、カメラ(例えば、1170)に参照画像(例えば、1120)を生成させる。一実施形態において、コンピューティングシステムは、参照画像(例えば、1120)を、カメラから受信し、かつ参照画像を、図1Cの非一時的コンピューター可読媒体115又は別の非一時的コンピューター可読媒体に記憶することができる。場合によっては、コンピューティングシステムは、ロボットアーム(例えば、1153)が第1のポーズに戻ること、及び/又は検証記号(例えば、1130A〜1130C)をそれぞれの箇所の第1のグループに戻すことを可能にする情報を、さらに記憶してもよい。例えば、コンピューティングシステムは、それぞれの箇所の第1のグループを記憶し得るか、又はより具体的に、それらの3D座標を記憶し得、及び/若しくはロボットアーム(例えば、1153)を第1のポーズに動かすための動作コマンドのパラメーター値を記憶し得る。一実施形態において、座標及び/又は動作コマンドは、記憶された情報を上記で論じられた参照画像(例えば、1120)と関連付ける態様で、非一時的コンピューター可読媒体115内に記憶することができる。
一実施形態において、ロボットアームを第1のポーズに動かすために上記で論じられた動作コマンドは、ロボットアーム(例えば、1153)の動作を記述する1つ以上のパラメーター値を含むことができる。上記で言及されたように、場合によっては、1つ以上のパラメーター値は、ロボットアーム(例えば、1153)のために動作を作成する1つ以上のアクチュエータを制御する1つ以上のアクチュエータパラメーターに属し得る。そのような場合、1つ以上のパラメーター値は、1つ以上のアクチュエータパラメーター値(ロボットジョイント値とも呼ばれる)と呼ばれることができる。例えば、1つ以上のアクチュエータパラメーター値は、例えば、互いに対するロボットアームのアーム部分のそれぞれの回動量、互いに対するアーム部分のそれぞれの箇所及び/又は向き、並びに/若しくはアーム部分を接続するジョイントのそれぞれの箇所(例えば、1156A〜1156D)を記述し得る。例えば、動作コマンドの1つ以上のアクチュエータパラメーター値は、それぞれの角度値を記述することができ、それによってロボット1150内のモーターが、それらの直前のアーム部分に対して種々のアーム部分(例えば、リンク1154A〜1154E、及びロボットハンド1155)を回動させる。
一実施形態において、上記で論じられた動作コマンドは、任意のパラメーター値(複数の場合もある)(例えば、ランダムなパラメーター値(複数の場合もある))を有し得、動作コマンドによって引き起こされる第1のポーズは、任意のポーズであり得る。一実施形態において、上記で論じられた動作コマンドは、検証記号(例えば、1130A〜1130C)の一部又は全てが、参照画像(例えば、1120)内に所望の外観を有することを可能にする動作コマンドであってもよい。例えば、上記で論じられたように、検証記号(例えば、1130A〜1130C)のグループの一部又は全ては、同心円形領域又は同心円によって形成されるリング形状等の、円形形状を有し得る。かかる一例では、検証記号のうちの少なくとも1つ(例えば、1130A)が、カメラ(例えば、1170)に対してある特定の向きにあるとき、少なくとも1つの検証記号(例えば、1130A)は、完全に円形に見えるのではなく、得られた参照画像において楕円形に見えることがある。楕円形の外観は、不正確なキャリブレーション検証をもたらす可能性がある。例えば、検証記号1130Aに関する参照画像座標が、参照画像内に記号の中心が現れる箇所である場合、この参照画像座標は、参照画像内に検証記号1130Aが楕円形に現れるときを、正確に判断することがより困難であり得る。さらに、参照画像内の検証記号1130Aを識別する(例えば、参照画像内の他の特徴から検証記号1130Aを区別する)ことが、参照画像内のリングパターンを識別することと、リングパターンが、記号と関連付けられた同心円間の特定の比(例えば、検証記号1130Aと関連付けられた比r2,1130A/r1,1130A)を有することを検証することと、に依存する場合、この識別は、リングパターンが参照画像内に楕円形に見えるとき、正確に実行することがより困難であり得る。それゆえ、制御回路111が、参照画像を生成することと関連付けられた動作コマンドを出力することを含む場合、制御回路111は、検証記号(例えば、1130A〜1130C)のグループを参照画像内に完全に又は実質的に円形に見えるような態様で、位置決めさせる動作コマンドを生成することを試みることができる。
一例として、制御回路111は、ロボットアーム(例えば、1153)を、検証記号(例えば、1130A〜1130C)のグループが、カメラ(例えば、1170)に真正面を向くポーズに動作させる、動作コマンドを生成することができる。例えば、ポーズは、検証記号(例えば、1130A〜1130C)のグループのうちの少なくとも1つの検証記号を、カメラ(例えば、1170)に対して凹形である仮想球の表面に対して接線方向に向くようにさせてもよい。図11Aでは、ロボットアーム1153のための図示されたポーズが、検証記号1130A及び検証記号1130Bに、カメラ170に対して凹形である仮想球1121の表面に対して接線方向にあるそれぞれの向きを有することをもたらし得、及び検証記号1130Cに、カメラ1170に対してもまた凹形である仮想球1123の表面に対して接線方向になる向きを有することを可能にし得る。上記で論じられた第1のポーズであり得る、かかるポーズにおいて、検証記号(例えば、1130A〜1130C)のグループは、参照画像(例えば、1120)内にそれぞれの円形形状として現れ得る。より具体的には、かかる実施例における検証記号(例えば、1130A〜1130C)のグループは、参照画像内に偏心率を伴わずに現れるように、又は規定された偏心率閾値未満であるそれぞれの量の偏心率で現れるような態様で位置決めされ得る。上記の実施例において、想像される円1121及び1123は、カメラ(例えば、1170)に中心を置くことができる。一実施形態において、制御回路111は、ランダムな動作コマンドを生成し、ランダムな動作コマンドを通して検索して、検証記号のグループについて上記で論じられた向きを生成することができるものを見出すように構成されてもよい。見出された動作コマンドは、参照画像(例えば、1120)を生成するために、制御回路111によって出力することができる。
図12A〜図12Bに戻ると、一実施形態における方法1200は、ステップ1205を含み、そのステップでは、制御回路111は、図10A又は図11Aに図示される第1のポーズ等の、第1のポーズに動かすように、ロボットアームを制御するための動作コマンドを出力し、第1のポーズは、上記で論じられたように、第1の期間中に参照画像(例えば、1120)が生成されるポーズである。場合によっては、動作コマンドは、通信インターフェース113を介してロボット(例えば、550A/1150)に出力することができる。一実施形態において、ステップ1205における動作コマンドは、ステップ1201の動作コマンドに加えてあるため、追加の動作コマンドと称することができる。追加の動作コマンドは、第1の期間に続く、第2の期間、又はより一般的には、第2の時点の間に出力され得る。第2の期間は、検証画像を生成するために使用される、又は別様に関連付けられる期間(例えば、ミリ秒、秒、又は分の期間)を指し得る。例えば、第2の期間は、検証記号をカメラ視野内に位置決めするロボット動作のための時間及び/又は検証画像を取り込むためのカメラ操作のための時間を含み得る。場合によっては、第2の期間(又はより一般的には、第2の時点)は、第1の期間(又はより一般的には、第1の時点)に数時間、数日、又は数週間にわたって続いてもよい。以下でより詳細に論じられるように、追加の動作コマンドを使用して、第2の期間中に検証画像を生成することができる。一実施形態において、追加の動作コマンドは、検証記号(例えば、1130A〜1130C)のグループがカメラ(例えば、1170)に真正面を向くポーズ(例えば、図11Aの第1のポーズ)にロボットアーム(例えば、1153)を動かすことができる。例えば、検証記号のグループは、カメラに対して凹形である1つ以上の仮想球に対して接する、それぞれの向きを有し得る。かかるポーズでは、検証記号(例えば、1130A〜1130C)のグループは、検証画像(例えば、図13Bの1160)内にそれぞれ円形形状として現れ得る。
一実施形態において、方法1200が、上記で論じられたように、第1の期間中に参照画像を生成するための動作コマンドを出力するステップを含む場合、第1の期間中に参照画像を生成するための動作コマンドは、第1の追加の動作コマンドであってもよく、一方で第2の期間中に検証画像を生成するためのステップ1205における動作コマンドは、第2の追加の動作コマンドであってもよい。場合によっては、第1の追加の動作コマンドは、より早い動作コマンドであってもよく、一方で第2の追加の動作コマンドは、より遅い動作コマンドであってもよい。場合によっては、第1の追加の動作コマンドは、第1のポーズに動くようにロボットアームを制御するための1つ以上のアクチュエータパラメーター値(又はロボットジョイント値)を有することができ、第2の追加の動作コマンドはまた、1つ以上のアクチュエータパラメーター値を有することができる。より具体的には、第1の追加の動作コマンド及び第2の追加の動作コマンドは、同じアクチュエータパラメーター値を有し得る。一例として、ロボット(例えば、1150)が、種々のアーム部分(例えば、リンク1154A〜1154E、及びロボットハンド1155)を互いに対して回動させる複数のモーターを含む場合、1つ以上のアクチュエータパラメーター値は、複数のモーターによってどの程度の回動が出力されるかを制御する複数のそれぞれの角度値を含み得る。この実施例では、第1の追加の動作コマンド及び第2の追加の動作コマンドは、両方とも、複数のモーターによってどの程度の回動が出力されるかを制御する、同一の複数のそれぞれの角度値を含んでよい。
一実施形態において、第1の追加の動作コマンド及び/又は第2の追加の動作コマンドは、図4Aのステップ411に関して上記で論じられたアイドル期間等の、それぞれのアイドル期間中に出力することができる。場合によっては、キャリブレーション情報が、キャリブレーション操作を実行することによって判断される場合、第1の追加の動作コマンドは、キャリブレーション操作が実行された直後、又はキャリブレーション操作に続く最も早いアイドル期間中に出力され得る。いくつかの状況において、第2の追加の動作コマンドは、キャリブレーション操作が実行されてからの規定された期間が経過すること、ロボットを含む衝突事象、又はカメラとロボット又はその一部との間の変位若しくはミスアライメントの可能性をもたらし得る任意の他の事象(例えば、地震等の天災)等の、規定されたトリガー条件、若しくはいくつかの他のトリガー条件に応答し得る。検証画像を生成することが、制御回路111がカメラコマンドを出力することを含む場合、いくつかの例において、カメラコマンドはまた、規定されたトリガー条件に応答して出力され得る。
一実施形態において、ロボットアーム(例えば、1153)に関するステップ1205の第1のポーズは、上記で論じられたように、ロボットアーム上に配置される検証記号(例えば、1130A〜1130C)のグループに関するそれぞれの参照箇所の特定のグループと関連付けられ得る。例えば、それぞれの参照箇所のグループは、3D箇所[xref_1 yref_1 zref_1]T 1130A、[xref_1 yref_1 zref_1]T 1130B、[xref_1 yref_1 zref_1]T 1130Cであり得る。参照画像(例えば、1120)が生成されるとき、検証記号(例えば、1130A〜1130C)のグループは、第1のポーズと関連付けられたそれぞれの参照箇所のグループに位置し得る。ステップ1205において、追加の動作コマンドがロボットアームを第1のポーズに戻す場合、検証記号(例えば、1130A〜1130C)のグループは、参照箇所のグループ(例えば、[xref_1 yref_1 zref_1]T 1130A、[xref_1 yref_1 zref_1]T 1130B、[xref_1 yref_1 zref_1]T 1130C)に戻り得る。かかる実施例では、検証記号(例えば、1130A〜1130C)のグループは、参照画像(例えば、1120)が生成されるとき、それぞれの参照箇所のグループに配置することができ、検証画像(例えば、1160)が生成されるとき、再びそれぞれの参照箇所のグループに配置することができる。
図12A〜図12Bに戻ると、一実施形態における方法1200は、ステップ1207を含むことができ、そのステップでは、制御回路111が、図13Bにおける検証画像1160等の検証画像を受信する。上記で言及されたように、参照画像(例えば、1160)は、検証記号(例えば、1130A〜1130C)のグループを表すための画像であり得る。この実施例では、検証画像(例えば、1160)は、検証記号(例えば、1130A〜1130C)のグループもまた表すためのさらなる画像であってもよく、図11Aに図示される第1のポーズ等の、ステップ1205の追加の動作コマンドの結果として、ロボットアーム(例えば、1153)が第1のポーズに動かされたときに生成されてもよい。
一実施形態において、方法1200は、ステップ1209を含むことができ、そのステップでは、制御回路111が、検証画像座標のグループを判断する。この実施形態では、検証画像座標のグループは、検証画像(例えば、図13Bの1160)内に検証記号(例えば、1130A〜1130C)のグループが現れる、それぞれの座標であり得る。一実施形態において、検証画像座標のグループは、カメラキャリブレーション情報等の、キャリブレーション情報を検証するためのものであり得る。ステップ1203における参照画像座標についての上述の論考と同様に、一例における検証画像座標のグループは、第1の検証画像座標、第2の検証画像座標、及び第3の検証画像座標を含んでよい。より具体的な例では、第1の検証画像座標、第2の検証画像座標、及び第3の検証画像座標の各々は、例えば、そのそれぞれの検証記号の中心を識別するピクセル座標であり得る。例えば、図13Bは、3つの検証画像座標、又はより具体的に、ピクセル座標[uverify_1 vverify_1]T 1130A、[uverify_1 vverify_1]T 1130B、[uverify_1 vverify_1]T 1130Cを図示し、検証画像1160内に検証記号1130A〜1130Cのそれぞれの中心が現れる。参照画像座標の論考と同様に、ラベルverify_N(例えば、verify_1)は、ロボットアームが第1のポーズ(N=1)等の、N番目のポーズにあるときに生成される検証画像と関連付けられた座標を指し得る。
一実施形態において、制御回路111は、複数の参照画像及び複数の検証画像(例えば、5つの参照画像及び5つの検証画像)について、複数回ステップ1203〜1209を実行することができる。複数の参照画像及び複数の検証画像は、複数のそれぞれのポーズに対応し得る。例えば、図10A〜図10Cは、ロボットアーム553のための一連の3つのポーズを図示する。この例では、ロボットコントローラー110又は任意の他のコンピューティングシステムの制御回路111は、図10Aに示されるような、第1のポーズと両方が関連付けられた第1の参照画像及び第1の検証画像を受信し得、図10Bに示されるような、第2のポーズ両方が関連付けられた第2の参照画像及び第2の検証画像、並びに図10Cに示されるような、第3のポーズと両方が関連付けられた第3の参照画像及び第3の検証画像を受信し得る。別の例では、図13Aの参照画像1120は、第1の参照画像であってもよく、図13Bの検証画像1160は、第1の検証画像であってもよく、これらの両方が、ロボットアーム1153について図11Aに図示される第1のポーズと関連付けられてもよい。この例において、制御回路111は、図14Aの第2の参照画像1122、及び図14Bの第2の検証画像1162をさらに受信することができ、これらの両方が、図11Bに図示される第2のポーズと関連付けられてもよい。この実施例では、図13Aの参照画像座標[uref_1 vref_1]T 1130A、[uref_1 vref_1]T 1130B、[uref_1 vref_1]T 1130Cは、第1の参照画像座標のグループであってもよく、一方で図13Bの検証画像座標[uverify_1 vverify_1]T 1130A、[uverify_1 vverify_1]T 1130B、[uverify_1 vverify_1]T 1130Cは、第1の検証画像座標のグループであってもよい。この実施例の制御回路111は、さらに、図14Aの第2の参照画像1122の第2の参照画像座標のグループ[uref_2 vref_2]T 1130A、[uref_2 vref_2]T 1130Cを判断し、図14Bの第2の検証画像1162の第2の検証画像座標のグループ[uverify_2 vverify_2]T 1130A、[uverify_2 vverify_2]T 1130B、[uverify_2 vverify_2]T 1130Cを判断するように構成され得る。上記の実施例において、制御回路111は、いくつかの例において、ロボットアーム(例えば、1153)を複数のそれぞれのポーズに動かすための異なるそれぞれの動作コマンドを出力するように構成することができ、複数の参照画像及び/又は複数の検証画像は、複数のそれぞれのポーズと関連付けられる。
図12A〜図12Bに戻ると、一実施形態において、方法1200は、ステップ1211を含んでよく、ここで、制御回路111は、参照画像座標のグループ(例えば、図13Aの[uref_1 vref_1]T 1130A、[uref_1 vref_1]T 1130B、[uref_1 vref_1]T 1130C )と検証画像座標のグループ(例えば、図13Bの[uverify_1 vverify_1]T 1130A、[uverify_1 vverify_1]T 1130B、[uverify_1 vverify_1]T 1130C)との間のそれぞれの偏差量に基づく、それぞれの偏差パラメーター値のグループを判断する。例えば、図13A及び図13Bの文脈におけるそれぞれの偏差パラメーター値のグループは、第1の偏差パラメーター値、第2の偏差パラメーター値、及び第3の偏差パラメーター値を含んでよい。第1の偏差パラメーター値は、参照画像1120内の検証記号1130Aについての第1の参照画像座標[uref_1 vref_1]T 1130Aと、検証画像1160内の検証記号1130Aについての第1の検証画像座標[uverify_1 vverify_1]T 1130Aとの間の偏差量に基づいてもよい。例えば、第1の偏差パラメーター値は、図4Bのステップ457に関して上記で論じられたように、第1の参照画像座標と第1の検証画像座標との間の距離に等しく、又はより一般的に距離に基づいてもよい。同様に、第2の偏差パラメーター値は、参照画像1120内の検証記号1130Bについての第2の参照画像座標[uref_1 vref_1]T 1130Bと、検証画像1160内の検証記号1130Bについての第2の検証画像座標[uverify_1 vverify_1]T 1130Bとの間の偏差量に基づいて(例えば、等しくとも)よい。さらに、第3の偏差パラメーター値は、参照画像1120内の検証記号1130Cについての第3の参照画像座標[uref_1 vref_1]T 1130Cと、検証画像1160内の検証記号1130Cについての第3の検証画像座標[uverify_1 vverify_1]T 1130Cとの間の偏差量に基づいてもよい。上記の実施例において、それぞれの偏差パラメーター値のグループは、検証記号1130A〜1130Cのグループと関連付けられる。すなわち、第1の偏差パラメーター値は、検証記号1130Aと関連付けられ、一方で第2の偏差パラメーター値は、検証記号1130Bと関連付けられ、第3の偏差パラメーター値は、検証記号1130Cと関連付けられる。
一実施形態において、それぞれの偏差パラメーター値のグループのいくつか又は全ては、参照画像及び検証画像の単一の対に上基づいてもよく、これらの両方が、ロボットアームのための共通のポーズと関連付けられてもよい。例えば、上記で論じられた第1の偏差パラメーター値は、検証記号1130Aと関連付けられてもよく、参照画像1120及び検証画像1160の単一の対に基づいてもよく、これらの両方が、図11Aのポーズ等の、共通のポーズと関連付けられる。
一実施形態において、それぞれの偏差パラメーター値のグループのいくつか又は全ては、それぞれの参照画像及びそれぞれの検証画像の複数の対に基づいてもよく、各対は、ロボットアームのための複数のポーズのそれぞれのポーズと関連付けられる。一例として、検証記号1130Aと関連付けられる上記で論じられた第1の偏差パラメーター値は、(図13A及び図13Bの)参照画像1120及び検証画像1160の第1の対、並びに(図14A及び図14Bの)参照画像1122及び検証画像1162の第2の対に基づいてもよい。第1の対は、図11Aの第1のポーズと関連付けられてもよく、一方、第2の対は、図11Bの第2のポーズと関連付けられてもよい。より具体的には、この例における第1の偏差パラメーター値は、[uref_1 vref_1]T 1130Aと[uverify_1 vverify_1]T 1130A(第1のポーズと関連付けられる)との間の偏差量(例えば、距離)に基づき得、[uref_2 vref_2]T 1130Aと[uverify_2 vverify_2]T 1130A(第2のポーズと関連付けられる)との間の偏差量に基づくことができる。一例において、第1の偏差パラメーター値は、2つの偏差量の平均に等しくてもよく、又はそれに基づいてもよい。より一般的に、この実施例におけるそれぞれの偏差パラメーター値のグループは、(第1のポーズと関連付けられる)第1の参照画像座標のグループと第1の検証画像座標のグループとの間のそれぞれの偏差量に基づいてもよく、さらに、(第2のポーズと関連付けられる)第2の参照画像座標のグループと第2の検証画像座標のグループとの間のそれぞれの偏差量にさらに基づいてもよい。
場合によっては、第1の参照画像内の参照画像座標及び第2の参照画像内の参照画像座標は、上記で論じられた2つの参照画像1120、1122等の、1組の参照画像内に共通の検証記号(例えば、1130A)が現れる箇所を示す1組の参照画像座標の一部であり得る。この実施例における参照画像の組及び参照画像座標の組は、それぞれ、図11A及び図11Bにおける2つのポーズ等の、ロボットアーム(例えば、1153)のためのそれぞれのポーズの組に対応し得る。同様に、第1の検証画像内の検証画像座標及び第2の検証画像内の検証画像座標は、上記で論じられた検証画像1160、1162等の、検証画像の組内に検証記号が現れる箇所を示す検証画像座標の組の一部であり得る。検証画像の組及び検証画像座標の組はまた、ポーズの組に対応し得る。このような場合において、検証記号と関連付けられる偏差パラメーター値は、参照画像座標の組と検証画像座標の組との間のそれぞれの偏差量に基づいてもよい。
図12A〜図12Bに戻ると、方法1200は、ステップ1213を含むことができ、そのステップでは、制御回路111が、それぞれの偏差パラメーター値のグループの少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過するかどうかを判断する。場合によっては、ステップ1213は、図4Bのステップ459と同様であり得る。一実施形態において、ステップ1213は、それぞれの偏差パラメーター値のグループの各偏差パラメーター値が、それぞれの偏差閾値を超過しているかどうかを判断することを含むことができる。例えば、制御回路111は、検証記号1130Aと関連付けられた偏差パラメーター値が、規定された偏差閾値を超過したかどうか、検証記号1130Bと関連付けられた偏差パラメーター値が、規定された偏差閾値を超過したかどうか、及び/又は検証記号1130Cと関連付けられた偏差パラメーター値が、規定された偏差閾値を超過したかどうかを判断することができる。場合によっては、それぞれの偏差閾値は、同じ値を有することができ、それゆえ、検証記号のための共通の偏差閾値を形成することができるか、又は異なる値を有することができる。
一実施形態において、方法は、ステップ1215を含んでもよく、そのステップにおいて、制御回路111は、それぞれの偏差パラメーター値のグループの少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過するという判断に応答して、(a)それぞれの偏差パラメーター値のグループの少なくとも1つが、規定された偏差閾値を超過するという通知を出力すること、及び、(b)更新されたキャリブレーション情報(例えば、更新されたキャリブレーション情報)を判断するためにキャリブレーション操作を実行すること、のうちの少なくとも1つを実行することができる。例えば、ステップ1215は、ロボットコントローラー110と通信する電子ディスプレイ等の、ユーザーインターフェースデバイスに通知を出力することを含み得る。電子ディスプレイは、例えば、少なくとも1つの偏差パラメーター値、又は少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過することの指標を表示し得る。一実施形態において、ステップ1215におけるキャリブレーション操作を実行することは、図4Bにおけるステップ461と同様又は同一であってもよい。一実施形態において、ステップ1201のキャリブレーション情報が、第1のキャリブレーション操作を実行することによって判断される場合、ステップ1215のキャリブレーション操作は、第1のキャリブレーション操作に続く、第2のキャリブレーション操作であり得る。
一実施形態において、規定された偏差閾値を超過する少なくとも1つの偏差パラメーター値は、カメラ(例えば、図11A〜図11Bの1170)への変化及び/又はカメラの環境若しくはロボット操作システム(例えば、1100)への変化があることを示すことができる。場合によっては、カメラへの変化は、例えば、カメラのレンズ又はカメラのイメージセンサーが、温度変化又は物理的損傷に起因して、形状又はサイズが変化した場合等の、内部変化であってもよい。場合によっては、カメラへの変化は、カメラ(例えば、170)が装着される箇所への変化、例えば、カメラが装着される構造(例えば、天井)内の振動に起因する等の変化を含み得る。場合によっては、カメラの環境における又はロボット操作システムに対する変化は、ロボットが装着される構造(例えば床)における振動に起因する等の、ロボット(例えば、1150)のベース(例えば、1152)の位置又は向きの変化を含み得る。場合によっては、カメラの環境又はロボット操作システムへの変化は、ロボットアームのアーム部分間(例えば、ロボットアーム1153のリンク1154A〜1154E間)、又はアーム部分自体の関係における変化であり得る。例えば、アーム部分(例えば、リンク1154D又はロボットハンド1155)のうちの1つは、コンピューティングシステム110によって計画されていなかった事象に起因して、湾曲又は別様に変形若しくは損傷する場合がある。計画外の事象は、衝突事象、又はロボット(例えば、1150)若しくはロボット操作システムの他の要素における、変化の可能性につながり得るいくつかの他の予想外の事象であり得る。上記で論じられたキャリブレーション検証は、カメラ(例えば、1170)への変化及び/又はカメラの環境若しくはロボット操作システム1100への変化を検出するための、迅速かつ効率的な技術を提供し得る。例えば、カメラ(例えば、1170)及び/又はロボット(例えば、1150)における変化は、参照画像座標(複数の場合もある)と対応する検証画像座標(複数の場合もある)とを比較して、それらの間の差異を判断することによって検出され得る。多くの場合、このような比較は、コンピューティングシステム110の計算リソースに大きな需要をかけることなく行うことができる。例えば、比較は、限られた量のプロセッサ実行時間及び/又は限られた量のメモリのみを取得する計算で行うことができる。それゆえ、比較は、計算効率的な態様で、キャリブレーション情報の精度の正確な監視を容易にすることができる。
一実施形態において、規定された偏差閾値を超過する少なくとも1つの偏差パラメーター値は、第1のカメラキャリブレーションからのカメラキャリブレーション情報が、もはや十分に正確でないカメラキャリブレーション誤差等の、キャリブレーション誤差があることを示し得る。一実施形態において、方法1200は、制御回路111が、少なくとも1つの偏差パラメーター値に、規定された偏差閾値を超過させるキャリブレーション誤差のタイプ(ミスアライメントのタイプとも呼ばれる)を判断することを含むことができる。キャリブレーション誤差のタイプは、例えば、キャリブレーション情報(例えば、カメラキャリブレーション情報)に対する精度の損失が、ロボットへの変化によって引き起こされるかどうか、又は別様にロボットへの変化を表すものによって引き起こされるかどうか、又は精度の損失が、カメラへの変化によって引き起こされるかどうか、又は別様にカメラへの変化を表すものによって引き起こされるかどうかを示し得る。例えば、カメラ(例えば、1170)への変化は、上記で論じられたように、カメラへの内部変化及び/又はカメラが装着される箇所への変化を含んでもよい。ロボットへの変化は、上記で論じられたように、ロボット(例えば、1150)のベース(例えば、1152)の箇所又は向きへの変化、ロボットアーム(例えば、1153)のアーム部分間の関係への変化、及び/若しくはアーム部分自体への変化を含み得る。
一実施形態において、キャリブレーション誤差のタイプの判断は、それぞれの偏差パラメーター値のグループ間の比較に基づくことができ、より具体的には、それぞれの偏差パラメーター値のグループが、実質的に均一な態様で規定された偏差閾値を超過するかどうかに基づくことができる。例えば、異なる検証記号(例えば、1130A〜1130C)と関連付けられる偏差パラメーター値のグループが、全て規定された偏差閾値を超過し、実質的に均一な態様で行う場合、制御回路111は、精度の損失が、カメラ(例えば、1170)によって、又はより具体的には、カメラへの変化によって引き起こされると判断することができる。これは、参照画像又は検証画像における検証記号(例えば、1130A〜1130C)の各々の外観が、内部特性及び/又はカメラ(例えば、1170)の位置決めに依存するためである。より具体的には、参照画像又は検証画像内の検証記号(例えば、1130A〜1130C)の参照画像座標及び検証画像座標は、全て、内部特性又はカメラの位置決めに依存し得る。それゆえ、内部特性又はカメラ(例えば、1170)の位置決めへの変化は、多くの場合、全ての検証記号(例えば、1130A〜1130C)に関するそれぞれの偏差パラメーター値に、影響を及ぼし得、より具体的には、多くの場合、実質的に均一な態様で全ての偏差パラメーター値を増加させ得る。比較すると、アーム部分等のロボット(例えば、1150)の一部に損傷、誤動作、又は他の変化がある場合、ロボットの他の部分が全て全く同じように変化する(例えば、損傷又は全ての誤動作)可能性は低い。それゆえ、少なくとも1つの偏差パラメーター値が規定された偏差閾値を上回るであろうロボットの一部に変化がある場合、偏差パラメーター値のグループの他の偏差パラメーター値は、規定された偏差閾値を下回ったままであってもよく、又は偏差パラメーター値のグループは、全て規定された偏差閾値を超過し得るが、不均一な態様で行う。それゆえ、一実施形態では、異なる検証記号(例えば、1130A〜1130C)と関連付けられたそれぞれの偏差パラメーター値のグループのうちの少なくとも1つが、規定された偏差閾値を超過するが、それぞれの偏差パラメーター値のグループが全て、実質的に均一な態様で規定された偏差閾値を超過しない場合、制御回路111は、精度の損失がロボット(例えば、1150)、又はより具体的にはロボットへの変化によって引き起こされると判断することができる。
一実施形態において、制御回路111は、偏差パラメーター値のグループが、全て実質的に均一な態様で規定された偏差閾値を超過するかどうかを評価するために、規定された均一性閾値を使用することができる。例えば、制御回路111は、偏差パラメーター値のうちの少なくとも1つが、規定された偏差閾値を超過するかどうかを判断し得、偏差パラメーター値間(又はそれらが規定された偏差閾値を超過するそれぞれの量間)の差異が、規定された均一性閾値内にあるかどうかをさらに判断し得る。均一性閾値は、(例えば、ロボット操作システムの現在の動作条件に基づいて)動的に規定することができるか、又はあらかじめ規定することができる。規定された均一性閾値を使用する例として、制御回路111が、検証記号1130A〜1130Cに関するそれぞれの偏差パラメーター値が、全て規定された偏差閾値を超過するが、検証記号1130Cと関連付けられた偏差パラメーター値が、規定された均一性閾値を超えて検証記号1130Aと関連付けられた偏差パラメーター値と異なる、及び/又は規定された均一性閾値を超えて検証記号1130Bと関連付けられた偏差パラメーター値と異なると判断する場合、制御回路111は、少なくともロボットハンド1155又は検証記号1130Cが配置される他のアーム部分における変化等の、ロボット1150の変化によって精度の損失が引き起こされると判断することができる。上記の例において、制御回路111は、偏差パラメーター値を直接比較している。他の実施例において、制御回路111は、偏差パラメーター値が、規定された偏差閾値を超過するそれぞれの量、及びそれらのそれぞれの量が規定された均一性閾値を超えて異なるかどうかを比較することができる。別の実施例では、制御回路111が、偏差パラメーター値のグループの第1の偏差パラメーター値が規定された偏差閾値を超過するが、偏差パラメーター値のグループのうちの1つ以上が、規定された偏差閾値を超過しないと判断する場合、制御回路111はまた、キャリブレーション誤差(ミスアライメントとも呼ばれる)が、第1の偏差パラメーター値と関連付けられた検証記号がその上に配置されるアーム部分等の、ロボット(例えば、1150)への変化によって引き起こされると判断し得る。別の実施例において、制御回路111が、偏差パラメーター値のグループが、全て規定された偏差閾値を超過し、それらが規定された均一性閾値を超えて互いに異なることがないと判断する場合、次いで、制御回路111は、キャリブレーション誤差が、カメラ(例えば、1170)の変化によって引き起こされると判断することができる。
場合によっては、ロボットコントローラー110又は他のコンピューティングシステムの制御回路111は、図11A及び図11Bのコンベヤベルト1173等の、コンベヤベルトと通信することができる。そのような場合では、制御回路111は、少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過すると判断することに応答して、コンベア1173ベルトを停止させるように構成することができる。コンベヤベルト1173を停止することは、不正確なキャリブレーション情報に基づいて、ロボットアーム1153が、コンベヤベルト1173上の物体と望ましくない相互作用を有することを防止し得る。
一実施形態において、制御回路111は、キャリブレーション情報が、特定のアーム部分(例えば、検証記号1130Aが配置されるリンク1154C、又は検証記号1130Bが配置されるリンク1154D、又は検証記号1130Cが配置されるロボットハンド1155)に対して十分に正確である場合、キャリブレーション情報もまた、その特定のアーム部分の上流にある1つ以上のアーム部分に対して十分に正確であることを判断するように構成することができる。上記で言及されたように、複数のアーム部分は、ロボットのベースからロボットエンドエフェクタまで、一連のアーム部分として配置され得る。前者のアーム部分が一連のアーム部分において後者のアーム部分に先行する場合、アーム部分は、別のアーム部分の上流であってもよい。例えば、図11A〜図11Bのリンク1154Dは、リンク1154E及びロボットハンド1155の上流であり得る。一例において、制御回路111が、キャリブレーション情報(例えば、カメラキャリブレーション情報)が、例えば、ロボットハンド1155に対して十分に正確であると判断する場合、キャリブレーションが、リンク1154E、1154D、1154C、1154B、及び1154A等の、上流アーム部分に対して十分に正確であると判断することができる。この例において、制御回路111は、アーム部分上に配置された検証記号と関連付けられた偏差パラメーター値が、規定された偏差閾値を下回る場合、キャリブレーション情報が、アーム部分にとって十分に正確であると判断することができる。一実施形態において、制御回路111が、そのアーム部分についてキャリブレーション情報が十分に正確でないように、特定のアーム部分についてキャリブレーション誤差があると判断する場合、制御回路111は、いくつか又は全ての下流アーム部分についてキャリブレーション誤差があると判断することができる。例えば、制御回路111が、リンク1154D等の特定のロボット部分についてキャリブレーション情報が十分に正確でないと判断する場合、制御回路111は、リンク1154E及びロボットハンド1155等の下流アーム部分についてキャリブレーション情報が十分に正確でないと判断することができる。
一実施形態において、ステップ1203〜1215等の方法1200の1つ以上のステップは、ユーザーコマンドに応答して、ロボットコントローラー110又は他のコンピューティングシステムによって実行することができる。例えば、ユーザー(例えば、システムオペレータ)は、ステップ1203〜1215を含むキャリブレーション検証操作を手動でトリガーすることができる。一実施形態において、ステップ1203〜1215は、休止期間中に実行され得る。休止期間は、例えば、コンベヤベルト又はパレットから物体を持ち上げる等のロボット操作が実行されていない期間であり得る。一実施形態において、ステップ1203〜1215等の方法1200の1つ以上のステップは、規定されたトリガー条件に応答して、ロボットコントローラー110又は他のコンピューティングシステムによって実行することができる。上記で論じられたように、トリガー条件は、例えば、ロボット(例えば、1150)を含む衝突、地震又は他の天災等の、計画外の事象を含み得、これは、ロボット(例えば、1150)及び/又はカメラ(例えば、1170)における変化をもたらし得る。場合によっては、トリガー条件は、ステップ1201のキャリブレーション情報を判断するために使用されるキャリブレーション操作等の、より早いキャリブレーション操作の後に経過する特定の期間を含むことができる。このような例において、先のキャリブレーション操作は、第1のキャリブレーション操作であってもよく、一方でステップ1215のキャリブレーション操作は、第2のキャリブレーション操作であってもよい。
種々の実施形態のさらなる論考
実施形態A1は、ベースと、その上に配置される検証記号を有するロボットアームとを有するロボットと通信し、カメラ視野を有するカメラと通信するように構成される通信インターフェースを備えるロボット制御システムに関連する。ロボット制御システムは、第1のカメラキャリブレーション(又は、より一般的に、キャリブレーション操作)を実行して、カメラと関連付けられるカメラキャリブレーション情報(又は、より一般的に、ロボット制御システムと関連付けられるキャリブレーション情報)を判断するように構成される制御回路をさらに備える。制御回路は、a)通信インターフェースを介して、ロボットに第1の動作コマンドを出力することによって、第1のカメラキャリブレーション中又は後に、検証記号をカメラ視野内の箇所に動かすようにロボットアームを制御することであって、その箇所は、第1のカメラキャリブレーションの検証のための1つ以上の参照箇所のうちの参照箇所である、ロボットアームを制御することと、b)通信インターフェースを介して、カメラから検証記号の画像を受信することであって、カメラは参照箇所において検証記号の画像を取り込むように構成され、画像は検証のための参照画像である、検証記号の画像を受信することと、c)検証のための参照画像座標を判断することであって、参照画像座標は参照画像内に検証記号が現れる座標である、参照画像座標を判断することと、d)通信インターフェースを介して、ロボットにカメラキャリブレーション情報に基づく第2の動作コマンドを出力することによって、カメラキャリブレーション情報に基づいて、ロボット操作を実行するようにロボットアームの動作を制御することと、e)ロボット操作中に休止期間を検出することと、f)通信インターフェースを介して、ロボットに第3の動作コマンドを出力することによって、休止期間中に、検証記号を少なくとも参照箇所に動かすようにロボットアームを制御することと、g)休止期間中に、通信インターフェースを介して、カメラから検証記号のさらなる画像を受信することであって、カメラは少なくともその参照箇所において検証記号のさらなる画像を取り込むように構成され、さらなる画像は検証のための検証画像である、検証記号のさらなる画像を受信することと、h)検証のために使用される検証画像座標を判断することであって、検証画像座標は検証画像内に検証記号が現れる座標である、検証画像座標を判断することと、i)参照画像座標と検証画像座標との間の偏差量に基づいて、偏差パラメーター値を判断することであって、参照画像座標及び検証画像座標は両方ともその参照箇所に関連付けられ、偏差パラメーター値は、第1のカメラキャリブレーション以降のカメラの変化、又は第1のカメラキャリブレーション以降のカメラとロボットとの間の関係の変化を示す、偏差パラメーター値を判断することと、i)偏差パラメーター値が規定された閾値を超過するかどうかを判断することと、j)偏差パラメーター値が規定された閾値を超過すると判断することに応答して、第2のカメラキャリブレーションを実行して、更新されたカメラキャリブレーション情報を判断すること(又は、より一般的に、第2のキャリブレーション操作を実行して、更新されたキャリブレーション情報を判断すること)と、を行うように、さらに構成される。
実施形態A2は、実施形態A1のロボット制御システムを含み、制御回路は、偏差パラメーター値が規定された閾値を超過しないという判断に応答して、通信インターフェースを介して、ロボットに第4の動作コマンドを出力することによって、さらなるカメラキャリブレーションを実行することなく、休止期間後にロボット操作を継続するように、ロボットを制御するように構成される。
実施形態A3は、実施形態A1又はA2のロボット制御システムを含み、1つ以上の参照箇所は、複数の参照画像座標にそれぞれ対応する複数の参照箇所であり、参照画像座標は、複数の参照画像座標のうちの1つである。この実施形態では、制御回路は、複数の参照箇所にそれぞれ対応する複数の検証画像座標を判断するようにさらに構成され、検証画像座標は、複数の検証画像座標のうちの1つであり、偏差パラメーター値は、複数の参照箇所に関する複数の参照画像座標と複数の検証画像座標との間のそれぞれの偏差量に基づき、それぞれの偏差量のうちの各偏差量は、(a)複数の参照箇所のそれぞれの参照箇所に対応する参照画像座標と、(b)同じ参照箇所に対応する検証画像座標と、の間にある。
実施形態A4は、実施形態A3のロボット制御システムを含み、複数の検証画像座標は、複数の検証画像内に検証記号が現れるそれぞれの座標であり、検証画像は、複数の検証画像のうちの1つであり、制御回路は、カメラを制御して、休止期間内に複数の検証画像の全てを取り込むように構成される。
実施形態A5は、実施形態A3のロボット制御システムを含み、複数の検証画像座標は、複数の検証画像内に検証記号が現れるそれぞれの座標であり、検証画像は、複数の検証画像のうちの1つであり、制御回路は、カメラを制御して、異なる休止期間内に複数の検証画像を取り込むように構成され、休止期間は、異なる休止期間のうちの1つである。
実施形態A6は、実施形態A1〜A5のいずれか1つのロボット制御システムを含み、検証記号は、第1の色を有する第1の領域と、第2の色を有する第2の領域とを含み、第1の領域の面積と第2の領域の面積との比が規定され、規定された比としてロボット制御システムの記憶デバイス上に記憶される。
実施形態A7は、実施形態A6のロボット制御システムを含み、制御回路は、規定された比に基づいて、参照画像又は検証画像内の検証記号を識別するように構成される。
実施形態A8は、実施形態A7のロボット制御システムを含み、ロボットアームは、その上に配置されるキャリブレーションパターンを有し、参照画像は、検証記号及びキャリブレーションパターンを含み、制御回路は、参照画像の部分が、第1の色を有する第1の画像領域を有するか、及び第2の色を有する第2の画像領域を有するかどうかを判断し、第1の画像領域の面積と第2の画像領域の面積との比が規定された比に等しいかどうかを判断することによって、参照画像の部分が検証記号であるか、又はキャリブレーションパターンであるかを判断するように構成される。
実施形態A9は、実施形態A1〜A8のいずれか1つのロボット制御システムを含み、検証記号は、互いに同心である第1の形状及び第2の形状を含み、第1の形状及び第2の形状のそれぞれの中心は、実質的に同じ箇所である。
実施形態A10は、実施形態A9のロボット制御システムを含み、制御回路は、a)参照画像内の第1の形状の中心の第1の座標を判断することと、b)参照画像内の第2の形状の中心の第2の座標を判断することと、c)参照画像内の第1の座標及び第2の座標の平均として参照画像座標を判断することとによって、参照画像座標を判断するように構成される。この実施形態では、制御回路は、d)検証画像内の第1の形状の中心の第1の座標を特定することと、e)検証画像内の第2の形状の中心の第2の座標を特定することと、f)検証画像内の第1の座標及び第2の座標の平均として検証画像座標を特定することとによって、検証画像座標を特定するように構成される。
実施形態A11は、実施形態A1〜A10のいずれか1つのロボット制御システムを含み、制御回路は、円形リングを識別することによって、参照画像又は検証画像内の検証記号を識別するように構成され、検証記号は円形リングとして形成される。
実施形態A12は、実施形態A1〜A11のいずれか1つのロボット制御システムを含み、制御回路は、ロボットが位置する環境の温度を判断し、測定された温度に基づいて、規定された閾値又はキャリブレーション情報のうちの少なくとも一方を調整するようにさらに構成される。
実施形態A13は、実施形態A12のロボット制御システムを含み、制御回路は、温度が規定範囲外にあるとき、規定された閾値を第1の値を有するように設定し、温度が規定範囲内にあるとき、閾値を第1の値より低い第2の値を有するように設定することによって、温度に基づいて、規定された閾値を調整するように構成される。
実施形態A14は、実施形態A1〜A13のいずれか1つのロボット制御システムを含み、制御回路がロボットアームを介して検証記号を動かすように構成される1つ以上の参照箇所は、カメラに対して凹形である球の表面上に配置される複数の参照箇所を含む。
実施形態A15は、実施形態A14のロボット制御システムを含み、制御回路は、複数の参照箇所の各参照箇所において検証記号が球の表面に対して接線方向に向くように動かすために、ロボットアームを制御するようにさらに構成される。
実施形態A16は、実施形態A1〜A15のいずれか1つのロボット制御システムを含み、制御回路は、検証記号が参照箇所に動かされるときに、カメラの真正面を向くように検証記号を動かすために、ロボットアームを制御するように構成される。
実施形態A17は実施形態A1〜A16のいずれか1つのロボット制御システムを含み、制御回路は、ロボット操作中にロボットがロボット作業を実行していない期間を検出することによって、ロボット操作の休止期間を検出するように構成される。
実施形態A18は、実施形態A17のロボット制御システムを含み、制御回路は、ロボットアームによって到達可能であるコンベヤベルト上の物体と相互作用するように、ロボットアームを制御するように構成され、制御回路は、コンベヤベルト上に物体がないことを検出することによって、又はロボットと、コンベヤベルト上の最も近い物体との間の距離が規定された距離閾値を超過することを検出することによって、休止期間を検出するように構成される。
実施形態B1は、通信インターフェース及び制御回路を備えるコンピューティングシステムに関する。通信インターフェースは、(i)カメラ視野を有するカメラと、(ii)互いに動作可能に取り付けられる複数のアーム部分を備え、かつ複数のアーム部分のそれぞれのアーム部分上に配置される検証記号のグループを備える、ロボットアームを有する、ロボットと、通信するように構成される。制御回路は、ロボットアームがカメラ視野にあるとき、ロボット操作を実行するために、ロボットアームの動作を制御するための動作コマンドを出力することであって、動作コマンドが、キャリブレーション情報に基づいている、出力することと、参照画像座標のグループを判断することであって、参照画像座標のグループが、参照画像内に検証記号のグループが現れるそれぞれの座標であり、参照画像が、検証記号のグループを表すための画像であり、ロボットアームが第1のポーズにあるとき、第1の期間中にカメラによって生成される、判断することと、第1の期間に続く第2の期間中に、ロボットアームを第1のポーズに動かすように制御するための追加の動作コマンドを出力することと、検証記号のグループを表すための追加画像であり、かつ前記ロボットアームが、追加の動作コマンドの結果として、第1のポーズに動かされたとき、カメラによって生成される、検証画像を受信することと、検証画像座標のグループを判断することであって、検証画像座標のグループが、検証画像内に検証記号のグループが現れるそれぞれの座標である、判断することと、参照画像座標のグループと検証画像座標のグループとの間のそれぞれの偏差量に基づいている、それぞれの偏差パラメーター値のグループを判断することであって、それぞれの偏差パラメーター値のグループが、検証記号のグループと関連付けられている、判断することと、それぞれの偏差パラメーター値のグループのうちの少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過するかどうかを判断することと、それぞれの偏差パラメーター値のグループのうちの少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過するという判断に応答して、それぞれの偏差パラメーター値のグループのうちの少なくとも1つが、規定された偏差閾値を超過するという通知を出力すること、及び、更新されたキャリブレーション情報を判断するためにキャリブレーション操作を実行すること、のうちの少なくとも1つを実行することと、を行うように構成される。制御回路は、例えば、非一時的コンピューター可読媒体上で命令を実行することによって、方法を実行することができる。
実施形態B2は、実施形態B1に記載のコンピューティングシステムを含み、第1のポーズは、第1の期間中に出力される第1の追加の動作コマンドと関連付けられ、第1の追加の動作コマンドが、ロボットアームを第1のポーズに動かすように制御するための1つ以上の作動パラメーター値を有し、参照画像が、第1の追加の動作コマンドの結果として、ロボットアームが第1のポーズにあるとき、カメラによって生成される。さらにこの実施形態において、第2の期間中に出力される追加の動作コマンドが、第2の追加の動作コマンドであり、また1つ以上の作動パラメーター値も含む。
実施形態B3は、実施形態B2のコンピューティングシステムを含み、検証記号のグループの各検証記号は、円形形状を有し、第1の追加の動作コマンド及び第2の追加の動作コマンドの1つ以上の作動パラメーター値は、参照画像内及び検証画像内で、検証記号のグループが、偏心率を伴わずに、又は規定された偏心閾値未満であるそれぞれの量の偏心率を伴って現れるような様態で検証記号のグループを位置決めさせる。
実施形態B4は、実施形態B1〜B3のいずれか1つのコンピューティングシステムを含み、制御回路は、検証記号のグループの各検証記号をカメラに真正面を向くように動かす、追加の動作コマンドに対する1つ以上の作動パラメーター値を判断するように構成される。
実施形態B5は、実施形態B4のコンピューティングシステムを含み、1つ以上の作動パラメーター値は、検証記号のグループを、カメラに対して凹形である1つ以上の仮想球に対して接線方向に向くようにさせる。
実施形態B6は、実施形態B1〜B5のいずれか1つのコンピューティングシステムを含み、検証記号のグループの少なくとも1つの検証記号が、円形リングとして形成されているとき、制御回路は、円形リングを識別することによって、参照画像内及び検証画像内の少なくとも1つの検証記号を識別するように構成される。
実施形態B7は、実施形態B6のコンピューティングシステムを含み、検証記号のグループが、異なるそれぞれのサイズを有するそれぞれの円形リングとして形成されているとき、制御回路は、少なくとも1つの検証記号を形成するそれぞれの円形リングのサイズに基づいて、少なくとも1つの検証記号を識別するように構成される。
実施形態B8は、実施形態B1〜B7のいずれか1つのコンピューティングシステムを含み、制御回路は、ロボットアームの幾何学形状を記述する規定されたモデルに基づいて、参照画像内の検証記号のグループの少なくとも1つの検証記号を識別するように構成される。
実施形態B9は、実施形態B8のコンピューティングシステムを含み、制御回路は、モデルに基づいて、少なくとも1つの検証記号が現れることが予想される参照画像内の領域を判断し、参照画像の領域内の少なくとも1つの検証記号を検索するように構成される。
実施形態B10は、実施形態B1〜B9のいずれか1つのコンピューティングシステムを含み、制御回路は、それぞれの偏差パラメーター値のグループ間の比較に基づいて、少なくとも1つの偏差パラメーター値に規定された偏差閾値を超過させるキャリブレーションエラーのタイプを判断するように構成されており、キャリブレーションエラーのタイプは、キャリブレーション情報に対する精度の損失がロボットにおける変化を表すかどうか、又は精度の損失が、カメラにおける変化を表すかどうかを示す。
実施形態B11は、実施形態B10のコンピューティングシステムを含み、制御回路は、それぞれの偏差パラメーター値のグループ全てが、規定された偏差閾値を超過しているかどうか、及びそれぞれの偏差パラメーターのグループが、規定された均一性閾値を超えて互いに異なるかどうかを判断するように構成される。本実施形態における制御回路は、それぞれの偏差パラメーター値のグループが全て、規定された偏差閾値を超過し、かつ規定された均一性閾値を超えて互いに異なることはないという判断に応答して、キャリブレーション誤差のタイプが、カメラにおける変化を表すキャリブレーション誤差であると判断するように構成される。
実施形態B12は、実施形態B11のコンピューティングシステムを含み、制御回路は、それぞれの偏差パラメーター値のグループのうちの1つ以上が、規定された偏差閾値を超過しないという判断、又はそれぞれの偏差パラメーター値のグループが、規定された均一性閾値を超えて互いに異なるという判断に応答して、キャリブレーション誤差のタイプが、ロボットにおける変化を表すキャリブレーション誤差であると判断するようにさらに構成される。
実施形態B13は、実施形態B1〜B12のいずれか1つのコンピューティングシステムを含む。この実施形態において、キャリブレーション情報は、第1のキャリブレーション操作と関連付けられ、更新されたキャリブレーション情報を生成するためのキャリブレーション操作は、第1のキャリブレーション操作に続く第2のキャリブレーション操作であり、制御回路は、規定されたトリガー条件に応答して、追加の動作コマンドを出力するように、かつ検証画像を受信するためのカメラコマンドを出力するように構成される。規定されたトリガー条件は、第1のキャリブレーション操作以来経過する規定された期間、又はコンピューティングシステムによって計画されず、かつロボット若しくはカメラに変化をもたらす事象、のうちの少なくとも1つを含む。
実施形態B14は、実施形態B1〜B13のいずれか1つのコンピューティングシステムを含み、複数のロボットアーム部分が、ロボットのベースからロボットエンドエフェクタまでの一連のアーム部分として配置されているとき、制御回路が、検証記号のグループの第1の検証記号に関する偏差パラメーター値が、規定された偏差閾値を超過するかどうかを判断することと、複数のアーム部分の中から、第1の検証記号が配置されている第1のアーム部分を識別することと、第1の検証記号に関する偏差パラメーター値が、規定された偏差閾値を超過しないという判断に応答して、キャリブレーション情報が、第1のアーム部分に関して、及び一連のアーム部分において第1のアーム部分に先行する少なくとも1つの追加のアーム部分に関して正確であると判断することと、を行うように構成される。
実施形態B15は、実施形態B1〜B14のいずれか1つのコンピューティングシステムを含み、コンピューティングシステムが、ロボット操作に使用されるコンベヤベルトと通信するとき、制御回路は、少なくとも1つの偏差パラメーター値が、規定された偏差閾値を超過するという判断に応答して、コンベヤベルトを停止させるように構成される。
実施形態B16は、実施形態B1〜B15のいずれか1つのコンピューティングシステムを含み、参照画像は、ロボットアームの第1のポーズと関連付けられた第1の参照画像であり、検証画像は、第1のポーズと関連付けられた第1の検証画像であり、参照画像座標のグループは、第1のポーズと関連付けられた第1の参照画像座標のグループであり、検証画像座標のグループは、第1のポーズと関連付けられた第1の検証画像座標のグループである。本実施形態では、制御回路は、第2の参照画像座標のグループを判断することであって、第2の参照画像座標のグループが、第2の参照画像内に検証記号のグループが現れるそれぞれの座標であり、第2の参照画像が、ロボットアームが第2のポーズにあるとき、カメラによって生成される、判断することと、第2の参照画像が生成されていることに続いて、ロボットアームを第2のポーズに動かすためにロボットアームを制御するためのさらなる動作コマンドを出力することと、第2の検証画像を受信することであって、第2の検証画像がまた、検証記号のグループもまた表し、さらなる動作コマンドの結果として、ロボットアームが第2のポーズに動かされたとき、カメラによって生成される、受信することと、第2の検証画像座標のグループを判断することであって、第2の検証画像座標のグループが、第2の検証画像内に検証記号のグループが現れるそれぞれの座標である、判断することと、を行うように構成される。この実施形態において、それぞれの偏差パラメーター値のグループは、第2の参照画像座標のグループと第2の検証画像座標のグループとの間のそれぞれの偏差量にさらに基づく。
種々の実施形態を上述してきたが、これらの実施形態は、限定としてではなく本発明の単なる説明及び例として提示されていることを理解すべきである。形式及び細部における種々の変更は本発明の趣旨及び範囲から逸脱することなく本発明内で行うことができることは当業者には明らかであろう。したがって、本発明の範囲(breadth and scope)は、上述の例示的な実施形態のいずれかによって限定されるべきではなく、添付の特許請求の範囲及びそれらの均等物によってのみ規定されるべきである。本明細書において論考された各実施形態、及び本明細書において引用された各引用文献の各特徴は、他の任意の実施形態の特徴と組み合わせて用いることができることも理解されるであろう。本明細書において論考された全ての特許及び刊行物は、引用することによりその全体が本明細書の一部をなす。