(57)【要約】【課題】単一のカメラ２又はステレオカメラ２Ａのキャリブレーションに関し、予め画像座標系でキャリブレーション範囲を設定し、任意の範囲でキャリブレーションすることを可能とする。【解決手段】視覚センサ制御装置１は、ロボット４にターゲットマーク５を設置すると共に、当該ロボット４を動かしてカメラ２の視野内の複数個所でターゲットマーク５を検出することで、当該ロボット４のロボット４座標系とカメラの画像座標系の対応付けを行うキャリブレーション装置であって、カメラ２の画像座標系における画像範囲を設定する画像範囲設定部１０５と、キャリブレーション実行前に、ロボット４を動かしてターゲットマーク５を検出することで、画像範囲に相当するロボット４の動作範囲を計測するキャリブレーション範囲計測部１０６を備える。【選択図】図１
2018111166.tif 000002
【特許請求の範囲】
【請求項１】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置であって、
前記画像座標系における画像範囲を設定する画像範囲設定部と、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測部と、
を備え、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション装置。
【請求項２】
前記キャリブレーション範囲は平面上に設定される、請求項１に記載のキャリブレーション装置。
【請求項３】
前記キャリブレーション範囲は、前記カメラの光軸に対して垂直になる平面上に設定される、請求項１又は請求項２に記載のキャリブレーション装置。
【請求項４】
前記キャリブレーション範囲は、前記カメラの光軸に対して斜めになる平面上に設定される、請求項１又は請求項２に記載のキャリブレーション装置。
【請求項５】
前記キャリブレーション範囲は、少なくとも２つの平面上のそれぞれに設定される、請求項１乃至請求項４の何れか１項に記載のキャリブレーション装置。
【請求項６】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、
前記画像座標系における画像範囲を設定する画像範囲設定ステップと、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップと、
を備え、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション方法。
【請求項７】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置を制御するコンピュータに、
前記画像座標系における画像範囲を設定する画像範囲設定ステップと、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップと、
を実行させ、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とするプログラム。
【請求項８】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ及び第２のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置であって、
前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定部と、
前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定部と、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測部と、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測部と、を備え、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション装置。
【請求項９】
前記第１のキャリブレーション範囲及び前記第２のキャリブレーション範囲は、それぞれ平面上に設定される、請求項８に記載のキャリブレーション装置。
【請求項１０】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ及び第２のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、
前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定ステップと、
前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定ステップと、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測ステップと、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測ステップと、を備え、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション方法。
【請求項１１】
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ及び第２のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置を制御するコンピュータに、
前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定ステップと、
前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定ステップと、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測ステップと、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測ステップと、を実行させ、
前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、視覚センサのキャリブレーションに関し、単一のカメラ又は複数のカメラを備えるステレオカメラのキャリブレーション時において、ターゲットマークを検出する範囲を計測するキャリブレーション装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
ロボットシステムではロボットに視覚機能を持たせ、その視覚機能によって対象物の位置を認識させて、ワークのハンドリングや加工などの作業が行われている。その視覚機能はロボットのハンド付近に取り付けられた視覚センサやロボットの周辺に設置された視覚センサが対象物を撮像することによって実現される。このようなロボットシステムにおいては、ロボットから見た対象物の位置を取得するには、画像上の対象物の位置を、ロボットから見た対象物の位置に変換するためのキャリブレーションデータが必要になる。
【０００３】
従来、キャリブレーションデータを求める方法は様々なものがある。例えば、特許文献１では、格子状のパターンをロボットのアーム先端に取り付け、固定設置された視覚センサで計測する方法（「方法Ａ」という）が提案されている。また、特許文献２では、予めロボットの手先座標系において位置姿勢が求まっているターゲットマークをアーム先端にとりつけ、そのターゲットマークを視覚センサで撮像した画像内での位置を複数箇所で求めることによりキャリブレーションする方法（「方法Ｂ」という）が提案されている。
【０００４】
方法Ａでキャリブレーションする場合には、予めキャリブレーションに使用するパターンを用意する必要がある。カメラの視野が用意したパターンに対して広過ぎる場合や狭過ぎる場合には、精度良くキャリブレーションできないという問題がある。
それに対して、方法Ｂでキャリブレーションをする場合には、方法Ａと比べて、より広い視野をキャリブレーションしたり、より狭い視野をキャリブレーションしたりすることが可能となり、キャリブレーションの自由度をより向上させることができるというメリットがある。
なお、３次元的な計測をする際には、例えば、特許文献３に記載されているように、視覚センサとしてステレオカメラを使うことがある。ステレオカメラには対象物のテクスチャを使って対応点のマッチングを行うパッシブステレオ方式や対象物に投影したパターンを使って対応点のマッチングを行うアクティブステレオ方式がある。いずれの場合でも、ステレオカメラを構成する２つ以上のカメラをキャリブレーションすることが必要となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２６９０６０３号公報
【特許文献２】特開２０１５−１７４１９１号公報
【特許文献３】特開２０１０−１７２９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
視覚センサ（例えば、カメラ）のキャリブレーションの精度を高めるためには、視野の範囲の広い領域にわたってターゲットマークを移動させ、視覚センサ（例えば、カメラ）をキャリブレーションすることが望ましい。
また、視野の範囲内にターゲットマークを移動させると障害物などにぶつかる場合には、ターゲットマークを移動させる範囲を制限する必要がある。
このため、視覚センサ（例えば、カメラ）をキャリブレーションする前に、視野の範囲の広い領域にわたってターゲットマークを移動させることが可能となるように、なんらかの方法で、キャリブレーション時にターゲットマークを移動させる平面内において、移動させたターゲットマークを撮像する、当該ターゲットマークの移動範囲（以下「キャリブレーション範囲」ともいう）を設定する必要がある。キャリブレーション範囲は、ロボット座標系上で指定することもできる。しかし、ターゲットマークが視野内に入り、かつ、障害物にぶつからないような範囲をロボット座標系で指定するためには、ユーザが手動でロボットを操作しながら、カメラによって撮像される画像でターゲットマークを確認する必要がある。このような煩雑な操作をなくすためには、キャリブレーション範囲を撮像した画像上で指定できることが望ましい。
同様に、ステレオカメラのように複数のカメラをキャリブレーションするときには、複数のカメラはそれぞれ離れた場所に取り付けられていることから、それぞれのカメラを独立してキャリブレーションすることが必要となる。すなわち、各カメラをキャリブレーションする前には、移動させたターゲットマークが各カメラの撮像範囲（画角内）に撮像されるように、ターゲットマークを移動させる平面内において、当該ターゲットマークの移動範囲（キャリブレーション範囲）を第１のカメラ２１及び第２のカメラ２２に対して設定する必要がある。
【０００７】
この点、特許文献２には、撮像部４０をキャリブレーションする前に、ワーク１が移動する平面であって、撮像部４０の撮像範囲内（画角内）に、当該ワーク１の移動範囲（キャリブレーション範囲）を設定することについて記載はない。また、特許文献２に記載のキャリブレーションは、単一のカメラをキャリブレーションするに過ぎず、ステレオカメラのような複数のカメラをキャリブレーションするものではない。また、特許文献３に記載のキャリブレーションは、そもそも、基礎行列算出用治具としてのチェッカーボードをロボットのアーム先端に取り付け、それをステレオカメラで撮像することで、キャリブレーションするものであり、ターゲットマークをアーム先端にとりつけ、そのターゲットマークをステレオカメラで撮像した画像内での位置を複数箇所で求めることによりキャリブレーションするものではない。
【０００８】
本発明は、予めターゲットマークが移動する空間内において、単一の視覚センサ（例えば、カメラ）の視野の範囲、又はステレオカメラの各カメラの視野の範囲において、当該ターゲットマークの移動範囲（キャリブレーション範囲）を設定することを可能とするキャリブレーション装置、方法、及びプログラムを提供する。
【課題を解決するための手段】
【０００９】
（１）本発明に係るキャリブレーション装置（例えば、後述の「視覚センサ制御装置１」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラ（例えば、後述の「カメラ２」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置であって、前記画像座標系における画像範囲を設定する画像範囲設定部（例えば、後述の「第１画像範囲設定部１０５」）と、キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測部（例えば、後述の「第１キャリブレーション範囲計測部１０６」）と、を備え、キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする。
【００１０】
（２）(１)に記載のキャリブレーション装置において、前記キャリブレーション範囲は平面上に設定されるように構成してもよい。
【００１１】
（３）(１)又は（２）に記載のキャリブレーション装置において、前記キャリブレーション範囲は、前記カメラの光軸に対して垂直になる平面上に設定されるように構成してもよい。
【００１２】
（４）(１)又は（２）に記載のキャリブレーション装置において、前記キャリブレーション範囲は、前記カメラの光軸に対して斜めになる平面上に設定されるように構成してもよい。
【００１３】
（５）(１)又は（４）に記載のキャリブレーション装置において、前記キャリブレーション範囲は、少なくとも２つの平面上のそれぞれに設定されるように構成してもよい。
【００１４】
（６）本発明に係るキャリブレーション方法（例えば、後述の「視覚センサ制御方法」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラ（例えば、後述の「カメラ２」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、前記画像座標系における画像範囲を設定する画像範囲設定ステップ(例えば、後述の「第１画像範囲設定ステップ」)と、キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップ（例えば、後述の「キャリブレーション範囲計測ステップ」）と、を備え、キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする。
【００１５】
（７）本発明に係るプログラム（例えば、後述の「プログラム」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラ（例えば、後述の「カメラ２」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置を制御するコンピュータに、前記画像座標系における画像範囲を設定する画像範囲設定ステップ(例えば、後述の「第１画像範囲設定ステップ」)と、キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップ（例えば、後述の「キャリブレーション範囲計測ステップ」）と、を実行させ、キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする。
【００１６】
（８）本発明に係るキャリブレーション装置（例えば、後述の「視覚センサ制御装置１Ａ」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ（例えば、後述の「第１のカメラ２１」）及び第２のカメラ（例えば、後述の「第２のカメラ２２」）を備えるステレオカメラ（例えば、後述の「ステレオカメラ２Ａ」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置であって、前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定部（例えば、後述の「第１画像範囲設定部１０５」）と、前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定部（例えば、後述の「第２画像範囲設定部１０５２」）と、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測部（例えば、後述の「第１キャリブレーション範囲計測部１０６」）と、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測部（例えば、後述の「第２キャリブレーション範囲計測部１０６２」）と、を備え、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする。
【００１７】
（９）(８)に記載のキャリブレーション装置において、前記第１のキャリブレーション範囲及び前記第２のキャリブレーション範囲は、それぞれ平面上に設定されるように構成してもよい。
【００１８】
（１０）本発明に係るキャリブレーション方法（例えば、後述の「視覚センサ制御方法」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ（例えば、後述の「第１のカメラ２１」）及び第２のカメラ（例えば、後述の「第２のカメラ２２」）を備えるステレオカメラ（例えば、後述の「ステレオカメラ２Ａ」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定ステップ（例えば、後述の「第１画像範囲設定ステップ」）と、前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定ステップ（例えば、後述の「第２画像範囲設定ステップ」）と、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測ステップ（例えば、後述の「第１キャリブレーション範囲計測ステップ」）と、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測ステップ（例えば、後述の「第２キャリブレーション範囲計測ステップ」）と、を備え、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする。
【００１９】
（１１）本発明に係るプログラム（例えば、後述の「プログラム」）は、ロボット（例えば、後述の「ロボット４」）にターゲットマーク（例えば、後述の「ターゲットマーク５」）を設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第１のカメラ（例えば、後述の「第１のカメラ２１」）及び第２のカメラ（例えば、後述の「第２のカメラ２２」）を備えるステレオカメラ（例えば、後述の「ステレオカメラ２Ａ」）の視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第１のカメラの画像座標系における位置情報及び前記第２のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置を制御するコンピュータに、前記第１のカメラの画像座標系における第１の画像範囲を設定する第１画像範囲設定ステップ（例えば、後述の「第１画像範囲設定ステップ」）と、前記第２のカメラの画像座標系における第２の画像範囲を設定する第２画像範囲設定ステップ（例えば、後述の「第２画像範囲設定ステップ」）と、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第１のカメラで検出することで、前記第１の画像範囲に相当する前記ロボットの第１の動作範囲である第１のキャリブレーション範囲を計測する第１キャリブレーション範囲計測ステップ（例えば、後述の「第１キャリブレーション範囲計測ステップ」）と、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第２のカメラで検出することで、前記第２の画像範囲に相当する前記ロボットの第２の動作範囲である第２のキャリブレーション範囲を計測する第２キャリブレーション範囲計測ステップ（例えば、後述の「第２キャリブレーション範囲計測ステップ」）と、を備え、前記第１のカメラ及び前記第２のカメラのキャリブレーション実行時には、前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ターゲットマークをキャリブレーション時に移動させる空間内において、キャリブレーション前に予め単一の視覚センサの視野の範囲、又はステレオカメラの各カメラの視野の範囲に基づいて、当該ターゲットマークの移動範囲となるロボットの動作範囲（キャリブレーション範囲）を計測することで、キャリブレーションの自由度を高めることができるキャリブレーション装置、方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】ロボットシステム１０００の全体の構成図である。
【図２】ターゲットマーク５の一例を示す図である。
【図３】視覚センサ制御装置１の機能構成を示す機能ブロック図である。
【図４】視覚センサ制御装置１におけるＣＰＵ１０の機能構成を示すブロック図である。
【図５】モデルパターンを生成するフローチャートを示す。
【図６】モデルパターン指定領域の一例を示す。
【図７】ターゲットマーク５の３次元位置を計測する点Ｐの一例を示す。
【図８Ａ】キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する第１キャリブレーション範囲計測部１０６のフローチャートを示す。
【図８Ｂ】キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する第１キャリブレーション範囲計測部１０６のフローチャートを示す。
【図９Ａ】キャリブレーション範囲内をアーム４１の先端部分に取り付けられたターゲットマーク５を移動させる場合の軌道の一例を示す図である。
【図９Ｂ】キャリブレーション範囲内をアーム４１の先端部分に取り付けられたターゲットマーク５を移動させる場合の軌道の一例を示す図である。
【図１０】第１実施形態に係るカメラ２のキャリブレーション処理を示すフローチャートを示す。
【図１１Ａ】キャリブレーション範囲が設定される平面の一例を示す図である。
【図１１Ｂ】キャリブレーション範囲が設定される平面の一例を示す図である。
【図１２】第２実施形態におけるステレオカメラ２Ａを使用したキャリブレーションを実施するためのロボットシステム１０００の全体の構成図である。
【図１３Ａ】ステレオカメラ２Ａの配置状態の一例を示す図である。
【図１３Ｂ】ステレオカメラ２Ａの配置状態の一例を示す図である。
【図１４】視覚センサ制御装置１ＡにおけるＣＰＵ１０の機能構成を示すブロック図である。
【図１５】第２実施形態に係るステレオカメラ２Ａのキャリブレーション処理を示すフローチャートを示す。
【発明を実施するための形態】
【００２２】
［第１実施形態］
以下、本発明の実施形態の一例（第１実施形態）について説明する。
図１は、視覚センサのキャリブレーションに関し、単一のカメラ２を使用したキャリブレーションを実施するためのロボットシステム１０００の全体の構成図である。
図１に示すように、ロボットシステム１０００は、単一のカメラ２により撮像される画像データを画像処理して３次元計測を行う視覚センサ制御装置１と、先端部にターゲットマーク５が取り付けられたアーム４１を有するロボット４と、ロボット４を制御するロボット制御装置３と、を備える。カメラ２は、架台（図示せず）に固定される。本実施形態では、キャリブレーション装置として、視覚センサ制御装置１を例示する。
【００２３】
図２は、ターゲットマーク５の一例を示す図である。ターゲットマーク５は、この例に限定されない。ターゲットマーク５は任意の形状のものを使用できる。ただし、モデルパターンとして使用するターゲットマーク５の特徴が２次元平面上にあるようにすることが望ましい。ターゲットマーク５として、例えば、紙やシールに印刷したものをロボット４のアーム４１の先端に貼り付けるようにしてもよい。
【００２４】
ロボット制御装置３はロボット座標系におけるアーム４１の先端の座標位置を現在位置として認識する。したがって、ロボット座標系におけるアーム４１の先端の座標位置と、ターゲットマーク５のロボット４の手先座標系における既知の３次元での位置及び姿勢と、に基づいてロボット制御装置３は、アーム４１を駆動制御した時のターゲットマーク５のロボット座標系における座標位置を常に認識することができる。
ロボット制御装置３は、全体を統括制御するためのＣＰＵ（図示せず）を備え、外部機器インタフェース（図示せず）を介して、視覚センサ制御装置１が接続され、視覚センサ制御装置１に画像処理のトリガ信号を送信したり、視覚センサ制御装置１における画像処理（例えば、ターゲットマーク５の検出処理等）によって得られた画像処理結果等を受信する。
【００２５】
ロボット制御装置３は、キャリブレーション実行時に、予め設定されたキャリブレーションする範囲（「キャリブレーション範囲」）内でアーム４１の先端に取り付けられたターゲットマーク５を移動させるようにアーム４１を駆動制御する。キャリブレーション範囲の具体的な計測処理については、後述する。
【００２６】
ロボット制御装置３は、ロボット４のアーム４１の先端に取り付けられたターゲットマーク５のロボット座標系における座標位置を計測する。すなわち、ターゲットマーク５の移動先のロボット座標系での座標位置を計測することができる。
【００２７】
［視覚センサ制御装置１について］
キャリブレーション装置としての視覚センサ制御装置１には、カメラ２が接続されており、カメラ２によりターゲットマーク５を撮像し、カメラ２のキャリブレーションを行う。
【００２８】
図３は、視覚センサ制御装置１の機能構成を示す機能ブロック図である。
視覚センサ制御装置１は、全体を統括制御するためのＣＰＵ（中央演算処理装置）１０を備えている。ＣＰＵ１０にはバス１１を介して、複数のフレームメモリ１２、ＲＯＭ（読み出し専用メモリ）１３、ＲＡＭ（ランダムアクセスメモリ）１４、不揮発性ＲＡＭ１５が接続されている。また、バス１１には、カメラインタフェース１６を介してカメラ２が接続されると共に、モニタインタフェース１７を介してモニタ１９が接続されている。さらに、ＣＰＵ１０には、バス１１を介して外部機器インタフェース１８が接続されている。
外部機器インタフェース１８にはロボット制御装置３が接続され、ロボット制御装置３からターゲットマーク５の座標位置を受信したり、視覚センサ制御装置１における画像処理（例えば、ターゲットマーク５の検出処理等）によって得られた画像処理結果等を送信する。
【００２９】
ＲＯＭ１３には、視覚センサ制御装置１で行われる様々な処理のためのプログラムが格納される。また、一般にＲＡＭへのアクセスはＲＯＭへのアクセスよりも高速であることから、ＣＰＵ１０は、ＲＯＭ１３に格納されたプログラムを予めＲＡＭ１４上に展開しておき、ＲＡＭ１４からプログラムを読み込んで実行してもよい。また、ＲＡＭ１４には、プログラムの実行時に必要な一時待避データが格納される。
不揮発性ＲＡＭ１５は、磁気記憶装置、フラッシュメモリ、ＭＲＡＭ、ＦＲＡＭ（登録商標）、ＥＥＰＲＯＭ、又はバッテリでバックアップされるＳＲＡＭ若しくはＤＲＡＭ等であり、視覚センサ制御装置１の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。不揮発性ＲＡＭ１５には、プログラム実行時に必要な設定などが記憶される。
フレームメモリ１２には画像データが格納される。
【００３０】
［モデルパターンについて］
不揮発性ＲＡＭ１５は、基準情報記憶部１５１と、検出結果記憶部１５２と、を備える。基準情報記憶部１５１は、対象物（ターゲットマーク５）を表す基準情報（「モデルパターン」又は「テンプレート」ともいう）を記憶する。基準情報としては、例えば対象物（ターゲットマーク５）のエッジ点からなる集合（「エッジ点群」ともいう）を採用してもよい。エッジ点とは、画像上での輝度変化が大きな点である。
例えば、対象物（ターゲットマーク５）に公知のＳｏｂｅｌフィルタをかけてエッジ画像へ変換し、エッジ画像中から予め定められた閾値以上の強度を有する画素（エッジ点）を抽出し、エッジ点群とすることができる。このように、検出すべき対象物（ターゲットマーク５）を含む画像から抽出したエッジ点群をモデルパターンとして基準情報記憶部２２１に記憶しておく。
なお、モデルパターンはエッジ点に限定されない。例えば、公知のＳＩＦＴのような特徴点を使用してもよい。また、対象物（ターゲットマーク５）の輪郭線に合うように線分、矩形、円などの幾何図形を配置することでモデルパターンを生成してもよい。その場合、輪郭線を構成する幾何図形上に適当な間隔で特徴点を設ければよい。または、モデルパターンは、ターゲットマーク５を撮像した画像からモデルパターン指定領域の箇所を切り抜いたテンプレート画像でもよい。
このように生成されたモデルパターンを基準情報記憶部２２１に予め記憶することを、「モデルパターンを教示する」ともいう。
モデルパターンの教示については後述する。
【００３１】
検出結果記憶部１５２は、ターゲットマーク５を設定されたキャリブレーション範囲を移動させた場合、それぞれの移動先において、教示されたモデルパターンを使用してカメラ２により撮像される画像データからターゲットマーク５を検出した結果を記憶する。
【００３２】
カメラ２は、ＣＰＵ１０からの指令に従って、対象物を撮像して画像を取得し、取得した画像に関する信号を出力する。カメラインタフェース１６は、ＣＰＵ１０からの指令に従ってカメラ２に対して露光のタイミングを制御するための同期信号を発生する機能や、カメラ２から受信した信号を増幅する機能を有している。このようなカメラ２やカメラインタフェース１６は市販される一般的なものであり、特に限定されるものではない。
【００３３】
カメラ２から取り込まれた画像に関する信号は、カメラインタフェース１６においてＡ／Ｄ変換され、バス１１を介してディジタル画像データとしてフレームメモリ１２に一時的に格納される。視覚センサ制御装置１では、フレームメモリ１２、ＲＯＭ１３、ＲＡＭ１４及び不揮発性ＲＡＭ１５に格納されているデータを用いてＣＰＵ１０が画像処理を行い、画像処理の結果データが再度フレームメモリ１２に格納される。ＣＰＵ１０は、指令により、フレームメモリ１２に格納されているデータをモニタインタフェース１７に転送してモニタ１９上に表示させ、オペレータなどがデータの内容を確認することを可能にさせるようにしてもよい。
【００３４】
外部機器インタフェース１８は様々な外部機器に接続される。例えば、外部機器インタフェース１８にはロボット制御装置３が接続され、ロボット制御装置３から画像処理のトリガ信号を受けたり、画像処理によって得られた位置情報データ等をロボット制御装置３に供給する。また、外部機器インタフェース１８には、オペレータのための入力装置３３としてキーボードやマウスなどを接続してもよい。
【００３５】
次に、ＣＰＵ１０の有する機能を各処理部の観点から説明する。なお、各処理ステップ（方法）の観点に基づく説明は、「部」を「ステップ」に置き換えることで説明できるため、省略する。
図４は、視覚センサ制御装置１におけるＣＰＵ１０の機能構成を示すブロック図である。ＣＰＵ１０は、モデルパターン生成部１０１と、第１パラメータ設定部１０２と、第１検出部１０３と、第１画像範囲設定部１０５と、第１キャリブレーション範囲計測部１０６と、撮像制御部１０７と、キャリブレーション部１０８と、を備える。
これらの機能部又は機能ステップは、ＲＯＭ１３に格納されたシステムプログラムをＣＰＵ１０が実行することにより実現される。
【００３６】
［モデルパターン生成部１０１］
モデルパターン生成部１０１は、例えばカメラ２により、モデルパターンを生成する。、図５にモデルパターン生成部１０１のモデルパターンを生成するフローチャートを示す。図５を参照しながら、モデルパターン生成部１０１の機能を説明する。
【００３７】
ステップＳ１において、モデルパターン生成部１０１は、カメラ２の視野内に配置されたターゲットマーク５をカメラ２により撮像する制御を行う。なお、このときのカメラ２とターゲットマーク５の位置関係は、ターゲットマーク５を検出するときと同じになるようにして行うことが望ましい。
【００３８】
ステップＳ２において、モデルパターン生成部１０１は、ターゲットマーク５を撮像した画像において、ターゲットマーク５が写った領域を矩形、円形等によりモデルパターン指定領域として設定するとともに、モデルパターン指定領域内にモデルパターン座標系（画像座標系）を定義する。なお、図６にモデルパターン指定領域、モデルパターン座標系（画像座標系）及びモデルパターンの一例を示す。
モデルパターン生成部１０１は、オペレータにより指示された領域をモデルパターン指定領域として設定してもよい。また、モデルパターン生成部１０１が、画像における輝度勾配の大きい個所をターゲットマーク５の像の輪郭として算出して、当該ターゲットマーク５の像の輪郭を内部に含むように、モデルパターン指定領域を設定してもよい。
【００３９】
ステップＳ３において、モデルパターン生成部１０１は、モデルパターン指定領域内でエッジ点を特徴点として抽出し、エッジ点の位置、輝度勾配の方向、輝度勾配の大きさなどの物理量を求め、モデルパターン指定領域内に定義されたモデルパターン座標系で表現される値に変換する。
また、モデルパターン生成部１０１は、オペレータにより指示された点をターゲットマーク５の３次元位置を計測する点Ｐとして設定し、基準情報記憶部１５１に記憶する。ターゲットマーク５の３次元位置を計測する点Ｐが予め指定されることにより、ロボット４の手先座標系における３次元での位置及び姿勢が予め求められる。なお、モデルパターン生成部１０１は、ターゲットマーク５の３次元位置を計測する点Ｐを明示的に指定されない場合には、例えば、モデルパターンの中心点をターゲットマーク５の３次元位置を計測する点として設定してもよい。図７にターゲットマーク５の３次元位置を計測する点Ｐの一例を示す。図７には、ターゲットマーク５の中心点をターゲットマーク５の３次元位置を計測する点Ｐとして設定されている。
なお、前述したように、モデルパターンはエッジ点に限定されない。例えば、公知のＳＩＦＴのような特徴点を使用してもよい。また、対象物（ターゲットマーク５）の輪郭線に合うように線分、矩形、円などの幾何図形を配置することでモデルパターンを生成してもよい。その場合、輪郭線を構成する幾何図形上に適当な間隔で特徴点を設ければよい。または、モデルパターンは、ターゲットマーク５を撮像した画像からモデルパターン指定領域の箇所を切り抜いたテンプレート画像でもよい。
【００４０】
ステップＳ４において、モデルパターン生成部１０１は、生成したモデルパターンを基準情報記憶部１５１に記憶する。
以上のように、モデルパターンは、カメラ２により撮像される画像を使って生成される。
【００４１】
次に、基準情報記憶部１５１に記憶されたモデルパターンを使用して、カメラ２により撮像される画像データからターゲットマーク５を検出するためのパラメータについて説明する。
【００４２】
カメラ２とターゲットマーク５の移動先の位置との距離、光軸との角度等が異なるため、カメラ２によるターゲットマーク５の撮像される画像は、キャリブレーション範囲内におけるターゲットマーク５の移動先によって、モデルパターン生成部１０１により生成されたモデルパターンとはその大きさが異なったり、回転やひずみの生じたアピアランスの相違するものになる可能性がある。このため、モデルパターンと完全に一致するものを検出しようとした場合、カメラ２により撮像される画像データから対象物（ターゲットマーク５）を検出することができないという状況が発生しうる。
【００４３】
［第１パラメータ設定部１０２］
このような状況においても、カメラ２により撮像される画像データから、キャリブレーション範囲内におけるターゲットマーク５の移動先に関わらず、モデルパターンを検出することができるように、第１パラメータ設定部１０２は、カメラ２により撮像される画像データからターゲットマーク５を検出するためのパラメータを設定する。
より具体的には、第１パラメータ設定部１０２により設定されるパラメータは、検出アルゴリズムに依存するものであり、例えば、モデルに対するサイズ、回転、歪み、検出する位置の範囲、角度の範囲等の所定の範囲を有するように構成したり、単一の数値やオンオフ値で構成したりすることができる。なお、パラメータは、ここで例示したものに限らない。
そうすることで、ターゲットマーク５の移動先に関わらず、モデルパターンを検出することができるように、後述の第１検出部１０３は、撮像データから、単一の数値やオンオフ値又は所定の範囲内のパラメータの値でモデルパターンと一致するものを検出できるように構成される。そうすることで、後述の第１検出部１０３は、適切なパラメータの値を適用することにより、撮像データからモデルパターンを検出することができる。
なお、パラメータは、カメラ２により撮像される画像データに適用されるパラメータとしてもよい。この場合、第１検出部１０３は、カメラ２により撮像される画像データにパラメータを適用した画像データから、ターゲットマーク５のモデルパターンを検出するように構成される。例えば、画像データにガウシアンフィルタを掛けて平滑化した画像データからモデルパターンを検出できる。
また、パラメータは、ターゲットマーク５のモデルパターンに適用されるパラメータとしてもよい。この場合、第１検出部１０３は、カメラ２により撮像される画像データから、パラメータを適用したモデルパターンによりターゲットマーク５を検出するように構成される。
【００４４】
第１パラメータ設定部１０２が設定するパラメータのひとつとして、例えば、射影変換、アフィン変換、相似変換等の変換行列をモデルパターンに適用してもよい。
例えば、パラメータの値を単一の数値で構成した場合には、単一の変換行列を選択し、パラメータの値を所定の範囲を有するように構成した場合には、所定の範囲の変換行列を選択可能とするようにすることができる。具体的には、所定の範囲を有するようにパラメータを構成したときには、例えば、射影変換行列の場合、１つの射影変換行列に基づいて、当該射影変換行列のそれぞれの要素との偏差が所定の閾値以下になるような射影変換行列をパラメータの範囲に含むように構成してもよく、回転の場合には、１つの回転角度に基づいて、回転角度の範囲を設定してもよい。また、相似変換についても同様に、１つの相似比に基づいて、相似比の範囲を設定してもよい。
例えば、カメラ２の光軸とキャリブレーション時にターゲットマーク５の移動する平面との角度により（特に当該平面を光軸に対して直角ではなく斜めに傾けた場合）、カメラ２に対してパラメータにより、サイズの範囲を０．９から１．１に設定することができる。
こうすることで、例えば、ターゲットマーク５の移動先が異なることによるターゲットマーク５のアピアランスの相違にロバストな検出を可能とすることができる。
なお、露光時間についても、例えば、カメラ２とターゲットマーク５の置かれる平面との角度、照明との関係等により、パラメータの値を設定することが望ましい。
【００４５】
［第１検出部１０３］
第１検出部１０３は、カメラ２により撮像される画像データからターゲットマーク５を検出し、検出されたターゲットマーク５のカメラ２の画像座標系における座標位置を計測する。
具体的には、第１検出部１０３は、単一の数値、オンオフ値又はパラメータの所定の範囲からパラメータを選択する。なお、パラメータを所定の範囲から選択する際には、例えば、パラメータ範囲の値のなかで中心となる値を最初に選択してもよい。その後、例えば、中心の値から、プラスマイナスの方にそれぞれ、ずらしながら、次のパラメータを選択するようにしてもよい。
【００４６】
第１検出部１０３は、前述したようにパラメータがカメラ２による撮像される画像データに適用されるパラメータの場合、単一の数値、オンオフ値又はパラメータの所定の範囲からパラメータを選択した後に、カメラ２により撮像される画像データからターゲットマークを検出することができるように、当該パラメータにより、画像データを変換する。そうすることで、第１検出部１０３は、公知の検出手法により、変換後の画像データからターゲットマークを検出することができる。
【００４７】
具体的には、第１検出部１０３は、第１パラメータを適用した画像データから、教示されたモデルパターンの特徴点を抽出したのと同じ方法で特徴点を抽出し、パラメータで変換した特徴点とモデルパターンを構成する特徴点との間で公知のマッチングを行うことで、ターゲットマーク５を検出する。
【００４８】
また、逆に、第１検出部１０３は、ターゲットマーク５のモデルパターンを当該パラメータにより変換するようにしてもよい。この場合、第１検出部１０３は、前述した公知の検出手法により、撮像データから変換後のモデルパターンと一致するターゲットマーク５を検出することができる。
具体的には、第１検出部１０３は、カメラ２によって撮像される画像データから、教示されたモデルパターンの特徴点を抽出したのと同じ方法で特徴点を抽出し、特徴点と第１パラメータを適用したモデルパターンの特徴点との間で公知のマッチングを行うことで、ターゲットマーク５を検出する。
第１検出部１０３は、検出されたターゲットマーク５のカメラ２の画像座標系における座標位置を計測する。
【００４９】
［第１画像範囲設定部１０５］
前述したように、本実施形態ではターゲットマーク５を予め指定された平面上で移動させるものとする。この平面は、平行する複数の平面から構成されるものでもよいし、複数の部分平面を連結したものでもよい。第１画像範囲設定部１０５は、ロボット４の動作範囲（キャリブレーション範囲）を求めるために、当該キャリブレーション範囲に相当するカメラ２の画像座標系における画像範囲を設定する。
より具体的には、第１画像範囲設定部１０５は、オペレータからの指示に基づいて、カメラ２で撮像された画像上でカメラ２の画像座標系に基づいて画像範囲を設定する。このような場合、第１画像範囲設定部１０５は、画像範囲を、例えば矩形で指定することができる。
第１画像範囲設定部１０５は、画像全体を画像範囲として設定してもよい。
また、ターゲットマーク５が移動する空間上に障害物等が存在する場合には、第１画像範囲設定部１０５は、オペレータからの指示に基づいて、カメラ２の視野内に存在する障害物を避けるように画像範囲を制限することもできる。この場合、第１画像範囲設定部１０５は、複数の線分により構成される閉じた図形により画像範囲を指定してもよい。
【００５０】
［第１キャリブレーション範囲計測部１０６］
第１キャリブレーション範囲計測部１０６は、キャリブレーション実行前に、ターゲットマーク５が移動するようにロボット４を制御して、第１検出部１０３によりターゲットマーク５を検出することで、第１画像範囲設定部１０５により設定された画像範囲に相当するロボット４の動作範囲であるキャリブレーション範囲（例えば、キャリブレーション範囲の境界を示すロボット座標系における座標位置）を計測する。
より具体的には、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５が第１画像範囲設定部１０５によりカメラ２の画像座標系で指定されたキャリブレーション範囲内で検出できるか否かを、ターゲットマーク５の移動と検出を何度も繰り返すことにより、当該画像範囲に相当するロボット４（すなわちターゲットマーク５）の動作範囲であるキャリブレーション範囲（例えば、キャリブレーション範囲の境界を示すロボット座標系における座標位置）を計測する。
【００５１】
図８Ａ及び図８Ｂにキャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する第１キャリブレーション範囲計測部１０６のフローチャートを示す。図８Ａ及び図８Ｂを参照しながら、第１キャリブレーション範囲計測部１０６の機能を説明する。なお、キャリブレーション時にターゲットマーク５を移動させる平面は、予め指定されている３次元座標系のＸＹ平面として定義されているものとする。なお、平面は３次元座標系のＸＹ平面に限定されない。
【００５２】
ステップＳ１１において、第１キャリブレーション範囲計測部１０６は、カメラ２の視野内にある平面上の初期位置に配置されたターゲットマーク５のロボット座標系における３次元座標位置及びカメラ２の画像座標系における座標位置をそれぞれ、ロボット制御装置３及び第１検出部１０３を介して取得する。なお、ターゲットマーク５は、例えばオペレータによるジョグ操作により初期位置に移動させてもよい。又はロボット制御装置３が記憶している初期位置に移動してもよい。
【００５３】
ステップＳ１２において、第１キャリブレーション範囲計測部１０６は、ロボット制御装置３を介してロボット４（すなわちターゲットマーク５）を平面上、初期位置からＸ軸方向に予め設定されたＸ方向に単位量移動させ、ターゲットマーク５のロボット座標系における３次元座標位置及びターゲットマーク５のカメラ２の画像座標系における座標位置をそれぞれロボット制御装置３及び第１検出部１０３を介して取得する。
【００５４】
ステップＳ１３において、第１キャリブレーション範囲計測部１０６は、ロボット制御装置３を介してロボット４（すなわちターゲットマーク５）を平面上、初期位置からＹ軸方向に予め設定されたＹ方向単位量移動させ、ターゲットマーク５のロボット座標系における３次元座標位置及びターゲットマーク５のカメラ２の画像座標系における座標位置をそれぞれロボット制御装置３及び第１検出部１０３を介して取得する。
【００５５】
ステップＳ１４において、第１キャリブレーション範囲計測部１０６は、平面上のＸ軸方向のＸ方向単位量に対応する、ロボット座標系における３次元ベクトルＶＸ（大きさと方向）及びカメラ２の画像座標系におけるターゲットマーク５の移動量を表す２次元ベクトルｖｘ（大きさと方向）と、平面上のＹ軸方向のＹ方向単位量に対応する、ロボット座標系における３次元ベクトルＶＹ（大きさと方向）及びカメラ２の画像座標系におけるターゲットマーク５の移動量を表す２次元ベクトルｖｙ（大きさと方向）を算出する。
こうすることで、カメラ２の画像座標系における移動量とロボット座標系における移動量とのおおよその対応関係を取得することができる。例えば、以下の式（１）に基づいて算出される変換行列Ｒで画像座標系における位置をロボット座標系におけるおおよその位置に変換することができる。
【数１】
2018111166.tif 000003
なお、ステップＳ１３においてＹ軸方向に予め設定されたＹ方向単位量移動させる場合のベクトル開始位置は初期位置に限定されない。ステップＳ１２において初期位置からＸ方向単位量移動させた後の位置をベクトル開始位置としてもよい。
【００５６】
ステップＳ１５において、第１キャリブレーション範囲計測部１０６は、ステップＳ１４で算出した対応関係に基づいて、カメラ２の画像座標系における初期位置からカメラ２の画像座標系の境界位置（例えば、隅）までの移動量の大きさと方向（ｖ）に対応する、ロボット座標系における当該平面上における初期位置からの移動量の大きさと方向（Ｖ）を算出して設定する。この際、移動量の大きさと方向（Ｖ）に１未満の係数をかけることで、ターゲットマーク５がカメラ２の画像座標系の範囲内で検出される可能性が高いように設定することが望ましい。なお、カメラ２の画像座標系における画像範囲の座標値（例えば４隅を含む境界位置）は予め算出されているものとする。
【００５７】
ステップＳ１６において、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５を移動させる。
具体的には、第１キャリブレーション範囲計測部１０６は、ロボット制御装置３を介して当該平面上における初期位置から、設定された移動量の大きさと方向（Ｖ）に基づいて、ロボット４（すなわちターゲットマーク５）を移動させる。
【００５８】
ステップＳ１７において、第１キャリブレーション範囲計測部１０６は、第１検出部１０３を介してターゲットマーク５を検出できるかどうか、判定する。ターゲットマークを検出できた場合（Ｙｅｓ）、ステップＳ１８に移る。ターゲットマークを検出できなかった場合（Ｎｏ）、ステップＳ１９に移る。
【００５９】
ステップＳ１８において、第１キャリブレーション範囲計測部１０６は、第１検出部１０３を介してターゲットマーク５のカメラ２の画像座標系における座標位置がカメラ２の画像座標系の境界位置（例えば、隅）までの距離が近いか否か（すなわち距離が所定の閾値以下か否か）を判定する。近いと判定した場合（Ｙｅｓ）、ステップＳ２０に移る。近くないと判定した場合、ステップＳ２２に移る。
【００６０】
ステップＳ１９において、第１キャリブレーション範囲計測部１０６は、移動量の大きさと方向を再設定する。
具体的には、初期位置からの移動においてターゲットマーク５が検出できなかったと判定された場合には、第１キャリブレーション範囲計測部１０６は、設定済みの移動量の大きさと方向（Ｖ）に１未満の係数をかけることで、移動量の大きさと方向（Ｖ）を再設定する。この時に使用する係数は、初期位置からの移動の際に使用した係数より小さい値にする必要がある。その後、ステップＳ１６に移る。
【００６１】
ステップＳ２０において、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５のロボット座標系における現在位置及びカメラ２の画像座標系における現在位置を記憶する。
【００６２】
ステップＳ２１において、すべての境界位置に対応する計測が終わったか否かを判定する。すべての境界位置に対応する計測が終わった場合（Ｙｅｓ）、エンドに移る。次の境界位置がある場合（Ｎｏの場合）ステップＳ１５に移る。
【００６３】
ステップＳ２２において、第１キャリブレーション範囲計測部１０６は、現在位置から境界位置までの移動量の大きさと方向（ｖ´）に対応する、ロボット座標系における当該平面上における現在位置からの移動量の大きさと方向（Ｖ´）を設定する。
【００６４】
ステップＳ２３において、第１キャリブレーション範囲計測部１０６は、現在位置から設定された移動量の大きさと方向（Ｖ´）に基づいて、ロボット４（すなわちターゲットマーク５）を移動させる。
【００６５】
ステップＳ２４において、第１キャリブレーション範囲計測部１０６は、第１検出部１０３を介してターゲットマーク５を検出できるかどうか、判定する。ターゲットマーク５を検出できた場合（Ｙｅｓ）、ステップＳ１８に移る。ターゲットマーク５を検出できなかった場合（Ｎｏ）、ステップＳ２５に移る。
【００６６】
ステップＳ２５において、第１キャリブレーション範囲計測部１０６は、設定済みの移動量の大きさと方向（Ｖ´）に１未満の係数をかけることで、移動前の位置からの移動量の大きさと方向（Ｖ´）を再設定する。この時に使用する係数は、移動前の位置からの移動の際に使用した係数より小さい値にする必要がある。その後ステップＳ２３に移る。
以上のように、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５を検出するキャリブレーション範囲の境界を示すロボット座標系における座標位置を計測することができる。なお、前述したフローチャートは、一例であって、これに限定されない。
キャリブレーション実行時には、キャリブレーション装置としての視覚センサ制御装置１は、当該キャリブレーション範囲内でターゲットマーク５を移動させるようにロボット４を制御する。この際、アーム４１が、設定されたキャリブレーション範囲を万遍なく移動することが望ましい。視覚センサ制御装置１は、例えば、図９Ａ又は図９Ｂに示す軌道をターゲットマーク５が移動するように制御してもよい。
【００６７】
［撮像制御部１０７］
撮像制御部１０７は、キャリブレーション実行時に、ロボット４によりキャリブレーション範囲内を移動させられるロボット４のアーム４１の先端に取り付けられたターゲットマーク５を、複数の移動先の位置でカメラ２により撮像する。ここで、複数の移動先の個数としては、キャリブレーションができるだけの最小個数より大きな個数（例えば、２０以上）とすることが望ましい。そうすることで、キャリブレーションの精度を高めることが可能となる。
【００６８】
［キャリブレーション部１０８］
キャリブレーション部１０８は、キャリブレーション実行時に、ロボット制御装置３により移動させられた、ロボット４のアーム４１の先端に取り付けられたターゲットマーク５の複数の移動先における、カメラ２により撮像される画像データ中のターゲットマーク５のカメラ２の画像座標系における座標位置と、カメラ２により撮像される時のターゲットマーク５のロボット座標系における座標位置と、を検出結果記憶部１５２に記憶する。
その後、キャリブレーション部１０８は、検出結果記憶部１５２に記憶された、ターゲットマーク５のカメラ２のカメラの画像座標系における座標位置と、カメラ２により撮像される時のターゲットマーク５のロボット座標系における座標位置と、に基づいてカメラ２のキャリブレーションを行う。
【００６９】
図１０は、本実施形態に係る視覚センサ制御装置１（ＣＰＵ１０）によるカメラ２のキャリブレーション処理を示すフローチャートである。
【００７０】
ステップＳ３１において、モデルパターンの生成及びパラメータの設定をする。
【００７１】
ステップＳ３２において、ＣＰＵ１０（第１画像範囲設定部１０５）は、オペレータの指定により、(キャリブレーション範囲に相当する)カメラ２に対する画像範囲を画像座標系で設定する。オペレータは、カメラ２で撮像した画像上で、（キャリブレーション範囲に相当する）画像範囲を指定することができる。
【００７２】
ステップＳ３３において、第１キャリブレーション範囲計測部１０６は、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
具体的には、前述したように、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５が画像範囲内で検出できるか否かを、ターゲットマーク５の移動と検出を何度も繰り返すことにより、キャリブレーション範囲（例えば、ロボットの動作範囲の境界を示すロボット座標系における座標位置）を計測する。（なお、ステップＳ３３内における処理は、前述した第１キャリブレーション範囲計測部１０６の処理フローに基づく。）
【００７３】
ステップＳ３４において、ＣＰＵ１０（キャリブレーション部１０８）は、計測回数をカウントするための計測カウンタに１を設定する。
【００７４】
ステップＳ３５において、ＣＰＵ１０（キャリブレーション部１０８）は、ロボット制御装置３により計測されたターゲットマーク５のロボット座標系における３次元座標位置を取得する。
【００７５】
ステップＳ３６において、ＣＰＵ１０（第１検出部１０３）は、カメラ２により撮像される画像データから、ターゲットマーク５を検出し、検出されたターゲットマーク５のカメラ２の画像座標系における座標位置を計測する。
【００７６】
ステップＳ３７において、ＣＰＵ１０（キャリブレーション部１０８）は、現在位置におけるターゲットマーク５のロボット座標系における３次元座標位置、カメラ２の画像座標系における座標位置を関係付けて記憶する。
【００７７】
ステップＳ３８において、ＣＰＵ１０（キャリブレーション部１０８）は、計測回数をカウントするための計測カウンタに１を加算する。
【００７８】
ステップＳ３９において、計測カウンタが所定の値を超えるか否かを判定する。計測カウンタが所定の値を超える場合（Ｙｅｓ）、ステップ４１に移る。計測カウンタが所定の値を超えない場合（Ｎｏ）、ステップ４０に移る。
【００７９】
ステップＳ４０において、ロボット制御装置３は、ロボット４のアーム４１の先端に取り付けられたターゲットマーク５を、キャリブレーション範囲内のカメラ２から計測できる場所に移動する。その後、ステップＳ３４に移る。
【００８０】
ステップＳ４１において、ＣＰＵ１０（キャリブレーション部１０８）は、ステップ３７において記憶された、ターゲットマーク５のロボット座標系における３次元座標位置及びカメラ２の画像座標系における座標位置との関係に基づいて、カメラ２のキャリブレーションを実行する。
【００８１】
なお、本処理フローは一例であり、これに限定されない。
【００８２】
以上のように、第１実施形態における視覚センサ制御装置１は、カメラ２の画像座標系における画像範囲を設定する第１画像範囲設定部１０５と、キャリブレーション実行前に、ロボット４を制御してターゲットマーク５を移動させてターゲットマーク５を検出することで、当該画像範囲に相当するロボットの動作範囲であるキャリブレーション範囲を計測する第１キャリブレーション範囲計測部１０６と、を備える。
これにより、キャリブレーション前に予め単一の視覚センサの視野の範囲に基づいて、ターゲットマーク５の移動範囲となるロボットの動作範囲（キャリブレーション範囲）を計測することで、キャリブレーションの自由度を高めることができる。また、ターゲットマーク５の移動する範囲をカメラの視野いっぱいに広くとることができ、キャリブレーションがより正確になる。また、ターゲットマーク５が移動する平面上に障害物等が存在する場合には、オペレータからの指示に基づいて、カメラ２の視野内に存在する障害物を避けるように画像範囲を指定することにより、キャリブレーション範囲を効率的に設定することができる。
【００８３】
なお、キャリブレーション範囲は平面上に設定することができ、ターゲットマーク５をキャリブレーション時に移動させる平面としては、カメラ２の光軸に対して垂直になる平面、又は図１１Ａに示すように、カメラ２の光軸に対して斜めになる平面となるように構成することができる。また、図１１Ｂに示すように、キャリブレーション範囲を少なくとも２つの平面上のそれぞれに設定することができる。
そうすることで、キャリブレーション範囲を広げることができ、キャリブレーションの自由度がさらに増し、キャリブレーションがより正確になる。
【００８４】
第１実施形態におけるキャリブレーション方法、及び第１実施形態におけるプログラムについても、第１実施形態における視覚センサ制御装置１と同様の効果を奏する。
【００８５】
以上、本発明の第１実施形態について説明したが、本発明は前述した第１実施形態に限るものではない。また、第１実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、第１実施形態に記載されたものに限定されるものではない。
【００８６】
［変形例１］
第１実施形態においては、モデルパターン生成部１０１は、カメラ２によりモデルパターンを生成して記憶するように構成したが、カメラ２によりモデルパターンを生成することに替えて、既存の形状（例えば、○形状）をターゲットマーク５とするように構成してもよい。
［変形例２］
第１実施形態ではターゲットマーク５を予め指定された平面上で移動させるものとし、この平面上におけるキャリブレーション範囲を計測したが、キャリブレーション範囲は任意の３次元空間で定義してもよい。こうすることで、キャリブレーションの自由度がさらに増すことが期待される。
例えば、予め指定される平面を平行する複数の平面から構成されるものとして、また複数の部分平面を連結したものとしてもよい。
例えば、図１１Ｂに示すように、少なくとも２つの平面を含むように構成してもよい。複数の平面を含む場合には、第１キャリブレーション範囲計測部１０６は、それぞれの平面において、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
また、例えば、３次元座標系で２つの平面を定義しておいて、各平面とカメラ２により撮像される画像の隅への視線の交わる点で定義される６面体内の空間をキャリブレーション範囲とするように構成してもよい。この場合には、第１キャリブレーション範囲計測部１０６は、当該６面体内において、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
【００８７】
［第２実施形態］
次に、第２の実施形態について説明する。第２実施形態は、キャリブレーション装置としての視覚センサ制御装置１Ａが、少なくとも第１のカメラ２１及び第２のカメラ２２を備えるステレオカメラ２Ａの画像範囲内に、移動させたターゲットマーク５が撮像される、ロボット４の動作範囲であるキャリブレーション範囲を設定する。
なお、第２実施形態の説明において、第１実施形態と共通する構成や機能については説明を省略し、第２実施形態に特有の点について説明する。
【００８８】
図１２は、ステレオカメラのキャリブレーションに関し、第１のカメラ２１及び第２のカメラ２２を備えるステレオカメラ２Ａを使用したキャリブレーションを実施するためのロボットシステム１０００の全体の構成図である。ステレオカメラを構成するカメラは２台に限らず、２台以上であればよい。また、ステレオカメラを構成するそれぞれのカメラは単一のカメラとしても使用できることは言うまでもない。ステレオカメラ２Ａは、架台（図示せず）に固定される。第１のカメラ２１及び第２のカメラ２２は、図１３Ａに示すように平行に配置してもよい。また、図１３Ｂに示すように、第１のカメラ２１及び第２のカメラ２２をそれぞれ傾けて配置してもよい。
第１のカメラ２１及び第２のカメラ２２をそれぞれ傾けて配置することで、第１のカメラ２１及び第２のカメラ２２を平行に配置する場合に比較して、第１のカメラ２１による撮像領域と第２のカメラ２２による撮像領域との重なり領域を大きくとることが可能となる。すなわち、ステレオカメラ２Ａによる３次元計測の可能な領域を、第１のカメラ２１及び第２のカメラ２２を平行に配置する場合に比較して、大きくとることができる。
なお、第１のカメラ２１及び第２のカメラ２２の視野範囲、レンズ等を同じ構成にすることが望ましい。そうすることで、ターゲットマーク５の見え方が同じようになることが期待できる。
【００８９】
［視覚センサ制御装置１Ａについて］
視覚センサ制御装置１Ａには、ステレオカメラ２Ａが接続されており、第１のカメラ２１及び第２のカメラ２２によりターゲットマーク５をそれぞれ撮像し、第１のカメラ２１及び第２のカメラ２２のキャリブレーションをそれぞれ行う。
【００９０】
キャリブレーション装置としての視覚センサ制御装置１Ａの機能構成は、バス１１にカメラインタフェース１６を介してステレオカメラ２Ａ（第１のカメラ２１及び第２のカメラ２２）が接続される点を除き、第１実施形態の視覚センサ制御装置１の機能構成（図３）と同じである。視覚センサ制御装置１Ａの機能構成は、前述の図３を参照する。
【００９１】
図１４は、視覚センサ制御装置１ＡにおけるＣＰＵ１０の機能構成を示すブロック図である。図１４に示すように、視覚センサ制御装置１ＡにおけるＣＰＵ１０は、モデルパターン生成部１０１と、第１パラメータ設定部１０２と、第１検出部１０３と、第１画像範囲設定部１０５と、第１キャリブレーション範囲計測部１０６と、第２パラメータ設定部１０２２と、第２検出部１０３２と、第２画像範囲設定部１０５２と、第２キャリブレーション範囲計測部１０６２と、撮像制御部１０７と、キャリブレーション部１０８と、を備える。
【００９２】
モデルパターン生成部１０１は、第１のカメラ２１の視野内に配置されたターゲットマーク５を第１のカメラ２１により撮像することにより、モデルパターンを生成する。第２のカメラ２２に対するモデルパターンとしては、第１のカメラ２１により撮像される画像を使って生成されたモデルパターンを流用する。なお、第２のカメラ２２の視野内に配置されたターゲットマーク５を第２のカメラ２２により撮像することにより、第２のカメラ２２のためのモデルパターンを個別に生成してもよい。
【００９３】
第１パラメータ設定部１０２は、第１のカメラ２１により撮像される画像データからターゲットマーク５のモデルパターンを検出するための第１パラメータを設定する。
なお、第1パラメータ設定部１０２の機能は、第１実施形態における第１パラメータ設定部１０２と同等である。
【００９４】
［第２パラメータ設定部１０２２］
次に、第１のカメラ２１により生成されたターゲットマーク５のモデルパターンを使用して、第２のカメラ２２により撮像される画像データから当該モデルパターンを検出するための第２パラメータを設定する第２パラメータ設定部１０２２について説明する。
第２パラメータ設定部１０２２は、第２のカメラ２２により撮像される画像データからターゲットマーク５のモデルパターンを検出するための第２パラメータを第１パラメータに基づいて設定する。
より具体的には、第２パラメータ設定部１０４は、第２パラメータの値を初期設定する際に第１パラメータをそのまま使用する。
または、第２パラメータの値を初期設定する際に、例えば、第２パラメータを所定の範囲とする場合には、第２パラメータ設定部１０４は、第１パラメータの範囲と同一の範囲を設定したり、第２パラメータの範囲が、第１パラメータ設定部１０２により設定される第１パラメータの所定の範囲を含む広い範囲として設定することができる。このような場合には、後述する第２検出部１０５により、ある第２パラメータの値を適用することで、第２のカメラ２２により撮像される画像データからターゲットマーク５のモデルパターンを検出することができた場合、第２パラメータ設定部１０４は、当該第２パラメータを中心として、第１パラメータの所定の範囲における中心値からの偏差に基づいて、第２パラメータの値の範囲を設定し直すことができる。
例えば、第１パラメータにおけるサイズの範囲を０．９から１．１に設定していた場合、中心値は１．０であって、第１パラメータの所定の範囲における中心値からの偏差は０．１となる。
他方、第２のカメラ２２の対象物（ターゲットマーク５）について、第２のカメラ２２において第２パラメータにおけるサイズを０．９５とすることで対象物（ターゲットマーク５）を検出することができた場合、第２パラメータの中心値を０．９５とし、第１パラメータの偏差を第２パラメータに指定する。すなわち、第２パラメータの値の範囲は、中心値を０．９５とする範囲［０．８５〜１．０５］に設定する。
このように、第２パラメータの値の範囲を初期設定時の範囲を見直すことが可能となり、第２のカメラ２２の撮像データからのモデルパターンの検出をより効率的に実施することが可能となる。なお、第２パラメータは、ここで例示したものに限らない。
【００９５】
［第１検出部１０３］
第１検出部１０３は、第１のカメラ２１により撮像される画像データからターゲットマーク５のモデルパターンを検出し、検出されたターゲットマーク５の第１のカメラ２１の画像座標系における座標位置を計測する。なお、第1検出部１０３の機能は、第１実施形態における第１検出部１０３の機能と同等である。
【００９６】
［第２検出部１０３２］
第２検出部１０３２は、第２のカメラ２２により撮像される画像データからターゲットマーク５のモデルパターンを検出し、検出されたターゲットマーク５の第２のカメラ２２の画像座標系における座標位置を計測する。
なお、第２検出部１０３２の検出処理については、第１実施形態で説明した第１検出部１０３において、カメラ２、第１パラメータ設定部１０２及びパラメータをそれぞれ、第２のカメラ２２、第２パラメータ設定部１０２２、及び第２パラメータに読み替えることで説明できる。
【００９７】
［第１画像範囲設定部１０５］
第１画像範囲設定部１０５は、オペレータからの指示に基づいて、第１のカメラ２１で撮像された画像上で第１のカメラ２１の画像座標系に基づいて第１の画像範囲を設定する。第１の画像範囲は画像全体であってもよい。
第１画像範囲設定部１０５は、第１の画像範囲を、例えば矩形で指定することができる。
また、アーム４１の先端部分に取り付けられたターゲットマーク５が移動する平面上に障害物等が存在する場合には、第１画像範囲設定部１０５は、オペレータからの指示に基づいて、第１のカメラ２１の視野内に存在する障害物を避けるように第１の画像範囲を制限することもできる。この場合、第１画像範囲設定部１０５は、複数の線分により構成される閉じた図形により第１の画像範囲を指定してもよい。なお、第１画像範囲設定部１０５の機能は、第１実施形態における第１画像範囲設定部１０５の機能と同等である。
【００９８】
［第２画像範囲設定部１０５２］
第２画像範囲設定部１０５２は、第１画像範囲設定部１０５と同様に、第２のカメラ２２で撮像された画像上で第２のカメラ２２の画像座標系に基づいて第２の画像範囲を設定する。
なお、第２画像範囲設定部１０５２の処理については、第１実施形態で説明した第１画像範囲設定部１０５において、カメラ２を第２のカメラ２２に読み替えることで説明できる。
【００９９】
［第１キャリブレーション範囲計測部１０６］
第１キャリブレーション範囲計測部１０６は、キャリブレーション実行前に、ターゲットマーク５が移動するようにロボット４を制御して、第１検出部１０３によりターゲットマーク５を検出することで、第１画像範囲設定部１０５により設定された第１の画像範囲に相当するロボット４の動作範囲である第１のキャリブレーション範囲を計測する。
より具体的には、第１キャリブレーション範囲計測部１０６は、ターゲットマーク５が第１のカメラにより第１の画像範囲内で検出できるか否かを、ターゲットマーク５の移動と検出を何度も行うことにより、当該第１の画像範囲に相当するロボット４の動作範囲である第１のキャリブレーション範囲を計測する。なお、第１キャリブレーション範囲計測部１０６の機能は、第１実施形態における第１キャリブレーション範囲計測部１０６の機能と同等である。
【０１００】
［第２キャリブレーション範囲計測部１０６２］
同様に、第２キャリブレーション範囲計測部１０６２は、ターゲットマーク５が第２のカメラにより第２の画像範囲内で検出できるか否かを、ターゲットマーク５の移動と検出を何度も行うことにより、当該第２の画像範囲に相当するロボット４の動作範囲である第２のキャリブレーション範囲を計測する。なお、第２キャリブレーション範囲計測部１０６２の処理については、第１実施形態で説明した第１キャリブレーション範囲計測部１０６において、カメラ２、第１パラメータ設定部１０２、パラメータ、画像範囲をそれぞれ、第２のカメラ２２、第２パラメータ設定部１０２２、第２パラメータ、及び第２の画像範囲に読み替えることで説明できる。
本実施形態も第１実施形態と同様にターゲットマーク５を予め指定された平面上で移動させるものとする。第１のキャリブレーション範囲と第２のキャリブレーション範囲は同一の平面上に設定されることになる。
なお、第１のキャリブレーション範囲及び第２のキャリブレーション範囲を計測するための第１キャリブレーション範囲計測部１０６及び第２キャリブレーション範囲計測部１０６２の計測処理に係るフローチャートについては、第１実施形態（図８Ａ、図８Ｂ）で説明したキャリブレーション範囲計測部１０６に係るフローチャートにおいて、カメラ２、第１パラメータ設定部１０２、パラメータ、画像範囲をそれぞれ、第１のカメラ２１、第１パラメータ設定部１０２、第１パラメータ、第１の画像範囲、及び第２のカメラ２２、第２パラメータ設定部１０２２、第２パラメータ、第２の画像範囲に読み替えるものとする。
第１のカメラ２１及び第２のカメラ２２のキャリブレーション実行時には、キャリブレーション装置としての視覚センサ制御装置１Ａは、第１のキャリブレーション範囲と第２のキャリブレーション範囲の少なくとも一方の範囲内、又は第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内でターゲットマーク５を移動させるようにロボット４を制御する。つまり、第１のキャリブレーション範囲と第２のキャリブレーション範囲の両方に含まれる範囲のみを移動させてもよいし、第１のキャリブレーション範囲と第２のキャリブレーション範囲のどちらかに含まれる範囲のみを移動させてもよいし、第１のキャリブレーション範囲と第２のキャリブレーション範囲を併せた範囲を移動させてもよい。
【０１０１】
［撮像制御部１０７］
撮像制御部１０７は、キャリブレーション実行時に、ロボット４に第１のキャリブレーション範囲と第２のキャリブレーション範囲の少なくとも一方の範囲内、又は第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内を移動させられるロボット４のアーム４１の先端に取り付けられたターゲットマーク５を、複数の移動先の位置で第１のカメラ２１及び第２のカメラ２２により撮像する。ここで、複数の移動先の個数としては、第１のカメラ２１及び第２のカメラ２２のそれぞれのキャリブレーションができるだけの最小個数より大きな個数（例えば、２０以上）とすることが望ましい。そうすることで、キャリブレーションの精度を高めることが可能となる。
【０１０２】
［キャリブレーション部１０８］
キャリブレーション部１０８は、キャリブレーション実行時に、第１のキャリブレーション範囲と第２のキャリブレーション範囲の少なくとも一方の範囲内、又は第１のキャリブレーション範囲と前記第２のキャリブレーション範囲の両方に含まれる範囲内でのターゲットマーク５の複数の移動先における第１のカメラ２１の画像座標系における座標位置と、第２のカメラ２２の画像座標系における座標位置と、第１のカメラ２１及び第２のカメラ２２により撮像される時のターゲットマーク５のロボット座標系における座標位置と、を検出結果記憶部１５２に記憶する。
その後、キャリブレーション部１０８は、検出結果記憶部１５２に記憶された、ターゲットマーク５の第１のカメラ２１の画像座標系における座標位置と、ターゲットマーク５の第２のカメラ２２の画像座標系における座標位置と、第１のカメラ２１及び第２のカメラ２２により撮像される時のターゲットマーク５のロボット座標系における座標位置に基づいて、第１のカメラ２１及び第２のカメラ２２のキャリブレーションを行う。第１のカメラ２１と第２のカメラ２２は個別にキャリブレーションするようにしてもよい。
【０１０３】
図１５は、本実施形態に係る視覚センサ制御装置１Ａ（ＣＰＵ１０）による第１のカメラ２１及び第２のカメラ２２のキャリブレーション処理を示すフローチャートの一例である。なお、このフローチャートは、第１のキャリブレーション範囲と第２のキャリブレーション範囲を併せた範囲を移動させる場合の処理を示す。
【０１０４】
ステップＳ５１において、モデルパターンの生成及び第１パラメータ及び第２パラメータの設定をする。
【０１０５】
ステップＳ５２において、ＣＰＵ１０（第１画像範囲設定部１０５及び第２画像範囲設定部１０５２）はオペレータの指定により、それぞれ第１のカメラ２１で撮像した画像上で第１の画像範囲を第１のカメラ２１の画像座標系で設定し、第２のカメラ２２で撮像した画像上で第２の画像範囲を第２のカメラ２２の画像座標系で設定する。
【０１０６】
ステップＳ５３において、ＣＰＵ１０（第１キャリブレーション範囲計測部１０６及び第２キャリブレーション範囲計測部１０６２）は、それぞれ第１のカメラ２１の第１の画像範囲に相当する第１のキャリブレーション範囲の境界を示すロボット座標系における座標位置と、第２のカメラ２１の第２の画像範囲に相当する第２のキャリブレーション範囲の境界を示すロボット座標系における座標位置と、を計測する。これにより、第１のキャリブレーション範囲及び第２のキャリブレーション範囲が設定され、第1のカメラ２１及び第２のカメラ２２のキャリブレーション処理を開始することができる。
【０１０７】
［キャリブレーション処理］
ステップＳ５４において、ＣＰＵ１０（キャリブレーション部１０８）は、計測回数をカウントするための計測カウンタに１を設定する。
【０１０８】
ステップＳ５５において、ＣＰＵ１０（キャリブレーション部１０８）は、ロボット制御装置３により計測されたターゲットマーク５のロボット座標系における３次元座標位置を取得する。
【０１０９】
ステップＳ５６において、ＣＰＵ１０（第１検出部１０３及び第２検出部１０３２）は、それぞれ第１のカメラ２１及び第２のカメラ２２により撮像される画像データから、ターゲットマーク５をそれぞれ検出し、検出されたターゲットマーク５の、第１のカメラ２１及び第２のカメラ２２のそれぞれの画像座標系における座標位置を計測する。なお、第１のカメラ２１と第２のカメラ２２のいずれか一方からしかターゲットマークが検出されないこともあるが、その場合には検出できたカメラの画像座標系における座標位置のみを記憶する。
【０１１０】
ステップＳ５７において、ＣＰＵ１０（キャリブレーション部１０８）は、現在位置におけるターゲットマーク５のロボット座標系における３次元座標位置、第１のカメラ２１の画像座標系における座標位置及び第２のカメラ２２の画像座標系における座標位置を関係付けて記憶する。
【０１１１】
ステップＳ５８において、ＣＰＵ１０（キャリブレーション部１０８）は、計測回数をカウントするための計測カウンタに１を加算する。
【０１１２】
ステップＳ５９において、計測カウンタが所定の値を超えない場合（Ｎｏ）、ステップＳ６０に移る。計測カウンタが所定の値を超える場合（Ｙｅｓ）、ステップ６１に移る。
【０１１３】
ステップＳ６０において、ロボット制御装置３は、ロボット４のアーム４１の先端に取り付けられたターゲットマーク５を、予め設定された第１のキャリブレーション範囲又は第２のキャリブレーション範囲内の第１のカメラ２１と第２のカメラ２２の少なくとも一方から計測できる場所に移動する。その後、ステップＳ５５に移る。
【０１１４】
ステップＳ６１において、ＣＰＵ１０（キャリブレーション部１０８）は、ステップ５７において記憶された、ターゲットマーク５のロボット座標系における３次元座標位置、第１のカメラ２１の画像座標系における座標位置及び第２のカメラ２２の画像座標系における座標位置の関係に基づいて、第１のカメラ２１及び第２のカメラ２２のキャリブレーションを実行する。
なお、本処理フローは一例であり、これに限定されない。
例えば、第１のキャリブレーション範囲と第２のキャリブレーション範囲の両方に含まれる範囲のみを移動させる場合、ステップ５６及びステップ６０を次のように読み替える。
ステップＳ５６においては、第１のカメラ２１と第２のカメラ２２の両方からターゲットマークが検出される場合にのみ、第１のカメラ２１の画像座標系における座標位置及び第２のカメラ２２の画像座標系における座標位置をそれぞれ記憶してもよい。
ステップＳ６０においては、ロボット制御装置３は、ロボット４のアーム４１の先端に取り付けられたターゲットマーク５を、予め設定された第１のキャリブレーション範囲内及び第２のキャリブレーション範囲内の第１のカメラ２１と第２のカメラ２２の両方から計測できる場所に移動する。
【０１１５】
第２実施形態における視覚センサ制御装置１Ａは、第１のカメラ２１の画像座標系における第１の画像範囲を設定する第１画像範囲設定部１０５と、キャリブレーション実行前に、ロボット４を制御してターゲットマーク５を移動させてターゲットマーク５を検出することで、第１の画像範囲に相当するロボット４の動作範囲である第１のキャリブレーション範囲を計測するキャリブレーション範囲計測部１０６と、第２のカメラ２２の画像座標系における第２の画像範囲を設定する第２画像範囲設定部１０５２と、キャリブレーション実行前に、ロボット４を制御してターゲットマーク５を移動させてターゲットマーク５を検出することで、第２の画像範囲に相当するロボット４の動作範囲である第２のキャリブレーション範囲を計測するキャリブレーション範囲計測部１０６２と、を備える。
これにより、キャリブレーション前に予め複数のカメラ（視覚センサ）の視野の範囲に基づいて、ターゲットマーク５の移動範囲となるロボットの動作範囲（第１のキャリブレーション範囲及び第２のキャリブレーション範囲）を計測することで、キャリブレーションの自由度を高めることができる。また、ターゲットマーク５の移動する範囲をそれぞれのカメラのどちらに対しても最大限広くとることができ、キャリブレーションがより正確になる。また、ターゲットマーク５が移動する空間上に障害物等が存在する場合には、オペレータからの指示に基づいて、当該障害物を避けるように第１の画像範囲及び第２の画像範囲を指定することにより、ロボット４の動作範囲（第１のキャリブレーション範囲及び第２のキャリブレーション範囲）を効率的に設定することができる。
【０１１６】
また、第１のキャリブレーション範囲及び第２のキャリブレーション範囲はそれぞれ平面上に設定されるように構成することができる。
第２実施形態におけるキャリブレーション方法、及び第２実施形態におけるプログラムについても、第２実施形態における視覚センサ制御装置１Ａと同様の効果を奏する。
【０１１７】
以上、本発明の第２実施形態について説明したが、本発明は前述した第２実施形態に限るものではない。また、第２実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、第２実施形態に記載されたものに限定されるものではない。
［変形例１］
第２実施形態においては、ステレオカメラ２Ａを２台のカメラを有するものとしたが、ステレオカメラ２Ａが３台以上のカメラを備えるように構成してもよい。
［変形例２］
第２実施形態においては、モデルパターン生成部１０１は、第１のカメラ２によりモデルパターンを生成して記憶するように構成したが、第２のカメラ２２によりモデルパターンを生成して記憶するように構成してもよい。
また、第２実施形態においては、モデルパターン生成部１０１によりモデルパターンを生成して記憶するように構成したが、第１のカメラ２１又は第２のカメラ２２によりモデルパターンを生成することに替えて、既存の形状（例えば、○形状）をターゲットマーク５とするように構成してもよい。
［変形例３］
第２実施形態ではターゲットマーク５を予め指定された平面上で移動させるものとし、この平面上における第１のキャリブレーション範囲及び第２のキャリブレーション範囲を計測したが、第１のキャリブレーション範囲及び第２のキャリブレーション範囲は任意の３次元空間で定義してもよい。
例えば、予め指定される平面を平行する複数の平面から構成されるものとして、また複数の部分平面を連結したものとしてもよい。
【０１１８】
また、本実施形態においては、キャリブレーション装置として、視覚センサ制御装置１又は１Ａを適用したが、これに限定されない。視覚センサ制御装置１又は１Ａとロボット制御装置３とを一体とする制御装置として、キャリブレーション装置としてもよい。また、キャリブレーション装置として、情報処理装置（コンピュータ）全般を指すことができる。キャリブレーション装置には、例えば、サーバ、ＰＣ、各種制御装置などを適用してもよい。
【０１１９】
視覚センサ制御装置１又は１Ａによるキャリブレーション方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（視覚センサ制御装置１）にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【０１２０】
１０００  ロボットシステム
１    視覚センサ制御装置
１Ａ  視覚センサ制御装置
１０  ＣＰＵ
１０１  モデルパターン生成部
１０２  第１パラメータ設定部
１０２２  第２パラメータ設定部
１０３  第１検出部
１０３２  第２検出部
１０５  第１画像範囲設定部
１０５２  第２画像範囲設定部
１０６  第１キャリブレーション範囲計測部
１０６２  第２キャリブレーション範囲計測部
１０７  撮像制御部
１０８  キャリブレーション部
１１  バス
１２  フレームメモリ
１３  ＲＯＭ
１４  ＲＡＭ
１５  不揮発性ＲＡＭ
１５１  基準情報記憶部
１５２  検出結果記憶部
１６  カメラインタフェース
１７  モニタインタフェース
１８  外部機器インタフェース
１９  モニタ
２    カメラ
２Ａ  ステレオカメラ
２１  第１のカメラ
２２  第２のカメラ
３  ロボット制御装置
４  ロボット
４１  アーム
５  ターゲットマーク
【図１】
2018111166.tif 000004
【図２】
2018111166.tif 000005
【図３】
2018111166.tif 000006
【図４】
2018111166.tif 000007
【図５】
2018111166.tif 000008
【図６】
2018111166.tif 000009
【図７】
2018111166.tif 000010
【図８Ａ】
2018111166.tif 000011
【図８Ｂ】
2018111166.tif 000012
【図９Ａ】
2018111166.tif 000013
【図９Ｂ】
2018111166.tif 000014
【図１０】
2018111166.tif 000015
【図１１Ａ】
2018111166.tif 000016
【図１１Ｂ】
2018111166.tif 000017
【図１２】
2018111166.tif 000018
【図１３Ａ】
2018111166.tif 000019
【図１３Ｂ】
2018111166.tif 000020
【図１４】
2018111166.tif 000021
【図１５】
2018111166.tif 000022