(57)【要約】【課題】ロボットの衝突を回避するプログラムの更新を不要とすることでユーザの負担を軽減した制御システムを実現する。【解決手段】制御システム（１）の第２ロボット（３２）は、第１ロボット（３１）及び第２ロボット（３２）それぞれが衝突すると判定されると、第１ロボット（３１）から避けるように第２ロボット（３２）の軌道を計算する軌道計算部（２３Ｓ）を有する。【選択図】図６
2020121384.tif 000002
【特許請求の範囲】
【請求項１】
多関節を有する複数のロボットが同一のネットワークに接続された制御システムであって、
前記複数のロボットは、第１ロボット及び第２ロボットを含み、
前記第２ロボットは、
前記第１ロボットの可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報、及び、前記第２ロボットの可動部の目標位置を示す目標位置情報、が付加された制御データを、前記ネットワークを介して取得する通信制御部と、
前記第１ロボットの前記可動部の軌道と、前記第２ロボットの目標位置から特定される、前記第２ロボットの前記可動部の現在位置から目標位置へ至るまでの軌道とに基づいて、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する判定部と、
前記第１ロボットと前記第２ロボットとが衝突する場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正する軌道計算部とを備える、制御システム。
【請求項２】
前記複数のロボットは、所定期間毎に、前記ネットワークを介して前記制御データを受信する請求項１に記載の制御システム。
【請求項３】
前記軌道計算部は、さらに、前記第２ロボットにおける前記可動部の現在位置から、当該第２ロボットの前記可動部の前記目標位置へ至るまでの、前記所定期間毎の当該第２ロボットの前記可動部の予定位置を計算する請求項２に記載の制御システム。
【請求項４】
前記第２ロボットは、さらに、
前記第１ロボットの前記可動部の前記軌道に基づいて、当該第１ロボットの当該可動部の周囲を含む所定範囲の軌道である第１周囲範囲軌道を計算し、前記軌道計算部が計算した前記第２ロボットの前記可動部の前記軌道に基づいて、前記第２ロボットの前記可動部の周囲を含む所定範囲の軌道である第２周囲範囲軌道を計算する周囲範囲軌道計算部を備え、
前記判定部は、前記第２周囲範囲軌道に、前記第１周囲範囲軌道が含まれるか否かを判定することで、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する請求項３に記載の制御システム。
【請求項５】
前記軌道計算部は、前記判定部によって、前記第１ロボットと前記第２ロボットとが衝突すると判定された場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正し、当該修正された軌道における次の所定期間後の前記第２ロボットの予定位置を表す予定位置情報を、前記制御データに付加し、
前記通信制御部は、前記予定位置情報が付加された前記制御データを前記ネットワークに出力する請求項４に記載の制御システム。
【請求項６】
前記複数のロボットのそれぞれには、他のロボットに対して衝突を回避させる優先順位が設定されており、
前記第１ロボットの優先順位よりも、前記第２ロボットの優先順位が低く、当該第２ロボットが前記第１ロボットに対する衝突を回避する請求項１〜５の何れか１項に記載の制御システム。
【請求項７】
前記第２ロボットは、前記複数のロボットのうち、前記第１ロボットに加えて、他のロボットの軌道を計算し、当該他のロボットに対しても衝突を回避する請求項６に記載の制御システム。
【請求項８】
複数のロボットが同一のネットワークに接続された制御システムの制御方法であって、
前記複数のロボットは、第１ロボット及び第２ロボットを含み、
前記第２ロボットにおいて、
前記第１ロボットの可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報、及び、前記第２ロボットの可動部の目標位置を示す目標位置情報、が付加された制御データを、前記ネットワークを介して取得するステップと、
前記第１ロボットの前記可動部の軌道と、前記第２ロボットの目標位置から特定される、前記第２ロボットの前記可動部の現在位置から目標位置へ至るまでの軌道とに基づいて、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する判定ステップと、
前記第１ロボットと前記第２ロボットとが衝突する場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正する軌道計算ステップとを行わせる、制御システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、制御システムの駆動方法、制御プログラム、及び、コンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
ロボット同士の衝突を回避する制御システムの従来技術として、特許文献１に記載された技術がある。これによれば、ハイブリッド干渉領域、アクセス予約、および存在することなどの領域宣言を、インターロックが必要な動作プログラムの前に１度実行することで、インターロック（動作プログラムの前後でｌｏｃｋ/ｕｎｌｏｃｋを行う）を考慮しないプログラミングが可能となる。これにより、リアルタイムに制御が行われていない場合（ティーチング時）においても、適切に自動でインターロックが行われ、システム全体の不整合が起こらない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５３８６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術では、領域宣言のためのプログラムの作成が必要となる。領域宣言のためのプログラムは、設置位置の周囲の設備や、他のロボットとの位置関係等の様々な条件に応じてロボット毎に決まるロボット独自のプログラムである。そのため、ロボットを使用するユーザ側でロボット毎に作成しており、ユーザの負担となっている。
【０００５】
本発明の一態様は、ロボット自身が他のロボットとの衝突を回避することで、ロボットの動作を指示するユーザプログラムを作成するユーザの負担を軽減した制御システムを実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様に係る制御システムは、多関節を有する複数のロボットが同一のネットワークに接続された制御システムであって、前記複数のロボットは、第１ロボット及び第２ロボットを含み、前記第２ロボットは、前記第１ロボットの可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報、及び、前記第２ロボットの可動部の目標位置を示す目標位置情報、が付加された制御データを、前記ネットワークを介して取得する通信制御部と、前記第１ロボットの前記可動部の軌道と、前記第２ロボットの目標位置から特定される、前記第２ロボットの前記可動部の現在位置から目標位置へ至るまでの軌道とに基づいて、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する判定部と、前記第１ロボットと前記第２ロボットとが衝突する場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正する軌道計算部とを備える。
【０００７】
前記構成によると、前記第２ロボット自身が、前記第１ロボットと衝突しないような軌道を計算する。このため、ユーザは、前記第２ロボットと前記第１ロボットとの干渉を考えずに、ロボットを動作させるユーザプログラムを作ることができる。この結果、ロボット自身が他のロボットとの衝突を回避することで、ロボットの動作を指示するユーザプログラムを作成するユーザの負担を軽減した制御システムが実現できる。
【０００８】
また、前記複数のロボットは、所定期間毎に、前記ネットワークを介して前記制御データを受信する。
【０００９】
また、前記軌道計算部は、さらに、前記第２ロボットにおける前記可動部の現在位置から、当該第２ロボットの前記可動部の前記目標位置へ至るまでの、前記所定期間毎の当該第２ロボットの前記可動部の予定位置を計算する。
【００１０】
前記構成のように、第２ロボットを制御する制御装置側ではなく、前記第２ロボット側にて、当該第２ロボットの現在位置から目標位置へ至るまでの複数の予定位置を計算することで、ユーザが予め第２ロボットの軌道をプログラミングしておく手間を省くことができる。
【００１１】
また、前記第２ロボットは、さらに、前記第１ロボットの前記可動部の前記軌道に基づいて、当該第１ロボットの当該可動部の周囲を含む所定範囲の軌道である第１周囲範囲軌道を計算し、前記軌道計算部が計算した前記第２ロボットの前記可動部の前記軌道に基づいて、前記第２ロボットの前記可動部の周囲を含む所定範囲の軌道である第２周囲範囲軌道を計算する周囲範囲軌道計算部を備え、前記判定部は、前記第２周囲範囲軌道に、前記第１周囲範囲軌道が含まれるか否かを判定することで、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する。
【００１２】
前記構成によると、第２ロボットを制御する制御装置側ではなく、当該第２ロボット側において、前記第１ロボットの回避判定範囲と第２ロボットの回避判定範囲とを計算するため、両者が衝突しないような第２ロボットの軌道をより早く決定することができる。これにより、第１ロボット及び第２ロボットが衝突する可能性がある回避判定範囲を小さくすることができる。それゆえ、製造ラインのサイズを小さくすることができる。また、各ロボットの回避判定範囲を計算する負荷を制御装置が計算していた場合と比べて、当該負荷を分散することができる。
【００１３】
また、前記軌道計算部は、前記判定部によって、前記第１ロボットと前記第２ロボットとが衝突すると判定された場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正し、当該修正された軌道における次の所定期間後の前記第２ロボットの予定位置を表す予定位置情報を、前記制御データに付加し、前記通信制御部は、前記予定位置情報が付加された前記制御データを前記ネットワークに出力する。
【００１４】
また、前記複数のロボットのそれぞれには、他のロボットに対して衝突を回避させる優先順位が設定されており、前記第１ロボットの優先順位よりも、前記第２ロボットの優先順位が低く、当該第２ロボットが前記第１ロボットに対する衝突を回避する。
【００１５】
前記構成により、ロボット同士がお互いに回避行動を採った場合に衝突してしまうことを防止することができる。すなわち、より確実に、ロボット同士の衝突を回避することができる。また、優先順位の高い第１ロボットを、より早く作業が行える軌道に沿って動作させることができる。
【００１６】
また、前記第２ロボットは、前記複数のロボットのうち、前記第１ロボットに加えて、他のロボットの軌道を計算し、当該他のロボットに対しても衝突を回避する。
【００１７】
上記の課題を解決するために、本発明の一態様に係る制御システムは、複数のロボットが同一のネットワークに接続された制御システムの制御方法であって、前記複数のロボットは、第１ロボット及び第２ロボットを含み、前記第２ロボットにおいて、前記第１ロボットの可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報、及び、前記第２ロボットの可動部の目標位置を示す目標位置情報、が付加された制御データを、前記ネットワークを介して取得するステップと、前記第１ロボットの前記可動部の軌道と、前記第２ロボットの目標位置から特定される、前記第２ロボットの前記可動部の現在位置から目標位置へ至るまでの軌道とに基づいて、前記第１ロボットと前記第２ロボットとが衝突するか否かを判定する判定ステップと、前記第１ロボットと前記第２ロボットとが衝突する場合、前記第１ロボットの前記可動部の前記軌道を避けるように前記第２ロボットの前記可動部の前記軌道を修正する軌道計算ステップとを行わせる。
【００１８】
本発明の各態様に係る制御システムは、コンピュータによって実現してもよく、この場合には、コンピュータを上記制御システムが備える各部（ソフトウェア要素）として動作させることにより上記制御システムをコンピュータにて実現させる制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【００１９】
本発明の一態様によれば、ユーザプログラムを作成するユーザの負担を軽減した制御システムを得ることができる。
【図面の簡単な説明】
【００２０】
【図１】一実施形態に係る制御システムの要部構成を示す模式図である。
【図２】制御装置から複数のロボットおよび他装置に送信される１フレーム分の制御データの構成を示す図である。
【図３】一実施形態に係る制御システムが備えるロボットの概略構成を表す図である。
【図４】一実施形態に係る制御システムに係る第１ロボットの機能ブロックを表す図である。
【図５】一実施形態に係る制御システムに係る第１ロボットの制御部の処理の流れを表す図である。
【図６】一実施形態に係る制御システムに係る第２ロボットの機能ブロックを表す図である。
【図７】一実施形態に係る制御システムに係る第２ロボットの制御部の処理の流れを表す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）について説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２２】
〔§１  適用例〕
本実施形態に係る制御システムは、機械や設備といった対象装置を制御する制御装置と、制御装置に接続された機械や設備といった制御対象を含む。制御対象には多関節を有する複数のロボットが含まれる。
【００２３】
図１は、一実施形態に係る制御システム１の要部構成を示す模式図である。制御システム１は、フィールドネットワーク（同一のネットワーク）を介して接続された、制御装置１０、および複数のロボット３０を含む。制御システム１においては、フィールドネットワークを介して、複数のロボット３０は、ロボット３０以外の他装置４０（例えばサーボ等）とも接続されていてもよい。複数のロボット３０は、少なくとも、第１ロボット３１、及び、第２ロボット３２を含み、さらに、他のロボットを含んでもよい。一例として、制御システム１において、制御装置１０と、第１ロボット３１と、第２ロボット３２と、他装置４０とは、ＬＡＮケーブル２を介して直列的に接続されている。
【００２４】
フィールドネットワークは、制御装置１０と、複数のロボット３０および他装置４０との間で遣り取りされる各種データを伝送する。フィールドネットワークとしては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）を採用している構成を例示するが、これに限らず、定周期で各種データの送受信が行われるネットワークを用いることができる。例えば、フィールドネットワークとして、ＰＲＯＦＩＮＥＴ（登録商標）、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどの産業用のイーサネット（登録商標）などを用いることができる。
【００２５】
第２ロボット３２は、第１ロボット３１の現在位置の情報と目標位置の情報と第２ロボット３２の目標位置の情報とをフィールドネットワークを介して受信する。第２ロボット３２は、自装置の現在位置を知っている。第２ロボット３２は、第１ロボット３１の現在位置と目標位置とから第１ロボット３１の軌道を計算し、第２ロボット３２の現在位置と目標位置とから第２ロボット３２の軌道を計算する。第２ロボット３２は、第１ロボット３１の軌道と第２ロボット３２の軌道から、第１ロボット３１と第２ロボット３２とが衝突するか否かを判定する。衝突する場合、第２ロボット３２は、衝突を回避するために、自装置の軌道を修正する。
【００２６】
各ロボットの軌道の計算、衝突の判定、及び回避するための軌道修正を、目標位置を指示するマスター装置である制御装置１０ではなく、スレーブ装置である第２ロボット３２自身に行わせる。これにより、計算負荷の分散させることができる。また、適切な軌道をより早く決定することができる。それゆえ、動作誤差を考慮した周囲範囲（他のロボットが入らないようにする範囲）を小さくすることができる。その結果、複数のロボットを間隔を詰めて配置することができ、製造ラインのサイズを小さくすることができる。また、ユーザは、第２ロボットと第１ロボットとの干渉を考えずに、ロボットを動作させるユーザプログラムを作ることができる。
【００２７】
〔§２  構成例〕
図１に示すように、制御装置１０は、機械および設備などの制御対象を制御するＰＬＣ（programmable logic controller）であり、複数のロボット３０、及び、他装置４０を制御する。制御装置１０から複数のロボット３０には、フィールドネットワークを介して指令値が送信され、各ロボット３０は、受信した指令値に基づいて動作する。他装置４０にもフィールドネットワークを介して指令値が送られ、他装置４０も、受け取った指令値に基づいて動作する。制御装置１０は、フィールドネットワークを介した制御データの伝送において、当該制御データの伝送を主体的に管理する。
【００２８】
本実施形態では、複数のロボット３０それぞれには、他のロボット３０の可動部に対して衝突を回避させる優先順位が設定されているものとする。ここでは、一例として、フィールドネットワークにおける上流側（制御装置１０に近い側）のロボット３０よりも下流側（制御装置１０から遠い側）のロボット３０の優先順位が低いものとする。すなわち、第１ロボット３１の軌道の優先順位よりも、第２ロボット３２の軌道の優先順位が低く、第２ロボット３２が第１ロボット３１に対する衝突を回避する。これにより、ロボット３０同士がお互いに同じ方向に回避行動を採った場合に衝突してしまうことを防止することができる。すなわち、より確実に、ロボット３０同士の衝突を回避することができる。
【００２９】
なお、回避対象であるロボット３０（ここでは第１ロボット３１）をマスター側のロボット３０、回避行動を採るロボット（ここでは第２ロボット３２）をスレーブ側のロボット３０等と称する場合がある。
【００３０】
図２は、制御装置１０から複数のロボット３０および他装置４０に送信される１フレーム分の制御データ６０のパケットの構成を示す図である。ＥｔｈｅｒＣＡＴ（登録商標）では、複数のロボット３０は、それぞれのロボット３０用の制御データが１セットとなった制御データ６０を、所定周期毎に、フィールドネットワークを介して送受信する。図２において、制御データ６０のうち、左端が第１ロボット３１を制御するための制御データ（軌道特定情報）６１であり、その横が第２ロボット３２を制御するための制御データ（軌道特定情報）６２で、さらに他のロボットが存在する場合、制御データ６２の横に順にそれぞれのロボットの制御データが設けられる。制御データ６１、６２・・・は、フィールドネットワークに接続されて制御装置１０にて制御されるロボット３０の数分含まれる。図２では、制御データ６０のうち、右端に、他装置４０の制御データ７０が設けられている。
【００３１】
ロボット毎の制御データは、それぞれＩＮデータ（入力データ）とＯＵＴデータ（出力データ）とを含む。すなわち、制御データ６１はＩＮデータ６１ａとＯＵＴデータ６１ｂとを含み、制御データ６２はＩＮデータ６２ａとＯＵＴデータ６２ｂとを含み、・・・制御データ７０はＩＮデータ７０ａとＯＵＴデータ７０ｂとを含む。
【００３２】
ＩＮデータは、制御装置１０からロボット３０または他装置４０に伝えるための情報である。各ＩＮデータには、制御装置１０によって、各ロボット３０を動作させるための指令値が付加される。具体的には、制御装置１０によって、制御データ６０のうち、制御データ６１のＩＮデータ６１ａには第１ロボット３１を動作させるための指令値が付加され、制御データ６２のＩＮデータ６２ａには第２ロボット３２を動作させるための指令値が付加され、・・・制御データ７０のＩＮデータ７１ａには他装置４０を動作させるための指令値が付加される。
【００３３】
指令値は、ロボット３０の動きを決定するデータであり、例えば、本実施形態では、ロボット３０が移動する目標位置（ＸＹＺ座標）を示す情報（目標位置情報）である。ロボット３０は、目標位置に従って、軌道を計算し、計算した軌道に従って可動部を動作させる。
【００３４】
ＯＵＴデータは、ロボット３０または他装置４０から制御装置１０に伝えるための情報である。各ＯＵＴデータには、各ロボット３０によって、自装置の状態を表す情報が付加される。具体的には、制御データ６０のうち、制御データ６１のＯＵＴデータ６１ｂには第１ロボット３１によって第１ロボット３１の状態を表す情報が付加され、制御データ６２のＯＵＴデータ６２ｂには第２ロボット３２によって第２ロボット３２の状態を表す情報が付加され、・・・制御データ７０のＯＵＴデータ７０ｂには他装置４０によって他装置４０の状態を表す情報が付加される。
【００３５】
自装置の状態を表す情報とは、例えば、各ロボット３０の可動部（例えばマニピュレータ）の現在位置（ＸＹＺ座標）を表す情報である。この各ロボット３０の現在位置とは、各ロボット３０の実際の現在位置であってもよいし、所定期間後（次フレーム時）に各ロボット３０が動作している予定位置を、現在位置とみなしてもよい。
【００３６】
制御データ６０のうち、制御データ６１は、第１ロボット３１の可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報を含む。制御データ６２は、第２ロボット３２の可動部における現在位置から目標位置へ至るまでの軌道を特定するための軌道特定情報を含む。
【００３７】
各ロボット３０は、制御データ６０のうち、自装置のために割り当てられた領域の制御データを少なくとも取り込む。例えば、マスター側のロボット３０（第１ロボット３１）は、自装置のために割り当てられた制御データ６１のＩＮデータ６１ａを取り込む。さらに、本実施形態では、後述のように、スレーブ側のロボット３０（第２ロボット３２）は、制御データ６０のうち、自装置のために割り当てられた制御データ６２のＩＮデータ６２ａだけでなく、回避対象であるマスター側のロボット３０（第１ロボット３１）のために割り当てられた制御データ６１も取り込み、マスター側のロボット３０（第１ロボット３１）の軌道も把握する。
【００３８】
図１及び図２を用いて、制御システム１における、制御データ６０の流れを説明する。制御装置１０は、Ｉ／Ｏポート５０を有する。Ｉ／Ｏポート５０は、送信部（図１では「ＴＸ」と記載）５１と受信部（図１では「ＲＸ」と記載）５２とを含む。第１ロボット３１は、Ｉ／Ｏポート５０ａ・５０ｂを有する。Ｉ／Ｏポート５０ａ・５０ｂは、それぞれ、送信部５１と受信部５２とを含む。第２ロボット３２もＩ／Ｏポート５０ａ・５０ｂを有し、他装置４０もＩ／Ｏポート５０ａ・５０ｂを有する。すなわち、第１ロボット３１、第２ロボット３２及び他装置４０は、Ｉ／Ｏポートを２つずつ備えている。
【００３９】
そして、例えば、制御装置１０におけるＩ／Ｏポート５０と第１ロボット３１のＩ／Ｏポート５０ａとはＬＡＮケーブル２にて接続されている。第１ロボット３１のＩ／Ｏポート５０ｂと第２ロボット３２のＩ／Ｏポート５０ａとはＬＡＮケーブル２にて接続されている。第２ロボット３２のＩ／Ｏポート５０ｂと他装置４０のＩ／Ｏポート５０ａとはＬＡＮケーブル２にて接続されている。ここでは、他装置４０がフィールドネットワークの末端の装置である。
【００４０】
制御装置１０は、各ロボット３０の目標位置を示す情報を制御データ６０の各ＩＮデータに付加して、一括して送信部５１よりフィールドネットワークへ送信する（出力処理）。制御装置１０からフィールドネットワークへ送信された制御データ６０は、最初の第１ロボット３１のＩ／Ｏポート５０ａの受信部５２に送信されて、第１ロボット３１が備えるもう一つのＩ／Ｏポート５０ｂの送信部５１から２番目の第２ロボット３２のＩ／Ｏポート５０ａにおける受信部５２へ送信される。この際、第１ロボット３１は、制御装置１０から受信した制御データ６０のうち、自装置のために割り当てられている領域（すなわち制御データ６１）にアクセスして、ＩＮデータ６１ａを取り込むと共にＯＵＴデータ６１ｂに自装置の現在位置を示す情報を付加する。２番目の第２ロボット３２には、第１ロボット３１にてＯＵＴデータ６１ｂに現在位置を示す情報が付加された制御データ６０が送信される。
【００４１】
そして、第２ロボット３２も第１ロボット３１と同様に、受信した制御データ６０のうち、自装置のために割り当てられている領域（すなわち制御データ６２）にアクセスして、ＩＮデータ６２ａを取り込む。加えて、第２ロボット３２は、制御データ６０のうち、第１ロボット３１のために割り当てられている領域（すなわち制御データ６１）にもアクセスし、第１ロボット３１のために割り当てられている制御データ６１のＩＮデータ６１ａ及びＯＵＴデータ６１ｂも取り込む。そして、第２ロボット３２は、制御データ６０のうちＯＵＴデータ６２ｂに自装置の現在位置を示す情報を付加する。同様の処理が、フィールドネットワークを介して接続されている各ロボットにおいて順次行われる。
【００４２】
ここでは、末端の他装置４０においても同様にＩＮデータ７０ａを取り込むと同時にＯＵＴデータ７０ｂに自装置の現在位置を示す情報を付加する。末端の他装置４０から送信された制御データ６０は、フィールドネットワークを逆流して、第２ロボット３２、第１ロボット３１を順に通って、制御装置１０に戻る。
【００４３】
制御装置１０から送信された制御データ６０が最終的にフィールドネットワークを周回（往復）して返ってくるまでの間に、フィールドネットワークを介して接続されている全てのロボット３０のうち、マスター側のロボット３０は、自装置のために割り当てられた制御データにおけるＩＮデータの取り込み及びＯＵＴデータへの自装置の現在位置を示す情報の付加を行う。また、スレーブ側のロボット３０は、自装置のために割り当てられた制御データにおけるＩＮデータの取り込み及びＯＵＴデータへの自装置の現在位置を示す情報の付加と、自装置よりマスター側のロボット３０に割り当てられた制御データの取り込みとを行う。
【００４４】
このように、制御システム１では、フィールドネットワークを介して、所定期間毎に、制御データ６０を周回させる。所定期間は、特に限定されるものではないが、例えば、１ｍｓｅｃ程度とすることができる。なお、フィールドネットワークを制御データ６０が１回周回する期間（所定期間）をフレームと称する場合がある。
【００４５】
なお、第２ロボット３２は、複数のロボット３０のうち、第１ロボット３１だけでなく、第１ロボット３１に加えて他のロボット３０の軌道を計算し、当該他のロボット３０に対しても衝突を回避する行動を採るように設定されていてもよい。この場合、第２ロボット３２は、制御データ６０が末端の他装置４０から返ってきたときに、自装置よりスレーブ側の他のロボット３０が付加したＯＵＴデータを取り込んでもよい。そのため、回避させる優先順位は、ネットワークの接続順（制御データ６０の受信順）とは関係なく設定することができる。
【００４６】
図３は、一実施形態に係る制御システム１が備えるロボット３０の概略構成を表す図である。図３では、制御システム１が備えるロボットの一例として、第２ロボット３２を例示しているが、他のロボット３０についても同様である。第２ロボット３２は、ロボット本体３２ａと、ロボット本体３２ａに接続された、多関節を有する可動部であるロボットアーム３２ｂとを備えている。
【００４７】
第２ロボット３２は、上流側の第１ロボット３１から制御データ６０を取得すると、制御データ６０のうち、自装置のために割り当てられた制御データ６２のＩＮデータ６２ａに付加された目標位置を取得し、可動部であるロボットアーム３２ｂの現在位置を示す情報を自装置のために割り当てられた制御データ６２のＯＵＴデータ６２ｂに付加する。そして、第２ロボット３２は、当該制御データ６０を下流側の他装置４０へ送信する。第２ロボット３２は、可動部であるロボットアーム３２ｂの現在位置から、取得した目標位置へ至る軌道を計算する。そして、第２ロボット３２は、計算した軌道に沿って可動部であるロボットアーム３２ｂを移動させる。これにより、可動部であるロボットアーム３２ｂの現在位置が更新される。
【００４８】
ここで、軌道とは、ロボットアーム３２ｂの現在位置から目標位置までの所定時間毎（フレーム毎）の予定位置（ＸＹＺ座標）である。換言すると、軌道とは、ロボットアーム３２ｂが現在位置から目標位置まで動く所定時間毎（フレーム毎）のロボットアーム３２ｂが存在する予定の領域の集合である。軌道とは、時間と空間とを合わせた４次元空間においてロボットアーム３２ｂが存在する予定の領域の集合である。
【００４９】
ここで、ロボットアーム３２ｂが現在位置から目標位置まで動くときの存在する予定の領域の集合（すなわち軌道）だけを考慮して第２ロボット３２及び他のロボット３０の制御を行うと、種々の誤差によって、第２ロボット３２が他のロボット３０と衝突してしまう可能性がある。このため、予め、ロボットアーム３２ｂを中心とした筒状等、ロボットアーム３２ｂとその周囲とを含む広い領域である所定の周囲範囲Ｒを設定しておく。そして、第２ロボット３２は、ロボットアーム３２ｂの軌道を計算すると、当該軌道と周囲範囲Ｒとに基づいて、軌道よりも所定時間毎の領域が大きい領域の集合である周囲範囲軌道を計算する。そして、後述のように、当該計算した第２ロボット３２の周囲範囲軌道と、マスター側である第１ロボット３１の周囲範囲軌道とに基づいて、マスター側の第１ロボット３１との衝突を避ける回避行動を採る。つまり、第２ロボと３２は、周囲範囲軌道内にマスター側の第１ロボット３１が存在する場合は、自装置が回避すべきと判定する。
【００５０】
また、現在位置とは、第２ロボット３２の可動部であるロボットアーム３２ｂの実際の現在位置（制御データ６０を取得した時のロボットアーム３２ｂの位置）であってもよいし、次フレーム時のロボットアーム３２ｂの予定位置であってもよい。
【００５１】
図４は、第１ロボット３１の機能ブロックを表す図である。本実施形態では、第１ロボット３１は、第２ロボット３２が衝突を回避する回避対象のロボット３０である。すなわち、第１ロボット３１は、第２ロボット３２よりも衝突と回避させる優先順位が高いマスター側のロボット３０の例である。
【００５２】
第１ロボット３１は、ロボット本体３１ａと、ロボットアーム（可動部）３１ｂとを備える。ロボット本体３１ａは、Ｉ／Ｏポート５０ａ・５０ｂに加え、通信制御部２１と、第１制御部２２Ｍとを備えている。
【００５３】
通信制御部２１は、Ｉ／Ｏポート５０ａ及びＩ／Ｏポート５０ｂを介して、第１ロボット３１の通信を制御する。通信制御部２１は、外部装置からＩ／Ｏポート５０ａ又はＩ／Ｏポート５０ｂの受信部５２を介して制御データ６０を受信する。通信制御部２１は、制御データ６０のうちＩＮデータ６１ａを取り込んで第１制御部２２Ｍに出力すると共に、現在位置を示す情報を制御データ６０のＯＵＴデータ６１ｂに書き込む。通信制御部２１は、制御データ６０を、Ｉ／Ｏポート５０ａ又はＩ／Ｏポート５０ｂの送信部５１へ出力することで、外部装置へ送信する。
【００５４】
第１制御部２２Ｍは、第１ロボット３１の駆動を制御する。また、第１制御部２２Ｍは、制御データ６０に付加された各種情報に基づいて第１ロボット３１の動作を制御したり、制御データ６０に付加する各種情報を生成したりする。第１制御部２２Ｍは、軌道計算部２３Ｍと、動作制御部２６とを備えている。この第１制御部２２Ｍの処理の流れについて、図４及び図５を用いて説明する。
【００５５】
図５は、第１ロボット３１の第１制御部２２Ｍの処理の流れを表す図である。軌道計算部２３Ｍは、制御データ６０のうち、第１ロボット３１用に割り当てられている制御データ６１におけるＩＮデータ６１ａに付加されているロボットアーム３１ｂ（自装置の可動部）の目標位置を取得する（ステップＳ１）。そして、軌道計算部２３Ｍは、ロボットアーム３１ｂの現在位置と、取得した目標位置とから、ロボットアーム３１ｂにおける目標位置へ至る軌道を計算する（ステップＳ２）。次いで、動作制御部２６は、軌道計算部２３Ｍが計算した軌道に基づいて、第１ロボット３１の可動部であるロボットアーム３１ｂの動作を制御する（ステップＳ３）。そして、軌道計算部２３Ｍは、ステップＳ２にて計算した軌道から、次フレーム時のロボットアーム３１ｂの予定位置を、現在位置を示す情報として、第１ロボット３１の通信制御部２１に出力する（ステップＳ４）。通信制御部２１は、次フレームにおいて制御データ６０を受信すると、ＩＮデータ６１ａを取り込んで第１制御部２２Ｍに出力すると共に、現在位置を示す情報をＯＵＴデータ６１ｂに書き込む。通信制御部２１は、制御データ６０を、送信部５１を介して下流側の第２ロボット３２へ送信する。
【００５６】
図６は、第２ロボット３２の機能ブロックを表す図である。本実施形態では、第２ロボット３２は、第１ロボット３１に対して衝突することを回避する行動を採る回避側のロボット３０である。すなわち、第２ロボット３２は、第１ロボット３１よりも衝突を回避させる優先順位が低いスレーブ側のロボット３０の例である。
【００５７】
第２ロボット３２は、ロボット本体３２ａと、ロボットアーム（可動部）３２ｂとを備える。ロボット本体３２ａは、Ｉ／Ｏポート５０ａ・５０ｂに加え、通信制御部２１と、第２制御部２２Ｓとを備えている。
【００５８】
通信制御部２１は、Ｉ／Ｏポート５０ａ及びＩ／Ｏポート５０ｂを介して、第２ロボット３２の通信を制御する。通信制御部２１は、外部装置からＩ／Ｏポート５０ａ又はＩ／Ｏポート５０ｂの受信部５２を介して制御データ６０を受信する。通信制御部２１は、制御データ６０のうちＩＮデータ６２ａ、ＩＮデータ６１ａ、及びＯＵＴデータ６１ｂを取り込んで第２制御部２２Ｓに出力すると共に、現在位置を示す情報を制御データ６０のＯＵＴデータ６２ｂに書き込む。通信制御部２１は、制御データ６０を、Ｉ／Ｏポート５０ａ又はＩ／Ｏポート５０ｂの送信部５１へ出力することで、外部装置へ送信する。
【００５９】
第２制御部２２Ｓは、第２ロボット３２の駆動を制御する。また、第２制御部２２Ｓは、制御データ６０に付加された各種情報に基づいて第２ロボット３２の動作を制御したり、制御データ６０に付加する各種情報を生成したりする。第２制御部２２Ｓは、軌道計算部２３Ｓと、周囲範囲軌道計算部２４と、判定部２５と、動作制御部２６とを備えている。この第２制御部２２Ｓの処理の流れについて、図６及び図７を用いて説明する。
【００６０】
図７は、第２ロボット３２の第２制御部２２Ｓの処理の流れを表す図である。軌道計算部２３Ｓは、制御データ６０のうち、第２ロボット３２に割り当てられている制御データ６２におけるＩＮデータ６２ａに付加されているロボットアーム３２ｂ（自装置の可動部）の目標位置を取得する。加えて、軌道計算部２３Ｓは、制御データ６０のうち、回避対象である第１ロボット３１に割り当てられている制御データ６１における、ＩＮデータ６１ａに付加されているロボットアーム３１ｂ（回避対象のロボットにおける可動部）の目標位置と、ＯＵＴデータ６１ｂに付加されているロボットアーム３１ｂの現在位置とを取得する（ステップＳ２１）。
【００６１】
次いで、軌道計算部２３Ｓは、ロボットアーム３２ｂ（自装置の可動部）の現在位置と、取得したロボットアーム３２ｂの目標位置とから、ロボットアーム３２ｂにおける目標位置へ至る軌道を計算する（ステップＳ２２）。さらに、軌道計算部２３Ｓは、ロボットアーム３１ｂの現在位置と、ロボットアーム３１ｂの目標位置とから、ロボットアーム３１ｂの目標位置へ至る軌道も計算する（ステップＳ２３）。
【００６２】
そして、周囲範囲軌道計算部２４は、ステップＳ２２にて軌道計算部２３Ｓが計算したロボットアーム３２ｂの軌道と、自身又は他の記憶部に予め記憶されているロボットアーム３２ｂの周囲範囲Ｒとから、ロボットアーム３２ｂにおける目標位置へ至るまでの周囲範囲軌道を計算する（ステップＳ２４）。さらに、周囲範囲軌道計算部２４は、ステップＳ２３にて軌道計算部２３Ｓが計算したロボットアーム３１ｂ（回避対象のロボットにおける可動部）の軌道と、自身又は他の記憶部に予め記憶されているロボットアーム３１ｂの周囲範囲Ｒとから、ロボットアーム３１ｂにおける目標位置へ至るまでの周囲範囲軌道を計算する（ステップＳ２５）。
【００６３】
次いで、判定部２５は、ステップＳ２４において周囲範囲軌道計算部２４が計算したロボットアーム３２ｂの周囲範囲軌道（第２周囲範囲軌道）に、ステップＳ２５において周囲範囲軌道計算部２４が計算したロボットアーム３１ｂの周囲範囲軌道（第１周囲範囲軌道）が含まれるか否か（一部でも重なるか否か）を判定する（ステップＳ２６）。
【００６４】
ステップＳ２６において、ロボットアーム３２ｂの周囲範囲軌道に、ロボットアーム３１ｂの周囲範囲軌道が含まれると判定部が判定すると（ステップＳ２６のＹｅｓ）、軌道計算部２３Ｓは、ロボットアーム３１ｂの周囲範囲軌道を避けるように、ロボットアーム３２ｂにおける現在位置から目標位置へ至る軌道を再計算（修正）する（ステップＳ２７）。例えば、軌道計算部２３Ｓは、ロボットアーム３１ｂの周囲範囲軌道から離れる方向に、ロボットアーム３２ｂの軌道を修正する。そして、周囲範囲軌道計算部２４は、ステップＳ２７にて軌道計算部２３Ｓが再計算したロボットアーム３２ｂにおける軌道と、自身又は他の記憶部に予め記憶されているロボットアーム３２ｂの周囲範囲Ｒとから、ロボットアーム３２ｂにおける目標位置へ至るまでの周囲範囲軌道を再計算する（ステップＳ２８）。そして、ステップＳ２６へ戻る。
【００６５】
ステップＳ２６において、ロボットアーム３２ｂの周囲範囲軌道に、ロボットアーム３１ｂの周囲範囲軌道が含まれないと判定部が判定すると（ステップＳ２６のＮｏ）、動作制御部２６は、軌道計算部２３Ｓが計算した軌道に基づいて、第２ロボット３２の可動部であるロボットアーム３２ｂの動作を制御する（ステップＳ２９）。そして、軌道計算部２３Ｓは、ロボットアーム３２ｂの軌道から、次フレーム時のロボットアーム３２ｂの予定位置を、現在位置を示す情報として、第２ロボット３２の通信制御部２１に出力する（ステップＳ３０）。通信制御部２１は、次フレームにおいて制御データ６０を受信すると、ＩＮデータ６２ａ、ＩＮデータ６１ａ、及びＯＵＴデータ６１ｂを取り込んで第２制御部２２Ｓに出力すると共に、現在位置を示す情報をＯＵＴデータ６２ｂに書き込む。通信制御部２１は、制御データ６０を、送信部５１を介して下流側の他のロボット３０へ送信する。
【００６６】
なお、ステップＳ２７において、軌道計算部２３Ｓは、ロボットアーム３１ｂの周囲範囲軌道を避けるように、ロボットアーム３２ｂの軌道を再計算している。この軌道計算部２３Ｓが軌道を再計算する方法としては、ロボットアーム３１ｂの周囲範囲軌道を避けるように、ロボットアーム３２ｂの現在位置から目的位置までの空間経路を変更してもよいし、空間経路を変更せずにロボットアーム３２ｂの移動速度を変更する（すなわち、所定期間毎のロボットアーム３２ｂの予定位置を変更する）ようにしてもよい。
【００６７】
また、複数のロボット３０それぞれに、他のロボット３０に回避行動を採らせる優先順位を設けずに、それぞれのロボット３０が、互いに回避行動を採ってもよい。
【００６８】
（主な効果）
このように、制御システム１において、スレーブ側の第２ロボット３２は、マスター側の第１ロボット３１のロボットアーム３１ｂにおける現在位置から目標位置へ至るまでの軌道を特定するための制御データ６１におけるＩＮデータ６１ａ及びＯＵＴデータ６１ｂと、自装置のロボットアーム３２ｂの目標位置を示す情報が付加されたＩＮデータ６２ａとを、フィールドネットワークを介して取得する。
【００６９】
そして、第２ロボット３２において、判定部２５は、第１ロボット３１のロボットアーム３１ｂの軌道と、第２ロボット３２の目標位置から特定される、ロボットアーム３２ｂの現在位置から目標位置へ至るまでの軌道とに基づいて、第１ロボット３１と第２ロボット３２とが衝突するか否かを判定する（Ｓ２６）。そして、軌道計算部２３Ｓは、第１ロボット３１と第２ロボット３２とが衝突する場合、第１ロボット３１から避けるように第２ロボットのロボットアーム３２ｂの軌道を再計算する（ステップＳ２７）。
【００７０】
このように、第２ロボット３２自身が、第１ロボット３１と衝突しないような軌道を計算する。このため、ユーザは、干渉を考えずに、ロボットを動作させるユーザプログラムを作ることができる。この結果、ロボット３０自身が他のロボット３０との衝突を回避することで、ロボット３０の動作を指示するユーザプログラムを作成するユーザの負担を軽減した制御システム１が実現できる。
【００７１】
また、第２ロボット３２において、軌道計算部２３Ｓは、第２ロボット３２におけるロボットアーム３２ｂの現在位置から、第２ロボット３２のロボットアーム３２ｂの目標位置へ至るまでの、所定期間毎の第２ロボット３２のロボットアーム３２ｂの予定位置を軌道として計算する（ステップＳ２２）。このように、第２ロボット３２を制御する制御装置１０側ではなく、第２ロボット３２側にて、第２ロボット３２のロボットアーム３２ｂの現在位置から目標位置へ至るまでの複数の予定位置を軌道として計算することで、ユーザが予め第２ロボット３２のロボットアーム３２ｂの軌道をプログラミングしておく手間を省くことができる。
【００７２】
前記第２ロボット３２における周囲範囲軌道計算部２４は、第２ロボット３２のロボットアーム３２ｂの軌道に基づいて、第２ロボット３２のロボットアーム３２ｂにおける周囲範囲軌道を計算し（ステップＳ２４）、第１ロボット３１のロボットアーム３１ｂの軌道に基づいて、第１ロボット３１のロボットアーム３１ｂにおける周囲範囲軌道を計算する（ステップＳ２５）。そして、判定部２５は、具体的には、第２ロボット３２におけるロボットアーム３２ｂの周囲範囲軌道に、第１ロボット３１におけるロボットアーム３１ｂの周囲範囲軌道が含まれるか否かを判定することで（ステップＳ２６）、第１ロボット３１と第２ロボット３２とが衝突するか否かを判定する。
【００７３】
これにより、第２ロボット３２を制御する制御装置１０側ではなく、第２ロボット３２側において、第１ロボット３１の周囲範囲軌道と第２ロボット３２の周囲範囲軌道とを計算するため、両者が衝突しないような第２ロボット３２の軌道をより早く決定することができる。これにより、第１ロボット３１及び第２ロボット３２が衝突しないように確保するマージン（周囲範囲）を小さくすることができる。それゆえ、製造ラインのサイズを小さくすることができる。また、各ロボット３０の周囲範囲軌道を計算する負荷を制御装置１０が計算していた場合と比べて、当該負荷を分散することができる。
【００７４】
そして、軌道計算部２３Ｓは、判定部Ｓ２６によって、第１ロボット３１と第２ロボット３２とが衝突すると判定された場合（ステップＳ２６のＹｅｓ）、第１ロボット３１から避けるように第２ロボット３２のロボットアーム３２ｂの軌道を計算しなおす（ステップＳ２７）。そして、軌道計算部２３Ｓは、計算しなおした軌道における次フレーム時の第２ロボット３２のロボットアーム３２ｂの予定位置を表す情報（予定位置情報）を、制御データ６２におけるＯＵＴデータ６２ｂに付加する。これにより、第２ロボット３２におけるロボットアーム３２ｂの現在位置を、他の装置に通知することができる。よって、適宜、他の装置は、第２ロボット３２におけるロボットアーム３２ｂの現在位置及び目標位置に基づいて、第２ロボット３２におけるロボットアーム３２ｂと衝突しないように回避行動を採ることができる。
【００７５】
〔ソフトウェアによる実現例〕
第１ロボット３１及び第２ロボット３２の制御ブロック（特に軌道計算部２３Ｓ、周囲範囲軌道計算部２４、判定部２５、動作制御部２６、通信制御部２１、及び軌道計算部２３Ｍ）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【００７６】
後者の場合、第２ロボット３２は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばＣＰＵ（Central Processing Unit）を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００７７】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００７８】
１  制御システム
２  ＬＡＮケーブル
１０  制御装置
２１  通信制御部
２２Ｍ、２２Ｓ  制御部
２３Ｍ、２３Ｓ  軌道計算部
２４  周囲範囲軌道計算部
２５  判定部
２６  動作制御部
３０  ロボット
３１  第１ロボット（ロボット）
３１ａ、３２ａ  ロボット本体
３１ｂ、３２ｂ  ロボットアーム（可動部）
３２  第２ロボット（ロボット）
４０  他装置
５０、５０ａ、５０ｂ  Ｉ／Ｏポート
５１  送信部
５２  受信部
６０、６１、６２  制御データ
６１ａ、６２ａ、７０ａ、７１ａ  ＩＮデータ
６１ｂ、６２ｂ、７０ｂ  ＯＵＴデータ
【図１】
2020121384.tif 000003
【図２】
2020121384.tif 000004
【図３】
2020121384.tif 000005
【図４】
2020121384.tif 000006
【図５】
2020121384.tif 000007
【図６】
2020121384.tif 000008
【図７】
2020121384.tif 000009