(57)【要約】【課題】複数のロボットが協働して作業を行わせる場合に、インターロックの設定を手動で行う必要があり、時間と手間を要するという問題がある。【解決手段】本発明の一実施形態における作業支援装置は、所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定する特定部と、当該特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出する算出部と、当該干渉ステップにおいて、優先して作業させるロボットを決定する決定部と、当該決定部の決定結果に基づいて、当該衝突または接触を防止するためのインターロックを設定する設定部と、当該設定したインターロックに関する信号を通知する通知部を備える。【選択図】図９
2018020413.tif 000002
【特許請求の範囲】
【請求項１】
所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定する特定部と、
前記特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触の可能性があるステップを、干渉ステップとして算出する算出部と、
前記干渉ステップが複数ある場合に、前記所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定する決定部と、
前記決定部の決定結果に基づいて、前記衝突または接触を防止するためのインターロックを設定する設定部と、
前記設定したインターロックに関する信号を通知する通知部
を備える作業支援装置。
【請求項２】
前記決定部は、前記干渉ステップが複数ある場合に、前記複数の干渉ステップを少なくとも１つの干渉エリアとして設定し、前記所定の工程の完了に必要な時間が短くなるように、前記設定した干渉エリアにおいて優先して作業させるロボットを決定する
ことを特徴とする請求項１に記載の作業支援装置。
【請求項３】
前記決定部は、前記干渉ステップ以外のステップを含む前記干渉エリアを設定可能であることを特徴とする請求項２に記載の作業支援装置。
【請求項４】
前記決定部は、前記干渉ステップおよび前記干渉エリアが複数ある場合に、前記複数の干渉ステップおよび干渉エリアを少なくとも１つの分割エリアとして設定し、前記設定した分割エリアにおいて優先して作業させるロボットを決定することを特徴とする請求項２または３に記載の作業支援装置。
【請求項５】
前記決定部は、前記分割エリアの設定のパターンが複数存在する場合に、当該複数のパターンの分割エリアのうち、前記複数のロボットが衝突または接触せずに動作可能な時間が相対的に長い分割エリアを、実際に使用する分割エリアとして選択する
ことを特徴とする請求項４に記載の作業支援装置。
【請求項６】
前記決定部は、複数の分割エリアを設定する場合であって、当該分割エリアの設定のパターンが複数存在する場合に、当該複数の分割エリア間における前記ロボットの移動時間が相対的に長い分割エリアを、実際に使用する分割エリアとして選択する
ことを特徴とする請求項４または５に記載の作業支援装置。
【請求項７】
前記決定部は、前記所定の工程の完了に必要な時間が短くなるように、前記分割エリアにおいて優先して作業させるロボットを決定する
ことを特徴とする請求項４乃至６のいずれかに記載の作業支援装置。
【請求項８】
前記通知部は、前記複数のロボットの各々に対して、前記インターロックに関する信号を通知する
ことを特徴とする請求項１乃至５のいずれかに記載の作業支援装置。
【請求項９】
前記通知部は、さらに、前記複数のロボットの各々のステップに関する情報を座標軸とするグラフに、前記インターロックを示す領域をマッピングして通知する
ことを特徴とする請求項１乃至６のいずれかに記載の作業支援装置。
【請求項１０】
所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定し、
前記特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出し、
前記干渉ステップが複数ある場合に、前記所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定し、
前記決定部の決定結果に基づいて、前記衝突または接触を防止するためのインターロックを設定する設定し、
前記設定したインターロックに関する情報を通知する
ことを特徴とする作業支援方法。
【請求項１１】
所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定する機能と、
前記特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出する機能と、
前記干渉ステップが複数ある場合に、前記所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定する機能と、
前記決定部の決定結果に基づいて、前記衝突または接触を防止するためのインターロックを設定する機能と、
前記設定したインターロックに関する情報を通知する機能と
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作業支援装置、作業支援方法およびプログラムに関し、特に複数のロボットに協働して作業を行わせるための作業支援に関する。
【背景技術】
【０００２】
自動車等の生産は、ロボットを用いた自動化が実現されている。自動車等の生産においては、複数のロボットが同時に用いられることが一般的であり、そのようなロボット同士が干渉ないし衝突することを防止するために、インターロックが設けられている。特許文献１には、複数のロボットの相互動作を、所定の動作行程または動作時間毎の組み合わせにより干渉の有無を確認し、干渉が発生する箇所にインターロックを設けることが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１０３４８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術では、干渉が発生する箇所（干渉領域）の各々にインターロックを設けるだけであるため、各干渉領域において優先して動作するロボットの選択方法によっては、作業全体の処理時間が長くなる恐れがある。
【０００５】
本発明の目的は、上記問題に鑑み、複数のロボットが協働して作業する場合において、作業全体の処理時間を短くすることが可能な作業支援装置、作業支援方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一実施形態における作業支援装置は、所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定する特定部と、当該特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触の可能性があるステップを、干渉ステップとして算出する算出部と、当該干渉ステップが複数ある場合に、当該所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定する決定部と、当該決定部の決定結果に基づいて、当該衝突または干渉を防止するためのインターロックを設定する設定部と、当該設定したインターロックに関する信号を通知する通知部を備える。
【０００７】
本発明の一実施形態における作業支援方法は、所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定し、当該特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出し、当該干渉ステップが複数ある場合に、当該所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定し、当該決定部の決定結果に基づいて、当該衝突または接触を防止するためのインターロックを設定する設定し、当該設定したインターロックに関する情報を通知することを特徴とする。  
【０００８】
本発明の一実施形態におけるプログラムは、所定の工程を協働して遂行する複数のロボットの各々の作業を、所定の単位ごとにステップとして特定する機能と、当該特定されたステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出する機能と、当該干渉ステップが複数ある場合に、当該所定の工程の完了に必要な時間が短くなるように、複数の当該干渉ステップの各々において優先して作業させるロボットを決定する機能と、当該決定部の決定結果に基づいて、当該衝突または接触を防止するためのインターロックを設定する機能と、当該設定したインターロックに関する情報を通知する機能とをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、協働して作業する複数のロボットに対するインターロックの設定を自動的で実行することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係るティーチングシステムの概要を模式的に示す図である。
【図２】図２は、第１の実施形態に係るロボット同士の衝突または接触を示す図である。
【図３】図３は、第１の実施形態に係る２つのロボットについて、干渉を解析する際の組み合わせの数を説明する図である。
【図４】図４は、第１の実施形態に係るティーチング装置の機能構成を模式的に示す図である。
【図５】図５は、第１の実施形態に係る記憶部が格納する情報のデータ構造を模式的に示す図である。
【図６】図６は、第１の実施形態に係る５つのロボットとその軌跡とを示す図である。
【図７】図７は、第１の実施形態に係る２つの異なるロボットの軌跡の一例を示す図である。
【図８】図８は、第１の実施形態に係る算出部によるロボット間の衝突または接触の解析を説明する模式図である。
【図９】図９は、第１の実施形態に係る干渉ステップを説明するための模式図である。
【図１０】図１０は、第１の実施形態に係る干渉エリアを説明するための模式図である。
【図１１】図１１は、第１の実施形態に係るティーチング装置が実行するプログラム作成支援処理の流れを説明するフローチャートである。
【図１２】図１２は、第１の実施形態に係る取得部が実行する軌跡取得工程の流れを説明するフローチャートである。
【図１３】図１３は、第１の実施形態に係る算出部が実行する解析工程の流れを説明するフローチャートである。
【図１４】図１４は、第１の実施形態に係る決定部が実行する決定工程の流れを説明するフローチャートである。
【図１５】図１５は、第２の実施形態に係る分割エリアを説明するための模式図である。
【図１６】図１６は、第２の実施形態に係る１系統の場合の分割エリアを説明するための模式図である。
【図１７】図１７は、第２の実施形態に係る２系統の場合の分割エリアを説明するための模式図である。
【図１８】図１８は、第２の実施形態に係る決定部が実行する決定工程の流れを説明するフローチャートである。
【発明を実施するための形態】
【００１１】
本発明に係る実施形態について、図面を参照して説明する。なお、実施形態は一例であり、これに限定されるものではない。
【００１２】
＜第１の実施形態＞
第１の実施形態に記載の内容は、後述する実施形態のいずれにも適用可能である。
【００１３】
図１は、第１の実施形態に係るシステム１の概要を模式的に示す図である。図１に示すように、システム１は、ティーチング装置１００と、表示装置１０２と、ロボット２００とを含む。
【００１４】
ロボット２００は、他のロボット２００と協働して作業するロボットである。ロボット２００は、所定の工程を他のロボット２００と協働して遂行する。図１に示すように、ロボット２００は、例えば、自動車の車体の組み立て等に用いられる産業用ロボットである。なお、ロボット２００は、産業用ロボットに限られず、協働して作業するロボットであれば、どのようなロボットでもよい。
【００１５】
ロボット２００は、作業を所定の単位ごとに特定したステップごとに、作業を実行する。なお、１つのステップには複数の作業が含まれていてもよいし、１つの作業が含まれていてもよい。
【００１６】
図１に示すように、ロボット２００は、例えば、１回の工程において、第１ステップ１０ａから第７ステップ１０ｇまでの７つのステップを実行する。以下、特に区別する場合を除き、各ステップを「ステップ１０」と総称する。ロボット２００は、例えば、１回の工程において、各ステップ１０を結ぶ領域を移動する。以下、ロボット２００が移動する領域を「軌跡１２」と記載する。なお、軌跡１２は３次元空間上の線分ではなく、ロボット２００が作業空間を移動する際にロボット２００が掃く（スウィープ（sweep）する）空間を意味する。
【００１７】
ロボット２００は、例えば、当該ロボット２００の動作を制御する制御プログラムによる制御の下で動作する。制御プログラムは、ロボット２００に対して、当該ロボット２００の移動や停止を実行させるためのプログラムである。制御プログラムは、複数のロボット２００の各々に対して設定されていてもよいし、複数のロボット２００に対して設定されていてもよい。
【００１８】
制御プログラムは、ロボット２００が動作する際に参照する、１または複数のステップ情報が含まれる。ステップ情報は、所定の単位ごとに特定したステップを実行するために必要な情報である。ステップ情報は、例えば、ロボット２００が作業を実行するために停止または移動する空間上の位置情報である。ステップ情報は、例えば、ロボット２００の移動の単位となる情報であってもよい。ステップ情報は、ロボット２００が各ステップ１０間を移動する際の、速度や移動方向を含んでいてもよい。
【００１９】
位置情報は、例えば、ロボット２００の基準位置からの相対的な位置座標である。位置情報は、例えば、ロボット２００が有するアームの先端部の位置座標である。位置情報は、基準位置からの相対的な位置座標に限らず、予め定められた座標におけるロボット２００の位置を示すものであってもよい。また、位置情報は、例えば、緯度や経度などの絶対的な位置座標であってもよい。その他、ロボット２００の停止や移動を決定可能であれば、どのような座標であってもよい。
【００２０】
なお、制御プログラムは、例えば、一のロボット２００が、後述するインターロック領域に進入する際に、他のロボット２００に対して発信する「進入前信号」（待機信号）の発信命令を含んでいてもよい。また、制御プログラムは、ロボット２００がインターロック領域を脱出した後に、他のロボットに対して発信する「待避後信号」（干渉外信号）の発信命令を含んでいてもよい。
【００２１】
ティーチング装置１００は、ロボット２００に対して、制御プログラムを設定する装置である。また、ティーチング装置１００は、複数のロボット２００の制御プログラムに基づいて、必要となるインターロックを設定する装置である。なお、インターロックは、ロボット２００同士の衝突や接触を防止するための制御や指令である。
【００２２】
また、ティーチング装置１００は、さらに、探索したインターロックの前後においてロボット２００が適切に待避動作をするためのプログラムが実装されているか否かを確認してもよい。これにより、ティーチング装置１００は、ユーザが制御プログラムを作成することを支援することができる。このように、ティーチング装置１００は、ロボットの制御プログラムの作成支援装置として機能してもよい。
【００２３】
ティーチング装置１００は、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出する。
【００２４】
表示装置１０２は、ティーチング装置１００の計算結果等の情報をユーザに通知するための装置である。表示装置１０２は、例えば、液晶モニタや有機ＥＬモニタ等で実現できる。
【００２５】
図２は、ロボット２００同士の衝突または接触を示す図である。図２に示す例では、第１ロボット２００ａおよび第２ロボット２００ｂと、各ロボット２００の軌跡である第１軌跡１２ａおよび第２軌跡１２ｂとが示されている。図２において、第１ロボット２００ａの第１ステップ１０ａと、第２ロボット２００ｂの第７ステップ１０ｄとの距離がＬであり、Ｌが所定の距離ＬＴ未満であることを示している。
【００２６】
ここで、所定の「距離ＬＴ」とは、ある二つのロボット２００が干渉する可能性があるか否かを判定するための基準閾値となる距離である。一のロボット２００が通るステップ１０と、他のロボット２００が通るステップ１０との距離Ｌが距離ＬＴ未満の場合、ティーチング装置１００はそれらのロボット２００が干渉する可能性があると判断する。干渉は、ロボットどうしが衝突または接触することである。接触距離ＬＴは、作業に用いるロボット２００の大きさや軌跡１２の複雑さ、製品の形状等を考慮して、例えば、シミュレーションや実験により定めることができる。
【００２７】
図２において、第１ロボット２００ａによる第１ステップ１０ａから第２ステップ１０ｂに至るまでの第１軌跡１２ａと、第２ロボット２００ｂによる第６ステップ１０ｃから第７ステップ１０ｄに至るまでの第２軌跡１２ｂとは、交差している。図２において、第１軌跡１２ａと第２軌跡１２ｂとによって囲まれる領域（斜線の領域）は、第１ロボット２００ａと第２ロボット２００ｂとが衝突または接触する恐れがある領域である。このような領域を「干渉領域１４」と記載する。なお、前述のとおり、軌跡１２は３次元的な広がりを持つ領域であってもよく、干渉領域１４は３次元空間となる場合もある。
【００２８】
第１ロボット２００ａの第１軌跡１２ａと第２ロボット２００ｂの第２軌跡１２ｂとが交差していても、第１ロボット２００ａと第２ロボット２００ｂとが正常に動作している場合、両者は干渉領域１４で衝突しない場合もあり得る。例えば、通常の工程において第１ロボット２００ａが第１ステップ１０ａから第２ステップ１０ｂに至るまで移動する時刻が、第２ロボット２００ｂが第６ステップ１０ｃから第７ステップ１０ｄに至るまで移動する時刻よりも早ければ、両者は干渉領域１４で衝突しない。
【００２９】
しかし、第１ロボット２００ａが干渉領域１４を移動中に何らかの理由で停止したり、速度が低下したりすることも起こりうる。この様な場合には、干渉領域１４において第１ロボット２００ａと第２ロボット２００ｂとが衝突または接触してしまう可能性がある。そこで、ティーチング装置１００は、ロボット２００が軌跡１２において各ステップ１０を通る時刻を考慮せずに、異なる２つのロボットが通りうる２つの軌跡１２が交差する場合には、当該交差する領域を干渉領域１４としてもよい。なお、ティーチング装置１００は、ロボット２００が軌跡１２において各ステップ１０を通る時刻を考慮して、干渉領域１４を設定してもよい。
【００３０】
ロボット２００の各々は、干渉領域１４に進入する前に「侵入前信号」（待機信号）を対となるロボット２００に送信し、干渉領域１４を脱出した後に「待避後信号」（干渉外信号）を対となるロボット２００に送信する。例えば、図２において、第１ロボット２００ａが第１ステップ１０ａにあるときに、「進入前信号」（待機信号）を第２ロボット２００ｂに送信する。その後、第１ロボット２００ａは、干渉領域１４を脱出して第２ステップ１０ｂに到達すると、「待避後信号」（干渉外信号）を第２ロボット２００ｂに送信する。
【００３１】
第２ロボット２００ｂは、第１ロボット２００ａから進入前信号を受信した後は、「待避後信号」（干渉外信号）を受信するまでは、第６ステップ１０ｃ以降のステップには進まずに待機する。なお、第２ロボット２００ｂが第６ステップより前のステップにいるときは、第１ロボット２００ａとの衝突の恐れはないため、作業を継続する。第２ロボット２００ｂは、第１ロボット２００ａから「待避後信号」（干渉外信号）を受信した後に、第７ステップ１０ｄに進む。これにより、第１ロボット２００ａと第２ロボット２００ｂとが干渉領域１４で衝突または接触することを抑制できる。
【００３２】
なお、ティーチング装置１００は、第１ロボット２００ａと第２ロボット２００ｂとのどちらが先に干渉領域１４に進入するかについて、予め設定する。ティーチング装置１００は、第１ロボット２００ａおよび第２ロボット２００ｂのいずれか一方に対して、先に干渉領域１４に進入可能であることを示す情報である「優先情報」を通知する。すなわち、優先情報をもつロボット２００が、優先情報を持たないロボット２００に対して、「進入前信号」（待機信号）と「待避後信号」（干渉外信号）とを送信するように、制御プログラムが組まれる。
【００３３】
続いて、実施の形態に係るティーチング装置１００による、制御プログラムのインターロックの設定支援処理について説明する。
【００３４】
ティーチング装置１００は、協働して作業する複数のロボット２００のうち、異なる２つのロボット２００の組み合わせ全てについて、干渉および接触を解析する。ひとつのロボット２００が複数の制御プログラムで実行される場合には、それによってロボット２００が動きうる軌跡の全ての組み合わせについて、ティーチング装置１００は衝突または接触を解析する。
【００３５】
例えば、各ロボット２００には管理用の制御プログラムが存在する。管理用のプログラムとは、例えばロボット２００の基準位置を設定するための「原点プログラム」、ロボット２００を待避させるための「保全プログラム」、ロボット２００自体または一部の部品を交換するために移動させる「交換プログラム」である。また、ひとつの生産ラインで複数種類の製品を生産する場合には、製品の種類に応じた制御プログラムが存在する。仮に、ひとつの生産ラインで４種類の製品を生産する場合には、４種類の生産用制御プログラムが存在することになる。この場合、ひとつのロボット２００は、計７つの制御プログラムによって動作し、７種類の軌跡１２を描くことになる。
【００３６】
図３（ａ）−（ｂ）は、２つのロボット２００について衝突の有無を解析する際の組み合わせ数を説明する図である。より具体的に、図３（ａ）は、３種類の管理用制御プログラムと、４種類の生産用制御プログラムが存在する場合の組み合わせを示す図である。図３（ａ）に示すように、第１ロボット２００ａが製品Ａを生産するときには、第２ロボット２００ｂも製品Ａを生産する。一方、第１ロボット２００ａがいずれの制御プログラムで動作していても、第２ロボット２００ｂが管理用制御プログラムで動作する可能性がある。その逆も同様である。したがって、２つのロボット２００について制御プログラムの組み合わせは３７通りとなる。なお、図３（ａ）中考え得る組み合わせは「○」で示している。
【００３７】
いま、生産ライン上に１２台のロボット２００が存在すると仮定すると、１２台のロボット２００の中から２つの異なるロボット２００を選ぶ組み合わせは１２×１１／２＝６６通りとなる。このため、全ての制御プログラムの組み合わせは、３７×６６＝２４４２通りとなる。さらに、製品を生産するための工程が５工程あったと仮定すると、同一工程における制御プログラムの組み合わせは２４４２×５＝１２２１０通りとなる。
【００３８】
図３（ｂ）は、工程間の組み合わせを説明する図である。上述のとおり製品を生産するための工程が５工程ある場合、工程間の組み合わせは、（工程１、工程２）、（工程２、工程３）、（工程３、工程４）、および（工程４、工程５）の４通りとなる。すなわち、全工程数から同一工程の組み合わせを除いた数となる。異なる工程においては、第１ロボット２００ａと第２ロボット２００ｂとが異なる製品を生産する場合もあるため、図３（ｂ）に示すように、２台のロボット２００における制御プログラムの組み合わせは４９通りとなる。したがって工程間における制御プログラムの組み合わせは、ロボット２００の組み合わせ数（６６）×工程の組み合わせ（４）×２台のロボットにおける制御プログラムの組み合わせ（４９）＝１２９３６通りとなる。
【００３９】
同一工程における制御プログラムの組み合わせ数と工程間における制御プログラムの組み合わせ数とは合計で２．５万通りの組み合わせとなる。仮に１つの制御プログラムの組み合わせについて計算機による衝突または接触の解析が仮に１０秒で終了したとしても、全ての組み合わせを解析するためにはおよそ７０時間を要し現実的ではない。このため実施の形態に係るティーチング装置１００は、衝突または接触を解析するために高速化の工夫を実装している。以下、ティーチング装置１００についてより詳細に説明する。
【００４０】
図４は、実施の形態に係るティーチング装置１００の機能構成を模式的に示す図である。ティーチング装置１００は、特定部１１０、算出部１２０、決定部１３０、設定部１４０、通知部１５０、取得部１６０、記憶部１７０、を備える。
【００４１】
図４は、実施の形態に係るティーチング装置１００が実行するインターロックの設定支援処理を実現するための機能構成を示しており、他の構成は省略している。図４において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メインメモリ、その他のＬＳＩ（Large Scale Integration）で構成することができる。またソフトウェア的には、メインメモリにロードされた設定支援プログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。限定はしないが、一例として、ティーチング装置１００は、ＰＣ（Personal Computer）、メインフレーム、ワークステーション、クラウドコンピューティングシステム等、種々の計算リソースを用いて実現できる。
【００４２】
図４に示すティーチング装置１００の各機能部をソフトウェアにより実現する場合、ティーチング装置１００は、各機能を実現するソフトウェアであるプログラムの命令を実行することで実現される。このプログラムを格納する記録媒体は、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、このプログラムは、当該検索プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。本発明は、上記検索プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００４３】
記憶部１７０は、ティーチング装置１００が解析の対象とする複数のロボット２００それぞれについて、ロボット２００の外形を表す形状データとそのロボット２００を動作させる制御プログラムとを記憶する。
【００４４】
図５は、記憶部１７０が格納する情報のデータ構造を模式的に示す図である。図５に示すように、ティーチング装置１００が解析の対象とする複数のロボット２００の各々は、ロボット２００を一意に特定するためのロボット識別子が割り当てられている。ロボット識別子の割り当ては、例えば複数のロボット２００にあらかじめ通し番号を付与することで実現できる。図５に示すように、ロボット識別子と、そのロボット識別子で識別されるロボット２００の形状データ、およびそのロボット２００の動作制御に用いる１以上の制御プログラムが対応づけられて格納されている。
【００４５】
特定部１１０は、所定の工程を協働して遂行する複数のロボット２００の各々の作業を、所定の単位ごとにステップとして特定する。
【００４６】
まず、特定部１１０は、解析の対象とする複数のロボット２００各々について、作業において移動する軌跡を取得する。より具体的には、特定部１１０は、複数のロボット２００のうちひとつのロボット２００を特定するためのロボット識別子を選択する。続いて特定部１１０は、選択したロボット識別子で特定されるロボット２００の動作を制御するための制御プログラムを、記憶部１７０から読み出す。
【００４７】
次に、特定部１１０は、読み出した制御プログラムをもとにシミュレーションを実行し、各制御プログラムを実行した場合にロボット２００が移動するステップ１０の位置座標を取得する。これにより、特定部１１０は、全てのロボット２００について、各ロボット２００に割り当てられた制御プログラムを実行した場合に移動しうる軌跡を、ステップ１０の単位で離散的に取得する。
【００４８】
図６は、５つのロボット２００とその軌跡１２とを示す図である。より具体的には、図６は、第１ロボット２００ａから第５ロボット２００ｅまでの５つのロボット２００と、それぞれ対応する第１軌跡１２ａから第５軌跡１２ｅとを示している。なお、第１軌跡１２ａから第５軌跡１２ｅの各軌跡１２は破線で示している。煩雑となることを避けるため図中符号を付していないが、各軌跡１２上に存在する黒丸は、特定部１１０が取得したステップ１０の位置を示している。
【００４９】
算出部１２０は、特定部１１０が特定したステップのうち、少なくとも２つのロボット同士の衝突または接触があるステップを、干渉ステップとして算出する。
【００５０】
まず、算出部１２０は、複数のロボット２００の中から異なる２つのロボット２００の組を取得する。算出部１２０は、特定部１１０が取得した軌跡１２をもとに、組となる２つのロボットがそれぞれ取り得る軌跡の中から、１対の軌跡１２の組を取得する。同一のロボット２００であっても、制御プログラムが異なれば異なる軌跡を描くため、算出部１２０は制御プログラム毎に解析を実行する。
【００５１】
次に、算出部１２０は、取得した１対の軌跡１２の組に含まれるステップ１０同士が、上述した距離ＬＴ未満にあるか否かを比較する。これの比較は、シミュレーション空間上に離散的に存在する２点間の距離求めて距離ＬＴと比較する処理であるため、計算量は少ない。このため、算出部１２０はこの比較処理を高速に実行することができる。以下本明細書において、算出部１２０が実行するステップ１０同士と距離ＬＴとの比較処理を、点の位置（ポジション；position）をもとにする確認処理であるため、「ポジションチェック」と記載することがある。
【００５２】
図７は、２つの異なるロボット２００の軌跡の一例を示す図であり、より具体的には、図６における第３ロボット２００ｃの軌跡１２ｃと、第５ロボット２００ｅの軌跡１２ｄとを示す図である。図７に示すように、軌跡１２ｃと軌跡１２ｄとは離れており、これらの軌跡１２の間には干渉領域１４は存在しない。算出部１２０は、全てのロボット２００の組み合わせにおける全ての制御プログラムの組み合わせを解析し、軌跡１２のポジションチェックを総当たりで実行する。これにより、算出部１２０は干渉しないことが明らかな軌跡１２の組み合わせを迅速に除去することができる。ゆえに、算出部１２０は、ロボット２００間の衝突または接触の解析の高速化、解析時間の短縮化を実現できる。
【００５３】
算出部１２０は、複数のロボット２００のそれぞれについてポジションチェックを実行し、ロボット２００が描く軌跡１２のうちステップ１０同士の距離が距離ＬＴ未満となる場合、２つのロボット２００同士の衝突または接触の可能性がある組と判定する。算出部１２０は、さらに、衝突または接触の可能性がある組を判定した場合、所定の距離以下となるステップと、その前のステップまたは後ろのステップとの少なくともいずれか一方のステップとを結ぶ軌跡１２を解析し、ロボット２００同士が衝突または接触するか否かを解析する。
【００５４】
図８（ａ）−（ｂ）は、算出部１２０によるロボット２００間の衝突または接触の解析を説明する模式図である。図８（ａ）は、第１ステップ１０ａから第２ステップ１０ｂに至るまでの第１軌跡１２ａと、第３ステップ１０ｃから第４ステップ１０ｄに至るまでの第２軌跡１２ｂと２を図示している。図８（ａ）に示す例では、第１ステップ１０ａと第３ステップ１０ｃとの間の距離Ｌが、距離ＬＴ未満となっている。そこで算出部１２０は、少なくとも第１軌跡１２ａと第２軌跡１２ｂとは「接触」であると判定する。第１軌跡１２ａと第２軌跡１２ｂとが少なくとも接触すると判定した場合、算出部１２０は、第１軌跡１２ａにおける第１ステップ１０ａから第２ステップ１０ｂに至るまでの第１軌跡１２ａ、および第３ステップ１０ｃから第４ステップ１０ｄに至るまでの第２軌跡１２ｂについて、単位時間毎に衝突があるか否かを解析する。
【００５５】
図８（ｂ）は、第１軌跡１２ａと第２軌跡１２ｂとにおける、単位時間毎の解析箇所を示す模式図である。ここで「単位時間」とは、算出部１２０が接触判定のあった軌跡１２の組を詳細に解析する際のサンプリングレートである。単位時間はロボット２００の数や工程数、軌跡１２の距離等を考慮して実験により定めればよいが、例えば０．０２秒である。
【００５６】
上述したように、制御プログラムが有するステップ情報には、ロボット２００が各ステップ１０間を移動する際の速度や移動方向等の補助情報も含まれる。算出部１２０は、この補助情報とサンプリングレートとを用いて、単位時間毎にロボット２００の存在位置を計算により取得する。図８（ｂ）において、白い丸は第１軌跡１２ａにおける単位時間毎のロボット２００の位置を示し、斜線で示す丸は第２軌跡１２ｂにおける単位時間毎のロボット２００の位置を示す。図８（ｂ）より、算出部１２０は第１軌跡１２ａと第２軌跡１２ｂとが交差すること、すなわちロボット２００同士が衝突する可能性があることが判定できる。以下本明細書において、算出部１２０による補助情報とサンプリングレートとを用いた軌跡１２の解析を、軌跡チェックと記載することがある。
【００５７】
このように、算出部１２０は離散的なポジションチェックを実行することで交差しないことが明白な軌跡１２の組み合わせを迅速に除去し、接触している軌跡１２の組についてのみ詳細な軌跡チェックを実行する。これにより、算出部１２０は衝突解析の迅速化と精度向上とを達成することができる。
【００５８】
決定部１３０は、算出部１２０が算出した干渉ステップにおいて、優先して作業させるロボット２００を決定する。決定部１３０は、干渉ステップが複数ある場合に、所定の工程を完了させるために必要な時間が短くなるように、複数の干渉ステップの各々において優先して作業させるロボット２００を決定する。所定の工程は、例えば、複数のロボット２００が協働して実行する作業全体のことである。
【００５９】
設定部１４０は、決定部１３０の決定結果をもとに、少なくとも２つのロボット２００同士の衝突または接触を防止するためのインターロックを設定する。設定部１４０は、決定部１３０が干渉エリアとして複数の組み合わせを設定した場合、当該複数の組み合わせのうち、所定の工程を完了させるために必要な時間が短くなる組み合わせに基づいて、衝突または接触を防止するためのインターロックを設定してもよい。
【００６０】
通知部１５０は、設定部１４０が設定したインターロックの設定に関する情報を通知する。通知部１５０は、例えば、複数のロボット２００の各々に対して、インターロックの設定に関する信号を通知する。複数のロボット２００の各々は、通知されたインターロックの設定に関する信号に基づいて動作する。また、通知部１５０は、例えば、ユーザに対して、設定部１４０が設定したインターロックを示す領域を図示するための情報を通知してもよい。
【００６１】
図９は、実施形態１における干渉ステップ２０を説明するための模式図である。図９に示す画像は、組とする２つのロボット２００のうち一方のロボット２００のステップ情報を第１座標軸、第１座標軸と非平行であり他方のロボット２００のステップ情報を第２座標軸とするグラフに、インターロックを示すインターロック領域をマッピングした図である。
【００６２】
より具体的に、図９に示すグラフは、第１ロボット２００ａを制御する制御プログラム００１によるステップ情報を横軸、第２ロボット２００ｂを制御する制御プログラム００３のステップ情報を縦軸とするマトリクスに、干渉ステップ２０をマッピングして示している。なお、干渉ステップ２０は、インターロックの設定を行うインターロック領域でもある。
【００６３】
図９に示す例では、第１ロボット２００ａの第２ステップと、第２ロボット２００ｂの第２ステップとが干渉ステップとなる。同様にして、図９に示すマトリクスのうち斜線でしめす領域が、干渉ステップであることを示している。
【００６４】
設定部１４０は、図９のマトリクス上に示される干渉ステップの各々に対して、インターロックの設定を行う。なお、設定部１４０は、干渉ステップ２０の周囲を含めて、インターロックの設定をおこなってもよい。
【００６５】
本発明の実施形態１において、決定部１３０は、干渉ステップ２０が複数ある場合に、複数の干渉ステップ２０のうちの少なくとも２つの干渉ステップ２０を干渉エリア２１として設定し、設定した干渉エリア２１において優先して作業させるロボットを決定させる。
【００６６】
決定部１３０は、複数の干渉ステップ２０を１つの干渉エリア２１として設定し、設定した干渉エリア２１において優先して作業させるロボットを決定する。なお、その場合において、決定部１３０は、干渉ステップ２０ではない領域を含んだエリアを、干渉エリア２１として設定してもよい。
【００６７】
図１０は、実施形態１における干渉エリア２１を説明するための模式図である。図１０に示す例では、第１ロボット２００ａの第１０乃至第１１ステップと、第２ロボット２００ｂの第９乃至第１０ステップで囲まれたエリアが、干渉エリア２１となる。また、第１ロボット２００ａの第５乃至第７ステップと、第２ロボット２００ｂの第４乃至第７ステップで囲まれたエリアが、干渉エリア２１となる。なお、当該干渉エリア２１は、干渉ステップ２０ではない領域（例えば、第１ロボット２００ａの第５ステップと、第２ロボット２００ｂの第７ステップのエリア）も、干渉エリア２１に含めることができる。
【００６８】
決定部１３０は、干渉ステップ２０または干渉エリア２１に対して、優先して作業させるロボットを決定する。この場合において、決定部１３０は、作業全体が完了するまでに必要な時間を考慮して、干渉ステップ２０または干渉エリア２１において優先して作業させるロボットを決定する。図１０に示すように、干渉ステップ２０および干渉エリア２１が複数ある場合、干渉ステップ２０および干渉エリア２１ごとに優先して作業させるロボットを決定するため、複数の組み合わせが考えられる。この場合において、決定部１３０は、複数の組み合わせのうち、作業全体が完了するまでに必要な時間が短くなる組み合わせを採用する。決定部１３０は、例えば、複数の組み合わせの各々について、作業全体が完了するまでに必要な時間を計算し、当該必要な時間が最も短い組み合わせを選択する。
【００６９】
第１ロボット２００ａを制御する制御プログラム００１と第２ロボット２００ｂを制御する制御プログラム００３とに、干渉ステップ２０および干渉エリア２１におけるインターロックを設定する。
【００７０】
図１１は、実施の形態に係るティーチング装置１００が実行するプログラム作成支援処理の流れを説明するフローチャートである。本フローチャートにおける処理は、例えばティーチング装置１００が起動したときに開始する。
【００７１】
特定部１１０は、記憶部１７０を参照して、複数のロボット２００がそれぞれ取り得る軌跡１２を全て取得する（Ｓ１００）。
【００７２】
算出部１２０は、複数のロボット２００のうち異なる２つのロボット２００の組を取得する（Ｓ２００）。
【００７３】
算出部１２０は、組となる２つのロボット２００がそれぞれ取り得る軌跡１２をもとに、当該２つのロボットが衝突または接触するか否かを解析する（Ｓ３００）。
【００７４】
決定部１３０は、算出部１２０により衝突または接触すると解析された領域を、干渉ステップ２０および干渉エリア２１と決定する（Ｓ４００）。
【００７５】
設定部１４０は、決定部１３０が決定した干渉ステップ２０および干渉エリア２１に対して、組となる２つのロボットの衝突または接触を防止するためのインターロックを設定する（Ｓ５００）。
【００７６】
その後、設定部１４０は、インターロックの設定に基づいて、複数のロボット２００を制御するための制御プログラムを設定する（Ｓ６００）。
【００７７】
図１２は、実施の形態に係る特定部１１０が実行する特定機能の流れを説明するフローチャートであり、図１１におけるステップＳ１００をより詳細に説明する図である。
【００７８】
特定部１１０は、複数のロボット２００のうちから１つのロボット２００を選択する（Ｓ１１０）。
【００７９】
続いて、特定部１１０は、選択したロボット２００の動作を制御するための制御プログラムを全て読み出す（Ｓ１２０）。
【００８０】
特定部１１０は、読み出した制御プログラムそれぞれで制御された場合における、選択したロボット２００が動く軌跡１２を取得する（Ｓ１４０）。
【００８１】
特定部１１０は、全てのロボット２００について選択するまでの間（ステップＳ１５０のＮｏ）、ステップ１１０からステップ１４０までの処理を継続する。
【００８２】
特定部１１０は、全てのロボット２００について選択が終了すると（Ｓ１５０のＹｅｓ）、処理を終了する。
【００８３】
図１３は、実施の形態に係る算出部１２０が実行する算出機能の流れを説明するフローチャートであり、図１１におけるステップＳ３００をより詳細に説明する図である。
【００８４】
算出部１２０は、複数のロボット２００の中から異なる２つのロボット２００の組を取得する（Ｓ３１０）。算出部１２０は、組を構成する２つのロボット２００それぞれが取り得る軌跡１２の中から、１対の軌跡１２の組を取得する（Ｓ３２０）。
【００８５】
算出部１２０は、軌跡１２の組に含まれるステップ１０間の距離が、所定の距離ＬＴ未満であるか否かの比較、すなわち上述したポジションチェックを実行する（Ｓ３３０）。軌跡１２の組に含まれるステップ１０間の距離が、所定の距離ＬＴ以上の場合（Ｓ３４０のＮｏ）、算出部１２０は取得した１対の軌跡１２は接触しないと判定し、ステップＳ３１０に戻って処理を継続する。
【００８６】
軌跡１２の組に含まれるステップ１０間の距離が、所定の距離ＬＴ未満の場合（Ｓ３４０のＹｅｓ）、算出部１２０はステップ１０とその前後いずれかのまたは両方のステップ１０を結ぶ軌跡１２が交差するか否かを解析、すなわち上述した軌跡チェックを実行する（Ｓ３５０）。
【００８７】
軌跡１２が交差する場合（Ｓ３６０のＹｅｓ）、算出部１２０は、組とした２つのロボット２００が衝突すると判定する（Ｓ３７０）。一方、軌跡１２が交差しない場合（Ｓ３６０のＮｏ）、算出部１２０は、組とした２つのロボット２００は接触すると判定する（Ｓ３８０）。
【００８８】
複数のロボット２００について取り得る全ての軌跡１２の組み合わせを取得するまでの間（Ｓ３９０のＮｏ）、算出部１２０は、ステップＳ３１０〜ステップＳ３９０までの処理を繰り返す。算出部１２０は、取り得る全ての軌跡１２の組み合わせを取得すると（Ｓ３９０のＹｅｓ）、処理を終了する。
【００８９】
図１４は、実施形態１における決定部１３０が、干渉ステップ２０および干渉エリア２１を決定する場合の動作例を示すフローチャートであり、図１１におけるステップＳ４００を詳細に説明する図である。
【００９０】
決定部１３０は、組とした２つのロボット２００の干渉ステップ２０を特定する（Ｓ４１０）。
【００９１】
決定部１３０は、特定した干渉ステップ２０のうち、干渉エリア２１として設定可能な領域を特定する（Ｓ４２０）。この場合において、決定部１３０は、干渉ステップ２０ではない領域を含んだエリアを、干渉エリア２１として設定してもよい。
【００９２】
決定部１３０は、干渉ステップ２０またはこれらの干渉エリア２１に対して、作業全体が完了するまでに必要な時間を考慮して、優先して作業させるロボットを決定する（Ｓ４３０）。
【００９３】
以上の構成によるティーチングシステム１の動作は以下のとおりである。まず、ティーチング装置１００は、複数のロボット２００のうち異なる２つのロボット２００の組を単位として制御プログラムを解析し、全ての軌跡１２の組み合わせについて、２つのロボット２００が干渉する領域を干渉ステップ２０または干渉エリア２１と設定し、当該干渉ステップ２０または干渉エリア２１において、優先して動作するロボットを決定する。この場合において、そして、作業全体が完了するまでに必要な時間を考慮して、優先して作業させるロボットを決定する。ティーチング装置１００は、干渉ステップ２０または干渉エリア２１において優先して動作するロボット２００に基づき、インターロックを設定する。そして、ティーチング装置１００は、インターロックの設定に基づいて、複数のロボット２００の動作を制御するための制御プログラムを設定する。ティーチング装置１００は、複数のロボット２００に協働して作業を行わせるための制御プログラムを提供することができる。
【００９４】
以上説明したように、第１の実施形態に係るシステム１によれば、複数のロボット２００に協働して作業を行わせるための制御プログラムを作成することができる。特に、ロボット２００の接触を抑制するための制御に利用するインターロックの設定を支援することができる。
【００９５】
＜第２の実施形態＞
第２の実施形態は、決定部１３０が、干渉ステップ２０および／または干渉エリア２１が複数ある場合に、複数の干渉ステップ２０および／または干渉エリア２１を含む領域を、少なくとも１つ以上の分割エリア２２に分けて、該分割エリア２２において優先して作業させるロボットを決定させる実施形態である。
【００９６】
第２の実施形態に記載の内容は、第１の実施形態にも適用可能である。
【００９７】
なお、システム１やロボット２００、ティーチング装置１００の構成例は、第１の実施形態で説明したシステム１やロボット２００、ティーチング装置１００と同様であるため、詳細な説明は省略される。
【００９８】
また、第２の実施形態における決定部１３０は、干渉ステップ２０や干渉エリア２１が複数ある場合に、該複数の干渉ステップ２０や干渉エリア２１を少なくとも１つ以上の分割エリア２２として設定可能である。決定部１３０は、設定した分割エリア２２において優先して作業させるロボットを決定する。  
【００９９】
決定部１３０は、予め定められた個数の分割エリア２２を設定する。分割エリア２２の個数が１つの場合は“１系統”、２つの場合は“２系統”、Ｎ個の場合は“Ｎ系統”と記載してもよい。１系統の場合は、「進入前信号」（待機信号）と「待避後信号」（干渉外信号）を１組用いる。すなわち、１系統の場合は、１つの信号の組み合わせにより、インターロックを設定する。また、２系統の場合は、２つの信号の組み合わせにより、インターロックを設定する。
【０１００】
なお、分割エリア２２の個数は、予め定められている必要はなく、決定部１３０が決定してもよいし、ユーザが都度設定してもよい。決定部１３０が決定する場合、該決定部１３０は、例えば、干渉ステップ２０や干渉エリア２１の数や大きさに基づいて、分割エリア２２の数を決定してもよい。また、決定部１３０は、作業全体が完了するまでに必要な時間を考慮して、分割エリア２２の数を決定してもよい。例えば、決定部１３０は、作業全体が完了するまでに必要な時間が最小となるように、分割エリア２２の数を決定してもよい。
【０１０１】
図１５は、第２の実施形態における分割エリア２２を説明するための模式図である。図１５は、２系統の場合の分割エリア２２の例である。図１５に示すように、１つの干渉ステップ２０と、２つの干渉エリア２１がある場合、分割エリア２２は、図１５に示すように、２つのパターンが考えられる。図１５（ａ）は、干渉ステップ２０と干渉エリア２１Ａを一方の分割エリア２２Ａとし、干渉エリア２１Ｂを他方の分割エリア２２Ｂとするパターンである。一方、図１５（ｂ）は、干渉ステップ２０を一方の分割エリア２２Ａとし、干渉エリア２１Ａと干渉エリア２１Ｂとを他方の分割エリア２２Ｂとするパターンである。
【０１０２】
決定部１３０は、図１５（ａ）のパターンと、図１５（ｂ）のパターンとを計算し、いずれのパターンを用いるかを決定する。決定部１３０は、分割エリア２２の設定に関して複数のパターンがある場合に、分割エリア２２間のロボット２００の移動時間に基づいて、どのパターンを用いるか決定する。
【０１０３】
決定部１３０は、複数のパターンがある場合に、分割エリア２２間のロボット２００の移動時間が最長である場合を含むパターンを、実際に用いるパターンとして決定する。分割エリア２２間のロボット２００の移動時間が最長の場合を含むパターンは、ロボット２００が自由に動作または移動できる領域が大きいこと、すなわちインターロックによるロボット２００の停止時間が少ないことを意味する。そこで、決定部１３０は、インターロックによるロボット２００の停止時間が少ないパターンを選択する。
【０１０４】
図１５（ａ）において、分割エリア２２間のロボット２００の移動時間は、“Δｔ１”と“Δｔ２”とがある。また、図１５（ｂ）において、分割エリア２２間のロボット２００の移動時間は、“Δｔ３”と“Δｔ４”とがある。決定部１３０は、“Δｔ１”〜“Δｔ４”のうち最も長い時間を含むパターンを選択する。例えば“Δｔ１”が最も長い時間である場合には、決定部１３０は、“Δｔ１”を含む図１５（ａ）のパターンを、実際に使用するパターンとして選択する。
【０１０５】
上記のとおり、決定部１３０は、分割エリア２２の設定に関して複数のパターンがある場合に、分割エリア２２間のロボット２００の移動時間が最長の場合を含むパターンを、実際に使用するパターンとして選択する。
【０１０６】
次に、決定部１３０は、分割エリア２２の各々に対して、優先して作業させるロボット２００を決定する。この場合において、設定部１４０は、決定部１３０の決定結果に基づいて、インターロックの設定を行う。設定部１４０は、例えば、優先して作業させるロボット２００（優先情報を持つロボット２００）に対して、「進入前信号」（待機信号）と「待避後信号」（干渉外信号）とを、待機させるロボット２００（優先情報を持たないロボット２００）に送信する旨を設定してもよいし、そのような制御を行うための制御プログラムを設定してもよい。
【０１０７】
図１６は、１系統の場合の分割エリア２２を説明するための模式図である。図１６（ａ）は、分割エリア２２において、第１のロボット２００が優先して作業する場合の例である。図１６（ａ）に示すように、分割エリア２２において第１のロボット２００が優先して作業する場合、設定部１４０は、第１のロボットに対して、“第２のロボット２００のステップ１において、「進入前信号」（待機信号）を第２のロボットに送信する”旨を設定する。その結果、第２のロボット２００は、ステップ１の工程を実行している際に、「進入前信号」（待機信号）を受信する。これにより、第２のロボット２００はステップ２の工程に進まず、分割エリア２２において第１のロボット２００が優先して作業可能となる。
【０１０８】
また、設定部１４０は、第１のロボットに対して、“第１のロボット２００のステップ１２において、「退避後信号」（干渉外信号）を第２のロボットに送信する”旨を設定する。その結果、第２のロボット２００は、第１のロボット２００が分割エリア２２内のステップを完了した後に、「退避後信号」（干渉外信号）を受信し、ステップ２の工程に進むことができる。
【０１０９】
上記のとおり、決定部１３０が分割エリア２２を決定することにより、設定部１４０は、インターロックに関する信号を設定するステップを求めることが可能となる。
【０１１０】
図１６（ｂ）は、分割エリア２２において、ロボット２が優先して作業する場合の例である。図１６（ｂ）に示すように、分割エリア２２において第２のロボット２００が優先して作業する場合、設定部１４０は、第１のロボット２００のステップ１において、第２のロボットが「進入前信号」（待機信号）を第１のロボットに対して送信する旨を設定する。その結果、第１のロボット２００は、ステップ１の工程を実行している際に、「進入前信号」（待機信号）を受信する。これにより、第１のロボット２００はステップ２の工程に進まず、分割エリア２２において第２のロボット２００が優先して作業可能となる。
【０１１１】
また、設定部１４０は、第２のロボット２００のステップ１１において、第２のロボットが「退避後信号」（干渉外信号）を、第１のロボットに対して送信する旨を設定する。その結果、第１のロボット２００は、第２のロボット２００が分割エリア２２内のステップを完了した後に、「退避後信号」（干渉外信号）を受信し、ステップ２の工程に進むことができる。
【０１１２】
ここで、図１６に示すように、１系統の場合、分割エリア２２において優先して作業するロボット２００が第１のロボット２００の場合と第２のロボット２００の場合とで、２通りの経路（組み合わせ）が考えられる。例えば、図１６（ａ）のように、分割エリア２２において、第１ロボット２００を優先して動作するロボット２００として決定する場合（経路Ａ）と、図１５（ｂ）のように、第２ロボット２００を優先して動作するロボット２００として決定する場合（経路Ｂ）の２通りが考えられる。
【０１１３】
この場合において、決定部１３０は、作業全体が完了するまでに必要な時間を考慮して、経路Ａまたは経路Ｂのいずれかを選択する。例えば、決定部１３０は、作業全体が完了するまでに必要な時間が最短となるように、経路Ａまたは経路Ｂのいずれかを選択する。この場合において、決定部１３０は、例えば、ダイクストラ法（最短経路法）を用いて、いずれかの経路を選択してもよい。
【０１１４】
その後、設定部１４０は、上述したように、決定部１３０の決定した経路に基づいて、インターロックの設定を行う。例えば、設定部１４０は、決定部１３０が経路Ａを選択した場合には、図１６（ａ）に示すインターロックに関する信号の設定を行う。
【０１１５】
上記のとおり、決定部１３０が分割エリア２２を決定するとともに、複数の経路のうちのいずれかを選択することにより、設定部１４０は、どのステップにおいてインターロックに関する信号を設定すればよいか求めることができる。そして、決定部１３０が、作業全体が完了するまでに必要な時間が最短となる経路を選択するため、ティーチング装置１００は、複数のロボット２００が最も効率よく協働して作業可能な制御プログラムを提供することができる。
【０１１６】
図１７は、２系統の場合の分割エリア２２における経路を説明するための模式図である。図１７において説明したように、決定部１３０は、分割エリア２２の設定のパターンが複数ある場合には、分割エリア２２間のロボット２００の移動時間に基づいて、どのパターンを用いるか決定すする。決定部１３０は、例えば、複数のパターンがある場合に、分割エリア２２間のロボット２００の移動時間が最長である場合を含むパターンを、実際に用いるパターンとして決定する。
【０１１７】
図１７には、決定部１３０が図１７（ａ）のパターンを選択した場合における、複数の経路が示されている。図１７（ａ）〜（ｄ）に示すように、２系統の場合には、４通りの経路が考えられる。図１７（ａ）は、分割エリア２２Ａおよび２２Ｂにおいて、第１のロボット２００を優先して作業させるロボット２００とする場合の経路である。また、図１７（ｂ）は、分割エリア２２Ａでは第１のロボット２００を、分割エリア２２Ｂでは第２のロボット２００を、それぞれ優先して作業させるロボット２００とする場合の経路である。また、図１７（ｃ）は、分割エリア２２Ａでは第１のロボット２００を、分割エリア２２Ｂでは第２のロボット２００を、それぞれ優先して作業させるロボット２００とする場合の経路である。さらに、図１７（ｄ）は、分割エリア２２Ａおよび２２Ｂにおいて、第２のロボット２００を優先して作業させるロボット２００とする場合の経路である。
【０１１８】
決定部１３０は、作業全体が完了するまでに必要な時間を考慮して、経路１〜経路４のいずれかを選択する。例えば、決定部１３０は、作業全体が完了するまでに必要な時間が最短となるように、経路１〜経路４のいずれかを選択する。
【０１１９】
設定部１４０は、決定部１３０が選択した経路に基づいて、インターロックの設定を行う。設定部１４０は、例えば決定部１３０が経路２を選択した場合、第１のロボットに対して、“第２のロボット２００のステップ１において、「進入前信号」（待機信号）を第２のロボットに送信する”旨を設定する。その結果、第２のロボット２００は、ステップ１の工程を実行している際に、「進入前信号」（待機信号）を受信する。これにより、第２のロボット２００はステップ２の工程に進まず、分割エリア２２Ａにおいて第１のロボット２００が優先して作業可能となる。
【０１２０】
また、設定部１４０は、例えば決定部１３０が経路２を選択した場合、第１のロボットに対して、“第１のロボット２００のステップ８において、「退避後信号」（干渉外信号）を第２のロボットに送信する”旨を設定する。その結果、第２のロボット２００は、第１のロボット２００が分割エリア２２Ａ内のステップを完了した後に、「退避後信号」（干渉外信号）を受信し、ステップ２の工程に進むことができる。
【０１２１】
設定部１４０は、例えば決定部１３０が経路２を選択した場合、第２のロボットに対して、“第１のロボット２００のステップ９において、「進入前信号」（待機信号）を第１のロボットに送信する”旨を設定する。その結果、第２のロボット２００は、ステップ９の工程を実行している際に、「進入前信号」（待機信号）を受信する。これにより、第１のロボット２００はステップ９の工程に進まず、分割エリア２２Ｂにおいて第２のロボット２００が優先して作業可能となる。
【０１２２】
また、設定部１４０は、例えば決定部１３０が経路２を選択した場合、第１のロボットに対して、“第２のロボット２００のステップ１１において、「退避後信号」（干渉外信号）を第１のロボットに送信する”旨を設定する。その結果、第１のロボット２００は、第２のロボット２００が分割エリア２２Ｂ内のステップを完了した後に、「退避後信号」（干渉外信号）を受信し、ステップ１０の工程に進むことができる。
【０１２３】
上記のとおり、決定部１３０が分割エリア２２を決定するとともに、複数の経路のうちのいずれかを選択することにより、設定部１４０は、どのステップにおいてインターロックに関する信号を設定すればよいか求めることができる。そして、決定部１３０が、作業全体が完了するまでに必要な時間が最短となる経路を選択するため、ティーチング装置１００は、複数のロボット２００が最も効率よく協働して作業可能な制御プログラムを提供することができる。
【０１２４】
図１８は、実施形態２における決定部１３０の動作例を示すフローチャートである。
【０１２５】
決定部１３０は、組とした２つのロボット２００の干渉ステップ２０を特定する（Ｓ４１０）。
【０１２６】
決定部１３０は、特定した干渉ステップ２０のうち、干渉エリア２１として設定可能な領域を特定する（Ｓ４２０）。この場合において、決定部１３０は、干渉ステップ２０ではない領域を含んだエリアを、干渉エリア２１として設定してもよい。
【０１２７】
決定部１３０は、干渉ステップ２０および干渉エリア２１が複数ある場合に、少なくとも１つ以上の分割エリア２２を設定する（Ｓ４３０）。決定部１３０は、例えば、予め定められた個数の分割エリア２２を設定する。
【０１２８】
決定部１３０は、分割エリア２２の設定に関して複数のパターンが計算可能な場合（Ｓ４４０のＹＥＳ）、分割エリア２２間のロボット２００の移動時間に基づいて、いずれのパターンを用いるかを決定する（Ｓ４５０）。一方、決定部１３０は、設定可能な分割エリア２２が１つの場合には（Ｓ４４０のＮＯ）、Ｓ４６０に進む。
【０１２９】
決定部１３０は、分割エリア２２の各々に対して、優先して作業させるロボット２００を決定することにより、複数の経路を計算する（Ｓ４６０）。そして、決定部１３０は、複数の経路のうち、作業全体が完了するまでに必要な時間が最短となる経路を、実際に用いる経路として決定する（Ｓ４７０）。その後、設定部１４０は、図１１に示すＳ５００やＳ６００において、決定部１３０が決定した経路に基づいて、インターロックの設定を行う。
【０１３０】
以上説明したように、第２の実施形態に係るシステム１によれば、複数のロボット２００に協働して作業を行わせるための制御プログラムの作成を支援することができる。特に、ロボット２００の衝突または接触を抑制するための制御に利用するインターロックの設定を支援することができる。
【０１３１】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１３２】
上記の説明では、ティーチング装置１００はＰＣやワークステーション等で実現する場合につて説明した。これに代えて、ティーチング装置１００を分散並列処理が実行可能なスーパーコンピュータを用いて実現してもよい。これにより、ロボット２００間の衝突または接触の解析をさらに高速化することができる。
【０１３３】
上記の説明では、通知部１５０は、干渉ステップ、干渉エリア２１を示すマトリクスをユーザに通知する場合について説明した。これに加えて、マトリクス上の各領域をユーザが選択すると、それぞれのロボット２００の動きをシミュレーションした結果をユーザに提示するようにしてもよい。より具体的には、ユーザがマウス等のポインティングデバイスを用いてマトリクスの所望の領域を選択すると、算出部１２０は、制御プログラムを用いてそのマトリクスに対応するステップまでロボット２００を動作させるシミュレーションを実行する。その結果を既知の３次元レンダリング技術を用いて画像化することによりユーザに提示すればよい。これにより、ユーザはどの位置に置いてロボット２００の衝突または接触が発生しているかを視覚的に確認することができる。
【符号の説明】
【０１３４】
１  システム
１２  軌跡
１４  干渉領域
２０  干渉ステップ
２１  干渉エリア
２２  分割エリア
１００  ティーチング装置
１１０  特定部
１２０  算出部
１３０  決定部
１４０  設定部
１５０  通知部
１６０  取得部
１７０  記憶部
２００  ロボット
２０２  ワーク
２０４  駆動部
【図１】
2018020413.tif 000003
【図２】
2018020413.tif 000004
【図３】
2018020413.tif 000005
【図４】
2018020413.tif 000006
【図５】
2018020413.tif 000007
【図６】
2018020413.tif 000008
【図７】
2018020413.tif 000009
【図８】
2018020413.tif 000010
【図９】
2018020413.tif 000011
【図１０】
2018020413.tif 000012
【図１１】
2018020413.tif 000013
【図１２】
2018020413.tif 000014
【図１３】
2018020413.tif 000015
【図１４】
2018020413.tif 000016
【図１５】
2018020413.tif 000017
【図１６】
2018020413.tif 000018
【図１７】
2018020413.tif 000019
【図１８】
2018020413.tif 000020