説明

ロボット制御装置

【課題】逆システムで演算のために用いられるイナーシャ値を、曲率半径の小さな弧状軌跡部分でも、軌跡精度を高くすることができるような値に定める。
【解決手段】曲率半径の小さな弧状軌跡に沿ってロボットが動作するとき、当該弧状軌跡を対象に、各アームのサンプリングタイム毎のイナーシャJa_nと、次のサンプリングタイムまでの移動距離d_nとを乗じて、その積の和を、各サンプリングタイムから次のサンプリングタイムまでの移動距離の総和で除した値を平均イナーシャ値Ja_aveとし、この平均イナーシャ値を用いて逆システムで修正目標位置を演算するようにしたので、軌跡精度が向上する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御装置に係り、特に、複数の各関節についてのイナーシャ値を用いてロボットの移動軌跡を制御する場合において、そのイナーシャ値の取得に関するものである。
【背景技術】
【0002】
ロボットは、動作プログラムにより定められる移動軌跡に沿って移動するように制御される。特に、移動軌跡精度が作業精度に影響を及ぼす場合には、ロボットの移動軌跡は動作プログラムによって定められる軌跡からずれないように、高い軌跡精度を得ることが求められる。しかしながら、ロボットは、入力信号に対して遅れて動作する遅れ系であるため、精度の良い移動制御をすることが難しくなってくる。
このような動作遅れを防止するためのシステムとして、例えば特許文献1にみられるような逆システムがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平5−143106号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に開示された逆システムを用いれば、入力信号に対して遅れの少ない制御を行うことができるので、ロボットを動作プログラムによる移動軌跡に沿って精度良く移動させることができる。
しかしながら、逆システムで演算のために用いられるアームのイナーシャ値は、通常、一連の動作の中での平均的な姿勢でのイナーシャ値が使用されるので、特に、曲率半径の小さな弧状軌跡部分では、遅れが現れやすくなって動作プログラムにより定められる移動軌跡から外れてしまい、直線や曲率半径の大きな移動軌跡部分に比べて軌跡精度が低下する。
【0005】
本発明は上記の事情に鑑みてなされたもので、その目的は、曲率半径の小さな弧状軌跡部分でも、軌跡精度を高くすることができるイナーシャ値を求めようとするもので、そのためのロボット制御装置におけるイナーシャ取得方法およびロボット制御装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明では、複数のアームを順次関節により連結して構成されたロボットを制御対象とするロボット制御装置は、複数の各アームの目標位置が入力されると、各アームについて、所定の演算式により目標位置を修正した修正目標位置を演算する逆システム演算手段と、この逆システム演算手段から修正目標位置が与えられると、各アームを駆動するアクチュエータを制御して各アームが修正目標位置に移動するように制御する制御手段とを備えている。
【0007】
そして、請求項1および3の発明では、特定の弧状軌跡に沿ってアーム先端が移動するとき、当該弧状軌跡を対象に、各サンプリング位置でのイナーシャと、次のサンプリング位置までのアーム先端の移動距離とを乗じてイナーシャ・距離積を求め、このイナーシャ・距離積の総和を、イナーシャ・距離積を求めたサンプリング位置相互間におけるアーム先端の移動距離の総和で除して平均イナーシャ値を求め、この平均イナーシャ値を用いて逆システム演算手段で目標位置から修正目標位置を演算するようにしたので、軌跡精度が向上する。
【0008】
請求項2および4の発明では、隣どうしのサンプリング地点における2つの速度ベクトルのなす角度が所定角度以上となる範囲を、平均イナーシャ値を求めるための前記特定の弧状軌跡とするので、ユーザが面倒な弧状軌跡の指定操作を行う必要がない。
【図面の簡単な説明】
【0009】
【図1】本発明の一実施形態おけるロボットの電気的構成を示すブロック図
【図2】ロボットのトルク伝達を示すブロック線図
【図3】アームのイナーシャを求めるためのフローチャート
【図4】サンプリング地点でのアーム先端の位置と速度を示す図
【図5】回転関節の軸を中心とするアームイナーシャの計算を説明するための図
【図6】異なる姿勢でのアームイナーシャの違いを説明するための図
【図7】一つのアームの重心位置と重心位置を中心とするイナーシャの説明図
【図8】モータからアームへのトルク伝達を説明するための図
【図9】ロボット装置を示す斜視図
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態を図面に基づいて説明する。図9には、産業用ロボット装置1が示されている。この産業用ロボット装置1は、ロボット2と、このロボット2を制御するロボット制御装置3と、このロボット制御装置3に接続されティーチング作業を行なう際に使用するティーチングペンダント(操作手段)4とから構成されている。このティーチングペンダント4は、各種の操作部4aおよび表示器4bを備えている。
【0011】
ロボット2は、例えば6軸の垂直多関節型ロボット1からなるもので、ベース5と、このベース5に水平方向に旋回可能に支持されたショルダ部6と、このショルダ部6に上下方向に旋回可能に支持された下アーム7と、この下アーム7に上下方向に旋回可能に支持された第1の上アーム8と、この第1の上アーム8の先端部に捻り回転可能に支持された第2の上アーム9と、この第2の上アーム9に上下方向に回転可能に支持された手首10と、この手首10に回転(捻り動作)可能に支持されたフランジ11とから構成されている。
【0012】
ベース5、ショルダ部6、下アーム7、第1の上アーム8、第2の上アーム9、手首10、フランジ11は、ロボットにおけるアームとして機能し、ベース5を除く各アームは、下段のアームに対し関節、例えば回転関節によって順次回転可能に連結されている。なお、アーム先端であるフランジ11には、ワークを把持するハンドや、視覚検査のために用いるカメラなどのエンドエフェクタ(図示せず)が取り付けられるようになっている。
【0013】
上述のアームとアームとを連結する回転関節は、図8に示すように、前段のアームに軸12を軸受(図示せず)により回転可能に支持する周知の回転軸支持構造からなるもので、後段のアームが軸12と一体的に回転するように構成される。そして、例えば前段のアーム側に固定されたモータ(アクチュエータ)13の回転軸13aが減速装置14の入力軸14aに連結されていると共に、減速装置14の出力軸14bが軸12に連結されている。これにより、モータ13の回転軸13aの回転が減速装置14により減速されて軸12に伝達され、次段のアームが回転関節の回転中心軸線(軸12の中心軸線)Lcを中心にして回転するようになっている。
【0014】
ここで、第1のアームであるベース5と第2のアームであるショルダ部6との間を連結する回転関節の回転中心軸を第1軸Lc−1、第2のアームであるショルダ部6と第3のアームである下アーム7との間を連結する回転関節の回転中心軸を第2軸Lc−2、第3のアームである下アーム7と第4のアームである第1の上アーム8との間を連結する回転関節の回転中心軸を第3軸Lc−3、第4のアームである第1の上アーム8と第5のアームである第2の上アーム9との間を連結する回転関節の回転中心軸を第4軸Lc−4、第5のアームである第2の上アーム9と第6のアームである手首10との間を連結する回転関節の回転中心軸を第5軸Lc−5、第6のアームである手首10と第7のアームであるフランジ11との間を連結する回転関節の回転中心軸を第6軸Lc−6と称することとする。
【0015】
ロボット2の動作を制御するロボット制御装置3は、図1に示すように、CPU(制御手段)15と、駆動回路16と、位置検出回路17、逆システム演算回路(逆システム演算手段)18とを備えている。コンピュータシステムの主要部を構成するCPU15には、ロボット2全体のシステムプログラムや動作プログラムを作成するためのロボット言語などを記憶するROM19及びロボット2の動作プログラムなどを記憶するRAM20が接続されていると共に、前記ティーチングペンダント4が接続されている。なお、モータ13は、各アーム6〜11について一対一の関係で設けられているが、図1では、モータ13は1台だけ図示した。
【0016】
位置検出回路14には、各アーム6〜11の駆動源である各モータ13の回転軸13aに連結されたロータリエンコーダ(回転位置検出手段)21が接続されている。この位置検出回路14は、ロータリエンコーダ21から入力される検出信号に基づいてモータ13の回転位置を検出し、その回転位置情報をCPU15および駆動回路16に与える。駆動回路16は、逆システム演算回路18から与えられる位置指令と、位置検出回路17から与えられる回転位置とを比較し、その差に応じたトルクを発生するようにモータ13に供給する電流を制御する。
【0017】
CPU15は、位置検出回路14から与えられる各モータ13の回転位置情報から、ベース5に対するショルダ部6の回転角度、ショルダ部6に対する下アーム7の旋回角度、下アーム7に対する第1の上アーム8の旋回角度、第1の上アーム8に対する第2の上アーム9の捻り回転角度、第2の上アーム9に対する手首10の捻り旋回角度、手首10に対するフランジ11の捻り回転角度を検出する。ちなみに、上記の各アーム6〜11の回転(旋回)角度は、ロータリエンコーダ21などのモータ角度検出手段からの検出値を角度に変換することによって求める。
【0018】
ベース5および各アーム6〜11には、3次元の座標が規定されている。このうち、床面に据え付けられるベース5の座標系は、不動の座標系としてロボット2の基準座標とされるものであり、ベース5の下端中心を原点としている。アーム6〜11の座標系は、各アーム6〜11の先端部に規定されており、各回転関節の回転により基準座標上での位置と姿勢が変化する。ROM19には、基準座標上におけるショルダ部6の座標位置、ショルダ部6の座標上における下アーム7の座標位置、下アーム7の座標上における第1の上アーム8の座標位置、第1の上アーム8の座標上における第2の上アーム9の座標位置、第2の上アーム9の座標上における手首10の座標位置、手首10の座標上におけるフランジ11の座標位置、および各アーム6〜11の長さが記憶されている。そして、CPU15は、各アーム6〜11の座標の位置と向きとを、各アーム6〜11の回転位置情報と各アーム6〜11の長さ情報と各アーム6〜11の座標の相互位置関係から、座標変換の計算機能により基準座標上での位置と姿勢とに変換して認識する。なお、座標の姿勢は、各アーム6〜11のX,Y,Zの各座標軸上における単位ベクトルの基準座標上での向きで表される。
【0019】
また、逆に、CPU15は、動作プログラムからアーム先端であるフランジ11の座標の基準座標上での位置と姿勢が与えられると、各アーム6〜11のモータ13の回転位置を制御することにより、各アーム6〜11の座標のロボット座標上での位置と姿勢を制御してフランジ11が動作プログラム通りの位置と姿勢を取るように各アーム6〜11を動作させる。つまり、各アーム6〜11の位置と姿勢に対して各アーム6〜11のモータ13の回転位置が一義的に定まるので、CPU15は、各アーム6〜11の位置と姿勢に対する各アーム6〜11のモータ13の回転位置を目標位置として出力することにより、各アーム6〜11が動作プログラムから与えられる位置と姿勢を取るように制御するものである。
【0020】
さて、逆システム演算回路18は、アーム先端を動作プログラムから与えられる位置に制御するために、制御対象である各アーム6〜11の目標位置(座標の位置で示される。)に対応した各アーム6〜11のモータ13の目標位置が入力されたとき、駆動回路16から各アーム6〜11の先端(座標が規定された位置)までの伝達関数が1となるような位置指令を出力する。そのために、逆システム演算回路18は、駆動回路16から各アーム6〜11のモータ13を経てアーム先端(フランジ11)に至るまでの伝達関数の逆数を演算式として有し、各アーム6〜11のモータ13の目標位置が入力されたとき、この目標位置を上記演算式により修正して当該修正後の目標位置(修正目標位置)を位置指令として駆動回路16に与えるものである。すると、駆動回路16から各アーム6〜11のモータ13からフランジ11に至るまでの各伝達経路が、それぞれ伝達関数を「1」とするような制御システムとなるので、軌跡精度の高い制御を行うことができるものである。
【0021】
上記の逆システム演算回路18が有する演算式を求めるには、まず、駆動回路16から各アーム6〜11のモータ13を経てフランジ11に至るまでの制御システム全体の伝達関数G(s)を求めなくてはならない。図2は、駆動回路16から各アーム6〜11のモータ13を経てフランジ11に至るまでの複数の制御システムのうち、一つのアームについての制御システムをブロック線図に示したものである。この制御システムのうち、サーボ駆動系は、ロータリエンコーダ21と、ロータリエンコーダ21の検出信号を処理してモータ13の現在位置を取得するための位置検出回路17と、修正目標位置とモータ13の現在位置12との差に応じた電流をモータ13に供給するパワーアンプを備えた駆動回路16とからなるが、このサーボ駆動系は、設計者が実装する部分であるから、その伝達関数は既知である。しかし、各モータ13からアーム先端(フランジ11)に至るまでのトルク伝達経路の伝達関数はアームの速度や姿勢によって変化するので未知である。
【0022】
このトルク伝達経路の伝達関数を、図2を参照して求める。図2において、サーボ系によりモータ13に電流が供給されると、モータ13はその電流に応じたトルクTiを発生する。このトルクTiにより、モータ13の回転軸13aは、Ti/(Jm・s+dm)の回転速度で回転する。この回転軸13aの回転は、減速装置14により1/gに減速されて当該減速装置14の出力軸14bからアームへと伝えられる。なお、Jmはモータ13のイナーシャ、sはラプラス演算子、dmはモータの粘性、gは減速装置の減速比である。
【0023】
モータ13の回転速度は、サーボ系に速度フィードバックとして与えられ、サーボアンポは、指令されたモータ13の位置と、フィードバックされた回転速度を微分して得られるモータ13の現在位置とを比較してその差分に応じた電流値をモータ13に供給する。
減速装置14の出力軸14bの回転速度は、後述のようにして取得されるフランジ11の現在の回転速度を加減算した後に積分(1/s)される。この積分値は、出力軸14bにより直接回転されるアームからフランジ11までの全てのアームを一体化された1本のアームと仮定した場合において、出力軸14bからフランジ11までの捩れ角Δθに相当する。そして、この捩れ角Δθに上記一体化された1本のアームのばね定数Ksを乗じて当該出力軸14bからアーム側へ伝達されるトルクToを求める。この伝達トルクToは、モータ13の回転軸13aに対し、上記一体化された1本のアームを回転させる際の反力として作用するが、回転軸13aには減速装置14の減速比1/g倍となって伝えられる。
【0024】
減速装置14の出力軸14bの出力トルクToによって上記一体化された1本のアームが回転される。このときの上記一体化された1本のアーム(フランジ11)の回転速度は、To/(Ja・s+da)によって求められる。ここで、Jaは上記一体化された1本のアームのイナーシャ、sはラプラス演算子、daは上記一体化された1本のアームの粘性である。このようにして求められたフランジ11の回転速度は、減速装置14の出力軸14bからフランジ11までの捩れ角Δθを求める際に、前述したように減速装置14の出力軸14bの回転速度と加減算される。そして、上記のフランジ11の回転速度は積分(1/s)され、この積分値がフランジ11の現在位置として求まる。
【0025】
以上のようなモータ13のトルクの伝達経路において、その伝達関数を決定する要素のうち、モータ13のイナーシャJmおよび粘性係数dm、減速装置14の減速比g、上記一体化された1本のアームのばね定数Ksは、一定値で既知ある。しかしながら、上記一体化された1本のアームとしてみたときのイナーシャJaは、ロボット2の動作毎に変化する。例えば、ショルダ部6と下アーム7との間を連結する回転関節の回転中心軸である第2軸Lc−2を中心とするアームのイナーシャJaは、第2軸i−2より先にある全てのアーム(下アーム7、第1の上アーム8、第2の上アーム9、手首10、フランジ11)を一体化された1本のアームと仮定して求めるが、ロボット2が図6(a)に示す姿勢にあるときと、同図(b)に示す姿勢にあるときとでは、異なる値を示す。このため、モータ13のトルクの伝達経路の伝達関数をより正しく求めようとすると、各回転関節の回転中心について、当該回転中心よりもフランジ11側に存する全てのアームを一体化された1本のアームと仮定して、当該1本のアームのイナーシャを時々刻々変化するロボット2の姿勢毎に求める必要がある。
【0026】
アームのイナーシャを時々刻々変化するロボット2の姿勢毎に求めることは、可能である。しかしながら、そのような時々刻々変化するイナーシャ値を使用することで、修正位置指令が不連続となってしまい、滑らかな動きができなかったり、モータの限界を超えた指令値が出ることでモータが停止してしまったりするという不具合を生ずる。
そこで本実施形態では、ロボット2の一連の動作において、フランジ11の移動軌跡のうち、所定の曲率半径以下の円弧軌跡で移動する際のイナーシャの平均を求め、これを用いてトルク伝達経路の伝達関数を演算する構成とした。各回転関節の軸Lcを回転中心とするアームのイナーシャJaを求める演算を容易にするために、各アームについて、質量Mと、重心の位置(各アームの座標上の位置)Pgと、重心を回転中心とするイナーシャJcとが記憶手段としてのROM19に記憶されている。
【0027】
図7に示すように、重心位置Pがアーム自身の回転中心Lcからrだけ離れた位置にあるアームのイナーシャJは、次の(1)式で求めることができる。
J=Mr+Jc……(1)
但し、Mはアームの質量である。
【0028】
したがって、回転関節が指定されたとき、その回転関節の先にアームが1つしか存在しない場合、上記指定された回転関節の軸を回転中心とするアームのイナーシャは、上記(1)式により求めることができる。また、回転関節が指定されたとき、その回転関節の先にアームが複数存在する場合、上記指定された回転関節の軸を回転中心とするそれら複数のアームのイナーシャは、上記(1)式により求めた各アームのイナーシャの総和として求めることができる。
【0029】
この場合において、図5(a)に示すように、軸Lc−1を回転中心とするアームのイナーシャJaは、当該軸Lc−1の回転により動かされる全てのアーム、つまり軸Lc−1の回転によって直接回転されるアームを含めて当該アームよりもフランジ11側に存する全てのアーム、即ちショルダ部6、下アーム7、第1の上アーム8、第2の上アーム9、手首10、フランジ11を1本のアームと仮定して、上記(1)式により各アーム6〜11についてのイナーシャを演算し、それらイナーシャの総和をJaとする。なお、軸Lc−1と各アーム6〜11の重心までの距離をr6〜r11として図5(a)に示した。
【0030】
また、図5(b)に示すように、軸Lc−2を回転中心とするアームのイナーシャJaは、当該軸Lc−2の回転により直接動かされるアームを含めて当該アームよりもフランジ11側に存する全てのアーム、即ち下アーム7、第1の上アーム8、第2の上アーム9、手首10、フランジ11を1本のアームと仮定して、上記(1)式により各アーム7〜11についてのイナーシャを演算し、それらイナーシャの総和をJaとする。なお、軸Lc−2と各アーム7〜11の重心までの距離をr7〜r11として図5(b)に示した。
【0031】
更に、図5(c)に示すように、軸Lc−5を回転中心とするアームのイナーシャJaは、当該軸Lc−5よりもフランジ11側に存する全てのアーム、即ち手首10、フランジ11を1本のアームと仮定して、上記(1)式により各アーム10,11についてのイナーシャを演算し、それらイナーシャの総和をJaとする。なお、軸Lc−5と各アーム7〜11の重心までの距離をr10、r11として図5(c)に示した。
ここで、各アーム6〜11において、前述の重心Pgを回転中心とするイナーシャJcは、求めたい回転軸回りのイナーシャに変換する必要があるが、これは、慣性モーメントテンソルと回転行列を用いて求めたい回転軸回りのイナーシャに変換する。
【0032】
一方、ロボット2の作業動作は、ティーチングペンダント4により教示され動作プログラムとしてRAM20に記憶されている。ティーチングペンダント4によるロボット2の作業動作の教示は、アーム先端であるフランジ11(フランジ11の座標の原点)が通過する点を間欠的に指定することによって行われる。そして、CPU15は、実際にロボット2の作業動作を制御する場合、教示された通過点の間を補間してフランジ11が滑らかな円弧を描いて通過点を通るように各アーム6〜11のモータ13を制御する。
【0033】
この制御時、CPU15は、動作開始から一定の短時間が経過する毎にサンプリングタイムを迎え、予め設定された速度パターンに従って各サンプリングタイム時点でのフランジ11の速度を決定し、その速度を積分することによってフランジ11の移動距離を演算し、そして、動作プログラムからフランジ11の移動軌跡を求め、各サンプリングタイムにおける移動軌跡上のフランジ11の位置(サンプリング位置)と速度(速度ベクトル)を求める。フランジ11のサンプリング位置と速度を求めると、CPU15は、座標変換によってフランジ11以外の各アーム6〜10の基準座標上でのサンプリング位置と速度とを求める。CPU15は、サンプリングタイム毎に、フランジ11および他のアーム6〜10が上記のようにして求めた位置と速度を取るように各モータ13を制御し、これによってフランジ11が補間された移動軌跡上を移動するようになるものである。
【0034】
次に、モータ13のトルクの伝達経路の伝達関数を求めるために、アームのイナーシャを求める手順を図3のフローチャートをも参照しながら説明する。このトルク伝達経路の伝達関数は、ロボット2に実際の作業動作を行わせる前に求めておくものである。図3に示すように、まず、ユーザは、ロボット2が停止していることを確認した上で(図3のステップS1)、ティーチングペンダント4の操作部4aを操作し、ロボット制御装置3にアームイナーシャを求める動作を開始させる。すると、逆システム演算回路18の演算部として機能するCPU15は、動作プログラムから、一連の動作の開始点から終了点までの移動軌跡を取得し、実際の動作時におけると同様にしてサンプリングタイム毎の各アーム6〜11のロボット座標上でのサンプリング位置および速度ベクトルを求めてRAM20に記憶させる(ステップS2)。このとき、サンプル数はNであったとする。
【0035】
次に、CPU15は、カウンタを初期化し(ステップS3)、続いて当該カウンタをインクリメントする(ステップS4)。そして、カウンタのカウント数nに示された第n回目のサンプリングタイムにおける各アーム6〜11の速度ベクトルと、次の第(n+1)回目のサンプリングタイムにおける各アーム6〜11の速度ベクトルをRAM20から取得し、第n回目のサンプリングタイムにおける各アーム6〜11の速度ベクトルと第(n+1)回目のサンプリングタイムにおける各アーム6〜11の速度ベクトルのなす角度θ_nを求める(ステップS5:速度ベクトル取得手段、角度演算手段)。
【0036】
この2つの速度ベクトルのなす角度θ_nを求める方法の一つを例示すると、2つの速度ベクトルの外積および内積からsinθ_nおよびcosθ_nを求め(下記(2)式、(3)式)、これらsinθ_nおよびcosθ_nをAtan2関数(座標から逆正接であるアークタンジェントを求める関数)のx座標値およびy座標値に代入し、θ_n(ラジアン)を求める(下記(4)式)、というものである。このようにAtan2関数を使用してθを求めた場合には、内積或は外積だけからθを求める場合に比べ、θが0°または90°に近い角度のときに、僅かなθの変化によるsinθまたはcosθの値の変化が少な過ぎまたは大き過ぎて、求めたθの誤差が大きくなるといった不具合を解消することができる。
【0037】
【数1】

【0038】
θ_n=Atan2(sinθ_n,cosθ_n)……(4)
θ_nを求めると、次に、CPU15は、θ_nが予め設定された値ε以上であるか否かを判断する(ステップS6:指定手段)。θ_nがε以上である場合、CPU15は、各回転関節の軸を回転中心とするアームのイナーシャJa_nおよび第1回目のサンプリングタイムのサンプリング位置と第2回目のサンプリングタイムのサンプリング位置をRAM20から取得し、これら2位置間の距離d_nを演算し、これらイナーシャJa_nおよびd_nを記憶手段としてのRAM20に記憶する。
【0039】
続いて、CPU15は、カウンタをインクリメントし、上述したと同様にして、今回のサンプリングタイムと次回のサンプリングタイムの2つの速度ベクトルのなす角度θがε以上である場合、各回転関節の軸Lc−1〜Lc−6を中心とするアームのイナーシャJa_nと今回のサンプリングタイムのサンプリング位置nと次回のサンプリングタイムのサンプリング位置(n+1)の距離d_nを演算してRAM18に記憶する(ステップS7;イナーシャ取得手段、移動距離取得手段)、という動作をnがNとなるまで繰り返す。
【0040】
つまり、フランジ11のサンプリング位置が図4に黒点にて示すものであって、速度ベクトルVnとVn+1、Vn+1とVn+2、Vn+2とVn+3がε以上であったとすると、その間のサンプリング位置n〜n+3のイナーシャJa_n、Ja_n+1、Ja_n+2と移動距離d_n、d_n+1、d_n+2とを取得して記憶するのである。
【0041】
カウンタのカウント数がNになる(ステップS8で「YES」)と、CPU15は、RAM20に記憶したJa_nからJa_aveを算出する(ステップS9)。このJa_aveの算出は、次の(5)式による。つまり、Ja_nに移動距離d_nを乗じてイナーシャ・距離積を求め(イナーシャ・距離積取得手段)、このイナーシャ・距離積の総和を、イナーシャ・距離積を求めたサンプリング位置間におけるフランジ11の移動距離の総和で除して平均イナーシャ値Ja_aveを求める(平均イナーシャ取得手段)ものである。
【0042】
【数2】

【0043】
以上のようにして求めたJa_aveを用いて前述のモータ13のトルク伝達経路の伝達関数を求め、サーボ駆動系を含むロボット全体の伝達関数G(s)を求める。そして、伝達関数G(s)の逆数1/G(s)を逆システム演算回路18の演算式とする。
【0044】
ここで、G(s)を求める場合に用いるアームのイナーシャJa−aveは、上述のように、隣り合う2つのサンプリング位置における2つの速度ベクトルのなす角度がε以上である円弧軌跡範囲を対象にして求める。この隣り合う2つのサンプリング位置における2つの速度ベクトルのなす角度がε以上であることは、フランジ11の移動軌跡が所定の曲率半径以下の円弧状軌跡であることを意味する。そして、このときのイナーシャJa_nに移動距離を掛け、その積の総和を、所定の曲率半径以下の円弧状軌跡で移動した距離の総和で除した値Ja_aveは、フランジ11が所定の曲率半径以下の円弧状軌跡を移動するときのイナーシャの単なる平均であることのみならず、これに重み付けを行っていることを意味する。この場合、イナーシャにサンプリングタイム間の距離を掛けた積は、アームの「仕事」の意味を持つので、アームがサンプリング位置でそのまま速度ベクトルの示す方向に移動するエネルギーの大きさの意味を持っている。
【0045】
このようなJa_aveを用いて求めた伝達関数G(s)を求め、この伝達関数G(s)の逆数1/G(s)を逆システム演算回路18の演算式とする本実施形態によれば、ユーザがティーチングペンダント17を用いた教示した通過点をより正確に通る移動軌跡が得られる。そして、アーム先端が動作遅れを起こしやすい曲線の動作軌跡部分、中でも所定の曲率半径以下の曲線の動作軌跡部分におけるアームのイナーシャを用いてG(s)を求めているので、直線の動作軌跡部分は勿論のこと、曲率半径の小さな動作軌跡部分でも、動作遅れを極力防止しながらアーム6〜10の動作を制御でき、高い軌跡精度の制御を行うことが可能となる。
【0046】
なお、本発明は上記し且つ図面に示す実施形態に限定されるものではなく、以下のような拡張或は変更が可能である。
Ja−aveを求める場合に用いるフランジ11の移動距離は、各サンプリング位置の1つ前のサンプリング位置から各サンプリング位置までの移動距離を用いるようにしても良い。このようにしても、フランジ11の移動距離は、実質的に、各サンプリング位置から次のサンプリング位置までの移動距離を求めたこととなる。
Ja−aveを求める場合の円弧状動作軌跡部分は、上述の実施形態のようにCPU15が自動的に設定するものに限られず、ユーザが指定するようにしても良い。つまり、動作軌跡をティーチングペンダント4の表示器4bに表示し、この表示された動作軌跡から曲率半径の小さい円弧動作軌跡部分を指定して当該指定された円弧動作軌跡を対象にJa−aveを求めるようにしても良い。
フランジ11に取り付けられるエンドエフェクタをイナーシャを回転関節の軸を中心とするアームのイナーシャに加えるようにしても良い。
ロボットとしては、垂直多関節型のものに限られない。
【符号の説明】
【0047】
図面中、1は産業用ロボット、2はロボット、3はロボット制御装置、4はティーチングペンダント、5はベース、6〜11はアーム、13はモータ、14は減速装置、15はCPU(制御手段、イナーシャ取得手段、移動距離取得手段、イナーシャ・距離積取得手段、平均イナーシャ取得手段、速度ベクトル取得手段、角度演算手段、指定手段)、16は駆動回路、17は位置検出回路、18は逆システム演算回路(逆システム演算手段)、21はロータリエンコーダを示す。

【特許請求の範囲】
【請求項1】
複数のアームを順次関節により連結して構成されたロボットを制御対象とし、
前記複数の各アームの目標位置が入力されると、前記各アームについて、所定の演算式により前記目標位置を修正した修正目標位置を演算する逆システム演算手段と、前記逆システム演算手段から前記修正目標位置が与えられると、前記各アームを駆動するアクチュエータを制御して前記各アームが前記修正目標位置に移動するように制御する制御手段とを備えたロボット制御装置において、
前記逆システム演算手段は、前記各アームの前記修正目標位置を演算するための前記各アームについての前記演算式中に、当該アームの前記関節を回転中心とするイナーシャをパラメータとして有し、
前記各アームについての前記演算式中の前記イナーシャは、エンドエフェクタを取り付けるためのアーム先端が、動作プログラムにより定められる移動軌跡に沿って、同じく前記動作プログラムにより定められる速度で移動するとしたとき、前記アーム先端の前記移動軌跡のうち、特定の弧状軌跡を対象にして、所定の時間間隔をもってサンプリングされるサンプリング位置毎に、前記関節を回転中心とする前記アームのイナーシャであって、当該関節よりも前記アーム先端側に存在する全てのアームのイナーシャを取得し、この取得した各サンプリング位置での前記イナーシャに、当該サンプリング位置から次のサンプリング位置までの前記アーム先端の移動距離を乗じてイナーシャ・距離積を求め、そのイナーシャ・距離積の総和を、前記イナーシャ・距離積を求めた前記サンプリング位置相互間における前記アーム先端の移動距離の総和で除して平均イナーシャ値を求め、この平均イナーシャ値を前記修正目標位置を計算するための前記演算式のイナーシャとして用いる方法
によりイナーシャ取得を行うことを特徴とするロボット制御装置。
【請求項2】
前記特定の弧状軌跡を自動指定するために、前記アーム先端が動作プログラムにより定められる軌跡を、同じく前記動作プログラムにより定められる速度で移動するとしたとき、隣どうしのサンプリング位置における2つの速度ベクトルの外積および内積からそれら2つの速度ベクトルのなす角度θの正弦値sinθおよび余弦値cosθを求め、それら正弦値sinθおよび余弦値cosθをAtan2関数のx座標値およびy座標値に代入してθを求め、このθが予め定められた所定角度以上である範囲を、前記弧状軌跡に定めることを特徴とする請求項1記載のロボット制御装置。
【請求項3】
複数のアームを順次関節により連結して構成されたロボットを制御対象とし、
前記複数の各アームの目標位置が入力されると、前記各アームについて、所定の演算式により前記目標位置を修正した修正目標位置を演算する逆システム演算手段と、前記逆システム演算手段から前記修正目標位置が与えられると、前記各アームを駆動するアクチュエータを制御して前記各アームが前記修正目標位置に移動するように制御する制御手段とを備えたロボット制御装置において、
前記逆システム演算手段は、前記各アームの前記修正目標位置を演算するための前記各アームについての前記演算式中に、当該アームの前記関節を回転中心とするイナーシャをパラメータとして有し、
前記各アームの前記関節を回転中心とするイナーシャを取得するために、
エンドエフェクタを取り付けるためのアーム先端が、動作プログラムにより定められる移動軌跡に沿って、同じく前記動作プログラムにより定められる速度で移動するとしたとき、前記アーム先端の前記移動軌跡のうち、特定の弧状軌跡を対象にして、所定の時間間隔をもってサンプリングされるサンプリング位置毎に、前記関節を回転中心とする前記アームのイナーシャであって、当該関節よりも前記アーム先端側に存在する全てのアームのイナーシャを取得するイナーシャ取得手段と、
前記各サンプリング位置から次のサンプリング位置までの前記アーム先端の移動距離を求める移動距離取得手段と、
前記各サンプリング位置での前記イナーシャに、当該サンプリング位置から次のサンプリング位置までの前記アーム先端の移動距離を乗じてイナーシャ・距離積を求めるイナーシャ・距離積取得手段と、
前記イナーシャ・距離積の総和を、前記イナーシャ・距離積を求めた前記サンプリング位置相互間における前記アーム先端の移動距離の総和で除して平均イナーシャ値を求める平均イナーシャ取得手段と、を備え、
前記逆システム演算手段は、前記平均イナーシャ値を、前記修正目標位置を計算するための前記演算式のイナーシャとして用いることを特徴とするロボット制御装置。
【請求項4】
更に、前記特定の弧状軌跡を自動指定するために、前記アーム先端が動作プログラムにより定められる軌跡を、同じく前記動作プログラムにより定められる速度で移動するとしたとき、隣どうしのサンプリング位置における2つの速度ベクトルを取得する速度ベクトル取得手段と、
前記速度ベクトル取得手段が取得した前記2つの速度ベクトルの外積および内積からそれら2つの速度ベクトルのなす角度θの正弦値sinθおよび余弦値cosθを求め、それら正弦値sinθおよび余弦値cosθをAtan2関数のx座標値およびy座標値に代入してθを求める角度演算手段と、
前記角度演算手段により求められた前記θが予め定められた所定角度以上である範囲を、前記弧状軌跡に定める指定手段と、
を備えることを特徴とする請求項3記載のロボット制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−674(P2011−674A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−145332(P2009−145332)
【出願日】平成21年6月18日(2009.6.18)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】