(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したキャリブレーションでは、補正値を用いた変換の誤差をより小さくしてキャリブレーション精度を向上させるために、複数の撮像画像として、キャリブレーションボードが画像内において互いに異なる位置に写った複数の画像、特に、キャリブレーションボードが撮像領域全体に散らばって写った複数の画像を用いることが好ましい。
【0006】
しかしながら、キャリブレーションに適した画像を撮像するのは容易ではなかった。例えば、特許文献1に記載の方法では、キャリブレーションに適した画像を撮像するためのカメラ位置をロボットにティーチングすることになるのだが、「適した画像」が何であるかはユーザの経験に依存する場合が多く、経験が十分でないユーザ等ではなかなかスムーズにティーチングすることが難しいので、ユーザは大きな作業負担を強いられる。加えて、ユーザの作業錬度や設備の状況によって往々にして発生することであるが、キャリブレーションボード自身を所定位置からずれて配置してしまったような場合には、カメラを所定位置に移動させて撮像しても所望の画像を得ることができなかった。また、例えば、カメラを固定し、キャリブレーションボードをユーザが移動させて複数の撮像画像を得る構成では、ユーザは、キャリブレーションに適した画像を得るためにキャリブレーションボードをどのように配置したらよいか分からず、キャリブレーション精度を所定値以上とするまでに長時間を要するという問題があった。このため、撮像装置のキャリブレーション精度を短期間で向上させることが可能な技術が望まれていた。
【課題を解決するための手段】
【0007】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態として実現することが可能である。
【0008】
(1)本発明の一形態によれば、キャリブレーション装置が提供される。このキャリブレーション装置は、ロボットが有するアームと所定の位置関係で配置された撮像装置をキャリブレーションするためのキャリブレーション装置であって、特徴点を有するキャリブレーションボードを前記撮像装置が撮像することにより得られた複数の撮像画像のそれぞれについて、前記キャリブレーションボードが互いに異なる位置に写った複数のマスタ画像のそれぞれに対する類似度を算出する類似度算出部と;前記算出された類似度に基づき、前記複数の撮像画像を、各マスタ画像に関連付けられた複数のグループに分類する分類部と;前記複数のグループの各グループにおいて、前記類似度が所定値以上の代表画像を1つ抽出し、抽出された複数の前記代表画像からなる代表画像群に基づき、前記特徴点の前記キャリブレーションボードにおける物理的な位置と前記特徴点の前記撮像画像における位置とを変換するための補正値を決定するキャリブレーション処理部と;前記決定された補正値による前記変換の誤差が、所定値以下であるか否かを判定する判定部と;前記誤差が前記所定値よりも大きいと判定された場合に、前記複数のグループのそれぞれに分類された前記撮像画像の数に関連する撮像数関連情報を表示する表示部と;を備える。
【0009】
この形態のキャリブレーション装置によれば、キャリブレーション処理部により決定された補正値による変換の誤差が所定値よりも大きい場合に、複数のグループのそれぞれに分類された撮像画像の数に関連する撮像数関連情報が表示されるので、いずれのグループに分類された撮像画像の数が少ないのかをユーザに理解させることができる。したがって、撮像画像数が少ないグループに分類され得るような画像を、撮像装置を用いて撮像させることをユーザに促すことができる。撮像画像数が少ないグループにおいて画像を追加させると、既に当該グループに所属している画像(既存画像)が少ないことから、新規に追加された撮像(追加画像)は既存画像と相違する可能性が高くなる。そして既存画像では既に「補正値による変換の誤差が所定値よりも大きい」という状態に陥っていることを前提に改善を目指して追加画像を撮像することになるのであるから、当然ながら既存画像よりマスタ画像と類似度の高い画像になる可能性が高い。よって、追加画像は既存画像より「補正値による変換の誤差」に対し良い効果を与える可能性が高いと言える。このため、キャリブレーション精度を短期間で向上させることができる。
【0010】
(2)上記形態のキャリブレーション装置において、前記撮像数関連情報は、前記複数のグループのうち、前記分類された撮像画像の数が最も少ないグループを特定可能な情報を含んでもよい。この形態のキャリブレーション装置によれば、いずれのグループに分類された撮像画像の数が最も少ないかをユーザに容易に理解させることができる。したがって、どのような画像を得ることにより、キャリブレーションボードが撮像領域全体に散らばって写った複数の画像を得ることができるのかをユーザに理解させることができる。加えて、各グループのうち、マスタ画像との間の類似度の高い撮像画像が含まれていない可能性のあるグループに分類され得る画像の取得を、ユーザに促すことができる。
【0011】
(3)上記形態のキャリブレーション装置において、前記撮像数関連情報は、前記複数のグループのそれぞれに分類された前記撮像画像の数を示す情報を含んでもよい。この形態のキャリブレーション装置によれば、各グループに分類された撮像画像の数をユーザに容易に理解させることができる。したがって、どのような画像を得ることにより、キャリブレーションボードが撮像領域全体に散らばって写った複数の画像を得ることができるのかをユーザに理解させることができる。加えて、各グループのうち、マスタ画像との間の類似度の高い撮像画像が含まれていない可能性があるグループに分類され得る画像の取得を、ユーザに促すことができる。
【0012】
(4)上記形態のキャリブレーション装置において、さらに、各グループごとに、該グループに分類された撮像画像のそれぞれについて算出された前記類似度の統計的特性を求める統計処理部を備え、前記表示部は、前記誤差が前記所定値よりも大きい場合に、前記統計的特性に関連する統計的特性関連情報を表示してもよい。この形態のキャリブレーション装置によれば、ユーザに対して、各グループごとの類似度の統計的特性を容易に理解させ得る。したがって、例えば、各グループにおける最も類似度が高い撮像画像のうち、類似度の最も低い撮像画像のグループや、マスタ画像との間の平均類似度が最も低いグループをユーザに理解させることができ、これらのグループに分類され得る画像の取得をユーザに促すことができる。
【0013】
(5)上記形態のキャリブレーション装置において、前記統計的特性は、各グループに分類された撮像画像のそれぞれについて算出された前記類似度のうち最高値であり、前記統計的特
性関連情報は、前記複数のグループのうち、前記最高値が最も低いグループを特定可能な情報を含んでもよい。この形態のキャリブレーション装置によれば、各グループのうち、類似度の最高値が最も低いグループをユーザに容易に理解させることができる。したがって、かかるグループに分類され得る画像の取得をユーザに促すことができる。
【0014】
(6)上記形態のキャリブレーション装置において、前記統計的特性は、各グループに分類された撮像画像のそれぞれについて算出された前記類似度の平均値であり、前記統計的特
性関連情報は、前記複数のグループのうち、前記平均値が最も低いグループを特定可能な情報を含んでもよい。この形態のキャリブレーション装置によれば、各グループのうち、類似度の平均値が最も低いグループをユーザに容易に理解させることができる。したがって、かかるグループに分類され得る画像の取得をユーザに促すことができる。
【0015】
(7)上記形態のキャリブレーション装置において、前記表示部は、前記誤差を表示してもよい。この形態のキャリブレーション装置によれば、撮像画像を追加するたびに、誤差が増加しているか又は低減しているかをユーザに容易に理解させることができる。したがって、撮像画像を追加して得るためにキャリブレーションボードの配置位置を調整する際に、どのように調整したら誤差が低減するかをユーザに理解させることができる。したがって、キャリブレーション精度を短期間で向上させることができる。
【0016】
(8)上記形態のキャリブレーション装置において、前記撮像
装置は、連続して前記撮像画像を取得し、前記キャリブレーション処理部は、前記撮像部により前記撮像画像が取得されるたびに、得られた前記複数の撮像画像のうち、前記誤差が最も小さくなる前記代表画像群を決定してもよい。この形態のキャリブレーション装置によれば、予め多数の撮像画像を取得しておく必要がなく、ユーザの作業負担を軽減することができる。加えて、撮像画像が取得されるたびに誤差が最も小さくなる代表画像群を決定するので、最少でグループ数分の撮像画像を得るだけでキャリブレーションを終了することができ、キャリブレーション精度を短期間で向上させることができる。
【0017】
本発明は、装置以外の種々の形態で実現することが可能である。例えば、撮像装置のキャリブレーション方法、その方法を実現するコンピュータープログラム、そのコンピュータープログラムを記録した一時的でない記録媒体等の形態で実現することができる。
【発明を実施するための形態】
【0019】
A.第1実施形態:
A1.システム構成:
図1は、本発明の一実施形態としてのキャリブレーション装置を含むロボットシステム10の外観構成を示す説明図である。ロボットシステム10は、多関節型の産業用のロボット本体100と、制御装置200と、教示装置300と、管理用端末400とを備えている。ロボット本体100と教示装置300と管理用端末400とは、それぞれ、所定のケーブルにより制御装置200に接続されている。
【0020】
教示装置300は、制御装置200に対して、ロボット本体100の動作を教示するための専用装置である。管理用端末400は、制御装置200に対して各種設定を行うための装置であり、例えば、パーソナルコンピュータにより構成することができる。
【0021】
ロボット本体100は、ベース部101と、ショルダ部102と、下アーム103と、上アーム104と、手首105と、フランジ部106と、エンドエフェクタ107と、カメラ150とを備えている。ベース部101は、工場内の設備(例えば、工作机や床面)に固定されている。ショルダ部102は、水平方向に旋回可能な関節軸を介してベース部101に接続されている。下アーム103は、鉛直方向に旋回可能な関節軸を介して下端がショルダ部102に接続されている。上アーム104は、鉛直方向に旋回可能な関節軸を介して下アーム103の先端に略中央部が接続されている。手首105は、鉛直方向に旋回可能な関節軸を介して上アーム104の先端に接続されている。フランジ部106は、回転可能であり、手首105の先端に設けられている。エンドエフェクタ107は、フランジ部106に取り付けられ、図示しないワークを把持することができる。カメラ150は、レンズ光軸がエンドエフェクタ107の長手方向(手首105の軸方向)と平行となるように手首105に設置されている。
【0022】
ロボットシステム10では、ワークが載置され得る作業台500の作業面S1上に載置されたキャリブレーションボードCBが撮像され、得られた画像に基づき、後述するカメラキャリブレーション処理が実行される。
図1に示すように、キャリブレーションボードCBは、表面に、白色及び黒色の正方形の升目が縦及び横に交互に配置された模様を有する。かかるキャリブレーションボードCBを含む撮像画像では、同色の升目が接する点(升目の四隅)が、キャリブレーションボードCBの特徴点として抽出され得る。
【0023】
図2は、ロボットシステム10の内部構成を示すブロック図である。ロボット本体100は、三相交流式のブラシレスDCモータとして構成されたサーボモータ130と、サーボモータ130の回転を減速させる減速機120と、減速機120を介してサーボモータ130によって駆動される関節軸110と、を備えている。前述の各アーム103,104、手首105及びフランジ部106は、関節軸110に機械的に接続されている。
【0024】
制御装置200は、インバータ210と、駆動回路220と、CPU(Central Processing Unit)230と、記憶部280と、入出力インターフェイス部290とを備えている。インバータ210は、駆動回路220及びロボット本体100のサーボモータ130に電気的に接続されており、駆動回路220からの駆動信号に基づき、サーボモータ130に三相交流電力を供給する。駆動回路220は、CPU230からの指示に従いインバータ210のスイッチング制御を行う。
【0025】
CPU230は、記憶部280に記憶されている制御プログラムを実行することにより、キャリブレーション処理部231、ユーザインターフェイス(UI)制御部232、撮像制御部233、画像処理部234、および駆動制御部235として機能する。キャリブレーション処理部231は、後述するカメラキャリブレーション処理を実行する。カメラキャリブレーションとは、カメラ150による撮像対象となる物体の物理的な位置(世界座標)と、撮像画像内における物体の位置(画像座標系)とを変換するための補正値を求める処理を意味する。かかる補正値は、回転及び並進に加えて、カメラ150に含まれるレンズの歪み等を考慮した変換行列を意味する。ロボットシステム10では、カメラ150によりワークを撮像して得られた撮像画像及び補正値に基づきワークの物理的な位置を特定し、ワークの把持や移動を実行する。
【0026】
ユーザインターフェイス制御部232は、教示装置300又は管理用端末400に各種メニュー画面を作成して表示させたり、教示装置300又は管理用端末400から入力される各種指示を解釈したりする。撮像制御部233は、撮像のための各種パラメータ(例えば、絞り値やシャッタースピード等)に従って、カメラ150に対して撮像を指示する。画像処理部234は、カメラ150による撮像によって得られた撮像画像に対して、明るさやシャープネス等を調整する。また、画像処理部234は、得られた撮像画像を解析して、後述するマスタ画像との類似度の算出や、撮像画像内の特徴点の抽出を行う。駆動制御部235は、記憶部280に予め記憶されている教示データに基づいて、サーボモータ130を駆動するための信号を駆動回路220に出力する。
【0027】
記憶部280は、RAM(Random Access Memory)やROM(Read Only Memory)等からなり、前述の制御プログラムを記憶すると共に、撮像画像格納部282と、マスタ画像格納部284と、補正値格納部286とを備えている。撮像画像格納部282は、カメラ150よる撮像によって得られた画像を格納する。マスタ画像格納部284は、後述するカメラキャリブレーション処理において用いられるマスタ画像を予め格納する。補正値格納部286は、後述するカメラキャリブレーション処理において算出される補正値を格納する。入出力インターフェイス部290は、カメラ150と教示装置300と管理用端末400とを、それぞれCPU230に接続させるための各種インターフェイス群からなる。
【0028】
カメラ150は、撮像部152と、制御部154と、接続インターフェイス部156とを備えている。撮像部152は、CCD(Charge Coupled Device)等の撮像素子と、被写体の光学像を撮像面上に結像する撮像レンズ系とを備え、光学像を電気信号に変換して画像データを取得する。制御部154は、撮像制御部233からの指示に従い、撮像部を制御して、所定のシャッタースピードや絞り値で撮像を実行する。接続インターフェイス部156は、制御装置200と接続するためのインターフェイスを有する。かかるインターフェイスとしては、例えば、USB(Universal Serial Bus)や、Ethernet(登録商標)を採用することができる。
【0029】
上記構成を有するロボットシステム10では、後述するカメラキャリブレーション処理を実行することにより、短期間のうちにキャリブレーション精度を向上させることができる。なお、ロボットシステム10では、カメラ150の位置を固定して、キャリブレーションボードCBを移動させることにより、撮像領域内において互いに異なる位置にキャリブレーションボードCBが写った複数の画像を取得し、かかる複数の画像を用いてカメラキャリブレーションが実行される。
【0030】
前述のキャリブレーション処理部231と画像処理部234と管理用端末400とは、請求項におけるキャリブレーション装置に相当する。キャリブレーション処理部231は、請求項におけるキャリブレーション処理部と、類似度算出部と、分類部と、判定部と、統計処理部とに相当する。管理用端末400(管理用端末400が有する表示部)は、請求項における表示部に相当する。
【0031】
A2.カメラキャリブレーション処理:
図3は、第1実施形態におけるカメラキャリブレーション処理の手順を示すフローチャートである。ユーザが管理用端末400においてカメラキャリブレーション処理メニューを選択して実行することにより、カメラキャリブレーション処理が開始される。
【0032】
キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、所定数以上の撮像を指示するメッセージを管理用端末400に表示させる(ステップS105)。ユーザは、作業台500の作業面S1においてキャリブレーションボードCBを任意の位置に配置しながら、管理用端末400を操作してカメラ150による撮像を指示する。このとき、ユーザは、キャリブレーションボードCBを作業面S1上において鉛直方向に傾けて配置することもできる。撮像する所定数としては、任意の数が設定可能であるが、以下では60枚に設定されているものとして説明する。制御装置200において、撮像制御部233は、管理用端末400から撮像指示を受けると、カメラ150に対して所定の撮像条件での撮像を指示する。カメラ150において、制御部154は、撮像制御部233から撮像指示を受けると、撮像部152を制御して撮像を実行する。
【0033】
キャリブレーション処理部231は、管理用端末400から撮像完了の通知を受けるまで待機する(ステップS110)。ユーザは、所定数以上の撮像が完了すると、管理用端末400を操作して撮像完了を制御装置200に通知する。キャリブレーション処理部231は、撮像完了の通知を受けると(ステップS110:YES)、画像処理部234を制御して、各撮像画像についてマスタ画像格納部284に格納されている複数のマスタ画像のそれぞれとの類似度を算出する(ステップS115)。
【0034】
図4は、マスタ画像格納部284に格納されているマスタ画像の一例を示す説明図である。
図4に示すように、第1実施形態では、4つのマスタ画像FA,FB,FC,FDが、マスタ画像格納部284に格納されている。なお、
図4では、各マスタ画像FA,FB,FC,FDにおいて、説明の便宜上、画像の縦及び横の中央を示す破線を記載している。
【0035】
マスタ画像FA,FB,FC,FDは、これら4つの画像に基づきカメラキャリブレーションを行った場合に、キャリブレーション精度が所定値以上(誤差が所定値以下)となる画像群である。これらのマスタ画像FA,FB,FC,FDは、予めユーザが実験によりカメラキャリブレーションを実行し、キャリブレーション精度が所定値以上となる組合せを抽出して設定することができる。なお、キャリブレーション精度については後述する。
【0036】
図4に示すように、各マスタ画像FA,FB,FC,FDでは、キャリブレーションボードCBの画像CBfが、撮像領域において互いに異なる領域に写っている。具体的には、マスタ画像FAでは、画像CBfが右上の領域に写っている。マスタ画像FBでは、画像CBfが右下の領域に写っている。マスタ画像FCでは、画像CBfが左上の領域に写っている。マスタ画像FDでは、画像CBfが左下の領域に写っている。このように画像CBfが撮像領域全体に散らばって写った複数の画像を用いることで、キャリブレーション精度を向上させることができる。また、このようなマスタ画像に類似する画像を撮像により得ることができれば、得られた画像に基づきカメラキャリブレーションを行った場合にキャリブレーション精度を向上させることができる。
【0037】
類似度の算出は、例えば、撮像画像とマスタ画像とで、同じ位置の画素の輝度値の差分を求め、差分の合計値として算出することができる。この場合、差分の合計値が大きいほど類似度は低く、差分の合計値が小さいほど類似度は高い。
【0038】
キャリブレーション処理部231は、ステップS115において得られた類似度に基づき、各撮像画像を、最も類似度の高いマスタ画像のグループに分類する(ステップS120)。なお、
図4に示すように、マスタ画像FAが最も類似度が高いと評価された画像群の属するグループを、以降では「グループA」と呼ぶ。同様に、マスタ画像FBが最も類似度が高いと評価された画像群の属するグループを「グループB」と、マスタ画像FCが最も類似度が高いと評価された画像群の属するグループを「グループC」と、マスタ画像FDが最も類似度が高いと評価された画像群の属するグループを「グループD」と、それぞれ以降において呼ぶものとする。
【0039】
キャリブレーション処理部231は、ステップS120で分類された各グループ内において、類似度が最も高い撮像画像を特定する(ステップS125)。
【0040】
キャリブレーション処理部231は、ステップS125において特定された撮像画像群(各グループ1枚ずつの合計4つの画像)を用いてカメラキャリブレーションを実行する(ステップS130)。
【0041】
カメラキャリブレーションは、例えば、以下のように行うことができる。まず、キャリブレーションボードCBにおける同色の升目の各接点(以下、「交点」と呼ぶ)について、世界座標系における位置(座標)を特定すると共に、各交点の撮像画像における位置(画像座標系における位置)を特定する。次に、特定された各交点の世界座標系における位置(座標)及び撮像画像における位置を下記式1に当てはめて得られた複数の式を解くことにより、下記式1における回転行列及び並進ベクトル(補正値)を求める。
【0042】
T=A・[R|t]・S ・・・(1)
【0043】
上記式1において、Sは、世界座標系における位置を表す。また、Tは、画像座標系における位置を表す。また、上記式1において、Aはカメラの内部パラメータを、Rはカメラ座標系と世界座標との間の回転行列を、tは並進ベクトルを、それぞれ表す。カメラの内部パラメータとは、カメラ150のピンホール位置を原点とするカメラ座標系と、画像座標系との対応関係を示す行列式を意味する。かかるカメラの内部パラメータは、カメラの焦点距離や、撮像素子の大きさや、レンズの歪み係数等のパラメータにより設定される既知の行列式である。
【0044】
キャリブレーション処理部231は、ステップS130により得られた補正値を用いて世界座標系と画像座標系との間の変換を行った場合の誤差を求める(ステップS135)。具体的には、前述のカメラキャリブレーションにおいて特定された撮像画像における特徴点の位置に基づき上記式1の逆変換を行って得られた位置(世界座標系における座標)と、前述のカメラキャリブレーションにおいて特定された世界座標系における特徴点の位置(世界座標系における座標)とを比較して、これら位置の誤差(位置間の距離)を求める。なお、かかる誤差が小さいほどカメラキャリブレーションの精度は高い。
【0045】
キャリブレーション処理部231は、ステップS135で求めた誤差が所定値以下であるか否かを判定し(ステップS140)、誤差が所定値以下であると判定された場合には、カメラキャリブレーション処理は終了する。カメラキャリブレーション処理が終了すると、ステップS130で求められた補正値が、その後、ロボット本体100を動作させる際に用いられることとなる。
【0046】
前述のステップS140において、誤差が所定値よりも大きいと判定された場合には(ステップS140:NO)、キャリブレーション処理部231は、各グループに所属する画像数を特定する(ステップS145)。なお、ステップS140における「所定値」としては任意の値が設定することができ、例えば、1mmに設定することができる。
【0047】
キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、所属する画像数の最も少ないグループを示す情報、およびかかるグループに属する画像の取得を促すメッセージを、管理用端末400に表示させる(ステップS150)。
【0048】
図5は、ステップS150において表示される情報の一例を示す説明図である。例えば、所属する画像数が最も少ないグループがグループAであった場合には、ステップS150が実行されると、
図5に示すウィンドウW1が表示される。第1実施形態では、ステップS150における「所属する画像数の最も少ないグループを示す情報」として、各グループのマスタ画像が表示される。したがって、
図5に示すように、ウィンドウW1には、マスタ画像FAが表示されている。また、ウィンドウW1には、「以下のマスタ画像に類似する画像を10枚撮像してください」とのメッセージが表示されている。かかるメッセージを見たユーザは、マスタ画像FAに類似する画像を得るために、キャリブレーションボードCBを作業台500において右上に配置して10枚撮像を行う。なお、10枚に限らず任意の枚数の撮像を促すメッセージを採用することもできる。
【0049】
前述のステップS150が実行された後、前述のステップS110に戻る。したがって、今度は、追加して撮像して得られた10枚の画像を含む撮像画像群(合計70枚の撮像画像)に基づき、上述したステップS115〜S150が実行される。このようにして、ステップS140において誤差が所定値以下であると判定されるまで画像が追加されてカメラキャリブレーションが実行され、ステップS140において誤差が所定値以下であると判定されるとカメラキャリブレーション処理は終了する。
【0050】
以上説明した第1実施形態のロボットシステム10では、所属する撮像画像数が最も少ないグループを示す情報及びかかるグループに属する画像の取得を促すメッセージを管理用端末400に表示させる。したがって、ユーザに対して所属する撮像画像数が最も少ないグループにおいて画像を追加させることができる。所属する撮像画像数が最も少ないグループに画像が追加されると、既に当該グループに所属している画像(既存画像)が少ないことから、新規に追加された画像(追加画像)は、既存画像と相違する可能性が高くなる。そして、既存画像では、「補正値による変換の誤差が所定値よりも大きい」という状態を前提に、キャリブレーション精度の改善を目指して追加画像を撮像することになるのであるから、追加画像は、当然ながら既存画像よりもマスタ画像に対する類似度の高い画像である可能性が高い。よって、画像を追加させることにより、既存画像を用いた場合に比べてキャリブレーション精度を向上させることができる。
【0051】
B.第2実施形態:
図6は、第2実施形態におけるカメラキャリブレーション処理の手順を示すフローチャートである。第2実施形態のロボットシステムは、カメラキャリブレーション処理において、ステップS105に代えてステップS105aを実行する点と、ステップS145に代えてステップS146を実行する点と、ステップS150に代えてステップS150aを実行する点において、第1実施形態のロボットシステム10と異なり、装置構成及びカメラキャリブレーション処理における他の手順は、第1実施形態のロボットシステム10と同じである。また、第2実施形態のロボットシステムの装置構成は、第1実施形態のロボットシステム10の装置構成と同じである。
【0052】
第1実施形態のカメラキャリブレーション処理では、予め比較的多い撮像画像を得ておき(ステップS105)、キャリブレーション精度が低い(誤差が大きい)場合に追加して撮像画像を得るようにしていた。これに対して、第2実施形態のカメラキャリブレーション処理では、予め比較的少ない(グループ数分の)撮像画像を得ておき、キャリブレーション精度が低い(誤差が大きい)場合に1枚ずつ撮像してカメラキャリブレーション(ステップS130)を実行する。
【0053】
具体的には、キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、マスタ画像と、各グループごとに1枚ずつの撮像画像を得る旨を指示するメッセージとを管理用端末400に表示させる(ステップS105a)。
【0054】
図7は、ステップS105aにおいて管理用端末400に表示される情報の一例を示す説明図である。
図7に示すように、管理用端末400に表示されるウィンドウW2には、
図4に示すマスタ画像と同じマスタ画像が表わされていると共に、「各マスタ画像に類似する画像を1枚ずつ撮像してください。」というメッセージが表されている。したがって、ユーザは、かかる情報を見ることにより、各マスタ画像に類似する合計4枚の撮像画像を撮像することができる。
【0055】
ステップS105aが実行された後、上述したステップS110〜S140が実行される。なお、最初にステップS110〜S140が実行される場合には、ステップS105aの後に撮像された4枚を用いてカメラキャリブレーション(ステップS130)が実行される。
【0056】
ステップS140において、ステップS135で求めた誤差が所定値よりも大きいと判定された場合には、キャリブレーション処理部231は、各グループにおいて類似度が最も高い撮像画像のうち、類似度が最も低い撮像画像が所属するグループを特定する(ステップS146)。
【0057】
キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、ステップS146において特定されたグループを示す情報およびかかるグループに属する画像の取得を促すメッセージを管理用端末400に表示させる(ステップS150a)。
【0058】
図8は、ステップS150aにおいて表示される情報の一例を示す説明図である。例えば、各グループにおいて類似度が最も高い撮像画像のうち、類似度が最も低い撮像画像が所属するグループがグループAの場合には、管理用端末400に表示されるウィンドウW1aには、
図5に示すウィンドウW1と同様に、マスタ画像FAが表示される。また、ウィンドウW1aには、ウィンドウW1と異なり、マスタ画像FAに類似する画像を「1枚」撮像することを指示する(促す)メッセージが表示される。したがって、ユーザは、ウィンドウW1aを見た後、キャリブレーションボードCBの配置位置を調整して、マスタ画像FAに類似する(グループAに分類される可能性が高い)画像を1枚取得する。
【0059】
ステップS150aが実行された後、ステップS110に戻り、再びステップS110〜S150aが実行される。
【0060】
以上の構成を有する第2実施形態のロボットシステムは、第1実施形態のロボットシステム10と同様な効果を有する。加えて、第2実施形態のカメラキャリブレーション処理では、最初に得られた4枚の撮像画像を用いてカメラキャリブレーションを実行した結果、キャリブレーション精度が所定値以下の場合(変換の誤差が所定値よりも大きい場合)には、撮像画像を1枚追加するたびにカメラキャリブレーションを実行する(ステップS130)。したがって、予め多数の撮像画像を取得しておく必要がなく、また、最少でグループ数分の撮像画像を得るだけでカメラキャリブレーション処理を完了できるので、撮像画像を得るためのユーザの作業負担を軽減することができる。
【0061】
C.変形例:
C1.変形例1:
図9は、変形例1におけるカメラキャリブレーション処理のステップS150において管理用端末400に表示される情報の一例を示す説明図である。上述した第1実施形態では、カメラキャリブレーション処理のステップS150では、所属する撮像画像数が最も少ないグループを示す情報としてマスタ画像を表示していたが、本発明はこれに限定されるものではない。例えば、
図9のウィンドウW3に示すように、各マスタ画像FA,FB,FC,FDと、各マスタ画像のグループに所属している撮像画像数とを、表示することができる。具体的には、
図8に示すように、マスタ画像FAの近傍に、グループAに所属する撮像画像数「8枚」を表示することができる。同様に、マスタ画像FBの近傍にグループBに所属する撮像画像数「12枚」を、マスタ画像FCの近傍にグループCに所属する撮像画像数「25枚」を、マスタ画像FDの近傍にグループDに所属する撮像画像数「15枚」を、それぞれ表示することができる。また、ウィンドウW3には、「撮像枚数の最も少ないグループの画像を10枚撮像してください」とのメッセージが表示されている。このようなウィンドウW3を表示させることにより、グループAに所属する撮像画像の数が他のグループに比べて少ないこと、及びグループAに所属するような画像を撮像する必要があることをユーザに理解させることができる。
【0062】
C2.変形例2:
図10は、変形例2におけるカメラキャリブレーション処理の手順を示すフローチャートである。変形例2のカメラキャリブレーション処理は、ステップS145に代えてステップS146を実行する点、及びステップS150に代えてステップS150aを実行する点において、
図3に示す第1実施形態のカメラキャリブレーション処理と異なり、他の手順は、第1実施形態と同じである。また、変形例2におけるロボットシステムの装置構成は、第1実施形態のロボットシステム10の装置構成と同じである。
【0063】
ステップS146は、
図6に示す第2実施形態のカメラキャリブレーション処理のステップS146と同じである。同様に、ステップS150aは、
図6に示す第2実施形態のカメラキャリブレーション処理のステップS150aと同じである。
【0064】
以上の構成を有する変形例2のロボットシステムでは、各グループにおける類似度が最も高い撮像画像のうち、類似度が最も低い撮像画像のグループについて、かかるグループを示す情報及びかかるグループに属する画像の取得を促すメッセージを管理用端末400に表示させるので、かかるグループに属する画像数の増加を促すことができる。このため、かかるグループにおいて類似度が最も高い撮像画像の類似度が上昇する可能性を高めることができ、キャリブレーション精度を向上させることができる。なお、変形例2において、変形1と同様に、各マスタ画像FA,FB,FC,FDを表示させると共に、各グループA〜Dにおける類似度が最も高い撮像画像の類似度を、各マスタ画像FA,FB,FC,FDに対応付けて表示させることもできる。
【0065】
C3.変形例3:
図11は、変形例3におけるカメラキャリブレーション処理の手順を示すフローチャートである。変形例3のカメラキャリブレーション処理は、ステップS150に代えてステップS150bを実行する点において、
図3に示す第1実施形態のカメラキャリブレーション処理と異なり、他の手順は第1実施形態と同じである。また、変形例2におけるロボットシステムの装置構成は、第1実施形態のロボットシステム10の装置構成と同じである。
【0066】
変形例3のカメラキャリブレーション処理では、ステップS145が実行された後、キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、所属する画像数の最も少ないグループを示す情報と、かかるグループに属する画像の取得を促すメッセージと、ステップS135で求めた誤差とを、管理用端末400に表示させる(ステップS150b)。
【0067】
図12は、変形例3のステップS150bにおいて表示される情報の一例を示す説明図である。
図12に示すように、管理用端末400に表示されるウィンドウW4は、誤差表示領域Arが設けられている点において、
図5に示すウィンドウW1と異なり、他の構成はウィンドウW1と同じである。誤差表示領域Arは、ステップS135において求められた誤差を表示するための領域である。
図5の例では、誤差として「1.5mm」が表示されている。
【0068】
以上の構成を有する変形例3のロボットシステムは、第1実施形態のロボットシステム10と同様の効果を有する。加えて、管理用端末400において、ステップS135で求めた誤差を表示するので、ユーザに対してキャリブレーション精度がどの程度であるかを理解させることができる。したがって、ユーザは、キャリブレーションボードCBの位置を調整した際に、キャリブレーション精度が向上したのか又は低下したのかを理解することができ、誤差表示領域Arに表示される数値(誤差)を、キャリブレーションボードCBの位置をずらす際の目安とすることができる。
【0069】
C4.変形例4:
図13は、変形例4におけるカメラキャリブレーション処理の手順を示すフローチャートである。変形例4のカメラキャリブレーション処理は、ステップS147を追加して実行する点、およびステップS150に代えてステップS150cを実行する点において、
図3に示す第1実施形態のカメラキャリブレーション処理と異なり、他の手順は、第1実施形態と同じである。また、変形例4におけるロボットシステムの装置構成は、第1実施形態のロボットシステム10の装置構成と同じである。
【0070】
変形例4のカメラキャリブレーション処理では、上述したステップS145が実行された後、キャリブレーション処理部231は、ステップS115において算出した各撮像画像の類似度に基づき各グループの平均類似度を求める(ステップS147)。キャリブレーション処理部231は、ユーザインターフェイス制御部232を制御して、各グループの撮像画像数、最高類似度、平均類似度のヒストグラムを管理用端末400に表示させる(ステップS150c)。
【0071】
図14は、変形例4のステップS150cにおいて表示される情報の一例を示す説明図である。
図14に示すように、管理用端末400に表示されるウィンドウW5には、撮像画像数のヒストグラムと、最高類似度のヒストグラムと、平均類似度のヒストグラムとが表示されている。なお、
図14では、類似度(最高類似度及び平均類似度)の単位はパーセンテージである。このように、管理用端末400において、撮像画像数のヒストグラムと、最高類似度のヒストグラムと、平均類似度のヒストグラムとが表示されるので、ユーザは、各グループのうち、いずれのグループに所属する撮像画像数が最も少ないのか、いずれのグループの最高類似度が最も低いのか、いずれのグループの平均類似度が最も低いのかを容易に理解することができる。したがって、例えば、ユーザは、最高類似度が最も低いグループに所属する画像を取得することにより、キャリブレーション精度を高めることができる。
【0072】
C5.変形例5:
図15は、変形例5のロボットシステム10aの内部構成を示すブロック図である。第1実施形態のロボットシステム10は、カメラ150を除くカメラキャリブレーション処理を実現する機能部は、いずれも制御装置200が有していたが、変形例5のロボットシステム10aでは、これら機能部を、制御装置及び管理用端末が分担して有する。
【0073】
具体的には、変形例5の制御装置200aは、CPU230が、キャリブレーション処理部231,ユーザインターフェイス制御部232,撮像制御部233、及び画像処理部234として機能しない点と、駆動制御部235に代えて駆動副制御部236として機能する点とにおいて、第1実施形態の制御装置200と異なり、他の構成は、制御装置200と同じである。駆動副制御部236は、後述する管理用端末400aから受信する信号を駆動回路220に供給する。
【0074】
変形例5の管理用端末400aは、コンピュータ本体401と、ディスプレイ460と、キーボード470とを備えている。コンピュータ本体401は、入出力インターフェイス部410と、CPU420と、ハードディスク430と、RAM440と、ROM450とを備えている。
【0075】
入出力インターフェイス部410は、各種接続インターフェイス群からなり、制御装置200aの入出力インターフェイス部290と、カメラ150の接続インターフェイス部156と、ディスプレイ460と、キーボード470と、CPU420とに接続されている。CPU420は、ROM450に記憶されている制御プログラムを読み出してRAM440に展開して実行することにより、キャリブレーション処理部421,撮像制御部422,駆動主制御部423,ユーザインターフェイス制御部424,及び画像処理部425として機能する。キャリブレーション処理部421は、第1実施形態におけるキャリブレーション処理部231と同じであるので説明を省略する。同様に、撮像制御部422は第1実施形態における撮像制御部233と、ユーザインターフェイス制御部424は第1実施形態におけるユーザインターフェイス制御部232と、画像処理部425は第1実施形態における画像処理部234と、それぞれ同じであるので説明を省略する。駆動主制御部423は、ROM450に予め記憶されている教示データに基づき、サーボモータ130を駆動するための信号を駆動副制御部236に送信する。
【0076】
ハードディスク430は、撮像画像格納部431とマスタ画像格納部432と補正値格納部433とを備えている。撮像画像格納部431は、第1実施形態における撮像画像格納部282と同じであるので説明を省略する。同様に、マスタ画像格納部432は第1実施形態におけるマスタ画像格納部284と、補正値格納部433は第1実施形態における補正値格納部286と、それぞれ同じであるので説明を省略する。
【0077】
以上の構成を有する変形例5のロボットシステム10aは、第1実施形態のロボットシステム10と同様の効果を有する。
【0078】
C6.変形例6:
図16は、変形例6のロボットシステム10bの内部構成を示すブロック図である。変形例6のロボットシステム10bは、管理用端末400を有していない点、カメラ150に代えてカメラ150aを有する点、及び制御装置200が有する一部の機能部が省略されている点において、第1実施形態のロボットシステム10と異なり、他の構成及びカメラキャリブレーション処理の手順は、第1実施形態のロボットシステム10と同じである。
【0079】
変形例6の制御装置200aは、
図15に示す変形例5の制御装置200と同じであるので、説明を省略する。
【0080】
変形例6のカメラ150aは、CPU160と記憶部170と操作部180と表示部182とを備えている点、及び接続インターフェイス部156の接続先が制御部154に代えてCPU160である点において、第1実施形態のカメラ150と異なり、他の構成は、第1実施形態のカメラ150と同じである。
【0081】
CPU160は、記憶部170に記憶されている制御プログラムを実行することにより、キャリブレーション処理部161,撮像制御部162,駆動主制御部163,ユーザインターフェイス制御部164,及び画像処理部165として機能する。キャリブレーション処理部161は、第1実施形態におけるキャリブレーション処理部231と同じであるので説明を省略する。同様に、撮像制御部162は第1実施形態における撮像制御部233と、駆動主制御部163は第2実施形態における駆動主制御部423と、ユーザインターフェイス制御部164は第1実施形態におけるユーザインターフェイス制御部232と、画像処理部165は第1実施形態における撮像制御部233と、それぞれ同じであるので説明を省略する。
【0082】
記憶部170は、RAMやROM等からなり、前述の制御プログラムを記憶すると共に、撮像画像格納部171とマスタ画像格納部172と補正値格納部173とを備えている。撮像画像格納部171は、第1実施形態における撮像画像格納部282と同じであるので説明を省略する。同様に、マスタ画像格納部172は第1実施例のマスタ画像格納部284と、補正値格納部173は第1実施形態における補正値格納部286と、それぞれ同じであるので説明を省略する。
【0083】
操作部180は、CPU160と接続されている。操作部180は各種操作ボタンを有しており、操作ボタンを介して入力される指示をCPU160に通知する。表示部182はCPU160と接続されており、ユーザインターフェイス制御部164により生成された各種メニュー画面や各種ウィンドウ等を表示する。
【0084】
以上の構成を有する変形例6のロボットシステム10bは、第1実施形態のロボットシステム10と同様の効果を有する。加えて、管理用端末400を省略することができるので、システム全体を小型化することができる。
【0085】
C7.変形例7:
各実施形態及び各変形例では、カメラキャリブレーションに用いる撮像画像の数は4枚であったが、4枚に限らず任意の複数枚とすることもできる。例えば、カメラ150の撮像領域を6つに分割して、分割されたそれぞれの領域にキャリブレーションボードCBが写った撮像画像をカメラキャリブレーションに用いることができる。この構成では、マスタ画像は6枚用意され、撮像画像は6つのグループに分類されることとなる。
【0086】
C8.変形例8:
変形例4を除く各実施形態及び各変形例おいて、管理用端末400に表示される「グループを示す情報」には、マスタ画像が含まれていたが、マスタ画像を省略することができる。この場合、グループを示す情報として、例えば、グループ名を表示することもできる。
【0087】
C9.変形例9:
第1実施形態のステップS150において、撮像画像数が最も少ないグループを示す情報及び画像取得を促すメッセージを表示するのは管理用端末400であったが、管理用端末400に代えて、教示装置300に表示させることもできる。また、制御装置200に表示部を設けて、かかる表示部に、撮像画像数が最も少ないグループを示す情報及び画像取得を促すメッセージを表示する構成を採用することもできる。
【0088】
C10.変形例10:
第1実施形態では、カメラキャリブレーション処理のステップS150において、所属する画像数が最も少ないグループを示す情報を表示していたが、これに代えて、所属する画像数が最も少ないグループと、2番目以降に少ない任意のグループを示す情報を表示することもできる。例えば、所属する画像数が最も少ないグループと2番目に少ないグループとを示す情報を表示することができる。この構成では、マスタ画像により類似する2枚の画像が次回のカメラキャリブレーションで用いられ得るので、キャリブレーション精度をより短期間に向上させることができる。
【0089】
C11.変形例11:
各実施形態では、新たに撮像画像が新たに得られるたびに、補正値(ステップS130)、及び変換の誤差(ステップS135)を求めていたが、本発明はこれに限定されるものではない。例えば、ステップS130,S135,S140に代えて、以下の手順を実行することができる。まず、ステップS125において特定された撮像画像の類似度が所定値以上であるか否かを判定し、類似度が所定値以上である場合にカメラキャリブレーション処理を終了し、類似度が所定値よりも低い場合に前述のステップS145,S150を実行する、との手順を実行することができる。このような構成によれば、補正値及び誤差の算出を省略することができるので、カメラキャリブレーション処理に要する期間を短くすることができる。
【0090】
C12.変形例12:
各実施形態では、カメラ150,150aは、手首105に設置されていたが、本発明はこれに限定されるものではない。例えば、手首105に代えて、上アーム104や下アーム103やショルダ部102やフランジ部106等に配置することもできる。すなわち、一般には、ロボット本体100が有するアームと所定の位置関係となる位置に配置された撮像装置を、本発明における撮像装置として採用することができる。なお、請求項における「アーム」とは、各実施形態における下アーム103,上アーム104,手首105,フランジ部106を含む広い意味を有する。
【0091】
C13.変形例13:
各実施形態においてソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。また、これとは逆に、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよい。
【0092】
本発明は、上述の実施形態や変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、変形例中の技術的特徴は、上述の課題の一部又は全部を解決するために、あるいは、上述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。