(57)【要約】【課題】作業過程で生じるケーブルの破損をスカラロボットの制御により防止することができる制御システムを提供する。【解決手段】制御システムは、スカラロボット３００と、スカラロボット３００を制御するコントローラとを備える。コントローラは、スカラロボット３００における制御対象の目標位置を取得する取得部と、制御対象が目標位置に移動する過程においてケーブル３３３がスカラロボット３００の部品に衝突しないように作業ツール３３２の回転方向を決定する決定部とを含む。【選択図】図２
2018144141.tif 000002
【特許請求の範囲】
【請求項１】
制御システムであって、
ロボットと、
前記ロボットを制御するためのコントローラとを備え、
前記ロボットは、
第１回転軸と、
前記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、
前記第１回転軸と平行に配置され、前記第１アームに設けられている第２回転軸と、
前記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、
前記第２回転軸と平行に配置され、前記第２アームに設けられている主軸と、
前記主軸を中心として回転可能に構成され、前記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、
前記第２アームおよび前記作業ツールを繋ぐケーブルとを含み、
前記コントローラは、
前記ロボットにおける制御対象の目標位置を取得するための取得部と、
前記制御対象が前記目標位置に移動する過程において前記ケーブルが前記ロボットの部品に衝突しないように前記作業ツールの回転方向を決定するための決定部とを含む、制御システム。
【請求項２】
前記決定部は、前記制御対象の移動前における前記第２アームの回転角度と、前記制御対象の移動前における前記作業ツールの回転角度と、前記制御対象の移動後における前記作業ツールの回転角度との間の相対関係に基づいて前記回転方向を決定する、請求項１に記載の制御システム。
【請求項３】
前記決定部は、前記制御対象の移動前における前記第２アームの回転角度と、前記制御対象の移動後における前記第２アームの回転角度と、前記制御対象の移動前における前記作業ツールの回転角度と、前記制御対象の移動後における前記作業ツールの回転角度との間の相対関係に基づいて、前記回転方向を決定する、請求項１に記載の制御システム。
【請求項４】
前記決定部は、前記制御対象の移動を開始する前に前記回転方向を決定する、請求項１〜３のいずれか１項に記載の制御システム。
【請求項５】
前記作業ツールは、前記制御対象が前記目標位置に移動する過程において前記回転方向に回転するように構成されている、請求項１〜４のいずれか１項に記載の制御システム。
【請求項６】
ロボットのコントローラであって、
前記ロボットは、
第１回転軸と、
前記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、
前記第１回転軸と平行に配置され、前記第１アームに設けられている第２回転軸と、
前記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、
前記第２回転軸と平行に配置され、前記第２アームに設けられている主軸と、
前記主軸を中心として回転可能に構成され、前記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、
前記第２アームおよび前記作業ツールを繋ぐケーブルとを含み、
前記コントローラは、
前記ロボットにおける制御対象の目標位置を取得するための取得部と、
前記制御対象が前記目標位置に移動する過程において前記ケーブルが前記ロボットの部品に衝突しないように前記作業ツールの回転方向を決定するための決定部とを含む、コントローラ。
【請求項７】
ロボットの制御方法であって、
前記ロボットは、
第１回転軸と、
前記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、
前記第１回転軸と平行に配置され、前記第１アームに設けられている第２回転軸と、
前記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、
前記第２回転軸と平行に配置され、前記第２アームに設けられている主軸と、
前記主軸を中心として回転可能に構成され、前記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、
前記第２アームおよび前記作業ツールを繋ぐケーブルとを含み、
前記制御方法は、
前記ロボットにおける制御対象の目標位置を取得するステップと、
前記制御対象が前記目標位置に移動する過程において前記ケーブルが前記ロボットの部品に衝突しないように前記作業ツールの回転方向を決定するステップとを備える、制御方法。
【請求項８】
ロボットの制御プログラムであって、
前記ロボットは、
第１回転軸と、
前記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、
前記第１回転軸と平行に配置され、前記第１アームに設けられている第２回転軸と、
前記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、
前記第２回転軸と平行に配置され、前記第２アームに設けられている主軸と、
前記主軸を中心として回転可能に構成され、前記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、
前記第２アームおよび前記作業ツールを繋ぐケーブルとを含み、
前記制御プログラムは、前記ロボットのコントローラに、
前記ロボットにおける制御対象の目標位置を取得するステップと、
前記制御対象が前記目標位置に移動する過程において前記ケーブルが前記ロボットの部品に衝突しないように前記作業ツールの回転方向を決定するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、スカラロボットの制御に関し、特に、スカラロボットの制御対象の回転方向を決定するための技術に関する。
【背景技術】
【０００２】
ＦＡ（Factory  Automation）分野において、スカラ（ＳＣＡＲＡ：Selective Compliance Assembly Robot Arm）ロボットと呼ばれる水平多関節ロボットが普及している。スカラロボットとは、互いに連結している複数のアームが水平面上で動作する産業用ロボットの総称である。
【０００３】
スカラロボットは、互いに連結されている複数のアームを協働して回転駆動することでワークに対して所定の作業を行う。ワークに対する作業は、スカラロボットのアームを介して駆動される作業ツールによって行われる。作業例として、スカラロボットは、各アームを回転駆動することで作業ツールをワークの位置まで移動し、第１ライン上を搬送されるワークをピックアップさせる。その後、スカラロボットは、第１ライン上を搬送される容器でピックアップしたワークをリリースする。これにより、順次搬送されるワークが自動で容器に入れられる。
【０００４】
スカラロボットの各部品は、ケーブルで繋がれている。ケーブルは、作業過程において他の部品に衝突したり、ねじれたりすることによって、破損してしまうことがある。このようなケーブルの破損を防止するために様々な技術が開発されている。
【０００５】
当該技術に関し、特開２０１６−１５３１５１号公報（特許文献１）は、第２アームが第１アームに対して回動することで生じるパワーケーブルのねじれを解消することを目的とするロボットの関節構造ロボットの関節構造を開示している。
【０００６】
特開２０１６−７８１６０号公報（特許文献２）は、電気ケーブルと周囲の部品等との干渉、干渉した部品の破損、電気ケーブルの破断などを解消することを目的とするロボットアーム機構を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−１５３１５１号公報
【特許文献２】特開２０１６−７８１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１，２に開示される技術は、いずれも、メカ的な構成を追加することでケーブルの破損を解消している。しかしながら、メカ的な構成が追加されると、スカラロボットのコストが高くなり、スカラロボットのサイズが大きくなってしまう。したがって、作業過程で生じるケーブルの破損をスカラロボットの制御により防止するための技術が望まれている。
【課題を解決するための手段】
【０００９】
ある局面に従うと、制御システムは、ロボットと、上記ロボットを制御するためのコントローラとを備える。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記コントローラは、上記ロボットにおける制御対象の目標位置を取得するための取得部と、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するための決定部とを含む。
【００１０】
好ましくは、上記決定部は、上記制御対象の移動前における上記第２アームの回転角度と、上記制御対象の移動前における上記作業ツールの回転角度と、上記制御対象の移動後における上記作業ツールの回転角度との間の相対関係に基づいて上記回転方向を決定する。
【００１１】
好ましくは、上記決定部は、上記制御対象の移動前における上記第２アームの回転角度と、上記制御対象の移動後における上記第２アームの回転角度と、上記制御対象の移動前における上記作業ツールの回転角度と、上記制御対象の移動後における上記作業ツールの回転角度との間の相対関係に基づいて、上記回転方向を決定する。
【００１２】
好ましくは、上記決定部は、上記制御対象の移動を開始する前に上記回転方向を決定する。
【００１３】
好ましくは、上記作業ツールは、上記制御対象が上記目標位置に移動する過程において上記回転方向に回転するように構成されている。
【００１４】
他の局面に従うと、ロボットのコントローラが提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記コントローラは、上記ロボットにおける制御対象の目標位置を取得するための取得部と、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するための決定部とを含む。
【００１５】
他の局面に従うと、ロボットの制御方法が提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記制御方法は、上記ロボットにおける制御対象の目標位置を取得するステップと、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するステップとを備える。
【００１６】
他の局面に従うと、ロボットの制御プログラムが提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記制御プログラムは、上記ロボットのコントローラに、上記ロボットにおける制御対象の目標位置を取得するステップと、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するステップとを実行させる。
【発明の効果】
【００１７】
ある局面において、作業過程で生じるケーブルの破損をスカラロボットの制御により防止することができる。
【００１８】
本開示の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１９】
【図１】第１の実施の形態に従う制御システムの構成例を示す模式図である。
【図２】第１の実施の形態に従うスカラロボットの側面図である。
【図３】第１の実施の形態に従うスカラロボットの平面図である。
【図４】第１の実施の形態に従うスカラロボットをＺ方向から表わした図である。
【図５】第２アームと作業ツールとの位置関係の一例を示す図である。
【図６】第２アームと作業ツールとの位置関係の一例を示す図である。
【図７】第２アームと作業ツールとの位置関係の一例を示す図である。
【図８】第２アームと作業ツールとの位置関係の一例を示す図である。
【図９】第２アームと作業ツールとの位置関係の一例を示す図である。
【図１０】第２アームと作業ツールとの位置関係の一例を示す図である。
【図１１】第１の実施の形態に従う制御システムを構成するコントローラの機能構成の一例を示す図である。
【図１２】第１の実施の形態に従う制御システムを構成するサーボドライバの機能構成の一例を示す図である。
【図１３】決定部による処理を表わすフローチャートである。
【図１４】第１の実施の形態における、作業ツールの回転方向を決定する処理フローを表わす図である。
【図１５】第１の実施の形態に従うコントローラのハードウェア構成例を示すブロッグ図である。
【図１６】第２の実施の形態に従うコントローラの概要を説明するための図である。
【図１７】第２の実施の形態における、作業ツールの回転方向を決定する処理フローを表わす図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２１】
＜第１の実施の形態＞
［Ａ．システム構成］
まず、本実施の形態に従う制御システム１の構成例について説明する。図１は、本実施の形態に従う制御システム１の構成例を示す模式図である。
【００２２】
図１を参照して、制御システム１は、設定装置１００と、ＰＬＣ（Programmable Logic Controller）などのコントローラ２００と、複数のドライブ装置と、スカラロボット３００とを含む。図１の例では、ドライブ装置の一例として、サーボモータ３４０Ａ〜３４０Ｄを駆動するサーボドライバ４００Ａ〜４００Ｄを例示する。以下では、サーボモータ３４０Ａ〜３４０Ｄを総称してサーボモータ３４０ともいう。サーボドライバ４００Ａ〜４００Ｄを総称してサーボドライバ４００ともいう。ドライブ装置としては、サーボドライバ４００に限定されることなく、被駆動装置であるモータに応じて、対応するドライブ装置が採用される。たとえば、誘導モータまたは同期モータを駆動する場合には、ドライブ装置として、インバータドライブなどが採用されてもよい。
【００２３】
設定装置１００は、たとえば、ＰＣ（Personal Computer）、タブレット端末、または、スマートフォンなどの端末装置である。設定装置１００およびコントローラ２００は、フィールドネットワークＮＷ１に接続されている。フィールドネットワークＮＷ１には、たとえば、ＥｔｈｅｒＮＥＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ１は、ＥｔｈｅｒＮＥＴに限定されず、任意の通信手段が採用され得る。たとえば、設定装置１００およびコントローラ２００は、信号線で直接接続されてもよい。
【００２４】
コントローラ２００およびサーボドライバ４００は、デイジーチェーンでフィールドネットワークＮＷ２に接続されている。フィールドネットワークＮＷ２には、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ２は、ＥｔｈｅｒＣＡＴに限定されず、任意の通信手段が採用され得る。一例として、コントローラ２００およびサーボドライバ４００は、信号線で直接接続されてもよい。また、コントローラ２００およびサーボドライバ４００は、一体的に構成されてもよい。
【００２５】
サーボドライバ４００は、スカラロボット３００のサーボモータ３４０を駆動する。サーボモータ３４０の回転軸にはエンコーダ（図示しない）が配置されている。当該エンコーダは、サーボモータ３４０のフィードバック値として、サーボモータの位置（回転角度）、回転速度、累積回転数などをサーボドライバ４００へ出力する。但し、サーボモータ３４０からのフィードバック値は、コントローラ２００へ直接入力されてもよい。
【００２６】
なお、図１には、制御システム１が１つのコントローラ２００で構成されている例が示されているが、制御システム１は、複数のコントローラ２００で構成されてもよい。また、図１には、制御システム１が１つのスカラロボット３００で構成されている例が示されているが、制御システム１は、複数のスカラロボット３００で構成されてもよい。また、図１には、コントローラ２００およびサーボドライバ４００が直接的に接続されている例が示されているが、コントローラ２００およびサーボドライバ４００の間にロボットコントローラなどが設けられてもよい。
【００２７】
［Ｂ．スカラロボットの装置構成］
図２および図３を参照して、スカラロボット３００について説明する。図２は、スカラロボット３００の側面図である。図３は、スカラロボット３００の平面図である。
【００２８】
スカラロボット３００は、基台３２０と、第１回転軸３２２と、第１アーム３２４と、第２回転軸３２６と、第２アーム３２８と、主軸３３１と、作業ツール３３２とを含む。
【００２９】
基台３２０および第１アーム３２４は、第１回転軸３２２によって連結されている。第１回転軸３２２はサーボモータ３４０Ａ（図１参照）によって回転駆動される。その結果、第１アーム３２４は、第１回転軸３２２を中心に回転駆動される。
【００３０】
第１アーム３２４および第２アーム３２８は、第２回転軸３２６によって連結されている。より具体的には、第１アーム３２４の一端は、第１回転軸３２２を介して基台３２０に連結されており、第１アーム３２４の他端は、第２回転軸３２６を介して第２アーム３２８に連結されている。第２回転軸３２６は、サーボモータ３４０Ｂ（図１参照）によって回転駆動される。その結果、第２アーム３２８は、第２回転軸３２６を中心に回転駆動される。第１アーム３２４と第２アーム３２８とが連動して回転駆動されることで、第２アーム３２８は、動作領域ＡＲ１内で動作することができる。
【００３１】
説明の便宜のために、以下では、水平面上における所定方向をＸ方向ともいう。また、水平面上においてＸ方向に直交する方向をＹ方向ともいう。Ｘ方向およびＹ方向に直交する方向をＺ方向ともいう。すなわち、Ｚ方向は、鉛直方向に相当する。
【００３２】
主軸３３１は、サーボモータ３４０Ｃ（図１参照）によって、第２回転軸３２６と平行な方向（すなわち、Ｚ方向）に駆動可能に構成される。また、主軸３３１は、第３回転軸として機能し、サーボモータ３４０Ｄ（図１参照）によって回転駆動される。すなわち、主軸３３１は、Ｚ方向に駆動可能に構成されるとともに、Ｚ方向の軸中心として回転可能に構成される。
【００３３】
主軸３３１の先端には、ワークＷに対して予め定められた作業を行うための作業ツール３３２が設けられている。ワークＷは、製品または半製品である。作業ツール３３２は、ワークＷに作用を及ぼすエンドエフェクタとして機能する。作業ツール３３２は、主軸３３１に取り外し可能に構成される。すなわち、主軸３３１の先端には、作業ツール３３２を接続するためのインターフェイスが設けられる。
【００３４】
作業ツール３３２は、たとえば、ワークＷのピックアップツールである。一例として、ピックアップツールは、吸引力を利用してワークＷを吸着することでワークＷをピックアップする。あるいは、ピックアップツールは、ワークＷを把持することによりワークＷをピックアップする。作業ツール３３２による作業の一例として、作業ツール３３２は、ネジなどのワークＷを、コンベア上を搬送される製品に取り付ける作業を行う。あるいは、作業ツール３３２は、第１コンベア上を搬送されるワークＷを、第２コンベア上を搬送される容器に順次移動する作業を行う。
【００３５】
第２アーム３２８と作業ツール３３２との間には、ケーブル３３３が接続されている。より具体的には、第２アーム３２８の表面には、コネクタ３２８Ａが設けられており、作業ツール３３２の表面には、コネクタ３３２Ａが設けられている。ケーブル３３３の一端は、コネクタ３２８Ａに電気的に接続され、ケーブル３３３の他端は、コネクタ３３２Ａに電気的に接続される。制御信号や駆動電力は、ケーブル３３３を介して作業ツール３３２に送られる。
【００３６】
［Ｃ．スカラロボットの動作制御］
図４を参照して、スカラロボット３００の動作制御について説明する。図４は、Ｚ方向からスカラロボット３００を表わした図である。図４においては、第１回転軸３２２と、第１アーム３２４と、第２回転軸３２６と、第２アーム３２８と、主軸３３１とが簡略化して表わされている。
【００３７】
上述したように、第２アーム３２８と作業ツール３３２との間には、ケーブル３３３が接続されている。作業ツール３３２の回転方向によっては、ケーブル３３３がスカラロボット３００の部品（たとえば、第２アーム３２８や主軸３３１）に衝突してしまう。その結果、ケーブル３３３がスカラロボット３００の部品で擦れたり、当該部品に引っかかったりし、ケーブル３３３が破損してしまう。そこで、本実施の形態に従うコントローラ２００は、スカラロボット３００の駆動過程においてケーブル３３３がスカラロボット３００の部品に衝突しないように作業ツール３３２の回転方向を決定する。
【００３８】
説明の便宜のために、以下では、ＸＹ平面上における反時計回りの回転を「正回転」ともいい、ＸＹ平面上における時計回りの回転を「負回転」ともいう。また、ＸＹ平面上において作業ツール３３２（または主軸３３１）を基準として固定されている所定方向を「ケーブル方向３３５」ともいう。ケーブル方向３３５は、作業ツール３３２に対してケーブル３３３が配置されているＸＹ平面上の方向と同じまたは略同じである。
【００３９】
図４（Ａ）には、作業ツール３３２が方向Ｄ１から方向Ｄ２に正回転している様子が示されている。図４（Ａ）に示される第２アーム３２８の回転角度と作業ツール３３２の回転角度との関係では、作業ツール３３２が正回転すると、ケーブル方向３３５が第２アーム３２８を跨ぐ。その結果、ケーブル３３３が第２アーム３２８に接触してしまう。
【００４０】
図４（Ｂ）には、作業ツール３３２が方向Ｄ１から方向Ｄ２に負回転している様子が示されている。図４（Ｂ）に示される第２アーム３２８の回転角度と作業ツール３３２の回転角度との関係では、作業ツール３３２が方向Ｄ１から方向Ｄ２に負回転する過程で、ケーブル方向３３５は第２アーム３２８を跨がない。すなわち、ケーブル３３３は、第２アーム３２８に接触しない。
【００４１】
このように、作業ツール３３２を回転させるべき方向は、作業ツール３３２の移動前後における、第２アーム３２８と作業ツール３３２との位置関係に応じて決まる。この点に着目して、コントローラ２００は、スカラロボット３００の制御対象が現在位置から目標位置に移動する過程においてケーブル３３３がスカラロボット３００の部品に接触しないように作業ツール３３２の回転方向を決定する。ここでいう制御対象とは、スカラロボット３００を構成する任意の駆動部品である。一例として、当該制御対象は、第１アーム３２４、第２アーム３２８、主軸３３１、または作業ツール３３２などである。
【００４２】
ケーブル方向３３５が第２アーム３２８を跨がないように作業ツール３３２の回転方向が決定されることで、ケーブル３３３がスカラロボット３００の部品に接触することが防止される。その結果、ケーブル３３３が近傍の部品で擦れたり、近傍の部品に引っかかったりすることが防止され、ケーブル３３３の破損が抑制される。
【００４３】
［Ｄ．回転方向の決定方法］
図５〜図１０を参照して、作業ツール３３２の回転方向の決定方法について説明する。図５〜図１０は、第２アーム３２８と作業ツール３３２との位置関係の一例を示す図である。
【００４４】
上述したように、スカラロボット３００のコントローラ２００は、第２アーム３２８と作業ツール３３２との位置関係に応じて作業ツール３３２を回転させるべき方向を決定する。
【００４５】
以下では、説明の便宜のために、目標位置への移動開始前における第２アーム３２８の回転角度を「回転角度θＡ１」として表わす。目標位置への移動開始前における作業ツール３３２の回転角度を「回転角度θＢ１」として表わす。目標位置への移動後における作業ツール３３２の回転角度を「回転角度θＢ２」として表わす。回転角度θＡ１、回転角度θＢ１、および回転角度θＢ１は、ＸＹ平面上の角度として表される。なお、回転角度θＢ１，θＢ２は、作業ツール３３２の回転角度として表されているが、作業ツール３３２は、主軸３３１と連動するため、回転角度θＢ１，θＢ２は、主軸３３１の回転角度として表されてもよい。
【００４６】
回転角度θＡ１は、第２アーム３２８の主軸３３１側の一端から、第２アーム３２８の第２回転軸３２６側の他端に向かう方向と、所定の基準軸（たとえば、Ｘ軸）との間における正回転側の角度に相当する。より具体的には、コントローラ２００は、第２アーム３２８を駆動するサーボドライバ４００Ｂ（図１参照）から第２アーム３２８の現在位置を取得し、当該現在位置から回転角度θＡ１を算出する。
【００４７】
回転角度θＢ１，θＢ２は、所定の基準軸（たとえば、Ｘ軸）と、ケーブル方向３３５（図４参照）との間における正回転側の角度に相当する。移動前の回転角度θＢ１は、たとえば、主軸３３１を回転駆動するためのサーボドライバ４００Ｂ（図１参照）の出力結果に基づいて算出される。移動後の回転角度θＢ２は、第２アーム３２８の移動先である目標位置に基づいて算出される。
【００４８】
コントローラ２００は、移動前における第２アーム３２８の回転角度θＡ１と、移動前における作業ツール３３２の回転角度θＢ１と、移動後における作業ツール３３２の回転角度θＢ２との間の相対関係に基づいて、作業ツール３３２の回転方向を決定する。
【００４９】
より具体的には、図５に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（１）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５０】
θＢ１＜θＢ２＜θＡ１・・・（１）
図６に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（２）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５１】
θＡ１＜θＢ１＜θＢ２・・・（２）
図７に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（３）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５２】
θＢ２＜θＡ１＜θＢ１・・・（３）
図８に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（４）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５３】
θＢ１＜θＡ１＜θＢ２・・・（４）
図９に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（５）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５４】
θＢ２＜θＢ１＜θＡ１・・・（５）
図１０に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（６）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５５】
θＡ１＜θＢ２＜θＢ１・・・（６）
なお、上述では、正回転方向を正の角度として表わす右手座標系がスカラロボット３００の座標系として採用されている前提に説明を行ったが、負回転方向を正の角度として表わす左手座標系がスカラロボット３００の座標系として採用されてもよい。この場合、上記式（１）〜式（６）に示される大小関係が逆転する。典型的には、上述の回転方向を決定する制御は、右手系および左手系のいずれかの座標系を採用するスカラロボット３００に対して適用され得るが、当該制御は、右手系および左手系の座標系以外の座標系を採用するスカラロボット３００に対しても適用され得る。
【００５６】
［Ｅ．制御システム１の機能構成］
図１１および図１２を参照して、制御システム１を構成する各装置の機能について説明する。図１１は、制御システム１を構成するコントローラ２００の機能構成の一例を示す図である。図１２は、制御システム１を構成するサーボドライバ４００の機能構成の一例を示す図である。
【００５７】
（Ｅ１．コントローラ２００の機能構成）
まず、図１１を参照して、コントローラ２００の機能について説明する。
【００５８】
図１１に示されるように、コントローラ２００は、機能構成として、取得部２５２と、決定部２５４と、生成部２５６と、変換部２５８と、出力部２６０とを含む。図１１に示される各機能ブロックは、たとえば、コントローラ２００の後述の制御装置２０１（図１５参照）によって実現される。
【００５９】
取得部２５２は、コントローラ２００の上位コントローラや設定装置１００などから、スカラロボット３００における制御対象の目標位置を取得する。当該目標位置は、たとえば、予め設定されている作業工程に従って上位コントローラによって決定されたり、設定装置１００にインストールされているプログラムツールにおいてユーザによって指定されたりする。目標位置は、たとえば、当該プログラムツール上の座標系（ｘ，ｙ，ｚ）で表わされる。取得部２５２によって取得された目標位置は、決定部２５４に出力される。
【００６０】
決定部２５４は、取得部２５２によって取得された制御対象の目標位置と、サーボドライバ４００から取得した制御対象の現在位置とに基づいて、作業ツール３３２の回転方向を決定する。また、決定部２５４は、取得部２５２によって取得された制御対象の目標位置と、サーボドライバ４００から取得した現在位置とに基づいて、生成部２５６が制御対象の軌跡を生成するために必要な絶対目標位置を生成する。当該絶対目標位置は、たとえば、実空間の座標系（ｘ’，ｙ’，ｚ’、ｒｚ’）で表わされる。座標値「ｘ’」は、上述のＸ軸上の位置を表わす。座標値「ｙ’」は、上述のＹ軸上の位置を表わす。座標値「ｚ’」は、上述のＺ軸上の位置を表わす。座標値「ｒｚ’」は、作業ツール３３２の回転方向を表わし、正回転または負回転を表わす。決定部２５４による処理の詳細については後述する。
【００６１】
好ましくは、決定部２５４は、スカラロボット３００の制御対象の移動を開始する前に作業ツール３３２の回転方向を決定する。決定部２５４によって回転方向が決定された後、コントローラ２００は、スカラロボット３００の制御対象（たとえば、第２アーム３２８や作業ツール３３２など）が目標位置に移動する過程において、決定された回転方向に作業ツール３３２を回転する。すなわち、コントローラ２００は、作業ツール３３２の回転方向を決定した後に、決定した回転方向での作業ツール３３２の回転駆動を開始する。
【００６２】
生成部２５６は、決定部２５４から出力された絶対目標位置へ制御対象を移動させるための速度波形を生成する。生成部２５６は、生成された速度波形に基づいて算出された所定周期ごとの指令位置を変換部２５８に出力する。
【００６３】
変換部２５８は、生成部２５６から出力された指令位置を、スカラロボット３００のサーボドライバ４００が読み取ることができる形式に変換する。当該変換は、逆運動学演算や予め定められた座標系変換式に基づいて行われる。これにより、生成部２５６から出力された指令位置は、スカラロボット３００を基準とするロボット座標系に変換される。
【００６４】
出力部２６０は、変換部２５８から出力された指令位置をサーボドライバ４００に出力する。これにより、サーボドライバ４００の各々は、対応する制御対象を目標位置に向けて駆動する。
【００６５】
（Ｅ２．サーボドライバ４００の機能構成）
次に、図１２を参照して、本実施の形態に従うコントローラ２００に接続されるサーボドライバ４００の機能構成の一例について説明する。図１２に示す各機能ブロックは、サーボドライバ４００の制御装置（図示しない）によって実現される。
【００６６】
本実施の形態に従う制御システム１においては、コントローラ２００からサーボドライバ４００に対して指令値として目標位置が与えられる。サーボドライバ４００は、制御対象であるスカラロボット３００の各アームの実位置がコントローラ２００からの目標位置と一致するように、サーボモータ３４０へ供給する駆動電流を制御する。
【００６７】
典型的には、サーボドライバ４００においては、位置についてのメインループに加えて、速度についてのマイナーループを含む、制御ループが実装されている。より具体的には、サーボドライバ４００は、機能構成として、差分演算部４１０，４１４と、位置制御部４１２と、速度制御部４１６と、加算部４１８と、トルクフィルタ４２０と、電流制御部４２２と、速度検知部４２４とを含む。
【００６８】
位置制御部４１２は、位置についての制御ループを構成する制御演算部であり、差分演算部４１０において算出される、目標位置と実位置（フィードバック値）との偏差に応じた制御量を出力する。位置制御部４１２としては、典型的には、Ｐ（比例）制御が用いられてもよい。つまり、位置制御部４１２は、目標位置と実位置との偏差に予め定められた比例係数を乗じた値を制御量として出力する。
【００６９】
速度制御部４１６は、速度についての制御ループを構成する制御演算部であり、差分演算部４１４において算出される、位置制御部４１２からの制御量と速度検知部４２４からの実速度との偏差に応じた制御量を出力する。速度制御部４１６としては、典型的には、ＰＩ（比例積分）制御が用いられてもよい。つまり、位置制御部４１２は、位置制御部４１２からの指令速度と実速度との偏差に対して、比例係数を乗じた値と積分要素によって積分された値との和を制御量として出力する。
【００７０】
トルクフィルタ４２０は、速度制御部４１６から出力される制御量（サーボモータ３４０で発生させるべきトルクの指令値）の単位時間あたりの変化の度合いが大きくなり過ぎないように、時間変化の度合いを緩和する。すなわち、トルクフィルタ４２０は、速度制御部４１６から出力される制御量を鈍らせる。トルクフィルタ４２０からの制御量は電流制御部４２２に出力される。
【００７１】
電流制御部４２２は、トルクフィルタ４２０からの制御量に対応させて、スカラロボット３００のサーボモータ３４０でのスイッチングタイミングを決定する。つまり、電流制御部４２２は、トルクフィルタ４２０にて決定された指令トルクを実現できるように、サーボモータ３４０へ供給する電流の大きさ、タイミング、波形などを決定する。電流制御部４２２にて決定された制御量に従って、サーボモータ３４０が駆動される。サーボモータ３４０から供給される電流によって、サーボモータ３４０が回転駆動される。
【００７２】
スカラロボット３００の各アームの変位を示すフィードバック値として、エンコーダ（図示しない）から実位置が出力される、速度検知部４２４は、エンコーダからの実位置を微分して実速度を算出する。
【００７３】
［Ｆ．コントローラ２００の制御構造］
図１３を参照して、コントローラ２００の制御構造について説明する。図１３は、上述の決定部２５４（図１１参照）による処理を表わすフローチャートである。図１３の処理は、コントローラ２００の後述の制御装置２０１（図１５参照）によって実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【００７４】
ステップＳ１１０において、制御装置２０１は、決定部２５４として、スカラロボット３００の制御対象の目標位置を上述の取得部２５２（図１１参照）から受け付ける。一例として、制御装置２０１は、第２アーム３２８の目標位置と、主軸３３１（または作業ツール３３２）の目標位置とを取得する。当該目標位置は、たとえば、予め設定されている作業工程に従って上位コントローラによって決定されたり、上述の設定装置１００にインストールされているプログラムツールにおいてユーザによって指定されたりする。目標位置は、たとえば、当該プログラムツール上の座標系（ｘ，ｙ，ｚ）で表わされる。
【００７５】
ステップＳ１１２において、制御装置２０１は、サーボドライバ４００から制御対象の現在位置を取得する。一例として、制御装置２０１は、第２アーム３２８の現在位置と、主軸３３１（または作業ツール３３２）の現在位置とを取得する。
【００７６】
ステップＳ１１４において、制御装置２０１は、ステップＳ１１２で取得した第２アーム３２８の現在位置から第２アーム３２８の現在の回転角度を算出する。一例として、制御装置２０１は、予め定められた行列変換式に従って第２アーム３２８の現在位置を第２アーム３２８の現在の回転角度に変換する。
【００７７】
ステップＳ１１６において、制御装置２０１は、ステップＳ１１０で取得された作業ツール３３２の目標位置を実空間の座標系（ｘ’，ｙ’，ｚ’）に変換する。座標値「ｘ’」は、上述のＸ軸上の位置を表わす。座標値「ｙ’」は、上述のＹ軸上の位置を表わす。座標値「ｚ’」は、上述のＺ軸上の位置を表わす。一例として、制御装置２０１は、予め定められた行列変換式に従って作業ツール３３２の目標位置を移動後における第２アーム３２８の回転角度に変換する。
【００７８】
ステップＳ１２０において、制御装置２０１は、作業ツール３３２の回転方向を決定する。作業ツール３３２の回転方向の決定フローについては図１４で説明する。
【００７９】
ステップＳ２００において、制御装置２０１は、ステップＳ１１６で算出された作業ツール３３２の絶対目標位置にステップＳ１２０で決定された回転方向を付加する。その結果、実空間上での作業ツール３３２の絶対目標位置は、座標系（ｘ’，ｙ’，ｚ’、ｒｚ’）で表わされる。座標値「ｒｚ’」は、作業ツール３３２の回転方向を表わし、正回転または負回転を表わす。あるいは、座標値「ｒｚ’」は、作業ツール３３２の回転角度で表わされてもよい。実空間上での作業ツール３３２の絶対目標位置は、上述の生成部２５６（図１１参照）に出力される。
【００８０】
（Ｆ１．ステップＳ１２０の処理フロー）
図１４を参照して、図１３に示されるステップＳ１２０の処理についてさらに詳細に説明する。図１４は、作業ツール３３２の回転方向を決定する処理フローを表わす図である。
【００８１】
ステップＳ１２２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１（図５〜図１０参照）と、移動後における作業ツール３３２の回転角度θＢ２（図５〜図１０参照）とを取得する。上述の通り、回転角度θＢ１，θＢ２は、所定の基準軸（たとえば、Ｘ軸）と、上述のケーブル方向３３５（図４参照）との間における正回転側の角度に相当する。
【００８２】
ステップＳ１２４において、制御装置２０１は、第２アーム３２８の回転角度θＡ１（図５〜図１０参照）を算出する。典型的には、制御装置２０１は、第２アーム３２８を駆動するサーボドライバ４００Ｂから得られる回転角度に１８０度を加算した結果を回転角度θＡ１としてみなす。すなわち、通常、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度は、第２アーム３２８の第２回転軸３２６側の一端から第２アーム３２８の主軸３３１側の他端に向かう方向を表わすので、アーム方向の逆方向を表わす。そのため、制御装置２０１は、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度に１８０度を加算することでアーム方向を特定する。
【００８３】
ステップＳ１３０において、制御装置２０１は、移動後における作業ツール３３２の回転角度θＢ２が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ２が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、制御装置２０１は、制御をステップＳ１４２に切り替える。
【００８４】
ステップＳ１３２において、制御装置２０１は、移動前における第２アーム３２８の回転角度θＡ１が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＡ１が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１３２においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３２においてＮＯ）、制御装置２０１は、制御をステップＳ１３４に切り替える。
【００８５】
ステップＳ１３４において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動後における作業ツール３３２の回転角度θＢ２よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＢ２よりも小さいと判断した場合（ステップＳ１３４においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３４においてＮＯ）、制御装置２０１は、制御をステップＳ１３６に切り替える。
【００８６】
ステップＳ１３６において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【００８７】
ステップＳ１３８において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【００８８】
ステップＳ１４２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１４２においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４２においてＮＯ）、制御装置２０１は、制御をステップＳ１４４に切り替える。
【００８９】
ステップＳ１４４において、制御装置２０１は、移動後における作業ツール３３２の回転角度θＢ２が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ２が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１４４においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４４においてＮＯ）、制御装置２０１は、制御をステップＳ１４６に切り替える。
【００９０】
ステップＳ１４６において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【００９１】
ステップＳ１４８において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【００９２】
［Ｇ．コントローラ２００のハードウェア構成］
図１５を参照して、コントローラ２００のハードウェア構成について説明する。図１５は、コントローラ２００のハードウェア構成例を示すブロッグ図である。
【００９３】
コントローラ２００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などの制御装置２０１と、チップセット２０２と、主メモリ２０６と、記憶装置２２０と、ローカルネットワークコントローラ２０３と、ＵＳＢ（Universal Serial Bus）コントローラ２０４と、メモリカードインターフェイス２０５と、内部バスコントローラ２１０と、フィールドバスコントローラ２０８，２０９と、Ｉ／Ｏユニット２１１−１，２１１−２，…とを含む。
【００９４】
制御装置２０１は、記憶装置２２０に格納された各種プログラムを読み出して、主メモリ２０６に展開して実行することで、制御対象に応じた制御、および、本実施の形態に従う処理などを実現する。チップセット２０２は、制御装置２０１と各コンポーネントを制御することで、コントローラ２００全体としての処理を実現する。
【００９５】
記憶装置２２０は、たとえば、二次記憶装置である。記憶装置２２０には、ＰＬＣエンジンを実現するためのシステムプログラムに加えて、ＰＬＣエンジンを利用して実行されるユーザプログラム２２１などが格納される。ユーザプログラム２２１は、論理的な演算を主とするシーケンスシーケンスプログラム２２２、位置制御や速度制御などの数値的な演算を主とするモーションプログラム２２３、スカラロボット３００の制御プログラム２２４などを含む。
【００９６】
ローカルネットワークコントローラ２０３は、ローカルネットワークを介した他の装置（たとえば、サーバーなど）との間のデータの遣り取りを制御する。ＵＳＢコントローラ２０４は、ＵＳＢ接続を介して他の装置（たとえば、ＰＣ（Personal Computer）など）との間のデータの遣り取りを制御する。
【００９７】
メモリカードインターフェイス２０５は、メモリカード２１６を着脱可能に構成されており、メモリカード２１６に対してデータを書込み、メモリカード２１６から各種データ（ユーザプログラムやトレースデータなど）を読出すことが可能になっている。
【００９８】
内部バスコントローラ２１０は、コントローラ２００に搭載されるＩ／Ｏユニット２１１−１，２１１−２，…との間でデータを遣り取りするインターフェイスである。
【００９９】
フィールドバスコントローラ２０８は、フィールドネットワークＮＷ１（図１参照）を介した他の装置（たとえば、設定装置１００など）との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ２０９は、フィールドネットワークＮＷ２（図１参照）を介した他の装置（たとえば、スカラロボット３００やサーボドライバ４００）との間のデータの遣り取りを制御する。
【０１００】
図１５には、制御装置２０１がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、コントローラ２００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【０１０１】
［Ｈ．第１の実施の形態のまとめ］
以上のようにして、本実施の形態に従うコントローラ２００は、スカラロボット３００の制御対象が目標位置に移動する過程においてケーブル３３３がスカラロボット３００の部品（たとえば、第２アーム３２８や作業ツール３３２）に衝突しないように作業ツール３３２の回転方向を決定する。その後、コントローラ２００は、制御対象の移動過程において、作業ツール３３２を決定した回転方向に回転させる。これにより、作業過程においてケーブル３３３が破損することが防止される。このような破損が作業ツール３３２の回転方向の制御によって防止されるので、スカラロボットにメカ的な構造を新たに設ける必要がない。そのため、スカラロボット３００のコストの増大が抑制され、スカラロボット３００のサイズが大きくなることもない。
【０１０２】
＜第２の実施の形態＞
［Ａ．概要］
図１６は、第２の実施の形態に従うコントローラ２００の概要を説明するための図である。
【０１０３】
図１６には、スカラロボット３００が状態ＳＡ１から状態ＳＡ２に遷移している様子が示されている。第１の実施の形態に従うコントローラ２００は、移動前における第２アーム３２８の回転角度と、移動前における作業ツール３３２の回転角度と、移動後における作業ツール３３２の回転角度との間の相対関係に基づいて、作業ツール３３２の回転方向を決定していた。第１の実施の形態における回転方向の決定方法が採用されると、状態ＳＡ１では、コントローラ２００は、作業ツール３３２を負回転させると決定する。
【０１０４】
しかしながら、状態ＳＡ１から状態ＳＡ２に遷移する過程で、第２アーム３２８と作業ツール３３２との位置関係が変わる。その結果、作業ツール３３２が負回転すると、ケーブル３３３がスカラロボット３００の部品に衝突してしまう。このように、第１の実施の形態で説明した回転方向の決定方法では、ケーブル３３３がスカラロボット３００の部品に衝突してしまうことが稀に生じる。
【０１０５】
そこで、第２の実施の形態に従うコントローラ２００は、移動前における第２アーム３２８の回転角度、移動前における作業ツール３３２の回転角度、および移動後における作業ツール３３２の回転角度だけでなく、移動後における第２アーム３２８の回転角度をさらに用いて、作業ツール３３２の回転方向を決定する。このように、移動後における第２アーム３２８の回転角度が考慮されることで、コントローラ２００は、作業過程においてケーブル３３３が第２アーム３２８に接触することをより確実に防止できる。
【０１０６】
第２の実施の形態に従う制御システム１のハードウェア構成などその他の点については第１の実施の形態に従う制御システム１と同じであるので、以下ではそれらの説明については繰り返さない。
【０１０７】
［Ｂ．コントローラ２００の制御構造］
図１７を参照して、第２の実施の形態に従うコントローラ２００の制御構造について説明する。図１７は、第２の実施の形態における、作業ツール３３２の回転方向を決定する処理フローを表わす図である。
【０１０８】
ステップＳ１２２Ａにおいて、制御装置２０１は、移動後における第２アーム３２８の回転角度θＡ２と、移動前における作業ツール３３２の回転角度θＢ１と、移動後における作業ツール３３２の回転角度θＢ２とを取得する。回転角度θＡ２は、第２アーム３２８の主軸３３１側の一端から、第２アーム３２８の第２回転軸３２６側の他端に向かう方向と、所定の基準軸（たとえば、Ｘ軸）との間における正回転側の角度に相当する。移動後の回転角度θＡ２は、スカラロボット３００の制御対象の目標位置に基づいて算出される。
【０１０９】
ステップＳ１２３Ａにおいて、制御装置２０１は、第２アーム３２８の回転角度θＢ２から、移動前から移動後における第２アーム３２８の回転角度（すなわち、θＡ２−θＡ１）を差し引き、補正角度θＢ’を算出する。すなわち、補正角度θＢ’は、下記式（７）に基づいて算出される。
【０１１０】
θＢ’＝θＢ２−（θＡ２−θＢ１）・・・（７）
ステップＳ１２４において、制御装置２０１は、第２アーム３２８の回転角度θＡ１（図５〜図１０参照）を算出する。典型的には、制御装置２０１は、第２アーム３２８を駆動するサーボドライバ４００Ｂから得られる回転角度に１８０度を加算した結果を回転角度θＡ１としてみなす。すなわち、通常、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度は、第２アーム３２８の第２回転軸３２６側の一端から第２アーム３２８の主軸３３１側の他端に向かう方向を表わすが、制御装置２０１は、当該角度に１８０度を加算することで、第２アーム３２８の主軸３３１側の一端から第２アーム３２８の第２回転軸３２６側の他端に向かう方向に変換する。
【０１１１】
ステップＳ１３０Ａにおいて、制御装置２０１は、ステップＳ１２３Ａで算出された補正角度θＢ’が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、補正角度θＢ’が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１３０ＡにおいてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１４２に切り替える。
【０１１２】
ステップＳ１３２において、制御装置２０１は、移動前における第２アーム３２８の回転角度θＡ１が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＡ１が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１３２においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３２においてＮＯ）、制御装置２０１は、制御をステップＳ１３４Ａに切り替える。
【０１１３】
ステップＳ１３４Ａにおいて、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１がステップＳ１２３Ａで算出された補正角度θＢ’よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が補正角度θＢ’よりも小さいと判断した場合（ステップＳ１３４ＡにおいてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３４ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１３６に切り替える。
【０１１４】
ステップＳ１３６において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【０１１５】
ステップＳ１３８において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【０１１６】
ステップＳ１４２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１４２においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４２においてＮＯ）、制御装置２０１は、制御をステップＳ１４４Ａに切り替える。
【０１１７】
ステップＳ１４４Ａにおいて、制御装置２０１は、ステップＳ１２３Ａで算出された補正角度θＢ’が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、補正角度θＢ’が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１４４ＡにおいてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４４ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１４６に切り替える。
【０１１８】
ステップＳ１４６において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【０１１９】
ステップＳ１４８において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【０１２０】
［Ｃ．第２の実施の形態のまとめ］
以上のようにして、本実施の形態に従うコントローラ２００は、制御対象の移動前における第２アーム３２８の回転角度と、制御対象の移動後における第２アーム３２８の回転角度と、制御対象の移動前における作業ツール３３２の回転角度と、制御対象の移動後における作業ツール３３２の回転角度との間の相対関係に基づいて、作業ツール３３２の回転方向を決定する。このように、移動後における第２アーム３２８の回転角度がさらに考慮されることで、コントローラ２００は、作業過程においてケーブル３３３がスカラロボット３００の部品に衝突することをより確実に防止できる。
【０１２１】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１２２】
１  制御システム、１００  設定装置、２００  コントローラ、２０１  制御装置、２０２  チップセット、２０３  ローカルネットワークコントローラ、２０４  ＵＳＢコントローラ、２０５  メモリカードインターフェイス、２０６  主メモリ、２０８，２０９  フィールドバスコントローラ、２１０  内部バスコントローラ、２１１  Ｉ／Ｏユニット、２１６  メモリカード、２２０  記憶装置、２２１  ユーザプログラム、２２２  シーケンスシーケンスプログラム、２２３  モーションプログラム、２２４  制御プログラム、２５２  取得部、２５４  決定部、２５６  生成部、２５８  変換部、２６０  出力部、３００  スカラロボット、３２０  基台、３２２  第１回転軸、３２４  第１アーム、３２６  第２回転軸、３２８  第２アーム、３２８Ａ，３３２Ａ  コネクタ、３３１  主軸、３３２  作業ツール、３３３  ケーブル、３３５  ケーブル方向、３４０Ａ〜３４０Ｄ  サーボモータ、４００Ａ〜４００Ｄ  サーボドライバ、４１０，４１４  差分演算部、４１２  位置制御部、４１６  速度制御部、４１８  加算部、４２０  トルクフィルタ、４２２  電流制御部、４２４  速度検知部。
【図１】
2018144141.tif 000003
【図２】
2018144141.tif 000004
【図３】
2018144141.tif 000005
【図４】
2018144141.tif 000006
【図５】
2018144141.tif 000007
【図６】
2018144141.tif 000008
【図７】
2018144141.tif 000009
【図８】
2018144141.tif 000010
【図９】
2018144141.tif 000011
【図１０】
2018144141.tif 000012
【図１１】
2018144141.tif 000013
【図１２】
2018144141.tif 000014
【図１３】
2018144141.tif 000015
【図１４】
2018144141.tif 000016
【図１５】
2018144141.tif 000017
【図１６】
2018144141.tif 000018
【図１７】
2018144141.tif 000019
【手続補正書】
【提出日】平成30年6月28日(2018.6.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、スカラロボットの制御に関し、特に、スカラロボットの制御対象の回転方向を決定するための技術に関する。
【背景技術】
【０００２】
ＦＡ（Factory  Automation）分野において、スカラ（ＳＣＡＲＡ：Selective Compliance Assembly Robot Arm）ロボットと呼ばれる水平多関節ロボットが普及している。スカラロボットとは、互いに連結している複数のアームが水平面上で動作する産業用ロボットの総称である。
【０００３】
スカラロボットは、互いに連結されている複数のアームを協働して回転駆動することでワークに対して所定の作業を行う。ワークに対する作業は、スカラロボットのアームを介して駆動される作業ツールによって行われる。作業例として、スカラロボットは、各アームを回転駆動することで作業ツールをワークの位置まで移動し、第１ライン上を搬送されるワークをピックアップさせる。その後、スカラロボットは、第１ライン上を搬送される容器でピックアップしたワークをリリースする。これにより、順次搬送されるワークが自動で容器に入れられる。
【０００４】
スカラロボットの各部品は、ケーブルで繋がれている。ケーブルは、作業過程において他の部品に衝突したり、ねじれたりすることによって、破損してしまうことがある。このようなケーブルの破損を防止するために様々な技術が開発されている。
【０００５】
当該技術に関し、特開２０１６−１５３１５１号公報（特許文献１）は、第２アームが第１アームに対して回動することで生じるパワーケーブルのねじれを解消することを目的とするロボットの関節構造を開示している。
【０００６】
特開２０１６−７８１６０号公報（特許文献２）は、電気ケーブルと周囲の部品等との干渉、干渉した部品の破損、電気ケーブルの破断などを解消することを目的とするロボットアーム機構を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−１５３１５１号公報
【特許文献２】特開２０１６−７８１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１，２に開示される技術は、いずれも、メカ的な構成を追加することでケーブルの破損を解消している。しかしながら、メカ的な構成が追加されると、スカラロボットのコストが高くなり、スカラロボットのサイズが大きくなってしまう。したがって、作業過程で生じるケーブルの破損をスカラロボットの制御により防止するための技術が望まれている。
【課題を解決するための手段】
【０００９】
ある局面に従うと、制御システムは、ロボットと、上記ロボットを制御するためのコントローラとを備える。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記コントローラは、上記ロボットにおける制御対象の目標位置を取得するための取得部と、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するための決定部とを含む。
【００１０】
好ましくは、上記決定部は、上記制御対象の移動前における上記第２アームの回転角度と、上記制御対象の移動前における上記作業ツールの回転角度と、上記制御対象の移動後における上記作業ツールの回転角度との間の相対関係に基づいて上記回転方向を決定する。
【００１１】
好ましくは、上記決定部は、上記制御対象の移動前における上記第２アームの回転角度と、上記制御対象の移動後における上記第２アームの回転角度と、上記制御対象の移動前における上記作業ツールの回転角度と、上記制御対象の移動後における上記作業ツールの回転角度との間の相対関係に基づいて、上記回転方向を決定する。
【００１２】
好ましくは、上記決定部は、上記制御対象の移動を開始する前に上記回転方向を決定する。
【００１３】
好ましくは、上記作業ツールは、上記制御対象が上記目標位置に移動する過程において上記回転方向に回転するように構成されている。
【００１４】
他の局面に従うと、ロボットのコントローラが提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記コントローラは、上記ロボットにおける制御対象の目標位置を取得するための取得部と、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するための決定部とを含む。
【００１５】
他の局面に従うと、ロボットの制御方法が提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記制御方法は、上記ロボットにおける制御対象の目標位置を取得するステップと、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するステップとを備える。
【００１６】
他の局面に従うと、ロボットの制御プログラムが提供される。上記ロボットは、第１回転軸と、上記第１回転軸を中心として当該第１回転軸と直交する平面上において回転可能に構成されている第１アームと、上記第１回転軸と平行に配置され、上記第１アームに設けられている第２回転軸と、上記第２回転軸を中心として当該第２回転軸と直交する平面上において回転可能に構成されている第２アームと、上記第２回転軸と平行に配置され、上記第２アームに設けられている主軸と、上記主軸を中心として回転可能に構成され、上記主軸の先端に設けられ、ワークに対して所定の作業を行うための作業ツールと、上記第２アームおよび上記作業ツールを繋ぐケーブルとを含む。上記制御プログラムは、上記ロボットのコントローラに、上記ロボットにおける制御対象の目標位置を取得するステップと、上記制御対象が上記目標位置に移動する過程において上記ケーブルが上記ロボットの部品に衝突しないように上記作業ツールの回転方向を決定するステップとを実行させる。
【発明の効果】
【００１７】
ある局面において、作業過程で生じるケーブルの破損をスカラロボットの制御により防止することができる。
【００１８】
本開示の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１９】
【図１】第１の実施の形態に従う制御システムの構成例を示す模式図である。
【図２】第１の実施の形態に従うスカラロボットの側面図である。
【図３】第１の実施の形態に従うスカラロボットの平面図である。
【図４】第１の実施の形態に従うスカラロボットをＺ方向から表わした図である。
【図５】第２アームと作業ツールとの位置関係の一例を示す図である。
【図６】第２アームと作業ツールとの位置関係の一例を示す図である。
【図７】第２アームと作業ツールとの位置関係の一例を示す図である。
【図８】第２アームと作業ツールとの位置関係の一例を示す図である。
【図９】第２アームと作業ツールとの位置関係の一例を示す図である。
【図１０】第２アームと作業ツールとの位置関係の一例を示す図である。
【図１１】第１の実施の形態に従う制御システムを構成するコントローラの機能構成の一例を示す図である。
【図１２】第１の実施の形態に従う制御システムを構成するサーボドライバの機能構成の一例を示す図である。
【図１３】決定部による処理を表わすフローチャートである。
【図１４】第１の実施の形態における、作業ツールの回転方向を決定する処理フローを表わす図である。
【図１５】第１の実施の形態に従うコントローラのハードウェア構成例を示すブロッグ図である。
【図１６】第２の実施の形態に従うコントローラの概要を説明するための図である。
【図１７】第２の実施の形態における、作業ツールの回転方向を決定する処理フローを表わす図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２１】
＜第１の実施の形態＞
［Ａ．システム構成］
まず、本実施の形態に従う制御システム１の構成例について説明する。図１は、本実施の形態に従う制御システム１の構成例を示す模式図である。
【００２２】
図１を参照して、制御システム１は、設定装置１００と、ＰＬＣ（Programmable Logic Controller）などのコントローラ２００と、複数のドライブ装置と、スカラロボット３００とを含む。図１の例では、ドライブ装置の一例として、サーボモータ３４０Ａ〜３４０Ｄを駆動するサーボドライバ４００Ａ〜４００Ｄを例示する。以下では、サーボモータ３４０Ａ〜３４０Ｄを総称してサーボモータ３４０ともいう。サーボドライバ４００Ａ〜４００Ｄを総称してサーボドライバ４００ともいう。ドライブ装置としては、サーボドライバ４００に限定されることなく、被駆動装置であるモータに応じて、対応するドライブ装置が採用される。たとえば、誘導モータまたは同期モータを駆動する場合には、ドライブ装置として、インバータドライブなどが採用されてもよい。
【００２３】
設定装置１００は、たとえば、ＰＣ（Personal Computer）、タブレット端末、または、スマートフォンなどの端末装置である。設定装置１００およびコントローラ２００は、フィールドネットワークＮＷ１に接続されている。フィールドネットワークＮＷ１には、たとえば、ＥｔｈｅｒＮＥＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ１は、ＥｔｈｅｒＮＥＴに限定されず、任意の通信手段が採用され得る。たとえば、設定装置１００およびコントローラ２００は、信号線で直接接続されてもよい。
【００２４】
コントローラ２００およびサーボドライバ４００は、デイジーチェーンでフィールドネットワークＮＷ２に接続されている。フィールドネットワークＮＷ２には、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ２は、ＥｔｈｅｒＣＡＴに限定されず、任意の通信手段が採用され得る。一例として、コントローラ２００およびサーボドライバ４００は、信号線で直接接続されてもよい。また、コントローラ２００およびサーボドライバ４００は、一体的に構成されてもよい。
【００２５】
サーボドライバ４００は、スカラロボット３００のサーボモータ３４０を駆動する。サーボモータ３４０の回転軸にはエンコーダ（図示しない）が配置されている。当該エンコーダは、サーボモータ３４０のフィードバック値として、サーボモータの位置（回転角度）、回転速度、累積回転数などをサーボドライバ４００へ出力する。但し、サーボモータ３４０からのフィードバック値は、コントローラ２００へ直接入力されてもよい。
【００２６】
なお、図１には、制御システム１が１つのコントローラ２００で構成されている例が示されているが、制御システム１は、複数のコントローラ２００で構成されてもよい。また、図１には、制御システム１が１つのスカラロボット３００で構成されている例が示されているが、制御システム１は、複数のスカラロボット３００で構成されてもよい。また、図１には、コントローラ２００およびサーボドライバ４００が直接的に接続されている例が示されているが、コントローラ２００およびサーボドライバ４００の間にロボットコントローラなどが設けられてもよい。
【００２７】
［Ｂ．スカラロボットの装置構成］
図２および図３を参照して、スカラロボット３００について説明する。図２は、スカラロボット３００の側面図である。図３は、スカラロボット３００の平面図である。
【００２８】
スカラロボット３００は、基台３２０と、第１回転軸３２２と、第１アーム３２４と、第２回転軸３２６と、第２アーム３２８と、主軸３３０と、作業ツール３３２とを含む。
【００２９】
基台３２０および第１アーム３２４は、第１回転軸３２２によって連結されている。第１回転軸３２２はサーボモータ３４０Ａ（図１参照）によって回転駆動される。その結果、第１アーム３２４は、第１回転軸３２２を中心に回転駆動される。
【００３０】
第１アーム３２４および第２アーム３２８は、第２回転軸３２６によって連結されている。より具体的には、第１アーム３２４の一端は、第１回転軸３２２を介して基台３２０に連結されており、第１アーム３２４の他端は、第２回転軸３２６を介して第２アーム３２８に連結されている。第２回転軸３２６は、サーボモータ３４０Ｂ（図１参照）によって回転駆動される。その結果、第２アーム３２８は、第２回転軸３２６を中心に回転駆動される。第１アーム３２４と第２アーム３２８とが連動して回転駆動されることで、第２アーム３２８は、動作領域ＡＲ１内で動作することができる。
【００３１】
説明の便宜のために、以下では、水平面上における所定方向をＸ方向ともいう。また、水平面上においてＸ方向に直交する方向をＹ方向ともいう。Ｘ方向およびＹ方向に直交する方向をＺ方向ともいう。すなわち、Ｚ方向は、鉛直方向に相当する。
【００３２】
主軸３３０は、サーボモータ３４０Ｃ（図１参照）によって、第２回転軸３２６と平行な方向（すなわち、Ｚ方向）に駆動可能に構成される。また、主軸３３０は、第３回転軸として機能し、サーボモータ３４０Ｄ（図１参照）によって回転駆動される。すなわち、主軸３３０は、Ｚ方向に駆動可能に構成されるとともに、Ｚ方向の軸中心として回転可能に構成される。
【００３３】
主軸３３０の先端には、ワークＷに対して予め定められた作業を行うための作業ツール３３２が設けられている。ワークＷは、製品または半製品である。作業ツール３３２は、ワークＷに作用を及ぼすエンドエフェクタとして機能する。作業ツール３３２は、主軸３３０に取り外し可能に構成される。すなわち、主軸３３０の先端には、作業ツール３３２を接続するためのインターフェイスが設けられる。
【００３４】
作業ツール３３２は、たとえば、ワークＷのピックアップツールである。一例として、ピックアップツールは、吸引力を利用してワークＷを吸着することでワークＷをピックアップする。あるいは、ピックアップツールは、ワークＷを把持することによりワークＷをピックアップする。作業ツール３３２による作業の一例として、作業ツール３３２は、ネジなどのワークＷを、コンベア上を搬送される製品に取り付ける作業を行う。あるいは、作業ツール３３２は、第１コンベア上を搬送されるワークＷを、第２コンベア上を搬送される容器に順次移動する作業を行う。
【００３５】
第２アーム３２８と作業ツール３３２との間には、ケーブル３３３が接続されている。より具体的には、第２アーム３２８の表面には、コネクタ３２８Ａが設けられており、作業ツール３３２の表面には、コネクタ３３２Ａが設けられている。ケーブル３３３の一端は、コネクタ３２８Ａに電気的に接続され、ケーブル３３３の他端は、コネクタ３３２Ａに電気的に接続される。制御信号や駆動電力は、ケーブル３３３を介して作業ツール３３２に送られる。
【００３６】
［Ｃ．スカラロボットの動作制御］
図４を参照して、スカラロボット３００の動作制御について説明する。図４は、Ｚ方向からスカラロボット３００を表わした図である。図４においては、第１回転軸３２２と、第１アーム３２４と、第２回転軸３２６と、第２アーム３２８と、主軸３３０とが簡略化して表わされている。
【００３７】
上述したように、第２アーム３２８と作業ツール３３２との間には、ケーブル３３３が接続されている。作業ツール３３２の回転方向によっては、ケーブル３３３がスカラロボット３００の部品（たとえば、第２アーム３２８や主軸３３０）に衝突してしまう。その結果、ケーブル３３３がスカラロボット３００の部品で擦れたり、当該部品に引っかかったりし、ケーブル３３３が破損してしまう。そこで、本実施の形態に従うコントローラ２００は、スカラロボット３００の駆動過程においてケーブル３３３がスカラロボット３００の部品に衝突しないように作業ツール３３２の回転方向を決定する。
【００３８】
説明の便宜のために、以下では、ＸＹ平面上における反時計回りの回転を「正回転」ともいい、ＸＹ平面上における時計回りの回転を「負回転」ともいう。また、ＸＹ平面上において作業ツール３３２（または主軸３３０）を基準として固定されている所定方向を「ケーブル方向３３５」ともいう。ケーブル方向３３５は、作業ツール３３２に対してケーブル３３３が配置されているＸＹ平面上の方向と同じまたは略同じである。
【００３９】
図４（Ａ）には、作業ツール３３２が方向Ｄ１から方向Ｄ２に正回転している様子が示されている。図４（Ａ）に示される第２アーム３２８の回転角度と作業ツール３３２の回転角度との関係では、作業ツール３３２が正回転すると、ケーブル方向３３５が第２アーム３２８を跨ぐ。その結果、ケーブル３３３が第２アーム３２８に接触してしまう。
【００４０】
図４（Ｂ）には、作業ツール３３２が方向Ｄ１から方向Ｄ２に負回転している様子が示されている。図４（Ｂ）に示される第２アーム３２８の回転角度と作業ツール３３２の回転角度との関係では、作業ツール３３２が方向Ｄ１から方向Ｄ２に負回転する過程で、ケーブル方向３３５は第２アーム３２８を跨がない。すなわち、ケーブル３３３は、第２アーム３２８に接触しない。
【００４１】
このように、作業ツール３３２を回転させるべき方向は、作業ツール３３２の移動前後における、第２アーム３２８と作業ツール３３２との位置関係に応じて決まる。この点に着目して、コントローラ２００は、スカラロボット３００の制御対象が現在位置から目標位置に移動する過程においてケーブル３３３がスカラロボット３００の部品に接触しないように作業ツール３３２の回転方向を決定する。ここでいう制御対象とは、スカラロボット３００を構成する任意の駆動部品である。一例として、当該制御対象は、第１アーム３２４、第２アーム３２８、主軸３３０、または作業ツール３３２などである。
【００４２】
ケーブル方向３３５が第２アーム３２８を跨がないように作業ツール３３２の回転方向が決定されることで、ケーブル３３３がスカラロボット３００の部品に接触することが防止される。その結果、ケーブル３３３が近傍の部品で擦れたり、近傍の部品に引っかかったりすることが防止され、ケーブル３３３の破損が抑制される。
【００４３】
［Ｄ．回転方向の決定方法］
図５〜図１０を参照して、作業ツール３３２の回転方向の決定方法について説明する。図５〜図１０は、第２アーム３２８と作業ツール３３２との位置関係の一例を示す図である。
【００４４】
上述したように、スカラロボット３００のコントローラ２００は、第２アーム３２８と作業ツール３３２との位置関係に応じて作業ツール３３２を回転させるべき方向を決定する。
【００４５】
以下では、説明の便宜のために、目標位置への移動開始前における第２アーム３２８の回転角度を「回転角度θＡ１」として表わす。目標位置への移動開始前における作業ツール３３２の回転角度を「回転角度θＢ１」として表わす。目標位置への移動後における作業ツール３３２の回転角度を「回転角度θＢ２」として表わす。回転角度θＡ１、回転角度θＢ１、および回転角度θＢ２は、ＸＹ平面上の角度として表される。なお、回転角度θＢ１，θＢ２は、作業ツール３３２の回転角度として表されているが、作業ツール３３２は、主軸３３０と連動するため、回転角度θＢ１，θＢ２は、主軸３３０の回転角度として表されてもよい。
【００４６】
回転角度θＡ１は、第２アーム３２８の主軸３３０側の一端から、第２アーム３２８の第２回転軸３２６側の他端に向かう方向と、所定の基準軸（たとえば、Ｘ軸）との間における正回転側の角度に相当する。より具体的には、コントローラ２００は、第２アーム３２８を駆動するサーボドライバ４００Ｂ（図１参照）から第２アーム３２８の現在位置を取得し、当該現在位置から回転角度θＡ１を算出する。
【００４７】
回転角度θＢ１，θＢ２は、所定の基準軸（たとえば、Ｘ軸）と、ケーブル方向３３５（図４参照）との間における正回転側の角度に相当する。移動前の回転角度θＢ１は、たとえば、主軸３３０を回転駆動するためのサーボドライバ４００Ｂ（図１参照）の出力結果に基づいて算出される。移動後の回転角度θＢ２は、第２アーム３２８の移動先である目標位置に基づいて算出される。
【００４８】
コントローラ２００は、移動前における第２アーム３２８の回転角度θＡ１と、移動前における作業ツール３３２の回転角度θＢ１と、移動後における作業ツール３３２の回転角度θＢ２との間の相対関係に基づいて、作業ツール３３２の回転方向を決定する。
【００４９】
より具体的には、図５に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（１）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５０】
θＢ１＜θＢ２＜θＡ１・・・（１）
図６に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（２）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５１】
θＡ１＜θＢ１＜θＢ２・・・（２）
図７に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（３）を満たす場合には、コントローラ２００は、作業ツール３３２を正回転すると決定する。
【００５２】
θＢ２＜θＡ１＜θＢ１・・・（３）
図８に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（４）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５３】
θＢ１＜θＡ１＜θＢ２・・・（４）
図９に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（５）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５４】
θＢ２＜θＢ１＜θＡ１・・・（５）
図１０に示されるように、回転角度θＡ１、θＢ１、θＢ２の間の角度関係が下記式（６）を満たす場合には、コントローラ２００は、作業ツール３３２を負回転すると決定する。
【００５５】
θＡ１＜θＢ２＜θＢ１・・・（６）
なお、上述では、正回転方向を正の角度として表わす右手座標系がスカラロボット３００の座標系として採用されている前提に説明を行ったが、負回転方向を正の角度として表わす左手座標系がスカラロボット３００の座標系として採用されてもよい。この場合、上記式（１）〜式（６）に示される大小関係が逆転する。典型的には、上述の回転方向を決定する制御は、右手系および左手系のいずれかの座標系を採用するスカラロボット３００に対して適用され得るが、当該制御は、右手系および左手系の座標系以外の座標系を採用するスカラロボット３００に対しても適用され得る。
【００５６】
［Ｅ．制御システム１の機能構成］
図１１および図１２を参照して、制御システム１を構成する各装置の機能について説明する。図１１は、制御システム１を構成するコントローラ２００の機能構成の一例を示す図である。図１２は、制御システム１を構成するサーボドライバ４００の機能構成の一例を示す図である。
【００５７】
（Ｅ１．コントローラ２００の機能構成）
まず、図１１を参照して、コントローラ２００の機能について説明する。
【００５８】
図１１に示されるように、コントローラ２００は、機能構成として、取得部２５２と、決定部２５４と、生成部２５６と、変換部２５８と、出力部２６０とを含む。図１１に示される各機能ブロックは、たとえば、コントローラ２００の後述の制御装置２０１（図１５参照）によって実現される。
【００５９】
取得部２５２は、コントローラ２００の上位コントローラや設定装置１００などから、スカラロボット３００における制御対象の目標位置を取得する。当該目標位置は、たとえば、予め設定されている作業工程に従って上位コントローラによって決定されたり、設定装置１００にインストールされているプログラムツールにおいてユーザによって指定されたりする。目標位置は、たとえば、当該プログラムツール上の座標系（ｘ，ｙ，ｚ）で表わされる。取得部２５２によって取得された目標位置は、決定部２５４に出力される。
【００６０】
決定部２５４は、取得部２５２によって取得された制御対象の目標位置と、サーボドライバ４００から取得した制御対象の現在位置とに基づいて、作業ツール３３２の回転方向を決定する。また、決定部２５４は、取得部２５２によって取得された制御対象の目標位置と、サーボドライバ４００から取得した現在位置とに基づいて、生成部２５６が制御対象の軌跡を生成するために必要な絶対目標位置を生成する。当該絶対目標位置は、たとえば、実空間の座標系（ｘ’，ｙ’，ｚ’，ｒｚ’）で表わされる。座標値「ｘ’」は、上述のＸ軸上の位置を表わす。座標値「ｙ’」は、上述のＹ軸上の位置を表わす。座標値「ｚ’」は、上述のＺ軸上の位置を表わす。座標値「ｒｚ’」は、作業ツール３３２の回転方向を表わし、正回転または負回転を表わす。決定部２５４による処理の詳細については後述する。
【００６１】
好ましくは、決定部２５４は、スカラロボット３００の制御対象の移動を開始する前に作業ツール３３２の回転方向を決定する。決定部２５４によって回転方向が決定された後、コントローラ２００は、スカラロボット３００の制御対象（たとえば、第２アーム３２８や作業ツール３３２など）が目標位置に移動する過程において、決定された回転方向に作業ツール３３２を回転する。すなわち、コントローラ２００は、作業ツール３３２の回転方向を決定した後に、決定した回転方向での作業ツール３３２の回転駆動を開始する。
【００６２】
生成部２５６は、決定部２５４から出力された絶対目標位置へ制御対象を移動させるための速度波形を生成する。生成部２５６は、生成された速度波形に基づいて算出された所定周期ごとの指令位置を変換部２５８に出力する。
【００６３】
変換部２５８は、生成部２５６から出力された指令位置を、スカラロボット３００のサーボドライバ４００が読み取ることができる形式に変換する。当該変換は、逆運動学演算や予め定められた座標系変換式に基づいて行われる。これにより、生成部２５６から出力された指令位置は、スカラロボット３００を基準とするロボット座標系に変換される。
【００６４】
出力部２６０は、変換部２５８から出力された指令位置をサーボドライバ４００に出力する。これにより、サーボドライバ４００の各々は、対応する制御対象を目標位置に向けて駆動する。
【００６５】
（Ｅ２．サーボドライバ４００の機能構成）
次に、図１２を参照して、本実施の形態に従うコントローラ２００に接続されるサーボドライバ４００の機能構成の一例について説明する。図１２に示す各機能ブロックは、サーボドライバ４００の制御装置（図示しない）によって実現される。
【００６６】
本実施の形態に従う制御システム１においては、コントローラ２００からサーボドライバ４００に対して指令値として目標位置が与えられる。サーボドライバ４００は、制御対象であるスカラロボット３００の各アームの実位置がコントローラ２００からの目標位置と一致するように、サーボモータ３４０へ供給する駆動電流を制御する。
【００６７】
典型的には、サーボドライバ４００においては、位置についてのメインループに加えて、速度についてのマイナーループを含む、制御ループが実装されている。より具体的には、サーボドライバ４００は、機能構成として、差分演算部４１０，４１４と、位置制御部４１２と、速度制御部４１６と、トルクフィルタ４２０と、電流制御部４２２と、速度検知部４２４とを含む。
【００６８】
位置制御部４１２は、位置についての制御ループを構成する制御演算部であり、差分演算部４１０において算出される、目標位置と実位置（フィードバック値）との偏差に応じた制御量を出力する。位置制御部４１２としては、典型的には、Ｐ（比例）制御が用いられてもよい。つまり、位置制御部４１２は、目標位置と実位置との偏差に予め定められた比例係数を乗じた値を制御量として出力する。
【００６９】
速度制御部４１６は、速度についての制御ループを構成する制御演算部であり、差分演算部４１４において算出される、位置制御部４１２からの制御量と速度検知部４２４からの実速度との偏差に応じた制御量を出力する。速度制御部４１６としては、典型的には、ＰＩ（比例積分）制御が用いられてもよい。つまり、位置制御部４１２は、位置制御部４１２からの指令速度と実速度との偏差に対して、比例係数を乗じた値と積分要素によって積分された値との和を制御量として出力する。
【００７０】
トルクフィルタ４２０は、速度制御部４１６から出力される制御量（サーボモータ３４０で発生させるべきトルクの指令値）の単位時間あたりの変化の度合いが大きくなり過ぎないように、時間変化の度合いを緩和する。すなわち、トルクフィルタ４２０は、速度制御部４１６から出力される制御量を鈍らせる。トルクフィルタ４２０からの制御量は電流制御部４２２に出力される。
【００７１】
電流制御部４２２は、トルクフィルタ４２０からの制御量に対応させて、スカラロボット３００のサーボモータ３４０でのスイッチングタイミングを決定する。つまり、電流制御部４２２は、トルクフィルタ４２０にて決定された指令トルクを実現できるように、サーボモータ３４０へ供給する電流の大きさ、タイミング、波形などを決定する。電流制御部４２２にて決定された制御量に従って、サーボモータ３４０が駆動される。サーボモータ３４０から供給される電流によって、サーボモータ３４０が回転駆動される。
【００７２】
スカラロボット３００の各アームの変位を示すフィードバック値として、エンコーダ（図示しない）から実位置が出力される、速度検知部４２４は、エンコーダからの実位置を微分して実速度を算出する。
【００７３】
［Ｆ．コントローラ２００の制御構造］
図１３を参照して、コントローラ２００の制御構造について説明する。図１３は、上述の決定部２５４（図１１参照）による処理を表わすフローチャートである。図１３の処理は、コントローラ２００の後述の制御装置２０１（図１５参照）によって実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【００７４】
ステップＳ１１０において、制御装置２０１は、決定部２５４として、スカラロボット３００の制御対象の目標位置を上述の取得部２５２（図１１参照）から受け付ける。一例として、制御装置２０１は、第２アーム３２８の目標位置と、主軸３３０（または作業ツール３３２）の目標位置とを取得する。当該目標位置は、たとえば、予め設定されている作業工程に従って上位コントローラによって決定されたり、上述の設定装置１００にインストールされているプログラムツールにおいてユーザによって指定されたりする。目標位置は、たとえば、当該プログラムツール上の座標系（ｘ，ｙ，ｚ）で表わされる。
【００７５】
ステップＳ１１２において、制御装置２０１は、サーボドライバ４００から制御対象の現在位置を取得する。一例として、制御装置２０１は、第２アーム３２８の現在位置と、主軸３３０（または作業ツール３３２）の現在位置とを取得する。
【００７６】
ステップＳ１１４において、制御装置２０１は、ステップＳ１１２で取得した第２アーム３２８の現在位置から第２アーム３２８の現在の回転角度を算出する。一例として、制御装置２０１は、予め定められた行列変換式に従って第２アーム３２８の現在位置を第２アーム３２８の現在の回転角度に変換する。
【００７７】
ステップＳ１１６において、制御装置２０１は、ステップＳ１１０で取得された作業ツール３３２の目標位置を実空間の座標系（ｘ’，ｙ’，ｚ’）に変換する。座標値「ｘ’」は、上述のＸ軸上の位置を表わす。座標値「ｙ’」は、上述のＹ軸上の位置を表わす。座標値「ｚ’」は、上述のＺ軸上の位置を表わす。一例として、制御装置２０１は、予め定められた行列変換式に従って作業ツール３３２の目標位置を移動後における第２アーム３２８の回転角度に変換する。
【００７８】
ステップＳ１２０において、制御装置２０１は、作業ツール３３２の回転方向を決定する。作業ツール３３２の回転方向の決定フローについては図１４で説明する。
【００７９】
ステップＳ２００において、制御装置２０１は、ステップＳ１１６で算出された作業ツール３３２の絶対目標位置にステップＳ１２０で決定された回転方向を付加する。その結果、実空間上での作業ツール３３２の絶対目標位置は、座標系（ｘ’，ｙ’，ｚ’，ｒｚ’）で表わされる。座標値「ｒｚ’」は、作業ツール３３２の回転方向を表わし、正回転または負回転を表わす。あるいは、座標値「ｒｚ’」は、作業ツール３３２の回転角度で表わされてもよい。実空間上での作業ツール３３２の絶対目標位置は、上述の生成部２５６（図１１参照）に出力される。
【００８０】
（Ｆ１．ステップＳ１２０の処理フロー）
図１４を参照して、図１３に示されるステップＳ１２０の処理についてさらに詳細に説明する。図１４は、作業ツール３３２の回転方向を決定する処理フローを表わす図である。
【００８１】
ステップＳ１２２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１（図５〜図１０参照）と、移動後における作業ツール３３２の回転角度θＢ２（図５〜図１０参照）とを取得する。上述の通り、回転角度θＢ１，θＢ２は、所定の基準軸（たとえば、Ｘ軸）と、上述のケーブル方向３３５（図４参照）との間における正回転側の角度に相当する。
【００８２】
ステップＳ１２４において、制御装置２０１は、第２アーム３２８の回転角度θＡ１（図５〜図１０参照）を算出する。典型的には、制御装置２０１は、第２アーム３２８を駆動するサーボドライバ４００Ｂから得られる回転角度に１８０度を加算した結果を回転角度θＡ１としてみなす。すなわち、通常、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度は、第２アーム３２８の第２回転軸３２６側の一端から第２アーム３２８の主軸３３０側の他端に向かう方向を表わすので、アーム方向の逆方向を表わす。そのため、制御装置２０１は、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度に１８０度を加算することでアーム方向を特定する。
【００８３】
ステップＳ１３０において、制御装置２０１は、移動後における作業ツール３３２の回転角度θＢ２が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ２が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、制御装置２０１は、制御をステップＳ１４２に切り替える。
【００８４】
ステップＳ１３２において、制御装置２０１は、移動前における第２アーム３２８の回転角度θＡ１が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＡ１が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１３２においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３２においてＮＯ）、制御装置２０１は、制御をステップＳ１３４に切り替える。
【００８５】
ステップＳ１３４において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動後における作業ツール３３２の回転角度θＢ２よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＢ２よりも小さいと判断した場合（ステップＳ１３４においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３４においてＮＯ）、制御装置２０１は、制御をステップＳ１３６に切り替える。
【００８６】
ステップＳ１３６において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【００８７】
ステップＳ１３８において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【００８８】
ステップＳ１４２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１４２においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４２においてＮＯ）、制御装置２０１は、制御をステップＳ１４４に切り替える。
【００８９】
ステップＳ１４４において、制御装置２０１は、移動後における作業ツール３３２の回転角度θＢ２が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ２が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１４４においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４４においてＮＯ）、制御装置２０１は、制御をステップＳ１４６に切り替える。
【００９０】
ステップＳ１４６において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【００９１】
ステップＳ１４８において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【００９２】
［Ｇ．コントローラ２００のハードウェア構成］
図１５を参照して、コントローラ２００のハードウェア構成について説明する。図１５は、コントローラ２００のハードウェア構成例を示すブロッグ図である。
【００９３】
コントローラ２００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などの制御装置２０１と、チップセット２０２と、主メモリ２０６と、記憶装置２２０と、ローカルネットワークコントローラ２０３と、ＵＳＢ（Universal Serial Bus）コントローラ２０４と、メモリカードインターフェイス２０５と、内部バスコントローラ２１０と、フィールドバスコントローラ２０８，２０９と、Ｉ／Ｏユニット２１１−１，２１１−２，…とを含む。
【００９４】
制御装置２０１は、記憶装置２２０に格納された各種プログラムを読み出して、主メモリ２０６に展開して実行することで、制御対象に応じた制御、および、本実施の形態に従う処理などを実現する。チップセット２０２は、制御装置２０１と各コンポーネントを制御することで、コントローラ２００全体としての処理を実現する。
【００９５】
記憶装置２２０は、たとえば、二次記憶装置である。記憶装置２２０には、ＰＬＣエンジンを実現するためのシステムプログラムに加えて、ＰＬＣエンジンを利用して実行されるユーザプログラム２２１などが格納される。ユーザプログラム２２１は、論理的な演算を主とするシーケンスプログラム２２２、位置制御や速度制御などの数値的な演算を主とするモーションプログラム２２３、スカラロボット３００の制御プログラム２２４などを含む。
【００９６】
ローカルネットワークコントローラ２０３は、ローカルネットワークを介した他の装置（たとえば、サーバーなど）との間のデータの遣り取りを制御する。ＵＳＢコントローラ２０４は、ＵＳＢ接続を介して他の装置（たとえば、ＰＣ（Personal Computer）など）
との間のデータの遣り取りを制御する。
【００９７】
メモリカードインターフェイス２０５は、メモリカード２１６を着脱可能に構成されており、メモリカード２１６に対してデータを書込み、メモリカード２１６から各種データ（ユーザプログラムやトレースデータなど）を読出すことが可能になっている。
【００９８】
内部バスコントローラ２１０は、コントローラ２００に搭載されるＩ／Ｏユニット２１１−１，２１１−２，…との間でデータを遣り取りするインターフェイスである。
【００９９】
フィールドバスコントローラ２０８は、フィールドネットワークＮＷ１（図１参照）を介した他の装置（たとえば、設定装置１００など）との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ２０９は、フィールドネットワークＮＷ２（図１参照）を介した他の装置（たとえば、スカラロボット３００やサーボドライバ４００）との間のデータの遣り取りを制御する。
【０１００】
図１５には、制御装置２０１がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、コントローラ２００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【０１０１】
［Ｈ．第１の実施の形態のまとめ］
以上のようにして、本実施の形態に従うコントローラ２００は、スカラロボット３００の制御対象が目標位置に移動する過程においてケーブル３３３がスカラロボット３００の部品（たとえば、第２アーム３２８や作業ツール３３２）に衝突しないように作業ツール３３２の回転方向を決定する。その後、コントローラ２００は、制御対象の移動過程において、作業ツール３３２を決定した回転方向に回転させる。これにより、作業過程においてケーブル３３３が破損することが防止される。このような破損が作業ツール３３２の回転方向の制御によって防止されるので、スカラロボットにメカ的な構造を新たに設ける必要がない。そのため、スカラロボット３００のコストの増大が抑制され、スカラロボット３００のサイズが大きくなることもない。
【０１０２】
＜第２の実施の形態＞
［Ａ．概要］
図１６は、第２の実施の形態に従うコントローラ２００の概要を説明するための図である。
【０１０３】
図１６には、スカラロボット３００が状態ＳＡ１から状態ＳＡ２に遷移している様子が示されている。第１の実施の形態に従うコントローラ２００は、移動前における第２アーム３２８の回転角度と、移動前における作業ツール３３２の回転角度と、移動後における作業ツール３３２の回転角度との間の相対関係に基づいて、作業ツール３３２の回転方向を決定していた。第１の実施の形態における回転方向の決定方法が採用されると、状態ＳＡ１では、コントローラ２００は、作業ツール３３２を負回転させると決定する。
【０１０４】
しかしながら、状態ＳＡ１から状態ＳＡ２に遷移する過程で、第２アーム３２８と作業ツール３３２との位置関係が変わる。その結果、作業ツール３３２が負回転すると、ケーブル３３３がスカラロボット３００の部品に衝突してしまう。このように、第１の実施の形態で説明した回転方向の決定方法では、ケーブル３３３がスカラロボット３００の部品に衝突してしまうことが稀に生じる。
【０１０５】
そこで、第２の実施の形態に従うコントローラ２００は、移動前における第２アーム３２８の回転角度、移動前における作業ツール３３２の回転角度、および移動後における作業ツール３３２の回転角度だけでなく、移動後における第２アーム３２８の回転角度をさらに用いて、作業ツール３３２の回転方向を決定する。このように、移動後における第２アーム３２８の回転角度が考慮されることで、コントローラ２００は、作業過程においてケーブル３３３が第２アーム３２８に接触することをより確実に防止できる。
【０１０６】
第２の実施の形態に従う制御システム１のハードウェア構成などその他の点については第１の実施の形態に従う制御システム１と同じであるので、以下ではそれらの説明については繰り返さない。
【０１０７】
［Ｂ．コントローラ２００の制御構造］
図１７を参照して、第２の実施の形態に従うコントローラ２００の制御構造について説明する。図１７は、第２の実施の形態における、作業ツール３３２の回転方向を決定する処理フローを表わす図である。
【０１０８】
ステップＳ１２２Ａにおいて、制御装置２０１は、移動後における第２アーム３２８の回転角度θＡ２と、移動前における作業ツール３３２の回転角度θＢ１と、移動後における作業ツール３３２の回転角度θＢ２とを取得する。回転角度θＡ２は、第２アーム３２８の主軸３３０側の一端から、第２アーム３２８の第２回転軸３２６側の他端に向かう方向と、所定の基準軸（たとえば、Ｘ軸）との間における正回転側の角度に相当する。移動後の回転角度θＡ２は、スカラロボット３００の制御対象の目標位置に基づいて算出される。
【０１０９】
ステップＳ１２３Ａにおいて、制御装置２０１は、第２アーム３２８の回転角度θＢ２から、移動前から移動後における第２アーム３２８の回転角度（すなわち、θＡ２−θＡ１）を差し引き、補正角度θＢ’を算出する。すなわち、補正角度θＢ’は、下記式（７）に基づいて算出される。
【０１１０】
θＢ’＝θＢ２−（θＡ２−θＢ１）・・・（７）
ステップＳ１２４において、制御装置２０１は、第２アーム３２８の回転角度θＡ１（図５〜図１０参照）を算出する。典型的には、制御装置２０１は、第２アーム３２８を駆動するサーボドライバ４００Ｂから得られる回転角度に１８０度を加算した結果を回転角度θＡ１としてみなす。すなわち、通常、サーボドライバ４００Ｂから出力される第２アーム３２８の回転角度は、第２アーム３２８の第２回転軸３２６側の一端から第２アーム３２８の主軸３３０側の他端に向かう方向を表わすが、制御装置２０１は、当該角度に１８０度を加算することで、第２アーム３２８の主軸３３０側の一端から第２アーム３２８の第２回転軸３２６側の他端に向かう方向に変換する。
【０１１１】
ステップＳ１３０Ａにおいて、制御装置２０１は、ステップＳ１２３Ａで算出された補正角度θＢ’が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、補正角度θＢ’が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１３０ＡにおいてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１４２に切り替える。
【０１１２】
ステップＳ１３２において、制御装置２０１は、移動前における第２アーム３２８の回転角度θＡ１が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＡ１が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１３２においてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３２においてＮＯ）、制御装置２０１は、制御をステップＳ１３４Ａに切り替える。
【０１１３】
ステップＳ１３４Ａにおいて、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１がステップＳ１２３Ａで算出された補正角度θＢ’よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が補正角度θＢ’よりも小さいと判断した場合（ステップＳ１３４ＡにおいてＹＥＳ）、制御をステップＳ１３８に切り替える。そうでない場合には（ステップＳ１３４ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１３６に切り替える。
【０１１４】
ステップＳ１３６において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【０１１５】
ステップＳ１３８において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【０１１６】
ステップＳ１４２において、制御装置２０１は、移動前における作業ツール３３２の回転角度θＢ１が移動前における第２アーム３２８の回転角度θＡ１よりも小さいか否かを判断する。制御装置２０１は、回転角度θＢ１が回転角度θＡ１よりも小さいと判断した場合（ステップＳ１４２においてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４２においてＮＯ）、制御装置２０１は、制御をステップＳ１４４Ａに切り替える。
【０１１７】
ステップＳ１４４Ａにおいて、制御装置２０１は、ステップＳ１２３Ａで算出された補正角度θＢ’が移動前における作業ツール３３２の回転角度θＢ１よりも小さいか否かを判断する。制御装置２０１は、補正角度θＢ’が回転角度θＢ１よりも小さいと判断した場合（ステップＳ１４４ＡにおいてＹＥＳ）、制御をステップＳ１４８に切り替える。そうでない場合には（ステップＳ１４４ＡにおいてＮＯ）、制御装置２０１は、制御をステップＳ１４６に切り替える。
【０１１８】
ステップＳ１４６において、制御装置２０１は、作業ツール３３２の回転方向を正回転に決定する。
【０１１９】
ステップＳ１４８において、制御装置２０１は、作業ツール３３２の回転方向を負回転に決定する。
【０１２０】
［Ｃ．第２の実施の形態のまとめ］
以上のようにして、本実施の形態に従うコントローラ２００は、制御対象の移動前における第２アーム３２８の回転角度と、制御対象の移動後における第２アーム３２８の回転角度と、制御対象の移動前における作業ツール３３２の回転角度と、制御対象の移動後における作業ツール３３２の回転角度との間の相対関係に基づいて、作業ツール３３２の回転方向を決定する。このように、移動後における第２アーム３２８の回転角度がさらに考慮されることで、コントローラ２００は、作業過程においてケーブル３３３がスカラロボット３００の部品に衝突することをより確実に防止できる。
【０１２１】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１２２】
１  制御システム、１００  設定装置、２００  コントローラ、２０１  制御装置、２０２  チップセット、２０３  ローカルネットワークコントローラ、２０４  ＵＳＢコントローラ、２０５  メモリカードインターフェイス、２０６  主メモリ、２０８，２０９  フィールドバスコントローラ、２１０  内部バスコントローラ、２１１−１，２１１−２  Ｉ／Ｏユニット、２１６  メモリカード、２２０  記憶装置、２２１  ユーザプログラム、２２２  シーケンスプログラム、２２３  モーションプログラム、２２４  制御プログラム、２５２  取得部、２５４  決定部、２５６  生成部、２５８  変換部、２６０  出力部、３００  スカラロボット、３２０  基台、３２２  第１回転軸、３２４  第１アーム、３２６  第２回転軸、３２８  第２アーム、３２８Ａ，３３２Ａ  コネクタ、３３０  主軸、３３２  作業ツール、３３３  ケーブル、３３５  ケーブル方向、３４０Ａ〜３４０Ｄ  サーボモータ、４００Ａ〜４００Ｄ  サーボドライバ、４１０，４１４  差分演算部、４１２  位置制御部、４１６  速度制御部、４１８  加算部、４２０  トルクフィルタ、４２２  電流制御部、４２４  速度検知部。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2018144141.tif 000020
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2018144141.tif 000021
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2018144141.tif 000022