以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
≪実施の形態1≫
<A1.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態1に係る制御システムの概要を示す模式図である。
本実施の形態に係る制御システム1は、たとえば、工業製品の生産ラインなどにおいて、オスコネクタ2aをメスコネクタ2bに挿入することにより、オスコネクタ2aとメスコネクタ2bとを接続させる。
図1に示すように、制御システム1は、撮像装置21,22と、ロボット30a,30bと、ロボットコントローラ40a,40bと、制御装置50とを備える。
撮像装置21,22は、撮像視野に存在する被写体を撮像して画像データ(以下、単に「画像」という)を生成する。撮像装置21,22は、ロボット30a,30bと異なる定位置に設定される。撮像装置21,22は、互いに異なる場所に設置され、互いに異なる方向から、被写体としてのオスコネクタ2aおよびメスコネクタ2bを撮像する。撮像装置21,22は、予め定められた撮像周期に従って撮像し、撮像によって得られた実画像を制御装置50に出力する。
ロボット30aは、オスコネクタ2aの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30aは、先端にオスコネクタ2aを支持(ここでは把持)するためのハンド31aを有し、ハンド31aの位置および姿勢を6自由度で変化させる。言い換えると、ロボット30aは、ハンド31aに把持されたオスコネクタ2aの位置および姿勢を6自由度で変化させる。当該6自由度は、X方向、Y方向およびZ方向の並進自由度と、ピッチ方向、ヨー方向およびロール方向の回転自由度とを含む。ただし、ハンド31aの自由度の個数は6個に限定されず、3~5個または7個以上であってもよい。
ロボット30aは、複数のサーボモータを有しており、当該サーボモータが駆動されることにより、オスコネクタ2aの位置および姿勢を変化させる。当該複数のサーボモータの各々に対応してエンコーダが設けられており、サーボモータの位置が計測される。
ロボット30bは、メスコネクタ2bの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえばXYθステージである。ロボット30bは、メスコネクタ2bを支持する(ここでは載せる)ためのステージ31bを有し、ステージ31bの位置および姿勢を3自由度で変化させる。すなわち、ロボット30bは、ステージ31bに載置されたメスコネクタ2bの位置および姿勢を3自由度で変化させる。当該3自由度は、X方向およびY方向の並進自由度と、XY平面に直交する軸を中心とする回転方向(θ方向)の回転自由度とを含む。ただし、ロボット30bの自由度の個数は3個に限定されず、4個以上であってもよい。
ロボット30bは、複数のサーボモータを有しており、当該サーボモータが駆動されることにより、メスコネクタ2bの位置および姿勢を変化させる。当該複数のサーボモータの各々に対応してエンコーダが設けられており、サーボモータの位置が計測される。
ロボットコントローラ40aは、制御装置50から受けた制御指令に従って、ロボット30aの動作制御を行なう。ロボットコントローラ40aは、X方向、Y方向およびZ方向の並進自由度ならびにピッチ方向、ヨー方向およびロール方向の回転自由度の各々の制御指令を制御装置50から受ける。これらX方向、Y方向、Z方向、ピッチ方向、ヨー方向およびロール方向は、ロボット30aの座標系で示される。ロボットコントローラ40aは、ハンド31aのX方向、Y方向およびZ方向の並進移動量がX方向、Y方向およびZ方向の並進自由度の制御指令にそれぞれ近づくように、ロボット30aに対してフィードバック制御を行なう。ロボットコントローラ40aは、ハンド31aのピッチ方向、ヨー方向およびロール方向の回転移動量がピッチ方向、ヨー方向およびロール方向の回転自由度の制御指令にそれぞれ近づくように、ロボット30aに対してフィードバック制御を行なう。
ロボットコントローラ40bは、制御装置50から受けた制御指令に従って、ロボット30bの動作制御を行なう。ロボットコントローラ40bは、X方向およびY方向の並進自由度ならびに回転自由度の各々の制御指令を制御装置50から受ける。これらX方向、Y方向および回転方向は、ロボット30bの座標系で示される。ロボットコントローラ40bは、ステージ31bのX方向およびY方向の並進移動量がX方向およびY方向の並進自由度の制御指令にそれぞれ近づくように、ロボット30bに対してフィードバック制御を行なう。ロボットコントローラ40bは、ステージ31bの回転移動量が回転自由度の制御指令に近づくように、ロボット30bに対してフィードバック制御を行なう。
制御装置50は、ロボットコントローラ40a,40bを介して、ロボット30a,30bをそれぞれ制御する。
制御装置50は、オスコネクタ2aおよびメスコネクタ2bの見本を示す、第1基準動画および第2基準動画を記憶している。第1基準動画は、撮像装置21の位置から見たときの動画である。第2基準動画は、撮像装置22の位置から見たときの動画である。
第1基準動画および第2基準動画の各々は、時系列に並んだ複数(以下、M枚(Mは、2以上の整数)とする)のフレームを含む。第1基準動画のk番目(kは1~Mのいずれかの整数)のフレームと第2基準動画のk番目のフレームとは、ある状態のオスコネクタ2aおよびメスコネクタ2bを同時に異なる方向から見たときの画像である。
制御装置50は、ロボット30aの制御量と、撮像装置21,22の実画像上のオスコネクタ2aの状態の変化量との関係を示す変化情報を取得する。さらに、制御装置50は、ロボット30bの制御量と、撮像装置21,22の実画像上のメスコネクタ2bの状態の変化量との関係を示す変化情報を取得する。
制御装置50は、以下に示す第1~第3処理を行なう。制御装置50は、第1~第3処理を含む一連処理を繰り返し実行する。第1処理は、撮像装置21,22によって撮像された実画像を取得する処理である。
第2処理は、第1基準動画および第2基準動画の各々から目標フレームを選択する処理である。制御装置50は、第1基準動画からk番目のフレームを目標フレームとして選択する場合、第2基準動画からもk番目のフレームを目標フレームとして選択する。
第3処理は、実画像と目標フレームとに基づいてロボット30a,30bの各々を制御する処理である。制御装置50は、ロボット30aに対応する変化情報に基づいて、実画像上のオスコネクタ2aの状態を目標フレーム上のオスコネクタ2aの状態に近づけるためのロボット30aの制御量を算出し、算出した制御量に従ってロボット30aを制御する。制御装置50は、ロボット30aの制御量を示す制御指令を生成し、生成した制御指令をロボットコントローラ40aに出力する。さらに、制御装置50は、ロボット30bに対応する変化情報に基づいて、実画像上のメスコネクタ2bの状態を目標フレーム上のメスコネクタ2bの状態に近づけるためのロボット30bの制御量を算出し、算出した制御量に従ってロボット30bを制御する。制御装置50は、ロボット30bの制御量を示す制御指令を生成し、生成した制御指令をロボットコントローラ40bに出力する。
図2は、撮像装置21によって撮像された実画像と第1基準動画との一例を示す図である。図3は、撮像装置22によって撮像された実画像と第2基準動画との一例を示す図である。図2には、撮像装置21によって撮像された実画像90a~93aと、第1基準動画のフレーム70a~73aとが示されている。図3には、撮像装置22によって撮像された実画像90b~93bと、第2基準動画のフレーム70b~73bとが示されている。
実画像90a,90bは、同時刻に撮像された画像である。実画像91a,91bは、実画像90a,90bより後の同時刻に撮像された画像である。実画像92a,92bは、実画像91a,91bより後の同時刻に撮像された画像である。実画像93a,93bは、実画像92a,92bより後の同時刻に撮像された画像である。
フレーム70a,70bの各々は、対応する基準動画における1番目のフレームである。フレーム71a,71bの各々は、対応する基準動画におけるs番目(sは2以上の整数)のフレームである。フレーム72a,72bの各々は、対応する基準動画におけるt番目(tはsより大きい整数)のフレームである。フレーム73a,73bの各々は、対応する基準動画におけるu番目(uはtより大きい整数)のフレームである。
第1基準動画および第2基準動画は、ステージ31b上に載置されたメスコネクタ2bが所望の状態に移動した後、ハンド31aによって把持されたオスコネクタ2aがメスコネクタ2bの上方から下向きに移動し、メスコネクタ2bと接続する様子を示している。
制御装置50は、ステージ31b上に載置されたメスコネクタ2bと、ハンド31aによって把持されたオスコネクタ2aとを含む実画像90a,90bを撮像装置21,22からそれぞれ取得する。
制御装置50は、第1基準動画および第2基準動画から、メスコネクタ2bが所望の位置および姿勢に移動したときのフレーム71a,71bを目標フレームとしてそれぞれ選択する。
制御装置50は、メスコネクタ2bに対応する変化情報に基づいて、実画像90a,90b上のメスコネクタ2bの状態をフレーム71a,71b上のメスコネクタ2bの状態へそれぞれ近づけるためのステージ31bの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40bに出力する。ロボットコントローラ40bは、制御指令に従ってロボット30bを制御する。これにより、実画像91a,91bに示されるように、メスコネクタ2bの位置および姿勢は、所望の位置および姿勢(フレーム71a,71bで示される位置および姿勢)に変化する。
さらに、ロボット30bの制御と並行して、制御装置50は、実画像90a,90b上のオスコネクタ2aの状態からフレーム71a,71b上のオスコネクタ2aの状態に近づけるためのハンド31aの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40aに出力する。ロボットコントローラ40aは、制御指令に従ってロボット30aを制御する。これにより、実画像91a,91bに示されるように、オスコネクタ2aの状態は、メスコネクタ2bの上方の位置および姿勢(フレーム71a,71bで示される位置および姿勢)に変化する。
次に、制御装置50は、オスコネクタ2aがメスコネクタ2bの直上の位置まで移動したときのフレーム72a,72bを目標フレームとして選択する。
制御装置50は、オスコネクタ2aに対応する変化情報に基づいて、実画像91a,91b上のオスコネクタ2aの状態をフレーム72a,72b上のオスコネクタ2aの状態にそれぞれ近づけるためのハンド31aの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40aに出力する。ロボットコントローラ40aは、制御指令に従ってロボット30aを制御する。これにより、実画像92a,92bに示されるように、オスコネクタ2aの位置および姿勢は、メスコネクタ2bの直上の位置および姿勢(フレーム72a,72bで示される位置および姿勢)に変化する。
次に、制御装置50は、オスコネクタ2aとメスコネクタ2bとの接続が完了したときのフレーム73a,73bを目標フレームとして選択する。
制御装置50は、オスコネクタ2aに対応する変化情報に基づいて、実画像92a,92b上のオスコネクタ2aの状態をフレーム73a,73b上のオスコネクタ2aの状態に近づけるためのハンド31aの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40aに出力する。ロボットコントローラ40aは、制御指令に従ってロボット30aを制御する。これにより、実画像93a,93bに示されるように、オスコネクタ2aは、メスコネクタ2bに接続完了した位置および姿勢(フレーム73a,73bで示される位置および姿勢)まで移動する。
このように、制御装置50は、オスコネクタ2aおよびメスコネクタ2bを実画像上の状態から目標フレーム上の状態へそれぞれ変化させることができる。これにより、オスコネクタ2aおよびメスコネクタ2bの状態は、第1基準動画および第2基準動画に従って連係して変化する。
制御装置50は、撮像装置21,22とロボット30a,30bとの座標系をそれぞれ対応付けるキャリブレーションデータを用いることなく、ロボット30a,30bを制御できる。そのため、作業者は、キャリブレーションを予め行なう必要がない。さらに、作業者は、オスコネクタ2aの状態を所望の状態に変化させるためのロボット30aの動作プログラムと、メスコネクタ2bの状態を所望の状態に変化させるためのロボット30bの動作プログラムとを予め設計する必要がない。そのため、ロボット30a,30bによってオスコネクタ2aおよびメスコネクタ2bの状態を所望の状態にそれぞれ変化させるために必要な手間を低減できる。
キャリブレーションデータがある場合、撮像装置21,22によって撮像された画像からオスコネクタ2aおよびメスコネクタ2bの実空間上の位置および姿勢を特定し、当該位置および姿勢に基づいてロボット30a,30bを制御する方法が考えられる。しかしながら、ロボット30a,30bの経年劣化に応じてキャリブレーションデータの精度が低下して、オスコネクタ2aおよびメスコネクタ2bとをうまく接続できない可能性がある。さらに、オスコネクタ2aおよびメスコネクタ2bの位置ずれや個体差に起因して、オスコネクタ2aおよびメスコネクタ2bとをうまく接続できない可能性がある。このような場合であっても、本適用例を用いることにより、オスコネクタ2aおよびメスコネクタ2bとを基準動画通りに接続させることができる。
<B1.具体例>
次に、実施の形態1に係る制御システムの具体例について説明する。
<B1-1.制御装置のハードウェア構成>
図4は、実施の形態1に係る制御システムを構成する制御装置のハードウェア構成を示す模式図である。図4に示されるように、制御装置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は、表示部532と接続されており、システムコントローラ516からの内部コマンドに従って、各種の情報を表示するための信号を表示部532へ出力する。
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の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼び出して処理を実行するものであってもよい。
さらに、本実施の形態に係る制御プログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係る制御プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
なお、代替的に、制御プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
<B1-2.制御装置の機能構成>
図5は、実施の形態1に係る制御装置の機能構成を示すブロック図である。図5に示されるように、制御装置50は、基準動画記憶部51と、教示範囲選択部52と、画像処理部53と、目標フレーム選択部54と、第1制御部55aと、第2制御部55bとを備える。基準動画記憶部51は、図4に示すハードディスク520およびRAM512によって構成される。教示範囲選択部52と画像処理部53とは、図4に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B1-2-1.基準動画記憶部>
基準動画記憶部51は、第1基準動画と第2基準動画とを記憶する。第1基準動画および第2基準動画は、ロボット30a,30bを手動で操作して、オスコネクタ2aおよびメスコネクタ2bをそれぞれ移動させ、互いに接続させる様子を示す。もしくは、第1基準動画および第2基準動画は、作業者の手によってオスコネクタ2aおよびメスコネクタ2bを移動させ、互いに接続させる様子を示してもよい。
なお、オスコネクタ2aが撮像装置21に最も近い位置にあるときと、オスコネクタ2aが撮像装置21から最も遠い位置にあるときとの撮像装置21の作動距離(WD)の差は、当該作動距離に比べて十分に小さい。同様に、オスコネクタ2aが撮像装置22に最も近い位置にあるときと、オスコネクタ2aが撮像装置22から最も遠い位置にあるときとの撮像装置22の作動距離の差は、当該作動距離に比べて十分に小さい。さらに、移動中のオスコネクタ2aの姿勢の変化は微小である。そのため、第1基準動画および第2基準動画において、オスコネクタ2aの形状および大きさはほとんど変化しない。
同様に、メスコネクタ2bが撮像装置21に最も近い位置にあるときと、メスコネクタ2bが撮像装置21から最も遠い位置にあるときとの撮像装置21の作動距離との差は、当該作動距離に比べて十分に小さい。同様に、メスコネクタ2bが撮像装置22に最も近い位置にあるときと、メスコネクタ2bが撮像装置22から最も遠い位置にあるときとの撮像装置22の作動距離との差は、当該作動距離に比べて十分に小さい。さらに、移動中のメスコネクタ2bの姿勢の変化は微小である。そのため、第1基準動画および第2基準動画において、メスコネクタ2bの形状および大きさはほとんど変化しない。
<B1-2-2.教示範囲選択部>
教示範囲選択部52は、対象物(ここではオスコネクタ2aおよびメスコネクタ2b)ごとに、第1基準動画および第2基準動画のうちの当該対象物の見本となる教示範囲を選択する。
教示範囲選択部52は、教示範囲の選択指示を促す画面を表示部532に表示する。作業者は、第1基準動画および第2基準動画の各フレームを確認し、入力装置534を操作して、対象物が所望の動作をしている一連のフレーム群の先頭フレームと最終フレームとを指定する。教示範囲選択部52、指示された先頭フレームから最終フレームまでを教示範囲として選択する。
たとえば、図2に示される第1基準動画に対して、教示範囲選択部52は、1番目のフレーム70aからs番目よりも後フレーム(メスコネクタ2bの一部が欠け始めるフレーム)までをメスコネクタ2bの教示範囲として選択する。教示範囲選択部52は、1番目のフレーム70a(オスコネクタ2aの全体が現れ始めるフレーム)からu番目のフレーム73aまでをオスコネクタ2aの教示範囲として選択する。
同様に、図3に示される第2基準動画に対して、教示範囲選択部52は、1番目のフレーム70bからs番目よりも後フレーム(メスコネクタ2bの一部が欠け始めるフレーム)までをメスコネクタ2bの教示範囲として選択する。教示範囲選択部52は、1番目のフレーム70b(オスコネクタ2aの全体が現れ始めるフレーム)からu番目のフレーム73bまでをオスコネクタ2aの教示範囲として選択する。
<B1-2-3.画像処理部>
画像処理部53は、対象画像に対して画像処理を行ない、テンプレートマッチングを用いて、対象画像中から対象物を検出する。テンプレートマッチングの基本処理は、対象物の画像特徴を表すデータであるテンプレートを予め用意しておき、対象画像とテンプレートとの間の画像特徴の一致度を評価することで、対象画像中の対象物の位置や姿勢、形状、サイズを検出する処理である。
画像処理部53が画像処理を行なう対象画像は、第1基準動画のフレーム、第2基準動画のフレームおよび撮像装置21,22によって撮像された実画像である。
画像処理部53は、事前準備として、対象物(オスコネクタ2aおよびメスコネクタ2b)ごとのテンプレートを作成する。
図6は、テンプレートの作成方法の一例を示す図である。図6(a)には第1基準動画から選択されたフレームが示される。図6(b)には第2基準動画から選択されたフレームが示される。図6に示されるように、画像処理部53は、第1基準動画および第2基準動画の各々から作業者によって選択されたフレームを表示部532(図4参照)に表示させる。作業者は、対象物(オスコネクタ2aまたはメスコネクタ2b)の全体が示されるフレームを目視によって選択すればよい。
画像処理部53は、表示部532に表示されたフレーム上において、対象物の領域指定を受け付ける。たとえば、作業者は、入力装置534(図4参照)を操作して、オスコネクタ2aを取り囲む線3aと、メスコネクタ2bを取り囲む線3bとを入力する。画像処理部53は、線3aで囲まれた領域をオスコネクタ2aの画像領域として特定し、線3bで囲まれた領域をメスコネクタ2bの画像領域として特定する。
画像処理部53は、第1基準画像および第2基準画像の各々のフレームに対して、線3aで囲まれた画像領域から、オスコネクタ2aの複数の特徴点およびそれらの特徴量を抽出する。画像処理部53は、複数の特徴点の各々の画像上の座標と特徴量とをオスコネクタ2aのテンプレートとして作成する。同様に、画像処理部53は、第1基準画像および第2基準画像の各々のフレームに対して、線3bで囲まれた画像領域から、メスコネクタ2bの複数の特徴点およびそれらの特徴量を抽出する。画像処理部53は、複数の特徴点の各々の画像上の座標と特徴量とをメスコネクタ2bのテンプレートとして作成する。
特徴点は、画像に含まれるかどや輪郭などから特徴づけられる点であり、たとえばエッジ点である。特徴量は、たとえば、輝度、輝度勾配方向、量子化勾配方向、HoG(Histogram of Oriented Gradients)、HAAR-like、SIFT(Scale-Invariant Feature Transform)などである。輝度勾配方向とは、特徴点を中心とする局所領域での輝度の勾配の方向(角度)を連続値で表すものであり、量子化勾配方向とは、特徴点を中心とする局所領域での輝度の勾配の方向を離散値で表す(たとえば、8方向を0~7の1バイトの情報で保持する)ものである。
画像処理部53は、第1基準動画のフレームまたは撮像装置21によって撮像される実画像から複数の特徴点およびそれらの特徴量を抽出する。画像処理部53は、抽出された特徴点および特徴量と、第1基準画像のフレームから作成した対象物のテンプレートと照合することにより、画像中の対象物を検出する。
画像処理部53は、第2基準動画のフレームおよび撮像装置22によって撮像される画像から複数の特徴点およびそれらの特徴量を抽出する。画像処理部53は、抽出した特徴点および特徴量と、第2基準画像のフレームから作成した対象物のテンプレートと照合することにより、画像中の対象物を検出する。
画像処理部53は、対象物(オスコネクタ2aおよびメスコネクタ2b)ごとに、対象画像から抽出した当該対象物の各特徴点の画像上の座標を出力する。
<B1-2-4.目標フレーム選択部>
目標フレーム選択部54は、第1基準動画および第2基準動画から目標フレームを選択する。ただし、目標フレーム選択部54は、第1基準動画のk番目のフレームを目標フレームとして選択した場合、第2基準動画のk番目のフレームを目標フレームとして選択する。目標フレームの選択方法の具体例については後述する。
<B1-2-5.第1制御部および第2制御部>
第1制御部55aは、ロボットコントローラ40aを介してロボット30aを制御し、オスコネクタ2aの状態を変化させる。
第2制御部55bは、ロボットコントローラ40bを介してロボット30bを制御し、メスコネクタ2bの状態を変化させる。
図7は、実施の形態1における第1制御部および第2制御部の機能構成を示すブロック図である。図7に示されるように、第1制御部55aおよび第2制御部55bの各々は、変化情報生成部56と、変化情報記憶部57と、算出部58と、指令部59と、終了判定部60とを備える。変化情報記憶部57は、図4に示すハードディスク520およびRAM512によって構成される。変化情報生成部56と、算出部58と、指令部59と、終了判定部60とは、図4に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B1-2-6.変化情報生成部>
変化情報生成部56は、複数の自由度の各々に対して、対象ロボットの制御量と、撮像装置21によって撮像された実画像上の対象物の状態の変化量との関係を示す第1変化情報を生成する。変化情報生成部56は、複数の自由度に対してそれぞれ生成した複数の第1変化情報からなる第1変化情報セット571を変化情報記憶部57に格納する。
さらに、変化情報生成部56は、複数の自由度の各々に対して、対象ロボットの制御量と、撮像装置22によって撮像された実画像上の対象物の状態の変化量との関係を示す第2変化情報を生成する。変化情報生成部56は、複数の自由度に対してそれぞれ生成した複数の第2変化情報からなる第2変化情報セット572を変化情報記憶部57に格納する。
対象物は、第1制御部55aではオスコネクタ2aであり、第2制御部55bではメスコネクタ2bである。対象ロボットは、第1制御部55aではロボット30aであり、第2制御部55bではロボット30bである。複数の自由度は、第1制御部55aでは6自由度であり、第2制御部55bでは3自由度である。
本実施の形態では、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量を示す。具体的には、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。
単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量は、対象物の実空間上の状態に依存する。そのため、変化情報生成部56は、第1基準動画の教示範囲の各フレームに対して第1変化情報セット571を生成する。さらに、変化情報生成部56は、第2基準動画の教示範囲の各フレームに対して第2変化情報セット572を生成する。
変化情報生成部56による第1変化情報セット571および第2変化情報セット572の生成および格納処理は、事前準備として実行される。
図8を参照して、第1制御部55aにおける第1変化情報セット571の生成方法を説明する。なお、第1制御部55aにおける第2変化情報セット572の生成、ならびに、第2制御部55bにおける第1変化情報セット571および第2変化情報セット572の生成方法も同様の方法であるため、これらの生成方法の説明を省略する。
図8は、第1制御部における第1変化情報セットの生成方法を説明する図である。図8(a)は、第1基準動画のk番目のフレーム84を示す。k番目のフレーム84に対応するオスコネクタ2aの実空間上の状態(ここでは位置および姿勢)を基準状態とする。図8(b)は、基準状態からオスコネクタ2aをY方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像94aを示す。図8(c)は、基準状態からオスコネクタ2aをX方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像94bを示す。図8(d)は、基準状態からオスコネクタ2aをZ方向の並進自由度に単位制御量だけ並進移動させた後に撮像装置21によって撮像された画像94cを示す。図8(e)は、基準状態からオスコネクタ2aをピッチ方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像94dを示す。図8(f)は、基準状態からオスコネクタ2aをヨー方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像94eを示す。図8(g)は、基準状態からオスコネクタ2aをロール方向の回転自由度に単位制御量だけ回転移動させた後に撮像装置21によって撮像された画像94fを示す。
変化情報生成部56は、フレーム84および画像94a~94fの各々から抽出されたオスコネクタ2aの各特徴点の画像上の座標を、画像処理部53から取得する。
変化情報生成部56は、フレーム84から抽出されたオスコネクタ2aの特徴点4a’~4g’の座標を、画像94aから抽出された特徴点4a~4gの座標にそれぞれ変換する写像を示す情報を、Y方向の並進自由度に対応する第1変化情報として生成する。
同様に、変化情報生成部56は、特徴点4a’~4g’の座標を画像94bから抽出された特徴点4a~4gの座標に変換する写像を示す情報を、X方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部56は、特徴点4a’~4g’の座標を画像94cから抽出された特徴点4a~4gの座標に変換する写像を示す情報を、Z方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部56は、特徴点4a’~4g’の座標を画像94dから抽出された特徴点4a~4gの座標に変換する写像を示す情報を、ピッチ方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部56は、特徴点4a’~4g’の座標を画像94eから抽出された特徴点4a~4gの座標に変換する写像を示す情報を、ヨー方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部56は、特徴点4a’~4g’の座標を画像94fから抽出された特徴点4a~4gの座標に変換する写像を示す情報を、ロール方向の回転自由度に対応する第1変化情報として生成する。このようにして、変化情報生成部56は、第1基準動画のk番目のフレーム84に対応する第1変化情報セット571を生成する。
変化情報生成部56は、同様の方法により、第1基準動画のうちの教示範囲の残りのフレームに対応する第1変化情報セット571を生成する。
<B1-2-7.算出部>
算出部58は、撮像装置21,22によって撮像された実画像上の対象物の状態を第1基準動画および第2基準動画の目標フレーム上の対象物の状態にそれぞれ近づけるための複数の自由度の各々の制御量を算出する。
算出部58は、変化情報記憶部57から、目標フレームに対応する第1変化情報セット571および第2変化情報セット572を取得し、取得した第1変化情報セット571および第2変化情報セット572に基づいて、制御量を算出する。上述したように、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。そこで、算出部58は、実画像から抽出された対象物の特徴点の画像上の座標と、目標フレームから抽出された対象物の特徴点の画像上の座標とを画像処理部53から取得する。算出部58は、第1変化情報および第2変化情報に基づいて、実画像上の対象物を目標フレーム上の対象物に写像するための複数の自由度の各々の制御量を算出する。
図9を参照して、第1制御部55aの算出部58による制御量の算出方法を説明する。なお、第2制御部55bの算出部58による制御量の算出方法も同様の方法であるため、説明を省略する。
図9は、第1制御部の算出部による制御量の算出方法を説明する図である。算出部58は、第1基準動画の目標フレームから抽出されたオスコネクタ2aの特徴点4a’~4g’の画像上の座標を画像処理部53から取得する。さらに、算出部58は、撮像装置21の撮像により得られた実画像から抽出されたオスコネクタ2aの特徴点4a~4gの画像上の座標を画像処理部53から取得する。なお、特徴点の数は、7つに限定されるものではない。
算出部58は、各特徴点の差分ベクトル61a~61gを算出する。差分ベクトル61a~61gはそれぞれ、特徴点4a~4gを起点とし、特徴点4a’~4g’を終点とするベクトルである。算出部58は、差分ベクトル61a~61gの平均のx成分Δx1およびy成分Δy1を算出する。x成分およびy成分は、画像の座標系で示される。
同様の方法により、算出部58は、撮像装置22の撮像により得られた実画像から抽出された特徴点と第2基準動画の目標フレームから抽出された特徴点との差分ベクトルの平均のx成分Δx2およびy成分Δy2を算出する。
まず、算出部58は、複数の特徴点それぞれの差分ベクトルの平均分がなくなるように、3つの並進自由度の制御量を算出する。具体的には、算出部58は、Δx1,Δy1,Δx2およびΔy2と第1変化情報セット571と第2変化情報セット572とを用いて、ハンド31aのX方向、Y方向およびZ方向の並進自由度の各々の制御量を算出する。
ハンド31aがX方向、Y方向およびZ方向の並進自由度のいずかに並進移動した場合、撮像装置21,22の撮像により得られる画像上において、オスコネクタ2aは一定方向に並進移動する。そのため、第1変化情報セット571における並進自由度に対応する第1変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。同様に、第2変化情報セット572における並進自由度に対応する第2変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。
ここで、目標フレームに対応する第1変化情報セット571の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変化情報セット572の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)に変換する写像を示すものとする。
このとき、算出部58は、以下の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変化情報は、単位制御量だけロボット30aを制御したときの画像上のオスコネクタ2aの状態の変化量を示す。そのため、算出部58は、X方向の並進自由度の制御量を単位制御量のa1倍、Y方向の並進自由度の制御量を単位制御量のa2倍、Z方向の並進自由度の制御量を単位制御量のa3倍とする。これら並進自由度の制御量は、複数の特徴点の差分ベクトルの平均分だけ、実画像上のオスコネクタ2aの状態を目標フレーム上のオスコネクタ2aの状態に近づけるための制御量である。
次に、算出部58は、3つの回転自由度の各々の制御量を算出する。算出部58は、各特徴点の差分ベクトルから上記の平均のx成分(Δx1またはΔx2)およびy成分(Δy1またはΔy2)を差し引く。算出部58は、たとえば山登り法のような探索アルゴリズムを用いて、各特徴点の差分ベクトルの残差が最も0に近くなる3つの回転自由度の制御量を算出する。
具体的には、算出部58は、ピッチ方向、ヨー方向およびロール方向の回転自由度の制御量が0である解を現在の解として探索アルゴリズムを開始する。算出部58は、現在の解の近傍の複数の解の各々に従ってロボット30aを制御したときの、各特徴点の差分ベクトルの残差の変化をシミュレーションする。算出部58は、シミュレーション結果から、現在の解よりも各特徴点の差分ベクトルの残差が0に近い近傍解が存在する場合に、当該近傍解を現在の解に置き換える。算出部58は、この処理を繰り返すことにより、差分ベクトルの残差が極値となる解を探索する。
<B1-2-8.指令部>
指令部59は、算出部58によって算出された制御量だけ対象ロボットを移動させるための制御指令を生成し、生成した制御指令を対象ロボットコントローラに出力する。対象ロボットコントローラは、第1制御部55aではロボットコントローラ40aであり、第2制御部55bではロボットコントローラ40bである。
<B1-2-9.終了判定部>
終了判定部60は、実画像上の対象物の状態と教示範囲の最終フレーム上の対象物の状態との偏差を算出し、算出した偏差が予め定められた閾値未満である場合に、対象ロボットの制御を終了すると判定する。終了判定部60は、対象ロボットの制御を終了すると判定すると、終了通知を出力する。
偏差は、たとえば、実画像および最終フレームから抽出された対象物の対応する特徴点同士の距離の平均である。
閾値は、対象物の状態に要求される精度に応じて設定される。閾値は、第1制御部55aでは閾値Thaであり、第2制御部55bでは閾値Thbである。閾値Thaと閾値Thbとは同じであってもよいし、異なっていてもよい。
<C1.動作例>
<C1-1.変化情報の生成処理>
図10を参照して、変化情報生成部56による変化情報の生成処理の流れについて説明する。図10は、変化情報生成部による変化情報の生成処理の流れの一例を示すフローチャートである。なお、図10には、第1制御部55aの変化情報生成部56の処理の流れが示されている。第2制御部55bの変化情報生成部56も、図10と同様の方法に従って変化情報を生成すればよい。変化情報の生成処理は、事前準備として行なわれる。
まずステップS1において、制御装置50は、所定位置に搬送されてきたオスコネクタ2aをハンド31aによって把持し、オスコネクタ2aを上方から下方に移動させる定型動作をロボット30aに行なわせる。これにより、オスコネクタ2aは、撮像装置21,22の視野内に移動される。
ステップS2において、変化情報生成部56は、第1基準動画および第2基準動画の教示範囲の先頭フレームと同じ画像が撮像装置21,22によってそれぞれ撮像されるように、ロボット30aを制御する。ステップS2のサブルーチンについては後述する。
ステップS3において、変化情報生成部56は、kを教示範囲の先頭フレームのフレーム番号にセットする。ステップS4において、変化情報生成部56は、6自由度のうちの1つを選択する。
ステップS5において、変化情報生成部56は、選択した自由度の正方向に単位制御量だけハンド31aを移動させるための制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS6において、変化情報生成部56は、ハンド31aが単位制御量だけ移動した後、撮像装置21,22から最新の実画像を取得する。
ステップS7において、変化情報生成部56は、ステップS6で取得した実画像から抽出されたオスコネクタ2aの特徴点の座標を画像処理部53から取得する。
ステップS8において、変化情報生成部56は、第1基準動画および第2基準動画のk番目のフレームから抽出されたオスコネクタ2aの特徴点の座標を画像処理部53から取得する。
ステップS9において、変化情報生成部56は、ステップS8で取得した座標と、ステップS7で取得した座標とに基づいて、k番目のフレームおよびステップS4で選択した自由度に対応する第1変化情報および第2変化情報を生成する。すなわち、変化情報生成部56は、撮像装置21による実画像から抽出された特徴点の座標を第1基準動画のk番目のフレームから抽出された特徴点の座標に変換するための写像を示す第1変化情報を生成する。さらに、変化情報生成部56は、撮像装置22による実画像から抽出された特徴点の座標を第2基準動画のk番目のフレームから抽出された特徴点の座標に変換するための写像を示す第2変化情報を生成する。
ステップS10において、変化情報生成部56は、ハンド31aを元の状態(直近のステップS5の前の状態)に戻すための制御指令を生成し、ロボットコントローラ40aに出力する。これにより、オスコネクタ2aは、ステップS5の前の状態に戻る。
ステップS11において、変化情報生成部56は、未選択の自由度があるか判定する。未選択の自由度がある場合(ステップS11でYES)、変化情報の生成処理は、ステップS4に戻る。その結果、ステップS4~ステップS10が繰り返され、6自由度の各々について、第1変化情報および第2変化情報が生成される。
未選択の自由度がない場合(ステップS11でNO)、変化情報生成部56は、ステップS12において、kが教示範囲の最終フレームのフレーム番号であるか否かを判定する。
kが最終フレームのフレーム番号ではない場合(ステップS12でNO)、変化情報生成部56は、ステップS13において、第1基準動画および第2基準動画のk+1番目のフレームと同じ画像が撮像装置21,22によってそれぞれ撮像されるように、ロボット30aを制御する。
具体的には、変化情報生成部56は、上述した算出部58の処理内容と同様の方法により、k番目のフレーム上のオスコネクタ2aの状態をk+1番目のフレーム上のオスコネクタ2aの状態に近づけるための6自由度の制御量を算出する。すなわち、変化情報生成部56は、k番目のフレームから抽出された複数の特徴点の各々について、当該特徴点を起点とし、k+1番目のフレームから抽出された対応する特徴点を終点とする差分ベクトルを求める。変化情報生成部56は、特徴点ごとの差分ベクトルとk番目のフレームに対応する第1変化情報および第2変化情報とに基づいて、6自由度の制御量を算出する。変化情報生成部56は、算出した制御量を示す制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS14において、変化情報生成部56は、kに1だけ加算する。ステップS14の後、処理はステップS4に戻る。これにより、k+1番目のフレームについても、6自由度の各々の第1変化情報および第2変化情報が生成される。
kが最終フレームのフレーム番号である場合(ステップS12でYES)、全てのフレームについて第1変化情報セット571および第2変化情報セット572が生成されたため、変化情報の生成処理は終了する。
図11は、図10に示すステップS2のサブルーチンの処理の流れを示すフローチャートである。
まずステップS21において、変化情報生成部56は、第1基準動画および第2基準動画の教示範囲の先頭フレームから抽出されたオスコネクタ2aの特徴点の座標を画像処理部53から取得する。
ステップS22において、変化情報生成部56は、撮像装置21,22から最新の実画像を取得する。
ステップS23において、変化情報生成部56は、ステップS22で取得した実画像から抽出されたオスコネクタ2aの特徴点の座標を画像処理部53から取得する。
ステップS24において、変化情報生成部56は、ステップS22で取得した実画像上のオスコネクタ2aの状態と先頭フレーム上のオスコネクタ2aの状態との偏差が閾値Tha未満であるか否かを判定する。偏差は、たとえば、実画像および先頭フレームから抽出されたオスコネクタ2aの対応する特徴点同士の距離の平均である。
偏差が閾値Tha未満である場合(ステップS24でYES)、変化情報生成部56は、先頭フレームと同じ画像が撮像装置21,22によってそれぞれ撮像されると判定し、処理を終了する。
偏差が閾値Tha以上である場合(ステップS24でNO)、ステップS25において、変化情報生成部56は、6自由度のうちの1つを選択する。ステップS26において、変化情報生成部56は、制御方向として正方向および負方向のいずれかを選択する。
ステップS27において、変化情報生成部56は、選択した自由度の選択した制御方向に単位制御量だけハンド31aを移動させるための制御指令を生成し、ロボットコントローラ40aに出力する。
ステップS28において、変化情報生成部56は、ハンド31aが単位制御量だけ移動した後、撮像装置21,22から実画像を取得する。
ステップS29において、変化情報生成部56は、ステップS28で取得した実画像から抽出されたオスコネクタ2aの特徴点の座標を画像処理部53から取得する。
ステップS30において、変化情報生成部56は、ステップS28で取得した実画像上のオスコネクタ2aの状態と先頭フレーム上のオスコネクタ2aの状態との偏差を算出する。
ステップS31において、変化情報生成部56は、ハンド31aを元の状態(直近のステップS27の前の状態)に戻すための制御指令を生成し、ロボットコントローラ40aに出力する。これにより、オスコネクタ2aは、ステップS27の前の状態に戻る。
ステップS32において、変化情報生成部56は、未選択の制御方向があるか判定する。未選択の制御方向がある場合(ステップS32でYES)、処理はステップS26に戻る。
未選択の制御方向がない場合(ステップS32でNO)、ステップS33において、変化情報生成部56は、未選択の自由度があるか判定する。未選択の自由度がある場合(ステップS33でYES)、処理はステップS25に戻る。
未選択の自由度がない場合(ステップS33でNO)、ステップS34において、変化情報生成部56は、最小偏差に対応する自由度および制御方向に単位制御量だけハンド31aを移動するように、ロボットコントローラ40aを介してロボット30aを制御する。ステップS34の後、処理はステップS22に戻る。
<C1-2.ロボットの制御>
図12を参照して、第1基準動画および第2基準動画に従って対象物の状態を変化させるように対象ロボットを制御する処理の流れについて説明する。図12は、第1基準動画および第2基準動画に沿って対象物の状態が変化するように対象ロボットを制御する処理の流れの一例を示すフローチャートである。
まずステップS41において、制御装置50は、全ての制御部(第1制御部55aおよび第2制御部55b)の終了判定部60から終了通知が出力されているか否かを判定する。全ての制御部の終了判定部60から終了通知が出力されている場合(ステップS41でYES)、処理を終了する。
全ての制御部の終了判定部60から終了通知が出力されていない場合(ステップS41でNO)、ステップS42において、制御装置50は、撮像装置21,22によって撮像された実画像を取得する。ステップS42は撮像周期ごとに行なわれる。
ステップS43において、画像処理部53は、テンプレートマッチングにより、実画像および目標フレームから全ての対象物(オスコネクタ2aおよびメスコネクタ2b)を検出し、各対象物の特徴点の座標を抽出する。
ステップS44において、目標フレーム選択部54は、第1基準動画および第2基準動画から目標フレームを選択する。
ステップS45において、目標フレーム選択部54は、目標フレームを教示範囲内に含む対象物を特定し、特定した対象物を制御する制御部(第1制御部55aおよび第2制御部55bの少なくとも一方)に対して制御指示を出力する。
ステップS46において、制御指示を受けた制御部(第1制御部55aおよび第2制御部55bの少なくとも一方)は、対象ロボットの制御を行う。ステップS46の後、処理はステップS41に戻る。ステップS4でNOである場合、ステップS42~S46の一連処理が撮像周期毎に繰り返される。また、このとき、ステップS41でNOである場合、ステップS46による対象ロボットの制御を行っている間に、次の実画像を取得するステップS42を開始してもよい。これにより、対象ロボットの動作を停止させることなく、最新の実画像に応じて対象ロボットが制御され続ける。その結果、対象物の状態を速く変化させることができる。
<C1-3.目標フレームの選択>
図13および図14を参照して、目標フレーム選択部54による目標フレームの選択処理の流れについて説明する。図13は、図12に示すステップS44のサブルーチンの処理の流れを示すフローチャートである。図14は、最近接フレームと目標フレームとの関係を示す図である。
まずステップS51において、目標フレーム選択部54は、第1基準動画および第2基準動画の各フレームから抽出された全ての対象物の特徴点の座標を画像処理部53から取得する。
ステップS52において、目標フレーム選択部54は、撮像装置21,22によって撮像された実画像から抽出された全ての対象物の特徴点の座標を画像処理部53から取得する。
ステップS53において、目標フレーム選択部54は、1回目の目標フレームの選択が完了しているか否かを判定する。
1回目の目標フレームの選択が完了している場合(ステップS53でYES)、ステップS54において、目標フレーム選択部54は、前回の目標フレームがいずれかの対象物に対応する教示範囲の最終フレームであるか否かを判定する。
前回の目標フレームが最終フレームである場合(ステップS54でYES)、処理はステップS55に移る。ステップS55において、目標フレーム選択部54は、当該最終フレームが属する教示範囲に対応する対象物について、実画像上の状態と最終フレーム上の状態との偏差を算出し、偏差が閾値未満であるか否かを判定する。偏差は、たとえば、実画像および最終フレームにおける対象物の対応する特徴点同士の距離の平均である。
偏差が閾値以上である場合(ステップ55で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の後、目標フレームの選択処理は終了する。
<C1-4.制御部の処理>
図15を参照して、図12のステップS46のサブルーチンの処理について説明する。図15は、図12に示すステップS46のサブルーチンの処理の流れを示すフローチャートである。
まずステップS61において、終了判定部60は、目標フレームが教示範囲の最終フレームであるか否かを判定する。
目標フレームが最終フレームである場合(ステップS61でYES)、ステップS62において、終了判定部60は、実画像上の対象物の状態と最終フレーム上の対象物の状態との偏差が閾値未満か否かを判定する。
偏差が閾値未満である場合(ステップS62でYES)、ステップS63において、終了判定部60は、終了通知を出力する。ステップS63の後、処理は終了する。
目標フレームが最終フレームではない場合(ステップS61でNO)、および、偏差が閾値以上である場合(ステップS62でNO)、処理はステップS64に移る。
ステップS64において、算出部58は、目標フレームに対応する第1変化情報セット571および第2変化情報セット572に基づいて、実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量を算出する。
ステップS65において、指令部59は、算出された制御量を示す制御指令を生成し、対象ロボットコントローラに出力する。ステップS65の後、処理は終了する。
第1制御部55aおよび第2制御部55bはそれぞれ、図15に示す流れに従って、対象ロボットを制御する。オスコネクタ2aおよびメスコネクタ2bの教示範囲に目標フレームが含まれる場合、実画像上のオスコネクタ2aおよびメスコネクタ2bの状態が目標フレーム上のオスコネクタ2aおよびメスコネクタ2bの状態にそれぞれ近づくように、ロボット30a,30bが制御される。これにより、オスコネクタ2aおよびメスコネクタ2bの状態は、目標フレームに従って連係して変化する。
<C1-5.作用・効果>
以上のように、制御システム1は、ロボット30a,30bと、オスコネクタ2aおよびメスコネクタ2bを撮像するための撮像装置21,22と、ロボット30a,30bを制御する制御装置50とを備える。ロボット30a,30bは、オスコネクタ2aおよびメスコネクタ2bの状態をそれぞれ変化させる。撮像装置21,21は、ロボット30a,30bと異なる定位置に設置され、ロボット30a,30bによってそれぞれ支持されたオスコネクタ2aおよびメスコネクタ2bを撮像する。
制御装置50は、オスコネクタ2aおよびメスコネクタ2bの見本を示す第1基準動画および第2基準動画を記憶している。第1基準動画および第2基準動画は、時系列に並んだ複数のフレームを含む。
制御装置50は、オスコネクタ2aおよびメスコネクタ2bの各々について変化情報を取得する。オスコネクタ2aに対応する変化情報は、ロボット30aの制御量と、撮像装置21,22の画像上におけるオスコネクタ2aの状態の変化量との関係を示す。メスコネクタ2bに対応する変化情報は、ロボット30bの制御量と、撮像装置21,22の画像上におけるメスコネクタ2bの状態の変化量との関係を示す。
制御装置50は、撮像装置21,22によって撮像された実画像を取得する第1処理と、複数のフレームから目標フレームを選択する第2処理と、実画像と目標フレームとに基づいてロボット30a,30bの各々を制御する第3処理とを行なう。制御装置50は、オスコネクタ2aに対応する変化情報に基づいて、実画像上のオスコネクタ2aの状態を目標フレーム上のオスコネクタ2aの状態に近づけるためのロボット30aの制御量を算出し、算出した制御量に従ってロボット30aを制御する。制御装置50は、メスコネクタ2bに対応する変化情報に基づいて、実画像上のメスコネクタ2bの状態を目標フレーム上のメスコネクタ2bの状態に近づけるためのロボット30bの制御量を算出し、算出した制御量に従ってロボット30bを制御する。
これにより、実画像上のオスコネクタ2aおよびメスコネクタ2bの状態を目標フレーム上のオスコネクタ2aおよびメスコネクタ2bの状態までそれぞれ変化させることができる。つまり、オスコネクタ2aおよびメスコネクタ2bの状態は、目標フレームに従って連係して変化する。
制御装置50は、第1から第3処理を含む一連処理を繰り返し実行し、第3処理を行なっている間に次の一連処理の第1処理を開始する。これにより、ロボット30a,30bの動作を停止させることなく、最新の実画像に応じてロボット30a,30bが制御され続ける。その結果、オスコネクタ2aおよびメスコネクタ2bの状態を速く変化させることができる。
<D1.変形例>
<D1-1.変形例1>
目標フレーム選択部による目標フレームの選択処理は、図13に示す方法に限定されるものではない。
図16は、オスコネクタとメスコネクタとの接続の見本となる基準動画の別の例を示す図である。図16に示す例の基準動画は、オスコネクタ2aが基板5の上方から基板5に向かって移動した後、基板5に平行な方向に沿ってオスコネクタ2aがメスコネクタ2bに向かって移動してメスコネクタ2bに接続する様子を示す。このように、オスコネクタ2aは、L字状の経路Aに沿って移動する。なお、フレーム74には、基板5の上方に位置しているオスコネクタ2aが示される。フレーム75には、基板5の上面に到達したオスコネクタ2aが示される。フレーム76には、メスコネクタ2bに接続されたオスコネクタ2aが示される。
フレーム74に示されるオスコネクタ2aの状態においてフレーム76が目標フレームとして選択された場合、オスコネクタ2aは、フレーム75で示される状態を通過することなく、フレーム76で示される状態に向かうことになる。この場合、オスコネクタ2aは、メスコネクタ2bに対して傾斜した方向から向かう。そのため、オスコネクタ2aのピンがメスコネクタ2bの挿入孔に挿入できない可能性がある。オスコネクタ2aのピンをメスコネクタ2bの挿入孔に挿入させるためには、オスコネクタ2aは、フレーム75で示される状態を通過することが好ましい。
そこで、本変形例の目標フレーム選択部54は、通過すべきフレーム(以下、「通過必須フレーム」という)の指定を受け付け、指定された通過必須フレームを必ず目標フレームとして選択する。目標フレーム選択部54は、通過必須フレームを受け付けた場合、当該通過必須フレームで示される状態を通過すべき対象物の指定を受け付ける。
目標フレーム選択部54は、通過必須フレームの指定を促す画面を表示部532(図4参照)に表示する。作業者は、第1基準動画および第2基準動画の各フレームを確認し、入力装置534(図4参照)を操作して、通過必須フレームと当該通過必須フレームで示される状態を通過すべき対象物(通過必須フレームに対応する対象物)とを指定する。
図17は、実施の形態1の変形例1における目標フレームの選択処理の流れの一例を示すフローチャートである。図17に示すフローチャートは、図13に示すフローチャートと比較して、ステップS54,S58,S59の代わりにステップS74、S78,S79をそれぞれ含む点でのみ相違する。そのため、ステップS74,S78,S79についてのみ説明する。
ステップS74において、目標フレーム選択部54は、前回の目標フレームが最終フレームまたは通過必須フレームであるか否かを判定する。
ステップS78において、目標フレーム選択部54は、最近接フレームから所定数だけ後のフレームまでに最終フレームおよび通過必須フレームの少なくとも一方があるか否かを判定する。
最終フレームおよび通過必須フレームの少なくとも一方がある場合(ステップS78でYES)、ステップS79において、目標フレーム選択部54は、当該最終フレームおよび通過必須フレームの少なくとも一方を目標フレームとして選択する。なお、最近接フレームから所定数だけ後のフレームまでに最終フレームおよび通過必須フレームの少なくとも一方であるフレームが複数ある場合、目標フレーム選択部54は、当該複数のフレームのうち最もフレーム番号の小さいフレームを選択する。
本変形例1によれば、実画像上の対象物の状態が通過必須フレーム上の対象物の状態よりも前の状態であれば、通過必須フレームが必ず目標フレームとして選択される。さらに、通過必須フレームが目標フレームとして選択されると、実画像上の対象物の状態と通過必須フレーム上の対象物の状態との偏差が閾値未満となってから、目標フレームが更新される。これにより、通過必須フレームに対応する対象物の状態を通過必須フレーム上の状態により確実に変化させることができる。
さらに、目標フレーム選択部54は、通過必須フレームが目標フレームとして選択されてから規定時間経過しても、通過必須フレームに対応する対象物が通過必須フレーム上の状態と一致しない場合に、制御システムに異常が生じていると判定してもよい。
図18は、異常判定処理の流れの一例を示すフローチャートである。まずステップS81において、目標フレーム選択部54は、通過必須フレームを目標フレームとして選択すると、タイマーをリセットする。
ステップS82において、目標フレーム選択部54は、通過必須フレームに対応する対象物について、撮像装置21,22によって撮像された実画像上の状態と通過必須フレーム上の状態との偏差が閾値未満であるか否かを判定する。偏差が閾値未満である場合(ステップS82でYES)、異常判定処理は終了する。
偏差が閾値以上である場合(ステップS82でNO)、ステップS83において、目標フレーム選択部54は、タイマー値が規定時間を超えているか否かを判定する。
タイマー値が規定時間を超えていない場合(ステップS83でNO)、異常判定処理はステップS82に戻る。
タイマー値が規定時間を超えている場合(ステップS83でYES)、ステップS84において、目標フレーム選択部54は、制御システム1に何等かの異常が発生していると判定する。これにより、制御システム1の異常に対する対策を早く開始することができる。ステップS84の後、異常判定処理は終了する。
制御装置50は、目標フレーム選択部54によって異常が発生している判定された場合、表示部532に異常の発生を通知してもよいし、ロボット30a,30bの制御を停止してもよい。
<D1-2.変形例2>
上記の説明では、制御システム1は、オスコネクタ2aとメスコネクタ2bとの接続(組み立て)を行なう。しかしながら、制御システム1は、別の2つの対象物同士を組み立ててもよい。
図19は、実施の形態1の変形例2に係る制御システムの対象物を示す模式図である。変形例2に係る制御システム1は、工業製品の生産ラインなどにおいて、上ケース6aと下ケース6bとを係合させる。上ケース6aおよび下ケース6bは、平面視略矩形状の箱状である。上ケース6aは、下側に開口するように配置される。下ケース6bは、上側に開口するように配置される。
下ケース6bの上端の図面手前側には2つの係合爪7a,7bが形成されている。下ケース6bの上端の図面奥側にも2つの係合爪(図示せず)が形成されている。上ケース6aは、下ケース6bの上方から下方に移動し、下ケース6bの4つの係合爪と係合する。
上ケース6aは、ロボット30aのハンド31a(図1参照)によって把持される。下ケース6bは、ロボット30bのステージ31b(図1参照)上に載置される。
ロボット30aは、2自由度で上ケース6aの状態(ここでは形状)を変化させるための制御棒32a~32d(図19参照)をさらに備える。ロボット30aは、対向する制御棒32a,32bに対して、制御量に応じた力を互いに近づける方向に印加することが可能である。同様に、ロボット30aは、対向する制御棒32c,32dに対して、制御量に応じた力を互いに近づける方向に印加することが可能である。
制御棒32a,32bは、上ケース6aの対向する2つの側壁にそれぞれ接触する。そのため、制御棒32a,32bに対して互いに近づける力が印加されると、上ケース6aは変形する。変形量は、制御量に応じて異なる。
制御棒32c,32dは、上ケース6aの別の対向する2つの側壁にそれぞれ接触する。そのため、制御棒32c,32dに対して互いに近づける力が印加されると、上ケース6aは変形する。変形量は、制御量に応じて異なる。
撮像装置21,22は、下ケース6bの図面手間側の係合爪7a,7bを撮像可能な位置に配置される。ただし、撮像装置21,22は、下ケース6bの図面奥側の2つの係合爪を撮像できない。そのため、実施の形態1の変形例2に係る制御システム1は、さらに撮像装置23,24を備える。撮像装置23,24は、下ケース6bの図面奥側の2つの係合爪を撮像可能な位置に配置される。
本変形例2の制御装置50は、撮像装置21~24にそれぞれ対応する4つの基準動画を記憶する。
変化情報生成部56は、4つの基準動画にそれぞれ対応する4つの変化情報セットを生成すればよい。ロボット30aは、6自由度で上ケース6aの位置および姿勢を変化させるとともに、2自由度で上ケース6aの形状を変化させる。そのため、変化情報生成部56は、上ケース6aについて、8自由度の各々に対応する第1変化情報および第2変化情報を生成する。
基準動画として、下ケース6bの4つの係合爪に係合しやすいように上ケース6aの形状を変形させてから、上ケース6aを下ケース6bに係合させる様子を示す動画が予め準備される。これにより、算出部58は、実画像上の上ケース6aの形状を目標フレーム上の上ケース6aの形状に近づけるための、制御棒32a,32bに対する制御量および制御棒32c,32dに対する制御量を算出する。これにより、上ケース6aを基準動画と同じように変形させることができる。その結果、上ケース6aを下ケース6bに容易に係合させることができる。
<D1-3.変形例3>
算出部58は、別の方法により、撮像装置21,22によって撮像された実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量を算出してもよい。
図10のステップS13に示されるように、変化情報生成部56は、k番目のフレーム上の対象物の状態をk+1番目のフレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量を算出する。算出部58は、連続する2つのフレームごとに算出された当該制御量をフレーム間制御量として記憶しておき、当該フレーム間制御量を用いて、実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量を算出してもよい。
具体的には、算出部58は、最近接フレームに対応する第1変化情報および第2変化情報に基づいて、実画像上の対象物の状態を最近接フレーム上の対象物の状態に近づけるための複数の自由度の各々の制御量αを算出する。さらに、算出部58は、最近接フレームから目標フレームまでのフレーム間制御量の和βを算出する。算出部58は、制御量αとフレーム間制御量の和βとの和を、実画像上の対象物の状態を目標フレーム上の対象物の状態に近づけるための制御量として算出すればよい。
<D1-4.変形例4>
算出部58は、公知のモデル予測制御(「足立、「モデル予測制御の基礎」、日本ロボット学会誌、2014年7月、第32巻、第6号、p. 9-12」(非特許文献2)参照)を行なうことにより、複数の自由度の制御量を算出してもよい。
具体的には、目標フレーム選択部54は、教示範囲のうち予測ホライズン期間に含まれる複数のフレームを目標フレームとして選択する。算出部58は、目標フレーム上の対象物の状態と、予測ホライズン期間において撮像装置21,22によって撮像される画像上の対象物の状態との偏差を最小化するように、制御ホライズン期間における制御量を算出する。
<D1-5.その他の変形例>
画像処理部53は、対象物の3D-CADデータを用いて、対象画像から対象物を検出してもよい。
基準動画(第1基準動画,第2基準動画)は、CG(Computer Graphics)によって作成されてもよい。
上記の説明では、変化情報生成部56は、対象フレームから抽出された対象物の特徴点の座標を、撮像された画像から抽出された対応する特徴点の座標に変換する写像を示す情報を変化情報として生成する。しかしながら、変化情報生成部56は、撮像された画像から抽出された対象物の特徴点の座標、対象フレームから抽出された対応する特徴点の座標に変換する写像を示す情報を変化情報として生成してもよい。
制御装置50は、第1基準動画および第2基準動画を表示部532に表示し、作業者から動画の編集指示を受け付け、動画を編集してもよい。たとえば、作業者は、不要なフレームを第1基準動画および第2基準動画から削除してもよい。
ロボット30aは、たとえば風船のような膨張および収縮する対象物の状態(ここではサイズ)を変化させてもよい。この場合、制御装置50は、ロボット30aを単位制御量だけ制御したときの対象物の大きさの変化を示す変化情報を取得する。そして、制御装置は、変化情報に基づいて、実画像上の対象物の大きさが目標フレーム上の対象物の大きさに近づくように、ロボット30aを制御する。
上記の説明では、オスコネクタ2aをメスコネクタ2bに向けて移動させることにより、オスコネクタ2aとメスコネクタ2bとを接続させた。しかしながら、オスコネクタ2aがステージ31b上に載置され、メスコネクタ2bがハンド31aに把持されてもよい。この場合、メスコネクタ2bをオスコネクタ2aに向けて移動させることにより、オスコネクタ2aとメスコネクタ2bとを接続させる。
上記の説明では、制御装置50の基準動画記憶部51が基準動画を記憶するものとした。しかしながら、制御装置50の外部装置が基準動画を記憶していてもよい。
基準動画記憶部51は、基準動画の代わりに、もしくは、基準動画に加えて、基準動画の各フレームから抽出された各対象物の特徴点の座標および特徴量を記憶していてもよい。これにより、基準動画の各フレームに対する画像処理部53の処理を省略することができる。
≪実施の形態2≫
<A2.適用例>
図20を参照して、本開示が適用される場面の一例について説明する。図20は、実施の形態2に係る制御システムの概要を示す模式図である。
実施の形態2に係る制御システム1Aは、工業製品の生産ラインなどにおいて、半田ごて8cおよび半田フィーダ8dを用いて、基板9のパッド8fに電線8eを半田付けする。
制御システム1Aは、図1に示す制御システム1と比較して、ロボット30a,30b、ロボットコントローラ40a,40bおよび制御装置50の代わりに、ロボット30c~30f、ロボットコントローラ40c~40fおよび制御装置50Aを備える点で相違する。
撮像装置21,22は、互いに異なる方向から、被写体としての半田ごて8c、半田フィーダ8d、電線8eおよびパッド8fを撮像する。
ロボット30cは、半田ごて8cの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30cは、先端に半田ごて8cを把持するハンド31cを有し、ハンド31cの位置および姿勢を6自由度で変化させる。
ロボット30dは、半田フィーダ8dの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30dは、先端に半田フィーダ8dを把持するハンド31dを有し、ハンド31dの位置および姿勢を6自由度で変化させる。
ロボット30eは、電線8eの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30eは、先端に電線8eを把持するハンド31eを有し、ハンド31eの位置および姿勢を6自由度で変化させる。
ロボット30fは、基板9のパッド8fの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえばXYθステージである。ロボット30fは、基板9が載置されるステージ31fを有し、ステージ31fの位置および姿勢を3自由度で変化させる。
ロボット30c~30eは、把持する対象物が異なるだけであり、図1に示すロボット30aと同様の構成を有する。ロボット30fは、ステージ31f上に載置される対象物が異なるだけであり、図1に示すロボット30bと同様の構成を有する。
ロボットコントローラ40c~40eは、制御装置50Aから受けた制御指令に従って、ロボット30c~30eの動作制御をそれぞれ行なう。ロボットコントローラ40c~40eは、図1に示すロボットコントローラ40aと同様の構成を有する。
ロボットコントローラ40fは、制御装置50Aから受けた制御指令に従って、ロボット30fの動作制御を行なう。ロボットコントローラ40fは、図1に示すロボットコントローラ40bと同様の構成を有する。
制御装置50Aは、ロボットコントローラ40c~40fを介して、ロボット30c~30fをそれぞれ制御する。
制御装置50Aは、半田ごて8c、半田フィーダ8d、電線8eおよびパッド8fの見本を示す第1基準動画および第2基準動画を記憶している。第1基準動画は、撮像装置21の位置から見たときの動画である。第2基準動画は、撮像装置22の位置から見たときの動画である。
図21は、実施の形態2における基準動画(第1基準動画または第2基準動画)の一例を示す図である。図21には、基準動画のフレーム77~83が示されている。
フレーム77は、パッド8fの状態が所望の状態に到達したときのフレームである。フレーム78は、電線8eがパッド8fの上に到達したときのフレームである。フレーム79は、半田ごて8cの先端がパッド8fに接触したときのフレームである。フレーム80は、半田フィーダ8dの先端が半田ごて8cの先端に接触したときのフレームである。フレーム81は、半田フィーダ8dから供給され、溶融した半田(以下、「溶融半田8g」という)が所望のサイズになったときのフレームである。フレーム82は、半田フィーダ8dをパッド8fから遠ざけたときのフレームである。フレーム83は、半田ごて8cをパッド8fから遠ざけたときのフレームである。このような一連の動作により、パッド8fに電線8eが半田付けされる。
制御装置50Aは、6自由度の各々について、単位制御量だけロボット30cを制御したときの、撮像装置21,22から得られる画像上の半田ごて8cの状態の変化を示す変化情報を取得する。
制御装置50Aは、6自由度の各々について、単位制御量だけロボット30dを制御したときの、撮像装置21,22から得られる画像上の半田フィーダ8dの状態の変化を示す変化情報を取得する。
制御装置50Aは、6自由度の各々について、単位制御量だけロボット30eを制御したときの、撮像装置21,22から得られる画像上の電線8eの状態の変化を示す変化情報を取得する。
制御装置50Aは、3自由度の各々について、単位制御量だけロボット30fを制御したときの、撮像装置21,22から得られる画像上のパッド8fの状態の変化を示す変化情報を取得する。
制御装置50Aは、実施の形態1と同様に、撮像装置21,22によって撮像された実画像上の対象物の状態が第1基準動画および第2基準動画の目標フレーム上の対象物の状態にそれぞれ近づくように、対象ロボットコントローラを介して対象ロボットを制御する。対象物は、半田ごて8c、半田フィーダ8d、電線8eおよびパッド8fである。対象ロボットコントローラは、ロボットコントローラ40c~40fである。対象ロボットは、ロボット30c~30fである。これにより、半田ごて8c、半田フィーダ8d、電線8eおよびパッド8fの4つの対象物の状態は、第1基準動画および第2基準動画に従って連係して変化する。
さらに、制御装置50Aは、実画像上の第1対象物の状態と第1目標フレーム上の第1対象物の状態との第1偏差と、実画像上の第2対象物の状態と第2目標フレーム上の第2対象物の状態との第2偏差とを算出する。制御装置50Aは、第1偏差が第1閾値未満となる時刻と、第2偏差が第2閾値未満となる時刻とが規定条件を満たすように、ロボット30c~30fを制御する。これにより、半田ごて8c、半田フィーダ8d、電線8eおよびパッド8fの状態を目標フレームに到達させる時刻を制御することができる。
<B2.具体例>
<B2-1.制御装置の構成>
制御装置50Aは、実施の形態1と同様に、図4に示されるようなハードウェア構成を有する。そのため、制御装置50Aのハードウェア構成の詳細な説明を省略する。
図22は、実施の形態2に係る制御装置の機能構成を示すブロック図である。図22に示されるように、制御装置50Aは、図5に示す制御装置50と比較して、目標フレーム選択部54の代わりに目標フレーム選択部54Aを備え、第1制御部55aおよび第2制御部55bの代わりに第1制御部55c、第2制御部55d、第3制御部55eおよび第4制御部55fを備える点で相違する。
ただし、基準動画記憶部51は、4つの対象物(半田ごて8c、半田フィーダ8d、電線8eおよびパッド8f)の見本を示す第1基準動画および第2基準動画を記憶する。
教示範囲選択部52は、4つの対象物(半田ごて8c、半田フィーダ8d、電線8eおよびパッド8f)の各々について教示範囲を選択する。
画像処理部53は、対象画像から4つの対象物(半田ごて8c、半田フィーダ8d、電線8eおよびパッド8f)を検出する。
さらに、画像処理部53は、対象画像からパッド8f上の溶融半田8g(図21参照)も対象物として検出する。画像処理部53は、溶融半田8gのテンプレートを事前に作成し、対象画像から溶融半田8gの特徴点および特徴量を抽出する。なお、溶融半田8gの状態(ここではサイズ)は、溶融した半田量に応じて変化する。そのため、画像処理部53は、対象画像から色抽出およびラベリングを行ない、拡大縮小の影響を受けにくいSIFTを特徴量として抽出することが好ましい。さらに、画像処理部53は、色拡大縮小の影響を受けにくいSIFTを特徴量として抽出することが好ましい。これにより、画像処理部53は、対象画像から溶融半田8gを検出しやすくなる。
<B2-2.目標フレーム選択部>
目標フレーム選択部54Aは、実施の形態1の目標フレーム選択部54と同様に、第1基準動画および第2基準動画から目標フレームを選択する。ただし、目標フレーム選択部54Aは、実施の形態1の変形例1と同様に、通過必須フレームの指定と、当該通過必須フレームで示される状態を通過すべき対象物(通過必須フレームに対応する対象物)の指定とを受け付ける。
さらに、目標フレーム選択部54Aは、複数の通過必須フレームの指定を受け付けた場合、連続する2つの通過必須フレーム間の時間差を受け付け可能である。ここで、連続する2つの通過必須フレームの先のフレームを「第1関連フレーム」とし、後のフレームを「第2関連フレーム」とする。目標フレーム選択部54Aは、第1関連フレーム、第2関連フレームおよび時間差の指定を受け付ける。
目標フレーム選択部54Aは、第1関連フレーム、第2関連フレームおよび時間差を受け付けた場合、第1関連フレームを目標フレームとして選択した後、第2関連フレームを次の目標フレームとして選択する。すなわち、目標フレーム選択部54Aは、第1関連フレームに対応する対象物について実画像上の状態と当該第1関連フレーム上の状態との偏差が閾値未満になると、第2関連フレームを目標フレームとして選択する。
図23は、通過必須フレーム、関連フレームおよび時間差を指定するための画面の一例を示す図である。制御装置50Aは、図23に示されるような画面を表示部532に表示し、通過必須フレーム、通過必須フレームに対応する対象物、第1関連フレーム、第2関連フレームおよび時間差の指定を受け付ける。作業者は、入力装置534を操作して、通過必須フレーム、通過必須フレームに対応する対象物、第1関連フレーム、第2関連フレームおよび時間差を指定する。
図23に示す例では、教示範囲選択部52は、パッド8fおよび電線8eに対応する教示範囲の最終フレームとして、フレーム83,82をそれぞれ選択している。
目標フレーム選択部54Aは、対象物「半田ごて8c」に対応する通過必須フレームとしてフレーム79,83を受け付けている。目標フレーム選択部54Aは、対象物「半田フィーダ8d」に対応する通過必須フレームとしてフレーム80,82を受け付けている。目標フレーム選択部54Aは、対象物「溶融半田8g」に対応する通過必須フレームとしてフレーム81を受け付けている。
目標フレーム選択部54Aは、連続する2つの通過必須フレームであるフレーム79,80をそれぞれ第1関連フレームおよび第2関連フレームとし、時間差を「3秒」とする指示を受け付けている。さらに、目標フレーム選択部54Aは、連続する2つの通過必須フレームであるフレーム81,82をそれぞれ第1関連フレームおよび第2関連フレームとし、時間差を「0.5秒」とする指示を受け付けている。
<B2-3.制御部>
第1制御部55cは、ロボットコントローラ40cを介してロボット30cを制御し、半田ごて8cの状態を変化させる。
第2制御部55dは、ロボットコントローラ40dを介してロボット30dを制御し、半田フィーダ8dの状態を変化させる。
第3制御部55eは、ロボットコントローラ40eを介してロボット30eを制御し、電線8eの状態を変化させる。
第4制御部55fは、ロボットコントローラ40fを介してロボット30fを制御し、パッド8fの状態を変化させる。
第1制御部55c、第2制御部55d、第3制御部55eおよび第4制御部55fの各々は、実施の形態1と同様に、変化情報生成部56と、変化情報記憶部57と、算出部58と、指令部59と、終了判定部60とを備える(図7参照)。
ただし、各部における対象物、対象ロボットおよび対象ロボットコントローラは、実施の形態1と異なる。対象物は、第1制御部55cでは半田ごて8cであり、第2制御部55dでは半田フィーダ8dであり、第3制御部55eでは電線8eであり、第4制御部55fではパッド8fである。対象ロボットは、第1制御部55cではロボット30cであり、第2制御部55dではロボット30dであり、第3制御部55eではロボット30eであり、第4制御部55fではロボット30fである。対象ロボットコントローラは、第1制御部55cではロボットコントローラ40cであり、第2制御部55dではロボットコントローラ40dであり、第3制御部55eではロボットコントローラ40eであり、第4制御部55fではロボットコントローラ40fである。
さらに、実施の形態2において、算出部58は、実施の形態1の機能に加えて、以下の機能を有する。すなわち、算出部58は、目標フレーム選択部54が第1関連フレーム,第2関連フレームおよび時間差の指定を受け付けている場合、当該時間差を満たすように制御量を調整する。
たとえば、図23に示されるように、第1関連フレーム「フレーム79」と第2関連フレーム「フレーム80」と時間差「3秒」との指定を目標フレーム選択部54が受け付けている場合、算出部58は、以下のように制御量を調整する。算出部58は、第1関連フレームに対応する対象物について、実画像上の状態と当該第1関連フレーム上の状態との偏差が閾値未満となった時刻に指定された時間差だけ経過した時刻を到達予定時刻として算出する。算出部58は、実画像上の第2関連フレームに対応する対象物の状態を第2関連フレーム上の当該対象物の状態に近づけるための各自由度の制御量を算出する。算出部58は、算出した制御量に撮像周期/(到達予定時刻-現時刻)を乗じることにより、制御量を調整する。
<C2.動作例>
実施の形態2に係る制御装置50Aは、実施の形態1と同様に、図12および図15に示すフローチャートに従って、基準動画に沿って対象物の状態を変化させるように対象ロボットを制御する。ただし、実施の形態2に係る目標フレーム選択部54Aは、図24に示すフローチャートに従って、目標フレームの選択処理を行なう。
図24は、実施の形態2における目標フレームの選択処理の流れの一例を示すフローチャートである。図24に示すフローチャートは、図17に示すフローチャートと比較して、ステップS81,S82を含む点でのみ異なる。そのため、以下では、ステップS81,S82について説明する。
ステップS55でYESの場合、処理はステップS81に移る。ステップS81において、目標フレーム選択部54Aは、目標フレームが規定条件で示される第1関連フレームであるか否かを判定する。
目標フレームが第1関連フレームである場合(ステップS81でYES)、ステップS82において、目標フレーム選択部54Aは、当該第1関連フレームに対応する第2関連フレームを目標フレームとして選択する。ステップS82の後、目標フレームの選択処理は終了する。
目標フレームが第1関連フレームである場合(ステップS81でYES)、目標フレームの選択処理はステップS57に移る。
以上の処理により、実画像上の第1対象物の状態と第1目標フレーム上の第1対象物の状態との偏差が閾値未満となる時刻と、実画像上の第2対象物の状態と第2目標フレーム上の第2対象物の状態との偏差が閾値未満となる時刻とが規定条件を満たす。
たとえば、図23に示す例のように、第1関連フレーム「フレーム79」と第2関連フレーム「フレーム80」と時間差「3秒」とが指定された場合には、以下のように対象ロボットが制御される。
実画像上の半田ごて8cの状態とフレーム79上の半田ごて8cの状態との偏差が閾値Tha未満となる時刻をt1とし、実画像上の半田フィーダ8dの状態とフレーム80上の半田フィーダ8dの状態との偏差が閾値Thd未満となる時刻をt2とする。このとき、制御装置50Aは、(t2-t1)が3秒であるという規定条件を満たすように、ロボット30dを制御する。これにより、パッド8fが十分に加熱されてから、半田フィーダ8dを半田ごて8cに接触させることができる。
さらに、図23に示す例のように、第1関連フレーム「フレーム81」と第2関連フレーム「フレーム82」と時間差「0.5秒」とが指定された場合には、以下のように対象ロボットが制御される。
実画像上の溶融半田8gの状態とフレーム81上の溶融半田8gの状態との偏差が閾値Thg未満となる時刻をt3とし、実画像上の半田フィーダ8dの状態とフレーム82上の半田フィーダ8dの状態との偏差が閾値Thd未満となる時刻をt4とする。このとき、制御装置50Aは、(t4-t3)が0.5秒であるという規定条件を満たすように、ロボット30dを制御する。溶融半田8gの状態とは、溶融半田8gの大きさを示す。これにより、実画像上の溶融半田8gの状態とフレーム81上の溶融半田8gの状態との偏差が閾値Thg未満となってから、目標フレームがフレーム82に更新される。そして、溶融半田8gが所望の大きさに達してから、半田フィーダ8dを半田ごて8cから即座に離して、溶融半田8gの大きさを維持させることができる。
また、図23に示す例のように、フレーム82の後のフレーム83が通過必須フレームとして指定されている場合には、以下のように対象ロボットが制御される。
実画像上の半田フィーダ8dの状態とフレーム82上の半田フィーダ8dの状態との偏差が閾値Thd未満となった後に、フレーム83が目標フレームとして選択される。そのため、半田フィーダ8dが半田ごて8cから十分に離れた後、半田ごて8cがパッド8fから遠ざかるように移動される。これにより、半田ごて8cと半田フィーダ8dとの意図しない接触を避けることができる。
<D2-1.変形例1>
上記の説明では、制御システム1Aは、半田ごて8cおよび半田フィーダ8dを用いて、パッド8fに電線8eを半田付けする。しかしながら、制御システム1Aは、別の4つの対象物同士を組み立ててもよい。
図25は、実施の形態2の変形例1に係る制御システムの対象物を示す模式図である。変形例1に係る制御システム1Aは、工業製品の生産ラインなどにおいて、円筒部材10e,10fをビス10c,10dで接合させる。
円筒部材10eにはビス孔11a,11bが形成されている、円筒部材10fにはビス孔12a,12bが形成されている。ビス孔11aとビス孔12aとが重なり合い、ビス孔11bとビス孔12bとが重なり合った状態において、ビス孔11a,12aにビス10cが差し込まれ、ビス孔11b,12bにビス10dが差し込まれる。
ビス10cは、ロボット30cのハンド31c(図20参照)によって把持される。ビス10dは、ロボット30dのハンド31dによって把持される。円筒部材10eは、ロボット30eのハンド31eによって把持される。円筒部材10fは、ロボット30fのステージ31f上に載置される。
撮像装置21,22は、ビス孔11a,12aとビス10cとを撮像可能な位置に配置される。ただし、撮像装置21,22は、ビス孔11b,12bとビス10dとを撮像できない。そのため、変形例1に係る制御システム1Aは、さらに撮像装置23,24を備える。撮像装置23,24は、ビス孔11b,12bとビス10dとを撮像可能な位置に配置される。
本変形例1の制御装置50Aは、撮像装置21~24にそれぞれ対応する4つの基準動画を記憶する。
図26は、実施の形態2の変形例1における基準動画の一例を示す図である。図26には、基準動画のフレーム84~86が示されている。フレーム84は、円筒部材10fが所望の位置および姿勢に到達したときのフレームである。フレーム85は、円筒部材10eのビス孔11aが円筒部材10fのビス孔12aに重なりあったときのフレームである。フレーム86は、ビス10cがビス孔11a,12aに挿入される直前のフレームである。
本変形例1の変化情報生成部56は、4つの基準動画にそれぞれ対応する4つの変化情報セットを生成すればよい。そして、算出部58は、4つの変化情報セットに基づいて、対象ロボットの各自由度の制御量を算出すればよい。
なお、円筒部材10e,10fの各々には、さらに2つのビス孔が設けられてもよい。この場合、円筒部材10e,10fは、4つのビスによって接合される。
図27は、4つの撮像装置の配置例を示す図である。図27に示す例の場合、撮像装置21は、2つのビス10c,10gを撮像可能な位置に配置される。すなわち、撮像装置21の視野範囲21aにビス10c,10gが存在する。撮像装置22は、2つのビス10c,10hを撮像可能な位置に配置される。すなわち、撮像装置22の視野範囲22aにビス10c,10hが存在する。撮像装置23は、2つのビス10d,10gを撮像可能な位置に配置される。すなわち、撮像装置23の視野範囲23aにビス10d,10gが存在する。撮像装置24は、2つのビス10d,10hを撮像可能な位置に配置される。すなわち、撮像装置24の視野範囲24aにビス10d,10hが存在する。
<D2-2.変形例2>
図28は、実施の形態2の変形例2に係る制御システムの対象物を示す模式図である。変形例2に係る制御システム1Aは、工業製品の生産ラインなどにおいて、溶接トーチ13cと溶接棒13dと用いて、2つの円筒部材13e,13f同士を溶接する。
溶接トーチ13cは、ロボット30cのハンド31c(図20参照)によって把持される。溶接棒13dは、ロボット30dのハンド31dによって把持される。円筒部材13eは、ロボット30eのハンド31eによって把持される。円筒部材13fは、ロボット30fのステージ31f上に載置される。
<D2-3.変形例3>
目標フレーム選択部54Aは、第1関連フレームおよび第2関連フレームに対して時間差「指定なし」を受け付けてもよい。この場合、第1関連フレームから第2関連フレームの間にあるフレームは目標フレームとして選択されず、スキップされる。時間差「指定なし」の指定を受け付けた場合、算出部58は、制御量の調整を行なわない。
<D2-4.変形例4>
目標フレーム選択部54Aは、基準動画のうち連続する複数のフレーム群を動作グループとする指定を受け付けてもよい。たとえば、同じ動作を反復して複数回繰り返す場合、作業者は、当該動作に対応するフレーム群を動作グループとして指定する。さらに、作業者は、動作グループの反復回数も合わせて指定する。
目標フレーム選択部54Aは、動作グループに含まれるフレームを反復回数だけ繰り返し目標フレームとして指定すればよい。
<D2-5.その他の変形例>
実施の形態1で説明した<D1-5.その他の変形例>は、実施の形態2にも適用されてもよい。
≪実施の形態3≫
図29を参照して、本開示が適用される場面の一例について説明する。図29は、実施の形態3に係る制御システムの概要を示す模式図である。実施の形態3では、実施の形態1,2と異なり、複数の対象物のうちの1つが定位置に設置され、撮像装置21,22の状態がロボットによって変化される。
実施の形態3に係る制御システム1Bは、工業製品の生産ラインなどにおいて、加工具14h,14iを用いて、大型部材14jの加工対象部分15,16を順に加工する。大型部材14jは、たとえば、大型装置の筐体、自動車ボディーなどである。加工具14h,14iは、たとえばドリル、電動やすりなどである。
制御システム1Bは、図1に示す制御システム1と比較して、ロボット30a,30b、ロボットコントローラ40a,40bおよび制御装置50の代わりに、ロボット30h,30i,30j、ロボットコントローラ40h,40i,40jおよび制御装置50Bを備える点で相違する。
ロボット30hは、加工具14hの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30hは、先端に加工具14hを支持するハンド31hを有し、ハンド31hの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30hは、レール34に沿って矢印ARの方向に移動可能な台座33hを含む。
ロボット30iは、加工具14iの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30iは、先端に加工具14iを支持するハンド31iを有し、ハンド31iの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30iは、レール34に沿って矢印ARの方向に移動可能な台座33hを含む。
ロボット30jは、撮像装置21,22の状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30jは、先端に撮像装置21,22を支持するハンド31jを有し、ハンド31jの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30jは、レール34に沿って矢印ARの方向に移動可能な台座33hを含む。
なお、図29では、台座33h,33i,33jは、共通のレール34に沿って移動するものとした。しかしながら、台座33h,33i,33jごとにレールが設けられており、台座33h,33i,33jの各々は、対応するレールに沿って移動してもよい。
ロボットコントローラ40h,40i,40jは、制御装置50Bから受けた制御指令に従って、ロボット30h,30i,30jの動作制御をそれぞれ行なう。ロボットコントローラ40h,40i,40jは、制御装置50Bからの制御指令に従って、ハンド31h,31i,31jの状態をそれぞれ変化させるとともに、台座33h,33i,33jをそれぞれ移動させる。
制御装置50Bは、実施の形態1と同様に、図4に示されるようなハードウェア構成を有する。そのため、制御装置50Bのハードウェア構成の詳細な説明を省略する。
図30は、実施の形態3に係る制御装置の機能構成を示すブロック図である。図30に示されるように、制御装置50Bは、図5に示す制御装置50と比較して、第1制御部55aおよび第2制御部55bの代わりに第1制御部55h、第2制御部55iおよび第3制御部55jを備える点で相違する。
ただし、基準動画記憶部51は、加工具14h,14iと大型部材14jとの見本を示す第1基準動画および第2基準動画を記憶する。
第1基準動画および第2基準動画は、たとえば、以下のような第1~第3シーンを順に示す。第1シーンは、大型部材14jの加工対象部分15が画像上の定位置にある状態において、加工具14h,14iが加工対象部分15に対して加工するシーンである。第2シーンは、大型部材14jが画像上で移動し、大型部材14jの加工対象部分16が画像上の定位置に移動するシーンである。第3シーンは、大型部材14jの加工対象部分16が画像上の定位置にある状態において、加工具14h,14iが加工対象部分16に対して加工するシーンである。
教示範囲選択部52は、加工具14hと加工具14iと大型部材14jとの各々について教示範囲を選択する。
画像処理部53は、対象画像から加工具14hと加工具14iと大型部材14jとを検出する。なお、大型部材14jのサイズが大きいため、撮像装置21,22の視野には大型部材14jの一部のみが含まれる。そのため、画像処理部53は、大型部材14jの表面に形成された模様を検出する。
第1制御部55hは、ロボットコントローラ40hを介してロボット30hを制御し、加工具14hの状態を変化させる。
第2制御部55iは、ロボットコントローラ40iを介してロボット30iを制御し、加工具14hの状態を変化させる。
第3制御部55jは、ロボットコントローラ40jを介してロボット30jを制御し、撮像装置21,22の状態を変化させる。
第1制御部55h、第2制御部55iおよび第3制御部55jの各々は、実施の形態1と同様に、変化情報生成部56と、変化情報記憶部57と、算出部58と、指令部59と、終了判定部60とを備える(図7参照)。
ただし、各部における対象物、対象ロボットおよび対象ロボットコントローラは、実施の形態1と異なる。対象物は、第1制御部55hでは加工具14hであり、第2制御部55iでは加工具14iであり、第3制御部55jでは大型部材14jである。対象ロボットは、第1制御部55hではロボット30hであり、第2制御部55iではロボット30iであり、第3制御部55jではロボット30jである。対象ロボットコントローラは、第1制御部55hではロボットコントローラ40hであり、第2制御部55iではロボットコントローラ40iであり、第3制御部55jではロボットコントローラ40jである。
第1制御部55hおよび第2制御部55iの変化情報生成部56は、ロボット30jが動作していない状態において、対象ロボットの単位制御量と、撮像装置21によって撮像された実画像上の対象物の状態の変化量との関係を示す第1変化情報を生成する。また、第1制御部55hおよび第2制御部55iの変化情報生成部56は、ロボット30jが動作していない状態において、対象ロボットの単位制御量と、撮像装置22によって撮像された実画像上の対象物の状態の変化量との関係を示す第2変化情報を生成する。
具体的には、第1制御部55hの変化情報生成部56は、大型部材14jの加工対象部分15が画像上の定位置となる撮像装置21,22の状態において、第1変化情報および第2変化情報を生成する。第2制御部55iの変化情報生成部56は、大型部材14jの加工対象部分16が画像上の定位置となる撮像装置21,22の状態において、第1変化情報および第2変化情報を生成する。
大型部材14jの状態は、ロボット30jによって変化されない。しかしながら、ロボット30jによって撮像装置21,22の状態が変化するため、撮像装置21,22の実画像上の大型部材14jの状態は変化する。そのため、第3制御部55jの変化情報生成部56は、ロボット30jの単位制御量と、撮像装置21によって撮像された実画像上の大型部材14jの状態の変化量との関係を示す第1変化情報を生成する。また、第3制御部55jの変化情報生成部56は、ロボット30jの単位制御量と、撮像装置22によって撮像された実画像上の大型部材14jの状態の変化量との関係を示す第2変化情報を生成する。
第3制御部55jにおける算出部58、指令部59および終了判定部60の処理内容は、実施の形態1の第1制御部55aおよび第2制御部55bと同じである。
一方、第1制御部55hおよび第2制御部55iにおける算出部58は、以下の開始条件が満たされたときのみ、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットの制御量を算出する。
開始条件:実画像上の大型部材14jの状態と目標フレーム上の大型部材14jの状態との偏差が閾値Thj未満である。
第1制御部55hおよび第2制御部55iにおける指令部59および終了判定部60の処理内容は、実施の形態1の第1制御部55aおよび第2制御部55bと同じである。
実施の形態3に係る制御装置50Bは、実施の形態1と同様に図12のフローチャートに沿って、第1基準動画および第2基準動画に従って対象物の状態が変化するように対象ロボットを制御する。
さらに、実施の形態3において、第3制御部55jは、実施の形態1と同様に図15に示すフローチャートに従って、図12に示すステップS46のサブルーチンの処理を行なう。しかしながら、第1制御部55hおよび第2制御部55iは、図31に示すフローチャートに従って、図12に示すステップS46のサブルーチンの処理を行なう。
図31は、実施の形態3の第1制御部および第2制御部の処理の流れを示すフローチャートである。図31に示されるように、実施の形態3の第1制御部55hおよび第2制御部55iの処理の流れは、図15に示すフローチャートと比べて、ステップS90を備える点で相違する。そのため、ステップS90についてのみ説明する。
ステップS90において、実画像上の大型部材14jの状態と目標フレーム上の大型部材14jの状態との偏差が閾値Thj未満であるか否かが判定される。偏差が閾値Thj以上である場合(ステップS90でNO)、処理は終了する。偏差が閾値Thj未満である場合(ステップS90でYES)、ステップS61~S65が行われる。
このように、制御装置50Bは、実画像上の大型部材14jの状態と目標フレーム上の大型部材14jの状態との偏差が閾値Thjを超える場合、ロボット30jのみを制御する。制御装置50Bは、実画像上の大型部材14jの状態と目標フレーム上の大型部材14jの状態との偏差が閾値Thj未満である場合、ロボット30h~30jの各々を制御する。
たとえば、第1基準動画および第2基準動画が上記のような第1~第3シーンを順に示す場合は、以下のようにロボット30h~30jが制御される。第1シーンの中から目標フレームが選択されている場合、大型部材14jの加工対象部分15が画像上の定位置になるように撮像装置21,22が移動するまでの間、ロボット30h,30iは停止した状態となる。そして、大型部材14jの加工対象部分15が画像上の定位置になってから、第1制御部55hおよび第2制御部55iは、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットを制御する。その結果、加工具14h,14iは、加工対象部分15に対して加工する。この間も、第3制御部55jは、実画像上の大型部材14jの状態が目標フレーム上の大型部材14jの状態に近づくようにロボット30jを制御する。ただし、第1シーンにおいて、大型部材14jの状態は一定であるため、ロボット30jはほとんど動作せず、撮像装置21,22の状態は略一定となる。
上記の第2シーンの中から目標フレームが選択されている場合、実画像上の大型部材14jの状態が変化するようにロボット30jが制御され、撮像装置21,22が移動する。大型部材14jの加工対象部分16が画像上の定位置になるように撮像装置21,22が移動するまでの間、ロボット30h,30iは停止した状態となる。
大型部材14jの加工対象部分16が画像上の定位置となり、上記の第3シーンの中から目標フレームが選択されると、第1制御部55hおよび第2制御部55iは、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットを制御する。その結果、加工具14h,14iは、加工対象部分16に対して加工する。この間も、第3制御部55jは、実画像上の大型部材14jの状態が目標フレーム上の大型部材14jの状態に近づくようにロボット30jを制御する。ただし、第3シーンにおいて、大型部材14jの状態は一定であるため、ロボット30jはほとんど動作せず、撮像装置21,22の状態は略一定となる。
図32は、実施の形態3の変形例に係る制御システムの一部の概要を示す模式図である。図32に示されるように、ロボット30h,30iは、ロボット30jに含まれる台座33jの上に設置されてもよい。この場合、ロボット30h,30iは、ロボット30jと一体となって移動する。
実施の形態1で説明した<D1-5.その他の変形例>は、実施の形態3にも適用されてもよい。
≪付記≫
以上のように、実施の形態1~3および変形例は以下のような開示を含む。
(構成1)
第1~第Nのロボット(30a~30f,30h~30j)と、
第1~第Nの対象物(2a,2b,6a,6b,8c~8f,10c~10f,13c~13f,14h~14j)を撮像するための撮像装置(21~24)と、
前記第1~第Nのロボット(30a~30f,30h~30j)を制御するための制御装置(50,50A,50B)とを備える制御システム(1,1A,1B)であって、
Nは2以上の整数であり、
第iのロボット(30a~30f,30h~30j)は、第iの対象物の状態を変化させ、
iは1~N-1の整数であり、
前記第Nのロボット(30a~30f,30h~30j)は、前記第Nの対象物および前記撮像装置の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21~24)の他方は、定位置に設置され、
前記制御装置(50,50A,50B)は、前記第1~第Nの対象物の各々について変化情報を取得し、
第jの対象物に対応する前記変化情報は、第jのロボット(30a~30j)の制御量と、前記撮像装置の画像上における前記第jの対象物の状態の変化量との関係を示し、
jは1~Nの整数であり、
前記制御装置(50,50A,50B)は、
前記撮像装置(21~24)によって撮像された実画像を取得する第1処理と、
前記第1~第Nの対象物の見本を示す基準動画から目標フレームを選択する第2処理と、
前記実画像と前記目標フレームとに基づいて前記第1~第Nのロボットの各々を制御する第3処理とを行ない、
前記制御装置(50,50A,50B)は、前記第3処理において、前記第jの対象物に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物の状態に近づけるための前記第jのロボット(30a~30f,30h~30j)の制御量を算出し、算出した制御量に従って前記第jのロボット(30a~30f,30h~30j)を制御する、制御システム(1,1A,1B)。
(構成2)
前記制御装置(50,50A,50B)は、前記実画像上における前記第1~第Nの対象物のうちの少なくとも1つの対象物の状態と前記目標フレーム上の前記少なくとも1つの対象物の状態との偏差が閾値未満となってから、前記目標フレームを更新する、構成1に記載の制御システム(1,1A,1B)。
(構成3)
前記制御装置(50,50A,50B)は、前記基準動画から第1目標フレームを選択した後、前記複数のフレームから第2目標フレームを選択し、
前記制御装置(50,50A,50B)は、前記実画像上の前記第1の対象物の状態と前記第1目標フレーム上の前記第1の対象物の状態との偏差が第1閾値未満となる第1時刻と、前記実画像上の第2の対象物の状態と前記第2目標フレーム上の前記第2の対象物の状態との偏差が第2閾値未満となる第2時刻とが規定条件を満たすように、前記第1のロボット(30a~30f,30h~30j)および第2のロボット(30a~30f,30h~30j)を制御する、構成1に記載の制御システム(1,1A,1B)。
(構成4)
前記撮像装置(21~24)は、前記第1~第Nの対象物とともに第N+1の対象物(8g)を撮像し、
前記基準動画は、前記第N+1の対象物を含み、
前記制御装置(50A)は、前記実画像上の前記第N+1の対象物の状態と前記目標フレーム上の前記第N+1の対象物の状態との偏差が閾値未満となってから、前記目標フレームを更新する、構成1に記載の制御システム(1A)。
(構成5)
前記撮像装置(21~24)は、前記第1~第Nの対象物とともに第N+1の対象物(8g)を撮像し、
前記基準動画は、前記第N+1の対象物を含み、
前記制御装置(50A)は、前記基準動画から第1目標フレームを選択した後、前記複数のフレームから第2目標フレームを選択し、
前記制御装置(50A)は、前記実画像上の前記第N+1の対象物の状態と前記第1目標フレーム上の前記第N+1の対象物の状態との偏差が第1閾値未満となる第1時刻と、前記実画像上の前記第1の対象物の状態と前記第2目標フレーム上の前記第1の対象物の状態との偏差が第2閾値未満となる第2時刻とが規定条件を満たすように、前記第1のロボット(30d)を制御する、構成1に記載の制御システム(1A)。
(構成6)
前記制御装置(50,50A)は、前記目標フレームが選択されてから規定時間経過するまでの間に、前記実画像上の前記第1~第Nの対象物のうちの少なくとも1つの対象物の状態と前記目標フレーム上の前記少なくとも1つの対象物の状態との偏差が閾値未満とならない場合に、前記制御システムに異常が生じていると判定する、構成1に記載の制御システム(1,1A)。
(構成7)
前記第Nのロボット(30j)は、前記撮像装置(21,22)の状態を変化させ、
前記制御装置(50B)は、前記実画像上の前記第Nの対象物(14j)の状態と前記目標フレーム上の前記第Nの対象物の状態との偏差が閾値を超える場合、前記第3処理において、前記第Nのロボット(30j)のみを制御し、前記実画像上の前記第Nの対象物の状態と前記目標フレーム上の前記第Nの対象物の状態との偏差が閾値未満である場合、前記第3処理において、前記第1~第Nのロボット(30h~30j)の各々を制御する、構成1に記載の制御システム(50B)。
(構成8)
前記制御装置(50,50A,50B)は、前記第1処理から前記第3処理を含む一連処理を繰り返し実行し、前記第3処理を行なっている間に次の前記一連処理の前記第1処理を開始する、構成1に記載の制御システム(1,1A,1B)。
(構成9)
前記制御装置(50,50A,50B)は、前記第2処理において、前記基準動画のうち予測ホライズン期間に含まれるフレームを前記目標フレームとして選択し、
前記制御装置(50,50A)は、前記第3処理において、前記基準動画のうち予測ホライズン期間に含まれるフレーム上の前記第jの対象物の状態と、前記予測ホライズン期間における前記撮像装置の画像上の前記第jの対象物の状態との偏差を最小化するように、制御ホライズン期間における前記第jのロボットの制御量を算出する、構成1に記載の制御システム(1,1A,1B)。
(構成10)
前記状態は、物体の位置、姿勢、形状、サイズの少なくとも1つを示す、構成1から8のいずれかに記載の制御システム(1,1A,1B)。
(構成11)
第1~第Nの対象物(2a,2b,6a,6b,8c~8f,10c~10f,13c~13f,14h~14j)を撮像するための撮像装置(21~24)を用いて、第1~第Nのロボット(30a~30f,30h~30j)を制御する制御方法であって、
Nは2以上の整数であり、
第iのロボット(30a~30f,30h~30j)は、第iの対象物の状態を変化させ、
iは1~N-1の整数であり、
前記第Nのロボット(30a~30f,30h~30j)は、前記第Nの対象物および前記撮像装置(21~24)の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21~24)の他方は、定位置に設置され、
前記制御方法は、
前記第1~第Nの対象物の各々について変化情報を取得する第1ステップを備え、
第jの対象物に対応する前記変化情報は、第jのロボットの制御量と、前記撮像装置の画像上における前記第jの対象物の状態の変化量との関係を示し、
jは1~Nの整数であり、
前記制御方法は、
前記撮像装置(21~24)によって撮像された実画像を取得する第2ステップと、
前記第1~第Nの対象物の見本を示す基準動画から目標フレームを選択する第3ステップと、
前記実画像と前記目標フレームとに基づいて前記第1~第Nのロボットの各々を制御する第4ステップとをさらに備え、
前記第4ステップは、前記第jの対象物に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物の状態に近づけるための前記第jのロボット(30a~30f,30h~30j)の制御量を算出し、算出した制御量に従って前記第jのロボット(30a~30f,30h~30j)を制御するステップを含む、制御方法。
(構成12)
第1~第Nの対象物(2a,2b,6a,6b,8c~8f,10c~10f,13c~13f)を撮像するための撮像装置(21~24)を用いて、第1~第Nのロボット(30a~30f,30h~30j)を制御する制御方法をコンピュータに実行させるためのプログラム(550)であって、
Nは2以上の整数であり、
第iのロボット(30a~30f,30h~30j)は、第iの対象物の状態を変化させ、
iは1~N-1の整数であり、
前記第Nのロボット(30a~30f,30h~30j)は、前記第Nの対象物および前記撮像装置(21~24)の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21~24)の他方は、定位置に設置され、
前記制御方法は、
前記第1~第Nの対象物の各々について変化情報を取得する第1ステップを備え、
第jの対象物に対応する前記変化情報は、第jのロボットの制御量と、前記撮像装置の画像上における前記第jの対象物の状態の変化量との関係を示し、
jは1~Nの整数であり、
前記制御方法は、
前記撮像装置(21~24)によって撮像された実画像を取得する第2ステップと、
前記第1~第Nの対象物の見本を示す基準動画から目標フレームを選択する第3ステップと、
前記実画像と前記目標フレームとに基づいて前記第1~第Nのロボットの各々を制御する第4ステップとをさらに備え、
前記第4ステップは、前記第jの対象物に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物の状態に近づけるための前記第jのロボット(30a~30f,30h~30j)の制御量を算出し、算出した制御量に従って前記第jのロボット(30a~30f,30h~30j)を制御するステップを含む、プログラム(550)。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。