(57)【特許請求の範囲】
【請求項１】
複数のリンクを関節で結合して成るロボットアームを備え、前記関節は、減速機を介して前記関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダと、を有するロボット装置の制御方法であって、
前記入力側エンコーダにより角度を検出する第１検出工程と、
前記出力側エンコーダにより角度を検出する第２検出工程と、
制御装置によって、前記第１検出工程の検出結果に基づき関節の角度を制御するセミクローズ制御、または、前記第２検出工程の検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択して前記関節を制御する制御工程と、を備え、
前記制御工程は、
前記制御装置が、前記関節を前記セミクローズ制御によって制御して前記ロボットアームを動作させるテスト運転を複数回実行させるテスト運転工程と、
前記制御装置が、前記複数回のテスト運転における前記出力側エンコーダの出力を用いて、特定点における前記ロボットアームの先端位置を評価し、その評価結果に基づき前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択する選択工程と、
前記制御装置が、前記選択工程で選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームを動作させる実行工程と、を含むことを特徴とするロボット装置の制御方法。
【請求項２】
前記制御工程は、ロボットアームの先端の位置の偏りまたはバラつきに関する評価結果に基づき、セミクローズ制御またはフルクローズ制御のいずれを用いるかを選択することを特徴とする請求項１に記載のロボット装置の制御方法。
【請求項３】
前記ロボットアームは複数の関節を備えており、前記制御工程による選択が前記関節毎に行われることを特徴とする請求項１または２に記載のロボット装置の制御方法。
【請求項４】
前記制御装置は、前記実行工程で前記関節の制御に前記セミクローズ制御を用いる場合、前記複数回のテスト運転における出力側エンコーダの出力を用いて、前記特定点における前記ロボットアームの先端位置の偏りを計算し、この偏りを補正する補正値を作用させた駆動量を用いて前記関節をセミクローズ制御することを特徴とする請求項１に記載のロボット装置の制御方法。
【請求項５】
前記制御装置は、前記選択工程で、複数のテスト運転における出力側エンコーダの出力を用いて計算した前記特定点における前記ロボットアームの先端位置のバラつきに基づき、前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択することを特徴とする請求項１に記載のロボット装置の制御方法。
【請求項６】
前記制御装置は、前記選択工程で、複数のテスト運転における前記関節の出力側エンコーダの出力を用いて計算した前記関節の関節角度のバラつきを前記特定点における前記ロボットアームの先端位置のバラつきに換算し、当該のバラつきがユーザ要求精度を満足する場合は前記関節の制御に前記セミクローズ制御を用いるよう選択し、当該のバラつきがユーザ要求精度を満足しない場合は前記関節の制御に前記フルクローズ制御を用いるよう選択することを特徴とする請求項５に記載のロボット装置の制御方法。
【請求項７】
前記制御装置は、前記選択工程で、前記特定点における前記ロボットアームの先端位置のバラつきを計算する場合、前記ロボットアームを動作させる空間における異なる方向に関するバラつきを計算し、各方向に関して計算されたバラつきに関してそれぞれ異なるユーザ要求精度を用いることを特徴とする請求項５に記載のロボット装置の制御方法。
【請求項８】
前記ロボットアームが複数の前記関節を有し、前記制御装置は、前記選択工程で、前記複数回のテスト運転における各関節の出力側エンコーダの出力を用いて計算した各関節の関節角度のバラつきを前記特定点における前記ロボットアームの先端位置のバラつきに換算し、前記特定点におけるユーザ要求精度に応じて特定の関節の制御に前記セミクローズ制御ではなく前記フルクローズ制御を選択する場合は、前記先端位置のバラつきに対する影響度の大きい関節から順次フルクローズ制御を選択することにより、各関節ごとに前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択することを特徴とする請求項５に記載のロボット装置の制御方法。
【請求項９】
前記特定点が、前記ロボットアームの先端位置を移動させる目標の位置決め点であることを特徴とする請求項１ないし８のいずれか１項に記載のロボット装置の制御方法。
【請求項１０】
前記特定点が、前記ロボットアームの先端位置を移動させる目標の位置決め点に至る軌道上の中間点であることを特徴とする請求項１ないし９のいずれか１項に記載のロボット装置の制御方法。
【請求項１１】
複数のリンクを関節で結合して成るロボットアームを備え、前記関節は、減速機を介して前記関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダと、を有するロボット装置の制御方法であって、
前記入力側エンコーダにより角度を検出する第１検出工程と、
前記出力側エンコーダにより角度を検出する第２検出工程と、
制御装置が、前記ロボットアームに実行させる作業内容に応じて前記関節の制御に前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御または前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択する選択工程と、
前記制御装置が、前記選択工程で選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームに特定の動作を実行させる実行工程と、を含み、
前記制御装置は、前記選択工程で、前記ロボットアームのエンドエフェクタで操作させる対象物に応じて、前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択することを特徴とするロボット装置の制御方法。
【請求項１２】
前記ロボットアームは複数の関節を備えており、前記選択工程による選択は前記関節毎に行われることを特徴とする請求項１１に記載のロボット装置の制御方法。
【請求項１３】
前記制御装置は、前記選択工程で前記対象物が前記ロボットアームに不規則な外力を加える対象物である場合にフルクローズ制御を選択することを特徴とする請求項１１に記載のロボット装置の制御方法。
【請求項１４】
前記制御装置は、前記選択工程で前記対象物として同一形状で材質が異なる複数の対象物が混在する場合にフルクローズ制御を選択することを特徴とする請求項１１に記載のロボット装置の制御方法。
【請求項１５】
前記制御装置は、前記選択工程で前記対象物が前記エンドエフェクタで操作することによりその重心位置が変化する対象物である場合にフルクローズ制御を選択することを特徴とする請求項１１に記載のロボット装置の制御方法。
【請求項１６】
前記制御装置は、前記選択工程で、前記関節の関節角度の目標値が前記関節を構成する機構が有するガタまたはヒステリシス領域にある場合にフルクローズ制御を選択することを特徴とする請求項１１ないし１５のいずれか１項に記載のロボット装置の制御方法。
【請求項１７】
前記制御装置は、前記選択工程でフルクローズ制御を選択し、かつロボットアームの先端位置を目標の位置決め点まで移動させるその途中の軌道では精度を必要としない場合には、前記実行工程において、前記途中の軌道では前記関節の制御に前記セミクローズ制御を選択し、ロボットアームの先端位置が目標の位置決め点に到達する手前でセミクローズ制御からフルクローズ制御へ切り換えることを特徴とする請求項１１ないし１６のいずれか１項に記載のロボット装置の制御方法。
【請求項１８】
請求項１から１７のいずれか１項に記載の制御方法を、前記制御装置が読み込むことで実行可能にさせることを特徴とするロボット装置の制御プログラム。
【請求項１９】
請求項１８に記載のロボット装置の制御プログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２０】
減速機を介して関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダとを備えた関節により、複数のリンクを結合して成るロボットアームを備えたロボット装置であって、
前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御、または、前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択して前記関節を制御する制御装置を備え、
前記制御装置は、
前記関節を前記セミクローズ制御によって制御して前記ロボットアームを動作させるテスト運転を複数回実行させ、
前記複数回のテスト運転における前記出力側エンコーダの出力を用いて、特定点における前記ロボットアームの先端位置を評価し、その評価結果に基づき前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択し、
選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームを動作させる、ことを特徴とするロボット装置。
【請求項２１】
減速機を介して関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダとを備えた関節により、複数のリンクを結合して成るロボットアームを備えたロボット装置であって、
前記ロボットアームに実行させる作業内容に応じて前記関節の制御に前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御または前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択し、選択した前記セミクローズ制御または前記フルクローズ制御を用いて前記関節を動作させ前記ロボットアームに特定の動作を実行させる制御装置を有し、
前記制御装置は、前記ロボットアームのエンドエフェクタで操作させる対象物に応じて、前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択する、ことを特徴とするロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ロボットアームの関節を制御する制御方式として、セミクローズ制御またはフルクローズ制御を選択するロボット装置の制御方法、およびロボット装置に関するものである。
【背景技術】
【０００２】
製品を製造する生産ラインにおいて、多関節のロボットアームと、ロボットアームの先端に設けられたエンドエフェクタとを有するロボットが用いられている。ロボットアームの関節機構は、ＡＣサーボモータやＤＣブラシレスサーボモータ等のサーボモータと、高出力のトルクを得るためにサーボモータの出力側に設けられた減速機とを有し、リンク等の構造部材に接続されて構成されている。そして、減速機の入力側のモータの回転軸に直結されたロータリーエンコーダ（以下、「エンコーダ」という）で角度を検出し、検出結果に基づいて、ロボットアームの先端（ロボットの手先）の位置制御を行っている。この減速機の入力側のエンコーダでは、減速機のねじれやガタが検出されないため、ロボットアームの先端では位置誤差を生じる可能性がある。また、ロボットアームの姿勢やワーク質量が変わることでもロボットアーム先端の位置誤差となる。また、駆動系にはタイミングベルトや波動歯車減速機がよく使用されるが、この種の駆動系にはねじれやガタが存在し、ロボットアーム先端の位置誤差の一因となっている。
【０００３】
また、上記のロボットアーム先端の位置誤差を小さくできる構成として、減速機の出力軸にエンコーダを設けた構成が知られている。また、減速機の入力軸と出力軸の双方にエンコーダを備えたロボットも提案されており、出力軸のエンコーダ情報を使用する高精度モードと、使用しない高速モードとを備える構成が提案されている（例えば下記の特許文献１）。また、仕上げ加工と荒加工をする数値制御装置において、仕上げ加工時にはフルクローズ制御を行い、荒加工時にはセミクローズ制御を行う。このように要求精度によって、セミクローズ制御とフルクローズ制御を切り替える構成が提案されている（例えば下記の特許文献２）。
【０００４】
本明細書では、特許文献１の高精度モードと特許文献２のフルクローズ制御は技術的に同等とみなし、両方を含めフルクローズ制御と呼ぶものとする。また、特許文献１の高速モードと特許文献２のセミクローズ制御は技術的に同等とみなし、両方を含めセミクローズ制御と呼ぶものとする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１７６９１３号公報
【特許文献２】特開昭６２−１８４５０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の特許文献１、２などに示されたフルクローズ制御は、制御ループ中に減速機等の機構が存在するため、その影響でサーボ系が発振しやすくなってサーボゲインを小さくとる必要があり、動作速度が低下する傾向がある。一方、セミクローズ制御は、制御ループに減速機等の機構が少なく、サーボ系の発振が少ない。このため、サーボゲインを大きくとることができるため、高速な動作が可能な場合が多い。以上より、一般に同じ機構を制御する場合、精度はセミクローズ制御よりもフルクローズ制御がよい場合が多く、また、動作速度はフルクローズ制御よりもセミクローズ制御の方が速い場合が多い。
【０００７】
また、ロボットアームで作業する場合、複数の工程動作が必要であり、ユーザ要求精度を満足できる範囲であれば、なるべく多くの工程動作をセミクローズ制御した方がロボットアームの作業時間を短縮できる可能性が大きい。また、ロボットアームは複数の関節で構成されており、ユーザ要求精度を満足できる範囲であれば、なるべく多くの関節をセミクローズ制御した方がロボットアームの動作時間を短縮できる可能性が大きい。
【０００８】
本発明の課題は、ユーザ要求精度を満足する範囲でフルクローズ制御が必要な工程動作や関節を特定し、必要な場合のみフルクローズ制御を行い、セミクローズ制御の割合を多くすることによって、ロボット装置の作業時間を短縮することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明においては、複数のリンクを関節で結合して成るロボットアームを備え、前記関節は、減速機を介して前記関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダと、を有するロボット装置の制御方法であって、前記入力側エンコーダにより角度を検出する第１検出工程と、前記出力側エンコーダにより角度を検出する第２検出工程と、制御装置によって、前記第１検出工程の検出結果に基づき関節の角度を制御するセミクローズ制御、または、前記第２検出工程の検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択して前記関節を制御する制御工程と、を備え、前記制御工程は、前記制御装置が、前記関節を前記セミクローズ制御によって制御して前記ロボットアームを動作させるテスト運転を複数回実行させるテスト運転工程と、前記制御装置が、前記複数回のテスト運転における前記出力側エンコーダの出力を用いて、特定点における前記ロボットアームの先端位置を評価し、その評価結果に基づき前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択する選択工程と、前記制御装置が、前記選択工程で選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームを動作させる実行工程と、を含む構成を採用した。
【００１０】
あるいは、複数のリンクを関節で結合して成るロボットアームを備え、前記関節は、減速機を介して前記関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダと、を有するロボット装置の制御方法であって、前記入力側エンコーダにより角度を検出する第１検出工程と、前記出力側エンコーダにより角度を検出する第２検出工程と、制御装置が、前記ロボットアームに実行させる作業内容に応じて前記関節の制御に前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御または前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択する選択工程と、前記制御装置が、前記選択工程で選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームに特定の動作を実行させる実行工程と、を含み、前記制御装置は、前記選択工程で、前記ロボットアームのエンドエフェクタで操作させる対象物に応じて、前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択する構成を採用した。 
【００１１】
あるいは、減速機を介して関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダとを備えた関節により、複数のリンクを結合して成るロボットアームを備えたロボット装置であって、前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御、または、前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択して前記関節を制御する制御装置を備え、前記制御装置は、前記関節を前記セミクローズ制御によって制御して前記ロボットアームを動作させるテスト運転を複数回実行させ、前記複数回のテスト運転における前記出力側エンコーダの出力を用いて、特定点における前記ロボットアームの先端位置を評価し、その評価結果に基づき前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択し、選択した前記セミクローズ制御または前記フルクローズ制御により前記関節を制御して前記ロボットアームを動作させる構成を採用した。
【００１２】
あるいは、減速機を介して関節を駆動するモータと、前記減速機の入力側の駆動軸の角度を検出する入力側エンコーダと、前記減速機の出力側の駆動軸の角度を検出する出力側エンコーダとを備えた関節により、複数のリンクを結合して成るロボットアームを備えたロボット装置であって、前記ロボットアームに実行させる作業内容に応じて前記関節の制御に前記入力側エンコーダの検出結果に基づき関節の角度を制御するセミクローズ制御または前記出力側エンコーダの検出結果に基づき関節の角度を制御するフルクローズ制御のいずれを用いるかを選択し、選択した前記セミクローズ制御または前記フルクローズ制御を用いて前記関節を動作させ前記ロボットアームに特定の動作を実行させる制御装置を有し、前記制御装置は、前記ロボットアームのエンドエフェクタで操作させる対象物に応じて、前記関節の制御に前記セミクローズ制御または前記フルクローズ制御のいずれを用いるかを選択する構成を採用した。
【発明の効果】
【００１３】
上記構成によれば、ロボットアームの先端の位置の偏りまたはバラつきに関する評価結果に基づき、セミクローズ制御またはフルクローズ制御を選択する。あるいは、特定した前記ロボットアームに実行させる作業内容に応じてセミクローズ制御またはフルクローズ制御を選択する。このため、例えばユーザ要求精度を満たすために必要最小限な範囲でフルクローズ制御を選択し、セミクローズ制御の割合を大きくできる可能性が高い。したがって、ロボット装置の動作速度の劣化を小さくでき、ロボットの作業効率を大きく向上できる、という優れた効果がある。
【図面の簡単な説明】
【００１４】
【図１】実施例１に係るロボット装置を示す斜視図である。
【図２】ロボットアームの関節の駆動系を示し、（ａ）は関節の部分断面図、（ｂ）は関節の制御系のブロック図である。
【図３】実施例１に係るロボット装置の制御装置の構成を示すブロック図である。
【図４】実施例１に係るロボット装置の要部構成を示した機能ブロック図である。
【図５】実施例１に係るロボット制御方法を示すフローチャート図である。
【図６】実施例２に係るロボット装置の要部構成を示した機能ブロック図である。
【図７】実施例２に係るロボット制御方法を示すフローチャート図である。
【図８】実施例３に係るロボット装置において、（ａ）は第２のワークに第１のワークを挿入させる挿入作業を示す説明図、（ｂ）は第２のワークの構成を示した正面図である。
【図９】実施例３に係るロボット制御方法を示すフローチャート図である。
【図１０】実施例３に係るロボット制御方法を示すフローチャート図である。
【図１１】実施例４に係るロボット装置の先端部の動作軌跡を示した説明図である。
【図１２】実施例４に係るロボット制御方法を示すフローチャート図である。
【図１３】実施例４に係るロボット制御方法を示すフローチャート図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【実施例１】
【００１６】
実施例１では、ロボットアームの作業が複数の工程からなる場合、必要な工程のみをフルクローズ制御する構成について述べる。
【００１７】
（１）用語の説明
ここで、本明細書で用いる目標値、精度、ユーザ要求精度、偏り（かたより）、バラつき、の各用語の意味を説明しておく。ロボットアームを用いる場合、所望の目標位置（位置決め点ともいう）にロボットアームの先端位置を移動、あるいは停止させることが要求される。また、ロボットアームの関節に関しては、所望の目標角度に関節の角度（関節角度）を制御することが要求される。この目標の位置や姿勢に係る値、例えば座標値や角度値を「目標値」と呼ぶ。この「目標値」が問題とされるのは、主にロボットアームの先端位置の軌道、停止位置（位置決め点や教示点）や、関節角度などについてである。また、ロボット装置の実際の動作では、例えばロボットプログラムで定義した同じ動作を数回実行させた場合でも、ロボットアームの先端位置が占める実際の位置は或る範囲内で分布し、この分布を「精度」と呼ぶ。また、ユーザが必要とする「分布」（精度）を特にユーザ要求精度と呼ぶ。また、「精度」の中で、目標値と分布平均値の差を「偏り」、分布の幅を「バラつき」という。この「偏り」は、「正確度」などと表現される場合もある。また、「バラつき」は、例えば標準偏差を数倍した値や、ズレ量の最大値と最小値の差などの値により評価される。なお、特に精度に係る「バラつき」を評価するための統計的あるいは数学的な手法については公知であるため、以下ではその細部の説明については省略する。
【００１８】
（２）ロボット装置の構成の説明
図１は、本発明の実施例１に係るロボット装置を示す斜視図である。ロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御部としての制御装置３００と、ユーザの操作によりロボット２００の動作を教示する教示部としてのティーチングペンダント４００と、を備えている。
【００１９】
ロボット２００は、多軸の垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられた、エンドエフェクタとしてのロボットハンド２０２を有している。
【００２０】
ロボットアーム２０１は、作業台に固定されるベース部２１０と、変位や力を伝達する複数のリンク２１１〜２１６とが関節Ｊ１〜Ｊ６で屈曲又は回転可能に連結されている。実施例１では、ロボットアーム２０１は、屈曲する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、屈曲とは２つのリンクの結合部のある点で折れ曲がること、回転とは２つのリンクの長手方向の回転軸でリンクが相対的に回動することをいい、これらの動作を行う関節をそれぞれ屈曲部、回転部と呼ぶ。ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、関節Ｊ１，Ｊ４，Ｊ６が回転部、関節Ｊ２，Ｊ３，Ｊ５が屈曲部である。
【００２１】
ロボットハンド２０２は、第６のリンク（先端リンク）２１６に結合され、第１のワークであるワークＷ１の組付け作業を行うエンドエフェクタであり、複数のフィンガー２２０を有する。複数のフィンガー２２０を閉動作させることによりワークＷ１を把持することができ、複数のフィンガー２２０を開動作させることによりワークＷ１を把持解放することができる。
【００２２】
ロボットアーム２０１は、各関節Ｊ１〜Ｊ６に対して設けられ、各関節Ｊ１〜Ｊ６をそれぞれ駆動する複数（６つ）の関節駆動部２３０を有している。なお、図１では、関節駆動部２３０は、便宜上、関節Ｊ２にのみ図示し、他の関節Ｊ１，Ｊ３〜Ｊ６には図示を省略しているが、他の関節Ｊ１，Ｊ３〜Ｊ６にも、同様の構成の関節駆動部２３０が配置されている。また、実施例１では、関節Ｊ１〜Ｊ６の全てが関節駆動部２３０で構成される場合について説明するが、関節Ｊ１〜Ｊ６のうち少なくとも１つが関節駆動部２３０で駆動されるよう構成されていればよい。
【００２３】
以下、関節Ｊ２における関節駆動部２３０を例に代表して説明し、他の関節Ｊ１，Ｊ３〜Ｊ６の関節駆動部２３０については、サイズや性能が異なる場合もあるが、同様の構成であるため、説明を省略する。
【００２４】
（３）関節Ｊ２における関節駆動部２３０の構成の説明
図２（ａ）は、ロボットアーム２０１の関節Ｊ２を示す部分断面図である。関節駆動部２３０は、電磁モータである回転モータ（以下、「モータ」という）２３１と、モータ２３１の回転軸２３２の回転を減速する減速機２３３とを有している。
【００２５】
また、関節駆動部２３０は、入力側角度検出部として、入力側エンコーダ２３５を有している。入力側エンコーダ２３５は、減速機２３３の入力側の駆動軸の角度を検出する。本実施例においては、入力側エンコーダ２３５は、モータ２３１の回転軸２３２および減速機２３３の入力軸のうちいずれか一方の軸、モータ２３１の回転軸２３２の回転角度を検出する。
【００２６】
また、関節駆動部２３０は、出力側角度検出部として、出力側エンコーダ２３６を有している。出力側エンコーダ２３６は、減速機２３３の出力側の駆動軸の角度を検出する。本実施例においては、出力側エンコーダ２３６は、減速機２３３の出力軸の回転角度を検出する。なお、図２（ａ）では不図示であるが、関節駆動部２３０は後述するモータ駆動装置を有する。また、モータ２３１は例えばサーボモータ、特にブラシレスＤＣサーボモータやＡＣサーボモータから構成することができる。
【００２７】
入力側エンコーダ２３５は、アブソリュート型のロータリーエンコーダが望ましく、１回転の角度の絶対値を検出するエンコーダ、このエンコーダの回転総数のカウンタ、およびこのカウンタに電力を供給するバックアップ電池などから構成される。ロボットアーム２０１への電源の供給がオフになっても、このバックアップ電池が有効であれば、ロボットアーム２０１への電源供給のオン／オフに関係なく、カウンタにおいて回転総数が保持される。このような構成により、例えば電源断の期間を狭んでも、ロボットアーム２０１の姿勢が制御可能となる。なお、入力側エンコーダ２３５は、回転軸２３２に取り付けられているが、減速機２３３の入力軸に取り付けてもよい。
【００２８】
出力側エンコーダ２３６は、ベース部２１０とリンク２１１、あるいは隣り合う２つのリンク間の相対角度を検出するロータリーエンコーダである。関節Ｊ２においては、出力側エンコーダ２３６は、リンク２１１とリンク２１２との間の相対角度を検出するロータリーエンコーダである。出力側エンコーダ２３６は、リンク２１１にエンコーダスケールを設け、リンク２１２に検出ヘッドを設けた構成（あるいはその逆の構成）である。また、リンク２１１とリンク２１２とは、クロスローラベアリング２３７を介して回転自在に結合される。
【００２９】
モータ２３１は、モータカバー２３８で覆われて保護されている。モータ２３１と入力側エンコーダ２３５との間には、不図示のブレーキユニットが設けられる。このブレーキユニットの主な機能は電源オフ時のロボットアーム２０１の姿勢の保持である。
【００３０】
実施例１では、減速機２３３は例えば小型軽量で減速比の大きい波動歯車減速機によって構成する。この減速機２３３は、モータ２３１の回転軸２３２に結合された、入力軸であるウェーブジェネレータ２４１と、リンク２１２に固定された、出力軸であるサーキュラスプライン２４２と、を備えている。なお、サーキュラスプライン２４２は、リンク２１２に直結されているが、リンク２１２に一体に形成されていてもよい。
【００３１】
また、減速機２３３は、ウェーブジェネレータ２４１とサーキュラスプライン２４２との間に配置されリンク２１１に固定されたフレクスプライン２４３を備えている。このフレクスプライン２４３は、ウェーブジェネレータ２４１の回転に対して減速比Ｎで減速され、サーキュラスプライン２４２に対して相対的に回転する。従って、モータ２３１の回転軸２３２の回転は、減速機２３３で１／Ｎの減速比で減速されて、フレクスプライン２４３が固定されたリンク２１１に対してサーキュラスプライン２４２が固定されたリンク２１２を相対的に回転運動させ、関節Ｊ２を屈曲させる。
【００３２】
上記の構成では入力側エンコーダ２３５と出力側エンコーダ２３６を設けているため、入力側角度検出部をフィードバックするセミクローズ制御と、出力側角度検出部をフィードバックするフルクローズ制御のいずれかを選択して用いることができる。
【００３３】
図２（ｂ）は、上記の入力側エンコーダ２３５と出力側エンコーダ２３６を用いて関節Ｊ２のモータ２３１の動作を制御する関節駆動制御部３６０（図４）の構成を示している。図２（ｂ）では、後述の制御装置３００（図３）のプログラム３２０に基づくＣＰＵ３０１の機能をブロック化して図示し、ロボットアーム２０１の関節Ｊ２をブロック化して図示している。後述の制御装置３００は、各関節に対応する関節駆動制御部３６０の機能を有している。図２（ｂ）では、関節駆動制御部３６０の関節Ｊ２に係る部分のみを図示しているが、関節駆動制御部３６０は他の関節Ｊ１，Ｊ３〜Ｊ６についてもそれぞれ対応する構成を有するものとする。
【００３４】
次に、関節駆動制御部３６０について説明する。制御切替部３４１は、入力軸制御部３４２および出力軸制御部３４３のどちらを機能させるかを、後述の運転モード選択部３５０（図４）が選択した運転モードに応じて切り替える。具体的には、制御切替部３４１は、入力軸制御へ切り替える指令を受けた場合は入力軸制御部３４２を機能させる（セミクローズ制御）。また、制御切替部３４１は、出力軸制御へ切り替える指令を受けた場合は出力軸制御部３４３を機能させる（フルクローズ制御）。
【００３５】
入力軸制御部３４２は、入力側エンコーダ２３５の値で関節を制御する。つまり、入力軸制御部３４２は、入力側エンコーダ２３５からの角度情報を参照して位置制御を行う。出力軸制御部３４３は、出力側エンコーダ２３６の値で関節を制御する。つまり、出力軸制御部３４３は、出力側エンコーダ２３６からの角度情報を参照して位置制御を行う。
【００３６】
出力軸制御部３４３で制御する出力制御モードの場合は、減速機２３３の弾性やガタの影響を低減できるため、先端精度を確保することができる。一方、入力軸制御部３４２で制御する入力制御モードの場合は、減速機２３３の弾性等により先端精度が低化する。しかし、減速機２３３の弾性の作用によって、出力軸制御部３４３で制御する場合よりコンプライアンス量が大きく、例えば部品挿入時のコンプライアンス（追従）性が大きい。
【００３７】
（４）制御装置３００の構成の説明
図３は、ロボット装置１００の制御装置３００の構成を示すブロック図である。制御装置３００は、制御部（演算部）としてのＣＰＵ（Ｃｅｎｔｒａｌ  ＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）３０１を備えている。また、制御装置３００は、記憶部として、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３０４を備えている。
【００３８】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５および各種のインタフェース３１１〜３１５が、バス３１６を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００３９】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する各種演算処理を実行させるためのプログラム３２０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３２０に基づいてロボット制御方法の各工程を実行する。記録ディスクドライブ３０５は、記録ディスク３２１に記録された各種データやプログラム等を読み出すことができる。
【００４０】
教示部であるティーチングペンダント４００は、インタフェース３１１に接続されている。ティーチングペンダント４００は、ユーザの入力操作により、ロボット２００を教示する教示点、即ち各関節Ｊ１〜Ｊ６の目標関節角度（角度指令値）を指定するものである。教示点のデータ（教示データ）は、インタフェース３１１およびバス３１６を通じてＣＰＵ３０１又はＨＤＤ３０４に出力される。ＣＰＵ３０１は、ティーチングペンダント４００またはＨＤＤ３０４から教示データの入力を受ける。
【００４１】
入力側エンコーダ２３５は、インタフェース３１２に接続され、出力側エンコーダ２３６は、インタフェース３１３に接続されている。これらのエンコーダからは、検出した角度検出値を示すパルス信号が出力される。ＣＰＵ３０１は、インタフェース３１２，３１３およびバス３１６を介して各エンコーダからのパルス信号の入力を受信する。
【００４２】
表示部である表示装置（モニタ）５００は、インタフェース３１４に接続されており、ＣＰＵ３０１の制御に従って画像を表示する。
【００４３】
インタフェース３１５には、モータ駆動装置２５１が接続されている。ＣＰＵ３０１は、教示データに基づきモータ２３１の回転軸２３２の回転角度の制御量を指定する駆動指令のデータを所定時間間隔でバス３１６およびインタフェース３１５を介してモータ駆動装置２５１に出力する。
【００４４】
モータ駆動装置２５１は、ＣＰＵ３０１から入力を受けた駆動指令に基づき、モータ２３１への電流の出力量を演算し、モータ２３１へ電流を供給して、関節Ｊ１〜Ｊ６の関節角度制御を行う。モータ駆動装置２５１は、関節Ｊ１〜Ｊ６それぞれに対応して設けられ、例えば、図２では省略しているが、各関節Ｊ１〜Ｊ６に配置されている。そして、モータ２３１は、モータ駆動装置２５１から電力供給を受けて駆動トルクを発生し、減速機２３３の入力軸であるウェーブジェネレータ２４１にトルクを伝達する。減速機２３３において、出力軸であるサーキュラスプライン２４２は、ウェーブジェネレータ２４１の回転に対して１／Ｎの回転数で回転する。これにより、リンク２１２がリンク２１１に対して相対的に回転する。即ち、ＣＰＵ３０１は、モータ駆動装置２５１を介して、関節Ｊ１〜Ｊ６の関節角度が目標関節角度となるように、モータ２３１による関節Ｊ１〜Ｊ６の駆動を制御する。
【００４５】
なお、バス３１６には、不図示のインタフェースを介して、着脱式のフラッシュメモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。これらの記憶装置は、例えばＲＯＭ３０２やＨＤＤ３０４に格納した後述の制御プログラムを書き換えたり更新したりするために利用することができる。
【００４６】
（５）制御装置３００の機能
図４は、実施例１に係るロボット装置の要部構成を示した機能ブロック図である。制御装置３００においては、ＣＰＵ３０１がプログラム３２０を実行することにより実現される機能をブロック化して図示している。制御装置３００の制御機能は大きく分けて運転モード選択部３５０と関節駆動制御部３６０（図２（ｂ））からなる。図４においては、ロボットアーム２０１の関節Ｊ１〜Ｊ６をそれぞれ３６１〜３６６の参照符号により示している。
【００４７】
運転モード選択部３５０の機能は、把持対象判定部３５１、テスト運転制御部３５２、偏り補正計算を行う補正計算部３５３、バラつき判定部３５４、工程動作判定部３５５の各機能からなる。
【００４８】
運転モード選択部３５０を構成する把持対象判定部３５１は、ロボットの作業内容、特にロボットハンド２０２の把持対象の違いによってフルクローズ制御を必要とするか否かを判断する。
【００４９】
ここで作業内容、特にロボットハンド２０２の把持対象によって、セミクローズ制御とフルクローズ制御を選択する可能性につき考察する。例えば、ここではケーブル付の電動ドライバをロボットハンド２０２で把持して作業する場合を考える。このような作業内容は、セミクローズ制御よりも、フルクローズ制御の方が適していると考えられる。例えば、ケーブル付の電動ドライバでは、ケーブルからの張力や振動によりロボットアームへ外力を加えることになる。このような作業では、セミクローズ制御の場合、ケーブルからに張力や振動等に外力によって減速機のガタやねじれで先端位置が移動し、停止位置や軌道が変わる可能性がある。このようにロボットへ不規則な外力が加わる場合、ユーザ要求精度を確保できなくなる可能性があるため、セミクローズ制御ではなくフルクローズ制御が必要となる。
【００５０】
また、同一形状で材質の異なる複数のワークが混在する場合、比重の違いにより質量が異なり、停止位置や軌道が変わり、ユーザ要求精度を確保するためには、セミクローズ制御ではなくフルクローズ制御が必要となる。また、ワークによっては、内部にスライダー機構を有するものなどがあり、このようなワークでは、移動、姿勢変化、加減速などの操作状況によってその重心位置は変化し、一定の位置に定まらない。このように把持対象であるワーク重心位置が定まらない場合もセミクローズ制御ではなくフルクローズ制御が必要となる。
【００５１】
把持対象判定部３５１では、以上のような作業内容や把持対象の違いによって、把持対象によりセミクローズ制御とフルクローズ制御の選択を行う。このセミクローズ制御とフルクローズ制御の選択を行うには、例えばフルクローズ制御が必要な作業内容や把持対象を記憶領域に予め登録する。例えば、作業内容に関しては、フルクローズ制御が必要な作業内容、セミクローズ制御が可能な作業内容、あるいはその他の不明な作業内容、のように分類して登録する。また、把持対象に関しては、例えばフルクローズ制御が必要な把持対象、セミクローズ制御が可能な把持対象、あるいはその他の不明な把持対象、のように分類して登録する。ここでフルクローズ制御が必要な把持対象（あるいは作業内容として）として分類すべきなのは、例えば前述の電動ドライバのような把持対象である。そして、これから開始する作業内容やその把持対象の種別を示すコードを用いてメモリの登録内容を参照し、セミクローズ制御とフルクローズ制御のいずれを選択すべきかを決定する。このようなセミクローズ制御とフルクローズ制御の選択を行うためのテーブルメモリないしデータベースは、ＲＯＭ３０２やＨＤＤ３０４の記憶領域上に配置することができる。また、把持対象判定を上記のように登録するだけでなく、ユーザが随時指定できるようなユーザインターフェースを設けてもよい。
【００５２】
テスト運転制御部３５２の機能は、セミクローズ制御かフルクローズ制御の選択を行うためのテスト運転を制御する。また、テスト運転制御部３５２の機能によって、対象動作を複数回実行させる。この対象動作とは、ロボット装置１００をオンライン状態にして実行させる実際の作業内容と同じものである。
【００５３】
テスト運転では、ロボット装置１００の据え付けの状態はもちろん、ロボットアーム２０１の軌道、その軌道上の中間点や最終の停止位置は、実工程制御においてロボット装置１００をオンライン状態にして実行させる実際の作業内容と同じに制御される。また、テスト運転では、ロボットハンド２０２で把持させる対象物も、実工程制御においてロボット装置１００をオンライン状態にして実行させる実際の作業内容と同じである。なお、実工程制御は、例えば後述の図５のステップＳ９の処理に相当する。
【００５４】
また、本実施例のテスト運転は、複数回実行させ、その各々において、関節Ｊ１〜Ｊ６をセミクローズ制御によって制御して特定の動作をロボットアームに行わせる。そして、複数回のテスト運転における各関節Ｊ１〜Ｊ６の出力側エンコーダ（２３６）の出力値を後で評価できるようＲＡＭ３０３の所定領域に記憶する。また、実行したテスト運転におけるロボットアーム２０１の目標位置や軌道も後で評価できるようＲＡＭ３０３の所定領域に記憶される。
【００５５】
本実施例では、このようにしてセミクローズ制御によって実行したテスト運転における出力側エンコーダ（２３６）の出力値を記録する。従って、テスト運転における出力側エンコーダ２３６の出力から、テスト運転中の特定点におけるロボットアーム２０１の先端位置を評価することができる。このロボットアーム２０１の先端位置は、通常、ロボット制御において用いられるロボットアームの基準位置であって、例えばエンドエフェクタ（ロボットハンド２０２）の装着面の中心などが用いられる。ロボットアーム２０１の先端位置の評価とは、後述のように特定点における先端位置の偏りやバラつきに関する評価であり、この評価結果に基づきセミクローズ制御またはフルクローズ制御のいずれを用いるかを選択することができる。また、上記評価を行う特定点としては、ロボットアーム２０１の先端位置を移動させる目標の位置決め点を用いることができる。あるいは後述の実施例４におけるように、上記特定点として、ロボットアーム２０１の先端位置を移動させる目標の位置決め点に至る軌道上の中間点を用いることもできる。
【００５６】
また、オンライン動作でセミクローズ制御を用いるよう選択した場合、テスト運転における出力側エンコーダ（２３６）の出力値を用いてセミクローズ制御において用いる各関節Ｊ１〜Ｊ６の駆動量の補正値を生成する。
【００５７】
また、補正計算部３５３の機能によって、テスト運転結果から停止位置や軌道の偏りを計算するとともに、その偏りを低減する補正値を計算する。この補正値で指令値の補正を行えば、偏りは極めて小さくできる。また、バラつき判定部３５４の機能は、テスト運転から停止位置や軌道のバラつきを求め、そのバラつきがユーザ要求精度を満足するか否かを判断し、満足しない場合はフルクローズ制御を選択する。
【００５８】
工程動作判定部３５５の機能は、ロボット装置１００に実行させる作業内容のうち、例えば工程動作の内容、例えばそのスケールなどによって、フルクローズ制御が必要か否かを判断する。例えば、要求される作業に必要な動作量が微小なため、ロボットアーム２０１の関節の減速機のガタやヒステリシスの領域に関節の駆動角度を制御しなければならない場合がある。このような状況では、ガタやヒステリシスの領域ではロボットアーム２０１の先端位置の再現性が小さいのでバラつきが大きくなり、セミクローズ制御ではユーザの要求範囲外となる可能性がある。従って、例えば目標の位置姿勢においてロボットアーム２０１の関節の駆動角度がガタとヒステリシス領域にある場合はフルクローズ制御を選択する。このように、工程動作判定部３５５では、把持の工程動作、例えばそのスケールなどに応じて、によりセミクローズ制御とフルクローズ制御の選択を行う。
【００５９】
このように工程動作からセミまたはフルクローズ制御の選択を行うには、上記と同様に工程動作の種別や内容とセミまたはフルクローズ制御をそれぞれ関係づけたテーブルメモリないしデータベースをＲＯＭ３０２やＨＤＤ３０４の記憶領域上に用意しておく。工程動作の種別や内容は、その工程動作におけるロボットアーム２０１の軌跡、移動量、目標の位置姿勢などによって表現することができ、その各々にセミまたはフルクローズ制御をそれぞれ関係づけて登録することができる。
【００６０】
また、関節駆動制御部３６０（図２（ｂ））の機能によって、運転モードとして選択したセミクローズ制御またはフルクローズ制御のいずれかの制御方式でロボットアーム２０１の関節３６１〜３６６（Ｊ１〜Ｊ６）を制御する。
【００６１】
ＣＰＵ３０１は、ティーチングペンダント４００で教示中の、あるいは既に教示済みであり、例えばＨＤＤ３０４などに格納されているロボットプログラムの内容からロボットアーム２０１に実行させる作業内容を特定することができる。そして、作業内容、特にロボットハンド２０２の把持対象や、工程動作によってセミまたはフルクローズ制御を選択することができる。
【００６２】
（６）ロボット制御方法の各工程の説明
図５を参照して、本実施例においてＣＰＵ３０１がプログラム３２０を実行することによりロボット２００の動作を制御するためのロボット制御方法について説明する。図５は本実施例において、セミクローズ制御またはフルクローズ制御を選択する制御手順を示している。本実施例では、ロボットアーム２０１の関節３６１〜３６６全体について、セミクローズ制御またはフルクローズ制御を選択する制御を行う。
【００６３】
図５の制御手順はＣＰＵ３０１の制御プログラムとして、例えばＲＯＭ３０２やＨＤＤ３０４に格納しておくことができる。図５の制御手順は、ティーチングペンダント４００で行われるロボットアーム２０１の教示に伴なって、あるいは既に教示操作によりプログラム済みのロボットプログラムに対して実行される。ＣＰＵ３０１は、ティーチングペンダント４００で教示中の、あるいは既に教示済みであり、例えばＨＤＤ３０４などに格納されているロボットプログラムの内容からロボットアーム２０１に実行させる作業内容を特定する。例えば図５（図９、図１２でも同様）のフローチャートでは明示的に作業内容の特定工程を示していないが、ＣＰＵ３０１は当該のロボットプログラムが処理対象として特定された時点で、作業内容に係る把持対象や工程動作を認識することができる。
【００６４】
図５のステップＳ１、Ｓ２は、図４の把持対象判定部３５１の機能に相当する。まず、ステップＳ１では、ティーチングペンダント４００から教示中の、あるいは教示済みのロボットプログラムにおける当該の把持対象の種類を入力する（把持対象入力工程）。前述のように、セミクローズ制御とフルクローズ制御の選択に係る把持対象の種類としては、フルクローズ制御が必要な把持対象、セミクローズ制御が可能な把持対象、あるいはその他の不明な把持対象がある。把持対象の種類の入力の方法としては、上記のようにロボットプログラムの内容によって特定したり、ティーチングペンダント４００を介してユーザが逐一指定する方法が考えられる。
【００６５】
また、ロボット２００にカメラなどの視覚系が設けられている場合、画像処理で認識する方法を用いてもよい。例えば、ロボットハンド２０２で扱う把持対象のワークに上記の把持対象の種類（あるいはその把持対象に係るセミクローズ制御またはフルクローズ制御）を識別可能なマークを施しておく。このマークはタックシールやステッカー貼付など任意の手法によって付すことができる。そして例えばロボットアーム２０１などに設けたカメラによりこれから把持するワークの画像を撮像し、得られた画像に対して画像認識を行い、上記の把持対象の種類を入力する。また、マークを用いず、把持対象のワークの特徴部位を画像認識することによって上記の把持対象の種類を入力することもできる。
【００６６】
次に、ステップＳ２において、ステップＳ１で入力（あるいは認識）された把持対象に応じてフルクローズ制御が必要か否かを判断する（把持対象による判断工程）。ステップＳ２では、ＲＯＭ３０２やＨＤＤ３０４に配置した上記のテーブルメモリないしデータベースを参照し、把持対象からフルクローズ制御が必要か否かを判定する。ステップＳ２でフルクローズ制御が必要と判断した場合はステップＳ３で当該の工程動作についてフルクローズ制御を選択する。また、ステップＳ２でセミクローズ制御が可能、あるいは、不明と判断した場合はステップＳ４に進む。
【００６７】
なお、ステップＳ３でフルクローズ制御を選択する場合には、関節ごとにセミクローズ制御またはフルクローズ制御を選択する制御（例えば後述の実施例２）を行うことができる。
【００６８】
ステップＳ４は図４の工程動作判定部３５５の機能に相当する。このステップＳ４では、教示中の、あるいは教示済みのロボットプログラムにおける当該の工程動作の種別によって、フルクローズ制御が必要か否かを判断する（工程動作による判断工程）。上述のようにヒステリシスやガタの影響の大きい領域を用いてロボットアーム２０１の軌道や移動を制御しなければならない工程動作は再現性が小さく、バラつきの大きい動作の場合が多い。ステップＳ４では、ＲＯＭ３０２やＨＤＤ３０４に配置した上記のテーブルメモリないしデータベースを参照する。そして、工程動作の種別や内容、すなわち工程動作におけるロボットアーム２０１の軌跡、移動量、目標の位置姿勢などからフルクローズ制御が必要か否かを判定する。ステップＳ４でフルクローズ制御が必要と判断した場合は、ステップＳ３で当該の工程動作についてフルクローズ制御を選択する。セミクローズ制御が可能、あるいは、不明と判断した場合はステップＳ５に進む。
【００６９】
ステップＳ５は図４のテスト運転制御部３５２の機能に相当する。ステップＳ５では、教示中の、あるいは教示済みのロボットプログラムにおける当該の工程動作を複数回、実行する（第１のテスト運転工程）。このテスト運転は、ロボットアーム２０１の先端位置の精度、即ち、偏り、またはバラつきを求めるためのもので、これらの値を求めるのに当該の工程動作が必要な回数繰返し実行される。このテスト運転では、当然ながら、当該の工程動作におけるのと同じエンドエフェクタ（ロボットハンド２０２）とワークが用いられる。また、このテスト運転時には、ロボット２００をセミクローズ制御で運転し、出力側エンコーダ２３６（図２）の出力値を記憶する。
【００７０】
ステップＳ５に続くステップＳ５１は図４のバラつき判定部３５４の機能に相当する。ステップＳ５１では、ステップＳ５で記録した出力側エンコーダ２３６の出力値を用いて計算したロボットアーム２０１の先端位置のバラつきからフルクローズ制御が必要か否かを判断する（バラつきによる判断工程）。ここで求めたバラつきがユーザ要求精度を超える場合は、ステップＳ３に移行し、当該の工程動作につき、フルクローズ制御を選択する。
【００７１】
ステップＳ６は、図４のテスト運転制御部３５２の機能に相当するものであるが、このステップでは、図４の補正計算部３５３の機能が用いられ、ロボットアーム２０１の先端位置を補正した上、ステップＳ５と同様にテスト運転を行う。ここでは、ステップＳ６では、ステップＳ５で記録した出力側エンコーダ２３６の出力値を用いて計算したロボットアーム２０１の先端位置の偏りを補正して、セミクローズ制御で該当の工程動作を複数回、実行する（第２のテスト運転工程）。この時、補正計算部３５３による補正では、ステップＳ５のテスト運転で得られたロボットアーム２０１の先端位置の偏りを使用し、目標値と偏りが一致するようにロボットアーム２０１に対する指令値を補正する。これにより、ステップＳ６で関節駆動制御部３６０に与えられる指令値は、目標値を補正した値となる。なお、特定点におけるロボットアーム２０１の先端位置は、出力側エンコーダ２３６（図２）から得た各関節の角度から順運動学を解くことで求めることができる。また、偏りは、例えばステップＳ５の複数回のテスト運転のロボットアーム２０１の先端位置の平均と目標値の差として算出することができる。
【００７２】
ステップＳ６では、上記の補正計算部３５３によってロボットアーム２０１に対する指令値を補正した上で複数回のテスト運転を行い、そのテスト運転における出力側エンコーダ２３６の出力値を介して、さらにその時の各関節の回転角度の偏りを求める。この偏りを補正することで、ロボットアーム２０１の先端位置の偏りを低減することができる。なお、ステップＳ６の複数回のテスト運転の各々では、所定値以上に偏りが大きい場合には、偏りが小さくなるよう補正値を変更していく制御を行うようにしてもよい。また、精度の良い補正を行うために、ステップＳ５とステップＳ５１を複数回繰り返しても良い。
【００７３】
ステップＳ７では、次に、ステップＳ６の補正込みで行ったテスト運転工程におけるロボットアームの精度がユーザ要求精度以内かを判断する（ユーザ要求精度確認工程）。すなわち、ステップＳ６のテスト運転に関して、再度、ロボットアーム２０１の先端位置の精度（偏り、またはバラつき）を求める。そして、ロボットアームの先端位置の精度（偏り、またはバラつき）がユーザ要求精度範囲以内か否かを判断する。ステップＳ７において、ユーザ要求精度を満足しない場合は、ステップＳ３に移行して、当該の動作工程に関してフルクローズ制御を選択する。一方、ユーザ要求精度を満足する場合はステップＳ８でセミクローズ制御を選択する。
【００７４】
ステップＳ３またはステップＳ８でフルクローズ制御またはセミクローズ制御が選択されると、ステップＳ９で制御装置３００は実工程制御を行う。ステップＳ９の実工程制御では、制御装置３００は、当該のロボット制御プログラムによって定義された作業内容をロボットアーム２０１に実行させる。なお、実工程制御（ステップＳ９）で、セミクローズ制御でロボット２００を制御する場合は、当然ながらステップＳ６のテスト運転で決定した最終の補正値を用いてセミクローズ制御を行う。
【００７５】
（７）実施例１の効果
以上のように、本実施例によれば、把持対象の種別、および工程動作の種別や内容、すなわち、工程動作におけるロボットアーム２０１の軌跡、移動量、目標の位置姿勢などに応じてセミクローズ制御またはフルクローズ制御を選択することができる。さらに、テスト運転を実行して、特定点におけるロボットアーム２０１の先端位置の精度がユーザ要求精度であるか否かを判断し、セミまたはフルクローズ制御を選択することができる。特にある一連の作業について、複数の工程動作がある場合、その各々の工程動作に関して本実施例の制御を行うことによって、フルクローズ制御で行う工程動作の数を最小限にできるため、複数の工程動作から成る全体の時間を短縮することができる。また、セミクローズ制御に関しては、テスト動作により偏りを求め、この偏り誤差を相殺するようロボットアーム２０１の関節駆動制御部３６０に与える指令値を補正するようにしている。このため、セミクローズ制御が選択される場合でも、偏り誤差を大幅に小さくできる。しかも、セミクローズ制御に関してはロボットアーム先端の精度がユーザ要求精度以内に収まるよう制御が行われ、ユーザ要求精度を満足しない場合はフルクローズ制御が選択される。このため、ロボット制御は、最終的にユーザ要求精度を満足できる範囲で実行することができる。なお、上記の制御は、フルクローズ制御で達成できる精度が、ユーザ要求精度よりも高精度であるようなハードウェア仕様において好適に実施することができる。
【実施例２】
【００７６】
実施例１の制御方法は、ロボットアーム２０１の全ての関節に関して、セミクローズ制御またはフルクローズ制御を選択するものである。実施例１の制御方法によりフルクローズ制御が選択されると、全ての関節をフルクローズ制御することになるため、動作速度の劣化が大きくなる可能性がある。
【００７７】
例えば、図１で示したロボットアーム２０１はシリアルリンク機構のため、ある関節の動作や動作に伴う振動が他の関節の外乱となる可能性がある。また、フルクローズ制御は振動的になりやすいため、整定に時間がかかってロボット２００の動作が遅くなりやすい。フルクローズ制御する関節を少なくすれば、動作速度の劣化を小さくできる可能性がある。本実施例では、関節毎にフルクローズ制御とセミクローズ制御を選択し、フルクローズ制御の関節を少なくできるよう制御する。
【００７８】
なお、本実施例においては、ハードウェアおよびソフトウェアに係る図１〜図３の構成は同様であるものとする。また、本実施例以降の各実施例でも同様であるが、既に説明済みの構成部材については同一の参照符号を用い、特に必要な場合を除き、重複した説明は省略するものとする。
【００７９】
（１）制御装置３００の構成の説明
図６は図４に相当する様式で本実施例に係るロボット装置の要部構成を示している。図４との比較において、図６では関節選択部３７０の機能が追加されているのが実施例１との違いである。
【００８０】
関節選択部３７０の機能は、実施例１の制御（図５）によりフルクローズ制御が選択された場合に後述の図７に示すように作用させる。また、実施例１の制御（図５）によりセミクローズ制御が選択された場合は、前述同様に全ての関節をセミクローズ制御するように関節駆動制御部３６０へ指令する。
【００８１】
さらに詳細には、関節選択部３７０の機能は、バラつき影響ランキング部３７１、関節制御判断部３７２と、テスト運転制御部３７３の各機能から構成される。関節選択部３７０のテスト運転制御の機能をテスト運転制御部３７３で示しているのは、運転モード選択部３５０のテスト運転制御部３５２の機能と区別するためである。このうち、テスト運転制御部３５２の機能は図５の制御で実現され、テスト運転制御部３７３のテスト運転制御の機能は後述の図７によって制御で実現される。
【００８２】
また、バラつき影響ランキング部３７１の機能は、後述のテスト運転（図７のＳ１３：第３のテスト運転工程、テスト運転制御部３７３の機能に相当）に基づき、関節Ｊ１〜Ｊ６のバラつきの影響度をランキングする。ここで、ランキングとは、順位付けのことである。バラつき影響ランキング部３７１では、各関節角のバラつきを先端位置のバラつきに換算し、この大小により、関節Ｊ１〜Ｊ６を影響の大きい順にランキング（順位付け）する。各関節のバラつきの、ロボットアーム２０１の先端位置バラつきへの換算は、当該の工程動作における姿勢から順運動学的な演算を行うことにより可能である。すなわち、テスト運転を行えば、特定の関節のバラつきを実測でき、実測したバラつきをロボットアーム２０１の先端位置バラつきに換算することができる。このロボットアーム２０１の先端位置バラつきの大小によって、関節Ｊ１〜Ｊ６を影響の大きい順にランキングすることができる。ランキング結果は、例えばリンクトリストや配列形式で確保されたメモリ領域上にＣＰＵ３０１が記録することができる。そのためのメモリ領域は、例えばＲＡＭ３０３上などに確保すればよい。
【００８３】
そして、関節制御判断部３７２の機能によって、テスト運転（図７のＳ１７：第４のテスト運転工程、テスト運転制御部３７３の機能に相当）を複数回行い、最も影響の大きい関節から順次、フルクローズ制御を選択していくよう制御する。
【００８４】
（２）ロボット制御方法の各工程の説明
図７を参照して、本実施例においてＣＰＵ３０１がプログラム３２０を実行することによりロボット２００の動作を制御するためのロボット制御方法について説明する。図７の制御手順は、実施例１における図５のステップＳ３でフルクローズ制御が選択された場合に実行するもので、図５のステップＳ３を置換するよう記述されている。
【００８５】
まず、図７のステップＳ１１では、関節角の偏りを補正する目的で、該当の動作を複数回、セミクローズ制御によるテスト運転を行う（第３のテスト運転工程）。この機能は、図６のテスト運転制御部３７３の機能に相当する。
【００８６】
次に、ステップＳ１２において、関節Ｊ１〜Ｊ６ごとに関節角の偏りを求め、各関節の補正量を求める（補正計算工程）。この機能は、図６の補正計算部３５３の機能に相当する。
【００８７】
続いて、ステップＳ１３で、当該の工程動作を複数回、補正量を反映したセミクローズ制御によってテスト運転を行う（第４のテスト運転工程）。この機能は、図６のテスト運転制御部３７３の機能に相当する。
【００８８】
ステップＳ１４では、ステップＳ１３のテスト運転の結果に基づき、関節Ｊ１〜Ｊ６の各関節のバラつきを求める。そして、この各関節のバラつきをロボットアーム２０１の先端位置のバラつきに換算する。このロボットアーム２０１の先端位置のバラつきへの換算は、該当動作の姿勢から順運動学的に算出することで行える。そして、ステップＳ１５では、ステップＳ１４で求めた先端バラつきの大小により、先端バラつきの大きい関節から順にランキング（順位付け）を行う（バラつきランキング工程）。このステップＳ１４、およびＳ１５の機能は、図６のバラつき影響ランキング部３７１の機能に相当する。
【００８９】
ステップＳ１６では、ステップＳ１５で求めたバラつきのランキング結果に基づき、フルクローズ制御が未選択の関節の中から、最も影響の大きい関節を１つ選択し、この関節についてフルクローズ制御を選択する（関節のフルクローズ制御追加）。ここで、残りの関節のうち、まだフルクローズ制御が選択されていないものについては、セミクローズ制御を選択した状態とする。
【００９０】
そして、ステップＳ１７において、当該する工程動作を複数回繰り返すテスト運転を実行する（第５のテスト運転工程）。
【００９１】
ステップＳ１８では、ステップＳ１７のテスト運転の結果を解析し、先端位置精度がユーザ要求精度以内かを判断する（精度判断工程）。ユーザ要求精度を満足する場合は、図７の制御手順を終了する。また、明示的に図示していないが、ステップＳ１８では既に全ての関節についてフルクローズ制御が選択されているか否かを判定し、既に全ての関節についてフルクローズ制御が選択されている場合も処理を終了する。一方、ユーザ要求精度を満足しない場合は、ステップＳ１６に戻って上記のランキング結果から影響度の大きい次の（まだフルクローズ制御が選択されていない）関節を１つ選択し、この関節についてフルクローズ制御を選択する。
【００９２】
ステップＳ１８でユーザ要求精度を満足する結果が得られた場合は、関節Ｊ１〜Ｊ６のうちロボットアーム２０１の先端バラつきに関して影響度の大きい関節のいくつかのみがフルクローズ制御となる。そして残りの関節については、セミクローズ制御が選択されることになる。
【００９３】
（３）実施例２の効果
以上のように、実施例１の制御によって把持対象や工程動作の内容によって（補正込みの）セミクローズ制御を選択できなかった場合、ロボットアーム２０１の先端位置のバラつきに関して影響度の大きい関節から順にフルクローズ制御を選択できる。その場合、セミクローズ制御のテスト運転から求めた各関節のバラつきを先端位置バラつきに換算し、先端位置バラつきの影響度の大きな関節からランキングし、さらにテスト運転を行いながらバラツキの大きい関節から順次フルクローズ制御を選択する。そして、全ての関節でフルクローズ制御が選択されるか、ユーザ要求精度が得られた時点で制御を終了する。以上のようにして、フルクローズ制御する関節の数を少なくできる可能性が高まり、ロボット装置の動作速度の劣化を小さくすることができる。
【実施例３】
【００９４】
本実施例では、ロボットアーム２０１先端の移動に関して、必要な精度方向を考慮しフルクローズ制御とセミクローズ制御を選択する。ロボット２００を用いた組立等の作業においては、ロボットアーム２０１先端の移動方向によって必要とされる精度が異なる場合がある。
【００９５】
例えば、図８（ａ）は、ロボット２００が、ワークＷ２０に設けた長円形状の長穴に対して、ロボットハンド２０２で把持したワークＷ１を挿入する作業を行う様子を示している。図８（ａ）のロボット２００の構造は、図１のロボット２００のものと同じである。
【００９６】
図８（ａ）のワークＷ２０は、その正面図を図８（ｂ）に示すように、例えば半円弧形状のスリーブＷ２１、Ｗ２２で両端を囲まれた長円形状の長穴を中央に有している。ワークＷ１は、ワークＷ２０の長穴へ嵌め合わされる円筒状の部品である。このように長穴に円筒状の部品を基本とする嵌合構造においては、一般に長穴の長手方向よりも短手方向の位置決め精度が厳しい。
【００９７】
このため、図８（ａ）のような嵌合操作をロボット２００に行わせる場合、ロボットアーム２０１先端の位置決め精度は上記の長穴の長手方向に対しては比較的低精度、短手方向にはそれよりも高い精度が要求される傾向がある。以下では、図８（ａ）において、より精度の必要な方向を第１方向（上記長穴の短手方向に対応）、次に精度が必要な方向を第２方向という（上記長穴の長手方向に対応）。ユーザ要求精度に関しても、第１方向のユーザ要求精度と第２方向のユーザ要求精度がある。
【００９８】
そこで、本実施例においては、ロボットアーム２０１を動作させる空間における異なる方向に関するバラつきを計算し、各方向に関して計算されたバラつきに関してそれぞれ異なるユーザ要求精度を用いる。上記の第１方向および第２方向に関して異なる制御を行なう制御手順は、下記の（１）および（２）に示すように、実施例１の変形例として、および実施例２の変形例としての構成が考えられる。
【００９９】
（１）実施例１の変形例として
実施例３を実施例１の変形例として適用する場合は図９のような制御手順となる。図９の制御手順では、実施例１と同様に、ロボットアーム２０１の全ての関節に関して一括してセミクローズ制御またはフルクローズ制御のいずれかを選択する制御を行う。その際、セミクローズ制御でのテスト運転に関しては上記の第１方向と第２方向の精度に関して異なる判断を行う。図２、図３の構成は本実施例でも同様であるものとする。図９は、本実施例の制御手順を説明するもので、実施例１の図５に相当し、図５と同一のフローには同一のステップ番号を付し、その詳細な説明は省略するものとする。
【０１００】
また、図９の制御手順で対象とするロボット２００の作業内容は、図８（ａ）、（ｂ）に示した作業内容であるものとする。そして、ロボットアーム２０１の先端位置の制御について、上記の第１方向（ワークＷ２０の長穴の短手方向に対応）に関するユーザ要求精度は、第２方向という（ワークＷ２０の長穴の長手方向に対応）に関するユーザ要求精度より高いものとする。
【０１０１】
図９のステップＳ１〜Ｓ６までは図５の制御手順と同じ処理を実行する。ステップＳ６では、ステップＳ５で求めた偏りを補正して、セミクローズ制御で該当の工程動作を複数回、実行する（第２のテスト運転工程）が、続くステップＳ３１、Ｓ３２では上記の第１方向および第２方向に関して、それぞれ異なる判定を行う。
【０１０２】
すなわち、ステップＳ３１では、第１方向について、テスト運転（Ｓ６）における偏りとバラつきを求め、ロボットアーム２０１先端の位置決め精度がユーザ要求精度以内かを判断する（第１方向のユーザ要求精度確認工程）。ここでユーザ要求精度を満足しない場合は、ステップＳ３に移行し、各関節の制御方式としてフルクローズ制御を選択する。一方、ユーザ要求精度を満足する場合はステップＳ３２に進む。
【０１０３】
ステップＳ３２では、同様に第２方向について、テスト運転（Ｓ６）における偏りとバラつきを求め、ロボットアーム２０１先端の位置決め精度がユーザ要求精度以内かを判断する（第２方向のユーザ要求精度確認工程）。ここでユーザ要求精度を満足しない場合は、ステップＳ３に移行し、各関節の制御方式としてフルクローズ制御を選択する。一方、ユーザ要求精度を満足する場合はステップＳ８に進み、各関節の制御方式としてセミクローズ制御を選択する。
【０１０４】
ステップＳ３またはステップＳ８で関節の制御方式が選択された後、実施例１と同様にステップＳ９で実工程制御が行われる。図９のステップＳ８でセミクローズ制御が選択される場合は、実施例１の場合と同様に、実工程制御（Ｓ９）では、テスト運転（Ｓ６）において用いられたものと同じ補正量が各関節Ｊ１〜Ｊ６の制御に適用される。
【０１０５】
（２）実施例２の変形例として
実施例３を実施例２の変形例として適用する場合は図１０のような制御手順となる。図１０の制御手順では、実施例２の図７と同様に、図５のステップＳ３を置換する処理として、ロボットアーム２０１の関節ごとにセミまたはフルクローズ制御のいずれかを選択する制御を行う。その場合、上記の第１方向および第２方向に関してユーザ要求精度に係る判定を行ない、同精度を満足しない場合にはランキング上でロボットアーム２０１の先端位置のバラつきに関して影響の大きい関節からフルクローズ制御に切り換えていく。
【０１０６】
また、図１０の制御手順で対象とするロボット２００の作業内容は、図８（ａ）、（ｂ）に示した作業内容であるものとする。そして、ロボットアーム２０１の先端位置の制御について、上記の第１方向（ワークＷ２０の長穴の短手方向に対応）に関するユーザ要求精度は、第２方向という（ワークＷ２０の長穴の長手方向に対応）に関するユーザ要求精度より高いものとする。
【０１０７】
図１０のステップＳ１１〜Ｓ１３までは図７の制御手順と同じ処理を実行する。図１０のステップＳ３４〜Ｓ３８、およびステップＳ３９〜Ｓ４３は、図７のステップＳ１４〜Ｓ１８に相当する。図１０のステップＳ３４〜Ｓ３８、およびステップＳ３９〜Ｓ４３が、図７と異なるのは、各々図７のステップＳ１４〜Ｓ１８の処理を上記の第１方向と第２方向のユーザ要求精度について行う点である。
【０１０８】
まず、ステップＳ３４では、ステップＳ１３のテスト運転結果から、関節Ｊ１〜Ｊ６の各関節のバラつきを求める。そして、この各関節のバラつきを第１方向に関するロボットアーム２０１の先端位置バラつきに換算する。このアーム先端バラつきへの換算は、該当動作の姿勢から順運動学的に算出し、第１方向へ幾何学的に変換することにより可能である。そして、ステップＳ３５では、ステップＳ３４で求めた先端バラつきの大小により、先端バラつきの大きい関節から順にランキング（順位付け）を行う（第１方向のバラつきランキング工程）。
【０１０９】
ステップＳ３６では、ステップＳ３５で求めたバラつきのランキング結果に基づき、影響の大きい関節を１つ選択し、この関節についてフルクローズ制御を選択する（第１方向の関節のフルクローズ制御追加工程）。ここで、残りの関節のうち、まだフルクローズ制御が選択されていないものについては、セミクローズ制御を選択した状態とする（第１方向の関節のフルクローズ制御追加工程）。
【０１１０】
そして、ステップＳ３７において、当該する工程動作を複数回繰り返すテスト運転を実行する（第６のテスト運転工程）。
【０１１１】
ステップＳ３８では、ステップＳ３７のテスト運転の結果を解析し、第１方向に関する先端位置精度がユーザ要求精度以内かを判断する（第１方向の精度判断工程）。ここでユーザ要求精度を満足する場合は、ステップＳ３９に移行する。また、明示的に図示していないが、ステップＳ３８では既に全ての関節についてフルクローズ制御が選択されているか否かを判定し、既に全ての関節についてフルクローズ制御が選択されている場合は図１０の処理を終了する。一方、ユーザ要求精度を満足しない場合は、ステップＳ３６に戻り上記のランキング結果から第１方向に関する先端位置精度が影響度の大きい次の（まだフルクローズ制御が選択されていない）関節を１つ選択し、フルクローズ制御を選択する。
【０１１２】
ステップＳ３９〜Ｓ４３では、上記のステップＳ３４〜Ｓ３８と同様の処理を上記の第２方向の先端位置精度について実行する。まず、ステップＳ３９では、第２方向について、関節ごとにロボットアーム２０１の先端位置を計算し、その関節のバラつきを計算する（第２方向の先端位置バラつき計算工程）。
【０１１３】
次に、ステップＳ４０では、ステップＳ３９で求めたロボットアーム２０１の先端位置のバラつきの大小により、先端位置のバラつきの大きい順序でランキング（順位付け）を行う（第２方向のバラつきランキング工程）。
【０１１４】
そして、ステップＳ４１では、Ｓ４０で求めたバラつきのランキングから、より影響の大きい関節のフルクローズ制御を一関節追加する（第２方向の関節のフルクローズ制御追加工程）。続いてステップＳ４２で該当する動作を複数回繰り返すテスト運転を実行する（第７のテスト運転工程）。
【０１１５】
さらにステップＳ４３では、ステップＳ４２のテスト運転の結果を解析し、第２方向に関するロボットアーム２０１の先端位置精度がユーザ要求精度以内かを判断する（第２方向の精度判断工程）。ここでユーザ要求精度を満足する場合は処理を終了し、ユーザ要求精度を満足しない場合は、ステップＳ４１に戻ってフルクローズ制御する関節を追加する。また、ステップＳ４３で全ての関節でフルクローズ制御が選択された場合は、処理を終了する。
【０１１６】
（３）実施例３の効果
以上のように、実施例１ないし実施例２の制御を行う場合に、ユーザ要求精度の異なる第１方向および第２方向に関してそれぞれ精度判定を行い、セミまたはフルクローズ制御を選択する。フルクローズ制御を行うか否かは図９の制御手順では全関節について判定される。また、図１０の制御手順では第１方向および第２方向に関してそれぞれ先端位置バラつきの影響度の大きな関節のランキング順で、フルクローズ制御が選択されていく。そして、第１方向および第２方向に関してユーザ要求精度が満足された時点で処理を終了する。このような制御により、ユーザ要求精度の異なる第１方向および第２方向に関してロボットアーム２０１の先端位置の精度を満たした上で、可能な限りセミクローズ制御を選択でき、フルクローズ制御する関節の数を少なくすることができる。これによってロボット装置１００の動作速度の劣化を小さくできる。
【０１１７】
なお、以上では、本実施例においてユーザ要求精度が異なる方向を第１方向と第２方向として説明したが、ユーザ要求精度が異なる方向が３つ以上あっても上記同様の制御を行うことができる。具体的には、図９および図１０において、第１方向と第２方向に係る処理を行うステップＳ３１、Ｓ３２や、ステップＳ３４〜Ｓ３８、Ｓ３９〜Ｓ４３を３つ以上の対象方向分だけ用意すればよい。
【実施例４】
【０１１８】
上記の実施例１〜３では、特定の工程動作における特定点、例えば最終位置である位置決め点においてロボットアーム２０１の先端位置のバラつきの評価や、ユーザ要求精度の判定を行い、セミまたはフルクローズ制御を選択するものとした。
【０１１９】
しかしながら、工程動作によっては、ロボットアーム２０１（の先端位置）を特定の軌道で動作させる場合、すなわち、作業内容によっては軌道の途中の中間点におけるバラつきや、ユーザ要求精度を重視したい場合もある。従って、上記特定点としては、位置決め点のみならず、軌道の途中の中間点を採用した制御も考えられる。一般的に任意の軌道を得るためには、始点と位置決め点（終点）、及び、一つ以上の中間点を指定し、これらの点を滑らかに通過するように軌道生成が行われる。後述する中間点の補正では、中間点に最も接近する点を評価対象として処理される。
【０１２０】
本実施例では、位置決め点のみならず、軌道の途中の中間点におけるバラつきや、ユーザ要求精度に応じてセミクローズ制御またはフルクローズ制御を選択する制御手順を示す。本実施例では、実施例３と同様、図１２および図１３に制御手順のみを示し、その他の構成は実施例１、実施例２と同様であるものとする。
【０１２１】
図１１は本実施例のロボットアーム２０１の先端の動作軌跡の一例を示している。図１１の軌跡は、ロボットアーム２０１の先端を開始点Ｐ０から中間点Ｐ１を経由して、位置決め点Ｐ２に位置決めするものである。実施例１〜実施例３では、最終的な位置決め点Ｐ２におけるバラつきや精度に応じてセミクローズ制御とフルクローズ制御を切り換えていた。しかしながら、工程動作によっては中間点の精度が必要な場合もある。本実施例では、位置決め点Ｐ２のみならず中間点Ｐ１におけるバラつきや精度に応じてセミクローズ制御またはフルクローズ制御を選択する。
【０１２２】
（１）実施例１の変形例として
実施例４を実施例１の変形例として適用する場合は図１２のような制御手順となる。図１２の制御手順では、実施例１と同様に、ロボットアーム２０１の全ての関節に関して一括してセミまたはフルクローズ制御のいずれかを選択する制御を行う。その際、位置決め点Ｐ２のみならず中間点Ｐ１におけるバラつきや精度に応じてセミクローズ制御またはフルクローズ制御を選択する。図１２は本実施例の制御手順を説明するもので、実施例１の図５に相当し、図５と同一のフローには同一のステップ番号を付し、その詳細な説明は省略するものとする。なお、図１２の制御手順で対象とするロボット２００の作業内容は、例えば図１に示した作業内容であるものとする。
【０１２３】
図１２のステップＳ１〜Ｓ５までは図５の制御手順と同じ処理を実行する。本実施例ではステップＳ５１’とＳ５２が実施例１と異なる。
【０１２４】
ステップＳ５１’では、テスト運転（Ｓ５）における動作時の中間点Ｐ１および位置決め点Ｐ２でのロボットアーム２０１先端のバラつきを求めて、バラつきが所定値以内であればステップＳ６へ進む。また、中間点Ｐ１または位置決め点Ｐ２でのバラつきが所定値を超えている場合にはステップＳ３に移行し、各関節の制御方式としてフルクローズ制御を選択する（中間点を考慮した判断工程）。なお、この場合、中間点Ｐ１と位置決め点Ｐ２についてそれぞれ許容するバラつきは同一でなくても良く、使用状況によって例えばティーチングペンダント４００などから個別に設定してよい。
【０１２５】
続いて、実施例１のステップＳ６と同様に、補正込みのテスト運転を行う（第２のテスト運転工程）。そしてステップＳ５２において、中間点Ｐ１と位置決め点Ｐ２におけるロボットアーム２０１先端の位置決め精度がユーザ要求精度以内であればステップＳ８でセミクローズ制御を選択する。
【０１２６】
一方、ステップＳ５２において、中間点Ｐ１と位置決め点Ｐ２におけるロボットアーム２０１先端の位置決め精度がユーザ要求精度を満足しない場合はステップＳ３に移行し、各関節の制御方式としてフルクローズ制御を選択する（中間点を考慮した判断工程）。
【０１２７】
以上のようにして、ステップＳ３またはステップＳ８でフルクローズ制御またはセミクローズ制御が選択された後、ステップＳ９で実工程制御が行われる。なお、図１２のステップＳ８でセミクローズ制御が選択されている場合は、実工程制御（Ｓ９）では、実施例１の場合と同様にテスト運転（Ｓ６）において用いられたものと同じ補正量が各関節Ｊ１〜Ｊ６の制御に適用される。
【０１２８】
以上のようにして、本実施例によれば、中間点Ｐ１に対しても所定のユーザ要求精度を満足した上で、可能な限りセミクローズ制御でロボット制御を行える可能性を高めることができる。
【０１２９】
（２）実施例２の変形例として
実施例４を実施例２の変形例として適用する場合は図１３のような制御手順となる。図１３の制御手順では、実施例２の図７と同様に、図５のステップＳ３を置換する処理として、ロボットアーム２０１の関節ごとにセミクローズ制御またはフルクローズ制御のいずれかを選択する制御を行う。その場合、位置決め点Ｐ２のみならず中間点Ｐ１におけるロボットアーム２０１の先端位置の精度（バラつきや偏り）に応じてセミクローズ制御またはフルクローズ制御を選択する制御を行う。バラつきのランキング（順位付け）は、例えば位置決め点Ｐ２のみならず中間点Ｐ１におけるロボットアーム２０１の先端位置のバラつきに関して行う。そして、ユーザ要求精度に係る判定を行ない、同精度を満足しない場合にはランキング上でロボットアーム２０１の先端位置のバラつきに関して影響の大きい関節からフルクローズ制御に切り換えていく。なお、図１３の制御手順で対象とするロボット２００の作業内容は、例えば図１に示した作業内容であるものとする。
【０１３０】
図１３の例えばステップＳ６１〜Ｓ６４は、図７のステップＳ１１〜Ｓ１４に対応する処理であるが、図１３では細部に異なる点もあるので６０番台のステップ番号を用いている。
【０１３１】
まず、図１３のステップＳ６１では、関節角の偏りを補正する目的で開始点Ｐ０から中間点Ｐ１を経由し、位置決め点Ｐ２までの該当の動作を複数回行なうよう、セミクローズ制御によるテスト運転を実施する（第８のテスト運転工程）。
【０１３２】
次に、ステップＳ６２において関節毎に関節角の偏りを求め、各関節Ｊ１〜Ｊ６の補正量を求める（補正計算工程）。この時、補正量は開始点Ｐ０から中間点Ｐ１への移動、および中間点Ｐ１から位置決め点Ｐ２への移動で異なるものとなることが多い。
【０１３３】
ステップＳ６３では、該当の動作を複数回行うよう、ステップＳ６２の補正量を反映したセミクローズ制御によってテスト運転を実施する（第９のテスト運転工程）。
【０１３４】
次にステップＳ６４では、Ｓ６３のテスト運転結果において、各関節Ｊ１〜Ｊ６の関節角のバラつきを求める。次に各関節のバラつきから、ロボットアーム２０１の先端位置バラつきを計算する。前述同様、ロボットアーム２０１の先端位置のバラつきの換算は、該当動作の姿勢から順運動学的な演算により行うことができる。
【０１３５】
ステップＳ６５では、ロボットアーム２０１の先端位置のバラつきを中間点Ｐ１、位置決め点Ｐ２でそれぞれ求め、中間点Ｐ１、位置決め点Ｐ２において大きい方の値を該当関節のロボットアーム２０１の先端位置のバラつきほ補正量として求める。
【０１３６】
続いて、ステップＳ６６ではロボットアーム２０１の先端位置のバラつきの大小により、ロボットアーム２０１の先端位置のバラつきの大きい関節から順にランキング（順位付け）を行う（バラつきランキング工程）。
【０１３７】
ステップＳ６７では、ステップＳ６６で求めたバラつきのランキング結果に基づき、影響の大きい関節を１つ選択し、この関節についてフルクローズ制御を選択する（関節のフルクローズ制御追加工程）。そして、ステップＳ６８において、当該の工程動作を複数回繰り返すテスト運転を実施する（第１０のテスト運転工程）。
【０１３８】
ステップＳ６９では、ステップＳ６８のテスト運転におけるバラつきを解析し、先端位置精度がユーザ要求精度以内かを判断する（精度判断工程）。ユーザ要求精度を満足する場合は、図１３の制御手順を終了する。ユーザ要求精度を満足しない場合は、ステップＳ６７に戻って上記のランキング結果から影響度の大きい次の（まだフルクローズ制御が選択されていない）関節を１つ選択し、この関節についてフルクローズ制御を選択する。また、ステップＳ６８では既に全ての関節についてフルクローズ制御が選択されているか否かを判定し、既に全ての関節についてフルクローズ制御が選択されている場合も処理を終了する。
【０１３９】
（３）実施例４の効果
本実施例によれば、位置決め点（Ｐ２）のみならず、中間点（Ｐ１）を含めた特定点においてロボットアーム２０１の先端位置のバラつき、および精度に係る判定を行い、セミまたはフルクローズ制御のいずれかを選択する制御を行うことができる。セミまたはフルクローズ制御の選択は、全関節について（図１２）または、関節ごとに（図１３）行なわれる。特に、関節ごとの選択制御（図１３）では、セミクローズ制御のテスト運転から求めた各関節のバラつきを先端位置バラつきに換算し、先端位置バラつきの影響度の大きい関節からランキングし、バラツキの大きい関節から順次フルクローズ制御を選択する。そしてユーザ要求精度を満足するよう関節毎にフルクローズ制御とセミクローズ制御を選択する。以上のようにして、本実施例によれば、中間点Ｐ１に対しても所定のユーザ要求精度を満足した上で、可能な限りセミクローズ制御でロボット制御を行える可能性を高めることができる。しかも、ロボット装置１００に求められるユーザ要求精度を満足した上で、同時にフルクローズ制御する関節の数を少なくできるため、動作速度の劣化を小さくできる。
【０１４０】
本実施例の制御に加え、実施例３で説明したように、中間点と位置決め点においてロボットアーム２０１の先端位置を評価し、ユーザが必要とする第１の方向と第２の方向の要求精度を満足させる制御を行ってもよい。例えば、図１２では、ステップＳ５１’、Ｓ５２において、中間点と位置決め点においてロボットアーム２０１の先端位置のバラつきを評価する場合、図９のステップＳ３１、Ｓ３２に示したように複数の異なる方向に関するバラつきを評価する。また、図１３の場合は、ステップＳ６４〜Ｓ６９の制御を、図１０のステップＳ３４〜Ｓ３８、Ｓ３９〜Ｓ４３に示したように異なる方向についてそれぞれ行うようにする。このような制御によって、中間点においても異なる方向について異なるユーザ要求精度を適用する必要が場合、フルクローズ制御する関節の数を少なくできる場合がある。また、図１１〜図１３の説明では中間点が１つの場合を説明したが、出力側エンコーダ２３６によってロボットアーム２０１の先端位置を評価すべき中間点が２つ以上ある場合でも、図１２、図１３の処理は実施可能である。
【０１４１】
以上、４つの実施例を示したが、本発明は以上説明した実施例に限定されるものではなく、本発明の技術的思想の範囲内で多くの変形が可能である。
【０１４２】
例えば、上記各実施例では、フルクローズ制御を選択した場合は、例えば始点から停止位置までの間、フルクローズ制御を用いるよう制御する。しかしながら、ロボットアームの先端位置を目標の位置決め点まで移動させるその途中の軌道では精度を必要としない場合も考えられる。その場合には、途中の軌道では関節の制御にセミクローズ制御を選択する。そして、ロボットアームの先端位置が目標の位置決め点に到達する手前でセミクローズ制御からフルクローズ制御へ切り換えるようにしてもよい。
【０１４３】
上記各実施例では、入力側エンコーダ２３５、出力側エンコーダ２３６がロータリーエンコーダである場合について説明したが、これらのエンコーダはロータリーエンコーダに限定されるものではない。入力側エンコーダ２３５、出力側エンコーダ２３６は各軸の回転角度を検出できるものであれば、どのような形式の素子を用いてもよく、例えばレゾルバ等を用いてもよい。
【０１４４】
また、上記各実施例では、関節を駆動する減速機が波動歯車減速機である場合について説明したが、減速機は波動歯車減速機に限定されるものではない。波動歯車減速機以外の減速機であって、出力軸にトルクが作用した際に弾性変形やガタ等により出力軸が変位する減速機であれば本発明に適用可能である。
【０１４５】
また、上記各実施例では、ロボットアームが垂直多関節型の場合について説明したが、これに限定するものではなく、ロボットアームが水平多関節型の場合についても本発明を実施することができる。
【０１４６】
また、上記各実施例では、エンドエフェクタがロボットハンドである場合について説明したが、これに限定するものではなく、エンドエフェクタがワークに対して他の作業を施すツールであっても本発明は実施することができる。
【０１４７】
また、上記各実施例では、回転モータの駆動力を減速機へ直接伝達する場合について説明したが、これに限定するものではなく、間接的に伝達する手段、例えば回転モータの回転軸の回転を、減速機の入力軸にベルトで伝達する場合であってもよい。この場合、入力側エンコーダは、回転モータの回転軸又は減速機の入力軸のどちらの回転角度を検出するようにしてもよい。
【０１４８】
また、上記実施例の各処理動作は具体的にはＣＰＵ３０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を制御装置３００に供給し、制御装置３００のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施例の機能を実現することになり、プログラム自体およびそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１４９】
また、上記実施例では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３２０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図３に示すＲＯＭ３０２、記録ディスク３２１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。また、上記実施例におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【０１５０】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施例の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
【０１５１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施例の機能が実現される場合も含まれる。
【０１５２】
また、上記実施例では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する制御部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、上記のＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＦＰＧＡはＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの頭字語である。
【符号の説明】
【０１５３】
２００…ロボット、２０１…ロボットアーム、２０２…ロボットハンド（エンドエフェクタ）、２３０…関節駆動部、２３１…回転モータ、２３３…減速機、２３５…入力側エンコーダ（入力側角度検出部）、２３６…出力側エンコーダ（出力側角度検出部）、３０１…ＣＰＵ（制御部）、３２０…プログラム、４００…ティーチングペンダント、Ｊ１〜Ｊ６…関節。
【図１】
0006659096.tif 000002
【図２】
0006659096.tif 000003
【図３】
0006659096.tif 000004
【図４】
0006659096.tif 000005
【図５】
0006659096.tif 000006
【図６】
0006659096.tif 000007
【図７】
0006659096.tif 000008
【図８】
0006659096.tif 000009
【図９】
0006659096.tif 000010
【図１０】
0006659096.tif 000011
【図１１】
0006659096.tif 000012
【図１２】
0006659096.tif 000013
【図１３】
0006659096.tif 000014