以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.制御装置
図1に、本実施形態の制御手法によりロボットを制御する制御装置の構成例を示す。制御装置100は、受付部110と処理部120とを含む。
制御装置100は、ロボット300に、第1の本体部と第1の部位と第2の部位とを含む第1の被作業物と、第1の穴部と第2の穴部とを含む第2の被作業物とを組み付けさせる。
具体的には、受付部110は、異なる時刻に複数回、ロボット300が第1の姿勢から第1の姿勢とは異なる第2の姿勢へと移る間に被撮像物を複数回撮像した複数の撮像画像を受け付ける。受付部110は、例えば撮像部200と制御装置100を接続するインターフェースである。即ち、撮像部200が時系列に被撮像物を撮像し、その時系列の複数の撮像画像がインターフェースを介して制御装置100に入力される。
処理部120は、受付部110が受け付けた複数の撮像画像を用いて、第1の被作業物の第1の部位と第2の被作業物の第1の穴部とを近づける第1の動作と、第1の被作業物の第2の部位と第2の被作業物の第2の穴部とを近づける第2の動作と、をロボット300に行わせる。具体的には、時系列の撮像画像を用いたビジュアルサーボによりロボット300を制御し、第1の動作及び第2の動作をロボット300に行わせる。処理部120は、例えばCPUやGPUにより実現される。
例えば、図2で後述するコンデンサー20の組み付け作業では、第1の被作業物はコンデンサー20であり、第2の被作業物は電子基板50である。コンデンサー20は、本体部25と、第1の部位である長リード線30と、第2の部位である短リード線40と、を含んでいる。電子基板50には、第1の穴部である第1の穴60と、第2の穴部である第2の穴70と、が設けられている。
図2のフローでは、第1のビジュアルサーボ(ステップS3)と第2の位置制御(ステップS4)と第2のビジュアルサーボ(ステップS5)により、長リード線30を第1の穴60に近づける動作と、短リード線40を第2の穴70に近づける動作を行う。即ち、第1の動作と第2の動作は、連続した1回のビジュアルサーボで実現される必要はなく、複数回のビジュアルサーボを含む一連の制御で実現されてもよい。図2のフローでは、ビジュアルサーボの間に位置制御が挿入されるが、リード線を穴に近づける動作は、ビジュアルサーボにより実現されている。
また、図14のフローのように制御してもよい。このフローでは、第1のビジュアルサーボ(ステップS23)と第2のビジュアルサーボ(ステップS24)により、長リード線30を第1の穴60に近づける動作と、短リード線40を第2の穴70に近づける動作を行う。このように、位置制御を含まず、2回の連続したビジュアルサーボにより第1の動作及び第2の動作を行ってもよい。
図15で後述する抵抗素子80の組み付け作業では、第1の被作業物は抵抗素子80であり、第2の被作業物は電子基板50である。抵抗素子80は、本体部85と、第1の部位である第1のリード線35と、第2の部位である第2のリード線45と、を含んでいる。電子基板50には、第1の穴部である第3の穴65と、第2の穴部である第4の穴75と、が設けられている。
図15のフローでは、ビジュアルサーボ(ステップS43)により、第1のリード線35を第3の穴65に近づける動作と、第2のリード線45を第4の穴75に近づける動作を行う。このように、1回のビジュアルサーボの中で第1の動作と第2の動作を同時に行ってもよい。
以上のように、本実施形態によれば、ビジュアルサーボにより、第1の被作業物の第1の部位と第2の被作業物の第1の穴部とを近づけ、第1の被作業物の第2の部位と第2の被作業物の第2の穴部とを近づけることができる。例えば、コンデンサー20を挿入する電子基板50が正確に決められた位置に配置されていない場合であっても、ビジュアルサーボでは画像で位置関係を把握するため、コンデンサー20を適切な挿入位置まで移動させることができる。このように、ビジュアルサーボを用いることで、ロボット300が行う作業において第1の被作業物と第2の被作業物を、その作業に適した位置関係に移動させることができる。
ここで、部位と穴部とを近づけるとは、部位と穴部との間の距離を短くすることである。例えば、図2のステップS3では、長リード線30の先端を第1の穴60の入口に向けて移動させる(即ち近づける)ことで、部位と穴部との間の距離を短くする。なお、電子基板50を把持し、第1の穴60の入口を長リード線30の先端に向けて移動させることで、部位と穴部との間の距離を短くしてもよい。
なお、被作業物の部位は、コンデンサー20のリード線のような線状の部位に限定されない。例えば、被作業物の本体部から突き出た凸部(突起)等であってもよい。また、被作業物の穴部は、リード線を挿入する穴のような細い貫通穴に限定されない。例えば、穴部は、被作業物を貫通していない穴や、凸部が嵌合される凹部であってもよい。
上述したコンデンサー20の組み付け作業では、2つのリード線の長さが異なっている。このように、第1の部位の長さが第2の部位の長さよりも長い場合には、処理部120は、第1の動作を第2の動作よりも先にロボット300に行わせる。
例えば図2のフローでは、第1のビジュアルサーボ(ステップS3)により長リード線30を第1の穴60に近づけ、次に第2の位置制御(ステップS4)により長リード線30を第1の穴60に挿入し、次に第2のビジュアルサーボ(ステップS5)により短リード線40を第2の穴70に近づける。
或は図14のフローでは、第1のビジュアルサーボ(ステップS23)により長リード線30を第1の穴60に近づけ、第2のビジュアルサーボ(ステップS24)により長リード線30を第1の穴60に挿入しつつ、短リード線40を第2の穴70に近づける。
このように、第1の動作と第2の動作に順番を設けることで、被作業物の形状に適した手順で被作業物を組み付けることができる。即ち、第1の被作業物を第2の被作業物に近づけたときに、先に穴部に到達する長い方の部位を先に穴部に近づけ、その部位を穴部に挿入した後(又は挿入しつつ)、次に穴部に到達する短い方の部位を穴部に近づけることができる。これにより、スムーズで確実な組み付け作業が可能となる。
ここで、部位の長さとは、部位を穴部に挿入する方向における部位の長さである。例えば、リード線は本体部の底面から延びているが、リード線の長さは、本体部の底面からリード線の先端までの長さである。これは、リード線を穴に挿入する方向(即ちリード線に沿った方向)でのリード線の長さに相当する。
上述した抵抗素子80の組み付け作業では、2つのリード線の長さが同一である。このように、第1の部位の長さと第2の部位の長さとが同一である場合には、処理部120は、第1の動作と第2の動作を同時にロボット300に行わせる。
例えば図15のフローでは、1回のビジュアルサーボ(ステップS43)により同時に、第1のリード線35を第3の穴65に近づけ、第2のリード線45を第4の穴75に近づける。なお、同時とは、穴に近づくタイミングが同時という意味ではなく、1回のビジュアルサーボの中で2つの動作を制御しているという意味である。即ち、穴に近づくタイミングが異なっていても、ビジュアルサーボの結果として2つのリード線がそれぞれ穴に近づいていればよい。
このように、第1の動作と第2の動作に順番を設けず、同時に行うことで、リード線の長さが等しい抵抗素子のような被作業物において、効率的に作業を進めることができる。例えば、図15のフローのように、2つのリード線が1回のビジュアルサーボで穴に近づくため、作業のステップ数を減らして抵抗素子の挿入作業を簡素化できる。
ここで、長さが同一とは、完全に等しい場合だけでなく、略同一である場合を含む。例えば、2つのリード線の先端を2つの穴に合わせたとき、リード線が電子基板50に対してほぼ垂直であれば、リード線を穴に挿入可能である。このように、2つの部位を同時に穴部に近づけた場合に、その後の挿入に差し支えない程度の長さの違いであれば、許容される。
2.第1の制御処理フロー
次に、コンデンサー20を電子基板50に組み付ける場合を例に、処理部120がロボット300を動作させる制御処理の詳細を説明する。図2に、制御処理の第1のフローチャートを示す。なお、図2では各ステップの概要を説明し、各ステップの詳細については後述する。
図2に示すように、コンデンサー20は、電荷を蓄積する部分である本体部25と、コンデンサー20の正極端子である長リード線30(第1の部位)と、コンデンサー20の負極端子である短リード線40(第2の部位)と、で構成される。また、電子基板50には、第1の穴60(第1の穴部)と第2の穴70(第2の穴部)が設けられている。長リード線30、短リード線40をそれぞれ第1の穴60、第2の穴70に挿入し、半田付け等によって実装することで、コンデンサー20と電子基板50を組み付ける。
制御処理を開始すると、まずハンド10は本体部25を把持する(ステップS1)。次に、第1の位置制御によりコンデンサー20をビジュアルサーボの開始点へ移動させる(ステップS2)。ステップS2以降ではハンド10の図示を省略している。
ここで、位置制御とは、ハンド10等のエンドエフェクターの位置及び姿勢を始点から終点まで移動させる制御である。ステップS1では、始点は把持動作を終了したときのハンド10の位置及び姿勢であり、終点は、ビジュアルサーボの開始点におけるエンドエフェクターの位置及び姿勢である。始点から終点までの軌道を生成し、その軌道に基づいてアームの関節角や関節角速度を制御し、軌道に沿ってエンドエフェクターを移動させる。
次に、第1のビジュアルサーボにより、長リード線30の特徴点TPaを目標点GPaに一致させる第1の動作を行う(ステップS3)。このとき、短リード線40の特徴点TPbを第2の目標点GPbにできるだけ近づける動作も行う。特徴点と目標点は、リード線の先端の位置及びリード線の方向で指定される。図2では、優先度が高い動作の特徴点と目標点を×印で表し、優先度が低い動作の特徴点と目標点を○印で表す。目標点GPaは、第1の穴60の入口又は直上であり、目標点GPbは、第2の穴70の上方である。目標点GPa、GPbは、電子基板50からの高さにおいて、長リード線30と短リード線40の長さの差だけ異なっている。
このようにして、第1の部位である長リード線30と第1の穴部である第1の穴60とが一致する。ここで、第1の部位と第1の穴部とが一致するとは、第1の部位と第1の穴部(第1の穴部付近)とを合わせることである。なお、ステップS3のように、長リード線30の先端を第1の穴60の入口に合わせる(即ち一致させる)ことで、第1の部位と第1の穴部とを一致させてもよいし電子基板50を把持し、第1の穴60の入口を長リード線30の先端に合わせることで、第1の部位と第1の穴部とを一致させてもよい。
次に、第2の位置制御によりコンデンサー20を下方(挿入方向)に移動させ、長リード線30を第1の穴60に挿入する(ステップS4)。ここでは、短リード線40が第2の穴70に達しない距離だけ移動させる。
リード線を穴に挿入するためには、リード線を穴に正確に近づける必要がある。そのため、処理部120は、穴に近づける動作をビジュアルサーボによりロボット300に行わせる。また、リード線と穴の相対的な位置関係はいつも同一とは限らないため、ビジュアルサーボが適している。リード線の挿入作業では移動方向が決まっているため、処理部120は位置制御を用いて挿入動作をロボット300に行わせることができる。画像を用いてフィードバックを行うビジュアルサーボよりも直接的にロボットを制御できるため、作業時間の短縮につながる。
次に、第2のビジュアルサーボにより短リード線40の特徴点TPcを目標点GPcに一致させる第2の動作を行う(ステップS5)。目標点GPcは、第2の穴70の直上である。長リード線30、短リード線40が本体部25から斜めに出ている場合や長リード線30、短リード線40が曲がっている場合には、短リード線40の特徴点TPcが目標点GPcまで移動するのに伴って、長リード線30が変形する。この変形は、長リード線30が第1の穴60に拘束(挿入)されているために生じ、例えば本体部25に接続される根元が曲がる変形である。
このように、処理部120が、先に挿入された長リード線30を第2の動作において変形させる動作をロボット300に行わせることで、その後に行う短リード線40の挿入が可能となる。即ち、ビジュアルサーボでは画像でリード線と穴を認識するためリード線の先端を穴に正確に合わせることが可能だが、この動作は長リード線30を変形させることによって実現している。短リード線40の先端が第2の穴70の直上に正確に一致することによって、その後にコンデンサー20を下方に移動しただけで短リード線40を第2の穴70に挿入することができる。
次に、第3の位置制御によりコンデンサー20を下方(挿入方向)に移動させ、短リード線40を第2の穴70に挿入する(ステップS6)。ここでは、組み付け完了の位置、例えば長リード線30、短リード線40を第1の穴60、第2の穴70に半田付け可能な位置まで移動させる。
ステップS4で説明したように、精度が必要なリード線を穴に一致させる動作はビジュアルサーボで行っておき、その後に移動方向が決まっている挿入作業には位置制御を用いることができる。
上記のような処理フローは、その処理フローに対応した作業シナリオに基づいて処理部120が実行する。例えば、作業シナリオは、制御装置100の不図示の記憶部に記憶される。処理部120は、その記憶部から作業シナリオを取得し、その作業シナリオを具体的な制御処理(例えばモーターの制御情報等)に変換し、ロボットを制御する。作業シナリオとは、ロボットに作業を実行させるためのシナリオ(プログラム)であり、例えば複数のサブプログラムを組み合わせることで構成される。或は、処理部120は、作業シナリオを生成することで取得してもよい。例えば、ユーザーからは所望の目標状態だけが(例えば図12、図13の入力画面により)入力され、当該目標状態を実現する作業シナリオを処理部120が生成する。
なお、上記のフローでは、コンデンサー20をハンド10で把持し、そのコンデンサー20を、作業台上の治具等に設置された電子基板50に組み付ける場合を例に説明したが、電子基板50をハンド10で把持し、その電子基板50を、作業台上の治具に設置されたコンデンサー20に組み付けてもよい。
3.ビジュアルサーボの第1の制御手法
長リード線30を第1の穴60に一致させる場合を例に、ビジュアルサーボの第1の制御手法について説明する。なお、以下ではカメラ(撮像部)が2台である場合を例に説明するが、カメラは1台又は3台以上であってもよい。
図3に示すように、ビジュアルサーボでは第1のカメラCM1と第2のカメラCM2により被撮像物を撮像し、その撮像画像を用いてアーム320の関節角やハンド10の位置及び姿勢を制御する。被撮像物は、第1の被作業物であるコンデンサー20と、第2の被作業物である電子基板50である。カメラCM1、CM2は時系列に撮像(例えば動画撮影)を行い、制御装置100は各時刻での撮像画像を使ってアーム320やハンド10をフィードバック制御する。フィードバック制御のフローについては図18で後述する。
図4は、カメラCM1、CM2の撮像画像である。カメラCM1の撮像画像から下式(1)に示す画像特徴量を検出し、カメラCM2の撮像画像から下式(2)に示す画像特徴量を検出する。画像特徴量の検出は、画像認識により行う。
画像上の位置を(x,y)で表すと、sl1=(sxl1,syl1)、sl2=(sxl2,syl2)は長リード線30の先端の撮像画像上での位置であり、図4では△印で表している。(x,y)は例えば直交座標であり、xは例えば水平走査方向、yは例えば垂直走査方向に対応する。sθl1、sθl2は長リード線30の撮像画像上での角度であり、図4では△印に付した矢印で表している。画像上での角度は、例えばx軸と長リード線30の成す角度であり、本実施形態では直角である。なお、上付きの“T”はベクトル又は行列の転置を表す。
カメラCM1、CM2の画像特徴量s
l1、s
l2は、3次元の作業空間において長リード線30の位置及び姿勢を特定することに対応している。このとき、長リード線30を軸とする回転(図5のRF)は自由なので、長リード線30の位置及び姿勢は5自由度である。そのため、長リード線30の画像特徴量s
lを下式(3)とする。
例えば、カメラCM1、CM2が作業空間において同じ高さに設置されている場合、syl1=syl2となるので、画像特徴量slを上式(3)のように選ぶことができる。なお、ベクトルの要素の選び方は上式(3)に限定されず、カメラの配置等に応じて適宜変更できる。
図5に、参照画像の例を示す。ビジュアルサーボでは、撮像画像上において被作業物を目標まで移動させるが、その目標となるのが参照画像である。撮像画像と参照画像の特徴量の差により被作業物の位置を推定することができ、それによってフィードバック制御を行う。
カメラCM1の参照画像から下式(4)に示す画像特徴量を検出し、カメラCM2の参照画像から下式(5)に示す画像特徴量を検出する。
(sxlg1,sylg1)、(sxlg2,sylg2)は長リード線30の先端の参照画像上での位置であり、sθlg1、sθlg2は長リード線30の参照画像上での角度である。
参照画像の特徴量s
lg1、s
lg2から、画像特徴量s
lの目標値s
lgを下式(6)とする。
本実施形態では、カメラCM1、CM2の撮像画像から第1の穴60と第2の穴70を画像認識し、その認識した第1の穴60と第2の穴70の位置に対応して目標値slgを設定する。即ち、本実施形態では撮像画像が参照画像となる。
なお、参照画像は、撮像画像とは別の画像であってもよく、例えばCADモデルデータから生成される画像であってもよい。また、記憶しておいた参照画像から画像特徴量を検出してもよいし、予め検出しておいた画像特徴量を記憶しておいてもよい。
上式(3)の画像特徴量s
lと上式(6)の目標画像特徴量s
lgから、下式(7)、(8)のように目標関節角の変化Δθ
gを求める。この制御則によって、時系列の撮像画像を用いて目標関節角の変化Δθ
gを逐次決定し、その変化Δθ
gの分だけ関節角を動かすことにより、実画像の特徴量s
lと目標画像特徴量s
lgとの差を無くすように制御できる。
上式(7)において、Xは、下式(9)に示すように、作業空間におけるハンド10の位置(x,y,z)及び姿勢(R
1,R
2,R
3)である。姿勢(R
1,R
2,R
3)は、例えばロール角、ピッチ角、ヨー角である。λは制御ゲインである。J
ilは、下式(10)に示すように、作業空間における被作業物の位置及び姿勢と長リード線30の画像特徴量s
lとの間のヤコビアンである。J
il #は、J
ilの疑似逆行列である。
上式(8)において、θ
gは、下式(11)に示すように目標関節角のベクトルである。下式(11)は6自由度アームを用いた場合の例である。J
aは、下式(12)に示すように、アームの関節角と作業空間における被作業物の位置及び姿勢との間のヤコビアンである。J
a #は、J
aの疑似逆行列である。
ヤコビアンJilは、ハンド10の位置及び姿勢Xを微小変化させた際の画像特徴量slの変化を事前に測定することで、求めることができる。この場合、事前に求めたヤコビアンを記憶しておけばよい。或は、ヤコビアンJilを、動作させながら推定する方法を用いて算出してもよい。ヤコビアンJaは、ロボットの関節角とリンク長の幾何学的な関係から算出することができる。
疑似逆行列(一般化逆行列)を求める手法としては、例えば以下の2つの手法がある。第1の手法は、Aをm×nの行列として正方行列A
TAの逆行列を求める手法であり、下式(13)により疑似逆行列A
#を求める。
第2の手法は、特異値分解による手法である。任意のm×nの行列Aは下式(14)の形式に分解できる。
Uはm次元の正規直交基底であり、Vはn次元の正規直交基底であり、Σは特異値を対角項に持つ行列となる。なお、Uは正方行列AATのm個の固有ベクトルを列ベクトルとして有する行列、Vは正方行列ATAのn個の固有ベクトルを列ベクトルとして有する行列であり、ΣはUとVで共有される固有値の平方根を対角項に持つ行列であると言い換えることができる。
上式(14)のAの逆行列と同様の性質を持つ行列として下式(15)のA
#を考えることが可能となる。
本実施形態では、上記の第1、第の手法においてA=Jil又はA=Jaとすることで、逆ヤコビアンを求めることができる。
以上の第1の制御手法により、長リード線30の先端を目標点に一致させることができる。また、短リード線40の画像特徴量と目標画像特徴量(例えば図10に示すss、ssg)を用いて同様の処理を行えば、短リード線40の先端を目標点に一致させることが可能である。
4.ビジュアルサーボの第2の制御手法
第1の制御手法で用いた上式(7)、(8)の制御則では、長リード線30を中心とする回転方向(図5のRF)においてハンド10の動作に制約がない。そのため、長リード線30を第1の穴60に一致させることはできるが、回転方向において短リード線40がどのような角度に配置されるかまでは決定されない。コンデンサー20を組み付けるには2つのリード線を穴に挿入する必要があることから、短リード線40の配置もある程度制約されることが望ましい。また、回転方向の制約がないと、回転角度がロボット300で実現可能な範囲を超え、実現不可能な動作となる可能性があることを考慮すれば、短リード線40の配置がある程度制約されることが望ましい。
そこで、図2のステップS3で説明した第1のビジュアルサーボでは、回転方向の冗長自由度を制御する項を制御則に加えることで回転方向の動作を制約する。具体的には、下式(16)、(17)の制御則を用いる。
上式(16)の第1項は、上式(7)で説明した通りである。第2項のIは単位行列である。k
pはスカラー量(制御ゲイン)である。ξは下式(18)、(19)に示すように評価関数q(X)に基づくベクトルである。
上式(19)においてξ
iはξのi番目の要素である。X
iは上式(9)のXのi番目の要素である。評価関数q(x)は、短リード線40の画像特徴量s
s、s
sgを用いて下式(20)で定義する。s
si、s
sgiは、s
s、s
sgのi番目の要素である。
短リード線40の画像特徴量ss、ssgについて説明する。図6に、第1のビジュアルサーボにおける撮像画像を示し、図7に、第1のビジュアルサーボにおける参照画像を示す。短リード線40の目標点は、長リード線30の特徴点が第1の穴60に一致したときの短リード線40の先端の位置及び短リード線40の方向である。このとき、長リード線30及び短リード線40は曲がっていないものとする。即ち、短リード線40の目標点は、短リード線40の挿入方向に沿って第2の穴70から上方に離れた点である。
長リード線30の場合と同様にして、各カメラの撮像画像から画像特徴量s
s1、s
s2を求め、それらを用いて下式(21)に示す短リード線40の画像特徴量s
sを求める。短リード線40の画像特徴量の目標値s
sgは下式(22)である。
上式(19)のξは、次のようにして求めることができる。即ち、被作業物の位置及び姿勢と短リード線40の画像特徴量s
sとの間のヤコビアンJ
isは下式(23)である。
ξ
iは下式(24)のように変形できるので、ヤコビアンJ
isを用いてξを下式(25)のように表すことができる。
ヤコビアンJisは、ハンド10の位置及び姿勢Xを微小変化させた際の画像特徴量ssの変化を事前に測定することで、求めることができる。或は、ヤコビアンJisを、動作させながら推定する方法を用いて算出してもよい。
上式(16)の第2項は、上式(20)の評価関数q(X)を最大化するように働く。即ち、(ssg−ss)の各要素の二乗和を最小化するようにロボットを制御する。この制御により、短リード線40の画像特徴量ssを目標画像特徴量ssgに近づける動作を実現できる。
ここで、上式(16)の第2項は、長リード線30の画像特徴量slを変化させない構成になっている。即ち、第2項によって生じるハンド10の位置及び姿勢の変化は、長リード線30を移動させない。上述したように、上式(16)の第1項では長リード線30を5自由度で制御するが、その5自由度については第2項は制御しないということである。6自由度のハンド10の位置及び姿勢には、残り1自由度の冗長自由度があるので、第2項は、その冗長自由度の範囲でハンド10を制御する。
以上のようにして、上式(16)の第1項により、長リード線30を第1の穴60に一致させるという優先度の動作が実現される。そして、第2項により、長リード線30を軸とする回転方向の角度を制御することで、短リード線40を第2の穴70に出来るだけ近づけるという優先度の低い動作を実現できる。
図8に示すように、リード線が曲がっている場合には、長リード線30が第1の穴60に一致したときに短リード線40が真下を向いている訳ではないので、長リード線30を軸として回転した場合に短リード線40の画像特徴量ssは目標画像特徴量ssgに一致しない。即ち、短リード線40を第2の穴70に一致させる動作の達成度は、長リード線30を第1の穴60に一致させる動作の達成度よりも低くなり、それが優先度の違いとなっている。短リード線40が第2の穴70に完全に一致しなくても、出来るだけ近づけることができるので、短リード線40の目標に近い状態から次の作業(短リード線40を第2の穴70に挿入する作業)に移ることができる。
5.ビジュアルサーボの第3の制御手法
次に、ビジュアルサーボの第3の制御手法について説明する。この手法は、図2のステップS5で説明した第2のビジュアルサーボに適用できる。
図9(A)に第2のビジュアルサーボにおける参照画像を示す。第2のビジュアルサーボでは長リード線30は第1の穴60に一部刺さっており、短リード線40の先端を第2の穴70に一致させることが目標となる。即ち、短リード線40の目標点は第2の穴70の直上である。
第2のビジュアルサーボでは、上記の動作が、優先度が高い動作となる。優先度が低い動作は、ハンド10の姿勢を出来るだけ変化させないことである。具体的には、図9(B)に示すように、第2のビジュアルサーボを開始する時点でのハンド10の姿勢Rgを目標とする。姿勢Rgを下式(26)とする。
評価関数q(X)を下式(27)と定義する。評価関数q(X)を上式(19)に代入すると、下式(28)のξ
iが求まる。
上式(28)のξを用いて、制御則を下式(29)、(30)とする。
Jis #は、上式(23)のヤコビアンJisの疑似逆行列である。ξ以外の他のパラメーターは上述した通りである。
上式(29)の第2項は、ハンド10の姿勢R=[R1,R2,R3]Tと目標姿勢Rgとの差の二乗和を最小とするように(評価関数q(X)を最大化するように)働く。即ち、ハンド10の姿勢Rが第2のビジュアルサーボ開始時点の姿勢Rgから出来るだけ変化しないように制御される。
上式(29)の第1項は、短リード線40を第2の穴70に一致させるという優先度が高い動作を実現する。この動作には、短リード線40を軸とする回転方向の冗長自由度があり、その冗長自由度を用いて、ハンド10の姿勢Rを出来るだけ変化させないという優先度が低い動作を実現している。
仮にハンド10の姿勢を制約しなかったとすると、短リード線40を動かすときに冗長自由度の範囲でハンド10は自由な姿勢をとることができる。例えば長リード線30が第1の穴60から離れる方向にハンド10が移動する可能性がある。そうすると、長リード線30は第1の穴60に拘束されているため、長リード線30が大きく変形し、その後の挿入作業に支障を来す。上式(29)の第2項は、このようなハンド10の大きな動きを極力避け、長リード線30の変形を出来るだけ抑えることができる。
なお、上記の手法は第1のビジュアルサーボに適用することも可能である。即ち、長リード線30を第1の穴60に一致させるときにハンド10の姿勢Rが出来るだけ変化しないように制御することで、短リード線40の位置がより適切となるようにしてもよい。
6.ビジュアルサーボの第4の制御手法
次に、ビジュアルサーボの第4の制御手法について説明する。この手法は、図2のステップS5で説明した第2のビジュアルサーボに適用できる。
図10に、カメラCM1、CM2の撮像画像を示す。優先度の高い動作は、第3の制御手法と同様に、短リード線40の画像特徴量ssを目標画像特徴量ssgに一致させる動作である。優先度の低い動作は、第3の制御手法とは異なり、長リード線30の先端を出来るだけ動かさないことである。
図11に、優先度が高い動作の説明図を示す。長リード線30の先端は第1の穴60に挿入されており、カメラCM1、CM2からは見えないため、長リード線30が第1の穴60に拘束されていないと仮定した場合の、長リード線30先端の移動が最小となるように制御する。
制御則の式は、上式(29)、(30)と同一である。評価関数q(X)は次のように定義する。即ち、優先度が高い動作(上式(29)の第1項)によって動かされる仮のハンド10の位置及び姿勢の変化量ΔX
cは下式(31)となる。
変化量ΔX
cだけハンドの位置及び姿勢が変化した際の、第1の穴60に挿入されていないと仮定した長リード線30の画像特徴量s
lの変化量Δs
lcを、下式(32)により推定する。
推定変化量Δs
lcから評価関数q(X)を下式(33)と定義する。Δs
lciは、Δs
lcのi番目の要素である。
上式(19)に評価関数q(X)を代入すると、ξは下式(34)のように求まる。
上記のξを用いた場合、上式(29)の第2項は、変化量Δslcの各要素の二乗和を最小とするように(評価関数q(X)を最大化するように)働く。即ち、短リード線40の移動に伴う仮想的な長リード線30の移動が、第2のビジュアルサーボ開始時点から出来るだけ起きないように制御される。この制御には、上式(29)の第1項がもつ冗長自由度を用いている。
仮に冗長自由度の制御を行わずに短リード線40を動かしたとすると、短リード線40を軸とする回転方向で長リード線30がどの角度に配置されるかが決まらない。長リード線30は第1の穴60に拘束されているため、第1の穴60から離れる方向に回転すると長リード線30が大きく変形し、その後の挿入作業に支障を来す。上式(33)の評価関数を用いた場合の上式(29)の第2項は、このようなハンド10の大きな動きを極力避け、長リード線30の変形を出来るだけ抑えることができる。
7.動作情報の入力手法
上述した優先度が異なる動作は動作情報の指示内容に基づいて決定される。例えば、制御装置100が表示制御部と第2の受付部を含み、表示制御部が入力画面を表示部に表示し、その入力画面に操作部を介してユーザーが動作情報を入力し、その動作情報を第2の受付部が受け付ける。或は、制御装置100が記憶部と第2の受付部を含み、記憶部には動作情報が記憶され、その記憶部から読み出した動作情報を第2の受付部が受け付けてもよい。
図12に、第1の動作情報及び、第1の動作情報よりも優先度が低い第2の動作情報を入力するための表示画面の第1の例を示す。表示画面は、例えば図14(A)、図14(B)に示すロボットの表示部130に表示される。
表示画面には、優先度が高い第1の動作情報を入力するための領域IM1と、優先度が低い第2の動作情報を入力するための領域IM2が設定されている。領域IM1、IM2には、第1の被作業物であるコンデンサーの画像OB1と、第2の被作業物である電子基板の画像OB2と、が表示される。
ユーザーは、領域IM1において、コンデンサーの画像OB1に対して長リード線の先端にマークTP1を付し、電子基板の画像OB2に対して、長リード線を挿入したい穴にマークGP1を付す。これにより、高優先度タスクの制御部位と目標点が入力される。
また、ユーザーは、領域IM2において、コンデンサーの画像OB1に対して短リード線の先端にマークTP2を付し、電子基板の画像OB2に対して、短リード線を挿入したい穴の上方にマークGP2を付す。例えば、高優先度タスクが達成された場合のコンデンサーの画像OB1’を表示し、その画像OB1’の短リード線の先端にマークGP2を付す。これにより、低優先度タスクの制御部位と目標点が入力される。
図12の表示画面によれば、被作業物が画像として表示され、その画像に対して特徴点や目標点を指示すればよいため、視覚的な分りやすいユーザーインターフェースを提供できる。
図13に、第1の動作情報及び、第1の動作情報よりも優先度が低い第2の動作情報を入力するための表示画面の第2の例を示す。
表示画面には、優先度が高い第1の動作情報を入力するための第1の選択肢OP1と、優先度が低い第2の動作情報を入力するための第2の選択肢OP2が表示される。選択肢OP1は、更に制御対象を選択するための選択肢OPAと、その制御対象の制御目標を選択するための選択肢OPBを含んでいる。
選択肢OPAは、第1の被作業物であるコンデンサーの部位(短リード線、長リード線)を選択できるようになっている。また、選択肢OPBは、第2の被作業物である電子基板の穴(第1の穴、第2の穴、・・・)を選択できるようになっている。ユーザーは、これらの中から、所望する制御対象と制御目標を選択する。
選択肢OP2には、どの制御対象をどのように制御するかを選択できるようになっている。例えば、エンドエフェクターの姿勢を制御対象として、その姿勢を出来るだけ変化させずに動作させる、或は、選択肢OPAで選んだ制御対象と逆のリード線(図13では長リード線)を制御対象として、そのリード線を仮想的に出来るだけ動かさずに動作させる、等である。ユーザーは、これらの中から、所望の動作を選択する。
図13の表示画面によれば、動作を選択肢として表示するので、ハンドの姿勢やリード線の仮想的な動き等、特徴点や目標点だけでは表せない動作を指示することが可能となる。例えば、図2のステップS5で説明した第2のビジュアルサーボでは、このような指示方法が適している。
8.第2の制御処理フロー
図14に、処理部120がロボット300を動作させる制御処理の第2のフローチャートを示す。このフローでは、図2で説明したフローとは異なり、ビジュアルサーボの間に位置制御を含まない。
具体的には、まずハンド10は本体部25を把持する(ステップS21)。次に、第1の位置制御によりコンデンサー20をビジュアルサーボの開始点へ移動させる(ステップS22)。
次に、第1のビジュアルサーボにより、長リード線30の特徴点TPaを目標点GPaに一致させる第1の動作を行う(ステップS23)。図2のステップS3と同様に、短リード線40の先端を目標点に近づける優先度の低い動作を加えてもよい。
次に、第2のビジュアルサーボにより短リード線40の特徴点TPcを目標点GPcに一致させる第2の動作を行う(ステップS24)。このとき、短リード線40の特徴点TPcを目標点GPcに近づけるのに伴って、長リード線30を第1の穴60に挿入する。また、長リード線30、短リード線40が曲がっている場合等には、長リード線30を変形させる。図2のステップS5と同様に、ハンド10の姿勢を出来るだけ変化させない動作や、長リード線30の画像特徴量の推定変化量を最小にする動作を、優先度が低い動作として加えてもよい。
次に、第2の位置制御によりコンデンサー20を下方(挿入方向)に移動させ、短リード線40を第2の穴70に挿入する(ステップS25)。
図2のステップS4で説明したように、処理部120がビジュアルサーボを用いてロボット300を動作させることで、リード線の先端を穴に正確に近づけることができる。また、短リード線40を第2の穴70に挿入する動作では、移動方向が決まっているため処理部120が位置制御を用いてロボット300を動作させることができ、ビジュアルサーボを用いる場合に比べて作業時間の短縮につながる。
リード線の長さが異なる場合には、短リード線40をビジュアルサーボで第2の穴70に近づけると、自然に長リード線30を第1の穴60に挿入できる。これを利用して、第2のビジュアルサーボにおいて長リード線30の挿入を同時に行うことができ、作業ステップを簡素化できる。
9.第3の制御処理フロー
図15に、処理部120がロボット300を動作させる制御処理の第3のフローチャートを示す。このフローでは、2つのリード線の長さが同一(略同一を含む)である場合の例として、抵抗素子80の組み付け作業を説明する。
図15に示すように、抵抗素子80は、電気抵抗を発生する部分である本体部85と、抵抗素子80の第1の端子である第1のリード線35(第1の部位)と、抵抗素子80の第2の端子である第2のリード線45(第2の部位)と、で構成される。また、電子基板50には、第3の穴65(第1の穴部)と第4の穴75(第2の穴部)が設けられている。第1のリード線35、第2のリード線45をそれぞれ第3の穴65、第4の穴75に挿入し、半田付け等によって実装することで、抵抗素子80と電子基板50を組み付ける。
制御処理を開始すると、まずハンド10は本体部85を把持する(ステップS41)。次に、第1の位置制御により抵抗素子80をビジュアルサーボの開始点へ移動させる(ステップS42)。
次に、ビジュアルサーボにより、第1のリード線35の特徴点TPdを目標点GPdに一致させる第1の動作と、第2のリード線45の特徴点TPeを目標点GPeに一致させる第2の動作と、を行う(ステップS43)。このビジュアルサーボでは、例えば上述した第1の制御手法を用いればよい。
次に、第2の位置制御により抵抗素子80を下方(挿入方向)に移動させ、第1のリード線35を第3の穴65に挿入すると共に、第2のリード線45を第4の穴75に挿入する(ステップS44)。
図2のステップS4で説明したように、処理部120がビジュアルサーボを用いてロボット300を動作させることで、リード線の先端を穴に正確に近づけることができる。また、短リード線40を第2の穴70に挿入する動作では、移動方向が決まっているため処理部120が位置制御を用いてロボット300を動作させることができ、ビジュアルサーボを用いる場合に比べて作業時間の短縮につながる。
2つのリード線の長さが同一である場合には、2つのリード線を穴に一致させたときにリード線が電子基板50に対して傾かない。これを利用して、1回のビジュアルサーボで2つのリード線を同時に穴に一致させることが可能となり、その後のステップにおいて2つのリード線を穴に挿入することが可能となる。画像によりフィードバック制御を行うビジュアルサーボが1回で済むため、作業時間の短縮につながる。
10.ロボット
次に、図16(A)及び図16(B)に、本実施形態の制御装置100(ロボット制御システム)が適用されるロボット300の構成例を示す。図16(A)及び図16(B)のどちらの場合にも、ロボット300は、アーム320とエンドエフェクター310を有する。
エンドエフェクター310とは、ワーク(作業対象物)を把持したり、持ち上げたり、吊り上げたり、吸着させたり、ワークに加工を施したりするために、アーム320のエンドポイントに取り付ける部品のことをいう。エンドエフェクター310は、例えばハンド(把持部)であってもよいし、フックであってもよいし、吸盤等であってもよい。さらに、1本のアーム320に対して、複数のエンドエフェクターを設けても良い。なお、アーム320とは、ロボット300のパーツであって、一つ以上の関節を含む可動パーツのことをいう。
例えば、図16(A)のロボットは、ロボット300と制御装置100とが別体に構成されている。この場合には、制御装置100の一部又は全部の機能は、例えばPC(Personal Computer)により実現される。なお、ロボット300と、そのロボット300と別体に構成された要素(例えば制御装置100や、図1の撮像部200等)と、を含むシステムをロボットシステムと呼ぶ。
また、本実施形態のロボットは図16(A)の構成に限定されず、図16(B)のようにロボット本体305と制御装置100とが一体に構成されていてもよい。すなわち、ロボット300は、制御装置100を含んでいても良い。
具体的には図16(B)に示したように、ロボット300は、ロボット本体305及びロボット本体を支えるベースユニット部を有し、当該ベースユニット部に制御装置100が格納されるものであってもよい。ロボット本体305は、アーム320及びエンドエフェクター310を有する。図16(B)のロボット300には、ベースユニット部に車輪等が設けられ、ロボット300全体が移動可能な構成となっている。
図16(A)、図16(B)の制御装置100には、表示部130が設けられている。制御装置100は、この表示部130に、図12、図13で説明した表示画面を表示する。図16(A)では、表示部130はPCの表示装置である。図16(B)では、ベースユニット部に表示部130が設けられる。或は、ベースユニット部に外付けで表示部130を接続できるように構成してもよい。
なお、図16(A)は単腕型の例であるが、ロボット300は図16(B)に示すように双腕型等の多腕型のロボットであってもよい。また、ロボット300は、人手により移動させられるものであってもよいし、車輪を駆動させるモーターを設け、当該モーターを制御装置100により制御することにより、移動させられるものであってもよい。また、制御装置100は、図16(B)のようにロボット300の下に設けられたベースユニット部に設けられるとは限らない。
また、図17に示すように、制御装置100の機能は、有線及び無線の少なくとも一方を含むネットワーク400を介して、ロボット300と通信接続されたサーバー500により実現されてもよい。
或いは本実施形態では、本発明の制御装置の処理の一部を、サーバー500側の制御装置が行ってもよい。この場合には、ロボット300側に設けられた制御装置との分散処理により、当該処理を実現する。なお、ロボット300側の制御装置は、例えばロボット300に設置される端末装置330(制御部)により実現される。
そして、この場合に、サーバー500側の制御装置は、本発明の制御装置における各処理のうち、サーバー500の制御装置に割り当てられた処理を行う。一方、ロボット300に設けられた制御装置は、本発明の制御装置の各処理のうち、ロボット300の制御装置に割り当てられた処理を行う。なお、本発明の制御装置の各処理は、サーバー500側に割り当てられた処理であってもよいし、ロボット300側に割り当てられた処理であってもよい。
これにより、例えば端末装置330よりも処理能力の高いサーバー500が、処理量の多い処理を行うこと等が可能になる。さらに、例えばサーバー500が各ロボット300の動作を一括して制御することができ、例えば複数のロボット300に協調動作をさせること等が容易になる。
また近年は、多品種少数の部品を製造することが増えてきている。そして、製造する部品の種類を変更する場合には、ロボットが行う動作を変更する必要がある。図17に示すような構成であれば、複数のロボット300の各ロボットへ教示作業をし直さなくても、サーバー500が一括して、ロボット300が行う動作を変更すること等が可能になる。
さらに、図17に示すような構成であれば、各ロボット300に対して一つの制御装置100を設ける場合に比べて、制御装置100のソフトウェアアップデートを行う際の手間を大幅に減らすこと等が可能になる。
11.特徴ベースビジュアルサーボ
ここでは、ビジュアルサーボの概要と、特徴ベースビジュアルサーボの処理フローについて説明する。
ビジュアルサーボとは、目標物の位置の変化を視覚情報として計測し、それをフィードバック情報として用いることによって目標物を追跡するサーボ系の一種である。ビジュアルサーボは、サーボ系への入力情報(制御量)によって、位置ベースビジュアルサーボと特徴ベースビジュアルサーボの二つに大別される。位置ベースビジュアルサーボは、物体の位置情報や姿勢情報がサーボ系への入力情報となり、特徴ベースビジュアルサーボは、画像の特徴量がサーボ系への入力情報となる。他にも、位置ベースと特徴ベースをハイブリッドした手法もある。これらのビジュアルサーボは、参照画像と撮像画像を元にサーボ系への入力情報を求める点で共通している。本発明で扱うビジュアルサーボは、特徴ベースビジュアルサーボである。
図18に、特徴ベースビジュアルサーボのフローチャートを示す。この処理フローは、処理部120が実行する。まず参照画像を設定する(ステップS100)。ここで、参照画像とは、目標画像やゴール画像とも呼ばれ、ビジュアルサーボの制御目標となる画像であり、ロボット300の目標状態を表す画像をいう。すなわち、参照画像とは、ロボット300の目標位置や目標姿勢を表す画像、もしくはロボット300が目標位置に位置する状態を表す画像である。
次に、撮像部200によって作業スペースを撮像し、撮像画像を取得する(ステップS101)。撮像画像は、作業スペースの現在の状態を表しており、撮像画像内にロボット300やワークが映りこんでいる場合には、ロボット300やワークの現在の状態を表している。なお、撮像部200の性能によっては処理遅延が生じるが、ここでは、処理遅延が生じている場合でも、撮像画像には現在の状態が映されているものとして扱う。
なお、特徴ベースビジュアルサーボを用いる場合には、参照画像を設定する際に参照画像の特徴抽出を行い、特徴量を算出しておくことが望ましい。または、参照画像の特徴を抽出した参照画像情報を記憶部に記憶しておいてもよい。
次に、撮像画像の特徴を抽出する(ステップS102)。なお、参照画像の特徴抽出は、参照画像設定の際に行っておくことが望ましいが、本ステップで行ってもよい。特徴抽出では、ビジュアルサーボ系への入力情報(制御量)として、画像の特徴量を求める。
そして、画像の特徴量に基づいて、参照画像と撮像画像が一致するか否かを比較する(ステップS103)。画像が一致すると判定した場合(ステップS104)には、ビジュアルサーボを終了する。一方、画像が一致しないと判定した場合(ステップS104)には、制御指令を生成し(ステップS105)、ロボット300に制御指令を送出する(ステップS106)。
ここで、制御指令(制御信号)とは、ロボット300を制御するための情報を含む指令(信号)のことをいう。例えば、制御指令としては速度指令などがある。また、速度指令とは、ロボット300の各部を制御するための情報として、ロボット300のアームのエンドポイント等の移動速度や回転速度を与える指令の方法を指す。
特徴ベースビジュアルサーボでは、制御量が目標値に収束するまで以上の処理を繰り返す。即ち、ステップS106の制御指令によりロボット300の姿勢が変化し、ステップS101において、その姿勢での撮像画像を撮像する。このように姿勢を変化させながら撮像した複数の撮像画像に基づいて、処理部120は、ビジュアルサーボ開始時の姿勢である第1の姿勢から、ビジュアルサーボ終了時の姿勢である第2の姿勢までロボット300を制御する。
なお、本実施形態の制御装置及びロボット等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、CPU等のプロセッサーがプログラムを実行することで、本実施形態の制御装置及びロボット等が実現される。具体的には、情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをCPU等のプロセッサーが実行する。ここで、情報記憶媒体(コンピューターにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、CD等)、HDD(ハードディスクドライブ)、或いはメモリー(カード型メモリー、ROM等)などにより実現できる。そして、CPU等のプロセッサーは、情報記憶媒体に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピューターに実行させるためのプログラム)が記憶される。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本発明の範囲に含まれる。また処理部、受付部、制御装置、ロボットの構成・動作や、ビジュアルサーボの制御手法、ロボットの制御手法等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。