(57)【要約】【課題】ロボット教示プログラムを教示修正するのに必要な時間等を大幅に削減する。【解決手段】ロボット教示プログラム修正装置（１）は、ワーク（２０）の画像を取得する撮像部（６）と、プログラム（１３）の各教示点の三次元位置と撮像部により取得されたワークの画像とに基づいて、ワークの画像上における各教示点の二次元位置を計算する二次元位置計算部（１１ａ）と、ワークの画像とワークの画像上における各教示点の二次元位置とを表示する表示部（５ａ）と、ワークの画像における明暗差に基づいてワークのバリ取り箇所を自動的に抽出する抽出部（１１ｂ）と、教示点の二次元位置が、バリ取り箇所に一致するように変更する教示点位置変更部（１１ｃ）と、変更後のワークの画像上における各教示点の二次元位置とロボット教示プログラムの各教示点とに基づいて、プログラムの各教示点の三次元位置を変更するプログラム変更部（１１ｇ）とを含む。【選択図】図３
2010182210.tif 000002
【特許請求の範囲】
【請求項１】
加工対象ワークをツールによりバリ取り加工するロボットのためのロボット教示プログラムを修正するロボット教示プログラム修正装置において、
前記加工対象ワークの画像を取得する撮像部と、
バリ取り加工用の前記ロボット教示プログラムに含まれる各教示点の三次元位置と前記撮像部により取得された前記加工対象ワークの画像とに基づいて、前記加工対象ワークの画像上における前記各教示点の二次元位置を計算する二次元位置計算部と、
前記加工対象ワークの画像と、前記二次元位置計算部により計算された前記加工対象ワークの画像上における前記各教示点の二次元位置とを表示する表示部と、
前記加工対象ワークの画像における明暗差に基づいて前記加工対象ワークのバリ取り箇所を自動的に抽出する抽出部と、
前記加工対象ワークの画像上に表示された前記教示点の二次元位置が、前記抽出部により抽出された前記バリ取り箇所に一致するように変更する教示点位置変更部と、
該教示点位置変更部により変更された前記加工対象ワークの画像上における前記各教示点の二次元位置と前記ロボット教示プログラムに含まれる前記各教示点とに基づいて、前記ロボット教示プログラムに含まれる前記各教示点の三次元位置を変更するプログラム変更部とを具備する、ロボット教示プログラム修正装置。
【請求項２】
さらに、少なくとも一つの前記教示点が前記バリ取り箇所に一致するように変更されるように前記教示点の変更後の位置を指定する位置指定部を含む請求項１に記載のロボット教示プログラム修正装置。
【請求項３】
さらに、前記表示部に表示された前記教示点のうちの隣接する二つの教示点を指定する指定部と、
該指定部により指定された二つの教示点の間に少なくとも一つの追加教示点を配置する教示点追加部と、を具備し、
前記プログラム変更部は前記追加教示点の三次元位置を計算して前記ロボット教示プログラムに前記追加教示点を追加する請求項１または２に記載のロボット教示プログラム修正装置。
【請求項４】
さらに、前記ロボット教示プログラムをシミュレーションするシミュレーション部を具備し、
前記表示部は、前記シミュレーション部により得られたロボットの軌跡を表示する請求項１から３のいずれか一項に記載のロボット教示プログラム修正装置。
【請求項５】
前記表示部は、前記ロボットの前記ツールの三次元モデルを前記加工対象ワークの画像上に表示し、
前記ロボット教示プログラム修正装置はさらに、
前記ロボットの前記ツールの先端が前記加工対象ワークに干渉しないように、前記ツールの三次元モデルのツール姿勢を変更するツールモデル姿勢変更部と、
該ツールモデル姿勢変更部により変更された前記ツールの三次元モデルのツール姿勢に基づいて前記ツールの三次元姿勢を計算するツール姿勢計算部と、
該ツール姿勢計算部により計算された前記ツールの三次元姿勢に基づいて、前記ロボット教示プログラムに含まれる前記ツールの三次元姿勢を変更するツール姿勢変更部とを具備する請求項１から４のいずれか一項に記載のロボット教示プログラム修正装置。
【請求項６】
前記表示部は、前記加工対象ワークの三次元モデルを表示し、
前記ロボット教示プログラム修正装置はさらに、
前記加工対象ワークの三次元モデルにおいて撮像されるべきバリ取り箇所を指定する指定部と、
該指定部により指定された前記バリ取り箇所を前記撮像部により撮像するための前記ロボット教示プログラムを自動的に作成するプログラム作成部とを具備する、請求項１から４のいずれか一項に記載のロボット教示プログラム修正装置。
【請求項７】
前記表示部は、前記加工対象ワークの六面体から構成される三次元モデルを表示し、
前記撮像部は前記加工対象ワークの少なくとも一つの面を撮像し、
前記シミュレーション部は、前記撮像部により撮像された前記加工対象ワークの前記面の画像を前記加工対象ワークの三次元モデルの対応する面に貼付けるようにした、請求項４に記載のロボット教示プログラム修正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット教示プログラム、特にバリ取り加工用のロボット教示プログラムを修正するロボット教示プログラム修正装置に関する。
【背景技術】
【０００２】
工場の製造ラインなどにおいては、ロボットが加工対象ワークのバリを除去することが広く知られている。具体的には、ロボットにバリ取り用の加工ツールを取付けると共に、加工対象ワークを所定位置に固定する。そして、加工ツールを所定圧力で加工対象ワークのバリ取り面に押圧しながらバリ取り面に沿って移動させてバリを除去している。
【０００３】
このようなロボットの動作は通常はコンピュータ制御されている。そして、ロボットのプログラムは、ワーク形状などに応じて事前に生成されている。例えば特許文献１においては、視覚センサにより得られた除去対象物の形状データ、ＣＡＤ情報からの仕上げ部分の状態データを利用して、最適な仕上加工パラメータを導出することが開示されている。
【０００４】
さらに、特許文献２は、ワークの画像を表示するモニタ上の複数の位置をポインティングデバイスにより指定し、ポインティングデバイスにより指示された順番に従ってワークを加工するプログラムを作成することを開示している。
【０００５】
また、特許文献３は、ワークの画像からワーク形状を表す形状データを演算してワーク形状を検出し、ワーク形状の種類に応じて予め定めたロボットの作業工程に関する登録データと検出されたワーク形状とを参照し、所望の作業をロボットに指示するためのプログラムを生成することを開示している。
【０００６】
さらに、特許文献４は、ワーク画像より加工軌跡の位置座標を検出し、検出された加工軌跡の位置座標より教示点の位置座標を算出し、算出された教示点の連続性を基に姿勢ベクトルを算出するロボットの教示装置を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３４２７３８９号明細書
【特許文献２】特許第３４５０６０９号明細書
【特許文献３】特許第３５１７５２９号明細書
【特許文献４】特許第３５４３３２９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ワークのバリ取り箇所は、ワークのロットに応じて、またはワークの供給元に応じて異なる場合がある。また、操作者がワークの三次元モデルにおける加工線を指定した場合であっても、同様な理由によりバリ取り箇所が異なる場合もある。このような場合には、バリ取り作業を正確に行うためにロボットの教示プログラムを手動で修正する必要がある。
【０００９】
さらに、教示プログラムを修正した後においては、ロボットを実際に動作させて動作確認する必要がある。そして、修正後の教示プログラムでワークのバリ取り加工が良好に行えない場合、例えばバリ取り工具とワークとが干渉して加工できない場合には、バリ取りが正確に行えるのを確認できるまで、教示プログラムを繰返し修正していた。このため、教示プログラムの修正作業とその確認作業には多大な時間を必要としていた。
【００１０】
さらに、ロボットに取付けられた撮像部、例えばカメラによりワークを撮像する場合には、ワークを撮像する位置を決定するために、ロボットの位置姿勢をジョグ送りなどで微調整して教示する必要がある。このようなことは操作者にとって煩雑であり、また時間を多大に消費することとなる。
【００１１】
本発明はこのような事情に鑑みてなされたものであり、ロボット教示プログラムを教示修正するのに必要とされる時間および工数を大幅に削減することのできるロボット教示プログラム修正装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前述した目的を達成するために１番目の発明によれば、加工対象ワークをツールによりバリ取り加工するロボットのためのロボット教示プログラムを修正するロボット教示プログラム修正装置において、前記加工対象ワークの画像を取得する撮像部と、バリ取り加工用の前記ロボット教示プログラムに含まれる各教示点の三次元位置と前記撮像部により取得された前記加工対象ワークの画像とに基づいて、前記加工対象ワークの画像上における前記各教示点の二次元位置を計算する二次元位置計算部と、前記加工対象ワークの画像と、前記二次元位置計算部により計算された前記加工対象ワークの画像上における前記各教示点の二次元位置とを表示する表示部と、前記加工対象ワークの画像における明暗差に基づいて前記加工対象ワークのバリ取り箇所を自動的に抽出する抽出部と、前記加工対象ワークの画像上に表示された前記教示点の二次元位置が、前記抽出部により抽出された前記バリ取り箇所に一致するように変更する教示点位置変更部と、該教示点位置変更部により変更された前記加工対象ワークの画像上における前記各教示点の二次元位置と前記ロボット教示プログラムに含まれる前記各教示点とに基づいて、前記ロボット教示プログラムに含まれる前記各教示点の三次元位置を変更するプログラム変更部とを具備する、ロボット教示プログラム修正装置が提供される。
【００１３】
すなわち１番目の発明においては、各教示点の位置が加工対象ワークの画像におけるバリ取り箇所に一致するように自動的に変更され、変更後における各教示点の位置がロボット教示プログラムに保存される。このため、ロボット教示プログラムを教示修正するのに必要とされる時間および工数を大幅に削減することができる。
【００１４】
２番目の発明によれば、１番目の発明において、さらに、少なくとも一つの前記教示点が前記バリ取り箇所に一致するように変更されるように前記教示点の変更後の位置を指定する位置指定部を含む。
すなわち２番目の発明においては、各教示点の位置が加工対象ワークの画像におけるバリ取り箇所に一致するように操作者が手動により容易に変更できる。これにより、ロボット教示プログラムを教示修正するのに必要とされる時間および工数をさらに削減できる。なお、入力部は、キーボードまたはマウス、もしくは教示操作盤である。
【００１５】
３番目の発明によれば、１番目または２番目の発明において、さらに、前記表示部に表示された前記教示点のうちの隣接する二つの教示点を指定する指定部と、該指定部により指定された二つの教示点の間に少なくとも一つの追加教示点を配置する教示点追加部と、を具備し、前記プログラム変更部は前記追加教示点の三次元位置を計算して前記ロボット教示プログラムに前記追加教示点を追加する。
すなわち３番目の発明においては、教示点の数が不足する場合に追加教示点を容易に配置できる。その結果、ワークの形状に応じて、より適切なバリ取り加工が可能となる。なお、追加教示点の数は、操作者が選択できるものとする。また、指定部は、例えばマウスである。
【００１６】
４番目の発明によれば、１番目から３番目のいずれかの発明において、さらに、前記ロボット教示プログラムをシミュレーションするシミュレーション部を具備し、前記表示部は、前記シミュレーション部により得られたロボットの軌跡を表示する。
すなわち４番目の発明においては、シミュレーションにより得られたバリ取り加工の軌跡を表示するので、加工対象ワークのバリ取り箇所を適切にバリ取り加工できるか否かを事前に確認することができる。
【００１７】
５番目の発明によれば、１番目から４番目のいずれかの発明において、前記表示部は、前記ロボットの前記ツールの三次元モデルを前記加工対象ワークの画像上に表示し、前記ロボット教示プログラム修正装置はさらに、前記ロボットの前記ツールの先端が前記加工対象ワークに干渉しないように、前記ツールの三次元モデルのツール姿勢を変更するツールモデル姿勢変更部と、該ツールモデル姿勢変更部により変更された前記ツールの三次元モデルのツール姿勢に基づいて前記ツールの三次元姿勢を計算するツール姿勢計算部と、該ツール姿勢計算部により計算された前記ツールの三次元姿勢に基づいて、前記ロボット教示プログラムに含まれる前記ツールの三次元姿勢を変更するツール姿勢変更部とを具備する。
すなわち５番目の発明においては、ツールの三次元モデルのツール姿勢を変更した後で、プログラムに含まれるツールの三次元姿勢を変更している。このため、実際の動作においてもツールの先端が加工対象ワークに干渉しないようにできる。従って、ロボット教示プログラムを教示修正するのに必要とされる時間および工数をさらに削減できる。
【００１８】
６番目の発明によれば、１番目から４番目のいずれかの発明において、前記表示部は、前記加工対象ワークの三次元モデルを表示し、前記ロボット教示プログラム修正装置はさらに、前記加工対象ワークの三次元モデルにおいて撮像されるべきバリ取り箇所を指定する指定部と、該指定部により指定された前記バリ取り箇所を前記撮像部により撮像するための前記ロボット教示プログラムを自動的に作成するプログラム作成部とを具備する。
すなわち６番目の発明においては、実際の現場でロボットを撮像位置まで移動させて教示を行うことなしに、オフラインで撮像用のプログラムを作成できる。このため、バリ取り箇所の撮像工程を教示するのに必要とされる時間および工数を削減できる。
【００１９】
７番目の発明によれば、４番目の発明において、前記表示部は、前記加工対象ワークの六面体から構成される三次元モデルを表示し、前記撮像部は前記加工対象ワークの少なくとも一つの面を撮像し、前記シミュレーション部は、前記撮像部により撮像された前記加工対象ワークの前記面の画像を前記加工対象ワークの三次元モデルの対応する面に貼付けるようにした。
すなわち７番目の発明においては、三次元空間に実際の加工対象ワークの擬似的なモデルを配置できる。従って、シミュレーションによるバリ取り加工の事前確認をより正確に行うことができる。
【図面の簡単な説明】
【００２０】
【図１】（ａ）本発明に基づくロボット教示プログラム修正装置のブロック図である。（ｂ）本発明に基づく他のロボット教示プログラム修正装置のブロック図である。
【図２】コントローラのブロック図である。
【図３】本発明の第一の実施形態に基づくロボット教示プログラム修正装置の動作を説明するためのフローチャートである。
【図４】（ａ）上方から撮像されたワークの画像が表示された表示部を示す図である。（ｂ）側方から撮像されたワークの画像が表示された表示部を示す図である。
【図５】（ａ）教示点が表示されている、図４（ａ）と同様な図である。（ｂ）教示点が表示されている、図４（ｂ）と同様な図である。
【図６】（ａ）バリ取り箇所がエッジ情報として表示された、図４（ａ）と同様な図である。（ｂ）さらに教示点が表示された図６（ａ）と同様な図である。（ｃ）教示点の位置を変更した後における図６（ｂ）と同様の図である。
【図７】（ａ）教示点位置を変更するのを説明するための図４（ａ）と同様な図である。（ｂ）教示点位置を変更するのを説明するための図４（ｂ）と同様な図である。
【図８】追加教示点を追加するのを説明するためのフローチャートである。
【図９】（ａ）追加教示点を説明するための、図４（ａ）と同様な図である。（ｂ）追加教示点を説明するための、図４（ａ）と同様な他の図である。
【図１０】シミュレーション軌跡の表示を説明するためのフローチャートである。
【図１１】ツールモデルの姿勢の変更を説明するためのフローチャートである。
【図１２】（ａ）ツールモデルが表示された、図４（ｂ）と同様な図である。（ｂ）ツールモデルの姿勢の修正を説明するための、図４（ｂ）と同様な図である。（ｃ）ツールモデルの姿勢を操作者が修正するのを説明するための、図４（ｂ）と同様な図である。
【図１３】ロボット教示プログラムの作成を説明するためのフローチャートである。
【図１４】（ａ）加工線が表示された、図４（ａ）と同様の図である。（ｂ）バリ取り箇所と加工線とが表示された、図４（ａ）と同様の図である。（ｃ）加工線が変更された状態を示す、図４（ａ）と同様の図である。
【図１５】ワークを撮像するためのプログラムの作成を説明するためのフローチャートである。
【図１６】（ａ）表示部と、表示部に表示される内容とを示す図である。（ｂ）表示部と、表示部に表示される内容とを示す他の図である。
【図１７】三次元モデルの作成を説明するためのフローチャートである。
【図１８】三次元モデルの作成を説明するための斜視図である。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照して本発明の実施形態を説明する。以下の図面において同様の部材には同様の参照符号が付けられている。理解を容易にするために、これら図面は縮尺を適宜変更している。
図１（ａ）は本発明に基づくロボット教示プログラム修正装置１のブロック図である。図１（ａ）においては、バリ取り工具３が先端に取付けられた多関節ロボット２がコントローラ１０に接続されている。図示されるように、撮像部６、例えばＣＣＤカメラがバリ取り工具３近傍においてロボット２のアームに取付けられている。図１（ａ）から分かるように、撮像部６は、台座１９に載置された加工対象ワーク２０を撮像するのに使用される。
【００２２】
コントローラ１０には、教示操作盤４およびコンピュータ５が接続されている。撮像部６により撮像されたワーク２０の画像は、教示操作盤４の表示部４ａおよび／またはコンピュータ５の表示部５ａに表示できるようになっている。また、コンピュータ５には、入力部７および指定部８が接続されている。入力部７はキーボードまたはマウスであってよく、指定部８はマウスであるのが好ましい。
【００２３】
ところで、図１（ｂ）は本発明に基づく他のロボット教示プログラム修正装置１のブロック図である。図１（ｂ）においては、撮像部６は多関節ロボット２に取付けられてはおらず、撮像部６は、スタンド６ａによってワーク２０を撮像可能な位置に固定されている。スタンド６ａはワーク２０を側方から撮像するのに使用される。また、図面には示さないものの、他のスタンドはワーク２０を他の位置、例えば上方から撮像するときに使用される。以下の説明においては、図１（ａ）に示される実施形態について説明するが、本発明の内容は図１（ｂ）に示される実施形態についても概ね同様である。
【００２４】
図２はコントローラのブロック図である。コントローラ１０は、ＣＰＵ１１と記憶部１２とを主に含んでいる。なお、図２は一つの実施例を示しているにすぎず、コンピュータ５の表示部５ａに基づいて操作する場合には、コントローラ１０の代わりに、コンピュータ５が図２に示されるＣＰＵ１１および記憶部１２を含んでいるのが好ましい。さらに、教示操作盤４の表示部４ａに基づいて操作する場合には、教示操作盤４が、図２に示されるＣＰＵ１１および記憶部１２を含むものとする。ここで、記憶部１２は、バリ取り加工を行うための複数の教示点Ｐ１〜Ｐｎを含むロボット教示プログラム１３を記憶している。ロボット教示プログラム１３に含まれる教示点Ｐ１〜Ｐｎのそれぞれは三次元位置として定義されている。また、ロボット教示プログラム１３は、教示点Ｐ１〜Ｐｎにおけるバリ取り工具３の三次元姿勢を含んでいる。
【００２５】
さらに、記憶部１２に記憶されるモデルデータ１４は、バリ取り工具３の三次元モデルであるツールモデル１５と、ワーク２０の三次元モデルであるワークモデル１６と、多関節ロボット２の三次元モデルであるロボットデータ１７とを含んでいる。なお、ロボットデータ１７は、ロボット２自体のモデルに加えて、撮像部６の三次元モデルも含むものとする。
【００２６】
また、図２から分かるように、ＣＰＵ１１は、ロボット教示プログラム１３の教示点Ｐ１〜Ｐｎのそれぞれの三次元位置とワーク２０の画像とに基づいて、ワーク２０の画像上における教示点Ｐ１〜Ｐｎのそれぞれの二次元位置を計算する二次元位置計算部１１ａと、ワーク２０の画像における明暗差に基づいてワーク２０のバリ取り箇所を自動的に抽出する抽出部１１ｂと、教示点Ｐ１〜Ｐｎのそれぞれがバリ取り箇所に一致するように変更する教示点位置変更部１１ｃと、変更された教示点Ｐ１〜Ｐｎのそれぞれの二次元位置とロボット教示プログラム１３に含まれる教示点とに基づいて、ロボット教示プログラム１３の教示点Ｐ１〜Ｐｎの三次元位置を変更するプログラム変更部１１ｄとしての役目を果たす。また、プログラム変更部１１ｄは、後述する追加教示点の三次元位置を計算してロボット教示プログラムに追加教示点を追加する役目も果たす。
【００２７】
さらに、ＣＰＵ１１は、指定部８により指定された二つの教示点の間に少なくとも一つの追加教示点を配置する教示点追加部１１ｅと、ロボット教示プログラム１３をシミュレーションするシミュレーション部１１ｇとを含んでいる。
【００２８】
さらに、ＣＰＵ１１は、バリ取り工具３のツールモデル１５がワーク２０の画像に干渉しないようにツールモデル１５のツール姿勢を変更するツールモデル姿勢変更部１１ｈと、変更後のツール姿勢に基づいてバリ取り工具３の三次元姿勢を計算するツール姿勢計算部１１ｉと、計算された三次元姿勢に基づいてロボット教示プログラム１３内のバリ取り工具３の三次元姿勢を変更するツール姿勢変更部１１ｊとしての役目を果たす。
【００２９】
さらに、ＣＰＵ１１は、ワークモデル１６のうちの指定された加工線がバリ取り箇所に一致するように変更する加工線変更部１１ｋと、変更後の加工線の二次元位置からその三次元位置を計算して加工線の三次元位置を変更する加工線位置計算部１１ｌと、変更後の加工線に基づいてバリ取り加工されるべき教示点を生成する教示点生成部１１ｍとを含む。さらに、ＣＰＵ１１は、ワークモデル１６において指定されたバリ取り箇所を撮像部６によって撮像するためにロボット教示プログラム１３を自動的に作成するプログラム作成部１１ｎを含んでいる。
【００３０】
図３は、本発明の第一の実施形態に基づくロボット教示プログラム修正装置の動作を説明するためのフローチャートである。以下、図３を参照しつつ、ロボット教示プログラム修正装置の動作を説明する。
【００３１】
はじめに、図３のステップ１０１において、撮像部６が台座１９上のワーク２０を撮像する。このとき、多関節ロボット２がワーク２０の撮像位置まで移動し、それにより、ワーク２０は、少なくともその上方および／または側方から撮像される。当然のことながら、他の方向からワーク２０を撮像することも可能である。
【００３２】
次いで、ステップ１０２において、教示操作盤４またはコンピュータ５を操作して、ワーク２０の画像を記憶部１２に記憶させる。このとき、予め設定された撮像部６のキャリブレーションデータ、およびロボット２の撮像位置も取得する。なお、図１（ｂ）に示される実施形態においては、ロボット２の撮像位置の代わりに、スタンド６ａ等の寸法データが取得されるものとする。
【００３３】
次いで、ステップ１０３において、ワーク２０の画像を教示操作盤４の表示部４ａおよび／またはコンピュータ５の表示部５ａに表示する。図４（ａ）および図４（ｂ）は、上方および側方から撮像されたワーク２０の画像が表示された表示部５ａを例として示す図である。簡潔にする目的で、以下においては、コンピュータ５の表示部５ａに表示された画像について説明するが、教示操作盤４の表示部４ａに表示される場合も同様である。
【００３４】
図４（ａ）および図４（ｂ）を参照して分かるように、本実施形態で使用されるワーク２０は、ベース２１と、ベース２１から隆起する隆起部２２とを備えていて、隆起部２２の上面には二つの開口部２３が形成されている。ただし、他の形状のワーク２０であっても本発明を適用できるものとする。
【００３５】
再び図３を参照すると、ステップ１０４において、二次元位置計算部１１ａは、撮像部６のキャリブレーションデータ、撮像時におけるロボット２の位置を用いて、ロボット教示プログラム１３における教示点Ｐ１〜Ｐｎの三次元位置からワーク２０の画像上における教示点Ｐ１〜Ｐｎの二次元位置を計算する。
【００３６】
具体的には、はじめに、撮像時におけるロボット２の位置から見たキャリブレーション時のロボット２の位置を計算して、教示点Ｐ１〜Ｐｎの三次元位置を補正する。また、撮像部６のキャリブレーションデータには、台座１９の設置位置のデータも含まれているので、このデータも教示点Ｐ１〜Ｐｎの三次元位置を補正するのに使用される。
【００３７】
次いで、キャリブレーションデータに含まれる撮像部６の位置、撮像部６のレンズの焦点距離、１ピクセルあたりの長さ、レンズの中心位置などのパラメータを使用して、教示点Ｐ１〜Ｐｎの三次元位置をワーク２０の画像上に投影して、教示点Ｐ１〜Ｐｎの二次元位置を計算する。
【００３８】
次いで、ステップ１０３において、これら教示点Ｐ１〜Ｐｎの二次元位置をワーク２０の画像上に表示する。図５（ａ）および図５（ｂ）のそれぞれは、ワークの画像と教示点とが表示された表示部を示す図である。これら図面および後述する図面においては、教示点Ｐは黒色楕円で表されており、明確にする目的で、一つまたは複数の教示点Ｐは破線により囲まれている。図５（ａ）においては、上方から見たワーク２０の画像上に教示点Ｐが表示されており、図５（ｂ）においては、側方から見たワーク２０の画像上に教示点Ｐが表示されている。
【００３９】
このように複数の教示点Ｐ１〜Ｐｎをワーク２０の画像上に表示することによって、操作者は、これら教示点Ｐ１〜Ｐｎが実際のワーク２０からどの程度ズレているのかを視覚的に確認することができる。これに対し、従来技術においては、教示点とワーク２０との間のズレを確認するためには、ロボットを教示点Ｐ１〜Ｐｎのそれぞれにまで移動させる必要があった。このため、複数の教示点Ｐ１〜Ｐｎをワーク２０の画像上に表示する本発明においては、教示点とワーク２０との間のズレを確認するのに必要とされる時間を大幅に短縮することが可能である。
【００４０】
次いで、図３のステップ１０６においては、抽出部１１ｂが、ワーク２０の画像からワーク２０のバリ取り箇所を自動的に抽出する。この点に関し、ワーク２０の画像においては、ワーク２０のベース２１と隆起部２２との間の高低差、およびワーク２０と背景との間の明るさの差によってコントラスト差が生じている。抽出部１１ｂは、互いに隣接する画素のコントラスト差を全ての画素に対して算出する。そして、コントラスト差が所定値よりも大きい箇所のみを抽出する。そして、そのような箇所を接続することにより、ワーク２０のバリ取り箇所をエッジ情報として出力することができる。
【００４１】
図６（ａ）は、バリ取り箇所がエッジ情報として表示された、図４（ａ）と同様な図である。図６（ａ）においては、バリ取り箇所Ｂは、隆起部２２の外周に沿って表示されている。これら図面を比較して分かるように、教示点Ｐ１〜Ｐｎの位置がバリ取り箇所Ｂに合致しているとは限らず、教示点Ｐ１〜Ｐｎがバリ取り箇所Ｂからズレている場合もある。
【００４２】
このような場合には、図３のステップ１０７において、教示点位置変更部１１ｃが、複数の教示点Ｐ１〜Ｐｎをバリ取り箇所Ｂに向かって一体的に移動させる。具体的には、教示点Ｐ１〜Ｐｎの位置とバリ取り箇所Ｂの位置との間の差がゼロになるように、教示点Ｐ１〜Ｐｎの位置に補正量を加える。これにより、教示点Ｐ１〜Ｐｎの位置とバリ取り箇所Ｂとが一致するようになる（図６（ｃ）を参照されたい）。
【００４３】
次いで、図３のステップ１０８、１０９において、プログラム変更部１１ｄは、変更された教示点Ｐ１〜Ｐｎのそれぞれの二次元位置とロボット教示プログラム１３に含まれる教示点とに基づいて、ロボット教示プログラム１３の教示点Ｐ１〜Ｐｎの三次元位置を変更する。
【００４４】
具体的には、キャリブレーションデータに含まれる画像中心、縦方向の画素サイズ、画素の縦横比、レンズの歪みなどに基づいて教示点Ｐ１〜Ｐｎの二次元位置を補正して、三次元空間における直線に変換する。次いで、キャリブレーション時におけるロボット位置から見た撮像時におけるロボット位置と台座１９の設置位置とを補正量として、直線に加える。さらに、ワーク２０の画像と直線との交点を求め、それにより、二次元位置を三次元位置に変換する。その後、変更後における各教示点Ｐ１〜Ｐｎの位置がロボット教示プログラム１３に保存される。
【００４５】
このような構成であるので、本発明においては、ロボット２を実際に各教示点の位置まで移動させることなしに、ロボット教示プログラム１３を修正することができる。ロットの相違によりまたはワーク２０の供給元が異なるためにワーク２０のバリ取り箇所Ｂが異なる場合であっても、ロボット２の教示作用をその都度行う必要はない。このため、本発明においては、ロボット教示プログラム１３を教示修正するのに必要とされる時間および工数を大幅に削減できることが分かるであろう。
【００４６】
ところで、図３のステップ１０７において教示点Ｐ１〜Ｐｎの位置を変更する変更作用については、操作者が手動で行うようにしてもよい。図７（ａ）および図７（ｂ）は、教示点位置を変更するのを説明するための図である。これら図面においては、操作者は複数の教示点Ｐ１〜Ｐｎのうちの一つの教示点ＰＡを矢印方向に教示点ＰＡ’まで移動させている。
【００４７】
このような教示点ＰＡの移動は、マウスなどの指定部８によって教示点ＰＡを画像上で指定し、バリ取り箇所Ｂに一致するまでドラッグ操作によって移動させる。あるいは、入力部７または教示操作盤４の方向キーおよび移動量を示す数値キーを操作して、教示点ＰＡを移動させるようにしてもよい。このような場合には、操作者が教示点ＰＡを手動により容易に所望の位置まで移動させられる。また、この場合には、特定の教示点、例えば教示点ＰＡのみを移動させられるので、最小限の数の教示点の移動で済むという利点もある。
【００４８】
さらに、図８は追加教示点を追加するのを説明するためのフローチャートである。また、図９（ａ）および図９（ｂ）は追加教示点を追加するのを説明する図４（ａ）と同様な図である。以下、これら図面を参照して、教示点の追加動作について説明する。なお、図８に示される動作は、図３の動作の終了後に行われるものとする。あるいは、図８に示される動作を、図３におけるステップ１０５とステップ１０６との間で必要とされる場合に適宜行ってもよい。
【００４９】
はじめに、図８のステップ１１１において、操作者は、ワーク２０の画像に表示された複数の教示点Ｐ１〜Ｐｎのうちの隣接する二つの教示点を指定部８により指定する。図９（ａ）においては、隆起部２２の一側に沿って位置する二つの教示点ＰＢが指定されているものとする。
【００５０】
次いで、ステップ１１２においては、追加されるべき追加教示点ＰＣの数を指定する。追加教示点ＰＣの数を指定するときには、マウスボタンを押下げることにより表示部５ａにボックスを表示し、追加教示点ＰＣの数を入力する。追加教示点ＰＣの数を入力するときには教示操作盤４または入力部７の数字キーを使用してもよい。
【００５１】
次いで、ステップ１１３においては、指定された数の追加教示点ＰＣが、指定された教示点ＰＢの間の中間点に配置される。図９（ｂ）においては、一つの追加教示点ＰＣが二つの教示点ＰＢの間に配置されている。また、二つ以上の追加教示点ＰＣを配置する場合には、それら追加教示点ＰＣは二つの教示点ＰＢの間に等間隔で配置される。なお、追加教示点ＰＣの位置が適切でないと判断される場合には、操作者は指定部８により追加教示点ＰＣを指定してドラッグ操作することにより、追加教示点ＰＣの位置を変更するようにしてもよい。
【００５２】
次いで、ステップ１１４において、追加教示点ＰＣの三次元位置を計算する。この操作は、前述した図３のステップ１０８と同様であるので、詳細な説明を省略する。その後、プログラム変更部１１ｄは、追加教示点ＰＣの三次元位置をロボット教示プログラム１３に追加する。このように、図８に示される実施形態においては、教示点の数が不足する場合に追加教示点ＰＣを容易に配置できるので、ワーク２０の形状に応じたより適切なバリ取り加工が可能となるのが分かるであろう。
【００５３】
さらに、図１０はシミュレーション軌跡の表示を説明するためのフローチャートである。以下、図１０を参照して、シミュレーション軌跡の表示について説明する。なお、図１０に示される動作は、図３におけるステップ１０９の後で必要とされる場合に行うことができる。また図１０に示される動作および後述するフローチャートの動作は図３の動作とは独立して行うようにしてもよい。
【００５４】
図１０のステップ１２１においては、シミュレーション部１１ｇがロボット教示プログラム１３をシミュレーションする。これにより、ロボット２が移動するときの三次元の軌跡（シミュレーション軌跡）が得られる。次いで、ステップ１２２においては、撮像部６のキャリブレーションデータおよび撮像時におけるロボット２の位置を用いて、シミュレーション軌跡の二次元位置が前述したのと同様に計算される。
【００５５】
その後、ステップ１２３において、シミュレーション軌跡をワーク２０の画像上に表示する。これにより、シミュレーション軌跡をワーク２０の画像上に表示することにより、ワーク２０のバリ取り箇所を適切にバリ取り加工できるか否かを事前に確認することが可能となる。なお、修正前のロボット教示プログラム１３に基づいてシミュレーションを行うようにしてもよい。この場合にも同様な効果が得られるのが分かるであろう。
【００５６】
さらに、図１１はツールモデルの姿勢の変更を説明するためのフローチャートである。図１２（ａ）は、ツールモデルが表示された、図４（ｂ）と同様な図であり、図１２（ｂ）はツールモデルの姿勢の修正を説明するための、図４（ｂ）と同様な図であり、図１２（ｃ）は、ツールモデルの姿勢を操作者が修正するのを説明するための、図４（ｂ）と同様な図である。以下、これら図面を参照して、ツールモデルの姿勢の変更について説明する。なお、図１１に示される動作は、図３におけるステップ１０５とステップ１０６との間で必要とされる場合に適宜行われるものとする。
【００５７】
はじめに、図１１のステップ１３１において、バリ取り工具３のツールモデル１５をワーク２０の画像上に表示する。このようにツールモデル１５を表示すると、図１２（ａ）に示されるように二つのツールモデル１５のそれぞれの先端がワーク２０の一部分、例えばベース２１に重なる場合がある。そのような状態においてロボット２を実際に動作させる場合には、バリ取り工具３の先端がワーク２０に干渉するので、バリ取り加工を良好に行うことができない。
【００５８】
従って、ステップ１３２においては、ツールモデル１５のツール姿勢を変更し、それにより、バリ取り工具３とワーク２０とが実際に干渉するのを避けるようにする。具体的には、前述したのと同様な手法によりワーク２０の画像におけるコントラスト差からワーク２０の外形を自動的に抽出する。ワーク２０の外形を抽出するときには、抽出部１１ｂが使用される。そして、ワーク２０の外形とツールモデル１５とを比較して、ツールモデル１５がワーク２０に干渉しないような位置姿勢を計算する。その後、ツールモデル姿勢変更部１１ｈが、ツールモデル１５の姿勢を計算された位置姿勢に変更する（図１２（ｂ）を参照されたい）。これにより、ワーク２０の画像においては、ツールモデル１５がワーク２０に重ならないようになる。
【００５９】
次いで、ステップ１３３において、ツール姿勢計算部１１ｉは、撮像部６のキャリブレーションデータ、撮像時におけるロボット２の位置、変更後のツールモデル１５の姿勢に基づいて、バリ取り工具３の三次元姿勢を計算する。前述したのと同様に、この場合にも、キャリブレーション時のロボット２の位置、撮像時におけるロボット２の位置、台座１９の設置位置、ワーク２０の画像の法線ベクトルなどが使用される。その後、ステップ１３４においては、ツール姿勢変更部１１ｊは、バリ取り工具３の三次元姿勢に基づいて、ロボット教示プログラム１３に含まれるバリ取り工具３の三次元姿勢を変更する。
【００６０】
つまり、図１１に示される実施形態においては、バリ取り工具３のツールモデル１５のツール姿勢をワーク２０の画像上で変更した後で、ロボット教示プログラム１３に含まれるバリ取り工具３の三次元姿勢を変更している。バリ取り工具３の三次元姿勢の変更は、ツールモデル１５がワーク２０に干渉しないように行われるので、実際の動作においてもバリ取り工具３がワーク２０に干渉しないようになる。これにより、ロボット教示プログラム１３を教示修正するのに必要とされる時間および工数をさらに削減することが可能となる。
【００６１】
なお、ツールモデル１５の姿勢変更は、指定部８、例えばマウスを用いて操作者が手動で行うようにしてもよい。図１２（ｃ）には、操作者が一方のツールモデル１５の姿勢を回転させると共に、ツールモデル１５の位置を右方に移動させている状態が示されている。このように操作者がツールモデル１５の姿勢などを変更する場合には、所望のツールモデル１５のみの姿勢を変更するので、必要最小限の変更で足りる。
【００６２】
さらに、図１３はロボット教示プログラムの作成を説明するためのフローチャートである。また、図１４（ａ）は加工線が表示された、図４（ａ）と同様の図であり、図１４（ｂ）はバリ取り箇所と加工線とが表示された、図４（ａ）と同様の図であり、図１４（ｃ）は加工線が変更された状態を示す、図４（ａ）と同様の図である。以下、これら図面を参照して、ロボット教示プログラムの作成について説明する。
【００６３】
はじめに、図１３のステップ１４１において、ワーク２０のワークモデル１６を表示部５ａに表示する。そして、ステップ１４２において、操作者はワークモデル１６のうちのバリ取り加工されるべき部分を指定部８により加工線として指定する。或る実施形態においては、ワークモデル１６における隆起部２２の稜線が加工線Ｌとして指定される。ワークモデル１６が三次元データであるので、加工線Ｌも三次元データである。参考のために、図１４（ａ）には、ワークモデル１６のうちの加工線Ｌのみが表示部５ａに表示されている。なお、加工線Ｌ内の黒三角印は、加工方向を表すものとする。
【００６４】
図１３のステップ１４３からステップ１４５は、図３のステップ１０１からステップ１０３と同一であるので説明を省略する。なお、教示操作盤４においてはその画面が適宜分割されるとともに、コンピュータ５においては別のウィンドウが適宜表示されるものとする。
【００６５】
その後、ステップ１４６において撮像部６のキャリブレーションデータ、撮像時におけるロボット２の位置を用いて加工線Ｌの三次元位置からワーク２０の画像上における加工線Ｌの二次元位置を計算する。次いで、ステップ１４７において、加工線Ｌがワーク２０の画像上に表示される（図１４（ｂ）を参照されたい）。
【００６６】
さらに、ステップ１４８において、抽出部１１ｂが前述したようにバリ取り箇所Ｂを抽出する。図１４（ｂ）には、加工線Ｌとバリ取り箇所Ｂとがワーク２０の画像上に表示されている。しかしながら、図１４（ｂ）に示されるように、加工線Ｌがバリ取り箇所Ｂからズレている場合および／または加工線Ｌの形状がバリ取り箇所Ｂの形状とは異なる場合がある。このような場合には、加工線Ｌに沿ってバリ取り加工したとしても、良好なバリ取り加工を行うことができない。
【００６７】
従って、ステップ１４９においては、加工線変更部１１ｋは、加工線Ｌがバリ取り箇所Ｂに一致するように加工線Ｌの二次元位置を変更する。図１４（ｂ）および図１４（ｃ）を比較して分かるように、ステップ１４９の処理によって、加工線Ｌの形状および寸法が変化しているのが分かるであろう。
【００６８】
次いで、ステップ１５０において、加工線位置計算部１１ｌが、変更後の加工線Ｌの二次元位置からその三次元位置を計算して加工線Ｌの三次元位置を変更する。これら加工線Ｌの変更および三次元位置の計算などは、教示点位置変更部１１ｃおよびプログラム変更部１１ｄの動作と概ね同様であるので詳細な説明を省略する。
【００６９】
その後、ステップ１５２において、教示点生成部１１ｍは、三次元位置が変更された加工線Ｌに基づいて複数の教示点を作成する。最終的に、プログラム作成部１１ｎは、そのような教示点を含んでいて加工線Ｌに沿った動作を行うロボット教示プログラム１３を自動的に作成して、処理を終了する。
【００７０】
このように図１３に示される実施形態においては、加工線Ｌはワーク２０のバリ取り箇所Ｂに一致するように変更され、変更後の加工線に基づいて教示点およびロボット教示プログラム１３が生成される。従って、ワーク２０のバリ取り箇所Ｂの形状に合致したロボット教示プログラム１３が得られるのが分かるであろう。
【００７１】
さらに、図１５はワークを撮像するためのプログラムの作成を説明するためのフローチャートである。さらに、図１６（ａ）および図１６（ｂ）は、表示部５ａと、表示部５ａに表示される内容とを示す図である。以下、これら図面を参照して、ワークを撮像するためのプログラムの作成について説明する。なお、図１５に示される動作は、図３におけるステップ１０１の前に実施するのが好ましいものとする。
【００７２】
はじめに図１５のステップ１６１において、ワーク２０のワークモデル１６を表示部５ａに表示する。図１６（ａ）から分かるように、このときには、ツールモデル１５およびロボットデータ１７も一緒に表示される。そして、図１６（ａ）の右方に示されるように、表示部５ａの表示内容を、上方から見たワークモデル１６に切り替える。
【００７３】
次いで、ステップ１６２において、操作者は、ワークモデル１６におけるバリ取り箇所Ｂを指定部８により指定する。その後、ステップ１６３において、操作者は、バリ取り箇所Ｂと撮像部６との間の距離および角度ならびに撮像時の条件などのパラメータを入力部７または指定部８により指定する。
【００７４】
次いで、ステップ１６４においては、指定したパラメータを用いて、バリ取り箇所Ｂを撮像するためのロボット２の位置を計算する。計算されたロボット位置においては、図１６（ｂ）の右方において実線で示されるように、撮像部６のモデルはワークモデル１６の真上に位置している。従って、このロボット位置においては、ワーク２０の頂面図が撮像される。当然のことながら、図４（ｂ）に示されるようなワーク２０の側面図が撮像可能な位置も必要に応じて計算される。
【００７５】
その後、ステップ１６５においては、プログラム作成部１１ｎは、ロボット２の位置を教示点として含んでいてワーク２０を撮像するためのプログラムを作成する。あるいは、プログラム作成部１１ｎは、ワーク２０のそのような撮像指令をロボット教示プログラム１３に追加するようにしてもよい。
【００７６】
このようなプログラムを実行すると、これにより、実際の現場でロボット２を撮像位置に移動させて教示を行うことなしに、オフラインで撮像用のプログラムを作成できる。従って、バリ取り箇所Ｂの撮像工程を教示するのに必要とされる時間および工数を削減することが可能である。
【００７７】
さらに、図１７および図１８はそれぞれ三次元モデルの作成を説明するためのフローチャートおよび斜視図である。図１７に示される動作は、図１５に示されるステップ１６１の前に行うのが好ましい。
【００７８】
図１７のステップ１７１においては、ワーク２０のワークモデル１６を表示部５ａに表示する。ここで、ワークモデル１６は六面体であるものとする。そして、ステップ１７２においては、撮像部６が所定の撮像位置まで移動して、ワーク２０を少なくとも一方向から実際に撮像する。好ましくは、ワーク２０は、ワーク２０の上下方向、左右方向、前後方向の合計六方向から行われる。なお、ワーク２０の各撮像方向は、ワーク２０の対応する面に対して垂直であるものとする。
【００７９】
次いで、ステップ１７３においては、撮像されたワーク２０の画像をワークモデル１６の対応する面に貼付ける。図１８に示されるように、ワーク２０の正面画像、側面画像、背面画像などが、六面体のワークモデル１６の対応する面に貼付けられる。このような画像が貼付けられたワークモデル１６は、実際のワーク２０と概ね同様の概観を有することになる。
【００８０】
その後、ステップ１７４においては、画像が貼付けられたワークモデル１６が表示部５ａに表示される。そして、シミュレーション部１１ｇがロボット教示プログラム１３のシミュレーションを実行する。この場合には、実際のワーク２０の擬似的なモデルが使用されるので、シミュレーションによるバリ取り加工の事前確認をより正確に行うことが可能となる。当然のことながら、前述した実施形態のいくつかを適宜組合せることは本発明の範囲に含まれるのは明らかであろう。
【符号の説明】
【００８１】
１    ロボット教示プログラム修正装置
２    ロボット
３    バリ取り工具（ツール）
４    教示操作盤
４ａ    表示部
５    コンピュータ
５ａ    表示部
６    撮像部
６ａ    スタンド
７    入力部
８    指定部（位置指定部）
１０    コントローラ
１１    ＣＰＵ
１１ａ    二次元位置計算部
１１ｂ    抽出部
１１ｃ    教示点位置変更部
１１ｄ    プログラム変更部
１１ｅ    教示点追加部
１１ｇ    シミュレーション部
１１ｈ    ツールモデル姿勢変更部
１１ｉ    ツール姿勢計算部
１１ｊ    ツール姿勢変更部
１１ｋ    加工線変更部
１１ｌ    加工線位置計算部
１１ｍ    教示点生成部
１１ｎ    プログラム作成部
１２    記憶部
１３    ロボット教示プログラム
１４    モデルデータ
１５    ツールモデル
１６    ワークモデル
１７    ロボットモデル
１９    台座
２０    ワーク
２１    ベース
２２    隆起部
２３    開口部
Ｂ    バリ取り箇所
Ｌ    加工線
Ｐ１〜Ｐｎ    教示点
ＰＣ    追加教示点
【図１】
2010182210.tif 000003
【図２】
2010182210.tif 000004
【図３】
2010182210.tif 000005
【図４】
2010182210.tif 000006
【図５】
2010182210.tif 000007
【図６】
2010182210.tif 000008
【図７】
2010182210.tif 000009
【図８】
2010182210.tif 000010
【図９】
2010182210.tif 000011
【図１０】
2010182210.tif 000012
【図１１】
2010182210.tif 000013
【図１２】
2010182210.tif 000014
【図１３】
2010182210.tif 000015
【図１４】
2010182210.tif 000016
【図１５】
2010182210.tif 000017
【図１６】
2010182210.tif 000018
【図１７】
2010182210.tif 000019
【図１８】
2010182210.tif 000020