(57)【要約】      （修正有）【課題】作業点を精度良くロボットに教示できるような複数のマーカーの最適位置を算出するマーカー位置算出装置を提供する。【解決手段】マーカー位置算出装置１００は、作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、物体の３次元モデル２０２に基づいて、抽出する平面抽出部１１と、複数のマーカーの位置関係、及び、複数のマーカー及び作業点の位置関係に関連する、目的関数及び制約条件に基づいて、平面抽出部により抽出された複数の平面領域内に複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する最適化計算部１２とを含む。【選択図】図５
2016080663.tif 000002
【特許請求の範囲】
【請求項１】
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出する平面抽出部と、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、前記平面抽出部により抽出された前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する最適化計算部とを含む、マーカー位置算出装置。
【請求項２】
前記最適化計算部は、前記目的関数を最小化する最適解を探索し、
前記目的関数は、前記複数のマーカーの位置関係が複数のマーカーに係る画像認識精度を悪化させる位置関係であるほど大きな値となる関数である、請求項１に記載のマーカー位置算出装置。
【請求項３】
前記目的関数は、前記複数のマーカーの各位置の回転対称性が高いほど大きい値となる第１目的関数、前記複数のマーカーの配置パターンと前記カメラの画角内に存在しうる他の複数のマーカーの配置パターンとの類似度が高いほど大きい値となる第２目的関数、前記複数のマーカーの各位置に外接する矩形の長辺に対する短辺の長さの比が０に近いほど大きい値となる第３目的関数、及び、前記複数のマーカーの各位置を結んでできる多角形の面積が小さいほど大きい値となる第４目的関数のうちの少なくともいずれか１つを含む、請求項２に記載のマーカー位置算出装置。
【請求項４】
前記制約条件は、前記複数のマーカー及び前記作業点の位置関係が前記作業点に係る作業精度が所定基準よりも良くなる位置関係となるようにする条件である、請求項１〜３のうちのいずれか１項に記載のマーカー位置算出装置。
【請求項５】
前記制約条件は、前記複数のマーカーに係る凸包の内側に前記作業点が含まれることである、請求項４に記載のマーカー位置算出装置。
【請求項６】
前記作業点は複数存在し、
前記平面抽出部は、異なる平面毎に、前記複数の平面領域を抽出してグループ化し、
前記最適化計算部は、前記平面抽出部によりグループ化されたグループ毎に、前記最適化計算を行い、
前記複数のグループのそれぞれに対する前記最適化計算の結果、複数の最適位置が算出された場合、複数の最適位置のそれぞれに対して、前記複数のマーカーの重心位置と複数の前記作業点のそれぞれとの距離の総和を算出し、算出した距離の総和が最小となる最適位置を出力する出力部を更に含む、請求項１〜５のうちのいずれか１項に記載のマーカー位置算出装置。
【請求項７】
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出し、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、抽出した前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する、
処理をコンピューターに実行させる、マーカー位置算出プログラム。
【請求項８】
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出し、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、抽出した前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出することを含む、コンピューターにより実行されるマーカー位置算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マーカー位置算出装置、マーカー位置算出方法及びマーカー位置算出プログラムに関する。
【背景技術】
【０００２】
ワークモデルの表面の適所に三角形のマークを付けて、ステレオカメラに対するワークモデルの姿勢を変更しながら複数回のステレオ計測を行う３次元モデルの作成方法が知られている（例えば、特許文献１参照）。この３次元モデルの作成方法では、マークはシールとして構成され、ワークモデルの平坦な面（上面の中央部）に貼付される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2010-112729号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、物体における作業点をロボットに教示するために、カメラにより撮像され画像認識される複数のマーカーを物体に貼り付ける場合、物体における複数のマーカーの位置（貼り付け位置）によっては、作業点を精度良くロボットに教示できない虞がある。これは、複数のマーカーの貼り付け位置が画像認識精度などに影響するためである。
【０００５】
そこで、開示の技術は、作業点を精度良くロボットに教示できるような複数のマーカーの最適位置を算出できるマーカー位置算出装置、マーカー位置算出方法及びマーカー位置算出プログラムの提供を目的とする。
【課題を解決するための手段】
【０００６】
本開示の一局面によれば、作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出する平面抽出部と、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、前記平面抽出部により抽出された前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する最適化計算部とを含む、マーカー位置算出装置が提供される。
【発明の効果】
【０００７】
本開示の技術によれば、作業点を精度良くロボットに教示できるような複数のマーカーの最適位置を算出できるマーカー位置算出装置、マーカー位置算出方法及びマーカー位置算出プログラムが得られる。
【図面の簡単な説明】
【０００８】
【図１】マーカー位置算出装置１００が適用されるロボット作業システム１の一例を示す図である。
【図２】マーカーＭの画像認識結果に基づく部品供給トレイ７０の姿勢算出方法の一例の説明図である。
【図３】画像認識精度に起因した作業点と教示点との間の誤差の説明図である。
【図４】マーカー位置算出装置１００のハードウェア構成の一例を示す図である。
【図５】マーカー位置算出装置１００の機能ブロック図である。
【図６】マーカー位置算出装置１００により実行される処理の全体の流れの一例を概略的に示すフローチャートである。
【図７】平面抽出部１１により実行される平面グループ抽出処理の一例を示すフローチャートである。
【図８】三角メッシュモデルの一例を示す図である。
【図９】領域分類の説明図である。
【図１０】平面領域のグループ化の説明図である。
【図１１】最適化計算部１２により実行される最適化計算処理の一例を示すフローチャートである。
【図１２】凸包判定の説明図である。
【図１３】初期配置範囲の決定方法の一例の説明図である。
【図１４】作業精度評価部１３により実行される作業精度評価処理の説明図である。
【図１５】目的関数及び制約条件の一例を示す表図である。
【図１６】第１目的関数ｆ１の説明図である。
【図１７】第３目的関数ｆ３の説明図である。
【図１８】第４目的関数ｆ４の説明図である。
【図１９】制約条件の説明図である。
【図２０】反復計算時のマーカー位置の動きの説明図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら各実施例について詳細に説明する。
【００１０】
図１は、マーカー位置算出装置１００が適用されるロボット作業システム１の一例を概略的に示す図である。
【００１１】
ロボット作業システム１は、カメラ２と、画像処理装置３と、ロボット制御装置４と、ロボット５とを含む。尚、画像処理装置３は、ロボット制御装置４に組み込まれてもよい。
【００１２】
カメラ２は、作業台６上のワークＷを撮像する。作業台６は、例えば水平面を有し、カメラ２の光軸は水平面に対して略垂直になるように配置されてよい。ワークＷは、ロボット５による作業対象となる部品等である。ワークＷは、部品供給トレイ（図示せず）等により作業台６上に搬送されてよい。尚、作業台６は、コンベヤ等により形成されてもよい。以下では、一例として、マーカーは、部品供給トレイに貼り付けられるものとする。
【００１３】
画像処理装置３は、カメラ２の撮像画像を処理して、複数のマーカー（後述）を認識し、それぞれのマーカーの位置を算出する。画像処理装置３は、算出したマーカーの位置に基づいて、部品供給トレイの姿勢を算出する。
【００１４】
ロボット制御装置４は、画像処理装置３により算出されたマーカーの位置（部品供給トレイの姿勢）に基づいて、ロボット５に作業点を教示する。作業点は、ワークＷにおけるロボット５の作業点である。作業点は、例えばワークＷにおける部品組み付け位置である。ロボット５の作業は任意である。作業点を教示するとは、例えばロボットアーム５ａの移動先の座標値（又は移動軌跡）を指示することである。
【００１５】
ロボット５は、任意のタイプのロボットであってよい。図１に示す例では、ロボット５は、多関節ロボットである。ロボット５は、ロボット制御装置４からの指示に応じてワークＷに対して作業を行う。
【００１６】
図２は、マーカーＭの画像認識結果に基づく部品供給トレイ７０の姿勢算出方法の一例の説明図であり、カメラ２とマーカーＭとの関係の一例を概略的に示す斜視図である。図２には、マーカーＭが貼り付けられる部品供給トレイ７０と、３つのマーカーＭと、カメラ２とが模式的に示されている。また、図２には、カメラ座標系Ｃ１とワールド座標系Ｃ２が示されている。尚、カメラ座標系Ｃ１とワールド座標系Ｃ２との関係は既知である。カメラ座標系Ｃ１は、カメラ２の光軸方向をＺ軸する。
【００１７】
画像処理装置３は、カメラ座標系Ｃ１でマーカーＭの位置（以下、「マーカー位置」とも称する）を算出する。画像処理装置３は、算出した各マーカー位置の重心位置に、部品供給トレイ７０の姿勢を表す座標系Ｃ３の原点を配置する。画像処理装置３は、算出した各マーカー位置により形成される平面の法線を、座標系Ｃ３のＺ軸方向とし、算出した各マーカー位置により形成される平面内にＸ軸及びＹ軸を定める。
【００１８】
図３は、画像認識精度に起因した作業点と教示点との間の誤差の説明図である。図３には、画像処理装置３により認識された座標系Ｃ３と、実際の座標系Ｃ３'とが対比して示されている。
【００１９】
図３に示す例では、画像処理装置３により認識された座標系Ｃ３は、実際の座標系Ｃ３'に対して原点位置が（ａ，ｂ）だけずれ、且つ、姿勢（Ｚ軸方向）がθだけずれている。この場合、例えば実際の座標系Ｃ３'では座標Ｐｗｐ＝（−Ｌ，０）となる作業点に対して、ロボット５に教示される座標（教示点の座標）はＰｔｐ＝（ａ−Ｌｃｏｓθ、ｂ−ｓｉｎθ）となる。このようにして、作業点に対して教示点の誤差δが発生する。尚、図３からも分かるように、原点から作業点までの距離（図３に示す例ではＬ）が長いほど誤差δが大きくなる。
【００２０】
以下、「誤差δ」は、図３に示すような特定の作業点に係る誤差δを意味せず、任意の作業点に関する誤差全般を指す。即ち、「誤差δ」とは、任意の作業点に関して、教示点の座標と実際の作業点の座標との誤差を表す。以下では、誤差δを小さくできる複数のマーカーの最適位置を算出できるマーカー位置算出装置１００について説明する。
【００２１】
図４は、マーカー位置算出装置１００のハードウェア構成の一例を示す図である。
【００２２】
マーカー位置算出装置１００は、例えばコンピューターにより形成される。図４に示す例では、マーカー位置算出装置１００は、制御部１０１、主記憶部１０２、補助記憶部１０３、ドライブ装置１０４、ネットワークＩ／Ｆ部１０６、入力部１０７を含む。
【００２３】
制御部１０１は、主記憶部１０２や補助記憶部１０３に記憶されたプログラムを実行する演算装置であり、入力部１０７や記憶装置からデータを受け取り、演算、加工した上で、記憶装置などに出力する。
【００２４】
主記憶部１０２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などである。主記憶部１０２は、制御部１０１が実行する基本ソフトウェアであるＯＳ（Operating System）やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【００２５】
補助記憶部１０３は、ＨＤＤ（Hard Disk Drive）などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【００２６】
ドライブ装置１０４は、記録媒体１０５、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
【００２７】
記録媒体１０５は、所定のプログラムを格納する。この記録媒体１０５に格納されたプログラムは、ドライブ装置１０４を介してマーカー位置算出装置１００にインストールされる。インストールされた所定のプログラムは、マーカー位置算出装置１００により実行可能となる。
【００２８】
ネットワークＩ／Ｆ部１０６は、有線及び／又は無線回線などのデータ伝送路により構築されたネットワークを介して接続された通信機能を有する周辺機器とマーカー位置算出装置１００とのインターフェースである。
【００２９】
入力部１０７は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、マウスやスライスパット等を有する。
【００３０】
尚、図４に示す例において、以下で説明する各種処理等は、プログラムをマーカー位置算出装置１００に実行させることで実現することができる。また、プログラムを記録媒体１０５に記録し、このプログラムが記録された記録媒体１０５をマーカー位置算出装置１００に読み取らせて、以下で説明する各種処理等を実現させることも可能である。なお、記録媒体１０５は、様々なタイプの記録媒体を用いることができる。例えば、記録媒体１０５は、ＣＤ(Compact Disc)−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等であってよい。なお、記録媒体１０５には、搬送波は含まれない。
【００３１】
図５は、マーカー位置算出装置１００の機能ブロック図である。図５には、マーカー位置算出装置１００への入力情報２００の一例が併せて示されている。
【００３２】
入力情報２００は、マーカー情報２０１と、３次元モデルデータ２０２と、作業位置情報２０３と、使用ＮＧ（No Good）パターン情報２０４と、カメラ設置位置情報２０５とを含む。入力情報２００は、例えば図２に示す入力部１０７、Ｉ／Ｆ部１０６、記録媒体１０５等を介して入力されてもよい。入力情報２００のうちの使用ＮＧパターン情報２０４は省略されてもよい。また、入力情報２００は、マーカー位置算出装置１００に入力されると、マーカー位置算出装置１００内の記憶部（例えば補助記憶部１０３等）に記憶されてよい。
【００３３】
マーカー情報２０１は、貼り付けられる予定のマーカーに関する情報、例えばマーカーのサイズや形状を表す情報を含む。
【００３４】
３次元モデルデータ２０２は、マーカーが張り付けられる対象の物体（本例では、部品供給トレイ７０）の３次元モデルデータである。
【００３５】
作業位置情報２０３は、作業位置の座標値を表す情報を含む。ここでは、一例として、一のワークに対する作業位置は、複数個あるものとする。従って、作業位置情報２０３は、各作業位置の座標値を表す情報を含む。
【００３６】
使用ＮＧパターン情報２０４は、使用してはいけない又は使用することを避けるべきマーカーの幾何的な配置パターン（以下、「ＮＧパターン」と称する）を表す情報を含む。ＮＧパターンは、マーカーが張り付けられる対象の物体ごとに異なり得る。使用ＮＧパターン情報２０４は、今回の対象となる部品供給トレイ７０に特有のＮＧパターンを含んでよい。
【００３７】
カメラ設置位置情報２０５は、カメラ２の設置位置（座標値）を表す情報を含む。
【００３８】
マーカー位置算出装置１００は、平面抽出部１１と、最適化計算部１２と、作業精度評価部（出力部の一例）１３と、ＮＧ条件データベース１４と、他マーカーセット情報データベース１５とを含む。尚、平面抽出部１１、最適化計算部１２及び作業精度評価部１３は、例えば図２に示す制御部１０１により実現できる。また、ＮＧ条件データベース１４及び他マーカーセット情報データベース１５は、例えば図２に示す補助記憶部１０３により実現できる。尚、ＮＧ条件データベース１４及び他マーカーセット情報データベース１５内の情報は、入力情報２００として入力されてもよい。
【００３９】
平面抽出部１１は、複数のマーカーを貼り付けることが可能な、部品供給トレイ７０上の同一平面上の複数の平面領域を、部品供給トレイ７０の３次元モデルに基づいて、抽出する。複数の平面領域とは、互いに連続していない（分断されている）平面領域が複数個あることを意味する。この抽出方法の例については後述する。
【００４０】
最適化計算部１２は、平面抽出部１１により抽出された複数の平面領域内に複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する。例えば、最適化計算部１２は、複数のマーカーの位置関係に関連する目的関数と、複数のマーカーと作業点との位置関係に関連する制約条件とに基づいて、最適化計算を行う。この最適化計算方法の例については後述する。
【００４１】
尚、複数のマーカーの最適位置は、ある複数の作業点に対して算出される。従って、複数の作業点と、複数のマーカーとは、１つのセットである。このようなセットは、複数の作業点毎に、複数算出されてよいが、以下では、説明の複雑化を防止するための都合上、特に言及しない限り、１つのセットについて説明する。従って、以下では、全作業点とは、特定の１つのセットに係る複数の作業点の全てを指し、必ずしも一のワークＷにおける全ての作業点を意味するわけではない。また、複数のマーカーとは、同一セットに係る複数のマーカーを指す。また、１つのセットを形成する複数のマーカーは、総称して「マーカーセット」とも称する。また、今回の最適位置算出対象のマーカーセットとは異なるマーカーセットについては、「他マーカーセット」とも称する。また、以下の説明において、複数のマーカーは、いずれも同じ（形状、サイズ、模様）であるものとする。尚、マーカーの形状やサイズ等は任意である。
【００４２】
作業精度評価部１３は、最適化計算部１２により算出された最適位置に対して作業精度を表す指標値を算出する。作業精度評価部１３は、最適化計算部１２により算出された最適位置が複数存在する場合は、各最適位置に対して指標値を算出し、各最適位置に対して、作業精度が高い順位を付与する。作業精度評価部１３の処理例について後述する。
【００４３】
ＮＧ条件データベース１４は、複数のマーカーの位置に関して回避すべき条件（以下、「ＮＧ条件」と称する）を記憶する。ＮＧ条件は、画像認識精度を悪化させる複数のマーカーの位置関係（幾何的な位置関係）等を表してよい。ＮＧ条件は、上述したＮＧパターンを含んでもよい。
【００４４】
他マーカーセット情報データベース１５は、カメラ２の画角内に存在しうる他マーカーセットに関する情報を記憶する。カメラ２の画角とは、カメラ設置位置情報２０５に基づく設置位置に配置されたカメラ２の画角に対応する。
【００４５】
図５に示すマーカー位置算出装置１００によれば、同一平面内の複数の平面領域を利用して複数のマーカーの最適位置を探索するので、異なる平面上の複数の平面領域を利用して複数のマーカーの最適位置を探索する場合に比べて、誤差δを低減できる。これは、複数のマーカーが同一平面上にある場合は、複数のマーカー間のカメラ２の視線方向のオフセット量が小さくなり、画像認識精度が高くなるためである。
【００４６】
また、図５に示すマーカー位置算出装置１００によれば、部品供給トレイ７０に複数のマーカーの全てを配置できるような面積が比較的広い一の平面領域が存在しない場合でも、複数の平面領域を利用して複数のマーカーの最適位置を探索できる。これは、部品供給トレイ７０の３次元形状が複雑である場合（比較的広い平面領域が存在しない場合）に好適となる。
【００４７】
また、図５に示すマーカー位置算出装置１００によれば、複数のマーカーの最適位置は、制約条件及び目的関数に基づいて最適化計算により得られるので、作業者のノウハウに頼ることなく、誤差δを低減できる。また、制約条件及び目的関数が複数のマーカーの位置関係及び複数のマーカーと作業点との位置関係に関連するので、これらの位置関係が画像認識精度を悪化させないようにする最適化計算が可能となり、誤差δを更に低減できる。
【００４８】
次に、図６を参照して、マーカー位置算出装置１００の動作例の概要について説明する。
【００４９】
図６は、マーカー位置算出装置１００により実行される処理の全体の流れの一例を概略的に示すフローチャートである。
【００５０】
ステップＳ６００では、平面抽出部１１は、部品供給トレイ７０の３次元モデルに基づいて、部品供給トレイ７０の形状分析を行い、部品供給トレイ７０における平面領域を抽出する。平面抽出部１１は、複数の平面領域を抽出する。
【００５１】
ステップＳ６０２では、平面抽出部１１は、抽出した複数の平面領域に対して、同一平面内に存在する平面領域同士をグループ化する。このグループ化により形成された各グループを「平面グループ」と称する。
【００５２】
ステップＳ６０４では、平面抽出部１１は、平面グループ毎に、マーカーを貼り付け可能であるか否かをチェックする。このチェックは、平面グループ内に属する平面領域の面積が十分大きいか否かのチェックを含んでよい。平面抽出部１１は、マーカーを貼り付け可能でない平面グループを抽出せずに破棄する。
【００５３】
ステップＳ６０６乃至ステップＳ６０８は、平面抽出部１１により複数の平面グループが抽出された場合は、平面グループ毎に実行される。ステップＳ６０６乃至ステップＳ６０８は、平面抽出部１１により唯一の平面グループが抽出された場合は、当該唯一の平面グループに対して実行される。
【００５４】
ステップＳ６０６では、最適化計算部１２は、平面グループ毎に、全作業点を、平面グループ内の複数の平面領域に貼り付けられる複数のマーカーにより包含できるか否かをチェックする。最適化計算部１２は、全作業点を複数のマーカーにより包含できない平面グループを最適化計算対象から除外する。
【００５５】
ステップ６０８では、最適化計算部１２は、平面グループ毎に、マーカーの初期配置範囲を決定する。初期配置範囲は任意の方法で決定されてもよい。
【００５６】
ステップ６１０では、最適化計算部１２は、制約条件付きの多目的最適化計算により最適なマーカー位置（以下、「最適位置」とも称する）を算出する。
【００５７】
ステップＳ６１２乃至ステップＳ６１４は、最適化計算部１２により複数の平面グループに対して最適位置が算出された場合は、平面グループ毎に実行される。ステップＳ６１２乃至ステップＳ６１４は、最適化計算部１２により唯一の平面グループに対して最適位置が算出された場合は、当該唯一の平面グループに対して実行される。
【００５８】
ステップ６１２では、作業精度評価部１３は、平面グループ毎に、全作業点のそれぞれと、最適位置に基づく複数のマーカーの重心位置との間の距離の総和を算出する。
【００５９】
ステップ６１２では、作業精度評価部１３は、距離の総和が小さい平面グループに係る最適位置から順に高い順位を付与する（ランキング付けを行う）。
【００６０】
図６に示す処理によれば、図５に関連して上述した効果を得ることができる。また、図６に示す処理によれば、同一平面内に存在する複数の平面領域により形成される平面グループを、異なる平面毎に複数得ることができる。これにより、複数の平面グループの中から、複数のマーカーの最適位置を探索できる。従って、複数の平面グループから複数の最適位置を得ることも可能となりうる。
【００６１】
また、図６に示す処理によれば、制約条件付きの多目的最適化計算により複数のマーカーの最適位置を探索するので、最適位置の精度（最適性）が向上し、誤差δを更に低減することが可能となる。また、図６に示す処理によれば、複数の最適位置が得られた場合に、各最適位置に係る作業精度が評価されるので、作業精度を考慮して最終的な一の最適位置を決定できる。
【００６２】
次に、図７乃至図１４を参照して、マーカー位置算出装置１００の動作例の詳細について説明する。
【００６３】
図７は、平面抽出部１１により実行される平面グループ抽出処理の一例を示すフローチャートである。図７に示す処理の入力は、部品供給トレイ７０の３次元形状モデルである。
【００６４】
ステップＳ７００では、平面抽出部１１は、入力された３次元形状モデルがメッシュモデルであるか否かを判定する。３次元形状モデルがメッシュモデルである場合は、ステップＳ７０４に進み、それ以外の場合は、ステップＳ７０２に進む。尚、３次元形状モデルがメッシュモデルでない場合とは、例えば、３次元形状モデルが３次元ＣＡＤ（Computer-Aided Design）モデル（例えばワイヤフレームモデル等）である場合である。
【００６５】
ステップＳ７０２では、平面抽出部１１は、入力された３次元形状モデルを三角メッシュモデルに変換する。図８は、三角メッシュモデルの一例を示す。尚、三角メッシュモデルにおける各三角形要素は、平面である。
【００６６】
ステップＳ７０４では、平面抽出部１１は、入力された３次元形状モデルの六面図で全作業点が最も良く見える面（ビュー）を基準として視点方向に設定する。即ち、平面抽出部１１は、六面図の６面のうちの、作業点が最も良く見える面に基づいて、当該面を見ている側を視点方向に設定する。尚、平面抽出部１１は、ロボット５の作業時の状態（部品供給トレイ７０の姿勢やカメラ２との位置関係）が決まっているときは、ロボット５の作業時の状態で３次元形状モデルに対してカメラ２が位置する側を、視点方向に設定してもよい。即ち、平面抽出部１１は、カメラ座標系Ｃ１で３次元形状モデルを扱ってよく、この場合、カメラ座標系Ｃ１でＺ軸の負方向（図２参照）が視点方向に対応する。
【００６７】
ステップＳ７０６では、平面抽出部１１は、領域分類（セグメンテーション）により平面領域を抽出する。領域分類とは、メッシュモデルの幾何的な特徴量を算出し、領域分類する方法である。例えば、図９に示すように、法線ベクトルｎａ，ｎｂが同じ向きで稜線を共有する２つの平面領域をグループ化する。尚、領域分類方法は、任意であり、例えば特開2007-241996に開示される方法が利用されてもよい。尚、本例では、平面領域がｎｐ個抽出されたものとする。各平面領域には、０〜ｎｐ−１の整数値が対応付けられる。
【００６８】
ステップＳ７０８では、平面抽出部１１は、値ｉ（初期値０）が平面領域数ｎｐよりも小さいか否かを判定する。値ｉが平面領域数ｎｐよりも小さい場合は、ステップＳ７１０に進み、それ以外の場合は、ステップＳ７１６に進む。
【００６９】
ステップＳ７１０では、平面抽出部１１は、値ｉに対応する平面領域を選択する。
【００７０】
ステップＳ７１２では、平面抽出部１１は、選択した平面領域の法線が視点方向に向いているか否かを判定する。平面領域の法線が視点方向に向いているか否かは、平面領域の法線がカメラ２の設置位置に向いているか否かを判定することにより判定されてもよい。平面領域の法線がカメラ２の設置位置に向いているとは、必ずしも法線ベクトルの延長が設置位置に交わることを意味しない。平面領域の法線がカメラ２の設置位置に向いているとは、例えば、カメラ２の設置位置を含み且つカメラ２の光軸方向に垂直な平面を仮想したとき、仮想した平面の所定領域に、法線ベクトルの延長が交わることを意味してもよい。仮想した平面の所定領域とは、例えばカメラ２の設置位置を中心に含む所定サイズの領域であってよい。選択した平面領域の法線が視点方向に向いている場合は、ステップＳ７１４に進み、それ以外の場合は、選択した平面領域を抽出候補から外し、値ｉを"１"インクリメントしてステップＳ７０８に戻る。
【００７１】
ステップＳ７１４では、平面抽出部１１は、選択した平面領域の任意の位置（例えば重心位置）から全作業点への距離がカメラ２の撮像範囲の対角線以下であるか否かを判定する。即ち、平面抽出部１１は、選択した平面領域にマーカーを貼り付けたときに、カメラ２により全作業点を撮像しつつ当該マーカーを撮像可能であるか否かを判定する。全作業点への距離がカメラ２の撮像範囲の対角線以下である場合は、ステップＳ７１６に進み、それ以外の場合は、選択した平面領域を抽出候補から外し、値ｉを"１"インクリメントしてステップＳ７０８に戻る。
【００７２】
ステップＳ７１６では、平面抽出部１１は、選択した平面領域を保持し、値ｉを"１"インクリメントしてステップＳ７０８に戻る。即ち、平面抽出部１１は、選択した平面領域を、抽出候補として残し、値ｉを"１"インクリメントしてステップＳ７０８に戻る。
【００７３】
ステップＳ７１８では、平面抽出部１１は、ステップＳ７１６で保持した全ての平面領域に基づいて、同一平面上にある全ての平面領域をグループ化する。同一平面上の平面とは、任意の平面である。例えば、ある平面領域を含む平面上に含まれる他の平面領域は、同一平面上にある。平面抽出部１１は、例えば図１０に示すように２つの平面領域８０ａ，８０ｂについて、それぞれの重心位置ｐａ，ｐｂを結ぶベクトルと、法線ベクトルｎａとの内積が０のときは、平面領域８０ａ，８０ｂが同一平面上にあると判断してよい。尚、本例では、グループ化により平面グループがｎｇ個形成されたものとする。各平面グループには、０〜ｎｇ−１の整数値が対応付けられる。尚、各平面グループは、少なくとも１つの平面領域を含む。
【００７４】
ステップＳ７２０では、平面抽出部１１は、値ｊ（初期値０）が平面グループ数ｎｇよりも小さいか否かを判定する。値ｊが平面グループ数ｎｇよりも小さい場合は、ステップＳ７２２に進み、それ以外の場合は、ステップＳ７２８に進む。
【００７５】
ステップＳ７２２では、平面抽出部１１は、値ｊに対応する平面グループを選択する。
【００７６】
ステップＳ７２４では、平面抽出部１１は、選択した平面グループに属する平面領域を利用して、マーカーを３個以上貼り付けることができるか否かを判定する。例えば、平面抽出部１１は、マーカー情報２０１に基づいて、マーカーを３個貼り付けるために必要な面積を算出し、算出した面積が、選択した平面グループに属する平面領域の総面積よりも小さいか否かを判定してもよい。この際、平面抽出部１１は、マーカー情報２０１に基づく一のマーカーの面積よりも小さい面積の平面領域については、除外してよい。選択した平面グループを用いてマーカーを３個以上貼り付けることができる場合は、ステップＳ７２６に進み、それ以外の場合は、選択した平面グループを抽出候補から外し、値ｊを"１"インクリメントしてステップＳ７２０に戻る。
【００７７】
ステップＳ７２６では、平面抽出部１１は、選択した平面グループを抽出対象として保持し、値ｊを"１"インクリメントしてステップＳ７２０に戻る。
【００７８】
ステップＳ７２８では、平面抽出部１１は、ステップＳ７２６で保持した全ての平面グループを抽出する。
【００７９】
図７に示す処理によれば、不連続の平面領域同士であっても、同一平面上にある場合には、グループ化され、平面グループを形成する。従って、不連続の複数の平面領域を含む平面グループを抽出できる。また、図７に示す処理によれば、ステップＳ７１２及びステップＳ７１４を有するので、カメラ２により撮像できない位置又は困難な位置にしかマーカーを貼り付けることができない平面領域を抽出対象から除外できる。また、図７に示す処理によれば、ステップＳ７２４を有するので、マーカーを３個貼り付けることができる面積を持つ平面グループのみを抽出できる。
【００８０】
図１１は、最適化計算部１２により実行される最適化計算処理の一例を示すフローチャートである。図１１に示す処理は、平面抽出部１１により複数の平面グループが抽出された場合（例えば、ステップＳ７２８で抽出された平面グループが複数である場合）、平面グループ毎に実行される。以下では、ある一の平面グループに対する処理について説明する。従って、図１１の説明において、「平面グループ」とは、ある一の平面グループを意味する。
【００８１】
ステップＳ１１００では、最適化計算部１２は、マーカー数ｎｍが所定の上限値ｎｍａｘよりも小さいか否かを判定する。マーカー数ｎｍとは、複数のマーカーの個数である。以下、複数のマーカーとは、マーカー数ｎｍのマーカーを指す。マーカー数ｎｍの初期値は、"３"に設定され、所定の上限値ｎｍａｘは、"３"よりも大きい任意の数であってよい。マーカー数ｎｍが所定の上限値ｎｍａｘよりも小さい場合は、ステップＳ１１０２に進み、それ以外の場合は、そのまま終了する。
【００８２】
ステップＳ１１０２では、最適化計算部１２は、全作業点を複数のマーカーで包含できるか否かを判定する。例えば、最適化計算部１２は、平面グループに属する全平面領域の凸包の内側に全作業点が含まれるか否かを判定する。例えば、図１２は、平面グループに属する全平面領域と作業点との関係を概略的に示す平面図（平面領域の法線方向に視た図）である。図１２（Ａ）に示す例では、平面グループは、２つの平面領域８０ｃ、８０ｄから形成される。図１２（Ａ）に示す例では、全作業点（本例では、３つの作業点Ｐｗｐ１、Ｐｗｐ２、Ｐｗｐ３）のうちの作業点Ｐｗｐ１が平面領域８０ｃ、８０ｄに対する凸包９０よりも外側に位置するので、ステップＳ１１０２の判定結果は"ＮＯ"となる。他方、図１２（Ｂ）に示す例では、平面グループは、３つの平面領域８０ｅ、８０ｆ、８０ｇから形成される。図１２（Ｂ）に示す例では、全作業点は平面領域８０ｅ、８０ｆ、８０ｇに対する凸包９０よりも内側に位置するので、ステップＳ１１０２の判定結果は"ＹＥＳ"となる。全作業点を複数のマーカーで包含できる場合は、ステップＳ１１０４に進み、それ以外の場合は、今回の平面グループに対する処理は終了する。
【００８３】
ステップＳ１１０４では、最適化計算部１２は、複数のマーカーに対する初期配置範囲を決定する。初期配置範囲は、平面グループの平面領域を用いて決定される。図１３は、初期配置範囲の決定方法の一例の説明図であり、初期配置範囲９０３を決定するまでの過程を平面グループに属する全平面領域と作業点との関係と共に概略的に示す平面図（平面領域の法線方向に視た図）である。図１３に示す例では、最適化計算部１２は、頂点削除後の凸包内に全作業点を含む条件の下で凸包９０の頂点を逐次的に削除する。次いで、最適化計算部１２は、頂点削除が不能となった最終の凸包９０２の面積を小さくすることで、初期配置範囲９０３を得る。具体的には、最適化計算部１２は、図１３（Ａ）に示す凸包９０の頂点Ｎ１を削除し、図１３（Ｂ）に示すように、凸包９０１を生成する。次いで、最適化計算部１２は、図１３（Ｂ）に示す凸包９０１の頂点Ｎ２を削除し、図１３（Ｃ）に示すように、凸包９０２を生成する。凸包９０２に対しては、これ以上頂点削除が不能である。従って、最適化計算部１２は、図１３（Ｄ）に示すように、凸包９０２の頂点Ｎ３を平面領域８０ｅで内側に移動して、初期配置範囲９０３を得る。尚、最適化計算部１２は、図１３（Ｄ）に示す初期配置範囲９０３に対して、更に頂点Ｎ４等を移動して面積をより小さくしてもよい。尚、図１３には、説明の都合上、初期配置範囲９０３は、平面領域８０ｅ、８０ｆの頂点８０１，８０２に頂点を有し、平面領域８０ｆではマーカーを貼り付けることができない態様で示されている。しかしながら、実際には、初期配置範囲９０３は、各平面領域上にマーカーを貼り付けることができる面積が確保される態様で決定される。
【００８４】
ステップＳ１１０６では、最適化計算部１２は、制約条件付きの多目的最適化計算により複数のマーカーの最適位置を計算する。制約条件付きの多目的最適化計算方法の例については後述する。
【００８５】
ステップＳ１１０８では、最適化計算部１２は、ステップＳ１１０６で得られた最適位置を保持し、マーカー数ｎｍを"１"インクリメントしてステップＳ１１００に戻る。
【００８６】
図１１に示す例によれば、平面抽出部１１により抽出された平面グループ毎に最適位置を算出することができる。また、図１１に示す例によれば、所定の上限値ｎｍａｘを４より大きな値にした場合、マーカー数ｎｍを変化させて一の平面グループに対して複数の最適位置を算出することも可能となり得る。これにより、複数の最適位置を候補とすることができる。また、図１１に示す例によれば、ステップＳ１１０２を有することで、全作業点を包含できない平面グループを事前に除外できるので、最適化計算の負荷を低減できる。また、図１１に示す例によれば、ステップＳ１１０４を有することで、後述の如くマーカー位置を外側に移動させながら最適解を探索可能となり（図２０等参照）、最適化計算の効率化を図ることができる。
【００８７】
図１４は、作業精度評価部１３により実行される作業精度評価処理の説明図である。図１４において、（Ａ）は、最適化計算部１２により算出された最適位置（部品供給トレイ７０の平面７０１に関する平面グループに係る最適位置）に従ってマーカーＭを配置した状態を概略的に示す。また、（Ｂ）は、他の一の最適位置（部品供給トレイ７０の平面７０２に関する平面グループに係る最適位置）に従ってマーカーＭを配置した状態を概略的に示す。図１４では、４つのマーカーに関する最適位置が示されている。また、図１４に示す例では、全作業点は、３つの作業点Ｐｗｐ１、Ｐｗｐ２、Ｐｗｐ３である。
【００８８】
作業精度評価部１３は、上述の如く、平面グループ毎に、全作業点のそれぞれと、最適位置に基づく複数のマーカーの重心位置との間の距離の総和を算出する。具体的には、作業精度評価部１３は、以下の式により、特定の一の平面グループに対して総和を算出する。
【００８９】
【数１】
2016080663.tif 000003
ここで、Ｐｇは、最適位置に基づく複数のマーカーの重心位置を表す（図１４参照）。Ｐｗｐｉは、ｉ番目の作業点を表す。
【００９０】
作業精度評価部１３は、総和が小さい順に高い順位を各平面グループ（各平面グループに係る各最適位置）に付与する。これは、図３を参照して上述したように、同じ画像認識誤差を有する場合に、複数のマーカーの重心位置から作業点が近いほど誤差δが小さくなるためである。
【００９１】
次に、図１５乃至図２０を参照して、最適化計算部１２による制約条件付きの多目的最適化計算方法の例について説明する。以下で、複数のマーカーの位置や複数のマーカーの配置パターンとは、最適化計算時（各計算ステップ）の位置及び配置パターンである。尚、以下では、複数のマーカーの位置は、最適化計算過程における位置であり、一例として、カメラ２のカメラ座標系Ｃ１（図２参照）で表現されているものとする。
【００９２】
制約条件付きの多目的最適化計算は、以下の式で表せる。
【００９３】
【数２】
2016080663.tif 000004
ここで、ｆｉ（ｘ）は目的関数であり、ｇ（ｘ）は制約条件であり、ｗｉは各項の重みである。
【００９４】
図１５は、目的関数及び制約条件の一例を示す表図である。図１５には、各目的関数及び制約条件に関連する幾何的特徴（複数のマーカーの位置関係、及び、複数のマーカーと作業点との位置関係）が併せて示されている。図１５に示す例では、目的関数は、４つある。
【００９５】
第１目的関数ｆ１は、複数のマーカーの位置関係に関連し、複数のマーカーの各位置の回転対称性が高いほど大きな値となる。これは、複数のマーカーの各位置の回転対称性が高いほど、画像認識によるマーカー間の識別が難しくなるためである。
【００９６】
例えば、最適化計算部１２は、先ず、図１６に示すように、複数のマーカーの重心Ｇから各マーカーＭ０〜Ｍ３に結ぶベクトル間の角度θ０〜θ３としたとき、重心Ｇを中心としてθｋ（ｋ＝０，１，２）ずつ回転させ、近くの頂点同士の距離を以下の式で算出する。
【００９７】
【数３】
2016080663.tif 000005
ここで、Ｍ'ｊは、回転後のマーカーであって、回転前のマーカーＭｊに近いマーカーを指す。図１６には、回転前の各マーカーＭ０〜Ｍ３を重心Ｇを中心として角度αだけ回転した状態を一点鎖線で示されている。最適化計算部１２は、各回転位置で距離ｄ（ｋ）を算出し、最小の距離ｄの逆数を第１目的関数ｆ１の値とする。即ち、第１目的関数ｆ１は、以下の通りである。
【００９８】
【数４】
2016080663.tif 000006
尚、図１６に示す例では、平行四辺形であるので、ｋ＝１のとき、即ち角度θ０＋θ１回転させたときに距離ｄ（１）＝０となる。ｄ＝０は回転対称であることを表す。
【００９９】
第２目的関数ｆ２は、複数のマーカーの位置関係に関連し、複数のマーカーの配置パターンと、カメラ２の画角内に存在しうる他マーカーセットに係る配置パターンとの類似度が高いほど大きな値となる。これは、カメラ２で複数のマーカーセットが同時に撮像される場合、マーカーセット間の類似度が高いほど、画像認識によるマーカーセット間の識別が難しくなるためである。尚、カメラ２の画角内に他マーカーセットが存在するか否かは、他マーカーセット情報データベース１５に基づいて判定されてよい。カメラ２の画角内に他マーカーセットが存在しない場合は、第２目的関数ｆ２は省略されてもよいし、重みｗ２が"０"とされてよい。
【０１００】
例えば、最適化計算部１２は、複数のマーカーの配置パターンと他マーカーセットに係る配置パターンとの類似度を、プロクラステス解析（Procrustes Analysis）を利用して計算してもよい。プロクラステス解析は、Kendall, David G. "A Survey of the Statistical Theory of Shape." Statistical Science. Vol. 4, No. 2, 1989, pp. 87-99から知られている。具体的には、最適化計算部１２は、複数のマーカーの各位置を結んでできる多角形と、他マーカーセットに係る各マーカーの各位置を結んでできる多角形とに基づいて、プロクラステス解析を行うことで、以下の式によりプロクラステス距離ｄ１を算出する。
【０１０１】
【数５】
2016080663.tif 000007
ここで、Ｍ１ｊは、複数のマーカーの各位置を表し、Ｍ１'ｊは、他マーカーセットに係る各マーカーの各位置を表す。プロクラステス解析は、各位置Ｍ１'ｊが、対応する各位置Ｍ１ｊにできるだけ近くなるように、例えば他マーカーセットに係る各マーカーの各位置を結んでできる多角形を拡大・縮小、回転、平行移動することを伴う。Ｍ１'ｊは、かかる拡大等を行った後の他マーカーセットに係る各マーカーの各位置を表す。尚、プロクラステス距離ｄ１は、各位置Ｍ１ｊと、対応する各位置Ｍ１ｊとの間の距離の二乗和の総和である。最適化計算部１２は、プロクラステス距離ｄ１の逆数を第２目的関数ｆ２の値とする。即ち、第２目的関数ｆ２は、以下の通りである。
ｆ２＝１／ｄ
第３目的関数ｆ３は、複数のマーカーの位置関係に関連し、複数のマーカーの各位置に外接する矩形の縦横比の比が小さいほど大きな値となる。
【０１０２】
例えば、最適化計算部１２は、複数のマーカーの各位置の座標のｘ、ｙ座標の最小値及び最大値の差Ｌｘ，Ｌｙを算出し、第３目的関数ｆ３を以下の通り算出する。
【０１０３】
【数６】
2016080663.tif 000008
例えば、図１７には、４つのマーカーＭ０〜Ｍ３の各位置が示されている。この場合、最適化計算部１２は、マーカーＭ２とマーカーＭ０のｘ座標の差をＬｘとし、マーカーＭ３とマーカーＭ１のｙ座標の差をＬｙとして、第３目的関数ｆ３を算出する。
【０１０４】
第４目的関数ｆ４は、複数のマーカーの各位置を結んでできる多角形の面積が大きいほど小さい値となる。これは、かかる面積が小さいほど画像認識精度、特に画像認識で得られる姿勢（Ｚ軸方向）の精度が悪くなるためある。
【０１０５】
例えば、最適化計算部１２は、多角形の面積Ａを以下の式で算出する。
【０１０６】
【数７】
2016080663.tif 000009
ここで、Ｍｋは、マーカーＭｋの位置ベクトルを表す。例えば、図１８には、５つのマーカーＭ０〜Ｍ６の各位置が示されている。この場合、Ｍ０＝Ｍ６となる。最適化計算部１２は、多角形の面積Ａの逆数を第４目的関数ｆ４の値とする。即ち、第４目的関数ｆ４は、以下の通りである。
ｆ４＝１／Ａ
制約条件ｇ（ｘ）は、全作業点が複数のマーカーの凸包に含まれることである。これは、複数のマーカーの凸包の外側に作業点が存在する場合、当該作業点と複数のマーカーの重心位置との距離が長くなり（図３参照）、当該作業点における作業精度が悪くなるためである。この判定には、例えば交差数判定（Crossing Number Algorithm）が使用されてよい。
【０１０７】
例えば、最適化計算部１２は、Quick Hull法により凸包を計算する。ここでは、一例として、図１９に示す５つのマーカーＭ０〜Ｍ６の各位置に対する凸包の計算方法について説明する。Quick Hull法によれば、点集合（マーカーＭ０〜Ｍ６の各位置）に対する凸包を計算する際、まず、最も左にある点（Ｍ０）と最も右にある点（Ｍ１）とを線で結び、点集合を２つに分ける。次いで、各領域について、分割線の法線方向に最も遠い点を探索し、最も遠い点が存在すれば、分割線の両端と、当該最も遠い点とを結ぶ新たな分割線を生成する。図１９に示す例では、マーカーＭ０の位置とマーカーＭ１の位置とを結ぶ分割線に対して、マーカーＭ２の位置及びマーカーＭ３の位置が分割線の法線方向に最も遠い点であり、新たな分割線が生成される。次いで、新たな分割線について、分割線の法線方向に最も遠い点を探索し、最も遠い点が存在すれば、新たな分割線を同様に更に生成する。分割線の法線方向に最も遠いが存在しない場合は、当該分割線が凸包の辺として決定される。
【０１０８】
例えば、最適化計算部１２は、複数のマーカーに係る凸包を上述の如く算出すると、複数のマーカーに係る凸包に対する全作業点の内外判定を行う。内外判定とは、複数のマーカーに係る凸包に対して作業点が内部に存在するか否かの判定である。内外判定は、Quick Hull法の考え方を利用できる。例えば、最適化計算部１２は、複数のマーカーに係る凸包の各辺について、法線方向に全作業点のいずれかが存在するか否かを判定する。最適化計算部１２は、複数のマーカーに係る凸包のいずれかの辺で、法線方向に全作業点のうちのいずれか１つでも存在した場合は、全作業点が複数のマーカーの凸包に含まれていないと判定する。即ち、制約条件ｇ（ｘ）が満たされないことになる。他方、最適化計算部１２は、複数のマーカーに係る凸包のいずれの辺でも、法線方向に全作業点のいずれも存在しない場合は、全作業点が複数のマーカーの凸包に含まれると判定する。即ち、制約条件ｇ（ｘ）が満たされることになる。
【０１０９】
最適化計算部１２は、上述した各目的関数及び制約条件に基づいて、反復計算により最適位置を求める。この最適解の探索方法は任意である。例えば、複数のマーカーの全ての位置を一度に最適化する場合は、制約条件付きの非線形最適化計算により、移動させる１つのマーカー位置を計算してよい。具体的な解法としては、遺伝的アルゴリズムを用いることができる。このような解法では計算量が多すぎたり、収束性が悪い場合があり得る。かかる場合は、一の計算ステップでは１つのマーカーのみを移動させる方法を採用してもよい。例えば、最適化計算部１２は、複数のマーカーのそれぞれを別々に、以下のように動かしたときに、目的関数の合計値が最小となるマーカーを見つけ、そのマーカーを、"動かすマーカー"として決定することとしてよい。
【０１１０】
【数８】
2016080663.tif 000010
ここで、数８の式において、Ｍｉ及びＭｉ＋１は、位置ベクトルを表し、Ｍｉ＋１は、一の計算ステップで移動された後の位置ベクトルを表す。Δｄａ及びΔｄｂは、それぞれ、任意のスカラ値である。Δｄａ及びΔｄｂは、準ニュートン法などにより算出されてもよい。ａ，ｂは、反復計算のステップ幅に対応する移動ベクトルである。ａ，ｂは、複数のマーカーの各位置を結んでできる多角形の面積が増加する方向に設定される。図２０に示す例では、４つのマーカーＭ０〜Ｍ３の各位置が示されている。図２０に示す例では、マーカーＭ３が一のマーカーとして選択された場合のベクトルａ，ｂが示されている。最適化計算部１２は、Ｍｉ＋１が平面グループに係る平面領域外に出る場合は、Δｄａ＝０やΔｄｂ＝０の場合も計算することとしてよい。
【０１１１】
図１５乃至図２０に示す例によれば、画像認識精度及び作業精度を悪化させる幾何的特徴（複数のマーカーの位置関係、及び、複数のマーカーと作業点との位置関係）に関連する各目的関数及び制約条件を適切に設定できる。これにより、画像認識精度が良好な最適位置を探索でき、誤差δを更に低減することが可能となる。
【０１１２】
尚、図１５乃至図２０に示す例では、制約条件ｇ（ｘ）は、全作業点が複数のマーカーの凸包に含まれることであるが、他の表現であってもよい。例えば、制約条件ｇ（ｘ）は、各作業点から複数のマーカーの重心位置までの各距離の総和が所定上限値以下であることや、各作業点から複数のマーカーの重心位置までの各距離の最大値が所定上限値以下であること等であってもよい。
【０１１３】
また、図１５乃至図２０に示す例では、第３目的関数ｆ３に係るＬｘ及びＬｙは、カメラ座標系のＸ軸方向及びＹ軸方向にそれぞれ平行な方向の距離であるが、これに限られない。例えば、最適化計算部１２は、複数のマーカーの各位置を外接する最小面積の矩形（又は縦横比が最大又は最小となる矩形）を算出し、当該矩形に基づいてＬｘ及びＬｙを算出してもよい。
【０１１４】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【０１１５】
例えば、上述した実施例では、マーカーは、部品供給トレイ７０に貼り付けられることが想定されているが、部品供給トレイ７０以外に貼り付けられてもよい。例えば、マーカーは、部品供給トレイ７０に代えて又は加えて、ワークＷに貼り付けられてもよい。
【０１１６】
また、上述した実施例では、複数の作業点を想定しているが、作業点は１つだけである場合もあり得る。
【０１１７】
また、上述した実施例では、４つの目的関数を一例として示しているが、４つの目的関数のうちの任意の１つ、２つ又は３つの組み合わせが使用されてもよい。また、他の目的関数が追加されてもよい。例えば、第２目的関数と同じ考え方に基づいて、使用ＮＧパターン情報２０４に含まれる所定のＮＧパターンとの類似度が高くなるほど大きな値になる目的関数が使用されてもよい。この場合、所定のＮＧパターンが、回転対称のパターンを含む場合は、第１目的関数が省略されてもよい。
【０１１８】
また、上述した実施例では、最適化計算部１２は、最適化計算として、関数を最小化する解を探索しているが、関数を最大化する解を探索する方式であってよい。この場合は、それに応じて各目的関数を変更すればよい。
【０１１９】
また、上述した実施例では、４つの目的関数は、全て複数のマーカーの位置関係（即ち画像認識精度）に関連しているが、複数のマーカー及び作業点の位置関係（即ち作業精度）に関連してもよい。例えば、制約条件と同様の考え方で、作業精度が悪くなるほど大きな値となる目的関数が使用されてもよい。同様に、制約条件についても、作業精度に代えて、画像認識精度に対して定義されてもよい。
【０１２０】
なお、以上の実施例に関し、さらに以下の付記を開示する。
（付記１）
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出する平面抽出部と、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、前記平面抽出部により抽出された前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する最適化計算部とを含む、マーカー位置算出装置。
（付記２）
前記最適化計算部は、前記目的関数を最小化する最適解を探索し、
前記目的関数は、前記複数のマーカーの位置関係が複数のマーカーに係る画像認識精度を悪化させる位置関係であるほど大きな値となる関数である、付記１に記載のマーカー位置算出装置。
（付記３）
前記目的関数は、前記複数のマーカーの各位置の回転対称性が高いほど大きい値となる第１目的関数、前記複数のマーカーの配置パターンと前記カメラの画角内に存在しうる他の複数のマーカーの配置パターンとの類似度が高いほど大きい値となる第２目的関数、前記複数のマーカーの各位置に外接する矩形の長辺に対する短辺の長さの比が０に近いほど大きい値となる第３目的関数、及び、前記複数のマーカーの各位置を結んでできる多角形の面積が小さいほど大きい値となる第４目的関数のうちの少なくともいずれか１つを含む、付記２に記載のマーカー位置算出装置。
（付記４）
前記制約条件は、前記複数のマーカー及び前記作業点の位置関係が前記作業点に係る作業精度が所定基準よりも良くなる位置関係となるようにする条件である、付記１〜３のうちのいずれか１項に記載のマーカー位置算出装置。
（付記５）
前記制約条件は、前記複数のマーカーに係る凸包の内側に前記作業点が含まれることである、付記４に記載のマーカー位置算出装置。
（付記６）
前記作業点は複数存在し、
前記制約条件は、前記複数のマーカーに係る凸包の内側に複数の前記作業点の全てが含まれることである、付記５に記載のマーカー位置算出装置。
（付記７）
前記作業点は複数存在し、
前記平面抽出部は、異なる平面毎に、前記複数の平面領域を抽出してグループ化し、
前記最適化計算部は、前記平面抽出部によりグループ化されたグループ毎に、前記最適化計算を行い、
前記複数のグループのそれぞれに対する前記最適化計算の結果、複数の最適位置が算出された場合、複数の最適位置のそれぞれに対して、前記複数のマーカーの重心位置と複数の前記作業点のそれぞれとの距離の総和を算出し、算出した距離の総和が最小となる最適位置を出力する出力部を更に含む、付記１〜６のうちのいずれか１項に記載のマーカー位置算出装置。
（付記８）
前記出力部は、更に、複数の最適位置のそれぞれに対して、算出した前記距離の総和が小さい順に高い順位を付与し、付与した順位を表す順位情報を出力する、付記７に記載のマーカー位置算出装置。
（付記９）
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出し、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、抽出した前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出する、
処理をコンピューターに実行させる、マーカー位置算出プログラム。
（付記１０）
作業点をロボットに教示するためにカメラにより撮像され画像認識される複数のマーカーを貼り付けることが可能な、物体上の同一平面上の複数の平面領域を、前記物体の３次元モデルに基づいて、抽出し、
前記複数のマーカーの位置関係、及び、前記複数のマーカー及び前記作業点の位置関係に関連する、目的関数及び制約条件に基づいて、抽出した前記複数の平面領域内に前記複数のマーカーを貼り付けるときの最適位置を最適化計算により算出することを含む、コンピューターにより実行されるマーカー位置算出方法。
【符号の説明】
【０１２１】
２    カメラ
３    画像処理装置
５    ロボット
１１    平面抽出部
１２    最適化計算部
１３    作業精度評価部
７０    部品供給トレイ
１００    マーカー位置算出装置
【図１】
2016080663.tif 000011
【図２】
2016080663.tif 000012
【図３】
2016080663.tif 000013
【図４】
2016080663.tif 000014
【図５】
2016080663.tif 000015
【図６】
2016080663.tif 000016
【図７】
2016080663.tif 000017
【図８】
2016080663.tif 000018
【図９】
2016080663.tif 000019
【図１０】
2016080663.tif 000020
【図１１】
2016080663.tif 000021
【図１２】
2016080663.tif 000022
【図１３】
2016080663.tif 000023
【図１４】
2016080663.tif 000024
【図１５】
2016080663.tif 000025
【図１６】
2016080663.tif 000026
【図１７】
2016080663.tif 000027
【図１８】
2016080663.tif 000028
【図１９】
2016080663.tif 000029
【図２０】
2016080663.tif 000030