説明

ロボット制御装置

【課題】 スプライン補間機能により曲線補間してロボットアーム先端の移動経路を設定するようにしたロボット制御装置において、スプライン曲線上にループとなる個所が生成されない演算方法を提供する。
【解決手段】 隣り合う2つの指令位置の間を一区間としてそれら区間毎に、両端の指令位置R1,R2を結ぶ直線L2の長さに比例する大きさのベクトルであって、当該区間の両端の指令位置R1,R2を結ぶ直線L2が、前の一区間についての両端の指令位置R0,R1を結ぶ直線L1および後の一区間についての両端の指令位置R2,R3を結ぶ直線L3となす角を、それぞれ2分する方向を向く始点側接線ベクトルT2sおよび終点側接線ベクトルT2eを演算し、区間毎に、始点側接線ベクトルおよび終点側接線ベクトルがそれぞれ前の区間の終点側接線ベクトルおよび後の区間の始点側接線ベクトルと向きが一致する曲線を連ねることによってスプライン曲線を演算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は間隔をおいて与えられた複数の指令位置をスプライン補間機能により曲線補間してロボットアーム先端の移動経路を設定するようにしたロボット制御装置に関する。
【背景技術】
【0002】
プレイバック型のロボットでは、通常、ティーチング装置により、ハンドが取り付けられるロボットアーム先端の移動の始点、通過点、終点を指令位置として教示する。ロボットの制御装置には、教示された指令位置の間を曲線補間してロボットアーム先端を指令位置の点列に沿って滑らかに移動させる。この曲線補間の方式としては、従来から、スプライン関数を用いて補間する方式が良く採用されている(例えば、特許文献1、特許文献2)。
【0003】
スプライン関数とは、パラメータtの変動する範囲を例えば0から1としたとき、この範囲を幾つかの区間に分割し、各区間の曲線をそれぞれ異なった式で定義することによって、全体として0から1までの範囲で曲線を定義しようとするものである。この場合、一区間の曲線(スプライン曲線セグメント)は、その両端での条件(位置と接線ベクトル)だけによって指定される。そして、各スプライン曲線セグメントを次の3つの条件により接続して指令位置の点列を順番に通過する滑らかなスプライン曲線(移動経路)を求めるようにしている。
1)接続点が一致していること。
2)接続点で接線ベクトルが一致していること。
3)接続点で接線ベクトルの変化率が一致していること。
【特許文献1】特開昭64−81012号公報
【特許文献2】特開平7−64620号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記のように複数の指令位置を教示すると、ロボットの制御装置が指令位置の点列を順番に通過する滑らかなスプライン曲線を設定する。ところが、教示する指令位置の間隔が大小異なると、間隔の狭い区間で図7に示すようにループ曲線になることがまま生じるという問題があった。指令位置の間隔が等間隔ならば、このようなループ曲線となることはない。しかしながら、ロボットアーム先端の移動経路として、直線的な緩やかなカーブを描けばよい個所では、指令位置の間隔は大きく取っても良いが、しかし、急なカーブを描かねばならない個所では、指令位置の間隔は小さくしなければならない。
【0005】
このように、ロボットアーム先端の移動経路として、緩やかなカーブの個所と急なカーブの個所とを含む場合に、ループを描く部分のないスプライン曲線を得るためには、緩やかなカーブの個所であっても、急なカーブの個所と同じような狭い間隔で指令位置を教示してゆかねばならなくなる。このことは、指令位置を教示する場合に、多数点を教示してゆかねばならないことを意味し、教示作業に多くの時間がかかるという問題があった。
【0006】
本発明は上記の事情に鑑みてなされたもので、その目的は、複数の指令位置を教示する場合、指令位置間の間隔が大小異なっていても、スプライン曲線を設定した場合にループとなる個所を生成することのないロボット制御装置を提供することにある。
【課題を解決するための手段】
【0007】
本発明者は、指令位置の間隔が大小異なる場合、指令位置間の間隔の狭い区間においてループを描くスプライン曲線となる原因が、各区間の曲線を接続する際、接続点で接線ベクトルが一致し、且つ、接続点で接線ベクトルの変化率(曲線の曲率)が一致するように接線ベクトルを決定するという制約条件にあることを見出した。
【0008】
そこで、上記の目的を達成するために、本発明は、間隔をおいて与えられた複数の指令位置を曲線補間してロボットアーム先端の単位時間当たりの移動量を制御するロボット制御装置において、前記曲線補間のために前記指令位置を結ぶスプライン曲線を設定する設定手段と、設定された前記スプライン曲線上を前記ロボットアーム先端が移動するようにその単位時間当たりの移動量を演算する補間手段とを備え、前記設定手段は、隣り合う2つの前記指令位置の間を一区間としてそれら区間毎に、両端の前記指令位置を結ぶ直線の長さに比例する大きさのベクトルであって、当該区間の両端の前記指令位置を結ぶ直線が、前の一区間についての両端の前記指令位置を結ぶ直線および後の一区間についての両端の前記指令位置を結ぶ直線となす角を、それぞれ2分する方向を向く始点側接線ベクトルおよび終点側接線ベクトルを演算する接線ベクトル演算部と、前記区間毎に、前記始点側接線ベクトルおよび前記終点側接線ベクトルがそれぞれ前の区間の前記終点側接線ベクトルおよび後の区間の前記始点側接線ベクトルと向きが一致する曲線を連ねることによって前記スプライン曲線を演算する曲線演算部とを備えてなることとしたものである。
【0009】
この構成によれば、各区間の始点(ロボットアーム先端の移動開始側の指令位置)および終点(ロボットアーム先端の移動終了側の指令位置)での接線ベクトルを、当該区間の始終点間を結ぶ直線の長さに比例する大きさで、且つ、当該区間の始終点間を結ぶ直線と、前の区間の始終点間を結ぶ直線、後の区間の始終点間を結ぶ直線とのなす角をそれぞれ二分する方向を向くベクトルに定めたので、各区間のスプライン曲線セグメントを滑らかに接続することができる。しかも、接続点の接線ベクトルの向きだけが一致することを条件とし、大きさおよび変化率の一致を条件としていないので、指令位置間の間隔が大小異なっていても、短い区間でループ曲線を描く恐れがない。
【発明を実施するための最良の形態】
【0010】
以下、本発明の一実施例を図1ないし図6を参照しながら説明する。
ロボットは、図6に示すように、ロボット本体1と、このロボット本体1を制御する制御装置2と、ティーチング装置としてのティーチングペンダント3を備えている。この実施例において、制御装置2の制御対象であるロボット本体1は、例えば垂直多関節型の作業用ロボットとして構成され、ベース4と、このベース4に水平方向に旋回可能に設けられたショルダ部5と、このショルダ部5に上下方向に旋回可能に設けられた下アーム6と、この下アーム6に上下方向に旋回可能に且つ捻り回転可能に設けられた上アーム7と、この上アーム7に上下方向に旋回可能に設けられた手首8とを備えており、手首8は先端部に捻り回転可能なフランジ9を備えている。このフランジ9には、図示はしないが、ワークを把持するハンド(図示せず)が取り付けられるようになっている。
【0011】
そして、ショルダ部5の水平方向の旋回動作、下アーム6の上下方向の旋回動作、上アーム7の上下方向の旋回動作、上アーム7の回転動作、手首8の上下方向の旋回動作、フランジ9の回転動作は、それぞれ関節が、駆動源である例えば直流サーボモータからなるモータ10(図5参照)により図示しない適宜の伝動機構を介して回転駆動されることにより行われる。
【0012】
一方、図5に示すように、制御装置2は、制御部としてのCPU11、各関節のモータ10を駆動する駆動手段としての駆動回路12、検出回路13などを備えている。そして、CPU11には、ロボット全体のシステムプログラム等を記憶したROM14、ロボット本体1の動作プログラム等を記憶したRAM15および前記ティーチングペンダント3を接続するためのインターフェース16が接続されている。なお、図5では、ショルダ部5、下アーム6、上アーム7、手首8およびフランジ9を可動部として一つのブロックで示し、これに応じてそれらの関節の駆動源であるモータ10も一台だけ示した。
【0013】
上記検出回路13は、各関節の現在位置(回転角度)および現在速度(回転速度)を検出するためのもので、この検出回路13には、各関節を駆動するモータ10に設けられたロータリエンコーダ17が接続されている。ロータリエンコーダ17は位置センサおよび速度センサを兼用するもので、各モータ10の回転角度に応じたパルス信号を出力し、そのパルス信号は検出回路13に与えられる。検出回路13は、各ロータリエンコーダ17からのパルス信号に基づいて各モータ10ひいては各関節の現在位置を検出すると共に、単位時間当たり各ロータリエンコーダ17から入力されるパルス信号数に基づいて各モータ10ひいては各関節の現在速度を検出し、その位置および速度の情報は、各モータ10の駆動回路12およびCPU11に与えられるようになっている。
【0014】
そして、各駆動回路12は、CPU11から与えられる位置指令値および速度指令値と検出回路13から与えられる現在位置および現在速度とを比較し、その偏差に応じた電流を各モータ10に供給してそれらを駆動する。これにより、ロボットアーム先端であるフランジ9の中心部が指令位置を順に通る経路を辿って動作し、種々の作業を行うものである。
【0015】
さて、動作プログラムには、各モータ10の速度係数および加減速度係数などのパラメータが記録されている。このうち、速度係数および加減速度係数とは、動作の最高速度および加減速度を各モータ10の許容最大速度および許容最大加減速度に対する割合で定めたもので、許容最大速度および許容最大加減速度は、各モータ10の負荷トルクが例えば許容最大トルクを越えることのないように、各モータ10の回転を関節に伝達する伝動機構や各モータ10の性能を考慮して設定されている。
【0016】
CPU11は、上記の動作プログラムに記録されたパラメータに基づいて、ロボット先端の移動の開始位置から終了位置までの速度パターンを例えば台形パターンに当てはめて決定し、その速度パターンに基づいて各関節の所定時間経過毎の速度と位置を演算し、これを速度指令値および位置指令値として駆動回路12に与えるようになっている。
すなわち、台形速度パターンは、図4(a)に示すように、加速過程(T1)、最高速度での等速過程(T2)、減速過程(T3)からなるが、この台形の速度パターンとなるような動作角度(位置)のパターンは図4(b)に示すようになる。図4(b)に示す角度パターンにおいて、tn時点での関節の角度をθn 、このtn時点からΔt時間後のt(n+1)時点での角度をθ(n+1)とすると、Δt時間での角度の変化がt(n+1)時点での関節の角速度V(n+1)となり、これが速度指令値となる。
【0017】
そして、tn時点からΔt時間後の関節の角度θ(n+1)は、tn時点の角度θn に、速度パターンから得られるt(n+1)時点の角速度V(n+1) にΔtを乗じた値を加算することによって求めることができる。従って、速度パターンに基づいて、動作開始時点から所定のサンプリング時間(Δt)経過毎に、その経過時点を現在として次のサンプリング時点(Δt経過後に相当する時点)の速度を算出し、これにサンプリング時間を乗じた値を順次加算してゆけば、動作開始時点から動作終了時点までの間、サンプリング時間経過毎の角度を順次求めることができる。
【0018】
この実施例のロボットでは、ロボットアーム先端の移動経路は、ティーチングペンダント3を用いて行う教示作業によって与えられる。この教示作業では、ロボットアーム先端が辿るべき軌跡上の複数の位置が指令位置として順に教示されると共に、各指令位置でのロボットアーム先端の姿勢が教示され、その教示された指令位置と姿勢は、RAM15に記憶される。そして、制御装置2は、実際のロボット作業に際して、与えられた複数の指令位置間を曲線補間してそれら指令位置を順に滑らかに辿る曲線を設定し(設定手段)、ロボットアーム先端がその曲線上を移動するように制御(補間手段)する。
【0019】
なお、ロボットアーム先端の位置は、フランジ9に固定された3次元座標の原点がロボット座標上でどの位置にあるかによって示される。また、ロボットアーム先端の姿勢は、フランジ9に固定の3次元座標の3軸のうち、所定の2軸上の単位ベクトルがロボット座標上で示す向きによって定義される。この姿勢も、移動経路と同様な曲線補間によって滑らかに変化するように制御され、間欠的に与えられた指令位置で教示された姿勢を取るように、その姿勢を滑らかに変化させるようになっている。
【0020】
さて、上記の複数の指令位置の曲線補間は、スプライン補間方式によって行われる。このスプライン補間の一例を図2によって説明する。図2において、R0,R1,……Rnは、(n+1)個の指令位置であり、R0が移動開始位置、Rnが移動終了位置である。また、指令位置R0〜Rnの相互間を結んでいる曲線G1,G2……Gnは、指令位置R0〜Rnの相互間を一区間として各区間について定義されるスプライン曲線セグメントである。スプライン補間では、スプライン曲線セグメントに対応するスプラインセグメント関数により、指令位置を通るスプライン曲線を定義する。
【0021】
各スプライン曲線セグメント上の各点は、3次元のロボット座標上の点として次の(1)〜(3)によって定めることができる。なお、tはパラメータである。
X(t)=a33+a22+a1t+a ……(1)
Y(t)=b33+b22+b1t+b ……(2)
Z(t)=c33+c22+c1t+c ……(3)
この(1)〜(3)式をまとめると、スプライン曲線セグメント上の各点の位置は、次の(4)式に示す3次の一般式(スプラインセグメント関数)によって定義される。
【0022】
【数1】

【0023】
【数2】

【0024】
よって、上記(4)式は、次の(9)式のようになる。
【数3】

【0025】
以上のように指令位置相互間を一区画としたとき、各区画のスプライン曲線セグメントは上記(9)式の一般式によって表されるが、それら各区画のスプライン曲線セグメントを接続するための条件として、本発明では、接線ベクトルT(k−1)、Tkを次の条件(ア)〜(ウ)により定める。
【0026】
(ア)接続点が一致していること。
(イ)一区画の両端(始点側指令位置および終点側指令位置)の接線ベクトルの大きさは、両端を結ぶ直線の長さに比例する大きさに定め、且つ、両端の接線ベクトルの向きは、両端を結ぶ直線が、前の一区間についての両端を結ぶ直線および後の一区間について両端を結ぶ直線となす角を、それぞれ2分する方向に定めること。
(ウ)上記のように定めた始点側接線ベクトルの向きが前の区画の終点側接線ベクトルの向きと一致し、終点側接線ベクトルの向きが後の区画の始点側接線ベクトルの向きと一致すること。
【0027】
この(ア)〜(ウ)の条件を具体的に図1に示す第2の区間(k=2;指令位置R1とR2の区間)を中心にして具体的に説明する。図1は図2の指令位置R0〜R3までを拡大して示している。この図1において、第1の区間(k=1)の両端(指令位置R0とR1)間を結ぶ直線をL1、第2の区間(k=2)の両端(指令位置R1とR2)間を結ぶ直線をL2、第3の区間(k=3)の両端(指令位置R2とR3)間を結ぶ直線をL3とする。
【0028】
また、第1の区間の両端R0,R1の接線ベクトルをそれぞれT1s(始点側接線ベクトル),T1e(終点側接線ベクトル)、第2の区間の両端R1,R2の接線ベクトルをそれぞれT2s(始点側接線ベクトル),T2e(終点側接線ベクトル)、第3の区間の両端R2,R3の接線ベクトルをそれぞれT3s(始点側接線ベクトル),T3e(終点側接線ベクトル)とする。
【0029】
すると、第1の区間の終点側接線ベクトルベクトルT1e、第2の区間の始点側接線ベクトルT2sおよび終点側接線ベクトルT2e、第3の区間の始点側接線ベクトルT2sおよび終点側接線ベクトルT2eは、次の(10)式〜(13)式のようになる。ここで、第1の区間は前の区間がないので、始点側接線ベクトルT1sについては、例えば大きさを直線L1の長さに比例係数をrを乗じた値に定め、向きを直線L1と同じに定める。
【0030】
【数4】

【0031】
上記(10)式〜(13)式において、rはT1sの大きさを定める際に使用したと同じ値の比例係数である。この比例係数rは、この実施例では1と定めている。
ここで、矢印付きのP0〜P3は、指令位置R0〜R2の位置ベクトルであるから、(10)式および(11)式において、小括弧内の第1式は直線L1に一致する方向の単位ベクトル、第2式は、直線L2に一致する方向の単位ベクトルをそれぞれ求めるものであり、同様に(12)式および(13)式において、小括弧内の第1式は直線L2に一致する方向の単位ベクトル、第2式は、直線L3に一致する方向の単位ベクトルをそれぞれ求めるものである。従って、(10)式〜(13)式において、小括弧内の式を演算することによって直線L1とL2とのなす角の差、直線L2とL3とのなす角の差が求められ、それに0.5を乗ずることによって直線L1とL2とのなす角を二分する方向、直線L2とL3とのなす角を二分する方向がそれぞれ求められる。
【0032】
このようにして各区間についてそれぞれ始点側接線ベクトルおよび終点側接線ベクトルが求められる。そして、各区間について両端の接線ベクトルを求めた後、前述のようにして各区間のスプライン曲線セグメントを表す関数式の4つのスプラインパラメータを求める。すると、各区間の始点側接線ベクトルおよび終点側接線ベクトルが、それぞれ前の区間の終点側接線ベクトルおよび後の区間の始点側接線ベクトルに向きと一致する関数を求めることができ、その結果、各接続点(指令位置)において滑らかに連続するスプライン曲線(スプライン関数)を求めることができる。
【0033】
次に、上記構成においてロボット作業を行う場合の作用を説明する。ロボット作業を行わせるに先立って、ティーチングペンダント3を用いて実際にロボット本体1を動かしてそのロボットアーム先端の移動開始位置、通過点および移動終了位置を指令位置として教示する。この指令位置および姿勢は、RAM15(記憶手段)に記憶される。なお、以下では説明を簡潔にするために、姿勢の制御についての説明は省略し、主として移動経路の制御について説明する。
【0034】
ロボット作業を行わせるべく、スタート操作を行うと、ロボットの制御装置2は、まず、指令位置をRAM15から読み出し(ステップS1)、移動経路の両端、つまり移動開始位置および移動終了位置の接線ベクトルを設定する(ステップS2:始終端ベクトル設定手段)。この場合、移動開始位置での接線ベクトルは、移動開始位置と次の指令位置とを結ぶ直線と同じ方向を向き、次の指令位置までの直線の長さに比例する大きさとする。また、移動終点位置での接線ベクトルは、直ぐ前の指令位置と移動終点位置とを結ぶ直線と同じ方向を向き、直ぐ前の指令位置と移動終点位置とを結ぶ直線の長さに比例する大きさとする。なお、この移動開始位置および移動終了位置での接線ベクトルの向きと大きさはこれに限られるものではなく、前後の作業を考慮して定めることができ、また、大きさは0であっても良い。
【0035】
次に、制御装置2は、移動開始位置から移動終了位置までを指令位置で複数区画に分割し、区間毎に前述の(10)式〜(13)式によって始点側接線ベクトルと終点側接線ベクトルとを演算する(ステップS3:接線ベクトル演算部)。そして、制御装置2は、各区間のスプライン曲線セグメントの関数式(スプラインセグメント関数)のベクトル係数を前述した(5)式〜(8)式によって求める(ステップS4:曲線演算部)。
【0036】
このようにして各区間のスプラインセグメント関数のベクトル係数が求まると、移動始点位置から移動終点位置までの全指令位置を滑らかな曲線で結ぶスプライン曲線が求められたこととなるので、その後、制御装置2は、このスプラインセグメント関数である(9)式を用いて、具体的には(9)式をt(例えば0≦t≦1)で微分して求めた式を0から1まで積分することにより、移動開始位置から移動終了位置までの総曲線距離を計算する(ステップS5)。
【0037】
求められた総曲線距離はロボットアーム先端の移動開始位置から移動終了位置までの移動距離であるから、次に、制御装置2は、総曲線距離から図4(a)に示す速度パターンを生成する(ステップS6)。この速度パターンは、ロボットアーム先端の速度が台形となるように定めるもので、ロボットアーム先端が移動開始位置から予め定められた一定の加速度で予め定められた最高速度となるまで速度を上昇させながら移動し、予め定められた最高速度に達したら、その最高速度で等速度移動し、そして、予め定められた減速度で減速して移動終了位置に至るような速度パターンを生成する。
【0038】
速度パターンを生成すると、制御装置2は、速度パターンから一定のサンプリング時間内でのロボットアーム先端の移動距離を求め、今回のサンプリング時間内での移動距離を前のサンプリング時間内での移動終了位置にプラスして、今回のサンプリング時間でのスプライン曲線上の移動終了位置を求めると共に、ロボットアーム先端の姿勢を計算する(ステップS7)。そして、制御装置2は、サンプリング時間内でロボットアーム先端が移動開始位置から移動終了位置まで移動するように各アームの角速度および位置を計算し(ステップS8)、各アームのモータ10に速度指令値および位置指令値を出力する(ステップS9)。そして、制御装置2は、上記のステップS7〜ステップS9を繰り返すことによって、ロボットアーム先端を移動終了位置まで動作させるものである。
【0039】
このように本実施例によれば、各区間のスプライン曲線セグメントの両端(指令位置)の接線ベクトルを、その両端を結ぶ直線の長さに比例する大きさのベクトルであって、その両端を結ぶ直線が、前の一区間についての両端の前記指令位置を結ぶ直線および後の一区間についての両端を結ぶ直線となす角を、それぞれ2分する方向を向くように定めたので、指令位置間の間隔が大小異なっていても、スプライン曲線にループを描く部分が生ずることを防止できる。
【0040】
これは、始端側接線ベクトルの向きが、より終点に近い方を向くように定まること、一区間の始点側接線ベクトルと終点側接線ベクトルとは、両端を結ぶ直線の長さに比例した同じ大きさとなるので、前後の区間の直線とのなす角が同じであれば、両端の間隔によらずスプライン曲線セグメントは相似となること、などによる。なお、本発明でループを生じないスプライン曲線を作成できることは、数学的にも証明される。
【0041】
なお、本発明は上記し且つ図面に示す実施例に限定されるものではなく、以下のような拡張或いは変更が可能である。
比例係数rは、1に限られない。rが所定の大きさの範囲にあればループを描くことを防止できる。
垂直多関節型のロボットに限られず、ロボット一般に広く適用できる。
【図面の簡単な説明】
【0042】
【図1】本発明の一実施例を示すもので、接線ベクトルを求める方法を示す図
【図2】指令位置とそれら指令位置を連ねた曲線を示す図
【図3】ロボットアーム先端の移動経路制御のフローチャート
【図4】速度パターンを示すグラフ
【図5】ロボットの電気的構成を示すブロック図
【図6】ロボットの斜視図
【図7】従来の問題点を示す図2相当図
【符号の説明】
【0043】
図面中、1はロボット本体、2は制御装置(設定手段、補間手段、接線ベクトル演算部、曲線演算部)、3はティーチングペンダント、9はフランジ(ロボットアーム先端)である。

【特許請求の範囲】
【請求項1】
間隔をおいて与えられた複数の指令位置を曲線補間してロボットアーム先端の単位時間当たりの移動量を制御するロボット制御装置において、
前記曲線補間のために前記指令位置を結ぶスプライン曲線を設定する設定手段と、設定された前記スプライン曲線上を前記ロボットアーム先端が移動するようにその単位時間当たりの移動量を演算する補間手段とを備え、
前記設定手段は、
隣り合う2つの前記指令位置の間を一区間としてそれら区間毎に、両端の前記指令位置を結ぶ直線の長さに比例する大きさのベクトルであって、当該区間の両端の前記指令位置を結ぶ直線が、前の一区間についての両端の前記指令位置を結ぶ直線および後の一区間についての両端の前記指令位置を結ぶ直線となす角を、それぞれ2分する方向を向く始点側接線ベクトルおよび終点側接線ベクトルを演算する接線ベクトル演算部と、
前記区間毎に、前記始点側接線ベクトルおよび前記終点側接線ベクトルがそれぞれ前の区間の前記終点側接線ベクトルおよび後の区間の前記始点側接線ベクトルと向きが一致する曲線を連ねることによって前記スプライン曲線を演算する曲線演算部とを備えてなることを特徴とするロボット制御装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−42021(P2007−42021A)
【公開日】平成19年2月15日(2007.2.15)
【国際特許分類】
【出願番号】特願2005−228089(P2005−228089)
【出願日】平成17年8月5日(2005.8.5)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】