(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上記の提案されている技術では、依然として、アームの振動を十分に抑制することができず、ロボットの作業効率を向上させることが難しいという問題があった。
【0006】
この発明は、従来の技術が有する上述した課題を解決するためになされたものであり、アームの振動を抑制することで、ロボットの作業効率を向上させることが可能な技術の提供を目的とする。
【課題を解決するための手段】
【0007】
上述した課題の少なくとも一部を解決するために、本発明のロボットは次の構成を採用した。すなわち、
基台と、
前記基台に対して基台関節部を介して回転可能に設けられ、複数の関節を含む第1関節部を有する第1アームと、
前記基台関節部よりも前記第1アームの先端側で、且つ、前記第1関節部よりも前記第1アームの前記基台側に設けられ、慣性力を検出する基台側慣性センサーと、
前記第1関節部よりも前記第1アームの先端側に設けられ、慣性力を検出する第1慣性センサーと、
前記基台側慣性センサーによって検出された基台側慣性力と、前記第1慣性センサーによって検出された第1慣性力とに基づいて前記第1関節部を制御する制御部と、
を備えることを特徴とする。
【0008】
こうすれば、第1アームに含まれる複数の関節(第1関節部)を制御する際に、第1アームの先端側で検出された第1慣性力だけでなく、第1アームの基台側で検出された基台側慣性力も用いることができるので、第1アームの振動を十分に抑制することができ、ロボットの作業効率を向上させることが可能となる。
【0009】
また、上述した本発明のロボットにおいては、第1アームの第1関節部に含まれる複数の関節の角度を検出して、以下のようにして第1関節部を制御しても良い。先ず、第1関節部の複数の関節の角度と、第1アームの基台側で検出された慣性力(基台側慣性力)とを用いて、第1アームの先端側の移動速度(第1移動速度)を演算する。また、第1アームの先端で検出された第1慣性力から、第1アームの先端側の実速度(第1実速度)を演算する。そして、得られた第1実速度と第1移動速度との偏差に基づいて、第1関節部を制御することとしてもよい。
【0010】
第1実速度と第1移動速度との偏差は、第1アームを振動させる原因となる。従って、第1実速度と第1移動速度との偏差に基づいて第1関節部を制御してやれば、第1アームの振動を抑制することが可能となる。
【0011】
また、上述した本発明のロボットにおいては、第1実速度と第1移動速度との偏差に基づいて、次のようにして第1関節部を制御してもよい。先ず、第1実速度と第1移動速度との偏差に基づいて、第1関節部での歪み速度である第1歪み速度を演算する。そして、第1関節部の複数の関節についての角度と、第1歪み速度とに基づいて、第1関節部を制御することとしてもよい。
【0012】
第1歪み速度を抑制すれば、第1アームの振動を抑制することが可能である。また、詳細には後述するが、第1関節部の各関節の動きが第1歪み速度に与える影響は、各関節の角度に依存する。従って、第1歪み速度だけでなく、第1関節部の複数の関節での角度も考慮して第1関節部を制御すれば、第1アームの振動をより一層抑制することが可能となる。
【0013】
また、上述した本発明のロボットにおいては、第1実速度と第1移動速度との偏差に含まれる変動成分を抽出することによって、第1歪み速度を演算することとしてもよい。
【0014】
こうすれば、第1実速度と第1移動速度との偏差から、第1アームの振動の原因となる成分を抽出することができるので、第1アームの振動をより一層抑制することが可能となる。
【0015】
また、上述した本発明のロボットにおいては、基台関節部に含まれる関節の角度を検出し、検出した角度の変化速度に基づいて、第1アームの基台側の移動速度(基台側移動速度)を演算してもよい。そして、第1アームの基台側で実測された慣性力(基台側慣性力)から求められた基台側実速度と、基台側移動速度との偏差に基づいて、基台関節部を制御することとしてもよい。
【0016】
こうすれば、基台側関節部で生じる振動を抑制することができるので、第1アームの振動をより一層抑制することが可能となる。
【0017】
また、上述した本発明のロボットにおいては、複数の関節を含む第2関節部を有する第2アームを、基台関節部を介して基台に回転可能に設けることとしてもよい。そして、第2アームの先端側に設けた第2慣性センサーで第2慣性力を検出し、基台側慣性力と第2慣性力とに基づいて第2関節部を制御することとしてもよい。
【0018】
こうすれば、第1アームと同様な理由から、第2アームについても振動を抑制することが可能となる。
【0019】
また、第2アームを備える上述した本発明のロボットにおいては、第2関節部に含まれる複数の関節の角度を検出して、以下のようにして第2関節部を制御しても良い。すなわち、第2関節部の複数の関節の角度と、第2アームの基台側で検出された基台側慣性力とを用いて、第2アームの先端側での第2移動速度を演算する。また、第2アームの先端で検出された第2慣性力から、第2アームの先端側での第1実速度を演算する。そして、第2実速度と第2移動速度との偏差に基づいて、第2関節部を制御することとしてもよい。
【0020】
第2実速度と第2移動速度との偏差は、第2アームを振動させる原因となる。従って、第2実速度と第2移動速度との偏差に基づいて第2関節部を制御してやれば、第2アームについても振動を抑制することが可能となる。
【0021】
また、上述した本発明は、ロボットを制御する制御装置の態様で把握することもできる。すなわち、本発明は、
基台関節部を介して基台に回転可能に設けられ、複数の関節を含む第1関節部を有する第1アームを備えるロボットの制御装置であって、
前記基台関節部よりも前記第1アームの先端側で、且つ、前記第1関節部よりも前記第1アームの前記基台側に設けられ、慣性力を検出する基台側慣性センサーと、
前記第1関節部よりも前記第1アームの先端側に設けられ、慣性力を検出する第1慣性センサーと、
を備え、
前記基台側慣性センサーによって検出された基台側慣性力と、前記第1慣性センサーによって検出された第1慣性力とに基づいて前記第1関節部を制御することを特徴とする制御装置として把握することができる。
【0022】
更には、上述した本発明は、ロボットシステムとしての態様で把握することもできる。すなわち、本発明のロボットシステムは、
ロボットと前記ロボットを制御する制御装置とを備えるロボットシステムであって、
前記ロボットは、
基台と、
前記基台に対して基台関節部を介して回転可能に設けられ、複数の関節を含む第1関節部を有する第1アームと、
前記基台関節部よりも前記第1アームの先端側で、且つ、前記第1関節部よりも前記第1アームの前記基台側に設けられ、慣性力を検出する基台側慣性センサーと、
前記第1関節部よりも前記第1アームの先端側に設けられ、慣性力を検出する第1慣性センサーと、
を備えており、
前記制御装置は、前記基台側慣性センサーによって検出された基台側慣性力と、前記第1慣性センサーによって検出された第1慣性力とに基づいて前記第1関節部を制御する制御装置である
ことを特徴とするロボットシステムとして把握することもできる。
【0023】
上述した本発明の制御装置、ロボットシステムによっても、アームの振動を抑制して、ロボットの作業効率を向上させることが可能となる。
【発明を実施するための形態】
【0025】
A.第1実施例 :
A−1.第1実施例の装置構成 :
図1は、第1実施例のロボット1の全体構造を示す説明図である。
図1(a)には、第1実施例のロボット1の大まかな外形形状が示されている。図示されるように、第1実施例のロボット1は、地面に設置される基台10と、基台10に対して回転可能に取り付けられた第1アーム20と、基台10内に搭載されてロボット1の全体の動作を制御する制御部50とを備えている。
【0026】
第1アーム20は、6つのリンク21〜26と、5つの関節42〜46とを備えている。この中のリンク21は、関節41によって回転可能に基台10に取り付けられている。また、リンク22は、関節42によって屈曲可能にリンク21に取り付けられており、リンク23は、関節43によって屈曲可能にリンク22に取り付けられている。更に、リンク24は、関節44によって回転可能にリンク23に取り付けられており、リンク25は、関節45によって屈曲可能にリンク24に取り付けられ、リンク26は、関節46によって回転可能にリンク25に取り付けられている。尚、リンク26の先端には、ロボットハンド(いわゆるハンド部)や、溶接治具などの図示しない各種の治具(いわゆるエンドエフェクター)が装着される。
【0027】
また、関節41の部分には、関節41を駆動するためのモーター41mが搭載されている。同様に、関節42の部分には関節42を駆動するためのモーター42mが搭載され、関節43の部分には関節43を駆動するためのモーター43mが、関節44の部分にはモーター44mが、関節45の部分にはモーター45mが、関節46の部分にはモーター46mが搭載されている。
【0028】
これら6つのリンク21〜26のうちで最も基台10側のリンク21には、ジャイロセンサー30が取り付けられており、最も先端側のリンク26には、ジャイロセンサー31が取り付けられている。ここで、ジャイロセンサー30,31は、予め定められた直交する3軸(X軸、Y軸、Z軸)を回転軸とする角速度(あるいは慣性力)を出力可能なセンサーである。ジャイロセンサー30は、関節41の回転軸がジャイロセンサー30のZ軸と一致する向きに取り付けられている。また、ジャイロセンサー31は、関節46の回転軸がジャイロセンサー31のZ軸と一致する向きに取り付けられている。尚、本実施例では、慣性力として角速度を検出するものとして説明するが、角速度の代わりに速度を検出してもよい。また、ジャイロセンサー30,31の代わりに加速度センサーを用いても良い。
【0029】
図1(b)には、第1実施例のロボット1が備えるリンク21〜26や、関節41〜46、ジャイロセンサー30,31の位置関係が模式的に示されている。以下では、関節41の角度を角度θ1で表し、関節42の角度を角度θ2、関節43の角度を角度θ3、関節44の角度を角度θ4、関節45の角度を角度θ5、関節46の角度を角度θ6で表すものとする。
【0030】
尚、第1実施例においては、第1アーム20に含まれる関節42〜46が本発明における「第1関節部」に対応し、第1アーム20と基台10とを接続する関節41が本発明における「基台関節部」に対応する。また、ジャイロセンサー30は本発明における「基台側慣性センサー」に対応し、ジャイロセンサー31は本発明における「第1慣性センサー」に対応する。また、以下の明細書中では、第1アーム20の関節42〜46を駆動するモーター42m〜46mを「第1モーター」と称し、関節41を駆動するモーター41mを「基台側モーター」と称することがあるものとする。
【0031】
図2は、制御部50を中心として、モーター41m〜46mや、ジャイロセンサー30,31がデータをやり取りする様子を示した説明図である。基台側のモーター41mには、モーター41mの回転角度を検出する角度センサー41sが搭載されている。同様に、第1モーター(モーター42m〜46m)にも角度θ2〜θ6を検出する角度センサー42s〜46sが搭載されている。これら角度センサー41s〜46sの出力や、ジャイロセンサー30,31の出力は、制御部50に入力されている。制御部50は、これらの出力に基づいて、基台側のモーター41mや、第1モーター(モーター42m〜46m)の動作を制御する。詳細な制御内容については後述する。また、制御部50に内蔵されたメモリー50mには、制御に際して参照する各種のデータなどが記憶されている。
【0032】
図3は、第1実施例の制御部50の内部構成を概念的に示したブロック図である。図示されるように、第1実施例の制御部50は、第1実速度演算部51と、第1移動速度演算部52と、第1歪み速度演算部54と、第1補正速度演算部55と、第1モーター駆動部56と、基台側実速度演算部53と、基台側移動速度演算部57と、基台側歪み速度演算部58と、基台側モーター駆動部59の合計9つの部を備えている。尚、これら9つの部は、制御部50がモーター41m〜46mの動作を制御する機能に着目して、便宜的に制御部50の内部を分類したものであり、制御部50が物理的に9つの部分に分割可能なことを意味するわけではない。これら9つの部は、LSIなどを用いたハードウェアによって実現することもできるし、コンピュータープログラムを用いたソフトウェアによって実現することもできる。
【0033】
詳細には後述するが、制御部50の内部でのデータの流れは、基台側のモーター41mを制御するためのデータの流れと、第1モーター(モーター42m〜46m)を制御するためのデータの流れの大きく2つの流れに分けて考えることができる。このうちの基台側のモーター41mを制御するためのデータの流れでは、ジャイロセンサー30の出力と、角度センサー41sの出力とを受け取って、制御部50の内部で所定の演算を行った後、モーター41mにデータを出力する。また、第1モーター(モーター42m〜46m)を制御するためのデータの流れでは、ジャイロセンサー31の出力と、角度センサー42s〜46sの出力とを受け取り、更に、モーター41mの制御のための途中の演算結果も受け取って、制御部50の内部で所定の演算を行った後、第1モーター(モーター42m〜46m)にそれぞれデータを出力する。以下では、第1実施例の制御部50の内部で行われる具体的な演算内容について説明する。
【0034】
A−2.第1実施例の制御方法 :
A−2−1.第1移動速度演算部 :
図4は、制御部50の第1移動速度演算部52が実行する演算内容についての説明図である。第1移動速度演算部52は、次のような原理に基づいて、第1アーム20の先端部分(リンク26)の移動速度を演算する。先ず、
図1(b)に示したように、リンク26は関節41〜45を介して基台10に接続されている。従って、関節41を回転させると、基台10に接続されたリンク21〜25と共に、リンク26が移動する。また、この時のリンク26の移動速度は関節41の回転速度に依存する。同じく、関節42を回転させると、リンク21に接続されたリンク22〜25と共にリンク26の位置が移動し、この時の移動速度は関節42の回転速度(角速度ω2)に依存する。同様に、関節43〜45を回転させてもリンク26が移動し、この時のリンク26の移動速度は、関節43の回転速度(角速度ω3)や、関節44の回転速度(角速度ω4)、関節45の回転速度(角速度ω5)、関節46の回転速度(角速度ω6)に依存する。
【0035】
ここで、関節42の角度θ2は角度センサー42sによって検出することができるから、角度センサー42sの出力の微分値(簡易的には変化量)を求めれば、関節42の角速度ω2を得ることができる。角速度ω3〜ω6についても同様に、角度センサー43s〜46sの出力の微分値(簡易的には変化量)から求めることができる。また、前述したようにジャイロセンサー30は、ジャイロセンサー30のZ軸が、関節41の回転軸と同じ向きとなるように取り付けられているから、ジャイロセンサー30のZ軸回りの角速度R0zを検出すれば、関節41が回転する角速度を得ることができる。
【0036】
従って、リンク26の移動速度は、ジャイロセンサー30の出力(角速度R0z)と、第1アーム20の関節42〜46に設けられた角度センサー42s〜46sの出力(角度θ2〜θ6)とを用いて演算することが可能な筈である。尚、リンク26は3次元的に移動するから、移動速度も3つの成分を有している。各成分の座標軸は、原理的にはどのような座標軸としても構わないが、制御の都合上、ジャイロセンサー31の直交3軸(XYZ軸)を使用する。従って、リンク26の移動速度は、ジャイロセンサー31のX軸、Y軸、Z軸方向の各成分(C1x、C1y、C1z)によって表される。
【0037】
第1移動速度演算部52は、以上の原理に基づいて、リンク26のジャイロセンサー31が取り付けられた箇所での移動速度(C1x,C1y,C1z)を演算する。すなわち、
図4(a)に示されるように、ジャイロセンサー30で計測された角速度R0zと、角度センサー42sで検出した関節42の角度θ2と、角度センサー43sで検出した関節43の角度θ3と、角度センサー44sで検出した関節44の角度θ4と、角度センサー45sで検出した関節45の角度θ5と、角度センサー46sで検出した関節46の角度θ6とを取得する。続いて、角度θ2〜θ6の微分値(あるいは時間あたりの変化量)を演算することによって、角度θ2〜θ6を角速度ω2〜ω6に変換する。尚、角度センサー41sで検出した関節42の角度θ1は、後述するヤコビアンを演算するために使用される。そして、関節41での角速度R0zおよび関節42〜46での角速度ω2〜ω6に対してヤコビアンを作用させることによって、リンク26の移動速度の各成分C1x、C1y、C1zを演算することができる。
【0038】
図4(b)には、リンク26の移動速度(C1x,C1y,C1z)を求めるために用いるヤコビアン(以下、第1アームヤコビアンJ1とよぶ)が示されている。ここで、第1アームヤコビアンJ1の意味する処について概要を説明する。例えば、リンク26の移動速度のX成分C1xについて着目する。前述したようにリンク26の移動速度は、関節41での角速度R0zや、関節42〜46での角速度ω2〜ω6に依存する。従って、移動速度のX成分C1xについても、角速度R0zや角速度ω2〜ω6の線形結合によって、
図4(c)に示すような形式で表すことができる。ここで、角速度R0zにかかる係数(dC1x/dθ1)は、角速度R0zの変化がX成分C1xに与える寄与度を示す係数と考えることができる。
【0039】
図1(a)あるいは
図1(b)を参照すれば明らかなように、関節41を回転させた時のリンク26の移動速度は、関節41からリンク26までにある各リンク21〜25までの長さ(リンク長)や、各関節41〜46での角度θ1〜θ6に依存する。更に、各リンク21〜25のリンク長は変化することはないが、各関節41〜46での角度θ1〜θ6は変化する。従って、リンク26の移動速度のX成分C1xは、各関節41〜46での角度θ1〜θ6を変数とする関数となる。このことから、角速度R0zの寄与度を示す係数(dC1x/dθ1)は、移動速度のX成分C1xを変数θ1で偏微分した偏微分係数によって与えられる。
【0040】
角速度ω2の寄与度を示す係数(dC1x/dθ2)や、角速度ω3の寄与度を示す係数(dC1x/dθ3)、角速度ω4の寄与度を示す係数(dC1x/dθ4)、角速度ω5の寄与度を示す係数(dC1x/dθ5)、角速度ω6の寄与度を示す係数(dC1x/dθ6)についても同様に、移動速度のX成分C1xを、それぞれの変数θ2〜θ6で偏微分した偏微分係数によって与えられる。
【0041】
以上では、リンク26の移動速度のX成分C1xについて説明したが、移動速度のY成分C1yおよびZ成分C1zについても、全く同様なことが成り立つ。すなわち、移動速度のY成分C1yおよび移動速度のZ成分C1zは、関節41の角速度R0z、関節42〜46の角速度ω2〜ω6の線形結合によって表され、それぞれの寄与度を表す係数は、移動速度のY成分C1yあるいは移動速度のZ成分C1zを、それぞれ変数θ1〜θ6で偏微分した偏微分係数となる。そして、これらを行列の形式でまとめれば、
図4(b)に示す式を得ることができる。
【0042】
尚、第1アームヤコビアンJ1に関する
図4(b)に示した式について補足して説明しておく。第1アームヤコビアンJ1が
図4(b)に示した行列となるのは、ジャイロセンサー30が検出する回転軸(ここではR0z軸)と、関節41の回転軸とが一致しているためである。しかし、ジャイロセンサー30が検出する回転軸と、関節41の回転軸とが一致しているとは限らない。このような場合は、ジャイロセンサー30の姿勢角を、θ
R0x、θ
R0y、θ
R0zとすると、
図4(d)に示す式が成り立つ。ここで、姿勢角θ
R0xを時間微分した値が角速度R0xであり、姿勢角θ
R0yを時間微分した値が角速度R0yであり、姿勢角θ
R0zを時間微分した値が角速度R0zでとなる。そして、ここでは、ジャイロセンサー30のR0z軸とθ1の軸とが一致しているものとしているから、
図4(d)で、θ
R0yやθ
R0zでの偏微分係数は全て0となり、更に、θ
R0xはθ1で置き換えることができる。このようにして得られた式が、
図4(b)に示した式となる。
【0043】
以上のことから明らかなように、第1アームヤコビアンJ1は、第1アーム20を形成する各リンク21〜26のリンク長や形状に依存し、関節41〜46の角度θ1〜θ6を変数とする行列である。各リンク21〜26のリンク長は予め分かっているから、角度センサー41s〜46sの出力から角度θ1〜θ6を検出すれば、その時点での第1アームヤコビアンJ1を決定することができる。第1移動速度演算部52は、以上のようにして、ジャイロセンサー30の出力や、角度センサー41s〜46sの出力から、第1アームヤコビアンJ1を用いてリンク26の移動速度の各成分C1x、C1y、C1zを演算する。尚、第1実施例においては、第1アーム20の各関節42〜46の角度を検出する角度センサー42s〜46sが、本発明における「第1角度検出部」に対応する。また、第1アームヤコビアンJ1を用いた演算によって得られたリンク26の移動速度は、本発明における「第1移動速度」に対応する。
【0044】
A−2−2.第1歪み速度演算部 :
図5は、制御部50の第1歪み速度演算部54が実行する演算内容についての説明図である。第1歪み速度演算部54は、リンク26の移動速度の各成分について、前述した第1移動速度演算部52で得られた演算値C1x,C1y,C1zと、ジャイロセンサー31で検出した実際の移動速度との偏差を演算する。
【0045】
ジャイロセンサー31の3軸の出力は、第1実速度演算部51でAD変換された後、所定の変換係数が乗算されることによって、リンク26の実際の移動速度の各成分R1x,R1y,R1zに変換される。また、前述したように第1移動速度演算部52で演算する移動速度のXYZ各成分は、ジャイロセンサー31で検出するXYZの3軸成分と同じ方向成分となるように設定されている。このため、第1歪み速度演算部54は、第1実速度演算部51の出力から、第1移動速度演算部52の出力を成分毎に減算することができる。そして、得られた偏差をハイパスフィルター(HPF)に通すことによって、リンク26の第1歪み速度の各成分D1x,D1y,D1zを求めることができる。尚、ジャイロセンサー31で検出した実際の移動速度は、本発明における「第1実速度」に対応する。
【0046】
このようにして求めた第1歪み速度(D1x,D1y,D1z)は、第1移動速度演算部52がリンク26の移動速度(C1x,C1y,C1z)を演算する際に考慮しなかった、各リンク21〜26や関節41〜46での変形に起因する。そして、第1アーム20の先端に取り付けたハンド部などを目的の位置まで移動させて停止させた時に、ハンド部が振動する現象も、各リンク21〜26や関節41〜46での変形が原因となって発生する。従って、第1歪み速度演算部54で得られた第1歪み速度を、第1アーム20の各関節41〜46に搭載された第1モーター(モーター42m〜46m)および基台側のモーター41mにフィードバックすることで、リンク21〜26や関節41〜46での変形の影響を抑制してやれば、第1アーム20を停止した時の振動を抑制することが可能である。第1歪み速度演算部54は、このような着想に基づいて、第1歪み速度を成分毎に演算する。
【0047】
A−2−3.第1補正速度演算部 :
図6は、制御部50の第1補正速度演算部55が実行する演算内容についての説明図である。
図6(a)に示されるように、第1補正速度演算部55は、上述した第1歪み速度演算部54で得られた第1歪み速度(D1x,D1y,D1z)を、第1アーム20の各関節42〜46についての補正速度Dω2〜Dω6(以下、第1補正速度と称することがある)に変換する演算を行う。すなわち、第1アーム20のリンク21〜26や関節42〜46での変形によって生じた第1歪み速度は、ジャイロセンサー31のXYZ軸を基準とする各成分について得られている。従って、第1歪み速度の抑制を、関節42〜46がどのように分担して実現するかを決定する必要がある。
【0048】
そこで、第1補正速度演算部55は、上述した第1歪み速度演算部54で得られた第1歪み速度の各成分D1x,D1y,D1zから、関節42〜46の角速度ω2〜ω6についての補正速度Dω2〜Dω6を演算する。尚、関節41の角速度ω1の補正速度については、後述する基台側歪み速度演算部58が演算するので、第1補正速度演算部55は、関節42〜46についての補正速度Dω2〜Dω6を演算すればよい。
【0049】
ここで、
図4を用いて前述した第1アームヤコビアンJ1は、関節41〜46の角速度R0z、ω2〜ω6を、リンク26の移動速度C1x,C1y,C1zに変換する行列であった。これに対して、リンク26の移動速度の補正量(すなわち、第1歪み速度D1x,D1y,D1z)から、関節42〜46の角速度ω2〜ω6についての補正量(すなわち、補正速度Dω2〜Dω6)を決定するための行列は、ちょうど第1アームヤコビアンJ1とは逆の変換を行う行列となる。従って、この第1アームヤコビアンJ1とは逆の変換を行う行列を、以下では、第1アーム逆ヤコビアンRJ1と称する。第1アーム逆ヤコビアンRJ1を用いれば、
図6(b)に示した行列演算を行うことによって、第1歪み速度D1x,D1y,D1zから、第1補正速度Dω2〜Dω6を決定することができる。
【0050】
もっとも、第1歪み速度D1x,D1y,D1zから、関節42〜46についての第1補正速度Dω2〜Dω6を決定する演算は、3つの入力値(D1x,D1y,D1z)から、5つの変数値(Dω2〜Dω6)を決定する逆問題となる。このため、第1歪み速度D1x,D1y,D1zから、第1補正速度Dω2〜Dω6を一意的に決定できるわけではない。しかし、リンク21〜26や関節42〜46の変形のし易さを拘束条件として用いれば、3つの入力値(D1x,D1y,D1z)から、5つの変数値(Dω2〜Dω6)を決定することが可能となる。
【0051】
そこで、
図6(c)に示すように、第1アームヤコビアンJ1から角速度R0zに関する成分を除いた部分行列PJ1と、角度θ2〜θ6に重みを付けた5行5列の重付行列Wとを想定し、
図6(d)に示す行列演算によって、第1アーム逆ヤコビアンRJ1を決定する。尚、重付行列Wは、リンク21〜26や関節42〜46での変形のし易さを表す行列である。また、
図6(d)中の「−1」という表記は逆行列を表しており、
図6(d)中の「T」という表記は転置行列を表している。
【0052】
第1実施例の第1補正速度演算部55は、第1歪み速度演算部54から第1歪み速度D1x,D1y,D1zを受け取ると、以上のようにして、関節42〜46の角速度ω2〜ω6についての補正量(第1補正速度Dω2〜Dω6)を演算する。そして、得られた第1補正速度Dω2〜Dω6を、第1モーター駆動部56に出力する。
【0053】
A−2−4.第1モーター駆動部 :
図7は、制御部50の第1モーター駆動部56が実行する演算内容についての説明図である。第1モーター駆動部56は、第1補正速度演算部55から関節42〜46についての第1補正速度Dω2〜Dω6を受け取ると、それぞれの関節42〜46に搭載された第1モーター(モーター42m〜46m)を、モーター毎に制御する。
【0054】
A−2−5.基台側のモーターについての制御内容 :
図8は、制御部50の基台側実速度演算部53、基台側移動速度演算部57、基台側歪み速度演算部58および基台側モーター駆動部59が、基台側のモーター41mを制御する動作を示した説明図である。
【0055】
基台側実速度演算部53は、リンク21に取り付けられたジャイロセンサー30からの出力を受け取ると、AD変換を施した後、所定の変換係数を乗算することによって、基台10に対するリンク21の実速度R0zを演算する。また、基台側移動速度演算部57は、基台10に対するリンク21の角度θ1を角度センサー41sから受け取ると、角度θ1の微分値(あるいは時間あたりの変化量)を算出することによって、関節41の角速度ω1を演算する。尚、第1実施例においては、関節41の角度を検出する角度センサー41sが、本発明における「基台側角度検出部」に対応する。また、角速度ω1本発明における「基台側移動速度」に対応する。
【0056】
そして、基台側歪み速度演算部58は、基台側実速度演算部53で求めた実速度R0zから、基台側移動速度演算部57で求めた角速度ω1を減算し、得られた減算結果をハイパスフィルター(HPF)に通すことによって、基台側歪み速度D0zを演算する。尚、
図4を用いて前述した第1移動速度演算部52では、関節42〜46の角速度ω2〜ω6を、第1アームヤコビアンJ1を用いてジャイロセンサー31と同じ座標軸の角速度C1x,C1y,C1zに変換してから、歪み速度を演算していた。これに対して、
図1を用いて前述したように、ジャイロセンサー30は、ジャイロセンサー30のZ軸が関節41の回転軸と同じ向きとなるように取り付けられているので、座標軸の変換は不要である。このため、ジャイロセンサー30から得られた実速度R0zから、関節41の角速度ω1を減算するだけで、直ちに基台側歪み速度D0zを演算することができる。
【0057】
基台側モーター駆動部59は、こうして得られた基台側歪み速度D0zに基づいて、基台側のモーター41mの動作を制御する。尚、
図7を用いて前述したように第1モーター駆動部56は、第1歪み速度演算部54で得られた第1歪み速度D1x,D1y,D1zを、第1補正速度演算部55で、関節42〜46の角速度ω2〜ω6を用いた座標系に変換した後、第1モーター(モーター42m〜46m)を制御していた。これに対して、ジャイロセンサー30のZ軸は関節41の回転軸と同じ向きとなっているので、座標軸を変換することなく、直ちに基台側歪み速度D0zに基づいて基台側のモーター41mを制御することができる。
【0058】
以上に説明した第1実施例のロボット1では、第1アーム20のリンク21〜26や関節41〜46の変形に起因して発生する歪み速度(第1歪み速度D1x,D1y,D1zや基台側歪み速度D0z)を求めて、その結果に基づいて、関節42〜46の第1モーター(モーター42m〜46m)や、関節41のモーター41mの動作をフィードバック制御する。一般に、第1アーム20の先端を移動させて停止させた時に生じる振動は、第1アーム20のリンク21〜26や関節41〜46の変形に起因する。しかし、第1実施例のロボット1では、歪み速度を検出してモーター41m〜46mをフィードバック制御しているので、第1アーム20のリンク21〜26や関節41〜46の変形による影響を抑制することができる。その結果、第1アーム20のリンク21〜26や関節41〜46の変形に起因して発生する第1アーム20の振動も抑制することが可能となるので、第1アーム20の振動を速やかに停止させて、ハンド部などを用いた作業を開始することが可能となる。
【0059】
尚、上述した第1実施例では、
図3に示した制御部50内の9つの「部」が、LSIなどを用いたハードウェアか、コンピュータープログラムを用いたソフトウェア、若しくはそれらの組合せによって実現されているものとして説明した。もちろん、上述した全ての演算を実行するコンピュータープログラムをメモリー50mに記憶しておくこともできる。
図9は、このようなコンピュータープログラムを用いて制御部50が実行する制御処理のフローチャートである。
【0060】
図9に示した制御処理を開始すると、制御部50は、基台10側のリンク21に取り付けられたジャイロセンサー30、および第1アーム20の先端のリンク26に取り付けられたジャイロセンサー31の出力を取得する(ステップS100)。そして、それらの出力に基づいて、基台10側のリンク21の実速度(基台側実速度R0z)およびリンク26の実速度(第1実速度R1x,R1y,R1z)を演算する(ステップS101)。
【0061】
続いて、関節41〜46のモーター41m〜46mに内蔵されている角度センサー41s〜46sから、関節41〜46の角度θ1〜θ6を取得する(ステップS102)。そして、角度θ1の微分値(あるいは時間あたりの変化量)を求めることによって、基台側移動速度ω1を演算する。同様に、角度θ2〜θ6の微分値(あるいは時間あたりの変化量)を求めることによって得られた角速度ω2〜ω6に、前述した第1アームヤコビアンJ1を作用させることによって、第1移動速度C1x,C1y,C1zを演算する(ステップS103)。
【0062】
そして、ステップS101で求めた基台側実速度R0zと、ステップS103で求めた基台側移動速度ω1との偏差を取り、ハイパスフィルターを通すことによって、基台側歪み速度D0zを演算する。同様に、ステップS101で求めた第1実速度R1x,R1y,R1zと、ステップ103で求めた第1移動速度C1x,C1y,C1zとの偏差を取ってハイパスフィルターを通すことにより、第1歪み速度C1x,C1y,C1zを演算する(ステップS104)。
【0063】
続いて、第1歪み速度C1x,C1y,C1zに対して、前述した第1アーム逆ヤコビアンRJ1を作用させることによって、第1モーター(モーター42m〜46m)の角速度の補正量(第1補正速度Dω2〜Dω6)を演算する(ステップS105)。
【0064】
そして、基台側歪み速度D0zに従って基台側のモーター41mの動作を制御し、同様に、第1補正速度Dω2〜Dω6に従って第1モーター(モーター42m〜46m)の動作を制御する(ステップS106)。その後、制御を終了するか否かを判断し(ステップS107)、制御を継続する場合は(ステップS107:no)、処理の先頭に戻って上述した一連の処理(ステップS100〜S107)を繰り返す。これに対して、制御を終了する場合は(ステップS107:yes)、
図9の制御処理を終了する。
【0065】
以上のようなプログラムを実行することによっても、第1アーム20のリンク21〜26や関節41〜46の変形に起因して発生する歪み速度(第1歪み速度D1x,D1y,D1zや基台側歪み速度D0z)を検出して、モーター41m〜46mの動作にフィードバック制御することで、第1アーム20のリンク21〜26や関節41〜46の変形による影響を抑制することができる。このため、第1アーム20のリンク21〜26や関節41〜46の変形に起因して発生する第1アーム20の振動も抑制することが可能となる。
【0066】
B.第2実施例 :
上述した第1実施例では、第1アーム20が取り付けられる基台10は、第1アーム20との間の関節41の他に関節を有しておらず、基台10が地面に固定されているものとして説明した。しかし、基台10が、関節41以外の関節を介して地面に固定されるようにしても良い。以下では、このような第2実施例について説明する。
【0067】
図10は、第2実施例のロボット2の大まかな構成を示す説明図である。第2実施例のロボット2においても、第1アーム20については、前述した第1実施例と同様である。すなわち、第1アーム20は、6つのリンク21〜26と、これらリンク21〜26を連結する5つの関節42〜46とを備えている。また、それぞれの関節42〜46には、モーター42m〜46mや、角度センサー42s〜46sを内蔵されている。更に、リンク21およびリンク26には、それぞれジャイロセンサー30,ジャイロセンサー31が取り付けられている。
【0068】
また、第2実施例のロボット2においても、第1アーム20は関節41を介して基台10に連結されており、関節41には、モーター41mや角度センサー41sが内蔵されている。しかし、第2実施例のロボット2では、基台10も一種のリンク(以下、リンク10)となっており、基台10(リンク10)が関節18を介してリンク14に連結され、リンク14が関節17を介してリンク13に連結され、リンク13が関節16を介してリンク12に連結され、リンク12が関節15を介してリンク11に連結されて、リンク11が地面に固定されている。換言すれば、第2実施例のロボット2は、5つのリンク10〜14と4つの関節15〜18からなるアームの先端に、関節41を介して第1アーム20が取り付けられた構造となっている。また、それぞれの関節15〜18には、他の関節41〜46と同様に、関節を駆動するための後述するモーター15m〜18mや、角度センサー15s〜18sが内蔵されている。尚、第2実施例においては、モーター15m〜18m、およびモーター41mを、「基台側モーター」と称することがある。また、第2実施例においては、角度センサー15s〜18sが本発明における「基台側角度検出部」に対応する。
【0069】
図11は、第2実施例のロボット2の各関節15〜18,41〜46に設けられたモーター15m〜18m,41m〜46mや、角度センサー15s〜18s,41s〜46sと、制御部50との接続関係についての説明図である。尚、第1モーター(モーター42m〜46m)や、これら第1モーターに内蔵された角度センサー42s〜46sについては、前述した第1実施例のロボット1と同様であるため、これらについては1つにまとめて表示されている。第2実施例においても、角度センサー42s〜46sの出力や、ジャイロセンサー30,31の出力は、制御部50に入力されている。制御部50は、これらの出力に基づいて、第1モーター(モーター42m〜46m)の動作を制御する。
【0070】
また、関節15を駆動するためのモーター15mには、関節15の角度θ15を検出する角度センサー15sが内蔵されており、角度センサー15sの出力は制御部50に入力されている。同様に、関節16を駆動するためのモーター16mには、関節16の角度θ16を検出する角度センサー16sが内蔵されており、関節17を駆動するためのモーター17mには、関節17の角度θ17を検出する角度センサー17sが、関節18を駆動するためのモーター18mには、関節18の角度θ18を検出する角度センサー18sが内蔵されている。そして、角度センサー16s〜18sの出力も、制御部50に入力されている。そして、第2実施例の制御部50は、基台側のモーター15m〜18m,41mの動作を制御する。
【0071】
図12は、第2実施例の制御部50の内部構成を概念的に示したブロック図である。第2実施例の制御部50においても、
図3を用いて前述した第1実施例の制御部50と同様に、第1実速度演算部51と、第1移動速度演算部52と、第1歪み速度演算部54と、第1補正速度演算部55と、第1モーター駆動部56と、基台側実速度演算部53と、基台側移動速度演算部57と、基台側歪み速度演算部58と、基台側モーター駆動部59とを備えている。この中で、第1実速度演算部51と、第1移動速度演算部52と、第1歪み速度演算部54と、第1補正速度演算部55と、第1モーター駆動部56については、第1移動速度演算部52にジャイロセンサー30のX軸回りの角速度R0xの項、およびY軸回りの角速度R0yの項が増えることを除いては、前述した第1実施例と同様である。これは、第2実施例のロボット2においても、第1実施例のロボット1と全く同様な構成の第1アーム20を備えることによるものである。
【0072】
一方、第2実施例のロボット2は、第1アーム20が取り付けられる基台10も、5つのリンク10〜14と4つの関節15〜18を備えており、第1アーム20と同様な構造となっている。このため、基台側のモーター15m〜18m,41mは、第1モーター(モーター42m〜46m)と同様にして制御される。すなわち、ジャイロセンサー31から第1実速度を演算する第1実速度演算部51に対応して、ジャイロセンサー30から基台側実速度を演算する基台側実速度演算部53が設けられており、角度センサー42s〜46sで検出した角度θ2〜θ6を用いて第1移動速度を演算する第1移動速度演算部52に対応して、角度センサー15s〜18s,41sで検出した角度θ15〜θ18,θ1を用いて基台側移動速度(ジャイロセンサー31を搭載した位置の移動速度)を演算する基台側移動速度演算部57が設けられている。この基台側移動速度演算部57は、後述する基台側ヤコビアンを用いて、基台側移動速度を演算する。また、第1歪み速度演算部54に対応して基台側歪み速度演算部58が設けられ、第1補正速度演算部55に対応して基台側補正速度演算部60が設けられ、第1モーター駆動部56に対応して基台側モーター駆動部59が設けられている。基台側補正速度演算部60は、後述する基台側逆ヤコビアンを用いて、基台側の補正速度を演算する。
【0073】
図13は、第2実施例の基台側移動速度演算部57が、ジャイロセンサー30が搭載された箇所の移動速度(基台側移動速度C0x,C0y,C0z)を演算する方法を示した説明図である。
図4を用いて前述した第1移動速度演算部52と同様に、基台側移動速度演算部57も、角度センサー15s〜18s,41sで得られた角度θ15〜18,θ1から基台側ヤコビアンJ0を用いて基台側移動速度C0x,C0y,C0zを演算することができる。尚、前述した第1アームヤコビアンJ1は、第1アーム20のリンク21〜26のリンク長や形状に依存し、関節41〜46の角度θ1〜θ6を変数とする行列で与えられた。これと全く同様に、基台側ヤコビアンJ0は、基台側のリンク10〜14のリンク長や形状に依存し、関節15〜18,41の角度θ15〜θ18,θ1を変数として、
図13(b)に示す行列として与えられる。
【0074】
図14は、第2実施例の基台側補正速度演算部60が、基台側のモーター15m〜18m,41mについての補正速度(基台側補正速度Dω1,Dω15〜Dω18)を演算する方法を示した説明図である。
図6を用いて前述した第1補正速度演算部55は、第1歪み速度演算部54で得られた第1歪み速度D1x,D1y,D1zを、第1アーム逆ヤコビアンRJ1を用いて、第1アーム20の各関節42〜46の補正速度Dω2〜Dω6に変換した。これと全く同様に、基台側補正速度演算部60は、基台側歪み速度演算部58で得られた基台側歪み速度D0x,D0y,D0zを、基台側の関節41,15〜18の補正速度(基台側補正速度Dω1,Dω15,Dω16,Dω17,Dω18)に変換する。
【0075】
この時の基台側歪み速度D0x,D0y,D0zから基台側補正速度Dω1,Dω15,Dω16,Dω17,Dω18への変換は、
図14(b)に示すように基台側逆ヤコビアンRJ0を用いて行う。また、基台側逆ヤコビアンRJ0は、第1アーム逆ヤコビアンRJ1と同様にして、基台側の関節41,15〜18の角度θ1,θ15〜18に重みを付けた重付行列W0を用いて、
図14(c)の行列演算によって求めることができる。
【0076】
こうして求めた基台側補正速度Dω1,Dω15〜18を、基台側モーター駆動部59に供給して、基台側のモーター41m,モーター15m〜18mを制御する。こうすれば、第1アーム20が接続された基台10が、他のリンク11〜14を介して地面に固定されていた場合でも、基台10(リンク10)の振動を抑制することができる。その結果、第1アーム20の先端の振動も抑制することができるので、第1アーム20の先端に取り付けたハンド部などを目的の位置に移動させた後、速やかに作業を開始することが可能となる。
【0077】
尚、上述した第2実施例では、リンク10〜14や関節41,15〜18によって形成された基台側のアームの先端に、第1アーム20が取り付けられているものとして説明した。しかし、その第1アーム20の先端に、更に別のアームを取り付けてもよい。
【0078】
図15は、第1アーム20の先端に、先端側アーム90を連結した第2実施例の他の態様のロボット3の大まかな構造を示す説明図である。図示されるように他の態様のロボット3は、第2実施例のロボット2に対して、第1アーム20の先端に先端側アーム90が連結されている。このような他の態様のロボット3においても、先端側アーム90の先端のリンク91にジャイロセンサー32を取り付けてやれば、第2実施例の第1アーム20と全く同様にして、リンク91の振動を抑制することができる。その結果、先端側アーム90の先端に取り付けたハンド部などを目的の位置に移動させた後、速やかに作業を開始することが可能となる。
【0079】
また、前述した第2実施例のロボット2,3は、多数のリンクおよび関節が接続された1本のアームに、複数のジャイロセンサーを取り付けたものと考えることができる。すると、各関節についての制御は、
図12を用いて前述したように、ジャイロセンサーの位置によって、複数の小さなアームの単位で行われる。この小さなアーム単位での制御では、ヤコビアンや逆ヤコビアンを用いた行列演算が行われるが、アームを構成する関節の数が多くなるほど、行列の規模が大きくなるために迅速な演算が困難となる。このような観点からすると、第2実施例のロボット2,3は、多数の関節を有するアームの途中にジャイロセンサーを取り付けることで、複数の小さなアームに分割して、小さなアーム毎に各関節の動作を制御することで、迅速な制御の実現したものとなっている。
【0080】
C.第3実施例 :
上述した第2実施例では、複数のアームが直列に連結されているものとして説明した。しかし、複数のアームを並列に連結しても構わない。
【0081】
図16は、第3実施例のロボット4の大まかな構成を示す説明図である。図示したように第3実施例のロボット4が備える第1アーム20は、関節41を介して基台10に接続されたリンク21と、関節42および関節43を介してリンク21に接続されたリンク22と、関節44および関節45を介してリンク22に接続されたリンク23と、関節46および関節47を介してリンク23に接続されたリンク24と、関節48を介してリンク24に接続されたリンク25とを備えている。そして、それぞれの関節41〜48には、関節を駆動するためのモーター41m〜48mが内蔵されており、更に、それぞれのモーター41m〜48mには、関節の角度を検出する後述の角度センサー41s〜48sが組み込まれている。
【0082】
また、第3実施例のロボット4には、第1アーム20とリンク21を共有した状態で、第2アーム70も搭載されている。第2アーム70の構成は、第1アーム20と同様である。すなわち、リンク21と、関節72および関節73を介してリンク21に接続されたリンク62と、関節74および関節75を介してリンク62に接続されたリンク63と、関節76および関節77を介してリンク63に接続されたリンク64と、関節78を介してリンク64に接続されたリンク65とを備えている。また、関節72〜78にはモーター72m〜78m、および後述の角度センサー72s〜78sが内蔵されている。更に、リンク21には、ジャイロセンサー30が取り付けられ、第1アーム20の先端のリンク25にはジャイロセンサー31が、第2アーム70の先端のリンク65にはジャイロセンサー33が取り付けられている。また、第3実施例のジャイロセンサー30も、前述した第1実施例のジャイロセンサー30と同様に、ジャイロセンサー30のZ軸が、関節41の回転軸と同じ方向となるように取り付けられている。尚、第3実施例の第2アーム70が備える関節72〜78は、本発明における「第2関節部」に対応する。また、第2アーム70の先端に取り付けられたジャイロセンサー33が、本発明における「第2慣性センサー」に対応する。更に、関節72〜78の角度を検出する角度センサー72s〜78sが、本発明における「第2角度検出部」に対応する。
【0083】
更に、第3実施例のロボット4においても、基台10には制御部50が内蔵されており、この制御部50には、第1アーム20の関節42〜48に取り付けられたモーター42m〜48mや、角度センサー42s〜48s、第2アーム70のモーター72m〜78m、角度センサー72s〜78s、基台10側のモーター41m、角度センサー41s、ジャイロセンサー30,31,33が接続されている。また、第3実施例では、基台10を車輪95によって移動させることが可能であり、基台10を所望の位置まで移動させた後は、ストッパー96によって地面に固定することが可能となっている。尚、第3実施例においても、第1アーム20に取り付けられたモーター42m〜48mを「第1モーター」と称し、基台側のモーター41mを「基台側モーター」と称することがあるものとする。また、第2アーム70に取り付けられたモーター72m〜78mは「第2モーター」と称することがあるものとする。
【0084】
図17は、第3実施例のロボット4の各関節41〜48,72〜78に設けられたモーター41m〜48m,72m〜78mや、角度センサー41s〜48s,72s〜78s、ジャイロセンサー30,31,33と、制御部50との接続関係についての説明図である。第3実施例においても、角度センサー41s〜48s,72s〜78sの出力や、ジャイロセンサー30,31,33の出力は、制御部50に入力されている。制御部50は、これらの出力に基づいて、各関節41〜48,72〜78に搭載されたモーター41m〜48m,72m〜78mの動作を制御する。
【0085】
図18は、第3実施例の制御部50の内部構成を概念的に示したブロック図である。基台側のモーター41mおよび第1モーター(モーター42m〜48m)を制御するための構成は、
図3を用いて前述した第1実施例の構成と同様である。すなわち、ジャイロセンサー30および角度センサー41sの出力に対して、基台側実速度演算部53、基台側移動速度演算部57、基台側歪み速度演算部58、および基台側モーター駆動部59で、前述した所定の演算を施し、その結果に基づいて基台側のモーター41mを制御する。また、第1モーター(モーター42m〜48m)に関しては、ジャイロセンサー31や、角度センサー42s〜48s、基台側実速度演算部53での演算結果(リンク21の実速度)に対して、第1実速度演算部51、第1移動速度演算部52、第1歪み速度演算部54、第1補正速度演算部55、および第1モーター駆動部56で、前述した所定の演算を施して、その結果に基づいて第1モーター(モーター42m〜48m)の動作を制御する。
【0086】
また、上述したように、第3実施例のロボット4は第2アーム70を搭載している。このことに対応して、制御部50には、第2アーム70の第2モーター(モーター72m〜78m)を制御するために、第1アーム20を制御するための構成と同様な構成が設けられている。すなわち、第1アーム20の第1実速度演算部51に対応する第2実速度演算部81と、第1移動速度演算部52に対応する第2移動速度演算部82と、第1歪み速度演算部54に対応する第2歪み速度演算部84と、第1補正速度演算部55に対応する第2補正速度演算部85と、第1モーター駆動部56に対応する第2モーター駆動部86とを備えている。このうちの第2移動速度演算部82の第2アームヤコビアンや、第2補正速度演算部85の第2逆ヤコビアンは、第1アームヤコビアンJ1や第1アーム逆ヤコビアンRJ1と同様に、第2アーム70の各リンク62〜64や関節72〜78の寸法や変形のし易さに応じて決定される。
【0087】
そして、ジャイロセンサー33や、角度センサー72s〜78s、基台側実速度演算部53での演算結果(リンク21の実速度)に対して、第2実速度演算部81、第2移動速度演算部82、第2歪み速度演算部84、第2補正速度演算部85、および第2モーター駆動部86で、第1実施例と同様な処理を施すことにより、第2モーター(モーター72m〜78m)の動作を制御する。尚、第3実施例においては、ジャイロセンサー33の出力によって得られる角速度が、本発明における「第2実速度」に対応し、第2アームヤコビアンを用いて求められる角速度が、本発明における「第2移動速度」に対応する。
【0088】
こうすれば、第2アーム70についても、第1アーム20と同様に振動を抑制することができる。その結果、第2アーム70の先端の振動も抑制することができるので、第2アーム70の先端に取り付けたハンド部などを目的の位置に移動させた後、速やかに作業を開始することが可能となる。
【0089】
以上、各種の実施例について説明したが、本発明は上記の実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能である。例えば、上述した第3実施例では、第1アーム20および第2アーム70の2つのアームが並列に接続されているものとして説明した。しかし、3つ以上のアームを並列に接続することも可能である。