(57)【特許請求の範囲】
【請求項１】
関節を動作させることによって、取得したワークの位置または姿勢を変更可能なロボット装置と、前記ワークの位置または姿勢を計測する計測装置と、を備えたロボットシステムの制御方法であって、
前記ロボットシステムは制御装置を備えており、
前記制御装置は、
前記計測装置の計測結果に基づき前記ワークの位置または姿勢を補正する場合において、補正後の目標位置として前記関節が取りうる位置の範囲外に前記関節を位置させた状態から、前記目標位置まで前記関節を一定方向に動作させる、
ことを特徴とする制御方法。
【請求項２】
請求項１に記載の制御方法において、
前記制御装置は、
前記ロボット装置により前記ワークを取得した際の前記関節の位置が、前記範囲に位置していた場合、前記範囲外に前記関節を位置させる、
ことを特徴とする制御方法。
【請求項３】
請求項１または２に記載の制御方法において、
前記制御装置は、
前記範囲外に前記関節を位置させた状態から、前記関節を一定方向に動作させながら、前記関節の位置が前記範囲に位置する前に、前記計測装置により前記ワークの位置または姿勢を計測し、前記関節を一定方向に動作させながら、前記ワークの位置または姿勢を補正する、
ことを特徴とする制御方法。
【請求項４】
請求項１から３のいずれか１項に記載の制御方法において、
前記制御装置は、
前記ワークの位置または姿勢を補正する際、前記関節を一定方向に動作させ、かつ前記関節のバックラッシュに相当する動作量以上動作させる、
ことを特徴とする制御方法。
【請求項５】
請求項１から４のいずれか１項に記載の制御方法において、
前記制御装置は、
前記ロボット装置により前記ワークが取得された状態における、前記ワークが取りうる位置または姿勢の誤差に基づき、前記範囲を取得する、
ことを特徴とする制御方法。
【請求項６】
請求項３に記載の制御方法において、
前記制御装置は、
前記範囲の最大値および最小値に基づき、前記計測装置により前記ワークの位置または姿勢を計測する際の前記関節の位置を取得する、
ことを特徴とする制御方法。
【請求項７】
請求項１から６のいずれか１項に記載の制御方法において、
前記ロボット装置に、
前記ワークが取得された状態において、前記ワークの位置または姿勢を一定の範囲に規制する規制手段が設けられている、
ことを特徴とする制御方法。
【請求項８】
請求項１から７のいずれか１項に記載の制御方法において、
前記制御装置は、
前記ワークの位置または姿勢を補正する際、前記ロボット装置と、他の物体とが干渉しないよう、干渉の可能性を演算する干渉演算を行う、
ことを特徴とする制御方法。
【請求項９】
請求項１から８のいずれか１項に記載の制御方法において、前記関節が回転関節によって構成されている、
ことを特徴とする制御方法。
【請求項１０】
請求項１から９のいずれか１項に記載の制御方法を実行させるための制御プログラム。
【請求項１１】
請求項１０に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１２】
関節を動作させることによって、取得したワークの位置または姿勢を変更可能なロボット装置と、前記ワークの位置または姿勢を計測する計測装置と、を備えたロボットシステムであって、
制御装置が、
前記計測装置の計測結果に基づき前記ワークの位置または姿勢を補正する場合において、補正後の目標位置として前記関節が取りうる位置の範囲外に前記関節を位置させた状態から、前記目標位置まで前記関節を一定方向に動作させる、
ことを特徴とするロボットシステム。
【請求項１３】
請求項１２に記載のロボットシステムにおいて、
前記ロボット装置に、
前記ワークが取得された状態において、前記ワークの位置または姿勢を一定の範囲に規制する規制手段が設けられている、
ことを特徴とするロボットシステム。
【請求項１４】
請求項１２または１３に記載のロボットシステムにおいて、
前記ロボット装置の教示を行う教示装置を備えており、
前記教示装置は、
前記ロボット装置により前記ワークを取得する際の前記関節の位置と、前記計測装置により前記ワークの位置または姿勢を計測する際の前記関節の位置とを入力する入力装置と、
前記入力装置で入力された、前記ロボット装置により前記ワークを取得する際の前記関節の位置と、前記計測装置により前記ワークの位置または姿勢を計測する際の前記関節の位置と、が前記範囲外であるか否かを出力する出力装置と、を備えた、
ことを特徴とするロボットシステム。
【請求項１５】
関節を動作させることによって、取得したワークの位置または姿勢を変更可能なロボット装置と、前記ワークの位置または姿勢を計測する計測装置と、を備えたロボットシステムを用いて物品の製造を行う物品の製造方法であって、
制御装置が、
前記計測装置の計測結果に基づき前記ワークの位置または姿勢を補正する場合において、補正後の目標位置として前記関節が取りうる位置の範囲外に前記関節を位置させた状態から、前記目標位置まで前記関節を一定方向に動作させ、前記ワークを他のワークに組み付ける、
ことを特徴とする物品の製造方法。
【請求項１６】
請求項１５に記載の物品の製造方法において、
前記制御装置は、
前記ロボット装置により前記ワークを取得した際の前記関節の位置が、前記範囲に位置していた場合、前記範囲外に前記関節を位置させる、
ことを特徴とする物品の製造方法。
【請求項１７】
請求項１５または１６に記載の物品の製造方法において、
前記制御装置は、
前記範囲外に前記関節を位置させた状態から、前記関節を一定方向に動作させながら、前記関節の位置が前記範囲に位置する前に、前記計測装置により前記ワークの位置または姿勢を計測し、前記関節を一定方向に動作させながら、前記ワークの位置または姿勢を補正する、
ことを特徴とする物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御方法、ロボットシステム、および物品の製造方法に関する。
【背景技術】
【０００２】
従来より、ロボットアームで把持した把持物を、被組付物に装着する組立操作が行われている。この種のロボットアームとしては、例えば複数の回転関節と、これらの回転関節で接続されたリンクから成る垂直多関節構成のものが知られている。また、この種のロボットアームの回転関節には、波動歯車機構などを利用した変速機と、サーボモータのような駆動源が用いられる。
【０００３】
上記の把持物と、被組付物は、例えば円（角）柱状の部材と対応する丸（角）孔、などのようにそれぞれ対応する形状の雄型および雌型の部材などが考えられる。また、把持物としてケーブル先端の（例えば雄型の）コネクタをロボットアームに把持させ、被組付物としての（例えば対応する雌型の）コネクタやレセプタクルに挿入、嵌合させるような操作も上記の組立操作に当る。
【０００４】
上記のような組立操作を精密に実行することが求められる場合には、ロボットアームで把持した把持物と被組付物の相対的な位置・姿勢（以下、「位置姿勢」とも記す）が設計通りになるように、両者の相対的な位置姿勢の誤差を補正する技術が知られている。
【０００５】
例えば、上記のコネクタのような把持物を把持させる場合、ロボットアーム先端のフィンガは必ずしも毎回、同一の相対位置姿勢（把持姿勢）で把持物を把持しているとは限らない。この場合、コネクタをレセプタクルなどに挿入する場合には、把持姿勢に応じてロボットアームの動作を変更ないし補正することによって、コネクタをレセプタクルに正対した状態で挿入することができる。
【０００６】
例えば、計測装置により把持物と被組付物の相対位置姿勢を計測し、センサで検出した相対位置姿勢から、初期の組付状態の相対位置姿勢に向かうロボット制御データを生成したり、あるいは生成済みのロボット制御データを補正したりする技術がある。その計測装置としては（デジタル）カメラのような視覚センサが用いられる。この種の技術においては、ロボット制御データは、例えば教示点リストのような形式で生成される。また、このような教示点の表現形式には、ロボットアームの基準位置（例えばアーム手先の１点など）を移動する３次元座標や、ロボットアームの複数の回転関節の回動角度（関節姿勢）を用いるものが知られている。
【０００７】
また、カメラ等の視覚センサを配置して、組付に先立ち把持物と被組付物の相対位置姿勢を計測する場合、センサと把持物ないし被組付物の相対位置姿勢（例えば撮影距離や撮影アングルなど）を制御する技術も知られている。例えば、組付に先立ち把持物と被組付物の相対位置姿勢を計測するに先立って、把持物と被組付物の組付位置姿勢を適切に測定できるようにカメラ等のセンサの位置を決定する制御を行う。
【０００８】
ここでカメラ等の視覚センサで検出した把持物と被組付物の相対位置姿勢に応じて、ロボットアームを動作させた時、あるタイミングでアームの回転関節の回転駆動方向を反転させるようなロボット制御データが生成（あるいは補正）されることがある。このような場合、アームの回転関節の減速機のバックラッシュの影響でヒステリシス誤差が発生し、ロボットアームの位置姿勢制御の精度が低下する可能性がある。
【０００９】
従来より、回転関節の減速機バックラッシュに起因するヒステリシス誤差を低減させるための技術が知られている。例えば、ロボットアーム制御において、ロボットの各関節軸の回転方向を判別し、関節の回転方向が反転する場合は減速機のバックラッシュ分に相当する補正動作を行わせるものがある（例えば下記の特許文献１）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平７−２０００１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記の特許文献１では減速機の補正すべきバックラッシュに相当する値に固定値を用いており、減速機の製造誤差や個体差に応じて生じるバックラッシュ分を補正できず、それほど高精度な制御を望めない問題がある。
【００１２】
本発明の課題は、上記の問題に鑑み、視覚センサのような計測装置で検出したロボットアーム、把持物や被組付物の相対位置姿勢に基づき、ロボットアームの動作を高精度に制御（ないし補正）できるようにすることにある。例えば、センサ検出後のアーム動作において、全てのロボットアームの回転関節を一定の方向に回転駆動することで実現されるようなアーム動作を行わせるようロボット制御データを制御（ないし補正）できるようにする。これにより、回転関節のバックラッシュに起因するヒステリシス誤差の影響を低減でき、高精度なロボット制御を実現できる。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明では、関節を動作させることによって、取得したワークの位置または姿勢を変更可能なロボット装置と、前記ワークの位置または姿勢を計測する計測装置と、を備えたロボットシステムの制御方法であって、前記ロボットシステムは制御装置を備えており、前記制御装置は、前記計測装置の計測結果に基づき前記ワークの位置または姿勢を補正する場合において、補正後の目標位置として前記関節が取りうる位置の範囲外に前記関節を位置させた状態から、前記目標位置まで前記関節を一定方向に動作させる構成を採用した。
【発明の効果】
【００１４】
上記構成によれば、ロボットアームが計測装置で計測を行う計測教示点から計測に基づき補正された組付教示点まで移動する時、ロボットアームの関節の駆動方向が一定駆動方向となるよう制御される。このため、ロボットアームの関節の駆動（伝達）系のバックラッシュに起因する位置姿勢制御の誤差に影響されることなく、把持物の位置姿勢を高精度に制御でき、精度の高い組付け操作を行うことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１のロボット装置の制御装置の機能ブロック図である。
【図２】本発明の実施例１のロボット装置の作業対象であるワークの概略構成を示した斜視図である。
【図３】本発明の実施例１のロボット装置のロボットハンドによるワーク操作の様子を示した斜視図である。
【図４】（ａ）〜（ｃ）は本発明の実施例１のロボット装置によるワーク操作の様子を示した斜視図である。
【図５】本発明の実施例１のロボット装置のロボットハンドによるコネクタとフレキシブルケーブルの取り扱いの様子を示した上面図である。
【図６】（ａ）〜（ｃ）は図５におけるコネクタとフレキシブルケーブルが取り得る異なる位置関係を示した上面図である。
【図７】本発明の実施例１のロボット装置のロボットハンド、およびワークを視覚センサにより計測する様子を示した斜視図である。
【図８】本発明の実施例１のロボット装置のロボットハンドに配置する位置姿勢の規制部材の構成例を示した斜視図である。
【図９】実施例１のロボット装置におけるロボット制御手順を示したフローチャート図である。
【図１０】実施例１のロボット装置における、ワークの位置姿勢のバラつき（ａ）において生じ得る組付補正範囲（ｂ）および補正可動範囲（ｃ）の計算例を示した説明図である。
【図１１】（ａ）〜（ｄ）は本発明の実施例１のロボット装置における視覚センサを用いた補正動作を含むワーク操作の様子を示した斜視図である。
【図１２】（ａ）、（ｂ）は本発明の実施例１において１つの関節軸の補正可動範囲および撮像領域を示す説明図である。
【図１３】ロボット装置の位置姿勢に関して逆運動学計算を実施する６４通りの組み合わせを示す表である。
【図１４】（ａ）、（ｂ）は本発明の実施例２において１つの関節軸の補正可動範囲および撮像領域を示す説明図である。
【図１５】実施例３のロボット装置におけるロボット制御手順を示したフローチャート図である。
【図１６】本発明を実施可能なロボット装置におけるティーチングペンダントにおけるユーザーインターフェースの構成例を示した説明図である。
【図１７】本発明を実施可能なロボット装置の概略構成を示す斜視図である。
【図１８】図１７のロボット装置の制御装置の構成例を示したブロック図である。
【発明を実施するための形態】
【００１６】
以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。なお、以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【実施例】
【００１７】
図１７は、本実施例に係るロボット装置の概略構成を示している。図１７に示すロボット装置３００は、例えば機械や電子機器の組立などの作業を行う産業ロボット装置として構成されている。図１７のロボット装置３００は、垂直６軸多関節構成のロボットアーム３０１と、ロボットアーム３０１を制御する制御装置２００と、制御装置２００に接続されたティーチングペンダント１３００、および視覚センサ５００を備えている。
【００１８】
ロボットアーム３０１は、ベース部１１０１上に組み立てられている。ロボットアーム３０１は、変位や力を伝達する複数のリンク１１２１〜１１２６を有する。リンク１１２１〜１１２６は、これらリンクを相互に旋回又は回転可能に連結する複数の関節Ｊ１〜Ｊ６によって直列的に接続されている。
【００１９】
ロボットアーム３０１の先端のリンク１１２６には、ロボットハンド３０２が連結されている。ロボットハンド３０２は、組立作業などの操作の対象物であるワークを把持し、操作するためのエンドエフェクタ（ツール）である。
【００２０】
本実施例では、位置姿勢の計測装置として配置した視覚センサ５００は、後述するようにロボットハンド３０２により把持した把持物（ワーク）の位置姿勢を計測するために用いる。視覚センサ５００は、例えばＣＭＯＳイメージセンサやＣＣＤイメージセンサなどの固体撮像素子を有するデジタルカメラにより構成することができる。
【００２１】
視覚センサ５００の配置は、ロボット装置３００の配置環境の天井などに固定したり、三脚、任意のペデスタル上に固定したりする手法によって行う。ただし、視覚センサ５００は必ずしも固定配置でなくても構わない。例えば、視覚センサ５００の撮影光軸（撮影領域）は、他の可動ステージやロボット装置（いずれも不図示）などによって可動（可変）制御されるような構成でもよい。ただし、視覚センサ５００は、後述のようにロボットハンド３０２により把持した把持物（ワーク）の位置姿勢を計測する時、把持物（ワーク）とその組付け対象の部材を含む周囲の映像を撮影できるよう、固定ないしは可動配置されるものとする。
【００２２】
また、計測装置としての視覚センサ５００は単眼視覚センサの他、対象物の位置姿勢を３次元的に測定可能なステレオ（複眼）視覚センサによって構成することもできる。また、本実施例の視覚センサ５００に相当する計測装置は、超音波、レーザ光、その他の測定媒体を介して対象物の位置姿勢を計測できるものであれば、レーザレンジファインダなど、任意の計測装置によって構成してよい。
【００２３】
図１７の関節Ｊ１〜Ｊ６は、サーボモータおよび変速機などから成る駆動系（詳細不図示）を介して駆動される。本実施例では、関節Ｊ１〜Ｊ６は回転関節であるものとするが、本発明に係る構成および制御手順はこれら関節の一部（または全部）が直動関節であっても実施可能である。関節Ｊ１〜Ｊ６の駆動系が回転駆動系である場合、この駆動系の回転駆動源としてはサーボモータなどが用いられ、その回転を変速（多くの場合減速）する変速（減速）機が駆動系（伝達系）に配置される。このようなロボットアームの関節では、減速機には、例えば小型軽量で減速比の大きい波動歯車減速機が好適に用いられる。
【００２４】
関節Ｊ１〜Ｊ６の駆動系に用いられる変速（減速）機が歯車機構で構成される場合、上述のように、このような伝達系にはバックラッシュのような伝達誤差が存在する。多くの場合、この種の変速（減速）機を含む伝達系では、バックラッシュによって入力端と出力端の間に伝達誤差が生じる。
【００２５】
特に、この種の歯車伝達系のバックラッシュに起因するこの伝達誤差はヒステリシス特性を有する。例えば、関節Ｊ１（〜Ｊ６）の変速（減速）機の入力端のモータの駆動量（回転角度ないし回転数）が一定であっても、順方向と逆方向の駆動方向で出力端の駆動量（例えば回転角度）に差異が生じる。逆に、このような入力〜出力端の非線型特性は、関節の駆動方向が一定方向で続く間は生じることがない。
【００２６】
図１７の制御装置２００は、例えば図１８のように構成することができる。図１８の制御系は、汎用マイクロプロセッサなどから成るＣＰＵ１２０１、ＲＯＭ１２０２、ＲＡＭ１２０３、外部記憶装置１２０４、インターフェース１２０５、１２０７、１２０８、ネットワークインターフェース１２０６などから構成される。また、図１８の制御系には、ＲＴＣ１２０９（リアルタイムクロック）が設けられている。このＲＴＣ１２０９は、後述の制御において必要に応じて計時処理などのために用いることができる。
【００２７】
ＲＯＭ１２０２は、例えば後述するアクセス制御プログラムと制御データを格納するために用いられる。なお、ＲＯＭ１２０２に格納したアクセス制御プログラムと制御データを後から更新（アップデート）できるよう、そのための記憶領域はＥ（Ｅ）ＰＲＯＭなどの記憶デバイスによって構成されていてもよい。ＲＡＭ１２０３は、ＤＲＡＭ素子などから構成され、ＣＰＵ１２０１が各種の制御、処理を実行するためのワークエリアとして用いられる。後述するロボットアーム３０１の制御手順に係る機能は、ＣＰＵ１２０１が本実施例のアクセス制御プログラムを実行することにより実現される。
【００２８】
外部記憶装置１２０４は、例えばＳＳＤやＨＤＤのディスク装置で構成される。外部記憶装置１２０４は、ロボット制御プログラムや教示点データ、あるいは後述するアクセス制御プログラムなどをファイル形式で格納することができる。なお、外部記憶装置１２０４は、着脱式の各種光ディスクのような記録媒体、あるいは、着脱式のＳＳＤやＨＤＤのディスク装置、着脱式のフラッシュメモリから構成されていてもよい。このような各種の着脱式のコンピュータ読み取り可能な記録媒体は、例えば、本発明の一部を構成するアクセス制御プログラムをＲＯＭ１２０２（Ｅ（Ｅ）ＰＲＯＭ領域）にインストールしたりアップデートするために用いることができる。この場合、各種の着脱式のコンピュータ読み取り可能な記録媒体は、本発明を構成する制御プログラムを格納しており、記録媒体それ自体も本発明を構成することになる。
【００２９】
ＣＰＵ１２０１は、ＲＯＭ１２０２（あるいは外部記憶装置１２０４）に格納された生産制御プログラム、ロボット制御プログラム、ファームウェア、アクセス制御プログラムなどを実行する。これにより、例えば図１に示す制御装置２００の各機能ブロックが実現される。
【００３０】
また、図１８において、制御装置２００には、インターフェース１２０７、１２０８が設けられている。例えばインターフェース１２０８は、ロボットアーム３０１との通信制御に用いられる。ＣＰＵ１２０１は、インターフェース１２０８を介して所定の信号形式によって制御信号を送信することにより、教示済みのロボットプログラムなどに応じたロボット動作をロボットアーム３０１に実行させることができる。また、インターフェース１２０７は、ティーチングペンダント１３００のような教示装置（あるいは他のロボット制御装置）との通信に用いられる。これらのインターフェース１２０７、１２０８は、上述のような任意の通信インターフェース（例えばパラレルないしシリアル通信インターフェース）により構成される。
【００３１】
ネットワークインターフェース（ＮＩＦ）１２０６は、他の制御端末（不図示）や、他のロボット制御装置、ネットワーク上のサーバなどと通信するために用いられる。このネットワークインターフェース１２０６では、有線、無線接続によるネットワーク通信方式、例えば有線接続ではＩＥＥＥ８０２．３、無線接続ではＩＥＥＥ８０２．１１、８０２．１５のような通信方式を用いることができる。なお、ロボットアーム３０１やロボット操作装置（ティーチングペンダント１３００など）との通信は、全てネットワークインターフェース１２０６を経由して行うようにしてもよい。
【００３２】
図１７のロボット装置３００には、ロボットアーム３０１を動作させるための教示点を教示する教示装置として、ティーチングペンダント１３００が設けられている。ティーチングペンダント１３００は、ステップ操作やジョグ操作といった操作方式で操作可能なキーボード（あるいはタッチパネルや操作ダイヤルなど）を有する。ティーチングペンダント１３００は、例えば、実際の設置環境においてロボットアーム３０１の動作をプログラム（教示）したり、あるいは教示済みのロボット制御データ（ロボットプログラム）を修正したりするために利用できるよう構成される。
【００３３】
図１６は、ティーチングペンダント１３００の操作面の構成例を示している。図１６のティーチングペンダント１３００の操作面には、例えばロボットアーム３０１の関節Ｊ１〜Ｊ６をそれぞれ＋および−方向に回動させるために用いられる操作キー１３０１、１３０２が配置されている。また、ティーチングペンダント１３００の操作面の中央部は、タッチパネル１３０３によって構成されている。このタッチパネル１３０３はＬＣＤディスプレイ上に、タップ（タッチ）、スワイプ（ドラッグ）のような操作入力を受け付ける操作パネルを配置したものである。タッチパネル１３０３では、例えばそのＬＣＤディスプレイにキーボード状のような表示を行い、その表示区画を操作者に直接操作させる、といったユーザーインターフェースを構成することができる。図１６のティーチングペンダント１３００のタッチパネル１３０３では、１３０４、１３０５、１３０６、１３０７のような符号で示す表示出力ないしは操作ボタン状の表示を行っている。図１６のタッチパネル１３０３のこれらの表示により構成されるユーザーインターフェースについては後述のロボット制御に関して説明する。
【００３４】
図２は、ロボットアーム３０１の把持装置、例えばロボットハンド３０２による組立（組付）操作の対象であるワーク８００の一例を示している。
【００３５】
図２の例では、作業対象のワーク８００は、基板１５と、基板１５に基端部１４が取り付けられたコネクタ付きケーブル２１と、コネクタ１６とを有する。なお、この例では、コネクタ付きケーブル２１は基板１５から引き出されているが、他の部材（不図示）から引き出されていても構わない。
【００３６】
コネクタ付きケーブル２１は、ケーブル１１と、ケーブル１１の先端部に形成されたケーブル側コネクタであるコネクタ１２とを有している。つまり、コネクタ付きケーブル２１の長手方向の先端部１３が、コネクタ１２を構成している。ケーブル１１は、例えば（フレキシブル）フラットケーブルなどから成るものとする。
【００３７】
このような構成において、コネクタ付きケーブル２１の長手方向の先端部１３をコネクタ１６に接続する作業の例を図３に示す。例えば、ロボットアーム３０１のロボットハンド３０２は、その先端に把持操作のための一対のフィンガー（３０３、３０４：図３）を備えるものとする。
【００３８】
上記構成において、制御装置２００は、ロボットハンド３０２のフィンガー３０３、３０４で把持した後、コネクタ付きケーブル２１側のコネクタ１２を、基板１５側のコネクタ１６に接続する操作は、例えば図４（ａ）〜（ｃ）に示すように制御する。
【００３９】
まず、図４（ａ）に示すようにロボットハンド３０２のフィンガー３０３、３０４でコネクタ付きケーブル２１の長手方向の先端部１３を把持する。この時、フラットケーブルなどから成るケーブル１１が図示のような直線状の姿勢（形状）であるとすれば、図４（ｂ）のような操作が必要になる。この場合、制御装置２００は図４（ｂ）のようにロボットハンド３０２で把持したコネクタ１２（コネクタ付きケーブル２１の先端部１３）の姿勢を回転させ、コネクタ１６の方を向くようロボットアーム３０１を制御する。
【００４０】
その後、図４（ｃ）のようにコネクタ１６に係合（嵌合、差し込み等）させる。この時、コネクタ１２、１６を係合させる際に、両者の凸部、凹部が整合するようにコネクタ１２（先端部１３）の位置姿勢を制御する必要がある。
【００４１】
即ち、図５に示すように、コネクタ１６の挿入方向に対し、コネクタ１２（先端部１３）の位置姿勢を整合させる必要がある。より具体的には、コネクタ１６の中心２３（中心軸）と、コネクタ付きケーブル２１の長手方向の先端部１３の中心２２（中心軸）を整合させる必要がある。なお、図５の左上には、ロボット装置３００で行う組立制御に用いられるＸＹ座標系の１つを示してある。このＸＹ座標系は、例えば基板１５の配置されている平面とほぼ平行なグローバル座標系である。
【００４２】
好ましくは、図５に示すようにコネクタ１６にコネクタ１２を位置（姿勢）合せする際、視覚センサ５００のような計測装置を用いた計測結果を用いて、把持物（コネクタ１２（コネクタ付きケーブル２１の先端部１３））の位置姿勢を補正する。例えば、把持物（コネクタ付きケーブル２１の先端部１３）をロボットで把持した時、把持物（コネクタ付きケーブル２１の先端部１３）の位置姿勢は図６（ａ）のようにコネクタ１６に対する理想的な位置関係であるとは限らない。即ち、ロボットハンド３０２で把持した時、把持物（コネクタ付きケーブル２１の先端部１３）の把持位置（姿勢）は図６（ｂ）や（ｃ）のようにバラついている可能性がある。ここでは、主に把持物（コネクタ付きケーブル２１の先端部１３）の傾きのみを図示しているが、場合によってはロボットハンド３０２のフィンガー（３０３、３０４）が把持する部位にずれが生じている場合もある。このような把持位置（姿勢）の誤差は、コネクタ付きケーブル２１の製造誤差や、組付け位置、ケーブル１１の曲げやねじれなどの個体差の影響によって生じる。
【００４３】
図７は、例えば図４（ｂ）の位置姿勢でロボットハンド３０２によりコネクタ１２を把持した状態で、視覚センサ５００によって、映像を撮影する様子を示している。また、図１１（ａ）〜（ｄ）は、図４（ａ）〜（ｃ）と同等のコネクタ組付操作を行う時に視覚センサ５００の計測（撮像）結果を用いた把持物（コネクタ１２ないしコネクタ付きケーブル２１の先端部１３）の位置姿勢補正処理を作用させる様子を示している。
【００４４】
図１１（ａ）、（ｂ）は図４（ａ）、（ｂ）の状態にそれぞれ対応する。ここでは、特に、図１１（ｂ）に示すようにコネクタ１２、即ちコネクタ付きケーブル２１の長手方向の先端部１３の中心２２（中心軸）は、コネクタ１６の中心２３（中心軸）に対して傾斜しており、両軸は整合（一致）していない。この例では、ロボットハンド３０２のフィンガー（３０３、３０４）に対して、把持されているコネクタ１２が水平（ＸＹ）平面内で傾斜するとともに、コネクタ１２の先端が下方を向くように傾斜している。また、これ以外にも高低（Ｚ軸）方向にロボットハンド３０２ないしコネクタ１２の位置姿勢誤差が生じている場合もある。
【００４５】
図１１（ｂ）において、視覚センサ５００で撮像した画像を用いて、制御装置２００はロボットハンド３０２で把持しているコネクタ１２の位置姿勢、例えば中心２２の位置姿勢を演算することができる。そして、制御装置２００は、視覚センサ５００で撮像した画像の解析結果を用いて、この後、図１１（ｃ）〜（ｄ）とコネクタ１２、１６の両者を係合させる時のロボットアーム３０１の位置姿勢の制御を補正することができる。
【００４６】
例えば、図１１（ｃ）はコネクタ１６の中心２３と、コネクタ１２の中心２２がほぼ整合した状態となるよう、ロボットアーム３０１の位置姿勢が補正されている。その後、図１１（ｄ）に示すようにロボットアーム３０１でコネクタ１２をコネクタ１６の方向に押し込むことにより、組付け工程、即ちコネクタ１２、１６の接続工程が完了する。
【００４７】
ここで、制御装置２００が視覚センサ５００で撮像した画像の解析結果を用いて補正したコネクタ１２、１６の両者を係合させる時のロボットアーム３０１の動作（図１１（ｃ）〜（ｄ））において、上述の位置姿勢の制御誤差が生じる可能性がある。例えば、視覚センサ５００による撮像（計測）を行う時のロボットアーム３０１の位置姿勢によっては、補正されたロボットアーム３０１の動作中に、特定の関節（Ｊ１〜Ｊ６）の回転に反転（正逆転）が生じるような補正が行われる可能性がある。
【００４８】
視覚センサ５００による撮像（計測）を行う時のタイミングは、例えばティーチングペンダント１３００によって操作者（作業者）が行った操作に基づき、決定することができる。あるいはティーチングペンダント１３００の特定操作を契機として制御装置２００が自動的に決定する。
【００４９】
ところが、上記いずれの撮像制御においても、視覚センサ５００による撮像（計測）に応じて、ロボットアーム３０１の特定の関節（Ｊ１〜Ｊ６）の回転に反転（正逆転）が生じるような補正が行われた場合、上述の位置姿勢の制御誤差が生じる可能性がある。この位置姿勢の制御誤差は、上述の通り、ある関節（Ｊ１〜Ｊ６）の反転（正逆転）によって発生する当該関節の駆動（伝達）系のバックラッシュに起因するものである。もし、このバックラッシュに起因する位置姿勢の制御誤差が生じた場合は、甚しい場合はコネクタ１２、１６の接続操作が失敗したり、無理なコネクタ挿入操作が行われて正常な接続状態が完成しない可能性などがある。
【００５０】
そこで、本実施例では、視覚センサ５００による撮像（計測）に応じて行うロボットアーム３０１の位置姿勢制御の補正において、関節（Ｊ１〜Ｊ６）の反転（正逆転）に起因する位置姿勢の制御誤差が生じないような補正動作を行える構成を示す。
【００５１】
ここで、視覚センサ５００による撮像（計測）に応じて行うロボットアーム３０１の位置姿勢制御の補正は、当然ながら視覚センサ５００による撮像（計測）が行なわれた時の把持物（ないしアーム）の位置姿勢に応じて行われる。そこで、本実施例では、視覚センサ５００による撮像（計測）タイミング、ないしはその際の把持物（ないしアーム）の位置姿勢を制御する。これにより、その後の補正によって実行される補正動作において、各関節（Ｊ１〜Ｊ６）の反転（正逆転）が生じないような補正動作を生成することができる。
【００５２】
即ち、本実施例において、ロボット装置３００は、関節によって位置または姿勢を変更可能な把持装置（ロボットハンド３０２）を備えたロボットアーム３０１を有する。また、ロボット装置３００は、把持装置（ロボットハンド３０２）によって保持した把持物（コネクタ１２）の位置または姿勢を計測教示点において計測する計測装置（視覚センサ５００）を備える。
【００５３】
ロボット装置３００の制御装置２００は、前記計測装置による計測結果に基づき補正された組付教示点において把持物（コネクタ１２）をその組付対象の被組付物（コネクタ１６）に組付ける際の位置または姿勢を制御する。そして、本実施例の制御方法では、制御装置２００は、前記の計測教示点から組付教示点までの関節（Ｊ１〜Ｊ６）の駆動方向が一定駆動方向となるよう前記計測教示点を決定する計測教示点決定工程を実行する。
【００５４】
また、ロボット装置３００の制御装置２００は、ロボットアーム３０１によって計測教示点に先立ちロボットハンド３０２で把持した把持物（コネクタ１２）を経由させる計測前教示点を取得する（計測前教示点決定工程）。この計測前教示点決定工程では、当該の計測前教示点から視覚センサ５００で計測を行う計測教示点までの関節の駆動方向が一定駆動方向となるよう計測前教示点を決定する。本実施例では、この計測前教示点決定工程で決定した計測前教示点を経由して前記把持物を計測教示点に移動させる。
【００５５】
以下、ロボット装置３００において、上記の如く、ロボットアーム３０１の各関節（Ｊ１〜Ｊ６）の反転（正逆転）が生じない補正動作を生成できるよう計測教示点（視覚センサ５００で計測を行う教示点）を決定する制御につき、さらに詳細に説明する。
【００５６】
ワーク８００、即ち、コネクタ付きケーブル２１、コネクタ付きケーブル２１が取り付けられた基板１５、およびコネクタ１２の接続対象となるコネクタ１６を有するワーク８００は、不図示の供給ないし搬送手段により、作業台２０上に順次供給される。
【００５７】
これらワーク８００は、作業台２０上に粗い精度で位置決めされる。従って、コネクタ付きケーブル２１（ケーブル１１）の基端部１４（根元）およびその近傍の制御位置は、ほぼ一定に制御することができる。しかしながら、コネクタ付きケーブル２１の先端部１３に近付くにつれ、ケーブル１１の曲げや、ねじれなどの影響で、位置のばらつきが大きくなる。そのため、ワーク８００の基板１５が作業台２０上で位置決めされていても、把持前のコネクタ付きケーブル２１の先端部１３の位置及び姿勢は図６の（ｂ）や（ｃ）で示すように、比較的広範囲に渡って変化する可能性がある。なお、この点を考慮して、ロボットハンド３０２は、コネクタ付きケーブル２１の基端部１４付近の中途部位を挟持するよう用いる。そして、この挟持（把持）状態でコネクタ付きケーブル２１に対してロボットハンド３０２を滑らせながらコネクタ付きケーブル２１のコネクタ１２まで移動することができるようなクリアランスをもった挟み量とすることが考えられる。
【００５８】
また、視覚センサ５００の計測後の補正動作を一定の可動範囲に規制するため、また、特に計測後の補正動作において、特定の関節（Ｊ１〜Ｊ６）の正逆転が生じるような可能性を低減することを考える。例えば、把持装置（ロボットハンド３０２）で把持された状態における、把持物（コネクタ１２）の同把持装置に対する位置姿勢の誤差の範囲を一定の範囲に規制する規制手段を設けることが考えられる。
【００５９】
例えば、ロボットハンド３０２のフィンガー３０３、３０４で把持する時、コネクタ付きケーブル２１の先端部１３が取り得る位置姿勢のバラつきがある誤差範囲に収まるように図８に示すような規制手段を用いることができる。
【００６０】
図８の構成では、ロボットハンドのフィンガー３０３、３０４に突起３０５、３０６のような位置姿勢の規制部材を設けている。これにより、フィンガー３０３、３０４で把持した把持物、例えばコネクタ１２ないしコネクタ付きケーブル２１の先端部１３のフィンガー（ないしロボットアーム３０１やロボット全体）に対する位置姿勢のバラつきを抑制することができる。図８のような規制手段を設けることにより、先端部１３を挿入する際の先端部１３のロボット装置３００に対するバラつきを予め所定の誤差範囲に規制でき、後述するロボット制御のための制御の負担を軽減することができる。
【００６１】
また、ロボットハンド３０２には、コネクタ１２をコネクタ１６に接続する動作中に、フィンガー３０３、３０４間で挟持したコネクタ１２（またはコネクタ付きケーブル２１の一部）が滑らないよう把持できるような構成を設けるのが好ましい。例えば、フィンガー３０３、３０４の対向面をラバー素材などの高摩擦係数を有する材質から構成することが考えられる。これにより、ロボットアーム３０１によってフィンガー３０３、３０４の姿勢を変更する動作の間に、コネクタ付きケーブル２１の先端部１３と、フィンガー３０３、３０４の相対的な位置姿勢がずれてしまうのを防止、ないしは抑制できる。
【００６２】
なお、当然ながら、視覚センサ５００は、コネクタ付きケーブル２１のコネクタ１２とロボットハンド３０２コネクタ１６を同時に撮像（計測）できる計測範囲（例えば画角）を有するものとする。
【００６３】
ロボットアーム３０１の各関節（Ｊ１〜Ｊ６）の反転（正逆転）が生じない補正動作を生成できるように視覚センサ５００による計測教示点を決定するため、例えば制御装置２００の制御機能を図１に示すような各機能により構成することが考えられる。図１では、図１７のロボットアーム３０１、ロボットハンド３０２を有するロボット装置３００を１つのブロックで示してある。図１の各制御ブロックの機能は、ハードウェア的な構成（Ｗ１）を除けば、制御装置２００の記憶手段（ＲＯＭ１２０２、ＲＡＭ１２０３）ないし（ＣＰＵ１２０１の）演算機能によって構成される。
【００６４】
本実施例のロボット制御では、計測前教示点から計測教示点、さらに組付教示点を通り、ロボットハンド３０２で把持した物体（コネクタ１２）と、被組付物（コネクタ１６）との相対的な位置姿勢を補正する制御を行う。
【００６５】
ここで、「教示点」とは、ロボットハンド３０２を含むロボットアーム３０１の全体の位置姿勢に相当する物理量ないし制御情報をいう。このような教示点は、ロボットの基準部位（基準点）、例えば、ロボットアーム３０１に対してロボットハンド３０２が装着されるフランジ面の中心（中心軸）の位置姿勢などによって表現される場合がある。上記の「教示点を通り…」のような表現においては、上記のようなロボットの基準部位（基準点）がその各教示点の位置姿勢を通過する、という意味になる。また、ティーチングペンダント１３００による「教示」操作では、上記の基準部位（基準点）の位置姿勢をティーチングペンダント１３００（図１７）に配置したジョグボタン（詳細不図示）のような操作手段を介して移動させるような操作方式が用いられる。
【００６６】
ロボットの基準部位（基準点）がある教示点に相当する位置姿勢を取る時、その位置姿勢は、各関節（Ｊ１〜Ｊ６）の軸値（回転関節の場合は回転角度）によって定まる。例えば、制御装置２００は、各関節（Ｊ１〜Ｊ６）の軸値からいわゆる運動学計算を行うことにより、対応する教示点、即ちロボットの基準部位（基準点）が占める位置姿勢を取得される。逆に、制御目標である教示点、即ちロボットの基準部位（基準点）が占める位置姿勢を実現するための各関節（Ｊ１〜Ｊ６）の軸値は、教示点からいわゆる逆運動学計算を行うことにより取得される。なお、各関節（Ｊ１〜Ｊ６）の軸値に基づき運動学計算を行うことによりある教示点は一義に定まる。逆に、垂直多軸構成のロボットアームでは、ある教示点を実現するために逆運動学計算によって求められる各関節（Ｊ１〜Ｊ６）の軸値の組合せは必ずしも１つとは限らない。
【００６７】
本実施例の制御方式は、例えば図１に示すようなＷ１〜Ｗ１０のようなブロック図示で示した機能によって構成される。
【００６８】
図１において、Ｗ１は、ロボット装置３００で把持した把持物（例えばコネクタ１２）を移動する移動手段に相当する。この移動手段Ｗ１は、例えば、ロボットアーム３０１の各関節（Ｊ１〜Ｊ６）や、ロボットハンド３０２のフィンガー３０３、３０４の駆動源（例えばサーボモータなど）によって構成される。
【００６９】
また、Ｗ２は把持物（コネクタ１２）の位置または姿勢、またはその両方を計測する計測装置である。この計測装置Ｗ２は、本実施例の場合、視覚センサ５００に相当する。
【００７０】
また、Ｗ３は、把持物（コネクタ１２）のロボットハンド３０２に対する把持状態における相対的な位置姿勢の最大および最小誤差範囲を入力する手段である。ここでは便宜上、「入力」という表現を用いているが、この手段Ｗ３は、例えばＲＯＭ１２０２などに用意された仕様情報のテーブルデータなどであってもよい。この手段Ｗ３は後述の図９ではステップＳ１００に相当する。また、ここで、例えば、上記のように把持物（コネクタ１２）のロボットハンド３０２に対する把持状態における相対的な位置姿勢を規制するために図８の突起３０５、３０６のような規制手段を配置することができる。この場合、図８の突起３０５、３０６のような規制手段の物理的な寸法ないし形状情報に基づき、把持物（コネクタ１２）のロボットハンド３０２に対する把持状態における相対的な位置姿勢の最大および最小誤差範囲を予め計算することができる。そして、このようにして求めた把持物（コネクタ１２）のロボットハンド３０２に対する把持状態における相対的な位置姿勢の最大および最小誤差範囲をＲＯＭ１２０２などに格納しておく。
【００７１】
図８のような把持物（コネクタ１２）のロボットハンド３０２に対する把持状態における相対的な位置姿勢の最大および最小誤差範囲を規制する規制手段を設けることにより、後述の補正可動範囲を取得する際の制御装置２００の演算量を削減することができる。
【００７２】
また、Ｗ４は、把持物の位置（姿勢）誤差がない場合にロボットアーム３０１を移動させる教示点（例えば図１１（ｃ））、計測教示点（例えば図１１（ｂ））、ないし計測前教示点としての経由点（例えば図１１（ａ））を取得する手段である。この手段Ｗ４は、例えば、ティーチングペンダント１３００によって、操作者（作業者）が行う上記各教示点を教示する教示操作によって実現することができる。ただし、ワーク８００の工作精度や、ワーク８００の搬送（供給）精度、ロボットアーム３０１の制御精度などの仕様の範囲によっては、上記各教示点はＲＯＭ１２０２に予め設定情報として格納されていてもよい。この手段Ｗ４は後述の図９ではステップＳ２００に相当する。
【００７３】
また、Ｗ５は、手段Ｗ３における把持物（コネクタ１２）の位置姿勢の最大および最小誤差の範囲に対応して、組付教示点（例えば図１１（ｃ））において、補正動作後にロボットアーム３０１の取る位置姿勢を求める手段である。
【００７４】
また、Ｗ６は、ロボットアーム３０１の特定の位置姿勢（教示点）におけるロボットアーム３０１の各関節（Ｊ１〜Ｊ６）の軸値を求める手段である。この手段Ｗ６は、例えば、制御装置２００のＣＰＵ１２０１がロボットアーム３０１の特定の位置姿勢（教示点）に基づき、各関節（Ｊ１〜Ｊ６）の軸値（回転関節の場合、その回動角度）を計算（逆運動学計算）することにより実現される。この手段Ｗ６は後述の図９ではステップＳ４００に相当する。
【００７５】
また、Ｗ７は、ロボットアーム３０１の各関節（Ｊ１〜Ｊ６）について、その軸値（回転関節の場合、その回動角度）の取り得る補正可動範囲を求める手段である（補正可動範囲取得工程）。この補正可動範囲とは、把持物（コネクタ１２）の位置姿勢の最大および最小誤差の範囲（手段Ｗ３）に対応して、誤差がない場合のロボットアーム３０１の移動先の教示点（図１１（ｃ））までに特定の関節（Ｊ１〜Ｊ６）の取り得る軸値の範囲に相当する。この手段Ｗ７は、制御装置２００のＣＰＵ１２０１が、上記最大および最小誤差の範囲、および誤差がない場合のロボットアーム３０１の移動先の教示点（図１１（ｃ））に応じて計算する。この手段Ｗ６は後述の図９のステップＳ６００に相当する。
【００７６】
この時、ＣＰＵ１２０１は、例えば、上記最大および最小誤差の範囲、および誤差がない場合のロボットアーム３０１の移動先の教示点（図１１（ｃ））が判明していれば、ロボットをその教示点まで移動させる軌道上にある教示点のリストを取得できる。取得した教示点のリストは、バイナリツリーやグラフデータを格納する場合と同様に、例えばリンクト・リストのような形式でＲＡＭ１２０３に格納しておくことができる。ＣＰＵ１２０１は、この誤差がない場合のロボットアーム３０１の移動先の教示点（図１１（ｃ））に向かう教示点のリストを参照し、各教示点に対応するある関節（Ｊ１〜Ｊ６）の取り得る軸値を手段Ｗ６の逆運動学計算により求めることができる。そして、誤差がない場合のロボットアーム３０１の移動先の教示点（図１１（ｃ））に向かう動作において、当該関節（Ｊ１〜Ｊ６）の取り得る軸値の範囲をその関節の補正可動範囲として取得する。ただし、この補正可動範囲は、対応するロボットアーム３０１の教示点の軌道が、当該関節の１方向の回転駆動のみによって実現されるもののみを取得する。もし、逆運動学計算（Ｗ６）によって、教示点軌道中で特定の関節の正逆転が生じるような場合は、教示点のリスト中にあるその教示点軌道は補正可動範囲の取得対象から除外するものとする。
【００７７】
また、Ｗ８は、特定の経由点、例えば計測前教示点に相当する各関節（Ｊ１〜Ｊ６）の軸値が補正可動範囲（Ｗ７）内に存在するか否かを判定する判定手段である。この判定手段Ｗ８は後述の図９のステップＳ７００、Ｓ８００に相当する。
【００７８】
また、Ｗ９は、特定の教示点、例えば計測前教示点に相当する各関節（Ｊ１〜Ｊ６）の軸値が補正可動範囲内（Ｗ７）に存在する場合（Ｗ８）の制御機能に相当する。このＷ９は、計測前教示点から組付教示点（図１１（ｃ））との移動の間に各軸値が補正可動範囲外となる範囲に新たに教示点を設け、該教示点を計測教示点の１つ前の計測前教示点と決定する制御手段である。この制御手段Ｗ９は後述の図９のステップＳ１０００、Ｓ１１００に相当し、これらのステップにおける「経由点」が上記の「計測教示点の１つ前の計測前教示点」に相当する。
【００７９】
また、Ｗ１０は、計測前教示点（Ｗ９）と組付教示点（図１１（ｃ））との移動の間に各軸値が補正可動範囲外となる範囲に新たに教示点を設け、該教示点を視覚センサ５００で計測を行うべき計測教示点とする手段である。この手段Ｗ１０は後述の図９のステップＳ１２００に相当する。
【００８０】
図９は本実施例において、上記の図１の各制御機能（Ｗ１〜Ｗ１０）を実現するためのロボット制御手順の一例を示している。図９の制御手順は、制御装置２００が実行可能な制御プログラムとして、ＲＯＭ１２０２（あるいは外部記憶装置１２０４）に格納しておくことができる。以下、図９の制御手順につき詳細に説明するが、ロボットアーム３０１で取り扱うワーク８００は図２〜図７のような構成を前提とする。また、ロボットハンド３０２には、好ましくは図８に示したような把持物（コネクタ１２）の位置姿勢のバラつき（誤差範囲）を抑制する規制手段を配置する。
【００８１】
図９のステップＳ１００において、制御装置２００のＣＰＵ１２０１は、コネクタ１６の中心２３に対するコネクタ付きケーブル２１の先端部１３の中心２２の位置姿勢の誤差範囲（図５、図６（ａ）〜（ｃ））を設定する。このワーク（８００）の誤差範囲は、コネクタ付きケーブル２１の製品誤差や組付精度、位置決め精度などから求めた値をＲＯＭ１２０２などに格納しておき、この値をＣＰＵ１２０１が読み出す。このワーク（８００）の誤差範囲は、例えば、図１０（ａ）のようにＸＹＺ３軸に係る座標情報とこれら３軸廻りの回転両の情報、即ちＸ、Ｙ、Ｚ（位置情報１４０１：ｍｍ単位）、ｒＸ、ｒＹ、ｒＺ（姿勢情報１４０２：（角）度単位）により表現されている。なお、ロボットハンド３０２に図８のような規制手段を配置している場合は、例えば１軸ないし２軸廻りの誤差がほぼ＋（あるいは−）側に発生しないよう規制することができる。このため、図８のような規制手段を設けている場合には、ＲＯＭ１２０２には規制手段に対応して規制された誤差範囲を格納され、その範囲の値が用いられるものとする。
【００８２】
次に、ステップＳ２００では、当該のコネクタ１２、１６の組付け操作において、ロボットアーム３０１に通過（経由）させる教示点を設定する。この教示点の設定は、ワーク（８００）の設計情報からＣＰＵ１２０１が自動的に行うか、またはティーチングペンダント１３００の操作により操作者（作業者）が行う。この段階で設定する教示点は例えば次の２つである。まず、その教示点の１つは、図１１（ｃ）のようにコネクタ１２、１６の中心２２、２３が一致していて必要な補正量が０の場合のロボットアーム３０１の位置姿勢である。また、他の教示点は、図１１（ｂ）のように視覚センサ５００でコネクタ１２の中心２２とコネクタ１６の中心２３の相対位置関係を計測する計測教示点の１つ前の教示点に相当し、この教示点は、例えば図１（ａ）のロボットアーム３０１の位置姿勢である。このうち、計測教示点は本実施例のロボット制御によって取得される。また、計測前教示点は必ずしも図１（ａ）の位置姿勢ではなくてもよい。
【００８３】
次にステップＳ３００において、ＣＰＵ１２０１は、ステップＳ１００で設定したワーク（８００）の位置姿勢の誤差範囲（図１０（ａ））に基づき、後述の組付操作で実施する位置姿勢の補正範囲に相当する組付補正範囲（図１０（ｂ））を設定する。この組付補正範囲の位置情報１４０３、姿勢情報１４０４は、例えば図１０（ｂ）に示すように、図１０（ａ）の誤差範囲（把持したワークのバラつき範囲）の位置、姿勢の正負の符号が逆転したものになる。なお、ここでは、理解を容易にするため、誤差範囲（図１０（ａ））と組付補正範囲（図１０（ｂ））の座標系が同じと考えた場合の値の対応を示している。
【００８４】
次にステップＳ４００では、ステップＳ３００で求めた図１０（ｂ）の組付補正範囲（ＭＡＸ〜ＭＩＮ）で取り得るロボットの位置姿勢（教示点）の全てについて逆運動学計算を行う。そして、各位置姿勢（教示点）におけるロボットアーム３０１の各関節（Ｊ１〜Ｊ６）の軸値を取得する。なお、ここでは、組付補正範囲（図１０（ｂ））に相当する空間における教示点軌道上の教示点を任意のステップ量で探索し、各々の教示点の各関節（Ｊ１〜Ｊ６）の軸値を取得すればよい。ただし、この時、上記軌道上の教示点の探索において、軌道上の教示点の１つで関節（Ｊ１〜Ｊ６）のいずれかで、正逆転が必要となるような軌道は探索から除外（それ以上の探索を中止）し、他の軌道を探索するものとする。
【００８５】
続くステップＳ５００は、ステップＳ６００〜Ｓ９００までの処理を、ロボットアーム３０１の各関節（Ｊ１〜Ｊ６）について（その軸数分だけ）実施するためのループ制御に相当する。図１７のような６軸（６関節）のロボットアーム３０１であれば、ステップＳ６００〜Ｓ９００までの処理を、各々の関節Ｊ１〜Ｊ６について実施することになる。なお、以下では、関節Ｊ１〜Ｊ６を識別するためのインデックスの一般表現として「ｎ」を用いる（ｎは１から６までの整数）。
【００８６】
このループの最初のステップＳ６００では、処理中の関節Ｊｎ（Ｊ１〜Ｊ６のいずれか）の軸値（回転関節であれば回転角度）補正可動範囲Ｊ[ｎ]を算出する。この補正可動範囲Ｊ[ｎ]（１４０５）は、図１０（ｃ）に示すように、ステップＳ４００で求めた組付補正範囲（図１０（ｂ））に相当する補正範囲で取り得るロボットアーム３０１の位置姿勢における当該関節Ｊｎの軸値の範囲として算出される。
【００８７】
なお、図１０（ｃ）の下部２行は、各関節（Ｊｎ）の補正可動範囲Ｊ[ｎ]の最大（「ＭＡＸ」）、最小（「ＭＩＮ」）の軸値である。また、その上部の各行は、探索した教示点軌道を構成する各教示点に対応した各関節（Ｊｎ）の軸値を示している。
【００８８】
例えば、図１２（ａ）の例では、ロボットのある関節（Ｊｎ）の（最大の）可動範囲（例えばＡとする）は−１８０°＜Ａ≦１８０°である。ここで、この関節（Ｊｎ）についてステップＳ４００の逆運動学計算で計算した組付補正範囲（図１０（ｂ））に相当する範囲がＲ２（θminからθmax）であるものとする。こ場合、この関節（Ｊｎ）の組付補正範囲に相当する補正可動範囲Ｊ[ｎ]は範囲Ｒ２のθmin≦Ｊ[ｎ]≦θmaxとなる。
【００８９】
次に、ステップＳ７００において、ＣＰＵ１２０１は、ステップＳ２００で取得した計測前教示点における当該関節（Ｊｎ）の軸値と補正可動範囲の重複チェックを実施する。例えば、ここでステップＳ６００で求めた当該関節（Ｊｎ）の補正可動範囲Ｊ[ｎ]が図１２（ａ）のＲ２の範囲であるとする。この場合、ステップＳ７００のチェック処理は、ステップＳ２００で取得した計測前教示点に相当する（逆運動学計算で取得される）当該関節（Ｊｎ）の軸値が関節軸がＲ２の範囲に存在（重複）しているか否かをチェックするものとなる。次に、ステップＳ８００では、ステップＳ７００で重複が発生しているか否かを判定し、重複が発生している場合にはステップＳ９００を実行する。ステップＳ７００で重複が発生していない場合、即ち、計測前教示点に相当する（逆運動学計算で取得される）当該関節（Ｊｎ）の軸値が補正可動範囲Ｊ[ｎ]の外側にある場合は、当該関節（Ｊｎ）のループ処理を終了（Ｓ５００に復帰）する。
【００９０】
ステップＳ９００において、ＣＰＵ１２０１は、ステップＳ７００の結果から計測前教示点における当該関節（Ｊｎ）の軸値が補正可動範囲Ｊ[ｎ]の内側にある場合の処理である。このステップＳ９００では、補正可動範囲Ｊ[ｎ]の外側において新たな計測前教示点として経由させるべき経由点の範囲Ｊｔ[ｎ]を算出する。例えば、この経由点の範囲Ｊｔ[ｎ]は、当該関節（Ｊｎ）の補正可動範囲Ｊ[ｎ]が図１２（ａ）に示すようにＲ２の範囲である場合、その外側の範囲−１８０°＜Ｊｔ[ｎ] ＜θmin、およびθmax＜Ｊ[ｎ]≦１８０°の範囲となる。ステップＳ９００の後、処理は当該関節（Ｊｎ）のループ処理を終了（Ｓ５００に復帰）する。
【００９１】
ロボットアーム３０１の全ての関節（Ｊ１〜Ｊ６）について、ステップＳ６００〜ステップＳ９００が終了すると、処理はステップＳ１０００に進む。ステップＳ１０００では、ステップＳ８００の計測前教示点に関する判定で当該の重複が発生しているか否かを判定する。ステップＳ８００で重複が発生していた場合は、ステップＳ１１００を実行する。
【００９２】
ステップＳ１１００において、各関節（Ｊ１〜Ｊ６）の全てについて、ステップＳ９００で算出した「補正可動範囲（図１２（ａ）のＲ２）の外側」の条件を満たす経由点範囲（Ｊｔ[ｎ]）の経由点を新たな計測前教示点として取得する。この条件を満たす経由点を新たな計測前教示点として取得する処理は、例えばＣＰＵ１２０１の自動計算によって行うことが考えられる。例えば、ここでステップＳ９００で算出した補正可動範囲の外側の範囲が図１２（ａ）上記の−１８０°＜Ｊｔ[ｎ] ＜θmin、またはθmax＜Ｊ[ｎ]≦１８０°の範囲（Ｒ１、Ｒ２）であるとする。この場合、経由点範囲（Ｒ１、Ｒ２）のいずれかの範囲の経由点の１つをＣＰＵ１２０１に選択させ、新たな計測前教示点として取得する。ただしこの時、２つの経由点範囲（Ｒ１、Ｒ２）のうち、実際の補正動作において当該の関節Ｊｎが補正可動範囲（図１２（ａ）のＲ２）で回転する方向とは逆方向から補正可動範囲に進入する角度関係にある経由点範囲の経由点は取得しないよう制御する。
【００９３】
また、ステップＳ１１００の経由点を新たな計測前教示点として取得する処理は、ティーチングペンダント１３００による操作者（作業者）の教示操作によって行うこともできる。例えば、ティーチングペンダント１３００によって操作者（作業者）に任意の経由点（教示点）を教示する教示操作を行わせる。そして、ＣＰＵ１２０１が、ティーチングペンダント１３００で教示された経由点（教示点）が上記の経由点範囲（Ｒ１、またはＲ２）の条件を満たしているか否かを判定する。その結果、上記の経由点範囲（Ｒ１、またはＲ２）の条件を満たしている場合には、ティーチングペンダント１３００で教示された当該の経由点（教示点）を新たな計測前教示点として取得する。なお、このティーチングペンダント１３００による操作者（作業者）の教示操作で条件を満たす計測前教示点を取得する場合、後述の計測教示点の取得の際に用いられるユーザーインターフェース（例えば図１６）と同様のユーザーインターフェースを利用できる。
【００９４】
次に、ステップＳ１２００において、ＣＰＵ１２０１は計測範囲を取得する演算を行う。この計測範囲とは図１２（ｂ）に示すように、ステップＳ１１００で取得した計測前教示点に対応する特定の関節（Ｊｎ）の軸値Ｊｂ[ｎ]と、同関節（Ｊｎ）の関節の補正可動範囲Ｒ２との間の範囲Ｒ４のことである。ステップＳ１２００では、ＣＰＵ１２０１この範囲Ｒ４を計測範囲（Ｒ４）として取得する。
【００９５】
次に、ステップＳ１３００では、コネクタ１２、１６の組付け操作を補正するために視覚センサ５００による計測を行う時のロボットアーム３０１の位置姿勢、即ち計測教示点（図１１（ｂ））を取得する。この時、計測教示点は、ステップＳ１２００で算出した計測範囲（図１２（ｂ）のＲ４）の範囲内から取得する。この計測教示点の取得も、例えばＣＰＵ１２０１の自動計算によって行うことが考えられる。例えば、計測範囲（Ｒ４）のある教示点の１つをＣＰＵ１２０１に選択させ、新たな計測前教示点として取得する。
【００９６】
また、ステップＳ１３００の計測教示点の取得は、例えばティーチングペンダント１３００による操作者（作業者）の教示操作によって行うこともできる。この場合、例えば計測教示点の取得（教示）のために、ティーチングペンダント１３００では図１６に示すようなユーザーインターフェースを利用することができる。
【００９７】
ティーチングペンダント１３００（教示装置）には、操作者に計測教示点（または前記計測前教示点）の候補を入力させる入力装置を配置する。この入力装置は、図１６の操作系では操作キー１３０１、１３０２とタッチパネル１３０３により構成される。また、ティーチングペンダント１３００（教示装置）には、上記の入力装置で入力された計測教示点（または計測前教示点）の候補が、前記の補正可動範囲との関係を満たすか否かを出力する出力装置を配置する。この力装置は、図１６の操作系ではタッチパネル１３０３（の表示部）により構成される。
【００９８】
図１６の操作系で計測教示点を取得する場合、例えば操作者（作業者）は操作キー１３０１、１３０２を用いてロボットアーム３０１の各関節（Ｊ１〜Ｊ６）を動作させ、ロボットアーム３０１（の例えば基準部位）を所望の教示点（位置姿勢）に移動させる。なお、この時、数値入力キー（不図示）などが別途ティーチングペンダント１３００に設けられている場合は、各関節（Ｊ１〜Ｊ６）の回転角度を数値入力することにより所望の教示点を指定する操作方式を採用してもよい。
【００９９】
この時用いられる図１６のユーザーインターフェースでは、タッチパネル１３０３の上部には例えば「計測教示点教示」のようなモード表示１３０４を表示する。その下部には、例えばロボットアーム３０１を移動させて指定した（あるいは数値入力により指定した）教示点の妥当性を示す妥当性表示１３０７を表示する。
【０１００】
この例では、妥当性表示１３０７は、指定された教示点に相当する各関節（Ｊ１〜Ｊ６）の角度（矩形枠内の表示）と、その下部の「ＯＫ」（適）または「ＮＧ」（否）を表示する適否表示（丸印内）から構成してある。特に、妥当性表示１３０７中の適否表示（丸印内）は、各関節（Ｊ１〜Ｊ６）の軸値が、ステップＳ１２００で算出した計測範囲（図１２（ｂ）のＲ４）の範囲を満たしているか否かを示すためのものである。また、妥当性表示１３０７の下部には、各関節（Ｊ１〜Ｊ６）の計測範囲（図１２（ｂ）のＲ４）に相当する軸値の範囲の数値表示１３０６を設けている。
【０１０１】
ここで、図１６の例では、妥当性表示１３０７中の適否表示（丸印内）は、関節Ｊ１、Ｊ３、Ｊ４、Ｊ５の各軸の軸値がそれら各軸の計測範囲（図１２（ｂ）のＲ４）の範囲を満たしている（適）。一方、関節Ｊ２およびＪ６については、妥当性表示１３０７中の適否表示（丸印内）では、各軸の軸値がそれら各軸の計測範囲（図１２（ｂ）のＲ４）の範囲を満たしていないことが示されている（否ないし不適）。
【０１０２】
従って、この図１６のユーザーインターフェースの表示例に相当するロボットアーム３０１の教示点（位置姿勢）は計測教示点として「不適」である状態を示している。タッチパネル１３０３が図１６のような表示となっている場合には、操作者（作業者）は教示操作（ロボットアーム操作あるいは数値入力による）を繰り返し、他の教示点を指定する。そして、全ての妥当性表示１３０７中の適否表示（丸印内）が「ＯＫ」（適）となった場合に、ＣＰＵ１２０１はタッチパネル１３０３の下部の「計測教示点確定」の確定キー表示１３０５（仮想キー）の入力操作を可能とする。この確定キー表示１３０５が操作可能となった後、操作者（作業者）は確定キー表示１３０５を操作することにより、当該の教示点を計測教示点として確定入力することができる。
【０１０３】
なお、図１６と同等のユーザーインターフェースは、上述のステップＳ１１００における計測前教示点を取得する場合にも利用できる。その場合、モード表示１３０４や確定キー表示１３０５中の文字列は図１６の「計測教示点」から「計測前教示点」に置き換えればよい。
【０１０４】
以上のようにして、計測教示点を取得すると、ステップＳ１４００以降において、取得された計測教示点における視覚センサ５００による計測に基づく補正動作を含む組付動作をロボットアーム３０１に実行させることができる。即ち、ステップＳ１４００では、ステップＳ１１００、Ｓ１３００で教示した計測前教示点や計測教示点を用いて視覚センサ５００による計測と、それに基づく補正動作を含む組付動作をロボットアーム３０１に実行させる。
【０１０５】
即ち、ＣＰＵ１２０１は、取得した計測教示点においてワーク（８００）を視覚センサ５００で計測し、計測画像の解析に基づき、コネクタ１２、１６の中心２２、２３を一致させるよう、ロボットアーム３０１の位置姿勢を補正する。その上で、ロボットアーム３０１にコネクタ１２、１６の挿入操作を行わせる。これにより、コネクタ１２、１６の組付けを確実に、かつ精度よく実行させることができる。
【０１０６】
なお、図９におけるステップＳ１４００の図示位置は、説明の都合上のものに過ぎず、必ずしもステップＳ１４００のワーク組付け操作の前に、毎回、先行する計測前教示点や計測教示点の取得処理を実行する必要はない。例えば、図９は、ステップＳ１４００は、自動実行により多数のワーク（８００）を繰り返し処理する総組立工程に相当するものと読み換えても構わない。その場合、ステップＳ１４００のワーク組付け操作に先行する計測前教示点や計測教示点の取得処理は、当該の総組立工程をプログラミングする教示工程と読み換えてよい。その場合、総組立工程をプログラミングする教示工程で決定した計測前教示点や計測教示点を用いて、繰り返し総組立工程（ステップＳ１４００）が実行される。そして、各ワーク（８００）のコネクタ１２、１６の組付け操作は毎回、視覚センサ５００の実測に基づいて補正される。これにより、多数のワーク（８００）を処理する場合でも、各ワーク（８００）の把持誤差があっても、それに応じて、コネクタ１２、１６の中心２２、２３を一致させる補正処理が行われる。このため、多数のワーク（８００）を処理する総組立工程において、全てのワークを正確かつ確実に組付けすることができる。
【０１０７】
以上のように、本実施例では、ロボットハンド３０２で把持した把持物（コネクタ１２）が取り得る相対的な位置姿勢の誤差の範囲に基づき、組付教示点に向かって特定の関節の軸値の取り得る補正可動範囲を取得する（補正可動範囲取得工程）。そして、計測前教示点決定工程では、取得された補正可動範囲に相当する当該の関節の軸値に基づき、補正可動範囲の外側の範囲に含まれる教示点を計測前教示点として取得する。また、計測教示点決定工程では、取得された補正可動範囲に相当する当該の関節の軸値に基づき、補正可動範囲と計測前教示点の間の範囲に含まれる教示点を計測教示点として取得する。
【０１０８】
即ち、補正可動範囲の外側の経由点を計測前教示点として取得し、視覚センサ５００で計測を行う計測教示点を、計測に基づく補正動作が行われる補正可動範囲と計測前教示点の間に取得する。そして、計測前教示点から計測教示点へとロボットアーム３０１を動作させ、計測教示点において視覚センサ５００で行った計測に基づき補正可動範囲における動作を実行させる。
【０１０９】
以上のようなロボット制御を行うことにより、本実施例では、各関節（Ｊ１〜Ｊ６）の反転（正逆転）が生じない補正動作を生成できるよう、視覚センサ５００による計測を行う計測教示点を選択することができる。本実施例では、計測前教示点から計測教示点、さらに補正可動範囲へとロボットアーム３０１を動作させる際、特定の（あるいは全ての）関節が正逆転を挟むことなく一定の駆動方向で駆動されるよう制御される。このため、ロボットアーム３０１の各関節の駆動系のバックラッシュに起因する制御誤差を良好に抑制でき、正確かつ確実なワーク組付けを行うことができる。
【０１１０】
なお、以上ではワーク（８００）として、コネクタ付きケーブル（２１）とコネクタ（１６）のような組合せを例示した。しかしながら、上述のロボット制御技術は、操作されるワークの態様に限定されることなく、視覚センサ（５００）で計測した結果に応じて把持したワークを補正するロボット装置であれば、任意のロボット装置に実施することができる。
【０１１１】
＜実施例２＞
次に、本発明の実施例２に係るロボット制御について説明する。本実施例におけるロボット装置のハードウェア構成および制御の基本構成は、上述の実施例１で各図に示したものと同等であるものとする。
【０１１２】
また、本実施例２でも、図９に示したロボット制御全体の流れは上述の実施例１と同等であるが、本実施例では、図９のステップＳ４００で行う逆運動学計算の対象を変更する。上述の実施例１では、ステップＳ３００で求めた図１０（ｂ）の組付補正範囲（ＭＡＸ〜ＭＩＮ）で取り得るロボットの位置姿勢（教示点）の全ての組合せについて逆運動学計算を行うものと説明した。
【０１１３】
しかしながら、このような演算手法によると、ＣＰＵ１２０１の演算量が多く計算にかかるリソースが増大する可能性がある。例えば、ＣＰＵ１２０１として処理性能の高い品種が必要になったり、大容量のメモリ（例えばＲＡＭ１２０３ないしは仮想記憶）が必要になったりする可能性がある。
【０１１４】
そこで、本実施例のステップＳ４００では、図１０（ｂ）の組付補正範囲で取り得る位置姿勢全てではなく組付補正範囲の位置情報１５０２、姿勢情報１５０３の最大値および最小値（ＭＡＸ、ＭＩＮ）のみの全ての組合せにつき逆運動学計算を実行する。この組付補正範囲（ＭＡＸ〜ＭＩＮ）の位置姿勢（Ｘ、Ｙ、Ｚ、ｒＸ、ｒＹ、ｒＺ）の最大および最小値（ＭＡＸ、ＭＩＮ）のみの全ての組合せは、図１３のコラム１５０１に示すように、６４（＝２＾６）通りの位置姿勢になる。
【０１１５】
本実施例２では、上記のように逆運動学計算を実施することにより、計算量を大きく削減できる。従って、ＣＰＵ１２０１が比較的低速な品種であっても、あるいはそれ程大きなメモリ（例えばＲＡＭ１２０３ないしは仮想記憶）容量を必要とせず、上述と同等のロボット制御を実施することができる。
【０１１６】
＜実施例３＞
次に、本発明の実施例３に係るロボットシステム制御につき説明する。本実施例でも、ロボット装置のハードウェア構成および制御の基本構成は、上述の実施例１で各図に示したものと同等であるものとする。
【０１１７】
また、本実施例３でも、図９に示したロボット制御全体の流れは上述の実施例１と同等であるが、図９に示すステップＳ９００において、補正可動範囲（Ｒ２）の外側の経由点範囲の取得方法が異なる。また、図９のステップＳ１２００では実施例１と異なる計測範囲を取得する。
【０１１８】
上記の実施例１では、ステップＳ９００において、経由点（計測前教示点）の範囲Ｊｔ[ｎ]が図１２（ａ）の補正可動範囲（Ｒ２）の場合、−１８０°＜Ｊｔ[ｎ] ＜θmin、θmax＜Ｊ[ｎ]≦１８０°の範囲（Ｒ１、Ｒ３）に取るものと説明した。
【０１１９】
しかしながら、計測前教示点の取得（ないしは教示）において、経由点（計測前教示点）から計測教示点までの関節駆動量が非常に小さくなるような経由点（計測前教示点）が取得（ないしは教示）されてしまう可能性がある。この場合には、充分バックラッシュの片寄せが行えない動作となり、例えばバックラッシュに起因する制御誤差が働いている間に計測教示点が設定されてしまう可能性がある。即ち、経由点（計測前教示点）から計測教示点までにギヤのバックラッシュの角度θb以下の移動しか特定の関節が移動（回動）しない場合、経由点と補正可動範囲の間に計測教示点を取得する関係で、ギヤのバックラッシュ分の片寄せができない可能性がある。
【０１２０】
この点を考慮し、本実施例３では、補正可動範囲（Ｒ２）の外側に取る経由点の範囲Ｊｔ[ｎ]は図１４（ａ）に示すように、少なくとも当該関節の駆動系のバックラッシュ相当の角度θb分だけ離間した補正可動範囲（Ｒ２）の両外側に配置する。なおバックラッシュ相当の関節駆動系の回転量は、当該関節に用いる変速機のバックラッシュのカタログ数値などから求めて、あらかじめＲＯＭ１２０２などに格納しておくことができる。
【０１２１】
その結果、本実施例では、上記のような制御によって、経由点の範囲Ｊｔ[ｎ]は、補正可動範囲（Ｒ２）の両外側にバックラッシュ相当の角度θb分のギャップを挟んでＲ１’、Ｒ３’のように取得される。即ち、この経由点の範囲（Ｒ１’、Ｒ３’）は、−１８０°＜Ｊｔ[ｎ] ＜θmin−θb、θmax＋θb＜Ｊ[ｎ]≦１８０°となる。
【０１２２】
また、図９のステップＳ１２００では、同様の理由から計測教示点の範囲（Ｒ４’）は、図１４（ｂ）に示すように、当該関節の計測前教示点の関節軸値Ｊｂ[ｎ]から少なくともバックラッシュの角度θb分狭めた範囲に取る。
【０１２３】
本実施例３では、以上のようにバックラッシュ相当の角度θbに相当する駆動量に基づき、経由点の範囲（Ｒ１’、Ｒ３’）、および計測教示点の範囲（Ｒ４’）を取得する。これにより、特に、計測前教示点から計測教示点まで把持物（コネクタ１２）を移動させる際には、特定の関節が一定駆動方向に沿って駆動系のバックラッシュに相当する駆動量以上駆動されるよう制御される。また、計測教示点における計測の後、実際に補正動作が行われる補正可動範囲に入る際にも、特定の関節が一定駆動方向に沿って駆動系のバックラッシュに相当する駆動量以上駆動されるよう制御される。従って、本実施例によれば、経由点（計測前教示点）から計測教示点、あるいな計測教示点から補正可動範囲までの間の動作において関節駆動系のバックラッシュに起因する制御誤差に影響されずにロボットアーム３０１を動作させることができる。
【０１２４】
＜実施例４＞
次に、本発明の実施例４に係るロボットシステム制御につき説明する。本実施例でも、ロボット装置のハードウェア構成および制御の基本構成は、上述の実施例１で各図に示したものと同等であるものとする。
【０１２５】
本実施例４では、図９の制御手順を変形し、図１５のフローチャートに示すような制御手順でロボット制御を行う。図１５は、図９の制御手順にステップＳ１２０１〜Ｓ１２０４を追加したものである。以下では、実施例１で説明済みのステップＳ１００〜ステップＳ１４００については説明を省略し、ステップＳ１２０１〜Ｓ１２０４の処理についてのみ説明する。
【０１２６】
図１５追加されているステップＳ１２０１〜Ｓ１２０４は、ロボット装置３００の配置された環境中の障害物との干渉を回避する制御（干渉演算）に相当する。この障害物は、ロボット装置３００の配置環境中のロボット装置３００とロボット装置３００が取り扱うべきワーク（８００）以外の物体で、例えば他のロボットや、室内の他の什器、設備などが考えられる。
【０１２７】
図１５のステップＳ１２０１では、障害物領域情報、即ちロボット装置３００の配置環境で障害物が占めている空間領域に関する情報を設定する。障害物領域情報は、ロボット装置３００の配置環境のグローバル座標系において障害物が占めている空間に相当する座標値のリストなどによって表現され、そのデータ格納形式は任意である。
【０１２８】
障害物領域情報は、予めロボット装置３００の配置環境の状態に応じて操作者（作業者ないし管理者）が数値入力やＧＵＩ操作を介して入力することができる。あるいは、視覚センサ５００を利用してロボット装置３００の配置環境を計測した、例えば画像情報の認識結果からＣＰＵ１２０１が生成することも考えられる。このようにして入力ないし生成された障害物領域情報は、図１５の制御で用いる前段階では例えば外部記憶装置１２０４などに格納しておくことができる。そして、図１５の制御を実行するに先立ってＲＡＭ１２０３（あるいは仮想記憶領域）などに展開される。
【０１２９】
ロボットアーム３０１を動作させる場合、ＣＰＵ１２０１は、ロボットアーム３０１、ロボットハンド３０２の躯体、さらに把持しているワーク（８００）を障害物領域情報に記録された障害物が占めている空間に進入させないように制御する。
【０１３０】
例えば、図１５のステップＳ１２０２において、ＣＰＵ１２０１は干渉確認を行う。この干渉確認は、ステップＳ１４００など、その後のロボット動作でステップＳ１２０１で設定した障害物領域情報で表現された空間領域に、ロボット装置３００ないしそれが把持したワーク（８００）が進入しないように制御するために行う。例えば、現在のロボットアーム３０１の位置姿勢が障害物領域情報が示す障害物が占めている空間と干渉していないか判定する。このような演算は、グローバル座標値（ないしその範囲）の比較演算などにより行う。
【０１３１】
また、ステップＳ１２００で各関節（Ｊ１〜Ｊ６）について算出した計測範囲（図１２（ｂ）、図１４（ｂ）のＲ４やＲ４’）に相当するロボットアーム３０１の位置姿勢が障害物領域情報が示す障害物が占めている空間と干渉していないか判定する。さらに、また、この時、以後のロボット動作で用いるため、ロボット装置３００ないしそれが把持したワーク（８００）が進入できる空間領域と、障害物があり進入できない空間領域を識別する制御データを生成してもよい。
【０１３２】
ステップＳ１２０３において、ＣＰＵ１２０１は障害物との干渉の有無を確認する。特に、ここでは、算出した計測範囲（図１２（ｂ）、図１４（ｂ）のＲ４やＲ４’）に相当するロボットアーム３０１の位置姿勢が障害物領域情報が示す障害物が占めている空間と干渉していないかをチェックする。
【０１３３】
もし、計測範囲に相当する位置姿勢と障害物が占めている空間が干渉している場合には、ステップＳ１２０４において、例えばその干渉を解消するよう各関節（Ｊ１〜Ｊ６）に関する計測範囲の干渉部分に相当する範囲を縮小する（狭める）。
【０１３４】
ステップＳ１３００では、実施例１あるいは実施例３で説明したように計測範囲（図１２（ｂ）、図１４（ｂ）のＲ４やＲ４’）において計測教示点を取得する。もちろん、ステップＳ１２０４を通過している場合には、計測範囲（図１２（ｂ）、図１４（ｂ）のＲ４やＲ４’）は障害物との干渉が生じないよう修正されている。従って、ロボット装置３００の配置環境中の障害物と干渉を生じることがない計測教示点を取得することができる。
【０１３５】
なお、ステップＳ１２００において、ロボット装置３００やワーク（８００）が進入できる空間領域と、障害物があり進入できない空間領域を識別する制御データを生成している場合は、この制御データはステップＳ１４００の組付制御においても利用できる。また、以上では、主に計測教示点の取得（Ｓ１３００）に関して障害物の干渉回避を行う制御（干渉演算）を説明した。しかしながら、例えばステップＳ１２０１の障害物領域情報の設定は図１５の制御手順の最初で実行しておくことができる。そして、その障害物領域情報を利用して、計測前教示点（経由点）の取得（Ｓ１１００）、経由点範囲の算出（Ｓ９００）などに関しても上述同様の障害物の干渉回避を行う制御を実行してもよい。また、本実施例４の障害物との干渉回避を行う制御は、例えば実施例２や実施例３の制御と併用することができる。
【０１３６】
本発明は、上述の実施例の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１３７】
Ｊ１〜Ｊ６…関節、１１…ケーブル、１２…コネクタ、１３…先端部、１５…基板、１６…コネクタ、２１…コネクタ付キケーブル、２２…中心軸、２００…制御装置、３００…ロボット装置、３０１…ロボットアーム、３０２…ロボットハンド、３０３…フィンガー、３０５、３０６…突起、５００…視覚センサ、８００…ワーク、１１０１…ベース部、１１２１〜１１２６…リンク、１２０１…ＣＰＵ、１２０２…ＲＯＭ、１２０３…ＲＡＭ、１２０４…外部記憶装置、１２０５、１２０７、１２０８…インターフェース、１２０６…ネットワークインターフェース、１３００…ティーチングペンダント、１３０１、１３０２…操作キー、１３０３…タッチパネル。
【図１】
0006755724.tif 000002
【図２】
0006755724.tif 000003
【図３】
0006755724.tif 000004
【図４】
0006755724.tif 000005
【図５】
0006755724.tif 000006
【図６】
0006755724.tif 000007
【図７】
0006755724.tif 000008
【図８】
0006755724.tif 000009
【図９】
0006755724.tif 000010
【図１０】
0006755724.tif 000011
【図１１】
0006755724.tif 000012
【図１２】
0006755724.tif 000013
【図１３】
0006755724.tif 000014
【図１４】
0006755724.tif 000015
【図１５】
0006755724.tif 000016
【図１６】
0006755724.tif 000017
【図１７】
0006755724.tif 000018
【図１８】
0006755724.tif 000019