(57)【要約】      （修正有）【課題】ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高める技術を提供する。【解決手段】制御システム１は、ロボット２００を制御する制御装置１００と、三次元空間における視野範囲に含まれる作業者およびロボット２００の位置情報を取得する三次元センサ３００と、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供するサポート装置４００とを備え、制御装置１００は、位置情報に基づき算出された作業者またはロボット２００の位置がユーザインターフェースを用いて設定された協働作業領域に含まれるか否か、ならびに位置情報に基づき算出された当該作業者と当該ロボット２００との相対的な位置関係に基づき、ロボット２００の停止または速度を制御する。【選択図】図１
2020157462.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを制御する制御システムであって、
前記ロボットを制御する制御手段と、
三次元空間における視野範囲に含まれる作業者および前記ロボットの位置情報を取得する三次元センサ手段と、
前記作業者および前記ロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する設定支援手段とを備え、
前記制御手段は、前記位置情報に基づき算出された前記作業者または前記ロボットの位置が前記ユーザインターフェースを用いて設定された前記協働作業領域に含まれるか否か、ならびに前記位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御する、制御システム。
【請求項２】
前記制御手段は、前記協働作業領域の端部に仮想的に設けられた仮想境界を前記作業者または前記ロボットが超えたか否かに基づき、前記ロボットの停止または速度を制御する、請求項１に記載の制御システム。
【請求項３】
前記仮想境界は、前記ロボットの位置が前記協働作業領域に含まれるか否かに応じて切り替わる、請求項２に記載の制御システム。
【請求項４】
作業空間において前記仮想境界を視認可能に具現化する具現化手段を備える、請求項２または請求項３に記載の制御システム。
【請求項５】
前記制御手段は、前記作業者または前記ロボットを含むオブジェクトが、作業者側から前記協働作業領域に侵入したか否か、またはロボット側から前記協働作業領域に侵入したか否かに基づき、前記ロボットの停止または速度を制御する、請求項１に記載の制御システム。
【請求項６】
前記設定支援手段は、前記作業者および前記ロボットの各々が作業する領域として、前記協働作業領域を含む複数種類の領域を設定するためのユーザインターフェースを提供する、請求項１〜請求項５のいずれか１項に記載の制御システム。
【請求項７】
前記作業者と前記ロボットとの相対的な位置関係に応じた前記ロボットの制御内容を設定するためのユーザインターフェースを提供する制御内容設定手段を備える、請求項１〜請求項６のいずれか１項に記載の制御システム。
【請求項８】
前記設定支援手段は、前記三次元センサ手段における視野範囲に対応する画像に基づき前記協働作業領域を仮想的に設定するためのユーザインターフェースを提供する、請求項１〜請求項７のいずれか１項に記載の制御システム。
【請求項９】
作業に係るワークの位置に基づく前記制御手段による前記ロボットの停止または速度の制御を禁止する禁止手段を備える、請求項１〜請求項８のいずれか１項に記載の制御システム。
【請求項１０】
ロボットを制御する制御方法であって、
ユーザインターフェースによって、作業者および前記ロボットの作業を許容する協働作業領域が仮想的に設定されるものであり、
前記制御方法は、
前記ロボットを制御するステップと、
三次元空間における視野範囲に含まれる作業者および前記ロボットの位置情報を取得するステップとを含み、
前記ロボットを制御するステップは、前記位置情報に基づき算出された前記作業者または前記ロボットの位置が前記協働作業領域に含まれるか否か、ならびに前記位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御するステップを含む、制御方法。
【請求項１１】
ロボットを制御する制御ユニットであって、
前記ロボットを制御する制御部と、
作業者および前記ロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する設定支援ツールとを備え、
前記制御部は、三次元センサによって取得された位置情報に基づき算出された前記作業者または前記ロボットの位置が前記ユーザインターフェースを用いて設定された前記協働作業領域に含まれるか否か、ならびに当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御する、制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、制御方法、および制御ユニットに関し、より特定的にはロボットを制御する制御システム、制御方法、および制御ユニットに関する。
【背景技術】
【０００２】
多くの生産現場において、作業者と協働しながらロボットが作業することが頻繁に行われている。このような生産現場では、作業者の安全を確保するために様々な工夫が施されている。たとえば、特開２００３−２２２２９５号公報（特許文献１）においては、機械が作業する危険領域と作業者が作業する非危険領域とを保安境界によって分離し、作業者が保安境界を越えた場合に、緊急停止機能を制御する装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２２２２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年では、上述したようなロボットを用いた生産現場において、作業者とロボットとが安全策などで隔てられることなく作業領域を共有するシステムを構築するための安全規格が定められている。たとえば、ＩＳＯ １０２１８−１、ＩＳＯ １０２１８−２、およびＩＳＯ／ＴＳ １５０６６では、作業者と協働して作業することが可能な協働ロボットまたは協働ロボットを用いたロボットシステムについての安全要求事項が規定されている。
【０００５】
協働ロボットを用いた生産現場の構築に関しては未だ進歩を遂げている途中であり、特に、安全性および生産性の両方を高める技術が望まれているが、特許文献１に開示されたシステムにおいては、機械が作業する領域と作業者が作業する領域とが完全に分離されており、上述したような安全規格に従ったシステムについては何ら考慮されていない。
【０００６】
本発明は、上述したような課題を解決することを一つの目的とし、ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高める技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の一例に従えば、ロボットを制御する制御システムが提供される。制御システムは、ロボットを制御する制御手段と、三次元空間における視野範囲に含まれる作業者およびロボットの位置情報を取得する三次元センサ手段と、作業者およびロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する設定支援手段とを備える。制御手段は、位置情報に基づき算出された作業者またはロボットの位置がユーザインターフェースを用いて設定された協働作業領域に含まれるか否か、ならびに位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御する。
【０００８】
この開示によれば、ユーザは、作業者およびロボットの作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボットの位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御することができる。これにより、ユーザは、ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【０００９】
上述の開示において、制御手段は、協働作業領域の端部に仮想的に設けられた仮想境界を作業者またはロボットが超えたか否かに基づき、ロボットの停止または速度を制御する。
【００１０】
この開示によれば、ユーザは、協働作業領域の端部に仮想的に設けられた仮想境界を用いてロボットの停止または速度を適切に制御することができるため、ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【００１１】
上述の開示において、仮想境界は、ロボットの位置が協働作業領域に含まれるか否かに応じて切り替わる。
【００１２】
この開示によれば、ユーザは、ロボットの位置に応じて適切な仮想境界を設けることができるため、より安全性および生産性の両方を高めることができる。
【００１３】
上述の開示において、制御システムは、作業空間において仮想境界を視認可能に具現化する具現化手段を備える。
【００１４】
この開示によれば、ユーザは、作業空間において視認可能に具現化された仮想境界を確認しながら作業を行うことができるため、より安全性および生産性の両方を高めることができる。
【００１５】
上述の開示において、制御手段は、作業者またはロボットを含むオブジェクトが、作業者側から協働作業領域に侵入したか否か、またはロボット側から協働作業領域に侵入したか否かに基づき、ロボットの停止または速度を制御する。
【００１６】
この開示によれば、ユーザは、作業者またはロボットを含むオブジェクトが協働作業領域に侵入したか否かや、作業者側およびロボット側のいずれの方向からオブジェクトが協働作業領域に侵入したかに基づき、ロボットの停止または速度を適切に制御することができるため、仮想境界を設定することなく、安全性および生産性の両方を高めることができる。
【００１７】
上述の開示において、設定支援手段は、作業者およびロボットの各々が作業する領域として、協働作業領域を含む複数種類の領域を設定するためのユーザインターフェースを提供する。
【００１８】
この開示によれば、ユーザは、作業者およびロボットの各々が作業する領域として、協働作業領域を含む所望の領域を設定することができるため、より安全性および生産性の両方を高めることができる。
【００１９】
上述の開示において、制御システムは、作業者とロボットとの相対的な位置関係に応じたロボットの制御内容を設定するためのユーザインターフェースを提供する制御内容設定手段を備える。
【００２０】
この開示によれば、ユーザは、作業者とロボットとの相対的な位置関係に応じて、ロボットの制御内容を自由に設定することができるため、より安全性および生産性の両方を高めることができる。
【００２１】
上述の開示において、設定支援手段は、三次元センサ手段における視野範囲に対応する画像に基づき協働作業領域を仮想的に設定するためのユーザインターフェースを提供する。
【００２２】
この開示によれば、ユーザは、三次元センサ手段における視野範囲に対応する画像に基づき協働作業領域を仮想的に設定することができるため、より安全性および生産性の両方を高めることができる。
【００２３】
上述の開示において、制御システムは、作業に係るワークの位置に基づく制御手段によるロボットの停止または速度の制御を禁止する禁止手段を備える。
【００２４】
この開示によれば、ワークの位置を検出したことに起因してロボットの停止または速度が制御されることがないため、より安全性および生産性の両方を高めることができる。
【００２５】
本開示の別の一例に従えば、ロボットを制御する制御方法が提供される。ユーザインターフェースによって、作業者およびロボットの作業を許容する協働作業領域が仮想的に設定されるものである。制御方法は、ロボットを制御するステップと、三次元空間における視野範囲に含まれる作業者およびロボットの位置情報を取得するステップとを含む。ロボットを制御するステップは、位置情報に基づき算出された作業者またはロボットの位置が協働作業領域に含まれるか否か、ならびに位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御するステップを含む。
【００２６】
この開示によれば、ユーザは、作業者およびロボットの作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボットの位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御することができる。これにより、ユーザは、ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【００２７】
本開示の別の一例に従えば、ロボットを制御する制御ユニットが提供される。制御ユニットは、ロボットを制御する制御部と、作業者およびロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する設定支援ツールとを備える。制御部は、三次元センサによって取得された位置情報に基づき算出された作業者またはロボットの位置がユーザインターフェースを用いて設定された協働作業領域に含まれるか否か、ならびに当該作業者と当該ロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御する。
【００２８】
この開示によれば、ユーザは、作業者およびロボットの作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボットの位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボットとの相対的な位置関係に基づき、ロボットの停止または速度を制御することができる。これにより、ユーザは、ロボットと作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【図面の簡単な説明】
【００２９】
【図１】本実施の形態に係る制御システムの適用例を示す模式図である。
【図２】比較例に係る制御システムを示す模式図である。
【図３】本実施の形態に係る制御装置のハードウェア構成例を示す模式図である。
【図４】本実施の形態に係るサポート装置のハードウェア構成例を示す模式図である。
【図５】本実施の形態に係る三次元センサのハードウェア構成例を示す模式図である。
【図６】本実施の形態に係る制御システムにおいて設定可能な各種領域の一例を示す模式図である。
【図７】本実施の形態に係る制御システムにおいて設定可能な各種領域の一例を示す模式図である。
【図８】本実施の形態に係る制御システムにおいて用いられるロボット制御テーブルの一例を示す模式図である。
【図９】本実施の形態に係るサポート装置における領域設定の一例を示す模式図である。
【図１０】本実施の形態に係るサポート装置における停止／速度設定の一例を示す模式図である。
【図１１】本実施の形態に係るサポート装置におけるワーク非検知設定の一例を示す模式図である。
【図１２】本実施の形態に係る制御システムにおいて実行されるセーフティ制御処理の一例を示す模式図である。
【図１３】本実施の形態に係る制御システムにおいて実行されるセーフティ制御処理の一例を示す模式図である。
【図１４】本実施の形態に係る制御システムが実行するセーフティ制御処理のフローチャートである。
【図１５】変形例に係る制御システムを示す模式図である。
【図１６】変形例に係る制御システムを示す模式図である。
【発明を実施するための形態】
【００３０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３１】
＜Ａ．適用例＞
本発明が適用される場面の一例について説明する。
【００３２】
図１は、本実施の形態に係る制御システム１の適用例を示す模式図である。図１に示すように、本実施の形態に係る制御システム１は、生産現場において、作業者とロボット２００とが安全策などで隔てられることなく作業領域を共有するシステムである。
【００３３】
たとえば、図１に示す例では、床に設置された作業台の上にロボット２００が設置されており、ロボット２００と対向するように、作業者がワーク（「Ｗ」で図示する。）を保持している。作業者とロボット２００との間には、仮想的な領域として、協働作業領域（collaborative workspace）が割り当てられている。なお、「協働作業領域」は、「協働作業空間」とも称される。
【００３４】
本実施の形態に係る制御システム１は、所定の安全規格（ＩＳＯ １０２１８−１、ＩＳＯ １０２１８−２、およびＩＳＯ／ＴＳ １５０６６）に従って構築されており、協働作業領域は、作業者およびロボット２００の作業を許容する領域である。つまり、本実施の形態に係るロボット２００は、規定された協働作業領域において、人間（本明細書では「作業者」）と直接的な相互作用可能となるように安全機能面が考慮された協働ロボットである。言い換えると、本実施例形態に係るロボット２００は、人間と協働作業する上で、上述した安全規格で規定された安全要求事項を満足するように設計されている。
【００３５】
制御システム１は、ロボット２００を制御する制御装置１００と、作業者およびロボット２００の位置情報を取得する三次元センサ３００と、制御装置１００におけるロボット２００の制御を支援するサポート装置４００とを備える。
【００３６】
制御装置１００は、本開示に係る「制御手段」を含み、ロボット２００の駆動、停止、および動作時の速度を指定するための制御指令をロボット２００に対して出力することで、ロボット２００を制御する。ロボット２００は、制御装置１００からの制御指令に基づいて、駆動し、指定された速度で動作するとともに、必要に応じて停止する。なお、本実施の形態においては、制御装置１００は、制御プログラム（シーケンス制御およびモーション制御を含み得る）を実行する処理主体であるプログラマブルコントローラ（ＰＬＣ）であるが、ＰＬＣに限らずロボット２００を制御する装置であればいずれのものであってもよい。
【００３７】
三次元センサ３００は、本開示に係る「三次元センサ手段」を含み、三次元空間における視野範囲に含まれる作業者およびロボット２００の位置情報を取得する。三次元センサ３００の具体的な構成については図５を参照しながら説明する。
【００３８】
サポート装置４００は、本開示に係る「設定支援手段」を含み、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する。
【００３９】
上述したような構成を備える制御システム１においては、まず、ユーザ（作業者、および制御システム１の管理者など）は、サポート装置４００が提供するユーザインターフェースを用いて、作業場での三次元空間において協働作業領域の大きさ（たとえば、面積）を仮想的に設定する。サポート装置４００で設定された協働作業領域を特定するためのデータは、制御装置１００に出力される。また、サポート装置４００で設定された協働作業領域を特定するためのデータは、制御装置１００を介して、あるいはサポート装置４００から直接的に三次元センサ３００にも出力されてもよい。
【００４０】
作業中においては、作業者およびロボット２００の各々について、三次元センサ３００によって三次元空間での位置情報が取得される。なお、サポート装置４００で扱われる三次元空間における位置座標（たとえば、Ｘ座標、Ｙ座標、およびＺ座標）と、三次元センサ３００で扱われる三次元空間における位置座標（たとえば、Ｘ座標、Ｙ座標、およびＺ座標）とは、互いに合致するように予めキャリブレーションされている。
【００４１】
三次元センサ３００によって取得された作業者およびロボット２００の各々の位置情報に基づき、作業者およびロボット２００の各々の現在位置が算出される。なお、このような作業者およびロボット２００の各々の現在位置を算出する処理は、三次元センサ３００が実行してその結果を制御装置１００に出力してもよいし、三次元センサ３００から取得した位置情報に基づき制御装置１００が実行してもよい。
【００４２】
作業者およびロボット２００の各々の現在位置が算出されると、今度は、作業者またはロボット２００の位置がサポート装置４００で設定された協働作業領域に含まれるか否かが判定され、さらに、作業者とロボット２００との相対的な位置関係が特定される。ここで、作業者の「位置」とは、三次元空間で検出される作業者の各点の位置を想定しており、たとえば、作業者の「位置」は、作業者の頭、体、手、あるいは足などの位置を含み得る。また、ロボット２００の「位置」とは、三次元空間で検出されるロボット２００の各点の位置を想定しており、たとえば、ロボット２００の「位置」は、ロボット２００の本体部（ボディ）、腕部（アーム）、関節部、あるいはエンドエフェクタなどの位置を含み得る。
【００４３】
制御システム１においては、作業者の位置が協働作業領域に含まれるか否か、およびロボット２００の位置が協働作業領域に含まれるか否かが判定されるとともに、作業場での三次元空間に含まれる各種の領域のうち、作業者およびロボット２００の各々の位置が含まれる領域が特定される。なお、このような作業者またはロボット２００の位置が協働作業領域に含まれるか否かを判定する処理、および作業者とロボット２００との相対的な位置関係を特定する処理は、三次元センサ３００が実行してその結果を制御装置１００に出力してもよいし、三次元センサ３００から取得した位置情報に基づき制御装置１００が実行してもよい。
【００４４】
制御装置１００は、作業者またはロボット２００の位置が協働作業領域に含まれるか否か、ならびに作業者とロボットとの相対的な位置関係に基づき、所定の制御指令をロボット２００に対して出力することで、ロボット２００を制御する。
【００４５】
具体的には図１２および図１３を参照しながら説明するが、たとえば、作業者がロボット２００から離れれば離れるほど、ロボット２００が高速に動作するように制御され、作業者がロボット２００に近づけば近づくほど、ロボット２００が低速に動作、または停止するように制御される。また、作業者が協働作業領域に位置する一方で、ロボット２００が協働作業領域から離れていれば、ロボット２００が動作するように制御される。反対に、ロボット２００が協働作業領域に位置する一方で、作業者が協働作業領域から離れていれば、ロボット２００が協働作業領域で動作するように制御される。さらに、作業者とロボット２００とが同時に協働作業領域に位置する場合には、ロボット２００が停止するように制御される。
【００４６】
ここで、図２は、比較例に係る制御システム１０００を示す模式図である。図２に示すように、比較例に係る制御システム１０００においては、二次元センサ１３００によって取得された作業者の位置情報に基づき、制御装置１１００が作業者の位置を特定している。つまり、比較例に係る制御システム１０００は、本実施の形態に係る制御システム１のように三次元空間での作業者およびロボット２００の位置を検出するものではなく、二次元（たとえば、床に平行な面におけるＸ軸およびＹ軸）で作業者の位置を検出している。
【００４７】
また、制御システム１０００は、ロボット２００と作業者との間にセーフティライトカーテン１４００を設けることで作業者の安全を確保しており、作業者またはロボット２００がセーフティライトカーテン１４００を超えると、制御装置１１００がロボット２００を停止させるようになっている。これにより、作業者が協働作業領域で作業をしている間は、ロボット２００が停止する。
【００４８】
このように構成された制御システム１０００は、二次元での作業者の位置を検出するものであるため、たとえば、作業者の足などの下半身の動きを検知することで、作業者の現在位置を特定することができる。しかしながら、制御システム１０００は、作業者の手や腕などの上半身の動きについては二次元センサ１３００によって検知できないため、ロボット２００を高速に動作させようとするならば、作業者は、ロボット２００から十分に離れた位置まで後退しなければならない。つまり、作業者の下半身の動きのみの検出によってロボット２００を制御する場合、低速動作から高速動作に移行するトリガとなる作業者の検出位置に対して十分なマージンを考慮しなければならない。
【００４９】
これに対して、本実施の形態に係る制御装置１００は、図１に示すように、三次元センサ３００によって、作業者の手や腕などの上半身の動きも検出することができる。このため、たとえば、制御装置１００は、作業者が後退しなくても、作業者が手を引くだけで、作業者とロボット２００との間に十分な距離があると判断することができ、低速動作から高速動作にロボット２００を移行させることができる。
【００５０】
これにより、三次元センサ３００によって取得された位置情報に基づいて、三次元空間での作業者とロボットとの相対的な位置関係を認識することで、安全を確保しながらも、高速動作するロボット２００に作業者が近づける距離を極力短くすることができる。言い換えると、ロボット２００の高速動作を許容することができる時間をより長く確保することができる。
【００５１】
さらに、本実施の形態に係る制御システム１によれば、ユーザは、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボット２００の位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボット２００との相対的な位置関係に基づき、ロボット２００の停止または速度を制御することができる。すなわち、ユーザは、所望の領域を協働作業領域として設定することができ、さらに、その設定した協働作業領域を基準として、作業者とロボット２００との相対的な位置関係に基づきロボット２００の停止または速度を制御することができる。これにより、ユーザは、ロボット２００と作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【００５２】
＜Ｂ．制御システム１に含まれる各装置のハードウェア構成＞
次に、制御システム１に含まれる各装置のハードウェア構成の一例について説明する。
【００５３】
（ｂ１：制御装置１００）
図３は、本実施の形態に係る制御装置１００のハードウェア構成例を示す模式図である。なお、ここでは説明を省略しているが、本実施の形態に係る制御装置１００は、機能安全化されている。図３に示すように、制御装置１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１０６と、ローカルバスコントローラ１２０と、ロボットコントローラ１０８と、ネットワークコントローラ１１０と、ＩＯコントローラ１１４と、メモリカードインターフェース１１６とを含む。これらのコンポーネントは、プロセッサバス１３０を介して接続されている。
【００５４】
プロセッサ１０２は、主として、制御演算などを実行する演算部であり、たとえば、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１０６に格納されたプログラム（一例として、制御プログラム１４０、システムプログラム１０６０、およびセーフティプログラム１５０）を読み出して、メインメモリ１０４に展開して実行することで、制御対象（たとえば、ロボット２００）に応じた所定の制御を実現する。
【００５５】
図３の例では、プロセッサ１０２が所定のプログラムを実行することで、制御装置１００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００５６】
メインメモリ１０４は、たとえば、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。
【００５７】
ストレージ１０６は、たとえば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などの不揮発性記憶装置などで構成される。ストレージ１０６には、基本的な機能を実現するためのシステムプログラム１０６０に加えて、ロボット２００を含む機械や設備などの制御対象に応じて作成される制御プログラム１４０、作業者とロボット２００との協働作業において作業者の安全を確保するために実行されるセーフティプログラム１０６２、およびセーフティプログラム１０６２の実行時に参照されるロボット制御テーブル１０６４などが格納されている。
【００５８】
ロボット制御テーブル１０６４には、たとえば、作業者またはロボット２００の位置が協働作業領域に含まれるか否か、ならびに作業者とロボット２００との相対的な位置関係に応じて、ロボット２００の停止または速度を制御するための指令情報が格納されている。ロボット制御テーブル１０６４の具体的な内容については、図８を参照しながら説明する。
【００５９】
プロセッサ１０２は、制御プログラム１４０を実行することで、ロボット２００を含む機械や設備などの制御対象に対する生産のメインルーチンとなる制御を行う。また、プロセッサ１０２は、制御プログラム１４０と並行してセーフティプログラム１０６２を実行することで、三次元センサ３００によって取得された作業者およびロボット２００の位置情報に基づき、ロボット２００の停止または速度を制御するセーフティ制御処理を実行する。具体的には、プロセッサ１０２は、セーフティ制御処理を実行することで、三次元センサ３００によって特定された作業者やロボット２００の位置と、協働作業領域などの予め決められた各領域とに基づき、作業者やロボット２００が位置する領域を特定し、その特定結果に基づいて、ロボット２００の停止または速度を制御する。セーフティ制御処理の具体的なフローの具体的な内容については、図１４を参照しながら説明する。
【００６０】
ローカルバスコントローラ１２０は、ローカルバスを介して、制御装置１００に接続される任意のユニットとの間でデータを遣り取りする。
【００６１】
ロボットコントローラ１０８は、所定のネットワークを介して、ロボット２００との間でデータを遣り取りする。特に、本実施の形態においては、制御装置１００は、ロボットコントローラ１０８を介して、ロボット２００の駆動、停止、および動作時の速度を指定するための制御指令をロボット２００に対して出力する。
【００６２】
ネットワークコントローラ１１０は、ネットワークを介して、サポート装置４００との間でデータを遣り取りする。特に、本実施の形態においては、制御装置１００は、ネットワークコントローラ１１０を介して、ユーザによって設定された協働作業領域を特定するためのデータをサポート装置４００から取得する。また、制御装置１００は、ネットワークコントローラ１１０を介して、ユーザによって設定されたロボット２００の制御内容を特定するためのデータをサポート装置４００から取得する。ネットワークコントローラ１１０を介して取得されたロボット２００の制御内容を特定するためのデータは、ロボット制御テーブル１０６４に含まれ、ストレージ１０６に格納される。
【００６３】
ＩＯコントローラ１１４は、所定のネットワークを介して、三次元センサ３００との間でデータを遣り取りする。特に、本実施の形態においては、制御装置１００は、ＩＯコントローラ１１４を介して、作業者およびロボット２００の位置情報を取得したり、当該位置情報に基づき作業者またはロボット２００が位置する領域の判定結果を取得したりする。なお、制御装置１００がＰＬＣの場合、ＰＬＣにおける情報量を極力簡素化するために、作業者またはロボット２００が位置する領域の判定は、三次元センサ３００に委ね、制御装置１００がその判定結果のみを三次元センサ３００から取得してもよい。
【００６４】
メモリカードインターフェース１１６は、着脱可能な記録媒体の一例であるメモリカード１１８を受け付ける。メモリカードインターフェース１１６は、メモリカード１１８に対してデータを書き込み、メモリカード１１８から各種データ（ログやトレースデータなど）を読み出すことが可能になっている。
【００６５】
（ｂ２：サポート装置４００）
図４は、本実施の形態に係るサポート装置４００のハードウェア構成例を示す模式図である。サポート装置４００は、一例として、汎用的なアーキテクチャに従うコンピュータがプログラムを実行することで実現される。
【００６６】
図４に示すように、サポート装置４００は、プロセッサ４０２と、メインメモリ４０４と、ストレージ４０６と、入力部４０８と、表示部４１０と、光学ドライブ４１７と、ネットワークコントローラ４１６とを含む。これらのコンポーネントは、プロセッサバス４１８を介して相互に通信可能に接続されている。
【００６７】
プロセッサ４０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ４０６に格納されたプログラム（一例として、ＯＳ４０６０およびサポートプログラム４０６２）を読み出して、メインメモリ４０４に展開して実行することで、各種処理を実現する。
【００６８】
図４の例では、プロセッサ４０２が所定のプログラムを実行することで、サポート装置４００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００６９】
メインメモリ４０４は、たとえば、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。
【００７０】
ストレージ４０６は、たとえば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。ストレージ４０６には、基本的な機能を実現するためのＯＳ４０６０に加えて、サポート装置４００としての機能を提供するためのサポートプログラム４０６２が格納されている。サポートプログラム４０６２は、制御装置１００におけるロボット２００の制御を支援するための命令を含む。
【００７１】
プロセッサ４０２は、サポートプログラム４０６２を実行することで、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェースを提供する。サポート装置４００が提供する協働作業領域を設定するためのユーザインターフェースの具体的な内容については図９を参照しながら説明する。サポート装置４００によって設定された協働作業領域を特定するためのデータは、ネットワークコントローラ４１６を介して制御装置１００に送信される。
【００７２】
さらに、プロセッサ４０２は、サポートプログラム４０６２を実行することで、作業者とロボット２００との相対的な位置関係に応じたロボット２００の制御内容を設定するためのユーザインターフェースを提供する。ロボット２００の制御内容を設定するためのユーザインターフェースの具体的な内容については図１０を参照しながら説明する。サポート装置４００によって設定されたロボット２００の制御内容を特定するためのデータは、ネットワークコントローラ４１６を介して制御装置１００に送信される。
【００７３】
入力部４０８は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部４１０は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ４０２からの処理結果などを出力する。
【００７４】
ネットワークコントローラ４１６は、ネットワークを介して、制御装置１００などの任意の外部装置などとの間でデータを遣り取りする。
【００７５】
光学ドライブ４１７は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体４１４（たとえば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）を受け入れる。記録媒体４１４に格納されたプログラムは、ストレージ４０６などにインストールされる。
【００７６】
サポート装置４００で実行されるサポートプログラム４０６２などは、コンピュータ読取可能な記録媒体４１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置４００が提供する機能は、ＯＳ４０６０が提供するモジュールの一部を利用する形で実現される場合もある。
【００７７】
（ｂ３：三次元センサ３００）
図５は、本実施の形態に係る三次元センサ３００のハードウェア構成例を示す模式図である。なお、ここでは説明を省略しているが、本実施の形態に係る三次元センサ３００は、制御装置１００と同様に機能安全化されている。本実施の形態に係る三次元センサ３００は、いわゆるパッシブ方式のステレオカメラであり、複数台（たとえば、２台）のカメラが同じ空間を互いに異なる位置から撮影することで、三次元空間におけるカメラの視野範囲に含まれるオブジェクトの位置情報を取得するように構成されている。
【００７８】
図５に示すように、三次元センサ３００は、プロセッサ３０２と、メインメモリ３０４と、ストレージ３０６と、カメラインターフェース３１１と、カメラインターフェース３１２と、カメラ３５１と、カメラ３５２と、ＩＯコントローラ３１６とを含む。これらのコンポーネントは、プロセッサバス３１８を介して相互に通信可能に接続されている。
【００７９】
プロセッサ３０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ３０６に格納されたプログラム（一例として、監視プログラム３０６２）を読み出して、メインメモリ３０４に展開して実行することで、各種処理を実現する。
【００８０】
図５の例では、プロセッサ３０２が所定のプログラムを実行することで、三次元センサ３００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００８１】
メインメモリ３０４は、たとえば、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。
【００８２】
ストレージ３０６は、たとえば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。ストレージ３０６には、作業者およびロボット２００を監視するための監視プログラム３０６２と、監視プログラム３０６２の実行時に参照される監視用データ３０６４などが格納されている。
【００８３】
カメラインターフェース３１１は、プロセッサ３０２とカメラ３５１との間でデータを遣り取りする。カメラインターフェース３１２は、プロセッサ３０２とカメラ３５２との間でデータを遣り取りする。
【００８４】
ＩＯコントローラ３１６は、所定のネットワークを介して、制御装置１００との間でデータを遣り取りする。特に、本実施の形態においては、三次元センサ３００は、ＩＯコントローラ３１６を介して、作業者およびロボット２００の位置情報、あるいは位置情報に基づく作業者またはロボット２００が位置する領域の判定結果を制御装置１００に送信する。
【００８５】
このような構成を備える三次元センサ３００においては、各カメラ３５１，３５２によって視野範囲に含まれるオブジェクトの画像が取得される。カメラ３５１およびカメラ３５２は、互いに異なる視点からオブジェクトを撮像するように配置されており、異なる視点からそれぞれ撮像された画像に基づきオブジェクトの各点までの距離が算出される。このようにして、三次元空間における視野範囲に含まれるオブジェクト（作業者、ロボット２００、ワークなど）の各点の位置情報（Ｘ座標，Ｙ座標，Ｚ座標）が取得される。
【００８６】
本実施の形態に係る三次元センサ３００は、カメラ３５１，３５２の撮像によって取得された位置情報に基づき、作業者、ロボット２００、あるいはワークの各点の位置を特定する。たとえば、三次元センサ３００においては、初期設定として、作業者、ロボット２００、およびワークが存在しない状態で、背景のみの三次元空間における各点の位置情報が設定される。背景のみの位置情報は、ストレージ３０６に格納された監視用データ３０６４に含まれる。プロセッサ３０２は、作業時において作業者、ロボット２００、あるいはワークの位置情報を取得すると、取得した位置情報と、予め用意していた背景のみの位置情報との差分などを算出し、その算出結果に基づき、作業者、ロボット２００、あるいはワークの各点の位置を特定する。その特定結果は、制御装置１００に送信される。
【００８７】
なお、三次元センサ３００は、上述したような背景のみの位置情報との差分によって作業者、ロボット２００、あるいはワークの各点の位置を特定するものに限らず、その他の手法を用いてもよい。たとえば、三次元センサ３００は、監視用データ３０６４に、作業者、ロボット２００、およびワークなどの各オブジェクトについての特徴量を含ませておき、プロセッサ３０２は、カメラ３５１，３５２の撮像によって取得された位置情報に基づきオブジェクトの特徴量を抽出し、抽出したオブジェクトの特徴量と監視用データ３０６４に含まれるオブジェクトの特徴量とを比較し、その比較結果に基づき、作業者、ロボット２００、あるいはワークの各点の位置を特定してもよい。
【００８８】
なお、本実施の形態に係る三次元センサ３００は、２台のカメラを含むパッシブ方式のステレオカメラを利用して、三次元空間でのオブジェクトの位置情報を取得するものであったが、他の手段を利用して三次元空間でのオブジェクトの位置情報を取得するものであってもよい。
【００８９】
たとえば、三次元センサ３００は、プロジェクタとカメラのセットを含むいわゆるアクティブ型のステレオカメラであってもよく、プロジェクタから投影されたパターンに基づき、カメラで撮像したオブジェクトの位置情報を取得するものであってもよい。
【００９０】
また、三次元センサ３００は、ライダー（ＬＩＤＡＲ：Light Detection and Ranging、Laser Imaging Detection and Ranging）などの光出力手段によって光をオブジェクトに照射するとともに、オブジェクトからの反射光が戻るまでに要する時間に基づきオブジェクトの各点までの距離を算出する、いわゆるＴＯＦ（Time Of Flight）技術を利用して、三次元空間でのオブジェクトの位置情報を取得するものであってもよい。
【００９１】
また、三次元センサ３００は、レーダー（Radar）などの電波出力手段によって電波をオブジェクトに照射するとともに、オブジェクトからの電波が戻るまでに要する時間に基づきオブジェクトの各点までの距離を算出することで、三次元空間でのオブジェクトの位置情報を取得するものであってもよい。
【００９２】
＜Ｃ．各種領域＞
次に、サポート装置４００によって設定される各種領域について説明する。図６および図７は、本実施の形態に係る制御システム１において設定可能な各種領域の一例を示す模式図である。特に、図６では、三次元空間における作業場を上面から見た場合の各種領域が示されている。また、図７では、三次元空間における作業場を側面（たとえば、図６に示すＬ−Ｌ’断面）から見た場合の各種領域が示されている。なお、以下の説明においては、協働作業領域から見てロボット２００が位置する側を「ロボット側」と称し、協働作業領域から見て作業者が位置する側を「作業者側」と称する。
【００９３】
図６および図７に示すように、本実施の形態に係る制御システム１で管理される仮想的な領域には、稼働領域と、協働作業領域と、領域Ａと、領域Ｂとが含まれる。
【００９４】
稼働領域は、ロボット２００が稼働する領域であり、安全のために稼働領域を囲むように防護柵２５０が設けられている。ロボット２００が安全規格に適合している場合、稼働領域の大きさ（たとえば、面積）は、予め設定されていればよい。なお、稼働領域の大きさ（たとえば、面積）は、ロボット２００の本体部（ボディ）の大きさや腕部（アーム）の最大長さに応じて予め決められていてもよい。稼働領域においては、ロボット２００のみが稼働するように取り決められており、万一、作業者が稼働領域に侵入した場合には、制御装置１００による停止制御によってロボット２００が停止する。また、ロボット２００が予め設定されている最大稼働領域を逸脱した場合にも、制御装置１００による停止制御によってロボット２００が停止する。
【００９５】
協働作業領域は、上述したように、作業者およびロボット２００の作業を許容する領域である。協働作業領域の大きさ（たとえば、面積）は、サポート装置４００を用いてユーザによって決められる。協働作業領域には、作業者およびロボット２００の各々が侵入することができる。つまり、協働作業領域においては、作業者が作業することもできるし、ロボット２００が作業することもできる。たとえば、作業者が協働作業領域に侵入してワークを協働作業領域に置き、その後、作業者が協働作業領域から離れると、今度は、ロボット２００が協働作業領域に侵入して協働作業領域からワークを持ち運ぶといったような協働作業が行われる。なお、ロボット２００が協働作業領域に侵入するトリガは、協働作業領域にワークを置いた後の作業者によるボタン操作であってもよいし、協働作業領域にワークが置かれかつ作業者が協働作業領域から離れたことが三次元センサ３００によって検知されたことであってもよい。
【００９６】
領域Ａは、協働作業領域から向かって作業者側に位置する領域であり、協働作業領域の外側を囲むように位置している。領域Ａの大きさ（たとえば、面積）は、サポート装置４００を用いてユーザによって決められる。なお、領域Ａの大きさは、協働作業領域の大きさ、ロボットの動作速度、ロボットの停止指令を受けてから停止するまでに要する時間など、所定の要因に依存して自動的に決められてもよい。領域Ａにおいては、作業者のみが動作するように取り決められており、万一、ロボット２００が領域Ａに侵入した場合には、制御装置１００による停止制御によってロボット２００が停止する。
【００９７】
領域Ｂは、領域Ａよりもさらに作業者側に位置する領域であり、領域Ａの外側を囲むように位置している。領域Ｂの大きさ（たとえば、面積）は、サポート装置４００を用いてユーザによって決められる。なお、領域Ｂの大きさは、協働作業領域の大きさ、ロボットの動作速度、ロボットの停止指令を受けてから停止するまでに要する時間など、所定の要因に依存して自動的に決められてもよい。領域Ｂにおいては、作業者のみが動作するように取り決められており、万一、ロボット２００が領域Ｂに侵入した場合には、制御装置１００による停止制御によってロボット２００が停止する。
【００９８】
このように設けられた各領域においては、稼働領域と協働作業領域との間、および協働作業領域と領域Ａとの間の各々に、仮想的な境界面や境界線（以下、「仮想境界」とも称する。）が設けられる。具体的には、稼働領域と協働作業領域との間の仮想境界を仮想境界Ａと称し、協働作業領域と領域Ａとの間の仮想境界を仮想境界Ｂと称する。本実施の形態においては、仮想境界は、作業者の安全を確保するための境界面（あるいは境界線）であり、ロボット２００または作業者が仮想境界を超えた場合には、制御装置１００による停止制御によってロボット２００が停止する。
【００９９】
仮想境界は、ロボット２００の位置が協働作業領域に含まれるか否かに応じて切り替わる。具体的には、ロボット２００が協働作業領域に位置することなく稼働領域に位置する場合には、稼働領域と協働作業領域との間の仮想境界Ａが仮想境界として採用され、ロボット２００が協働作業領域に位置する場合には、協働作業領域と領域Ａとの間の仮想境界Ｂが仮想境界として採用される。
【０１００】
＜Ｄ．ロボット制御テーブル＞
次に、図８を参照しながら、制御装置１００のストレージ１０６に格納されたロボット制御テーブル１０６４について説明する。図８は、本実施の形態に係る制御システム１において用いられるロボット制御テーブル１０６４の一例を示す模式図である。
【０１０１】
図８に示すように、ロボット制御テーブル１０６４には、作業者またはロボット２００の位置が協働作業領域に含まれるか否か、ならびに作業者とロボット２００との相対的な位置関係に応じて、ロボット２００の停止または速度を制御するための指令情報が格納されている。
【０１０２】
具体的には、作業者が仮想境界を越えてロボット側の領域に位置する場合、あるいはロボット２００が仮想境界を越えて作業者側の領域に位置する場合には、同じ領域に両者が位置して接近しているため、制御装置１００による停止制御によってロボット２００が停止するように、ロボット２００に対する制御が設定されている。
【０１０３】
作業者が協働作業領域に位置し、かつロボット２００が稼働領域に位置する場合には、互いに異なる領域であるが隣り合う領域に両者が位置するため、制御装置１００による低速制御によってロボット２００が低速（たとえば、２５０ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を極力落とすことなく安全性も確保することができる。
【０１０４】
作業者が協働作業領域に位置し、かつロボット２００が協働作業領域に位置する場合には、同じ領域に両者が位置して接近しているため、制御装置１００による停止制御によってロボット２００が停止するように、ロボット２００に対する制御が設定されている。
【０１０５】
作業者が領域Ａに位置し、かつロボット２００が稼働領域に位置する場合には、互いに異なる領域であるが近くの領域に両者が位置するため、制御装置１００による低速制御によってロボット２００が低速（たとえば、２５０ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を極力落とすことなく安全性も確保することができる。
【０１０６】
作業者が領域Ａに位置し、かつロボット２００が協働作業領域に位置する場合には、互いに異なる領域であるが隣り合う領域に両者が位置し、またロボット２００が協働作業領域で作業しているため、制御装置１００による停止制御によってロボット２００が停止するように、ロボット２００に対する制御が設定されている。
【０１０７】
作業者が領域Ｂに位置し、かつロボット２００が稼働領域に位置する場合には、互いに異なる領域でありかつ離れた領域に両者が位置するため、制御装置１００による中速制御によってロボット２００が中速（たとえば、７５０ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を落とすことがない。
【０１０８】
作業者が領域Ｂに位置し、かつロボット２００が協働作業領域に位置する場合には、互いに異なる領域に両者が位置するため、制御装置１００による低速制御によってロボット２００が低速（たとえば、２５０ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を極力落とすことなく安全性も確保することができる。
【０１０９】
作業者が他の領域（たとえば、領域Ｂよりもさらに作業者側に位置する領域）に位置し、かつロボット２００が稼働領域に位置する場合には、互いに異なる領域でありかつ大きく離れた領域に両者が位置するため、制御装置１００による高速制御によってロボット２００が高速（たとえば、１５００ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を向上させることができる。
【０１１０】
作業者が他の領域（たとえば、領域Ｂよりもさらに作業者側に位置する領域）に位置し、かつロボット２００が協働作業領域に位置する場合には、互いに異なる領域でありかつ離れた領域に両者が位置するため、制御装置１００による中速制御によってロボット２００が中速（たとえば、７５０ｍｍ／ｓｅｃ）で動作するように、ロボット２００に対する制御が設定されている。これにより、生産性を落とすことがない。
【０１１１】
このように、ロボット制御テーブル１０６４には、作業者がロボット２００から離れれば離れるほど、ロボット２００が高速に動作するように制御され、作業者がロボット２００に近づけば近づくほど、ロボット２００が低速に動作、または停止するように、ロボット２００の停止または速度を制御するための指令情報が格納されている。
【０１１２】
＜Ｅ．領域設定のユーザインターフェース＞
次に、図９を参照しながら、サポート装置４００が提供する協働作業領域を設定するためのユーザインターフェース４１１について説明する。図９は、本実施の形態に係るサポート装置４００における領域設定の一例を示す模式図である。
【０１１３】
図９に示すように、サポート装置４００が提供する領域設定のユーザインターフェース４１１においては、稼働領域、協働作業領域、領域Ａ、および領域Ｂを設定するための画面が予め用意されている。図９に示すような画面は、三次元センサ３００のカメラ３５１，３５２による撮像画像をそのまま用いてもよい。つまり、カメラ３５１，３５２の視野範囲に対応する画像をそのまま用いてもよい。あるいは、図９に示すような画面は、三次元センサ３００によって取得されたオブジェクトの位置情報に基づいて作成されてもよい。たとえば、三次元センサ３００が、ＴＯＦ技術を利用して三次元空間でのオブジェクトの位置情報を取得する場合、取得した位置情報の集まりを視覚的に具現化した点群を用いて、図９に示すような画面が作成されてもよい。
【０１１４】
ユーザは、ポインタ４１１ａを図示しないマウスなどを用いて画面上を動かすことができ、各領域の端部にポインタ４１１ａを合わせることで、各領域を拡大させたり、縮小させたりすることができる。
【０１１５】
たとえば、図９に示す例では、協働作業領域の右上の端部にポインタ４１１ａが合わせられており、ユーザが画面右上に向かってポインタ４１１ａをドラッグすれば、ポインタ４１１ａの移動量に応じて協働作業領域の大きさ（面積）が拡大し、ユーザが画面左下に向かってポインタ４１１ａをドラッグすれば、ポインタ４１１ａの移動量に応じて協働作業領域の大きさ（面積）が縮小する。
【０１１６】
なお、図９に示す例では、協働作業領域の拡大および縮小について説明したが、稼働領域、領域Ａ、および領域Ｂについても同様に、ユーザは、ポインタ４１１ａの移動量に応じて領域の大きさ（面積）を拡大または縮小させることができる。
【０１１７】
また、本実施の形態においては、領域Ａおよび領域Ｂが予め用意されているが、ユーザの操作によって、領域Ａや領域Ｂを削除したり、領域Ａおよび領域Ｂとは異なる他の領域（たとえば、領域Ｂよりも作業者側に位置する外側の領域Ｃ）を追加したりできるようにしてもよい。
【０１１８】
このように、サポート装置４００は、作業者およびロボット２００の各々が作業する領域として、協働作業領域を含む複数種類の領域を設定するためのユーザインターフェース４１１を提供する。
【０１１９】
また、サポート装置４００は、三次元センサ３００における視野範囲に対応する画像に基づき協働作業領域を仮想的に設定するためのユーザインターフェース４１１を提供する。
【０１２０】
なお、図９に示した領域設定のユーザインターフェース４１１は、一例であり、サポート装置４００は、その他の態様で領域設定のユーザインターフェースを提供してもよい。
【０１２１】
＜Ｆ．停止／速度設定のユーザインターフェース＞
次に、図１０を参照しながら、サポート装置４００が提供する作業者とロボット２００との相対的な位置関係に応じたロボット２００の制御内容を設定するためのユーザインターフェース４１２について説明する。図１０は、本実施の形態に係るサポート装置４００における停止／速度設定の一例を示す模式図である。
【０１２２】
図１０に示すように、サポート装置４００が提供する停止／速度設定のユーザインターフェース４１２においては、作業者の現在位置、およびロボット２００の現在位置に応じて、ロボット２００を停止させるか否か、または動作時の速度を設定するための画面が予め用意されている。ユーザは、ポインタ４１２ａを図示しないマウスなどを用いて画面上を動かすことができ、作業者の現在位置とロボット２００の現在位置との組合せによって規定されたマトリクスの枠にポインタ４１２ａを合わせることで、予め用意された制御内容の選択肢が示されたドロップダウンリストを表示させることができる。
【０１２３】
つまり、本実施の形態においては、図９で示したユーザインターフェース４１１を用いて協働作業領域を含む各領域がユーザによって設定されると、その各領域の大きさ（面積）や数、およびロボット２００の仕様（たとえば、アームなどの各部位の長さや動作角度、最大動作速度、ロボットの停止指令を受けてから停止するまでに要する時間）などに応じて、自動的に選択肢が算出される。さらに、このような選択肢の算出は、リスクアセスメントの観点から行われ、いずれの選択肢がユーザによって選ばれたとしても、作業者の安全が確保されるようにロボット２００が制御されるようになっている。
【０１２４】
なお、上述したように、自動的に選択肢が算出されるものに限らず、ユーザによって予め用意された全ての選択肢が表示されてもよいし、作業者の現在位置とロボット２００の現在位置との組合せによって規定されたマトリクスの枠ごとにユーザによって予め用意された選択肢が表示されてもよい。
【０１２５】
ユーザは、ドロップダウンリストによって示された選択肢の中から、一の選択肢をポインタ４１２ａで指定することで、所望のロボット２００の制御内容を選択することができる。
【０１２６】
たとえば、図１０に示す例では、作業者が協働作業領域に位置し、かつロボット２００が稼働領域に位置する場合のドロップダウンリストが表示されており、「停止」、「超低速」、および「低速」のうち、ユーザによって「低速」が選択されている。これにより、図８に示すように、ロボット制御テーブル１０６４においては、作業者が協働作業領域に位置し、かつロボット２００が稼働領域に位置する場合に、制御装置１００による低速制御によってロボット２００が低速で動作するように、ロボット２００に対する制御が設定される。
【０１２７】
このように、サポート装置４００は、作業者とロボット２００との相対的な位置関係に応じたロボット２００の制御内容を設定するためのユーザインターフェース４１２を提供する。つまり、サポート装置４００は、本開示に係る「制御内容設定手段」を含む。
【０１２８】
なお、図１０に示した停止／速度設定のユーザインターフェース４１２は、一例であり、サポート装置４００は、その他の態様で停止／速度設定のユーザインターフェースを提供してもよい。
【０１２９】
＜Ｇ．ワーク非検知設定のユーザインターフェース＞
次に、図１１を参照しながら、サポート装置４００が提供するワーク非検知設定のユーザインターフェース４１３について説明する。図１１は、本実施の形態に係るサポート装置４００におけるワーク非検知設定の一例を示す模式図である。
【０１３０】
図１１に示すように、サポート装置４００が提供するワーク非検知設定のユーザインターフェース４１３においては、三次元センサ３００によるワークの検知を無効にするための画面が用意されている。三次元センサ３００によってワークが検知されなくなると、制御装置１００におけるロボット２００の停止または速度の制御に関して、ワークの位置情報が考慮されなくなるため、ワークの位置を検出したことに起因してロボット２００の停止または速度が誤って制御されることがない。なお、ワークを非検知にしなくても、予めワークの形状を制御装置１００にティーチングしておくことで、ワークの位置を検出したことに起因してロボット２００の停止または速度を制御しないようにすることも可能である。
【０１３１】
図１１に示す例では、まず、ユーザは、ワークを囲むように枠画像４１５を合わせることで、三次元センサ３００にワークの形状を読み込ませる。次に、ユーザは、読み込んだワークを非検知にするか否かを「はい」または「いいえ」を選択することで決定する。ユーザが「はい」を選択した場合、ワークが非検知に設定される。
【０１３２】
このように、サポート装置４００は、作業に係るワークの位置に基づく制御装置１００によるロボット２００の停止または速度の制御を禁止するためのユーザインターフェース４１３を提供する。そして、制御装置１００は、サポート装置４００によって非検知に設定されたワークに起因するロボット２００の停止または速度の制御を禁止する。つまり、制御装置１００は、本開示に係る「禁止手段」を含む。
【０１３３】
なお、図１１に示したワーク非検知設定のユーザインターフェース４１３は、一例であり、サポート装置４００は、その他の態様でワーク非検知設定のユーザインターフェースを提供してもよい。
【０１３４】
＜Ｈ．セーフティ制御処理の一例＞
次に、図１２および図１３を参照しながら、本実施の形態に係る制御システム１において行われるセーフティ制御について説明する。図１２および図１３は、本実施の形態に係る制御システム１において実行されるセーフティ制御処理の一例を示す模式図である。なお、図１２および図１３に示すセーフティ制御処理の一例は、制御装置１００が図８に示すロボット制御テーブル１０６４を参照しながらセーフティプログラム１０６２を実行することで行われる。
【０１３５】
図１２に示すように、ワークを保持した作業者が他の領域（たとえば、領域Ｂよりもさらに作業者側に位置する領域）に位置し、かつロボット２００が稼働領域に位置する場合、制御装置１００による高速制御によってロボット２００が高速で動作する。
【０１３６】
その後、作業者が移動して領域Ｂに侵入した場合、作業者が領域Ｂに位置し、かつロボット２００が稼働領域に位置するため、制御装置１００による中速制御によってロボット２００が中速で動作する。
【０１３７】
その後、図１３に示すように、作業者がワークを作業台に置いた際に作業者の手が領域Ａに侵入した場合、作業者が領域Ａに位置し、かつロボット２００が稼働領域に位置するため、制御装置１００による低速制御によってロボット２００が低速で動作する。
【０１３８】
その後、作業者によって協働作業領域にワークが置かれた後、ロボット２００が協働作業領域に侵入して協働作業領域からワークを持ち運ぶ際に、誤って作業者が協働作業領域に侵入してしまった場合には、作業者が協働作業領域に位置し、かつロボット２００が協働作業領域に位置するため、制御装置１００による停止制御によってロボット２００が停止する。
【０１３９】
このように、本実施の形態に係る制御システム１によれば、作業者がロボット２００から離れれば離れるほど、ロボット２００が高速に動作するように制御され、作業者がロボット２００に近づけば近づくほど、ロボット２００が低速に動作、または停止するように制御される。
【０１４０】
＜Ｉ．セーフティ制御処理のフロー＞
次に、図１４を参照しながら、本実施の形態に係る制御システム１が実行するセーフティ制御処理のフローについて説明する。図１４は、本実施の形態に係る制御システム１が実行するセーフティ制御処理のフローチャートである。なお、図１４に示すセーフティ制御処理は、制御装置１００のプロセッサ１０２が図８に示すロボット制御テーブル１０６４を参照しながらセーフティプログラム１０６２を実行することで行われる。
【０１４１】
まず、制御装置１００は、三次元センサ３００から作業者およびロボット２００の位置情報を取得する（Ｓ１）。次に、制御装置１００は、作業者が仮想境界を越えてロボット側の領域に位置するか否かを判定する（Ｓ２）。制御装置１００は、作業者が仮想境界を越えてロボット側の領域に位置する場合（Ｓ２でＹＥＳ）、停止制御によってロボット２００を停止させ（Ｓ３）、Ｓ１の処理に戻る。
【０１４２】
一方、制御装置１００は、作業者が仮想境界を越えてロボット側の領域に位置しない場合（Ｓ２でＮＯ）、作業者が協働作業領域または領域Ａに位置するか否かを判定する（Ｓ４）。制御装置１００は、作業者が協働作業領域または領域Ａに位置する場合（Ｓ４でＹＥＳ）、ロボット２００が稼働領域に位置するか否かを判定する（Ｓ５）。
【０１４３】
制御装置１００は、ロボット２００が稼働領域に位置しない場合（Ｓ５でＮＯ）、停止制御によってロボット２００を停止させ（Ｓ３）、Ｓ１の処理に戻る。一方、制御装置１００は、ロボット２００が稼働領域に位置する場合（Ｓ５でＹＥＳ）、低速制御によってロボット２００を低速で動作させ（Ｓ６）、Ｓ１の処理に戻る。
【０１４４】
制御装置１００は、Ｓ４において、作業者が協働作業領域または領域Ａに位置しない場合（Ｓ４でＮＯ）、作業者が領域Ｂに位置するか否かを判定する（Ｓ７）。制御装置１００は、作業者が領域Ｂに位置する場合（Ｓ７でＹＥＳ）、ロボット２００が稼働領域に位置するか否かを判定する（Ｓ８）。
【０１４５】
制御装置１００は、ロボット２００が稼働領域に位置しない場合（Ｓ８でＮＯ）、ロボット２００が協働作業領域に位置するか否かを判定する（Ｓ９）。制御装置１００は、ロボット２００が協働作業領域に位置しない場合（Ｓ９でＮＯ）、停止制御によってロボット２００を停止させ（Ｓ３）、Ｓ１の処理に戻る。一方、制御装置１００は、ロボット２００が協働作業領域に位置する場合（Ｓ９でＹＥＳ）、低速制御によってロボット２００を低速で動作させ（Ｓ６）、Ｓ１の処理に戻る。
【０１４６】
制御装置１００は、Ｓ８において、ロボット２００が稼働領域に位置する場合（Ｓ８でＹＥＳ）、中速制御によってロボット２００を中速で動作させ（Ｓ１１）、Ｓ１の処理に戻る。
【０１４７】
制御装置１００は、Ｓ７において、作業者が領域Ｂに位置しない場合（Ｓ７でＮＯ）、ロボット２００が稼働領域に位置するか否かを判定する（Ｓ１２）。制御装置１００は、ロボット２００が稼働領域に位置しない場合（Ｓ１２でＮＯ）、ロボット２００が協働作業領域に位置するか否かを判定する（Ｓ１３）。制御装置１００は、ロボット２００が協働作業領域に位置しない場合（Ｓ１３でＮＯ）、停止制御によってロボット２００を停止させ（Ｓ３）、Ｓ１の処理に戻る。一方、制御装置１００は、ロボット２００が協働作業領域に位置する場合（Ｓ１３でＹＥＳ）、中速制御によってロボット２００を中速で動作させ（Ｓ１４）、Ｓ１の処理に戻る。
【０１４８】
制御装置１００は、Ｓ１２において、ロボット２００が稼働領域に位置する場合（Ｓ１２でＹＥＳ）、高速制御によってロボット２００を高速で動作させ（Ｓ１５）、Ｓ１の処理に戻る。
【０１４９】
このように、本実施の形態に係る制御システム１の制御方法（セーフティ制御処理）によれば、ユーザは、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボット２００の位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボット２００との相対的な位置関係に基づき、ロボット２００の停止または速度を制御することができる。これにより、ユーザは、ロボット２００と作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【０１５０】
＜Ｊ．変形例＞
本開示は、上記の実施例に限られず、さらに種々の変形、応用が可能である。以下、本開示に適用可能な変形例について説明する。なお、以下で示す変形例に係る制御システムは、上述した本実施の形態に係る制御システム１と異なる部分以外については、本実施の形態に係る制御システム１と同じ構成や機能を有する。
【０１５１】
図１５および図１６を参照しながら、変形例に係る制御システム１ａについて説明する。図１５および図１６は、変形例に係る制御システム１ａを示す模式図である。
【０１５２】
図１５および図１６に示すように、変形例に係る制御システム１ａは、プロジェクタ６００を備えていてもよい。プロジェクタ６００は、本開示に係る「具現化手段」を含み、作業者およびロボット２００の作業空間において仮想境界を視認可能に具現化する。
【０１５３】
たとえば、図１５に示すように、ロボット２００が協働作業領域に位置することなく稼働領域に位置する場合、プロジェクタ６００によって仮想境界Ａおよび協働作業領域を示す画像が作業台に投影される。また、図１６に示すように、ロボット２００が協働作業領域に位置する場合、プロジェクタ６００によって仮想境界Ｂおよび協働作業領域を示す画像が作業台に投影される。
【０１５４】
このように、変形例に係る制御システム１ａにおいては、ユーザは、プロジェクタ６００によって作業空間において視認可能に具現化された仮想境界を確認しながら作業を行うことができるため、より安全性および生産性の両方を高めることができる。
【０１５５】
また、図１５および図１６に示すように、変形例に係る制御システム１ａは、サポート装置４００の機能を有する設定支援ツール５００と、制御装置１００の機能を有する制御部１００ａとが一体となった制御ユニット９００を備えていてもよい。すなわち、ユーザは、制御ユニット９００の設定支援ツール５００が提供するユーザインターフェース（図９〜図１１に示すようなユーザインターフェース）を用いて、協働作業領域を仮想的に設定したり、ロボット２００の制御内容を設定したり、あるいはワークの非検知設定を行ったりしてもよい。そして、制御部１００ａは、設定支援ツールによって設定された設定内容と、三次元センサ３００によって取得された作業者およびロボット２００の位置情報とに基づき、ロボット２００の駆動、停止、および動作時の速度を指定するための制御指令をロボット２００に対して出力してもよい。
【０１５６】
このように、変形例に係る制御ユニット９００によれば、ユーザは、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボット２００の位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボット２００との相対的な位置関係に基づき、ロボット２００の停止または速度を制御することができる。これにより、ユーザは、ロボット２００と作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【０１５７】
また、本実施の形態に係る制御システム１および変形例に係る制御システム１ａにおいては、仮想境界が設けられていたが、仮想境界は必ずしも設けられなくてもよい。具体的には、協働作業領域に侵入するオブジェクトについて、作業者側から協働作業領域に侵入したのか、あるいはロボット側から協働作業領域に侵入したのかを監視するように、制御システムが構成されてもよい。制御装置は、作業者側から協働作業領域にオブジェクトが侵入した場合には作業者が協働作業領域に侵入したと判断し、ロボット側から協働作業領域にオブジェクトが侵入した場合にはロボット２００が協働作業領域に侵入したと判断すればよい。そして、制御装置は、オブジェクトが、作業者側から協働作業領域に侵入したか否か、またはロボット側から協働作業領域に侵入したか否かに基づき、ロボット２００の停止または速度を制御すればよい。
【０１５８】
このようにすれば、ユーザは、作業者またはロボット２００を含むオブジェクトが協働作業領域に侵入したか否かや、作業者側およびロボット側のいずれの方向からオブジェクトが協働作業領域に侵入したかに基づき、ロボット２００の停止または速度を適切に制御することができるため、仮想境界を設定することなく、安全性および生産性の両方を高めることができる。
【０１５９】
また、本実施の形態に係る制御システム１および変形例に係る制御システム１ａにおいては、ロボット２００および作業者が同時に協働作業領域に位置した場合に、制御装置１００の停止制御によってロボット２００が停止するものであったが、これに限らない。たとえば、ロボット２００が作業者に危険を及ぼさない程度の低速度で動作するように制御されたり、また、緩衝材で覆われているなど、作業者と接触しても作業者が怪我をしないようにロボット２００が構成されたりしている場合には、作業者とロボット２００とが同時に協働作業領域で作業してもよい。この場合、図１０に示したロボット２００の制御内容を設定するためのユーザインターフェース４１２によって、ユーザは、作業者が協働作業領域に位置し、かつロボット２００が協働作業領域に位置するマトリクスの枠において、たとえば、「停止」、「超低速」、「低速」などの選択肢からロボット２００の制御内容を選択できるものであってもよい。
【０１６０】
＜Ｋ．付記＞
以上のように、本実施の形態では以下のような開示を含む。
【０１６１】
（構成１）
ロボット（２００）を制御する制御システム（１）であって、
前記ロボットを制御する制御手段（１００）と、
三次元空間における視野範囲に含まれる作業者および前記ロボットの位置情報を取得する三次元センサ手段（３００）と、
前記作業者および前記ロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェース（４１１）を提供する設定支援手段（４００）とを備え、
前記制御手段は、前記位置情報に基づき算出された前記作業者または前記ロボットの位置が前記ユーザインターフェースを用いて設定された前記協働作業領域に含まれるか否か、ならびに前記位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御する、制御システム。
【０１６２】
（構成２）
前記制御手段は、前記協働作業領域の端部に仮想的に設けられた仮想境界（Ａ，Ｂ）を前記作業者または前記ロボットが超えたか否かに基づき、前記ロボットの停止または速度を制御する、構成１の制御システム。
【０１６３】
（構成３）
前記仮想境界は、前記ロボットの位置が前記協働作業領域に含まれるか否かに応じて切り替わる、構成２の制御システム。
【０１６４】
（構成４）
作業空間において前記仮想境界を視認可能に具現化する具現化手段（６００）を備える、構成２または構成３の制御システム。
【０１６５】
（構成５）
前記制御手段は、前記作業者または前記ロボットを含むオブジェクトが、作業者側から前記協働作業領域に侵入したか否か、またはロボット側から前記協働作業領域に侵入したか否かに基づき、前記ロボットの停止または速度を制御する、構成１の制御システム。
【０１６６】
（構成６）
前記設定支援手段は、前記作業者および前記ロボットの各々が作業する領域として、前記協働作業領域を含む複数種類の領域を設定するためのユーザインターフェース（４１１）を提供する、構成１〜構成５のいずれかの制御システム。
【０１６７】
（構成７）
前記作業者と前記ロボットとの相対的な位置関係に応じた前記ロボットの制御内容を設定するためのユーザインターフェース（４１２）を提供する制御内容設定手段（４００）を備える、構成１〜構成６のいずれかの制御システム。
【０１６８】
（構成８）
前記設定支援手段は、前記三次元センサ手段における視野範囲に対応する画像に基づき前記協働作業領域を仮想的に設定するためのユーザインターフェース（４１１）を提供する、構成１〜構成７の制御システム。
【０１６９】
（構成９）
作業に係るワークの位置に基づく前記制御手段による前記ロボットの停止または速度の制御を禁止する禁止手段（１００）を備える、構成１〜構成８の制御システム。
【０１７０】
（構成１０）
ロボット（２００）を制御する制御方法であって、
ユーザインターフェース（４１１）によって、作業者および前記ロボットの作業を許容する協働作業領域が仮想的に設定されるものであり、
前記制御方法は、
前記ロボットを制御するステップ（Ｓ２〜Ｓ１５）と、
三次元空間における視野範囲に含まれる作業者および前記ロボットの位置情報を取得するステップ（Ｓ１）とを含み、
前記ロボットを制御するステップは、前記位置情報に基づき算出された前記作業者または前記ロボットの位置が前記協働作業領域に含まれるか否か、ならびに前記位置情報に基づき算出された当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御するステップを含む（Ｓ２〜Ｓ１５）、制御方法。
【０１７１】
（構成１１）
ロボット（２００）を制御する制御ユニット（９００）であって、
前記ロボットを制御する制御部（１００ａ）と、
作業者および前記ロボットの作業を許容する協働作業領域を仮想的に設定するためのユーザインターフェース（４１１）を提供する設定支援ツール（５００）とを備え、
前記制御部は、三次元センサによって取得された位置情報に基づき算出された前記作業者または前記ロボットの位置が前記ユーザインターフェースを用いて設定された前記協働作業領域に含まれるか否か、ならびに当該作業者と当該ロボットとの相対的な位置関係に基づき、前記ロボットの停止または速度を制御する、制御ユニット。
【０１７２】
＜Ｌ．利点＞
本実施の形態に係る制御システム１によれば、ユーザは、作業者およびロボット２００の作業を許容する協働作業領域を仮想的に設定することができ、三次元空間における作業者およびロボット２００の位置が仮想的に設定された協働作業領域に含まれるか否か、ならびに三次元空間における作業者とロボットとの相対的な位置関係に基づき、ロボット２００の停止または速度を制御することができる。これにより、ユーザは、ロボット２００と作業者とが協働する生産現場において安全性および生産性の両方を高めることができる。
【０１７３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７４】
１，１ａ，１０００  制御システム、１００，１１００  制御装置、１００ａ  制御部、１０２，３０２，４０２  プロセッサ、１０４，３０４，４０４  メインメモリ、１０６，３０６，４０６  ストレージ、１０８  ロボットコントローラ、１１０，４１６  ネットワークコントローラ、１１４，３１６  ＩＯコントローラ、１１６  メモリカードインターフェース、１１８  メモリカード、１２０  ローカルバスコントローラ、１３０，３１８，４１８  プロセッサバス、１４０  制御プログラム、１５０，１０６２  セーフティプログラム、２００  ロボット、２５０  防護柵、３００  三次元センサ、３１１，３１２  カメラインターフェース、３５１，３５２  カメラ、４００  サポート装置、４０８  入力部、４１０  表示部、４１１，４１２，４１３  ユーザインターフェース、４１１ａ，４１２ａ  ポインタ、４１４  記録媒体、４１５  枠画像、４１７  光学ドライブ、５００  設定支援ツール、６００  プロジェクタ、９００  制御ユニット、１０６０  システムプログラム、１０６４  ロボット制御テーブル、１３００  二次元センサ、１４００  セーフティライトカーテン、３０６２  監視プログラム、３０６４  監視用データ、４０６２  サポートプログラム。
【図１】
2020157462.tif 000003
【図２】
2020157462.tif 000004
【図３】
2020157462.tif 000005
【図４】
2020157462.tif 000006
【図５】
2020157462.tif 000007
【図６】
2020157462.tif 000008
【図７】
2020157462.tif 000009
【図８】
2020157462.tif 000010
【図９】
2020157462.tif 000011
【図１０】
2020157462.tif 000012
【図１１】
2020157462.tif 000013
【図１２】
2020157462.tif 000014
【図１３】
2020157462.tif 000015
【図１４】
2020157462.tif 000016
【図１５】
2020157462.tif 000017
【図１６】
2020157462.tif 000018