説明

ロボット制御装置,ロボット制御方法,コンピュータプログラム

【課題】 ロボットが使用される状況に応じて要求される条件を考慮することで、アーム先端を目標位置に移動させるために必要な走行軸の移動量を自動的に決定することができるロボット制御装置を提供する。
【解決手段】 ロボットの制御を行うコントローラは、垂直多関節型で6軸のアームの先端について、現在位置(X0,Y0,Z0)と所定時間後の目標移動量(ΔX,ΔY,ΔZ)とに基づいて決定される目標位置(Xc,Yc,Zc)に対し(ステップS1〜S4)、その時点でアームが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、アームの先端を目標位置に移動させるために必要な走行軸上における所定時間当たりの移動量ΔX3を計算する(ステップS5)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、走行軸を冗長軸とし、垂直多関節型で6軸のアームを有するロボットの制御を行う制御装置及び制御方法、並びに前記制御装置を構成するコンピュータにより実行されるプログラムに関する。
【背景技術】
【0002】
走行軸を冗長軸として、垂直多関節型で6軸のアームを有するロボットには、計7つの自由度が存在する。従って、上記ロボットを制御してアームの先端を目標位置まで移動させるには、それら7つの自由度を全て規定する必要があり、ティーチング作業やリアルタイム操作が煩雑であるという問題がある。
例えば、特許文献1には、上記と同様に構成されるロボットについて、冗長軸に関するティーチング時間を「0」とするようにしたプログラムの作成方法及び装置が開示されている。この技術は、冗長軸が取り得る位置を予め複数の離散的な位置に定めておき、オフラインティーチング時に得られるティーチングデータから、ティーチング時における複数の動作状態でのアーム先端部と冗長軸である走行台車の原点位置との距離を演算し、各演算結果に基づいて、動作プログラム中における走行台車の位置を予め定めた離散的な位置の何れかに自動的に決定する、というものである。
【特許文献1】特開平10−244481号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1の技術では、事前に冗長軸が取り得る位置を定める必要があり、しかも、実際の動作時におけるロボットの冗長軸上の位置は定められた何れかに限定されてしまう。従って、ロボットの制御を柔軟に行うことができないという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、ロボットが使用される状況に応じて要求される条件を考慮することで、アーム先端を目標位置に移動させるために必要な走行軸の移動量を自動的に決定することができるロボット制御装置及び制御方法、並びに前記制御装置を構成するコンピュータにより実行されるプログラムを提供することにある。
【課題を解決するための手段】
【0004】
請求項1記載のロボット制御装置によれば、垂直多関節型で6軸のアームの先端について、現在位置と所定時間後の目標移動量とに基づいて決定される目標位置に対し、その時点でアームが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、アームの先端を目標位置に移動させるために必要な走行軸上における所定時間当たりの移動量を計算する。
即ち、垂直多関節型で6軸のアームの先端を目標位置に移動させる場合には、現在位置として、アームの第1〜第3関節角度θ1〜θ3と、アームの原点から第2関節までの高さd2と、第2関節と第3関節との距離L2と、第3関節と前記アームの先端までの距離L3とがパラメータとして与えられる。また、第4〜第6関節の角度θ4〜θ6は、これらのパラメータと連動して、アーム先端に取り付けられている若しくはアーム先端のハンド等によって把持されている物体の姿勢を決定することになる。そして、上記のパラメータに加えて、アーム原点の走行軸上の移動量を決定することでアームの先端を目標位置に到達させる。
【0005】
請求項2記載のロボット制御装置によれば、走行軸上における所定時間当たりの移動量に基づいて求めた移動速度が上限速度を超える場合には、拘束条件を解除して前記移動速度を上限速度に置き換える。そして、両速度の差に応じた移動量を走行軸上の座標値より減じて目標位置を修正する。即ち、請求項1のように設定した拘束条件に基づいて求めた移動量だけ、アームの先端を所定時間内に移動させようとすると、ロボットの動作条件として設定されている上限速度を超えてしまう場合が想定される。従って、上記のように修正を行えば、そのような事態の発生を回避することができる。
【発明を実施するための最良の形態】
【0006】
(第1実施例)
以下、本発明をハンドリング作業用ロボットに適用した場合の第1実施例について図1乃至図6を参照して説明する。図5は、多関節型(6軸)ロボット1を示す(a)平面図、(b)側面図である。このロボット1は、ベース2上に6軸のアームRAを有し、そのアームRAの先端にハンド9が取り付けられている。即ち、前記ベース2上には、第1関節J1を介して第1のアーム3が回転可能に連結されている。この第1のアーム3には、第2関節J2を介して第2のアーム4の下端部が回転可能に連結され、さらに、この第2のアーム4の先端部には、第3関節J3を介して第3のアーム5が回転可能に連結されている。
【0007】
この第3のアーム5の先端には第4関節J4を介して第4のアーム6が回転可能に連結され、この第4のアーム6の先端には第5関節J5を介して第5のアーム7が回転可能に連結され、この第5のアーム7には第6関節J6を介して第6のアーム8が回転可能に連結されている。なお、各関節J1〜J6は、例えば夫々に配置されるサーボモータ22(図6参照)により各アーム3〜8を回転駆動するようになっている。また、図4には、アームRAの各軸構成をモデル的に示す。
そして、アーム8には、ハンド9が取り付けられている。この場合、関節J2,J3の角度θ2,θ3の和が180度であれば、関節J4,J5,J6の回動動作は、夫々ハンド9のヨー,ピッチ,ロールに対応することになる。また、ベース2は、レールに沿って移動可能となっており、そのための駆動機構(図示せず)も内蔵している。尚、レールはロボット1の走行軸(冗長軸)となっている。
【0008】
図6は、ロボット1及びその制御系の構成を概略的に示す機能ブロック図である。教示ペンダント11は操作インターフェイス(I/F)であり、操作者は、ハンド9を移動させたい方向に教示ペンダント11の操作キーを操作する。すると、その操作キーの押し度合いに応じた信号(ON/OFF)を、マン・マシン・インターフェイスとしての例えば目標指令生成部13に内蔵される信号入力ボード14に与える。
【0009】
信号入力ボード14は、操作信号12により与えられる信号をCPU15に出力すると、CPU15は、その操作信号に応じてロボット1のアーム先端(即ち、ハンド9)部分を移動させるための目標速度[m/sec]を換算する。そして、その目標速度を、例えばイーサネット(登録商標)などに対応した通信デバイス16を介してロボット制御用のコントローラ(制御装置)18に送信する。コントローラ18のCPU19は、制御プログラム(コンピュータプログラム)24に従って処理を実行するもので、受信した目標速度に基づいてロボット1の走行軸上の移動量を算出し、また、アームRAの目標位置や姿勢角に関連する目標指令値などを算出する。そして、CPU19は、アーム各軸の指令値[m]を生成すると、制御ボード20を介してロボット1側のモータドライバ21に出力する。
モータドライバ21は、与えられた指令値に応じてアームRAの各軸に配置されているモータ22を駆動する。すると、モータ22による軸変位量はエンコーダ23により検出されて、変位量に応じたパルス信号がモータドライバ21に出力される。
【0010】
次に、本実施例の作用について図1乃至図3も参照して説明する。図1はコントローラ18のCPU19によって実行されるロボット1の各軸指令値を求める処理の内容を示すフローチャートである。また、図2は、図1の処理に応じて先端位置が移動されるロボット1のアームRAの(ベクトル)モデルである。CPU19は、上述したように目標指令生成部13側より送信された目標速度を取得すると(ステップS1)、その目標速度に基づいて、ロボット1のアームRA先端をサンプリング時間dt内に移動させる目標移動量(ΔX,ΔY,ΔZ)を求める(ステップS2)。
【0011】
続いて、CPU19は、アームRA先端の現在位置AP0(X0,Y0,Z0)を取得すると(ステップS3)、走行軸上の移動を行わない状態で(即ち、原点ΣAの座標系において)、現在位置(X0,Y0,Z0)及び目標移動量(ΔX,ΔY,ΔZ)からアームRA先端の目標位置AP1(Xc,Yc,Zc)を算出する(ステップS4,図2(a))。尚、目標位置(Xc,Yc,Zc)は、アームRA先端における姿勢角(ヨー,ピッチ,ロール)の変位がある場合は、同次変換行列の積によって演算される。
【0012】
次に、CPU19は、アームRAの先端を目標位置(Xc,Yc,Zc)に移動させるための走行軸上の移動量ΔX3を算出すると(ステップS5,図2(b))、その移動量ΔX3だけベース2を移動させた後の新たな座標系(原点ΣB)で表現される目標位置BP1(X1,Y1,Z1)を算出する(ステップS6,図2(c))。そして、目標位置BP1(X1,Y1,Z1),及び姿勢角の目標値(Rx1,Ry1,Rz1)に基づきアームRA各軸の目標位置、移動速度を算出すると(ステップS7)、それらに応じた各軸毎の指令値を出力する(ステップS8)。それから、ステップS1に戻る。即ち、以上の処理は走行軸協調制御である。
【0013】
次に、ステップS5における走行軸上の移動量ΔX3の算出について、図3を参照して説明する。図3(a)はアームRAのxz座標系(垂直面)であり、(b)は同xy座標系(水平面)である。図3(a)において、座標原点ΣBから関節J2までの高さをd2,関節J2がz軸に対してなす角度をθ2,関節J2から関節J3までの距離(=アーム4)をL2,関節J3がアーム4に対してなす角度をθ3,関節J3から関節J5までの距離(=アーム5)をL3としている。尚、図5に示すようにハンド9はアーム5の先端、即ち関節J5の位置に取り付けられているので、関節J5がアームRAの先端となる。
【0014】
また、図3(b)において、関節J1がx軸に対してなす角度をθ2としている。この場合、x軸が走行軸に一致している。そして、図3は、原点ΣAから走行軸上をΔX3移動させた原点ΣBの座標系であり、従って、アームRAの先端は目標位置(Xc,Yc,Zc)を示している。
すると、目標位置(Xc,Yc,Zc)の各座標は、原点ΣAを基準として以下のように表される。
Xc={L2・sinθ2+L3・sin(θ2+θ3)}cosθ1+ΔX3
・・・(1)
Yc={L2・sinθ2+L3・sin(θ2+θ3)}sinθ1・・・(2)
Zc= L2・cosθ2+d2−L3・cos(π−θ2−θ3)
= L2・cosθ2+d2+L3・cos(θ2+θ3) ・・・(3)
ここで、移動量ΔX3は、サンプリング時間毎にベース2が移動する走行軸上の距離であり、目標位置(Xc,Yc,Zc)が決まると、d2,L2,L3,θ1〜θ3の6つの自由度を設定することで(1)〜(3)式に基づいて移動量ΔX3を求めることになる。尚、d2,L2,L3は固定値である。また、(θ2+θ3)は、アームRAの先端に取り付けられたハンド9の姿勢制御軸であるJ4〜J6の基準位置を一定に保つため、不変とすることを拘束条件とする。
【0015】
(1)式より、
Xc−ΔX3={L2・sinθ2+L3・sin(θ2+θ3)}cosθ1
・・・(4)
ここで、α=L2・sinθ2+L3・sin(θ2+θ3) とすると、
Xc−ΔX3=α・cosθ1 ・・・(5)
Yc=α・sinθ1 ・・・(6)
よって、
(Xc−ΔX3)2+Yc2=α2 ・・・(7)
また、(3)式より、
L2・cosθ2=Zc−d2−L3・cos(θ2+θ3) ・・・(8)
(7)式より、
L2・sinθ2+L3・sin(θ2+θ3)
=±{(Xc−ΔX3)2+Yc21/2
L2・sinθ2=−L3・sin(θ2+θ3)
±{(Xc−ΔX3)2+Yc21/2 ・・・(9)
(8)、(9)式より、
L22(cos2θ2+sin2θ2)
={Zc−d2−L3・cos(θ2+θ3)}2
+[−L3・sin(θ2+θ3)±{(Xc−ΔX3)2+Yc21/22
ここで、β=Zc−d2−L3・cos(θ2+θ3)
γ=L3・sin(θ2+θ3) とすると、上記拘束条件により
(θ2+θ3)=const.であるから、β及びγは固定値となる。
【0016】
L22=β2+{−γ±{(Xc−ΔX3)2+Yc21/22
−γ±{(Xc−ΔX3)2+Yc21/2=±(L22−β21/2
±{(Xc−ΔX3)2+Yc21/2=γ±(L22−β21/2
(Xc−ΔX3)2+Yc2={γ±(L22−β21/22
ΔX3=Xc±[{γ±(L22−β21/22−Yc21/2 ・・・(10)
以上のようにΔX3が求められる。ここで、符号の正負の組み合わせにより(10)式からは以下の4つの解が得られる。
ΔX31=Xc+[{γ+(L22−β21/22−Yc21/2
ΔX32=Xc+[{γ−(L22−β21/22−Yc21/2
ΔX33=Xc−[{γ+(L22−β21/22−Yc21/2
ΔX34=Xc−[{γ−(L22−β21/22−Yc21/2
これら4つの内、絶対値が最小となるものをΔX3として選択する。
【0017】
以上のように本実施例によれば、ロボット1の制御を行うコントローラ18は、垂直多関節型で6軸のアームRAの先端について、現在位置(X0,Y0,Z0)と所定時間後の目標移動量(ΔX,ΔY,ΔZ)とに基づいて決定される目標位置(Xc,Yc,Zc)に対し、その時点でアームRAが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、アームRAの先端を目標位置に移動させるために必要な走行軸上における所定時間当たりの移動量ΔX3を計算するようにした。
従って、走行軸上の移動量ΔX3については指定を行う必要がなくなり、アームRAの先端を目標位置に到達させるためのロボット制御、若しくはそのためのティーチングをより簡単に行うことができる。
【0018】
(第2実施例)
図8は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。第2実施例の構成は基本的に第1実施例と同様であり、コントローラ18のCPU19によって実行される制御内容が第1実施例と若干異なっている。
即ち、図8に示すように、CPU19は、ステップS7において、各軸の目標位置及び目標速度を算出すると、走行軸に関する目標速度ΔV3(=ΔX3/dt:dtは、サンプリング時間)を上限速度Vmaxと比較してΔV3>Vmaxか否かを判断する(ステップS11)。そして、ΔV3≦Vmaxであれば(「NO」)そのままステップS8に移行する。
【0019】
一方、ステップS11においてΔV3>Vmaxであれば(「YES」)、CPU19は両者の差dV3(=Vmax−ΔV3)を演算する(ステップS12)。そして、求めた差dV3に、サンプリング時間dtをかけた距離をx座標値X1に加える(ステップS13)。但し、この場合、ステップS12で求めた差dV3の符号は負であるから、実質的には、X1−|dV3|・dtである。それから、ステップS8に移行する。この場合、走行軸上の移動速度は、上限速度Vmaxで規制されることになる。
【0020】
即ち、拘束条件(θ2+θ3=一定)を与えて求めた目標移動量ΔX3だけ、アームRAの先端を所定時間dt内に移動させようとすると、ロボット1の動作条件として設定されている上限速度Vmaxを超えてしまう場合が想定される。そして、上限速度Vmaxを超える速度でアームRAを動作させると、ロボット1の機構に過大な負担をかけてしまうおそれがある。従って、そのようなケースでは、上限速度Vmaxを超えない範囲で移動させることを優先して、上記のように拘束条件を解除して走行軸上の移動距離を短縮するように修正する。
【0021】
以上のように第2実施例によれば、CPU19は、走行軸上における所定時間dt当たりの移動量ΔX3に基づいて求めた移動速度ΔV3が上限速度Vmaxを超える場合には、拘束条件を解除して移動速度ΔV3を上限速度Vmaxに置き換え、両速度の差dV3に応じた移動量を走行軸上の座標値X1より減じて目標位置を修正するので、ロボット1の機構に過大な負担をかける事態を回避することができる。
【0022】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、次のような変形が可能である。
走行軸上の移動量について作業者により直接入力が行われた場合は、本発明の手法を用いることなく、前記入力操作量に応じてロボット1をレール上で移動させれば良い。
オンライン,オフラインティーチングの場合も、同様に適用が可能である。
ハンドリング作業用に限らず、例えば組立てや塗装,溶接などの広範囲での作業を必要とするため、走行軸により可動範囲を広げるようにしたものにも適用することができる。また、生産設備のセル内で稼動するロボットにおいて、アーム長を抑えつつ可動範囲を広げるため走行軸を用いるものに適用することができる。
【図面の簡単な説明】
【0023】
【図1】本発明をハンドリング作業用ロボットに適用した場合の第1実施例であり、コントローラのCPUにより実行される、ロボットの各軸指令値を求める処理の内容を示すフローチャート
【図2】図1の処理に応じて先端位置が移動されるロボットアームのベクトルモデル図
【図3】(a)はアームのxz座標系(垂直面)、(b)は同xy座標系(水平面)を示す図
【図4】アームの各軸構成をモデル的に示す図
【図5】ロボットの(a)平面図、(b)側面図
【図6】ロボット及びその制御系の構成を概略的に示す機能ブロック図
【図7】本発明の第2実施例を示す図1相当図
【符号の説明】
【0024】
図面中、1はロボット、9はハンド、18はコントローラ(制御装置)、19はCPU、24は制御プログラム(コンピュータプログラム)、RAはアームを示す。

【特許請求の範囲】
【請求項1】
走行軸を冗長軸とし、垂直多関節型で6軸のアームを有するロボットの制御を行う制御装置において、
前記アームの先端について、現在位置と、所定時間後の目標移動量とに基づいて決定される目標位置に対し、
その時点で前記アームが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、前記アームの先端を前記目標位置に移動させるために必要な、前記走行軸上における前記所定時間当たりの移動量を計算することを特徴とするロボット制御装置。
【請求項2】
前記走行軸上における前記所定時間当たりの移動量に基づいて移動速度を求め、前記移動速度が上限速度を超える場合には、上記拘束条件を解除して前記移動速度を上限速度に置き換えると共に、両速度の差に応じた移動量を前記走行軸上の座標値より減じて前記目標位置を修正することを特徴とする請求項1記載のロボット制御装置。
【請求項3】
走行軸を冗長軸とし、垂直多関節型で6軸のアームを有するロボットの制御を行う制御方法において、
前記アームの先端について、現在位置と、所定時間後の目標移動量とに基づいて決定される目標位置に対し、
その時点で前記アームが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、前記アームの先端を前記目標位置に移動させるために必要な、前記走行軸上における前記所定時間当たりの移動量を計算することを特徴とするロボット制御方法。
【請求項4】
前記走行軸上における前記所定時間当たりの移動量に基づいて移動速度を求め、
前記移動速度が上限速度を超える場合には、上記拘束条件を解除して前記移動速度を上限速度に置き換え、
両速度の差に応じた移動量を前記走行軸上の座標値より減じて前記目標位置を修正することを特徴とする請求項3記載のロボット制御方法。
【請求項5】
走行軸を冗長軸とし、垂直多関節型で6軸のアームを有するロボットの制御を行う制御装置を構成するコンピュータにより実行されるプログラムにおいて、
前記アームの先端について、現在位置と、所定時間後の目標移動量とに基づいて決定される目標位置に対し、
その時点で前記アームが保持している第2関節角度θ2と第3関節角度θ3との和が一定となることを拘束条件として、前記アームの先端を前記目標位置に移動させるために必要な、前記走行軸上における前記所定時間当たりの移動量を計算させることを特徴とするコンピュータプログラム。
【請求項6】
前記走行軸上における前記所定時間当たりの移動量に基づいて移動速度を求めさせ、
前記移動速度が上限速度を超える場合には、上記拘束条件を解除して前記移動速度を上限速度に置き換えさせ、
両速度の差に応じた移動量を前記走行軸上の座標値より減じて前記目標位置を修正させることを特徴とする請求項5記載のコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−260010(P2006−260010A)
【公開日】平成18年9月28日(2006.9.28)
【国際特許分類】
【出願番号】特願2005−75026(P2005−75026)
【出願日】平成17年3月16日(2005.3.16)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】