以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
<A.適用例>
まず、図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の見本を示す、第1CG動画および第2CG動画を記憶している。第1CG動画および第2CG動画は、オスコネクタ2a、メスコネクタ2b、ロボット30a,30bおよび撮像装置21,22のモデルを仮想空間上でシミュレーションすることにより作成される。第1CG動画および第2CG動画は、仮想空間上で、オスコネクタ2aのモデルとメスコネクタ2bのモデルとが位置および姿勢を変化させながら、互いに接続する様子を示している。オスコネクタ2aおよびメスコネクタ2bのモデルは、オスコネクタ2aおよびメスコネクタ2bの設計データに基づいて作成される。
第1CG動画は、仮想空間上で撮像装置21のモデルの位置を視点として設定することにより作成される。第2CG動画は、仮想空間上で撮像装置22のモデルの位置を視点として設定することにより作成される。
第1CG動画および第2CG動画の各々は、時系列に並んだ複数(以下、M枚(Mは、2以上の整数)とする)のフレームを含む。第1CG動画のk番目(kは1〜Mのいずれかの整数)のフレームと第2CG動画のk番目のフレームとは、仮想空間上のある状態のオスコネクタ2aおよびメスコネクタ2bのモデルを同時に異なる方向から見たときの画像である。
制御装置50は、ロボット30aの制御量と、撮像装置21,22の撮像により得られる画像上のオスコネクタ2aの状態の変化量との関係を示す変化情報を取得する。当該変化情報は、オスコネクタ2a、ロボット30aおよび撮像装置21,22のモデルを仮想空間上でシミュレーションすることにより生成される。
同様に、制御装置50は、ロボット30bの制御量と、撮像装置21,22の撮像により得られる画像上のメスコネクタ2bの状態の変化量との関係を示す変化情報を取得する。当該変化情報は、メスコネクタ2b、ロボット30bおよび撮像装置21,22のモデルを仮想空間上でシミュレーションすることにより生成される。
制御装置50は、以下に示す第1〜第3処理を行なう。制御装置50は、第1〜第3処理を含む一連処理を繰り返し実行する。第1処理は、撮像装置21,22によって撮像された実画像を取得する処理である。
第2処理は、第1CG動画および第2CG動画の各々から目標フレームを選択する処理である。制御装置50は、第1CG動画から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によって撮像された実画像と第1CG動画との一例を示す図である。図3は、撮像装置22によって撮像された実画像と第2CG動画との一例を示す図である。図2には、撮像装置21によって撮像された実画像90a〜93aと、第1CG動画のフレーム70a〜73aとが示されている。図3には、撮像装置22によって撮像された実画像90b〜93bと、第2CG動画のフレーム70b〜73bとが示されている。
実画像90a,90bは、同時刻に撮像された画像である。実画像91a,91bは、実画像90a,90bより後の同時刻に撮像された画像である。実画像92a,92bは、実画像91a,91bより後の同時刻に撮像された画像である。実画像93a,93bは、実画像92a,92bより後の同時刻に撮像された画像である。
フレーム70a,70bの各々は、対応するCG動画における1番目のフレームである。フレーム71a,71bの各々は、対応するCG動画におけるs番目(sは2以上の整数)のフレームである。フレーム72a,72bの各々は、対応するCG動画におけるt番目(tはsより大きい整数)のフレームである。フレーム73a,73bの各々は、対応するCG動画におけるu番目(uはtより大きい整数)のフレームである。
第1CG動画および第2CG動画は、ハンド31aのモデル(以下、「ハンドモデル」という)31a’と、ステージ31bのモデル(以下、「ステージモデル」という)31b’とを含む。さらに、第1CG動画および第2CG動画は、オスコネクタ2aのモデル(以下、「オスコネクタモデル」という)2a’と、メスコネクタ2bのモデル(以下、「メスコネクタモデル」という)2b’とを含む。
第1CG動画および第2CG動画は、ステージモデル31b’上のメスコネクタモデル2b’が所望の状態に移動する様子を示している。さらに、第1CG動画および第2CG動画は、その後、ハンドモデル31a’によって把持されたオスコネクタモデル2a’がメスコネクタモデル2b’の上方から下向きに移動し、メスコネクタモデル2b’と接続する様子を示している。
制御装置50は、ステージ31b上に載置されたメスコネクタ2bと、ハンド31aによって把持されたオスコネクタ2aとを含む実画像90a,90bを撮像装置21,22からそれぞれ取得する。
制御装置50は、第1CG動画および第2CG動画から、メスコネクタモデル2b’が所望の位置および姿勢に移動したときのフレーム71a,71bを目標フレームとしてそれぞれ選択する。
制御装置50は、メスコネクタ2bに対応する変化情報に基づいて、実画像90a,90b上のメスコネクタ2bの状態をフレーム71a,71b上のメスコネクタモデル2b’の状態へそれぞれ近づけるためのステージ31bの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40bに出力する。ロボットコントローラ40bは、制御指令に従ってロボット30bを制御する。これにより、実画像91a,91bに示されるように、メスコネクタ2bの位置および姿勢は、所望の位置および姿勢(フレーム71a,71bで示されるメスコネクタモデル2b’の位置および姿勢)に変化する。
さらに、ロボット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で示されるオスコネクタモデル2a’の位置および姿勢)に変化する。
次に、制御装置50は、オスコネクタモデル2a’とメスコネクタモデル2b’との接続が完了したときのフレーム73a,73bを目標フレームとして選択する。
制御装置50は、オスコネクタ2aに対応する変化情報に基づいて、実画像92a,92b上のオスコネクタ2aの状態をフレーム73a,73b上のオスコネクタモデル2a’の状態に近づけるためのハンド31aの制御量を算出する。そして、制御装置50は、算出した制御量を示す制御指令をロボットコントローラ40aに出力する。ロボットコントローラ40aは、制御指令に従ってロボット30aを制御する。これにより、実画像93a,93bに示されるように、オスコネクタ2aは、メスコネクタ2bに接続完了した位置および姿勢(フレーム73a,73bで示されるオスコネクタモデル2a’の位置および姿勢)まで移動する。
このように、制御装置50は、実画像上のオスコネクタ2aおよびメスコネクタ2bの状態を目標フレーム上のオスコネクタモデル2a’およびメスコネクタモデル2b’の状態へそれぞれ変化させることができる。これにより、オスコネクタ2aおよびメスコネクタ2bの状態は、第1CG動画および第2CG動画に従って連係して変化する。
制御装置50は、撮像装置21,22とロボット30a,30bとの座標系をそれぞれ対応付けるキャリブレーションデータを用いることなく、ロボット30a,30bを制御できる。そのため、作業者は、キャリブレーションを予め行なう必要がない。そのため、ロボット30a,30bによってオスコネクタ2aおよびメスコネクタ2bの状態を所望の状態にそれぞれ変化させるために必要な手間を低減できる。
キャリブレーションデータがある場合、撮像装置21,22によって撮像された画像からオスコネクタ2aおよびメスコネクタ2bの実空間上の位置および姿勢を特定し、当該位置および姿勢に基づいてロボット30a,30bを制御する方法が考えられる。しかしながら、ロボット30a,30bの経年劣化に応じてキャリブレーションデータの精度が低下して、オスコネクタ2aおよびメスコネクタ2bとをうまく接続できない可能性がある。さらに、オスコネクタ2aおよびメスコネクタ2bの位置ずれや個体差に起因して、オスコネクタ2aおよびメスコネクタ2bとをうまく接続できない可能性がある。このような場合であっても、本適用例を用いることにより、オスコネクタ2aおよびメスコネクタ2bとをCG動画通りに接続させることができる。
<B.具体例>
次に、本実施の形態に係る制御システムの具体例について説明する。
<B−1.制御装置のハードウェア構成>
図4は、実施の形態に係る制御システムを構成する制御装置のハードウェア構成を示す模式図である。図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の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼び出して処理を実行するものであってもよい。
さらに、本実施の形態に係る制御プログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係る制御プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
なお、代替的に、制御プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
<B−2.制御装置の機能構成>
図5は、実施の形態に係る制御装置の機能構成を示すブロック図である。図5に示されるように、制御装置50は、動画記憶部51と、設計データ記憶部52と、CG動画生成部53と、教示範囲選択部54と、画像処理部55と、目標フレーム選択部56と、第1制御部57aと、第2制御部57bとを備える。動画記憶部51および設計データ記憶部52は、図4に示すハードディスク520およびRAM512によって構成される。CG動画生成部53と教示範囲選択部54と画像処理部55とは、図4に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B−2−1.動画記憶部>
動画記憶部51は、第1CG動画と第2CG動画とを記憶する。第1CG動画および第2CG動画は、CG動画生成部53によって生成される。
<B−2−2.設計データ記憶部>
設計データ記憶部52は、オスコネクタ2a、メスコネクタ2b、ロボット30a,30b、および撮像装置21,22の設計データを記憶している。設計データは、たとえば、3D−CAD(Computer-Aided Design)データである。
さらに、設計データ記憶部52は、実空間上のロボット30a,30bおよび撮像装置21,22の設置位置を示す配置データも記憶する。設計データ記憶部52は、撮像装置21,22の向きおよび画角も記憶する。
<B−2−3.CG動画生成部>
CG動画生成部53は、第1CG動画および第2CG動画を生成する。CG動画生成部53は、公知のCG技術を用いて、第1CG動画および第2CG動画を生成すればよい。
具体的には、CG動画生成部53は、ロボット30a,30bおよび撮像装置21,22の各モデルが設計データ記憶部52に記憶された配置データに従って配置された仮想空間を構築する。仮想空間には、ハンドモデル31a’およびステージモデル31b’が配置される(図2、図3参照)。仮想空間は、実空間を模擬した空間であり、実空間と同じ座標系で示される。CG動画生成部53は、構築した仮想空間を表示部532に表示させる。
CG動画生成部53は、仮想空間において、ステージモデル31b’上の初期位置に初期姿勢のメスコネクタモデル2b’を配置する。メスコネクタモデル2b’は、メスコネクタ2bの3D−CADデータによって生成される。初期位置および初期姿勢は、入力装置534を用いて操作者によって指定される。操作者は、実空間上において、上流側の装置から搬送されてきたメスコネクタ2bがステージ31b上に載置されるときの、メスコネクタ2bの平均的な位置および姿勢を初期位置および初期姿勢としてそれぞれ指定すればよい。
さらに、CG動画生成部53は、仮想空間において、ハンドモデル31a’に把持されたオスコネクタモデル2a’を初期位置および初期姿勢に配置する。オスコネクタモデル2a’は、オスコネクタ2aの3D−CADデータによって生成される。当該初期位置および初期姿勢は、入力装置534を用いて操作者によって指定される。操作者は、実空間上において、上流側の装置から搬送されてきたオスコネクタ2aをハンド31aが把持すときの、オスコネクタ2aの平均的な位置および姿勢を初期位置および初期姿勢としてそれぞれ指定すればよい。
CG動画生成部53は、移動プログラムに従って、仮想空間上において各モデルを移動させたときの、撮像装置21のモデルを視点とするCG動画を第1CG動画として生成する。同様に、CG動画生成部53は、移動プログラムに従って、仮想空間上において各モデルを移動させたときの、撮像装置22のモデルを視点とするCG動画を第2CG動画として生成する。CG動画は、設計データ記憶部52が記憶する撮像装置21,22の向きおよび画角に基づいて生成される。
移動プログラムは、仮想空間上において、メスコネクタモデル2b’を初期位置および初期姿勢から所望の位置および姿勢に移動させた後、オスコネクタモデル2a’を上方からメスコネクタモデル2b’に向かって移動させてメスコネクタモデル2bと接続させるプログラムである。移動プログラムは、操作者によって指定された、メスコネクタモデル2b’およびオスコネクタモデル2a’の各々の移動経路に従って作成される。
<B−2−4.教示範囲選択部>
教示範囲選択部54は、対象物(ここではオスコネクタ2aおよびメスコネクタ2b)ごとに、第1CG動画および第2CG動画のうちの当該対象物の見本となる教示範囲を選択する。
教示範囲選択部54は、教示範囲の選択指示を促す画面を表示部532に表示する。作業者は、第1CG動画および第2CG動画の各フレームを確認し、入力装置534を操作して、対象物のモデルが所望の動作をしている一連のフレーム群の先頭フレームと最終フレームとを指定する。教示範囲選択部54、指示された先頭フレームから最終フレームまでを教示範囲として選択する。
たとえば、図2に示される第1CG動画に対して、教示範囲選択部54は、1番目のフレーム70aからs番目よりも後フレーム(メスコネクタ2bの一部が欠け始めるフレーム)までをメスコネクタ2bの教示範囲として選択する。教示範囲選択部54は、1番目のフレーム70a(オスコネクタ2aの全体が現れ始めるフレーム)からu番目のフレーム73aまでをオスコネクタ2aの教示範囲として選択する。
同様に、図3に示される第2CG動画に対して、教示範囲選択部54は、1番目のフレーム70bからs番目よりも後フレーム(メスコネクタ2bの一部が欠け始めるフレーム)までをメスコネクタ2bの教示範囲として選択する。教示範囲選択部54は、1番目のフレーム70b(オスコネクタ2aの全体が現れ始めるフレーム)からu番目のフレーム73bまでをオスコネクタ2aの教示範囲として選択する。
<B−2−5.画像処理部>
画像処理部55は、対象画像に対して画像処理を行ない、テンプレートマッチングを用いて、対象画像中から対象物を検出する。テンプレートマッチングの基本処理は、対象物の画像特徴を表すデータであるテンプレートを予め用意しておき、対象画像とテンプレートとの間の画像特徴の一致度を評価することで、対象画像中の対象物の位置および姿勢を検出する処理である。
画像処理部55が画像処理を行なう対象画像は、第1CG動画のフレーム、第2CG動画のフレームおよび撮像装置21,22によって撮像された実画像である。
画像処理部55は、事前準備として、対象物(オスコネクタ2aおよびメスコネクタ2b)ごとのテンプレートを作成する。
図6は、テンプレートの作成方法の一例を示す図である。図6に示されるように、画像処理部55は、メスコネクタ2bの設計データ(3D−CADデータ)に基づいて、様々な方向から見たときのメスコネクタ2bの2Dモデル画像を生成する。画像処理部55は、メスコネクタ2bの各2Dモデル画像から、メスコネクタ2bの複数の特徴点およびそれらの特徴量を抽出する。画像処理部55は、複数の特徴点の各々の画像上の座標と特徴量とをメスコネクタ2bのテンプレートとして作成する。
同様に、画像処理部55は、オスコネクタ2aの設計データ(3D−CADデータ)に基づいて、様々な方向から見たときのオスコネクタ2aの2Dモデル画像を生成する。画像処理部55は、オスコネクタ2aの各2Dモデル画像から、オスコネクタ2aの複数の特徴点およびそれらの特徴量を抽出する。画像処理部55は、複数の特徴点の各々の画像上の座標と特徴量とをオスコネクタ2aのテンプレートとして作成する。
特徴点は、画像に含まれるかどや輪郭などから特徴づけられる点であり、たとえばエッジ点である。特徴量は、たとえば、輝度、輝度勾配方向、量子化勾配方向、HoG(Histogram of Oriented Gradients)、HAAR−like、SIFT(Scale-Invariant Feature Transform)などである。輝度勾配方向とは、特徴点を中心とする局所領域での輝度の勾配の方向(角度)を連続値で表すものであり、量子化勾配方向とは、特徴点を中心とする局所領域での輝度の勾配の方向を離散値で表す(たとえば、8方向を0〜7の1バイトの情報で保持する)ものである。
画像処理部55は、対象画像(第1CG動画のフレーム、第2CG動画のフレームおよび撮像装置21,22によって撮像される実画像)から複数の特徴点およびそれらの特徴量を抽出する。画像処理部55は、抽出された特徴点および特徴量と、対象物のテンプレートと照合することにより、対象画像中の対象物を検出する。
画像処理部55は、対象物(オスコネクタ2aおよびメスコネクタ2b)ごとに、対象画像から抽出した当該対象物の各特徴点の画像上の座標を出力する。
<B−2−6.目標フレーム選択部>
目標フレーム選択部56は、第1CG動画および第2CG動画から目標フレームを選択する。ただし、目標フレーム選択部56は、第1CG動画のk番目のフレームを目標フレームとして選択した場合、第2CG動画のk番目のフレームを目標フレームとして選択する。目標フレームの選択方法の具体例については後述する。
<B−2−7.第1制御部および第2制御部>
第1制御部57aは、ロボットコントローラ40aを介してロボット30aを制御し、オスコネクタ2aの状態を変化させる。
第2制御部57bは、ロボットコントローラ40bを介してロボット30bを制御し、メスコネクタ2bの状態を変化させる。
図7は、実施の形態における第1制御部および第2制御部の機能構成を示すブロック図である。図7に示されるように、第1制御部57aおよび第2制御部57bの各々は、変化情報生成部58と、変化情報記憶部59と、算出部60と、指令部61と、終了判定部62とを備える。変化情報記憶部59は、図4に示すハードディスク520およびRAM512によって構成される。変化情報生成部58と、算出部60と、指令部61と、終了判定部62とは、図4に示すプロセッサ510が制御プログラム550を実行することにより実現される。
<B−2−8.変化情報生成部>
変化情報生成部58は、複数の自由度の各々に対して、対象ロボットの単位制御量と、撮像装置21によって撮像された実画像上の対象物の状態の変化量との関係を示す第1変化情報を生成する。変化情報生成部58は、複数の自由度に対してそれぞれ生成した複数の第1変化情報からなる第1変化情報セット591を変化情報記憶部59に格納する。
さらに、変化情報生成部58は、複数の自由度の各々に対して、対象ロボットの単位制御量と、撮像装置22によって撮像された実画像上の対象物の状態の変化量との関係を示す第2変化情報を生成する。変化情報生成部58は、複数の自由度に対してそれぞれ生成した複数の第2変化情報からなる第2変化情報セット592を変化情報記憶部59に格納する。
対象物は、第1制御部57aではオスコネクタ2aであり、第2制御部57bではメスコネクタ2bである。対象ロボットは、第1制御部57aではロボット30aであり、第2制御部57bではロボット30bである。複数の自由度は、第1制御部57aでは6自由度であり、第2制御部57bでは3自由度である。
本実施の形態では、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量を示す。具体的には、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。
単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量は、対象物の実空間上の状態に依存する。そのため、変化情報生成部58は、第1CG動画の教示範囲の各フレームに対して第1変化情報セット591を生成する。さらに、変化情報生成部58は、第2CG動画の教示範囲の各フレームに対して第2変化情報セット592を生成しする。
変化情報生成部58による第1変化情報セット591および第2変化情報セット592の生成および格納処理は、事前準備として実行される。
図8を参照して、第1制御部57aにおける第1変化情報セット591の生成方法を説明する。なお、第1制御部57aにおける第2変化情報セット592の生成、ならびに、第2制御部57bにおける第1変化情報セット591および第2変化情報セット592の生成方法も同様の方法であるため、これらの生成方法の説明を省略する。
図8は、第1制御部における第1変化情報セット591の生成方法を説明する図である。図8(a)は、第1CG動画のk番目のフレーム84を示す。k番目のフレーム84に対応するオスコネクタモデル2a’の仮想空間上の状態(位置および姿勢)を基準状態とする。
図8(b)は、仮想空間上において基準状態からオスコネクタモデル2a’をY方向の並進自由度に単位制御量だけ並進移動させたときの、撮像装置21のモデルを視点とするCG画像85aを示す。図8(c)は、仮想空間上において基準状態からオスコネクタモデル2a’をX方向の並進自由度に単位制御量だけ並進移動させたときの、撮像装置21のモデルを視点とするCG画像85bを示す。図8(d)は、仮想空間上において基準状態からオスコネクタモデル2a’をZ方向の並進自由度に単位制御量だけ並進移動させたときの、撮像装置21のモデルを視点とするCG画像85cを示す。図8(e)は、仮想空間上において基準状態からオスコネクタモデル2a’をピッチ方向の回転自由度に単位制御量だけ回転移動させたときの、撮像装置21のモデルを視点とするCG画像85dを示す。図8(f)は、仮想空間上において基準状態からオスコネクタモデル2a’をヨー方向の回転自由度に単位制御量だけ回転移動させたときの、撮像装置21のモデルを視点とするCG画像85eを示す。図8(g)は、仮想空間上において基準状態からオスコネクタモデル2a’をロール方向の回転自由度に単位制御量だけ回転移動させたときの、撮像装置21のモデルを視点とするCG画像85fを示す。変化情報生成部58は、仮想空間上においてオスコネクタモデル2a’の位置および姿勢をシミュレートすることにより、CG画像85a〜85fを生成する。
変化情報生成部58は、フレーム84およびCG画像85a〜85fの各々から抽出されたオスコネクタモデル2a’の各特徴点の画像上の座標を、画像処理部55から取得する。
変化情報生成部58は、フレーム84から抽出された特徴点4a’〜4g’の座標を、CG画像85aから抽出された特徴点5a’〜5g’の座標にそれぞれ変換する写像を示す情報を、Y方向の並進自由度に対応する第1変化情報として生成する。
同様に、変化情報生成部58は、特徴点4a’〜4g’の座標をCG画像85bから抽出された特徴点5a’〜5g’の座標に変換する写像を示す情報を、X方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部58は、特徴点4a’〜4g’の座標を画像85cから抽出された特徴点5a’〜5g’の座標に変換する写像を示す情報を、Z方向の並進自由度に対応する第1変化情報として生成する。変化情報生成部58は、特徴点4a’〜4g’の座標を画像85dから抽出された特徴点5a’〜5g’の座標に変換する写像を示す情報を、ピッチ方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部58は、特徴点4a’〜4g’の座標を画像85eから抽出された特徴点5a’〜5g’の座標に変換する写像を示す情報を、ヨー方向の回転自由度に対応する第1変化情報として生成する。変化情報生成部58は、特徴点4a’〜4g’の座標を画像85fから抽出された特徴点5a’〜5g’の座標に変換する写像を示す情報を、ロール方向の回転自由度に対応する第1変化情報として生成する。このようにして、変化情報生成部58は、第1CG動画のk番目のフレーム84に対応する第1変化情報セット591を生成する。
変化情報生成部58は、同様の方法により、第1CG動画のうちの教示範囲の残りのフレームに対応する第1変化情報セット591を生成する。
<B1−2−9.算出部>
算出部60は、撮像装置21,22によって撮像された実画像上の対象物の状態を第1CG動画および第2CG動画の目標フレーム上の対象物のモデルの状態にそれぞれ近づけるための複数の自由度の各々の制御量を算出する。
算出部60は、変化情報記憶部59から、目標フレームに対応する第1変化情報セット591および第2変化情報セット592を取得し、取得した第1変化情報セット591および第2変化情報セット592に基づいて、制御量を算出する。上述したように、第1変化情報および第2変化情報は、単位制御量だけ対象ロボットを制御する前の画像上の対象物を、単位制御量だけ対象ロボットを制御した後の画像上の対象物に変換する写像を示す。そこで、算出部60は、実画像から抽出された対象物の特徴点の画像上の座標と、目標フレームから抽出された対象物のモデルの特徴点の画像上の座標とを画像処理部55から取得する。算出部60は、変化情報に基づいて、実画像上の対象物を目標フレーム上の対象物のモデルに写像するための複数の自由度の各々の制御量を算出する。
図9を参照して、第1制御部57aの算出部60による制御量の算出方法を説明する。なお、第2制御部57bの算出部60による制御量の算出方法も同様の方法であるため、説明を省略する。
図9は、第1制御部の算出部による制御量の算出方法を説明する図である。算出部60は、第1CG動画の目標フレームから抽出されたオスコネクタモデル2a’の特徴点4a’〜4g’の画像上の座標を画像処理部55から取得する。さらに、算出部60は、撮像装置21の撮像により得られた実画像から抽出されたオスコネクタ2aの特徴点4a〜4gの画像上の座標を画像処理部55から取得する。なお、特徴点の数は、7つに限定されるものではない。
算出部60は、各特徴点の差分ベクトル6a〜6gを算出する。差分ベクトル6a〜6gはそれぞれ、特徴点4a〜4gを起点とし、特徴点4a’〜4g’を終点とするベクトルである。算出部60は、差分ベクトル6a〜6gの平均のx成分Δx1およびy成分Δy1を算出する。x成分およびy成分は、画像の座標系で示される。
同様の方法により、算出部60は、撮像装置22の撮像により得られた実画像から抽出された特徴点と第2基準動画の目標フレームから抽出された特徴点との差分ベクトルの平均のx成分Δx2およびy成分Δy2を算出する。
まず、算出部60は、複数の特徴点それぞれの差分ベクトルの平均分がなくなるように、3つの並進自由度の制御量を算出する。具体的には、算出部60は、Δx1,Δy1,Δx2およびΔy2と第1変化情報セット591と第2変化情報セット592とを用いて、ハンド31aのX方向、Y方向およびZ方向の並進自由度の各々の制御量を算出する。
ハンド31aがX方向、Y方向およびZ方向の並進自由度のいずかに並進移動した場合、撮像装置21,22の撮像により得られる画像上において、オスコネクタ2aは一定方向に並進移動する。そのため、第1変化情報セット591における並進自由度に対応する第1変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。同様に、第2変化情報セット592における並進自由度に対応する第2変化情報は、画像上の任意の点を一定方向に並進移動させた点に変換する写像を示す。
ここで、目標フレームに対応する第1変化情報セット591の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変化情報セット592の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)に変換する写像を示すものとする。
このとき、算出部60は、以下の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変化情報は、単位制御量だけ対象ロボットを制御したときの画像上の対象物の状態の変化量を示す。そのため、算出部60は、X方向の並進自由度の制御量を単位制御量のa1倍、Y方向の並進自由度の制御量を単位制御量のa2倍、Z方向の並進自由度の制御量を単位制御量のa3倍とする。これら並進自由度の制御量は、複数の特徴点の差分ベクトルの平均分だけ、実画像上のオスコネクタ2aの状態を目標フレーム上のオスコネクタ2aの状態に近づけるための制御量である。
次に、算出部60は、3つの回転自由度の各々の制御量を算出する。算出部60は、各特徴点の差分ベクトルから上記の平均のx成分(Δx1またはΔx2)およびy成分(Δy1またはΔy2)を差し引く。算出部60は、たとえば山登り法のような探索アルゴリズムを用いて、各特徴点の差分ベクトルの残差が最も0に近くなる3つの回転自由度の制御量を算出する。
具体的には、算出部60は、ピッチ方向、ヨー方向およびロール方向の回転自由度の制御量が0である解を現在の解として探索アルゴリズムを開始する。算出部60は、現在の解の近傍の複数の解の各々に従ってロボット30aを制御したときの、各特徴点の差分ベクトルの残差の変化をシミュレーションする。算出部60は、シミュレーション結果から、現在の解よりも各特徴点の差分ベクトルの残差が0に近い近傍解が存在する場合に、当該近傍解を現在の解に置き換える。算出部60は、この処理を繰り返すことにより、差分ベクトルの残差が極値となる解を探索する。
<B−2−10.指令部>
指令部61は、算出部60によって算出された制御量だけ対象ロボットを移動させるための制御指令を生成し、生成した制御指令を対象ロボットコントローラに出力する。対象ロボットコントローラは、第1制御部57aではロボットコントローラ40aであり、第2制御部57bではロボットコントローラ40bである。
<B−2−11.終了判定部>
終了判定部62は、実画像上の対象物の状態と教示範囲の最終フレーム上の対象物のモデルの状態との偏差を算出し、算出した偏差が予め定められた閾値未満である場合に、対象ロボットの制御を終了すると判定する。終了判定部62は、対象ロボットの制御を終了すると判定すると、終了通知を出力する。
偏差は、たとえば、実画像および最終フレームから抽出された対応する特徴点同士の距離の平均である。
閾値は、対象物の状態に要求される精度に応じて設定される。閾値は、第1制御部57aでは閾値Thaであり、第2制御部57bでは閾値Thbである。閾値Thaと閾値Thbとは同じであってもよいし、異なっていてもよい。
<C.動作例>
<C−1.ロボットの制御>
図10を参照して、第1CG動画および第2CG動画に従って対象物の状態を変化させるように対象ロボットを制御する処理の流れについて説明する。図10は、第1CG動画および第2CG動画に沿って対象物の状態を変化させるように対象ロボットを制御する処理の流れの一例を示すフローチャートである。
まずステップS1において、制御装置50は、全ての制御部(第1制御部57aおよび第2制御部57b)の終了判定部62から終了通知が出力されているか否かを判定する。全ての制御部の終了判定部62から終了通知が出力されている場合(ステップS1でYES)、処理を終了する。
全ての制御部の終了判定部62から終了通知が出力されていない場合(ステップS1でNO)、ステップS2において、制御装置50は、撮像装置21,22によって撮像された実画像を取得する。
ステップS3において、画像処理部55は、テンプレートマッチングにより、実画像から全ての対象物(オスコネクタ2aおよびメスコネクタ2b)を検出し、各対象物の特徴点の座標を抽出する。さらに、画像処理部55は、テンプレートマッチングにより、目標フレームから全ての対象物のモデル(オスコネクタモデル2a’およびメスコネクタモデル2b’)を検出し、各モデルの特徴点の座標を抽出する。
ステップS4において、目標フレーム選択部56は、第1CG動画および第2CG動画から目標フレームを選択する。
ステップS5において、目標フレーム選択部56は、目標フレームを教示範囲内に含む対象物を特定し、特定した対象物を制御する制御部(第1制御部57aおよび第2制御部57bの少なくとも一方)に対して制御指示を出力する。
ステップS6において、制御指示を受けた制御部(第1制御部57aおよび第2制御部57bの少なくとも一方)は、対象ロボットの制御を行う。ステップS6の後、処理はステップS1に戻る。ステップS1でNOである場合、ステップS2〜S6の一連処理が撮像周期毎に繰り返される。また、ステップS1でNOである場合、ステップS2〜S6がステップS6による対象ロボットの制御を行っている間に、次の実画像を取得するステップS2を開始してもよい。これにより、対象ロボットの動作を停止させることなく、最新の実画像に応じて対象ロボットが制御され続ける。その結果、対象物の状態を速く変化させることができる。
<C−2.目標フレームの選択>
図11および図12を参照して、目標フレーム選択部56による目標フレームの選択処理の流れについて説明する。図11は、図10に示すステップS4のサブルーチンの処理の流れを示すフローチャートである。図12は、最近接フレームと目標フレームとの関係を示す図である。
まずステップS11において、目標フレーム選択部56は、第1CG動画および第2CG動画の各フレームから抽出された全ての対象物のモデルの特徴点の座標を画像処理部55から取得する。
ステップS12において、目標フレーム選択部56は、撮像装置21,22によって撮像された実画像から抽出された全ての対象物の特徴点の座標を画像処理部55から取得する。
ステップS13において、目標フレーム選択部56は、1回目の目標フレームの選択が完了しているか否かを判定する。
1回目の目標フレームの選択が完了している場合(ステップS13でYES)、ステップS14において、目標フレーム選択部56は、前回の目標フレームがいずれかの対象物に対応する教示範囲の最終フレームであるか否かを判定する。
前回の目標フレームが最終フレームである場合(ステップS14でYES)、処理はステップS15に移る。ステップS15において、目標フレーム選択部56は、当該最終フレームが属する教示範囲に対応する対象物について、実画像上の対象物の状態と最終フレーム上の対象物のモデルの状態との偏差を算出し、偏差が閾値未満であるか否かを判定する。偏差は、たとえば、実画像および最終フレームにおける対応する特徴点同士の距離の平均である。
偏差が閾値以上である場合(ステップS15でNO)、ステップS16において、目標フレーム選択部56は、前回の目標フレームと同じフレームを目標フレームとして選択する。ステップS16の後、処理は終了する。
偏差が閾値未満である場合(ステップS15でYES)、対象物の状態が最終フレーム上の対象物のモデルの状態に到達したと判定され、処理はステップS17に移る。1回目の目標フレームの選択が完了していない場合(ステップS13でNO)、および前回の目標フレームが最終フレームでない場合(ステップS14でNO)も、処理はステップS17に移る。
ステップS17において、目標フレーム選択部56は、実画像上における全ての対象物の状態と各フレーム上における全ての対象物のモデルの状態との偏差を算出し、最小偏差のフレームを最近接フレームとして特定する。偏差は、たとえば、実画像および各フレームにおける対応する特徴点同士の距離の平均である。
具体的には、目標フレーム選択部56は、撮像装置21によって撮像された実画像上における全ての対象物の状態と第1CG動画のk番目のフレーム上における全ての対象物のモデルの状態との第1偏差を算出する。さらに、目標フレーム選択部56は、撮像装置22によって撮像された実画像上における全ての対象物の状態と第2基準動画のk番目のフレーム上における全ての対象物のモデルの状態との第2偏差を算出する。目標フレーム選択部56は、第1偏差と第2偏差との平均をk番目のフレームに対応する偏差として算出する。
ステップS18において、目標フレーム選択部56は、最近接フレームから所定数だけ後のフレームまでに、いずれかの教示範囲の最終フレームがあるか否かを判定する。
最終フレームがある場合(ステップS18でYES)、ステップS19において、目標フレーム選択部56は、当該最終フレームを目標フレームとして選択する。なお、最近接フレームから所定数だけ後のフレームまでに複数の最終フレームがある場合、目標フレーム選択部56は、当該複数の最終フレームのうち最もフレーム番号の小さい最終フレームを選択する。
最終フレームがない場合(ステップS18でNO)、ステップS20において、目標フレーム選択部56は、最近接フレームから所定数だけ後のフレームを目標フレームとして選択する。ステップS20の後、目標フレームの選択処理は終了する。
<C−3.制御部の処理>
図13を参照して、図10のステップS6のサブルーチンの処理について説明する。図13は、図10に示すステップS6のサブルーチンの処理の流れを示すフローチャートである。
まずステップS21において、終了判定部62は、目標フレームが教示範囲の最終フレームであるか否かを判定する。
目標フレームが最終フレームである場合(ステップS21でYES)、ステップS22において、終了判定部62は、実画像上における対象物の状態と最終フレーム上における対象物のモデルの状態との偏差が閾値未満か否かを判定する。
偏差が閾値未満である場合(ステップS22でYES)、ステップS23において、終了判定部62は、終了通知を出力する。ステップS23の後、処理は終了する。
目標フレームが最終フレームではない場合(ステップS21でNO)、および、偏差が閾値以上である場合(ステップS22でNO)、処理はステップS24に移る。
ステップS24において、算出部60は、目標フレームに対応する第1変化情報セット591および第2変化情報セット592に基づいて、実画像上の対象物の状態を目標フレーム上の対象物のモデルの状態に近づけるための複数の自由度の各々の制御量を算出する。
ステップS25において、指令部61は、算出された制御量を示す制御指令を生成し、対象ロボットコントローラに出力する。ステップS25の後、処理は終了する。
第1制御部57aおよび第2制御部57bはそれぞれ、図13に示す流れに従って、対象ロボットを制御する。オスコネクタ2aおよびメスコネクタ2bの教示範囲に目標フレームが含まれる場合、実画像上のオスコネクタ2aの状態が目標フレーム上のオスコネクタモデル2a’の状態に近づくようにロボット30aが制御される。さらに、実画像上のメスコネクタ2bの状態が目標フレーム上のメスコネクタモデル2b’の状態に近づくようにロボット30bが制御される。これにより、オスコネクタ2aおよびメスコネクタ2bの状態は、目標フレームに従って連係して変化する。
<C−4.作用・効果>
以上のように、制御システム1は、ロボット30a,30bと、撮像装置21,22と、ロボット30a,30bを制御する制御装置50とを備える。ロボット30a,30bは、オスコネクタ2aおよびメスコネクタ2bを支持して、オスコネクタ2aおよびメスコネクタ2bの状態をそれぞれ変化させる。撮像装置21,21は、ロボット30a,30bと異なる固定位置に設置され、ロボット30a,30bによってそれぞれ支持されたオスコネクタ2aおよびメスコネクタ2bを撮像する。
制御装置50は、オスコネクタ2aおよびメスコネクタ2bのモデルを示す第1CG動画および第2CG動画を記憶している。
制御装置50は、オスコネクタ2aおよびメスコネクタ2bの各々について変化情報を取得する。オスコネクタ2aに対応する変化情報は、ロボット30aの制御量と、撮像装置21,22の画像上におけるオスコネクタ2aの状態の変化量との関係を示す。メスコネクタ2bに対応する変化情報は、ロボット30bの制御量と、撮像装置21,22の画像上におけるメスコネクタ2bの状態の変化量との関係を示す。
制御装置50は、撮像装置21,22によって撮像された実画像を取得する第1処理と、第1CG動画および第2CG動画から目標フレームを選択する第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の状態を速く変化させることができる。
<D.変形例>
<D−1.変形例1>
図14は、メスコネクタの設計データと、当該設計データに従って製造されたメスコネクタとの寸法を示す図である。一般に、製造条件によって、製造品の寸法が設計データからずれ、製造誤差が発生することがある。図14に示す例では、挿入孔7の位置が切欠き部8から遠ざかる方向にずれる傾向の製造誤差(系統誤差)が示される。
上記の説明では、実画像上のメスコネクタ2bの状態が目標フレーム上のメスコネクタモデル2b’の状態に近づくように、ロボット30bが制御される。目標フレームは、設計データに基づいて生成された第1GC動画および第2CG動画から選択される。そのため、図14に示されるような製造誤差が生じている場合、第1CG動画および第2CG動画に従ってオスコネクタ2aおよびメスコネクタ2bの状態を変化させると、オスコネクタ2aのピン(図示せず)がメスコネクタ2bの挿入孔7に挿入できない可能性がある。
変形例1に係る制御システムでは、算出部60によって算出された制御量を製造誤差に応じたオフセット量だけ調整する。指令部61は、調整後の制御量だけ対象ロボットを移動させるための制御指令を生成し、生成した制御指令を対象ロボットコントローラに出力する。これにより、製造誤差が生じていたとしても、オスコネクタ2aのピンをメスコネクタ2bの挿入孔7に挿入させることができる。
図15は、変形例1に係る制御システムの概要を示す模式図である。図15に示されるように、変形例1に係る制御システム1Aは、図1に示す制御システム1と比較して、力覚センサ32をさらに備えるとともに、制御装置50の代わりに制御装置50Aを備える点で相違する。
力覚センサ32は、オスコネクタ2aおよびメスコネクタ2bの一方が他方から受ける力を検出する。図15に示す例では、力覚センサ32は、オスコネクタ2aがメスコネクタ2bから受ける力を検出するように、ロボット30aのアームとハンド31aとの間に取り付けられている。
制御装置50Aは、制御装置50と同様に、図4に示されるようなハードウェア構成を有する。そのため、制御装置50Aのハードウェア構成の詳細な説明を省略する。
図16は、変形例1に係る制御装置の機能構成を示すブロック図である。図16に示されるように、制御装置50Aは、図5に示す制御装置50と比較して、第1制御部57aおよび第2制御部57bの代わりに第1制御部157aおよび第2制御部157bをそれぞれ備え、かつ、オフセット量決定部63をさらに備える点で相違する。
オフセット量決定部63は、第1制御部157aおよび第2制御部157bの少なくとも一方の算出部60によって算出される制御量を調整するためのオフセット量(「調整量」ともいう)を決定する。変形例1では、オフセット量決定部63は、第2制御部57bの算出部60によって算出される制御量を調整するためのオフセット量を決定し、決定したオフセット量を第2制御部157bに出力する。
オフセット量決定部63は、力覚センサ32によって検知される力が極小となるメスコネクタ2bの状態を探索し、探索されたメスコネクタ2bの状態に基づいてオフセット量を決定する。力覚センサ32によって検知される力が極小であるとき、オスコネクタ2aとメスコネクタ2bとが接合する際の抵抗が極小となる。このとき、オスコネクタ2aのピンとメスコネクタ2bの挿入孔7との相対的な位置ずれも極小となる。
オフセット量決定部63は、第2制御部57bの制御対象であるロボット30bにおける3自由度の各々のオフセット量を決定する。具体的には、オフセット量決定部63は、ステージ31bのX方向の並進自由度のオフセット量ΔXと、ステージ31bのY方向の並進自由度のオフセット量ΔYと、ステージ31bの回転自由度のオフセット量Δθとを決定する。
図17は、変形例1における第1制御部および第2制御部の機能構成を示すブロック図である。図17に示されるように、第1制御部157aおよび第2制御部157bの各々は、図7に示す第1制御部57aおよび第2制御部57bと比較して、指令部61の代わりに指令部161を備える点で相違する。
指令部161は、オフセット量決定部63からオフセット量を受けた場合、算出部60によって算出された制御量に対してオフセット量を加算することにより、当該制御量を調整する。指令部161は、調整後の制御量だけロボット30bを移動させるための制御指令を生成し、生成した制御指令をロボットコントローラ40bに出力する。なお、指令部161は、オフセット量決定部63からオフセット量を受けない場合、上記の指令部61と同様に、算出部60によって算出された制御量だけロボット30bを移動させるための制御指令を生成し、生成した制御指令をロボットコントローラ40bに出力する。
図18を参照して、変形例1におけるオフセット量の決定処理の流れについて説明する。図18は、変形例1におけるオフセット量の決定処理の流れの一例を示すフローチャートである。
図18に示すオフセット量の決定処理は、オスコネクタ2aおよびメスコネクタ2bの少なくとも一方の製造誤差が変動しやすいタイミング(たとえば、オスコネクタ2aおよびメスコネクタ2bの少なくとも一方のロットが変更されたタイミング)ごとに行なわれる。
まずステップS31において、オフセット量決定部63は、(ΔX,ΔY,Δθ)=(0,0,0)を、オフセット量の現在の解として設定し、設定した現在の解を第2制御部157bに出力する。
ステップS32において、制御装置50Aは、図10に示す一連のステップS1〜S6をステップS1でYESとなるまで繰り返し行なう。このとき、(ΔX,ΔY,Δθ)=(0,0,0)に従ったロボット制御が行なわれる。すなわち、ステップS6のサブルーチンを示す図13のステップS25において、第1制御部157aおよび第2制御部157bの指令部161は、算出部60によって算出された制御量だけロボット30bを移動させるための制御指令を生成し、生成した制御指令をロボットコントローラ40bに出力する。
ステップS33において、オフセット量決定部63は、ステップS32の処理中における力覚センサ32の検出値を取得する。当該検出値は、たとえば、ステップS32の処理中に力覚センサ32によって検出された力の平均値または最大値である。
ステップS34において、オフセット量決定部63は、現在の解の近傍解の1つを選択し、選択した近傍解を第2制御部157bに出力する。(ΔX,ΔY,Δθ)=(X0,Y0,θ0)を現在の解とするとき、(ΔX,ΔY,Δθ)=(X0+a1,Y0,θ0),(X0−a1,Y0,θ0),(X0,Y0+a1,θ0),(X0,Y0−a1,θ0),(X0,Y0,θ0+a2),(X0,Y0,θ0−a2)の6通りを近傍解とする。a1は、ステージ31bの並進自由度の単位制御量を示す。a2は、ステージ31bの回転自由度の単位制御量を示す。
ステップS35において、制御装置50Aは、図10に示す一連のステップS1〜S6をステップS1でYESとなるまで繰り返し行なう。このとき、ステップS34で選択された近傍解に従ってロボット制御される。すなわち、第2制御部157bの指令部161は、算出部60によって算出された制御量に近傍解で示されるオフセット量だけ加算することにより、当該制御量を調整する。第1制御部157aの指令部161は、オフセット量を受けていないため、算出部60によって算出された制御量の調整を行なわない。
ステップS36において、オフセット量決定部63は、ステップS35の処理中における力覚センサ32の検出値を取得する。
ステップS37において、オフセット量決定部63は、未選択の近傍解があるか否かを判定する。未選択の近傍解がある場合(ステップS37でYES)、オフセット量の決定処理は、ステップS34に戻る。これにより、未選択の近傍解についても力覚センサ32の検出値を取得できる。
未選択の近傍解がない場合(ステップS37でNO)、ステップS38において、オフセット量決定部63は、現在の解に対応する検出値が極小であるか否かを判定する。具体的には、オフセット量決定部63は、現在の解に対応する検出値がステップS36で取得した全ての検出値(全ての近傍解の各々に対応する検出値)よりも小さい場合に、現在の解に対応する検出値が極小であると判定する。
現在の解に対応する検出値が極小でない場合(ステップS38でNO)、ステップS39において、オフセット量決定部63は、検出値が最小である近傍解を現在の解に設定する。ステップS39の後、オフセット量の決定処理はステップS34に戻る。
現在の解に対応する検出値が極小である場合(ステップS38でYES)、ステップS40において、オフセット量決定部63は、オフセット量の現在の解を維持し、当該現在の解を第2制御部157bに出力する。ステップS40の後、オフセット量の決定処理は終了する。
なお、オフセット量決定部63は、オスコネクタ2aおよびメスコネクタ2bの異なる複数のペアの各々に対して、ステップS31〜S40を実行してオフセット量を求め、それらの平均値を算出してもよい。
図18に示すフローチャートによれば、ステップS32およびステップS33において、第1CG動画および第2CG動画で示されるメスコネクタモデル2b’の状態にメスコネクタ2bの状態を合わせたときの、力覚センサ32の検出値が取得される。その後、ステップS34〜S39が繰り返されることにより、力覚センサ32の検出値が極小となるメスコネクタ2bの状態が探索される。そして、メスコネクタモデル2b’の状態から、探索されたメスコネクタ2bの状態への変化量が最終的なオフセット量として維持される。
オスコネクタ2aおよびメスコネクタ2bが設計データ通りに製造されている場合、第1CG動画および第2CG動画で示されるメスコネクタモデル2b’の状態にメスコネクタ2bの状態を合わせることにより、力覚センサ32の検出値が最小となる。
しかしながら、オスコネクタ2aおよびメスコネクタ2bの少なくとも一方に製造誤差が生じた場合、当該製造誤差に応じて、オスコネクタ2aのピンとメスコネクタ2bの挿入孔7との相対位置にずれが生じ得る。その結果、オスコネクタ2aとメスコネクタ2bとの間に意図しない抵抗力(摩擦力を含む)が発生し、力覚センサ32の検出値が大きくなる。
上記のように、ステップS40で維持されるオフセット量は、メスコネクタモデル2b’の状態から、力覚センサ32の検出値が極小となるメスコネクタ2bの状態への変化量である。当該変化量は、オスコネクタ2aのピンとメスコネクタ2bの挿入孔7との相対的な位置ずれ量に相当する。当該位置ずれ量は、オスコネクタ2aおよびメスコネクタ2bの少なくとも一方の製造誤差に応じた量である。すなわち、力覚センサ32の検出値が極小となるオフセット量は、オスコネクタ2aおよびメスコネクタ2bの少なくとも一方の製造誤差に応じた量であり、オスコネクタ2aのピンとメスコネクタ2bの挿入孔7との相対的な位置ずれ量を示す。
変形例1によれば、製造誤差が生じていたとしても、オスコネクタ2aのピンをメスコネクタ2bの挿入孔7に挿入させることができる。
なお、上記の説明では、オフセット量決定部63は、第2制御部57bの算出部60によって算出される制御量を調整するためのオフセット量を決定したが、第1制御部57aの算出部60によって算出される制御量を調整するためのオフセット量を決定してもよい。
<D−2.変形例2>
上記の変形例1において、オフセット量決定部63は、入力装置534(図4参照)からオフセット量を取得してもよい。操作者は、オスコネクタ2aおよびメスコネクタ2bの設計データに対する系統誤差を計測し、当該系統誤差に応じたオフセット量を入力装置534に入力すればよい。
なお、操作者は、第1制御部57aの算出部60によって算出される制御量を調整するためのオフセット量と、第2制御部57bの算出部60によって算出される制御量を調整するためのオフセット量との少なくとも一方を入力装置534に入力する。
たとえば、操作者は、オスコネクタ2aの系統誤差に基づいて、第1制御部57aの算出部60によって算出される制御量を調整するためのオフセット量を入力する。さらに、操作者は、メスコネクタ2bの系統誤差に基づいて、第2制御部57bの算出部60によって算出される制御量を調整するためのオフセット量を入力する。
もしくは、操作者は、オスコネクタ2aおよびメスコネクタ2bの系統誤差からオスコネクタ2aのピンとメスコネクタ2bの挿入孔7との相対的な位置ずれ量を求める。操作者は、当該位置ずれ量に応じて、第1制御部57aまたは第2制御部57bの算出部60によって算出される制御量を調整するためのオフセット量を入力してもよい。
<D−3.変形例3>
変形例3に係る制御システムは、変形例1に係る制御システム1Aと比較して、制御装置50Aの代わりに、図19に示されるような機能構成を有する制御装置50Bを備える点で相違する。変形例3に係る制御装置50Bは、制御装置50と同様に、図4に示されるようなハードウェア構成を有する。そのため、制御装置50Bのハードウェア構成の詳細な説明を省略する。
図19は、変形例3に係る制御装置の機能構成を示すブロック図である。図19に示されるように、制御装置50Bは、図16に示す制御装置50Aと比較して、教示範囲選択部54、画像処理部55、目標フレーム選択部56、第1制御部157aおよび第2制御部157bの代わりに教示範囲選択部254、画像処理部255、目標フレーム選択部256、第1制御部257aおよび第2制御部257bを備え、さらに基準動画生成部64を備える点で相違する。
制御装置50Bは、第1CG動画および第2CG動画を用いてロボット30a,30bを制御する第1モードと、第1CG動画および第2CG動画の代わりに第1基準動画および第2基準動画を用いてロボット30a,30bを制御する第2モードとを有する。
制御装置50Bは、第1モードにおいて、図18に示すフローチャートで示される処理を行ない、力覚センサ32の検出値が極小となるオフセット量の解を求める。
基準動画生成部64は、図18に示すステップS33およびステップS35の各々の際に撮像装置21から撮像周期ごとに取得した複数の画像からなる画像セットを記憶しておく。基準動画生成部64は、力覚センサ32の検出値が極小となるオフセット量の解に対応する画像セットを読み出し、読み出した画像セットに含まれる複数の画像の各々をフレームとする第1基準動画を生成する。
同様に、基準動画生成部64は、ステップS33およびステップS35の各々の際に撮像装置22から撮像周期ごとに取得した複数の画像からなる画像セットを記憶しておく。基準動画生成部64は、力覚センサ32の検出値が極小となるオフセット量の解に対応する画像セットを読み出し、読み出した画像セットに含まれる複数の画像の各々をフレームとする第2基準動画を生成する。
基準動画生成部64は、生成した第1基準動画および第2基準動画を動画記憶部51に格納する。第1基準動画のk番目(kは1〜Qのいずれかの整数)のフレームと第2基準動画のk番目のフレームとは、同じ撮像周期に撮像装置21,22によってそれぞれ撮像された画像である。
制御装置50Bは、動画記憶部51に第1基準動画および第2基準動画が格納されると、第2モードに従ってロボット30a,30bを制御する。
教示範囲選択部254は、図5および図16に示す教示範囲選択部54の処理に加えて、対象物(オスコネクタ2aおよびメスコネクタ2b)ごとに、第1基準動画および第2基準動画から教示範囲を選択する。教示範囲選択部254は、第1CG動画および第2CG動画から教示範囲を選択する方法と同じ方法によって、第1基準動画および第2基準動画から対象物ごとの教示範囲を選択すればよい。
画像処理部255は、図5および図16に示す画像処理部55と同様に、対象画像に対して画像処理を行ない、テンプレートマッチングを用いて、対象画像中から対象物を検出する。ただし、画像処理部255が画像処理を行なう対象画像には、第1CG動画のフレーム、第2CG動画のフレームおよび撮像装置21,22によって撮像された実画像の他に、第1基準動画のフレームおよび第2基準動画のフレームが含まれる。
目標フレーム選択部256は、第1モードにおいて、図5および図16に示す目標フレーム選択部56と同様に、第1CG動画および第2CG動画の各々から目標フレームを選択する。
目標フレーム選択部256は、第2モードにおいて、動画記憶部51に格納された第1基準動画および第2基準動画の各々から目標フレームを選択する。目標フレーム選択部256は、図11に示すフローに従って、第1基準動画および第2基準動画の各々から目標フレームを選択すればよい。ただし、目標フレーム選択部256は、図11のステップS11において、第1基準動画および第2基準動画の各フレームから抽出された全ての対象物の特徴点の座標を画像処理部255から取得する。
図20は、変形例3における第1制御部および第2制御部の機能構成を示すブロック図である。図20に示されるように、第1制御部257aおよび第2制御部157bの各々は、図17に示す第1制御部157aおよび第2制御部157bと比較して、変化情報生成部58、算出部60および指令部161の代わりに変化情報生成部258、算出部260および指令部261を備える点で相違する。
変化情報生成部258は、図7に示す変化情報生成部58と同様に、第1CG動画の教示範囲の各フレームに対して第1変化情報セット591を生成し、第2CG動画の教示範囲の各フレームに対して第2変化情報セット592を生成する。
さらに、変化情報生成部258は、第1基準動画の教示範囲の各フレームに対して第3変化情報セット593を生成し、第2基準動画の教示範囲の各フレームに対して第4変化情報セット594を生成する。
変化情報生成部258は、第1基準動画および第2基準動画の各フレームから抽出された対象物(オスコネクタ2aまたはメスコネクタ2b)の特徴点の座標を画像処理部255から取得する。変化情報生成部258は、第1CG動画および第2CG動画の各フレームから抽出された対象物のモデル(オスコネクタモデル2a’およびメスコネクタモデル2b’)の特徴点の座標を画像処理部255から取得する。
変化情報生成部258は、第1基準動画のi番目のフレームについて、当該i番目のフレームおよび第1CG動画のj番目(jは1〜Mの整数)のフレームから抽出された対応する特徴点同士の偏差(たとえば距離の平均)を算出する。変化情報生成部258は、偏差が最小となるjを特定する。変化情報生成部258は、第1基準動画のi番目のフレームに対応する第3変化情報セット593を、第1CG動画における特定したj番目のフレームに対応する第1変化情報セット591と同一の内容とする。
同様に、変化情報生成部258は、第2基準動画のi番目のフレームについて、当該i番目のフレームおよび第2CG動画のj番目(jは1〜Mの整数)のフレームから抽出された対応する特徴点同士の偏差(たとえば距離の平均)を算出する。変化情報生成部258は、偏差が最小となるjを特定する。変化情報生成部258は、第2基準動画のi番目のフレームに対応する第4変化情報セット594を、第2CG動画における特定したj番目のフレームに対応する第2変化情報セット592と同一の内容とする。
算出部260は、図7に示す算出部60と同様の処理を行なうことにより、対象ロボットの各自由度の制御量を算出する。算出部260は、第1モードにおいて、目標フレームに対応する第1変化情報セット591および第2変化情報セット592を変化情報記憶部59から読み出し、読み出した第1変化情報セット591および第2変化情報セット592に基づいて制御量を算出する。算出部260は、第2モードにおいて、目標フレームに対応する第3変化情報セット593および第4変化情報セット594を変化情報記憶部59から読み出し、読み出した第3変化情報セット593および第4変化情報セット594に基づいて制御量を算出する。
指令部261は、第1モードにおいて、図17に示す指令部161と同様の処理を行なうことにより、対象ロボットコントローラに制御指令を出力する。すなわち、指令部261は、オフセット量決定部63からオフセット量を受けている場合、当該オフセット量を用いて制御量を調整し、調整後の制御量だけ対象ロボットを移動させる制御指令を生成する。
指令部261は、第2モードにおいて、図7に示す指令部61と同様の処理を行なうことにより、対象ロボットコントローラに制御指令を出力する。すなわち、指令部261は、算出部260から受けた制御量だけ対象ロボットを移動させる制御指令を生成する。
変形例3によれば、制御装置50Bは、第1モードにおいて、算出部260によって算出された制御量をオフセット量だけ調整し、力覚センサ32によって検出された力が極小となるオフセット量を探索する。制御装置50Bは、探索されたオフセット量だけ制御量を調整したときに撮像装置21,22によって撮像された画像を第1,第2基準動画としてそれぞれ取得する。
その後、制御装置50Bは、第2モードに従った処理を行なう。すなわち、制御装置50Bは、第1CG動画および第2CG動画の代わりに第1基準動画および第2基準動画から目標フレームを選択する処理を行なう。
第1基準動画および第2基準動画は、力覚センサ32によって検出された力が極小となるときに撮像された画像である。そのため、変形例3によっても、制御装置50Bが第2モードに従った処理を行なうことにより、製造誤差が生じていたとしても、オスコネクタ2aのピンをメスコネクタ2bの挿入孔7に挿入させることができる。
<D−4.変形例4>
上記の説明では、制御システム1は、オスコネクタ2aとメスコネクタ2bとの接続(組み立て)を行なう。しかしながら、制御システム1は、別の2つの対象物同士を組み立ててもよい。
図21は、変形例4に係る制御システムの対象物を示す模式図である。変形例4に係る制御システムは、工業製品の生産ラインなどにおいて、ボルト9aを、板状部品9bに形成されたボルト孔13にねじ込む。
ボルト9aは、ロボット30aのハンド31a(図1参照)によって把持される。板状部品9bは、ロボット30bのステージ31b上に載置される。
<D−5.変形例5>
制御システムに備えられるロボットの個数は、2個に限定されるものではなく、3個以上であってもよい。3個以上の対象物の状態をCG動画に従って連係して変化させる場合には、制御システムは、当該3個以上の対象物の状態をそれぞれ変化させるための3個以上のロボットを備えればよい。この場合、CG動画は、3個以上の対象物のモデルの状態の変化を示す。
図22は、変形例5に係る制御システムの対象物を示す模式図である。変形例5に係る制御システムは、工業製品の生産ラインなどにおいて、円筒部材10e,10fをビス10c,10dで接合させる。
円筒部材10eにはビス孔11a,11bが形成されている、円筒部材10fにはビス孔12a,12bが形成されている。ビス孔11aとビス孔12aとが重なり合い、ビス孔11bとビス孔12bとが重なり合った状態において、ビス孔11a,12aにビス10cが差し込まれ、ビス孔11b,12bにビス10dが差し込まれる。
ビス10cは、第1のロボットのハンドによって把持される。ビス10dは、第2のロボットのハンドによって把持される。円筒部材10eは、第3のロボットのハンドによって把持される。円筒部材10fは、第4のロボットのステージ上に載置される。
撮像装置21,22は、ビス孔11a,12aとビス10cとを撮像可能な位置に配置される。ただし、撮像装置21,22は、ビス孔11b,12bとビス10dとを撮像できない。そのため、変形例5に係る制御システムは、さらに撮像装置23,24を備える。撮像装置23,24は、ビス孔11b,12bとビス10dとを撮像可能な位置に配置される。
変形例5の制御装置は、撮像装置21〜24にそれぞれ対応する4つのCG動画を記憶する。
変形例5の制御装置は、第1〜第4のロボットにそれぞれ対応する第1〜第4制御部を備えていればよい。第1〜第4制御部の各々は、図7と同様の構成を有する。第1〜第4制御部の各々の変化情報生成部58は、4つのCG動画にそれぞれ対応する4つの変化情報セットを生成すればよい。そして、算出部60は、4つの変化情報セットに基づいて、対象ロボットの各自由度の制御量を算出すればよい。これにより、4つの対象物(円筒部材10e,10fおよびビス10c,10d)の状態をCG動画に従って連係して変化させることができる。
<D−6.変形例6>
図23を参照して、変形例6に係る制御システムについて説明する。図23は、変形例6に係る制御システムの概要を示す模式図である。変形例6では、複数の対象物のうちの1つが定位置に設置され、撮像装置21,22の状態がロボットによって変化される。
変形例6に係る制御システム1Cは、工業製品の生産ラインなどにおいて、加工具14c,14dを用いて、大型部材14eの加工対象部分15,16を順に加工する。大型部材14jは、たとえば、大型装置の筐体、自動車ボディーなどである。加工具14h,14iは、たとえばドリル、電動やすりなどである。
制御システム1Cは、図1に示す制御システム1と比較して、ロボット30a,30b、ロボットコントローラ40a,40bおよび制御装置50の代わりに、ロボット30c,30d,30e、ロボットコントローラ40c,40d,40eおよび制御装置50Cを備える点で相違する。
ロボット30cは、加工具14cの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30cは、先端に加工具14cを支持するハンド31cを有し、ハンド31cの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30cは、レール34に沿って矢印ARの方向に移動可能な台座33cを含む。
ロボット30dは、加工具14dの状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30dは、先端に加工具14dを支持するハンド31dを有し、ハンド31dの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30dは、レール34に沿って矢印ARの方向に移動可能な台座33dを含む。
ロボット30eは、撮像装置21,22の状態(ここでは位置および姿勢)を変化させるための機構であり、たとえば垂直多関節ロボットである。ロボット30eは、先端に撮像装置21,22を支持するハンド31eを有し、ハンド31eの位置および姿勢を複数の自由度で変化させる。さらに、ロボット30eは、レール34に沿って矢印ARの方向に移動可能な台座33eを含む。
なお、図23では、台座33c,33d,33eは、共通のレール34に沿って移動するものとした。しかしながら、台座33c,33d,33eごとにレールが設けられており、台座33c,33d,33eの各々は、対応するレールに沿って移動してもよい。
ロボットコントローラ40c、40d,40eは、制御装置50Cから受けた制御指令に従って、ロボット30c,30d,30eの動作制御をそれぞれ行なう。ロボットコントローラ40c、40d,40eは、制御装置50Bからの制御指令に従って、ハンド31c,31d,31eの状態をそれぞれ変化させるとともに、台座33c,33d,33eをそれぞれ移動させる。
制御装置50Cは、実施の形態1と同様に、図4に示されるようなハードウェア構成を有する。そのため、制御装置50Cのハードウェア構成の詳細な説明を省略する。
図24は、変形例6に係る制御装置の機能構成を示すブロック図である。図24に示されるように、制御装置50Cは、図5に示す制御装置50と比較して、第1制御部57aおよび第2制御部57bの代わりに第1制御部57c、第2制御部57dおよび第3制御部57eを備える点で相違する。
ただし、動画記憶部51は、加工具14c,14dと大型部材14eとの見本を示す第1CG動画および第2CG動画を記憶する。
第1CG動画および第2CG動画は、たとえば、以下のような第1〜第3シーンを順に示す。第1シーンは、加工対象部分15のモデルが画像上の定位置にある状態において、加工具14c,14dのモデルが加工対象部分15のモデルに対して加工するシーンである。第2シーンは、大型部材14eのモデルが画像上で移動し、大型部材14eの加工対象部分16のモデルが画像上の定位置に移動するシーンである。第3シーンは、加工対象部分16のモデルが画像上の定位置にある状態において、加工具14c,14dのモデルが加工対象部分16のモデルに対して加工するシーンである。
教示範囲選択部54は、加工具14cと加工具14dと大型部材14eとの各々について教示範囲を選択する。
画像処理部55は、対象画像から加工具14cと加工具14dと大型部材14eとを検出する。なお、大型部材14eのサイズが大きいため、撮像装置21,22の視野には大型部材14eの一部のみが含まれる。そのため、画像処理部55は、大型部材14eの表面に形成された模様を検出する。
第1制御部57cは、ロボットコントローラ40cを介してロボット30cを制御し、加工具14cの状態を変化させる。
第2制御部57dは、ロボットコントローラ40dを介してロボット30dを制御し、加工具14cの状態を変化させる。
第3制御部57eは、ロボットコントローラ40eを介してロボット30eを制御し、撮像装置21,22の状態を変化させる。
第1制御部57c、第2制御部57dおよび第3制御部57eの各々は、第1制御部57aおよび第2制御部57bと同様に、変化情報生成部57と、変化情報記憶部59と、算出部60と、指令部61と、終了判定部62とを備える(図7参照)。
ただし、各部における対象物、対象ロボットおよび対象ロボットコントローラは、上記の実施の形態と異なる。対象物は、第1制御部57cでは加工具14cであり、第2制御部57dでは加工具14dであり、第3制御部57eでは大型部材14eである。対象ロボットは、第1制御部57cではロボット30cであり、第2制御部57dではロボット30dであり、第3制御部57eではロボット30eである。対象ロボットコントローラは、第1制御部57cではロボットコントローラ40eであり、第2制御部57dではロボットコントローラ40dであり、第3制御部57eではロボットコントローラ40eである。
第1制御部57cおよび第2制御部57dの変化情報生成部58は、ロボット30eが動作していない状態において、対象ロボットの単位制御量と、撮像装置21によって撮像された実画像上の対象物の状態の変化量との関係を示す第1変化情報を生成する。また、第1制御部57cおよび第2制御部57dの変化情報生成部58は、ロボット30eが動作していない状態において、対象ロボットの単位制御量と、撮像装置22によって撮像された実画像上の対象物の状態の変化量との関係を示す第2変化情報を生成する。
具体的には、第1制御部57cの変化情報生成部58は、大型部材14eの加工対象部分15が画像上の定位置となる撮像装置21,22の状態において、第1変化情報および第2変化情報を生成する。第2制御部57dの変化情報生成部58は、大型部材14eの加工対象部分16が画像上の定位置となる撮像装置21,22の状態において、第1変化情報および第2変化情報を生成する。
大型部材14eの状態は、ロボット30eによって変化されない。しかしながら、ロボット30eによって撮像装置21,22の状態が変化するため、撮像装置21,22の実画像上の大型部材14eの状態は変化する。そのため、第3制御部57eの変化情報生成部58は、ロボット30eの単位制御量と、撮像装置21によって撮像された実画像上の大型部材14eの状態の変化量との関係を示す第1変化情報を生成する。また、第3制御部57eの変化情報生成部58は、ロボット30eの単位制御量と、撮像装置22によって撮像された実画像上の大型部材14eの状態の変化量との関係を示す第2変化情報を生成する。
第3制御部57eにおける算出部60、指令部61および終了判定部62の処理内容は、上記の実施の形態に係る第1制御部57aおよび第2制御部57bと同じである。
一方、第1制御部57cおよび第2制御部57dにおける算出部60は、以下の開始条件が満たされたときのみ、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットの制御量を算出する。
開始条件:実画像上の大型部材14eの状態と目標フレーム上の大型部材14eの状態との偏差が閾値The未満である。
第1制御部57cおよび第2制御部57dにおける指令部61および終了判定部62の処理内容は、上記の実施の形態に係る第1制御部57aおよび第2制御部57bと同じである。
変形例6に係る制御装置50Cは、上記の実施の形態と同様に図10のフローチャートに沿って、第1CG動画および第2CG動画に従って対象物の状態が変化するように対象ロボットを制御する。
さらに、変形例6において、第3制御部57eは、上記の実施の形態と同様に図13に示すフローチャートに従って、図10に示すステップS6のサブルーチンの処理を行なう。しかしながら、第1制御部57cおよび第2制御部57dは、図25に示すフローチャートに従って、図10に示すステップS6のサブルーチンの処理を行なう。
図25は、変形例6の第1制御部および第2制御部の処理の流れを示すフローチャートである。図25に示されるように、変形例6の第1制御部57cおよび第2制御部57dの処理の流れは、図13に示すフローチャートと比べて、ステップS90を備える点で相違する。そのため、ステップS90についてのみ説明する。
ステップS90において、実画像上の大型部材14eの状態と目標フレーム上の大型部材14eの状態との偏差が閾値Thj未満であるか否かが判定される。偏差が閾値Thj以上である場合(ステップS90でNO)、処理は終了する。偏差が閾値Thj未満である場合(ステップS90でYES)、ステップS21〜S25が行われる。
このように、制御装置50Cは、実画像上の大型部材14eの状態と目標フレーム上の大型部材14eの状態との偏差が閾値Thjを超える場合、ロボット30eのみを制御する。制御装置50Cは、実画像上の大型部材14eの状態と目標フレーム上の大型部材14eの状態との偏差が閾値Thj未満である場合、ロボット30c〜30eの各々を制御する。
たとえば、第1CG動画および第2CG動画が上記のような第1〜第3シーンを順に示す場合は、以下のようにロボット30c〜30eが制御される。第1シーンの中から目標フレームが選択されている場合、大型部材14eの加工対象部分15が画像上の定位置になるように撮像装置21,22が移動するまでの間、ロボット30c,30dは停止した状態となる。そして、大型部材14eの加工対象部分15が画像上の定位置になってから、第1制御部57cは、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットを制御する。その結果、加工具14c,14dは、加工対象部分15に対して加工する。この間も、第3制御部57eは、実画像上の大型部材14eの状態が目標フレーム上の大型部材14eの状態に近づくようにロボット30eを制御する。ただし、第1シーンにおいて、大型部材14eの状態は一定であるため、ロボット30eはほとんど動作せず、撮像装置21,22の状態は略一定となる。
上記の第2シーンの中から目標フレームが選択されている場合、実画像上の大型部材14eの状態が変化するようにロボット30eが制御され、撮像装置21,22が移動する。大型部材14eの加工対象部分16が画像上の定位置になるように撮像装置21,22が移動するまでの間、ロボット30c,30dは停止した状態となる。
大型部材14eの加工対象部分16が画像上の定位置となり、上記の第3シーンの中から目標フレームが選択されると、第1制御部57cは、実画像上の対象物の状態が目標フレーム上の対象物の状態に近づくように対象ロボットを制御する。その結果、加工具14c,14dは、加工対象部分16に対して加工する。この間も、第3制御部57eは、実画像上の大型部材14eの状態が目標フレーム上の大型部材14eの状態に近づくようにロボット30eを制御する。ただし、第3シーンにおいて、大型部材14eの状態は一定であるため、ロボット30eはほとんど動作せず、撮像装置21,22の状態は略一定となる。
図26は、変形例6に係る制御システムの別の構成例を示す模式図である。図26に示されるように、ロボット30c,30dは、ロボット30eに含まれる台座33eの上に設置されてもよい。この場合、ロボット30c,30dは、ロボット30eと一体となって移動する。
<D−7.変形例7>
算出部60は、公知のモデル予測制御(「足立、「モデル予測制御の基礎」、日本ロボット学会誌、2014年7月、第32巻、第6号、p. 9-12」(非特許文献2)参照)を行なうことにより、複数の自由度の制御量を算出してもよい。
具体的には、目標フレーム選択部56は、教示範囲のうち予測ホライズン期間に含まれる複数のフレームを目標フレームとして選択する。算出部60は、目標フレーム上の対象物の状態と、予測ホライズン期間において撮像装置21,22によって撮像される画像上の対象物の状態との偏差を最小化するように、制御ホライズン期間における制御量を算出する。
<D−8.その他の変形例>
上記の説明では、オスコネクタ2aをメスコネクタ2bに向けて移動させることにより、オスコネクタ2aとメスコネクタ2bとを接続させた。しかしながら、オスコネクタ2aがステージ31b上に載置され、メスコネクタ2bがハンド31aに把持されてもよい。この場合、メスコネクタ2bをオスコネクタ2aに向けて移動させることにより、オスコネクタ2aとメスコネクタ2bとを接続させる。
上記の説明では、制御装置50,50A,50B,50Cの動画記憶部51がCG動画を記憶するものとした。しかしながら、制御装置50,50A,50B,50Cの外部装置がCG動画を記憶していてもよい。
動画記憶部51は、CG動画の代わりに、もしくは、CG動画に加えて、CG動画の各フレームから抽出された各対象物の特徴点の座標および特徴量を記憶していてもよい。これにより、CG動画の各フレームに対する画像処理部55,255の処理を省略することができる。
<E.付記>
以上のように、本実施の形態および変形例は以下のような開示を含む。
(構成1)
第1〜第Nのロボット(30a〜30e)と、
第1〜第Nの対象物(2a,2b,9a,9b,10c〜10f、14c〜14e)を撮像するための撮像装置(21〜24)と、
前記第1〜第Nのロボット(30a〜30e)を制御するための制御装置(50,50A,50B,50C)とを備える制御システム(1,1A,1C)であって、
Nは2以上の整数であり、
第iのロボット(30a〜30e)は、第iの対象物の状態を変化させ、
iは1〜N−1の整数であり、
前記第Nのロボット(30a〜30e)は、前記第Nの対象物および前記撮像装置(21〜24)の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21〜24)の他方は、定位置に設置され、
前記制御装置(50,50A,50B,50C)は、前記第1〜第Nの対象物の各々について変化情報を取得し、
第jの対象物に対応する前記変化情報は、第jのロボットの制御量と、前記撮像装置の画像上における前記第jの対象物の状態の変化量との関係を示し、
jは1〜Nの整数であり、
前記制御装置(50,50A,50B,50C)は、
前記撮像装置(21〜24)によって撮像された実画像を取得する第1処理と、
前記第1〜第Nの対象物のモデルを示すCG動画から目標フレームを選択する第2処理と、
前記実画像と前記目標フレームとに基づいて前記第1〜第Nのロボット(30a〜30e)の各々を制御する第3処理とを行ない、
前記制御装置(50,50A,50B,50C)は、前記第3処理において、前記第jの対象物に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物のモデルの状態に近づけるための前記第jのロボット(30a〜30e)の制御量を算出し、算出した制御量に従って前記第jのロボット(30a〜30e)を制御する、制御システム(1,1A,1C)。
(構成2)
前記CG動画は、前記第1〜第Nの対象物の各々の設計データに基づいて作成され、
前記CG動画は、前記第1の対象物と第2〜第Nの対象物のうちの少なくとも1つの対象物とが離れた状態を示すフレームから前記第1の対象物と前記少なくとも1つの対象物とが接合した状態を示すフレームまでを含み、
前記制御装置(50A)は、前記第3処理において、前記設計データに対する前記第1の対象物および前記少なくとも1つの対象物の製造誤差に応じた調整量だけ前記第1のロボット(30a〜30e)の制御量を調整し、調整後の制御量に従って前記第1のロボット(30a〜30e)を制御する、構成1に記載の制御システム(1A)。
(構成3)
前記制御システム(1A)は、前記第1の対象物および前記少なくとも1つの対象物の一方が他方から受ける力を検知する力覚センサ(32)を含み、
前記制御装置(50A,50B)は、前記力覚センサによって検知される力が極小となる前記第1の対象物の状態を探索し、探索された前記第1の対象物の状態に基づいて前記調整量を決定する、構成2に記載の制御システム(1A)。
(構成4)
前記制御装置(50A,50B)は、入力装置(534)と接続され、前記入力装置(534)から前記調整量を取得する、構成2に記載の制御システム(1A)。
(構成5)
前記CG動画は、前記第1の対象物と第2〜第Nの対象物のうちの少なくとも1つの対象物とが離れた状態を示すフレームから前記第1の対象物と前記少なくとも1つの対象物とが接合した状態を示すフレームまでを含み、
前記制御システム(50B)は、前記第1の対象物および前記少なくとも1つの対象物の一方が他方から受ける力を検知する力覚センサ(32)を含み、
前記制御装置(50B)は、
前記第1処理から前記第3処理を繰り返す第1モードを行ない、
前記第1モードにおける前記第3処理において、前記第1のロボットの制御量を調整して、前記力覚センサによって検知される力が極小となる調整量を探索し、
探索された前記調整量だけ前記第1のロボットの制御量を調整したときに前記撮像装置によって撮像された動画を基準動画として取得し、
前記第1処理と、前記CG動画の代わりに前記基準動画から前記目標フレームを選択する第4処理と、前記第3処理とを繰り返す第2モードを行なう、構成1に記載の制御システム。
(構成6)
第1〜第Nの対象物(2a,2b,9a,9b,10c〜10f,14c〜14e)を撮像するための撮像装置(21〜24)を用いて、第1〜第Nのロボット(30a〜30e)を制御する制御方法であって、
Nは2以上の整数であり、
第iのロボット(30a〜30e)は、第iの対象物の状態を変化させ、
iは1〜N−1の整数であり、
前記第Nのロボット(30a〜30e)は、前記第Nの対象物および前記撮像装置の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21〜24)の他方は、定位置に設置され、
前記撮像装置(21〜24)は、前記第1〜第Nのロボット(30a〜30e)と異なる固定位置に設置され、
前記制御方法は、
前記第1〜第Nのロボット(30a〜30e)の各々について変化情報を取得する第1ステップを備え、
第jのロボット(30a〜30e)に対応する前記変化情報は、前記第jのロボット(30a〜30e)の制御量と、前記撮像装置の画像上における第jの対象物の状態の変化量との関係を示し、
jは1〜Nの整数であり、
前記制御方法は、
前記撮像装置(21〜24)によって撮像された実画像を取得する第2ステップと、
前記第1〜第Nの対象物のモデルを示すCG動画から目標フレームを選択する第3ステップと、
前記実画像と前記目標フレームとに基づいて前記第1〜第Nのロボット(30a〜30e)の各々を制御する第4ステップとをさらに備え、
前記第4ステップは、前記第jのロボット(30a〜30e)に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物の状態に近づけるための制御量を算出し、算出した制御量に従って前記第jのロボット(30a〜30e)制御するステップを含む、制御方法。
(構成7)
第1〜第Nの対象物(2a,2b,9a,9b,10c〜10f,14c〜14e)を撮像するための撮像装置(21〜24)を用いて、第1〜第Nのロボット(30a〜30e)を制御する制御方法をコンピュータに実行させるためのプログラム(550)であって、
Nは2以上の整数であり、
第iのロボット(30a〜30e)は、第iの対象物の状態を変化させ、
iは1〜N−1の整数であり、
前記第Nのロボット(30a〜30e)は、前記第Nの対象物および前記撮像装置の一方の状態を変化させ、
前記第Nの対象物および前記撮像装置(21〜24)の他方は、定位置に設置され、
前記撮像装置(21〜24)は、前記第1〜第Nのロボット(30a〜30e)と異なる固定位置に設置され、
前記制御方法は、
前記第1〜第Nのロボット(30a〜30e)の各々について変化情報を取得する第1ステップを備え、
第jのロボット(30a〜30e)に対応する前記変化情報は、前記第jのロボット(30a〜30e)の制御量と、前記撮像装置の画像上における第jの対象物の状態の変化量との関係を示し、
jは1〜Nの整数であり、
前記制御方法は、
前記撮像装置(21〜24)によって撮像された実画像を取得する第2ステップと、
前記第1〜第Nの対象物のモデルを示すCG動画から目標フレームを選択する第3ステップと、
前記実画像と前記目標フレームとに基づいて前記第1〜第Nのロボット(30a〜30e)の各々を制御する第4ステップとをさらに備え、
前記第4ステップは、前記第jのロボット(30a〜30e)に対応する前記変化情報に基づいて、前記実画像上の前記第jの対象物の状態を前記目標フレーム上の前記第jの対象物の状態に近づけるための制御量を算出し、算出した制御量に従って前記第jのロボット(30a〜30e)制御するステップを含む、プログラム(550)。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。