(57)【要約】      （修正有）【課題】複数のロボットが、共通の作業領域内で同時に作業を行う場合に、障害物を避けつつ各ロボット同士が干渉しないように動作を教示する方法を提供する。【解決手段】まず、ロボット同士の干渉は考慮しないで、各ロボットが動作指令に基づいて障害物を避けつつ移動するための教示値を生成する。この教示値に基づいて各ロボットを動作させたときに、各ロボットを構成する点が描く軌道の集合であるロボット通過領域を仮想空間上で算出し、ロボット通過領域同士が交差しないかを判定する。交差する場合には、いずれのロボットも通過できない制約条件を追加的に設定し、その条件の下で、各ロボットが動作指令に基づいて障害物を避けつつ移動するための教示値を再度生成する。ロボット同士の干渉を回避するために、ロボット動作のタイミング調整を行わなくともよい教示方法を提供することができる。【選択図】図８
2018144223.tif 000002
【特許請求の範囲】
【請求項１】
共通の作業領域を有するように配置された複数のロボットに、コンピュータを使って動作を教示する教示方法であって、
教示すべき動作についての各ロボットの基準部位の始点、経由点、終点の位置情報を含む動作指令リストを、前記コンピュータが記憶する工程と、
前記複数のロボットの動作範囲内にある障害物の位置および形状の情報を、前記コンピュータが記憶する工程と、
前記コンピュータが、前記動作指令リスト及び前記障害物の位置および形状の情報に基づき、前記基準部位を前記始点から前記終点まで前記障害物を避けて移動させるための追加の経由点を各々のロボットについて独立に生成し、教示値として記憶する教示値生成工程と、
前記コンピュータが、前記教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出して記憶するロボット通過領域算出工程と、
前記コンピュータが、前記ロボット通過領域算出工程で算出した各ロボットの通過領域同士の交差の有無を検出する交差検出工程と、
前記コンピュータが、前記交差検出工程で交差を検出した場合に、交差した領域内の少なくとも一部の空間に前記複数のロボットのいずれもが通過できなくする制約条件を設定し、前記動作指令リストまたは前記障害物の位置情報に追加する制約条件追加工程と、
前記コンピュータが、前記制約条件追加工程の後の前記動作指令リスト及び前記障害物の位置情報に基づき、前記基準部位を前記始点から前記終点まで前記障害物を避けて移動させるための教示値を、各々のロボットについて再生成する教示値再生成工程と、を有する、
ことを特徴とする教示方法。
【請求項２】
前記コンピュータが、前記教示値再生成工程で再生成した各々のロボットの教示値に基づいて、前記ロボット通過領域算出工程、前記交差検出工程を再度実行する、
ことを特徴とする請求項１に記載の教示方法。
【請求項３】
前記制約条件追加工程は、
コンピュータが、前記各々のロボットのロボット通過領域同士が交差する領域内に仮想的な障害物を設定し、前記障害物の位置および形状の情報に前記仮想的な障害物の位置および形状の情報を追加する工程である、
ことを特徴とする請求項１または２に記載の教示方法。
【請求項４】
前記制約条件追加工程は、
前記各々のロボットのロボット通過領域同士が交差する２点間を結ぶ線分の中間点と前記各々のロボットの原点とを結ぶ線分上の点を、前記各々のロボットが前記始点から前記終点へ向かう途中で経由しなければならない経由点として設定し、前記動作指令リストに追加する工程である、
ことを特徴とする請求項１または２に記載の教示方法。
【請求項５】
前記基準部位は、前記ロボットが備えるハンドである、
ことを特徴とする請求項１乃至４のいずれか１項に記載の教示方法。
【請求項６】
請求項１乃至５のいずれか１項に記載の教示方法で生成した教示値に基づき、前記複数のロボットを動作させる、
ことを特徴とする複数のロボットの動作方法。
【請求項７】
請求項１乃至５のいずれか１項に記載の教示方法をコンピュータに実行させるためのプログラム。
【請求項８】
請求項１乃至５のいずれか１項に記載の教示方法をコンピュータに実行させるためのプログラムを記憶した記憶媒体。
【請求項９】
コンピュータと、
請求項６に記載のプログラムを記憶した装置と、を備える、
ことを特徴とする教示装置。
【請求項１０】
共通の作業領域を有するように配置された複数のロボットの軌道を仮想空間上で算出するコンピュータと、表示装置と、を有する教示装置において、
前記コンピュータは、
教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出し、
各ロボットの通過領域同士の交差の有無を検出し、
交差を検出した場合に、交差した領域内の少なくとも一部の空間に前記複数のロボットのいずれもが通過できなくする制約条件を設定し、前記ロボット通過領域と前記制約条件を前記表示装置に表示させる、
ことを特徴とする教示装置。
【請求項１１】
前記コンピュータは、前記ロボット通過領域が互いに交差する領域内に、前記制約条件として仮想的な障害物を設定して前記表示装置に表示させる、
ことを特徴とする請求項１０に記載の教示装置。
【請求項１２】
前記コンピュータは、前記仮想的な障害物を、前記ロボット通過領域が互いに交差する２点を結ぶ線分上に設定する、
ことを特徴とする請求項１１に記載の教示装置。
【請求項１３】
前記コンピュータは、前記仮想的な障害物を避けて移動させるための新たな教示値を、各々のロボットについて生成し、
前記新たな教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出し、前記仮想的な障害物とともに前記表示装置に表示させる、
ことを特徴とする請求項１１に記載の教示装置。
【請求項１４】
前記コンピュータは、前記制約条件として、前記ロボット通過領域が互いに交差する２点間を結ぶ線分の中間点と前記各々のロボットの原点とを結ぶ線分上の点を、前記各々のロボットが経由しなければならない経由点として設定し、前記ロボット通過領域と前記経由点を前記表示装置に表示させる、
ことを特徴とする請求項１０に記載の教示装置。
【請求項１５】
前記コンピュータは、前記経由点を経由して移動させるための新たな教示値を、各々のロボットについて生成し、
前記新たな教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出し、前記経由点とともに前記表示装置に表示させる、
ことを特徴とする請求項１４に記載の教示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のロボットが障害物を回避しつつ互いに衝突しないように動作を教示する教示方法、およびそれに用いる教示装置に関する。特に、複数台のロボットが共通の作業領域内で同時に作業する場合に、ロボット同士が干渉しない動作経路を生成して教示する方法および装置に関するものである。
【背景技術】
【０００２】
工場の生産ラインにおける組み立て・搬送・塗布といった作業では、産業用ロボットを用いて自動化が行われている。これらのロボットは、生産能力の向上や省スペース化のために、複数台のロボットが近接して配置され、共通の領域内で同時に作業を行う場合が多い。このような場合に、従来は、教示者がロボットの通過する経路や、各ロボットを動作させるタイミングを考え、ロボット間で干渉し合わないように試行錯誤的に教示していた。
【０００３】
しかし、この方法ではロボットの台数や作業の数が増加するほど、干渉のない軌道を見出すのが困難になり、教示作業に多大な労力と時間がかかるという問題点がある。また、生産ライン内の設備やロボットの配置に変更があると、その度に多大な労力と時間をかけて教示作業をやり直さねばならなかった。
【０００４】
そこで、ロボットが干渉を起こさない経路を、実空間で試行錯誤的に探索するのではなく、仮想空間で自動的に生成する技術が研究されている。例えば、ＲＲＴ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅ）やＰＲＭ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｒｏａｄ  ｍａｐ  Ｍｅｔｈｏｄ）等の経路生成アルゴリズムが知られている。この技術を用いれば、ロボットの動作の始点と終点を指定するだけで済むため、教示作業における教示者の負担を軽減することができる。また、生産ライン内の設備やロボットの配置の変更が発生しても、仮想空間上で計算するため、生産ラインを占有することなく、少ない時間で干渉を起こさない経路を再計算できる。
【０００５】
これらの技術は、単独のロボットについて、障害物と干渉を起こさない経路を生成する技術であるが、複数台のロボットを用いる場合についても、干渉を起こさせない方法が提案されている。
【０００６】
例えば、特許文献１には、インターロックを設けることでロボット間の干渉を回避する技術が開示されている。特許文献１に記載されているのは、複数のロボットを含むシステムにおいて、前記複数のロボットの各々の動作プログラムを編集することにより、複数のロボット間のインターロックを自動的に設定するインターロック自動設定装置である。ロボットが動作することによって掃引する領域について、複数のロボット同士で重複部分がないかを判定し、重複部分がある場合には、その出入り口にインターロックを設ける。各ロボットがインターロックを通過するタイミングを調整し、重複部分を通過する際にロボット同士が相互に干渉しないようにするものである。
【０００７】
また、非特許文献１には、ロボットの動作時の速度を調整することで、複数のロボット間で干渉が発生するのを回避する技術が開示されている。非特許文献１の軌道生成では、各ロボットの始点から終点までの経路を他のロボットが存在しないとみなして計算し、次に各ロボットの経路上の位置をパラメータとしたグラフを生成する。そして、生成したグラフ上で、干渉のない各ロボットの経路上の位置の組み合わせを探索し、最初に求めた経路と、各ロボットの経路上の位置の組み合わせを結合し、動作速度を調整しながら動作させ、互いに干渉しない軌道を得ている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１６４４１７号公報
【非特許文献１】G. Sanchez and J.-C. Latombe, “On delaying collision checking in PRM  planning: Application to multi-robot  coordination” International Journal of  Robotics Research, vol. 21, no. 1, pp. 5-26, 2002
【発明の概要】
【発明が解決しようとする課題】
【０００９】
まず、複数のロボットが通る領域を、教示者が実空間で検証して手作業で教示する場合には、教示者に高い技能が求められ、教示作業に多大な労力と時間を要することが課題である。
【００１０】
また、特許文献１や非特許文献１に開示された方法では、あらかじめ各ロボットの軌道を求めておいて、その後に動作時のロボット同士の干渉を検証し、干渉が生じる場合には動作のタイミングや速度を調整して干渉を防止しようとしている。しかしながら、他のロボットが通る領域を考慮しないで作成された軌道を用いているので、タイミングや速度の調整だけでは、干渉を回避する解が見出せない可能性がある。また、解が見出せたとしても、干渉を回避するために各ロボットの動作速度を低下させたり一時停止させたりするため、システム全体でみると、ロボットが全動作を完了するまでに要する時間が長くなる傾向がある。
【課題を解決するための手段】
【００１１】
本発明は、共通の作業領域を有するように配置された複数のロボットに、コンピュータを使って動作を教示する教示方法であって、教示すべき動作についての各ロボットの基準部位の始点、経由点、終点の位置情報を含む動作指令リストを、前記コンピュータが記憶する工程と、前記複数のロボットの動作範囲内にある障害物の位置および形状の情報を、前記コンピュータが記憶する工程と、前記コンピュータが、前記動作指令リスト及び前記障害物の位置および形状の情報に基づき、前記基準部位を前記始点から前記終点まで前記障害物を避けて移動させるための追加の経由点を各々のロボットについて独立に生成し、教示値として記憶する教示値生成工程と、前記コンピュータが、前記教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出して記憶するロボット通過領域算出工程と、前記コンピュータが、前記ロボット通過領域算出工程で算出した各ロボットの通過領域同士の交差の有無を検出する交差検出工程と、前記コンピュータが、前記交差検出工程で交差を検出した場合に、交差した領域内の少なくとも一部の空間を前記複数のロボットのいずれもが通過できなくする制約条件を設定し、前記動作指令リストまたは前記障害物の位置情報に追加する制約条件追加工程と、前記コンピュータが、前記制約条件追加工程後の前記動作指令リスト及び前記障害物の位置情報に基づき、前記基準部位を前記始点から前記終点まで前記障害物を避けて移動させるための教示値を、各々のロボットについて再生成する教示値再生成工程と、を有する、ことを特徴とする教示方法である。
【００１２】
また、本発明は、共通の作業領域を有するように配置された複数のロボットの軌道を仮想空間上で算出するコンピュータと、表示装置と、を有する教示装置において、前記コンピュータは、教示値に基づいて前記各ロボットの駆動部を動作させたときに各ロボットを構成する点が描く軌道の集合であるロボット通過領域を、各ロボットについて仮想空間上で算出し、各ロボットの通過領域同士の交差の有無を検出し、交差を検出した場合に、交差した領域内の少なくとも一部の空間に前記複数のロボットのいずれもが通過できなくする制約条件を設定し、前記ロボット通過領域と前記制約条件を前記表示装置に表示させる、ことを特徴とする教示装置である。
【発明の効果】
【００１３】
本発明は、共通の作業領域を有するように配置された複数のロボットに、動作タイミングを調整しなくても互いに干渉を起こさないように、動作を自動的に教示する方法を提供する。また、本発明は教示において設定した制約条件等をディスプレイに表示させ、作業者の教示作業を容易にする教示装置を提供する。
【図面の簡単な説明】
【００１４】
【図１】本発明の教示方法を実施する装置の構成図。
【図２】コンピュータ１０のブロック図。
【図３】動作を教示するロボットアームの例を示す図。
【図４】実施例１の教示方法の工程を示すフローチャート。
【図５】ロボットアームの始点、経由点、終点および障害物の例を示す図。
【図６】ロボット通過領域が交差する例を示す図。
【図７】仮想的に追加する障害物を示す図。
【図８】仮想的に障害物を追加した後に再生成した経路を示す図。
【図９】実施例２の教示方法の工程を示すフローチャート。
【図１０】追加する経由点を示す図。
【図１１】経由点を追加した後に再生成した経路を示す図。
【図１２】実施例３の教示方法の工程を示すフローチャート。
【図１３】実施例４の教示方法の工程を示すフローチャート。
【発明を実施するための形態】
【００１５】
共通の作業領域を有するように複数のロボットを配置した系において、コンピュータを使って各ロボットの動作を教示する本発明の教示方法について説明する。説明の便宜のため、用いる用語の意味を予め記載しておく。
【００１６】
（基準部位）
各ロボットに目的とする動作を教示する際に、予め位置を確定させる必要がある部位を指し、例えば各ロボットのハンド部分である。
（動作指令リスト）
教示しようとする一連の動作において、各ロボットの基準部位が取るべき始点、経由点、終点の位置情報を含むリストである。
（経路）
動作指令リストの始点から終点まで障害物を避けて基準部位を移動させる時に、基準部位が通る軌跡である。
（教示値）
障害物を避けるための、始点、経由点、終点などの教示点の集合である。
（駆動部）
ロボットを動作させる際に、駆動指示値に従って駆動される機構を指し、例えば、モータにより回転可能な関節機構や伸縮可能なアーム機構である。
【００１７】
（ロボット通過領域）
仮想空間上で、教示値に基づいてロボットの駆動部を駆動させた時に、ロボットを構成する各点が通過する仮想空間上の軌道の集合である。すなわち、ロボット通過領域とは、有体物であるロボットが教示値に従って動作する際の掃引空間（三次元的な軌跡の集合）を、仮想空間上で表現したものである。
【００１８】
（制約条件）
複数のロボットの通過領域同士が交差（空間的に重複）している場合に、交差が発生している領域内の少なくとも一部の空間を、いずれのロボットも通過できないようにするようにコンピュータが設定する条件である。
【００１９】
以下に、本発明の教示方法の態様について、具体的に説明する。
まず、教示装置であるコンピュータは、教示しようとする一連の動作において、各々のロボットの基準部位が取るべき始点、経由点、終点の位置情報を含んだ動作指令リストを記憶する。ここで、基準部位とは、ロボットが目的とする動作を行う際に、位置を確定させる必要がある部位を指し、典型的には各ロボットのハンド部分である。
また、教示装置であるコンピュータは、各ロボットの動作範囲内にある障害物の位置および形状の情報を記憶する。
【００２０】
動作指令リストと障害物の位置および形状の情報を記憶すると、コンピュータは、これらに基づき、各ロボットの基準部位を始点から終点まで障害物を避けて移動させるための経由点すなわち教示値を、各々のロボットについて独立に生成する。ここで、独立に生成するとは、他のロボットの経路との干渉を考慮しないで生成するという意味である。
【００２１】
経路とともに、基準部位を経路に沿って移動させるために、教示値に基づいて駆動部に与えるべき駆動指示値を、各々のロボットについて独立に生成する。ここで、駆動部とは、駆動指示値に従ってモータ駆動で回転する関節や、駆動指示値に従って伸縮するアームなど、ロボットを動作させる際に駆動する機構を指す。
【００２２】
次に、コンピュータは、教示値に基づいてロボットの駆動部を仮想空間上で駆動させた時に、ロボットを構成する各点が通過する仮想空間上での軌道の集合であるロボット通過領域を、各ロボットについて算出して記憶する。すなわち、ロボット通過領域とは、有体物であるロボットを教示値に従って仮想的に動作させた際の掃引空間（三次元的な軌跡の集合）であり、そのロボットを構成している点であれば、必ずロボット通過領域内を移動することになる。
【００２３】
次に、コンピュータは、記憶した各ロボットのロボット通過領域のデータを用いて、通過領域同士が交差（空間的に重複）していないかを計算により求める。
交差を検出しなかった場合には、そのまま教示値を採用する。
【００２４】
一方、交差を検出した場合には、コンピュータは、交差が発生した領域内の少なくとも一部に対して、いずれのロボットも通過できない制約条件を設定し、動作指令リストまたは障害物情報に制約条件を追加する。
【００２５】
本発明の一つの態様では、制約条件の追加は、ロボット通過領域が交差する領域内にコンピュータが仮想的な障害物を設定し、仮想的な障害物の位置および形状の情報をコンピュータが追加的に記憶することにより行う。
【００２６】
本発明の別の態様では、制約条件は、ロボット通過領域が交差する２点間を結ぶ線分の中間点と各ロボットの原点とを結ぶ線分上の点を、各ロボットの基準部位が始点から終点へ向かう途中で経由しなければならない経由点として、設定される。そして、制約条件の追加は、設定した経由点を、コンピュータが動作指令リストに追加して記憶することにより行う。
【００２７】
制約条件が追加された場合には、コンピュータは、追加後の動作指令リスト及び障害物の位置及び形態の情報に基づき、基準部位を始点から終点まで障害物を避けて移動させるための教示値を、各々のロボットについて再生成する。
本発明の教示方法によれば、ロボット同士の干渉を回避するために、各ロボットの動作タイミングの調整を行わなくともよい。
【００２８】
尚、ロボットが２台で平面的な動作しか行わないような単純な系であれば、再生成した教示値をそのまま採用すればよい。しかし、ロボットの台数が多かったり、三次元的な複雑な動作を含む系の場合には、再生成した教示値に基づいてロボット通過領域を再度算出し、ロボット通過領域同士が交差しないかを確認するのがよい。再生成した教示値で、新たな交差の発生が確認された場合には、コンピュータは、新たに交差が発生した領域内の少なくとも一部に対して、いずれのロボットも通過できない制約条件をさらに追加する。そして、追加後の動作指令リスト及び障害物の位置及び形態の情報に基づき、教示値を再生成する。
【００２９】
このように、コンピュータが、ロボット通過領域の交差の確認と教示値の再生成とを繰り返し行うことにより、複数のロボット同士が干渉しない教示値を自動的に生成することができる。
【実施例】
【００３０】
以下、本発明の実施例に係るロボットの教示方法および教示装置について、図面を用いて説明する。なお、教示方法が対象とするロボットは、モータ等の動力源によって動作し、制御されるものであれば何でもよい。例えば、多関節の機構を持つロボットや、平面上を移動するロボット等を含む。
【００３１】
（実施例１）
実施例では、回転関節を有するシリアルリンク型の２台のロボットアームに教示する例を説明する。
【００３２】
（教示装置の構成）
図１、図２は本発明の実施例１に係るロボット教示システムの構成を示している。図１は、ロボット教示システム全体の構成を示した図で、図２は教示方法を実施するコンピュータのブロック図である。
【００３３】
図１において、コンピュータ１０の一部である演算処理部１は、作業領域を共有して配置された複数のロボットの動作を制御するための教示値の生成を行う。詳細は後述するが、本実施例では、コンピュータ１０は、障害物を回避しながら２台のロボットアームが互いに干渉しないで動作できるような教示値を生成する。そのためのプログラムは、記憶媒体に記憶されており、コンピュータが実行する際に読出し可能である。
【００３４】
ここで、障害物とは、ロボットアームの動作範囲内に配置されたロボットアーム以外の物を指し、例えば部品供給装置、換気ダクト、あるいはロボットシステムの筐体など、実空間の作業領域中に配置されたあらゆる物体が含まれる。ロボットアームの動作をシミュレーションするためにコンピュータ１０が用いる仮想空間内には、実空間の障害物に対応した位置及び形状の障害物が配置される。仮想空間に配置する障害物のデータは、演算処理部１で生成してもよいし、ネットワークインターフェース３１を介して外部機器３２からコンピュータ１０に導入してもよい。
【００３５】
演算処理部１には、動作指令やデータ等を入力するための入力部として、キーボード１１、マウス１２（あるいはトラックパッドのようなポインティングデバイス）が接続されている。作業者は、キーボード１１、マウス１２などを用いて、ロボットアームの動作指令を入力する。本実施例では、作業者は、教示すべき作業動作について、ロボットアーム先端部のハンド部分の始点、経由点、終点の３次元座標のデータ等を動作指令として入力し、コンピュータ１０に記憶させる。
また、作業者が入力した動作指令や、それに基づき演算処理部１が生成したロボット通過領域や制約条件あるいは仮想的な障害物などを確認するための表示装置として、ディスプレイ１３が接続されている。
【００３６】
演算処理部１には、外部記憶装置１４と、ネットワークインターフェース３１などを接続することができる。図１の外部記憶装置１４は、主に外付けのＨＤＤやＳＳＤのようなディスク装置、あるいは各種の光ディスク装置などから構成される。ネットワークインターフェース３１は、実機のロボットアームに対して動作指令データなどを転送するために用いられる。
【００３７】
また、外部記憶装置１４、ネットワークインターフェース３１は、軌道生成プログラムを演算処理部１にインストールしたり、あるいはインストール済みの同プログラムを更新したりするためのインストール／更新手段として利用できる。その場合、例えば外部記憶装置１４は、メディア交換の可能な光ディスク装置などから構成することができる。本発明を実施するための制御プログラムは、上記の光ディスクを介して演算処理部１にインストールでき、またその更新が可能である。同様に、本発明を実施するための制御プログラムは、ネットワークインターフェース３１を介して、所定のネットワークプロトコルを利用して演算処理部１にインストールでき、またその更新が可能である。
【００３８】
なお、図１の教示装置は、教示の対象となる実機のロボットアームと接続されていてもよく、また、ロボットアームとの接続の無いオフライン環境においても教示値を生成することができるよう構成されている。オフライン環境における教示値生成では、ディスプレイ１３にプログラム対象であるロボットアームの３Ｄ仮想表示を行う。このような３Ｄ仮想表示ＧＵＩは、キーボード１１、マウス１２などを用いて、ディスプレイ１３上に仮想表示されたアームやその関節を操作できるよう構成することができる。
【００３９】
図２は、コンピュータ１０の構成の一例をブロック図として示している。図示のように、コンピュータ１０は、システムバス２９上に、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３（例えば演算処理部１の筐体内に内蔵のもの）などの各部を接続して構成されている。
【００４０】
外部記憶装置１４はインターフェース２８を介してシステムバス２９に接続されている。図２では、特に外部記憶装置１４を構成する部材として光ディスク装置を例示したが、このようなディスクデバイスは、図２では記録ディスクドライブ２４として示してある。記録ディスクドライブ２４は、各種の光ディスクなどフォーマットで構成された記録ディスク１５のデータを読み取り、あるいはさらに記録ディスク１５に対してデータを書き込むことができる。従って、記録ディスク１５は、例えば本発明を実施するための制御プログラムの入出力に利用できる。その場合、記録ディスク１５は同制御プログラムのコンピュータ読み取り可能な記録媒体を構成する。
【００４１】
図３は、動作を教示する対象のロボットを示す図で、共通の作業領域３０に配置された２台のロボットアームを示している。ロボットアーム５は、３つの回転関節５１、５２、５３を備え、またロボットアームの先端にはハンド５４を備えている。ロボットアーム６も同様に、３つの回転関節６１、６２、６３と、ハンド６４を備えている。ロボットアーム５の回転関節５１及びロボットアーム６の回転関節６１は、それぞれ作業領域３０の基台に固定されている。回転関節５１と回転関節６１が固定された基台上の位置を、それぞれのロボットアームの原点と呼ぶ。各ロボットアームは、回転関節を駆動させることによって図３の紙面方向に沿って動作する。
【００４２】
（教示方法）
以下、実施例１に係る教示方法について、図４乃至図８を用いて詳細に説明する。
図４は、教示方法の工程を示すフローチャートで、以下の６つの工程を含んでいる。Ｓ１００は動作指令準備工程、Ｓ１１０はロボットが障害物を回避するための教示値を生成する教示値生成工程、Ｓ１２０は仮想空間上でロボット通過領域を生成するロボット通過領域算出工程、Ｓ１３０はロボット通過領域の交差を検出する交差検出工程である。また、Ｓ１４０は制約条件として仮想的な障害物を追加する制約条件追加工程、Ｓ１５０は制約条件追加工程後にロボットが障害物を回避するための教示値を再生成する教示値再生成工程である。上記の６工程を含むプログラムは、演算処理部１のＲＯＭ２１に備えられている。
【００４３】
動作指令準備工程Ｓ１００では、まず教示値を生成するのに必要な情報である動作指令リストを教示者が入力する。動作指令とは、始点と終点、更に必要な場合には経由点の組み合わせから成る。動作指令は各ロボットに複数個割り当てることも可能である。
動作指令の与え方として、ロボットアームの基準となる点を定め（本実施例ではハンドの先端）、教示したい動作における基準点の位置の始点、経由点、終点の情報を与えればよい。
【００４４】
また、Ｓ１００では、２本のロボットアームの共通の作業領域３０の内に存在する障害物の位置と形状の情報を、コンピュータ１０に記憶させる。本実施例では、作業領域内に、２つの障害物１００と障害物１０１が存在するものとする。
【００４５】
図５に、ロボットアーム５およびロボットアーム６に作業を教示するために与えられた始点、経由点、終点を例示する。ロボットアーム５の基準部位はハンド５４の先端であるが、図５において、ａ１はその始点、ａ２は経由点、ａ３は終点である。これはロボットアーム５が始点ａ１から終点ａ２に移動し、その後、始点ａ２から終点ａ３に移動すると解釈することもできる。また、ロボットアーム６の基準部位はハンド６４の先端であるが、図５において、ｂ１はその始点、ｂ２は終点である。
【００４６】
ロボットアーム５に与えられた動作指令は以下の２つで、それぞれ動作指令Ｏａ１、Ｏａ２とする。
Ｏａ１  ＝  ｛  ａ１  ，  ａ２  ｝
Ｏａ２  ＝  ｛  ａ２  ，  ａ３  ｝
これは、ロボットアーム５が始点ａ１から終点ａ２に移動し、その後に始点ａ２から終点ａ３に移動することを意味する。
また、ロボットアーム６に与えられた動作指令は１つで、動作指令Ｏｂ１とする。
Ｏｂ１  ＝  ｛  ｂ１  ，  ｂ２  ｝
ロボットアーム６については、始点ｂ１から終点ｂ２に移動することを意味する。
【００４７】
教示値生成工程Ｓ１１０では、コンピュータ１０は、上記動作指令に基づき、障害物１００と障害物１０１を避けてロボットアームを移動させる際に必要となる経由点（教示値）を生成する。尚、コンピュータ１０には、各ロボットアームのリンク形状や長さ、各駆動部（関節）の可動範囲等、経路と教示値を生成する上で必要な情報は、予め記憶されている。
【００４８】
ここで、各ロボットアームの経路と教示値を生成する際には、他のロボットアームとの干渉は考慮せず、ロボットアーム毎に独立して生成する。即ち、他のロボットアームを障害物としては認識せずに生成を行う。
【００４９】
教示値生成工程Ｓ１１０は、詳しくは、経路計画、経路短縮、駆動値計算の３つのサブ工程を含む。
【００５０】
経路計画工程では、始点から終点まで向かう間の障害物を回避する経路を求める。経路を求めるには、ＲＲＴやＰＲＭといった公知の各種の手法により、自動で計算する方式を用いることができる。
【００５１】
経路短縮工程では、経路計画工程により生成された経路の修正を行う。経路計画工程でランダム探索を用いた方法を選択した場合、生成される経路が回り道をしていたり、角度変化が急になっていたりするため、経路の修正を行う必要がある。この経路短縮工程で、経路の短縮も、経路中の点同士で干渉なく結べる点を探す方法や、スプライン曲線で近似することにより経路を滑らかにする方法など多くの方法が考えられるが、ここではどのような方法を用いてもよい。
【００５２】
駆動値計算工程では、上記の経路計画／経路短縮工程によって生成された経路を、最短の時間で動作できるように、教示値に基づいてロボットアームの各駆動部（関節）の回転速度や加速度などを計算し、駆動部への指示値を生成する。他のロボットとの干渉については、ここでは考慮しないで生成する。
【００５３】
図６に、動作指令Ｏａ１、Ｏａ２、Ｏｂ１に基づいて生成された経路を、模式的に示す。
ロボットアーム５については、図６に示すように、基準部位であるハンドの先端が移動する経路ｒＴｒａ１が動作指令Ｏａ１に基づいて生成され、経路ｒＴｒａ２が動作指令Ｏａ２に基づいて生成される。また、ロボットアーム６については、基準部位であるハンドの先端が移動する経路ｒＴｒｂ１がＯｂ１に基づいて生成される。
【００５４】
次に、図４の工程Ｓ１２０において、コンピュータ１０は、教示値に基づいてロボットの駆動部を駆動させた時に、ロボットを構成する各点が通過する仮想空間上の軌道の集合（掃引空間）であるロボット通過領域を生成する。図６において、ロボットアーム５のロボット通過領域５００、及びロボットアーム６のロボット通過領域６００は、各々斜線を付した領域として模式的に示されている。コンピュータ１０は、図６に示す障害物や各ロボットアームのロボット通過領域等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００５５】
そして、図４の工程Ｓ１３０において、コンピュータ１０は、ロボットアーム５のロボット通過領域５００と、ロボットアーム６のロボット通過領域６００が、仮想空間上で交差（重複）していないかを計算により求め、判定する。
【００５６】
図６の例では、ロボット通過領域５００とロボット通過領域６００には交差（重複）部分があり、教示値生成工程Ｓ１１０で生成した教示値で各ロボットアームを駆動すれば、ロボットアーム同士が干渉することが判る。
【００５７】
ロボット通過領域同士の交差（重複）が検出されなかった場合、すなわち工程Ｓ１３０がＮｏ判定の場合には、コンピュータ１０は、すでに生成した教示値を採用し記憶する。しかし、図６の例のように交差（重複）が検出された場合、すなわち工程Ｓ１３０がＹｅｓ判定の場合には、制約条件を設定して、教示値を再生成する。コンピュータ１０は、設定した制約条件等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００５８】
実施例１ではロボット通過領域同士が交差（重複）する領域内の少なくとも一部に対して、いずれのロボットも通過できない仮想的な障害物の情報を制約条件として新たに生成して障害物情報に追加し（Ｓ１４０）、その条件で教示値を再生成する（Ｓ１５０）。コンピュータ１０は、制約条件として設定した仮想的な障害物の情報等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００５９】
具体的には、図６に示した通り、経路ｒＴｒａ１と経路ｒＴｒｂ１においてロボット通過領域５００とロボット通過領域６００は交差しているが、経路ｒＴｒａ２と経路ｒＴｒｂ１においては交差していない。
そこで、工程Ｓ１４０では、交差している経路ｒＴｒａ１と経路ｒＴｒｂ１について、仮想的な障害物の追加処理を行う。図７は、これを説明するための図である。まず、図７に示すように、経路ｒＴｒａ１と経路ｒＴｒｂ１におけるロボット通過領域の交点である点Ｉｎｔ１と点Ｉｎｔ２を計算する。次に、点Ｉｎｔ１と点Ｉｎｔ２を結ぶ線を計算し、これを新たな仮想的な障害物ｗ１として、障害物の情報に追加する。この例では、追加する仮想的な障害物は１つであるが、複数の箇所で交差していれば、複数の障害物が追加される。
【００６０】
そして、工程Ｓ１５０では、工程Ｓ１４０で追加された仮想的な障害物も回避するように経路を生成し直す。図８に、仮想的な障害物ｗ１が追加された状態で、経路生成をやり直した結果を示す。動作指令Ｏａ１に基づく経路は、当初はｒＴｒａ１であったが、障害物ｗ１が追加されたことにより、新たな経路Ｔｒａ１が生成された。また、動作指令Ｏｂ１に基づく経路ｒＴｒｂ１も、新たな経路Ｔｒｂ１が生成された。動作指令Ｏａ２に基づく経路ｒＴｒａ２に関しては、当初からロボットアーム６のロボット通過領域が交差していなかったため、経路は変化しないままである。コンピュータ１０は、図８に示す障害物、仮想的な障害物や、生成し直した経路に基づく各ロボットアームのロボット通過領域等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
コンピュータ１０は、新たに生成された経路に対応する経由点を、変更された教示値として記憶する。
【００６１】
以上により、ロボットアーム５の経路Ｔｒａ１と経路Ｔｒａ２、ロボットアーム６の経路Ｔｒｂ１と、それに対応する教示値が得られる。生成し直された経路および教示値は、他のロボットの動作を考慮したものであると言える。図８から明らかなように、互いのロボット通過領域は交差し合わないので、動作タイミングや速度調整といった制御を行うまでもなく、ロボットアームの干渉を防止できていることが分かる。
【００６２】
尚、実施例１においては、平面的に動作するロボットアームで説明したため、仮想的な障害物は線で表現された。しかし、三次元動作する多関節ロボット等では、追加するべき仮想的な障害物は、平面または立体で表現する必要が生じる場合がある。コンピュータ１０は、障害物、仮想的な障害物や、各ロボットアームのロボット通過領域等を、３次元的に表現された画像を用いてディスプレイ１３に表示させ、作業者の教示作業を容易にする。そうした場合には、物体の移動によって物体が通過した領域を求めることが可能な掃引空間の技術（Ｓｗｅｐｔ  Ｖｏｌｕｍｅ）を用いると良い。
【００６３】
掃引空間の技術を適用した場合には、一方のロボットアームについては経路に従ってロボットのリンクが掃引する領域を計算し、他方のロボットアームを経路に沿って動作させた時に、その領域に干渉するかを判定することが可能である。掃引した領域に干渉し始める点と、干渉しなくなる点の２つを計算することで、実施例１の場合と同様に、交点となる点Ｉｎｔ１とＩｎｔ２を３次元空間上で求めることができる。次に、３次元空間上の２点を含む平面または立体形状の仮想的な障害物を生成する。例えば、工程Ｓ１４０において、２点を結ぶ線分をロボットアームの高さ方向に拡張した平面を、追加する障害物として生成しても良い。あるいは、２点を結ぶ線分を軸とした円柱を、仮想的な障害物として生成してもよい。
以上のように、実施例１の教示方法は、３次元空間を移動するロボットの場合においても適用可能である。
【００６４】
（実施例２）
実施例２においても、図１、図２に示したロボット教示システムを用い、図３に示した回転関節を有するシリアルリンク型の２台のロボットアームに教示する。実施例１と説明が重複する部分については、ここでは省略する。
【００６５】
実施例１では、ロボット通過領域を求め、交差が検出された場合には、交差領域の少なくとも一部に仮想的な障害物を追加し、再度経路を生成することで、他のロボットアームと干渉しない経路および教示値を生成した。
これに対して、実施例２では、仮想的な障害物ではなく、ロボット通過領域の交差を回避するための経由点を追加的に設定することで、経路を修正する。ここで、経由点とはロボットアームが始点から終点へと動作するまでの間に通らなければならない点であり、経由点を適切な位置に配置することで、ロボットアームの経路を修正することが可能となる。
以下、経由点の追加方法を含む実施例２の教示方法について説明する。
【００６６】
図９は、実施例２に係る教示方法の工程を示すフローチャートで、以下の６つの工程を含んでいる。Ｓ１００は動作指令準備工程、Ｓ１１０はロボットが障害物を回避するための教示値を生成する教示値生成工程、Ｓ１２０は仮想空間上でロボット通過領域を生成するロボット通過領域算出工程、Ｓ１３０はロボット通過領域の交差を検出する交差検出工程である。また、Ｓ２４０は制約条件として経由点を追加する制約条件追加工程、Ｓ２５０は制約条件追加工程後にロボットが障害物を回避するための教示値を再生成する教示値再生成工程である。上記の６工程を含むプログラムは、演算処理部１のＲＯＭ２１に備えられている。
【００６７】
このうち、Ｓ１００乃至Ｓ１３０の工程は、実施例１と同様である。実施例２においても、実施例１と同様に、工程Ｓ１２０で図６のロボット通過領域を生成し、工程Ｓ１３０でロボット通過領域同士の交差（重複）を検出したものとする。
実施例１では、交差が検出されると、図４の工程Ｓ１４０において制約条件として仮想的な障害物を追加していたが、実施例２では、図９の工程Ｓ２４０において制約条件として経由点を追加する。
【００６８】
まず、図１０に示すように、経路ｒＴｒａ１と経路ｒＴｒｂ１のロボット通過領域が交差する点Ｉｎｔ１、Ｉｎｔ２から、点Ｉｎｔ１とＩｎｔ２を結ぶ線分の中間点であるＭ１を計算により求める。中間点Ｍ１は、図示のように線分を等分割する中点とするのが望ましいが、線分上の他の点であってもよい。そして、中間点Ｍ１とロボットアーム５の原点（回転関節５１が固定された基台上の位置）を結んだ線分をｌａとし、中間点Ｍ１とロボットアーム６の原点（回転関節６１が固定された基台上の位置）を結んだ線分をｌｂとする。線分ｌａとｌｂを任意の割合で分割した時の各線分上の点をＳａ１、Ｓｂ１とし、これらを再び経路を生成する際の経由点として追加する。コンピュータ１０は、図１０に示す障害物、ロボット通過領域が交差する点Ｉｎｔ１、Ｉｎｔ２、中間点Ｍ１や、経由点Ｓａ１、Ｓｂ１等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００６９】
線分ｌａとｌｂを分割する時の割合の設定の仕方には、様々な方法が考えられる。例えばＳａ１とＳｂ１の距離が、２つのロボットアームが動作するために最低限確保したいクリアランスよりも長くなるように、その割合を設定しても良い。また、経路ｒＴｒａ１とｒＴｒｂ１を動作する時の時間によって、その割合を設定しても良い。
【００７０】
経由点を追加することにより、ロボット通過領域が交差する空間に、複数のロボットのいずれもが通過できない制約条件を設定したことになる。経由点を追加した場合は、Ｓ１１０にて生成した教示値を変更する。ロボットアーム５に対しては、動作指令Ｏａ１を分割し、始点ａ１から経由点Ｓａ１まで向かう動作指令Ｏａ１−１と、経由点Ｓａ１から終点ａ２まで向かう動作指令Ｏａ１−２へ変更する。よってロボットアーム５に対する動作指令は、以下のようになる。
Ｏａ１−１  ＝  ｛  ａ１  ，  Ｓａ１  ｝  、Ｏａ１−２  ＝  ｛  Ｓａ１  ，  ａ２  ｝  、Ｏａ２  ＝  ｛  ａ２  ，  ａ３  ｝
同様に、ロボットアーム６に対する動作指令は、以下のようになる。
Ｏｂ１−１  ＝  ｛  ｂ１  ，  Ｓｂ１  ｝  、Ｏｂ１−２  ＝  ｛  Ｓｂ１  ，  ｂ２  ｝
図９のＳ２５０では、上記の変更された動作指令をもとに、教示値を再度生成する。
【００７１】
図１１は再生成された教示値に基づき、障害物１００と障害物１０１を避けて各ロボットアームを移動させる際の基準部位の経路を示す図である。当初の経路ｒＴｒａ１に対して、経由点Ｓａ１と通る経路Ｔｒａ１−１とＴｒａ１−２が生成され、経路ｒＴｒｂ１に対しても、経由点Ｓｂ１を通る経路Ｔｒｂ１−１とＴｒｂ１−２が生成される。以上により、各ロボットアームの経路と、それに対応する教示値が得られる。コンピュータ１０は、図１１に示す障害物、経由点、生成し直した経路に基づく各ロボットアームのロボット通過領域等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００７２】
実施例２のように、新たな経由点を追加する方法においても、各ロボットアーム同士が干渉しない経路を生成することが可能である。経由点を追加する方法では、経由点の追加する位置を任意に決めることができるので、経路の修正を意図的に行いやすいのが特徴である。これは、例えば、一方のロボットは短い動作時間で、他方のロボットは長い動作時間で動作させるといった調整も可能になるということである。
尚、実施例２においても、平面的に動作するロボットアームで説明したが、３次元空間を移動するロボットの場合にも適用可能である。
【００７３】
（実施例３）
実施例１においては、平面的に動作する２台のロボットアームの例で説明したが、３次元的に動作するロボットや、多数のロボットが作業領域を共有する場合には、図４のフローチャートでは、必ずしも十分でない場合がある。工程Ｓ１４０で、仮想的な障害物を追加して経路を再生成したとしても、再生成した経路についてロボット通過領域同士が交差しないとは限らない場合がありえる。
【００７４】
そこで、実施例３では、図１２のように変更した工程フローを用いる。すなわち、工程Ｓ１５０で仮想的な障害物を追加した条件で経路と教示値を再生成したら、そのまま終了するのではなく、工程Ｓ１２０に戻して再生成した教示値に基づくロボット通過領域を生成し、さらに工程Ｓ１３０で交差の有無を判定する。このように、フィードバックループを形成し、交差が検出されなくなるまで制約条件の追加と教示値の生成を再度実行して繰返すことにより、確実に交差のない経路と教示値を生成することが可能である。コンピュータ１０は、図１２の工程フローの各段階で、障害物、仮想的な障害物、ロボット通過領域等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００７５】
（実施例４）
実施例２においては、平面的に動作する２台のロボットアームの例で説明したが、３次元的に動作するロボットや、多数のロボットが作業領域を共有する場合には、図９のフローチャートでは、必ずしも十分でない場合がある。工程Ｓ２４０で、経由点を追加して経路を再生成したとしても、再生成した経路についてロボット通過領域同士が交差しないとは限らない場合がありえる。
【００７６】
そこで、実施例４では、図１３のように変更した工程フローを用いる。すなわち、工程Ｓ２５０で経由点が追加された条件で経路と教示値を再生成したら、そのまま終了するのではなく、工程Ｓ１２０に戻して再生成した教示値に基づくロボット通過領域を生成し、さらに工程Ｓ１３０で交差の有無を判定する。このように、フィードバックループを形成し、交差が検出されなくなるまで制約条件の追加と教示値の生成を再度実行して繰返すことにより、確実に交差のない経路と教示値を生成することが可能である。コンピュータ１０は、図１３の工程フローの各段階で、障害物、経由点、ロボット通過領域等をディスプレイ１３に表示させ、作業者の教示作業を容易にする。
【００７７】
（他の実施例）
本発明の実施は、上述した４つの実施例に限られるものではなく、適宜変更したり、組み合わせたりすることが可能である。例えば、共通の作業領域の形状、設置されたロボットの数、種類、設置位置等は、上記の例に限らない。また、教示値を生成するコンピュータの構成も、上記の例に限らない。
【００７８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７９】
１・・・演算処理部／５・・・ロボットアーム／６・・・ロボットアーム／１０・・・コンピュータ／１００・・・障害物／１０１・・・障害物／５００・・・ロボットアーム５のロボット通過領域／６００・・・ロボットアーム６のロボット通過領域／ａ１・・・始点／ａ２・・・経由点／ａ３・・・終点／ｂ１・・・始点／ｂ２・・・終点／ｒＴｒａ１、ｒＴｒａ２・・・ロボットアーム５の経路／ｒＴｒｂ１・・・ロボットアーム６の経路／ｗ１・・・仮想的な障害物／Ｔｒａ１・・・再生成したロボットアーム５の経路／Ｔｒｂ１・・・再生成したロボットアーム６の経路／Ｍ１・・・交差領域を結ぶ線分の中点／ｓａ１・・・ロボットアーム５の経路に追加された経由点／ｓｂ１・・・ロボットアーム６の経路に追加された経由点
【図１】
2018144223.tif 000003
【図２】
2018144223.tif 000004
【図３】
2018144223.tif 000005
【図４】
2018144223.tif 000006
【図５】
2018144223.tif 000007
【図６】
2018144223.tif 000008
【図７】
2018144223.tif 000009
【図８】
2018144223.tif 000010
【図９】
2018144223.tif 000011
【図１０】
2018144223.tif 000012
【図１１】
2018144223.tif 000013
【図１２】
2018144223.tif 000014
【図１３】
2018144223.tif 000015