以下、本実施形態について説明する。なお、以下で説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.本実施形態の手法
ビジュアルサーボは、参照画像の特徴量と、撮像画像から得られる特徴量とが一致するようにロボットを制御する技術であり、前提として撮像画像に映る作業対象の特徴量が安定して検出(抽出)できることが要求される。
しかし、実際に画像処理を行って作業対象の特徴量を検出する際には、撮像画像の質や作業対象の写り具合によって、作業対象の特徴量を検出できないことがあり、常に安定して作業対象の特徴量を検出できるとは言えない。そして、撮像画像において、作業対象の特徴量を正しく検出できない場合には、ビジュアルサーボにより、意図した作業を正確に行うことができない。
そこで、本実施形態では、このような作業対象の特徴量を用いてビジュアルサーボを行う際に、より検出が容易なマーカーの特徴量を組み合わせて使うことにより、安定したビジュアルサーボを実現する。
具体的に、本実施形態の制御装置100の構成例を図1に示す。本実施形態の制御装置100は、参照画像記憶部110と、作業対象物及び、作業対象物又はエンドエフェクター310上のマーカーが、撮像部200により撮像されて得られた撮像画像を受け付ける撮像画像受付部130と、作業対象物を動かすエンドエフェクター310を備えるロボット300を動作させる処理部150と、を含む。
そして、処理部150は、撮像画像において作業対象物の特徴量が検出できない場合でも、ロボット300が第1の姿勢から、第1の姿勢とは異なる第2の姿勢へと移る間に作業対象物及びマーカーを複数回撮像して、ロボット300を動作させる。
具体的には、まず、参照画像記憶部110は、ロボット300の目標状態を表す画像である参照画像を記憶する。例えば、後述する図3(A)に示すような参照画像RIMを記憶しておく。なお、参照画像記憶部110の機能は、RAM(Random Access Memory)等のメモリーやHDD(Hard Disk Drive)などにより実現できる。
次に、撮像画像受付部130は、ロボット300の作業対象又はロボット300のエンドエフェクター310に対して少なくとも一つのマーカーを配置して、撮像することで得られた撮像画像を取得する。例えば、後述する図2に示す状態で撮像部CMにより撮像された、図3(B)に示す撮像画像PIM1を取得する。なお、図3(B)の詳細についても後述する。
そして、処理部150は、撮像画像において作業対象の特徴量検出処理を行って、検出された撮像画像における作業対象の特徴量と、参照画像(参照画像における作業対象の特徴量)とに基づいて、ビジュアルサーボを行う。例えば、後述する図3(B)の例では、撮像画像PIM1において、作業対象の特徴量としてワークWKの輪郭線OL1を検出し、検出した輪郭線OL1と、後述する図3(A)の参照画像RIMにおけるワークWKの輪郭線OLとに基づいて、ビジュアルサーボを行う。
さらに、処理部150は、特徴量検出処理において、作業対象物の特徴量が検出できない場合、又は作業対象物の特徴量が誤って検出される場合でも、ロボット300が第1の姿勢から第2の姿勢へと移る間に作業対象物及びマーカーを複数回撮像し、マーカーのマーカー検出処理の結果に基づいて、ロボット300を動作させる。つまり、処理部150は、特徴量検出処理において、撮像画像における作業対象の特徴量が非検出である場合又は誤検出された場合にも、マーカーのマーカー検出処理の結果に基づいて、継続してビジュアルサーボを行う。なお、処理部150の機能は、各種プロセッサー(CPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムなどにより実現できる。
例えば、後述する図3(C)の例では、ワークWKの輪郭線OL2が非検出である。この時に、処理部150は、マーカー検出処理の結果(MD1及びMD2)に基づいて、ワークの輪郭線OL2を推定し、推定した輪郭線OL2と、後述する図3(A)の参照画像RIMの輪郭線OLに基づいて、継続してビジュアルサーボを行う。すなわち、撮像画像における作業対象の特徴量が非検出である場合又は誤検出された場合でも、エラーが発生したと判定して、ビジュアルサーボを終了せずに、ビジュアルサーボを継続可能となるような処理を行う。
なお、制御装置100は、図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加したりするなどの種々の変形実施が可能である。また、本実施形態の制御装置100は、後述する図13(B)に示すように、ロボット300に含まれており、ロボット300と一体に構成されていてもよい。さらに、後述する図14に示すように、制御装置100の機能は、サーバー500と、各ロボット300が有する端末装置330とにより、実現されてもよい。
また、例えば制御装置100と撮像部200が、有線及び無線の少なくとも一方を含むネットワークにより接続されている場合には、撮像画像受付部130は、撮像部200と通信を行う通信部(インターフェース部)であってもよい。さらに、制御装置100が撮像部200を含む場合には、撮像画像受付部130は、撮像部200そのものであってもよい。
次に、図2、図3(A)〜図3(E)及び図4のフローチャートを用いて、本実施形態の動作の具体例を説明する。本具体例では、図2に示すように、ロボットRBが、アームAMの先端に取り付けられたハンドHDで、ワークWKを把持し、目標位置TP(目標位置姿勢)にワークWKを移動させる作業を、ビジュアルサーボにより行う。なお本例では、ハンドHDがエンドエフェクターであり、ワークWKが作業対象である。また、ワークWKは円柱状の物体であるものとする。
また前提として、参照画像記憶部110は、図3(A)に示すような参照画像RIMを記憶しておく。参照画像RIMは、ロボットRBの目標状態を表す画像であり、ワークWKが目標位置TPに置かれている様子が映っている。なお、図3(A)の参照画像RIM内に示す目標位置TPは、前述した図2の目標位置TPと対応する位置である。
まず、図2に示すように、撮像画像受付部130は、ロボットRBのハンドHDに対して、第1のマーカーMK1と第2のマーカーMK2の二つのマーカーを配置して、撮像部CM(カメラ)により撮像することで、例えば図3(B)〜図3(E)に示すような撮像画像(PIM1〜PIM4)を取得する(S101)。なお、第1のマーカーMK1と第2のマーカーMK2は、同じマーカーであってもよいし、異なるマーカーであってもよい。また、図3(B)〜図3(E)には、説明の都合上、実際に撮像画像に映る物体ではなく、撮像画像において検出されたワークの輪郭線とマーカーのみを図示するものとする。後述する図7(A)〜図7(E)についても同様である。
そして、図3(B)の例では、取得した撮像画像PIM1において、ワークWKの特徴量検出処理(S102)とマーカー検出処理(S103)とを行った結果、ワークWKの特徴量として輪郭線OL1が検出され(S104)、さらに撮像画像PIM1内のMD1の位置に第1のマーカーMK1が検出され、MD2の位置に第2のマーカーMK2が検出されている。
この場合には、撮像画像PIM1におけるマーカー検出位置(MD1及びMD2)と、ワークWKの輪郭線OL1との位置関係が、実空間上でのマーカー(MK1及びMK2)とワークWKの位置関係に正しく対応していると判定できる(S105)。そのため、ワークWKの特徴量が正しく検出できていると判定する。
そして、撮像画像PIM1において検出されたワークWKの輪郭線OL1が、参照画像RIMに映るワークWKの輪郭線OLと一致するように(近付くように)、ロボットRBを制御する(S106)。その後、ビジュアルサーボが収束した場合には処理を終了し、収束していない場合には、ステップS101に戻り、処理を繰り返す(S107)。この場合には、何の問題もなく、ビジュアルサーボが行われている。
しかし、図3(B)の例のように、常にワークWKの輪郭線が正しく検出できるとは限らない。例えば図3(C)に、作業対象の特徴量が非検出である場合の例を示す。図3(C)の例では、撮像画像PIM2を取得し(S101)、ワークWKの特徴量検出処理を行ったが(S102)、本来検出されるべきワークWKの輪郭線OL2が検出されていない(S104)。一方で、撮像画像PIM2では、第1のマーカーMK1はMD1の位置に、第2のマーカーMK2はMD2の位置に検出されている(S103)。そのため、少なくとも第1のマーカーMK1及び第2のマーカーMK2は、撮像範囲内に位置していると判定できる。よって、マーカーが貼られたハンドHDと、ハンドHDに把持されたワークWKも、撮像範囲内に位置していると判定でき(S109)、ワークWKの特徴量検出処理だけが失敗していると判定できる。
そのため、この場合には、マーカー検出結果MD1及びマーカー検出結果MD2に基づいて、本来検出されるはずの位置にワークWKの輪郭線OL2を推定(特定)して、推定した輪郭線OL2に基づいて、ビジュアルサーボを行う(S110)。この処理は、特徴量非検出時の処理の一例である。
次に図3(D)に、作業対象の特徴量が誤検出された場合の例を示す。図3(D)では、取得した撮像画像PIM3において、ワークWKの特徴量検出処理を行った結果(S101、S102)、ワークWKの輪郭線OL3が検出され(S104)、マーカー検出処理を行った結果(S103)、MD1の位置に第1のマーカーMK1が検出され、MD2の位置に第2のマーカーMK2が検出されている。しかし、実際の撮像画像PIM3には、ハンドHDがワークWKを把持している様子が映っているため、本来ならば、図3(B)のようにマーカー検出位置(MD1及びMD2)の下にワークWKの輪郭線が検出されるはずである。つまり、図3(D)の例では、ワークWKではない他の物体をワークWKとして誤検出してしまっていると判定できる(S105)。
そのため、この場合にも、マーカー検出結果MD1及びマーカー検出結果MD2に基づいて、本来検出されるはずの位置にワークWKの輪郭線OL3を推定(特定)して、推定した輪郭線OL3に基づいて、ビジュアルサーボを行う(S108)。この処理は、特徴量誤検出時の処理の一例である。
さらに図3(E)に、作業対象の一部がフレームアウトしている場合の例を示す。図3(E)に示す例では、取得した撮像画像PIM4において、ワークWKの特徴量検出処理(S101、S102)と、マーカー検出処理(S103)とを行った結果、ワークWKの輪郭線OL4は検出されず(S104)、マーカーは、MD1の位置に第1のマーカーMK1の一つしか検出されていない。なお、本例では、撮像画像にマーカーが映っていれば必ずマーカーを検出可能であるものとする。したがって、この場合には、第2のマーカーMK2が撮像画像PIM4に映っていない、すなわちハンドHDとワークWKの一部が撮像範囲外に位置していると判定できる(S109)。言い換えれば、ハンドHDとワークWKの一部がフレームアウトしてしまっている。
そのため、このままではビジュアルサーボを継続できない。よってこの場合には、ハンドHDとワークWKの全体が映る位置にロボットRBを動かした後に、再度ビジュアルサーボを行う(S111)。この処理は、フレームアウト発生時の処理の一例である。
以上のように、作業対象の特徴量検出処理を行った結果は、大きく分けると以下の4つのケースに大別できる。第1のケースは、作業対象が撮像画像に映っており、作業対象の特徴量が正しく検出できたという結果が得られた場合である。例えば、前述した図3(B)の例が、第1のケースに相当する。この第1のケースでは、この後、問題なくビジュアルサーボを継続することができる(S106、S107)。
これに対して、第2のケースは、第1のケースとは逆に、作業対象が撮像画像に映っていないため、作業対象の特徴量を検出できなかったという結果が得られた場合である。すなわち、作業対象がフレームアウトしている場合である。例えば、前述した図3(E)の例が、第2のケースに相当する。この第2のケースでは、このままではビジュアルサーボを行うことができないが、撮像画像に作業対象が映る状態にロボットを移動させる等して、ビジュアルサーボを再開することができる(S111)。
以上の第1のケースと第2のケースは、作業対象の特徴量が検出できたかどうかの差はあるものの、どちらの場合にも、図4のステップS102における作業対象の特徴量検出処理自体は正常に行われており、正しい結果が得られている。一方、以下の2つのケース(第3のケースと第4のケース)は、特徴量検出処理自体が正常に行われていないケースである。
第3のケースは、作業対象が撮像画像に映っているにも関わらず、作業対象が映っていないと誤って判定し、その結果、作業対象の特徴量が検出できなかったという結果が得られた場合である。前述した図3(C)の例が、第3のケースに相当する。例えば光源のフリッカーや、撮像画像の質が著しく悪いことなどが原因で、第3のケースに至ることがある。
また、第4のケースは、作業対象が撮像画像に映っているか、映っていないかに関わらず、作業対象の特徴量ではないものを作業対象の特徴量として検出してしまったという結果が得られた場合である。前述した図3(D)の例が、第4のケースに相当する。例えば、撮像画像中に作業対象とよく似た形の周辺物が映っている場合には、このように作業対象の特徴量が誤検出される場合が生じる。
このように、第3のケースと第4のケースではどちらの場合も、作業対象の特徴量検出処理自体が正常に行われていない。そのため、これらの場合に得られた特徴量をそのまま用いて、ビジュアルサーボを正常に行うことはできない。特に、図3(D)のような第4のケースで、誤検出された特徴量に基づいてロボットを動作させると、ロボットが期待される動作とは全く異なる動作を行う可能性がある。
以上をまとめると、特徴量検出処理により得られた結果に基づいて、その後ビジュアルサーボを正常に継続可能な場合は、図3(B)に示す第1のケースのみである。
ただし、前述したように、図3(E)に示す第2のケースでは、特徴量検出処理自体には問題がないため、撮像画像に作業対象が映る状態にロボットを移動させた後に、ビジュアルサーボを再開する(S111)などの対処が可能である。また、図3(C)に示す第3のケースと、図3(D)に示す第4のケースでは、特徴量検出処理自体に問題があるため、特徴量検出処理の方法を変えれば、ビジュアルサーボを継続することができる(S108、S110)。
つまり、作業対象の特徴量が正しく検出できなかった場合でも、今回が第2のケースであるのか、又は第3のケース若しくは第4のケースであるのかが判定できれば、その後にロボットをどのように制御すればよいかも判定することができる。
従来の手法では、これらの4つのケースを判別できなかったが、本実施形態では、マーカー検出処理の結果を用いて、これらの4つのケースを判別し、各ケースに適した処理を行うことが可能である。
このように、作業対象の特徴量が非検出である場合又は誤検出された場合でも、継続してビジュアルサーボを行うことが可能となる。これにより、撮像画像において作業対象の特徴量が非検出である場合又は誤検出された場合に、例えばビジュアルサーボにおいてエラーが発生したと判定して、目標位置に移動する前にロボットを停止させてしまうことを防ぐこと等が可能となる。
また以上のように、作業対象の特徴量が特定又は推定できた場合には、処理部150は、ビジュアルサーボとして、撮像画像が、参照画像に一致又は近付くようにロボット300を制御する処理を行う。前述した図3(A)〜図3(E)の例では、逐次、撮像画像を新たに取得しながらロボットRBを動作させ、撮像画像において特定(又は推定)したワークWKの輪郭線が、参照画像におけるワークWKの輪郭線に、徐々に一致又は近付くようにロボットRBを制御する。
これにより、ロボットRBの位置姿勢を目標の位置姿勢にすること等が可能になる。すなわち、ロボットRBが目標状態である時に撮像可能な画像を参照画像として記憶しておき、参照画像と一致又は近い撮像画像を撮像できるようにロボットRBを制御すれば、ロボットRBが目標状態をとるように制御することが可能になる。
ここで、ロボットRBの目標状態とは、ロボットRBが目標の位置姿勢をとっている状態であり、例えば前述した図3(A)〜図3(E)の例では、ワークWKを目標位置TPに置くことができる位置姿勢をとっている状態のことである。なお、ビジュアルサーボについては、後段においてさらに詳しい説明を行う。
また、参照画像記憶部110は、参照画像そのものを記憶していてもよいし、参照画像における作業対象の特徴量を記憶していてもよい。また、参照画像には、マーカーが映っている必要はない。すなわち、ロボット300のエンドエフェクター310にマーカーを配置せずに参照画像を生成することができる。よって、マーカーが映っていない他の参照画像を用いても、本実施形態の処理を行うことが可能である。
ここで、撮像画像とは、撮像部200によって撮像することにより得られる画像のことをいう。また、撮像画像は、外部の記憶部に記憶された画像や、ネットワークを介して取得される画像であってもよい。
また、本実施形態では、作業対象物だけではなく、ロボット300の作業場所(作業位置)の特徴量に基づいて、ロボット300を動作させてもよい。なお、以下の説明では、作業対象物と作業場所をまとめて、作業対象と呼ぶ。
これにより、作業対象物及び作業場所のうちの少なくとも一つの特徴量に基づいて、ビジュアルサーボを行うこと等が可能になる。
そして、特徴量(特徴量情報)とは、画像認識において画像を分析する際に抽出(検出)する、物体の特徴を表す量(情報)のことをいう。例えば、特徴量は、画像に映る物体の面積や幅、周囲の長さ、輪郭線、特徴点、輝度などである。
さらに、特徴量検出処理とは、物体の特徴量(特徴量情報)を検出する処理のことを指し、例えば輪郭線検出処理や特徴点検出処理などのことである。
ここで、輪郭線検出処理とは、画像上に映る作業対象などの輪郭線を検出し、輪郭情報を特定する処理のことをいう。輪郭線検出処理の一手法としては、例えばハフ(Hough)変換などが挙げられる。その他にも例えば、画像の輝度勾配の大きさが所与の値以上の領域を黒く塗りつぶした二値画像を生成し、この二値画像に対して細線化処理を行うことにより、輪郭線を抽出する処理などを行ってもよい。なお、輪郭情報とは、物体の輪郭を表す情報である。輪郭情報は、例えば、輪郭の始点と終点の画像上での座標位置や、ベクトルとその大きさ等である。
また、特徴点検出処理とは、画像上に映る作業対象などの物体の特徴点を検出し、特徴点情報を特定する処理のことをいう。特徴点検出処理の一手法としては、例えばコーナー検出法や、その他の一般的なコーナー部検出(固有値、FAST特徴検出)、SIFT(Scale invariant feature transform)に代表される局所特徴量記述子やSURF(Speeded Up Robust Feature)などが挙げられる。
そして、マーカーとは、目印として利用することができる文字、図形、記号、模様もしくは立体的形状もしくはこれらの結合又はこれらと色彩との結合を形成する有体物で、物体に固定可能なものである。例えば、シールやステッカー、ラベル等である。なお、マーカーの形状や、色彩、模様等がどのようなものであるかは問わないが、マーカーを安定して検出する上で、他の領域と区別しやすいもの、例えば白い領域に対し黒色からなる画像やシールなどが望ましい。具体例としては、図5(A)〜図5(D)に示すようなマーカーMK1〜マーカーMK4や、図5(E)に示す地図記号などのマーカーMK5〜マーカーMK8、図5(F)に示す文字や数字などのマーカーMK11〜マーカーMK13などが挙げられる。さらに、マーカーは、QR(Quick Response)コードや、AR(Augmented Reality)マーカーなどであってもよい。また、例外としてマーカーは、表示部に表示可能な画像であってもよい。
このように、作業対象よりも検出が容易なものをマーカーとして用いるため、作業対象の認識率(検出率)よりも高い認識率でマーカーを認識(検出)することが可能となる。
また、マーカー検出処理(マーカー認識処理)とは、画像中に映るマーカーを、画像処理などにより、検出(認識)する処理のことをいう。マーカー検出処理では、少なくともマーカーの有無と配置位置を検出できればよい。
2.処理の詳細
以下では、図6(A)及び図6(B)に図示するような8つのマーカー(MK1〜MK8)を貼付したハンドHDにより、ワークWKを把持し、目標位置にワークWKを移動させる作業を行う際の処理の具体例について説明する。図6(A)はハンドHDを正面から見た時の図であり、図6(B)はハンドHDを斜めから見た時の図である。本例のハンドHDは4本の指を有しており、各指の付け根と先端にそれぞれマーカーが貼付されているものとする。すなわち、ハンドHDの正面に、第1のマーカーMK1〜第4のマーカーMK4が貼付されており、その裏面に第5のマーカーMK5〜第8のマーカーMK8が貼付されている。また、図示の都合上、図6(A)及び図6(B)には、マーカーを大きく描いており、マーカーの一部が指からはみ出ているが、実際にはハンドの指の表面にはみ出さずに貼られているものとする。さらに、第1のマーカーMK1〜第8のマーカーMK8は、同じマーカーとして図示しているが、これらは互いに異なり、区別可能なマーカーであるものとする。
前述したように、ビジュアルサーボにより作業対象の移動作業を行う際には、撮像画像において作業対象の特徴量を検出する必要がある。本例ではこの際に、今回のケースが前述した第1のケース〜第4のケースのどのケースに当てはまるか、すなわち作業対象の特徴量が正しく検出されたか、非検出であるか、誤検出されたものであるか、そもそも作業対象がフレームアウトしている状態かを、以下のようにして判定する。
2.1.特徴量非検出時の処理の詳細
まず、今回のケースが前述した第3のケースに相当するか否かの判定処理と、第3のケースであると判定された後に行う処理(作業対象の特徴量が非検出である場合の処理)の詳細について説明する。
今回のケースが前述した第3のケースに相当するか否かの判定処理は、マーカー検出処理において検出されたマーカーの数に基づいて行う。
例えば、処理部150は、特徴量検出処理において、撮像画像における作業対象の特徴量が非検出であるが、マーカー検出処理において検出されたマーカーの数が所与の閾値以上である場合に、マーカー検出処理の結果に基づいて、ロボットを動作させる(ビジュアルサーボを行う)。すなわち、この場合は、前述した第3のケースに相当すると判定し、特徴量が非検出である時の処理を行う。
ここで、所与の閾値は、ユーザーが設定可能な値であってもよいし、あらかじめ決められ、記憶部に記憶されている値であってもよい。
例えば、所与の閾値を3とし、作業対象の特徴量が非検出であり、マーカー検出処理において3つ以上のマーカーが検出された場合に、前述した第3のケースに相当すると判定するものとする。
この場合に、例えば図7(A)に示すような撮像画像PIM11が取得され、特徴量検出処理が行われたものとする。図7(A)に示す場合には、作業対象であるワークWKの輪郭線OL1(特徴量)が検出されているため、第3のケースには相当しないと判定できる。図7(B)に示すような撮像画像PIM12が取得された場合も同様である。
一方で、図7(C)に、撮像画像PIM13が取得され、特徴量検出処理とマーカー検出処理とが行われた様子を示す。図7(C)の例では、ワークWKの輪郭線OL3が検出されていないにも関わらず、撮像画像PIM13内のMD1〜MD4の各位置にマーカーが検出されている。つまり、マーカーが計4つ検出されている。そのため、図7(C)の例は、第3のケースに相当すると判定できる。
また、図7(E)に示す撮像画像PIM15の場合には、特徴量検出処理において、ワークWKの輪郭線OL3が検出されておらず、マーカー検出処理において、MD2の位置に1つしかマーカーが検出されていない。そのため、図7(E)の例は、第3のケースには相当しないと判定できる。なお、後述するが図7(E)は、作業対象のフレームアウトが発生している第2のケースの例である。
このように、作業対象が撮像画像に映っているにも関わらず、作業対象の特徴量を検出できなかった場合を判別すること等が可能になる。その結果、作業対象の特徴量が非検出である場合(第3のケース)に適した処理を行うことが可能になる。
具体的には、処理部150は、特徴量検出処理において、撮像画像における作業対象の特徴量が非検出である又は(後述するように)誤検出されたと判定されたが、マーカー検出処理において検出されたマーカーの数が所与の閾値以上である場合には、マーカー検出処理の結果に基づいて、作業対象の特徴量の特定処理を行い、特定した特徴量に基づいて、ロボットを動作させる(ビジュアルサーボを行う)。
例えば、図8(A)に示す撮像画像PIM21では、特徴量検出処理において、作業対象の特徴量が非検出、すなわちワークWKの輪郭線や特徴点等が特定されておらず、マーカー検出処理において、MD1、MD2及びMD3の各位置にマーカーが検出されたものとする。
この場合に、図8(B)の撮像画像PIM22に示すように、マーカー検出位置(MD1〜MD3)に基づいて、ハンドHDが把持するワークWKの特徴量の特定処理を行う。図8(B)の例では、ワークWKの特徴量として輪郭線OLを特定する。把持作業を行う場合には、ハンドHDに対するおおよそのワークWKの位置が分かっている。例えば、把持状態におけるワークWKは、ハンドHDの下方に、ハンドHDから所定の距離内に位置している。また、マーカーとハンドHDの相対位置関係も既知である。よって、マーカー検出位置に基づいて、ワークWKの輪郭線を推定できる。
これにより、作業対象の特徴量が非検出である場合又は誤検出された場合でも、ビジュアルサーボを継続すること等が可能になる。
2.2.特徴量誤検出時の処理の詳細
次に、今回のケースが前述した第4のケースに相当するか否かの判定処理と、第4のケースであると判定された後に行う処理(作業対象の特徴量が誤検出された場合の処理)の詳細について説明する。
まず、今回のケースが前述した第4のケースに相当するか否かの判定処理は、撮像画像中でのマーカーと作業対象との位置姿勢関係に基づいて行う。
すなわち、処理部150は、特徴量検出処理において、撮像画像における作業対象の特徴量が検出され、マーカー検出処理において検出されたマーカーの数が所与の閾値以上である場合に、マーカー検出処理の結果と、特徴量検出処理の結果とに基づいて、マーカーと作業対象との位置姿勢関係を特定し、特定した位置姿勢関係に基づいて、特徴量検出処理において、作業対象の特徴量が誤検出されたか否かを判定する。
ここで、エンドエフェクターが作業対象を把持している把持状態では、作業対象は必ず、マーカーの検出位置から所与の距離範囲内に位置する。従って、把持状態を映した撮像画像においては、マーカーの検出位置を基準として、所与の距離範囲内に作業対象が位置すると判定した場合には、作業対象の特徴量の誤検出が発生していないと判定し、所与の距離範囲外に作業対象が位置すると判定した場合には、作業対象の特徴量の誤検出が発生していると判定する。
例えば、図7(D)の例では、撮像画像PIM14において、作業対象の特徴量としてワークWKの輪郭線OL4が検出されている。また、マーカーが4つ検出されており、検出されたマーカーの数が所与の閾値以上である。なお、所与の閾値は3とする。しかし、撮像画像PIM14におけるマーカーの検出位置(MD1〜MD4)を基準にした場合に、ワークの輪郭線OL4の検出位置が所与の距離範囲DP3外に位置するため、図7(D)の例では、作業対象の特徴量が誤検出されている、すなわち第4のケースであると判定することができる。
一方で、図7(A)や図7(B)の例は、ワークWKの輪郭線が検出され、検出されたマーカーの数が所与の閾値以上であるが、マーカーの検出位置に対してワークの輪郭線の検出位置が所与の距離範囲(DP1又はDP2)内に位置するため、作業対象の特徴量が正常に検出されている(誤検出されていない)と判定することができる。また、図7(C)や図7(E)の例は、そもそもワークWKの輪郭線が検出されていないため、第4のケースではないと判定できる。
ここで、マーカーと作業対象との位置姿勢関係とは、例えばマーカーの位置姿勢を基準とした時の作業対象の相対的な位置姿勢のことをいう。また、マーカーと作業対象との位置姿勢関係は、前述した例のように、マーカーの検出位置から所与の距離範囲内に作業対象が位置するか否かの情報や、後述する図9(A)で説明するように、第1の領域ARと第2の領域BBとの重複領域RAのこと等であってもよい。
これにより、作業対象の特徴量を誤検出してしまった場合を判別すること等が可能になる。その結果、作業対象の特徴量が誤検出された場合(第4のケース)に適した処理を行うことが可能になる。例えば、前述したように、マーカー検出処理の結果に基づいて、作業対象の特徴量の特定処理を行い、特定した特徴量に基づいて、継続してビジュアルサーボを行うことができる。
また、撮像画像におけるマーカーと作業対象との位置姿勢関係は、次のように求めてもよい。すなわち、処理部150は、撮像画像において、マーカーのマーカー検出処理によって検出された複数のマーカーにより特定される第1の領域と、特徴量検出処理によって検出された作業対象の特徴量によって特定される第2の領域との重複領域の検出結果に基づいて、マーカーと作業対象の位置姿勢関係を特定し、特定した位置姿勢関係に基づいて、ビジュアルサーボを行ってもよい。
ここで、第1の領域とは、マーカー検出処理によって検出された複数のマーカーにより特定される領域のことであり、例えば、図9(A)に示すように、検出された複数のマーカー(MK1〜MK4)のうちのいずれかのマーカーを結んで特定される領域である。具体的には、第1のマーカーMK1、第2のマーカーMK2及び第3のマーカーMK3を結んだ場合には、MK1〜MK3を頂点とした三角形領域AR1が、第1の領域となる。
また、第2の領域とは、特徴量検出処理によって検出された作業対象の特徴量によって特定される領域のことである。例えば、第2の領域は、図9(A)に示すように、作業対象の輪郭線OLに基づいて特定されるバウンディングボックス(Bounding Box、矩形領域)BBなどである。
そして、図9(A)に示すように、第1の領域が領域AR1であり、第2の領域がバウンディングボックスBBである場合には、領域RAが、第1の領域AR1と第2の領域BBとの重複領域として検出される。図9(A)では、斜線の領域が重複領域RAである。この領域RAは、図9(A)におけるマーカーと作業対象との位置姿勢関係を表している。
これにより、例えば図9(A)のように、エンドエフェクター(ハンドHD)が作業対象物(ワーク)を把持している状態の撮像画像において、重複領域RAが存在すると判定した場合には、作業対象の特徴量が誤検出されていないと判定すること等が可能になる。一方で、前述した図7(D)の例のように、把持状態の撮像画像において、第1の領域と第2の領域とがそれぞれ存在するが、重複領域が存在しないと判定した場合には、作業対象の特徴量が誤検出されていると判定すること等が可能になる。
また、エンドエフェクターが作業対象を把持している場合には、ビジュアルサーボ中に続けて取得される撮像画像間において、エンドエフェクター(及びエンドエフェクターに配置されたマーカー)と作業対象の位置姿勢関係は、あまり変化しないことが多い。したがって、続けて取得される撮像画像間において、エンドエフェクター(マーカー)と作業対象の位置姿勢関係が急に変化した場合には、作業対象の特徴量の誤検出が発生している可能性が高いと考えられる。
そこで、前述した方法に加えて、以下の判定処理を行ってもよい。つまり、前回取得した撮像画像において検出したマーカーと作業対象との位置姿勢関係と、今回取得した撮像画像において検出したマーカーと作業対象との位置姿勢関係とを比較することによって、作業対象の特徴量が誤検出されたか否かを判定してもよい。
この場合には事前準備として、処理部150は、マーカー検出処理の結果と、特徴量検出処理の結果とに基づいて、マーカーと作業対象との位置姿勢関係を特定し、特定した位置姿勢関係の登録処理を行っておく。
ここで、登録処理とは、特定したマーカーと作業対象の位置姿勢関係を記憶部に記憶させる処理のことをいう。
また、マーカーと作業対象の位置姿勢関係は、前述した第1の領域と第2の領域との位置姿勢関係により表すことができる。その場合、例えばマーカーと作業対象の位置姿勢関係は、図9(B)の表のように記憶される。図9(B)の表は、図9(A)の例において特定された位置姿勢関係である。図9(B)の表では、左欄に、撮像画像において検出された第1の領域と、その第1の領域の頂点となる各マーカーが記載されており、右欄に、作業対象を表すバウンディングボックス(第2の領域)の各頂点座標が記載されている。右欄のバウンディングボックスの各頂点座標は、左欄の第1の領域の頂点1から頂点2を結ぶ線分をX軸とし、頂点3からX軸に下ろした垂線をY軸とした時の座標位置(X、Y)である。
これにより、後述する比較処理において、異なるタイミングにおいて取得された撮像画像における、マーカーと作業対象との位置姿勢関係を比較すること等が可能になる。
そして、処理部150は、登録処理後に、撮像画像受付部130が受け付けた第2の撮像画像に基づいて、マーカー検出処理と、特徴量検出処理とを行い、第2の撮像画像におけるマーカー検出処理の結果と、特徴量検出処理の結果とに基づいて、マーカーと作業対象との第2の位置姿勢関係を特定する。
さらに、処理部150は、第2の位置姿勢関係と、登録された位置姿勢関係との比較処理を行い、第2の位置姿勢関係と、登録された位置姿勢関係とが対応していると判定した場合には、第2の位置姿勢関係の登録処理を行う。すなわち、この場合には、作業対象の特徴量の誤検出が発生していないと判定し、次回の比較処理において、今回特定した第2の位置姿勢関係を参照するために、第2の位置姿勢関係の登録処理を行う。
また、この際に第2の位置姿勢関係の登録処理を行う理由は、第2の位置姿勢関係を特定する際に、登録されていない(判明していない)作業対象とマーカーとの位置姿勢関係が判明することがあるためである。例えば図9(B)の例において、第1の領域AR2とバウンディングボックスBBとの位置姿勢関係、すなわち第1のマーカーMK1〜第3のマーカーMK3と、ワークWKとの位置姿勢関係しか登録されていなかった(判明していなかった)ものとする。この場合において、第2の位置姿勢関係の特定時に、例えば第1の領域AR3とバウンディングボックスBBとの位置姿勢関係、すなわち第4のマーカーMK4とワークWKとの位置姿勢関係が新たに判明すること等がある。このような情報は、次回以降の位置姿勢関係の比較処理において有用である。そのため、前述した第2の位置姿勢関係の登録(更新)処理を行う。
ここで、2つの位置姿勢関係の比較処理の結果をまとめると、処理部150は、第2の位置姿勢関係と、登録された位置姿勢関係とが対応していると判定した場合には、特徴量検出処理において、作業対象の特徴量が誤検出されなかったと判定し、第2の位置姿勢関係と、登録された位置姿勢関係とが対応していないと判定した場合には、特徴量検出処理において、作業対象の特徴量が誤検出されたと判定する。
例えば、登録された位置姿勢関係が、前述した図7(A)に示すような位置姿勢関係であり、今回特定した第2の位置姿勢関係も、図7(A)に示すような位置姿勢関係である場合には、2つの位置姿勢関係が対応していると判定し、作業対象の特徴量の誤検出が発生していないと判定する。
ここで、第2の撮像画像とは、マーカーと作業対象の位置姿勢関係の登録処理後に撮像又は取得された撮像画像のことをいう。
そして、第2の位置姿勢関係とは、第2の撮像画像におけるマーカーと作業対象との位置姿勢関係のことをいう。
また、第2の位置姿勢関係と、登録された位置姿勢関係とが対応しているか否かは、例えば図9(C)に示すように、第2の位置姿勢関係における重複領域RA1(斜線で示す領域)と、登録された位置姿勢関係における重複領域RA2(斜線で示す領域)との差分領域DAの面積に基づいて特定する。例えば、差分領域DAの面積が、所与の閾値よりも大きい場合には、2つの位置姿勢関係が対応していないと判定する。一方、差分領域DAの面積が、所与の閾値未満である場合には、2つの位置姿勢関係が対応していると判定する。
ここで、2つの位置姿勢関係の比較処理において、所与の閾値を設ける理由について説明する。ビジュアルサーボによりロボット300が期待通りに動作した場合であっても、撮像部200に対するマーカーと作業対象の位置姿勢は変化する。そのため、撮像画像におけるマーカーと作業対象の映り方も変化して、撮像画像に基づいてマーカーと作業対象の位置姿勢を特定する際に誤差が生じることがある。しかし、この誤差は、マーカーと作業対象の位置姿勢関係の特定時に発生したものであり、実際のマーカーと作業対象の位置姿勢関係の変化を表すものではない。したがって、この誤差を許容するために、前述した所与の閾値を設けている。
これにより、作業対象の特徴量の誤検出が発生していない場合を判別すること等が可能になる。そして、マーカーと作業対象との位置姿勢関係を更新すること等が可能になる。
一方で、比較処理において、2つの位置姿勢関係が対応していないと判定した場合には、作業対象の特徴量の誤検出が発生していると判定し、作業対象の特徴量が誤検出された場合(第4のケース時)の処理を行う。すなわち、処理部150は、比較処理において、第2の位置姿勢関係と、登録された位置姿勢関係とが対応していないと判定した場合には、マーカー検出処理の結果に基づいて、第2の撮像画像における作業対象の特徴量の特定処理を行い、特定した特徴量に基づいて、ロボットを動作させる(ビジュアルサーボを行う)。
例えば、登録された位置姿勢関係が、前述した図7(A)に示すような位置姿勢関係であるが、今回特定した第2の位置姿勢関係は、前述した図7(C)に示すような位置姿勢関係である場合には、作業対象の特徴量の誤検出が発生していると判定する。そして、前述した図8(B)のように、ワークの輪郭線OLを特定するなどの作業対象の特徴量の特定処理を行う。
これにより、撮像画像において、作業対象の特徴量の誤検出が生じていることを判別すること等が可能になり、作業対象の特徴量が誤検出された場合(第4のケース時)の処理を行うことができる。
2.3.フレームアウト発生時の処理の詳細
次に、今回のケースが前述した第2のケースに相当するか否かの判定処理と、第2のケースであると判定された後に行う処理(作業対象がフレームアウトしている場合の処理)の詳細について説明する。
まず、今回のケースが前述した第2のケースに相当するか否かの判定処理は、マーカー検出処理において検出されたマーカーの数又は第1の領域の有無に基づいて行う。
具体的には、処理部150は、マーカー検出処理において、マーカーが検出されなかった場合、又は検出されたマーカーの数が所与の閾値以下である場合には、作業対象が撮像範囲外に位置すると判定する。
例えば、前述した図7(E)の例では、検出されたマーカーの数が1であり、所与の閾値の3以下である。よって、図7(E)の例では、作業対象が撮像範囲外に位置する、すなわち撮像画像において作業対象がフレームアウトしていると判定できる。これは、前述した第2のケースに相当する。
一方で、図7(A)〜図7(D)の例はどれも、3つ以上のマーカーが検出されているため、作業対象が撮像範囲内に位置すると判定できる。
ここで、撮像範囲とは、撮像部200により撮像された撮像画像に映る実空間上の範囲のことである。例えば、撮像範囲は、後述する図10(A)に示す範囲PAのことである。
これにより、作業対象が撮像範囲外に位置するか否かを判別し、この場合に適した処理を行うこと等が可能になる。
また、前述した第1の領域は、図9(A)に示すように、マーカー検出位置を結んで特定できる領域であるため、3つ以上のマーカーが検出されていなければ、第1の領域を特定することができない。逆に言えば、図6(A)及び図6(B)のようにマーカーを配置して取得した撮像画像において、第1の領域が特定できない場合には、マーカーが2つ以下しか検出されていないと判定でき、他のマーカーが撮像範囲外に位置していると判定できる。この場合には、作業対象もフレームアウトしている可能性が極めて高い。
そこで、処理部150は、第1の領域が特定できる場合には、作業対象が撮像範囲内に位置すると判定し、第1の領域が特定できない場合には、作業対象が撮像範囲外に位置すると判定してもよい。
これによっても、作業対象が撮像範囲外に位置するか否かを判別し、この場合に適した処理を行うこと等が可能になる。
また具体的に、作業対象がフレームアウトしていると判定した場合、すなわち、マーカー検出処理が失敗したと判定した場合には、処理部150は、ロボット300の動作(ビジュアルサーボ)の開始位置の変更処理を行ってもよい。
例えば、図10(A)に示すように、ワークWKを把持したハンドHDが、ポイントP1に位置しており、この時に撮像部CMにより撮像された撮像画像において、ワークWKがフレームアウトしているものとする。
この場合に、図10(B)に示すように、あらかじめ撮像範囲PA内に設定していたポイントP2〜P4のいずれかに、ハンドHDを移動させ、移動後のポイントから再度ビジュアルサーボを開始する。図10(B)では、ポイントP1からポイントP2へハンドHDを移動させている。
このポイントP2〜P4は、ビジュアルサーボの開始位置である。これらのビジュアルサーボの開始位置は、エンドエフェクター(ハンドHD)又は作業対象(ワークWK)がこれらのポイントに位置して撮像された撮像画像に、作業対象が必ず映るように設定される。なお、ビジュアルサーボの開始位置は、3つに限らず、いくつ設定していてもよい。
これにより、作業対象がフレームアウトした場合でも、撮像画像において作業対象が映る位置にエンドエフェクターを移動させて、ビジュアルサーボを再開すること等が可能になる。よって、作業対象がフレームアウトした場合でも、ビジュアルサーボを終了させずに継続できるため、撮像部200の設置位置を柔軟に変更することが可能になる。つまり、必ずしも撮像部200が、ロボット300の作業現場の全体を映すように配置しなくても済むようになる。
2.4.処理の流れ
次に、本実施形態の処理の流れを図11及び図12のフローチャート用いて説明する。
図11は、ビジュアルサーボの準備のフローチャートである。ここでは、事前準備として、参照画像及びビジュアルサーボの開始位置を複数設定しておく。
まず、ハンドで作業対象物を把持し(S201)、目標位置へ精密に位置合わせを行う(S202)。この位置合わせは、ジョグツールなどを用いて行う。
そして、位置合わせ後の作業対象物を撮像部により撮像し、例えば前述した図3(A)のRIMのような参照画像を生成する(S203)。なお、参照画像を生成する時に、ハンド等にマーカーを配置しておく必要はない。
さらに、参照画像に対して、作業対象物の特徴量検出処理を行い、検出した作業対象物の特徴量を記憶しておく(S204)。
次に、例えば前述した図10(B)のポイントP2〜ポイントP4のようなビジュアルサーボの開始位置を複数設定し、登録しておく(S205)。以上が、ビジュアルサーボの事前準備の流れである。
次に、図12のフローチャート用いて、本実施形態のビジュアルサーボの処理の流れを説明する。
まず、ビジュアルサーボを行う前に、ロボットがハンドで作業対象物を把持する(S301)。なお、この時に、例えば図6(A)及び図6(B)に示すように、ハンドにマーカーを配置しておく。そして、作業対象物を把持したハンドを、ビジュアルサーボの初期開始位置へ移動させる(S302)。このビジュアルサーボの初期開始位置は、前述した図11のステップS205において登録した開始位置のうちの一つである。
そして、図7(A)〜図7(E)に示すような撮像画像を撮像し(S303)、撮像画像に対して作業対象物の特徴量検出処理を行い(S304)、作業対象物の特徴量が検出されたか否かを判定する(S305)。
作業対象物の特徴量が検出されたと判定した場合には、撮像画像においてマーカー検出処理を行い(S306)、検出されたマーカーの数が所与の閾値以上であるか否かを判定する(S307)。なお、この際には、前述した第1の領域の有無により、マーカー検出処理が成功したか否かを判定してもよい。
そして、検出されたマーカーの数が所与の閾値以上であると判定した場合には、撮像画像において作業対象物とマーカーとが、ビジュアルサーボを行う上で理想的な状態で映っていると判定する。つまり、ビジュアルサーボ中は、撮像画像において、この時の位置姿勢関係のまま、作業対象物とマーカーとが検出されることが望ましいと判定する。よって、作業対象物とマーカーとの位置姿勢関係が、この時の位置姿勢関係から変化がないかを比較して判定するために、この時に検出した作業対象物の特徴量により表される作業対象物の位置と、マーカーの検出位置との相対位置姿勢関係を記憶しておく(S309)。例えば図9(B)の表のように記憶する。これは、前述したように、以降の処理において、作業対象物の特徴量が誤検出されたか否かを判定するためである。
一方で、ステップS305において、作業対象物の特徴量が検出されていないと判定した場合、又はステップS307において、検出されたマーカーの数が所与の閾値よりも少ないと判定した場合には、撮像画像において作業対象物とマーカーとが、ビジュアルサーボを行う上で理想的な状態で映っていないと判定する。そのため、図11のステップS205において登録したビジュアルサーボの開始位置のうち、次の開始位置へハンドを移動させ(S308)、ステップS303から処理をやり直す。
さて、ステップS309の後には、撮像画像における作業対象物の特徴量と、参照画像における作業対象物の特徴量とに基づいて、アームの動作量(サーボ量)を計算する(S310)。なお、参照画像における作業対象物の特徴量は、図11のステップS204において、あらかじめ検出しておいた値を用いる。
そして、算出したアームの動作量が所与の閾値以下である場合には、アームの移動が不要である、すなわちビジュアルサーボが収束したと判定して(S311)、処理を終了する。
一方で、算出したアームの動作量が所与の閾値よりも大きい場合には、アームの動作量に基づいて、アームを実際に動作させる(S312)。
さらに、アームの動作が終了した後に、撮像画像を再度撮像し(S313)、新たに撮像した撮像画像において作業対象物の特徴量検出処理(S314)と、マーカー検出処理(S315)とを行う。
そして、作業対象物の特徴量とマーカーの両方の検出に成功したか否かを判定し(S316)、作業対象物の特徴量とマーカーの両方の検出に成功したと判定した場合には、前回登録された(比較対象の)相対位置姿勢関係と、今回の作業対象物とマーカーとの相対位置姿勢関係の比較処理を行う(S317)。なお、前回登録された相対位置姿勢関係とは、ステップS309又は後述するステップS319において登録(又は更新)された作業対象物とマーカーとの相対位置姿勢関係のことである。また、この際に、図9(A)を用いて前述した第1の領域と第2の領域との重複領域の有無を判定し、重複領域の有無に基づいて、作業対象物の特徴量が誤検出されているか否かを判定してもよい。
次に、ステップS317の比較処理の結果、今回特定した相対位置姿勢関係が、登録された相対位置姿勢関係に対応(一致)すると判定された場合には(S318)、今回特定した相対位置姿勢関係に基づいて、比較処理において比較対象となる相対位置姿勢関係を更新する(S319)。そして、ステップS310に戻り、ビジュアルサーボが収束するまで処理を繰り返す。この場合は、前述した第1のケースに相当する。
また、ステップS316において、作業対象物の特徴量とマーカーのどちらかの検出に失敗したと判定した場合には、続けてマーカーの検出処理のみが成功したか否かを判定する(S320)。
マーカーの検出処理のみが成功したと判定した場合には、作業対象物の特徴量のみ検出に失敗した前述の第3のケースであると判定する。この場合には、前述の図4のステップS110で述べた非検出時の処理として、検出されたマーカーの位置に基づいて、図8(B)のように、作業対象物の特徴量を推定する処理を行い(S321)、ステップS310に戻り、ビジュアルサーボが収束するまで処理を繰り返す。
一方、ステップS320において、マーカーの検出処理のみが成功したのではないと判定した場合には、作業対象物の特徴量の検出処理のみが成功したか否か判定する(S322)。作業対象物の特徴量の検出処理のみが成功したと判定した場合には、ステップS310に戻り、処理をやり直す。一方、作業対象物の特徴量の検出処理も失敗したと判定した場合には、ビジュアルサーボが失敗したと判定して処理を終了する(S323)。また、この場合には、前述した第2のケースに相当すると判定し、前述の図4のステップS111のフレームアウト時の処理として、他のビジュアルサーボの開始位置にハンドを移動させて、ビジュアルサーボをやり直す処理などを行っても良い。
また、ステップS318において、比較処理の結果、今回特定した相対位置姿勢関係が、登録された相対位置姿勢関係に対応(一致)しないと判定された場合には、前述した第4のケースに相当すると判定する。そして、前述の図4のステップS108の誤検出時の処理として、検出されたマーカーの位置に基づいて、作業対象物の特徴量を推定する処理を行い(S321)、ステップS310に戻り、ビジュアルサーボが収束するまで処理を繰り返す。以上が本実施形態のビジュアルサーボの処理の流れである。
また、以上の本実施形態で用いる撮像部(カメラ)200は、例えばCCD(charge-coupled device)等の撮像素子と光学系とを含む。撮像部200は、例えば天井や作業台の上などに、ビジュアルサーボにおける検出対象(作業対象物又はロボット300のエンドエフェクター310等)が、撮像部200の画角内に入るような角度で配置される。そして、撮像部200は、撮像画像の情報を制御装置100等に出力する。ただし、本実施形態においては、撮像画像の情報をそのまま制御装置100に出力するものとするが、これに限定されるものではない。例えば、撮像部200は、画像処理用等に用いられるデバイス(プロセッサー)を含むことができる。
3.ロボットシステム及びロボット
次に、図13(A)及び図13(B)に、本実施形態の制御装置100が適用されるロボットシステム及びロボット300の構成例を示す。図13(A)及び図13(B)のどちらの場合にも、ロボット300は、エンドエフェクター310を有する。また、ロボットシステムは、ロボット300と、マーカーと、撮像部200と、を含む。
エンドエフェクター310とは、ワーク(作業対象物)を把持したり、持ち上げたり、吊り上げたり、吸着させたり、ワークに加工を施したりするために、アームのエンドポイントに取り付ける部品のことをいう。エンドエフェクター310は、例えばハンド(把持部)であってもよいし、フックであってもよいし、吸盤等であってもよい。さらに、1本のアームに対して、複数のエンドエフェクターを設けても良い。なお、アームとは、ロボット300のパーツであって、一つ以上の関節を含む可動パーツのことをいう。
例えば、図13(A)のロボットは、ロボット本体300(ロボット)と制御装置100とが別体に構成されている。この場合には、制御装置100の一部又は全部の機能は、例えばPC(Personal Computer)により実現される。
また、本実施形態のロボットは図13(A)の構成に限定されず、図13(B)のようにロボット本体300と制御装置100とが一体に構成されていてもよい。すなわち、ロボット300は、制御装置100を含んでいても良い。具体的には図13(B)に示したように、ロボット300は、ロボット本体(アーム及びエンドエフェクター310を有する)及びロボット本体を支えるベースユニット部を有し、当該ベースユニット部に制御装置100が格納されるものであってもよい。図13(B)のロボット300には、ベースユニット部に車輪等が設けられ、ロボット全体が移動可能な構成となっている。なお、図13(A)は単腕型の例であるが、ロボット300は図13(B)に示すように双腕型等の多腕型のロボットであってもよい。また、ロボット300は、人手により移動させられるものであってもよいし、車輪を駆動させるモーターを設け、当該モーターを制御装置100により制御することにより、移動させられるものであってもよい。また、制御装置100は、図13(B)のようにロボット300の下に設けられたベースユニット部に設けられるとは限られない。
また、図14に示すように、制御装置100の機能は、有線及び無線の少なくとも一方を含むネットワーク400を介して、ロボット300と通信接続されたサーバー500により実現されてもよい。
或いは本実施形態では、本発明の制御装置の処理の一部を、サーバー500側の制御装置が行ってもよい。この場合には、ロボット300側に設けられた制御装置との分散処理により、当該処理を実現する。なお、ロボット300側の制御装置は、例えばロボット300に設置される端末装置330(制御部)により実現される。
そして、この場合に、サーバー500側の制御装置は、本発明の制御装置における各処理のうち、サーバー500の制御装置に割り当てられた処理を行う。一方、ロボット300に設けられた制御装置は、本発明の制御装置の各処理のうち、ロボット300の制御装置に割り当てられた処理を行う。なお、本発明の制御装置の各処理は、サーバー500側に割り当てられた処理であってもよいし、ロボット300側に割り当てられた処理であってもよい。
これにより、例えば端末装置330よりも処理能力の高いサーバー500が、処理量の多い処理を行うこと等が可能になる。さらに、例えばサーバー500が各ロボット300の動作を一括して制御することができ、複数のロボット300に協調動作をさせること等が容易になる。
また近年は、多品種少数の部品を製造することが増えてきている。そして、製造する部品の種類を変更する場合には、ロボットが行う動作を変更する必要がある。図14に示すような構成であれば、複数のロボット300の各ロボットへ教示作業をし直さなくても、サーバー500が一括して、ロボット300が行う動作を変更すること等が可能になる。
さらに、図14に示すような構成であれば、各ロボット300に対して一つの制御装置100を設ける場合に比べて、制御装置100のソフトウェアアップデートを行う際の手間を大幅に減らすこと等が可能になる。
4.ビジュアルサーボ
ここでは、ビジュアルサーボの概要と、位置ベースビジュアルサーボの流れ、特徴ベースビジュアルサーボの流れについて説明する。
ビジュアルサーボとは、目標物の位置の変化を視覚情報として計測し、それをフィードバック情報として用いることによって目標物を追跡するサーボ系の一種である。ビジュアルサーボは、サーボ系への入力情報(制御量)によって、位置ベースビジュアルサーボと特徴ベースビジュアルサーボの二つに大別される。位置ベースビジュアルサーボは、物体の位置情報や姿勢情報がサーボ系への入力情報となり、特徴ベースビジュアルサーボは、画像の特徴量がサーボ系への入力情報となる。他にも、位置ベースと特徴ベースをハイブリッドした手法もある。本発明で扱うビジュアルサーボは、これら全ての手法を対象とする。
これらのビジュアルサーボは、参照画像と撮像画像を元にサーボ系への入力情報を求める点で共通している。
4.1.位置ベースビジュアルサーボの流れ
まず、図15のフローチャートにおいて、位置ベースビジュアルサーボの流れを示す。位置ベースビジュアルサーボでは、まず参照画像を設定する(S1)。ここで、参照画像とは、目標画像やゴール画像とも呼ばれ、ビジュアルサーボの制御目標となる画像であり、ロボット300の目標状態を表す画像をいう。すなわち、参照画像とは、ロボット300の目標位置や目標姿勢を表す画像、もしくはロボット300が目標位置に位置する状態を表す画像である。また、参照画像はあらかじめ用意しておき、記憶部に記憶しておく必要がある。
次に、撮像部200によって作業スペースを撮像し、撮像画像を取得する(S2)。撮像画像は、作業スペースの現在の状態を表しており、撮像画像内にロボット300やワークが映りこんでいる場合には、ロボット300やワークの現在の状態を表している。なお、撮像部200の性能によっては処理遅延が生じるが、ここでは、処理遅延が生じている場合でも、撮像画像には現在の状態が映されているものとして扱う。
例えば、図16(A)に参照画像RIMの具体例を、図16(B)に撮像画像PIMの具体例を示す。撮像画像PIMにおいて、ロボットRBはアームAMとハンドHD(もしくはエンドポイントEP)を上方へ向けているが、参照画像RIMでは、ロボットRBはアームAMを折り曲げて、ハンドHDをワークWKに近づけている。したがって、この具体例においては、ロボットRBのアームAMを折り曲げ、ハンドHDをワークWKに近づけるようにロボットRBを制御することになる。
次に、制御指令を生成する(S3)。例えば、制御指令生成は、参照画像と撮像画像に基づいて、座標変換の一つであるホモグラフィー等を用いることにより行われる。この場合には、ホモグラフィー行列を求め、ホモグラフィー行列からロボット300の制御信号として速度指令を生成する。
ここで、制御信号(制御指令)とは、ロボット300を制御するための情報を含む信号のことをいう。例えば、制御信号としては速度指令などがある。また、速度指令とは、ロボット300の各部を制御するための情報として、ロボット300のアームのエンドポイント等の移動速度や回転速度を与える指令の方法を指す。
そして、生成された制御信号に基づいて、制御量(ここではロボット300の位置や姿勢)が目標値に収束したか否かを判定する(S4)。例えば、ホモグラフィーを用いる場合において、速度指令により表される速度ベクトルが0である場合には、制御量である位置や姿勢が目標状態に到達したとみなすことができるため、制御量が目標値に収束したと判定し、速度ベクトルが0でない場合には、制御量が目標値に収束していないと判定する。ここで、収束とは、目標値に限りなく近づくこと、又は目標値に到達することを意味する。
制御量が目標値に収束したと判定した場合にはビジュアルサーボを終了する。一方、制御量が目標値に収束していないと判定した場合には、処理部150はロボット300に制御指令を送出する(S5)。
位置ベースビジュアルサーボでは、制御量が目標値に収束するまで以上の処理を繰り返す。
4.2.特徴ベースビジュアルサーボの流れ
次に、図17のフローチャートにおいて、特徴ベースビジュアルサーボの流れを示す。位置ベースビジュアルサーボと同様に、まず参照画像を設定し(S10)、次に、撮像部200によって作業スペースを撮像し、撮像画像を取得する(S11)。なお、特徴ベースビジュアルサーボを用いる場合には、参照画像を設定する際に参照画像の特徴抽出(特徴量検出処理)を行い、特徴量を算出しておくことが望ましい。または、参照画像の特徴(特徴量)を抽出した参照画像情報を記憶部に記憶しておいてもよい。画像の特徴抽出については、例えば、コーナー検出やガウスフィルター等を用いて行う。
次に、撮像画像の特徴を抽出する(S12)。なお、参照画像の特徴抽出は、参照画像設定の際に行っておくことが望ましいが、本ステップで行ってもよい。特徴抽出では、ビジュアルサーボ系への入力情報(制御量)として、画像の特徴量を求める。
そして、画像の特徴量に基づいて、参照画像と撮像画像が一致するか否かを比較する(S13)。画像が一致すると判定した場合(S14)には、ビジュアルサーボを終了する。一方、画像が一致しないと判定した場合(S14)には、制御指令を生成し(S15)、ロボット300に制御指令を送出する(S16)。
特徴ベースビジュアルサーボでは、制御量が目標値に収束するまで以上の処理を繰り返す。
なお、本実施形態の制御装置、ロボットシステム及びロボット等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、CPU等のプロセッサーがプログラムを実行することで、本実施形態の制御装置、ロボットシステム及びロボット等が実現される。具体的には、情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをCPU等のプロセッサーが実行する。ここで、情報記憶媒体(コンピューターにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、CD等)、HDD(ハードディスクドライブ)、或いはメモリー(カード型メモリー、ROM等)などにより実現できる。そして、CPU等のプロセッサーは、情報記憶媒体に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピューターに実行させるためのプログラム)が記憶される。
以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、制御装置、ロボットシステム及びロボットの構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。