しかしながら、特許文献1に記載の制御装置では、ロボットが作業者に衝突した場合に、ロボットがすぐに減速するとは限らず、作業者が負傷するおそれがある。また、作業者がロボットを手で押すことをやめると、ロボットの位置は元の指令位置にフィードバック制御されるため、ロボットが作業者に再衝突するおそれがある。
本発明は、こうした課題を解決するためになされたものであり、その主たる目的は、ロボットが作業者に衝突した場合に、ロボットを速やかに減速させるとともに、ロボットと作業者の再衝突を抑制することのできるロボットの制御装置を提供することにある。
上記課題を解決するための第1の手段は、
各関節が各モータにより駆動されるロボットを制御する制御装置であって、
前記ロボットが物体に衝突したことを検知する衝突検知部と、
前記衝突検知部により前記ロボットが物体に衝突したことが検知された場合に、前記各モータを減速させるように駆動する減速制御を実行する第1制御部と、
前記第1制御部により前記減速制御が実行された後、電源から前記各モータへの電力供給を停止させ且つ前記各モータにおいて電力入出力端子間を短絡させるダイナミックブレーキを所定期間実行する第2制御部と、
を備える。
上記構成によれば、ロボットの制御装置は、各関節が各モータにより駆動されるロボットを制御する。
ここで、衝突検知部により、ロボットが物体に衝突したことが検知される。そして、衝突検知部によりロボットが物体(作業者等)に衝突したことが検知された場合に、第1制御部により、各モータを減速させるように駆動する減速制御が実行される。すなわち、ロボットが物体に衝突した場合に、各モータを加速させる加速トルクを0にしたり、各モータの回転速度を維持する維持トルクを0にしたりするのではなく、各モータを減速させるように駆動する。このため、ロボットが作業者に衝突した場合に、ロボットを速やかに減速させることができ、作業者が負傷することを抑制することができる。
第1制御部により減速制御が実行された後、第2制御部により、各モータへの電力供給を停止させ且つ各モータにおいて電力入出力端子間を短絡させるダイナミックブレーキが所定期間実行される。このため、作業者は、ダイナミックブレーキが実行されている所定期間中に、ロボットを押して動かしたり、ロボットから離れたりすることができる。さらに、所定期間中は、ロボットの位置が衝突時の位置に制御されることがない。したがって、ロボットが作業者に再衝突することを抑制することができる。しかも、ダイナミックブレーキの実行中は、作業者がロボットを押して動かす際に抵抗が生じるため、ロボットが急激に動かされることを抑制することができる。
第2の手段では、前記第1制御部は、前記ロボットの速度が所定速度よりも低くなるまで、又は前記減速制御の実行期間が判定期間よりも長くなるまで、前記減速制御を実行する。
上記構成によれば、ロボットの速度が所定速度よりも低くなるまで、又は減速制御の実行期間が判定期間よりも長くなるまで、減速制御が実行されるため、ロボットを確実に減速させることができる。
第3の手段では、各抵抗を介して前記各モータにおいて前記電力入出力端子間を開閉する各抵抗スイッチを備え、前記第1制御部は、前記減速制御として、前記各モータを減速させるように駆動し、且つ前記各抵抗スイッチを閉じる。
上記構成によれば、ロボットの制御装置は、各抵抗を介して各モータにおいて電力入出力端子間を開閉する各抵抗スイッチを備えている。このため、各抵抗スイッチを閉じることにより、各抵抗を介して各モータにおいて電力入出力端子間を短絡させるダイナミックブレーキを実行することができる。そして、第1制御部は、減速制御として、各モータを減速させるように駆動し、且つ各抵抗スイッチを閉じる。このため、各モータの減速駆動に加えて、ダイナミックブレーキを実行することができ、ロボットが作業者に衝突した場合に、ロボットを更に速やかに減速させることができる。なお、このダイナミックブレーキは、モータへの電力供給を継続している状態でも実行することができる。
第4の手段では、各抵抗を介して前記各モータにおいて前記電力入出力端子間を開閉する各抵抗スイッチを備え、前記第1制御部は、前記減速制御として、前記各モータを減速させるように駆動し、且つ前記各抵抗スイッチを開く。
上記構成によれば、第1制御部は、減速制御として、各モータを減速させるように駆動し、且つ各抵抗スイッチを開く。この場合であっても、各モータの減速駆動が実行され、ロボットが作業者に衝突した場合に、ロボットを速やかに減速させることができる。
第5の手段では、第1スイッチング素子と第4スイッチング素子との直列接続体と、第2スイッチング素子と第5スイッチング素子との直列接続体と、第3スイッチング素子と第6スイッチング素子との直列接続体と、が並列接続されたブリッジ回路を有し、前記第1,第2,第3スイッチング素子が前記電源の高電位側に接続され、前記第4,第5,第6スイッチング素子が前記電源の低電位側に接続され、各直列接続体における2つの前記スイッチング素子の間が前記モータのU相,V相,W相にそれぞれ接続された3相インバータと、前記電源と前記3相インバータとの間に並列接続された平滑コンデンサと、を備え、前記第2制御部は、前記ダイナミックブレーキとして、前記各モータへの電力供給を停止させ且つ前記各抵抗スイッチを閉じる第1ダイナミックブレーキを実行する。
上記構成によれば、電源と各モータとの間に並列接続された平滑コンデンサにより、電源から供給される電圧が平滑化される。ここで、各モータへの電力供給を停止させ且つ第4,第5,第6スイッチング素子を閉じることで、各モータにおいて電力入出力端子間を短絡させるダイナミックブレーキを実行すると以下の問題が生じる。すなわち、電源から各モータへの電力供給を停止させたとしても、平滑コンデンサに電荷が残っている。そして、第4,第5,第6スイッチング素子を閉じるダイナミックブレーキでは、平滑コンデンサに残った電荷を放電させることができず、平滑コンデンサに残った電荷がその後に放電されるおそれがある。
この点、上記構成によれば、第2制御部により、ダイナミックブレーキとして、各モータへの電力供給を停止させ且つ各抵抗スイッチを閉じる第1ダイナミックブレーキが実行される。このため、第1ダイナミックブレーキによりロボットを速やかに減速させるとともに、平滑コンデンサに残っている電荷を抵抗により熱として消費させることができる。特に、第3の手段を前提とする場合は、第1制御部による減速制御において、既に各抵抗スイッチが閉じられているため、制御を簡素化することができる。
第6の手段では、前記第2制御部は、前記ダイナミックブレーキとして、前記第1ダイナミックブレーキを実行した後に、前記各モータへの電力供給を停止させ且つ前記第4,第5,第6スイッチング素子を閉じる第2ダイナミックブレーキを実行する。
一般に、各抵抗スイッチを閉じる第1ダイナミックブレーキによるロボットの制動力は、第4,第5,第6スイッチング素子を閉じる第2ダイナミックブレーキによるロボットの制動力よりも小さい。このため、第1ダイナミックブレーキの実行中は、第2ダイナミックブレーキの実行中と比較して、作業者がロボットを押して動かし易くなる。その結果、例えば作業者がロボットと物体との間に挟まれた状況において、作業者がロボットと物体との間から離脱し易くなる。しかしながら、第1ダイナミックブレーキを所定期間継続すると、ロボットと衝突して慌てた作業者により強く押されることで、ロボットが動き過ぎるおそれがある。その場合、作業者によりはねのけられたロボットが、物体に衝突したり、他の作業者に衝突したりするおそれがある。
この点、上記構成によれば、第2制御部は、第1ダイナミックブレーキを実行した後に、前記各モータへの電力供給を停止させ且つ第4,第5,第6スイッチング素子を閉じる第2ダイナミックブレーキを実行する。したがって、第1ダイナミックブレーキにより平滑コンデンサに残った電荷を消費させた後に、第1ダイナミックブレーキよりも制動力の大きい第2ダイナミックブレーキが実行されるため、作業者に押されてロボットが動き過ぎることを抑制することができる。ひいては、作業者によりはねのけられたロボットが、物体に衝突したり、他の作業者に衝突したりする二次災害を抑制することができる。
第2制御部によりダイナミックブレーキが実行された後に、ロボットの位置が直ちに衝突時の位置に制御されると、ロボットが作業者に再衝突するおそれがある。
この点、第7の手段では、前記第2制御部による前記ダイナミックブレーキの実行中に前記ロボットが移動させられた方向へ、前記第2制御部により前記ダイナミックブレーキが実行された後に前記ロボットを所定距離移動させる退避制御を実行する第3制御部を備えている。このため、衝突時の位置からロボットを一旦退避させることができ、ロボットが作業者に再衝突することを抑制することができる。
第2制御部によるダイナミックブレーキの実行中にロボットが移動させられた距離は、ロボットを衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。
この点、第8の手段では、前記第3制御部は、前記第2制御部による前記ダイナミックブレーキの実行中に前記ロボットが移動させられた距離に基づいて、前記退避制御における前記所定距離を設定するといった構成を採用している。したがって、ロボットを衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボットを移動させる距離を適切に設定することができる。
第2制御部によるダイナミックブレーキの実行中にロボットが移動させられた速度は、ロボットを衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。
この点、第9の手段では、前記第3制御部は、前記第2制御部による前記ダイナミックブレーキの実行中に前記ロボットが移動させられた速度に基づいて、前記退避制御における前記所定距離を設定するといった構成を採用している。したがって、ロボットを衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボットを移動させる距離を適切に設定することができる。
第2制御部によるダイナミックブレーキの実行中にロボットが移動させられた加速度は、ロボットを衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。
この点、第10の手段では、前記第3制御部は、前記第2制御部による前記ダイナミックブレーキの実行中に前記ロボットが移動させられた加速度に基づいて、前記退避制御における前記所定距離を設定するといった構成を採用している。したがって、ロボットを衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボットを移動させる距離を適切に設定することができる。
第3制御部により退避制御が実行された後のロボットの位置から、直線的な軌道により衝突時のロボットの位置まで制御されると、作業者の体が衝突時の位置に残っていた場合に、ロボットが作業者に再衝突するおそれがある。
この点、第11の手段では、前記第3制御部により前記退避制御が実行された後の前記ロボットの位置から、前記第1制御部による前記減速制御が終了した時の前記ロボットの位置まで、円弧状の軌道により前記ロボットの位置を制御する第4制御部を備えている。したがって、作業者の体が衝突時の位置に残っていたとしても、ロボットが作業者に再衝突することを抑制することができる。
第12の手段では、前記第4制御部は、前記第2制御部による前記ダイナミックブレーキの実行中に前記ロボットが移動させられた速度に基づいて、前記円弧状の軌道の曲率半径を設定する。
上記構成によれば、第2制御部によるダイナミックブレーキの実行中にロボットが移動させられた速度に基づいて、円弧状の軌道の曲率半径が設定される。このため、ダイナミックブレーキの実行中にロボットが移動させられた速度に応じて、退避制御が実行された後のロボットの位置から減速制御が終了した時のロボットの位置まで制御する円弧状の軌道を適切に設定することができる。
以下、垂直多関節型ロボットの制御装置に具現化した一実施形態について、図面を参照しつつ説明する。本実施形態のロボットは、例えば産業用ロボットとして機械組立工場などの組立システムにて用いられる。
はじめに、ロボット10の概要を図1に基づいて説明する。
ロボット10は、例えば6軸の垂直多関節型ロボットとして構成されている。ロボット10は、ベース11、ショルダ部13、下アーム15、第1上アーム16A、第2上アーム16B、手首部17、及びフランジ18を備えている。ショルダ部13(第1回転部)は、ベース11により水平方向に回転可能に支持されている。下アーム15(第2回転部)は、ショルダ部13により上下方向に回転可能に支持されている。第1上アーム16A(第3回転部)は、下アーム15により上下方向に回転可能に支持されている。第2上アーム16B(第4回転部)は、第1上アーム16Aにより捻り回転可能に支持されている。手首部17(第5回転部)は、第2上アーム16Bにより上下方向に回転可能に支持されている。フランジ18(第6回転部)は、手首部17により捻り回転可能に支持されている。
ベース11、ショルダ部13、下アーム15、第1上アーム16A、第2上アーム16B、手首部17及びフランジ18は、ロボット10のアームとして機能する。アーム先端であるフランジ18には、図示は省略するが、エンドエフェクタ(手先)が取り付けられる。ロボット10の各関節(各回転部)は、対応して設けられた各モータM(図2参照)により駆動される。
ティーチングペンダント40は、例えば作業者(オペレータ)が携帯あるいは手に持って操作可能な程度の大きさで、例えば薄型の直方体状に形成されている。ティーチングペンダント40は、各種のキースイッチ41及びディスプレイ42等を備えている。作業者は、キースイッチ41により種々の入力操作を行う。ティーチングペンダント40は、ケーブルを介してコントローラ70に接続されており、コントローラ70と通信可能となっている。作業者は、ティーチングペンダント40を操作して、ロボット10の動作プログラムの作成、修正、登録、各種パラメータの設定を行うことができる。動作プログラムの修正等を行うティーチングでは、ロボット10が行う作業において制御点が通過する教示点を教示する。そして、作業者は、コントローラ70を通じて、ティーチングされた動作プログラムに基づきロボット10を動作させることができる。換言すれば、コントローラ70は、予め設定された動作プログラム及びティーチングペンダント40の操作に基づいて、ロボット10のアームの動作を制御する。
図2は、コントローラ70及びその周辺の電気的構成を示すブロック図である。コントローラ70(ロボットの制御装置)は、電源ユニット20、インバータ回路30、及び制御部60等を備えている。なお、同図では、1つのモータMに対応する構成を記載しているが、インバータ回路30、回生抵抗25、スイッチング素子26、及び電圧センサ27は、モータM毎に設けられている。
電源ユニット20(電圧調節部)は、例えば3相200Vの商用交流電源14(電源)に接続されている。電源ユニット20は、整流回路24、コイル、コンデンサ21、スイッチング素子22,23等を備えている。コンデンサ21(平滑コンデンサ)は、電源14とインバータ回路30との間において、電源ライン15a,15bに並列に接続されている。スイッチング素子22,23は、電界効果トランジスタ(FET)等で形成されている。スイッチング素子22は電源ライン15a,15bに直列に接続されており、スイッチング素子23は電源ライン15a,15bに並列に接続されている。そして、電源ユニット20は、スイッチング素子22を閉じた状態で、スイッチング素子23の開閉をPWM制御(デューティ制御)することにより、電源14から電源ライン15aへ供給される電源電圧Vbの高さを調節する。
回生抵抗25(抵抗)及びスイッチング素子26(抵抗スイッチ)を直列に接続した直列接続体が、電源ライン15a,15bに並列に接続されている。スイッチング素子26は、電界効果トランジスタ等で形成されている。また、電源ライン15a,15bには、電圧センサ27が並列に接続されている。電圧センサ27(電圧検出部)は、電源ライン15a,15b間の電源電圧Vbを検出する。
電源ライン15a,15bには、各インバータ回路30が並列に接続されている。各インバータ回路30(3相インバータ)には、ロボット10における各関節(各回転部)を駆動する各モータMが接続されている。各モータMには、モータMの回転を減速させる減速機(図示略)が接続されている。各モータMには、回転位置を検出するエンコーダE(位置検出部)が設けられている。また、各モータMに減速機を介して接続された出力軸(回転軸)には、出力軸の発生トルクを検出するトルクセンサTrが設けられている。各モータMには各モータMの回転位置を機械的に保持する機械ブレーキ(図示略)が設けられている。機械ブレーキは、電力が供給されることで保持を解除し、電力供給が停止されることで回転位置を保持する。
各インバータ回路30は、6個のスイッチング素子SW1〜SW6を3相ブリッジ接続するとともに、各スイッチング素子と並列にフライホイールダイオード32を接続した周知のものである。スイッチング素子SW1〜SW6(第1〜第6スイッチング素子)は、バイポーラ型パワートランジスタ等で形成されている。各インバータ回路30は、各モータMへ供給される電流を検出する電流センサ35を備えている。
詳しくは、インバータ回路30は、スイッチング素子SW1,SW4の直列接続体と、スイッチング素子SW2,SW5の直列接続体と、スイッチング素子SW3,SW6の直列接続体とが並列接続されたブリッジ回路である。そして、スイッチング素子SW1〜SW3は、電源14の正極側(高電位側)と接続され、スイッチング素子SW4〜SW6は、電源14の負極側(低電位側)及びGNDと接続されている。さらに、直列接続体におけるスイッチング素子SW1とスイッチング素子SW2との間が、モータMのU相の電力入出力端子に接続されている。同様に、直列接続体におけるスイッチング素子SW2とスイッチング素子SW5との間が、モータMのV相の電力入出力端子に接続されており、直列接続体におけるスイッチング素子SW3とスイッチング素子SW6との間が、モータMのW相の電力入出力端子に接続されている。
そして、各インバータ回路30において、スイッチング素子SW1〜SW6の開閉がPWM制御されることにより、各インバータ回路30から各モータMへ供給される電圧が制御される。各モータMへ供給される電流が電流センサ35により検出される。
制御部60は、電源制御部61、軌道生成部62、位置・速度制御部63、電流制御部64、PWM回路65、及びドライブ回路66等を備えている。
各モータMに設けられたエンコーダEの出力は、軌道生成部62、位置・速度制御部63、及び電流制御部64へそれぞれ入力される。軌道生成部62は、ロボット10が行う動作、及び各エンコーダEにより検出された各モータMの回転位置(各回転部の回転位置)に基づいて、ロボット10の動作軌道(目標位置)及び各モータMの目標回転位置(各回転部の目標回転位置)を算出する。位置・速度制御部63は、軌道生成部62により算出された各モータMの目標回転位置、及び検出された各モータMの回転位置に基づいて、各モータMの目標回転速度(各回転部の目標回転速度)、及び各モータMの目標トルクを算出する。電流制御部64は、位置・速度制御部63により算出された各モータMの目標トルク、各電流センサ35により検出された電流、並びに検出された各モータMの回転位置に基づいて、インバータ回路30からモータMへ供給する目標電流を算出する。PWM回路65は、電流制御部64により算出された目標電流に基づいて、各インバータ回路30の各スイッチング素子SW1〜SW6の開閉を制御するPWM信号を出力する。ドライブ回路66は、PWM回路65から出力されたPWM信号に基づいて、各インバータ回路30の各スイッチング素子SW1〜SW6を開閉駆動する。これにより、各モータM(ロボット10)を目標回転位置(目標位置)まで動作させるように、各モータMの駆動が制御される。
コントローラ70は、各モータMへの電力供給を停止させ且つ各スイッチング素子26を閉じる第1ダイナミックブレーキを実行可能である。具体的には、各モータMが回転中に、各インバータ回路30の各スイッチング素子SW1〜SW6を開き(オフに制御し)、且つスイッチング素子22を開き、且つスイッチング素子26を閉じる。これにより、電源14から各モータMへの電力供給が停止され、各モータMにおいて各相の電力入出力端子間がフライホイールダイオード32、回生抵抗25、及びスイッチング素子26を介して短絡される。その結果、各モータMにおいて発電された電力が、各モータM及び各回生抵抗25で熱として消費されるとともに、各モータMに制動力が作用する。
また、コントローラ70は、各モータMへの電力供給を停止させ且つスイッチング素子SW4,SW5,SW6を閉じる第2ダイナミックブレーキを実行可能である。具体的には、各モータMが回転中に、各インバータ回路30のスイッチング素子SW4,SW5,SW6を閉じ(オンに制御し)、且つスイッチング素子22を開く。なお、このときスイッチング素子26を開き、各インバータ回路30のスイッチング素子SW1,SW2,SW3を開く(オフに制御する)。これにより、電源14から各モータMへの電力供給が停止され、各モータMにおいて各相の電力入出力端子間が6スイッチング素子SW4,SW5,SW6を介して短絡される。その結果、各モータMに流れる電流が、各モータMで熱として消費されるとともに、各モータMに制動力が作用する。上記第1ダイナミックブレーキによる各モータM(ロボット10)の制動力は、第2ダイナミックブレーキによる各モータMの制動力よりも小さくなっている。
また、コントローラ70は、ロボット10が物体に衝突したことを検知した場合に、各モータMを減速させるように駆動する減速制御を実行可能である。具体的には、ロボット10の指令位置(目標位置)に現在のロボット10の位置を設定し、指令位置に基づいて各モータMの目標回転位置を算出し、各モータMの目標回転位置及び検出された各モータMの回転位置に基づいて、各モータMの目標回転速度及び各モータMの目標トルクを算出する。これにより、回転中の各モータMを逆回転方向に駆動する減速トルクが発生し、動作中のロボット10が急激に停止させられる(減速駆動)。ここで、コントローラ70は、減速制御として、各モータMの減速駆動に加えて、スイッチング素子26を閉じるダイナミックブレーキを実行可能である。これにより、各モータMにおいて各相の電力入出力端子間がフライホイールダイオード32、回生抵抗25、及びスイッチング素子26を介して短絡される。その結果、各モータMから流れる電流が各回生抵抗25で熱として消費されるとともに、各モータMに制動力が作用し、減速駆動のみによる制動力よりも大きな制動力を各モータM(ロボット10)に作用させることができる。
図3は、ロボット10が物体に衝突した時に実行される衝突時制御の手順を示すフローチャートである。この一連の処理は、ロボット10を動作させる際に、コントローラ70により実行される。
まず、ロボット10の現在位置を取得する(S11)。詳しくは、各エンコーダEの検出値に基づいて、各モータMの現在の回転位置を取得する。トルクセンサTrの検出値に基づいて、ロボット10の各回転部が発生している現在トルクを取得する(S12)。
続いて、ロボット10の動作軌道に基づいて、ロボット10の指令位置を計算する(S13)。詳しくは、ロボット10の動作軌道は、作業者によるティーチングや、動作プログラムにより予め設定されている。そして、動作軌道に沿ってロボット10を動作させるように、各モータMの指令位置(目標回転位置)を計算する。
続いて、ロボット10を動作させる(S14)。詳しくは、各モータMの指令位置、及び各エンコーダEにより検出された各モータMの現在の回転位置に基づいて、各モータMの指令速度(目標回転速度)及び指令加速度(目標加速度)を計算する。各モータMの指令速度及び指令加速度に基づいて、各モータMの指令トルク(目標トルク)を計算する。そして、各モータMにより指令トルクを発生させるように、インバータ回路30の各スイッチング素子SW1〜SW6を制御する。
続いて、ロボット10の動作軌道に基づいて、ロボット10の停止位置を計算する(S15)。この停止位置は、動作軌道の終了位置、あるいは動作軌道の途中においてロボット10を停止させる位置である。
続いて、現在トルクから指令トルクを引いた差が、危険トルクよりも小さいか否か判定する(S16)。この危険トルクは、ロボット10の安全基準等に基づいて設定されている。この判定において、現在トルクから指令トルクを引いた差が、危険トルクよりも小さいと判定した場合(S16:YES)、ロボット10の動作軌道に基づいてロボット10の指令位置を更新する(S17)。すなわち、ロボット10が物体(作業者を含む)に衝突していないと判定した場合、ロボット10の動作軌道に基づいてロボット10の指令位置を更新する。
続いて、ロボット10を停止させる必要があるか否か判定する(S18)。詳しくは、S11の処理で取得したロボット10の現在位置がS15の処理で計算したロボット10の停止位置に一致した場合、又はロボット10を停止させる停止指令がある場合に、ロボット10を停止させる必要があると判定する。この判定において、ロボット10を停止させる必要があると判定した場合(S18:YES)、この一連の処理を一旦終了する(END)。一方、この判定において、ロボット10を停止させる必要がないと判定した場合(S18:NO)、S11の処理から再度実行する。
また、S16の判定において、現在トルクから指令トルクを引いた差が、危険トルクよりも小さくないと判定した場合(S16:NO)、ロボット10の指令位置にロボット10の現在位置を設定する(S19)。すなわち、ロボット10が物体に衝突したと判定した場合、ロボット10の指令位置にロボット10の現在位置を設定する。ロボット10の現在位置は、例えばロボット10の手先(制御点)の現在位置である。
続いて、タイマーをセットする(S20)。すなわち、タイマーによる時間の計測を開始する。そして、タイマーで計測された時間(実行期間)が処理時間よりも長いか否か判定する(S21)。この処理時間(判定期間)は、ロボット10を停止させることが可能な時間に設定されており、固定値でもよいし、ロボット10の速度に応じた可変値でもよい。例えば、ロボット10の速度が高いほど、処理時間を長くする。
S21の判定において、タイマーで計測された時間が処理時間よりも長くないと判定した場合(S21:NO)、ロボット10の停止軌道に基づいて、ロボット10の指令位置を計算する(S22)。詳しくは、ロボット10の指令位置を、S19の処理で設定された指令位置にする。そして、指令位置にロボット10を停止(動作)させるように、各モータMの指令位置(目標回転位置)を計算する。
続いて、ロボット10を動作させる(S23)。S23の処理はS14の処理と同一であるが、ここでは各モータMの指令加速度(目標加速度)は負の加速度(減速度)となる。そして、各モータMの指令トルク(目標トルク)は、負の加速トルク(減速トルク)となる。要するに、S22,S23の処理により、上述した各モータMの減速駆動を実行する。さらに、上述したように、各モータMの減速駆動に加えて、スイッチング素子26を閉じるダイナミックブレーキを実行する。
続いて、ロボット10の停止軌道に基づいて、ロボット10の停止位置を計算する(S24)。詳しくは、ロボット10の停止位置を、S19の処理で設定された指令位置にする。
続いて、ロボット10が停止したか否か判定する(S25)。詳しくは、計算された停止位置にロボット10を停止させるために必要な制御が終了したか否か判定する。なお、ロボット10の速度が所定速度よりも低くなったか否か、あるいはロボット10の速度を所定速度よりも低くするための制御が終了したか否か判定してもよい。この判定において、ロボット10が停止していないと判定した場合(S25:NO)、S21の処理から再度実行する。一方、この判定においてロボット10が停止したと判定した場合(S25:YES)、又はS21の判定においてタイマーで計測された時間が処理時間よりも長いと判定した場合(S21:YES)、指令位置を保存する(S26)。具体的には、S19の処理で設定された指令位置、すなわち衝突時のロボット10の位置を保存する。
続いて、タイマーをセットする(S27)。そして、タイマーで計測された時間が処理時間よりも長いか否か判定する(S28)。この処理時間は、例えばロボット10と設備との間に手(体の一部)を挟まれた作業者が手を抜くことが可能な時間に設定されており、固定値でもよいし、ロボット10の速度や加速度に応じた可変値でもよい。例えば、ロボット10の速度や加速度が高いほど、処理時間を長くする。
S28の判定において、タイマーで計測された時間が処理時間よりも長くないと判定した場合(S28:NO)、ダイナミックブレーキを実行する(S29)。詳しくは、上述した第1ダイナミックブレーキを第1所定期間実行し、その後に第2ダイナミックブレーキを第2所定期間実行する。
続いて、ロボット10の現在位置を取得する(S30)。S30の処理はS11の処理と同一であるが、ここではダイナミックブレーキを実行中に作業者により押し動かされるロボット10の現在位置が逐次取得される。ロボット10の各回転部が発生している現在トルクを取得する(S31)。S31の処理はS12の処理と同一であるが、ここではダイナミックブレーキを実行中に作業者がロボット10に作用させている現在トルクが逐次取得される。その後、S28の処理から再度実行する。
一方、S28の判定において、タイマーで計測された時間が処理時間よりも長いと判定した場合(S28:YES)、ロボット10を退避させる退避軌道を設定する(S32)。詳しくは、図4に示すように、S29の処理によるダイナミックブレーキの実行中にロボット10が移動させられた方向へ、ダイナミックブレーキが実行された後にロボット10を所定距離移動させる退避軌道を設定する。さらに、S29の処理によるダイナミックブレーキの実行中にロボット10が移動させられた速度に基づいて、この所定距離を設定する。例えば、ロボット10が移動させられた速度が高いほど、所定距離を長くする。ロボット10が移動させられた速度は、S30の処理で取得した複数の現在位置に基づいて計算することができる。
続いて、タイマーをセットする(S33)。そして、タイマーで計測された時間が処理時間よりも長いか否か判定する(S34)。この処理時間は、ロボット10を退避軌道に沿って退避させることが可能な時間に設定されており、固定値でもよいし、ロボット10の速度に応じた可変値でもよい。例えば、ロボット10が移動させられた速度が高いほど上記所定距離が長くされる構成では処理時間を固定値とし、所定距離が固定値の構成ではロボット10の速度が高いほど処理時間を短くする。
S35〜S41の処理はS11〜S17の処理と同一であるが、S37の処理ではロボット10の退避軌道に基づいて、ロボット10の指令位置を計算する(S37)。そして、S37及びS38の処理は、作業者により押された方向へロボット10を退避させる退避制御である。また、S40の判定において、現在トルクから指令トルクを引いた差が、危険トルクよりも小さくないと判定した場合(S40:NO)、S27の処理から再度実行する。
また、S34の処理において、タイマーで計測された時間が処理時間よりも長いと判定した場合(S34:YES)、ロボット10の位置を衝突時の位置へ復帰させる復帰軌道を設定する(S42)。詳しくは、図5に示すように、上記退避制御が実行された後のロボット10の位置から、上述した減速制御が終了した時のロボット10の位置まで復帰させる円弧状の復帰軌道を設定する。さらに、S29の処理によるダイナミックブレーキの実行中にロボット10が移動させられた速度に基づいて、この復帰軌道を設定する。例えば、ロボット10が移動させられた速度が高いほど、復帰軌道の曲率半径を大きくする。
S43〜S50の処理はS11〜S18の処理と同一であるが、S45の処理ではロボット10の復帰軌道に基づいて、ロボット10の指令位置を計算する(S45)。
S48の判定において、現在トルクから指令トルクを引いた差が、危険トルクよりも小さくないと判定した場合(S48:NO)、ロボット10の動力を遮断する(S51)。具体的には、ロボット10への電力供給を停止する。これにより、各モータMに設けられた機械ブレーキによって、各モータMの回転位置が保持され、ロボット10の位置(姿勢)が保持される。その後、この一連の処理を終了する(END)。
なお、S16の処理が衝突検知部としての処理に相当し、S22及びS23の処理が第1制御部としての処理に相当し、S29の処理が第2制御部としての処理に相当し、S37及びS38の処理が第3制御部としての処理に相当し、S45及びS46の処理が第4制御部としての処理に相当する。
以上詳述した本実施形態は、以下の利点を有する。
・ロボット10が作業者(物体)に衝突したことが検知された場合に、各モータMを減速させるように駆動する減速制御が実行される。すなわち、ロボット10が物体に衝突した場合に、各モータMを加速させる加速トルクを0にしたり、各モータMの回転速度を維持する維持トルクを0にしたりするのではなく、各モータMを減速させるように駆動する。このため、ロボット10が作業者に衝突した場合に、ロボット10を速やかに減速させることができ、作業者が負傷することを抑制することができる。
・減速制御が実行された後、各モータMへの電力供給を停止させ且つ各モータMにおいて電力入出力端子間を短絡させるダイナミックブレーキが所定期間実行される。このため、作業者は、ダイナミックブレーキが実行されている所定期間中に、ロボット10を押して動かしたり、ロボット10から離れたりすることができる。さらに、所定期間中は、ロボット10の位置が衝突時の位置に制御されることがない。したがって、ロボット10が作業者に再衝突することを抑制することができる。しかも、ダイナミックブレーキの実行中は、作業者がロボット10を押して動かす際に抵抗が生じるため、ロボット10が急激に動かされることを抑制することができる。
・ロボット10の速度が所定速度よりも低くなるまで、又は減速制御の実行時間が処理時間よりも長くなるまで、減速制御が実行されるため、ロボット10を確実に減速させることができる。
・ロボット10のコントローラ70は、各回生抵抗25を介して各モータMにおいて電力入出力端子間を開閉する各スイッチング素子26を備えている。このため、各スイッチング素子26を閉じることにより、各回生抵抗25を介して各モータMにおいて電力入出力端子間を短絡させるダイナミックブレーキを実行することができる。そして、減速制御として、各モータMが減速するように駆動され、且つ各スイッチング素子26が閉じられる。このため、各モータMの減速駆動に加えて、ダイナミックブレーキを実行することができ、ロボット10が作業者に衝突した場合に、ロボット10を更に速やかに減速させることができる。
・電源14と各モータMとの間に並列接続されたコンデンサ21により、電源14から供給される電圧が平滑化される。ここで、各モータMへの電力供給を停止させ且つスイッチング素子SW4,SW5,SW6を閉じることで、各モータMにおいて電力入出力端子間を短絡させるダイナミックブレーキを実行すると以下の問題が生じる。すなわち、電源14から各モータMへの電力供給を停止させたとしても、コンデンサ21に電荷が残っている。そして、スイッチング素子SW4,SW5,SW6を閉じるダイナミックブレーキでは、コンデンサ21に残った電荷を放電させることができず、コンデンサ21に残った電荷がその後に放電されるおそれがある。この点、ダイナミックブレーキとして、各モータMへの電力供給を停止させ且つ各スイッチング素子26を閉じる第1ダイナミックブレーキが実行される。このため、第1ダイナミックブレーキによりロボット10を速やかに減速させるとともに、コンデンサ21に残っている電荷を回生抵抗25により熱として消費させることができる。特に、減速制御において、既に各スイッチング素子26が閉じられているため、制御を簡素化することができる。
・各スイッチング素子26を閉じる第1ダイナミックブレーキによるロボット10の制動力は、スイッチング素子SW4,SW5,SW6を閉じる第2ダイナミックブレーキによるロボット10の制動力よりも小さい。このため、第1ダイナミックブレーキの実行中は、第2ダイナミックブレーキの実行中と比較して、作業者がロボット10を押して動かし易くなる。その結果、例えば作業者がロボット10と物体との間に挟まれた状況において、作業者がロボット10と物体との間から離脱し易くなる。しかしながら、第1ダイナミックブレーキを所定期間継続すると、ロボット10と衝突して慌てた作業者により強く押されることで、ロボット10が動き過ぎるおそれがある。その場合、作業者によりはねのけられたロボット10が、物体に衝突したり、他の作業者に衝突したりするおそれがある。この点、所定期間において、第1ダイナミックブレーキが実行された後に、各モータMへの電力供給を停止させ且つスイッチング素子SW4,SW5,SW6を閉じる第2ダイナミックブレーキが実行される。したがって、第1ダイナミックブレーキによりコンデンサ21に残った電荷を消費させた後に、第1ダイナミックブレーキよりも制動力の大きい第2ダイナミックブレーキが実行されるため、作業者に押されてロボット10が動き過ぎることを抑制することができる。ひいては、作業者によりはねのけられたロボット10が、物体に衝突したり、他の作業者に衝突したりする二次災害を抑制することができる。
・ダイナミックブレーキが実行された後に、ロボット10の位置が直ちに衝突時の位置に制御されると、ロボット10が作業者に再衝突するおそれがある。この点、ダイナミックブレーキの実行中にロボット10が移動させられた方向へ、ダイナミックブレーキが実行された後にロボット10を所定距離移動させる退避制御が実行される。このため、衝突時の位置からロボット10を一旦退避させることができ、ロボット10が作業者に再衝突することを抑制することができる。
・ダイナミックブレーキの実行中にロボット10が移動させられた速度は、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。この点、ダイナミックブレーキの実行中にロボット10が移動させられた速度に基づいて、退避制御における所定距離が設定される。したがって、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボット10を移動させる距離を適切に設定することができる。
・退避制御が実行された後にロボット10の位置から、直線的な軌道により衝突時のロボット10の位置まで制御されると、作業者の体が衝突時の位置に残っていた場合に、ロボット10が作業者に再衝突するおそれがある。この点、退避制御が実行された後のロボット10の位置から、減速制御が終了した時のロボット10の位置まで、円弧状の復帰軌道によりロボット10の位置が制御される。したがって、作業者の体が衝突時の位置に残っていたとしても、ロボット10が作業者に再衝突することを抑制することができる。
・ダイナミックブレーキの実行中にロボット10が移動させられた速度に基づいて、円弧状の復帰軌道の曲率半径が設定される。このため、ダイナミックブレーキの実行中にロボット10が移動させられた速度に応じて、円弧状の復帰軌道を適切に設定することができる。
上記実施形態を、以下のように変更して実施することもできる。
・電流センサ35により検出される電流が閾値を超えて変動したことに基づいて、ロボット10が作業者(物体)に衝突したと判定することもできる。
・S22及びS23の処理として、コントローラ70(第1制御部)は、各スイッチング素子26を閉じるダイナミックブレーキを実行せず、各モータMの減速駆動のみを実行してもよい。すなわち、減速制御として、各モータMを減速させるように駆動し(減速駆動)、且つ各スイッチング素子26を開く。この場合であっても、各モータMの減速駆動が実行され、ロボット10が作業者に衝突した場合に、ロボット10を速やかに減速させることができる。
・S29の処理として、コントローラ70(第2制御部)は、第1ダイナミックブレーキのみを所定期間実行する、又は第2ダイナミックブレーキのみを所定期間実行するようにしてもよい。
・ダイナミックブレーキの実行中にロボット10が移動させられた距離は、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。そこで、コントローラ70(第3制御部)は、ダイナミックブレーキの実行中にロボット10が移動させられた距離に基づいて、退避制御における所定距離を設定してもよい。こうした構成によれば、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボット10を移動させる距離を適切に設定することができる。
・ダイナミックブレーキの実行中にロボット10が移動させられた加速度は、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さを反映している可能性が高い。そこで、コントローラ70(第3制御部)は、ダイナミックブレーキの実行中にロボット10が移動させられた加速度に基づいて、退避制御における所定距離を設定してもよい。こうした構成によれば、ロボット10を衝突時の位置から作業者が遠ざける必要性の高さに応じて、退避制御におけるロボット10を移動させる距離を適切に設定することができる。また、コントローラ70は、ダイナミックブレーキの実行中にロボット10が移動させられた距離、速度、及び加速度の少なくとも1つに基づいて、退避制御における所定距離を設定してもよい。
・コントローラ70(第4制御部)は、退避制御が実行された後のロボット10の位置から、減速制御が終了した時のロボット10の位置まで、直線状の軌道によりロボット10の位置を制御することもできる。その場合であっても、ダイナミックブレーキが実行された後にロボット10を所定距離移動させる退避制御が実行されるため、衝突時の位置からロボット10を一旦退避させることができ、ロボット10が作業者に再衝突することを抑制することができる。
・各インバータ回路30と各モータMとの間において、各モータMの電力入出力端子間を短絡させるように、抵抗とスイッチング素子との直列接続体を接続し、このスイッチング素子を閉じることで、ダイナミックブレーキを実行することもできる。
・ロボット10として、水平多関節型ロボットを採用することもできる。