(57)【要約】【課題】近接した複数のロボットに作業を教示する際に、実際にロボットを動作させてロボット同士の干渉確認をする作業者の負荷を低減可能な干渉確認方法と、それを実行するロボットシステムが求められていた。【解決手段】ロボットの軌道を生成するシミュレータを有するロボット制御部が、複数のロボットについて、作業を行うための軌道を生成する工程と、生成した軌道に基づいて、各ロボットの通過領域を仮想空間に生成する工程と、仮想空間に生成した各ロボットの通過領域に、現実の各ロボットで生じ得るずれに応じた冗長部を付加する工程と、冗長部を付加した各ロボットの通過領域が、互いに接触あるいは重複するかを判定する判定工程と、判定工程で接触あるいは重複すると判定した場合に、複数のロボットの軌道のうち、接触あるいは重複が発生する位置を含む軌道部分を抽出して記憶する工程を実行する。【選択図】図４
2020082285.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの軌道を生成するシミュレータを有するロボット制御部が、
複数のロボットについて、作業を行うための軌道を生成する工程と、
生成した前記軌道に基づいて、各ロボットの通過領域を仮想空間に生成する工程と、
仮想空間に生成した前記各ロボットの通過領域に、現実の各ロボットで生じ得るずれに応じた冗長部を付加する工程と、
前記冗長部を付加した各ロボットの通過領域が、互いに接触あるいは重複するかを判定する判定工程と、
前記判定工程で接触あるいは重複すると判定した場合に、前記複数のロボットの前記軌道のうち、前記接触あるいは重複が発生する位置を含む軌道部分を抽出して記憶する工程と、を実行する、
ことを特徴とする複数のロボットの干渉を確認する方法。
【請求項２】
前記判定工程において接触あるいは重複すると判定した場合に、前記ロボット制御部が、前記複数のロボットを前記軌道部分についてオンライン制御で移動させる干渉確認工程を実行する、
ことを特徴とする請求項１に記載の複数のロボットの干渉を確認する方法。
【請求項３】
前記干渉確認工程において、前記ロボット制御部は、前記作業を行う時よりも低い速度で前記複数のロボットを移動させる、
ことを特徴とする請求項２に記載の複数のロボットの干渉を確認する方法。
【請求項４】
前記干渉確認工程において、前記軌道部分について干渉が発生すると確認された場合には、前記ロボット制御部は、前記軌道の修正指示を受け付ける、
ことを特徴とする請求項２または３に記載の複数のロボットの干渉を確認する方法。
【請求項５】
前記干渉確認工程は、前記ロボット制御部が、前記複数のロボットの各々を、各々の前記軌道部分の一端に移動させるステップを含む、
ことを特徴とする請求項２乃至４のいずれか１項に記載の複数のロボットの干渉を確認する方法。
【請求項６】
前記干渉確認工程は、前記ロボット制御部が、前記軌道部分に沿って前記作業の時と同じ方向に前記ロボットを移動させるステップと、前記軌道部分に沿って前記作業の時とは逆方向に前記ロボットを移動させるステップを含む、
ことを特徴とする請求項２乃至５のいずれか１項に記載の複数のロボットの干渉を確認する方法。
【請求項７】
前記干渉確認工程は、前記ロボット制御部が、前記複数のロボットの各々を、前記判定工程において前記接触あるいは重複が発生した位置に移動させるステップを含む、
ことを特徴とする請求項２乃至６のいずれか１項に記載の複数のロボットの干渉を確認する方法。
【請求項８】
前記ロボット制御部は、前記判定工程において接触あるいは重複すると判定した場合に、前記干渉確認工程の実施が必要であることを作業者に通知する、
ことを特徴とする請求項２乃至７のいずれか１項に記載の複数のロボットの干渉を確認する方法。
【請求項９】
前記ロボット制御部は、前記干渉確認工程において干渉が発生したと判定した場合に、軌道の修正が必要であることを作業者に通知する、
ことを特徴とする請求項２乃至８のいずれか１項に記載の複数のロボットの干渉を確認する方法。
【請求項１０】
請求項１乃至９のいずれか１項に記載の複数のロボットの干渉を確認する方法を、コンピュータに実行させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを記録した、コンピュータにより読み取り可能な記録媒体。
【請求項１２】
請求項１乃至９のいずれか１項に記載の複数のロボットの干渉を確認する方法を実行可能なロボット制御部と、前記ロボット制御部が制御可能な複数のロボットと、を備える、
ことを特徴とするロボットシステム。
【請求項１３】
請求項１乃至９のいずれか１項に記載の複数のロボットの干渉を確認する方法における前記判定工程において接触あるいは重複しないと判定した場合には、前記ロボット制御部は、前記軌道を用いて前記複数のロボットを動作させて物品を製造する、
ことを特徴とする物品の製造方法。
【請求項１４】
請求項２乃至９のいずれか１項に記載の複数のロボットの干渉を確認する方法における前記判定工程において接触あるいは重複すると判定した場合には、前記ロボット制御部は、前記干渉確認工程を実施するまでは、前記複数のロボットによる前記軌道を用いた物品の製造を行わない、
ことを特徴とする物品の製造方法。
【請求項１５】
請求項２乃至９のいずれか１項に記載の複数のロボットの干渉を確認する方法における前記干渉確認工程において前記軌道部分について干渉が発生しないと確認された場合には、前記ロボット制御部は、前記軌道を用いて前記複数のロボットを動作させて物品を製造する、
ことを特徴とする物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オフラインシミュレータで作成したロボットの軌道を、必要に応じて実際にロボットを動作させて確認する方法に関する。特に、複数のロボットを近接して作業させる軌道を作成した場合に、ロボット同士やロボットと障害物の間で干渉が発生しないかを、作業開始前に予め確認する干渉確認方法に関するものである。
【背景技術】
【０００２】
近年では、産業用ロボットを用いて、工場の生産ラインにおける組立て、搬送、塗布といった作業の自動化が盛んに行われている。ロボットの作業設計者は、ロボットの通過する経路や動作させるタイミングを作業に応じて考え、周囲に存在する物体と干渉しないようにシミュレータなどを用いて軌道を設計している。
しかし、シミュレータ上では物体と干渉しないようにロボットの軌道を設計したとしても、シミュレータ上の設計値と実際のロボットの設置位置、物体の位置、形状等の間には誤差がある場合があり、実際にはロボットと物体が干渉する可能性がある。そのため、オペレータが実機をオンラインで動作させて、ロボットと物体の干渉が発生しないことを確認していたが、作業の全ての軌道について実機で確認するのは負荷が大きく、能率的ではなかった。
【０００３】
特許文献１には、作業対象物に対して例えば溶接を行うロボットの作業経路を生成し、一連の作業経路の中でロボット及び工具が作業対象物と干渉が生じるかを作業対象物の３次元情報に基づきオフラインで判断する装置が開示されている。干渉が生じると判断した場合には、可能な限りオフライン教示によりオペレータがロボット及び工具の姿勢を変更することとし、オンライン教示を可及的に低減させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１９０２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年の生産ラインでは、生産能力の向上や省スペース化のために、複数台のロボットを近接して配置し、共通の作業領域内で複数台のロボットが作業を行うことが多い。このような場合に、ロボットの作業設計者は、ロボットが通過する経路や軌道、各ロボットを動作させるタイミングを考え、ロボット同士が干渉し合わないようにシミュレータなどで設計していた。
しかし、ロボットの設置誤差等のため、ロボット同士が干渉し合わないようにシミュレータ上で設計しても、実際にはシミュレーション結果との差が生じてロボット同士の干渉が起きる可能性がある。作業者が実機をオンラインで動作させてロボット同士の干渉が発生しないことを確認しようとすると、従来の一台のロボットと静止物体の干渉を確認するのと比べ、動体同士の軌道の場合には更に膨大な確認作業負荷がかかっていた。
【０００６】
例えば、一般的にロボット同士のクリアランス（隙間）が狭くなる箇所は、教示点間を移動する軌道上に存在することが多いが、どこで最も近接するかを実機で確認するためには、教示点間の全経路の移動を実施する必要があった。ロボットが１台であれば１回経路を確認すれば良いが、ロボットが複数の場合は、確認が必要な対象のアーム同士が最も近接する状態を作り出して確認する必要がある。例えば、２台のロボットが最も近接する状態を作り出すためには、第一のロボットの軌道を確認し、第二のロボットの軌道と最も近接しそうな位置を作業者が目視で確認する。次に、その最も近接しそうな位置にて第一のロボットを作業者が停止させ、第二のロボットの軌道を実行して干渉がないことを確認する必要がある。ただし、第一のロボットを停止させた位置は、作業者が目視で判断した位置であり、真の最近接位置とは限らないため、確認を確実にするためにはクリアランス（隙間）が小さかった場合には、その近傍についても前記操作を繰り返し実行する必要がある。
【０００７】
そのため、干渉確認に時間がかかり作業者の負担が大きく、複数のロボット同士について確認を必要とする軌道の組み合わせのパターンが多い場合には、確認モレが発生する可能性もあった。
そこで、近接した複数のロボットに作業を教示する際に、実際にロボットを動作させてロボット同士の干渉確認をする作業者の負荷を低減可能な干渉確認方法と、それを実行するロボットシステムが求められていた。
【課題を解決するための手段】
【０００８】
本発明は、ロボットの軌道を生成するシミュレータを有するロボット制御部が、複数のロボットについて、作業を行うための軌道を生成する工程と、生成した前記軌道に基づいて、各ロボットの通過領域を仮想空間に生成する工程と、仮想空間に生成した前記各ロボットの通過領域に、現実の各ロボットで生じ得るずれに応じた冗長部を付加する工程と、前記冗長部を付加した各ロボットの通過領域が、互いに接触あるいは重複するかを判定する判定工程と、前記判定工程で接触あるいは重複すると判定した場合に、前記複数のロボットの前記軌道のうち、前記接触あるいは重複が発生する位置を含む軌道部分を抽出して記憶する工程と、を実行する、ことを特徴とする複数のロボットの干渉を確認する方法である。
【発明の効果】
【０００９】
本発明によれば、近接した複数のロボットに作業を教示する際に、実際にロボットを動作させてロボット同士の干渉確認をする作業者の負荷を低減可能な干渉確認方法と、それを実行するロボットシステムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るロボットシステムの全体構成を示す図。
【図２】実施形態に係るロボットシステムの制御系を示すブロック図。
【図３】実施形態におけるロボット制御装置による教示シミュレーションの模式的な説明図。
【図４】実施形態に係るロボット教示方法の各工程を示すフローチャート。
【図５】（ａ）実施形態におけるロボットの動作指令を説明するための図。（ｂ）実施形態におけるロボットの軌道生成を説明するための図。（ｃ）実施形態におけるロボット制御装置による軌道シミュレーションの説明図。（ｄ）実施形態において、現実のロボットや障害物で生じ得るずれの大きさに相当する冗長部を付加した軌道シミュレーションの説明図。
【図６】実施形態における干渉確認処理の各工程を示すフローチャート。
【発明を実施するための形態】
【００１１】
［第１実施形態］
以下、図面を参照して、本発明の第１実施形態であるロボットの干渉確認方法とロボットシステムについて説明する。
（ロボットシステム）
図１は、第１実施形態に係るロボットシステム１００の全体構成を示す説明図である。ロボットシステム１００は、複数（第１実施形態では２台）のロボット２００１、ロボット２００２と、これらのロボットを制御するロボット制御部であるロボット制御システム３５０とを備える。尚、ロボット２００１とロボット２００２の到達可能範囲内には、構造物等である障害物７００が存在するものとする。
【００１２】
ロボット制御部であるロボット制御システム３５０は、処理部の一例であるロボット制御装置３００と、入力部の一例である入力装置４００と、表示部の一例である表示装置５００と、を備えている。入力装置４００は、例えばキーボード４０１、マウス４０２及び教示ペンダント４０３等で構成されており、作業者は入力装置４００を用いてロボット制御装置３００へのデータ入力などを行うことができる。教示ペンダント４０３は、作業者が操作するものであり、ロボット２００１、ロボット２００２やロボット制御装置３００の動作を指示するのに用いる。また、教示ペンダント４０３は、後述する干渉確認のための動作を開始させる釦４１０と、ロボット２００１、ロボット２００２に組立作業等の物品の製造作業を開始させる釦４１１とを有する。なお、入力装置４００の構成は、この例に限定するものではなく、例えばキーボード４０１、マウス４０２及び教示ペンダント４０３のうち、必要に応じていずれかを省略してもよいし、これらとは別の入力装置を用いてもよい。表示装置５００は、画像を表示するディスプレイである。
【００１３】
ロボット２００１とロボット２００２は、異なる構造のロボットであってもよいが、通常は略同一の構成である。本実施形態では、同一構成のロボットを用いているので、ロボット２００１の構成についてのみ説明し、ロボット２００２の構成については説明を省略する。
ロボット２００１は、垂直多関節のロボットであり、ロボットアーム２５１を備え、ロボットアーム２５１の先端にはエンドエフェクタの一例であるロボットハンド２５２が取付けられている。ロボットアーム２５１の基端は、台座に固定されている。ロボットハンド２５２は、ツールや部品等のワークを把持することが可能である。
【００１４】
ロボットアーム２５１は、複数の関節で連結された複数のリンクを備えており、図１の例では、６つの関節Ｊ１〜関節Ｊ６で連結された７つのリンク２１０〜リンク２１６を備えている。関節Ｊ１〜関節Ｊ６の各々は、関節軸を回転駆動させるためのサーボモータ（不図示）を有しており、関節Ｊ１〜関節Ｊ６の各々を回転駆動することで、ロボットアーム２５１の姿勢を自在に変更することができる。ロボットアーム２５１の姿勢を変更することにより、ロボット２００１の手先、即ちロボットアーム２５１の先端のロボットハンド２５２の位置及び姿勢を、任意に変更することができる。
【００１５】
ロボット２００１の手先の位置及び姿勢は、ロボットアーム２５１の基端、即ち台座を基準とするベース座標系で表現される。ロボット制御装置３００においては、ロボット２００１の手先の位置は、ＴＣＰ（ｔｏｏｌ  ｃｅｎｔｅｒ  ｐｏｉｎｔ）で定義される。作業者は、ベース座標系におけるＴＣＰの位置及び姿勢を入力装置４００から指示することにより、ロボット２００１の手先の位置及び姿勢を決めることができる。
【００１６】
（制御系）
次に、本実施形態のロボットシステムの制御系について説明する。
図２は、第１実施形態に係るロボットシステム１００の制御系を示すブロック図である。ロボット制御装置３００は、コンピュータで構成されている。ロボット制御装置３００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ＵｎｉｔであるＣＰＵ３０１を備えている。また、ロボット制御装置３００は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等で構成された記憶部３０２を備えている。また、ロボット制御装置３００は、記録ディスクドライブ３０３及び不図示の入出力インタフェースを備えている。ＣＰＵ３０１、記憶部３０２、記録ディスクドライブ３０３、及び入出力インタフェースは、互いに通信可能にバス３１０で接続されている。ＣＰＵ３０１は、記憶部３０２及び記録ディスクドライブ３０３を制御するとともに、入出力インタフェースに接続されたロボット２００１、ロボット２００２、入力装置４００及び表示装置５００と通信し、これらを適宜制御する。記録ディスクドライブ３０３は、記録ディスク３０４に記録された各種データやプログラム等を読み出したり、記録ディスク３０４に書き込んだりすることができる。
【００１７】
記憶部３０２には、制御プログラム３１１、タスクプログラム３１２、ＣＡＤデータ３１３、干渉確認データ３１４や、軌道データ生成時の制約条件等のデータが記憶されている。制御プログラム３１１は、タスクプログラム３１２の解釈、ロボット２００１とロボット２００２の軌道データの生成やシミュレーション、あるいは実動作制御等、後述するロボット教示方法の各工程をＣＰＵ３０１に行わせるプログラムである。制御プログラム３１１は、ユーザの過誤による変更が容易には起きないように保護されている。タスクプログラム３１２は、例えばロボット言語で記述されたテキストファイルであり、ユーザにより変更が可能となっている。タスクプログラム３１２は、ロボット２００１とロボット２００２に行わせる一連の動作を指令する複数の動作指令、複数の動作指令を区分けする箇所を示す区間データなどで構成される。
【００１８】
ロボットの動作指令は、ロボット言語で記述されている。例えば、ＴＣＰを教示点Ｐ１から教示点Ｐ２に直線移動させる動作指令は、「Ｍｏｖ  Ｐ１  Ｐ２」のように記述する。ＣＰＵ３０１は、タスクプログラム３１２により動作指令として指定された教示点を結ぶＴＣＰの軌道データを、タスクプログラム３１２により指定された補間方法（例えば、直線補間や円弧補間等）により生成する。軌道データは、例えば１［ｍｓ］などの所定時間毎に指令するＴＣＰの位置及び姿勢のデータ（又は各関節の角度のデータ）の集合であり、速度情報を含んでいることになる。ＣＡＤデータ３１３は、ロボット２００１及びロボット２００２の形状データ、障害物７００の形状データ等を含んでいる。
【００１９】
干渉確認データ３１４は、詳しくは後述するが、仮想空間内のシミュレーションで教示したロボット軌道のうち、実際にロボットを動作させて干渉の有無を確認すべき領域を特定するためのデータである。
【００２０】
第１実施形態では、記憶部３０２がコンピュータ読み取り可能な記録媒体であり、制御プログラム３１１が記憶部３０２に格納されている場合について説明するが、制御プログラム３１１の所在は、この例に限定されるわけではない。例えば、図２に示す記録ディスク３０４を、制御プログラムをコンピュータに供給するための記録媒体として用い、記録ディスク３０４から制御プログラムをＲＡＭにロードしてもよい。
【００２１】
第１実施形態では、ＣＰＵ３０１は、シミュレーションによるオフライン教示が可能に構成され、かつロボット２００１とロボット２００２をオンラインで実動作させて制御することが可能に構成されている。即ち、ＣＰＵ３０１は、仮想ロボットに一連の動作を行わせるシミュレーションが実行可能であるとともに、ロボット２００１及びロボット２００２に一連の実動作を実行可能に構成されている。
ＣＰＵ３０１は、作業者により教示ペンダント４０３の釦４１１が操作されると、タスクプログラム３１２に基づき生成した軌道データに従って各ロボット２００１及びロボット２００２を動作させ、物品を製造することができる。
【００２２】
（教示）
生産ラインに配置されたロボット２００１とロボット２００２を用いて物品の製造を開始する前に、ロボット２００１とロボット２００２に物品の製造にかかる動作を教示し、タスクプログラム３１２を作成しておく必要がある。教示方法は、種々存在する。例えばオフライン教示でタスクプログラム３１２を仮作成し、オフラインシミュレータ上でロボット２００１とロボット２００２を動作させ、各ロボットが周囲の物体に干渉しないかどうかの干渉確認を行う。なお、ここで言う周囲の物体とは、障害物だけでなく、自身以外のロボットも含んでいる。
【００２３】
オフライン教示を行う際には、ＣＰＵ３０１は、ロボット２００１及びロボット２００２に対応する仮想ロボットや障害物７００に対応する仮想障害物を、表示装置５００に３Ｄグラフィックス表示するのが好ましい。そして、作業者が表示装置５００を見ながら入力装置４００を用いてＣＰＵ３０１に指示を入力するようにして、教示を支援するのが好ましい。
【００２４】
図３は、第１実施形態におけるロボット制御装置３００による教示シミュレーションの模式的な説明図である。図３には、仮想空間ＲＩに配置された仮想ロボット２００Ｉ１、仮想ロボット２００Ｉ２及び仮想障害物７００Ｉが模式的に図示されている。仮想ロボット２００Ｉ１はロボット２００１と対応し、仮想ロボット２００Ｉ２はロボット２００２と対応し、仮想障害物７００Ｉは障害物７００と対応している。ＣＰＵ３０１は、ＣＡＤデータ３１３に基づいて、図３に示すように、仮想空間ＲＩ内に仮想ロボット２００Ｉ１、仮想ロボット２００Ｉ２及び仮想障害物７００Ｉを配置する。なお、第１実施形態では、ＣＰＵ３０１は、仮想ロボット２００Ｉ１、仮想ロボット２００Ｉ２及び仮想障害物７００Ｉを作業者に認識できるように、表示装置５００に３Ｄグラフィックスによって表示させる。図３では、図示の便宜から、仮想ロボット２００Ｉ１、仮想ロボット２００Ｉ２を３軸のロボットとして簡略化して図示しているが、実際には実物のロボットに準じた形態で表示装置５００に表示するのが望ましい。
【００２５】
図４は、第１実施形態に係るロボット教示方法の各工程を示すフローチャートである。ＣＰＵ３０１は、ロボット２００１、ロボット２００２の一連の動作に対応する複数の動作指令を記憶部３０２から読み込む（Ｓ１０１）。また、ロボット２００１、ロボット２００２の複数の動作指令を区切る区間を、記憶部のタスクプログラム３１２から読み込む（Ｓ１０２）。以下、ステップＳ１０１からステップＳ１０２の処理について具体的に説明する。
【００２６】
図５（ａ）は、第１実施形態におけるロボットの動作指令を説明するための図である。ＣＰＵ３０１は、ステップＳ１０１において、ロボット２００１に行わせる複数の動作指令ＣＭＡ１、ＣＭＡ２、ＣＭＡ３、…、及びロボット２００２に行わせる複数の動作指令ＣＭＢ１、ＣＭＢ２、ＣＭＢ３、…を記憶部３０２から取得する。ＣＰＵ３０１は、ステップＳ１０２において、複数の動作指令ＣＭＡ１、ＣＭＡ２、ＣＭＡ３、…を、予め決められた区間Ｓ１と区間Ｓ２に分配する。区間Ｓ１に分配された動作指令より成る指令セットＣＳＡ１と、区間Ｓ２に分配された動作指令より成る指令セットＣＳＡ２は、各々１つ以上の動作指令を含んでいる。同様に、ＣＰＵ３０１は、ステップＳ１０２において、複数の動作指令ＣＭＢ１、ＣＭＢ２、ＣＭＢ３、・・・を、予め決められた区間Ｓ１と区間Ｓ２に分配する。区間Ｓ１に分配された動作指令より成る指令セットＣＳＢ１と、区間Ｓ２に分配された動作指令より成る指令セットＣＳＢ２は、各々１つ以上の動作指令を含んでいる。尚、タスクプログラム３１２において、動作指令群が予め複数の指令セットに分けられた状態で記録されていてもよい。この場合、ＣＰＵ３０１は、複数の指令セットを記憶部３０２から読み込むことになる。
【００２７】
次に、ＣＰＵ３０１は、区間毎にロボット２００１とロボット２００２の軌道データを生成する（Ｓ１０３）。図５（ｂ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。図５（ｂ）に示すように、ロボット２００１の一連の動作ＭＡに対応する一連の軌道データＴＡと、ロボット２００２の一連の動作ＭＢに対応する一連の軌道データＴＢが生成される。
【００２８】
ＣＰＵ３０１は、ステップＳ１０３において、指令セットＣＳＡ１と指令セットＣＳＡ２に基づき、区間Ｓ１のロボット２００１の一連の軌道データＴＡ１と、区間Ｓ２のロボット２００１の一連の軌道データＴＡ２を生成する。同様に、ＣＰＵ３０１は、指令セットＣＳＢ１と指令セットＣＳＢ２に基づき、区間Ｓ１のロボット２００２の一連の軌道データＴＢ１と、区間Ｓ２のロボット２００２の一連の軌道データＴＢ２を生成する。つまり、ＣＰＵ３０１は、指令セットＣＳＡ１に基づき軌道データＴＡ１を、指令セットＣＳＡ２に基づき軌道データＴＡ２を、指令セットＣＳＢ１に基づき軌道データＴＢ１を、指令セットＣＳＢ２に基づき軌道データＴＢ２を、生成する。
このように、ロボット２００１の軌道データＴＡは、軌道データＴＡ１と軌道データＴＡ２に分けられて生成される。同様に、ロボット２００２の軌道データＴＢは、軌道データＴＢ１と軌道データＴＢ２に分けられて生成される。尚、各軌道データは、記憶部３０２に予め記憶された各ロボットの各関節の回転速度や回転加速度などの制約条件を超えない範囲で算出される。
【００２９】
ＣＰＵ３０１は、区間Ｓ１において、軌道データＴＡ１に従ってロボット２００１を動作させることで、ロボット２００１に部分動作ＭＡ１を行わせることができる。また、区間Ｓ１において、軌道データＴＢ１に従ってロボット２００２を動作させることで、ロボット２００２に部分動作ＭＢ１を行わせることができる。同様に、ＣＰＵ３０１は、区間Ｓ２において、軌道データＴＡ２に従ってロボット２００１を動作させることで、ロボット２００１に部分動作ＭＡ２を行わせることができる。また、区間Ｓ２において、軌道データＴＢ２に従ってロボット２００２を動作させることで、ロボット２００２に部分動作ＭＢ２を行わせることができる。
このように、第１実施形態では、ロボット２００１の一連の動作ＭＡは、複数の部分動作ＭＡ１、部分動作ＭＡ２からなり、ロボット２００２の一連の動作ＭＢは、複数の部分動作ＭＢ１、部分動作ＭＢ２からなる。
【００３０】
ここで、区間Ｓ１と区間Ｓ２は、タスクプログラム３１２において、ロボット２００１とロボット２００２の通過領域が、他の物体に干渉しないように設定されている。つまり、ロボット２００１とロボット２００２、ロボット２００１と障害物７００、ロボット２００２と障害物７００が、互いに干渉しないように予め区切られている。
区切る箇所の設定は、オフラインシミュレータ上で検討を行う。例えば、ロボット２００１とロボット２００２が、把持したワークを組付ける際に共通で使用する組付台が存在する場合には、組付台にはロボット２００１とロボット２００２がともにアクセスする。その場合には同じ場所で組付を行うため、両ロボットのタイミングをずらさなければ干渉が発生する。そのような組付作業に関しては、ロボット２００１が組付台にアクセスする動作とロボット２００２が組付台にアクセスする動作が区別できるように区間を区切る。各区間内においては、ロボット同士が同時に組付台にアクセスすることはないので、ロボット同士の干渉は発生せず、ロボット２００１とロボット２００２同士の動作タイミングの同期を検討する必要はない。即ち、ステップＳ１０３において、ロボット２００１とロボット２００２間の同期を考慮する必要はなく、各ロボットの軌道データを算出すればよい。
【００３１】
以上、ステップＳ１０１、ステップＳ１０２、ステップＳ１０３の処理により、ロボット２００１の一連の動作ＭＡとロボット２００２の動作ＭＢに対応して、一連の軌道データＴＡと軌道データＴＢが生成される。ロボット２００１については、区間Ｓ１の部分動作ＭＡ１に対応する軌道データＴＡ１と、区間Ｓ２の部分動作ＭＡ２に対応する軌道データＴＡ２が生成される。ロボット２００２については、区間Ｓ１の部分動作ＭＢ１に対応する軌道データＴＢ１と、区間Ｓ２の部分動作ＭＢ２に対応する軌道データＴＢ２が生成される。尚、これら一連の軌道データＴＡ、軌道データＴＢを、予め作成して記憶部３０２に記憶していてもよい。その場合、ＣＰＵ３０１は、記憶部３０２から一連の軌道データＴＡ、軌道データＴＢを読み込むだけでよい。
【００３２】
（干渉確認）
オフライン教示により、シミュレーション上では干渉が発生しないことが確認された軌道データでも、実機を動作させると干渉が発生する場合がある。これは、実機とオフラインとの間では、ロボット２００１、ロボット２００２、障害物７００の設置誤差や、ロボットの位置再現性、軌跡追従性などにおいて差異があるためである。そのため、オフライン教示完了後には、組立作業等の物品の製造を開始する前に、オンライン制御で実機を動作させて干渉が起きないかを確認する必要がある。
【００３３】
本実施形態では、干渉確認データ３１４に、仮想空間内のシミュレーションで生成したロボット軌道のうち、オンライン制御で実際にロボットを部分動作させて干渉の有無を確認すべき領域を特定するためのデータが記憶されている。これは、仮想空間内のシミュレーションで教示した際のロボット軌道や障害物位置のデータに、現実のロボットや障害物で生じ得るずれに相当する冗長部を付加して相互のクリアランス（間隔）を算出し、それに基づき選択した軌道領域が含まれている。
【００３４】
仮想空間内のシミュレーションによる教示では、ロボット同士やロボットと障害物が互いに干渉しないようにロボット軌道を設定するので、教示軌道に基づく仮想空間における相互のクリアランスデータ（間隔データ）は、当然に正の値になる。しかし、現実空間におけるロボット軌道や障害物位置は、設置誤差や部品公差等により、仮想空間内の設定位置とずれる場合がある。そこで、仮想空間内のロボット軌道や障害物位置のデータに、現実に生じ得るずれ分の冗長部を付加する。この場合には、仮想空間内でロボット軌道や障害物が占める範囲が冗長部の分だけ拡大するため、仮想空間内でロボット軌道や障害物が互いに接したり重なったりして、クリアランスデータ（間隔）が正の値にならない場合がある。この場合のクリアランスデータ（間隔）が正の値にならないからといって、現実の装置で必ず干渉が発生するとは限らないが、干渉が発生する可能性がある以上は、実機を動作させての干渉確認が必要になる。
【００３５】
そこで、現実に生じ得るずれ分の冗長部を付加した場合に、クリアランスデータ（間隔）が正の値にならない領域を特定するためのデータを、干渉確認データ３１４として記憶しておく。実際にロボットを動作させて干渉の有無を確認する際には、干渉確認データ３１４から特定される領域の軌道のみを動作させて確認すればよく、全軌道を動作させる必要がないため、作業者の負荷を大幅に軽減することができる。
【００３６】
尚、仮想空間内のロボット軌道に現実に生じ得るずれ分の冗長部を付加する場合には、ロボットを動作させた際の外形に与える静的なバラツキと動的なバラツキに基づいて、冗長部を設定することが望ましい。静的なバラツキとは、例えば、設置誤差や部品公差、リンクパラメータの誤差などである。動的なバラツキとは、ロボットの直進性やオーバーシュート、振動などである。また、障害物に関して現実に生じ得るずれ分の冗長部を付加する場合には、障害物７００が固定されている場合には、冗長部は静的なバラツキとしての設置誤差や部品公差などに基づいて設定されることが望ましい。
【００３７】
干渉確認は、具体的には以下の手順で行う。
図４のフローチャートにおいて、ＣＰＵ３０１は、シミュレーションにより、軌道データＴＡ１と軌道データＴＡ２に基づき、仮想ロボット２００Ｉ１が通過する領域を計算して生成する。同様に、ＣＰＵ３０１は、シミュレーションにより、軌道データＴＢ１と軌道データＴＢ２に基づき、仮想ロボット２００Ｉ２が通過する領域を計算して生成する（Ｓ１０４）。
【００３８】
図５（ｃ）は、Ｓ１０４におけるロボット制御装置３００によるシミュレーションの説明図である。ただし、図３と同様に、図５（ｃ）では仮想ロボット２００Ｉ１と仮想ロボット２００Ｉ２を簡略化して図示している。軌道データＴＡ１に基づく仮想ロボット２００Ｉ１の動作と、軌道データＴＢ１に基づく仮想ロボット２００Ｉ２の動作、すなわち区間Ｓ１における両ロボットの動作を模式的に示している。
【００３９】
ＣＰＵ３０１は、ステップＳ１０４において、軌道データＴＡ１に従って仮想ロボット２００Ｉ１を仮想的に動作させたときの仮想ロボット２００Ｉ１の軌跡から、仮想ロボット２００Ｉ１が通過した通過領域Ｒ１を求める。具体的には、図５（ｃ）に示すように、軌道データＴＡ１の始点ＳＡから終点ＧＡまで仮想ロボット２００Ｉ１を仮想空間ＲＩにおいて仮想的に動作させ、空間掃引によって通過領域Ｒ１を生成する。仮想ロボット２００Ｉ１は、ロボット２００１の形状データを含むＣＡＤデータ３１３を用いてポリゴンの集合体で表現される。通過領域Ｒ１は、軌道データＴＡ１を用いて、ポリゴンの集合体を仮想空間ＲＩ内で動作させることで求められる。なお、移動体の通過領域を求める手法としては、例えば、Ｓｗｅｐｔ  Ｖｏｌｕｍｅ生成の手法や、通過領域を立方体や球体などの簡易な形状へ近似する手法などを用いることができる。ＣＰＵ３０１は、仮想ロボット２００Ｉ２が通過した通過領域Ｒ２についても、同様にして求める。
【００４０】
次にＣＰＵ３０１は、ステップＳ１０５において、生じ得るずれの大きさのデータを記憶部３０２から読み出す。生じ得るずれの大きさのデータとは、仮想空間内のシミュレーションで教示した際のロボット軌道や障害物位置に対して、現実のロボットや障害物で生じ得るずれの大きさを示すデータである。例えば、ロボットの設置誤差や部品公差、リンクパラメータの誤差、直進性やオーバーシュート、振動や、障害物の設置誤差、部品公差などに基づいて決めたデータである。
【００４１】
次に、ＣＰＵ３０１は、ステップＳ１０５で読み出した生じ得るずれの大きさのデータに基づき、仮想ロボット２００Ｉ１の通過領域Ｒ１に冗長部を付加し、通過し得る領域を計算して生成する（Ｓ１０６）。同様に、ＣＰＵ３０１は、ステップ１０５で読み出した生じ得るずれの大きさのデータに基づき、仮想ロボット２００Ｉ２の通過領域Ｒ２に冗長部を付加し、通過し得る領域を計算して生成する（Ｓ１０６）。
【００４２】
図５（ｄ）に示すように、冗長部を付加すると仮想ロボット２００Ｉ１の通過領域はＲ１よりもＲ１ｏｆｆだけ拡大し、仮想ロボット２００Ｉ２の通過領域はＲ２よりもＲ２ｏｆｆだけ拡大する。また、ＣＰＵ３０１は、仮想障害物７００Ｉについても、ステップＳ１０５で読み出した生じ得るずれの大きさのデータの分だけ冗長部を付加して外形を大きくする。尚、図５（ｄ）は、障害物については生じ得るずれの大きさが極めて小さな場合の例を示している。このように、ステップＳ１０６では、仮想空間内のシミュレーションで教示した際のロボット軌道に基づく通過領域や障害物位置のデータに、現実のロボットや障害物で生じ得るずれの大きさに相当する冗長部を付加する。
【００４３】
次に、ＣＰＵ３０１は、通過領域Ｒ１ｏｆｆ、通過領域Ｒ２ｏｆｆ、外形を大きくした仮想障害物７００Ｉの相互のクリアランス（間隔）を算出し、互いに接触したり重なったりしている領域が存在するかを判定する（Ｓ１０７）。判定は、例えば境界ボリューム階層（ｂｏｕｎｄｉｎｇ  ｖｏｌｕｍｅ  ｈｉｅｒａｒｃｈｙ、ＢＶＨ）と呼ばれる方法をとることが望ましい。
【００４４】
以下では、図５（ｄ）に示すように、仮想ロボット２００Ｉ１の拡大された通過領域Ｒ１ｏｆｆと、仮想ロボット２００Ｉ２の拡大された通過領域Ｒ２ｏｆｆとの間に、ＣＯＬとして示す部分において接触または重複が存在した場合を例に説明する。
図４のステップＳ１０７において、接触または重複が存在すると判定された場合には（Ｓ１０７：Ｙｅｓ）、ステップＳ１０８に進む。
【００４５】
逆に、接触または重複が存在しないと判定された場合には（Ｓ１０７：Ｎｏ）、教示を終了（Ｅｎｄ）する。この場合には、教示した軌道によりロボット２００１とロボット２００２を用いて物品の製造を行うことが可能となる。ＣＰＵ３０１は、教示ペンダント４０３の釦４１１の操作による入力指示を受け付け可能となり、入力指示を受け付けた際には、タスクプログラム３１２に従ってロボット２００１とロボット２００２を動作させ、物品の製造を行わせる。
【００４６】
ステップＳ１０８に進んだ場合には、ＣＰＵ３０１は、仮想ロボット２００Ｉ１の通過領域Ｒ１ｏｆｆと仮想ロボット２００Ｉ２の通過領域Ｒ２ｏｆｆとが接触または重複している軌道部分の抽出を行う（Ｓ１０８）。すなわち、図５（ｄ）のＣＯＬに示すように、クリアランス（間隔）が存在せず、通過領域同士の外形が接触または重複する領域の軌道（軌道部分）を抽出する。この例では、抽出した軌道部分はそれぞれ、仮想ロボット２００Ｉ１がＲ１＿ＴＲ、仮想ロボット２００Ｉ２がＲ２＿ＴＲとなる。
【００４７】
次に、ステップＳ１０９において、抽出した軌道部分の組み合わせが、記憶部３０２の干渉確認データ３１４に記憶される（Ｓ１０９）。すなわち、図４のステップＳ１０７、ステップＳ１０８を実行すると、ＣＰＵ３０１は、軌道部分Ｒ１＿ＴＲと軌道部分Ｒ２＿ＴＲの組み合わせにおいて通過領域が重なると判断し、ステップＳ１０９でこれを記憶する。尚、今回の例では、仮想ロボットの先端同士の通過領域が重なった例を示したが、確認すべき干渉はこれに限るわけではなく、例えば先端と関節や関節同士が干渉する場合もありえる。
【００４８】
次に、ステップＳ１１０において、ＣＰＵ３０１は、抽出した軌道部分について、オンラインで実機を駆動して行う干渉確認の処理を実行する（Ｓ１１０）。
図６を参照して、ステップＳ１１０の干渉確認の処理について具体的に説明する。図６は、干渉確認の処理に含まれる各工程を示したフローチャートである。
【００４９】
ステップＳ１１０の処理が開始されると、ＣＰＵ３０１は、干渉確認が必要であることを作業者に示す警告画像を表示装置５００に表示させる（Ｓ１１３）。これにより、作業者は、干渉確認処理が必要であり、それが開始したことを認識できる。
【００５０】
第１実施形態では、干渉確認が必要な区間Ｓ１の軌道部分Ｒ１＿ＴＲと軌道部分Ｒ２＿ＴＲについての干渉確認を実施しない限り、ロボット２００１及びロボット２００２による物品の製造を開始できないようにプログラムされている。具体的には、図１に示す教示ペンダント４０３の釦４１１は、生産作業開始の指示をロボット制御装置３００に入力する釦であるが、ロボット制御装置３００のＣＰＵ３０１は、釦４１１が操作されても、その入力指示を受け付ない。つまり、ロボット２００１及びロボット２００２による物品の製造を開始しない。このように、本実施形態では、作業者の不注意等により干渉確認を行うことなく生産作業が開始され不測の事態が発生するのを、未然に防止している。
【００５１】
Ｓ１１４において、ＣＰＵ３０１は、図１に示す教示ペンダント４０３の釦４１０が作業者により操作されたかどうかを判断する。即ち、ＣＰＵ３０１は、図１に示す入力装置４００から、干渉確認処理開始の入力指示を受け付けたかどうかを判断する。ＣＰＵ３０１は、釦４１０が操作されていなければ（Ｓ１１４：Ｎｏ）、そのまま待機する。ＣＰＵ３０１は、釦４１０が操作された場合、即ち入力装置４００からの入力指示を受け付けた場合には（Ｓ１１４：Ｙｅｓ）、干渉確認動作（Ｓ１１５）を開始する。
【００５２】
Ｓ１１５において、干渉確認動作が開始されると、ＣＰＵ３０１は、ロボット２００１を、干渉確認軌道の軌道データである軌道部分Ｒ１＿ＴＲの開始位置Ｒ１＿Ｓに移動する。ＣＰＵ３０１は、ロボット２００２についても同様に、ロボット２００２を干渉確認軌道の軌道データである軌道部分Ｒ２＿ＴＲの開始位置Ｒ２＿Ｓに移動する。その上でメイン動作させるロボット２００１、もしくはロボット２００２の動作を開始させる。今回の説明では、メイン動作させるロボットは、ロボット２００１であるとする。
【００５３】
ＣＰＵ３０１は、ロボット２００２を、軌道部分Ｒ２＿ＴＲ上の開始位置Ｒ２＿Ｓに停止させておく。そして、ロボット２００１を、軌道部分Ｒ１＿ＴＲの開始位置Ｒ１＿Ｓから終了位置Ｒ１＿Ｅに向けて移動させる。ただし、ＣＰＵ３０１は、物品を製造するために教示した軌道データＴＡ１に基づく移動速度よりも低い速度でロボット２００１を移動させる。これは、干渉確認処理中に、ロボット２００１が物体（ロボット２００２）と干渉したとしても、その時の衝撃力を低下させ、破損等を防止するためである。
なお、教示ペンダント４０３の釦４１０により干渉確認動作の開始の指示がなされる例を説明したが、入力装置４００において作業者が操作可能なものであれば、開始の指示は釦４１０からに限定されるものではない。いずれの指示方法を採用するにせよ、ＣＰＵ３０１は、作業者から入力指示を受け付けてから、ロボットの動作を開始すればよい。
【００５４】
Ｓ１１５において、ＣＰＵ３０１は、ロボット２００１が開始位置Ｒ１＿Ｓから終了位置Ｒ１＿Ｅに到達するまでの間に、ロボット２００２との干渉が発生したかどうかを判定する。干渉発生の有無は、センサ等を用いることにより検知することができる。例えば、ロボット２００１、ロボット２００２に設けられた不図示の力センサや、ロボット２００１、ロボット２００２あるいはその近傍に設けられた不図示の視覚センサの検知結果に基づいて判定を行うことが可能である。なお、作業者が目視により確認し、干渉が発生したときには、入力装置４００を介して作業者からＣＰＵ３０１に通知される構成としてもよい。
ＣＰＵ３０１は、軌道部分Ｒ１＿ＴＲに沿ってロボット２００１を移動させても干渉が発生しないと判定したら（Ｓ１１５：Ｎｏ）、ロボット２００２の１つの位置（開始位置Ｒ２＿Ｓ）に関する干渉確認動作を終了させる。
【００５５】
そして、Ｓ１１６において、干渉確認が必要な軌道部分の全域の確認が終了したかを判断し、終了していない場合には（Ｓ１１６：Ｎｏ）、Ｓ１１５に戻り、ロボット２００２の異なる位置に関する干渉確認動作を開始する。すなわち、ロボット２００１を、干渉確認軌道の軌道部分Ｒ１＿ＴＲの開始位置Ｒ１＿Ｓに再び移動させる。そして、ロボット２００２を、ロボット２００２の軌道部分Ｒ２＿ＴＲの開始位置よりも終了位置Ｒ２＿Ｅに近づいた位置に移動させる。移動量は、実際に物品の製造等の動作を行う際の１制御周期（例えば１ｍｓｅｃ）に移動する量や、位置制御の最小分解能、操作者が任意に決めた量、などから適宜選択すればよい。
【００５６】
次に、ロボット２００１を、干渉確認軌道の軌道部分Ｒ１＿ＴＲの開始位置Ｒ１＿Ｓから終了位置Ｒ１＿Ｅに向けて、再度移動させ、干渉確認を行う（Ｓ１１５）。干渉が発生したと判定しない（Ｓ１１５：ＮＯ）限りは、ロボット２００２が干渉確認軌道の軌道データの終了位置Ｒ２＿Ｅに到達するまで、ステップＳ１１５〜ステップＳ１１６の動作を繰り返し行う。
【００５７】
干渉が発生したと判定せずに干渉確認軌道の軌道部分Ｒ１＿ＴＲと軌道部分Ｒ２＿ＴＲの組合せ全域について干渉確認動作が終了したら（Ｓ１１６：ＹＥＳ）、ＣＰＵ３０１は、干渉していない旨を表示装置５００に表示させる（Ｓ１１７）。そして、干渉確認処理を終了する（Ｅｎｄ）。これにより、作業者は、干渉しないことを認識することができる。また、ＣＰＵ３０１は、釦４１１の操作による物品の製造作業開始の入力指示を受け付け可能となる。
【００５８】
一方、干渉が発生したと判定した場合には（Ｓ１１５：ＹＥＳ）、ＣＰＵ３０１は、直ちにロボット２００１を停止させ（Ｓ１１８）、干渉が発生した旨を表示装置５００に表示させる（Ｓ１１９）。これにより、作業者は、干渉が発生したことを認識することができる。そして、干渉確認処理を終了する（Ｅｎｄ）。
【００５９】
干渉確認処理で干渉の発生が確認された場合には、作業者は、実機において干渉が発生しないようにロボットの動作指令を変更する。すなわち、ロボット制御装置は、作業者による軌道の修正指示を受け付ける。例えば、実機に対する直接教示あるいは教示ペンダント４０３を用いたオンライン教示か、あるいは入力装置４００を用いたシミュレータ上のオフライン教示により、作業者は教示点を修正して動作指令を変更する。作業者が動作指令を変更したら、ＣＰＵ３０１は、図４のステップＳ１０１に戻り、再度ロボットの軌道を生成し直して、干渉確認処理が必要か否かを判定する。
【００６０】
本実施形態によれば、仮想空間で教示したロボット軌道の通過領域や障害物位置に対して、現実に生じ得るずれの大きさに相当する冗長部を付加し、相互のクリアランス（間隔）を確認する。クリアランス（間隔）が確保されている場合には、実機を動作させての干渉確認処理を省略し、ロボット２００１とロボット２００２の教示に要する時間を短縮することができる。
【００６１】
現実に生じ得るずれの大きさに相当する冗長部を付加すると、仮想空間で教示したロボット軌道の通過領域や障害物位置にクリアランスがなくなる、つまり仮想空間上で接触や重複が生ずる場合にのみ、実機を動作させて干渉確認処理を行う。干渉確認処理において、複数のロボットのロボット軌道の組合せのうち、クリアランスがない部分軌道だけを抽出して実機による干渉確認処理を行うことで、干渉確認に要する作業時間を短縮することができる。
【００６２】
［第２実施形態］
第２実施形態に係るロボットの干渉確認方法とロボットシステムについて説明する。
第２実施形態におけるロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。第２実施形態は、図６に示す干渉確認処理におけるステップＳ１１５の具体的な動作が、第１実施形態とは異なる。ステップＳ１１５以外のステップは、第１実施形態と同様であるため、ここでは説明を省略する。
【００６３】
第１実施形態では、ロボット２００１を軌道部分Ｒ１＿ＴＲの開始位置Ｒ１＿Ｓから終了位置Ｒ１＿Ｅまで移動させてロボット２００２の１つの位置姿勢に対する干渉確認動作を終了させた後、ロボット２００１を開始位置Ｒ１＿Ｓに戻していた。これに対して、第２実施形態では、次の干渉確認動作を開始する前に、ロボット２００１を終了位置Ｒ１＿Ｅから開始位置Ｒ１＿Ｓに毎回必ず戻すわけではない点が異なる。
【００６４】
図５に示すように、干渉確認処理を行う領域では、ロボット２００１とロボット２００２の軌道は、現実に生じ得るずれの大きさの範囲内にまで近接している。その為、終了位置Ｒ１＿Ｅから開始位置Ｒ１＿Ｓに戻すための移動をする際に、軌道を配慮せずにロボット２００１を単純に２点間移動したのでは、ロボット２００２と干渉を起こす恐れがある。そこで、開始位置Ｒ１＿Ｓまで戻すのに、軌道部分Ｒ１＿ＴＲを逆にトレースするとすれば、干渉確認のために開始位置Ｒ１＿Ｓから終了位置Ｒ１＿Ｅまで移動させた時と同一の軌道であるため、ヒステリシス誤差を除けば干渉が発生する可能性は小さい。
【００６５】
ここで、軌道部分Ｒ１＿ＴＲを使用して終了位置Ｒ１＿Ｅから開始位置Ｒ１＿Ｓに戻すのであるなら、その際にも干渉確認を行った方が効率がよい。そこで、本実施形態では、ロボット２００２の１つの位置姿勢に対する干渉確認動作を終了させたら、ロボット２００２を、干渉確認する軌道部分Ｒ２＿ＴＲ上の終了位置Ｒ２＿Ｅに近い位置に移動させる。その後、ロボット２００１を終了位置Ｒ１＿Ｅから開始位置Ｒ１＿Ｓに移動させながら、干渉確認を行う。このように、本実施形態では、ロボット２００１を軌道部分Ｒ１＿ＴＲに沿って順方向と逆方向に交互に移動させて干渉確認を行うことにより、ロボット２００１を開始位置に戻すだけのための移動工程を省略できる。このため、干渉確認に要する時間を更に短縮することができる。
【００６６】
［第３実施形態］
第３実施形態に係るロボットの干渉確認方法とロボットシステムについて説明する。
第３実施形態におけるロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。第３実施形態は、図６に示す干渉確認処理におけるステップＳ１１５の具体的な動作が第１実施形態及び第２実施形態と異なる。ステップＳ１１５以外のステップは、第１実施形態と同様であるため、ここでは説明を省略する。
第１実施形態及び第２実施形態では、干渉確認処理を開始すると、まずロボット２００１とロボット２００２を、それぞれの干渉確認軌道の軌道部分の一端である開始位置に移動させた。すなわち、ロボット２００１を開始位置Ｒ１＿Ｓに、ロボット２００２を開始位置Ｒ２＿Ｓに移動させた。
【００６７】
これに対して、第３実施形態では干渉確認処理を開始すると、まずロボット２００１とロボット２００２を、干渉確認軌道の中で現実に干渉が発生する確率が高い位置に移動させて干渉確認を行う。すなわち、必ずしも干渉確認軌道の一端から干渉確認を開始するわけではない。干渉確認の開始位置は、ステップＳ１０８において、冗長部を付加したロボット２００１とロボット２００２の軌道の通過領域の重なりが最大であった位置、あるいはその近傍とするのが望ましい。本実施形態では、最初に干渉が発生する確率が高い位置にロボットを移動させて干渉確認を行うことにより、干渉が発生する場合にそれを検出するまでに要する時間を短縮することが可能である。尚、最初に干渉が発生する確率が高い位置にロボットを移動させる際には、ＣＰＵ３０１は、物品を製造するために教示した軌道データに基づく移動速度よりも低い速度でロボットを移動させる。これは、干渉確認処理中に、ロボット同士が干渉したとしても、その時の衝撃力を低下させ、破損等を防止するためである。
【００６８】
［他の実施形態］
本発明の実施形態は、上述した第１実施形態〜第３実施形態に限られるものではなく、本発明の技術的思想内で多くの変形が可能である。
例えば、上記実施形態では、作業者に干渉確認処理が必要なことを通知する際には、表示装置５００に警告を示す画像を表示させたが（ステップＳ１１３）、作業者に通知する方法はこれに限られるわけではない。例えば、音声メッセージで通知してもよい。場合によっては、作業者に通知することなく、作業者からの干渉確認処理の開始の指示を待ってもよい。
【００６９】
また、干渉確認処理において干渉が発生した場合に、表示装置５００に干渉発生を示す画像を表示させたが（ステップＳ１１９）、作業者に通知する方法はこれに限られるわけではない。例えば、音声メッセージで通知してもよい。
実施形態１では、干渉確認処理において、ロボット２００１をメイン動作させる場合について説明したが、これは一例であり、これに限定されるものではない。
【００７０】
また、上記実施形態では、共通の作業領域内に２台のロボットが設置された場合を説明したが、制御可能なロボットの数は２台に限られるわけではなく、３台以上の複数のロボットが互いに干渉し得る範囲内に配置されたロボットシステムであってもよい。
【符号の説明】
【００７１】
１００・・・ロボットシステム／２００１、２００２・・・ロボット／２１０〜２１６・・・リンク／２５１・・・ロボットアーム／２５２・・・ロボットハンド／３００・・・ロボット制御装置／３０１・・・ＣＰＵ／３０２・・・記憶部／３０３・・・記録ディスクドライブ／３０４・・・記録ディスク／３１０・・・バス／３１１・・・制御プログラム／３１２・・・タスクプログラム／３１３・・・ＣＡＤデータ／３１４・・・干渉確認データ／３５０・・・ロボット制御システム／４００・・・入力装置／４０１・・・キーボード／４０２・・・マウス／４０３・・・教示ペンダント／４１０、４１１・・・釦／５００・・・表示装置／７００・・・障害物／２００Ｉ１、２００Ｉ２・・・仮想ロボット／７００Ｉ・・・仮想障害物／Ｊ１〜Ｊ６・・・関節
【図１】
2020082285.tif 000003
【図２】
2020082285.tif 000004
【図３】
2020082285.tif 000005
【図４】
2020082285.tif 000006
【図５】
2020082285.tif 000007
【図６】
2020082285.tif 000008