<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、ロボットシステム1の構成について説明する。
図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、撮像部10と、ロボット20と、ロボット制御装置30を備える。
撮像部10は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。撮像部10は、作業台TBの上面に載置された校正ボードCBを含む範囲を撮像可能な位置に設置される。
作業台TBは、例えば、テーブル等の台である。なお、作業台TBは、テーブルに代えて、校正ボードCBを載置することが可能な台であれば、他の台であってもよい。校正ボードCBは、撮像部座標系CCとロボット座標系RCとの対応付けを行う校正に用いられる。より具体的には、当該校正では、撮像部座標系CCにおける座標と、ロボット座標系RCにおける座標との対応付けが行われる。撮像部座標系CCは、撮像部10により撮像された撮像画像上の位置を示す座標系である。ロボット座標系RCは、ロボット制御装置30がロボット20のTCP(Tool Center Point)をロボット20に移動させる際の基準となる座標系である。図1に示した校正ボードCBの形状は、板形状であるが、立方体形状、直方体形状、三角柱形状、三角錐形状、円柱形状、円錐形状等の他の形状であってもよい。校正ボードCBについては、後述する。
撮像部10は、ケーブルによってロボット制御装置30と通信可能に接続されている。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、撮像部10は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
ロボット20は、アームAと、アームAを支持する支持台Bを備える単腕ロボットである。単腕ロボットは、この一例におけるアームAのような1本のアーム(腕)を備えるロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上のアーム(例えば、2本以上のアームA)を備えるロボットである。なお、複腕ロボットのうち、2本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本のアームを備える双腕ロボットであってもよく、3本以上のアーム(例えば、3本以上のアームA)を備える複腕ロボットであってもよい。また、ロボット20は、スカラロボット、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。直交座標ロボットは、例えば、ガントリロボットである。
アームAは、エンドエフェクターEと、マニピュレーターMを備える。アームAは、可動部の一例である。
エンドエフェクターEは、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、エンドエフェクターEは、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
エンドエフェクターEは、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、エンドエフェクターEは、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、エンドエフェクターEは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
マニピュレーターMは、6つの関節を備える。また、当該6つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターMを備えるアームAは、6軸垂直多関節型のアームである。アームAは、支持台Bと、エンドエフェクターEと、マニピュレーターMと、マニピュレーターMが備える6つの関節それぞれのアクチュエーターとによる連携した動作によって6軸の自由度の動作を行う。なお、アームAは、5軸以下の自由度で動作する構成であってもよく、7軸以上の自由度で動作する構成であってもよい。
マニピュレーターMが備える6つの(関節に備えられた)アクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、マニピュレーターMを動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、マニピュレーターMが備える6つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
ロボット制御装置30は、この一例において、ロボットを制御する(動作させる)コントローラーである。ロボット制御装置30は、前述の校正ボードCBを含む範囲を撮像部10に撮像させる。そして、ロボット制御装置30は、撮像部10が撮像した撮像画像を撮像部10から取得する。ロボット制御装置30は、取得した撮像画像に基づいて、撮像部座標系CCとロボット座標系RCとを対応付ける校正を行う。具体的には、ロボット制御装置30は、当該撮像画像に基づいて、ロボット座標系RCと校正ボードCB上の位置を表す座標系である校正ボード座標系とを対応付ける校正を行う。ここで、校正ボード座標系とロボット座標系RCとを対応付ける校正が予めロボット制御装置30に対して行われていた場合、ロボット制御装置30は、これら2つの校正の結果に基づいて、撮像部座標系CCとロボット座標系RCとを対応付ける校正を行うことができる。校正ボード座標系とロボット座標系RCとを対応付ける校正をロボット制御装置30に対して行う方法は、ダイレクトティーチングのようなタッチアップ動作を含む方法等の既存の方法であってもよく、これから開発される新たな方法であってもよい。以下では、一例として、ロボット制御装置30には、校正ボード座標系とロボット座標系RCとを対応付ける校正が予め行われている場合について説明する。撮像部座標系CCとロボット座標系RCとを対応付ける校正が行われた後、ロボット制御装置30は、撮像部10により撮像された撮像画像に基づいてロボット20に所定の作業を行わせる。
<校正ボードの構成>
以下、校正ボードCBについて説明する。校正ボードCBには、4個以上のマーカーからなるパターンPNが設けられている。すなわち、パターンPNは、これら4個以上のマーカーを含む。パターンPNにおいて、4個以上のマーカーのそれぞれは、凸包の頂点に位置する。凸包は、与えられた点をすべて包含する最小の凸多角形のことである。これにより、パターンPNを構成する4個以上のマーカーの中から選択可能な3個のマーカーの組み合わせは、いずれも一直線上に並ぶことがない。また、この一例において、パターンPNでは、4個以上のマーカーのうちの1個のマーカーである第1マーカーは、他のマーカーと異なる特徴を有する。具体的には、パターンPNを構成する4個以上のマーカーのうちの第1マーカーを含む辺の長さは、当該4個以上のマーカーのそれぞれが頂点に位置する凸包における他の辺の長さよりも長い。なお、パターンPNに含まれる4個以上のマーカーには、当該特徴を有する第1マーカーが含まれない構成であってもよい。しかし、パターンPNに含まれる4個以上のマーカーに第1マーカーが含まれている場合、校正ボードCBは、パターンPNに含まれる4個以上のマーカーに第1マーカーが含まれていない場合と比較して、短時間で校正ボードCBを検出させることができる。
以下では、一例として、パターンPNが、5個のマーカーであるマーカーMK1〜マーカーMK5を含む場合について説明する。当該5個は、所定数の一例である。また、以下では、マーカーMK1が第1マーカーである場合について説明する。また、以下では、マーカーMK1〜マーカーMK5の全部が互いに同じ形状のマーカーであり、当該全部が互いに同じ大きさのマーカーである場合について説明する。なお、第1マーカーは、マーカーMK1に代えて、マーカーMK2〜マーカーMK5のうちのいずれかであってもよい。また、マーカーMK1〜マーカーMK5の一部又は全部は、互いに異なる形状のマーカーであってもよく、互いに異なる大きさのマーカーであってもよい。
図2は、パターンPNの一例を示す図である。図2に示したように、パターンPNには、マーカーMK1〜マーカーMK5が含まれる。この一例において、マーカーMK1〜マーカーMK5のそれぞれは、図心マーカーである。なお、マーカーMK1〜マーカーMK5の一部又は全部は、図心マーカーに代えて、他のマーカーであってもよい。
ここで、図心マーカーの図心について説明する。図3は、図心を説明するための図である。図3には、輪郭が曲線によって形成された図形F0と、図形F0を構成する各点の位置を表すための二次元座標系と、当該各点の位置を示すベクトルr_iとが示されている。ここで、図3では、ベクトルrを、rの上に矢印を付帯させることによって表している。また、図3では、ベクトルr_iの「_」の後に付された「i」を、rの下付き添え字iによって表している。また、添え字iは、図形F0を構成する各点(例えば、画素)を区別するためのラベルである。また、図3において、二次元座標系の原点から図形F0へ伸びる矢印は、ベクトルr_iの大きさ及び方向を表す矢印である。
図心は、云わば図形の中心である。図心は、1つの図形に対して1つのみ一意に決まる。図3に示した図形F0の図心の位置は、ベクトルr_iを用いて、以下に示した式(1)によって定義されるベクトルcにより表される。
式(1)において、ベクトルcは、cの上に矢印を付帯させることによって表している。また、Nは、図形F0を構成する各点の数であり、1以上の整数である。すなわち、図3に示した図形F0の図心の位置は、図形F0を構成する各点の位置を表すベクトルの総和を、当該各点の数によって除したベクトル(N個のベクトルの平均)によって表される。なお、図3では、二次元の図形F0と、二次元の座標系と、二次元のベクトルとを用いて図心について説明したが、図心の位置は、三次元以上の図形に対しても上記の式(1)によって定義されるベクトルcによって表される。
図心マーカーは、3つ以上の図形の組み合わせによって構成されるマーカーである。つまり、図心マーカーを構成する当該3つ以上の図形それぞれの図心は、所定の範囲内に収まる(含まれる)。例えば、図形A0と、図形B0と、図形C0との組み合わせによって構成される図心マーカーでは、図形A0の図心A1と、図形B0の図心B1と、図形C0の図心C1とが所定の範囲内に収まる(含まれる)。所定の範囲は、例えば、半径が数画素程度の円形の範囲であるが、半径が1画素未満の円形の範囲であってもよく、半径が数画素以上の円形の範囲であってもよく、矩形等の円形とは異なる他の形状の範囲であってもよい。
次に、図2に示したマーカーMK1〜マーカーMK5のうちマーカーMK1を例に挙げて図心マーカーについて説明する。図4は、図2に示したマーカーMK1を示す図である。図4に示した通り、マーカーMK1は、3つ以上の図形によって構成されている。具体的には、マーカーMK1を構成する3つ以上の図形のそれぞれは、二値化画像において白色又は黒色のみの部分領域として検出される。すなわち、マーカーMK1は、輪郭が円形状の黒色の部分領域によって表される図形M11と、輪郭がリング形状の白色の部分領域によって表される図形M12と、輪郭がリング形状の黒色の部分領域によって表される図形M13との3つの図形によって構成されている。また、マーカーMK1は、図形M11と、図形M12と、図形M13とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形M11と、図形M12と、図形M13との組み合わせによって構成されるマーカーMK1は、図心マーカーである。なお、マーカーMK1における図形M11〜図形M13は、それぞれの輪郭が同心円を構成し、図心が当該同心円の中心に位置する。なお、図心マーカーは、図心マーカーを構成する3つ以上の図形の組み合わせが同心円を構成しない組み合わせであってもよい。しかし、この場合であっても、図心マーカーは、図心マーカーを構成する3つ以上の図形それぞれの図心が、所定の範囲内に収まる。マーカーMK1〜マーカーMK5のそれぞれが図心マーカーである場合、偶発的に3つの図心が所定の範囲内に収まる可能性が低いため、校正ボードCBは、マーカーMK1〜マーカーMK5のそれぞれの誤検出を抑制し、マーカーMK1〜マーカーMK5のそれぞれを精度よく検出させることができる。
このような図心マーカーであるマーカーMK1〜マーカーMK5は、パターンPNにおいて、図5に示したように回転対称性を有さない凸包の頂点に位置する。図5は、パターンPNにおけるマーカーMK1〜マーカーMK5の幾何学的な位置関係の一例を示す図である。すなわち、マーカーMK1〜マーカーMK5のそれぞれは、パターンPNにおいて、回転対称性を有さない凸五角形である凸包の各頂点に配置される。図5に示した凸包CH1は、マーカーMK1〜マーカーMK5のそれぞれが頂点に位置する回転対称性を有さない凸包の一例である。このようなマーカーMK1〜マーカーMK5の幾何学的な位置関係により、マーカーMK1〜マーカーMK5の中から選択可能な3個のマーカーの組み合わせは、いずれも一直線上に並ぶことがない。また、前述した通り、凸包CH1における第1マーカーであるマーカーMK1を含む辺の長さは、凸包CH1における他の辺の長さよりも長い。
図2に戻る。この一例におけるパターンPNには、n個の黒丸である黒丸BC1〜黒丸BCnと、マーカーOPと、マーカーXP1と、マーカーXP2と、マーカーYP1と、マーカーYP2が更に含まれる。ここで、nは、任意の整数である。なお、パターンPNには、n個の黒丸である黒丸BC1〜黒丸BCnと、マーカーOPと、マーカーXP1と、マーカーXP2と、マーカーYP1と、マーカーYP2との一部又は全部が含まれない構成であってもよい。また、マーカーXP1及びマーカーXP2の少なくとも一方は、第1基準部分の一例である。また、マーカーYP1及びマーカーYP2の少なくとも一方は、第2基準部分の一例である。
黒丸BC1〜黒丸BCnのそれぞれは、パターンPN内の領域を正方格子状に区切った場合における各格子点に配置される。また、黒丸BC1〜黒丸BCnのうちのある黒丸がマーカーMK1〜マーカーMK5のいずれかのマーカーと重なる位置では、当該黒丸が削除され、当該マーカーが当該位置に配置される。このような黒丸BC1〜黒丸BCnは、例えば、校正ボードCBによって撮像部10の歪補正を行う際に用いられる。また、このような黒丸BC1〜黒丸BCnは、ロボット制御装置30が校正ボードCBの姿勢を検出する精度を向上させるために用いることも可能である。なお、黒丸BC1〜黒丸BCnのうちの一部又は全部は、他の形状であってもよく、他の大きさであってもよく、他の色であってもよい。この場合、当該一部又は全部は、マーカーMK1〜マーカーMK5、マーカーOP、マーカーXP1、マーカーXP2、マーカーYP1、マーカーYP2のいずれと比較しても識別可能でなければならない。
マーカーOPは、パターンPN上の位置を表す座標系の原点を示すマーカーである。図2に示したマーカーOPは、複数の黒丸BC1〜黒丸BCnのそれぞれよりも直径が大きな黒丸によって表されている。なお、マーカーOPは、当該黒丸に代えて、複数の黒丸BC1〜黒丸BCnのそれぞれよりも直径が小さな黒丸であってもよく、他の形状のマーカーであってもよく、他の色のマーカーであってもよい。マーカーOPは、マーカーMK1〜マーカーMK5のそれぞれが頂点に位置する凸包CH1の内部(内側)に位置する(図5参照)。この一例において、マーカーOPの位置は、マーカーMK1〜マーカーMK5のうち最も距離が離れた2つのマーカー間の中点の位置である。すなわち、マーカーOPは、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置を表す。ここで、マーカーOPが黒丸BC1〜黒丸BCnのうちのある黒丸と重なる位置では、当該黒丸が削除され、マーカーOPが当該位置に配置される。なお、マーカーOPは、パターンPNに含まれない構成であってもよい。ただし、マーカーOPがパターンPNに含まれることにより、校正ボードCBは、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置の誤検出を抑制し、当該位置を精度よく検出させることができる。また、マーカーOPは、マーカーMK1〜マーカーMK5の幾何学的な位置関係と無関係な位置を表す構成であってもよい。すなわち、マーカーOPの位置は、凸包CH1の内部であれば、如何なる位置であってもよい。
マーカーXP1及びマーカーXP2の形状及び大きさは、この一例において、マーカーOPの形状及び大きさと同じ形状及び大きさである。この一例において、マーカーXP1とマーカーXP2は、マーカーXP1とマーカーXP2を結ぶ直線上にマーカーOPが位置するように配置される。また、マーカーXP1とマーカーXP2とは、前述の正方格子が有する辺のうちの一辺と当該直線とが平行になるように配置される。すなわち、マーカーXP1とマーカーXP2とを結ぶ直線は、パターンPN上において原点となるマーカーOPを通るX軸を表している。ここで、マーカーXP1が黒丸BC1〜黒丸BCnのうちのある黒丸と重なる位置では、当該黒丸が削除され、マーカーXP1が当該位置に配置される。また、マーカーXP2の位置が黒丸BC1〜黒丸BCnのうちのある黒丸と重なる位置では、当該黒丸が削除され、マーカーXP2が当該位置に配置される。なお、マーカーXP1及びマーカーXP2は、パターンPNに含まれない構成であってもよい。ただし、マーカーXP1及びマーカーXP2がパターンPNに含まれることにより、校正ボードCBは、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じたX軸であって校正ボードCBの姿勢を表す座標系におけるX軸の誤検出を抑制し、当該X軸を精度よく検出させることができる。また、マーカーXP1とマーカーXP2とのいずれか一方又は両方は、他の形状であってもよく、他の大きさであってもよく、他の色であってもよい。
マーカーYP1及びマーカーYP2の形状及び大きさは、この一例において、マーカーOPの形状及び大きさと同じ形状及び大きさである。この一例において、マーカーYP1とマーカーYP2は、マーカーYP1とマーカーYP2を結ぶ直線上にマーカーOPが位置するように配置される。また、マーカーYP1とマーカーYP2は、マーカーXP1とマーカーXP2とを結ぶ直線と、マーカーYP1とマーカーYP2とを結ぶ直線とが直交するように配置される。すなわち、マーカーYP1とマーカーYP2とを結ぶ直線は、パターンPN上において原点となるマーカーOPを通るY軸を表している。ここで、マーカーYP1が黒丸BC1〜黒丸BCnのうちのある黒丸と重なる位置では、当該黒丸が削除され、マーカーYP1が当該位置に配置される。また、マーカーYP2が黒丸BC1〜黒丸BCnのうちのある黒丸と重なる位置では、当該黒丸が削除され、マーカーYP2が当該位置に配置される。なお、マーカーYP1及びマーカーYP2は、パターンPNに含まれない構成であってもよい。ただし、マーカーYP1及びマーカーYP2がパターンPNに含まれることにより、校正ボードCBは、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じたY軸であって校正ボードCBの姿勢を表す座標系におけるY軸の誤検出を抑制し、当該Y軸を精度よく検出させることができる。また、マーカーYP1とマーカーYP2とのいずれか一方又は両方は、他の形状であってもよく、他の大きさであってもよく、他の色であってもよい。
<ロボット制御装置のハードウェア構成>
以下、図6を参照し、ロボット制御装置30のハードウェア構成について説明する。図6は、ロボット制御装置30のハードウェア構成の一例を示す図である。
ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。また、ロボット制御装置30は、通信部34を介して撮像部10、ロボット20のそれぞれと通信を行う。
CPU31は、記憶部32に格納された各種プログラムを実行する。
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)等を含む。なお、記憶部32は、ロボット制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部32は、ロボット制御装置30が処理する各種情報、ロボット20を動作させる動作プログラムを含む各種プログラム、各種画像等を格納する。
入力受付部33は、例えば、表示部35と一体に構成されたタッチパネルである。なお、入力受付部33は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部35は、例えば、液晶ディスプレイパネル、あるいは、有機EL(ElectroLuminescence)ディスプレイパネルである。
<ロボット制御装置の機能構成>
以下、図7を参照し、ロボット制御装置30の機能構成について説明する。図7は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、記憶部32と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、撮像制御部41と、画像取得部43と、検出部45と、校正部47と、位置姿勢算出部49と、ロボット制御部51を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
撮像制御部41は、撮像部10が撮像可能な範囲を撮像部10に撮像させる。
画像取得部43は、撮像部10が撮像した撮像画像を撮像部10から取得する。
検出部45は、画像取得部43が取得した撮像画像に基づいて、撮像画像に含まれるマーカーMK1〜マーカーMK5それぞれの候補であるマーカー候補を検出する。検出部45は、検出したマーカー候補に基づいて、マーカーMK1〜マーカーMK5からなるパターンPNを検出する。また、検出部45は、画像取得部43が取得した撮像画像に基づいて、撮像画像に含まれるマーカーOPを検出する。また、検出部45は、画像取得部43が取得した撮像画像に基づいて、撮像画像に含まれるマーカーXP1及びマーカーXP2を検出する。また、検出部45は、画像取得部43が取得した撮像画像に基づいて、撮像画像に含まれるマーカーYP1及びマーカーYP2を検出する。
校正部47は、検出部45が検出したパターンPNに基づいて、撮像部座標系CCとロボット座標系RCとを対応付ける校正を行う。
位置姿勢算出部49は、検出部45が検出したパターンPNに基づいて、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置及び姿勢を算出する。なお、位置姿勢算出部49は、検出部45が検出したパターンPNに基づいて、マーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置又は姿勢を算出する構成であってもよい。
ロボット制御部51は、位置姿勢算出部49が算出した位置及び姿勢に基づいて、ロボット20に所定の作業を行わせる。
<ロボット制御装置が校正を行う処理>
以下、図8を参照し、ロボット制御装置30が校正を行う処理について説明する。当該校正は、撮像部座標系CCとロボット座標系RCとの対応付けを行う校正である。図8は、ロボット制御装置30が校正を行う処理の流れの一例を示すフローチャートである。なお、前述した通り、以下では、ロボット制御装置30には、校正ボード座標系とロボット座標系RCとを対応付ける校正が予め行われている場合について説明する。
検出部45は、記憶部32に予め記憶された基準パターンを記憶部32から読み出す(ステップS105)。ここで、ステップS105の処理について説明する。基準パターンは、撮像画像に含まれるマーカーMK1〜マーカーMK5を検出部45が検出するために用いる比較対象となる画像である。図9は、基準パターンの一例を示す図である。図9に示した基準パターンBPは、このような基準パターンの一例である。基準パターンBPには、マーカーMK1と、マーカーMK2と、マーカーMK3と、マーカーMK4と、マーカーMK5とが予め決められた所定の相対的な位置関係となるように配置される。当該位置関係は、パターンPNに含まれるマーカーMK1〜マーカーMK5のそれぞれの幾何学的な位置関係と同じ位置関係である。すなわち、マーカーMK1〜マーカーMK5のそれぞれは、前述の凸包CH1と同じ形状の凸包である凸包BCHの各頂点に位置する。
また、基準パターンBPには、基準パターンBPに含まれるマーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置及び姿勢を表す二次元座標系BCが対応付けられている。当該位置は、二次元座標系BCにおける原点のロボット座標系RCにおける位置によって表される。また、当該姿勢は、二次元座標系BCにおける各座標軸のロボット座標系RCにおける方向によって表される。なお、図9に示した二次元座標系BCの原点の位置は、凸包BCHの内側に位置しているが、凸包BCHの外側に位置する構成であってもよい。
より具体的には、基準パターンBPを構成するマーカーMK1〜マーカーMK5のそれぞれは、図10に示した座標に基づいて基準パターンBP上に配置される。図10は、図9に示した二次元座標系BCにおけるマーカーMK1〜マーカーMK5それぞれのX座標及びY座標を示すテーブルである。図9及び図10に示した例では、二次元座標系BCにおけるX軸の正方向は、マーカーMK4からマーカーMK5に向かう方向と一致している。また、二次元座標系BCにおけるY軸の正方向は、マーカーMK3からマーカーMK2に向かう方向と一致している。なお、二次元座標系BCにおけるX軸の正方向及びY軸の正方向は、他の方向と一致している構成であってもよい。図10に示したX座標及びY座標の値は、マーカーMK1〜マーカーMK5のうち二次元座標系BCの原点に最も近いマーカーと二次元座標系BCの原点との相対的な距離を10として算出された値である。このため、図10に示したX座標及びY座標の値には、単位を示していない。
ステップS105の処理が行われた後、撮像制御部41は、撮像部10が撮像可能な範囲を撮像部10に撮像させる(ステップS110)。次に、画像取得部43は、ステップS110において撮像部10が撮像した撮像画像を撮像部10から取得する(ステップS120)。次に、検出部45は、ステップS120において画像取得部43が取得した撮像画像に基づいて、撮像画像に含まれるマーカーMK1〜マーカーMK5のそれぞれの候補であるマーカー候補を検出する(ステップS130)。ここで、ステップS130の処理について説明する。
ステップS130において検出部45は、ステップS120において画像取得部43が取得した撮像画像に含まれる複数の図形の中から図3に示した図心マーカーであると判定可能な図形をマーカー候補として検出する。すなわち、検出部45は、当該複数の図形の中から、3つ以上の図心が所定の範囲内に収まっていると判定可能な図形の組み合わせをマーカー候補として検出する。当該組み合わせには、ノイズが含まれる。ノイズは、この一例において、図3に示した図心マーカーとして撮像画像の中から検出部45により誤検出される他のマーカー、図形、模様等である。以下では、一例として、検出部45が6個のマーカー候補であるマーカー候補DP1〜マーカー候補DP6のそれぞれを検出した場合について説明する。この場合、検出対象であるマーカーが5個のマーカーMK1〜マーカーMK5であるため、マーカー候補DP1〜マーカー候補DP6のうちのいずれか1個は、マーカー候補として誤検出されたノイズである。なお、検出部45は、当該撮像画像に含まれる複数の図形の中から、パターンマッチングによって当該図心マーカーであると判定可能な図形をマーカー候補として検出する構成であってもよい。この場合、検出部45は、予め記憶部32に記憶された図心マーカーのモデル画像を読み出し、読み出した当該モデル画像に基づいてマーカー候補を検出する。なお、検出部45は、マーカー候補を検出する際、マーカー候補の撮像部座標系CCにおける位置(X座標及びY座標)も検出する。
図11に示したマーカー候補DP1〜マーカー候補DP6のそれぞれは、このようにして検出部45により検出されたマーカー候補である。図11は、画像取得部43が取得した撮像画像のうちの一部分の一例を示す図である。当該一部分は、当該撮像画像のうちマーカーMK1〜マーカーMK5のそれぞれが撮像されている部分である。図11に示した画像P1は、当該一部分の一例である。なお、図11に示した例では、マーカー候補DP5が、前述のマーカー候補として検出されたノイズである。このため、図11では、マーカー候補DP5を他のマーカー候補と区別するために点線によって表している。
ステップS130の処理が行われた後、検出部45は、ステップS130において検出された6個のマーカー候補の中から選択可能な5個のマーカー候補の組み合わせのそれぞれを第0組み合わせとして抽出する。そして、検出部45は、抽出した1以上の第0組み合わせの中から所定条件を満たす組み合わせを第1組み合わせとして抽出する(ステップS140)。所定条件は、この一例において、第1組み合わせに含まれる5個のマーカー候補のそれぞれが凸包の頂点に位置することである。ここで、ステップS140の処理について説明する。
検出部45は、抽出した第0組み合わせのそれぞれ毎に、第0組み合わせに含まれる5個のマーカー候補に基づく凸包を検出する。検出部45が、抽出した第0組み合わせのそれぞれ毎に当該凸包を検出する方法は、既存の方法であってもよく、これから開発される方法であってもよい。当該凸包を検出する方法が既存の方法である場合、検出部45は、例えば、第0組み合わせのそれぞれ毎に、第0組み合わせの中から所定の選択条件を満たすマーカー候補を1つ選択する。所定の選択条件は、以下に示す1)、2)の条件を両方満たすことである。
1)ステップS120において画像取得部43が取得した撮像画像内において最も上(撮像部座標系CCにおけるY軸の座標が最も大きい位置)に位置しているマーカー候補であること
2)1)の条件を満たすマーカー候補が2個以上ある場合、当該2個以上のマーカー候補のうち最も右(撮像部座標系CCにおけるX軸の座標が最も大きい位置)に位置しているマーカー候補であること
なお、所定の選択条件は、上記に示した1)、2)の条件に代えて、他の条件を満たすことであってもよい。また、所定の選択条件は、上記に示した1)、2)の条件に加えて、他の条件を満たすことであってもよい。また、所定の選択条件は、上記に示した1)の条件のみを満たすことであってもよい。
検出部45は、選択したマーカー候補である選択マーカー候補から、他のマーカー候補のそれぞれまでのベクトルを算出する。検出部45は、算出した各ベクトルを長さ1のベクトルに正則化する。ここで、これらの正則化したベクトルに含まれるあるベクトルCV1と、当該正則化したベクトルに含まれるあるベクトルCV2との外積「ベクトルCV1×ベクトルCV2」が負の場合、ベクトルCV1が示すマーカー候補は、ベクトルCV2が示すマーカー候補よりも撮像部座標系CCにおけるX軸の座標が小さい位置に位置している。そこで、検出部45は、当該正則化したベクトルのそれぞれ同士の外積を算出し、算出した外積の結果が負か否かを判定することによって、当該X軸の座標が最も小さいマーカー候補を特定する。検出部45は、特定したマーカー候補を次の選択マーカー候補として選択する。検出部45は、このような選択マーカー候補の選択を繰り返し、最初に選択した選択マーカー候補が再び選択マーカー候補として選択されるまで繰り返す。そして、検出部45は、最初に選択した選択マーカー候補から選択した順に選択マーカー候補として選択されたマーカー候補を直線で結んだ場合に形成される形状、すなわち凸包を検出する。検出部45は、このような凸包の検出を、第0組み合わせのそれぞれ毎に行う。なお、検出部45は、当該正則化したベクトルのそれぞれ同士の外積を算出し、算出した外積の結果が正か否かを判定することによって、当該X軸の座標が最も大きなマーカー候補を特定する構成であってもよい。
検出部45は、検出された凸包に基づいて、所定条件を満たす第0組み合わせのそれぞれを第1組み合わせとして抽出する。所定条件は、第0組み合わせに含まれるマーカー候補のそれぞれが、当該それぞれに基づいて検出された凸包の頂点に位置していることである。すなわち、検出部45は、検出された凸包のそれぞれから、凸包の頂点の数が4以下の凸包を除外する。そして、検出部45は、除外されずに残った凸包、すなわち頂点の数が5の凸包を特定する。検出部45は、特定した凸包のそれぞれ毎に、凸包を構成するマーカー候補の組み合わせを、所定条件を満たす第0組み合わせ、すなわち第1組み合わせとして抽出する。
ここで、所定条件を満たす第0組み合わせについて、図12及び図13を例に挙げて説明する。図12は、所定条件を満たす組み合わせと判定される可能性のある第0組み合わせの一例を示す図である。図12に示した第0組み合わせは、マーカー候補DP3が検出された撮像部座標系CCにおける位置に応じて、所定条件を満たすか否かが変化する。例えば、マーカー候補DP3とマーカー候補DP2との外積が0又は正であった場合、検出部45は、図12に示した第0組み合わせに基づいて、マーカー候補DP2、マーカー候補DP4、マーカー候補DP5、マーカー候補DP6の4つのマーカー候補のそれぞれを頂点とする凸包を検出する。図12に示した凸包CH2は、このような凸包の一例である。この場合、当該凸包の頂点の数が4であるため、検出部45は、図12に示した第0組み合わせを、第1組み合わせとして抽出しない。一方、マーカー候補DP3とマーカー候補DP2との外積が負であった場合、検出部45は、マーカー候補DP2、マーカー候補DP3、マーカー候補DP4、マーカー候補DP5、マーカー候補DP6の5つのマーカー候補のそれぞれを頂点とする凸包を検出する。この場合、当該凸包の頂点の数が5であるため、検出部45は、図12に示した第0組み合わせを、第1組み合わせとして抽出する。
一方、図13は、所定条件を満たす組み合わせと判定される第0組み合わせの一例を示す図である。図13に示した例では、検出部45は、マーカー候補DP1〜マーカー候補DP4、及びマーカー候補DP5の組み合わせを第0組み合わせとして選択している。この場合、検出部45は、当該第0組み合わせに基づいて凸包CH3を検出する。図13に示したように、凸包CH3の頂点の数は、5である。このため、検出部45は、図13に示した第0組み合わせを、所定条件を満たす組み合わせであると判定し、当該第0組み合わせを第1組み合わせとして抽出する。
また、ステップS140において、検出部45は、抽出した第1組み合わせのそれぞれ毎に、第1組み合わせに含まれる各マーカー候補に順番を対応付ける。ここで、図13に示した第1組み合わせを例に挙げて、当該各マーカー候補に順番を対応付ける処理について説明する。検出部45は、当該第1組み合わせに含まれる各マーカー候補に対して、各マーカー候補が前述の選択マーカー候補として選択された順番を対応付ける。図13に示した例では、1番目に選択マーカー候補として選択されたマーカー候補は、マーカー候補DP1である。このため、検出部45は、マーカー候補DP1に対して1番目を表す番号として1を対応付ける。また、当該例では、2番目に選択マーカー候補として選択されたマーカー候補は、マーカー候補DP4である。このため、検出部45は、マーカー候補DP4に対して2番目を表す番号として2を対応付ける。これを繰り返し、検出部45は、マーカー候補DP3に3番目の順番を表す番号として3を対応付け、マーカー候補DP2に4番目の順番を表す番号として4を対応付け、マーカー候補DP6に5番目の順番を表す番号として5を対応付ける。
ステップS140の処理が行われた後、検出部45は、ステップS140において抽出した1以上の第1組み合わせ毎に、ステップS155〜ステップS170の処理を繰り返し行う(ステップS150)。
検出部45は、ステップS150において選択した第1組み合わせに含まれるマーカー候補の中から1個ずつ第1マーカーの候補である第1マーカー候補を選択する。そして、検出部45は、選択した第1マーカー候補毎にステップS160〜ステップS170の処理を繰り返し行う(ステップS155)。より具体的には、検出部45は、ステップS155において選択した第1マーカー候補と、基準パターンBPに含まれる第1マーカー(この一例において、マーカーMK1)とが一致するように、ステップS150において選択した第1組み合わせに含まれる5個のマーカー候補のそれぞれを、基準パターンBPに含まれるマーカーMK1〜マーカーMK5のそれぞれに写像するホモグラフィー変換を行う。
次に、検出部45は、ステップS160において行ったホモグラフィー変換の結果と、基準パターンBPとを比較し、当該結果と基準パターンBPとの整合性を表す値として、当該結果と基準パターンBPとの残差を算出する(ステップS170)。残差の算出方法については、既知の方法であってもよく、これから開発される方法であってもよい。ここで、図14〜図16を参照し、ステップS160〜ステップS170の処理について説明する。なお、ここでは、図13に示した第0組み合わせがステップS150において選択された第1組み合わせである場合を例に挙げて説明する。
図14は、ステップS130において検出部45によって検出されたX座標及びY座標であってマーカー候補DP1〜マーカー候補DP6それぞれの撮像部座標系CCにおけるX座標及びY座標の一例を示すテーブルである。
図15は、ステップS160においてホモグラフィー変換が行われた後の第1組み合わせに含まれる各マーカー候補の二次元座標系BCにおける座標の一例を示す図である。図15に示した例では、検出部45は、マーカー候補DP1を第1マーカー候補として選択している。この場合、検出部45は、ステップS170において、図15に示したホモグラフィー変換の結果と基準パターンBPとの残差を3.26と算出する。
一方、図16は、ステップS160においてホモグラフィー変換が行われた後の第1組み合わせに含まれる各マーカー候補の二次元座標系BCにおける座標の他の例を示す図である。図16に示した例では、検出部45は、マーカー候補DP6を第1マーカー候補として選択している。この場合、検出部45は、ステップS170において、図16に示したホモグラフィー変換の結果と基準パターンBPとの残差を0.0158と算出する。
ステップS150〜ステップS170の繰り返し処理によって第1組み合わせと第1マーカー候補との組み合わせのそれぞれ毎に対応する残差が算出された後、検出部45は、最も小さい残差に対応する当該組み合わせを特定する。なお、検出部45は、このようなホモグラフィー変換に基づく当該組み合わせの特定により、図12に示すような基準パターンBPに整合しないパターンを構成する第1組み合わせを除外することができる。このため、検出部45は、ステップS140において、当該第1組み合わせが除外できなかった場合であっても、ステップS150〜ステップS170の繰り返し処理によって当該第1組み合わせを除外することができる。そして、検出部45は、特定した当該最も小さい残差に対応する組み合わせにおける第1組み合わせに含まれる5個のマーカー候補を、基準パターンBPに整合するパターンであるパターンPNを構成するマーカー候補として検出する(ステップS180)。
次に、検出部45は、ステップS180において検出したマーカー候補の組み合わせを含む第1組み合わせに対応する残差が所定閾値未満であるか否かを判定する(ステップS190)。当該残差が所定閾値未満ではないと判定した場合(ステップS190−NO)、検出部45は、ステップS120において画像取得部43が取得した撮像画像に基づいてパターンPNを検出することができなかったと判定する。そして、撮像制御部41は、ステップS110に遷移し、再び撮像部10が撮像可能な範囲を撮像部10に撮像させる。一方、当該残差が所定閾値未満であると判定した場合(ステップS190−YES)、検出部45は、ステップS180において検出した5個のマーカー候補をマーカーMK1〜マーカーMK5として検出(特定)する。すなわち、検出部45は、当該場合、当該マーカー候補からなるパターンPNを検出する(ステップS195)。
次に、検出部45は、ステップS195において検出したパターンPNに含まれるマーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置であって撮像部座標系CCにおける位置を検出する(ステップS200)。具体的には、検出部45は、基準パターンBPに対応付けられた二次元座標系BCの原点の撮像部座標系CCにおける位置を、ホモグラフィー変換(ステップS160において行ったホモグラフィー変換に対する逆ホモグラフィー変換)によって算出する。なお、この一例において、パターンPNには、マーカーOPが含まれている。このため、検出部45は、マーカーOPの撮像部座標系CCにおける位置を、ステップS195において検出したパターンPNに含まれるマーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置として検出することもできる。この場合、検出部45は、パターンPNを構成するマーカーMK1〜マーカーMK5のそれぞれが頂点に位置する凸包CH1の内部に存在するマーカーOPを検出する。検出部45は、例えば、パターンマッチングによってマーカーOPを検出する。そして、検出部45は、検出したマーカーOPの撮像部座標系CCにおける位置を、ステップS195において検出したパターンPNに含まれるマーカーMK1〜マーカーMK5の幾何学的な位置関係に応じた位置として検出する。これにより、検出部45は、ホモグラフィー変換の精度に依らず、高い精度で当該位置を検出することができる。なお、検出部45は、パターンマッチングに代えて、他の方法によってマーカーOPを検出する構成であってもよい。
次に、検出部45は、ステップS195において検出したパターンPN上のX軸及びY軸であって撮像部座標系CCにおける当該X軸及び当該Y軸のそれぞれを検出する(ステップS210)。具体的には、検出部45は、基準パターンBPに対応付けられた二次元座標系BCにおける各座標軸の撮像部座標系CCにおける方向を、ホモグラフィー変換(ステップS160において行ったホモグラフィー変換に対する逆ホモグラフィー変換)によって検出する。なお、この一例において、パターンPNには、マーカーXP1、マーカーXP2、マーカーYP1、マーカーYP2のそれぞれが含まれている。このため、検出部45は、マーカーXP1、マーカーXP2、マーカーYP1、マーカーYP2のそれぞれに基づいて、ステップS195において検出したパターンPN上のX軸及びY軸であって撮像部座標系CCにおける当該X軸及び当該Y軸のそれぞれを検出することもできる。この場合、検出部45は、パターンPNを構成するマーカーMK1〜マーカーMK5のそれぞれが頂点に位置する凸包CH1の外部に存在するマーカーXP1、マーカーXP2、マーカーYP1、マーカーYP2のそれぞれを検出する。検出部45は、例えば、パターンマッチングによってマーカーXP1、マーカーXP2、マーカーYP1、マーカーYP2のそれぞれを検出する。そして、検出部45は、検出したマーカーXP1とマーカーXP2との両方を通る直線を当該X軸として検出する。また、検出部45は、検出したマーカーYP1とマーカーYP2との両方を通る直線を当該Y軸として検出する。これにより、検出部45は、ホモグラフィー変換の精度に依らず、高い精度で当該X軸及び当該Y軸を検出することができる。
次に、校正部47は、ステップS195において検出されたパターンPNと、ステップS200において検出された原点の位置と、ステップS210において検出されたX軸及びY軸とに基づいて、撮像部座標系CCとロボット座標系RCとの対応付けを行い(ステップS220)、処理を終了する。具体的には、校正部47は、当該パターンPNと、当該原点の位置と、当該X軸及び当該Y軸とに基づいて、ロボット座標系RCと校正ボードCB上の位置を表す座標系である校正ボード座標系(この一例において、二次元座標系BC)とを対応付ける校正を行う。校正部47は、この校正の結果と、ロボット座標系RCと校正ボード座標系との対応付けの結果とに基づいて、撮像部座標系CCとロボット座標系RCとの対応付けを行う。
このように、ロボット制御装置30は、撮像部10により撮像された撮像画像に含まれるマーカー候補から、それぞれが凸包の頂点に位置する4個以上である所定数のマーカーからなる基準パターンBPに整合する所定数のマーカー候補を検出する。これにより、ロボット制御装置30は、4個以上のマーカーに応じた位置を精度よく検出することができる。
<ロボットに所定の作業を行わせる際にロボット制御装置が行う処理>
以下、図17及び図18を参照し、ロボット20に所定の作業を行わせる際にロボット制御装置30が行う処理について説明する。
図17は、ロボット20に所定の作業を行わせる際におけるロボットシステム1の構成の一例を示す図である。図17に示した構成は、図1に示した構成と作業台TBに載置された物体が異なる。図17に示した構成では、作業台TBの上面には、校正ボードCBに代えて、対象物Oが載置されている。対象物Oは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。なお、対象物Oは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。図1に示した例では、対象物Oは、立方体形状の物体として表している。なお、対象物Oの形状は、立方体形状に代えて、他の形状であってもよい。
対象物Oが有する面のうち作業台TBの上面に接面している面に対向している面には、パターンPN2が設けられている。パターンPN2は、パターンPNからn個の黒丸BC1〜BCnが省略されたパターンである。すなわち、パターンPN2には、マーカーMK1〜マーカーMK5のそれぞれと、マーカーOPと、マーカーXP1と、マーカーXP2と、マーカーYP1と、マーカーYP2とが含まれる。なお、パターンPN2は、パターンPNと同じパターンであってもよい。
図17に示した例では、ロボット制御装置30がロボット20に行わせる所定の作業は、対象物Oを把持し、把持した対象物Oを図示しない給材領域に給材する作業である。ここで、図18を参照し、ロボット制御装置30がロボット20に所定の作業を行わせる処理について説明する。図18は、ロボット制御装置30がロボット20に所定の作業を行わせる処理の流れの一例を示すフローチャートである。なお、図17に示したフローチャートのステップS105〜ステップS195の処理は、図8に示したフローチャートのステップS105〜ステップS195の処理と同様の処理であるため説明を省略する。
位置姿勢算出部49は、ステップS195において検出したパターンPN上の位置を表す座標系の原点の位置であって撮像部座標系CCにおける位置を検出する。そして、位置姿勢算出部49は、検出した当該位置に基づいて対象物Oのロボット座標系RCにおける位置を算出する(ステップS310)。
次に、位置姿勢算出部49は、ステップS195において検出したパターンPN上のX軸及びY軸であって撮像部座標系CCにおける当該X軸及び当該Y軸のそれぞれを検出する。そして、位置姿勢算出部49は、検出した当該X軸の方向及び当該Y軸の方向それぞれのロボット座標系RCにおける方向を対象物Oの姿勢として算出する(ステップS320)。
次に、ロボット制御部51は、ステップS310において算出されたロボット座標系RCにおける対象物Oの位置と、ステップS320において算出されたロボット座標系RCにおける対象物Oの姿勢とに基づいて、ロボット20に所定の作業を行わせ(ステップS330)、処理を終了する。
このように、ロボット制御装置30は、図18に示したフローチャートの処理により、それぞれが凸包の頂点に位置する4個以上のマーカーからなるパターンPNが撮像部10により撮像された撮像画像に基づいてロボット20を動作させる。これにより、ロボット制御装置30は、4個以上のマーカーに応じた位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業をロボット20に精度よく行わせることができる。
<実施形態の変形例1>
以下、図19及び図20を参照し、実施形態の変形例1について説明する。実施形態の変形例1では、ロボット制御装置30は、図8に示したステップS155の処理に代えて、図19に示したステップS510の処理を行う。図19は、ロボット制御装置30が校正を行う処理の流れの他の例を示すフローチャートである。なお、図19に示したステップS105〜ステップS105の処理と、ステップS160〜ステップS220の処理とのそれぞれは、図8に示したステップS105〜ステップS105の処理と、ステップS160〜ステップS220の処理とのそれぞれと同じ処理であるため説明を省略する。
ステップS510において、検出部45は、ステップS150において選択した第1組み合わせに含まれるマーカー候補の中から第1マーカーを特定する(ステップS510)。ここで、ステップS510の処理について説明する。検出部45は、当該第1組み合わせに含まれるマーカー候補の中から選択可能な2個のマーカー候補の組み合わせをマーカー候補対として抽出する。検出部45は、抽出したマーカー候補対のそれぞれ毎に、マーカー候補対に含まれる2個のマーカー候補間の距離を算出する。
図20は、各マーカー候補対に含まれるマーカー候補間の距離であって検出部45により算出された距離の一例を示す図である。検出部45は、マーカー候補対毎に算出した距離のうち最も長い距離に対応するマーカー候補対と、マーカー候補対毎に算出した距離のうち2番目に長い距離に対応するマーカー候補対とを特定する。そして、検出部45は、特定した2つのマーカー候補対の両方に共通して含まれるマーカー候補を第1マーカーとして特定する。図20に示した例では、マーカー候補DP6とマーカー候補DP1とを含むマーカー候補対に対応する距離が最も長く、マーカー候補DP2とマーカー候補DP6とを含むマーカー候補対に対応する距離が2番目に長い。そして、これらのマーカー候補対の両方に共通して含まれるマーカー候補は、マーカー候補DP6である。従って、検出部45は、図20に示した例において、マーカー候補DP6を第1マーカーとして特定する。
このように、ロボット制御装置30は、ステップS510の処理によって第1マーカーを特定するため、ステップS155の繰り返し処理を行う必要がなくなり、撮像部座標系CCとロボット座標系RCとの対応付けを行う校正に要する時間を短縮することができる。そして、ロボット制御装置30は、実施形態と同様の効果を得ることができる。
<実施形態の変形例2>
以下、図21を参照し、実施形態の変形例2について説明する。実施形態の変形例2において、校正ボードCBには、マーカーXP1とマーカーOPとを結ぶ直線上に2以上のマーカーXP1が第1基準部分XP11として並べて配置されている。また、校正ボードCBには、マーカーXP2とマーカーOPとを結ぶ直線上に2以上のマーカーXP2が第1基準部分XP12として並べて配置されている。また、校正ボードCBには、マーカーYP1とマーカーOPとを結ぶ直線上に2以上のマーカーYP1が第2基準部分YP21として並べて配置されている。また、校正ボードCBには、マーカーYP2とマーカーOPとを結ぶ直線上に2以上のマーカーYP2が第2基準部分YP22として並べて配置されている。
図21は、実施形態の変形例2に係る校正ボードCBの一例を示す図である。図21に示した例では、第1基準部分XP11には、13個のマーカーXP1が一直線上に並べて配置されている。また、第1基準部分XP12には、13個のマーカーXP2が一直線上に並べて配置されている。また、第2基準部分YP11には、13個のマーカーYP1が一直線上に並べて配置されている。また、第2基準部分YP22には、13個のマーカーYP2が一直線上に並べて配置されている。
実施形態の変形例2に係る校正ボードCBを用いた場合、検出部45は、第1基準部分XP11においてマーカーXP1が並べられている方向と、第1基準部分XP12においてマーカーXP2が並べられている方向との少なくとも一方をパターンPN上のX軸方向として検出する。また、当該場合、検出部45は、第2基準部分YP21においてマーカーYP1が並べられている方向と、第2基準部分YP22においてマーカーYP2が並べられている方向との少なくとも一方をパターンPN上のY軸方向として検出する。
また、校正ボードCBに第1基準部分XP11、第1基準部分XP12、第2基準部分YP11、第2基準部分YP12が含まれている場合、ロボット制御装置30は、撮像部10により撮像された撮像画像に校正ボードCBの一部のみが含まれていたとしても、当該一部に基づいて、撮像部10が撮像可能な範囲内に校正ボードCBが有するパターンPNの全体が含まれるように撮像部10の光軸の方向を変化させることができる。ただし、この場合、撮像部10の光軸の方向を変化させる機構部が撮像部10に備えられている、又は撮像部10を移動させることが可能な移動部(例えば、ロボット20が備えるアームA)に撮像部10が備えられている必要がある。以下では、一例として、撮像部10の光軸の方向を変化させる機構部が撮像部10に備えられている場合について説明する。
例えば、校正ボードCBのうちのマーカーMK1〜マーカーMK5の全部を含む範囲が撮像部10により撮像された撮像画像に含まれておらず、校正ボードCBのうちの第1基準部分XP11を含む範囲のみが当該撮像画像に含まれていた場合、ロボット制御装置30は、当該撮像画像から第1基準部分XP11を検出する。そして、ロボット制御装置30は、検出した第1基準部分XP11に含まれるマーカーXP1が並べられた方向に沿って撮像部10の光軸の方向を移動させる。この際、ロボット制御装置30は、当該光軸の移動量が所定の移動量になる毎に、撮像部10が撮像可能な範囲を撮像部10に撮像させる。ロボット制御装置30は、撮像部10が撮像した撮像画像に、校正ボードCBのうちのマーカーMK1〜マーカーMK5の全部を含む範囲が含まれた状態となるまで、このような当該光軸の移動を繰り返す。これにより、ロボット制御装置30は、撮像部10により撮像された撮像画像に校正ボードCBの一部のみが含まれていたとしても、当該一部に基づいて、撮像部10が撮像可能な範囲内に校正ボードCBが有するパターンPNの全体が含まれるように撮像部10の光軸の方向を変化させることができる。
このように校正ボードCBが第1基準部分XP11、第1基準部分XP12、第2基準部分YP21、第2基準部分YP22のそれぞれを含むことにより、ロボット制御装置30は、パターンPN上のX軸及びY軸の誤検出を抑制することができる。また、実施形態の変形例2に係る校正ボードCBを用いた場合であっても、ロボット制御装置30は、実施形態と同様の効果を得ることができる。
なお、上記において説明した実施形態において、第1マーカーの大きさは、他のマーカーと比べて大きい構成であってもよい。また、第1マーカーの形状は、他のマーカーと異なる形状である構成であってもよい。また、第1マーカーの色は、他のマーカーと異なる色である構成であってもよい。これらにより、ロボット制御装置30は、第1マーカーを容易に検出することができる。
以上のように、校正ボードCBでは、4個以上のマーカー(この一例において、マーカーMK1〜マーカーMK5)のそれぞれは、回転対称性を有さない凸包(この一例において、凸包CH1)の頂点に位置する。これにより、校正ボードCBは、4個以上のマーカーに応じた位置を精度よく検出させることができる。
また、校正ボードCBでは、4個以上のマーカーのそれぞれは、図心マーカーである。これにより、校正ボードCBは、4個以上の図心マーカーに応じた位置を精度よく検出させることができる。
また、校正ボードCBでは、図心マーカーのそれぞれは、図心が3つ以上重なる図形を有する。これにより、校正ボードCBは、4個以上のマーカーであって図心が3つ以上重なる図形を有する図心マーカーを画像の中から誤りなく検出させることができる。
また、校正ボードCBでは、凸包における第1マーカー(この一例において、マーカーMK1)を含む辺の長さは、凸包における他の辺の長さよりも長い。これにより、校正ボードCBは、4個以上のマーカーに応じた位置を、第1マーカーを基準とすることによって効率よく検出させることができる。
また、校正ボードCBは、凸包の内部に、原点(この一例において、マーカーOP)を備える。これにより、校正ボードCBは、4個以上のマーカーに応じた位置を原点によって、より精密に表すことができる。
また、校正ボードCBでは、原点と第1基準部分(この一例において、マーカーXP1、マーカーXP2、第1基準部分XP11、第1基準部分XP12)とを通る直線と、原点と第2基準部分(この一例において、マーカーYP1、マーカーYP2、第2基準部分YP21、第2基準部分YP22)とを通る直線とは、直交する。これにより、校正ボードCBは、校正ボードの姿勢を第1基準部分と第2基準部分とによって、より精密に表すことができる。
また、校正ボードCBでは、マーカーの数は5個である。これにより、校正ボードCBは、5個のマーカーに応じた位置を精度よく検出させることができる。
また、ロボット20は、それぞれが凸包の頂点に位置する4個以上のマーカーからなるパターン(この一例において、パターンPN)が撮像部(この一例において、撮像部10)により撮像された画像(この一例において、撮像画像)に基づいて動作する。これにより、ロボット20は、4個以上のマーカーに応じた位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業を精度よく行うことができる。
また、ロボット20は、それぞれが凸包の頂点に位置する4個以上のマーカーからなるパターンが撮像部により撮像された画像に基づいて、ロボットの座標系(この一例において、ロボット座標系RC)と撮像部の座標系(この一例において、撮像部座標系CC)との校正が行われる。これにより、ロボット20は、撮像部の座標系における位置に応じた位置であってロボットの座標系における位置を精度よく算出することができる。
また、ロボット20は、それぞれが凸包の頂点に位置する4個以上の図心マーカーからなるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボット20は、4個以上の図心マーカーに応じた位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業を精度よく行うことができる。
また、ロボット20は、図心が3つ以上重なる図形を有する図心マーカーからなるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボット20は、4個以上のマーカーであって図心が3つ以上重なる図形を有する図心マーカーに応じた位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業を精度よく行うことができる。
また、ロボット20は、凸包における第1マーカーを含む辺の長さが凸包における他の辺の長さよりも長い4つ以上のマーカーからなるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボット20は、4個以上のマーカーに応じた位置を、撮像部により撮像された画像から第1マーカーを基準とすることによって効率よく検出し、検出した当該位置に基づいて所定の作業を精度よく行うことができる。
また、ロボット20は、それぞれが凸包の頂点に位置する4個以上のマーカーからなるパターンであって凸包の内部に原点を備えるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボット20は、凸包の内部に備えられた原点によって表された位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業を精度よく行うことができる。
また、ロボット20は、外部に第1基準部分及び第2基準部分を備えた凸包の頂点にそれぞれが位置する4個以上のマーカーからなるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボットは、校正ボードの姿勢を精度よく検出し、検出した当該姿勢に基づいて所定の作業を行うことができる。
また、ロボット20は、それぞれが凸包の頂点に位置する5個のマーカーからなるパターンが撮像部により撮像された画像に基づいて動作する。これにより、ロボット20は、5個のマーカーに応じた位置であって撮像部により撮像された画像から検出された位置に基づいて所定の作業を精度よく行うことができる。
また、検出方法は、撮像部により撮像された画像に含まれるマーカーの候補から、それぞれが回転対称性を有さない凸包の頂点に位置する4個以上である所定数のマーカーからなる基準パターンに整合する所定数の当該候補を検出する。これにより、検出方法は、4個以上のマーカーに応じた位置を精度よく検出することができる。
また、検出方法は、撮像部により撮像された画像に含まれるマーカーの候補から選択された所定数の当該候補からなる第1パターンをホモグラフィー変換した結果と基準パターンとの整合性に基づいて、所定数の当該候補を検出する。これにより、検出方法は、画像に含まれるマーカーの候補に間違ったマーカーが含まれる場合でも、4個以上のマーカーから構成されるパターンを正しく検出することができる。
また、検出方法は、基準パターンとの整合性が、第1パターンをホモグラフィー変換した結果と基準パターンとの差によって表される。これにより、検出方法は、画像に含まれるマーカーの候補に間違ったマーカーが含まれる場合でも、第1パターンをホモグラフィー変換した結果と基準パターンとの差によって表される整合性に基づいて、4個以上のマーカーから構成されるパターンを正しく検出することができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。