(57)【要約】【課題】エンコーダエラーによるロボットアームの停止、保守などの可能性を低減し、作業、生産の効率を低下させることなく、ロボットアームの位置姿勢を安定して正確に制御できるようにする。【解決手段】ロボットアーム（１００）の関節（Ｊ２）に、第１および第２のエンコーダ（２３５、２３６）を配置する。ＣＰＵ３０１は、これらエンコーダの検出結果に基づきロボットアームの関節の動作を制御する。その場合、ＣＰＵ３０１は、第２のエンコーダ（２３６）の検出部に関する読み取りエラーの有無を判定し、その結果、読み取りエラーが有ると判定した場合、第１のエンコーダ（２３５）の検出結果を用いて、関節（Ｊ２）を駆動し、第２のエンコーダの位置情報を再検出する。【選択図】図２
2019098469.tif 000002
【特許請求の範囲】
【請求項１】
関節および前記関節により連結されたリンクを備えたロボットアームと、
前記関節に配置され、パターンが形成された被読取領域を有するスケールと、前記スケールに対して相対的に移動し、該移動した位置において前記被読取領域のパターンを読み取る検出部と、を有し、前記関節の位置情報を検出する第１および第２のエンコーダと、
前記第１および第２のエンコーダの検出結果に基づき前記ロボットアームの関節の動作を制御する制御部と、を備え、
前記制御部は、前記第２のエンコーダの検出部の読み取りエラーが発生した場合、前記第１のエンコーダの検出結果に基づいて前記ロボットアームの前記関節を駆動して前記第２のエンコーダの位置情報を再検出するエンコーダ再検出処理を実行するロボット装置。
【請求項２】
請求項１に記載のロボット装置において、前記制御部は、前記エンコーダ再検出処理において、前記第１のエンコーダの検出結果に基づいて前記ロボットアームの前記関節を駆動して、前記第２のエンコーダの検出部の読み取りエラーが発生せずに前記第２のエンコーダの位置情報を検出できるまで前記第２のエンコーダの位置情報の読み取りを試行する、再検出処理を行うロボット装置。
【請求項３】
請求項１または２に記載のロボット装置において、前記第１のエンコーダが前記関節を駆動する変速機の入力側に配置された入力軸エンコーダであり、前記第２のエンコーダが前記変速機の出力側に配置された出力軸エンコーダであるロボット装置。
【請求項４】
請求項１から３のいずれか１項に記載のロボット装置において、前記第１または第２のエンコーダが、アブソリュートエンコーダの機能と、インクリメントエンコーダの機能と、を備えるロボット装置。
【請求項５】
請求項１から４のいずれか１項に記載のロボット装置において、前記第２のエンコーダが、アブソリュートエンコーダの機能と、インクリメントエンコーダの機能と、を備え、
前記制御部は、前記第２のエンコーダのアブソリュートエンコーダの検出結果に読み取りエラーが有る場合に、前記エンコーダ再検出処理において、前記第１のエンコーダの検出結果と、前記第２のエンコーダのインクリメントエンコーダの検出結果を用いて前記関節を駆動し、前記第２のエンコーダの位置情報を再検出するロボット装置。
【請求項６】
請求項１から５のいずれか１項に記載のロボット装置において、前記制御部は、前記エンコーダ再検出処理において、前記第１のエンコーダの検出結果と、前記ロボットアームの位置姿勢を制御するための教示点情報と、を用いて前記関節を駆動し、前記教示点情報が含む特定の教示点に相当する前記関節の位置において、前記第２のエンコーダの位置情報を再検出するロボット装置。
【請求項７】
請求項１から５のいずれか１項に記載のロボット装置において、前記制御部は、前記エンコーダ再検出処理において、前記第１のエンコーダの検出結果と、前記ロボットアームの位置姿勢を制御するための教示点情報と、を用いて前記関節を駆動し、前記教示点情報に含まれる教示点を結ぶロボット軌道上の前記ロボットアームの特定の位置姿勢に相当する前記関節の位置において、前記第２のエンコーダの位置情報を再検出するロボット装置。
【請求項８】
請求項１から５のいずれか１項に記載のロボット装置において、前記制御部は、前記エンコーダ再検出処理において、前記第１のエンコーダの検出結果と、前記ロボットアームの位置姿勢を制御するための教示点情報と、を用いて前記関節を駆動し、前記ロボットアームが前記教示点情報に含まれる教示点を結ぶロボット軌道に沿って移動している間に前記第２のエンコーダの位置情報を再検出するロボット装置。
【請求項９】
関節および前記関節により連結されたリンクを備えたロボットアームと、
前記関節に配置され、パターンが形成された被読取領域を有するスケールと、前記スケールに対して相対的に移動し、該移動した位置において前記被読取領域のパターンを読み取る検出部と、を有し、前記関節の位置情報を検出する第１および第２のエンコーダと、
前記第１および第２のエンコーダの検出結果に基づき前記ロボットアームの関節の動作を制御する制御部と、を備えたロボット装置の制御方法において、
前記制御部が、前記第２のエンコーダの検出部で読み取りエラーが発生したか否かを判定するエラー判定処理と、
前記エラー判定処理により前記読み取りエラーが発生した場合、前記第１のエンコーダの検出結果に基づいて前記ロボットアームの前記関節を駆動し、前記第２のエンコーダの位置情報を再検出するエンコーダ再検出処理と、を実行するロボット装置の制御方法。
【請求項１０】
請求項９に記載の制御部に、前記各処理を実行させるための制御プログラム。
【請求項１１】
請求項１０に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１２】
請求項１から８のいずれか１項に記載のロボット装置が配置され、前記ロボット装置によって物品を製造する生産システム。
【請求項１３】
請求項１から８のいずれか１項に記載のロボット装置が配置された生産システムによって物品を製造する製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関節にエンコーダを備えたロボット装置、およびロボット装置の制御方法に関する。
【背景技術】
【０００２】
製品（部品）を製造する生産ラインにおいて、多関節のロボットアームを備えたロボット装置が生産装置として用いられることがある。この種のロボットアームは、先端に設けられたエンドエフェクタ、例えば把持装置としてのフィンガーやハンド、その他の工具などのツールによってワークを操作し、工業製品やその部品などの物品を製造する。
【０００３】
この種のロボットアームの躯体は、リンクとリンクを結合する関節を備える。このうち、関節の機構は、例えばＡＣサーボモータやＤＣブラシレスサーボモータ等のサーボモータと、その出力側に設けられた減速機とを備え、２つのリンクの相対位置（角度）を制御する。この減速機は、高出力の駆動トルクを得るため、また、リンクとサーボモータとの間で回転速度（回転数）を変換するために配置される。
【０００４】
ロボット制御装置は、ロボットアームの基準部位（例えばアームの先端のＴＣＰ）の位置、姿勢を制御するために、特定の関節の位置（関節角度）を逆運動学的な計算によって得られた位置（角度）に制御する。この時、関節を駆動する減速機の入力側ないし出力側に配置されたエンコーダが位置（角度）制御に用いられる。この種のエンコーダとしては、減速機の入力側、例えば駆動源のモータの回転軸に直結されたエンコーダ（以下、「入力軸エンコーダ」という）がある。
【０００５】
入力軸エンコーダを用いた制御では、モータに接続した減速機のねじれやガタが検出されないため、ロボットアームの先端の位置誤差が発生する。また、駆動系（伝導系ないし伝達系）には、モータと減速機との間にタイミングベルトなどが使用されることもあり、タイミングベルトに起因するねじれやガタにより、ロボットアームの先端の位置誤差が発生することもある。また、ロボットアームの姿勢やワークの質量が変わることでも、ロボットアーム先端の位置誤差が発生する。
【０００６】
そこで、減速機の出力側に配置したエンコーダ（以下、「出力軸エンコーダ」という）により、例えば関節の実角度に相当する値を検出し、それに基づきロボット制御を行うことにより、ロボットアームの先端位置の制御誤差を低減することができる。
【０００７】
また、減速機の入力側と出力側の双方にエンコーダを設けた構成も知られている（下記の特許文献１）。さらに、減速機の例えば入力軸と出力軸にそれぞれエンコーダを配置する構成では、両者のエンコーダの出力を組み合せて位置検出を行う構成が知られている（下記の特許文献２）。特許文献２の構成では、一方のエンコーダの位置情報が得られない場合、他方のエンコーダの位置情報を用いてエンコーダの絶対位置情報を演算する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５９７２３４６号公報
【特許文献２】特許第５９８０９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ロボットアームの関節に用いられるロータリーエンコーダは、パターンが形成されたスケールと、スケールのパターンから位置を読み取る例えば光学センサを用いた検出ヘッドと、を備え、両者を相対移動させて位置（角度）検出を行う。この種のエンコーダデバイスには、大別してアブソリュート型エンコーダおよびインクリメント（インクリメンタル）型エンコーダなどと呼ばれる製品がある。アブソリュートエンコーダには、例えば検出ヘッドが位相差を持って複数トラックのスケールから読み取った信号から絶対座標（位置）を読み出せるデバイスとして構成されているものがある。また、インクリメントエンコーダの場合は、その検出ヘッドとスケールが相対移動している間、相対座標（位置）に換算可能なパルス信号を出力するようなデバイスとして構成されているものがある。
【００１０】
これらアブソリュート、インクリメント、いずれのエンコーダ方式でも、エンコーダのスケールに傷が形成されたり、ごみが付着したりすると、検出ヘッドにより検出位置を正確に読み取ることができなくなり、読み取りエラーが発生する場合がある。エンコーダデバイスには、このような読み取りエラーを検出すると、エラー信号を発生するように構成されたものがある。
【００１１】
工場の生産ラインに配置されるような、いわゆる工業用のロボットアームでは、上記のようなエンコーダの読み取りエラーでロボットアームを（非常）停止させるとすれば、その間、部品、工業製品の生産を止めることになる。ロボットを停止させた場合、部品の生産を再開するためには、ロボットアームを分解してエンコーダからごみを取り除くか、スケールが損傷している場合にはエンコーダを交換する、あるいはロボットアームを交換する復旧作業が必要になる。
【００１２】
ロボットアームを分解してごみを取り除く場合は、工場内のクリーン度により、新たなごみがエンコーダ内に侵入する可能性があった。また、ロボットアームごと交換する場合は、ロボットアームの取り付け誤差やロボットアームの製造のばらつきがあるため、再教示（ロボットの動作位置の設定）が必要となる可能性があり、復旧時間が余計にかかる。いずれにしても、エンコーダの読み取りエラーが生じたらロボットを停止させると、生産ラインを頻繁に止めて復旧作業を行わなければならず、生産システムの生産効率が低下する問題がある。
【００１３】
そこで、例えば特許文献２のように、第１の（例えば入力軸）エンコーダ、および第２の（例えば出力軸）エンコーダを配置する構成では、一方のエンコーダの出力で他方のエンコーダの出力を補正することが考えられる。しかしながら、上記のように、出力軸エンコーダを搭載する目的はモータに接続した減速機のねじれやガタ等の影響による位置誤差を含めた正確な位置情報を得ることである。従って、例えば入力軸エンコーダの絶対位置情報に基づき関節の位置（角度）を求めようとしても、減速機のねじれやガタによる誤差を免れることができない。そのため、ロボットアームの位置姿勢の制御の誤差が大きくなる可能性がある。
【００１４】
そこで、例えば関節の位置（角度）を実測する出力軸エンコーダの読み取りエラーが発生した場合には、可能な限り速やかに、またロボット動作に影響せず、出力軸エンコーダの出力状態を復旧できるのが望ましい。その場合、入力軸エンコーダの出力のように本来代用すべきではない検出値を用いて出力軸エンコーダの検出値を補正するような処理を行わずに済むのが望ましい。
【００１５】
本発明の課題は、エンコーダエラーによるロボットアームの停止、保守などの可能性を低減し、作業、生産の効率を低下させることなく、ロボットアームの位置姿勢を安定して正確に制御できるようにすることにある。
【課題を解決するための手段】
【００１６】
上記課題を解決するため、本発明においては、関節および前記関節により連結されたリンクを備えたロボットアームと、前記関節に配置され、パターンが形成された被読取領域を有するスケールと、前記スケールに対して相対的に移動し、該移動した位置において前記被読取領域のパターンを読み取る検出部と、を有し、前記関節の位置情報を検出する第１および第２のエンコーダと、前記第１および第２のエンコーダの検出結果に基づき前記ロボットアームの関節の動作を制御する制御部と、を備え、前記制御部は、前記第２のエンコーダの検出部の読み取りエラーが発生した場合、前記第１のエンコーダの検出結果に基づいて前記ロボットアームの前記関節を駆動して前記第２のエンコーダの位置情報を再検出するエンコーダ再検出処理を実行する構成を採用した。
【発明の効果】
【００１７】
上記構成によれば、エンコーダエラーによるロボットアームの停止、保守などの可能性を低減し、作業、生産の効率を低下させることなく、ロボットアームの位置姿勢を安定して正確に制御できる、という優れた効果がある。
【図面の簡単な説明】
【００１８】
【図１】本発明を実施可能なロボット装置を示す斜視図である。
【図２】図１の制御部のブロック図である。
【図３】図１のロボットアームの関節を示す部分断面図である。
【図４】光学式エンコーダの全体構造を示す説明図である。
【図５】光学式エンコーダのセンサ部の構造を示す説明図である。
【図６】光学式エンコーダのスケールの構造を示す説明図である。
【図７】ごみがスケールに付着した場合のごみとスケールの関係を示す説明図である。
【図８】実施形態１に係る制御系のブロック図である。
【図９】実施形態１に係る制御手順を示したフローチャート図である。
【図１０】実施形態１に係るエンコーダ値と先端位置との関係を示した説明図である。
【図１１】実施形態２に係る制御系のブロック図である。
【図１２】実施形態２に係る制御手順を示したフローチャート図である。
【図１３】実施形態３に係る制御系のブロック図である。
【図１４】実施形態３に係る制御手順を示したフローチャート図である。
【図１５】実施形態２に係る教示点と教示軌道を示す説明図である。
【図１６】実施形態４に係る制御系のブロック図である。
【図１７】実施形態４に係る制御手順を示したフローチャート図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００２０】
＜実施形態１＞
（１）ロボット装置の構成の説明
図１は、本発明の実施形態１に係るロボット装置を示す斜視図である。ロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御部としての制御装置３００と、ユーザーの操作によりロボット２００の動作を教示する教示部としてのティーチングペンダント４００と、を備えている。ロボット２００は、多軸の垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられた、エンドエフェクタとしてのロボットハンド２０２と、を備える。
【００２１】
ロボットアーム２０１は、作業台に固定されるベース部２０３と、変位や力を伝達する第１〜第６のリンク２０４〜２０９が、第１〜第６の関節Ｊ１〜Ｊ６で、屈曲または回転可能に連結されている。この例では、ロボットアーム２０１は、屈曲する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、屈曲とは２つのリンクの結合部のある点で折れ曲がること、回転とは２つのリンクの長手方向の回転軸でリンクが相対的に回ることをいい、それぞれを屈曲部、回転部と呼ぶ。
【００２２】
ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、この例では、第１、第４、第６の関節Ｊ１、Ｊ４、Ｊ６が回転部を、また、第２、第３、第５の関節Ｊ２、Ｊ３、Ｊ５が屈曲部を構成している。ロボットハンド２０２は、第６のリンク２０９（先端リンク）に結合され、ワークＷ１（第１のワーク）の組付け作業を行うエンドエフェクタであり、複数のフィンガー２２０を有する。複数のフィンガー２２０を閉動作させることにより、ワークＷ１を把持することができ、複数のフィンガー２２０を開動作させることにより、ワークＷ１を把持解放することができる。このようなロボットハンド２０２による操作により、例えば、ワークＷ１（第１のワーク）をワークＷ２（第２のワーク）に装着するような組立作業を行うことができる。これにより、ワークＷ１、ワークＷ２を含む物品（任意の工業製品、あるいはその部品）を製造することができる。
【００２３】
ロボットアーム２０１の各関節Ｊ１〜Ｊ６には、これら関節を駆動する複数（６つ）の関節駆動部２３０がそれぞれ設けられる。図１では、関節駆動部２３０は、便宜上、関節Ｊ２にのみ破線によって図示し、他の関節Ｊ１、Ｊ３〜Ｊ６については図示を省略している。しかしながら、他の関節Ｊ１、Ｊ３〜Ｊ６にも、同様の構成の関節駆動部２３０が配置される。なお、本実施形態では、関節Ｊ１〜Ｊ６の全てが関節駆動部２３０で構成される場合について説明するが、関節Ｊ１〜Ｊ６のうち少なくとも１つが関節駆動部２３０で駆動されるよう構成されていればよい。
【００２４】
以下、関節Ｊ２の関節駆動部２３０を例にとり、ロボットアーム２０１の各関節駆動部の構成例につき説明する。他の関節Ｊ１、Ｊ３〜Ｊ６の関節駆動部２３０には、サイズや性能が異なる場合もあるが、以下に示すものと同様に構成された関節駆動部２３０が設けられるものとする。
【００２５】
（２）関節Ｊ２における関節駆動部２３０の構成
図３は、ロボットアーム２０１の関節Ｊ２の部分断面を示している。関節駆動部２３０は、電磁モータである回転モータ（以下、単に「モータ」という）２３１と、このモータ２３１の回転軸２３２の回転を減速する減速機２３３（変速機）と、を備える。モータ２３１は、例えばＡＣサーボモータのようなサーボモータから構成することができる。
【００２６】
関節駆動部２３０には、モータ２３１の回転軸２３２ないし減速機２３３の入力軸のうちいずれか一方に入力軸角度検出部を設ける。この例では、モータ２３１の回転軸２３２の回転角度を検出する入力軸角度検出部として、入力軸エンコーダ２３５が設けられている。また、関節駆動部２３０は、減速機２３３の出力軸の回転角度を検出する出力軸角度検出部として、出力軸エンコーダ２３６を備えている。
【００２７】
入力軸エンコーダ２３５は、好ましくはアブソリュート型のロータリーエンコーダから構成される。例えば、入力軸エンコーダ２３５は、１回転の絶対角度エンコーダ、絶対角度エンコーダの回転総数のカウンタ、およびカウンタに電力を供給するバックアップ電池などを備える。このようなバックアップ電池を設けることにより、ロボットアーム２０１への電源の供給がオフになっても、ロボットアーム２０１への電源供給のオン／オフに関係なくカウンタの回転総数値が保持される。このため、例えば、再起動後、電源オフの状態と同じ位置姿勢からロボットアーム２０１の制御を開始することができる。なお、この例では、入力軸エンコーダ２３５は、モータ２３１の後方（図中左側）で回転軸２３２に装着しているが、減速機２３３の入力軸に装着してもよい。
【００２８】
図３の出力軸エンコーダ２３６は、図１のベース部２０３とリンク２０４のように関節を介して連結される２つのリンク間の相対角度を検出するロータリーエンコーダである。関節Ｊ２の場合、出力軸エンコーダ２３６は、リンク２０４とリンク２０５との間の相対角度を検出する。出力軸エンコーダ２３６は、例えばリンク２０４にそのエンコーダスケールを、また、リンク２０５にそのセンサユニットを配置する構成とすることができる。あるいは、リンク２０４、２０５と、出力軸エンコーダ２３６のエンコーダスケール、センサユニットの配置の関係は上記と逆であってもよい。
【００２９】
リンク２０４とリンク２０５とは、クロスローラーベアリング２３７を介して回転自在に結合される。モータ２３１は、保護用のモータカバー２３８で覆われている。モータ２３１とエンコーダ２３５との間には、ブレーキユニット（不図示）を設けることができる。このブレーキユニットは、例えば非給電時に制動がかかるような構成とする。このようなブレーキユニットによって、例えば電源オフ時のロボットアーム２０１の姿勢を保持することができる。
【００３０】
減速機２３３には、小型軽量で減速比の大きい波動歯車減速機を用いることができる。減速機２３３は、モータ２３１の回転軸２３２に結合された、入力軸であるウェブジェネレータ２４１と、リンク２０５に固定された、出力軸であるサーキュラスプライン２４２と、を備えている。なお、サーキュラスプライン２４２は、リンク２０５に直結されているが、リンク２０５に一体に形成されていてもよい。
【００３１】
また、減速機２３３は、ウェブジェネレータ２４１とサーキュラスプライン２４２との間に配置され、リンク２０４に固定されたフレクスプライン２４３を備えている。フレクスプライン２４３は、ウェブジェネレータ２４１の回転に対して減速比Ｎで減速され、サーキュラスプライン２４２に対して相対的に回転する。従って、モータ２３１の回転軸２３２の回転は、減速機２３３で１／Ｎの減速比で減速され、フレクスプライン２４３が固定されたリンク２０４に対してサーキュラスプライン２４２が固定されたリンク２０５を相対的に回転させる。これにより、関節Ｊ２の角度が制御される。
【００３２】
ここで、入力軸エンコーダ２３５は、バックラッシュやねじれ、歪みなどの誤差が生じ得る減速機２３３の前段（入力側）に配置され、その検出値から減速比などを用いて計算した関節Ｊ２の関節角度（位置情報）は、上記誤差の影響を受ける。これに対して、出力軸エンコーダ２３６は、減速機２３３の後段（出力側）に配置されており、減速機２３３のバックラッシュやねじれ、歪みなどが作用した後の、関節Ｊ２の関節角度（位置情報）の実測値を検出できる。このため、出力軸エンコーダ２３６を用いることにより、減速機２３３のバックラッシュやねじれ、歪みなどの影響を受けずに、関節Ｊ２の関節角度（位置情報）を検出し、それに基づき、リンク２０５の位置（角度）を高精度に制御することができる。
【００３３】
（３）制御装置３００の構成
図２は、ロボット装置１００の制御装置３００の構成を示している。同図の制御装置３００は、制御部（演算部）としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１を備えている。また、制御装置３００は、記憶部として、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３０４を備えている。また、制御装置３００は、記録ディスクドライブ３０５および各種のインターフェース３１１〜３１５を備えている。
【００３４】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＯＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５および各種のインターフェース３１１〜３１５が、バス３１６を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納される。ＨＤＤ３０４などを設けない場合には、ＲＯＭ３０２は、ＣＰＵ３０１に後述の制御を実行させるためのプログラム３２０を格納する記憶手段として用いてもよい。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶するために用いられる。
【００３５】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置を構成する。ＨＤＤ３０４は、例えばハードディスクドライブから構成するが、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）などを用いてもよい。また、ＨＤＤ３０４には、ＣＰＵ３０１に後述の制御を実行させるためのプログラム３２０を格納しておくことができる。また、ＨＤＤ３０４にはティーチングペンダント４００でユーザーにより設定された出力軸エンコーダの角度データを含んだ教示位置情報を格納しておくことができる。ＣＰＵ３０１は、ＨＤＤ３０４（あるいはＲＯＭ３０２）に記録（格納）されたプログラム３２０に基づいてロボット制御方法の各工程を実行する。記録ディスクドライブ３０５は、記録ディスク３２１に記録された各種データやプログラム等を読み出すことができる。
【００３６】
なお、後述の制御手順を実現するためのＣＰＵ３０１の制御プログラムは、ＨＤＤ３０４やＲＯＭ３０２（の例えばＥＥＰＲＯＭ領域）のような記憶部に格納しておくこともできる。その場合、後述の制御手順を実現するためのＣＰＵ３０１の制御プログラムは、ネットワークなどを介して、上記の各記憶部に供給し、また新しい（別の）プログラムに更新することもできる。あるいは、後述の制御手順を実現するためのＣＰＵ３０１の制御プログラムは、各種の磁気ディスクや光ディスク、フラッシュメモリなどの記憶手段と、そのためのドライブ装置を経由して、上記の各記憶部に供給し、またその内容を更新することができる。上述の制御手順を実現するためのＣＰＵ３０１の制御プログラムを格納した状態における各種の記憶手段や記憶部は、本発明の制御手順を格納したコンピュータ読み取り可能な記録媒体を構成することになる。
【００３７】
ロボットアーム２０１の教示部を構成するティーチングペンダント４００は、インターフェース３１１に接続されている。このティーチングペンダント４００は、ユーザーの入力操作により、ロボット２００を教示する教示点、即ち各関節Ｊ１〜Ｊ６の目標関節角度（角度指令値）を指定するために用いられる。教示点のデータ（教示データ）は、インターフェース３１１およびバス３１６を通じてＣＰＵ３０１、あるいはＨＤＤ３０４に出力される。ＣＰＵ３０１は、ティーチングペンダント４００またはＨＤＤ３０４から教示データの入力を受け、教示動作中のアーム制御などを行うことができる。また、ＣＰＵ３０１は、ＨＤＤ３０４などに格納された教示済みの教示データの通りに、ロボットアーム２０１の動作を再現させることができる。これにより、ロボットアーム２０１に、例えば物品、部品の製造動作を行わせることができる。
【００３８】
上記の入力軸エンコーダ２３５は、インターフェース３１２に接続され、出力軸エンコーダ２３６は、インターフェース３１３に接続されている。これら第１、第２のエンコーダ（２３５、２３６）からは、例えば検出した角度検出値を示す信号が出力される。エンコーダ（２３５、２３６）がアブソリュートエンコーダ機能を有する場合は、例えば、所定の原点からの絶対角度値データが刻出力される。ただし、第１、第２のエンコーダ（２３５、２３６）がインクリメント（インクリメンタル）エンコーダ機能を有する場合は、例えば、このインクリメント（インクリメンタル）出力は、パルス信号である場合もある。ＣＰＵ３０１は、インターフェース３１２、３１３およびバス３１６を介して入力軸、出力軸のエンコーダ（２３５、２３６）の出力パルス信号の入力を受けつける。
【００３９】
表示部を構成する表示装置（モニタ）５００は、インターフェース３１４に接続されており、ＣＰＵ３０１の制御に基づき、文字や画像の表現によって種々のデータ表示を行う。
【００４０】
インターフェース３１５には、モータ駆動部７０１が接続されている。ＣＰＵ３０１は、教示データに基づき、モータ２３１の回転軸２３２の回転角度の制御量を示す駆動指令データを所定時間間隔でバス３１６およびインターフェース３１５を介してモータ駆動部７０１に出力する。
【００４１】
モータ駆動部７０１は、ＣＰＵ３０１から入力を受けた駆動指令に基づき、例えば、モータ２３１への電流の出力量を演算し、モータ２３１へ電流を供給し、関節Ｊ１〜Ｊ６の関節角度制御を行う。そして、モータ２３１は、モータ駆動部７０１から電力供給を受けて駆動トルクを発生し、減速機２３３の入力軸であるウェブジェネレータ２４１にトルクを伝達する。減速機２３３において、出力軸であるサーキュラスプライン２４２は、ウェブジェネレータ２４１の回転に対して１／Ｎの回転数で回転する。これにより、リンク２０５がリンク２０４に対して相対的に回転する。ＣＰＵ３０１は、モータ駆動部７０１を介して、関節Ｊ１〜Ｊ６の関節角度が目標関節角度となるように、モータ２３１による関節Ｊ１〜Ｊ６の駆動を制御する。
【００４２】
なお、バス３１６には、不図示のインターフェースを介して、書き換え可能な不揮発性メモリや、外付けＨＤＤ等の外部記憶装置、といった他の周辺機器（不図示）が接続されていてもよい。
【００４３】
（４）出力軸エンコーダ２３６の動作
出力軸エンコーダ２３６は関節Ｊ１〜Ｊ６にそれぞれ配置される。図４に出力軸エンコーダ２３６の構造の例を示す。スケールトラック６０５には円周方向に反射膜のあるスケールの部位と、反射膜の無い部位が交互に並んだゼブラパターンが形成されており、センサユニット６０４でこれを読み取ると、センサユニット６０４にはパルス信号が得られる。例えば、センサユニット６０４が出力したパルス信号の数をカウントすることにより現在の角度（位置）情報を得ることができる。なお、ここでは、出力軸エンコーダ２３６に言及してエンコーダの構成を説明しているが、入力軸エンコーダ２３５にも、同等の構成を適用することができる。
【００４４】
図５は、出力軸エンコーダ２３６（入力軸エンコーダ２３５も同様）に用いられるエンコーダデバイスの一般的な構成を示している。図５の左上に示したエンコーダは、スケール６０２と、光源６０１および受光素子６０３を一体的に構成したセンサユニット６０４を備える。このうち、センサユニット６０４は、例えば発光ダイオードなどの光源６０１と、フォトダイオードアレイを用いた受光素子６０３で構成される。スケール６０２は、例えば、円形のガラス基板上に反射膜を成膜することによって構成される。ただし、スケール６０２の基板はガラスに限るものではなく、樹脂などから構成されていてもよい。光源６０１の発光ダイオードは例えば定電流回路を介して駆動することにより、安定した光出力を得ることができる。
【００４５】
図５において、光源６０１の照射する光束はスケール６０２へ向かい、反射膜が形成されている位置では反射し、反射膜が形成されていない位置では反射が起きない。スケール６０２上に反射膜がある場合、光源６０１からの光束はスケール６０２で反射し、その反射光が受光素子６０３で受光される。受光素子６０３の出力を増幅し、適当なＡＤ変換処理を行うことにより、反射膜がある場合はＨｉ、反射膜が無い場合はＬｏとなるようにデジタルパルス信号へ変換することができる。
【００４６】
また、エンコーダデバイスでは、図５の右下に示したような信号処理部６５１を含むものがある。この例では、信号処理部６５１は、検出処理部６５２、および位置信号出力部６５４を備えている。信号処理部６５１は、受光素子６０３から得られたデジタルパルス信号から、アブソリュート、ないしインクリメント（インクリメンタル）形式の出力仕様に適合した位置（角度）信号を生成する。生成された位置（角度）信号は、位置信号出力部６５４を介して図２の制御系、例えばインターフェース３１３に送信される。
【００４７】
また、エンコーダデバイスでは、製品によっては、信号処理部６５１にエラー信号出力部６５５を備えているものがある。エラー信号出力部６５５は、受光素子６０３の出力信号を監視し、後述するようなエンコーダエラーを検出することができる。エラー信号出力部６５５がエンコーダエラーを検出した場合には所定信号形式のエラー信号を図２の制御系、例えばインターフェース３１３に送信する。
【００４８】
なお、エンコーダデバイスがエラー信号のための信号インターフェース（信号線）を有している場合は、図２の制御系ではそのインターフェース（信号線）を監視していれば良い。あるいは、信号処理部６５１がそのような信号インターフェース（信号線）を有しておらず、エンコーダエラーの際、位置信号出力部６５４から絶対（アブソリュート）位置（角度）値として、無効ないし未定義を示す特別な値を出力する仕様も考えられる。その場合には、図２の制御系では、位置信号出力部６５４からエンコーダエラーに相当する所定値が出力されているか否かを監視していればよい。
【００４９】
図２の制御系は、エンコーダデバイスがエンコーダエラー発生時に上記のようなエラー信号を発生できる場合には、このエラー信号を用いてエンコーダエラー判定（検出）を行う。例えばエンコーダ読み取りエラー判定部７０６（図８）は、エラー信号出力部６５５がエラー信号を発生しているか否かを判定するように実装すればよい。もし、エンコーダデバイスのエラー信号出力部６５５を利用できない場合には、エンコーダ読み取りエラー判定部７０６（図８）は、例えば位置信号出力部６５４の出力を監視することにより、後述するような態様のエンコーダエラーを検出する。
【００５０】
エンコーダには絶対座標が得られるアブソリュートエンコーダと、相対座標が得られるインクリメントエンコーダがある。ロボットシステムの関節で出力軸エンコーダに用いられるアブソリュートエンコーダでは、連続してアブソリュート情報を取得し続ける構成、アブソリュート情報を取得後、インクリメントエンコーダ動作する構成などがある。前者の構成では、エンコーダスケールに記録されているアブソリュート情報（絶対位置情報）を連続して取得することができる。一方、後者の構成では、エンコーダスケールに記録されているアブソリュート情報（絶対位置情報）を取得後、インクリメントエンコーダの出力をカウントし、その差分をアブソリュート情報に加算して、現在位置（角度）を取得することになる。
【００５１】
ここで、図６を参照して、例えば出力軸エンコーダ２３６に搭載されるアブソリュートトラックとインクリメントトラックの構成の一例につき説明する。この例では、スケールは、図示のように周波数の高い情報を含むピッチの細かいスケールと、周波数の低い情報を含むピッチの広いスケールを組み合わせた２トラック構成となっている。
【００５２】
図６でエンコーダのスケール６０２上には、センサユニット６０４によって一度に読み込まれるアブソリュートスケール（スケール読み取り範囲：被読取領域）６０７が配置されている。アブソリュートスケール６０７はインクリメントスケール６０６を含んでいる。図６の上下の２トラックには位相差があり、６０７のトラックと６１０のトラックの位相差から絶対（アブソリュート）位置（角度）情報を計算できる。或いは、センサユニット６０４側で異なる読み取り位相で２つのトラックの読み取りを行っても良い。また、周波数の低いピッチで配置されたインクリメントスケール６０６は単に１、０（反射、無反射）の交互の信号配置となっている。
【００５３】
図６のような構成において、同心円上にアブソリュートエンコーダのスケール情報とインクリメントエンコーダのスケール情報がある場合、図７に示すようにアブソリュートエンコーダの情報の方がごみや傷による影響（エラー）を受けやすい。図７のように、アブソリュートスケール６０７上にごみ（Ａ）６０８（あるいは傷）がある場合、周波数の低いスケールは２周期あるうちの１周期がごみにより遮られるため、周波数を確定しにくい。一方、インクリメントスケールとして利用される短周期のスケール群に重なるごみ（Ｂ）６０９（あるいは傷）の場合は、センサユニット６０４は、１つのアブソリュートスケール（スケール読み取り範囲）６０７から５周期以上のスケールを読み取れる。従って、図示したごみ（Ｂ）６０９（あるいは傷）のような位置関係では、センサユニット６０４の受光素子６０３の出力から同期を取ってインクリメント（インクリメンタル）データを取得するのは困難ではない。以上のように、アブソリュートスケール動作より、インクリメントスケール動作の方がごみ（あるいは傷）などの外乱に強い傾向がある。本実施形態では、このような特性を利用した制御を行う。
【００５４】
（５）制御系の詳細
図８は、本実施形態の関節駆動系と、そのエンコーダ廻りの制御系の構成の一例を示している。図８の各制御ブロックは、例えば、ＣＰＵ３０１（図２）側の制御系として実装することができる。
【００５５】
図８において、モータ２３１は上記の如く例えばＡＣサーボモータであって、Ｕ、Ｖ、Ｗの各巻き線（詳細不図示）に、モータ駆動部７０１（図２）からＰＷＭ信号を印加することにより駆動される。図８の例では、ベルト７１３（とプーリ）を介してモータ２３１の回転力を減速機２３３に伝達するようになっている。このベルト７１３（とプーリ）の減速比は例えば１：１とする。ベルト７１３（とプーリ）は、チェーン（とギア）などに置換してもよいが、ベルト７１３（あるいはチェーン）は必ずしも必要なく、図３に示したようにモータ２３１と減速機２３３の入力軸が直結されていてもよいのはいうまでもない。
【００５６】
減速機２３３はモータ２３１の回転力を減速するギア列を有し、例えばそのギア比が５０：１であれば、モータ２３１が５０回転すると、減速機２３３の出力側に配置されている関節駆動部２３０が１回転することになる。前述のように関節駆動部２３０には出力軸エンコーダ２３６が配置され、関節駆動部２３０の角度を読み取ることができる。
【００５７】
入力軸エンコーダ２３５はモータ２３１の回転角度を検出するよう配置され、５０：１の減速機の場合、関節駆動部２３０が１回転するとき５０回転する必要がある。そこで、入力軸エンコーダ２３５は５０回転以上の多回転角度を検出する事ができるアブソリュートエンコーダが用いられる。
【００５８】
モータ制御部７０２はＰＩＤ制御を行うフィードバック制御部で、近年は主にマイコンによりソフトウエア制御を行う。出力軸エンコーダ制御部７０４は出力軸エンコーダ２３６を制御する。出力軸エンコーダ制御部７０４は、図６のように出力軸エンコーダ２３６のスケールに配置された、疎、密配置のトラックの組合せから得られる信号絶対角度を算出し、出力軸エンコーダ２３６をアブソリュートエンコーダとして動作させる。また、入力軸エンコーダ制御部７０３は入力軸エンコーダ２３５を制御するためのもので、入力軸エンコーダ２３５の出力に基づき、エンコーダの絶対位置の記憶、エラー判定を行う。
【００５９】
なお、図８では、上述（あるいは下記）の各エンコーダのための制御部や判定部（７０３、７０４、７０６、７０７）は、エンコーダ（２３５、２３６）とは別のブロックで、あたかもＣＰＵ３０１（図２）側の制御系を構成するかのように図示してある。しかしながら、図８の図示は便宜上のものに過ぎない。例えば、これら制御部や判定部（７０３、７０４、７０６、７０７）は、エンコーダ（２３５、２３６）を構成するエンコーダデバイスの一部として実装されていても構わない。
【００６０】
さらに、図８の教示点記憶部７０９はロボットアーム２０１の先端が移動する教示点（群）を記憶している。教示点記憶部７０９は、例えばロボットアーム２０１の教示データを格納するＨＤＤ３０４などによって構成される。
【００６１】
教示軌道生成部７０８は教示点記憶部７０９に格納された教示点（群）に基づきロボットアーム２０１の各関節Ｊ１〜Ｊ６の関節角度（関節位置）情報を算出し、軌道制御部７０５に出力する。軌道制御部７０５は、入力軸エンコーダ制御部７０３および出力軸エンコーダ制御部７０４の出力から求めた位置（角度）情報と、教示軌道生成部７０８が出力する軌道情報に基づきモータ制御部７０２の回転量を決定する制御情報を生成する。
【００６２】
エンコーダデバイスが上記のようなエラー信号出力部６５５（図５）を備えている場合には、エンコーダ読み取りエラー判定部７０６は、エラー信号出力部６５５が出力軸エンコーダ制御部７０４に出力するエラー信号によりエラー判定を行う。エラー信号出力部６５５を利用できない構成においては、エンコーダ読み取りエラー判定部７０６は、例えば出力軸エンコーダ２３６が出力軸エンコーダ制御部７０４に対して出力する絶対位置情報の値を判別することなどにより、エラー判定を行う。以下では、出力軸エンコーダ２３６がエラー信号を出力できる構成を例に説明する。
【００６３】
出力軸エンコーダ制御部７０４は、出力軸エンコーダ２３６のエラー信号線の状態に応じて、出力軸エンコーダ２３６の受光素子６０３受光レベルが十分でない場合や、目的の周波数成分を得られない場合等にエラー情報を出力する。エンコーダ読み取りエラー判定部７０６は、このエラー情報に基づきエラー判定を行う。
【００６４】
本実施形態では、エンコーダ読み取りエラー判定部７０６が出力軸エンコーダ２３６（第２のエンコーダ）でエンコーダエラー（読み取りエラー）が発生していることを検出すると、出力軸エンコーダ再取得制御部７０７を動作させる。
【００６５】
この出力軸エンコーダ再取得制御部７０７は、軌道制御部７０５へロボットアーム２０１を（微小量）動作させて、出力軸エンコーダ値の「再取得」を行う。この再取得は、例えば、出力軸エンコーダ２３６（第２のエンコーダ）でエンコーダ（読み取り）エラーが発生せずに当該のエンコーダから位置情報を検出できるまで位置情報の読み取りを試行する、エンコーダ再検出処理である。
【００６６】
軌道制御部７０５は、エンコーダ（読み取り）エラーが発生していない通常動作では、教示点記憶部７０９の情報に基づき、教示軌道生成部７０８の軌道に沿ってロボットアームの軌道を制御する。
【００６７】
一方、エンコーダ読み取りエラー判定部７０６でエンコーダエラーが検出（エラー判定処理）されると、軌道制御部７０５は、上記の出力軸エンコーダ値の「再取得」のためのロボットアーム２０１駆動を行う。その場合、軌道制御部７０５は、「第１のエンコーダ」の検出結果に基づいて関節駆動部２３０を駆動して、出力軸エンコーダ２３６（第２のエンコーダ）の位置情報を再検出させる。
【００６８】
例えば、この出力軸エンコーダ（アブソリュート）値の「再取得」では、通常動作時の動作と同様に、入力軸エンコーダ２３５は、減速機２３３の入力側の制御量を決定するために用いられる。このため、入力軸エンコーダ２３５は、出力軸エンコーダ値の「再取得」に用いられる第１のエンコーダ（の１つ）と考えてよい。
【００６９】
また、この出力軸エンコーダ値の「再取得」において、「第２のエンコーダ」の位置情報を再検出するために軌道制御部７０５が利用できる他のエンコーダとしては、例えば、出力軸エンコーダ２３６のインクリメンタル出力が考えられる。例えば、出力軸エンコーダ２３６に図６、図７で説明したようなトラック構成のスケールを有し、アブソリュート出力、およびインクリメンタル出力が可能なエンコーダデバイスを用いる。その場合、アブソリュート、およびインクリメンタル出力が可能であり、その場合、出力軸エンコーダ２３６内に、アブソリュートエンコーダ（第２のエンコーダ）と、インクリメントエンコーダ（第１のエンコーダ）が含まれている、と考えてもよい。そして、これらのうち、関節の実角度（位置）制御に利用するアブソリュートエンコーダ（第２のエンコーダ）でエラーが発生した時は、インクリメントエンコーダ（第１のエンコーダ）を利用して第２のエンコーダ値の「再取得」を行う。この場合、下記の制御（例えば図９）では、出力軸エンコーダ２３６のインクリメントエンコーダ（第１のエンコーダ）値は、第２のエンコーダ値の「再取得」が行えたか否かの確認に利用されている。
【００７０】
上記のようにインクリメントエンコーダ（第１のエンコーダ）は、スケールのごみや傷などの外乱に強い特性がある。従って、出力軸エンコーダ２３６のアブソリュートエンコーダ（第２のエンコーダ）でエラーが発生していても、インクリメントエンコーダ（第１のエンコーダ）によって減速機２３３の出力軸の側の位置（角度）情報を精度よく取得できる。これにより、信頼性の高い第２のエンコーダ値の「再取得」が可能となる。この場合には、例えば、出力軸エンコーダ２３６のインクリメントスケール６０６（図６）のカウント値をモニタしながらアブソリュートトラックの１トラック（６０７）分を移動させ、再度、エンコーダ読み取りエラー判定部７０６で読み取りエラー判定を行う。この第２のエンコーダ値の「再取得」は、例えばエンコーダ読み取りエラー判定部７０６がエンコーダエラーを検出しなくなるまで試行する。
【００７１】
ここで、図２の制御系におけるロボット制御手順のうち、特にエンコーダ制御に係わる部分を図９に示す。図示の手順は、例えばＣＰＵ３０１（制御部）の制御プログラムとして、ＲＯＭ３０２やＨＤＤ３０４に格納しておくことができる。
【００７２】
図９において、ロボットの電源を投入（ＯＮ）すると、制御装置３００（図２）はロボットアーム２０１内の各軸の入力軸エンコーダ２３５をイニシャライズし、アブソリュートデータを取得する（ステップＳ８００）。続いて、出力軸エンコーダ２３６をイニシャライズし、アブソリュートデータを取得する（ステップＳ８０１）。
【００７３】
そして、出力軸エンコーダ２３６のアブソリュート出力にエンコーダエラーが生じているか否かが判定される（ステップＳ８０２）。このエンコーダエラー判定は、例えば上記のエンコーダ読み取りエラー判定部７０６によって行う。
【００７４】
読み取りエラーが無い場合は、出力軸エンコーダ原点セットを行う（ステップＳ８０６）。ここでは、出力軸エンコーダ２３６はアブソリュートデータを原点として記憶し、その位置からインクリメント動作を行い絶対座標をカウントする。この絶対座標のカウントは通常のインクリメントまたはデクリメントカウンタで行えばよい。原点セット（Ｓ８０６）後は、入力軸エンコーダ２３５から回転角を読み込み（ステップＳ８０７）、教示点データに基づきロボットアーム２０１に通常動作を行わせる（ステップＳ８０８）。そして、例えば教示位置精度の必要なロボットアーム２０１動作を行う工程では出力軸エンコーダ２３６から回転角を読み込み（ステップＳ８０９）を行い、それに基づきロボットアーム２０１を動作させる。このような動作（ステップＳ８０７〜Ｓ８０９のループ）を繰り返すことによって、ロボットアーム２０１を用いて物品の精密組み立てを行うことができる。
【００７５】
ところで、出力軸エンコーダ２３６に含まれるインクリメントエンコーダに関しても、素子不良等により受光素子６０３の出力が低下し、出力軸エンコーダ２３６がエラー信号を出力する場合もある。この場合を考慮して、図９ではステップＳ８０７〜Ｓ８０９のループの途中にステップＳ８１６を配置してある。このステップＳ８１６は、出力軸エンコーダ２３６のインクリメント値読み込みエラーを検出するものである。このステップＳ８１６がインクリメント値読み込みエラーを検出すると、出力軸エンコーダ２３６のイニシャライズを行うステップＳ８０１に復帰する。ステップＳ８１６がインクリメント値読み込みエラーを検出していなければ、ステップＳ８０７〜Ｓ８０９のループが続行される。
【００７６】
一方、ステップＳ８０２で、出力軸エンコーダ２３６のアブソリュート出力にエンコーダエラーが検出されている場合は、ステップＳ８０３に移行する。ステップＳ８０３では、入力軸エンコーダ２３５から回転角を読み込み、読み取った入力軸回転角に基づき関節軸を（微小量）回転させる（ステップＳ８０４）。そして、出力軸エンコーダ２３６の出力するインクリメントデータが、例えば、出力軸エンコーダのアブソリュートデータの１トラック分（図６、図７の６０７の１つ分）、に相当する量、変動した（動いた）か否かを確認する（ステップＳ８０５）。なお、上述のように出力軸エンコーダ２３６のインクリメントスケール６０６（図６）は、アブソリュートスケール６０７よりスケール上のごみや傷などの外乱に強い。そのため、ステップＳ８０５の判定は、出力軸エンコーダ２３６の出力するインクリメントデータを用いることにより、正確かつ、確実に実行できる。
【００７７】
このステップＳ８０５の判定が肯定された場合は、ステップＳ８０１に復帰し、再度、出力軸エンコーダ２３６のイニシャライズとアブソリュートデータを取得する。その後、ステップＳ８０２において、上述の通りエンコーダエラー判定を行い、エンコーダエラーが検出されなくなるとステップＳ８０６以降の通常動作が行われる。ステップＳ８０２でエンコーダエラーが検出されている間は、上記のステップＳ８０３〜Ｓ８０５の再検出動作が繰り返される。
【００７８】
以上のようにして、本実施形態では、出力軸エンコーダ２３６（第２のエンコーダ）のアブソリュートデータ出力にエンコーダ（読み取り）エラーが生じた場合、絶対位置（角度）の再検出（再取得）が可能である。一般に、アブソリュートスケールはどの位置で取得しても、絶対位置（角度）情報を取得できる。例えば、絶対座標を取得した原点位置（Ｓ８０６）からインクリメントスケール６０６によりカウントすれば、関節の出力軸上のどの位置（角度）の絶対座標（角度）も取得できる。従って、ある関節位置（角度）で出力軸エンコーダ２３６のアブソリュートデータ取得に失敗した時、入力軸エンコーダ２３５を用いながら関節を動作させると、別の関節位置（角度）で出力軸エンコーダのアブソリュートデータを再取得できる。そして、アブソリュートデータを再取得後は、例えばインクリメント動作によって、引き続き関節位置（角度）の絶対座標（角度）を出力軸エンコーダ２３６から取得できる。このようにして、本実施形態によれば、関節のエンコーダ（読み取り）でロボットアーム２０１、従って生産ライン（生産システム）を停止させる必要がなくなる。これにより、ロボットアーム２０１が配置された生産ラインの装置の稼働率が上がり、結果として物品（工業製品、ないしその部品の）生産効率を大きく向上させることができる。
【００７９】
図１０は、ロボットアーム２０１の関節Ｊ３から先端の（ワークＷ２を把持している）ロボットハンド２０２の中心部までの寸法の一例を示しており、この例ではその寸法は１００ｍｍ程度である。この場合、一般的な減速機２３３の減速比を考慮すると、出力軸エンコーダ再取得におけるアブソリュートデータ１トラック（６０７）の１つ分に相当するロボットアーム２０１の先端の移動量２０１ａは、図１０に示すように約１．５ｍｍ程度に過ぎない。ロボットアーム２０１の用途にもよるが、この程度のオーダでエンコーダ再取得のためにアームを１ないし数回程度、動作させても、本来のロボット軌道からの誤差範囲内に収まっている場合が多い。そのため、たとえ本来のロボット軌道を無視してエンコーダ再取得を行っても、ロボット動作には殆ど影響を与えずに済む。また、例えば、ロボットアーム２０１のホームポジション（初期の位置姿勢）などの設定によって周囲の障害物などと干渉しないような位置姿勢を選ぶことにより、再取得のために１０〜数１０トラック（６０７：図６、図７）分の移動は可能になると考えられる。
【００８０】
また、再取得のために当該の関節を動作させる上限回数（リミット）を、例えば上記のアブソリュートデータ１トラック（６０７：図６、図７）の数などを単位として１０〜数１０トラック分を設定しておいてもよい。このような再取得のために当該の関節を動作させる上限回数（リミット）を決めておけば、その上限回数、再取得のための関節動作を行っても、絶対位置（角度）を得られない場合にロボットアームを非常停止させるようなエラー処理を行える。
【００８１】
（６）実施形態１の効果
以上に示したように、本実施形態１によれば、ロボット関節の出力軸エンコーダ２３６（第２のエンコーダ）のスケール上にごみ、塵埃や傷が存在し、エンコーダ（読み取り）エラーが生じた場合でも、絶対位置（角度）の再検出（再取得）が可能である。本実施形態では、この絶対位置（角度）の再検出（再取得）は、入力軸エンコーダ２３５（第１のエンコーダ）で減速機２３３の入力を調節しつつロボットアーム２０１の関節を（微小量）動作させることにより行う。その際、関節が動いたか否かの確認（図９ステップＳ８０５）は、出力軸エンコーダ２３６のインクリメント出力を利用して行う。このような制御によって、本実施形態によれば、スケール上にごみ、塵埃や傷などの無い位置まで関節が動作した時点で、出力軸エンコーダ２３６の絶対位置情報を再取得することができる。本実施形態によれば、出力軸エンコーダ２３６（第２のエンコーダ）でエンコーダ（読み取り）エラーが生じたからといって、ロボットアーム２０１をエラー停止させる必要がない。このため、出力軸エンコーダ２３６の絶対位置情報を再取得することができ、物品などの製造の工程を遅滞させることがない。
【００８２】
また、本実施形態では、入力軸エンコーダ２３５（第１のエンコーダ）の値は、出力軸エンコーダ２３６の絶対位置情報を再取得するまでの間、減速機２３３の入力量の制御に利用される。しかしながら、従来技術におけるように、入力軸エンコーダ２３５（第１のエンコーダ）の出力値をロボット関節の実角度（の演算値）として代用することがない。従って、本実施形態によれば、エンコーダ（読み取り）エラーが生じても、絶対位置（角度）の再検出（再取得）を繰り返し行うことにより、自動的に出力軸エンコーダ２３６の絶対座標を取得できる状態にロボットアームを復帰させることができる。このため、ロボットアーム２０１による物品の製造工程の殆どの期間、減速機のねじれやガタの影響の受けない、減速機２３３の出力側の絶対位置（角度）を利用して、精度の高い関節位置（角度）情報を利用できる。従って、ロボットアーム２０１の高精度かつ確実な動作が可能となり、物品の精密な製造動作をロボットアーム２０１に行わせることができる。
【００８３】
＜実施形態２＞
上記実施形態１では、出力軸エンコーダ２３６でエンコーダエラーが生じた場合、関節位置（角度）の絶対（アブソリュート）値の再取得を行うために、ロボット、特に当該の関節を動作させる基本制御を示した。実施形態１では、エンコーダ再取得のためにアブソリュートトラック（図６：６０７）の１ないし数個分の関節動作によって、スケール上のごみや傷を回避し、スケール上の絶対座標を再取得できる可能性があることを示した。そのエンコーダ再取得のためのロボット動作の態様の細部については、いくつかの異なる構成が考えられる。本実施形態２以降では、エンコーダ再取得のためのロボット動作の態様の細部について、種々の構成例を示す。
【００８４】
実施形態１ではエンコーダ読み取りエラー判定部７０６でエラーとなった場合、ロボットアーム２０１を、出力軸エンコーダ２３６のインクリメントスケール６０６から得られるインクリメンタル出力を監視しつつ、関節を駆動し、再取得を行った。実施形態１の再取得動作では、入力軸エンコーダ２３５の情報に基づき、絶対位置（角度）情報を得られるまでモータ２３１を駆動するものとした。
【００８５】
ところが、実際にロボットアーム２０１を工場に設置した場合、その周囲には治具、他のロボットや、建屋の躯体などの障害物が存在するのが普通である。そこで、絶対位置（角度）情報を得られること、のみを条件として、ランダムにロボットアーム２０１を駆動すると、上記のような障害物とアームが干渉（衝突、接触）する可能性がある。
【００８６】
一方、実際の設置環境でロボットアーム２０１を稼働させる時のロボット軌道を決定する教示点は、周辺の障害物を回避できる位置に選ばれる。即ち教示データに含まれる教示点ないしその近傍の位置では、ほぼ確実に障害物と干渉しない、と考えてよい。
【００８７】
そこで、本実施形態２では、ロボットアーム２０１の教示データ（教示情報）に含まれる教示点の位置で、出力軸エンコーダ２３６の絶対座標を取得する構成につき説明する。本実施形態２以降では、実施形態１の構成を基本とし、その構成と異なる部分につき説明する。実施形態１で説明済みの部材や制御については、同一の参照符号を用いて、その詳細な説明は省略するものとする。
【００８８】
図１１は、実施形態１の図８と同様の形式で、本実施形態の制御系を機能ブロック図として示している。図１１に示すように、本実施形態２では、教示軌道生成部７０８の出力が出力軸エンコーダ再取得制御部７０７に入力される。また、エンコーダ読み取りエラー判定部７０６の判定出力は、出力軸エンコーダ再取得制御部７０７の入力に接続されている。エンコーダ読み取りエラー判定部７０６が読み取りエラーを検出した時は、出力軸エンコーダ再取得制御部７０７は、教示軌道生成部７０８の教示点情報に基づき、アームの基準部位を例えば直近の教示点位置まで移動させる動作を行い、その位置で停止させる。即ち、本実施形態の再取得動作では、本来のロボット軌道上の次の教示点位置までの移動、を利用して、出力軸エンコーダ２３６のセンサユニット６０４がアブソリュートスケールのごみや傷のない位置を読み取れるようにする。
【００８９】
エラー検出に基づき、本実施形態の再取得動作を行うため、教示点位置でアームを停止させる時の動作は、通常の教示点位置での停止と同じである。即ち、軌道制御部７０５はモータ制御部７０２に対しモータ停止指令を送り、ロボットアーム２０１を一旦停止させる。例えば、この時、アブソリュートデータ取得を試行（イニシャライズ：下記の図１２のＳ８０１）し、エンコーダ読み取りエラー判定部７０６の判定状態を調べる。そして、エラー判定が生じていなければ（Ｓ８０２〜Ｓ８０６）、出力軸エンコーダ制御部７０４が出力軸エンコーダ２３６の原点設定（Ｓ８０６）を行う。以後、出力軸エンコーダ２３６のモードを、例えばアブソリュートスケール６０７を読み込むアブソリュートモードからインクリメントスケール６０６を読み込むインクリメンタルモードに変更する指令を発生する。
【００９０】
上記の本実施形態の制御の流れを図１２のフローチャートに示す。図１２の表示の様式は、図９と同様であり、同一の処理ステップには、図９と同一のステップ番号を付してある。図１２において、図９と異なっているのは、ステップＳ８０２でエンコーダ読み取りエラー判定部７０６が読み取りエラーを検出した後の分岐ステップＳ８０３〜Ｓ８１０〜Ｓ８１１の制御のみで、他の部分は図９と同一である。
【００９１】
読み取りエラー判定（ステップＳ８０２）でエラーとなった場合は、図９の場合と同様に、入力軸エンコーダ２３５からエンコーダ値を読み取る（ステップＳ８０３）。続くステップＳ８１０では、教示軌道生成部７０８の教示点情報に基づき、ロボットアーム２０１の基準部位を次の教示点へ移動させる動作を行う。ステップＳ８０３で読み込んだ入力軸エンコーダ２３５のエンコーダ出力は、ロボットアーム２０１の基準部位を教示点位置へ移動させるためのモータ２３１の駆動量を決定するのに用いられる。所定の駆動量、モータ２３１が駆動されると、ステップＳ８１１でロボットアーム２０１の基準部位が当該の教示点で停止する。その後、制御は図９の場合と同様にステップＳ８０１に移行する。
【００９２】
ステップＳ８０１では、再度アブソリュートデータの取得を行い、ステップＳ８０２に移行する。もし、ステップＳ８０２で、再度読み取りエラー判定が生じた場合は、ステップＳ８０３〜Ｓ８１０〜Ｓ８１１と進み、次の教示点へ向かってロボットアーム２０１を動作させる。なお、絶対位置（角度）の再検出（再取得）のための移動に教示点データを用いる場合は、エンコーダエラーの生じている関節が動かない場合も含まれる。その場合は、当該の関節が駆動されて再検出（再取得）が成功するまで、上記の制御が繰り返される。以上の動作を繰り返し、エラーがなくなれば、図９の場合と同様にステップＳ８０６に進み、出力軸エンコーダ２３６を原点セットして通常動作に移行する。
【００９３】
エンコーダエラーが無くなった場合（Ｓ８０２〜Ｓ８０６）は、出力軸エンコーダ２３６は、原点セット（Ｓ８０６）でアブソリュートデータを原点として記憶し、その位置からインクリメント動作を行い絶対座標をカウントするよう動作させる。このカウントは通常のインクリメントまたはデクリメントカウンタの双方向いずれでも可能である。以後、ステップＳ８０７、Ｓ８０８、Ｓ８０９とＳ８１６の制御は図９で説明したものと同様である。
【００９４】
以上のように、本実施形態２によれば、ロボット関節の出力軸エンコーダ２３６（第２のエンコーダ）のスケール上にごみ、塵埃や傷が存在し、エンコーダ（読み取り）エラーが生じた場合でも、絶対位置（角度）の再検出（再取得）が可能である。その場合、本実施形態２では、絶対位置（角度）の再検出（再取得）ではともかく特定の関節を微小量動かしてみる、という実施形態１の動作とは異なり、例えば物品製造のためのロボット動作を記述した教示点データを用いてアームを駆動する。このように絶対位置（角度）の再検出（再取得）では、ロボットアーム２０１を教示軌道に沿って動かすことにより、当該の関節を動作させ、教示点で出力軸エンコーダ２３６の絶対位置の再取得を行う。従って、ロボットアーム２０１が工場に設置され、周囲に障害物がある状態においても、アームが干渉する問題を生じずに出力軸エンコーダ２３６の絶対座標を再取得することができる。結果として、減速機のねじれやガタの影響の無い、精度の高い位置情報を取得し、それに基づきロボットアーム２０１を動作させることにより、例えば高精度な物品の製造が可能となる。
【００９５】
＜実施形態３＞
実施形態２ではエンコーダ読み取りエラー判定部７０６でエンコーダ読み取りエラーを生じた場合、ロボットアーム２０１を、教示軌道に沿って次の教示点へ移動し、教示点位置で出力軸エンコーダ２３６の再読み込みを試行する。本実施形態３では、ある教示点と次（直近）の教示点の間の教示軌道上で、出力軸エンコーダ２３６の再読み込みを試行する例を示す。教示点間でロボットアーム２０１を動作させる軌道は、何らかの補間動作によって生成される場合が多いが、ランダムに関節を動作させて再取得を行う場合より、アーム周囲の障害物との干渉を生じる可能性は大きく低下する。
【００９６】
図１３に本実施形態の関節廻りの制御系の構成を示す。図１３の図示の様式は、図１１と同等であり、図１３と図１１の相違は、教示軌道生成部７０８が教示点間の補間などを行って生成した教示軌道を記憶（バッファ）する教示軌道記憶部７１０が配置されている点である。出力軸エンコーダ再取得制御部７０７は、教示軌道記憶部７１０を参照でき、絶対位置（角度）の再取得を行う場合の移動目標位置として、軌道上の一点を選ぶことができる。
【００９７】
図１４は、図１２や図９と同様の形式で、本実施形態３の制御の流れを示している。また、図１５は、横軸に時間（ｍＳ）、縦軸に角度（ラジアン）を取り、減速機２３３の入力軸の関節角度を示している。図１５において、比較的大きな丸印（梨子地）で示したものは、教示点記憶部７０９が記憶する教示点８５０である。図１５中には３つの教示点８５０に相当する当該関節の位置（関節角度）が図示されている。また、小さな丸印（黒丸）は、何らかの補間処理によって教示軌道生成部７０８が生成した軌道上の中間軌道点８５１（補間点）である。
【００９８】
図１５で示すように、教示点８５０と教示点８５０の間に中間軌道点８５１が生成されている場合、モータ制御部７０２は、中間軌道点８５１の角度を目標にモータ駆動部７０１でサーボ制御を行って、アームを当該の軌道に沿って動作させる。一般的なロボット制御では、この中間軌道点８５１は例えば４ｍＳ程度の時間間隔で、速度を考慮し軌道が急峻に変化しないよう減速機２３３の入力軸角度（目標値）が計算される場合が多い。
【００９９】
図１３の教示軌道記憶部７１０には、例えば図１５の教示点８５０と中間軌道点８５１を記憶させておく。この教示軌道記憶部７１０に格納した教示点８５０と中間軌道点８５１の情報に基づき、出力軸エンコーダ２３６の絶対座標を再取得することができる。
【０１００】
図１４は、本実施形態３において、この教示軌道記憶部７１０に格納した教示点８５０と中間軌道点８５１の情報に基づき、出力軸エンコーダ２３６の絶対座標を再取得する場合の制御手順を示している。
【０１０１】
図１４は、図１２（実施形態２）と同等の表示形式によるフローチャートであり、図１２との相違は、ステップＳ８１０、Ｓ８１１の部分のみである。
【０１０２】
読み取りエラー判定（ステップＳ８０２）でエラーとなった場合は、図９、図１２の場合と同様に、入力軸エンコーダ２３５からエンコーダ値を読み取る（ステップＳ８０３）。続くステップＳ８１０では、ロボット軌道上をロボットアーム２０１が動くよう、関節を駆動する。その場合、移動先の目標位置は実施形態２のように次の教示点のみが選ばれるのではなく、教示軌道記憶部７１０に格納されている教示点８５０と中間軌道点８５１のいずれかが順次選ばれる。
【０１０３】
即ち、読み取りエラー判定（ステップＳ８０２）でエラーとなった場合、入力軸エンコーダ２３５から回転角を読み込み（ステップＳ８０３）、その値を用いて教示軌道記憶部７１０に格納する教示点または中間軌道点８５１に移動（ステップＳ８１０）する。ステップＳ８０３で読み込んだ入力軸エンコーダ２３５のエンコーダ出力はロボットアーム２０１の基準部位を教示軌道記憶部７１０に格納されている教示点８５０または中間軌道点８５１へ移動させるためのモータ２３１の駆動量を決定するのに用いられる。所定の駆動量、モータ２３１が駆動されると、ステップＳ８１１でロボットアーム２０１の基準部位が当該の教示点８５０または中間軌道点８５１の位置で停止する（ステップＳ８１２）。その後、制御は図９、図１２の場合と同様にステップＳ８０１に移行する。これ以外の動作は、図１２で説明したものと同等である。
【０１０４】
以上のように、本実施形態３によれば、ロボット関節の出力軸エンコーダ２３６（第２のエンコーダ）のスケール上にごみ、塵埃や傷が存在し、エンコーダ（読み取り）エラーが生じた場合でも、絶対位置（角度）の再検出（再取得）が可能である。その場合、本実施形態３では、例えば物品製造のためのロボット動作を記述した教示点から生成された軌道上の点（具体的には教示点８５０、中間軌道点８５１）を目標位置としてロボットアーム２０１の基準部位を動作させる。このように絶対位置（角度）の再検出（再取得）では、ロボットアーム２０１を教示軌道に沿って動かすことにより、当該の関節を動作させ、教示点で出力軸エンコーダ２３６の絶対位置の再取得を行う。従って、ロボットアーム２０１が工場に設置され、周囲に障害物がある状態においても、アームが干渉する問題を生じずに出力軸エンコーダ２３６の絶対座標を再取得することができる。結果として、減速機のねじれやガタの影響の無い、精度の高い位置情報を取得し、それに基づきロボットアーム２０１を動作させることにより、例えば高精度な物品の製造が可能となる。
【０１０５】
＜実施形態４＞
上記実施形態１〜３では、エンコーダ読み取りエラーを生じた場合の絶対位置（角度）の再検出（再取得）では、ロボットアーム２０１を移動させた後、停止させてから出力軸エンコーダ２３６の再読み込みを試行する。特に実施形態２、３では、教示点や中間軌道点を目標位置としてロボットアーム２０１を移動させた後、停止させてから出力軸エンコーダ２３６の再読み込みを試行している。しかしながら、（例えば物品製造などのための本来の）ロボット軌道でロボットアーム２０１を移動させている間、出力軸エンコーダ２３６の絶対位置（角度）の再検出（再取得）の試行を（例えば繰り返し）行うことも考えられる。このような制御を行うことにより、例えば物品製造などのために意図された本来の停止位置とは異なる位置で、出力軸エンコーダ２３６の絶対位置（角度）の再検出（再取得）のためにロボットを停止させなくて済む。これにより、物品製造などのためのロボット動作を遅滞なく行え、効率よく物品製造などの本来の動作を効率よく行いつつ、エンコーダエラーに対処できる。
【０１０６】
ここで、上記実施形態３では、教示点８５０や中間軌道点８５１でロボットアーム２０１を停止させて、出力軸エンコーダ２３６の絶対位置（角度）の再検出（再取得）を行っている。例えば、図１５に示したように、多くの場合、アームを中間軌道点８５１に移動させる時間間隔は一定、例えば４ｍＳ程度の間隔になるよう、中間軌道点８５１が生成される。また、当然ながら、軌道を生成した時点で教示点８５０から求めた中間軌道点８５１の関節角度（回転角）も既知、あるいはそれを（再）計算によって求めることができる。即ち、教示軌道生成部７０８の軌道生成によると、ロボットアーム２０１が動いている状態でも、関節位置と時間（時刻）は判明しており、これを利用して出力軸エンコーダ２３６の絶対位置（角度）の再検出（再取得）が可能である。
【０１０７】
本実施形態４の制御系は、図１６のように構成されている。図１６の表示の形式は、図８、図１１、図１３などと同等である。以下、実施形態２、３の場合と同様に、図１６については、既に説明したこれら図８、図１１、図１３などと異なる構成につき説明する。
【０１０８】
図１６の構成では、教示軌道生成部７０８の出力は軌道制御部７０５と、出力軸エンコーダ再取得制御部７０７によって利用される。軌道制御部７０５では教示軌道に沿ってロボットアーム２０１を動作させる。また、出力軸エンコーダ再取得制御部７０７では、出力軸エンコーダ２３６の絶対位置情報と教示軌道生成部７０８からの中間軌道点８５１の時間情報を同時に取得し、教示軌道・出力軸エンコーダ値記憶部７１１に出力する。
【０１０９】
教示軌道・出力軸エンコーダ値記憶部７１１では、記憶されたデータは出力軸エンコーダ位置演算部７１２で中間軌道点８５１から当該関節の回転速度を算出する。即ち、２つの中間軌道点８５１における減速機２３３の入力軸の回転角情報と、中間軌道点間の時間（例えば４ｍＳ）から、回転速度を算出する。これにより中間軌道点８５１毎の関節の回転速度を計算できる。出力軸エンコーダ２３６の原点を取得してから出力軸エンコーダ再取得制御部７０７が絶対値データの再取得を止めるまでの時間を用いることにより、出力軸エンコーダ２３６がどれだけ回転したかが判る。従って、出力軸エンコーダ２３６から取得した原点情報に、この時間を加算してその値を原点情報として出力軸エンコーダ制御部７０４へ送ることにより、停止して原点を設定した時と同じように出力軸エンコーダ２３６の原点設定が可能となる
【０１１０】
次に、図１７を参照して、本実施形態の制御手順につき説明する。図１７は、図９、図１２、図１４などに対応するフローチャートである。図１７においても、図９、図１２、図１４などと同一の処理ステップについては同一のステップ番号を用いている。
【０１１１】
図１７の制御手順でも、ステップＳ８００、Ｓ８０１、Ｓ８０２の処理は、図９、図１２、図１４などと同一である。また、ステップＳ８０２でエンコーダエラーが生じた場合の入力軸エンコーダ２３５の読み込み（Ｓ８０３）も同様で、続くステップＳ８１０では入力軸エンコーダ２３５の出力を用いて、ロボットアーム２０１を教示軌道上で動作させる。ただし、このステップＳ８１０では、例えば次の教示点８５０か、中間軌道点８５１までの移動を指令して、ステップＳ８０１に復帰する。
【０１１２】
図Ｓ１７で図９、図１２、図１４などと異なるのは、ステップＳ８０２でエンコーダエラーが検出されていない場合のステップＳ８０６、Ｓ８０７、Ｓ８０８、Ｓ８０９、Ｓ８１６に先立って、ステップＳ８１３、Ｓ８１４、Ｓ８１５が挿入されている点である。
【０１１３】
即ち、ステップＳ８０２で出力軸エンコーダ２３６の読み取りエラー検出されていない場合は、ステップＳ８１３に移行する。ステップＳ８１３では、出力軸エンコーダ２３６のアブソリュートデータと、軌道データ、例えば中間軌道点８５１を教示軌道・出力軸エンコーダ値記憶部７１１に記憶させる。
【０１１４】
次にステップＳ８１４において、教示軌道・出力軸エンコーダ値記憶部７１１に記憶させた２つのデータに基づき、出力軸エンコーダ位置演算部７１２が、前回の中間軌道点８５１との間の時間（例えば４ｍＳ）を用いて、中間軌道点８５１間の回転速度を算出する。
【０１１５】
続いて、ステップＳ８１５において、ステップＳ８０１で取得済みのアブソリュートデータに、ステップＳ８１４で出力軸エンコーダ位置演算部７１２が演算した回転速度により算出した角度差分を加算して原点位置を取得する。この原点位置を用いて、ステップＳ８０６では、出力軸エンコーダ２３６の原点設定を行う。
【０１１６】
ステップＳ８０７、Ｓ８０８、Ｓ８０９、およびＳ８１６では、ステップＳ８０６の出力軸エンコーダ２３６の原点設定に基づき、図９、図１２、図１４（実施形態１〜３）と同様に、ロボットアーム２０１を通常動作させる。
【０１１７】
以上のように、本実施形態４においても、出力軸エンコーダ２３６（第２のエンコーダ）のスケール上にごみ、塵埃や傷が存在し、エンコーダ（読み取り）エラーが生じた場合でも、絶対位置（角度）の再検出（再取得）が可能である。その場合、本実施形態４では、エンコーダ（読み取り）エラーが生じた場合でも、次の教示点または中間軌道点を目標に本来のロボット軌道でアームを動作させ続けることができる。そして、ステップＳ８０１、Ｓ８０２において、読み取りエラーが検出されなくなった場合に、関節の（角）速度に基づき、原点位置を演算する（Ｓ８１３〜Ｓ８１５）。さらに、この原点位置を用いて、通常のアブソリュート動作で出力軸エンコーダ２３６（第２のエンコーダ）を動作させ続けることができる。即ち、本実施形態によれば、教示軌道に沿ってロボットアームを動かし続けながら、出力軸エンコーダ２３６の絶対位置の再取得を行うことができる。そのため、出力軸エンコーダ２３６にエンコーダエラーが生じた場合でも、絶対位置の再取得を行いながら、本来の物品製造などのためのロボット動作を遅滞なく進行させることができる。そのため、物品の製造動作を極めて効率よく実行することができる。その場合、出力軸エンコーダの絶対座標に基づき、精度の高いロボットアーム制御が可能であり、周囲の障害物との干渉を生じることなく、高品質な物品を効率よく製造することができる。
【０１１８】
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１９】
Ｊ１〜Ｊ６…関節、Ｗ１、Ｗ２…ワーク、２０１…ロボットアーム、２０４〜２０９…リンク、２３０…関節駆動部、２３１…モータ、２３２…回転軸、２３３…減速機、２３５…入力軸エンコーダ、２３６…出力軸エンコーダ、３００…制御装置、３０１…ＣＰＵ（制御部）、３０２…ＲＯＭ、３０３…ＲＡＭ、３０４…ＨＤＤ、４００…ティーチングペンダント、６０１…光源、６０２…スケール、６０３…受光素子、６０４…センサユニット（検出部）、６０５…スケールトラック、６０６…インクリメントスケール、６０７…アブソリュートスケール（スケール読み取り範囲）、６０８、６０９…ごみ、６１０…アブソリュートスケール（位相差あり）、７０１…モータ駆動部、７０２…モータ制御部、７０３…入力軸エンコーダ制御部、７０４…出力軸エンコーダ制御部、７０５…軌道制御部、７０６…エンコーダ読み取りエラー判定部、７０７…出力軸エンコーダ再取得制御部、７０８…教示軌道生成部、７０９…教示点記憶部、７１０…教示軌道記憶部、７１１…教示軌道・出力軸エンコーダ値記憶部、７１２…出力軸エンコーダ位置演算部、８５０…教示点、８５１…中間軌道点。
【図１】
2019098469.tif 000003
【図２】
2019098469.tif 000004
【図３】
2019098469.tif 000005
【図４】
2019098469.tif 000006
【図５】
2019098469.tif 000007
【図６】
2019098469.tif 000008
【図７】
2019098469.tif 000009
【図８】
2019098469.tif 000010
【図９】
2019098469.tif 000011
【図１０】
2019098469.tif 000012
【図１１】
2019098469.tif 000013
【図１２】
2019098469.tif 000014
【図１３】
2019098469.tif 000015
【図１４】
2019098469.tif 000016
【図１５】
2019098469.tif 000017
【図１６】
2019098469.tif 000018
【図１７】
2019098469.tif 000019