(57)【要約】  作業者がワーク毎に計測動作の位置および姿勢教示をする必要がなく、３次元の位置および姿勢を高精度に取得して、ワークの位置や姿勢のずれを修正する。  エンドエフェクタ104に設けられた、直方体形状ワーク105のエッジの実測定位置を取得する位置検出センサ106を備えたロボット101を、下記教示ステップ(1)〜(3)および下記再生ステップ(4)〜(6)で教示再生する。(1)前記エンドエフェクタ104が前記ワーク105を把持する直前の第１の位置および姿勢を大まかに教示する。(2)前記第１の位置および姿勢と前記ワーク105の形状寸法データとに基づいて、前記ワーク105の演算上の位置および姿勢を求める。(3)前記ワーク105の位置および姿勢に基づいて、前記ワーク位置を実測するためのロボットの動作指令を生成する。(4)前記ロボットの動作指令に基づいて動作し、前記ワーク105の実測による位置および姿勢を求める。(5)前記ワーク105の演算上の位置および姿勢と前記実測による位置および姿勢とのずれ量を求める。(6)前記ずれ量に基づいて、前記エンドエフェクタ104の把持位置の位置および姿勢を修正する。【特許請求の範囲】
【請求項１】
エンドエフェクタがワークを把持する直前の第１の位置および姿勢を記憶するメモリと、
前記ワークの寸法データを入力するためのワーク寸法入力部と、
前記第１の位置および姿勢および前記入力された前記ワークの寸法データに基づいて、エンドエフェクタに設けられた位置検出センサが前記ワークの位置および姿勢を測定するための動作指令を生成する動作パターン生成器と、
前記動作パターン生成器が生成した動作指令に基づいて前記ロボットを動作させ、前記ワークの位置および姿勢を測定し、前記第１の位置および姿勢および前記ワークの形状寸法データに基づいて求められた前記ワークの演算上の位置および姿勢と前記実測による位置および姿勢とのずれ量を求め、前記ずれ量に基づいて前記エンドエフェクタの位置および姿勢を修正する制御手段と、を備えたことを特徴とするロボットの制御装置。
【請求項２】
前記位置検出センサは、１次元の位置検出センサであることを特徴とする請求項１記載のロボットの制御装置。
【請求項３】
前記位置検出センサは、２次元の位置検出センサであることを特徴とする請求項１記載のロボットの制御装置。
【請求項４】
前記ワーク教示位置を記憶する際には、実際の作業でエンドエフェクタがワークに作用するのと同じ位置および姿勢を１点登録することを特徴とする請求項１に記載のロボットの制御装置。
【請求項５】
前記ワーク寸法データは、教示装置から入力されることを特徴とする請求項１に記載のロボットの制御装置。
【請求項６】
前記ワーク寸法データは、ＣＡＤデータに基づくデータであることを特徴とする請求項１に記載のロボットの制御装置。
【請求項７】
前記ワークは、直方体形状であり、
前記動作指令は、前記位置検出センサが、前記ワークの測定対象面となる長方形の４つの頂点からそれぞれ所定距離離れた長辺上の４つのエッジ上の位置と、前記長方形の２つの短辺のそれぞれ中点となる２つのエッジ上の位置と、を計測するための動作指令であることを特徴とする請求項１に記載のロボットの制御装置。
【請求項８】
前記ワークは、直方体形状であり、
前記動作指令は、前記２次元の位置検出センサが、前記ワークの測定対象面となる長方形の短辺方向に移動しながら前記ワークの３次元形状を計測するための動作指令であることを特徴とする請求項３に記載のロボットの制御装置。
【請求項９】
前記ワークは、測定対象面を上面とする円柱形状であり、
前記動作指令は、前記上面の円中心から反対方向に等間隔離れた平行な直線と前記上面とが交わる４つのエッジ上の位置をそれぞれ計測するための動作指令であることを特徴とする請求項３に記載のロボットの制御装置。
【請求項１０】
前記ワークは、円柱形状であり、
前記動作指令は、前記２次元の位置検出センサが、前記ワークの測定対象面となる上面を一定方向に走査する動作指令であることを特徴とする請求項３に記載のロボットの制御装置。
【請求項１１】
前記ワークの位置ずれ量が予め設定された閾値を超えた場合に、再度前記動作指令に基づいて前記ロボットを動作させてワークの実測による位置および姿勢を求め、前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて求められた前記ワークの演算上の位置および姿勢と前記再度の実測による位置および姿勢とのずれ量を求め直す制御手段を備えたことを特徴とする請求項１に記載のロボットの制御装置。
【請求項１２】
前記ワークの位置ずれ量が予め設定された閾値を超えた場合に、前記動作パターン生成器は、動作方向を逆又は直交方向に変更して、前記位置検出センサが前記ワークの実測定位置を検出する動作指令を生成し直し、前記生成し直された動作指令に基づいて前記ロボットを動作させ、前記ワークの実測による位置および姿勢を求め、前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて求められた前記ワークの演算上の位置および姿勢と前記再実測による位置および姿勢とのずれ量を求め直す制御手段を備えたことを特徴とする請求項１に記載のロボットの制御装置。
【請求項１３】
ワークを把持するエンドエフェクタが設けられたロボットと、
前記ロボットを制御する制御装置と、を備え、
前記制御装置は、前記ワークの位置および姿勢を測定する位置検出センサと、
前記エンドエフェクタが前記ワークを把持する直前の第１の位置および姿勢を記憶するメモリと、
前記ワークの寸法データを入力するためのワーク寸法入力部と、
前記第１の位置および姿勢と前記入力された前記ワークの寸法データとに基づいて、エンドエフェクタに設けられた位置検出センサが前記ワークの位置を測定するための動作指令を生成する動作パターン生成器と、
前記動作パターン生成器が生成した動作パターン基づいて前記ロボットの動作指令を生成する指令生成器と、を備え、
前記第１の位置および姿勢および前記ワークの形状寸法データから演算して求められた前記ワークの位置および姿勢と前記位置検出センサによって実際に測定された位置および姿勢とのずれ量を求め、前記ずれ量に基づいて前記エンドエフェクタの位置および姿勢を修正することを特徴とするロボットシステム。
【請求項１４】
前記位置検出センサは、前記エンドエフェクタに設けられたことを特徴とする請求項１３に記載のロボットシステム。
【請求項１５】
前記位置検出センサは、１次元の位置検出センサであることを特徴とする請求項１４記載のロボットシステム。
【請求項１６】
前記位置検出センサは、２次元の位置検出センサであることを特徴とする請求項１４記載のロボットシステム。
【請求項１７】
前記ワークは、直方体形状であり、
前記動作指令は、前記位置検出センサが、前記ワークの測定対象面となる長方形の４つの頂点からそれぞれ所定距離離れた長辺上の４つのエッジ上の位置と、前記長方形の２つの短辺のそれぞれ中点となる２つのエッジ上の位置と、を計測するための動作指令であることを特徴とする請求項１３に記載のロボットシステム。
【請求項１８】
前記ワークは、測定対象面を上面とする円柱形状であり、
前記動作指令は、前記上面の円中心から反対方向に等間隔離れた平行な直線と前記上面とが交わる４つのエッジ上の位置をそれぞれ計測するための動作指令であることを特徴とする請求項１３に記載のロボットシステム。
【請求項１９】
ワークを把持するためのエンドエフェクタと、前記ワークの位置を検出するための位置センサと、を備えたロボットを、下記ステップで教示および再生することを特徴とするロボットの制御方法：
（１）前記エンドエフェクタが前記ワークを把持する直前の第１の位置および姿勢を大まかに教示する。
（２）前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて、前記ワークの演算上の位置および姿勢を求める。
（３）前記ワークの位置および姿勢に基づいて、前記ワーク位置を実測するための前記ロボットの動作指令を生成する。
（４）前記動作指令に基づいて前記ロボットを動作させ、前記位置検出センサにより前記ワークの位置を測定する。
（５）前記ワークの演算上の位置および姿勢と前記位置検出センサにより測定された前記ワークの位置および姿勢とのずれ量を求める。
（６）前記ずれ量に基づいて、前記エンドエフェクタの把持位置での位置および姿勢を修正する。
【請求項２０】
前記位置検出センサは、前記エンドエフェクタに設けられたことを特徴とする請求項１３に記載のロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部品の組立等に用いられるロボットの技術に関する。【０００２】
車や家電の製造工場で行なわれる部品の組立工程には、ワーク同士の嵌め合い作業が含まれている。このような嵌め合い作業を含む組立工程を、ロボットを用いて自動化する場合には、ロボットに嵌め合い作業を教示する必要がある。この教示には、オンライン教示とオフライン教示とがある。
オンライン教示の方法として、例えば、作業者がロボットを誘導して実際の作業の動作や手順を教示する方法がある。オフライン教示の方法として、予め外部のパソコンなどで作業プログラムを作成して、それをロボットコントローラに転送して再生運転する方法がある。
しかし、オンライン教示では、ワークの位置決め誤差により、実際に教示した位置と再生運転時に作業する位置がずれる可能性がある。オフライン教示では、教示データの原点と実際のロボットの原点がずれている場合があり、教示点位置の補正が難しいという問題があった。
そこで、特許文献１には、オンライン教示で精度良く教示位置を教示する方法が開示されている。特許文献１は、ロボットエンドエフェクタ上にワークの位置検出をする位置検出センサを設け、この位置検出センサが位置検出領域に測定光を照射し、その位置検出領域から帰還する乱反射光や正反射光に基づいてワークの位置情報を取得するものである。
特許文献２および３は、（ｉ）測定用動作ファイルに基づいてロボットを動かして、距離センサにより基準ワークをセンシングして測定距離を記憶した後、（ｉｉ）実ワークをセンシングして測定距離を求めて、その測定距離と基準ワークの測定距離との差から作業用動作ファイルを補正するものである。
特許文献４は、（ｉ）ワークに対する距離センサの動きを予めティーチングすることによって基準データを測定し、（ｉｉ）この状態で作業手順と動作を教示し、（ｉｉｉ）ワーク交換時には距離測定センサでワークを３方向から測定して、基準データと比較して補正するものである。
特許文献５は、ワーク上の特定の点までの距離を非接触で計測する距離センサをロボットの手首に備える。その距離センサで計測される距離から得られる距離データを、視覚的イメージの指示経路に変換して画面上で表示し、操作員が指示する所望の位置を位置データに変換して指示し、得られた距離データから所望の指示経路を取得するものである。
特許文献６には、距離センサによりワーク全体をセンシングし、オフライン教示プログラムに自動入力し、溶接線サーチジョブ及び溶接ジョブを作成する例がある。【０００３】
【特許文献１】特開平５−３０９５９０号公報（第４頁、図１）
【特許文献２】特開平６−２１０５８０号公報（第２頁、図１）
【特許文献３】特開平１−２５２３８１号公報（第２頁、図１）
【特許文献４】特公平６−００８７３０号公報（第２頁、図１）
【特許文献５】特開平６−３４８３３０号公報（第３頁、図１）
【特許文献６】特開平９−１８３０８７号公報（第４頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１および２については、ワークを十字方向又は一方向にのみに走査する方法では、ワークの姿勢ずれを測定不可能である。また、ワーク毎に操作員がワークをどのように走査するかを教示することは面倒で時間がかかる。また、効率的な３次元の位置および姿勢の計測動作自体が明確になっておらず、ワーク毎に作業者の試行錯誤が必要である。
特許文献３および４については、ワーク毎に測定用動作ファイル（ジョブ）を作る必要があり、また、ワークに対する測定方向も３方向から測定する必要があるので、教示に時間がかかり、ロボットの自由度や周辺環境との干渉によってはその測定姿勢を取れない。
特許文献５については、ワーク毎に操作員がワークをどのように走査するかを指示する手間が必要で、ワーク形状認識に膨大な時間もかかる。
特許文献６については、ワーク全体の走査に時間がかかる。予め全体の大きさを入力する必要がある。全体走査と溶接線走査の２回センシングが必要である。
本発明はこのような問題点に鑑みてなされたものであり、作業者がワーク毎に毎回、計測動作の位置および姿勢を教示する必要がなく、３次元の位置および姿勢を高精度に取得して、ワークの位置や姿勢のずれを修正することを目的とする。
【課題を解決するための手段】
【０００５】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、エンドエフェクタがワークを把持する直前の第１の位置および姿勢を記憶するメモリと、前記ワークの寸法データを入力するためのワーク寸法入力部と、前記第１の位置および姿勢および前記入力された前記ワークの寸法データに基づいて、エンドエフェクタに設けられた位置検出センサが前記ワークの位置および姿勢を測定するための動作指令を生成する動作パターン生成器と、前記動作パターン生成器が生成した動作指令に基づいて前記ロボットを動作させ、前記ワークの位置および姿勢を測定し、前記第１の位置および姿勢および前記ワークの形状寸法データに基づいて求められた前記ワークの演算上の位置および姿勢と前記実測による位置および姿勢とのずれ量を求め、前記ずれ量に基づいて前記エンドエフェクタの位置および姿勢を修正する制御手段と、を備えたことを特徴とするものである。
請求項２に記載の発明は、前記位置検出センサは、１次元の位置検出センサであることを特徴とするものである。
請求項３に記載の発明は、前記位置検出センサは、２次元の位置検出センサであることを特徴とするものである。
請求項４に記載の発明は、前記ワーク教示位置を記憶する際には、実際の作業でエンドエフェクタがワークに作用するのと同じ位置および姿勢を１点登録することを特徴とするものである。
請求項５に記載の発明は、前記ワーク寸法データは、教示装置から入力されることを特徴とするものである。
請求項６に記載の発明は、前記ワーク寸法データは、ＣＡＤデータに基づくデータであることを特徴とするものである。
請求項７に記載の発明は、前記ワークは、直方体形状であり、前記動作指令は、前記位置検出センサが、前記ワークの測定対象面となる長方形の４つの頂点からそれぞれ所定距離離れた長辺上の４つのエッジ上の位置と、前記長方形の２つの短辺のそれぞれ中点となる２つのエッジ上の位置と、を計測するための動作指令であることを特徴とするものである。
請求項８に記載の発明は、前記ワークは、直方体形状であり、前記動作指令は、前記２次元の位置検出センサが、前記ワークの測定対象面となる長方形の短辺方向に移動しながら前記ワークの３次元形状を計測するための動作指令であることを特徴とするものである。
請求項９に記載の発明は、前記ワークは、測定対象面を上面とする円柱形状であり、前記動作指令は、前記上面の円中心から反対方向に等間隔離れた平行な直線と前記上面とが交わる４つのエッジ上の位置をそれぞれ計測するための動作指令であることを特徴とするものである。
請求項１０に記載の発明は、前記ワークは、円柱形状であり、
前記動作指令は、前記２次元の位置検出センサが、前記ワークの測定対象面となる上面を一定方向に走査する動作指令であることを特徴とするものである。
請求項１１に記載の発明は、前記ワークの位置ずれ量が予め設定された閾値を超えた場合に、再度前記動作指令に基づいて前記ロボットを動作させてワークの実測による位置および姿勢を求め、前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて求められた前記ワークの演算上の位置および姿勢と前記再度の実測による位置および姿勢とのずれ量を求め直す制御手段を備えたことを特徴とするものである。
請求項１２に記載の発明は、前記ワークの位置ずれ量が予め設定された閾値を超えた場合に、前記動作パターン生成器は、動作方向を逆又は直交方向に変更して、前記位置検出センサが前記ワークの実測定位置を検出する動作指令を生成し直し、前記生成し直された動作指令に基づいて前記ロボットを動作させ、前記ワークの実測による位置および姿勢を求め、前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて求められた前記ワークの演算上の位置および姿勢と前記再実測による位置および姿勢とのずれ量を求め直す制御手段を備えたことを特徴とするものである。
請求項１３に記載の発明は、ワークを把持するエンドエフェクタが設けられたロボットと、前記ロボットを制御する制御装置と、を備え、前記制御装置は、前記ワークの位置および姿勢を測定する位置検出センサと、前記エンドエフェクタが前記ワークを把持する直前の第１の位置および姿勢を記憶するメモリと、前記ワークの寸法データを入力するためのワーク寸法入力部と、前記第１の位置および姿勢と前記入力された前記ワークの寸法データとに基づいて、エンドエフェクタに設けられた位置検出センサが前記ワークの位置を測定するための動作指令を生成する動作パターン生成器と、前記動作パターン生成器が生成した動作パターン基づいて前記ロボットの動作指令を生成する指令生成器と、を備え、前記第１の位置および姿勢および前記ワークの形状寸法データから演算して求められた前記ワークの位置および姿勢と前記位置検出センサによって実際に測定された位置および姿勢とのずれ量を求め、前記ずれ量に基づいて前記エンドエフェクタの位置および姿勢を修正することを特徴とするものである。
請求項１４に記載の発明は、前記位置検出センサは、前記エンドエフェクタに設けられたことを特徴とするものである。
請求項１５に記載の発明は、前記位置検出センサは、１次元の位置検出センサであることを特徴とするものである。
請求項１６に記載の発明は、前記位置検出センサは、２次元の位置検出センサであることを特徴とするものである。
請求項１７に記載の発明は、前記ワークは、直方体形状であり、前記動作指令は、前記位置検出センサが、前記ワークの測定対象面となる長方形の４つの頂点からそれぞれ所定距離離れた長辺上の４つのエッジ上の位置と、前記長方形の２つの短辺のそれぞれ中点となる２つのエッジ上の位置と、を計測するための動作指令であることを特徴とするものである。
請求項１８に記載の発明は、前記ワークは、測定対象面を上面とする円柱形状であり、
前記動作指令は、前記上面の円中心から反対方向に等間隔離れた平行な直線と前記上面とが交わる４つのエッジ上の位置をそれぞれ計測するための動作指令であることを特徴とするものである。
請求項１９に記載の発明は、ワークを把持するためのエンドエフェクタと、前記ワークの位置を検出するための位置センサと、を備えたロボットを、下記ステップで教示および再生することを特徴とするものである。（１）前記エンドエフェクタが前記ワークを把持する直前の第１の位置および姿勢を大まかに教示する。（２）前記第１の位置および姿勢と前記ワークの形状寸法データとに基づいて、前記ワークの演算上の位置および姿勢を求める。（３）前記ワークの位置および姿勢に基づいて、前記ワーク位置を実測するための前記ロボットの動作指令を生成する。（４）前記動作指令に基づいて前記ロボットを動作させ、前記位置検出センサにより前記ワークの位置を測定する。（５）前記ワークの演算上の位置および姿勢と前記位置検出センサにより測定された前記ワークの位置および姿勢とのずれ量を求める。（６）前記ずれ量に基づいて、前記エンドエフェクタの把持位置での位置および姿勢を修正する。
請求項２０に記載の発明は、前記位置検出センサは、前記エンドエフェクタに設けられたことを特徴とするものである。
【発明の効果】
【０００６】
請求項１、１３、１４に記載の発明によれば、作業者はワーク位置を大まかに一度だけ教示すれば、自動的に正確なワーク位置の取得が可能であるという効果がある。
請求項２、１５に記載の発明によれば、１次元の距離センサでワークの３次元の位置および姿勢を測定できるため、安価であり、信号処理も簡単という効果がある。
請求項３、１６に記載の発明によれば、２次元の距離センサでワークの３次元の位置および姿勢を測定できるため、測定動作の時間が短く、安価であり、信号処理も簡単という効果がある。
請求項４に記載の発明によれば、実作業でエンドエフェクタがワークに作用する位置および姿勢を１点登録するだけで測定動作を生成できるため、例えば、組立作業でワークを把持させないでその把持姿勢の位置を登録するだけで正しい詳細なワーク位置を取得できるようになる。そのため、実際にワークを把持させるなどの面倒な教示作業が不要となるという効果がある。
請求項５に記載の発明によれば、ワーク寸法データはワークの外形寸法を数値入力すれば良いため、誰でも現場で簡単に入力可能であるいう効果がある。
請求項６に記載の発明によれば、ワーク寸法データは、ＣＡＤデータを使用するため、正確で表面の凹凸も考慮した動作パターンを生成可能であるいう効果がある。
請求項７、１７に記載の発明によれば、ワーク形状が直方体である場合の動作パターンは、位置検出センサが、ワークの長辺上の４つのエッジ位置と、短辺上の２つのエッジ位置と、を計測するための動作パターンである。そのため、少ない動作で３次元の位置および姿勢を計測できるという効果がある。
請求項８に記載の発明によれば、ワーク形状が直方体である場合の動作パターンは、２次元の距離センサが、ワークの測定対象面となる長方形の短辺方向に移動しながらワークの３次元形状を計測するための動作パターンである。そのため、１回の計測動作のみで３次元の位置および姿勢を計測できるという効果がある。
請求項９、１８に記載の発明によれば、ワーク形状が円柱である時の動作パターンは、ワークに対して１方向から円中心から等間隔離れたワーク断面を２回計測し、計測データからワークの位置ずれ量を算出するため、２回の計測のみという少ない測定回数で３次元位置を計測し、ワーク位置ずれ量を演算可能であるいう効果がある。
請求項１０に記載の発明によれば、ワーク形状が円柱である時の動作パターンは、２次元センサでワークに対して１方向からワーク全体を連続して１回計測し、計測データからワークの位置ずれ量を算出するため、１回の計測のみで３次元位置を計測し、ワーク位置ずれ量を演算可能であるいう効果がある。
請求項１１に記載の発明によれば、ワークの位置ずれ量が予め設定された閾値を超えた場合に、再び、動作指令に基づいてワークの実測による位置および姿勢を求め、第１の位置および姿勢とワークの形状寸法データとに基づいて求められたワークの演算上の位置および姿勢と再実測による位置および姿勢とのずれ量を求め直すため、計測ミスによる作業失敗を防げるという効果がある。
請求項１２に記載の発明によれば、ワークの位置ずれ量が予め設定された閾値を超えた場合に、動作パターン生成器で位置検出センサの移動方向を逆方向又は直交方向に変更して、位置検出センサがワークの実測定位置を検出する動作指令を生成し直す。この動作指令に基づいてロボットを動作させ、ワークの位置および姿勢を求め、演算上の位置および姿勢と実測による位置および姿勢とのずれ量を求め直す。そのため、同方向の計測でミスが多発する場合でも計測ミスによる作業失敗を防げるという効果がある。
請求項１９、２０に記載の発明によれば、作業者はワーク位置を大まかに教示すれば、自動的に正確なワーク位置の取得が可能となるという効果がある。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１実施例におけるロボットシステムの構成図
【図２】本発明の第１実施例における位置教示例の詳細図
【図３】本発明の第１実施例における測定動作を示す図
【図４】本発明の第１実施例における演算過程を示す図
【図５】本発明の第２実施例における測定動作を示す図
【図６】本発明の第３実施例における測定動作を示す図
【図７】本発明の第４実施例における測定動作を示す図
【図８】本発明の第５実施例における作業フローチャート
【符号の説明】
【０００８】
１０１  ロボット
１０２  コントローラ
１０２１  指令生成部
１０２２  サーボ制御部
１０２３  メモリ
１０２４  ワーク寸法入力部
１０２５  動作パターン生成部
１０３  教示装置
１０４  エンドエフェクタ（グリッパ）
１０５  ワーク
１０６  位置検出センサ
【発明を実施するための最良の形態】
【０００９】
以下、本発明の具体的実施例について、図に基づいて説明する。
【実施例１】
【００１０】
図１は、本発明の第１実施例におけるロボットシステムの構成図である。このシステムはロボット１０１、ロボット１０１の動作を制御するコントローラ１０２、教示装置１０３、ロボットの手先に配置されたエンドエフェクタ１０４（ここではグリッパとする）、グリッパ１０４上又はその周辺に配置された位置検出センサ１０６を備えている。この位置検出センサは、本実施例においては、ワーク１０５を検出するための２次元レーザ変位センサ等の２次元センサまたはレーザ変位センサ等の１次元センサである。
コントローラ１０２内には、教示作業時に教示装置１０３上からの作業者のエンタキーなどの入力により教示データ等を保存するメモリ１０２３、ワークの寸法データを入力するワーク寸法入力部１０２４、前記メモリ１０２３に記憶したワーク教示位置と前記ワーク寸法入力部１０２４から入力したワーク寸法データから位置検出センサが特定の計測動作ができるようにロボットの動作パターンを生成する動作パターン生成部１０２５、メモリ１０２３に記憶された教示データ、または動作パターン生成部１０２５が生成する動作パターンからロボットの動作指令を生成する指令生成部１０２１、前記動作指令を元にロボットに搭載したモータを駆動するサーボ制御部１０２２、が設けられている。ワーク寸法入力部１０２４は、教示装置１０３上のディスプレイとキー操作を介してデータが入力される。【００１１】
上記ロボットシステムを用いた組立嵌合作業の教示作業から再生運転までの過程を説明する。図２に示す直方体形状（立方体を含む）のワークを把持する作業を教示する場合を想定する。図２は、ワーク１０５の上方にグリッパ１０４が位置している様子を示している。
教示時には把持位置の大まかな位置の教示のみ実行し、再生運転時にワーク毎にスキャン動作を行い、把持位置修正量を求めて把持動作する手順について述べる。
教示作業は、以下の４段階（Ａ〜Ｄ）に分けることができる。【００１２】
Ａ．大まかな位置の教示
作業者は、ロボット１０１を誘導して、実際にグリッパ１０４でワーク１０５を把持させる直前の位置および姿勢を大まかに教示することで、コントローラ１０２内のメモリ１０２３に教示データが格納される。この教示データにより、ロボット１０１に対するワーク１０５の大まかな位置と姿勢を求めることができる。この時、図２に示すように、実際にグリッパの開閉中心位置にワークを位置決めする必要がなく、グリッパの爪の間にワーク１０５を入れる程度の大まかな教示で良い。したがって、ワーク１０５とグリッパ１０４のセンタを一致させて、実際にワークを把持させなくとも良く、作業者の負担を減らすことが可能である。【００１３】
Ｂ．ワーク形状寸法の入力
作業者は、教示装置１０３上のディスプレイとキー操作を介して、図面や実ワークを測定した結果からワークの形状寸法を入力する。この入力された形状寸法はコントローラ１０２内のワーク寸法入力部１０２４内に記憶される。具体的には、グリッパ１０４にワーク１０５の中心位置ＷＣ（Ｗｏｒｋ  Ｃｅｎｔｅｒ）を把持させる場合には、直方体の外形寸法とワークの把持高さ位置（ワーク１０５の下面からのＺ軸方向位置）を入力すれば良い。ただし、グリッパ１０４のグリッパ部分の把持中心位置ＨＣ（Ｈａｎｄ  Ｃｅｎｔｅｒ）が、ワーク中心位置ＷＣと一致する場合にはワーク把持高さ位置も入力不要である。一方、グリッパ１０４にワーク１０５の中心位置ＷＣを把持させるのではない場合には、そのオフセット量（Ｘ軸またはＹ軸方向のずれ量）を入力する。【００１４】
Ｃ．コマンド追加
作業者は、作業プログラムで把持位置として登録した動作コマンドの前に、スキャン動作用コマンドを追加する。若しくは、前記動作コマンドにスキャン動作するタグ命令を追加しても良い。【００１５】
Ｄ．スキャン動作生成
スキャン動作用コマンドが追加されると、動作パターン生成部１０２５では、メモリ１０２３に記憶された把持位置の位置および姿勢と、ワーク寸法入力部１０２４に記憶されたワークの形状寸法から、ロボット１０１に搭載した位置検出センサ１０６を移動させるための動作パターンを自動生成する。具体的には、以下の手順で生成する。【００１６】
Ｄ−１．ロボット座標でのワーク位置および姿勢を演算
グリッパ１０４の把持位置および把持姿勢はロボットの各軸角度として記憶されているため、把持中心位置ＨＣにおけるグリッパ１０４がロボット座標系でどの位置および姿勢にあるか求める。これは、順変換等によりロボット座標の値に変換することで求められる。直方体形状のワークの位置および姿勢は、そのワークの頂点８点を使って表現される。したがって、把持中心位置ＨＣにおけるグリッパ１０４のロボット座標系での位置および姿勢とワーク形状寸法とから、ワーク１０５の演算上の位置および姿勢は、ロボット座標におけるその頂点８点で表される。
ワーク１０５の演算上の位置および姿勢は、実際のワークの位置および姿勢からずれている。したがって、このワーク１０５の演算上の位置および姿勢を表す頂点８点は実際のワーク１０５の頂点８点のおおよその位置である。
なお、ワーク１０５の位置および姿勢は、ワーク１０５の頂点８点以外の方法で表現しても良い。【００１７】
Ｄ−２．長辺上のエッジ位置検出動作の教示（長辺方向のスキャン動作基準点の教示）
図３にワーク１０５を上面から見た図を示す。ＸＹＺ軸は、ワーク座標系を表している。ワーク１０５の上面は、位置検出センサ１０６の測定面である。ワーク１０５の長辺Ｗ１とＷ２を４等分して、両端から１／４の位置をそれぞれ、ａ、ｂ、ｃ、ｄとし、ロボット座標の四隅８点の位置から、座標データを求める。これらの位置ａ〜ｄからワーク１０５の位置ズレ許容誤差分ΔＹより大きく外側に位置する仮想の点を、ａ１、ｂ１、ｃ１、ｄ１（ｂ１、ｄ１は不図示）とし、これらの位置ａ１〜ｄ１が位置検出センサ１０６の測定距離内に入るように、高さ調整分ΔＺだけ上方に位置する点をａ２、ｂ２、ｃ２、ｄ２とする。
断面Ａに示すように、位置検出センサ１０６が２次元センサである場合は、センサ走査方向をＹ軸方向に、センサ距離測定方向をＺ軸方向に取る。次に、短辺方向にスキャン動作する際に、ａ１とｃ１、ｂ１とｄ１をそれぞれ測定できるように（ａ１とｃ１等が１走査での測定範囲である点線内部に入るように）、位置検出センサ１０６のセンサ測定範囲が、ａ２とｃ２、ｂ２とｄ２間のそれぞれ適切な位置ａ３とｂ３（ｂ３は不図示であるが、断面Ｂにおける、ａ３に相当する位置である。）になる位置と高さを求める。そして、このａ３とｂ３の２点をそれぞれスキャン動作の基準となる教示点としてメモリ１０２３に格納する。
ここでは、長辺Ｗ１とＷ２を４等分してスキャン動作の点ａ〜ｄを決めたが、四隅からの距離が位置ズレ許容誤差分ΔＸよりも大きければ、任意のスキャン動作の点で良い。位置ズレ許容誤差分ΔＸを考慮するのは、Ｘ軸方向の位置ズレ量が大き過ぎた場合に、位置検出センサ１０６でワーク１０５の短辺の走査ができなくなることを避けるためである。
位置検出センサ１０６が１次元センサである場合には、短辺方向のスキャン動作は、ａ２とｃ２、ｂ２とｄ２を通る直線となるため、位置検出センサ１０６のセンサ測定開始及び終了位置ａ２〜ｄ２を教示点として、メモリ１０２３に格納する。【００１８】
Ｄ−３．短辺上のエッジ位置検出動作の教示（短辺方向のスキャン動作基準点の教示）
ワーク１０５の短辺Ｄ１とＤ２を２等分した位置をそれぞれ求めてｅ、ｆとし、ｅとｆを通る直線を求める。この直線上で、ワーク１０５の位置ズレ許容誤差分ΔＸだけ、外側に位置する仮想の点ｅ１、ｆ１を設定し、これらの位置ｅ１、ｆ１が位置検出センサ１０６の測定距離内に入るように、高さ調整分ΔＺだけ上方に位置する点をｅ２、ｆ２とする。
断面Ｃに示すように、位置検出センサ１０６が２次元センサである場合は、センサ走査方向をＸ軸方向に、センサ距離測定方向をＺ軸方向に取り、長辺方向のスキャン動作で、ｅ１とｆ１を通るように、位置検出センサ１０６のセンサ測定位置を、ｅ２とｆ２間の適切な位置ｅ３を求める。そして、このｅ３をスキャン動作の基準となる教示点として、メモリ１０２３に格納する。
ここでは短辺Ｄを２等分してスキャン動作の点ｅとｆを決めたが、四隅からの距離が位置ズレ許容誤差分ΔＹよりも大きければ、任意のスキャン動作の点で良い。位置ズレ許容誤差分ΔＹを考慮するのは、Ｙ軸方向の位置ズレ量が大き過ぎた場合に、位置検出センサ１０６でワーク１０５の長辺の走査ができなるからである。
位置検出センサ１０６が１次元センサである場合には、長辺方向のスキャン動作は、ｅ２とｆ２を通る直線となるため、位置検出センサ１０６のセンサ測定開始及び終了位置ｅ２とｆ２を教示点として、メモリ１０２３に格納する。
以上の手順により、スキャン動作用の教示位置を自動的に生成することができる。【００１９】
再生運転時の手順は、以下の３段階（Ｅ〜Ｇ）に分けることができる。【００２０】
Ｅ．再生運転時のスキャン動作
再生運転時には、上記作業プログラムが実行され、ワーク１０５をグリッパ１０４で把持する直前に前記スキャン動作のコマンドが処理されることで、位置検出センサ１０６でワーク１０５を３回計測する動作を行う。具体的には、位置検出センサ１０６が２次元センサである場合は、位置ａ３とｂ３とｅ３でそれぞれ１回走査を行う。位置検出センサ１０６が１次元センサである場合には、ａ２からｃ２へ、ｂ２からｄ２へ、ｅ２からｆ２へ、直線動作で走査することで計測する。【００２１】
Ｆ．修正量演算
位置検出センサ１０６の３回の計測により、ロボット座標でのワーク１０５の長辺と短辺の演算上のエッジ位置ａ〜ｆに対するエッジ実測定位置ａｍ〜ｆｍを求める。これらのエッジ演算位置ａ〜ｆと実測定位置ａｍ〜ｆｍの差がワークのずれ量となる。
具体的には、演算位置ａ〜ｄと実測定位置ａｍ〜ｄｍを頂点とする長方形をそれぞれ求め、以下の式（１）〜（３）により、ワーク１０５の姿勢のずれ量ｄＲｘ、ｄＲｙ、ｄＲｚを求めることができる。
エッジ演算位置ａ〜ｆを用いて求められるロボット座標のｘ、ｙ、ｚ軸周りのワーク１０５の傾きをそれぞれｄＲｘ１、ｄＲｙ１、ｄＲｚ１、同様に実測定位置ａｍ〜ｆｍを用いて求められる傾きをそれぞれｄＲｘ２、ｄＲｙ２、ｄＲｚ２とする。図４（ａ）に示すように、ｄＲｘ１はＹ軸対するエッジ演算位置ａとｃのなす角度から求められる。ｄＲｘ２はＹ軸対する実測定位置ａｍとｃｍのなす角度から求められる。このｄＲｘ１とｄＲｘ２の差が姿勢ずれ量ｄＲｘとなる。同じようにして、ｄＲｙとｄＲｚもそれぞれ求めることができる。【００２２】
ｄＲｘ＝ｄＲｘ１−ｄＲｘ２＝ｔａｎ−１（（ａｚ−ｃｚ）／（ａｙ−ｃｙ））
−ｔａｎ−１（（ａｚm−ｃｚm）／（ａｙm−ｃｙm））      式（１）【００２３】
ｄＲｙ＝ｄＲｙ１−ｄＲｙ２＝ｔａｎ−１（（ｆｚ−ｅｚ）／（ｆｘ−ｅｘ））
−ｔａｎ−１（（ｆｚm−ｅｚm）／（ｆｘm−ｅｘm））      式（２）【００２４】
ｄＲｚ＝ｄＲｚ１−ｄＲｚ２＝ｔａｎ−１（（ｂｙ−ａｙ）／（ｂｘ−ａｘ））
−ｔａｎ−１（（ｂｙm−ａｙm）／（ｂｘm−ａｘm））      式（３）【００２５】
ここで、
ａｘ、ａｘm：エッジ位置ａのＸ方向の演算位置、実測定位置
ａｙ、ａｙm：エッジ位置ａのＹ方向の演算位置、実測定位置
ａｚ、ａｚm：エッジ位置ａのＺ方向の演算位置、実測定位置
ｂｘ、ｂｘm：エッジ位置ｂのＸ方向の演算位置、実測定位置
ｂｙ、ｂｙm：エッジ位置ｂのＹ方向の演算位置、実測定位置
ｃｙ、ｃｙm：エッジ位置ｃのＹ方向の演算位置、実測定位置
ｃｚ、ｃｚm：エッジ位置ｃのＺ方向の演算位置、実測定位置
ｅｘ、ｅｘm：エッジ位置ｅのＸ方向の演算位置、実測定位置
ｅｚ、ｅｚm：エッジ位置ｅのＺ方向の演算位置、実測定位置
ｆｘ、ｆｘm：エッジ位置ｆのＸ方向の演算位置、実測定位置
ｆｚ、ｆｚm：エッジ位置ｆのＺ方向の演算位置、実測定位置【００２６】
次に、ワーク１０５の位置のずれ量ｄＸ、ｄＹ、ｄＺを求める。先ず、図４（ｂ）に示すように、先に求めた姿勢ずれ量ｄＲｘ〜ｄＲｚを用いて、実測定位置ａｍ〜ｆｍの値を補正して、エッジ演算位置ａ〜ｆと同一姿勢に直した実測定補正位置ａｍ１〜ｆｍ１を求める。その後、図４（ｃ）に示すように、ロボット座標系の軸毎に点のずれ量を求めて、軸毎に全点数分を平均して、以下の式（４）〜（６）により、各点の位置ずれ量を求めることができる。【００２７】
ｄＸ＝（（ａｘm１−ａｘ）＋（ｂｘm１−ｂｘ）＋（ｃｘm１−ｃｘ）＋（ｄｘm１−ｄｘ）
＋（ｅｘm１−ｅｘ）＋（ｆｘm１−ｆｘ））／６      式（４）【００２８】
ｄＹ＝（（ａｙm１−ａｙ）＋（ｂｙm１−ｂｙ）＋（ｃｙm１−ｃｙ）＋（ｄｙm１−ｄｙ）
＋（ｅｙm１−ｅｙ）＋（ｆｙm１−ｆｙ））／６      式（５）【００２９】
ｄＺ＝（（ａｚm１−ａｚ）＋（ｂｚm１−ｂｚ）＋（ｃｚm１−ｃｚ）＋（ｄｚm１−ｄｚ）
＋（ｅｚm１−ｅｚ）＋（ｆｚm１−ｆｚ））／６      式（６）【００３０】
ここで、
ｂｚ：エッジ位置ｂのＺ方向の演算位置
ｃｘ：エッジ位置ｃのＸ方向の演算位置
ｅｙ：エッジ位置ｅのＹ方向の演算位置
ｆｙ：エッジ位置ｆのＹ方向の演算位置
ｄｘ、ｄｘm１：エッジ位置ｄのＸ方向の演算位置、実測定姿勢補正位置
ｄｙ、ｄｙm１：エッジ位置ｄのＹ方向の演算位置、実測定姿勢補正位置
ｄｚ、ｄｚm１：エッジ位置ｄのＺ方向の演算位置、実測定姿勢補正位置
ａｘm１：エッジ位置ａのＸ方向の実測定姿勢補正位置
ａｙm１：エッジ位置ａのＹ方向の実測定姿勢補正位置
ａｚm１：エッジ位置ａのＺ方向の実測定姿勢補正位置
ｂｘm１：エッジ位置ｂのＸ方向の実測定姿勢補正位置
ｂｙm１：エッジ位置ｂのＹ方向の実測定姿勢補正位置
ｃｙm１：エッジ位置ｃのＹ方向の実測定姿勢補正位置
ｃｚm１：エッジ位置ｃのＺ方向の実測定姿勢補正位置
ｅｙm１：エッジ位置ｅのＹ方向の実測定姿勢補正位置
ｅｚm１：エッジ位置ｅのＺ方向の実測定姿勢補正位置
ｆｙm１：エッジ位置ｆのＹ方向の実測定姿勢補正位置
ｆｚm１：エッジ位置ｆのＺ方向の実測定姿勢補正位置【００３１】
なお、代表点を１点に絞って位置ずれ量を求めて、演算負荷を軽減しても良い。実測定位置ａｍ〜ｆｍの値を補正してエッジ演算位置ａ〜ｆと同一姿勢に直した実測定補正位置ａｍ１〜ｆｍ１を求めるのではなく、エッジ演算位置ａ〜ｆの値を補正して実測定位置ａｍ〜ｆｍと同一姿勢に直したエッジ演算補正位置を求めても良い。【００３２】
Ｇ．再生運転時の補正動作
前記スキャン動作のコマンド後の把持動作で、上記式（１）〜（６）で求めたワーク１０５の姿勢のずれ量ｄＲｘ、ｄＲｙ、ｄＲｚと位置のずれ量ｄＸ、ｄＹ、ｄＺを用いて、把持位置の位置および姿勢を修正することで、ワーク１０５をグリッパ１０４で正確に把持することができる。【００３３】
本実施例では、ワーク寸法入力部１０２４からワークの寸法データを入力するために、作業者が手入力していたが、ＣＡＤデータを利用して詳細なデータを入力しても良い。この場合は、長辺断面を計測する際に、ワーク上の凹凸などを考慮して凹凸を避けた位置をエッジ計測位置に選択することも可能となる。
また、本実施例では、教示時には把持位置の大まかな教示のみ実行し、再生運転時にワーク毎にスキャン動作を行い、把持位置修正量を求めて把持動作を行っていた。この手順は再生運転時もワークの位置決め誤差が大きい場合に適用される。しかし、位置決め誤差が小さい場合には、教示時には大まかに教示して、その直後にスキャン動作の指令を生成し、その場でスキャン動作させて詳細な教示位置を求めて、教示位置の修正量を作業プログラムに反映する。そして再生運転時はスキャン動作をしないという構成でも良い。【００３４】
本実施例によれば、ワーク教示位置を１点記憶して、そのワークの寸法データを入力する。前記ワーク教示位置とワーク寸法データから、グリッパ１０４に配置された位置検出センサが特定の計測動作ができるようにロボットの動作パターンを生成し、動作パターンによりロボットを動作させる。そのため、位置検出センサでワーク位置を取得してワークの位置および姿勢のずれ量を演算し、補正することができる。そのため、作業者はワーク位置を大まかに教示すれば、自動的に正確なワーク位置の取得や補正動作が可能である。
【実施例２】
【００３５】
前記実施例１では、１次元又は２次元の位置検出センサを、短辺方向のスキャン動作を２回と長辺方向のスキャン動作を１回の計３回測定動作を行うことで、ワーク１０５の位置および姿勢のずれ量を求めていた。本実施例では、２次元の位置検出センサを用いて動的に測定することで３次元センサとして使用する場合について述べる。
図５に示すように、位置検出センサ１０６が２次元センサである場合は、ワーク１０５の長辺に対して直角に、位置検出センサ１０６を移動させて、ワーク全体を連続して計測することによって、ワーク１０５の３次元形状を求める。これにより、位置および姿勢の修正量を求めることができる。この場合の開始位置と終了位置はｅ３１とｅ３２である。ｅ３１とｅ３２は、実施例１で求めたセンサ測定位置ｅ３をＹ軸方向にワーク１０５の位置ズレ許容誤差分ΔＹだけワーク１０５の外側に配置した点の位置である。この位置ｅ３１からｅ３２までを位置検出センサ１０６で連続して走査して３次元データを取得する。
このワーク１０５の３次元形状の測定データから、ワーク上面の長辺と短辺の直線を求め、これらの直線の中から、エッジ実測定位置ａｍ〜ｆｍを求める処理を追加する。エッジ実測定位置ａｍ〜ｆｍが求められた後は、実施例１と同様の演算を行う。【００３６】
本実施例によれば、一方向からの１回の計測により３次元の位置および姿勢を測定可能であるため、測定動作の時間が短くすることができる。
なお、上記実施例において、ワーク１０５が立方体の場合であっても、長辺と短辺を仮定することによって実施できることは明らかである。
【実施例３】
【００３７】
前記実施例１では、ワーク１０５が直方体形状（立方体を含む）であった。本実施例では、図６に示すように、ワーク１０５が円柱形状の場合について述べる。
実施例１に示したように、教示作業の４段階の内、Ａの大まかな位置の教示とＣのコマンド追加は本実施例でも同じである。Ｂのワーク形状入力では、円柱の外形寸法（例えば、直径および高さ）を入力する。Ｄのスキャン動作生成の手順は、実施例１と同じ手順を含んでいる。実施例１と同じ手順は、コントローラ１０２内の動作パターン生成部１０２５でメモリ１０２３に記憶された把持位置の位置および姿勢と、ワーク寸法入力部１０２４に記憶されたワークの形状寸法から、ロボット１０１に搭載した位置検出センサ１０６を移動させるための指令を自動生成する手順である。実施例１と異なる手順ついて以下に述べる。【００３８】
Ｄ−１．ロボット座標でのワークの位置および姿勢を演算
順変換等の変換をすることにより、把持中心位置ＨＣにおけるグリッパ１０４がロボット座標系でどの位置および姿勢にあるかを求める。把持中心位置ＨＣにおけるグリッパ１０４のロボット座標での位置および姿勢とワーク形状寸法とから、ワーク１０５の演算上の位置および姿勢をロボット座標で表すことができる。ワーク１０５の演算上の位置および姿勢は、ロボット座標系における２点（ワーク１０５の上面および下面の円中心）で表される。
ワーク１０５の演算上の位置および姿勢は、実際のワークの位置および姿勢からずれている。したがって、このワーク１０５の演算上の位置および姿勢を表す円中心２点は実際のワーク１０５の円中心２点のおおよその位置である。
なお、ワーク１０５の位置および姿勢は、ワーク１０５の円中心２点以外の方法で表現しても良い。【００３９】
Ｄ−２．円周上のエッジ位置検出動作の教示
図７にワーク１０５を上面から見た図を示す。ＸＹＺ軸は、ワーク座標系を表している。ワーク１０５の上面は、位置検出センサ１０６の測定面である。細線の円は、理想位置にある状態である。太線の円は、実際にワークが置かれた位置の状態である。理想位置にある円について、ワーク１０５の半径を２等分して円中心ＷＣからＸ軸方向に１／２の位置でＹ軸に沿った２本の直線を引いて円周と交わる位置をそれぞれ、ａ、ｂ、ｃ、ｄとする。円中心ＷＣからＸ軸に直線を引いて円周と交わる位置をｅ、ｆとする。円中心ＷＣからＹ軸に直線を引いて円周と交わる位置をｇ、ｈとする。ただし、円中心ＷＣから反対方向に等間隔離れた異なるワーク断面位置を求めることができれば、１／２の位置に限らず、任意の位置としてもよい。
理想位置を表す円上のａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈに対応する実際にワークが置かれた位置を示す円（太線の円）上の点を、それぞれ、ａａ、ｂｂ、ｃｃ、ｄｄ、ｅｅ、ｆｆ、ｇｇ、ｈｈとする。
これらの位置ａ〜ｄからワーク１０５の位置ズレ許容誤差分ΔＹより大きく外側に位置する仮想の点を、ａ１、ｂ１、ｃ１、ｄ１（ｂ１、ｄ１は不図示）とする。これらの位置ａ１〜ｄ１が位置検出センサ１０６の測定距離内に入るように、高さ調整分ΔＺだけ上方に位置する点をａ２、ｂ２、ｃ２、ｄ２とする。
断面Ａに示すように、位置検出センサ１０６が２次元センサである場合は、センサ走査方向をＹ軸方向に、センサ距離測定方向をＺ軸方向に取る。次に、Ｙ軸方向にスキャン動作する際に、ａ１とｃ１、ｂ１とｄ１をそれぞれ測定できるように（ａ１とｃ１等が１走査での測定範囲である点線内部に入るように）、位置検出センサ１０６のセンサ測定範囲が、ａ２とｃ２、ｂ２とｄ２間のそれぞれ適切な位置ａ３とｂ３（ｂ３は不図示であるが、断面Ｂにおける、ａ３に相当する位置である。）になる位置と高さを求める。このａ３とｃ３の２点をそれぞれスキャン動作の基準となる教示点としてメモリ１０２３に格納する。
ここでは半径を２等分してスキャン動作の点ａ〜ｄを決めたが、ｅやｆからの距離が位置ズレ許容誤差分ΔＸよりも大きければ、予め設定された固定値に応じて決めても良い。
位置検出センサ１０６が１次元センサである場合には、スキャン動作は、ａ２とｃ２、ｂ２とｄ２を通る直線となるため、位置検出センサ１０６のセンサ測定開始及び終了位置ａ２〜ｄ２を教示点として、メモリ１０２３に格納する。
以上により、スキャン動作用の教示位置を自動的に生成することができる。【００４０】
再生運転時の手順は、実施例１に示したように、３段階（Ｅ〜Ｇ）に分けることができる。Ｇの再生運転時の補正動作は実施例１と同じである。【００４１】
Ｅ．再生運転時のスキャン動作
再生運転時には、上記作業プログラムが実行され、ワーク１０５をグリッパ１０４で把持する直前に前記スキャン動作のコマンドが処理されることで、位置検出センサ１０６でワーク１０５を２回計測する動作を行う。具体的には、位置検出センサ１０６が２次元センサである場合は、位置ａ３とｂ３でそれぞれ１回走査を行う。位置検出センサ１０６が１次元センサである場合には、ａ２からｃ２へ、ｂ２からｄ２へ、直線動作で行うことで計測する。【００４２】
Ｆ．修正量演算
位置検出センサ１０６で２回の計測することにより、ロボット座標でのワーク１０５に関する円周の演算上のエッジ位置ａ〜ｄに対するエッジ実測定位置ａａ〜ｄｄを求める。これらエッジ演算位置ａ〜ｄと実測定位置ａａ〜ｄｄの差がワークのずれ量となる。
具体的な演算方法は、以下の通りである。４点の位置の内、３点を使用し（ここではｄを除く）、それらの位置から円中心位置を求める。ここで、これら３点の座標をａ（Ｘ１、Ｙ１）、  ｂ（Ｘ２、Ｙ２）、ｃ（Ｘ３、Ｙ３）とする。線分ａｂの中点座標（Ｘ４、Ｙ４）を求める。
Ｘ４＝（Ｘ１＋Ｘ２）÷２      式（７）
Ｙ４＝（Ｙ１＋Ｙ２）÷２      式（８）
中点座標（Ｘ４、Ｙ４）を通って、線分ａｂと直交する線のＸ軸に対する角度をＡとすると
Ａ＝ｔａｎ-１｛（Ｙ２−Ｙ１）÷（Ｘ２−Ｘ１）｝＋９０      式（９）
となる。
同様に、線分ｂｃの中点座標（Ｘ５、Ｙ５）を求める。
Ｘ５＝（Ｘ２＋Ｘ３）÷２      式（１０）
Ｙ５＝（Ｙ２＋Ｙ３）÷２      式（１１）
中点座標（Ｘ５、Ｙ５）を通って、線分ｂｃと直交する線のＸ軸に対する角度をＢとすると
Ｂ＝ｔａｎ-１｛（Ｙ３−Ｙ２）÷（Ｘ３−Ｘ２）｝＋９０      式（１２）
となる。
ここで、線分ａｂの中点座標（Ｘ４、Ｙ４）を通る角度Ａの直線の方程式と、中点座標（Ｘ５、Ｙ５）を通る角度Ｂの直線の方程式をつくり、連立方程式を解くと、円中心座標（ＸＣ、ＹＣ）を求めることができる。
ＸＣ＝Ｘ４＋｛（Ｙ５−Ｙ４）−（Ｘ５−Ｘ４）ｔａｎＢ｝
÷（ｔａｎＡ−ｔａｎＢ）        式（１３）
ＹＣ＝Ｙ４＋（ＸＣ−Ｘ４）ｔａｎＢ      式（１４）
同様に、実測定位置ａａ〜ｄｄに関しても円中心座標（ＸＣ１、ＹＣ１）を求めることで、理想位置の円中心座標（ＸＣ、ＹＣ）との差分を求めて、位置修正量とする。【００４３】
本実施例によれば、円柱ワークのワーク教示位置を１点記憶して、そのワークの寸法データ（半径や高さ等）を入力する。この前記ワーク教示位置とワーク寸法データから、グリッパ１０４に配置された位置検出センサが特定の計測動作ができるようにロボットの動作パターンを生成する。この動作パターンによりロボットを動作させることで、位置検出センサでワーク位置を取得してワークの位置および姿勢のずれ量を演算し、補正することができる。したがって、作業者はワーク位置を大まかに教示すれば、自動的に正確なワーク位置の取得や補正動作が可能である。
【実施例４】
【００４４】
前記実施例３では、１次元又は２次元の位置検出センサを、円中心から一定距離の位置で２回スキャン動作を行うことで、ワーク１０５の位置および姿勢のずれ量を求めていた。本実施例では、２次元の位置検出センサを用いて動的に測定することで３次元センサとして使用する場合について述べる。
図７に示すように、位置検出センサ１０６が２次元センサである場合は、ワーク１０５のＸ軸方向に位置検出センサ１０６を移動させ、ワーク全体を連続して計測し、ワーク１０５の３次元形状を求める。これにより、位置および姿勢の修正量を求めることができる。この場合の開始位置と終了位置は、以下のように定義される。実施例３で求めた円周上の点ｅとｆを通る直線上で、ワーク１０５の位置ズレ許容誤差分ΔＸだけ、外側に位置する仮想の点ｅ１、ｆ１を設定する。これらの位置ｅ１、ｆ１が位置検出センサ１０６の測定距離内に入るように、高さ調整分ΔＺだけ上方に位置する点をそれぞれ開始位置ｅ２、終了位置ｆ２とする。
断面Ｃに示すように、位置検出センサ１０６が２次元センサである場合は、センサ走査方向をＹ軸方向に、センサ距離測定方向をＺ軸方向に取り、ｅ２とｆ２をスキャン動作の基準となる教示点として、メモリ１０２３に格納する。
再生運転時には、位置ｅ２からｆ２までを位置検出センサ１０６で連続して走査して３次元データを取得する。
このワーク１０５の３次元形状の測定データから、ワーク上面の円中心位置求める処理を追加する。円中心は、実施例３と同様の円周上の位置（３点又は４点）を求めてから円中心位置を求める。【００４５】
本実施例によれば、一方向からの１回の計測により円柱ワークの３次元の位置および姿勢を測定可能であるため、測定動作の時間が短くすることが可能となる。
【実施例５】
【００４６】
前記実施例３では、理想位置にある円の位置と実際に測定した円の位置を比較して位置ずれ量を求めていた。本実施例では、位置ずれ量に一定以上の誤差がある場合に再度測定することで、検出の失敗等を防ぐ方法について述べる。
図８（ａ）のフローチャートに従って説明する。ワーク１０５は直方体とする。
教示作業としては、実施例１と同様の４段階（Ａ〜Ｄ）を実施し、再生運転時の作業も実施例１と同様の３段階（Ｅ〜Ｇ）を実施する。実施例１との違いは、Ｆの修正量演算を終わった段階で、位置と姿勢のずれ量が予め設定された閾値を超えていた場合に、再度、Ｅの再生運転時のスキャン動作からやり直すことである。
位置検出センサがレーザセンサの場合には、ワーク１０５のエッジ部分でレーザの乱反射が大きくなり、ワークのエッジ位置の検出誤差が大きくなる場合がある。しかし、スキャン動作の測定を繰り返すことでエッジ位置を正確に求めることができる。また、複数回のスキャン動作の測定結果を平均して、平均値からエッジ位置を求めることで、安定した測定も可能である。【００４７】
本方式によれば、理想位置にある円の位置と実際に測定した円の位置を比較して位置ずれ量を求め、位置ずれ量に一定以上の誤差がある場合に再測定し直すことで、検出の失敗等を防ぐことができる。また、ワーク１０５のエッジ部分で乱反射するような場合でも複数回の測定データを平均化することで安定したエッジ位置検出が可能となる。
【実施例６】
【００４８】
前記実施例５では、理想位置にある円の位置と実際に測定した円の位置を比較して予め決められた一定量以上の誤差がある場合には再計測し直すことで、検出誤差を減少させていた。本実施例では、検出の失敗が多い場合に測定方向を変更することで検出の失敗等を防ぐ場合について述べる。
図８（ｂ）のフローチャートに従って、説明する。実施例５と同様に、ワーク１０５は直方体である。
実施例５と同様に、教示作業としては４段階（Ａ〜Ｄ）、再生運転時の作業も３段階（Ｅ〜Ｇ）を実施する。実施例５との違いは、Ｆの修正量演算を終わった段階で、位置と姿勢のずれ量が予め設定された閾値を超えていた場合に、再度、Ｅの再生運転時のスキャン動作からやり直すが、やり直す回数が所定回数に達した場合に、Ｄのスキャン動作の生成に戻ることである。
Ｄのスキャン動作の生成で、例えば実施例１や５では、長辺上のエッジ位置検出動作は、断面Aであればエッジ位置ａからｃに向かう向きにスキャン動作し、位置ずれ量が一定以上の誤差があり、測定をやり直す回数が所定回数に達した場合にはスキャン動作方向を変更する。具体的には、長辺上のエッジ位置検出動作は、断面Ａであればエッジ位置ｃからａに向かう向きにスキャン動作を行う。また、例えば実施例３では、図７に示すように円柱ワークでＹ軸方向にスキャン動作し、位置ずれ量が一定以上の誤差があり、測定をやり直す回数が所定回数に達した場合にはスキャン動作方向をＸ軸方向にして、スキャン動作を行う。
なお、動作方向を変更せずに、ワーク１０５の長辺Ｗ１とＷ２を４等分せずに、両端から所定距離の位置に変更しても良い。動作方向を変更せずに、ロボットの測定する姿勢を変更する方法でも良い。図３でＸ軸周りに位置検出センサを回転させて、エッジへのレーザの照射角度を変更して対応しても良い。【００４９】
本実施例によれば、理想位置にある円の位置と実際に測定した円の位置を比較して位置ずれ量を求め、位置ずれ量に一定以上の誤差がある場合に再測定し、検出の失敗が多い場合に測定方向を変更することで検出の失敗等を防ぐことができる。また、動作方向を変更せずに、ロボットの測定する姿勢を変更することで、エッジへのレーザの照射角度を変更し、検出の失敗等を防ぐこともできる。
【産業上の利用可能性】
【００５０】
本発明は、溶接・塗装・組立等を用途とするロボットの教示再生運転において、
作業者が大まかに教示した位置を位置検出センサとワーク教示位置とワーク寸法データを利用してワークの詳細な３次元の位置および姿勢を取得して補正することが可能となる。
【図１】
2009025271.tif 000002
【図２】
2009025271.tif 000003
【図３】
2009025271.tif 000004
【図４】
2009025271.tif 000005
【図５】
2009025271.tif 000006
【図６】
2009025271.tif 000007
【図７】
2009025271.tif 000008
【図８】
2009025271.tif 000009