(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-09-18
(45)【発行日】2025-09-29
(54)【発明の名称】塗装ロボットの動作プログラム生成システム
(51)【国際特許分類】
B25J 9/12 20060101AFI20250919BHJP
B25J 9/22 20060101ALI20250919BHJP
B05B 12/00 20180101ALI20250919BHJP
【FI】
B25J9/12
B25J9/22 A
B05B12/00 A
(21)【出願番号】P 2022126909
(22)【出願日】2022-08-09
(62)【分割の表示】P 2022019659の分割
【原出願日】2022-02-10
【審査請求日】2024-11-12
(73)【特許権者】
【識別番号】000002082
【氏名又は名称】スズキ株式会社
(74)【代理人】
【識別番号】100099623
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【氏名又は名称】田中 祐
(74)【代理人】
【識別番号】100217076
【氏名又は名称】宅間 邦俊
(74)【代理人】
【識別番号】100169018
【氏名又は名称】網屋 美湖
(72)【発明者】
【氏名】海老名 佑介
(72)【発明者】
【氏名】渡邉 尚登
(72)【発明者】
【氏名】坂本 道亮
(72)【発明者】
【氏名】真方 宏基
(72)【発明者】
【氏名】榊原 光利
【審査官】下原 浩嗣
(56)【参考文献】
【文献】特開2001-287179(JP,A)
【文献】特開2020-116509(JP,A)
【文献】特開昭61-273607(JP,A)
【文献】国際公開第2016/056260(WO,A1)
【文献】特開2019-008388(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/12
B25J 9/22
B05B 12/00
(57)【特許請求の範囲】
【請求項1】
疑似塗装ツールを用いた仮想空間での疑似的な塗装を行い、前記仮想空間上での前記疑似塗装ツールの動作に関するログデータを生成する塗装シミュレーション装置と、
前記塗装シミュレーション装置によって生成された前記疑似塗装ツールの動作に関するログデータに基づいて、塗装ロボットを動作させるための教示点を生成する教示点生成装置と、
を備える塗装ロボットの動作プログラム生成システムであって、
前記疑似塗装ツールの動作に関するログデータは、タイムスタンプに関連付けられた前記疑似塗装ツールの座標データを含み、
前記教示点生成装置は、
前記塗装シミュレーション装置によって生成された前記座標データに対してRamer-Douglas-Peucker(RDP)アルゴリズムを用いた第1の離散化計算を行い、前記第1の離散化計算後の座標データに対応する複数の第1の教示点を生成する第1のステップと、
前記塗装シミュレーション装置によって生成された前記座標データと前記タイムスタンプとから前記座標データの各点における移動速度を算出し、前記座標データに対して、算出された前記移動速度を用いた第2の離散化計算を行い、前記第2の離散化計算後の座標データに対応する複数の第2の教示点を生成する第2のステップと、
前記第1のステップで生成された前記複数の第1の教示点と、前記第2のステップで生成された前記複数の第2の教示点とを合算し、複数の第3の教示点を生成する第3のステップと、
を実行するように構成されている、塗装ロボットの動作プログラム生成システム。
【請求項2】
前記教示点生成装置は、
前記第1のステップにおいて、前記座標データから前記第1の離散化計算によって前記疑似塗装ツールの動作軌跡の再現のために不要と判断された複数の第1の無効点を間引くことによって前記複数の第1の教示点を生成し、
前記第2のステップにおいて、前記座標データから前記第2の離散化計算によって前記疑似塗装ツールの動作軌跡の再現のために不要と判断された複数の第2の無効点を間引くことによって前記複数の第2の教示点を生成するように構成され、
前記第3のステップにおいて生成される前記複数の第3の教示点は、前記座標データから、前記第1のステップおよび前記第2のステップの両方において不要と判断された複数の第3の無効点を間引いたものである、請求項1に記載の塗装ロボットの動作プログラム生成システム。
【請求項3】
前記疑似塗装ツールの動作に関するログデータは、さらに、疑似的に塗装される被塗物の塗装面における膜厚の分布を表す膜厚データを含み、当該膜厚データは離散化計算前の膜厚データであり、
前記教示点生成装置は、
前記離散化計算前の膜厚データに対する前記第1のステップにおける前記第1の離散化計算後の第1の膜厚データの膜厚誤差を算出し、前記被塗物の平均膜厚に対する前記膜厚誤差の割合を示す標準偏差を算出し、
前記標準偏差が第1の所定値以内に収まるように、前記第1のステップにおける前記第1の離散化計算のための第1の離散化条件を設定するように構成されている、請求項2に記載の塗装ロボットの動作プログラム生成システム。
【請求項4】
前記疑似塗装ツールの動作に関するログデータは、さらに、疑似的に塗装される被塗物の塗装面における膜厚の分布を表す膜厚データを含み、当該膜厚データは離散化計算前の膜厚データであり、
前記教示点生成装置は、
前記離散化計算前の膜厚データに対する前記第2のステップにおける前記第2の離散化計算後の第2の膜厚データの膜厚誤差を算出し、前記被塗物の平均膜厚に対する前記膜厚誤差の割合を示す標準偏差を算出し、
前記標準偏差が第2の所定値以内に収まるように、前記第2のステップにおける前記第2の離散化計算のための第2の離散化条件を設定するように構成されている、請求項2または3に記載の塗装ロボットの動作プログラム生成システム。
【請求項5】
前記教示点生成装置は、
前記座標データ中の最初の時点における点を基準点として設定し、前記基準点以降の点を対象点として設定し、
前記第2のステップにおける前記第2の離散化計算のための前記第2の離散化条件として、前記基準点における移動速度に基づく閾値を算出し、前記閾値は、前記移動速度が大きくなるほど大きくなるように設定され、
前記基準点における移動速度と、前記対象点における移動速度との速度差の絶対値を算出し、
前記速度差の絶対値が前記閾値以上の場合は、前記対象点を第2の教示点として採用し、かつ、前記対象点を新たな基準点として設定するように構成されている、請求項4に記載の塗装ロボットの動作プログラム生成システム。
【請求項6】
前記教示点生成装置は、前記速度差の絶対値が前記閾値未満の場合は、前記対象点を第2の教示点として採用せず、前記座標データ中の前記対象点以降の点を新たな対象点として設定するように構成されている、請求項5に記載の塗装ロボットの動作プログラム生成システム。
【請求項7】
前記教示点生成装置は、前記座標データに対する前記複数の第3の無効点の割合を示す間引き率が所定値以上となるように、前記第1のステップにおける前記第1の離散化計算のための離散化条件および前記第2のステップにおける前記第2の離散化計算のための離散化条件を設定する、請求項2から6のいずれか1項に記載の塗装ロボットの動作プログラム生成システム。
【請求項8】
前記教示点生成装置によって生成された前記複数の第3の教示点に基づいて、前記塗装ロボットの動作プログラムを生成するように構成された動作プログラム生成装置をさらに備える、請求項1から7のいずれか1項に記載の塗装ロボットの動作プログラム生成システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、塗装ロボットの動作プログラム生成システムに関する。
【背景技術】
【0002】
自動塗装を行う塗装ロボットに動作を教示(ティーチング)する方法として、コンピュータのソフトウェアで動作プログラムを生成し、生成した動作プログラムを塗装ロボットに転送するオフラインティーチングが知られている。例えば特許文献1には、手吹き塗装によるハンドガンの位置情報に基づいて、塗装ロボットの自動ガンの動作経路を設定して塗装用動作プログラムを生成する動作プログラム生成装置が開示されている。この装置では、ハンドガンによる実際の被塗物に対する手吹き塗装の動作を撮像装置によって継続的に撮像し、撮像画像に基づいてハンドガンの位置情報を継続的に取得する。そして、教示点を生成するために、3つのガン位置情報によって特定される3つのガン位置がなす角度に基づいて、ガン位置情報を間引きするか否かを判断するように構成されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述した特許文献1の装置においては、折り返し位置を含む動作軌跡の再現性の低下を抑制するために3つのガン位置がなす角度に基づいて間引きを行っているため、動作軌跡が緩やかな円弧状であるような場合には動作軌跡の再現性が低下してしまう。
【0005】
本発明は、上記のような実状に鑑みてなされたものであって、その目的は、塗装ロボットの作業効率を向上させつつ、動作軌跡と塗装膜厚の再現性を向上させることができるオフラインティーチング用の動作プログラムを生成することにある。
【課題を解決するための手段】
【0006】
本発明の一態様によれば、疑似塗装ツールを用いた仮想空間での疑似的な塗装を行い、前記仮想空間上での前記疑似塗装ツールの動作に関するログデータを生成する塗装シミュレーション装置と、前記塗装シミュレーション装置によって生成された前記疑似塗装ツールの動作に関するログデータに基づいて、塗装ロボットを動作させるための教示点を生成する教示点生成装置と、を備える塗装ロボットの動作プログラム生成システムであって、前記疑似塗装ツールの動作に関するログデータは、タイムスタンプに関連付けられた前記疑似塗装ツールの座標データを含み、前記教示点生成装置は、前記塗装シミュレーション装置によって生成された前記座標データに対してRamer-Douglas-Peucker(RDP)アルゴリズムを用いた第1の離散化計算を行い、前記第1の離散化計算後の座標データに対応する複数の第1の教示点を生成する第1のステップと、前記塗装シミュレーション装置によって生成された前記座標データと前記タイムスタンプとから前記座標データの各点における移動速度を算出し、前記座標データに対して、算出された前記移動速度を用いた第2の離散化計算を行い、前記第2の離散化計算後の座標データに対応する複数の第2の教示点を生成する第2のステップと、前記第1のステップで生成された前記複数の第1の教示点と、前記第2のステップで生成された前記複数の第2の教示点とを合算し、複数の第3の教示点を生成する第3のステップと、を実行するように構成されている。
【発明の効果】
【0007】
本発明によれば、塗装ロボットの作業効率を向上させつつ、動作軌跡と塗装膜厚の再現性を向上させることができる教示点の生成を行うことができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、本発明の一実施の形態における塗装ロボットの動作プログラム生成システムの全体構成を示す概略図である。
【
図2】
図2は、
図1に示す塗装ロボットの動作プログラム生成システムによる処理の概要を説明する図である。
【
図3】
図3(a)~(d)は、RDPアルゴリズムを用いた離散化計算を説明する図である。
【
図4】
図4は、RDPアルゴリズムを用いた離散化計算の流れを説明するフローチャートである。
【
図5】
図5(a)~(d)は、異なる閾値を用いた離散化計算の結果を説明する図である。
【
図6】
図6は、疑似塗装ツールの動作軌跡の再現性と座標データの間引き率との関係を示す図である。
【
図7】
図7は、疑似塗装ツールの動作軌跡の再現性と離散化計算前後の膜厚誤差の標準偏差との関係を示す図である。
【
図8】
図8(a)~(c)は、疑似塗装ツールの移動速度を用いた離散化計算を説明する図である。
【
図9】
図9は、疑似塗装ツールの移動速度を用いた離散化計算の流れを説明するフローチャートである。
【
図10】
図10は、塗装ロボットの動作プログラム生成システムによる動作プログラム生成方法を説明するフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の一実施の形態による塗装ロボットの動作プログラム生成システム、動作プログラム生成方法および教示点生成装置について、図面を参照して詳細に説明する。
図1は、本発明の一実施の形態における塗装ロボットの動作プログラム生成システムの全体構成を示す概略図である。本実施の形態による塗装ロボットの動作プログラム生成システムは、自動塗装を行う塗装ロボットに対してオフラインティーチングを行うため、コンピュータのソフトウェアで動作プログラムを生成するものである。教示点生成装置は、塗装ロボットを動作させるための教示点を生成するものである。
【0010】
図1に示すように、一実施の形態による塗装ロボットの動作プログラム生成システム1は、仮想空間上に配置した3次元の仮想被塗物を利用してユーザの塗装動作を実行できるように構成された塗装シミュレーション装置10と、仮想空間での擬似的な塗装動作に関するログデータに基づいて教示点を生成する教示点生成装置50と、塗装ロボットの動作を教示するための動作プログラムを生成する動作プログラム生成装置60とを備えている。ここで、教示点とは、ロボットを動作させる際にロボットが通るべき目標位置となる情報である。なお、仮想空間としては、VR(Virtual Reality)、AR(Augmented Reality)、またはMR(Mixed Reality)として形成される仮想的な3次元空間が含まれ得るが、以下の説明においては、仮想空間として、VR(Virtual Reality)によって形成されるVR空間を例として説明する。
【0011】
塗装シミュレーション装置10は、シミュレーション制御装置15と、ユーザによって装着されるヘッドマウントディスプレイ(HMD)20と、仮想被塗物に対する疑似的な塗装を行うためにユーザによって手動で操作される疑似塗装ツール30と、疑似塗装ツール30の動作を検知する動作検知装置40とを備えている。
【0012】
HMD20は、リンクボックス21を介してシミュレーション制御装置15に接続され、シミュレーション制御装置15からの信号に応じて仮想空間上の仮想被塗物の3次元画像を表示するように構成されている。HMD20は、ユーザの右目に画像を提供する右目用ディスプレイ(不図示)と左目に画像を提供する左目用ディスプレイ(不図示)とを備えている。視差相当の画角差のある画像が右目用ディスプレイと左目用ディスプレイに表示されることで、仮想空間上の仮想被塗物が立体映像としてユーザに認識される。HMD20には、ユーザ視点の位置姿勢を検出するために動作検知装置40で検知可能な光学式マーカ22が取り付けられている。
【0013】
疑似塗装ツール30は、例えば、実際にスプレー塗装に用いられる塗装ガンによって構成されている。疑似塗装ツール30は仮想空間上での塗装シミュレーションを行うためにユーザの手で操作されるトリガ33を備える。疑似塗装ツール30には、疑似塗装ツール30の動作を計測するために動作検知装置40で検知可能な光学式マーカ31が取り付けられている。光学式マーカ31は、塗装ロボットのツールセンターポイント(TCP)に対応する疑似塗装ツール30の吐出口先端に取り付けられ、疑似塗装ツール30の位置姿勢を検出するように構成されている。
【0014】
疑似塗装ツール30は、さらに、トリガ33の操作による疑似的な塗装のオン/オフを検知するセンサ32を有している。センサ32は、例えばユーザによる疑似塗装ツール30のトリガ33のオン/オフ操作に応じて塗装が行われているオン状態と塗装が行われていないオフ状態を示す信号をシミュレーション制御装置15に出力する。なお、疑似塗装ツール30の吐出口から噴霧されて仮想被塗物に塗布される仮想塗料の塗布パターンは、塗装ロボットに取り付けられる回転霧化式のベル塗装機または丸吹ノズルなどの塗装ガンに対応して、塗料の吐出口の中心軸を中心とした円形状の塗布パターンをエミュレートしている。
【0015】
動作検知装置40は、例えば複数の光学式センサから構成される。光学式センサは、HMD20の光学式マーカ22、および疑似塗装ツール30の光学式マーカ31の計測結果をシミュレーション制御装置15に送信する。なお、動作検知装置40は光学式センサ以外のセンサ、例えば磁気センサ、超音波センサ等を用いてユーザ視点の位置姿勢、および疑似塗装ツール30の位置姿勢を検知するようにしてもよい。
【0016】
シミュレーション制御装置15は、例えば、演算処理を行うCPU(Central Processing Unit)、CPUの作業領域および演算結果の一時記憶領域となるRAM(Random Access Memory)、シミュレーションを実行するための動作プログラムや種々の制御定数、マップ等を格納するROM(Read Only Memory)、ハードディスク装置、入力インターフェイス、出力インターフェイス等を備えるコンピュータとして実装されている。シミュレーション制御装置15は、情報格納部11と、検知制御部12と、シミュレーション計算部13と、画像生成部14とを有している。
【0017】
情報格納部11は、疑似塗装ツール30によって被塗物を塗装した場合の塗料の厚みの分布を表す塗布パターンを格納している。塗布パターンは、疑似塗装ツール30から予め定められた距離の基準位置にある平面に垂直に塗料を塗布したときの塗料の厚みの分布を表す。なお、上述したように塗布パターンは円形状であるため、塗布パターンの円周方向においては、塗料の厚みは実質的に均一に分布する。情報格納部11には、塗装ロボットに取り付け可能な種々の塗装ガンの吐出口に対応した塗布パターンが格納される。情報格納部11には、さらに、塗装シミュレーションの対象となる被塗物を仮想空間上に3次元画像として表示するための被塗物情報、例えば3DCADデータが格納されている。なお、塗布パターンおよび被塗物情報の少なくとも一方を、シミュレーション制御装置15の外部に設けた情報格納部に格納し、シミュレーション制御装置15が外部の情報格納部から塗布パターンおよび/または被塗物情報を読み込むように構成してもよい。
【0018】
検知制御部12は、動作検知装置40を制御し、動作検知装置40によって検知されるHMD20の光学式マーカ22および疑似塗装ツール30の光学式マーカ31の位置姿勢データと、センサ32から取得される疑似塗装ツール30のトリガ33のオン/オフ操作を示す信号とを所定のタイムレート(例えば、30Hz)で取得する。
【0019】
シミュレーション計算部13は、検知制御部12に入力された動作検知装置40による検知結果から、ユーザによって手動で操作される疑似塗装ツール30の動作に関するログデータを取得し、不図示のメモリに記録する。すなわち、シミュレーション計算部13は、ログデータ生成装置として機能する。具体的には、シミュレーション計算部13は、動作検知装置40による疑似塗装ツール30の光学式マーカ31の計測結果に基づいて、塗装ロボットのTCPに対応する疑似塗装ツール30の位置姿勢、すなわち疑似塗装ツール30の吐出口の3次元位置(以降、TCP位置と呼ぶ)と姿勢を算出する。疑似塗装ツール30のTCP位置は、位置データ(X,Y,Z)として表される。疑似塗装ツール30の姿勢は、疑似塗装ツール30の吐出口の中心軸をZ軸としたときのオイラー角(ヨー,ピッチ,ロール)による角度データ(Rx,Ry,Rz)として表される。以下の説明においては、疑似塗装ツール30の位置データと角度データをまとめて、座標データ(X,Y,Z,Rx,Ry,Rz)、または位置姿勢データと呼ぶ。
【0020】
シミュレーション計算部13は、情報格納部11に格納された疑似塗装ツール30に対応する塗布パターンと被塗物情報、疑似塗装ツール30による塗装のオン/オフを示す信号、および疑似塗装ツール30の座標データに基づいて、塗装シミュレーションによって被塗物の膜厚を算出する。膜厚は、例えば、仮想空間上における仮想被塗物と疑似塗装ツール30との間の距離、疑似塗装ツール30の位置姿勢、疑似的な塗装を行っている時間、および塗布パターン等から、疑似的な塗装によって塗布される塗料の厚みを算出することによって求めることができる。シミュレーション計算部13は、被塗物の塗装面における膜厚の分布を膜厚データとして求める。
【0021】
シミュレーション計算部13は、算出した疑似塗装ツール30の座標データ、膜厚データ、および疑似塗装ツール30のトリガ33の操作による塗装のオン/オフのデータを、タイムスタンプと関連付けたログデータを生成し、不図示のメモリに記録する。疑似塗装ツール30の座標データは、周期的に抽出されてログデータとして記録される。
【0022】
シミュレーション計算部13は、さらに、動作検知装置40によるHMD20の光学式マーカ22の計測結果に基づいて光学式マーカ22の位置姿勢を算出し、予め求めたユーザ視点と光学式マーカ22との間の相対的な位置姿勢関係に基づいて、光学式マーカ22の位置姿勢をユーザ視点の位置姿勢に変換する。
【0023】
画像生成部(画像生成装置)14は、情報格納部11に格納された被塗物情報に基づいて仮想被塗物を生成して仮想空間中に配置し、シミュレーション計算部13で求められたユーザ視点の位置姿勢情報に基づいて、被塗物をユーザ視点から見た3次元画像を生成する。画像生成部14は、シミュレーション計算部13のシミュレーション結果に基づいて、仮想被塗物に対する疑似的な塗装動作を表す3次元画像を生成する。すなわち、画像生成部14は、仮想空間上に配置した仮想被塗物の3次元画像を含み、ユーザによる疑似塗装ツール30の操作に応じて、仮想空間上で疑似塗装ツール30によって仮想被塗物に仮想塗料が塗布される疑似的な塗装を表す画像を生成するように構成されている。
【0024】
画像生成部14は、疑似塗装ツール30のトリガ33がオン操作されると、疑似塗装ツール30の吐出口から噴霧される仮想塗料と仮想被塗物に塗布された仮想塗膜の画像を生成し、リアルタイムで合成してHMD20に表示する。画像生成部14は、疑似塗装ツール30のTCP位置を例えば赤丸で表示し、疑似塗装ツール30の吐出口から噴射される仮想塗料を例えば円錐形で表示する。疑似塗装ツール30によって疑似的に塗料が塗布された仮想被塗物の部分は、疑似的な塗装による膜厚の分布に応じた濃度や配色で着色される。
【0025】
画像生成部14で生成された3次元画像(視差映像セット)はリンクボックス21を介してHMD20に送信されリアルタイムで表示される。これによりユーザは、自身の視点の位置姿勢に応じた立体映像を観察しながら、仮想被塗物に対する疑似的な塗装を行うことができる。画像生成部14で生成された3次元画像は、任意で外部モニタ25に表示してもよい。
【0026】
次に、教示点を生成する教示点生成装置50について説明する。教示点生成装置50は、例えば、演算処理を行うCPU、CPUの作業領域および演算結果の一時記憶領域となるRAM、処理を実行するための動作プログラムや種々の制御定数、マップ等を格納するROM、ハードディスク装置、入力インターフェイス、出力インターフェイス等を備えるコンピュータとして実装されている。
【0027】
教示点生成装置50は、塗装シミュレーション装置10から塗装動作のログデータを取得する。塗装動作のログデータは、上述したように疑似塗装ツール30の座標データ、膜厚データ、および塗装のオン/オフのデータが、タイムスタンプと関連付けて記録されたものである。なお、教示点生成装置50は、必要に応じて、塗装シミュレーション装置10から取得した疑似塗装ツール30の座標データに対して、後述する動作プログラム生成装置60で用いるオフラインティーチング用のソフトウェアで利用可能となるように座標変換計算を行う。教示点生成装置50は、ログデータに対して離散化計算(間引き処理)を行い、離散化計算後のログデータに対応する教示点を生成する。教示点生成装置50における離散化計算の詳細は、後述する。
【0028】
動作プログラム生成装置60は、例えば、演算処理を行うCPU、CPUの作業領域および演算結果の一時記憶領域となるRAM、処理を実行するための動作プログラムや種々の制御定数、マップ等を格納するROM、ハードディスク装置、入力インターフェイス、出力インターフェイス等を備えるコンピュータとして実装されている。
【0029】
動作プログラム生成装置60には、オフラインティーチング用のソフトウェアがインストールされており、教示点生成装置50によって生成された教示点に基づいて、塗装ロボットの動作を教示するための動作プログラムを生成する。オフラインティーチング用のソフトウェアとしては、特定のロボットメーカのロボット言語に制限されない公知の教示ソフトウェアを用いることができる。特定のロボットメーカのロボット言語に制限されない教示ソフトウェアを用いることにより、本実施の形態によって生成された教示点を利用可能なロボット本体、ロボット制御部およびパラメータが制限されることがない。なお、特定のロボットメーカのロボット言語に対応するように教示点を生成することも可能である。
【0030】
図2に、
図1に示す動作プログラム生成システム1による処理の概要を示す。本実施の形態による動作プログラム生成システム1は、まず、塗装シミュレーション装置10によって、仮想空間上でのユーザによる疑似塗装ツール30の塗装動作を計測し、塗装動作のログデータを生成する(S1)。次に、教示点生成装置50によって、塗装シミュレーション装置10によって得られた塗装動作のログデータに対して離散化計算を行い、離散化計算後のログデータに対応する教示点を生成する(S2)。そして、動作プログラム生成装置60によって、生成された教示点に基づいて、塗装ロボットの動作を教示するための動作プログラムを生成する(S3)。
【0031】
以上説明したように、本実施の形態による塗装ロボットの動作プログラム生成システム1は、オフラインティーチングで用いる塗装ロボットの動作プログラムを作成するものである。オフラインティーチングは、コンピュータ上で塗装ロボットの動作をシミュレーションすることができるため、ティーチングペンダントを用いてロボット本体を動かしてティーチングを行うダイレクトティーチングに比べて塗装の対象となる被塗物、塗装装置および治具等を実際に準備する必要がないというメリットがある。
【0032】
しかし、従来のオフラインティーチングは、CAD空間でのシミュレーションで大まかなティーチングを行った後、現場でダイレクトティーチングを行い、ロボット本体を動かして問題抽出とプログラム修正を行っていた。すなわち、オフラインティーチングのみで所望の動作プログラムを完成させることができない場合には、精度の高い動作プログラムを完成させるために被塗物、塗装装置および治具等を実際に準備して修正を行う必要があった。
【0033】
また、塗装ガンを用いたスプレー塗装においては、塗装ガンの移動速度、塗装ガンと被塗物との距離や角度などの塗装条件によって被塗物に塗布される塗料の厚みが変化する。塗装作業者は、通常、所望の膜厚を得るために、被塗物の面形状や周辺治具形状を考慮して塗装ガンの移動速度を変化させながら作業する。したがって、塗装ガンの動作軌跡の再現性のみに着目し、移動速度を考慮せず動作プログラムを生成した場合は、所望の塗装膜厚を再現することができない可能性がある。
【0034】
そこで、本実施の形態による塗装ロボットの動作プログラム生成システム1においては、ユーザが手動で操作する疑似塗装ツール30を含む塗装シミュレーション装置10を用いて仮想空間上で塗装シミュレーションを行い、塗装動作のログデータに対して後述する間引き処理を行う。これにより、所望の塗装膜厚を形成可能な動作軌跡を再現するようにオフラインティーチング用の動作プログラムを生成する。
【0035】
以下に、教示点生成装置50による間引き処理の詳細について説明する。上述したように、教示点は、塗装ロボットが動作する際の目標位置となる情報であり、教示点が多いほど、ユーザによる動作軌跡を正確にトレースできるため再現性が高い。しかし、ユーザによる小刻みな揺れや細かな癖までも再現してしまう可能性がある。また、教示点が多い動作プログラムは、ロボット制御部の演算処理能力に影響・負荷を及ぼす可能性が高く、それに伴ってロボット制御部と塗装ロボット本体との間での通信遅延が発生する可能性がある。一方、教示点が少ない動作プログラムは、ロボット制御部の演算処理への負荷は小さくなるが、教示点間の距離が長くなりユーザの動作軌跡の再現性は低下してしまう。また、教示点間の移動速度も平均化されてユーザによる塗装ガンの移動速度が反映されず、塗装膜厚の再現性も低下してしまう可能性がある。
【0036】
そこで、本実施の形態においては、疑似塗装ツール30の座標データ(X,Y,Z,Rx,Ry,Rz)に対する間引き処理として、Ramer-Douglas-Peucker(RDP)アルゴリズムを用いた離散化計算を行い、必要と判断した座標データを教示点として採用する。さらに、疑似塗装ツール30の座標データに対して、疑似塗装ツール30の移動速度に応じて動的に設定された閾値を用いて離散化計算を行い、必要と判断した座標データを教示点として採用する。
【0037】
まず、
図3(a)~(d)を用いて、疑似塗装ツール30の座標データ(X,Y,Z,Rx,Ry,Rz)に対するRDPアルゴリズムを用いた離散化計算について説明する。
図3(a)~(d)は、塗装シミュレーション装置10によって取得した疑似塗装ツール30のログデータに含まれる座標データの時間変化を概念的に示しており、実線または破線の丸印で示す点は、例えばX軸方向のTCP位置を表している。
【0038】
RDPアルゴリズムを用いた離散化計算の概要は次のとおりである。
図3(a)に示すように動作軌跡の開始点Psと終了点Peとの間を直線Lで結び、直線Lから最も遠い点Paを選択する。そして、直線Lから最も遠い点Paまでの距離Daが予め設定した閾値ε以上であれば点Paを必要(有効)と判断し、閾値ε未満であれば点Paを不要(無効)と判断する。この処理を繰り返し実行し、必要と判断した座標データのみを教示点として採用する。閾値εの値を変更することで、座標データをどの程度間引きするか、すなわち、疑似塗装ツール30の動作軌跡をどれほど忠実に再現(トレース)するかを調整することができる。閾値εの設定については、後述する。
【0039】
以下に、
図4のフローチャートを用いてRDPアルゴリズムを用いた離散化計算の流れを説明する。
【0040】
まず、ステップS101において、
図3(a)に示すように開始点Psと終了点Peの間を直線Lで結ぶ。ステップS102では、開始点Psと終了点Peの間にある全ての点について、直線Lに直交する方向における直線Lからの距離を算出し、直線Lからの距離が最も遠い点Paを選択する。ステップS103では、直線Lから点Paまでの距離Daが閾値ε以上か否かを判定する。距離Daが閾値ε以上の場合はステップS104へ進み、点Paを有効な点と判断する。一方、距離Daが閾値εより小さい場合は、点Paを無効な点と判断してこの処理を終了する。
【0041】
ステップS104で点Paを有効な点と判断した後の処理は、ステップS105とステップS107に分岐する。ステップS105では、ステップS104で有効と判断した点Paと開始点Psとの間に点が存在するか否かを判定する。
図3(a)に示すように有効点Paと開始点Psとの間に点が存在する場合は、ステップS106へ進む。有効点Paと開始点Psとの間に点が存在しない場合は、この処理を終了する。
【0042】
ステップS106では、有効点Paを終了点Peとして設定し、ステップS101へ戻って上述した処理を繰り返す。具体的には、
図3(b)に示すように、開始点Psと終了点Peとして設定された有効点Paとの間を直線Lで結び(ステップS101)、直線Lから最も遠い点Paを選択する(ステップS102)。直線Lから点Paまでの距離Daが閾値ε以上か否かを判定する(ステップS103)。距離Daが閾値ε以上の場合は、点Paを有効な点と判断し(ステップS104)、距離Daが閾値εより小さい場合は、点Paを無効な点と判断してこの処理を終了する。
【0043】
一方、ステップS107では、ステップS104で有効と判断した点Paと終了点Peとの間に点が存在するか否かを判定する。
図3(a)に示すように有効点Paと終了点Peとの間に点が存在する場合は、ステップS108へ進む。有効点Paと終了点Peとの間に点が存在しない場合は、この処理を終了する。
【0044】
ステップS108では、有効点Paを開始点Psとして設定し、ステップS101へ戻って上述した処理を繰り返す。具体的には、
図3(c)に示すように、開始点Psとして設定された有効点Paと終了点Peとの間を直線Lで結び(ステップS101)、直線Lから最も遠い点Paを選択する(ステップS102)。直線Lから点Paまでの距離Daが閾値ε以上か否かを判定する(ステップS103)。距離Daが閾値ε以上の場合は、点Paを有効な点と判断し(ステップS104)、距離Daが閾値εより小さい場合は、点Paを無効な点と判断してこの処理を終了する。
【0045】
図4のフローチャートに示した処理は、処理開始時に開始点Psと終了点Peの間に存在する全ての点のうち、ステップS102で直線Lからの距離が最も遠いと判断された全ての点Paについて有効か無効かの判断を完了すると終了する。
図3(d)に、
図3(a)の座標データに対する離散化計算の結果を示す。
図3(d)は、開始点Psと終了点Peの間の点のうち、点P1と点P2が有効と判断され、その他の点が無効と判断された例を示している。教示点生成装置50は、開始点Ps、終了点Pe、および有効点P1、P2のみを教示点として採用し、その他の点は教示点として用いずに削除する。
【0046】
教示点生成装置50は、疑似塗装ツール30の座標データ(X,Y,Z,Rx,Ry,Rz)のうち、吐出口の中心軸(Z軸)周りのロール角度を表すRzを除く5つの座標データのそれぞれについて、上述した離散化計算を行う。上述したように、疑似塗装ツール30は吐出口の中心軸を中心とした円形状の塗布パターンを疑似的に形成するように構成されており、吐出口の中心軸周りのロール角度Rzは塗布パターンに影響することはない。そのため、ロール角度Rzについては離散化計算から除外する。
【0047】
つぎに、RDPアルゴリズムを用いた離散化計算で用いる閾値εの設定について説明する。上述したように、疑似塗装ツール30の動作軌跡の再現性と教示点の数とはトレードオフの関係にある。教示点が多いほど動作軌跡の再現性が高く、教示点が少ないほど再現性が低く動作軌跡からの乖離が大きくなる。すなわち、離散化計算によって座標データから無効点を間引く(削除する)度合いが低いほど、教示点が多く動作軌跡の再現性が高い。一方、座標データから間引く度合いが高いほど、教示点が少なく動作軌跡の再現性が低い。以後の説明においては、塗装シミュレーション装置10から取得した疑似塗装ツール30の座標データから無効点を間引く度合いを間引き率または離散化率と呼び、動作軌跡の再現性をトレース率と呼ぶこともある。間引き率は、疑似塗装ツール30の座標データに対する無効点の割合である。
【0048】
動作軌跡の再現性は、閾値εの大きさによって調整することができる。異なる閾値εを用いた離散化計算の結果を、
図5~
図7を用いて説明する。
図5(a)~(d)の横軸は時間を表し、縦軸は例えばX軸方向のTCP位置を表しており、疑似塗装ツール30の動作軌跡と教示点を結んだ経路とを示す。なお、
図5~
図7に示すCASE_AからCASE_Dは、異なる閾値εを用いた場合の離散化計算の効果の相違をわかりやすく説明するために用いた例であり、実際の離散化計算の結果は図示したものとは異なり得る。
【0049】
閾値εの大きさは、
図5(a)に示すCASE_Aの閾値εが最も大きく、
図5(b)に示すCASE_Bの閾値εが二番目に大きく、
図5(c)に示すCASE_Cの閾値εが三番目に大きく、
図5(d)に示すCASE_Dの閾値εが最も小さい。
図5(a)に示すCASE_Aは、閾値εが最も大きく間引き率が最も高い場合であり、丸印で示す教示点の数が少ない。したがって、実線で示す疑似塗装ツール30の動作軌跡に対し、破線で示す教示点を繋いだ経路が大きく乖離している。
図5(b)から
図5(d)に示すように、閾値εが小さくなるほど間引き率が低くなり、丸印で示す教示点の数が多く、動作軌跡の再現性が高くなる。
【0050】
図6に、疑似塗装ツール30の動作軌跡の再現性と座標データの間引き率との関係を示す。
図6の横軸は座標データからの間引き率(%)を示し、縦軸は動作軌跡の再現性を示す。ここでは、動作軌跡の再現性を表す指標として、平均平方二重誤差RMSE(mm)を用いる。動作軌跡のRMSEは、以下の式(1)から算出することができる。
【数1】
(式1)において、nは座標データの数であり、fiは離散化計算前の動作軌跡(座標データ)のi番目の値、yiは離散化計算後の経路(教示点)のi番目の値を表す。
【0051】
動作軌跡のRMSEの値が小さいほど、離散化計算前の動作軌跡に対する離散化計算後の経路の誤差が小さく、動作軌跡の再現性すなわちトレース率が高いことを表す。
図6に示すように、CASE_Aは間引き率が最も高く(99.8%)、動作軌跡のRMSEが最も大きい(352.1mm)。したがって、動作軌跡の再現性が最も小さい。CASE_B、CASE_C、CASE_Dの順に間引き率が98.8%,96.9%,76.8%と小さくなり、動作軌跡のRMSEが39.8mm,11.8mm,0.2mmと小さくなる。これに伴い動作軌跡の再現性が高くなる。
【0052】
動作軌跡のRMSE、すなわち動作軌跡の再現性をどの程度とするかは、種々のファクターが考慮され得るが、例えば被塗物の膜厚分布に基づいて決定することができる。具体的には、複数の測定点における離散化計算前の膜厚データと離散化計算後の膜厚データとから、上述した(式1)と同等の式を用いて算出される膜厚の平均平方二重誤差RMSE(μm)を用いる。なお、この場合、nは膜厚データの数であり、fiは離散化計算前の膜厚座標データのi番目の値、yiは離散化計算後の膜厚データのi番目の値を表す。
【0053】
図7に、疑似塗装ツール30の動作軌跡の再現性と離散化計算前後の膜厚誤差の標準偏差との関係を示す。
図7の横軸は動作軌跡のRMSEを示し、縦軸は膜厚のRMSE(膜厚誤差)の標準偏差σを示す。
図7において、膜厚誤差の標準偏差σは、被塗物の平均膜厚に対する膜厚誤差の割合(%)で示されている。
【0054】
図7に示すように、CASE_A、CASE_B、CASE_C、CASE_Dの順で動作軌跡のRMSEが小さくなり、これに応じて膜厚誤差の標準偏差σが小さくなる。離散化計算前後の膜厚誤差の標準偏差σは例えば約20%以下となることが好ましく、約15%以下となることがより好ましい。
図7に示す関係によると、膜厚誤差の標準偏差σ=20%の場合、動作軌跡のRMSEは約40mm、膜厚誤差の標準偏差σ=15%の場合、動作軌跡のRMSEは約15mmである。したがって、動作軌跡のRMSEは膜厚誤差の標準偏差σ=15%に対応する15mm以下とすることが好ましい。間引き率を98%程度とし、離散化計算によって座標データの98%程度を削除したとしても、離散化計算前後の膜厚誤差は20%以内に収まり、離散化計算によって座標データの97%程度を削除した場合、離散化計算前後の膜厚誤差は15%以内に収めることができる。
【0055】
以上から、CASE_A、CASE_B、CASE_C、CASE_Dのうち、膜厚誤差の標準偏差σが約20%以下となるCASE_B、CASE_C、またはCASE_Dが好ましく、膜厚誤差の標準偏差σが約15%以下となるCASE_C、またはCASE_Dがより好ましい。上述した動作軌跡の再現性(トレース率)と間引き率を考慮して閾値εを適切に設定することにより、所望の動作経路および膜厚を実現することができる。
【0056】
次に、疑似塗装ツール30の移動速度を用いた離散化計算について説明する。疑似塗装ツール30の移動速度(塗装速度)と膜厚は比例関係にあり、移動速度が10%上がると膜厚は10%低下し、移動速度が10%下がると膜厚は10%増加する。したがって、移動速度の変化を考慮せず、動作軌跡の再現性のみを考慮して間引き処理を行うと、所望の膜厚を得られない可能性がある。そこで、本実施の形態においては、疑似塗装ツール30の移動速度に応じて動的に設定された閾値αを用いて離散化計算を行うことにより、必要と判断した座標データを教示点として採用する。
【0057】
塗装シミュレーション装置10から取得した疑似塗装ツール30のログデータには、位置データとタイムスタンプが含まれている。疑似塗装ツール30の移動速度は、各TCP位置における位置データとタイムスタンプとから算出することができるため、疑似塗装ツール30のログデータには移動速度に関するログデータが含まれていると理解できる。教示点生成装置50は、塗装シミュレーション装置10から取得した疑似塗装ツール30の位置データとタイムスタンプから、各TCP位置における移動速度を算出する。上述したように離散化計算前後の膜厚誤差の標準偏差は20%以内であることが好ましく、15%以内であることがより好ましいことから、疑似塗装ツール30の加速度の差も20%以内であることが好ましく、15%以内であることがより好ましい。
【0058】
図8(a)~(c)に、疑似塗装ツール30の移動速度を用いた離散化計算を説明する図を示す。
図8(a)~(c)は、疑似塗装ツール30の各TCP位置における移動速度の時間変化を示しており、実線または破線の丸印で示す点は、各TCP位置における移動速度を表している。以下に、
図9のフローチャートを用いて、疑似塗装ツール30の移動速度を用いた離散化計算の流れを説明する。
【0059】
まず、ステップS201において、
図8(a)に示すように最初の時点tiにおけるTCP位置を基準点Piとして設定する(i=1)。ステップS202では、基準点Piにおける疑似塗装ツール30の移動速度viに基づいて閾値αを設定する。具体的には、移動速度viと所定の係数βとを用いて閾値αを算出する(α=β×vi)。ここで、係数βは、求める精度に応じて予め適宜設定されるが、疑似塗装ツール30の移動速度が速くなるほど閾値αが大きくなるように設定される。係数βは、例えばβ=0.2とすることができる。ステップS203では、対象点Pjを設定する。対象点Pjは、時点tjにおけるTCP位置であり、ここでは基準点Piを基準として(i+1)番目となる点である。
【0060】
ステップS204では、基準点Piの移動速度viと対象点Pjの移動速度vjの速度差の絶対値Δvjを算出する(Δvj=|vj-vi|)。ステップS205では、速度差の絶対値ΔvjがステップS202で設定した閾値α以上であるか否かを判定する。速度差の絶対値Δvjが閾値α未満の場合は、ステップS206へ進み、対象点Pjを無効な点と判断して新たな対象点Pjを設定する。具体的には、現在の対象点Pjの次の点、すなわち(j+1)番目の点を、新たな対象点Pjに設定する。新たな対象点Pjを設定した後、ステップS204へ戻って新たな対象点Pjの移動速度vjを用いて速度差の絶対値Δvjを算出する。
【0061】
一方、ステップS205で速度差の絶対値Δvjが閾値α以上と判定されると、ステップS207へ進み、対象点Pjを有効な点と判断する。これにより、
図8(a)に示すように、基準点Piの移動速度viに対する速度差が、基準点Piの移動速度viに基づく閾値α以上となる対象点Pjが有効点と判断される。
【0062】
つづくステップS208では、ステップS207で有効化した対象点Pjの次の点が存在するか否かを判定する。対象点Pjの次の時点におけるTCP位置が存在する場合は、ステップS209へ進み、対象点Pjを新たな基準点Piとして設定する。新たな基準点Piを設定した後、ステップS202へ戻って上述した処理を繰り返す。すなわち、
図8(b)に示すように、新たな基準点Piの移動速度viに基づいて閾値αを設定し、設定した閾値αに基づいて新たな対象点Pjを有効とするか無効とするかを判断する。
【0063】
ステップS208で、ステップS207で有効化した対象点Pjの次の点が存在しないと判定されると、この処理を終了する。
図8(c)に、
図8(a)に示した疑似塗装ツール30の各TCP位置における移動速度を用いた離散化計算の結果を示す。
図8(c)は、実線の丸印で示す3つの点P1,P2,P3が有効と判断され、破線の丸印で示す他の点が無効と判断された例を示している。教示点生成装置50は、最初の時点における点P1を含む3つの有効点P1,P2,P3を教示点として採用し、その他の点は教示点として用いずに削除する。
【0064】
以上、本実施の形態による塗装ロボットの動作プログラム生成システム1を構成する各装置における処理について説明した。次に、塗装ロボットの動作プログラム生成システム1による動作プログラム生成方法について、
図10のフローチャートを用いて説明する。
【0065】
まず、ステップS301で、塗装シミュレーション装置10によって仮想空間上の仮想被塗物に対する塗装シミュレーションを開始する。塗装シミュレーションは、ユーザによる疑似塗装ツール30のトリガ33のオン操作に応じて開始する。ステップS302で塗装シミュレーション装置10は、疑似塗装ツール30の疑似的な塗装によって得られた被塗物の膜厚が適正範囲内か否かを判定する。塗装シミュレーション装置10は、上述したように疑似的な塗装動作による被塗物の膜厚を算出し、疑似的に得られた膜厚が予め定めた適正範囲内にあるか否かを判定する。膜厚が適正範囲内にある場合は、ステップS303へ進む。一方、膜厚が適正範囲内にない場合は、疑似塗装ツール30による塗装動作によって所望の膜厚が得られなかったと判断し、ステップS301へ戻る。すなわち、所望の膜厚が得られるまで、疑似塗装ツール30による塗装シミュレーションをやり直す。
【0066】
ステップS303で塗装シミュレーション装置10は、上述したように疑似塗装ツール30のログデータを生成し、記録する。なお、塗装シミュレーション装置10で生成、記録する疑似塗装ツール30のログデータのデータ形式は、動作プログラム生成装置60で用いるオフラインティーチング用のソフトウェアで利用可能なデータ形式とする。以上説明したステップS301からステップS303までが、塗装シミュレーション装置10によって実行される処理である。
【0067】
ステップS310で教示点生成装置50は、ステップS303で得られた疑似塗装ツール30のログデータを取得する。教示点生成装置50は、必要に応じて任意で、疑似塗装ツール30の座標データに対し、動作プログラム生成装置60で用いるオフラインティーチング用のソフトウェアで利用可能となるように座標変換計算を行う。
【0068】
ステップS311で教示点生成装置50は、疑似塗装ツール30のログデータに対する離散化計算を行うための離散化条件(間引き処理のための間引き条件)を設定する。具体的には、疑似塗装ツール30の座標データに対するRDPアルゴリズムを用いた離散化計算を行うための閾値εと、疑似塗装ツール30の移動速度を用いた離散化計算を行うための閾値αを設定する。上述したように、閾値εおよび閾値αは、動作軌跡の再現性(トレース率)と間引き率を考慮し、所望の動作経路および膜厚を実現することができるように適切な値を設定する。なお、閾値εおよび閾値αは、塗装ロボットに取り付けられる塗装ガンの種類、被塗物の種類などに応じて変更してもよいし、それぞれ固定値としてもよい。
【0069】
ステップS312で教示点生成装置50は、疑似塗装ツール30のログデータのうち、塗装のオン/オフのデータの離散化計算(間引き処理)を行う。具体的には、疑似塗装ツール30が塗装を行っていないオフ状態に対応する座標データを削除する。この後の処理は、ステップS313とステップS314に分岐する。
【0070】
ステップS313で教示点生成装置50は、上述したように疑似塗装ツール30の座標データに対するRDPアルゴリズムを用いた離散化計算を行う。ステップS314では、上述したように疑似塗装ツール30の移動速度を用いた離散化計算を行う。なお、
図10のフローチャートでは、同じログデータを用いてステップS313とステップS314の処理を行うことを表すためにステップS313とステップS314を分岐して図示しているが、ステップS313とステップS314の処理はいずれかの処理を先に行ってもよいし、両方の処理を同時に行ってもよい。
【0071】
ステップS315で教示点生成装置50は、ステップS313の離散化計算によって生成された教示点と、ステップS314の離散化計算によって生成された教示点とを合算する。例えば、RDPアルゴリズムを用いた離散化計算によって無効と判断された点であっても、移動速度を用いた離散化計算で有効と判断された点は、教示点として採用されることになる。また、移動速度を用いた離散化計算で無効と判断された点であっても、RDPアルゴリズムを用いた離散化計算によって有効と判断された点は、教示点として採用されることになる。
【0072】
ステップS316で教示点生成装置50は、ステップS315で合算した教示点の間引き率が所定値以上あるか否かを判定する。間引き率の所定値は、ロボット制御部の演算負荷などを考慮して適切に設定することができる。ここでは、例えば所定値を50%に設定し、間引き率が50%以上である場合は、ステップS317へ進み、間引き率が50%未満の場合は、ステップS311へ戻って間引き率が50%以上となるように離散化条件を再設定する。
【0073】
ステップS317で教示点生成装置50は、ステップS315で合算した教示点によって得られる動作経路が、ユーザによる動作軌跡を十分に再現できているかを判断する。すなわち、動作軌跡の再現性が十分な高さとなっているかを判断する。動作軌跡の再現性は、例えば上述した動作軌跡のRMSEを用いて判断することができ、動作軌跡のRMSEが例えば40mm以下の場合に、再現性が十分に高いと判断する。再現性が低いと判定されると、ステップS311へ戻って再現性が十分な高さとなるように離散化条件を再設定する。再現性が十分に高いと判定された場合は、ステップS320へ進む。以上説明したステップS310からステップS317までが、教示点生成装置50によって実行される処理である。
【0074】
ステップS320で動作プログラム生成装置60は、教示点生成装置50によって生成された、十分に間引きされ、かつ動作軌跡の再現性が高い教示点に基づいて、塗装ロボットの動作を教示するための動作プログラムを生成する。なお、動作プログラム生成装置60は、生成した動作プログラムを塗装ロボットに転送する前に、生成した動作プログラムによって塗装ロボットが正常に動作するかをコンピュータ上で確認する。これにより、塗装ロボットの動作プログラム生成システム1による動作プログラム生成処理を終了する。
【0075】
上述した一実施の形態による塗装ロボットの動作プログラム生成システム1においては、以下のような作用効果を奏することができる。
【0076】
塗装ロボットの動作プログラム生成システム1は、仮想空間で疑似的な塗装を行うための塗装シミュレーション装置10であって、仮想空間上で疑似的な塗装を行うためにユーザの手で操作されるトリガ33を備えた疑似塗装ツール30と、仮想空間上に配置した仮想被塗物の3次元画像を含み、ユーザによる疑似塗装ツール30の操作に応じて、仮想空間上で疑似塗装ツール30によって仮想被塗物に仮想塗料が塗布される疑似的な塗装を表す画像を生成するように構成されている画像生成部14と、ユーザによって装着され、画像生成部14が生成する画像を表示するHMD20と、仮想空間上での疑似塗装ツール30の動作を検知する動作検知装置40と、動作検知装置40による検知結果から、疑似塗装ツール30の動作に関するログデータを生成するシミュレーション計算部13と、を備える塗装シミュレーション装置10と、シミュレーション計算部13によって生成されたログデータに対して離散化計算を行い、離散化計算後のログデータに対応する教示点を生成する教示点生成装置50と、教示点生成装置50によって生成された教示点に基づいて、塗装ロボットの動作を教示するための動作プログラムを生成する動作プログラム生成装置60とを備える。
【0077】
本実施の形態による塗装ロボットの動作プログラム生成システム1は、疑似塗装ツール30を用いた仮想空間上での塗装シミュレーションにより、ユーザによる疑似塗装ツール30の動作に関するログデータを取得するように構成されている。ユーザによる塗装動作のログデータから教示点を生成し、塗装ロボットの動作プログラムを生成するので、塗装ロボットの作業効率を向上させつつ、動作軌跡と塗装膜厚の再現性を向上させることができるオフラインティーチング用の動作プログラムを生成することができる。ユーザが装着するHMD20には、疑似塗装ツール30によって仮想被塗物に仮想塗料が塗布される疑似的な塗装を表す画像が表示される。ユーザはHMD20にリアルタイムで表示される疑似的な塗装の様子を確認しながら、疑似塗装ツール30を手で持って仮想空間上に配置された仮想被塗物を実際に塗装するような感覚で塗装動作を行うので、ユーザ、例えば熟練の塗装作業者による実際の塗装動作に一致したログデータを取得することができる。これにより、熟練の塗装作業者の塗装動作の動作軌跡を塗装ロボットの動作経路として再現できる動作プログラムを生成することができる。また、仮想空間上で塗装シミュレーションを行うので、被塗物、塗装装置および治具などの現物を準備する必要がない。
【0078】
また、仮想空間上に3次元の仮想被塗物を配置して塗装シミュレーションを行うため、被塗物のサイズを拡大縮小してシミュレーションを行ったり、被塗物の上下を反転してシミュレーションを行うこともできる。例えば、サイズを縮小した仮想被塗物を表示することにより、自動車、大型家具、大型電化製品、大型船舶、飛行機等の大型の被塗物に対する塗装シミュレーションを行うこともできる。さらに、複雑な形状を有する被塗物を拡大して仮想被塗物として表示することにより、細かな部分に対する塗装動作を詳細にシミュレートすることができる。このように、仮想空間上の仮想被塗物を利用して塗装シミュレーションを行うことにより、様々なサイズの被塗物に対する熟練の塗装作業者の塗装動作のログデータを取得することができる。
【0079】
疑似塗装ツール30の動作に関するログデータは、疑似的な塗装中の疑似塗装ツール30の位置のログデータを含み、教示点生成装置50は、位置のログデータに対してRamer-Douglas-Peucker(RDP)アルゴリズムを用いた離散化計算を行うように構成されている。疑似塗装ツール30の動作に関するログデータは、疑似的な塗装中の疑似塗装ツール30の姿勢のログデータ、すなわち角度データをさらに含み、教示点生成装置50は、さらに姿勢のログデータに対してRDPアルゴリズムを用いた離散化計算を行うように構成されている。RDPアルゴリズムを用いて離散化計算を行うことにより、ユーザによる小刻みな揺れや不要な動作による座標データを削除しながら、ユーザの動作軌跡を再現することができる。RDPアルゴリズムを用いた離散化計算においては、疑似塗装ツール30の移動距離にかかわらず、開始点Psと終了点Peとを結ぶ直線Lからの距離に基づいて、座標データの有効/無効を判断するため、同一ベクトルを持つ座標データは適切に削除される。また、座標データの間引き率は、閾値εのみに基づいて調整することができるため、座標データをどの程度間引くかといった検討作業や管理作業が容易である。
【0080】
疑似塗装ツール30の動作に関するログデータは、疑似的な塗装中の疑似塗装ツール30の位置のログデータと移動速度に関するログデータを含み、教示点生成装置50は、移動速度に応じて動的に設定された閾値αを用いて位置のログデータに対する離散化計算を行うように構成されている。疑似塗装ツール30の動作に関するログデータは、疑似的な塗装中の疑似塗装ツール30の姿勢のログデータ、すなわち角度データをさらに含み、教示点生成装置50は、閾値αを用いてさらに姿勢のログデータに対する離散化計算を行うように構成されている。教示点間の移動速度は膜厚に影響するため、教示点生成の際に、疑似塗装ツール30の移動速度を考慮することにより、塗装膜厚の再現性を向上させることができる。塗装膜厚は、塗装ガンから吐出される塗料の吐出量によっても調整できるが、本実施の形態においては、疑似塗装ツール30の移動速度を反映した教示点生成を行うため、塗装ロボットに取り付けられる塗装ガンの吐出量を一定とすることができる。塗装ガンの吐出量を一定(固定値)とすることで、塗装ロボットの制御が一層、容易になる。
【0081】
-変形例-
以上、本発明の一実施の形態について詳細に説明したが、本発明は上述した実施の形態に限定されるものではなく、本発明の技術的思想に基づいて種々の変形および変更が可能である。
【0082】
-変形例1-
教示点生成装置50は、さらに、塗装ロボットに取り付けられた塗装ガンの吐出口の中心軸に関するねじれ角度の補正処理を行うように構成されていてもよい。塗装ロボットは、例えば、塗装ガンが取り付けられ、複数の自由度を有する4軸、5軸、または6軸の垂直多関節ロボットとして構成される。これに対し、疑似塗装ツール30はユーザの手で操作される。塗装シミュレーション装置10によって取得した疑似塗装ツール30の座標データは、ユーザが手動で行う塗装動作の動作軌跡を表すものである。疑似塗装ツール10を操作するユーザの肩関節の稼働域と塗装ロボットのマニュピレータの稼働域は同一ではないため、疑似塗装ツール30の座標データをそのまま用いて教示点を生成すると、塗装ロボットの稼働域限界を越えてエラーとなってしまう可能性がある。
【0083】
上述した実施の形態で説明したように、塗装ロボットの塗装ガンおよび疑似塗装ツール30は吐出口の中心軸に関して360度軸対称な円形状の塗布パターンを形成するように構成されている。したがって、吐出口の中心軸(Z軸)周りのロール角度は、塗装結果に影響しないパラメータである。そこで、塗装ロボットの稼働域内において塗装ガンのヨー角度とピッチ角度の自由度が広くなるロール角度を選択する。
【0084】
例えば、塗装ロボットのTCPの3次元位置に対応して、塗装ロボットの稼働域内において塗装ガンのヨー角度とピッチ角度の自由度が最も広くなるロール角度を特定し、予めテーブル化しておく。被塗物の端部や被塗物を支持する治具の端部に対応するTCPの3次元位置ごとに、ヨー角度とピッチ角度の自由度が最も広くなるロール角度を設定することができる。ロール角度の設定の際には、任意であるが、塗装ロボットのマニュピレータ内に格納されたケーブル、チューブなどのねじれや屈曲の可能性を考慮することが好ましい。
【0085】
教示点生成装置50は、例えば、上述した
図10のフローチャートにおいて、ステップS311で離散化条件を設定する際に、ねじれ角度の補正処理、すなわちロール角度の選択も行うように構成することができる。
【0086】
動作プログラム生成装置60は、教示点生成装置50によって生成された教示点とともに、塗装ロボットのTCPの3次元位置に対応したロール角度の情報に基づいて、塗装ロボットの動作プログラムを生成する。
【0087】
これにより、教示点生成装置50によって間引き処理を行って生成された教示点の位置と角度を維持したまま、塗装ロボットのマニュピレータ稼働域を拡大しながら滑らかな移動動作を実現することができる。さらに、塗装ロボットのマニュピレータ内に格納されたケーブル、チューブなどのねじれや屈曲を考慮してロール角度を設定することにより、ねじれや屈曲によるチューブ等の閉塞のリスクを回避することが可能となる。
【0088】
-変形例2-
上述した実施の形態においては、仮想空間上で塗装シミュレーションを行い、シミュレーションによって得られた塗装動作のログデータに対して間引き処理を行った。しかしこれには限定されず、現実空間におけるユーザの実際の塗装動作のログデータを取得し、取得したログデータに対して上述した離散化計算を行って教示点を生成するように構成してもよい。
【0089】
例えば、塗装ロボットを動作させるための教示点を生成する教示点生成装置50が、被塗物に対する実際の塗装を行う塗装装置の位置のログデータを取得するステップと、取得された位置のログデータに対してRDPアルゴリズムを用いた離散化計算を行い、離散化計算後のログデータに対応する教示点を生成するステップとを備えるように構成してもよい。この場合、塗装装置としては、上記実施の形態で説明した疑似塗装ツール30と同様の構成を有し、実際に塗料を充填した塗装ガンを用いることができる。これにより、上述した実施の形態と同様に、ユーザによる小刻みな揺れや不要な動作による座標データを削除しながら、ユーザの動作軌跡を再現することができる。なお、位置のログデータに加えて塗装装置の姿勢(角度)のログデータを取得し、さらに姿勢のログデータに対して離散化計算を行って教示点を生成するように構成してもよい。
【0090】
また、塗装ロボットを動作させるための教示点を生成する教示点生成装置50が、被塗物に対する実際の塗装を行う塗装装置の位置のログデータと移動速度に関するログデータを取得するステップと、移動速度に応じて動的に設定された閾値αを用いて、取得された位置のログデータに対する離散化計算を行い、離散化計算後のログデータに対応する教示点を生成するステップとを含むように構成してもよい。これにより、上述した実施の形態と同様に、塗装膜厚の再現性を向上させることができる。また、塗装ガンの吐出量を一定(固定値)とすることができるので、塗装ロボットの制御が一層、容易になる。なお、位置のログデータに加えて塗装装置の姿勢(角度)のログデータを取得し、さらに姿勢のログデータに対して離散化計算を行って教示点を生成するように構成してもよい。
【0091】
-他の変形例-
(1)上述した実施の形態においては、塗装動作のログデータが疑似塗装ツール30の位置データと角度データを含む座標データを含んでいた。しかしこれには限定されず、塗装動作のログデータは、疑似塗装ツール30の座標データとして少なくとも疑似塗装ツール30位置データを含み、任意選択的に疑似塗装ツール30の角度データを含むように構成してもよい。
【0092】
(2)上述した実施の形態においては、疑似塗装ツール30の座標データ(X,Y,Z,Rx,Ry,Rz)に対する間引き処理として、RDPアルゴリズムを用いた離散化計算を行うとともに、疑似塗装ツール30の移動速度に応じて動的に設定された閾値αを用いた離散化計算を行い、必要と判断した座標データを教示点として採用した。しかしこれには限定されず、RDPアルゴリズムを用いた離散化計算と、疑似塗装ツール30の移動速度に応じて動的に設定された閾値αを用いた離散化計算のいずれか一方のみを行うように構成してもよい。
【0093】
(3)上述した実施の形態においては、疑似塗装ツール30の座標データに対する間引き処理として、RDPアルゴリズムを用いた離散化計算を行った。本実施の形態では動作軌跡の再現性が高く、かつ不要な座標データをできる限り除外できる離散化モデルとしてRDPアルゴリズムを利用したが、RDPアルゴリズム以外の離散化計算モデルを用いることも可能である。
【0094】
(4)上述した実施の形態においては、基準点Piの移動速度viと対象点Pjの移動速度vjの速度差の絶対値Δvjを用いて閾値αを設定したが、閾値αの設定方法は、これには限定されない。例えば、移動速度の加速度を算出し、加速度に基づいて閾値αを設定するようにしてもよい。また、閾値αを設定するための係数βの値も、上述したものには限定されない。
【0095】
(5)上述した実施の形態においては、動作軌跡の再現性を膜厚誤差の標準偏差σを用いて判断した。しかしこれには限定されず、別のパラメータを用いて再現性を判断するようにしてもよい。また、好ましい膜厚誤差の標準偏差σとして、約20%以下、より好ましくは約15%以下としたが、これには限定されず、所望の膜厚を達成するための別の値を採用することも可能である。
【0096】
(6)上述した実施の形態においては、仮想空間としてVR空間を例として説明した。しかしこれには限定されず、仮想空間としてAR空間またはMR空間を利用し、AR空間またはMR空間において塗装シミュレーションを行うように構成してもよい。この場合、例えば現実空間の画像を撮像するカメラをHMD20に取り付け、現実空間の画像と仮想被塗物の3次元画像とを合成画像として生成してHMD20に表示させることができる。
【符号の説明】
【0097】
1 塗装ロボットの動作プログラム生成システム
10 塗装シミュレーション装置
11 情報格納部
12 検知制御部
13 シミュレーション計算部
14 画像生成部
15 シミュレーション制御装置
20 ヘッドマウントディスプレイ
30 疑似塗装ツール
40 動作検知装置
50 教示点生成装置
60 動作プログラム生成装置