(57)【特許請求の範囲】
【請求項１】
サーボモータを使用して多軸のロボットを駆動し、前記ロボットの先端に付加した把持装置によってワークを把持して上方向に移動させた後前記ロボットを旋回させて前記ワークを水平方向に移動させ、旋回動作終了後ワークを下方向に移動させワークを離す一連のハンドリング動作を行うロボットの制御装置において、
前記サーボモータを制御するための制御手段と、
無負荷時の値を基準とした制御量と負荷重量の関係を記憶しておく対応関係記憶手段と、
前記ハンドリング動作中に前記把持装置で前記ワークを把持して上方向に動作させた際に、前記ワークの重量もしくはイナーシャのワーク情報を実時間で推定する負荷推定計算手段と、
該負荷推定計算手段で計算されたワーク情報を基に前記上方向動作以後の旋回動作に最適な加減速定数を決定する最適動作定数決定手段と、
該決定された加減速定数を使用して前記サーボ制御手段に払い出す指令を作成する指令作成手段と、を有することを特徴とするロボットの制御装置。
【請求項２】
前記負荷推定計算手段では、前記サーボモータへのトルク指令値もしくは電流値を監視し、前記ワーク情報を推定計算することを特徴とする請求項１記載のロボットの制御装置。
【請求項３】
前記負荷推定計算手段では、速度ループの積分項を監視し、前記ワーク情報を推定計算することを特徴とする請求項１記載のロボットの制御装置。
【請求項４】
前記負荷推定計算手段では、オブザーバの外乱推定値を監視し、前記ワーク情報を推定計算することを特徴とする請求項１記載のロボットの制御装置。
【請求項５】
前記ロボットの作業プログラム中に、推定計算を行わせるための命令を記述することを特徴とする請求項１から４のいずれか１項に記載のロボットの制御装置。
【請求項６】
前記ロボットの作業プログラム中に、最適動作定数を変更するための命令を記述することを特徴とする請求項１から５のいずれか１項に記載のロボットの制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーボモータを使用して多軸のロボットを駆動する装置の制御に関し、特に、ハンドリング用途などでロボット先端のハンドが把持したワークの重量もしくはイナーシャを推定し、作業時間短縮のために加減速等を変更するロボットの制御に関する。
【０００２】
【従来の技術】
ロボットを最短時間で動作させる時、加減速定数を負荷に応じて変更する方法が良く用いられる。以下に特開平４−３０２０３号公報「ロボットの加減速時定数制御方式」をもとに従来の技術を説明する。
まず、ブロックの移動量から、到達速度を求める。次に到達速度よりサーボモータの速度−トルク曲線から出力トルクＴout を求める。この速度−トルク曲線は予め、速度に比例する粘性損失が引かれているものとする。その出力トルクＴｏｕｔから予め計算及び測定で求めた摩擦トルクと重力トルクからなる静負荷トルクＴw を減じる（式（１））ことにより、負荷を加速するために必要な加速トルクＴａが得られる。この加速トルクを、その時のサーボモータにかかるイナーシャＩで除算（式（２））する事によって、加減速定数ａを決定する。
Ｔａ＝Ｔout −Ｔｗ      …（１）
ａ  ＝Ｔａ／Ｉ          …（２）
ところが、
（従来Ａ）従来の技術では、予め計算や測定でロボット自身およびハンド等のイナーシャＩ１は求めることができるが、ハンドが把持するワーク分のイナーシャＩ２が分からないため、ワークを把持したときの全体のイナーシャＩ（＝Ｉ１＋Ｉ２）は正確に分からず、Ｉ２を最大負荷のイナーシャに設定してＩを求め、そのイナーシャから加減速を決定する方法が用いられていた。そのため、ハンドがワークを把持したときも、把持していないときも、同じ加減速であり、また、複数のワークが流れてくるときも、ワークの重量に関わらず、常に加減速一定（最大負荷が付いたと考えて計算したもの）で動作し、軽いワークを把持したときや、無負荷（ワークを把持していない）時は、使用可能なトルクを最大限有効に使用しておらず、結果として作業時間が短縮できないという問題があった。
この問題を解決するために、
（従来Ｂ）トルクを有効に使い作業時間を短縮したい場合は、複数のワークを一台のロボットでハンドリングする際に、ワーク重量のデータを外部装置からロボット制御装置に送り、その値から動作軸にかかる負荷イナーシャを計算し、加減速を決定する方法が取られていた。図８に（従来Ｂ）の方法の構成図を示す。図８中８７はワークの重量情報を８００のロボットの制御装置に送る外部装置であり、８５は８７からの信号を受けて、加減速定数を決定する最適動作定数決定手段であり、８１は８５で決定した加減速定数に応じて８２への指令を作る指令作成手段であり、８２は８１からの指令に従って８６のサーボモータを制御する制御手段である。
【０００３】
【発明が解決するための課題】
ところが、（従来Ａ）の技術では、軽いワークを把持したときや、無負荷（ワークを把持していない）時は、使用可能なトルクを最大限有効に使用しておらず、結果として作業時間が短縮できないという問題があり、（従来Ｂ）の技術では、ロボットの制御装置以外に、ワーク情報をロボットの制御装置に出力する外部装置を用意する必要があり、また、ロボットの制御装置側にもＩ／Ｏ信号を受け取る手段が必要になる。そのため、システムのコストが高くなるという問題があった。かつ、システムが複雑かつ煩雑になるという問題があった。
そこで、本発明は、これらの課題を解決することを目的とする。
【０００４】
【課題を解決するための手段】
上記問題を解決するために、サーボモータを使用して多軸のロボットを駆動し、前記ロボットの先端に付加した把持装置によってワークを把持して上方向に移動させた後前記ロボットを旋回させて前記ワークを水平方向に移動させ、旋回動作終了後ワークを下方向に移動させワークを離す一連のハンドリング動作を行うロボットの制御装置において、前記サーボモータを制御するための制御手段と、無負荷時の値を基準とした制御量と負荷重量の関係を記憶しておく対応関係記憶手段と、ハンドリング中に前記把持装置で前記ワークを把持して上方向に動作させた際に、前記ワークの重量もしくはイナーシャのワーク情報を実時間で推定する負荷推定計算手段と、該負荷推定計算手段で計算されたワーク情報を基に前記上方向動作以後の旋回動作に最適な加減速定数を決定する最適動作定数決定手段と、該決定された加減速定数を使用して前記サーボ制御手段に払い出す指令を作成する指令作成手段とを備えることによって前記、目的を達成するものである。また、前記負荷推定計算手段では、前記サーボモータへのトルク指令値もしくは電流値を監視し、前記ワーク情報を推定計算することを特徴とする。また、前記負荷推定計算手段では、速度ループの積分項を監視し、前記ワーク情報を推定計算することを特徴とする。また、前記負荷推定計算手段では、オブザーバの外乱推定値を監視し、前記ワーク情報を推定計算することを特徴とする。また、前記ロボットの作業プログラム中に、推定計算を行わせるための命令を記述することを特徴とする。また、前記ロボットの作業プログラム中に、最適動作定数を変更するための命令を記述することを特徴とする。
【０００５】
【発明の実施の形態】
以下に、本発明の実施例を図に基づいて説明する。
図１は、本発明の構成を説明するブロック図である。
図１中、６はロボットアームを駆動するサーボモータであり、２は６のサーボモータを制御する制御手段である。４は無負荷時の制御量の値を基準とした制御量と負荷重量の対応関係を予め、実測または、計算したものを記憶しておく対応関係記憶手段であり、３は２の制御手段の内部の制御量と４の対応関係からワークの重量を推定する負荷推定計算手段である。５は３の負荷推定計算手段で推定された、ワークの重量をもとに最適動作定数（本実施例では加減速定数）を決定する最適動作定数決定手段である。１は予め設定してある加減速定数の値を、５の最適動作定数決定手段で決定された加減速定数の値に変更し、指令を作成し直す指令作成手段である。また、１００はロボットの制御装置であり、本方式の処理は、この制御装置のみで達成できる。一般に、ロボットアームを駆動するサーボモータ６の制御手段２には位置の比例制御と速度の比例、積分制御がよく使われる。
【０００６】
図２に一般的にハンドリングを行う際の作業動作フローチャートの一実施例を示す。以下の説明では、ロボットの作業は単なる、
上げ動作→旋回動作→下げ動作
に単純化して説明する。また、図６は各ＳＴＥＰに対応する動作を説明する図である。
ＳＴＥＰ１：作業プログラムを開始する。
ＳＴＥＰ２：水平方向の旋回軸が動作しワークの上方の位置にハンドを持っていく。
ＳＴＥＰ３：ワークを把持できる位置までハンドを下げる。
ＳＴＥＰ４：ハンドでワークを把持する。
ＳＴＥＰ５：ワークを把持したままハンドを上方に持ち上げる。
ＳＴＥＰ６：ワークを置く位置の上方まで旋回軸が動作する。
ＳＴＥＰ７：ワークを置く位置までハンドを下げる。
ＳＴＥＰ８：ワークを離す。
ＳＴＥＰ９：ハンドのみ上方に持ち上げる。
以上が一連のハンドリングの作業動作である。以後、ＳＴＥＰ１からＳＴＥＰ９の動作を繰り返すものとする。
【０００７】
次に、図３に本発明の実施例の作業動作を説明するフローチャートを示す。
ＳＴＥＰ１からＳＴＥＰ５までは従来の方法と同じである。ＳＴＥＰ５実行時に以下のＳＴＥＰ５−１からＳＴＥＰ５−３の処理を実行する。
ＳＴＥＰ５−１：ワークの重量を推定する。
ＳＴＥＰ５−２：ワークの重量の推定値をもとにＳＴＥＰ６の旋回軸動作の加減速定数を決定する。
ＳＴＥＰ５−３：決定された加減速定数をもとにＳＴＥＰ６の旋回軸の加減速
を変更し、指令を作成し直す。
その後、ＳＴＥＰ６からＳＴＥＰ９まで従来通り動作させる。ＳＴＥＰ９実行中にＳＴＥＰ５−１からＳＴＥＰ５−３と同様に、ＳＴＥＰ９−１からＳＴＥＰ９−３の処理を実行し、ＳＴＥＰ２の動作の加減速を変更する。
これにより、ワークを把持した時は、それに合わせて加減速時間が長くなり、ワークを把持していないときは、加減速時間を短くすることができる。また、一台のロボットで複数の種類のワークのハンドリングを行うような場合、各ワークによりワークの重量が異なるが、この場合も、把持したワークの重量により加減速時間が変わることによって、ロボットの性能を常に最大限有効に使用し、最短時間で作業を行うことが可能になる。
以下に、ＳＴＥＰ５−１およびＳＴＥＰ９−１で実際に負荷推定計算を行う方法を説明する。
【０００８】
図４に鉛直動作軸の上方向動作時（ＳＴＥＰ５、ＳＴＥＰ９）のトルク指令値の波形を示す。上から、ワーク重量大、ワーク重量中、ワーク無し時のトルク波形である。図中、点線で囲った区間のトルク指令値を積算したＴｉｎｔをワークを把持していないときのトルク指令の同区間の積算値Ｔｎｏｎで減じると、ワークの重量分のトルク指令積算値Ｔｕｐが得られる。
Ｔｕｐ＝Ｔｉｎｔ−Ｔｎｏｎ …（３）
このＴｕｐの大きさにより、重量Ｍｇを計算するための表（図９）もしくは例えば式（４）のような関数を持っておきＭｇの値を算出する。図９の表では、Ｔｕｐ１に対応する重量がＭｇ１、Ｔｕｐ２に対応する重量がＭｇ２ということになる。
Ｍｇ＝β＊Ｔｕｐ＋γ …（４）
（β、γは定数）
上記は請求項２に記載した方法であるが、請求項３および請求項４の場合も、速度ループの積分項と負荷重量の関係、または、オブザーバの外乱推定値と負荷重量の関係の対応した表または関数を対応関係記憶手段に記憶しておくことにより、同様にＭｇを求めることができる。
【０００９】
次に、ＳＴＥＰ５−２とＳＴＥＰ９−２で加減速定数αを決定する方法を説明する。
ロボット自身のイナーシャをＩｒ、ハンドのイナーシャをＩｈとする。
ここで、上で求めたワーク重量の推定値Ｍｇと、加減速を変更する軸（ここでは旋回軸）の回転中心からハンドで把持したワークの重心までの距離Ｌを使って、ワーク分のイナーシャＩｗを求める。
Ｉｗ＝Ｍｇ＊Ｌ2         …（５）
旋回軸にかかるイナーシャの総和Ｉは式（６）で表される。
Ｉ＝Ｉｒ＋Ｉｈ＋Ｉｗ    …（６）
このＩと、速度−トルク曲線から求めた加減速に使用できる最大のトルクＴａｃを使用すると、最大加減速定数αは
α＝Ｔａｃ／Ｉ          …（７）
で求まる。
【００１０】
次に、ＳＴＥＰ５−３とＳＴＥＰ９−３でサーボモータへの速度指令を作成する方法を説明する。
加減速定数αと移動距離Ｄと教示速度Ｖから速度指令Ｖｒｅｆ（ｔ）を作成する。速度の指令は図５に示すような台形指令として考える。横軸が時間で縦軸が速度であるので、移動距離は台形の面積で表される。速度０から速度Ｖまで立ち上がる時間をｔαとすると
ｔα＝Ｖ／α            …（８）
で求めることができる。
加速後一定速度Ｖで動作する時間をｔｃとすると、これらの変数の関係は
Ｄ＝Ｖ＊（ｔα＋ｔｃ）  …（９）
ｔｃ＝Ｄ／Ｖ−ｔα      …（１０）
となる。
よって、各時間毎の指令速度Ｖｒｅｆ（ｔ）は、以下のように求まる。
（１）０＜ｔ＜ｔαの時  Ｖｒｅｆ（ｔ）＝ｔ＊α  …（１１）
（２）ｔα＜ｔ＜ｔα＋ｔｃの時  Ｖｒｅｆ（ｔ）＝Ｖ  …（１２）
（３）ｔα＋ｔｃ＜ｔ＜２＊ｔα＋ｔｃの時  Ｖｒｅｆ（ｔ）  ＝  Ｖ−（ｔ−ｔα−ｔｃ）＊α    …（１３）
このように、ＳＴＥＰ５−２とＳＴＥＰ９−２で決定された加減速定数αを使うことによって、速度指令Ｖｒｅｆ（ｔ）を作成することができる。
以上が、本発明を実現する方法である。なお、ここでは、ハンドリング動作として、ロボットの作業を単なる、上げ動作→旋回動作→下げ動作に単純化して説明したが、実際には、上げ動作と旋回動作は合成された運動になる場合がある。この場合も本実施例の方式をそのまま適用することによりワーク情報の推定が可能である。
【００１１】
次に請求項５記載の方法について説明する。ロボットに動作を教示し、実行するためには作業プログラムが作成される。作業プログラムは、特定のプログラム言語によって記述されている。請求項６記載の方法は、そのプログラム言語の命令の一つとして、前記ＳＴＥＰ５−１、９−１からＳＴＥＰ５−３、９−３までの処理を実行させる命令を持っておき、その命令の入った作業プログラムを実行するだけで、上記、各ＳＴＥＰでの一連の処理を自動的に実行するものである。
【００１２】
また、請求項６では、作業プログラム中に加減速を変えるための処理を実行させる命令を持っておき、前記ＳＴＥＰ６およびＳＴＥＰ２に、その命令を書き込んだ作業プログラムを実行するだけで、自動的に、計算された加減速に変更してＳＴＥＰ２およびＳＴＥＰ６を動作させるものである。図７は本発明を実行するロボット制御装置の概略のブロック図である。ロボット制御装置７００にはプロセッサボード７０１があり、プロセッサボード７０１にはプロセッサ７０１ａ、ＲＯＭ７０１ｂ、ＲＡＭ７０１ｃ及び不揮発性メモリ７０１ｄ、７０１ｅがある。プロセッサ７０１ａはＲＯＭ７０１ｂに従って、ロボット制御装置７００全体を制御する。ＲＡＭ７０１ｃには各種のデータが格納されている。不揮発性メモリ７０１ｄ、７０１ｅには、ロボット７０４の動作プログラムや本発明に係わる最短時間制御のためのプログラムがＲＯＭ７０１ｂからロードされている。ＳＴＥＰ５−１から５−３とＳＴＥＰ９−１から９−３に示した、ワーク情報推定から加減速変更のための各計算は、プロセッサ７０１ａが不揮発性メモリ７０１ｄ内のプログラムを読みとって実行するソフトウェアによる機能である。プロセッサボード７０１はバス７０５に結合されている。ディジタルサーボ制御回路７０２はバス７０５に結合され、プロセッサボード７０１からの指令によって、サーボアンプ７０３を経由して、サーボモータ７１１、７１２、７１３、７１４、７１５及び７１６を駆動する。これらのサーボモータはロボット７０４に内蔵され、ロボット７０４の各軸を動作させる。シリアルポート７０６はバス７０５に結合され、教示操作盤７０８やその他のＲＳ２３２Ｃ機器７０９と接続されている。教示操作盤７０８はロボットへの教示点入力に使用される。また、Ｉ／Ｏ７０７をへて外部機器７１０とのデータ及び信号等の入出力が行われる。
【００１３】
【発明の効果】
以上述べたように、本発明によれば、ワークを把持した時は、加減速時間が長くなり、ワークを把持していないときは、加減速時間を短くすることができる。また、一台のロボットで複数の種類のワークのハンドリングを行うような場合、各ワークによりワークの重量が異なるが、この場合も、把持したワークの重量により加減速時間を変更することができる。これらにより、トルクを最大限有効に使用することが可能になり、ロボットの性能を最大限有効に使用し、最短時間で作業を行うことができるという効果がある。
また、従来のように、ワークの重量情報を外部装置からＩ／Ｏ信号として与えられることなく先端負荷の情報を自動的にロボット自身が推定するため、外部装置やＩ／Ｏ入出力手段といった周辺装置を構築する必要が無く、システムのコストダウンを行うことが可能になるだけでなく、システムが複雑かつ煩雑になるという問題を解決できるという効果がある。
【図面の簡単な説明】
【図１】本発明の構成を示す構成図
【図２】従来のハンドリング動作を示すフローチャート
【図３】本発明の方法を示すフローチャート
【図４】本発明の推定計算に使われるトルク波形
【図５】指令作成手段で作成される速度指令の波形
【図６】本発明の動作を説明する図
【図７】本発明を実現するためのハード構成図
【図８】従来の構成を示す構成図
【図９】トルク積算値とワーク重量のグラフ
【符号の説明】
１ 指令作成手段
２ 制御手段
３ 負荷推定計算手段
４ 対応関係記憶手段
５ 最適動作定数決定手段
６ サーボモータ
１００ ロボットの制御装置
【図１】
0004016305.tif 000002
【図２】
0004016305.tif 000003
【図３】
0004016305.tif 000004
【図４】
0004016305.tif 000005
【図５】
0004016305.tif 000006
【図６】
0004016305.tif 000007
【図７】
0004016305.tif 000008
【図８】
0004016305.tif 000009
【図９】
0004016305.tif 000010