〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、指令値Cmをサーボ制御系20へと出力することによってサーボ制御系20(特に、手先23の位置)を制御する制御装置10を、「目標軌道Ttから演算した指令値Cmをサーボ制御系に出力する制御装置」の典型例として説明を行なう。
以下に詳細を説明する制御装置10は、ワーク40の位置Pwと、ワーク40を移動するサーボ制御系20のフィードバック位置Pf(具体的には、手先23の位置)とが一致しない場合であっても、ワーク40を所望の位置へと移動させることができる。
一般に、サーボ制御系の時刻ごとの実位置(フィードバック位置)と、そのサーボ制御系の時刻ごとの目標位置とを一致させることができたとしても、そのサーボ制御系によって移動されるワークを、所望の位置へと移動することができるとは限らない。ワークの位置と、ワークを移動するサーボ制御系の実位置とがずれる場合、両者のずれの分だけ、そのサーボ制御系によって移動されるワークの位置は、サーボ制御系の実位置からずれることになるためである。
そこで、制御装置10は、ワーク40の位置Pwと、ワーク40を移動するサーボ制御系20の実位置(フィードバック位置Pf)とのずれ量を特定し、このずれ量を考慮してサーボ制御系20を制御することによって、ワーク40を所望の位置へと移動させる。
したがって、制御装置10は、ワーク40を移動しようとする都度、サーボ制御系20によって移動されるワーク40の位置Pwと、サーボ制御系20の実位置(フィードバック位置Pf)とがずれる事例に好適である。例えば、制御装置10は、手先23によってワーク40を把持し(ピッキング動作)、ワーク40を把持した手先23を移動することによって、ワーク40を所望の位置へと載置する(プレース動作)事例に好適である。
上述のような事例では、手先23によってワーク40を把持する都度、「ワーク40の位置Pw(例、ワーク40の中心位置)」と、「手先23の位置(つまり、サーボ制御系20のフィードバック位置Pf)」とには、ずれが発生する可能性がある。そして、「ワーク40の位置Pw」と「手先23の位置」とのずれの大きさ(つまり、ずれ量)は、ワーク40を把持する都度、つまり、ピッキング動作の都度、異なる可能性がある。ただし、「ワーク40を把持した際の、『ワーク40の位置Pw』と『手先23の位置』とのずれ」の大きさ(つまり、ずれ量)がワーク40の移動中に変化する可能性は、低いと考えられる。
そのため、制御装置10は、手先23によってワーク40を把持する都度、「ワーク40の位置Pw」と「手先23の位置」とのずれの大きさ(つまり、ずれ量)を算出する。そして、制御装置10は、算出したずれ量を考慮してサーボ制御系20を制御することによって、ワーク40を所望の位置へと移動することができる。
以下の説明においては、「手先23の位置(つまり、サーボ制御系20のフィードバック位置Pf)」と、「手先23の移動に伴って移動する、ワーク40の位置Pw(例、ワーク40の中心位置)」とのずれを、「位置ずれ」とも称する。特に、「手先23の位置」と「手先23に把持された、ワーク40の位置Pw」とのずれを、「把持ずれ」とも称し、つまり、「把持ずれ」は、ワーク40が手先23に把持された場合の「位置ずれ」を指す。
制御装置10は、例えば、ピッキング動作の都度、ピッキング動作の際に発生した把持ずれの大きさ(把持ずれ量)を特定し、特定した把持ずれ量を考慮してサーボ制御系20を制御することによって、ワーク40を所望の位置へと高精度に載置する。また、制御装置10は、ピッキング動作の際に発生した把持ずれの大きさを、手先23の移動中に特定することによって、ピッキング動作を完了した手先23の移動を停止させて把持ずれの大きさを特定する場合に比べて、ワーク40の位置制御を高速化する。
以下、ワーク40を所望の位置へと移動させるために、「サーボ制御系20によって移動されるワーク40の位置Pwと、サーボ制御系20の実位置(フィードバック位置Pf)とのずれ」を特定する制御装置10の詳細について説明していく。すなわち、以下では、制御装置10が、「ワーク40の位置Pwと、サーボ制御系20のフィードバック位置Pfとのずれ」、つまり、「位置ずれ」を考慮することによって、ワーク40の位置制御を高精度化する点を中心に説明を行う。特に、制御装置10が、ワーク40が手先23に把持された場合の「位置ずれ」である「把持ずれ」を特定し、特定した「把持ずれ」を考慮することによって、ワーク40を所望の位置へと高精度に載置する例を説明する。
制御装置10は、「位置ずれ」、つまり、「サーボ制御系20によって移動されるワーク40の位置Pwと、サーボ制御系20の実位置(フィードバック位置Pf)とのずれ」を考慮したサーボ制御系20の制御に加えて、以下の制御を実行してもよい。すなわち、制御装置10は、時刻ごとのサーボ制御系20のフィードバック位置Pfを、時刻ごとのサーボ制御系20の目標位置Ptに一致させる制御をさらに実行してもよい。ただし、時刻ごとのサーボ制御系20のフィードバック位置Pfを、時刻ごとのサーボ制御系20の目標位置Ptに一致させる制御の説明は、本実施形態の目的ではないため、詳細は略記する。
§1.適用例
(制御システムの概要)
本発明の一態様に係る制御装置10についての理解を容易にするため、先ず、本発明が適用される場面の一例について、具体的には、制御装置10を含む制御システム1の概要について、図2を用いて説明する。
図2は、制御システム1の全体概要を示す図である。制御システム1は、マスタとしての制御装置10と、マスタにネットワークを介して接続される1つ以上のスレーブとしてのサーボ制御系20および検出系30とを含む、マスタスレーブ制御システムである。制御装置10は、制御システム1において、ネットワークを介したデータ伝送を管理しているという意味で「マスタ」と呼ばれ、一方、「スレーブ」は、マスタによって管理され、例えば、工場内に設置される設備のデータ収集および制御を行う。制御システム1において、マスタとしての制御装置10と、スレーブとしてのサーボ制御系20および検出系30とをつなぐネットワークとしては、例えば、EtherCAT(登録商標)を使用することができる。
なお、「マスタ」および「スレーブ」は、ネットワーク上のデータ伝送の制御機能に着目して定義されるものであり、各装置間でどのような情報が送受信されるかについては、特に限定されない。
(制御装置)
制御装置10は、マスタとして、サーボ制御系20および検出系30等のスレーブが出力する制御結果(例、制御量および検出結果)を示すデータを、制御周期Ccごとに取得する(受信する)。また、制御装置10は、マスタとして、サーボ制御系20および検出系30等のスレーブへと、指令値Cmおよび検出指示時刻aTdを含む制御信号Cs(制御指示)を、制御周期Ccごとに出力する(送信する)。
制御装置10は、例えば、サーボモータ22などの制御機器を制御するためのユーザプログラムを実行するPLC(Programmable Logic Controller)等の産業用の制御装置である。制御システム1において、制御装置10は、下位コントローラとしてのサーボドライバ21に対する上位コントローラである。
具体的には、制御装置10は、目標軌道Ttから制御周期Ccごとに生成した指令値Cmを、サーボドライバ21を含むサーボ制御系20に対して制御周期Ccごとに出力する。サーボ制御系20において、指令値Cmを受信したサーボドライバ21は、制御対象であるサーボモータ22等の出力である制御量を、指令値Cmに追従するようにフィードバック制御を行う。そして、制御装置10は、サーボ制御系20(特に、サーボドライバ21)から、サーボモータ22の出力(制御量。例えば、トルク、速度、および位置など)に係るデータを制御周期Ccごとに取得する。制御装置10は、サーボ制御系20から受信した制御量(例、制御周期Ccごとのフィードバック位置Pf)に基づいてさらにサーボ制御系20に指令値Cmを生成し、生成した指令値Cmをサーボ制御系20へと送信することで、サーボ制御系20を制御する。
ここで、制御装置10は、例えば複数のサーボ制御系20を制御し、具体的には、以下のように複数のサーボ制御系20を制御する。すなわち、制御装置10は、複数のサーボ制御系20の各々について、目標軌道Ttからサーボ制御系20ごとの指令軌道Coを生成する。そして、制御装置10は、サーボ制御系20ごとの指令軌道Coから生成した「サーボ制御系20ごとの指令値Cm」を、複数のサーボ制御系20の各々に対する制御周期Ccごとに出力して、複数のサーボ制御系20を協調制御する。制御装置10は、複数のサーボ制御系20の各々の応答遅れ時間Dsを考慮して「サーボ制御系20ごとの指令値Cm」を生成することによって、複数のサーボ制御系20を、動作結果(制御量)のレベルで同期させる。
図2に示す例では、制御装置10は、目標軌道Ttから、サーボ制御系20(A)、20(B)、20(C)、20(D)の各々の指令軌道Co(A)、Co(B)、Co(C)、Co(D)を生成する。制御装置10は、指令軌道Co(A)、Co(B)、Co(C)、Co(D)の各々から、サーボ制御系20(A)、20(B)、20(C)、20(D)の各々の指令値Cm(A)、Cm(B)、Cm(C)、Cm(D)を生成する。特に、制御装置10は、サーボ制御系20(A)、20(B)、20(C)、20(D)の各々の応答遅れ時間Ds(A)、Ds(B)、Ds(C)、Ds(D)を考慮して、指令値Cm(A)、Cm(B)、Cm(C)、Cm(D)を生成する。制御装置10は、指令値Cm(A)、Cm(B)、Cm(C)、Cm(D)を、サーボ制御系20の制御周期Ccごとに出力することによって、サーボ制御系20(A)、20(B)、20(C)、20(D)の各々を協調制御する。
また、制御システム1において、制御装置10は、検出指示時刻aTdを指定した制御信号Csを、例えば制御周期Ccごとに出力する。また、制御装置10は、検出系30から、検出系30の実行した検出動作(例、撮像動作)の結果である検出結果(例、撮像画像Im)を、例えば制御周期Ccごとに、取得する(受信する)。
詳細は後述するが、制御装置10は、「検出系30の応答遅れ時間Dd」によって検出時刻Tdを補正した時刻である検出指示時刻aTdを、制御信号Csにおいて指定する。そして、制御装置10は、検出指示時刻aTdを指定した制御信号Csを検出系30へと出力することによって、検出時刻Tdにおいて、撮像装置33(検出装置)に、検出動作(撮像動作)を実行させる。
図2に示す例では、マスタとしての制御装置10に対して、サーボ制御系20(A)、20(B)、20(C)、20(D)という4つのサーボ制御系20と、1つの検出系30とが、スレーブとして接続されている例が示されている。ただし、制御装置10に接続されるサーボ制御系20が4つであることは必須ではなく、制御システム1において、マスタとしての制御装置10に接続されるサーボ制御系20は1つ以上であればよく、例えば、5つであってもよい。
以下の説明においては、サーボ制御系20について、複数のサーボ制御系20の各々を区別する必要がある場合には、符号に「(A)」、「(B)」、「(C)」、・・・、「(Z)」等の添え字を付して区別する。例えば、「サーボ制御系20(A)」、「サーボ制御系20(B)」、「サーボ制御系20(C)」、・・・、「サーボ制御系20(Z)」と記載して区別する。複数のサーボ制御系20の各々を特に区別する必要がない場合は単に「サーボ制御系20」と称する。
(サーボ制御系)
サーボ制御系20は、制御装置10からの指令値Cmに従って、サーボ制御系20の出力(例えば、位置)を制御し、具体的には、手先23の位置を制御するフィードバック制御系である。サーボ制御系20は、手先23の位置を制御することによって、例えば、手先23が把持しているワーク40の位置Pwを制御する。サーボ制御系20は、手先23の位置Pwを変更するアクチュエータ(Actuator)としてのサーボモータ22と、サーボモータ22を制御するサーボドライバ21とを含む。
サーボドライバ21は、サーボモータ22の制御装置であり、制御装置10からの制御信号Cs(具体的には、指令値Cm)を制御周期Ccごとに受信し、受信した制御信号Csに従ってサーボモータ22の駆動を制御する。また、サーボドライバ21は、サーボモータ22の軸に接続されている位置センサおよびトルクセンサなどから、位置、速度、トルクといったサーボモータ22の出力に係る実測値を取得し、これら実測値に係るデータを制御周期Ccごとに制御装置10に出力する。
サーボモータ22は、サーボドライバ21の制御に従って出力(具体的には、手先23の位置)が制御されるアクチュエータであり、例えば、リニアアクチュエータである。サーボモータ22は、例えば、手先23を備えるマニピュレータの軸を駆動することによって、手先23の位置を変更する。サーボモータ22は、手先23の位置を変更することによってワーク40の位置Pwを変更し、例えば、手先23の位置を変更することによって手先23に把持されたワーク40の位置Pwを変更する。
手先23は、ワーク40を把持する把持部であり、例えば、真空吸着または磁気吸引によって、ワーク40を把持する(ピッキングする)。例えば、真空吸着を実現するために、手先23には真空ポンプが設けられ、真空ポンプの動作が制御されていてもよい。以下の説明において、サーボモータ22の出力に係る実測値としての「サーボ制御系20の出力位置」を、つまり、手先23の位置を、「フィードバック位置Pf」と称することがある。
例えば、サーボモータ22(A)、22(B)、22(C)の各々の出力によって、互いに直行するX軸、Y軸、Z軸の各々における、手先23の位置は決定される。また、サーボモータ22(D)の出力によって、手先23の、Z軸を中心とする回転の回転量が決定される。サーボドライバ21(A)、21(B)、21(C)、21(D)の各々は、サーボモータ22(A)、22(B)、22(C)、22(D)の各々の出力を制御し、つまり、各々の駆動を制御する。
また、サーボドライバ21(A)は、サーボモータ22(A)の出力に係る実測値(制御量)の1つとして、手先23のX軸におけるフィードバック位置Pf(A)を制御装置10に送信する。同様に、サーボドライバ21(B)は、サーボモータ22(B)の制御量の1つとして、手先23のY軸におけるフィードバック位置Pf(B)を制御装置10に送信する。サーボドライバ21(C)は、サーボモータ22(C)の制御量の1つとして、手先23のZ軸におけるフィードバック位置Pf(C)を制御装置10に送信する。サーボドライバ21(D)は、サーボモータ22(D)の制御量の1つとして、手先23の、Z軸を中心とする回転の回転量を、フィードバック位置Pf(D)として、制御装置10に送信する。
(検出系)
検出系30は、ワーク40を検出した結果である検出結果を生成し、特に、「ワーク40の位置Pwと検出位置Pdとのずれ量」を算出するための情報を検出結果として生成し、生成した検出結果を制御装置10へと通知する(送信する)。図2に例示する検出系30は、検出装置である撮像装置33と、撮像装置33による検出動作(例、撮像動作)を制御する撮像制御装置32と、撮像制御装置32と通信を実行する通信装置31とを含んでいる。
撮像装置33は、撮像制御装置32から検出トリガ(撮像トリガ)を受信すると、検出動作(撮像動作)を実行し、また、実行した検出動作の結果を、例えば、撮像動作の実行によって生成した撮像画像Imを、撮像制御装置32へと出力する(送信する)。
撮像制御装置32は、検出トリガ(撮像トリガ)を撮像装置33へと出力する(送信する)ことにより、撮像装置33に、検出動作(撮像動作)を実行させ、また、撮像装置33から、検出動作の実行結果である検出結果(例、撮像画像Im)を受信する。特に、撮像制御装置32は、撮像装置33への検出トリガ(撮像トリガ)の出力を指示する出力指示(検出指示)を通信装置31から受信すると、撮像装置33へと、検出トリガを送信する。
撮像制御装置32は、撮像装置33から、検出動作の実行結果である検出結果(例、撮像画像Im)を受信すると、受信した検出結果を、ネットワークを介して、制御装置10へと出力する(送信する)。例えば、撮像制御装置32は、撮像装置33による検出動作の実行結果である検出結果(例、撮像画像Im)を、検出時刻Td以降の或る制御周期Ccにおいて、ネットワークを介して、制御装置10へと出力する(送信する)。
詳細は後述するが、撮像制御装置32は、撮像装置33から、検出動作の実行結果である検出結果(例、撮像画像Im)を受信すると、受信した検出結果を解析し、解析結果を、ネットワークを介して、制御装置10へと出力してもよい。例えば、撮像制御装置32は、撮像装置33の生成した撮像画像Imに対して画像解析を実行し、画像解析の結果を、検出時刻Td以降の或る制御周期Ccにおいて、ネットワークを介して、制御装置10へと出力してもよい。
具体的には、撮像制御装置32は、撮像画像Imに対する画像解析によって、撮像画像Imにおけるワーク40の位置Pw(例、ワーク40の中心位置)と基準点Rbとのずれ量である「画像内での位置ずれ」量を算出してもよい。そして、撮像制御装置32は、算出した「画像内での位置ずれ」量を、ネットワークを介して、制御装置10へと出力してもよく、例えば、算出した「画像内での位置ずれ」量を、検出時刻Td以降の或る制御周期Ccにおいて制御装置10へと送信してもよい。
通信装置31は、制御装置10から制御周期Ccごとに制御信号Csを受信し、受信した制御信号Csにおいて指定されている検出指示時刻aTdにおいて、出力指示(検出指示)を、撮像制御装置32へと出力する(送信する)。
検出系30において、通信装置31が出力指示を撮像制御装置32へと送信してから、撮像装置33が検出動作を実行するまでには所定時間が必要であり、この所定時間を「検出系30の応答遅れ時間Dd」とも称する。「検出系30の応答遅れ時間Dd」は、「撮像装置33(検出装置)の応答遅れ時間」とも呼ばれる。
(制御システムの適用例)
図3は、制御システム1の適用例を説明する図であり、具体的には、制御システム1を、ピッキング動作(吸着動作)およびプレース動作を行うロボットアプリケーションに適用した例を説明する図である。すなわち、制御システム1(特に、制御装置10)は、図3に例示するように、例えば「ワーク40を部品パレットから取り出し(ピッキング動作)、取り出したワーク40を所定の位置に実装する(プレース動作)」ピック&プレース工程に適用される。
図3に示す例では、ワーク40は、1mm以下の微細電子部品であり、例えば、積層セラミックコンデンサ、水晶振動子、ICチップ、その他各種素子である。このような電子部品を基板に載置する作業においては、部品の微細化と回路の微細化とが進み、ピッキング動作およびプレース動作の高精度化が要求され、また、使用部品点数が増加しているため、ピッキング動作およびプレース動作の高速化も必須とされる。
そこで、制御システム1(特に、制御装置10)は、位置ずれ(つまり、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ)を考慮することによって、ワーク40を所望の位置へと高精度に移動する。
すなわち、ピッキング動作によって手先23に把持されたワーク40を、所望の位置に正確にプレース(載置する)ために、制御システム1(特に、制御装置10)は、位置ずれ(把持ずれ)を考慮して手先23の位置を制御する。例えば、手先23が、ワーク40の中心位置よりも右側の位置で、ワーク40を把持した場合、ワーク40を所望の位置へ載置しようとする制御装置10は、手先23の位置を、当初の目標位置よりも右側にずらす(補正する)。同様に、手先23が、ワーク40の中心位置よりも左側の位置で、ワーク40を把持した場合、ワーク40を所望の位置へ載置しようとする制御装置10は、手先23の位置を、当初の目標位置よりも左側にずらす(補正する)。
また、詳細は後述するが、制御システム1(特に、制御装置10)は、ワーク40の移動を停止させずに、移動中のワーク40を撮像させ、その結果得られた撮像画像Imから、位置ずれ(把持ずれ)を正確に把握する。したがって、制御システム1(特に、制御装置10)は、位置ずれ(把持ずれ)を考慮したワーク40の高精度な位置制御を、高速で実現することができる。
図3に例示するように、制御システム1において、手先23の位置は、つまり、サーボ制御系20の出力(位置)は、制御装置10によって制御される。すなわち、制御装置10は、サーボドライバ21へと指令値Cmを送信することによって、サーボドライバ21に、サーボモータ22の出力(出力位置)を制御させる。
例えば、手先23の、互いに直行するX軸、Y軸、Z軸上の各々における位置は、サーボ制御系20(A)、20(B)、20(C)という3つのサーボ制御系20の各々の出力(出力位置)である。また、手先23の、Z軸を中心とする回転の回転量は、サーボ制御系20(D)の出力(出力回転量)である。
具体的には、制御装置10から指令値Cm(A)を受けたサーボドライバ21(A)は、サーボモータ22(A)を制御し、サーボモータ22(A)によって手先23はX軸方向に移動する。また、サーボモータ22(A)の制御結果(出力)は、サーボドライバ21(A)へとフィードバックされる。
同様に、制御装置10から指令値Cm(B)および(C)の各々を受けたサーボドライバ21(B)および21(C)の各々は、サーボモータ22(B)および22(C)の各々を制御する。サーボモータ22(B)および22(C)の各々によって、手先23は、Y軸方向およびZ軸方向の各々に移動する。また、サーボモータ22(B)および22(C)の各々の制御結果は、サーボドライバ21(B)および22(C)の各々にフィードバックされる。
さらに、制御装置10から指令値Cm(D)を受けたサーボドライバ21(D)は、サーボモータ22(D)を制御し、サーボモータ22(D)によって手先23はZ軸を中心として回転する。また、サーボモータ22(D)の制御結果は、サーボドライバ21(D)にフィードバックされる。
ピッキング動作によって手先23に把持されたワーク40は、手先23の移動に伴って移動する。制御装置10からの指示(具体的には、検出指示時刻aTd)に従って撮像装置33は、ピッキング動作によって手先23に把持されたワーク40を撮像し、撮像画像Imを生成する。撮像装置33によって生成された撮像画像Imは、制御装置10へと送信される。
制御装置10は、撮像画像Imに対する画像解析によって、位置ずれ(つまり、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ)を特定する。そして、制御装置10は、特定した位置ずれを考慮して手先23の位置(例、プレース位置)を制御することによって、ワーク40を所望の位置に高速かつ高精度に実装する。
ただし、撮像画像Imに対する画像解析を制御装置10が実行することは必須ではない。制御装置10は、撮像画像Imにおけるワーク40の位置Pw(例、ワーク40の中心位置)と基準点Rbとのずれ量である「画像内での位置ずれ」量から、ワーク40の位置Pwと検出位置Pdとのずれ量である第一ずれ量Fdを特定することができればよい。撮像画像Imに対する画像解析を実行するのは撮像制御装置32であってもよく、言い換えれば、撮像制御装置32が、撮像画像Imに対する画像解析によって、「画像内での位置ずれ」量を算出してもよい。その場合、制御装置10は、撮像制御装置32から「画像内での位置ずれ」量を取得し、取得した「画像内での位置ずれ」量から、第一ずれ量Fdを特定する(算出する)。
(ワークの撮像方法に係る第一の工夫:無停止での撮像画像の生成)
図4は、ワーク40の撮像方法のヴァリエーションを説明する図である。図4の(A)は、位置ずれ(つまり、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ)を特定するための撮像画像Imを生成する、従来までの方法を説明する図である。
すなわち、従来は、ワーク40を把持している手先23の移動を停止して、手先23に把持されたワーク40を撮像し、撮像画像Imを生成する方法が一般的であった。具体的には、従来の制御システムは、ワーク40を把持した手先23の移動速度(サーボ速度Vs)をいったん「0」にし、手先23等の振動が収まってから、つまり、振動減衰待ち時間が経過してから、検出トリガを出力して、撮像装置に撮像を実行させていた。
「ワーク40を把持した手先23の移動を停止して、撮像画像Imを生成する」従来までの方法は、ワーク40の位置ずれ(把持ずれ)を高精度に検出可能な撮像画像Imを生成できるとの利点を有する。
ただし、従来の制御システムは、「手先23の移動を停止させる」、および、「振動減衰待ち時間が経過するまで待つ」という処理の後に、撮像を実行するため、図4の(A)に示すように撮像の実行に要する時間が長くなるという問題がある。
図4の(B)は、制御システム1(特に、制御装置10)が実行する、「把持ずれ(つまり、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ)を特定するための撮像画像Imを生成する」方法を説明する図である。制御装置10は、手先23の移動を停止せずに、つまり、無停止で、撮像画像Imを生成させる。具体的には、図4の(B)に示すように、制御装置10は、ワーク40を把持した手先23の移動速度(サーボ速度Vs)を「0」にすることなく、手先23の移動中に、検出トリガを出力して、撮像装置33に撮像を実行させる。
図4の(B)に示す、制御装置10の「無停止で撮像画像Imを生成させる」方法は、図4の(A)に示す、従来の制御システムの「手先23の移動を停止させてから撮像画像Imを生成させる」方法に比べて、タクトを上げることができる。
(無停止で撮像画像を生成した場合に発生し得る問題)
図5は、無停止で(つまり、ワーク40の移動を停止せずに)、撮像画像Imを生成した場合に発生し得る問題を説明する図である。図5の(A)および図5の(B)の各々において、二点鎖線の交差する点は「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」を示している。また、点線で示す円の中心位置は、「検出時刻Tdにおける、手先23の位置」、つまり、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf(実位置)」を示している。さらに、星印は「ワーク40の位置Pw(例、ワーク40の中心位置)」を、点線矢印は「ワーク40の位置Pwと『検出時刻Tdにおける、手先23の位置』とのずれ」(量)を、示している。
図5の(A)および図5の(B)の各々において、撮像装置33は、ワーク40の位置Pw(例、ワーク40の中心位置)と検出位置Pdとが一致したタイミングで、撮像を実行している。つまり、撮像画像Imは、ワーク40の位置Pwと、検出位置Pdとが一致したタイミングで生成される。そのため、図5の(A)および図5の(B)の各々の撮像画像Imにおいて、星印(つまり、ワーク40の位置Pw)と、検出位置Pdに対応する基準点Rとは、一致している。
図5の(A)に示す例では、撮像画像Imが生成されたタイミングで、ワーク40の位置Pwと、手先23の位置とは一致している。そのため、撮像画像Imにおいて、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置(つまり、手先23の位置)とは、一致している。
図5の(B)に示す例では、撮像画像Imが生成されたタイミングで、ワーク40の位置Pwと、手先23の位置とは一致しておらず、つまり、ワーク40の位置Pwと、手先23の位置とはずれている。そのため、撮像画像Imにおいて、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置(つまり、手先23の位置)とは、一致しておらず、つまり、ずれている。
ここで、図5の(A)および図5の(B)の各々において示されているように、手先23と撮像装置33との間にはワーク40が存在し、つまり、手先23はワーク40によって隠されてしまうため、実際には手先23は撮像されない。つまり、図5の(A)および図5の(B)の各々の撮像画像Imにおいて、点線で示す円は実際には写っておらず、撮像画像Imからは、「検出時刻Tdにおける、手先23の位置(フィードバック位置Pf)」は分からない。
そのため、図5の(A)の撮像画像Imと、図5の(B)の撮像画像Imとを区別することは実際にはできない。つまり、撮像画像Imが生成されたタイミングで、ワーク40の位置Pwと手先23の位置とは一致していたのか、または、ワーク40の位置Pwと手先23の位置とはずれていたのかを、撮像画像Imに対する画像解析のみによって判定することはできない。
実際には手先23は撮像されていないため、撮像画像Imに対する画像解析のみによって、手先23の位置を把握することはできない。したがって、「ワーク40の位置Pwと手先23の位置とのずれ」を、つまり、位置ずれ(把持ずれ)を、撮像画像Imに対する画像解析のみによって把握することもできない。撮像画像Imに対する画像解析のみによって把握することができるのは、撮像画像Imに実際に撮像されているワーク40の位置Pwと、撮像画像Imの基準点R(例、撮像画像Imの中心点)とのずれ量だけである。手先23は実際には撮像画像Imに撮像されていないため、撮像画像Imに対する画像解析のみによっては、手先23の位置と撮像画像Imの基準点Rとのずれ量を把握することはできない。
つまり、手先23の位置と検出位置Pdとが一致していないタイミングで撮像した場合、撮像で生成された撮像画像Imに対して画像解析を実行したとしても、画像解析結果のみから位置ずれ量(把持ずれ量)を算出することはできない。言い換えれば、撮像画像Imに対する画像解析によって「ワーク40の位置Pwと手先23の位置とのずれ」量を算出するためには、手先23の位置と検出位置Pdとが一致した時刻で、撮像装置33に撮像を実行させる必要がある。
以下の説明においては、「撮像装置33が撮像を実行したタイミングが、手先23の位置と検出位置Pdとが一致する時刻に、一致しない(ずれる)」ことを、「撮影タイミングのずれ」とも称する。「撮影タイミングのずれ」は、「撮像装置33が撮像を実行したタイミングにおいて、手先23の位置と検出位置Pdとが一致していない(ずれている)」ことを指すともいえる。「撮影タイミングのずれ」が発生すると、撮像が実行された時点で手先23の位置と検出位置Pdとは一致しておらず、つまり、撮像画像Im中の手先23の位置と基準点R(例、撮像画像Imの中心点)とは一致しない。そのため、撮像画像Imに対する画像解析のみによっては、位置ずれ量(把持ずれ量)を、つまり、「ワーク40の位置Pwと手先23の位置とのずれ」量を、把握することはできない。
制御装置10は、図4の(B)に示す「手先23の移動を停止せずに撮像画像Imを生成させる」方法を実行することで、図4の(A)に示す「手先23の移動を停止させてから撮像画像Imを生成させる」従来の方法に比べて、タクトを上げることができる。ただし、「手先23の移動を停止せずに撮像画像Imを生成させる」場合、図5を用いて説明したように、「撮影タイミングのずれ」が発生すると、撮像画像Imに対する画像解析だけでは、位置ずれ量(把持ずれ量)を算出できなくなるとの問題が発生する。
(ワークの撮像方法に係る第二の工夫)
図6は、検出時刻Tdを調整することによって、図5で説明した問題を解決した撮像画像Imの例について説明する図である。図6の(A)および図6の(B)の各々において、二点鎖線の交差する点は「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」を示している。また、点線で示す円の中心位置は、「検出時刻Tdにおける、手先23の位置」、つまり、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を示している。さらに、星印は「ワーク40の位置Pw(例、ワーク40の中心位置)」を示し、実線矢印は「撮像画像Imにおける、ワーク40の位置Pwと基準点Rbとのずれ」(量)を、示している。
図5で説明した問題を解決するために、制御装置10は、手先23の位置(つまり、サーボ制御系20のフィードバック位置Pf)と検出位置Pdとが一致する時刻に、撮像装置33に撮像を実行させようとする。
ただし、サーボ制御系20のフィードバック位置Pfと検出位置Pdとの一致を確認した時点で撮像装置33に撮像を指示しても、撮像装置33は、サーボ制御系20のフィードバック位置Pfと検出位置Pdとが一致した時刻での撮像を行うことはできない。前述の通り、撮像装置33を含む検出系30と制御装置10との通信は、制御周期Ccごとに実行されるのであり、また、検出系30の応答遅れ時間Dd(例、撮像装置33の応答遅れ時間Dd)も存在するからである。
そこで、制御装置10は、「サーボ制御系20のフィードバック位置Pfと検出位置Pdとが一致する」と予想する時刻を「検出時刻Td」として算出する。そして、制御装置10は、撮像装置33が検出時刻Tdにおいて撮像を実行できるように、検出指示時刻aTdを予め検出系30に出力しておく。
すなわち、制御装置10(特に、図1の検出時刻決定部1160)は、先ず、「サーボ制御系20の応答遅れ時間Dsを考慮したサーボ制御系20の目標位置Ptが、検出位置Pdに一致する時刻」を、検出時刻Tdとする。例えば、検出時刻決定部1160は、「サーボ制御系20の目標位置Ptと検出位置Pdとが一致する時刻」から、サーボ制御系20の応答遅れ時間Dsが経過した時刻を、検出時刻Tdとする。そして、検出時刻決定部1160は、「検出時刻Tdを検出系30の応答遅れ時間Ddによって補正した時刻」を検出指示時刻aTdとする。例えば、検出時刻決定部1160は、「検出時刻Tdから、検出系30の応答遅れ時間Ddを遡った時刻」を、検出指示時刻aTdとする。そして、制御装置10(特に、図1の指令部1210)は、検出指示時刻aTdを、予め検出系30へと出力しておく。
制御装置10は、「検出時刻Tdを検出系30の応答遅れ時間Ddによって補正した時刻」である検出指示時刻aTdを予め検出系30へと出力しておくことによって、撮像装置33に、検出時刻Tdにおいて撮像を実行させることができる。そして、検出時刻Tdにおいて、「サーボ制御系20の応答遅れ時間Dsを考慮したサーボ制御系20の目標位置Pt」と、検出位置Pdとは一致する。したがって、「サーボ制御系20の応答遅れ時間Dsを考慮したサーボ制御系20の目標位置Pt」と「サーボ制御系20のフィードバック位置Pf」とが一致するのであれば、以下の関係が成立する。すなわち、検出時刻Tdにおいて、「サーボ制御系20のフィードバック位置Pf」と検出位置Pdとは一致する。
図6の(A)および図6の(B)の各々の撮像画像Imは、制御装置10が検出指示時刻aTdを予め検出系30へと出力しておくことによって、サーボ制御系20のフィードバック位置Pfと検出位置Pdとが一致した時刻で撮像された撮像画像Imである。すなわち、図6の(A)および図6の(B)の各々において、撮像装置33は、サーボ制御系20のフィードバック位置Pf(つまり、手先23の位置)と検出位置Pdとが一致したタイミングで、撮像を実行している。
そのため、図6の(A)および図6の(B)の各々の撮像画像Imにおいて、点線で示す円の中心位置(つまり、手先23の位置)と二点鎖線の交差する基準点R(つまり、検出位置Pd)とは、一致している。
図6の(A)に示す例では、図5の(A)と同様に、撮像画像Imが生成されたタイミングで、ワーク40の位置Pwと、手先23の位置とは一致している。そのため、撮像画像Imにおいて、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置(つまり、手先23の位置)とは、一致している。
また、図6の(B)に示す例では、図5の(B)と同様に、撮像画像Imが生成されたタイミングで、ワーク40の位置Pwと、手先23の位置とは一致しておらず、つまり、ワーク40の位置Pwと、手先23の位置とはずれている。そのため、撮像画像Imにおいて、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置(つまり、手先23の位置)とは、一致しておらず、つまり、ずれている。
ここで、図5と同様に、図6においても、実際には手先23はワーク40に隠されて撮像されることはないため、撮像画像Imに対する画像解析のみによって、手先23の位置を把握することはできない。
ただし、前述の通り、図6の(A)および図6の(B)の各々の撮像画像Imにおいて、実際には映っていない「点線で示す円の中心位置(つまり、手先23の位置)」は、基準点R(つまり、検出位置Pd)に一致すると推定することができる。そのため、制御装置10は、「実際には映っていない『点線で示す円の中心位置(つまり、手先23の位置)』と、星印(つまり、ワーク40の位置Pw)とのずれ量」は、「基準点Rと星印とのずれ量」に等しいと推定することができる。言い換えれば、制御装置10は、「撮像画像Imにおける、ワーク40の位置Pwと基準点Rbとのずれ」を示す実線矢印から、ワーク40の位置Pwと手先23の位置(フィードバック位置Pf)とのずれ量(位置ずれ量)を算出することができる。
(「撮影タイミングのずれ」がない場合の位置ずれ量(把持ずれ量)の特定方法)
これまでに説明してきた内容を整理すれば、以下の通りである。すなわち、制御装置10(特に、図1の検出時刻決定部1160)は、先ず、検出時刻Tdを、「目標軌道Ttから算出されるサーボ制御系20の目標位置Ptが、検出位置Pdに一致する」時刻と、サーボ制御系20の応答遅れ時間Dsとから特定する。
そして、制御装置10(検出時刻決定部1160)は、検出時刻Tdを「検出系30の応答遅れ時間Dd」によって補正した時刻である検出指示時刻aTdを算出する。制御装置10は、検出指示時刻aTdを予め検出系30(特に、通信装置31)に送信しておくことによって、撮像装置33に、検出時刻Tdにおいて撮像を実行させる。
撮像装置33は、検出時刻Tdにおいて撮像を実行することにより、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」と、検出位置Pdとが一致した撮像画像Imを生成する。つまり、撮像画像Imにおいて、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」と、基準点Rb(例、撮像画像Imの中心点)とは、一致している。したがって、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とサーボ制御系20のフィードバック位置Pf(つまり、手先23の位置)とが一致する場合、撮像画像Imにおいて、手先23の位置と基準点Rbとは一致する。
制御装置10(特に、図1の第一ずれ量算出部1170)は、撮像画像Imに対する画像解析によって、撮像画像Imにおけるワーク40の位置Pw(例、ワーク40の中心位置)と基準点Rbとのずれ量である「画像内での位置ずれ」量を算出する。撮像画像Imにおける「画像内での位置ずれ」量は、「検出時刻Tdにおける、ワーク40の位置Pwと検出位置Pdとのずれ量(後述する、第一ずれ量Fd)」に対応する。
そして、第一ずれ量算出部1170は、「画像内での位置ずれ」量に対応する「第一ずれ量Fd」から、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ量である「位置ずれ量(把持ずれ量)」を算出する。
(ワークの位置ずれ、画像内での位置ずれ、撮影タイミングのずれについて)
以下の説明においては、撮像画像Imにおける、「ワーク40の位置Pw(例、ワーク40の中心位置)」と、実際には撮像されない「手先23の位置」とのずれ量を、「ワークの位置ずれ」量とも称する。撮像画像Imにおける「ワークの位置ずれ」量は、ワーク40の位置Pw(例、ワーク40の中心位置)と手先23の位置とのずれ量である位置ずれ量(つまり、把持ずれ量)に対応する。
また、撮像画像Imにおける、「ワーク40の位置Pw(例、ワーク40の中心位置)」と「基準点Rb(例、撮像画像Imの中心点)」とのずれ量を、「画像内での位置ずれ」量とも称する。「画像内での位置ずれ」量は「第一ずれ量Fd」に対応する。
撮像装置33が、手先23の位置と検出位置Pdとが一致していない時刻で撮像を実行することによって、撮像画像Imにおいて、実際には撮像されない「手先23の位置」と、「基準点Rb(例、撮像画像Imの中心点)」とはずれる。そこで、撮像画像Imにおける、実際には撮像されない「手先23の位置」と、「基準点Rb(例、撮像画像Imの中心点)」とのずれ量を、「撮影タイミングのずれ」量とも称する。「撮影タイミングのずれ」量は、後述する「第二ずれ量Sd」に対応する。
ここで、詳細は図9を用いて後述するが、「画像内での位置ずれ」量は、「ワークの位置ずれ」量と「撮影タイミングのずれ」量とに分解可能である。「ワークの位置ずれ」量と、「画像内での位置ずれ」量と、「撮影タイミングのずれ」量との上述の関係を、{「画像内での位置ずれ」量=「ワークの位置ずれ」量+「撮影タイミングのずれ」量}という形式で表してもよい。言い換えれば、「撮像画像Imにおける、ワーク40の位置Pwの、基準点Rbからのずれ量」は、撮像画像Imにおける、以下の2つのずれ量に分解することができる。すなわち、「撮像画像Imにおける、ワーク40の位置Pwの、手先23の位置からのずれ量」と、「撮像画像Imにおける、手先23の位置の、基準点Rbからのずれ量」とに分解できる。
ここで、検出時刻Tdにおいて、検出位置Pdと「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とは一致する。したがって、検出時刻Tdにおいて、「サーボ制御系20のフィードバック位置Pf」と「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とが一致する場合、以下の関係が成立する。すなわち、検出時刻Tdにおいて、「サーボ制御系20のフィードバック位置Pf」と検出位置Pdとは一致する。言い換えれば、検出時刻Tdにおいて、手先23の位置と「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とが一致する場合、検出時刻Tdにおいて、手先23の位置と検出位置Pdとは一致する。そして、検出時刻Tdにおいて、手先23の位置と検出位置Pdとが一致する場合、撮像画像Imにおける、手先23の位置と基準点Rbとの差である「撮影タイミングのずれ」量は「0」となる。
そして、{「画像内での位置ずれ」量=「ワークの位置ずれ」量+「撮影タイミングのずれ」量}だから、「撮影タイミングのずれ」量が「0」である場合、{「画像内での位置ずれ」量=「ワークの位置ずれ」量}となる。
したがって、検出時刻Tdにおいて、手先23の位置と検出位置Pdとが一致する場合、制御装置10は、「画像内での位置ずれ」量(つまり、第一ずれ量Fd)を算出することで、「ワークの位置ずれ」量(つまり、位置ずれ量)を精緻に特定することができる。
前述の通り、制御装置10は、手先23の移動を停止させずに、検出時刻Tdにおいて撮像画像Imを生成させることによって、手先23の移動を停止させてから撮像画像Imを生成させる方法に比べて、タクトを向上することができる。
また、制御装置10は、撮像画像Imを、手先23の位置と検出位置Pdとが一致すると予測した検出時刻Tdにおいて生成させる。そのため、検出時刻Tdにおいて、手先23の位置と検出位置Pdとが一致する場合、制御装置10は、「画像内での位置ずれ」量(つまり、第一ずれ量Fd)を算出することで、「ワークの位置ずれ」量(つまり、位置ずれ量)を精緻に特定することができる。
(基準ピンを設ける方式と比べた場合の優位性)
図7は、「撮影タイミングのずれ」に対処する方法を説明する図である。図7の(A)および図7の(B)の各々において、二点鎖線の交差する点は「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」を示している。また、点線で示す円の中心位置は、「検出時刻Tdにおける、手先23の位置」、つまり、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf(実位置)」を示している。さらに、星印は「ワーク40の位置Pw(例、ワーク40の中心位置)」を示している。また、図5、図6と同様に、図7においても、実際には手先23はワーク40に隠されて撮像されることはないため、撮像画像Imに対する画像解析のみによって、手先23の位置を把握することはできない。
図7の(A)は、ワーク40の移動を停止せずに撮像を実行させた場合に発生し得る「撮影タイミングのずれ」への対策として、手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像することによって、位置ずれを検出する方法を説明する図である。
図7の(A)に示す例では、手先23は、基準ピンで囲まれた領域の中心に位置する。そのため、撮像画像Im中に撮像されている基準ピンによって、手先23の位置を特定することができ、このようにして特定された手先23の位置と、ワーク40の位置とのずれ量を算出することができる。
「手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像する」方法によっても、基準ピンによって手先23の位置を特定でき、したがって、手先23の位置とワーク40の位置とのずれ量を、つまり、位置ずれ量を算出することができる。
また、「手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像する」方法は、位置ずれ量(把持ずれ量)を算出するために必要な撮像画像Imを、ワーク40の移動を停止せずに、生成することができる。そのため、「手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像する」方法は、「手先23の移動を停止させてから撮像画像Imを生成させる」方法に比べて、タクトを上げることができる。
ただし、図7の(A)に示すように、「手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像する」方法は、ワーク40に加えて、手先23の近傍に設けた基準ピンをも撮像する必要がある。そのため、「手先23の近傍に基準ピンを設け、ワーク40と共に基準ピンを撮像する」方法は、基準ピンを設けない方法に比べて撮像装置33に撮像させる撮像範囲を拡げなくてはならず、その結果、撮像画像Imについて、画素分解能が低下する傾向がある。
また、一般に、撮像装置33の被写界深度はそれほど深くない。図7の(A)に示すように、ワーク40を基板等に載置しようとする際に、基板上の他の部材と基準ピンとが干渉してしまう可能性がある。
そこで、制御装置10(特に、図1の検出時刻決定部1160)は、基準ピンを設けることなく位置ずれ量を算出可能な撮像画像Imを生成するために、手先23の位置と検出位置Pdとが一致すると予測した時刻(検出時刻Td)に、撮像画像Imを生成させる。具体的には、制御装置10は、撮像装置33に、検出時刻Tdに撮像を実行させる。
検出時刻Tdにおいて手先23の位置と検出位置Pdとが一致する場合、「ワーク40の位置Pwと手先23の位置とのずれ(つまり、位置ずれ)」は、「撮像画像Imにおける、ワーク40の位置Pwと基準点Rbとのずれ」に対応する。
したがって、制御装置10は、手先23の位置と検出位置Pdとが一致すると予測した時刻である検出時刻Tdに撮像画像Imを生成させることにより、位置ずれ量を算出可能な撮像画像Imを、基準ピンを設けずに生成させることができる。制御装置10は、基準ピンを設けずに位置ずれ量を算出可能な撮像画像Imを生成させることができるため、図7の(A)を用いて説明したような、基準ピンと他の部材との干渉を回避することができる。
また、制御装置10は、手先23の近傍に基準ピンを設ける必要がないため、手先23の大きさ(サイズ)を抑制することができる。特に、制御装置10は、近傍に基準ピンを設ける場合に比べて小型化した手先23を用いることによって、手先23が他の部材等と干渉するリスクを抑制することができる。
さらに、検出時刻Tdにおいて手先23の位置と検出位置Pdとが一致する場合、撮像画像Imにおいて、手先23の位置と基準点Rb(例、撮像画像Imの中心点)とは一致する。そして一般に、手先23の位置とワーク40の位置Pw(例、ワーク40の中心位置)とが大きくずれることは少ないため、撮像画像Imにおいて、ワーク40は、基準点Rbの周囲に配置されることになり、例えば、撮像画像Imの略中央に配置されることになる。
したがって、制御装置10は、ワーク40が略中央に配置されていない撮像画像Imに比べて、ワーク40の撮像された領域が撮像画像Imの全体に占める割合を大きくでき、つまり、ワーク40を拡大して撮像させた撮像画像Imを生成させることができる。そのため、制御装置10は、ワーク40が拡大して撮像された撮像画像Imに対して、撮像画像Imについての画素分解能を向上させた高精度な画像解析を行うことができる。
撮像画像Imについて、必要な撮像範囲は、ワーク40のサイズ(ワーク40の撮影される面の面積)と、想定される「位置ずれ(把持ずれ)の大きさ」とにより決定される。
(サーボの位置揺らぎの発生)
図7を用いて説明したように、「撮影タイミングのずれ」量を「0」とするタイミングにおいて撮像画像Imを生成することができた場合、撮像画像Imに対する画像解析のみによって、「ワークの位置ずれ」量を正確に算出することができる。
しかしながら、実際には、「検出時刻Tdにおけるサーボ制御系20のフィードバック位置Pf(具体的には、「検出時刻Tdにおける、手先23の位置」)」と、検出位置Pdとが、常に一致するとは限らない。すなわち、「検出時刻Tdにおける、サーボ制御系20の応答遅れ時間Dsを考慮した目標位置Pt」と、「検出時刻Tdにおける、フィードバック位置Pf」とが、常に一致するとは限らない。具体的には、サーボ制御系20の応答遅れ時間Dsを考慮したとしても、各時刻における、サーボ制御系20の目標位置Ptとフィードバック位置Pfとが常に一致するとは限らない。
以下の説明においては、各時刻において、「サーボ制御系20のフィードバック位置Pf」と、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とが一致しない(ずれる)ことを、「サーボの位置揺らぎ」とも称する。
図8は、検出位置Pdを「100」とした場合の動作プロファイルの一例を示す図である。具体的には、図8の(A)は、検出位置Pdを「100」とした場合について、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」および「これに対応するサーボ制御系20の目標速度」を示している。また、図8の(B)は、検出位置Pdを「100」とした場合について、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」に対する「サーボ制御系20のフィードバック位置Pf」のずれ量を示している。
検出位置Pdを「100」とした場合、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」に対する「サーボ制御系20のフィードバック位置Pf」のずれ量は、以下の範囲に収まっている。「-0.005mm(つまり、-5μm)」から「+0.005mm(つまり、+5μm)」の範囲に収まっている。
図8の(B)に示すように、サーボ制御系20の、各時刻におけるサーボ制御系20のフィードバック位置Pfは、サーボ制御系20の応答遅れ時間Dsを考慮したとしても、サーボ制御系20の、各時刻における目標位置Ptに完全には一致していない。つまり、各時刻における手先23の位置は、サーボ制御系20の応答遅れ時間Dsを考慮したとしても、サーボ制御系20の目標位置Ptに完全には一致していない。
ここで、前述の通り、検出時刻Tdにおいて、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」は、検出位置Pdに一致する。そして、検出時刻Tdにおいて、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」と「サーボ制御系20のフィードバック位置Pf(つまり、手先23の位置)」とは一致していない。したがって、検出時刻Tdにおいて、手先23の位置は、検出位置Pdに完全には一致していない。そのため、撮像画像Imにおいて、(実際には撮像されない)手先23の位置を、基準点Rbに一致するとみなすことはできず、つまり、「撮影タイミングのずれ」量を「0」とみなすことはできない。
(サーボの位置揺らぎによる、撮像画像への影響)
図9は、位置ずれ量(把持ずれ量)の特定に「撮影タイミングのずれ」の考慮が必要となることを説明する図である。図9の(A)および図9の(B)の各々において、二点鎖線の交差する点は「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」を示している。点線で示す円の中心位置は、「検出時刻Tdにおける、手先23の位置」、つまり、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を示している。星印は、「ワーク40の位置Pw(例、ワーク40の中心位置)」を示している。
図9に示す撮像画像Imにおいて、実線矢印は、「撮像画像Imにおける、ワーク40の位置Pwと基準点Rbとのずれ」(量)を示し、つまり、「画像内での位置ずれ」量を示している。また、点線矢印は、「ワーク40の位置Pwと『検出時刻Tdにおける、手先23の位置』とのずれ」(量)を示し、つまり、「ワークの位置ずれ」量を示している。さらに、一点鎖線矢印は、「『検出時刻Tdにおける、手先23の位置』と基準点Rbとのずれ」(量)を示し、つまり、「撮影タイミングのずれ」量を示している。
また、図5、図6、図7と同様に、図9においても、実際には手先23はワーク40に隠されて撮像されることはないため、撮像画像Imに対する画像解析のみによって、手先23の位置を把握することはできない。
図9の(A)に示す撮像画像Imにおいて、点線で示す円の中心位置(つまり、手先23の位置)と二点鎖線の交差する基準点R(つまり、検出位置Pd)とは一致している。つまり、図9の(A)は、「撮影タイミングのずれ」のない撮像画像Imを示している。
図9の(A)に示す撮像画像Imにおいて、「ワークの位置ずれ」量は、「画像内での位置ずれ」量に一致している。すなわち、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置とのずれ量は、星印と基準点Rとのずれ量に一致している。
つまり、「撮影タイミングのずれ」がない場合、制御装置10は、撮像画像Imに対する画像解析によって、撮像画像Imにおける「画像内での位置ずれ」量を算出でき、算出した「画像内での位置ずれ」量は、「ワークの位置ずれ」量に等しい。
ここで、前述の通り、「検出時刻Tdにおける、ワーク40の位置Pwと手先23の位置(フィードバック位置Pf)とのずれ」量である位置ずれ量(把持ずれ量)は、撮像画像Imにおける「ワークの位置ずれ」量に対応する。
したがって、「撮影タイミングのずれ」がない場合、制御装置10は、画像解析によって特定した「撮像画像Imにおける『画像内での位置ずれ』量」から、位置ずれ量を算出することができる。
図9の(B)に示す撮像画像Imにおいて、点線で示す円の中心位置と二点鎖線の交差する基準点Rとはずれている。つまり、図9の(B)は、「撮影タイミングのずれ」量が「0」でない(言い換えれば、「撮影タイミングのずれ」が発生した)撮像画像Imを示している。
図9の(B)に示す撮像画像Imにおいて、「ワークの位置ずれ」量は、「画像内での位置ずれ」量に一致していない。すなわち、星印(つまり、ワーク40の位置Pw)と点線で示す円の中心位置とのずれ量は、星印と基準点Rとのずれ量に一致していない。
そのため、撮像画像Imにおける「画像内での位置ずれ」量を画像解析によって算出するだけでは、撮像画像Imにおける「ワークの位置ずれ」量を算出することはできない。そのため、撮像画像Imにおける「ワークの位置ずれ」量に対応する、「位置ずれ量(把持ずれ量)」を特定することもできない。
撮像画像Imにおいて成立する、{「画像内での位置ずれ」量は、「ワークの位置ずれ」量と「撮影タイミングのずれ」量とに分解可能である}という関係は、図9の(B)にも示されている。したがって、「撮影タイミングのずれ」が発生した場合、撮像画像Imにおける「ワークの位置ずれ」量を特定するためには、「画像内での位置ずれ」量と「撮影タイミングのずれ」量とを算出する必要がある。つまり、検出時刻Tdにおける手先23の位置と検出位置Pdとがずれる場合、「位置ずれ量」を特定するには、「画像内での位置ずれ」量に対応する第一ずれ量Fdと、「撮影タイミングのずれ」量に対応する第二ずれ量Sdとを算出する必要がある。
図10は、「撮影タイミングのずれ」の、位置ずれ(把持ずれ)への影響を一次元上で説明する図である。図10の(A)および図10の(B)の各々において、実線矢印は、「検出時刻Tdにおける、ワーク40の位置Pwと検出位置Pdとのずれ」(量)(つまり、第一ずれ量Fd)を示し、つまり、撮像画像Imにおける「画像内での位置ずれ」量に対応する。また、点線矢印は、「検出時刻Tdにおける、ワーク40の位置Pwと手先23の位置(フィードバック位置Pf)とのずれ」(量)(つまり、位置ずれ量)を示し、つまり、撮像画像Imにおける「ワークの位置ずれ」量に対応する。さらに、一点鎖線矢印は「検出時刻Tdにおける、手先23の位置と基準点Rbとのずれ」(量)(後述する、第二ずれ量Sd)を示し、つまり、撮像画像Imにおける「撮影タイミングのずれ」量に対応する。
図10の(A)に示すように、「検出時刻Tdにおいて、手先23の位置(フィードバック位置Pf)と検出位置Pdとが一致する」場合、位置ずれ量(把持ずれ量)は、第一ずれ量Fdに一致する。つまり、「撮影タイミングのずれ」がない場合、「ワークの位置ずれ」量は、「画像内での位置ずれ」量に一致する。
したがって、「撮影タイミングのずれ」がない場合、制御装置10は、撮像画像Imにおける「画像内での位置ずれ」量を画像解析によって算出することにより、位置ずれ量(把持ずれ量)に対応する「ワークの位置ずれ」量を特定することができる。言い換えれば、「検出時刻Tdにおいて、手先23の位置と検出位置Pdとが一致する」場合、制御装置10は、第一ずれ量Fdから、位置ずれ量(把持ずれ量)を特定することができる。
図10の(B)に示すように、「検出時刻Tdにおいて、手先23の位置(フィードバック位置Pf)と検出位置Pdとが一致しない」場合、位置ずれ量(把持ずれ量)は、第一ずれ量Fdに一致しない。つまり、「撮影タイミングのずれ」がある場合、「ワークの位置ずれ」量は、「画像内での位置ずれ」量に一致しない。
したがって、「撮影タイミングのずれ」がある場合、制御装置10は、撮像画像Imにおける「画像内での位置ずれ」量を画像解析によって算出するだけでは、位置ずれ量(把持ずれ量)に対応する「ワークの位置ずれ」量を特定できない。言い換えれば、「検出時刻Tdにおいて、手先23の位置と検出位置Pdとが一致しない」場合、制御装置10は、第一ずれ量Fdのみからでは、位置ずれ量(把持ずれ量)を特定することができない。
図10の(B)に示すように、「撮影タイミングのずれ」がある場合、点線矢印の大きさを特定するには、実線矢印の大きさに加え、一点鎖線矢印の大きさを算出する必要がある。言い換えれば、検出時刻Tdにおいて、手先23の位置と検出位置Pdとがずれる場合、「ワークの位置ずれ」量を特定するには、「画像内での位置ずれ」量に加え、「撮影タイミングのずれ」量を算出する必要がある。
したがって、「撮影タイミングのずれ」がある場合、制御装置10は、「画像内での位置ずれ」量に加え、「撮影タイミングのずれ」量を算出することによって、「ワークの位置ずれ」量を精緻に特定する。言い換えれば、制御装置10は、第一ずれ量Fdに加え、第二ずれ量Sdを算出することによって、位置ずれ量(把持ずれ量)を精緻に特定する。そして、制御装置10は、特定した「ワークの位置ずれ」量を考慮して、サーボ制御系20に対する制御を補正することにより、ワーク40の正確な位置制御を実現する。
(移動距離を短くした場合の、サーボの位置揺らぎ)
ここで、サーボ制御系20の移動距離(手先23の移動距離)を短くした場合、言い換えれば、サーボ制御系20によるワーク40の移動距離(搬送距離)を短くした場合、サーボ制御系20の位置揺らぎが大きくなることが一般に知られている。
図11は、ワーク40の移動距離(搬送距離)を短くする状況を説明する図である。図11に示すように、タクト短縮のための方策として、ワーク40の移動距離(搬送距離)を、つまり、手先23の移動距離を、短くすることが挙げられる。すなわち、図11の(B)に示すワーク40の移動距離は、図11の(A)に示すワーク40の移動距離よりも短い。その結果、ワーク40の移動速度が同じ場合、図11の(B)に例示する作業を実行するのに要する時間は、図11の(A)に例示する作業を実行するのに要する時間よりも短くなる。
図12は、検出位置Pdを「40」とした場合の動作プロファイルの一例を示す図である。具体的には、図12の(A)は、検出位置Pdを「40」とした場合について、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」および「これに対応するサーボ制御系20の目標速度」を示している。また、図12の(B)は、検出位置Pdを「40」とした場合について、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」に対する「サーボ制御系20のフィードバック位置Pf」のずれ量を示している。
検出位置Pdを「40」とした場合、各時刻における、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」に対する「サーボ制御系20のフィードバック位置Pf」のずれ量は、以下の範囲に収まっている。「-0.2mm(つまり、-200μm)」から「+0.2mm(つまり、+200μm)」の範囲に収まっている。
図8の(B)に示した「検出位置Pdを『100』とした場合のずれ量」に比べて、図12の(B)に示した「検出位置Pdを『40』とした場合のずれ量」は大きい。すなわち、図8の(B)に示した「検出位置Pdを『100』とした場合のずれ量」は、「0.005mm」から「+0.005mm」の範囲に収まっていた。これに対して、図12の(B)に示した「検出位置Pdを『40』とした場合のずれ量」は、「-0.2mm」から「+0.2mm」の範囲になっている。
図12の(A)に示すように、手先23の移動距離を短くすると、動作プロファイルが三角波となり、フィードバック位置Pfを「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」へ追従させるのは、より困難となる。
(画素分解能の違いによる、「撮影タイミングのずれ」の影響の違い)
図13は、画素分解能の違いによる、「撮影タイミングのずれ」の影響の違いを説明する図である。図13の(A)および図13の(B)の各々において、二点鎖線の交差する点は「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」を示している。点線で示す円の中心位置は、「検出時刻Tdにおける、手先23の位置」、つまり、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を示している。また、図5等と同様に、図13においても、実際には手先23はワーク40に隠されて撮像されることはない。
図13に示すように、撮像画像Imに撮像されるワーク40の画像を拡大し、言い換えれば、ワーク40を拡大した撮像画像Imを生成し、画素分解能を上げていくと、「サーボの位置揺らぎ」の影響が大きくなる。「サーボの位置揺らぎ」は、撮像画像Imにおいて、「撮影タイミングのずれ」量として現れる。
具体的には、画素分解能が「サーボの位置揺らぎ」量(つまり、撮像画像Imにおける「撮影タイミングのずれ」量)より大きい場合、「サーボの位置揺らぎ」量の「ワークの位置ずれ」量(つまり、位置ずれ量(把持ずれ量))への影響は小さい。例えば、要求精度が「100μm」、画素分解能が「10μm」、「サーボの位置揺らぎ」量が、画素分解能の「10μm」よりも小さな「±5μm」である場合、「サーボの位置揺らぎ」量の「ワークの位置ずれ」量への影響は、無視することができる。
これに対して、画素分解能が「サーボの位置揺らぎ」量以下の場合、「サーボの位置揺らぎ」量の「ワークの位置ずれ」量(つまり、位置ずれ量(把持ずれ量))への影響は大きい。例えば、要求精度が「10μm」、画素分解能が「1μm」、「サーボの位置揺らぎ」量が、画素分解能の「1μm」以上の「±5μm」である場合、「サーボの位置揺らぎ」量の「ワークの位置ずれ」量への影響は、無視することができない。
すなわち、「サーボの位置揺らぎ」量が変わらない場合、「サーボの位置揺らぎ」量の「ワークの位置ずれ」量への影響は、画素分解能が「サーボの位置揺らぎ」量より大きい場合は無視でき、画素分解能が「サーボの位置揺らぎ」量以下の場合は無視できない。
画素分解能が「サーボの位置揺らぎ」量(つまり、撮像画像Imにおける「撮影タイミングのずれ」量)以下の場合、手先23を移動させる際のわずかな「サーボの位置揺らぎ」が原因となって、「ワークの位置ずれ」量を精緻に特定することができなくなる。その結果、「『ワークの位置ずれ』量に対応する位置ずれ量(把持ずれ量)を考慮して、ワーク40を所望の位置へと高精度に移動する」ことができなくなる。つまり、画素分解能を上げていくと、各時刻における、「サーボ制御系20のフィードバック位置Pf」と「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれが、無視できなくなってくる。
(「サーボの位置揺らぎ」を考慮して特定する「ワークの位置ずれ」)
図14は、検出時刻Tdにおける、「サーボ制御系20のフィードバック位置Pf」と、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれを説明する図である。具体的には、図14には、図8の(B)と、検出時刻Td付近における、図8の(B)の拡大図とが示されている。拡大図において、検出時刻Tdにおける、「サーボ制御系20のフィードバック位置Pf」と、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれ(量)は、一点鎖線矢印で示されている。
これまで説明してきたように、「撮影タイミングのずれ」がある場合、「ワークの位置ずれ」量を精緻に特定するためには、撮像画像Imにおける「画像内での位置ずれ」量に加え、撮像画像Imにおける「撮影タイミングのずれ」量を算出する必要がある。
そして、前述の通り、「撮影タイミングのずれ」量とは、撮像画像Imにおける、「手先23の位置(つまり、サーボ制御系20のフィードバック位置Pf)」と、「検出位置Pdに対応する、基準点Rb(例、撮像画像Imの中心点)」とのずれ量である。また、検出時刻Tdにおいて、検出位置Pdと、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とは一致する。
したがって、「撮影タイミングのずれ」量は、検出時刻Tdにおける、「手先23の位置(つまり、サーボ制御系20のフィードバック位置Pf)」と、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれに対応する。
そこで、制御装置10(特に、図1の第二ずれ量算出部1190)は、「撮影タイミングのずれ」量として、検出時刻Tdにおける、「手先23の位置」と「応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれを算出する。すなわち、第二ずれ量算出部1190は、「撮影タイミングのずれ」量として、検出時刻Tdにおける、「サーボ制御系20のフィードバック位置Pf」と「応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれ量を算出する。検出時刻Tdにおける、「サーボ制御系20のフィードバック位置Pf」と「応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」とのずれ量は、「第二ずれ量Sd」とも称される。
具体的には、第二ずれ量算出部1190は、図14の拡大図において一点鎖線矢印で示した「第二ずれ量Sd」を算出する。
図9から図14を用いて説明した内容を整理すれば以下の通りである。すなわち、制御装置10(特に、図1の第二ずれ量算出部1190)は、撮像画像Imにおける「撮影タイミングのずれ」量に対応する第二ずれ量Sdを算出する。具体的には、第二ずれ量算出部1190は、第二ずれ量Sdとして、「検出時刻Tdにおける、『サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt』と、『サーボ制御系20のフィードバック位置Pf』とのずれ」量を算出する。
また、制御装置10(特に、図1の第一ずれ量算出部1170)は、撮像画像Imに対する画像解析によって、「撮像画像Imにおける、ワーク40の位置Pwと基準点Rbとのずれ量」である「画像内での位置ずれ」量を算出する。そして、第一ずれ量算出部1170は、「画像内での位置ずれ」量に対応する第一ずれ量Fdを特定する。
制御装置10は、{「画像内での位置ずれ」量=「ワークの位置ずれ」量+「撮影タイミングのずれ」量}との関係式に基づいて、「撮影タイミングのずれ」量と「画像内での位置ずれ」量とから、「ワークの位置ずれ」量を算出する。つまり、制御装置10は、第二ずれ量Sdと第一ずれ量Fdとから、位置ずれ量(把持ずれ量)を算出する。
§2.構成例
これまでに概要を説明してきた制御装置10について、次に、図1を用いてその詳細を説明していく。
図1は、制御装置10の構成例を示す図である。制御装置10は、機能ブロックとして、例えば、目標軌道Ttを取得する目標軌道取得部1110と、目標軌道Ttから時刻ごとの目標位置Ptを生成する位置指令生成部1120と、補正後目標位置aPtを算出する位置指令補正部1130と、を備えている。また、制御装置10は、機能ブロックとして、例えば、第一ずれ量Fdを算出する第一ずれ量算出部1170と、第二ずれ量Sdを算出するフィードバック位置算出部1180および第二ずれ量算出部1190とを備えている。さらに、制御装置10は、機能ブロックとして、例えば、サーボ制御系20の応答遅れ時間Dsを算出する応答遅れ時間算出部1150と、検出指示時刻aTdを決定する検出時刻決定部1160とを備えている。加えて、制御装置10は、機能ブロックとして、例えば、補正後目標位置aPtから指令値Cmを生成する指令値生成部1140と、サーボ制御系20等との通信を実行する通信部1200とを備えている。
制御装置10は、上述の各機能ブロックに加えて、例えば、以下の構成(機能ブロック)を備えてもよい。すなわち、制御装置10は、時刻ごとのサーボ制御系20の実位置(フィードバック位置Pf)を、時刻ごとのサーボ制御系20の目標位置Pt(特に、サーボ制御系20の応答遅れ時間Dsを考慮した目標位置Pt)に一致させるサーボ制御部等を備えてもよい。記載の簡潔性を担保するため、本実施の形態に直接関係のない制御装置10の構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、制御装置10は、これらの省略された構成を備えてもよい。
制御装置10の備える上述の機能ブロックは、例えば、CPU(central processing unit)等が、ROM(read only memory)、NVRAM(non-Volatile random access memory)等で実現された記憶装置(記憶部1300)に記憶されているプログラムを不図示のRAM(random access memory)等に読み出して実行することで実現できる。以下に先ず、記憶部以外の機能ブロックについて、その詳細を説明する。
(記憶部以外の機能ブロックについて)
目標軌道取得部1110は、外部(例えばユーザ)から目標軌道データ(目標軌道Tt)を受け付け、受け付けた目標軌道Ttを、位置指令生成部1120に出力する。
位置指令生成部1120は、目標軌道Ttから、「制御周期Ccごとの目標位置Pt」を生成し、生成した「制御周期Ccごとの目標位置Pt」を位置指令補正部1130に出力する。
位置指令補正部1130は、位置指令生成部1120から「制御周期Ccごとの目標位置Pt」を取得し、第一ずれ量算出部1170から第一ずれ量Fdを取得し、第二ずれ量算出部1190から第二ずれ量Sdを取得する。そして、位置指令補正部1130は、「制御周期Ccごとの目標位置Pt」を第一ずれ量Fdおよび第二ずれ量Sdによって補正した「制御周期Ccごとの補正後目標位置aPt」を生成する。位置指令補正部1130は、生成した「制御周期Ccごとの補正後目標位置aPt」を指令値生成部1140へと出力する。また、位置指令補正部1130は、「制御周期Ccごとの目標位置Pt」を、検出時刻決定部1160および第二ずれ量算出部1190へと出力する。
指令値生成部1140は、位置指令補正部1130から「制御周期Ccごとの補正後目標位置aPt」を取得し、応答遅れ時間算出部1150から「サーボ制御系20の応答遅れ時間Ds」を取得する。指令値生成部1140は、「制御周期Ccごとの補正後目標位置aPt」から、「サーボ制御系20の応答遅れ時間Ds」を考慮して、「サーボ制御系20に対する制御周期Ccごとの指令値Cm」を生成する。指令値生成部1140は、生成した「サーボ制御系20に対する制御周期Ccごとの指令値Cm」を、通信部1200へと、特に指令部1210へと、出力する。
例えば、位置指令補正部1130から取得した「制御周期Ccごとの補正後目標位置aPt」において、時刻T(n)における補正後目標位置aPt(n)がP(n)であると、指令値生成部1140は、以下の指令値Cmを生成する。すなわち、指令値生成部1140は、「時刻T(n)から『サーボ制御系20の応答遅れ時間Ds』を遡った時刻」における補正後目標位置aPt(n)をP(n)とする指令値Cmを生成する。
ここで、制御装置10が複数のサーボ制御系20を制御する場合、指令値生成部1140は、複数のサーボ制御系20の制御結果(制御量)を同期させるために、以下の処理を実行する。すなわち、複数のサーボ制御系20の各々について、複数のサーボドライバ21の各々が指令値Cmを受信してから、対応するサーボモータ22が応答するまでの時間(応答遅れ時間Ds)は、複数のサーボ制御系20の各々で異なっている場合がある。そこで、指令値生成部1140は、複数のサーボ制御系20の各々に対する指令値Cmを、複数のサーボ制御系20の各々の応答遅れ時間Dsを考慮して、生成する。
具体的には、指令値生成部1140は、「制御周期Ccごとの補正後目標位置aPt」から、「サーボ制御系20(A)の応答遅れ時間Ds(A)」を考慮して、サーボ制御系20(A)に対する制御周期Ccごとの指令値Cm(A)を生成する。指令値生成部1140は、「制御周期Ccごとの補正後目標位置aPt」から、「サーボ制御系20(B)の応答遅れ時間Ds(B)」を考慮して、サーボ制御系20(B)に対する制御周期Ccごとの指令値Cm(B)を生成する。指令値生成部1140は、「制御周期Ccごとの補正後目標位置aPt」から、「サーボ制御系20(C)の応答遅れ時間Ds(C)」を考慮して、サーボ制御系20(C)に対する制御周期Ccごとの指令値Cm(C)を生成する。指令値生成部1140は、「制御周期Ccごとの補正後目標位置aPt」から、「サーボ制御系20(D)の応答遅れ時間Ds(D)」を考慮して、サーボ制御系20(D)に対する制御周期Ccごとの指令値Cm(D)を生成する。
複数のサーボ制御系20の各々で異なる応答遅れ時間Dsを考慮して、複数のサーボ制御系20の各々に対する指令値Cmを生成することによって、指令値生成部1140は、複数のサーボ制御系20の各々の制御結果を同期させることができる。
応答遅れ時間算出部1150は、サーボ制御系20(特に、サーボドライバ21)の制御特性を示すサーボパラメータを取得し、取得したサーボパラメータから、「サーボ制御系20の応答遅れ時間Ds」を算出する。応答遅れ時間算出部1150は、算出した「サーボ制御系20の応答遅れ時間Ds」を、指令値生成部1140、検出時刻決定部1160、および、第二ずれ量算出部1190へと出力する。
応答遅れ時間算出部1150は、サーボ制御系20の制御特性を示すサーボパラメータとして、サーボドライバ21の位置ループゲインを用いて、サーボ制御系20の応答遅れ時間Dsを算出してもよい。例えば、応答遅れ時間算出部1150は、サーボ制御系20(A)の応答遅れ時間Ds(A)を、サーボドライバ21(A)のサーボパラメータの1つである位置ループゲインの逆数としてもよい。応答遅れ時間算出部1150は、サーボ制御系20(B)の応答遅れ時間Ds(B)を、サーボドライバ21(B)のサーボパラメータの1つである位置ループゲインの逆数としてもよい。応答遅れ時間算出部1150は、サーボ制御系20(C)の応答遅れ時間Ds(C)を、サーボドライバ21(C)のサーボパラメータの1つである位置ループゲインの逆数としてもよい。応答遅れ時間算出部1150は、サーボ制御系20(D)の応答遅れ時間Ds(D)を、サーボドライバ21(D)のサーボパラメータの1つである位置ループゲインの逆数としてもよい。
検出時刻決定部1160は、位置指令補正部1130から「制御周期Ccごとの目標位置Pt」を取得し、応答遅れ時間算出部1150から「サーボ制御系20の応答遅れ時間Ds」を取得する。また、検出時刻決定部1160は、記憶部1300を参照して、検出位置テーブル1310から「検出位置Pdに係る情報」を取得し、検出器応答遅れ時間テーブル1320から「検出系30の応答遅れ時間Dd」を取得する。検出時刻決定部1160は、「制御周期Ccごとの目標位置Pt」、「サーボ制御系20の応答遅れ時間Ds」、「検出位置Pdに係る情報」、および、「検出系30の応答遅れ時間Dd」から、検出時刻Tdおよび検出指示時刻aTdを算出する。そして、検出時刻決定部1160は、算出した検出指示時刻aTdを、通信部1200へと、特に指令部1210へと、出力する。
具体的には、検出時刻決定部1160は、先ず、「制御周期Ccごとの目標位置Pt」、「サーボ制御系20の応答遅れ時間Ds」、および、「検出位置Pdに係る情報」から、検出時刻Tdを算出する。すなわち、検出時刻決定部1160は、「サーボ制御系20の応答遅れ時間Ds」を考慮して、目標位置Ptと検出位置Pdとが一致する時刻として算出した時刻を、検出時刻Tdとする。
検出時刻決定部1160は、次に、検出時刻Tdと「検出系30の応答遅れ時間Dd」とから、検出指示時刻aTdを算出する。すなわち、検出時刻決定部1160は、検出時刻Tdを「検出系30の応答遅れ時間Dd」によって補正した時刻を、検出指示時刻aTdとする。
例えば、「サーボ制御系20の応答遅れ時間Ds」が存在しない場合に、目標位置Ptと検出位置Pdとが一致する時刻が時刻T0であったとすると、検出時刻決定部1160は、次のように、検出時刻Tdおよび検出指示時刻aTdを算出する。すなわち、検出時刻決定部1160は、「目標位置Ptと検出位置Pdとが一致する」時刻T0から、「サーボ制御系20の応答遅れ時間Ds」を経た時刻を、検出時刻Tdとする。また、検出時刻決定部1160は、検出時刻Tdから「検出系30の応答遅れ時間Dd」を遡った時刻を、検出指示時刻aTdとする。
第一ずれ量算出部1170は、通信部1200から、特に制御量取得部1220から、撮像画像Imを取得する。第一ずれ量算出部1170は、撮像画像Imに対して画像解析を実行して、撮像画像Imにおける「画像内での位置ずれ」量を算出し、算出した「画像内での位置ずれ」量から、第一ずれ量Fdを特定する。第一ずれ量算出部1170は、特定した第一ずれ量Fdを、位置指令補正部1130へと出力する。
具体的には、第一ずれ量算出部1170は、撮像画像Imに対して画像解析を実行して、撮像画像Imにおけるワーク40の位置Pw(例、ワーク40の中心位置)と基準点Rbとのずれ量である「画像内での位置ずれ」量を算出する。そして、第一ずれ量算出部1170は、算出した「画像内での位置ずれ」量から、「画像内での位置ずれ」量に対応する、「検出時刻Tdにおける、ワーク40の位置Pwと検出位置Pdとのずれ量」である第一ずれ量Fdを特定する。
ただし、第一ずれ量算出部1170は、通信部1200(特に、制御量取得部1220)から、撮像画像Imに代えて、撮像画像Imの画像解析結果を取得してもよく、特に、撮像画像Imにおける「画像内での位置ずれ」量を取得してもよい。第一ずれ量算出部1170は、撮像画像Imにおける「画像内での位置ずれ」量から第一ずれ量Fdを特定できればよく、撮像画像Imから「画像内での位置ずれ」量を算出するのは、第一ずれ量算出部1170であっても、検出系30であってもよい。
すなわち、制御装置10(特に、制御量取得部1220)は、検出系30(例えば、撮像制御装置32)が撮像画像Imに対する画像解析によって算出した「画像内での位置ずれ」量を受信してもよい。そして、第一ずれ量算出部1170は、撮像制御装置32が受信した「画像内での位置ずれ」量から、第一ずれ量Fdを算出してもよい。
フィードバック位置算出部1180は、通信部1200から、特に制御量取得部1220から、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」を取得する。フィードバック位置算出部1180は、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」から、補間計算によって、「検出時刻Tdにおけるフィードバック位置Pf」を算出する。フィードバック位置算出部1180は、算出した「検出時刻Tdにおけるフィードバック位置Pf」を、第二ずれ量算出部1190へと出力する。
例えば、nを「0以上の整数」として、検出時刻Tdが「n」回目の制御周期Cc(n)と「n+1」回目の制御周期Cc(n+1)との間の時刻である場合、フィードバック位置算出部1180は、以下の処理を実行する。すなわち、フィードバック位置算出部1180は、先ず、「制御周期Cc(n)におけるフィードバック位置Pf(n)」と、「制御周期Cc(n+1)におけるフィードバック位置Pf(n+1)」とを取得する。そして、フィードバック位置算出部1180は、フィードバック位置Pf(n)とフィードバック位置Pf(n+1)とから、補間計算によって、「検出時刻Tdにおけるフィードバック位置Pf」を算出する。例えば、フィードバック位置算出部1180は、フィードバック位置Pf(n)とフィードバック位置Pf(n+1)とを結ぶ直線(または曲線)と、検出時刻Tdを示す直線との交点から、「検出時刻Tdにおけるフィードバック位置Pf」を算出する。
すなわち、フィードバック位置算出部1180は、制御周期Ccごとに取得した、複数の「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」から、補間計算によって、「検出時刻Tdにおけるフィードバック位置Pf」を算出してもよい。
第二ずれ量算出部1190は、位置指令補正部1130から「制御周期Ccごとの目標位置Pt」を取得し、応答遅れ時間算出部1150から「サーボ制御系20の応答遅れ時間Ds」を取得する。また、第二ずれ量算出部1190は、フィードバック位置算出部1180から「検出時刻Tdにおけるフィードバック位置Pf」を取得する。
第二ずれ量算出部1190は、「制御周期Ccごとの目標位置Pt」と、「サーボ制御系20の応答遅れ時間Ds」と、「検出時刻Tdにおけるフィードバック位置Pf」とから、第二ずれ量Sdを算出する。第二ずれ量算出部1190は、算出した第二ずれ量Sdを、位置指令補正部1130へと出力する。
第二ずれ量算出部1190は、先ず、「制御周期Ccごとの目標位置Pt」と、「サーボ制御系20の応答遅れ時間Ds」とから、「検出時刻Tdにおける目標位置Pt」を算出する。第二ずれ量算出部1190は、次に、「検出時刻Tdにおける目標位置Pt」と「検出時刻Tdにおけるフィードバック位置Pf」とから、第二ずれ量Sdを算出する。
通信部1200は、制御周期Ccごとに周期的に、スレーブとしてのサーボ制御系20および検出系30の各々と通信を実行し、指令部1210および制御量取得部1220を含んでいる。
指令部1210は、指令値生成部1140から「サーボ制御系20に対する制御周期Ccごとの指令値Cm」を取得し、検出時刻決定部1160から検出指示時刻aTdを取得する。指令部1210は、スレーブであるサーボ制御系20および検出系30へと、指令値Cmおよび検出指示時刻aTdを含む制御信号Cs(制御指示)を、制御周期Ccごとに出力する(送信する)。
制御量取得部1220は、スレーブであるサーボ制御系20および検出系30から、これらのスレーブが出力する制御結果(例、制御量および検出結果)を示すデータを、制御周期Ccごとに取得する(受信する)。すなわち、制御量取得部1220は、サーボ制御系20から「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」を示す情報を取得し、検出系30から撮像画像Imを取得する。制御量取得部1220は、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」を示す情報をフィードバック位置算出部1180へと送信し、撮像画像Imを第一ずれ量算出部1170へと出力する。
「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」を示す情報は、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」に加えて、フィードバック位置Pfが検出された時刻である実測時刻Tmを示す情報を含んでいてもよい。その場合、フィードバック位置算出部1180は、例えば、「制御周期Cc(n)におけるフィードバック位置Pf(n)」と「フィードバック位置Pf(n)が検出された実測時刻Tm(n)」とを取得する。また、フィードバック位置算出部1180は、「制御周期Cc(n+1)におけるフィードバック位置Pf(n+1)」と「フィードバック位置Pf(n+1)が検出された実測時刻Tm(n+1)」とを取得する。そして、フィードバック位置算出部1180は、実測時刻Tm(n)におけるフィードバック位置Pf(n)と、実測時刻Tm(n+1)におけるフィードバック位置Pf(n+1)とから、「検出時刻Tdにおけるフィードバック位置Pf」を算出する。
また、前述の通り、制御量取得部1220は、検出系30から、撮像画像Imの代わりに、検出系30(例えば、撮像制御装置32)が撮像画像Imに対する画像解析によって算出した「画像内での位置ずれ」量を取得してもよい。その場合、制御量取得部1220は、取得した「画像内での位置ずれ」量を、第一ずれ量算出部1170へと出力する。
(記憶部について)
記憶部1300は、制御装置10が使用する各種データを格納する記憶装置である。なお、記憶部1300は、制御装置10が実行する(1)制御プログラム、(2)OSプログラム、(3)制御装置10が有する各種機能を実行するためのアプリケーションプログラム、および、(4)該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の(1)~(4)のデータは、例えば、ROM(read only memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)、HDD(Hard Disc Drive)等の不揮発性記憶装置に記憶される。制御装置10は、図示しない一時記憶部を備えていてもよい。一時記憶部は、制御装置10が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、RAM(Random Access Memory)等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、制御装置10の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部1300はさらに、検出位置テーブル1310、および、検出器応答遅れ時間テーブル1320を格納している。
検出位置テーブル1310には、「検出位置Pdに係る情報」が、具体的には、「検出位置Pdを特定する情報」が格納されている。
検出器応答遅れ時間テーブル1320には、「検出系30の応答遅れ時間Dd」が格納されている。
記憶部1300は、検出位置テーブル1310、および、検出器応答遅れ時間テーブル1320に加えて、サーボ制御系20(特に、サーボドライバ21)の制御特性を示すサーボパラメータを格納していてもよい。特に、記憶部1300は、複数のサーボ制御系20(特に、サーボドライバ21)の各々の制御特性を示すサーボパラメータを格納していてもよい。
(制御装置についての整理)
これまでに図1から図14を用いて説明してきた内容は、以下のように整理することができる。すなわち、制御装置10は、目標軌道Ttから演算した指令値Cmをサーボ制御系20に出力する制御装置である。制御装置10は、第一ずれ量算出部1170と、第二ずれ量算出部1190と、指令値生成部1140とを備えている。
第一ずれ量算出部1170は、検出時刻Tdにおける、撮像装置33(検出装置)の検出結果(つまり、撮像画像Im)から、サーボ制御系20によって位置を制御されるワーク40の位置Pwの、検出位置Pdからのずれ量である第一ずれ量Fdを算出する。ここで、検出時刻Tdとは、サーボ制御系20の応答遅れ時間Dsを考慮して目標軌道Ttから算出される目標位置Ptが、「撮像装置33が検出対象を検出する位置」である検出位置Pdに一致する時刻である。
第二ずれ量算出部1190は、「『検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf』と『検出時刻Tdにおける、サーボ制御系20の応答遅れ時間Dsを考慮して算出された目標位置Pt』とのずれ量」である第二ずれ量Sdを算出する。
指令値生成部1140は、「目標軌道Ttから算出される目標位置Pt」を、第一ずれ量Fdと第二ずれ量Sdとによって補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとから、指令値Cmを生成する。
前記の構成によれば、制御装置10は、「目標軌道Ttから算出される目標位置Pt」を第一ずれ量Fdと第二ずれ量Sdとによって補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、指令値Cmを生成する。
ここで、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合、検出時刻Tdにおいて、フィードバック位置Pfは、検出位置Pdに完全に一致することになる。そのため、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合、ワーク40の位置Pwの、フィードバック位置Pfからのずれ量(つまり、位置ずれ量)は、第一ずれ量Fdのみから特定できる。つまり、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合には、位置ずれ量(把持ずれ量)は、第一ずれ量Fdのみから特定することができる。
しかしながら、実際には、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とは、完全には一致しないことがある。
そこで、制御装置10は、第一ずれ量Fdに加えて、第二ずれ量Sdをも考慮することによって、検出時刻Tdにおける「ワーク40の位置Pwの、フィードバック位置Pfからのずれ量」(つまり、位置ずれ量)を高精度に特定する。そして、制御装置10は、特定した「ワーク40の位置Pwの、フィードバック位置Pfからのずれ量」によって「目標軌道Ttから算出される目標位置Pt」を補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとから、指令値Cmを生成する。
したがって、制御装置10は、サーボ制御系20のフィードバック位置Pfと、サーボ制御系20によって位置を制御されるワーク40の位置Pwとのずれを考慮することにより、ワーク40の位置制御を高精度化することができるとの効果を奏する。
また、制御装置10は、「応答遅れ時間Dsを考慮して算出された目標位置Ptが、検出位置Pdに一致する」検出時刻Tdにおける検出結果である撮像画像Imから、第一ずれ量Fdを算出する。そのため、制御装置10は、第一ずれ量Fdを算出するために、サーボ制御系20によるワーク40の移動を停止する必要がない。
したがって、制御装置10は、ワーク40に対する高精度な位置制御を、高速に実行することができ、言い換えれば、ワーク40の高速かつ高精度な位置制御を実現することができるとの効果を奏する。
制御システム1において、撮像制御装置32(検出制御装置)は、撮像装置33による検出動作(具体的には、撮像動作)を制御し、撮像制御装置32は、通信装置31(通信制御装置)との間で通信を実行する。
制御装置10は、通信装置31へと制御周期Ccごとに送信する制御信号Csにおいて、検出系30の応答遅れ時間Dd(撮像装置33の応答遅れ時間Dd)を考慮して検出時刻Tdを補正した検出指示時刻aTdを指定する。制御装置10は、制御信号Csにおいて検出指示時刻aTdを指定することによって、通信装置31に、撮像制御装置32への検出指示の出力を、検出指示時刻aTdにおいて実行させる。撮像制御装置32は、検出指示を通信装置31から受信すると、撮像装置33へと、検出トリガを送信し、撮像装置33に、検出動作(具体的には、撮像動作)を実行させる。
前記の構成によれば、制御装置10は、検出時刻Tdを撮像装置33の応答遅れ時間Ddによって補正した時刻である検出指示時刻aTdを算出する。そして、制御装置10は、通信装置31に対して制御周期Ccごとに出力する制御信号Csにおいて、検出指示時刻aTdを指定する。
制御信号Csを受信した通信装置31は、検出指示時刻aTdにおいて、検出指示を撮像制御装置32へと送信し、検出指示を受信した撮像制御装置32は、撮像装置33に、検出対象を検出させる。そのため、撮像装置33が検出対象を検出する時刻は、撮像装置33の応答遅れ時間Ddの分だけ検出指示時刻aTdから遅れた時刻となり、つまり、検出時刻Tdとなる。
ここで、撮像装置33の応答遅れ時間Ddを考慮せずに、撮像装置33に撮像を実行させようとした場合、撮像装置33が実際に撮像を実行する時刻は、撮像装置33に撮像の実行を指示した時刻から、撮像装置33の応答遅れ時間Ddの分だけ遅れることになる。
そこで、制御装置10は、検出時刻Tdを撮像装置33の応答遅れ時間Ddによって補正した時刻である検出指示時刻aTdを算出する。そして、制御装置10は、撮像装置33に撮像の実行を指示する時刻として検出指示時刻aTdを指定する。
したがって、制御装置10は、撮像装置33に撮像の実行を指示する時刻として、撮像装置33の応答遅れ時間Ddを考慮した検出指示時刻aTdを指定することによって、撮像装置33に、検出時刻Tdにおいて撮像を実行させることができるとの効果を奏する。
また、制御装置10は、制御周期Ccごとに送信する制御信号Csにおいて検出指示時刻aTdを指定し、例えば、制御装置10は、検出指示時刻aTdを、検出指示時刻aTdよりも前の制御周期Ccにおける制御信号Csにおいて指定する。
したがって、制御装置10は、制御信号Csにおいて検出指示時刻aTdを指定することで、検出指示時刻aTdが、通信装置31との通信周期である制御周期Ccの整数倍でない場合であっても、検出時刻Tdにおいて検出対象を検出できるとの効果を奏する。
制御装置10は、サーボ制御系20と制御周期Ccごとに通信を実行する。そして、制御装置10(特に、フィードバック位置算出部1180)は、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」から、補間計算によって算出する。
前記の構成によれば、制御装置10は、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を、「制御周期Ccごとの、サーボ制御系20のフィードバック位置Pf」から、補間計算によって算出する。
例えば、nを「0以上の整数」として、検出時刻Tdが「n」回目の制御周期Cc(n)と「n+1」回目の制御周期Cc(n+1)との間の時刻であるとする。この場合、制御装置10は、以下のように、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を算出する。すなわち、制御装置10は、先ず、サーボ制御系20の、「制御周期Cc(n)におけるフィードバック位置Pf(n)」と、「制御周期Cc(n+1)におけるフィードバック位置Pf(n+1)」とを取得する。制御装置10は、次に、フィードバック位置Pf(n)とフィードバック位置Pf(n+1)とから、補間計算によって、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を算出する。
したがって、制御装置10は、検出時刻Tdが、サーボ制御系20との通信周期である制御周期Ccの整数倍でない場合であっても、高精度に、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を算出することができるとの効果を奏する。
制御装置10は、互いに同期した複数のサーボ制御系20の各々に、複数のサーボ制御系20の各々の応答遅れ時間Dsを考慮した指令値Cmを出力する。
前記の構成によれば、制御装置10は、互いに同期した複数のサーボ制御系20の各々に、複数のサーボ制御系20の各々の応答遅れ時間Dsを考慮した指令値Cmを出力する。
したがって、制御装置10は、複数のサーボ制御系20を、互いに同期させた状態で制御して、ワーク40の高精度な位置制御を実現できるとの効果を奏する。
制御装置10は、ワーク40の位置Pwと検出位置Pdとのずれ量を検出する検出装置として、例えば、撮像装置33を用い、具体的には、撮像装置33の生成する撮像画像Imを用いる。第一ずれ量算出部1170は、撮像装置33が撮像した撮像画像Imにおける、検出位置Pdに対応する基準点Rbと、撮像画像Imにおけるワーク40の位置Pwとのずれ量(つまり、「画像内での位置ずれ」量)によって、第一ずれ量Fdを算出する。
前記の構成によれば、制御装置10は、撮像画像Imにおける基準点Rb(例えば、撮像画像Imの中心位置)とワーク40の位置Pwとのずれ量によって、第一ずれ量Fdを算出する。そして、制御装置10は、目標位置Ptを第一ずれ量Fdと第二ずれ量Sdとによって補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、サーボ制御系20に出力する指令値Cmを生成する。
ここで、撮像画像Im中の撮像対象の位置等を高速かつ高精度に特定する画像解析技術が知られている。
したがって、制御装置10は、撮像画像Imから高速かつ高精度に算出した第一ずれ量Fdと、第二ずれ量Sdとによって、ワーク40の高速かつ高精度な位置制御を実現できるとの効果を奏する。
また、前記の構成によれば、制御装置10は、応答遅れ時間Dsを考慮して目標軌道Ttから算出される目標位置Ptが検出位置Pdへと到達する時刻(つまり、検出時刻Td)に、撮像画像Imを撮像させる。そのため、撮像画像Imにおいて、応答遅れ時間Dsを考慮して目標軌道Ttから算出される目標位置Ptと、基準点Rb(例えば、撮像画像Imの中心位置)とは一致する。
ここで、検出時刻Tdにおける「応答遅れ時間Dsを考慮した目標位置Pt」は、サーボ制御系20の応答遅れ時間Dsを考慮して目標軌道Ttから算出されている。そのため、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とは十分に近くなるはずである。つまり、フィードバック位置Pfとワーク40の位置Pw(例えば、ワーク40の中心位置)とが十分に近い場合、検出時刻Tdにおいて、ワーク40の位置Pwは、検出位置Pdに十分近くなるはずである。したがって、例えば、撮像画像Imの中心位置を基準点Rbとする場合、撮像画像Imにおいて、ワーク40は略中央に配置されることになる。
そのため、制御装置10は、撮像画像Imにおいてワーク40の位置Pw(例えば、ワーク40の中心位置)を特定するための検査領域を小さくすることができ、画像解析処理の高速化を実現することができる。
また、撮像画像Imにおいてワーク40は略中央に配置されるため、ワーク40が略中央に配置されていない撮像画像に比べ、ワーク40の撮像された領域が撮像画像Imの全体に占める割合を大きくでき、つまり、ワーク40を拡大して撮像させることができる。そのため、制御装置10は、ワーク40が拡大して撮像された撮像画像Imに対して、高精度な画像解析を行うことができる。
したがって、制御装置10は、撮像画像Imに対する高速かつ高精度な画像解析を実現し、この画像解析の結果を利用することによって、ワーク40の高速かつ高精度な位置制御を実現できるとの効果を奏する。
制御装置10について、サーボ制御系20は、ワーク40の位置Pwを変更可能なマニピュレータの軸を駆動するサーボモータ22と、サーボモータ22を制御するサーボドライバ21とを含んでいる。サーボ制御系20の目標位置Ptおよびフィードバック位置Pfは、各々、前記マニピュレータの把持部である手先23の目標位置Ptおよびフィードバック位置Pfである。
前記の構成によれば、制御装置10は、検出時刻Td、つまり、「サーボ制御系20の応答遅れ時間Dsを考慮して目標軌道Ttから算出される、手先23の目標位置Ptが、検出位置Pdに一致する時刻」における撮像画像Imから、第一ずれ量Fdを算出する。また、制御装置10は、検出時刻Tdにおける、手先23のフィードバック位置Pfと、「サーボ制御系20の応答遅れ時間Dsを考慮して目標軌道Ttから算出される手先23の目標位置Pt」とから、第二ずれ量Sdを算出する。そして、制御装置10は、撮像画像Imから算出した第一ずれ量Fdと、検出時刻Tdにおける手先23についての第二ずれ量Sdとによって、目標位置Ptを補正して、補正後目標位置aPtを生成する。制御装置10は、生成した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、サーボ制御系20に出力する指令値Cmを生成する。
したがって、制御装置10は、検出時刻Tdにおける第一ずれ量Fdと、検出時刻Tdにおける手先23についての第二ずれ量Sdとを考慮して、前記マニピュレータによるワーク40の高精度な位置制御を実現できるとの効果を奏する。
制御装置10について、前記マニピュレータはワーク40のピッキング動作およびプレース動作を実行し、第一ずれ量Fdは、前記マニピュレータ(特に、手先23)に把持されたワーク40の位置Pwの、検出位置Pdからのずれ量である。
前記の構成によれば、制御装置10は、「前記マニピュレータに把持されたワーク40の位置Pwの、検出位置Pdからのずれ量」である第一ずれ量Fdと、第二ずれ量Sdとによって、目標位置Ptを補正し、補正後目標位置aPtを生成する。そして、制御装置10は、補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、サーボ制御系20に出力する指令値Cmを生成する。
ここで、フィードバック位置Pfと「応答遅れ時間Dsを考慮して算出された目標位置Pt」とが完全に一致する場合にも、前記マニピュレータに把持されたワーク40の状態によっては、検出時刻Tdにおけるワーク40の位置Pwは、検出位置Pdからずれる。例えば、前記マニピュレータが、ワーク40の中心位置よりも右側の位置で、ワーク40を把持した場合、検出時刻Tdにおけるワーク40の中心位置は、検出位置Pdに対して左側にずれる。同様に、前記マニピュレータが、ワーク40の中心位置よりも左側の位置で、ワーク40を把持した場合、検出時刻Tdにおけるワーク40の中心位置は、検出位置Pdに対して右側にずれる。
また、ピッキング動作の際に発生した「ワーク40の位置Pwと手先23の位置とのずれ」は、プレース動作に至るまで維持されることが多いと考えられる。
そこで、制御装置10は、ピッキング動作の際に発生した「ワーク40の位置Pwと手先23の位置とのずれ」を特定し、特定した「ワーク40の位置Pwと手先23の位置とのずれ」を考慮して、ワーク40のプレース位置を制御する。
したがって、制御装置10は、前記マニピュレータに把持されたワーク40の状態を考慮した、ワーク40の高精度な位置制御を実現できるとの効果を奏する。
制御装置10について、前記マニピュレータの手先23は、真空吸着または磁気吸引によって前記ピッキング動作を実行する。
前記の構成によれば、制御装置10は、真空吸着または磁気吸引を用いて手先23に把持されたワーク40についての第一ずれ量Fdと、手先23についての第二ずれ量Sdとによって、目標位置Ptを補正し、補正後目標位置aPtを生成する。そして、制御装置10は、補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、サーボ制御系20に出力する指令値Cmを生成する。
ここで、2本指ないし5本指式のグリッパ(手先)によりワーク40を把持する場合に比べて、真空吸着または磁気吸引を用いてワーク40を把持する場合は、ワーク40の中心位置からずれた位置でワーク40を把持してしまう可能性がより大きいと考えられる。
そのため、前記マニピュレータに把持されたワーク40の高精度な位置制御のために、「ワーク40の位置Pwと手先23の位置とのずれ」を考慮する必要性は、真空吸着または磁気吸引を用いてワーク40を把持する場合に、より大きくなる。
したがって、制御装置10は、真空吸着または磁気吸引によってピッキング動作を実行するマニピュレータを含むサーボ制御系20を制御して、ワーク40の高速かつ高精度な位置制御を実現できるとの効果を奏する。
§3.動作例
(処理の全体概要について)
図15は、制御装置10が実行する処理の全体概要を説明するフロー図である。図15は、特に、制御装置10の実行する、「サーボ制御系20によって移動されるワーク40の位置Pwと、サーボ制御系20の位置とのずれ」に起因するワーク40の位置ずれを解消する処理の概要を説明している。
図15に示すように、制御装置10において、検出時刻決定部1160は、検出指示時刻決定処理を実行する(S110)。そして、通信部1200(特に、指令部1210)は、検出指示時刻決定処理によって決定された検出指示時刻aTdを送信する(S120)。
通信部1200(特に、制御量取得部1220)は、検出系30の検出結果(例えば、撮像画像Im)、および、サーボ制御系20の制御結果(例えば、制御周期Ccごとのフィードバック位置Pf)を受信する(S130)。そして、制御量取得部1220は、受信した検出系30の検出結果を第一ずれ量算出部1170に通知し、また、受信したサーボ制御系20の制御結果をフィードバック位置算出部1180に通知する。
第一ずれ量算出部1170は、検出系30の検出結果を用いて、第一ずれ量算出処理を実行する(S140)。また、フィードバック位置算出部1180および第二ずれ量算出部1190は、サーボ制御系20の制御結果を用いて、第二ずれ量算出処理を実行する(S150)。
位置指令補正部1130は、目標位置Ptを、S140で算出された第一ずれ量FdとS150で算出された第二ずれ量Sdとによって補正した補正後目標位置aPtを生成する(S160)。そして、指令値生成部1140は、補正後目標位置aPtから、サーボ制御系20の応答遅れ時間Dsを考慮して、指令値Cmを生成する(S170)。
(検出指示時刻決定処理について)
図16は、図15の検出指示時刻決定処理(S110)の一例を説明するフロー図である。図16に示すように、検出時刻決定部1160は、先ず、目標軌道Ttから、サーボ制御系20の応答遅れ時間Dsを考慮して、時刻ごとの目標位置Pt(t)を算出する(S210)。検出時刻決定部1160は、「サーボ制御系20の応答遅れ時間Dsを考慮した目標位置Pt(t)」と検出位置Pdとが一致する時刻を、検出時刻Tdとして特定する(S220)。検出時刻決定部1160は、検出時刻Tdに対して、検出系30の応答遅れ時間Ddを考慮して検出指示時刻aTdを決定する(S230)。
(第一ずれ量算出処理および第二ずれ量算出処理について)
図17は、図15の第一ずれ量算出処理(S140)および第二ずれ量算出処理(S150)の各々の一例を説明するフロー図である。具体的には、図17の(A)は、第一ずれ量算出処理の一例を説明するフロー図であり、図17の(B)は、第二ずれ量算出処理の一例を説明するフロー図である。
図17の(A)に示すように、第一ずれ量算出部1170は、先ず、検出時刻Tdにおける撮像画像Imに対して画像解析を実行し、撮像画像Im中の、ワーク40の位置Pw(例、ワーク40の中心位置)を特定する(S310)。
第一ずれ量算出部1170は、特定した「撮像画像Im中の、ワーク40の位置Pw」と、「撮像画像Im中の、検出位置Pdに対応する基準点Rb(例、撮像画像Imの中心点)」との間のずれ量(つまり、「画像内での位置ずれ」量)を算出する(S320)。
第一ずれ量算出部1170は、S320で算出されたずれ量から、「検出位置Pdとワーク40の位置Pwとのずれ量」である第一ずれ量Fdを算出する(S330)。
図17の(B)に示すように、フィードバック位置算出部1180は、先ず、制御周期Ccごとの「サーボ制御系20のフィードバック位置Pf」から、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を算出する(S410)。フィードバック位置算出部1180は、算出した「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pf」を、第二ずれ量算出部1190に通知する。
第二ずれ量算出部1190は、検出時刻Tdにおける、「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」を算出する(S420)。
第二ずれ量算出部1190は、S410で算出されたフィードバック位置Pfと、S420で算出された目標位置Ptとの間のずれ量を、第二ずれ量Sdとして算出する(S420)。つまり、第二ずれ量算出部1190は、検出時刻Tdにおける、「サーボ制御系20のフィードバック位置Pf」と「サーボ制御系20の応答遅れ時間Dsを考慮した、サーボ制御系20の目標位置Pt」との間のずれ量を、第二ずれ量Sdとして算出する。
これまで図15から図17を用いて説明してきた制御装置10の実行する処理は、以下のように整理することができる。すなわち、制御装置10の実行する制御方法は、目標軌道Ttから演算した指令値Cmをサーボ制御系20に出力する制御装置の制御方法である。前記制御方法は、第一ずれ量算出ステップ(図15のS140)と、第二ずれ量算出ステップ(図15のS150)と、指令値生成ステップ(図15のS170)とを含んでいる。
図17の(A)に例示するように、第一ずれ量算出ステップは、検出時刻Tdにおける撮像画像Imから、サーボ制御系20によって位置を制御されるワーク40の位置Pwの、検出位置Pdからのずれ量である第一ずれ量Fdを算出する。前述の通り、検出時刻Tdにおいて、「サーボ制御系20の応答遅れ時間Dsを考慮して目標軌道Ttから算出される目標位置Pt」と、検出位置Pdとは一致する。
図17の(B)に例示するように、第二ずれ量算出ステップは、「検出時刻Tdにおける、サーボ制御系20のフィードバック位置Pfと『サーボ制御系20の応答遅れ時間Dsを考慮して算出された目標位置Pt』とのずれ量」である第二ずれ量Sdを算出する。
指令値生成ステップは、「目標軌道Ttから算出される目標位置Pt」を第一ずれ量Fdと第二ずれ量Sdとによって補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとから、指令値Cmを生成する。
前記の構成によれば、前記制御方法は、目標位置Ptを第一ずれ量Fdと第二ずれ量Sdとによって補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとによって、サーボ制御系20に出力する指令値Cmを生成する。
ここで、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合、検出時刻Tdにおいて、フィードバック位置Pfは、検出位置Pdに完全に一致することになる。そのため、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合、ワーク40の位置Pwの、フィードバック位置Pfからのずれ量(つまり、位置ずれ量)は、第一ずれ量Fdのみから特定できる。つまり、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とが完全に一致する場合には、位置ずれ量(把持ずれ量)は、第一ずれ量Fdのみから特定することができる。
しかしながら、実際には、検出時刻Tdにおいて、フィードバック位置Pfと「応答遅れ時間Dsを考慮した目標位置Pt」とは、完全には一致しないことがある。
そこで、前記制御方法は、第一ずれ量Fdに加えて、第二ずれ量Sdをも考慮することによって、検出時刻Tdにおける、「ワーク40の位置Pwの、フィードバック位置Pfからのずれ量」を高精度に特定する。そして、前記制御方法は、特定した「ワーク40の位置Pwの、フィードバック位置Pfからのずれ量」によって「目標軌道Ttから算出される目標位置Pt」を補正した補正後目標位置aPtと、サーボ制御系20の応答遅れ時間Dsとから、指令値Cmを生成する。
したがって、前記制御方法は、サーボ制御系20のフィードバック位置Pfと、サーボ制御系20によって位置を制御されるワーク40の位置Pwとのずれを考慮することにより、ワーク40の位置制御を高精度化することができるとの効果を奏する。
また、前記制御方法は、「応答遅れ時間Dsを考慮して算出された目標位置Ptが、検出位置Pdに一致する」検出時刻Tdにおける撮像画像Imから、第一ずれ量Fdを算出する。そのため、前記制御方法は、第一ずれ量Fdを算出するために、サーボ制御系20によるワーク40の移動を停止する必要がない。
したがって、前記制御方法は、ワーク40に対する高精度な位置制御を、高速に実行することができ、言い換えれば、ワーク40の高速かつ高精度な位置制御を実現することができるとの効果を奏する。
§4.変形例
これまで、制御装置10が複数のサーボ制御系20を制御する例を説明してきたが、制御装置10が制御するサーボ制御系20は1つであってもよい。また、これまで、「ワーク40の位置Pwと検出位置Pdとのずれ量」を検出する検出装置が、撮像装置33である例を説明してきたが、検出装置が撮像装置33であることは必須ではない。制御装置10は、「ワーク40の位置Pwと検出位置Pdとのずれ量」を検出することのできる検出装置から、「ワーク40の位置Pwと検出位置Pdとのずれ量」を算出可能な検出結果を取得できればよい。さらに、これまで、手先23がワーク40を把持してワーク40を移動する例を説明してきたが、手先23がワーク40を把持することは必須ではない。制御システム1において、手先23の移動に伴ってワーク40が移動すればよく、制御装置10は、手先23の位置を制御することにより、ワーク40の位置Pwを制御できればよい。
〔ソフトウェアによる実現例〕
制御装置10の制御ブロック(特に、目標軌道取得部1110、位置指令生成部1120、位置指令補正部1130、指令値生成部1140、応答遅れ時間算出部1150、検出時刻決定部1160、第一ずれ量算出部1170、フィードバック位置算出部1180、第二ずれ量算出部1190、および、通信部1200)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
後者の場合、制御装置10は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば1つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばCPU(Central Processing Unit)を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ROM(Read Only Memory)等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するRAM(Random Access Memory)などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。