(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-17
(45)【発行日】2024-09-26
(54)【発明の名称】ロボットの制御装置、ロボットシステム、ロボット制御方法
(51)【国際特許分類】
B25J 19/06 20060101AFI20240918BHJP
【FI】
B25J19/06
(21)【出願番号】P 2022507154
(86)(22)【出願日】2021-03-05
(86)【国際出願番号】 JP2021008814
(87)【国際公開番号】W WO2021182356
(87)【国際公開日】2021-09-16
【審査請求日】2022-11-21
(31)【優先権主張番号】P 2020043420
(32)【優先日】2020-03-12
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】内藤 康広
【審査官】永井 友子
(56)【参考文献】
【文献】特開2020-032488(JP,A)
【文献】特開2010-228028(JP,A)
【文献】特開2017-077608(JP,A)
【文献】特開2005-342858(JP,A)
【文献】特開2016-132080(JP,A)
【文献】特開2003-025272(JP,A)
【文献】特開2016-064474(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 19/06
(57)【特許請求の範囲】
【請求項1】
複数の可動要素を有するロボットの制御装置であって、
前記複数の可動要素の少なくとも1つが移動することによって前記ロボットが動作しているときに前記可動要素に加えられた外力を取得する外力取得部と、
予め定めた第1の閾値を超えた前記外力が
1つの前記可動要素に加えられたという第1条件を満たすか否かを判定する第1条件判定部と、
前記
1つの可動要素が移動しているという第2条件を満たすか否かを判定する第2条件判定部と、
前記第1条件及び前記第2条件の双方が満たされたときは
、前記1つの可動要素の移動による前記ロボットの動作を停止する一方、前記第1条件が満たされる一方で前記第2条件が満たされていないときは
、前記1つの可動要素とは別の前記可動要素の移動による前記ロボットの動作を継続させる動作制御部と、を備える、制御装置。
【請求項2】
前記
1つの可動要素の移動速度を取得する速度取得部をさらに備え、
前記第2条件判定部は、前記移動速度が予め定めた第2の閾値を超えたときに、前記第2条件を満たすと判定する、請求項1に記載の制御装置。
【請求項3】
前記
1つの可動要素の移動方向を取得する移動方向取得部をさらに備え、
前記第1条件判定部は、前記移動方向とは反対の方向の前記外力が前記第1の閾値を超えたときに、前記第1条件を満たすと判定する、請求項1又は2に記載の制御装置。
【請求項4】
前記ロボットの運転モードに応じて前記第1の閾値を変更する閾値設定部をさらに備える、請求項1~3のいずれか1項に記載の制御装置。
【請求項5】
前記動作制御部は、前記ロボットの動作を停止させた後に該ロボットに退避動作を実行させる、請求項1~4のいずれか1項に記載の制御装置。
【請求項6】
前記第2条件判定部は、
前記第1条件判定部によって前記1つの可動要素について前記第1条件を満たすと判定された場合に、該1つの可動要素について前記第2条件を満たすか否かを判定する、請求項1~5のいずれか1項に記載の制御装置。
【請求項7】
前記可動要素は、前記ロボットの関節軸であり、
前記外力取得部は、前記外力として、
各々の前記関節軸に加えられた外力トルクを取得する、請求項1~6のいずれか1項に記載の制御装置。
【請求項8】
ロボットと、
前記ロボットを制御する、請求項1~7のいずれか1項に記載の制御装置と、を備える、ロボットシステム。
【請求項9】
前記可動要素に掛かる力を検出する力センサをさらに備え、
前記外力取得部は、前記力センサの検出データに基づいて前記外力を取得する、請求項8に記載のロボットシステム。
【請求項10】
複数の可動要素を有するロボットの制御方法であって、
前記複数の可動要素の少なくとも1つが移動することによって前記ロボットが動作しているときに前記可動要素に加えられた外力を取得し、
予め定めた第1の閾値を超えた前記外力が
1つの前記可動要素に加えられたという第1条件を満たすか否かを判定し、
前記
1つの可動要素が移動しているという第2条件を満たすか否かを判定し、
前記第1条件及び前記第2条件の双方が満たされたときは
、前記1つの可動要素の移動による前記ロボットの動作を停止する一方、前記第1条件が満たされる一方で前記第2条件が満たされていないときは
、前記1つの可動要素とは別の前記可動要素の移動による前記ロボットの動作を継続する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの制御装置、ロボットシステム、ロボット制御方法に関する。
【背景技術】
【0002】
周囲の物体と接触したときに動作を停止させるようにロボットを制御する制御装置が知られている(例えば、特許文献1)
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、ロボットの周囲の物体(例えば、作業員)の安全を確実に確保するとともに、ロボットの作業効率を維持する技術が求められている。
【課題を解決するための手段】
【0005】
本開示の一態様において、可動要素を有するロボットの制御装置は、ロボットが動作しているときに可動要素に加えられた外力を取得する外力取得部と、予め定めた第1の閾値を超えた外力が可動要素に加えられたという第1条件を満たすか否かを判定する第1条件判定部と、可動要素が移動しているという第2条件を満たすか否かを判定する第2条件判定部と、第1条件及び第2条件の双方が満たされたときはロボットの動作を停止する一方、第1条件及び第2条件の少なくとも一方が満たされていないときはロボットの動作を継続させる動作制御部とを備える。
【0006】
本開示の他の態様において、可動要素を有するロボットの制御方法は、ロボットが動作しているときに可動要素に加えられた外力を取得し、予め定めた第1の閾値を超えた外力が可動要素に加えられたという第1条件を満たすか否かを判定し、可動要素が移動しているという第2条件を満たすか否かを判定し、第1条件及び第2条件の双方が満たされたときはロボットの動作を停止する一方、第1条件及び第2条件の少なくとも一方が満たされていないときはロボットの動作を継続する。
【発明の効果】
【0007】
本開示によれば、第1条件及び第2条件の双方を満たした場合は、ロボットの動作を停止させて作業の安全性を確実に確保する一方、第1条件及び第2条件の少なくとも一方を満たさない場合は、ロボットの動作を継続させることで、作業の効率性が低下してしまうのを防止できる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係るロボットシステムの図である。
【
図2】
図1に示すロボットシステムのブロック図である。
【
図3】ロボット制御方法の一例を示すフローチャートである。
【
図4】ロボット制御方法の他の例を示すフローチャートである。
【
図5】他の実施形態に係るロボットシステムの図である。
【
図6】
図5に示すロボットシステムのブロック図である。
【
図7】さらに他の実施形態に係るロボットシステムの図である。
【
図8】
図7に示すロボットシステムのブロック図である。
【
図9】ロボット制御方法のさらに他の例を示すフローチャートである。
【
図10】
図9中のステップS32の一例を示すフローチャートである。
【
図11】
図9中のステップS34の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、
図1及び
図2を参照して、一実施形態に係るロボットシステム10について説明する。ロボットシステム10は、ロボット12と、該ロボット12を制御する制御装置50とを備える。
【0010】
本実施形態においては、ロボット12は、垂直多関節型ロボットであって、ロボットベース14、旋回胴16、下腕部18、上腕部20、手首部22、及びエンドエフェクタ24を有する。ロボットベース14は、ワークセルの床Aに固定されている。旋回胴16は、鉛直軸周りに旋回可能となるようにロボットベース14に設けられている。下腕部18は、旋回胴16に水平軸周りに回動可能に設けられている。上腕部20は、下腕部18の先端部に回動可能に設けられている。
【0011】
手首部22は、上腕部20の先端部に回動可能に設けられ、エンドエフェクタ24は、手首部22の先端部に着脱可能に取り付けられている。手首部22は、エンドエフェクタ24を、互いに直交する複数の軸周りに回動するように構成されてもよい。エンドエフェクタ24は、例えば、ロボットハンド、溶接トーチ、切削工具、レーザ加工ヘッド、又は塗料塗布器等であって、ワーク(図示せず)に対して所定の作業(ワークハンドリング、溶接、切削加工、レーザ加工、塗工等)を行う。
【0012】
ロボット12は、第1のサーボモータ26、第1の関節軸28、第2のサーボモータ30、第2の関節軸32、第3のサーボモータ34、第3の関節軸36、第4のサーボモータ38、及び第4の関節軸40をさらに有する。第1のサーボモータ26は、ロボットベース14に内蔵され、第1の関節軸28を鉛直軸周りに回動させる。第1の関節軸28は、旋回胴16に連結され、第1のサーボモータ26の回転力を旋回胴16に伝達させる。
【0013】
第2のサーボモータ30は、旋回胴16に設けられ、第2の関節軸32を水平軸周りに回動させる。第2の関節軸32は、下腕部18に連結され、第2のサーボモータ30の回転力を下腕部18に伝達させる。第3のサーボモータ34は、下腕部18に設けられ、第3の関節軸36を回動させる。第3の関節軸36は、上腕部20に連結され、第3のサーボモータ34の回転力を上腕部20に伝達させる。第4のサーボモータ38は、上腕部20に設けられ、第4の関節軸40を回動させる。第4の関節軸40は、手首部22に連結され、第4のサーボモータ38の回転力を手首部22に伝達させる。
【0014】
これら複数のサーボモータ26、30、34及び38は、制御装置50からの指令の下、関節軸28、32、36及び40をそれぞれ回動させ、これにより、旋回胴16、下腕部18、上腕部20、並びに、手首部22及びエンドエフェクタ24をそれぞれ回動させる。したがって、関節軸28、32、36及び40と、旋回胴16、下腕部18、上腕部20、手首部22及びエンドエフェクタ24とは、ロボット12の可動要素を構成する。
【0015】
本実施形態においては、関節軸28、32、36及び40に、複数の力センサ42、44、46及び48がそれぞれ設けられている。力センサ42、44、46及び48の各々は、トルクセンサである。具体的には、第1の力センサ42は、第1の関節軸28に掛かる力(具体的には、トルク)を検出し、第2の力センサ44は、第2の関節軸32に掛かる力(具体的には、トルク)を検出する。
【0016】
また、第3の力センサ46は、第3の関節軸36に掛かる力(具体的には、トルク)を検出し、第4の力センサ48は、第4の関節軸40に掛かる力(具体的には、トルク)を検出する。第1の力センサ42、第2の力センサ44、第3の力センサ46、及び第4の力センサ48は、検出した力(トルク)の検出データを、制御装置50にそれぞれ送信する。
【0017】
制御装置50は、プロセッサ52、メモリ54、及びI/Oインターフェース56を有するコンピュータである。プロセッサ52は、CPU又はGPU等を有し、バス58を介してメモリ54及びI/Oインターフェース56に通信可能に接続されている。プロセッサ52は、メモリ54及びI/Oインターフェース56と通信しつつ、後述する制御装置50の各種機能を実現するための演算を行う。
【0018】
メモリ54は、RAM又はROM等を有し、各種データを一時的又は恒久的に記憶する。メモリ54は、ロボット12に所定の作業を実行させるための作業プログラムWPを予め格納している。作業プログラムWPは、作業のためにエンドエフェクタ24を位置決めすべき教示点の位置データ、該教示点へエンドエフェクタ24を位置決めするための命令文、並びに、2つの教示点間の移動軌跡及び移動速度の情報を含むコンピュータプログラムである。この作業プログラムWPは、例えば、エンドエフェクタ24を教示点に順に位置決めする動作をロボット12に教示することによって、構築され得る。
【0019】
I/Oインターフェース56は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子等を有し、プロセッサ52の指令の下、外部機器とデータを無線又は有線で通信する。本実施形態においては、サーボモータ26、30、34及び38と、力センサ42、44、46及び48とは、I/Oインターフェース56に通信可能に接続されている。
【0020】
プロセッサ52は、メモリ54に格納された作業プログラムWPに従って、I/Oインターフェース56を介して各サーボモータ26、30、34及び38へ指令を送信し、ロボット12に所定の作業を実行させるべく該ロボット12(具体的には、可動要素)を動作させる。また、プロセッサ52は、ロボット12が動作しているときに力センサ42、44、46及び48が検出した検出データを、I/Oインターフェース56を介して取得し、メモリ54に記憶する。
【0021】
次に、
図3を参照して、制御装置50が実行するロボット制御フローの一例について説明する。
図3に示すフローは、プロセッサ52が、オペレータ、上位コントローラ、又はコンピュータプログラム(例えば、上述の作業プログラムWP)から、自動作業開始指令を受け付けたときに、開始される。
【0022】
ステップS1において、プロセッサ52は、ロボット12の動作を開始する。具体的には、プロセッサ52は、作業プログラムWPに従って各サーボモータ26、30、34及び38へ指令を送信し、ロボット12の可動要素によってエンドエフェクタ24を各教示点へ移動させつつ、該エンドエフェクタ24によってワークに対する作業を行う一連の動作を開始する。
【0023】
ステップS2において、プロセッサ52は、ロボット12の可動要素に加えられた外力の取得を開始する。具体的には、プロセッサ52は、第1の力センサ42、第2の力センサ44、第3の力センサ46、及び第4の力センサ48から検出データを連続的(例えば、周期的)に取得する。
【0024】
一方、プロセッサ52は、検出データを取得する毎に、ロボット12の質量と、該ロボット12が動作することよって生じる慣性力とに起因して第1の力センサ42、第2の力センサ44、第3の力センサ46、及び第4の力センサ48に作用する力(本稿では「内力」として言及する)をそれぞれ算出する。これら内力は、ロボット12の各可動要素の質量、ロボット12の姿勢、及びロボット12の各可動要素の移動速度を、既知の運動力学方程式に代入することによって、算出できる。
【0025】
そして、プロセッサ52は、第1の力センサ42の検出データ(すなわち、第1の関節軸28に掛かるトルク)から、該第1の力センサ42に作用する内力の成分を減算することによって、第1の関節軸28に加えられた外力トルクET1を算出する。同様に、プロセッサ52は、第2の力センサ44、第3の力センサ46、及び第4の力センサ48の検出データ(すなわち、第2の関節軸32、第3の関節軸36、及び第4の関節軸40に掛かるトルク)から、対応する内力の成分をそれぞれ減算することによって、第2の関節軸32、第3の関節軸36、及び第4の関節軸40に加えられた外力トルクET2、ET3、及びET4をそれぞれ算出する。
【0026】
このようにして、プロセッサ52は、力センサ42、44、46、48の検出データに基づいて、外力トルクET
n(n=1,2,3,4)を取得する。したがって、本実施形態においては、プロセッサ52は、ロボット12が動作しているときに可動要素(関節軸28、32、36、40)に加えられた外力(外力トルク)ET
nを取得する外力取得部60(
図2)として機能する。
【0027】
ステップS3において、プロセッサ52は、ロボット12の可動要素の移動情報の取得を開始する。具体的には、プロセッサ52は、移動情報として、第1の関節軸28の移動方向MD1及び移動速度MV1、第2の関節軸32の移動方向MD2及び移動速度MV2、第3の関節軸36の移動方向MD3及び移動速度MV3、並びに、第4の関節軸40の移動方向MD4及び移動速度MV4を取得する。
【0028】
一例として、サーボモータ26、30、34及び38(又は、関節軸28、32、36及び40)に、回転検出器(エンコーダ、又はホール素子等)がそれぞれ設けられる。これら回転検出器は、サーボモータ26、30、34及び38(又は、関節軸28、32、36及び40)の回転位置(又は回転角度)をそれぞれ検出し、位置フィードバックFBとして、制御装置50へ送信する。プロセッサ52は、回転検出器からの位置フィードバックFBに基づいて、移動方向MDn及び移動速度MVn(n=1,2,3,4)を取得できる。
【0029】
他の例として、プロセッサ52は、各サーボモータ26、30、34及び38へ送信する指令(位置指令、速度指令等)から、移動方向MD
n及び移動速度MV
nを取得してもよい。さらに他の例として、プロセッサ52は、作業プログラムWPを解析し、該作業プログラムWPに含まれる教示点の位置データ、命令文、移動軌跡又は移動速度等の情報から、移動方向MD
n及び移動速度MV
nを取得してもよい。このように、本実施形態においては、プロセッサ52は、可動要素(関節軸28、32、36、40)の移動方向MD
nを取得する移動方向取得部62(
図2)、及び、可動要素の移動速度MV
nを取得する速度取得部64として機能する。
【0030】
なお、本実施形態においては、移動方向MDnは、第nの関節軸28、32、36、40の回転方向を示し、移動速度MVnは、第nの関節軸28、32、36、40の回転速度(回転数)を示す。プロセッサ52は、このステップS3の開始後、上述のステップS2にて外力トルクETnを取得するのと同期して(具体的には、同時に)、移動情報(移動方向MDn及び移動速度MVn)を取得してもよい。
【0031】
ステップS4において、プロセッサ52は、第nの関節軸28、32、36、40を特定する番号「n」を、「1」にセットする。ステップS5において、プロセッサ52は、予め定めた閾値αn(第1の閾値)を超えた外力トルクETnが第nの関節軸28、32、36又は40に加えられたという第1条件を満たすか否かを判定する。
【0032】
ここで、本実施形態においては、プロセッサ52は、第nの関節軸28、32、36又は40の移動方向MDnとは反対の方向の外力トルクETnが閾値αnを超えたときに、第1条件を満たしたと判定する。以下、このステップS4の開始時点において、n=3にセットされていた場合について説明する。
【0033】
この場合、プロセッサ52は、直近に取得した、第3の関節軸36に加えられた外力トルクET3の方向が、該外力トルクET3と同期して取得された第3の関節軸36の移動方向MD3とは反対であり、且つ、外力トルクET3の大きさが閾値α3を超えたか否かを判定する。プロセッサ52は、外力トルクET3の方向が移動方向MD3とは反対であり、且つその大きさが閾値α3を超えた場合に、第3の関節軸36について第1条件を満たす(すなわち、YES)と判定し、ステップS6へ進む。
【0034】
一方、外力トルクET
3の大きさが閾値α
3よりも小さい場合、又は、外力トルクET
3が移動方向MD
3に作用している場合は、プロセッサ52は、第3の関節軸36について第1条件を満たしていない(すなわち、NO)と判定し、ステップS7へ進む。このように、本実施形態においては、プロセッサ52は、閾値α
nを超えた外力ET
nが可動要素(第nの関節軸28、32、36又は40)に加えられたという第1条件を満たすか否かを判定する第1条件判定部66(
図2)として機能する。
【0035】
ステップS6において、プロセッサ52は、第nの関節軸28、32、36又は40が移動しているという第2条件を満たすか否かを判定する。具体的には、プロセッサ52は、直近のステップS5で第1条件を判定したときの外力トルクETnと同期して取得された、第nの関節軸28、32、36又は40の移動速度MVnが、予め定めた閾値βn(第2の閾値)を超えたときに、第2条件を満たすと判定する。
【0036】
仮に、このステップS6の開始時点でn=3にセットされていたとすると、プロセッサ52は、直近のステップS5で第1条件を判定したときの外力トルクET3と同期して取得された、第3の関節軸36の移動速度MV3が閾値β3を超えたときに、第3の関節軸36について第2条件を満たす(すなわち、YES)と判定する。プロセッサ52は、YESと判定した場合はステップS10へ進む。
【0037】
一方、移動速度MV
3が閾値β
3よりも小さい場合は、プロセッサ52は、第3の関節軸36について第2条件を満たさない(すなわち、NO)と判定し、ステップS7へ進む。このように、本実施形態においては、プロセッサ52は、可動要素(第nの関節軸28、32、36又は40)が移動しているという第2条件を満たすか否かを判定する第2条件判定部68(
図2)として機能する。
【0038】
なお、プロセッサ52は、このステップS6において、第nの関節軸28、32、36又は40の加速度anが、予め定めた閾値γnを超えた場合に、第2条件を満たすと判定してもよい。この加速度anは、例えば、直近のステップS5で第1条件を判定したときの外力トルクETnと同期して取得された移動速度MVnを時間微分することによって、求めることができる。
【0039】
ステップS7において、プロセッサ52は、第nの関節軸28、32、36、40を特定する番号「n」を、「1」だけインクリメントする(n=n+1)。ステップS8において、プロセッサ52は、第nの関節軸28、32、36、40を特定する番号「n」が、「5」以上であるか否かを判定する。この数「5」は、ロボット12の関節軸28、32、36、40の総数+1の数である。
【0040】
プロセッサ52は、n=5である場合にYESと判定し、ステップS9へ進む一方、n≦4である場合にNOと判定し、ステップS5へ戻る。こうして、プロセッサ52は、ステップS6又はS8でYESと判定するまで、ステップS5~S8をループし、各々の関節軸28、32、36及び40について第1条件及び第2条件を満たすか否かを順次判定する。
【0041】
ステップS9において、プロセッサ52は、ロボット12の一連の動作が終了したか否かを判定する。例えば、プロセッサ52は、作業プログラムWP及び位置フィードバックFBの情報に基づいて、ロボット12の動作が終了したか否かを判定できる。プロセッサ52は、ロボット12の動作が終了した(すなわち、YES)と判定した場合は、ロボット12を停止して、
図3に示すフローを終了する。一方、プロセッサ52は、ロボット12の動作が終了していない(すなわち、NO)と判定した場合は、ステップS4へ戻る。そして、プロセッサ52は、ステップS6又はS9でYESと判定するまで、ステップS4~S9をループする。
【0042】
一方、ステップS6でYESと判定した場合、ステップS10において、プロセッサ52は、ロボット12の動作を停止する。一例として、プロセッサ52は、全てのサーボモータ26、30、34及び38へ停止指令を送信し、これらサーボモータ26、30、34及び38の動作を同時に停止させ、これにより、ロボット12の動作を停止させる。
【0043】
他の例として、各々のサーボモータ26、30、34及び38には、該サーボモータ26、30、34及び38の出力シャフト(又は、関節軸28、32、36及び40)を制動するブレーキ機構が設けられる。そして、プロセッサ52は、これらブレーキ機構を作動させることにより、サーボモータ26、30、34及び38の出力シャフト(又は、関節軸28、32、36及び40)の回転動作を停止させ、以って、ロボット12を緊急停止させてもよい。
【0044】
ステップS11において、プロセッサ52は、ロボット12に退避動作を実行させる。一例として、プロセッサ52は、直近に取得した移動方向MDnとは反対の方向MDn’へ第nの関節軸28、32、36及び40を回転させる(つまり、第nの関節軸を逆転させる)ことによって、ロボット12を退避させてもよい。
【0045】
又は、プロセッサ52は、直近に取得した外力トルクET1、ET2、ET3及びET4に基づいて、ロボット12に外力が加えられた位置及び該外力の方向を特定し、該位置に対応する可動要素(例えば、下腕部18、上腕部20、手首部22、エンドエフェクタ24)を、該外力の方向とは反対の方向へ移動させることによって、ロボット12を退避させてもよい。
【0046】
以上のように、プロセッサ52は、1つの関節軸28、32、36又は40について、第1条件及び第2条件の双方が満たされたとき(すなわち、ステップS5及びS6でYESと判定)は、ステップS10でロボット12の動作を停止する一方、第1条件及び第2条件の少なくとも一方が満たされていないときは、ステップS9でYESと判定するまでロボット12の動作を継続させる。したがって、プロセッサ52は、このようにロボット12の動作を制御する動作制御部70(
図2)として機能する。
【0047】
このように、本実施形態においては、移動中の可動要素(関節軸28、32、36、40)に過度な外力が加わらない限りは、ロボット12を停止させずに、ロボット12を継続して動作させている。ここで、ロボット12の動作時に、移動中の可動要素(旋回胴16、下腕部18、上腕部20、手首部22、エンドエフェクタ24)が不意に周囲の物体(障害物、作業員等)と衝突した場合、該物体に対して大きな衝突力が作用し得る。このような場合、物体からロボット12に加わる外力は、移動中の可動要素に強く作用する。
【0048】
その一方で、仮に、ロボット12の動作時に、一部の可動要素(例えば、上腕部20)が移動している一方で、他の可動要素(例えば、旋回胴16)が停止している場合において、停止している可動要素に外力が加えられたとしても、停止中の可動要素が周囲の物体とさらに衝突することはなく、故に、安全性を確保できる場合がある。
【0049】
本実施形態によれば、第1条件及び第2条件の双方を満たした場合は、周囲の物体に大きな力を与える可能性が高いことから、ロボット12の動作を停止させて作業の安全性を確実に確保する一方、第1条件及び第2条件の少なくとも一方を満たさない場合は、ロボット12の動作を継続させることで、作業の効率性が低下してしまうのを防止できる。
【0050】
この効果について、本実施形態を例にさらに詳細に述べると、仮に、プロセッサ52が、ステップS1で開始したロボット12の動作において、第1の関節軸28を回転させる一方、第2の関節軸32、第3の関節軸36、及び第4の関節軸40を停止させているとする。この場合、該第1の関節軸28の先端側に位置する旋回胴16、下腕部18、上腕部20、手首部22、及びエンドエフェクタ24は、該第1の関節軸28周りに回転される。
【0051】
このときに、回転中の可動要素(旋回胴16、下腕部18、上腕部20、手首部22、又はエンドエフェクタ24)が不意に周囲の物体(障害物、作業員等)と衝突し、第1の関節軸28に掛かる外力トルクET1が閾値α1を超えると、プロセッサ52は、ステップS5及びS6でYESと判定し、ステップS10でロボット12の動作を停止させる。
【0052】
その一方で、仮に、このときに第1の関節軸28に掛かる外力トルクET1が閾値α1を超えない一方、第2の関節軸32、第3の関節軸36又は第4の関節軸40に掛かる外力トルクET2、ET3又はET4が閾値α2、α3又はα4を超えたとしても、該第2の関節軸32、第3の関節軸36、又は第4の関節軸40は回転していないため、プロセッサ52は、ステップS6でNOと判定し、ロボット12の動作を継続することになる。
【0053】
第1の関節軸28の回転中に可動要素(旋回胴16、下腕部18、上腕部20、手首部22、又はエンドエフェクタ24)が周囲の物体と衝突したときは、必然的に、第1の関節軸28に大きな外力トルクET1が掛かることになる。故に、該外力トルクET1が閾値α1を超えていない場合は、仮にこのときの外力トルクET2、ET3又はET4が閾値α2、α3又はα4を超えたとしても、該外力トルクET2、ET3又はET4がロボット12の動作(つまり、第1の関節軸28の回転)に起因するものではないと見做すことができ、周囲の物体に大きな力を与える可能性は低いと推定できる。このように、第1条件及び第2条件の少なくとも一方を満たさない場合はロボット12の動作を継続させることで、作業の効率性が低下してしまうのを防止できる。
【0054】
また、本実施形態においては、プロセッサ52は、移動方向MDnとは反対の方向MDn’の外力トルクETnが閾値αnを超えたときに第1条件を満たすと判定している。ここで、移動中の可動要素が不意に周囲の物体と衝突した場合、該物体から該可動要素に加えられる外力は、衝突の反作用として、反対の方向MDn’へ強く作用することになる。
【0055】
その一方で、例えば、ロボット12が作業員と協働している場合において、作業員がロボット12の所定の可動要素(例えば、エンドエフェクタ24)に意図的に外力を加えて該可動要素を移動させた場合、該外力の方向は、可動要素の移動方向と略一致することになる。
【0056】
本実施形態によれば、反対の方向MDn’の外力トルクETnに基づいて第1条件を判定することにより、移動中の可動要素が不意に周囲の物体と衝突した可能性が高い場合はロボット12を停止させることができる一方、上述のように協働作業のために作業員がロボット12に意図的に外力を加えている場合は、ロボット12を継続して動作させることができる。したがって、作業の安全性を確実に確保しつつ、協働作業等の効率性が低下するのを防止できる。
【0057】
また、本実施形態においては、ロボット12の停止後に該ロボット12に退避動作を実行させている(ステップS11)。この構成によれば、周囲の物体の安全性を、さらに効果的に確保できる。しかしながら、ステップS11を省略し、プロセッサ52は、ステップS10でロボット12を停止するだけであってもよい。
【0058】
なお、上述のステップS5において、プロセッサ52は、外力トルクETnの方向が移動方向MDnとは反対であるか否かを判定することなく、如何なる方向の外力トルクETnであっても、その大きさが閾値αnを超えた場合に第1条件を満たす(すなわち、YES)と判定してもよい。この場合、プロセッサ52は、上述のステップS3において、移動方向MDnを取得する必要はなくなるので、制御装置50から移動方向取得部62を省略できる。
【0059】
また、上述のステップS6において、プロセッサ52は、移動速度MVnと閾値βnとを比較することなく、第2条件を満たすか否かを判定することもできる。例えば、プロセッサ52は、上述の回転検出器からの位置フィードバックFBの値が変動した場合に、第nの関節軸28、32、36又は40が移動している(つまり、第2条件を満たす)と判定してもよい。
【0060】
代替的には、プロセッサ52は、第nのサーボモータ26、30、34又は38への指令、又は、作業プログラムWPに含まれる命令文等から、第nの関節軸28、32、36又は40が移動しているか否かを判定してもよい。この場合、プロセッサ52は、ステップS3において、移動速度MVnを取得する必要はなくなるので、制御装置50から速度取得部64を省略できる。
【0061】
また、
図3に示すフローの各プロセスの順序を変更することもできる。一例として、プロセッサ52は、ステップS4の後にステップS6を実行し、第2条件を満たすか否を判定し、第2条件を満たす(YES)と判定した場合にステップS5を実行して第1条件を満たすか否を判定し、YESと判定した場合にステップS10へ進んでもよい。すなわち、この場合、プロセッサ52は、移動していると判定した可動要素(第nの関節軸)について第1条件(つまり、外力トルクET
nが閾値α
nを超えたか否か)を判定することになる。
【0062】
他の例として、プロセッサ52は、ステップS1の後にステップS4を実行し、該ステップS4の後にステップS6を実行して第2条件を満たすか否を判定してもよい。そして、プロセッサ52は、第2条件を満たす(YES)と判定した場合に、ステップS2を実行して第nの関節軸28、32、36又は40に加えられた外力トルクETnを取得し、次いでステップS3を実行して該第nの関節軸28、32、36又は40の移動情報を取得してもよい。
【0063】
そして、該ステップS3の後にステップS5を実行して第1条件を満たすか否を判定し、YESと判定した場合はステップS10へ進んでもよい。すなわち、この場合、プロセッサ52は、移動していると判定した可動要素(第nの関節軸)について、外力トルクETnの取得、移動情報の取得、及び第1条件の判定の一連のスキームを実行することになる。
【0064】
次に、
図4を参照して、制御装置50が実行するロボット制御フローの他の例について説明する。なお、
図4に示すフローにおいて、
図3に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
図4に示すフローは、プロセッサ52が上述の自動作業開始指令を受け付けたときに、開始される。
【0065】
ステップS1の後、ステップS21において、プロセッサ52は、外力取得部60として機能し、ロボット12の可動要素に加えられた外力EFを取得する。具体的には、プロセッサ52は、第1の力センサ42、第2の力センサ44、第3の力センサ46、及び第4の力センサ48から検出データを取得し、該検出データから対応する内力の成分をそれぞれ減算することによって、外力トルクET1、ET2、ET3、及びET4をそれぞれ算出する。
【0066】
そして、プロセッサ52は、これら外力トルクET1、ET2、ET3、及びET4に基づいて、ロボット12に加えられた外力EFを取得する。ここで、ロボット12の所定の部位(例えば、エンドエフェクタ24)に加えられた外力EFは、該所定の部位の基端側に位置する全ての関節軸28、32、36、40に作用することになる。
【0067】
ここで、ロボット12の所定の部位に、所定の大きさ及び方向の外力EFが加えられたときに関節軸28、32、36、40に作用する外力トルクETは、運動力学方程式、実験的手法、又はシミュレーション等から、既知とすることができる。換言すれば、関節軸28、32、36、40に作用する外力トルクから、外力EFが加えられたロボット12の部位と、該外力EFの大きさ及び方向とを推定することができる。
【0068】
プロセッサ52は、算出した外力トルクET1、ET2、ET3、及びET4に基づいて、ロボット12のいずれの可動要素(旋回胴16、下腕部18、上腕部20、手首部22、又はエンドエフェクタ24)に外力EFが加えられたかを特定するとともに、該外力EFの大きさ及び方向を取得する。
【0069】
ステップS22において、プロセッサ52は、直近のステップS21で外力EFが加えられたと特定した可動要素の移動情報を取得する。仮に、直近のステップS21においてロボット12の上腕部20に外力EFが加えられたものと特定した場合、プロセッサ52は、上述の速度取得部64として機能し、移動情報として、上腕部20の移動速度MVU(又は加速度)を取得する。
【0070】
この移動速度MVUは、ロボット12を制御するために該ロボット12に対して設定されたロボット座標系(又は、作業セルの3次元空間を規定するワールド座標系)における上腕部20の移動速度MVUであってもよいし、又は、上腕部20の基端側に連結された下腕部18に対する該上腕部20の移動速度(つまり、回転速度)MVUであってもよい。
【0071】
例えば、プロセッサ52は、上腕部20の基端側に配置されたサーボモータ26、30及び34の回転検出器からの位置フィードバックFB、該サーボモータ26、30及び34への指令、又は、作業プログラムWPに含まれる情報(命令文等)に基づいて、移動速度MVUを取得できる。また、プロセッサ52は、上述の移動方向取得部62として機能して、位置フィードバックFB、指令又は作業プログラムWPに基づいて、上腕部20の移動方向MDUを取得する。この移動速度MDUは、上述のロボット座標系(又はワールド座標系)における上腕部20の移動方向MDUであってもよいし、又は、上腕部20の基端側に連結された下腕部18に対する該上腕部20の移動方向(つまり、回転方向)MDUであってもよい。
【0072】
ステップS23において、プロセッサ52は、第1条件判定部66として機能し、予め定めた閾値δ(第1の閾値)を超えた外力FTが可動要素に加えられたという第1条件を満たすか否かを判定する。例えば、可動要素としての旋回胴16、下腕部18、上腕部20、手首部22、及びエンドエフェクタ24に対し、互いに異なる外力EFの閾値δ1、δ2、δ3、δ4及びδ5が、それぞれ設定される。
【0073】
以下、直近のステップS21において、ロボット12の上腕部20に外力EFが加えられたものと特定した場合について説明する。この場合、プロセッサ52は、上腕部20の移動方向MDUとは反対の方向MDU’の外力EFUが閾値δ3を超えたときに、第1条件を満たす(すなわち、YES)と判定する。
【0074】
具体的には、プロセッサ52は、直近のステップS21で取得した外力EFUの方向が、直近のステップS22で取得した上腕部20の移動方向MDUとは反対であり、且つ、外力EFUの大きさが閾値δ3を超えたか否かを判定する。プロセッサ52は、外力EFUの方向が移動方向MDUとは反対であり、且つ、その大きさが閾値δ3を超えた場合に、第1条件を満たす(すなわち、YES)と判定する。
【0075】
このとき、プロセッサ52は、外力EFUの方向と移動方向MDUとの間の角度θが所定の範囲(例えば、θ>90°の範囲)である場合に、外力トルクETnの方向が移動方向MDnとは反対の方向であると判定してもよい。又は、プロセッサ52は、外力EFUの単位ベクトルと移動方向MDUの単位ベクトルとの内積IPが所定の範囲(例えば、IP<0の範囲)である場合に、外力トルクETnの方向が移動方向MDnとは反対の方向であると判定してもよい。
【0076】
代替的には、プロセッサ52は、取得した外力EFUの、移動方向MDUとは反対の方向の成分EFU’を求め、該成分EFU’が閾値δ3を超えたか否かを判定し、該成分EFU’が閾値δ3を超えた場合にYESと判定してもよい。プロセッサ52は、このステップS23でYESと判定した場合は、ステップS24へ進む一方、NOと判定した場合はステップS9へ進む。
【0077】
なお、このステップS23において、プロセッサ52は、可動要素に加えられた外力EFの方向を考慮することなく、取得した外力EFの大きさが閾値δを超えた場合に、第1条件を満たす(YES)と判定してもよい。また、複数の可動要素毎に閾値δ1、δ2、δ3、δ4及びδ5を設定するのではなく、全ての可動要素に対して一定の閾値δ0が設定されてもよい。
【0078】
ステップS24において、プロセッサ52は、第2条件判定部68として機能し、外力EFが加えられた可動要素が移動しているという第2条件を満たすか否かを判定する。仮に、直近のステップS21で上腕部20に外力EFが加えられたものと特定したとすると、プロセッサ52は、直近のステップS22で取得した上腕部20の移動速度MVU(又は加速度)が、予め定めた閾値ε(第2の閾値)を超えたときに、第2条件を満たす(すなわち、YES)と判定する。
【0079】
なお、プロセッサ52は、移動速度MVUと閾値εとを比較することなく、第2条件を満たすか否かを判定することもできる。例えば、プロセッサ52は、第3のサーボモータ34に設けられた回転検出器からの位置フィードバックFBの値が変動した場合に、上腕部20が移動している(つまり、第2条件を満たす)と判定してもよい。
【0080】
代替的には、プロセッサ52は、第3のサーボモータ34への指令、又は、作業プログラムWPに含まれる命令文等から、上腕部20が移動しているか否かを判定してもよい。プロセッサ52は、ステップS24でYESと判定した場合はステップS10へ進み、ロボット12の動作を停止する一方、NOと判定した場合はステップS9へ進む。このように、プロセッサ52は、ステップS9又はS24でYESと判定するまで、ステップS21~S24、及びS9をループする。
【0081】
以上のように、本実施形態においては、プロセッサ52は、可動要素としての旋回胴16、下腕部18、上腕部20、手首部22、又はエンドエフェクタ24に加えられた外力EFを取得し、閾値δを超えた外力EFが該可動要素に加えられたという第1条件と、該可動要素がしているという第2条件との双方が満足されたときに、ステップS10でロボット12を停止させる。
【0082】
その一方で、プロセッサ52は、第1条件及び第2条件の少なくとも一方が満たされていないときは、ステップS9でYESと判定するまでロボット12の動作を継続させる。この構成によれば、上述の実施形態と同様に、作業の安全性を確実に確保しつつ、作業の効率性が低下してしまうのを防止できる。
【0083】
なお、ロボットシステム10においては、複数の力センサ42、44、46及び48が設けてられているが、これに限らず、複数の方向の力を検出可能な1つの力センサを設けてもよい。このような実施形態を
図5及び
図6に示す。
図5及び
図6に示すロボットシステム80は、上述のロボットシステム10と以下の構成において相違する。すなわち、ロボットシステム80は、上述の力センサ42、44、46及び48の代わりに、力センサ82を備える。
【0084】
力センサ82は、例えば、複数の歪ゲージ(図示せず)を有する6軸力覚センサであって、ロボットベース14と、作業セルの床Aに固定された固定プレート84との間に介挿されている。力センサ82に力が作用すると、力センサ82の歪ゲージが、作用した力に応じた検出データを制御装置50へ送信する。
【0085】
プロセッサ52は、外力取得部60として機能し、I/Oインターフェース56を介して力センサ82から受信した検出データに基づいて、ロボット12に加えられた外力EFを取得する。具体的には、プロセッサ52は、力センサ82からの検出データに基づいて、力センサ82に設定されたセンサ座標系SCのx軸、y軸、及びz軸方向の力と、x軸周り、y軸周り、及びz軸周りのトルクとの、6軸方向の力を求める。次いで、プロセッサ52は、センサ座標系SCの6軸方向の力から、ロボット12の質量と、該ロボット12が動作することよって生じる慣性力とに起因して力センサ82に作用する内力の成分をそれぞれ減算し、6軸方向の外力成分を求める。
【0086】
ここで、ロボット12の所定の部位に、所定の大きさ及び方向の外力EFが加えられたときにセンサ座標系SCの6軸方向に作用する外力成分は、運動力学方程式、実験的手法、又はシミュレーション等から、既知とすることができる。換言すれば、センサ座標系SCの6軸方向の外力成分から、外力EFが加えられたロボット12の部位と、該外力EFの大きさ及び方向とを推定することができる。
【0087】
こうして、プロセッサ52は、センサ座標系SCの6軸方向の外力成分に基づいて、ロボット12のいずれの可動要素(旋回胴16、下腕部18、上腕部20、手首部22、又はエンドエフェクタ24)に外力EFが加えられたかを特定するとともに、該外力EFの大きさ及び方向を取得することができる。
【0088】
ロボットシステム80において、制御装置50のプロセッサ52は、
図4に示すロボット制御フローを実行することによって、ロボット12を制御する。この場合、ステップS2において、プロセッサ52は、上述したように力センサ82の検出データに基づいて、外力EFを取得する。
【0089】
なお、ロボットシステム10及び80の構成を組み合わせることもできる。例えば、ロボットシステム80の力センサ82を、ロボットシステム10に適用し、ロボットシステム10のプロセッサ52は、
図3に示すフローと、
図4に示すフローとを、並行して実行してもよい。この場合において、ロボットシステム10の制御装置50は、
図3に示すフローを実行する第1のプロセッサ52Aと、
図4に示すフローを実行する第2のプロセッサ52Bとを有してもよい。
【0090】
次に、
図7及び
図8を参照して、さらに他の実施形態に係るロボットシステム90について説明する。ロボットシステム90は、上述のロボットシステム10と、以下の構成において相違する。すなわち、ロボットシステム90においては、ハンドル92、ハンドガイドセンサ94、及び運転モード切換スイッチ96がさらに設けられている。
【0091】
ハンドル92は、エンドエフェクタ24のベース部24aに設けられており、人間工学的に作業員が把持し易い形状を有する。ハンドガイドセンサ94は、例えば6軸力覚センサであって、ハンドル92とベース部24aとの間に介挿されている。ハンドガイドセンサ94は、作業員がハンドル92に加えた操作力HFを検出し、検出データを制御装置50に送信する。
【0092】
運転モード切換スイッチ96は、物理的切換スイッチ、押しボタン、タッチセンサ等を有し、ハンドル92に設けられている。運転モード切換スイッチ96は、ロボット12の運転モードを、自動運転モードとハンドガイド運転モードとの間で切り換える。自動運転モードは、上述のステップS1のように、ロボット12が作業プログラムWPに従って自動的に動作して所定の作業を行う運転モードである。
【0093】
一方、ハンドガイド運転モードは、後述するように、作業員がハンドル92に加えた操作力HFに応じてロボット12を手動で動作させる運転モードである。運転モード切換スイッチ96がONとされたとき、該運転モード切換スイッチ96は、ハンドガイド信号「ON」(又は、「1」)を、制御装置50に送信する。
【0094】
次に、
図9を参照して、ロボットシステム90の制御装置50が実行するロボット制御フローについて説明する。
図9に示すフローは、例えば、ロボットシステム90の制御装置50が起動されたときに、開始する。ステップS31において、プロセッサ52は、ハンドガイド信号が「ON」とされたか否かを判定する。
【0095】
具体的には、作業員が運転モード切換スイッチ96をONとすると、該運転モード切換スイッチ96は、ハンドガイド信号「ON」(又は、「1」)を制御装置50に送信する。プロセッサ52は、ハンドガイド信号「ON」を受信した場合にYESと判定し、ステップS32へ進む。一方、プロセッサ52は、ハンドガイド信号が「OFF」(又は、「0」)である場合はNOと判定し、ステップS33へ進む。ステップS32において、プロセッサ52は、ロボット12の運転モードをハンドガイド運転モードに移行し、ハンドガイド運転モードの制御フローを実行する。このステップS32については後述する。
【0096】
ステップS33において、プロセッサ52は、オペレータ、上位コントローラ、又はコンピュータプログラム(例えば、上述の作業プログラムWP)から、上述の自動作業開始指令を受信したか否かを判定する。プロセッサ52は、自動作業開始指令を受信した場合にYESと判定し、ステップS34へ進む一方、自動作業開始指令を受信していない場合はNOと判定し、ステップS35へ進む。ステップS34において、プロセッサ52は、ロボット12の運転モードを自動運転モードに移行し、自動運転モードの制御フローを実行する。このステップS34については後述する。
【0097】
ステップS35において、プロセッサ52は、制御装置50の動作を終了するシャットダウン指令を受け付けたか否かを判定する。プロセッサ52は、シャットダウン指令を受け付けた場合はYESと判定し、制御装置50の動作を終了し、以って、
図9に示すフローを終了する。一方、プロセッサ52は、シャットダウン指令を受け付けていない場合はNOと判定し、ステップS31へ戻る。
【0098】
ステップS32のハンドガイド運転モードの制御フローについて、
図10を参照して説明する。なお、
図10に示すフローにおいて、
図3と同様のプロセスには同じステップ番号を付し、重複する説明を省略する。ステップS32の開始後、プロセッサ52は、上述のステップS2及びS3を実行する。
【0099】
ステップS41において、プロセッサ52は、操作力HFを取得する。具体的には、プロセッサ52は、ハンドガイドセンサ94から操作力HFの検出データを取得する。そして、プロセッサ52は、ハンドガイドセンサ94の検出データと、このときのエンドエフェクタ24の位置及び姿勢のデータとに基づいて、ハンドル92に加えられた操作力HFの大きさ及び方向を取得する。
【0100】
ステップS42において、プロセッサ52は、直近のステップS41で取得した操作力HFの大きさが、予め定めた閾値ζを超えた(HF≧ζ)か否かを判定する。プロセッサ52は、操作力HFの大きさが閾値ζを超えた(すなわち、YES)と判定した場合はステップS43へ進む一方、操作力HFの大きさが閾値ζを超えていない(すなわち、NO)と判定した場合は、ステップS44へ進む。
【0101】
ステップS43において、プロセッサ52は、操作力HFに従ってエンドエフェクタ24を移動させるように、ロボット12を動作させる。具体的には、プロセッサ52は、各サーボモータ26、30、34及び38へ指令を送信し、エンドエフェクタ24を、操作力HFの方向へ所定の距離d(例えば、10cm)だけ移動させる。
【0102】
なお、プロセッサ52は、直近のステップS41で取得した操作力HFの大きさに応じて、このステップS43で移動させる距離dを変化させてもよい(例えば、操作力HFが大きい程、距離dを大きくする)。ステップS43の後、プロセッサ52は、
図3のフローと同様のステップS4~S8、及びS10を順次実行する。ここで、プロセッサ52は、
図10中のステップS5を実行するときに参照する閾値α
nの値を、α
n_1に設定する。
【0103】
ステップS8でYESと判定した場合、ステップS44において、プロセッサ52は、上述のステップS35と同様に、シャットダウン指令を受け付けたか否かを判定する。プロセッサ52は、YESと判定した場合は、制御装置50の動作を終了し、以って、
図9に示すフローを終了する。一方、プロセッサ52は、NOと判定した場合はステップS45へ進む。
【0104】
ステップS45において、プロセッサ52は、ハンドガイド信号が「OFF」(又は、「0」)とされたか否かを判定する。具体的には、作業員が運転モード切換スイッチ96をOFFとすると、該運転モード切換スイッチ96は、ハンドガイド信号「OFF」(又は、「0」)を制御装置50に送信する。プロセッサ52は、ハンドガイド信号が「OFF」となった場合にYESと判定し、
図9中のステップS33へ進む。一方、プロセッサ52は、ハンドガイド信号が「ON」である場合はNOと判定し、
図10中のステップS41へ戻る。
【0105】
こうして、プロセッサ52は、操作力HFに応じてロボット12を動作させるハンドガイド運転を実行中に、各関節軸28、32、36及び40について第1条件及び第2条件を満たすか否かを監視し、それに応じてロボット12の動作を停止又は継続させる。なお、
図10に示すフローにおいては、プロセッサ52は、ステップS10の後、上述のステップS11を実行せずに、
図10に示すフローを終了する。
【0106】
次に、
図11を参照して、ステップS34の自動運転モードの制御フローについて説明する。なお、
図11に示すフローにおいて、
図3及び
図9と同様のプロセスには同じステップ番号を付し、重複する説明を省略する。ステップS34の開始後、プロセッサ52は、
図3のフローと同様に上述のステップS1~S11を順次実行する。
【0107】
ここで、プロセッサ52は、
図11中のステップS5を実行するときに参照する閾値α
nの値を、α
n_2(<α
n_1)に設定する。そして、プロセッサ52は、ステップS9でNOと判定した場合、上述のステップS31を実行し、YESと判定した場合は、
図9中のステップS32へ進む一方、NOと判定した場合は、
図11中のステップS4へ戻る。
【0108】
以上のように、本実施形態においては、プロセッサ52は、ステップS32のハンドガイド運転モードを実行するときは、ステップS5で第1条件の判定のために用いる閾値α
nを、値α
n_1に設定する一方、ステップS34の自動運転モードを実行するときは、ステップS5で第1条件の判定のために用いる閾値α
nを、値α
n_2(<α
n_1)に設定している。したがって、プロセッサ52は、ロボット12の運転モードに応じて閾値α
nを変更する閾値設定部98(
図8)として機能する。
【0109】
ここで、ハンドガイド運転モードにおいては、上述したように、作業員が意図的にハンドル92に加えた力に応じてロボット12を手動で動作させる。このようなハンドガイド運転モードで用いる閾値αn_1を、自動運転モードで用いる閾値αn_2よりも大きく設定することによって、作業員が意図的に加えた力によってロボット12を停止させてしまうのを、回避することができる。
【0110】
なお、ロボットシステム90において、力センサ42、44、46及び48の代わりに、力センサ82を適用することもできる。この場合、
図10及び
図11に示すフローに、
図4中のステップS21~S24を適用可能であることが理解されよう。また、上述の力センサ42、44、46及び48は、サーボモータ26、30、34及び38の出力シャフトに掛かるトルクを検出するように配置されてもよい。
【0111】
また、上述の力センサ82は、ロボット12の如何なる箇所(例えば、下腕部18)に設けてもよい。また、上述の実施形態においては、4個の関節軸28、32、36及び40、4個のサーボモータ26、30、34及び38、並びに4個の力センサ42、44、46及び48が設けられている場合について述べた。しかしながら、これに限らず、関節軸、サーボモータ、力センサの個数は、4以外の如何なる正数であってもよい。
【0112】
また、ロボット12は、垂直多関節ロボットに限らず、例えば、水平多関節ロボット、パラレルリンクロボット等、可動要素を備える如何なるタイプのロボットであってもよい。以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0113】
10,80,90 ロボットシステム
12 ロボット
50 制御装置
52 プロセッサ
60 外力取得部
62 移動方向取得部
64 速度取得部
66 第1条件判定部
68 第2条件判定部
70 動作制御部