(57)【要約】【課題】教示用アームを使用する従来技術のロボット教示装置においては、教示用アームの指示具を教示しようとしている作業点に移動させようとした際、教示用アームの可動範囲を越えているために指示具が所望の作業点に届かない場合、教示作業者は、該指示具が教示しようとしている作業点に届くようロボットを動作させるために、教示用アームからプログラミングペンダントに持ち替えて手動でプログラミングペンダントを操作しなければならず、面倒であった。【解決手段】例えば、ロボットに取り付けられた教示用アームの余裕に関係した余裕度を求め、求めた余裕度が所望の閾値以下である場合に、当該余裕が小さくならないようにロボットの動作を制御するロボット教示装置を提供する。【選択図】図４
2011224745.tif 000002
【特許請求の範囲】
【請求項１】
作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するロボット教示装置であって、
前記教示用アームは少なくとも１つの回転関節と少なくとも２つのリンクとを有し、前記教示用アームの回転関節の各々には２つのリンクが接続され、前記２つのリンクは当該回転関節を中心に回転することが可能であり、前記２つのリンクがなす角度は上限及び下限を有し、前記教示用アームのリンクのうちの１つのリンクは前記エンドエフェクタの位置姿勢を指示するための指示部を有し、前記指示部の位置姿勢を記憶することによって前記エンドエフェクタの位置姿勢は教示され、前記指示部を有するリンクに外力が加わることに応答して前記指示部は移動し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転し、
前記ロボットは少なくとも１つの回転関節又は直動関節と少なくとも２つのリンクとを有し、前記ロボットの回転関節又は直動関節の各々には２つのリンクが接続され、前記ロボットの回転関節に接続された２つのリンクはモータによって当該回転関節を中心に回転し、前記ロボットの直動関節に接続された２つのリンクのうちの一方のリンクはモータによって伸縮し、前記ロボットのリンクの各々は外力が加わることに応答して回転も伸縮もしないようにされ、前記ロボットのリンクのうちの１つのリンクは教示用アームを取り付けるための教示用アーム取り付け部を有し、前記ロボットのリンクのうちの少なくとも１つが回転又は伸縮することに従って前記教示用アーム取り付け部は移動し、
前記装置は、
前記教示用アームの回転関節の各々に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数である回転関節の余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクのなす角度の上限又は下限の角度との差が小さいことを示す前記回転関節の余裕度を求め、前記教示用アームの回転関節のうちの少なくとも１つの回転関節に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数であるリンクの余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクが一直線となったときの当該２つのリンクのなす角度との差が小さいことを示す前記リンクの余裕度を求め、求めた前記回転関節の余裕度と前記リンクの余裕度とを乗算することによって教示用アームの余裕度を求める手段と、
前記教示用アームの余裕度が所望の閾値以下である場合に、前記指示部の現在の位置と所定時間前の位置との差に基づいて前記指示部が移動した方向を求める手段と、
前記ロボットのモータに入力される信号であって求めた前記方向に前記教示用アーム取り付け部を移動させるための前記信号を生成する手段と
を備えた、ロボット教示装置。
【請求項２】
前記教示用アームは、少なくとも１つの直動関節を更に備え、前記直動関節の各々には２つのリンクが接続され、前記２つのリンクのうちの一方のリンクは伸縮することが可能であり、伸縮することによって変化する当該リンクの長さは上限及び下限を有し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転又は伸縮し、
前記余裕度を求める手段は、更に、前記教示用アームの直動関節の各々に関して、当該直動関節に接続されたリンクのうちの一方のリンクの長さの関数である直動関節の余裕度であって、該余裕度が小さいことは当該リンクの現在の長さと当該リンクの長さの上限又は下限の長さとの差が小さいことを示す前記直動関節の余裕度を求め、求めた前記回転関節の余裕度と求めた前記リンクの余裕度と求めた前記直動関節の余裕度とを乗算することによって前記教示用アームの余裕度を求める、
請求項１に記載のロボット教示装置。
【請求項３】
前記信号を生成する前記手段は、前記教示用アームの余裕度が前記所望の閾値以下である場合に前記信号を生成し、当該手段は、更に、求めた前記方向と求めた前記教示用アームの余裕度に基づいて、前記教示用アーム取り付け部を移動させる速度であって該速度の大きさは前記教示用アームの余裕度が小さくなるにつれ大きくなる前記速度を求め、前記速度に基づいて前記信号を生成する、請求項１又は２に記載のロボット教示装置。
【請求項４】
作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するロボット教示装置のコントローラであって、
前記教示用アームは少なくとも１つの回転関節と少なくとも２つのリンクとを有し、前記教示用アームの回転関節の各々には２つのリンクが接続され、前記２つのリンクは当該回転関節を中心に回転することが可能であり、前記２つのリンクがなす角度は上限及び下限を有し、前記教示用アームのリンクのうちの１つのリンクは前記エンドエフェクタの位置姿勢を指示するための指示部を有し、前記指示部の位置姿勢を記憶することによって前記エンドエフェクタの位置姿勢は教示され、前記指示部を有するリンクに外力が加わることに応答して前記指示部は移動し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転し、
前記ロボットは少なくとも１つの回転関節又は直動関節と少なくとも２つのリンクとを有し、前記ロボットの回転関節又は直動関節の各々には２つのリンクが接続され、前記ロボットの回転関節に接続された２つのリンクはモータによって当該回転関節を中心に回転し、前記ロボットの直動関節に接続された２つのリンクのうちの一方のリンクはモータによって伸縮し、前記ロボットのリンクの各々は外力が加わることに応答して回転も伸縮もしないようにされ、前記ロボットのリンクのうちの１つのリンクは教示用アームを取り付けるための教示用アーム取り付け部を有し、前記ロボットのリンクのうちの少なくとも１つが回転又は伸縮することに従って前記教示用アーム取り付け部は移動し、
前記コントローラは、
前記教示用アームの回転関節の各々に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数である回転関節の余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクのなす角度の上限又は下限の角度との差が小さいことを示す前記回転関節の余裕度を求め、前記教示用アームの回転関節のうちの少なくとも１つの回転関節に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数であるリンクの余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクが一直線となったときの当該２つのリンクのなす角度との差が小さいことを示す前記リンクの余裕度を求め、求めた前記回転関節の余裕度と前記リンクの余裕度とを乗算することによって教示用アームの余裕度を求める手段と、
前記教示用アームの余裕度が所望の閾値以下である場合に、前記指示部の現在の位置と所定時間前の位置との差に基づいて前記指示部が移動した方向を求める手段と、
前記ロボットのモータに入力される信号であって求めた前記方向に前記教示用アーム取り付け部を移動させるための前記信号を生成する手段と
を備えた、ロボット教示装置のコントローラ。
【請求項５】
作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するためのプログラムであって、
前記教示用アームは少なくとも１つの回転関節と少なくとも２つのリンクとを有し、前記教示用アームの回転関節の各々には２つのリンクが接続され、前記２つのリンクは当該回転関節を中心に回転することが可能であり、前記２つのリンクがなす角度は上限及び下限を有し、前記教示用アームのリンクのうちの１つのリンクは前記エンドエフェクタの位置姿勢を指示するための指示部を有し、前記指示部の位置姿勢を記憶することによって前記エンドエフェクタの位置姿勢は教示され、前記指示部を有するリンクに外力が加わることに応答して前記指示部は移動し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転し、
前記ロボットは少なくとも１つの回転関節又は直動関節と少なくとも２つのリンクとを有し、前記ロボットの回転関節又は直動関節の各々には２つのリンクが接続され、前記ロボットの回転関節に接続された２つのリンクはモータによって当該回転関節を中心に回転し、前記ロボットの直動関節に接続された２つのリンクのうちの一方のリンクはモータによって伸縮し、前記ロボットのリンクの各々は外力が加わることに応答して回転も伸縮もしないようにされ、前記ロボットのリンクのうちの１つのリンクは教示用アームを取り付けるための教示用アーム取り付け部を有し、前記ロボットのリンクのうちの少なくとも１つが回転又は伸縮することに従って前記教示用アーム取り付け部は移動し、
前記プログラムが計算機上で実行されると、当該計算機は、
前記教示用アームの回転関節の各々に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数である回転関節の余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクのなす角度の上限又は下限の角度との差が小さいことを示す前記回転関節の余裕度を求め、前記教示用アームの回転関節のうちの少なくとも１つの回転関節に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数であるリンクの余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクが一直線となったときの当該２つのリンクのなす角度との差が小さいことを示す前記リンクの余裕度を求め、求めた前記回転関節の余裕度と前記リンクの余裕度とを乗算することによって教示用アームの余裕度を求める手段と、
前記教示用アームの余裕度が所望の閾値以下である場合に、前記指示部の現在の位置と所定時間前の位置との差に基づいて前記指示部が移動した方向を求める手段と、
前記ロボットのモータに入力される信号であって求めた前記方向に前記教示用アーム取り付け部を移動させるための前記信号を生成する手段と
として機能する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施形態は、ティーチングプレイバック方式の産業用ロボットにおいて、教示用アームを使用して該ロボットのエンドエフェクタの位置姿勢を教示するための装置およびプログラムに関する。
【背景技術】
【０００２】
ティーチングプレイバック方式の産業用ロボットにおいてエンドエフェクタの位置姿勢を教示する手法として、現在、幾つかの手法が存在する。
プログラミングペンダントと呼ばれるボックス型の操作装置を主に使用する手法がある。この手法において、教示作業者は、プログラミングペンダント上の軸操作スイッチを押してロボットを所望なように動作させ、エンドエフェクタを作業対象物の作業位置などに移動させてエンドエフェクタの位置と姿勢とをロボットコントローラに記憶させていた。しかし、このように軸操作スイッチを押してロボットを操作するのは熟練が必要であり、またいくら操作に熟練していてもエンドエフェクタの移動速度を変更したり、正確な作業位置にエンドエフェクタを移動させるのは時間がかかってしまうという難点があった。さらに、スイッチを押し間違えてロボットを作業対象物へぶつけてしまうといった難点もあった。
【０００３】
ロボットの先端を教示作業者が直接把持してその先端を作業位置に移動させることで教示を行うダイレクトティーチングと呼ばれる手法がある。しかし、この手法は、教示作業者の操作力を計測するための高価な力センサが必要となり、安定な力制御を実現するためには大きな操作力を加えなければならず、精密な位置の調整が難しいといった難点があった。
【０００４】
教示作業者が指示棒を持ち、３次元距離センサ等で指示棒の先端の位置を計測することで教示を行う手法がある。しかし、この手法は、３次元距離センサの座標系からロボット座標系までの座標変換をする間にセンサの分解能による誤差、センサの設置誤差、及びロボットの設置誤差等様々な誤差が生じるために正確に位置を計測することができず、これら誤差を取り除くためには複雑なキャリブレーションが必要になるといった難点があった。
【０００５】
そして、これらの難点を克服した手法として、ロボットの先端に着脱可能な教示用アームを取り付け、教示用アームの指示具によってエンドエフェクタの位置姿勢を教示する手法がある（例えば、特許文献１または２参照）。図９は、従来技術のロボット教示装置を示す図である。図９において、１はロボットであり、このロボットの先端部１ｂには教示用アーム４が装着されている。この手法では、教示作業者が教示用アーム４を直接把持して動かし、教示時の教示用アーム４の指示具４８の位置姿勢に基づいて実際の作業時のロボット１のエンドエフェクタの位置姿勢を教示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２７６２７５号公報（図１、項４）
【特許文献２】特開平３−１９７８２号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、教示用アームを使用する従来技術のロボット教示装置においては、教示用アームの指示具を教示しようとしている作業点に移動させようとした際、教示用アームの可動範囲を越えているために指示具が所望の作業点に届かない場合、教示作業者は、該指示具が教示しようとしている作業点に届くようロボットを動作させるために、一旦教示用アームから手を離し、プログラミングペンダントに持ち替えて手動でプログラミングペンダントを操作した後に再度教示アームを持たなければならず、面倒であった。このような持ち替えをできるだけ少なくするためには、可動範囲が広い教示用アーム、即ち、大きな教示用アームを使用すればよいのであるが、大きな教示用アームは操作性が悪く着脱も困難であるため、現実的には、教示用アームはあまり大きくすることができない。
【課題を解決するための手段】
【０００８】
本願発明の一実施形態は、作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するロボット教示装置であって、以下の特徴を有したものである。
【０００９】
前記教示用アームは少なくとも１つの回転関節と少なくとも２つのリンクとを有し、前記教示用アームの回転関節の各々には２つのリンクが接続され、前記２つのリンクは当該回転関節を中心に回転することが可能であり、前記２つのリンクがなす角度は上限及び下限を有し、前記教示用アームのリンクのうちの１つのリンクは前記エンドエフェクタの位置姿勢を指示するための指示部を有し、前記指示部の位置姿勢を記憶することによって前記エンドエフェクタの位置姿勢は教示され、前記指示部を有するリンクに外力が加わることに応答して前記指示部は移動し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転する。
【００１０】
また、前記ロボットは少なくとも１つの回転関節又は直動関節と少なくとも２つのリンクとを有し、前記ロボットの回転関節又は直動関節の各々には２つのリンクが接続され、前記ロボットの回転関節に接続された２つのリンクはモータによって当該回転関節を中心に回転し、前記ロボットの直動関節に接続された２つのリンクのうちの一方のリンクはモータによって伸縮し、前記ロボットのリンクの各々は外力が加わることに応答して回転も伸縮もしないようにされ、前記ロボットのリンクのうちの１つのリンクは教示用アームを取り付けるための教示用アーム取り付け部を有し、前記ロボットのリンクのうちの少なくとも１つが回転又は伸縮することに従って前記教示用アーム取り付け部は移動する。
【００１１】
そして、前記装置は、
前記教示用アームの回転関節の各々に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数である回転関節の余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクのなす角度の上限又は下限の角度との差が小さいことを示す前記回転関節の余裕度を求め、前記教示用アームの回転関節のうちの少なくとも１つの回転関節に関して、当該回転関節に接続された２つのリンクのなす現在の角度の関数であるリンクの余裕度であって、該余裕度が小さいことは前記現在の角度と当該２つのリンクが一直線となったときの当該２つのリンクのなす角度との差が小さいことを示す前記リンクの余裕度を求め、求めた前記回転関節の余裕度と前記リンクの余裕度とを乗算することによって教示用アームの余裕度を求める手段と、
前記教示用アームの余裕度が所望の閾値以下である場合に、前記指示部の現在の位置と所定時間前の位置との差に基づいて前記指示部が移動した方向を求める手段と、
前記ロボットのモータに入力される信号であって求めた前記方向に前記教示用アーム取り付け部を移動させるための前記信号を生成する手段と
を備えている。
【００１２】
前記教示用アームは、少なくとも１つの直動関節を更に備えていてもよい。この場合、前記直動関節の各々には２つのリンクが接続され、前記２つのリンクのうちの一方のリンクは伸縮することが可能であり、伸縮することによって変化する当該リンクの長さは上限及び下限を有し、前記指示部が移動することに従って前記教示用アームのリンクのうちの少なくとも１つのリンクは回転又は伸縮することになる。
【００１３】
また、この場合、前記余裕度を求める手段は、更に、前記教示用アームの直動関節の各々に関して、当該直動関節に接続されたリンクのうちの一方のリンクの長さの関数である直動関節の余裕度であって、該余裕度が小さいことは当該リンクの現在の長さと当該リンクの長さの上限又は下限の長さとの差が小さいことを示す前記直動関節の余裕度を求め、求めた前記回転関節の余裕度と求めた前記リンクの余裕度と求めた前記直動関節の余裕度とを乗算することによって前記教示用アームの余裕度を求めることになる。
【００１４】
前記信号を生成する前記手段は、前記教示用アームの余裕度が前記所望の閾値以下である場合に前記信号を生成してもよい。当該手段は、更に、求めた前記方向と求めた前記教示用アームの余裕度に基づいて、前記教示用アーム取り付け部を移動させる速度であって該速度の大きさは前記教示用アームの余裕度が小さくなるにつれ大きくなる前記速度を求め、前記速度に基づいて前記信号を生成してもよい。
【００１５】
本願発明の別の一実施形態は、作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するロボット教示装置のコントローラである。このコントローラは、上述の手段を備えている。
【００１６】
本願発明の別の一実施形態は、作業時にロボットに取り付けられるエンドエフェクタの位置姿勢を、前記ロボットに取り付けられた教示用アームを使用して教示するためのプログラムである。このプログラムが計算機上で実行されることにより、当該計算機は上述の手段として機能することになる。
【発明の効果】
【００１７】
本願発明の一実施形態によると、ロボットに取り付けられた教示用アームの指示部を移動させたとき、教示用アームの余裕度がある閾値以下になると、ロボットの教示用アーム取り付け部は教示用アームを移動させた方向に自動的に移動することになる。従って、教示用アーム取り付け部を移動させなければ届かない作業点に指示部を移動させたい場合でも、プログラミングペンダントに持ち替えることなく、シームレスに指示部をその作業点へ移動させ続けることができるため、面倒な操作を省くことができ、教示時間を短縮できるといった効果が得られることになる。
【図面の簡単な説明】
【００１８】
【図１】本願発明の一実施形態に係るロボット教示装置を含むシステムの外観図
【図２】本願発明の一実施形態に係るロボット教示装置における教示用アームの例を示す図
【図３】本願発明の一実施形態に係るロボット教示装置を使用したときのロボットの動作を示す図
【図４】本願発明の一実施形態に係るロボット教示装置におけるコントローラのブロック図
【図５】回転関節の余裕度の例示的な計算手法を示す図
【図６】直動関節の余裕度の例示的な計算手法を示す図
【図７】リンクの余裕度の例示的な計算手法を示す図
【図８】リンクの余裕度の例示的な代替計算手法を示す図
【図９】従来技術のロボット教示装置の概略図
【発明を実施するための形態】
【００１９】
以下、本願発明の実施形態について図を参照して説明する。
【実施例】
【００２０】
図１は、本願発明の一実施形態に係るロボット教示装置を含むシステムの外観図である。「ロボット教示装置」とは、作業時のロボットの動作を設定するために、該ロボットの動作を教示するとき（教示時）に使用される装置のことである。以下の説明において、「この実施形態に係るロボット教示装置」という用語は、「コントローラ２００の一部、プログラミングペンダント３００、及び教示用アーム４００を含む装置」を意味するものとして使用しているが、ロボット教示装置が含むものをこれらに限定する意図はない。なお、「ロボットの動作」を教示することの一例は、後述する「エンドエフェクタの位置姿勢」を教示することである。
【００２１】
「ロボット」とは、人の代わりに何らかの作業を行う装置のことであり、この実施形態に係るロボット教示装置において使用するロボット１００は、ロボット教示装置を使用して動作を教示した後、教示した該動作を再生することによって自動作業を行う方式（ティーチングプレイバック方式）の産業用ロボットであるものとする。しかしながら、ロボット１００として、人の代わりに何らかの作業を行う別の装置を使用してもよい。この実施形態に係るロボット教示装置において、教示作業者は、教示用アーム４００を使用してロボット１００に取り付けられるエンドエフェクタ（図示せず）の作業時の位置姿勢を教示することができる。なお、「エンドエフェクタ」とは、物を掴むハンド（グリッパ）や、バリ取りを行うグラインダ等、産業用ロボットの作業対象物に何らかの作業を行う装置のことである。エンドエフェクタは作業時にロボット１００に取り付けられていればよく、教示時には取り外すことができる。また「作業時」とは、エンドエフェクタが作業対象物に何らかの作業を実際に行うときを意味している。
【００２２】
ロボット１００は、少なくとも１つの回転関節又は直動関節と少なくとも２つのリンクとを有している。ロボット１００の回転関節又は直動関節の各々には２つのリンクが接続されている。回転関節の場合、ロボット１００の回転関節に接続された２つのリンクはモータによって当該回転関節を中心に回転する。この回転関節の軸には、当該関節を中心とするリンクの回転角度（以後、「関節角度」とする）を検出するためのエンコーダ等の角度検出センサを取り付けることができる。この角度検出センサは、検出された関節角度を示す角度検出信号を出力する。出力された角度検出信号はコントローラ２００に入力される。この角度検出信号に基づいて、ロボット１００のある回転関節について、当該関節に接続された２つのリンクのなす角度を求めることができる。
一方、直動関節の場合、ロボット１００の直動関節に接続された２つのリンクのうちの一方のリンクはモータによって伸縮する。この直動関節の軸には、伸縮することによって変化するリンクの長さを検出するための長さ検出センサを取り付けることができる。この長さ検出センサは、検出されたリンクの長さを示す長さ検出信号を出力する。出力された長さ検出信号はコントローラ２００に入力される。
モータはコントローラ（制御装置）２００によって制御される。また、モータは関節が有することができる。また、ロボット１００のリンクの各々は外力が加わることに応答して回転も伸縮もしないようにされている。ロボット１００のリンクのうちの１つのリンクは教示用アーム４００を取り付けるための教示用アーム取り付け部１３０を有している（図３を参照）。図１に示すロボット教示装置では、教示用アーム取り付け部１３０を有するリンクは、ロボット１００が備えるリンクのうちの該ロボットの先端に最も近いリンクであるロボット先端リンク１１０である。ここではロボット先端リンク１１０の回転の中心となる軸の方向１１１に教示用アーム４００を取り付けているが、この軸に対して垂直方向に取り付けてもよい。また必ずしも先端部分に取り付ける必要はなく、例えばロボット先端リンク１１０の根元部分に取り付けてもよい。ロボット１００のリンクのうちの少なくとも１つが回転又は伸縮することに従って教示用アーム取り付け部１３０は移動する。なお、この実施形態に係るロボット教示装置において、ロボット１００は６自由度構成である。
【００２３】
「プログラミングペンダント」とは、情報を表示するためのディスプレイ及び情報を入力するための複数のボタンの一方又は双方を備えており、これら情報に基づく信号を送受信する装置である。また、プログラミングペンダントは、上記ディスプレイ又はボタンを使用して、ロボットを手動で動作させる機能、ロボット教示装置におけるモードを変更する機能、及び教示したロボットの動作を確認し編集する機能等を有している。モードの例としては、ロボットの動作を教示するためのモード（教示時のモード）、教示した該動作を確認し編集するモード、及び教示した該動作を再生させるモード（作業時のモード）等が挙げられる。教示した動作の編集の例としては、上記ボタンを使用して、教示した該動作の一部を修正すること、教示した該動作の一部を複製又は削除すること、及び教示した該動作の一部と一部との間に条件分岐を設定すること等が挙げられる。この実施形態に係るロボット教示装置におけるプログラミングペンダント３００は、コントローラ２００に接続されており、コントローラ２００に対して上記信号を入出力する。また、プログラミングペンダント３００は、上記ボタンを使用して該ロボット教示装置におけるパラメータを変更する機能を更に有していてもよい。パラメータの例としては、後述の教示用アームの余裕度の閾値E0、回転関節の余裕度に関係したAmin_i、Amax_i、a1_i、及びa2_i、直動関節の余裕度に関係したBmin_k、Bmax_k、b1_k、及びb2_k、並びにリンクの余裕度に関係したw1及びw2等が挙げられる。
【００２４】
「教示用アーム」とは、教示時にロボットに取り付けられ教示作業者が操作することにより、作業時のロボットの動作を教示するための装置のことである。この実施形態に係るロボット教示装置における教示用アーム４００は、少なくとも１つの回転関節と少なくとも２つのリンクとを有している。教示用アーム４００の回転関節の各々には２つのリンクが接続されている。これら２つのリンクは当該回転関節を中心に回転することが可能である。但し、これら２つのリンクがなす角度は上限及び下限を有している。教示用アーム４００は、少なくとも１つの直動関節を更に備えていてもよい。教示用アーム４００の直動関節の各々には２つのリンクが接続されている。これら２つのリンクのうちの一方のリンクは伸縮することが可能である。但し、伸縮することによって変化する当該リンクの長さは上限及び下限を有している。教示用アーム４００のリンクのうちの１つのリンクは、エンドエフェクタの位置姿勢を指示するための指示部４３０を有している（図２を参照）。エンドエフェクタの位置姿勢は、指示部４３０の位置姿勢を記憶することによって教示される。なお、エンドエフェクタ及び指示部の姿勢とは、これらの向いている方向に基づいて定められるもので、例えば、これらの向いている方向の三次元的な角度であることができる。指示部４３０を有するリンクに外力が加わることに応答して該指示部は移動する。指示部４３０を有するリンクは更に把持部４１０を有することができ（図２を参照）、該把持部を教示作業者が把持し移動させることで、当該リンクに外力を加えることができる。指示部４３０が移動することに従って教示用アーム４００のリンクのうちの少なくとも１つのリンクは回転又は伸縮する。教示用アーム４００の回転関節及び直動関節も、ロボット１００に関して上述したような角度検出センサ及び長さ検出センサを有することができる。
【００２５】
図２（ａ）および（ｂ）は、教示用アーム４００の例を示した図である。図２（ａ）はシリアルリンク型のアームの例を示し、図２（ｂ）はパラレルリンク型のアームの例を示している。図２において、符号Ｊ１〜Ｊ６はリンクの可能な回転方向を示している。これらアームの例はどちらも６自由度構成を使用しているが、教示用アーム４００は、ロボットの作業用途に応じて、３自由度や４自由度等の他の自由度構成を使用することができ、ロボット１００とは異なる自由度構成を使用することができる。教示作業者は、把持部４１０を把持して操作し、ロボットのエンドエフェクタの作業時の位置と姿勢とを指示部４３０の位置と姿勢とによって指示することができる。なお、これらアームの例において指示部４３０は該アームの先端に位置しているが、指示部４３０は該アームの他の場所に位置してもよい。また、これらアームの例における手首機構は、図２に示すように、該手首機構を構成する関節に関するリンクの可能な回転方向Ｊ４〜Ｊ６が直交するように設計されており、手首機構をこのように設計すると特異姿勢になりにくく一般的に操作性が良い。教示用アーム４００は取り付け治具１２０を介してロボット１００に取り付けることができる。このとき、できるだけ取り付け誤差が小さくなるように位置決めピン等で精度よく取り付けることができるような機構を使用してもよい。教示作業者がスイッチ４２０を押すと、コントローラ２００は該スイッチを押した時の指示部４３０の位置姿勢を記憶することができる。なお、以降の説明では、この実施形態に係るロボット教示装置は図２（ａ）に示すシリアルリンク型のアームを使用するものする。
【００２６】
ここで、図３を参照して、本願発明の一実施形態に係るロボット教示装置を使用したときのロボット１００の動作について説明する。なお、図３で示すロボット１００及び教示用アーム４００は、図１で示すロボット１００及び図２で示す教示用アーム４００を概略的に示したものである。最初、ロボット１００及び教示用アーム４００が図３（ａ）で示す状態にあるとする。次に、教示作業者が把持部４１０を持ち、該把持部を矢印４１１の方向へ移動させ、教示用アーム４００が図３（ｂ）で示す状態になったとする。このとき、従来技術のロボット教示装置において、教示作業者が把持部４１０を矢印４１１の方向へ更に移動させると、ロボット１００は動作しないので、ついには教示用アーム４００は可動限界に達し、把持部４１０を該方向へ移動させることができなくなってしまっていた。なお、教示用アーム４００が可動限界に達することは、該アームの関節のうちの少なくとも1つの関節に関して、リンクが限界に達していることを意味する。より詳細には、当該少なくとも１つの関節が回転関節である場合、当該回転関節に接続された２つのリンクのなす角度は該角度の上限又は下限に達しているか、又は、当該２つのリンクのなす角度は当該２つのリンクが一直線となるときの角度、例えば、１８０度に達していることを意味し、当該関節が直動関節である場合、当該直動関節に接続されたリンクの長さは該長さの上限又は下限に達していることを意味する。従って、従来技術のロボット教示装置において、教示用アーム４００が可動限界に達したときの指示部４３０よりも遠くにある作業点に関する教示を行いたい場合、指示部４３０が該作業点に届くようにロボット１００を動作させるために、教示作業者は教示用アーム４００からプログラミングペンダント３００に持ち替えて該ペンダントを手動で操作する必要があった。
【００２７】
しかし、この実施形態に係るロボット教示装置においては、そのような場合でも教示作業者は教示用アーム４００からプログラミングペンダント３００に持ち替える必要はない。なぜなら、この実施形態に係るロボット教示装置において、ロボット１００は教示用アーム４００が可動限界に達しないように自動的に動作するため、教示作業者は把持部４１０を移動させつづけることができるからである。なお、教示用アーム４００が可動限界に達したときにロボット１００を自動的に動作させてもよく、この場合も教示作業者は把持部４１０を移動させ続けることができる。より詳細に言うと、この実施形態に係るロボット教示装置において、ロボット１００は、教示用アーム４００の可動限界までの余裕（以後、「教示用アームの余裕」とする）が小さくなったとき、例えば教示用アーム４００が図３（ｂ）で示す状態になったときに、該余裕がこれ以上小さくならないように、この実施形態においては大きくなるように、教示用アーム取り付け部１３０を矢印１３１の方向、即ち把持部４１０を移動させた矢印４１１の方向と同じ方向に移動させるように自動的に動作する。教示用アーム取り付け部１３０の移動により、ロボット１００及び教示用アーム４００は、例えば図３（ｃ）で示す状態になる。図３（ｃ）における教示用アームの余裕は図３（ｂ）における教示用アームの余裕よりも大きくなっている。なお、図３（ｃ）は、ロボット１００の自動的な動作が開始された時点で教示作業者が把持部４１０を静止させた場合の例示的な図である。この実施形態に係るロボット教示装置において、教示作業者は、ロボット１００の自動的な動作の開始に関わらず把持部４１０を移動させつづけることができる。なお、教示用アームの余裕が一定に保たれるようにロボット１００を自動的に動作させてもよい。また、教示用アームの余裕がなくなったとき、即ち、教示用アーム４００が可動限界に達したときに、該余裕が大きくなるようにロボット１００を自動的に動作させてもよい。以後、上述したような、ロボット１００の「教示用アームの余裕が小さくならないようにするための動作」のことを、ロボット１００の「可動限界回避動作」とする。
【００２８】
図４は、本願発明の一実施形態に係るコントローラ２００のブロック図である。コントローラ２００は、教示処理手段２１０及び２２０と、自動的な可動限界回避動作に関係する手段２３０〜２５０と、モータ制御手段２６０とを含んでいる。また、コントローラ２００は、ＣＰＵ等の計算装置と、メモリ等の記憶装置と、所望の信号を送受信するための入出力装置とを備えた計算機であることができる。ここで、所望の信号は、上記モータや上記センサ、プログラミングペンダント３００等とのシリアル通信で利用される信号を含むことができる。この計算機は、プログラムを使用することによって上記手段として機能させることができる。より詳細には、記憶装置に記憶された上記プログラムを前記計算装置が実行することにより、入出力装置は信号を受信し、計算装置は受信した信号に基づき値を計算し、記憶装置は計算した値を記憶することができる。入出力装置は、更に、計算した値に基づき信号を送信することができる。
【００２９】
教示作業者が把持部４１０を持って操作する際、指示部４３０の位置及び姿勢を検出するために、ロボット１００の各軸の角度検出センサと教示用アーム４００の各軸の角度検出センサとから、角度検出信号が先端位置姿勢計算手段２１０へ取り込まれる。ロボット１００及び教示用アーム４００の一方又は双方が直動関節を含んでいる場合は、長さ検出信号が更に取り込まれる。先端位置姿勢計算手段２１０は、コントローラ２００の制御周期毎に、取り込んだこれら角度検出信号及び長さ検出信号に基づいてロボット１００及び教示用アーム４００の関節角度及びリンク長さを求め、求めたこれら関節角度及びリンク長さから順運動学演算によって指示部４３０の位置及び姿勢を示すための位置姿勢データを計算し記憶する。この位置姿勢データは、例えば、指示部４３０の位置を示す座標(X, Y, Z)および姿勢を示す姿勢角(α, β, γ)、または位置を示す座標(X, Y, Z)および姿勢を示す３×３の姿勢行列(Ｒ)を含んでいる。教示作業者が記憶用スイッチ４２０を押した時に、計算されたこの位置姿勢データは教示データとして教示位置姿勢記憶手段２２０に送られ、教示位地姿勢記憶手段２２０はこの教示データを記憶する。プログラミングペンダント３００は、記憶された教示データを教示位置姿勢記憶手段２２０から読み込んで表示することが可能である。
【００３０】
次に、本願発明の一実施形態に係るコントローラ２００の特徴である、ロボット１００に可動限界回避動作を自動的に行わせる手法について説明する。
コントローラ２００においては、まず、余裕度計算手段２３０が、ロボット１００に取り付けられた教示用アームの余裕に関係する教示用アームの余裕度を求める。コントローラ２００において、教示用アームの余裕度は０から１の範囲の値をとり、教示用アームの余裕が十分大きい場合は１、該余裕が小さくなるにつれ０に近づき、該余裕がない場合、例えば、教示用アーム４００のある関節においてリンクがこれ以上回転できない状態になった場合、リンクがこれ以上伸縮できない状態になった場合、又は、ある関節においてリンクが伸びきった状態になった場合は０をとるものしている。
【００３１】
次に、ロボット位置変更速度計算手段２４０及びロボット位置変更指令生成手段２５０が、余裕度計算手段２４０が求めた教示用アームの余裕度に基づいて、教示用アームの余裕が小さくならないようにロボット１００の動作を制御する。より詳細には、ロボット位置変更速度計算手段２４０は、余裕度計算手段２３０が計算した余裕度とあらかじめ決められた所望の閾値とを比較する。余裕度が閾値より大きいことは、ロボット１００が静止したままでよいことを示す。余裕度が閾値以下であることは、ロボット１００が可動限界回避動作を行わなければならないことを示す。もし、余裕度がある閾値以下になった場合、ロボット位置変更速度計算手段２４０は、教示用アームの余裕がこれ以上小さくならないように、教示用アーム取り付け部１３０の移動方向と移動速度を計算する。そして、ロボット位置変更速度計算手段２４０によって計算された移動方向及び移動速度に応じて、ロボット位置変更指令生成手段２５０は教示用アーム取り付け部１３０の移動先の位置（以下、「目標位置」とする）を計算して該部分をこの目標位置に移動させるための指令を生成する。その後、モータ制御手段２６０にこの指令が渡され、この指令に基づいて、ロボット１００のモータに入力される信号が生成される。この信号が当該モータへと実際に送られることによりロボット１００が動作して、教示用アーム取り付け部１３０の位置は更新される。
【００３２】
このような手法に従うと、図３に関連して説明したように、教示用アームの余裕が小さくなるとロボット１００は可動限界回避動作を自動的に行うため、教示用アーム４００が可動限界に達することはない。従って、教示作業者は指示部４３０が教示したい作業点に届くまで把持部４１０を移動させつづけることができる。なお、この実施形態において、教示用アーム取り付け部１３０に関して移動方向、移動速度、及び目標位置を計算しているが、教示用アーム４００が可動限界に達しないように、ロボット１００の別の場所に関してこれらを計算することができる。また、上記閾値E0は、教示用アーム４００が可動限界に達したときにロボット１００が自動的に動作するように、例えば０に設定してもよく、この場合も教示作業者は指示部４３０が教示したい作業点に届くまで把持部４１０を移動させつづけることができる。
ここで、余裕度計算手段２３０による教示用アームの余裕度の例示的計算手法を図５から８を参照して説明する。
【００３３】
図５を参照して、教示用アームの余裕度の第１の計算手法を説明する。この計算手法において、教示用アームの余裕度は、ある回転関節に関するリンクの回転に関係した余裕、例えば、該リンクが回転できなくなるまでの余裕を示す回転関節の余裕度を計算することで計算される。回転関節の余裕度は、当該回転関節に接続された２つのリンクのなす現在の角度の関数であることができる。当該余裕度は、ある範囲の数値として、例えば０から１までの値として表すことができ、値が小さいほど余裕がない、即ち、上記現在の角度と当該２つのリンクのなす角度の上限又は下限である角度との差が小さいことを示すことができる。図５（ａ）は教示用アーム４００のリンクのうちのある回転関節ｉ４５０に接続された２つのリンク４５１及び４５２を示している。回転関節４５０の余裕度Es_iは、リンク４５１とリンク４５２とがなす角度θiに基づく、以下の関数であることができる。
【００３４】
【数１】
2011224745.tif 000003
【００３５】
図５（ｂ）にこの関数のグラフを示す。この関数は、上記の下限及び上限の角度を示すパラメータAmin_i及びAmax_i、並びにパラメータa1_i及びa2_iに基づいて定義することができる。ここで、上記パラメータAmin_i及びAmax_iは、回転関節及びリンクの構造上の限界に対応した値であることができるし、そうではなく所望の値であることもできる。この関数において、回転関節４５０の余裕度Es_iは、角度θiが各軸関節角度リミットを超えた場合（Amin_i＞θi又はAmax_i＜θi）は０をとり、該リミット内（Amin_i≦θi≦Amax_i）の場合は角度θiに応じて０から１の値をとることになる。a1_iとa2_iのパラメータは所望の値をあらかじめ設定することができる。これらパラメータa1_i及びa2_iは不感帯を設けるためのものであり、この不感帯が存在することにより、ロボットが常に動きつづけるようなぎくしゃくした動きを防ぐことができる。回転関節４５０の余裕度Es_iを教示用アームの余裕度とすることができる。また、複数の回転関節の余裕度を各回転関節の余裕度の積として定義することができ、この積を教示用アームの余裕度とすることができる。例えば、教示用アーム４００が６つの回転関節からなる場合、関節全体の余裕度Esは以下の式で求めることができる。
【００３６】
Es＝Es_1×Es_2×Es_3×Es_4×Es_5×Es_6
このような関節全体の余裕度Esを教示用アームの余裕度とすることができる。
図６を参照して、教示用アームの余裕度の第２の計算手法を説明する。この計算手法において、教示用アームは直動関節を含むものと仮定しており、教示用アームの余裕度は、ある直動関節に関するリンクの伸縮に関係した余裕、例えば、該リンクが伸縮できなくなるまでの余裕を示す直動関節の余裕度を計算することで計算される。直動関節の余裕度は、当該関節に接続されたリンクのうちの一方のリンクの現在の長さの関数であることができる。当該余裕度は、ある範囲の数値として、例えば０から１までの値として表すことができ、値が小さいほど余裕がない、即ち、上記現在の長さと当該リンクの長さの上限又は下限の長さとの差が小さいことを示すことができる。図６（ａ）は教示用アーム４００のリンクのうちのある直動関節ｋ４６０に接続された２つのリンク４６１及び４６２を示している。直動関節４６０の余裕度Ed_kは、リンク４６２の長さδkに基づく、以下の関数であることができる。
【００３７】
【数２】
2011224745.tif 000004
【００３８】
図６（ｂ）にこの関数のグラフを示す。この関数は、図６（ｂ）で示すように、上記の下限及び上限の長さを示すパラメータBmin_k及びBmax_k、並びにパラメータb1_k及びb2_kに基づいて定義することができる。ここで、上記のパラメータBmin_k及びBmax_kは、直動関節及びリンクの構造上の限界に対応した値であることができるし、そうではなく所望の値であることもできる。図６（ｂ）に示す関数において、直動関節４６０の余裕度Ed_kは、距離δkが各軸関節距離リミットを超えた場合（Bmin_k＞δk又はBmax_k＜δk）は０をとり、該リミット内（Bmin_k≦δk≦Bmax_k）の場合は距離δkに応じて０から１の値をとることになる。b1_kとb2_kのパラメータは所望の値をあらかじめ設定することができる。これらパラメータb1_k及びb2_kは、回転関節の余裕度に関して上述したように、不感帯を設けるためのものである。直動関節４６０の余裕度Ed_kを教示用アームの余裕度とすることができる。また、各直動関節の余裕度の積を教示用アームの余裕度とすることができることは、回転関節の余裕度と同様である。むろん、回転関節の余裕度と直動関節の余裕度との積を教示用アームの余裕度としてもよい。
【００３９】
図７を参照して、教示用アームの余裕度の第３の計算手法を説明する。この計算手法において、教示用アームの余裕度は、ある関節に接続された２つのリンクが伸びきるまでの余裕を示すリンクの余裕度を計算することで計算される。リンクの余裕度は、当該回転関節に接続された２つのリンクのなす現在の角度の関数であることができる。当該余裕度は、ある範囲の数値として、例えば０から１までの値として表すことができ、値が小さいほど余裕がない、即ち、上記現在の角度と当該２つのリンクが一直線となったときの当該２つのリンクのなす角度との差が小さいことを示すことができる。なお、当該２つのリンクが一直線となることは、当該２つのリンクが伸びきったことを意味する。また、「当該２つのリンクが一直線となったときの当該２つのリンクのなす角度」は、この実施形態においては１８０度であるが、当該２つのリンクが伸びきったことを表すために実用上十分であれば、１７９．９度や１８０．１度、場合によっては１７０度や１９０度等、１８０度からずれた角度であってもよい。なお、これら角度が例示にすぎないことは言うまでもない。以下、図２（ａ）に示したシリアルリンク型のアームにおける関節４４０に関するリンクの余裕度を例として、この計算手法を説明する。なお、別の関節に関してリンクの余裕度を計算してもよいことはいうまでもない。図７（ａ）は関節４４０に接続された２つのリンク４４２及び４４３を示している。なお、このアームの関節４４０及び関節４４１は、それぞれ人間の肘の関節及び肩の関節とみなすことができるので、以後、リンク４４２を前腕、リンク４４３を上腕と呼ぶことにする。リンクの余裕度Ewは、前腕４４２と上腕４４３とがなす角度θの関数であることができる。この関数は、所望のパラメータw1に基づいて定義することができる。リンクの余裕度Ewは、以下の数式に従い求めることができる。
【００４０】
【数３】
2011224745.tif 000005
【００４１】
図７（ｂ）にこの関数のグラフを示す。なお、上式の「１８０」は「当該２つのリンクが一直線となったときの当該２つのリンクのなす角度」、即ちこの実施形態においては１８０度を表す値である。繰り返すが、この値は、実用上十分であれば、１８０度からずれた角度を表す値であってもよい。この実施形態においてθ＝１８０であることは、前腕４４２と上腕４４３とが一直線となったこと、即ち前腕４４２と上腕４４３とが伸びきったことを示している。パラーメータw1は、不感帯を設けるためのものである。このリンクの余裕度を、教示用アームの余裕度とすることができる。また、複数の関節に関するリンクの余裕度の積を教示用アームの余裕度とすることができることは、関節の余裕度と同様である。
【００４２】
図８を参照して、教示用アームの余裕度の第４の計算手法を説明する。この計算手法は、上記リンクの余裕度の代替計算手法である。この代替計算手法も、図２（ａ）に示したシリアルリンク型のアームにおける関節４４０に関するリンクの余裕度を例として説明する。図８（ａ）において、点４４４は、上記アームにおける回転方向Ｊ３に関する回転の軸を示し、点４４５は、上記アームにおける回転方向Ｊ４、Ｊ５、及びＪ６に関する回転の軸の交点を示している。点４４６は、点４４４を通り上腕４４３と垂直な直線と、点４４５を通り上腕４４３と平行な直線との交点を示している。ここで、Ｌを点４４４から点４４５までの距離とし、ｈを点４４５から点４４６までの距離とし、ｗを点４４６から点４４４までの距離とすると、
w2＝L2−h2＝0
の時、上腕４４３と前腕４４２とが伸びきった状態となる。従って、リンクの余裕度Ewは、以下の数式に従い求めることができる。
【００４３】
【数４】
2011224745.tif 000006
【００４４】
図８（ｂ）にこの関数のグラフを示す。w2はあらかじめパラメータとして適当な値を設定しておく。このパラメータも不感帯を設けるためのものである。なお、上式のLは教示用アームの設計に基づき求めることができ、h及びwは関節からの角度検出信号に基づき求めることができる。
【００４５】
以上、教示用アームの余裕度の幾つかの例示的計算手法を説明した。しかしながら、教示用アームの余裕度の計算手法は上記計算手法に限られるものではない。ここで示した余裕度を組み合わせて、例えば、上記回転関節の余裕度と上記リンクの余裕度とを乗算することによって教示用アームの余裕度を求めてもよい。この場合、教示用アームの余裕度は
E＝Es×Ew
に従って計算されたEとなる。更に、教示用アームの余裕度は、例えばよく知られている可操作度などの指標を用いて計算するなど、様々な手法を使用して計算することができる。なお、この実施形態においては、教示用アームの余裕度として上述のEを使用するものとする。
【００４６】
次に、この実施形態に係るコントローラ２００におけるロボット位置変更速度計算手段２４０による教示用アーム取り付け部１３０の移動方向と移動速度とを計算する手法をより詳細に説明する。ロボット位置変更速度計算手段２４０は、コントローラ２００の制御周期毎に、まず、余裕度計算手段２３０から教示用アームの余裕度Eを取得し、所望な値である閾値E0と比較する。コントローラ２００おける移動方向と移動速度の計算は、教示用アームの余裕度Eが閾値E0以下である場合にのみ、該制御周期毎に行われる。この実施形態において、移動方向は移動方向単位ベクトルｚ＝(zx, zy, zz)Tを求めることにより計算される。移動方向単位ベクトルｚは、ロボット１００及び教示用アーム４００の角度検出センサから該制御周期毎に取得される角度検出信号に基づいて計算される。先端位置姿勢計算手段２１０で計算された指示部４３０の位置の座標(X, Y, Z)のうち、現在の制御周期に計算された座標と過去の制御周期、例えば現在の制御周期の一制御周期前の制御周期に計算された座標とを該手段から取得し、これらの差ΔＸ＝(Δx, Δy, Δz)Tを計算し、更に、この差ΔＸに基づいて移動方向単位ベクトルｚを計算する。コントローラ１１０において、移動方向単位ベクトルｚは以下の式に従い計算される。
【００４７】
【数５】
2011224745.tif 000007
【００４８】
また、移動速度Ｖ＝(Vx, Vy, Xz)は、移動方向単位ベクトルｚに基づいて計算することができ、その大きさは教示用アームの余裕度Eが小さくなるにつれて大きくなる値であることができる。コントローラ２００において、ロボット位置変更速度計算手段２４０は、移動最大速度VL、比率K、および操作方向単位ベクトルｚに基づいて、以下の式に従って移動速度Ｖを計算する。
【００４９】
Ｖ＝(VL×K)ｚ
上式において、移動最大速度VLはあらかじめ設定した教示時のロボットの動作に関する最大速度のパラメータである。また比率Kは、閾値E0と余裕度Eに基づいてロボット位置変更速度計算手段２４０によって計算されるものであり、教示用アームの余裕度Eが小さくなるにつれて移動速度Ｖの大きさが大きくなるようにするためのパラメータである。この比率Kは、コントローラ２００においては以下の式に従い計算される。
【００５０】
K＝(E0−E)/E0
なお、この数式はE0≧Eのときのみ計算される。
次に、この実施形態に係るコントローラ２００におけるロボット位置変更指令生成手段２５０による教示用アーム取り付け部１３０の目標位置を計算する手法をより詳細に説明する。ロボット位置変更指令生成手段２５０は、コントローラ２００の制御周期毎に、まず、ロボット位置変更速度計算手段２４０によって移動方向と移動速度が計算されたかを判定する。コントローラ２００における目標位置の計算は、移動方向と移動速度が計算されている場合にのみ、該制御周期毎に行われる。この実施形態において目標位置は、該目標位置を示す座標Ｘｒを計算することで計算される。ロボット位置変更指令生成手段２５０は、制御周期毎の教示用アーム取り付け部１３０の位置の座標を記憶する。記憶されるこの座標として、以下で説明する計算された目標位置の座標Ｘｒをそのまま使用することも、図示しない経路でロボット１００の角度検出センサより取得した角度検出信号に基づいて計算された座標を使用することもできる。目標位置の座標Ｘｒは、ロボット位置変更速度計算手段２４０で現在の制御周期に計算された移動速度Ｖと、過去の制御周期、例えば現在の制御周期の一制御周期前の制御周期における教示用アーム取り付け部１３０の位置の座標Ｘ０と、制御周期に関係する時間、例えば一制御周期の時間Tsとに基づいて、以下の式に従って計算される。
【００５１】
Ｘｒ＝Ｘ０＋Ｖ×Ts
この目標位置の座標Ｘｒに教示用アーム取り付け部１３０が移動するように、モータ制御手段２６０がロボット１００の各軸モータを制御し、該ロボットを動作させる。目標位置の座標Ｘｒは、上述したように移動方向と移動速度が計算されている場合にのみ、即ち、余裕度Eが閾値E0以下である場合にのみ求められるわけであるから、教示用アーム取り付け部１３０の移動は、余裕度Eが閾値E0より大きくなったときに自動的に停止することになる。なお、この実施形態において、コントローラ２００に含まれる各手段は上述のようにコントローラ２００の制御周期を基準として動作しているが、別の制御周期を基準として動作してもよく、手段ごとに制御周期の時間や該周期の開始のタイミングが異なっていてもよい。
【００５２】
このような手法に従うと、ロボット１００は、教示作業者が把持部４１０を移動させた方向と同じ方向に適切な速度で教示用アーム取り付け部１３０が移動するように自動的に動作することになる。そのため、教示用アームの余裕がこれ以上小さくならないようにすることができる。従って、ロボット１００は教示用アーム４００が可動限界に達することを回避するように自動的に動作するので、教示作業者は、教示用アーム４００の可動限界を気にせずに、例えばリンクが回転できない状態になったりリンクが伸びきった状態になったりすることを気にせずに、教示作業を継続して行うことができる。その結果、教示作業時間を短縮することができ、該作業者の負担を軽減することが可能となる。なお、教示用アーム４００が可動限界に達したときにロボット１００が自動的に動作するようにした場合も、教示作業者が把持部４１０を移動させた方向と同じ方向に適切な速度で教示用アーム取り付け部１３０が移動することは同様である。
【符号の説明】
【００５３】
１００  ロボット
１１０  ロボット先端リンク
１１１  ロボット先端リンクの回転の中心となる軸の方向
１２０  教示用アーム取り付け治具
１３０  ロボットの教示用アーム取り付け部
１３１  ロボットの教示用アーム取り付け部の移動方向の例
２００  コントローラ
２１０  先端位置姿勢計算手段
２２０  教示位置姿勢記憶手段
２３０  余裕度計算手段
２４０  ロボット位置変更速度計算手段
２５０  ロボット位置変更指令生成手段
２６０  モータ制御手段
３００  プログラミングペンダント
４００  教示用アーム
４１０  教示用アームの把持部
４１１  教示用アームの把持部の移動方向の例
４２０  教示用アームの記憶用スイッチ
４３０  教示用アームの指示部
４４０  肘の関節とみなせる関節
４４１  肩の関節とみなせる関節
４４２  肘の関節とみなせる関節に接続された前腕とみなせるリンク
４４３  肘の関節とみなせる関節に接続された上腕とみなせるリンク
４５０  ある回転関節ｉ
４５１  回転関節ｉに接続されたリンク
４５２  回転関節ｉに接続されたリンク
４６０  ある直動関節ｋ
４６１  直動関節ｋに接続されたリンク
４６２  直動関節ｋに接続されたリンク
【図１】
2011224745.tif 000008
【図２】
2011224745.tif 000009
【図３】
2011224745.tif 000010
【図４】
2011224745.tif 000011
【図５】
2011224745.tif 000012
【図６】
2011224745.tif 000013
【図７】
2011224745.tif 000014
【図８】
2011224745.tif 000015
【図９】
2011224745.tif 000016