(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-06
(45)【発行日】2023-03-14
(54)【発明の名称】ロボットの制御装置およびロボットの制御方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20230307BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2019024493
(22)【出願日】2019-02-14
【審査請求日】2021-10-04
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】110000567
【氏名又は名称】弁理士法人サトー
(72)【発明者】
【氏名】佐藤 晶則
(72)【発明者】
【氏名】河地 勇登
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開2017-074669(JP,A)
【文献】特開2014-014901(JP,A)
【文献】特開昭63-260779(JP,A)
【文献】特開昭63-278777(JP,A)
【文献】特開昭63-278778(JP,A)
【文献】特開平05-057643(JP,A)
【文献】特開平07-251390(JP,A)
【文献】特開平08-216074(JP,A)
【文献】特開平11-239988(JP,A)
【文献】特開2018-111155(JP,A)
【文献】米国特許出願公開第2015/0217445(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 3/00- 9/22
(57)【特許請求の範囲】
【請求項1】
垂直多関節型のロボットを制御するものであり、ユーザが前記ロボットを直接動かして前記ロボットのアーム先端の位置姿勢を教示するダイレクトティーチングに対応したロボットの制御装置であって、
前記ロボットの各軸の角度制御を行う角度制御部と、
前記アーム先端の姿勢を目標姿勢に維持しつつ前記アーム先端の位置を変化させるように前記ダイレクトティーチングが行われる際、前記各軸のうち、前記アーム先端の位置を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、前記アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を前記角度制御部により制御される状態とした制御軸に設定する軸設定部と、
を備え、
前記角度制御部は、前記ダイレクトティーチングが行われる際、前記操作軸の現在角度および前記目標姿勢を入力として逆運動学計算により前記制御軸の指令角度を算出するロボットの制御装置。
【請求項2】
垂直多関節型のロボットを制御するものであり、ユーザが前記ロボットを直接動かして前記ロボットのアーム先端の位置姿勢を教示するダイレクトティーチングに対応したロボットの制御装置であって、
前記ロボットの各軸の角度制御を行う角度制御部と、
前記アーム先端の位置を目標位置に維持しつつ前記アーム先端の姿勢を変化させるように前記ダイレクトティーチングが行われる際、前記各軸のうち、前記アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、前記アーム先端の位置を決定するうえで支配的な要因となり得る軸を前記角度制御部により制御される状態とした制御軸に設定する軸設定部と、
を備え、
前記角度制御部は、前記ダイレクトティーチングが行われる際、前記操作軸の現在角度および前記目標位置を入力として逆運動学計算により前記制御軸の指令角度を算出するロボットの制御装置。
【請求項3】
前記角度制御部は、
前記制御軸の指令角度が算出されると、その指令角度に基づいて算出される前記制御軸の指令角速度および指令角加速度がそれぞれ予め定められた最大角速度および最大角加速度を超えないように前記指令角度を補正する加速補正処理を実行する請求項1または2に記載のロボットの制御装置。
【請求項4】
前記角度制御部は、
前記ロボットが特異点近傍であるか否かを検出する特異点検出処理と、
前記特異点検出処理により前記特異点近傍であることが検出されると、その時点以降の前記指令角度を、前回の前記指令角度に置換する指令角度置換処理と、
を実行する請求項1から3のいずれか一項に記載のロボットの制御装置。
【請求項5】
垂直多関節型のロボットを制御するものであり、ユーザが前記ロボットを直接動かして前記ロボットのアーム先端の位置姿勢を教示するダイレクトティーチングを行うことができるロボットの制御方法であって、
前記ロボットの各軸の角度制御を行う角度制御処理と、
前記アーム先端の姿勢を目標姿勢に維持しつつ前記アーム先端の位置を変化させるように前記ダイレクトティーチングが行われる際、前記各軸のうち、前記アーム先端の位置を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、前記アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を前記角度制御処理により制御される状態とした制御軸に設定する軸設定処理と、
を含み、
前記角度制御処理では、前記ダイレクトティーチングが行われる際、前記操作軸の現在角度および前記目標姿勢を入力として逆運動学計算により前記制御軸の指令角度を算出するロボットの制御方法。
【請求項6】
垂直多関節型のロボットを制御するものであり、ユーザが前記ロボットを直接動かして前記ロボットのアーム先端の位置姿勢を教示するダイレクトティーチングを行うことができるロボットの制御方法であって、
前記ロボットの各軸の角度制御を行う角度制御処理と、
前記アーム先端の位置を目標位置に維持しつつ前記アーム先端の姿勢を変化させるように前記ダイレクトティーチングが行われる際、前記各軸のうち、前記アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、前記アーム先端の位置を決定するうえで支配的な要因となり得る軸を前記角度制御処理により制御される状態とした制御軸に設定する軸設定処理と、
を含み、
前記角度制御処理では、前記ダイレクトティーチングが行われる際、前記操作軸の現在角度および前記目標位置を入力として逆運動学計算により前記制御軸の指令角度を算出するロボットの制御方法。
【請求項7】
前記角度制御処理には、
前記制御軸の指令角度が算出されると、その指令角度に基づいて算出される前記制御軸の指令角速度および指令角加速度がそれぞれ予め定められた最大角速度および最大角加速度を超えないように前記指令角度を補正する加速補正処理が含まれる請求項5または6に記載のロボットの制御方法。
【請求項8】
前記角度制御処理には、
前記ロボットが特異点近傍であるか否かを検出する特異点検出処理と、
前記特異点検出処理により前記特異点近傍であることが検出されると、その時点以降の前記指令角度を、前回の前記指令角度に置換する指令角度置換処理と、
が含まれる請求項5から7のいずれか一項に記載のロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザがロボットを直接動かしてロボットのアーム先端の位置姿勢を教示するダイレクトティーチングに対応したロボットの制御装置およびロボットの制御方法に関する。
【背景技術】
【0002】
従来、ロボットに所定の作業を行わせるために動作をティーチング(教示)する方法として、ユーザが専用の操作端末を用いて遠隔でティーチングを行う手法(以下、遠隔ティーチングと称す)と、ユーザ(人)がロボットに直接触れて動かすことによりティーチングを行う手法(以下、ダイレクトティーチングと称す)と、がある。ダイレクトティーチングには、ユーザが、専門知識を必要とすることなく直感的に操作を行うことができるというメリットがある。
【0003】
ただし、ダイレクトティーチングでは、ユーザが手の感覚を頼りにロボットのアーム先端の位置および姿勢を調節することになるため、遠隔ティーチングのようにキー操作や数値入力で位置および姿勢を調節する場合に比べ、ユーザの意図した通りに位置および姿勢を変化させることが難しかった。具体的には、ユーザが、先端に取り付けられたハンドなどのツールの姿勢を保ちつつ位置だけを変化させようとしても、理想的な形で力を加えることは非常に難しく、どうしても余分な力が加わってしまい、先端の姿勢が意図とは異なる形で変化してしまうことがある。また、ユーザが、ツールの位置を保ちつつ姿勢だけを変化させようとしても、上述したように理想的な形で力を加えることが困難であることから、先端の位置が意図せずに変化してしまうことがある。
【0004】
このようなダイレクトティーチングにおける課題を解決するため、様々な技術が考えられている。例えば、特許文献1には、ロボットのアーム先端にジョイスティックや力覚センサを取り付け、それらを入力装置として先端の位置および姿勢のうちいずれか一方だけを変更し制御する方法が開示されている。また、ロボットの各関節にトルクセンサを取り付けたり、電流値から外力推定を行ったり、することにより力覚センサを取り付けるものと同等の機能を実現することも考えられる。
【0005】
しかし、このような従来技術では、センサを追加することに伴い、製造コストの上昇、重量増加に起因する性能の劣化など、別の問題が生じることになる。さらに、力覚センサなどを用いて力を制御する方法では、ロボットのポーズ(姿勢)や力の加え方によっては振動的な動きになるおそれがある。そのため、上記方法では、パラメータ設定を保守的にするなどして振動を抑制する必要があり、その結果、操作感が悪化してしまい、本来の目的である教示作業を簡単化するという効果が得られない。
【0006】
一方、特許文献2には、ロボットの各関節を、ユーザの操作に対して受動的に振る舞う関節、つまり人為的に操作可能な関節と、各関節の角度の変化から逆算して位置または姿勢を維持するための角度制御を行う関節と、の2つのグループに分ける手法が開示されている。特許文献2の手法では、現在の先端の位置・姿勢に対して維持しようとする姿勢成分を置換(上書き)するようになっているため、操作可能な関節がユーザにより大きく動かされるなどして操作可能な関節を大きく動かさなければならない指令値が出力された場合には、角度制御可能な関節しか制御することができないことから、本来の目的である先端の姿勢を維持することができなくなるおそれがある。このように、特許文献2の手法では、ユーザの意図した通りに位置および姿勢を変化させることが難しかった。
【先行技術文献】
【特許文献】
【0007】
【文献】特開平5-285870号公報
【文献】特開昭60-233707号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記したように、特許文献1、2に記載された技術を含めた従来の技術は、ダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作が簡単化されているとは言い難いものであった。
【0009】
本発明は上記事情に鑑みてなされたものであり、その目的は、ダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作を簡単化することができるロボットの制御装置およびロボットの制御方法を提供することにある。
【課題を解決するための手段】
【0010】
請求項1に記載のロボットの制御装置は、垂直多関節型のロボットを制御するものであり、ユーザがロボットを直接動かしてロボットのアーム先端の位置姿勢を教示するダイレクトティーチングに対応している。上記したロボットの制御装置は、ロボットの各軸の角度制御を行う角度制御部および軸設定部を備える。軸設定部は、アーム先端の姿勢を目標姿勢に維持しつつアーム先端の位置を変化させるようにダイレクトティーチングが行われる際、各軸のうち、アーム先端の位置を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を角度制御部により制御される状態とした制御軸に設定する。角度制御部は、ダイレクトティーチングが行われる際、操作軸の現在角度および目標姿勢を入力として逆運動学計算により制御軸の指令角度を算出する。
【0011】
このような構成によれば、ユーザの操作(ロボットに触れて動かすこと)に応じて操作軸が自由に動作するため、ユーザの意図通りにアーム先端の位置を変化させることができる。そして、この際、ユーザの操作に応じて動作する操作軸の現在角度およびアーム先端の目標姿勢に基づいて制御軸の指令角度が算出されるようになっている。つまり、この場合、維持したい姿勢以外の目標値を未知数としたまま厳密な制御軸の目標値を算出するようになっているため、アーム先端の姿勢を目標姿勢に維持させることができる。
【0012】
このようなことから、上記構成によれば、ユーザは、特に難しい操作を必要とすることなく、アーム先端の姿勢を目標姿勢に保ちつつアーム先端の位置を変化させる、つまりアーム先端の姿勢を拘束したダイレクトティーチングを行うことができる。したがって、上記構成によれば、ロボットのダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作を簡単化することができるという優れた効果が得られる。
【0013】
また、上記構成によれば、自由に操作可能な操作軸の現在角度に合わせて角度制御が有効な制御軸だけでアーム先端の姿勢を目標姿勢に一致させるように角度制御が行われることになるため、振動など不安定な動作が生じ難いという効果も得られる。さらに、上記構成によれば、力覚センサやトルクセンサなどのセンサを用いることなく、ロボットの制御装置に元々設けられる角度制御のための制御系を用いることによりアーム先端の姿勢を拘束したダイレクトティーチングを実現するようになっているため、製造コストの低減にも寄与することができる。
【0014】
請求項2に記載のロボットの制御装置は、垂直多関節型のロボットを制御するものであり、ユーザがロボットを直接動かしてロボットのアーム先端の位置姿勢を教示するダイレクトティーチングに対応している。上記したロボットの制御装置は、ロボットの各軸の角度制御を行う角度制御部および軸設定部を備える。軸設定部は、アーム先端の位置を目標位置に維持しつつアーム先端の姿勢を変化させるようにダイレクトティーチングが行われる際、各軸のうち、アーム先端の姿勢を決定するうえで支配的な要因となり得る軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、アーム先端の位置を決定するうえで支配的な要因となり得る軸を角度制御部により制御される状態とした制御軸に設定する。角度制御部は、ダイレクトティーチングが行われる際、操作軸の現在角度および目標位置を入力として逆運動学計算により制御軸の指令角度を算出する。
【0015】
このような構成によれば、ユーザの操作(ロボットに触れて動かすこと)に応じて操作軸が自由に動作するため、ユーザの意図通りにアーム先端の姿勢を変化させることができる。そして、この際、ユーザの操作に応じて動作する操作軸の現在角度およびアーム先端の目標位置に基づいて制御軸の指令角度が算出されるようになっている。つまりこの場合、維持したい位置以外の目標値を未知数としたまま厳密な制御軸の目標値を算出するようになっているため、アーム先端の位置を目標位置に維持させることができる。
【0016】
このようなことから、上記構成によれば、ユーザは、特に難しい操作を必要とすることなく、アーム先端の位置を目標位置に保ちつつアーム先端の姿勢を変化させる、つまりアーム先端の位置を拘束したダイレクトティーチングを行うことができる。したがって、上記構成によれば、ロボットのダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作を簡単化することができるという優れた効果が得られる。
【0017】
また、上記構成によれば、自由に操作可能な操作軸の現在角度に合わせて角度制御が有効な制御軸だけでアーム先端の位置を目標位置に一致させるように角度制御が行われることになるため、振動など不安定な動作が生じ難いという効果も得られる。さらに、上記構成によれば、力覚センサやトルクセンサなどのセンサを用いることなく、ロボットの制御装置に元々設けられる角度制御のための制御系を用いることによりアーム先端の位置を拘束したダイレクトティーチングを実現するようになっているため、製造コストの低減にも寄与することができる。
【0018】
請求項1または2に記載のロボットの制御装置においては、ダイレクトティーチングの実行中、ロボットが特異点近傍を通過する場合、操作軸が急激に操作された場合、制御軸が可動範囲外に接近する場合などには、制御軸の指令角度の変化量が過大になることがあり、そうすると、制御軸の動作が急峻な動作となって安全性が低下するおそれがある。そこで、このような点を改善するため、請求項3に記載の角度制御部は、次のような処理を実行するようになっている。
【0019】
すなわち、角度制御部は、制御軸の指令角度が算出されると、その指令角度に基づいて算出される制御軸の指令角速度および指令角加速度がそれぞれ予め定められた最大角速度および最大角加速度を超えないように指令角度を補正する加速補正処理を実行する。これにより、制御軸の角速度および角加速度がそれぞれ最大角速度および最大角加速度以下となる安全な指令角度が生成される。
【0020】
このようにすれば、ダイレクトティーチングの実行中にロボットが特異点近傍を通過したり、操作軸が急激に操作されたりすることによって制御軸の指令角度の変化量が過大になった場合でも、制御軸の角速度および角加速度をそれぞれ最大角速度および最大角加速度以下に抑えつつ、つまり安全な加速をしつつ、制御軸の角度を当初算出された指令角度に精度良く到達させることができる。
【0021】
なお、このような加速補正処理が行われる場合、制御軸の動作は、ユーザの操作による操作軸の動作に対して遅れた動作となる。しかしながら、このような遅れは、ロボットのダイレクトティーチングにおいて問題とはならない。なぜなら、一般に、ロボットのダイレクトティーチングでは、ユーザがロボットに触れて動かし、その後、ロボットを停止させた状態で、アーム先端の位置や姿勢が所望する状態となっているかを確認する。このような動作が繰り返されることにより、所望する教示が行われる。つまり、ロボットのダイレクトティーチングにおいて、ユーザがロボットを動かし続けることはなく、必ず、ロボットを停止させる期間が存在する。
【0022】
上述した制御では、操作軸の動作に対して制御軸の動作が遅れるが、その遅れ分は、ロボットが停止されている期間に取り戻すことができる。したがって、ロボットのダイレクトティーチングでは、上述した制御による制御軸の動作の遅れは、問題とはならない。このようなことから、上記構成では、制御軸の動作が遅れるような制御を敢えて採用しており、それにより、ロボットの安全性の向上を図るようになっている。
【0023】
請求項3に記載のロボットの制御装置によれば、制御軸の動作が急峻な動作となることは回避できるものの、ロボットの特異点近傍において各軸の移動量が大きくなる現象、つまり遠く離れた関節角度に移動しようとする現象は避けることができない。ダイレクトティーチング中、ユーザは、ロボットに近付いた位置から操作軸の操作を行うことになるため、特異点近傍において各軸の移動量が大きくなる現象が発生すると、ロボットのアームなどがユーザに接触する可能性があり、その結果、安全性が低下するおそれがある。
【0024】
そこで、このような点を改善するため、請求項4に記載の角度制御部は、次のような処理を実行するようになっている。すなわち、角度制御部は、ロボットが特異点近傍であるか否かを検出する特異点検出処理を実行する。なお、特異点近傍であることは、例えば、ヤコビアンが0になる各軸角度、5軸0度付近などにより検出することが可能である。そして、角度制御部は、特異点検出処理により特異点近傍であることが検出されると、その時点以降の指令角度を、前回の指令角度に置換する指令角度置換処理を実行する。
【0025】
このように、上記構成では、ロボットが特異点近傍に突入すると指令角度を前回の指令角度で固定(ロック)するという処理が加えられている。このようにすれば、ロボットの特異点近傍において各軸の移動量が大きくなる現象の発生が抑制され、その結果、安全性を向上させることができる。この場合、制御軸の角度制御による位置・姿勢の維持が一時的に中断されることになるが、操作軸の操作に応じて特異点近傍を脱出することができれば、その後は再び制御軸の角度制御による位置・姿勢の維持が再開される。
【0026】
また、上述したようにロボットが特異点近傍に突入すると指令角度を前回の指令角度でロックする処理を実行して制御軸の角度制御による位置・姿勢の維持を一時的に中断させることにより、請求項3に記載の加速補正処理による制御軸の遅れ分を取り戻すことが可能となる。つまり、上記構成によれば、特異点近傍におけるロボットの安全性を向上させつつ、加速補正処理が行われた場合における制御軸の動作の遅れを取り戻すことができる。
【0027】
請求項5~8に記載のロボットの制御方法は、それぞれ請求項1~4に記載のロボットの制御装置と共通する技術思想に基づくものである。したがって、請求項5~8に記載のロボットの制御方法によれば、それぞれ請求項1~4に記載のロボットの制御装置と同様の効果が得られる。
【図面の簡単な説明】
【0028】
【
図1】第1実施形態に係るロボットシステムの構成を模式的に示す図
【
図2】第1実施形態に係るロボットの座標系を示す図
【
図3】第1実施形態に係るロボットの構成をxz平面およびyz平面で示す図
【
図4】第1実施形態に係るコントローラが実行するダイレクトティーチングに関する処理の全体の流れを示すフローチャート
【
図5】第1実施形態に係る第1モード時における操作軸および制御軸の設定状態を表す図
【
図6】第1実施形態に係る第2モード時における操作軸および制御軸の設定状態を表す図
【
図7】第1実施形態に係る第1指令算出処理の内容を示すフローチャート
【
図8】第1実施形態に係る第2指令算出処理の内容を示すフローチャート
【
図9】第1実施形態に係るロボットのアーム形態をxy座標およびαr座標で示す図
【
図10】第1実施形態に係るロボットのアーム形態をαz座標で示す図
【
図11】比較例に係る操作軸が大きく動かされた場合のロボットの挙動を模式的に示す図その1
【
図12】比較例に係る操作軸が大きく動かされた場合のロボットの挙動を模式的に示す図その2
【
図13】第2実施形態に係る第1指令算出処理の内容を示すフローチャート
【
図14】第2実施形態に係る第2指令算出処理の内容を示すフローチャート
【
図15】第2実施形態に係る指令速度制限処理の内容を示すフローチャート
【
図16】第2実施形態に係るダイレクトティーチング中に各指令値が修正される様子を示す図その1
【
図17】第2実施形態に係るダイレクトティーチング中に各指令値が修正される様子を示す図その2
【
図18】第2実施形態に係る各処理が実行されることに伴う指令角度の変化の様子を示す図
【
図19】第3実施形態に係る第1指令算出処理の内容を示すフローチャート
【
図20】第3実施形態に係る第2指令算出処理の内容を示すフローチャート
【
図21】第3実施形態に係るダイレクトティーチング中に各指令値が補間される様子を示す図
【発明を実施するための形態】
【0029】
以下、本発明をロボットの制御装置およびロボットの制御方法に適用した複数の実施形態について図面を参照して説明する。なお、各実施形態において実質的に同一の構成には同一の符号を付して説明を省略する。
(第1実施形態)
以下、第1実施形態について
図1~
図13を参照して説明する。
【0030】
<ロボットシステムの構成>
図1に示すように、ロボットシステム1は、垂直多関節型のロボット2、ロボット2を制御するコントローラ3をベース4の内部に備えている。このロボットシステム1は、一般的な産業用に用いられている。ロボット2は、いわゆる6軸の垂直多関節型ロボットである。ベース4上に、z方向の軸心を持つ第1軸;J1を介してショルダ5が水平方向に回転可能に連結されている。ショルダ5には、y方向の軸心を持つ第2軸;J2を備え、y方向に伸びる第2オフセットアーム6を介して、上方に延びる第1アーム7の下端部が垂直方向に回転可能に連結されている。第1アーム7の先端部には、Y方向の軸心を持つ第3軸;J3を備え、-y方向に伸びる第3オフセットアーム8を介して、第2アーム9が垂直方向に回転可能に連結されている。第2アーム9は、基部9aおよび先端部9bからなる。
【0031】
第2アーム9は、x方向の軸心を持つ第4軸;J4を備え、基部9aに対して先端部9bが捻り回転可能に連結されている。第2アーム9の先端部には、y方向の軸心を持つ第5軸;J5を備え、-y方向に伸びる第5オフセットアーム10を介して、手首11が垂直方向に回転可能に連結されている。手首11には、x方向の軸心を持つ第6軸;J6を介して、
図2に示すフランジおよびハンド12が捻り回転可能に連結されている。ロボット2に設けられている各軸;J1~J6には、それぞれに対応して駆動源となる図示しないモータが設けられている。なお、以下では、第1軸、第2軸、第3軸、第4軸、第5軸、第6軸のことをそれぞれ1軸、2軸、3軸、4軸、5軸、6軸と省略することがある。
【0032】
コントローラ3は、ロボット2の制御装置であり、図示しないCPU、ROMおよびRAMなどで構成されたコンピュータからなる制御手段においてコンピュータプログラムを実行することで、ロボット2を制御している。具体的には、コントローラ3は、インバータ回路などから構成された駆動部を備えており、各モータに対応して設けられているエンコーダで検知したモータの回転位置に基づいて例えばフィードバック制御によりそれぞれのモータを駆動する。
【0033】
コントローラ3は、CPU、ROM、RAM、駆動回路および位置検出回路などを備えている。ROMは、ロボット2のシステムプログラムや動作プログラムなどを記憶している。RAMは、これらのプログラムを実行する際にパラメータの値などを記憶する。位置検出回路には、ロボット2の各関節に設けられた図示しない各エンコーダの検出信号がそれぞれ入力される。位置検出回路は、各エンコーダの検出信号に基づいて、各関節に設けられたモータの回転角度位置を検出する。
【0034】
コントローラ3は、予め設定された動作プログラムを実行することにより、位置検出回路から入力される位置情報に基づいて、アーム先端部の制御点の位置および姿勢を制御する。本実施形態において、コントローラ3は、CP(Continuous Path)制御を行う。CP制御では、アーム先端部の制御点を目標まで動作させる際に制御点の目標となる位置および姿勢、つまり動作軌道が時間関数として設定される。目標となる位置および姿勢には、教示された位置および姿勢に加えて、教示された位置および姿勢に基づいて補間された位置および姿勢も含まれる。コントローラ3は、CP制御により、制御点の位置および姿勢が動作軌道に沿うように、アームにおける各関節の角度を制御する。コントローラ3は、位置および姿勢の制御において、現在指示されている目標となる位置および姿勢を実現するための第1軸~第6軸の角度を算出する逆変換処理を行う。
【0035】
図2に示すように、ロボット2の各関節には、3次元の直交座標系である第1~第6座標系Σ
1~Σ
6が規定されている。各座標系Σ
1~Σ
6の原点は、第1~第6軸線J1~J6上の所定位置に定められている。各座標系Σ
1~Σ
6のz軸であるz1~z6軸は、第1~第6軸線J1~J6と一致している。
【0036】
ベース4には、ロボット座標系である第0座標系Σ0が規定されている。第0座標系Σ0は、第1軸~第6軸が回転しても変化しない座標系である。本実施形態において、座標系Σ0の原点は、第1軸線J1上に定められている。また、座標系Σ0のz軸であるz0軸は、第1軸線J1に一致している。
【0037】
図2に示すd1~d6、a2およびa3は、以下のように定義される。
d1:第0座標系Σ
0の原点から第1座標系Σ
1の原点までのリンク長
d2:第1座標系Σ
1の原点から第1アーム7の基部までのリンク長
a2:第1アーム7の基部から同先端部,第2座標系Σ
2の原点までのリンク長
d3:第2座標系Σ
2の原点から第3オフセットアーム8の先端部までのリンク長
a3:第3軸J3,第4軸J4の軸心間距離
d4:第3座標系Σ
3の原点から第4座標系Σ
4の原点までのリンク長
d5:第4座標系Σ
4の原点から第5座標系Σ
5の原点までのリンク長
d6:第5座標系Σ
5の原点から第6座標系Σ
6の原点までのリンク長
a3については
図3を参照。そして、上記d5が第5オフセットアーム10のリンク長に相当する。
【0038】
<ダイレクトティーチングに関する機能>
本実施形態のコントローラ3は、ユーザがロボット2を直接動かしてロボット2のアーム先端の位置姿勢を教示するダイレクトティーチングに対応している。コントローラ3は、ダイレクトティーチングに関する2つのモードを有している。1つ目のモードは、アーム先端の姿勢を拘束したダイレクトティーチングに対応する第1モードである。2つ目のモードは、アーム先端の位置を拘束したダイレクトティーチングに対応する第2モードである。
【0039】
これらモードの設定は、ユーザによる所定の操作に応じて行われる。ユーザは、第1モードに設定することにより、アーム先端の姿勢を目標姿勢に維持しつつアーム先端の位置を変化させるようにダイレクトティーチングを行うことが可能となる。また、ユーザは、第2モードに設定することにより、アーム先端の位置を目標位置に維持しつつアーム先端の姿勢を変化させるようにダイレクトティーチングを行うことが可能となる。
【0040】
コントローラ3は、ロボット2の各軸の角度制御を行う角度制御部としての機能に加え、軸設定部としての機能を有する。以下、このようなコントローラ3の機能について説明する。まず、ユーザによりダイレクトティーチングに関するモード設定と、維持すべき目標位置または目標姿勢を記録しておく。そして、
図4のフローチャートに示すように、ステップS110では、コントローラ3は、ダイレクトティーチングに関するモード設定を確認する。ここで、ユーザにより第1モードに設定されている場合、ステップS110での判断の結果が「第1モード」となり、ステップS120に進む。
【0041】
ステップS120に進むと、コントローラ3は、
図5に示すように、ロボット2の各軸(J1~J6)のうち、アーム先端から遠い側の、言い換えるとベース4に近い側の3つの軸である1,2,3軸(J1,J2,J3)を操作軸に設定する。ロボット2において、1,2,3軸は、アーム先端の位置を決定するうえで支配的な要因となり得る軸、つまりアーム先端の位置を支配(決定)する軸であり、以下の説明では、これらを根元側軸と総称することがある。
【0042】
このように、コントローラ3は、第1モードに設定されると、根元側軸を操作軸に設定する。操作軸に設定された軸は、角度制御部として機能するコントローラ3により制御することができない状態にされるとともに、外力に従って自由に動作する状態とされる。すなわち、コントローラ3は、第1モードに設定されると、根元側軸の位置制御(角度制御)をオフにすることになる。
【0043】
ステップS120の実行後は、ステップS130に進む。ステップS130に進むと、コントローラ3は、
図5に示すように、アーム先端に近い側の3つの軸である4,5,6軸(J4,J5,J6)を制御軸に設定する。ロボット2において、4,5,6軸は、アーム先端の姿勢を決定するうえで支配的な要因となり得る軸、つまりアーム先端の姿勢を支配(決定)する軸であり、以下の説明では、これらを先端側軸と総称することがある。
【0044】
このように、コントローラ3は、第1モードに設定されると、先端側軸を制御軸に設定する。制御軸に設定された軸は、角度制御部として機能するコントローラ3により制御することができる状態となる。すなわち、コントローラ3は、第1モードに設定されると、先端側軸の位置制御をオンにすることになる。ステップS130の実行後は、ステップS140に進む。ステップS140に進むと、コントローラ3は、第1指令算出処理を実行する。
【0045】
第1指令算出処理は、操作軸(J1,J2,J3)の現在角度および目標姿勢を入力として逆運動学計算により制御軸(J4,J5,J6)の指令角度を算出するものであり、例えば
図7に示すような内容の処理となる。まず、ステップS210では、コントローラ3は、逆変換入力パラメータを取得する。この場合、操作軸である1,2,3軸の現在角度「θ
1,θ
2,θ
3」と、アーム先端の目標姿勢、つまり維持する姿勢「R
x,R
y,R
z」とが、逆変換入力パラメータとなる。
【0046】
ステップS210の実行後は、ステップS220に進む。ステップS220に進むと、コントローラ3は、逆変換計算(逆運動学計算)により、制御軸である4,5,6軸の指令角度「θ4(k+1),θ5(k+1),θ6(k+1)」を算出する。ステップS220の実行後、第1指令算出処理が終了となる。第1指令算出処理が終了すると、コントローラ3は、算出された指令角度を用いて制御軸である4,5,6軸の位置制御(角度制御)を実行する。
【0047】
一方、ユーザにより第2モードに設定されている場合、ステップS110での判断の結果が「第2モード」となり、ステップS150に進む。ステップS150に進むと、コントローラ3は、
図6に示すように、先端側軸(J4,J5,J6)を操作軸に設定する、言い換えると、先端側軸の位置制御をオフにする。すなわち、コントローラ3は、第2モードに設定されると、先端側軸を操作軸に設定する。
【0048】
ステップS150の実行後は、ステップS160に進む。ステップS160に進むと、コントローラ3は、
図6に示すように、根元側軸(J1,J2,J3)を制御軸に設定する、言い換えると、根元側軸の位置制御をオンにする。すなわち、コントローラ3は、第2モードに設定されると、根元側軸を制御軸に設定する。ステップS160の実行後は、ステップS170に進む。ステップS170に進むと、コントローラ3は、第2指令算出処理を実行する。
【0049】
第2指令算出処理は、操作軸(J4,J5,J6)の現在角度および目標位置を入力として逆運動学計算により制御軸(J1,J2,J3)の指令角度を算出するものであり、例えば
図8に示すような内容の処理となる。まず、ステップS310では、コントローラ3は、逆変換入力パラメータを取得する。この場合、操作軸である4,5,6軸の現在角度「θ
4,θ
5,θ
6」と、アーム先端の目標位置、つまり維持する位置「X,Y,Z」とが、逆変換入力パラメータとなる。
【0050】
ステップS310の実行後は、ステップS320に進む。ステップS320に進むと、コントローラ3は、逆変換計算(逆運動学計算)により、制御軸である1,2,3軸の指令角度「θ1(k+1),θ2(k+1),θ3(k+1)」を算出する。ステップS320の実行後、第2指令算出処理が終了となる。第2指令算出処理が終了すると、コントローラ3は、算出された指令角度を用いて制御軸である1,2,3軸の位置制御(角度制御)を実行する。
【0051】
<順変換処理>
続いて、本実施形態における逆変換処理(逆変換計算)を説明するための前提として、順変換処理(順変換計算)について説明する。
まず、z軸回転、z軸移動、x軸移動、x軸回転の順の座標変換で、DHパラメータを表1のように決定した。θ
iが、
図2の状態からの各関節の回転角度になる。
【0052】
【0053】
ベース座標であるΣ0からメカニカルインターフェース座標Σ6までの同次変換行列は次のようになる。n,o,aは、それぞれノーマルベクトル,オリエントベクトル,アプローチベクトルを示す。なお、表記を簡略化するため、sinθi,cosθiをそれぞれsi,ciと表記している。また、例えばS23はsin(θ2+θ3)を示す。
【0054】
【0055】
【0056】
(8)~(10)式を展開すると、(13)~(15)式となる。
【0057】
【0058】
また、第5軸,第6軸についてのノーマル,オリエント,アプローチの各ベクトルおよび位置座標については以下のようになる。
【0059】
【0060】
同次変換行列であるから、ツール座標上での位置ベクトルに左からかけて積をとることで、ベース座標Σ0での位置ベクトルに変換できる。つまり、関節角とDHパラメータとからベース座標での先端位置を求めることができる。姿勢角は、第6軸のノーマル,オリエント,アプローチの各ベクトルn6,o6,a6で表されている。
【0061】
<第1指令算出処理における逆変換処理>
次に、第1指令算出処理における逆変換計算(逆変換処理)の具体的な内容の一例について説明する。すなわち、ダイレクトティーチング中に姿勢のみを維持する機能を実現するための、1,2,3軸は外力に対して受動的に動く状態のときに4,5,6軸を角度制御する場合の角度指令値の計算方法の一例について説明する。
1,2,3軸角度および姿勢が同次変換行列(位置成分無視)で与えられているとする。つまり、(20)式と位置成分を無視した(21)式とは既知の数値となる。
【0062】
【0063】
このとき、4,5,6軸を求めるには、Σ3座標からΣ6座標を求められればよいため、(23)式と(21)式とが等号になるように解けばよい。
【0064】
【0065】
等号になるのは、(24)式のときで、右辺は単純な行列演算になっている。(24)式の右辺の計算結果を(25)式とすれば、(26)式を4,5,6軸角度について解けばよいことが分かる。
【0066】
【0067】
まず、5軸角度を求めると2つの解が得られる。どちらが適切なのかは、4,5,6軸の可動範囲のチェックと全て解いた後で現在値(現在角度)との差分がトータルで小さくなる方を選ぶといった方法が考えられる。
【0068】
【0069】
また、5軸角度は、次のように求めてもよい。
【0070】
【0071】
下記の場合には、4,6軸は不定になるため、特異点となる。
【0072】
【0073】
アプローチベクトルのXY成分から4軸、ノーマルベクトルとオリエントベクトルから6軸を求めると、次のようになる。
【0074】
【0075】
以上説明した逆変換計算は、手首オフセットd5が0ではない(d5≠0)本実施形態のロボット2を対象としたものであるが、手首部分のオフセットが無い(d5=0)一般的なPUMA型6軸ロボットにも適用することができる。なお、手首オフセットd5が0の場合には、(26)式が(42)式に変わるが、4,5,6軸の角度決定に無関係な部分しか変化しないため逆変換は変わらない。
【0076】
【0077】
<第2指令算出処理における逆変換処理>
次に、第2指令算出処理における逆変換計算(逆変換処理)の具体的な内容の一例について説明する。すなわち、ダイレクトティーチング中にツール先端の位置のみを維持する機能を実現するための、4,5,6軸は外力に対して受動的に動く状態のときに1,2,3を角度制御する場合の角度指令値の計算方法の一例について説明する。
まず、フランジ中心からツール先端位置への同次変換行列を求める。(43)式は、予めツール定義として与えられているため、既知の数値となる。
【0078】
【0079】
さらに、ベース座標系からツール先端までの同次変換行列は、(44)式のようになる。
【0080】
【0081】
この後、3T6の要素が多数出てきて式が煩雑になるため、単独で求めて定数変数に置き換えておく。
【0082】
【0083】
この場合、(44)式の位置成分と4,5,6軸角度が与えられているため、下記の(46)式~(50)式から1,2,3軸角度が求められればよい。
【0084】
【0085】
まず、1軸角度を求める。(46)式を展開すると、それぞれ(51)式、(52)式、(53)式のようになる。
【0086】
【0087】
ここで、(54)式のように置くと、x
t,y
tは、1軸角度の回転行列を用いて、(55)式のように簡単な形で表される。なお、この式に用いられているαr平面(αr座標)は、
図9および
図10に示すように、xy軸を1軸角度だけ回転させた軸をとったものである。αr平面におけるr方向の成分は、1軸自体と4軸のひねり成分しか寄与せず、2軸と3軸は無関係である。さらに、この場合は4軸以降の角度は固定されているため、これまでの条件で1軸角度を求めることができる。
【0088】
【0089】
ここで、(54)式によってrtが求められる。さらに式を変形して、(56)式のようにαtを求めることができる。
【0090】
【0091】
続いて、(55)式を工夫して変形していくと、(57)式のように、1軸角度の三角関数であるs1,c1が求められる。
【0092】
【0093】
次に、2軸角度を求める。上述した通り、αr平面におけるr方向の成分は1軸と4軸しか寄与しないため、以降の計算ではr方向の成分を無視して、α方向の成分のみを考えることとする。
【0094】
【0095】
図10に示すようにロボット2を側面からみたαz平面で考えると、下記式が成立する。
【0096】
【0097】
したがって、下記式からz12を導出することができる。
【0098】
【0099】
式が煩雑になるため、下記のように置いておくこととする。
【0100】
【0101】
z12を消してα12について解く。(62)式に(68)式を代入し、2次方程式の形にして、解の公式でα12を求める。
【0102】
【0103】
k2<0の場合はリーチが届かないため解なしとなる。z12も、式(64)以降を、α12を消してz12について解く方針で進めれば同様に求められるし、あるいは、(68)式に(74)式を代入しても求められる。
【0104】
【0105】
最後に3軸角度を求める。(61)式、(65)式、(66)式を使って式を変形していくと、c23,s23が求められる。(84)式を用いれば、1,2,3軸角度を求めることができる。ただし、nは各軸番号および2軸と3軸を足した角度を示す。
【0106】
【0107】
以上説明した逆変換計算は、手首オフセットd5が0ではない(d5≠0)本実施形態のロボット2を対象としたものであるが、手首部分のオフセットが無い(d5=0)一般的なPUMA型6軸ロボットにも適用することができる。なお、手首オフセットd5が0の場合には、(45)式において「d5=0」を代入して以降の計算を行うことで同様に実施することができる。
【0108】
以上説明したように、本実施形態によれば次のような効果が得られる。
コントローラ3は、アーム先端の姿勢を目標姿勢に維持しつつアーム先端の位置を変化させるようにダイレクトティーチングが行われる際、1,2,3軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、4,5,6軸をコントローラ3により制御される状態とした制御軸に設定する。そして、コントローラ3は、ダイレクトティーチングが行われる際、操作軸の現在角度および目標姿勢を入力として逆運動学計算により制御軸の指令角度を算出する。
【0109】
このような構成によれば、ユーザの操作(ロボットに触れて動かすこと)に応じて操作軸が自由に動作するため、ユーザの意図通りにアーム先端の位置を変化させることができる。そして、この際、ユーザの操作に応じて動作する操作軸の現在角度およびアーム先端の目標姿勢に基づいて制御軸の指令角度が算出されるようになっているため、アーム先端の姿勢を目標姿勢に維持させることができる。
【0110】
このようなことから、上記構成によれば、ユーザは、特に難しい操作を必要とすることなく、アーム先端の姿勢を目標姿勢に保ちつつアーム先端の位置を変化させる、つまりアーム先端の姿勢を拘束したダイレクトティーチングを行うことができる。したがって、本実施形態によれば、ロボット2のダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作を簡単化することができるという優れた効果が得られる。
【0111】
コントローラ3は、アーム先端の位置を目標位置に維持しつつアーム先端の姿勢を変化させるようにダイレクトティーチングが行われる際、4,5,6軸を外力に従って自由に動作する状態とした操作軸に設定するとともに、1,2,3軸をコントローラ3により制御される状態とした制御軸に設定する。そして、コントローラ3は、ダイレクトティーチングが行われる際、操作軸の現在角度および目標位置を入力として逆運動学計算により制御軸の指令角度を算出する。
【0112】
このような構成によれば、ユーザの操作(ロボットに触れて動かすこと)に応じて操作軸が自由に動作するため、ユーザの意図通りにアーム先端の姿勢を変化させることができる。そして、この際、ユーザの操作に応じて動作する操作軸の現在角度およびアーム先端の目標位置に基づいて制御軸の指令角度が算出されるようになっているため、アーム先端の位置を目標位置に維持させることができる。
【0113】
このようなことから、上記構成によれば、ユーザは、特に難しい操作を必要とすることなく、アーム先端の位置を目標位置に保ちつつアーム先端の姿勢を変化させる、つまりアーム先端の位置を拘束したダイレクトティーチングを行うことができる。したがって、本実施形態によれば、ロボット2のダイレクトティーチングにおけるアーム先端の位置姿勢の調節操作を簡単化することができるという優れた効果が得られる。
【0114】
また、本実施形態によれば、自由に操作可能な操作軸の現在角度に合わせて角度制御が有効な制御軸だけでアーム先端の姿勢または位置を目標姿勢または目標位置に一致させるように角度制御が行われることになるため、振動など不安定な動作が生じ難いという効果も得られる。さらに、上記構成によれば、力覚センサやトルクセンサなどのセンサを用いることなく、ロボット2のコントローラ3に元々設けられる角度制御のための制御系を用いることによりアーム先端の姿勢を拘束したダイレクトティーチングを実現するようになっているため、製造コストの低減にも寄与することができる。
【0115】
このような本実施形態により得られる効果は、従来技術と比較することで一層明確になる。そこで、本明細書において特許文献2として挙げた特開昭60-233707号公報に開示された技術を比較例とし、その比較例に対する本実施形態の優位性を
図11および
図12を参照しながら説明する。なお、
図11および
図12では、アーム先端の姿勢を拘束したダイレクトティーチングを想定している。したがって、この場合、1,2,3軸(J1,J2,J3)が外力に従って自由に動作する状態の軸(操作軸に相当)に設定されるとともに、4,5,6軸(J4,J5,J6)が位置制御可能な軸(制御軸に相当)に設定される。
【0116】
まず、
図11(a)に示すような初期姿勢において、2,3軸(J2,J3)を畳むようにユーザによる操作が行われると、ロボットは、
図11(b)に示すような状態となり、アーム先端の姿勢が目標姿勢である初期姿勢からずれる。ここで、比較例では、位置はそのままで姿勢だけ上書きして逆変換が行われるため、ロボットは、
図11(c)に実線で示す状態となる。
【0117】
比較例では、上述した逆変換の結果に基づいて、
図11(c)に破線で示すように、2軸(J2)と5軸(J5)を動作させてアーム先端の姿勢を初期姿勢に維持したいが、2軸(J2)は操作軸のため動作させることができず、5軸(J5)だけが動作してしまい、その結果、
図11(c)に実線で示すように、アーム先端の姿勢が初期姿勢とは異なる姿勢になってしまう。
【0118】
その後も、比較例では、位置はそのままで姿勢だけ上書きして逆変換が行われるため、ロボットは、
図11(d)に実線で示す状態となる。比較例では、上述した逆変換の結果に基づいて、
図11(d)に破線で示すように、2軸(J2)と5軸(J5)を動作させてアーム先端の姿勢を初期姿勢に維持したいが、2軸(J2)は操作軸のため動作させることができず、5軸(J5)だけが動作してしまい、その結果、
図11(d)に実線で示すように、アーム先端の姿勢が初期姿勢とは異なる姿勢になってしまう。
【0119】
比較例では、このような動作が繰り返され、アーム先端の姿勢を初期姿勢に維持することができない。これに対し、本実施形態では、操作軸の現在角度に合わせて角度制御が有効な制御軸である4,5,6軸だけでアーム先端の姿勢を目標姿勢である初期姿勢に一致させるように角度制御が行われることになるため、
図11(d)に一点鎖線で示すように、5軸(J5)だけを動作させてアーム先端の姿勢を初期姿勢に維持することができる。
【0120】
また、
図12(a)に示すような初期姿勢において、2,3軸を伸ばすようにユーザによる操作が行われると、ロボットは、
図12(b)に示すような状態となり、アーム先端の姿勢が目標姿勢である初期姿勢からずれる。この場合も、比較例では、位置はそのままで姿勢だけ上書きして逆変換を実行しようとするが、
図12(c)に破線で示すようにアーム先端が届かない位置となるため逆変換が不可能となる。
【0121】
したがって、比較例では、
図12(b)および
図12(c)に示すように、アーム先端の姿勢を初期姿勢に維持することができない。これに対し、本実施形態では、操作軸の現在角度に合わせて角度制御が有効な制御軸である4,5,6軸だけでアーム先端の姿勢を目標姿勢である初期姿勢に一致させるように角度制御が行われることになるため、
図12(c)に一点鎖線で示すように、5軸(J5)だけを動作させてアーム先端の姿勢を初期姿勢に維持することができる。
【0122】
以上説明した2つのケースのように、比較例では、操作軸が大きく動かされた結果、操作軸を大きく動かさなければならない指令値が出力されることがある。しかし、このとき、制御軸しか動かすことができないため、いつまで待っても誤差が収束せずに姿勢の維持が困難となる。比較例では、既存の逆変換をそのまま利用することができるものの、一発で厳密解が得られず、徐々に解が収束していくような動作になるが、上述した2つのケースのように、いつ収束するのか不明となる。この場合、解が収束するまでにおけるロボットの挙動について、どのような挙動となるのかを一切保証することができない。
【0123】
また、比較例では、ロボットの特異点近傍では解が不安定になり暴走する可能性があり、その安全性に問題がある。さらに、比較例では、目標の位置・姿勢に対して各軸角度の解が複数存在するため、それらをどのように選択するかが不明確である。つまり、比較例では、形態の選択をどのように行うか不明確であり、無理やり切り替えようとすると特異点を跨ぐために暴走する可能性がある。
【0124】
このように、比較例では、アーム先端の位置姿勢を維持できないケースが存在するばかりか、その安全性にも問題がある。これに対し、本実施形態では、維持したい位置または姿勢以外の目標値を未知数としたまま厳密な制御軸の目標値を算出するようになっているため、安全性を良好に維持しつつ、比較例ではアーム先端の位置姿勢を維持することができないケースであっても、アーム先端の位置姿勢を確実に維持することができる。
【0125】
上記構成では、ベース4から連続した3つの軸である1,2,3軸を根元側軸とし、アーム先端から連続した3つの軸である4,5,6軸を先端側軸とするように、各軸を切り分けている。このようにすれば、ユーザは、アーム先端の位置を拘束して姿勢を教示しようとした際、手先から連続する3つの軸を自身の力で操作できるため、自身が考える操作(アーム先端の姿勢を調節するべく手先に近い軸を動かす操作)と、実際の操作状態とが一致し易い。
【0126】
また、ユーザは、アーム先端の姿勢を拘束して位置を教示しようとした際、ベース4から連続する3つの軸を自身の力で操作できるため、自身が考える操作(アーム先端の位置を調節するべくベース4に近い軸を動かす操作)と、実際の操作状態とが一致し易い。したがって、このような各軸の切り分けによれば、ダイレクトティーチング作業において、ユーザに違和感を与えることが少なくなるという効果が得られる。
【0127】
(第2実施形態)
以下、第1実施形態に対してコントローラ3による制御の内容、つまりロボット2の制御方法が変更された第2実施形態について
図13~
図18を参照して説明する。
第1実施形態において、ダイレクトティーチングの実行中、ロボット2が特異点近傍を通過する場合、操作軸が急激に操作された場合などには、制御軸の指令角度の変化量が過大になることがあり、そうすると、制御軸の動作が急峻な動作となって安全性が低下するおそれがある。
【0128】
そこで、本実施形態では、このような点を改善するため、角度制御部として機能するコントローラ3により実行される処理である第1指令算出処理および第2指令算出処理の内容に変更が加えられている。本実施形態の第1指令算出処理は、例えば
図13に示すような内容の処理となる。この場合、ステップS220の実行後、ステップS250に進む。ステップS250に進むと、コントローラ3は、指令速度制限処理を実行する。また、本実施形態の第2指令算出処理は、例えば
図14に示すような内容の処理となる。この場合、ステップS320の実行後、ステップS350に進む。ステップS350に進むと、コントローラ3は、指令速度制限処理を実行する。
【0129】
指令速度制限処理の概要は、以下の通りである。まず、前提として、予めユーザ(使用者)が安全と判断する各関節(各軸)の最大角速度ωmaxと最大角加速度amaxを定めておく。これらパラメータ(ωmax、amax)の設定方法としては、例えば、実際にユーザがロボット2の挙動を確認しながらチューニングする方法などを挙げることができる。そして、コントローラ3は、制御軸の指令角度θ(k+1)が算出されると、各関節の指令角度θ(k+1)に向かって安全に加速する指令角度θ(k+1)′に補正する加速補正処理と、最終的に制御軸の角度を元の指令角度θ(k+1)に収束させるために減速する指令角度θ(k+1)″に補正する減速補正処理と、を実行する。
【0130】
すなわち、コントローラ3は、制御軸の指令角度θ(k+1)が算出されると、その指令角度θ(k+1)に基づいて算出される制御軸の指令角速度ω(k+1)および指令角加速度a(k+1)がそれぞれ予め定められた最大角速度ωmaxおよび最大角加速度amaxを超えないように指令角度θ(k+1)を補正する加速補正処理を実行する。これにより、制御軸の角速度および角加速度がそれぞれ最大角速度ωmaxおよび最大角加速度amax以下となる安全な指令角度θ(k+1)′が生成される。
【0131】
ただし、加速補正処理により補正された後の指令角度θ(k+1)′から最大減速で減速しても当初算出された指令角度θ(k+1)を超過する場合が考えられる。そこで、コントローラ3は、制御軸の角度が算出された指令角度θ(k+1)へと収束するように加速補正処理により補正された後の指令角度θ(k+1)′をさらに補正する減速補正処理を実行する。これにより、制御軸の角度が当初算出された指令角度θ(k+1)を超過する事態を防止することができる。
【0132】
このような指令速度制限処理の具体的な処理内容は、例えば
図15に示すようなものとなる。なお、以下の説明において用いる各記号の定義は、以下の通りとなっている。ただし、nは軸番号である。
θ
n(k):前回指令角度
θ
n(k+1):指令角度
θ
n(k+1)′:指令角度(最大加速)
θ
n(k+1)″:指令角度(最大減速)
ω
n(k):前回指令角速度
ω
n(k+1):指令角速度
ω
n(k+1)′:指令角速度(最大加速)
ω
n(k+1)″:指令角速度(最大減速)
a
n(k+1):指令角加速度
a
n(k+1)′:指令角加速度(最大加速)
【0133】
まず、ステップS401では、指令角度θn(k+1)が取得される。ステップS402では、下記(85)式に基づいて指令角速度ωn(k+1)が計算される。
ωn(k+1)={θn(k+1)-θn(k)}/dt …(85)
ステップS403では、下記(86)式に基づいて指令角加速度が計算される。
an(k+1)={ωn(k+1)-ωn(k)}/dt …(86)
【0134】
ステップS404では、ステップS402で計算された指令角速度ωn(k+1)が最大角速度ωnmax未満であるという条件およびステップS403で計算された指令角加速度an(k+1)が最大角加速度anmax未満であるという条件の双方を満たすか否か、つまり下記(87)式および(88)式の双方を満たすか否かが判断される。
|ωn(k+1)|<ωnmax …(87)
|an(k+1)|<anmax …(88)
【0135】
ここで、上記(87)式および(88)式の双方を満たす場合、ステップS404で「YES」となり、指令速度制限処理が終了となる。つまり、この場合、速度制限が不要であるため、当初の指令角度θn(k+1)に基づいて制御軸の角度制御が実行される。一方、上記(87)式および(88)式の一方または双方を満たさない場合、ステップS404で「NO」となり、ステップS405に進む。
【0136】
ステップS405では、下記(89)式に基づいて指令角加速度が修正(補正)される。ただし、sgnは、その後の括弧内の数式の計算結果の符号を返す関数である。
an(k+1)′=sgn{θn(k+1)-θn(k)}・anmax …(89)
【0137】
このように、ステップS405では、指令角加速度が最大角加速度anmaxに置き換えられる(角加速度が最大値に張り付けられる)。また、この場合、加速方向は、位置偏差から計算されることになる。
【0138】
ステップS406では、下記(90)式に基づいて指令角速度が再計算される。つまり、ステップS406では、最大角加速度anmaxで加速した場合の指令角速度ωn(k+1)′が求められる。
ωn(k+1)′=an(k+1)′・dt+ωn(k) …(90)
【0139】
ステップS407では、ステップS406で再計算された指令角速度ωn(k+1)′が最大角速度ωnmax以下であるか否か、つまり下記(91)を満たすか否かが判断される。
|ωn(k+1)′|≦ωnmax …(91)
【0140】
ここで、指令角速度ωn(k+1)′が最大角速度ωnmax以下である場合、ステップS407で「YES」となり、ステップS408を実行することなく、ステップS409に進む。一方、指令角速度ωn(k+1)′が最大角速度ωnmaxを超える場合、ステップS407で「NO」となり、ステップS408に進む。ステップS408では、下記(92)式に基づいて指令角速度が修正(補正)される。
ωn(k+1)′=sgn{ωn(k+1)′}・ωnmax …(92)
このように、ステップS408では、指令角速度が最大角速度ωnmaxに置き換えられる(角速度が最大値に張り付けられる)。
【0141】
ステップS409では、下記(93)式に基づいて指令角度が再計算される。つまり、ステップS409では、最大角加速度anmaxで加速した場合の指令角度θn(k+1)′が求められる。
θn(k+1)′=ωn(k+1)′・dt+θn(k) …(93)
【0142】
指令角度は、ユーザによる操作軸の操作に応じて動的に変化しているため、指令角度が現在角度に近づいてくることがある。このとき、減速が間に合わずに指令角速度の方向と現在角度から指令角度へと向かう方向とが逆になることがある。そこで、ステップS410では、下記(94)式を満たすか否かが判断される。すなわち、ステップS410では、位置偏差の符号から指令角度へ向かう方向(下記式の右辺)を割り出し、その方向が指令角速度ωn(k+1)′の方向(下記式の左辺)と一致するかどうかが判断される。
sgn{ωn(k+1)′}=sgn{θn(k+1)-θn(k)} …(94)
【0143】
ここで、上記(94)式を満たさない場合、ステップS410で「NO」となり、ステップS411に進む。この場合、指令角度から離れようとしていると考えられる。そのため、ステップS411において、指令角度に向かって最大加速するように、指令角度がθn(k+1)′に更新されるとともに、指令角速度がωn(k+1)′に更新される。ステップS411の実行後は、指令速度制限処理が終了となる。
【0144】
一方、上記(94)式を満たす場合、ステップS410で「YES」となり、ステップS412に進む。この場合、減速が間に合うかどうか確認する必要がある。そこで、ステップS412では、下記(95)式に基づいて、指令角度から最大減速した場合の移動量Δθが計算される。
Δθ={ωn(k+1)′}2/{2an(k+1)′} …(95)
【0145】
ステップS413では、下記(96)式に基づいて、指令角度までの残りの距離(下記式の右辺)が減速停止に必要な距離(下記式の左辺)以下であるか否かが判断される。
|Δθ|≧|θn(k+1)-θn(k+1)′| …(96)
【0146】
ここで、上記(96)式の右辺が左辺よりも大きい場合、ステップS413で「NO」となり、ステップS411に進む。この場合、減速できる区間が十分にあるため、ステップS411において、指令角度に向かって最大加速するように、指令角度および指令角速度が更新される。一方、上記(96)式の右辺が左辺以下である場合、ステップS413で「YES」となり、ステップS414に進む。
【0147】
この場合、移動した先から最大減速しても指令角度をオーバーしてしまうと考えられる。つまり、この場合、このまま加速すると指令角度を超過することになるため、直ちに減速を始める必要がある。そこで、ステップS414では、下記(97)式に基づいて、最大減速速度が求められる。
ωn(k+1)″=ωn(k)-anmax・dt …(97)
【0148】
ステップS415では、ステップS414で再計算された指令角速度ωn(k+1)″が最大角速度ωnmax以下であるか否か、つまり下記(98)を満たすか否かが判断される。
|ωn(k+1)″|≦ωnmax …(98)
【0149】
ここで、指令角速度ωn(k+1)″が最大角速度ωnmax以下である場合、ステップS415で「YES」となり、ステップS416を実行することなく、ステップS417に進む。一方、指令角速度ωn(k+1)″が最大角速度ωnmaxを超える場合、ステップS415で「NO」となり、ステップS416に進む。ステップS416では、下記(99)式に基づいて指令角速度が修正(補正)される。
ωn(k+1)″=sgn{ωn(k+1)″}・ωnmax …(99)
このように、ステップS416では、指令角速度が最大角速度ωnmaxに置き換えられる(角速度が最大値に張り付けられる)。
【0150】
ステップS417では、下記(100)式に基づいて指令角度が再計算される。
θn(k+1)″=ωn(k+1)″・dt+θn(k) …(100)
ステップS418では、最大減速するように、指令角度がθn(k+1)″に更新されるとともに、指令角速度がωn(k+1)″に更新される。ステップS418の実行後は、指令速度制限処理が終了となる。
【0151】
続いて、ダイレクトティーチング中に指令速度制限処理が実行されることにより各指令値(指令角度θ
n(t)、指令角速度ω
n(t)、指令角加速度a
n(t))が修正(補正)される様子の一例について
図16~
図18を参照しながら説明する。この場合、
図16(a)に示すように、今回(「k+1」の時点)与えられた指令角度θ
n(k+1)は、前回(「k」の時点)の指令角度θ
n(k)から大きく変化した値になっているものとする。
【0152】
このような指令角度θ
n(k+1)に基づいて計算された指令角速度ω
n(k+1)および指令角加速度a
n(k+1)は、
図16(b)、(c)に示すように、それぞれ最大角速度ω
nmaxおよび最大角加速度a
nmaxを超過した値となる。そこで、
図16(d)に示すように、指令角加速度a
n(t)が最大角加速度a
nmaxに制限される。そして、このように制限された指令角加速度a
n(t)に基づいて指令角速度ω
n(t)が再計算される。ここで、
図16(e)に示すように、再計算された指令角速度ω
n(k+1)′が最大角速度ω
nmaxを超過する場合、指令角速度ω
n(t)が最大角速度ω
nmaxに制限される。
【0153】
その後、このように制限が行われた指令角速度ω
n(k+1)に基づいて、指令角度θ
n(t)が再計算される。これにより、
図16(f)に示すような指令角度θ
n(k+1)′が生成される。この指令角度θ
n(k+1)′は、角速度と角加速度が最大値以下となる安全な指令値となる。ここまでの処理が、加速補正処理に相当する手順となる。上述した通り、加速補正処理では、与えられた指令角度から角速度・角加速度を計算してリミットチェックが行われ、角速度・角加速度を制限して安全な指令角度に補正される。
【0154】
次に、
図17(a)に示すように、初速(=指令角速度ω
n(k+1)′)、最大角加速度a
nmaxで、減速停止するまでの距離Δθを計算し、元の指令角度θ
n(k+1)を超過しないかどうかがチェックされる。この場合、
図17(a)に破線で示すように、このまま加速すると、その後に減速しきれず、元の指令角度θ
n(k+1)をオーバーしてしまう。
【0155】
そこで、
図17(b)に示すように、直ちに減速を開始するように、指令角速度ω
n(t)を下げ始める。つまり、この場合、
図17(c)に示すように、指令角度θ
n(t)が、指令角加速度a
n(t)を-a
nmaxとして最大減速するような指令角度θ
n(k+1)″に補正される。ここまでの処理が、減速補正処理に相当する手順となる。上述した通り、減速補正処理では、加速補正後の指令値に基づいて、元の指令角度で止まりきれるかどうかチェックが行われ、元の指令角度で止まりきれない場合は直ちに減速が開始されるような指令角度に補正される。
【0156】
このような処理全体の様子、つまり上記各処理が実行されることに伴う指令角度θ
n(t)の変化の様子は、
図18に示すようになる。なお、
図18において、時刻t1~t2の期間Taは速度制限がされていない期間であり、時刻t2~t3の期間Tbは加速補正が行われている期間であり、時刻t3~t4の期間Tcは減速補正が行われている期間である。
図18に示すように、時刻t2において前回値から大きく変化するような指令値(指令角度)が発生すると、期間Tbにおいて安全な角速度・角加速度となるように指令角度が補正される。その後、期間Tcにおいて元の指令角度で止まりきれないことが分かると、減速を始めるように指令角度が補正される。その結果、指令角度の変化量が大きくなった場合でも、安全な角速度・角加速度でもって指令角度に到達することができる。
【0157】
以上説明したように、本実施形態のコントローラ3は、制御軸の指令角度θn(k+1)が算出されると、その指令角度に基づいて算出される制御軸の指令角速度ωn(k+1)および指令角加速度an(k+1)がそれぞれ最大角速度ωnmaxおよび最大角加速度anmaxを超えないように指令角度を補正する加速補正処理を実行する。これにより、制御軸の角速度および角加速度がそれぞれ最大角速度ωnmaxおよび最大角加速度anmax以下となる安全な指令角度θn(k+1)′が生成される。
【0158】
ただし、加速補正処理により補正された後の指令角度θn(k+1)′から最大減速で減速しても当初算出された指令角度θn(k+1)を超過する場合が考えられる。そこで、コントローラ3は、制御軸の角度が指令角度θn(k+1)へと収束するように指令角度θn(k+1)′をさらに補正する減速補正処理を実行する。これにより、制御軸の角度が指令角度θn(k+1)を超過する事態を防止することができる。
【0159】
このようにすれば、ダイレクトティーチングの実行中にロボット2が特異点近傍を通過したり、操作軸が急激に操作されたりすることによって制御軸の指令角度θn(k+1)の変化量が過大になった場合でも、制御軸の角速度および角加速度をそれぞれ最大角速度ωnmaxおよび最大角加速度anmax以下に抑えつつ、つまり安全な加速をしつつ、制御軸の角度を当初算出された指令角度θn(k+1)に精度良く到達させることができる。
【0160】
なお、上述した加速補正処理などが行われる場合、制御軸の動作は、ユーザの操作による操作軸の動作に対して遅れた動作となる。しかしながら、このような遅れは、ロボット2のダイレクトティーチングにおいて問題とはならない。なぜなら、一般に、ロボットのダイレクトティーチングでは、ユーザがロボットに触れて動かし、その後、ロボットを停止させた状態で、アーム先端の位置や姿勢が所望する状態となっているかを確認する。このような動作が繰り返されることにより、所望する教示が行われる。つまり、ロボット2のダイレクトティーチングにおいて、ユーザがロボット2を動かし続けることはなく、必ず、ロボット2を停止させる期間が存在する。
【0161】
本実施形態の制御では、操作軸の動作に対して制御軸の動作が遅れるが、その遅れ分は、ロボット2が停止されている期間に取り戻すことができる。したがって、ロボット2のダイレクトティーチングでは、上述した制御による制御軸の動作の遅れは、問題とはならない。このようなことから、本実施形態では、制御軸の動作が遅れるような制御を敢えて採用しており、それにより、ロボット2の安全性の向上を図るようになっている。
【0162】
(第3実施形態)
以下、第2実施形態に対してコントローラ3による制御の内容、つまりロボット2の制御方法が変更された第3実施形態について
図19~
図21を参照して説明する。
【0163】
第2実施形態によれば、制御軸の動作が急峻な動作となることは回避できるものの、ロボット2の特異点近傍において各軸の移動量が大きくなる現象、つまり遠く離れた関節角度に移動しようとする現象は避けることができない。ダイレクトティーチング中、ユーザは、ロボット2に近付いた位置から操作軸の操作を行うことになるため、特異点近傍において各軸の移動量が大きくなる現象が発生すると、ロボット2のアームなどがユーザに接触する可能性があり、その結果、安全性が低下するおそれがある。
【0164】
そこで、本実施形態では、このような点を改善するため、角度制御部として機能するコントローラ3により実行される処理である第1指令算出処理および第2指令算出処理の内容に変更が加えられている。本実施形態の第1指令算出処理は、例えば
図19に示すような内容の処理であり、第2実施形態の第1指令算出処理に対し、ステップS230およびS240が追加されている。
【0165】
この場合、ステップS220の実行後、ステップS230に進む。ステップS230に進むと、コントローラ3は、ロボット2が特異点近傍であるか否かを検出する。なお、特異点近傍であることは、例えば、ヤコビアンが0になる各軸角度、5軸0度付近などにより検出することが可能である。ここで、特異点近傍であることが検出されない場合、ステップS230で「NO」となり、ステップS240を実行することなく、ステップS250に進む。
【0166】
一方、特異点近傍であることが検出されると、ステップS230で「YES」となり、ステップS240に進む。ステップS240に進むと、コントローラ3は、今回の指令角度を、前回の指令角度で固定(ロック)する。この場合、今回の指令角度θ4(k+1)、θ5(k+1)、θ6(k+1)が、それぞれ前回の指令角度θ4(k)、θ5(k)、θ6(k)に置換される。ステップS240の実行後は、ステップS250に進む。
【0167】
本実施形態の第2指令算出処理は、例えば
図20に示すような内容の処理であり、第2実施形態の第2指令算出処理に対し、ステップS330およびS340が追加されている。この場合、ステップS320の実行後、ステップS330に進む。ステップS330に進むと、コントローラ3は、ロボット2が特異点近傍であるか否かを検出する。ここで、特異点近傍であることが検出されない場合、ステップS330で「NO」となり、ステップS340を実行することなく、ステップS350に進む。
【0168】
一方、特異点近傍であることが検出されると、ステップS330で「YES」となり、ステップS340に進む。ステップS340に進むと、コントローラ3は、今回の指令角度を、前回の指令角度で固定(ロック)する。この場合、今回の指令角度θ1(k+1)、θ2(k+1)、θ3(k+1)が、それぞれ前回の指令角度θ1(k)、θ2(k)、θ3(k)に置換される。ステップS340の実行後は、ステップS350に進む。
【0169】
本実施形態において、ステップS230およびS330の処理は、ロボット2が特異点近傍であるか否かを検出する特異点検出処理に相当する。また、本実施形態において、ステップS240およびS340の処理は、特異点検出処理により特異点近傍であることが検出されると、その時点以降の指令角度を、前回の指令角度に置換する指令角度置換処理に相当する。
【0170】
続いて、ダイレクトティーチング中に特異点検出処理、指令角度置換処理および指令速度制限処理が実行されることにより、特異点侵入時に制御軸の指令値(指令角度θ
n(t))が修正(補間)される様子の一例について
図21を参照しながら説明する。
図21において、時刻t11~t12の期間Tdは特異点ではない正常な期間であり、時刻t12~t13の期間Teは特異点である期間であり、時刻t13~t14の期間Tfは加速補正が行われている期間であり、時刻t14~t15の期間Tgは減速補正が行われている期間である。
【0171】
なお、
図21において、(a)は、特異点検出処理および指令角度置換処理が実行されない場合を表し、(b)は、特異点検出処理および指令角度置換処理が実行される場合を表している。この場合、時刻t12の時点にて、ロボット2が特異点に侵入したことが検出されると、つまり特異点が検出されると、
図21(a)に示すように、その時点以降の指令角度θ
n(t)が特異点検出時の指令角度にロック(固定)される。
【0172】
ただし、このとき、指令角度θ
n(t)は、
図21(b)に示すように、指令速度制限処理が実行されることにより、特異点検出時の指令角度に向けて緩やかに変化する。時刻t12~時刻t13の期間Teでは、指令角度がロックされるため、制御軸の角度制御による位置・姿勢の維持が一時的に中断される。このとき、例えばティーチングペンダントなどの表示デバイスにメッセージを表示させたり、ロボット2の筐体などに設けられたLEDなどの点灯状態や色を変化させたりすることによって、ユーザに対して特異点近傍であることと、位置・姿勢の維持が中断されていることとを報知するとよい。このようにすれば、ユーザは、ロボット2の現在の状況を正確に知ることができる。
【0173】
その後、時刻t13の時点にて、ユーザの操作によってロボット2が特異点を脱出すると、時刻t13~時刻t15において加速補正処理および減速補正処理が行われることにより、制御軸の角速度が低減されるように指令角度の補正が行われる。
図21(b)に示すように、特異点検出処理および指令角度置換処理が実行される場合、これらの処理が実行されない場合(
図21(a)参照)に対し、指令角度θ
n(t)が遅れて変化するような挙動となる。
【0174】
以上説明したように、本実施形態のコントローラ3は、ロボット2が特異点近傍に突入すると、その時点以降の指令角度を前回の指令角度(特異点検出時の指令角度)で固定するという処理を実行するようになっている。このようにすれば、ロボット2の特異点近傍において各軸の移動量が大きくなる現象の発生が抑制され、その結果、安全性を向上させることができる。
【0175】
この場合、制御軸の角度制御による位置・姿勢の維持が一時的に中断されることになるが、操作軸の操作に応じて特異点近傍を脱出することができれば、その後は再び制御軸の角度制御による位置・姿勢の維持が再開される。また、上述したようにロボット2が特異点近傍に突入すると指令角度を前回の指令角度でロックする処理を実行して制御軸の角度制御による位置・姿勢の維持を一時的に中断させることにより、加速補正処理などによる制御軸の遅れ分を取り戻すことが可能となる。つまり、本実施形態によれば、特異点近傍におけるロボット2の安全性を向上させつつ、加速補正処理などが行われた場合における制御軸の動作の遅れを取り戻すことができる。
【0176】
(その他の実施形態)
なお、本発明は上記し且つ図面に記載した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で任意に変形、組み合わせ、あるいは拡張することができる。
上記実施形態で示した数値などは例示であり、それに限定されるものではない。
【0177】
本発明は、一般的な産業用ロボットシステムであるロボットシステム1に用いられるものに限らず、垂直多関節型のロボットを制御するものであり且つダイレクトティーチングに対応したロボットの制御全般に適用することができる。
コントローラ3を、ロボット2のベース4の外に配置してもよい。
【0178】
先端側軸としては、4,5,6軸に限らず、例えば3,4,6軸など、アーム先端の姿勢を決定するうえで支配的な要因となり得る軸であればよい。また、根元側軸としては、1,2,3軸に限らず、例えば1,2,5軸など、アーム先端の位置を決定するうえで支配的な要因となり得る軸であればよい。また、これらの先端側軸および根元側軸の切り分けは、制御対象となるロボットの仕様に応じて適宜変更すればよい。
【符号の説明】
【0179】
1…ロボットシステム、2…ロボット、3…コントローラ、J1,J2,J3…軸、J4,J5,J6…軸。