(57)【特許請求の範囲】
【請求項１】
マーカーを検出する画像処理装置であって、
前記マーカーは、
第１点で図心が重なっている３つ以上の第１領域で構成される第１図形と、
第２点で図心が重なっている３つ以上の第２領域で構成される第２図形と、
第３領域で構成される第３図形を複数有し、前記第１図形と前記第２図形の間に設けられたデータ領域と、を有し、
前記第１点と前記第２点とを通る直線上に前記第３領域の図心が位置するように、前記データ領域において前記第３図形が複数配置されており、
前記第３図形において重なっている前記第３領域の前記図心の数は、前記第１図形において前記第１点で重なっている前記第１領域の前記図心の数よりも少なく、かつ、前記第２図形において前記第２点で重なっている前記第２領域の前記図心の数よりも少なく、
前記第１図形および前記第２図形を検出した後、前記第１点および前記第２点に基づいて前記データ領域を検出する、
画像処理装置。
【請求項２】
前記第１点から前記第２点に向かう方向に基づいて、前記データ領域を検出する、
請求項１に記載の画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置を備える、
ロボット。
【請求項４】
第１点で図心が重なっている３つ以上の第１領域で構成される第１図形と、
第２点で図心が重なっている３つ以上の第２領域で構成される第２図形と、
第３領域で構成される第３図形を複数有し、前記第１図形と前記第２図形の間に設けられたデータ領域と、有し、
前記第１点と前記第２点とを通る直線上に前記第３領域の図心が位置するように、前記データ領域において前記第３図形が複数配置されており、
前記第３図形において重なっている前記第３領域の前記図心の数は、前記第１図形において前記第１点で重なっている前記第１領域の前記図心の数よりも少なく、かつ、前記第２図形において前記第２点で重なっている前記第２領域の前記図心の数よりも少ない、
マーカー。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、ロボット、及びマーカーに関する。
【背景技術】
【０００２】
画像からマーカーや対象物を検出し、検出したマーカーや対象物に応じて作業を行うロボットの研究や開発が行われている。
【０００３】
これに関し、互いに隣り合う第１色の領域と第２色の領域とで構成されるマーカーと、マトリクス状に配列された２進データセルから成るデータマトリクスとを備える二次元コードが知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−８４０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、この二次元コードは、当該二次元コードを含む撮像画像から第１色の領域と第２色の領域とに基づいて検出しなければならないため、これらの領域に対する汚れや当該領域の経時変化、当該撮像画像の撮像時における環境光等の撮像条件の変化等の外的要因によって検出に失敗する場合があった。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、マーカーを検出する画像処理装置であって、前記マーカーは、図心が３つ以上重なっている第１図形と、前記第１図形の内部または外部に設けられたデータ領域と、を有し、前記第１図形を検出した後、前記第１図形の図心に基づいて前記データ領域を検出する、画像処理装置である。
この構成により、画像処理装置は、第１図形を検出した後、当該第１図形の図心に基づいてデータ領域を検出する。これにより、画像処理装置は、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【０００７】
また、本発明の他の態様は、画像処理装置において、前記第１図形の図心を通る方向に基づいて、前記データ領域を検出する、構成が用いられてもよい。
この構成により、画像処理装置は、第１図形の図心を通る方向に基づいて、データ領域を検出する。これにより、画像処理装置は、第１図形の図心を通る方向に基づいて、より確実にデータ領域を検出することができる。
【０００８】
また、本発明の他の態様は、画像処理装置において、前記第１図形の図心を中心として前記方向を変化させて、前記データ領域を検出する、構成が用いられてもよい。
この構成により、画像処理装置は、第１図形の図心を中心として当該第１図形の図心を通る方向を変化させて、データ領域を検出する。これにより、画像処理装置は、第１図形が当該第１図形の図心を通る方向を示していない場合であっても、データ領域を検出することができる。
【０００９】
また、本発明の他の態様は、画像処理装置において、前記データ領域は、前記第１図形と比べて重なっている図心の数が少ない図形を有する、構成が用いられてもよい。
この構成により、画像処理装置は、第１図形を検出した後、当該第１図形と比べて重なっている図心の数が少ない図形を有するデータ領域を検出する。これにより、画像処理装置は、データ領域が有する図形を第１図形として誤検出してしまうことを抑制することができる。
【００１０】
また、本発明の他の態様は、画像処理装置において、前記マーカーは、図心が３つ以上重なっている第２図形を有し、前記データ領域は、前記第１図形と前記第２図形との間に位置する、構成が用いられてもよい。
この構成により、画像処理装置は、第１図形及び第２図形を検出した後、当該第１図形の図心と当該第２図形の図心とに基づいてデータ領域を検出する。これにより、画像処理装置は、より確実にデータ領域を検出することができる。
【００１１】
また、本発明の他の態様は、画像処理装置において、前記第１図形の図心と、前記第２図形の図心とを結んだ方向に基づいて、前記データ領域を検出する、構成が用いられてもよい。
この構成により、画像処理装置は、前記第１図形の図心と、前記第２図形の図心とを結んだ方向に基づいて、前記データ領域を検出する。これにより、画像処理装置は、第１図形の図心と、第２図形の図心とを結んだ方向に基づいて、より早くにデータ領域を検出することができる。
【００１２】
また、本発明の他の態様は、上記のいずれかに記載の画像処理装置を備える、ロボットである。
この構成により、ロボットは、第１図形を検出した後、当該第１図形の図心に基づいてデータ領域を検出する。これにより、ロボットは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【００１３】
また、本発明の他の態様は、前記マーカーを含む撮像画像を撮像する撮像部と、請求項７に記載のロボットと、を備えるロボットシステムである。
この構成により、ロボットシステムは、第１図形を検出した後、当該第１図形の図心に基づいてデータ領域を検出する。これにより、ロボットシステムは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【００１４】
また、本発明の他の態様は、図心が３つ以上重なっている第１図形と、前記第１図形の外部に設けられたデータ領域と、を有するマーカーである。
この構成により、マーカーは、第１図形を検出させた後、当該第１図形の図心に基づいてデータ領域を検出させる。これにより、マーカーは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【００１５】
また、本発明の他の態様は、マーカーにおいて、図心が３つ以上重なっている第２図形を有し、前記データ領域は、前記第１図形と前記第２図形との間に位置する、構成が用いられてもよい。
この構成により、マーカーは、第１図形と第２図形を検出させた後、当該第１図形の図心と当該第２図形の図心とに基づいてデータ領域を検出させる。これにより、マーカーは、より確実にデータ領域を検出させることができる。
【００１６】
以上により、画像処理装置、ロボット、及びロボットシステムは、第１図形を検出した後、当該第１図形の図心に基づいてデータ領域を検出する。これにより、画像処理装置、ロボット、ロボットシステムは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
また、マーカーは、第１図形を検出させた後、当該第１図形の図心に基づいてデータ領域を検出させる。これにより、マーカーは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係るロボット２０の一例を示す構成図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】制御部３６がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。
【図５】図１に示したマーカーＭｋの具体例を示す図である。
【図６】図形の図心を説明するための図である。
【図７】第１図形Ｆ１を図心マーカーの一例として示す図である。
【図８】第２図形Ｆ２を図心マーカーの他の例として示す図である。
【図９】同心円を構成していない３つの図形によって構成される多重度が３の図心マーカーの一例を示す図である。
【図１０】同心円を構成していない４つの図形によって構成される多重度が４の図心マーカーの一例を示す図である。
【図１１】同心円を構成していない４つの図形によって構成される多重度が４の図心マーカーの他の例を示す図である。
【図１２】ロボット制御装置３０が検出した４つのコード図形のそれぞれが１６種類のコード図形のいずれであるかをロボット制御装置３０が特定する処理の流れを示すフローチャートである。
【図１３】図４に示したステップＳ１２０におけるマーカー検出処理の流れの一例を示すフローチャートである。
【図１４】マーカーＭｋが有する第１図形Ｆ１の図心、第２図形Ｆ２の図心、及びデータ領域に含まれる４つのコード図形それぞれの図心を例示する図である。
【図１５】実施形態の変形例１におけるマーカーの一例を示す図である。
【図１６】実施形態の変形例１において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。
【図１７】図１６に示したフローチャートにおけるステップＳ４１０〜ステップＳ４３０の処理の概要を視覚的に説明する図である。
【図１８】実施形態の変形例２におけるマーカーの一例を示す図である。
【図１９】実施形態の変形例２において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。
【図２０】実施形態の変形例３におけるマーカーの一例を示す図である。
【図２１】実施形態の変形例３において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。
【図２２】ステップＳ４２０ｃにおいて第２検出処理部５１が第１図形Ｆ１の周囲から探索するデータ領域を示す目印の一例を示す図である。
【図２３】実施形態の変形例４におけるマーカーの一例を示す図である。
【図２４】実施形態の変形例４において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。
【図２５】撮像画像中においてアフィン変換によって補正可能な程度に歪んでいるマーカーＭｋ２の一例を示す図である。
【図２６】歪んでいないマーカーＭｋ２の法線方向Ｎ１の一例を示す図である。
【図２７】マーカーＭｋがアフィン変換によって補正可能な程度に歪んで撮像された場合の撮像画像中のマーカーＭｋの一例を示す図である。
【図２８】マーカーＭｋ３及びマーカーＭｋ４に関する情報の一例を示す表である。
【発明を実施するための形態】
【００１８】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態に係るロボット２０の一例を示す構成図である。
【００１９】
＜ロボット２０の構成＞
まず、ロボット２０の構成について説明する。
ロボット２０は、第１アームと、第２アームと、第１アーム及び第２アームを支持する支持台と、ロボット制御装置３０を備える双腕ロボットである。双腕ロボットは、この一例における第１アームと第２アームのような２本のアーム（腕）を備えるロボットである。なお、ロボット２０は、双腕ロボットに代えて、単腕ロボットであってもよい。単腕ロボットは、１本のアームを備えるロボットである。例えば、単腕ロボットは、第１アームと第２アームのいずれか一方を備える。また、ロボット２０は、双腕ロボットに代えて、３本以上のアームを備える複腕ロボットであってもよい。
【００２０】
第１アームは、第１エンドエフェクターＥ１と第１マニピュレーターＭ１を備える。
【００２１】
第１エンドエフェクターＥ１は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第１エンドエフェクターＥ１は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
【００２２】
第１エンドエフェクターＥ１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第１エンドエフェクターＥ１は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。また、第１エンドエフェクターＥ１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２３】
第１マニピュレーターＭ１は、７つの関節と、第１撮像部２１を備える。また、７つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第１マニピュレーターＭ１を備える第１アームは、７軸垂直多関節型のアームである。第１アームは、支持台と、第１エンドエフェクターＥ１と、第１マニピュレーターＭ１と、第１マニピュレーターＭ１が備える７つの関節それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第１アームは、６軸以下の自由度で動作する構成であってもよく、８軸以上の自由度で動作する構成であってもよい。
【００２４】
第１アームが７軸の自由度で動作する場合、第１アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第１アームは、例えば、動作が滑らかになり、更に第１アームの周辺に存在する物体との干渉を容易に回避することができる。また、第１アームが７軸の自由度で動作する場合、第１アームの制御は、第１アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００２５】
第１マニピュレーターＭ１が備える７つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第１マニピュレーターＭ１を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第１マニピュレーターＭ１が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２６】
第１撮像部２１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えたカメラである。この一例において、第１撮像部２１は、第１マニピュレーターＭ１の一部に備えられる。そのため、第１撮像部２１は、第１アームの動きに応じて移動する。また、第１撮像部２１が撮像可能な範囲は、第１アームの動きに応じて変化する。第１撮像部２１は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００２７】
また、第１撮像部２１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第１撮像部２１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２８】
第２アームは、第２エンドエフェクターＥ２と第２マニピュレーターＭ２を備える。
【００２９】
第２エンドエフェクターＥ２は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第２エンドエフェクターＥ２は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
【００３０】
第２エンドエフェクターＥ２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第２エンドエフェクターＥ２は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２エンドエフェクターＥ２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３１】
第２マニピュレーターＭ２は、７つの関節と、第２撮像部２２を備える。また、７つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第２マニピュレーターＭ２を備える第２アームは、７軸垂直多関節型のアームである。第２アームは、支持台と、第２エンドエフェクターＥ２と、第２マニピュレーターＭ２と、第２マニピュレーターＭ２が備える７つの関節それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第２アームは、６軸以下の自由度で動作する構成であってもよく、８軸以上の自由度で動作する構成であってもよい。
【００３２】
第２アームが７軸の自由度で動作する場合、第２アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第２アームは、例えば、動作が滑らかになり、更に第２アームの周辺に存在する物体との干渉を容易に回避することができる。また、第２アームが７軸の自由度で動作する場合、第２アームの制御は、第２アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００３３】
第２マニピュレーターＭ２が備える７つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第２マニピュレーターＭ２を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２マニピュレーターＭ２が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３４】
第２撮像部２２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。この一例において、第２撮像部２２は、第２マニピュレーターＭ２の一部に備えられる。そのため、第２撮像部２２は、第２アームの動きに応じて移動する。また、第２撮像部２２が撮像可能な範囲は、第２アームの動きに応じて変化する。第２撮像部２２は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００３５】
また、第２撮像部２２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２撮像部２２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３６】
また、ロボット２０は、第３撮像部２３と、第４撮像部２４を備える。
第３撮像部２３は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第３撮像部２３は、第４撮像部２４が撮像可能な範囲を第４撮像部２４とともにステレオ撮像可能な部位に備えられる。第３撮像部２３は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第３撮像部２３は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３７】
第４撮像部２４は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第４撮像部２４は、第３撮像部２３が撮像可能な範囲を第３撮像部２３とともにステレオ撮像可能な部位に備えられる。第４撮像部２４は、ケーブルによって通信可能にロボット制御装置３０と接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第４撮像部２４は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３８】
上記で説明したロボット２０が備えるこれらの各機能部は、この一例において、ロボット２０に内蔵されたロボット制御装置３０から制御信号を取得する。そして、当該各機能部は、取得した制御信号に基づいた動作を行う。なお、ロボット２０は、ロボット制御装置３０を内蔵する構成に代えて、外部に設置されたロボット制御装置３０により制御される構成であってもよい。この場合、ロボット２０と、ロボット制御装置３０とは、ロボットシステムを構成する。また、ロボット２０は、第１撮像部２１と、第２撮像部２２と、第３撮像部２３と、第４撮像部２４のうちの一部を備えない構成であってもよい。
【００３９】
ロボット制御装置３０は、ロボット２０に制御信号を送信することにより、ロボット２０を動作させる。これにより、ロボット制御装置３０は、ロボット２０に所定の作業を行わせる。
【００４０】
＜ロボット２０が行う所定の作業の概要＞
以下、ロボット２０が行う所定の作業の概要について説明する。
この一例において、ロボット２０は、第１アームと第２アームの両方により作業することが可能な領域である作業領域に配置された物体を把持し、把持した物体を図示しない給材領域に給材（配置）する作業を所定の作業として行う。なお、ロボット２０は、これに代えて、他の作業を所定の作業として行う構成であってもよい。また、作業領域は、第１アームと第２アームのうちいずれか一方により作業することが可能な領域であってもよい。
【００４１】
図１に示した例では、作業領域は、作業台ＴＢの上面を含む領域である。作業台ＴＢは、例えば、テーブルである。なお、作業台ＴＢは、テーブルに代えて、床面や棚等の他の物体であってもよい。作業台ＴＢの上面には、ロボット２０が把持する対象物Ｏが配置されている。なお、作業台ＴＢの上面には、２以上の対象物Ｏが配置されている構成であってもよい。
【００４２】
対象物Ｏは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図１では、図の簡略化のため、対象物Ｏを直方体形状の物体として表している。なお、対象物Ｏは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、対象物Ｏの形状は、直方体形状に代えて、他の形状であってもよい。
【００４３】
＜ロボット制御装置３０が行う処理の概要＞
以下、ロボット２０に所定の作業を行わせるためにロボット制御装置３０が行う処理の概要について説明する。
【００４４】
ロボット制御装置３０は、第３撮像部２３と第４撮像部２４に作業領域を含む範囲を撮像範囲としてステレオ撮像させる。そして、ロボット制御装置３０は、第３撮像部２３と第４撮像部２４がステレオ撮像した撮像画像を取得する。ロボット制御装置３０は、取得した撮像画像に基づいて、作業領域内に貼付されたマーカーを検出する。なお、ロボット制御装置３０は、第３撮像部２３と第４撮像部２４に当該撮像範囲としてステレオ撮像させる構成に代えて、第１撮像部２１と、第２撮像部２２と、第３撮像部２３と、第４撮像部２４とのうちの第３撮像部２３及び第４撮像部２４の組み合わせを除く任意の２つの組み合わせによって撮像範囲をステレオ撮像する構成であってもよい。
【００４５】
本実施形態におけるマーカーは、当該マーカーの位置及び姿勢を示す図形と、当該マーカーの位置及び姿勢と異なる他の情報を示す図形を含むデータ領域とを有する。マーカーの位置及び姿勢を示す図形には、１以上の図形が含まれる。この一例では、マーカーの位置及び姿勢を示す図形が、第１図形と第２図形の２つの図形である場合について説明する。また、当該他の情報を示す図形は、当該他の情報を示すコード（記号）を表す図形であるコード図形である。データ領域は、１以上のコード図形を含む構成であってもよい。データ領域に複数のコード図形が含まれる場合、個々のコード図形は、当該他の情報の一部又は全部を示すコードを表す。この一例では、データ領域に４つコード図形が含まれており、当該４つのコード図形のそれぞれが当該他の情報の一部を示すコードを表し、当該４つのコード図形の全部によって１つの当該他の情報の全部を示すコードを表す場合について説明する。
【００４６】
この一例において、コードは、ロボット２０の動作を示すロボット動作情報を示す。ロボット動作情報は、例えば、ロボット２０の動作のうち、マーカーの位置及び姿勢に基づいて対象物Ｏを把持し、図示しない給材領域に給材する動作を示す情報である。ロボット動作情報を示すコードを表す４つのコード図形のそれぞれは、数ビットのコードを表す図形である。この一例では、コード図形が、１つで４ビットのコードを表す場合について説明する。すなわち、４つのコード図形は、全部で１６ビットのコードを表す。
【００４７】
なお、４つのコード図形が表わすコードは、ロボット動作情報として、ロボット２０の動作のうち、ロボット２０に対象物Ｏを加工させる動作等の他の動作を示す情報であってもよい。また、４つのコード図形が表わすコードは、ロボット動作情報に代えて、ロボット制御装置３０のディスプレイに表示させる文字列（例えば、マーカーが貼付された対象物Ｏに関する情報を示すコメント）を示す情報等の他の情報を示す構成であってもよい。
【００４８】
マーカーが有する第１図形及び第２図形が示すマーカーＭｋの位置及び姿勢は、対象物Ｏのロボット座標系における位置及び姿勢を示している。なお、マーカーＭｋの位置及び姿勢は、対象物Ｏのロボット座標系における位置及び姿勢を示す構成に代えて、ロボット２０が第１アームのＴＣＰや第２アームのＴＣＰを経由させる経由点の位置及び姿勢等の他の位置及び姿勢を示す構成であってもよい。
【００４９】
ここで、第１図形の図心は、第１図形の形状に基づいて検出され、第２図形の図心は、第２図形の形状に基づいて検出される。このため、第１図形の図心や第２図形の図心は、色付きの図形を含むマーカーを当該色に基づいて検出する場合に比べて、環境光の変化やマーカーＭｋの経時変化等の外的要因により誤検出されにくい。そこで、ロボット制御装置３０は、所定の作業をロボット２０に行わせる処理においてマーカーを検出する際、マーカーが有する第１図形と第２図形のうちの少なくとも第１図形を検出した後、第１図形の図心に基づいてデータ領域、すなわちデータ領域に含まれる４つのコード図形を検出する。これにより、ロボット制御装置３０は、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。以下では、マーカーを含む撮像画像から当該マーカーをロボット制御装置３０が検出する処理について詳しく説明する。
【００５０】
この一例において、作業領域内に貼付されたマーカーは、作業領域内の作業台ＴＢの上面に配置された対象物Ｏに貼付されているマーカーＭｋである。すなわち、ロボット制御装置３０は、第３撮像部２３及び第４撮像部２４が撮像した撮像画像からマーカーＭｋを検出する。この検出の際、ロボット制御装置３０は、マーカーＭｋが有する第１図形と第２図形である第１図形Ｆ１と第２図形Ｆ２のうちの少なくとも第１図形Ｆ１を検出した後、第１図形Ｆ１の図心に基づいてデータ領域、すなわちデータ領域に含まれる４つのコード図形を検出する。なお、図１では、図を簡略化するため、マーカーＭｋを対象物Ｏに貼付された黒い四角によって表している。また、マーカーＭｋは、これに代えて、作業領域内の対象物Ｏとは異なる他の物体や、作業台ＴＢの上面等に貼付される構成であってもよい。
【００５１】
データ領域を検出した後、ロボット制御装置３０は、検出したマーカーＭｋの位置及び姿勢を、対象物Ｏのロボット座標系における位置及び姿勢として算出する。そして、ロボット制御装置３０は、マーカーＭｋのデータ領域に含まれるコード図形が表わすコードに基づいて、算出した当該位置及び姿勢の対象物Ｏをロボット２０の第１アームに把持させ、図示しない給材領域に給材させる。なお、ロボット制御装置３０は、これに代えて、対象物Ｏを第２アームに把持させる構成であってもよく、対象物Ｏを第１アームと第２アームの両方に把持させる構成等の他の構成であってもよい。
【００５２】
＜ロボット制御装置３０のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。ロボット制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。また、ロボット制御装置３０は、通信部３４を介してロボット２０と通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。
【００５３】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報や画像、プログラム、図示しない給材領域の位置を示す情報等を格納する。
【００５４】
入力受付部３３は、例えば、キーボードやマウス、タッチパッド等を備えたティーチングペンダントや、その他の入力装置である。なお、入力受付部３３は、タッチパネルとして表示部３５と一体に構成されてもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００５５】
＜ロボット制御装置３０の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。ロボット制御装置３０は、記憶部３２と、制御部３６を備える。
【００５６】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、撮像制御部４０と、画像取得部４２と、画像処理部４４と、ロボット制御部４６を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、これらの機能部のうち一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００５７】
撮像制御部４０は、作業領域を含む撮像範囲を第３撮像部２３と第４撮像部２４にステレオ撮像させる。
画像取得部４２は、第３撮像部２３と第４撮像部２４がステレオ撮像した撮像画像を、第３撮像部２３と第４撮像部２４から取得する。
【００５８】
画像処理部４４は、画像取得部４２が取得した撮像画像に対して各種の画像処理を行う。画像処理部４４は、第１検出処理部５０と、第２検出処理部５１と、位置姿勢算出部５２と、コード検出部５３を備える。
【００５９】
第１検出処理部５０は、画像取得部４２が取得した撮像画像に基づいて、当該撮像画像に含まれるマーカーが有する当該マーカーの位置及び姿勢を示す１以上の図形（例えば、この一例における第１図形及び第２図形）を当該撮像画像から検出する。
第２検出処理部５１は、画像取得部４２が取得した撮像画像と、第１検出処理部５０が検出したマーカーの位置及び姿勢を示す１以上の図形とに基づいて、当該マーカーが有するデータ領域に含まれる１以上のコード図形を当該撮像画像から検出する。
【００６０】
位置姿勢算出部５２は、第１検出処理部５０が検出したマーカーの位置及び姿勢を示す図形に基づいて、当該マーカーの位置及び姿勢を、当該マーカーが貼付された対象物のロボット座標系における位置及び姿勢として算出する。
コード検出部５３は、第２検出処理部５１が検出したデータ領域に含まれる１以上のコード図形からコードを検出する。
【００６１】
ロボット制御部４６は、位置姿勢算出部５２が算出したマーカーの位置及び姿勢と、コード検出部５３が検出したコードとに基づいて所定の作業をロボット２０に行わせる。
【００６２】
＜制御部３６がロボット２０に所定の作業を行わせる処理の流れについて＞
以下、図４を参照し、制御部３６がロボット２０に所定の作業を行わせる処理について説明する。図４は、制御部３６がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。以下では、制御部３６が予め記憶部３２から給材領域の位置を示す情報を読み出している場合について説明する。なお、制御部３６は、ステップＳ１００からステップＳ１３０までの処理における任意のタイミングにおいて記憶部３２から給材領域の位置を示す情報を読み出す構成であってもよい。
【００６３】
撮像制御部４０は、図１に示した作業領域を含む撮像範囲を第３撮像部２３及び第４撮像部２４にステレオ撮像させる（ステップＳ１００）。次に、画像取得部４２は、ステップＳ１００において第３撮像部２３及び第４撮像部２４がステレオ撮像した撮像画像を第３撮像部２３及び第４撮像部２４から取得する（ステップＳ１１０）。次に、画像処理部４４が備える各機能部は、ステップＳ１１０において画像取得部４２が取得した撮像画像に基づいて、撮像画像に含まれるマーカーＭｋを検出するマーカー検出処理を実行する（ステップＳ１２０）。
【００６４】
次に、ロボット制御部４６は、ステップＳ１２０におけるマーカー検出処理の結果を画像処理部４４から取得する。そして、ロボット制御部４６は、マーカー検出処理の結果に基づいて、対象物Ｏを第１アームに把持させて図示しない給材領域に給材させる（ステップＳ１３０）。
【００６５】
ここで、ステップＳ１３０の処理について説明する。ステップＳ１２０におけるマーカー検出処理においてマーカーＭｋの検出が成功している場合、マーカー検出処理の結果には、マーカーＭｋの位置及び姿勢に基づいて算出された対象物Ｏのロボット座標系における位置及び姿勢と、マーカーＭｋのデータ領域に含まれる４つのコード図形が表わすコードとが含まれている。この場合、ロボット制御部４６は、当該位置及び姿勢と、当該コードとに基づいて、対象物Ｏを第１アームに把持させて図示しない給材領域に給材させる。その後、ロボット制御部４６は、処理を終了する。
【００６６】
一方、ステップＳ１２０におけるマーカー検出処理においてマーカーＭｋの検出が失敗している場合、マーカー検出処理の結果には、マーカーＭｋの検出に失敗したことを示す情報が含まれている。この場合、ロボット制御部４６は、ロボット２０を制御せず、処理を終了する。この際、ロボット制御部４６は、表示部３５にマーカーＭｋの検出に失敗したことを示す情報を表示する構成であってもよい。
【００６７】
＜マーカーの詳細＞
以下、ロボット制御装置３０が撮像画像から検出するマーカーの詳細について説明する。この一例におけるマーカー（例えば、マーカーＭｋ）は、マーカーの位置及び姿勢を示す図形である第１図形及び第２図形と、コードを表す４つのコード図形を含むデータ領域とを有する。また、この一例におけるマーカーは、第１図形と第２図形の間にデータ領域が配置される。ここで、図５〜図１２を参照し、この一例におけるマーカーについて説明する。
【００６８】
図５は、図１に示したマーカーＭｋの具体例を示す図である。この一例におけるマーカーは、当該マーカーの一例である図５に示したマーカーＭｋと同様に、３つの領域に分かれて構成される。そこで、ここでは、マーカーＭｋを例に挙げて説明する。マーカーＭｋは、マーカーＭｋの第１図形である第１図形Ｆ１を含む領域Ｗ１と、マーカーＭｋの第２図形である第２図形Ｆ２を含む領域Ｗ２と、データ領域Ｗ３との３つの領域に分かれている。データ領域Ｗ３には、コードを表す４つのコード図形が含まれている。ロボット制御装置３０は、第１図形Ｆ１と、第２図形Ｆ２と、コードを表す４つのコード図形とを、それぞれの図形の図心に基づいて検出する。
【００６９】
ここで、図形の図心について詳しく説明する。図６は、図形の図心を説明するための図である。図６には、輪郭が曲線によって形成された図形Ｆ０と、図形Ｆ０を構成する各点の位置を表すための二次元座標系と、当該各点の位置を示すベクトルｒ＿ｉとが示されている。ここで、図６では、ベクトルｒを、ｒの上に矢印を付帯させることによって表している。また、ベクトルｒ＿ｉの「＿」の後に付された「ｉ」は、図６に示したベクトルｒの下付き添え字ｉを示している。また、添え字ｉは、図形Ｆ０を構成する各点（例えば、画素）を区別するためのラベルである。また、図６において、二次元座標系の原点から図形Ｆ０へ伸びる矢印は、ベクトルｒ＿ｉの大きさ及び方向を表す矢印である。
【００７０】
図心は、云わば図形の中心である。図心は、１つの図形に対して１つのみ一意に決まる。図６に示した図形Ｆ０の図心の位置は、ベクトルｒ＿ｉを用いて、以下に示した式（１）によって定義されるベクトルｃによって表される。
【００７１】
【数１】
0006561757.tif 000002
【００７２】
式（１）において、ベクトルｃは、ｃの上に矢印を付帯させることによって表している。また、Ｎは、図形Ｆ０を構成する各点の数であり、１以上の整数である。すなわち、図６に示した図形Ｆ０の図心の位置は、図形Ｆ０を構成する各点の位置を表すベクトルの総和を、当該各点の数によって除したベクトル（Ｎ個のベクトルの平均）によって表される。なお、図６では、二次元の図形Ｆ０と、二次元の座標系と、二次元のベクトルとを用いて図心について説明したが、図心の位置は、三次元以上の図形に対しても上記の式（１）によって定義されるベクトルｃによって表される。
【００７３】
ここで、この一例における第１図形と第２図形のそれぞれは、３以上の図形の組み合わせによって構成される図形である図心マーカーである。また、図心マーカーは、図心マーカーを構成する３以上の図形それぞれの図心が所定の範囲内に収まる（含まれる）マーカーである。例えば、図形Ａ０と、図形Ｂ０と、図形Ｃ０との組み合わせによって構成される図心マーカーは、図形Ａ０の図形Ａ１と、図形Ｂ０の図心Ｂ１と、図形Ｃ０の図心Ｃ１とが所定の範囲内に収まる（含まれる）。所定の範囲は、例えば、半径が数画素程度の円形の範囲であるが、半径が１画素未満の円形の範囲であってもよく、半径が数画素以上の円形の範囲であってもよく、矩形等の円形とは異なる他の形状の範囲であってもよい。以下では、説明の便宜上、所定の範囲内に含まれる図心の数を、多重度と称して説明する。すなわち、図形Ａ０と、図形Ｂ０と、図形Ｃ０との組み合わせによって構成される図心マーカーは、多重度が３の図心マーカーである。なお、第１図形と第２図形のうちいずれか一方又は両方は、これに代えて、１以上の図形によって構成される図形であってもよい。
【００７４】
図７は、第１図形Ｆ１を図心マーカーの一例として示す図である。図７に示したように、図心マーカーを構成する３以上の図形は、二値化画像において白色又は黒色のみの部分領域として検出される。第１図形Ｆ１は、輪郭が円形状の白色の部分領域によって表される図形Ｆ１１と、輪郭がリング形状の黒色の部分領域によって表される図形Ｆ１２と、輪郭がリング形状の白色の部分領域によって表される図形Ｆ１３と、輪郭がリング形状の黒色の部分領域によって表される図形Ｆ１４との４つの図形によって構成されている。また、第１図形Ｆ１は、図形Ｆ１１と、図形Ｆ１２と、図形Ｆ１３と、図形Ｆ１４とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形Ｆ１１と、図形Ｆ１２と、図形Ｆ１３と、図形Ｆ１４との組み合わせによって構成される第１図形Ｆ１は、多重度が４の図心マーカーである。なお、第１図形Ｆ１における図形Ｆ１１〜図形Ｆ１４は、同心円であり、図心が当該同心円の中心に位置する。
【００７５】
図８は、第２図形Ｆ２を図心マーカーの他の例として示す図である。第２図形Ｆ２は、輪郭が円形状の黒色の部分領域によって表される図形Ｆ２１と、輪郭がリング形状の白色の部分領域によって表される図形Ｆ２２と、輪郭がリング形状の黒色の部分領域によって表される図形Ｆ２３との３つの図形によって構成されている。また、第２図形Ｆ２は、図形Ｆ２１と、図形Ｆ２２と、図形Ｆ２３とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形Ｆ２１と、図形Ｆ２２と、図形Ｆ２３との組み合わせによって構成される第２図形Ｆ２は、多重度が３の図心マーカーである。なお、第２図形Ｆ２における図形Ｆ２１〜図形Ｆ２３は、同心円であり、図心が当該同心円の中心に位置する。
【００７６】
図７及び図８に示した第１図形Ｆ１及び第２図形Ｆ２は、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成していた。しかし、図心マーカーは、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成するもののみに限られない。図９〜図１１に示した図心マーカーは、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成していない場合の例である。図９は、同心円を構成していない３つの図形によって構成される多重度が３の図心マーカーの一例を示す図である。図１０は、同心円を構成していない４つの図形によって構成される多重度が４の図心マーカーの一例を示す図である。図１１は、同心円を構成していない４つの図形によって構成される多重度が４の図心マーカーの他の例を示す図である。
【００７７】
この一例において、このような図心マーカーを第１図形や第２図形として有するマーカーが貼付された物体（例えば、図１に示した対象物Ｏ）の位置及び姿勢は、当該マーカーの第１図形の図心の位置及び姿勢によって表される。当該第１図形の図心の位置は、所定の範囲内に含まれる３以上の図心の位置を示すベクトルの総和を図心の数で除したベクトル（３以上のベクトルの平均）によって表される。なお、当該マーカーが貼付された物体の位置は、これに代えて、当該第１図形の図心の位置に対応付けられた他の位置（オフセットされた位置）によって表される構成であってもよい。また、図心マーカーを第１図形や第２図形として有するマーカーが貼付された物体の位置及び姿勢は、当該マーカーの第２図形の図心の位置及び姿勢によって表される構成であってもよい。
【００７８】
また、当該第１図形の図心の姿勢は、当該図心の位置における当該第１図形に対する法線方向をＺ軸とし、当該第１図形の図心及び第２図形の図心に基づいて決定される方向、又は当該第１図形の図心及びデータ領域に含まれる図形に基づいて決定される方向をＸ軸とし、当該Ｚ軸及びＸ軸に直交する方向をＹ軸とした３つの座標軸それぞれのロボット座標系における方向によって表される。なお、当該マーカーが貼付された物体の姿勢は、これに代えて、当該第１図形の図心の姿勢に対応付けられた他の姿勢（オフセットされた姿勢）によって表される構成であってもよい。
【００７９】
次に、コードを表す４つのコード図形について説明する。この一例において、これら４つのコード図形のそれぞれには、図１２に示した１６種類のコード図形である図形ＦＤ１〜図形ＦＤ１６のいずれかが用いられる。図１２は、ロボット制御装置３０が検出した４つのコード図形のそれぞれが１６種類のコード図形のいずれであるかをロボット制御装置３０が特定する処理の流れを示すフローチャートである。なお、コード図形には、ロボット制御装置３０が区別することが可能であれば、図１２に示した１６種類のコード図形のうちの一部又は全部に代えて、他のコード図形が含まれる構成であってもよい。また、コード図形は、１６種類に代えて、１５未満の種類であってもよく、１７以上の種類であってもよい。また、ロボット制御装置３０は、検出したコード図形のそれぞれを、図１２に示したフローチャートの処理に代えて、パターンマッチング等の他の処理のよって図１２に示した１６種類のコード図形のいずれであるかを特定する構成であってもよい。
【００８０】
また、この一例における１６種類のコード図形はそれぞれ、図１２に示したように、３２個の正方形状のセルが８行４列に並べられた領域における黒色の部分領域が表わす図形と、黒色の部分領域によって囲まれた白色の部分領域が表わす図形とによって構成される。また、当該コード図形のそれぞれでは、当該８行４列に並べられた３２個のセルのうちの図１２の矢印Ａ１１が示す左側から４列目に含まれる８個のセルがすべて白い。この一例において、ロボット制御装置３０は、コード図形において当該４列目に含まれる白いセルを含む白色の部分領域を、コード図形を構成する図形として検出しない。
【００８１】
まず、ロボット制御装置３０は、図形ＦＤ１〜図形ＦＤ１６のいずれであるかを特定する対象となるコード図形である対象コード図形を検出した後、対象コード図形を構成する図形の図心を検出する。そして、ロボット制御装置３０は、当該８行４列の領域内で検出した図心の多重度が１と２のいずれであるかを判定する（ステップＳ２００）。この判定により、ロボット制御装置３０は、対象コード図形が図形ＦＤ１〜図形ＦＤ３のいずれかであることと、対象コード図形が図形ＦＤ４〜図形ＦＤ１６のいずれかであることとのどちらであるかを判定する。
【００８２】
ステップＳ２００において図心の多重度が２であると判定した場合（ステップＳ２００−２）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１〜図形ＦＤ３のいずれかであることを特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する（ステップＳ２１０）。
【００８３】
ここで、ステップＳ２１０の処理について説明する。ステップＳ２１０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８以上２２未満の場合、当該面積が中であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が２２以上の場合、当該面積が大であると判定する。
【００８４】
この一例において、図形ＦＤ１は、黒いセルの数が１０であるため、ステップＳ２１０において面積が小と判定される。なお、図形ＦＤ１は、図１２に示したように、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が２である。図形ＦＤ２は、黒いセルの数が１８であるため、ステップＳ２１０において面積が中と判定される。なお、図形ＦＤ２は、図１２に示したように、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が２である。図形ＦＤ３は、黒いセルの数が２２であるため、ステップＳ２１０において面積が大と判定される。なお、図形ＦＤ３は、図１２に示したように、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっているため、多重度が２である。
【００８５】
すなわち、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２１０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１であると特定する。一方、対象コード図形の黒色の部分領域の面積が中であると判定した場合（ステップＳ２１０−中）、ロボット制御装置３０は、対象コード図形が図形ＦＤ２であると特定する。一方。対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２１０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ３であると特定する。
【００８６】
一方、ステップＳ２００において図心の多重度が１であると判定した場合（ステップＳ２００−１）、ロボット制御装置３０は、対象コード図形が図形ＦＤ４〜図形ＦＤ１６のいずれかであることを特定する。そして、ロボット制御装置３０は、ステップＳ２００において検出した対象コード図形の図心の数が１と２のいずれであるかを判定する（ステップＳ２２０）。この判定により、ロボット制御装置３０は、対象コード図形が図形ＦＤ４〜図形ＦＤ１０のいずれかであることと、対象コード図形が図形ＦＤ１１〜図形ＦＤ１６のいずれかであることとのどちらであるかを判定する。
【００８７】
ステップＳ２２０において図心の数が１であると判定した場合（ステップＳ２２０−１）、ロボット制御装置３０は、対象コード図形が図形ＦＤ４〜図形ＦＤ１０のいずれかであることを特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する（ステップＳ２３０）。
【００８８】
ここで、ステップＳ２３０の処理について説明する。ステップＳ２３０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が８未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が８以上１６未満の場合、当該面積が中であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１６以上の場合、当該面積が大であると判定する。
【００８９】
この一例において、図形ＦＤ４及び図形ＦＤ５は、黒いセルの数が８未満であるため、ステップＳ２３０において面積が小と判定される。なお、図形ＦＤ４における黒いセルの数は、２であり、図形ＦＤ５における黒いセルの数は、６である。また、図形ＦＤ４及び図形ＦＤ５は、図１２に示したように、１つの図形から構成されており、多重度が１である。図形ＦＤ６及び図形ＦＤ７は、黒いセルの数が８以上１６未満であるため、ステップＳ２３０において面積が中と判定される。なお、図形ＦＤ６における黒いセルの数は、１２であり、図形ＦＤ７における黒いセルの数は、８である。また、図形ＦＤ６及び図形ＦＤ７は、図１２に示したように、１つの図形から構成されており、多重度が１である。図形ＦＤ８〜図形ＦＤ１０は、黒いセルの数が１６以上であるため、ステップＳ２３０において面積が大と判定される。なお、図形ＦＤ８における黒いセルの数は、１６であり、図形ＦＤ９における黒いセルの数は、２０であり、図形ＦＤ１０における黒いセルの数は、２４である。また、図形ＦＤ８〜図形ＦＤ１０は、図１２に示したように、１つの図形から構成されており、多重度が１である。
【００９０】
すなわち、ステップＳ２３０において、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２３０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ４と図形ＦＤ５のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の縦横比の大小を判定する（ステップＳ２４０）。
【００９１】
ここで、ステップＳ２４０の処理について説明する。ステップＳ２４０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域を構成する黒いセルの縦方向に並んだ数を、当該黒いセルの横方向に並んだ数によって除した縦横比を算出する。この一例において、縦方向は、８行４列に並べられた３２個のセルの各列においてセルが８個並んでいる方向であり、横方向は、８行４列に並べられた３２個のセルの各行においてセルが４個並んでいる方向である。ロボット制御装置３０は、算出した縦横比が１以上である場合、当該縦横比が大であると判定する。また、ロボット制御装置３０は、算出した縦横比が１未満である場合、当該縦横比が小であると判定する。
【００９２】
この一例において、図形ＦＤ４は、黒いセルの縦方向に並んだ数が２であり、黒いセルの横方向に並んだ数が１であるため、ステップＳ２４０において縦横比が大であると判定される。図形ＦＤ５は、黒いセルの縦方向に並んだ数が２であり、黒いセルの横方向に並んだ数が３であるため、ステップＳ２４０において縦横比が小であると判定される。
【００９３】
すなわち、ステップＳ２４０において、対象コード図形の黒色の部分領域の縦横比が大であると判定した場合（ステップＳ２４０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ４であると特定する。一方、対象コード図形の黒色の部分領域の縦横比が小であると判定した場合（ステップＳ２４０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ５であると特定する。
【００９４】
一方、ステップＳ２３０において、対象コード図形の黒色の部分領域の面積が中であると判定した場合（ステップＳ２３０−中）、ロボット制御装置３０は、対象コード図形が図形ＦＤ６と図形ＦＤ７のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の縦横比の大小を判定する（ステップＳ２５０）。
【００９５】
ここで、ステップＳ２５０の処理について説明する。ステップＳ２５０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域を構成する黒いセルの縦方向に並んだ数を、当該黒いセルの横方向に並んだ数によって除した縦横比を算出する。ロボット制御装置３０は、算出した縦横比が８である場合、当該縦横比が大であると判定する。また、ロボット制御装置３０は、算出した縦横比が８未満である場合、当該縦横比が小であると判定する。
【００９６】
この一例において、図形ＦＤ７は、黒いセルの縦方向に並んだ数が４であり、黒いセルの横方向に並んだ数が３であるため、ステップＳ２５０において縦横比が小であると判定される。図形ＦＤ８は、黒いセルの縦方向に並んだ数が８であり、黒いセルの横方向に並んだ数が１であるため、ステップＳ２５０において縦横比が大であると判定される。
【００９７】
すなわち、ステップＳ２５０において、対象コード図形の黒色の部分領域の縦横比が小であると判定した場合（ステップＳ２５０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ７であると特定する。一方、対象コード図形の黒色の部分領域の縦横比が大であると判定した場合（ステップＳ２５０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ８であると特定する。
【００９８】
一方、ステップＳ２３０において、対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２３０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ８〜図形ＦＤ１０のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積が大中小のいずれであるかを判定する（ステップＳ２６０）。
【００９９】
ここで、ステップＳ２６０の処理について説明する。ステップＳ２６０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が２０未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が２０以上２４未満の場合、当該面積が中であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が２４以上の場合、当該面積が大であると判定する。
【０１００】
この一例において、図形ＦＤ８は、黒いセルの数が１６であるため、ステップＳ２６０において面積が小と判定される。図形ＦＤ９は、黒いセルの数が２０であるため、ステップＳ２６０において面積が中と判定される。図形ＦＤ１０は、黒いセルの数が２４であるため、ステップＳ２３０において面積が大と判定される。
【０１０１】
すなわち、ステップＳ２６０において、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２６０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ８であると特定する。一方、対象コード図形の黒色の部分領域の面積が中であると判定した場合（ステップＳ２６０−中）、ロボット制御装置３０は、対象コード図形が図形ＦＤ９であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２６０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１０であると特定する。
【０１０２】
一方、ステップＳ２２０において図心の数が２であると判定した場合（ステップＳ２２０−２）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１１〜図形ＦＤ１６のいずれかであることを特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積が当該左側から３列目の面積よりも大きいか、当該左側から１列目及び３列目の各面積が同じ大きさであるか、当該左側から３列目の面積が当該左側から１列目の面積よりも大きいかのいずれであるかを判定する（ステップＳ２７０）。
【０１０３】
ここで、ステップＳ２７０の処理について説明する。ステップＳ２７０において、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数が、当該左側から３列目の面積を構成する黒いセルの数よりも多い場合、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積が当該左側から３列目の面積よりも大きいと判定する。また、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数と、当該左側から３列目の面積を構成する黒いセルの数とが同じ場合、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目及び３列目の各面積が同じ大きさであると判定する。また、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から３列目の面積を構成する黒いセルの数が、当該左側から１列目の面積を構成する黒いセルの数よりも多い場合、対象コード図形の黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から３列目の面積が当該左側から１列目の面積よりも大きいと判定する。
【０１０４】
この一例において、図形ＦＤ１１及び図形ＦＤ１２は、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数が、当該左側から３列目の面積を構成する黒いセルの数よりも多いため、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積が当該左側から３列目の面積よりも大きいと判定される。なお、図形ＦＤ１１において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、２であり、当該左側から３列目の面積を構成する黒いセルの数は、８である。また、図形ＦＤ１２において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、６であり、当該左側から３列目の面積を構成する黒いセルの数は、８である。また、図形ＦＤ１１及び図形ＦＤ１２は、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が１で図心の数が２である。
【０１０５】
図形ＦＤ１３及び図形ＦＤ１４は、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数と、当該左側から３列目の面積を構成する黒いセルの数とが同じため、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目及び３列目の各面積が同じ大きさであると判定される。なお、図形ＦＤ１３において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、２であり、当該左側から３列目の面積を構成する黒いセルの数は、２である。また、図形ＦＤ１４において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、８であり、当該左側から３列目の面積を構成する黒いセルの数は、８である。また、図形ＦＤ１３及び図形ＦＤ１４は、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が１で図心の数が２である。
【０１０６】
図形ＦＤ１５及び図形ＦＤ１６は、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から３列目の面積を構成する黒いセルの数が、当該左側から１列目の面積を構成する黒いセルの数よりも多いため、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から３列目の面積が当該左側から１列目の面積よりも大きいと判定される。なお、図形ＦＤ１５において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、８であり、当該左側から３列目の面積を構成する黒いセルの数は、２である。また、図形ＦＤ１６において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積を構成する黒いセルの数は、８であり、当該左側から３列目の面積を構成する黒いセルの数は、６である。また、図形ＦＤ１５及び図形ＦＤ１６は、２つの図形から構成されており、それぞれの図形の図心が所定の範囲内に収まっていないため、多重度が１で図心の数が２である。
【０１０７】
すなわち、ステップＳ２７０において、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目の面積が当該左側から３列目の面積よりも大きいと判定した場合（ステップＳ２７０−３列目大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１１と図形ＦＤ１２のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積の大小を判定する（ステップＳ２８０）。
【０１０８】
ここで、ステップＳ２８０の処理について説明する。ステップＳ２８０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８以上の場合、当該面積が大であると判定する。
【０１０９】
この一例において、図形ＦＤ１１は、黒いセルの数が１０であるため、ステップＳ２８０において面積が小と判定される。図形ＦＤ１２は、黒いセルの数が１８であるため、ステップＳ２８０において面積が大と判定される。
【０１１０】
すなわち、ステップＳ２８０において、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２８０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１１であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２８０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１２であると特定する。
【０１１１】
一方、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から１列目及び３列目の各面積が同じ大きさであると判定した場合（ステップＳ２７０−同）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１３と図形１４のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積の大小を判定する（ステップＳ２９０）。
【０１１２】
ここで、ステップＳ２９０の処理について説明する。ステップＳ２９０において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１６未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１６以上の場合、当該面積が大であると判定する。
【０１１３】
この一例において、図形ＦＤ１３は、黒いセルの数が４であるため、ステップＳ２９０において面積が小と判定される。図形ＦＤ１４は、黒いセルの数が１６であるため、ステップＳ２９０において面積が大と判定される。
【０１１４】
すなわち、ステップＳ２９０において、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２９０−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１３であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２９０−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１４であると特定する。
【０１１５】
一方、黒色の部分領域の面積のうちの８行４列に並べられた３２個のセルにおける左側から３列目の面積が当該左側から１列目の面積よりも大きいと判定した場合（ステップＳ２７０−１列目大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１５と図形ＦＤ１６のいずれかであると特定する。そして、ロボット制御装置３０は、対象コード図形の黒色の部分領域の面積の大小を判定する（ステップＳ２９５）。
【０１１６】
ここで、ステップＳ２９５の処理について説明する。ステップＳ２９５において、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８未満の場合、当該面積が小であると判定する。また、ロボット制御装置３０は、対象コード図形における黒色の部分領域の面積を表す黒いセルの数が１８以上の場合、当該面積が大であると判定する。
【０１１７】
この一例において、図形ＦＤ１５は、黒いセルの数が１０であるため、ステップＳ２９５において面積が小と判定される。図形ＦＤ１６は、黒いセルの数が１８であるため、ステップＳ２９５において面積が大と判定される。
【０１１８】
すなわち、ステップＳ２９５において、対象コード図形の黒色の部分領域の面積が小であると判定した場合（ステップＳ２９５−小）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１５であると特定する。一方、対象コード図形の黒色の部分領域の面積が大であると判定した場合（ステップＳ２９５−大）、ロボット制御装置３０は、対象コード図形が図形ＦＤ１６であると特定する。
【０１１９】
このように、ロボット制御装置３０は、対象コード図形が１６種類のコード図形のいずれであるかを特定することができる。このため、図形ＦＤ１〜図形ＦＤ１６を順に１〜Ｆの１６進数と見做すことにより、コード図形は、１つで４ビットの情報を表すことができる。すなわち、データ領域に含まれる４つのコード図形は、１６ビットのコードを表すことができる。
【０１２０】
また、この一例におけるマーカー（例えば、マーカーＭｋ）において、データ領域に含まれる４つのコード図形のそれぞれは、第１図形の図心と第２図形の図心とを通る直線上に当該コード図形のそれぞれの図心が位置するように配置される。このようにすることで、ロボット制御装置３０は、第１図形の候補と第２図形の候補との間に複数の図形が存在する場合、これらの図形がこの一例におけるマーカーであるか否かを判定し、当該マーカーではない図形の組み合わせをマーカーであると誤検出してしまうことを抑制することができる。
【０１２１】
以上のように、この一例におけるマーカーは、第１図形及び第２図形と、４つのコード図形を含むデータ領域とを有する。これにより、当該マーカーは、第１図形を検出させた後、当該第１図形の図心に基づいてデータ領域を検出させることができ、その結果、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【０１２２】
＜図心マーカーの検出方法の概要＞
以下、本実施形態におけるロボット制御装置３０による図心マーカーの検出方法について説明する。
この一例において、これらロボット制御装置３０による図心マーカーの検出方法では、撮像画像から図心マーカーを検出する際、ロボット制御装置３０が、撮像画像をグレースケール画像に変換する（グレースケール化処理）。ロボット制御装置３０は、例えば、撮像画像のグレースケール化処理において、撮像画像を２５６階調のグレースケール画像に変換する。なお、ロボット制御装置３０は、撮像画像を２５６階調のグレースケール画像に変換する構成に代えて、他の階調のグレースケール画像に変換する構成であってもよい。
【０１２３】
そして、ロボット制御装置３０は、グレースケール化処理により撮像画像を変換したグレースケール画像を、二値化画像（白黒画像）に変換する（二値化処理）。二値化処理は、グレースケール画像上における所定の閾値（二値化の閾値）以上の輝度値の画素の色を白色に変換し、当該閾値未満の輝度値の画素を黒色に変換することによりグレースケール画像を二値化画像に変換する処理である。この一例において、二値化の閾値は、予め決められている。なお、二値化の閾値は、大津の方法等の撮像画像に基づく方法によって決められる他の構成であってもよい。ロボット制御装置３０は、二値化処理によりグレースケール画像を変換した二値化画像から図心マーカーを検出する。
【０１２４】
＜マーカー検出処理の流れについて＞
以下、図１３を参照し、図４に示したステップＳ１２０におけるマーカー検出処理について説明する。図１３は、図４に示したステップＳ１２０におけるマーカー検出処理の流れの一例を示すフローチャートである。
【０１２５】
画像処理部４４は、記憶部３２に予め記憶されたマーカー情報を記憶部３２から読み出す（ステップＳ３００）。この一例において、マーカー情報には少なくとも、マーカーを示す情報と、マーカーが有する第１図形及び第２図形のそれぞれを示す情報とを対応付けた情報が含まれている。例えば、マーカー情報には、マーカーＭｋを示す情報と、マーカーＭｋが有する第１図形Ｆ１及び第２図形Ｆ２のそれぞれを示す情報とを対応付けた情報が含まれている。
【０１２６】
マーカーを示す情報は、この一例において、マーカーＩＤである。なお、マーカーを示す情報は、これに代えて、マーカー名等のマーカーを識別可能な情報であれば他の情報であってもよい。第１図形及び第２図形のそれぞれを示す情報は、この一例において、第１図形及び第２図形のそれぞれをパターンマッチングによって検出するために用いられるモデル画像である。なお、第１図形及び第２図形のそれぞれを示す情報は、これに代えて、第１図形及び第２図形のそれぞれを撮像画像から検出する処理に用いることが可能な他の情報であってもよい。なお、ステップＳ３００の処理は、画像処理部４４が備える図３に示した各機能部のうちのいずれの機能部が行う構成であってもよく、画像処理部４４が備える図３に図示しない機能部が行う構成であってもよい。
【０１２７】
次に、画像処理部４４が備える各機能部は、ステップＳ３００において記憶部３２から読み出したマーカー情報に含まれるマーカーＩＤを１つずつ選択し、選択したマーカーＩＤが示すマーカーを対象マーカーとして、対象マーカー毎にステップＳ３２０からステップＳ３７０までの処理を繰り返し行う（ステップＳ３１０）。以下では、説明の便宜上、マーカー情報に含まれるマーカーＩＤは、マーカーＭｋを示すマーカーＩＤの１つのみである場合について説明する。この場合、画像処理部４４は、ステップＳ３２０からステップＳ３７０までの処理をマーカーＭｋに対して１回のみ行う。
【０１２８】
次に、第１検出処理部５０は、ステップＳ３１０において対象マーカーとして選択されたマーカーＭｋを示すマーカーＩＤに対応付けられた第１図形Ｆ１及び第２図形Ｆ２のそれぞれを示す情報を、マーカー情報から抽出する。そして、第１検出処理部５０は、抽出した当該第１図形Ｆ１及び第２図形Ｆ２のそれぞれを示す情報と、前述した図心マーカーの検出方法とに基づいて、図４に示したステップＳ１１０において画像取得部４２が取得した撮像画像から第１図形Ｆ１と第２図形Ｆ２のそれぞれを検出する（ステップＳ３２０）。
【０１２９】
ここで、ステップＳ３２０の処理について説明する。第１検出処理部５０は、撮像画像から３以上の多重度の図心マーカーを、第１図形Ｆ１及び第２図形Ｆ２の候補として検出する。データ領域に含まれる４つのコード図形の多重度（重なっている図心の数）は、最大で２であり、第１図形Ｆ１及び第２図形Ｆ２のそれぞれと比べて多重度が少ない。このため、第１検出処理部５０は、第１図形Ｆ１及び第２図形Ｆ２の候補として、これらのコード図形を誤検出してしまうことが抑制されている。第１検出処理部５０は、マーカー情報から抽出した第１図形Ｆ１及び第２図形Ｆ２それぞれのモデル画像に基づいて、第１図形Ｆ１及び第２図形Ｆ２の候補として検出した多重度が３以上の図心マーカーから、パターンマッチングにより第１図形Ｆ１及び第２図形Ｆ２を検出する。パターンマッチングの処理については、従来から知られている方法を用いるため、説明を省略する。
【０１３０】
次に、第２検出処理部５１は、ステップＳ３２０において第１検出処理部５０が撮像画像から検出した第１図形Ｆ１及び第２図形Ｆ２に基づいて、マーカーＭｋが有するデータ領域を検出する（ステップＳ３３０）。ここで、図１４及び図１５を参照し、ステップＳ３３０の処理について説明する。図１４は、マーカーＭｋが有する第１図形Ｆ１の図心、第２図形Ｆ２の図心、及びデータ領域に含まれる４つのコード図形それぞれの図心を例示する図である。図１４では、当該４つのコード図形は、図形ＦＤ５、図形ＦＤ１０、図形ＦＤ１６、図形ＦＤ１の順に第１図形Ｆ１から第２図形Ｆ２に向けて並んでいる。
【０１３１】
また、図１４に示したマーカーＭｋにおいて、前述したように、４つのコード図形である図形ＦＤ５の図心Ｃ５と、図形ＦＤ１０の図心Ｃ１０と、図形ＦＤ１６（２つの図心を有している）の図心Ｃ１６１及び図心Ｃ１６２と、図形ＦＤ１の図心Ｃ１とが、第１図形Ｆ１の図心Ｆ１Ｃと第２図形Ｆ２の図心Ｆ２Ｃとを結ぶ直線ＣＬ上に位置するように、図形ＦＤ５と、図形ＦＤ１０と、図形ＦＤ１６と、図形ＦＤ１とが配置されている。
【０１３２】
第２検出処理部５１は、マーカーＭｋが有するデータ領域として、ステップＳ３３０において検出された第１図形Ｆ１と第２図形Ｆ２の間に含まれる複数の図形を、４つのコード図形の候補として検出する処理を実行する。この処理において、第２検出処理部５１は、第１図形Ｆ１と第２図形Ｆ２の間に含まれる複数の図形の図心を算出する。そして、第２検出処理部５１は、第１図形Ｆ１の図心と第２図形Ｆ２の図心とを通る直線（すなわち、第１図形Ｆ１の図心と第２図形Ｆ２の図心とを結んだ方向）ＣＬ上に位置する図心を有する図形が４つ検出された場合、これら４つの図形をマーカーＭｋが有するデータ領域に含まれる４つのコード図形として検出する。
【０１３３】
ステップＳ３３０においてデータ領域を検出する処理が実行された後、第２検出処理部５１は、ステップＳ３３０においてデータ領域の検出に成功したか否かを判定する（ステップＳ３４０）。データ領域の検出に成功していない（失敗した）と判定した場合（ステップＳ３４０−Ｎｏ）、第２検出処理部５１は、ステップＳ３１０に遷移し、次のマーカーを選択する。この一例において、ステップＳ３１０において選択可能なマーカーは、マーカーＭｋのみであるため、第２検出処理部５１は、データ領域の検出に成功していないと判定した場合、マーカーの検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、データ領域の検出に成功したと第２検出処理部５１が判定した場合（ステップＳ３４０−Ｙｅｓ）、位置姿勢算出部５２は、ステップＳ３２０において検出した第１図形Ｆ１及び第２図形Ｆ２に基づいて、マーカーＭｋの位置及び姿勢を、対象物Ｏのロボット座標系における位置及び姿勢として算出する（ステップＳ３５０）。なお、撮像画像上の位置と、ロボット座標系における位置とは、事前にキャリブレーションにより対応付けられている。
【０１３４】
ここで、ステップＳ３５０の処理におけるマーカーＭｋの姿勢を算出する処理について説明する。位置姿勢算出部５２は、この一例において、第１図形Ｆ１の図心Ｆ１Ｃにおける第１図形Ｆ１に対する法線方向をＺ軸とし、第２図形Ｆ２の図心Ｆ２Ｃから第１図形Ｆ１の図心Ｆ１Ｃへ向かう方向をＸ軸とし、当該Ｚ軸と当該Ｘ軸とに直交する方向をＹ軸とすることにより、第１図形Ｆ１の姿勢をマーカーＭｋの姿勢（この一例において、対象物Ｏの姿勢）として算出する。なお、位置姿勢算出部５２は、これに代えて、第１図形Ｆ１の図心Ｆ１Ｃに基づく他の方法によってマーカーＭｋの姿勢を算出する構成であってもよい。
【０１３５】
ステップＳ３５０において対象物Ｏのロボット座標系における位置及び姿勢を算出された後、コード検出部５３は、ステップＳ３３０において第２検出処理部５１が検出したデータ領域、すなわち当該データ領域に含まれる４つのコード図形と、図１２に示したフローチャートの処理とに基づいて、これら４つのコード図形のそれぞれが図形ＦＤ１〜図形ＦＤ１６のいずれであるかを特定する。そして、コード検出部５３は、特定した４つのコード図形が表わすコードを検出する（ステップＳ３６０）。
【０１３６】
次に、コード検出部５３は、ステップＳ３６０において検出したコードが、適正な情報であるか否かを判定する（ステップＳ３７０）。適正な情報は、この一例において、エラーを含んでおらず、ロボット制御装置３０がロボット２０に動作させることが可能なロボット動作情報のことである。コード検出部５３は、当該コードが適正な情報ではないと判定した場合、マーカーＭｋの検出に失敗したことを示す情報をマーカー検出処理の結果として生成する。そして、画像処理部４４は、ステップＳ３１０に遷移し、次のマーカーを選択する。この一例において、ステップＳ３１０において選択可能なマーカーは、マーカーＭｋのみである。このため、画像処理部４４は、当該マーカー検出処理の結果を生成した後、処理を終了する。一方、当該コードが適正な情報であると判定した場合、コード検出部５３は、ステップＳ３５０において位置姿勢算出部５２が算出したマーカーＭｋの位置及び姿勢と、ステップＳ３６０において検出したコードとを含む情報を、マーカー検出処理の結果として生成する。そして、画像処理部４４は、ステップＳ３１０に遷移し、次のマーカーを選択する。この一例において、画像処理部４４は、当該マーカー検出処理の結果を生成した後、処理を終了する。
【０１３７】
このように、ロボット制御装置３０は、第１図形Ｆ１を検出した後、第１図形Ｆ１の図心Ｆ１Ｃに基づいてデータ領域を検出する。これにより、ロボット制御装置３０は、マーカーＭｋに対する外的要因によるマーカーＭｋの検出の失敗を抑制することができる。
【０１３８】
なお、図１３に示したフローチャートの処理では、マーカーＭｋを含む撮像画像の解像度が、データ領域に含まれる４つのコード図形それぞれを構成する３２個のセルを第２検出処理部５１によって区別できる程度であることを前提として説明した。第１検出処理部５０は、この前提を保証するため、図１３に示したフローチャートのステップＳ３２０の処理において、検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上であるか否かを判定する構成であってもよい。検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上ではないと第１検出処理部５０が判定した場合、画像処理部４４は、マーカーＭｋの検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上であると第１検出処理部５０が判定した場合、第２検出処理部５１は、図１３に示したフローチャートのステップＳ３３０の処理を実行する。所定の大きさは、例えば、検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方を構成する画素の数によって表され、撮像画像を撮像する撮像部の解像度に応じて決まる値である。
【０１３９】
＜実施形態の変形例１＞
以下、本発明の実施形態の変形例１について、図面を参照して説明する。上記の実施形態で説明した対象物Ｏに貼付されているマーカーは、マーカーＭｋに代えて、この一例において説明するマーカーＭｋ１であってもよい。つまり、実施形態の変形例１では、ロボット制御装置３０が、マーカーＭｋに代えて、マーカーＭｋ１を検出する。マーカーＭｋ１は、マーカーＭｋから第２図形Ｆ２のみを省略（削除）した構成のマーカーである。
【０１４０】
＜実施形態の変形例１におけるマーカーの詳細＞
図１５は、実施形態の変形例１におけるマーカーの一例を示す図である。図１５に示したように、マーカーＭｋ１は、マーカーＭｋと異なり、第２図形Ｆ２を有しておらず、第１図形Ｆ１のみを有している。すなわち、マーカーＭｋ１は、第２図形Ｆ２を有していないこと以外は、マーカーＭｋと同様の特徴を有する。図１５に示した例では、マーカーＭｋ１は、当該コード図形として、図形ＦＤ５と、図形ＦＤ１０と、図形ＦＤ１６と、図形ＦＤ１とをデータ領域に含んでいる。
【０１４１】
＜実施形態の変形例１におけるマーカー検出処理の流れについて＞
以下、実施形態の変形例１におけるマーカー検出処理の流れについて説明する。実施形態の変形例１では、画像処理部４４が図４に示したフローチャートにおいて、ステップＳ１２０の処理に代えて、以下で説明するステップＳ１２０ａの処理を行う。図１６は、実施形態の変形例１において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図１６において、ステップＳ３１０の処理と、ステップＳ３５０〜ステップＳ３７０の処理とは、図１３に示したステップＳ３１０の処理と、ステップＳ３５０〜ステップＳ３７０の処理と同様な処理であるため、説明を省略する。
【０１４２】
画像処理部４４は、記憶部３２に予め記憶された１以上のマーカーのそれぞれが有する第１図形を示す情報を含むマーカー情報を記憶部３２から読み出す（ステップＳ４００）。この一例において、マーカー情報には少なくとも、マーカーを示す情報と、マーカーが有する第１図形を示す情報とを対応付けた情報が含まれている。例えば、マーカー情報には、マーカーＭｋ１を示す情報と、マーカーＭｋ１が有する第１図形Ｆ１を示す情報を対応付けた情報が含まれている。以下では、説明の便宜上、マーカー情報には、当該情報のみが含まれている場合について説明する。
【０１４３】
次に、第１検出処理部５０は、ステップＳ３１０において対象マーカーとして選択したマーカーＭｋ１を示すマーカーＩＤに対応付けられた第１図形Ｆ１を示す情報を、マーカー情報から抽出する。そして、第１検出処理部５０は、抽出した第１図形Ｆ１を示す情報と、前述したマーカーの検出方法とに基づいて、図４に示したステップＳ１１０において画像取得部４２が取得した撮像画像から第１図形Ｆ１を検出する（ステップＳ４０５）。ステップＳ４０５における撮像画像から第１図形Ｆ１を検出する処理は、ステップＳ３２０において第１図形Ｆ１及び第２図形Ｆ２のうちの第１図形Ｆ１を検出する処理と同様なため説明を省略する。
【０１４４】
次に、第２検出処理部５１は、ステップＳ４０５において検出された第１図形Ｆ１の図心Ｆ１Ｃを起点とした探索方向を、所定の方向を０°として反時計回りに０°から３６０°までの範囲内から選択し、選択した探索方向毎にステップＳ４２０〜ステップＳ４３０の処理を繰り返し行う（ステップＳ４１０）。所定の方向は、例えば、撮像画像の撮像に用いられた撮像素子のＸ軸における正の方向である。なお、所定の方向は、これに代えて、ランダムに決められた方向等の他の方向であってもよい。また、探索方向は、第１図形の図心を通る方向の一例である。
【０１４５】
より具体的には、第２検出処理部５１は、所定の方向である０°を探索方向として選択してステップＳ４２０〜ステップＳ４３０の処理を行った後、０°に所定の角度ＡＧを足した方向（０°＋角度ＡＧ）を次のステップＳ４２０〜ステップＳ４３０の処理における探索方向として選択する。そして、第２検出処理部５１は、（０°＋角度ＡＧ）を探索方向としたステップＳ４２０〜ステップＳ４３０の処理を行った後、（０°＋角度ＡＧ）に所定の角度ＡＧを足した方向（０°＋２ＡＧ）を次のステップＳ４２０〜ステップＳ４３０の処理における探索方向として選択する。これを繰り返し、第２検出処理部５１は、０°〜３６０°の範囲内において選択された探索方向毎にステップＳ４２０〜ステップＳ４３０の処理を繰り返し行う。所定の角度は、例えば、０．１°である。なお、所定の角度は、これに代えて、他の角度であってもよい。
【０１４６】
ステップＳ４１０において探索方向が選択された後、第２検出処理部５１は、ステップＳ４０５において検出された第１図形Ｆ１の図心Ｆ１Ｃから、ステップＳ４１０において選択された探索方向に向かってデータ領域に含まれる４つのコード図形の検出を行う（ステップＳ４２０）。より具体的には、第２検出処理部５１は、ステップＳ４０５において検出された第１図形Ｆ１の図心Ｆ１Ｃから、ステップＳ４１０において選択された探索方向に向かってデータ領域に含まれる４つのコード図形の候補を検出する。第２検出処理部５１は、当該探索方向において当該候補となる４つの図形が検出された場合、当該４つの図形それぞれの図心を算出する。そして、第２検出処理部５１は、算出した図心がすべて、第１図形Ｆ１の図心Ｆ１Ｃから当該探索方向へと向かう直線上に位置している場合、検出した４つの図形をデータ領域に含まれる４つのコード図形であると特定する。
【０１４７】
次に、第２検出処理部５１は、ステップＳ４２０においてマーカーＭｋ１が有するデータ領域、すなわち当該データ領域に含まれる４つのコード図形の検出に成功したか否かを判定する（ステップＳ４３０）。４つのコード図形の検出に成功したと第２検出処理部５１が判定した場合（ステップＳ４３０−Ｙｅｓ）、位置姿勢算出部５２は、ステップＳ３５０に遷移し、マーカーＭｋ１の位置及び姿勢を対象物Ｏのロボット座標系における位置及び姿勢として算出する。一方、４つのコード図形の検出に成功していない（失敗した）と判定した場合（ステップＳ４３０−Ｎｏ）、第２検出処理部５１は、ステップＳ４１０に遷移し、未選択の探索方向から次の探索方向を選択する。
【０１４８】
図１７は、図１６に示したフローチャートにおけるステップＳ４１０〜ステップＳ４３０の処理の概要を視覚的に説明する図である。図１７に示したマーカーＭｋ１の図心Ｆ１Ｃからは、２本の矢印がそれぞれ互いに異なる方向に描かれている。当該２本の矢印のうちの１本である矢印Ｓ１は、図１７に示した座標系のＸ軸の正の方向へ図心Ｆ１Ｃから伸びている。一方、当該２本の矢印のうちの１本である矢印Ｓ２は、矢印Ｓ１から図心Ｆ１Ｃを中心として反時計回りに角度Ｒ１だけ回転した方向に伸びている。
【０１４９】
矢印Ｓ１は、図１７において、図１６に示したステップＳ４１０において最初に探索方向として選択される所定の方向を表している。図１７に示したように、矢印Ｓ１が示す方向には、マーカーＭｋ１が有するデータ領域に含まれる４つのコード図形は存在していない。このため、第２検出処理部５１は、探索方向を矢印Ｓ１の方向から反時計回りに変化させ、変化させた探索方向毎に当該コード図形の検出を行う。そして、第２検出処理部５１は、ステップＳ４１０において矢印Ｓ２の方向が選択された場合、当該コード図形を検出することができる。
【０１５０】
このように、ロボット制御装置３０は、対象物Ｏに貼付されているマーカーが、第２図形を有さない場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれる１以上のコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
【０１５１】
＜実施形態の変形例２＞
以下、本発明の実施形態の変形例２について、図面を参照して説明する。上記の実施形態で説明した対象物Ｏに貼付されているマーカーは、マーカーＭｋ及びマーカーＭｋ１に代えて、この一例において説明するマーカーＭｋ２であってもよい。つまり、実施形態の変形例２では、ロボット制御装置３０が、マーカーＭｋ及びマーカーＭｋ１に代えて、マーカーＭｋ２を検出する。マーカーＭｋ２は、マーカーＭｋが有するデータ領域に、４つのコード図形に代えて、以下で説明するコード図形ＦＣを１つのみ含む構成のマーカーである。
【０１５２】
＜実施形態の変形例２におけるマーカーの詳細＞
図１８は、実施形態の変形例２におけるマーカーの一例を示す図である。図１８に示したように、マーカーＭｋ２は、マーカーＭｋと異なり、データ領域Ｗ３にコード図形ＦＣを１つのみ有している。すなわち、マーカーＭｋ２は、データ領域Ｗ３に含まれるコード図形以外は、マーカーＭｋと同様の特徴を有する。コード図形ＦＣは、マーカーＭｋが有するデータ領域に含まれる４つのコード図形と異なり、１つでコードを表す。
【０１５３】
図１８に示した例では、コード図形ＦＣは、２４個の正方形状のセルが４行６列に並べられた二次元コードである。当該セルのそれぞれは、白いセル、又は黒いセルのいずれかである。また、コード図形ＦＣは、コード図形ＦＣを検出するための目印として使用する固定コードを含む。固定コードは、コード図形ＦＣを構成するセルのうちの色が固定された（色の変更を行わない）セルによって構成される。すなわち、この一例において、固定コードは、コード図形ＦＣが表わすコードの一部ではない。
【０１５４】
図１８に示した例では、固定コードを表すセルのうち、白いセルは、当該４行６列における１行１列目、１行３列目、１行５列目、３行１列目、４行５列目の５つである。また、当該固定コードを表すセルのうち、黒いセルは、当該４行６列における１行２列目、１行３列目、１行５列目、２行１列目、４行１列目の５つである。なお、固定コードを表す白いセル又は黒いセルは、これらに代えて、当該４行６列のうちの他の位置であってもよい。
【０１５５】
コード図形ＦＣは、当該４行６列のうちの固定コードを表すセルを除いた残りの１２個のセルの色のうち、白と黒を０と１の２進数と見做すことによって、１２ビットのコードを表す。すなわち、コード図形ＦＣが表わすコードは、これら１２個のセルによって全部が表わされる（前述したように、固定コードによってコードの一部を表さない）。図１８では、これら１２個のセルのそれぞれは、ハッチングされた領域ＣＤ１に含まれている。図１８に示したハッチングされた領域ＣＤ１において、これら１２個それぞれのセルの色は、省略している。
【０１５６】
＜実施形態の変形例２におけるマーカー検出処理の流れについて＞
以下、実施形態の変形例２におけるマーカー検出処理の流れについて説明する。実施形態の変形例２では、画像処理部４４が図４に示したフローチャートにおいて、ステップＳ１２０の処理に代えて、以下で説明するステップＳ１２０ｂの処理を行う。
【０１５７】
図１９は、実施形態の変形例２において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図１９において、ステップＳ３００〜ステップＳ３２０の処理と、ステップＳ３４０〜ステップＳ３５０の処理と、ステップＳ３７０の処理とは、図１３に示したステップＳ３００〜ステップＳ３２０の処理と、ステップＳ３４０〜ステップＳ３５０の処理と、ステップＳ３７０の処理と同様な処理であるため、説明を省略する。
【０１５８】
ステップＳ３２０において第１図形Ｆ１及び第２図形Ｆ２が検出された後、第２検出処理部５１は、当該第１図形Ｆ１及び第２図形Ｆ２に基づいて、マーカーＭｋ２が有するデータ領域を検出する（ステップＳ３３０ｂ）。ここで、ステップＳ３３０ｂの処理について説明する。第２検出処理部５１は、マーカーＭｋ２が有するデータ領域として、第１図形Ｆ１と第２図形Ｆ２の間に含まれる図形を、コード図形ＦＣの候補として検出する処理を実行する。この処理において、第２検出処理部５１は、第１図形Ｆ１と第２図形Ｆ２の間に含まれる図形から固定コードを探索（検出）する。そして、第２検出処理部５１は、当該図形から固定コードが検出された場合、この図形をマーカーＭｋ２が有するデータ領域に含まれるコード図形ＦＣとして検出する。なお、第２検出処理部５１は、固定コードを検出する際、固定コードのモデル図形を予め記憶部３２から読み出し、読み出した当該モデル図形を用いたパターンマッチングによって固定コードを検出する等の従来から知られた方法によって固定コードを検出する。
【０１５９】
ステップＳ３５０においてマーカーＭｋ２の位置及び姿勢が対象物Ｏのロボット座標系における位置及び姿勢として算出された後、コード検出部５３は、ステップＳ３３０ｂにおいて検出されたコード図形ＦＣから、固定コードである１２個のセルを除いた残りの１２個のセルそれぞれの位置及び色を検出することにより、コード図形ＦＣが表わすコードを検出する（ステップＳ３６０ｂ）。なお、ステップＳ３６０ｂにおけるコードの検出方法は、従来から知られている二次元コードの検出方法と同様なため、説明を省略する。
【０１６０】
このように、ロボット制御装置３０は、対象物Ｏに貼付されているマーカーが、マーカーＭｋ２と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
【０１６１】
なお、図１９に示したフローチャートの処理では、マーカーＭｋ２を含む撮像画像の解像度が、データ領域に含まれるコード図形ＦＣのセルそれぞれを第２検出処理部５１によって区別できる程度であることを前提として説明した。第１検出処理部５０は、この前提を保証するため、図１９に示したフローチャートのステップＳ３２０の処理において、検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上であるか否かを判定する構成であってもよい。検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上ではないと第１検出処理部５０が判定した場合、画像処理部４４は、マーカーＭｋ２の検出に失敗したことを示す情報をマーカー検出処理の結果として生成し、処理を終了する。一方、検出した第１図形Ｆ１及び第２図形Ｆ２のうちいずれか一方又は両方の大きさが所定の大きさ以上であると第１検出処理部５０が判定した場合、第２検出処理部５１は、図１９に示したフローチャートのステップＳ３３０ｂの処理を実行する。
【０１６２】
＜実施形態の変形例３＞
以下、本発明の実施形態の変形例３について、図面を参照して説明する。上記の実施形態で説明した対象物Ｏに貼付されているマーカーは、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ２に代えて、この一例において説明するマーカーＭｋ３であってもよい。つまり、実施形態の変形例３では、ロボット制御装置３０が、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ２に代えて、マーカーＭｋ３を検出する。マーカーＭｋ３は、マーカーＭｋ１が有するデータ領域に、４つのコード図形に代えて、実施形態の変形例２において説明したコード図形ＦＣを１つのみ含む構成のマーカーである。
【０１６３】
＜実施形態の変形例３におけるマーカーの詳細＞
図２０は、実施形態の変形例３におけるマーカーの一例を示す図である。図２０に示したように、マーカーＭｋ３は、マーカーＭｋ１と異なり、データ領域Ｗ３にコード図形ＦＣを１つのみ有している。すなわち、マーカーＭｋ３は、データ領域Ｗ３に含まれるコード図形以外は、マーカーＭｋ１と同様の特徴を有する。
【０１６４】
＜実施形態の変形例３におけるマーカー検出処理の流れについて＞
以下、実施形態の変形例３におけるマーカー検出処理の流れについて説明する。実施形態の変形例３では、画像処理部４４が図４に示したフローチャートにおいて、ステップＳ１２０の処理に代えて、以下で説明するステップＳ１２０ｃの処理を行う。
【０１６５】
図２１は、実施形態の変形例３において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図２１において、ステップＳ３１０の処理と、ステップＳ３５０〜ステップＳ３７０の処理と、ステップＳ４００の処理と、ステップＳ４０５の処理と、ステップＳ４３０の処理とは、図１７に示したステップＳ３１０の処理と、ステップＳ３５０〜ステップＳ３７０の処理と、ステップＳ４００の処理と、ステップＳ４０５の処理と、ステップＳ４３０の処理と同様な処理であるため、説明を省略する。
【０１６６】
ステップＳ４０５において第１図形Ｆ１が検出された後、第２検出処理部５１は、第１図形Ｆ１に基づいて、マーカーＭｋ３が有するデータ領域を検出する（ステップＳ４２０ｃ）。ここで、ステップＳ４２０ｃの処理について説明する。まず、第２検出処理部５１は、マーカーＭｋ３が有するデータ領域を検出するため、第１図形Ｆ１の周囲から、コード図形ＦＣの一部を、データ領域を示す目印として探索（検出）する処理を実行する。この一例において、当該目印は、コード図形ＦＣが有する固定コードの一部である。なお、当該目印は、固定コードの一部に代えて、固定コードの全部であってもよく、固定コードと異なるコード図形ＦＣの一部であってもよい。
【０１６７】
データ領域を示す目印は、この一例において、コード図形ＦＣを構成する４行６列に並べられたセルのうち、第１図形Ｆ１に最も近い列に含まれるセル、すなわち固定コードに含まれるセルのうちの１行１列目、２行１列目、３行１列目、４行１列目の４つのセル（固定コードの一部）である。図２２は、ステップＳ４２０ｃにおいて第２検出処理部５１が第１図形Ｆ１の周囲から探索するデータ領域を示す目印の一例を示す図である。図２２に示したように、当該目印は、コード図形ＦＣを構成する４行６列に並べられたセルのうち、第１図形Ｆ１に最も近い列、すなわち図２２に示した領域Ｗ５内の列に含まれる固定コードの一部である。
【０１６８】
また、第２検出処理部５１が探索する第１図形Ｆ１の周囲は、例えば、ステップＳ４０５において検出された第１図形Ｆ１の面積を所定値倍だけ拡げた場合に、拡げた当該面積に含まれる範囲の領域のことである。所定値は、例えば、４倍程度である。なお、所定値は、撮像画像から検出された第１図形Ｆ１に応じた値であってこの一例におけるデータ領域を示す目印（前述の固定コードの一部）を検出可能な値であれば、他の値であってもよい。なお、第２検出処理部５１は、当該目印を検出する際、当該目印となる固定コードの一部のモデル図形を予め記憶部３２から読み出し、読み出した当該モデル図形を用いたパターンマッチングによって当該目印を検出する等の従来から知られた方法によって当該目印を検出する。
【０１６９】
第２検出処理部５１は、データ領域を示す目印を検出した後、第１図形Ｆ１の図心Ｆ１Ｃから当該目印に向かう方向における所定の探索範囲からコード図形ＦＣが有する固定コードの全体を探索（検出）する処理を行う。そして、第２検出処理部５１は、当該探索範囲から固定コードが検出された場合、検出された固定コードを含む図形をコード図形ＦＣとして検出する。
【０１７０】
このように、ロボット制御装置３０は、対象物Ｏに貼付されているマーカーが、マーカーＭｋ３と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
【０１７１】
＜実施形態の変形例４＞
以下、本発明の実施形態の変形例４について、図面を参照して説明する。上記の実施形態で説明した対象物Ｏに貼付されているマーカーは、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ２、マーカーＭｋ３に代えて、この一例において説明するマーカーＭｋ４であってもよい。つまり、実施形態の変形例４では、ロボット制御装置３０が、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ２、マーカーＭｋ３に代えて、マーカーＭｋ４を検出する。
【０１７２】
＜実施形態の変形例４におけるマーカーの詳細＞
図２３は、実施形態の変形例４におけるマーカーの一例を示す図である。図２３に示したように、マーカーＭｋ４は、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ２、マーカーＭｋ３のそれぞれと異なり、第１図形Ｆ１と、第１図形Ｆ１の中に配置されたデータ領域ＣＲとを有する。図２３に示した例では、第１図形Ｆ１は、図心の多重度が４の図心マーカーである。
【０１７３】
また、図２３に示した例では、データ領域ＣＲは、第１図形Ｆ１を構成する４つの図形のうちの図２３に示した最も外側に配置された黒い四角の枠形状の図形と、図２３に示した当該図形の内側に配置された黒いリング状の図形との間の白い図形上の領域である。そして、データ領域ＣＲには、２つのコード図形が配置される。図２３に示した例では、これらのコード図形は、コード図形ＦＣ１及びコード図形ＦＣ２の２つである。
【０１７４】
また、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれは、９個の正方形状のセルが３行３列に並べられた二次元コードである。このため、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれは、当該３行３列に並べられた各セルの色（白又は黒）によって９ビットのコードを表すことができる。また、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれは、互いに異なる固定コードを有する。これらの固定コードは、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれを検出するための目印である。ロボット制御装置３０は、当該固定コードに基づいて、コード図形ＦＣ１とコード図形ＦＣ２のそれぞれを検出し、区別することができる。例えば、コード図形ＦＣ１が有する固定コードは、３行３列に並べられたセルのうちの１行１列目の黒いセル、２行１列目の白いセル、３行１列目の黒いセルの３つのセルであり、コード図形ＦＣ２が有する固定コードは、３行３列に並べられたセルのうちの２行１列目の黒いセル、２行２列目の白いセル、２行３列目の黒いセルの３つのセルである。なお、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれが有する固定コードのセルの位置は、これに代えて、他の位置であってもよい。また、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれが有する固定コードのセルの数は、これに代えて、他の数であってもよい。また、図２３では、図の簡略化のため、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれにおける固定コード以外のセル（コードを表すセル）をハッチングによって示し、当該セルそれぞれの色を省略している。
【０１７５】
＜実施形態の変形例４におけるマーカー検出処理の流れについて＞
以下、実施形態の変形例４におけるマーカー検出処理の流れについて説明する。実施形態の変形例４では、画像処理部４４が図４に示したフローチャートにおいて、ステップＳ１２０の処理に代えて、以下で説明するステップＳ１２０ｄの処理を行う。
【０１７６】
図２４は、実施形態の変形例４において画像処理部４４が実行するマーカー検出処理の流れの一例を示すフローチャートである。なお、図２４において、ステップＳ３１０の処理と、ステップＳ３４０の処理と、ステップＳ３６０ｂの処理と、ステップＳ３７０の処理と、ステップＳ４００の処理とは、図１９に示したステップＳ３１０の処理とステップＳ３４０の処理とステップＳ３６０ｂの処理とステップＳ３７０の処理、及び図１６に示したステップＳ４００の処理と同様な処理であるため、説明を省略する。
【０１７７】
ステップＳ３１０においてマーカーＭｋ４が対象マーカーとして選択された後、第１検出処理部５０は、マーカーＭｋ４を示すマーカーＩＤに対応付けられた第１図形Ｆ１を示す情報を、マーカー情報から抽出する。そして、第１検出処理部５０は、抽出した第１図形Ｆ１を示す情報と、前述した図心マーカーの検出方法とに基づいて、図４に示したステップＳ１１０において画像取得部４２が取得した撮像画像から第１図形Ｆ１を検出する（ステップＳ３２０ｄ）。
【０１７８】
ここで、ステップＳ３２０ｄの処理について説明する。第１検出処理部５０は、撮像画像から３以上の多重度の図心マーカーを、第１図形Ｆ１として検出する。第２検出処理部５１は、データ領域に含まれるコード図形ＦＣ１及びコード図形ＦＣ２の図心の位置が、第１図形Ｆ１を構成する４つの図形それぞれの図心の位置とともに所定の範囲内に収まらないため、第１図形Ｆ１を検出する際においてコード図形ＦＣ１及びコード図形ＦＣ２を無視することができる。また、第１検出処理部５０は、コード図形ＦＣ１及びコード図形ＦＣ２のそれぞれの図心の多重度が１であるため、コード図形ＦＣ１及びコード図形ＦＣ２を第１図形Ｆ１として誤検出することがない。
【０１７９】
次に、第２検出処理部５１は、ステップＳ３２０ｄにおいて検出された第１図形Ｆ１に基づいて、マーカーＭｋ４が有するデータ領域、すなわち当該データ領域が有するコード図形ＦＣ１及びコード図形ＦＣ２のそれぞれを検出する（ステップＳ３３０ｄ）。ここで、ステップＳ３３０ｄの処理について説明する。第２検出処理部５１は、ステップＳ３２０ｄにおいて検出された第１図形Ｆ１の内側を探索し、コード図形ＦＣ１が有する固定コードを検出する。第２検出処理部５１は、第１図形Ｆ１の図心Ｆ１Ｃから当該固定コードの方向に向かって、コード図形ＦＣ１が有するコードであって固定コードと異なる他のコードを探索し、コード図形ＦＣ１の全体を検出する。また、第２検出処理部５１は、ステップＳ３２０ｄにおいて検出された第１図形Ｆ１の内側を探索し、コード図形ＦＣ２が有する固定コードを検出する。第２検出処理部５１は、第１図形Ｆ１の図心Ｆ１Ｃから当該固定コードの方向に向かって、コード図形ＦＣ２が有するコードであって固定コードと異なる他のコードを探索し、コード図形ＦＣ２の全体を検出する。
【０１８０】
ステップＳ３４０においてデータ領域の検出に成功したと判定された後、位置姿勢算出部５２は、第１図形Ｆ１の図心Ｆ１Ｃに基づいて、マーカーＭｋ４の位置及び姿勢を算出する（ステップＳ３５０ｄ）。ここで、ステップＳ３５０ｄの処理においてマーカーＭｋ４の姿勢を算出する処理について説明する。位置姿勢算出部５２は、この一例において、第１図形Ｆ１の図心Ｆ１Ｃにおける第１図形Ｆ１に対する法線方向をＺ軸とし、ステップＳ３３０ｄにおいて第１図形Ｆ１の内側から検出されたコード図形ＦＣ２からコード図形ＦＣ１へと向かう方向をＸ軸とし、当該Ｚ軸と当該Ｘ軸とに直交する方向をＹ軸とすることにより、第１図形Ｆ１の姿勢をマーカーＭｋ４の姿勢（この一例において、対象物Ｏの姿勢）として算出する。
【０１８１】
このように、ロボット制御装置３０は、対象物Ｏに貼付されているマーカーが、マーカーＭｋ４と同様の特徴を有するマーカーであった場合であっても、マーカーの位置及び姿勢と、マーカーが有するデータ領域に含まれるコード図形が示すコードとを検出することができ、実施形態と同様の効果を得ることができる。
【０１８２】
なお、この一例において、コード検出部５３は、コード図形ＦＣ１とコード図形ＦＣ２それぞれにおいて対応するセルの面積を積分し、積分値をコードとして検出する構成等の他の構成であってもよい。
【０１８３】
＜実施形態及び実施形態の変形例１〜３における歪の補正について＞
上記で説明した実施形態及び実施形態の変形例１〜３において、第１検出処理部５０が撮像画像から検出した第１図形Ｆ１、又は第１図形Ｆ１及び第２図形Ｆ２のそれぞれが歪んでいる場合、すなわち撮像画像から検出しようとしているマーカーが撮像画像中において歪んでいる場合がある。
【０１８４】
例えば、マーカーＭｋ２の表面が撮像部の光軸に対して傾いている状態で当該撮像部により撮像された場合、マーカーＭｋ２は、撮像画像中において歪んでしまう。すなわち、マーカーＭｋ２の表面が当該光軸に対して斜めに撮像されてしまう。マーカーＭｋ２の表面は、第１図形Ｆ１が描かれている側の面のことである。マーカーＭｋ２が歪んで撮像された撮像画像は、アフィン変換（アフィンワープ）によってマーカーＭｋ２が歪んでいない画像へと補正を行う（変換する）ことができる場合がある。
【０１８５】
例えば、上記で説明した撮像画像中のマーカーＭｋ２が、撮像画像全体の大きさに比べて十分に小さい場合、マーカーＭｋ２が歪んで撮像された撮像画像は、アフィン変換によって近似的にマーカーＭｋ２が歪んでいない画像へと補正可能である。なお、マーカーＭｋ２が歪んで撮像された撮像画像は、撮像画像全体でもよく、撮像画像中のマーカーＭｋ２を含む一部であってもよい。このような場合、第２検出処理部５１は、マーカーＭｋ２が有するデータ領域を検出する際、アフィン変換によってマーカーＭｋ２が歪んで撮像された撮像画像を、マーカーＭｋ２が歪んでいない画像へと補正する。
【０１８６】
ここで、撮像画像中においてアフィン変換によって補正可能な程度に歪んでいるマーカーＭｋ２が有する第１図形Ｆ１及び第２図形Ｆ２それぞれの画像は、円形状ではなく楕円形状となっている。図２５は、撮像画像中においてアフィン変換によって補正可能な程度に歪んでいるマーカーＭｋ２の一例を示す図である。なお、図２５において、マーカーＭｋ２が有する第２図形Ｆ２を省略している。図２５に示したマーカーＭｋ２が歪んで撮像された撮像画像を補正するため、第２検出処理部５１は、撮像画像中において円形状から楕円形状に歪んでいる第１図形Ｆ１の長径ＭＡ１と短径ＭＡ２とのそれぞれの方向を主軸方向として算出し、当該長径と当該短径との長さの比を主軸比として算出する。そして、第１検出処理部５０は、当該主軸方向及び当該主軸比と、幾何学とに基づいて第１図形Ｆ１の図心Ｆ１Ｃにおける第１図形Ｆ１に対する法線方向Ｎ１を算出する。
【０１８７】
法線方向Ｎ１は、図２５に示した三次元座標系により位置及び姿勢が表わされる仮想的な三次元空間における方向である。図２５において。当該三次元座標系のＺ軸方向は、撮像画像中においてマーカーＭｋ２が歪んでいない場合に法線方向Ｎ１が向く方向に一致させている。第２検出処理部５１は、法線方向Ｎ１が、図２６に示したように当該三次元座標系のＺ軸方向に一致するように、法線方向Ｎ１に基づいてアフィン変換を行い、マーカーＭｋ２が歪んで撮像された撮像画像中の第１図形Ｆ１を、前述したこの一例における第１図形Ｆ１を示す情報である第１図形Ｆ１のモデル画像に近似的に一致させる。図２６は、歪んでいないマーカーＭｋ２の法線方向Ｎ１の一例を示す図である。これにより、当該撮像画像は、マーカーＭｋ２が略歪んでいない（近似的に歪んでいない）画像に補正される。その結果、第２検出処理部５１は、補正された当該画像からデータ領域を精度よく検出することができる。
【０１８８】
しかし、マーカーＭｋ２が歪んで撮像された撮像画像は、アフィン変換によって補正できない場合がある。このような場合、第２検出処理部５１は、アフィン変換に代えて、当該撮像画像にホモグラフィー変換（ホモグラフィーワープ）を行うことにより、当該撮像画像をマーカーＭｋ２が歪んでいない画像へと補正する。
【０１８９】
この場合、第２検出処理部５１は、前述したアフィン変換を行う場合と同様に、第１図形Ｆ１の図心Ｆ１Ｃにおける法線方向Ｎ１を算出する。また、第２検出処理部５１は、図１９に示したフローチャートにおけるステップＳ３３０ｂにおいて説明したように、コード図形ＦＣの目印を検出し、コード図形ＦＣの全体を検出する。また、第２検出処理部５１は、ホモグラフィー変換の初期値を設定する。
【０１９０】
ホモグラフィー変換の初期値を設定した後、第２検出処理部５１は、マーカーＭｋ２が歪んで撮像された撮像画像に対してバイリニア補間処理を行うことによって当該撮像画像を正規化する。第２検出処理部５１は、正規化した当該撮像画像と、非線形最適化法（ＥＳＭ）と、前述の第１図形Ｆ１のモデル画像とに基づいて、マーカーＭｋ２が歪んで撮像された撮像画像中の第１図形Ｆ１と、前述したこの一例における第１図形Ｆ１を示す情報である第１図形Ｆ１のモデル画像とのマッチング誤差が最小となるホモグラフィー変換の係数を導出する。そして、第２検出処理部５１は、当該マッチング誤差が所定の誤差値以下である場合、歪んでいないマーカーＭｋ２の画像が得られたと判断する。なお、当該マッチング誤差が所定の誤差値以下ではない場合、歪んでいないマーカーＭｋ２の画像が得られていないと判断し、前述のバイリニア補間処理からマッチング誤差が最小となるホモグラフィー変換の係数の導出までの処理を繰り返し行う。
【０１９１】
このようなホモグラフィー変換により得られた画像であってマーカーＭｋ２が歪んでいない画像を用いることで、コード検出部５３は、マーカーＭｋ２が有するデータ領域に含まれるコード図形ＦＣに基づいて、高い精度でコードを検出することができる。
【０１９２】
マーカーＭｋ２が歪んで撮像された撮像画像をマーカーＭｋ２が歪んでいない画像へとホモグラフィー変換を行う場合、アフィン変換を行う場合と比べてＥＳＭを用いた繰り返し処理が必要となるため、マーカーＭｋ２を検出するために要する時間が長くなる。ホモグラフィー変換は、アフィン変換を行う場合と比べて歪んだ画像を歪んでいない画像へと補正する際の誤差が小さいため、マーカーＭｋ２の検出精度が高くなる。なお、上記のアフィン変換やホモグラフィー変換は、マーカーＭｋ２に対する適用に限定されず、マーカーＭｋ、マーカーＭｋ１、マーカーＭｋ３のいずれに対しても適用可能である。
【０１９３】
なお、検出するマーカーがマーカーＭｋ又はマーカーＭｋ１の場合、撮像画像中の当該マーカーがアフィン変換によって補正可能な程度に歪んでいたとしても、第２検出処理部５１は、アフィン変換を用いずとも、当該マーカーが有するデータ領域を検出することができる。図２７は、マーカーＭｋがアフィン変換によって補正可能な程度に歪んで撮像された場合の撮像画像中のマーカーＭｋの一例を示す図である。
【０１９４】
図２７に示したように、マーカーＭｋが歪んで撮像された場合であっても、マーカーＭｋが有する４つのコード図形のそれぞれの図心（図心Ｃ５、図心Ｃ１０、図心Ｃ１６１及び図心Ｃ１６２、図心Ｃ１）は、第１図形Ｆ１の図心Ｆ１Ｃと第２図形Ｆ２の図心Ｆ２Ｃとを通る直線ＣＬ上からずれていない。
【０１９５】
このことから、第２検出処理部５１は、撮像画像中のマーカーＭｋにアフィン変換によって補正可能な程度に歪んでいた場合であっても、図１４において説明した方法によって、第１図形Ｆ１と第２図形Ｆ２の間に含まれる複数の画像が、マーカーＭｋのデータ領域に含まれる４つのコード図形のそれぞれであるか否かを判定することができる。
【０１９６】
＜実施形態の変形例４における歪の補正について＞
上記で説明した実施形態の変形例４において、第１検出処理部５０が撮像画像から検出した第１図形Ｆ１が歪んでいる場合、すなわち撮像画像から検出しようとしているマーカーが撮像画像中において歪んでいる場合がある。
【０１９７】
例えば、マーカーＭｋ４の表面が撮像部の光軸に対して傾いている状態で当該撮像部により撮像された場合、マーカーＭｋ４は、撮像画像中において歪んでしまう。すなわち、マーカーＭｋ４の表面が当該光軸に対して斜めに撮像されてしまう。マーカーＭｋ４の表面は、第１図形Ｆ１が描かれている側の面のことである。マーカーＭｋ４が歪んで撮像された撮像画像は、アフィン変換（アフィンワープ）によってマーカーＭｋ４が歪んでいない画像へと補正を行う（変換する）ことができる場合がある。
【０１９８】
例えば、上記で説明した撮像画像中のマーカーＭｋ４が、撮像画像全体の大きさに比べて十分に小さい場合、前述したマーカーＭｋ２が歪んで撮像された撮像画像をアフィン変換によってマーカーＭｋ２が歪んでいない画像へと補正したように、マーカーＭｋ４が歪んで撮像された撮像画像は、アフィン変換によって近似的にマーカーＭｋ４が歪んでいない画像へと補正可能である。なお、マーカーＭｋ４が歪んで撮像された撮像画像は、撮像画像全体でもよく、撮像画像中のマーカーＭｋ４を含む一部であってもよい。このような場合、第２検出処理部５１は、マーカーＭｋ４が有するデータ領域を検出する際、アフィン変換によってマーカーＭｋ４が歪んで撮像された撮像画像を、マーカーＭｋ４が歪んでいない画像へと補正する。
【０１９９】
しかし、マーカーＭｋ４が歪んで撮像された撮像画像をマーカーＭｋ４が歪んでいない画像へと補正するためには、更にラドン変換を行わなければならない場合がある。ここで、第２検出処理部５１がラドン変換を行う処理の流れについて説明する。なお、マーカーＭｋ４が歪んで撮像された撮像画像に対してアフィン変換を行う場合についての処理は、上記のマーカーＭｋ２が歪んで撮像された撮像画像についてアフィン変換を行う場合についての処理と同様の処理であるため、説明を省略する。
【０２００】
第２検出処理部５１は、アフィン変換によってマーカーＭｋ４が近似的に歪んでいない画像が得られた後、当該画像と前述の第１図形Ｆ１のモデル画像とが一致している度合（類似度）を表すピークの検出を実行する。当該ピークが検出されない場合、第２検出処理部５１は、マーカーＭｋ４が歪んで撮像された撮像画像をマーカーＭｋ４が歪んでいない画像へと補正することが困難であると判定し、歪みの補正の処理を終了する。この場合、第２検出処理部５１は、マーカーＭｋ４の検出に失敗したことを示す情報を生成する。
【０２０１】
一方、当該ピークが検出された場合、第２検出処理部５１は、当該ピークに基づいて、マーカーＭｋ４のコード図形ＦＣ２からコード図形ＦＣ１に向かう方向に対して、所定の角度範囲のラドン変換を行い、アフィン変換によって得られたマーカーＭｋ４が近似的に歪んでいない画像と、前述の第１図形Ｆ１のモデル画像との類似度であるピークが最大となるように角度及び大きさ（スケール）の補正を行う。また、第２検出処理部５１は、当該ピークに基づいて、マーカーＭｋ４のコード図形ＦＣ２からコード図形ＦＣ１に向かう方向と直交する方向に対して、所定の角度範囲のラドン変換を行い、アフィン変換によって得られたマーカーＭｋ４が近似的に歪んでいない画像と、前述の第１図形Ｆ１のモデル画像との類似度であるピークが最大となるように角度及び大きさ（スケール）の補正を行う。
【０２０２】
このようなラドン変換により得られた画像であってマーカーＭｋ４が歪んでいない画像を用いることで、コード検出部５３は、マーカーＭｋ４が有するデータ領域に含まれるコード図形ＦＣ１及びコード図形ＦＣ２に基づいて、高い精度でコードを検出することができる。
【０２０３】
＜コード図形が示すコードの誤り訂正について＞
上記で説明した実施形態の変形例２〜４に係るマーカー（マーカーＭｋ１〜マーカーＭｋ４のそれぞれ）が有するコード図形（コード図形ＦＣ、コード図形ＦＣ１及びコード図形ＦＣ２）には、固定コードに加えて、チェックビット、又はハミングコードを含む構成であってもよい。例えば、当該コード図形が表わす１６ビットの情報のうち、１１ビットの情報によってコードを示し、残りの５ビットをハミングコードに用いることによって、１ビット誤りの訂正、２ビット誤りの検出を行うことができる。ここでは、マーカーＭｋ３及びマーカーＭｋ４を例に挙げて説明する。なお、以下で説明する内容は、マーカーＭｋ２に対しても適用可能である。
【０２０４】
図２８は、マーカーＭｋ３及びマーカーＭｋ４に関する情報の一例を示す表である。図２８に示したように、マーカーＭｋ３は、例えば、１０ｍｍ×２８ｍｍや、７ｍｍ×２０ｍｍ、５ｍｍ×１４ｍｍという大きさ（サイズ）で作成される。なお、マーカーＭｋ３のサイズは、他のサイズであってもよい。このようなマーカーＭｋ３が有するコード図形ＦＣのコードを表すビット数を、チェックビットを用いずに１２ビットにした場合、誤り訂正可能なビット数は０である。一方、当該マーカーＭｋ３が有するコード図形ＦＣのコードを表すビット数を、１つのチェックビットを用いて１１ビットにした場合、誤り訂正可能なビット数は１である。
【０２０５】
また、図２８に示したように、マーカーＭｋ４は、例えば、１０ｍｍ×２１ｍｍや、７ｍｍ×１５ｍｍ、５ｍｍ×１１ｍｍという大きさ（サイズ）で作成される。なお、マーカーＭｋ４のサイズは、他のサイズであってもよい。このようなマーカーＭｋ４が有するコード図形ＦＣ１及びコード図形ＦＣ２のコードを表すビット数を、チェックビット又はハミングコードを用いずに１８ビットにした場合、誤り訂正可能なビット数は０である。一方、当該マーカーＭｋ４が有するコード図形ＦＣ１及びコード図形ＦＣ２のコードを表すビット数を、２つのチェックビットを用いて１６ビットにした場合、誤り訂正可能なビット数は２である。一方、当該マーカーＭｋ４が有するコード図形ＦＣ１及びコード図形ＦＣ２のコードを表すビット数を、５ビットのハミングコードを用いて１１ビットにした場合、誤り訂正可能なビット数は７である。
【０２０６】
以上説明したように、実施形態におけるロボット２０のロボット制御装置３０（又はロボット制御装置３０と別体の画像処理装置）は、第１図形（この一例において、第１図形Ｆ１）を検出した後、当該第１図形の図心（この一例において、図心Ｆ１Ｃ）に基づいてデータ領域を検出する。これにより、ロボット制御装置３０は、マーカー（例えば、本実施形態におけるマーカーＭｋ、マーカーＭｋ１〜マーカーＭｋ４のそれぞれ）に対する外的要因によるマーカーの検出の失敗を抑制することができる。
【０２０７】
また、ロボット制御装置３０は、第１図形の図心を通る方向（この一例において、探索方向）に基づいて、データ領域を検出する。これにより、ロボット制御装置３０は、データ領域が表わす情報に基づく処理を行うことができる。
【０２０８】
また、ロボット制御装置３０は、第１図形の図心を中心として当該第１図形の図心を通る方向を変化させて、データ領域を検出する。これにより、ロボット制御装置３０は、第１図形が当該第１図形の図心を通る方向を示していない場合であっても、データ領域を検出することができる。
【０２０９】
また、ロボット制御装置３０は、第１図形を検出した後、当該第１図形と比べて重なっている図心の数が少ない図形（この一例において、コード図形ＦＤ１〜コード図形ＦＤ１６、コード図形ＦＣ、コード図形ＦＣ１、コード図形ＦＣ２）を有するデータ領域を検出する。これにより、ロボット制御装置３０は、データ領域が有する図形を第１図形として誤検出してしまうことを抑制することができる。
【０２１０】
また、ロボット制御装置３０は、第１図形及び第２図形（この一例において、第２図形Ｆ２）を検出した後、当該第１図形の図心と当該第２図形の図心（この一例において、図心Ｆ２Ｃ）とに基づいてデータ領域を検出する。これにより、ロボット制御装置３０は、第１図形の図心を通る方向に基づいて、より確実にデータ領域を検出することができる。
【０２１１】
また、ロボット制御装置３０は、第１図形の図心と、第２図形の図心とを結んだ方向に基づいて、データ領域を検出する。これにより、ロボット制御装置３０は、第１図形の図心と、第２図形の図心とを結んだ方向に基づいて、より早くにデータ領域を検出することができる。
【０２１２】
また、実施形態におけるマーカー（例えば、マーカーＭｋ、マーカーＭｋ１〜マーカーＭｋ４のそれぞれ）は、第１図形を検出させた後、当該第１図形の図心に基づいてデータ領域を検出させる。これにより、マーカーは、マーカーに対する外的要因によるマーカーの検出の失敗を抑制することができる。
【０２１３】
また、マーカーは、第１図形と第２図形を検出させた後、当該第１図形の図心と当該第２図形の図心とに基づいてデータ領域を検出させる。これにより、マーカーは、より確実にデータ領域を検出させることができる。
【０２１４】
なお、制御部３６のうちの画像処理部４４は、画像処理装置としてロボット制御装置３０と別体であってもよい。この場合、ロボット２０と、ロボット制御装置３０と、当該画像処理装置とは、ロボットシステムを構成する。また、この場合、画像処理装置は、検出したマーカーに基づく情報をロボット制御装置３０とは異なる他の装置へと出力し、例えば、ＡＲ（Augmented  Reality）等のように、当該他の装置へ当該情報を表示させる構成であってもよい。検出したマーカーに基づく情報は、例えば、当該マーカーに対応付けられた情報である。
【０２１５】
また、ロボット制御装置３０が検出するマーカー（マーカーＭｋ、マーカーＭｋ１〜マーカーＭｋ４のそれぞれ）が有するデータ領域には、コード図形として、カラーマーカーやバーコード、ＱＲコード（登録商標）等の他のマーカーが含まれる構成であってもよい。
【０２１６】
また、第１撮像部２１と、第２撮像部２２と、第３撮像部２３と、第４撮像部２４とのうちの一部又は全部は、ロボット２０と別体の撮像部であってもよい。この場合、ロボット２０と、ロボット２０と別体の撮像部と、ロボット制御装置３０と、画像処理装置とは、ロボットシステムを構成する。
【０２１７】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０２１８】
また、以上に説明した装置（例えば、ロボット２０のロボット制御装置３０、又はロボット制御装置３０と別体の画像処理装置）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０２１９】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０２２０】
２０…ロボット、２１…第１撮像部、２２…第２撮像部、２３…第３撮像部、２４…第４撮像部、３０…ロボット制御装置、３１…ＣＰＵ、３２…記憶部、３３…入力受付部、３４…通信部、３５…表示部、３６…制御部、４０…撮像制御部、４２…画像取得部、４４…画像処理部、４６…ロボット制御部、５０…第１検出処理部、５１…第２検出処理部、５２…位置姿勢算出部、５３…コード検出部
【図１】
0006561757.tif 000003
【図２】
0006561757.tif 000004
【図３】
0006561757.tif 000005
【図４】
0006561757.tif 000006
【図５】
0006561757.tif 000007
【図６】
0006561757.tif 000008
【図７】
0006561757.tif 000009
【図８】
0006561757.tif 000010
【図９】
0006561757.tif 000011
【図１０】
0006561757.tif 000012
【図１１】
0006561757.tif 000013
【図１２】
0006561757.tif 000014
【図１３】
0006561757.tif 000015
【図１４】
0006561757.tif 000016
【図１５】
0006561757.tif 000017
【図１６】
0006561757.tif 000018
【図１７】
0006561757.tif 000019
【図１８】
0006561757.tif 000020
【図１９】
0006561757.tif 000021
【図２０】
0006561757.tif 000022
【図２１】
0006561757.tif 000023
【図２２】
0006561757.tif 000024
【図２３】
0006561757.tif 000025
【図２４】
0006561757.tif 000026
【図２５】
0006561757.tif 000027
【図２６】
0006561757.tif 000028
【図２７】
0006561757.tif 000029
【図２８】
0006561757.tif 000030