(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-18
(45)【発行日】2023-07-26
(54)【発明の名称】ロボットシステム、復帰プログラム生成装置、制御支援装置、制御装置、プログラム、復帰プログラムの生成方法及び復帰プログラムの出力方法
(51)【国際特許分類】
B25J 19/06 20060101AFI20230719BHJP
B25J 9/22 20060101ALI20230719BHJP
B25J 13/00 20060101ALI20230719BHJP
G05B 19/4093 20060101ALI20230719BHJP
G05B 19/4067 20060101ALI20230719BHJP
B23Q 15/00 20060101ALI20230719BHJP
【FI】
B25J19/06
B25J9/22 A
B25J13/00 Z
G05B19/4093 J
G05B19/4093 E
G05B19/4067
B23Q15/00 D
(21)【出願番号】P 2020019142
(22)【出願日】2020-02-06
(62)【分割の表示】P 2019545836の分割
【原出願日】2019-05-17
【審査請求日】2022-05-16
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(72)【発明者】
【氏名】橋口 幸男
(72)【発明者】
【氏名】桑原 康一
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2015-024477(JP,A)
【文献】特開2015-168038(JP,A)
【文献】特開2018-069366(JP,A)
【文献】特開2018-167361(JP,A)
【文献】特開2006-018575(JP,A)
【文献】特開2018-013919(JP,A)
【文献】特開2016-071444(JP,A)
【文献】特開平10-003308(JP,A)
【文献】特開2018-051686(JP,A)
【文献】国際公開第2010/092981(WO,A1)
【文献】特開2006-012074(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/416
G05B 19/42 - 19/46
B23Q 15/00 - 15/28
(57)【特許請求の範囲】
【請求項1】
ロボットと、
前記ロボットの周辺に配置され、前記ロボットと連動する
第1周辺機器
及び第2周辺機器と、
動作プログラムに基づいて、前記
第1周辺機器
及び第2周辺機器の動作と連動して前記ロボットを動作させる制御部と、
前記
第1周辺機器
又は前記第2周辺機器でイレギュラー状態が発生した場合に、前記動作プログラムに基づく前記ロボットによる前記
第1周辺機器
及び第2周辺機器と連動した一連の複数の動作を中断させる中断部と、
前記イレギュラー状態の発生により動作を中断した時点における前記ロボットのロボット状態情報
と、前記
第1周辺機器
又は前記第2周辺機器の前記イレギュラー状態を表すイレギュラー状態情報
とに少なくとも基づいて、復帰プログラムを生成する復帰プログラム生成部と、
を備え、
前記制御部は、
前記復帰プログラムに基づいて、前記
第1周辺機器
及び前記第2周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするように、前記ロボットを動作させ
、
前記複数の動作は、
前記第1周辺機器と連動する第1動作と、前記第1動作の後に前記第2周辺機器と連動する第2動作と、を含み、
前記中断部は、前記第1動作の完了後、前記第2動作の完了前に前記第1周辺機器でイレギュラー状態が発生した場合に、前記制御部に前記第2動作の完了まで前記ロボットの動作を継続させた後に前記複数の動作を中断させ、
前記復帰プログラム生成部は、少なくとも前記イレギュラー状態情報と、前記ロボット状態情報とに基づいて、シミュレーション上に前記ロボットと前記第1周辺機器及び前記第2周辺機器との状態を再現し、前記ロボットと前記第1周辺機器及び前記第2周辺機器とのシミュレーションを用いて、前記復帰プログラムを生成する、ロボットシステム。
【請求項2】
少なくとも前記イレギュラー状態情報に基づいて、当該イレギュラー状態の種別と、前記
第1周辺機器
又は前記第2周辺機器における復帰処理とを特定する種別特定部を更に有し、
前記復帰プログラム生成部は、少なくとも前記イレギュラー状態の種別と前記ロボット状態情報とに基づいて、前記シミュレーションを用いて前記復帰プログラムを生成し、
前記
第1周辺機器
又は前記第2周辺機器は、前記復帰処理を実行する、請求項
1に記載のロボットシステム。
【請求項3】
前記イレギュラー状態の種別に基づいて、既定された前記ロボットの動作を表す1又は2以上の単位動作を特定する単位動作特定部を更に備え、
前記復帰プログラム生成部は、
少なくとも前記単位動作と前記ロボット状態情報とに基づいて、前記シミュレーションを用いて、前記単位動作の前及び後の少なくとも一方で前記ロボットが動作すべきエアカット動作を生成するエアカット生成部と、
前記単位動作と前記エアカット動作とに基づいて、前記復帰プログラムを生成するプログラム化部と、
を有する、請求項
2に記載のロボットシステム。
【請求項4】
前記復帰プログラム生成部は、
前記プログラム化部が生成した前記復帰プログラムに基づいて、前記ロボットが前記周辺機器を含む他の物体に衝突するか否かを前記シミュレーション上で確認する干渉チェック部を更に有し、
前記制御部は、前記干渉チェック部が干渉しないと確認した前記復帰プログラムに基づいて、前記ロボットを動作させる、請求項
3に記載のロボットシステム。
【請求項5】
動作プログラムに基づいて、
第1周辺機器
と連動する第1動作と、前記第1動作の後に第2周辺機器と連動する第2動作と、を含む一連の複数の動作
をロボット
に実行させることと、
前記第1動作の完了後、前記第2動作の完了前に前記
第1周辺機器でイレギュラー状態が発生した場合に、
前記第2動作の完了まで前記ロボットの動作を継続させた後に前記複数の動作を中断させることと、
前記イレギュラー状態の発生により動作を中断した時点における前記ロボットのロボット状態情報
と、前記
第1周辺機器の前記イレギュラー状態を表すイレギュラー状態情報
とに少なくとも基づいて、
シミュレーション上に前記ロボットと前記第1周辺機器及び前記第2周辺機器との状態を再現し、前記ロボットと前記第1周辺機器及び前記第2周辺機器とのシミュレーションを用いて復帰プログラムを生成することと、
前記復帰プログラムに基づいて、前記
第1周辺機器
及び前記第2周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするように、前記ロボットを動作させることと、を含む制御方法。
【請求項6】
動作プログラムに基づいて、
第1周辺機器
と連動する第1動作と、前記第1動作の後に第2周辺機器と連動する第2動作と、を含む一連の複数の動作
をロボット
に実行させることと、
前記第1動作の完了後、前記第2動作の完了前に前記
第1周辺機器でイレギュラー状態が発生した場合に、
前記第2動作の完了まで前記ロボットの動作を継続させた後に前記複数の動作を中断させることと、
前記イレギュラー状態の発生により動作を中断した時点における前記ロボットのロボット状態情報
と、前記
第1周辺機器の前記イレギュラー状態を表すイレギュラー状態情報
とに少なくとも基づいて、
シミュレーション上に前記ロボットと前記第1周辺機器及び前記第2周辺機器との状態を再現し、前記ロボットと前記第1周辺機器及び前記第2周辺機器とのシミュレーションを用いて復帰プログラムを生成することと、
前記復帰プログラムに基づいて、前記
第1周辺機器
及び前記第2周辺機器の動作と、前記動作プログラムによる前記ロボットの動作とを継続可能とするように、前記ロボットを動作させることと、を含む制御方法を装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットシステム、復帰プログラム生成装置、制御支援装置、制御装置、プログラム、復帰プログラムの生成方法及び復帰プログラムの出力方法に関する。
【背景技術】
【0002】
特許文献1には、加工機とロボットとを備え、加工機に対するワークの交換をロボットに実行させる加工機システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、ロボットの周辺機器におけるイレギュラー状態からの迅速な復帰に有効なロボットシステムを提供する。
【課題を解決するための手段】
【0005】
本開示の一側面に係るロボットシステムは、ロボットと、ロボットの周辺に配置された周辺機器と、プログラムに基づいて、少なくともロボットを動作させる制御部と、周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づくロボットによる周辺機器と連動した一連の複数の動作を中断させる中断部と、イレギュラー状態の発生により動作を中断した時点におけるロボットのロボット状態情報に少なくとも基づいて、復帰プログラムを生成する復帰プログラム生成部と、を備え、制御部は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボットを周辺機器に対して動作させる。
【0006】
本開示の他の側面に係る復帰プログラム生成装置は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得する状態情報取得部と、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成する復帰プログラム生成部と、を備える。
【0007】
本開示の更に他の側面に係る制御支援装置は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得する状態情報取得部と、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部と、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力する復帰プログラム出力部と、を備える。
【0008】
本開示の更に他の側面に係る制御装置は、プログラムに基づいて、少なくともロボットを動作させる制御部と、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づくロボットによる周辺機器と連動した一連の複数の動作を中断させる中断部と、ロボット状態情報に少なくとも基づく復帰プログラムを取得する復帰プログラム取得部と、を備え、制御部は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボットを周辺機器に対して動作させる。
【0009】
本開示の更に他の側面に係るプログラムは、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成することと、を装置に実行させる。
【0010】
本開示の更に他の側面に係るプログラムは、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力することと、を装置に実行させる。
【0011】
本開示の更に他の側面に係る復帰プログラムの生成方法は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを生成することと、を含む。
【0012】
本開示の更に他の側面に係る復帰プログラムの出力方法は、ロボットの周辺に配置された周辺機器でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器と連動した一連の複数の動作を中断したロボットのロボット状態情報と、周辺機器のイレギュラー状態を表すイレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボットの復帰プログラムを出力することと、を含む。
【発明の効果】
【0013】
本開示によれば、ロボットの周辺機器におけるイレギュラー状態からの迅速な復帰に有効なロボットシステムを提供することができる。
【図面の簡単な説明】
【0014】
【
図1】ロボットシステムの概略構成を示す模式図である。
【
図2】コントローラの機能的な構成を例示するブロック図である。
【
図3】制御支援装置の機能的な構成を例示するブロック図である。
【
図4】シミュレータの機能的な構成を例示するブロック図である。
【
図5】動作プログラムを例示するシーケンス図である。
【
図6】復帰プログラムが挿入された動作プログラムを例示するシーケンス図である。
【
図7】制御システムのハードウェア構成を例示するブロック図である。
【
図9】中断処理手順を例示するフローチャートである。
【
図10】復帰処理手順を例示するフローチャートである。
【
図11】復帰プログラムの生成支援手順を例示するフローチャートである。
【
図12】復帰プログラムの生成手順を例示するフローチャートである。
【
図13】復帰手順の設定手順を例示するフローチャートである。
【発明を実施するための形態】
【0015】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【0016】
〔ロボットシステム〕
本実施形態に係るロボットシステムは、ロボットと、その周辺に配置される少なくとも1台の周辺機器とによって、ワークに対し所定の作業(例えば加工、組立等)を実行するシステムである。ロボットと周辺機器との協働形態の具体例としては、ロボットがハンドリングするワークに対して周辺機器により所定の作業を施す形態、周辺機器が保持し位置・姿勢を調節するワークにロボットによる所定の作業を施す形態等が挙げられる。
【0017】
図1に示すように、ロボットシステム1は、少なくとも1台のロボット10と、少なくとも1台の周辺機器50と、制御システム2とを備える。ロボット10は、例えば6軸の垂直多関節ロボットであり、基部11と、旋回部12と、第1アーム13と、第2アーム14と、手首部15と、先端部16と、アクチュエータ41,42,43,44,45,46とを有する。
【0018】
基部11は、床面又は台車等に固定される。旋回部12は基部11上に設けられており、鉛直な軸線21まわりに旋回可能である。すなわちロボット10は、軸線21まわりに旋回部12を旋回可能とする関節31を有する。
【0019】
第1アーム13は、旋回部12から延出しており、軸線21に交差(例えば直交)する軸線22まわりに揺動可能である。すなわちロボット10は、軸線22まわりに第1アーム13を揺動可能とする関節32を有する。なお、ここでの交差は、所謂立体交差のように互いにねじれの関係にある状態での交差を含む。以下においても同様である。
【0020】
第2アーム14は、第1アーム13の先端部から延出しており、軸線21に交差(例えば直交)する軸線23まわりに揺動可能である。すなわちロボット10は、軸線23まわりに第2アーム14を揺動可能とする関節33を有する。軸線23は軸線22と平行であってもよい。
【0021】
第2アーム14の先端部は、第2アーム14の延出方向に沿って軸線23に交差(例えば直交)する軸線24まわりに旋回可能である。すなわちロボット10は、軸線24まわりに第2アーム14の先端部を旋回可能とする関節34を有する。
【0022】
手首部15は、第2アーム14の先端部から延出しており、軸線24に交差(例えば直交)する軸線25まわりに揺動可能である。すなわちロボット10は、軸線25まわりに手首部15を揺動可能とする関節35を有する。
【0023】
先端部16は、手首部15の先端部に設けられており、手首部15の延出方向に沿って軸線25に交差(例えば直交)する軸線26まわりに旋回可能である。すなわちロボット10は、軸線26まわりに先端部16を旋回可能とする関節36を有する。先端部16には、作業用の様々なツールが設けられる。ツールの具体例としては、ワークを保持するためのハンド、塗料を吐出する塗装ガン、及び溶接トーチ等が挙げられる。
【0024】
アクチュエータ41,42,43,44,45,46は、関節31,32,33,34,35,36をそれぞれ駆動する。例えばアクチュエータ41は軸線21まわりに旋回部12を旋回させ、アクチュエータ42は軸線22まわりに第1アーム13を揺動させ、アクチュエータ43は軸線23まわりに第2アーム14を揺動させ、アクチュエータ44は軸線24まわりに第2アーム14の先端部を旋回させ、アクチュエータ45は軸線25まわりに手首部15を揺動させ、アクチュエータ46は軸線26まわりに先端部16を旋回させる。
【0025】
なお、ロボット10は、先端部16の位置及び姿勢を所望の範囲で変更し得る限りいかようにも構成可能である。例えばロボット10は、上述した6軸の垂直多関節ロボットに冗長軸を追加した7軸の垂直多関節ロボットであってもよい。また、ロボット10は所謂スカラー型のロボットであってもよく、パラレルリンク型のロボットであってもよい。
【0026】
周辺機器50の具体例としては、NC(Numerical Control)工作機械(例えばマシニングセンタ、NC旋盤、NCフライス盤等)、ワークを保持して姿勢を調節するワーク姿勢調節装置等が挙げられる。周辺機器50は、ロボット10と同様に構成されたロボットであってもよい。なお、
図1においては、1台のロボット10と、2台の周辺機器50とを示しているが、ロボット10及び周辺機器50の数に特に制限はない。
【0027】
制御システム2は、プログラムに基づいて、少なくともロボット10を動作させることと、周辺機器50でイレギュラー状態が発生した場合に、動作プログラムに基づくロボット10による周辺機器50と連動した一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット10のロボット状態情報に少なくとも基づいて、復帰プログラムを生成することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させることと、を実行するように構成されている。
【0028】
例えば制御システム2は、コントローラ100と、制御支援装置200と、シミュレータ300とを有する。以下、これらの構成を個別に例示する。ロボット10及び周辺機器50の配置位置を基準にして、コントローラ100は所謂エッジ側に配置される。これに対し、シミュレータ300は所謂クラウド側に配置される。例えばシミュレータ300は、通信ネットワークNWを介してコントローラ100と通信する。通信ネットワークNWは、インターネットであってもよいし、プライベートネットワークであってもよい。
【0029】
制御支援装置200はシミュレータ300とコントローラ100との間に介在する。制御支援装置200は、シミュレータ300と複数のコントローラ100との間に介在していてもよい。制御支援装置200はエッジ側に設けられていてよいし、クラウド側に設けられていてもよい。例えば制御支援装置200はエッジ側に設けられており、コントローラ100に接続されている。ここでの接続は、無線又は有線により相互の情報通信が可能となっていることを意味する。
【0030】
シミュレータ300は、通信ネットワークNWを介して少なくとも1つの制御支援装置200と通信し、通信ネットワークNW及び制御支援装置200を介してコントローラ100と通信する。シミュレータ300は、複数の制御支援装置200と通信してもよい。以下、コントローラ100、制御支援装置200及びシミュレータ300の機能及び構成を個別に説明する。
【0031】
(コントローラ)
コントローラ100は、プログラムに基づいて少なくともロボット10を制御することと、周辺機器50でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット10のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させることと、を実行する。
【0032】
例えばコントローラ100は、1セルにまとめられた少なくとも1台のロボット10及び少なくとも1台の周辺機器50を制御するセルコントローラである。コントローラ100は、ロボット10のアクチュエータ41,42,43,44,45,46に駆動電力を出力し、周辺機器50に制御指令を出力するように構成されている。コントローラ100は、少なくともいずれかの周辺機器50に対し、制御指令に代えて駆動電力を出力するように構成されていてもよい。
【0033】
なお、コントローラ100は、必ずしも1つの筐体にまとまっていなくてもよく、複数の筐体に分かれていてもよい。例えばコントローラ100は、制御指令に応じてロボット10のアクチュエータ41,42,43,44,45,46に駆動電力を出力するロボットコントローラと、ロボットコントローラ及び周辺機器50に制御指令を出力するプログラマブルロジックコントローラとに分かれていてもよい。
【0034】
駆動電力を受ける周辺機器50(以下、「第1タイプの周辺機器50」という。)と、制御指令を受ける周辺機器50(以下、「第2タイプの周辺機器50」という。)とが存在する場合、コントローラ100は、上記ロボットコントローラと、制御指令に応じて第1タイプの周辺機器50に駆動電力を出力するサーボドライバと、ロボットコントローラ、サーボドライバ、及び第2タイプの周辺機器50に制御指令を出力するプログラマブルロジックコントローラとに分かれていてもよい。
【0035】
図2に示すように、コントローラ100(制御装置)は、機能的な構成(以下、「機能ブロック」という。)として、プログラム記憶部111と、制御部112と、中断部113と、復帰プログラム取得部114とを有する。
【0036】
プログラム記憶部111は、ロボット10と周辺機器50とを動作させるための動作プログラムを記憶している。動作プログラムは、ロボット10を動作させるためのロボット動作プログラムと、ロボット10に連動して周辺機器50に処理を実行させるための周辺処理プログラムとを含む。
【0037】
ロボット動作プログラムは、時系列に並ぶ複数の単位ジョブを含む。各単位ジョブは、一連の単位動作をロボット10に実行させるためのプログラムである。単位動作の具体例としては、ワークの把持、把持したワークの搬送、周辺機器50へのワークの取り付け、周辺機器50からのワークの取り外し、周辺機器50への工具の取り付け、周辺機器50からの工具の取り外し、工具の把持、把持した工具の搬送、工具によるワークへの加工等が挙げられる。
【0038】
例えば単位ジョブは、時系列に並ぶ複数の動作命令を含む。各動作命令は、先端部16の目標位置及び目標姿勢と、目標位置及び目標姿勢への移動速度と、現在位置及び現在姿勢から目標位置及び目標姿勢までの補間方式とを含む。補間方式の具体例としては、線形補間、S字補間等が挙げられる。
【0039】
ロボット動作プログラムは、ロボット10の複数の単位動作の1又は2以上の間に、中断可能ポイントを有していてもよい。中断可能ポイントを示す情報は、単位ジョブに対応付けて記憶されていてもよい。例えば、各単位ジョブが、当該ジョブの完了後にロボット10の動作を中断可能であるかを示す停止可否フラグを含んでいてもよい。例えば、単位ジョブの停止可否フラグが「可」である場合、当該単位ジョブと次の単位ジョブとの間が中断可能ポイントとなる。
【0040】
周辺処理プログラムは、ロボット10に連動して周辺機器50に処理を実行させるための少なくとも1つの処理命令を含んでいる。処理命令は、一連の単位処理の内容を、周辺機器50にて認識可能な形式で表した命令コードである。
【0041】
制御部112は、プログラムに基づいて、少なくともロボット10を動作させる。例えば制御部112は、ロボット動作プログラムに基づいてロボット10を動作させ、周辺機器動作プログラムに基づいて周辺機器50を動作させる。
【0042】
例えば制御部112は、ロボット10及び周辺機器50の制御を所定の制御周期で繰り返す。各制御周期において、制御部112は、ロボット10及び周辺機器50の状態とロボット動作プログラムとに基づいてロボット10に対する制御指令を算出し、算出した制御指令に応じた駆動電力をアクチュエータ41,42,43,44,45,46に出力する。
【0043】
例えば制御部112は、ロボット10及び周辺機器50の状態とロボット動作プログラムとに基づいて制御周期ごとの先端部16の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ41,42,43,44,45,46の目標角度を上記制御指令として算出する。各制御周期において、制御部112は、ロボット10及び周辺機器50の状態と周辺機器動作プログラムとに基づいて周辺機器50に対する制御指令を算出し、出力する。
【0044】
中断部113は、周辺機器50でイレギュラー状態が発生した場合に、ロボット動作プログラムに基づくロボット10による動作(周辺機器50と連動した一連の複数の単位動作)を中断させる。中断部113は、周辺機器動作プログラムに基づく周辺機器50による動作(ロボット10と連動した動作)を中断させてもよい。
【0045】
イレギュラー状態の具体例としては、ワークの設置不良、工具の設置不良、ワークの不存在、工具の不存在、ワークの品質不良、アクチュエータの過負荷異常、異常発熱、周辺機器50のドアの開閉不良等が挙げられる。なお、周辺機器50で発生するイレギュラー状態は、ワークの把持失敗、工具の把持失敗等、ロボット10の動作失敗に起因して生じるイレギュラー状態を含む。
【0046】
中断部113は、周辺機器50でイレギュラー状態が発生した時より後の上記中断可能ポイントにおいて、ロボット10による複数の単位動作を中断させてもよい。例えば中断部113は、周辺機器50でイレギュラー状態が発生した時の次に訪れる上記中断可能ポイントにおいて、ロボット10による複数の単位動作を中断させてもよい。
【0047】
復帰プログラム取得部114は、イレギュラー状態の発生により動作を中断した時点におけるロボット10の状態情報に少なくとも基づく復帰プログラムを取得する。例えば復帰プログラム取得部114は、イレギュラー状態の発生によりロボット10が動作を中断した時点におけるロボットシステム1の状態情報を制御支援装置200に送信し、ロボットシステム1の状態情報に基づき生成された復帰プログラムを制御支援装置200から取得する。
【0048】
ロボットシステム1の状態情報は、ロボット10の状態情報(以下、「ロボット状態情報」という。)と、周辺機器50の状態情報(以下、「周辺機器状態情報」という。)とを含む。
【0049】
ロボット状態情報は、少なくとも先端部16の位置及び姿勢を示す情報を含む。先端部16の位置及び姿勢を示す情報は、関節31,32,33,34,35,36の角度情報であってもよい。ロボット状態情報は、ロボット10の撮像画像等を更に含んでいてもよい。
【0050】
周辺機器状態情報は、周辺機器50におけるイレギュラー状態を表すイレギュラー状態情報を含む。イレギュラー状態情報の具体例としては、負荷レベル、発熱レベル等を示すレベル情報の他、上述した各種イレギュラー状態の発生を報知する各種アラーム情報等が挙げられる。周辺機器状態情報は、周辺機器50の撮像画像等を更に含んでいてもよい。
【0051】
復帰プログラムは、ロボット用の復帰プログラム(以下、「ロボット復帰プログラム」という。)と、周辺機器50用の復帰プログラム(以下、「周辺復帰プログラム」という。)とを含んでいてもよい。
【0052】
ロボット復帰プログラムは、中断された動作プログラムによる動作が継続可能な状態にするための動作(以下、「復帰動作」という。)をロボット10に実行させるためのプログラムである。復帰動作の具体例としては、ワークの交換、工具の交換、ワークの再設置、工具の再設置等が挙げられる。また、周辺機器50がロボット10と同じ構成のロボット(以下、「他のロボット」という。)である場合、復帰動作は、他のロボットにより実行する予定であった作業を代替することを含んでいてもよい。
【0053】
なお、中断された動作プログラムによる動作を継続可能な状態にすることは、当該動作を中断時点から継続可能な状態にすることの他、当該動作を中断時点より前の時点から継続可能な状態にすることも含む。中断時点より前の時点は、動作プログラムの開始時点であってもよい。継続可能な状態とは、イレギュラー状態が解除され、動作プログラムによる動作を再開可能な状態を意味する。
【0054】
ロボット動作プログラムと同様に、ロボット復帰プログラムは、時系列に並ぶ複数の単位ジョブを含む。ロボット復帰プログラムが含む単位ジョブの数は一つであってもよい。周辺復帰プログラムは、中断された動作プログラムによる動作が継続可能な状態にするための処理(以下、「復帰処理」という。)を周辺機器50に実行させるためのプログラムである。復帰処理の具体例としては、原点復帰等が挙げられる。周辺復帰プログラムは、ロボット10に連動して周辺機器50に復帰処理を実行させるための少なくとも1つの処理命令を含んでいる。
【0055】
復帰プログラム取得部114が復帰プログラムを取得した場合、制御部112は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させる。その後、制御部112は、中断された動作プログラムによる動作をロボット10に再開させる。
【0056】
復帰プログラムが、上記ロボット復帰プログラムと周辺復帰プログラムとを含む場合、制御部112は、ロボット復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させ、周辺復帰プログラムに基づいて、ロボット10に連動して周辺機器50に復帰処理を実行させる。
【0057】
なお、コントローラ100は、イレギュラー状態が発生していない場合においても、ロボットシステム1の状態情報を周期的に制御支援装置200に送信するように構成されていてもよい。
【0058】
(制御支援装置)
制御支援装置200は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを出力することと、を実行するように構成されている。
【0059】
制御支援装置200は、少なくとも1つのコントローラ100と通信し、コントローラ100から収集した情報に基づいてコントローラ100による制御を支援するコンピュータである。制御支援装置200は、複数のコントローラ100と通信し、複数のコントローラ100から収集した情報に基づいて各コントローラ100による制御を支援するように構成されていてもよい。
図3に示すように、制御支援装置200は、機能ブロックとして、単位動作データベース211と、復帰処理データベース212と、復帰手順設定部213と、復帰手順データベース214と、種別特定部215と、復帰手順特定部216と、復帰プログラム出力部217とを含む。
【0060】
単位動作データベース211は、上記ロボット復帰動作を構成するのに利用可能な複数の単位動作を記憶している。単位動作データベース211は、例えば、ワークの把持、把持したワークの搬送、周辺機器50へのワークの取り付け、周辺機器50からのワークの取り外し、周辺機器50への工具の取り付け、周辺機器50からの工具の取り外し、工具の把持、把持した工具の搬送等のように、動作目的を表す概念情報として複数の単位動作を記憶していてもよいし、複数の単位ジョブを複数の単位動作にそれぞれ対応付けて記憶していてもよい。単位動作データベース211が記憶する複数の単位ジョブは、プログラム記憶部111のロボット動作プログラムが含む単位ジョブと共通の単位ジョブを含んでいてもよい。
【0061】
復帰処理データベース212は、上記復帰処理を構成するのに利用可能な複数の単位処理を記憶している。復帰処理データベース212は、例えば、初期化、原点復帰等のように、処理目的を表す概念情報として複数の単位処理を記憶していてもよいし、複数の処理命令を複数の単位処理にそれぞれ対応付けて記憶していてもよい。復帰処理データベース212が記憶する複数の処理命令は、プログラム記憶部111の周辺処理プログラムが含む処理命令と共通の処理命令を含んでいてもよい。
【0062】
復帰手順設定部213は、周辺機器50にて発生し得るイレギュラー状態の種別ごとに、ユーザの入力(例えば入力デバイス226への入力)に基づいて復帰手順を設定する。復帰手順は、イレギュラー状態の発生により中断された動作プログラムによる動作が継続可能な状態にするために、ロボット10に実行させるべき復帰手順(以下、「ロボット復帰手順」という。)と、周辺機器50に実行させるべき復帰手順(以下、「周辺復帰手順」という。)とを含む。ロボット復帰手順は、少なくとも1つの単位動作と、その実行手順とを含む。周辺復帰手順は、少なくとも1つの単位処理と、その実行順序とを含む。
【0063】
復帰手順データベース214は、復帰手順設定部213が設定した復帰手順をイレギュラー状態の種別ごとに記憶している。種別特定部215は、少なくともイレギュラー状態情報に基づいて、イレギュラー状態の種別を特定する。ここでの種別は、復帰手順を導出し得るレベルでイレギュラー状態の要因を示す情報である。一例として、種別特定部215は、イレギュラー状態情報に基づいて、イレギュラー状態が復帰手順データベース214におけるいずれの種別に該当するのかを特定する。
【0064】
復帰手順特定部216(単位動作特定部)は、種別特定部215により特定されたイレギュラー状態の種別に基づいて、既定されたロボット10の動作を表す1又は2以上の単位動作を特定する。例えば復帰手順特定部216は、種別特定部215により特定されたイレギュラー状態の種別と復帰手順データベース214とに基づいて復帰手順を特定する。より具体的に、復帰手順特定部216は、復帰手順データベース214において、イレギュラー状態の種別に対応付けられた復帰手順を特定する。これにより、ロボット復帰手順が含む少なくとも1つの単位動作が特定され、周辺復帰手順が含む少なくとも1つの単位処理が復帰処理として特定される。
【0065】
このように、イレギュラー状態の種別に対応する単位動作及び復帰処理が特定されるので、種別特定部215がイレギュラー状態の種別を特定することは、本実施形態において単位動作及び復帰処理を特定することに相当する。すなわち種別特定部215は、イレギュラー状態情報に基づいて、イレギュラー状態の種別に加えて、ロボット10による1又は2以上の単位動作を特定し、周辺機器50における復帰処理を特定する。
【0066】
復帰プログラム出力部217は、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムをコントローラ100に出力する。例えば復帰プログラム出力部217は、復帰手順特定部216が特定した復帰手順と、コントローラ100から取得したロボットシステム1の状態情報とをシミュレータ300に送信し、復帰手順及びロボットシステム1の状態情報に基づき生成された復帰プログラムをシミュレータ300から取得し、取得した復帰プログラムをコントローラ100に出力する。
【0067】
(シミュレータ)
シミュレータ300(復帰プログラム生成部)は、周辺機器50でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器50と連動した一連の複数の動作を中断したロボット10のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを生成することと、を実行するように構成されている。
【0068】
シミュレータ300は、少なくともロボット状態情報に基づいて、ロボット10と周辺機器50のシミュレーションを用いて、復帰プログラムを生成してもよい。シミュレータ300は、上記イレギュラー状態情報と、ロボット状態情報とに少なくとも基づいて、シミュレーション上にロボット10と周辺機器50との状態を再現して、復帰プログラムを生成してもよい。シミュレータ300は、少なくとも上記イレギュラー状態の種別とロボット状態情報とに基づいて、シミュレーションを用いて復帰プログラムを生成してもよい。
【0069】
シミュレータ300は、ロボット10及び周辺機器50のシミュレーションモデルに基づいてコントローラ100による制御のシミュレーションを行うセルシミュレータである。シミュレータ300は、少なくとも1つの制御支援装置200と通信し、制御支援装置200が収集した情報に基づいて少なくとも1つのコントローラ100による制御のシミュレーションを行う。シミュレータ300は、複数の制御支援装置200と通信し、各制御支援装置200が収集した情報に基づいて複数のコントローラ100による制御のシミュレーションを行うように構成されていてもよい。
【0070】
図4に示すように、シミュレータ300は、機能ブロックとして、シミュレーションモデル記憶部311と、エアカット生成部312と、プログラム化部313と、干渉チェック部314と、復帰プログラム出力部315とを有する。
【0071】
シミュレーションモデル記憶部311は、ロボット10のモデルデータと、周辺機器50のモデルデータと、ワーク及び工具等のモデルデータとを記憶する。ロボット10のモデルデータは、ロボット10の配置、構造及び各部寸法を含む。周辺機器50のモデルデータは、周辺機器50の配置、構造及び各部寸法等を含む。ワーク及び工具等のモデルデータは構造及び各部寸法を含む。
【0072】
エアカット生成部312は、制御支援装置200から取得した復帰手順が含む少なくとも1つの単位動作と、ロボット状態情報とに基づいて、シミュレーションを用いて、単位動作の前及び後の少なくとも一方でロボット10が動作すべきエアカット動作を生成する。
【0073】
エアカット生成部312は、シミュレーションを用いて、ロボット10が周辺機器50を含む他の物体に衝突しないように、エアカット動作を生成してもよい。例えばエアカット生成部312は、ロボットシステム1の状態情報と、シミュレーションモデル記憶部311が記憶するモデルデータとに基づいて、ロボット10と周辺機器50との状態のモデルをバーチャル空間に再現し、当該モデルに基づいて先端部16の現在位置及び姿勢から最初の単位動作の始点(最初の動作命令の目標位置及び目標姿勢)までのエアカット動作を生成する。
【0074】
また、エアカット生成部312は、復帰手順が複数の単位動作を含む場合に、単位動作間のエアカット動作を生成する。例えばエアカット生成部312は、先行する単位動作の終点(最後の動作命令の目標位置及び目標姿勢)と、後続する単位動作の始点(最初の動作命令の目標位置及び目標姿勢)までのエアカット動作を生成する。エアカット動作の一例として、エアカット生成部312は、時系列に並ぶ複数の動作命令を含むエアカットジョブを生成する。各動作命令は、先端部16の目標位置及び目標姿勢と、目標位置及び目標姿勢への移動速度と、現在位置及び現在姿勢から目標位置及び目標姿勢までの補間方式とを含む。
【0075】
一例として、エアカット生成部312は、エアカット動作の区間において、他の物体との衝突を回避可能な経由点を生成し、当該経由点を通るようにエアカットジョブを修正することを、エアカットジョブ全体にわたって衝突回避が可能となるまで繰り返す。なお、エアカットジョブの生成手法は、例えば特許第4103057号等にも詳細に開示されている。
【0076】
プログラム化部313は、復帰手順が含む少なくとも1つの単位動作と、エアカット生成部312が生成したエアカット動作とに基づいて、ロボット復帰プログラムを生成する。例えばプログラム化部313は、復帰手順が含む少なくとも1つの単位動作に対応する少なくとも1つの単位ジョブと、エアカット生成部312が生成したエアカットジョブとをつないでロボット復帰プログラムを生成する。また、プログラム化部313は、復帰手順が含む復帰処理に基づいて、上記周辺復帰プログラムを生成する。
【0077】
干渉チェック部314は、プログラム化部313が生成したロボット復帰プログラムに基づいて、ロボット10が他の物体に衝突するか否かをシミュレーション上で確認する。例えば干渉チェック部314は、ロボット復帰プログラムに基づくロボット10の姿勢の推移を、シミュレーションモデル記憶部311が記憶するモデルデータに基づく逆運動学演算及び順運動学演算により算出し、各姿勢における衝突の有無を確認する。
【0078】
復帰プログラム出力部315は、プログラム化部313が生成し干渉チェック部314が干渉しないと確認したロボット復帰プログラムと、プログラム化部313が生成した周辺復帰プログラムとを組み合わせた復帰プログラムを制御支援装置200に出力する。復帰プログラム出力部315は、復帰プログラムのみを制御支援装置200に出力してもよいし、復帰プログラムの後に再開する動作プログラムを復帰プログラムにつなげたプログラムを制御支援装置200に出力してもよい。
【0079】
制御支援装置200は、復帰プログラム出力部315から取得した復帰プログラムをコントローラ100に出力する。これに応じ、コントローラ100の制御部112が、ロボット復帰プログラムに基づいてロボット10を周辺機器50に対して動作させ、周辺復帰プログラムに基づいてロボット10に連動して周辺機器50に復帰処理を実行させる。その後コントローラ100は、動作プログラムに基づくロボット10及び周辺機器50の動作を再開させる。
【0080】
図5は、動作プログラムに基づくロボット10の動作及び周辺機器50の処理を例示するシーケンス図である。ロボット10の動作は、単位動作R01,R02,R03,R04,R05を含んでいる。左側の周辺機器50の処理は、単位処理M11,M12,M13を含んでおり、単位処理M12は単位動作R04に連動して実行される。右側の周辺機器50の処理は、単位処理M21,M22,M23,M24を含んでおり、単位処理M22は単位動作R02に連動して実行される。単位動作R04の直後の点P1は、上記中断可能ポイントを表している。
【0081】
図5の単位処理M23の途中(点P2参照)にて、イレギュラー状態が生じた場合における制御システム2の作用を例示する。点P2にてイレギュラー状態が発生すると、コントローラ100は、点P2より後の中断可能ポイントである点P1までロボット10の動作を継続し、ロボット10の動作を中断させる。
【0082】
その後、制御支援装置200及びシミュレータ300によって、復帰プログラムが生成され、コントローラ100に出力される。これに応じ、
図6に示すように、コントローラ100は、ロボット復帰プログラムに基づく復帰動作R11をロボットに実行させる。これに連動し、コントローラ100は、周辺復帰プログラムに基づいて、復帰処理M31を周辺機器50に実行させる。
【0083】
その後、コントローラ100は、単位動作R05からロボット10の動作を再開させ、単位処理M13から左側の周辺機器50の処理を再開させ、イレギュラー状態が発生した単位処理M23から右側の周辺機器50の処理を再開させる。
【0084】
なお、シミュレータ300は、復帰手順が含む単位動作が上記概念情報である場合に、当該単位動作に対応する単位ジョブの生成も実行するように構成されていてもよい。また、シミュレータ300は、生成した復帰プログラムを、復帰手順とロボットシステム1の状態情報とに対応付けて蓄積するように構成されていてもよい。この場合、復帰手順とロボットシステム1の状態情報とが一致する場合に過去の復帰プログラムを使いまわすことが可能となる。
【0085】
(制御システムのハードウェア構成)
図7は、制御システムのハードウェア構成を例示するブロック図である。
図7に示すように、コントローラ100は、回路120を含む。回路120は、少なくとも一つのプロセッサ121と、メモリ122と、ストレージ123と、通信ポート124と、ドライバ125と、入出力ポート126と、ドライバ127とを含む。ストレージ123は、コンピュータによって読み取り可能な不揮発型の記憶媒体(例えばフラッシュメモリ)である。ストレージ123は、プログラムに基づいて少なくともロボット10を制御することと、周辺機器50でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット10のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させることと、をコントローラ100に実行させるためのプログラムを記憶している。例えばストレージ123は、コントローラ100のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【0086】
メモリ122は、ストレージ123からロードしたプログラム及びプロセッサ121による演算結果等を一時的に記憶する。プロセッサ121は、メモリ122と協働して上記プログラムを実行することで、コントローラ100の各機能ブロックを構成する。通信ポート124は、プロセッサ121からの指令に応じ、制御支援装置200との間でネットワーク通信を行う。例えば通信ポート124は、上記復帰プログラム取得部114による復帰プログラムの取得に用いられる。ドライバ125は、プロセッサ121からの指令に従って、ロボット10のアクチュエータ41,42,43,44,45,46を駆動する。入出力ポート126は、プロセッサ121からの指令に応じて周辺機器50との間で電気信号の入出力を行う。ドライバ127は、プロセッサ121からの指令に従って、周辺機器50のアクチュエータを駆動する。
【0087】
制御支援装置200は、回路220を含む。回路220は、少なくとも一つのプロセッサ221と、メモリ222と、ストレージ223と、通信ポート224と、ネットワークアダプタ225と、入力デバイス226と、表示デバイス227とを含む。ストレージ223は、コンピュータによって読み取り可能な不揮発型の記憶媒体(例えばフラッシュメモリ)である。ストレージ223は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを出力することと、を制御支援装置200に実行させるためのプログラムを記憶している。例えばストレージ223は、制御支援装置200のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【0088】
メモリ222は、ストレージ223からロードしたプログラム及びプロセッサ221による演算結果等を一時的に記憶する。プロセッサ221は、メモリ222と協働して上記プログラムを実行することで、制御支援装置200の各機能ブロックを構成する。通信ポート224は、プロセッサ221からの指令に応じ、コントローラ100との間でネットワーク通信を行う。例えば通信ポート224は、上記復帰プログラム出力部217による復帰プログラムの出力に用いられる。ネットワークアダプタ225は、プロセッサ221からの指令に応じて、シミュレータ300との間で通信ネットワークNWを介した通信を行う。入力デバイス226は、例えば液晶モニタ等である。表示デバイス227は、例えばキーボード等である。入力デバイス226及び表示デバイス227は、所謂タッチパネルのように一体化されていてもよい。入力デバイス226及び表示デバイス227は、例えば上記復帰手順設定部213による復帰手順の設定に用いられる。
【0089】
シミュレータ300は、回路320を含む。回路320は、少なくとも一つのプロセッサ321と、メモリ322と、ストレージ323と、ネットワークアダプタ324とを含む。ストレージ323は、コンピュータによって読み取り可能な不揮発型の記憶媒体(例えばハードディスクドライブ又はフラッシュメモリ)である。ストレージ323は、周辺機器50でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器50と連動した一連の複数の動作を中断したロボット10のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを生成することと、をシミュレータ300に実行させるためのプログラムを記憶している。例えばストレージ323は、シミュレータ300のハードウェアとの協働により上述の各機能ブロックを構成するためのプログラムを記憶している。
【0090】
メモリ322は、ストレージ323からロードしたプログラム及びプロセッサ321による演算結果等を一時的に記憶する。プロセッサ321は、メモリ322と協働して上記プログラムを実行することで、シミュレータ300の各機能ブロックを構成する。ネットワークアダプタ324は、プロセッサ321からの指令に応じて、制御支援装置200との間で通信ネットワークNWを介した通信を行う。
【0091】
なお、以上のハードウェア構成はあくまで一例であり、適宜変更可能である。例えばシミュレータ300は必ずしもクラウド側に配置されていなくてもよく、コントローラ100及び制御支援装置200と共にエッジ側に配置されていてもよい。制御支援装置200がコントローラ100に組み込まれていてもよいし、制御支援装置200及びシミュレータ300がコントローラ100に組み込まれていてもよい。また、コントローラ100、制御支援装置200及びシミュレータ300は、必ずしもプログラムにより各機能を構成するものに限られない。例えばコントローラ100、制御支援装置200及びシミュレータ300は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。
【0092】
〔制御方法〕
続いて、制御方法の一例として、ロボットシステム1の制御手順を例示する。この制御手順は、コントローラ100によるロボット10及び周辺機器50の制御手順と、制御支援装置200による復帰プログラムの生成支援手順と、シミュレータ300による復帰プログラムの生成手順と、制御支援装置200による復帰手順の設定手順とを含む。以下、各手順を詳細に例示する。
【0093】
(制御手順)
コントローラ100によるロボット10及び周辺機器50の制御手順は、プログラムに基づいて少なくともロボット10を制御することと、周辺機器50でイレギュラー状態が発生した場合に、上記一連の複数の動作を中断させることと、イレギュラー状態の発生により動作を中断した時点におけるロボット10のロボット状態情報に少なくとも基づく復帰プログラムを取得することと、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させることと、を含む。
【0094】
図8に示すように、コントローラ100は、まずステップS01,S02,S03を実行する。ステップS01では、制御部112が、ロボット10及び周辺機器50の状態とロボット動作プログラムとに基づいて先端部16の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ41,42,43,44,45,46の目標角度を上記制御指令として算出する。また、制御部112は、ロボット10及び周辺機器50の状態と周辺機器動作プログラムとに基づいて周辺機器50に対する制御指令を算出する。
【0095】
ステップS02では、制御部112が、ステップS01で算出した制御指令に応じた駆動電力をアクチュエータ41,42,43,44,45,46に出力し、ステップS01で算出した制御指令を周辺機器50に出力する。ステップS03では、イレギュラー状態の発生がないかを中断部113が確認する。例えば中断部113は、周辺機器50から取得した状態情報に基づいてイレギュラー状態の発生がないかを確認する。
【0096】
ステップS03においてイレギュラー状態の発生がないと判定した場合、コントローラ100はステップS04を実行する。ステップS04では、動作プログラムの実行が完了したか否かを制御部112が確認する。
【0097】
ステップS04において動作プログラムの実行が完了していないと判定した場合、コントローラ100はステップS05を実行する。ステップS05では、制御部112が、制御周期の経過を待って処理を次周期の制御に移行させる。その後、コントローラ100は処理をステップS01に戻す。以後、動作プログラムの実行が完了するまでは、イレギュラー状態の発生を確認しながらロボット10及び周辺機器50の制御が継続される。
【0098】
ステップS03においてイレギュラー状態が発生していると判定した場合、コントローラ100はステップS11にて中断処理を実行する。その後コントローラ100は、ステップS12にて復帰処理を実行した後に、ステップS04を再開させる。中断処理及び復帰処理の具体的内容については後述する。
【0099】
ステップS04において動作プログラムの実行が完了したと判定した場合、コントローラ100はロボット10及び周辺機器50の制御を完了する。
【0100】
図9は、ステップS11における中断処理の手順を例示するフローチャートである。
図9に示すように、コントローラ100は、まずステップS21,S22を実行する。ステップS21では、中断部113が、周辺機器50でイレギュラー状態が発生した時の次に訪れる上記中断可能ポイントを、ロボット10による動作の中断ポイントとする。ステップS22では、ロボット10による動作が中断ポイントに到達したかを中断部113が確認する。
【0101】
ステップS22においてロボット10による動作が中断ポイントに到達していないと判定した場合、コントローラ100はステップS23,S24,S25を実行する。ステップS23では、制御部112が、制御周期の経過を待って処理を次周期の制御に移行させる。ステップS24では、ステップS01と同様に、制御部112が、ロボット10及び周辺機器50の制御指令を算出する。ステップS25では、ステップS02と同様に、制御部112が、ステップS24で算出した制御指令に応じた駆動電力をアクチュエータ41,42,43,44,45,46に出力し、ステップS24で算出した制御指令を周辺機器50に出力する。その後、コントローラ100は処理をステップS22に戻す。
【0102】
ステップS22においてロボット10による動作が中断ポイントに到達したと判定した場合、中断部113が、制御部112によるロボット10及び周辺機器50の制御を中断させる。以上で中断処理が完了する。
【0103】
図10は、ステップS12における復帰処理の手順を例示するフローチャートである。
図10に示すように、コントローラ100は、まずステップS31,S32,S33,S34,S35,S36を実行する。ステップS31では、復帰プログラム取得部114が、イレギュラー状態の発生によるロボット10及び周辺機器50の動作の中断を制御支援装置200に通知する。ステップS32では、復帰プログラム取得部114が、イレギュラー状態の発生によりロボット10が動作を中断した時点におけるロボットシステム1の状態情報を制御支援装置200に送信する。ステップS33では、復帰プログラム取得部114が、ロボットシステム1の状態情報に基づき生成された復帰プログラムを制御支援装置200から取得するのを待機する。
【0104】
ステップS34では、制御部112が、ロボット10及び周辺機器50の状態とロボット復帰プログラムとに基づいて先端部16の目標位置及び目標姿勢を算出し、当該目標位置及び目標姿勢に基づく逆運動学演算によりアクチュエータ41,42,43,44,45,46の目標角度を上記制御指令として算出する。また、制御部112は、ロボット10及び周辺機器50の状態と周辺機器動作プログラムとに基づいて周辺機器50に対する制御指令を算出する。ステップS35では、制御部112が、ステップS34で算出した制御指令に応じた駆動電力をアクチュエータ41,42,43,44,45,46に出力し、ステップS34で算出した制御指令を周辺機器50に出力する。ステップS36では、復帰プログラムの実行が完了したか否かを制御部112が確認する。
【0105】
ステップS36において復帰プログラムの実行が完了していないと判定した場合、コントローラ100はステップS37を実行する。ステップS37では、制御部112が、制御周期の経過を待って次周期の制御に移行させる。その後、コントローラ100は処理をステップS31に戻す。以後、復帰プログラムの実行が完了するまでは、復帰プログラムに基づくロボット10及び周辺機器50の制御が継続される。
【0106】
ステップS36において復帰プログラムの実行が完了したと判定した場合、コントローラ100は復帰プログラムに基づくロボット10及び周辺機器50の制御を完了する。以上で復帰処理が完了する。
【0107】
(復帰プログラムの生成支援手順)
制御支援装置200による復帰プログラムの生成支援手順は、上記ロボット状態情報と、上記イレギュラー状態情報とを少なくとも取得することと、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定することと、イレギュラー状態の種別とロボット状態情報とに少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを出力することと、を含む。
【0108】
図11に示すように、制御支援装置200は、ステップS41,S42,S43,S44,S45,S46,S47を実行する。ステップS41では、復帰プログラム出力部217が、ロボット10及び周辺機器50の動作の中断の通知を待機する。ステップS42では、復帰プログラム出力部217が、イレギュラー状態の発生によりロボット10が動作を中断した時点におけるロボットシステム1の状態情報の受信を待機する。
【0109】
ステップS43では、種別特定部215が、少なくともイレギュラー状態情報に基づいて、イレギュラー状態の種別を特定する。ステップS44では、復帰手順特定部216が、種別特定部215により特定されたイレギュラー状態の種別と復帰手順データベース214とに基づいて復帰手順を特定する。
【0110】
ステップS45では、復帰手順特定部216が特定した復帰手順と、コントローラ100から取得したロボットシステム1の状態情報とを、復帰プログラム出力部217がシミュレータ300に送信する。ステップS46では、復帰プログラム出力部217が、復帰手順及びロボットシステム1の状態情報に基づき生成された復帰プログラムをシミュレータ300から取得するのを待機する。ステップS47では、復帰プログラム出力部217が、シミュレータ300から取得した復帰プログラムをコントローラ100に出力する。以上で復帰プログラムの生成支援手順が完了する。
【0111】
(復帰プログラムの生成手順)
シミュレータ300による復帰プログラムの生成手順は、周辺機器50でイレギュラー状態が発生した場合に、動作プログラムに基づく周辺機器50と連動した一連の複数の動作を中断したロボット10のロボット状態情報を少なくとも取得することと、ロボット状態情報に少なくとも基づいて、中断された動作プログラムによる動作を継続可能な状態とするためのロボット10の復帰プログラムを生成することと、を含む。
【0112】
図12に示すように、シミュレータ300は、まずステップS51,S52,S53,S54,S55を実行する。ステップS51では、復帰手順特定部216が特定した復帰手順と、コントローラ100から取得したロボットシステム1の状態情報との制御支援装置200からの受信を、エアカット生成部312が待機する。ステップS52では、エアカット生成部312が、ロボットシステム1の状態情報と、シミュレーションモデル記憶部311が記憶するモデルデータとに基づいて、ロボット10と周辺機器50との状態をバーチャル空間に再現する。以下、エアカット生成部312がバーチャル空間に再現した状態を「再現モデル」という。
【0113】
ステップS53では、エアカット生成部312が、再現モデルに基づいて、上記エアカット動作を生成する。ステップS54では、復帰手順が含む少なくとも1つの単位動作と、エアカット生成部312が生成したエアカット動作とに基づいて、プログラム化部313がロボット復帰プログラムを生成する。また、プログラム化部313は、復帰手順が含む復帰処理に基づいて、上記周辺復帰プログラムを生成する。ステップS55では、プログラム化部313が生成したロボット復帰プログラムに基づいて、ロボット10が他の物体に衝突しないかを、干渉チェック部314がシミュレーション上で確認する。
【0114】
ステップS55においてロボット10が他の物体に衝突すると判定した場合、シミュレータ300は処理をステップS53に戻し、エアカット動作の生成を実行しなおす。
【0115】
ステップS55においてロボット10が他の物体に衝突しないと判定した場合、シミュレータ300はステップS56を実行する。ステップS56では、プログラム化部313が生成し干渉チェック部314が干渉しないと確認したロボット復帰プログラムと、プログラム化部313が生成した周辺復帰プログラムとを組み合わせた復帰プログラムを、復帰プログラム出力部315が制御支援装置200に出力する。以上で復帰プログラムの生成処理が完了する。
【0116】
(復帰手順の設定手順)
制御支援装置200による復帰手順の設定手順は、イレギュラー状態の種別ごとに、ロボット10の単位動作の選択入力と、周辺機器50の単位処理の選択入力とを取得することと、選択入力で選択された単位動作及び復帰処理に基づいて復帰手順を設定することとを含む。
【0117】
図13に示すように、制御支援装置200は、ステップS61,S62,S63,S64,S65,S66を実行する。ステップS61では、復帰手順の設定開始の要求が入力される(例えば入力デバイス226に入力される)のを、復帰手順設定部213が待機する。ステップS62では、単位動作データベース211が記憶する複数の単位動作のリストを復帰手順設定部213が生成する。ステップS63では、復帰処理データベース212が記憶する複数の単位処理のリストを復帰手順設定部213が生成する。
【0118】
ステップS64では、復帰手順設定部213が、復帰手順の入力画面を表示(例えば表示デバイス227に表示)する。入力画面は、ステップS61,S62で生成されたリストの表示部と、復帰手順の設定対象となるイレギュラー状態の種別を指定する入力部と、実行順序を定めながら単位動作及び単位処理を選択する入力部とを含む。
【0119】
ステップS65では、復帰手順設定部213が、入力画面への入力内容の登録要求を待機する。ステップS66では、復帰手順設定部213が、入力画面への入力内容に基づいて復帰手順を設定し、これを入力画面の上記種別に対応付けて復帰手順データベース214に記憶させる。以上で復帰手順の設定手順が完了する。
【0120】
〔本実施形態の効果〕
以上に説明したように、ロボットシステム1は、ロボット10と、ロボット10の周辺に配置された周辺機器50と、プログラムに基づいて、少なくともロボット10を動作させる制御部112と、周辺機器50でイレギュラー状態が発生した場合に、動作プログラムに基づくロボット10による周辺機器50と連動した一連の複数の動作を中断させる中断部113と、イレギュラー状態の発生により動作を中断した時点におけるロボット10のロボット状態情報に少なくとも基づいて、復帰プログラムを生成するシミュレータ300と、を備え、制御部112は、復帰プログラムに基づいて、中断された動作プログラムによる動作が継続可能な状態になるように、ロボット10を周辺機器50に対して動作させる。
【0121】
このロボットシステム1によれば、イレギュラー状態の発生によりロボット10の動作が中断した場合に、復帰プログラムに基づいて中断した動作を自動的に再開することができる。また、ロボット状態情報に基づく復帰プログラムの自動生成も行われるので、予め多くの復帰プログラムを用意しておかなくても、様々なイレギュラー状態からの自動復帰が可能となる。従って、イレギュラー状態からの迅速な復帰に有効である。
【0122】
本実施形態が例示するように、シミュレータ300は、少なくともロボット状態情報に基づいて、ロボット10と周辺機器50のシミュレーションを用いて、復帰プログラムを生成してもよい。この場合、シミュレーションにより柔軟で信頼性の高い復帰プログラムを生成できる。
【0123】
本実施形態が例示するように、シミュレータ300は、少なくとも周辺機器50のイレギュラー状態を表すイレギュラー状態情報と、ロボット状態情報とに少なくとも基づいて、シミュレーション上にロボット10と周辺機器50との状態を再現して、復帰プログラムを生成してもよい。この場合、更に信頼性の高い復帰プログラムを生成できる。
【0124】
本実施形態にて例示したように、ロボットシステム1は、少なくともイレギュラー状態情報に基づいて、当該イレギュラー状態の種別を特定する種別特定部215を更に有し、シミュレータ300は、少なくともイレギュラー状態の種別とロボット状態情報とに基づいて、シミュレーションを用いて復帰プログラムを生成してもよい。イレギュラー状態の種別を特定するためのロジックは、ロボット10の動作プログラミングのスキルがなくても設定可能である。そこで、シミュレータ300と種別特定部215とを切り分けることで、種別特定部215による特定に使用するデータベースやロジックの構築をユーザに委ねることが可能となり、ロボットシステム1の立ち上げが容易になる。
【0125】
本実施形態が例示するように、種別特定部215は、イレギュラー状態情報に基づいて、イレギュラー状態の種別に加えて、周辺機器50における復帰処理を特定し、周辺機器50は、復帰処理を実行してもよい。この場合、周辺機器50の動作も自動的に再開することができる。従って、イレギュラー状態からの迅速な復帰に更に有効である。
【0126】
本実施形態が例示するように、ロボットシステム1は、イレギュラー状態の種別に基づいて、既定されたロボット10の動作を表す1又は2以上の単位動作を特定する復帰手順特定部216を更に備え、シミュレータ300は、少なくとも単位動作とロボット状態情報とに基づいて、シミュレーションを用いて、単位動作の前及び後の少なくとも一方でロボット10が動作すべきエアカット動作を生成するエアカット生成部312と、単位動作とエアカット動作とに基づいて、復帰プログラムを生成するプログラム化部313と、を有していてもよい。この場合、精度が求められるところは単位動作として既定しておき、その間をエアカット動作で繋ぐことで、高い精度が求められる復帰プログラムも、より少ないリソースで生成できる。
【0127】
本実施形態が例示するように、エアカット生成部312は、シミュレーションを用いて、ロボット10が周辺機器50を含む他の物体に衝突しないように、エアカット動作を生成してもよい。この場合、より信頼性の高い復帰プログラムを生成することができる。
【0128】
本実施形態が例示するように、シミュレータ300は、プログラム化部313が生成した復帰プログラムに基づいて、ロボット10が周辺機器50を含む他の物体に衝突するか否かをシミュレーション上で確認する干渉チェック部314を更に有し、制御部112は、干渉チェック部314が干渉しないと確認した復帰プログラムに基づいて、ロボット10を動作させてもよい。この場合、復帰プログラムの信頼性が更に向上する。
【0129】
本実施形態が例示するように、動作プログラムは、ロボット10の複数の動作の1又は2以上の間に、中断可能ポイントを有しており、中断部113は、周辺機器50でイレギュラー状態が発生した時より後に設定された中断可能ポイントにおいて、ロボット10による複数の動作を中断させてもよい。この場合、動作を中断する時点のロボット10の状態を、予め定められた中断ポイントに制限することで、ロボット10の動作の中断がロボットシステム1のアウトプット(ワークの生産等)に及ぼす影響を抑えることができる。また、動作を中断する時点のロボット10の状態を制限することは、復帰プログラムの生成の容易化にも有効である。
【0130】
本実施形態が例示するように、少なくともシミュレータ300は、ロボット10と周辺機器50とが配置されるエッジ側に配置される制御部112に対して、プライベートネットワーク又はインターネットを介して通信してもよい。この場合、シミュレータ300をネットワーク上に配置することで、シミュレータ300を、複数の制御部112で共用し易くなる。
【0131】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【0132】
1…ロボットシステム、10…ロボット、50…周辺機器、112…制御部、113…中断部、114…復帰プログラム取得部、200…制御支援装置、215…種別特定部、216…復帰手順特定部(単位動作特定部)、217…復帰プログラム出力部、300…シミュレータ(復帰プログラム生成部)、312…エアカット生成部、313…プログラム化部、314…干渉チェック部、M31…復帰処理、R01,R02,R03,R04,R05…単位動作。