(57)【要約】【課題】  複数ロボットのそれぞれの間における互いの干渉を迅速且つ確実に防止する干渉防止方法、装置、この装置を備えるロボットシステムを提供する。【解決手段】  少なくとも複数ロボットの対象物に対する作業条件、対象物の形状情報並びに複数ロボットの形状情報および配置情報を設定し、作業条件および対象物の形状情報に基づいて、各ロボットの時系列軌跡データをそれぞれ生成し、各ロボットの時系列軌跡データ並びに各ロボットの形状情報および配置情報に基づいて、各ロボット毎に自ロボットに対する他のロボットの動作開始遅れの最大許容時間差を算出し、各ロボットが動作を開始したことを示す動作開始情報を検出し、動作開始情報に基づいて各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定し、その判定結果に基づいて各ロボットに対して動作の停止命令を与える。【選択図】        図３
2006192554.tif 000002
【特許請求の範囲】
【請求項１】
対象物に対して同時にまたは所定時間差で作業開始する複数ロボットの干渉を防止する干渉防止方法であって、
少なくとも複数ロボットの対象物に対する作業条件、対象物の形状情報並びに複数ロボットの形状情報および配置情報を設定する設定工程と、
当該作業条件および対象物の形状情報に基づいて、各ロボットの可動部位の時系列軌跡データを生成する生成工程と、
当該各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット毎に、自ロボットと他のロボットとの間の当該他のロボットの動作開始遅れによる動作開始から動作完了までの干渉を防止しうる、自ロボットに対する他のロボットの動作開始遅れの最大許容時間差をそれぞれ算出する最大許容時間差算出工程と、
各ロボットが動作を開始したことを示す動作開始情報を各ロボット毎に検出する検出工程と、
当該動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定する判定工程と、
少なくとも１組のロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始していないと判定された場合に、各ロボットに対して動作の停止命令を与える命令工程とを有する、干渉防止方法。
【請求項２】
前記最大許容時間差算出工程が、
前記各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット間で、自ロボットが始点から、他のロボットが始点に位置しても当該他のロボットと干渉しない第一の非干渉位置まで移動するために要する第一の時間と、前記他のロボットが始点から、前記自ロボットが終点に位置しても当該自ロボットと干渉しない第二の非干渉位置まで移動するために要する第二の時間を、自ロボットが始点から終点に至るまでの所要時間から差し引いた第三の時間とをそれぞれ算出する時間算出工程と、
各ロボット間で、対応する前記第一の時間と第三の時間とを比較してこのうち小さい方を前記最大許容時間差としてそれぞれ選択する選択工程とを有する、請求項１記載の干渉防止方法。
【請求項３】
前記設定工程は、各ロボット間の干渉を防止するための干渉余裕距離を各ロボット毎に設定する工程をさらに有しており、
前記時間算出工程が、
各ロボット間で、前記自ロボットが軌跡に沿って前記第一の非干渉位置から始点方向に当該自ロボットに対応する前記干渉余裕距離離隔した第一の余裕位置を算出し、当該自ロボットが始点から当該第一の余裕位置まで移動するのに要する時間を前記第一の時間としてそれぞれ算出するとともに、前記他のロボットが軌跡に沿って前記第二の非干渉位置から始点方向に前記自ロボットに対応する前記干渉余裕距離離隔した第二の余裕位置を算出し、自ロボットが始点から前記第一の余裕位置に至るまでの所要時間から、他のロボットが始点から当該第二の余裕位置まで移動するのに要する時間を差し引いた時間を前記第三の時間としてそれぞれ算出する工程をさらに有する、請求項２記載の干渉防止方法。
【請求項４】
前記ロボットが溶接ロボットであり、前記対象物が被溶接物である、請求項１ないし３のいずれかに記載の干渉防止方法。
【請求項５】
対象物に対して同時にまたは所定時間差で作業開始する複数ロボットと、当該複数ロボットのそれぞれの動作を制御するロボットコントローラとを備えるロボットシステムに適用される、複数ロボットの干渉を防止する干渉防止装置であって、
少なくとも複数ロボットの対象物に対する作業条件、対象物の形状情報並びに複数ロボットの形状情報および配置情報を設定する設定手段と、
当該作業条件および対象物の形状情報に基づいて、各ロボットの可動部位の時系列軌跡データを生成する生成手段と、
当該各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット毎に、自ロボットと他のロボットとの間の当該他のロボットの動作開始遅れによる動作開始から動作完了までの干渉を防止しうる、自ロボットに対する他のロボットの動作開始遅れの最大許容時間差をそれぞれ算出する最大許容時間差算出手段と、
各ロボットが動作を開始したことを示す動作開始情報を各ロボット毎に検出する検出手段と、
当該動作開始情報および前記最大許容時間差を受け付けて、前記動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定する判定手段と、
少なくとも１組のロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始していないと判定された場合に、それぞれのロボットコントローラを通じて各ロボットに対して動作の停止命令を与える命令手段とを備える、干渉防止装置。
【請求項６】
前記ロボットコントローラが、前記設定手段に代えて複数ロボットの対象物に対する作業条件を設定する手段、および／または、前記生成手段に代えて当該作業条件に基づいて各ロボットの可動部位の時系列軌跡データを生成する手段を備えるとともに、当該干渉防止装置と通信可能に接続されてなる、請求項５記載の干渉防止装置。
【請求項７】
前記最大許容時間差算出手段が、
前記各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット間で、自ロボットが始点から、他のロボットが始点に位置しても当該他のロボットと干渉しない第一の非干渉位置まで移動するために要する第一の時間と、前記他のロボットが始点から、前記自ロボットが終点に位置しても当該自ロボットと干渉しない第二の非干渉位置まで移動するために要する第二の時間を、自ロボットが始点から終点に至るまでの所要時間から差し引いた第三の時間とをそれぞれ算出する時間算出手段と、
各ロボット間で、対応する前記第一の時間と第二の時間とを比較してこのうち小さい方を前記最大許容時間差としてそれぞれ選択する選択手段とを備える、請求項５記載の干渉防止装置。
【請求項８】
前記設定手段は、各ロボット間の干渉を防止するための干渉余裕距離を各ロボット毎に設定すべくなしてあり、
前記時間算出手段は、各ロボット間で、前記自ロボットが軌跡に沿って前記第一の非干渉位置から始点方向に当該自ロボットに対応する前記干渉余裕距離離隔した第一の余裕位置を算出し、当該自ロボットが始点から当該第一の余裕位置まで移動するのに要する時間を前記第一の時間としてそれぞれ算出するとともに、前記他のロボットが軌跡に沿って前記第二の非干渉位置から始点方向に前記自ロボットに対応する前記干渉余裕距離離隔した第二の余裕位置を算出し、自ロボットが始点から前記第一の余裕位置に至るまでの所要時間から、他のロボットが始点から当該第二の余裕位置まで移動するのに要する時間を差し引いた時間を前記第三の時間としてそれぞれ算出するように構成されてなる、請求項７記載の干渉防止装置。
【請求項９】
前記各ロボットは、
対象物に対して作業するツールと、
当該ツールを先端部に取り付けて所定の位置に移動させるための可動アームと、
当該可動アームを支持する支持装置とを備えており、
前記可動アームは、直列配置された一または複数のアームから構成され、それぞれのアームの先端部に駆動装置を備え、それぞれのアームの基端部が当該各アームの基端部側のアームの駆動装置および／または支持装置にそれぞれ枢支されるように構成されており、
前記各ロボットの一または複数の所定可動部位の時系列軌跡データが、前記各駆動装置の時系列角度データである、請求項５ないし８のいずれかに記載の干渉防止装置。
【請求項１０】
前記ロボットが溶接ロボットであり、前記対象物が被溶接物である、請求項６ないし９のいずれかに記載の干渉防止装置。
【請求項１１】
対象物に対して同時にまたは所定時間差で作業開始する複数ロボットと、
当該複数ロボットのそれぞれの動作を制御するロボットコントローラと、
前記請求項５ないし１０のいずれかに記載の干渉防止装置とを備える、ロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同時にまたは所定時間差で作業開始する複数ロボットが作業中に互いに干渉することを防止する方法およびその方法を実施する装置並びに当該装置を備えるロボットシステムに関し、特にアーク溶接などに用いられるロボットの干渉防止方法およびその方法を実施する装置並びに当該装置を備えるロボットシステムに関する。
【背景技術】
【０００２】
従来より、複数ロボットの干渉を防止するため種々の方法が提案されている。
【０００３】
例えば、一の方法では、複数ロボットのマニピュレータの干渉領域を予め設定し、当該複数ロボットのマニピュレータのうちの１つのみが当該干渉領域内で作業し、この作業が完了するまで他のロボットのマニピュレータは当該干渉領域の外側の所定位置で待機する。すなわち、２つ以上のマニピュレータが同時に上記干渉領域内で作業しないように各マニピュレータを移動させるようになっている。しかしながらアーク溶接などの場合、ほぼ同時にまたは所定時間差内に作業を行わないと歪みなどが発生し製品品質に問題が発生する場合があることから、上記方法を用いることはできない。
【０００４】
また別の方法では、オフラインティーチングソフトなどを用いて事前に複数ロボットの動作シミュレーションなどを行い、複数ロボットの干渉チェックを行っている（例えば特許文献１参照）。その結果導き出された複数ロボットが互いに干渉しない位置情報に従って、各ロボットを動作させる。しかしながら上記方法では、アーク溶接などの場合、アークスタートのタイミングがずれたり、また溶接のねらい角などは実際に溶接作業を行わないと決められないため、ロボットの実作業時の干渉を完全に回避することはできない。そこで、この方法では、時々刻々の各ロボットの位置情報を取得し各ロボット間の干渉をチェックして各ロボット間の干渉を防止する必要がある。そのため干渉防止処理に時間が掛かり、しかもこの干渉防止処理を実行する装置への負荷が大きくなる。
【特許文献１】特開２００３−２００３６８号公報  （第１１頁、第１図、第２図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記のような事情に鑑みてなされたものであり、同時にまたは所定時間差で作業開始する複数ロボットのそれぞれの間における互いの干渉を迅速に且つ確実に防止することができる干渉防止方法およびその方法を実施する装置並びに当該装置を備えるロボットシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る干渉防止方法は、対象物に対して同時にまたは所定時間差で作業開始する複数ロボットの干渉を防止する干渉防止方法であって、少なくとも複数ロボットの対象物に対する作業条件、対象物の形状情報並びに複数ロボットの形状情報および配置情報を設定する設定工程と、当該作業条件および対象物の形状情報に基づいて、各ロボットの可動部位の時系列軌跡データを生成する生成工程と、当該各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット毎に、自ロボットと他のロボットとの間の当該他のロボットの動作開始遅れによる動作開始から動作完了までの干渉を防止しうる、自ロボットに対する他のロボットの動作開始遅れの最大許容時間差をそれぞれ算出する最大許容時間差算出工程と、各ロボットが動作を開始したことを示す動作開始情報を各ロボット毎に検出する検出工程と、当該動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定する判定工程と、少なくとも１組のロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始していないと判定された場合に、各ロボットに対して動作の停止命令を与える命令工程とを有する。
【０００７】
この方法を実施するための本発明に係る干渉防止装置は、対象物に対して同時にまたは所定時間差で作業開始する複数ロボットと、当該複数ロボットのそれぞれの動作を制御するロボットコントローラとを備えるロボットシステムに適用される、複数ロボットの干渉を防止する干渉防止装置であって、少なくとも複数ロボットの対象物に対する作業条件、対象物の形状情報並びに複数ロボットの形状情報および配置情報を設定する設定手段と、当該作業条件および対象物の形状情報に基づいて、各ロボットの可動部位の時系列軌跡データを生成する生成手段と、当該各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット毎に、自ロボットと他のロボットとの間の当該他のロボットの動作開始遅れによる動作開始から動作完了までの干渉を防止しうる、自ロボットに対する他のロボットの動作開始遅れの最大許容時間差をそれぞれ算出する最大許容時間差算出手段と、各ロボットが動作を開始したことを示す動作開始情報を各ロボット毎に検出する検出手段と、当該動作開始情報および前記最大許容時間差を受け付けて、前記動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定する判定手段と、少なくとも１組のロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始していないと判定された場合に、それぞれのロボットコントローラを通じて各ロボットに対して動作の停止命令を与える命令手段とを備える。
【０００８】
この構成では、複数ロボットのそれぞれの動作開始情報を用いて、各ロボット間で自ロボットに対して他のロボットが最大許容時間差内に動作を開始したか否かを判定して、少なくとも１組のロボット間で自ロボットに対して他のロボットが最大許容時間差内に動作しない場合に各ロボットを停止させて、各ロボット間の干渉を防いでいる。このように本発明では各ロボットの動作開始情報を監視することにより各ロボット間の干渉を防止しているので、時々刻々の各ロボットの位置情報を算出してこの位置情報に基づいて各ロボット間の干渉の有無を確認し各ロボット間の干渉を防止する必要がある従来技術に比べて、干渉防止処理に要する時間を短縮することが可能となる。その結果、干渉防止処理の遅れによる各ロボット間の互いの干渉を防止することが可能となる。また、ロボットコントローラに対する干渉防止処理の負荷を軽減することも可能となる。なお、作業条件とは、例えば溶接作業の場合、溶接トーチのねらい角度、溶接線の位置、溶接トーチが溶接時にたどる溶接軌跡などである。
【０００９】
また前記ロボットコントローラが、前記設定手段に代えて複数ロボットの対象物に対する作業条件を設定する手段、および／または、前記生成手段に代えて当該作業条件に基づいて各ロボットの可動部位の時系列軌跡データを生成する手段を備えるとともに、当該干渉防止装置と通信可能に接続されてもよい。
【００１０】
上記の両手段は、通常、ロボットコントローラに設けられているので、これらの機能を上述した干渉防止装置の機能として流用することが可能である。これにより、ロボットの作業条件などの変更を迅速に行うことが可能となる。すなわちロボットの作業条件などの変更を、ロボットコントローラおよび干渉防止装置の両方に対して行う必要がなく、ロボットコントローラに対してのみ行えばよい。また両手段のうちいずれか、または全部を、干渉防止装置に備える場合、ロボットコントローラと干渉防止装置との間の通信を簡素化することが可能となる。
【００１１】
前記最大許容時間差算出工程が、前記各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット間で、自ロボットが始点から、他のロボットが始点に位置しても当該他のロボットと干渉しない第一の非干渉位置まで移動するために要する第一の時間と、前記他のロボットが始点から、前記自ロボットが終点に位置しても当該自ロボットと干渉しない第二の非干渉位置まで移動するために要する第二の時間を、自ロボットが始点から終点に至るまでの所要時間から差し引いた第三の時間とをそれぞれ算出する時間算出工程と、各ロボット間で、対応する前記第一の時間と第三の時間とを比較してこのうち小さい方を前記最大許容時間差としてそれぞれ選択する選択工程とを有してもよい。
【００１２】
この方法を実施するための本発明に係る干渉防止装置において、前記最大許容時間差算出手段が、前記各ロボットの時系列軌跡データ並びに前記各ロボットの形状情報および配置情報に基づいて、各ロボット間で、自ロボットが始点から、他のロボットが始点に位置しても当該他のロボットと干渉しない第一の非干渉位置まで移動するために要する第一の時間と、前記他のロボットが始点から、前記自ロボットが終点に位置しても当該自ロボットと干渉しない第二の非干渉位置まで移動するために要する第二の時間を、自ロボットが始点から終点に至るまでの所要時間から差し引いた第三の時間とをそれぞれ算出する時間算出手段と、各ロボット間で、対応する前記第一の時間と第二の時間とを比較してこのうち小さい方を前記最大許容時間差としてそれぞれ選択する選択手段とを備えてもよい。
【００１３】
これにより、各ロボット間で、自ロボットが始点から終点に移動する間に他のロボットと干渉することを防止することが可能となる。その結果、各ロボット間の互いの干渉を確実に防止することが可能となる。
【００１４】
前記設定工程は、各ロボット間の干渉を防止するための干渉余裕距離を各ロボット毎に設定する工程をさらに有しており、前記時間算出工程が、各ロボット間で、前記自ロボットが軌跡に沿って前記第一の非干渉位置から始点方向に当該自ロボットに対応する前記干渉余裕距離離隔した第一の余裕位置を算出し、当該自ロボットが始点から当該第一の余裕位置まで移動するのに要する時間を前記第一の時間としてそれぞれ算出するとともに、前記他のロボットが軌跡に沿って前記第二の非干渉位置から始点方向に前記自ロボットに対応する前記干渉余裕距離離隔した第二の余裕位置を算出し、自ロボットが始点から前記第一の余裕位置に至るまでの所要時間から、他のロボットが始点から当該第二の余裕位置まで移動するのに要する時間を差し引いた時間を前記第三の時間としてそれぞれ算出する工程をさらに有してもよい。
【００１５】
この方法を実施するための本発明に係る干渉防止装置において、前記設定手段は、各ロボット間の干渉を防止するための干渉余裕距離を各ロボット毎に設定すべくなしてあり、前記時間算出手段は、各ロボット間で、前記自ロボットが軌跡に沿って前記第一の非干渉位置から始点方向に当該自ロボットに対応する前記干渉余裕距離離隔した第一の余裕位置を算出し、当該自ロボットが始点から当該第一の余裕位置まで移動するのに要する時間を前記第一の時間としてそれぞれ算出するとともに、前記他のロボットが軌跡に沿って前記第二の非干渉位置から始点方向に前記自ロボットに対応する前記干渉余裕距離離隔した第二の余裕位置を算出し、自ロボットが始点から前記第一の余裕位置に至るまでの所要時間から、他のロボットが始点から当該第二の余裕位置まで移動するのに要する時間を差し引いた時間を前記第三の時間としてそれぞれ算出するように構成されてもよい。なお、前記干渉余裕距離には、各ロボットの停止時に生じうる位置ずれだけでなく、動作時（増速時、減速時、等速時）に生じうる位置ずれ、設計上の余裕などを含む。
【００１６】
例えば各ロボットが動作中に停止命令を受けたとき、各ロボットに作用する慣性力などによって各ロボットの停止位置がずれることがある。これにより各ロボットが互いに干渉することがある。そこで本発明では、上述のようなロボットの位置ずれなどを考慮した最大許容時間差を用いて各ロボット間の互いの干渉を防止している。これにより、上記各ロボットの位置ずれなどによる各ロボット間の互いの干渉を防止することが可能となる。
【００１７】
前記各ロボットは、対象物に対して作業するツールと、当該ツールを先端部に取り付けて所定の位置に移動させるための可動アームと、当該可動アームを支持する支持装置とを備えており、前記可動アームは、直列配置された一または複数のアームから構成され、それぞれのアームの先端部に駆動装置を備え、それぞれのアームの基端部が当該各アームの基端部側のアームの駆動装置および／または支持装置にそれぞれ枢支されるように構成されており、前記各ロボットの一または複数の所定可動部位の時系列軌跡データが、前記各駆動装置の時系列角度データであることが望ましい。
【００１８】
このような構成においては、各駆動装置の時系列角度データが各ロボットの時系列軌跡を正確に表現する。その結果、各ロボット間の互いの干渉を確実に防止することができる。もちろん各ロボットの時系列軌跡データを正確に表現するもので有れば他のデータであっても構わない。例えば各ロボットの一または複数の所定可動部位の位置データなどが考えられる。
【００１９】
前記ロボットが溶接ロボットであり、前記対象物が被溶接物であってもよい。これにより、歪みを防止する観点から複数の溶接ロボットを被溶接物に対して同時にまたは所定時間差で溶接開始する場合であっても、上記のとおり各溶接ロボット間の干渉を容易に防止することが可能となる。
【００２０】
また本発明に係るロボットシステムは、対象物に対して同時にまたは所定時間差で作業開始する複数ロボットと、当該複数ロボットのそれぞれの動作を制御するロボットコントローラと、上述した本発明に係る干渉防止装置とを備える。これにより、各ロボット間の互いの干渉を迅速且つ確実に防止することが可能となる。
【発明の効果】
【００２１】
本発明によれば、同時にまたは所定時間差で作業開始する複数ロボットのそれぞれのロボット間の互いの干渉を迅速に且つ確実に防止することができる。またこの発明を用いれば、狭い場所においても複数のロボットを干渉させることなく動作させることができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を図面に基づいて説明する。
【００２３】
図１は、本発明の実施の形態に係る干渉防止装置が適用される溶接ロボットシステムの構成を示すブロック図である。なお、溶接ロボットシステムは一例である。従って本干渉防止装置を、その他塗装ロボットシステム、組み立てロボットシステムなどに適用してもよい。
【００２４】
溶接ロボットシステム１は、第１〜第４ロボット１０、１１、１２、１３と、第１〜第４ロボット１０、１１、１２、１３の動作をそれぞれ制御する第１〜第４ロボットコントローラ３０、３１、３２、３３と、第１〜第４ロボット１０、１１、１２、１３のそれぞれの間における干渉を防止するための干渉防止装置５０とを備える。なお、ここでは、ロボットの台数を４台にしているが、これに限定するものではなく、２台以上であれば何台であっても構わない。もちろん一台のロボットに複数の後述する可動アームを備える場合であってもよい。
【００２５】
前記第１ロボット１０は、被溶接物１４（例えば、自動車用ホイール）を溶接するための溶接トーチ１５と、この溶接トーチ１５を被溶接物１４に対して溶接可能な位置まで移動させるための可動アーム１６と、この可動アーム１６を支持する支持装置１７と、第１ロボット１０が動作を開始したことを検出するセンサＳＮとを備える。
【００２６】
この支持装置１７は、基端部が基礎（図示せず）上に固定されてもよいし、また例えば門構形移動装置（図示せず）に天吊りされてもよい。支持装置１７が基礎上に固定配置される場合、一般的に被溶接物１４を載置するための載置台１４ａが第１ロボット１０の作業エリアまで移動されるようになっている。支持装置１７が門構形移動装置に天吊りされる場合、支持装置１７は門構形移動装置とともに走行し、あるいは門構形移動装置によって横行、昇降および旋回されるようになっており、これによって支持装置１７が被溶接物１４に対して溶接可能な位置まで移動されるようになっている。またこの場合、被溶接物１４は、固定の載置台または移動可能な載置台のいずれに載置されてもよい。
【００２７】
前記可動アーム１６は軸方向に細長い第１アーム１８と第２アーム１９とを備える。なお、ここでは、可動アーム１６が２つのアームからなるが、これに限定されるものでなく、１つまたは３つ以上であっても構わない。
【００２８】
前記第１アーム１８は、基端部が例えば前記支持装置１７の先端部に枢支されている。具体的には、この支持装置１７の先端部に第１アーム１８を回動させるための第１駆動装置２０ａ（例えば、ステップモータ、サーボモータなど）が設けられている。この第１駆動装置２０ａの駆動軸（図示せず）に第１アーム１８の基端部が取り付けられている。これにより、第１アーム１８を第１駆動装置２０ａの駆動軸を中心に回動させることが可能となる。
【００２９】
前記第２アーム１９は、基端部が第１アーム１８の先端部に枢支されている。具体的には、この第１アーム１８の先端部に第２アーム１９を回動させるための第２駆動装置２０ｂ（例えば、ステップモータ、サーボモータなど）が設けられている。この第２駆動装置２０ｂの駆動軸（図示せず）に第２アーム１９の基端部が取り付けられている。これにより、第２アーム１９を第２駆動装置２０ｂの駆動軸を中心に回動させることが可能となる。
【００３０】
前記溶接トーチ１５は例えば棒状に形成されており、先端部から被溶接物１４に対して溶接ワイヤが供給されるようになっている。溶接トーチ１５の胴部分は、前記第２アーム１９の先端部に枢支されている。具体的には、第２アームの先端部に溶接トーチ１５を回動させるための第３駆動装置２０ｃ（例えば、ステップモータ、サーボモータなど）が設けられている。この第３駆動装置２０ｃの駆動軸（図示せず）に溶接トーチ１５が取り付けられている。これにより、溶接トーチ１５を第３駆動装置２０ｃの駆動軸を中心に回動させることが可能となる。
【００３１】
以上により、溶接トーチ１５を、被溶接物１４に対して所望の溶接姿勢（ねらい角度など）で予め設定された溶接軌跡（溶接トーチがたどる軌跡）に沿って移動させることが可能となる。なお、第２〜第４ロボット１１、１２、１３も、上述した第１ロボット１０と同様の構成を有する。
【００３２】
前記第１〜第４ロボットコントローラ３０、３１、３２、３３は、上記のとおり、第１〜第４ロボット１０、１１、１２、１３の動作を制御すべく、これらの第１〜第４ロボット１０、１１、１２、１３と通信可能にそれぞれ接続されている。以下、図２を用いて詳細に述べる。図２は図１に示した溶接ロボットシステムの詳細な構成を示すブロック図である。
【００３３】
図２に示すように、第１ロボットコントローラ３０は、第１ＣＰＵ３４、第１入出力インタフェース３５（第１Ｉ／Ｏインタフェース）および第１記憶部３６を備えており、第１ロボット１０の被溶接物１４に対する溶接条件、被溶接物１４の形状情報、並びに第１ロボット１０の形状情報および配置情報などを入力するための第１入力装置３７と通信可能に接続されている。また第１ロボットコントローラ３０は第１ロボット１０と通信可能に接続されている。さらに第１ロボットコントローラ３０は後述のシーケンサ５２と通信可能に接続されている。
【００３４】
前記第１ＣＰＵ３４は、第１入力装置３７から第１Ｉ／Ｏインタフェース３５を介して受け付けた溶接条件および被溶接物１４の形状情報に基づいて、第１ロボット１０の第１アーム１８、第２アーム１９および溶接トーチ１５の時系列軌跡データを生成し、これらの時系列軌跡データを第１記憶部３６に記憶するように構成されている。第１ＣＰＵ３４は、これらの時系列軌跡データを、第１Ｉ／Ｏインタフェース３５を介して第１ロボット１０の第１〜第３駆動装置２０ａ、２０ｂ、２０ｃにそれぞれ出力して、第１ロボット１０の動作を制御するように構成されている。第１ＣＰＵ３４は、後述のシーケンサ５２から受け取った停止命令に基づいて、第１ロボット１０の第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの動作を停止するための処理を実行するように構成されている。
【００３５】
ここで上述した溶接条件は、溶接トーチ１５のねらい角度、溶接線の位置、溶接トーチ１５が溶接時にたどる溶接軌跡などである。また被溶接物１４の形状情報、並びに第１ロボット１０の形状情報および配置情報として、図面から読み取ったデータや汎用のＣＡＤフォーマット（例えば、ＤＸＦ、ＩＧＥＳ、ＳＴＥＰ、ＶＲＭＬ）のデータなどが用いられる。後者の場合、これらのデータをＣＡＤ装置（図示せず）を用いて予め生成し、ＣＡＤ装置から通信ネットワーク（図示せず）などを通じて第１ロボットコントローラ３０に直接入力してもよい。
【００３６】
また上述した時系列軌跡データとして、たとえば上述した第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの駆動軸の時系列回転角度データ（以下、時系列関節角度データという）を用いることができる。この時系列関節角度データは、第１ロボット１０の第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの動作開始（始点）から動作終了（終点）までの時間を第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの動作を制御する所定の制御時間間隔で区切って、それぞれの区間を後述の制御周期単位tick（例えば、tick＝０、１、２…とし、tick＝０が始点に対応する。）としこれに関連付けて生成されている。
【００３７】
なお上記第２〜第４ロボットコントローラ３１、３２、３３は、第１ロボットコントローラ３０と同様の構成を有する。従って、詳細な説明は省略する。
【００３８】
次に前記干渉防止装置５０の構成について説明する。図１に示すように、この干渉防止装置５０は、各ロボット１０、１１、１２、１３間の干渉をシミュレートして自ロボットに対する他のロボットの動作開始遅れの最大許容時間差をそれぞれ算出するためのシミュレーション用コンピュータ５１と、各ロボット１０、１１、１２、１３が動作開始したか否かを監視して少なくとも１組のロボット間で自ロボットに対して他のロボットが最大許容時間差内に動作を開始していないと判定された場合に全てのロボットの動作を停止命令を出力するシーケンサ５２とを備える。
【００３９】
シミュレーション用コンピュータ５１は、上記第１〜第４ロボットコントローラ３０、３１、３２、３３とローカルエリアネットワーク（ＬＡＮ）などの通信ネットワークを介して接続されている。これによりシュミレーション用コンピュータ５１は、上記第１〜第４ロボットコントローラ３０、３１、３２、３３から、上述した第１〜第４ロボット１０、１１、１２、１３のそれぞれの被溶接物１４に対する溶接条件、被溶接物１４の形状情報、並びに第１〜第４ロボット１０、１１、１２、１３の形状情報および配置情報などを受け取ることが可能となる。もちろんこれらの情報を、後述の第５入力装置５６から直接入力しても構わない。この場合ＬＡＮなど通信ネットワークを省略することが可能となる。ただ、上述した情報のうち第１〜第４ロボット１０、１１、１２、１３のそれぞれの被溶接物１４に対する溶接条件および被溶接物１４の形状情報については、溶接の状態、被溶接物１４の形態などに応じて変更されうるので、これらの情報を一々図２に示す第１〜第４入力装置３７、３８、３９、４０、および、第５入力装置５６の両方から入力する手間を省くため、第１〜第４入力装置３７、３８、３９、４０から入力して上述のＬＡＮなどの通信ネットワークを介してシミュレーション用コンピュータ５１に転送することが好ましい。
【００４０】
図２に示すように、シミュレーション用コンピュータ５１は、第５ＣＰＵ５３、第５Ｉ／Ｏインタフェース５４および第５記憶部５５を備える。シミュレーション用コンピュータ５１は、上述した第１〜第４ロボット１０、１１、１２、１３のそれぞれの形状情報および配置情報などを入力するための第５入力装置５６と通信可能に接続されている。もちろんこれに限定することなく、上記第１〜第４ロボット１０、１１、１２、１３のそれぞれの被溶接物１４に対する溶接条件、被溶接物１４の形状情報を第５入力装置５６から入力しても構わない。この第５入力装置５６は、各ロボット間の干渉を防止するための干渉余裕距離が各ロボット毎に入力されるように構成されている。ここで、干渉余裕距離には、第１〜第４ロボット１０、１１、１２、１３のそれぞれの慣性力などによって停止時に生じうる位置ずれだけでなく、動作時（増速時、減速時、等速時）に生じうる位置ずれ、設計上の余裕などを含む。またシミュレーション用コンピュータ５１は、第１〜第４ロボット１０、１１、１２、１３のそれぞれの間の干渉の有無などのシミュレーション結果を表示するための表示装置５７と通信可能に接続されている。
【００４１】
前記第５ＣＰＵ５３は、上述した第１〜第４ロボット１０、１１、１２、１３の形状情報、配置情報、干渉余裕距離などを、第５Ｉ／Ｏインタフェース５４を介して受け取り第５記憶部５５に記憶するように構成されている。第５ＣＰＵ５３は、第５記憶部５５に記憶された上述の情報を用いて、第１〜第４ロボット１０、１１、１２、１３のそれぞれの間の干渉発生の有無をチェックして自ロボットに対する他のロボットの動作開始遅れによる最大許容時間差を算出するなどの演算処理を実行するように構成されている。その詳細は後述する。第５ＣＰＵ５３は、この算出された最大許容時間差をシーケンサ５２に第５Ｉ／Ｏインタフェース５４を介して出力するように構成されている。
【００４２】
一方シーケンサ５２は、第６ＣＰＵ５８、第６Ｉ／Ｏインタフェース５９および第６記憶部６０を備えており、例えば周知のＰＬＣ（プログラマブルコントローラ）からなる。このシーケンサ５２は、前記シミュレーション用コンピュータ５１と通信可能に接続されている。これによりシーケンサ５２は、シミュレーション用コンピュータ５１から最大許容時間差を第６Ｉ／Ｏインタフェース５９を通じて取得することが可能となる。またシーケンサ５２は、前記第１〜第４ロボット１０、１１、１２、１３のそれぞれのセンサＳＮと通信可能に接続されている。これによりシーケンサ５２は、それぞれのセンサＳＮから第１〜第４ロボット１０、１１、１２、１３のそれぞれが動作を開始した場合に発する動作開始情報（信号）を受け取ることが可能となる。この動作開始情報はデジタル信号などである。またシーケンサ５２は、第１〜第４ロボットコントローラ３０、３１、３２、３３とそれぞれ通信可能に接続されている。これによりシーケンサ５２は、前記最大許容時間差および動作開始情報に基づいて判断された第１〜第４ロボット１０、１１、１２、１３に対する停止命令を、第６Ｉ／Ｏインタフェース５９を通じて第１〜第４ロボットコントローラ３０、３１、３２、３３に出力して、第１〜第４ロボット１０、１１、１２、１３を停止させることが可能となる。
【００４３】
以上のように構成されるシミュレーション用コンピュータ５１およびシーケンサ５２の演算処理機能について、図３の機能ブロック図を用いて詳細に説明する。
【００４４】
図３に示すように、シミュレーション用コンピュータ５１は生成部７０と最大許容時間差算出部７１とを備える。この生成部７０は、第１〜第４ロボット１０、１１、１２、１３の被溶接物１４に対する溶接条件および対象物１４の形状情報に基づいて、当該各ロボット１０、１１、１２、１３毎の第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの時系列関節角度データをそれぞれ生成するように構成されている。最大許容時間差算出部７１は、前記時系列関節角度データ並びに前記各ロボット１０、１１、１２、１３の形状情報および配置情報に基づいて、各ロボット毎に前記最大許容時間差をそれぞれ算出するように構成されている。
【００４５】
この最大許容時間差算出部７１は、時間算出部７２と選択部７３とを備える。図４（ａ）、（ｂ）をそれぞれ参照して、第１ロボット１０および第２ロボット１１を一例として時間算出部７２の機能をさらに詳細に説明する。図４（ａ）は、第１ロボット１０が始点から、第２ロボット１１が始点に位置しても第１ロボット１０と干渉しない第一の非干渉位置まで移動するのに要する第一の時間Ｔ１を示している。図４（ｂ）は、第２ロボット１１が始点から、第１ロボット１０が終点に位置しても第２ロボット１１と干渉しない第二の非干渉位置まで移動するのに要する第二の時間Ｔ２を、第１ロボット１０が始点から終点に至るまでの所要時間から差し引いた第三の時間Ｔ３を示している。
【００４６】
時間算出部７２は、第１ロボット１０および第２ロボット１１のそれぞれの第１〜第３駆動装置２０ａ、２０ｂ、２０ｃの時系列関節角度データ、並びに第１ロボット１０および第２ロボット１１のそれぞれの形状情報および配置情報に基づいて、各ロボット１０、１１間の、上述した第一の時間Ｔ１、第二の時間Ｔ２および第三の時間Ｔ３をそれぞれ算出するように構成されている。
【００４７】
選択部７３は、各ロボット１０、１１間の対応する前記第一の時間Ｔ１と第三の時間Ｔ３とを比較してこのうち小さい方を前記最大許容時間差として選択するように構成されている。
【００４８】
また時間算出部７２は、各ロボット１０、１１間で、第１ロボット１０が軌跡に沿って前記第一の非干渉位置から始点方向に当該第１ロボット１０に対応する前記干渉余裕距離だけ離隔した第一の余裕位置を算出し、当該第１ロボット１０が始点から当該第一の余裕位置まで移動するのに要する時間を前記第一の時間Ｔ１としてそれぞれ算出するとともに、第２ロボット１１が軌跡に沿って前記第二の非干渉位置から当該第１ロボット１０に対応する前記干渉余裕距離だけ離隔した第二の余裕位置を算出し、第１ロボット１０が始点から前記第一の余裕位置に至るまでの所要時間から、第２ロボット１１が始点から当該第二の余裕位置まで移動するのに要する時間を差し引いた時間を前記第三の時間Ｔ３としてそれぞれ算出するように構成されることが望ましい。
【００４９】
これにより、第１ロボット１０に作用する慣性力などによって第１ロボット１０の停止位置がずれた場合であっても、第１ロボット１０が第２ロボット１１と干渉することを防止することが可能となる。
【００５０】
また時間算出部７２および選択部７３は、その他の第１〜第４ロボット１０、１１、１２、１３のそれぞれの間についても上記同様に第一の時間Ｔ１および第三の時間Ｔ３を算出して、両者のうち小さい方を最大許容時間差としてそれぞれ選択するように構成されている。
【００５１】
一方シーケンサ５２は、図３に示すように判定部７４と命令部７５とを備える。判定部７４は、第１〜第４ロボット１０、１１、１２、１３のそれぞれのセンサＳＮから出力される動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを判定するように構成されている。
【００５２】
命令部７５は、判定部７４において少なくとも１組のロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始していないと判定された場合に、第１〜第４ロボットコントローラ３０、３１、３２、３３に対して第１〜第４ロボット１０、１１、１２、１３の動作を停止するための停止命令を与えるように構成されている。この命令部７５から停止命令を受けた第１〜第４ロボットコントローラ３０、３１、３２、３３は、第１〜第４ロボット１０、１１、１２、１３のそれぞれの第１〜第３駆動装置２０ａ、２０ｂ、２０ｃに対して停止命令を出力する。これにより第１〜第４ロボット１０、１１、１２、１３の動作はすべて停止され、これにより各ロボット間の干渉を防止することができる。
【００５３】
以上のように構成される干渉防止装置５０の処理方法について、図５〜図１１の処理フロー図を用いて説明する。
【００５４】
図５は全体処理フロー図の一例を示している。作業開始指示（ステップＳ１００）のあと作業条件（溶接条件）などを読み込む（ステップＳ１０１）。つまり干渉防止装置５０が第１〜第４ロボットコントローラ３０、３１、３２、３３に記憶されている作業条件などを読み込む。その後作業条件などに基づいた第１〜第４ロボット１０、１１、１２、１３のそれぞれに対する時系列関節角度データを生成する（ステップＳ１０２）。その後この時系列関節角度データ並びに上述した第１〜第４ロボット１０、１１、１２、１３のそれぞれの形状情報および配置情報に基づいて、第１〜第４ロボット１０、１１、１２、１３の自ロボットに対する他のロボットの最大許容時間差データを生成する（ステップＳ１０３）。このステップＳ１０３の詳細は後述する。その後、１つの被溶接物１４に対する第１〜第４ロボット１０、１１、１２、１３の作業開始の命令を第１〜第４ロボットコントローラ３０、３１、３２、３３に対してそれぞれ出力する（ステップＳ１０４）。第１〜第４ロボット１０、１１、１２、１３の各動作開始情報に基づいて、各ロボット間で自ロボットに対して他のロボットが前記最大許容時間差内に動作を開始したか否かを監視する（ステップＳ１０５）。このステップＳ１０５の詳細は後述する。そして１つの被溶接物１４に対する第１〜第４ロボット１０、１１、１２、１３の作業が終了したことを示す終了情報を取得する（ステップＳ１０６）。その後、全作業完了か否かを判定する（ステップＳ１０７）。ここで、全作業完了とは、予め設定された全ての被溶接物１４の処理を完了した状態をいう。全作業完了であると判定された場合、干渉防止装置５０を停止する（ステップＳ１０８）。もちろんこの場合溶接ロボットシステム１全体も停止される。ステップＳ１０７において全作業完了でないと判定された場合、作業条件の変更指示が有るか否かを判定する（ステップＳ１０９）。作業条件の変更指示がないと判定された場合、ステップＳ１０４に戻り、次の被溶接物１４に対する第１〜第４ロボット１０、１１、１２、１３の作業開始の命令を出力する。作業条件の変更指示が有ると判定された場合、新たな作業条件を設定する（ステップＳ１１０）。その後、上記ステップＳ１０１に戻る。
【００５５】
図６は、図５中のステップＳ１０３の詳細処理フロー図の一例を示している。まず第１〜第４ロボット１０、１１、１２、１３の正常動作時の干渉をチェックする（ステップＳ２００）。ここで、正常動作時の干渉チェックとは、第１〜第４ロボット１０、１１、１２、１３が同時に作業開始した場合に干渉が発生するか否かをチェックすることである。その後第１〜第４ロボット１０、１１、１２、１３のそれぞれの間の干渉発生の有無を判定する（ステップＳ２０１）。干渉発生があると判定された場合、図２に示した前記表示装置５７に「○○ロボットと△△ロボットとの間で干渉がある」旨表示する（ステップＳ２０２）。この場合、第１〜第４ロボット１０、１１、１２、１３は運転開始不可とされる（ステップＳ２０３）。この場合、図示されていないが前記表示装置５７などを用いてユーザに対して作業条件の変更を促すことが望ましい。一方ステップＳ２０１において干渉発生がないと判定された場合、前記最大許容時間差を算出する（ステップＳ２０４）。詳細は後述する。その後、詳細検討モードが選択されたか否かを判定する（ステップＳ２０５）。詳細検討モードが選択された場合、第１〜第４ロボット１０、１１、１２、１３が特定の作業開始タイミングにおいて各ロボット間で干渉が生じるか否かを検出する（ステップＳ２０６）。その詳細は後述する。そしてその結果を出力する（ステップＳ２０７）。具体的には各ロボット間で干渉が生じると判定された場合、その旨を例えば表示装置５７に表示し、さらに図示されていないが前記表示装置５７などを用いてユーザに対して作業条件の変更を促すことが好ましい。また各ロボット間で干渉が生じないと判定された場合、または、詳細検討モードが選択されない場合、ステップＳ２０７に進み、ステップＳ２０４において算出された最大許容時間差をそのままシーケンサ５２に出力する。その後、図５に示したステップＳ１０４に進む。
【００５６】
図７は、図６中のステップＳ２００の詳細処理フロー図の一例を示している。なお、この処理（正常動作時の干渉チェック）は、第１〜第４ロボット１０、１１、１２、１３の動作を計算的に模擬して行うのであって、第１〜第４ロボット１０、１１、１２、１３を実際に動作させて行うものではない。
【００５７】
まず第１〜第４ロボット１０、１１、１２、１３の制御周期単位tick＝０に設定する（ステップＳ３００）。第１〜第４ロボット１０、１１、１２、１３をtick＝０に対応する位置（始点）にそれぞれ移動する（ステップＳ３０１）。ロボットの番号ｎ＝１に設定する（ステップＳ３０２）。次に第ｎロボットと第ｎ＋１〜第４ロボットのそれぞれとの間の距離を、第１〜第４ロボット１０、１１、１２、１３のtick＝０に対応する位置から求める（ステップＳ３０３）。前記距離のいずれかが余裕距離以下であるか否かを判定する（ステップＳ３０４）。ここで、余裕距離とは、例えば各ロボットが互いに干渉しない各ロボット間の距離（図面上得られる距離など）に上述した干渉余裕距離（各ロボットの慣性力などによる停止時の位置ずれなど）を加えた距離である。前記距離のいずれかが余裕距離以下であると判定された場合、所定のロボット間に干渉があると判定する（ステップＳ３０５）。前記距離のいずれかが余裕距離を超えると判定された場合、いずれのロボット間にも干渉がないと判定し、ｎ＝ｎ＋＋（＝１＋１）に設定する（ステップＳ３０６）。ここでｎ＋＋はインクリメント（１を加算する）を表す。そしてステップＳ３０２〜Ｓ３０６までの処理を実行する。この処理をｎ＝３になるまで実行する。より具体的には、ｎ＝１のとき第１ロボット１０と第２〜第４ロボット１１、１２、１３とのそれぞれの間の干渉をチェックし、ｎ＝２のとき第２ロボット１１と、第３、第４ロボット１２、１３とのそれぞれの間の干渉をチェックし、ｎ＝３のとき第３ロボット１２と第４ロボット１３との間の干渉をチェックする。これらの処理が完了した後、tick＝tick＋＋（＝tick＋１）に設定する（ステップＳ３０７）。ここでtick＋＋はインクリメント（１を加算する）を表す。その後ステップＳ３００に戻り、ステップＳ３００〜ステップＳ３０７の処理を実行する。そして第１〜第４ロボット１０、１１、１２、１３が始点から終点に至るまで、すなわち制御周期単位tick＝０〜終点に至るまで順次ステップＳ３００〜ステップＳ３０７の処理を繰り返し実行する。以上の処理を行う間に、いずれのロボット間にも干渉がないと判定された場合、最終的に各ロボットが始点から終点に至るまで各ロボット間に干渉がないと判定する（Ｓ３０８）。そして上述したステップＳ２０１、Ｓ２０４の順に処理が進む。また以上の処理を行う間に、所定のロボット間に干渉があると判定された場合、上述したステップＳ２０１、Ｓ２０２の順に処理が進む。
【００５８】
図８および図９は、図６中のステップＳ２０４の一部の詳細処理フロー図の一例を示している。図８は、前記第一の時間Ｔ１（図４（ａ）参照）を算出するための処理フロー図の一例を示している。図９は、前記第二の時間Ｔ２（図４（ｂ）参照）を算出するための処理フロー図の一例を示している。なお、この処理（最大許容時間差の算出）は、第１〜第４ロボット１０、１１、１２、１３の動作を計算的に模擬して行うのであって、第１〜第４ロボット１０、１１、１２、１３を実際に動作させて行うものではない。
【００５９】
図８に示すように、まずロボットの番号ｎ＝１に設定する（ステップＳ４００）。第ｎ＋１ロボットを始点（０）へ移動する（ステップＳ４０１）。第ｎロボットが始点に位置するときの時間ｐ０＝tick始点（＝０）に設定するとともに、第ｎロボットの終点に位置するときの時間ｐ１＝tick終点に設定する（ステップＳ４０２）。第ｎロボットを時間ｐ１に対応する位置へ移動する（ステップＳ４０３）。第ｎ、ｎ＋１ロボット間の距離が前記余裕距離以下であるか否かを判定する（ステップＳ４０４）。第ｎ、ｎ＋１ロボット間の距離が前記余裕距離以下であると判定された場合、１つ前のｐ１を示すprev p1＝ｐ１、ｐ１＝ｐ１−｜ｐ１−ｐ０｜／２とする（ステップＳ４０５）。すなわち第ｎロボットを後退させる。一方第ｎ、ｎ＋１ロボット間の距離が前記余裕距離を超える場合、prev p1＝ｐ１、ｐ１＝ｐ１＋｜ｐ１−ｐ０｜／２とする（ステップＳ４０６）。すなわち第ｎロボットを前進させる。時間ｐ１が第ｎロボットが終点に位置するときの時間を超えるか、若しくは｜prev p1−ｐ１｜が予め設定された収束範囲内であるか否かを判定する（ステップＳ４０７）。この条件を満足しないと判定された場合、ステップＳ４０３に戻り、当該条件を満足するまでステップＳ４０３〜Ｓ４０７を繰り返し実行する。前記条件を満足すると判定された場合、第ｎロボットが始点から、第ｎ＋１ロボットが始点に位置しても第ｎ＋１ロボットと干渉しない位置まで移動するのに要する第一の時間Ｔ１＝ｐ１とする（ステップＳ４０８）。次にｎ＝４であるか否かを判定する（ステップＳ４０９）。ｎ＝４であると判定された場合、以上の処理を終了する。ｎ＝４でないと判定された場合、ｎ＝ｎ＋＋（＝ｎ＋１）に設定する（ステップＳ４１０）。そしてステップＳ４０１に戻る。なお、ここでは、ｎ＝１の場合の処理について示されているが、ｎ＝２、３についても同様処理が行われ、各ロボット間の第一の時間Ｔ１がそれぞれ算出される。
【００６０】
図９に示すように、まずロボットの番号ｎ＝１に設定する（ステップＳ５００）。第ｎロボットを終点へ移動する（ステップＳ５０１）。第ｎ＋１ロボットが始点に位置するときの時間ｐ０＝tick始点（＝０）に設定するとともに、第ｎ＋１ロボットが終点に位置するときの時間ｐ１＝tick終点に設定する（ステップＳ５０２）。第ｎ＋１ロボットを時間ｐ１に対応する位置へ移動する（ステップＳ５０３）。第ｎ、ｎ＋１ロボット間の距離が前記余裕距離以下であるか否かを判定する（ステップＳ５０４）。第ｎ、ｎ＋１ロボット間の距離が前記余裕距離以下であると判定された場合、prev p1＝ｐ１、ｐ１＝ｐ１＋｜ｐ１−ｐ０｜／２とする（ステップＳ５０５）。すなわち第ｎ＋１ロボットを前進させる。一方第ｎ、ｎ＋１ロボット間の距離が前記余裕距離を超える場合、prev p1＝ｐ１、ｐ１＝ｐ１−｜ｐ１−ｐ０｜／２とする（ステップＳ５０６）。すなわち第ｎ＋１ロボットを後退させる。時間ｐ１が第ｎ＋１ロボットが始点に位置するときの時間を下回るか、若しくは｜prev p1−ｐ１｜が予め設定された収束範囲内であるか否かを判定する（ステップＳ５０７）。この条件を満足しないと判定された場合、ステップＳ５０３に戻り、当該条件を満足するまでステップＳ５０３〜Ｓ５０７を繰り返し実行する。前記条件を満足すると判定された場合、第ｎ＋１ロボットが始点から、第ｎロボットが終点に位置しても第ｎ＋１ロボットと干渉しない位置まで移動するのに要する第二の時間Ｔ２＝ｐ１とする（ステップＳ５０８）。次にｎ＝４であるか否かを判定する（ステップＳ５０９）。ｎ＝４であると判定された場合、以上の処理を終了する。ｎ＝４でないと判定された場合、ｎ＝ｎ＋＋（＝ｎ＋１）に設定する（ステップＳ５１０）。そしてステップＳ５０１に戻る。なお、ここでは、ｎ＝１の場合の処理について示されているが、ｎ＝２、３についても同様処理が行われ、各ロボット間の第二の時間Ｔ２がそれぞれ算出される。
【００６１】
その後、図示されていないが、各ロボットの始点から終点に至るまでの所要時間をそれぞれ算出する。そして各ロボット間で、自ロボットに対応する所要時間から両ロボット間の前記第二の時間Ｔ２を差し引いて第三の時間Ｔ３を算出する。具体的には、例えば第１ロボット１０と第２ロボット１１との間では、第１ロボット１０の始点から終点に至るまでの所要時間を算出して、この所要時間から第１ロボット１０および第２ロボット１１間に対して算出された前記第二の時間Ｔ２を差し引いて第三の時間Ｔ３を算出する。その後、各ロボット間で、対応する第一の時間Ｔ１と第三の時間Ｔ３とを比較して小さい方を前記最大許容時間差として選択する。この最大許容時間差は、既述のとおり、各ロボット間で自ロボットに対して他のロボットの動作開始が遅れても両ロボットが干渉しない時間差である。
【００６２】
以上の処理により、各ロボット間の最大許容時間差が算出される。
【００６３】
図１０は、図６中のステップＳ２０６の詳細処理フロー図を示している。なお、この処理（特定タイミングでの干渉チェック）は、第１〜第４ロボット１０、１１、１２、１３の動作を計算的に模擬して行うのであって、第１〜第４ロボット１０、１１、１２、１３を実際に動作させて行うものではない。
【００６４】
図１０に示すように、まず一のロボットの番号ｎ＝１に設定する（ステップＳ６００）。第ｎロボットの制御周期単位tick＝０に設定する（ステップＳ６０１）。第ｎロボットを制御周期単位tick＝０に対応する位置（始点）へ移動する（ステップＳ６０２）。他のロボットの番号ｍ＝ｎ＋１に設定する（ステップＳ６０３）。第ｍロボットの制御周期単位ｔ＝０に設定する（ステップＳ６０４）。第ｍロボットを制御周期単位ｔ＝０に対応する位置（始点）に移動する（ステップＳ６０５）。次に、第ｎロボットと第ｍロボットとの間の距離が、予め設定された前記余裕距離以下であるか否かを判定する（ステップＳ６０６）。当該距離が予め設定された前記余裕距離以下であると判定された場合、第ｎロボットおよび第ｍロボットの動作開始時間差がtick−ｔの場合に両ロボット間で干渉が生じることを記憶する（ステップＳ６０７）。その後、第ｍロボットを制御周期単位ｔ＝ｔ＋＋（＝ｔ＋１）に設定する（ステップＳ６０８）。ステップＳ６０６において前記距離が前記余裕距離を超えると判定された場合、ステップＳ６０８に進む。第ｍロボットが始点から終点に至るまで、すなわち制御周期単位ｔ＝０〜終点に至るまで順次ステップＳ６０４〜Ｓ６０８の処理を繰り返し実行する。以上の処理が終了したあと、ｍ＝ｍ＋＋（＝ｍ＋１）に設定する（ステップＳ６０９）。ここでｍ＋＋はインクリメント（１を加算する）を表す。ステップＳ６０３に戻り、ｍ＝４になるまでステップＳ６０３〜Ｓ６０９の処理を繰り返し実行する。以上の処理が終了した後、第ｎロボットを制御周期単位tickをtick＋＋（＝tick＋１）に設定する（ステップＳ６１０）。第ｎロボットが始点から終点に至るまで、すなわち制御周期単位tick＝０〜終点に至るまで順次ステップＳ６０１〜Ｓ６１０の処理を繰り返し実行する。以上の処理が終了したあと、ｎ＝ｎ＋＋（＝ｎ＋１）に設定する（ステップＳ６１１）。ステップＳ６００に戻り、ｎ＝３になるまでステップＳ６００〜Ｓ６１１の処理を繰り返し実行する。
【００６５】
図１１は、図５中のステップＳ１０５の詳細処理フロー図の一例を示している。図１１に示すように、自ロボットの動作開始信号がＯＮになったか否かを判定する（ステップＳ７００）。自ロボットは、第１〜第４ロボット１０、１１、１２、１３の内の任意のロボットである。この動作開始信号は、上述したセンサＳＮからシーケンサ５２に出力される信号である。自ロボットの動作開始信号がＯＮでないと判定された場合、自ロボットの動作開始信号がＯＮになるまでステップＳ７００の処理を繰り返し実行する。自ロボットの動作開始信号がＯＮになった場合、他のロボットの動作信号がＯＮになったか否かを判定する（ステップＳ７０１）。他のロボットの動作信号がＯＮになったと判定された場合、処理は終了する。すなわち他のロボットは動作し続ける。他のロボットの動作信号がＯＮでないと判定された場合、両ロボットの動作開始時間差が最大許容時間差を超えるか否かを判定する（ステップＳ７０２）。両ロボットの動作開始時間差が最大許容時間差を超えない場合、ステップＳ７０１に戻り処理を実行する。両ロボットの動作開始時間差が最大許容時間差を超える場合、第１〜第４ロボット１０、１１、１２、１３の全てを非常停止するため、第１〜第４ロボットコントローラ３０、３１、３２、３３に停止命令を出力する。なお、ここでは、１組の任意のロボット間に対する処理を示しているが、これらの処理はその他の各ロボット間に対しても実行される。
【００６６】
なお、上述した実施形態は一例であり、本発明の要旨を損なわない範囲での種々の変更は可能であり、本発明は上述した実施形態に限定されるものではない。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態に係る干渉防止装置が適用される溶接ロボットシステムの構成を示すブロック図である。
【図２】図１に示した溶接ロボットシステムの詳細な構成を示すブロック図である。
【図３】シミュレーション用コンピュータ５１およびシーケンサ５２の演算処理機能を示す機能ブロック図である。
【図４】（ａ）は第１ロボットが始点から、第２ロボットが始点に位置しても第１ロボットと干渉しない位置まで移動するのに要する第一の時間Ｔ１を模式的に示す概略図であり、（ｂ）は、第２ロボットが始点から、第１ロボットが終点に位置しても第２ロボットと干渉しない位置まで移動するのに要する第二の時間Ｔ２を、第１ロボットが始点から終点に至るまでの所要時間から差し引いた第三の時間Ｔ３を模式的に示す概略図である。
【図５】全体処理フロー図の一例を示している。
【図６】図５中のステップＳ１０３の詳細処理フロー図の一例を示している。
【図７】図６中のステップＳ２００の詳細処理フロー図の一例を示している。
【図８】図４（ａ）に示した第一の時間Ｔ１を算出するための処理フロー図の一例を示している。
【図９】図４（ｂ）に示した第二の時間Ｔ２を算出するための処理フロー図の一例を示している。
【図１０】図６中のステップＳ２０６の詳細処理フロー図を示している。
【図１１】図５中のステップＳ１０５の詳細処理フロー図の一例を示している。
【符号の説明】
【００６８】
１…溶接ロボットシステム
１０、１１、１２、１３…第１〜第４ロボット
１４…被溶接物
１４ａ…載置台
１５…溶接トーチ
１６…可動アーム
１７…支持装置
１８、１９…第１、第２アーム
２０ａ、２０ｂ、２０ｃ…第１〜第３駆動装置
３０、３１、３２、３３…第１〜第４ロボットコントローラ
３４、５３、５８…第１ＣＰＵ、第５ＣＰＵ、第６ＣＰＵ
３５、５４、５９…第１Ｉ／Ｏインタフェース、第５Ｉ／Ｏインタフェース、第６Ｉ／Ｏインタフェース
３６、５５、６０…第１記憶部、第５記憶部、第６記憶部
３７、３８、３９、４０、５６…第１〜第５入力装置
５０…干渉防止装置
５１…シミュレーション用コンピュータ
５２…シーケンサ
５７…表示装置
７０…生成部
７１…最大許容時間差算出部
７２…時間算出部
７３…選択部
７４…判定部
７５…命令部
ＳＮ…センサ
Ｔ１、Ｔ２、Ｔ３…第一の時間、第二の時間、第三の時間
Ｓ１００〜Ｓ１１０…ステップ
Ｓ２００〜Ｓ２０７…ステップ
Ｓ３００〜Ｓ３０８…ステップ
Ｓ４００〜Ｓ４１０…ステップ
Ｓ５００〜Ｓ５１０…ステップ
Ｓ６００〜Ｓ６１１…ステップ
Ｓ７００〜Ｓ７０２…ステップ
【図１】
2006192554.tif 000003
【図２】
2006192554.tif 000004
【図３】
2006192554.tif 000005
【図４】
2006192554.tif 000006
【図５】
2006192554.tif 000007
【図６】
2006192554.tif 000008
【図７】
2006192554.tif 000009
【図８】
2006192554.tif 000010
【図９】
2006192554.tif 000011
【図１０】
2006192554.tif 000012
【図１１】
2006192554.tif 000013