(57)【要約】【課題】ロボットの周辺機器におけるイレギュラー状態からの迅速な復帰に有効なロボットシステムを提供する。【解決手段】ロボットシステム１は、ロボット１０と、ロボット１０の周辺に配置された周辺機器５０と、プログラムに基づいて、少なくともロボット１０を動作させる制御部１１２と、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づくロボット１０による周辺機器５０と連動した一連の複数の動作を中断させる中断部１１３と、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づいて、復帰プログラムを生成するシミュレータ３００と、を備え、制御部１１２は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させる。【選択図】図１
2020189395.tif 000002
【特許請求の範囲】
【請求項１】
ロボットと、
前記ロボットの周辺に配置された周辺機器と、
動作プログラムに基づいて、前記周辺機器の動作と連動して前記ロボットを動作させる制御部と、
前記周辺機器でイレギュラー状態が発生した場合に、前記動作プログラムに基づく前記ロボットによる前記周辺機器と連動した一連の複数の動作を中断させる中断部と、
前記イレギュラー状態の発生により動作を中断した時点における前記ロボットのロボット状態情報及び前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報に少なくとも基づいて、復帰プログラムを生成する復帰プログラム生成部と、
を備え、
前記制御部は、
前記復帰プログラムに基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするように、前記ロボットを前記周辺機器に対して動作させる、ロボットシステム。
【請求項２】
前記復帰プログラム生成部は、少なくとも前記ロボット状態情報に基づいて、前記ロボットと前記周辺機器のシミュレーションを用いて、前記復帰プログラムを生成する、請求項１に記載のロボットシステム。
【請求項３】
前記復帰プログラム生成部は、少なくとも前記イレギュラー状態情報と、前記ロボット状態情報とに基づいて、シミュレーション上に前記ロボットと前記周辺機器との状態を再現して、前記復帰プログラムを生成する、請求項２に記載のロボットシステム。
【請求項４】
少なくとも前記イレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部を更に有し、
前記復帰プログラム生成部は、少なくとも前記イレギュラー状態の種別と前記ロボット状態情報とに基づいて、前記シミュレーションを用いて前記復帰プログラムを生成する、請求項３に記載のロボットシステム。
【請求項５】
前記種別特定部は、前記イレギュラー状態情報に基づいて、前記イレギュラー状態の種別に加えて、前記周辺機器における復帰処理を特定し、
前記周辺機器は、前記復帰処理を実行する、請求項４に記載のロボットシステム。
【請求項６】
前記イレギュラー状態の種別に基づいて、既定された前記ロボットの動作を表す１又は２以上の単位動作を特定する単位動作特定部を更に備え、
前記復帰プログラム生成部は、
少なくとも前記単位動作と前記ロボット状態情報とに基づいて、前記シミュレーションを用いて、前記単位動作の前及び後の少なくとも一方で前記ロボットが動作すべきエアカット動作を生成するエアカット生成部と、
前記単位動作と前記エアカット動作とに基づいて、前記復帰プログラムを生成するプログラム化部と、
を有する、請求項４又は５に記載のロボットシステム。
【請求項７】
前記エアカット生成部は、
前記シミュレーションを用いて、前記ロボットが前記周辺機器を含む他の物体に衝突しないように、前記エアカット動作を生成する、請求項６に記載のロボットシステム。
【請求項８】
前記復帰プログラム生成部は、
前記プログラム化部が生成した前記復帰プログラムに基づいて、前記ロボットが前記周辺機器を含む他の物体に衝突するか否かを前記シミュレーション上で確認する干渉チェック部を更に有し、
前記制御部は、前記干渉チェック部が干渉しないと確認した前記復帰プログラムに基づいて、前記ロボットを動作させる、請求項６又は７に記載のロボットシステム。
【請求項９】
前記動作プログラムは、前記ロボットの複数の動作の１又は２以上の間に、中断可能ポイントを有しており、
前記中断部は、前記周辺機器でイレギュラー状態が発生した時より後の前記中断可能ポイントにおいて、前記ロボットによる複数の動作を中断させる、請求項１〜８のいずれか１項に記載のロボットシステム。
【請求項１０】
少なくとも前記復帰プログラム生成部は、前記ロボットと前記周辺機器とが配置されるエッジ側に配置される制御部に対して、プライベートネットワーク又はインターネットを介して通信する、請求項１〜９のいずれか１項に記載のロボットシステム。
【請求項１１】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報を少なくとも取得する状態情報取得部と、
前記ロボット状態情報及び前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報に少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを生成する復帰プログラム生成部と、を備える復帰プログラム生成装置。
【請求項１２】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報と、前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報とを少なくとも取得する状態情報取得部と、
少なくとも前記イレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部と、
前記イレギュラー状態の種別と前記ロボット状態情報とに少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを出力する復帰プログラム出力部と、を備える制御支援装置。
【請求項１３】
動作プログラムに基づいて、ロボットを前記ロボットの周辺に配置された周辺機器の動作と連動して動作させる制御部と、
前記周辺機器でイレギュラー状態が発生した場合に、前記動作プログラムに基づく前記ロボットによる前記周辺機器と連動した一連の複数の動作を中断させる中断部と、
前記イレギュラー状態の発生により動作を中断した時点における前記ロボットのロボット状態情報及び前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報に少なくとも基づく復帰プログラムを取得する復帰プログラム取得部と、
を備え、
前記制御部は、
前記復帰プログラムに基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするように、前記ロボットを前記周辺機器に対して動作させる、制御装置。
【請求項１４】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報を少なくとも取得することと、
前記ロボット状態情報及び前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報に少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを生成することと、を装置に実行させるプログラム。
【請求項１５】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報と、前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、
少なくとも前記イレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、
前記イレギュラー状態の種別と前記ロボット状態情報とに少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを出力することと、を装置に実行させるプログラム。
【請求項１６】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報を少なくとも取得することと、
前記ロボット状態情報及び前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報に少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを生成することと、を含む復帰プログラムの生成方法。
【請求項１７】
ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく前記周辺機器と連動した一連の複数の動作を中断した前記ロボットのロボット状態情報と、前記周辺機器の前記イレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、
少なくとも前記イレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、
前記イレギュラー状態の種別と前記ロボット状態情報とに少なくとも基づいて、前記周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするための前記ロボットの復帰プログラムを出力することと、を含む復帰プログラムの出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットシステム、復帰プログラム生成装置、制御支援装置、制御装置、プログラム、復帰プログラムの生成方法及び復帰プログラムの出力方法に関する。
【背景技術】
【０００２】
特許文献１には、加工機とロボットとを備え、加工機に対するワークの交換をロボットに実行させる加工機システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１６８６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ロボットの周辺機器におけるイレギュラー状態からの迅速な復帰に有効なロボットシステムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るロボットシステムは、ロボットと、ロボットの周辺に配置された周辺機器と、プログラムに基づいて、少なくともロボットを動作させる制御部と、周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づくロボットによる周辺機器と連動した一連の複数の動作を中断させる中断部と、イレギュラー状態の発生により動作を中断した時点におけるロボットのロボット状態情報に少なくとも基づいて、復帰プログラムを生成する復帰プログラム生成部と、を備え、制御部は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボットを周辺機器に対して動作させる。
【０００６】
本開示の他の側面に係る復帰プログラム生成装置は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得する状態情報取得部と、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成する復帰プログラム生成部と、を備える。
【０００７】
本開示の更に他の側面に係る制御支援装置は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得する状態情報取得部と、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部と、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力する復帰プログラム出力部と、を備える。
【０００８】
本開示の更に他の側面に係る制御装置は、プログラムに基づいて、少なくともロボットを動作させる制御部と、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づくロボットによる周辺機器と連動した一連の複数の動作を中断させる中断部と、ロボット状態情報に少なくとも基づく復帰プログラムを取得する復帰プログラム取得部と、を備え、制御部は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボットを周辺機器に対して動作させる。
【０００９】
本開示の更に他の側面に係るプログラムは、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成することと、を装置に実行させる。
【００１０】
本開示の更に他の側面に係るプログラムは、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力することと、を装置に実行させる。
【００１１】
本開示の更に他の側面に係る復帰プログラムの生成方法は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成することと、を含む。
【００１２】
本開示の更に他の側面に係る復帰プログラムの出力方法は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力することと、を含む。
【発明の効果】
【００１３】
本開示によれば、ロボットの周辺機器におけるイレギュラー状態からの迅速な復帰に有効なロボットシステムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】ロボットシステムの概略構成を示す模式図である。
【図２】コントローラの機能的な構成を例示するブロック図である。
【図３】制御支援装置の機能的な構成を例示するブロック図である。
【図４】シミュレータの機能的な構成を例示するブロック図である。
【図５】動作プログラムを例示するシーケンス図である。
【図６】復帰プログラムが挿入された動作プログラムを例示するシーケンス図である。
【図７】制御システムのハードウェア構成を例示するブロック図である。
【図８】制御手順を例示するフローチャートである。
【図９】中断処理手順を例示するフローチャートである。
【図１０】復帰処理手順を例示するフローチャートである。
【図１１】復帰プログラムの生成支援手順を例示するフローチャートである。
【図１２】復帰プログラムの生成手順を例示するフローチャートである。
【図１３】復帰手順の設定手順を例示するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１６】
〔ロボットシステム〕
本実施形態に係るロボットシステムは、ロボットと、その周辺に配置される少なくとも１台の周辺機器とによって、ワークに対し所定の作業（例えば加工、組立等）を実行するシステムである。ロボットと周辺機器との協働形態の具体例としては、ロボットがハンドリングするワークに対して周辺機器により所定の作業を施す形態、周辺機器が保持し位置・姿勢を調節するワークにロボットによる所定の作業を施す形態等が挙げられる。
【００１７】
図１に示すように、ロボットシステム１は、少なくとも１台のロボット１０と、少なくとも１台の周辺機器５０と、制御システム２とを備える。ロボット１０は、例えば６軸の垂直多関節ロボットであり、基部１１と、旋回部１２と、第１アーム１３と、第２アーム１４と、手首部１５と、先端部１６と、アクチュエータ４１，４２，４３，４４，４５，４６とを有する。
【００１８】
基部１１は、床面又は台車等に固定される。旋回部１２は基部１１上に設けられており、鉛直な軸線２１まわりに旋回可能である。すなわちロボット１０は、軸線２１まわりに旋回部１２を旋回可能とする関節３１を有する。
【００１９】
第１アーム１３は、旋回部１２から延出しており、軸線２１に交差（例えば直交）する軸線２２まわりに揺動可能である。すなわちロボット１０は、軸線２２まわりに第１アーム１３を揺動可能とする関節３２を有する。なお、ここでの交差は、所謂立体交差のように互いにねじれの関係にある状態での交差を含む。以下においても同様である。
【００２０】
第２アーム１４は、第１アーム１３の先端部から延出しており、軸線２１に交差（例えば直交）する軸線２３まわりに揺動可能である。すなわちロボット１０は、軸線２３まわりに第２アーム１４を揺動可能とする関節３３を有する。軸線２３は軸線２２と平行であってもよい。
【００２１】
第２アーム１４の先端部は、第２アーム１４の延出方向に沿って軸線２３に交差（例えば直交）する軸線２４まわりに旋回可能である。すなわちロボット１０は、軸線２４まわりに第２アーム１４の先端部を旋回可能とする関節３４を有する。
【００２２】
手首部１５は、第２アーム１４の先端部から延出しており、軸線２４に交差（例えば直交）する軸線２５まわりに揺動可能である。すなわちロボット１０は、軸線２５まわりに手首部１５を揺動可能とする関節３５を有する。
【００２３】
先端部１６は、手首部１５の先端部に設けられており、手首部１５の延出方向に沿って軸線２５に交差（例えば直交）する軸線２６まわりに旋回可能である。すなわちロボット１０は、軸線２６まわりに先端部１６を旋回可能とする関節３６を有する。先端部１６には、作業用の様々なツールが設けられる。ツールの具体例としては、ワークを保持するためのハンド、塗料を吐出する塗装ガン、及び溶接トーチ等が挙げられる。
【００２４】
アクチュエータ４１，４２，４３，４４，４５，４６は、関節３１，３２，３３，３４，３５，３６をそれぞれ駆動する。例えばアクチュエータ４１は軸線２１まわりに旋回部１２を旋回させ、アクチュエータ４２は軸線２２まわりに第１アーム１３を揺動させ、アクチュエータ４３は軸線２３まわりに第２アーム１４を揺動させ、アクチュエータ４４は軸線２４まわりに第２アーム１４の先端部を旋回させ、アクチュエータ４５は軸線２５まわりに手首部１５を揺動させ、アクチュエータ４６は軸線２６まわりに先端部１６を旋回させる。
【００２５】
なお、ロボット１０は、先端部１６の位置及び姿勢を所望の範囲で変更し得る限りいかようにも構成可能である。例えばロボット１０は、上述した６軸の垂直多関節ロボットに冗長軸を追加した７軸の垂直多関節ロボットであってもよい。また、ロボット１０は所謂スカラー型のロボットであってもよく、パラレルリンク型のロボットであってもよい。
【００２６】
周辺機器５０の具体例としては、ＮＣ（Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ）工作機械（例えばマシニングセンタ、ＮＣ旋盤、ＮＣフライス盤等）、ワークを保持して姿勢を調節するワーク姿勢調節装置等が挙げられる。周辺機器５０は、ロボット１０と同様に構成されたロボットであってもよい。なお、図１においては、１台のロボット１０と、２台の周辺機器５０とを示しているが、ロボット１０及び周辺機器５０の数に特に制限はない。
【００２７】
制御システム２は、プログラムに基づいて、少なくともロボット１０を動作させることと、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づくロボット１０による周辺機器５０と連動した一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づいて、復帰プログラムを生成することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させることと、を実行するように構成されている。
【００２８】
例えば制御システム２は、コントローラ１００と、制御支援装置２００と、シミュレータ３００とを有する。以下、これらの構成を個別に例示する。ロボット１０及び周辺機器５０の配置位置を基準にして、コントローラ１００は所謂エッジ側に配置される。これに対し、シミュレータ３００は所謂クラウド側に配置される。例えばシミュレータ３００は、通信ネットワークＮＷを介してコントローラ１００と通信する。通信ネットワークＮＷは、インターネットであってもよいし、プライベートネットワークであってもよい。
【００２９】
制御支援装置２００はシミュレータ３００とコントローラ１００との間に介在する。制御支援装置２００は、シミュレータ３００と複数のコントローラ１００との間に介在していてもよい。制御支援装置２００はエッジ側に設けられていてよいし、クラウド側に設けられていてもよい。例えば制御支援装置２００はエッジ側に設けられており、コントローラ１００に接続されている。ここでの接続は、無線又は有線により相互の情報通信が可能となっていることを意味する。
【００３０】
シミュレータ３００は、通信ネットワークＮＷを介して少なくとも１つの制御支援装置２００と通信し、通信ネットワークＮＷ及び制御支援装置２００を介してコントローラ１００と通信する。シミュレータ３００は、複数の制御支援装置２００と通信してもよい。以下、コントローラ１００、制御支援装置２００及びシミュレータ３００の機能及び構成を個別に説明する。
【００３１】
（コントローラ）
コントローラ１００は、プログラムに基づいて少なくともロボット１０を制御することと、周辺機器５０でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させることと、を実行する。
【００３２】
例えばコントローラ１００は、１セルにまとめられた少なくとも１台のロボット１０及び少なくとも１台の周辺機器５０を制御するセルコントローラである。コントローラ１００は、ロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６に駆動電力を出力し、周辺機器５０に制御指令を出力するように構成されている。コントローラ１００は、少なくともいずれかの周辺機器５０に対し、制御指令に代えて駆動電力を出力するように構成されていてもよい。
【００３３】
なお、コントローラ１００は、必ずしも１つの筐体にまとまっていなくてもよく、複数の筐体に分かれていてもよい。例えばコントローラ１００は、制御指令に応じてロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６に駆動電力を出力するロボットコントローラと、ロボットコントローラ及び周辺機器５０に制御指令を出力するプログラマブルロジックコントローラとに分かれていてもよい。
【００３４】
駆動電力を受ける周辺機器５０（以下、「第１タイプの周辺機器５０」という。）と、制御指令を受ける周辺機器５０（以下、「第２タイプの周辺機器５０」という。）とが存在する場合、コントローラ１００は、上記ロボットコントローラと、制御指令に応じて第１タイプの周辺機器５０に駆動電力を出力するサーボドライバと、ロボットコントローラ、サーボドライバ、及び第２タイプの周辺機器５０に制御指令を出力するプログラマブルロジックコントローラとに分かれていてもよい。
【００３５】
図２に示すように、コントローラ１００（制御装置）は、機能的な構成（以下、「機能ブロック」という。）として、プログラム記憶部１１１と、制御部１１２と、中断部１１３と、復帰プログラム取得部１１４とを有する。
【００３６】
プログラム記憶部１１１は、ロボット１０と周辺機器５０とを動作させるための動作プログラムを記憶している。動作プログラムは、ロボット１０を動作させるためのロボット動作プログラムと、ロボット１０に連動して周辺機器５０に処理を実行させるための周辺処理プログラムとを含む。
【００３７】
ロボット動作プログラムは、時系列に並ぶ複数の単位ジョブを含む。各単位ジョブは、一連の単位動作をロボット１０に実行させるためのプログラムである。単位動作の具体例としては、ワークの把持、把持したワークの搬送、周辺機器５０へのワークの取り付け、周辺機器５０からのワークの取り外し、周辺機器５０への工具の取り付け、周辺機器５０からの工具の取り外し、工具の把持、把持した工具の搬送、工具によるワークへの加工等が挙げられる。
【００３８】
例えば単位ジョブは、時系列に並ぶ複数の動作命令を含む。各動作命令は、先端部１６の目標位置及び目標姿勢と、目標位置及び目標姿勢への移動速度と、現在位置及び現在姿勢から目標位置及び目標姿勢までの補間方式とを含む。補間方式の具体例としては、線形補間、Ｓ字補間等が挙げられる。
【００３９】
ロボット動作プログラムは、ロボット１０の複数の単位動作の１又は２以上の間に、中断可能ポイントを有していてもよい。中断可能ポイントを示す情報は、単位ジョブに対応付けて記憶されていてもよい。例えば、各単位ジョブが、当該ジョブの完了後にロボット１０の動作を中断可能であるかを示す停止可否フラグを含んでいてもよい。例えば、単位ジョブの停止可否フラグが「可」である場合、当該単位ジョブと次の単位ジョブとの間が中断可能ポイントとなる。
【００４０】
周辺処理プログラムは、ロボット１０に連動して周辺機器５０に処理を実行させるための少なくとも１つの処理命令を含んでいる。処理命令は、一連の単位処理の内容を、周辺機器５０にて認識可能な形式で表した命令コードである。
【００４１】
制御部１１２は、プログラムに基づいて、少なくともロボット１０を動作させる。例えば制御部１１２は、ロボット動作プログラムに基づいてロボット１０を動作させ、周辺機器動作プログラムに基づいて周辺機器５０を動作させる。
【００４２】
例えば制御部１１２は、ロボット１０及び周辺機器５０の制御を所定の制御周期で繰り返す。各制御周期において、制御部１１２は、ロボット１０及び周辺機器５０の状態とロボット動作プログラムとに基づいてロボット１０に対する制御指令を算出し、算出した制御指令に応じた駆動電力をアクチュエータ４１，４２，４３，４４，４５，４６に出力する。
【００４３】
例えば制御部１１２は、ロボット１０及び周辺機器５０の状態とロボット動作プログラムとに基づいて制御周期ごとの先端部１６の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ４１，４２，４３，４４，４５，４６の目標角度を上記制御指令として算出する。各制御周期において、制御部１１２は、ロボット１０及び周辺機器５０の状態と周辺機器動作プログラムとに基づいて周辺機器５０に対する制御指令を算出し、出力する。
【００４４】
中断部１１３は、周辺機器５０でイレギュラー状態が発生した場合に、ロボット動作プログラムに基づくロボット１０による動作（周辺機器５０と連動した一連の複数の単位動作）を中断させる。中断部１１３は、周辺機器動作プログラムに基づく周辺機器５０による動作（ロボット１０と連動した動作）を中断させてもよい。
【００４５】
イレギュラー状態の具体例としては、ワークの設置不良、工具の設置不良、ワークの不存在、工具の不存在、ワークの品質不良、アクチュエータの過負荷異常、異常発熱、周辺機器５０のドアの開閉不良等が挙げられる。なお、周辺機器５０で発生するイレギュラー状態は、ワークの把持失敗、工具の把持失敗等、ロボット１０の動作失敗に起因して生じるイレギュラー状態を含む。
【００４６】
中断部１１３は、周辺機器５０でイレギュラー状態が発生した時より後の上記中断可能ポイントにおいて、ロボット１０による複数の単位動作を中断させてもよい。例えば中断部１１３は、周辺機器５０でイレギュラー状態が発生した時の次に訪れる上記中断可能ポイントにおいて、ロボット１０による複数の単位動作を中断させてもよい。
【００４７】
復帰プログラム取得部１１４は、イレギュラー状態の発生により動作を中断した時点におけるロボット１０の状態情報に少なくとも基づく復帰プログラムを取得する。例えば復帰プログラム取得部１１４は、イレギュラー状態の発生によりロボット１０が動作を中断した時点におけるロボットシステム１の状態情報を制御支援装置２００に送信し、ロボットシステム１の状態情報に基づき生成された復帰プログラムを制御支援装置２００から取得する。
【００４８】
ロボットシステム１の状態情報は、ロボット１０の状態情報（以下、「ロボット状態情報」という。）と、周辺機器５０の状態情報（以下、「周辺機器状態情報」という。）とを含む。
【００４９】
ロボット状態情報は、少なくとも先端部１６の位置及び姿勢を示す情報を含む。先端部１６の位置及び姿勢を示す情報は、関節３１，３２，３３，３４，３５，３６の角度情報であってもよい。ロボット状態情報は、ロボット１０の撮像画像等を更に含んでいてもよい。
【００５０】
周辺機器状態情報は、周辺機器５０におけるイレギュラー状態を表すイレギュラー状態情報を含む。イレギュラー状態情報の具体例としては、負荷レベル、発熱レベル等を示すレベル情報の他、上述した各種イレギュラー状態の発生を報知する各種アラーム情報等が挙げられる。周辺機器状態情報は、周辺機器５０の撮像画像等を更に含んでいてもよい。
【００５１】
復帰プログラムは、ロボット用の復帰プログラム（以下、「ロボット復帰プログラム」という。）と、周辺機器５０用の復帰プログラム（以下、「周辺復帰プログラム」という。）とを含んでいてもよい。
【００５２】
ロボット復帰プログラムは、中断された動作プログラムによる動作が継続可能な状態にするための動作（以下、「復帰動作」という。）をロボット１０に実行させるためのプログラムである。復帰動作の具体例としては、ワークの交換、工具の交換、ワークの再設置、工具の再設置等が挙げられる。また、周辺機器５０がロボット１０と同じ構成のロボット（以下、「他のロボット」という。）である場合、復帰動作は、他のロボットにより実行する予定であった作業を代替することを含んでいてもよい。
【００５３】
なお、中断された動作プログラムによる動作を継続可能な状態にすることは、当該動作を中断時点から継続可能な状態にすることの他、当該動作を中断時点より前の時点から継続可能な状態にすることも含む。中断時点より前の時点は、動作プログラムの開始時点であってもよい。継続可能な状態とは、イレギュラー状態が解除され、動作プログラムによる動作を再開可能な状態を意味する。
【００５４】
ロボット動作プログラムと同様に、ロボット復帰プログラムは、時系列に並ぶ複数の単位ジョブを含む。ロボット復帰プログラムが含む単位ジョブの数は一つであってもよい。周辺復帰プログラムは、中断された動作プログラムによる動作が継続可能な状態にするための処理（以下、「復帰処理」という。）を周辺機器５０に実行させるためのプログラムである。復帰処理の具体例としては、原点復帰等が挙げられる。周辺復帰プログラムは、ロボット１０に連動して周辺機器５０に復帰処理を実行させるための少なくとも１つの処理命令を含んでいる。
【００５５】
復帰プログラム取得部１１４が復帰プログラムを取得した場合、制御部１１２は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させる。その後、制御部１１２は、中断された動作プログラムによる動作をロボット１０に再開させる。
【００５６】
復帰プログラムが、上記ロボット復帰プログラムと周辺復帰プログラムとを含む場合、制御部１１２は、ロボット復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させ、周辺復帰プログラムに基づいて、ロボット１０に連動して周辺機器５０に復帰処理を実行させる。
【００５７】
なお、コントローラ１００は、イレギュラー状態が発生していない場合においても、ロボットシステム１の状態情報を周期的に制御支援装置２００に送信するように構成されていてもよい。
【００５８】
（制御支援装置）
制御支援装置２００は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを出力することと、を実行するように構成されている。
【００５９】
制御支援装置２００は、少なくとも１つのコントローラ１００と通信し、コントローラ１００から収集した情報に基づいてコントローラ１００による制御を支援するコンピュータである。制御支援装置２００は、複数のコントローラ１００と通信し、複数のコントローラ１００から収集した情報に基づいて各コントローラ１００による制御を支援するように構成されていてもよい。図３に示すように、制御支援装置２００は、機能ブロックとして、単位動作データベース２１１と、復帰処理データベース２１２と、復帰手順設定部２１３と、復帰手順データベース２１４と、種別特定部２１５と、復帰手順特定部２１６と、復帰プログラム出力部２１７とを含む。
【００６０】
単位動作データベース２１１は、上記ロボット復帰動作を構成するのに利用可能な複数の単位動作を記憶している。単位動作データベース２１１は、例えば、ワークの把持、把持したワークの搬送、周辺機器５０へのワークの取り付け、周辺機器５０からのワークの取り外し、周辺機器５０への工具の取り付け、周辺機器５０からの工具の取り外し、工具の把持、把持した工具の搬送等のように、動作目的を表す概念情報として複数の単位動作を記憶していてもよいし、複数の単位ジョブを複数の単位動作にそれぞれ対応付けて記憶していてもよい。単位動作データベース２１１が記憶する複数の単位ジョブは、プログラム記憶部１１１のロボット動作プログラムが含む単位ジョブと共通の単位ジョブを含んでいてもよい。
【００６１】
復帰処理データベース２１２は、上記復帰処理を構成するのに利用可能な複数の単位処理を記憶している。復帰処理データベース２１２は、例えば、初期化、原点復帰等のように、処理目的を表す概念情報として複数の単位処理を記憶していてもよいし、複数の処理命令を複数の単位処理にそれぞれ対応付けて記憶していてもよい。復帰処理データベース２１２が記憶する複数の処理命令は、プログラム記憶部１１１の周辺処理プログラムが含む処理命令と共通の処理命令を含んでいてもよい。
【００６２】
復帰手順設定部２１３は、周辺機器５０にて発生し得るイレギュラー状態の種別ごとに、ユーザの入力（例えば入力デバイス２２６への入力）に基づいて復帰手順を設定する。復帰手順は、イレギュラー状態の発生により中断された動作プログラムによる動作が継続可能な状態にするために、ロボット１０に実行させるべき復帰手順（以下、「ロボット復帰手順」という。）と、周辺機器５０に実行させるべき復帰手順（以下、「周辺復帰手順」という。）とを含む。ロボット復帰手順は、少なくとも１つの単位動作と、その実行手順とを含む。周辺復帰手順は、少なくとも１つの単位処理と、その実行順序とを含む。
【００６３】
復帰手順データベース２１４は、復帰手順設定部２１３が設定した復帰手順をイレギュラー状態の種別ごとに記憶している。種別特定部２１５は、少なくともイレギュラー状態情報に基づいて、イレギュラー状態の種別を特定する。ここでの種別は、復帰手順を導出し得るレベルでイレギュラー状態の要因を示す情報である。一例として、種別特定部２１５は、イレギュラー状態情報に基づいて、イレギュラー状態が復帰手順データベース２１４におけるいずれの種別に該当するのかを特定する。
【００６４】
復帰手順特定部２１６（単位動作特定部）は、種別特定部２１５により特定されたイレギュラー状態の種別に基づいて、既定されたロボット１０の動作を表す１又は２以上の単位動作を特定する。例えば復帰手順特定部２１６は、種別特定部２１５により特定されたイレギュラー状態の種別と復帰手順データベース２１４とに基づいて復帰手順を特定する。より具体的に、復帰手順特定部２１６は、復帰手順データベース２１４において、イレギュラー状態の種別に対応付けられた復帰手順を特定する。これにより、ロボット復帰手順が含む少なくとも１つの単位動作が特定され、周辺復帰手順が含む少なくとも１つの単位処理が復帰処理として特定される。
【００６５】
このように、イレギュラー状態の種別に対応する単位動作及び復帰処理が特定されるので、種別特定部２１５がイレギュラー状態の種別を特定することは、本実施形態において単位動作及び復帰処理を特定することに相当する。すなわち種別特定部２１５は、イレギュラー状態情報に基づいて、イレギュラー状態の種別に加えて、ロボット１０による１又は２以上の単位動作を特定し、周辺機器５０における復帰処理を特定する。
【００６６】
復帰プログラム出力部２１７は、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムをコントローラ１００に出力する。例えば復帰プログラム出力部２１７は、復帰手順特定部２１６が特定した復帰手順と、コントローラ１００から取得したロボットシステム１の状態情報とをシミュレータ３００に送信し、復帰手順及びロボットシステム１の状態情報に基づき生成された復帰プログラムをシミュレータ３００から取得し、取得した復帰プログラムをコントローラ１００に出力する。
【００６７】
（シミュレータ）
シミュレータ３００（復帰プログラム生成部）は、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器５０と連動した一連の複数の動作を中断したロボット１０のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを生成することと、を実行するように構成されている。
【００６８】
シミュレータ３００は、少なくともロボット状態情報に基づいて、ロボット１０と周辺機器５０のシミュレーションを用いて、復帰プログラムを生成してもよい。シミュレータ３００は、上記イレギュラー状態情報と、ロボット状態情報とに少なくとも基づいて、シミュレーション上にロボット１０と周辺機器５０との状態を再現して、復帰プログラムを生成してもよい。シミュレータ３００は、少なくとも上記イレギュラー状態の種別とロボット状態情報とに基づいて、シミュレーションを用いて復帰プログラムを生成してもよい。
【００６９】
シミュレータ３００は、ロボット１０及び周辺機器５０のシミュレーションモデルに基づいてコントローラ１００による制御のシミュレーションを行うセルシミュレータである。シミュレータ３００は、少なくとも１つの制御支援装置２００と通信し、制御支援装置２００が収集した情報に基づいて少なくとも１つのコントローラ１００による制御のシミュレーションを行う。シミュレータ３００は、複数の制御支援装置２００と通信し、各制御支援装置２００が収集した情報に基づいて複数のコントローラ１００による制御のシミュレーションを行うように構成されていてもよい。
【００７０】
図４に示すように、シミュレータ３００は、機能ブロックとして、シミュレーションモデル記憶部３１１と、エアカット生成部３１２と、プログラム化部３１３と、干渉チェック部３１４と、復帰プログラム出力部３１５とを有する。
【００７１】
シミュレーションモデル記憶部３１１は、ロボット１０のモデルデータと、周辺機器５０のモデルデータと、ワーク及び工具等のモデルデータとを記憶する。ロボット１０のモデルデータは、ロボット１０の配置、構造及び各部寸法を含む。周辺機器５０のモデルデータは、周辺機器５０の配置、構造及び各部寸法等を含む。ワーク及び工具等のモデルデータは構造及び各部寸法を含む。
【００７２】
エアカット生成部３１２は、制御支援装置２００から取得した復帰手順が含む少なくとも１つの単位動作と、ロボット状態情報とに基づいて、シミュレーションを用いて、単位動作の前及び後の少なくとも一方でロボット１０が動作すべきエアカット動作を生成する。
【００７３】
エアカット生成部３１２は、シミュレーションを用いて、ロボット１０が周辺機器５０を含む他の物体に衝突しないように、エアカット動作を生成してもよい。例えばエアカット生成部３１２は、ロボットシステム１の状態情報と、シミュレーションモデル記憶部３１１が記憶するモデルデータとに基づいて、ロボット１０と周辺機器５０との状態のモデルをバーチャル空間に再現し、当該モデルに基づいて先端部１６の現在位置及び姿勢から最初の単位動作の始点（最初の動作命令の目標位置及び目標姿勢）までのエアカット動作を生成する。
【００７４】
また、エアカット生成部３１２は、復帰手順が複数の単位動作を含む場合に、単位動作間のエアカット動作を生成する。例えばエアカット生成部３１２は、先行する単位動作の終点（最後の動作命令の目標位置及び目標姿勢）と、後続する単位動作の始点（最初の動作命令の目標位置及び目標姿勢）までのエアカット動作を生成する。エアカット動作の一例として、エアカット生成部３１２は、時系列に並ぶ複数の動作命令を含むエアカットジョブを生成する。各動作命令は、先端部１６の目標位置及び目標姿勢と、目標位置及び目標姿勢への移動速度と、現在位置及び現在姿勢から目標位置及び目標姿勢までの補間方式とを含む。
【００７５】
一例として、エアカット生成部３１２は、エアカット動作の区間において、他の物体との衝突を回避可能な経由点を生成し、当該経由点を通るようにエアカットジョブを修正することを、エアカットジョブ全体にわたって衝突回避が可能となるまで繰り返す。なお、エアカットジョブの生成手法は、例えば特許第４１０３０５７号等にも詳細に開示されている。
【００７６】
プログラム化部３１３は、復帰手順が含む少なくとも１つの単位動作と、エアカット生成部３１２が生成したエアカット動作とに基づいて、ロボット復帰プログラムを生成する。例えばプログラム化部３１３は、復帰手順が含む少なくとも１つの単位動作に対応する少なくとも１つの単位ジョブと、エアカット生成部３１２が生成したエアカットジョブとをつないでロボット復帰プログラムを生成する。また、プログラム化部３１３は、復帰手順が含む復帰処理に基づいて、上記周辺復帰プログラムを生成する。
【００７７】
干渉チェック部３１４は、プログラム化部３１３が生成したロボット復帰プログラムに基づいて、ロボット１０が他の物体に衝突するか否かをシミュレーション上で確認する。例えば干渉チェック部３１４は、ロボット復帰プログラムに基づくロボット１０の姿勢の推移を、シミュレーションモデル記憶部３１１が記憶するモデルデータに基づく逆運動学演算及び順運動学演算により算出し、各姿勢における衝突の有無を確認する。
【００７８】
復帰プログラム出力部３１５は、プログラム化部３１３が生成し干渉チェック部３１４が干渉しないと確認したロボット復帰プログラムと、プログラム化部３１３が生成した周辺復帰プログラムとを組み合わせた復帰プログラムを制御支援装置２００に出力する。復帰プログラム出力部３１５は、復帰プログラムのみを制御支援装置２００に出力してもよいし、復帰プログラムの後に再開する動作プログラムを復帰プログラムにつなげたプログラムを制御支援装置２００に出力してもよい。
【００７９】
制御支援装置２００は、復帰プログラム出力部３１５から取得した復帰プログラムをコントローラ１００に出力する。これに応じ、コントローラ１００の制御部１１２が、ロボット復帰プログラムに基づいてロボット１０を周辺機器５０に対して動作させ、周辺復帰プログラムに基づいてロボット１０に連動して周辺機器５０に復帰処理を実行させる。その後コントローラ１００は、動作プログラムに基づくロボット１０及び周辺機器５０の動作を再開させる。
【００８０】
図５は、動作プログラムに基づくロボット１０の動作及び周辺機器５０の処理を例示するシーケンス図である。ロボット１０の動作は、単位動作Ｒ０１，Ｒ０２，Ｒ０３，Ｒ０４，Ｒ０５を含んでいる。左側の周辺機器５０の処理は、単位処理Ｍ１１，Ｍ１２，Ｍ１３を含んでおり、単位処理Ｍ１２は単位動作Ｒ０４に連動して実行される。右側の周辺機器５０の処理は、単位処理Ｍ２１，Ｍ２２，Ｍ２３，Ｍ２４を含んでおり、単位処理Ｍ２２は単位動作Ｒ０２に連動して実行される。単位動作Ｒ０４の直後の点Ｐ１は、上記中断可能ポイントを表している。
【００８１】
図５の単位処理Ｍ２３の途中（点Ｐ２参照）にて、イレギュラー状態が生じた場合における制御システム２の作用を例示する。点Ｐ２にてイレギュラー状態が発生すると、コントローラ１００は、点Ｐ２より後の中断可能ポイントである点Ｐ１までロボット１０の動作を継続し、ロボット１０の動作を中断させる。
【００８２】
その後、制御支援装置２００及びシミュレータ３００によって、復帰プログラムが生成され、コントローラ１００に出力される。これに応じ、図６に示すように、コントローラ１００は、ロボット復帰プログラムに基づく復帰動作Ｒ１１をロボットに実行させる。これに連動し、コントローラ１００は、周辺復帰プログラムに基づいて、復帰処理Ｍ３１を周辺機器５０に実行させる。
【００８３】
その後、コントローラ１００は、単位動作Ｒ０５からロボット１０の動作を再開させ、単位処理Ｍ１３から左側の周辺機器５０の処理を再開させ、イレギュラー状態が発生した単位処理Ｍ２３から右側の周辺機器５０の処理を再開させる。
【００８４】
なお、シミュレータ３００は、復帰手順が含む単位動作が上記概念情報である場合に、当該単位動作に対応する単位ジョブの生成も実行するように構成されていてもよい。また、シミュレータ３００は、生成した復帰プログラムを、復帰手順とロボットシステム１の状態情報とに対応付けて蓄積するように構成されていてもよい。この場合、復帰手順とロボットシステム１の状態情報とが一致する場合に過去の復帰プログラムを使いまわすことが可能となる。
【００８５】
（制御システムのハードウェア構成）
図７は、制御システムのハードウェア構成を例示するブロック図である。図７に示すように、コントローラ１００は、回路１２０を含む。回路１２０は、少なくとも一つのプロセッサ１２１と、メモリ１２２と、ストレージ１２３と、通信ポート１２４と、ドライバ１２５と、入出力ポート１２６と、ドライバ１２７とを含む。ストレージ１２３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばフラッシュメモリ）である。ストレージ１２３は、プログラムに基づいて少なくともロボット１０を制御することと、周辺機器５０でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させることと、をコントローラ１００に実行させるためのプログラムを記憶している。例えばストレージ１２３は、コントローラ１００のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【００８６】
メモリ１２２は、ストレージ１２３からロードしたプログラム及びプロセッサ１２１による演算結果等を一時的に記憶する。プロセッサ１２１は、メモリ１２２と協働して上記プログラムを実行することで、コントローラ１００の各機能ブロックを構成する。通信ポート１２４は、プロセッサ１２１からの指令に応じ、制御支援装置２００との間でネットワーク通信を行う。例えば通信ポート１２４は、上記復帰プログラム取得部１１４による復帰プログラムの取得に用いられる。ドライバ１２５は、プロセッサ１２１からの指令に従って、ロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。入出力ポート１２６は、プロセッサ１２１からの指令に応じて周辺機器５０との間で電気信号の入出力を行う。ドライバ１２７は、プロセッサ１２１からの指令に従って、周辺機器５０のアクチュエータを駆動する。
【００８７】
制御支援装置２００は、回路２２０を含む。回路２２０は、少なくとも一つのプロセッサ２２１と、メモリ２２２と、ストレージ２２３と、通信ポート２２４と、ネットワークアダプタ２２５と、入力デバイス２２６と、表示デバイス２２７とを含む。ストレージ２２３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばフラッシュメモリ）である。ストレージ２２３は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを出力することと、を制御支援装置２００に実行させるためのプログラムを記憶している。例えばストレージ２２３は、制御支援装置２００のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【００８８】
メモリ２２２は、ストレージ２２３からロードしたプログラム及びプロセッサ２２１による演算結果等を一時的に記憶する。プロセッサ２２１は、メモリ２２２と協働して上記プログラムを実行することで、制御支援装置２００の各機能ブロックを構成する。通信ポート２２４は、プロセッサ２２１からの指令に応じ、コントローラ１００との間でネットワーク通信を行う。例えば通信ポート２２４は、上記復帰プログラム出力部２１７による復帰プログラムの出力に用いられる。ネットワークアダプタ２２５は、プロセッサ２２１からの指令に応じて、シミュレータ３００との間で通信ネットワークＮＷを介した通信を行う。入力デバイス２２６は、例えば液晶モニタ等である。表示デバイス２２７は、例えばキーボード等である。入力デバイス２２６及び表示デバイス２２７は、所謂タッチパネルのように一体化されていてもよい。入力デバイス２２６及び表示デバイス２２７は、例えば上記復帰手順設定部２１３による復帰手順の設定に用いられる。
【００８９】
シミュレータ３００は、回路３２０を含む。回路３２０は、少なくとも一つのプロセッサ３２１と、メモリ３２２と、ストレージ３２３と、ネットワークアダプタ３２４とを含む。ストレージ３２３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばハードディスクドライブ又はフラッシュメモリ）である。ストレージ３２３は、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器５０と連動した一連の複数の動作を中断したロボット１０のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを生成することと、をシミュレータ３００に実行させるためのプログラムを記憶している。例えばストレージ３２３は、シミュレータ３００のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【００９０】
メモリ３２２は、ストレージ３２３からロードしたプログラム及びプロセッサ３２１による演算結果等を一時的に記憶する。プロセッサ３２１は、メモリ３２２と協働して上記プログラムを実行することで、シミュレータ３００の各機能ブロックを構成する。ネットワークアダプタ３２４は、プロセッサ３２１からの指令に応じて、制御支援装置２００との間で通信ネットワークＮＷを介した通信を行う。
【００９１】
なお、以上のハードウェア構成はあくまで一例であり、適宜変更可能である。例えばシミュレータ３００は必ずしもクラウド側に配置されていなくてもよく、コントローラ１００及び制御支援装置２００と共にエッジ側に配置されていてもよい。制御支援装置２００がコントローラ１００に組み込まれていてもよいし、制御支援装置２００及びシミュレータ３００がコントローラ１００に組み込まれていてもよい。また、コントローラ１００、制御支援装置２００及びシミュレータ３００は、必ずしもプログラムにより各機能を構成するものに限られない。例えばコントローラ１００、制御支援装置２００及びシミュレータ３００は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。
【００９２】
〔制御方法〕
続いて、制御方法の一例として、ロボットシステム１の制御手順を例示する。この制御手順は、コントローラ１００によるロボット１０及び周辺機器５０の制御手順と、制御支援装置２００による復帰プログラムの生成支援手順と、シミュレータ３００による復帰プログラムの生成手順と、制御支援装置２００による復帰手順の設定手順とを含む。以下、各手順を詳細に例示する。
【００９３】
（制御手順）
コントローラ１００によるロボット１０及び周辺機器５０の制御手順は、プログラムに基づいて少なくともロボット１０を制御することと、周辺機器５０でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させることと、を含む。
【００９４】
図８に示すように、コントローラ１００は、まずステップＳ０１，Ｓ０２，Ｓ０３を実行する。ステップＳ０１では、制御部１１２が、ロボット１０及び周辺機器５０の状態とロボット動作プログラムとに基づいて先端部１６の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ４１，４２，４３，４４，４５，４６の目標角度を上記制御指令として算出する。また、制御部１１２は、ロボット１０及び周辺機器５０の状態と周辺機器動作プログラムとに基づいて周辺機器５０に対する制御指令を算出する。
【００９５】
ステップＳ０２では、制御部１１２が、ステップＳ０１で算出した制御指令に応じた駆動電力をアクチュエータ４１，４２，４３，４４，４５，４６に出力し、ステップＳ０１で算出した制御指令を周辺機器５０に出力する。ステップＳ０３では、イレギュラー状態の発生がないかを中断部１１３が確認する。例えば中断部１１３は、周辺機器５０から取得した状態情報に基づいてイレギュラー状態の発生がないかを確認する。
【００９６】
ステップＳ０３においてイレギュラー状態の発生がないと判定した場合、コントローラ１００はステップＳ０４を実行する。ステップＳ０４では、動作プログラムの実行が完了したか否かを制御部１１２が確認する。
【００９７】
ステップＳ０４において動作プログラムの実行が完了していないと判定した場合、コントローラ１００はステップＳ０５を実行する。ステップＳ０５では、制御部１１２が、制御周期の経過を待って処理を次周期の制御に移行させる。その後、コントローラ１００は処理をステップＳ０１に戻す。以後、動作プログラムの実行が完了するまでは、イレギュラー状態の発生を確認しながらロボット１０及び周辺機器５０の制御が継続される。
【００９８】
ステップＳ０３においてイレギュラー状態が発生していると判定した場合、コントローラ１００はステップＳ１１にて中断処理を実行する。その後コントローラ１００は、ステップＳ１２にて復帰処理を実行した後に、ステップＳ０４を再開させる。中断処理及び復帰処理の具体的内容については後述する。
【００９９】
ステップＳ０４において動作プログラムの実行が完了したと判定した場合、コントローラ１００はロボット１０及び周辺機器５０の制御を完了する。
【０１００】
図９は、ステップＳ１１における中断処理の手順を例示するフローチャートである。図９に示すように、コントローラ１００は、まずステップＳ２１，Ｓ２２を実行する。ステップＳ２１では、中断部１１３が、周辺機器５０でイレギュラー状態が発生した時の次に訪れる上記中断可能ポイントを、ロボット１０による動作の中断ポイントとする。ステップＳ２２では、ロボット１０による動作が中断ポイントに到達したかを中断部１１３が確認する。
【０１０１】
ステップＳ２２においてロボット１０による動作が中断ポイントに到達していないと判定した場合、コントローラ１００はステップＳ２３，Ｓ２４，Ｓ２５を実行する。ステップＳ２３では、制御部１１２が、制御周期の経過を待って処理を次周期の制御に移行させる。ステップＳ２４では、ステップＳ０１と同様に、制御部１１２が、ロボット１０及び周辺機器５０の制御指令を算出する。ステップＳ２５では、ステップＳ０２と同様に、制御部１１２が、ステップＳ２４で算出した制御指令に応じた駆動電力をアクチュエータ４１，４２，４３，４４，４５，４６に出力し、ステップＳ２４で算出した制御指令を周辺機器５０に出力する。その後、コントローラ１００は処理をステップＳ２２に戻す。
【０１０２】
ステップＳ２２においてロボット１０による動作が中断ポイントに到達したと判定した場合、中断部１１３が、制御部１１２によるロボット１０及び周辺機器５０の制御を中断させる。以上で中断処理が完了する。
【０１０３】
図１０は、ステップＳ１２における復帰処理の手順を例示するフローチャートである。図１０に示すように、コントローラ１００は、まずステップＳ３１，Ｓ３２，Ｓ３３，Ｓ３４，Ｓ３５，Ｓ３６を実行する。ステップＳ３１では、復帰プログラム取得部１１４が、イレギュラー状態の発生によるロボット１０及び周辺機器５０の動作の中断を制御支援装置２００に通知する。ステップＳ３２では、復帰プログラム取得部１１４が、イレギュラー状態の発生によりロボット１０が動作を中断した時点におけるロボットシステム１の状態情報を制御支援装置２００に送信する。ステップＳ３３では、復帰プログラム取得部１１４が、ロボットシステム１の状態情報に基づき生成された復帰プログラムを制御支援装置２００から取得するのを待機する。
【０１０４】
ステップＳ３４では、制御部１１２が、ロボット１０及び周辺機器５０の状態とロボット復帰プログラムとに基づいて先端部１６の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ４１，４２，４３，４４，４５，４６の目標角度を上記制御指令として算出する。また、制御部１１２は、ロボット１０及び周辺機器５０の状態と周辺機器動作プログラムとに基づいて周辺機器５０に対する制御指令を算出する。ステップＳ３５では、制御部１１２が、ステップＳ３４で算出した制御指令に応じた駆動電力をアクチュエータ４１，４２，４３，４４，４５，４６に出力し、ステップＳ３４で算出した制御指令を周辺機器５０に出力する。ステップＳ３６では、復帰プログラムの実行が完了したか否かを制御部１１２が確認する。
【０１０５】
ステップＳ３６において復帰プログラムの実行が完了していないと判定した場合、コントローラ１００はステップＳ３７を実行する。ステップＳ３７では、制御部１１２が、制御周期の経過を待って次周期の制御に移行させる。その後、コントローラ１００は処理をステップＳ３１に戻す。以後、復帰プログラムの実行が完了するまでは、復帰プログラムに基づくロボット１０及び周辺機器５０の制御が継続される。
【０１０６】
ステップＳ３６において復帰プログラムの実行が完了したと判定した場合、コントローラ１００は復帰プログラムに基づくロボット１０及び周辺機器５０の制御を完了する。以上で復帰処理が完了する。
【０１０７】
（復帰プログラムの生成支援手順）
制御支援装置２００による復帰プログラムの生成支援手順は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを出力することと、を含む。
【０１０８】
図１１に示すように、制御支援装置２００は、ステップＳ４１，Ｓ４２，Ｓ４３，Ｓ４４，Ｓ４５，Ｓ４６，Ｓ４７を実行する。ステップＳ４１では、復帰プログラム出力部２１７が、ロボット１０及び周辺機器５０の動作の中断の通知を待機する。ステップＳ４２では、復帰プログラム出力部２１７が、イレギュラー状態の発生によりロボット１０が動作を中断した時点におけるロボットシステム１の状態情報の受信を待機する。
【０１０９】
ステップＳ４３では、種別特定部２１５が、少なくともイレギュラー状態情報に基づいて、イレギュラー状態の種別を特定する。ステップＳ４４では、復帰手順特定部２１６が、種別特定部２１５により特定されたイレギュラー状態の種別と復帰手順データベース２１４とに基づいて復帰手順を特定する。
【０１１０】
ステップＳ４５では、復帰手順特定部２１６が特定した復帰手順と、コントローラ１００から取得したロボットシステム１の状態情報とを、復帰プログラム出力部２１７がシミュレータ３００に送信する。ステップＳ４６では、復帰プログラム出力部２１７が、復帰手順及びロボットシステム１の状態情報に基づき生成された復帰プログラムをシミュレータ３００から取得するのを待機する。ステップＳ４７では、復帰プログラム出力部２１７が、シミュレータ３００から取得した復帰プログラムをコントローラ１００に出力する。以上で復帰プログラムの生成支援手順が完了する。
【０１１１】
（復帰プログラムの生成手順）
シミュレータ３００による復帰プログラムの生成手順は、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器５０と連動した一連の複数の動作を中断したロボット１０のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット１０の復帰プログラムを生成することと、を含む。
【０１１２】
図１２に示すように、シミュレータ３００は、まずステップＳ５１，Ｓ５２，Ｓ５３，Ｓ５４，Ｓ５５を実行する。ステップＳ５１では、復帰手順特定部２１６が特定した復帰手順と、コントローラ１００から取得したロボットシステム１の状態情報との制御支援装置２００からの受信を、エアカット生成部３１２が待機する。ステップＳ５２では、エアカット生成部３１２が、ロボットシステム１の状態情報と、シミュレーションモデル記憶部３１１が記憶するモデルデータとに基づいて、ロボット１０と周辺機器５０との状態をバーチャル空間に再現する。以下、エアカット生成部３１２がバーチャル空間に再現した状態を「再現モデル」という。
【０１１３】
ステップＳ５３では、エアカット生成部３１２が、再現モデルに基づいて、上記エアカット動作を生成する。ステップＳ５４では、復帰手順が含む少なくとも１つの単位動作と、エアカット生成部３１２が生成したエアカット動作とに基づいて、プログラム化部３１３がロボット復帰プログラムを生成する。また、プログラム化部３１３は、復帰手順が含む復帰処理に基づいて、上記周辺復帰プログラムを生成する。ステップＳ５５では、プログラム化部３１３が生成したロボット復帰プログラムに基づいて、ロボット１０が他の物体に衝突しないかを、干渉チェック部３１４がシミュレーション上で確認する。
【０１１４】
ステップＳ５５においてロボット１０が他の物体に衝突すると判定した場合、シミュレータ３００は処理をステップＳ５３に戻し、エアカット動作の生成を実行しなおす。
【０１１５】
ステップＳ５５においてロボット１０が他の物体に衝突しないと判定した場合、シミュレータ３００はステップＳ５６を実行する。ステップＳ５６では、プログラム化部３１３が生成し干渉チェック部３１４が干渉しないと確認したロボット復帰プログラムと、プログラム化部３１３が生成した周辺復帰プログラムとを組み合わせた復帰プログラムを、復帰プログラム出力部３１５が制御支援装置２００に出力する。以上で復帰プログラムの生成処理が完了する。
【０１１６】
（復帰手順の設定手順）
制御支援装置２００による復帰手順の設定手順は、イレギュラー状態の種別ごとに、ロボット１０の単位動作の選択入力と、周辺機器５０の単位処理の選択入力とを取得することと、選択入力で選択された単位動作及び復帰処理に基づいて復帰手順を設定することとを含む。
【０１１７】
図１３に示すように、制御支援装置２００は、ステップＳ６１，Ｓ６２，Ｓ６３，Ｓ６４，Ｓ６５，Ｓ６６を実行する。ステップＳ６１では、復帰手順の設定開始の要求が入力される（例えば入力デバイス２２６に入力される）のを、復帰手順設定部２１３が待機する。ステップＳ６２では、単位動作データベース２１１が記憶する複数の単位動作のリストを復帰手順設定部２１３が生成する。ステップＳ６３では、復帰処理データベース２１２が記憶する複数の単位処理のリストを復帰手順設定部２１３が生成する。
【０１１８】
ステップＳ６４では、復帰手順設定部２１３が、復帰手順の入力画面を表示（例えば表示デバイス２２７に表示）する。入力画面は、ステップＳ６１，Ｓ６２で生成されたリストの表示部と、復帰手順の設定対象となるイレギュラー状態の種別を指定する入力部と、実行順序を定めながら単位動作及び単位処理を選択する入力部とを含む。
【０１１９】
ステップＳ６５では、復帰手順設定部２１３が、入力画面への入力内容の登録要求を待機する。ステップＳ６６では、復帰手順設定部２１３が、入力画面への入力内容に基づいて復帰手順を設定し、これを入力画面の上記種別に対応付けて復帰手順データベース２１４に記憶させる。以上で復帰手順の設定手順が完了する。
【０１２０】
〔本実施形態の効果〕
以上に説明したように、ロボットシステム１は、ロボット１０と、ロボット１０の周辺に配置された周辺機器５０と、プログラムに基づいて、少なくともロボット１０を動作させる制御部１１２と、周辺機器５０でイレギュラー状態が発生した場合に、動作プログラムに基づくロボット１０による周辺機器５０と連動した一連の複数の動作を中断させる中断部１１３と、イレギュラー状態の発生により動作を中断した時点におけるロボット１０のロボット状態情報に少なくとも基づいて、復帰プログラムを生成するシミュレータ３００と、を備え、制御部１１２は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット１０を周辺機器５０に対して動作させる。
【０１２１】
このロボットシステム１によれば、イレギュラー状態の発生によりロボット１０の動作が中断した場合に、復帰プログラムに基づいて中断した動作を自動的に再開することができる。また、ロボット状態情報に基づく復帰プログラムの自動生成も行われるので、予め多くの復帰プログラムを用意しておかなくても、様々なイレギュラー状態からの自動復帰が可能となる。従って、イレギュラー状態からの迅速な復帰に有効である。
【０１２２】
本実施形態が例示するように、シミュレータ３００は、少なくともロボット状態情報に基づいて、ロボット１０と周辺機器５０のシミュレーションを用いて、復帰プログラムを生成してもよい。この場合、シミュレーションにより柔軟で信頼性の高い復帰プログラムを生成できる。
【０１２３】
本実施形態が例示するように、シミュレータ３００は、少なくとも周辺機器５０のイレギュラー状態を表すイレギュラー状態情報と、ロボット状態情報とに少なくとも基づいて、シミュレーション上にロボット１０と周辺機器５０との状態を再現して、復帰プログラムを生成してもよい。この場合、更に信頼性の高い復帰プログラムを生成できる。
【０１２４】
本実施形態にて例示したように、ロボットシステム１は、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部２１５を更に有し、シミュレータ３００は、少なくともイレギュラー状態の種別とロボット状態情報とに基づいて、シミュレーションを用いて復帰プログラムを生成してもよい。イレギュラー状態の種別を特定するためのロジックは、ロボット１０の動作プログラミングのスキルがなくても設定可能である。そこで、シミュレータ３００と種別特定部２１５とを切り分けることで、種別特定部２１５による特定に使用するデータベースやロジックの構築をユーザに委ねることが可能となり、ロボットシステム１の立ち上げが容易になる。
【０１２５】
本実施形態が例示するように、種別特定部２１５は、イレギュラー状態情報に基づいて、イレギュラー状態の種別に加えて、周辺機器５０における復帰処理を特定し、周辺機器５０は、復帰処理を実行してもよい。この場合、周辺機器５０の動作も自動的に再開することができる。従って、イレギュラー状態からの迅速な復帰に更に有効である。
【０１２６】
本実施形態が例示するように、ロボットシステム１は、イレギュラー状態の種別に基づいて、既定されたロボット１０の動作を表す１又は２以上の単位動作を特定する復帰手順特定部２１６を更に備え、シミュレータ３００は、少なくとも単位動作とロボット状態情報とに基づいて、シミュレーションを用いて、単位動作の前及び後の少なくとも一方でロボット１０が動作すべきエアカット動作を生成するエアカット生成部３１２と、単位動作とエアカット動作とに基づいて、復帰プログラムを生成するプログラム化部３１３と、を有していてもよい。この場合、精度が求められるところは単位動作として既定しておき、その間をエアカット動作で繋ぐことで、高い精度が求められる復帰プログラムも、より少ないリソースで生成できる。
【０１２７】
本実施形態が例示するように、エアカット生成部３１２は、シミュレーションを用いて、ロボット１０が周辺機器５０を含む他の物体に衝突しないように、エアカット動作を生成してもよい。この場合、より信頼性の高い復帰プログラムを生成することができる。
【０１２８】
本実施形態が例示するように、シミュレータ３００は、プログラム化部３１３が生成した復帰プログラムに基づいて、ロボット１０が周辺機器５０を含む他の物体に衝突するか否かをシミュレーション上で確認する干渉チェック部３１４を更に有し、制御部１１２は、干渉チェック部３１４が干渉しないと確認した復帰プログラムに基づいて、ロボット１０を動作させてもよい。この場合、復帰プログラムの信頼性が更に向上する。
【０１２９】
本実施形態が例示するように、動作プログラムは、ロボット１０の複数の動作の１又は２以上の間に、中断可能ポイントを有しており、中断部１１３は、周辺機器５０でイレギュラー状態が発生した時より後に設定された中断可能ポイントにおいて、ロボット１０による複数の動作を中断させてもよい。この場合、動作を中断する時点のロボット１０の状態を、予め定められた中断ポイントに制限することで、ロボット１０の動作の中断がロボットシステム１のアウトプット（ワークの生産等）に及ぼす影響を抑えることができる。また、動作を中断する時点のロボット１０の状態を制限することは、復帰プログラムの生成の容易化にも有効である。
【０１３０】
本実施形態が例示するように、少なくともシミュレータ３００は、ロボット１０と周辺機器５０とが配置されるエッジ側に配置される制御部１１２に対して、プライベートネットワーク又はインターネットを介して通信してもよい。この場合、シミュレータ３００をネットワーク上に配置することで、シミュレータ３００を、複数の制御部１１２で共用し易くなる。
【０１３１】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【０１３２】
１…ロボットシステム、１０…ロボット、５０…周辺機器、１１２…制御部、１１３…中断部、１１４…復帰プログラム取得部、２００…制御支援装置、２１５…種別特定部、２１６…復帰手順特定部（単位動作特定部）、２１７…復帰プログラム出力部、３００…シミュレータ（復帰プログラム生成部）、３１２…エアカット生成部、３１３…プログラム化部、３１４…干渉チェック部、Ｍ３１…復帰処理、Ｒ０１，Ｒ０２，Ｒ０３，Ｒ０４，Ｒ０５…単位動作。
【図１】
2020189395.tif 000003
【図２】
2020189395.tif 000004
【図３】
2020189395.tif 000005
【図４】
2020189395.tif 000006
【図５】
2020189395.tif 000007
【図６】
2020189395.tif 000008
【図７】
2020189395.tif 000009
【図８】
2020189395.tif 000010
【図９】
2020189395.tif 000011
【図１０】
2020189395.tif 000012
【図１１】
2020189395.tif 000013
【図１２】
2020189395.tif 000014
【図１３】
2020189395.tif 000015