(57)【要約】【課題】タクトタイムを大きく損なうことなく、ロボットの耐久性の向上を図ることが可能なロボット制御装置を提供する。【解決手段】ロボット制御装置３００は、関節Ｊ１〜Ｊ６に電動モータ２１１〜２１６からの駆動力を伝達し、指定された軌道Ｐ１〜Ｐ４を通るように駆動されるロボットアーム２００を、各電動モータ２１１〜２１６に指令する指令値に基づき制御する。このロボットアーム２００の可動範囲を複数の空間に分割し、それぞれの空間において駆動力の伝達要素にかかる負荷トルクが許容範囲内となるような各関節の加加速度の制約値を含む制約条件を予め演算しておき、記録部に記憶しておく。演算部が、ロボットアーム２００の軌道に基づき、記録部に記録された制約条件を不等式制約とした最適化問題を解くことで電動モータ２１１〜２１６に対する指令値を生成する。【選択図】図１
2014014876.tif 000002
【特許請求の範囲】
【請求項１】
複数の関節に伝達要素を介してそれぞれに対応する駆動源からの駆動力を伝達し、指定された軌道を通るように駆動されるロボットアームを、各前記駆動源に指令する指令値に基づき制御するロボット制御装置において、
前記ロボットアームの可動範囲を複数の空間に分割し、それぞれの空間において前記伝達要素にかかる負荷トルクが許容範囲内となるような前記各関節の加加速度の制約値を含む制約条件を記録した記録部と、
前記ロボットアームの軌道に基づき、前記記録部に記録された制約条件を不等式制約とした最適化問題を解くことで前記指令値を生成する演算部と、を備えた、
ことを特徴とするロボット制御装置。
【請求項２】
前記演算部は、前記指令値に基づき前記ロボットアームを制御した際の前記空間ごとの動力学モデルを演算する動作シミュレータを実行し得ると共に、前記動作シミュレータにより演算した動力学モデルより求まる前記伝達要素にかかる負荷トルクから前記制約条件を演算し、
前記記録部は、前記制約条件を、前記動作シミュレータにより演算した制約条件に更新する、
ことを特徴とする請求項１記載のロボット制御装置。
【請求項３】
前記演算部は、前記指令値に基づき前記ロボットアームを制御した際に実際に前記伝達要素にかかる負荷トルクを求め、その実際に前記伝達要素にかかる負荷トルクから前記制約条件を演算し、
前記記録部は、前記制約条件を、前記実際に前記伝達要素にかかる負荷トルクから演算した制約条件に更新する、
ことを特徴とする請求項１記載のロボット制御装置。
【請求項４】
前記ロボットアームと、
前記ロボットアームを制御する請求項１乃至３のいずれか１項に記載のロボット制御装置と、を備えた、
ことを特徴とするロボット装置。
【請求項５】
複数の関節に伝達要素を介してそれぞれに対応する駆動源からの駆動力を伝達し、指定された軌道を通るように駆動されるロボットアームを、各前記駆動源に指令する指令値に基づき制御するロボット制御方法において、
記録部に、前記ロボットアームの可動範囲を複数の空間に分割し、それぞれの空間において前記伝達要素にかかる負荷トルクが許容範囲内となるような前記各関節の加加速度の制約値を含む制約条件を記録する制約条件記録工程と、
演算部が、前記ロボットアームの軌道に基づき、前記記録部に記録された制約条件を不等式制約とした最適化問題を解くことで前記指令値を生成する指令値生成工程と、を備えた、
ことを特徴とするロボット制御方法。
【請求項６】
コンピュータに請求項５に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを記録した、コンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指定された軌道を通るように駆動されるロボットアームを、複数の関節のそれぞれに対応した駆動源に指令する指令値に基づき制御するロボット制御装置及びロボット制御方法に関する。
【背景技術】
【０００２】
近年、工場で組立等を行う産業用ロボットは、生産速度の向上や複雑な動作への対応が求められ、動作の高速化が求められており、ロボットの動作を高速化するためには、関節駆動の加減速を急峻にする必要がある。一方、ロボットにおいては、駆動源（アクチュエータ）から関節まで駆動力を伝達する伝達要素として、減速機、ベルト、ベアリングなどを備えているが、特に減速機などは、一般的に低剛性のものが多く、急峻な加減速を行うと振動を生じ易い。この振動が伝達要素に作用する際、それら伝達要素に過負荷がかかることになると、耐久性として好ましくない。
【０００３】
そこで、ロボットの動作中に伝達要素にかかる負荷を外乱オブザーバで推定し、閾値と比較することで過負荷を検知し、過負荷を検知した際にはロボットを保護する処理を行うものが提案されている（特許文献１参照）。
【０００４】
また、ロボットにおいて振動特性から振動の大きさを算出し、振動の大きさを評価関数に含めて軌道を最適化し、その軌道を用いてロボットを制御するものが提案されている（特許文献２）。これにより、ロボットの動作中に発生する振動の低減化を図ることが可能となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許４３３５２８６号公報
【特許文献２】特開２０１１−１６７８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１のものは、ロボットの保護を図ることが可能であるが、ロボットの動作中に過負荷を検知した際に、ロボットを保護する処理に移る必要があり、タクトタイムに影響してしまうという問題がある。
【０００７】
また、上記特許文献２のものは、ロボットの動作中に発生する振動の低減化を図ることができるが、振動が低減されたからといって、伝達要素に作用する負荷トルクが低減されるものとは限らない。言い換えると、例えば伝達要素の剛性が高いほど、振動は低減されるため、特許文献２の演算手法であると高速化されることになるが、伝達要素が脆性であると、その高速化に耐えられない虞がある。つまり、振動を低減する軌道を演算しても、伝達要素にかかる負荷トルクが低減されるとは限らず、振動の低減によってロボットの耐久性が向上するとは限らないという問題がある。
【０００８】
そこで本発明は、タクトタイムを大きく損なうことなく、ロボットの耐久性の向上を図ることが可能なロボット制御装置及びロボット制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明は、複数の関節に伝達要素を介してそれぞれに対応する駆動源からの駆動力を伝達し、指定された軌道を通るように駆動されるロボットアームを、各前記駆動源に指令する指令値に基づき制御するロボット制御装置において、前記ロボットアームの可動範囲を複数の空間に分割し、それぞれの空間において前記伝達要素にかかる負荷トルクが許容範囲内となるような前記各関節の加加速度の制約値を含む制約条件を記録した記録部と、前記ロボットアームの軌道に基づき、前記記録部に記録された制約条件を不等式制約とした最適化問題を解くことで前記指令値を生成する演算部と、を備えたことを特徴とする。
【００１０】
また、本発明は、複数の関節に伝達要素を介してそれぞれに対応する駆動源からの駆動力を伝達し、指定された軌道を通るように駆動されるロボットアームを、各前記駆動源に指令する指令値に基づき制御するロボット制御方法において、記録部に、前記ロボットアームの可動範囲を複数の空間に分割し、それぞれの空間において前記伝達要素にかかる負荷トルクが許容範囲内となるような前記各関節の加加速度の制約値を含む制約条件を記録する制約条件記録工程と、演算部が、前記ロボットアームの軌道に基づき、前記記録部に記録された制約条件を不等式制約とした最適化問題を解くことで前記指令値を生成する指令値生成工程と、を備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によると、記録部に伝達要素にかかる負荷トルクが許容範囲内となるような制約条件が記録されており、ロボットアームの軌道に基づき演算部が記録された制約条件から指令値を生成する。これにより、その指令値で制御されるロボットアームにおいて、動作中に、伝達要素にかかる負荷トルクが許容範囲を超えることの防止が図られ、動作中にロボットアームを保護する処理を行うことを不要にでき、タクトタイムを大きく損なうことの防止が図られる。また、動作中に、伝達要素にかかる負荷トルクが許容範囲を超えることの防止が図られるので、ロボットアームの耐久性の向上を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明に係るロボット装置の概略構成を示す説明図。
【図２】ロボット制御装置の構成を示すブロック図。
【図３】第１の実施の形態に係る制御部の構成を示すブロック図。
【図４】ロボットアームの可動範囲と分割した空間との関係を示す図。
【図５】最適化演算部による指令値の演算処理を示すフローチャート。
【図６】本ロボット制御装置によりロボットを制御して一動作を実行した際における各値を示す図で、（ａ）は指令値を示す図、（ｂ）は指令加速度を示す図、（ｃ）は指令加加速度を示す図、（ｄ）は慣性モーメントを示す図。
【図７】本ロボット制御装置によりロボットを制御して一動作を実行した際における関節トルクを示す図。
【図８】ロボット制御装置により加加速度制約値を一定値としてロボットを制御して一動作を実行した際における各値を示す図で、（ａ）は指令値を示す図、（ｂ）は指令加速度を示す図、（ｃ）は指令加加速度を示す図、（ｄ）は慣性モーメントを示す図。
【図９】ロボット制御装置により加加速度制約値を一定値としてロボットを制御して一動作を実行した際における関節トルクを示す図。
【図１０】第２の実施の形態に係る制御部の構成を示すブロック図。
【図１１】分割した空間にそれぞれ教示点を設定した場合を示す図。
【図１２】図１１の教示点を始点と終点に設定した場合の動作パターンを示す表。
【図１３】第２の実施の形態に係る指令値の演算制御を示すフローチャート。
【図１４】第３の実施の形態に係る制御部の構成を示すブロック図。
【図１５】第３の実施の形態に係る加加速度制約値の学習制御を示すフローチャート。
【発明を実施するための形態】
【００１３】
＜第１の実施の形態＞
以下、本発明に係る第１の実施の形態を、図１乃至図９に沿って説明する。まず、ロボット装置の概略構成について説明する。図１に示すように、ロボット装置１００は、多関節ロボットとしてのロボットアーム２００と、ロボットアーム２００を制御するロボット制御装置３００と、を備えている。また、ロボット装置１００は、ロボット制御装置３００に複数の教示点のデータを送信する教示装置としてのティーチングペンダント４００を備えている。ティーチングペンダント４００は、人が操作するものであり、ロボットアーム２００やロボット制御装置３００の動作（軌道）を指定するのに用いる。
【００１４】
ロボットアーム２００は、本実施の形態では、例えば６関節ロボットである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６まわりにそれぞれ回転駆動する複数（６つ）のアクチュエータ２０１〜２０６を有している。ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に手先（ロボットアームの先端）を向けることができる。一般に、ロボットアーム２００の位置と姿勢は、座標系で表現することができる。図１中のＴｏはロボットアーム２００の台座に固定した座標系を表し、Ｔｅはロボットアーム２００の手先に固定した座標系を表す。
【００１５】
本実施形態では、各アクチュエータ２０１〜２０６は、電動モータ２１１〜２１６と電動モータ２１１〜２１６に接続された減速機２２１〜２２６とからなる。各減速機２２１〜２２６は、不図示のベルトやベアリング等を介してそれぞれの関節Ｊ１〜Ｊ６で駆動するフレームに接続されている。本明細書中では、これら減速機２２１〜２２６、ベルトやベアリング等を駆動源（即ち電動モータ２１１〜２１６）の駆動力を伝達する「伝達要素」と定義する。なお、各アクチュエータ２０１〜２０６の構成は、これに限定するものではなく、例えば人工筋肉等であってもよい。
【００１６】
本第１の実施の形態では、各関節Ｊ１〜Ｊ６が回転関節である場合について説明する。この場合、「関節の位置」とは、関節の角度を意味する。なお、各関節が直動関節の場合であってよい。その場合、「関節の位置」とは、直動関節の位置である。同様に、それらの時間微分についても「関節の速度」、「関節の加速度」、「関節の加加速度」という。
【００１７】
ロボットアーム２００は、更に、各アクチュエータ２０１〜２０６の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御装置２３０を有している。サーボ制御装置２３０は、入力した指令値に基づき、各関節Ｊ１〜Ｊ６の位置が指令値に追従するよう、各電動モータ２１１〜２１６に電流指令を出力し、各電動モータ２１１〜２１６の動作を制御する。なお、本実施の形態ではサーボ制御装置２３０を１つの制御装置で構成しているものを説明しているが、各電動モータ２１１〜２１６にそれぞれ対応したサーボ制御装置を備えていてもよい。
【００１８】
ロボット制御装置３００は、ティーチングペンダント４００から複数の教示点（教示点列）の入力指示（つまり軌道の指定）を受ける。ロボット制御装置３００は、ロボットアーム２００の各関節Ｊ１〜Ｊ６が、複数の教示点を順次辿って動作するよう、教示点に基づき、サーボ制御装置２３０に所定時間間隔で出力する位置指令を生成し、所定時間間隔で位置指令を出力する。
【００１９】
教示点は、各関節（６つの関節）Ｊ１〜Ｊ６の教示位置をベクトル成分として含むベクトル（教示点ベクトル）である。そして、ロボット制御装置３００において最終的に求められる位置指令は、各関節（６つの関節）Ｊ１〜Ｊ６の目標位置をベクトル成分として含むベクトルである。本実施の形態では、教示点と位置指令とは、点数は異なるが、次元（単位）は同一である。
【００２０】
つまり、ロボット制御装置３００は、入力した教示点からＣＰ軌道の計算をして軌道に沿った多数の位置指令を生成し、これら位置指令を所定時間間隔でサーボ制御装置２３０に出力するものである。
【００２１】
その際、ロボット制御装置３００は、詳しくは後述するように、与えられた教示点列によって定まる軌道に対し、軌道上の通過速度を、ロボットアーム２００の各関節Ｊ１〜Ｊ６の速度、加速度、トルク等の制約条件を越えない範囲で調整する最適化処理を行う。
【００２２】
なお、図１では、４つの教示点ｐ１，ｐ２，ｐ３，ｐ４を模式的に図示している。ロボットアーム２００の動作は教示点で決まる軌道に沿って動く。
【００２３】
図２は、ロボット制御装置３００の構成を示すブロック図である。ロボット制御装置３００は、演算部としてのＣＰＵ３０１と、記録部としてのＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ（ハードディスクドライブ）３０４、記録ディスクドライブ３０５と、各種のインタフェース３０６〜３０９と、を備えたコンピュータである。
【００２４】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３０６〜３０９が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＣＰＵ３０１を動作させるためのプログラム３３０が格納されている。このプログラム３３０は、詳しくは後述するＣＰＵ３０１の各部（図３参照）に各種演算処理を実行させるためのプログラムである。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果などを一時的に記憶する記憶部である。ＨＤＤ３０４は、演算処理結果や各種のデータを記憶すると共に、予め演算されたマップとしての制約条件を記憶するための記憶部である。
【００２５】
ティーチングペンダント４００はインタフェース３０６に接続されており、ＣＰＵ３０１はインタフェース３０６及びバス３１０を介してティーチングペンダント４００からの教示点のデータの入力を受ける。
【００２６】
ロボットアーム２００のサーボ制御装置２３０は、インタフェース３０９に接続されており、ＣＰＵ３０１は、位置指令のデータを所定時間間隔でバス３１０及びインタフェース３０９を介してサーボ制御装置２３０に出力する。
【００２７】
インタフェース３０７には、モニタ３２１が接続されており、モニタ３２１には、各種画像が表示される。インタフェース３０８は、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２が接続可能に構成されている。記録ディスクドライブ３０５は、記録ディスク（記録媒体）３３１に記録された各種データやプログラム等を読み出すことができる。なお、本発明に係るプログラムが記録される記録媒体としては、記録ディスク３３１だけに限らず、外部記憶装置３２２などの不揮発性メモリや外付けＨＤＤ等も含まれる。
【００２８】
ついで、第１の実施の形態におけるＣＰＵ（演算部）３０１１の各機能を図３に沿って説明する。本第１の実施の形態では、上記プログラム３３０によってＣＰＵ３０１１が、教示点列取得部３０１ａ、最適化演算部３０１ｂ、加加速度制約値記録部３０１ｃ、指令値生成部３０１ｄとして機能する。
【００２９】
上記教示点列取得部３０１ａは、ティーチングペンダント４００から指示された教示点や、教示点間を補完することで生成した教示点の点列である教示点列の情報を取得する。なお、この教示点列の情報は、上記６つの関節毎に設定された教示点の集合体でもあり、つまりロボットアーム２００の軌道のデータと言える。
【００３０】
上記加加速度制約値記録部３０１ｃは、教示点列取得部３０１ａにより取得された教示点に基づきＨＤＤ３０４に記録された制約条件から加加速度制約値を読み出す。このＨＨＤ３０４に記録されている加加速度制約値を含む制約条件は、予め演算されてマップのように格納されているものである。
【００３１】
制約条件を予め演算する際は、ロボットアーム２００の可動範囲を複数の空間に分割し、それぞれの空間において上述した伝達要素（減速機、ベルト、ベアリングなど）にかかる負荷トルクが許容範囲内となるような各関節の加加速度制約値を演算する。例えばロボットアーム２００の可動範囲を４つの空間に分割した場合を一例として説明する。
【００３２】
図４に示すように、ロボットアーム２００の可動範囲を、４つの空間１３０６Ａ、１３０６Ｂ、１３０６Ｃ、１３０６Ｄに分割する。この４つの空間１３０６Ａ、１３０６Ｂ、１３０６Ｃ、１３０６Ｄについて、ロボットアーム２００の姿勢に基づく慣性モーメント（イナーシャ）を含めて、伝達要素に発生する負荷トルクが許容範囲内となる加加速度制約値を演算する。
【００３３】
ここで、ロボットアーム２００に生じる慣性モーメントは、例えばロボットアーム２００を折り曲げて移動する場合は小さく、ロボットアーム２００を延ばして移動する場合は大きくなる。従って、ロボットアーム２００の姿勢に基づき詳細に演算する。
【００３４】
一方、伝達要素に発生する負荷トルクが許容範囲内であるか否かの演算は、伝達要素の各部品の剛性、脆性、弾性などによって演算できるが、製品として負荷トルクに対する耐久性の値（例えばカタログ値）が分かるものは、それを用いることもできる。
【００３５】
このように予め４つの空間１３０６Ａ、１３０６Ｂ、１３０６Ｃ、１３０６Ｄにおける制約条件としての加加速度制約値を演算すると、それをＨＤＤ３０４に記録する（制約条件記録工程）。これにより、ＨＤＤ３０４には、それぞれの関節Ｊ１〜Ｊ６がそれぞれの空間を通過する際の加加速度制約値が予め設定されていることになる。例えばロボットアーム２００の手先１３０１を教示点１３０７に移動する場合、空間１３０６Ｄから空間１３０６Ｂに移動するため、境界１３０８を境に各関節Ｊ１〜Ｊ６の加加速度制約値が切り替わることになる。なお、本例では、可動範囲を４つの空間に分割した場合を説明したが、勿論、空間の分割数が多いほど、より良好な制約条件が設定できることになる。
【００３６】
以上のように加加速度制約値記録部３０１ｃが教示点列に基づき各関節Ｊ１〜Ｊ６がそれぞれの空間を通過する際の加加速度制約値を取得する。すると、最適化演算部３０１ｂは、教示点列と加加速度制約値とに基づくロボットアーム２００の最適な指令値の演算を開始する。最適化演算部３０１ｂがこの最適な指令値を演算する際は、取得した加加速度制約値を不等式制約として最適化問題を解くことで、軌道の演算を行う。なお、最適化問題を解くという意味は、詳しくは後述するように、耐久性とタクトタイムとを満足するように追求した最適な収束値を求めるという意味である。
【００３７】
詳細には、図５に示すように、最適化演算部３０１ｂは、まず教示点列の各点ごとの通過時間ｔを設定する（Ｓ１１）。続いて、設定された通過時間に対し、各点の関節の位置（角度）θ、速度ｖ、加速度α、加加速度Δα、トルクＴを算出する（Ｓ１２）。なお、各点の関節の位置（角度）θ、速度ｖ、加速度α、加加速度Δαの値は、それぞれ全関節の値を縦に並べたベクトルで表わせる。また、関節のトルクＴについては、ロボットアーム２００の運動方程式に、関節の位置θ、速度ｖ、加速度αを代入することで算出できる。
【００３８】
続いて、加加速度Δαが制約条件を満足しているか否か、即ち、加加速度Δαの絶対値が、加加速度制約値記録部３０１ｃにより取得した加加速度制約値の絶対値よりも小さいか否か（不等式制約）を判定する（Ｓ１３）。制約条件を満足していない場合は（Ｓ１３のＮｏ）、上記教示点の通過時間ｔの調節を行い（Ｓ１４）、制約条件を満足するまで繰り返し演算を行う（即ち最適化問題を解く）。これにより、最終的に制約条件を満足し（Ｓ１３のＹｅｓ）、最短時間となる各関節（電動モータ２１１〜２１６）に対する指令値として求める（決定する）ことができる（Ｓ１５）。
【００３９】
そして、この決定した指令値を図４に示す指令値生成部３０１ｄに送り、それを受けた指令値生成部３０１ｄは、サーボ制御装置２３０（図２参照）に送信する指令値として生成する（指令値生成工程）。この指令値を各関節（電動モータ２１１〜２１６）に指令することで、ロボットアーム２００をティーチングペンダント４００で指示された軌道を通るように制御する。
【００４０】
このように最適化した指令値でロボットアーム２００を制御した際の効果を図６乃至図９に沿って検証する。図８及び図９に示す場合は、指令値を、加加速度制約値を全領域で固定値として算出し、ロボットアーム２００の１つの関節を所定の軌道を通るように駆動した場合の実験値の一例である。この際の指令値（関節の角度の値）は図８（ａ）で示すように変化する。また、この際の加速度αは図８（ｂ）に示すように変化し、加加速度は図８（ｃ）のように変化し、関節に生じる慣性モーメントは図８（ｄ）のように発生する。この際は、図９に示すように、関節の加速時に関節で発生するトルクが許容範囲ＡＲを越えてしまい、反対に関節の減速時に許容範囲ＡＲに対して余裕過多の状態となっていることが分かる。
【００４１】
続いて、本実施の形態に係るロボット制御装置３００で設定された指令値で、同様にロボットアーム２００の１つの関節を所定の軌道を通るように駆動した場合の実験値を、図６及び図７に示す。この際の指令値（関節の角度の値）は図６（ａ）で示すように変化する。また、この際の加速度αは図６（ｂ）に示すように変化し、加加速度は図６（ｃ）のように変化し、関節に生じる慣性モーメントは図６（ｄ）のように発生する。
【００４２】
即ち、図６（ｃ）に示すように、本実施の形態では、加加速度が関節の加速時に小さく、関節の減速時に大きい値になっていることが分かる。これは、予めＨＤＤ３０４に記録される制約条件にあって、慣性モーメントが大きい場合は加加速度制約値が小さくなり、慣性モーメントが小さい場合は加加速度制約値が大きく設定されたためである。これにより、図８及び図９と同じ軌道でロボットアーム２００を制御した場合であっても、図７に示すように、関節で発生するトルクが許容範囲ＡＲに納まっている（許容範囲内となっている）ことが分かる。特に、関節の加速時には指令加加速度が小さくなることで関節に生じる負荷トルクが抑えられ、減速時には許容範囲ＡＲ内で指令加加速度を大きくすることで減速時間が短くできている。
【００４３】
以上のように本ロボット制御装置３００によると、記録部としてのＨＤＤ３０４に伝達要素にかかる負荷トルクが許容範囲ＡＲ内となるような制約条件が記録されている。そして、ロボットアーム２００の軌道に基づき演算部としてのＣＰＵ３０１が記録された制約条件から指令値を生成する。これにより、その指令値で制御されるロボット装置１００において、動作中に、伝達要素にかかる負荷トルクが許容範囲ＡＲを超えることの防止が図られる。また、動作中にロボットアーム２００を保護する処理を行うことを不要にでき、タクトタイムを大きく損なうことの防止が図られる。また、動作中に、伝達要素にかかる負荷トルクが許容範囲ＡＲを超えることの防止が図られるので、ロボットアーム２００の耐久性の向上を図ることができる。そして、伝達要素にかかる負荷トルクが許容範囲ＡＲ内となる中で、最適化された指令値でロボットアーム２００が駆動制御されるので、耐久性を損なうことがない範囲でタクトタイムの最短化を図ることができる。
【００４４】
＜第２の実施の形態＞
ついで、上記第１の実施の形態を一部変更した第２の実施の形態について、図１０乃至図１３に沿って説明する。なお、本第２の実施の形態の説明においては、第１の実施の形態と同様の部分について、同符号を用いる等して、その説明を省略する。
【００４５】
本第２の実施の形態に係るロボット制御装置３００は、第１の実施の形態に比して、動力学モデルを用いた負荷トルクの演算に基づき、最適化演算部３０１ｂで演算した指令値が制約条件を満たすか否かをシミュレーションするように構成したものである。そして、動力学シミュレータ（動作シミュレータ）による動力学モデルを用いたシミュレーションの結果、その指令値でロボットアーム２００を駆動した際に制約条件を満たさない場合は、制約条件（加加速度制約値）を更新するように構成したものである。
【００４６】
詳細には、図１０に示すように、第２の実施の形態における演算部としてのＣＰＵ３０１２は、教示点列取得部３０１ａ、最適化演算部３０１ｂ、加加速度制約値記録部３０１ｃ、指令値生成部３０１ｄに加え、次の各部の機能を有する。即ち、ＣＰＵ３０１２においては、最適化演算部３０１ｂと指令値生成部３０１ｄとの間にあって、仮指令値生成部３０１ｅ、動力学シミュレータ部３０１ｆ、負荷トルク演算部３０１ｇ、条件成立判定部３０１ｈ、加加速度更新部３０１ｉとして機能する。
【００４７】
図１３に示すように、ロボット制御装置３００の演算制御が開始されると、まず、ティーチングペンダント４００により教示点列が指定される（Ｓ２１）。ついで、最適化演算部３０１ｂは、第１の実施の形態と同様に最適化問題を解き（図５のＳ１１〜Ｓ１５）、指令値を求める。そして、仮指令値生成部３０１ｅは、最適化演算部３０１ｂで演算された指令値を、仮指令値として生成する（Ｓ２２）。
【００４８】
続いて、動力学シミュレータ部３０１ｆは、仮指令値を、ロボットアームモデルを含む動力学シミュレータに入力し、負荷トルク演算部３０１ｇは、動力学シミュレータの演算結果から、伝達要素の負荷トルクを演算して求める（Ｓ２３）。
【００４９】
ここで、動力学シミュレータの演算（シミュレーション）について図１１及び図１２に沿って説明する。図１１に示すように、ロボットアーム２００の可動範囲を複数の空間（例えば４つ）に分割し、各空間１３０６Ａ，１３０６Ｂ，１３０６Ｃ，１３０６Ｄの中心点である点１３０２，１３０３，１３０４、１３０５を教示点に設定する。
【００５０】
一つ動作ですべての空間を移動することは不可能であるため、すべての空間に最適な加加速度制約値を設定するためには、複数の動作をシミュレーションする必要がある。即ち、これら中心点間を移動するすべての動作が実現できるよう、始点、終点を設定したのが図１２の表である。
【００５１】
例えば教示点１３０２から教示点１３０３に移動する際も、行き、帰りで伝達要素の負荷が異なる。そのため、例えば４つの空間に分割している場合、１２通りの動作の教示点列（軌道）を作成し、それぞれに対して仮指令値に基づく動力学シミュレーション計算を行うことで、各動作１〜１２の負荷トルクが演算できる。
【００５２】
以上のように動力学シミュレータ部３０１ｆにより動力学シミュレーション計算がなされ、シミュレーションされた負荷トルクが求まると、条件成立判定部３０１ｈが制約条件を満足しているか否かを判定する（Ｓ２４）。即ち、シミュレーションされた伝達要素の負荷トルクが許容値に収まっていない場合は（Ｓ２４のＮｏ）、伝達要素の負荷トルクが過大で耐久性への影響が懸念されるか、もしくは過小で動作時間が長いかのどちらかの場合である。
【００５３】
この場合は、加加速度更新部３０１ｉが加加速度制約値の変更（更新）を加加速度制約値記録部３０１ｃに指示し、ＨＤＤ３０４に記録されている教示点列に対応した加加速度制約値を修正する（Ｓ２５）。そして、ステップＳ２２〜Ｓ２４の演算処理を再度行い、加加速度制約値の修正が行われなくなるまで繰り返し計算を行う。なお、加加速度制約値の修正量は、動力学シミュレーションの計算結果を用いて決定することが可能である。この繰り返しの計算により、ロボットアーム２００がある動作を行う際に通過する空間の最適な加加速度制約値が求まることになる。
【００５４】
そして、シミュレーションされた伝達要素の負荷トルクが許容値に収まると（Ｓ２４のＹｅｓ）、その際の加加速度制約値のＨＤＤ３０４への保存を行う（Ｓ２６）。また、指令値生成部３０１ｄが、その際の仮指令値を指令値として決定（生成）して（Ｓ２７）、指令値の演算制御を終了する。
【００５５】
これにより、実際にロボットアーム２００が、動力学シミュレータの演算に基づき決定された指令値で動作されるため、動作中に、伝達要素にかかる負荷トルクが許容範囲ＡＲを超えることの防止の確実性が向上する。また、伝達要素にかかる負荷トルクが許容範囲ＡＲ内となる中で、動力学シミュレータで最適化された指令値でロボットアーム２００が駆動制御されるので、耐久性を損なうことがない範囲でタクトタイムの更なる最短化を図ることができる。
【００５６】
なお、これ以外の構成、作用、効果は、第１の実施の形態と同様であるので、その説明を省略する。
【００５７】
＜第３の実施の形態＞
ついで、上記第１の実施の形態を一部変更した第３の実施の形態について、図１４及び図１５に沿って説明する。なお、本第３の実施の形態の説明においては、第１の実施の形態と同様の部分について、同符号を用いる等して、その説明を省略する。
【００５８】
本第３の実施の形態に係るロボット制御装置３００は、第１の実施の形態に比して、実際にロボットアーム２００を駆動した際に発生したトルクを演算し、制約条件を達成しなかった際に制約条件を学習するように構成したものである。
【００５９】
詳細には、図１４に示すように、第３の実施の形態における演算部としてのＣＰＵ３０１３は、教示点列取得部３０１ａ、最適化演算部３０１ｂ、加加速度制約値記録部３０１ｃ、指令値生成部３０１ｄに加え、次の各部の機能を有する。即ち、ＣＰＵ３０１３においては、指令値生成部３０１ｄの後にあって、電動モータ制御値取得部３０１ｊ、発生トルク演算部３０１ｋ、条件達成判定部３０１ｍ、加加速度学習部３０１ｎとして機能する。
【００６０】
図１５に示すように、ロボット制御装置３００による学習制御が開始されると、まず、ティーチングペンダント４００により教示点列が指定される（Ｓ３１）。ついで、最適化演算部３０１ｂは、第１の実施の形態と同様に最適化問題を解き（図５のＳ１１〜Ｓ１５）、指令値を求める（Ｓ３２）。
【００６１】
続いて、ロボット制御装置３００は、その指令値をサーボ制御装置２３０に送信し、電動モータ２１１〜２１６を駆動制御して、ティーチングペンダント４００で指定された教示点列（軌道）を通過するようにロボットアーム２００を動作する。そして、その動作時における各伝達要素（減速機、ベルト、ベアリング等）の負荷トルクを演算する（Ｓ３３）。
【００６２】
具体的に伝達要素の負荷トルクを演算する際は、電動モータ制御値取得部３０１ｊが、サーボ制御装置２３０に送信した指令値に基づき、電動モータ２１１〜２１６に対する制御値（モータ出力やモータ角度）を取得する。そして、発生トルク演算部３０１ｋが、電動モータ２１１〜２１６に対する制御値から、各伝達要素に発生するトルクを演算し、そのトルクを負荷トルクとする。
【００６３】
このように発生トルク演算部３０１ｋにより実際にロボットアーム２００に発生した負荷トルクが求まると、条件達成判定部３０１ｍが制約条件を満足（達成）しているか否かを判定する（Ｓ３４）。即ち、実際に伝達要素に発生した負荷トルクが許容値に収まっていない場合は（Ｓ３４のＮｏ）、伝達要素の負荷トルクが過大で、この動作を繰り返し実行することで耐久性への影響が懸念されるか、もしくは過小で動作時間が長いかのどちらかの場合である。
【００６４】
この場合は、加加速度学習部３０１ｎが加加速度制約値の学習（更新）を加加速度制約値記録部３０１ｃに指示し、ＨＤＤ３０４に記録されている教示点列に対応した加加速度制約値を修正する（Ｓ３５）。なお、加加速度制約値の修正量は、発生トルク演算部３０１ｋが演算した発生トルクの計算結果を用いて決定することが可能である。同じロボットアーム２００の動作に対して、このような学習制御を繰り返し行うことにより、ロボットアーム２００がこの動作を行う際に通過する空間の最適な加加速度制約値が学習されていくことになる。
【００６５】
また、実際に伝達要素に発生した負荷トルクが許容値に収まっている場合は（Ｓ３４のＹｅｓ）、つまり前回の動作時における学習制御の結果が良好であるので、そのまま加加速度制約値を修正することなく、終了する。
【００６６】
以上のように、実際にロボットアーム２００が動作された際の負荷トルクで学習制御されるため、次回以降の動作中に、伝達要素にかかる負荷トルクが許容範囲ＡＲを超えることの防止を図ることができる。また、伝達要素にかかる負荷トルクが許容範囲ＡＲ内となる中で、学習制御により最適化された指令値でロボットアーム２００が駆動制御されるので、耐久性を損なうことがない範囲でタクトタイムの更なる最短化を図ることができる。
【００６７】
なお、これ以外の構成、作用、効果は、第１の実施の形態と同様であるので、その説明を省略する。
【００６８】
なお、以上説明した第１乃至第３の実施の形態では、空間毎における各関節の加加速度制約値を制約条件としたものを説明したが、これだけでなく、各関節の加速度制約値、各関節の速度制約値などを制約条件に加えることが考えられる。これにより、さらに最適な指令値を求めることが可能となる。
【００６９】
さらに、制約条件として、ワーク重量、移動距離、移動距離毎の動作方向に対する各関節の加加速度制約値、等を加えて設定することにより、さらに最適な指令値を求めることが考えられる。例えばワーク重量に関しては、ワーク重量を１ｋｇ、１．５ｋｇ、２ｋｇといったように設定し、動作パターンを３倍のパターンに増して演算することで、最適な空間や重量毎の加加速度制約値を求めることができる。
【００７０】
また、以上説明した第１乃至第３の実施の形態では、教示点列が各関節の位置で与えられるものを説明した。しかし、教示点列が３次元空間の位置・姿勢で与えられる場合は、逆運動学計算によって各関節の位置に変換すればよい。
【００７１】
また、以上説明した第１乃至第３の実施の形態では、指令値（制約条件）を最適化する手法として、教示点毎の通過時間を調節し、制約条件を満足するまで計算を繰り返す方法を説明した。この際の最適化の評価関数は時間を用い、最短時間軌道を求めることが考えられる。
【００７２】
さらに、以上説明した第１乃至第３の実施の形態では、ロボットアーム２００の可動範囲を４つ空間に分割したものを例示して説明したが、分割数が多いほどより最適な軌道が求められることは言うまでもない。なお、このように空間の分割数を増やしたり、制約条件（制約値）を増やしたりすると、計算時間は増大するが、制約条件の演算自体は、ロボットアーム動作前の事前計算であるため、ロボットアームの動作時間には影響がない。
【００７３】
また、以上説明した第１乃至第３の実施の形態では、ロボットアーム２００が６つの関節を有する６関節ロボットである場合を説明したが、関節の数はこれに限定されるものではない。また、関節の駆動方向は、回転方向の駆動だけに限らず、直動方向の駆動（伸縮駆動）も含まれる。
【符号の説明】
【００７４】
１００…ロボット装置：２００…ロボットアーム：２１１〜２１６…駆動源（電動モータ）：２２１〜２２６…伝達要素（減速機）：３００…ロボット制御装置（コンピュータ）：３０２…演算部：３０４…記録部（ＨＤＤ）：３３０…プログラム：３３１…記録媒体（記録ディスク）：１３０６Ａ、１３０６Ｂ、１３０６Ｃ、１３０６Ｄ…空間：ＡＲ…許容範囲：Ｊ１〜Ｊ６…関節：Ｐ１〜Ｐ４…軌道（教示点列）
【図１】
2014014876.tif 000003
【図２】
2014014876.tif 000004
【図３】
2014014876.tif 000005
【図４】
2014014876.tif 000006
【図５】
2014014876.tif 000007
【図６】
2014014876.tif 000008
【図７】
2014014876.tif 000009
【図８】
2014014876.tif 000010
【図９】
2014014876.tif 000011
【図１０】
2014014876.tif 000012
【図１１】
2014014876.tif 000013
【図１２】
2014014876.tif 000014
【図１３】
2014014876.tif 000015
【図１４】
2014014876.tif 000016
【図１５】
2014014876.tif 000017