(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】ロボットの制御方法及びロボットシステム
(51)【国際特許分類】
B25J 9/22 20060101AFI20240730BHJP
G05B 19/42 20060101ALI20240730BHJP
【FI】
B25J9/22 Z
G05B19/42 K
(21)【出願番号】P 2020047310
(22)【出願日】2020-03-18
【審査請求日】2023-02-17
(73)【特許権者】
【識別番号】000002369
【氏名又は名称】セイコーエプソン株式会社
(74)【代理人】
【識別番号】100179475
【氏名又は名称】仲井 智至
(74)【代理人】
【識別番号】100216253
【氏名又は名称】松岡 宏紀
(74)【代理人】
【識別番号】100225901
【氏名又は名称】今村 真之
(72)【発明者】
【氏名】安達 大稀
(72)【発明者】
【氏名】竹内 馨
(72)【発明者】
【氏名】木下 敬文
【審査官】神山 貴行
(56)【参考文献】
【文献】特開2019-209386(JP,A)
【文献】特開2017-074669(JP,A)
【文献】特開平06-250728(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
G05B 19/18-19/416
G05B 19/42-19/46
(57)【特許請求の範囲】
【請求項1】
マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸によって検出する力検出器を備えたロボットの制御方法であって、
前記力検出器によって前記外力の方向を検出し、
前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を
、前記ロボットが配置される床面に対して設定されるワールド座標系における最大の前記外力の成分を有する検出軸及び2番目の前記外力の成分を有する検出軸により定義される平面に沿う2自由度に制限する
ことを含むロボットの制御方法。
【請求項2】
請求項
1に記載のロボットの制御方法であって、前記外力の方向ベクトル、及び、前記3つの検出軸のうち最大の前記外力の成分を有する検出軸の単位ベクトルの外積と、前記3つの検出軸のうち最小の前記外力の成分を有する検出軸と、のなす角が、第2値より小さい場合において、前記ツールセンターポイントの運動を前記2自由度に制限することを含むロボットの制御方法。
【請求項3】
請求項
1に記載のロボットの制御方法であって、前記3つの検出軸における前記外力の各成分の大きさのうち、最大の値が2番目に大きな値と第2定数との積より小さく、且つ、2番目に大きな値が最小の値と第3定数との積より大きい場合において、前記ツールセンターポイントの運動を前記2自由度に制限することを含むロボットの制御方法。
【請求項4】
マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸によって検出する力検出器を備えるロボットと、
前記力検出器によって前記外力の方向を検出し、前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を
、前記ロボットが配置される床面に対して設定されるワールド座標系における最大の前記外力の成分を有する検出軸及び2番目の前記外力の成分を有する検出軸により定義される平面に沿う2自由度に制限する制御装置と、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの制御方法及びロボットシステムに関する。
【背景技術】
【0002】
従来、特許文献1に示すように、作業者がロボットに直接力を加えて教示するダイレクト教示において、ロボットに並進移動、または回転移動させるかの移動方法の設定を切り替える技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に開示されるダイレクト教示では、移動方法の設定を切り替えるためには、スイッチのような操作部に対する操作が必要となるので、作業が煩雑になる問題があった。
【課題を解決するための手段】
【0005】
一態様は、マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸において検出する力検出器を備えるロボットの制御方法であって、前記力検出器によって前記外力の方向を検出し、前記外力の方向に基づいて、前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を1自由度に制限することを含むロボットの制御方法である。
【0006】
他の一態様は、マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸によって検出する力検出器を備えたロボットの制御方法であって、前記力検出器によって前記外力の方向を検出し、前記外力の方向に基づいて、前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を2自由度に制限することを含むロボットの制御方法である。
【0007】
他の一態様は、マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸において検出する力検出器を備えるロボットと、前記力検出器によって前記外力の方向を検出し、前記外力の方向に基づいて、前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を1自由度に制限する制御装置と、を備えるロボットシステムである。
【0008】
他の一態様は、マニピュレーター及び前記マニピュレーターに作用する外力を互いに直交する3つの検出軸によって検出する力検出器を備えるロボットと、前記力検出器によって前記外力の方向を検出し、前記外力の方向に基づいて、前記外力に応じた前記マニピュレーターに設定されるツールセンターポイントの運動を2自由度に制限する制御装置と、を備えるロボットシステムである。
【図面の簡単な説明】
【0009】
【
図1】ロボットシステムの概略構成を説明する斜視図。
【
図5】ベクトルを使って1自由度制限を判断する一例を説明する図。
【
図6】力成分の割合を使って1自由度制限を判断する一例を説明する図。
【
図7】ベクトルを使って2自由度制限を判断する一例を説明する図。
【
図8】力成分の割合を使って2自由度制限を判断する一例を説明する図。
【
図11】ロボットシステムの他の実施形態の概略構成を説明する斜視図。
【
図12】他の実施形態において動作制限方向を決定するフローチャート。
【
図13】他の実施形態において動作制限方向を決定するフローチャート。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら実施形態を説明する。図面において、同一又は類似の要素には同一又は類似の符号がそれぞれ付され、重複する説明は省略される。
【0011】
図1に示すように、本実施形態に係るロボットシステム100は、例えば、ロボット1、制御装置40及び教示装置45を備える。ロボット1は、マニピュレーター10、マニピュレーター10を支持するベース11、エンドエフェクター20及び力検出器30を備える。ロボット1として、例えば、教示装置45の教示により各種作業が可能な汎用ロボットが採用され得る。
【0012】
マニピュレーター10は、例えば複数の相互連結されたリンク及び関節を有することにより複数自由度で運動するロボティックアームである。
図1に示す例において、マニピュレーター10は、6つの関節J1~J6を備える6軸アームである。
図1に示す例において、関節J2,J3,J5は曲げ関節であり、関節J1,J4,J6はねじり関節である。エンドエフェクター20は、例えば、スクリュードライバー、グリッパー、グラインダー等のツールである。エンドエフェクター20は、例えば、ねじ締め、把持、加工等の種々の作業を行う。エンドエフェクター20は、マニピュレーター10の先端部において、メカニカルインターフェイスを介して関節J6に装着される。マニピュレーター10は、制御装置40に駆動されることにより、エンドエフェクター20の位置及び姿勢を決定する。
【0013】
マニピュレーター10は、例えば、先端近傍の所定位置において、エンドエフェクター20の位置の基準であるツールセンターポイント(TCP)を設定される。TCPは任意に設定可能であり、例えば、関節J6の回転軸上に設定される。エンドエフェクター20としてグリッパーが使用される場合には、グリッパーの中心をTCPとして設定可能である。なお、本実施形態において、マニピュレーター10は、6自由度を有するが、例示である。マニピュレーター10は、TCPの運動を3自由度以上で実現可能なロボットであれば、どのような関節機構を有してもよい。ベース11は、マニピュレーター10の第1リンク、即ち、最もベース11に近い1つのリンクを位置決めする。
【0014】
力検出器30は、例えばエンドエフェクター20を介して、マニピュレーター10に作用する外力を互いに直交する3つの検出軸において検出する力覚センサーである。より詳細には、力検出器30は、固有の3次元直交座標系である力検出器座標系において、TCPに作用する3つの検出軸の力及び3つの検出軸回りのトルクを計測する。
図1に示す例において、力検出器30はマニピュレーター10の先端に取り付けられているが、ロボット1の他の箇所に取り付けられてもよい。
【0015】
図2に示すように、力検出器30は、一例として、ケース31と、ケース31に接続される基板収容部材31eと、基板収容部材31eに接続される接続部材31dと、ケース31内に収容される1つ以上のセンサーデバイス32とを有する。ケース31は、例えば、上面として円形の第1取付面31a、底面として円形の第2取付面31b、及び、上面と底面を繋ぐ円筒状の側壁部31cにより円柱形を成す。これらは一体型の構造をとってもよい。例えば、第2取付面31bがマニピュレーター10の先端に取り付けられ、エンドエフェクター20が第1取付面31aに取り付けられる。力覚センサーの形状は限定されず、直方体や他角柱であってもよい。
【0016】
第1取付面31a、第2取付面31b、側壁部31c及び接続部材31dの構成材料は、特に限定されないが、例えば、アルミニウム、ステンレス鋼などの金属材料、セラミックス等が挙げられる。また、これらはすべて同一または同種の材料で構成されてもよいし、互いに異なる材料で構成されてもよい。
【0017】
センサーデバイス32は、1又は複数の素子により、x軸、y軸及びz軸の3つの検出軸のそれぞれに沿う方向の並進力成分と、3つの検出軸回りの力のモーメント(トルク)を検出する。センサーデバイス32は、例えば、水晶圧電方式である。水晶圧電方式を採用することにより、高感度、広いダイナミックレンジ、高い剛性等において優れた特性を有する力検出器30が実現される。
【0018】
図1に示すxyz座標系は、ロボット1が配置される床面に対して設定されるワールド座標系である。ワールド座標系は、水平面に沿って互いに直交するx軸及びy軸と、鉛直上向きを正方向とするz軸とによって規定される3次元の直交座標系である。z軸における負の方向は概ね重力方向と一致する。x軸回りの回転角をRxで表し、y軸回りの回転角をRyで表し、z軸回りの回転角をRzで表す。x,y,z軸の座標により3次元空間における任意の位置を表現でき、回転角Rx,Ry,Rzにより3次元空間における任意の姿勢を表現できる。エンドエフェクター20、マニピュレーター10、ベース11等の位置及び姿勢は、ワールド座標系において定義され得る。以下において「位置」は、ポーズ、即ち位置及び姿勢を意味する場合がある。同様に、以下において「力」は、負荷、即ち力及びトルクを意味する場合がある。制御装置40は、マニピュレーター10を駆動することによってワールド座標系におけるTCPの位置を制御する。
【0019】
制御装置40は、例えば、力検出器30によって、マニピュレーター10に作用する外力の方向を検出し、外力の方向に基づいて、外力に応じたTCPの運動を1自由度に制限する。例えば、ワールド座標系のx軸に沿う外力が人によってTCPに作用する場合、制御装置40は、ワールド座標系のx軸のみに沿ってTCPが運動するようにマニピュレーター10を制御する。
【0020】
制御装置40は、外力の方向に基づいて、外力に応じたTCPの運動を2自由度に制限してもよい。例えば、ワールド座標系のx軸及びy軸に平行なxy平面に沿う外力が人によってTCPに作用する場合、制御装置40は、xy平面に沿ってTCPが運動するようにマニピュレーター10を制御する。或いは、制御装置40は、TCPの位置を変化させずに姿勢のみを変化させるようにマニピュレーター10を制御してもよい。
【0021】
図3に示すように、制御装置40は、コンピューターシステムを構成するプロセッサー40a及びメモリー40bを備える。制御装置40は、例えば汎用のコンピューターによって構成可能である。プロセッサー40aは、制御プログラムに応じた指令を実行することによりロボット1を制御する。プロセッサー40aは、例えば中央演算処理装置(CPU)等の処理回路を有する。メモリー40bは、ロボット1の制御に必要なプログラムや各種データ等を記憶する、コンピューターにより読み取り可能な記憶媒体である。メモリー40bは、例えばランダムアクセスメモリー(RAM)、リードオンリーメモリー(ROM)等である。制御装置40の構成要素の一部又は全部は、ロボット1の筐体の内側に配置されてもよい。
【0022】
図1に示すように、制御装置40は、通信リンクを介してロボット1及び教示装置45とそれぞれ通信する。通信リンクは、有線、無線のいずれであってもよく、有線及び無線の組み合わせであってもよい。制御装置40は、エンドエフェクター20を制御し得る。例えば、エンドエフェクター20がグリッパーである場合、制御装置40は、エンドエフェクター20を駆動することにより物体の把持を行うことができる。また、制御装置40は、力検出器30が取得した値に基づいて、TCPに加えられている力を取得する。
【0023】
制御装置40は、複数のプロセッサーにより構成されてもよい。即ち、
図3に示す例において、制御装置40は、ネットワーク450を介して制御装置40に接続されたパーソナルコンピューター(PC)400,410と、サービスサーバーであるクラウド500と共に、ロボット1を制御する制御装置を構成可能である。PC400は、プロセッサー400a及びメモリー400bを備え、PC410は、プロセッサー410a及びメモリー410bを備える。クラウド500は、プロセッサー500a及びメモリー500bを備える。制御装置40は、プロセッサー400a,410a,500a及びメモリー400b,410b,500b等の他の装置のハードウェア資源を利用して、ロボット1を制御する制御装置を実現してもよい。
【0024】
教示装置45は、制御装置40を介してロボット1にプログラムを教示するコンピューターである。教示装置45は、教示ペンダント等の専用のコンピューターであってもよく、ロボット1を教示するためのプログラムがインストールされた汎用のコンピューターであってもよい。教示装置45は、制御装置40と別個の筐体を備えてもよく、制御装置40とハードウェア資源を共有してもよい。
【0025】
図4に示すように、マニピュレーター10の関節J1~J6は、アクチュエーターとしてのモーターM1~M6と、角度センサーとしてのエンコーダーE1~E6とをそれぞれ備える。モーターM1~M6は、制御装置40の制御によりそれぞれ駆動され、関節J1~J6をそれぞれ回転させる。エンコーダーE1~E6は、モーターM1~M6の回転角を検出し、制御装置40に出力する。
【0026】
図4に示すように、制御装置40は、力制御部41と、位置制御部42と、指令統合部43とを論理構造として有する。力制御部41、位置制御部42及び指令統合部43は、制御装置40が予めインストールされた制御プログラムを実行することにより実現される。力制御部41、位置制御部42及び指令統合部43は、それぞれ複数の処理回路により構成されてもよく、互いに一体の処理回路により構成されてもよい。
【0027】
制御装置40は、予め記憶する対応関係に基づいて、モーターM1~M6の各回転角の組み合わせと、ワールド座標系におけるTCPの位置との間を双方向に変換する第1変換部U1を有する。例えば、第1変換部U1は、ワールド座標系における位置Sを、モーターM1~M6の各回転角Daに変換する。位置Sは、ワールド座標系を規定する6軸(x,y,z,Rx,Ry,Rz)における位置及び姿勢を表し得る。制御装置40がモーターM1~M6に出力する制御信号は、例えばパルス幅変調(PWM)された信号である。
【0028】
制御装置40は、ワールド座標系におけるTCPの位置S毎のセンサー座標系の姿勢を示す対応関係に基づいて、力検出器30により検出される信号をワールド座標系における力fSpに変換する第2変換部U2を有する。第2変換部U2は、力fSpの力成分と、TCPから力検出器30までの距離から、力fSpのトルク成分を算出してもよい。
【0029】
力制御部41は、目標力算出部41a、力検出部41b、動作制限決定部41c及び力制御補正量算出部41dを論理構造として有する。力制御部41は、TCPに作用する外力fSを所定の目標力fStに制御するための機能を有する。具体的には、力制御部41は、動作制限コマンドL1に沿って、外力fSを目標力fStにするように目標位置を補正する力制御補正量ΔSを算出し、指令統合部43に出力する。
【0030】
目標力算出部41aは、例えば教示装置45の教示に応じて制御装置40が記憶したコマンドC1に基づいて、目標力fStを算出する。目標力算出部41aは、ダイレクト教示をする場合は、作業者がマニピュレーター10の先端に取り付けられたエンドエフェクター20を把持し、エンドエフェクター20に力を加えるため、マニピュレーター10のTCPに加えられる力を0にする倣い制御を実行するための目標力fStを算出する。
【0031】
力検出部41bは、力検出器30によって、TCPに作用する外力fSを互いに直交する3つの検出軸において検出する。詳細には、力検出部41bは、第2変換部U2を介して力検出器30から取得される力fSpに対して、重力に起因する成分を除去する重力補償を施すことにより、重力の影響を有しない、TCPに作用する外力fSを検出する。力検出部41bの3つの検出軸は、第2変換部U2を介して、力検出器30の3つの検出軸と相互に変換可能である。つまり、力検出器30の検出軸を基準とするTCPに作用する外力fSと、力検出部41bの検出軸を基準とするTCPに作用する外力fSは互いに同様に取り扱うことができる。力検出部41bは、力検出器30の検出軸として、ワールド座標系、ツール座標系、ローカル座標系等の任意の座標系を指定可能である。
【0032】
動作制限決定部41cは、力検出部41bにより検出される外力fSの方向に基づいて、マニピュレーター10の先端の外力fSに応じた運動の自由度を制限する。本実施形態において、マニピュレーター10の先端は、厳密にはTCPを意味する。動作制限決定部41cは、外力fSが第1条件を満たす場合において、外力fSに応じたTCPの運動を1自由度に制限する動作制限コマンドL1を生成する。第1条件は、外力fSに応じたTCPの運動が1自由度であると判定するための条件である。
【0033】
例えば、
図5に示すように、第1条件は、外力f
Sの方向ベクトルと、力検出器30の3つの検出軸のうち最大の外力f
Sの成分を有する検出軸とのなす角が、第1値θ
thより小さいことである。以下、教示装置45の教示に応じて制御装置40が記憶したコマンドC2により、運動の基準とする座標系としてワールド座標系が指定される場合を仮定する。
図5に示す例では、ワールド座標系における最大の外力f
Sの成分を有する検出軸がx軸であり、x軸の単位ベクトルがベクトルv1である。動作制限決定部41cは、外力f
sとx軸とのなす角が第1値θ
thより小さい場合において、外力f
Sに応じたTCPの運動方向をワールド座標系のx軸方向のみに制限する。第1値θ
thは、例えば教示装置45を用いて0[deg]から180[deg]の任意の値に設定され得る。コマンドC2により指定される座標系として、ツール座標系、ローカル座標系が採用可能である。
【0034】
或いは、
図6に示すように、第1条件として、力検出器30の3つの検出軸における外力f
Sの各成分の大きさのうち、最大の値が2番目に大きな値と第1定数k
1との積より大きいことを採用してもよい。この場合、ベクトルを用いた計算が不要である。動作制限決定部41cは、3つの検出軸における外力f
Sの各成分の大きさの分布に基づいて、外力f
Sに応じたTCPの運動の自由度を制限し得る。
図6に示す例において、外力f
Sの各成分のうち最大の値がx
1[N]、2番目に大きな値がy
1[N]である。この場合、動作制限決定部41cは、外力f
Sが(x
1/y
1)>k
1を満たす場合において、外力f
Sに応じたTCPの運動方向をx軸方向に制限する。
【0035】
更に、動作制限決定部41cは、第2条件を満たす場合において、外力fSに応じたTCPの運動を2自由度に制限する動作制限コマンドL1を生成し得る。第2条件は、外力fSに応じたTCPの運動が2自由度であると判定するための条件である。
【0036】
例えば、
図7に示すように、第2条件は、外力f
Sの方向ベクトル、及び、力検出器30の3つの検出軸のうち最大の外力f
Sの成分を有する検出軸の単位ベクトルの外積と、3つの検出軸のうち最小の外力f
Sの成分を有する検出軸の単位ベクトルと、のなす角が、第2値θ
thより小さいことである。
図7に示す例において、ワールド座標系における最大の外力f
Sの成分を有する検出軸がx軸であり、x軸の単位ベクトルがベクトルv1である。同様に、最小の外力f
Sの成分を有する検出軸がz軸であり、z軸の単位ベクトルがベクトルv2である。外力f
Sの方向ベクトル及びベクトルv1の外積がベクトルv3であるとき、動作制限決定部41cは、ベクトルv3とベクトルv2のなす角が第2値θ
thより小さい場合において、外力f
Sに応じたTCPの運動方向をワールド座標系のxy平面に沿う方向に制限する。第2値θ
thは、例えば教示装置45を用いて0[deg]から180[deg]の任意の値に設定され得る。第2値θ
thは、第1値θ
thと同一の値であってもよく、異なる値であってもよい。
【0037】
或いは、
図8に示すように、第2条件として、力検出器30の3つの検出軸における外力f
Sの各成分の大きさのうち、最大の値が2番目に大きな値と第2定数k
2との積より小さく、且つ、2番目に大きな値が最小の値と第3定数k
3との積より大きいことを採用してもよい。この場合、ベクトルを用いた計算が不要である。
図8に示す例において、外力f
Sの各成分のうち最大の値がx
2[N]、2番目に大きな値がy
2[N]、最小の値がz
2[N]である。この場合、動作制限決定部41cは、外力f
Sが(x
2/y
2)<k
2及び(y
2/z
2)>k
3を同時に満たす場合において、外力f
Sに応じたTCPの運動方向をxy平面に沿う方向に制限する。
【0038】
動作制限コマンドL1により1自由度に制限されるTCPの他の運動として、y、zのそれぞれの軸に沿う方向の並進運動、x、y、zのそれぞれの軸回りの回転運動の何れかの運動が挙げられる。また、動作制限コマンドL1により2自由度に制限されるTCPの他の運動として、yz平面に沿う運動、xz平面に沿う運動が挙げられる。その他、動作制限コマンドL1により制限されるTCPの運動として、姿勢変化のみの運動、位置及び姿勢を自由自在に変化させる運動等がある。TCPの運動の制限は、コマンドC2と動作制限コマンドL1の組み合わせにより変更される。
【0039】
動作制限決定部41cは、力検出部41bが検出した外力fSが所定の閾値を超える場合において動作制限コマンドL1を生成し、出力する。動作制限決定部41cは、外力fSが閾値以下になるまで、同様の動作制限コマンドL1の出力を継続する。
【0040】
力制御補正量算出部41dは、目標力fSt、外力fS及び動作制限コマンドL1から、外力fSを目標力fStにするように目標位置Stを補正する力制御補正量ΔSを算出する。力制御補正量ΔSは、TCPが機械的インピーダンスを受けた場合において、目標力fStと外力fSとの力偏差ΔfSを解消するために、TCPが位置Sから移動すべき量を意味する。力制御補正量算出部41dは、例えば、仮想の機械的インピーダンスをモーターM1~M6によって実現する能動インピーダンス制御により力制御補正量ΔSを算出する。例えば、動作制限コマンドL1によってTCPの運動がワールド座標系のx軸に沿う方向に制限される場合、ΔSのx軸成分以外の値は0になる。
【0041】
位置制御部42は、ワールド座標系におけるTCPの目標位置Stを算出する。位置制御部42は、ロボットシステム100においてダイレクト教示が行われる場合、TCPの現在位置をそのまま目標位置Stとして算出する。その他、位置制御部42は、例えば、教示装置45により生成される制御プログラムや対象物の位置を検出するセンサーの出力等を用いてTCPの目標位置Stを算出し得る。
【0042】
指令統合部43は、フィードバック制御部43a及び力制御補正量加算部43bを論理構造として有する。指令統合部43は、位置制御部42により算出された制御指令である目標位置Stと、力制御部41により算出された制御指令である力制御補正量ΔSとを統合する。指令統合部43は、統合した制御指令に応じた目標値を達成するように、ロボット1に操作量を出力する。
【0043】
力制御補正量加算部43bは、目標位置Stに力制御補正量ΔSを加算する。力制御補正量加算部43bは、マニピュレーター10のモーターM1~M6に適用される指令位置Sttを算出する。指令位置Sttは、ワールド座標系における最終的なTCPの目標値を意味する。第1変換部U1は、ワールド座標系における指令位置Sttを、モーターM1~M6の各回転角の目標値である目標角Dtに変換する。
【0044】
フィードバック制御部43aは、モーターM1~M6の実際の回転角Daを制御量として、目標角Dtに制御するフィードバック制御を行う。フィードバック制御部43aは、エンコーダーE1~E6の出力から回転角Daを取得する。フィードバック制御部43aは制御量Da、目標角Dtから操作量Dcを算出して、モーターM1~M6を制御する。
【0045】
図9及び
図10のフローチャートを参照して、ロボットシステム100におけるロボット1の制御方法として、制御装置40の処理の一例について説明する。
【0046】
先ず、ステップS41において、制御装置40は、例えば教示装置45からダイレクト教示を開始するコマンドを入力されることにより、ダイレクト教示モードに移行し、ダイレクト教示が開始される。制御装置40は、ダイレクト教示を開始するコマンドを、教示装置45以外から入力されてもよい。制御装置40は、例えばロボット1に取り付けられたスイッチが押されることにより、ダイレクト教示を開始するコマンドを入力されてもよい。
【0047】
ステップS42において、動作制限決定部41cは、力検出部41bにおいて検出される外力fS及び外力fSのトルクを、外力情報として取得する。即ち、外力情報は、力検出部41bの3つの検出軸の力及び3つの検出軸回りのトルクを含む。
【0048】
ステップS43において、動作制限決定部41cは、ステップS42で取得した外力fSのトルクの大きさが、所定の閾値より大きいか否かを判定する。動作制限決定部41cは、トルクの大きさが閾値より大きい場合、ステップS44に処理を進め、トルクの大きさが閾値以下の場合、ステップS52に処理を進める。
【0049】
ステップS44において、動作制限決定部41cは、ステップS42で取得した外力fSの各成分のトルクの大きさのうち、最大の値が、2番目に大きな値の定数倍より大きいか否か判定する。動作制限決定部41cは、定数倍より大きい場合は、ステップS45に処理を進め、定数倍以下の場合は、ステップS47に処理を進める。
【0050】
ステップS45において、動作制限決定部41cは、ステップS42で取得した外力fSの各成分のトルクの大きさのうち、最大の値を有する検出軸の回りにTCPの運動を制限する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。例えば、外力fSの各トルクのうち、x軸回りのトルクが2番目に大きなトルクの定数倍より大きい場合、動作制限決定部41cは、TCPの運動をx軸回りのみの1自由度に制限する。
【0051】
ステップS46において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS45で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS45の処理を繰り返す。
【0052】
ステップS47において、動作制限決定部41cは、ステップS42で取得した外力fSが所定の閾値以上か否かを判定する。動作制限決定部41cは、外力fSが閾値以上の場合、ステップS48に処理を進め、外力fSが閾値より小さい場合、ステップS50に処理を進める。
【0053】
ステップS48において、動作制限決定部41cは、TCPの6自由度の運動を許可する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。即ち、この場合、動作制限決定部41cは、外力fSに応じたTCPの運動を制限しない。
【0054】
ステップS49において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS48で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS48の処理を繰り返す。
【0055】
ステップS50において、動作制限決定部41cは、TCPの運動を姿勢のみの3自由度に制限する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。即ち、動作制限決定部41cは、TCPの3つの検出軸回りの姿勢が変化する運動を許可し、3つの検出軸における位置が変化する運動を禁止する。
【0056】
ステップS51において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS50で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS50の処理を繰り返す。
【0057】
ステップS52において、動作制限決定部41cは、ステップS42で取得した外力fSが、所定の閾値以上か否かを判定する。動作制限決定部41cは、外力fSが閾値以上の場合、ステップS53の処理に進め、外力fSが閾値より小さい場合、ステップS42に処理を戻す。
【0058】
ステップS53において、動作制限決定部41cは、ステップS42で取得した外力fSが、第1条件を満たすか否かを判定する。動作制限決定部41cは、外力fSが第1条件を満たす場合、ステップS54に処理を進め、外力fSが第1条件を満たさない場合、ステップS56に処理を進める。第1条件は、外力fSに応じたTCPの運動を1自由度に制限するかを判定するための条件である。
【0059】
ステップS54において、動作制限決定部41cは、外力fSに応じたTCPの運動を、最大の外力fSの成分を有する検出軸回りの1自由度に制限する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。動作制限決定部41cは、外力fSがx軸方向の力である場合、TCPの運動をx軸方向の1自由度に制限する動作制限コマンドL1を生成する。
【0060】
ステップS55において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS54で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS54の処理を繰り返す。
【0061】
ステップS56において、動作制限決定部41cは、ステップS42で取得した外力fSが、第2条件を満たすか否かを判定する。動作制限決定部41cは、外力fSが第2条件を満たす場合、ステップS57に処理を進め、外力fSが第2条件を満たさない場合、ステップS59に処理を進める。第2条件は、外力fSに応じたTCPの運動を2自由度に制限するかを判定するための条件である。
【0062】
ステップS57において、動作制限決定部41cは、外力fSに応じたTCPの運動を、最大の外力fSの成分を有する検出軸及び2番目の外力fSの成分を有する検出軸により定義される平面に沿う2自由度に制限する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。動作制限決定部41cは、外力fSがxy平面に沿う方向の力である場合、TCPの運動をxy平面の2自由度に制限する動作制限コマンドL1を生成する。
【0063】
ステップS58において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS57で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS57の処理を繰り返す。
【0064】
ステップS59において、TCPの運動を位置のみの3自由度に制限する動作制限コマンドL1を生成し、力制御補正量算出部41dに出力する。即ち、動作制限決定部41cは、TCPの3つの検出軸における位置が変化する運動を許可し、3つの検出軸回り姿勢が変化する運動を禁止する。
【0065】
ステップS60において、動作制限決定部41cは、力検出部41bにおいて検出された外力fSが所定の閾値より小さいか否かを判定する。動作制限決定部41cは、外力fSが閾値より小さい場合、ロボット1に作用される外力fSが低下したとして、ステップS59で生成された動作制限コマンドL1の出力を停止し、ステップS61に処理を進める。動作制限決定部41cは、外力fSが閾値以上である場合、ステップS59の処理を繰り返す。
【0066】
ステップS61において、動作制限決定部41cは、例えば教示装置45に対する作業者の操作に応じて、ダイレクト教示を終了するか否かを判定する。動作制限決定部41cは、ダイレクト教示を終了する場合、ステップS62に処理を進め、ダイレクト教示を終了しない場合、ステップS42に処理を戻す。このとき、動作制限コマンドL1の出力は停止しており、TCPは動作していない。即ち、TCPに対する位置制御のみが制御装置40により実行されている。
【0067】
ステップS62において、制御装置40は、例えば教示装置45からダイレクト教示を終了するコマンドを入力されることにより、ダイレクト教示モードを終了し、ダイレクト教示が終了される。なお、
図9及び
図10に示す一連の処理に使用される複数の定数は、任意に設定され得る。したがって、定数は、互いに同一の値に設定されてもよく、互いに異なる値に設定されてもよい。複数の閾値についても同様である。
【0068】
以上のように、ロボットシステム100によれば、作業者がダイレクト教示を行う場合、エンドエフェクター20に作用する外力fSに基づいて、動作制限決定部41cによって自動的に動作制限コマンドL1が生成される。これにより、例えば教示装置45を用いる、TCPの運動の制限を設定する作業者の操作が不要となり、ダイレクト教示に必要な時間が短縮される。従来のダイレクト教示では、例えばTCPをxy平面上に制限して動かし、続いてx軸に沿って動かすプログラムを、教示装置のGUI等で制限する自由度を作業者が選択しなければ生成できなかった。これに対して、ロボットシステム100によれば、エンドエフェクター20に加える外力fSが変更されることにより、自動的にTCPの運動の自由度が制限される。このように、ロボットシステム100によれば、ダイレクト教示における作業を簡単にすることができる。
【0069】
以上のように実施形態を説明したが、本発明はこれらの開示に限定されるものでない。各部の構成は、同様の機能を有する任意の構成に置換されてよく、また、本発明の技術的範囲内において、各実施形態における任意の構成が省略されたり追加されたりしてもよい。このように、これらの開示から当業者には様々な代替の実施形態が明らかになる。
【0070】
例えば、ロボット1は、6軸アームである1つのマニピュレーター10を備えるロボットに限らない。ロボット1が備えるマニピュレーター及びエンドエフェクターの数、マニピュレーターの自由度等は、任意に変更され得る。例えば、ロボット1は、直交ロボット、水平多関節ロボット、垂直多関節ロボット、双腕ロボット等であり得る。同様に、力検出器30の位置は、マニピュレーター10の先端に限るものでない。
【0071】
例えば、
図11に示すように、他の実施形態に係るロボットシステム101は、ロボット2と、制御装置40と、教示装置45と、を備える。ロボット2は、ベース21、マニピュレーター22、エンドエフェクター20及び力検出器300を備える水平多関節ロボットである。
図11に示す例において、力検出器300は、例えば直方体形状を有し、ベース21の下部に取り付けらる。
【0072】
マニピュレーター22は、第1リンク221及び第2リンク222を有するアームである。マニピュレーター22は、ワールド座標系のz軸に沿う軸をそれぞれ有する4つの関節J1~J4を有する。3つの関節J1,J2,J4は、それぞれ回転関節であり、関節J3は、直進関節である。即ち、マニピュレーター22の先端に相当するTCPは、4自由度を有する。ロボット2は、ロボット1の力検出器30と同様に、マニピュレーター22の先端に、マニピュレーター22に作用する外力f
Sを検出する力検出器を更に備え得る。ロボットシステム101の機能ブロックの構成は、
図4のブロック図から関節J5,J6を取り除いた構成と概略として同様であるため重複する説明を省略する。
【0073】
図12及び
図13のフローチャートにより、ロボットシステム101におけるロボット2の制御方法として、制御装置40の処理の一例について説明する。但し、
図12及び
図13のフローチャートにおける、ステップS71~S76,S77,S78,S79,S80~S89は、この順で、
図9及び
図10のフローチャートにおける、ステップS41~S46,S52,S48,S49,S53~S62に相当する。つまり、
図12及び
図13のフローチャートは、
図9及び
図10のフローチャートからステップS47,S50,S51を取り除いたものである。このため、
図12及び
図13のフローチャートの各ステップの詳しい説明は省略する。
【0074】
例えば、ステップS74において、動作制限決定部41cは、ステップS72で取得した外力fSの各成分のトルクの大きさのうち、最大の値が、2番目に大きな値の定数倍より大きいか否か判定する。TCPに作用する外力fSのトルクは、主としてワールド座標系におけるz軸回りのトルクであると考えられる。このため、ステップS75において生成される動作制限コマンドL1は、TCPをz軸回りの1自由度に制限するコマンドとなる。一方、ステップS78において動作制限決定部41cは、TCPの4自由度の運動を許可し、外力fSに応じたTCPの運動を制限しない。
【0075】
ロボット2が力覚センサーとして力検出器300のみ有する場合、外力f
Sのトルクの検出が困難であるため、主として
図13のステップS80~S87の処理が実行され得る。ステップS80及びS83における第1条件及び第2条件も、上述の実施形態と同様である。例えば、ロボットシステム101において、作業者がエンドエフェクター20にワールド座標系のx軸に沿う外力f
Sを加えた場合、TCPの運動は、ワールド座標系のx軸に沿う1自由度に制限される。即ち、外力f
Sに応じて、TCPは、ワールド座標系におけるx軸に沿って並進運動する。
【0076】
その他、上述の各構成を相互に応用した構成等、本発明は以上に記載しない様々な実施形態を含むことは勿論である。本発明の技術的範囲は、上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【0077】
1,2…ロボット、10,22…マニピュレーター、11,21…ベース、20…エンドエフェクター、30,300…力検出器、40…制御装置、41…力制御部、42…位置制御部、43…指令統合部、45…教示装置、100,101…ロボットシステム。