(58)【調査した分野】(Int.Cl.,DB名)
停止指令部は、動作プログラムの実行を一時停止した時から第1の時間長さの期間中に、外力が第1の外力判定値を超えた場合には、動作プログラムの実行の再開を禁止する制御を実施する、請求項1または2に記載のロボット制御装置。
【発明を実施するための形態】
【0014】
図1から
図5を参照して、実施の形態におけるロボット制御装置について説明する。
図1は、本実施の形態におけるロボットシステムの概略図である。ロボットシステムは、ワークWの搬送を行うロボット1と、ロボット1を制御するロボット制御装置としての制御装置2とを備える。本実施の形態のロボット1は、アーム12と複数の関節部13とを含む多関節ロボットである。ハンド17は、ワークWを把持したり解放したりする機能を有する。
【0015】
ロボット1は、それぞれの関節部13を駆動するアーム駆動装置を含む。アーム駆動装置は、関節部13の内部に配置されているアーム駆動モータ14を含む。アーム駆動モータ14が駆動することにより、アーム12を関節部13にて所望の角度に曲げることができる。また、本実施の形態のロボット1は、アーム12の全体が鉛直方向に延びる回転軸の周りを回転可能に形成されている。アーム駆動装置は、アーム12を回転させる駆動モータを含む。
【0016】
ロボット1は、ハンド17を閉じたり開いたりするハンド駆動装置を備える。本実施の形態のハンド駆動装置は、空気圧によりハンド17を駆動する。ハンド駆動装置は、ハンド17に接続されたハンド駆動シリンダ18と、ハンド駆動シリンダ18に圧縮空気を供給するための空気ポンプおよび電磁弁を含む。
【0017】
ロボット1は、アーム12を支持するベース部11を備える。本実施の形態におけるロボット1は、ベース部11に作用する力を検出する力検出器19を備える。ベース部11に作用する力は、ロボット1に作用する力に相当する。力検出器19は、ベース部11の下側に配置されている。本実施の形態の力検出器19は、設置面20に固定されている。
【0018】
本実施の形態における力検出器19は、ベース部11に連結されている金属の基材と基材の表面に取り付けられた歪みセンサとを含む。歪みセンサは、基材の表面の複数箇所に配置されている。基材に対して所定の方向に力が加わると基材が僅かに変形する。歪みセンサは基材の所定の位置の変形量を検出する。そして、力検出器19は、歪みセンサによって検出した変形量に基づいて、基材に加わる力、すなわち、ロボット1に作用する力を算出する。
【0019】
本実施の形態におけるロボット1は、ロボットの位置および姿勢を検出する状態検出器16を含む。状態検出器16は、アーム12の基準点の位置、関節部13におけるアーム12の折れ曲がり状態、およびアーム12が向いている方向等を検出する。
【0020】
本実施の形態における状態検出器16は、それぞれのアーム駆動モータ14に取り付けられた回転角検出器15を含む。回転角検出器15は、アーム駆動モータ14が駆動するときの回転角度を検出する。それぞれのアーム駆動モータ14の回転角度に基づいて、アーム12の関節部13における角度を検出することができる。また、状態検出器16は、アーム12のベース部11に対する回転角度を検出する回転角検出器を含む。検出した回転角度に基づいてアーム12が延びている方向を検出することができる。
【0021】
ロボット1は、制御装置2の動作指令に基づいて駆動する。アーム駆動装置およびハンド駆動装置は、制御装置2により制御されている。例えば、アーム駆動モータ14の回転角度およびハンド駆動シリンダ18の空気圧は制御装置2により制御されている。また、状態検出器16の出力は制御装置2に入力される。
【0022】
図2に、本実施の形態におけるロボットシステムのブロック図を示す。
図1および
図2を参照して、本実施の形態では、動作プログラム41に基づいてワークを搬送する制御を説明する。ロボット1は、自動的に初期の位置から目標の位置までワークWを搬送することができる。制御装置2は、バスを介して互いに接続されたCPU(Central Processing Unit)、RAM(Random Access Memory)、およびROM(Read Only Memory)等を有する演算処理装置を含む。
【0023】
制御装置2には、ロボット1の動作を行うために予め定められた動作プログラム41が入力される。動作プログラム41は、動作プログラム記憶部42に記憶される。動作制御部43は、動作プログラム41に基づいてロボット1を駆動するための動作指令を送出する。動作制御部43は、アーム駆動部44にアーム駆動装置を駆動する動作指令を送出する。アーム駆動部44は、アーム駆動モータ14等を駆動する電気回路を含み、動作指令に基づいてアーム駆動モータ14等に電力を供給する。アーム駆動モータ14が駆動することにより、アーム12の折れ曲がり角度やアーム12の方向などが調整される。
【0024】
また、動作制御部43は、ハンド駆動部45にハンド駆動装置を駆動する動作指令を送出する。ハンド駆動部45は、空気ポンプ等を駆動する電気回路を含み、動作指令に基づいてハンド駆動シリンダ18に圧縮空気が供給される。ハンド駆動シリンダ18に供給する空気の圧力を調整することによりハンド17が開閉する。
【0025】
本実施の形態の制御装置2には、ロボットを駆動するためのパラメータが入力される。パラメータには、質量パラメータ51が含まれる。質量パラメータ51は、ロボット1に作用する内力を推定するためのロボット1の各部位の質量やワークWの質量に関連する情報を含む。質量パラメータ51は、制御装置2の質量パラメータ記憶部52に記憶される。
【0026】
本実施の形態の制御装置2は、ロボット1を停止した状態にするための指令を動作制御部43に送出する停止指令部46を含む。停止指令部46は、ロボット1が駆動している期間および停止している期間のいずれの状態においても、駆動を停止する指令を送出できるように形成されている。動作制御部43は、停止指令を受信すると動作プログラム41の実行を停止する。そして、ロボット1の駆動が停止される。ロボット1が停止している時に停止指令が発信された場合は、動作制御部43は、ロボット1の停止状態を維持する。
【0027】
停止指令部46は、ロボット1の質量およびロボットの動作により生じる内力を推定する内力推定部47を含む。内力推定部47は、ロボット1の外側から力が加えられていない状態で、ロボット1が動作した時に自重によりロボット1に作用する力を算出する。内力は、状態検出器16により検出したロボットの位置および姿勢と、質量パラメータ51とに基づいて算出することができる。
【0028】
停止指令部46は、ロボット1の外側からロボット1に加えられる外力を推定する外力推定部48を含む。外力推定部48は、力検出器19により検出された力から内力推定部47にて推定した内力を減算することにより外力を算出する。
【0029】
停止指令部46は、算出した外力を判定する外力判定部49を含む。外力判定部49は、算出された外力が所定の条件に一致するか否かを判別する。外力が所定の条件を満たす場合に、停止指令部46は、動作制御部43に対してロボット1の停止指令を発信する。
【0030】
なお、本実施の形態における外力判定部は、外力が加わる方向を考慮せずに外力の大きさにて判定している。外力の判定においては、この形態に限られず、外力の方向を考慮して判定しても構わない。例えば、X軸が移動軸として定められている場合に、X軸方向の正の判定値により判定を行っても構わない。
【0031】
図3に、本実施の形態における外力判定部のブロック図を示す。外力判定部49は、外力推定部48により推定された外力と、予め定められた外力判定値とを比較する外力比較部49aを有する。また、外力判定部49は、予め定められた条件における経過時間と、予め定められた経過時間の判定値とを比較する時間比較部49bを有する。
【0032】
図2を参照して、制御装置2は、判定値記憶部56を有する。外力判定値、経過時間の判定値等の判定値55は、予め定められて判定値記憶部56に記憶される。停止指令部46の外力判定部49は、判定値記憶部56からそれぞれの判定値を読み込む。なお、動作プログラム記憶部42、質量パラメータ記憶部52、および判定値記憶部56等の記憶部は、1つの記憶部が共用されていても構わない。
【0033】
また、制御装置2は、ロボット1が予め定められた状態になったときの時刻を記憶する時刻記憶部57を有する。外力判定部49は、ロボット1が予め定められた状態になったときの時刻を時刻記憶部57に送出する。時刻記憶部57は、その時刻を記憶する。また、外力判定部49は、時刻記憶部57に記憶されている時刻を読み込んで、所定の判定を行うことができる。
【0034】
制御装置2は、表示部58および入力部59を有する。表示部58は、ロボット1の運転に関する情報を表示可能に形成されている。表示部58としては、液晶表示装置を例示することができる。入力部59は、作業者が制御装置2に所望の指令を入力可能に形成されている。入力部59としては、キーボード等を例示することができる。
【0035】
次に、本実施の形態におけるロボット制御装置の制御について説明する。ロボット1が自動的に停止した場合に、停止した時の状態によっては、ロボット1の駆動を自動的に再開したい場合がある。本実施の形態の制御装置2は、ロボット1に加わった外力の種類に応じて、ロボットの駆動を再開したり停止状態を維持したりする制御を実施する。
【0036】
図1から
図3を参照して、判定値55は、ロボット1に加わる外力が大きい時にロボット1を一時停止させるための停止判定値を含む。判定値55は、停止判定値よりも小さく、ロボット1の駆動を再開させるための第1の外力判定値を含む。また、判定値55は、第1の外力判定値よりも小さく、ロボットの駆動の再開を禁止するための第2の外力判定値を含む。
【0037】
また、判定値55は、第1の外力判定値と共に用いられる第1の時間長さと、第2の外力判定値と共に用いられる第2の時間長さとを含む。さらに、判定値55は、ロボットの駆動が再開してから再度停止するまでの駆動時間を判別するための第3の時間長さを含む。第1の時間長さ、第2の時間長さおよび第3の時間長さは、経過時間の判定値として予め定められている。
【0038】
制御装置2の停止指令部46は、ロボット1が駆動している期間中に、外力が停止判定値を超えた場合には、動作プログラム41の実行を一時停止する指令を動作制御部43に送出する。動作制御部43は、動作プログラム41の実行を一時的に停止する。ロボット1は、停止して作業を中断する。
【0039】
外力推定部48は、動作プログラム41の実行を一時停止している期間中にも外力を算出する。そして、動作プログラム41の実行を一時停止した時から第1の時間長さの期間間に、外力が一度でも第1の外力判定値を超えた場合には、ロボット1の駆動の再開を禁止する制御を実施することができる。すなわち、停止してから所定の期間に比較的大きな外力が検出された場合には、ロボット1を停止させた原因が解消されていないと判別することができる。このために、停止指令部46は、ロボット1の駆動の再開を禁止する。
【0040】
一方で、動作プログラム41の実行を一時停止した時から第1の時間長さの期間に、外力が連続して第1の外力判定値以下である場合には、動作プログラム41の実行を再開することが考えられる。第1の時間長さとしては、例えば2秒以上3秒以下の範囲内の値を採用することができる。例えば、人がロボット1に接触したが、直ぐにロボット1から離れた場合にはロボット1の駆動を再開することが考えられる。
【0041】
ところが、ロボット1が自動的に停止した場合に、比較的小さな外力がロボット1に加わった状態が維持されて停止している場合がある。例えば、ロボット1が他の物体を挟んで停止する場合がある。ロボット1のアーム12と壁との間に、他の物体が挟まって停止する場合がある。または、ロボット1に他の物体が接触して動かない場合がある。このような場合には、物体がロボットに接触した瞬間には比較的大きな外力が加わる。しかしながら、その後には比較的小さな外力がロボット1に加わる。このように、ロボット1に対して比較的弱い外力が連続的に加わる場合がある。この外力が、第1の外力判定値以下である場合には、ロボット1の駆動が再開してしまう。
【0042】
本実施の形態では、第1の外力判定値よりも小さな第2の外力判定値を設けている。停止指令部46は、動作プログラム41の実行を一時停止している状態において、第2の時間長さの期間中に、外力が連続して第2の外力判定値を超えている場合に、動作プログラム41の実行の再開を禁止する制御を実施する。すなわち、連続的に第2の外力判定値を超える外力がロボット1に加わっている場合には、第1の外力判定値に基づく判定に関わらずに、ロボット1の駆動の再開を禁止する。第2の外力判定値としては、少なくとも外力に含まれるノイズよりも大きな値を採用することができる。第2の時間長さの期間の開始時刻は、停止期間中の外力が第2の外力判定値を超えた任意の時刻に設定することができる。また、第2の時間長さとしては第1の時間長さよりも短い時間を設定することができる。たとえば、第2の時間長さは、100ms以上300ms以下の範囲内の値を採用することができる。
【0043】
本実施の形態では、時間比較部49bは、ロボット1が停止してからの経過時間または外力が第2の外力判定値を超えた時からの経過時間を算出する。そして、時間比較部49bは、これらの経過時間が第1の時間長さまたは第2の時間長さよりも長いか否かを判別する。外力比較部49aは、推定された外力が第1の外力判定値または第2の外力判定値を超えるか否かを判別する。
【0044】
ロボット1の停止期間中に停止指令部46が動作プログラム41の実行の再開を禁止した場合に、動作制御部43は、動作プログラム41の実行を停止した状態を維持する。表示部58は、ロボット1の駆動の再開を禁止した警告を画面に表示する。そして、作業者は、表示部58の警告を見て、ロボット1の駆動の再開が禁止された原因を除去する。たとえば、ロボット1に当接していた他の物体を除去する。
【0045】
次に、作業者は、入力部59を操作して、停止指令部46に動作プログラム41の実行を再開するように指令する。停止指令部46は、動作制御部43に対して動作プログラムの実行を再開する指令を送出する。動作制御部43は、動作プログラム41の実行を再開する。
【0046】
このように、本実施の形態の制御装置2は、他の物体を挟んだ場合等に生じる連続的な小さな外力を検出して、ロボットの駆動の再開を禁止することができる。一方で、ロボットの近傍を搬送車が走行して振動を検出してロボットが停止した場合等には、外力は第2の外力判定値を超える場合もある。しかしながら、振動による力のために、第2の外力判定値を下回るタイミングが必ず存在し、連続して第2の外力判定値を超えることはない。この場合には、振動による外力が解消され次第、ロボットの駆動を再開することができる。
【0047】
ところで、ロボット1は、一時停止している状態から駆動を再開した後に、短時間の間に、外力が第1の外力判定値を超えて再び一時停止する場合がある。この場合には、前回の一時停止した原因が十分に解消されていないと判別することができる。この場合に、制御装置2は、動作プログラム41の実行の再開を禁止する制御を実施する。
【0048】
停止指令部46は、動作プログラム41の実行を再開した後に動作プログラム41を一時停止した場合に、再開から停止までのロボット1の駆動時間を算出する。時間比較部49bは、今回の動作プログラム41の実行を再開した時刻を時刻記憶部57から読み込む。そして、この時刻と今回の動作プログラム41の実行を一時停止した時刻とに基づいてロボット1の駆動時間を算出する。停止指令部46は、ロボット1の駆動時間が第3の時間長さ未満の場合には、動作プログラム41の実行の再開を禁止する制御を実施する。この制御により、前回の一時停止した原因が十分に解消されていない場合に、ロボットの駆動の再開を禁止することができる。なお、第3の時間長さとしては、例えば1秒程度を採用することができる。
【0049】
本実施の形態のロボット制御装置は、ロボットが一時停止した後にロボットに加わる外力の状態を判別し、外力の状態に応じて動作プログラムの実行を自動的に再開する制御または停止状態を維持する制御を行うことができる。このために、作業者の安全性を確保しながら、ロボットの生産性を向上させることができる。
【0050】
図4および
図5に、本実施の形態における制御のフローチャートを示す。
図4および
図5の制御は、停止指令部46により予め定められた時間間隔ごとに繰り返して行うことができる。また、ロボットの停止期間中およびロボットの駆動期間中に行うことができる。
【0051】
図2から
図5を参照して、ステップ71においては、再開禁止フラグが1であるか否かを判別する。再開禁止フラグが1である場合には、動作プログラム41の実行が一時的に停止され、更に、動作プログラム41の実行の再開が禁止されている状態である。この状態は、作業者による再開の指令を待っている状態である。作業者により再開の禁止を解除する指令が停止指令部46に入力された場合には、再開禁止フラグが零に変更される。再開禁止フラグが1である場合には、この制御を終了する。再開禁止フラグが0である場合には、ステップ72に移行する。すなわち、動作プログラム41の実行の再開が禁止されていない場合、または作業者により再開の禁止が解除された場合には、ステップ72に移行する。
【0052】
ステップ72において、外力推定部48は、ロボット1に加わる外力を推定する。外力判定部49は、算出した外力を取得する。ステップ73において、外力判定部49は、動作プログラム41の実行が一時停止している期間中か否かを判別する。動作プログラム41が実行されている場合には、ステップ91に移行する。この場合には、ロボット1が駆動している状態である。
【0053】
ステップ91において、外力判定部49は、外力が停止判定値よりも大きいか否かを判別する。外力が停止判定値以下である場合には、この制御を終了する。外力が停止判定値よりも大きい場合には、ステップ92に移行する。
【0054】
ステップ92においては、動作プログラムの実行を一時停止する。停止指令部46は、動作プログラム41の実行を停止する指令を動作制御部43に送出する。ステップ93において、時刻記憶部57は、動作プログラムの実行を一時停止した時刻を記憶する。
【0055】
次に、ステップ94においては、第1のカウンターを零にする。第1のカウンターは、第1の外力判定値に基づいて外力を判定するときの時間長さを算出するためのカウンターである。後述するように、第1のカウンターにより、ロボット1が停止してからの経過時間を算出することができる。
【0056】
次に、ステップ95において、停止指令部46は、以前に動作プログラムの実行の再開が有るか否かが判別する。すなわち、以前に外力が停止判定値を超えて一時停止した後に動作プログラムの実行が再開された制御があったか否かが判別される。以前に動作プログラムの実行の再開がない場合には、この制御を終了する。以前に動作プログラムの実行の再開が有る場合にはステップ96に移行する。
【0057】
ステップ96において、時間比較部49bは、前回の動作プログラムの実行を再開した時刻からの経過時間を算出する。すなわち、時間比較部49bは、再開から停止までのロボット1の駆動時間を算出する。前回の動作プログラム41の実行を再開した時刻は時刻記憶部57に記憶されている。ステップ97において、時間比較部49bは、ロボットの駆動時間が第3の時間長さ未満であるか否かを判別する。ロボット1の駆動時間が第3の時間長さ以上であれば、この制御を終了する。
【0058】
ステップ97において、ロボット1の駆動時間が第3の時間長さ未満であれば、ステップ98に移行する。この場合には、ロボット1の駆動が再開した直後に停止したと判別することができる。そして、前回の一時停止した原因が十分に解消されていないと判断することができる。ステップ98では、停止指令部46は、再開禁止フラグを1に設定する。停止指令部46は、動作プログラム41の実行の再開を禁止する指令を動作制御部43に送出する。
【0059】
次に、ロボット1が一時的に停止している期間中の制御について説明する。ステップ73において、動作プログラム41の実行を一時停止している場合には、
図5のステップ74に移行する。
【0060】
ステップ74において、外力比較部49aは、算出された外力が第1の外力判定値を超えているか否かを判別する。第1の外力判定値を超えている場合には、ステップ75に移行する。ステップ75において、停止指令部46は、動作プログラム41の実行の再開を禁止する。停止指令部46は、再開禁止フラグを1にすると共に、動作プログラム41の実行の再開を禁止する指令を動作制御部43に送出する。
【0061】
ステップ74において、外力が第1の外力判定値以下である場合には、ステップ76に移行する。ステップ76においては、第1カウンターに1を加算する。すなわち、停止してからの経過時間を算出するための第1カウンターに1を加算する。
【0062】
次に、ステップ77においては、外力が第2の外力判定値を超えているか否かを判別する。外力が第2の外力判定値以下である場合には、ステップ80に移行する。
【0063】
ステップ80においては、第2のカウンターを零にする。第2のカウンターは、第2の外力判定値に基づいて外力を判定するときの時間長さを算出するためのカウンターである。第2のカウンターにより、外力が第2の外力判定値を超えた時刻からの経過時間を算出することができる。
【0064】
次に、ステップ81において、時間比較部49bは、第1のカウンターの値に制御周期を乗じることにより、動作プログラム41の実行を停止してからの経過時間を算出する。制御周期としては
図4および
図5の制御を実施する時間間隔を例示することができる。制御周期は予め時刻記憶部57に記憶させておくことができる。時間比較部49bは、この経過時間が第1の時間長さよりも長いか否かを判別する。この経過時間が第1の時間長さ以下の場合には、制御を終了する。この経過時間が第1の時間長さよりも長い場合には、第1の時間長さの間に外力が連続して第1の外力判定値以下であると判別することができる。この場合には、ステップ82に移行する。
【0065】
ステップ82においては、動作プログラムの実行を自動的に再開する。停止指令部46は、動作制御部43に動作プログラム41の実行を再開する指令を送出する。動作制御部43は、動作プログラム41の実行を再開する。ステップ83において、時刻記憶部57は、動作プログラムの実行を再開した時刻を記憶する。
【0066】
ステップ77において、外力が第2の外力判定値を超えている場合には、ステップ78に移行する。ステップ78においては、第2のカウンターに1を加算する。
【0067】
次に、ステップ79において、時間比較部49bは、第2のカウンターに制御周期を乗じることにより、外力が第2の外力判定値よりも大きくなった時からの経過時間を算出する。時間比較部49bは、この経過時間が第2の時間長さを超えているか否かを判別する。この経過時間が第2の時間長さ以下である場合には制御を終了する。一方で、この経過時間が第2の時間長さを超えている場合には、第2の時間長さの期間中に、外力が連続して第2の外力判定値を超えていると判別できる。そして、ステップ75に移行し、動作プログラム41の実行の再開を禁止する制御を実施する。
【0068】
本実施の形態において、停止指令部は、動作プログラムの実行を一時停止した時から第1の時間長さの期間中に外力が第1の外力判定値を超えたか否かを判別している。本発明は、この形態に限られず、停止指令部は、動作プログラムの実行を一時停止している期間中において、任意の時刻を開始時刻にした第1の時間長さの期間中に外力が連続して第1の外力判定値を超えているか否かを判別することができる。
【0069】
本実施の形態においては、多関節ロボットを例示して説明したが、この形態に限られず、任意のロボットを制御するロボット制御装置に本発明を適用することができる。
【0070】
上述のそれぞれの制御においては、機能および作用が変更されない範囲において適宜ステップの順序を変更することができる。上記の実施の形態は、適宜組み合わせることができる。上述のそれぞれの図において、同一または相等する部分には同一の符号を付している。なお、上記の実施の形態は例示であり発明を限定するものではない。また、実施の形態においては、特許請求の範囲に示される実施の形態の変更が含まれている。