IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社安川電機の特許一覧

特許7169561ロボットシステム、ロボットの制御方法、サーボシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-02
(45)【発行日】2022-11-11
(54)【発明の名称】ロボットシステム、ロボットの制御方法、サーボシステム
(51)【国際特許分類】
   B25J 13/00 20060101AFI20221104BHJP
   B25J 19/06 20060101ALI20221104BHJP
   G05B 19/19 20060101ALI20221104BHJP
【FI】
B25J13/00 Z
B25J19/06
G05B19/19 X
【請求項の数】 11
(21)【出願番号】P 2021532641
(86)(22)【出願日】2019-07-18
(86)【国際出願番号】 JP2019028261
(87)【国際公開番号】W WO2021009903
(87)【国際公開日】2021-01-21
【審査請求日】2022-01-18
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】110003096
【氏名又は名称】特許業務法人第一テクニカル国際特許事務所
(72)【発明者】
【氏名】嶌本 慶太
(72)【発明者】
【氏名】上村 浩司
【審査官】仁木 学
(56)【参考文献】
【文献】特開2009-297827(JP,A)
【文献】国際公開第2019/065427(WO,A1)
【文献】特開平4-135189(JP,A)
【文献】特開平5-337860(JP,A)
【文献】特開2016-28842(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ー 21/02
G05B 19/19
(57)【特許請求の範囲】
【請求項1】
モータにより駆動される関節を備えたロボットと、
前記モータを制御して前記ロボットを動作させるコントローラと、を有し、
前記コントローラは、
位置指令に基づいて前記モータの位置制御を実行する第1制御部と、
前記第1制御部により前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存するトルク指令保存部と、
前記トルク指令保存部により保存した前記トルク指令に基づいて前記モータのトルク制御を実行する第2制御部と、
を有する、ロボットシステム。
【請求項2】
前記ロボットは、
前記モータの位置を検出するエンコーダを有しており、
前記コントローラは、
前記第1制御部により前記モータの位置制御を実行する際に前記エンコーダで検出した第1検出位置を時系列で保存する検出位置保存部と、
前記検出位置保存部により保存した前記第1検出位置と、前記第2制御部により前記モータのトルク制御を実行する際に前記エンコーダで検出した第2検出位置との位置偏差に基づいて、前記トルク制御の実行中における前記ロボットへの接触の有無を判定する接触判定部と、を有する、
請求項1に記載のロボットシステム。
【請求項3】
前記接触判定部は、
前記位置偏差と第1しきい値とを比較し、前記位置偏差が前記第1しきい値よりも大きい場合に前記接触があったと判定し、
前記コントローラは、
前記接触判定部により前記接触があったと判定された場合に、前記モータを停止させる第1停止処理部を有する、
請求項2に記載のロボットシステム。
【請求項4】
前記ロボットは、
前記モータの位置を検出するエンコーダを有しており、
前記コントローラは、
前記トルク指令と前記エンコーダの検出位置とに基づいて外乱を推定する外乱推定部と、
前記第1制御部により前記モータの位置制御を実行する際に前記外乱推定部で推定した第1推定外乱を時系列で保存する推定外乱保存部と、
前記推定外乱保存部により保存した前記第1推定外乱と、前記第2制御部により前記モータのトルク制御を実行する際に前記外乱推定部で推定した第2推定外乱との外乱偏差に基づいて、前記トルク指令保存部により保存した前記トルク指令を補正するトルク指令補正部と、を有し、
前記第2制御部は、
前記トルク指令補正部により補正した前記トルク指令に基づいて前記モータのトルク制御を実行する、
請求項1~3のいずれか1項に記載のロボットシステム。
【請求項5】
前記コントローラは、
前記外乱偏差と第2しきい値とを比較し、前記外乱偏差が前記第2しきい値よりも大きい場合に前記モータを停止させる第2停止処理部を有する、
請求項4に記載のロボットシステム。
【請求項6】
前記第2制御部による前記トルク制御の実行中の所定のタイミングで前記位置偏差と第3しきい値とを比較し、前記位置偏差が前記第3しきい値よりも大きい場合に、前記第1制御部による前記位置制御に切り替える制御切替部を有する、
請求項2又は3に記載のロボットシステム。
【請求項7】
前記ロボットは、
複数の前記モータの各々により駆動される複数の前記関節を備えており、
前記トルク指令保存部は、
前記第1制御部により前記複数のモータの前記位置制御を実行する際に、前記複数のモータのうちの一部のモータに対して前記位置指令に基づいて生成したトルク指令を時系列で保存し、
前記第2制御部は、
前記トルク指令保存部により保存した前記トルク指令に基づいて前記一部のモータのトルク制御を実行し、
前記第1制御部は、
前記第2制御部による前記一部のモータの前記トルク制御の実行中に、前記一部のモータ以外の残りのモータに対して前記位置制御を実行する、
請求項1~6のいずれか1項に記載のロボットシステム。
【請求項8】
前記コントローラは、
前記トルク指令保存部により前記トルク指令を保存した前記モータに対し、前記位置指令に基づいて前記第1制御部により位置制御を実行する第1のモードと、保存した前記トルク指令に基づいて前記第2制御部により前記トルク制御を実行する第2のモードと、をユーザの選択操作に基づいて切り替えるモード切替部を有する、
請求項1~7のいずれか1項に記載のロボットシステム。
【請求項9】
前記ロボットは、
所定の作業を行うためのエンドエフェクタと、
前記エンドエフェクタに作用する外力を計測する外力計測センサと、を有し、
前記コントローラは、
前記外力計測センサで計測した前記外力に基づいて前記位置指令及び前記トルク指令の少なくとも一方を補正する指令補正部を有する、
請求項1~8のいずれか1項に記載のロボットシステム。
【請求項10】
モータにより駆動される関節を備えたロボットの制御方法であって、
位置指令に基づいて前記モータの位置制御を実行することと、
前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存することと、
保存した前記トルク指令に基づいて前記モータのトルク制御を実行することと、
を有する、ロボットの制御方法。
【請求項11】
モータと、
前記モータを制御するコントローラと、を有し、
前記コントローラは、
位置指令に基づいて前記モータの位置制御を実行する第1制御部と、
前記第1制御部により前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存するトルク指令保存部と、
前記トルク指令保存部により保存した前記トルク指令に基づいて前記モータのトルク制御を実行する第2制御部と、
を有する、サーボシステム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の実施形態は、ロボットシステム、ロボットの制御方法及びサーボシステムに関する。
【背景技術】
【0002】
従来、安全柵無しで人との協働運転を行うロボットが提唱されている。人と協働するロボットには、人と接触した場合に安全に動作することが望まれる。
【0003】
このような技術として、例えば特許文献1には、各種ハンドリング作業を行う水平多関節型ロボットアームに、外力を計測する力センサや各関節軸に作用するトルクを計測するトルクセンサを取付け、それらのセンサ情報から各関節を力制御することにより、アームがどの部分で環境に接触しても適切な回避動作を実現できる水平多関節型ロボットアームのインピーダンス制御装置が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2001-38673号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記従来技術では、ロボットアームに複数種類の外力計測センサが取り付けられるが、このようなセンサは高価であるためコストアップの要因となる。このため、コストアップを抑えつつ人との協働運転が可能なロボットシステムが要望されていた。
【0006】
本発明はこのような問題点に鑑みてなされたものであり、コストアップを抑えつつ人との協働運転が可能なロボットシステム、ロボットの制御方法及びサーボシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明の一の観点によれば、モータにより駆動される関節を備えたロボットと、前記モータを制御して前記ロボットを動作させるコントローラと、を有し、前記コントローラは、位置指令に基づいて前記モータの位置制御を実行する第1制御部と、前記第1制御部により前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存するトルク指令保存部と、前記トルク指令保存部により保存した前記トルク指令に基づいて前記モータのトルク制御を実行する第2制御部と、を有する、ロボットシステムが適用される。
【0008】
また、本発明の別の観点によれば、モータにより駆動される関節を備えたロボットの制御方法であって、位置指令に基づいて前記モータの位置制御を実行することと、前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存することと、保存した前記トルク指令に基づいて前記モータのトルク制御を実行することと、を有する、ロボットの制御方法が適用される。
【0009】
また、本発明のさらに別の観点によれば、モータと、前記モータを制御するコントローラと、を有し、前記コントローラは、位置指令に基づいて前記モータの位置制御を実行する第1制御部と、前記第1制御部により前記モータの位置制御を実行する際に、前記位置指令に基づいて生成したトルク指令を時系列で保存するトルク指令保存部と、前記トルク指令保存部により保存した前記トルク指令に基づいて前記モータのトルク制御を実行する第2制御部と、を有する、サーボシステムが適用される。
【発明の効果】
【0010】
本発明によれば、コストアップを抑えつつ人との協働運転が可能なロボットシステム等を実現できる。
【図面の簡単な説明】
【0011】
図1】第1実施形態に係るロボットシステムの構成の一例を表す斜視図である。
図2】トルクティーチング時のロボットコントローラの機能構成の一例を表すブロック図である。
図3】トルクプレイバック時のロボットコントローラの機能構成の一例を表しブロック図である。
図4】ロボットコントローラによる制御内容の一例を表すフローチャートである。
図5】第1実施形態による効果を検証するためのシミュレーション結果の一例を表すグラフである。
図6】第1実施形態による効果を検証するためのシミュレーション結果の他の例を表すグラフである。
図7】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図8】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図9】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図10】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図11】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図12】第1実施形態による効果を検証するためのシミュレーション結果のさらに他の例を表すグラフである。
図13】第2実施形態に係るトルクティーチング時のロボットコントローラの機能構成の一例を表すブロック図である。
図14】第2実施形態に係るトルクプレイバック時のロボットコントローラの機能構成の一例を表すブロック図である。
図15】ロボットコントローラによる制御内容の一例を表すフローチャートである。
図16】一部の軸に対してトルク制御を実行する変形例における、ロボットが実行するワークの移送作業の動作の一例を表す説明図である。
図17】一部の軸に対してトルク制御を実行する変形例における、ロボットが実行するワークの移送作業の動作の他の例を表す説明図である。
図18】一部の軸に対してトルク制御を実行する変形例における、ロボットが実行するワークの移送作業の動作のさらに他の例を表す説明図である。
図19】トルク制御から位置制御に切り替える変形例における、トルクプレイバック時のロボットコントローラの機能構成の一例を表すブロック図である。
図20】トルク制御から位置制御に切り替える変形例における、ロボットコントローラによる制御内容の一例を表すフローチャートである。
図21】モード切替可能とする変形例における、ロボットコントローラのモード切替に関わる部分の機能構成の一例を表すブロック図である。
図22】外力計測センサを設ける変形例における、ロボットシステムの構成の一例を表す斜視図である。
図23】外力計測センサを設ける変形例における、ロボットコントローラのモード切替に関わる部分の機能構成の一例を表すブロック図である。
図24】ロボットコントローラのハードウェア構成例を表すブロック図である。
【発明を実施するための形態】
【0012】
<0.背景>
まず、実施形態について説明する前に、本願発明者等が本願発明に想到した背景等について説明する。
【0013】
一般にロボットは、各関節を位置制御し、ティーチングされた位置に手先を移動させる。ロボットが人と協働する場合には、位置制御による動作中に人と接触しても大きな力を加えないように、安全に動作することが望まれる。そこで、例えば動作速度を低めに設定したり、トルクセンサを用いて人との接触を検出して停止させたりすることが行われている。
【0014】
しかしながら、ロボットが位置制御によって動作する場合、人との接触によりロボットに外力が加わっても、ティーチングされた位置に到達するように動作する。このため、トルクの出力が増大して人に危害を加える可能性がある。また、一般にロボットは各関節のバックドライバビリティが低いため、人との接触によりロボットに外力が加わっても、モータの電流情報から接触を検出することは難しい場合もある。このため、人と協働するロボットには、人との接触を検出するために、外力を計測する力センサや各関節軸に作用するトルクを計測するトルクセンサが設けられる。しかしながら、このような外力計測センサは高価であるため、人協働ロボットのコストアップの要因となる。したがって、外力計測センサを用いることなく、人と接触しても大きな力を加えないように安全に動作するロボットが要望されていた。
【0015】
そこで、本願発明者等は検討により以下の点に想到した。すなわち、モータの制御は位置制御とトルク制御に大別できる。なお、力制御はトルク制御と単位が異なるが性質が同じであるため、トルク制御に含めることとする。また、電流指令はトルク指令に定数を乗算したものであり、電流制御もトルク制御と性質が同じであるため、トルク制御に含めることとする。位置制御は、任意のトルクで指令した位置に到達するように制御する。一方、トルク制御は、任意の位置で指令したトルクを発生するように制御する。よって、人に危害を加えない程度の大きさのトルクを出力するようにモータをトルク制御することで、人と接触した場合であってもロボットが人に危害を加えないように安全に動作させることが可能である。つまり、トルク制御により所望の軌道(ティーチングされた軌道)を描くロボットを実現することで、外力計測センサを用いることなく人と協働することが可能なロボットを実現できることに想到した。
【0016】
これらの事情に想到した本願発明者等は、更に鋭意研究を行った結果、以下で説明する各実施形態に係るロボットシステム等に想到した。以下、これらの実施形態について詳細に説明する。なお、ここで説明した課題や効果等は、以下で説明する各実施形態のあくまで一例であって、さらなる作用効果等を各実施形態が奏することは言うまでもない。
【0017】
<1.第1実施形態>
まず、第1実施形態について図面を参照しつつ説明する。
【0018】
(1-1.ロボットシステムの構成)
まず、図1を参照しつつ、第1実施形態に係るロボットシステム1の構成の一例について説明する。
【0019】
図1に示すように、ロボットシステム1は、ワークW(後述の図16図18参照)に対して所定の作業を行うロボット3と、ロボットコントローラ5と、上位コントローラ7とを有する。
【0020】
ロボット3は、モータにより駆動される例えば6つの関節部を備えた垂直多関節型の6軸ロボットであり、その先端には、エンドエフェクタとしてハンド9が取り付けられている。ロボットコントローラ5は、ロボット3の例えば基台11に取り付けられており、各モータを制御してロボット3の動作を制御する。なお、ロボット3を6軸以外(例えば5軸や7軸等)のロボットとしてもよい。また、水平多関節型やパラレルリンクロボット等、ロボット3を垂直多関節型以外のロボットとしてもよい。また、ロボットコントローラ5をロボット3と分離して配置してもよい。
【0021】
ロボット3は、上記所定の作業として、例えばハンド9によりワークWを把持して移送するワークの移送作業を実行する。なお、ロボット3が行う作業はワークの移送作業に限定されるものではなく、例えばワークを用いて部品や製品の組み立て等を実行することも可能である。また、ハンド9に代えてエンドエフェクタの種類を適宜変更することにより、例えば、塗装、溶接、ボルト締め、機械加工(切削や研磨等)等の作業を行うことも可能である。
【0022】
ロボットコントローラ5(コントローラの一例)は、上位コントローラ7から入力された位置指令(教示データ)に基づいて、ロボット3のハンド9をティーチングにより教示された位置に移動させるために必要となるロボット3の各アクチュエータAc1~Ac6のサーボモータ(図示省略)の目標回転角度等を演算し、当該目標回転角度等に基づいて各アクチュエータAc1~Ac6のサーボモータに供給する駆動電力の制御を行い、ロボット3の動作を制御する。ロボットコントローラ5及び上位コントローラ7は、例えばモーションコントローラ、パーソナルコンピュータ(PC)、プログラマブルロジックコントローラ(PLC)等により構成される。なお、ロボットコントローラ5と上位コントローラ7とを、別体でなく一体として構成してもよい。また、ロボットコントローラ5又は上位コントローラ7の少なくとも一方を、複数の制御装置で構成してもよい。また、位置指令は必ずしも上位コントローラ7から入力される必要はなく、ロボットコントローラ5内に保存されていてもよい。
【0023】
(1-2.ロボットの構成)
次に、図1を参照しつつ、ロボット3の構成の一例について説明する。
【0024】
図1に示すように、ロボット3は、基台11と、旋回部13と、アーム15とを有する。基台11は、例えば床や壁、天井等に固定されている。
【0025】
旋回部13は、基台11の上端部に、上下方向に略平行な回転軸心Ax1まわりに旋回可能に支持されている。この旋回部13は、基台11との間の関節部に設けられたアクチュエータAc1の駆動により、基台11の上端部に対し、回転軸心Ax1まわりに旋回駆動される。
【0026】
アーム15は、旋回部13の一方側の側部に支持されている。このアーム15は、下腕部17と、上腕部19と、手首部21と、フランジ部23とを備える。
【0027】
下腕部17は、旋回部13の一方側の側部に、回転軸心Ax1に略垂直な回転軸心Ax2まわりに旋回可能に支持されている。この下腕部17は、旋回部13との間の関節部に設けられたアクチュエータAc2の駆動により、旋回部13の一方側の側部に対し、回転軸心Ax2まわりに旋回駆動される。
【0028】
上腕部19は、下腕部17の先端側に、回転軸心Ax2に略平行な回転軸心Ax3まわりに旋回可能且つ回転軸心Ax3に略垂直な回転軸心Ax4回りに回動可能に支持されている。この上腕部19は、下腕部17との間の関節部に設けられたアクチュエータAc3の駆動により、下腕部17の先端側に対し、回転軸心Ax3まわりに旋回駆動される。また上腕部19は、アクチュエータAc3との間に設けられたアクチュエータAc4の駆動により、下腕部17の先端側に対し、回転軸心Ax4まわりに回動駆動される。
【0029】
手首部21は、上腕部19の先端側に、回転軸心Ax4に略垂直な回転軸心Ax5まわりに旋回可能に支持されている。この手首部21は、上腕部19との間の関節部に設けられたアクチュエータAc5の駆動により、上腕部19の先端側に対し、回転軸心Ax5まわりに旋回駆動される。
【0030】
フランジ部23は、手首部21の先端側に、回転軸心Ax5に略垂直な回転軸心Ax6まわりに回動可能に支持されている。このフランジ部23は、手首部21との間の関節部に設けられたアクチュエータAc6の駆動により、手首部32の先端側に対し、回転軸心Ax6まわりに回動駆動される。
【0031】
ハンド9は、フランジ部23の先端に取り付けられており、フランジ部23の回転軸心Ax6まわりの回動と共に、回転軸心Ax6まわりに回動する。このハンド9は、互いに遠近する方向に動作可能な一対の爪部材9a,9aを備えており、ワークWを把持することを初めとして、各種の操作や作業をすることが可能である。
【0032】
以上の構成であるロボット3は、6つのアクチュエータAc1~Ac6を備えた6つの関節部を有する6軸ロボットである。各関節部を駆動するアクチュエータAc1~Ac6は、例えばサーボモータ、減速機及びブレーキ等により構成されている。なお、サーボモータ、減速機及びブレーキ等は、必ずしも回転軸心Ax1~Ax6上に配置される必要はなく、これらの回転軸心Ax1~Ax6から離れた位置に配置されてもよい。
【0033】
なお、上記では、アーム15の長手方向(あるいは延材方向)に沿った回転軸心まわりの回転を「回動」と呼び、アーム15の長手方向(あるいは延材方向)に略垂直な回転軸心まわりの回転を「旋回」と呼んで区別している。
【0034】
(1-3.ロボットコントローラの構成)
次に、図2及び図3を参照しつつ、ロボットコントローラ5の機能構成の一例について、トルクティーチング時とトルクプレイバック時とに分けて説明する。なお、本実施形態において「トルクティーチング」とは、ロボット3の各関節のモータに位置制御を実行することによりロボット3を動作させたときの各モータへのトルク指令を保存することをいう。また「トルクプレイバック」とは、トルクティーチングで保存したトルク指令を用いてロボット3の各関節のモータにトルク制御を実行してロボット3を動作させることをいう。また、ロボットコントローラ5は図2及び図3に示す機能を上述の6つのアクチュエータAc1~Ac6の各モータに対してそれぞれ有するが、図2及び図3では煩雑防止のため単一のモータMに対する機能として図示している。
【0035】
図2に、トルクティーチング時のロボットコントローラ5の機能構成の一例を示す。この図2に示すように、ロボットコントローラ5は、位置制御部25と、速度制御部27と、電流制御部29と、速度推定部31と、トルク指令保存部33と、検出位置保存部35と、電流センサ37とを有する。また、アクチュエータAc1~Ac6の各モータMは、モータの回転位置(回転角度ともいう)を検出するエンコーダEと、モータを制動可能なブレーキBをそれぞれ有する。
【0036】
位置制御部25は、上位コントローラ7から出力された位置指令と、エンコーダにより検出された検出位置とに基づいて、例えばP制御、PI制御又はPID制御等により、モータMが指令位置に到達するような速度を発生させるための速度指令を生成する。速度制御部27は、位置制御部25により生成された速度指令と、速度推定部31により計算された推定速度とに基づいて、例えばP制御、PI制御又はPID制御等により、モータMが指令速度に到達するようなトルクを発生させるためのトルク指令を生成する。電流制御部29は、速度制御部27により生成されたトルク指令に基づいて電流指令を算出し、当該電流指令と、エンコーダにより検出された検出位置と、電流センサ37により検出された電流値とに基づいて、例えばP制御、PI制御又はPID制御等により、モータMが指令トルクを発生するための電流値を決定し、モータMに供給する。速度推定部31は、エンコーダEにより検出された検出位置を、例えば時間で1階微分したり、エンコーダEの検出信号(例えばパルス信号)を所定の時間カウントするなどの処理により、速度を推定する。なお、上記位置制御部25、速度制御部27及び電流制御部29が第1制御部の一例に相当する。
【0037】
トルク指令保存部33は、上記位置制御部25、速度制御部27及び電流制御部29によりモータMの位置制御を実行する際に、速度制御部27により生成されたトルク指令(位置指令に基づいて生成したトルク指令の一例)の値を時系列で保存する。なお、前述のように電流指令はトルク指令に定数を乗算したものであり、性質が同じである。このため、本明細書において「トルク指令を保存する」という場合、「電流指令を保存する」ことが含まれるものとする。また、検出位置保存部35は、上記位置制御部25、速度制御部27及び電流制御部29によりモータMの位置制御を実行する際に、エンコーダEにより検出された検出位置(第1検出位置の一例)を時系列で保存する。つまり、ロボット3に所望の手先の位置をティーチングし、当該ティーチングによる軌道を確認するためにプレイバックする際には、上記位置制御部25、速度制御部27及び電流制御部29により各関節のモータMが位置制御される。この際、各関節の動作用に速度制御部27によりそれぞれ生成されたトルク指令の値が、トルク指令保存部33によりモータMごとに時系列で保存される。同様に、上記位置制御によるプレイバックの際に、各モータMのエンコーダEによりそれぞれ検出された検出位置が、検出位置保存部35によりモータMごとに時系列で保存される。なお、上記位置制御によるプレイバックを、上述したトルクプレイバックと区別するために「位置プレイバック」という。
【0038】
図3に、トルクプレイバック時のロボットコントローラ5の機能構成の一例を示す。上記トルクティーチングでトルク指令保存部33により保存したトルク指令は、ロボット3の手先を所望の位置に移動させるためのトルク指令である。したがって、図3に示すように、トルク指令保存部33に保存したトルク指令を指令値とするトルク制御を電流制御部29によりアクチュエータAc1~Ac6の各モータMに対して実行すると、ロボット3にトルクティーチング時と異なる外乱が作用しない場合には、ロボット3の手先は所望の位置に移動する。その結果、トルク制御により所望の軌道(ティーチングされた軌道)を描くロボットを実現することができる。なお、本明細書において「外乱」という場合、ロボット3に作用する外力、モデル化誤差(制御モデルと実物の誤差)、ロボット3の内部干渉力等が含まれる。
【0039】
一方で、トルクプレイバック時に人との接触等によりロボット3に想定以上の外乱が加わる可能性もある。この外乱が加わったか否かを判断するために、図3に示すように、ロボットコントローラ5は、上記図2に示す構成に加えて、減算器39と、接触判定部41と、停止処理部43とを有する。減算器39には、検出位置保存部35により保存された検出位置と、トルク指令保存部33により保存されたトルク指令に基づいて電流制御部29によりモータMのトルク制御を実行する際にエンコーダEにより検出された検出位置(第2検出位置の一例)とが入力され、減算器39はそれらの位置偏差を出力する。接触判定部41は、トルク制御の実行中におけるロボット3への接触の有無を判定する。具体的には、接触判定部41は、減算器39により出力された位置偏差と第1しきい値とを比較し、位置偏差が第1しきい値よりも大きい場合には、想定以上の外乱が加わっている(接触の可能性が大きい)と判定し、位置偏差が第1しきい値以下である場合には、外乱が想定以内である(接触の可能性が少ない)と判定する。
【0040】
停止処理部43(第1停止処理部の一例)は、接触判定部41により接触があると判定された場合に、モータMへの電流の供給を停止すると共にブレーキBを作動させて、モータMを停止させる。なお、停止処理部43により、上記モータMの停止に代えて又は加えて、アラームを出力する処理等を行ってもよい。
【0041】
なお、上述したトルク指令保存部33、検出位置保存部35、接触判定部41等における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、ロボットコントローラ5の各処理部は、モータMに駆動電力を給電する部分(サーボアンプ等)のみ実際の装置により実装され、その他の機能は後述するCPU901(図24参照)が実行するプログラムにより実装されてもよいし、その一部又は全部がASICやFPGA、その他の電気回路等の実際の装置により実装されてもよい。さらに、ロボットコントローラ5と上位コントローラ7の処理の分担は上記の例に限定されるものではなく、例えばトルク指令保存部33、検出位置保存部35、接触判定部41等による処理を上位コントローラ7で行ってもよいし、ロボットコントローラ5と上位コントローラ7とで分担して行ってもよい。
【0042】
(1-4.ロボットコントローラによる制御内容)
次に、図4を参照しつつ、ロボットコントローラ5による制御内容の一例について説明する。なお、本フローチャートの実行前に、予めティーチングペンダント等を用いてロボット3に対するティーチングが行われ、上位コントローラ7に当該ティーチングに対応する位置指令が保存されているものとする。なお、このときに行われるティーチングを、上述したトルクティーチングと区別するために「位置ティーチング」という。
【0043】
ステップS10では、ロボットコントローラ5は、上位コントローラ7からの位置指令に基づいて各モータMに対して位置制御を実行し、ロボット3を動作させる位置プレイバックを実行する。
【0044】
ステップS20では、ロボットコントローラ5は、トルク指令保存部33により、位置プレイバック中に速度制御部27により生成されたトルク指令を時系列で保存する(トルクティーチング)。また、ロボットコントローラ5は、検出位置保存部35により、位置プレイバック中にエンコーダEにより検出された検出位置を時系列で保存する。
【0045】
ステップS30では、ロボットコントローラ5は、電流制御部29により、上記ステップS20で保存したトルク指令を指令値とするトルク制御を各モータMに対して実行し、ロボット3を動作させるトルクプレイバックを実行する。
【0046】
ステップS40では、ロボットコントローラ5は、減算器39により、上記ステップS20で保存したトルクティーチング時の検出位置と、実行中のトルクプレイバックにおいてエンコーダEにより検出された検出位置との位置偏差を算出する。
【0047】
ステップS50では、ロボットコントローラ5は、接触判定部41により、上記ステップS40で算出した位置偏差が第1しきい値より大きいか否かを判定する。位置偏差が第1しきい値以下である場合には(ステップS50:NO)、本フローを終了する。一方、位置偏差が第1しきい値よりも大きい場合には(ステップS50:YES)、ステップS60に移る。
【0048】
ステップS60では、ロボットコントローラ5は、停止処理部43により、モータMへの電流の供給を停止すると共にブレーキBを作動させて、モータMを停止させる。その後、本フローを終了する。
【0049】
(1-5.シミュレーション結果)
次に、図5図12を参照しつつ、本実施形態による効果を検証するためのシミュレーション結果の一例について説明する。ここでは、回転型モータとボールネジを使用した1軸の動作としてシミュレーションを行った。
【0050】
図5及び図6に、トルクティーチング時の動作と処理の一例を示す。図5に示すように、トルクティーチング時の位置制御に用いる位置指令は、例えば振幅18.84rad、周波数1HZの正弦波とした。また図6に示すように外力は加わらないものとした。この場合、図5に示すようにエンコーダによる検出位置は位置指令と略一致する。また、位置指令に基づいて図6に示すようなトルク指令が生成され、当該トルク指令値が時系列に沿って保存される。
【0051】
次に、位置プレイバック(比較例)とトルクプレイバック(実施形態)の動作を比較することで、トルクプレイバックにより得られる効果について検証する。ここでは、位置プレイバックとトルクプレイバックの両方において、0s~4sまではモータをトルクティーチング時と同じ状況とするために、外力を受けないように設定した。また、4s以降では、トルクティーチング時と異なり、0radより大きい範囲では例えば剛性0.0372Nm/rad、粘性14.2Nm/(rad/s)の物と接触して受ける反力を外力として受けるように設定した。
【0052】
図7及び図8に、この場合における位置プレイバック時の位置とトルクの一例を示す。また図9に、位置ティーチング時の検出位置と位置プレイバック時の検出位置との位置偏差の一例を示す。図7に示すように、位置制御を実行する位置プレイバック時においては、位置ティーチング時と異なる外力を受けても、検出位置は位置指令に追従して略一致する。また図9に示すように、位置ティーチング時の検出位置と位置プレイバック時の検出位置との位置偏差は、例えば最大で0.05radであり、位置指令の振幅18.84radと比べると位置偏差は指令値の100分の1以下である。また図8に示すように、外力を受けても検出位置を位置指令に追従させるため、4s以降は位置ティーチング時よりも大きなトルクが出力されている。なお、接触対象に加わっているトルクを示す外力の大きさの最大値は、この例では0.7Nmである。
【0053】
上記図7図9により、位置プレイバック(比較例)では、外力を受けた場合に当該外力に打ち勝つトルクを出力してティーチングされた位置に追従するようにモータが動作する。したがって、人と接触した場合にも、上記と同様に位置指令に追従するように大きなトルクを出力して人に力を与えることとなり、人に危害を加える可能性がある。
【0054】
図10及び図11に、本実施形態におけるトルクプレイバック時の位置とトルクの一例を示す。また図12に、トルクティーチング時の検出位置(≒位置ティーチング時の検出位置)とトルクプレイバック時の検出位置との位置偏差の一例を示す。図10に示すように、トルク制御を実行するトルクプレイバック時においては、トルクティーチング時と異なる外力を受ける場合、検出位置はティーチングした位置指令に追従しない。また図12に示すように、外力を受ける場合、トルクティーチング時の検出位置とトルクプレイバック時の検出位置との位置偏差は例えば200radを超えており、位置指令の振幅18.84radと比べると10倍以上の値である。また図11に示すように、トルクプレイバック時のトルク指令はトルクティーチング時のトルク指令と同じである。なお、接触対象に加わっているトルクを示す外力の大きさの最大値は、この例では0.1Nmである。
【0055】
上記図8図11に示すように、位置プレイバック時とトルクプレイバック時における外力の大きさの最大値はそれぞれ0.7Nm及び0.1Nmであり、トルクプレイバック時の方が位置プレイバック時よりも接触対象に加える外力が小さい。したがって、人と接触した場合にも同様に、トルクティーチング時と同じトルクを出力して人に力を加えるため、位置プレイバック時よりも人に加える外力が小さくなる。これにより、位置プレイバックと比較して人に加える力を小さくでき、安全性を向上できる。また、図9図12に示すように、外力が加わっていないとき(0s~4s)は、位置プレイバックとトルクプレイバックのどちらもティーチング時の検出位置とプレイバック時の検出位置とが略一致する。したがって、トルクプレイバック時は、加わる外力がトルクティーチング時と同じであればトルクティーチング時と同じ動作をする。
【0056】
一方、外力が加わっているとき(4s以降)の検出位置の位置偏差は、図9に示すように位置プレイバック時が最大0.05radであるのに対して、図12に示すようにトルクプレイバック時が200rad以上となり、明確な相違が生じる。このため、トルクティーチング時の検出位置とトルクプレイバック時の検出位置との位置偏差から、トルクプレイバック時に外力が加わったか否かを判断することが可能である。
【0057】
以上から、トルクプレイバックでは、トルクティーチング時と同じ外力が加わる場合には位置プレイバックと同じ動作を行い、トルクティーチング時と異なる外力が加わる場合には外力に倣って動作する。さらに、トルクティーチング時の検出位置とトルクプレイバック時の検出位置との位置偏差から、外力が加わったか否かを推定することができる。したがって、トルクプレイバックを用いることで、外力計測センサを用いることなく、人と接触した場合に人に危害を加えることなく安全な動作を行う、人と協働することが可能なロボットを実現できる。
【0058】
(1-6.第1実施形態による効果)
以上説明した第1実施形態のロボットシステム1は、モータMにより駆動される関節を備えたロボット3と、モータMを制御してロボット3を動作させるロボットコントローラ5と、を有し、ロボットコントローラ5は、位置指令に基づいてモータMの位置制御を実行する位置制御部25、速度制御部27及び電流制御部29と、モータMの位置制御を実行する際に、位置指令に基づいて生成したトルク指令を時系列で保存するトルク指令保存部33と、トルク指令保存部33により保存したトルク指令に基づいてモータMのトルク制御を実行する電流制御部29と、を有する。
【0059】
本実施形態のロボットシステム1では、ロボット3に対して所望の手先の位置をティーチングしてプレイバックする際に、ロボットコントローラ5は位置制御部25等により各関節のモータMを位置制御してロボット3を動作させる。このとき、トルク指令保存部33により、各関節の動作用に算出したトルク指令を時系列に沿って保存する(トルクティーチング)。この保存されたトルク指令は、ロボット3の手先を所望の位置に移動させるためのトルク指令である。したがって、保存したトルク指令を指令値としたトルク制御を電流制御部29により実行すると、ロボット3の手先を所望の位置へ移動させることができる(トルクプレイバック)。そして、位置制御は任意のトルクで指令した位置に到達する制御である一方、トルク制御は任意の位置で指令したトルクを発生する制御である。このため、人に危害を加えない程度のトルクを出力するようにモータMをトルク制御することにより、ロボット3が人と接触した場合であっても人に危害を加えないように安全に動作させることが可能である。以上から、上記トルクプレイバックを実行することにより、トルクセンサや力センサ等の外力計測センサを設けなくとも(あるいは数を減らしても)、ロボット3が人と接触した場合に安全に動作させることが可能となる。したがって、コストアップを抑制しつつ、人との協働運転が可能なロボットシステム1を実現できる。
【0060】
また、本実施形態では特に、ロボット3は、モータMの位置を検出するエンコーダEを有しており、ロボットコントローラ5は、位置制御部25等によりモータMの位置制御を実行する際にエンコーダEで検出した検出位置を時系列で保存する検出位置保存部35と、検出位置保存部35により保存した検出位置と、電流制御部29によりモータMのトルク制御を実行する際にエンコーダEで検出した検出位置との位置偏差に基づいて、トルク制御の実行中におけるロボット3への接触の有無を判定する接触判定部41と、を有する。
【0061】
電流制御部29によるトルク制御の実行中(トルクプレイバック)は、ロボット3は加わった外力に応じて倣うように動作する。このため、トルクティーチング時の検出位置とトルクプレイバック時の検出位置との位置偏差から、ロボット3に外力が加わったか否か(外部の人や物と接触したか否か)を判定することが可能となる。したがって、トルクセンサや力センサ等の外力計測センサを設けなくともロボット3への接触の有無を判定できる。
【0062】
また、本実施形態では特に、接触判定部41は、位置偏差と第1しきい値とを比較し、位置偏差が第1しきい値よりも大きい場合に接触があったと判定し、ロボットコントローラ5は、接触判定部41により接触があったと判定された場合に、モータMを停止させる停止処理部43を有する。
【0063】
これにより、ロボット3が人や物と接触した場合に直ちに動作を停止させることができるので、ロボット3と協働する人の安全を確保できると共に、周囲の物の破損等を防止できる。
【0064】
<2.第2実施形態>
次に、第2実施形態について図面を参照しつつ説明する。第2実施形態では、トルクティーチング時及びトルクプレイバック時に外乱オブザーバを用いて外乱を推定する。
【0065】
(2-1.ロボットコントローラの構成)
まず、図13及び図14を参照しつつ、第2実施形態のロボットコントローラ5Aの機能構成の一例について、トルクティーチング時とトルクプレイバック時とに分けて説明する。
【0066】
図13に、トルクティーチング時のロボットコントローラ5Aの機能構成の一例を示す。この図13に示すように、ロボットコントローラ5Aは、前述の検出位置保存部35に代えて、外乱オブザーバ45と、推定外乱保存部47とを有する。外乱オブザーバ45(外乱推定部の一例)は、速度制御部27により生成されたトルク指令と、エンコーダEにより検出された検出位置とに基づいて、外乱を推定する。推定外乱保存部47は、位置制御部25、速度制御部27及び電流制御部29によりモータMの位置制御を実行する際に外乱オブザーバ45で推定した推定外乱(第1推定外乱の一例)の値を時系列で保存する。つまり、第2実施形態では、位置プレイバックの際に、各関節の動作用に速度制御部27によりそれぞれ生成されたトルク指令がトルク指令保存部33によりモータMごとに時系列で保存されると共に、外乱オブザーバ45で推定された推定外乱が推定外乱保存部47によりモータMごとに時系列で保存される。
【0067】
図14に、トルクプレイバック時のロボットコントローラ5Aの機能構成の一例を示す。前述のように、トルクプレイバック時に人との接触等によりロボット3に想定以上の外乱が加わる可能性がある。この外乱が加わったか否かを判断するために、図14に示すように、ロボットコントローラ5Aは、上記図13に示す構成に加えて、減算器49と、リミット51と、加算器53と、接触判定部55と、停止処理部57とを有する。
【0068】
減算器49には、推定外乱保存部47により保存された推定外乱と、トルク指令保存部33により保存されたトルク指令に基づいて電流制御部29によりモータMのトルク制御を実行する際に外乱オブザーバ45により推定された推定外乱(第2推定外乱の一例)とが入力され、減算器49はそれらの外乱偏差を出力する。リミット51は、外乱偏差を予め規格に合わせて設定された制限値以下の値に制限する。これにより、補正する外乱の大きさに制限を設けることができる。なお、リミット51は必ずしも設けられなくともよい。加算器53(トルク指令補正部の一例)は、トルク指令保存部33により保存されたトルク指令に、減算器49より出力されリミット51により制限された外乱偏差を加算することにより、トルク指令を補正する。電流制御部29は、当該補正されたトルク指令に基づいてモータMのトルク制御を実行する。
【0069】
接触判定部55は、トルク制御の実行中におけるロボット3への接触の有無を判定する。具体的には、接触判定部55は、減算器49により出力された外乱偏差と第2しきい値とを比較し、外乱偏差が第2しきい値よりも大きい場合には、想定以上の外乱が加わっている(接触の可能性が大きい)と判定し、外乱偏差が第2しきい値以下である場合には、外乱が想定以内である(接触の可能性が少ない)と判定する。
【0070】
停止処理部57(第2停止処理部の一例)は、接触判定部55により接触があると判定された場合に、モータMへの電流の供給を停止すると共にブレーキBを作動させて、モータMを停止させる。なお、停止処理部57により、上記モータMの停止に代えて又は加えて、アラームを出力する処理等を行ってもよい。
【0071】
なお、ロボットコントローラ5Aの上記以外の機能は、前述の図2及び図3に示すロボットコントローラ5と同様であるので説明を省略する。
【0072】
(2-2.ロボットコントローラによる制御内容)
次に、図15を参照しつつ、ロボットコントローラ5Aによる制御内容の一例について説明する。なお、本フローチャートの実行前に、予めティーチングペンダント等を用いてロボット3に対するティーチングが行われ、上位コントローラ7に当該ティーチングに対応する位置指令が保存されているものとする。
【0073】
ステップS110では、ロボットコントローラ5Aは、上位コントローラ7からの位置指令に基づいて各モータMに対して位置制御を実行し、ロボット3を動作させる位置プレイバックを実行する。
【0074】
ステップS120では、ロボットコントローラ5Aは、トルク指令保存部33により、位置プレイバック中に速度制御部27により生成されたトルク指令を時系列で保存する(トルクティーチング)。また、ロボットコントローラ5Aは、推定外乱保存部47により、位置プレイバック中に外乱オブザーバ45により推定した推定外乱を時系列で保存する。
【0075】
ステップS130では、ロボットコントローラ5Aは、電流制御部29により、上記ステップS120で保存したトルク指令を指令値とするトルク制御を各モータMに対して実行し、ロボット3を動作させるトルクプレイバックを実行する。
【0076】
ステップS140では、ロボットコントローラ5Aは、減算器49により、上記ステップS120で保存したトルクティーチング時の推定外乱と、実行中のトルクプレイバックにおいて外乱オブザーバ45により推定した推定外乱との外乱偏差を算出する。また、ロボットコントローラ5Aは、加算器53により、上記ステップS120で保存したトルク指令に算出した外乱偏差を加算することにより、トルク指令を補正する。電流制御部29は、当該補正されたトルク指令に基づいてトルク制御を実行する。
【0077】
ステップS150では、ロボットコントローラ5Aは、接触判定部55により、上記ステップS140で算出した外乱偏差が第2しきい値より大きいか否かを判定する。外乱偏差が第2しきい値以下である場合には(ステップS150:NO)、本フローを終了する。一方、外乱偏差が第2しきい値よりも大きい場合には(ステップS150:YES)、ステップS160に移る。
【0078】
ステップS160では、ロボットコントローラ5Aは、停止処理部57により、モータMへの電流の供給を停止すると共にブレーキBを作動させて、モータMを停止させる。その後、本フローを終了する。
【0079】
(2-3.第2実施形態による効果)
以上説明した第2実施形態のロボットシステム1では、ロボットコントローラ5Aは、トルク指令とエンコーダEの検出位置とに基づいて外乱を推定する外乱オブザーバ45と、位置制御部25等によりモータMの位置制御を実行する際に外乱オブザーバ45で推定した推定外乱を時系列で保存する推定外乱保存部47と、推定外乱保存部47により保存した推定外乱と、電流制御部29によりモータMのトルク制御を実行する際に外乱オブザーバ45で推定した推定外乱との外乱偏差に基づいて、トルク指令保存部33により保存したトルク指令を補正する加算器53と、を有し、電流制御部29は、加算器53により補正されたトルク指令に基づいてモータMのトルク制御を実行する。
【0080】
本実施形態によれば、トルクティーチング時の推定外乱とトルクプレイバック時の推定外乱との差分をとることで、例えば装置内の摩擦等のモデル化が難しい項を消去して、外乱を抽出できる。これにより、ロボットシステム1の系に新たに加わった外乱(トルクティーチング時にはなかったがトルクプレイバック時に新たに加わった外乱)を確認することが可能となり、当該外乱に応じたトルク制御を実行することができる。その結果、トルクプレイバック時に到達する位置と位置プレイバック時に到達する位置のずれを低減できる。
【0081】
また、本実施形態では特に、ロボットコントローラ5Aは、外乱偏差と第2しきい値とを比較し、外乱偏差が第2しきい値よりも大きい場合にモータMを停止させる停止処理部57を有する。
【0082】
これにより、トルクプレイバック時に新たに加わった外乱が大きい場合(ロボット3が人や物と接触した場合等)に直ちに動作を停止させることができるので、ロボット3と協働する人の安全を確保できると共に、周囲の物の破損等を防止できる。
【0083】
なお、以上説明した第2実施形態において、トルクティーチング時のトルク指令及び推定外乱の保存に加えて、前述の第1実施形態のように検出位置を保存しておき、当該保存した検出位置とトルクプレイバック時の検出位置との位置偏差から、ロボット3に外乱が加わったか否かを併せて判定してもよい。
【0084】
<3.変形例>
以上、添付図面を参照しながら第1及び第2実施形態について詳細に説明した。しかしながら、特許請求の範囲に記載された技術的思想の範囲は、ここで説明した各実施形態に限定されるものではない。本実施形態の属する技術の分野における通常の知識を有する者であれば、技術的思想の範囲内において、様々な変更や修正、組み合わせなどを行うことに想到できることは明らかである。従って、これらの変更や修正、組み合わせなどが行われた後の技術も、当然に技術的思想の範囲に属するものである。
【0085】
(3-1.一部の軸に対してトルク制御を実行する場合)
以上の実施形態では、6軸ロボットであるロボット3の全ての関節のモータMに対してトルクティーチング及びトルクプレイバックを行う場合について説明したが、これに限定されるものではなく、一部の関節のモータMに対してのみトルクティーチング及びトルクプレイバックを実行してもよい。
【0086】
図16図18に、ロボット3が実行するワークWの移送作業の一例を示す。まず、図16に示すように、ロボット3は、移送元のテーブル59に載置されたワークWをハンド9により把持し、例えばアクチュエータAc2~Ac6の駆動によりハンド9を上昇させて、ワークWをテーブル59から持ち上げる。次に、図17に示すように、ロボット3は、例えばアクチュエータAc1の駆動により旋回部13及びアーム15を旋回させて、ワークWを移送元のテーブル59の近傍から移送先のテーブル61の近傍まで移動させる。その後、図18に示すように、ロボット3は、例えばアクチュエータAc2~Ac6の駆動によりハンド9を下降させて、ワークWをテーブル61に載置する。なお、テーブル59,61は、例えばワークWを搬送するコンベア等でもよい。
【0087】
このようなワークWの移送作業においては、図17に示す旋回動作においてアーム15の手先が大きく移動するため、人との接触が生じやすい。一方、図16図18に示す上下動作においては、アーム15の手先の移動は小さいため、人との接触は生じにくい。そこで、アクチュエータAc1のモータMに対してのみトルク制御(トルクティーチング及びトルクプレイバック)を実行し、その他のアクチュエータAc2~Ac6のモータMに対しては位置制御を実行してもよい。
【0088】
具体的には、位置プレイバックによりロボット3が図17に示す旋回動作を行う際に、トルク指令保存部33によりアクチュエータAc1のモータMに対するトルク指令を時系列で保存する(トルクティーチング)。そして、トルクプレイバックによりロボット3が図17に示す旋回動作を行う際に、電流制御部29は、トルク指令保存部33により保存したトルク指令に基づいてアクチュエータAc1のモータMのトルク制御を実行する。その際、その他のアクチュエータAc2~Ac6のモータMに対しては、位置制御部25等により位置指令に基づく位置制御が実行される。なお、ロボット3が図16図18に示す上下動作を行う際には、全アクチュエータAc1~Ac6のモータMに対して位置制御が実行される。
【0089】
これにより、例えばハンド9を旋回させてワークWを大きく移動させる動作等、人や物との接触を招きやすい動作に対応する関節のモータMに対してはトルク制御を実行することにより安全を確保する一方で、例えばハンド9をワークWに遠近させる動作等、人や物との接触を招きにくいその他の動作に対応する関節のモータMに対しては位置制御を実行することにより、ロボット3による作業の位置精度を向上できる。このようにすることで、安全性と作業精度を両立できる。
【0090】
なお、上記は一例であり、アクチュエータAc1に代えて又は加えて、それ以外の他のアクチュエータのモータM(1台又は複数台でもよい)に対してトルク制御を実行してもよい。また、ロボット3がワークWの移送作業以外の作業を行う場合に適用してもよい。
【0091】
(3-2.トルク制御から位置制御に切り替える場合)
前述のように、位置制御を実行した際に保存したトルク指令を指令値としたトルク制御を実行することにより、ロボット3に位置制御時と異なる外乱が加わらない場合には、位置制御とほぼ同等の位置へ移動させることが可能である。しかしながら、位置制御を行っている訳ではないため、何らかの外乱の影響により位置ずれが生じる場合がある。そこで、第3しきい値を設けて、トルク制御により生じた位置偏差が第3しきい値より大きい場合には位置ずれが許容範囲外であると見なして、トルク制御を位置制御に切り替えてもよい。
【0092】
図19に、本変形例のロボットコントローラ5Bの機能構成の一例を示す。なお、ここではトルクプレイバック時のみ説明し、トルクティーチング時の機能構成は前述の第1実施形態と同様であるため説明を省略する。
【0093】
図19に示すように、ロボットコントローラ5Bは、前述の図3に示すロボットコントローラ5の構成に加えて、制御切替部63と、スイッチ部65と有する。制御切替部63は、トルクプレイバック時にはスイッチ部65を介してトルク指令保存部33と電流制御部29とを接続する。これにより、電流制御部29はトルク指令保存部33に保存されたトルク指令に基づくトルク制御を実行する。また、制御切替部63は、トルクプレイバック中の所定のタイミングで、減算器39から出力される位置偏差と第3しきい値とを比較する。そして、位置偏差が第3しきい値以下である場合には、位置ずれが許容範囲内であると見なして、トルク制御を維持する。一方、位置偏差が第3しきい値より大きい場合には、位置ずれが許容範囲外であると見なして、スイッチ部65をトルク指令保存部33側から速度制御部27側に切り替える。これにより、トルク制御が位置制御部25等による位置制御に切り替えられる。
【0094】
なお、上記「所定のタイミング」とは、一定周期のタイミングでもよいし、例えばトルク制御を終了するタイミング等でもよい。例えば、ロボット3が前述の図16図18に示すワークWの移送作業を行う場合には、図17に示す旋回動作が終了するタイミングとしてもよい。すなわち、このようなワークWの移送作業の場合には、図17に示す旋回動作において何らかの外乱の影響によりアーム15の手先に位置ずれが生じる可能性がある。そこで旋回動作の終了タイミングにおいて、制御切替部63により位置偏差と第3しきい値とを比較し、位置偏差が第3しきい値以下である場合には位置ずれが許容範囲内であると見なして、次の図18に示す下降動作に移行する。一方、位置偏差が第3しきい値より大きい場合には、位置ずれが許容範囲外であると見なして、図18に示す下降動作に移行する前にトルク制御を位置制御に切り替える。これにより、位置指令に基づいてアーム15の手先の位置ずれを補正することができる。そして、位置ずれを解消した後に、図18に示す下降動作に移行する。
【0095】
次に、図20を参照しつつ、ロボットコントローラ5Bによる制御内容の一例について説明する。なお、ここではロボット3が前述の図16図18に示すワークWの移送作業を行う場合について説明する。また、本フローチャートの実行前に、予めティーチングペンダント等を用いてロボット3に対するワークWの移送作業のティーチングが行われ、ロボット3が図17に示す旋回動作を行う際にトルク指令保存部33によりアクチュエータAc1のモータMに対するトルク指令が時系列で保存されているものとする(トルクティーチング)。
【0096】
ステップS210では、ロボットコントローラ5Bは、移送元のテーブル59に載置されたワークWをハンド9により把持し、例えばアクチュエータAc2~Ac6のモータMに対して位置制御を実行することによりハンド9を上昇させて、ワークWをテーブル59から持ち上げる。
【0097】
ステップS220では、ロボットコントローラ5Bは、トルク指令保存部33により保存したトルク指令に基づいてアクチュエータAc1のモータMに対してトルク制御を実行することにより(トルクプレイバック)、ワークWを移送元のテーブル59の近傍から移送先のテーブル61の近傍まで移動させる。この際、その他のアクチュエータAc2~Ac6のモータMに対しては、位置制御部25等により位置指令に基づく位置制御を実行する。
【0098】
ステップS230では、ロボットコントローラ5Bは、減算器39により、保存されたトルクティーチング時の検出位置と、実行中のトルクプレイバックにおいてエンコーダEにより検出された検出位置との位置偏差を算出する。
【0099】
ステップS240では、ロボットコントローラ5Bは、接触判定部41により、上記ステップS230で算出した位置偏差が第1しきい値より大きいか否かを判定する。位置偏差が第1しきい値よりも大きい場合には(ステップS240:YES)、ステップS250に移る。
【0100】
ステップS250では、ロボットコントローラ5Bは、停止処理部43により、モータMへの電流の供給を停止すると共にブレーキBを作動させて、モータMを停止させる。その後、本フローを終了する。
【0101】
一方、上記ステップS240において、位置偏差が第1しきい値以下である場合には(ステップS240:NO)、ステップS260に移る。
【0102】
ステップS260では、ロボットコントローラ5Bは、ワークWの移動動作が完了した否かを判定する。この判定は、例えばトルク指令保存部33に保存したトルク指令を全て払い出したか否か等により実行される。ワークWの移動動作が完了していない場合には(ステップS260:NO)、先のステップS220に戻り、同様の手順を繰り返す。一方、ワークWの移動動作が完了した場合には(ステップS260:YES)、ステップS270に移る。
【0103】
ステップS270では、ロボットコントローラ5Bは、制御切替部63により、上記ステップS230で算出した位置偏差が第3しきい値より大きいか否かを判定する。位置偏差が第3しきい値以下である場合には(ステップS270:NO)、後述のステップS290に移る。一方、位置偏差が第3しきい値よりも大きい場合には(ステップS270:YES)、ステップS280に移る。
【0104】
ステップS280では、ロボットコントローラ5Bは、制御切替部63により、スイッチ部65をトルク指令保存部33側から速度制御部27側に切り替えて、トルク制御を位置制御に切り替える。これにより、位置指令に基づいてアーム15の手先の位置ずれが補正される。
【0105】
ステップS290では、ロボットコントローラ5Bは、例えばアクチュエータAc2~Ac6のモータMに対して位置制御を実行することによりハンド9を下降させて、ワークWをテーブル61に載置する。その後、本フローを終了する。
【0106】
以上説明した変形例によれば、ロボットコントローラ5Bは、電流制御部29によるトルク制御の実行中の所定のタイミングで位置偏差と第3しきい値とを比較し、位置偏差が第3しきい値よりも大きい場合に、位置制御部25等による位置制御に切り替える制御切替部63を有する。
【0107】
これにより、トルクプレイバックにより位置ずれが生じた場合でも、トルク制御から位置制御へ切り替えることにより位置ずれを補正することができるので、トルクプレイバック実行後の位置精度を向上できる。
【0108】
(3-3.モード切替可能とする場合)
例えば、ロボット3の運転モードとして、位置プレイバックを実行する通常モードと、トルクプレイバックを実行する人協働モードとを設けておき、ユーザがそれらの運転モードを切り替え可能としてもよい。
【0109】
図21に、本変形例のロボットコントローラ5Cのモード切替に関わる部分の機能構成の一例を示す。図21に示すように、ロボットコントローラ5Cは、ロボット3の運転モードとして「通常モード」と「人協働モード」とを備えており、これらをユーザの選択操作に基づいて切り替えるモード切替部67を有する。通常モード(第1のモードの一例)は、トルク指令保存部33によりトルク指令を保存したモータMを含む全てのモータMに対し、位置指令に基づいて位置制御部25等により位置制御を実行するモードである。すなわち、ロボット3の全ての関節のモータMに対して位置制御(位置プレイバック)を実行するモードである。一方、人協働モード(第2のモードの一例)は、ロボット3の少なくとも一部の関節のモータMに対して、トルク指令保存部33により保存したトルク指令に基づいて電流制御部29によりトルク制御(トルクプレイバック)を実行するモードである。モード切替部67は、上位コントローラ7又は適宜の端末等から送信されたユーザの選択指令に基づいて運転モードを上記「通常モード」又は「人協働モード」のいずれかに切り替える。なお、ロボットコントローラ5Cの上記以外の機能は、前述のロボットコントローラ5等と同様であるので説明を省略する。
【0110】
本変形例によれば、ロボット3を人と協働させる場合には人協働モードで運転し、人と協働させない場合には通常モードで運転するというように、ユーザがロボット3の制御を運転環境に応じて選択することができる。したがって、ロボットシステム1の汎用性、柔軟性を高めることができる。
【0111】
(3-4.外力計測センサを設ける場合)
前述した各実施形態によれば、外力計測センサが不要な人協働ロボットを実現することが可能であるが、必要に応じて外力計測センサを適宜の箇所に設置してもよい。
【0112】
図22に、本変形例のロボット3Aの構成の一例を示す。図22に示すように、ロボット3Aは、所定の作業を行うためのエンドエフェクタ69と、エンドエフェクタ69に作用する外力を計測する外力計測センサ71とを有する。エンドエフェクタ69は特に限定されるものではないが、例えば塗装、溶接、ボルト締め、機械加工(切削や研磨等)等の作業を行うためのツールである。外力計測センサ71は、例えば6軸力センサ等である。
【0113】
図23に、本変形例のロボットコントローラ5Dの指令補正に関わる部分の機能構成の一例を示す。図23に示すように、ロボットコントローラ5Dは、外力計測センサ71で計測した外力に基づいて、速度制御部27により生成されるトルク指令を補正する指令補正部73を有する。なお、上位コントローラ7から入力される位置指令等、トルク指令以外の指令を補正してもよい。なお、ロボットコントローラ5Dの上記以外の機能は、前述のロボットコントローラ5等と同様であるので説明を省略する。
【0114】
本変形例によれば、外力計測センサ71の検出結果に基づいてトルク指令を補正することにより、エンドエフェクタ69による作業の精度を確保しつつ、人との協働運転が可能なロボットシステム1を実現できる。特に、例えば切削や研磨等、エンドエフェクタ69をワークに押し付けて行う作業を行う場合に好適である。
【0115】
(3-5.その他)
以上では、トルクティーチングやトルクプレイバックを、例えば垂直多関節型、水平多関節型、パラレルリンク型等の汎用ロボットとロボットコントローラを有するロボットシステムに適用した場合について説明したが、適用対象はこれに限定されるものではない。例えば、XYZθ方向のうち少なくとも1方向に移動可能なアクチュエータを備えた特定の作業専用に設計された専用作業機等と、これを制御するコントローラを有する作業機システムに適用してもよい。さらに、回転型モータやリニアモータと、これを制御するコントローラを有するサーボシステムに適用してもよい。
【0116】
<4.ロボットコントローラのハードウェア構成例>
次に、図23を参照しつつ、上記で説明したロボットコントローラ5(5A~5Cを含む。以下同様)のハードウェア構成例について説明する。なお、図23中では、ロボットコントローラ5のモータMに駆動電力を給電する機能に係る構成を適宜省略して図示している。また、上位コントローラ7を同様の構成としてもよい。
【0117】
図23に示すように、ロボットコントローラ5は、例えば、CPU901と、ROM903と、RAM905と、ASIC又はFPGA等の特定の用途向けに構築された専用集積回路907と、入力装置913と、出力装置915と、記録装置917と、ドライブ919と、接続ポート921と、通信装置923とを有する。これらの構成は、バス909や入出力インターフェース911を介し相互に信号を伝達可能に接続されている。
【0118】
プログラムは、例えば、ROM903やRAM905、ハードディスク等の記録装置917等に記録しておくことができる。
【0119】
また、プログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD・MOディスク・DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体925に、一時的又は永続的に記録しておくこともできる。このような記録媒体925は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体925に記録されたプログラムは、ドライブ919により読み出されて、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
【0120】
また、プログラムは、例えば、ダウンロードサイト・他のコンピュータ・他の記録装置等(図示せず)に記録しておくこともできる。この場合、プログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置923がこのプログラムを受信する。そして、通信装置923が受信したプログラムは、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
【0121】
また、プログラムは、例えば、適宜の外部接続機器927に記録しておくこともできる。この場合、プログラムは、適宜の接続ポート921を介し転送され、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
【0122】
そして、CPU901が、上記記録装置917に記録されたプログラムに従い各種の処理を実行することにより、上記の位置制御部25、速度制御部27、電流制御部29、速度推定部31、トルク指令保存部33及び検出位置保存部35等による処理が実現される。この際、CPU901は、例えば、上記記録装置917からプログラムを直接読み出して実行してもよいし、RAM905に一旦ロードした上で実行してもよい。更にCPU901は、例えば、プログラムを通信装置923やドライブ919、接続ポート921を介し受信する場合、受信したプログラムを記録装置917に記録せずに直接実行してもよい。
【0123】
また、CPU901は、必要に応じて、例えばマウス・キーボード・マイク(図示せず)等の入力装置913から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0124】
そして、CPU901は、上記の処理を実行した結果を、例えば表示装置や音声出力装置等の出力装置915から出力してもよく、さらにCPU901は、必要に応じてこの処理結果を通信装置923や接続ポート921を介し送信してもよく、上記記録装置917や記録媒体925に記録させてもよい。
【0125】
なお、以上の説明において、「垂直」「平行」「平面」等の記載がある場合には、当該記載は厳密な意味ではない。すなわち、それら「垂直」「平行」「平面」とは、設計上、製造上の公差、誤差が許容され、「実質的に垂直」「実質的に平行」「実質的に平面」という意味である。
【0126】
また、以上の説明において、外観上の寸法や大きさが「同一」「等しい」「異なる」等の記載がある場合は、当該記載は厳密な意味ではない。すなわち、それら「同一」「等しい」「異なる」とは、設計上、製造上の公差、誤差が許容され、「実質的に同一」「実質的に等しい」「実質的に異なる」という意味である。
【0127】
但し、例えばしきい値(図4図15図20のフローチャート参照)や基準値等、所定の判定基準となる値あるいは区切りとなる値の記載がある場合は、それらに対しての「同一」「等しい」「異なる」等は、上記とは異なり、厳密な意味である。
【符号の説明】
【0128】
1 ロボットシステム
3 ロボット
3A ロボット
5 ロボットコントローラ(コントローラ)
5A ロボットコントローラ(コントローラ)
5B ロボットコントローラ(コントローラ)
5C ロボットコントローラ(コントローラ)
9 ハンド(エンドエフェクタ)
25 位置制御部(第1制御部)
27 速度制御部(第1制御部)
29 電流制御部(第1制御部、第2制御部)
33 トルク指令保存部
35 検出位置保存部
41 接触判定部
43 停止処理部(第1停止処理部)
45 外乱オブザーバ(外乱推定部)
47 外乱推定保存部
53 加算器(トルク指令補正部)
57 停止処理部(第2停止処理部)
63 制御切替部
67 モード切替部
69 エンドエフェクタ
71 外力計測センサ
73 指令補正部
E エンコーダ
M モータ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24