(57)【要約】【課題】停止信号に応じてロボット装置を停止させる停止制御において、ワークやロボット装置を損なうことなくロボット装置を停止させることができるようにする。【解決手段】位置制御モードにおいて停止信号を検出した（Ｓ１９〜Ｓ２０）場合、力制御モード（Ｓ２〜Ｓ８）を用いて関節を停止させる停止制御モードを実行するこの力制御モードでは、インピーダンス制御を利用し、ロボット装置が他の物体に接触したことを検出した（Ｓ２０〜Ｓ２１）場合、ロボット装置の関節の弾性（バネ係数）を増大させる（Ｓ２３）。また、検出したロボット装置と他の物体との接触回数が２以上である場合に、各々の接触位置の重心をロボット装置を停止させる位置目標として設定する（Ｓ２４）。【選択図】図６
2020183021.tif 000002
【特許請求の範囲】
【請求項１】
関節で連結されたリンクと、前記リンクの位置を検出する位置センサと、前記関節の負荷を検出する力センサと、を備えたロボット装置の制御方法であって、
前記ロボット装置は、前記位置センサに基づき前記関節を制御する位置制御モードと、前記力センサに基づき前記関節を制御する力制御モードと、を有する制御装置を備えており、
前記制御装置が、
前記ロボット装置を停止させる停止信号を検出する停止信号検出工程と、
前記位置制御モードにおいて前記停止信号を検出した場合、前記力制御モードを用いて前記関節を停止させる停止制御工程と、
を有することを特徴とする制御方法。
【請求項２】
請求項１に記載の制御方法において、前記力制御モードが前記関節の動作に弾性を付与する弾性制御を含み、前記停止制御工程において、前記力センサを介して前記ロボット装置が物体に接触したことを検出した場合、前記制御装置が前記関節の弾性を増大させる停止制御を実行することを特徴とする制御方法。
【請求項３】
請求項２に記載の制御方法において、前記停止制御工程において前記力センサを介して検出した前記ロボット装置と物体との接触回数が２以上である場合に、各々の接触位置の重心を、前記ロボット装置を停止させる位置目標として設定することを特徴とする制御方法。
【請求項４】
請求項１から３のいずれか１項に記載の制御方法において、前記停止信号検出工程において、前記ロボット装置が配置されたプラントの上位の制御装置により発生される停止信号を検出することを特徴とする制御方法。
【請求項５】
請求項１から４のいずれか１項に記載の制御方法において、前記停止信号検出工程において、前記ロボット装置に指令値を入力する外部入力装置により発生される停止信号を検出することを特徴とする制御方法。
【請求項６】
請求項１から５のいずれか１項に記載の制御方法における各工程をコンピュータに実行させるための制御プログラム。
【請求項７】
請求項６に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項８】
関節で連結されたリンクと、前記リンクの位置を検出する位置センサと、前記関節の負荷を検出する力センサと、を有するロボット装置を備えたロボットシステムにおいて、
前記位置センサに基づき前記関節を制御する位置制御モードと、前記力センサに基づき前記関節を制御する力制御モードと、を備え、前記位置制御モードにおいて、停止信号を検出した場合、特定の停止制御モードにより前記ロボット装置を停止させる制御装置と、
前記停止制御モードの種類を選択する外部入力装置と、
を備えたことを特徴とするロボットシステム。
【請求項９】
請求項８に記載のロボットシステムにおいて、前記外部入力装置で選択可能な停止制御モードに、前記力制御モードを用いて前記関節を停止させる停止制御モードが含まれていることを特徴とするロボットシステム。
【請求項１０】
請求項８または９に記載のロボットシステムにおいて、前記外部入力装置で選択可能な停止制御モードに、前記関節を所定の減速度で減速させる停止制御モードが含まれていることを特徴とするロボットシステム。
【請求項１１】
請求項８から１０のいずれか１項に記載のロボットシステムにおいて、前記外部入力装置で選択可能な停止制御モードに、前記ロボット装置の教示軌道を追従し、前記教示軌道の上で前記ロボット装置を停止させる停止制御モードが含まれていることを特徴とするロボットシステム。
【請求項１２】
請求項８から１１のいずれか１項に記載のロボットシステムにおいて、前記外部入力装置が、選択可能な停止制御モードをＧＵＩ画面に表示させる表示装置を備えたことを特徴とするロボットシステム。
【請求項１３】
関節で連結されたリンクと、前記リンクの位置を検出する位置センサと、前記関節の負荷を検出する力センサと、を有するロボット装置であって、
前記位置センサに基づき前記関節を制御する位置制御モードと、前記力センサに基づき前記関節を制御する力制御モードと、を有する制御装置を備え、
前記制御装置が、前記位置制御モードにおいて、前記ロボット装置を停止させる停止信号を検出した場合、前記力制御モードを用いて前記関節を停止させる停止制御を実行することを特徴とするロボット装置。
【請求項１４】
請求項１３に記載のロボット装置が配置され、前記ロボット装置によりワークを操作して物品を製造することを特徴とする生産システム。
【請求項１５】
請求項１３に記載のロボット装置を用いてワークを操作し、物品を製造することを特徴とする物品の製造方法。
【請求項１６】
関節で連結されたリンクと、前記リンクの位置を検出する位置センサと、前記関節の負荷を検出する力センサと、を有するロボット装置に指令値を入力する外部入力装置において、
前記ロボット装置は、
停止信号を検出した場合、特定の停止制御モードにより前記ロボット装置を停止させる制御装置を備えており、
前記外部入力装置は、前記停止制御モードの種類を選択することができることを特徴とする外部入力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット装置に関する。
【背景技術】
【０００２】
単軸ロボットおよび多関節ロボットは、軸構成こそ異なるが、例えば伝達機構が制御誤差を持っている、という課題は共通である。本明細書では、単軸ロボットと、多関節ロボットは区別せず単にこれらを総称して「ロボット装置」、「ロボット」などを用いる。
【０００３】
また、ロボット装置は、リンクを可動連結する関節を備えるが、この関節には回転関節と直動関節の異なる形式がある。これらについても、本明細書で取り扱う構成や効果は共通する。そこで、回転関節の角度および直動関節の伸縮位置は、区別せず、両者ともに連結しているリンクの位置関係を意味することは同じであるから、以下では、これらを「関節の位置」という。
【０００４】
また、この関節の位置の時間微分についても「関節の速度」、「関節の加速度」、「関節の加加速度」などの表記を用いる。また、同様に回転関節のトルクと、直動関節の推力（駆動力）は区別せず「関節の推力」と表記する場合がある。また、関節の制御条件としてのリンクパラメータには、関節が支持する負荷としてのリンク等の長さ、重さ、重心位置、慣性二次モーメント等の情報が含まれる。
【０００５】
近年、少子高齢化、人手不足などの事情もあって、ロボット装置を利用した生産ラインで物品を製造する事例が増えている。このような生産ラインでは、人間の手のように精密で高速な加工、組立を行え、しかも高速に作業を実施できることが求められる。
【０００６】
一方、この種の生産システムに用いられるロボット装置では、動力源推力を増大し、また、回転運動を直動運動に変換するといった目的で、負荷と動力源の間に減速機やボールねじ等の伝達機構が配置されることが多い。しかしながら、この種の伝達機構にはロボット動作に係る精密さを妨げる要因がある。例えば、ねじれ、減速機の歯のかみ合いによる角度誤差、バックラッシュ、摩擦、小部品の微小振動、ボールねじの変形による角度誤差、ネジ共振、ロストモーションなどの要因である。
【０００７】
この種の要因で生じる精密さの低下に対し、ロボット装置では、ロボットの手先にかかる作用力を直接計測することで、組立精度を向上することが行われている。このロボットの手先にかかる作用力を計測するために、ロボットの手先に力センサが搭載されることある。しかしながら、作用力を計測するだけでなく動的に制御する場合、ロボットを駆動する関節と手先のセンサの間に他の関節やフレーム・ケーブルなどが介在するため、反応が鈍くなり、作業時間が伸びる問題がある。
【０００８】
また、ロボットのリンクを連結する関節にかかる推力を直接検出するセンサを配置する構成も知られている（例えば下記の特許文献１）。ロボットアームの各関節に作用する推力によりロボットアームの先端、つまりワークへの作用力を検出することができ、関節トルクの直接制御による高応答作業が両立できる。また、ロボットでは、作業空間で移動する際に位置制御モードを用い、ワーク近傍で作用力を制御する力制御モードを用いる、といった制御切り替え方式も知られている。
【０００９】
一方で、この種のロボット装置を用いた生産ラインでは、プラントの上位制御装置や、ティーチングペンダントのような作業端末から、緊急的にロボット装置を停止させる停止信号が送信されることがある。このような非常停止を行う場合、停止信号の後、即座にロボット装置を停止させるのは困難であり、特別な停止制御モードが実行されることがある。例えば、位置制御中に非常停止する場合、教示軌道に沿って減速、停止する制御手法が知られている（下記の特許文献２）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１０−２８６７８９号公報
【特許文献２】特開平０１−１１９８０９公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
例えば上記の特許文献２に記載の技術では、位置制御中に非常停止する場合、位置制御モードを利用して教示軌道に沿って減速、停止を行う。ところが、このように停止制御モードで位置制御に強制的に切り替えると問題が生じる場合がある。例えば、力制御モードでワークに接触しながら作業するようプログラムされた教示軌道上の位置で非常停止が発生した場合、本来の力制御モードによる制御が働かなくなる。位置制御モードのみが作動した状態でワークに接触すると、モータ制御の積分・外乱オブザーバなどの作用によりロボットの出せる力をフルにワークにかけてしまう可能性があり、ワークや、ロボット自身を損傷する可能性がある。
【００１２】
そこで、本発明の課題は、停止信号に応じてロボット装置を停止させる停止制御において、ワークやロボット装置を損なうことなく、ロボット装置を停止させることができるようにすることにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明においては、関節で連結されたリンクと、前記リンクの位置を検出する位置センサと、前記関節の負荷を検出する力センサと、を備えたロボット装置の制御方法であって、前記ロボット装置は、前記位置センサに基づき前記関節を制御する位置制御モードと、前記力センサに基づき前記関節を制御する力制御モードと、を有する制御装置を備えており、前記制御装置が、前記ロボット装置を停止させる停止信号を検出する停止信号検出工程と、前記位置制御モードにおいて前記停止信号を検出した場合、前記力制御モードを用いて前記関節を停止させる停止制御工程と、を有する構成を採用した。
【発明の効果】
【００１４】
上記構成によれば、位置制御モード中に停止信号が入力（受信）された場合、力制御モードを有効にして停止制御モードを実行する。これにより、例えば力制御モードにおけるインピーダンス制御を利用することができる。従って、停止信号に応じてロボット装置を停止させる停止制御において、ワークやロボットの損なうことなくロボット装置を停止させることができる。
【図面の簡単な説明】
【００１５】
【図１】ロボット装置の概略構成を示す説明図である。
【図２】ロボット制御装置の概略構成を示す説明図である。
【図３】ロボットアームの制御ブロック説明図である。
【図４】本発明の実施形態においてロボットを力制御する制御手順を示したフローチャート図である。
【図５】本発明の実施形態においてロボットを位置制御する制御手順を示したフローチャート図である。
【図６】本発明の実施形態に係るロボット制御を示したフローチャート図である。
【図７】（Ａ）、（Ｂ）は本発明の実施形態に係るロボット動作を示した説明図である。
【図８】本発明の実施形態に係るロボット動作を示した説明図である。
【図９】本発明の実施形態に係るロボット動作を示した説明図である。
【図１０】（Ａ）、（Ｂ）は本発明の実施形態に係るロボット動作を示した説明図である。
【図１１】（Ａ）、（Ｂ）は外部入力装置の画面の一例を示した説明図である。
【図１２】ロボット装置の自動運転時の制御を示したフローチャート図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００１７】
本実施形態のロボット装置１００は、図１に示すように、多関節ロボットとしてのロボットアーム２００（ロボット装置）と、ロボットアーム２００を制御するロボット制御装置３００と、外部入力装置４００を備えている。
【００１８】
外部入力装置４００は、ロボット制御装置３００に複数の教示点のデータを送信する教示装置であり、操作者がロボットアーム２００の動作を指定するのに用いられる。外部入力装置４００は「ティーチングペンダント」のような名称で呼ばれることがある。また、ロボットアーム２００、ロボット制御装置３００、外部入力装置４００はこれらが配置された生産ラインなどのプラントにおいて、ネットワークなどを介して接続された上位制御装置４２０とともにロボットシステムを構成する。このロボットシステムは、例えばロボットアーム２００によってワークＷに対する組立や加工操作を行わせることによって、工業製品やその部品などの物品を製造するために用いられる。
【００１９】
ロボットアーム２００は、本実施形態では、６関節ロボットである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６周りにそれぞれ回転駆動する複数（６つ）のサーボモータ２０１〜２０６を有している。
【００２０】
図１のロボットアーム２００は、本実施形態では、６関節構成の多関節ロボットアームで、関節Ｊ１〜Ｊ６と、これら各関節により連結されたリンクを備える。関節Ｊ１〜Ｊ６は、サーボモータ２０１〜２０６によりそれぞれ駆動される。複数（６つ）のサーボモータ２０１〜２０６は、各関節Ｊ１〜Ｊ６を、関節軸Ａ１〜Ａ６周りにそれぞれ回転駆動する。
【００２１】
ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に、手先（ロボットアーム２００の先端）を向けることができる。一般に、ロボットアーム２００の位置および姿勢は、適宜設定された３次元座標系で表現することができる。図１中のＴｏはロボットアーム２００の台座に固定した座標系を、また、Ｔｅはロボットアーム２００の手先に固定した座標系を示している。なお、本実施形態では、関節Ｊ１〜Ｊ６が回転関節である構成を前提とするが、以下の説明は直動関節を用いた構成などにおいても同様に適用される。
【００２２】
ロボットアーム２００の先端には、把持装置として、ロボットハンド２５２が装着されている。ロボットアーム２００は、例えば、把持装置としてのロボットハンド２５２でワークＷを把持し、対象物に嵌合させたり、圧着したりする作業に用いることができる。このような作業をロボットアーム２００に行わせることにより、把持装置としてのロボットハンド２５２で把持したワークと、対象物と、を組み立て、工業製品やその部品のような物品を製造することができる。
【００２３】
本実施形態のような回転関節構成では、「関節の位置」は関節の角度を意味する。また、関節Ｊ１〜Ｊ６は直動関節であってもよく、その場合、「関節の位置」とは、直動関節の位置で、「関節のトルク」とは直動関節にかかる力である。また、関節の位置情報の時間微分については、「関節の速度」、「関節の加速度」、「関節の加加速度」の概念によって扱うことができる。
【００２４】
本実施形態では、各サーボモータ２０１〜２０６は、電動モータ２１１〜２１６と、電動モータ２１１〜２１６に接続されたセンサ部２２１〜２２６とを備える（図３参照）。各センサ部２２１〜２２６には関節の角度を検出する位置センサ（角度センサ）と、関節のトルクを検出できるトルクセンサ（力センサ）が含まれる。各サーボモータ２０１〜２０６は、不図示の減速機を含み、ベルトやベアリング等を介してそれぞれの関節Ｊ１〜Ｊ６を駆動する駆動系に結合されている。なお、各関節の駆動源は、サーボモータ２０１〜２０６に限らず、例えば人工筋肉等であってもよい。
【００２５】
さらに、ロボットアーム２００は、各サーボモータ２０１〜２０６の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御部２３０を有している。サーボ制御部２３０は、入力したトルク指令値に基づき、各関節Ｊ１〜Ｊ６のトルクが指令トルクに追従するよう、各電動モータ２１１〜２１６に電流指令を出力し、各電動モータ２１１〜２１６の動作を制御する。なお、本実施形態では、サーボ制御部２３０を１つの制御装置で構成しているものを説明しているが、各電動モータ２１１〜２１６にそれぞれ対応したサーボ制御部が備えられていてもよい。
【００２６】
図２はロボット制御装置３００の機能ブロック構成を示している。ロボット制御装置３００は、制御部としてのＣＰＵ３０１と、記憶部としてのＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ（ハードディスクドライブ）３０４、記録ディスクドライブ（記録媒体）３０５と、各種のインタフェース３０６〜３０９と、を備えている。
【００２７】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５および各種のインタフェース３０６〜３０９が、バス３１０を介して接続されている。例えばＲＯＭ３０２には、ＣＰＵ３０１（コンピュータ）に読み込ませ、後述の制御を行わせるためのプログラム３３０が格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果などを一時的に記憶可能な記憶部を構成する。ＨＤＤ３０４は、演算処理結果や各種のデータ（最良指令軌道や最良評価値を含む）などを記憶するために用いられる。
【００２８】
外部入力装置４００（ティーチングペンダント）はインタフェース３０６に接続されており、ＣＰＵ３０１はインタフェース３０６およびバス３１０を介して外部入力装置４００からの教示点のデータの入力を受け付ける。
【００２９】
サーボ制御部２３０は、インタフェース３０９に接続されており、ＣＰＵ３０１は、各関節の目標トルクのデータを所定時間間隔でバス３１０およびインタフェース３０９を介してサーボ制御部２３０に出力する。
【００３０】
インタフェース３０７には、モニタ３２１が接続されており、モニタ３２１には、各種画像を表示することができる。インタフェース３０８には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２を接続することができる。記録ディスクドライブ３０５は、記録ディスク（記録媒体）３３１に記録された各種データやプログラム等を読み出すことができる。なお、本発明に係るプログラムが記録されるコンピュータ読み取り可能な記録媒体としては、例えば記録ディスク３３１を用いることができる。しかしながら、本発明に係るプログラムが記録されるコンピュータ読み取り可能な記録媒体は、例えば外部記憶装置３２２などの不揮発性メモリや外付けＨＤＤなどであってもよい。
【００３１】
図３はロボットアーム２００の各関節を制御する制御系を詳細に示している。図３の１００で示した制御ブロックは上記のロボット装置１００の制御系に相当する。ロボットアーム２００の各関節の電動モータ２１１〜２１６と、位置センサ５５１〜５５６およびトルクセンサ５４１〜５４６からなるセンサ部２２１〜２２６と接続されている。位置センサ５５１〜５５６およびトルクセンサ５４１〜５４６の検出情報、即ち、各関節軸の角度情報（ｑ１…ｑ６）、トルク情報（τ１…τ６）は、それぞれ対応した制御ブロックにフィードバックされる。
【００３２】
また、ロボット装置１００はサーボ制御部２３０（図１）を備える。サーボ制御部２３０は、電動モータ２１１〜２１６に対する動作指令を行うモータ制御部５３１〜５３６と、位置制御を行う位置制御部５２１〜５２６と、力制御との切り替え制御を行う切り替え制御部５１１〜５１６を備える。
【００３３】
また、ロボット制御装置３００は、サーボ制御部２３０に対して駆動指令を行う位置目標値生成部５０６と、力制御部５０５と、力制御部に対して検出された力（Ｆ）の値を入力する力検出部５０４を備える。
【００３４】
ロボットアーム２００の各種パラメータによって記述されたロボットモデル５０３は、図２の例えば外部記憶装置３２２に格納されている。ロボット制御装置３００は、このロボットモデル５０３のロボットアーム情報を取得し、必要な制御則に基づきロボットアーム２００を制御する。外部入力装置４００（ティーチングペンダント）は、ロボット制御装置３００に対して、目標とする動作を入力する力教示データ５０１（Ｆｒｅｆ）と位置教示データ５０２（Ｐｒｅｆ）を指令する入力部を構成する。
【００３５】
図４は、ロボットアーム２００の動作を制御する力制御モードの流れを示している。図示の制御手順は、ＣＰＵ３０１の制御プログラムとして、上記のＲＯＭ３０２や外部記憶装置３２２に格納しておく。
【００３６】
図４のステップＳ１では、例えば実際のロボット動作に先立ち、操作者（作業者、管理者、ユーザ）が位置目標値と力目標値を入力する。ここで入力された位置目標値と力目標値は、位置指令値と力指令値として、力教示データ５０１、位置教示データ５０２として記憶される。なお、この位置目標値には、通常の動作において、例えばロボットアーム２００がワークに接触し始めるなどして移動中の位置制御モードから力制御モードに切り替える位置データが含まれる。この力制御モードにおいては、外部入力装置４００は力教示データ５０１を力制御部５０５に出力している（図３）。
【００３７】
ステップＳ２では、力制御部５０５が、ロボットアーム２００の手先にかかる力が、力目標値としての力教示データ５０１（Ｆｒｅｆ）に倣うよう、ロボットモデル５０３に基づいてモータトルク指令値（力）を算出する（図３）。このとき用いられるロボットモデル５０３は、上記のように例えば外部記憶装置３２２に格納しておく。
【００３８】
ステップＳ３では、切り替え制御部５１１〜５１６は各関節に力指令値としてモータトルク指令値τＭＦｒｅｆ１…６を出力する。ステップＳ４では、モータ制御部５３１〜５３６が、位置センサ５５１〜５５６が出力する位置情報θ１…６（関節角度）を用いて電動モータ２１１〜２１６のモータトルク指令値を実現するよう通電制御を行う（図３）。
【００３９】
ステップＳ５では、通電されることにより電動モータ２１１〜２１６が関節トルクτ１…６を発生する。そして、ステップＳ６において、各関節に搭載されたセンサ部２２１〜２２６では、位置センサ５５１〜５５６は位置情報θ１…６を検出し、トルクセンサ５４１〜５４６は関節トルクτ１…６を検出する（図３）。検出されたこれらの位置情報θ１…６（関節角度）と関節トルクτ１…６は、それぞれロボット制御装置３００にフィードバックされる。
【００４０】
ステップＳ７において、力検出部５０４では、ロボットモデル５０３と位置情報θ１…６（関節角度）を用いて関節トルクτ１…６をロボットアーム２００の手先にかかる力Ｆに変換することができる。ロボットアーム２００の手先にかかる力Ｆを求めるのに、関節角度の代わりにモータ角度を用いてもよい。その場合、例えば、各関節の減速機の入力側の電動モータ２１１〜２１６の駆動軸の角度を検出する位置センサが用いられる（不図示）。力制御部５０５は、このロボットアーム２００の手先にかかる力Ｆの実際値と、力教示データ５０１（Ｆｒｅｆ）を用いて、モータトルク指令値τＭＦｒｅｆ１…６を出力する。この指令値は、切り替え制御部５１１〜５１６を介してモータトルク指令値τＭｒｅｆ１…６として出力される。
【００４１】
ステップＳ８では、所定の判定条件を用いて力制御モードによる駆動が終了したか判定し、終了していない場合は上記のステップＳ２〜Ｓ７の駆動制御を繰り返し実行する。このステップＳ８の駆動終了判定は、例えば、力検出部５０４が位置センサ５５１〜５５６から取得した位置情報θ１…６（関節角度）を用いて行う。あるいはさらに、ロボットアーム２００の手先にかかる力Ｆの実際値（ワークからの反力）が組立終了状態などに相当する所定の力学的な状態に達したか否かを判定する。
【００４２】
以上のようにして、力制御モードによって、ロボットアームの手先にかかる力を所望の力目標値に倣うよう制御することが可能である。なお、詳細は不図示であるが、力制御部５０５が行う力制御過程には、いわゆるインピーダンス制御が含まれていてよい。
【００４３】
このインピーダンス制御は、関節の応答動作に弾性を付与する弾性制御、例えば手先位置をバネおよびダンパで拘束されているが如く駆動する制御である。このインピーダンス制御は、制御パラメータとしてバネ定数Ｋ、ダンピング定数Ｃを用いて、当該関節の物理特性（弾性およびダンピング特性）がこれらの定数（Ｋ、Ｃ）に設定された物理特性（弾性およびダンピング特性）となるように実行される。なお、例えば図３において、電動モータ２１１〜２１６とセンサ部２２１〜２２６を接続する順序はあくまでも一例であり、この接続順に限らず他の接続順でも力制御を行うことが可能である。
【００４４】
図５は、ロボットアーム２００の動作を制御する位置制御モードの流れを示している。図示の制御手順は、ＣＰＵ３０１の制御プログラムとして、上記のＲＯＭ３０２や外部記憶装置３２２に格納しておく。
【００４５】
図５のステップＳ１１では、例えば実際のロボット動作に先立ち、操作者が位置目標値を入力する。入力された位置目標値は位置指令値Ｐｒｅｆとして位置教示データ５０２に記憶される。この位置目標値は、例えばロボットアーム２００の手先などに配置された基準位置の作業空間におけるグローバル座標で表現される。そこで、ステップＳ１２では、位置目標値生成部５０６がロボットモデル５０３に基づいて位置目標値を関節位置指令値ｑｒｅｆ１…６に変換する。この時、逆運動学演算によって、アームの手先などに配置された基準位置を実現する各関節の関節位置（関節角度）が求められる。
【００４６】
ステップＳ１３では、位置制御部５２１〜５２６が、関節角度ｑ１…６が関節位置指令値ｑｒｅｆ１…６に倣うようモータトルク指令値τＭＰｒｅｆ１…６を生成する。なお、このとき、上述の通り、関節角度を示す信号としては関節角度の代わりに減速機（不図示）の入力側で検出したモータ角度を用いてもよい。ステップＳ１４では、切り替え制御部５１１〜５１６は、位置制御部５２１〜５２６が位置制御により発生した指令値をモータトルク指令値τＭＦｒｅｆ１…６として各関節のモータ制御部５３１〜５３６に出力する。
【００４７】
以下、図５のステップＳ１５、Ｓ１６、Ｓ１７、Ｓ１８の処理は、それぞれ図４のステップＳ４、Ｓ５、Ｓ６、Ｓ８の処理と同等である。なお、Ｓ１８の位置制御モードによる駆動の終了判定は、例えば、ロボットハンド２５２が把持しているワークが所定の組み付け位置に到達したか、などを検出することにより行う。以上のようにして、位置制御モードによって、ロボットアームの手先位置が所望の目標値となるよう制御することが可能である。
【００４８】
図４のステップＳ１〜Ｓ８の力制御モードと、図５のステップＳ１１〜Ｓ１８の位置制御モードと、は、切り替え制御部５１１〜５１６により切り替えることができ、製造作業の進行に応じて、いずれか片方が選択される。あるいは、切り替え制御部５１１〜５１６は、力制御モードと、位置制御モードと、をそれぞれ適当な重み付けを与えて組合せるよう構成されていてもよい。即ち、切り替え制御部５１１〜５１６を、力制御によるモータトルク指令値τＭＦｒｅｆ１…６と、位置制御によるモータトルク指令値τＭＰｒｅｆ１…６と、を特定の重みで組合せ、モータトルク指令値τＭｒｅｆ１…６を生成するよう構成する。
【００４９】
次に、図１１（Ａ）、（Ｂ）および図１２を参照して、外部入力装置４００で実施可能なユーザーインターフェースの一例につき説明する。以下に示すユーザーインターフェース（ＧＵＩ）を実施した外部入力装置４００は、本実施形態のロボットシステムにおいて、ロボット制御に係るユーザ操作を受け付けるユーザーインターフェース装置（手段）を構成することになる。外部入力装置４００は、いわゆるティーチングペンダントとして構成されていてもよく、また、ＰＣなどを利用した制御端末であってもよい。
【００５０】
図１１（Ａ）、（Ｂ）は外部入力装置４００が備える表示装置の表示画面７００の一例を示している。この表示画面７００は、例えばＧＵＩ構成であって、図示したボタンやメニューなどのメタファは、例えばマウスなどのポインティングデバイスや指によるクリックやタップによって有効化ないし選択操作できるよう構成することができる。ロボットアームの制御モードはボタン７０１によって選択する。ここでは、ボタン７０１は手動ボタンおよび自動ボタンの２つが配置されているが、自動／手動の設定をトグル選択するようなボタンであれば１つのボタンで構成してもよい。ボタン７０１が図示のような２ボタン構成であれば、いわゆるラジオボタン操作方式とし、自動／手動の設定を排他的に選択するよう構成する。例えば、自動ボタンを押した場合は手動から自動へモードが切り替わり、手動モードの方は無効化する。自動／手動モードのうち、手動モードはロボットアーム２００の教示や、ロボットアーム２００に近接して作業を行う際に選択される。この手動モードは外部入力装置４００がティーチングペンダントなどの場合必須であるが、ロボットプログラミングのために用いられる制御端末であれば設けなくても良い可能性がある。また、自動モードはあらかじめ設定された動作を実行するモードであり、教示済みのロボット動作をロボットアーム２００に再現させる場合に使用される。
【００５１】
図１１の例では、表示画面７００には停止ボタン７０２が設けられている。この停止ボタン７０２は、実行中のロボットプログラムを例えば強制的に停止させるために用いられる。
【００５２】
図１１のＧＵＩでは、停止ボタン７０２の操作などに応じてロボットアーム２００を停止させる場合の停止制御モード（停止モード）をメニュー７０６を用いて選択できるようにしてある。メニュー７０６は、例えば、図１１（Ｂ）のようにドロップダウンメニューとして構成することができる。この例では、メニュー７０６により選択可能な停止制御モードは、例えば、最短、軌道追従、衝撃緩和の３つの種類の停止制御モード（停止モード）のいずれかである。また、デフォルトの停止制御モードは、例えば最短距離ないし最短時間でロボットアーム２００を停止させる最短停止モードとしておくことができる。
【００５３】
また、メニュー７０６から設定する以外に、動作プログラム内に停止モードを記載し、任意の動作区間で停止モードを個別に設定することも考えられる。例えば、この方式で、動作プログラム内に停止モードが記載されている場合は、動作プログラムの停止モード設定が外部入力装置４００の設定より優先される。
【００５４】
動作プログラムは外部入力装置４００から直接編集してもよい。ボタン７０７は不図示の編集モードに表示画面７００を移行させるためのものである。また、ボタン７０８はロードないし選択されている動作プログラムを実行させ、ロボットアーム２００を動作させるために用いられる。
【００５５】
さらに、図１１のＧＵＩ画面では、インジケータ７０３、７０４、ステータス画面７０５が配置されている。インジケータ７０３、７０４は、それぞれサーボ状態、動作速度（％表示）の表示に用いられる。また、テキストボックスなどの構成を有するステータス画面７０５を用いて、ログ情報や、エラー、警告メッセージなどの文字列で表現された各種ステータスを表示させることができる。
【００５６】
図１２は動作プログラムに基づきロボットアーム２００を動作させている場合に、図１１の表示画面７００により選択されている停止制御モード（停止モード）に応じて行なわれる停止制御の一例を示している。
【００５７】
ロボットアーム２００を自動運転させるには、例えば図１１に示したユーザーインターフェースのボタン７０１で自動モードを指定し、ロボットアームの制御モードを自動モードにする。また、ユーザーインターフェースに設けた適当な起動ボタン（不図示）を押下（Ｓ４１：図１２）すると、ＣＰＵ３０１は動作プログラムなどの各種プログラムを読み込み（Ｓ４２）、ロボットを起動状態に移行させる。その後、起動状態において、ボタン７０８例えば図１１に示したユーザーインターフェースのボタン７０８（実行ボタン）を操作する（Ｓ４３）ことにより、ロボットアーム２００が設定されたロボットプログラムに従って自動運転を開始する。
【００５８】
この自動運転において、ＣＰＵ３０１は１つの教示点から次の教示点への軌道を生成し（Ｓ４４）、ロボットアーム２００に実行させる。この教示点から次の教示点までの１軌道の自動運転では、電動モータ２１１〜２１６の現在値情報と目標値情報から軌道計算を行う。そして、停止信号が入力されていない場合は電動モータ２１１〜２１６へ指令値を出力し（Ｓ４６）、目標指令値に到達（Ｓ４７）するまで教示軌道に基づき動作点の補間を行う。また、１軌道の自動運転のループでは、図１１のユーザーインターフェースの停止ボタン７０２（あるいはプラントの上位制御装置４２０：図１）などから停止信号が入力されたか否かを随時、判定する（Ｓ４５：停止信号検出工程）。
【００５９】
停止信号が入力（Ｓ４５）された場合、ＣＰＵ３０１はステップＳ４８、Ｓ５２、Ｓ５７で外部入力装置４００を用いて事前に設定された現在の停止モード（停止制御モード）を判定し、停止モードに応じた停止処理を行う。停止モードが“最短”モードの場合（Ｓ４８）は、電動モータ２１１〜２１６の各々を各関節ごとに定められた所定の最大減速度で減速、停止させるよう指令値を出力する（Ｓ４９）。この最大減速度は、例えば、当該関節について、採用されている機構の構造、仕様などに応じて、機構上定められている値である。なお、ロボット装置では、通常、このような機構上の制限値は、減速度（速度）のみならず、加速度、加加速度などに関しても制限値が設けられている。従ってこの“最短”モードの最短停止では、減速度（速度）のみならず、機構上定められている他の所定の制約条件を超過しないよう制御を行う。その後、ロボットアーム２００が停止（Ｓ５０）したら、その関節に配置されているブレーキ（不図示）をブレーキロック状態とし（Ｓ５１）、アームに停止時の位置姿勢を保持させ、処理を終了する。
【００６０】
この“最短”停止モード（Ｓ４８〜Ｓ５１）では最短時間もしくは最短距離で停止することができる。ただし、ロボットアーム２００の慣性等によりオーバーシュートが生じる上にアームの軌道を考慮していないため、教示した軌道外にロボットアーム２００が出てしまい、周辺のワークや装置との干渉が発生する恐れがある。
【００６１】
また、停止モードが“軌道追従”モードの場合（Ｓ５２）は、現在値から停止処理を行った際に加減速変化が一定以下となるよう制限しつつ、予め教示された教示軌道を追従できる位置を目標値に再設定（Ｓ５３）しつつロボットアーム２００を停止させる。この停止モードでも、電動モータ２１１〜２１６への指令値の出力（Ｓ５４）、アーム停止（Ｓ５５）後のブレーキロック（Ｓ５６）は上記と同様である。“軌道追従”モードの場合、教示時の軌道を維持する制御を行うため、教示時と周囲の状況が同じであればワークや他の物体との干渉は発生しない。ただし“最短”モードと比べ停止時間および停止距離が長くなる可能性がある。
【００６２】
また、停止制御モードが“衝撃緩和”モードの場合の停止制御は、例えば図６に示すように実行される。図６は、“衝撃緩和”モードによりロボットアームを停止させる制御手順を示している。図示の制御手順は、ＣＰＵ３０１の制御プログラムとして、上記のＲＯＭ３０２や外部記憶装置３２２に格納しておく。
【００６３】
図６において、ステップＳ２〜Ｓ８の力制御と、Ｓ１１〜Ｓ１８の位置制御の各ステップ（工程）は、それぞれ図４および図５で説明したものと同じであるから、以下では詳細な説明は省略する。本実施形態の“衝撃緩和”モードでは、位置制御中、例えば教示点〜教示点の１軌道中、ワークに向かって移動中の位置制御モードで停止信号が入力された場合、停止制御では力制御を有効にして、衝撃緩和を行う。
【００６４】
図６のステップＳ１９では、図１１のユーザーインターフェース７００の停止ボタン７０２（あるいはプラントの上位制御装置４２０）などによって、停止信号が入力された否かを判定する（停止信号検出工程）。停止ボタン７０２は、突発的な事象によって、非常停止のために操作される。また、停止信号を上位制御装置４２０（図１）が発生する場合は、プラントに配置された他の装置のエラー・ステータス信号に基づき上位制御装置が発生するか、他の装置のエラー・ステータスから直接、停止信号が生成されてもよい。また、停止信号はロボット制御装置３００やロボットアーム２００内部のステータス異常、設定制限オーバーになどによって発生してもよい。ステップＳ１９で停止信号が発生していない場合は、ステップＳ１３〜Ｓ１８の位置制御モードによるロボット制御ループが進行する。
【００６５】
ステップＳ１９において、停止信号が入力されている場合には、ステップＳ２０に進み、ロボットアーム２００やロボットハンド２５２が他装置・ワークに接触していないか判定する。この判定には、例えばロボットアーム２００の手先にかかる力Ｆを検出する力センサ（不図示）を用いることができる。また、モータの電流、ロボット手先や、ワークや他の装置の側に設置された力センサ値などに基づいて、閾値を超えているか判定することにより、接触を検出してもよい。
【００６６】
ステップＳ２０で接触が検出されていなければ力制御（Ｓ２〜Ｓ８）を有効にしてロボットアーム２００を制御する。これにより、ロボットアーム２００は進行中の軌道の終点の目標位置（Ｓ１１で設定されている）に向かって力制御によってアプローチするよう制御される。一方、ステップＳ２０で接触を検出している場合は、接触した接触位置Ｐを記憶する（Ｓ２１）。ここで接触位置Ｐｎのサフィックスｎは接触の回数で、ＣＰＵ３０１のレジスタやＲＡＭ３０３上に配置されたカウンタなどを用いて接触する毎にインクリメントされる。
【００６７】
ステップＳ２２ではロボットアーム２００の接触が1回目かどうか判定する。接触した回数が１の場合（ｎ＝１）には、ステップＳ２３において、前記力制御部５０５のバネ定数Ｋを上げる。これにより手先位置が位置目標値から乖離しても不要な力を生ずることなく停止することができる。
【００６８】
さらに、接触した回数が２以上の場合（ｎ≧２）には、ステップＳ２４において接触点（接触位置）の中心で停止させるよう制御する。この接触点（接触位置）の中心（中間）に設定する位置目標値は、例えば接触位置Ｐｎ（ｎ＝１、２…ｋ）の重心とする。このように、接触位置Ｐｎ（ｎ＝１、２…ｋ）の重心であれば、必ず実際に接触を生じた各接触点の間の位置である。従って、その位置では他の物体と干渉を生じる確率は極めて低いと考えてよい。接触位置Ｐｎ（ｎ＝１、２…ｋ）の重心の座標は、例えば次式によって求めることができる。
【００６９】
【数１】
2020183021.tif 000003
【００７０】
ステップＳ２５では、以上のようにして接触点の中心（中間）に設定した位置目標の位置でロボットアーム２００を停止させるよう、接触１回目で上げたバネ定数を元の値に戻す。このバネ定数の復元により、力制御モードにおけるインピーダンス制御の位置目標値に近づく機能が働くようになる。
【００７１】
以下では、上記のような本実施形態の衝撃緩和モードにおけるロボットアーム２００の動作を図７〜図１０を用いて詳細に説明する。
【００７２】
図７（Ａ）は、ロボット装置１００が、ハンドによって把持しているワークＷ１をワークＷ２の凹部に挿入する工程の様子を示している。同図においては、この工程で、ワークＷ１をワークＷ２の凹部に挿入するワークの軌道を破線で示してある。多関節ロボットであるロボット装置１００が、図示のようにワークＷ１をほぼ直線的に動作させるには各関節軸を同時に制御する必要がある。また、ロボットアームの最大リーチ長近傍の姿勢では、特に各関節の可動範囲の制約もあるため、さらに直線動作の制御が困難になる。そのため、目標軌道に対して実際のワークの軌道がズレてしまう可能性がある。また、直前の動作の影響（残留振動など）を受け目標軌道に対して実際のワークの軌道がズレることも考えられる。例えば、図７（Ｂ）の例では、上記のような各関節の可動範囲の制約や振動の影響で、ワークＷ１がワークＷ２の凹部内の本来の挿入位置姿勢からズレを生じている。
【００７３】
上記のような事情で、従来の教示軌道に沿った減速停止では、残留振動や制御の応答性によって本来は接触しない動作だったとしても、図８に示すように組み付け先のワークＷ３にワークＷ１を接触（衝突させてしまう）場合がある。即ち、停止信号（停止指令）によって図８の星印で示すような一点鎖線の教示軌道Ｏ２上の位置に位置目標値Ｄ１を再設定した場合でも、停止指令入力時の状況によっては、実際にはワークＷ１がＯ１のような軌道を取り、接触が発生する可能性がある。図８のように位置制御中に停止した場合は、ワークＷ１、Ｗ３の接触により発生した接触力は停止後も解消されず、接触点ＴＰを介して把持しているワークやロボット装置に過負荷が掛かり続ける。
【００７４】
これに対して、本実施形態では、停止信号が入力された時、停止制御モードに移行すると、ロボットに掛かる力を検出して動作する力制御モードを有効化する。上記のように、力検出などにより接触を検出した場合、その接触位置Ｐｎを記憶すると同時に接触回数ｎが１回であれば力制御のパラメータであるインピーダンス制御のバネ定数（仮想的な弾性係数）を上げる。これによりロボットアーム２００の各関節の仮想的な弾性を増大させ、位置目標値に向かおう（戻ろう）とする力を低減し、接触によって発生する力を緩和することができる。
【００７５】
さらに、本実施形態の衝撃緩和モードの制御では、例えば関節の弾性的な応答によって生じる複数の接触点の中間の他の物体との接触の可能性の極めて低い位置を位置目標値に再設定する。例えば図９に示すように、停止制御モードにおいて、ワークＷ１がワークＷ４、Ｗ５に対して接触したとする。この場合、ワークＷ４に対する１回目の接触（Ｐ４）で関節のバネ定数（仮想的な弾性係数）が増大され、ロボット関節の弾性的な運動によってワークＷ５に対して２回目の接触（Ｐ５）が生じる。この場合、１回目、２回目の接触点の重心Ｇに位置目標値を再設定する。これにより、ワークＷ１は軌道Ｏ７を通り、上記の重心Ｇに至る経路で２つの接触点の間の空間の他の物体との接触の可能性の極めて低い位置を位置目標として操作されることになる。なお、図７〜図１０では、ワークＷ１の位置（黒丸）は、ワークＷ１の重心や幾何学的な中心に相当するが、演算上はロボットアーム２００のハンド中心などの他の基準位置を用いて接触点や目標位置の座標を計算してもよい。また、上記のようにして再設定された軌道Ｏ７の動作では、なお１回目の接触で増大させた関節のインピーダンス制御におけるバネ定数（仮想的な弾性係数）を元の値に戻す。これにより確実に再設定された停止位置目標にワークを移動させることができる。
【００７６】
なお、図６の例では、複数回接触を２回目までしか考慮していないが、それより多い複数回接触した場合についてそれぞれ異なる制御を行うようにしてもよい。１回目の接触、２回目の接触、…ｎ回目の接触が発生した場合、ｎ回目の接触のみを考慮して前述した力制御を行うことで接触力を低減しても良い。
【００７７】
また、ロボットアーム２００の関節の弾性を増大させた時に生じる複数回の他の物体との接触には、図１０（Ａ）、（Ｂ）などに示すようなケースも考えられる。図１０（Ａ）では、ワークＷ１はワークＷ６の凹部内に向かう軌道Ｏ６の途中で、凹部外周と１回目の接触を生じ、凹部底部と２回目の接触を生じている。また、図１０（Ｂ）では、ワークＷ１はワークＷ７の平板状の上面で１回目と２回目の接触を生じている。これら図１０（Ａ）、（Ｂ）のいずれの場合も、同一方向に接触力が発生している。このような接触態様では、重心Ｇに停止位置目標を再設定しても、ワークＷ６、Ｗ７への再接触の回避を保証できない可能性がある。即ち、図１０（Ａ）、（Ｂ）に示すように同一方向に接触力が発生している場合には、単純に接触点の重心を位置目標値に設定しても接触力の低減が望めない。
【００７８】
そこで、複数の接触点での発生する反力の方向を判定し、複数の接触点での接触による生じる反力の方向がほぼ同一方向である場合は、複数の接触点の重心の位置から接触反力の方向に移動させる制御を行ってもよい。例えば、図１０（Ａ）、（Ｂ）に示すように、停止位置目標Ｄ２、Ｄ３は、複数の接触点の重心の位置を基準として発生した力の方向に予め設定した所定距離だけ移動した位置に取る制御を行う。このような停止位置目標Ｄ２、Ｄ３の再々設定制御を行うことにより、接触点の間の空間の他の物体との接触の可能性の極めて低い位置を位置目標として停止制御を行うことができる。
【００７９】
また、ロボットアーム２００が把持しているワークＷ１が組付対象物に噛み込む停止動作となる可能性もある。例えば算出した位置目標値に、設定したバネ定数（仮想弾性係数）で動作させようとしたが動かない場合、ロボットアームの手先にかかる力が力目標値に到達しないことが考えられる。このようなケースを考慮して、一定時間が経過してもトルクセンサ５４１〜５４６から得られる力の情報が力目標値に到達しない場合、位置目標値を接触点がカウントされる時点より前（過去）の動作軌道上に再設定する制御を行う。その場合、力目標値が得られるまで、到達するまで位置目標値を繰り返し前（過去）に遡って再設定してもよい。
【００８０】
以上、説明したように、本実施形態によれば、位置制御モード中に停止信号が入力（受信）された場合、その停止制御モードでは力制御モード（インピーダンス制御）を有効にする。これにより、他の物体との接触が生じる場合でも、ロボット装置の弾性的な応答によって、ワーク、ロボット装置、作業環境中の他の物体を損うことなく、ロボット装置を停止させることができる。また、複数回、ロボット装置が他の物体と接触する状況においても、その中心点で停止させるよう位置目標を再設定することにより、ロボット装置を確実に他の物体と接触の生じないよう停止させることができる。また、ロボット装置の復旧動作を容易に行うことができる。
【００８１】
なお、ロボットアーム２００が６つの関節を有する６関節ロボットである場合を説明したが、関節の数はこれに限定されるものではない。関節の駆動方向は、回転方向の駆動だけに限らず、直動方向の駆動（伸縮駆動）も含まれる。また、以上では、ロボット関節の駆動源としてサーボモータ２０１〜２０６を示したが、関節の駆動源はサーボモータ２０１〜２０６に限らず、例えば人工筋肉などであってもよい。また、上述した種々の実施形態は、制御装置に設けられる記憶装置の情報に基づき、伸縮、屈伸、上下移動、左右移動もしくは旋回の動作またはこれらの複合動作を自動的に行うことができる機械に適用可能である。
【００８２】
本発明は、上述の実施例の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステムまたは装置に供給しそのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現できる。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８３】
１００…ロボット装置、２００…ロボットアーム、２２１〜２２６…センサ部（位置・トルク）、３００…ロボット制御装置（コンピュータ）、３０２…記憶部、Ｊ１〜Ｊ６…関節、５０１…力教示データ、５０２…位置教示データ、５０３…ロボットモデル、５０４…力検出部、５０５…力制御部、５０６…位置目標値生成部、５１１〜５１６…切り替え制御部、５２１〜５２６…位置制御部、５３１〜５３６…モータ制御部、５４１〜５４６…トルクセンサ、５５１〜５５６…位置センサ。
【図１】
2020183021.tif 000004
【図２】
2020183021.tif 000005
【図３】
2020183021.tif 000006
【図４】
2020183021.tif 000007
【図５】
2020183021.tif 000008
【図６】
2020183021.tif 000009
【図７】
2020183021.tif 000010
【図８】
2020183021.tif 000011
【図９】
2020183021.tif 000012
【図１０】
2020183021.tif 000013
【図１１】
2020183021.tif 000014
【図１２】
2020183021.tif 000015