(57)【要約】【課題】ロボットにおいては、急峻な加減速を行うと振動を生じ易く、この振動が駆動機構に作用する際に過剰な負荷がかかると、ロボットの耐久性にとっては好ましくない。ロボット毎の実際の使用条件にあわせて、駆動機構を保護して寿命の確保と破損防止を図りつつサイクルタイムを短縮できる最適化された加減速制御を実現できるロボットの制御方法が求められていた。【解決手段】ロボットの手先を所定経路に沿って移動させる動作を、複数回にわたり反復実行するが、所定経路に沿って移動させる動作を実行中に、複数の関節の各関節における駆動伝達系にかかる負荷トルクを測定し、負荷トルクの測定値と、各関節に設定された負荷トルクの許容範囲とを比較する。そして、比較結果に基づいて、次回の動作における各関節における駆動伝達系の加速度の変化率を制御する。【選択図】図３
2019123051.tif 000002
【特許請求の範囲】
【請求項１】
複数の関節を有するロボットの制御方法であって、
前記ロボットの手先を所定経路に沿って移動させる動作を、複数回にわたり反復実行するが、
前記所定経路に沿って移動させる動作を実行中に、前記複数の関節の各関節における駆動伝達系にかかる負荷トルクを測定し、
前記負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、
比較結果に基づいて、次回の動作における前記各関節における駆動伝達系の加速度の変化率を制御する、
ことを特徴とするロボットの制御方法。
【請求項２】
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項３】
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項４】
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の内、最も許容範囲との差分が大きな関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項５】
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の内、最も限界値から離れた関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項６】
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の内、最も前記ロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項７】
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の内、最も前記ロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１に記載のロボットの制御方法。
【請求項８】
前記各関節の前記負荷トルクの測定値が前記負荷トルクの許容範囲内にある場合に、
前記次回の動作においては、
前記各関節の駆動伝達系の加速度の変化率を補正せずに制御する、
ことを特徴とする請求項１乃至７の中のいずれか１項に記載のロボットの制御方法。
【請求項９】
前記各関節の駆動伝達系の加速度の変化率を補正する時には、
前記負荷トルクの測定値の中のピーク値と、前記許容範囲の限界値との差を計算し、
当該差の大きさを目的関数とした最適化問題として演算する、
ことを特徴とする請求項１乃至８の中のいずれか１項に記載のロボットの制御方法。
【請求項１０】
前記複数の関節の各関節における駆動伝達系にかかる負荷トルクの測定は、
前記各関節の駆動伝達系に含まれる減速機構の出力トルクを測定するトルクセンサを用いて行う、
ことを特徴とする請求項１乃至９の中のいずれか１項に記載のロボットの制御方法。
【請求項１１】
請求項１乃至１０の中のいずれか１項に記載のロボットの制御方法における前記ロボットの手先を所定経路に沿って移動させる動作により、物品の組み立てあるいは加工を行うことを特徴とする物品の製造方法。
【請求項１２】
コンピュータに、請求項１乃至１０の中のいずれか１項に記載のロボットの制御方法を実行させるためのプログラム。
【請求項１３】
請求項１２に記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１４】
複数の関節と制御部を有するロボット装置であって、
前記制御部は、
前記複数の関節の各関節の駆動伝達系を制御して、前記ロボットの手先を所定経路に沿って移動させる処理を複数回にわたり反復実行するが、
前記所定経路に沿って移動させる処理を実行中に、前記各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、
比較結果に基づいて、次回の動作における前記駆動伝達系の加速度の変化率を制御する、
ことを特徴とするロボット装置。
【請求項１５】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１６】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１７】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の内、最も許容範囲との差分が大きな関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１８】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の内、最も限界値から離れた関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１９】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲を超えた関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲を超えた関節の内、最も前記ロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが前記許容範囲の中に入る方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項２０】
前記制御部は、
前記負荷トルクの測定値が前記負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が複数存在した場合に、
前記次回の動作においては、
前記ロボットの手先を前記所定経路に沿って移動させるが、前記負荷トルクの許容範囲の限界値までは所定量以上離れている関節の内、最も前記ロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが前記許容範囲の限界値に近づく方向に前記各関節の駆動伝達系の加速度の変化率を補正して制御する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項２１】
前記制御部は、
前記各関節の前記負荷トルクの測定値が前記負荷トルクの許容範囲内にある場合に、
前記次回の動作においては、
前記各関節の駆動伝達系の加速度の変化率を補正せずに制御する、
ことを特徴とする請求項１４乃至２０の中のいずれか１項に記載のロボット装置。
【請求項２２】
前記制御部は、
前記各関節の駆動伝達系の加速度の変化率を補正する時には、
前記負荷トルクの測定値の中のピーク値と、前記許容範囲の限界値との差を計算し、
当該差の大きさを目的関数とした最適化問題として演算する、
ことを特徴とする請求項１４乃２１の中のいずれか１項に記載のロボット装置。
【請求項２３】
複数の関節を有するロボットを制御するロボットの制御装置であって、
前記制御装置は、
前記複数の関節の各関節の駆動伝達系を制御して、前記ロボットの手先を所定経路に沿って移動させる処理を複数回にわたり反復実行させるが、
前記所定経路に沿って移動させる処理を実行中に、前記各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、
比較結果に基づいて、次回の動作における前記駆動伝達系の加速度の変化率を制御する、
ことを特徴とするロボットの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指定された複数の教示点によって定まる経路を通るように駆動されるロボットアームを、複数の関節のそれぞれに対応した駆動源に指令する指令値に基づき制御するロボット装置、ロボットの制御方法、ロボットの制御装置、等に関する。
【背景技術】
【０００２】
近年、工場で組立等を行う産業用ロボットは、生産速度の向上や複雑な動作への対応が求められる中で動作の高速化が求められており、そのためには関節駆動の加減速を急峻にする必要が生じている。一方、ロボットにおいては、電動モータ等の駆動源から関節まで駆動力を伝達する伝達要素として、歯車などに代表される減速機構、ベルト、軸受などを備えているが、特に減速機構などは、低剛性のものが多く、急峻な加減速を行うと振動を生じ易い。この振動が伝達要素に作用する際、それら伝達要素に過剰な負荷がかかると、ロボットの耐久性にとっては好ましくない。
【０００３】
そこで、特許文献１には、関節の振動モデル、より具体的には、躍度（加速度の時間変化率、加加速度、ジャークなどとも呼ばれる）と、関節の弾性にもとづき生じる振動トルクとの間の伝達モデルを用いる技術が開示されている。すなわち、振動モデルにもとづいて、ロボットの関節を駆動する際に生じる振動トルクを計算することにより、伝達要素に加わる負荷トルクが許容範囲内となるような各関節の加加速度の制約値を算出する。そして、算出した各関節の加加速度の制約値を含む制約条件を不等式制約とした最適化問題を解くことで指令値を生成するロボットの軌道生成装置が記載されている。
これにより、ロボットの動作中に、伝達要素に作用する負荷トルクが許容範囲を超えることの防止が図られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１４８７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の方法における躍度と振動トルクを関係づける振動モデルは、電動モータが指令値にほぼ一致するように追従し、かつ駆動系の粘性や他軸からの干渉トルクなどが０に近いと仮定して導かれた簡易的な伝達モデルである。このため、実際のロボットが動作した際の振動トルクと厳密に一致させることは困難であり、一般にそのロボットを使用する使用環境（例えば温度）や使用条件、駆動条件ごとに自由パラメータを調整する必要があった。また、ロボットの個体差や経時的な変化に対応することはできなかった。
【０００６】
そのため、より詳細なモデルを用いた振動解析を行うなどして事前に振動モデルの精度や不確かさを見積り、それに基づいて余裕を持った制御値（躍度／加加速度制約値）を設定するようにしている。そのため、加減速制御が実際の動作に対して最適化されておらず、余裕を取りすぎると動作時間（サイクルタイム）が長くなっていた。逆に余裕が十分でない場合には、各関節の許容トルクを超過し、ロボットの寿命が短くなったり破損する等の問題を生じる可能性があった。典型的には、減速機の最大許容トルクを超過し、破損に至る事態を招く可能性があった。
【０００７】
そこで、ロボット毎の実際の使用条件にあわせて、駆動機構を保護して寿命の確保と破損防止を図りつつサイクルタイムを短縮できる最適化された加減速制御を実現できるロボットの制御方法が求められていた。
【課題を解決するための手段】
【０００８】
本発明は、複数の関節を有するロボットの制御方法であって、前記ロボットの手先を所定経路に沿って移動させる動作を、複数回にわたり反復実行するが、前記所定経路に沿って移動させる動作を実行中に、前記複数の関節の各関節における駆動伝達系にかかる負荷トルクを測定し、前記負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、比較結果に基づいて、次回の動作における前記各関節における駆動伝達系の加速度の変化率を制御する、ことを特徴とするロボットの制御方法である。
【０００９】
また、本発明は、複数の関節と制御部を有するロボット装置であって、前記制御部は、前記複数の関節の各関節の駆動伝達系を制御して、前記ロボットの手先を所定経路に沿って移動させる処理を複数回にわたり反復実行するが、前記所定経路に沿って移動させる処理を実行中に、前記各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、比較結果に基づいて、次回の動作における前記駆動伝達系の加速度の変化率を制御する、ことを特徴とするロボット装置である。
【００１０】
また、本発明は、複数の関節を有するロボットを制御するロボットの制御装置であって、前記制御装置は、前記複数の関節の各関節の駆動伝達系を制御して、前記ロボットの手先を所定経路に沿って移動させる処理を複数回にわたり反復実行させるが、前記所定経路に沿って移動させる処理を実行中に、前記各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値と、前記各関節に設定された負荷トルクの許容範囲とを比較し、比較結果に基づいて、次回の動作における前記駆動伝達系の加速度の変化率を制御する、ことを特徴とするロボットの制御装置である。
【発明の効果】
【００１１】
本発明は、ロボット毎の実際の使用条件にあわせて、駆動機構を保護して寿命の確保と破損防止を図りつつサイクルタイムを短縮できる最適化された加減速制御を実現できるロボットの制御方法を提供する。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係るロボット装置の概略構成を示す斜視図。
【図２】実施形態のロボット制御装置の構成を示すブロック図。
【図３】実施形態の制御部の構成を示すブロック図。
【図４】実施形態のロボットの、一連の動作例を示すフローチャート。
【図５】実施形態のロボットの、単位動作における動作モードとその切り替えを示すフローチャート。
【図６】実施形態の単位動作内における最適加減速探索モード（加減速調整の最適化制御）の処理の前半部分を示すフローチャート。
【図７】実施形態の単位動作内における最適加減速探索モード（加減速調整の最適化制御）の処理の後半部分を示すフローチャート。
【図８】実施形態の単位動作内における通常モード（トルク監視モード）動作時の処理を示すフローチャート。
【図９】実施形態の最適加減速探索モード（加減速調整の最適化制御）での最短時間制御部の指令値の演算処理を示すフローチャート。
【図１０】（ａ）学習／調整前の初期パラメータを使用してロボットを駆動した際の関節トルクを示すグラフ。（ｂ）学習／調整完了後のパラメータを使用した結果の関節トルクを示すグラフ。
【図１１】（ａ）別の作業姿勢でロボットを駆動した際の学習／調整前の初期パラメータを使用してロボットを駆動した際の関節トルクを示すグラフ。（ｂ）学習／調整完了後のパラメータを使用した結果の関節トルクを示すグラフ。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施形態であるロボット装置、ロボットの制御方法、ロボットの制御装置、等について説明する。
まず、ロボット装置の概略構成について説明する。図１に示すように、ロボット装置１００は、複数の関節を有する多関節ロボットとしてのロボットアーム２００と、ロボットアーム２００を制御するロボット制御装置３００と、ティーチングペンダント４００を備えている。ティーチングペンダント４００は、ロボットの制御装置としてのロボット制御装置３００に複数の教示点のデータを送信する教示装置であり、操作者がロボットアーム２００の動作を指定するのに用いる。
【００１４】
ロボットアーム２００は、本実施形態では、６関節のロボットである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６周りにそれぞれ回転駆動する６つのアクチュエータを駆動源２０１〜２０６として有している。ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に、手先すなわちロボットアーム２００の先端を向けることができる。
本実施形態のロボットは、ロボットの手先を所定経路に沿って移動させる動作を、複数回にわたり反復実行することが可能で、この動作により、例えば物品の組み立てあるいは加工を連続して行う物品の製造方法を実施することが可能である。
【００１５】
一般に、ロボットアーム２００の位置及び姿勢は、座標系で表現することができる。図１中のＴｏは、ロボットアーム２００の台座に固定した座標系を表し、Ｔｅはロボットアーム２００の手先に固定した座標系を表す。本実施形態では、各駆動源２０１〜２０６は、電動モータ２１１〜２１６と、電動モータ２１１〜２１６に接続されたセンサ部２２１〜２２６とを備える。各センサ部２２１〜２２６は、関節の角度を検出する角度センサと関節のトルクを検出するトルクセンサを含む。各駆動源２０１〜２０６は、不図示の減速機を含み、ベルトやベアリング等を介してそれぞれの関節Ｊ１〜Ｊ６で駆動するフレームに接続されている。なお、各駆動源２０１〜２０６の構成は、これに限定するものではなく、例えば油圧シリンダ等であってもよい。
【００１６】
本実施形態では、各関節Ｊ１〜Ｊ６が回転関節である場合を例に説明する。この場合、「関節の位置」とは、その関節の角度を意味する。また、その時間微分については、次数により「関節の速度」、「関節の加速度」、「関節の躍度（または加加速度）」と呼ぶ。尚、各関節は、他の例として直動関節であってもよいが、その場合には、関節の位置とは直動関節の位置を意味する。
【００１７】
ロボットアーム２００は、各関節の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御部２３０を有している。サーボ制御部２３０は、入力した位置指令値に基づき、各関節Ｊ１〜Ｊ６の角度指令値に追従するよう、各電動モータ２１１〜２１６に電流指令を出力し、各電動モータ２１１〜２１６の動作を制御する。なお、図１では、サーボ制御部２３０を１つの制御装置として構成したものを示しているが、各電動モータ２１１〜２１６にそれぞれ対応したサーボ制御装置を設け、関節ごとに個別に機能する構成としてもよい。
【００１８】
ロボット制御装置３００は、ティーチングペンダント４００から複数の教示点（教示点列）の入力指示を受ける。ロボット制御装置３００は、ロボットアーム２００の各関節Ｊ１〜Ｊ６が複数の教示点を順次辿って動作するように、教示点に基づき所定時間間隔で位置指令を生成し、所定時間間隔でサーボ制御部２３０に出力する。
教示点は、各関節Ｊ１〜Ｊ６の教示位置をベクトル成分として含むベクトル（教示点ベクトル）である。そして、ロボット制御装置３００において最終的に求められる位置指令は、各関節Ｊ１〜Ｊ６の目標位置をベクトル成分として含むベクトルである。つまり、ロボット制御装置３００は、入力した教示点からＣＰ（Ｃｏｎｔｉｎｕｏｕｓ  Ｐａｔｈ）軌道の計算をして軌道に沿った多数の位置指令を生成し、これら位置指令を所定時間間隔でサーボ制御部２３０に出力するものである。
その際、ロボット制御装置３００は、後に詳述するように、与えられた教示点列によって定まる軌道上の各点の通過速度を、ロボットアーム２００の各関節Ｊ１〜Ｊ６の速度、加速度、トルク等の制約条件を越えない範囲で調整する最適化処理を行う。
【００１９】
図２は、ロボット制御装置３００の概略構成を示すブロック図である。ロボット制御装置３００は、制御部としてのＣＰＵ３０１と、記憶部としてのＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ（ハードディスクドライブ）３０４、記録ディスクドライブ（記録媒体）３０５と、各種のインタフェース３０６〜３０９と、を備えている。
【００２０】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３０６〜３０９が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＣＰＵ３０１を動作させるためのプログラム３３０が格納されている。尚、プログラム３３０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３３０をコンピュータに供給するための記録媒体としては、ＲＯＭや、ディスク、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、光ディスク、光磁気ディスク、磁気テープ、ＵＳＢメモリ等の不揮発性メモリ、ＳＳＤ等を用いることができる。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果などを一時的に記憶可能な記憶部である。ＨＤＤ３０４は、演算処理結果や各種のデータ（最良指令軌道や最良評価値を含む）を記憶するための記憶部である。
【００２１】
ティーチングペンダント４００はインタフェース３０６に接続されており、ＣＰＵ３０１はインタフェース３０６及びバス３１０を介してティーチングペンダント４００からの教示点のデータの入力を受ける。
サーボ制御部２３０は、インタフェース３０９に接続されており、ＣＰＵ３０１は、各関節の目標角度のデータを所定時間間隔でバス３１０及びインタフェース３０９を介してサーボ制御部２３０に出力する。
インタフェース３０７には、モニタ３２１が接続されており、モニタ３２１には各種画像が表示される。インタフェース３０８は、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２が接続可能に構成されている。記録ディスクドライブ３０５は、記録ディスク（記録媒体）３３１に記録された各種データやプログラム等を読み出すことができる。尚、本発明に係るプログラムが記録される記録媒体としては、記録ディスク３３１だけに限らず、外部記憶装置３２２等の不揮発性メモリや外付けＨＤＤ等も含まれ得る。
【００２２】
図３は、ロボットのハードウェア構成と制御系との関係の概略を説明するブロック図である。これを用いて、本発明における加減速制御の最適調整法の概略を説明する。
ロボットの６つの関節Ｊ１〜Ｊ６は、図３に示す電動のサーボモータＭ１〜Ｍ６、減速機構Ｇ１〜Ｇ６、減速機構の出力端とロボットのリンクの間に配置されたトルクセンサＴ１〜Ｔ６によりそれぞれ構成される。減速機構Ｇ１〜Ｇ６は、サーボモータの出力回転数を減速し、モータの出力トルクをロボットの関節の駆動に適した大きさに拡大する。
減速機構Ｇｎ（ｎ＝１〜６）は、波動歯車機構などによって構成される。モータと減速機構の間には、モータの出力を減速機構の入力へと伝達する動力伝達機構であるタイミングベルト・プーリ系や、歯車機構などを含んでいてもよい。
【００２３】
トルクセンサＴｎ（ｎ＝１〜６）は、印加されるトルクに応じて変形する弾性部材によって構成され、その変形量や歪み量を検出することで、関節の出力トルクすなわちリンクを駆動するトルクを直接的に計測する。通常、小型の電動モータが効率よく発生できるトルクは、関節の駆動に必要なトルクに比べて非常に小さく、また、回転速度も、関節の出力軸に求められる回転速度よりも非常に大きい。そのため、高減速比の減速機構が必要になるが、減速にともない駆動部の摩擦と回転抵抗によるトルク損失が大きくなってしまう。このため、モータトルクの測定、あるいはモータトルクに比例するモータ電流の測定だけでは、関節の出力段の回転トルクを正確に把握することができない。したがって、減速機構の出力端に負荷されるトルクを正確に把握するには、リンクと減速機の間にトルクセンサを設ける必要があるのである。ロボットの手先を所定経路に沿って移動させる処理を実行中に、各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値は、ロボット制御装置３００に入力される。
各関節の運動や力の制御は、関節ごとに設けられたサーボ制御部Ｓ１〜Ｓ６によって行われる。
【００２４】
これらの要素によって構成された関節の駆動系は、関節支持機構（軸受）により支持されたロボットの各リンクを駆動し、それらが協調して制御されることで、ロボットの全体としての動作や力が出力される。
所定の時間刻み、例えば１ｍｓ毎にロボットコントローラから各関節のサーボ機構へ送信される指令値は、ロボット制御装置３００内の運動計画部において生成される。運動計画部は、最短時間制御部（第一の最適化演算部）と、加減速制御最適化部（第二の最適化部）によって構成される２つの最適化演算部を有している。
教示点列取得部（経路生成部）は、ティーチングペンダントから指示された教示点や、教示点間を補完することで、生成した教示点の点列である教示点列（経路ともいう）の情報を取得する。
【００２５】
最短時間制御部は、教示点取得部によって与えられた教示点列によって定まる経路に対し、経路上の通過速度を調整し、各関節の速度、加速度、モータトルク、関節トルク等の上限や下限、即ち制約条件を越えない範囲で調整して最適化する処理を行う。最短時間制御部が、この最適な指令値を演算する際は、上記制約条件に加え、加減速制御最適化部から加減速の制約として躍度に関する制約値を受取り、この躍度制約を不等式制約の一つとした最適化問題を解くことで、軌道の演算を行う。ここで躍度とは、加速度の時間変化率のことである。加速度の時間変化率は、加加速度やジャークなどと呼ばれる場合もある。
【００２６】
この最適化問題の制約条件は、上記躍度の上限／下限のほかに、以下の条件を含んで構成される。すなわち、物理的な整合性を保ち力学的に実現可能な運動を生成するために必要なロボットの運動方程式、構成要素の破壊や寿命低下を防ぐための関節やモータの回転数およびトルクなどの上限および下限などである。なお、最適化問題を解くという意味は、詳しくは後述するように、上記制約条件を満足するなかで、ロボットの動作時間（サイクルタイム）が実質的に最短となるように追求した収束値を求めるという意味である。
【００２７】
加減速制御最適化部は、ロボットが実際の作業を繰り返し行う中で最短時間制御部に対して入力する躍度制約値を調整することで、最適な制約値を探索する。ここでいう最適な制約値とは、詳しくは後述するように、関節トルクセンサの出力するトルクが許容範囲内、すなわち、機構的な寿命が所望の値を確保できる範囲の中で、動作速度が実質的に最短となる躍度制約値という意味である。
【００２８】
加速減速最適化部は、ロボットが実際にサイクル動作を実施する際のトルクセンサが出力したトルク値を取得し、その絶対値の最大値τｍａｘと、あらかじめ設定しておいたトルク値の許容値τｒとを比較する。そして比較結果に基づいて、次サイクルの動作における最短時間制御部の躍度の制約値を決定する。すなわち、加速減速最適化部は、τｒとτｍａｘの差ができるだけ小さくなるように躍度の調整を繰り返し行う。
このような調整を繰り返し実施することで、ロボットの駆動時のトルクを所定の範囲におさめ、ロボットの耐久性を確保しながらも動作時間が実質的に最短となるように加減速パターンが最適に調整される。トルク値の許容範囲τｒは、最短時間制御部と同様に、確保したいロボット機構要素の寿命によって決定するが、例えば、減速機構の定格トルクのカタログ値などを参考にして決定することができる。
【００２９】
次に、図４から図８を用いて、本発明における加減速パターンの最適化制御の具体的動作手順を説明する。本説明では、組立用のロボットが実際の製品生産現場において組立工程を実行する様子を想定している。
図４のフローチャートに示すように、本実施形態における一連の組立工程は、Ｎ個の単位動作から構成される。各動作（動作１〜動作Ｎ）は、例えば、ワークの取出しに向けてのワークへのアプローチ動作、ワークの把持動作、ワークの取出し動作、組み付け位置までの移動、ワークのアセンブリへの組み付け動作、などである。図４に示すように、一連の工程は、最後の動作（動作Ｎ：ステップＳ−４−Ｎ）終了後、最初の動作（動作１：ステップＳ−４−１）に復帰し、同じ動作を再び実行する繰返し動作である。所望の数の製品を生産し終えたり、工程に何らかの事情が発生するまで停止することなくエンドレスに繰り返される。
本実施形態の加減速パターンの最適化制御では、一つ一つの動作ごとに加減速（躍度制約値）を最適化することで、一連の組立動作全体のサイクルタイムの最適化（最短化）が実現される。
【００３０】
図５のフローチャートは、図４の一連の動作の内の一つを示すもので、第ｍ番目の動作を示している。（１＜ｍ＜Ｎ）。図に示すように、各動作は、最適加減速探索モード（Ｓ−５−２）と、通常モードすなわち関節トルク監視モード（Ｓ−５−３）の、２つの動作モードを持つように構成される。ロボット制御装置は、動作ごとに、上記二つの動作モードの切り替えを管理するための動作モード切替フラグａｄｊｕｓｔＪｅｒｋｍ（ｍは動作番号）を有している。
【００３１】
ロボット制御装置は、前動作（動作ｍ−１）終了後、今回動作（動作ｍ）開始時に動作モード切替フラグａｄｊｕｓｔＪｅｒｋを評価する（Ｓ−５−１）。
ステップＳ−５−１において、ａｄｊｕｓｔＪｅｒｋｍ＝１の時、ロボットは最適加減速探索モード（Ｓ−５−２）を実行し、ａｄｊｕｓｔＪｅｒｋｍ＝０の時には通常モード（Ｓ−５−３）を実行する。
動作モード切替フラグａｄｊｕｓｔＪｅｒｋｍの値の設定は、後述するように、躍度制約値の探索の収束性や、駆動時の実トルクτｍａｘの変動に基づいて、前回サイクル実行時の最後に判定されて設定される。ａｄｊｕｓｔＪｅｒｋｍの初期設定値は１に設定されており、ロボットが初めて動作ｍを実行する際には、最適加減速探索モードが実行される。
以上のように、各動作では、最適加減速探索モードあるいは、通常モード（関節トルク監視モード）のいずれかのモードで動作を実行し、動作を終了すると次の動作（動作ｍ＋１）へ遷移することになる。
【００３２】
次に、図６〜図９を用いて、各動作モードの手順の詳細を説明する。
図６、図７は、最適加減速探索モードの動作シーケンスを示すフローチャートである。図示の便宜上、連続するフローをＡを接続点として分割し、図６と図７の２図に分けて示している。このフローチャートは、図４のように同じ経路にそった動作を繰返し何度もロボットを行わせるうちの一回の動作を示している。この動作を実行した回数は、反復回数ｊであらわし、初回はｊ＝０である。
ロボットが動作ｍの制御を開始し、最適加減速探索モードをスタートすると、まず今回の動作が初回であるか否かを判定する（Ｓ−６−１）。この判定は、フラグｉｎｉｔｉａｌＡｔｔｅｍｐｔにより判定される。（ｉｎｉｔｉａｌＡｔｔｅｍｐｔの初期値は、ロボットの動作プログラムの開始時に１に設定される）。
【００３３】
初回である場合（Ｓ−６−１のＹｅｓ）は、ステップＳ−６−２に進み、それ以外（Ｓ−６−１のＮｏ）の場合にはステップＳ−６−２をスキップしてＳ−６−３へ進む。
例えば、動作の実行が初回であって、ステップＳ−６−２へ進むと、動作のフラグｉｎｉｔｉａｌＡｔｔｅｍｐｔと、反復回数ｊをクリアして０を設定し、ロボットの軌道計画（指令値の加減速パターンの生成）のためのパラメータの初期化を行う。軌道設定パラメータの初期化とは、具体的には、ロボットが軌道を計画するための躍度の制約値βをデフォルトのパラメータβ０へと設定することなどである（β←β０）。
続くステップＳ−６−３では、ロボットが加減速を調整するモードに入ったことが外部からも判別できるように、ロボットの状態表示灯などを点灯させる。
【００３４】
次に、ロボットはステップＳ−６−４へと進み、設定された躍度制約値にもとづいて、剛体モデルにもとづく最短時間制御の演算を実行し、与えられた経路に沿った最適な軌道を生成し、サーボ制御部への指令値を生成する。
最短時間制御部における指令地生成の演算を、図９のフローチャートに沿って説明する。図９に示すように最短時間制御演算部は、まず教示点列の各点ごとの通過時間ｔを設定する（Ｓ−８−１）。続いて、設定された通過時間に対し、各点の関節の位置（角度）、速度、加速度、躍度、トルクを算出する（Ｓ−８−２）。関節のトルクは、ロボットアーム２００の運動方程式に、関節の位置、速度、加速度を代入し逆動力学演算（ある種のシミュレーションである）を行うことで算出できる。
【００３５】
次に最短時間制御部は、上記ステップＳ−８−２で計算された各関節の位置、速度、加速度、トルク、躍度が、設定された制約範囲内に収まっているか判定する（Ｓ−８−３）。
この制約条件を満足していない場合は、教示点における通過時間を再設定し調節し直す（Ｓ−８−４）。例えば、負荷トルクの制約条件を越えるような場合は、通過時間を長くするように調節し、その後、上記ステップＳ−８−１〜Ｓ−８−３を繰り返す。これにより、上記各関節の躍度制約値を含む制約条件を不等式制約とした最適化問題を解くことになる。そして、最終的に制約条件を満足することで（Ｓ−８−３のＹｅｓ）、最短時間制御部は、最短時間となる各関節に対する指令値を生成する（Ｓ−８−５）。
このような演算を行うことで、図６の最短時間制御ステップ（Ｓ−６−４）は、ロボットの剛体モデルのシミュレーションにもとづいて、ロボットの動作が最短時間となる指令値軌道を生成する。
【００３６】
ここで注意すべきは、トルク算出のシミュレーションは、ロボットの関節の柔軟性を考慮しない剛体モデルを使用して行われることである。これは、弾性を考慮したシミュレーションは、剛体シミュレーションにくらべて計算コストが非常に高く、最適化計算のように繰返し計算を行う演算には適さないためである。ひとつの動作の軌道生成に要する時間が例えば数分単位になり、非現実的に長くなってしまうため、生産現場においては実時間で適用することがほとんど現実的ではないと考えられる。また、使用するモデルが剛体モデルであっても、最短時間制御そのものは時間がかかる演算であり、例えば数百ｍｓｅｃから数秒のオーダの計算時間を要する。そこで、製品の生産性を向上させる観点では、最短時間制御による軌道計画そのものの回数を、できるだけ小さくすることが望ましい。
【００３７】
続くステップＳ−６−５は、ステップＳ−６−４で計算されたロボットの軌道にもとづいてロボットを実際に駆動する工程である。生成された関節角度指令値は、各サンプリング時刻ｔｋ毎に各関節のサーボ制御部へと送信され、各関節サーボ制御部は、与えられた指令位置に関節角度を追従させるように位置サーボ機構を作用させ、実際にロボットを動作させ、具体的な作業を実行する。
この時、ロボットの関節に配置されたトルクセンサは、ロボットが実際に動作を行っている際のサンプリング時間ごとにトルクセンサ値τ（ｔｋ）をモニタリングし、記憶部に記憶する。
ロボットが実際の作業を実施した直後、ロボットの制御部はステップＳ−６−５において駆動された際の関節トルクの絶対値の最大値（ピークトルク）τｍａｘ，ｊを検索する（τｍａｘ，ｊ＝ｍａｘｋ｜τｊ（ｔｋ）｜）（Ｓ−６−６）。そして、検索されたピークトルクτｍａｘ，ｊを仮の最適トルク値τｍａｘとして記憶部に保存する（τｍａｘ←τｍａｘ，ｊ）（Ｓ−６−７）。
【００３８】
次にステップＳ−６−８では、減速機の所望の耐久時間（寿命）と減速機の定格トルクによって予め決定した関節トルクの許容最大値τｒ（τｒ＞０）と、計測された関節トルクのピーク値τｍａｘ，ｊを比較して、トルクのオーバー率αｊを以下の式で計算する。
αｊ＝（τｍａｘ，ｊ−τｒ）／τｒ
ここでオーバー率αｊは、関節トルクのピーク値τｍａｘ，ｊが許容値τｒを超過した場合に正の値をとり、その大きさは、ピークトルクの超過度合を許容トルクτｒで正規化して表したものになっている。逆に、αｊが負の値となるときは、動作時の関節トルクが許容トルクに比べて小さく、余裕があることを示している。すなわち、加速度の変化をより急峻にすることにより、寿命を確保しながらさらなる動作の高速化の余地があることを示している。
【００３９】
続くステップＳ−６−９からＳ−６−１１は、最適加減速探索モードの最適値探索の終了条件を判定する終了条件判定部を構成する。これらのステップでは、次のサイクルで当該動作を実施する際に、最適加減速探索モードと通常の関節トルク監視モードのどちらを実行されるのかが判定され、その結果を動作モード切替フラグａｄｊｕｓｔＪｅｒｋｍにセットする（Ｓ−６−２０）。
まず、ステップＳ−６−９では、関節トルクのオーバー率を評価することで、ロボットを実際に駆動した際の関節トルクが所望の範囲に収まっているかを判定する。言い換えれば、ロボットの手先を所定経路に沿って移動させる処理を実行中に、各関節の駆動伝達系に設けられたトルクセンサが測定する負荷トルクの測定値と、各関節に設定された負荷トルクの許容範囲とを比較する。
【００４０】
許容範囲は、εｌ（＞０）で表現され、｜αｊ｜＜εｌのとき、トルクが許容範囲に収まったと判定（Ｓ−６−９のＹｅｓ）し、ステップＳ−６−２０へと進む。Ｓ−６−２０では、次サイクル実行時の動作モードを通常モードに指定（ａｄｊｕｓｔＪｅｒｋｍ←０）した後、今サイクルの動作（動作ｍ）を終了し、次動作（動作ｍ＋１）へと遷移する。ステップＳ−６−９において、｜αｊ｜＜εｌ以外の場合、最適加減速探索は収束していないと判定され（Ｓ−６−９のＮｏ）、次のステップの判定部Ｓ−６−１０へ進む。
ここで、εｌは、実際の関節トルクのピークτｍａｘを許容トルクτｒにどの程度近づけるか、つまり残差をどの程度許容するかを規定する許容範囲を表現している。例えば、εｌ＝０．０１とした場合は、実際の関節トルクのピークと許容トルクとの差が、許容トルクの１％の範囲に収まるまで加減速の調整（躍度制約の最適値探索）が実施されることになる。
【００４１】
続いてステップＳ−６−１０では、加減速探索の収束性を判定する。すなわち、前回サイクル実施時のピークトルクτｍａｘ，ｊ−ｌと、今回駆動時のピークトルクτｍａｘ，ｊを比較する。この差が規定した値ε２（＞０）よりも小さな場合（｜τｍａｘ，ｊ−τｍａｘ，ｊ−ｌ｜＜ε２）には、これ以上の改善が見込めないと判定する（ステップＳ−６−１０のＹｅｓ）。そして、次回サイクルの動作モードを通常モードにセットし（Ｓ−６−２０）、今回動作を終了し次動作へ遷移する。尚、初回駆動時は、τｍａｘ，ｊ−ｌ＝０である。
【００４２】
｜τｍａｘ，ｊ−τｍａｘ，ｊ−ｌ｜＜ε２以外の場合は、ステップＳ−６−１１へと進み、今回動作の加減速探索モードの反復回数ｊを評価する。反復回数ｊが、あらかじめ設定された最大値ｊｍａｘを超えた場合には、今回のパラメータβが最適でありこれ以上の改善が望めないと判断し（ステップＳ−６−１１のＮｏ）、次回サイクルの動作モードを通常モードにセットする。反復回数ｊが規定回数以下の場合は、反復回数を一回分更新（ｊ←ｊ＋１）して（ステップＳ−６−１２）、次回の駆動のために、躍度制約を調整するプロセスである躍度制約調整部に進む（ステップＳ−６−１３〜Ｓ−６−１７）。
【００４３】
続くステップＳ−６−１３〜Ｓ−６−１７では、動作時間を最適化するために躍度制約パラメータを具体的に調整する最適化演算を行う。
まず、トルクのオーバー率αｊの符号を判別し（ステップＳ−６−１３）、比較結果の符号が正であるか負であるかに応じて、最短時間制御部の制約条件として使用される躍度の制約値βの更新の度合を変化させる。
【００４４】
トルクのオーバー率αｊの符号が負の場合（ステップＳ−６−１３のＮｏ）には、最短時間制御部の制約条件として使用される躍度の制約値βを、今回サイクルで使用した値よりもａ×１００パーセント大きく設定する（β←（１＋ａ）・β）。すなわち、次サイクルでの加減速をより急峻なものとするように設定する（Ｓ−６−１４）。
【００４５】
言い換えれば、負荷トルクの測定値が負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が存在した場合に、次回の動作においては、次のように制御する。つまりロボットの手先を所定経路に沿って移動させるが、負荷トルクの許容範囲の限界値までは所定量以上離れていた関節の駆動伝達系にかかる負荷トルクが許容範囲の限界値に近づく方向に、各関節の駆動伝達系の加速度の変化率を補正して制御する。
【００４６】
負荷トルクの測定値が負荷トルクの許容範囲内にあるが、許容範囲の限界値までは所定量以上離れている関節が複数存在した場合には、次回の動作においては、次のように制御する。つまり、最も限界値から離れた関節の駆動伝達系にかかる負荷トルクが許容範囲の限界値に近づく方向に各関節の駆動伝達系の加速度の変化率を補正して制御する。あるいは、負荷トルクの許容範囲の限界値までは所定量以上離れている関節のうち、最も前記ロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが許容範囲の限界値に近づく方向に各関節の駆動伝達系の加速度の変化率を補正して制御する。補正を実効的に効率よく作用させるためである。尚、最も前記ロボットの手先から遠い関節とは、ロボットが設置されている基部に最も近い関節とも言い換えることができる。
【００４７】
続いて、更新された躍度制約値が予め規定した上限βｕに達しているかを判別する（ステップＳ−６−１６）。βがβｕ以下の範囲内に収まっている場合（Ｓ−６−１６のＹｅｓ）には、ステップＳ−６−２１で次回の動作モードを最適加減速探索モードに設定し（ａｄｊｕｓｔＪｅｒｋｍ←１）、今回動作（動作ｍ）の制御を終了する。一方、更新された躍度制約値が上限βｕを超えている場合（Ｓ−６−１６のＮｏ）には、これ以上指令値の変化を急峻にしても、動作時間短縮の効果が薄いと考えられる。そこで、ステップＳ−６−２０に合流して、次回の動作モードを通常のトルク監視モードに設定し、今回動作の制御を終了し次動作へ移る。
【００４８】
次に、トルクのオーバー率αｊの符号が正（αｊ＞０）の場合（ステップＳ−６−１３のＹｅｓ）について説明する。この場合は、指令値の変化が急峻すぎてロボットの振動を励起してしまい、その結果関節トルクが許容値をオーバーしている状態である。そのため、指令値の変化をよりなめらかにするために、最短時間制御部の制約条件として使用される躍度の制約値βをより小さく更新する必要がある。そこでステップＳ−６−１３に続くステップＳ−６−１５では、躍度制約値βを、今回サイクルで使用した値よりもｂ×１００パーセント小さく設定する（β←（１−ｂ）β）。ここで、躍度制約の更新比率はオーバー率の正負によって異なるものとして設定し、ａ＜ｂとする。これは、ａ＝ｂとすると、オーバー率の符号が切り替わる際に躍度制約値の更新値が同じ値で振動してしまうためである。トルクオーバしている際は、機構の破損の恐れが大きいのでβを大きく減少させ、逆にβを増加させていく際は、一気にトルクオーバしないよう少しずつ慎重に制約を緩めていくような効果を期待してのことである。
【００４９】
言い換えれば、負荷トルクの許容範囲を超えた関節が存在した場合に、次回の動作においては、次のように制御する。つまり、ロボットの手先を所定経路に沿って移動させるが、負荷トルクの許容範囲を超えた関節の駆動伝達系にかかる負荷トルクが許容範囲の中に入る方向に各関節の駆動伝達系の加速度の変化率を補正する。
負荷トルクの許容範囲を超えた関節が複数存在した場合には、次回の動作においては、次のように制御する。つまり、ロボットの手先を所定経路に沿って移動させるが、負荷トルクの許容範囲を超えた関節の内、最も許容範囲との差分が大きな関節の駆動伝達系にかかる負荷トルクが許容範囲の中に入る方向に各関節の駆動伝達系の加速度の変化率を補正して制御する。あるいは、負荷トルクの許容範囲を超えた関節の内、最もロボットの手先から遠い関節の駆動伝達系にかかる負荷トルクが許容範囲の中に入る方向に各関節の駆動伝達系の加速度の変化率を補正して制御する。補正を実効的に効率よく作用させるためである。尚、最も前記ロボットの手先から遠い関節とは、ロボットが設置されている基部に最も近い関節とも言い換えることができる。
【００５０】
ステップＳ−６−１５においてβを更新した後、更新されたβがあらかじめ規定した値βｌを下回っているか否かをチェックする（Ｓ−６−１７）。βを減少していくことは、指令値の変化を小さくして動作を遅くしていくことに相当する。しかし、振動を励起しないような軌道においても、動作させた際の関節トルクが規定のトルクよりも大きいということは、センサ、制御系のいずれかに正常ではない何らかの事態が生じている可能性が高い。そのため、βが規定の下限値よりも小さな状況（β＜βｌ）、すなわちステップＳ−６−１７のＮｏでは、ロボットは何等かの故障を知らせる警告を外部に発し（Ｓ−６−１８）、ロボットの動作自体を停止させる（Ｓ−６−１９）。
一方、βが規定範囲内の場合（ステップＳ−６−１７のＹｅｓ）には、ステップＳ−６−２１に合流し、次回の動作モードを探索モードに設定し、今回動作の制御を終了させる。
【００５１】
以上が、本実施形態における加減速パターンの最適化制御の全体像である。このような動作の制御を繰返し実施していくことで、関節トルクが設定された最大トルクを超過しない範囲で、動作のサイクルタイムがもっとも短い動作を実現するようにロボットの加減速パターンが自動的に調整される。負荷トルクの測定値の中のピーク値と、許容範囲の限界値との差を計算し、当該差の大きさを目的関数とした最適化問題として演算する結果として、減速機構の許容トルクを順守し耐久性を確保した範囲で、最適な動作を実現することが可能となる。
【００５２】
次に、図５における通常モード（関節トルク監視モード）の制御動作の手順を、図８のフローチャートを用いて説明する。図５のステップＳ−５−１の評価部において、動作モードを通常モードに切り替えた制御部は、図８のフローに従って制御を実施する。
【００５３】
通常モードの主な役割は、ロボットの駆動時の関節トルクの監視である。通常モードの制御が実施されるタイミングは、基本的に、図６、図７の最適加減速探索モードが収束し、加減速が最適化された後であるが、通常モードでは、加減速の最適化を行う二つの最適化演算（最短時間制御と、最適躍度制約値の探索）は実施されない。通常モードでは、最適加減速探索モードにおいて最後に計算された関節軌道（関節角指令値）を繰り返し再生することで、ロボットの動作が行われる。これは、すでに説明したように最短時間制御は計算コストが高いため、それに要する１秒弱の時間も、製品の生産性の観点では、削除すべき無駄時間ととらえられるためである。
【００５４】
通常モードの実行を開始した制御部は、まず、制御モードの状態を外部に示すために最適加減速探索モードで点灯させたロボットの状態表示灯などを消灯させ、ロボットの制御モードが通常モードに移行したことを外部に示す（Ｓ−７−１）。
次のステップＳ−７−２では、通常モードの繰り返し回数ｌをカウントするため、通常モードの実行が初回であるか判定する（ステップＳ−７−２）。初回の場合は、ｌをゼロにセットし（ステップＳ−７−３）、そうでない場合にはステップＳ−７−３をスキップして次ステップＳ−７−４を実行する。
【００５５】
Ｓ−７−４は、最適加減速探索モードにおいて最後に生成された関節軌道にもとづいてロボットを実際に駆動することで、具体的作業を実施するステップである。この時、ロボットの関節に配置されたトルクセンサは、ロボットが実際に動作を行っている際にサンプリング時間ごとにトルクセンサ値をモニタリングする。そして、ステップＳ−７−５では、その絶対値の最大値をピークトルクτｍａｘ，ｌとして記憶部に記憶する（関節トルクの監視）。
【００５６】
続くステップＳ−７−６では、今回のサイクルでモニタしたピークトルクτｍａｘ，ｌの変動具合を評価することで、加減速制御を再調整する必要性の有無を判別する。具体的には、今回ピークトルクτｍａｘ，ｌを、加減速調整モード実施時に最適加減速制御が得られた試行において計測されたピークトルク（最適トルク値）τｍａｘと比較し、その差があらかじめ規定した値ε３よりも大きいか否かを判定する。尚、τｍａｘは、加減速調整モード実施時の最後の試行時において計測されたピークトルクに等しい。
【００５７】
変動が小さい場合、すなわち｜τｍａｘ，ｌ−τｍａｘ｜＜ε３の場合には（Ｓ−７−６のＹｅｓ）、ステップＳ−７−７にて通常モードの反復回数を更新する（ｌ←ｌ＋１）。さらに、次サイクルも通常モードを継続して実施するように動作モード切替フラグａｄｊｕｓｔＪｅｒｋｍを０に設定し（Ｓ−７−８）、今回動作の制御を終了する。
【００５８】
ピークトルクの変動が規定より大きい場合、すなわち｜τｍａｘ，ｌ−τｍａｘ｜がε３以上の場合には（Ｓ−７−６のＮｏ）、ロボットの機構系負荷の経時な変化や、室温などの動作環境の変動、ハンドなどの把持対象物の質量変動などが原因として考えられる。そこで、動作モード切替フラグａｄｊｕｓｔＪｅｒｋｍを１に設定して、次回サイクルの動作を最適加減速探索モードにセットする（Ｓ−７−９）。そして、続く（Ｓ−７−１０）にて最適加減速探索モードの反復回数をクリア（ｊ←０）し、今回動作の制御を終了し、次の動作の制御へと遷移する。これにより、ロボットの制御部は、次のサイクルより加減速（躍度）パラメータを再度調整しなおして、変動後の駆動条件に合わせた最適加減速制御を実施しようと試みることになる。
【００５９】
加減速の調整を行わない通常モードの制御をこのように実施することで、時間のかかる軌道計画の演算（最短時間制御）を毎回実施する必要がなく、トータルとしてのサイクルタイムを短縮することが可能になる。また関節トルクのピークのモニタリングを継続的に実施することで、ピークトルクに変化があった際に、いつでも速やかに最適加減速を探索するモードに復帰するので、使用条件や環境の変化に即時に対応し最適な加減速の制御を実施することができる。
【００６０】
次に、本実施形態に係る最適化制御を行ってロボットを動作させた際の効果を、図１０〜図１１を使用して説明する。図１０〜図１１では、理解を容易にするため、第一関節であるＪ１だけを駆動し、他の関節は姿勢を変化させない動作とした。そして、各グラフは、関節Ｊ１を１．０ラジアン旋回させて位置決め動作を行った際の関節Ｊ１の関節トルクの時間的応答を示している。
【００６１】
図１０の検討では、ロボットの姿勢は、関節Ｊ１周りの慣性モーメントが１．０［ｋｇ・ｍ２］程度になるようとなるような姿勢とした。この姿勢は、ちょうどロボットの可動域の中間程度の姿勢となり、ロボットを操作しやすく、実際の工程で多用される姿勢となっている。
図１０（ａ）は、初回駆動時の関節トルクの応答で、加減速を最適化する前のデフォルトの躍度制約値を用いて作成した関節軌道を用いてロボットを駆動した結果を示している。躍度制約のデフォルト値は、β０＝２５００［ｒａｄ／ｓ３］としている。尚、この設定は以降も同様である。
図の中で、τｒは関節トルクの許容最大値、τはロボットを駆動した際の関節トルク応答である。また、τｃａｌはロボットの指令値を逆動力学計算して計算したトルクであり、ロボットが指令値を生成する際に最短時間制御部で使用したシミュレーションモデルにおける関節トルクを示している。τｒの値は、減速機の定格トルク（カタログ値）を使用し７０［Ｎ・ｍ］とした。
【００６２】
図１０（ａ）を参照するとわかるように、図中の丸で囲んで示した部分は、関節トルクが許容値をオーバーしており、ロボット機構の耐久性確保の観点からみると望ましい駆動状態ではないことが分かる。このときのピークトルクは、τｍａｘ＝９２．３［Ｎ・ｍ］、ロボットの動作時間すなわち関節角指令値が終わるまでの時間は、ｔｆ＝０．２９３［ｓ］であった。
注意すべきなのは、最短時間制御部は、τｃａｌがあるマージンをもって許容トルクに収まるような軌道（指令値）を作成しているにも関わらず、実際にその指令値で駆動されたロボットでは関節の弾性を起因とした振動が励起されてしまっている点である。この振動トルクが原因となって、駆動系の強度を超える負荷（トルク）が関節に作用してしまっている。これは、指令値の変化が急峻すぎるためトルクオーバが発生しているのであり、最短時間制御で使用するシミュレーションモデル（剛体モデル）と、柔軟性を含む構造特性を有する実際のロボットの差異に起因して発生している。
【００６３】
図１０（ｂ）のグラフは、本実施形態に係る最適加速探索モードを実施し、加速パターン（躍度制約値）が最適化された軌道を用いてロボットを駆動した結果である。このとき躍度の制約値の値は、β０＝８６０［ｒａｄ／ｓ３］まで調整され小さくなった。指令値の変化がより滑らかになった結果、振動が抑えられ、関節トルクが駆動系の許容トルクに収まるように調整されていることが確認できる。また、このときの関節トルクのピークは、ちょうどτｍａｘ＝７０．０［Ｎ・ｍ］で、ロボットの動作時間は、ｔｆ＝０．３４１［ｓ］であった。
【００６４】
この結果から、本実施形態の加減速制御によれば、初期状態で関節トルクが許容限界を超えるようなパターンでロボットを駆動しても、加減速パターンの急峻さを抑制するなめらかな軌道が生成されるよう躍度が自動的に調整される。このため、駆動系の耐久性を確保する中でも最適な（最短の）軌道が生成できていることが確認できる。
【００６５】
図１１は、図１０の動作から姿勢を変更し、関節Ｊ１周りの慣性モーメントが０．３［ｋｇ・ｍ２］となるようアームを折りたたんだ姿勢で、関節Ｊ１を１．０ラジアン旋回させる動作を行った際の、関節トルクの時間応答を示したものである。
図１１（ａ）は、初期パラメータすなわちβ０＝２５００［ｒａｄ／ｓ３］で軌道を作成し、ロボットを起動した結果を示している。また、図１１（ｂ）は、躍度制約値の最適値を探索した後の最適躍度パラメータを使って軌道を計画し、ロボットを駆動した際の応答を示している。
【００６６】
今回の実験では、腕を折りたたんだことでかなり慣性が小さな姿勢となったことから、図１１（ａ）のデフォルトパラメータでの駆動結果では、振動の少ないなめらかな関節トルクの応答が実現されている。しかし、軌道生成時の躍度の制約が小さすぎたため、関節トルクのピークが小さく、トルク余裕が過剰になっている様子が見て取れる。この時のピークトルクは、τｍａｘ＝４０．２［Ｎ・ｍ］で、ロボットの動作時間は、ｔｆ＝０．２４４［ｓ］であった。
【００６７】
続いて、図１１（ｂ）の結果をみると、過剰であったトルクの余裕を適正化し、サイクルタイムを短縮しようと、躍度制約を緩和し、指令値の変化が急峻になっている様子が確認できる。図中で、τｃａｌは、ほとんどステップ状に変化しているように見える。
これにより、ロボットの動作時間はｔｆ＝０．１６９［ｓ］まで改善し、その時のピークトルクはτｍａｘ＝６７．５［Ｎ・ｍ］であった。また躍度制約パラメータは、β＝３８７０００［ｒａｄ／ｓ３］であった。ピークトルクτｍａｘは、関節トルクの許容値τｒよりも若干小さな値であるが、これ以上改善することはなく、規定の反復回数超えて時点で最適加速探索モードを終了した。これは、今回の姿勢は慣性モーメントが小さく、振動がさほど励起されないためと考えられる。
【００６８】
以上のように、本実施形態の加減速制御によると、関節トルクが許容限界を超える際の駆動系の保護が可能であるばかりでなく、関節トルクに余裕がある場合は、その余裕を利用して指令値の変化をより急峻なものにすることができる。このため、動作時間を実質的に最短化する最適軌道を自動的に生成することが可能であり、機構系の性能を十分に活用した最適な加減速パターンが実現できることが確認できた。
【００６９】
本発明の実施形態によれば、関節部の許容トルクを超過することによる損傷や、ロボット装置の寿命の低下を生じることなく、高い駆動速度でロボットを動作させることが可能な最適加減速制御を実現可能である。特に、強度の低い減速機等の損傷や劣化を抑制しながら、高い動作速度を実現可能することができる。
さらに上記制御は、実際に関節に印加される負荷トルクにもとづいて実施されるので、確実かつ最適な加減速パターンが実現され、例えばハンドの正確な質量が未知であるなど制御モデルが不明確であった場合でも実施できる。
また上記の調整動作は、ロボットを動作させて組立等の作業を行っている状態でも実施可能である。このため、ワーク、ハンド、動作環境の変化にもリアルタイムに追従可能であり、これらの調整結果をメモリに蓄積して学習を行うことにより、どのような環境においても適用可能な制御システムを実現することができる。
【００７０】
［他の実施形態］
本発明の実施形態は、上述した実施形態に限られるものではなく、適宜変更したり、組み合わせたりすることが可能である。
例えば、上述した実施形態では、ロボットアーム２００として６つの関節を有する６関節ロボットを例に挙げて説明したが、関節の数はこれに限定されるものではない。また、関節の駆動方向は、回転方向の駆動だけに限らず、直動方向の駆動（伸縮駆動）が含まれていてもよい。
また、躍度制約調整部の調整アルゴリズムは、上述の実施形態に限定されるものでなく、本発明の趣旨に反しない限り適宜変更が可能であり、さまざまな最適化アルゴリズムを適用することができる。
【符号の説明】
【００７１】
１００・・・ロボット装置／２００・・・ロボットアーム／２０１〜２０６・・・駆動源／２１１〜２１６・・・電動モータ／２２１〜２２６・・・センサ部／２３０・・・サーボ制御部／３００・・・ロボット制御装置／３０１・・・ＣＰＵ／３０２・・・ＲＯＭ／３０３・・・ＲＡＭ／３０４・・・ＨＤＤ／３２１・・・モニタ／Ｊ１〜Ｊ６・・・関節／４００・・・ティーチングペンダント
【図１】
2019123051.tif 000003
【図２】
2019123051.tif 000004
【図３】
2019123051.tif 000005
【図４】
2019123051.tif 000006
【図５】
2019123051.tif 000007
【図６】
2019123051.tif 000008
【図７】
2019123051.tif 000009
【図８】
2019123051.tif 000010
【図９】
2019123051.tif 000011
【図１０】
2019123051.tif 000012
【図１１】
2019123051.tif 000013