<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態に係るロボット20の一例を示す構成図である。
<ロボット20の構成>
まず、ロボット20の構成について説明する。
ロボット20は、第1アームと、第2アームと、第1アーム及び第2アームを支持する支持台と、ロボット制御装置30を備える双腕ロボットである。双腕ロボットは、この一例における第1アームと第2アームのような2本のアーム(腕)を備えるロボットである。なお、ロボット20は、双腕ロボットに代えて、単腕ロボットであってもよい。単腕ロボットは、1本のアームを備えるロボットである。例えば、単腕ロボットは、第1アームと第2アームのいずれか一方を備える。また、ロボット20は、双腕ロボットに代えて、3本以上のアームを備える複腕ロボットであってもよい。
第1アームは、第1エンドエフェクターE1と第1マニピュレーターM1を備える。
第1エンドエフェクターE1は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第1エンドエフェクターE1は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
第1エンドエフェクターE1は、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、第1エンドエフェクターE1は、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、第1エンドエフェクターE1は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第1マニピュレーターM1は、7つの関節と、第1撮像部21を備える。また、7つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第1マニピュレーターM1を備える第1アームは、7軸垂直多関節型のアームである。第1アームは、支持台と、第1エンドエフェクターE1と、第1マニピュレーターM1と、第1マニピュレーターM1が備える7つの関節それぞれのアクチュエーターとによる連携した動作によって7軸の自由度の動作を行う。なお、第1アームは、6軸以下の自由度で動作する構成であってもよく、8軸以上の自由度で動作する構成であってもよい。
第1アームが7軸の自由度で動作する場合、第1アームは、6軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第1アームは、例えば、動作が滑らかになり、更に第1アームの周辺に存在する物体との干渉を容易に回避することができる。また、第1アームが7軸の自由度で動作する場合、第1アームの制御は、第1アームが8軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
第1マニピュレーターM1が備える7つの(関節に備えられた)アクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、第1マニピュレーターM1を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第1マニピュレーターM1が備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第1撮像部21は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。この一例において、第1撮像部21は、第1マニピュレーターM1の一部に備えられる。そのため、第1撮像部21は、第1アームの動きに応じて移動する。また、第1撮像部21が撮像可能な範囲は、第1アームの動きに応じて変化する。第1撮像部21は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
また、第1撮像部21は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第1撮像部21は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2アームは、第2エンドエフェクターE2と第2マニピュレーターM2を備える。
第2エンドエフェクターE2は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第2エンドエフェクターE2は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
第2エンドエフェクターE2は、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、第2エンドエフェクターE2は、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第2エンドエフェクターE2は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2マニピュレーターM2は、7つの関節と、第2撮像部22を備える。また、7つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第2マニピュレーターM2を備える第2アームは、7軸垂直多関節型のアームである。第2アームは、支持台と、第2エンドエフェクターE2と、第2マニピュレーターM2と、第2マニピュレーターM2が備える7つの関節それぞれのアクチュエーターとによる連携した動作によって7軸の自由度の動作を行う。なお、第2アームは、6軸以下の自由度で動作する構成であってもよく、8軸以上の自由度で動作する構成であってもよい。
第2アームが7軸の自由度で動作する場合、第2アームは、6軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第2アームは、例えば、動作が滑らかになり、更に第2アームの周辺に存在する物体との干渉を容易に回避することができる。また、第2アームが7軸の自由度で動作する場合、第2アームの制御は、第2アームが8軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
第2マニピュレーターM2が備える7つの(関節に備えられた)アクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、第2マニピュレーターM2を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第2マニピュレーターM2が備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2撮像部22は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。この一例において、第2撮像部22は、第2マニピュレーターM2の一部に備えられる。そのため、第2撮像部22は、第2アームの動きに応じて移動する。また、第2撮像部22が撮像可能な範囲は、第2アームの動きに応じて変化する。第2撮像部22は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
また、第2撮像部22は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第2撮像部22は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
また、ロボット20は、第3撮像部23と、第4撮像部24を備える。
第3撮像部23は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。第3撮像部23は、第4撮像部24が撮像可能な範囲を第4撮像部24とともにステレオ撮像可能な部位に備えられる。第3撮像部23は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第3撮像部23は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第4撮像部24は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。第4撮像部24は、第3撮像部23が撮像可能な範囲を第3撮像部23とともにステレオ撮像可能な部位に備えられる。第4撮像部24は、ケーブルによって通信可能にロボット制御装置30と接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第4撮像部24は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
上記で説明したロボット20が備えるこれらの各機能部は、この一例において、ロボット20に内蔵されたロボット制御装置30から制御信号を取得する。そして、当該各機能部は、取得した制御信号に基づいた動作を行う。なお、ロボット20は、ロボット制御装置30を内蔵する構成に代えて、外部に設置されたロボット制御装置30により制御される構成であってもよい。この場合、ロボット20と、ロボット制御装置30とは、ロボットシステムを構成する。また、ロボット20は、第1撮像部21と、第2撮像部22と、第3撮像部23と、第4撮像部24のうちの一部を備えない構成であってもよい。
ロボット制御装置30は、ロボット20に制御信号を送信することにより、ロボット20を動作させる。これにより、ロボット制御装置30は、ロボット20に所定の作業を行わせる。
<ロボット20が行う所定の作業の概要>
以下、ロボット20が行う所定の作業の概要について説明する。
この一例において、ロボット20は、第1アームと第2アームの両方により作業することが可能な領域である作業領域に配置された物体を把持し、把持した物体を図示しない給材領域に給材(配置)する作業を所定の作業として行う。なお、ロボット20は、これに代えて、他の作業を所定の作業として行う構成であってもよい。また、作業領域は、第1アームと第2アームのうちいずれか一方により作業することが可能な領域であってもよい。
図1に示した例では、作業領域は、作業台TBの上面を含む領域である。作業台TBは、例えば、テーブルである。なお、作業台TBは、テーブルに代えて、床面や棚等の他の物体であってもよい。作業台TBの上面には、ロボット20が把持する対象物Oが配置されている。なお、作業台TBの上面には、2以上の対象物Oが配置されている構成であってもよい。
対象物Oは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図1では、図の簡略化のため、対象物Oを直方体形状の物体として表している。なお、対象物Oは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、対象物Oの形状は、直方体形状に代えて、他の形状であってもよい。
<ロボット制御装置30が行う処理の概要>
以下、ロボット20に所定の作業を行わせるためにロボット制御装置30が行う処理の概要について説明する。
ロボット制御装置30は、第3撮像部23と第4撮像部24に作業領域を含む範囲を撮像範囲としてステレオ撮像させる。そして、ロボット制御装置30は、第3撮像部23と第4撮像部24がステレオ撮像した撮像画像を取得する。ロボット制御装置30は、取得した撮像画像に基づいて、作業領域内に貼付されたマーカーを検出する。なお、ロボット制御装置30は、第3撮像部23と第4撮像部24に当該撮像範囲としてステレオ撮像させる構成に代えて、第1撮像部21と、第2撮像部22と、第3撮像部23と、第4撮像部24とのうちの第3撮像部23及び第4撮像部24の組み合わせを除く任意の2つの組み合わせによって撮像範囲をステレオ撮像する構成であってもよい。
本実施形態におけるマーカーは、当該マーカーの位置及び姿勢を示す図形と、当該マーカーの位置及び姿勢と異なる他の情報を示す図形を含むデータ領域とを有する。マーカーの位置及び姿勢を示す図形には、1以上の図形が含まれる。この一例では、マーカーの位置及び姿勢を示す図形が、第1図形と第2図形の2つの図形である場合について説明する。また、当該他の情報を示す図形は、当該他の情報を示すコード(記号)を表す図形であるコード図形である。データ領域は、1以上のコード図形を含む構成であってもよい。データ領域に複数のコード図形が含まれる場合、個々のコード図形は、当該他の情報の一部又は全部を示すコードを表す。この一例では、データ領域に4つコード図形が含まれており、当該4つのコード図形のそれぞれが当該他の情報の一部を示すコードを表し、当該4つのコード図形の全部によって1つの当該他の情報の全部を示すコードを表す場合について説明する。
この一例において、コードは、ロボット20の動作を示すロボット動作情報を示す。ロボット動作情報は、例えば、ロボット20の動作のうち、マーカーの位置及び姿勢に基づいて対象物Oを把持し、図示しない給材領域に給材する動作を示す情報である。ロボット動作情報を示すコードを表す4つのコード図形のそれぞれは、数ビットのコードを表す図形である。この一例では、コード図形が、1つで4ビットのコードを表す場合について説明する。すなわち、4つのコード図形は、全部で16ビットのコードを表す。
なお、4つのコード図形が表わすコードは、ロボット動作情報として、ロボット20の動作のうち、ロボット20に対象物Oを加工させる動作等の他の動作を示す情報であってもよい。また、4つのコード図形が表わすコードは、ロボット動作情報に代えて、ロボット制御装置30のディスプレイに表示させる文字列(例えば、マーカーが貼付された対象物Oに関する情報を示すコメント)を示す情報等の他の情報を示す構成であってもよい。
マーカーが有する第1図形及び第2図形が示すマーカーMkの位置及び姿勢は、対象物Oのロボット座標系における位置及び姿勢を示している。なお、マーカーMkの位置及び姿勢は、対象物Oのロボット座標系における位置及び姿勢を示す構成に代えて、ロボット20が第1アームのTCPや第2アームのTCPを経由させる経由点の位置及び姿勢等の他の位置及び姿勢を示す構成であってもよい。
ここで、第1図形の図心は、第1図形の形状に基づいて検出され、第2図形の図心は、第2図形の形状に基づいて検出される。このため、第1図形の図心や第2図形の図心は、色付きの図形を含むマーカーを当該色に基づいて検出する場合に比べて、環境光の変化やマーカーMkの経時変化等の外的要因により誤検出されにくい。そこで、ロボット制御装置30は、所定の作業をロボット20に行わせる処理においてマーカーを検出する際、マーカーが有する第1図形と第2図形のうちの少なくとも第1図形を検出した後、第1図形の図心に基づいてデータ領域、すなわちデータ領域に含まれる4つのコード図形を検出する。これにより、ロボット制御装置30は、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。以下では、マーカーを含む撮像画像から当該マーカーをロボット制御装置30が検出する処理について詳しく説明する。
この一例において、作業領域内に貼付されたマーカーは、作業領域内の作業台TBの上面に配置された対象物Oに貼付されているマーカーMkである。すなわち、ロボット制御装置30は、第3撮像部23及び第4撮像部24が撮像した撮像画像からマーカーMkを検出する。この検出の際、ロボット制御装置30は、マーカーMkが有する第1図形と第2図形である第1図形F1と第2図形F2のうちの少なくとも第1図形F1を検出した後、第1図形F1の図心に基づいてデータ領域、すなわちデータ領域に含まれる4つのコード図形を検出する。なお、図1では、図を簡略化するため、マーカーMkを対象物Oに貼付された黒い四角によって表している。また、マーカーMkは、これに代えて、作業領域内の対象物Oとは異なる他の物体や、作業台TBの上面等に貼付される構成であってもよい。
データ領域を検出した後、ロボット制御装置30は、検出したマーカーMkの位置及び姿勢を、対象物Oのロボット座標系における位置及び姿勢として算出する。そして、ロボット制御装置30は、マーカーMkのデータ領域に含まれるコード図形が表わすコードに基づいて、算出した当該位置及び姿勢の対象物Oをロボット20の第1アームに把持させ、図示しない給材領域に給材させる。なお、ロボット制御装置30は、これに代えて、対象物Oを第2アームに把持させる構成であってもよく、対象物Oを第1アームと第2アームの両方に把持させる構成等の他の構成であってもよい。
<ロボット制御装置30のハードウェア構成>
以下、図2を参照し、ロボット制御装置30のハードウェア構成について説明する。図2は、ロボット制御装置30のハードウェア構成の一例を示す図である。ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。また、ロボット制御装置30は、通信部34を介してロボット20と通信を行う。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。
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が処理する各種情報や画像、プログラム、図示しない給材領域の位置を示す情報等を格納する。
入力受付部33は、例えば、キーボードやマウス、タッチパッド等を備えたティーチングペンダントや、その他の入力装置である。なお、入力受付部33は、タッチパネルとして表示部35と一体に構成されてもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部35は、例えば、液晶ディスプレイパネル、あるいは、有機EL(ElectroLuminescence)ディスプレイパネルである。
<ロボット制御装置30の機能構成>
以下、図3を参照し、ロボット制御装置30の機能構成について説明する。図3は、ロボット制御装置30の機能構成の一例を示す図である。ロボット制御装置30は、記憶部32と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、撮像制御部40と、画像取得部42と、画像処理部44と、ロボット制御部46を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、これらの機能部のうち一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
撮像制御部40は、作業領域を含む撮像範囲を第3撮像部23と第4撮像部24にステレオ撮像させる。
画像取得部42は、第3撮像部23と第4撮像部24がステレオ撮像した撮像画像を、第3撮像部23と第4撮像部24から取得する。
画像処理部44は、画像取得部42が取得した撮像画像に対して各種の画像処理を行う。画像処理部44は、第1検出処理部50と、第2検出処理部51と、位置姿勢算出部52と、コード検出部53を備える。
第1検出処理部50は、画像取得部42が取得した撮像画像に基づいて、当該撮像画像に含まれるマーカーが有する当該マーカーの位置及び姿勢を示す1以上の図形(例えば、この一例における第1図形及び第2図形)を当該撮像画像から検出する。
第2検出処理部51は、画像取得部42が取得した撮像画像と、第1検出処理部50が検出したマーカーの位置及び姿勢を示す1以上の図形とに基づいて、当該マーカーが有するデータ領域に含まれる1以上のコード図形を当該撮像画像から検出する。
位置姿勢算出部52は、第1検出処理部50が検出したマーカーの位置及び姿勢を示す図形に基づいて、当該マーカーの位置及び姿勢を、当該マーカーが貼付された対象物のロボット座標系における位置及び姿勢として算出する。
コード検出部53は、第2検出処理部51が検出したデータ領域に含まれる1以上のコード図形からコードを検出する。
ロボット制御部46は、位置姿勢算出部52が算出したマーカーの位置及び姿勢と、コード検出部53が検出したコードとに基づいて所定の作業をロボット20に行わせる。
<制御部36がロボット20に所定の作業を行わせる処理の流れについて>
以下、図4を参照し、制御部36がロボット20に所定の作業を行わせる処理について説明する。図4は、制御部36がロボット20に所定の作業を行わせる処理の流れの一例を示すフローチャートである。以下では、制御部36が予め記憶部32から給材領域の位置を示す情報を読み出している場合について説明する。なお、制御部36は、ステップS100からステップS130までの処理における任意のタイミングにおいて記憶部32から給材領域の位置を示す情報を読み出す構成であってもよい。
撮像制御部40は、図1に示した作業領域を含む撮像範囲を第3撮像部23及び第4撮像部24にステレオ撮像させる(ステップS100)。次に、画像取得部42は、ステップS100において第3撮像部23及び第4撮像部24がステレオ撮像した撮像画像を第3撮像部23及び第4撮像部24から取得する(ステップS110)。次に、画像処理部44が備える各機能部は、ステップS110において画像取得部42が取得した撮像画像に基づいて、撮像画像に含まれるマーカーMkを検出するマーカー検出処理を実行する(ステップS120)。
次に、ロボット制御部46は、ステップS120におけるマーカー検出処理の結果を画像処理部44から取得する。そして、ロボット制御部46は、マーカー検出処理の結果に基づいて、対象物Oを第1アームに把持させて図示しない給材領域に給材させる(ステップS130)。
ここで、ステップS130の処理について説明する。ステップS120におけるマーカー検出処理においてマーカーMkの検出が成功している場合、マーカー検出処理の結果には、マーカーMkの位置及び姿勢に基づいて算出された対象物Oのロボット座標系における位置及び姿勢と、マーカーMkのデータ領域に含まれる4つのコード図形が表わすコードとが含まれている。この場合、ロボット制御部46は、当該位置及び姿勢と、当該コードとに基づいて、対象物Oを第1アームに把持させて図示しない給材領域に給材させる。その後、ロボット制御部46は、処理を終了する。
一方、ステップS120におけるマーカー検出処理においてマーカーMkの検出が失敗している場合、マーカー検出処理の結果には、マーカーMkの検出に失敗したことを示す情報が含まれている。この場合、ロボット制御部46は、ロボット20を制御せず、処理を終了する。この際、ロボット制御部46は、表示部35にマーカーMkの検出に失敗したことを示す情報を表示する構成であってもよい。
<マーカーの詳細>
以下、ロボット制御装置30が撮像画像から検出するマーカーの詳細について説明する。この一例におけるマーカー(例えば、マーカーMk)は、マーカーの位置及び姿勢を示す図形である第1図形及び第2図形と、コードを表す4つのコード図形を含むデータ領域とを有する。また、この一例におけるマーカーは、第1図形と第2図形の間にデータ領域が配置される。ここで、図5〜図12を参照し、この一例におけるマーカーについて説明する。
図5は、図1に示したマーカーMkの具体例を示す図である。この一例におけるマーカーは、当該マーカーの一例である図5に示したマーカーMkと同様に、3つの領域に分かれて構成される。そこで、ここでは、マーカーMkを例に挙げて説明する。マーカーMkは、マーカーMkの第1図形である第1図形F1を含む領域W1と、マーカーMkの第2図形である第2図形F2を含む領域W2と、データ領域W3との3つの領域に分かれている。データ領域W3には、コードを表す4つのコード図形が含まれている。ロボット制御装置30は、第1図形F1と、第2図形F2と、コードを表す4つのコード図形とを、それぞれの図形の図心に基づいて検出する。
ここで、図形の図心について詳しく説明する。図6は、図形の図心を説明するための図である。図6には、輪郭が曲線によって形成された図形F0と、図形F0を構成する各点の位置を表すための二次元座標系と、当該各点の位置を示すベクトルr_iとが示されている。ここで、図6では、ベクトルrを、rの上に矢印を付帯させることによって表している。また、ベクトルr_iの「_」の後に付された「i」は、図6に示したベクトルrの下付き添え字iを示している。また、添え字iは、図形F0を構成する各点(例えば、画素)を区別するためのラベルである。また、図6において、二次元座標系の原点から図形F0へ伸びる矢印は、ベクトルr_iの大きさ及び方向を表す矢印である。
図心は、云わば図形の中心である。図心は、1つの図形に対して1つのみ一意に決まる。図6に示した図形F0の図心の位置は、ベクトルr_iを用いて、以下に示した式(1)によって定義されるベクトルcによって表される。
式(1)において、ベクトルcは、cの上に矢印を付帯させることによって表している。また、Nは、図形F0を構成する各点の数であり、1以上の整数である。すなわち、図6に示した図形F0の図心の位置は、図形F0を構成する各点の位置を表すベクトルの総和を、当該各点の数によって除したベクトル(N個のベクトルの平均)によって表される。なお、図6では、二次元の図形F0と、二次元の座標系と、二次元のベクトルとを用いて図心について説明したが、図心の位置は、三次元以上の図形に対しても上記の式(1)によって定義されるベクトルcによって表される。
ここで、この一例における第1図形と第2図形のそれぞれは、3以上の図形の組み合わせによって構成される図形である図心マーカーである。また、図心マーカーは、図心マーカーを構成する3以上の図形それぞれの図心が所定の範囲内に収まる(含まれる)マーカーである。例えば、図形A0と、図形B0と、図形C0との組み合わせによって構成される図心マーカーは、図形A0の図形A1と、図形B0の図心B1と、図形C0の図心C1とが所定の範囲内に収まる(含まれる)。所定の範囲は、例えば、半径が数画素程度の円形の範囲であるが、半径が1画素未満の円形の範囲であってもよく、半径が数画素以上の円形の範囲であってもよく、矩形等の円形とは異なる他の形状の範囲であってもよい。以下では、説明の便宜上、所定の範囲内に含まれる図心の数を、多重度と称して説明する。すなわち、図形A0と、図形B0と、図形C0との組み合わせによって構成される図心マーカーは、多重度が3の図心マーカーである。なお、第1図形と第2図形のうちいずれか一方又は両方は、これに代えて、1以上の図形によって構成される図形であってもよい。
図7は、第1図形F1を図心マーカーの一例として示す図である。図7に示したように、図心マーカーを構成する3以上の図形は、二値化画像において白色又は黒色のみの部分領域として検出される。第1図形F1は、輪郭が円形状の白色の部分領域によって表される図形F11と、輪郭がリング形状の黒色の部分領域によって表される図形F12と、輪郭がリング形状の白色の部分領域によって表される図形F13と、輪郭がリング形状の黒色の部分領域によって表される図形F14との4つの図形によって構成されている。また、第1図形F1は、図形F11と、図形F12と、図形F13と、図形F14とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形F11と、図形F12と、図形F13と、図形F14との組み合わせによって構成される第1図形F1は、多重度が4の図心マーカーである。なお、第1図形F1における図形F11〜図形F14は、同心円であり、図心が当該同心円の中心に位置する。
図8は、第2図形F2を図心マーカーの他の例として示す図である。第2図形F2は、輪郭が円形状の黒色の部分領域によって表される図形F21と、輪郭がリング形状の白色の部分領域によって表される図形F22と、輪郭がリング形状の黒色の部分領域によって表される図形F23との3つの図形によって構成されている。また、第2図形F2は、図形F21と、図形F22と、図形F23とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形F21と、図形F22と、図形F23との組み合わせによって構成される第2図形F2は、多重度が3の図心マーカーである。なお、第2図形F2における図形F21〜図形F23は、同心円であり、図心が当該同心円の中心に位置する。
図7及び図8に示した第1図形F1及び第2図形F2は、図心マーカーを構成する3以上の図形の組み合わせが同心円を構成していた。しかし、図心マーカーは、図心マーカーを構成する3以上の図形の組み合わせが同心円を構成するもののみに限られない。図9〜図11に示した図心マーカーは、図心マーカーを構成する3以上の図形の組み合わせが同心円を構成していない場合の例である。図9は、同心円を構成していない3つの図形によって構成される多重度が3の図心マーカーの一例を示す図である。図10は、同心円を構成していない4つの図形によって構成される多重度が4の図心マーカーの一例を示す図である。図11は、同心円を構成していない4つの図形によって構成される多重度が4の図心マーカーの他の例を示す図である。
この一例において、このような図心マーカーを第1図形や第2図形として有するマーカーが貼付された物体(例えば、図1に示した対象物O)の位置及び姿勢は、当該マーカーの第1図形の図心の位置及び姿勢によって表される。当該第1図形の図心の位置は、所定の範囲内に含まれる3以上の図心の位置を示すベクトルの総和を図心の数で除したベクトル(3以上のベクトルの平均)によって表される。なお、当該マーカーが貼付された物体の位置は、これに代えて、当該第1図形の図心の位置に対応付けられた他の位置(オフセットされた位置)によって表される構成であってもよい。また、図心マーカーを第1図形や第2図形として有するマーカーが貼付された物体の位置及び姿勢は、当該マーカーの第2図形の図心の位置及び姿勢によって表される構成であってもよい。
また、当該第1図形の図心の姿勢は、当該図心の位置における当該第1図形に対する法線方向をZ軸とし、当該第1図形の図心及び第2図形の図心に基づいて決定される方向、又は当該第1図形の図心及びデータ領域に含まれる図形に基づいて決定される方向をX軸とし、当該Z軸及びX軸に直交する方向をY軸とした3つの座標軸それぞれのロボット座標系における方向によって表される。なお、当該マーカーが貼付された物体の姿勢は、これに代えて、当該第1図形の図心の姿勢に対応付けられた他の姿勢(オフセットされた姿勢)によって表される構成であってもよい。
次に、コードを表す4つのコード図形について説明する。この一例において、これら4つのコード図形のそれぞれには、図12に示した16種類のコード図形である図形FD1〜図形FD16のいずれかが用いられる。図12は、ロボット制御装置30が検出した4つのコード図形のそれぞれが16種類のコード図形のいずれであるかをロボット制御装置30が特定する処理の流れを示すフローチャートである。なお、コード図形には、ロボット制御装置30が区別することが可能であれば、図12に示した16種類のコード図形のうちの一部又は全部に代えて、他のコード図形が含まれる構成であってもよい。また、コード図形は、16種類に代えて、15未満の種類であってもよく、17以上の種類であってもよい。また、ロボット制御装置30は、検出したコード図形のそれぞれを、図12に示したフローチャートの処理に代えて、パターンマッチング等の他の処理のよって図12に示した16種類のコード図形のいずれであるかを特定する構成であってもよい。
また、この一例における16種類のコード図形はそれぞれ、図12に示したように、32個の正方形状のセルが8行4列に並べられた領域における黒色の部分領域が表わす図形と、黒色の部分領域によって囲まれた白色の部分領域が表わす図形とによって構成される。また、当該コード図形のそれぞれでは、当該8行4列に並べられた32個のセルのうちの図12の矢印A11が示す左側から4列目に含まれる8個のセルがすべて白い。この一例において、ロボット制御装置30は、コード図形において当該4列目に含まれる白いセルを含む白色の部分領域を、コード図形を構成する図形として検出しない。
まず、ロボット制御装置30は、図形FD1〜図形FD16のいずれであるかを特定する対象となるコード図形である対象コード図形を検出した後、対象コード図形を構成する図形の図心を検出する。そして、ロボット制御装置30は、当該8行4列の領域内で検出した図心の多重度が1と2のいずれであるかを判定する(ステップS200)。この判定により、ロボット制御装置30は、対象コード図形が図形FD1〜図形FD3のいずれかであることと、対象コード図形が図形FD4〜図形FD16のいずれかであることとのどちらであるかを判定する。
ステップS200において図心の多重度が2であると判定した場合(ステップS200−2)、ロボット制御装置30は、対象コード図形が図形FD1〜図形FD3のいずれかであることを特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する(ステップS210)。
ここで、ステップS210の処理について説明する。ステップS210において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18以上22未満の場合、当該面積が中であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が22以上の場合、当該面積が大であると判定する。
この一例において、図形FD1は、黒いセルの数が10であるため、ステップS210において面積が小と判定される。なお、図形FD1は、図12に示したように、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が2である。図形FD2は、黒いセルの数が18であるため、ステップS210において面積が中と判定される。なお、図形FD2は、図12に示したように、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が2である。図形FD3は、黒いセルの数が22であるため、ステップS210において面積が大と判定される。なお、図形FD3は、図12に示したように、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が2である。
すなわち、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS210−小)、ロボット制御装置30は、対象コード図形が図形FD1であると特定する。一方、対象コード図形の黒色の部分領域の面積が中であると判定した場合(ステップS210−中)、ロボット制御装置30は、対象コード図形が図形FD2であると特定する。一方。対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS210−大)、ロボット制御装置30は、対象コード図形が図形FD3であると特定する。
一方、ステップS200において図心の多重度が1であると判定した場合(ステップS200−1)、ロボット制御装置30は、対象コード図形が図形FD4〜図形FD16のいずれかであることを特定する。そして、ロボット制御装置30は、ステップS200において検出した対象コード図形の図心の数が1と2のいずれであるかを判定する(ステップS220)。この判定により、ロボット制御装置30は、対象コード図形が図形FD4〜図形FD10のいずれかであることと、対象コード図形が図形FD11〜図形FD16のいずれかであることとのどちらであるかを判定する。
ステップS220において図心の数が1であると判定した場合(ステップS220−1)、ロボット制御装置30は、対象コード図形が図形FD4〜図形FD10のいずれかであることを特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する(ステップS230)。
ここで、ステップS230の処理について説明する。ステップS230において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が8未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が8以上16未満の場合、当該面積が中であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が16以上の場合、当該面積が大であると判定する。
この一例において、図形FD4及び図形FD5は、黒いセルの数が8未満であるため、ステップS230において面積が小と判定される。なお、図形FD4における黒いセルの数は、2であり、図形FD5における黒いセルの数は、6である。また、図形FD4及び図形FD5は、図12に示したように、1つの図形から構成されており、多重度が1である。図形FD6及び図形FD7は、黒いセルの数が8以上16未満であるため、ステップS230において面積が中と判定される。なお、図形FD6における黒いセルの数は、12であり、図形FD7における黒いセルの数は、8である。また、図形FD6及び図形FD7は、図12に示したように、1つの図形から構成されており、多重度が1である。図形FD8〜図形FD10は、黒いセルの数が16以上であるため、ステップS230において面積が大と判定される。なお、図形FD8における黒いセルの数は、16であり、図形FD9における黒いセルの数は、20であり、図形FD10における黒いセルの数は、24である。また、図形FD8〜図形FD10は、図12に示したように、1つの図形から構成されており、多重度が1である。
すなわち、ステップS230において、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS230−小)、ロボット制御装置30は、対象コード図形が図形FD4と図形FD5のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の縦横比の大小を判定する(ステップS240)。
ここで、ステップS240の処理について説明する。ステップS240において、ロボット制御装置30は、対象コード図形における黒色の部分領域を構成する黒いセルの縦方向に並んだ数を、当該黒いセルの横方向に並んだ数によって除した縦横比を算出する。この一例において、縦方向は、8行4列に並べられた32個のセルの各列においてセルが8個並んでいる方向であり、横方向は、8行4列に並べられた32個のセルの各行においてセルが4個並んでいる方向である。ロボット制御装置30は、算出した縦横比が1以上である場合、当該縦横比が大であると判定する。また、ロボット制御装置30は、算出した縦横比が1未満である場合、当該縦横比が小であると判定する。
この一例において、図形FD4は、黒いセルの縦方向に並んだ数が2であり、黒いセルの横方向に並んだ数が1であるため、ステップS240において縦横比が大であると判定される。図形FD5は、黒いセルの縦方向に並んだ数が2であり、黒いセルの横方向に並んだ数が3であるため、ステップS240において縦横比が小であると判定される。
すなわち、ステップS240において、対象コード図形の黒色の部分領域の縦横比が大であると判定した場合(ステップS240−大)、ロボット制御装置30は、対象コード図形が図形FD4であると特定する。一方、対象コード図形の黒色の部分領域の縦横比が小であると判定した場合(ステップS240−小)、ロボット制御装置30は、対象コード図形が図形FD5であると特定する。
一方、ステップS230において、対象コード図形の黒色の部分領域の面積が中であると判定した場合(ステップS230−中)、ロボット制御装置30は、対象コード図形が図形FD6と図形FD7のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の縦横比の大小を判定する(ステップS250)。
ここで、ステップS250の処理について説明する。ステップS250において、ロボット制御装置30は、対象コード図形における黒色の部分領域を構成する黒いセルの縦方向に並んだ数を、当該黒いセルの横方向に並んだ数によって除した縦横比を算出する。ロボット制御装置30は、算出した縦横比が8である場合、当該縦横比が大であると判定する。また、ロボット制御装置30は、算出した縦横比が8未満である場合、当該縦横比が小であると判定する。
この一例において、図形FD7は、黒いセルの縦方向に並んだ数が4であり、黒いセルの横方向に並んだ数が3であるため、ステップS250において縦横比が小であると判定される。図形FD8は、黒いセルの縦方向に並んだ数が8であり、黒いセルの横方向に並んだ数が1であるため、ステップS250において縦横比が大であると判定される。
すなわち、ステップS250において、対象コード図形の黒色の部分領域の縦横比が小であると判定した場合(ステップS250−小)、ロボット制御装置30は、対象コード図形が図形FD7であると特定する。一方、対象コード図形の黒色の部分領域の縦横比が大であると判定した場合(ステップS250−大)、ロボット制御装置30は、対象コード図形が図形FD8であると特定する。
一方、ステップS230において、対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS230−大)、ロボット制御装置30は、対象コード図形が図形FD8〜図形FD10のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する(ステップS260)。
ここで、ステップS260の処理について説明する。ステップS260において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が20未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が20以上24未満の場合、当該面積が中であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が24以上の場合、当該面積が大であると判定する。
この一例において、図形FD8は、黒いセルの数が16であるため、ステップS260において面積が小と判定される。図形FD9は、黒いセルの数が20であるため、ステップS260において面積が中と判定される。図形FD10は、黒いセルの数が24であるため、ステップS230において面積が大と判定される。
すなわち、ステップS260において、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS260−小)、ロボット制御装置30は、対象コード図形が図形FD8であると特定する。一方、対象コード図形の黒色の部分領域の面積が中であると判定した場合(ステップS260−中)、ロボット制御装置30は、対象コード図形が図形FD9であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS260−大)、ロボット制御装置30は、対象コード図形が図形FD10であると特定する。
一方、ステップS220において図心の数が2であると判定した場合(ステップS220−2)、ロボット制御装置30は、対象コード図形が図形FD11〜図形FD16のいずれかであることを特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積が当該左側から3列目の面積よりも大きいか、当該左側から1列目及び3列目の各面積が同じ大きさであるか、当該左側から3列目の面積が当該左側から1列目の面積よりも大きいかのいずれであるかを判定する(ステップS270)。
ここで、ステップS270の処理について説明する。ステップS270において、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数が、当該左側から3列目の面積を構成する黒いセルの数よりも多い場合、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積が当該左側から3列目の面積よりも大きいと判定する。また、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数と、当該左側から3列目の面積を構成する黒いセルの数とが同じ場合、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目及び3列目の各面積が同じ大きさであると判定する。また、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から3列目の面積を構成する黒いセルの数が、当該左側から1列目の面積を構成する黒いセルの数よりも多い場合、対象コード図形の黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から3列目の面積が当該左側から1列目の面積よりも大きいと判定する。
この一例において、図形FD11及び図形FD12は、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数が、当該左側から3列目の面積を構成する黒いセルの数よりも多いため、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積が当該左側から3列目の面積よりも大きいと判定される。なお、図形FD11において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、2であり、当該左側から3列目の面積を構成する黒いセルの数は、8である。また、図形FD12において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、6であり、当該左側から3列目の面積を構成する黒いセルの数は、8である。また、図形FD11及び図形FD12は、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が1で図心の数が2である。
図形FD13及び図形FD14は、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数と、当該左側から3列目の面積を構成する黒いセルの数とが同じため、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目及び3列目の各面積が同じ大きさであると判定される。なお、図形FD13において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、2であり、当該左側から3列目の面積を構成する黒いセルの数は、2である。また、図形FD14において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、8であり、当該左側から3列目の面積を構成する黒いセルの数は、8である。また、図形FD13及び図形FD14は、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が1で図心の数が2である。
図形FD15及び図形FD16は、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から3列目の面積を構成する黒いセルの数が、当該左側から1列目の面積を構成する黒いセルの数よりも多いため、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から3列目の面積が当該左側から1列目の面積よりも大きいと判定される。なお、図形FD15において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、8であり、当該左側から3列目の面積を構成する黒いセルの数は、2である。また、図形FD16において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積を構成する黒いセルの数は、8であり、当該左側から3列目の面積を構成する黒いセルの数は、6である。また、図形FD15及び図形FD16は、2つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が1で図心の数が2である。
すなわち、ステップS270において、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目の面積が当該左側から3列目の面積よりも大きいと判定した場合(ステップS270−3列目大)、ロボット制御装置30は、対象コード図形が図形FD11と図形FD12のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積の大小を判定する(ステップS280)。
ここで、ステップS280の処理について説明する。ステップS280において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18以上の場合、当該面積が大であると判定する。
この一例において、図形FD11は、黒いセルの数が10であるため、ステップS280において面積が小と判定される。図形FD12は、黒いセルの数が18であるため、ステップS280において面積が大と判定される。
すなわち、ステップS280において、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS280−小)、ロボット制御装置30は、対象コード図形が図形FD11であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS280−大)、ロボット制御装置30は、対象コード図形が図形FD12であると特定する。
一方、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から1列目及び3列目の各面積が同じ大きさであると判定した場合(ステップS270−同)、ロボット制御装置30は、対象コード図形が図形FD13と図形14のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積の大小を判定する(ステップS290)。
ここで、ステップS290の処理について説明する。ステップS290において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が16未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が16以上の場合、当該面積が大であると判定する。
この一例において、図形FD13は、黒いセルの数が4であるため、ステップS290において面積が小と判定される。図形FD14は、黒いセルの数が16であるため、ステップS290において面積が大と判定される。
すなわち、ステップS290において、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS290−小)、ロボット制御装置30は、対象コード図形が図形FD13であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS290−大)、ロボット制御装置30は、対象コード図形が図形FD14であると特定する。
一方、黒色の部分領域の面積のうちの8行4列に並べられた32個のセルにおける左側から3列目の面積が当該左側から1列目の面積よりも大きいと判定した場合(ステップS270−1列目大)、ロボット制御装置30は、対象コード図形が図形FD15と図形FD16のいずれかであると特定する。そして、ロボット制御装置30は、対象コード図形の黒色の部分領域の面積の大小を判定する(ステップS295)。
ここで、ステップS295の処理について説明する。ステップS295において、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18未満の場合、当該面積が小であると判定する。また、ロボット制御装置30は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が18以上の場合、当該面積が大であると判定する。
この一例において、図形FD15は、黒いセルの数が10であるため、ステップS295において面積が小と判定される。図形FD16は、黒いセルの数が18であるため、ステップS295において面積が大と判定される。
すなわち、ステップS295において、対象コード図形の黒色の部分領域の面積が小であると判定した場合(ステップS295−小)、ロボット制御装置30は、対象コード図形が図形FD15であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合(ステップS295−大)、ロボット制御装置30は、対象コード図形が図形FD16であると特定する。
このように、ロボット制御装置30は、対象コード図形が16種類のコード図形のいずれであるかを特定することができる。このため、図形FD1〜図形FD16を順に1〜Fの16進数と見做すことにより、コード図形は、1つで4ビットの情報を表すことができる。すなわち、データ領域に含まれる4つのコード図形は、16ビットのコードを表すことができる。
また、この一例におけるマーカー(例えば、マーカーMk)において、データ領域に含まれる4つのコード図形のそれぞれは、第1図形の図心と第2図形の図心とを通る直線上に当該コード図形のそれぞれの図心が位置するように配置される。このようにすることで、ロボット制御装置30は、第1図形の候補と第2図形の候補との間に複数の図形が存在する場合、これらの図形がこの一例におけるマーカーであるか否かを判定し、当該マーカーではない図形の組み合わせをマーカーであると誤検出してしまうことを抑制することができる。
以上のように、この一例におけるマーカーは、第1図形及び第2図形と、4つのコード図形を含むデータ領域とを有する。これにより、当該マーカーは、第1図形を検出させた後、当該第1図形の図心に基づいてデータ領域を検出させることができ、その結果、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
<図心マーカーの検出方法の概要>
以下、本実施形態におけるロボット制御装置30による図心マーカーの検出方法について説明する。
この一例において、これらロボット制御装置30による図心マーカーの検出方法では、撮像画像から図心マーカーを検出する際、ロボット制御装置30が、撮像画像をグレースケール画像に変換する(グレースケール化処理)。ロボット制御装置30は、例えば、撮像画像のグレースケール化処理において、撮像画像を256階調のグレースケール画像に変換する。なお、ロボット制御装置30は、撮像画像を256階調のグレースケール画像に変換する構成に代えて、他の階調のグレースケール画像に変換する構成であってもよい。
そして、ロボット制御装置30は、グレースケール化処理により撮像画像を変換したグレースケール画像を、二値化画像(白黒画像)に変換する(二値化処理)。二値化処理は、グレースケール画像上における所定の閾値(二値化の閾値)以上の輝度値の画素の色を白色に変換し、当該閾値未満の輝度値の画素を黒色に変換することによりグレースケール画像を二値化画像に変換する処理である。この一例において、二値化の閾値は、予め決められている。なお、二値化の閾値は、大津の方法等の撮像画像に基づく方法によって決められる他の構成であってもよい。ロボット制御装置30は、二値化処理によりグレースケール画像を変換した二値化画像から図心マーカーを検出する。
<マーカー検出処理の流れについて>
以下、図13を参照し、図4に示したステップS120におけるマーカー検出処理について説明する。図13は、図4に示したステップS120におけるマーカー検出処理の流れの一例を示すフローチャートである。
画像処理部44は、記憶部32に予め記憶されたマーカー情報を記憶部32から読み出す(ステップS300)。この一例において、マーカー情報には少なくとも、マーカーを示す情報と、マーカーが有する第1図形及び第2図形のそれぞれを示す情報とを対応付けた情報が含まれている。例えば、マーカー情報には、マーカーMkを示す情報と、マーカーMkが有する第1図形F1及び第2図形F2のそれぞれを示す情報とを対応付けた情報が含まれている。
マーカーを示す情報は、この一例において、マーカーIDである。なお、マーカーを示す情報は、これに代えて、マーカー名等のマーカーを識別可能な情報であれば他の情報であってもよい。第1図形及び第2図形のそれぞれを示す情報は、この一例において、第1図形及び第2図形のそれぞれをパターンマッチングによって検出するために用いられるモデル画像である。なお、第1図形及び第2図形のそれぞれを示す情報は、これに代えて、第1図形及び第2図形のそれぞれを撮像画像から検出する処理に用いることが可能な他の情報であってもよい。なお、ステップS300の処理は、画像処理部44が備える図3に示した各機能部のうちのいずれの機能部が行う構成であってもよく、画像処理部44が備える図3に図示しない機能部が行う構成であってもよい。
次に、画像処理部44が備える各機能部は、ステップS300において記憶部32から読み出したマーカー情報に含まれるマーカーIDを1つずつ選択し、選択したマーカーIDが示すマーカーを対象マーカーとして、対象マーカー毎にステップS320からステップS370までの処理を繰り返し行う(ステップS310)。以下では、説明の便宜上、マーカー情報に含まれるマーカーIDは、マーカーMkを示すマーカーIDの1つのみである場合について説明する。この場合、画像処理部44は、ステップS320からステップS370までの処理をマーカーMkに対して1回のみ行う。
次に、第1検出処理部50は、ステップS310において対象マーカーとして選択されたマーカーMkを示すマーカーIDに対応付けられた第1図形F1及び第2図形F2のそれぞれを示す情報を、マーカー情報から抽出する。そして、第1検出処理部50は、抽出した当該第1図形F1及び第2図形F2のそれぞれを示す情報と、前述した図心マーカーの検出方法とに基づいて、図4に示したステップS110において画像取得部42が取得した撮像画像から第1図形F1と第2図形F2のそれぞれを検出する(ステップS320)。
ここで、ステップS320の処理について説明する。第1検出処理部50は、撮像画像から3以上の多重度の図心マーカーを、第1図形F1及び第2図形F2の候補として検出する。データ領域に含まれる4つのコード図形の多重度(重なっている図心の数)は、最大で2であり、第1図形F1及び第2図形F2のそれぞれと比べて多重度が少ない。このため、第1検出処理部50は、第1図形F1及び第2図形F2の候補として、これらのコード図形を誤検出してしまうことが抑制されている。第1検出処理部50は、マーカー情報から抽出した第1図形F1及び第2図形F2それぞれのモデル画像に基づいて、第1図形F1及び第2図形F2の候補として検出した多重度が3以上の図心マーカーから、パターンマッチングにより第1図形F1及び第2図形F2を検出する。パターンマッチングの処理については、従来から知られている方法を用いるため、説明を省略する。
次に、第2検出処理部51は、ステップS320において第1検出処理部50が撮像画像から検出した第1図形F1及び第2図形F2に基づいて、マーカーMkが有するデータ領域を検出する(ステップS330)。ここで、図14及び図15を参照し、ステップS330の処理について説明する。図14は、マーカーMkが有する第1図形F1の図心、第2図形F2の図心、及びデータ領域に含まれる4つのコード図形それぞれの図心を例示する図である。図14では、当該4つのコード図形は、図形FD5、図形FD10、図形FD16、図形FD1の順に第1図形F1から第2図形F2に向けて並んでいる。
また、図14に示したマーカーMkにおいて、前述したように、4つのコード図形である図形FD5の図心C5と、図形FD10の図心C10と、図形FD16(2つの図心を有している)の図心C161及び図心C162と、図形FD1の図心C1とが、第1図形F1の図心F1Cと第2図形F2の図心F2Cとを結ぶ直線CL上に位置するように、図形FD5と、図形FD10と、図形FD16と、図形FD1とが配置されている。
第2検出処理部51は、マーカーMkが有するデータ領域として、ステップS330において検出された第1図形F1と第2図形F2の間に含まれる複数の図形を、4つのコード図形の候補として検出する処理を実行する。この処理において、第2検出処理部51は、第1図形F1と第2図形F2の間に含まれる複数の図形の図心を算出する。そして、第2検出処理部51は、第1図形F1の図心と第2図形F2の図心とを通る直線(すなわち、第1図形F1の図心と第2図形F2の図心とを結んだ方向)CL上に位置する図心を有する図形が4つ検出された場合、これら4つの図形をマーカーMkが有するデータ領域に含まれる4つのコード図形として検出する。
ステップS330においてデータ領域を検出する処理が実行された後、第2検出処理部51は、ステップS330においてデータ領域の検出に成功したか否かを判定する(ステップS340)。データ領域の検出に成功していない(失敗した)と判定した場合(ステップS340−No)、第2検出処理部51は、ステップS310に遷移し、次のマーカーを選択する。この一例において、ステップS310において選択可能なマーカーは、マーカーMkのみであるため、第2検出処理部51は、データ領域の検出に成功していないと判定した場合、マーカーの検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、データ領域の検出に成功したと第2検出処理部51が判定した場合(ステップS340−Yes)、位置姿勢算出部52は、ステップS320において検出した第1図形F1及び第2図形F2に基づいて、マーカーMkの位置及び姿勢を、対象物Oのロボット座標系における位置及び姿勢として算出する(ステップS350)。なお、撮像画像上の位置と、ロボット座標系における位置とは、事前にキャリブレーションにより対応付けられている。
ここで、ステップS350の処理におけるマーカーMkの姿勢を算出する処理について説明する。位置姿勢算出部52は、この一例において、第1図形F1の図心F1Cにおける第1図形F1に対する法線方向をZ軸とし、第2図形F2の図心F2Cから第1図形F1の図心F1Cへ向かう方向をX軸とし、当該Z軸と当該X軸とに直交する方向をY軸とすることにより、第1図形F1の姿勢をマーカーMkの姿勢(この一例において、対象物Oの姿勢)として算出する。なお、位置姿勢算出部52は、これに代えて、第1図形F1の図心F1Cに基づく他の方法によってマーカーMkの姿勢を算出する構成であってもよい。
ステップS350において対象物Oのロボット座標系における位置及び姿勢を算出された後、コード検出部53は、ステップS330において第2検出処理部51が検出したデータ領域、すなわち当該データ領域に含まれる4つのコード図形と、図12に示したフローチャートの処理とに基づいて、これら4つのコード図形のそれぞれが図形FD1〜図形FD16のいずれであるかを特定する。そして、コード検出部53は、特定した4つのコード図形が表わすコードを検出する(ステップS360)。
次に、コード検出部53は、ステップS360において検出したコードが、適正な情報であるか否かを判定する(ステップS370)。適正な情報は、この一例において、エラーを含んでおらず、ロボット制御装置30がロボット20に動作させることが可能なロボット動作情報のことである。コード検出部53は、当該コードが適正な情報ではないと判定した場合、マーカーMkの検出に失敗したことを示す情報をマーカー検出処理の結果として生成する。そして、画像処理部44は、ステップS310に遷移し、次のマーカーを選択する。この一例において、ステップS310において選択可能なマーカーは、マーカーMkのみである。このため、画像処理部44は、当該マーカー検出処理の結果を生成した後、処理を終了する。一方、当該コードが適正な情報であると判定した場合、コード検出部53は、ステップS350において位置姿勢算出部52が算出したマーカーMkの位置及び姿勢と、ステップS360において検出したコードとを含む情報を、マーカー検出処理の結果として生成する。そして、画像処理部44は、ステップS310に遷移し、次のマーカーを選択する。この一例において、画像処理部44は、当該マーカー検出処理の結果を生成した後、処理を終了する。
このように、ロボット制御装置30は、第1図形F1を検出した後、第1図形F1の図心F1Cに基づいてデータ領域を検出する。これにより、ロボット制御装置30は、マーカーMkに対する外的要因によるマーカーMkの検出の失敗を抑制することができる。
なお、図13に示したフローチャートの処理では、マーカーMkを含む撮像画像の解像度が、データ領域に含まれる4つのコード図形それぞれを構成する32個のセルを第2検出処理部51によって区別できる程度であることを前提として説明した。第1検出処理部50は、この前提を保証するため、図13に示したフローチャートのステップS320の処理において、検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上であるか否かを判定する構成であってもよい。検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上ではないと第1検出処理部50が判定した場合、画像処理部44は、マーカーMkの検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上であると第1検出処理部50が判定した場合、第2検出処理部51は、図13に示したフローチャートのステップS330の処理を実行する。所定の大きさは、例えば、検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方を構成する画素の数によって表され、撮像画像を撮像する撮像部の解像度に応じて決まる値である。
<実施形態の変形例1>
以下、本発明の実施形態の変形例1について、図面を参照して説明する。上記の実施形態で説明した対象物Oに貼付されているマーカーは、マーカーMkに代えて、この一例において説明するマーカーMk1であってもよい。つまり、実施形態の変形例1では、ロボット制御装置30が、マーカーMkに代えて、マーカーMk1を検出する。マーカーMk1は、マーカーMkから第2図形F2のみを省略(削除)した構成のマーカーである。
<実施形態の変形例1におけるマーカーの詳細>
図15は、実施形態の変形例1におけるマーカーの一例を示す図である。図15に示したように、マーカーMk1は、マーカーMkと異なり、第2図形F2を有しておらず、第1図形F1のみを有している。すなわち、マーカーMk1は、第2図形F2を有していないこと以外は、マーカーMkと同様の特徴を有する。図15に示した例では、マーカーMk1は、当該コード図形として、図形FD5と、図形FD10と、図形FD16と、図形FD1とをデータ領域に含んでいる。
<実施形態の変形例1におけるマーカー検出処理の流れについて>
以下、実施形態の変形例1におけるマーカー検出処理の流れについて説明する。実施形態の変形例1では、画像処理部44が図4に示したフローチャートにおいて、ステップS120の処理に代えて、以下で説明するステップS120aの処理を行う。図16は、実施形態の変形例1において画像処理部44が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図16において、ステップS310の処理と、ステップS350〜ステップS370の処理とは、図13に示したステップS310の処理と、ステップS350〜ステップS370の処理と同様な処理であるため、説明を省略する。
画像処理部44は、記憶部32に予め記憶された1以上のマーカーのそれぞれが有する第1図形を示す情報を含むマーカー情報を記憶部32から読み出す(ステップS400)。この一例において、マーカー情報には少なくとも、マーカーを示す情報と、マーカーが有する第1図形を示す情報とを対応付けた情報が含まれている。例えば、マーカー情報には、マーカーMk1を示す情報と、マーカーMk1が有する第1図形F1を示す情報を対応付けた情報が含まれている。以下では、説明の便宜上、マーカー情報には、当該情報のみが含まれている場合について説明する。
次に、第1検出処理部50は、ステップS310において対象マーカーとして選択したマーカーMk1を示すマーカーIDに対応付けられた第1図形F1を示す情報を、マーカー情報から抽出する。そして、第1検出処理部50は、抽出した第1図形F1を示す情報と、前述したマーカーの検出方法とに基づいて、図4に示したステップS110において画像取得部42が取得した撮像画像から第1図形F1を検出する(ステップS405)。ステップS405における撮像画像から第1図形F1を検出する処理は、ステップS320において第1図形F1及び第2図形F2のうちの第1図形F1を検出する処理と同様なため説明を省略する。
次に、第2検出処理部51は、ステップS405において検出された第1図形F1の図心F1Cを起点とした探索方向を、所定の方向を0°として反時計回りに0°から360°までの範囲内から選択し、選択した探索方向毎にステップS420〜ステップS430の処理を繰り返し行う(ステップS410)。所定の方向は、例えば、撮像画像の撮像に用いられた撮像素子のX軸における正の方向である。なお、所定の方向は、これに代えて、ランダムに決められた方向等の他の方向であってもよい。また、探索方向は、第1図形の図心を通る方向の一例である。
より具体的には、第2検出処理部51は、所定の方向である0°を探索方向として選択してステップS420〜ステップS430の処理を行った後、0°に所定の角度AGを足した方向(0°+角度AG)を次のステップS420〜ステップS430の処理における探索方向として選択する。そして、第2検出処理部51は、(0°+角度AG)を探索方向としたステップS420〜ステップS430の処理を行った後、(0°+角度AG)に所定の角度AGを足した方向(0°+2AG)を次のステップS420〜ステップS430の処理における探索方向として選択する。これを繰り返し、第2検出処理部51は、0°〜360°の範囲内において選択された探索方向毎にステップS420〜ステップS430の処理を繰り返し行う。所定の角度は、例えば、0.1°である。なお、所定の角度は、これに代えて、他の角度であってもよい。
ステップS410において探索方向が選択された後、第2検出処理部51は、ステップS405において検出された第1図形F1の図心F1Cから、ステップS410において選択された探索方向に向かってデータ領域に含まれる4つのコード図形の検出を行う(ステップS420)。より具体的には、第2検出処理部51は、ステップS405において検出された第1図形F1の図心F1Cから、ステップS410において選択された探索方向に向かってデータ領域に含まれる4つのコード図形の候補を検出する。第2検出処理部51は、当該探索方向において当該候補となる4つの図形が検出された場合、当該4つの図形それぞれの図心を算出する。そして、第2検出処理部51は、算出した図心がすべて、第1図形F1の図心F1Cから当該探索方向へと向かう直線上に位置している場合、検出した4つの図形をデータ領域に含まれる4つのコード図形であると特定する。
次に、第2検出処理部51は、ステップS420においてマーカーMk1が有するデータ領域、すなわち当該データ領域に含まれる4つのコード図形の検出に成功したか否かを判定する(ステップS430)。4つのコード図形の検出に成功したと第2検出処理部51が判定した場合(ステップS430−Yes)、位置姿勢算出部52は、ステップS350に遷移し、マーカーMk1の位置及び姿勢を対象物Oのロボット座標系における位置及び姿勢として算出する。一方、4つのコード図形の検出に成功していない(失敗した)と判定した場合(ステップS430−No)、第2検出処理部51は、ステップS410に遷移し、未選択の探索方向から次の探索方向を選択する。
図17は、図16に示したフローチャートにおけるステップS410〜ステップS430の処理の概要を視覚的に説明する図である。図17に示したマーカーMk1の図心F1Cからは、2本の矢印がそれぞれ互いに異なる方向に描かれている。当該2本の矢印のうちの1本である矢印S1は、図17に示した座標系のX軸の正の方向へ図心F1Cから伸びている。一方、当該2本の矢印のうちの1本である矢印S2は、矢印S1から図心F1Cを中心として反時計回りに角度R1だけ回転した方向に伸びている。
矢印S1は、図17において、図16に示したステップS410において最初に探索方向として選択される所定の方向を表している。図17に示したように、矢印S1が示す方向には、マーカーMk1が有するデータ領域に含まれる4つのコード図形は存在していない。このため、第2検出処理部51は、探索方向を矢印S1の方向から反時計回りに変化させ、変化させた探索方向毎に当該コード図形の検出を行う。そして、第2検出処理部51は、ステップS410において矢印S2の方向が選択された場合、当該コード図形を検出することができる。
このように、ロボット制御装置30は、対象物Oに貼付されているマーカーが、第2図形を有さない場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれる1以上のコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
<実施形態の変形例2>
以下、本発明の実施形態の変形例2について、図面を参照して説明する。上記の実施形態で説明した対象物Oに貼付されているマーカーは、マーカーMk及びマーカーMk1に代えて、この一例において説明するマーカーMk2であってもよい。つまり、実施形態の変形例2では、ロボット制御装置30が、マーカーMk及びマーカーMk1に代えて、マーカーMk2を検出する。マーカーMk2は、マーカーMkが有するデータ領域に、4つのコード図形に代えて、以下で説明するコード図形FCを1つのみ含む構成のマーカーである。
<実施形態の変形例2におけるマーカーの詳細>
図18は、実施形態の変形例2におけるマーカーの一例を示す図である。図18に示したように、マーカーMk2は、マーカーMkと異なり、データ領域W3にコード図形FCを1つのみ有している。すなわち、マーカーMk2は、データ領域W3に含まれるコード図形以外は、マーカーMkと同様の特徴を有する。コード図形FCは、マーカーMkが有するデータ領域に含まれる4つのコード図形と異なり、1つでコードを表す。
図18に示した例では、コード図形FCは、24個の正方形状のセルが4行6列に並べられた二次元コードである。当該セルのそれぞれは、白いセル、又は黒いセルのいずれかである。また、コード図形FCは、コード図形FCを検出するための目印として使用する固定コードを含む。固定コードは、コード図形FCを構成するセルのうちの色が固定された(色の変更を行わない)セルによって構成される。すなわち、この一例において、固定コードは、コード図形FCが表わすコードの一部ではない。
図18に示した例では、固定コードを表すセルのうち、白いセルは、当該4行6列における1行1列目、1行3列目、1行5列目、3行1列目、4行5列目の5つである。また、当該固定コードを表すセルのうち、黒いセルは、当該4行6列における1行2列目、1行3列目、1行5列目、2行1列目、4行1列目の5つである。なお、固定コードを表す白いセル又は黒いセルは、これらに代えて、当該4行6列のうちの他の位置であってもよい。
コード図形FCは、当該4行6列のうちの固定コードを表すセルを除いた残りの12個のセルの色のうち、白と黒を0と1の2進数と見做すことによって、12ビットのコードを表す。すなわち、コード図形FCが表わすコードは、これら12個のセルによって全部が表わされる(前述したように、固定コードによってコードの一部を表さない)。図18では、これら12個のセルのそれぞれは、ハッチングされた領域CD1に含まれている。図18に示したハッチングされた領域CD1において、これら12個それぞれのセルの色は、省略している。
<実施形態の変形例2におけるマーカー検出処理の流れについて>
以下、実施形態の変形例2におけるマーカー検出処理の流れについて説明する。実施形態の変形例2では、画像処理部44が図4に示したフローチャートにおいて、ステップS120の処理に代えて、以下で説明するステップS120bの処理を行う。
図19は、実施形態の変形例2において画像処理部44が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図19において、ステップS300〜ステップS320の処理と、ステップS340〜ステップS350の処理と、ステップS370の処理とは、図13に示したステップS300〜ステップS320の処理と、ステップS340〜ステップS350の処理と、ステップS370の処理と同様な処理であるため、説明を省略する。
ステップS320において第1図形F1及び第2図形F2が検出された後、第2検出処理部51は、当該第1図形F1及び第2図形F2に基づいて、マーカーMk2が有するデータ領域を検出する(ステップS330b)。ここで、ステップS330bの処理について説明する。第2検出処理部51は、マーカーMk2が有するデータ領域として、第1図形F1と第2図形F2の間に含まれる図形を、コード図形FCの候補として検出する処理を実行する。この処理において、第2検出処理部51は、第1図形F1と第2図形F2の間に含まれる図形から固定コードを探索(検出)する。そして、第2検出処理部51は、当該図形から固定コードが検出された場合、この図形をマーカーMk2が有するデータ領域に含まれるコード図形FCとして検出する。なお、第2検出処理部51は、固定コードを検出する際、固定コードのモデル図形を予め記憶部32から読み出し、読み出した当該モデル図形を用いたパターンマッチングによって固定コードを検出する等の従来から知られた方法によって固定コードを検出する。
ステップS350においてマーカーMk2の位置及び姿勢が対象物Oのロボット座標系における位置及び姿勢として算出された後、コード検出部53は、ステップS330bにおいて検出されたコード図形FCから、固定コードである12個のセルを除いた残りの12個のセルそれぞれの位置及び色を検出することにより、コード図形FCが表わすコードを検出する(ステップS360b)。なお、ステップS360bにおけるコードの検出方法は、従来から知られている二次元コードの検出方法と同様なため、説明を省略する。
このように、ロボット制御装置30は、対象物Oに貼付されているマーカーが、マーカーMk2と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
なお、図19に示したフローチャートの処理では、マーカーMk2を含む撮像画像の解像度が、データ領域に含まれるコード図形FCのセルそれぞれを第2検出処理部51によって区別できる程度であることを前提として説明した。第1検出処理部50は、この前提を保証するため、図19に示したフローチャートのステップS320の処理において、検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上であるか否かを判定する構成であってもよい。検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上ではないと第1検出処理部50が判定した場合、画像処理部44は、マーカーMk2の検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、検出した第1図形F1及び第2図形F2のうちいずれか一方又は両方の大きさが所定の大きさ以上であると第1検出処理部50が判定した場合、第2検出処理部51は、図19に示したフローチャートのステップS330bの処理を実行する。
<実施形態の変形例3>
以下、本発明の実施形態の変形例3について、図面を参照して説明する。上記の実施形態で説明した対象物Oに貼付されているマーカーは、マーカーMk、マーカーMk1、マーカーMk2に代えて、この一例において説明するマーカーMk3であってもよい。つまり、実施形態の変形例3では、ロボット制御装置30が、マーカーMk、マーカーMk1、マーカーMk2に代えて、マーカーMk3を検出する。マーカーMk3は、マーカーMk1が有するデータ領域に、4つのコード図形に代えて、実施形態の変形例2において説明したコード図形FCを1つのみ含む構成のマーカーである。
<実施形態の変形例3におけるマーカーの詳細>
図20は、実施形態の変形例3におけるマーカーの一例を示す図である。図20に示したように、マーカーMk3は、マーカーMk1と異なり、データ領域W3にコード図形FCを1つのみ有している。すなわち、マーカーMk3は、データ領域W3に含まれるコード図形以外は、マーカーMk1と同様の特徴を有する。
<実施形態の変形例3におけるマーカー検出処理の流れについて>
以下、実施形態の変形例3におけるマーカー検出処理の流れについて説明する。実施形態の変形例3では、画像処理部44が図4に示したフローチャートにおいて、ステップS120の処理に代えて、以下で説明するステップS120cの処理を行う。
図21は、実施形態の変形例3において画像処理部44が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図21において、ステップS310の処理と、ステップS350〜ステップS370の処理と、ステップS400の処理と、ステップS405の処理と、ステップS430の処理とは、図17に示したステップS310の処理と、ステップS350〜ステップS370の処理と、ステップS400の処理と、ステップS405の処理と、ステップS430の処理と同様な処理であるため、説明を省略する。
ステップS405において第1図形F1が検出された後、第2検出処理部51は、第1図形F1に基づいて、マーカーMk3が有するデータ領域を検出する(ステップS420c)。ここで、ステップS420cの処理について説明する。まず、第2検出処理部51は、マーカーMk3が有するデータ領域を検出するため、第1図形F1の周囲から、コード図形FCの一部を、データ領域を示す目印として探索(検出)する処理を実行する。この一例において、当該目印は、コード図形FCが有する固定コードの一部である。なお、当該目印は、固定コードの一部に代えて、固定コードの全部であってもよく、固定コードと異なるコード図形FCの一部であってもよい。
データ領域を示す目印は、この一例において、コード図形FCを構成する4行6列に並べられたセルのうち、第1図形F1に最も近い列に含まれるセル、すなわち固定コードに含まれるセルのうちの1行1列目、2行1列目、3行1列目、4行1列目の4つのセル(固定コードの一部)である。図22は、ステップS420cにおいて第2検出処理部51が第1図形F1の周囲から探索するデータ領域を示す目印の一例を示す図である。図22に示したように、当該目印は、コード図形FCを構成する4行6列に並べられたセルのうち、第1図形F1に最も近い列、すなわち図22に示した領域W5内の列に含まれる固定コードの一部である。
また、第2検出処理部51が探索する第1図形F1の周囲は、例えば、ステップS405において検出された第1図形F1の面積を所定値倍だけ拡げた場合に、拡げた当該面積に含まれる範囲の領域のことである。所定値は、例えば、4倍程度である。なお、所定値は、撮像画像から検出された第1図形F1に応じた値であってこの一例におけるデータ領域を示す目印(前述の固定コードの一部)を検出可能な値であれば、他の値であってもよい。なお、第2検出処理部51は、当該目印を検出する際、当該目印となる固定コードの一部のモデル図形を予め記憶部32から読み出し、読み出した当該モデル図形を用いたパターンマッチングによって当該目印を検出する等の従来から知られた方法によって当該目印を検出する。
第2検出処理部51は、データ領域を示す目印を検出した後、第1図形F1の図心F1Cから当該目印に向かう方向における所定の探索範囲からコード図形FCが有する固定コードの全体を探索(検出)する処理を行う。そして、第2検出処理部51は、当該探索範囲から固定コードが検出された場合、検出された固定コードを含む図形をコード図形FCとして検出する。
このように、ロボット制御装置30は、対象物Oに貼付されているマーカーが、マーカーMk3と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
<実施形態の変形例4>
以下、本発明の実施形態の変形例4について、図面を参照して説明する。上記の実施形態で説明した対象物Oに貼付されているマーカーは、マーカーMk、マーカーMk1、マーカーMk2、マーカーMk3に代えて、この一例において説明するマーカーMk4であってもよい。つまり、実施形態の変形例4では、ロボット制御装置30が、マーカーMk、マーカーMk1、マーカーMk2、マーカーMk3に代えて、マーカーMk4を検出する。
<実施形態の変形例4におけるマーカーの詳細>
図23は、実施形態の変形例4におけるマーカーの一例を示す図である。図23に示したように、マーカーMk4は、マーカーMk、マーカーMk1、マーカーMk2、マーカーMk3のそれぞれと異なり、第1図形F1と、第1図形F1の中に配置されたデータ領域CRとを有する。図23に示した例では、第1図形F1は、図心の多重度が4の図心マーカーである。
また、図23に示した例では、データ領域CRは、第1図形F1を構成する4つの図形のうちの図23に示した最も外側に配置された黒い四角の枠形状の図形と、図23に示した当該図形の内側に配置された黒いリング状の図形との間の白い図形上の領域である。そして、データ領域CRには、2つのコード図形が配置される。図23に示した例では、これらのコード図形は、コード図形FC1及びコード図形FC2の2つである。
また、コード図形FC1及びコード図形FC2のそれぞれは、9個の正方形状のセルが3行3列に並べられた二次元コードである。このため、コード図形FC1及びコード図形FC2のそれぞれは、当該3行3列に並べられた各セルの色(白又は黒)によって9ビットのコードを表すことができる。また、コード図形FC1及びコード図形FC2のそれぞれは、互いに異なる固定コードを有する。これらの固定コードは、コード図形FC1及びコード図形FC2のそれぞれを検出するための目印である。ロボット制御装置30は、当該固定コードに基づいて、コード図形FC1とコード図形FC2のそれぞれを検出し、区別することができる。例えば、コード図形FC1が有する固定コードは、3行3列に並べられたセルのうちの1行1列目の黒いセル、2行1列目の白いセル、3行1列目の黒いセルの3つのセルであり、コード図形FC2が有する固定コードは、3行3列に並べられたセルのうちの2行1列目の黒いセル、2行2列目の白いセル、2行3列目の黒いセルの3つのセルである。なお、コード図形FC1及びコード図形FC2のそれぞれが有する固定コードのセルの位置は、これに代えて、他の位置であってもよい。また、コード図形FC1及びコード図形FC2のそれぞれが有する固定コードのセルの数は、これに代えて、他の数であってもよい。また、図23では、図の簡略化のため、コード図形FC1及びコード図形FC2のそれぞれにおける固定コード以外のセル(コードを表すセル)をハッチングによって示し、当該セルそれぞれの色を省略している。
<実施形態の変形例4におけるマーカー検出処理の流れについて>
以下、実施形態の変形例4におけるマーカー検出処理の流れについて説明する。実施形態の変形例4では、画像処理部44が図4に示したフローチャートにおいて、ステップS120の処理に代えて、以下で説明するステップS120dの処理を行う。
図24は、実施形態の変形例4において画像処理部44が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図24において、ステップS310の処理と、ステップS340の処理と、ステップS360bの処理と、ステップS370の処理と、ステップS400の処理とは、図19に示したステップS310の処理とステップS340の処理とステップS360bの処理とステップS370の処理、及び図16に示したステップS400の処理と同様な処理であるため、説明を省略する。
ステップS310においてマーカーMk4が対象マーカーとして選択された後、第1検出処理部50は、マーカーMk4を示すマーカーIDに対応付けられた第1図形F1を示す情報を、マーカー情報から抽出する。そして、第1検出処理部50は、抽出した第1図形F1を示す情報と、前述した図心マーカーの検出方法とに基づいて、図4に示したステップS110において画像取得部42が取得した撮像画像から第1図形F1を検出する(ステップS320d)。
ここで、ステップS320dの処理について説明する。第1検出処理部50は、撮像画像から3以上の多重度の図心マーカーを、第1図形F1として検出する。第2検出処理部51は、データ領域に含まれるコード図形FC1及びコード図形FC2の図心の位置が、第1図形F1を構成する4つの図形それぞれの図心の位置とともに所定の範囲内に収まらないため、第1図形F1を検出する際においてコード図形FC1及びコード図形FC2を無視することができる。また、第1検出処理部50は、コード図形FC1及びコード図形FC2のそれぞれの図心の多重度が1であるため、コード図形FC1及びコード図形FC2を第1図形F1として誤検出することがない。
次に、第2検出処理部51は、ステップS320dにおいて検出された第1図形F1に基づいて、マーカーMk4が有するデータ領域、すなわち当該データ領域が有するコード図形FC1及びコード図形FC2のそれぞれを検出する(ステップS330d)。ここで、ステップS330dの処理について説明する。第2検出処理部51は、ステップS320dにおいて検出された第1図形F1の内側を探索し、コード図形FC1が有する固定コードを検出する。第2検出処理部51は、第1図形F1の図心F1Cから当該固定コードの方向に向かって、コード図形FC1が有するコードであって固定コードと異なる他のコードを探索し、コード図形FC1の全体を検出する。また、第2検出処理部51は、ステップS320dにおいて検出された第1図形F1の内側を探索し、コード図形FC2が有する固定コードを検出する。第2検出処理部51は、第1図形F1の図心F1Cから当該固定コードの方向に向かって、コード図形FC2が有するコードであって固定コードと異なる他のコードを探索し、コード図形FC2の全体を検出する。
ステップS340においてデータ領域の検出に成功したと判定された後、位置姿勢算出部52は、第1図形F1の図心F1Cに基づいて、マーカーMk4の位置及び姿勢を算出する(ステップS350d)。ここで、ステップS350dの処理においてマーカーMk4の姿勢を算出する処理について説明する。位置姿勢算出部52は、この一例において、第1図形F1の図心F1Cにおける第1図形F1に対する法線方向をZ軸とし、ステップS330dにおいて第1図形F1の内側から検出されたコード図形FC2からコード図形FC1へと向かう方向をX軸とし、当該Z軸と当該X軸とに直交する方向をY軸とすることにより、第1図形F1の姿勢をマーカーMk4の姿勢(この一例において、対象物Oの姿勢)として算出する。
このように、ロボット制御装置30は、対象物Oに貼付されているマーカーが、マーカーMk4と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
なお、この一例において、コード検出部53は、コード図形FC1とコード図形FC2それぞれにおいて対応するセルの面積を積分し、積分値をコードとして検出する構成等の他の構成であってもよい。
<実施形態及び実施形態の変形例1〜3における歪の補正について>
上記で説明した実施形態及び実施形態の変形例1〜3において、第1検出処理部50が撮像画像から検出した第1図形F1、又は第1図形F1及び第2図形F2のそれぞれが歪んでいる場合、すなわち撮像画像から検出しようとしているマーカーが撮像画像中において歪んでいる場合がある。
例えば、マーカーMk2の表面が撮像部の光軸に対して傾いている状態で当該撮像部により撮像された場合、マーカーMk2は、撮像画像中において歪んでしまう。すなわち、マーカーMk2の表面が当該光軸に対して斜めに撮像されてしまう。マーカーMk2の表面は、第1図形F1が描かれている側の面のことである。マーカーMk2が歪んで撮像された撮像画像は、アフィン変換(アフィンワープ)によってマーカーMk2が歪んでいない画像へと補正を行う(変換する)ことができる場合がある。
例えば、上記で説明した撮像画像中のマーカーMk2が、撮像画像全体の大きさに比べて十分に小さい場合、マーカーMk2が歪んで撮像された撮像画像は、アフィン変換によって近似的にマーカーMk2が歪んでいない画像へと補正可能である。なお、マーカーMk2が歪んで撮像された撮像画像は、撮像画像全体でもよく、撮像画像中のマーカーMk2を含む一部であってもよい。このような場合、第2検出処理部51は、マーカーMk2が有するデータ領域を検出する際、アフィン変換によってマーカーMk2が歪んで撮像された撮像画像を、マーカーMk2が歪んでいない画像へと補正する。
ここで、撮像画像中においてアフィン変換によって補正可能な程度に歪んでいるマーカーMk2が有する第1図形F1及び第2図形F2それぞれの画像は、円形状ではなく楕円形状となっている。図25は、撮像画像中においてアフィン変換によって補正可能な程度に歪んでいるマーカーMk2の一例を示す図である。なお、図25において、マーカーMk2が有する第2図形F2を省略している。図25に示したマーカーMk2が歪んで撮像された撮像画像を補正するため、第2検出処理部51は、撮像画像中において円形状から楕円形状に歪んでいる第1図形F1の長径MA1と短径MA2とのそれぞれの方向を主軸方向として算出し、当該長径と当該短径との長さの比を主軸比として算出する。そして、第1検出処理部50は、当該主軸方向及び当該主軸比と、幾何学とに基づいて第1図形F1の図心F1Cにおける第1図形F1に対する法線方向N1を算出する。
法線方向N1は、図25に示した三次元座標系により位置及び姿勢が表わされる仮想的な三次元空間における方向である。図25において。当該三次元座標系のZ軸方向は、撮像画像中においてマーカーMk2が歪んでいない場合に法線方向N1が向く方向に一致させている。第2検出処理部51は、法線方向N1が、図26に示したように当該三次元座標系のZ軸方向に一致するように、法線方向N1に基づいてアフィン変換を行い、マーカーMk2が歪んで撮像された撮像画像中の第1図形F1を、前述したこの一例における第1図形F1を示す情報である第1図形F1のモデル画像に近似的に一致させる。図26は、歪んでいないマーカーMk2の法線方向N1の一例を示す図である。これにより、当該撮像画像は、マーカーMk2が略歪んでいない(近似的に歪んでいない)画像に補正される。その結果、第2検出処理部51は、補正された当該画像からデータ領域を精度よく検出することができる。
しかし、マーカーMk2が歪んで撮像された撮像画像は、アフィン変換によって補正できない場合がある。このような場合、第2検出処理部51は、アフィン変換に代えて、当該撮像画像にホモグラフィー変換(ホモグラフィーワープ)を行うことにより、当該撮像画像をマーカーMk2が歪んでいない画像へと補正する。
この場合、第2検出処理部51は、前述したアフィン変換を行う場合と同様に、第1図形F1の図心F1Cにおける法線方向N1を算出する。また、第2検出処理部51は、図19に示したフローチャートにおけるステップS330bにおいて説明したように、コード図形FCの目印を検出し、コード図形FCの全体を検出する。また、第2検出処理部51は、ホモグラフィー変換の初期値を設定する。
ホモグラフィー変換の初期値を設定した後、第2検出処理部51は、マーカーMk2が歪んで撮像された撮像画像に対してバイリニア補間処理を行うことによって当該撮像画像を正規化する。第2検出処理部51は、正規化した当該撮像画像と、非線形最適化法(ESM)と、前述の第1図形F1のモデル画像とに基づいて、マーカーMk2が歪んで撮像された撮像画像中の第1図形F1と、前述したこの一例における第1図形F1を示す情報である第1図形F1のモデル画像とのマッチング誤差が最小となるホモグラフィー変換の係数を導出する。そして、第2検出処理部51は、当該マッチング誤差が所定の誤差値以下である場合、歪んでいないマーカーMk2の画像が得られたと判断する。なお、当該マッチング誤差が所定の誤差値以下ではない場合、歪んでいないマーカーMk2の画像が得られていないと判断し、前述のバイリニア補間処理からマッチング誤差が最小となるホモグラフィー変換の係数の導出までの処理を繰り返し行う。
このようなホモグラフィー変換により得られた画像であってマーカーMk2が歪んでいない画像を用いることで、コード検出部53は、マーカーMk2が有するデータ領域に含まれるコード図形FCに基づいて、高い精度でコードを検出することができる。
マーカーMk2が歪んで撮像された撮像画像をマーカーMk2が歪んでいない画像へとホモグラフィー変換を行う場合、アフィン変換を行う場合と比べてESMを用いた繰り返し処理が必要となるため、マーカーMk2を検出するために要する時間が長くなる。ホモグラフィー変換は、アフィン変換を行う場合と比べて歪んだ画像を歪んでいない画像へと補正する際の誤差が小さいため、マーカーMk2の検出精度が高くなる。なお、上記のアフィン変換やホモグラフィー変換は、マーカーMk2に対する適用に限定されず、マーカーMk、マーカーMk1、マーカーMk3のいずれに対しても適用可能である。
なお、検出するマーカーがマーカーMk又はマーカーMk1の場合、撮像画像中の当該マーカーがアフィン変換によって補正可能な程度に歪んでいたとしても、第2検出処理部51は、アフィン変換を用いずとも、当該マーカーが有するデータ領域を検出することができる。図27は、マーカーMkがアフィン変換によって補正可能な程度に歪んで撮像された場合の撮像画像中のマーカーMkの一例を示す図である。
図27に示したように、マーカーMkが歪んで撮像された場合であっても、マーカーMkが有する4つのコード図形のそれぞれの図心(図心C5、図心C10、図心C161及び図心C162、図心C1)は、第1図形F1の図心F1Cと第2図形F2の図心F2Cとを通る直線CL上からずれていない。
このことから、第2検出処理部51は、撮像画像中のマーカーMkにアフィン変換によって補正可能な程度に歪んでいた場合であっても、図14において説明した方法によって、第1図形F1と第2図形F2の間に含まれる複数の画像が、マーカーMkのデータ領域に含まれる4つのコード図形のそれぞれであるか否かを判定することができる。
<実施形態の変形例4における歪の補正について>
上記で説明した実施形態の変形例4において、第1検出処理部50が撮像画像から検出した第1図形F1が歪んでいる場合、すなわち撮像画像から検出しようとしているマーカーが撮像画像中において歪んでいる場合がある。
例えば、マーカーMk4の表面が撮像部の光軸に対して傾いている状態で当該撮像部により撮像された場合、マーカーMk4は、撮像画像中において歪んでしまう。すなわち、マーカーMk4の表面が当該光軸に対して斜めに撮像されてしまう。マーカーMk4の表面は、第1図形F1が描かれている側の面のことである。マーカーMk4が歪んで撮像された撮像画像は、アフィン変換(アフィンワープ)によってマーカーMk4が歪んでいない画像へと補正を行う(変換する)ことができる場合がある。
例えば、上記で説明した撮像画像中のマーカーMk4が、撮像画像全体の大きさに比べて十分に小さい場合、前述したマーカーMk2が歪んで撮像された撮像画像をアフィン変換によってマーカーMk2が歪んでいない画像へと補正したように、マーカーMk4が歪んで撮像された撮像画像は、アフィン変換によって近似的にマーカーMk4が歪んでいない画像へと補正可能である。なお、マーカーMk4が歪んで撮像された撮像画像は、撮像画像全体でもよく、撮像画像中のマーカーMk4を含む一部であってもよい。このような場合、第2検出処理部51は、マーカーMk4が有するデータ領域を検出する際、アフィン変換によってマーカーMk4が歪んで撮像された撮像画像を、マーカーMk4が歪んでいない画像へと補正する。
しかし、マーカーMk4が歪んで撮像された撮像画像をマーカーMk4が歪んでいない画像へと補正するためには、更にラドン変換を行わなければならない場合がある。ここで、第2検出処理部51がラドン変換を行う処理の流れについて説明する。なお、マーカーMk4が歪んで撮像された撮像画像に対してアフィン変換を行う場合についての処理は、上記のマーカーMk2が歪んで撮像された撮像画像についてアフィン変換を行う場合についての処理と同様の処理であるため、説明を省略する。
第2検出処理部51は、アフィン変換によってマーカーMk4が近似的に歪んでいない画像が得られた後、当該画像と前述の第1図形F1のモデル画像とが一致している度合(類似度)を表すピークの検出を実行する。当該ピークが検出されない場合、第2検出処理部51は、マーカーMk4が歪んで撮像された撮像画像をマーカーMk4が歪んでいない画像へと補正することが困難であると判定し、歪みの補正の処理を終了する。この場合、第2検出処理部51は、マーカーMk4の検出に失敗したことを示す情報を生成する。
一方、当該ピークが検出された場合、第2検出処理部51は、当該ピークに基づいて、マーカーMk4のコード図形FC2からコード図形FC1に向かう方向に対して、所定の角度範囲のラドン変換を行い、アフィン変換によって得られたマーカーMk4が近似的に歪んでいない画像と、前述の第1図形F1のモデル画像との類似度であるピークが最大となるように角度及び大きさ(スケール)の補正を行う。また、第2検出処理部51は、当該ピークに基づいて、マーカーMk4のコード図形FC2からコード図形FC1に向かう方向と直交する方向に対して、所定の角度範囲のラドン変換を行い、アフィン変換によって得られたマーカーMk4が近似的に歪んでいない画像と、前述の第1図形F1のモデル画像との類似度であるピークが最大となるように角度及び大きさ(スケール)の補正を行う。
このようなラドン変換により得られた画像であってマーカーMk4が歪んでいない画像を用いることで、コード検出部53は、マーカーMk4が有するデータ領域に含まれるコード図形FC1及びコード図形FC2に基づいて、高い精度でコードを検出することができる。
<コード図形が示すコードの誤り訂正について>
上記で説明した実施形態の変形例2〜4に係るマーカー(マーカーMk1〜マーカーMk4のそれぞれ)が有するコード図形(コード図形FC、コード図形FC1及びコード図形FC2)には、固定コードに加えて、チェックビット、又はハミングコードを含む構成であってもよい。例えば、当該コード図形が表わす16ビットの情報のうち、11ビットの情報によってコードを示し、残りの5ビットをハミングコードに用いることによって、1ビット誤りの訂正、2ビット誤りの検出を行うことができる。ここでは、マーカーMk3及びマーカーMk4を例に挙げて説明する。なお、以下で説明する内容は、マーカーMk2に対しても適用可能である。
図28は、マーカーMk3及びマーカーMk4に関する情報の一例を示す表である。図28に示したように、マーカーMk3は、例えば、10mm×28mmや、7mm×20mm、5mm×14mmという大きさ(サイズ)で作成される。なお、マーカーMk3のサイズは、他のサイズであってもよい。このようなマーカーMk3が有するコード図形FCのコードを表すビット数を、チェックビットを用いずに12ビットにした場合、誤り訂正可能なビット数は0である。一方、当該マーカーMk3が有するコード図形FCのコードを表すビット数を、1つのチェックビットを用いて11ビットにした場合、誤り訂正可能なビット数は1である。
また、図28に示したように、マーカーMk4は、例えば、10mm×21mmや、7mm×15mm、5mm×11mmという大きさ(サイズ)で作成される。なお、マーカーMk4のサイズは、他のサイズであってもよい。このようなマーカーMk4が有するコード図形FC1及びコード図形FC2のコードを表すビット数を、チェックビット又はハミングコードを用いずに18ビットにした場合、誤り訂正可能なビット数は0である。一方、当該マーカーMk4が有するコード図形FC1及びコード図形FC2のコードを表すビット数を、2つのチェックビットを用いて16ビットにした場合、誤り訂正可能なビット数は2である。一方、当該マーカーMk4が有するコード図形FC1及びコード図形FC2のコードを表すビット数を、5ビットのハミングコードを用いて11ビットにした場合、誤り訂正可能なビット数は7である。
以上説明したように、実施形態におけるロボット20のロボット制御装置30(又はロボット制御装置30と別体の画像処理装置)は、第1図形(この一例において、第1図形F1)を検出した後、当該第1図形の図心(この一例において、図心F1C)に基づいてデータ領域を検出する。これにより、ロボット制御装置30は、マーカー(例えば、本実施形態におけるマーカーMk、マーカーMk1〜マーカーMk4のそれぞれ)に対する外的要因によるマーカーの検出の失敗を抑制することができる。
また、ロボット制御装置30は、第1図形の図心を通る方向(この一例において、探索方向)に基づいて、データ領域を検出する。これにより、ロボット制御装置30は、データ領域が表わす情報に基づく処理を行うことができる。
また、ロボット制御装置30は、第1図形の図心を中心として当該第1図形の図心を通る方向を変化させて、データ領域を検出する。これにより、ロボット制御装置30は、第1図形が当該第1図形の図心を通る方向を示していない場合であっても、データ領域を検出することができる。
また、ロボット制御装置30は、第1図形を検出した後、当該第1図形と比べて重なっている図心の数が少ない図形(この一例において、コード図形FD1〜コード図形FD16、コード図形FC、コード図形FC1、コード図形FC2)を有するデータ領域を検出する。これにより、ロボット制御装置30は、データ領域が有する図形を第1図形として誤検出してしまうことを抑制することができる。
また、ロボット制御装置30は、第1図形及び第2図形(この一例において、第2図形F2)を検出した後、当該第1図形の図心と当該第2図形の図心(この一例において、図心F2C)とに基づいてデータ領域を検出する。これにより、ロボット制御装置30は、第1図形の図心を通る方向に基づいて、より確実にデータ領域を検出することができる。
また、ロボット制御装置30は、第1図形の図心と、第2図形の図心とを結んだ方向に基づいて、データ領域を検出する。これにより、ロボット制御装置30は、第1図形の図心と、第2図形の図心とを結んだ方向に基づいて、より早くにデータ領域を検出することができる。
また、実施形態におけるマーカー(例えば、マーカーMk、マーカーMk1〜マーカーMk4のそれぞれ)は、第1図形を検出させた後、当該第1図形の図心に基づいてデータ領域を検出させる。これにより、マーカーは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
また、マーカーは、第1図形と第2図形を検出させた後、当該第1図形の図心と当該第2図形の図心とに基づいてデータ領域を検出させる。これにより、マーカーは、より確実にデータ領域を検出させることができる。
なお、制御部36のうちの画像処理部44は、画像処理装置としてロボット制御装置30と別体であってもよい。この場合、ロボット20と、ロボット制御装置30と、当該画像処理装置とは、ロボットシステムを構成する。また、この場合、画像処理装置は、検出したマーカーに基づく情報をロボット制御装置30とは異なる他の装置へと出力し、例えば、AR(Augmented Reality)等のように、当該他の装置へ当該情報を表示させる構成であってもよい。検出したマーカーに基づく情報は、例えば、当該マーカーに対応付けられた情報である。
また、ロボット制御装置30が検出するマーカー(マーカーMk、マーカーMk1〜マーカーMk4のそれぞれ)が有するデータ領域には、コード図形として、カラーマーカーやバーコード、QRコード(登録商標)等の他のマーカーが含まれる構成であってもよい。
また、第1撮像部21と、第2撮像部22と、第3撮像部23と、第4撮像部24とのうちの一部又は全部は、ロボット20と別体の撮像部であってもよい。この場合、ロボット20と、ロボット20と別体の撮像部と、ロボット制御装置30と、画像処理装置とは、ロボットシステムを構成する。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット20のロボット制御装置30、又はロボット制御装置30と別体の画像処理装置)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。