ロボットの制御方法およびロボットの制御装置
【課題】目標位置におけるツールの向きを決定するための変数の値を設定する際におけるユーザの作業負担を軽減しつつ、ロボットの移動時間の短縮を図る。
【解決手段】ユーザにより、ツールの所定軸まわりの回転角度が任意変数として指定されると、コントローラは、その所定軸まわりの回転角度をコントローラ側で任意の値に設定可能な任意変数として設定する。コントローラは、ツールの先端が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化することで任意変数の値を決定する。コントローラにより上記各処理が実行されることにより、目標位置におけるツールの向きが、ロボットの移動時間が極力短くなるようなものに自動的に決定される。
【解決手段】ユーザにより、ツールの所定軸まわりの回転角度が任意変数として指定されると、コントローラは、その所定軸まわりの回転角度をコントローラ側で任意の値に設定可能な任意変数として設定する。コントローラは、ツールの先端が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化することで任意変数の値を決定する。コントローラにより上記各処理が実行されることにより、目標位置におけるツールの向きが、ロボットの移動時間が極力短くなるようなものに自動的に決定される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際におけるロボットの制御方法およびロボットの制御装置に関する。
【背景技術】
【0002】
工場などにおいてロボットが導入される目的としては、生産効率の向上、つまり生産タクトタイムの短縮を図るという点が大きい。生産タクトタイムの短縮を図るためには、ロボットにより行われる1つ1つの作業における動作時間を短くする必要がある。そのため、ロボットの動作時間が極力短くなるようなティーチング(教示)が作業者により行われている。すなわち、現状においてロボットの動作時間を短くする作業は、ティーチングを担当する作業者の個人能力に大きく依存していることになる。
【0003】
ロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させるために行われるティーチングでは、目標位置におけるツールの先端位置および向きを決定するための各変数の値は、作業者により全て指定されるようになっている。上記各変数とは、ツール先端の各座標値に加え、ツール(手先)の所定軸まわりの回転角度(例えば、4軸の水平多関節型ロボットの場合であれば第4軸まわりの回転角度)のことである。
【0004】
さて、ロボットの手先に取り付けられるツールの種類および作業内容によっては、そのツールの向き(=手先の向き)にかかわらず、その作業を達成可能なケースがある。例えば、4軸の水平多関節型ロボットにツールとしてエアチャックが用いられる場合、ツールの向き(第4軸まわりの向き)にかかわらずワークを把持することができる。このように、ワークを把持可能な位置(目標位置)におけるツールの特定の向きが、どのような向きでもよい場合がある。
【0005】
図15は、ツール先端を現在位置から目標位置に向けて移動させる際におけるロボットの態様を模式的に示している。図15に示すロボットは、4軸の水平多関節型ロボットであり、その手先にツールとしてエアチャックが取り付けられている。なお、図15では、各軸(各関節)および各リンクをそれぞれ丸印および直線で示すとともに、ツール先端を矢印で示している。図15において、実線で示す現在位置から点線または破線で示す目標位置までツール先端を移動させ、ツールであるエアチャックによりワークを把持する作業が行われる。
【0006】
ロボットが破線で示す状態となる場合、ツール先端がワークの正面(図15中、下側の面)に正対する向きになっている。一方、ロボットが点線で示す状態となる場合、ツール先端がワークの正面に対して斜め向きとなっている。これらの各状態では、互いに各軸(関節)の回転角度が異なっている。すなわち、ツールの向きに応じてロボットの姿勢が変化する。そのため、上記各状態では、現在位置からの移動時間が互いに異なる。具体的には、目標位置におけるロボットの姿勢を破線で示した状態とした場合に比べ、点線で示した状態とした場合のほうが、現在位置から目標位置までの移動時間が短くなる。その理由は、点線の状態のほうが、破線の状態に比べ、最も移動時間が長くなる第1軸の移動量(回転量)が小さくなるためである。
【0007】
上記した目標位置のツール(手先)の向きを不問とするケースにおけるティーチングでも、目標位置におけるツールの先端位置および向きを決定するための変数の値は、作業者により全て指定されることになる。言い換えると、目標位置におけるロボットの姿勢(各軸の回転角度)が作業者により決定されることになる。しかし、前述したとおり、目標位置におけるツールの向きを不問とするケースでは、ツールの先端位置が同じ目標位置となるロボットの姿勢が多数存在する。作業者は、それら多数の姿勢の中から、最適な姿勢を選んで決定する必要がある。つまり、作業者は、ロボットの動作時間が出来るだけ短くなるように、目標位置におけるツールの向きを決定するための変数の値を設定する必要がある。図15のケースであれば、目標位置におけるロボットの姿勢(ツールの向き)を、破線で示した状態ではなく、点線で示した状態となるようなティーチング作業が要求される。
【0008】
このように、目標位置におけるツールの向きを不問とするケースにおいて、多数存在するロボットの姿勢の中から、動作時間が最短となる目標位置におけるロボットの姿勢(各軸の回転角度)を見つけ出す作業は非常に困難であり、たとえ熟練の作業者であっても、その作業に多大な時間を要することが多く、その作業負担が非常に大きい。
【0009】
ところで、ロボットを用いた作業のサイクルタイムを短縮するための従来技術としては、例えば特許文献1に記載された技術が挙げられる。特許文献1に記載の技術は、所定の方向や回転方向については位置制御を行わず、その代わりに、力やトルク値による制御を行うというものである。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平5−23982号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1に記載の技術は、正しく目標位置が計算可能となるように、ユーザにより位置情報および力やトルク値情報が与えられるということを前提としている。そのため、目標位置におけるロボットの姿勢を求める必要があると考えられる。つまり、特許文献1に記載の技術は、従来と手法が異なるだけで同じ程度の作業負担を要するものであり、ユーザによる作業負担が軽減されることは少ないと考えられるため、上記課題を解決する手段であるとは言えない。
【0012】
本発明は上記事情に鑑みてなされたものであり、その目的は、目標位置におけるツールの向きを決定するための変数の値を設定する際におけるユーザの作業負担を軽減しつつ、ロボットの移動時間の短縮を図ることができるロボットの制御方法およびロボットの制御装置を提供することにある。
【課題を解決するための手段】
【0013】
請求項1または3に記載の手段によれば、複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際の制御において、任意変数設定処理と、変数値決定処理とが実行される。一般的なティーチング作業では、ツールの先端位置および向きを決定するための各変数の値は、全てユーザにより指定される。なお、各変数の値とは、ツール先端の各座標値(X軸座標、Y軸座標およびZ軸座標の値)およびツール(手先)の所定軸まわりの回転角度(例えば、4軸の水平多関節型ロボットの場合であれば第4軸(Z軸)まわりの回転角度)の値である。しかし、手先に取り付けられるツールの種類および作業内容によっては、そのツールの向き(=手先の向き)にかかわらず、その作業を達成することが可能な場合もある。例えば、4軸の水平多関節型ロボットにツールとしてエアチャックが用いられる場合、ツールの向き(第4軸まわりの向き)にかかわらずワークを把持することができる。この場合、目標位置におけるツールの向きは、どのような向きでも構わないと言える。従来では、このような場合であっても、ツールの向きを決定するための変数(例えばZ軸まわりの回転角度)をユーザが指定していた。
【0014】
これに対し、本手段によれば、ツールの向きを決定するための変数のうち、ユーザにより指定される1つまたは2つの変数が任意の値に設定可能な任意変数として設定される(任意変数設定処理)。そして、手先が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標が設定され、その第1評価指標が最適化されて任意変数の値が決定される(変数値決定処理)。例えば、4軸の水平多関節型ロボットの手先にエアチャックが取り付けられる場合において、ツール(手先)のZ軸まわりの回転角度が任意変数として指定されれば、目標位置におけるツールのZ軸まわりの回転角度は、ツールの移動時間が極力短くなるような値に自動的に決定される。
【0015】
さて、目標位置における任意変数(例えばツールのZ軸まわりの回転角度)が取り得る全ての値について第1評価指標を演算し、任意変数の関数(以下では評価関数と言う)として表す(グラフ化する)と、次のようなことが分かる。すなわち、その評価関数において、第1評価指標の最小値(最適値)の部分が谷の底になるとともに、第1評価指標の最小値ではない別の値(最小値に準ずる値であり、以下では局所値と言う)の部分も谷の底になる。このようになる理由は次のとおりである。
【0016】
ロボットは、ツール先端の位置(各座標値)が同じであっても、その姿勢が全く異なることがある。そのため、ロボットが取り得る様々な姿勢を、複数の形態に分けて区別するということが通常行われている。例えば4軸の水平多関節型ロボットの場合、第2軸の回転角度の極性が互いに異なる2種類の形態(腕形態)が存在する。つまり、4軸の水平多関節型ロボットの姿勢は、2種類の形態に分類される。また、6軸の垂直多関節型ロボットの場合、第1軸の回転角度が互いに180度異なる2種類の形態(腕形態)、第3軸の回転角度の極性が互いに異なる2種類の形態(肘形態)および第4軸の回転角度が互いに180度異なる2種類の形態(手首形態)が存在する。つまり、それら腕形態、肘形態および手首形態の組み合わせにより合計で8種類の形態に分類される。
【0017】
このような形態が同じであれば、ロボットの姿勢はあまり変化しない。しかし、形態が異なれば、ロボットの姿勢は大きく異なる。ロボットの姿勢が大きく異なるということは、移動時間に基づく第1評価指標の変化の傾向についても大きく異なることになる。そのため、ロボットの形態ごとに評価関数の谷が存在することになる。言い換えると、上記評価関数には、ロボットの形態が切り替わる境界である特異点を中心として、その両側に谷の部分が存在することになる。このようなことから、例えば、4軸の水平多関節型ロボットの場合、評価関数は少なくとも2つの谷を有し、6軸の垂直多関節型ロボットの場合、評価関数は少なくとも8つの谷を有することになる。
【0018】
変数値決定処理において、最小値ではなく局所値に対応した値が目標位置における任意変数の値として設定されてしまうと、ロボットの動作時間を極力短くするという効果が若干低減する。上述したとおり、ロボットには形態という概念があり、その形態が切り替わる境界の特異点を中心として両側に評価関数の谷の部分が存在する。つまり、形態の境界である特異点が谷の境界である。そこで、本手段では、このようなロボットに特有の点を考慮し、以下のように、目標位置の任意変数の値として第1評価指標の局所値に対応した値が設定されることを避けつつ(局所値回避)、第1評価指標の最小値に対応した値が設定されるようにしている(最適化)。
【0019】
すなわち、変数値決定処理では、ロボットが所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて取得される。なお、それら各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、任意の値でよいため、ユーザが準備することは容易である。そして、全ての形態のうち、いずれか1つの形態が、目標位置における任意変数の候補値を求める演算の演算対象として設定される。
【0020】
演算対象として設定された形態について取得された各軸の回転角度の値から、任意変数(例えばツールのZ軸まわりの回転角度)の値が演算される。目標位置における任意変数の値として、上記演算された値を設定した場合における第1評価指標が演算される。そして、その演算された第1評価指標の値を初期値とし、第1評価指標の微分値または微小変分がゼロになるときの任意変数(例えばツールのZ軸まわりの回転角度)の値が求められ、その求めた値が目標位置における任意変数の候補値とされる。すなわち、演算対象の形態に対応した第1評価指標の値を起点として任意変数の変化に応じた第1評価指標の変化が確認され、その結果、第1評価指標が変化しなくなるときの値が目標位置における任意変数の候補値として設定される。このような演算を実現するためには、例えば、最急降下法、最適勾配法、ニュートン法などを用いるとよい。この候補値は、第1評価指標の最小値に対応するもの、あるいは、第1評価指標の局所値に対応するもののうち、いずれかとなる。
【0021】
このようにして候補値が求められた後、全ての形態のうち、演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つが次の演算対象に設定された上で、上記した候補値を求めるための各演算が再度実行される。一方、全ての形態のうち、演算対象に設定されていない形態が存在しない場合、求められた各候補値のうち、第1評価指標を最も小さくする値が、目標位置における任意変数の値として決定される。
【0022】
このようにして決定された目標位置における任意変数(例えばツールのZ軸まわりの回転角度)の値は、移動時間に基づく第1評価指標が最小となる値、あるいは、それに極めて近い値である。すなわち、決定された目標位置における任意変数の値は、現在位置から目標位置に移動する際におけるツール(ロボット)の移動時間が極力短くなるような値となっている。ロボット側において上記した制御が自動的に実行されるため、ユーザがティーチング時に行う作業としては、例えば4軸の水平多関節型ロボットの場合であれば、目標位置におけるツール先端の各座標値を指定するとともに、ツール(手先)のZ軸まわりの回転角度を任意変数として指定するだけでよい。そして、値が指定された目標位置におけるツール先端のX、Y、Z軸座標の値に加え、上記したように自動的に決定された目標位置におけるツールのZ軸まわりの回転角度(任意変数)の値に基づいて、現在位置から目標位置に向けてツールが移動されることにより、ティーチング時におけるユーザ(作業者)の作業負担を軽減しつつ、ロボットの移動時間の短縮を図ることができる。
【0023】
なお、ここでは、4軸の水平多関節型ロボットの場合を例に説明したが、例えば6軸の垂直多関節型ロボットの場合であれば次のようになる。すなわち、ツールの向きを決定するための変数(X、Y、Z軸まわりの各回転角度)のうち、いずれか1つ、あるいは、いずれか2つが任意変数として指定されれば、目標位置におけるツール(手先)の特定の軸まわりの回転角度が、ロボットの移動時間が極力短くなるような値に自動的に決定される。その結果、上記した4軸の水平多関節型ロボットの場合と同様の効果が得られる。すなわち、本手段によれば、複数の軸を有するロボット全般について、上記した作用および効果が得られる。
【0024】
また、本手段によれば、ロボットの形態ごとに第1評価指標の最小値または局所値(評価関数の谷)が存在するという点を考慮し、ロボットの形態ごとに任意変数の値が最適化され、最適化された各任意変数の値のうち、第1評価指標を最も小さくすることができる値が、目標位置における任意変数の値に設定される。これにより、目標位置における任意変数の値として第1評価指標の局所値に対応した値が設定されることを確実に防止することができる。つまり、ロボットの動作時間を極力短くするという効果が最大限に得られるように、目標位置における任意変数の値が設定されるようになっている。
【0025】
また、変数値決定処理では、ツールの先端が現在位置から目標位置まで移動する際に要する移動時間に基づく第1評価指標を用いるようになっている。従って、例えば加速度まで考慮した詳細な(正確な)移動時間を第1評価指標とすることも可能であるし、例えば速度のみを考慮した移動時間の概算値を第1評価指標とすることも可能である。このうち、前者のように第1評価指標を設定すれば、任意変数を決定する際の精度が高まる。すなわち、ロボットの動作時間を一層確実に短縮できる任意変数の値を設定することが可能となる。一方、後者のように第1評価指標を設定すれば、その演算を比較的容易に行い得るようになるため、演算時間の短縮を図ることが可能となる。
【0026】
請求項2または4に記載の手段によれば、変数値決定処理では、ロボットが所定の形態をとる各軸の回転角度が与えられることにより、ロボットが上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が求められる。すなわち、ロボットが所定の形態をとる各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つが、目標位置にツール先端が到達する各軸の回転角度を求めるための演算の演算対象として設定される。なお、上記与えられる各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、また、ツール先端が目標位置に到達する値である必要もなく、任意の値でよい。
【0027】
そして、演算対象として設定された形態について与えられた各軸の回転角度の値からツールの先端位置を求め、そのツールの先端位置が計算対象位置として設定される。続いて、その計算対象位置におけるツールの先端位置および向きを決定するための変数のうち任意変数に指定された変数を除いた変数と、計算対象位置における各軸(各関節)の回転角度とに関するヤコビ行列Jkが求められる。また、下記(1)式に示す第2評価指標Qkが設定される。ただし、移動後のツールの先端位置の目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分が各軸の最大回転速度の逆数の二乗である対角行列をλとしている。なお、εkTはεkの転置行列であり、ΔkTはΔkの転置行列である。
Qk=εkT・εk+ΔkT・λ・Δk …(1)
【0028】
上記(1)式において、右辺第一項は位置誤差の二乗和である。また、右辺第二項は各軸の回転角度の変化量(移動量)の二乗和に対角行列λを乗じたものであり、移動時間の二乗和に対して各軸の最大回転速度に応じた重み付けが与えられたものである。すなわち、移動時間の概算値に相当する。このように設定された第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkが演算される。ただし、目標位置の座標値を要素とする行列をPdとし、計算対象位置の座標値を要素とする行列をPkとしている。なお、JkTはJkの転置行列である。
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
【0029】
計算対象位置における各軸の回転角度に対して上記演算された変化量Δkを加えた各軸の回転角度、つまり移動後の各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置が演算される。そして、演算された移動後のツールの先端位置の目標位置に対する位置誤差が求められ、その位置誤差が所定の許容誤差以下であるか否かが判断される。つまり、演算により求められた移動後のツールの先端位置が十分に目標位置に近づいているか否かが判断される。その結果、位置誤差が許容誤差を超える場合、演算した移動後のツールの先端位置を次の計算対象位置とした上で、次の移動後のツールの先端位置を求めるための上記各演算が再度実行される。
【0030】
一方、上記判断の結果、位置誤差が許容誤差以下である場合、計算対象位置における各軸の回転角度に対して上記演算された変化量Δkを加えた各軸の回転角度(移動後の各軸の回転角度)の値を、ロボットが演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得する。すなわち、上記演算により求められた移動後のツールの先端位置が十分に目標位置に近づいていると判断された場合、そのときの各軸の回転角度の値が、ロボットが演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得される。このように各軸の回転角度の値が取得された後、演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、各軸の回転角度を取得するための上記各演算が再度実行される。その結果、ロボットが所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて取得されることになる。
【0031】
上記した各演算では、ヤコビ行列を用いている。ヤコビ行列は、各軸(各関節)における微小変位と、それに伴う手先の位置および向き(姿勢)の微小変位との比率を表すものである。このようなヤコビ行列を用いるとともに、移動時間の概算値が含まれた第2評価指標Qkを最小化する演算が繰り返される結果、その演算により求められる移動後のツールの先端位置が徐々に目標位置に近づいていくことになる。そのため、最終的に取得される各軸の回転角度に基づく目標位置におけるロボットの姿勢は、最初に与えられた各軸の回転角度に基づくロボットの姿勢から大きく変化することがない。すなわち、目標位置におけるロボットの形態は、当初の形態と同じになる。このように、本手段によれば、ロボットが所定の形態をとる各軸の回転角度が与えられるだけで、ロボットが上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を求めることが可能となる。上記与えられる各軸の回転角度の値は、ロボットが所定の形態をとる値であれば任意の値でよい。そのため、ツール先端の目標位置にかかわらず、そのロボットがとり得る形態ごとに1種類ずつの値が予め準備されていればよいことになり、このような面からもユーザ(作業者)の作業負担の軽減を図ることができる。
【図面の簡単な説明】
【0032】
【図1】本発明の第1の実施形態を示すもので、ロボットシステムの概略構成図
【図2】評価指標を任意変数の関数として表す図
【図3】4軸の水平多関節型ロボットの各形態を示す図
【図4】変数値決定処理の内容を示すフローチャート
【図5】現在位置および目標位置におけるロボットの態様を模式的に表す図
【図6】目標領域内のいずれかの位置に目標位置が設定される場合の図5相当図
【図7】本発明の第2の実施形態を示すもので、図4のステップS1に相当するフローチャート
【図8】本発明の第3の実施形態を示す図1相当図
【図9】6軸の垂直多関節型ロボットの腕形態を示す図
【図10】6軸の垂直多関節型ロボットの肘形態を示す図
【図11】6軸の垂直多関節型ロボットの手首形態を示す図
【図12】本発明の第4の実施形態を示すもので、図4のステップS1に相当するフローチャート
【図13】4軸の水平多関節型ロボットを模式的に示す図
【図14】図13相当図
【図15】従来技術を示す図5相当図
【発明を実施するための形態】
【0033】
(第1の実施形態)
以下、本発明の第1の実施形態について図1〜図6を参照しながら説明する。
図1は、一般的な産業用ロボットのシステム構成を示している。図1に示すロボットシステム1は、ロボット2と、ロボット2を制御するコントローラ3と、コントローラ3に接続されたティーチングペンダント4とから構成されている。
【0034】
ロボット2は、例えば4軸の水平多関節型ロボットとして構成されている。ロボット2は、設置面に固定されるベース5と、ベース5上にZ軸(垂直軸)方向の軸心を持つ第1軸J1を中心に回転可能に連結された第1のアーム6と、第1のアーム6の先端部上にZ軸方向の軸心を持つ第2軸J2を中心に回転可能に連結された第2のアーム7と、第2のアーム7の先端部に上下動可能で且つ回転可能に設けられたシャフト8とから構成されている。シャフト8を上下動させる際の軸が第3軸J3であり、回転させる際の軸が第4軸J4である。シャフト8の先端部(下端部)には、フランジ9が位置決めされて着脱可能に取り付けられる。
【0035】
ベース5、第1のアーム6、第2のアーム7、シャフト8およびフランジ9は、ロボット2のアームとして機能する。アーム先端であるフランジ9(手先に相当)には、図示はしないが、例えばエアチャックなどのツールが取り付けられる。ロボット2に設けられる複数の軸(J1〜J4)はそれぞれに対応して設けられるモータ(図示せず)により駆動される。各モータの近傍には、それぞれの回転軸の回転角度(回転位置)を検出するための位置検出器(図示せず)が設けられている。
【0036】
一般に、産業用のロボットは、予めティーチングなどを実施することにより作成される所定の動作プログラムに従って動作するようになっている。コントローラ3(ロボットの制御装置に相当)は、その動作プログラムに基づいてモータの駆動をフィードバック制御し、ロボット2のアームの動作制御を行う。
【0037】
ティーチングペンダント4は、例えば使用者が携帯あるいは手に所持して操作可能な程度の大きさで、例えば薄型の略矩形箱状に形成されている。ティーチングペンダント4には、各種のキースイッチが設けられており、使用者は、それらキースイッチにより種々の入力操作を行う。ティーチングペンダント4は、ケーブルを経由してコントローラ3に接続され、通信インターフェイスを経由してコントローラ3との間で高速のデータ転送を実行するようになっており、キースイッチの操作により入力された操作信号等の情報はティーチングペンダント4からコントローラ3へ送信される。
【0038】
一般に、ロボット2の手先であるフランジ9に取り付けられるツールの先端を、現在位置から目標位置に向けて移動させる動作のティーチング作業が行われる際、目標位置におけるロボット2の姿勢をどのようなものにするかはユーザにより決定される。すなわち、このようなティーチング作業の際、ツール先端の目標位置を決定するための変数(ツール先端のX軸座標値、Y軸座標値およびZ軸座標値)と、目標位置におけるツール(手先)の向きを決定するための変数(ツールのZ軸まわりの回転角度)とは、全てユーザにより指定される。ただし、フランジ9に取り付けられるツールの種類(形状)およびそのツールを用いた作業の内容によっては、ツールの向きを不問とすることが可能である。例えば、ツールとしてエアチャックが用いられる場合、ツールのZ軸(第4軸J4)まわりの向きがどのような向きであっても、ワークを把持することができる。
【0039】
本実施形態のロボットシステム1では、上記したツールの向きを不問とすることが可能なケースにおいて、ユーザは、ツール先端の目標位置を示すX、Y、Z軸座標の値を指定するだけでよく、目標位置におけるツールのZ軸まわりの回転角度Rzの値を指定しなくてよい。その代わりに、ユーザは、ツールのZ軸まわりの回転角度Rzを任意変数として指定する。これを受けて、コントローラ3は、回転角度Rzを、コントローラ3側で任意の値に設定可能な任意変数として設定する(任意変数設定処理)。また、詳細は後述するが、コントローラ3は、ツールの先端が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化することで任意変数の値を決定する(変数値決定処理)。このように、コントローラ3は、任意変数設定処理手段および変数値決定処理手段として機能する。本実施形態では、コントローラ3により上記各処理が実行されることにより、目標位置におけるツールの向きが、ロボット2の移動時間が極力短くなるようなものに決定される。
【0040】
図2は、目標位置におけるツールのZ軸まわりの回転角度Rz(任意変数)が取り得る全ての値について評価指標を演算し、任意変数の関数(以下では評価関数と言う)として表した(グラフ化した)ものである。この図2に示すように、評価関数は、2つの谷を有しており、評価指標の最小値(最適値)の部分が一方の谷の底に位置し、評価指標の最小値ではない他の値(最小値に準ずる値であり、以下では局所値と言う)の部分が他方の谷の底に位置している。評価関数にこのような2つの谷が存在する理由は、次のとおりである。
【0041】
図3は、4軸の水平多関節型ロボットの各形態を示している。なお、図3では、各軸および各リンクをそれぞれ丸印および直線で示すとともに、ツールの図示を省略している。ロボットは、ツール先端の位置(X、Y、Z軸座標値)が同じであっても、その姿勢が全く異なることがある。そのため、通常、ロボットが取り得る様々な姿勢を、複数の形態に分けて区別するということが行われている。例えば、本実施形態のロボット2(4軸の水平多関節型ロボット)の場合、2つの形態に分類される。すなわち、第2軸J2の回転角度がプラス(+)になる腕形態(図3(a)参照)と、第2軸J2の回転角度がマイナス(−)になる腕形態(図3(b)参照)とに分類される。このような形態が同じであれば、ロボット2の姿勢はあまり変化しない。しかし、形態が異なれば、ロボット2の姿勢は大きく異なる。ロボット2の姿勢が大きく異なるということは、移動時間に基づく評価指標の変化の傾向についても大きく異なることになる。そのため、ロボット2の形態ごとに前述した評価関数の谷が存在することになる。言い換えると、上記評価関数には、ロボット2の形態が切り替わる境界である特異点を中心として、その両側に谷の部分が存在することになる。このようなことから、本実施形態のロボット2の場合、評価関数は少なくとも2つの谷を有することになる。
【0042】
変数値決定処理において、最小値ではなく局所値が目標位置における任意変数の値として設定されてしまうと、ロボット2の動作時間を極力短くするという効果が若干低減する。上述したとおり、ロボットには形態という概念があり、その形態が切り替わる境界(特異点)を中心として両側に評価関数の谷の部分が存在する。つまり、形態の境界である特異点が谷の境界である。そこで、本実施形態では、このようなロボットに特有の点を考慮し、以下のように、目標位置の任意変数の値として第1評価指標の局所値に対応した値が設定されることを避けつつ(局所値回避)、第1評価指標の最小値(最適値)に対応した値が設定されるようにしている(最適化)。
【0043】
図4は、変数値決定処理の内容を示すフローチャートである。図4に示すように、変数値決定処理が開始されると(スタート)、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態(図3に示した2つの腕形態)のそれぞれについて取得される(ステップS1)。なお、それら各軸の回転角度の値は、ユーザにより予め準備されているものとする。ただし、準備する各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、上記各条件を満たすものであれば任意の値でよい。そのため、上記値をユーザが準備することは比較的容易である。
【0044】
ステップS2では、全ての形態のうち、いずれか1つの形態が、目標位置におけるツールのZ軸まわりの回転角度Rz(任意変数)の候補値を求める演算の演算対象として設定される。ステップS3では、設定された演算対象について取得された各軸の回転角度の値から、ツールのZ軸まわりの回転角度Rzの値が演算される。そして、ステップS4では、目標位置におけるツールのZ軸まわりの回転角度Rzの値として、ステップS3で演算された値を設定した場合における第1評価指標が演算される。ステップS5では、ステップS4で演算された第1評価指標の値を起点として回転角度Rzの変化に応じた評価指標の変化が確認される。その結果、第1評価指標が変化しなくなるときの回転角度Rz(任意変数)の値が求められる。このようなステップS5の処理を実現するためには、最急降下法、最適勾配法、ニュートン法などを用い、下記(3)式の条件を満たすツールのZ軸まわりの回転角度Rzを求めればよい。ただし、f(Pc、Pd)は、ツール先端を現在位置Pcから目標位置Pdに向けて移動させる際の評価指標(評価関数)を示している。
【0045】
【数1】
【0046】
ステップS6では、ステップS5で求められた値が目標位置におけるツールのZ軸まわりの回転角度Rzの候補値として設定される。この候補値は、移動時間の概算値が含まれた第1評価指標を最小化することにより決定された値である。そのため、ロボット2が演算対象の形態(所定の形態)となっている状態で、ツール先端を目標位置まで移動する際の移動時間が極力短くなる値になっている。すなわち、第1評価指標の最小値に対応するもの、あるいは、第1評価指標の局所値に対応するもののうち、いずれかとなっている。
【0047】
ステップS7では、全ての形態のうち未だ演算対象に設定されていない形態が存在するか否かが判断される。その判断の結果、演算対象に設定されていない形態が存在する場合(YES)、ステップS8に進む。ステップS8では、未だ演算対象に設定されていない形態のうちいずれか1つが次の演算対象に設定される。このように次の演算対象が設定された上で、ステップS3に戻り、次の候補値を求めるための各演算(ステップS3〜S6)が再度実行される。一方、ステップS7による判断の結果、演算対象に設定されていない形態が存在しない場合(NO)、ステップS9に進む。ステップS9では、求められた各候補値のうち、第1評価指標を最も小さくする値が、目標位置におけるZ軸まわりの回転角度Rz(任意変数)の値として決定され、処理が終了する(エンド)。
【0048】
このようにして決定された目標位置におけるツールのZ軸まわりの回転角度Rzの値は、移動時間の概算値が含まれた第1評価指標が最小となる値、あるいは、それに極めて近い値である。すなわち、決定された目標位置における任意変数の値は、現在位置から目標位置に移動する際におけるツール(ロボット2)の移動時間が極力短くなるような値となっている。
【0049】
コントローラ3により上記した制御が自動的に実行されるため、ユーザがティーチング時に行う作業としては、前述したように目標位置におけるツール先端の各座標値を指定するとともに、ツールのZ軸まわりの回転角度Rzを任意変数として指定するだけでよい。そして、コントローラ3は、値が指定された目標位置におけるツール先端のX、Y、Z軸座標の値に加え、上記した各処理により自動的に決定された目標位置におけるツールのZ軸まわりの回転角度Rzの値(ツールの向き)に基づいて、ツール先端を現在位置から目標位置に向けて移動させることができる。これにより、ティーチング時におけるユーザ(作業者)の作業負担が軽減されるとともに、ロボット2の移動時間が短縮されることになる。
【0050】
また、本実施形態では、ロボットの形態ごとに第1評価指標の最小値または局所値(評価関数の谷)が存在するという点を考慮し、ロボット2の形態ごとに任意変数の値を最適化し、それら最適化された任意変数の値のうち、第1評価指標を最も小さくすることができる値を、目標位置における任意変数の値に設定する。これにより、目標位置における任意変数の値として第1評価指標の局所値に対応した値が設定されることを確実に防止することができる。つまり、ロボット2の動作時間を極力短くするという効果が最大限に得られるように、目標位置における任意変数の値が設定されるようになっている。
【0051】
変数値決定処理においては、ツール先端が現在位置から目標位置まで移動する際に要する移動時間に基づく第1評価指標を用いるようにしている。従って、例えば各軸の加速度まで考慮した詳細な(正確な)移動時間を第1評価指標とすることも可能であるし、例えば各軸の速度のみを考慮した移動時間の概算値(近似値)を第1評価指標とすることも可能である。つまり、第1評価指標を設定する上での自由度が高い。このうち、前者のように第1評価指標を設定すれば、任意変数を決定する際の精度が高まる。すなわち、ロボット2の動作時間を一層確実に短縮できる任意変数の値を設定することが可能となる。一方、後者のように第1評価指標を設定すれば、その評価指標を求める演算を比較的容易に行い得るようになるため、演算時間の短縮を図ることが可能となる。
【0052】
次に、本実施形態のロボットシステム1により得られる具体的な効果について、図5および図6も参照して説明する。
図5は、ツール先端を現在位置Pcから目標位置Pdに向けて移動させる際におけるロボットの態様を模式的に示している。図5に示すロボットは、4軸の水平多関節型ロボットであり、その手先にツールとしてエアチャックが取り付けられている。なお、図5では、各軸および各リンクをそれぞれ丸印および直線で示すとともに、ツール先端を矢印で示している。また、現在位置におけるロボットの状態を点線で示すとともに、目標位置におけるロボットの状態を実線で示している。ここでは、現在位置Pcから目標位置Pdまでツール先端を移動させ、ツールであるエアチャックによりワークを把持する作業が行われるものとする。
【0053】
上記ケースにおけるティーチング作業は、従来の手法によれば次のように行われる。すなわち、ティーチングを担当する作業者は、まず、図5の(a)、(b)、(c)のそれぞれに示す状態(姿勢)について検討する。つまり、作業者は、ツールの向きを大まかに変えてみて、どの向きが良さそうであるかを推測する。その結果、(c)の状態が良さそうであると判断した場合、(c)の状態をベースにし、その(c)状態からツールの向きを少しずつ変化させたもの(図5の(d)、(e)、(f)のそれぞれに示す状態)について検討する。その結果、図5(f)の状態が最適である(移動時間が短くなる)という判断に至る。なお、ここでは、説明を簡略化するため、作業者が検討する状態の数を少なくするとともに、少ない繰り返し作業で最適な状態が見つかるケースとしている。実際には、さらに多くの状態について検討したり、繰り返し回数が増えたりすることもある。
【0054】
これに対し、本実施形態のロボットシステム1によれば、目標位置Pdにおけるツールの向きは、コントローラ3により、ロボット2の移動時間が極力短くなるような向きに自動的に決定される。従って、従来の手法のような繰り返しの過程を経ることなく、図5の(f)の状態(ツールの向き)が最適である(移動時間を極力短くできる)という結果が容易に得られる。
【0055】
このように、従来の手法によれば、ティーチングを担当する作業者の経験と推測により、少しずつ目標位置におけるロボットの状態(姿勢)を変化させる。そして、その作業を何回(例えば5回)か繰り返した結果、例えば、現在位置および目標位置におけるツールの向きが互いに同じロボットの姿勢(図5の(a))に比べ、ロボットの動作時間が短くなる(例えば25%程度の改善)ツールの向きを得ることが可能となっていた。これに対し、本実施形態のロボットシステム1によれば、ティーチングを担当する作業者の経験などに関係なく、従来の手法による効果と同程度の効果を得ることができる。さらに、その際、作業者は目標位置におけるロボットの姿勢について具体的に検討する必要がないため、その作業負担が大きく軽減されることになる。
【0056】
図6は、ツール先端を現在位置Pcから目標領域Ad内の任意の目標位置に向けて移動させる際における図5相当図である。この場合、図6の(a)に示す目標領域Ad内におけるどの位置に移動すればよいかについては実作業時にカメラなどの外部機器から与えられ、ティーチングの時点において作業者は知ることができないものとする。このようなケースでは、目標領域Ad内のどの位置に目標位置が設定されるかによってツールの最適な向きが変化する。そのため、従来の手法では、図6の(b)に示すように、目標領域Adを複数の小領域に分割し、それら小領域ごとに最適なツールの向きを教示するなど、非常に手間がかかっていた。また、どのように目標領域Adを分割するかによって、最適なツールの向きが得られるかどうかが変化するため、ティーチングを担当する作業者の個人能力に大きく依存する部分があった。
【0057】
これに対し、本実施形態のロボットシステム1によれば、実作業時に初めてカメラなどの外部機器から目標位置が与えられるケースであっても、コントローラ3は、与えられた目標位置に基づいて、その目標位置における最適なツールの向きを自動的に決定する。そのため、従来の手法のように目標領域Adを小領域に分割し、それら小領域ごとにティーチングをするといった手間のかかる作業を省くことが可能となる。
【0058】
(第2の実施形態)
以下、第1の実施形態に対し、変数値決定処理の内容を変更した第2の実施形態について図7を参照しながら説明する。
本実施形態では、ロボット2が所定の形態をとる各軸の回転角度が与えられることにより、ロボット2が上記形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が求められる。すなわち、変数値決定処理において、図4のステップS1に代えて図7のフローチャートに示す内容の処理が実行される。
【0059】
図7の処理が開始されると(スタート)、ロボット2が所定の形態をとる各軸の回転角度の値が、ロボット2がとり得る全ての形態(2種類の腕形態)のそれぞれについて取得される(ステップT1)。なお、それら各軸の回転角度の値は、ユーザにより予め準備されているものとする。ただし、準備する各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、また、ツール先端が目標位置に到達する値である必要もなく、上記各条件を満たすものであれば任意の値でよい。そのため、上記値をユーザが準備することは非常に容易である。
【0060】
ステップT2では、全ての形態のうち、いずれか1つの形態が、目標位置にツール先端が到達する各軸の回転角度を取得するための演算の演算対象として設定される。ステップT3では、演算対象に設定された形態について与えられた各軸の回転角度の値からツールの先端位置が求められる。ステップT4では、ステップT3で求められたツールの先端位置が計算対象位置として設定される。
【0061】
ステップT5では、計算対象位置におけるツールの先端位置および向きを決定するための変数(X、Y、Z軸座標値および回転角度Rz)のうち、任意変数に指定された回転角度Rzを除いた変数と、計算対象位置における各軸(関節)の回転角度とに関するヤコビ行列Jkが求められる。そのヤコビ行列Jkは、下記(4)式のように表される。ただし、X、Y、Z軸座標値をそれぞれXk、Yk、Zkとし、第1軸J1〜第4軸J4のそれぞれの回転角度をθ1k〜θ4kとしている。
【0062】
【数2】
【0063】
ステップT6では、下記(5)式に示す第2評価指標Qkが設定される。ただし、移動後のツールの先端位置の目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸J1〜J4の各回転角度θ1〜θ4の変化量を要素とする行列をΔkとし、対角成分が各軸J1〜J4のそれぞれの最大回転速度の逆数の二乗である対角行列をλとし、位置誤差および変化量の重み付けのための定数をβとしている。また、εkTはεkの転置行列を示し、ΔkTはΔkの転置行列を示している。なお、εk、λは、それぞれ下記(6)式、(7)式により表される。ただし、目標位置のX、Y、Z軸座標値を要素とする行列をPdとし、計算対象位置のX、Y、Z軸座標値を要素とする行列をPkとし、第1軸J1〜第4軸J4のそれぞれについての最大回転速度をV1max〜V4maxとしている。
Qk=εkT・εk+β・ΔkT・λ・Δk …(5)
εk=Pd−Pk−Jk・Δk …(6)
【0064】
【数3】
【0065】
上記(5)式において、右辺第一項は位置誤差の二乗和である。また、右辺第二項は各軸J1〜J4の回転角度の変化量(移動量)の二乗和に対角行列λを乗じたものであり、移動時間の概算値(近似値)に相当する。定数βは、ロボット2の各関節の可動範囲と動作速度に比例する。従って、定数βは、ロボット2の機種ごとに適宜設定すればよい。なお、第2評価指標Qkにおける位置誤差および移動時間の概算値の重み付けが均等であれば、定数βを省くことができる。ステップT7では、このように設定された第2評価指標Qkが最小化されることにより、下記(8)式に示す変化量Δkが演算される。
Δk=(β・λ+JkT・Jk)−1・JkT(Pd−Pk) …(8)
【0066】
ステップT8では、下記(9)式に示すように、移動後の各軸の回転角度が求められる。ただし、移動後の各軸J1〜J4の回転角度を要素とする行列をθk+1としている。また、定数γは目標位置への収束速度を調整するための定数を示している。なお、本実施形態では、定数γの値を1としているが、目標位置への収束速度を早くする場合には定数γの値を大きくすればよいし、収束速度を遅くする場合には定数γの値を小さくすればよい。
θk+1=θk+γ・Δk …(9)
【0067】
ステップT9では、下記(10)式に示すように、移動後のツールの先端位置が求められる。すなわち、移動後の各軸の回転角度を要素とする行列θk+1について順変換を行うことにより、移動後のツールの先端位置のX、Y、Z軸座標値を要素とする行列Pk+1が求められる。ただし、ツールのオフセット長や各アームのリンク長などを考慮した上で各軸の回転角度からツール先端位置を求める関数をJ2Pとして表している。
Pk+1=J2P(θk+1) …(10)
【0068】
ステップT10では、演算により求められた移動後のツールの先端位置Pk+1の目標位置Pdに対する位置誤差が求められる。ステップT11では、ステップT10で求められた位置誤差が所定の許容誤差以下であるか否かが判断される。つまり、演算により求められた移動後のツールの先端位置Pk+1が十分に目標位置Pdに近づいているか否かが判断される。その結果、位置誤差が許容誤差を超える場合(NO)、ステップT12に進む。ステップT12では、移動後のツールの先端位置Pk+1が次の計算位置に設定される。このように次の計算位置が設定された上で、ステップT5に戻り、次の移動後のツールの先端位置を求めるための各演算(ステップT5〜T11)が再度実行される。なお、上記許容誤差は、例えば、ロボット2における位置制御の精度に基づいて適宜設定すればよい。
【0069】
一方、ステップT11による判断の結果、位置誤差が許容誤差以下である場合(YES)、ステップT13に進む。ステップT13では、上記(9)式に示した移動後の各軸J1〜J4の回転角度θk+1の値が、ロボット2が演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得される。そして、ステップT14では、全ての形態のうち未だ演算対象に設定されていない形態が存在するか否かが判断される。その判断の結果、演算対象に設定されていない形態が存在する場合(YES)、ステップT15に進む。ステップT15では、未だ演算対象に設定されていない形態のうちいずれか1つが次の演算対象に設定される。このように次の演算対象が設定された上で、ステップT3に戻り、各軸の回転角度を取得するための各演算(ステップT3〜T13)が再度実行される。一方、ステップT14による判断の結果、演算対象に設定されていない形態が存在しない場合(NO)、処理が終了する(エンド)。このような処理が実行される結果、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態のそれぞれについて取得されることになる。
【0070】
上記した各演算では、ヤコビ行列を用いている。ヤコビ行列は、各軸(各関節)における微小変位と、それに伴う手先の位置および向き(姿勢)の微小変位との比率を表すものである。このようなヤコビ行列を用いるとともに、移動時間の概算値が含まれた第2評価指標を最小化する演算が繰り返される結果、その演算により求められる移動後のツールの先端位置が徐々に目標位置に近づいていくことになる。そのため、最終的に取得される各軸の回転角度に基づく目標位置におけるロボット2の姿勢は、最初に与えられた各軸の回転角度に基づくロボット2の姿勢から大きく変化することがない。すなわち、目標位置におけるロボット2の形態は、当初の形態と同じになる。
【0071】
このように、本実施形態によれば、ロボット2が所定の形態をとる各軸の回転角度が与えられるだけで、ロボット2が上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を求めることが可能になる。上記与えられる各軸の回転角度の値は、ロボット2が所定の形態をとる値であれば任意の値でよい。そのため、ツール先端の目標位置にかかわらず、そのロボット2がとり得る形態ごとに1種類ずつの値が予め準備されていればよいことになり、このような面からもユーザ(作業者)の作業負担の軽減を図ることができる。
【0072】
(第3の実施形態)
以下、上記各実施形態に対し、対象とするロボットの種類を変更した第3の実施形態について図8〜図11を参照しながら説明する。
図8は、第1の実施形態における図1相当図であり、第1の実施形態と同一部分には同一符号を付して説明を省略する。図8に示す本実施形態のロボットシステム21は、図1に示した第1の実施形態のロボットシステム1に対し、ロボット2に代えてロボット22を備えている点が異なる。
【0073】
ロボット22は、例えば6軸の垂直多関節型ロボットとして構成されている。すなわち、ベース25上には、Z軸方向の軸心を持つ第1軸J21を介してショルダ部26が水平方向に回転可能に連結されている。ショルダ部26には、Y軸方向の軸心を持つ第2軸J22を介して上方に延びる下アーム27の下端部が垂直方向に回転可能に連結されている。下アーム27の先端部には、Y軸方向の軸心を持つ第3軸J23を介して第1の上アーム28が垂直方向に回転可能に連結されている。第1の上アーム28の先端部には、X軸方向の軸心を持つ第4軸J24を介して第2の上アーム29が捻り回転可能に連結されている。第2の上アーム29の先端部には、Y軸方向の軸心を持つ第5軸J25を介して手首30が垂直方向に回転可能に連結されている。手首30には、X軸方向の軸心を持つ第6軸J26を介してフランジ31が捻り回転可能に連結されている。
【0074】
ベース25、ショルダ部26、下アーム27、第1の上アーム28、第2の上アーム29、手首30およびフランジ31は、ロボット22のアームとして機能する。アーム先端であるフランジ31(手先に相当)には、図示はしないが、例えばエアチャックなどのツールが取り付けられる。ロボット22に設けられる複数の軸(J21〜J26)は、第1の実施形態のロボット2と同様、それぞれに対応して設けられるモータ(図示せず)により駆動される。また、各モータの近傍には、それぞれの回転軸の回転位置を検出するための位置検出器(図示せず)が設けられている。
【0075】
図9〜図11は、第1の実施形態における図3相当図であり、それぞれ6軸の垂直多関節型ロボットの腕形態、肘形態および手首形態を示している。図9(a)は正面から目標位置にあるワークなどを取りに行くケースであり、図9(b)は背中越しにワークなどを取りに行くケースである。つまり、図9(a)および図9(b)では、点線で示した部分の面が、上下入れ替わる。このように、第1軸J21の回転角度が互いに180度異なる2種類の腕形態が存在する。図10(a)は第3軸J23が上方に存在するケースであり、図10(b)は第3軸J23が下方に存在するケースである。なお、ここで言う上下は、Z軸方向の位置を示している。このように、第3軸J23の回転角度の極性が互いに異なる2種類の肘形態が存在する。図11(a)および図11(b)は、点線で示した部分の面が、上下入れ替わる。このように、第4軸J24の回転角度が互いに180度異なる2種類の手首形態が存在する。
【0076】
本実施形態のロボット22(6軸の垂直多関節型ロボット)の場合、腕形態、肘形態および手首形態がそれぞれ2種類ずつ存在するため、それらの組み合わせにより合計で8つの形態に分類される。このようなことから、本実施形態のロボット22の場合、評価関数は少なくとも8つの谷を有することになる。このような本実施形態の構成においても、コントローラ3は、上記各実施形態と同様の任意変数設定処理および変数値決定処理を実行することが可能である。例えば、ツールの向きを決定するための変数(X、Y、Z軸まわりの回転角度Rx、Ry、Rz)のうち、いずれか1つ、あるいは、いずれか2つが任意変数として指定されれば、その指定された変数が任意変数として設定される(任意変数設定処理)。そして、コントローラ3により変数値決定処理が行われる。
【0077】
ただし、ツールの向きを決定するための変数のうち、いずれか2つが任意変数として指定された場合、図4のステップS5の処理において、(3)式に代えて下記(11)式〜(13)式のうちいずれかの条件を満たす任意変数の値を求めればよい。(11)式はX、Y軸まわりの回転角度Rx、Ryが任意変数として指定された場合の条件式を示し、(12)式はY、Z軸まわりの回転角度Ry、Rzが任意変数として指定された場合の条件式を示し、(13)式はX、Z軸まわりの回転角度Rx、Rzが任意変数として指定された場合の条件式を示す。
【0078】
【数4】
【0079】
また、本実施形態の構成では、図7のステップT5にて求められるヤコビ行列Jkについて、軸数の変更に基づいて変更すればよい。そのヤコビ行列Jkは、例えばツールのX軸まわりの回転角度RxおよびY軸まわりの回転角度Ryが任意変数として設定された場合、下記(14)式のように表される。ただし、第1軸J21〜第6軸J26のそれぞれの回転角度をθ1k〜θ6kとし、ツールのZ軸まわりの回転角度をRzkとしている。
【0080】
【数5】
【0081】
これにより、目標位置における任意変数の値(ツールの向き)が、ロボット22の移動時間が極力短くなるような値に自動的に決定される。その結果、本実施形態の構成においても、第1の実施形態および第2の実施形態と同様の作用および効果が得られる。
【0082】
(第4の実施形態)
以下、第1の実施形態に対し、変数値決定処理の内容を変更した第4の実施形態について図12〜図14を参照しながら説明する。
本実施形態では、ツール先端の目標位置(X、Y、Z軸座標値)が与えられることにより、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態(図3に示した2つの腕形態)のそれぞれについて求められる。すなわち、変数値決定処理において、図4のステップS1に代えて図12のフローチャートに示す内容の処理が実行される。図13および図14は、設定されるツール先端の目標位置に応じたロボット2の姿勢(各軸の回転角度)を模式的に示している。なお、図13および図14では、ロボット2のベース5およびフランジ9(手先)を丸印で示し、その他のアームなどの図示は省略している。
【0083】
図12の処理が開始されると(スタート)、ツール先端距離にツール長を加えた長さが、ロボット2のリンク長より長いか否かが判断される(ステップU1)。ツール先端距離とは、ロボット2のベース5からツール先端の目標位置までの距離である。また、ツール長とは、手先(フランジ9)に取り付けられたツールのオフセット長のことである(図13および図14参照)。すなわち、ツール長は、図13および図14において点線で描かれた円の半径に相当する。また、リンク長は、図13および図14において一点鎖線で描かれた円の半径に相当する。なお、本実施形態における長さ(距離)とは、X−Y平面上での長さ(距離)に相当する。
【0084】
ステップU1による判断の結果、ツール先端距離+ツール長のほうがリンク長よりも長い場合(YES)、ステップU2に進む。ロボット2のリンク長よりも遠くには、手先位置を動かすことはできない。従って、この場合には、ステップU2で移動不可能と判断され、処理が終了する(エンド)。
【0085】
一方、ステップU1による判断の結果、ツール先端距離+ツール長よりもリンク長のほうが長い場合(NO)、ステップU3に進む。この場合、ツール先端が目標位置に到達するように手先を動かすことが可能である。ただし、手先位置がベース5に近付き過ぎると、手先およびベース5が衝突するおそれがある。そこで、ベース5から手先(フランジ9)までの距離の目標値(目標距離)を下記(21)式のとおり定める。
ベースと衝突するおそれのある距離<目標距離<リンク長 …(21)
【0086】
上記(21)式に示す目標距離は、図13および図14において実線で描かれた円の半径に相当する。ステップU3では、下記(22)式の条件を満たしているか否かが判断される。すなわち、図13(a)の状態のように、点線および実線の円が互いに交差し、且つ、実線の円の外側から一点鎖線の円の内側までの間にツール先端の目標位置があるという条件を満たしているか否かが判断される。
ツール先端距離−ツール長≦目標距離≦ツール先端距離 …(22)
【0087】
上記(22)式の条件を満たしていない場合(ステップU3で「NO」)、ステップU4に進む。ステップU4では、下記(23)式の条件を満たしているか否かが判断される。すなわち、図13(b)の状態のように、点線および実線の円が互いに交差し、且つ、実線の円の内側にツール先端の目標位置があるという条件を満たしているか否かが判断される。
ツール先端距離+ツール長≧目標距離≧ツール先端距離 …(23)
【0088】
上記(22)式の条件または上記(23)式の条件を満たしている場合(ステップU3またはU4で「YES」)、ステップU5に進む。ステップU5では、ベース5から手先(フランジ9)までの距離(手先距離)が目標距離に一致するとともに、手先からツール先端までの距離がツール長に一致するという条件を満たす手先の位置が導出される。すなわち、図13において、点線および実線の円が交差する2つの点(図13で、白抜きの丸印および黒塗りの丸印で示す点)に位置するフランジ9の位置が候補値として導出される。ステップU6では、ステップU5で導出された2つの手先位置(候補値)のうち、正面を指す方向ベクトル(1,0)との内積が最大になるものが選択される。つまり、候補値のうち、よりロボット2の正面に近い側の値(図13で白抜きの丸印で示す点)が選択される。
【0089】
一方、上記(22)式の条件および上記(23)式の条件をいずれも満たしていない場合(ステップU3およびU4の双方で「NO」)、ステップU7に進む。すなわち、図14(a)、(b)の状態のように、点線および実線の円が互いに交差していない場合、ステップU7に進む。この場合、ベース5から手先(フランジ9)までの距離が目標距離に一致するように、手先の位置を設定することが不可能である。ステップU7では、ツール先端距離が目標距離以上であるか否かが判断される。すなわち、ツール先端の目標位置が実線の円の外側に位置する状態(図14(a)の状態)か、または、ツール先端の目標位置が実線の円の内側に位置する状態(図14(b)の状態)かが判断される。その結果、ツール先端距離が目標距離以上であると判断された場合(YES)、つまり図14(a)のような状態である場合、ステップU8に進む。
【0090】
ステップU8では、下記(24)式に基づいて手先の位置が導出される。すなわち、点線の円上であり、且つ、実線の円との距離が最も短くなる位置(図14(a)におけるフランジ9の位置)が手先の位置として導出される。ただし、ツール先端位置は、ツール先端のX、Y軸座標値である。つまり、下記(24)式では、距離(ツール先端距離およびツール長)から求まる比率を、ツール先端位置(X、Y軸座標値)にかけることで、手先位置(X、Y軸座標値)を算出している。
手先位置=((ツール先端距離−ツール長)÷ツール先端距離)×ツール先端位置
…(24)
【0091】
一方、ステップU7による判断の結果、ツール先端距離が目標距離未満であると判断された場合(NO)、つまり図14(b)のような状態であると判断された場合、ステップU9に進む。ステップU9では、下記(25)式に基づいて手先の位置が導出される。すなわち、点線の円上であり、且つ、実線の円との距離が最も短くなる位置(図14(b)におけるフランジ9の位置)が手先の位置として導出される。下記(25)式についても、上記(24)式と同様の考えに基づいて手先位置(X、Y軸座標値)を算出している。
手先位置=((ツール先端距離+ツール長)÷ツール先端距離)×ツール先端位置
…(25)
【0092】
ステップU10では、ステップU6で選択された手先位置またはステップU8、U9で導出された手先位置を実現するための各軸の回転角度が、全ての形態(2つの腕形態)のそれぞれについて求められ、処理が終了する(エンド)。このような処理が実行される結果、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態のそれぞれについて取得される。
【0093】
このように、本実施形態によれば、ツール先端の目標位置(各軸座標値)が与えられるだけで、4軸の水平多関節型ロボットであるロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を、ロボット2がとり得る全ての形態(2つの腕形態)のそれぞれについて求めることが可能になる。そのため、ユーザ(作業者)の作業負担が一層軽減されるという効果が得られる。
【0094】
(その他の実施形態)
なお、本発明は上記し且つ図面に記載した各実施形態に限定されるものではなく、次のような変形または拡張が可能である。
上記各実施形態では、本発明を4軸の水平多関節型のロボット2、または6軸の垂直多関節型のロボット22に適用した例を説明したが、本発明は、複数の軸を有するロボット全般に適用可能である。
【符号の説明】
【0095】
図面中、2、22はロボット、3はコントローラ(ロボットの制御装置、任意変数設定処理手段、変数値決定処理手段)、9、31はフランジ(手先)、J1〜J4、J21〜J26は軸を示す。
【技術分野】
【0001】
本発明は、複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際におけるロボットの制御方法およびロボットの制御装置に関する。
【背景技術】
【0002】
工場などにおいてロボットが導入される目的としては、生産効率の向上、つまり生産タクトタイムの短縮を図るという点が大きい。生産タクトタイムの短縮を図るためには、ロボットにより行われる1つ1つの作業における動作時間を短くする必要がある。そのため、ロボットの動作時間が極力短くなるようなティーチング(教示)が作業者により行われている。すなわち、現状においてロボットの動作時間を短くする作業は、ティーチングを担当する作業者の個人能力に大きく依存していることになる。
【0003】
ロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させるために行われるティーチングでは、目標位置におけるツールの先端位置および向きを決定するための各変数の値は、作業者により全て指定されるようになっている。上記各変数とは、ツール先端の各座標値に加え、ツール(手先)の所定軸まわりの回転角度(例えば、4軸の水平多関節型ロボットの場合であれば第4軸まわりの回転角度)のことである。
【0004】
さて、ロボットの手先に取り付けられるツールの種類および作業内容によっては、そのツールの向き(=手先の向き)にかかわらず、その作業を達成可能なケースがある。例えば、4軸の水平多関節型ロボットにツールとしてエアチャックが用いられる場合、ツールの向き(第4軸まわりの向き)にかかわらずワークを把持することができる。このように、ワークを把持可能な位置(目標位置)におけるツールの特定の向きが、どのような向きでもよい場合がある。
【0005】
図15は、ツール先端を現在位置から目標位置に向けて移動させる際におけるロボットの態様を模式的に示している。図15に示すロボットは、4軸の水平多関節型ロボットであり、その手先にツールとしてエアチャックが取り付けられている。なお、図15では、各軸(各関節)および各リンクをそれぞれ丸印および直線で示すとともに、ツール先端を矢印で示している。図15において、実線で示す現在位置から点線または破線で示す目標位置までツール先端を移動させ、ツールであるエアチャックによりワークを把持する作業が行われる。
【0006】
ロボットが破線で示す状態となる場合、ツール先端がワークの正面(図15中、下側の面)に正対する向きになっている。一方、ロボットが点線で示す状態となる場合、ツール先端がワークの正面に対して斜め向きとなっている。これらの各状態では、互いに各軸(関節)の回転角度が異なっている。すなわち、ツールの向きに応じてロボットの姿勢が変化する。そのため、上記各状態では、現在位置からの移動時間が互いに異なる。具体的には、目標位置におけるロボットの姿勢を破線で示した状態とした場合に比べ、点線で示した状態とした場合のほうが、現在位置から目標位置までの移動時間が短くなる。その理由は、点線の状態のほうが、破線の状態に比べ、最も移動時間が長くなる第1軸の移動量(回転量)が小さくなるためである。
【0007】
上記した目標位置のツール(手先)の向きを不問とするケースにおけるティーチングでも、目標位置におけるツールの先端位置および向きを決定するための変数の値は、作業者により全て指定されることになる。言い換えると、目標位置におけるロボットの姿勢(各軸の回転角度)が作業者により決定されることになる。しかし、前述したとおり、目標位置におけるツールの向きを不問とするケースでは、ツールの先端位置が同じ目標位置となるロボットの姿勢が多数存在する。作業者は、それら多数の姿勢の中から、最適な姿勢を選んで決定する必要がある。つまり、作業者は、ロボットの動作時間が出来るだけ短くなるように、目標位置におけるツールの向きを決定するための変数の値を設定する必要がある。図15のケースであれば、目標位置におけるロボットの姿勢(ツールの向き)を、破線で示した状態ではなく、点線で示した状態となるようなティーチング作業が要求される。
【0008】
このように、目標位置におけるツールの向きを不問とするケースにおいて、多数存在するロボットの姿勢の中から、動作時間が最短となる目標位置におけるロボットの姿勢(各軸の回転角度)を見つけ出す作業は非常に困難であり、たとえ熟練の作業者であっても、その作業に多大な時間を要することが多く、その作業負担が非常に大きい。
【0009】
ところで、ロボットを用いた作業のサイクルタイムを短縮するための従来技術としては、例えば特許文献1に記載された技術が挙げられる。特許文献1に記載の技術は、所定の方向や回転方向については位置制御を行わず、その代わりに、力やトルク値による制御を行うというものである。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平5−23982号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1に記載の技術は、正しく目標位置が計算可能となるように、ユーザにより位置情報および力やトルク値情報が与えられるということを前提としている。そのため、目標位置におけるロボットの姿勢を求める必要があると考えられる。つまり、特許文献1に記載の技術は、従来と手法が異なるだけで同じ程度の作業負担を要するものであり、ユーザによる作業負担が軽減されることは少ないと考えられるため、上記課題を解決する手段であるとは言えない。
【0012】
本発明は上記事情に鑑みてなされたものであり、その目的は、目標位置におけるツールの向きを決定するための変数の値を設定する際におけるユーザの作業負担を軽減しつつ、ロボットの移動時間の短縮を図ることができるロボットの制御方法およびロボットの制御装置を提供することにある。
【課題を解決するための手段】
【0013】
請求項1または3に記載の手段によれば、複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際の制御において、任意変数設定処理と、変数値決定処理とが実行される。一般的なティーチング作業では、ツールの先端位置および向きを決定するための各変数の値は、全てユーザにより指定される。なお、各変数の値とは、ツール先端の各座標値(X軸座標、Y軸座標およびZ軸座標の値)およびツール(手先)の所定軸まわりの回転角度(例えば、4軸の水平多関節型ロボットの場合であれば第4軸(Z軸)まわりの回転角度)の値である。しかし、手先に取り付けられるツールの種類および作業内容によっては、そのツールの向き(=手先の向き)にかかわらず、その作業を達成することが可能な場合もある。例えば、4軸の水平多関節型ロボットにツールとしてエアチャックが用いられる場合、ツールの向き(第4軸まわりの向き)にかかわらずワークを把持することができる。この場合、目標位置におけるツールの向きは、どのような向きでも構わないと言える。従来では、このような場合であっても、ツールの向きを決定するための変数(例えばZ軸まわりの回転角度)をユーザが指定していた。
【0014】
これに対し、本手段によれば、ツールの向きを決定するための変数のうち、ユーザにより指定される1つまたは2つの変数が任意の値に設定可能な任意変数として設定される(任意変数設定処理)。そして、手先が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標が設定され、その第1評価指標が最適化されて任意変数の値が決定される(変数値決定処理)。例えば、4軸の水平多関節型ロボットの手先にエアチャックが取り付けられる場合において、ツール(手先)のZ軸まわりの回転角度が任意変数として指定されれば、目標位置におけるツールのZ軸まわりの回転角度は、ツールの移動時間が極力短くなるような値に自動的に決定される。
【0015】
さて、目標位置における任意変数(例えばツールのZ軸まわりの回転角度)が取り得る全ての値について第1評価指標を演算し、任意変数の関数(以下では評価関数と言う)として表す(グラフ化する)と、次のようなことが分かる。すなわち、その評価関数において、第1評価指標の最小値(最適値)の部分が谷の底になるとともに、第1評価指標の最小値ではない別の値(最小値に準ずる値であり、以下では局所値と言う)の部分も谷の底になる。このようになる理由は次のとおりである。
【0016】
ロボットは、ツール先端の位置(各座標値)が同じであっても、その姿勢が全く異なることがある。そのため、ロボットが取り得る様々な姿勢を、複数の形態に分けて区別するということが通常行われている。例えば4軸の水平多関節型ロボットの場合、第2軸の回転角度の極性が互いに異なる2種類の形態(腕形態)が存在する。つまり、4軸の水平多関節型ロボットの姿勢は、2種類の形態に分類される。また、6軸の垂直多関節型ロボットの場合、第1軸の回転角度が互いに180度異なる2種類の形態(腕形態)、第3軸の回転角度の極性が互いに異なる2種類の形態(肘形態)および第4軸の回転角度が互いに180度異なる2種類の形態(手首形態)が存在する。つまり、それら腕形態、肘形態および手首形態の組み合わせにより合計で8種類の形態に分類される。
【0017】
このような形態が同じであれば、ロボットの姿勢はあまり変化しない。しかし、形態が異なれば、ロボットの姿勢は大きく異なる。ロボットの姿勢が大きく異なるということは、移動時間に基づく第1評価指標の変化の傾向についても大きく異なることになる。そのため、ロボットの形態ごとに評価関数の谷が存在することになる。言い換えると、上記評価関数には、ロボットの形態が切り替わる境界である特異点を中心として、その両側に谷の部分が存在することになる。このようなことから、例えば、4軸の水平多関節型ロボットの場合、評価関数は少なくとも2つの谷を有し、6軸の垂直多関節型ロボットの場合、評価関数は少なくとも8つの谷を有することになる。
【0018】
変数値決定処理において、最小値ではなく局所値に対応した値が目標位置における任意変数の値として設定されてしまうと、ロボットの動作時間を極力短くするという効果が若干低減する。上述したとおり、ロボットには形態という概念があり、その形態が切り替わる境界の特異点を中心として両側に評価関数の谷の部分が存在する。つまり、形態の境界である特異点が谷の境界である。そこで、本手段では、このようなロボットに特有の点を考慮し、以下のように、目標位置の任意変数の値として第1評価指標の局所値に対応した値が設定されることを避けつつ(局所値回避)、第1評価指標の最小値に対応した値が設定されるようにしている(最適化)。
【0019】
すなわち、変数値決定処理では、ロボットが所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて取得される。なお、それら各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、任意の値でよいため、ユーザが準備することは容易である。そして、全ての形態のうち、いずれか1つの形態が、目標位置における任意変数の候補値を求める演算の演算対象として設定される。
【0020】
演算対象として設定された形態について取得された各軸の回転角度の値から、任意変数(例えばツールのZ軸まわりの回転角度)の値が演算される。目標位置における任意変数の値として、上記演算された値を設定した場合における第1評価指標が演算される。そして、その演算された第1評価指標の値を初期値とし、第1評価指標の微分値または微小変分がゼロになるときの任意変数(例えばツールのZ軸まわりの回転角度)の値が求められ、その求めた値が目標位置における任意変数の候補値とされる。すなわち、演算対象の形態に対応した第1評価指標の値を起点として任意変数の変化に応じた第1評価指標の変化が確認され、その結果、第1評価指標が変化しなくなるときの値が目標位置における任意変数の候補値として設定される。このような演算を実現するためには、例えば、最急降下法、最適勾配法、ニュートン法などを用いるとよい。この候補値は、第1評価指標の最小値に対応するもの、あるいは、第1評価指標の局所値に対応するもののうち、いずれかとなる。
【0021】
このようにして候補値が求められた後、全ての形態のうち、演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つが次の演算対象に設定された上で、上記した候補値を求めるための各演算が再度実行される。一方、全ての形態のうち、演算対象に設定されていない形態が存在しない場合、求められた各候補値のうち、第1評価指標を最も小さくする値が、目標位置における任意変数の値として決定される。
【0022】
このようにして決定された目標位置における任意変数(例えばツールのZ軸まわりの回転角度)の値は、移動時間に基づく第1評価指標が最小となる値、あるいは、それに極めて近い値である。すなわち、決定された目標位置における任意変数の値は、現在位置から目標位置に移動する際におけるツール(ロボット)の移動時間が極力短くなるような値となっている。ロボット側において上記した制御が自動的に実行されるため、ユーザがティーチング時に行う作業としては、例えば4軸の水平多関節型ロボットの場合であれば、目標位置におけるツール先端の各座標値を指定するとともに、ツール(手先)のZ軸まわりの回転角度を任意変数として指定するだけでよい。そして、値が指定された目標位置におけるツール先端のX、Y、Z軸座標の値に加え、上記したように自動的に決定された目標位置におけるツールのZ軸まわりの回転角度(任意変数)の値に基づいて、現在位置から目標位置に向けてツールが移動されることにより、ティーチング時におけるユーザ(作業者)の作業負担を軽減しつつ、ロボットの移動時間の短縮を図ることができる。
【0023】
なお、ここでは、4軸の水平多関節型ロボットの場合を例に説明したが、例えば6軸の垂直多関節型ロボットの場合であれば次のようになる。すなわち、ツールの向きを決定するための変数(X、Y、Z軸まわりの各回転角度)のうち、いずれか1つ、あるいは、いずれか2つが任意変数として指定されれば、目標位置におけるツール(手先)の特定の軸まわりの回転角度が、ロボットの移動時間が極力短くなるような値に自動的に決定される。その結果、上記した4軸の水平多関節型ロボットの場合と同様の効果が得られる。すなわち、本手段によれば、複数の軸を有するロボット全般について、上記した作用および効果が得られる。
【0024】
また、本手段によれば、ロボットの形態ごとに第1評価指標の最小値または局所値(評価関数の谷)が存在するという点を考慮し、ロボットの形態ごとに任意変数の値が最適化され、最適化された各任意変数の値のうち、第1評価指標を最も小さくすることができる値が、目標位置における任意変数の値に設定される。これにより、目標位置における任意変数の値として第1評価指標の局所値に対応した値が設定されることを確実に防止することができる。つまり、ロボットの動作時間を極力短くするという効果が最大限に得られるように、目標位置における任意変数の値が設定されるようになっている。
【0025】
また、変数値決定処理では、ツールの先端が現在位置から目標位置まで移動する際に要する移動時間に基づく第1評価指標を用いるようになっている。従って、例えば加速度まで考慮した詳細な(正確な)移動時間を第1評価指標とすることも可能であるし、例えば速度のみを考慮した移動時間の概算値を第1評価指標とすることも可能である。このうち、前者のように第1評価指標を設定すれば、任意変数を決定する際の精度が高まる。すなわち、ロボットの動作時間を一層確実に短縮できる任意変数の値を設定することが可能となる。一方、後者のように第1評価指標を設定すれば、その演算を比較的容易に行い得るようになるため、演算時間の短縮を図ることが可能となる。
【0026】
請求項2または4に記載の手段によれば、変数値決定処理では、ロボットが所定の形態をとる各軸の回転角度が与えられることにより、ロボットが上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が求められる。すなわち、ロボットが所定の形態をとる各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つが、目標位置にツール先端が到達する各軸の回転角度を求めるための演算の演算対象として設定される。なお、上記与えられる各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、また、ツール先端が目標位置に到達する値である必要もなく、任意の値でよい。
【0027】
そして、演算対象として設定された形態について与えられた各軸の回転角度の値からツールの先端位置を求め、そのツールの先端位置が計算対象位置として設定される。続いて、その計算対象位置におけるツールの先端位置および向きを決定するための変数のうち任意変数に指定された変数を除いた変数と、計算対象位置における各軸(各関節)の回転角度とに関するヤコビ行列Jkが求められる。また、下記(1)式に示す第2評価指標Qkが設定される。ただし、移動後のツールの先端位置の目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分が各軸の最大回転速度の逆数の二乗である対角行列をλとしている。なお、εkTはεkの転置行列であり、ΔkTはΔkの転置行列である。
Qk=εkT・εk+ΔkT・λ・Δk …(1)
【0028】
上記(1)式において、右辺第一項は位置誤差の二乗和である。また、右辺第二項は各軸の回転角度の変化量(移動量)の二乗和に対角行列λを乗じたものであり、移動時間の二乗和に対して各軸の最大回転速度に応じた重み付けが与えられたものである。すなわち、移動時間の概算値に相当する。このように設定された第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkが演算される。ただし、目標位置の座標値を要素とする行列をPdとし、計算対象位置の座標値を要素とする行列をPkとしている。なお、JkTはJkの転置行列である。
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
【0029】
計算対象位置における各軸の回転角度に対して上記演算された変化量Δkを加えた各軸の回転角度、つまり移動後の各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置が演算される。そして、演算された移動後のツールの先端位置の目標位置に対する位置誤差が求められ、その位置誤差が所定の許容誤差以下であるか否かが判断される。つまり、演算により求められた移動後のツールの先端位置が十分に目標位置に近づいているか否かが判断される。その結果、位置誤差が許容誤差を超える場合、演算した移動後のツールの先端位置を次の計算対象位置とした上で、次の移動後のツールの先端位置を求めるための上記各演算が再度実行される。
【0030】
一方、上記判断の結果、位置誤差が許容誤差以下である場合、計算対象位置における各軸の回転角度に対して上記演算された変化量Δkを加えた各軸の回転角度(移動後の各軸の回転角度)の値を、ロボットが演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得する。すなわち、上記演算により求められた移動後のツールの先端位置が十分に目標位置に近づいていると判断された場合、そのときの各軸の回転角度の値が、ロボットが演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得される。このように各軸の回転角度の値が取得された後、演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、各軸の回転角度を取得するための上記各演算が再度実行される。その結果、ロボットが所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボットがとり得る全ての形態のそれぞれについて取得されることになる。
【0031】
上記した各演算では、ヤコビ行列を用いている。ヤコビ行列は、各軸(各関節)における微小変位と、それに伴う手先の位置および向き(姿勢)の微小変位との比率を表すものである。このようなヤコビ行列を用いるとともに、移動時間の概算値が含まれた第2評価指標Qkを最小化する演算が繰り返される結果、その演算により求められる移動後のツールの先端位置が徐々に目標位置に近づいていくことになる。そのため、最終的に取得される各軸の回転角度に基づく目標位置におけるロボットの姿勢は、最初に与えられた各軸の回転角度に基づくロボットの姿勢から大きく変化することがない。すなわち、目標位置におけるロボットの形態は、当初の形態と同じになる。このように、本手段によれば、ロボットが所定の形態をとる各軸の回転角度が与えられるだけで、ロボットが上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を求めることが可能となる。上記与えられる各軸の回転角度の値は、ロボットが所定の形態をとる値であれば任意の値でよい。そのため、ツール先端の目標位置にかかわらず、そのロボットがとり得る形態ごとに1種類ずつの値が予め準備されていればよいことになり、このような面からもユーザ(作業者)の作業負担の軽減を図ることができる。
【図面の簡単な説明】
【0032】
【図1】本発明の第1の実施形態を示すもので、ロボットシステムの概略構成図
【図2】評価指標を任意変数の関数として表す図
【図3】4軸の水平多関節型ロボットの各形態を示す図
【図4】変数値決定処理の内容を示すフローチャート
【図5】現在位置および目標位置におけるロボットの態様を模式的に表す図
【図6】目標領域内のいずれかの位置に目標位置が設定される場合の図5相当図
【図7】本発明の第2の実施形態を示すもので、図4のステップS1に相当するフローチャート
【図8】本発明の第3の実施形態を示す図1相当図
【図9】6軸の垂直多関節型ロボットの腕形態を示す図
【図10】6軸の垂直多関節型ロボットの肘形態を示す図
【図11】6軸の垂直多関節型ロボットの手首形態を示す図
【図12】本発明の第4の実施形態を示すもので、図4のステップS1に相当するフローチャート
【図13】4軸の水平多関節型ロボットを模式的に示す図
【図14】図13相当図
【図15】従来技術を示す図5相当図
【発明を実施するための形態】
【0033】
(第1の実施形態)
以下、本発明の第1の実施形態について図1〜図6を参照しながら説明する。
図1は、一般的な産業用ロボットのシステム構成を示している。図1に示すロボットシステム1は、ロボット2と、ロボット2を制御するコントローラ3と、コントローラ3に接続されたティーチングペンダント4とから構成されている。
【0034】
ロボット2は、例えば4軸の水平多関節型ロボットとして構成されている。ロボット2は、設置面に固定されるベース5と、ベース5上にZ軸(垂直軸)方向の軸心を持つ第1軸J1を中心に回転可能に連結された第1のアーム6と、第1のアーム6の先端部上にZ軸方向の軸心を持つ第2軸J2を中心に回転可能に連結された第2のアーム7と、第2のアーム7の先端部に上下動可能で且つ回転可能に設けられたシャフト8とから構成されている。シャフト8を上下動させる際の軸が第3軸J3であり、回転させる際の軸が第4軸J4である。シャフト8の先端部(下端部)には、フランジ9が位置決めされて着脱可能に取り付けられる。
【0035】
ベース5、第1のアーム6、第2のアーム7、シャフト8およびフランジ9は、ロボット2のアームとして機能する。アーム先端であるフランジ9(手先に相当)には、図示はしないが、例えばエアチャックなどのツールが取り付けられる。ロボット2に設けられる複数の軸(J1〜J4)はそれぞれに対応して設けられるモータ(図示せず)により駆動される。各モータの近傍には、それぞれの回転軸の回転角度(回転位置)を検出するための位置検出器(図示せず)が設けられている。
【0036】
一般に、産業用のロボットは、予めティーチングなどを実施することにより作成される所定の動作プログラムに従って動作するようになっている。コントローラ3(ロボットの制御装置に相当)は、その動作プログラムに基づいてモータの駆動をフィードバック制御し、ロボット2のアームの動作制御を行う。
【0037】
ティーチングペンダント4は、例えば使用者が携帯あるいは手に所持して操作可能な程度の大きさで、例えば薄型の略矩形箱状に形成されている。ティーチングペンダント4には、各種のキースイッチが設けられており、使用者は、それらキースイッチにより種々の入力操作を行う。ティーチングペンダント4は、ケーブルを経由してコントローラ3に接続され、通信インターフェイスを経由してコントローラ3との間で高速のデータ転送を実行するようになっており、キースイッチの操作により入力された操作信号等の情報はティーチングペンダント4からコントローラ3へ送信される。
【0038】
一般に、ロボット2の手先であるフランジ9に取り付けられるツールの先端を、現在位置から目標位置に向けて移動させる動作のティーチング作業が行われる際、目標位置におけるロボット2の姿勢をどのようなものにするかはユーザにより決定される。すなわち、このようなティーチング作業の際、ツール先端の目標位置を決定するための変数(ツール先端のX軸座標値、Y軸座標値およびZ軸座標値)と、目標位置におけるツール(手先)の向きを決定するための変数(ツールのZ軸まわりの回転角度)とは、全てユーザにより指定される。ただし、フランジ9に取り付けられるツールの種類(形状)およびそのツールを用いた作業の内容によっては、ツールの向きを不問とすることが可能である。例えば、ツールとしてエアチャックが用いられる場合、ツールのZ軸(第4軸J4)まわりの向きがどのような向きであっても、ワークを把持することができる。
【0039】
本実施形態のロボットシステム1では、上記したツールの向きを不問とすることが可能なケースにおいて、ユーザは、ツール先端の目標位置を示すX、Y、Z軸座標の値を指定するだけでよく、目標位置におけるツールのZ軸まわりの回転角度Rzの値を指定しなくてよい。その代わりに、ユーザは、ツールのZ軸まわりの回転角度Rzを任意変数として指定する。これを受けて、コントローラ3は、回転角度Rzを、コントローラ3側で任意の値に設定可能な任意変数として設定する(任意変数設定処理)。また、詳細は後述するが、コントローラ3は、ツールの先端が現在位置から目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化することで任意変数の値を決定する(変数値決定処理)。このように、コントローラ3は、任意変数設定処理手段および変数値決定処理手段として機能する。本実施形態では、コントローラ3により上記各処理が実行されることにより、目標位置におけるツールの向きが、ロボット2の移動時間が極力短くなるようなものに決定される。
【0040】
図2は、目標位置におけるツールのZ軸まわりの回転角度Rz(任意変数)が取り得る全ての値について評価指標を演算し、任意変数の関数(以下では評価関数と言う)として表した(グラフ化した)ものである。この図2に示すように、評価関数は、2つの谷を有しており、評価指標の最小値(最適値)の部分が一方の谷の底に位置し、評価指標の最小値ではない他の値(最小値に準ずる値であり、以下では局所値と言う)の部分が他方の谷の底に位置している。評価関数にこのような2つの谷が存在する理由は、次のとおりである。
【0041】
図3は、4軸の水平多関節型ロボットの各形態を示している。なお、図3では、各軸および各リンクをそれぞれ丸印および直線で示すとともに、ツールの図示を省略している。ロボットは、ツール先端の位置(X、Y、Z軸座標値)が同じであっても、その姿勢が全く異なることがある。そのため、通常、ロボットが取り得る様々な姿勢を、複数の形態に分けて区別するということが行われている。例えば、本実施形態のロボット2(4軸の水平多関節型ロボット)の場合、2つの形態に分類される。すなわち、第2軸J2の回転角度がプラス(+)になる腕形態(図3(a)参照)と、第2軸J2の回転角度がマイナス(−)になる腕形態(図3(b)参照)とに分類される。このような形態が同じであれば、ロボット2の姿勢はあまり変化しない。しかし、形態が異なれば、ロボット2の姿勢は大きく異なる。ロボット2の姿勢が大きく異なるということは、移動時間に基づく評価指標の変化の傾向についても大きく異なることになる。そのため、ロボット2の形態ごとに前述した評価関数の谷が存在することになる。言い換えると、上記評価関数には、ロボット2の形態が切り替わる境界である特異点を中心として、その両側に谷の部分が存在することになる。このようなことから、本実施形態のロボット2の場合、評価関数は少なくとも2つの谷を有することになる。
【0042】
変数値決定処理において、最小値ではなく局所値が目標位置における任意変数の値として設定されてしまうと、ロボット2の動作時間を極力短くするという効果が若干低減する。上述したとおり、ロボットには形態という概念があり、その形態が切り替わる境界(特異点)を中心として両側に評価関数の谷の部分が存在する。つまり、形態の境界である特異点が谷の境界である。そこで、本実施形態では、このようなロボットに特有の点を考慮し、以下のように、目標位置の任意変数の値として第1評価指標の局所値に対応した値が設定されることを避けつつ(局所値回避)、第1評価指標の最小値(最適値)に対応した値が設定されるようにしている(最適化)。
【0043】
図4は、変数値決定処理の内容を示すフローチャートである。図4に示すように、変数値決定処理が開始されると(スタート)、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態(図3に示した2つの腕形態)のそれぞれについて取得される(ステップS1)。なお、それら各軸の回転角度の値は、ユーザにより予め準備されているものとする。ただし、準備する各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、上記各条件を満たすものであれば任意の値でよい。そのため、上記値をユーザが準備することは比較的容易である。
【0044】
ステップS2では、全ての形態のうち、いずれか1つの形態が、目標位置におけるツールのZ軸まわりの回転角度Rz(任意変数)の候補値を求める演算の演算対象として設定される。ステップS3では、設定された演算対象について取得された各軸の回転角度の値から、ツールのZ軸まわりの回転角度Rzの値が演算される。そして、ステップS4では、目標位置におけるツールのZ軸まわりの回転角度Rzの値として、ステップS3で演算された値を設定した場合における第1評価指標が演算される。ステップS5では、ステップS4で演算された第1評価指標の値を起点として回転角度Rzの変化に応じた評価指標の変化が確認される。その結果、第1評価指標が変化しなくなるときの回転角度Rz(任意変数)の値が求められる。このようなステップS5の処理を実現するためには、最急降下法、最適勾配法、ニュートン法などを用い、下記(3)式の条件を満たすツールのZ軸まわりの回転角度Rzを求めればよい。ただし、f(Pc、Pd)は、ツール先端を現在位置Pcから目標位置Pdに向けて移動させる際の評価指標(評価関数)を示している。
【0045】
【数1】
【0046】
ステップS6では、ステップS5で求められた値が目標位置におけるツールのZ軸まわりの回転角度Rzの候補値として設定される。この候補値は、移動時間の概算値が含まれた第1評価指標を最小化することにより決定された値である。そのため、ロボット2が演算対象の形態(所定の形態)となっている状態で、ツール先端を目標位置まで移動する際の移動時間が極力短くなる値になっている。すなわち、第1評価指標の最小値に対応するもの、あるいは、第1評価指標の局所値に対応するもののうち、いずれかとなっている。
【0047】
ステップS7では、全ての形態のうち未だ演算対象に設定されていない形態が存在するか否かが判断される。その判断の結果、演算対象に設定されていない形態が存在する場合(YES)、ステップS8に進む。ステップS8では、未だ演算対象に設定されていない形態のうちいずれか1つが次の演算対象に設定される。このように次の演算対象が設定された上で、ステップS3に戻り、次の候補値を求めるための各演算(ステップS3〜S6)が再度実行される。一方、ステップS7による判断の結果、演算対象に設定されていない形態が存在しない場合(NO)、ステップS9に進む。ステップS9では、求められた各候補値のうち、第1評価指標を最も小さくする値が、目標位置におけるZ軸まわりの回転角度Rz(任意変数)の値として決定され、処理が終了する(エンド)。
【0048】
このようにして決定された目標位置におけるツールのZ軸まわりの回転角度Rzの値は、移動時間の概算値が含まれた第1評価指標が最小となる値、あるいは、それに極めて近い値である。すなわち、決定された目標位置における任意変数の値は、現在位置から目標位置に移動する際におけるツール(ロボット2)の移動時間が極力短くなるような値となっている。
【0049】
コントローラ3により上記した制御が自動的に実行されるため、ユーザがティーチング時に行う作業としては、前述したように目標位置におけるツール先端の各座標値を指定するとともに、ツールのZ軸まわりの回転角度Rzを任意変数として指定するだけでよい。そして、コントローラ3は、値が指定された目標位置におけるツール先端のX、Y、Z軸座標の値に加え、上記した各処理により自動的に決定された目標位置におけるツールのZ軸まわりの回転角度Rzの値(ツールの向き)に基づいて、ツール先端を現在位置から目標位置に向けて移動させることができる。これにより、ティーチング時におけるユーザ(作業者)の作業負担が軽減されるとともに、ロボット2の移動時間が短縮されることになる。
【0050】
また、本実施形態では、ロボットの形態ごとに第1評価指標の最小値または局所値(評価関数の谷)が存在するという点を考慮し、ロボット2の形態ごとに任意変数の値を最適化し、それら最適化された任意変数の値のうち、第1評価指標を最も小さくすることができる値を、目標位置における任意変数の値に設定する。これにより、目標位置における任意変数の値として第1評価指標の局所値に対応した値が設定されることを確実に防止することができる。つまり、ロボット2の動作時間を極力短くするという効果が最大限に得られるように、目標位置における任意変数の値が設定されるようになっている。
【0051】
変数値決定処理においては、ツール先端が現在位置から目標位置まで移動する際に要する移動時間に基づく第1評価指標を用いるようにしている。従って、例えば各軸の加速度まで考慮した詳細な(正確な)移動時間を第1評価指標とすることも可能であるし、例えば各軸の速度のみを考慮した移動時間の概算値(近似値)を第1評価指標とすることも可能である。つまり、第1評価指標を設定する上での自由度が高い。このうち、前者のように第1評価指標を設定すれば、任意変数を決定する際の精度が高まる。すなわち、ロボット2の動作時間を一層確実に短縮できる任意変数の値を設定することが可能となる。一方、後者のように第1評価指標を設定すれば、その評価指標を求める演算を比較的容易に行い得るようになるため、演算時間の短縮を図ることが可能となる。
【0052】
次に、本実施形態のロボットシステム1により得られる具体的な効果について、図5および図6も参照して説明する。
図5は、ツール先端を現在位置Pcから目標位置Pdに向けて移動させる際におけるロボットの態様を模式的に示している。図5に示すロボットは、4軸の水平多関節型ロボットであり、その手先にツールとしてエアチャックが取り付けられている。なお、図5では、各軸および各リンクをそれぞれ丸印および直線で示すとともに、ツール先端を矢印で示している。また、現在位置におけるロボットの状態を点線で示すとともに、目標位置におけるロボットの状態を実線で示している。ここでは、現在位置Pcから目標位置Pdまでツール先端を移動させ、ツールであるエアチャックによりワークを把持する作業が行われるものとする。
【0053】
上記ケースにおけるティーチング作業は、従来の手法によれば次のように行われる。すなわち、ティーチングを担当する作業者は、まず、図5の(a)、(b)、(c)のそれぞれに示す状態(姿勢)について検討する。つまり、作業者は、ツールの向きを大まかに変えてみて、どの向きが良さそうであるかを推測する。その結果、(c)の状態が良さそうであると判断した場合、(c)の状態をベースにし、その(c)状態からツールの向きを少しずつ変化させたもの(図5の(d)、(e)、(f)のそれぞれに示す状態)について検討する。その結果、図5(f)の状態が最適である(移動時間が短くなる)という判断に至る。なお、ここでは、説明を簡略化するため、作業者が検討する状態の数を少なくするとともに、少ない繰り返し作業で最適な状態が見つかるケースとしている。実際には、さらに多くの状態について検討したり、繰り返し回数が増えたりすることもある。
【0054】
これに対し、本実施形態のロボットシステム1によれば、目標位置Pdにおけるツールの向きは、コントローラ3により、ロボット2の移動時間が極力短くなるような向きに自動的に決定される。従って、従来の手法のような繰り返しの過程を経ることなく、図5の(f)の状態(ツールの向き)が最適である(移動時間を極力短くできる)という結果が容易に得られる。
【0055】
このように、従来の手法によれば、ティーチングを担当する作業者の経験と推測により、少しずつ目標位置におけるロボットの状態(姿勢)を変化させる。そして、その作業を何回(例えば5回)か繰り返した結果、例えば、現在位置および目標位置におけるツールの向きが互いに同じロボットの姿勢(図5の(a))に比べ、ロボットの動作時間が短くなる(例えば25%程度の改善)ツールの向きを得ることが可能となっていた。これに対し、本実施形態のロボットシステム1によれば、ティーチングを担当する作業者の経験などに関係なく、従来の手法による効果と同程度の効果を得ることができる。さらに、その際、作業者は目標位置におけるロボットの姿勢について具体的に検討する必要がないため、その作業負担が大きく軽減されることになる。
【0056】
図6は、ツール先端を現在位置Pcから目標領域Ad内の任意の目標位置に向けて移動させる際における図5相当図である。この場合、図6の(a)に示す目標領域Ad内におけるどの位置に移動すればよいかについては実作業時にカメラなどの外部機器から与えられ、ティーチングの時点において作業者は知ることができないものとする。このようなケースでは、目標領域Ad内のどの位置に目標位置が設定されるかによってツールの最適な向きが変化する。そのため、従来の手法では、図6の(b)に示すように、目標領域Adを複数の小領域に分割し、それら小領域ごとに最適なツールの向きを教示するなど、非常に手間がかかっていた。また、どのように目標領域Adを分割するかによって、最適なツールの向きが得られるかどうかが変化するため、ティーチングを担当する作業者の個人能力に大きく依存する部分があった。
【0057】
これに対し、本実施形態のロボットシステム1によれば、実作業時に初めてカメラなどの外部機器から目標位置が与えられるケースであっても、コントローラ3は、与えられた目標位置に基づいて、その目標位置における最適なツールの向きを自動的に決定する。そのため、従来の手法のように目標領域Adを小領域に分割し、それら小領域ごとにティーチングをするといった手間のかかる作業を省くことが可能となる。
【0058】
(第2の実施形態)
以下、第1の実施形態に対し、変数値決定処理の内容を変更した第2の実施形態について図7を参照しながら説明する。
本実施形態では、ロボット2が所定の形態をとる各軸の回転角度が与えられることにより、ロボット2が上記形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が求められる。すなわち、変数値決定処理において、図4のステップS1に代えて図7のフローチャートに示す内容の処理が実行される。
【0059】
図7の処理が開始されると(スタート)、ロボット2が所定の形態をとる各軸の回転角度の値が、ロボット2がとり得る全ての形態(2種類の腕形態)のそれぞれについて取得される(ステップT1)。なお、それら各軸の回転角度の値は、ユーザにより予め準備されているものとする。ただし、準備する各軸の回転角度の値は、第1評価指標を最小化する値である必要はなく、また、ツール先端が目標位置に到達する値である必要もなく、上記各条件を満たすものであれば任意の値でよい。そのため、上記値をユーザが準備することは非常に容易である。
【0060】
ステップT2では、全ての形態のうち、いずれか1つの形態が、目標位置にツール先端が到達する各軸の回転角度を取得するための演算の演算対象として設定される。ステップT3では、演算対象に設定された形態について与えられた各軸の回転角度の値からツールの先端位置が求められる。ステップT4では、ステップT3で求められたツールの先端位置が計算対象位置として設定される。
【0061】
ステップT5では、計算対象位置におけるツールの先端位置および向きを決定するための変数(X、Y、Z軸座標値および回転角度Rz)のうち、任意変数に指定された回転角度Rzを除いた変数と、計算対象位置における各軸(関節)の回転角度とに関するヤコビ行列Jkが求められる。そのヤコビ行列Jkは、下記(4)式のように表される。ただし、X、Y、Z軸座標値をそれぞれXk、Yk、Zkとし、第1軸J1〜第4軸J4のそれぞれの回転角度をθ1k〜θ4kとしている。
【0062】
【数2】
【0063】
ステップT6では、下記(5)式に示す第2評価指標Qkが設定される。ただし、移動後のツールの先端位置の目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸J1〜J4の各回転角度θ1〜θ4の変化量を要素とする行列をΔkとし、対角成分が各軸J1〜J4のそれぞれの最大回転速度の逆数の二乗である対角行列をλとし、位置誤差および変化量の重み付けのための定数をβとしている。また、εkTはεkの転置行列を示し、ΔkTはΔkの転置行列を示している。なお、εk、λは、それぞれ下記(6)式、(7)式により表される。ただし、目標位置のX、Y、Z軸座標値を要素とする行列をPdとし、計算対象位置のX、Y、Z軸座標値を要素とする行列をPkとし、第1軸J1〜第4軸J4のそれぞれについての最大回転速度をV1max〜V4maxとしている。
Qk=εkT・εk+β・ΔkT・λ・Δk …(5)
εk=Pd−Pk−Jk・Δk …(6)
【0064】
【数3】
【0065】
上記(5)式において、右辺第一項は位置誤差の二乗和である。また、右辺第二項は各軸J1〜J4の回転角度の変化量(移動量)の二乗和に対角行列λを乗じたものであり、移動時間の概算値(近似値)に相当する。定数βは、ロボット2の各関節の可動範囲と動作速度に比例する。従って、定数βは、ロボット2の機種ごとに適宜設定すればよい。なお、第2評価指標Qkにおける位置誤差および移動時間の概算値の重み付けが均等であれば、定数βを省くことができる。ステップT7では、このように設定された第2評価指標Qkが最小化されることにより、下記(8)式に示す変化量Δkが演算される。
Δk=(β・λ+JkT・Jk)−1・JkT(Pd−Pk) …(8)
【0066】
ステップT8では、下記(9)式に示すように、移動後の各軸の回転角度が求められる。ただし、移動後の各軸J1〜J4の回転角度を要素とする行列をθk+1としている。また、定数γは目標位置への収束速度を調整するための定数を示している。なお、本実施形態では、定数γの値を1としているが、目標位置への収束速度を早くする場合には定数γの値を大きくすればよいし、収束速度を遅くする場合には定数γの値を小さくすればよい。
θk+1=θk+γ・Δk …(9)
【0067】
ステップT9では、下記(10)式に示すように、移動後のツールの先端位置が求められる。すなわち、移動後の各軸の回転角度を要素とする行列θk+1について順変換を行うことにより、移動後のツールの先端位置のX、Y、Z軸座標値を要素とする行列Pk+1が求められる。ただし、ツールのオフセット長や各アームのリンク長などを考慮した上で各軸の回転角度からツール先端位置を求める関数をJ2Pとして表している。
Pk+1=J2P(θk+1) …(10)
【0068】
ステップT10では、演算により求められた移動後のツールの先端位置Pk+1の目標位置Pdに対する位置誤差が求められる。ステップT11では、ステップT10で求められた位置誤差が所定の許容誤差以下であるか否かが判断される。つまり、演算により求められた移動後のツールの先端位置Pk+1が十分に目標位置Pdに近づいているか否かが判断される。その結果、位置誤差が許容誤差を超える場合(NO)、ステップT12に進む。ステップT12では、移動後のツールの先端位置Pk+1が次の計算位置に設定される。このように次の計算位置が設定された上で、ステップT5に戻り、次の移動後のツールの先端位置を求めるための各演算(ステップT5〜T11)が再度実行される。なお、上記許容誤差は、例えば、ロボット2における位置制御の精度に基づいて適宜設定すればよい。
【0069】
一方、ステップT11による判断の結果、位置誤差が許容誤差以下である場合(YES)、ステップT13に進む。ステップT13では、上記(9)式に示した移動後の各軸J1〜J4の回転角度θk+1の値が、ロボット2が演算対象の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値として取得される。そして、ステップT14では、全ての形態のうち未だ演算対象に設定されていない形態が存在するか否かが判断される。その判断の結果、演算対象に設定されていない形態が存在する場合(YES)、ステップT15に進む。ステップT15では、未だ演算対象に設定されていない形態のうちいずれか1つが次の演算対象に設定される。このように次の演算対象が設定された上で、ステップT3に戻り、各軸の回転角度を取得するための各演算(ステップT3〜T13)が再度実行される。一方、ステップT14による判断の結果、演算対象に設定されていない形態が存在しない場合(NO)、処理が終了する(エンド)。このような処理が実行される結果、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態のそれぞれについて取得されることになる。
【0070】
上記した各演算では、ヤコビ行列を用いている。ヤコビ行列は、各軸(各関節)における微小変位と、それに伴う手先の位置および向き(姿勢)の微小変位との比率を表すものである。このようなヤコビ行列を用いるとともに、移動時間の概算値が含まれた第2評価指標を最小化する演算が繰り返される結果、その演算により求められる移動後のツールの先端位置が徐々に目標位置に近づいていくことになる。そのため、最終的に取得される各軸の回転角度に基づく目標位置におけるロボット2の姿勢は、最初に与えられた各軸の回転角度に基づくロボット2の姿勢から大きく変化することがない。すなわち、目標位置におけるロボット2の形態は、当初の形態と同じになる。
【0071】
このように、本実施形態によれば、ロボット2が所定の形態をとる各軸の回転角度が与えられるだけで、ロボット2が上記所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を求めることが可能になる。上記与えられる各軸の回転角度の値は、ロボット2が所定の形態をとる値であれば任意の値でよい。そのため、ツール先端の目標位置にかかわらず、そのロボット2がとり得る形態ごとに1種類ずつの値が予め準備されていればよいことになり、このような面からもユーザ(作業者)の作業負担の軽減を図ることができる。
【0072】
(第3の実施形態)
以下、上記各実施形態に対し、対象とするロボットの種類を変更した第3の実施形態について図8〜図11を参照しながら説明する。
図8は、第1の実施形態における図1相当図であり、第1の実施形態と同一部分には同一符号を付して説明を省略する。図8に示す本実施形態のロボットシステム21は、図1に示した第1の実施形態のロボットシステム1に対し、ロボット2に代えてロボット22を備えている点が異なる。
【0073】
ロボット22は、例えば6軸の垂直多関節型ロボットとして構成されている。すなわち、ベース25上には、Z軸方向の軸心を持つ第1軸J21を介してショルダ部26が水平方向に回転可能に連結されている。ショルダ部26には、Y軸方向の軸心を持つ第2軸J22を介して上方に延びる下アーム27の下端部が垂直方向に回転可能に連結されている。下アーム27の先端部には、Y軸方向の軸心を持つ第3軸J23を介して第1の上アーム28が垂直方向に回転可能に連結されている。第1の上アーム28の先端部には、X軸方向の軸心を持つ第4軸J24を介して第2の上アーム29が捻り回転可能に連結されている。第2の上アーム29の先端部には、Y軸方向の軸心を持つ第5軸J25を介して手首30が垂直方向に回転可能に連結されている。手首30には、X軸方向の軸心を持つ第6軸J26を介してフランジ31が捻り回転可能に連結されている。
【0074】
ベース25、ショルダ部26、下アーム27、第1の上アーム28、第2の上アーム29、手首30およびフランジ31は、ロボット22のアームとして機能する。アーム先端であるフランジ31(手先に相当)には、図示はしないが、例えばエアチャックなどのツールが取り付けられる。ロボット22に設けられる複数の軸(J21〜J26)は、第1の実施形態のロボット2と同様、それぞれに対応して設けられるモータ(図示せず)により駆動される。また、各モータの近傍には、それぞれの回転軸の回転位置を検出するための位置検出器(図示せず)が設けられている。
【0075】
図9〜図11は、第1の実施形態における図3相当図であり、それぞれ6軸の垂直多関節型ロボットの腕形態、肘形態および手首形態を示している。図9(a)は正面から目標位置にあるワークなどを取りに行くケースであり、図9(b)は背中越しにワークなどを取りに行くケースである。つまり、図9(a)および図9(b)では、点線で示した部分の面が、上下入れ替わる。このように、第1軸J21の回転角度が互いに180度異なる2種類の腕形態が存在する。図10(a)は第3軸J23が上方に存在するケースであり、図10(b)は第3軸J23が下方に存在するケースである。なお、ここで言う上下は、Z軸方向の位置を示している。このように、第3軸J23の回転角度の極性が互いに異なる2種類の肘形態が存在する。図11(a)および図11(b)は、点線で示した部分の面が、上下入れ替わる。このように、第4軸J24の回転角度が互いに180度異なる2種類の手首形態が存在する。
【0076】
本実施形態のロボット22(6軸の垂直多関節型ロボット)の場合、腕形態、肘形態および手首形態がそれぞれ2種類ずつ存在するため、それらの組み合わせにより合計で8つの形態に分類される。このようなことから、本実施形態のロボット22の場合、評価関数は少なくとも8つの谷を有することになる。このような本実施形態の構成においても、コントローラ3は、上記各実施形態と同様の任意変数設定処理および変数値決定処理を実行することが可能である。例えば、ツールの向きを決定するための変数(X、Y、Z軸まわりの回転角度Rx、Ry、Rz)のうち、いずれか1つ、あるいは、いずれか2つが任意変数として指定されれば、その指定された変数が任意変数として設定される(任意変数設定処理)。そして、コントローラ3により変数値決定処理が行われる。
【0077】
ただし、ツールの向きを決定するための変数のうち、いずれか2つが任意変数として指定された場合、図4のステップS5の処理において、(3)式に代えて下記(11)式〜(13)式のうちいずれかの条件を満たす任意変数の値を求めればよい。(11)式はX、Y軸まわりの回転角度Rx、Ryが任意変数として指定された場合の条件式を示し、(12)式はY、Z軸まわりの回転角度Ry、Rzが任意変数として指定された場合の条件式を示し、(13)式はX、Z軸まわりの回転角度Rx、Rzが任意変数として指定された場合の条件式を示す。
【0078】
【数4】
【0079】
また、本実施形態の構成では、図7のステップT5にて求められるヤコビ行列Jkについて、軸数の変更に基づいて変更すればよい。そのヤコビ行列Jkは、例えばツールのX軸まわりの回転角度RxおよびY軸まわりの回転角度Ryが任意変数として設定された場合、下記(14)式のように表される。ただし、第1軸J21〜第6軸J26のそれぞれの回転角度をθ1k〜θ6kとし、ツールのZ軸まわりの回転角度をRzkとしている。
【0080】
【数5】
【0081】
これにより、目標位置における任意変数の値(ツールの向き)が、ロボット22の移動時間が極力短くなるような値に自動的に決定される。その結果、本実施形態の構成においても、第1の実施形態および第2の実施形態と同様の作用および効果が得られる。
【0082】
(第4の実施形態)
以下、第1の実施形態に対し、変数値決定処理の内容を変更した第4の実施形態について図12〜図14を参照しながら説明する。
本実施形態では、ツール先端の目標位置(X、Y、Z軸座標値)が与えられることにより、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態(図3に示した2つの腕形態)のそれぞれについて求められる。すなわち、変数値決定処理において、図4のステップS1に代えて図12のフローチャートに示す内容の処理が実行される。図13および図14は、設定されるツール先端の目標位置に応じたロボット2の姿勢(各軸の回転角度)を模式的に示している。なお、図13および図14では、ロボット2のベース5およびフランジ9(手先)を丸印で示し、その他のアームなどの図示は省略している。
【0083】
図12の処理が開始されると(スタート)、ツール先端距離にツール長を加えた長さが、ロボット2のリンク長より長いか否かが判断される(ステップU1)。ツール先端距離とは、ロボット2のベース5からツール先端の目標位置までの距離である。また、ツール長とは、手先(フランジ9)に取り付けられたツールのオフセット長のことである(図13および図14参照)。すなわち、ツール長は、図13および図14において点線で描かれた円の半径に相当する。また、リンク長は、図13および図14において一点鎖線で描かれた円の半径に相当する。なお、本実施形態における長さ(距離)とは、X−Y平面上での長さ(距離)に相当する。
【0084】
ステップU1による判断の結果、ツール先端距離+ツール長のほうがリンク長よりも長い場合(YES)、ステップU2に進む。ロボット2のリンク長よりも遠くには、手先位置を動かすことはできない。従って、この場合には、ステップU2で移動不可能と判断され、処理が終了する(エンド)。
【0085】
一方、ステップU1による判断の結果、ツール先端距離+ツール長よりもリンク長のほうが長い場合(NO)、ステップU3に進む。この場合、ツール先端が目標位置に到達するように手先を動かすことが可能である。ただし、手先位置がベース5に近付き過ぎると、手先およびベース5が衝突するおそれがある。そこで、ベース5から手先(フランジ9)までの距離の目標値(目標距離)を下記(21)式のとおり定める。
ベースと衝突するおそれのある距離<目標距離<リンク長 …(21)
【0086】
上記(21)式に示す目標距離は、図13および図14において実線で描かれた円の半径に相当する。ステップU3では、下記(22)式の条件を満たしているか否かが判断される。すなわち、図13(a)の状態のように、点線および実線の円が互いに交差し、且つ、実線の円の外側から一点鎖線の円の内側までの間にツール先端の目標位置があるという条件を満たしているか否かが判断される。
ツール先端距離−ツール長≦目標距離≦ツール先端距離 …(22)
【0087】
上記(22)式の条件を満たしていない場合(ステップU3で「NO」)、ステップU4に進む。ステップU4では、下記(23)式の条件を満たしているか否かが判断される。すなわち、図13(b)の状態のように、点線および実線の円が互いに交差し、且つ、実線の円の内側にツール先端の目標位置があるという条件を満たしているか否かが判断される。
ツール先端距離+ツール長≧目標距離≧ツール先端距離 …(23)
【0088】
上記(22)式の条件または上記(23)式の条件を満たしている場合(ステップU3またはU4で「YES」)、ステップU5に進む。ステップU5では、ベース5から手先(フランジ9)までの距離(手先距離)が目標距離に一致するとともに、手先からツール先端までの距離がツール長に一致するという条件を満たす手先の位置が導出される。すなわち、図13において、点線および実線の円が交差する2つの点(図13で、白抜きの丸印および黒塗りの丸印で示す点)に位置するフランジ9の位置が候補値として導出される。ステップU6では、ステップU5で導出された2つの手先位置(候補値)のうち、正面を指す方向ベクトル(1,0)との内積が最大になるものが選択される。つまり、候補値のうち、よりロボット2の正面に近い側の値(図13で白抜きの丸印で示す点)が選択される。
【0089】
一方、上記(22)式の条件および上記(23)式の条件をいずれも満たしていない場合(ステップU3およびU4の双方で「NO」)、ステップU7に進む。すなわち、図14(a)、(b)の状態のように、点線および実線の円が互いに交差していない場合、ステップU7に進む。この場合、ベース5から手先(フランジ9)までの距離が目標距離に一致するように、手先の位置を設定することが不可能である。ステップU7では、ツール先端距離が目標距離以上であるか否かが判断される。すなわち、ツール先端の目標位置が実線の円の外側に位置する状態(図14(a)の状態)か、または、ツール先端の目標位置が実線の円の内側に位置する状態(図14(b)の状態)かが判断される。その結果、ツール先端距離が目標距離以上であると判断された場合(YES)、つまり図14(a)のような状態である場合、ステップU8に進む。
【0090】
ステップU8では、下記(24)式に基づいて手先の位置が導出される。すなわち、点線の円上であり、且つ、実線の円との距離が最も短くなる位置(図14(a)におけるフランジ9の位置)が手先の位置として導出される。ただし、ツール先端位置は、ツール先端のX、Y軸座標値である。つまり、下記(24)式では、距離(ツール先端距離およびツール長)から求まる比率を、ツール先端位置(X、Y軸座標値)にかけることで、手先位置(X、Y軸座標値)を算出している。
手先位置=((ツール先端距離−ツール長)÷ツール先端距離)×ツール先端位置
…(24)
【0091】
一方、ステップU7による判断の結果、ツール先端距離が目標距離未満であると判断された場合(NO)、つまり図14(b)のような状態であると判断された場合、ステップU9に進む。ステップU9では、下記(25)式に基づいて手先の位置が導出される。すなわち、点線の円上であり、且つ、実線の円との距離が最も短くなる位置(図14(b)におけるフランジ9の位置)が手先の位置として導出される。下記(25)式についても、上記(24)式と同様の考えに基づいて手先位置(X、Y軸座標値)を算出している。
手先位置=((ツール先端距離+ツール長)÷ツール先端距離)×ツール先端位置
…(25)
【0092】
ステップU10では、ステップU6で選択された手先位置またはステップU8、U9で導出された手先位置を実現するための各軸の回転角度が、全ての形態(2つの腕形態)のそれぞれについて求められ、処理が終了する(エンド)。このような処理が実行される結果、ロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値が、ロボット2がとり得る全ての形態のそれぞれについて取得される。
【0093】
このように、本実施形態によれば、ツール先端の目標位置(各軸座標値)が与えられるだけで、4軸の水平多関節型ロボットであるロボット2が所定の形態をとり且つ目標位置にツール先端が到達する各軸の回転角度の値を、ロボット2がとり得る全ての形態(2つの腕形態)のそれぞれについて求めることが可能になる。そのため、ユーザ(作業者)の作業負担が一層軽減されるという効果が得られる。
【0094】
(その他の実施形態)
なお、本発明は上記し且つ図面に記載した各実施形態に限定されるものではなく、次のような変形または拡張が可能である。
上記各実施形態では、本発明を4軸の水平多関節型のロボット2、または6軸の垂直多関節型のロボット22に適用した例を説明したが、本発明は、複数の軸を有するロボット全般に適用可能である。
【符号の説明】
【0095】
図面中、2、22はロボット、3はコントローラ(ロボットの制御装置、任意変数設定処理手段、変数値決定処理手段)、9、31はフランジ(手先)、J1〜J4、J21〜J26は軸を示す。
【特許請求の範囲】
【請求項1】
複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際におけるロボットの制御方法であって、
移動後のツールの向きを決定するための各変数のうち、ユーザにより指定される1つまたは2つの変数を任意の値に設定可能な任意変数として設定する任意変数設定処理と、
ツールの先端が前記現在位置から前記目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化して前記目標位置における任意変数の値を決定する変数値決定処理と、
を含み、
前記変数値決定処理は、
前記ロボットが所定の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値を、前記ロボットがとり得る全ての形態のそれぞれについて取得する第1ステップと、
前記全ての形態のうちいずれか1つを、前記目標位置における任意変数の候補値を求める演算の演算対象として設定する第2ステップと、
前記演算対象について取得された前記各軸の回転角度の値から前記任意変数の値を演算する第3ステップと、
前記目標位置における任意変数の値として、前記演算された値を設定した場合における前記第1評価指標を演算する第4ステップと、
前記演算された第1評価指標の値を初期値として前記第1評価指標の微分値または微小変分がゼロになるときの前記任意変数の値を求め、その求めた値を前記目標位置における任意変数の候補値とする第5ステップと、
を含み、
前記第5ステップの実行後、前記演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記第3〜第5ステップを再度実行し、
前記第5ステップの実行後、前記演算対象に設定されていない形態が存在しない場合、前記候補値のうち、前記第1評価指標を最も小さくする値を、前記目標位置における任意変数の値として決定することを特徴とするロボットの制御方法。
【請求項2】
前記変数値決定処理の第1ステップは、
前記ロボットが所定の形態をとる各軸の回転角度の値が、前記ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つを、前記目標位置にツールの先端が到達する各軸の回転角度を取得するための演算の演算対象として設定する第6ステップと、
前記演算対象について与えられた前記各軸の回転角度の値から前記ツールの先端位置を求める第7ステップと、
前記求められたツールの先端位置を計算対象位置として設定する第8ステップと、
前記計算対象位置におけるツールの先端位置および向きを決定するための変数のうち前記任意変数を除いた変数と、前記計算対象位置における各軸の回転角度とに関するヤコビ行列Jkを求める第9ステップと、
移動後のツールの先端位置の前記目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分を各軸の最大回転速度の逆数の二乗とした対角行列をλとし、前記目標位置の座標値を要素とする行列をPdとし、前記計算対象位置の座標値を要素とする行列をPkとして、下記(1)式に示す第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkを演算する第10ステップと、
Qk=εkT・εk+ΔkT・λ・Δk …(1)
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置を演算する第11ステップと、
前記演算した移動後のツールの先端位置の前記目標位置に対する位置誤差を求め、その位置誤差が所定の許容誤差以下であるか否か判断する第12ステップと、
を含み、
前記第12ステップによる判断の結果、前記位置誤差が前記許容誤差を超える場合、前記演算した移動後のツールの先端位置を次の計算対象位置として設定した上で、前記第9〜第12ステップを再度実行し、
前記第12ステップによる判断の結果、前記位置誤差が前記許容誤差以下である場合、前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度の値を、前記ロボットが前記演算対象の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値として取得し、
前記各軸の回転角度の値を取得した後、前記演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記第7〜第12ステップを再度実行することを特徴とする請求項1に記載のロボットの制御方法。
【請求項3】
複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させるロボットの制御装置であって、
移動後のツールの向きを決定するための各変数のうち、ユーザにより指定される1つまたは2つの変数を任意の値に設定可能な任意変数として設定する任意変数設定処理手段と、
ツールの先端が前記現在位置から前記目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化して前記目標位置における任意変数の値を決定する変数値決定処理手段と、
を備え、
前記変数値決定処理手段は、
前記ロボットが所定の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値を、前記ロボットがとり得る全ての形態のそれぞれについて取得し、
前記全ての形態のうちいずれか1つを、前記目標位置における任意変数の候補値を求める演算の演算対象として設定し、
前記演算対象について取得された前記各軸の回転角度の値から前記任意変数の値を演算し、
前記目標位置における任意変数の値として、前記演算された値を設定した場合における前記第1評価指標を演算し、
前記演算された第1評価指標の値を初期値として前記第1評価指標の微分値または微小変分がゼロになるときの前記任意変数の値を求め、その求めた値を前記目標位置における任意変数の候補値とし、
前記任意変数の候補値を求めた後、前記演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記任意変数の候補値を求めるための前記各演算を再度実行し、
前記任意変数の候補値を求めた後、前記演算対象に設定されていない形態が存在しない場合、前記候補値のうち、前記第1評価指標を最も小さくする値を、前記目標位置における任意変数の値として決定することを特徴とするロボットの制御装置。
【請求項4】
前記変数値決定処理手段は、
前記ロボットが所定の形態をとる各軸の回転角度の値が、前記ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つを、前記目標位置にツールの先端が到達する各軸の回転角度を取得するための演算の演算対象として設定し、
前記演算対象について与えられた前記各軸の回転角度の値から前記ツールの先端位置を求め、
前記求められたツールの先端位置を計算対象位置として設定し、
前記計算対象位置におけるツールの先端位置および向きを決定するための変数のうち前記任意変数を除いた変数と、前記計算対象位置における各軸の回転角度とに関するヤコビ行列Jkを求め、
移動後のツールの先端位置の前記目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分を各軸の最大回転速度の逆数の二乗とした対角行列をλとし、前記目標位置の座標値を要素とする行列をPdとし、前記計算対象位置の座標値を要素とする行列をPkとして、下記(1)式に示す第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkを演算し、
Qk=εkT・εk+ΔkT・λ・Δk …(1)
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置を演算し、
前記演算した移動後のツールの先端位置の前記目標位置に対する位置誤差を求め、その位置誤差が所定の許容誤差以下であるか否か判断し、
前記位置誤差が前記許容誤差を超える場合、前記演算した移動後のツールの先端位置を次の計算対象位置として設定した上で、次の移動後のツールの先端位置を求めるための前記各演算を再度実行し、
前記位置誤差が前記許容誤差以下である場合、前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度の値を、前記ロボットが前記演算対象の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値として取得し、
前記各軸の回転角度の値を取得した後、前記演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、各軸の回転角度を取得するための前記各演算を再度実行することを特徴とする請求項3に記載のロボットの制御装置。
【請求項1】
複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させる際におけるロボットの制御方法であって、
移動後のツールの向きを決定するための各変数のうち、ユーザにより指定される1つまたは2つの変数を任意の値に設定可能な任意変数として設定する任意変数設定処理と、
ツールの先端が前記現在位置から前記目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化して前記目標位置における任意変数の値を決定する変数値決定処理と、
を含み、
前記変数値決定処理は、
前記ロボットが所定の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値を、前記ロボットがとり得る全ての形態のそれぞれについて取得する第1ステップと、
前記全ての形態のうちいずれか1つを、前記目標位置における任意変数の候補値を求める演算の演算対象として設定する第2ステップと、
前記演算対象について取得された前記各軸の回転角度の値から前記任意変数の値を演算する第3ステップと、
前記目標位置における任意変数の値として、前記演算された値を設定した場合における前記第1評価指標を演算する第4ステップと、
前記演算された第1評価指標の値を初期値として前記第1評価指標の微分値または微小変分がゼロになるときの前記任意変数の値を求め、その求めた値を前記目標位置における任意変数の候補値とする第5ステップと、
を含み、
前記第5ステップの実行後、前記演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記第3〜第5ステップを再度実行し、
前記第5ステップの実行後、前記演算対象に設定されていない形態が存在しない場合、前記候補値のうち、前記第1評価指標を最も小さくする値を、前記目標位置における任意変数の値として決定することを特徴とするロボットの制御方法。
【請求項2】
前記変数値決定処理の第1ステップは、
前記ロボットが所定の形態をとる各軸の回転角度の値が、前記ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つを、前記目標位置にツールの先端が到達する各軸の回転角度を取得するための演算の演算対象として設定する第6ステップと、
前記演算対象について与えられた前記各軸の回転角度の値から前記ツールの先端位置を求める第7ステップと、
前記求められたツールの先端位置を計算対象位置として設定する第8ステップと、
前記計算対象位置におけるツールの先端位置および向きを決定するための変数のうち前記任意変数を除いた変数と、前記計算対象位置における各軸の回転角度とに関するヤコビ行列Jkを求める第9ステップと、
移動後のツールの先端位置の前記目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分を各軸の最大回転速度の逆数の二乗とした対角行列をλとし、前記目標位置の座標値を要素とする行列をPdとし、前記計算対象位置の座標値を要素とする行列をPkとして、下記(1)式に示す第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkを演算する第10ステップと、
Qk=εkT・εk+ΔkT・λ・Δk …(1)
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置を演算する第11ステップと、
前記演算した移動後のツールの先端位置の前記目標位置に対する位置誤差を求め、その位置誤差が所定の許容誤差以下であるか否か判断する第12ステップと、
を含み、
前記第12ステップによる判断の結果、前記位置誤差が前記許容誤差を超える場合、前記演算した移動後のツールの先端位置を次の計算対象位置として設定した上で、前記第9〜第12ステップを再度実行し、
前記第12ステップによる判断の結果、前記位置誤差が前記許容誤差以下である場合、前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度の値を、前記ロボットが前記演算対象の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値として取得し、
前記各軸の回転角度の値を取得した後、前記演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記第7〜第12ステップを再度実行することを特徴とする請求項1に記載のロボットの制御方法。
【請求項3】
複数の軸を有するロボットの手先に取り付けられるツールの先端を現在位置から目標位置に向けて移動させるロボットの制御装置であって、
移動後のツールの向きを決定するための各変数のうち、ユーザにより指定される1つまたは2つの変数を任意の値に設定可能な任意変数として設定する任意変数設定処理手段と、
ツールの先端が前記現在位置から前記目標位置に移動する際に要する移動時間に基づく第1評価指標を設定し、その第1評価指標を最適化して前記目標位置における任意変数の値を決定する変数値決定処理手段と、
を備え、
前記変数値決定処理手段は、
前記ロボットが所定の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値を、前記ロボットがとり得る全ての形態のそれぞれについて取得し、
前記全ての形態のうちいずれか1つを、前記目標位置における任意変数の候補値を求める演算の演算対象として設定し、
前記演算対象について取得された前記各軸の回転角度の値から前記任意変数の値を演算し、
前記目標位置における任意変数の値として、前記演算された値を設定した場合における前記第1評価指標を演算し、
前記演算された第1評価指標の値を初期値として前記第1評価指標の微分値または微小変分がゼロになるときの前記任意変数の値を求め、その求めた値を前記目標位置における任意変数の候補値とし、
前記任意変数の候補値を求めた後、前記演算対象に設定されていない形態が存在する場合、それら形態のうち、いずれか1つを次の演算対象として設定した上で、前記任意変数の候補値を求めるための前記各演算を再度実行し、
前記任意変数の候補値を求めた後、前記演算対象に設定されていない形態が存在しない場合、前記候補値のうち、前記第1評価指標を最も小さくする値を、前記目標位置における任意変数の値として決定することを特徴とするロボットの制御装置。
【請求項4】
前記変数値決定処理手段は、
前記ロボットが所定の形態をとる各軸の回転角度の値が、前記ロボットがとり得る全ての形態のそれぞれについて与えられると、それら全ての形態のうちいずれか1つを、前記目標位置にツールの先端が到達する各軸の回転角度を取得するための演算の演算対象として設定し、
前記演算対象について与えられた前記各軸の回転角度の値から前記ツールの先端位置を求め、
前記求められたツールの先端位置を計算対象位置として設定し、
前記計算対象位置におけるツールの先端位置および向きを決定するための変数のうち前記任意変数を除いた変数と、前記計算対象位置における各軸の回転角度とに関するヤコビ行列Jkを求め、
移動後のツールの先端位置の前記目標位置に対する位置誤差の座標値を要素とする行列をεkとし、各軸の回転角度の変化量を要素とする行列をΔkとし、対角成分を各軸の最大回転速度の逆数の二乗とした対角行列をλとし、前記目標位置の座標値を要素とする行列をPdとし、前記計算対象位置の座標値を要素とする行列をPkとして、下記(1)式に示す第2評価指標Qkを最小化することにより、下記(2)式に示す変化量Δkを演算し、
Qk=εkT・εk+ΔkT・λ・Δk …(1)
Δk=(λ+JkT・Jk)−1・JkT(Pd−Pk) …(2)
前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度について順変換を行うことにより、移動後のツールの先端位置を演算し、
前記演算した移動後のツールの先端位置の前記目標位置に対する位置誤差を求め、その位置誤差が所定の許容誤差以下であるか否か判断し、
前記位置誤差が前記許容誤差を超える場合、前記演算した移動後のツールの先端位置を次の計算対象位置として設定した上で、次の移動後のツールの先端位置を求めるための前記各演算を再度実行し、
前記位置誤差が前記許容誤差以下である場合、前記計算対象位置における各軸の回転角度に対し前記演算した変化量Δkを加えた各軸の回転角度の値を、前記ロボットが前記演算対象の形態をとり且つ前記目標位置にツールの先端が到達する各軸の回転角度の値として取得し、
前記各軸の回転角度の値を取得した後、前記演算対象に設定されていない形態が存在しなくなるまで、それら形態のうち、いずれか1つを次の演算対象として設定した上で、各軸の回転角度を取得するための前記各演算を再度実行することを特徴とする請求項3に記載のロボットの制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−196720(P2012−196720A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2011−60624(P2011−60624)
【出願日】平成23年3月18日(2011.3.18)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願日】平成23年3月18日(2011.3.18)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
[ Back to top ]