(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022190052
(43)【公開日】2022-12-22
(54)【発明の名称】システム、製造方法、制御方法、プログラム及び記録媒体
(51)【国際特許分類】
B25J 19/06 20060101AFI20221215BHJP
【FI】
B25J19/06
【審査請求】未請求
【請求項の数】29
【出願形態】OL
(21)【出願番号】P 2022175970
(22)【出願日】2022-11-02
(62)【分割の表示】P 2021188735の分割
【原出願日】2021-11-19
(31)【優先権主張番号】P 2021020053
(32)【優先日】2021-02-10
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【弁理士】
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100124442
【弁理士】
【氏名又は名称】黒岩 創吾
(72)【発明者】
【氏名】井比 敏男
(57)【要約】
【課題】 ロボットへの外力が検出されたときの、ロボットの動作を改善する上で有利な技術を提供する。
【解決手段】 ロボットとロボットを制御するコントローラを有したシステムにおいて、コントローラは、ロボットに対する物体の接触の検出に基づいて、ロボットを、第一状態から、第一状態よりもロボットに加わる外力に従った姿勢の変更を許容する第二状態に切り替える。コントローラは、ロボットに加わる外力に従った姿勢の変更の開始後であって、ロボットに外力が加わっている間に、ロボットを、第二状態から、第二状態よりも、外力に従った姿勢の変更を制限する、第三状態に切り替える。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ロボットと前記ロボットを制御するコントローラを有したシステムにおいて、
前記コントローラは、前記ロボットに対する物体の接触の検出に基づいて、前記ロボットを、第一状態から、前記第一状態よりも前記ロボットに加わる外力に従った姿勢の変更を許容する、第二状態に切り替え、
前記コントローラは、外力に従った姿勢の変更の開始後であって、前記ロボットに外力が加わっている間に、前記ロボットを、前記第二状態から、前記第二状態よりも、ロボットに加わる外力に従った姿勢の変更を制限する、第三状態に切り替える
ことを特徴とするシステム。
【請求項2】
前記コントローラは、前記ロボットは姿勢の変更を行なっているとき、前記ロボットに対する前記接触を検出することを特徴とする請求項1に記載のシステム。
【請求項3】
前記コントローラが、前記ロボットに対する前記接触を検出したあと、姿勢の変更を行なっている前記ロボットは、姿勢の変更を停止することを特徴とする請求項1または2に記載のシステム。
【請求項4】
前記コントローラは、第一の大きさの外力を検出したとき、前記接触の検出を行ない、前記第一の大きさより小さい第二の大きさの外力を検出したとき、前記第一状態のロボットは、前記第一状態を継続することを特徴とする請求項1乃至3のいずれか1項に記載のシステム。
【請求項5】
前記ロボットは、教示された動作に基づき姿勢の変更を行なうロボットであり、外力に従った姿勢の変更は、前記教示の完了と、前記第二状態から前記第三状態への切り替えと、の間に行われることを特徴とする請求項1乃至4のいずれか1項に記載のシステム。
【請求項6】
前記コントローラは、外力に従った姿勢の変更を行う状態の前記ロボットと、物体検出センサが検出した前記ロボットの可動領域に存在する物体と、の距離が第一の距離より小さくかつ0より大きい第二の距離になったとき、前記第二状態から前記第三状態へ切り替えることを特徴とする請求項1乃至5のいずれか1項に記載のシステム。
【請求項7】
前記コントローラは、外力に従った姿勢の変更を行う状態の前記ロボットと、前記ロボットの特異点との距離が前記第一の距離より大きいとき、外力に従った姿勢の変更を継続し、外力に従った姿勢の変更を行う状態の前記ロボットと、前記ロボットの特異点との距離が前記第一の距離より小さくかつ0より大きい第二の距離になったとき、前記第二状態から前記第三状態へ切り替えることを特徴とする請求項1乃至5のいずれか1項に記載のシステム。
【請求項8】
前記コントローラは、前記第二状態の前記ロボットが、所定の距離および所定の時間の少なくともいずれかだけ、外力に従った姿勢の変更を行なったとき、前記ロボットを、前記第二状態から前記第三状態に切り替えることを特徴とする請求項1乃至5のいずれか1項に記載のシステム。
【請求項9】
前記コントローラは、前記ロボットが、第一の速度で、外力に従った前記姿勢の変更を行なっているとき、前記第二状態のロボットを、前記第二状態よりも、外力に従った姿勢の変更を制限する前記第三状態に切り替え、前記第一の速度よりも小さい第二の速度で、外力に従った姿勢の変更を行なっているとき、前記第二状態を継続することを特徴とする請求項1乃至8のいずれか1項に記載のシステム。
【請求項10】
前記コントローラは、前記第三状態のロボットを、前記第三状態よりも外力に従った姿勢の変更を制限する第四状態に切り替えることを特徴とする請求項1乃至9のいずれか1項に記載のシステム。
【請求項11】
前記第一状態、前記第二状態および前記第三状態のうち、各々の状態であることを表示する手段を備えていることを特徴とする請求項1乃至10のいずれか1項に記載のシステム。
【請求項12】
ロボットと前記ロボットを制御するコントローラを有しているシステムにおいて、
前記コントローラは、前記ロボットに対する物体の接触の検出に基づいて、前記ロボットにおけるインピーダンス制御の剛性および粘性の少なくとも一方を減少させて、
前記ロボットは、外力に従った姿勢の変更を行ない、
前記コントローラは、外力に従った姿勢の変更の開始後であって、前記ロボットに外力が加わっている間に、前記インピーダンス制御の剛性および粘性の少なくとも一方を増加させる
ことを特徴とするシステム。
【請求項13】
前記コントローラは、前記ロボットが、前記ロボットの特異点、もしくは物体検出センサが検出した前記ロボットの可動領域に存在する物体と、の距離が近づくにつれ、インピーダンス制御の剛性および粘性の少なくとも一方を徐々に増加させることを特徴とする請求項12に記載のシステム。
【請求項14】
前記コントローラは、前記ロボットが外力に従った姿勢の変更中に、物体検出センサが検出した前記ロボットの可動領域に存在する物体の情報を取得することを特徴とする請求項1乃至13のいずれか1項に記載のシステム。
【請求項15】
前記コントローラは、第四の大きさの外力を検出したとき、前記ロボットは外力に従った姿勢の変更を開始し、前記第四の大きさより小さい第五の大きさの外力を検出したとき、前記ロボットの姿勢を維持することを特徴とする請求項1乃至14のいずれか1項に記載のシステム。
【請求項16】
前記コントローラは、前記姿勢を維持した前記ロボットに外力が加わったとき、前記第二状態よりも、外力に従った姿勢の変更を制限することを特徴とする請求項15に記載のシステム。
【請求項17】
前記コントローラは、前記ロボットに加わった外力の大きさに応じた値と閾値とを比較する手段と、前記閾値を前記第四の大きさに応じた値と前記第五の大きさに応じた値との間で変更する手段と、を有していることを特徴とする請求項15に記載のシステム。
【請求項18】
前記コントローラに接続された操作装置を備え、前記ロボットは、前記操作装置による指令に基づき姿勢の変更を行なうことを特徴とする請求項1乃至17のいずれか1項に記載のシステム。
【請求項19】
前記ロボットは、外力に従った姿勢の変更を、前記操作装置によるロボット駆動指示よりも優先することを特徴とする請求項18に記載のシステム。
【請求項20】
前記コントローラは、前記ロボットが姿勢の変更中であることを表示する手段を備えていることを特徴とする請求項1乃至19のいずれか1項に記載のシステム。
【請求項21】
前記コントローラは、前記ロボットに、前記ロボットの姿勢の変更後の位置から、前記コントローラに記録された復帰位置、への復帰動作を指令することを特徴とする請求項1乃至20のいずれか1項に記載のシステム。
【請求項22】
前記復帰動作は、姿勢の変更の軌跡を反転する軌跡に沿った動作を含むことを特徴とする請求項21に記載のシステム。
【請求項23】
前記コントローラは、前記復帰動作中に、前記ロボットの可動領域に存在する物体の情報を更新することを特徴とする請求項21または22に記載のシステム。
【請求項24】
前記コントローラは、外力の検出に対してエラーになる状態で、前記ロボットが、第七の大きさの外力を検出したとき、エラーを出力し、前記第七の大きさより小さい第八の大きさの外力を検出したとき、前記復帰動作を指令することを特徴とする請求項21乃至23のいずれか1項に記載のシステム。
【請求項25】
姿勢を変更しているロボットに対する物体の接触の検出後に、
前記ロボットは、前記ロボットに加わる外力に従って姿勢を変更し、
前記ロボットに加わる外力に従った姿勢の変更の開始後であって、
前記ロボットに外力が加わっている間に、前記ロボットに加わる外力に従った姿勢の変更中よりも、前記ロボットに加わる外力に従った姿勢の変更を制限することを特徴とするシステム。
【請求項26】
物品の製造方法であって、請求項1乃至25のいずれか1項に記載のシステムを用いて、前記物品の製造者と前記ロボットとが、協働して物品を製造する工程を有し、前記接触は、前記物品の製造者と前記ロボットとの接触であり、前記外力を、前記製造者が前記ロボットに加えることを特徴とする製造方法。
【請求項27】
ロボットの制御方法であって、
前記ロボットに対する物体の接触の検出に基づいて、前記ロボットにおけるインピーダンス制御の剛性および粘性の少なくとも一方を減少させ、
前記ロボットに外力が加わっている間に、前記インピーダンス制御の剛性および粘性の少なくとも一方を増加させる
ことを特徴とする制御方法。
【請求項28】
請求項27に記載の制御方法をコンピュータに実行させるためのプログラム。
【請求項29】
請求項28に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット及びロボットシステムに関する。
【背景技術】
【0002】
近年、ロボットには、人間との協調作業など、ロボットが柔軟な動作を行うことが要求されている。
【0003】
これらのロボットを使用する際には、ロボットの周囲に位置する人間がロボットに接触すると、ロボットを減速または停止させることがある。しかし、減速または停止したロボットが、人間が作業する領域に留まることで、人間が行う作業の障害となる場合がある。
【0004】
特許文献1には、外力検出部により検出された外力が第一閾値より大きい場合には、前記外力を小さくする方向にロボットを移動させる退避動作を指令するロボットシステムが開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1のロボットシステムでは、外力を小さくする方向に退避するロボットの退避経路に障害物が存在した場合、ロボットが障害物に衝突してしまう場合があった。
【0007】
また、ロボットが退避を継続することで、特異姿勢に到達してしまう場合や、ロボットにかかる外力の過度な増加に伴い、ロボットの退避速度が過度に増加してしまう場合があった。
【0008】
そこで本発明では、ロボットへの外力が検出されたときの、ロボットの動作を改善する上で有利な技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するための手段は、ロボットと前記ロボットを制御するコントローラを有したシステムにおいて、前記コントローラは、前記ロボットに対する物体の接触の検出に基づいて、前記ロボットを、第一状態から、前記第一状態よりも前記ロボットに加わる外力に従った姿勢の変更を許容する、第二状態に切り替え、前記コントローラは、外力に従った姿勢の変更の開始後であって、前記ロボットに外力が加わっている間に、前記ロボットを、前記第二状態から、前記第二状態よりも、ロボットに加わる外力に従った姿勢の変更を制限する、第三状態に切り替えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、ロボットへの外力が検出されたときの、ロボットの動作を改善する上で有利な技術を提供することができる。
【図面の簡単な説明】
【0011】
【
図4】第二実施形態のシステムの制御内容を示すフローチャート
【
図5】第三実施形態のシステムの制御内容を示すフローチャート
【
図6】第四実施形態のシステムの制御内容を示すフローチャート
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明を実施するための形態を説明する。ただし、以下に説明する形態は、発明の1つの実施形態であって、これに限定されるものではない。なお、以下の説明および図面において、複数の図面に亘って共通の構成については共通の符号を付している。そして、共通する構成を複数の図面を相互に参照して説明し、共通の符号を付した構成については適宜説明を省略する。同じ名称で別々の事項については、それぞれ、第一の事項、第二の事項という風に、「第〇」を付けて区別することができる。
【0013】
<第一実施形態>
図1、
図2を用いて、本実施形態に係るロボットシステム(以下、システム)について説明する。
図1は、本実施形態に係るシステムを、横方向から見た概略構成を示す図である。本実施形態におけるシステム100は、ロボット200と、ロボット200を制御するコントローラ300とを備えている。
【0014】
図2に本実施形態におけるロボット200の断面図を示す。本実施形態におけるロボット200は、複数の関節ユニット211~216を備えている。関節ユニット211~216の各々は、複数の関節軸201~206の各々をそれぞれ駆動する複数のサーボモータ221~226と、複数の接触検出センサ231~236と、を含んでいる。複数の接触検出センサ231~236のそれぞれはサーボモータ221~226に接続されていてもよいし、接続されていなくてもよい。また、複数の関節ユニット211~216はブレーキ(不図示)を含んでいてもよい。
【0015】
本例のロボット200はサーボ制御部251~256を備え、サーボモータ221~226の各々は、サーボ制御部251~256の各々によって制御されている。
【0016】
サーボモータ221~226は、電動モータと、エンコーダとを含みうるが、従来知られているサーボモータであればよくて、適宜変更することができる。サーボモータのエンコーダを、接触検出センサ231~236として用いてもよい。本例では、接触検出センサ231~236を関節ユニット211~216に設けたが、ロボット200の外に設けることもできる。
【0017】
サーボ制御部251~256が、サーボモータ221~226の電動モータに電流を出力し、電動モータは、サーボ制御部251~256から出力された電流を基に駆動を行なう。ロボット200は、電動モータの駆動によって姿勢を変更することができる。ここでは、サーボ制御部251~256がロボット200の土台部に設けられている例を示すが、サーボ制御部251~256はロボット200の関節ユニット211~216に設けられていてもよい。また、サーボ制御部251~256をコントローラ300に設けることも可能である。
【0018】
関節ユニット211~216は、サーボ制御部251~256から出力される電流に基づき、電源が入っているロボット200の自重を支える。すなわち、ロボット200の各部に加わる重力によって、ロボット200が姿勢を変更しようとすることを、電動モータが防いでいる状態である。このとき、関節軸201~206は固定されていない。
【0019】
電源が入っていないロボット200は、関節ユニット211~216に含まれるブレーキで、ロボット200が自重によって、姿勢が変更してしまうことを防ぐ。ブレーキは、関節軸201~206を固定し、ロボット200の姿勢の変更を禁止することができる。
ブレーキは、ロボット200の電源が入り、関節ユニット211~216が、サーボ制御部251~256から出力される電流に基づき、電源が入っているロボット200の自重を支える制御状態になると、関節軸201~206の固定を解除する。逆に、ロボット200の電源が切れるときや、制御停止指令などでロボット200の自重を支えられない状態になると、関節軸201~206を固定する。関節ユニット211~216に含まれるブレーキは、例えば無励磁動作ブレーキなどの電磁ブレーキである。
【0020】
接触検出センサ231~236の各々は、ロボット200への物体400(接触物)の接触を検出できるセンサであればよく、接触物との接触によってロボット200に生じる外力に対応する物理量を検出できることが好ましい。接触検出センサ231~236の各々は、ロボット200に接触物があることを判別可能であればよく、ロボット200の内部、または外部どちらか一方に設けられていればよい。例えば、接触検出センサ231~236の各々は、ロボット200の関節軸201~206に設けられ、外力によって変化する関節軸201~206まわりのトルクを検出する力覚センサ(トルクセンサ)でありうる。あるいは、接触検出センサ231~236の各々は、ロボット200の関節軸201~206に設けられ、外力によって変化する関節軸201~206に交差する方向における圧力を検出する力覚センサ(圧力センサ)でありうる。あるいは、接触検出センサ231~236の各々は、ロボット200またはコントローラ300に設けられ、外力によって変換する複数のサーボモータ221~226の通電電流を検出する電流センサでありうる。あるいは、接触検出センサ231~236の各々は、ロボット200の外装に設けられ、ロボット200への接触を検出する触覚センサでありうる。あるいは、接触検出センサ231~236の各々は、ロボット200の外部に設けられ、ロボット200への物体400の接触を画像処理によって検出する視覚センサ(ビジョンセンサ)でありうる。接触検出センサ231~236の数は、複数でもよいし単数でもよい。
【0021】
次に
図3を用いてコントローラ300について説明する。
【0022】
図3は、本実施形態にかかるコントローラ300の構成を示すブロック図である。
【0023】
コントローラ300は、コンピュータで構成されており、制御部としての演算装置301を備えている。演算装置301はCPU(Central Processing Unit)、ASIC(Application Specific Integrated Circuit)あるいはFPGA(Field-Programmable Gate Array)である。また、コントローラ300は、記憶部として、ROM(Read Only Memory)302、RAM(Random Access Memory)などの主記憶装置303を備えている。ROM302には、BIOS等の基本プログラムが格納されている。主記憶装置303は、演算装置301の演算処理の結果等、各種データを一時的に記憶する記憶装置である。また、コントローラ300は、記憶部としてHDD(Hard Disk Drive)やSSD(Solid State Drive)などの補助記憶装置304を備えている。補助記憶装置304は、演算装置301の演算処理の結果や外部から取得したデータを記憶する。また、コントローラ300は、インターフェース305を備えている。
【0024】
演算装置301には、ROM302、主記憶装置303、補助記憶装置304、インターフェース305が、バス310を介して接続されている。ロボット200のサーボ制御部251~256が、インターフェース305に接続されている。インターフェース305には、操作盤やティーチングペンダントなどの操作装置や、ディスプレイやランプなどの表示装置などが接続されてもよい。インターフェース305には、コントローラ300に情報を入力するための情報入力部が含まれうる。操作装置は、優先接続および/または無線接続によって、コントローラ300の情報入力部に接続される。このようにして操作装置がコントローラ300へ接続されることで、操作装置でコントローラ300を操作することができる。情報が表示される。インターフェース305には、表示装置に情報を表示させるための表示手段として、表示装置に表示させる情報を出力する情報出力部が含まれうる。情報出力部はグラフィックコントローラやマイコンを含みうる。このようにして表示装置がコントローラ300へ接続されることで、表示装置に情報が表示される。
【0025】
演算装置301は、補助記憶装置304に格納されたプログラム320に基づいてロボット200の動作のための各種の処理を実行する。これにより演算装置301は、ロボット200を所望の位置へ移動させる指令、つまり、ロボット200を所望の姿勢に変形させる指令を行なう。その位置指令のデータを、所定の時間間隔でバス310及びインターフェース305を介して、ロボット200のサーボ制御部251~256に出力する。
【0026】
ロボット200が、姿勢の変更を行なう際に、演算装置301は、ロボット200を、所望の位置へ移動させる指令を行なう。サーボ制御部251~256は、ロボット200への位置指令に基づき、ロボット200に備えられた関節ユニット211~216に電流を出力し、電動モータの駆動を制御する。電動モータの駆動を制御することで、ロボット200の姿勢の変更を制御することができる。
【0027】
ロボット200の制御にはインピーダンス制御を用いることができる。コントローラ300は、ロボット200にインピーダンス制御を実施することで、外力に対する応答特性を変更しながら、ロボット200の姿勢を変更することが可能である。つまり、インピーダンス制御のパラメータである剛性や粘性を変更することで、人がロボット200に外力が加えたときの、人の力覚感覚を変更しながら、ロボット200の姿勢を変更することができる。
【0028】
ここで、人の力覚感覚とは、たとえば人がロボット200に外力を加えたときに、姿勢の変更をしづらいと感じたり、しやすいと感じたりする感覚のことである。
【0029】
インピーダンス制御のパラメータである剛性パラメータと粘性パラメータについて、インピーダンス制御の式を使って説明する。インピーダンス制御の式は下記式(1)によって示される。
F=Md2x/dt2+Ddx/dt+Kx・・・(1)
【0030】
Fは人がロボット200に与える外力であり、xはロボット200の位置の変位、d/dtは時間微分、Mはインピーダンス制御の慣性パラメータ、Dはインピーダンス制御の粘性パラメータ、Kはインピーダンス制御の剛性パラメータである。
【0031】
インピーダンス制御の式について、剛性パラメータを変更することで、ロボット200の姿勢の変更にどのような影響があるか説明する。そのために、式(1)において、M=0且つD=0とする。その場合のインピーダンス制御の式は、下記式(2)によって示される。
F=Kx・・・(2)
【0032】
式(2)は、Kを変動させることで、人がロボット200に与える外力で、ロボット200の各部位がどの程度変位するのか、を変更することができるということを示している。Kを増加させた場合、ロボット200の各部位は、外力に対して姿勢変更の変位が減少する。逆にKを減少させた場合、ロボット200の各部位は、外力に対して姿勢変更の変位が増加する。
【0033】
次に、インピーダンス制御の式について、粘性パラメータを変更することで、ロボット200の姿勢の変更にどのような影響があるか説明する。そのために、式(1)において、M=0且つK=0とする。その場合のインピーダンス制御の式は、下記式(3)によって示される。
F=Ddx/dt・・・(3)
【0034】
式(3)は、Dを変動させることで、人がロボット200に与える外力で、ロボット200の各部位が現在の姿勢から目標の姿勢まで、どの程度の速度で姿勢変更するのか、を変更することができるということを示している。Dを増加させた場合、ロボット200の各部位は、外力に対して姿勢変更の速度が減少する。逆にDを減少させた場合、ロボット200の各部位は、外力に対して姿勢変更の速度が増加する。
【0035】
インピーダンス制御のパラメータである剛性と粘性を変更することで、それぞれ、ロボット200にかかる外力に対するロボット200の姿勢変更の変位と速度を変更することができる。
【0036】
インピーダンス制御の式について、慣性パラメータを変更することで、ロボット200の姿勢の変更にどのような影響があるか説明する。そのために、式(1)において、D=0且つK=0とする。その場合のインピーダンス制御の式は、下記式(4)によって示される。
F=Md2x/dt2・・・(4)
【0037】
式(4)は、Mを変動させることで、人がロボット200に与える外力で、ロボット200がどの程度の加速度で姿勢変更するのか、を変更することができるということを示している。Mを増加させた場合、ロボット200の各部位は、外力に対して姿勢変更の加速度が、減少する。逆にMを減少させた場合、ロボット200の各部位は、外力に対して姿勢変更の加速度が、増加する。しかし、本実施形態のインピーダンス制御では、慣性パラメータの変更によるロボット200の姿勢変更の制御は行わない。
【0038】
インピーダンス制御の剛性や粘性を増加させることで、人がロボット200に外力を加えたときに、体感的にロボット200の姿勢の変更が難しくなる。逆にインピーダンス制御の剛性や粘性を低下させることで、人がロボット200に外力を加えたときに、体感的にロボット200の姿勢の変更が容易になる。
【0039】
たとえば、力覚センサで所定の値よりも大きな外力を検出したとき、インピーダンス制御の剛性や粘性を増加させることで、姿勢の変更を制限することができる。
【0040】
インピーダンス制御を行なうことで、人が外力を加えて、ロボット200の姿勢の変更を行なう際に、外力に対する抵抗を上げたり下げたりすることができる。それにより、人は継続して外力を加えてもよいかどうかを判断する手助けとなる。
【0041】
以上が、システム100においてロボット200の姿勢を制御するための基本的な構成であるが、この構成は公知の技術を用いて適宜変更することができるし、非公知の技術を用いて適宜改良することもできる。
【0042】
次に、ロボット200の周囲に存在しうる物体400の検出に関連する構成について説明する。
【0043】
コントローラ300は、物体情報処理部312、データ生成部313、接触判定部314、および姿勢変更制御部315を備えうる。コントローラ300の内部では、物体情報処理部312、接触判定部314、データ生成部313および姿勢変更制御部315がインターフェース305に接続されている。なお、物体情報処理部312、接触判定部314、および姿勢変更制御部315の少なくともいずれかをロボット200に設けることもできる。例えば、データ生成部313を関節ユニット211~216の各々に設けることもできる。
【0044】
データ生成部313は、接触検出センサ231~236が検出して出力した信号から、接触判定部314が取り扱うことができるデータ(アナログデータあるいはデジタルデータ)を生成し、接触判定部314に出力する。データ生成部313が生成するデータが示す値は、接触検出センサ231~236が検出した物理量に応じた値である。データ生成部313は、接触検出部と呼ぶこともできる。
【0045】
接触判定部314は、コントローラ300の内部もしくは外部に備えられた、データ生成部313から出力される接触情報を解析することで、ロボット200への接触物の有無を判定することができる。
【0046】
システム100の内部または外部には、物体検出センサ311を設けることができる。
物体検出センサ311は、ロボット200の周囲に存在する物体を検出可能なセンサである。物体検出センサ311としては、イメージセンサや測距センサ、超音波センサ、レーダーセンサ等の、各種センサを用いることができる。測距センサはToF(Time of Flight)型のセンサであってもよい。物体検出センサ311は例えばインターフェース305に接続される。
【0047】
物体情報処理部312は、物体検出センサ311から出力される物体情報を解析する。それにより、ロボット200の可動領域に存在する物体400の判別や、その物体400までの距離の算出を行なうことができる。
【0048】
姿勢変更制御部315は、物体情報処理部312の、ロボット200の可動領域に存在する物体のデータや、接触判定部314の、接触物の有無についてのデータに基づいて姿勢変更を制御する。
【0049】
本実施形態のシステム100は、接触検出センサ231~236によってロボット200に対する物体の接触の検出を行うことができる。また、コントローラ300は、この接触の検出に基づいてロボット200を制御することができる。また、物体検出センサ311によってロボット200の周囲の物体400の存在の検出を行うことができる。また、コントローラ300は、物体400の存在の検出に基づいて、ロボット200の制御を行うことができる。
【0050】
<第二実施形態>
次に、第二実施形態として、
図4を用いてシステム100の動作を説明する。本実施形態で説明するシステム100は、第一実施形態で説明したシステム100が好適であるが、第一実施形態のシステム100に限ったものではない。
【0051】
図4は、本実施形態のシステム100の動作フローの要部を示すフローチャートである。
【0052】
まず、ステップS0の段階では、ロボット200は、電源が入っておらず、関節ユニット211~216に含まれるブレーキによって、関節軸201~206が固定されて停止している状態である。
【0053】
ロボット200に電源を入れて、システム100の動作をスタートさせる。
【0054】
ステップS1では、ブレーキが解除され、関節軸201~206はブレーキでは固定されていない。しかし、ロボット200は、停止している状態である。ここで、ステップS1における停止している状態とは、電動モータが、ロボット200の自重を支えている状態である。すなわち、ロボット200の各部に加わる重力によって、ロボット200が姿勢を変更しようとすることを、電動モータが防いでいる状態である。このステップS1ではロボット200に外力は加わっていないものとする。このとき、自重が支えられているロボット200に外力を加えた場合、姿勢の変更を行なうことはない。外力で姿勢の変更を行わない状態であることは、GUI(Graphical User Interface)やランプで表示することで、姿勢の変更が可能かどうかを判断できる。また、事前にユーザーが特定動作をすることで、姿勢の変更を行なう状態にすることができる。特定動作とは例えば、ボタン押下やモード変更設定などである。なお、以下の説明において、ロボット200に加わる外力とは、ロボット200の自重に対して加わる重力やロボット200に加わる大気圧などの非人工的な力を除く、ロボット200に加わる人工的な力である。なお、ロボット200が停止している状態は、ロボット200がその姿勢を維持している状態を意味する。ロボット200が姿勢を維持している状態(停止状態)は、ステップS0のような停止状態と、本ステップS1のような停止状態の両方を含みうる。
【0055】
ステップS2は、コントローラ300によるロボット200の制御が行われ、ロボット200が姿勢を変更している状態(姿勢変更状態)である。ステップS2は、コントローラ300に記憶された姿勢変更指令に基づいて、コントローラ300がロボット200の姿勢を変更する状態でありうる。あるいは、ロボット200が、ユーザーによって操作された操作装置からの指令に基づいて、コントローラ300がロボット200の姿勢を変更する状態でありうる。
【0056】
ステップS2は、省略しても良く、ステップS1の停止状態から、ステップS3に進むこともできる。ステップS3の直前の状態は、ステップS1の停止状態あるいはステップS2の姿勢変更状態であるが、いずれの状態でも、外力が加わっていない状態でありうる。また、外力が加わったとしても外力に従ったロボット200の姿勢の変更が制限されている状態である。すなわち、ステップS1の停止状態あるいはステップS2の姿勢変更状態では、仮にユーザーがロボット200に外力を加えてロボット200の姿勢を変更しようとしても、ロボット200の姿勢はほとんど変わらない状態である。ステップS3の直前の状態を第一状態と総称することができる。
【0057】
ステップS3では、各接触検出センサ231~236が、第一状態のロボット200にかかる外力を検出している。また、接触判定部314が、ロボット200にかかる外力を、接触と判定するか否かの判定を行なう。
【0058】
ステップS3で検出した外力が、大きさF1である場合、ロボット200に接触物があると推定されるようにコントローラ300が設定されている。その結果、ロボット200に接触物があると判定される。ステップS3で検出した外力が、大きさF1より小さい大きさF2である場合、ロボット200に接触物はないと推定されるようにコントローラ300が設定されている。その結果、ロボット200に接触物がないと判定される。
【0059】
具体的には、外力の大きさF3に相当する閾値を設定し、ステップS3で検出した外力が閾値である大きさF3よりも大きいか小さいかで、接触物の有無の判定が行われる。
【0060】
ここで、閾値となる大きさF3は、大きさF1より小さく大きさF2よりも大きい(F1>F3>F2)ものである。閾値となる大きさF3に等しい外力が検出された場合に、接触物があると判定するか、ないと判定するかは適宜設定できる。
【0061】
外力の検出方法として、関節軸201~206回りのトルクを検出する、通電電流の変化を検出する、または視覚センサで、ロボット200に接触物があることを検出する等の方法がある。
【0062】
ステップS3で、各接触検出センサ231~236が、第一状態のロボット200にかかる外力を検出した場合、かかる外力を接触と判定するか否かの判定を行なう。第一状態のロボット200にかかる外力とは、ロボット200の周囲にある物体400が、ロボット200に接触することで与える外力である。ロボット200の周囲にある物体400とは、ロボット200が設置された空間に存在するロボット以外の設備(不動物、可動物)である。たとえば、物体400は人でも良い。
【0063】
各接触検出センサ231~236が、第一状態のロボット200にかかる外力を検出した場合、データ生成部313は、接触検出センサ231~236の出力に基づくデータを接触判定部314に出力する。接触判定部314は、検出した外力が第一閾値より大きいか否かの判定を行ない、これによって、接触判定部314は、ロボット200に接触物がある、と判定するか否かの判定を行なう。
【0064】
接触検出センサ231~236がトルクセンサであれば、データ生成部313が接触検出センサ231~236の出力量からトルク値を生成しうる。この場合には、接触判定部314が、各接触検出センサ231~236の出力量に対応するトルク値が、所定のトルク値(第一閾値)を超えているかどうかを判定する。
【0065】
接触検出センサが電流センサであれば、データ生成部313が、電動モータの通電量から電流値を生成する。そして、接触判定部314が、各電動モータの通電量に対応する電流値が所定の電流値(第一閾値)を超えているかどうかを判定する。
【0066】
データ生成部313の出力値が、所定値(第一閾値)を超えている場合には、接触判定部314が、ロボット200に接触物があると判定する。データ生成部313の出力値が、所定値(第一閾値)を超えていない場合には、接触判定部314が、ロボット200に接触物がないと判定する。
【0067】
接触検出センサが視覚センサである場合、画像処理によってロボット200への接触物があるかないかが判定される。この場合、ステップS3は省略されうる。このとき上述の第一閾値は、使用方法に応じてユーザーが設定する事も可能である。
【0068】
ステップS3で、各接触検出センサ231~236が、外力を検出しない場合、ロボット200に接触物はないと推定されるようにコントローラが設定されている。このフローは、ステップS3のNOの場合であり、ステップS3からステップS2に戻る。
【0069】
また、ステップS3で検出した外力が第一閾値よりも小さい大きさF2である場合、ロボット200に接触物はないと推定されるようにコントローラが設定されている。このフローは、ステップS3のNOの場合であり、ステップS3からステップS2に戻る。
【0070】
ステップS3からステップS2へ戻るフローでは、ロボット200は、停止状態(ステップS1)に移行せず、第一状態での姿勢の変更を継続して行なう(ステップS2)ことができる。しかし、ステップS3の直前がステップS1である場合には、ステップS3からステップS1に戻ってもよいし、ステップS2へ移行してもよい。また、ステップS3の直前がステップS2である場合でも、ステップS3からステップS1に戻ってもよい。
【0071】
ステップS3で検出した外力が、大きさF1である場合、ロボット200に接触物があると判定される。ロボット200に接触物があると判定された場合、ステップS4に進み、コントローラ300は、ロボット200を第一状態から、外力に従った姿勢の変更を行なう状態に切り替える。
【0072】
コントローラ300は、ロボット200に対してインピーダンス制御を実施することで、外力に対する応答特性を変更しながらロボット200の姿勢を変更することができる。つまり、インピーダンス制御のパラメータである剛性や粘性を変更することで、ロボット200に外力が加わったときの、人の力覚感覚を変更しながら、ロボット200の姿勢を変更することができる。
【0073】
インピーダンス制御の剛性および粘性の少なくとも一方を減少させることで、第一状態のロボット200を、外力に従った姿勢の変更が可能な状態に切り替えることができる。ロボット200が、外力に従った姿勢の変更を行なう状態を第二状態と呼ぶ。
【0074】
第二状態とは、第一状態において制限されていた外力に従った姿勢の変更が緩和された状態である。なお、第一状態において外力に従った姿勢の変更が制限されていることと、第二状態において外力に従った姿勢の変更が緩和されていることとは、2つの状態の相対的な関係で定義される。すなわち、第一状態において外力に従った姿勢の変更は、第二状態において外力に従った姿勢の変更よりも制限されていればよい。従って、第一状態において外力に従った姿勢の変更が不可能であることを意味するものではない。例えば、第一状態において、関節ユニット211~216が有する強度を超えた外力を加えることにより、ロボット200は姿勢を変形することがあってもよい。また、第二状態において外力に従った姿勢の変更は、第一状態において外力に従った姿勢の変更よりも制限が緩和されていればよい。第一状態において外力に従った姿勢の変更よりも制限が緩和された状態とはすなわち、姿勢の制限が許容されている状態である。従って、第二状態において外力に従った姿勢の制限が一切されないことを意味するものではない。例えば、第二状態においても関節ユニット211~216が本来有する摩擦力などにより、外力に対してある程度の抵抗力は有しうる。
【0075】
ステップS5で、第二状態のロボット200は、ロボット200に加わる外力に従った姿勢の変更を開始する。このときにロボット200に加わる外力はロボット200が接触検出センサ231~236で検出することが望ましいが、他の方法で外力を検出していてもよいし、外力を検出していていなくてもよい。ステップS5で、ロボット200に加わる外力とは、ユーザーがロボット200を押圧することでロボット200に生じうる外力である。あるいは、ロボット200とは別のロボットがロボット200を押圧することでロボット200に生じうる外力である。
【0076】
ステップS6で、第二状態のロボット200に加わる外力を継続して検出しているか否かの判定を行なう。ステップS6で、外力の検出がなくなったと判定された場合、ロボット200は、外力に従った姿勢の変更を停止する。
【0077】
ステップS6で、継続して外力を検出していると判定された場合、ステップS7に進む。ステップS7では、ロボット200は、外力に従った姿勢の変更を継続し、ステップS8に進む。
【0078】
ステップS8で、ロボット200が継続して外力を検出しているか再度判定する。
【0079】
ステップS8で、外力の検出がなくなったと判定された場合、ロボット200は、外力に従った姿勢の変更を停止する。
【0080】
ステップS6、またはステップS8で、ロボット200が姿勢の変更を停止した場合、コントローラ300は、人が、所望の位置までロボット200の姿勢の変更を完了したと判断し、エンドに進む。
【0081】
ステップS8で、継続して外力を検出した場合、ステップS9に進み、ステップS9で、物体情報処理部312は、ロボット200が、制限条件を満たしているかどうかを判定する。ここで、制限条件とは、ロボット200の姿勢の変更を制限するか否かを判定する条件である。たとえば、ロボット200が周囲の物体400に近づく場合や、過度な外力や速度で、ロボット200が姿勢の変更を行なう場合や、ロボット200の特異点に近づく場合等に、ロボット200の姿勢の変更を制限する。ほかにも、事前に設定された所定の距離を移動した場合や、事前に設定された所定の時間だけロボット200が姿勢変更を行なった場合等が、ロボット200の姿勢の変更を制限する条件となっている。所定の距離の移動と、所定の時間の移動は、OR条件でもよいしAND条件でもよい。
【0082】
ステップS9で制限条件を満たした場合、ステップS10に進む。ステップS10で、コントローラ300は、ロボット200が、外力に従った姿勢の変更の開始後であって、第二状態のロボット200に外力が加わっている間に、第二状態に比べて姿勢の変更を制限する状態に切り替える。
【0083】
コントローラ300は、制御の剛性および粘性の少なくとも一方を増加させ、ロボット200の姿勢の変更を制限する。
【0084】
インピーダンス制御の剛性および粘性の少なくとも一方を増加させることで、外力に従った姿勢の変更を行なっているロボット200の姿勢変更を制限することが可能である。第二状態に比べて、姿勢の変更を制限する状態を第三状態と呼ぶ。
【0085】
第三状態とは、第二状態において解除されていた外力に従った姿勢の変更が制限された状態である。なお、第二状態において外力に従った姿勢の変更が解除されていることと、第三状態において外力に従った姿勢の変更が制限されていることとは、2つの状態の相対的な関係で定義される。すなわち、第三状態において外力に従った姿勢の変更は、第二状態において外力に従った姿勢の変更よりも制限されていればよい。従って、第三状態において外力に従った姿勢の変更が不可能であることを意味するものではない。例えば、第三状態において、関節ユニット211~216が有する強度を超えた外力を加えることにより、ロボット200は姿勢を変形することがあってもよい。また、第二状態において外力に従った姿勢の変更は、第三状態において外力に従った姿勢の変更よりも制限が緩和されていればよい。従って、第二状態において外力に従った姿勢の制限が一切されないことを意味するものではない。例えば、第二状態においても関節ユニット211~216が本来有する摩擦力などにより、外力に対してある程度の抵抗力は有しうる。
【0086】
ステップS10において、第二状態のロボット200が、第三状態に切り替わる。すなわち、外力に従った姿勢の変更を行なうロボット200が、姿勢の変更を制限される。姿勢の変更が制限されることによって、例えば姿勢の変更が停止されて、ロボット200は停止状態になる。あるいは、姿勢の変更が制限されることによって、与えた外力による姿勢の変更量が小さくなる。
【0087】
この制御を行なうことにより、ロボット200の姿勢の変更を制限することができる。
【0088】
<第三実施形態>
次に、第三実施形態におけるフローとして、
図5を用いて実施形態の一例のフローの説明を行なう。なお、第二実施形態のフローは、第三実施形態に記載したフロー以外の方法でも実現可能である。また、第三実施形態のフローは、
図5および下記の説明に記載したフロー以外の方法でも実現可能である。
【0089】
図5は、本実施形態のシステム100の詳細なフローチャートである。
【0090】
ステップS101~ステップS104は、第二実施形態におけるステップS2に相当するフローである。
【0091】
まずステップS101で、停止しているロボット200に動作を記憶させる教示作業を行なう。このとき、人が不図示の操作装置を使用してもよいし、直接手で触れて教示作業を行なっても良い。また、予めシミュレーション等により想定した動作を記録した動作ファイルをコントローラ300に記憶させてもよい。
【0092】
教示の完了後、ステップS102で、ロボット200の可動領域に存在する物体400の物体情報を取得する。物体情報を取得する手段は、たとえば、ロボット200の周囲を撮像するイメージセンサでもよいし、超音波センサや光学TOFセンサ、レーダーセンサ等の物体検出センサでもよい。また、ここでは、ロボット200の特異点についても物体情報として記憶させる。
【0093】
その後、ステップS103で、人がロボット200に、S101で教示した動作を指令し、ステップS104で、ロボット200が姿勢の変更を開始する。
【0094】
ステップS104で、ロボット200は、外力が加わっていない状態で姿勢の変更を行なう。この状態を第一状態と呼ぶが、第一状態は、第二実施形態で説明した第二状態の前の状態であるため、その他さまざまな状態でありうる。
【0095】
ステップS105~ステップS106は、第二実施形態のステップS3に相当するフローである。ステップS105で、データ生成部313および接触判定部314は、各接触検出センサ231~236が、第一状態のロボット200にかかる第一外力を検出しているか否かの判定を行なう。
【0096】
ステップS105で、各接触検出センサ231~236が、第一状態のロボット200にかかる外力を検出していると判定された場合、データ生成部313および接触判定部314が、接触情報を取得し、ステップS106に進む。
【0097】
ステップS106で、接触判定部314が、検出した第一外力が、大きさF3(第一閾値)より大きいか否かの判定を行なう。すなわち、接触判定部314は、ロボット200に接触物がある、と判定するか否かの判定を行なう。
【0098】
ステップS106で、各接触検出センサ231~236が、第一状態のロボット200にかかる第一外力を検出する。第一外力が第一閾値より大きい大きさF1である場合、接触判定部314は、ロボット200に接触物があると判定する。ここで、第一状態のロボット200にかかる外力とは、たとえば人がロボット200に与える外力や、他のロボットとの接触による外力である。
【0099】
ステップS107~S111は、第二実施形態のステップS4から、ステップS6で継続して外力を検出した場合に相当するフローである。ステップS106で接触物があると判定された場合、ステップS107に進み、コントローラ300は、ロボット200の動作を減速制御しながら、最終的にロボット200を停止させる。
【0100】
ステップS105で、ロボット200が、外力を検出していないと判定された場合、ロボット200に接触物はないと推定されるようにコントローラが設定されている。このフローは、ステップS105のNOの場合であり、ステップS105からステップS104に戻る。
【0101】
また、ステップS105で検出した第一外力が、ステップS106において第一閾値よりも小さい大きさF2である場合、ロボット200に接触物はないと推定されるようにコントローラが設定されている。このフローは、ステップS106のNOの場合であり、ステップS106からステップS104に戻る。
【0102】
ステップS108で、コントローラ300は、ステップS107で停止したロボット200を、第二外力に従った姿勢の変更を行なう状態に切り替える。ロボット200が、第二外力に従った姿勢の変更を行なう状態を第二状態と呼ぶ。ここで、第二状態のロボット200にかかる外力とは、たとえば人がロボット200に与える外力や、他のロボットとの接触による外力等である。
【0103】
このとき、外力に従った姿勢の変更を行なう状態であることを、周囲の人に明示するために、ランプの点灯や操作装置への表示を行なってもよい。外力に従った姿勢の変更を行なう状態とは、ロボット200が姿勢の変更は可能であるものの、まだ姿勢の変更を行なっていない状態である。
【0104】
コントローラ300は、第二状態のロボット200に対してインピーダンス制御を実施することで、外力に対する応答特性を変更しながらロボット200の姿勢を変更することができる。つまり、インピーダンス制御のパラメータである剛性や粘性を変更することで、ロボット200に外力が加わったときの、人の力覚感覚を変更しながら、ロボット200の姿勢を変更することができる。
【0105】
インピーダンス制御の剛性および粘性の少なくとも一方を減少させることで、停止状態のロボット200を、外力に従った姿勢の変更が可能な状態に切り替えることができる。
【0106】
ステップS109で、データ生成部313および接触判定部314は、各接触検出センサ231~236が、第二状態のロボット200にかかる第二外力の検出を行なっているか否かの判定を行なう。
【0107】
ステップS109で、各接触検出センサ231~236が、第二状態のロボット200にかかる外力を検出していると判定された場合、データ生成部313および接触判定部314が、接触情報を取得し、ステップS110に進む。
【0108】
ステップS109で検出した第二外力が、大きさF4である場合、ステップS111に進み、ロボット200は外力に従った姿勢の変更を開始する。
【0109】
このとき、外力に従った姿勢の変更中であることを、周囲の人に明示するために、ランプの点灯や操作装置への表示を行なってもよい。外力に従った姿勢の変更中の状態とは、ロボット200が姿勢の変更を行なっている状態である。
【0110】
ステップS109で検出した第二外力が、大きさF5である場合、ステップS119に進み、ロボット200は駆動を停止する。
【0111】
具体的には、外力の大きさF6(第二閾値)に相当する閾値を設定し、ステップS109で検出した外力が、ステップS110で、閾値である大きさF6よりも大きいか小さいかで、ステップS111またはステップS119に進むかの判定が行われる。コントローラ300は、ロボットに加わった外力の大きさに応じた値と閾値との比較を行なう。
【0112】
ここで、閾値となる大きさF6は、大きさF4より小さく大きさF5よりも大きい(F4>F6>F5)ものである。閾値となる大きさF6に等しい外力が検出された場合に、どちらのステップに進むかは適宜設定できる。
【0113】
コントローラ300は、大きさF6を、大きさF4に応じた値と大きさF5に応じた値との間で、変更することができる。
【0114】
ステップS112~ステップS118は、第二実施形態のステップS7~ステップS10に相当するフローである。ロボット200の姿勢変更の開始後であって、ステップS112で、コントローラ300は、外力に従った姿勢の変更を行なっているロボット200の可動領域に存在する物体400の検出を行なう。ここで、物体400とは、ロボット200の可動領域に存在する障害物であり、たとえば人や他のロボットや器材等でありうる。
【0115】
ステップS112で物体400を検出した場合、ロボット200は、ステップS113に進み、物体情報処理部が解析した物体情報を基に、検出した物体400までの距離を取得する。ここで、物体情報処理部312は、物体400の有無および物体400のサイズ等の情報を加味したロボット200と物体400との距離を算出し、ステップS102で取得した物体情報に追加する。
【0116】
ステップS114で、コントローラ300が、ステップS113で取得した物体400と、ロボット200との距離が、事前に設定された所定距離より大きいか否かを判定する。
【0117】
物体400との距離が所定距離以下かつ0より大きいと判定された場合、ステップS117に進み、コントローラ300は、インピーダンス制御の剛性および粘性の少なくとも一方を増加させ、ロボット200の姿勢の変更を制限する。姿勢の変更を制限する状態を、第三状態と呼ぶ。
【0118】
インピーダンス制御の剛性および粘性の少なくとも一方を増加させることで、外力に従った姿勢の変更を行なっているロボット200の姿勢変更を制限することが可能である。
【0119】
たとえば、ステップS108で、インピーダンス制御の剛性のみを減少させ、ステップS117でインピーダンス制御の粘性のみを増加させることも可能である。また、逆にステップS108で、インピーダンス制御の粘性のみを減少させ、ステップS117でインピーダンス制御の剛性のみを増加させることも可能である。
【0120】
ロボット200が、物体400に近づくにつれて、人がロボット200を押したときに発生する負荷が、徐々に大きくなるように、インピーダンスパラメータが設定される。負荷が徐々に大きくなる状態とは、インピーダンス制御の剛性および粘性が、物体400に近づくにつれ増加する状態である。インピーダンス制御の剛性および粘性が、物体400に近づくにつれ増加する状態を第四状態と呼ぶ。
【0121】
第四状態とは、ロボット200の姿勢の変更を制限する第三状態の内、ロボット200と物体400との距離が所定距離以下かつ0より大きく、物体400が存在する方向に近づいている場合の状態である。
【0122】
ロボット200は、ロボット200と物体400との距離が所定距離以下かつ0より大きく、物体が存在する方向に近づいていない場合は、外力に従った姿勢の変更を行なう第二状態である。
【0123】
つまり、ロボット200が物体400に近づく方向には、姿勢の変更が行なわれないようにしている。また、特異点との距離が所定距離以下かつ0より大きく、特異点に近づく方向に姿勢の変更を行なっている場合も、物体400に近づく方向と同様である。つまり、ロボット200を第三状態に切り替え、特異点に近づくにつれ、インピーダンス制御の剛性および粘性が、徐々に増加する第四状態に切り替える。
【0124】
物体400に近づく方向や、特異点に近づく方向に姿勢の変更を行なう場合のみ、姿勢の変更を制限するわけではなく、事前にロボット200の、外力に従った姿勢の変更幅を設定することができる。
【0125】
つまり、事前に第二状態のロボット200における姿勢の変更の上限距離を、たとえば30cm、と設定しておくことで、人が予期しないような姿勢の変更を行なうことを抑制することができる。
【0126】
ほかにも、外力に従った姿勢の変更が可能な時間を予め設定しておくことも可能である。
【0127】
物体400との距離が所定距離よりも大きい場合、ステップS112に戻る。ステップS112からステップS114までのフローを繰り返すことで、ロボット200の可動領域に存在する物体情報を常時更新して姿勢の変更を行なう。これにより、姿勢変更中に人がロボット200の可動領域へ入ってきたり、物が倒れて、ロボット200の可動領域へ入ってきたりした場合にも対応することが可能である。ここで、ロボット200と物体400との距離が、所定距離と等しい場合、どちらのステップに進むかは適宜設定できる。
【0128】
なお、外力に従った姿勢変更中に、操作装置等のロボット200に触れずにロボット200の姿勢を変更させる手段でロボット200を動かそうとすると、姿勢の変更を優先させるため、コントローラ300は、操作装置によるロボット駆動指示を無視する。これは、操作装置の外部指示によるロボット200の姿勢変更によって、ロボット200を押している人にとって意図しない方向にロボット200が姿勢の変更を行なうことを防止するためである。
【0129】
また、ステップS111で、姿勢変更制御部315が、外力に従った姿勢の変更を開始したロボット200の姿勢変更の速度をステップS115で取得する。
【0130】
ステップS116で、姿勢変更制御部315が取得した姿勢変更の速度が速度V1である場合、ステップS117に進み、コントローラ300が、人がロボット200を押したときに発生する負荷が、大きくなるように、ロボット200を第三状態に切り替える。
【0131】
ステップS116で、姿勢変更制御部315が取得した姿勢変更の速度が速度V2である場合、ステップS115に戻り、再び姿勢変更制御部315が、姿勢変更の速度を取得する。
【0132】
具体的には、姿勢変更の速度V3(第三閾値)に相当する閾値を設定し、ステップS115で検出した速度が、ステップS116で、閾値である速度V3よりも大きいか小さいかで、どちらのステップに進むかの判定が行われる。
【0133】
ここで、閾値となる速度V3は、速度V1より小さく速度V2よりも大きい(V1>V3>V2)ものである。閾値となる速度V3に等しい速度が検出された場合に、どちらのステップに進むかは適宜設定できる。
【0134】
これにより、ロボット200が、過度な速度で姿勢を変更することを防ぎ、ロボット200が周囲の物体400に衝突した場合でも、ロボット200と周囲の物体400との過度な接触を抑制することができる。
【0135】
ステップS117で姿勢の変更の制限を行なったロボット200は、ステップS118で復帰動作を行なう。復帰動作は、コントローラ300が、復帰動作を指示することで実行される。
【0136】
復帰動作においては、現在、ロボット200の位置が元々設定された動作範囲内にあるか判定し、姿勢の変更後の位置から、事前に設定した所定の復帰位置にロボット200は、復帰する。
【0137】
設定された動作範囲外にある場合には、コントローラ300が、ロボット200に、停止した地点から姿勢の変更で移動した軌跡を反転した軌跡に沿って、ステップS107において停止した地点まで戻った後に、所定の復帰位置に戻るよう指示する。
【0138】
姿勢の変更で移動した軌跡は、コントローラ300に記録されているため、移動してきた軌跡を反転して復帰することが可能である。ここで復帰動作において、軌跡の記憶方法は、直接教示の際に姿勢変更の軌跡を記憶する方法と同様の方法を採用できる。反転動作で復帰することで、物体400がない軌跡での復帰が可能となり、ロボット200やその周囲の物体400との接触を抑制することができる。
【0139】
または、設定された動作範囲のうち、停止した地点までの距離が近く、物体400がない最短経路を演算して、設定された動作範囲内に移動した後、所定の復帰位置に戻るよう指示する。
【0140】
一方、現在位置が元々設定された動作範囲内にあるか判定し、ロボット200が動作範囲内にある場合には、コントローラ300が、ロボット200に現在位置から所定の復帰位置に戻るよう指示する。
【0141】
この復帰動作中にも、物体検出センサ311が、物体400の検出を行なう。取得した物体情報を、物体情報処理部312で、物体400とロボット200との距離を解析し、姿勢変更制御部315に出力することで、確実にロボット200は所定の復帰位置に復帰することができる。
【0142】
ステップS109で各接触検出センサ231~236が、第二外力を検出しない、または検出した第二外力が第二閾値よりも小さい大きさF5である場合、ステップS119に進む。ステップS119で、外力に従った姿勢の変更を行わず、ロボット200は姿勢の変更を停止する。このとき上述の第二閾値は、使用方法に応じてユーザーが適宜設定する事も可能である。また、第一状態、第二状態、第三状態および第四状態のうち、各々の状態であることを周囲の人に明示するために、ランプの点灯や操作装置への表示を行なってもよい。操作装置とは例えば、ティーチングペンダントや操作盤などである。
【0143】
ステップS119~ステップS126は、第二実施形態のステップS6において、継続して外力の検出を行なわない場合に相当するフローである。ステップS119で姿勢の変更を停止したロボット200に対して、ステップS120で操作装置による操作があるか否かを判定する。
【0144】
ステップS120で、操作装置による操作があると判定した場合、ロボット200は、ステップS122に進み、外力に従った姿勢の変更を行なう第二状態から、通常停止状態に切り替わる。ここで、通常停止状態は、ロボット200に外力が加わることを想定しておらず、コントローラ300が、エラーになりうる状態である。そのため、ステップS123で、通常停止状態にあるロボット200に外力が加わった場合、ステップS124に進む。
【0145】
ステップS124で、接触判定部314は、検出した外力が大きさF7である場合、ステップS125に進み、コントローラ300が、エラー状態になる。エラーは、周囲の人に、コントローラ300がエラー状態であることが知れればよく、警告を鳴らす等でもよい。
【0146】
ステップS124で、接触判定部314は、検出した外力が大きさF8である場合、ステップS126に進み、コントローラ300が、ロボット200にステップS118と同様の復帰動作を指令する。
【0147】
具体的には、外力の大きさF9(第四閾値)に相当する閾値を設定し、ステップS123で検出した外力が、ステップS124で、閾値である大きさF9よりも大きいか小さいかで、ステップS125またはステップS126に進むかの判定が行われる。
【0148】
ここで、閾値となる大きさF9は、大きさF7より小さく大きさF8よりも大きい(F7>F9>F8)ものである。閾値となる大きさF9に等しい外力が検出された場合に、どちらのステップに進むかは適宜設定できる。
【0149】
ステップS120で操作装置による操作がないと判定された場合、ステップS121に進み、外力が所定時間の間、検出されないかを判定する。
【0150】
ステップS121で、姿勢の変更を停止しているロボット200の、外力を検出しない時間が、所定時間より長かった場合、ステップS122の通常停止状態に進む。
【0151】
ステップS120で、所定時間に達する前に外力を検出した場合、ステップS109に戻り、ロボット200は、外力に従った姿勢の変更を行う第二状態と切り替わる。
【0152】
ステップS123で、ロボット200に外力が加わらない、またはステップS124で検出した外力が、第四閾値より小さい大きさF8である場合、ロボット200はステップS126に進む。ロボット200は、ステップS126で、ステップS118と同様の復帰動作を行なう。このとき上述の第四閾値は、使用方法に応じてユーザーが適宜設定する事も可能である。
【0153】
<第四実施形態>
次に、
図6を用いて第四の実施形態について説明する。
【0154】
図6は、ロボット200に直接教示を行なう場合のフローチャートである。
【0155】
まず、スタートの段階では、ロボット200は、電源が入っておらず、関節軸201~206が固定されている状態である。
【0156】
ステップS150で、ロボット200に電源が入るものの、ロボット200は、停止している状態である。ここで、ステップS150における停止している状態とは、電動モータが、ロボット200の自重を支えている状態である。すなわち、ロボット200の各部に加わる重力によって、ロボット200が姿勢を変更しようとすることを、電動モータが防いでいる状態である。
【0157】
電動モータが、ロボット200の自重を支え、ロボット200が停止している状態を第一状態と呼ぶ。
【0158】
ステップS151で、物体検出センサ311が、ロボット200の可動領域に存在する物体400の情報を取得する。また、ここでは、ロボット200の特異点についても物体情報として記憶させる。
【0159】
ステップS152で、データ生成部313および接触判定部314は、各接触検出センサ231~236が、第一状態のロボット200にかかる外力を検出しているか否かの判定を行なう。
【0160】
ステップS152で、各接触検出センサ231~236が、外力を検出していないと判定された場合、ロボット200に接触物はないと推定されるようにコントローラが設定されている。このフローは、ステップS152のNOの場合であり、ステップS152からステップS150に戻り、停止状態を継続する。
【0161】
第一状態のロボット200は、検出した外力に基づいてステップS153に進み、人がロボット200に、直接教示が可能な状態となる。直接教示が可能な状態とは、人が直接触ってロボット200の姿勢を変更させることが可能な状態であり、外力の検出に基づいて、ロボット200が、外力に従った姿勢の変更を行ない、姿勢を変更した経路を記録する状態である。この状態を第二状態と呼ぶ。
【0162】
ステップS154で、人が、ロボット200に外力を加え、姿勢の変更を開始する。
【0163】
ステップS155で物体400を検出した場合、ステップS156に進み、物体情報処理部312は、検出した物体400までの距離を取得する。ここで物体情報処理部312は、物体400の有無および物体400のサイズ等の情報を加味したロボット200と物体400との距離を算出し、ステップS151で取得した物体情報に追加する。
【0164】
第三実施形態と同様に、ステップS157で、物体情報処理部312が、ステップS156で取得した物体400とロボット200との距離が、0より大きい所定距離より大きいか否かを判定する。また、ここでは、ロボット200とロボット200の特異点との距離も同様に、所定距離より大きいか否かの判定を行なう。
【0165】
物体400との距離、または特異点との距離、が所定距離より小さいかつ0より大きいと判定された場合、ステップS160に進む。ステップS160で、コントローラ300は、インピーダンスパラメータの剛性または粘性の少なくとも一方を増加させ、ロボット200の姿勢変更を制限する。姿勢の変更を制限する状態を、第三状態と呼ぶ。
【0166】
物体400との距離が所定距離よりも大きいと判定された場合、ステップS155に戻る。ステップS155からステップS157までのフローを繰り返すことで、ロボット200の可動領域に存在する物体情報を常時更新して姿勢の変更を行なう。それにより、ロボット200とその周囲の物体400との接触を抑制することができる。
【0167】
また、ステップS154で、姿勢変更制御部315が、外力に従った姿勢の変更を開始した、ロボット200の姿勢変更の速度をステップS158で取得する。
【0168】
ステップS159で、姿勢変更制御部315が取得した速度が、第三閾値を超えているか否かを判定する。
【0169】
速度が、第三閾値より大きい速度V1である場合、ステップS160に進み、コントローラ300が、人がロボット200を押したときに発生する負荷を徐々に大きくなるようにインピーダンスパラメータを設定する。
【0170】
姿勢変更の速度が、第三閾値より小さい速度V2である場合、ステップS158に戻り、再び姿勢変更制御部315が、姿勢変更の速度を取得する。このとき上述の第三閾値は、使用方法に応じてユーザーが適宜設定する事も可能である。
【0171】
これにより、ロボット200が、過度な速度で姿勢を変更することを防ぎ、ロボット200が周囲の物体に衝突した場合でも、ロボット200と周囲の物体との接触を抑制することができる。
【0172】
本実施形態のシステム100は、本実施形態のシステム100と製造者が協働して製造する製造方法に適用可能である。ここで、製造方法には、物品の加工や物品の移動等の製造工程を含みうる。その工程で、製造者がロボット200に接触し、製造者がロボット200に外力を加えることで、ロボット200の姿勢を変更することができる。
【0173】
また、物品を把持したロボット200に力を加えることで、ロボット200の姿勢を変更し、事前に設定された目標点まで姿勢の変更が完了したとき、ロボット200の姿勢の変更を制限する製造方法にも適用可能である。
【0174】
本発明の実施形態には、ロボット200の制御方法を、コンピュータに実行させるためのプログラム320が含まれうる。また本発明には、プログラム320を記録した記録媒体も含まれる。
【0175】
以上、説明した実施形態は、技術思想を逸脱しない範囲において適宜変更が可能である。たとえば複数の実施形態を組み合わせることができる。また、少なくとも1つの実施形態の一部の事項の削除あるいは置換を行うことができる。また、少なくとも1つの実施形態に新たな事項の追加を行うことができる。
【0176】
なお、本明細書の開示内容は、本明細書に明示的に記載したことのみならず、本明細書および本明細書に添付した図面から把握可能な全ての事項を含む。また本明細書の開示内容は、本明細書に記載した個別の概念の補集合を含んでいる。すなわち、本明細書に例えば「AはBよりも大きい」旨の記載があれば、たとえ「AはBよりも大きくない」旨の記載を省略していたとしても、本明細書は「AはBよりも大きくない」旨を開示していると云える。なぜなら、「AはBよりも大きい」旨を記載している場合には、「AはBよりも大きくない」場合を考慮していることが前提だからである。
【符号の説明】
【0177】
100 システム
200 ロボット
231~236 センサ
300 コントローラ