以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る制御システムの概要を示す模式図である。
本実施の形態に係る制御システム1は、たとえば、工業製品の生産ラインなどにおいて、半田ごて2aおよび半田フィーダ2bを用いて、基板3のパッド2dに電線2cを半田付けするための制御(以下、「半田付け制御」という)を行なう。制御システム1は、新たな基板3が搬送されてくるたびに半田付け制御を行ない、当該基板3のパッド2dに電線2cを半田付けする。
図1に示すように、制御システム1は、撮像装置21,22と、ロボット30a〜30dと、ロボットコントローラ40a〜40dと、制御装置50と、表示装置60とを備える。
撮像装置21,22は、撮像視野に存在する被写体を撮像して画像データ(以下、「実画像」という)を生成する。撮像装置21,22は、ロボット30a〜30dと異なる定位置に設定される。撮像装置21,22は、互いに異なる場所に設置され、互いに異なる方向から、被写体としての半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dを撮像する。撮像装置21,22は、予め定められた撮像周期に従って撮像し、撮像によって得られた実画像を制御装置50に出力する。
ロボット30aは、半田ごて2aの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30aは、先端に半田ごて2aを支持(ここでは把持)するためのハンド31aを有し、ハンド31aに把持された半田ごて2aの位置および姿勢を6自由度で変化させる。6自由度は、X方向、Y方向およびZ方向の並進自由度と、ピッチ方向、ヨー方向およびロール方向の回転自由度とを含む。
ロボット30bは、半田フィーダ2bの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30bは、先端に半田フィーダ2bを支持(ここでは把持)するためのハンド31bを有し、ハンド31bに把持された半田フィーダ2bの位置および姿勢を6自由度で変化させる。
ロボット30cは、電線2cの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30cは、先端に電線2cを支持(ここでは把持)するためのハンド31cを有し、ハンド31cに把持された電線2cの位置および姿勢を6自由度で変化させる。
ロボット30dは、基板3のパッド2dの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえばXYθステージである。ロボット30dは、基板3を支持する(ここでは載せる)ためのステージ31dを有し、ステージ31dに載置された基板3のパッド2dの位置および姿勢を3自由度で変化させる。3自由度は、X方向およびY方向の並進自由度と、XY平面に直交する軸を中心とする方向(θ方向)の回転自由度とを含む。
ロボット30a〜30dの各々は、複数のサーボモータを有しており、当該サーボモータが駆動されることにより、支持している対象物の状態を変化させる。当該複数のサーボモータの各々に対応してエンコーダが設けられている、エンコーダは、対応するサーボモータの駆動量(回転量)に応じたパルス信号を発生する。エンコーダが発生するパルス信号は、対応するロボットコントローラに出力されるとともに、制御装置50にも出力される。
ロボットコントローラ40a〜40dは、ロボット30a〜30dにそれぞれ対応して設けられる。ロボットコントローラ40a〜40dは、制御装置50から受けた制御指令に従って、ロボット30a〜30dの動作制御をそれぞれ行なう。
ロボットコントローラ40a〜40cの各々は、X方向、Y方向およびZ方向の並進自由度ならびにピッチ方向、ヨー方向およびロール方向の回転自由度の各々の制御指令を制御装置50から受ける。これらX方向、Y方向、Z方向、ピッチ方向、ヨー方向およびロール方向は、対応するロボットの座標系で示される。
ロボットコントローラ40a〜40cの各々は、対応するハンドのX方向、Y方向およびZ方向の並進移動量がX方向、Y方向およびZ方向の並進自由度の制御指令にそれぞれ近づくように、対応するロボットに対してフィードバック制御を行なう。対応するハンドのX方向、Y方向およびZ方向の並進移動量は、対応するロボットに設けられるエンコーダからのパルス信号に含まれるパルス数をカウントすることにより求められる。
ロボットコントローラ40a〜40cの各々は、対応するハンドのピッチ方向、ヨー方向およびロール方向の回転移動量がピッチ方向、ヨー方向およびロール方向の回転自由度の制御指令にそれぞれ近づくように、対応するロボットに対してフィードバック制御を行なう。対応するハンドのピッチ方向、ヨー方向およびロール方向の回転移動量は、対応するロボットに設けられるエンコーダからのパルス信号に含まれるパルス数をカウントすることにより求められる。
ロボットコントローラ40dは、X方向およびY方向の並進自由度ならびに回転自由度の各々の制御指令を制御装置50から受ける。これらX方向、Y方向および回転方向は、ロボット30dの座標系で示される。
ロボットコントローラ40dは、ステージ31dのX方向およびY方向の並進移動量がX方向およびY方向の並進自由度の制御指令にそれぞれ近づくように、ロボット30dに対してフィードバック制御を行なう。ステージ31dのX方向およびY方向の並進移動量は、ロボット30dに設けられるエンコーダからのパルス信号に含まれるパルス数をカウントすることにより求められる。
ロボットコントローラ40dは、ステージ31dの回転移動量が回転自由度の制御指令に近づくように、ロボット30dに対してフィードバック制御を行なう。ステージ31dの回転移動量は、ロボット30dに設けられるエンコーダからのパルス信号に含まれるパルス数をカウントすることにより求められる。
制御装置50は、ロボットコントローラ40a〜40dを介して、ロボット30a〜30dをそれぞれ制御する。
制御装置50は、半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dの見本を示す、第1基準動画および第2基準動画を記憶している。第1基準動画は、撮像装置21の位置から見たときの動画である。第2基準動画は、撮像装置22の位置から見たときの動画である。
制御装置50は、半田付け制御として、視覚サーボを用いたロボット30a〜30dの制御を行なう。制御装置50は、撮像装置21,22によって撮像される実画像上の半田ごて2aの状態の変化が、第1,第2基準動画上の半田ごて2aの状態の変化にそれぞれ近づくように、ロボット30aを制御する。同様に、制御装置50は、撮像装置21,22によって撮像される実画像上の半田フィーダ2bの状態の変化が、第1,第2基準動画上の半田フィーダ2bの状態の変化にそれぞれ近づくように、ロボット30bを制御する。制御装置50は、撮像装置21,22によって撮像される実画像上の電線2cの状態の変化が、第1,第2基準動画上の電線2cの状態の変化にそれぞれ近づくように、ロボット30cを制御する。制御装置50は、撮像装置21,22によって撮像される実画像上のパッド2dの状態の変化が、第1,第2基準動画上のパッド2dの状態の変化にそれぞれ近づくように、ロボット30dを制御する。これにより、半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dの状態は、第1基準動画および第2基準動画に従って連係して変化する。
さらに、制御装置50は、半田付け制御の終了後に、視覚サーボを用いたロボット30a〜30dの制御が正常に行なわれた否かを判定するための解析画面を表示装置60に表示する解析装置としても動作する。
図2は、実施の形態における解析画面の概要を示す図である。制御装置50は、撮像装置21によって撮像された実画像から抽出される特徴量の時間変化を示す実波形621と、第1基準動画のフレームから抽出される特徴量の時間変化を示す基準波形622との両方を解析画面61上に表示させる。もしくは、制御装置50は、撮像装置22によって撮像された実画像から抽出される特徴量の時間変化を示す実波形621と、第2基準動画のフレームから抽出される特徴量の時間変化を示す基準波形622との両方を解析画面61上に表示させる。実波形621および基準波形622は、解析画面61の領域601,602にそれぞれ表示される。
特徴量は、たとえば、対象物(半田ごて2a、半田フィーダ2b、電線2cまたはパッド2d)の画像上の座標(画素座標)である。
視覚サーボを用いたロボット30a〜30dの制御が正常に実行されている場合、撮像装置21,22によって撮像される実画像上の対象物の状態の変化は、第1,第2基準動画上の対象物の状態の変化にそれぞれ追従する。そのため、実波形621は、基準波形622に近似する。したがって、作業者は、解析画面61に表示される実波形621と基準波形622とを確認することにより、視覚サーボを用いたロボット30a〜30dの制御が正常に実行されている否かを判定しやすくなる。たとえば、作業者は、実波形621と基準波形622との偏差が大きい場合に、視覚サーボを用いたロボット30a〜30dの制御に何等かの異常が生じていると判定できる。
<B.具体例>
次に、実施の形態に係る制御システムの具体例について説明する。
<B−1.制御装置のハードウェア構成>
図3は、実施の形態に係る制御システムを構成する制御装置のハードウェア構成を示す模式図である。図3に示されるように、制御装置50は、コンピュータアーキテクチャに従う構造を有しており、予めインストールされたプログラムをプロセッサが実行することで、後述するような各種の処理を実現する。
より具体的には、制御装置50は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ510と、RAM(Random Access Memory)512と、表示コントローラ514と、システムコントローラ516と、I/O(Input Output)コントローラ518と、ハードディスク520と、カメラインターフェイス522と、入力インターフェイス524と、ロボットコントローラインターフェイス526と、通信インターフェイス528と、メモリカードインターフェイス530とを含む。これらの各部は、システムコントローラ516を中心として、互いにデータ通信可能に接続される。
プロセッサ510は、システムコントローラ516との間でプログラム(コード)などを交換して、これらを所定順序で実行することで、目的の演算処理を実現する。
システムコントローラ516は、プロセッサ510、RAM512、表示コントローラ514、およびI/Oコントローラ518とそれぞれバスを介して接続されており、各部との間でデータ交換などを行うとともに、制御装置50全体の処理を司る。
RAM512は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク520から読み出されたプログラムや、撮像装置21,22によって取得された画像(画像データ)、画像に対する処理結果、およびワークデータなどを保持する。
表示コントローラ514は、表示装置60と接続されており、システムコントローラ516からの内部コマンドに従って、各種の情報を表示するための信号を表示装置60へ出力する。
I/Oコントローラ518は、制御装置50に接続される記録媒体や外部機器との間のデータ交換を制御する。より具体的には、I/Oコントローラ518は、ハードディスク520と、カメラインターフェイス522と、入力インターフェイス524と、ロボットコントローラインターフェイス526と、通信インターフェイス528と、メモリカードインターフェイス530と接続される。
ハードディスク520は、典型的には、不揮発性の磁気記憶装置であり、プロセッサ510で実行される制御プログラム550に加えて、各種情報が格納される。このハードディスク520にインストールされる制御プログラム550は、メモリカード536などに格納された状態で流通する。なお、ハードディスク520に代えて、フラッシュメモリなどの半導体記憶装置やDVD−RAM(Digital Versatile Disk Random Access Memory)などの光学記憶装置を採用してもよい。
カメラインターフェイス522は、撮像装置21,22から画像データを受付ける入力部に相当し、プロセッサ510と撮像装置21,22との間のデータ伝送を仲介する。カメラインターフェイス522は、撮像装置21,22からの画像データをそれぞれ一時的に蓄積するための画像バッファ522a,522bを含む。複数の撮像装置に対して、共有できる単一の画像バッファを設けてもよいが、処理高速化のため、それぞれの撮像装置に対応付けて独立に複数配置することが好ましい。
入力インターフェイス524は、プロセッサ510とキーボード、マウス、タッチパネル、専用コンソールなどの入力装置534との間のデータ伝送を仲介する。
ロボットコントローラインターフェイス526は、プロセッサ510とロボットコントローラ40a,40bとの間のデータ伝送を仲介する。
通信インターフェイス528は、プロセッサ510と図示しない他のパーソナルコンピュータやサーバ装置などとの間のデータ伝送を仲介する。通信インターフェイス528は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
メモリカードインターフェイス530は、プロセッサ510と記録媒体であるメモリカード536との間のデータ伝送を仲介する。メモリカード536には、制御装置50で実行される制御プログラム550などが格納された状態で流通し、メモリカードインターフェイス530は、このメモリカード536から制御プログラム550を読み出す。メモリカード536は、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記録媒体や、CD−ROM(Compact Disk-Read Only Memory)などの光学記録媒体等からなる。あるいは、通信インターフェイス528を介して、配信サーバなどからダウンロードしたプログラムを制御装置50にインストールしてもよい。
上述のような汎用的なコンピュータアーキテクチャに従う構造を有するコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係る制御プログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼び出して処理を実行するものであってもよい。
さらに、本実施の形態に係る制御プログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係る制御プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
なお、代替的に、制御プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
<B−2.制御装置の機能構成>
図4は、実施の形態に係る制御装置の機能構成を示すブロック図である。図4に示されるように、制御装置50は、基準動画記憶部51と、実画像取得部56と、実動画記憶部57と、ロボット制御部58と、解析部59とを備える。
<B−2−1.基準動画記憶部>
基準動画記憶部51は、図3に示すハードディスク520およびRAM512によって構成され、第1基準動画と第2基準動画とを記憶する。第1基準動画および第2基準動画は、半田ごて2aおよび半田フィーダ2bを用いて、パッド2dに電線2cを半田付けする様子を示す。第1基準動画および第2基準動画は、ロボット30a〜30dによって対象物(半田ごて2a、半田フィーダ2b、電線2cおよびパッド2d)のサンプルの状態を変化させる様子を撮像することにより作成される。もしくは、第1基準動画および第2基準動画は、作業者の手によって対象物のサンプルの状態を変化させる様子を撮像することにより作成されてもよい。
第1基準動画および第2基準動画の各々は、時系列に並んだ複数(以下、M枚(Mは、2以上の整数)とする)のフレームを含む。第1基準動画のk番目(kは1〜Mのいずれかの整数)のフレームと第2基準動画のk番目のフレームとは、ある状態の半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dを同時に異なる方向から見たときの画像である。
図5は、基準動画(第1基準動画または第2基準動画)の一例を示す図である。図5には、基準動画のフレーム71〜77が示されている。
フレーム71は、パッド2dの状態が所望の状態に到達したときのフレームである。フレーム72は、電線2cがパッド2dの上に到達したときのフレームである。フレーム73は、半田ごて2aの先端がパッド2dに接触したときのフレームである。フレーム74は、半田フィーダ2bの先端が半田ごて2aの先端に接触したときのフレームである。フレーム75は、半田フィーダ2bから供給され溶融した半田(以下、「溶融半田2e」という)が所望のサイズになったときのフレームである。フレーム76は、半田フィーダ2bを半田ごて2aから遠ざけたときのフレームである。フレーム77は、半田ごて2aをパッド2dから遠ざけたときのフレームである。このような一連の動作により、パッド2dに電線2cが半田付けされる。
図4に示されるように、基準動画記憶部51は、第1基準動画の各フレームと当該フレームから抽出された特徴量とを対応付ける第1テーブルと、第2基準動画の各フレームと当該フレームから抽出された特徴量とを対応付ける第2テーブルとをさらに記憶する。特徴量は、たとえば、対象物ごとの重心の画像上の座標(画素座標)である。
図6は、実施の形態に係る基準動画記憶部が記憶する第1テーブルの一例を示す図である。図6に示す例の第1テーブルでは、各フレームについて、フレーム番号と、当該フレームの画像ファイル名と、当該フレームの時刻と、複数種類の特徴量とが対応付けられている。第2テーブルも図6に示す第1テーブルと同様のデータ構造を有する。
なお、第1テーブルおよび第2テーブルに含まれる特徴量は、後述する画像処理部53によって算出される。
<B−2−2.実画像取得部>
実画像取得部56は、撮像装置21,22から実画像を撮像周期ごとに取得する。さらに、実画像取得部56は、1回の半田付け制御中に撮像装置21から取得した実画像を時系列に並べた第1実動画を生成するととともに、当該半田付け制御中に撮像装置22から取得した実画像を時系列に並べた第2実動画を生成する。実画像取得部56は、生成した第1実動画および第2実動画を実動画記憶部57に格納する。
実画像取得部56の一部は、カメラインターフェイス522によって構成される。実画像取得部56の一部は、図3に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B−2−3.実動画記憶部>
実動画記憶部57は、図3に示すハードディスク520およびRAM512によって構成され、半田付け制御ごとに第1実動画および第2実動画を記憶する。上述したように、第1実動画および第2実動画は、実画像取得部56により生成される。
さらに、実動画記憶部57は、第1実動画を構成する複数の実画像の各々と当該実画像から抽出された特徴量とを対応付ける第3テーブルと、第2実動画を構成する複数の実画像の各々と当該実画像から抽出された特徴量とを対応付ける第4テーブルとを記憶する。特徴量は、対象物ごとの重心の画像上の座標(画素座標)である。
図7は、実施の形態に係る実動画記憶部が記憶する第3テーブルの一例を示す図である。図7に示す例の第3テーブルでは、実画像を識別する画像ファイル名と、当該実画像の撮像時刻と、当該実画像から抽出された複数種類の特徴量とが対応付けられている。第4テーブルも図7に示す第3テーブルと同様のデータ構造を有する。
なお、基準動画記憶部51が記憶する第1,第2テーブルに含まれる特徴量と、実動画記憶部57が記憶する第3,第4テーブルに含まれる特徴量とは同一の種類である。第3テーブルおよび第4テーブルに含まれる特徴量は、後述する画像処理部53によって算出される。
実動画記憶部57は、半田付け制御ごとに第3テーブルおよび第4テーブルを記憶する。1回の半田付け制御において、パッド2dに電線2cが半田付けされる。そのため、実動画記憶部57は、パッド2dを識別するパッド識別番号と、第1実動画、第2実動画、第3テーブルおよび第4デーブルとを対応付けて記憶する。図7には、パッド識別番号「000001」に対応する第3テーブルが示されている。
<B−2−4.ロボット制御部>
ロボット制御部58は、視覚サーボを用いてロボット30a〜30dを制御する。ロボット制御部58は、教示範囲選択部52と、画像処理部53と、目標フレーム選択部54と、第1制御部55aと、第2制御部55bと、第3制御部55cと、第4制御部55dとを備える。教示範囲選択部52と画像処理部53と目標フレーム選択部54とは、図3に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B−2−5.教示範囲選択部>
教示範囲選択部52は、対象物ごとに、第1基準動画および第2基準動画から当該対象物の見本となる教示範囲を選択する。対象物は、半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dのいずれかである。
教示範囲選択部52は、教示範囲の選択指示を促す画面を表示装置60に表示する。作業者は、第1基準動画および第2基準動画の各フレームを確認し、入力装置534(図3参照)を操作して、対象物が所望の動作をしている一連のフレーム群の先頭フレームと最終フレームとを指定する。教示範囲選択部52、指示された先頭フレームから最終フレームまでを教示範囲として選択する。
たとえば、図5に示される基準動画に対して、教示範囲選択部52は、全てのフレーム(すなわち、1番目のフレームからM番目のフレーム)を半田ごて2aおよび半田フィーダ2bの教示範囲として選択する。教示範囲選択部52は、1番目のフレームから電線2cの一部が欠け始めるフレーム(フレーム75より少し前のフレーム)までを電線2cの教示範囲として選択する。教示範囲選択部52は、1番目のフレームからパッド2dの一部が欠け始めるフレーム(フレーム72より少し前のフレーム)までをパッド2dの教示範囲として選択する。
<B−2−6.画像処理部>
画像処理部53は、対象画像に対して画像処理を行ない、テンプレートマッチングを用いて、対象画像中から対象物を検出する。テンプレートマッチングの基本処理は、対象物の画像特徴を表すデータであるテンプレートを予め用意しておき、対象画像とテンプレートとの間の画像特徴の一致度を評価することで、対象画像中の対象物の位置や姿勢、形状、サイズを検出する処理である。
画像処理部53が画像処理を行なう対象画像は、第1基準動画のフレーム、第2基準動画のフレーム、および撮像装置21,22によって撮像された実画像である。
画像処理部53は、事前準備として、対象物ごとに第1テンプレートおよび第2テンプレートを作成する。対象物は、半田ごて2a、半田フィーダ2b、電線2c、パッド2dおよび溶融半田2eのいずれかである。第1テンプレートは、第1基準動画から選択されたフレームに基づいて作成される。第2テンプレートは、第2基準動画から選択されたフレームに基づいて作成される。
図8は、第1テンプレートの作成方法の一例を示す図である。図8に示されるように、画像処理部53は、第1基準動画から作業者によって選択されたフレームを表示装置60に表示させる。作業者は、対象物の全体が示されるフレームを選択すればよい。
画像処理部53は、表示装置60に表示されたフレーム上において、対象物の領域指定を受け付ける。図8に示す例において、作業者は、入力装置534(図3参照)を操作して、半田ごて2aを取り囲む線4aと、半田フィーダ2bを取り囲む線4bと、電線2cを取り囲む線4cと、パッド2dを取り囲む線4dとを入力する。画像処理部53は、線4a〜4dで囲まれた領域を、半田ごて2a、半田フィーダ2b、電線2cおよびパッド2dの画像領域としてそれぞれ特定する。
画像処理部53は、線4aで囲まれた画像領域の画像特徴を表すデータを半田ごて2aの第1テンプレートとして作成する。同様に、画像処理部53は、線4bで囲まれた画像領域の画像特徴を表すデータを半田フィーダ2bの第1テンプレートとして作成する。画像処理部53は、線4cで囲まれた画像領域の画像特徴を表すデータを電線2cの第1テンプレートとして作成する。画像処理部53は、線4dで囲まれた画像領域の画像特徴を表すデータをパッド2dの第1テンプレートとして作成する。画像処理部53は、同様の方法により、溶融半田2eの第1テンプレートを作成する。
同様の方法により、画像処理部53は、第2基準動画から選択されたフレームを表示装置60に表示させ、対象物ごとの第2テンプレートを作成する。
画像処理部53は、対象物ごとの第1テンプレートを用いてテンプレートマッチングを行なうことにより、第1基準動画のフレームまたは撮像装置21によって撮像される実画像から対象物を検出する。
画像処理部53は、対象物ごとの第2テンプレートを用いてテンプレートマッチングを行なうことにより、第2基準動画のフレームまたは撮像装置22によって撮像される実画像から対象物を検出する。
画像処理部53は、対象物ごとに、対象画像から検出した当該対象物の各特徴点の画像上の座標を出力する。
さらに、画像処理部53は、撮像装置21,22によって撮像される実画像と、第1基準動画および第2基準動画の各フレームとから特徴量を抽出する。特徴量は、対象物ごとの重心の画像上の座標(画素座標)である。
基準動画記憶部51が記憶する第1テーブルは、第1基準動画の各フレームから抽出された特徴量を含む。基準動画記憶部51が記憶する第2テーブルは、第2基準動画の各フレームから抽出された特徴量を含む。実動画記憶部57が記憶する第3テーブルは、撮像装置21によって撮像された実画像から抽出された特徴量を含む。実動画記憶部57が記憶する第4テーブルは、撮像装置22によって撮像された実画像から抽出された特徴量を含む。
<B−2−7.目標フレーム選択部>
目標フレーム選択部54は、第1基準動画および第2基準動画から目標フレームを選択する。ただし、目標フレーム選択部54は、第1基準動画のk番目のフレームを目標フレームとして選択した場合、第2基準動画のk番目のフレームを目標フレームとして選択する。目標フレームの選択方法の具体例については後述する。
<B−2−8.第1〜第4制御部>
第1制御部55aは、ロボットコントローラ40aを介してロボット30aを制御し、半田ごて2aの状態を変化させる。第2制御部55bは、ロボットコントローラ40bを介してロボット30bを制御し、半田フィーダ2bの状態を変化させる。第3制御部55cは、ロボットコントローラ40cを介してロボット30cを制御し、電線2cの状態を変化させる。第4制御部55dは、ロボットコントローラ40dを介してロボット30dを制御し、パッド2dの状態を変化させる。
図9は、第1〜第4制御部の機能構成を示すブロック図である。図9に示されるように、第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55dの各々は、変化情報生成部551と、変化情報記憶部552と、算出部553と、指令部554と、終了判定部555とを備える。変化情報記憶部552は、図3に示すハードディスク520およびRAM512によって構成される。変化情報生成部551と、算出部553と、指令部554と、終了判定部555とは、図3に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B−2−9.変化情報生成部>
変化情報生成部551は、複数の自由度の各々に対して、対象ロボットの制御量と、撮像装置21によって撮像された実画像上の対象物の状態の変化量との関係を示す第1変化情報を生成する。変化情報生成部551は、複数の自由度に対してそれぞれ生成した複数の第1変化情報からなる第1変化情報セット5521を変化情報記憶部552に格納する。
さらに、変化情報生成部551は、複数の自由度の各々に対して、対象ロボットの制御量と、撮像装置22によって撮像された実画像上の対象物の状態の変化量との関係を示す第2変化情報を生成する。変化情報生成部551は、複数の自由度に対してそれぞれ生成した複数の第2変化情報からなる第2変化情報セット5522を変化情報記憶部552に格納する。
対象物は、第1制御部55aでは半田ごて2aであり、第2制御部55bでは半田フィーダであり、第3制御部55cでは電線2cであり、第4制御部55dではパッド2dである。対象ロボットは、第1制御部55aではロボット30aであり、第2制御部55bではロボット30bであり、第3制御部55cではロボット30cであり、第4制御部55dではロボット30dである。複数の自由度は、第1制御部55a、第2制御部55bおよび第3制御部55cでは6自由度であり、第4制御部55dでは3自由度である。
本実施の形態では、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量を示す。具体的には、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。
単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量は、対象物の実空間上の状態に依存する。そのため、変化情報生成部551は、第1基準動画の教示範囲の各フレームに対して第1変化情報セット5521を生成する。さらに、変化情報生成部551は、第2基準動画の教示範囲の各フレームに対して第2変化情報セット5522を生成する。
変化情報生成部551による第1変化情報セット5521および第2変化情報セット5522の生成および格納処理は、事前準備として実行される。
図10を参照して、第1変化情報セット5521の生成方法を説明する。なお、第2変化情報セット5522の生成方法も同様の方法であるため、これらの生成方法の説明を省略する。
図10は、第1変化情報セットの生成方法を説明する図である。図10(a)は、第1基準動画のk番目のフレーム70を示す。k番目のフレーム70に対応する対象物の実空間上の状態(ここでは位置および姿勢)を基準状態とする。図10(b)は、基準状態から対象物をY方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像80aを示す。図10(c)は、基準状態から対象物をX方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像80bを示す。図10(d)は、基準状態から対象物をZ方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像80cを示す。図10(e)は、基準状態から対象物をピッチ方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像80dを示す。図10(f)は、基準状態から対象物をヨー方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像80eを示す。図10(g)は、基準状態から対象物をロール方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像80fを示す。
変化情報生成部551は、フレーム70および画像80a〜80fの各々から抽出された対象物の各特徴点の画像上の座標を、画像処理部53から取得する。
変化情報生成部551は、フレーム70から抽出された対象物の特徴点5a’〜5g’の座標を、画像80aから抽出された特徴点5a〜5gの座標にそれぞれ変換する写像を示す情報を、Y方向の並進自由度に対応する第1変化情報として生成する。
同様に、変化情報生成部551は、特徴点5a’〜5g’の座標を画像80bから抽出された特徴点5a〜5gの座標に変換する写像を示す情報を、X方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部551は、特徴点5a’〜5g’の座標を画像80cから抽出された特徴点5a〜5gの座標に変換する写像を示す情報を、Z方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部551は、特徴点5a’〜5g’の座標を画像80dから抽出された特徴点5a〜5gの座標に変換する写像を示す情報を、ピッチ方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部551は、特徴点5a’〜5g’の座標を画像80eから抽出された特徴点5a〜5gの座標に変換する写像を示す情報を、ヨー方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部551は、特徴点5a’〜5g’の座標を画像80fから抽出された特徴点5a〜5gの座標に変換する写像を示す情報を、ロール方向の回転自由度に対応する第1変化情報として生成する。このようにして、変化情報生成部551は、第1基準動画のk番目のフレーム70に対応する第1変化情報セット5521を生成する。
変化情報生成部551は、同様の方法により、第1基準動画のうちの教示範囲の残りのフレームに対応する第1変化情報セット5521を生成する。
<B−2−10.算出部>
算出部553は、撮像装置21,22によって撮像された実画像上の対象物の状態を第1基準動画および第2基準動画の目標フレーム上の対象物の状態にそれぞれ近づけるための複数の自由度の各々の制御量を算出する。
算出部553は、変化情報記憶部552から、目標フレームに対応する第1変化情報セット5521および第2変化情報セット5522を取得し、取得した第1変化情報セット5521および第2変化情報セット5522に基づいて、制御量を算出する。上述したように、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。そこで、算出部553は、実画像から抽出された対象物の特徴点の画像上の座標と、目標フレームから抽出された対象物の特徴点の画像上の座標とを画像処理部53から取得する。算出部553は、第1変化情報および第2変化情報に基づいて、実画像上の対象物を目標フレーム上の対象物に写像するための複数の自由度の各々の制御量を算出する。
図11を参照して、第1制御部55a〜第3制御部55cの算出部553による制御量の算出方法を説明する。なお、第4制御部55dの算出部553による制御量の算出方法も同様の方法であるため、説明を省略する。
図11は、算出部による制御量の算出方法を説明する図である。算出部553は、第1基準動画の目標フレームから抽出された対象物の特徴点5a’〜5g’の画像上の座標を画像処理部53から取得する。さらに、算出部553は、撮像装置21の撮像により得られた実画像から抽出された対象物の特徴点5a〜5gの画像上の座標を画像処理部53から取得する。なお、特徴点の数は、7つに限定されるものではない。
算出部553は、各特徴点の第1差分ベクトル6a〜6gを算出する。第1差分ベクトル6a〜6gはそれぞれ、特徴点5a〜5gを起点とし、特徴点5a’〜5g’を終点とするベクトルである。算出部553は、第1差分ベクトル6a〜6gの平均のx成分Δx1およびy成分Δy1を算出する。x成分およびy成分は、画像の座標系で示される。
同様の方法により、算出部553は、撮像装置22の撮像により得られた実画像から抽出された特徴点と第2基準動画の目標フレームから抽出された特徴点との第2差分ベクトルの平均のx成分Δx2およびy成分Δy2を算出する。
まず、算出部553は、第1差分ベクトルの平均のx成分Δx1およびy成分Δy1と、第2差分ベクトルの平均のx成分Δx2およびy成分Δy2yとが0になるように、3つの並進自由度の制御量を算出する。具体的には、算出部553は、Δx1,Δy1,Δx2およびΔy2と第1変化情報セット5521と第2変化情報セット5522とを用いて、対象ロボットのハンドにおけるX方向、Y方向およびZ方向の並進自由度の各々の制御量を算出する。
対象ロボットのハンドがX方向、Y方向およびZ方向の並進自由度のいずかに並進移動した場合、撮像装置21,22の撮像により得られる画像上において、対象物は一定方向に並進移動する。そのため、第1変化情報セット5521における並進自由度に対応する第1変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。同様に、第2変化情報セット5522における並進自由度に対応する第2変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。
ここで、目標フレームに対応する第1変化情報セット5521のX方向の並進自由度に対応する第1変化情報が、点(x、y)を点(x+dX1_1,y+dY1_1)に変換する写像を示すものとする。Y方向への並進自由度に対応する第1変化情報が、画像上の任意の点(x、y)を点(x+dX1_2,y+dY1_2)に変換する写像を示すものとする。Z方向への並進自由度に対応する第1変化情報が、画像上の任意の点(x、y)を点(x+dX1_3,y+dY1_3)に変換する写像を示すものとする。
さらに、目標フレームに対応する第2変化情報セット5522のX方向への並進自由度に対応する第2変化情報が、画像上の任意の点(x、y)を点(x+dX2_1,y+dY2_1)に変換する写像を示すものとする。Y方向への並進自由度に対応する第2変化情報が、画像上の任意の点(x、y)を点(x+dX2_2,y+dY2_2)に変換する写像を示すものとする。Z方向への並進自由度に対応する第2変化情報が、画像上の任意の点(x、y)を点(x+dX2_3,y+dY2_3)に変換する写像を示すものとする。
このとき、算出部553は、以下の4つの線形方程式(1)〜(4)を解くことにより、係数a1,a2,a3を算出する。
a1×dX1_1+a2×dX1_2+a3×dX1_3=Δx1 ・・(1)
a1×dY1_1+a2×dY1_2+a3×dY1_3=Δy1 ・・(2)
a1×dX2_1+a2×dX2_2+a3×dX2_3=Δx2 ・・(3)
a1×dY2_1+a2×dY2_2+a3×dY2_3=Δy2 ・・(4)。
第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量を示す。そのため、算出部553は、X方向の並進自由度の制御量を単位制御量のa1倍、Y方向の並進自由度の制御量を単位制御量のa2倍、Z方向の並進自由度の制御量を単位制御量のa3倍とする。これら並進自由度の制御量は、Δx1、Δy1、Δx2およびΔy2yだけ、実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための制御量である。
次に、算出部553は、3つの回転自由度の各々の制御量を算出する。算出部553は、各特徴点の第1差分ベクトルから上記の平均のx成分Δx1およびy成分Δy1を差し引く。同様に、算出部553は、各特徴点の第2差分ベクトルから上記の平均のx成分Δx2およびy成分Δy2を差し引く。算出部553は、たとえば山登り法のような探索アルゴリズムを用いて、各特徴点の第1差分ベクトルおよび第2差分ベクトルの残差が最も0に近くなる3つの回転自由度の制御量を算出する。
具体的には、算出部553は、ピッチ方向、ヨー方向およびロール方向の回転自由度の制御量が0である解を現在の解として探索アルゴリズムを開始する。算出部553は、現在の解の近傍の複数の解の各々に従って対象ロボットを制御したときの、各特徴点の第1差分ベクトルおよび第2差分ベクトルの残差の変化をシミュレーションする。算出部553は、シミュレーション結果から、現在の解よりも各特徴点の第1差分ベクトルおよび第2差分ベクトルの残差が0に近い近傍解が存在する場合に、当該近傍解を現在の解に置き換える。算出部553は、この処理を繰り返すことにより、第1差分ベクトルおよび第2差分ベクトルの残差が極値となる解を探索する。
<B−2−11.指令部>
指令部554は、算出部553によって算出された制御量だけ対象ロボットを移動させるための制御指令を生成し、生成した制御指令を対象ロボットコントローラに出力する。第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55dの対象ロボットコントローラは、それぞれロボットコントローラ40a〜40dである。
<B−2−12.終了判定部>
終了判定部555は、実画像上の対象物の状態と教示範囲の最終フレーム上の対象物の状態との偏差を算出し、算出した偏差が予め定められた閾値未満である場合に、対象ロボットの制御を終了すると判定する。終了判定部555は、対象ロボットの制御を終了すると判定すると、終了通知を出力する。
偏差は、たとえば、実画像および最終フレームから抽出された対象物の対応する特徴点同士の距離の平均である。
閾値は、対象物の状態に要求される精度に応じて設定される。閾値は、第1制御部55aでは閾値Thaであり、第2制御部55bでは閾値Thbであり、第3制御部55cでは閾値Thcであり、第4制御部55dでは閾値Thdである。閾値Tha〜Thdは、同じであってもよいし、互いに異なっていてもよい。
<B−2−13.解析部>
解析部59は、入力装置534(図3参照)に解析指示が入力されると、視覚サーボを用いたロボット30a〜30dの制御が正常に行なわれた否かを判定するための解析画面を表示装置60に表示する。
解析部59は、パッド識別番号の入力を受け付け、入力されたパッド識別番号に対応する第1実動画、第2実動画、第3テーブルおよび第4テーブルを実動画記憶部57から読み出す。解析部59は、読み出した第1実動画、第2実動画、第3テーブルおよび第4テーブルに基づく解析画面を表示装置60に表示する。
図12は、実施の形態における解析画面の具体例を示す図である。図12に示す例の解析画面62は、領域601〜606と、ボタン607〜612とを含む。
解析部59は、解析指示が入力されると、実動画記憶部57から読み出した第3テーブルに基づいて、撮像装置21によって撮像された実画像から抽出された特徴量の時間変化を示す第1実波形を実波形621として作成する。解析部59は、作成した実波形621を領域601に表示させる。さらに、解析部59は、基準動画記憶部51が記憶する第1テーブルに基づいて、第1基準動画の各フレームから抽出された特徴量の時間変化を示す第1基準波形を基準波形622として作成し、作成した基準波形622を領域602に表示させる。このとき、解析部59は、複数種類の特徴量のうちの1つに対応する実波形621および基準波形622を作成する。図12に示す例では、特徴量「半田ごての画素位置(y座標)」の実波形621および基準波形622が表示されている。
解析部59は、解析指示が入力されると、実波形621の時間軸上の時刻を指定するマーク623を実波形621に重ねて表示させる。解析部59は、マーク623で指定される時刻に対応する特徴量の値をマーク623の近傍の領域625に表示させる。なお、マーク623が指定するデフォルト時刻は、たとえば実波形621の先頭の時刻である。
解析部59は、解析指示が入力されると、基準波形622の時間軸上の時刻を指定するマーク624を基準波形622に重ねて表示させる。解析部59は、マーク624で指定される時刻に対応する特徴量の値をマーク624の近傍の領域626に表示させる。なお、マーク624が指定するデフォルト時刻は、たとえば基準波形622の先頭の時刻である。
解析部59は、解析指示が入力されると、撮像装置21によって撮像された実画像を領域603に表示させる。解析部59は、マーク623で指定される時刻に対応する実画像を領域603に表示させる。
解析部59は、解析指示が入力されると、第1基準動画のフレームを領域604に表示させる。解析部59は、マーク624で指定される時刻に対応するフレームを領域604に表示させる。
解析部59は、解析指示が入力されると、撮像装置21によって撮像された複数の実画像のサムネイルを領域605に表示させる。複数の実画像のサムネイルは、マーク623で指定される時刻に対応する実画像のサムネイル627を必ず含む。解析部59は、サムネイル627を残りのサムネイルと異なる表示形式で表示させる。図12に示す例では、サムネイル627だけが太枠で囲まれている。
解析部59は、解析指示が入力されると、第1基準動画の複数のフレームのサムネイルを領域606に表示させる。複数のフレームのサムネイルは、マーク624で指定される時刻に対応するフレームのサムネイル628を必ず含む。解析部59は、サムネイル628を残りのサムネイルと異なる表示形式で表示させる。図11に示す例では、サムネイル628だけが太枠で囲まれている。
解析部59は、ボタン607〜612の操作を受け付ける。解析部59は、ボタン607〜612のいずれかが操作されると、以下のような処理を行なう。
(ボタン607が操作された場合)
ボタン607は、撮像装置21,22を切り替えるためのボタンである。解析部59は、ボタン607が操作されると、実動画記憶部57から読み出した第4テーブルに基づいて、撮像装置22によって撮像された実画像から抽出された特徴量の時間変化を示す第2実波形を実波形621として作成する。解析部59は、領域601に表示される実波形621を第2実波形に切り替える。さらに、解析部59は、基準動画記憶部51が記憶する第2テーブルに基づいて、第2基準動画の各フレームから抽出された特徴量の時間変化を示す第2基準波形を基準波形622として作成する。解析部59は、領域602に表示される基準波形622を第2基準波形に切り替える。
さらに、解析部59は、領域603に表示する実画像を撮像装置22によって撮像された実画像に切り替えるとともに、領域604に表示するフレームを第2基準動画のフレームに切り替える。
さらに、解析部59は、領域605に表示するサムネイルを撮像装置22によって撮像された実画像のサムネイルに切り替えるとともに、領域606に表示するサムネイルを第2基準動画のフレームのサムネイルに切り替える。
その後、解析部59は、ボタン607が操作されるたびに、領域601に表示させる実波形621を、第1実波形および第2実波形の一方から他方に切り替える。さらに、解析部59は、ボタン607が操作されるたびに、領域602に表示させる基準波形622を、第1基準波形および第2基準波形の一方から他方に切り替える。
解析部59は、第1実波形が領域601に表示されている場合、撮像装置21の実画像を領域603に表示させるとともに、撮像装置21の複数の実画像のサムネイルを領域605に表示させる。
解析部59は、第2実波形が領域601に表示されている場合、撮像装置22の実画像を領域603に表示させるとともに、撮像装置22の複数の実画像のサムネイルを領域605に表示させる。
解析部59は、第1基準波形が領域602に表示されている場合、第1基準動画のフレームを領域603に表示させるとともに、第1基準動画の複数のフレームのサムネイルを領域605に表示させる。
解析部59は、第2基準波形が領域602に表示されている場合、第2基準動画のフレームを領域603に表示させるとともに、第2基準動画の複数のフレームのサムネイルを領域605に表示させる。
なお、解析部59は、ボタン607の操作にかかわらず、マーク623,624の位置を変更しない。
(ボタン608が操作された場合)
ボタン608は、マーク623,624の位置を単位時間だけ移動させるためのボタンである。ボタン608が操作されることにより、解析部59は、マーク623,624で指定される時刻に応じて、領域625,626に表示される値をそれぞれ変更する。さらに、解析部59は、マーク623,624で指定される時刻に応じて、領域603に表示される実画像と領域604に表示されるフレームとをそれぞれ変更する。さらに、解析部59は、マーク623,624で指定される時刻に応じて、領域605,606において太枠で囲まれるサムネイルをそれぞれ変更する。
このように、解析部59は、マーク623の移動に応じて、領域603,605,625の表示内容を変更する。さらに、解析部59は、マーク624の移動に応じて、領域604,606,626の表示内容を変更する。以下の説明において、特筆しない限り、マーク623の移動に応じて領域603,605,625の表示内容が変更され、マーク624の移動に応じて領域604,606,626の表示内容が変更される。
(ボタン609が操作された場合)
ボタン609は、領域603に実動画(第1実動画または第2実動画)を再生させ、領域604に基準動画(第1基準動画または第2基準動画)を再生させるためのボタンである。ボタン609が操作されることにより、解析部59は、領域603において実動画を再生させるとともに、領域604において基準動画を再生させる。このとき、解析部59は、領域603に表示されている実画像に応じて、マーク623の位置も移動させる。解析部59は、領域604に表示されているフレームに応じて、マーク624の位置も移動させる。
(ボタン610が操作された場合)
ボタン610は、領域603に実動画(第1実動画または第2実動画)を逆再生させ、領域604に基準動画(第1基準動画または第2基準動画)を逆再生させるためのボタンである。ボタン609が操作されることにより、解析部59は、領域603において実動画を逆再生させるとともに、領域604において基準動画を逆再生させる。このとき、解析部59は、領域603に表示されている実画像に応じて、マーク623の位置も移動させる。解析部59は、領域604に表示されているフレームに応じて、マーク624の位置も移動させる。
(ボタン611が操作された場合)
ボタン611は、実波形621と基準波形622との時間軸を合わせるためのボタンである。解析部59は、ボタン611が操作されると、実波形621と基準波形622との時間軸が合うように、実波形621を補正する。これにより、実波形621と基準波形622との時間ずれが補正される。その結果、視覚サーボを用いたロボットの制御が正常に実行されている否かをより判定しやすくなる。
図13は、時間軸を合わせる前の実波形および基準波形と、時間軸を合わせた後の実波形および基準波形とを示す図である。図13の上方には、時間軸を合わせる前の実波形621および基準波形622が示され、図13の下方には、時間軸を合わせた後の実波形621および基準波形622が示される。
実波形621と基準波形622との時間軸を合わせる方法として、たとえば、パターンマッチングおよびDPマッチングがある。
パターンマッチングは、2つの波形の距離が最小となるように時間軸を合わせる方法である。具体的には、解析部59は、実波形621を時間軸方向に単位時間ずつ移動させて、実波形621と基準波形622との距離を算出する。解析部59は、当該距離が最小となる位置に実波形621を移動させる。距離は、たとえば、実波形621と基準波形622とにおける各時刻の特徴量の差の二乗和である。
DPマッチングは、動的計画法と呼ばれ、2つの波形が最もよく一致するように、2つの波形の少なくとも一方の時間軸を伸縮させる方法である。具体的には、解析部59は、実波形621の時間軸の伸縮率を単位量ずつ変化させて、実波形621と基準波形622との距離を算出する。解析部59は、当該距離が最小となる伸縮率で実波形621を伸縮させる。
解析部59は、ボタン611が操作されると、マーク623の位置とマーク624の位置とを一致させる。
解析部59は、ボタン611の操作に応じて実波形621を補正した後にボタン608〜610が操作された場合、補正後の実波形621に基づいた処理を行なう。
(ボタン612が操作された場合)
ボタン612は、特徴量を切り替えるためのボタンである。解析部59は、ボタン612が操作されるたびに、実波形621および基準波形622で示される特徴量を順次切り替える。もしくは、解析部59は、ボタン612が操作されると、複数種類の特徴量の一覧を表示し、選択指示を受けた1つの特徴量の実波形621および基準波形622を表示させてもよい。
複数種類の特徴量は、上述したように、半田ごて2a、半田フィーダ2b、電線2c、パッド2dおよび溶融半田2eの画像上の座標(画素座標)を含む。しかしながら、複数種類の特徴量には、画像から抽出される別の特徴量が含まれてもよい。
図14は、特徴量の一例を示す図である。図15は、特徴量の別の例を示す図である。図14に示す特徴量は、半田ごて2aにおける画像上の初期位置からの移動距離D1である。このように、複数種類の特徴量は、特定の対象物における画像上の初期位置からの移動距離を含んでもよい。
図15に示す特徴量は、溶融半田2eの画像上の面積Saである。このように、複数種類の特徴量は、画像上のブロブ(領域)の面積、フィレ径、周囲長などを含んでもよい。画像処理部53は、ラベリングなどの画像処理を行なうことにより、対象画像からブロブを抽出すればよい。
<C.動作例>
<C−1.変化情報の生成処理>
図16を参照して、変化情報生成部551による変化情報の生成処理の流れについて説明する。図16は、変化情報生成部による変化情報の生成処理の流れの一例を示すフローチャートである。なお、図16には、第1制御部55aの変化情報生成部551の処理の流れが示されている。第2制御部55b、第3制御部55cおよび第4制御部55dの変化情報生成部551も、図16と同様の方法に従って変化情報を生成すればよい。変化情報の生成処理は、事前準備として行なわれる。
まずステップS1において、制御装置50は、ハンド31aによって把持された半田ごて2aを初期位置に移動させる定型動作をロボット30aに行なわせる。これにより、半田ごて2aは、撮像装置21,22の視野内に移動される。
ステップS2において、変化情報生成部551は、第1基準動画および第2基準動画の教示範囲の先頭フレームと同じ画像が撮像装置21,22によってそれぞれ撮像されるように、ロボット30aを制御する。ステップS2のサブルーチンについては後述する。
ステップS3において、変化情報生成部551は、kを教示範囲の先頭フレームのフレーム番号にセットする。ステップS4において、変化情報生成部551は、6自由度のうちの1つを選択する。
ステップS5において、変化情報生成部551は、選択した自由度の正方向に単位制御量だけハンド31aを移動させるための制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS6において、変化情報生成部551は、ハンド31aが単位制御量だけ移動した後、撮像装置21,22から最新の実画像を取得する。
ステップS7において、変化情報生成部551は、ステップS6で取得した実画像から抽出された半田ごて2aの特徴点の座標を画像処理部53から取得する。
ステップS8において、変化情報生成部551は、第1基準動画および第2基準動画のk番目のフレームから抽出された半田ごて2aの特徴点の座標を画像処理部53から取得する。
ステップS9において、変化情報生成部551は、ステップS8で取得した座標と、ステップS7で取得した座標とに基づいて、k番目のフレームおよびステップS4で選択した自由度に対応する第1変化情報および第2変化情報を生成する。すなわち、変化情報生成部551は、撮像装置21による実画像から抽出された特徴点の座標を第1基準動画のk番目のフレームから抽出された特徴点の座標に変換するための写像を示す第1変化情報を生成する。さらに、変化情報生成部551は、撮像装置22による実画像から抽出された特徴点の座標を第2基準動画のk番目のフレームから抽出された特徴点の座標に変換するための写像を示す第2変化情報を生成する。
ステップS10において、変化情報生成部551は、ハンド31aを元の状態(直近のステップS5の前の状態)に戻すための制御指令を生成し、ロボットコントローラ40aに出力する。これにより、半田ごて2aは、ステップS5の前の状態に戻る。
ステップS11において、変化情報生成部551は、未選択の自由度があるか判定する。未選択の自由度がある場合(ステップS11でYES)、変化情報の生成処理は、ステップS4に戻る。その結果、ステップS4〜ステップS10が繰り返され、6自由度の各々について、第1変化情報および第2変化情報が生成される。
未選択の自由度がない場合(ステップS11でNO)、変化情報生成部551は、ステップS12において、kが教示範囲の最終フレームのフレーム番号であるか否かを判定する。
kが最終フレームのフレーム番号ではない場合(ステップS12でNO)、変化情報生成部551は、ステップS13において、第1基準動画および第2基準動画のk+1番目のフレームと同じ画像が撮像装置21,22によってそれぞれ撮像されるように、ロボット30aを制御する。
具体的には、変化情報生成部551は、上述した算出部553の処理内容と同様の方法により、k番目のフレーム上の半田ごて2aの状態をk+1番目のフレーム上の半田ごて2aの状態に近づけるための6自由度の制御量を算出する。すなわち、変化情報生成部551は、k番目のフレームから抽出された複数の特徴点の各々について、当該特徴点を起点とし、k+1番目のフレームから抽出された対応する特徴点を終点とする差分ベクトルを求める。変化情報生成部551は、特徴点ごとの差分ベクトルとk番目のフレームに対応する第1変化情報および第2変化情報とに基づいて、6自由度の制御量を算出する。変化情報生成部551は、算出した制御量を示す制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS14において、変化情報生成部551は、kに1だけ加算する。ステップS14の後、処理はステップS4に戻る。これにより、k+1番目のフレームについても、6自由度の各々の第1変化情報および第2変化情報が生成される。
kが最終フレームのフレーム番号である場合(ステップS12でYES)、全てのフレームについて第1変化情報セット5521および第2変化情報セット5522が生成されたため、変化情報の生成処理は終了する。
図17は、図16に示すステップS2のサブルーチンの処理の流れを示すフローチャートである。
まずステップS21において、変化情報生成部551は、第1基準動画および第2基準動画の教示範囲の先頭フレームから抽出された半田ごて2aの特徴点の座標を画像処理部53から取得する。
ステップS22において、変化情報生成部551は、撮像装置21,22から最新の実画像を取得する。
ステップS23において、変化情報生成部551は、ステップS22で取得した実画像から抽出された半田ごて2aの特徴点の座標を画像処理部53から取得する。
ステップS24において、変化情報生成部551は、ステップS22で取得した実画像上の半田ごて2aの状態と先頭フレーム上の半田ごて2aの状態との偏差が閾値Tha未満であるか否かを判定する。偏差は、たとえば、実画像および先頭フレームから抽出された半田ごて2aの対応する特徴点同士の距離の平均である。
偏差が閾値Tha未満である場合(ステップS24でYES)、変化情報生成部551は、先頭フレームと同じ画像が撮像装置21,22によってそれぞれ撮像されると判定し、処理を終了する。
偏差が閾値Tha以上である場合(ステップS24でNO)、ステップS25において、変化情報生成部551は、6自由度のうちの1つを選択する。ステップS26において、変化情報生成部551は、制御方向として正方向および負方向のいずれかを選択する。
ステップS27において、変化情報生成部551は、選択した自由度の選択した制御方向に単位制御量だけハンド31aを移動させるための制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS28において、変化情報生成部551は、ハンド31aが単位制御量だけ移動した後、撮像装置21,22から実画像を取得する。
ステップS29において、変化情報生成部551は、ステップS28で取得した実画像から抽出された半田ごて2aの特徴点の座標を画像処理部53から取得する。
ステップS30において、変化情報生成部551は、ステップS28で取得した実画像上の半田ごて2aの状態と先頭フレーム上の半田ごて2aの状態との偏差を算出する。
ステップS31において、変化情報生成部551は、ハンド31aを元の状態(直近のステップS27の前の状態)に戻すための制御指令を生成し、ロボットコントローラ40aに出力する。これにより、半田ごて2aは、ステップS27の前の状態に戻る。
ステップS32において、変化情報生成部551は、未選択の制御方向があるか判定する。未選択の制御方向がある場合(ステップS32でYES)、処理はステップS26に戻る。
未選択の制御方向がない場合(ステップS32でNO)、ステップS33において、変化情報生成部551は、未選択の自由度があるか判定する。未選択の自由度がある場合(ステップS33でYES)、処理はステップS25に戻る。
未選択の自由度がない場合(ステップS33でNO)、ステップS34において、変化情報生成部551は、最小偏差に対応する自由度および制御方向に単位制御量だけハンド31aを移動するように、ロボットコントローラ40aを介してロボット30aを制御する。ステップS34の後、処理はステップS22に戻る。
<C−2.ロボットの制御>
図18を参照して、視覚サーボを用いた半田付け制御の処理の流れについて説明する。図18は、視覚サーボを用いた半田付け制御の処理の流れの一例を示すフローチャートである。
まずステップS41において、制御装置50は、全ての制御部(第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55d)の終了判定部555から終了通知が出力されているか否かを判定する。全ての制御部の終了判定部555から終了通知が出力されている場合(ステップS41でYES)、処理を終了する。
全ての制御部の終了判定部555から終了通知が出力されていない場合(ステップS41でNO)、ステップS42において、制御装置50は、撮像装置21,22によって撮像された実画像を取得する。ステップS42は撮像周期ごとに行なわれる。
ステップS43において、画像処理部53は、テンプレートマッチングにより、実画像および目標フレームから全ての対象物(半田ごて2a、半田フィーダ2b、電線2c、パッド2dおよび溶融半田2e)を検出し、各対象物の特徴点の画像上の座標を抽出する。
ステップS44において、目標フレーム選択部54は、第1基準動画および第2基準動画から目標フレームを選択する。
ステップS45において、目標フレーム選択部54は、目標フレームを教示範囲内に含む対象物を特定する。目標フレーム選択部54は、特定した対象物を制御する制御部(第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55dの少なくとも1つ)に対して制御指示を出力する。
ステップS46において、制御指示を受けた制御部は、対象ロボットの制御を行う。ステップS46の後、処理はステップS41に戻る。ステップS4でNOである場合、ステップS42〜S46の一連処理が撮像周期毎に繰り返される。また、このとき、ステップS41でNOである場合、ステップS46による対象ロボットの制御を行っている間に、次の実画像を取得するステップS42を開始してもよい。これにより、対象ロボットの動作を停止させることなく、最新の実画像に応じて対象ロボットが制御され続ける。その結果、対象物の状態を速く変化させることができる。
<C−3.目標フレームの選択>
図19および図20を参照して、目標フレーム選択部54による目標フレームの選択処理の流れについて説明する。図19は、図18に示すステップS44のサブルーチンの処理の流れを示すフローチャートである。図20は、最近接フレームと目標フレームとの関係を示す図である。
まずステップS51において、目標フレーム選択部54は、第1基準動画および第2基準動画の各フレームから抽出された全ての対象物の特徴点の座標を画像処理部53から取得する。
ステップS52において、目標フレーム選択部54は、撮像装置21,22によって撮像された実画像から抽出された全ての対象物の特徴点の座標を画像処理部53から取得する。
ステップS53において、目標フレーム選択部54は、1回目の目標フレームの選択が完了しているか否かを判定する。
1回目の目標フレームの選択が完了している場合(ステップS53でYES)、ステップS54において、目標フレーム選択部54は、前回の目標フレームがいずれかの対象物に対応する教示範囲の最終フレームであるか否かを判定する。
前回の目標フレームが最終フレームである場合(ステップS54でYES)、処理はステップS55に移る。ステップS55において、目標フレーム選択部54は、当該最終フレームが属する教示範囲に対応する対象物について、実画像上の状態と最終フレーム上の状態との偏差を算出し、偏差が閾値未満であるか否かを判定する。偏差は、たとえば、実画像および最終フレームにおける対象物の対応する特徴点同士の距離の平均である。
偏差が閾値以上である場合(ステップS55でNO)、ステップS56において、目標フレーム選択部54は、前回の目標フレームと同じフレームを目標フレームとして選択する。ステップS56の後、処理は終了する。
偏差が閾値未満である場合(ステップS55でYES)、対象物の状態が最終フレーム上の状態に到達したと判定され、処理はステップS57に移る。1回目の目標フレームの選択が完了していない場合(ステップS53でNO)、および前回の目標フレームが最終フレームでない場合(ステップS54でNO)も、処理はステップS57に移る。
ステップS57において、目標フレーム選択部54は、実画像上の全ての対象物の状態と各フレーム上の全ての対象物の状態との偏差を算出し、最小偏差のフレームを最近接フレームとして特定する。偏差は、たとえば、実画像および各フレームにおける対象物の対応する特徴点同士の距離の平均である。
具体的には、目標フレーム選択部54は、撮像装置21によって撮像された実画像上の全ての対象物の状態と第1基準動画のk番目のフレーム上の全ての対象物の状態との第1偏差を算出する。さらに、目標フレーム選択部54は、撮像装置22によって撮像された実画像上の全ての対象物の状態と第2基準動画のk番目のフレーム上の全ての対象物の状態との第2偏差を算出する。目標フレーム選択部54は、第1偏差と第2偏差との平均をk番目のフレームに対応する偏差として算出する。
ステップS58において、目標フレーム選択部54は、最近接フレームから所定数だけ後のフレームまでに、いずれかの教示範囲の最終フレームがあるか否かを判定する。
最終フレームがある場合(ステップS58でYES)、ステップS59において、目標フレーム選択部54は、当該最終フレームを目標フレームとして選択する。なお、最近接フレームから所定数だけ後のフレームまでに複数の最終フレームがある場合、目標フレーム選択部54は、当該複数の最終フレームのうち最もフレーム番号の小さい最終フレームを選択する。
最終フレームがない場合(ステップS58でNO)、ステップS60において、目標フレーム選択部54は、最近接フレームから所定数だけ後のフレームを目標フレームとして選択する。ステップS60の後、目標フレームの選択処理は終了する。
<C−4.制御部の処理>
図21を参照して、図18のステップS46のサブルーチンの処理について説明する。図21は、図18に示すステップS46のサブルーチンの処理の流れを示すフローチャートである。
まずステップS61において、終了判定部555は、目標フレームが教示範囲の最終フレームであるか否かを判定する。
目標フレームが最終フレームである場合(ステップS61でYES)、ステップS62において、終了判定部555は、実画像上の対象物の状態と最終フレーム上の対象物の状態との偏差が閾値未満か否かを判定する。
偏差が閾値未満である場合(ステップS62でYES)、ステップS63において、終了判定部555は、終了通知を出力する。ステップS63の後、処理は終了する。
目標フレームが最終フレームではない場合(ステップS61でNO)、および、偏差が閾値以上である場合(ステップS62でNO)、処理はステップS64に移る。
ステップS64において、算出部553は、目標フレームに対応する第1変化情報セット5521および第2変化情報セット5522に基づいて、実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量を算出する。
ステップS65において、指令部554は、算出された制御量を示す制御指令を生成し、対象ロボットコントローラに出力する。ステップS65の後、処理は終了する。
<C−5.解析処理>
図22を参照して、解析部59の処理について説明する。図22は、解析部の処理の流れを示すフローチャートである。
まずステップS71において、解析部59は、入力装置534(図3参照)に解析指示が入力されたか否かを判定する。作業者は、あるパッド2dに対する半田付け制御の解析画面を確認したい場合、当該パッド2dを識別するパッド識別番号と解析指示とを入力装置534に入力する。
解析指示が入力されていない場合(ステップS71でNO)、処理はステップS71に戻る。
解析指示が入力された場合(ステップS71でYES)、ステップS72において、解析部59は、第1基準動画、第2基準動画、第1テーブルおよび第2テーブルを基準動画記憶部51から読み出す。さらに、解析部59は、入力されたパッド識別情報に対応する第1実動画、第2実動画、第3テーブルおよび第4テーブルを実動画記憶部57から読み出す。
ステップS73において、解析部59は、ステップS72で読み出した情報に基づいて、図12に示されるような解析画面62を表示装置60に表示させる。
ステップS74において、解析部59は、終了指示が入力されたか否かを判定する。終了指示が入力されていない場合(ステップS74でNO)、ステップS75において、解析部59は、ボタン607〜612のいずれかが操作されたか否かを判定する。
ボタン607〜612のいずれかが操作された場合(ステップS75でYES)、ステップS76において、解析部59は、操作されたボタンに応じて画面を遷移させる。ステップS76の後、処理はステップS74に戻る。いずれかのボタンも操作されない場合(ステップS75でNO)も、処理はステップS74に戻る。
終了指示が入力された場合(ステップS74でYES)、解析部59は、解析画面62の表示を終了する。
<C−6.作用・効果>
以上のように、制御システム1は、対象物の状態を変化させるためのロボット30a〜30dと、対象物を撮像するための撮像装置21,22と、第1制御部55a〜第4制御部55dと、解析部59とを備える。第1制御部55a〜第4制御部55dは、撮像装置21,22によって撮像される実画像上の対象物の状態の変化が、予め作成された第1,第2基準動画上の対象物の状態の変化にそれぞれ近づくように、対象ロボットを制御する。解析部59は、実画像から抽出される特徴量の時間変化を示す実波形621と、基準動画のフレームから抽出される特徴量の時間変化を示す基準波形622との両方を表示装置60の解析画面62上に表示させる。
視覚サーボを用いたロボット30a〜30dの制御が正常に実行されている場合、撮像装置21,22によって撮像される実画像上の対象物の状態の変化は、第1,第2基準動画上の対象物の状態の変化にそれぞれ追従する。そのため、実波形621は、基準波形622に近似する。したがって、作業者は、解析画面62に表示される実波形621と基準波形622とを確認することにより、視覚サーボを用いたロボット30a〜30dの制御が正常に実行されている否かを判定しやすくなる。たとえば、作業者は、実波形621と基準波形622との偏差が大きい場合に、視覚サーボを用いたロボット30a〜30dの制御に何等かの異常が生じていると判定できる。
<D.変形例>
<D−1.変形例1>
図23は、変形例1における解析画面の一例を示す図である。図23に示す例の解析画面63は、図12に示す解析画面62と比較して、ボタン613と、ロボットの基準位置からの移動量の時間変化を示す波形629,630とを含む点で異なる。波形629は、実画像を撮像したときの移動量の時間変化を示す。波形630は、基準動画通りに対象物の状態が変化するときの移動量の時間変化を示す。
図23に示されるような解析画面63を表示するために、基準動画記憶部51は、図24に示す第5テーブルをさらに記憶する。実動画記憶部57は、図25に示す第6テーブルをさらに記憶する。
図24は、変形例1に係る基準動画記憶部が記憶する第5テーブルの一例を示す図である。図25は、変形例1に係る実動画記憶部が記憶する第6テーブルの一例を示す図である。
図24に示されるように、基準動画記憶部51は、第1基準動画および第2基準動画の全てのフレーム(1〜M番目のフレーム)の時刻と、ロボット30a〜30dごとの移動量情報とを対応付けた第5テーブルを記憶する。移動量情報は、複数の自由度の各々について、基準位置姿勢からの移動量を示す。たとえば、ロボット30aの場合、移動量情報は、X方向、Y方向およびZ方向の並進移動量と、ピッチ方向、ヨー方向およびロール方向の並進移動量とを示す。
基準動画記憶部51が記憶する移動量情報は、変化情報生成部551が第1変化情報および第2変化情報を生成する際に作成される。上述したように、変化情報生成部551は、第1基準動画および第2基準動画の1〜M番目のフレームごとに、当該フレームと同じ実画像が得られるように対象ロボットを制御する。変化情報生成部551は、対象ロボットの制御量に基づいて、第1基準動画および第2基準動画の1〜M番目のフレームごとに移動量情報を生成する。
もしくは、ロボット30a〜30dによって対象物のサンプルの状態を変化させることにより第1基準動画および第2基準動画が作成される場合には、第1基準動画および第2基準動画を作成するときの各ロボットの動作から移動量情報が生成されてもよい。
図25に示されるように、実動画記憶部57は、撮像装置21,22の撮像時刻と、ロボット30a〜30dごとの移動量情報とを対応付けた第6テーブルを記憶する。実動画記憶部57が記憶する移動量情報は、第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55dによって生成される。
第1制御部55a、第2制御部55b、第3制御部55cおよび第4制御部55dの各制御部は、対象ロボットに設けられる複数のエンコーダからのパルス信号を受ける。各制御部は、パルス信号に含まれるパルス数をカウントすることにより、移動量情報を生成する。
ボタン613は、波形629,630で示される移動量を切り替えるためのボタンである。解析部59は、図23に示すボタン613が操作されると、ロボットおよび自由度の選択指示の入力を促すポップアップ画面を表示させる。そして、解析部59は、入力された選択指示に従ってロボットおよび自由度を選択する。
解析部59は、実動画記憶部57が記憶する第5テーブルから、選択されたロボットおよび自由度の移動量を読み出し、当該移動量の時間変化を示す波形629を生成する。すなわち、波形629で示される移動量は、選択された自由度の方向に沿って選択されたロボットが基準位置から移動した量である。解析部59は、生成した波形629を領域601に表示させるとともに、マーク623で指定される時刻の移動量を領域631に表示させる。領域631は、マーク623と波形629との交差点の近傍である。
さらに、解析部59は、基準動画記憶部51が記憶する第1テーブルから、選択されたロボットおよび自由度の移動量を読み出し、当該移動量の時間変化を示す波形630を生成する。解析部59は、生成した波形630を領域602に表示させるとともに、マーク624で指定される時刻の移動量を領域632に表示させる。領域632は、マーク624と波形630との交差点の近傍である。
変形例1によれば、作業者は、波形629と波形630との偏差を確認することにより、ロボットの異常の有無を判定できる。その結果、作業者は、実波形621と基準波形622との偏差が大きい原因を把握しやすくなる。
<D−2.変形例2>
図26は、変形例2に係る解析画面の一例を示す図である。解析部59は、ボタン611が操作されると、時間軸上の時刻ごとに、実波形621と基準波形622との特徴量の差異を示すパラメータ値を算出する。解析部59は、図26に示されるように、算出したパラメータ値の変化を示す波形633を解析画面64に表示させる。さらに、解析部59は、マーク623で指定される時刻におけるパラメータ値を領域625に表示させる。パラメータ値は、たとえば、実波形621と基準波形622との特徴量の差または比である。
変形例2によれば、作業者は、波形633または領域625のパラメータ値を確認することにより、半田付け制御中のいずれの時間帯で、実波形621と基準波形622との偏差が大きくなっているかを容易に把握することができる。なお、解析部59は、波形633と領域625のパラメータ値とのいずれか一方のみを表示させてもよい。
さらに、図26に示されるように、解析画面64は、ボタン614を含んでもよい。ボタン614は、実波形621と基準波形622との偏差が大きい時刻をサーチするためのボタンである。
解析部59は、ボタン614が操作されると、パラメータ値が最大となる時刻を指定時刻として選択する。そして、解析部59は、マーク623,624を指定時刻の位置まで移動させる。その結果、領域603には指定時刻に対応する実画像が表示され、領域604には指定時刻に対応するフレームが表示される。
これにより、作業者は、実波形621と基準波形622との特徴量の差異が大きいときの画像を確認することができ、ロボットの異常の原因を把握しやすくなる。
なお、解析部59は、パラメータ値が閾値を超える時刻を指定時刻として選択してもよい。パラメータ値が閾値を超える時刻が複数存在する場合、解析部59は、当該複数の時刻のうちの1つを指定時刻として選択する。
ボタン609が操作されると、解析部59は、実動画(第1実動画または第2実動画)のうち指定時刻を含む一部の期間の映像を領域603で再生させ、基準動画(第1基準動画または第2基準動画)のうち当該期間の映像を領域604で再生させてもよい。これにより、作業者は、半田付け制御の異常の原因をさらに把握しやすくなる。
変形例2は、上記の変形例1にも適用できる。すなわち、解析部59は、時間軸上の時刻ごとに、波形629と波形630との移動量の差異を示すパラメータ値を算出してもよい。解析部59は、当該パラメータ値および当該パラメータ値の時間変化を示す波形の少なくとも一方を解析画面63に表示させる。もしくは、解析部59は、パラメータ値が最大となる時刻を指定時刻として選択してもよい。
<D−3.変形例3>
図27は、変形例3に係る解析画面の一例を示す図である。図27に示されるように、解析画面65は、移動方向が示される対象物を選択するためのボタン615と、選択された対象物の移動方向を示す矢印634とを含む。
矢印634を表示するために、実動画記憶部57は、第1実動画を構成する実画像と各対象物の画像上の移動方向とを対応付けた第7テーブルと、第2実動画を構成する実画像と各対象物の画像上の移動方向とを対応付けた第8テーブルとを記憶する。
図28は、変形例3に係る実動画記憶部が記憶する第7テーブルの一例を示す図である。図28に示す例の第7テーブルでは、実画像を識別する画像ファイル名と、各対象物の移動方向を示す移動方向情報とが対応付けられている。第8テーブルも図28に示す第7テーブルと同様のデータ構造を有する。
上述したように、算出部553は、撮像装置21から実画像を取得するたびに、第1差分ベクトル6a〜6g(図11参照)を算出する。算出部553は、第1差分ベクトルが小さくなるように、対象ロボットの制御量を算出する。したがって、対象物は、実画像上において、第1差分ベクトルの平均の方向に移動することになる。そのため、算出部553は、第1差分ベクトルの平均の方向を示す情報を移動方向情報として生成する。実動画記憶部57は、算出部553によって生成された移動方向情報を含む第7,第8テーブルを記憶する。
解析部59は、ボタン615が操作されると、対象物の選択指示を促すポップアップ画面を表示させる。解析部59は、選択された対象物とマーク623で指定される時刻の実画像とに対応する移動方向情報を実動画記憶部57から読み出す。なお、解析部59は、実波形621が撮像装置21によって撮像された実画像から抽出された特徴量を示している場合、第7テーブルから移動方向情報を読み出す。解析部59は、実波形621が撮像装置22によって撮像された実画像から抽出された特徴量を示している場合、第8テーブルから移動方向情報を読み出す。
解析部59は、読み出した移動方向情報に基づいて、対象物の移動方向を示す矢印634を生成し、生成した矢印634を領域603に表示させる。これにより、作業者は、対象物の移動方向を把握しやすくなる。
なお、解析部59は、ボタン615が操作されるたびに、移動方向が示される対象物を順次切り替えてもよい。
<D−4.変形例4>
上記の説明では、制御システム1は、半田付け制御を行なう。しかしながら、制御システム1は、別の対象物に対する制御を行なってもよい。
図29は、変形例4に係る制御システムの対象物を示す模式図である。変形例4に係る制御システム1は、工業製品の生産ラインなどにおいて、オスコネクタ7aをメスコネクタ7bに挿入することにより、オスコネクタ7aとメスコネクタ7bとを接続させる。
オスコネクタ7aは、ロボット30aのハンド31aによって把持される。メスコネクタ7bは、ロボット30dのステージ31d上に載置される。
なお、ロボット30a〜30dは、たとえば風船のような膨張および収縮する対象物の状態(ここではサイズ)を変化させてもよい。この場合、制御装置50は、ロボットを単位制御量だけ制御したときの対象物の大きさの変化を示す変化情報を取得する。そして、制御装置は、変化情報に基づいて、実画像上の対象物の大きさが目標フレーム上の対象物の大きさに近づくように、ロボットを制御する。
もしくは、ロボット30a〜30dは、対象物に力を加えて、対象物の状態(ここではサイズ)を変化させてもよい。
<D−5.その他の変形例>
画像処理部53は、対象物の3D−CADデータを用いて、対象画像から対象物を検出してもよい。
第1基準動画および第2基準動画は、CG(Computer Graphics)によって作成されてもよい。
上記の説明では、制御装置50がロボット制御部58および解析部59を備えるものとした。すなわち、制御装置50は、ロボット制御装置として動作するとともに、解析装置としても動作する。しかしながら、解析部59は、制御装置50と通信可能に接続された解析装置に備えられていてもよい。
≪付記≫
以上のように、実施の形態1〜3および変形例は以下のような開示を含む。
(構成1)
対象物(2a〜2d,7a,7b)の状態を変化させるためのロボット(30a〜30d)と、
前記対象物を撮像するための撮像装置(21,22)と、
前記撮像装置(21,22)によって撮像される実画像上の前記対象物の状態の変化が、予め作成された基準動画上の前記対象物の状態の変化に近づくように、前記ロボット(30a〜30d)を制御するための制御部(58)と、
前記実画像から抽出される特徴量の時間変化を示す第1波形と、前記基準動画のフレームから抽出される前記特徴量の時間変化を示す第2波形との両方を表示装置(60)の画面上に表示させるための解析部(59)とを備える、制御システム(1)。
(構成2)
前記解析部(59)は、前記第1波形と前記第2波形との時間軸を合わせる、構成1に記載の制御システム(1)。
(構成3)
前記解析部(59)は、前記時間軸上の時刻ごとに、前記第1波形と前記第2波形との前記特徴量の差異を示すパラメータ値を算出し、前記パラメータ値および前記パラメータ値の時間変化を示す第3波形の少なくとも一方を前記画面上に表示させる、構成2に記載の制御システム(1)。
(構成4)
前記解析部(59)は、
前記時間軸上の時刻ごとに、前記第1波形と前記第2波形との前記特徴量の差異を示すパラメータ値を算出し、
算出したパラメータ値に基づいて、前記パラメータ値が最大となる時刻、または、前記パラメータ値が閾値を超える時刻を指定時刻として選択し、
前記指定時刻に対応する前記実画像と、前記基準動画における前記指定時刻のフレームとを前記画面上に同時に表示させる、構成2に記載の制御システム(1)。
(構成5)
前記解析部(59)は、
前記時間軸上の指定時刻を受け付け、
前記指定時刻に対応する前記実画像と、前記基準動画における前記指定時刻のフレームとを前記画面上に同時に表示させる、構成2に記載の制御システム(1)。
(構成6)
前記解析部(59)は、時系列に並べられた前記実画像からなる実動画および前記基準動画の両方における、前記指定時刻を含む一部の期間の映像を前記画面上で同時に再生させる、構成4または5に記載の制御システム(1)。
(構成7)
前記解析部(59)は、前記実画像を撮像したときの、前記ロボットの基準位置からの移動量の時間変化を示す第4波形と、前記基準動画通りに前記対象物の状態が変化するときの前記移動量の時間変化を示す第5波形との両方を前記画面上に表示させる、構成1から6のいずれかに記載の制御システム(1)。
(構成8)
前記ロボット(30a〜30d)は、複数の自由度で前記対象物の状態を変化させ、
前記解析部(59)は、前記複数の自由度のうちの1つの自由度の選択指示を受け付け、
前記移動量は、前記1つの自由度の方向に沿って前記ロボット(30a〜30d)が前記基準位置から移動した量である、構成7に記載の制御システム(1)。
(構成9)
構成1から8のいずれか1項に記載の制御システム(1)に用いられる解析装置であって、
前記解析部(59)を備える、解析装置(50)。
(構成10)
対象物(2a〜2d,7a,7b)を撮像するための撮像装置(21,22)を用いて、前記対象物の状態を変化させるロボット(30a〜30d)を制御する制御方法であって、
前記撮像装置(21,22)によって撮像される実画像上の前記対象物の状態の変化が、予め作成された基準動画上の前記対象物の状態の変化に近づくように、前記ロボット(30a〜30d)を制御するステップと、
前記実画像のフレームから抽出される特徴量の時間変化を示す第1波形と、前記基準動画のフレームから抽出される前記特徴量の時間変化を示す第2波形との両方を表示装置(60)の画面上に表示させるステップとを備える、制御方法。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。