(57)【要約】【課題】ロボットの姿勢変化が大きい場合でも、動作プログラムの教示点位置を正確かつ短時間で修正する。【解決手段】教示位置修正装置（１）が、ロボット（２）を複数の教示点のそれぞれに順番に移動させ、該複数の教示点のそれぞれにおけるロボットの現在位置を順番に取込むことによって、動作プログラムにおける複数の教示点位置を修正する際に、修正後の教示点位置と修正前の教示点位置とに基づいて、位置修正量（Ａ）を算出する位置修正量算出手段（１１ａ）と、位置修正量（Ａ）に基づいて複数の教示点のうちの未だ修正されていない未修正教示点位置の補正後の位置を算出する補正後位置算出手段（１１ｂ）とを含む。さらに、ロボットを未修正教示点に移動させるときに、移動手段（１５）によって、ロボットを未修正教示点位置の補正後の位置まで移動させる。【選択図】図３
2007249267.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの動作プログラムにおける複数の教示点位置を修正する教示位置修正装置において、
前記ロボットを複数の教示点のそれぞれに移動させ、該複数の教示点のそれぞれにおける前記ロボットの現在位置を取込むことによって、前記動作プログラムにおける複数の教示点位置を修正する際に、
前記複数の教示点位置のうちの既に修正された修正後の教示点位置と、これら修正後の教示点位置に対応する修正前の教示点位置とに基づいて、前記修正前の教示点位置に対する位置修正量を算出する位置修正量算出手段と、
前記位置修正量算出手段により算出された位置修正量に基づいて、前記複数の教示点のうちの未だ修正されていない未修正教示点位置の補正後の位置を算出する補正後位置算出手段と、
前記ロボットを前記未修正教示点に移動させるときに、前記補正後位置算出手段によって算出された前記未修正教示点位置の補正後の位置まで前記ロボットを移動させる移動手段と、を具備する教示位置修正装置。
【請求項２】
前記ロボットの動作プログラムは、オフラインプログラミング装置により作成されることを特徴とする、請求項１に記載の教示位置修正装置。
【請求項３】
前記動作プログラムは前記ロボットと前記ワークとの間の相対位置関係が変化する前に作成されており、前記教示点位置の修正は、前記ロボットと前記ワークとの間の相対位置関係が変化した後に行うことを特徴とする、請求項１に記載の教示位置修正装置。
【請求項４】
前記未修正教示点位置は、前記修正後教示点位置を含む動作プログラムと同一の動作プログラム内にあることを特徴とする、請求項１に記載の教示位置修正装置。
【請求項５】
前記未修正教示点位置は、前記修正後教示点位置を含む動作プログラムとは別の動作プログラム内にあることを特徴とする、請求項１に記載の教示位置修正装置。
【請求項６】
前記位置修正量算出手段は、一つまたは複数の教示点の修正を行う毎に、前記位置修正量を再算出するようにしたことを特徴とする、請求項１に記載の教示位置修正装置。
【請求項７】
さらに、前記ロボットの教示操作盤を具備し、
前記位置修正量算出手段による前記位置修正量の算出と、前記補正後位置算出手段による前記未修正教示点位置の補正後の位置の算出とが前記教示操作盤を通じて行われることを特徴とする、請求項１から６のいずれか一項に記載の教示位置修正装置。
【請求項８】
ロボットの動作プログラムにおける複数の教示点位置を修正する教示位置修正方法において、
前記ロボットを複数の教示点のそれぞれに移動させ、該複数の教示点のそれぞれにおける前記ロボットの現在位置を取込むことによって、前記動作プログラムにおける複数の教示点位置を修正する際に、
前記複数の教示点位置のうちの既に修正された修正後の教示点位置と、これら修正後の教示点位置に対応する修正前の教示点位置とに基づいて、前記修正前の教示点位置に対する位置修正量を算出し、
前記位置修正量に基づいて、前記複数の教示点のうちの未だ修正されていない未修正教示点位置の補正後の位置を算出し、
前記ロボットを前記未修正教示点に移動させるときに、前記ロボットを前記未修正教示点位置の補正後の位置まで移動させる、ことを含む教示位置修正方法。
【請求項９】
前記位置修正量は、一つまたは複数の教示点の修正を行う毎に、再算出されるようにした、ことを特徴とする請求項９に記載の教示位置修正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作プログラムにおける複数の教示点位置を修正する教示位置修正装置および教示位置修正方法に関する。
【背景技術】
【０００２】
ロボットや作業対象物の設置位置の変更により、ロボットと作業対象物との間の相対的位置または姿勢の関係が変化した場合、作成済みロボット動作プログラムの教示位置を修正する必要がある。このような修正作業は、特に日本国内で設置および教示して動作を確認したロボットおよび関連する設備を海外の工場へ移設する場合に必要であり、同一工場内であってもロボットを或る場所から別の場所まで移設する場合に必要となる。
【０００３】
オフラインプログラムで作成した動作プログラムについても、オフラインで設定されたロボットおよび作業対象物の設置位置と、実際のロボットおよび作業対象物の設置位置との間の誤差により、オフラインで作成したロボット動作プログラムの教示点位置を実際の作業対象物の設置位置に合わせるように現場で修正する必要がある。
【０００４】
なお、ロボットのプログラムの教示点データは、通常、作業ツールの位置および姿勢の情報を含む。また、教示点位置の修正とは、以下、既存プログラムの教示点の位置、または姿勢の一方または両方を修正することを指すものとする。
【０００５】
ロボット動作プログラムの教示点修正作業は、すでに教示済みのロボットプログラムを教示点ごとのステップ送りで低速度で再生して、各教示点の位置を確認しながら行う。具体的には、ロボットまたはロボットの作業ツールと作業対象物とが接触しないように、教示点の手前でロボットを停止させる。次いで、教示操作盤のボタン操作を通じてロボットをジョグ送りで動かし、それにより、ロボットの位置および姿勢を所望の位置および姿勢になるように修正する。このようなロボットプログラムの教示位置の修正作業は、操作者が手動で一つずつ行うのでかなりの時間が必要とされる。修正作業の効率化を図るため、従来から様々な手法が提案されている。
【０００６】
例えば特許文献１においては、ロボットによって対象物上の三つまたは四つの所定の点をタッチアップ、つまりロボットを手動で動かしてロボットのツール先端をこれら所定の点のそれぞれに合致させることが行われている。そして、得られた三つまたは四つの位置データから対象物の配置データを算出し、この配置データとオフラインでの配置データとの間の差に基づいて、動作プログラムを補正している。
【０００７】
ところが、特許文献１に開示される手法においてはロボットを手動で動かしてタッチアップ作業を複数箇所で行う必要があるので、タッチアップ作業のための余分な時間が必要となる。また、ロボットのツール先端点の位置にわずかな誤差があった場合にも修正作業の精度は低下する。さらに、タッチアップ用の複数の所定の点の分布が適切でない場合には対象物の配置データを正確に算出できず、この場合にも修正作業の精度は低下する。
【０００８】
このため、特許文献２および特許文献３には、タッチアップ作業を必要とすることのない、他の手法が開示されている。これら特許文献２、３の手法は、或る一つの教示点に対して位置修正量を算出し、他の教示点の位置をこの位置修正量に基づいて自動的に修正するものである。
【特許文献１】特開平４−２５５００３号公報
【特許文献２】特開２００４−２８０５２９号公報
【特許文献３】特開２００５−６６７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、これら特許文献２、３に開示される手法を実施するにあたっては、姿勢変化が少なくて教示点が連続していることが前提として必要とされ、姿勢変化が比較的大きい場合には特許文献２、３に開示される手法を適用できない。また、一つの教示点から位置修正量を求めるためには、ツールの位置および姿勢を正確に設定する必要があるが、実際には操作者がツールの位置および姿勢を目視で正確に設定するのには限界がある。
【００１０】
さらに、これら特許文献２、３に開示される手法では、同一位置の作業対象物に対して作業を行う複数のプログラムを修正する場合に、それぞれのプログラムに対して同様な修正作業を行う必要があった。
【００１１】
本発明はこのような事情に鑑みてなされたものであり、ロボットまたはツールの姿勢変化が比較的大きい場合であっても、ロボットのプログラムにおける教示点位置の修正を短時間で正確に行うことのできる教示位置修正装置および教示位置修正方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前述した目的を達成するために１番目の発明によれば、ロボットの動作プログラムにおける複数の教示点位置を修正する教示位置修正装置において、前記ロボットを複数の教示点のそれぞれに順番に移動させ、該複数の教示点のそれぞれにおける前記ロボットの現在位置を順番に取込むことによって、前記動作プログラムにおける複数の教示点位置を修正する際に、前記複数の教示点位置のうちの既に修正された修正後の教示点位置と、これら修正後の教示点位置に対応する修正前の教示点位置とに基づいて、前記修正前の教示点位置に対する位置修正量を算出する位置修正量算出手段と、前記位置修正量算出手段により算出された位置修正量に基づいて、前記複数の教示点のうちの未だ修正されていない未修正教示点位置の補正後の位置を算出する補正後位置算出手段と、前記ロボットを前記未修正教示点に移動させるときに、前記補正後位置算出手段によって算出された前記未修正教示点位置の補正後の位置まで前記ロボットを移動させる移動手段と、を具備する教示位置修正装置が提供される。
【００１３】
すなわち１番目の発明においては、複数の教示点位置の修正作業において、位置修正量に基づいて求められた未修正教示点位置の補正後の位置までロボットを移動させるようにしている。この補正後の位置は、その教示点についての修正後の位置に比較的近くなるので、補正後の位置まで移動させた後のロボットの移動距離が短くなり、それにより、修正作業に要する時間を短くすることができる。そして、修正作業を順次行うことによって修正済み教示点位置の数が多くなれば、位置修正量の精度も高まる。このため、ロボットまたはツールの姿勢変化が比較的大きい場合であっても、補正後の教示点位置からのロボットの移動距離をさらに短くでき、修正作業を正確かつ短時間で行うことが可能となる。なお、位置修正量を求めた時点における残りの未修正の教示点位置の全てを一括して補正するようにしてもよく、この場合には複数の教示点位置の全てを修正する必要が無いので、修正作業をさらに短時間で行うことができる。
【００１４】
２番目の発明によれば、１番目の発明において、前記ロボットの動作プログラムは、オフラインプログラミング装置により作成される。
すなわち２番目の発明においては、オフラインプログラミング装置により作成された動作プログラムを実際のロボットに適用するときに必要とされる動作プログラムの修正作業を簡易に行うことができる。
【００１５】
３番目の発明によれば、１番目の発明において、前記動作プログラムは前記ロボットと前記ワークとの間の相対位置関係が変化する前に作成されており、前記教示点位置の修正は、前記ロボットと前記ワークとの間の相対位置関係が変化した後に行う。
すなわち３番目の発明においては、ロボットとワークとの間の相対位置関係の変化が起こるとき、例えばロボットシステムを或る工場から他の工場まで移設する場合、または同一工場内の別の場所に移設する場合に必要とされる動作プログラムの修正作業を簡易に行うことができる。
【００１６】
４番目の発明によれば、１番目の発明において、前記未修正教示点位置は、前記修正後教示点位置を含む動作プログラムと同一の動作プログラム内にある。
すなわち４番目の発明においては、同一の動作プログラムで得られた位置修正量に基づいて、残りの未修正教示点を正確に補正することができる。
【００１７】
５番目の発明によれば、１番目の発明において、前記未修正教示点位置は、前記修正後教示点位置を含む動作プログラムとは別の動作プログラム内にある。
すなわち５番目の発明においては、別の動作プログラムで得られた位置修正量に基づいて、当該動作プログラムの教示点を一括して修正することができる。
【００１８】
６番目の発明によれば、１番目の発明において、前記位置修正量算出手段は、一つまたは複数の教示点の修正を行う毎に、前記位置修正量を再算出する。
すなわち６番目の発明においては、より精度の高い位置修正量を求めることができる。
【００１９】
７番目の発明によれば、１番目から６番目のいずれかの発明において、さらに、前記ロボットの教示操作盤を具備し、前記位置修正量算出手段による前記位置修正量の算出と、前記補正後位置算出手段による前記未修正教示点位置の補正後の位置の算出とが前記教示操作盤を通じて行われる。
すなわち７番目の発明においては、教示操作盤を用いることによって位置修正量の算出などの指示を容易に行うことができる。
【００２０】
８番目の発明によれば、ロボットの動作プログラムにおける複数の教示点位置を修正する教示位置修正方法において、前記ロボットを複数の教示点のそれぞれに順番に移動させ、該複数の教示点のそれぞれにおける前記ロボットの現在位置を順番に取込むことによって、前記動作プログラムにおける複数の教示点位置を修正する際に、前記複数の教示点位置のうちの既に修正された修正後の教示点位置と、これら修正後の教示点位置に対応する修正前の教示点位置とに基づいて、前記修正前の教示点位置に対する位置修正量を算出し、前記位置修正量に基づいて、前記複数の教示点のうちの未だ修正されていない未修正教示点位置の補正後の位置を算出し、前記ロボットを前記未修正教示点に移動させるときに、前記ロボットを前記未修正教示点位置の補正後の位置まで移動させる、ことを含む教示位置修正方法が提供される。
【００２１】
すなわち８番目の発明においては、複数の教示点位置の修正作業において、位置修正量に基づいて求められた未修正教示点位置の補正後の位置までロボットを移動させるようにしている。この補正後の位置は、その教示点についての修正後の位置に比較的近くなるので、補正後の位置まで移動させた後のロボットの移動距離が短くなり、それにより、修正作業に要する時間を短くすることができる。そして、修正作業を順次行うことによって修正済み教示点位置の数が多くなれば、位置修正量の精度も高まる。このため、ロボットまたはツールの姿勢変化が比較的大きい場合であっても、補正後の教示点位置からのロボットの移動距離をさらに短くでき、修正作業を正確かつ短時間で行うことが可能となる。
【００２２】
９番目の発明によれば、８番目の発明において、前記位置修正量は、一つまたは複数の教示点の修正を行う毎に、再算出されるようにした。
すなわち９番目の発明においては、別の動作プログラムで得られた位置修正量に基づいて、当該動作プログラムの教示点を一括して修正することができる。
【発明を実施するための最良の形態】
【００２３】
以下、添付図面を参照して本発明の実施形態を説明する。以下の図面において同様の部材には同一の参照符号が付けられている。理解を容易にするために、これら図面は縮尺を適宜変更している。
図１は本発明の一つの実施形態に基づくロボット制御装置の構成図である。ロボット制御装置１には、ロボット２が接続されている。ロボット制御装置１は、ティーチングプレイバック型のロボット制御装置であり、ロボット２が動作するプログラムを作成、記憶、教示および再生する機能を備えている。図１に示されるように、ロボット制御装置１には、ロボットのジョグ送り（手動操作）またはプログラムの作成などロボットの各種操作を行うために表示画面を備えた教示操作盤３が接続されている。
【００２４】
ロボット２のアーム先端には、作業対象物５に対して所定の作業を行う作業ツール４が装着されている。図１においては、作業対象物５は、例えば自動車ボディーなどの板金である。作業対象物５は、図示しない固定用治具により固定され、一定の位置および姿勢でロボット２の前方に設置される。
【００２５】
作業ツール４は、例えばスポット溶接用のガンである。スポット溶接ガン４は、サーボモータによりツール先端部分の溶接チップの開閉を行い、それにより、スポット溶接を行う。スポット溶接ガン４の溶接チップの開閉は、ロボット制御装置１によってスポット溶接ガン４用サーボモータを制御して行われる。作業ツール４およびロボット制御装置１は、図示しないスポット溶接用電源装置に接続されており、ロボット制御装置１からの指令に基づいて溶接作業を行う。このような、スポット溶接ガン４も公知のものであるので、詳細は省略する。
【００２６】
図２はロボット制御装置１の要部ブロック図であり、従来のロボット制御装置と同一構成である。ロボット制御装置１は、ＣＰＵ１１、ＲＡＭとＲＯＭと不揮発性メモリ（ＥＥＰＲＯＭなど）とを備えたメモリ１２、教示操作盤用インターフェイス１３、周辺機器６等の外部装置用のインターフェイス１６およびロボット２の各部分を制御して適切に移動させるためのサーボ制御部１５を含んでいる。また、教示操作盤用インターフェイス１３には表示画面を備えた教示操作盤３が接続されている。
【００２７】
ＣＰＵ１１はロボット２の動作プログラムおよび後述するフローチャートの処理を実施する。また、ＣＰＵ１１は動作プログラムにおける修正前の教示点位置に対する修正後の教示点位置の位置修正量を算出する位置修正量算出手段１１ａと、位置修正量に基づいて未修正教示点位置の補正後の位置を算出する補正後位置算出手段１１ｂとしての役目を果たしうる。これら位置修正量算出手段１１ａおよび補正後位置算出手段１１ｂについては後述する。
【００２８】
ロボット２およびロボット制御装置１の基本機能を支えるシステムプログラムは、メモリ１２のＲＯＭに格納されている。また、オフラインプログラミング装置により作成され、図示しない通信回線または記憶媒体を介して入力されたロボット２の動作プログラム並びに関連設定データは、メモリ１２の不揮発性メモリに格納される。さらに、メモリ１２のＲＡＭは、ＣＰＵ１１が行う各種演算処理におけるデータ、例えば後述する補正行列Ａの一時記憶の記憶領域として使用される。
【００２９】
サーボ制御部１５は、サーボ制御器＃１〜＃ｎ（ｎ：ロボットの総軸数、さらには必要に応じてロボット手首に取付けるツールの可動軸数を加算した数）を備えており、各サーボ制御器＃１〜＃ｎは、プロセッサ、ＲＯＭ、ＲＡＭ等で構成され、ロボットの各軸を駆動するサーボモータの位置・速度のループ制御、さらには電流ループ制御を行っている。これらサーボ制御器は、ソフトウェアで位置、速度、電流のループ制御を行ういわゆるデジタルサーボ制御器を構成している。サーボ制御器＃１〜＃ｎの出力は各サーボアンプＡ１〜Ａｎを介してロボット２の各関節軸のサーボモータＭ１〜Ｍｎを駆動制御する。なお、図示はしていないが、各サーボモータＭ１〜Ｍｎには位置・速度検出器が取付けられており、該位置・速度検出器で検出した各サーボモータの位置、速度は各サーボ制御器＃１〜＃ｎにフィードバックされるようになっている。また、外部装置用インターフェイス１６には、周辺機器６に設けられたセンサ等が接続されている。 
【００３０】
図１に示されるロボット制御装置１には、図示しない固定用治具に固定された作業対象物５に対し、スポット溶接を行うプログラムが作成保存されている。このプログラムにはロボット２、特に作業ツール４の位置に関する複数の教示点が含まれている。このロボットを或る工場から他の工場まで移設する場合、同一工場内の別の場所に移設する場合、またはオフラインプログラミング装置により作成された動作プログラムを実際のロボットに適用する場合に、プログラムの教示点位置を修正する必要が生じる。ロボット２と固定用治具の相対位置関係を移設前後で全く同じにすることは困難である。また、オフラインで動作プログラムを作成した際のモデルの各要素間の相対位置関係に等しくなるように、実際の各要素間の相対位置関係、例えばロボット２と作業対象物５との間の相対位置関係を実際に構築することは困難である。これら位置関係を移設前に測定し、移設後の場所で同じ位置関係に設置した場合であっても、測定や設置の誤差により、数ｍｍ〜数十ｍｍ程度の誤差が生じる場合がある。このため、移設後、又は、オフラインで作成した動作プログラムを適用する際にはプログラムの教示位置の修正は必ず行う必要がある。
【００３１】
本発明のロボット制御装置１による教示点修正作業においては、教示点位置の修正を行う際に、ロボット制御装置１を教示点位置修正モードに切替え、教示点位置修正に適した動作を行うようにする。モードの切り替えは、例えば、教示操作盤３上の教示モード切り替えボタン（図示しない）により行うか、または教示操作盤３のメニュー操作で、制御装置１を位置修正モードに切替えて行うようにしてもよい。
【００３２】
図３は本発明による教示点修正手順を示すフローチャートである。ステップ１００において、前述した操作により教示点位置修正モードに切替えられると、教示操作盤３の表示画面には、ロボット２の選択された動作プログラムが表示される。これにより、教示位置を補正する補正行列が初期化される（ステップ１０１）。補正行列Ａは１２個の要素からなる３×４型行列であり、初期化によって以下の〔数１〕のようになる。なお、補正行列Ａの詳細については後述する。
【数１】
2007249267.tif 000003
【００３３】
次いで、ステップ１０２において、教示操作盤３の表示画面に表示された動作プログラムから修正を望む教示点を選択指定する。ロボット２の移設前後において例えばロボット２と作業対象物５との間の位置関係が変化しているので、修正前の教示点までロボット２を直接的に移動させると、ロボット２の作業ツール４と作業対象物５とが接触する可能性がある。このため、教示点の教示位置の手前でロボット２を停止させるのが好ましい。
【００３４】
このため、図３のステップ１０３においては、選択された教示点を後述するように補正し、次いで、ステップ１０４においてロボット２を補正後の教示点まで移動させる。これにより、作業ツール４と作業対象物５とが接触するのを防止する。なお、補正行列Ａが作成されていない場合には、ステップ１０３の処理は行われない。
【００３５】
ロボット２が補正後の教示位置まで移動すると、操作者は教示操作盤３を用いてジョグ送り（手動送り）でロボット２を移動させ、それにより、ロボット２の作業ツール４が作業対象物５に対して所望の位置および姿勢になるようにする（ステップ１０５）。前述した補正作業が行われているので、ジョグ送りによるロボットの移動距離を少なくすることができる。例えば作業ツール４がスポット溶接ガンである場合には、作業ツール４の先端の溶接チップが作業対象物５である板金に接触するように移動させる。
【００３６】
ジョグ送り移動が完了すると、ステップ１０６において、作業ツール４と作業対象物５とが接触したか否かを判定する。作業ツール４および作業対象物５の接触判定は、作業ツール４の先端を視野に捉えることのできるカメラ（図示しない）を通じて行われる。
【００３７】
あるいは、作業ツール４と作業対象物５との接触を判定する手段を設け、この接触判定手段によって接触判定するようにしてもよい。例えば、作業ツール４に電圧をかけておき、作業ツール４と作業対象物５（作業対象物は接地されている）とが接触して電気的に導通したときに作業ツール４に流れる電流または電圧の変化を検出し、それにより、これら作業ツール４と作業対象物５とが接触したことを検出するようにできる。作業ツール４がスポット溶接ガンである場合には、溶接電源（図示省略）内の回路を利用して接触を検知する回路を設ければよい。同様に作業ツールを駆動する電源回路を利用してもよい。または、ジョグ送り動作時に、ロボットのモータ電流値に基づいて、作業ツール４および作業対象物５の接触の有無を判定し、接触した時点でロボットを停止するようにしてもよい。
【００３８】
あるいは、ロボットのモータ制御回路に外乱推定オブザーバを組込み、該オブザーバで外乱トルクを推定し、この推定外乱トルクにより作業ツール４と作業対象物５との接触を検出することもできる。さらには、作業ツール４の溶接チップの先端付近に近接センサを取付け、チップと作業対象物５との間の距離が所定値以下になったことを検知することにより、接触を判定するようにしてもよい。
【００３９】
ステップ１０６において、作業ツール４と作業対象物５とが接触していないと判定された場合には、ステップ１０５に戻り、作業ツール４と作業対象物５とが接触するまで、つまり作業ツール４が作業対象物５に対して所望の位置および姿勢になったことが確認されるまで処理を繰返す。
【００４０】
作業ツール４を所望の位置および姿勢に位置決めした後、ステップ１０７において教示操作盤３から修正指令を入力する。これにより、そのときのロボット２の位置および姿勢が新たな教示位置として、教示点が修正される。
【００４１】
教示点が修正されると、ステップ１０８において、ロボット制御装置１は、それまでに修正した教示点の位置修正量に基づいて、教示点位置を修正する補正行列Ａを求める。補正行列Ａが既に求められている場合においても、補正行列Ａは改めて再計算される。後述するように、補正行列Ａは三つ以上の教示点が修正されないと算出されず、補正行列Ａがまだ算出されていない場合には、図３のステップ１０８をスキップしてもよい。補正行列Ａを求める手順の詳細については後述する。また、補正行列Ａが一旦作成されると、補正行列Ａはメモリ１２のＲＡＭに記憶されるものとする。
【００４２】
次いで、ステップ１０９においては、操作者が動作プログラムにおいて修正を望む複数の教示点の全てに対する修正作業が終了したか否かを判定する。修正を望む全ての教示点の修正作業が終了していない場合には、ステップ１０２に戻り、修正を望む全ての教示点の修正作業が終了するまで処理を繰返す。当然のことながら、この繰返し作業のたびに、補正行列Ａは再計算されることになる。全ての教示点の修正作業が完了すると、操作者は教示点位置修正モードを解除する。
【００４３】
以下、補正行列の計算手順を示すフローチャートである図４を参照しつつ、図３におけるステップ１０８での補正行列Ａの算出手法を説明する。後述する説明から分かるように、補正行列Ａは補正前教示点に対する位置修正量に対応しているので、補正行列Ａの算出はＣＰＵ１１の位置修正量算出手段１１ａによって行われることとなる。
【００４４】
本発明のメモリ１２、例えば不揮発性メモリにおいては、表１に示されるようなテーブルが記憶されている。
【表１】
2007249267.tif 000004
表１に示されるように、テーブルには動作プログラム内の教示点の位置番号と、これら位置番号に対応する修正前の教示点の三次元位置と、修正後の教示点の三次元位置とが格納できるようになっている。ただし、図２に示されるステップ１０１において補正行列Ａが初期化される際に、「位置番号」、「修正前位置」および「修正後位置」の内容が無い状態にテーブルも初期化される。
【００４５】
そして、図３のステップ１０８において補正行列Ａを算出する際に、図４のステップ２００において、ステップ１０１での初期化後に教示点Ｐｉ（「ｉ」は１以上ｎ以下の自然数）が既に位置修正されているか否かが判定される。ステップ２００における判定は、表１に示されるテーブルの「位置番号」の項目に番号「ｉ」が存在するか否かによって行われる。
【００４６】
教示点Ｐｉが未修正である場合、つまり「位置番号」の項目に番号「ｉ」が存在していない場合には、ステップ２０１に進んで、教示点Ｐｉの位置番号ｉと修正前の教示点の三次元位置Ｐｉ（ｘｉ、ｙｉ、ｚｉ）とがテーブルの対応する場所にそれぞれ格納される。一方、教示点Ｐｉが既に修正されている場合には、つまり「位置番号」の項目に番号「ｉ」が登録されている場合には、ステップ２０１はスキップされ、ステップ２０２において、現在のロボット位置、つまり修正後の教示点の三次元位置Ｐｉ’（ｘｉ’、ｙｉ’、ｚｉ’）がテーブルの対応する場所に格納される。
【００４７】
このように、教示点Ｐｉの位置が修正される毎に、位置番号ｉ、修正前教示点位置Ｐｉ（ｘｉ、ｙｉ、ｚｉ）、および修正後教示点位置Ｐｉ’（ｘｉ’、ｙｉ’、ｚｉ’）がテーブルに順次格納される（表１を参照されたい）。従って、修正作業の途中において、その時点までに修正された全ての教示点Ｐｉの位置番号ならびに修正前および修正後の教示点位置がテーブルに格納されることになる。
【００４８】
次いで、ステップ２０３では、その時点において表１のテーブルに格納された全ての教示点Ｐｉ、Ｐｉ’のデータを用いて補正行列Ａを計算する。このとき、例えば最小二乗法を用いて、修正前の教示点Ｐｉを修正後の教示点Ｐｉ’に変換する座標変換行列Ａを算出する（式（１）を参照されたい）。
Ｐｉ’＝［Ａ］Ｐｉ                                                （１）
【００４９】
ここで、座標変換行列Ａを〔数２〕のように表すと、式（１）は以下の〔数３〕のように示される。
【数２】
2007249267.tif 000005
【数３】
2007249267.tif 000006
【００５０】
なお、〔数３〕は以下の三つの式（２）〜式（４）として表される。
ｘｉ’＝ａ１１・ｘｉ＋ａ１２・ｙｉ＋ａ１３・ｚｉ＋ａ１４          式（２）
ｙｉ’＝ａ２１・ｘｉ＋ａ２２・ｙｉ＋ａ２３・ｚｉ＋ａ２４          式（３）
ｚｉ’＝ａ３１・ｘｉ＋ａ３２・ｙｉ＋ａ３３・ｚｉ＋ａ３４          式（４）
【００５１】
ここで、行列Ａの第一列から第三列により表される部分行列Ｒ（〔数４〕参照）は、ロボット２の回転移動を表す行列であり、行列Ａの第四列により表される行列Ｔ（〔数５〕参照）は、ロボット２の平行移動を表す行列である。
【数４】
2007249267.tif 000007
【数５】
2007249267.tif 000008
【００５２】
一般的に言えば、同一直線上に存在しない異なる三つ以上について修正前の教示点Ｐｉおよび修正後の教示点Ｐｉ’の組が既知であれば、行列Ａのパラメータａ１１〜ａ３４を求めることができる。さらに、異なる四つ以上について修正前の教示点Ｐｉおよび修正後の教示点Ｐｉ’の組が既知である場合には、ニュートン法や一般逆行列などの最小二乗法の計算によって、変換後の位置誤差の二乗和を最小とするようなパラメータａ１１〜ａ３４を算出することもできる。これらの算出手法は公知であるので説明を省略する。
【００５３】
ところで、修正後の教示点Ｐｉ’が一つまたは二つしか既知でない場合、または修正後の教示点Ｐｉ’が同一直線上に存在する場合には、座標変換行列Ａの回転移動を表す部分行列Ｒを求めることはできない。このような場合には、回転移動していないものと仮定し、修正後の教示点Ｐｉ’についての位置修正量の平均値を加えるように座標変換行列Ａを求めることも可能である。この場合には、行列Ａのパラメータａ１１〜ａ３４は以下の〔数６〕のように表される。あるいは、このように修正後の教示点Ｐｉ’の数が補正行列Ａを作成するのに十分でない場合には、図３のステップ１０８をスキップし、三つまたは四つの教示点Ｐｉ’が得られた後で、補正行列Ａを算出してもよい。
【数６】
2007249267.tif 000009
【００５４】
ここで、図３のステップ１０３における教示点の補正作業について、図５を参照しつつ説明する。この作業は、ＣＰＵ１１の補正後位置算出手段１１ｂによって行われるものとする。図５のステップ３００において、操作者により選択された一つの目標教示点Ｐｄを取得する。次いで、ステップ３０１において、以下の式（５）のように目標教示点Ｐｄを行列Ａにより変換することにより、補正後の教示点Ｐｄ’を求める。その後、図３のステップ１０４において、この補正後の教示点Ｐｄ’までロボット２を移動させる。
Ｐｄ’＝［Ａ］Ｐｄ                                                （５）
前述したのと同様に、行列Ａが算出されていない場合に図３のステップ１０３がスキップされるのは明らかであろう。
【００５５】
このように本発明においては、一つの教示点Ｐｉを修正する毎に、図４のフローチャートに基づいて、補正行列Ａが改めて算出される。このため、修正済みの教示点が増えると、より多くの教示点データに基づいて補正行列Ａが求められることになるので、補正行列Ａの精度が向上する。このように精度の高い行列Ａを利用して、補正後の教示点Ｐｄ’をより正確に求め、その位置までロボット２を移動させれば、残りのジョグ送り動作は少なくて足りる。従って、動作プログラムの修正作業全体に要する時間を短くすることができる。このため、本発明においては、ロボットまたはツールの姿勢変化が比較的大きい場合であっても、補正後の教示点Ｐｄ’からのロボットの移動距離は短くて足り、修正作業を正確かつ短時間で行うことが可能となる。
【００５６】
なお、本発明においては、補正行列Ａ、つまり位置修正量を求めた時点での残りの未修正の教示点位置全てを一括して補正するようにしてもよい。この場合には複数の教示点位置の全てを修正する必要が無いので修正作業をさらに短時間で行うことが可能となる。さらにこの場合には、同一の動作プログラムでの修正内容に基づいた修正作業であるので、残りの未修正教示点を補正が正確なものとなる。なお、本発明に基づく手法によれば、プログラムの修正時にタッチアップを行う必要がないので、タッチアップに必要とされる労力および時間を省略することも可能である。
【００５７】
ところで、図６は或るプログラムの教示修正結果を用いて別のプログラムの教示位置を一括修正する場合の手順を示すフローチャートである。以下の処理は或る動作プログラムにおける教示点の全ての修正が終了した状態で補正行列Ａが作成されている場合、または最低限の数の教示点を修正することによって少なくとも補正行列Ａが作成されている場合に適用される。図６のステップ４００において、教示操作盤３のプログラム一覧キー（図示しない）を押圧して、複数のプログラムの一覧を表示する。次いで、ステップ４０１において、教示位置を一括修正することを望む別のプログラムをプログラムの一覧から選択する。この操作は、プログラム一覧の所望のプログラムにカーソルを合わせ、教示操作盤３の確定キー（図示しない）を押圧することにより行われる。
【００５８】
その後、ステップ４０２において、教示操作盤３の教示位置一括修正キー（図示しない）を押圧する。これにより、メモリ１２に記憶された最新の補正行列Ａを用いて、所望のプログラムの全ての教示点が変換され、プログラムの教示位置データが更新される（ステップ４０３、４０４）。これにより、或るプログラムで行った教示修正と、同じ教示修正を別のプログラムに適用できるので、別のプログラムにおける教示修正作業を極めて短時間で行うことが可能となる。このことは、一つのロボット２が複数の動作プログラムのそれぞれに基づいて駆動する場合に有利であるのが分かるであろう。
【００５９】
図７は従来技術における教示位置修正作業を説明するための図であり、図８は本発明の教示位置修正作業を説明するための図である。以下、図７および図８を参照して、従来の手法と本発明の教示位置修正手法とを比較する。これら図面においては、説明を簡単にする目的で、それぞれの全ての教示点が同一の平面上に配置されているものとする。
【００６０】
これら図面において、ｐ１〜ｐ４は修正前の教示点、ｐ１’〜ｐ４’は修正後の教示点をそれぞれ示している。また、ｐｉ［ｊ］は教示点ｐｉのｊ回目の教示修正後（平行移動を含む）の位置を表す。図７および図８においては、教示点ｐ１〜ｐ４を教示点ｐ１’〜ｐ４’に合わせるように修正を行うものとする。
【００６１】
図７において、教示点ｐ１を修正後教示点ｐ１’に修正すると、次以降の教示点ｐ２、ｐ３、ｐ４は、図示されるように、教示点ｐ１と修正後教示点ｐ１’との間の差と同じ量だけ平行移動し、それぞれ点ｐ２［１］、ｐ３［１］、ｐ４［１］まで移動する。
【００６２】
次いで、一回目の修正作用で移動した点ｐ２［１］が修正後教示点ｐ２’になるように、二回目の教示修正作用を行う。図７に示されるように、二回目の教示修正作用によって、点ｐ３［１］、ｐ４［１］はそれぞれ点ｐ３［２］、ｐ４［２］まで平行移動する。
【００６３】
その後、点ｐ３［２］が修正後教示点ｐ３’になるように三回目の教示修正作用を行い、それにより、点ｐ４［２］が点ｐ４［３］まで平行移動する。さらに、点ｐ４［３］が修正後教示点ｐ４’になるように四回目の教示修正作用（平行移動）を行う。
【００６４】
教示点ｐ１〜ｐ４と修正後教示点ｐ１’〜ｐ４’との間の位置変化が平行移動だけである場合（回転移動無し）には、教示点ｐ１を修正後教示点ｐ１’に修正する一回目の教示修正作用によって教示点ｐ２〜ｐ４のそれぞれを修正後教示点ｐ２’〜ｐ４’に合わせられる。しかしながら、教示点ｐ１〜ｐ４と修正後教示点ｐ１’〜ｐ４’との間の位置変化が平行移動と回転移動とを含んでいる場合には、平行移動のみによって全ての教示点を修正後教示点に合わせることはできない。教示点の修正前後における位置変化が回転移動を含む場合には、図７を参照して説明したように、全ての教示点について修正作業を行う必要がある。
【００６５】
図８に示される本発明の教示位置修正作業においては、教示点ｐ１を修正後教示点ｐ１’に移動させる一回目の教示修正作用において、次以降の教示点ｐ２、ｐ３、ｐ４が点ｐ２［１］、ｐ３［１］、ｐ４［１］に平行移動する。これは、図７の場合と同様である。
【００６６】
次いで、点ｐ２［１］が修正後教示点ｐ２’になるように二回目の教示修正作用を行う。このとき、一回目の教示修正作用および二回目の教示修正作用における教示修正量から、点ｐ３［１］、ｐ４［１］に関する教示修正量を算出する。
【００６７】
本発明の手法においては、教示点ｐ１、ｐ２についての教示修正作用に基づいて、これら教示点ｐ１、ｐ２をそれぞれ修正後教示点ｐ１’、ｐ２’とする座標変換行列Ａが得られる。この座標変換行列Ａによって、教示点ｐ３、ｐ４の位置が補正され、修正後の教示点ｐ３’、ｐ４’が得られるので、二回の教示修正作用によって、四つ全ての教示点を合わせることが可能となる。このため、本発明においては、動作プログラム内の複数の教示点の修正を短時間で正確に行うことができるのが分かるであろう。
【図面の簡単な説明】
【００６８】
【図１】本発明の一つの実施形態に基づくロボット制御装置の構成図である。
【図２】同実施形態におけるロボット制御装置の要部ブロック図である。
【図３】本発明による教示点修正手順を示すフローチャートである。
【図４】本発明による補正行列の計算手順を示すフローチャートである。
【図５】本発明による補正後位置の計算手順を示すフローチャートである。
【図６】或るプログラムの教示修正結果を用いて別のプログラムの教示位置を一括修正する場合の手順を示すフローチャートである。
【図７】従来技術における教示位置修正作業を説明するための図である。
【図８】本発明における教示位置修正作業を説明するための図である。
【符号の説明】
【００６９】
１    ロボット制御装置（教示位置修正装置）
２    ロボット
３    教示操作盤
４    作業ツール
５    作業対象物
１１    ＣＰＵ
１１ａ    位置修正量算出手段
１１ｂ    補正後位置算出手段
１２    メモリ
１３    教示操作盤用インターフェイス
１５    サーボ制御部（移動手段）
１６    外部装置用インターフェイス
Ａ    補正行列（位置修正量）
Ｐｉ    修正前教示点
Ｐｉ’    修正後教示点
【図１】
2007249267.tif 000010
【図２】
2007249267.tif 000011
【図３】
2007249267.tif 000012
【図４】
2007249267.tif 000013
【図５】
2007249267.tif 000014
【図６】
2007249267.tif 000015
【図７】
2007249267.tif 000016
【図８】
2007249267.tif 000017