(57)【特許請求の範囲】
【請求項１】
動作プログラムに基づいて駆動するロボットを制御するロボット制御装置であって、
ロボットに作用する外力を推定する外力推定部と、
外力に基づいてロボットを停止させる停止指令部と、
外力に関する判定値を記憶する判定値記憶部とを備え、
判定値記憶部は、ロボットを一時停止させるための停止判定値、停止判定値よりも小さく、ロボットの駆動を再開するための第１の外力判定値、および、第１の外力判定値よりも小さな第２の外力判定値を予め記憶しており、
停止指令部は、動作プログラムに基づいてロボットが駆動している期間中に、外力が停止判定値を超える場合に動作プログラムの実行を一時停止させる制御を実施し、
動作プログラムの実行を一時停止している状態において、予め定められた第１の時間長さの期間中に、外力が連続して第１の外力判定値以下であり、更に、外力が連続して第２の外力判定値を超える時間長さが第２の時間長さ以下の場合に、動作プログラムの実行を再開する制御を実施し、
動作プログラムの実行を一時停止している状態において、予め定められた第１の時間長さの期間中に、外力が連続して第１の外力判定値以下であり、更に、外力が連続して第２の外力判定値を超える時間長さが第２の時間長さより長い場合に、動作プログラムの実行の再開を禁止する制御を実施することを特徴とする、ロボット制御装置。
【請求項２】
第１の外力判定値に基づいて動作プログラムの実行を再開した時刻を記憶する時刻記憶部を備え、
停止指令部は、動作プログラムの実行を再開した後に動作プログラムを一時停止した場合に、再開から停止までのロボットの駆動時間を算出し、前記駆動時間が予め定められた第３の時間長さ未満の場合には、動作プログラムの実行の再開を禁止する制御を実施する、請求項１に記載のロボット制御装置。
【請求項３】
停止指令部は、動作プログラムの実行を一時停止した時から第１の時間長さの期間中に、外力が第１の外力判定値を超えた場合には、動作プログラムの実行の再開を禁止する制御を実施する、請求項１または２に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを制御するロボット制御装置に関する。
【背景技術】
【０００２】
近年では、自動的に駆動するロボットが多用されている。このロボットは、予め作成された動作プログラムに基づいて駆動される。ロボットが動作している期間中に、ロボットが外部から力（以下、「外力」と称する）を受ける場合がある。例えば、ロボットの自動運転期間中に、周囲の機器が接触したり作業者がロボットに接触したりする場合がある。このような場合に、ロボットシステムは、外力を検知して停止したり、被接触物を避ける回避動作を行ったりすることが知られている。
【０００３】
例えば、特許文献１には、ロボットのハンド部に配置された力センサの出力に応じて、ロボットの動作を制限するロボットの教示装置が開示されている。また、特許文献２には、ロボットアームの根元部に力検出器を配置して、ロボットアームに加わる力を検出する接触力検出装置が開示されている。この公報には、制御装置が、ロボットアームに加わる力からロボットアームの動作による内力を差し引くことにより、ロボットアームに作用する接触力を算出することが開示されている。また、この公報には、接触力を検出した場合にロボットアームの接触力を低減する動作を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０６−１５５３４６号公報
【特許文献２】特開２００６−２１２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的な産業用ロボットは、ロボットに加わる外力（接触力）を検出した場合には、安全を確保するために動作プログラムを停止させるように形成されている。近年では人がロボットと協調して作業を行うロボットシステムが知られている。このロボットシステムにおいても、外力が所定の判定値を越えた場合には、動作プログラムの実行を停止するように設計されている。
【０００６】
ところで、ロボットが自動的に停止した後には、生産性を向上させるために、短時間でロボットの作業を再開することが好ましい。たとえば、作業者がロボットに接触してロボットが停止したが、直ぐにロボットから離れる場合がある。このような、ロボットの停止後に外力が取り除かれた場合には、ロボットの作業を速やかに再開することが好ましい。
【０００７】
または、例えば、特許文献２に記載の装置のように、ロボットのベース部分に検出器を設けた場合には、地面が振動する場合にもロボットに外力が加わったと判定される場合がある。たとえば、ロボットの近傍を搬送車が走行した場合に、ロボットに振動が加わる場合がある。ロボットは、外力が加わっていない場合にも停止する場合がある。このような場合には、ロボットの作業を速やかに再開することが好ましい。
【０００８】
一方で、作業者の安全性を確保するために、ロボットが停止した時の状況によっては、ロボットの停止状態を維持することが好ましい。すなわち、ロボットに対する外力の種類によっては、ロボットの停止状態を維持することが好ましい。
【課題を解決するための手段】
【０００９】
本発明のロボット制御装置は、動作プログラムに基づいて駆動するロボットを制御するロボット制御装置であって、ロボットに作用する外力を推定する外力推定部と、外力に基づいてロボットを停止させる停止指令部と、外力に関する判定値を記憶する判定値記憶部とを備える。判定値記憶部は、ロボットを一時停止させるための停止判定値、停止判定値よりも小さく、ロボットの駆動を再開するための第１の外力判定値、および、第１の外力判定値よりも小さな第２の外力判定値を予め記憶している。停止指令部は、動作プログラムに基づいてロボットが駆動している期間中に、外力が停止判定値を超える場合に動作プログラムの実行を一時停止させる制御を実施する。停止指令部は、動作プログラムの実行を一時停止している状態において、予め定められた第１の時間長さの期間中に、外力が連続して第１の外力判定値以下であり、更に、外力が連続して第２の外力判定値を超える時間長さが第２の時間長さ以下の場合に、動作プログラムの実行を再開する制御を実施する。停止指令部は、動作プログラムの実行を一時停止している状態において、予め定められた第１の時間長さの期間中に、外力が連続して第１の外力判定値以下であり、更に、外力が連続して第２の外力判定値を超える時間長さが第２の時間長さより長い場合に、動作プログラムの実行の再開を禁止する制御を実施する。
【００１０】
上記発明においては、第１の外力判定値に基づいて動作プログラムの実行を再開した時刻を記憶する時刻記憶部を備え、停止指令部は、動作プログラムの実行を再開した後に動作プログラムを一時停止した場合に、再開から停止までのロボットの駆動時間を算出し、駆動時間が予め定められた第３の時間長さ未満の場合には、動作プログラムの実行の再開を禁止する制御を実施することができる。
【００１１】
上記発明においては、停止指令部は、動作プログラムの実行を一時停止した時から第１の時間長さの期間中に、外力が第１の外力判定値を超えた場合には、動作プログラムの実行の再開を禁止する制御を実施することができる。
【発明の効果】
【００１２】
本発明によれば、ロボットが一時停止した後に外力が加わる状態に応じて、動作プログラムの再開または停止の維持を判断するロボット制御装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態におけるロボットシステムの概略図である。
【図２】実施の形態におけるロボットシステムのブロック図である。
【図３】実施の形態における外力判定部のブロック図である。
【図４】実施の形態における運転制御の第１のフローチャートである。
【図５】実施の形態における運転制御の第２のフローチャートである。
【発明を実施するための形態】
【００１４】
図１から図５を参照して、実施の形態におけるロボット制御装置について説明する。図１は、本実施の形態におけるロボットシステムの概略図である。ロボットシステムは、ワークＷの搬送を行うロボット１と、ロボット１を制御するロボット制御装置としての制御装置２とを備える。本実施の形態のロボット１は、アーム１２と複数の関節部１３とを含む多関節ロボットである。ハンド１７は、ワークＷを把持したり解放したりする機能を有する。
【００１５】
ロボット１は、それぞれの関節部１３を駆動するアーム駆動装置を含む。アーム駆動装置は、関節部１３の内部に配置されているアーム駆動モータ１４を含む。アーム駆動モータ１４が駆動することにより、アーム１２を関節部１３にて所望の角度に曲げることができる。また、本実施の形態のロボット１は、アーム１２の全体が鉛直方向に延びる回転軸の周りを回転可能に形成されている。アーム駆動装置は、アーム１２を回転させる駆動モータを含む。
【００１６】
ロボット１は、ハンド１７を閉じたり開いたりするハンド駆動装置を備える。本実施の形態のハンド駆動装置は、空気圧によりハンド１７を駆動する。ハンド駆動装置は、ハンド１７に接続されたハンド駆動シリンダ１８と、ハンド駆動シリンダ１８に圧縮空気を供給するための空気ポンプおよび電磁弁を含む。
【００１７】
ロボット１は、アーム１２を支持するベース部１１を備える。本実施の形態におけるロボット１は、ベース部１１に作用する力を検出する力検出器１９を備える。ベース部１１に作用する力は、ロボット１に作用する力に相当する。力検出器１９は、ベース部１１の下側に配置されている。本実施の形態の力検出器１９は、設置面２０に固定されている。
【００１８】
本実施の形態における力検出器１９は、ベース部１１に連結されている金属の基材と基材の表面に取り付けられた歪みセンサとを含む。歪みセンサは、基材の表面の複数箇所に配置されている。基材に対して所定の方向に力が加わると基材が僅かに変形する。歪みセンサは基材の所定の位置の変形量を検出する。そして、力検出器１９は、歪みセンサによって検出した変形量に基づいて、基材に加わる力、すなわち、ロボット１に作用する力を算出する。
【００１９】
本実施の形態におけるロボット１は、ロボットの位置および姿勢を検出する状態検出器１６を含む。状態検出器１６は、アーム１２の基準点の位置、関節部１３におけるアーム１２の折れ曲がり状態、およびアーム１２が向いている方向等を検出する。
【００２０】
本実施の形態における状態検出器１６は、それぞれのアーム駆動モータ１４に取り付けられた回転角検出器１５を含む。回転角検出器１５は、アーム駆動モータ１４が駆動するときの回転角度を検出する。それぞれのアーム駆動モータ１４の回転角度に基づいて、アーム１２の関節部１３における角度を検出することができる。また、状態検出器１６は、アーム１２のベース部１１に対する回転角度を検出する回転角検出器を含む。検出した回転角度に基づいてアーム１２が延びている方向を検出することができる。
【００２１】
ロボット１は、制御装置２の動作指令に基づいて駆動する。アーム駆動装置およびハンド駆動装置は、制御装置２により制御されている。例えば、アーム駆動モータ１４の回転角度およびハンド駆動シリンダ１８の空気圧は制御装置２により制御されている。また、状態検出器１６の出力は制御装置２に入力される。
【００２２】
図２に、本実施の形態におけるロボットシステムのブロック図を示す。図１および図２を参照して、本実施の形態では、動作プログラム４１に基づいてワークを搬送する制御を説明する。ロボット１は、自動的に初期の位置から目標の位置までワークＷを搬送することができる。制御装置２は、バスを介して互いに接続されたＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、およびＲＯＭ（Read Only Memory）等を有する演算処理装置を含む。
【００２３】
制御装置２には、ロボット１の動作を行うために予め定められた動作プログラム４１が入力される。動作プログラム４１は、動作プログラム記憶部４２に記憶される。動作制御部４３は、動作プログラム４１に基づいてロボット１を駆動するための動作指令を送出する。動作制御部４３は、アーム駆動部４４にアーム駆動装置を駆動する動作指令を送出する。アーム駆動部４４は、アーム駆動モータ１４等を駆動する電気回路を含み、動作指令に基づいてアーム駆動モータ１４等に電力を供給する。アーム駆動モータ１４が駆動することにより、アーム１２の折れ曲がり角度やアーム１２の方向などが調整される。
【００２４】
また、動作制御部４３は、ハンド駆動部４５にハンド駆動装置を駆動する動作指令を送出する。ハンド駆動部４５は、空気ポンプ等を駆動する電気回路を含み、動作指令に基づいてハンド駆動シリンダ１８に圧縮空気が供給される。ハンド駆動シリンダ１８に供給する空気の圧力を調整することによりハンド１７が開閉する。
【００２５】
本実施の形態の制御装置２には、ロボットを駆動するためのパラメータが入力される。パラメータには、質量パラメータ５１が含まれる。質量パラメータ５１は、ロボット１に作用する内力を推定するためのロボット１の各部位の質量やワークＷの質量に関連する情報を含む。質量パラメータ５１は、制御装置２の質量パラメータ記憶部５２に記憶される。
【００２６】
本実施の形態の制御装置２は、ロボット１を停止した状態にするための指令を動作制御部４３に送出する停止指令部４６を含む。停止指令部４６は、ロボット１が駆動している期間および停止している期間のいずれの状態においても、駆動を停止する指令を送出できるように形成されている。動作制御部４３は、停止指令を受信すると動作プログラム４１の実行を停止する。そして、ロボット１の駆動が停止される。ロボット１が停止している時に停止指令が発信された場合は、動作制御部４３は、ロボット１の停止状態を維持する。
【００２７】
停止指令部４６は、ロボット１の質量およびロボットの動作により生じる内力を推定する内力推定部４７を含む。内力推定部４７は、ロボット１の外側から力が加えられていない状態で、ロボット１が動作した時に自重によりロボット１に作用する力を算出する。内力は、状態検出器１６により検出したロボットの位置および姿勢と、質量パラメータ５１とに基づいて算出することができる。
【００２８】
停止指令部４６は、ロボット１の外側からロボット１に加えられる外力を推定する外力推定部４８を含む。外力推定部４８は、力検出器１９により検出された力から内力推定部４７にて推定した内力を減算することにより外力を算出する。
【００２９】
停止指令部４６は、算出した外力を判定する外力判定部４９を含む。外力判定部４９は、算出された外力が所定の条件に一致するか否かを判別する。外力が所定の条件を満たす場合に、停止指令部４６は、動作制御部４３に対してロボット１の停止指令を発信する。
【００３０】
なお、本実施の形態における外力判定部は、外力が加わる方向を考慮せずに外力の大きさにて判定している。外力の判定においては、この形態に限られず、外力の方向を考慮して判定しても構わない。例えば、Ｘ軸が移動軸として定められている場合に、Ｘ軸方向の正の判定値により判定を行っても構わない。
【００３１】
図３に、本実施の形態における外力判定部のブロック図を示す。外力判定部４９は、外力推定部４８により推定された外力と、予め定められた外力判定値とを比較する外力比較部４９ａを有する。また、外力判定部４９は、予め定められた条件における経過時間と、予め定められた経過時間の判定値とを比較する時間比較部４９ｂを有する。
【００３２】
図２を参照して、制御装置２は、判定値記憶部５６を有する。外力判定値、経過時間の判定値等の判定値５５は、予め定められて判定値記憶部５６に記憶される。停止指令部４６の外力判定部４９は、判定値記憶部５６からそれぞれの判定値を読み込む。なお、動作プログラム記憶部４２、質量パラメータ記憶部５２、および判定値記憶部５６等の記憶部は、１つの記憶部が共用されていても構わない。
【００３３】
また、制御装置２は、ロボット１が予め定められた状態になったときの時刻を記憶する時刻記憶部５７を有する。外力判定部４９は、ロボット１が予め定められた状態になったときの時刻を時刻記憶部５７に送出する。時刻記憶部５７は、その時刻を記憶する。また、外力判定部４９は、時刻記憶部５７に記憶されている時刻を読み込んで、所定の判定を行うことができる。
【００３４】
制御装置２は、表示部５８および入力部５９を有する。表示部５８は、ロボット１の運転に関する情報を表示可能に形成されている。表示部５８としては、液晶表示装置を例示することができる。入力部５９は、作業者が制御装置２に所望の指令を入力可能に形成されている。入力部５９としては、キーボード等を例示することができる。
【００３５】
次に、本実施の形態におけるロボット制御装置の制御について説明する。ロボット１が自動的に停止した場合に、停止した時の状態によっては、ロボット１の駆動を自動的に再開したい場合がある。本実施の形態の制御装置２は、ロボット１に加わった外力の種類に応じて、ロボットの駆動を再開したり停止状態を維持したりする制御を実施する。
【００３６】
図１から図３を参照して、判定値５５は、ロボット１に加わる外力が大きい時にロボット１を一時停止させるための停止判定値を含む。判定値５５は、停止判定値よりも小さく、ロボット１の駆動を再開させるための第１の外力判定値を含む。また、判定値５５は、第１の外力判定値よりも小さく、ロボットの駆動の再開を禁止するための第２の外力判定値を含む。
【００３７】
また、判定値５５は、第１の外力判定値と共に用いられる第１の時間長さと、第２の外力判定値と共に用いられる第２の時間長さとを含む。さらに、判定値５５は、ロボットの駆動が再開してから再度停止するまでの駆動時間を判別するための第３の時間長さを含む。第１の時間長さ、第２の時間長さおよび第３の時間長さは、経過時間の判定値として予め定められている。
【００３８】
制御装置２の停止指令部４６は、ロボット１が駆動している期間中に、外力が停止判定値を超えた場合には、動作プログラム４１の実行を一時停止する指令を動作制御部４３に送出する。動作制御部４３は、動作プログラム４１の実行を一時的に停止する。ロボット１は、停止して作業を中断する。
【００３９】
外力推定部４８は、動作プログラム４１の実行を一時停止している期間中にも外力を算出する。そして、動作プログラム４１の実行を一時停止した時から第１の時間長さの期間間に、外力が一度でも第１の外力判定値を超えた場合には、ロボット１の駆動の再開を禁止する制御を実施することができる。すなわち、停止してから所定の期間に比較的大きな外力が検出された場合には、ロボット１を停止させた原因が解消されていないと判別することができる。このために、停止指令部４６は、ロボット１の駆動の再開を禁止する。
【００４０】
一方で、動作プログラム４１の実行を一時停止した時から第１の時間長さの期間に、外力が連続して第１の外力判定値以下である場合には、動作プログラム４１の実行を再開することが考えられる。第１の時間長さとしては、例えば２秒以上３秒以下の範囲内の値を採用することができる。例えば、人がロボット１に接触したが、直ぐにロボット１から離れた場合にはロボット１の駆動を再開することが考えられる。
【００４１】
ところが、ロボット１が自動的に停止した場合に、比較的小さな外力がロボット１に加わった状態が維持されて停止している場合がある。例えば、ロボット１が他の物体を挟んで停止する場合がある。ロボット１のアーム１２と壁との間に、他の物体が挟まって停止する場合がある。または、ロボット１に他の物体が接触して動かない場合がある。このような場合には、物体がロボットに接触した瞬間には比較的大きな外力が加わる。しかしながら、その後には比較的小さな外力がロボット１に加わる。このように、ロボット１に対して比較的弱い外力が連続的に加わる場合がある。この外力が、第１の外力判定値以下である場合には、ロボット１の駆動が再開してしまう。
【００４２】
本実施の形態では、第１の外力判定値よりも小さな第２の外力判定値を設けている。停止指令部４６は、動作プログラム４１の実行を一時停止している状態において、第２の時間長さの期間中に、外力が連続して第２の外力判定値を超えている場合に、動作プログラム４１の実行の再開を禁止する制御を実施する。すなわち、連続的に第２の外力判定値を超える外力がロボット１に加わっている場合には、第１の外力判定値に基づく判定に関わらずに、ロボット１の駆動の再開を禁止する。第２の外力判定値としては、少なくとも外力に含まれるノイズよりも大きな値を採用することができる。第２の時間長さの期間の開始時刻は、停止期間中の外力が第２の外力判定値を超えた任意の時刻に設定することができる。また、第２の時間長さとしては第１の時間長さよりも短い時間を設定することができる。たとえば、第２の時間長さは、１００ｍｓ以上３００ｍｓ以下の範囲内の値を採用することができる。
【００４３】
本実施の形態では、時間比較部４９ｂは、ロボット１が停止してからの経過時間または外力が第２の外力判定値を超えた時からの経過時間を算出する。そして、時間比較部４９ｂは、これらの経過時間が第１の時間長さまたは第２の時間長さよりも長いか否かを判別する。外力比較部４９ａは、推定された外力が第１の外力判定値または第２の外力判定値を超えるか否かを判別する。
【００４４】
ロボット１の停止期間中に停止指令部４６が動作プログラム４１の実行の再開を禁止した場合に、動作制御部４３は、動作プログラム４１の実行を停止した状態を維持する。表示部５８は、ロボット１の駆動の再開を禁止した警告を画面に表示する。そして、作業者は、表示部５８の警告を見て、ロボット１の駆動の再開が禁止された原因を除去する。たとえば、ロボット１に当接していた他の物体を除去する。
【００４５】
次に、作業者は、入力部５９を操作して、停止指令部４６に動作プログラム４１の実行を再開するように指令する。停止指令部４６は、動作制御部４３に対して動作プログラムの実行を再開する指令を送出する。動作制御部４３は、動作プログラム４１の実行を再開する。
【００４６】
このように、本実施の形態の制御装置２は、他の物体を挟んだ場合等に生じる連続的な小さな外力を検出して、ロボットの駆動の再開を禁止することができる。一方で、ロボットの近傍を搬送車が走行して振動を検出してロボットが停止した場合等には、外力は第２の外力判定値を超える場合もある。しかしながら、振動による力のために、第２の外力判定値を下回るタイミングが必ず存在し、連続して第２の外力判定値を超えることはない。この場合には、振動による外力が解消され次第、ロボットの駆動を再開することができる。
【００４７】
ところで、ロボット１は、一時停止している状態から駆動を再開した後に、短時間の間に、外力が第１の外力判定値を超えて再び一時停止する場合がある。この場合には、前回の一時停止した原因が十分に解消されていないと判別することができる。この場合に、制御装置２は、動作プログラム４１の実行の再開を禁止する制御を実施する。
【００４８】
停止指令部４６は、動作プログラム４１の実行を再開した後に動作プログラム４１を一時停止した場合に、再開から停止までのロボット１の駆動時間を算出する。時間比較部４９ｂは、今回の動作プログラム４１の実行を再開した時刻を時刻記憶部５７から読み込む。そして、この時刻と今回の動作プログラム４１の実行を一時停止した時刻とに基づいてロボット１の駆動時間を算出する。停止指令部４６は、ロボット１の駆動時間が第３の時間長さ未満の場合には、動作プログラム４１の実行の再開を禁止する制御を実施する。この制御により、前回の一時停止した原因が十分に解消されていない場合に、ロボットの駆動の再開を禁止することができる。なお、第３の時間長さとしては、例えば１秒程度を採用することができる。
【００４９】
本実施の形態のロボット制御装置は、ロボットが一時停止した後にロボットに加わる外力の状態を判別し、外力の状態に応じて動作プログラムの実行を自動的に再開する制御または停止状態を維持する制御を行うことができる。このために、作業者の安全性を確保しながら、ロボットの生産性を向上させることができる。
【００５０】
図４および図５に、本実施の形態における制御のフローチャートを示す。図４および図５の制御は、停止指令部４６により予め定められた時間間隔ごとに繰り返して行うことができる。また、ロボットの停止期間中およびロボットの駆動期間中に行うことができる。
【００５１】
図２から図５を参照して、ステップ７１においては、再開禁止フラグが１であるか否かを判別する。再開禁止フラグが１である場合には、動作プログラム４１の実行が一時的に停止され、更に、動作プログラム４１の実行の再開が禁止されている状態である。この状態は、作業者による再開の指令を待っている状態である。作業者により再開の禁止を解除する指令が停止指令部４６に入力された場合には、再開禁止フラグが零に変更される。再開禁止フラグが１である場合には、この制御を終了する。再開禁止フラグが０である場合には、ステップ７２に移行する。すなわち、動作プログラム４１の実行の再開が禁止されていない場合、または作業者により再開の禁止が解除された場合には、ステップ７２に移行する。
【００５２】
ステップ７２において、外力推定部４８は、ロボット１に加わる外力を推定する。外力判定部４９は、算出した外力を取得する。ステップ７３において、外力判定部４９は、動作プログラム４１の実行が一時停止している期間中か否かを判別する。動作プログラム４１が実行されている場合には、ステップ９１に移行する。この場合には、ロボット１が駆動している状態である。
【００５３】
ステップ９１において、外力判定部４９は、外力が停止判定値よりも大きいか否かを判別する。外力が停止判定値以下である場合には、この制御を終了する。外力が停止判定値よりも大きい場合には、ステップ９２に移行する。
【００５４】
ステップ９２においては、動作プログラムの実行を一時停止する。停止指令部４６は、動作プログラム４１の実行を停止する指令を動作制御部４３に送出する。ステップ９３において、時刻記憶部５７は、動作プログラムの実行を一時停止した時刻を記憶する。
【００５５】
次に、ステップ９４においては、第１のカウンターを零にする。第１のカウンターは、第１の外力判定値に基づいて外力を判定するときの時間長さを算出するためのカウンターである。後述するように、第１のカウンターにより、ロボット１が停止してからの経過時間を算出することができる。
【００５６】
次に、ステップ９５において、停止指令部４６は、以前に動作プログラムの実行の再開が有るか否かが判別する。すなわち、以前に外力が停止判定値を超えて一時停止した後に動作プログラムの実行が再開された制御があったか否かが判別される。以前に動作プログラムの実行の再開がない場合には、この制御を終了する。以前に動作プログラムの実行の再開が有る場合にはステップ９６に移行する。
【００５７】
ステップ９６において、時間比較部４９ｂは、前回の動作プログラムの実行を再開した時刻からの経過時間を算出する。すなわち、時間比較部４９ｂは、再開から停止までのロボット１の駆動時間を算出する。前回の動作プログラム４１の実行を再開した時刻は時刻記憶部５７に記憶されている。ステップ９７において、時間比較部４９ｂは、ロボットの駆動時間が第３の時間長さ未満であるか否かを判別する。ロボット１の駆動時間が第３の時間長さ以上であれば、この制御を終了する。
【００５８】
ステップ９７において、ロボット１の駆動時間が第３の時間長さ未満であれば、ステップ９８に移行する。この場合には、ロボット１の駆動が再開した直後に停止したと判別することができる。そして、前回の一時停止した原因が十分に解消されていないと判断することができる。ステップ９８では、停止指令部４６は、再開禁止フラグを１に設定する。停止指令部４６は、動作プログラム４１の実行の再開を禁止する指令を動作制御部４３に送出する。
【００５９】
次に、ロボット１が一時的に停止している期間中の制御について説明する。ステップ７３において、動作プログラム４１の実行を一時停止している場合には、図５のステップ７４に移行する。
【００６０】
ステップ７４において、外力比較部４９ａは、算出された外力が第１の外力判定値を超えているか否かを判別する。第１の外力判定値を超えている場合には、ステップ７５に移行する。ステップ７５において、停止指令部４６は、動作プログラム４１の実行の再開を禁止する。停止指令部４６は、再開禁止フラグを１にすると共に、動作プログラム４１の実行の再開を禁止する指令を動作制御部４３に送出する。
【００６１】
ステップ７４において、外力が第１の外力判定値以下である場合には、ステップ７６に移行する。ステップ７６においては、第１カウンターに１を加算する。すなわち、停止してからの経過時間を算出するための第１カウンターに１を加算する。
【００６２】
次に、ステップ７７においては、外力が第２の外力判定値を超えているか否かを判別する。外力が第２の外力判定値以下である場合には、ステップ８０に移行する。
【００６３】
ステップ８０においては、第２のカウンターを零にする。第２のカウンターは、第２の外力判定値に基づいて外力を判定するときの時間長さを算出するためのカウンターである。第２のカウンターにより、外力が第２の外力判定値を超えた時刻からの経過時間を算出することができる。
【００６４】
次に、ステップ８１において、時間比較部４９ｂは、第１のカウンターの値に制御周期を乗じることにより、動作プログラム４１の実行を停止してからの経過時間を算出する。制御周期としては図４および図５の制御を実施する時間間隔を例示することができる。制御周期は予め時刻記憶部５７に記憶させておくことができる。時間比較部４９ｂは、この経過時間が第１の時間長さよりも長いか否かを判別する。この経過時間が第１の時間長さ以下の場合には、制御を終了する。この経過時間が第１の時間長さよりも長い場合には、第１の時間長さの間に外力が連続して第１の外力判定値以下であると判別することができる。この場合には、ステップ８２に移行する。
【００６５】
ステップ８２においては、動作プログラムの実行を自動的に再開する。停止指令部４６は、動作制御部４３に動作プログラム４１の実行を再開する指令を送出する。動作制御部４３は、動作プログラム４１の実行を再開する。ステップ８３において、時刻記憶部５７は、動作プログラムの実行を再開した時刻を記憶する。
【００６６】
ステップ７７において、外力が第２の外力判定値を超えている場合には、ステップ７８に移行する。ステップ７８においては、第２のカウンターに１を加算する。
【００６７】
次に、ステップ７９において、時間比較部４９ｂは、第２のカウンターに制御周期を乗じることにより、外力が第２の外力判定値よりも大きくなった時からの経過時間を算出する。時間比較部４９ｂは、この経過時間が第２の時間長さを超えているか否かを判別する。この経過時間が第２の時間長さ以下である場合には制御を終了する。一方で、この経過時間が第２の時間長さを超えている場合には、第２の時間長さの期間中に、外力が連続して第２の外力判定値を超えていると判別できる。そして、ステップ７５に移行し、動作プログラム４１の実行の再開を禁止する制御を実施する。
【００６８】
本実施の形態において、停止指令部は、動作プログラムの実行を一時停止した時から第１の時間長さの期間中に外力が第１の外力判定値を超えたか否かを判別している。本発明は、この形態に限られず、停止指令部は、動作プログラムの実行を一時停止している期間中において、任意の時刻を開始時刻にした第１の時間長さの期間中に外力が連続して第１の外力判定値を超えているか否かを判別することができる。
【００６９】
本実施の形態においては、多関節ロボットを例示して説明したが、この形態に限られず、任意のロボットを制御するロボット制御装置に本発明を適用することができる。
【００７０】
上述のそれぞれの制御においては、機能および作用が変更されない範囲において適宜ステップの順序を変更することができる。上記の実施の形態は、適宜組み合わせることができる。上述のそれぞれの図において、同一または相等する部分には同一の符号を付している。なお、上記の実施の形態は例示であり発明を限定するものではない。また、実施の形態においては、特許請求の範囲に示される実施の形態の変更が含まれている。
【符号の説明】
【００７１】
１    ロボット
２    制御装置
１９    力検出器
４１    動作プログラム
４３    動作制御部
４６    停止指令部
４８    外力推定部
４９    外力判定部
４９ａ    外力比較部
４９ｂ    時間比較部
５５    判定値
５６    判定値記憶部
５７    時刻記憶部
【図１】
0006034900.tif 000002
【図２】
0006034900.tif 000003
【図３】
0006034900.tif 000004
【図４】
0006034900.tif 000005
【図５】
0006034900.tif 000006