(57)【要約】【課題】ロボットアームの先端の位置決め精度を向上させる。【解決手段】ＣＰＵ３０１が、モータ制御装置２３０に指令値を指令することにより、モータ制御装置２３０が、ロボットアームの関節を減速機を介して駆動するモータ１を、減速機の入力側に配置された入力軸エンコーダ１０の出力値及び指令値に基づいてフィードバック制御する。ＣＰＵ３０１が、教示点に基づいてモータ制御装置２３０に指令値を指令する。ＣＰＵ３０１が、減速機の出力側に配置された出力軸エンコーダ１６の出力値に基づくロボットアームの実姿勢と、予め設定された目標姿勢との差に基づいて教示点を補正する。ＣＰＵ３０１が、補正後の教示点に基づいてモータ制御装置２３０に指令値を指令する。【選択図】図３
2020015124.tif 000002
【特許請求の範囲】
【請求項１】
指令部が、制御部に指令値を指令することにより、前記制御部が、ロボットアームの関節を減速機を介して駆動するモータを、前記減速機の入力側に配置された第１エンコーダの出力値及び前記指令値に基づいてフィードバック制御するロボット制御方法であって、
前記指令部が、教示点に基づいて前記制御部に前記指令値を指令し、
前記指令部が、前記減速機の出力側に配置された第２エンコーダの出力値に基づく前記ロボットアームの実姿勢と、予め設定された目標姿勢との差に基づいて前記教示点を補正し、
前記指令部が、補正後の前記教示点に基づいて前記制御部に前記指令値を指令することを特徴とするロボット制御方法。
【請求項２】
前記教示点は、前記ロボットアームを所定の教示姿勢にして得られた前記第１エンコーダの出力値に基づいて作成され、
前記目標姿勢は、前記ロボットアームを前記所定の教示姿勢にして得られた前記第２エンコーダの出力値に基づいて作成されることを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記目標姿勢は、前記ロボットアームの先端の位置を示すパラメータで設定されており、
前記指令部が、前記実姿勢として、前記第２エンコーダの出力値から前記ロボットアームの先端の位置を求めることを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項４】
前記目標姿勢は、前記ロボットアームの関節の回転角度を示すパラメータで設定されており、
前記指令部が、前記実姿勢として、前記第２エンコーダの出力値から前記ロボットアームの先端の位置を求めるとともに、前記目標姿勢を、前記ロボットアームの関節の回転角度を示すパラメータから前記ロボットアームの先端の位置を示すパラメータに変換して、前記差を求めることを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項５】
前記指令部が、前記実姿勢を、前記制御部に前記指令値を指令してから所定時間が経過した時点で取得した前記第２エンコーダの出力値から求めることを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項６】
前記指令部が、前記実姿勢を、前記制御部に前記指令値を指令した後、前記第２エンコーダの出力値の振動量が所定値以下となったときの前記第２エンコーダの出力値から求めることを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項７】
前記指令部が、前記実姿勢を、前記制御部に前記指令値を指令した後、前記第２エンコーダの出力値に基づく前記ロボットアームの先端の振動量が所定値以下となったときの前記第２エンコーダの出力値から求めることを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項８】
前記指令部が、前記教示点を補正する処理と、補正後の前記教示点に基づいて前記制御部に前記指令値を指令する処理とを、前記差が閾値以下となるまで、繰り返し行うことを特徴とする請求項１乃至７のいずれか１項に記載のロボット制御方法。
【請求項９】
前記指令部が、前記ロボットアームに一連の動作を行わせる際に、前記教示点を補正する処理を行った場合、補正後の前記教示点を、記憶部に記憶させておき、
前記指令部が、再度、前記一連の動作を前記ロボットアームに行わせる際には、前記記憶部に記憶された前記教示点に基づいて前記制御部に前記指令値を指令することを特徴とする請求項１乃至８のいずれか１項に記載のロボット制御方法。
【請求項１０】
請求項１乃至９のいずれか１項に記載のロボット制御方法により前記ロボットアームを制御して物品を製造する物品の製造方法。
【請求項１１】
ロボットアームの関節を減速機を介して駆動するモータを、前記減速機の入力側に配置された第１エンコーダの出力値、及び指令された指令値に基づいてフィードバック制御する制御部に、前記指令値を指令する指令部を備え、
前記指令部は、
教示点に基づいて前記制御部に前記指令値を指令する処理と、
前記減速機の出力側に配置された第２エンコーダの出力値に基づく前記ロボットアームの実姿勢と、予め設定された目標姿勢との差に基づいて前記教示点を補正する処理と、
補正後の前記教示点に基づいて前記制御部に前記指令値を指令する処理と、を実行することを特徴とするロボット制御装置。
【請求項１２】
減速機、前記減速機を介して関節を駆動するモータ、前記減速機の入力側に配置された第１エンコーダ、及び前記減速機の出力側に配置された第２エンコーダを有するロボットアームと、
前記第１エンコーダの出力値、及び指令された指令値に基づいて前記モータをフィードバック制御する制御部と、
前記制御部に前記指令値を指令する指令部と、を備え、
前記指令部は、
教示点に基づいて前記制御部に前記指令値を指令する処理と、
前記第２エンコーダの出力値に基づく前記ロボットアームの実姿勢と、予め設定された目標姿勢との差に基づいて前記教示点を補正する処理と、
補正後の前記教示点に基づいて前記制御部に前記指令値を指令する処理と、を実行することを特徴とするロボット。
【請求項１３】
コンピュータに、請求項１乃至９のいずれか１項に記載のロボット制御方法を実行させるためのプログラム。
【請求項１４】
請求項１３に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットアームの制御に関する。
【背景技術】
【０００２】
近年、ロボットアームを有するロボットが工場等において利用されている。この種のロボットアームは、モータ及び減速機を有する駆動機構と、関節で連結され、駆動機構により一方が他方に対して駆動される一対のリンクとを備えている。一般的にロボットは、特許文献１に記載のように、減速機の入力側、即ちモータに配置されたエンコーダの出力値を用いてフィードバック制御を行うセミクローズドループ制御方式が採用されている。セミクローズドループ制御は、制御ループに減速機が介在しないので、サーボ系の発振が小さく、サーボゲインを大きくとることができる。このため、ロボットアームの高速動作が可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１１０８７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、減速機は、リンクと比較して剛性が低く撓みやすいので、一般的なセミクローズドループ制御方式では、ロボットアームの先端において高い位置決め精度を保証することが困難であった。
【０００５】
本発明は、セミクローズドループ制御方式で制御されるロボットアームの先端の位置決め精度を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、指令部が、制御部に指令値を指令することにより、前記制御部が、ロボットアームの関節を減速機を介して駆動するモータを、前記減速機の入力側に配置された第１エンコーダの出力値及び前記指令値に基づいてフィードバック制御するロボット制御方法であって、前記指令部が、教示点に基づいて前記制御部に前記指令値を指令し、前記指令部が、前記減速機の出力側に配置された第２エンコーダの出力値に基づく前記ロボットアームの実姿勢と、予め設定された目標姿勢との差に基づいて前記教示点を補正し、前記指令部が、補正後の前記教示点に基づいて前記制御部に前記指令値を指令することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ロボットアームの先端の位置決め精度が向上する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係るロボットを示す斜視図である。
【図２】第１実施形態に係るロボットアームの関節を示す部分断面図である。
【図３】第１実施形態に係るロボットの制御系の構成を示すブロック図である。
【図４】第１実施形態に係るロボットの制御系の機能を示すブロック図である。
【図５】第１実施形態に係るロボット制御方法を示すフローチャートである。
【図６】（ａ）は、第１実施形態に係る出力軸エンコーダの出力値の時間プロファイルの一例を示すグラフである。（ｂ）は、第１実施形態に係るロボットアームの先端の位置の時間プロファイルの一例を示すグラフである。
【図７】第１実施形態における実験結果の一例を示すグラフである。
【図８】第２実施形態に係るロボット制御方法を示すフローチャートである。
【図９】第２実施形態に係るロボット制御方法を示すフローチャートである。
【図１０】第３実施形態に係るロボット制御方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態を、図面を参照しながら説明する。
［第１実施形態］
図１は、第１実施形態に係るロボット５００を示す斜視図である。図１に示すロボット５００は、産業用ロボットである。ロボット５００は、ロボットアーム１００と、ロボットアーム１００を制御するロボット制御装置３００と、ロボット制御装置３００に接続された教示ペンダント６００と、を備える。ロボット制御装置３００がロボットアーム１００を制御することにより、ロボットアーム１００に第１ワークＷ１を把持させ、第１ワークＷ１を第２ワークＷ２に組み付けて物品を製造する作業をロボットアーム１００に行わせる。
【００１０】
ロボットアーム１００は、垂直多関節のロボットアームであり、アーム本体１０１と、アーム本体１０１の先端に配置されたエンドエフェクタの一例であるハンド１０２と、を有する。
【００１１】
アーム本体１０１は、関節Ｊ１〜Ｊ６で連結されたリンク１２０〜１２６と、各関節Ｊ１〜Ｊ６を駆動する駆動機構１１０とを備える。各駆動機構１１０は、必要なトルクの大きさに合わせて適切な出力のものが用いられる。ハンド１０２は、複数の把持爪１０４（フィンガ）を有し、ワーク等を把持することができる。
【００１２】
教示ペンダント６００は、ロボット制御装置３００に接続可能に構成され、ユーザがロボットアーム１００の動作を教示する、即ち教示点Ｐ１，Ｐ２，Ｐ３を作成するのに用いられる。
【００１３】
ロボットアーム１００の先端（手先）であるハンド１０２には、ツールセンターポイント（ＴＣＰ）が定義される。教示点Ｐ１，Ｐ２，Ｐ３は、タスク空間（作業空間）におけるＴＣＰの位置を示すパラメータ、又はコンフィグレーション空間（関節空間）におけるロボットアーム１００の各関節Ｊ１〜Ｊ６（又はモータ）の回転角度を示すパラメータで表現される。ロボットアーム１０１の先端（ＴＣＰ）の「位置」とは、「並進位置」及び「回転位置」である。タスク空間を基準とする教示点は、並進位置を示す３つのパラメータと、回転位置を示す３つのパラメータとで構成される。コンフィグレーション空間を基準とする教示点は、関節の数（本実施形態では６つ）のパラメータで構成される。コンフィグレーション空間を基準に作成された教示点は、ロボットの順運動学計算により、タスク空間に変換することができ、タスク空間を基準に作成された教示点は、ロボットの逆運動学計算により、コンフィグレーション空間に変換することができる。
【００１４】
図２は、第１実施形態に係るロボットアーム１００の関節Ｊ２を示す部分断面図である。以下、関節Ｊ２を例に代表して説明し、他の関節Ｊ１，Ｊ３〜Ｊ６については、同様の構成であるため、説明を省略する。
【００１５】
駆動機構１１０は、サーボモータである電動のモータ１と、モータ１の回転軸２の回転速度を減速して出力する減速機１１と、を有している。モータ１は、例えばブラシレスＤＣサーボモータやＡＣサーボモータである。モータ１は、回転軸２とロータマグネット３とで構成された回転子４と、モータハウジング５と、回転軸２を回転自在に支持する軸受６，７と、回転子４を回転させるステータコイル８と、を備えている。軸受６，７はモータハウジング５に設けられ、ステータコイル８はモータハウジング５に取り付けられている。また、モータ１はモータカバー９で囲われている。
【００１６】
減速機１１は、例えば波動歯車減速機である。減速機１１は、モータ１の回転軸２に結合された、入力軸を有するウェブジェネレータ１２と、リンク１２２に固定された、出力軸を有するサーキュラスプライン１３と、を備えている。なお、サーキュラスプライン１３は、リンク１２２に直結されているが、リンク１２２に一体に形成されていてもよい。
【００１７】
また、減速機１１は、ウェブジェネレータ１２とサーキュラスプライン１３との間に配置され、リンク１２１に固定されたフレクスプライン１４を備えている。リンク１２２に固定されたサーキュラスプライン１３は、ウェブジェネレータ１２の回転に対して減速され、リンク１２１に固定されたフレクスプライン１４に対して相対的に回転する。このように、モータ１は、減速機１１を介して、リンク１２２をリンク１２１に対して相対的に回転駆動する、即ち関節Ｊ２を回転駆動する。このときの減速機１１の出力側の回転角度が、リンク１２１とリンク１２２の間の実際の相対角度、即ち関節Ｊ２の回転角度となる。
【００１８】
リンク１２１とリンク１２２とは、クロスローラベアリング１５を介して回転自在に結合されている。リンク１２１とリンク１２２との間には、必要に応じて、電源オフ時にロボットアーム１００の姿勢を保持するためのブレーキユニットを設けてもよい。
【００１９】
減速機１１の入力側には、第１エンコーダとして、モータ１の回転軸２の回転角度に応じた信号を出力する入力軸エンコーダ１０が配置されている。減速機１１の出力側には、第２エンコーダとして、減速機１１の出力軸の回転角度、即ち関節の回転角度に応じた信号を出力する出力軸エンコーダ１６が配置されている。入力軸エンコーダ１０及び出力軸エンコーダ１６は、ロータリエンコーダであり、光学式と磁気式のいずれであってもよく、また、インクリメンタル方式とアブソリュート方式のいずれであってもよい。
【００２０】
図３は、第１実施形態に係るロボット５００の制御系の構成を示すブロック図である。図３に示すロボット５００の制御システム３５０は、コンピュータであるロボット制御装置３００と、モータ１をフィードバック制御する、複数、本実施形態では６つの制御部であるモータ制御装置２３０と、で構成される。モータ制御装置２３０は、例えばロボットアーム１００に搭載される。
【００２１】
ロボット制御装置３００は、指令部の一例であるプロセッサとしてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１を備えている。また、ロボット制御装置３００は、記憶部として、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３０４を備えている。また、ロボット制御装置３００は、記録ディスクドライブ３０５、計時部であるタイマ３０６、及び入出力インタフェースであるＩ／Ｆ３１１を備えている。Ｉ／Ｆ３１１には、各種画像が表示される不図示のモニタや書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続可能である。
【００２２】
ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５、タイマ３０６及びＩ／Ｆ３１１が、バス３１０を介して互いに通信可能に接続されている。ＲＯＭ３０２には、基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２３】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する各種演算処理を実行させるためのプログラム３２０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３２０に基づいてロボット制御方法の各工程を実行する。
【００２４】
記録ディスクドライブ３０５は、記録ディスク３２２に記録された各種データやプログラム等を読み出すことができる。タイマ３０６は、ＣＰＵ３０１からの計時開始の命令と計時終了の命令に基づき時間をカウントし、カウントした時間のデータをＣＰＵ３０１に出力する。
【００２５】
教示ペンダント６００は、Ｉ／Ｆ３１１に接続されている。教示ペンダント６００は、入力された教示点のデータをＩ／Ｆ３１１及びバス３１０を介してＣＰＵ３０１に出力する。ＣＰＵ３０１は、教示ペンダント６００から入力を受けた教示点のデータを、記憶部の一例であるＨＤＤ３０４に記憶させる。
【００２６】
なお、本実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３２０が格納される場合について説明するが、これに限定するものではない。プログラム３２０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３２０を供給するための記録媒体としては、図２に示すＲＯＭ３０２、記録ディスク３２２、不図示の外部記憶装置等を用いてもよい。具体的に例示すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性メモリ等を用いることができる。光ディスクは、例えばＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒである。不揮発性メモリは、例えばＵＳＢメモリ、メモリカード、ＲＯＭである。
【００２７】
モータ制御装置２３０は、バス３６０を介してロボット制御装置３００のＩ／Ｆ３１１に接続されている。各モータ制御装置２３０には、対応するモータ１、入力軸エンコーダ１０及び出力軸エンコーダ１６が接続されている。各モータ制御装置２３０は、マイクロコンピュータ、モータ１に電流を供給するモータドライバ、各エンコーダ１０，１６からのパルス信号をデジタルのデータ（出力値）に変換する変換器（エンコーダ回路）、入出力インタフェース等を含む。各モータ制御装置２３０は、各エンコーダ１０，１６からの出力値を示すデータ信号を、予め定められた周期でバス３６０を介してＣＰＵ３０１に出力する。ＣＰＵ３０１は、教示点に基づいて軌道を生成し、モータ１の回転軸２の回転角度の制御量を示す指令値のデータを予め定められた周期でバス３６０を介して各モータ制御装置２３０に出力する。
【００２８】
各モータ制御装置２３０は、ＣＰＵ３０１から指令された指令値と、入力軸エンコーダ１０の出力値に基づき、モータ１をフィードバック制御する。具体的には、各モータ制御装置２３０は、指令値と入力軸エンコーダ１０の出力値との差分に基づき、モータ１への電流の出力量を演算し、モータ１へ電流を供給して、各関節Ｊ１〜Ｊ６の動作を制御する。このように、各モータ制御装置２３０は、各入力軸エンコーダ１０を用いたセミクローズドループ制御によるフィードバック制御により、各モータ１、即ち各関節Ｊ１〜Ｊ６の動作を制御する。
【００２９】
ロボット制御装置３００のＣＰＵ３０１が各モータ制御装置２３０に指令する指令値は、指令周期ごとに更新される。この指令周期は、０．５ｍｓｅｃから１０ｍｓｅｃを用いることが可能であり、たとえば２ｍｓｅｃである。各モータ制御装置２３０が各モータ１を制御する周期は、５０〜５００μｓｅｃであり、たとえば１００μｓｅｃである。各モータ制御装置２３０が、各モータ１へ供給する電流を制御することで、各関節Ｊ１〜Ｊ６における回転角度を制御する。
【００３０】
図４は、第１実施形態に係るロボット５００の制御系の機能を示すブロック図である。なお、各関節Ｊ１〜Ｊ６に対応する、モータ１、減速機１１、入力軸エンコーダ１０、出力軸エンコーダ１６、及びモータ制御装置２３０があるが、図４では、簡略化のためにこれらを１関節分のみ図示している。
【００３１】
ＣＰＵ３０１は、図３に示すプログラム３２０を実行することにより、図４に示す各部４０１，４０２，４０３，４０４、４０５として機能する。また、記憶部としてのＨＤＤ３０４及び／又はＲＡＭ３０３は、各記憶部４１１，４１２，４１３，４１５として機能する。またモータ制御装置２３０のマイクロコンピュータは、サーボ制御部２４０として機能する。なお、モータ制御装置２３０は、入力軸エンコーダ１０からの信号をデジタルの値（データ）に変換する変換器２４１を有し、変換器２４１からの出力が、入力軸エンコーダ１０の出力値（エンコーダ値）となる。また、モータ制御装置２３０は、出力軸エンコーダ１６からの信号をデジタルの値（データ）に変換する変換器２４２を有し、変換器２４２からの出力が、出力軸エンコーダ１６の出力値（エンコーダ値）となる。
【００３２】
図５は、第１実施形態に係るロボット制御方法を示すフローチャートである。図５の制御手順は、図３に示すプログラム３２０として、例えばＨＤＤ３０４に格納しておくことができる。
【００３３】
以下、図１に示すように、ロボットアーム１００を教示点Ｐ１，Ｐ２，Ｐ３の順に動作させてワークＷ１をワークＷ２に組付けて物品を製造する場合を例に説明する。なお、パラメータ記憶部４１３には、リンクパラメータなどの機構パラメータが、予め記憶されている。リンクパラメータは、リンクの長さ、リンクのねじれ角、リンク間距離、リンク間角度などのパラメータを含む。これらのパラメータは、順運動学計算部４０１における順運動学計算、逆運動学計算部４０５における逆運動学計算を行う際に用いられる。ＣＰＵ３０１は、順運動学計算又は逆運動学計算を行う際には、これらパラメータを参照する。機構パラメータは設計値であってもよいし、測定結果に基づいた校正値であってもよい。
【００３４】
まず、ロボットアーム１００を教示する教示工程（Ｓ１）について説明する。教示工程（Ｓ１）において、ユーザが教示ペンダント６００（図１及び図３）を操作することにより、ロボットアーム１００を所定の教示姿勢に動作させて教示点のデータを作成する。図１の例では、３つの教示点Ｐ１，Ｐ２，Ｐ３のデータを作成する。作成された教示点Ｐ１，Ｐ２，Ｐ３のデータは、教示点記憶部４１１に記憶される。
【００３５】
本実施形態では、サーボ制御部２４０は、入力軸エンコーダ１０を用いたセミクローズドループ制御方式により、モータ１をフィードバック制御する。よって、教示工程においては、各教示点Ｐ１，Ｐ２，Ｐ３のデータは、入力軸エンコーダ１０の出力値に基づいて作成される。教示点Ｐ１，Ｐ２，Ｐ３のデータは、タスク空間で指定されたパラメータで作成される。具体的には教示点のデータは、ロボットアーム１００を所定の教示姿勢に動作させたときに取得した入力軸エンコーダ１０の出力値に基づく順運動学計算により、ロボットアーム１００の先端の位置である並進位置及び回転位置を示すパラメータで作成される。入力軸エンコーダ１０の出力値は、モータ１の回転軸２の回転角度に相当した値である。このため、ロボットアーム１００の先端の位置である並進位置及び回転位置を順運動学計算により求める際には、入力軸エンコーダ１０の出力値を、関節の回転角度のコンフィグレーション空間のデータに変換するよう減速機１１の減速比などで校正する。
【００３６】
同時に、本実施形態では、この教示工程（Ｓ１）において、教示点を作成するためにロボットアーム１００を所定の教示姿勢に動作させたときに、ＣＰＵ３０１は、入力軸エンコーダ１０の出力値と共に出力軸エンコーダ１６の出力値も取得する。ＣＰＵ３０１は、出力軸エンコーダ１６の出力値に基づきロボットアーム１００の目標姿勢のデータを作成する。作成された目標姿勢のデータは、目標姿勢記憶部４１２に記憶される。
【００３７】
目標姿勢のデータは、タスク空間で指定されたパラメータで設定されている。具体的には、目標姿勢データは、所定の教示姿勢にロボットアーム１００を動作させたときに取得した出力軸エンコーダ１６の出力値に基づいて順運動学計算を行うことで、ロボットアーム１００の先端（ＴＣＰ）の位置を示すパラメータで設定される。出力軸エンコーダ１６の出力値は、関節の回転角度に相当した値である。したがって、入力軸エンコーダ１０の出力値のように、減速機１１の撓みによる誤差を含んでいないため、正確にロボットアーム１００の目標姿勢を求めることができる。このように求められた目標姿勢データは、教示点データと対応付けて作成されて、目標姿勢記憶部４１２に記憶される。
【００３８】
なお、ユーザが教示ペンダント６００を操作してロボットアーム１００を実際に動作させて、ＣＰＵ３０１に教示点のデータ及び目標姿勢のデータを作成させる場合について説明したが、これに限定するものではない。例えば、ロボットシミュレータを用いて、教示点のデータ及び目標姿勢のデータを作成するようにしてもよい。また、例えばハンドにワークを把持させて、不図示の撮像装置を用いてワークを撮像し、画像処理を行って、教示点のデータ及び目標姿勢のデータを作成するようにしてもよい。
【００３９】
このように、記憶部４１１，４１２に教示点及び目標姿勢の各データを記憶させておく、即ち予め設定しておくことで、組立工程において、ＣＰＵ３０１は、教示点と目標姿勢の各データを記憶部４１１，４１２からそれぞれ取得することができる。
【００４０】
次に、ＴＣＰが教示点Ｐ１，Ｐ２，Ｐ３の順に辿る一連の動作をロボットアーム１００に行わせ、ワークＷ１をワークＷ２に組付ける実際の組立工程について説明する。なお、教示点Ｐ２は、ワークＷ１をワークＷ２に組み付ける動作を開始する位置であり、教示点Ｐ３は、ワークＷ１をワークＷ２に組み付ける動作を完了する位置である。
【００４１】
以下、ロボットアーム１００が教示点Ｐ１の姿勢となっているものとし、教示点Ｐ１から教示点Ｐ２にロボットアーム１００の姿勢を変更する場合を例に説明する。ＣＰＵ３０１は、教示点Ｐ２のデータに基づいて、各モータ１の指令値（角度指令）を生成し（Ｓ２）、各サーボ制御部２４０に指令値を指令する（Ｓ３）。各サーボ制御部２４０は、入力軸エンコーダ１０の出力値と指令値との差分に基づいてモータ１をフィードバック制御（セミクローズドループ制御）する。これにより、ロボットアーム１００の先端におけるＴＣＰが教示点Ｐ２に近づくように、ロボットアーム１００の姿勢が変更される。
【００４２】
ステップＳ２，Ｓ３の処理について更に具体的に説明する。図４に示す軌道生成部４０４は、ステップＳ２において、教示点記憶部４１１から教示点Ｐ２のデータを読み出す。一方、順運動学計算部４０１は、ロボットアーム１００を教示点Ｐ２に移動させる前の入力軸エンコーダ１０の出力値（現在値）を取得し、ロボットの順運動学計算を行い、参照姿勢データを算出する。この参照姿勢データは、ロボットアーム１００の先端の位置に対応するが、関節Ｊ１〜Ｊ６の撓み分が考慮されていないため、実際のロボットアーム１００の先端の位置に対して誤差を含んでいることがある。
【００４３】
軌道生成部４０４は、参照姿勢データを示す現在値から教示点Ｐ２に移動する軌道データを、補間処理を行って生成し、位置指令を算出する。軌道データは、指令周期ごとの位置指令からなるデータである。補間処理は、スプライン補間、直線補間、円弧補間、カム曲線補間などの任意の補間方法で補間することができる。
【００４４】
逆運動学計算部４０５は、位置指令をロボットの逆運動学計算により角度指令（モータ１の指令値）に変換し、この指令値をサーボ制御部２４０に指令する（Ｓ３）。このように、ステップＳ２，Ｓ３により、ＣＰＵ３０１は、教示点Ｐ２に基づいてサーボ制御部２４０に指令値を指令する。
【００４５】
サーボ制御部２４０は、入力軸エンコーダ１０の出力値と指令された指令値との差分に基づき、モータ１をフィードバック制御する。このとき、サーボ制御部２４０がモータ１へ電流を供給することで、関節が駆動される。このようにサーボ制御部２４０がモータ１をセミクローズドループ制御することで、ロボットアーム１００の姿勢が教示点Ｐ２に近づけられる。
【００４６】
なお、図４において機能ブロックは図示していないが、ＣＰＵ３０１は、ロボットアーム１００の先端が整定したかどうかを判定する（整定判定工程：Ｓ４）。ロボットアーム１００は、教示点Ｐ２へ動作するのに伴い、慣性力の影響を受け、教示点Ｐ２に到達して、各関節Ｊ１〜Ｊ６のモータ１を停止させたときに、ロボットアーム１００の先端が振動する場合がある。よって、ＣＰＵ３０１は、ロボットアーム１００の先端が整定したかどうかを判定することが好ましい。すなわち、ＣＰＵ３０１は、教示点Ｐ２へロボットアーム１００の先端を移動させる制御が終了した後、ロボットアーム１００の各関節Ｊ１〜Ｊ６のモータ１を停止状態にし、ロボットアーム１００の先端の振動が収束するまで待機する。そして、ロボットアーム１００が整定したと判定した後、順運動学計算部４０１は、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値を取得し、出力軸エンコーダ１６の出力値に基づき、ロボットアーム１００の実姿勢を求める（Ｓ５）。
【００４７】
整定判定には、以下に説明する３つの方法がある。第１の方法として、ＣＰＵ３０１は、ステップＳ４において、教示点Ｐ２を指令したタイミングで、図３に示すタイマ３０６に計時を開始させ、予め設定された所定時間の計時が終了するまで待機する。そして、順運動学計算部４０１は、ステップＳ５において、サーボ制御部２４０に指令値を指令してから所定時間が経過した時点で取得した出力軸エンコーダ１６の出力値からロボットアーム１００の実姿勢を求める。
【００４８】
第２の方法として、ＣＰＵ３０１は、サーボ制御部２４０に指令値を指令した後、ステップＳ４において、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値をモニタする。そして、ＣＰＵ３０１は、各出力軸エンコーダ１６の出力値の振動量が所定値以下に収束するまで待機する。具体的には、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値を取り込み、出力軸エンコーダ１６の出力値の時間変化から、ロボットアーム１００の先端の振動が収束したかどうかを判定する。そして、順運動学計算部４０１は、ステップＳ５において、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６出力値の振動量が所定値以下となったときの各出力軸エンコーダ１６の出力値から、ロボットアーム１００の実姿勢を求める。
【００４９】
図６（ａ）は、出力軸エンコーダ１６の出力値の時間プロファイルの一例を示すグラフである。横軸は時間、縦軸は出力軸エンコーダ１６の出力値である。ＣＰＵ３０１は、図６（ａ）に示す減衰データに対して、収束判定を行う。収束の判定には、例えば、出力軸エンコーダ１６の出力値の時間微分量が予め設定された所定値以下となった場合、又はその移動平均の時間微分量が予め設定された所定値以下となった場合などで判定することができる。判定アルゴリズムはこれに限らず、任意の手法が適用可能である。
【００５０】
整定判定の第３の方法として、出力軸エンコーダ１６の出力値に順運動学計算を施すことによって得られたロボットアーム１００の先端の位置データ（手先位置データ）を用いる。この場合、順運動学計算部４０１は、手先位置データを算出し、手先位置データの時間プロファイル（時間変化）を取得する。図６（ｂ）は、ロボットアーム１００の先端の位置（手先位置データ）の時間プロファイルの一例を示すグラフである。順運動学計算部４０１は、ステップＳ４において、ロボットアーム１００の先端の位置ｘ、ｙ、ｚの時間プロファイルに対して、時間微分量や移動平均量を用いた収束判定を行う。順運動学計算部４０１は、ステップＳ５において、出力軸エンコーダ１６の出力値に基づくロボットアーム１００の先端の振動量が所定値以下となったときの出力軸エンコーダ１６の出力値からロボットアーム１００の実姿勢を求める。
【００５１】
このように、ロボットアーム１００が整定したと判定した後、順運動学計算部４０１は、ステップＳ５において、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値を取得し、出力軸エンコーダ１６の出力値に基づき、ロボットアーム１００の実姿勢を求める。順運動学計算部４０１は、ロボットアーム１００の実姿勢として、ロボットアーム１００の先端の実際の位置（並進位置及び回転位置）を求める。即ち、順運動学計算部４０１は、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値に基づき、ロボットの順運動学計算により、ロボットアーム１００の先端の実際の位置を求める。
【００５２】
具体的に説明すると、順運動学計算部４０１は、以下の式を用いてロボットアーム１００の先端の実際の位置を求める。
Ｐｏｕｔ＝Ｋ［Θｏｕｔ］
ただし、Ｐｏｕｔはロボットアーム１００の実姿勢であるロボットアーム１００の先端の実際の位置（手先位置データ）、Ｋは順運動学計算子、Θｏｕｔは出力軸エンコーダ１６の出力値である。
【００５３】
また、順運動学計算部４０１は、各関節Ｊ１〜Ｊ６の入力軸エンコーダ１０の出力値を取得し、各入力軸エンコーダ１０の出力値に基づき、ロボットの順運動学計算により参照姿勢データも求める。
【００５４】
次に、差計算部４０２は、ロボットアーム１００の実姿勢と、予め設定された目標姿勢との差（即ち補正量）ΔＰを算出する（Ｓ６）。目標姿勢のデータは、目標姿勢記憶部４１２に予め記憶されている。差計算部４０２は、差ΔＰを計算する際に目標姿勢記憶部４１２から目標姿勢のデータを取得する。
【００５５】
具体的に説明すると、差計算部４０２は、以下の式で差ΔＰを算出する。
ΔＰ＝Ｐｏｕｔ−Ｐｒ
ただし、Ｐｒは、ロボットアーム１００の目標姿勢であるロボットアーム１００の先端の目標の位置である。
【００５６】
ロボットアーム１００の実姿勢と目標姿勢のデータは、共に、出力軸エンコーダ１６の出力値を用いて算出された、ロボットアーム１００の先端の位置を示すパラメータで設定されている。即ち、ロボットアーム１００の実姿勢と目標姿勢のデータは、共に、出力軸エンコーダ１６を用いて得られた手先位置データである。出力軸エンコーダ１６を用いて得られた手先位置データは、高い位置精度を有している。よって、求まる差（補正量）ΔＰも高い精度を有している。なお、実姿勢と目標姿勢のデータは、ロボットアーム１００の先端の位置のパラメータで設定されるベクトルデータである。したがって、差計算部４０２は、実姿勢と目標姿勢のデータに対してノルム（絶対値）とする演算を施してから、差ΔＰを求める。
【００５７】
次に、補正部４０３は、差ΔＰの閾値判定を行う（Ｓ７）。閾値は、予め設定された値、例えばＨＤＤ３０４等の記憶部に記憶された値である。補正部４０３は、差ΔＰが閾値以下である場合（Ｓ７：ＮＯ）、ロボットアーム１００の先端の位置精度が十分得られているため、次の教示点Ｐ３へロボットアーム１００を高精度に移動させることができる。閾値としては、要求されている位置精度やロボットの構成にも依存するが、１０μｍから数１００μｍ程度の値を用いることが可能であり、たとえば２０μｍである。
【００５８】
補正部４０３は、差ΔＰが閾値を超える場合（Ｓ７：ＹＥＳ）、差ΔＰに基づいて教示点Ｐ２を補正する（Ｓ８）。補正した教示点Ｐ２のデータは、補正教示点記憶部４１５に記憶される。
【００５９】
具体的に説明すると、補正部４０３は、以下の式で補正した教示点を算出する。
Ｐｃｏｒｒ＝Ｐｔ＋ΔＰ
ただし、Ｐｃｏｒｒは、補正後の教示点、Ｐｔは、補正前の教示点である。
【００６０】
即ち、補正部４０３にて教示点を補正する補正量は、差ΔＰである。補正部４０３は、差ΔＰを用いて、入力軸エンコーダの出力値に基づいて作成した教示点のデータを補正することで、補正後の教示点のデータを求める。このように出力軸エンコーダ１６の出力値に基づいて算出した精度の高い補正値を用いて教示点を補正することによって、高い位置精度の教示点が得られる。
【００６１】
次に、軌道生成部４０４は、現在の位置から補正後の教示点に移動するロボットアームの軌道を生成する（Ｓ９）。即ち、軌道生成部４０４は、ステップＳ５で算出された参照姿勢データと補正後の教示点のデータを基に、補間処理を行って軌道データを生成する。即ち、このステップＳ９では、ロボットアームの先端の位置ずれ（差）を解消するための軌道を生成する。
【００６２】
次に、逆運動学計算部４０５は、位置指令からなる軌道データに対して逆運動学計算を施し、角度指令（指令値）を生成する。そして、逆運動学計算部４０５は、生成した指令値をサーボ制御部２４０に指令する（Ｓ１０）。このように、ＣＰＵ３０１は、補正後の教示点Ｐに基づいてサーボ制御部２４０に指令値を指令する。この指令値の指令を受けたサーボ制御部２４０は、入力軸エンコーダ１０の出力値と指令値との差分に基づいてモータ１をフィードバック制御する。
【００６３】
ＣＰＵ３０１は、ステップＳ１０で指令値を指令する処理を行った後、ステップＳ４の処理に再び戻る。ＣＰＵ３０１は、以上説明したステップＳ８〜Ｓ１０の処理、ステップＳ４〜Ｓ７の処理を、差ΔＰが閾値以下に収束するまで、繰り返し行う。これにより、ロボットアーム１００の先端の位置精度が、１回だけ補正する場合と比較して更に向上する。
【００６４】
図７は、第１実施形態における実験結果の一例を示すグラフである。図７に示すように、差ΔＰは、補正動作を繰り返す度に小さくなることがわかる。実験の結果、補正なしの際には差が１１０μｍであったのに対し、１回目の補正で差が３０μｍに減少し、さらに２回目の補正で差が２０μｍ以下に減少した。即ち、本実施形態では、リンクパラメータなどを用いて逆運動学計算を行うため、逆運動学計算による誤差も生じる。補正動作を繰り返すことで、逆運動学計算による誤差も解消されていくものと考えられる。
【００６５】
なお、補正動作に要する時間（ステップＳ４〜Ｓ１０）は、数１００ｍｓｅｃ〜数ｓｅｃ程度であり、ロボットアーム１００による生産性はほとんど低下しない。また、所定の回数、補正動作を繰り返しても差ΔＰが閾値以下とならない場合には、工程を停止することや、警告表示を行い次の工程に進むなどの対処を行うことが可能である。
【００６６】
以上、第１実施形態によれば、出力軸エンコーダ１６の出力値を用いてロボットアーム１００の先端の位置を補正するため、高精度にロボットアーム１００の先端を位置決めすることができる。
【００６７】
特に、教示点Ｐ１，Ｐ２，Ｐ３の順に動作させてワークＷ１をワークＷ２に組付けて物品を製造する場合に、教示点Ｐ２に到達した際に、出力軸エンコーダ１６を用いた補正動作を行うことが好ましい。この補正動作により教示点Ｐ２の位置でＴＣＰを高い精度で位置決めできるため、高い精度が要求される教示点Ｐ２から教示点Ｐ３への移動動作において、ワークＷ１とワークＷ２と間の干渉が起きにくくなる。これにより、組み付けの失敗を少なくすることができ、物品の生産性が向上する。
【００６８】
また、第１実施形態では、関節角やモータ軸角度などのコンフィグレーション空間で指定されたデータではなく、手先位置データ（タスク空間で指定されたデータ）で補正処理を行っている。このため、高い位置精度で再現性よくワーク同士の組み付けを行うことが可能となり、物品の生産性が向上する。
【００６９】
また、第１実施形態では、差（補正量）ΔＰの算出に際し、出力軸エンコーダ１６の出力値からロボットアーム１００の実姿勢を算出するため、高い精度で差ΔＰを求めることができ、その結果、ロボットアーム１００の先端の位置決め精度が向上する。
【００７０】
また、セミクローズドループ制御方式でロボットアーム１００の各関節Ｊ１〜Ｊ６のモータ１をフィードバック制御するため、安定かつ高速なアーム動作が可能である。これにより、短時間での工程動作が可能である。
【００７１】
以上、第１実施形態によれば、ロボットアーム１００の先端を、高い精度で位置決めすることができ、かつ高速な動作が可能となる。これにより、精度の高い組立動作を短時間で実施することが可能となり、物品の生産性が向上する。
【００７２】
［第２実施形態］
第２実施形態に係るロボットによるロボット制御方法について説明する。生産ラインに配置されるロボットにおいては、ロボットアームに、一連の動作を繰り返し行わせて、繰り返し物品を製造させる。第２実施形態では、同じ組立作業を繰り返し実施する製造工程、すなわち連続運転を行う生産装置に適用する場合に好適である。図８および図９は、第２実施形態に係るロボット制御方法を示すフローチャートである。なお、第２実施形態におけるロボットの構成は、第１実施形態と同様であるため、説明を省略する。図８および図９のフローチャートの説明におけるロボットの構成要素については、適宜、図１〜図４を参照する。
【００７３】
図８は、一連の動作をロボットアームに行わせるときの１回目の組立工程のフローチャートであり、図９は、一連の動作をロボットアームに行わせるときの２回目の組立工程のフローチャートである。
【００７４】
図８に示すフローチャートから説明する。ステップＳ１０１に示す処理（教示工程）は、第１実施形態で説明した図５のステップＳ１の処理と同様である。図１に示す各教示点Ｐ１，Ｐ２，Ｐ３のデータには、ロボットアーム１００の目標姿勢のデータが対応付けられている。各データは、図４に示す各記憶部４１１，４１２に記憶される。
【００７５】
＜１回目の組立工程＞
図８に示すステップＳ１０２〜Ｓ１１０の処理は、第１実施形態で説明した図５のステップＳ２〜Ｓ１０の処理と同様である。ただし、第１実施形態では、差ΔＰが閾値以下に収束するまで、補正動作を繰り返したが、第２実施形態では、補正動作を１回のみ行う。
【００７６】
ＣＰＵ３０１は、教示点を補正するステップＳ１０８の処理を行った場合、補正後の教示点を、図４に示す補正教示点記憶部４１５に記憶させておく。補正教示点記憶部４１５に記憶された補正後の教示点のデータは、次回の（２回目の）組立工程で用いられる。以下、例えば教示点Ｐ２のデータが補正されたものとして説明する。
【００７７】
＜２回目の組立工程＞
１回目の組立工程後、必要であれば他の部品の組み付け等の一連の作業を実施した後、２回目の組立工程が行われる。図９に示すように、２回目の組立動作において教示点Ｐ２の位置にロボットアーム１００を動作させる際には、ＣＰＵ３０１は、補正教示点記憶部４１５から補正後の教示点Ｐ２のデータを取得する（Ｓ１２１）。その後のステップＳ１２２〜Ｓ１２０の処理は、図８のステップＳ１０２〜Ｓ１１０の処理と同様である。即ち、ＣＰＵ３０１が、再度、一連の動作をロボットアーム１００に行わせる際には、補正教示点記憶部４１５に記憶された教示点Ｐ２のデータに基づいてサーボ制御部２４０に指令値を指令する。
【００７８】
ＣＰＵ３０１は、教示点Ｐ２を補正するステップＳ１２８の処理を行った場合、補正後の教示点Ｐ２を、補正教示点記憶部４１５に記憶させておく。即ち、教示点Ｐ２のデータを更新する。補正教示点記憶部４１５に記憶された補正後の教示点のデータは、次回の（３回目の）組立工程で用いられる。
【００７９】
＜３回目以降の組立工程＞
３回目以降の組立工程では、２回目の組立工程と同様のフローで制御を行う。各組立工程において、補正教示点記憶部４１５に記憶された教示点が繰り返し更新されれば、差ΔＰは、閾値以下に収束し、精度が高まっていく。
【００８０】
第２実施形態によれば、物品を組み立てる一連の作業を繰り返して行う場合に、ロボットアーム１００の先端の位置決めを高い精度に保ちつつ、効率的に物品を製造することができる。
【００８１】
また、第２実施形態によれば、各回の組立工程の中で補正動作の回数を１回に限定している。したがって、１工程の時間に制約がある場合においても、組立工程を繰り返すことで、ロボットアーム１００の先端の位置決め精度が向上していく。結果として、効率的に部品組み立ての連続動作を実行可能である。
【００８２】
［第３実施形態］
第３実施形態に係るロボットによるロボット制御方法について説明する。第１及び第２実施形態では、教示点及び目標姿勢のデータが、ロボットアームの先端の位置を示すパラメータ、即ちタスク空間のデータである場合について説明した。第３実施形態では、教示点及び目標姿勢のデータが、コンフィグレーション空間のデータである場合について説明する。図１０は、第３実施形態に係るロボット制御方法を示すフローチャートである。なお、第３実施形態におけるロボットの構成は、第１実施形態と同様であるため、説明を省略し、以下、図１０のフローチャートの説明におけるロボットの構成要素については、適宜、図１〜図４を参照する。
【００８３】
まず、ステップＳ２０１において、上記第１実施形態の図５に示すステップＳ１と同様、教示を行うが、教示点のデータは、モータの回転角度を示すパラメータで設定され、目標姿勢のデータは、関節の回転角度を示すパラメータで設定される。このように、本実施形態において２つのデータは、コンフィグレーション空間のデータであるが、互いに異なるコンフィグレーション空間のデータである。
【００８４】
図１のロボットアーム１００が教示点Ｐ１の姿勢となっているものとし、教示点Ｐ１から教示点Ｐ２にロボットアーム１００の姿勢を変更する場合を例に説明する。図４のＣＰＵ３０１は、教示点Ｐ２のデータに基づいて、各モータ１の指令値（角度指令）を生成し（Ｓ２０２）、各サーボ制御部２４０に指令値を指令する（Ｓ２０３）。各サーボ制御部２４０は、入力軸エンコーダ１０の出力値と指令値との差分に基づいてモータ１をフィードバック制御（セミクローズドループ制御）する。これにより、ロボットアーム１００の先端におけるＴＣＰが教示点Ｐ２に近づくように、ロボットアーム１００の姿勢が変更される。
【００８５】
ステップＳ２０２，Ｓ２０３の処理について更に具体的に説明する。ＣＰＵ３０１は、ステップＳ２０２において、図４の教示点記憶部４１１から教示点Ｐ２のデータを読み出す。そして、ＣＰＵ３０１は、教示点Ｐ２におけるモータの回転角度を示すパラメータを、ロボットの順運動学計算により、ロボットアーム１００の先端の位置を示すパラメータに変換する。一方、ＣＰＵ３０１は、ロボットアーム１００を教示点Ｐ２に移動させる前の入力軸エンコーダ１０の出力値（現在値）を取得し、ロボットの順運動学計算を行い、参照姿勢データを算出する。
【００８６】
ＣＰＵ３０１は、参照姿勢データを示す現在値から教示点Ｐ２に移動する軌道を、補間処理を行って生成し、位置指令を算出する。軌道データは、指令周期ごとの位置指令からなるデータである。補間処理は、スプライン補間、直線補間、円弧補間、カム曲線補間などの任意の補間方法で補間することができる。
【００８７】
ＣＰＵ３０１は、位置指令をロボットの逆運動学計算により角度指令（モータ１の指令値）に変換し、この指令値をサーボ制御部２４０に指令する（Ｓ２０３）。このように、ステップＳ２０２，Ｓ２０３により、ＣＰＵ３０１は、教示点Ｐ２に基づいてサーボ制御部２４０に指令値を指令する。
【００８８】
ＣＰＵ３０１は、ロボットアーム１００の先端が整定したかどうかを判定する（Ｓ２０４）。このステップＳ２０４の処理は、図５のステップＳ４の処理と同様である。そして、ロボットアーム１００が整定したと判定した後、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値を取得し、出力軸エンコーダ１６の出力値に基づき、ロボットアーム１００の実姿勢を求める（Ｓ２０５）。このステップＳ２０５の処理は、図５のステップＳ５の処理と同様である。ＣＰＵ３０１は、ロボットアーム１００の実姿勢として、ロボットアーム１００の先端の実際の位置を求める。即ち、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６の出力軸エンコーダ１６の出力値に基づき、ロボットの順運動学計算により、ロボットアーム１００の先端の実際の位置を求める。
【００８９】
ＣＰＵ３０１は、ロボットアーム１００の実姿勢と、予め設定された目標姿勢との差（即ち補正量）ΔＰを算出する（Ｓ２０６）。このステップＳ２０６の処理は、図５のステップＳ６の処理と同様である。目標姿勢のデータは、目標姿勢記憶部４１２に予め記憶されている。差計算部４０２は、差ΔＰを計算する際に目標姿勢記憶部４１２から目標姿勢のデータを取得する。目標姿勢のデータは、関節の回転角度を示すパラメータで設定されている。したがって、ＣＰＵ３０１は、目標姿勢を、ロボットの順運動学計算により、ロボットアーム１００の関節の回転角度を示すパラメータからロボットアーム１００の先端の位置を示すパラメータに変換してから、差ΔＰを求める。
【００９０】
ＣＰＵ３０１は、差ΔＰの閾値判定を行う（Ｓ２０７）。このステップＳ２０７の処理は、図５のステップＳ７の処理と同様である。閾値は、予め設定された値である。ＣＰＵ３０１は、差ΔＰが閾値以下である場合（Ｓ２０７：ＮＯ）、ロボットアーム１００の先端の位置精度が十分得られているため、次の教示点Ｐ３へロボットアーム１００を高精度に移動させることができる。
【００９１】
ＣＰＵ３０１は、差ΔＰが閾値を超える場合（Ｓ２０７：ＹＥＳ）、差ΔＰに基づいて教示点Ｐ２を補正する（Ｓ２０８）。このステップＳ２０８の処理は、図５のステップＳ８の処理と同様である。補正した教示点Ｐ２のデータは、補正教示点記憶部４１５に記憶される。教示点Ｐ２のデータは、既にタスク空間のデータに変換されているため、そのまま差ΔＰで補正される。
【００９２】
次に、ＣＰＵ３０１は、現在の位置から補正後の教示点Ｐ２に移動するロボットアーム１００の軌道を生成する（Ｓ２０９）。このステップＳ２０９の処理は、図５のステップＳ９の処理と同様である。即ち、このステップＳ２０９では、ロボットアーム１００の先端の位置ずれ（差）を解消するための軌道を生成する。
【００９３】
次に、ＣＰＵ３０１は、位置指令からなる軌道データに対して逆運動学計算を施し、角度指令（指令値）を生成する。そして、ＣＰＵ３０１は、生成した指令値をサーボ制御部２４０に指令する（Ｓ２１０）。このステップＳ２１０の処理は、図５のステップＳ１０と同様である。また、差ΔＰが閾値以下に収束するまで補正動作を繰り返す処理も、第１実施形態と同様である。
【００９４】
以上、第３実施形態によれば、教示点及び目標姿勢のデータがコンフィグレーション空間のデータで作成されていても、順運動学計算によりタスク空間のデータに変換することで、第１実施形態と同様の補正動作を行うことができる。これにより、第１実施形態と同様、高精度にロボットアーム１００の先端を位置決めすることができる。
【００９５】
特に、教示点Ｐ１，Ｐ２，Ｐ３の順に動作させてワークＷ１をワークＷ２に組付けて物品を製造する場合に、教示点Ｐ２に到達した際に、出力軸エンコーダ１６を用いた補正動作を行うことが好ましい。この補正動作により教示点Ｐ２の位置でＴＣＰを高い精度で位置決めできるため、高い精度が要求される教示点Ｐ２から教示点Ｐ３への移動動作において、ワークＷ１とワークＷ２と間の干渉が起きにくくなる。これにより、組み付けの失敗を少なくすることができ、物品の生産性が向上する。
【００９６】
また、第３実施形態では、関節角やモータ軸角度などのコンフィグレーション空間で指定されたデータではなく、手先位置データ（タスク空間で指定されたデータ）で補正処理を行っている。このため、高い位置精度で再現性よくワーク同士の組み付けを行うことが可能となり、物品の生産性が向上する。
【００９７】
また、第３実施形態では、差（補正量）ΔＰの算出に際し、出力軸エンコーダ１６の出力値からロボットアーム１００の実姿勢を算出するため、高い精度で差ΔＰを求めることができ、その結果、ロボットアーム１００の先端の位置決め精度が向上する。
【００９８】
また、セミクローズドループ制御方式でロボットアーム１００の各関節Ｊ１〜Ｊ６のモータ１をフィードバック制御するため、安定かつ高速なアーム動作が可能である。これにより、短時間での工程動作が可能である。
【００９９】
以上、第３実施形態によれば、ロボットアーム１００の先端を、高い精度で位置決めすることができ、かつ高速な動作が可能となる。これにより、精度の高い組立動作を短時間で実施することが可能となり、物品の生産性が向上する。
【０１００】
なお、教示点のデータをコンフィグレーション空間のデータからタスク空間のデータに変換する処理は、軌道データを生成する前に行えばどのタイミングで行ってもよい。関節補間により軌道データを生成する場合には、教示点のデータはコンフィグレーション空間のデータでよいので、この場合については、教示点を補正する前に行えばよい。また、目標姿勢のデータをコンフィグレーション空間のデータからタスク空間のデータに変換する処理は、差を求める前に行えばどのタイミングで行ってもよい。例えば、ＣＰＵ３０１が各データを記憶部から読み出したときに、すぐに変換する処理を行ってもよい。また、第３実施形態において、第２実施形態と同様、各組立工程において補正動作の上限を１回として、組立動作（一連の動作）を繰り返す制御を行ってもよい。
【０１０１】
本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【０１０２】
上述の実施形態では、ロボットアーム１００が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアーム１００が、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【０１０３】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０４】
１…モータ、１０…入力軸エンコーダ（第１エンコーダ）、１１…減速機、１６…出力軸エンコーダ（第２エンコーダ）、１００…ロボットアーム、２３０…モータ制御装置（制御部）、３００…ロボット制御装置、３０１…ＣＰＵ（指令部）、３２０…プログラム、５００…ロボット
【図１】
2020015124.tif 000003
【図２】
2020015124.tif 000004
【図３】
2020015124.tif 000005
【図４】
2020015124.tif 000006
【図５】
2020015124.tif 000007
【図６】
2020015124.tif 000008
【図７】
2020015124.tif 000009
【図８】
2020015124.tif 000010
【図９】
2020015124.tif 000011
【図１０】
2020015124.tif 000012