(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-06
(45)【発行日】2025-01-15
(54)【発明の名称】ロボットの制御装置、ロボットシステム、及びロボットの制御方法
(51)【国際特許分類】
B25J 19/06 20060101AFI20250107BHJP
B25J 9/22 20060101ALI20250107BHJP
G05B 19/423 20060101ALI20250107BHJP
G05B 19/42 20060101ALI20250107BHJP
【FI】
B25J19/06
B25J9/22 Z
G05B19/423
G05B19/42 L
(21)【出願番号】P 2023521916
(86)(22)【出願日】2022-06-30
(86)【国際出願番号】 JP2022026381
(87)【国際公開番号】W WO2024004170
(87)【国際公開日】2024-01-04
【審査請求日】2023-04-11
【早期審査対象出願】
【前置審査】
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】内藤 康広
(72)【発明者】
【氏名】堀 慎太郎
【審査官】稲垣 浩司
(56)【参考文献】
【文献】特開2015-199174(JP,A)
【文献】特開平11-58278(JP,A)
【文献】特公平6-90648(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
(57)【特許請求の範囲】
【請求項1】
ロボットの動作を制御する制御装置であって、
前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を、前記ダイレクトティーチ実行部が実行する前記ダイレクトティーチ機能と並行して実行する安全機能実行部であって、該ダイレクトティーチ機能が有効とされたときに該安全機能を開始する一方、該ダイレクトティーチ機能が無効とされたときに該安全機能を終了する、安全機能実行部と、を備える、制御装置。
【請求項2】
ロボットの動作を制御する制御装置であって、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、
前記安全機能実行部が実行する前記安全機能と並行して、前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、を備え、
前記安全機能実行部による前記安全機能を有効又は無効に切り替える機能切替部をさらに備え、
前記ダイレクトティーチ実行部は、前記安全機能が無効になっている場合に、前記ダイレクトティーチ機能を実行しない
、制御装置。
【請求項3】
ロボットの動作を制御する制御装置であって、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、
前記安全機能実行部が実行する前記安全機能と並行して、前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、
前記ダイレクトティーチ実行部が前記ダイレクトティーチ機能を実行するときに、前記安全機能が有効になっているか、又は無効になっているかを判定する安全機能判定部
と、を備える
、制御装置。
【請求項4】
ロボットの動作を制御する制御装置であって、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、
前記安全機能実行部が実行する前記安全機能と並行して、前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、を備え、
前記ロボットには、該ロボットに加えられた外力を検出する力センサが設けられ、該力センサは、一方向の力をともに検出する2系統の検出部を有し、
前記安全機能実行部は、前記2系統の検出部の一方の検出データに基づいて求めた第1の前記接触力を監視する第1の前記安全機能と、前記2系統の検出部の他方の検出データに基づいて求めた第2の前記接触力を監視する第2の前記安全機能と、を並行して実行し、
前記ダイレクトティーチ実行部は、前記ダイレクトティーチ機能において、前記2系統の検出部の少なくとも一方の検出データに基づいて、前記操作力を求める
、制御装置。
【請求項5】
ロボットの動作を制御する制御装置であって、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、
前記安全機能実行部が実行する前記安全機能と並行して、前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、
前記閾値を、第1の閾値と、該第1の閾値よりも大きい第2の閾値との間で切り替える閾値切替部
と、を備え、
前記閾値切替部は、前記ダイレクトティーチ実行部が前記ダイレクトティーチ機能を開始するとき、又は、該ダイレクトティーチ機能の実行中に前記少なくとも1つが第3の閾値を超えたときに、前記閾値を前記第1の閾値から前記第2の閾値に切り替える
、制御装置。
【請求項6】
前記ロボットには、該ロボットに加えられた外力を検出する力センサが設けられ、
前記安全機能実行部及び前記ダイレクトティーチ実行部は、共通の前記力センサの検出データに基づいて、前記安全機能及び前記ダイレクトティーチ機能をそれぞれ実行する、
請求項1~5のいずれか1項に記載の制御装置。
【請求項7】
ロボットと、
前記ロボットを制御する、請求項1
~5のいずれか1項に記載の制御装置と、を備える、ロボットシステム。
【請求項8】
ロボットの動作を制御する方法であって、
プロセッサが
、
前記ロボットに加えられた操作力に従って前記ロボットを動作させるダイレクトティーチ機能を実行
し、
動作中の前記ロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を、前記ダイレクトティーチ機能と並行して実行し、
前記ダイレクトティーチ機能が有効とされたときに前記安全機能を開始する一方、該ダイレクトティーチ機能が無効とされたときに該安全機能を終了する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの制御装置、ロボットシステム、及びロボットの制御方法に関する。
【背景技術】
【0002】
ロボットに外力を加えて、該外力に従って該ロボットを動作させるダイレクトティーチ機能が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、ダイレクトティーチ機能の実行時に、オペレータの安全を確保することが求められる。
【課題を解決するための手段】
【0005】
本開示の一態様において、ロボットの動作を制御する制御装置は、動作中のロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、安全機能実行部が実行する安全機能と並行して、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部とを備える。
【0006】
本開示の他の態様において、ロボットの動作を制御する制御装置は、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部と、ダイレクトティーチ機能の実行中にロボットの速度又は加速度を取得する動作パラメータ取得部と、動作パラメータ取得部が取得した速度又は加速度に応じて、操作力に対する抵抗力を変化させる抵抗力制御部とを備える。
【0007】
本開示のさらに他の態様において、ロボットの動作を制御する制御装置は、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部を備え、ダイレクトティーチ実行部は、ダイレクトティーチ機能を開始するための指令を受け付けた時点、ダイレクトティーチ機能を開始した時点、又は、ダイレクトティーチ機能によって動作していたロボットが停止した時点からの経過時間が所定の閾値を超えたときに、ダイレクトティーチ機能を終了する。
【0008】
本開示のさらに他の態様において、ロボットの動作を制御する制御装置は、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部を備え、ダイレクトティーチ実行部は、ダイレクトティーチ機能を実行するための指令を受け付けて該ダイレクトティーチ機能を開始した後、該指令を再度受け付けることなく、該ダイレクトティーチ機能を継続して実行する。
【0009】
本開示のさらに他の態様において、ロボットの動作を制御する制御装置は、動作中のロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行する安全機能実行部と、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行するダイレクトティーチ実行部とを備える。ロボットには、該ロボットに加えられた外力を検出する力センサが設けられる。安全機能実行部及びダイレクトティーチ実行部は、共通の力センサの検出データに基づいて、安全機能及びダイレクトティーチ機能をそれぞれ実行する。
【0010】
本開示のさらに他の態様において、ロボットの動作を制御する方法は、プロセッサが、動作中のロボットに加えられた接触力、該ロボットの速度及び加速度の少なくとも1つを監視し、該少なくとも1つが所定の閾値を超えたときに該ロボットの動作を停止させる安全機能を実行し、安全機能と並行して、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行する。
【0011】
本開示のさらに他の態様において、ロボットの動作を制御する方法は、プロセッサが、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行し、ダイレクトティーチ機能の実行中にロボットの速度又は加速度を取得し、取得した速度又は加速度に応じて、操作力に対する抵抗力を変化させる。
【0012】
本開示のさらに他の態様において、ロボットの動作を制御する方法は、プロセッサが、ロボットに加えられた操作力に従ってロボットを動作させるダイレクトティーチ機能を実行し、ダイレクトティーチ機能を開始するための指令を受け付けた時点、ダイレクトティーチ機能を開始した時点、又は、ダイレクトティーチ機能によって動作していたロボットが停止した時点からの経過時間が所定の閾値を超えたときに、ダイレクトティーチ機能を終了する。
【図面の簡単な説明】
【0013】
【
図1】一実施形態に係るロボットシステムの概略図である。
【
図2】
図1に示すロボットシステムのブロック図である。
【
図3】
図2に示すロボットシステムの動作フローの一例を示すフローチャートである。
【
図5】
図3中のステップS2のフローの一例を示すフローチャートである。
【
図6】
図3中のステップS3のフローの一例を示すフローチャートである。
【
図7】
図2に示すロボットシステムの動作フローの他の例を示すフローチャートである。
【
図8】
図7中のステップS3’のフローの一例を示すフローチャートである。
【
図9】
図2に示すロボットシステムの他の機能を示すブロック図である。
【
図11】
図9に示すロボットシステムの動作フローの一例を示すフローチャートである。
【
図12】
図11中のステップS3のフローの一例を示すフローチャートである。
【
図13】
図11中のステップS2のフローの一例を示すフローチャートである。
【
図14】一実施形態に係るトルクセンサの概略図である。
【
図15】一実施形態に係る力覚センサの概略図である。
【
図16】
図14又は
図15に示す力センサを用いて実行される安全機能及びダイレクトティーチ機能を説明するためのブロック図である。
【
図17】
図16に示す安全機能及びダイレクトティーチ機能を実行するプロセッサを示すブロック図である。
【
図18】故障検知機能のフローの一例を示すフローチャートである。
【
図19】
図2に示すロボットシステムのさらに他の機能を示すブロック図である。
【
図20】
図19に示す制御装置が実行するダイレクトティーチ機能の一例を示すフローチャートである。
【
図21】
図19に示す制御装置が実行するダイレクトティーチ機能の他の例を示すフローチャートである。
【
図23】
図19に示す制御装置が実行するダイレクトティーチ機能のさらに他の例を示すフローチャートである。
【
図24】アクチュエータへの指令を生成する方法を示すブロック図である。
【
図25】
図2に示すロボットシステムのさらに他の機能を示すブロック図である。
【
図26】
図25に示す制御装置が実行するダイレクトティーチ機能の一例を示すフローチャートである。
【
図27】
図25に示す制御装置が実行するダイレクトティーチ機能の他の例を示すフローチャートである。
【
図28】
図2に示すロボットシステムのさらに他の機能を示すブロック図である。
【発明を実施するための形態】
【0014】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、
図1及び
図2を参照して、一実施形態に係るロボットシステム10について説明する。ロボットシステム10は、ロボット12、力センサ14(
図2)、制御装置16、及び教示装置18を備える。本実施形態においては、ロボット12は、垂直多関節ロボットであって、ロボットベース20、旋回胴22、下腕部24、上腕部26、手首部28、及びエンドエフェクタ30を有する。ロボットベース20は、作業セルの床、又は無人搬送車(AGV)の上に固定される。
【0015】
旋回胴22は、鉛直軸周りに旋回可能となるようにロボットベース20に設けられている。下腕部24は、水平軸周りに回動可能となるように旋回胴22に設けられ、上腕部26は、下腕部24の先端部に回動可能に設けられている。手首部28は、互いに直交する2つの軸の周りに回動可能となるように上腕部26の先端部に設けられた手首ベース28aと、該手首ベース28aに回動可能に設けられた手首フランジ28bとを有する。
【0016】
ロボットベース20、旋回胴22、下腕部24、上腕部26、及び手首部28には、複数のアクチュエータ31(
図2)がそれぞれ設けられている。これらアクチュエータ31は、サーボモータ等を有し、制御装置16からの指令に応じて、ロボット12の各可動コンポーネント(すなわち、旋回胴22、下腕部24、上腕部26、手首部28、手首フランジ28b)を回動させ、これによりエンドエフェクタ30を移動させる。
【0017】
各々のアクチュエータ31には、回転検出センサ33が設けられている。回転検出センサ33は、例えば、エンコーダ又はホール素子を有し、アクチュエータ31(具体的には、サーボモータ)の出力シャフト31aの回転位置(又は、回転角度)を検出する。回転検出センサ33は、検出した回転位置の検出データを、フィードバックFBとして、制御装置16に供給する。
【0018】
エンドエフェクタ30は、手首フランジ28bに着脱可能に取り付けられる。エンドエフェクタ30は、例えば、ロボットハンド、溶接ガン、レーザ加工ヘッド、又は切削工具を有し、ワーク(図示せず)に対して所定の作業(ワークハンドリング、溶接、レーザ加工、又は切削加工等)を実行する。
【0019】
力センサ14は、ロボットに12に加えられた外力Fを検出する。本実施形態においては、力センサ14は、複数のアクチュエータ31の出力シャフト31aにそれぞれ設けられた複数のトルクセンサ14Aを有する。各々のトルクセンサ14Aは、少なくとも1つのセンサ素子(例えば、歪ゲージ、又は圧電素子)を有し、アクチュエータ31(サーボモータ)の出力シャフト31aに掛かるトルクτを、外力Fの力成分として検出する。各々のトルクセンサ14Aは、検出したトルクτの検出データDDτを、制御装置16に供給する。
【0020】
制御装置16は、ロボット12の動作を制御する。
図2に示すように、制御装置16は、プロセッサ32、メモリ34、及びI/Oインターフェース36を有するコンピュータである。プロセッサ32は、CPU又はGPU等を有し、バス38を介して、メモリ34及びI/Oインターフェース36と通信可能に接続されている。
【0021】
プロセッサ32は、メモリ34及びI/Oインターフェース36と通信しつつ、後述する安全機能FN1、及びダイレクトティーチ機能FN2等の、ロボット12の各種機能FNを実行するための演算処理を行う。具体的には、プロセッサ32は、ロボット12の機能FNを実行するために、各アクチュエータ31(サーボモータ)への指令(例えば、位置指令、速度指令、トルク指令)を生成し、該指令に従って該各アクチュエータ31を駆動する。これにより、ロボット12は、エンドエフェクタ30を任意の位置に位置決めできる。なお、本稿において「位置」とは、位置及び姿勢を示す場合がある。
【0022】
メモリ34は、RAM又はROM等を有し、各種データを一時的又は恒久的に記憶する。メモリ34は、半導体メモリ、磁気記録媒体、又は光記録媒体等のコンピュータ読取可能な記録媒体であってもよい。I/Oインターフェース36は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ32からの指令の下、外部機器との間でデータを有線又は無線で通信する。上述の力センサ14(トルクセンサ14A)、教示装置18、及びアクチュエータ31は、I/Oインターフェース36に有線又は無線で通信可能に接続されている。
【0023】
制御装置16には、入力装置40及び表示装置42が設けられている。入力装置40は、押しボタン、スイッチ、キーボード、マウス、又はタッチパネル等を有し、オペレータからデータの入力を受け付ける。表示装置42は、液晶ディスプレイ又は有機ELディスプレイ等を有し、プロセッサ32からの指令の下、各種データを視認可能に表示する。
【0024】
表示装置42及び入力装置40は、I/Oインターフェース36に通信可能に接続されている。なお、表示装置42及び入力装置40は、制御装置16の筐体に一体に組み込まれてもよいし、又は、制御装置16の筐体とは別体の1つのコンピュータ(PC等)として、該筐体に外付けされてもよい。
【0025】
教示装置18は、教示ペンダント、又はタブレット式端末装置等のコンピュータであって、ロボット12に動作を教示する。具体的には、教示装置18は、プロセッサ(図示せず)、メモリ(図示せず)、表示装置44、入力装置46、及びイネーブルスイッチ48を有する。表示装置44は、液晶ディスプレイ又は有機ELディスプレイ等を有し、各種データを表示する。入力装置46は、押しボタン、スイッチ、又はタッチパネル等を有し、オペレータからデータの入力を受け付ける。
【0026】
オペレータは、入力装置46を操作して、教示機能FN3、自動運転機能FN4、及び動作確認機能FN5等の、ロボット12の各種機能FNを実行する。教示機能FN3は、ロボット12に対し、作業(ワークハンドリング、溶接、レーザ加工、又は切削加工等)のための動作を教示するための機能FNである。
【0027】
この教示機能FN3の実行中、オペレータは、入力装置46を操作して、制御装置16を介してロボット12をジョグ動作させ、エンドエフェクタ30を所望の教示位置TPに位置決めできる。教示装置18のプロセッサは、教示位置TP、及び、該教示位置TPへエンドエフェクタ30を移動させる速度V等の教示データを取得し、該教示データに基づいて、教示位置TP及び速度Vが命令コードとして規定された動作プログラムPG1を作成する。制御装置16のプロセッサ32は、作成された動作プログラムPG1を教示装置18から取得し、メモリ34に格納する。
【0028】
一方、自動運転機能FN4は、作成された動作プログラムPG1に従ってロボット12を自動運転し、ワークに対する作業を実行する機能FNである。オペレータは、入力装置46を操作することで、制御装置16のプロセッサ32に自動運転機能FN4を開始させる。この自動運転機能FN4の開始後、プロセッサ32は、メモリ34に格納された動作プログラムPG1に従って各アクチュエータ31への指令を生成し、ロボット12を自動で動作させて、ワークに対する作業を実行する。
【0029】
なお、自動運転機能FN4において、一部の作業についてはロボット12とオペレータとが協働で作業を実行してもよい。具体的には、プロセッサ32は、一部の作業については、後述のダイレクトティーチ機能FN2を実行し、オペレータがロボット12に加えた操作力Fhに応じて、該ロボット12を動作させてもよい。
【0030】
動作確認機能FN5は、教示機能FN3によってロボット12に教示した動作を確認するために、ロボット12に該動作を試行させる機能FNである。オペレータは、入力装置46を操作することで、制御装置16のプロセッサ32に動作確認機能FN5を実行させることができるようになっている。
【0031】
動作確認機能FN5の開始後、プロセッサ32は、上述の教示機能FN3における教示の途中で生成された未完の動作プログラムPG1’を試験的にロボット12に実行させる。これにより、オペレータは、ロボット12に教示した動作(つまり、動作プログラムPG1’の適否)を確認する。
【0032】
なお、制御装置16又は教示装置18には、上述したロボット12の機能FNを、教示機能FN3、自動運転機能FN4、及び動作確認機能FN5の間で切り替える切替スイッチSW(図示せず)が設けられてもよい。この切替スイッチSWは、物理スイッチ、又は表示装置42又は44に画像として表示されるソフトウェア上の仮想スイッチであってもよい。
【0033】
イネーブルスイッチ48は、オペレータがロボット12を手動で動作させるのを許可するための物理スイッチである。具体的には、イネーブルスイッチ48は、初期位置P0、該初期位置P0から所定の押下量だけ押下された第1の押下位置P1、及び、該第1の押下位置P1から所定の押下量だけ押下された第2の押下位置P2の間で切り替え可能となっている。
【0034】
オペレータがイネーブルスイッチ48を第1の押下位置P1まで押下したとき、イネーブルスイッチ48がONとなり、教示装置18のプロセッサは、上述の教示機能FN3、又は、後述する他のダイレクトティーチ機能FN2’を実行可能な状態となり、制御装置16を介して、ロボット12を動作させることが許可される。
【0035】
一方、ロボット12の動作中にイネーブルスイッチ48が初期位置P0に復帰するか、又は第2の押下位置P2へさらに押下されると、イネーブルスイッチ48がOFFとなり、教示装置18のプロセッサは、イネーブルスイッチOFF信号を制御装置16に送信する。イネーブルスイッチOFF信号を受け付けると、制御装置16のプロセッサ32は、緊急停止動作ESを実行する。
【0036】
緊急停止動作ESの一例として、プロセッサ32は、各アクチュエータ31への指令(トルク指令等)を停止することで、ロボット12の動作を停止させる。緊急停止動作ESの他の例として、プロセッサ32は、各アクチュエータ31の出力シャフトを制動するブレーキ機構(図示せず)を作動させることで、ロボット12の動作を強制的に停止させる。
【0037】
次に、
図3を参照して、ロボットシステム10の動作フローの一例について説明する。制御装置16のプロセッサ32は、オペレータ(すなわち、入力装置40又は46)、上位コントローラ、又はコンピュータプログラムPG2から動作開始指令(例えば、電源ON指令)を受け付けたときに、
図3に示すフローを開始する。
【0038】
ステップS1において、プロセッサ32は、ダイレクトティーチ機能開始指令を受け付けたか否かを判定する。具体的には、教示装置18のプロセッサは、ダイレクトティーチ機能開始指令を入力するためのダイレクトティーチ画像100を生成し、教示装置18の表示装置44に表示する。ダイレクトティーチ画像100の一例を、
図4に示す。
【0039】
図4に示す例では、ダイレクトティーチ画像100は、ダイレクトティーチ開始ボタン画像102と、ダイレクトティーチ終了ボタン画像104とを含む。オペレータは、入力装置46を操作して、ダイレクトティーチ画像100に表示されたダイレクトティーチ開始ボタン画像102又はダイレクトティーチ終了ボタン画像104をクリックすることで、ダイレクトティーチ開始ボタン画像102又はダイレクトティーチ終了ボタン画像104を選択できるようになっている。
【0040】
教示装置18のプロセッサは、ダイレクトティーチ開始ボタン画像102を選択する入力を受け付けると、ダイレクトティーチ機能開始指令を制御装置16に送信する。一方、教示装置18のプロセッサは、ダイレクトティーチ終了ボタン画像104を選択する入力を受け付けると、ダイレクトティーチ機能終了指令を制御装置16に送信する。なお、ダイレクトティーチ機能開始指令は、ON(又は「1」)信号である一方、ダイレクトティーチ機能終了指令は、OFF(又は「0」)信号であってもよい。
【0041】
制御装置16のプロセッサ32は、このステップS1において、ダイレクトティーチ機能開始指令を受け付けた場合はYESと判定し、ダイレクトティーチ機能FN2を有効(例えば、ダイレクトティーチ機能FN2の設定を「ON」、又は、ダイレクトティーチ機能FN2の実行フラグを立てる)とし、後述するステップS2及びS3を開始して、ステップS4へ進む。一方、プロセッサ32は、ダイレクトティーチ機能開始指令を受け付けていない場合はNOと判定し、ステップS6へ進む。
【0042】
ステップS4において、プロセッサ32は、上述のダイレクトティーチ機能終了指令を受け付けたか否かを判定する。プロセッサ32は、ダイレクトティーチ機能終了指令を受け付けた場合はYESと判定し、ステップS5へ進む一方、NOと判定した場合はステップS4をループする。ステップS5において、プロセッサ32は、ダイレクトティーチ機能FN2を無効とする(例えば、ダイレクトティーチ機能FN2の設定を「OFF」、又は、ダイレクトティーチ機能FN2の実行フラグを消去する)。
【0043】
ステップS6において、プロセッサ32は、オペレータ(すなわち、入力装置40又は46)、上位コントローラ、又はコンピュータプログラムPG2から動作終了指令(例えば、シャットダウン指令)を受け付けたか否かを判定する。プロセッサ32は、動作終了指令を受け付けた場合はYESと判定し、
図3に示すフローを終了する。一方、プロセッサ32は、NOと判定した場合はステップS1へ戻る。
【0044】
ここで、本実施形態においては、プロセッサ32は、ステップS1でYESと判定してダイレクトティーチ機能FN2を有効としたとき、ステップS2の安全機能FN1と、ステップS3のダイレクトティーチ機能FN2とを、並行して実行する。以下、
図5を参照して、ステップS2で実行する安全機能FN1のフローの一例について説明する。
【0045】
ステップS11において、プロセッサ32は、ロボット12の動作パラメータOPを取得する。動作パラメータOPは、動作中のロボット12に加えられた接触力Fc、該ロボット12の速度V、及び、該ロボット12の加速度aの少なくとも1つを含む。接触力Fcに関し、プロセッサ32は、力センサ14の検出データDDに基づいて、ロボット12の任意の部位(例えば、下腕部24、上腕部26、手首部28、又はエンドエフェクタ30)に加えられた外力Fを取得する。
【0046】
具体的には、プロセッサ32は、各々のトルクセンサ14Aの検出データDDτを取得し、該検出データDDτに基づいて外力Fを検出する。プロセッサ32は、各トルクセンサ14Aの検出データDDτを用いて所定の演算CL1を実行することにより、ロボット12に加えられた外力Fの大きさを求めることができる。プロセッサ32は、求めた外力Fを、動作中のロボット12が周囲の物体(オペレータ、環境物等)と接触することで該ロボット12に加えられた接触力Fcとして取得する。
【0047】
速度V及び加速度aに関し、プロセッサ32は、各アクチュエータ31に設けられた回転検出センサ33からのフィードバックFB(つまり、アクチュエータ31の回転位置又は回転角度)を取得する。そして、プロセッサ32は、該フィードバックFBを時間微分することで、ロボット12(具体的には、エンドエフェクタ30)の速度Vを取得する。
【0048】
また、プロセッサ32は、該速度Vを時間微分することで、ロボット12の加速度aを取得する。こうして、プロセッサ32は、動作パラメータOPとして、接触力Fc、速度V、及び加速度aの少なくとも1つを取得する。以下、プロセッサ32が、動作パラメータOPとして接触力Fc、速度V、及び加速度aの全てを取得する場合について説明する。
【0049】
ステップS12において、プロセッサ32は、直近のステップS11で取得した動作パラメータOP(すなわち、接触力Fc、速度V、及び加速度a)が、所定の閾値を超えたか否かを判定する。具体的には、プロセッサ32は、直近に取得した接触力Fcが、該接触力Fcに対して予め定められた閾値Fcthを超えた(つまり、Fc≧Fcth)か否かを判定する。
【0050】
また、プロセッサ32は、直近に取得した速度Vが、該速度Vに対して予め定められた閾値vthを超えた(つまり、V≧Vth)か否かを判定するとともに、直近に取得した加速度aが、該加速度aに対して予め定められた閾値athを超えた(つまり、a≧ath)か否かを判定する。プロセッサ32は、このステップS12において、Fc≧Fcth、V≧Vth、又は、a≧athとなったときにYESと判定し、ステップS13へ進む。一方、プロセッサ32は、Fc<Fcth、V<Vth、且つ、a<athである場合はNOと判定し、ステップS14へ進む。
【0051】
ステップS13において、プロセッサ32は、ロボット12の動作を停止させる。具体的には、プロセッサ32は、上述の緊急停止動作ESを実行することで、ロボット12の動作を緊急停止させる。このステップS13によって、ロボット12がオペレータ(又は環境物)と衝突した場合に、該ロボット12を停止させることができるので、オペレータの安全を確保できる。
【0052】
ステップS14において、プロセッサ32は、上述のステップS5でダイレクトティーチ機能FN2が無効にされたか否かを判定する。プロセッサ32は、ダイレクトティーチ機能FN2が無効にされた場合はYESと判定し、ステップS2の安全機能FN1を終了する。一方、プロセッサ32は、ダイレクトティーチ機能FN2が有効である場合はNOと判定し、ステップS11へ戻る。
【0053】
こうして、プロセッサ32は、ステップS14でYESと判定するまで、ステップS11~S14のループを繰り返し実行することで、動作パラメータOP(接触力Fc、速度V、及び加速度a)を監視し、動作パラメータOPが閾値Fc
th、V
th及びa
thを超えたときに、該ロボット12の動作を停止させる安全機能FN1を実行する。したがって、プロセッサ32は、安全機能FN1を実行する安全機能実行部50(
図2)として機能する。
【0054】
次に、
図6を参照して、ステップS3のダイレクトティーチ機能FN2について、説明する。ステップS21において、プロセッサ32は、ロボットに加えられた操作力Fhを取得する。具体的には、オペレータは、ロボット12の任意の部位(例えば、下腕部24、上腕部26、手首部28、又はエンドエフェクタ30)に操作力Fhを加える。なお、オペレータが操作したいロボット12の任意の部位に、操作ハンドル(図示せず)が設けられてもよい。この場合、オペレータは、該操作ハンドルを操作することで、ロボット12の任意の部位に操作力Fhを加えることができる。
【0055】
プロセッサ32は、力センサ14の検出データDDに基づいて、ロボット12の任意の部位に加えられた外力Fを取得する。本実施形態においては、プロセッサ32は、各々のトルクセンサ14Aの検出データDDτを取得し、該検出データDDτに基づいて外力Fを検出する。
【0056】
具体的には、プロセッサ32は、各トルクセンサ14Aの検出データDDτを用いて所定の演算CL2を実行することにより、ロボット12に加えられた外力Fの大きさ及び方向を求めることができるとともに、該外力Fが加えられたロボット12の部位を特定できる。プロセッサ32は、求めた外力Fを、オペレータがロボット12に加えた操作力Fhとして取得する。
【0057】
ステップS22において、プロセッサ32は、直近のステップS21で取得した操作力Fhの大きさが所定の閾値Fhthを超えた(つまり、Fh≧Fhth)か否かを判定する。この閾値Fhthは、上述の閾値Fcthよりも小さい値(Fhth<Fcth)に設定される。プロセッサ32は、Fh≧Fhthとなった場合はYESと判定し、ステップS23へ進む一方、NOと判定した場合はステップS24へ進む。
【0058】
ステップS23において、プロセッサ32は、操作力Fhに従ってロボット12を動作させる。具体的には、プロセッサ32は、直近のステップS21で取得した操作力Fhが加えられたロボット12の部位(例えば、エンドエフェクタ30)を、該操作力Fhの方向へ移動させるための指令を生成し、該指令に従って各アクチュエータ31を駆動する。その結果、ロボット12は、オペレータが操作力Fhを加えた部位を、該操作力Fhの方向へ移動させることになる。
【0059】
なお、プロセッサ32は、このステップS23において、操作力Fhが加えられたロボット12の部位を操作力Fhの方向へ、所定の距離dだけ移動させてもよい。この場合、ステップS23の後にオペレータがロボット12への操作力Fhを解除した(つまり、ロボット12から手を放した)場合、ロボット12は、所定の距離dだけ移動した後に自動で停止する。
【0060】
また、プロセッサ32は、このステップS23でロボット12を動作させているときに、並行して実行しているステップS2(
図5)中のステップS12でYESと判定した場合、ステップS2中のステップS13を優先して実行し、ロボット12を停止させる。その後、プロセッサ32は、ステップS2中のステップS12でNOと判定するまで(又は、所定時間が経過するまで)、このステップS23の実行が禁止されてもよい。
【0061】
ステップS24において、プロセッサ32は、上述のステップS14と同様に、上述のステップS5でダイレクトティーチ機能FN2が無効にされたか否かを判定する。プロセッサ32は、YESと判定した場合は、ステップS3のダイレクトティーチ機能FN2を終了する。その結果、ロボット12は、ダイレクトティーチ機能FN2による動作を停止する。一方、プロセッサ32は、NOと判定した場合はステップS21へ戻る。
【0062】
こうして、プロセッサ32は、ステップS24でYESと判定するまで、ステップS21~S24のループを繰り返し実行することで、ロボット12に加えられた操作力Fhに従って該ロボット12を動作させるダイレクトティーチ機能FN2を実行する。したがって、プロセッサ32は、ダイレクトティーチ機能FN2を実行するダイレクトティーチ実行部52(
図2)として機能する。
【0063】
上述したように、本実施形態においては、プロセッサ32は、ステップS2の安全機能FN1と、ステップS3のダイレクトティーチ機能FN2とを並行して実行する。なお、プロセッサ32は、ステップS2中のステップS11~S14のループと、ステップS3中のステップS21~S24のループとを、互いに同期して(又は、交互に)、所定の制御周期(例えば、1[msec])で実行してもよい。
【0064】
また、プロセッサ32は、ステップS3中のステップS21において、ステップS2中のステップS11で接触力Fcを取得するために用いた検出データDDτに基づいて、操作力Fhを求めてもよい。代替的には、プロセッサ32は、ステップS3中のステップS21において、ステップS2中のステップS11で接触力Fcを取得するために用いた検出データDDτとは別の時点で取得した検出データDDτに基づいて、操作力Fhを求めてもよい。
【0065】
本実施形態においては、プロセッサ32は、ステップS3のダイレクトティーチ機能FN2を実行中に、ステップS2中のステップS11でロボット12の速度V及び加速度aを取得している。したがって、プロセッサ32は、ダイレクトティーチ機能FN2の実行中に速度V及び加速度aを取得する動作パラメータ取得部54(
図2)として機能する。
【0066】
上述のように、本実施形態においては、制御装置16は、動作中のロボット12に加えられた接触力Fc、該ロボット12の速度V及び加速度aの少なくとも1つを監視し、該少なくとも1つ(Fc、V、a)が所定の閾値(Fcth、Vth、ath)を超えたときに該ロボット12の動作を停止させる安全機能FN1を実行する安全機能実行部50を備える。
【0067】
また、制御装置16は、安全機能実行部50が実行する安全機能FN1と並行して、ロボット12に加えられた操作力Fhに従って該ロボット12を動作させるダイレクトティーチ機能FN2を実行するダイレクトティーチ実行部52を備える。この構成によれば、上述のイネーブルスイッチ48を用いることなくダイレクトティーチ機能FN2を実行できるようになる。
【0068】
より具体的に述べると、他のダイレクトティーチ機能FN2’においては、オペレータの安全を確保する観点から、プロセッサ32は、オペレータがイネーブルスイッチ48をONにしたことを検知したとき、安全機能FN1を無効にした上で、ダイレクトティーチ機能FN2’を実行していた。
【0069】
本実施形態においては、プロセッサ32は、安全機能FN1と並行してダイレクトティーチ機能FN2を実行することで、イネーブルスイッチ48の操作を不要とすることができるとともに、ダイレクトティーチ機能FN2の実行中のオペレータの安全を、安全機能FN1によって十分に確保することができる。なお、他のダイレクトティーチ機能FN2’については、後述する。
【0070】
また、本実施形態においては、安全機能実行部50及びダイレクトティーチ実行部52は、共通の力センサ14(具体的には、トルクセンサ14A)の検出データDDτに基づいて、安全機能FN1及びダイレクトティーチ機能FN2を、それぞれ実行している。この構成によれば、安全機能FN1及びダイレクトティーチ機能FN2を、ともに高精度に実行できる。
【0071】
また、安全機能FN1及びダイレクトティーチ機能FN2で力センサ14を共通化することによって、コストを削減できる。また、安全機能FN1(具体的には、上述のステップS11~S14のループ)と、ダイレクトティーチ機能FN2(具体的には、上述ステップS21~S24のループ)との制御周期を互いに同期させて、同じ(つまり、共通の)検出データDDτに基づいて安全機能FN1とダイレクトティーチ機能FN2とを並行して実行することもできる。
【0072】
なお、本実施形態においては、上述のステップS11において、プロセッサ32は、ダイレクトティーチ機能FN2を実行中に、接触力Fcを取得するとともに、動作パラメータ取得部54として機能して速度V及び加速度aを取得する場合について述べた。しかしながら、これに限らず、上述のステップS11において、プロセッサ32は、接触力Fcを取得する一方、速度V及び加速度aを取得しなくてもよい。この場合、上述の動作パラメータ取得部54を制御装置16から省略できる。
【0073】
また、上述のステップS11で接触力Fcを取得する場合、プロセッサ32は、上述のステップS21で実行する演算CL2とは異なる演算CL1を実行することで、接触力Fcの大きさのみを取得してもよい。代替的には、プロセッサ32は、ステップS11において、ステップS21で実行する演算CL2と同じ演算CL1(=CL2)を実行することで、接触力Fcの大きさ及び方向と、該接触力Fcが加えられたロボット12の部位とを特定してもよい。
【0074】
また、本実施形態においては、力センサ14が、複数のトルクセンサ14Aを有し、安全機能実行部50及びダイレクトティーチ実行部52は、共通のトルクセンサ14Aの検出データDDτに基づいて、安全機能FN1及びダイレクトティーチ機能FN2を実行する場合について述べた。
【0075】
しかしながら、これに限らず、力センサ14は、複数のトルクセンサ14Aと、6軸方向の力を検出可能な力覚センサ14Bとを有してもよい。この力覚センサ14Bは、ロボット12の任意の部位(例えば、ロボットベース20)に設けられ、該力覚センサ14Bの設置位置より先端側に位置するロボット12の部位に加えられた外力Fを検出できる。
【0076】
この場合において、安全機能実行部50は、力覚センサ14Bの検出データDDf(又は、トルクセンサ14Aの検出データDDτ)に基づいて安全機能FN1を実行する一方、ダイレクトティーチ実行部52は、トルクセンサ14Aの検出データDDτ(又は、力覚センサ14Bの検出データDDf)に基づいてダイレクトティーチ機能FN2を実行してもよい。
【0077】
なお、本実施形態においては、教示装置18のプロセッサが、ダイレクトティーチ画像100を生成して、教示装置18の表示装置44に表示する場合について述べた。しかしながら、これに限らず、制御装置16のプロセッサ32が、ダイレクトティーチ画像100を生成して、表示装置42に表示してもよい。
【0078】
この場合において、オペレータは、入力装置40を操作して、表示装置42に表示されたダイレクトティーチ画像100において、ダイレクトティーチ開始ボタン画像102又はダイレクトティーチ終了ボタン画像104を選択してもよい。オペレータがダイレクトティーチ開始ボタン画像102を選択すると、制御装置16のプロセッサ32は、入力装置40を通してダイレクトティーチ機能開始指令を受け付けることになる。
【0079】
なお、本実施形態においては、オペレータが、ダイレクトティーチ画像100に表示されたダイレクトティーチ開始ボタン画像102又はダイレクトティーチ終了ボタン画像104を選択することで、ダイレクトティーチ機能開始指令又はダイレクトティーチ機能終了指令をプロセッサ32に発信する場合について述べた。
【0080】
しかしながら、これに限らず、制御装置16又は教示装置18に、物理スイッチ(又は、物理ボタン)を設けて、該物理スイッチを操作することで、ダイレクトティーチ機能開始指令又はダイレクトティーチ機能終了指令を発信するように構成されてもよい。又は、オペレータがロボット12の任意の部位を手でタップすることで、プロセッサ32にダイレクトティーチ機能開始指令又はダイレクトティーチ機能終了指令を与えてもよい。プロセッサ32は、力センサ14の検出データDDから、オペレータによるロボット12へのタップ操作を検知できる。また、イネーブルスイッチ48は、教示装置18に限らず、制御装置16等に設けられてもよい。
【0081】
次に、
図7を参照して、ロボットシステム10の動作フローの他の例について説明する。
図7に示すフローでは、プロセッサ32は、上述のダイレクトティーチ機能FN2と、イネーブルスイッチ48を用いた他のダイレクトティーチ機能FN2’とを実行する。なお、
図7に示すフローにおいて、
図3のフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
図7に示すフローにおいては、プロセッサ32は、ステップS1でNOと判定した場合、又はステップS5の実行後、ステップS31へ進む。
【0082】
ステップS31において、プロセッサ32は、イネーブルスイッチ48がONになった(換言すれば、第1の押下位置P1まで押下された)か否かを判定する。具体的には、教示装置18のプロセッサは、イネーブルスイッチ48がONとなった場合は、イネーブルスイッチON信号を制御装置16に送信する。プロセッサ32は、イネーブルスイッチON信号を受け付けた場合はYESと判定し、ダイレクトティーチ機能FN2’を有効(ダイレクトティーチ機能FN2’の設定を「ON」、又は実行フラグを立てる)とし、後述のステップS3’を開始して、ステップS32へ進む。一方、プロセッサ32は、NOと判定した場合はステップS6へ進む。
【0083】
ステップS32において、プロセッサ32は、イネーブルスイッチ48がOFFになった(換言すれば、初期位置P0に復帰するか、又は第2の押下位置P2まで押下された)か否かを判定する。具体的には、教示装置18のプロセッサは、イネーブルスイッチ48がOFFとなった場合、イネーブルスイッチOFF信号を制御装置16に送信する。制御装置16のプロセッサ32は、イネーブルスイッチOFF信号を受け付けた場合はYESと判定し、ステップS33へ進む。一方、プロセッサ32は、NOと判定した場合はステップS32をループする。
【0084】
ステップS33において、プロセッサ32は、ダイレクトティーチ機能FN2’を無効(ダイレクトティーチ機能FN2’の設定を「OFF」、又は実行フラグを消去)とする。ここで、本実施形態においては、プロセッサ32は、ステップS31でYESと判定してダイレクトティーチ機能FN2’を有効としたとき、上述の安全機能FN1を無効とした状態で(すなわち、安全機能FN1を実行せずに)、ステップS3’のダイレクトティーチ機能FN2’を実行する。
【0085】
このステップS3’について、
図8を参照して説明する。
図8に示すフローは、
図6に示すフローと、ステップS24’において相違する。ステップS24’において、プロセッサ32は、上述のステップS33でダイレクトティーチ機能FN2’が無効にされたか否かを判定する。プロセッサ32は、YESと判定した場合は、上述の緊急停止動作ESを実行してロボット12の動作を停止させ、ステップS3’のダイレクトティーチ機能FN2’を終了する。一方、プロセッサ32は、NOと判定した場合はステップS21へ戻る。
【0086】
このように、他のダイレクトティーチ機能FN2’においては、プロセッサ32は、オペレータがイネーブルスイッチ48をONにしている間は、ダイレクトティーチ機能FN2’を実行し、イネーブルスイッチ48がOFFとなると、ダイレクトティーチ機能FN2’を終了する。換言すれば、オペレータは、他のダイレクトティーチ機能FN2’を実行するためには、イネーブルスイッチ48を継続的にONとし、制御装置16にイネーブルスイッチON信号を与え続ける必要がある。
【0087】
再度、
図7を参照して、ステップS4においてNOと判定された場合、ステップS34において、プロセッサ32は、上述のステップS31と同様に、イネーブルスイッチ48がONにされたか否かを判定する。プロセッサ32は、YESと判定した場合は、ステップS35に進む一方、NOと判定した場合はステップS4に戻る。
【0088】
ステップS35において、プロセッサ32は、上述のステップS5と同様に、ダイレクトティーチ機能FN2を無効とする。その結果、プロセッサ32は、上述のステップS14(
図5)、及びステップS24(
図6)でYESと判定することになり、ステップS2の安全機能FN1、及びステップS3のダイレクトティーチ機能FN2を終了する。その一方で、プロセッサ32は、ダイレクトティーチ機能FN2’を有効とし、ステップS3’を開始して、ステップS32へ進む。
【0089】
このように、本実施形態においては、プロセッサ32は、ステップS2及びS3を実行中にイネーブルスイッチ48がONとされた場合(ステップS34でYESと判定)、ステップS3’において、イネーブルスイッチ48を用いた他のダイレクトティーチ機能FN2’を優先的に実行している。
【0090】
この構成によれば、オペレータは、イネーブルスイッチ48を用いることなく安全機能FN1と並行して実行するダイレクトティーチ機能FN2と、イネーブルスイッチ48を用いる他のダイレクトティーチ機能FN2’とを、用途に応じて選択的に実行することができる。これにより、オペレータの利便性を向上させることができる。
【0091】
また、本実施形態においては、プロセッサ32は、ダイレクトティーチ実行部52として機能して、ステップS3のダイレクトティーチ機能FN2を実行するための指令を受け付けて該ダイレクトティーチ機能FN2を開始した後、該指令を再度受け付けることなく、該ダイレクトティーチ機能FN2を継続して実行する。
【0092】
より具体的には、プロセッサ32は、ステップS1でオペレータからダイレクトティーチ機能開始指令を受け付けて、ステップS3のダイレクトティーチ機能FN2を開始すると、ステップS4でダイレクトティーチ機能終了指令を受け付けるまで、ダイレクトティーチ機能FN2を実行するためのさらなる指令(例えば、ダイレクトティーチ機能開始指令、イネーブルスイッチON信号)を再度受け付けることなく、該ダイレクトティーチ機能FN2を継続して実行している。
【0093】
換言すれば、オペレータは、ダイレクトティーチ機能FN2の実行中は、入力装置40又は46、若しくはイネーブルスイッチ48を操作して、ダイレクトティーチ機能FN2を継続するための如何なる指令(例えば、ダイレクトティーチ機能開始指令、イネーブルスイッチON信号)も入力する必要がない。
【0094】
これに対し、他のダイレクトティーチ機能FN2’においては、上述したように、オペレータは、該ダイレクトティーチ機能FN2’を継続するためには、イネーブルスイッチ48を継続的にONとし、制御装置16にイネーブルスイッチON信号を与え続ける必要がある。したがって、ステップS3のダイレクトティーチ機能FN2によれば、オペレータの操作を簡易化できる。
【0095】
次に、
図9を参照して、ロボットシステム10の他の機能について説明する。本実施形態においては、オペレータは、安全機能FN1の有効又は無効を選択できるようになっている。具体的には、教示装置18のプロセッ
サは、安全機能設定画像106を生成し、教示装置18の表示装置44に表示する。安全機能設定画像106の一例を、
図10に示す。
【0096】
図10に示す例では、安全機能設定画像106は、有効ボタン画像108と、無効ボタン画像110とを含む。オペレータは、入力装置46を操作して、安全機能設定画像106に表示された有効ボタン画像108又は無効ボタン画像110をクリックすることで、有効ボタン画像108又は無効ボタン画像110を選択できるようになっている。
【0097】
教示装置18のプロセッサは、有効ボタン画像108を選択する入力を受け付けると、安全機能FN1を有効にするための安全機能有効指令を制御装置16に送信する一方、無効ボタン画像110を選択する入力を受け付けると、安全機能FN1を無効にするための安全機能無効指令を制御装置16に送信する。
【0098】
制御装置16のプロセッサ32は、安全機能有効指令又は安全機能無効指令に応じて、安全機能FN1を有効又は無効に設定する。このように、本実施形態においては、プロセッサ32は、安全機能実行部50として実行する安全機能FN1を有効又は無効に切り替える機能切替部56(
図9)として機能する。
【0099】
安全機能FN1が無効に設定されている間、プロセッサ32は、安全機能実行部50として安全機能FN1を実行しない。例えば、オペレータは、ロボット12から十分に離れて安全を確保した上で、上述の自動運転機能FN4を実行し、ロボット12を高速動作させたい場合がある。この場合、オペレータは、安全機能FN1を無効に設定し、ロボット12を高速動作させることで、作業のサイクルタイムを縮減できる。
【0100】
次に、
図11を参照して、
図9に示す制御装置16が実行する動作フローついて説明する。なお、
図11に示すフローにおいて、
図3のフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
図11に示すフローにおいては、プロセッサ32は、ステップS1でYESと判定した場合、ダイレクトティーチ機能FN2を有効とする前に、ステップS41へ進む。
【0101】
ステップS41において、プロセッサ32は、安全機能FN1が有効になっているか、又は無効になっているかを判定する。プロセッサ32は、安全機能FN1が有効になっている場合はYESと判定し、ステップS43へ進む一方、安全機能FN1が無効になっている場合はNOと判定し、ステップS42へ進む。
【0102】
このように、本実施形態においては、プロセッサ32は、ダイレクトティーチ機能を開始するための指令(すなわち、上述のダイレクトティーチ機能開始指令)を受け付けたときに、安全機能FN1が有効になっているか、又は無効になっているかを判定する安全機能判定部58(
図9)として機能する。
【0103】
ステップS42において、プロセッサ32は、警告信号AL1を生成する。例えば、プロセッサ32は、「安全機能が無効になっています。安全機能を有効にしてください」という画像又は音声の警告信号AL1を生成する。そして、プロセッサ32は、生成した警告信号AL1を、表示装置42(又は、教示装置18の表示装置44)に表示するか、又は、制御装置16(又は、教示装置18)に設けられたスピーカを通して出力する。
【0104】
ステップS42の後、プロセッサ32は、ステップS41へ戻る。このように、本実施形態においては、プロセッサ32は、ステップS41でNOと判定している間は、ステップS2の安全機能FN1と、ステップS3のダイレクトティーチ機能FN2とを開始しない。
【0105】
ステップS43において、プロセッサ32は、ステップS12(
図5)で参照する安全機能FN1のための閾値Fc
th、V
th及びa
thを、第1の閾値Fc
th1、V
th1及びa
th1から、第2の閾値Fc
th2、V
th2及びa
th2へ切り替える。ここで、プロセッサ32は、上述の教示機能FN3、自動運転機能FN4、又は動作確認機能FN5と並行して、安全機能FN1を実行する場合がある。第1の閾値Fc
th1、V
th1及びa
th1は、ダイレクトティーチ機能FN2以外の、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5といった機能FNと並行して実行される安全機能FN1で参照される。
【0106】
一方、第2の閾値Fc
th2、V
th2及びa
th2は、
図11中のステップS2の安全機能FN
1で参照されるものであって、第1の閾値Fc
th1、V
th1及びa
th1よりも大きな値(つまり、Fc
th2>Fc
th1、V
th2>V
th1、a
th2>a
th1)として、予め定められる。
【0107】
このステップS43の後、プロセッサ32は、ダイレクトティーチ機能FN2を有効とし、ステップS2及びS3を開始して、ステップS4へ進む。そして、プロセッサ32は、ステップS2及びS3を並行して実行し、該ステップS2中のステップS12において、動作パラメータOP(接触力Fc、速度V、及び加速度a)が、ステップS43で切り替えた第2の閾値Fcth2、Vth2及びath2を超えたか否かを判定する。
【0108】
その後、プロセッサ32は、例えば、
図11中のステップS5を実行したとき(又は、ステップS6でYESしたとき)に、安全機能FN1のための閾値Fc
th、V
th及びa
thを、第2の閾値Fc
th2、V
th2及びa
th2から第1の閾値Fc
th1、V
th1及びa
th1へ切り替える。
【0109】
このように、本実施形態においては、プロセッサ32は、閾値Fc
th、V
th、a
thを、ダイレクトティーチ機能FN2以外の機能FN3、FN4、FN5のための第1の閾値Fc
th1、V
th1、a
th1と、該第1の閾値Fc
th1、V
th1、a
th1よりも大きい第2の閾値Fc
th2、V
th2、a
th2との間で切り替える閾値切替部60(
図9)として機能する。
【0110】
以上のように、本実施形態においては、制御装置16は、安全機能実行部50による安全機能FN1を有効又は無効に切り替える機能切替部56と、ダイレクトティーチ実行部52がダイレクトティーチ機能FN2を実行するときに、安全機能FN1が有効になっているか、又は無効になっているかを判定する安全機能判定部58とをさらに備える。具体的には、安全機能判定部58は、ダイレクトティーチ機能FN2を開始するための指令(つまり、ダイレクトティーチ機能開始指令)を受け付けたとき(ステップS1でYESと判定したとき)に、安全機能FN1の有効又は無効を判定している(ステップS41)。
【0111】
そして、ダイレクトティーチ実行部52は、安全機能判定部58によって安全機能FN1が無効になっている(ステップS41でNO)と判定した場合は、ダイレクトティーチ機能FN2(ステップS3)を実行しない。この構成によれば、
図11中のステップS3において、安全機能FN1を有効とせずにダイレクトティーチ機能FN2を実行してしまうのを、確実に回避できる。そのため、オペレータの安全を確実に確保できる。
【0112】
また、本実施形態においては、制御装置16は、閾値Fcth、Vth、athを、第1の閾値Fcth1、Vth1、ath1と、該第1の閾値Fcth1、Vth1、ath1よりも大きい第2の閾値Fcth2、Vth2、ath2との間で切り替える閾値切替部60をさらに備える。そして、閾値切替部60は、ダイレクトティーチ実行部52がダイレクトティーチ機能FN2を開始するときに、閾値Fcth、Vth、athを、第1の閾値Fcth1、Vth1、ath1から第2の閾値Fcth2、Vth2、ath2に切り替える(ステップS43)。
【0113】
この構成によれば、ステップS2及びS3を並行して実行しているときに、ステップS2中のステップS12で、オペレータがロボット12に加えた操作力FhによってYESと判定してしまうのを、確実に避けることができる。したがって、ダイレクトティーチ機能FN2におけるロボット12の動作が不要に停止してしまうのを避けることができるとともに、安全機能FN1によってオペレータの安全を確実に確保できる。
【0114】
なお、本実施形態においては、教示装置18のプロセッサが、安全機能設定画像106を生成して、教示装置18の表示装置44に表示する場合について述べた。しかしながら、これに限らず、制御装置16のプロセッサ32が、安全機能設定画像106を生成して、表示装置42に表示してもよい。
【0115】
この場合において、オペレータは、入力装置40を操作して、表示装置42に表示された安全機能設定画像106において、有効ボタン画像108又は無効ボタン画像110を選択してもよい。オペレータが有効ボタン画像108を選択すると、制御装置16のプロセッサ32は、入力装置40を通して安全機能有効指令を受け付けることになる。
【0116】
なお、本実施形態においては、オペレータが安全機能FN1を有効又は無効に選択する入力を手動で教示装置18のプロセッサ(又は、制御装置16のプロセッサ32)に与える場合について述べた。しかしながら、これに限らず、制御装置16のプロセッサ32は、機能切替部56として機能して、オペレータからの入力を受けることなく、安全機能FN1を有効又は無効に自動で設定してもよい。
【0117】
例えば、ロボットシステム10は、ロボット12の周囲に存在する物体(例えば、オペレータ)を検知可能な物体検知センサ(カメラ、レーザスキャナ等)をさらに備える。この場合において、プロセッサ32は、機能切替部56として機能して、物体検知センサがロボット12の周囲に在る物体を検知したときは、安全機能FN1を有効に切り替える。
【0118】
その一方で、プロセッサ32は、物体検知センサがロボット12の周囲から該物体が離反したことを検知したときに、安全機能FN1を無効に切り替えるとともに、ロボット12の最大速度VMAXの設定値を、より高い値に切り替えてもよい。これにより、例えば自動運転機能FN4を実行するときに、ロボット12を高速動作させることができる。
【0119】
なお、
図11のステップS43を、ステップS41の前(つまり、ステップS1でYESと判定したとき)に実行してもよい。また、
図11のフローから、ステップS41及びS42を省略してもよい。この場合、
図9に示す制御装置16から機能切替部56を省略できる。
【0120】
代替的には、
図11のフローから、ステップS43を省略してもよい。この場合、
図9に示す制御装置16から閾値切替部60を省略できる。また、
図11のステップS41~S43を、
図7に示すフロー(つまり、ステップS1でYESと判定した後)に適用することができることを理解されよう。
【0121】
なお、プロセッサ32は、
図11中のステップS3(ダイレクトティーチ機能FN2)を実行しているときに、安全機能判定部58として機能して、安全機能FN1の有効又は無効を判定し、無効となった場合はダイレクトティーチ機能FN2を終了してもよい。このようなダイレクトティーチ機能FN2のフローを、
図12に示す。
【0122】
図12に示すステップS3のフローにおいては、ステップS24でNOと判定したとき、ステップS25において、プロセッサ32は、安全機能判定部58として機能して、上述のステップS41と同様に、安全機能FN1が有効になっているか、又は無効になっているかを判定する。
【0123】
プロセッサ32は、YESと判定した場合はステップS21へ戻る一方、NOと判定した場合(つまり、安全機能FN1が無効にされた場合)は、ステップS3のダイレクトティーチ機能FN2を終了する。このように、ダイレクトティーチ機能FN2の実行中に安全機能FN1が無効にされた場合に該ダイレクトティーチ機能FN2を終了することで、オペレータの安全を、より確実に確保できる。なお、プロセッサ32は、ステップS25でNOと判定したとき、上述のステップS42を実行し、警告信号AL1を生成してもよい。
【0124】
なお、プロセッサ32は、
図11のフローからステップS43を省略し、
図11中のステップS2(安全機能FN1)及びステップS3(ダイレクトティーチ機能FN2)を実行しているときに、閾値切替部60として機能して、動作パラメータOP(接触力Fc、速度V、及び加速度a)が第3の閾値Fc
th3、V
th3及びa
th3を超えたときに、ステップS2中のステップS12で参照する閾値Fc
th、V
th及びa
thを、第1の閾値Fc
th1、V
th1及びa
th1から、第2の閾値Fc
th2、V
th2及びa
th2へ切り替えてもよい。このようなステップS2のフローを、
図13に示す。
【0125】
図13に示すステップS2のフローにおいては、ステップS11の後、ステップS15
において、プロセッサ32は、直近のステップS11で取得した動作パラメータOP(接触力Fc、速度V、及び加速度a)が、第3の閾値Fc
th3、V
th3及びa
th3よりも小さいか否かを判定する。
【0126】
この第3の閾値Fcth3、Vth3及びath3は、ステップS12で参照される閾値Fcth、Vth及びath(具体的には、上述の第1の閾値Fcth1、Vth1及びath1、並びに、第2の閾値Fcth2、Vth2及びath2)よりも小さい値(つまり、Fcth3<Fcth1<Fcth2、Vth3<Vth1<Vth2、ath3<ath1<ath2)に設定される。
【0127】
プロセッサ32は、Fc<Fcth3、V<Vth3、且つ、a<ath3である場合はYESと判定し、ステップS16へ進む一方、Fc≧Fcth3、V≧Vth3、又は、a≧ath3である場合(すなわち、動作パラメータOPの少なくとも1つが第3の閾値Fcth3、Vth3又はath3を超えたとき)はNOと判定し、ステップS17へ進む。なお、プロセッサ32は、このステップS15において、動作パラメータOPのうち、速度V及び加速度aが、第3の閾値Vth3及びath3よりも小さいか否かを判定してもよい。
【0128】
ステップS16において、プロセッサ32は、閾値切替部60として機能して、ステップS12で参照する閾値Fcth、Vth及びathを、第1の閾値Fcth1、Vth1及びath1に設定する。
【0129】
一方、ステップS15でNOと判定したとき(すなわち、動作パラメータOPが第3の閾値Fcth3、Vth3又はath3を超えたとき)、ステップS17において、プロセッサ32は、閾値切替部60として機能して、ステップS12で参照する閾値Fcth、Vth及びathを、第2の閾値Fcth2、Vth2及びath2に設定する。なお、プロセッサ32は、このステップS17において、接触力Fcに対する閾値Fcthを第2の閾値Fcth2
に設定する一方で、速度Vに対する閾値Vthと、加速度aに対する閾値athとは、第1の閾値Vth1及びath1に維持してもよい。
【0130】
その後、プロセッサ32は、ステップS12において、この時点で設定されている第1の閾値Fcth1、Vth1又はath1、又は、第2の閾値Fcth2、Vth2及びath2を参照し、動作パラメータOPが、該第1の閾値Fcth1、Vth1及びath1、又は、該第2の閾値Fcth2、Vth2及びath2を超えたか否かを判定する。
【0131】
このように、
図13に示すフローにおいては、プロセッサ32は、動作パラメータOPの少なくとも1つが第3の閾値Fc
th3、V
th3又はa
th3を超えたときに、ステップS12で参照する閾値Fc
th、V
th及びa
thを、第1の閾値Fc
th1、V
th1及びa
th1から、第2の閾値Fc
th2、V
th2及びa
th2へ切り替える(ステップS17)。
【0132】
その一方で、プロセッサ32は、動作パラメータOPが第3の閾値Fcth3、Vth3又はath3よりも小さくなると(すなわち、ステップS15でYESと判定すると)、ステップS12で参照する閾値Fcth、Vth及びathを、第2の閾値Fcth2、Vth2及びath2から第1の閾値Fcth1、Vth1及びath1へ切り替える。
【0133】
ここで、このステップS2と並行して実行するステップS3(ダイレクトティーチ機能FN2)においてオペレータがロボット12に加える操作力Fhが大きくなると、動作パラメータOP(速度V、加速度a)も大きくなる。また、力センサ14が検出する外力Fに、操作力Fhの成分も含まれることになる。
【0134】
本実施形態によれば、上述のように動作パラメータOPに応じて閾値Fcth、Vth、athを切り替えることによって、オペレータがロボット12に加えた操作力Fhに起因してステップS12でYESと判定し、その結果、ステップS13を実行してしまうのを、確実に回避できる。その一方で、動作パラメータOPが小さいときは、ロボット12が周囲の物体と接触したことを、より確実に検出できる。
【0135】
また、本実施形態の一例において、プロセッサ32は、ステップS15において、動作パラメータOPのうち、速度V又は加速度aが、第3の閾値Vth3又はath3よりも小さいか否かを判定する。そして、プロセッサ32は、ステップS16及びS17において、速度V又は加速度aに応じて、接触力Fcに対する閾値Fcthを、第1の閾値Fcth1と第2の閾値Fcth2との間で切り替える。
【0136】
そして、プロセッサ32は、ステップS12において、この時点で設定されている第1の閾値Fcth1又は第2の閾値Fcth2を参照し、動作パラメータOPとして取得した接触力Fcが、該第1の閾値Fcth1
又は該第2の閾値Fcth2を超えたか否かを判定している。
【0137】
すなわち、この場合、プロセッサ32は、ステップS15で、動作パラメータOPの一方(速度V、加速度a)が第3の閾値(Vth3、ath3)よりも小さいか否かを判定し、ステップS16及びS17で、動作パラメータOPの他方(接触力Fc)に対する閾値(Fcth)を、第1の閾値(Fcth1)と第2の閾値(Fcth2)との間で切り替えている。
【0138】
そして、プロセッサ32は、ステップS12で、動作パラメータOPの他方が、切り替え後の閾値(Fcth1又はFcth2)を超えたか否かを判定する。この構成によれば、ダイレクトティーチ機能FN2でロボット12に加えられた操作力Fhに起因してステップS13を実行してしまうのを、より確実に回避できる。
【0139】
なお、プロセッサ32は、
図11のフローでステップS43を実行するとともに、
図11中のステップS2において、
図13のフローを実行してもよい。この場合、プロセッサ32は、
図13のステップS16において、閾値切替部60として機能して、ステップS12で参照する閾値Fc
th、V
th及びa
thを、ステップS43で切り替えた第2の閾値Fc
th2、V
th2及びa
th2に設定する。
【0140】
一方、プロセッサ32は、
図13のステップS17において、閾値切替部60として機能して、ステップS12で参照する閾値Fc
th、V
th及びa
thを、第4の閾値Fc
th4、V
th4及びa
th4に設定する。この第4の閾値Fc
th4、V
th4及びa
th4は、第2の閾値Fc
th2、V
th2及びa
th2よりも大きな値(つまり、Fc
th4>Fc
th2、V
th4>V
th2、a
th4>a
th2)に設定される。
【0141】
すなわち、この場合、プロセッサ32は、閾値切替部60として機能して、動作パラメータOPに応じて、ステップS12で参照する閾値Fcth、Vth及びathを、閾値Fcth2、Vth2、ath2(第1の閾値)と、閾値Fcth4、Vth4、ath4(第2の閾値)との間で切り替えることになる。この場合において、プロセッサ32は、ステップS15で、動作パラメータOPの一方(速度V、加速度a)が第3の閾値(Vth3、ath3)よりも小さいか否かを判定し、ステップS16及びS17で、動作パラメータOPの他方(接触力Fc)に対する閾値(Fcth)を、第1の閾値(Fcth2)と第2の閾値(Fcth4)との間で切り替えてもよい。
【0142】
次に、
図14及び
図15を参照して、力センサ14の種々の形態について説明する。力センサ14は、上述のトルクセンサ14A及び力覚センサ14Bの少なくとも1つを有し得る。
図14は、一実施形態に係るトルクセンサ14Aを示す。トルクセンサ14Aは、アクチュエータ31の出力シャフト31aに設けられている。具体的には、トルクセンサ14Aは、中心軸線A1を有する円筒状の本体部150と、該本体部150に内蔵された一対のセンサ素子152a及び152bとを有する。本体部150は、出力シャフト31aを環囲するように、該出力シャフト31aに同軸状に嵌着されている。
【0143】
一対のセンサ素子152a及び152bの各々は、例えば、半導体歪ゲージ若しくは金属箔歪ゲージ等の歪ゲージ、近接センサ、オプトセンサ、レーザ式若しくは静電容量式の変位計、又は、光学式若しくは磁気式のエンコーダを有する。センサ素子152a及び152bは、出力シャフト31aに掛かるトルクτに起因して本体部150に生じる歪み、変形又は変位を電気信号に変換し、検出データDDτa及びDDτbとして、それぞれ出力する。
【0144】
センサ素子152aから出力された検出データDDτaは、信号線L1を通して、制御装置16に供給される。センサ素子152a及び信号線L1は第1の系統の検出部154aを構成する。また、センサ素子152bから出力された検出データDDτbは、信号線L1から独立した(具体的には、絶縁された)信号線L2を通して、制御装置16に供給される。センサ素子152b及び信号線L2は第2の系統の検出部154bを構成する。
【0145】
なお、信号線L1及びL2は、有線であってもよいし、又は無線(つまり、無線通信の伝送路)であってもよい。このように、本実施形態においては、センサ素子152aの検出データDDτaと、センサ素子152bの検出データDDτbとは、互いに独立した別々の信号線L1及びL2を通して、制御装置16に個別に供給される。
【0146】
一対のセンサ素子152a及び152bは、一方向の力(具体的には、出力シャフト31aから本体部150の周方向に掛かるトルクτ)をともに検出するように、本体部150の同じ部位に隣接して配置されている。したがって、センサ素子152aの検出データDDτaと、センサ素子152bの検出データDDτbとは、略同等となる。例えば、センサ素子152a及び152bは、互いに重ねて(又は平行に)配置されてもよい。このように、本実施形態においては、別々の2つ系統の検出部154a及び154bが、一方向の力(トルクτ)をともに検出し、各々が検出データDDτa及びDDτbを制御装置16に個別に供給する。
【0147】
一方、
図15は、一実施形態に係る力覚センサ14Bを示す。力覚センサ14Bは、6軸力覚センサであって、例えば、ロボットベース20に設けられる。具体的には、力覚センサ14Bは、中心軸線A2を有する円筒状の本体部160と、該本体部160に設けられた複数対のセンサ素子162a及び162bとを有する。本体部160は、周方向に延在し、軸方向に互いに離隔する一対のリング部160a及び160bと、該リング部160a及び160bの間で延在し、周方向に略等間隔で配設された複数の柱部160cとを有する。
【0148】
図15に示す例では、リング部160a及び柱部160cの各々に、一対のセンサ素子162a及び162bが設けられている。一対のセンサ素子162a及び162bの各々は、上述のセンサ素子152a及び152bと同様に、半導体歪ゲージ若しくは金属箔歪ゲージ等の歪ゲージ、近接センサ、オプトセンサ、レーザ式若しくは静電容量式の変位計、又は、光学式若しくは磁気式のエンコーダ等を有する。センサ素子162a及び162bは、本体部
160に作用する力fに起因して該本体部
160に生じる歪み、変形又は変位を電気信号に変換し、検出データDDf
a及びDDf
bとして、それぞれ出力する。
【0149】
リング部160aに設けられた一対のセンサ素子162a及び162bは、一方向の力(具体的には、リング部160aの軸方向に掛かる力f)をともに検出するように、リング部160aの同じ部位に隣接して配置されている。同様に、柱部160cに設けられた一対のセンサ素子162a及び162bは、一方向の力(具体的には、柱部160cに掛かる軸線A2周りの方向の力f)をともに検出するように、柱部160cの同じ部位に隣接して配置されている。センサ素子162aの検出データDDfaと、センサ素子162bの検出データDDfbとは、略同等となる。例えば、センサ素子162a及び162bは、互いに重ねて(又は平行に)配置されてもよい。
【0150】
各々のセンサ素子162aから出力された検出データDDfaは、信号線L1を通して、制御装置16に供給される。センサ素子162a及び信号線L1は第1の系統の検出部164aを構成する。制御装置16は、各センサ素子162aの検出データDDfaに基づいて、所定の演算CL3を実行することにより、力覚センサ14Bの本体部160に設定されたセンサ座標系C3のx軸方向の力fx、y軸方向の力fy、及びz軸方向の力fzと、x軸周りのトルクτx、y軸周りのトルクτy、及びz軸周りのトルクτxとの、6軸方向の力を検出する。
【0151】
センサ座標系C3は、力覚センサ14Bの検出データDDfから、ロボット12に加えられた外力Fを演算により求めるための制御座標系である。センサ座標系C3は、例えば、その原点が本体部160の中心軸線A2上(例えば、中心点)に配置され、そのz軸が本体部160の中心軸線A2に一致するように、本体部160に対して設定される。制御装置16は、このように求めた6軸方向の力fx、fy、fz、τx、τy及びτzから、ロボット12に加えられた外力Fの大きさ及び方向を求めることができるとともに、該外力Fが加えられたロボット12の部位を特定できる。
【0152】
また、各々のセンサ素子162bから出力された検出データDDfbは、信号線L2を通して、制御装置16に供給される。センサ素子162b及び信号線L2は第2の系統の検出部164bを構成する。制御装置16は、各センサ素子162bの検出データDDfbに基づいて、所定の演算CL3を実行することにより、上述した6軸方向の力fx、fy、fz、τx、τy及びτzを求め、これにより、ロボット12に加えられた外力Fの大きさ及び方向と、該外力Fが加えられたロボット12の部位とを特定できる。このように、本実施形態においては、別々の2つ系統の検出部164a及び164bが、一方向の力fをともに検出し、各々が検出データDDfa及びDDfbを制御装置16に個別に供給する。
【0153】
次に、
図16を参照して、
図14に示すトルクセンサ14Aの検出データDDτ
a及びDDτ
bに基づいて実行される安全機能FN1及びダイレクトティーチ機能FN2について説明する。本実施形態においては、安全機能実行部50(具体的には、プロセッサ32)は、第1の系統の検出部154a(つまり、一方のセンサ素子152a)の検出データDDτ
aに基づいて求めた第1の接触力Fc
aを監視する第1の安全機能FN1
aと、第2の系統の検出部154b(つまり、他方のセンサ素子152b)の検出データDDτ
bに基づいて求めた第2の接触力Fc
bを監視する第2の安全機能FN1
bとを、並行して実行する。第1の安全機能FN1
a及び第2の安全機能FN1
bの各々は、例えば、
図5に示すステップS2のフローである。
【0154】
つまり、安全機能実行部50は、第1の安全機能FN1aとして、信号線L1を通して各トルクセンサ14Aの一方のセンサ素子152aから取得した検出データDDτaに基づいて、ステップS2のフローを実行する。該第1の安全機能FN1aと並行して、安全機能実行部50は、第2の安全機能FN1
b
として、信号線L2を通して各トルクセンサ14Aの他方のセンサ素子152bから取得した検出データDDτbに基づいて、ステップS2のフローを実行する。したがって、第1の安全機能FN1aとして実行したステップS12と、第2の安全機能FN1bとして実行したステップS12とのいずれか一方でYESと判定した場合に、ロボット12は停止されることになる(ステップS13)。
【0155】
このように、第1の安全機能FN1aと第2の安全機能FN1bとを、別々の系統の検出部154a及び154b(つまり、異なるセンサ素子152a及び152b)の検出データDDτa及びDDτbに基づいて個別に実行することで、仮に、一方の系統の検出部154a(例えば、センサ素子152a)が故障したとしても、他方の系統の検出部154b(例えば、センサ素子152b)の検出データDDτbを用いて第2の安全機能FN1bを継続して実行できる。したがって、オペレータの安全を、さらに確実に確保できる。
【0156】
一方、ダイレクトティーチ実行部52(プロセッサ32)は、安全機能実行部50が実行する第1の安全機能FN1
a及び第2の安全機能FN1
bと並行して、ダイレクトティーチ機能FN2(
図6に示すステップS3)を実行する。具体的には、ダイレクトティーチ実行部52は、信号線L1を通して各トルクセンサ14Aの一方のセンサ素子152aから取得した検出データDDτ
aに基づいて、ステップS3のフローを実行する。このとき、ダイレクトティーチ実行部52は、ステップS3中のステップS21において、一方の系統の検出部154a(つまり、一方のセンサ素子152a)の検出データDDτ
aに基づいて操作力Fhを求める。
【0157】
なお、
図15に示す力覚センサ14Bの検出データDDf
a及びDDf
bに基づいて実行される安全機能FN1
a及びFN1
bと、ダイレクトティーチ機能FN2とについても、トルクセンサ14Aを用いる場合と同様である。具体的には、安全機能実行部50は、第1の系統の検出部164a(つまり、一方のセンサ素子162aの各々)の検出データDDf
aに基づいて求めた第1の接触力Fc
aを監視する第1の安全機能FN1
a(
図5のフロー)と、第2の系統の検出部164bの(つまり、他方のセンサ素子162bの各々)の検出データDDf
bに基づいて求めた第2の接触力Fc
bを監視する第2の安全機能FN1
b(
図5のフロー)とを、並行して実行する。
【0158】
また、ダイレクトティーチ実行部52は、第1の安全機能FN1
a及び第2の安全機能FN1
bと並行して、力覚センサ14Bの一方のセンサ素子162aの各々から、信号線L1を通して取得した、第1の系統の検出部164aの検出データDDf
aに基づいて操作力Fhを求め、これにより、ダイレクトティーチ機能FN2(
図6のフロー)を実行する。
【0159】
なお、
図16に示す制御装置16のプロセッサ32は、
図3又は
図7に示すフローを実行してもよい。
図7のフローを実行する場合、ステップS3’において、プロセッサ32は、ダイレクトティーチ実行部52として機能して、一方のセンサ素子152a又は162aから取得した、第1の系統の検出部154a又は164aの検出データDDτ
a又はDDf
aに基づいて、
図8に示すダイレクトティーチ機能FN2’のフローを実行する。
【0160】
また、プロセッサ32は、第1の安全機能FN1aとして実行するステップS2中のステップS11~S14のループと、第2の安全機能FN1bとして実行するステップS2中のステップS11~S14のループと、ダイレクトティーチ機能FN2として実行するステップS3中のステップS21~S24のループとを、互いに同期して(又は、交互に)、所定の制御周期(例えば、1[msec])で実行してもよい。
【0161】
なお、プロセッサ32は、第1の安全機能FN1
aとダイレクトティーチ機能FN2とを実行する第1のプロセッサ32Aと、第2の安全機能FN1
bを実行する第2のプロセッサ32Bとを有してもよい。このような形態を
図17に示す。この形態においては、第1のプロセッサ32A及び第2のプロセッサ32Bは、安全機能実行部50として機能する一方、第1のプロセッサ32Aは、ダイレクトティーチ実行部52として機能する。
【0162】
なお、
図17に示す形態に限らず、プロセッサ32は、第1の安全機能FN1
aを実行する第1のプロセッサ32Aと、第2の安全機能FN1
bを実行する第2のプロセッサ32Bと、ダイレクトティーチ機能FN2を実行する第3のプロセッサ32Cとを有してもよい。
【0163】
なお、ダイレクトティーチ実行部52は、ダイレクトティーチ機能FN2において、第1の系統の検出部154a(又は164a)の検出データDDτa(又はDDfa)と、第2の系統の検出部154b(又は164b)の検出データDDτb(又はDDfb)との双方に基づいて、操作力Fhを求めてもよい。
【0164】
例えば、
図14のトルクセンサ14Aを用いてダイレクトティーチ機能FN2を実行する場合、ダイレクトティーチ実行部52は、一方のセンサ素子152aの検出データDDτ
aと、他方のセンサ素子152bの検出データDDτ
bとの平均値DDτ
AVEを求め、該平均値DDτ
AVEに基づいて、操作力Fhを求めてもよい。
【0165】
代替的には、プロセッサ32は、第1の系統の検出部154a(又は164a)の検出データDDτa(又はDDfa)と、第2の系統の検出部154b(又は164b)の検出データDDτb(又はDDfb)との大きい方(又は、小さい方)を選択し、選択した該大きい方(又は、小さい方)を用いて、操作力Fhを求めてもよい。
【0166】
なお、
図16又は
図17に示す制御装置16のプロセッサ32は、第1の安全機能FN1
a及び第2の安全機能FN1
bを実行しているときに、第1の系統の検出部154a又は164a(例えば、一方のセンサ素子152a又は162a)と、第2の系統の検出部154b又は164b(例えば、他方のセンサ素子152b又は162b)とのいずれか一方が故障したか否かを検知する故障検知機能FN6を並行して実行してもよい。この故障検知機能FN6について、
図18を参照して説明する。
【0167】
プロセッサ32は、故障検知機能FN6が有効とされたときに、
図18に示すフローを開始する。この故障検知機能FN6は、例えば、安全機能FN1(第1の安全機能FN1
a及び第2の安全機能FN1
b)を開始するときに、プロセッサ32によって自動的に有効にされてもよい。以下、力センサ14がトルクセンサ14Aを有する場合の故障検知機能FN6について説明する。
【0168】
ステップS51において、プロセッサ32は、2系統の検出部154a及び154b(具体的には、一対のセンサ素子152a及び152b)の検出データDDτa及びDDτbを取得する。例えば、プロセッサ32は、このステップS51で、一対のセンサ素子152a及び152bが同じ時点(又は、極近い時点)で検出した検出データDDτa及びDDτbをそれぞれ取得する。
【0169】
ステップS52において、プロセッサ32は、直近のステップS51で取得した検出データDDτa及びDDτbが互いに異なっているか否かを判定する。例えば、プロセッサ32は、検出データDDτa及びDDτbの差ΔDが所定の閾値ΔDthを超えた(ΔD≧ΔDth)ときに、検出データDDτa及びDDτbが互いに異なっている(すなわち、YES)と判定する。プロセッサ32は、YESと判定した場合はステップS54へ進む一方、NOと判定した場合はステップS53へ進む。
【0170】
ステップS53において、プロセッサ32は、故障検知機能FN6が無効にされたか否かを判定する。プロセッサ32は、YESと判定した場合は、故障検知機能FN6を終了する一方、NOと判定した場合はステップS51へ戻る。
【0171】
一方、ステップS52でYESと判定した場合、ステップS54において、プロセッサ32は、警告信号AL2を生成する。例えば、プロセッサ32は、「力センサが故障した可能性があります。力センサのメンテナンスをしてください。」という画像又は音声の警告信号AL2を生成し、表示装置42又は44、若しくはスピーカに出力してもよい。
【0172】
なお、ステップS52でYESと判定したとき、プロセッサ32は、上述の緊急停止動作ESを実行し、ロボット12を停止してもよい。また、プロセッサ32は、安全機能FN1(第1の安全機能FN1a及び第2の安全機能FN1b)として実行するステップS2中のステップS11~S14のループと、故障検知機能FN6として実行するステップS51~S53のループとを、互いに同期して(又は、交互に)、所定の制御周期(例えば、1[msec])で実行してもよい。
【0173】
次に、
図19及び
図20を参照して、ロボットシステム10のさらに他の機能について説明する。本実施形態においては、制御装置16は、さらに他の実施形態に係るダイレクトティーチ機能FN2
_1として、
図20に示すフローを実行する。なお、
図20に示すフローにおいて、
図6に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0174】
図20に示すフローにおいては、プロセッサ32は、ダイレクトティーチ実行部52として機能して、ステップS21~S23を実行し、該ステップS23の後に、ステップS61~S66を実行する。ステップS61において、プロセッサ32は、動作パラメータ取得部54として機能し、動作パラメータOPを取得する。
【0175】
本実施形態においては、プロセッサ32は、このステップS61において、動作パラメータOPとして、ロボット12の速度V及び加速度aの少なくとも一方を取得する。以下、このステップS61でプロセッサ32が、動作パラメータOPとして速度Vを取得する場合について説明する。
【0176】
ステップS62において、プロセッサ32は、直近のステップS61で取得した動作パラメータOP(速度V)が第1の範囲内にあるかを判定する。具体的には、プロセッサ32は、直近のステップS61で取得した速度Vが、第1の範囲[Vth11≦V<Vth12]内であるか否かを判定する。この第1の範囲を画定する閾値Vth11及びVth12は、オペレータによって予め定められ得る。なお、最も小さい閾値Vth11は、例えばゼロに設定される。プロセッサ32は、Vth11≦V<Vth12である場合はYESと判定し、ステップS63へ進む一方、NOと判定した場合(つまり、Vth12≦V)は、ステップS64へ進む。
【0177】
ステップS63において、プロセッサ32は、ロボット12に加えられた操作力Fhに対する抵抗力RFを、第1の抵抗力RF1に設定する。ここで、ロボット12の加速度aの最大値を規定する加速度設定値αが、制御装置16に予め設定されている。この加速度設定値αが大きい値になるほど、操作力Fhに従って動作するときのロボット12の加速度aが大きくなり得る。この場合、オペレータが加えた操作力Fhに対するロボット12の応答が高速化する(換言すれば、操作感が軽くなる)ので、操作力Fhに対する抵抗力RFが低くなる。
【0178】
反対に、加速度設定値αが小さい値になるほど、操作力Fhに従って動作するときのロボット12の加速度aが小さくなる。この場合、オペレータが加えた操作力Fhに対するロボット12の応答が低速化する(換言すれば、操作感が重くなる)ので、操作力Fhに対する抵抗力RFが増大することになる。
【0179】
そこで、本実施形態においては、プロセッサ32は、ステップS61で取得した速度Vに応じて加速度設定値αを変更することで、操作力Fhに対する抵抗力RFを変化させる。このステップS63においては、プロセッサ32は、加速度設定値αを、第1の加速度設定値α1に設定することで、操作力Fhに対する抵抗力RFを、第1の加速度設定値α1に対応する第1の抵抗力RF1に設定する。なお、第1の加速度設定値α1は、ダイレクトティーチ機能FN2_1の開始時点で設定されている初期値(又は、デフォルト値)であってもよい。
【0180】
一方、ステップS62でNOと判定した場合、ステップS64において、プロセッサ32は、直近のステップS61で取得した動作パラメータOP(速度V)が、第1の範囲よりも大きい第2の範囲内にあるかを判定する。具体的には、プロセッサ32は、直近のステップS61で取得した速度Vが、第2の範囲[Vth12≦V<Vth13]内にあるか否かを判定する。第2の範囲の上限を画定する閾値Vth13は、オペレータによって予め定められ得る。プロセッサ32は、Vth12≦V<Vth13である場合はYESと判定し、ステップS65へ進む一方、NOと判定した場合(つまり、Vth13≦Vの場合)は、ステップS66へ進む。
【0181】
ステップS65において、プロセッサ32は、ロボット12に加えられた操作力Fhに対する抵抗力RFを、第2の抵抗力RF2(>RF1)に設定する。具体的には、プロセッサ32は、加速度設定値αを、第2の加速度設定値α2(<α1)に設定することで、操作力Fhに対する抵抗力RFを、第1の抵抗力RF1よりも大きな第2の抵抗力RF2に設定できる。
【0182】
一方、ステップS64でNOと判定した場合、ステップS66において、プロセッサ32は、ロボット12に加えられた操作力Fhに対する抵抗力RFを、第3の抵抗力RF3(>RF2)に設定する。具体的には、プロセッサ32は、加速度設定値αを、第3の加速度設定値α3(<α2)に設定することで、操作力Fhに対する抵抗力RFを、第2の抵抗力RF2よりも大きな第3の抵抗力RF3に設定できる。
【0183】
こうして、プロセッサ32は、ステップS63、S65及びS66を実行することで、加速度設定値αを、α1、α2又はα3に変更し、これにより、操作力Fhに対する抵抗力RFを、ステップS61で取得した速度Vに応じて変化させることができる。したがって、プロセッサ32は、操作力Fhに対する抵抗力RFを変化させる抵抗力制御部62(
図19)として機能する。プロセッサ32は、抵抗力制御部62としてステップS63、S65又はS66を実行した後、ステップS24へ進み、ダイレクトティーチ機能FN2
_1が無効にされたか否かを判定する。
【0184】
こうして、プロセッサ32は、ダイレクトティーチ機能FN2_1の実行中に、ステップS61~S66を実行し、動作パラメータOP(具体的には、速度V)に応じて、操作力Fhに対する抵抗力RFを制御する。なお、詳細な説明は省略するが、プロセッサ32は、ステップS61で動作パラメータOPとして加速度aを取得した場合も、同様に、加速度aに基づいてステップS62~S66を実行できることを理解されたい。
【0185】
以上のように、本実施形態においては、制御装置16は、ダイレクトティーチ実行部52と、ダイレクトティーチ機能FN2_1の実行中にロボット12の速度V(又は加速度a)を取得する動作パラメータ取得部54と、動作パラメータ取得部54が取得した速度V(又は加速度a)に応じて、操作力Fhに対する抵抗力RFを変化させる抵抗力制御部62とを備えている。
【0186】
この構成によれば、ダイレクトティーチ機能FN2_1の実行中にロボット12の速度V(又は加速度a)が増大していることを、オペレータによるロボット12の操作感に対して抵抗力RFとしてフィードバックすることで、オペレータに直感的に認識させることができる。これにより、ダイレクトティーチ機能FN2_1の実行中に速度V(又は加速度a)が過度に増大するのを回避することができる。
【0187】
また、本実施形態においては、抵抗力制御部62は、動作パラメータ取得部54が取得した速度V(又は加速度a)に応じて、加速度aの最大値を規定する加速度設定値αを、α1、α2又はα3に変更することによって、抵抗力RFを変化させる。この構成によれば、プロセッサ32は、比較的簡単なアルゴリズムにより、抵抗力RFを迅速に変化させることができる。
【0188】
次に、
図21を参照して、さらに他の実施形態に係るダイレクトティーチ機能FN2
_2について説明する。
図19に示す制御装置16は、ダイレクトティーチ機能FN2
_2として、
図21に示すフローを実行する。なお、
図21に示すフローにおいて、
図20に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0189】
図21に示すフローにおいては、プロセッサ32は、ステップS22でYESと判定したとき、ステップS71を実行する。ステップS71において、プロセッサ32は、ダイレクトティーチ実行部52として機能して、直近のステップS21で取得した操作力Fhを特性データCDに適用することで、加速度設定値αを決定する。特性データCDは、操作力Fhと加速度設定値αとの関係を示すデータ(換言すれば、グラフ)である。特性データCDの例を、
図22に示す。
【0190】
図22に示す例では、第1の特性データCD1、第2の特性データCD2、及び第3の特性データCD3が示されている。第1の特性データCD1は、その傾きδα/δFhが最も大きい。したがって、第1の特性データCD1によれば、操作力Fhに対する加速度設定値α(つまり、ダイレクトティーチ機能FN2
_2の実行時におけるロボット12の加速度αの最大値)が、第2の特性データCD2、及び第3の特性データCD3よりも大きくなる。
【0191】
したがって、オペレータが加えた操作力Fhに対するロボット12の応答が高速化する(換言すれば、操作感が軽くなる)ので、操作力Fhに対する抵抗力RFが、第2の特性データCD2、及び第3の特性データCD3よりも低くなる。なお、第1の特性データCD1は、ダイレクトティーチ機能FN2_2の開始時点で特性データCDとして設定されている初期データ(又は、デフォルトデータ)であってもよい。
【0192】
一方、第3の特性データCD3は、その傾きδα/δFhが最も小さい。したがって、第3の特性データCD3によれば、操作力Fhに対する加速度設定値αが、第1の特性データCD1、及び第2の特性データCD2よりも小さくなる。したがって、オペレータが加えた操作力Fhに対するロボット12の応答が低速化する(換言すれば、操作感が重くなる)ので、操作力Fhに対する抵抗力RFが、第1の特性データCD1、及び第2の特性データCD2よりも大きくなる。
【0193】
そして、第2の特性データCD2によれば、抵抗力RFは、第1の特性データCD1、及び第3の特性データCD3の間の大きさとなる。このように、特性データCD1、CD2及びCD3は、操作力Fhに対する抵抗力RFと相関している。これら特性データCD1、CD2及びCD3は、メモリ34に予め格納される。
【0194】
図21中のステップS23でロボット12を動作させるために、これら特性データCD1、CD2及びCD3のうちの1つが選択されて、加速度設定値αを決定するための特性データCDとして設定される。例えば、このステップS71の開始時点で第1の特性データCD1が設定されていたとする。この場合、プロセッサ32は、このステップS71において、ダイレクトティーチ実行部52として機能して、直近のステップS21で取得した操作力Fhを、
図22に示す第1の特性データCD1に適用することで、加速度設定値αを決定する。
【0195】
そして、プロセッサ32は、ステップS23において、ダイレクトティーチ実行部52として機能して、直前のステップS71で決定した加速度設定値αを用いて、直近のステップS21で取得した操作力Fhに応じてロボット12を動作させる。このときに動作するロボット12の加速度aは、該加速度設定値α以下に制御されることになる。
【0196】
一方、ステップS62でYESと判定したとき、ステップS72において、プロセッサ32は、抵抗力制御部62として機能して、操作力Fhに対する抵抗力RFを、第1の抵抗力RF1に設定する。具体的には、プロセッサ32は、上述の特性データCDを、
図22中の第1の特性データCD1に設定する。上述したように、特性データCD1、CD2及びCD3は、抵抗力RFと相関している。したがって、第1の特性データCD1を選択することで、抵抗力RFを、該第1の特性データCD1に対応する第1の抵抗力RF1に設定できる。
【0197】
一方、ステップS63でYESと判定したとき、ステップS73において、プロセッサ32は、抵抗力制御部62として機能して、操作力Fhに対する抵抗力RFを、第2の抵抗力RF2に設定する。具体的には、プロセッサ32は、上述の特性データCDを、
図22中の第2の特性データCD2に設定する。
【0198】
これにより、抵抗力RFを、第2の特性データCD2に対応する第2の抵抗力RF2に設定できる。ここで、上述したように、第2の特性データCD2での第2の抵抗力RF2は、第1の特性データCD1での第1の抵抗力RF1よりも大きくなる(RF2>RF1)。
【0199】
一方、ステップS63でNOと判定したとき、ステップS74において、プロセッサ32は、抵抗力制御部62として機能して、操作力Fhに対する抵抗力RFを、第3の抵抗力RF
3に設定する。具体的には、プロセッサ32は、上述の特性データCDを、
図22中の第3の特性データCD3に設定する。
【0200】
これにより、抵抗力RFを、第3の特性データCD3に対応する第3の抵抗力RF3に設定できる。上述したように、第3の特性データCD3での第3の抵抗力RF3は、最も大きくなる(RF3>RF2>RF1)。プロセッサ32は、抵抗力制御部62としてステップS72、S73又はS74を実行した後、ステップS24へ進み、ダイレクトティーチ機能FN2_2が無効にされたか否かを判定する。
【0201】
以上のように、本実施形態においては、操作力Fhと加速度設定値αとの関係を示す特性データCD(CD1、CD2、CD3)が、メモリ34に予め記憶され、ダイレクトティーチ実行部52は、操作力Fhを特性データCDに適用することで、ダイレクトティーチ機能FN2_2の実行時の加速度設定値αを決定する(ステップS71)。
【0202】
そして、抵抗力制御部62は、動作パラメータ取得部54が取得した速度V(又は加速度a)に応じて、特性データCDを、第1の特性データCD1、第2の特性データCD2、又は第3の特性データCD3に変更することによって、抵抗力RFを変化させている(ステップS72、S73、S74)。この構成によれば、プロセッサ32は、オペレータによるロボット12の操作感(つまり、操作感の重さ、軽さ)を、より円滑に変化させることができるので、該操作感を向上させることができる。
【0203】
なお、本実施形態においては、3つの特性データCD1、CD2及びCD3がメモリ34に予め格納されている場合について述べた。しかしながら、特性データCD1、CD2及びCD3のうちの1つがメモリ34に格納される一方、プロセッサ32が、特性データCD1、CD2及びCD3のうちの他の2つを、メモリ34に格納された1つの特性データCDを用いて、所定の演算により求めてもよい。
【0204】
例えば、第1の特性データCD1が予めメモリ34に格納されているとする。この場合、プロセッサ32は、ステップS73において、第1の特性データCD1の傾きδα/δFhを低減させるように所定の演算を行うことにより、第2の特性データCD2を求めてもよい。
【0205】
また、プロセッサ32は、ステップS74において、第1の特性データCD1又は第2の特性データCD2の傾きδα/δFhを低減させるように所定の演算を行うことにより、第3の特性データCD3を求めてもよい。これにより、多くの特性データCDnをメモリ34に記憶する必要がなくなる。なお、
図22に示す例では、3つの特性データCD1、CD2及びCD3を例示したが、2つ又は4つ以上の特性データCDnがメモリ34に格納されてもよい。
【0206】
次に、
図23を参照して、さらに他の実施形態に係るダイレクトティーチ機能FN2
_3について説明する。
図19に示す制御装置16は、ダイレクトティーチ機能FN2
_3として、
図23に示すフローを実行する。なお、
図23に示すフローにおいて、
図20に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0207】
図23に示すフローにおいては、プロセッサ32は、ダイレクトティーチ実行部52として機能して、ステップS21~S23を実行する。ここで、ステップS23において、プロセッサ32は、直近のステップS21で特定した操作力Fhに従ってロボット12を動作させるために、該ロボット12のアクチュエータ31への指令CMを生成する。以下、指令CMの生成方法について、
図24を参照して説明する。
【0208】
図24に示すように、制御装置16は、位置指令生成部64、速度指令生成部66、トルク指令生成部68、電流制御部70、微分器72、減算器74及び76、並びに、加算器78を有する。プロセッサ32は、位置指令生成部64、速度指令生成部66、トルク指令生成部68、電流制御部70、微分器72、減算器74及び76、並びに、加算器78の機能を実現するための演算処理を担う。
【0209】
位置指令生成部64は、ロボット12(例えば、エンドエフェクタ30)の位置を規定する位置指令CM1を生成し、減算器74に出力する。減算器74は、入力された位置指令CM1から、I/Oインターフェース36を介して回転検出センサ33から供給されたフィードバックFB(回転位置)を減算し、位置偏差δpとして速度指令生成部66に出力する。
【0210】
速度指令生成部66は、位置偏差δpに基づいて速度指令CM2を生成し、減算器76に出力する。一方、微分器72は、回転検出センサ33から供給されたフィードバックFBを時間微分して速度Vを求め、速度フィードバックVとして、減算器76に出力する。減算器76は、入力された速度指令CM2から速度フィードバックVを減算し、速度偏差δvとしてトルク指令生成部68へ出力する。
【0211】
トルク指令生成部68は、速度偏差δvに基づいてトルク指令CM3を生成する。電流制御部70は、トルク指令CM3に基づいて電圧信号CM4(例えば、PWM制御信号)を生成し、I/Oインターフェース36を介してアクチュエータ31に送信する。位置指令CM1、速度指令CM2、トルク指令CM3、及び電圧信号CM4は、アクチュエータ31への指令CMを構成する。
【0212】
こうして、プロセッサ32は、このステップS23において、アクチュエータ31への指令CM(位置指令CM1、速度指令CM2、トルク指令CM3、及び電圧信号CM4)を生成し、操作力Fhに従ってロボット12を動作させる。再度、
図23を参照して、ステップS62でYESと判定すると、プロセッサ32は、ステップS24に進み、ダイレクトティーチ機能FN2
_3が無効にされたか否かを判定する。
【0213】
一方、ステップS64でYESと判定すると、ステップS81において、プロセッサ32は、抵抗力制御部62として機能して、ステップS23で生成する指令CMに変更を加える。具体的には、
図24に示すように、プロセッサ32は、抵抗力制御部62として機能して、指令補正値CR1を生成し、加算器78に出力する。この指令補正値CR1は、操作力Fhとは反対の方向へ作用する力をアクチュエータ31に生じさせるために、トルク指令CM3を変更するものである。
【0214】
加算器78は、トルク指令生成部68から出力されたトルク指令CM3に、抵抗力制御部62が生成した指令補正値CR1を加算することで補正トルク指令CM3’を生成し、電流制御部70へ出力する。このようにトルク指令CM3を指令補正値CR1によって補正することで、操作力Fhとは反対の力を、ロボット12の各可動コンポーネントに生じさせ、これにより、操作力Fhに対する抵抗力RFを増大させることができる。
【0215】
再度、
図23を参照して、ステップS64でNOと判定すると、ステップS82において、プロセッサ32は、抵抗力制御部62として機能して、ステップS23で生成する指令CMに変更を加える。具体的には、プロセッサ32は、抵抗力制御部62として機能して、指令補正値CR2(
図24)を生成し、加算器78に出力する。
【0216】
この指令補正値CR2は、ステップS81で生成する指令補正値CR1とは異なる値であって、該指令補正値CR1よりも大きな力を、操作力Fhとは反対の方向に生じさせることができるように、生成される。加算器78は、トルク指令CM3に、抵抗力制御部62が生成した指令補正値CR2を加算することで補正トルク指令CM3’を生成し、電流制御部70へ出力する。その結果、操作力Fhに対する抵抗力RFを、ステップS81よりも増大させることができる。プロセッサ32は、ステップS81又はS82の後、ステップS24へ進む。
【0217】
以上のように、本実施形態においては、ダイレクトティーチ実行部52は、ダイレクトティーチ機能FN2_3でロボット12を動作させるために該ロボット12のアクチュエータ31への指令CM(位置指令CM1、速度指令CM2、トルク指令CM3、及び電圧信号CM4)を生成する。
【0218】
そして、抵抗力制御部62は、動作パラメータ取得部54が取得した速度V(又は加速度a)に応じて、ダイレクトティーチ実行部52が生成する指令CM(具体的には、トルク指令CM3)に変更を加えることによって、抵抗力RFを変化させている(ステップS81及びS82)。この構成によれば、操作力Fhに対する抵抗力RFを、迅速且つ精細に制御することが可能となる。
【0219】
なお、本実施形態においては、抵抗力制御部62が、指令補正値CR1又はCR2によってトルク指令CM3を補正する場合について述べた。しかしながら、これに限らず、抵抗力制御部62は、操作力Fhに対する抵抗力RFを変化させることができれば、位置指令CM1、速度指令CM2、又は電圧信号CM4を補正してもよい。
【0220】
なお、
図20に示すダイレクトティーチ機能FN2
_1、
図21に示すダイレクトティーチ機能FN2
_2、又は、
図23に示すダイレクトティーチ機能FN2
_3のフローを、上述のステップS3又はS3’に適用してもよい。すなわち、この場合、
図2又は
図9に示す制御装置16は、抵抗力制御部62をさらに備えることになる。また、プロセッサ32は、
図20、
図21又は
図23のステップS64でNOと判定したときに、「速度又は加速度が過大となっています。操作力を低減してください。」という画像又は音声の警告信号AL3を生成し、表示装置42又は44、若しくはスピーカに出力してもよい。
【0221】
次に、
図25及び
図26を参照して、ロボットシステム10のさらに他の機能について説明する。
図25に示す制御装置16は、計時部80をさらに備える。計時部80は、バス38を介してプロセッサ32と通信可能に接続され、制御装置16からの指令に応じて、ある時点からの経過時間tを計時する。
【0222】
図25に示す制御装置16は、
図26に示すダイレクトティーチ機能FN2
_4のフローを実行する。なお、
図26に示すフローにおいて、
図6に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
図26に示すフローは、プロセッサ32が、ダイレクトティーチ機能FN2
_4を開始するための指令を受け付けた時点t
0で開始する。
【0223】
ステップS91において、プロセッサ32は、
図26のフローを開始した時点t
0からの経過時間tの計時を開始する。具体的には、プロセッサ32は、時点t
0で計時部80に計時指令を送信し、該計時指令に応じて、計時部80は、時点t
0からの経過時間tの計時を開始する。その後、プロセッサ32は、ダイレクトティーチ実行部52として機能して、ステップS21~23を実行し、ステップS24においてダイレクトティーチ機能FN2
_4が無効にされたか否かを判定する。
【0224】
ステップS24でNOと判定したとき、ステップS92において、プロセッサ32は、計時部80が計時している経過時間tが、所定の閾値tth1を超えた(つまり、t≧tth1)か否かを判定する。プロセッサ32は、t≧tth1となった場合はYESと判定し、ステップS94へ進む一方、NOと判定した場合はステップS93へ進む。
【0225】
ステップS93において、プロセッサ32は、実行中のダイレクトティーチ機能FN2_4以外の機能FNのための指令を受け付けたか否かを判定する。ここで、オペレータは、ダイレクトティーチ機能FN2_4の実行中、一旦、ロボット12へ操作力Fhを加える操作を中断し、上述の教示機能FN3、自動運転機能FN4、又は動作確認機能FN5等の、ダイレクトティーチ機能FN2_4以外の機能FNを実行したい場合がある。
【0226】
一例として、オペレータは、プロセッサ32が
図26のダイレクトティーチ機能FN2
_4を実行しているときに、教示装置18の入力装置46を操作して、教示機能FN3によってロボット12をジョグ動作させるための指令CM5を教示装置18に入力する。他の例として、オペレータは、ダイレクトティーチ機能FN2
_4の実行中に、教示装置18の入力装置46を操作して、自動運転機能FN4又は(動作確認機能FN5)によってロボット12に自動運転(又は、試行動作)を実行させるための指令CM6を教示装置18に入力する。
【0227】
さらに他の例として、オペレータは、ダイレクトティーチ機能FN2_4の実行中に、教示装置18の入力装置46を操作して、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5を実行するための入力画像を表示装置44に表示させる指令CM7を教示装置18に入力する。
【0228】
教示装置18のプロセッサは、オペレータから受け付けた指令CM5、CM6又はCM7を制御装置16に供給する。なお、オペレータは、制御装置16の入力装置40を操作して、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5のための指令CM5、CM6又はCM7を、制御装置16に直接入力してもよい。
【0229】
制御装置16のプロセッサ32は、このステップS93において、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5のための指令CM5、CM6又はCM7を受け付けた場合はYESと判定し、ステップS94へ進む。一方、プロセッサ32は、指令CM5、CM6又はCM7を受け付けていない場合はNOと判定し、ステップS21へ戻る。
【0230】
ステップS24、S92又はS93でYESと判定すると、ステップS94において、プロセッサ32は、ダイレクトティーチ機能FN2
_4を終了するとともに、該ダイレクトティーチ機能FN2
_4を終了した旨を示す報知信号SGを生成する。例えば、プロセッサ32は、「ダイレクトティーチ機能を自動で終了しました。」という画像又は音声の報知信号SGを生成し、表示装置42又は44、若しくはスピーカに出力してもよい。このように、本実施形態においては、プロセッサ32は、報知信号SGを生成する報知信号生成部53(
図25)として機能する。そして、プロセッサ32は、
図26のフローを終了する。
【0231】
こうして、プロセッサ32は、ステップS24、S92又はS93でYESと判定するまで、ステップS21~S24、S92及びS93のループを繰り返し実行し、ダイレクトティーチ機能FN2_4を継続して実行する。換言すれば、プロセッサ32は、ステップS24、S92及びS93でNOと判定している間は、経過時間tが閾値tth1に達するまでは(つまり、期間tth1に亘って)、ダイレクトティーチ機能FN2_4を継続して実行し、経過時間tが閾値tth1を超えると(期間tth1が過ぎると)、ダイレクトティーチ機能FN2_4を自動で終了する。
【0232】
以上のように、本実施形態においては、ダイレクトティーチ実行部52は、ダイレクトティーチ機能FN2_4を開始するための指令を受け付けた時点t0からの経過時間tが所定の閾値tth1を超えたとき(ステップS92でYESと判定したとき)に、ダイレクトティーチ機能FN2_4を終了する(ステップS94)。
【0233】
ここで、オペレータが、ダイレクトティーチ機能FN2_4を開始後、諸事情により長期間に亘って作業セルから離れる場合があり得る。このようにオペレータが不在の間に、第三者が誤ってロボット12を押してしまった場合、該ロボット12がダイレクトティーチ機能FN2_4によって意図せずに動作してしまう可能性がある。
【0234】
本実施形態によれば、ダイレクトティーチ機能FN2_4の開始後、所定の期間tth1が経過したときに自動でダイレクトティーチ機能FN2_4を終了することで、上記したようにロボット12が意図せずに動作してしまうのを防止できる。また、本実施形態においては、制御装置16は、経過時間tを計時する計時部80をさらに備える。この構成によれば、プロセッサ32は、経過時間tの計時を遅延なく、確実に実行できる。
【0235】
また、本実施形態においては、ダイレクトティーチ実行部52は、ダイレクトティーチ機能FN2_4の実行中に、該ダイレクトティーチ機能FN2_4以外の機能FN3、FN4又はFN5のための指令CM5、CM6又はCM7を受け付けたとき(ステップS93でYESと判定したとき)に、該ダイレクトティーチ機能FN2_4を終了する(ステップS94)。
【0236】
この構成によれば、オペレータが、ダイレクトティーチ機能FN2_4を中断し、例えば教示機能FN3、自動運転機能FN4、又は動作確認機能FN5を実行しようとした場合に、ダイレクトティーチ機能FN2_4を自動終了し、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5に円滑に移行できる。
【0237】
そして、教示装置18のプロセッサ(又は、制御装置16のプロセッサ32)は、オペレータから受け付けた指令CM5、CM6又はCM7に応じて、ロボット12に、ジョグ動作、自動運転、又は試行動作を実行させ、若しくは、入力画像を表示装置44に表示させて、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5を実行するための入力を受け付ける。
【0238】
また、本実施形態においては、制御装置16は、ダイレクトティーチ実行部52がダイレクトティーチ機能FN2_4を終了したときに、該終了を報知する報知信号SGを生成する報知信号生成部53をさらに備える。この構成によれば、オペレータは、ダイレクトティーチ機能FN2_4が自動終了したことを、容易に認識できる。
【0239】
なお、本実施形態においては、上述の時点t
0が、ダイレクトティーチ機能FN2
_4を開始するための指令を受け付けた時点であり、且つ、
図26に示すダイレクトティーチ機能FN2
_4のフローを開始した時点である場合について述べた。しかしながら、厳密には、ダイレクトティーチ機能FN2
_4を開始するための指令を受け付けた時点t
0_1と、該指令を受け付けてプロセッサ32が
図26のダイレクトティーチ機能FN2
_4を開始した時点t
0_2との間でタイムラグが生じ得る。
【0240】
この場合、プロセッサ32は、時点t0_1及び時点t0_2のいずれの時点t0からの経過時間tを計時部80に計時させてもよい。すなわち、この場合、プロセッサ32は、ダイレクトティーチ実行部52として機能し、時点t0_1又はt0_2からの経過時間tが所定の閾値tth1を超えたときに、ダイレクトティーチ機能FN2_4を終了する。
【0241】
なお、制御装置16から計時部80を省略し、該計時部80の機能を外部機器に求めることもできる。例えば、制御装置16のI/Oインターフェース36に、制御装置16の外部に設けられた電子時計(又は、他のコンピュータに内蔵された計時部)を接続し、プロセッサ32は、該電子時計が計時する時間を参照して、上述の経過時間tを取得してもよい。
【0242】
次に、
図27を参照して、さらに他のダイレクトティーチ機能FN2
_5について説明する。
図25に示す制御装置16は、ダイレクトティーチ機能FN2
_5として、
図27に示すフローを実行する。なお、
図27に示すフローにおいて、
図26に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0243】
図27のフローの開始後、プロセッサ32は、ダイレクトティーチ実行部52として機能してステップS21~S23を実行し、ステップS24でダイレクトティーチ機能FN2
_5が無効にされたか否かを判定する。ステップS23の後、ステップS101において、プロセッサ32は、上述のステップS21と同様に、操作力Fhを取得する。
【0244】
ステップS102において、プロセッサ32は、上述のステップS22と同様に、直近のステップS101で取得した操作力Fhの大きさが所定の閾値Fhthを超えたか否かを判定する。プロセッサ32は、YESと判定した場合はステップS23へ戻る一方、NOと判定した場合はステップS103へ進む。
【0245】
ステップS103において、プロセッサ32は、ロボット12の動作が停止したか否かを判定する。ここで、オペレータがロボット12への操作力Fhを解除すると、ロボット12は自動で停止する。プロセッサ32は、回転検出センサ33からのフィードバックFBに基づいて、ロボット12が停止したか否かを判定できる。プロセッサ32は、ロボット12の動作が停止した(すなわち、YES)と判定した場合はステップS104へ進む一方、NOと判定した場合はステップS101へ戻る。
【0246】
ステップS104において、プロセッサ32は、ステップS103でYESと判定した時点t1(つまり、ロボットが停止した時点)からの経過時間tの計時を開始する。具体的には、プロセッサ32は、時点t1で計時部80に計時指令を送信し、該計時指令に応じて、計時部80は、時点t1からの経過時間tの計時を開始する。
【0247】
ステップS105において、プロセッサ32は、計時部80が計時している経過時間tが、所定の閾値tth2を超えた(つまり、t≧tth2)か否かを判定する。この閾値tth2は、上述の閾値tth1よりも小さい(又は大きい)時間として設定されてもよい。プロセッサ32は、t≧tth2となった場合はYESと判定し、ステップS94に進む一方、NOと判定した場合はステップS93へ進む。
【0248】
ステップS105でNOと判定すると、プロセッサ32は、上述のステップS93を実行し、実行中のダイレクトティーチ機能FN2_5以外の機能FN(例えば、教示機能FN3、自動運転機能FN4、又は動作確認機能FN5)のための指令(例えば、上述の指令CM5、CM6又はCM7)を受け付けたか否かを判定する。プロセッサ32は、YESと判定した場合はステップS94へ進む一方、NOと判定した場合はステップS106へ進む。
【0249】
ステップS106において、プロセッサ32は、ステップS24と同様に、ダイレクトティーチ機能FN2_5が無効にされたか否かを判定し、YESと判定した場合は、ステップS94へ進む一方、NOと判定した場合はステップS107へ進む。
【0250】
ステップS107において、プロセッサ32は、上述のステップS21と同様に、操作力Fhを取得する。ステップS108において、プロセッサ32は、上述のステップS22と同様に、直近のステップS107で取得した操作力Fhの大きさが所定の閾値Fhthを超えたか否かを判定する。プロセッサ32は、YESと判定した場合はステップS23へ戻る一方、NOと判定した場合はステップS105へ戻る。
【0251】
一方、ステップS105、S93又はS106でYESと判定すると、プロセッサ32は、上述のステップS94を実行し、
図27のダイレクトティーチ機能FN2
_5を終了するとともに、該ダイレクトティーチ機能FN2
_5を終了した旨を示す報知信号SGを生成する。そして、プロセッサ32は、
図27のフローを終了する。
【0252】
こうして、プロセッサ32は、ステップS103でYESと判定した(つまり、ロボット12が停止した)場合、ステップS105、S93、S106及びS108でNOと判定している間は、ステップS105、S93、S106~S108のループを繰り返し実行する。そして、プロセッサ32は、ステップS103でYESと判定した時点t1からの経過時間tが閾値tth2を超えると(期間tth2が過ぎると)、ステップS94でダイレクトティーチ機能FN2_5を自動で終了する。
【0253】
このように、本実施形態においては、ダイレクトティーチ実行部52は、ダイレクトティーチ機能FN2_5によって動作していたロボット12が停止した時点t1(つまり、ステップS103でYESと判定した時点)からの経過時間tが所定の閾値tth2を超えたときに、ダイレクトティーチ機能FN2_5を終了する。この構成によれば、ダイレクトティーチ機能FN2_5の実行中にオペレータが不在となったときに、第三者が誤ってロボット12を押してしまうことにより該ロボット12が意図せずに動作してしまうのを防止できる。
【0254】
なお、
図26に示すダイレクトティーチ機能FN2
_4、又は、
図27に示すダイレクトティーチ機能FN2
_5のフローを、上述のステップS3又はS3’に適用してもよい。すなわち、この場合、
図2又は
図9に示す制御装置16は、計時部80をさらに備えることになる。
【0255】
例えば、
図26に示すダイレクトティーチ機能FN2
_4をステップS3に適用した場合、
図26のフローを開始する時点t
0は、上述のダイレクトティーチ機能開始指令を受け付けた時点(つまり、上述のステップS1でYESと判定した時点)となる。また、
図26に示すダイレクトティーチ機能FN2
_4をステップS3’に適用した場合、
図26のフローを開始する時点t
0は、イネーブルスイッチON信号を受け付けた時点(つまり、上述のステップS31又はS34でYESと判定した時点)となる。
【0256】
なお、
図26又は
図27のフローから、ステップS93を省略してもよい。また、
図26又は
図27のステップS94において、プロセッサ32は、ダイレクトティーチ機能FN2
_4又はFN2
_5を終了する一方、報知信号SGを生成しなくてもよい。すなわち、この場合、
図25に示す制御装置16から報知信号生成部53を省略できる。
【0257】
【0258】
【0259】
また、プロセッサ32は、
図3、
図5~
図8、
図11~
図13、
図18、
図20、
図21、
図23、
図26、及び
図27のフローを、コンピュータプログラムPG2に従って実行してもよい。このコンピュータプログラムPG2は、メモリ34に予め記憶される。また、プロセッサ32が実行する安全機能実行部50、ダイレクトティーチ実行部52、動作パラメータ取得部54、機能切替部56、安全機能判定部58、閾値切替部60、及び抵抗力制御部62の機能は、コンピュータプログラムPGにより実現される機能モジュールであってもよい。
【0260】
また、ロボット12は、垂直多関節ロボットに限らず、例えば水平多関節ロボット、パラレルリンクロボット等、如何なるタイプのロボットでもよい。以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0261】
10 ロボットシステム
12 ロボット
14 力センサ
14A トルクセンサ
14B 力覚センサ
16 制御装置
18 教示装置
34 メモリ
50 安全機能実行部
52 ダイレクトティーチ実行部
54 動作パラメータ取得部
56 機能切替部
58 安全機能判定部
60 閾値切替部
62 抵抗力制御部