(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-09
(45)【発行日】2024-10-18
(54)【発明の名称】制御システム、ロボットシステム及び制御方法
(51)【国際特許分類】
B25J 19/06 20060101AFI20241010BHJP
B25J 19/00 20060101ALI20241010BHJP
【FI】
B25J19/06
B25J19/00 Z
(21)【出願番号】P 2021097363
(22)【出願日】2021-06-10
(62)【分割の表示】P 2020174853の分割
【原出願日】2020-10-16
【審査請求日】2023-10-16
(32)【優先日】2020-07-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(72)【発明者】
【氏名】橋口 幸男
(72)【発明者】
【氏名】斧山 佳史
【審査官】尾形 元
(56)【参考文献】
【文献】特許第6658985(JP,B1)
【文献】特開2012-181574(JP,A)
【文献】特開2005-103681(JP,A)
【文献】特開2015-024477(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
バーチャル空間において
、1以上のロボットにそれぞれ対応する1以上のバーチャルロボット
を動作プログラムに基づいて動作させるバーチャルコントローラと、
リアル空間において前記1以上のロボットを前記動作プログラムに基づいて動作させるコントローラが、前記1以上のロボットの動作を中断させた場合に、前記1以上のロボットの動作が中断した前記リアル空間の中断状態を、前記バーチャル空間に再現させる中断状態再現部と、
前記中断状態再現部が前記リアル空間の状態を再現させた前記バーチャル空間において、前記バーチャルコントローラにより前記動作プログラムに基づいて前記1以上のバーチャルロボットの動作を再開させる再開シミュレータと、を備える
シミュレーション装置。
【請求項2】
前記リアル空間の状態を表すリアル環境情報を格納する環境情報格納部と、
前記1以上のロボットの動作に応じて前記環境情報格納部に格納された前記リアル環境情報を更新する環境更新部と、を更に備え、
前記中断状態再現部は、前記環境情報格納部に格納された前記リアル環境情報に基づいて、前記中断状態を前記バーチャル空間に再現させる、請求項1記載の
シミュレーション装置。
【請求項3】
前記中断状態が再現された前記バーチャル空間における前記1以上のバーチャルロボットの動作を、予め定められた評価条件に基づいて評価する再開評価部を更に備える、請求項1又は2記載の
シミュレーション装置。
【請求項4】
前記中断状態が再現された前記バーチャル空間における前記1以上のバーチャルロボットの動作の動画を表示させる再開動画再生部を更に備える、請求項3記載の
シミュレーション装置。
【請求項5】
前記1以上のロボットは複数のロボットを含み、
前記1以上のバーチャルロボットは前記複数のロボットにそれぞれ対応する複数のバーチャルロボットを含み
、
前記再開評価部は、動作不可である1以上のロボットに対応する1以上の動作不可のバーチャルロボットが前記バーチャル空間で停止し、動作可である1以上のロボットに対応する1以上の動作可のバーチャルロボットが前記バーチャル空間で動作する場合における、前記1以上の動作不可のバーチャルロボットと、前記1以上の動作可のバーチャルロボットとの衝突の有無を評価する、請求項3又は4記載の
シミュレーション装置。
【請求項6】
前記再開評価部による評価結果に基づいて、前記動作プログラムに基づく前記1以上のロボットの動作の少なくとも一部を前記コントローラに再開させる動作再開部を更に備える、請求項3~5のいずれか一項記載の
シミュレーション装置。
【請求項7】
前記再開評価部による評価結果の表示部と、再開指示入力部とを含む再開指示画面を表示させる再開指示取得部を更に備え、
前記動作再開部は、前記再開指示画面における前記再開指示入力部への操作に基づいて、前記動作プログラムに基づく前記1以上のロボットの動作を前記コントローラに再開させる、請求項6記載の
シミュレーション装置。
【請求項8】
前記動作プログラムは時系列の複数の動作指令を含み、
前記動作プログラムに基づく前記1以上のロボットの動作の少なくとも一部を再開させることは、
動作の中断時点以降の動作指令に基づいて前記1以上のロボットの少なくとも一部を動作させる第1モードの再開と、
動作の中断時点より前の動作指令に基づいて前記1以上のロボットの少なくとも一部を動作させる第2モードの再開とを含み、
前記再開評価部は、前記複数の再開モードごとに前記1以上のバーチャルロボットの動作を評価し、
前記再開指示取得部は、前記再開評価部による前記複数の再開モードごとの評価結果の表示部と、前記複数の再開モードのいずれかを選択可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、前記再開指示入力部において選択された再開モードにて、前記動作プログラムに基づく前記1以上のロボットの動作を前記コントローラに再開させる、請求項7記載の
シミュレーション装置。
【請求項9】
前記動作プログラムは時系列の複数の動作指令を含み、
前記動作プログラムに基づく前記1以上のロボットの動作の少なくとも一部を再開させることは、
動作の中断時点以降の動作指令に基づいて前記1以上のロボットの少なくとも一部を動作させる第1モードの再開と、
動作の中断時点より前の動作指令に基づいて前記1以上のロボットの少なくとも一部を動作させる第2モードの再開とを含み、
前記
シミュレーション装置は、前記第1モード及び前記第2モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開評価部は、前記シミュレーション条件指定画面において選択された再開モードにて、前記1以上のバーチャルロボットの動作を評価する、請求項3~7のいずれか一項記載の
シミュレーション装置。
【請求項10】
前記動作プログラムは時系列の複数の動作指令を含み、
前記再開評価部は、動作の中断時点以降の動作指令に基づく前記1以上のバーチャルロボットの動作を評価する、請求項7記載の
シミュレーション装置。
【請求項11】
前記動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開評価部は、指定された前記シミュレーション開始時点以降の動作指令に基づく前記1以上のバーチャルロボットの動作を評価する、請求項10記載の
シミュレーション装置。
【請求項12】
前記動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開評価部は、指定された前記シミュレーション終了時点以前の動作指令に基づく前記1以上のバーチャルロボットの動作を評価する、請求項10記載の
シミュレーション装置。
【請求項13】
前記再開評価部は、前記1以上のバーチャルロボットの動作に基づいて、前記動作プログラムに基づく前記1以上のロボットの動作を再開した後における動作可能期間を前記1以上のロボットごとに算出し、
前記再開指示取得部は、前記1以上のロボットごとの動作可能期間の表示部と、再開時点を指定可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、指定された前記再開時点以降の動作指令に基づいて、前記コントローラにより前記1以上のロボットの動作の少なくとも一部を再開させる、請求項10~12のいずれか一項記載の
シミュレーション装置。
【請求項14】
前記再開評価部は、前記1以上のバーチャルロボットの動作に基づいて、前記動作プログラムに基づく前記1以上のロボットの動作を再開した後における動作可能期間を前記1以上のロボットごとに算出し、
前記再開指示取得部は、前記1以上のロボットごとの動作可能期間の表示部と、終了時点を指定可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、指定された前記終了時点以前の動作指令に基づいて、前記コントローラにより前記1以上のロボットの動作の少なくとも一部を再開させる、請求項10~13のいずれか一項記載の
シミュレーション装置。
【請求項15】
前記1以上のロボットの他の機械を制御する第2コントローラが、前記1以上のロボットの動作の中断後に前記他の機械をどのように動作させるかを示す周辺挙動情報を記憶する周辺情報記憶部を更に備え、
前記再開評価部は、前記周辺挙動情報に更に基づいて、前記1以上のバーチャルロボットの動作を評価する、請求項3~14のいずれか一項記載の
シミュレーション装置。
【請求項16】
前記リアル空間の状態を検出する環境センサを更に備え、
前記中断状態再現部は、前記環境センサによる検出結果に基づいて、前記中断状態を前記バーチャル空間に再現させる、請求項1~15のいずれか一項記載の
シミュレーション装置。
【請求項17】
前記中断状態再現部は、前記コントローラが保持する前記1以上のロボットの状態情報に更に基づいて、前記中断状態を前記バーチャル空間に再現させる、請求項16記載の
シミュレーション装置。
【請求項18】
前記動作プログラムに基づき前記1以上のロボットが動作している最中における前記リアル空間の状態と、前記動作プログラムに基づき前記1以上のバーチャルロボットが動作している最中における前記バーチャル空間の状態とに差異が生じた場合に、前記コントローラによる前記1以上のロボットの動作を中断させる
動作中断部を更に備える、請求項1~17のいずれか一項記載の
シミュレーション装置。
【請求項19】
前記バーチャルコントローラにより、前記動作プログラムに基づいて前記1以上のバーチャルロボットを動作させることと、前記1以上のバーチャルロボットの動作中における前記バーチャル空間の状態に基づいて前記動作プログラムを修正することと、を繰り返すプログラム生成部を更に備え、
前記コントローラは、前記プログラム生成部により修正された前記動作プログラムに基づいて前記1以上のロボットを動作させる、請求項1~18のいずれか一項記載の
シミュレーション装置。
【請求項20】
バーチャル空間において
、1以上のロボットにそれぞれ対応する1以上のバーチャルロボット
を動作プログラムに基づいて動作させることと、
リアル空間において前記1以上のロボットを前記動作プログラムに基づいて動作させるコントローラが、前記1以上のロボットの動作を中断させた場合に、前記1以上のロボットの動作が中断した前記リアル空間の中断状態を、バーチャル空間に再現させることと、
前記リアル空間の状態を再現させた前記バーチャル空間において、前記動作プログラムに基づいて前記1以上のバーチャルロボットの動作を再開させることと、を含む
シミュレーション方法。
【請求項21】
リアル空間において1以上のロボットを動作プログラムに基づいて動作させるコントローラと、
バーチャル空間において、前記1以上のロボットにそれぞれ対応する1以上のバーチャルロボットを前記動作プログラムに基づいて動作させるバーチャルコントローラと、
前記コントローラによる前記1以上のロボットの動作を中断させる動作中断部と、を備え、
前記動作中断部は、前記動作プログラムに基づき前記1以上のロボットが動作している最中における前記リアル空間の状態と、前記動作プログラムに基づき前記1以上のバーチャルロボットが動作している最中における前記バーチャル空間の状態とに差異が生じた場合に、前記コントローラによる前記1以上のロボットの動作を中断させる、制御システム。
【請求項22】
前記1以上のロボットの動作が中断した前記リアル空間の中断状態を、前記バーチャル空間に再現させる中断状態再現部を更に備える、請求項21記載の制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、ロボットシステム及び制御方法に関する。
【背景技術】
【0002】
特許文献1には、ワークの加工を行う加工装置と、ワークを搬送するロボットとを備える加工システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、ロボットを含む生産システムの停止時における迅速な対処に有効な制御システムを提供する。
【課題を解決するための手段】
【0005】
本開示の一側面に係る制御システムは、リアル空間において1以上のロボットを動作プログラムに基づいて動作させるコントローラと、バーチャル空間において、1以上のロボットにそれぞれ対応する1以上のバーチャルロボットを動作プログラムに基づいて動作させるバーチャルコントローラと、コントローラによる1以上のロボットの動作を中断させる動作中断部と、1以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させる中断状態再現部と、中断状態再現部がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて1以上のバーチャルロボットの動作を再開させる再開シミュレータと、を備える。
【0006】
本開示の他の側面に係るロボットシステムは、上記の制御システムと、1以上のロボットと、を備える。
【0007】
本開示の更に他の側面に係る制御方法は、リアル空間において1以上のロボットを動作プログラムに基づいて動作させることと、1以上のロボットの動作を中断させることと、1以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて1以上のバーチャルロボットの動作を再開させることと、を含む。
【発明の効果】
【0008】
本開示によれば、ロボットを含む生産システムの停止時における迅速な対処に有効な制御システムを提供することができる。
【図面の簡単な説明】
【0009】
【
図1】生産システムの構成を例示する模式図である。
【
図3】2台のロボットの動作及び動作中断を例示する図である。
【
図4】中断した動作の再開シミュレーションを例示する図である。
【
図5】中断した動作の再開シミュレーションを例示する図である。
【
図6】中断した動作の再開シミュレーションを例示する図である。
【
図7】中断した動作の再開シミュレーションを例示する図である。
【
図8】コントローラの構成を例示するブロック図である。
【
図9】ワークに対するプロセスの割り当て結果を例示するテーブルである。
【
図12】データ管理装置の構成を例示するブロック図である。
【
図13】データ管理装置の構成を例示するブロック図である。
【
図14】再開指令取得画面を例示する模式図である。
【
図15】シミュレーション条件指定画面を例示する模式図である。
【
図16】データ管理装置の変形例を示すブロック図である。
【
図17】生産システムの変形例を示す模式図である。
【
図18】制御システムのハードウェア構成を例示する図である。
【
図19】プログラム生成手順を例示するフローチャートである。
【
図20】上位コントローラによる制御手順を例示するフローチャートである。
【
図21】上位コントローラによる異常確認手順を例示するフローチャートである。
【
図22】ローカルコントローラによる制御手順を例示するフローチャートである。
【
図23】バーチャル環境情報収集手順を例示するフローチャートである。
【
図24】リアル環境情報収集手順を例示するフローチャートである。
【
図25】再開シミュレーション手順を例示するフローチャートである。
【
図26】動作再開後における上位コントローラによる制御手順を例示するフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【0011】
〔生産システム〕
図1に示す生産システム1(ロボットシステム)は、ワークの生産を行うシステムである。以下、ワークの生産過程において、作業対象となる物体の全てを「ワーク」という。
例えば「ワーク」は、生産システム1における最終生産物、最終生産物の部品、及び複数の部品を組み合わせたユニット等を含む。
【0012】
生産システム1は、1以上のローカル機器2と、制御システム3とを備える。例えば生産システム1は、複数のローカル機器2を備え、複数のローカル機器2の協調動作によりワークの生産を行う。協調動作は、少なくとも一つの上記最終生産物を得るための複数の工程を分担するように複数のローカル機器が動作することを意味する。複数のローカル機器は、一つの最終生産物を得るための複数の工程を工程単位で分担するように動作してもよいし、複数の最終生産物を得るための複数の工程を最終生産物単位で分担するように動作してもよい。
【0013】
複数のローカル機器2のそれぞれは、ワーク9の生産現場においてワーク9に対し直接的に作業を実行する機器である。直接的な作業は、例えば、熱エネルギー、運動エネルギー、位置エネルギー等の何らかのエネルギーをワーク9に付与する作業である。
【0014】
複数のローカル機器2のそれぞれは、例えば産業機械である。複数のローカル機器2は、少なくともロボットを含む(少なくとも一つのローカル機器2はロボットである)。また、複数のローカル機器2は、ロボットと協働する産業機械を含む。ロボットと協働する産業機械の具体例としては、他のロボットの他、NC工作機械等が挙げられる。
【0015】
図1に示す複数のローカル機器2は、搬送装置2Aと、ロボット2B,2Cと、移動型ロボット2Dとを含んでいるが、これに限られない。少なくとも一つのロボットを含んでいる限り、ローカル機器2の数及び種類は適宜変更可能である。
【0016】
搬送装置2Aは、例えば電動モータ等を動力源としてワーク9を搬送する。搬送装置2Aの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット2B,2C、及び移動型ロボット2Dは、搬送装置2Aが搬送するワーク9に対する作業を行う。ワーク9に対する作業の具体例としては、搬送装置2Aが搬送するワーク9(例えばベースパーツ)に対する他のワーク9(例えばサブパーツ)の組付け、搬送装置2Aが搬送するワーク9におけるパーツ同士の締結(例えばボルト締結)・接合(例えば溶接)、搬送装置2Aの周囲に設置されたNC工作機械へのワーク9の搬入、NC工作機械からのワーク9の搬出等が挙げられる。
【0017】
例えばロボット2B,2Cは、6軸の垂直多関節ロボットであり、
図2に示すように、基部11と、旋回部12と、第1アーム13と、第2アーム14と、第3アーム17と、先端部18と、アクチュエータ41,42,43,44,45,46とを有する。基部11は、搬送装置2Aの周囲に設置されている。旋回部12は、鉛直な軸線21まわりに回転するように基部11上に設けられている。
【0018】
第1アーム13は、軸線21に交差(例えば直交)する軸線22まわりに回転するように旋回部12に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第2アーム14は、軸線22に実質的に平行な軸線23まわりに回転するように第1アーム13の先端部に接続されている。第2アーム14は、アーム基部15とアーム端部16とを含む。アーム基部15は、第1アーム13の先端部に接続され、軸線23に交差(例えば直交)する軸線24に沿って延びている。アーム端部16は、軸線24まわりに回転するようにアーム基部15の先端部に接続されている。第3アーム17は、軸線24に交差(例えば直交)する軸線25まわりに回転するようにアーム端部16の先端部に接続されている。先端部18は、軸線25に交差(例えば直交)する軸線26まわりに回転するように第3アーム17の先端部に接続されている。先端部18には、例えはハンド、吸着ノズル、溶接トーチ等の作業ツールが取り付けられる。
【0019】
このように、ロボット2B,2Cは、基部11と旋回部12とを接続する関節31と、旋回部12と第1アーム13とを接続する関節32と、第1アーム13と第2アーム14とを接続する関節33と、第2アーム14においてアーム基部15とアーム端部16とを接続する関節34と、アーム端部16と第3アーム17とを接続する関節35と、第3アーム17と先端部18とを接続する関節36とを有する。
【0020】
アクチュエータ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まわりにアーム端部16を回転させ、アクチュエータ45は、軸線25まわりに第3アーム17を回転させ、アクチュエータ46は、軸線26まわりに先端部18を回転させる。
【0021】
なお、ロボット2B,2Cの具体的な構成は適宜変更可能である。例えばロボット2B,2Cは、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
【0022】
図1に戻り、移動型ロボット2Dは、自律走行可能なロボットである。移動型ロボット2Dは、ロボット2B,2Cと同様に構成されたロボット10と、無人搬送車50とを有する。無人搬送車50は、ロボット10を搬送するように自律走行する。無人搬送車50の具体例としては、電動式の所謂AGV(Automated Guided Vehicle)が挙げられる。
【0023】
生産システム1は、環境センサ5を更に備えてもよい。環境センサ5は、複数のローカル機器2の作業環境の状態(以下、「環境状態」という。)を検出する。環境センサ5の具体例としては、例えば複数のローカル機器2の作業環境を撮影するカメラが挙げられる。環境センサ5は、レーザ光等により、所定位置におけるワーク9の有無を検出するセンサであってもよいし、ワーク9のサイズ等を検出するセンサであってもよい。生産システム1は、複数の環境センサ5を備えてもよい。
【0024】
制御システム3は、複数のローカル機器2を制御する。以下、制御システム3の構成を詳細に例示する。
【0025】
〔制御システム〕
制御システム3は、複数のローカル機器2を動作プログラムに基づいて動作させ、異常発生時等には複数のローカル機器2の動作を中断させる。複数のローカル機器2の動作が中断した後も、複数のローカル機器2の少なくともいずれかは動作できる状態である場合、動作中断の必要性がなくなった時点で動作可能なローカル機器2の動作を直ちに再開させ、システムのダウンタイムを最小限に留めることが望ましい。しかしながら、複数のローカル機器2の動作が中断する際には、複数のローカル機器2の周辺環境に想定外の変化が生じている可能性がある。
【0026】
これに対し、制御システム3は、リアル空間において複数のローカル機器2を動作プログラムに基づいて動作させることと、複数のローカル機器2の動作を中断させることと、複数のローカル機器2の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、を実行するように構成されている。
【0027】
複数のローカル機器2の動作が中断したリアル空間の状態をバーチャル空間に再現させた上で、そのバーチャル空間において複数のバーチャルローカル機器の動作を再開させることで、リアル空間において複数のローカル機器2の動作を再開させた場合のシミュレーションを容易に行うことができる。これにより、1以上のロボットの動作を再開させた場合に生じる事象を、実際の動作再開に先立って迅速に把握することができる。従って、生産システム1の停止時における迅速な対処に有効である。
【0028】
以下、図面を参照し、シミュレーションの具体例を示す。
図3は、2台のロボットの動作及び動作中断を例示する図である。
図3は、制御システム3が、ロボット2B,2Cにワークを搬送させる場合を例示している。具体的に、制御システム3は、
図3の(a)及び(b)に示すように、ロボット2Bによりワーク支持部92のワーク9Aをワーク支持部93に搬送させ、その後、
図3の(b)及び(c)に示すように、ロボット2Cによりワーク支持部91のワーク9Bをワーク支持部92に搬送させる。
【0029】
制御システム3は、異常発生等に応じてロボット2B,2Cの動作を中断させる。異常発生の一例として、
図3の(d)は、ロボット2Bによるワーク9Aの把持失敗により、ロボット2B,2Cが停止した状態を示している。ロボット2Bの先端部18はワーク支持部93に到達しているが、ワーク9Aはワーク支持部92上に残されている。このような場合、制御システム3は、ロボット2B,2Cを含む生産システム1の動作を中断させる。
【0030】
制御システム3は、ロボット2Bの先端部18がワーク支持部93に移動した後も、ワーク9Aがワーク支持部92上に残されたリアル空間の状態をバーチャル空間に再現させる。例えば制御システム3は、
図4の(a)に示すように、バーチャルロボット2Bvの先端部18vがバーチャルワーク支持部93v上に位置し、バーチャルワーク9Avがバーチャルワーク支持部92v上に残され、バーチャルワーク9Bvがバーチャルワーク支持部91v上に位置し、バーチャルロボット2Cvの先端部18vがバーチャルワーク支持部91v上に位置する状態をバーチャル空間に再現させる。
【0031】
バーチャルロボット2Bvはロボット2Bに対応し、バーチャルロボット2Cvはロボット2Cに対応し、バーチャルワーク9Avはワーク9Aに対応し、バーチャルワーク9Bvはワーク9Bに対応し、バーチャルワーク支持部91vはワーク支持部91に対応し、バーチャルワーク支持部92vはワーク支持部92に対応し、バーチャルワーク支持部93vはワーク支持部93に対応する。
【0032】
その後、制御システム3は、動作プログラムに基づいて、バーチャル空間においてバーチャルロボット2Bv,2Cvの動作を再開させる。例えば制御システム3は、バーチャルワーク支持部91vからバーチャルワーク支持部92vにバーチャルワーク9Bvを搬送する動作を、バーチャルロボット2Cvに再開させる(
図4の(b)参照)。このシミュレーションにより、バーチャルワーク支持部92v上に残されたバーチャルワーク9Avと、バーチャルロボット2Cvがバーチャルワーク支持部92v上に搬送したバーチャルワーク9Bvとの衝突が検出される。このようなシミュレーション結果により、ロボット2Cによるワーク9Bの搬送から動作を再開させるのは不適切であることを容易に把握することができる。これにより、ロボット2Bによるワーク9Aの把持から動作を再開させる等(
図4の(c)参照)、適切な対応を迅速に行うことができる。
【0033】
制御システム3は、ロボット2B,2C自体の異常によりロボット2B,2Cの動作を中断させる場合もある。
図5の(a)は、ワーク9Aをワーク支持部93に到達させた段階で、ロボット2Bに過電流等の異常が生じ、ロボット2B,2Cの動作が中断した状態を示している。このような場合、制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルロボット2Cvの動作を再開させる。例えば制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルワーク支持部91vからバーチャルワーク支持部92vにバーチャルワーク9Bvを搬送する動作をバーチャルロボット2Cvに再開させる(
図5の(b)参照)。このシミュレーションにより、特に衝突なく、ワーク支持部91からワーク支持部92にワーク9Bを搬送可能であることが確認される。
【0034】
図6の(a)は、ワーク9Aを把持した段階で、ロボット2Bに過電流等の異常が生じ、ロボット2B,2Cの動作が中断した状態を示している。このような場合、制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルロボット2Cvの動作を再開させる。例えば制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルワーク支持部91vからバーチャルワーク支持部92vにバーチャルワーク9Bvを搬送する動作をバーチャルロボット2Cvに再開させる(
図6の(b)参照)。
【0035】
このシミュレーションにより、バーチャルワーク支持部92v上において、バーチャルロボット2Bvとバーチャルロボット2Cvとの衝突、バーチャルワーク9Bvとバーチャルロボット2Bvとの衝突、又はバーチャルワーク9Bvとバーチャルワーク9Avとの衝突が検出される。このようなシミュレーション結果により、ロボット2Bをワーク支持部92上に停止させたまま、ロボット2Cによるワーク9Bの搬送から動作を再開させるのは不適切であることを容易に把握することができる。これにより、ロボット2B及びワーク9Aをワーク支持部93上に退避させた後にロボット2Cの動作を再開させる等、適切な対応を迅速に行うことができる。
【0036】
制御システム3は、ロボット2B及びワーク9Aがワーク支持部93上に退避させられたリアル空間の状態をバーチャル空間に再現させ、再度シミュレーションを実行してもよい。例えば制御システム3は、ロボット2B及びワーク9Aがワーク支持部93上に退避させられた後、バーチャルロボット2Bvの先端部18v及びバーチャルワーク9Avがバーチャルワーク支持部93v上に位置し、バーチャルロボット2Cvの先端部18v及びバーチャルワーク9Bvがバーチャルワーク支持部91v上に位置する状態をバーチャル空間に再現させる(
図7の(a)参照)。
【0037】
その後、制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルロボット2Cvの動作を再開させる。例えば制御システム3は、バーチャルロボット2Bvを停止させた状態で、バーチャルワーク支持部91vからバーチャルワーク支持部92vにバーチャルワーク9Bvを搬送する動作をバーチャルロボット2Cvに再開させる(
図7の(b)参照)。このシミュレーションにより、特に衝突なく、ワーク支持部91からワーク支持部92にワーク9Bを搬送可能であることが確認される。
【0038】
以下、制御システム3の構成をより詳細に例示する。
図1に示すように、制御システム3は、コントローラ6と、データ管理装置300とを有する。コントローラ6は、リアル空間において複数のローカル機器2を動作プログラムに基づいて動作させる。リアル空間は、複数のローカル機器2が実際に存在する空間である。
【0039】
コントローラ6は、複数のローカルコントローラ100と、上位コントローラ200(セルコントローラ)とを有する。複数のローカルコントローラ100のそれぞれは、動作プログラムに基づいて、複数のローカル機器2のいずれか一つの管轄ローカル機器2を制御する。
【0040】
上位コントローラ200は、ワーク9に対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のローカルコントローラ100のそれぞれに動作プログラムの実行指令を出力する。例えば動作プログラムは、複数のタスクごとに細分化された複数のタスクプログラムを含む。
【0041】
上位コントローラ200は、ワーク9に対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のローカルコントローラ100のそれぞれに次タスクの実行指令を出力する。上位コントローラ200は、複数のローカル機器2の動作に応じて進捗情報及び環境情報を更新する。
【0042】
例えば上位コントローラ200は、複数のローカルコントローラ100と同期通信する。同期通信とは、一定の周期の同期フレームに同期した同期通信サイクルにて、複数のローカルコントローラ100との通信を繰り返し行うことを意味する。上位コントローラ200は、同期通信のサイクルに同期して、実行指令の出力と、進捗情報及び環境情報の更新とを繰り返し実行する。
【0043】
複数のローカルコントローラ100のそれぞれは、次タスクのタスクプログラムに基づいて管轄ローカル機器2を動作させる。図示において、制御システム3は、4つのローカルコントローラ100A,100B,100C,100Dを有する。ローカルコントローラ100Aは搬送装置2Aを制御する装置コントローラであり、ローカルコントローラ100Bはロボット2Bを制御するロボットコントローラであり、ローカルコントローラ100Cはロボット2Cを制御するロボットコントローラであり、ローカルコントローラ100Dは移動型ロボット2Dを制御するロボットコントローラである。ローカルコントローラ100の数及び各ローカルコントローラ100の構成は、ローカル機器2の数及び種類に応じて適宜変更可能である。
【0044】
データ管理装置300は、上記バーチャルコントローラを備え、上位コントローラ200と同期通信又は非同期通信を行う。データ管理装置300は、上記バーチャルコントローラを有し、複数のローカル機器2の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、を実行するように構成されている。
【0045】
図8に示すように、上位コントローラ200は、機能上の構成(以下、「機能ブロック」という。)として、プロセスデータベース211と、オーダ取得部212と、プロセス割当部213と、プロセス格納部214と、環境情報格納部215と、指令出力部216と、進捗更新部217と、環境更新部218と、動作中断部219とを有する。
【0046】
プロセスデータベース211は、生産システム1が作業対象とする複数種類のワーク9ごとに複数のプロセスを記憶する。各プロセスは、ワーク9に対する複数のタスクのそれぞれの識別情報と、当該複数のタスクの実行順序と、当該複数のタスクのそれぞれを実行するローカル機器2の識別情報と、を含む。
【0047】
複数のタスクは、互いに異なるローカル機器2が実行するタスクを含んでいてもよい。例えば複数のタスクは、ロボット2B,2C又は移動型ロボット2Dが実行する複数のタスクと、他のローカル機器2が実行する1以上のタスクとを含んでいてもよい。タスクは、1つのローカル機器2が実行する一まとまりの作業単位である。
【0048】
オーダ取得部212は、生産管理コントローラ4からワーク9の生産オーダを取得する。生産オーダは、生産すべきワーク9の種類と、種類ごとの生産数量とを含む。生産管理コントローラ4は、例えば、工場のMES(Manufacturing Execution System)において、生産計画に従ったワーク9の生産オーダを複数の工場セルに割り振るコントローラであり、上位コントローラ200と同期通信又は非同期通信を行う。
【0049】
プロセス割当部213は、生産オーダが指定するワーク9に対しプロセスを割り当てる。例えばプロセス割当部213は、生産オーダが指定するワーク9に対し、プロセスデータベース211に基づいてプロセスを割り当てる。生産オーダが複数のワーク9を指定する場合、プロセス割当部213は、複数のワーク9のそれぞれに対して、プロセスデータベース211に基づいてプロセスを割り当てる。複数のワーク9は、互いに異種のワーク9を含んでいてもよい。
【0050】
プロセス格納部214は、プロセス割当部213によるプロセスの割り当て結果と、プロセスごとの進捗情報(リアル空間における進捗情報)とを記憶する。
図9は、複数のワーク9に対するプロセスの割り当て結果を例示するテーブルである。このテーブルにおいては、左から右への並び順序によって、各プロセスにおける複数のタスクの実行順序が示されている。
図9においては、ワークAに対し、3ステップのタスクa1,a2,a3を含むプロセスが割り当てられている。ワークBに対し、5ステップのタスクb1,b2,b3,b4,b5を含むプロセスが割り当てられている。ワークCに対し、2ステップのタスクc1,c2を含むプロセスが割り当てられている。ワークDに対し、3ステップのタスクd1,d2,d3を含むプロセスが割り当てられている。ワークEに対し、4ステップのタスクe1,e2,e3,e4を含むプロセスが割り当てられている。
【0051】
プロセスごとの進捗情報は、例えばプロセスの各タスクが未着手であるか、実行中であるか、完了しているかを示す情報である。進捗情報は、未着手、実行中、又は完了を示すフラグであってもよいし、開始時刻及び完了時刻であってもよい。進捗情報が開始時刻及び完了時刻である場合、開始時刻も完了時刻も打刻されていなければ未着手であり、開始時刻が打刻され完了時刻が打刻されていなければ実行中であり、完了時刻が打刻されていれば完了である。
【0052】
環境情報格納部215は、リアル空間の状態を表すリアル環境情報を記憶する。リアル環境情報は、例えばローカル機器2に関する情報(以下、「機器情報」という。)と、ワーク9に関する情報(以下、「ワーク情報」という。)とを含む。機器情報の具体例としては、ローカル機器2の位置・姿勢情報が挙げられる。ローカル機器2の位置・姿勢情報の具体例としては、ロボット2B,2Cの姿勢情報、及び移動型ロボット2Dの位置・姿勢情報等が挙げられる。ロボット2B,2Cの姿勢情報は、関節31,32,33,34,35,36の動作角度情報であってもよいし、先端部18の位置・姿勢情報であってもよい。移動型ロボット2Dの位置・姿勢情報は、例えば無人搬送車50の位置・姿勢情報と、ロボット10の姿勢情報とを含む。ロボット10の姿勢情報は、関節31,32,33,34,35,36の動作角度情報であってもよいし、先端部18の位置・姿勢(無人搬送車50を基準にした位置・姿勢)情報であってもよい。
【0053】
機器情報は、ローカルコントローラ100と、その管轄ローカル機器2との間に発生した制御信号(以下、「リアル制御信号」という。)の情報を含む。リアル制御信号は、管轄ローカル機器2の制御のためにローカルコントローラ100で生成される内部信号であってもよいし、ローカルコントローラ100から管轄ローカル機器2に出力される出力信号であってもよいし、管轄ローカル機器2からローカルコントローラ100に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄ローカル機器2の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄ローカル機器2のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、ローカル機器2における位置・姿勢、速度等の検出値が挙げられる。
【0054】
図10は、機器情報を例示するテーブルである。
図10においては、ローカル機器2の識別情報と、ローカル機器2に関する情報を示す少なくとも一つの状態パラメータとが対応付けられている。
【0055】
ワーク情報の具体例としては、各ワーク9の位置情報が挙げられる。
図11は、ワーク情報を例示するテーブルである。
図11においては、ワーク9の識別情報(例えば種別及びシリアル番号)と、ワーク9の位置情報とが対応付けられている。
【0056】
図8に戻り、指令出力部216は、プロセス格納部214が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部215が記憶するリアル環境情報とに基づいて、次タスクの実行指令を出力する。複数のタスクにおける次タスクは、未着手のタスクのうち、一つ前のタスクが存在しないか、一つ前のタスクが完了しているタスクである。例えば指令出力部216は、プロセスの進捗情報に基づいて次タスクを抽出し、リアル環境情報が次タスクの実行条件を満たす場合に、次タスクの実行指令を複数のローカルコントローラ100のいずれかに出力する。
【0057】
実行条件の具体例としては、以下が挙げられる。
例1-1)次タスクの対象のワーク9が、次タスクを実行可能な位置に到達していること。
例1-2)次タスクを実行するローカル機器2の動作範囲に障害物が存在しないこと。
【0058】
障害物の具体例としては、他のローカル機器2、他のローカル機器2が保持するワーク9、又は人等が挙げられる。
【0059】
プロセス格納部214において、複数のワーク9に対し複数のプロセスがそれぞれ割り当てられている場合、指令出力部216は、複数のプロセスごとの複数の進捗情報に基づいて、複数のプロセスごとに複数の次タスクを抽出し、抽出した次タスクのうち、リアル環境情報が実行条件を満たしたタスクから順次出力する。なお、指令出力部216は、上記同期通信におけるローカルコントローラ100からの要求に応じて次タスクの実行指令を出力してもよいし、ローカルコントローラ100からの要求の有無によらずに実行指令を出力してもよい。
【0060】
進捗更新部217は、複数のローカル機器2による次タスクの実行状況に応じて、プロセス格納部214の進捗情報を更新する。例えば進捗更新部217は、ローカルコントローラ100が出力する後述のステータス情報に基づいて、プロセス格納部214の進捗情報を更新する。
【0061】
環境更新部218は、複数のローカル機器2の動作に応じて、環境情報格納部215のリアル環境情報を更新する。例えば環境更新部218は、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新する。
【0062】
環境更新部218は、上記同期通信の各サイクルにおいて、複数のローカルコントローラ100から複数のローカル機器2のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新してもよい。これにより、複数のローカル機器2のステータス情報を互いに同期した状態でリアル環境情報に反映させることができる。
【0063】
環境更新部218は、ローカル機器2のステータス情報に基づいてワーク情報を更に更新してもよい。例えば環境更新部218は、ローカルコントローラ100Aから取得した搬送装置2Aのステータス情報に基づいて、各ワーク9の位置情報を更新してもよい。また、
図3の例において、環境更新部218は、ロボット2Bがワーク支持部92からワーク支持部93にワーク9Aを搬送するタスクを完了するのに応じて、ワーク9Aの位置をワーク支持部92上からワーク支持部93上に更新してもよい。
【0064】
環境更新部218は、環境センサ5の検出結果に更に基づいてリアル環境情報を更新してもよい。環境センサ5の検出結果も上位コントローラ200の環境情報に集約することによって、環境センサ5の検出結果と、複数のローカル機器2のステータス情報とを同じ時間軸に沿って環境情報に反映させることができる。例えば環境更新部218は、環境センサ5により検出された画像情報等に基づいてワーク情報を更新してもよいし、環境センサ5により検出された画像情報等に基づいて機器情報を更新してもよい。一例として、環境更新部218は、環境センサ5により検出された画像情報等に基づいてワークの位置を更新してもよい。
【0065】
動作中断部219は、コントローラ6による複数のローカル機器2の動作を中断させる。例えば動作中断部219は、環境情報格納部215が記憶する環境情報に基づいて、複数のローカル機器2のいずれかの異常を検知した場合に複数のローカル機器2の動作を中断させる。例えば動作中断部219は、複数のローカル機器2のいずれかの異常を検知した場合に、指令出力部216による実行指令の出力を中断させ、更に、複数のローカルコントローラ100のそれぞれに実行中のタスクを中断させる。
【0066】
複数のローカル機器2のいずれかの異常は、ローカル機器2自体の異常と、ローカル機器2の動作によりもたらされた周辺環境の異常(例えばワーク9の位置の異常)とを含む。
図3の例において、ロボット2Bの先端部18がワーク支持部93上に到達していることを機器情報が示しているにもかかわらず、ワーク9Aがワーク支持部92上に残っていることをワーク情報が示している場合に、動作中断部219は異常を検知する。このような、機器情報とワーク情報との食い違いは、機器情報がローカル機器2のステータス情報に基づいて更新され、ワーク情報が環境センサ5の検出結果に基づき更新される場合に検出可能となる。
【0067】
また、
図5の例においては、ロボット2Bの機器情報のいずれか(例えば位置情報、速度情報、トルク情報、電流情報等)が異常値を示している場合に、動作中断部219は異常を検知する。機器情報が異常値を示す場合の具体例としては、減速機等の故障により、トルク情報又は電流情報が過大な値となることが挙げられる。機器情報が異常値を示す場合の他の例としては、先端部18によるワーク9の把持失敗により、先端部18の駆動電流が過小な値となることが挙げられる。
【0068】
図8に示すように、ローカルコントローラ100は、機能ブロックとして、プログラム格納部111と、制御部112と、ステータス出力部113とを有する。プログラム格納部111は、管轄ローカル機器2の動作プログラムを記憶する。上述のように、動作プログラムは、複数のタスクごとに細分化された複数のタスクプログラムを含んでいてもよい。複数のタスクプログラムのそれぞれは、時系列の複数の動作指令を含む。管轄ローカル機器2がロボット2B,2C、又は移動型ロボット2Dである場合、動作指令は、先端部18の目標位置・目標姿勢、及び目標位置・目標姿勢への移動速度等を含む。
【0069】
制御部112は、指令出力部216が出力した実行指令を取得した場合に、当該実行指令が示す次タスクに対応するタスクプログラムをプログラム格納部111から抽出し、抽出したタスクプログラムに基づいてローカル機器2を動作させる。
【0070】
ステータス出力部113は、管轄ローカル機器2の上記ステータス情報を上位コントローラ200に出力する。ステータス情報は、少なくとも管轄ローカル機器2の位置・姿勢情報を含む。ステータス情報は、ローカルコントローラ100と、その管轄ローカル機器2との間に発生した制御信号(上記リアル制御信号)の情報を含む。リアル制御信号は、管轄ローカル機器2の制御のためにローカルコントローラ100で生成される内部信号であってもよいし、ローカルコントローラ100から管轄ローカル機器2に出力される出力信号であってもよいし、管轄ローカル機器2からローカルコントローラ100に出力されるフィードバック信号であってもよい。
【0071】
内部信号の具体例としては、管轄ローカル機器2の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄ローカル機器2のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、ローカル機器2における位置・姿勢、速度等の検出値が挙げられる。フィードバック信号は、管轄ローカル機器2のアクチュエータの位置、速度、駆動力(例えばトルク)、及び駆動電流等を更に含んでいてもよい。
【0072】
また、ステータス情報は、管轄ローカル機器2の制御におけるアラーム(例えば過電流のアラーム)等の発生状況を含んでいてもよい。ステータス出力部113は、上記タスクプログラムの実行が完了するのに応じ、タスクの完了通知をステータス情報に含めて出力してもよい。
【0073】
ステータス出力部113は、上記同期通信における上位コントローラ200からの要求に応じてステータス情報を出力してもよいし、上位コントローラ200からの要求の有無によらずにステータス情報を出力してもよい。
【0074】
図12に示すように、データ管理装置300は、モデル格納部311と、バーチャルコントローラ7とを有する。モデル格納部311は、複数のローカル機器2に対応する複数のバーチャルローカル機器2vのモデルを記憶する。バーチャルローカル機器2vのモデルは、対応するローカル機器2のリアル空間における配置、構造、各部の寸法、及び各部の質量等のパラメータを含む。モデル格納部311は、バーチャル空間における複数のバーチャルローカル機器2vの周辺環境のモデルも記憶する。周辺環境のモデルは、複数のローカル機器2の周辺物体のリアル空間における配置、三次元形状、寸法等のパラメータを含む。
【0075】
バーチャルコントローラ7は、バーチャル空間において、複数のバーチャルローカル機器2vを動作プログラムに基づいて動作させる。バーチャル空間は、複数のローカル機器2が存在しないシミュレーション上の仮想空間である。バーチャル空間において、複数のバーチャルローカル機器2vを動作させるとは、モデル格納部311が記憶する複数のバーチャルローカル機器2vのモデルと、複数のバーチャルローカル機器2vの周辺環境のモデルとに基づいて、リアル空間における複数のローカル機器2の動作をシミュレーションすることを意味する。
【0076】
例えばバーチャルコントローラ7は、複数のバーチャルローカルコントローラ400と、上位コントローラ200に対応するバーチャル上位コントローラ500とを有する。複数のバーチャルローカルコントローラ400のそれぞれは、動作プログラムに基づいて、複数のバーチャルローカル機器2vのいずれか一つの管轄バーチャルローカル機器2vを制御する。
【0077】
バーチャル上位コントローラ500は、バーチャルワーク9vに対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のバーチャルローカルコントローラ400のそれぞれに動作プログラムの実行指令を出力する。例えばバーチャル上位コントローラ500は、バーチャルワーク9vに対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のバーチャルローカルコントローラ400のそれぞれに次タスクの実行指令を出力する。バーチャル上位コントローラ500は、複数のバーチャルローカル機器2vの動作に応じて進捗情報及び環境情報を更新する。
【0078】
複数のバーチャルローカルコントローラ400は、複数のローカルコントローラ100にそれぞれ対応する。例えばバーチャルコントローラ7は、ローカルコントローラ100Aに対応するバーチャルローカルコントローラ400Aと、ローカルコントローラ100Bに対応するバーチャルローカルコントローラ400Bと、ローカルコントローラ100Cに対応するバーチャルローカルコントローラ400Cと、ローカルコントローラ100Dに対応するバーチャルローカルコントローラ400Dとを有する。
【0079】
ロボットコントローラであるローカルコントローラ100B,100C,100Dにそれぞれ対応するバーチャルローカルコントローラ400B,400C,400Dは、バーチャルロボットコントローラである。バーチャルローカルコントローラ400B,400Cが制御するバーチャルローカル機器はバーチャルロボット(例えば上記バーチャルロボット2Bv,2Cv)であり、バーチャルローカルコントローラ400Dが制御するバーチャルローカル機器はバーチャル移動型ロボットである。
【0080】
複数のバーチャルローカルコントローラ400のそれぞれは、次タスクのタスクプログラムと、モデル格納部311が記憶する管轄バーチャルローカル機器2vのモデル及び周辺環境のモデルとに基づいて、バーチャル空間において管轄バーチャルローカル機器2vを動作させる。
【0081】
バーチャル上位コントローラ500は、より細分化された機能ブロックとして、プロセスデータベース211、オーダ取得部212、プロセス割当部213、プロセス格納部214、環境情報格納部215、指令出力部216、進捗更新部217、及び環境更新部218にそれぞれ対応するプロセスデータベース511、オーダ取得部512、プロセス割当部513、プロセス格納部514、環境情報格納部515、指令出力部516、進捗更新部517、及び環境更新部518を有する。
【0082】
プロセスデータベース511は、プロセスデータベース211と同様に、生産システム1が対象とする複数種類のバーチャルワーク9vごとに複数のプロセスを記憶する。オーダ取得部512は、例えば後述の入力デバイス396等から、シミュレーション用の生産オーダを取得する。
【0083】
プロセス割当部513は、プロセス割当部213と同様に、生産オーダが指定するバーチャルワーク9vに対しプロセスを割り当てる。例えばプロセス割当部513は、生産オーダが指定するバーチャルワーク9vに対し、プロセスデータベース511に基づいてプロセスを割り当てる。プロセス格納部514は、プロセス格納部214と同様に、プロセス割当部513によるプロセスの割り当て結果と、プロセスごとの進捗情報(バーチャル空間における進捗情報)とを記憶する。
【0084】
環境情報格納部515は、バーチャル環境情報を記憶する。バーチャル環境情報の構成は、環境情報の構成と同様である。バーチャル環境情報は、バーチャル空間における機器情報と、バーチャル空間におけるワーク情報とを含む。バーチャル空間における機器情報の具体例としては、バーチャル空間におけるバーチャルローカル機器2vの位置・姿勢情報が挙げられる。
【0085】
バーチャル空間における機器情報は、バーチャルローカルコントローラ400と、その管轄バーチャルローカル機器2vとの間に発生した制御信号(以下、「バーチャル制御信号」という。)の情報を含む。バーチャル制御信号は、管轄バーチャルローカル機器2vの制御のためにバーチャルローカルコントローラ400で生成される内部信号であってもよいし、バーチャルローカルコントローラ400から管轄バーチャルローカル機器2vに出力される出力信号であってもよいし、管轄バーチャルローカル機器2vからバーチャルローカルコントローラ400に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄バーチャルローカル機器2vの位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄バーチャルローカル機器2vのアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、出力信号と、モデル格納部311が記憶するモデル情報とに基づく管轄バーチャルローカル機器2vの動作のシミュレーション結果が挙げられる。バーチャル空間におけるワーク情報の具体例としては、バーチャル空間における各バーチャルワーク9vの位置情報が挙げられる。
【0086】
指令出力部516は、指令出力部216と同様に、プロセス格納部514が記憶するプロセスと、バーチャル空間における当該プロセスの進捗情報と、環境情報格納部515が記憶するバーチャル環境情報とに基づいて、次タスクの実行指令を出力する。
【0087】
指令出力部516は、プロセスデータベース511に基づいて複数のバーチャルローカルコントローラ400のいずれかに次タスクの実行指令を出力する。例えば指令出力部516は、プロセスの進捗情報に基づいて次タスクを抽出し、バーチャル環境情報が次タスクの実行条件を満たす場合に、次タスクの実行指令を複数のバーチャルローカルコントローラ400のいずれかに出力する。例えば指令出力部516は、プロセスデータベース511において次タスクに対応付けられたローカル機器2のバーチャルローカル機器2vのバーチャルローカルコントローラ400に次タスクの実行指令を出力する。
【0088】
進捗更新部517は、進捗更新部217と同様に、複数のバーチャルローカル機器による次タスクの実行状況に応じて、プロセス格納部514の進捗情報を更新する。例えば進捗更新部517は、バーチャルローカルコントローラ400が出力する後述のステータス情報に基づいて、プロセス格納部514の進捗情報を更新する。環境更新部518は、複数のバーチャルローカル機器2vの動作に応じて、環境情報格納部515のバーチャル環境情報を更新する。
【0089】
バーチャルローカルコントローラ400は、より細分化された機能ブロックとして、プログラム格納部111、制御部112、及びステータス出力部113にそれぞれ対応するプログラム格納部411、制御部412、及びステータス出力部413を有する。プログラム格納部411は、プログラム格納部111と同様に、管轄バーチャルローカル機器2vの動作プログラムを記憶する。
【0090】
制御部412は、指令出力部516が出力した実行指令を取得した場合に、当該実行指令が示す次タスクに対応するタスクプログラムをプログラム格納部411から抽出し、抽出したタスクプログラムに基づいてバーチャルローカル機器2vを動作させる。具体的に、制御部412は、モデル格納部311が記憶する複数のバーチャルローカル機器2vのモデルと、複数のバーチャルローカル機器2vの周辺環境のモデルとに基づいて、リアル空間における管轄バーチャルローカル機器2vに対応するローカル機器2の動作をシミュレーションする。ステータス出力部413は、ステータス出力部113と同様に、管轄バーチャルローカル機器2vの上記ステータス情報をバーチャル上位コントローラ500に出力する。
【0091】
図13に示すように、データ管理装置300は、リアル情報収集部312と、リアル情報データベース313と、バーチャル情報収集部314と、バーチャル情報データベース315と、中断状態再現部321と、再開シミュレータ322とを更に有する。
【0092】
リアル情報収集部312は、リアル環境情報を環境情報格納部215から収集し、リアル空間におけるプロセスごとの進捗情報であるリアル進捗情報をプロセス格納部214から収集する。リアル情報データベース313は、リアル情報収集部312が収集したリアル環境情報とリアル進捗情報とを対応付けたリアルデータセットを時系列で蓄積する。
【0093】
バーチャル情報収集部314は、バーチャル環境情報を収集し、バーチャル空間におけるプロセスごとの進捗情報であるバーチャル進捗情報を収集する。
図12を参照して説明したとおり、バーチャル環境情報は環境情報格納部515に格納され、バーチャル進捗情報はプロセス格納部514に格納されている。そこで、バーチャル情報収集部314は、バーチャル環境情報を環境情報格納部515から収集し、バーチャル進捗情報をプロセス格納部514から収集してもよい。バーチャル情報データベース315は、バーチャル情報収集部314が収集したバーチャル環境情報とバーチャル進捗情報とを対応付けたバーチャルデータセットを時系列で蓄積する。
【0094】
中断状態再現部321は、複数のローカル機器2の動作が中断したリアル空間の状態をバーチャル空間に再現させる。例えば中断状態再現部321は、環境情報格納部215に格納されたリアル環境情報に基づいて、リアル空間の状態を、バーチャル空間に再現させる。例えば中断状態再現部321は、リアル情報収集部312により環境情報格納部215から収集され、リアル情報データベース313に蓄積された最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部515に格納する。また、中断状態再現部321は、リアル情報収集部312によりプロセス格納部214から収集され、リアル情報データベース313に蓄積された最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部514に格納する。
【0095】
上述したように、リアル環境情報は、機器情報を含んでもよい。機器情報は、コントローラ6が保持する複数のローカル機器2の状態情報の一例である。このため、リアル環境情報が機器情報を含む場合、中断状態再現部321は、コントローラ6が保持する複数のローカル機器2の状態情報に少なくとも部分的に基づいて、リアル空間の状態をバーチャル空間に再現させることとなる。
【0096】
リアル環境情報は、環境センサ5による検出結果に少なくとも部分的に基づいて更新される情報を含んでいてもよい。この場合、中断状態再現部321は、環境センサ5による検出結果に基づいて、リアル空間の状態をバーチャル空間に再現させることとなる。
【0097】
再開シミュレータ322は、中断状態再現部321がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラ7により動作プログラムに基づいて1以上のバーチャルローカル機器2vの動作を再開させる。動作の再開対象である1以上のバーチャルローカル機器2vは、1以上のバーチャルロボットを含む。例えば再開シミュレータ322は、動作の中断時点以降の動作指令に基づいて、バーチャルコントローラ7により複数のローカル機器2の動作を再開させる。
【0098】
例えば再開シミュレータ322は、最新のリアル環境情報の複製が最新のバーチャル環境情報として環境情報格納部515に格納され、最新のリアル進捗情報の複製が最新のバーチャル進捗情報としてプロセス格納部514に格納された状態で、指令出力部516に次タスクの実行指令の出力を開始させる。以後、環境情報格納部515が格納するバーチャル環境情報と、プロセス格納部514が格納するバーチャル進捗情報は、1以上のバーチャルローカル機器2vのバーチャル空間における動作に応じて更新される。
【0099】
再開シミュレータ322は、動作を中断した複数のローカル機器2の動作可否情報を複数のローカル機器2ごとにコントローラ6から取得し、動作不可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vを停止させた状態で、動作可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vの動作を再開させてもよい(
図6の(b)参照)。例えば再開シミュレータ322は、最新のリアル環境情報が含む機器情報に基づいて、複数のローカル機器2のそれぞれの動作可否情報を取得する。
【0100】
データ管理装置300は、再開評価部323と、再開動画再生部324とを更に備えていてもよい。再開評価部323は、予め定められた評価条件に基づいて、再開シミュレータ322が再開させた1以上のバーチャルローカル機器2vの動作を評価する。例えば再開評価部323は、1以上のバーチャルローカル機器2vが動作を再開した後、バーチャル情報収集部314が収集してバーチャル情報データベース315に蓄積したバーチャルデータセットに基づいて、バーチャルローカル機器2vの動作を評価する。
【0101】
評価条件の具体例を以下に示す。
例2-1) いずれのバーチャルローカル機器2vも他のバーチャルローカル機器2vに衝突せず:OK/1以上のバーチャルローカル機器2vが他のバーチャルローカル機器2vに衝突:NG
例2-2) いずれのバーチャルローカル機器2vも周辺物体に衝突せず:OK/1以上のバーチャルローカル機器2vが周辺物体に衝突:NG
例2-3) いずれのバーチャルローカル機器2vもバーチャルワーク9vに衝突せず:OK/1以上のバーチャルローカル機器2vがバーチャルワーク9vに衝突:NG
【0102】
例えば、再開シミュレータ322が、動作不可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vを停止させた状態で、動作可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vの動作を再開させる場合、再開評価部323は、動作不可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vと、動作可である1以上のローカル機器2に対応する1以上のバーチャルローカル機器2vとの衝突の有無を評価してもよい。
【0103】
再開評価部323は、1以上のバーチャルローカル機器2vの動作に基づいて、動作プログラムに基づく1以上のバーチャルローカル機器2vの動作を再開した後における動作可能期間を1以上のバーチャルローカル機器2vごとに算出してもよい。例えば再開評価部323は、1以上のバーチャルローカル機器2vの動作において、上述した評価条件に基づく評価結果がOKとなる期間を動作可能期間として算出する。
【0104】
再開動画再生部324は、再開シミュレータが再開させた1以上のバーチャルローカル機器2vの動作の動画を表示させる。例えば再開動画再生部324は、1以上のバーチャルローカル機器2vの動作が再開した後、バーチャル情報収集部314が収集してバーチャル情報データベース315に蓄積したバーチャル環境情報と、モデル格納部311が記憶する複数のバーチャルローカル機器2vのモデルと、複数のバーチャルローカル機器2vの周辺環境のモデルとに基づいて、バーチャル空間における複数のバーチャルローカル機器2vのCG画像のアニメーションを生成し、生成したアニメーションを後述の表示デバイス395等に表示させる。
【0105】
データ管理装置300は、再開指示取得部325と、動作再開部326とを更に備えてもよい。再開指示取得部325は、再開評価部323による評価結果と、再開指示入力部とを含む再開指示画面を後述の表示デバイス395等に表示させる。再開指示取得部325は、再開動画再生部324が再生する動画の表示ウィンドウを更に含む再開指示画面を表示させてもよい。
【0106】
動作再開部326は、再開評価部323による評価結果に基づいて、動作プログラムに基づく1以上のローカル機器2の動作の少なくとも一部をコントローラ6に再開させる。動作の再開対象である1以上のローカル機器2は、1以上のロボット(例えばロボット2B,2C、又は移動型ロボット2D)を含む。例えば動作再開部326は、再開評価部323によりOKと評価された1以上のローカル機器2の動作の少なくとも一部を再開させる再開指令を指令出力部216に出力する。これに応じ、指令出力部216は、再開対象の1以上のローカル機器2のローカルコントローラ100に、中断したタスクを再開させ、タスクの進捗に応じた実行指令の出力を再開する。
【0107】
動作再開部326は、再開指示画面における再開指示入力部への操作(ユーザによる操作)に基づいて、動作プログラムに基づく1以上のローカル機器2の動作をコントローラ6に再開させてもよい。上述のように、再開指示画面は、再開評価部323による評価結果の表示と、再開指示入力部の表示とを含んでいる。このため、ユーザは、再開評価部323による評価結果の表示に基づいて、再開指示入力部を操作することとなる。したがって、再開指示画面における再開指示入力部への操作に基づいて、動作プログラムに基づく1以上のローカル機器2の動作をコントローラ6に再開させることは、再開評価部323による評価結果に基づいて、動作プログラムに基づく1以上のローカル機器2の動作を再開させることに含まれる。
【0108】
動作プログラムに基づく1以上のローカル機器2の動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて1以上のローカル機器2の少なくとも一部を動作させる第1モードの再開と、動作の中断時点より前の動作指令に基づいて1以上のローカル機器2の少なくとも一部を動作させる第2モードの再開とを含んでもよい。第1モードは、動作の中断時点より前の動作指令と、動作の中断時点以降の動作指令とに基づいて1以上のローカル機器2の少なくとも一部を動作させることを含む。
【0109】
第2モードは、動作の中断時点より前の動作指令に基づき、当該動作指令の開始位置まで戻るように1以上のローカル機器2の少なくとも一部を動作させることを含む。再開シミュレータ322は、第1モード及び第2モードを含む複数の再開モードごとに、バーチャルコントローラ7により動作プログラムに基づいて1以上のバーチャルローカル機器2vの動作を再開させてもよい。この場合、再開評価部323は、複数の再開モードごとに1以上のバーチャルローカル機器2vの動作を評価してもよい。
【0110】
再開指示取得部325は、再開評価部323による複数の再開モードごとの評価結果と、複数の再開モードのいずれかを選択可能な再開指示入力部とを含む再開指示画面を表示させてもよい。再開指示取得部325は、1以上のローカル機器2ごとの動作可能期間と、再開時点を指定可能な再開指示入力部とを含む再開指示画面を表示させてもよい。再開指示取得部325は、1以上のローカル機器2ごとの動作可能期間と、再開した動作の終了時点を指定可能な再開指示入力部とを含む再開指示画面を表示させてもよい。
【0111】
図14は、再開指示画面を例示する模式図である。
図14に示す再開指示画面350は、動画ウィンドウ351と、評価結果ウィンドウ352と、評価結果ウィンドウ353と、再開指示入力部360とを有する。
【0112】
動画ウィンドウ351は、再開動画再生部324が再生する動画を表示するウィンドウである。再開動画再生部324は、動画を動画ウィンドウ351に再生させる。評価結果ウィンドウ352は、再開評価部323による評価結果を表示するウィンドウである。再開指示取得部325は、再開評価部323による評価結果をテキスト等で評価結果ウィンドウ352に表示させる。評価結果ウィンドウ353は、動作を再開した後における1以上のローカル機器2ごとの動作可能期間を表示するウィンドウである。再開指示取得部325は、再開評価部323による評価結果に基づいて動作可能期間を導出し、導出結果をテキスト等で評価結果ウィンドウ353に表示させる。
【0113】
再開指示入力部360は、1以上のローカル機器2の動作の再開を指示する操作入力部である。例えば再開指示入力部360は、モード選択部361と、再開時点指定部362と、終了時点指定部363と、再生指示ボタン364と、動作再開指示ボタン365とを有する。
【0114】
モード選択部361は、例えばラジオボタン等により、再開モードを選択する操作入力部である。図示の例においては、第1モードに相当する「継続モード」と、第2モードに相当する「原点復帰モード」とが選択可能となっている。原点復帰モードは、動作プログラムにおける最初の動作指令の開始位置まで戻るモードである。
【0115】
再開時点指定部362は、上記継続モードにおける動作の再開時点を入力する操作入力部である。例えば再開時点指定部362は、中断ステップに対し、何ステップ後から再開させるかを入力する操作入力部である。ここでの「ステップ」は、1つの動作指令に対応する一動作を意味する。
【0116】
終了時点指定部363は、上記継続モードにおける動作の終了時点を入力する操作入力部である。図示の例においては、中断タスク完了まで、指定タスク完了まで、全タスク完了までのいずれかをラジオボタン等により選択可能となっている。終了時点指定部363は、「指定タスク完了まで」が選択される場合に「指定タスク」を入力するための入力部を更に含んでいる。
【0117】
再生指示ボタン364は、1以上のバーチャルローカル機器2vの動作の動画再生を指示する操作入力部である。再生指示ボタン364が操作された場合に、再開動画再生部324は、モード選択部361、再開時点指定部362、及び終了時点指定部363への入力に基づいて、1以上のバーチャルローカル機器2vの動作の動画を動画ウィンドウ351に表示させる。例えば再開動画再生部324は、モード選択部361で選択された再生モードにて、再開時点指定部362で指定された再開時点から、終了時点指定部363で指定された終了時点までの1以上のバーチャルローカル機器2vの動作の動画を動画ウィンドウ351に再生させる。
【0118】
動作再開指示ボタン365は、1以上のローカル機器2の動作の再開を指示する操作入力部である。動作再開部326は、動作再開指示ボタン365への操作入力に応じて、動作プログラムに基づく1以上のローカル機器2の動作をコントローラ6に再開させる。例えば動作再開部326は、モード選択部361で選択された再生モードにて、再開時点指定部362で指定された再開時点以降、終了時点指定部363で指定された終了時点以前の動作指令に基づいて、1以上のローカル機器2の少なくとも一部の動作をコントローラ6に再開させる。
【0119】
再シミュレーション指示ボタン366は、再開シミュレーションの再実行を指示する操作入力部である。中断状態再現部321は、再シミュレーション指示ボタン366への操作入力に応じ、リアル情報データベース313の最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部515に再度格納する。また、中断状態再現部321は、リアル情報データベース313の最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部514に再度格納する。その後、再開シミュレータ322は、動作プログラムに基づく1以上のバーチャルローカル機器2vの動作をバーチャルコントローラ7に再開させる。
【0120】
データ管理装置300は、シミュレーション条件取得部327を更に有してもよい。シミュレーション条件取得部327は、第1モード及び第2モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面を表示させる。この場合、再開シミュレータ322は、シミュレーション条件指定画面において選択された再開モードにて、バーチャルコントローラ7により1以上のローカル機器2の動作を再開させる。シミュレーション条件取得部327は、動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面を表示させてもよい。シミュレーション条件取得部327は、動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面を表示させてもよい。
【0121】
図15は、シミュレーション条件指定画面を例示する模式図である。
図15に示すシミュレーション条件指定画面370は、モード選択部371と、開始時点指定部372と、終了時点指定部373と、シミュレーション指示ボタン374とを有する。
【0122】
モード選択部371は、例えばラジオボタン等により、再開モードを選択する操作入力部である。図示の例においては、第1モードに相当する上記「継続モード」と、第2モードに相当する上記「原点復帰モード」とが選択可能となっている。
【0123】
開始時点指定部372は、上記継続モードにおける動作の再開時点を入力する操作入力部である。例えば開始時点指定部372は、中断ステップに対し、何ステップ後から再開させるかを入力する操作入力部である。
【0124】
終了時点指定部373は、上記継続モードにおける動作の終了時点を入力する操作入力部である。図示の例においては、中断タスク完了まで、指定タスク完了まで、全タスク完了までのいずれかをラジオボタン等により選択可能となっている。終了時点指定部373は、「指定タスク完了まで」が選択される場合に「指定タスク」を入力するための入力部を更に含んでいる。
【0125】
シミュレーション指示ボタン374は、1以上のバーチャルローカル機器2vの動作の再開を指示する操作入力部である。再開シミュレータ322は、シミュレーション指示ボタン374への操作入力に応じて、動作プログラムに基づく1以上のバーチャルローカル機器2vの動作をバーチャルコントローラ7に再開させる。例えば再開シミュレータ322は、モード選択部371において選択された再生モードにて、開始時点指定部372において指定された開始時点以降、終了時点指定部373において指定された終了時点以前の動作指令に基づいて、バーチャルコントローラ7により1以上のバーチャルローカル機器2vの動作を再開させる。
【0126】
シミュレーション条件取得部327は、シミュレーション後に上述した再シミュレーション指示ボタン366が操作された場合に、シミュレーション条件指定画面370を再度表示させてもよい。
【0127】
リアル情報データベース313に蓄積されたリアル環境データと、バーチャル情報データベース315に蓄積されたバーチャル環境データとは、複数のローカル機器2の動作を中断させるべきか否かの判定に利用可能である。例えば動作中断部219は、動作プログラムに基づき複数のローカル機器2が動作している最中におけるリアル空間の状態と、動作プログラムに基づき複数のバーチャルローカル機器2vが動作している最中におけるバーチャル空間の状態とに差異が生じた場合に、コントローラ6による複数のローカル機器2の動作を中断させてもよい。
【0128】
例えばデータ管理装置300は、タスク比較部316を更に有する。タスク比較部316は、リアル情報データベース313が蓄積したリアル環境情報と、バーチャル情報データベース315が蓄積したバーチャル環境情報とを、プロセスごとの進捗ごとに比較する。プロセスの進捗ごとに比較するとは、上記リアル進捗情報と、上記バーチャル進捗情報とが互いに一致するリアルデータセットとバーチャルデータセットとで、リアル環境情報とバーチャル環境情報とを比較することを意味する。
【0129】
動作中断部219は、タスク比較部316の比較結果に基づいて、リアル空間の状態とバーチャル空間の状態との差異を検出した場合に、コントローラ6による複数のローカル機器2の動作を中断させる。
【0130】
図16に示すように、環境情報格納部215は、周辺情報記憶部328を含んでいてもよい。周辺情報記憶部328は、複数のローカル機器2の他の機械を制御する第2コントローラが、複数のローカル機器2の動作の中断後に他の機械をどのように動作させるかを示す周辺挙動情報を記憶する。この場合、再開評価部323は、周辺挙動情報に更に基づいて、1以上のバーチャルローカル機器2vの動作を評価してもよい。
【0131】
図16は、他の機械の一例として、NC加工装置等の加工装置94を示し、第2コントローラの一例として、加工装置94を制御する装置コントローラ95を示している。加工装置94は、ワーク9を出し入れするための扉96を有する。例えば、バーチャルローカル機器2vが加工装置94に対するワーク9の搬入又は搬出の動作を再開する場合には、扉96が開放されているか否かが未知であると、バーチャルローカル機器2vが扉96と衝突するか否かの評価ができない。
【0132】
加工装置94についての周辺挙動の具体例を以下に示す。
例3-1) 複数のローカル機器2の動作が中断した場合、現在実行中の加工を完了させ、扉96を開いた状態で待機する。
例3-2) 複数のローカル機器2の動作が中断した場合、現在実行中の加工を完了させ、扉96を閉じた状態で待機し、1以上のローカル機器2の動作が再開したら直ちに扉96を開く。
例3-3) 複数のローカル機器2の動作が中断した場合、直ちに加工を中断し、1以上のローカル機器2の動作が再開したら加工を再開する。
【0133】
周辺挙動情報に基づけば、バーチャルローカル機器2vが加工装置94に対するワーク9の搬入又は搬出の動作を再開する時点で、扉96が開いているか否かを特定し、特定結果に基づいてバーチャルローカル機器2vの動作を評価することができる。周辺挙動情報は、同期通信又は非同期通信により環境更新部218が装置コントローラ95から取得し、環境情報格納部215に格納する。
【0134】
図17に示すように、データ管理装置300は、機能ブロックとして、プログラム取得部331と、プログラム生成部332と、プログラム配信部333とを更に有してもよい。
【0135】
プログラム取得部331は、各ローカルコントローラ100において、ティーチングにより登録された動作プログラムを取得し、バーチャルローカルコントローラ400のプログラム格納部411に記憶させる。
【0136】
プログラム生成部332は、プログラム取得部331が取得した動作プログラムに基づいて、バーチャルコントローラ7により複数のバーチャルローカル機器2vを動作させることと、複数のバーチャルローカル機器2vの動作中におけるバーチャル環境情報に基づいてプログラム格納部411の動作プログラムを修正することと、を1以上のバーチャルローカル機器2vの動作が所定条件を満たすまで繰り返す。以下、この所定条件を「プログラム成立条件」という。
【0137】
プログラム成立条件の具体例としては、いずれのバーチャルローカル機器2vも他のバーチャルローカル機器2vに衝突しないこと、いずれのバーチャルローカル機器2vも周辺物体に衝突しないこと、いずれのバーチャルローカル機器2vもバーチャルワーク9vに衝突しない(あるいは干渉しない)動作軌跡(パス)であること、等が挙げられる。以下、プログラム格納部411においてかかる干渉回避のパスプランニングにより生成された動作軌跡(パス)に基づいてプログラム生成部332により修正されたプログラムを、「生成済みプログラム」という。
【0138】
プログラム配信部333は、プログラム格納部411の生成済みプログラムを、対応するローカルコントローラ100に出力し、当該ローカルコントローラ100のプログラム格納部111に記憶させる。例えばプログラム配信部333は、上位コントローラ200を介して、生成済みプログラムを対応するローカルコントローラ100に出力する。このローカルコントローラ100は、生成済みプログラムに基づいて管轄ローカル機器2を動作させる。
【0139】
図18は、制御システム3のハードウェア構成を例示するブロック図である。
図18に示すように、上位コントローラ200は、回路290を有する。回路290は、一つ又は複数のプロセッサ291と、メモリ292と、ストレージ293と、通信ポート294,295と、入出力ポート296を含む。ストレージ293は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ293は、リアル空間において複数のローカル機器2を動作プログラムに基づいて動作させることと、複数のローカル機器2の動作を中断させることと、を上位コントローラ200に実行させるためのプログラムを記憶している。例えばストレージ293は、上述した各機能ブロックを上位コントローラ200に構成させるためのプログラムを記憶している。
【0140】
メモリ292は、ストレージ293の記憶媒体からロードしたプログラム及びプロセッサ291による演算結果を一時的に記憶する。プロセッサ291は、メモリ292と協働して上記プログラムを実行することで、上位コントローラ200の各機能ブロックを構成する。通信ポート294は、プロセッサ291からの指令に従って、第1のネットワーク回線NW1を介して、ローカルコントローラ100との間で通信を行う。通信ポート295は、プロセッサ291からの指令に従って、第2のネットワーク回線NW2を介して、データ管理装置300との間で通信を行う。入出力ポート296は、プロセッサ291からの指令に従って、環境センサ5との間で情報の入出力を行う。
【0141】
ローカルコントローラ100は、回路190を有する。回路190は、一つ又は複数のプロセッサ191と、メモリ192と、ストレージ193と、通信ポート194と、ドライバ回路195を含む。ストレージ193は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ193は、上述した各機能ブロックをローカルコントローラ100に構成させるためのプログラムを記憶している。
【0142】
メモリ192は、ストレージ193の記憶媒体からロードしたプログラム及びプロセッサ191による演算結果を一時的に記憶する。プロセッサ191は、メモリ192と協働して上記プログラムを実行することで、ローカルコントローラ100の各機能ブロックを構成する。通信ポート194は、プロセッサ191からの指令に従って、第1のネットワーク回線NW1を介して、上位コントローラ200との間で通信を行う。ドライバ回路195は、プロセッサ191からの指令に従って、ローカル機器2に駆動電力を出力する。
【0143】
データ管理装置300は、回路390を有する。回路390は、一つ又は複数のプロセッサ391と、メモリ392と、ストレージ393と、通信ポート394と、表示デバイス395と、入力デバイス396とを含む。ストレージ393は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ393は、複数のローカル機器2の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、データ管理装置300に実行させるためのプログラムを記憶している。例えばストレージ393は、上述した各機能ブロックをデータ管理装置300に構成させるためのプログラムを記憶している。
【0144】
メモリ392は、ストレージ393の記憶媒体からロードしたプログラム及びプロセッサ391による演算結果を一時的に記憶する。プロセッサ391は、メモリ392と協働して上記プログラムを実行することで、データ管理装置300の各機能ブロックを構成する。通信ポート394は、プロセッサ391からの指令に従って、第2のネットワーク回線NW2を介して、上位コントローラ200との間で通信を行う。表示デバイス395及び入力デバイス396は、データ管理装置300のユーザインタフェースとして機能する。表示デバイス395は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス396は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス395及び入力デバイス396は、所謂タッチパネルのように一体化されていてもよい。表示デバイス395及び入力デバイス396は、データ管理装置300に接続される外部機器に設けられていてもよいし、データ管理装置300に組み込まれていてもよい。
【0145】
なお、回路190,290,390は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路190,290,390は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。ローカルコントローラ100、上位コントローラ200及びデータ管理装置300のそれぞれは、互いに通信可能な複数のコンピュータにより構成されていてもよく、各コンピュータが回路を有していてもよい。例えばデータ管理装置300は、データ収集装置と、シミュレーション装置とを含む複数のコンピュータにより構成されていてもよい。この場合、上述したデータ管理装置300の各機能ブロックは、複数のコンピュータに分散して構成されてもよい。一例として、バーチャルローカルコントローラ400、バーチャル上位コントローラ500、モデル格納部311、プログラム取得部331、プログラム生成部332、プログラム配信部333、中断状態再現部321、再開シミュレータ322、再開評価部323、再開動画再生部324、再開指示取得部325、動作再開部326及びシミュレーション条件取得部327がシミュレーション装置に構成され、リアル情報収集部312、リアル情報データベース313、バーチャル情報収集部314、バーチャル情報データベース315及びタスク比較部316がデータ収集装置に構成されていてもよい。データ収集装置は、各ローカルコントローラ100のタスクプログラム130及び制御パラメータの収集・記憶と、各ローカルコントローラ100へのタスクプログラム130の配信とを更に行ってもよい。この場合、プログラム取得部331はデータ収集装置を介してタスクプログラム130をローカルコントローラ100から取得してもよい。プログラム配信部333はデータ収集装置を介して生成済みのプログラムをローカルコントローラ100に出力してもよい。また、シミュレーション装置としての機能を一まとめにしたプログラムにより1台のコンピュータにシミュレーション装置が構成され、データ収集装置としての機能を一まとめにしたプログラムにより同じ1台のコンピュータにデータ収集装置が構成されていてもよい。
【0146】
〔制御手順〕
制御方法の一例として、制御システム3が行う制御手順を示す。この手順は、リアル空間において1以上のロボットを動作プログラムに基づいて動作させることと、1以上のロボットの動作を中断させることと、1以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて1以上のバーチャルロボットの動作を再開させることと、を含む。
【0147】
以下、制御手順の具体例を示す。この具体例に係る制御手順は、データ管理装置300によるプログラム生成手順と、上位コントローラ200による制御手順と、ローカルコントローラ100による制御手順と、データ管理装置300によるデータ管理手順と、上位コントローラ200による動作の再開手順とを含む。以下、各手順を詳細に例示する。
【0148】
(プログラム生成手順)
図19に示すように、データ管理装置300は、まずステップS01,S02,S03を実行する。ステップS01では、プログラム取得部331が、各ローカルコントローラ100において、ティーチングにより登録された動作プログラムを取得し、バーチャルローカルコントローラ400のプログラム格納部411に記憶させる。
【0149】
ステップS02では、プログラム生成部332が、プログラム取得部331が取得した動作プログラムに基づいて、バーチャルコントローラ7により複数のバーチャルローカル機器2vを動作させる。バーチャルローカル機器2vの動作期間中には、バーチャル情報収集部314が上記バーチャルデータセットをバーチャル情報データベース315に蓄積する。
【0150】
ステップS03では、プログラム生成部332が、バーチャル情報データベース315に蓄積されたバーチャルデータセットに基づいて、複数のバーチャルローカル機器2vの動作が上記プログラム成立条件を満たすか否かを確認する。
【0151】
ステップS03において、複数のバーチャルローカル機器2vの動作が上記プログラム成立条件を満たさないと判定した場合、データ管理装置300はステップS04を実行する。ステップS04では、プログラム生成部332が、バーチャル情報データベース315に蓄積されたバーチャルデータセット(複数のバーチャルローカル機器2vの動作中におけるバーチャル環境情報)に基づいてプログラム格納部411の動作プログラムを修正する。その後、データ管理装置300は処理をステップS01に戻す。以後、複数のバーチャルローカル機器2vの動作が上記プログラム成立条件を満たすまで、バーチャルコントローラ7により複数のバーチャルローカル機器2vを動作させることと、複数のバーチャルローカル機器2vの動作がプログラム成立条件を満たすか否かを確認することと、複数のバーチャルローカル機器2vの動作中におけるバーチャル環境情報に基づいてプログラム格納部411の動作プログラムを修正することとが繰り返される。
【0152】
ステップS03において、複数のバーチャルローカル機器2vの動作が上記プログラム成立条件を満たすと判定した場合、データ管理装置300はステップS05を実行する。ステップS05では、プログラム配信部333が、プログラム格納部411の生成済みプログラムを、対応するローカルコントローラ100に出力し、当該ローカルコントローラ100のプログラム格納部111に記憶させる。以上でプログラム生成手順が完了する。
【0153】
(上位コントローラによる制御手順)
図20に示すように、上位コントローラ200は、まずステップS11,S12,S13,S14,S15,S16を実行する。ステップS11では、オーダ取得部212が、生産管理コントローラ4からの生産オーダの取得を待機する。ステップS12では、プロセス割当部213が、生産オーダが指定するワーク9に対しプロセスを割り当ててプロセス格納部214に記憶させる。ステップS13では、指令出力部216が、プロセス格納部214が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部215が記憶するリアル環境情報とに基づいて、次タスクの実行指令を出力する。
【0154】
ステップS14では、環境更新部218が、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、環境センサ5の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。ステップS15では、進捗更新部217が、ステップS14において取得されたステータス情報が含むタスクの完了通知に応じて、プロセス格納部214の進捗情報を更新する。ステータス情報がタスクの完了通知を含んでいない場合、進捗情報は変更されない。ステップS16では、動作中断部219が、複数のローカル機器2のいずれかの異常がないか否かを確認する。異常の確認手順については別途例示する。
【0155】
ステップS16において複数のローカル機器2のいずれにも異常がないと判定した場合、上位コントローラ200はステップS17を実行する。ステップS17では、指令出力部216が、プロセス格納部214においてワーク9に割り当てられたプロセスが完了しているかを確認する。例えば指令出力部216は、プロセス格納部214における全てのタスクが完了しているかを確認する。
【0156】
ステップS17において完了していないタスクが残っていると判定した場合、上位コントローラ200は処理をステップS13に戻す。以後、上位コントローラ200は、プロセス格納部214における全てのタスクが完了するまで、例えば所定周期の同期通信サイクルにてステップS13~S17を繰り返す。
【0157】
ステップS17において全てのタスクが完了していると判定した場合、上位コントローラ200は処理をステップS11に戻す。以後、複数のローカル機器2のいずれかに異常が生じない限り、上位コントローラ200は以上の処理を繰り返し実行する。
【0158】
ステップS16において複数のローカル機器2のいずれかに異常があると判定した場合、上位コントローラ200はステップS21,S22,S23を実行する。ステップS21では、動作中断部219が、複数のローカル機器2の動作を中断させる。例えば動作中断部219は、指令出力部216による実行指令の出力を中断させ、複数のローカルコントローラ100のそれぞれに実行中のタスクを中断させる。
【0159】
ステップS22では、環境更新部218が、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、環境センサ5の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。ステップS23では、指令出力部216が、動作の再開指令が動作再開部326から出力されているかを確認する。
【0160】
ステップS23において動作の再開指令が動作再開部326から出力されていないと判定した場合、ローカルコントローラ100は処理をステップS22に戻す。以後、動作再開部326から動作の再開指令が出力されるまでは、環境情報格納部215の環境情報の更新が繰り返される。これにより、動作の中断中におけるユーザの操作に応じたリアル空間の状態変化が継続的に環境情報に反映される。ステップS23において動作の再開指令が動作再開部326から出力されていると判定した場合、動作の再開前における進捗管理手順が完了する。
【0161】
図21は、ステップS16における異常確認手順を例示するフローチャートである。
図21に示すように、上位コントローラ200は、まずステップS31を実行する。ステップS31では、動作中断部219が、環境情報格納部215が記憶する環境情報に基づいて、複数のローカル機器2のいずれかに異常があるか否かを確認する。
【0162】
ステップS31において複数のローカル機器2のいずれにも異常がないと判定した場合、上位コントローラ200はステップS32を実行する。ステップS32では、動作中断部219が、上記タスク比較部316による比較結果に基づいて、リアル空間の状態とバーチャル空間の状態との間に差異があるか否かを確認する。
【0163】
ステップS31において複数のローカル機器2のいずれかに異常があると判定した場合、及びステップS32においてリアル空間の状態とバーチャル空間の状態との間に差異があると判定した場合、上位コントローラ200はステップS33を実行する。ステップS33では、動作中断部219が、複数のローカル機器2のいずれかの異常を検知する。
【0164】
ステップS32においてリアル空間の状態とバーチャル空間の状態との間に差異がないと判定した場合、動作中断部219は、異常を検知することなく異常確認を完了する。
【0165】
(ローカルコントローラ100による制御手順)
図22に示すように、ローカルコントローラ100は、まずステップS41,S42,S43,S44を実行する。ステップS41では、制御部112が、次タスクの実行指令を待機する。ステップS42では、制御部112が、管轄ローカル機器2に、次タスクのうち1制御周期分を実行させる。ステップS43では、ステータス出力部113が、管轄ローカル機器2のステータス情報を上位コントローラ200に出力する。ステップS44では、次タスクの実行が完了したか否かを制御部112が確認する。
【0166】
ステップS44において次タスクの実行が完了していないと判定した場合、ローカルコントローラ100は処理をステップS42に戻す。以後、次タスクの実行が完了するまで、ローカルコントローラ100は所定周期の制御サイクルにてステップS42~S44を繰り返す。制御サイクルは、上記同期通信サイクルと同期していてもよい。
【0167】
ステップS44において次タスクの実行が完了したと判定した場合、ローカルコントローラ100はステップS45を実行する。ステップS45では、ステータス出力部113が、次タスクの完了通知をステータス情報に含めて上位コントローラ200に出力する。その後、ローカルコントローラ100は処理をステップS41に戻す。ローカルコントローラ100は以上の処理を繰り返す。
【0168】
(データ管理手順)
データ管理装置300が実行するデータ管理手順は、バーチャル環境情報の収集手順と、リアル環境情報の収集手順と、再開シミュレーション手順とを含む。以下、各手順を詳細に例示する。
【0169】
(バーチャル環境情報の収集手順)
図23に示すように、データ管理装置300は、S51,S52,S53を順に実行する。ステップS51では、バーチャル上位コントローラ500が生産オーダに応じたプロセスの実行を開始するのを、バーチャル情報収集部314が待機する。
【0170】
ステップS52では、バーチャル情報収集部314が、バーチャル環境情報を環境情報格納部515から取得し、バーチャル空間におけるプロセスごとの進捗情報であるバーチャル進捗情報をプロセス格納部514から取得し、これらを対応付けたバーチャルデータセットをバーチャル情報データベース315に蓄積させる。ステップS53では、バーチャル上位コントローラ500によるプロセスの実行が完了したかをバーチャル情報収集部314が確認する。
【0171】
ステップS53においてバーチャル上位コントローラ500によるプロセスの実行が完了していないと判定した場合、データ管理装置300は処理をステップS52に戻す。以後、データ管理装置300は、バーチャル上位コントローラ500によるプロセスの実行が完了するまで、バーチャルデータセットの取得・蓄積を繰り返す。ステップS53においてバーチャル上位コントローラ500によるプロセスの実行が完了したと判定した場合、バーチャル環境情報の収集手順が完了する。
【0172】
(リアル環境情報の収集手順)
図24に示すように、データ管理装置300は、まずステップS61,S62,S63を実行する。ステップS61では、上位コントローラ200が生産オーダに応じたプロセスの実行を開始するのをリアル情報収集部312が待機する。ステップS62では、リアル情報収集部312が、リアル環境情報を環境情報格納部215から取得し、リアル進捗情報をプロセス格納部214から取得し、これらを対応付けたリアルデータセットをリアル情報データベース313に蓄積させる。ステップS63では、動作中断部219が複数のローカル機器2の動作を中断させていないか否かを、リアル情報収集部312が確認する。
【0173】
ステップS63において動作中断部219が複数のローカル機器2の動作を中断させていないと判定した場合、データ管理装置300はステップS64を実行する。ステップS64では、上位コントローラ200によるプロセスの実行が完了したかをリアル情報収集部312が確認する。
【0174】
ステップS64において上位コントローラ200によるプロセスの実行が完了していないと判定した場合、データ管理装置300は処理をステップS62に戻す。以後、データ管理装置300は、上位コントローラ200によるプロセスの実行が完了するまで、リアルデータセットの取得・蓄積を繰り返す。ステップS64において上位コントローラ200によるプロセスの実行が完了したと判定した場合、リアル環境情報の収集手順が完了する。
【0175】
ステップS63において動作中断部219が複数のローカル機器2の動作を中断させていると判定した場合、データ管理装置300は、後述の再開シミュレーション手順(ステップS65)を実行する。
【0176】
(再開シミュレーション手順)
図25に示すように、データ管理装置300は、まずステップS71,S72,S73を実行する。ステップS71では、シミュレーション条件取得部327が、上述したシミュレーション条件指定画面370を表示させる。
【0177】
ステップS72では、中断状態再現部321が、リアル情報収集部312により環境情報格納部215から収集され、リアル情報データベース313に蓄積された最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部515に格納する。また、中断状態再現部321は、リアル情報収集部312によりプロセス格納部214から収集され、リアル情報データベース313に蓄積された最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部514に格納する。
【0178】
ステップS73では、シミュレーション指示ボタン374の操作によりシミュレーション指令が入力されたか否かを再開シミュレータ322が確認する。
【0179】
ステップS73においてシミュレーション指令が入力されていないと判定した場合、データ管理装置300は処理をステップS72に戻す。以後、シミュレーション指令が入力されるまでは、リアル空間の状態をバーチャル空間に再現させることが繰り返される。これにより、バーチャル空間の状態が、リアル空間の最新状態に継続的に合わせられる。
【0180】
ステップS73においてシミュレーション指令が入力されたと判定した場合、データ管理装置300はステップS74,S75,S76,S77,S78を実行する。ステップS74では、再開シミュレータ322が、シミュレーション指示ボタン374への操作入力に応じて、動作プログラムに基づく1以上のバーチャルローカル機器2vの動作をバーチャルコントローラ7に再開させる。ステップS75では、再開評価部323が、1以上のバーチャルローカル機器2vの動作完了を待機する。
【0181】
ステップS76では、1以上のバーチャルローカル機器2vが動作を再開した後、バーチャル情報収集部314が収集してバーチャル情報データベース315に蓄積したバーチャルデータセットに基づいて、再開評価部323がバーチャルローカル機器2vの動作を評価する。ステップS77では、再開指示取得部325が、再開評価部323による評価結果に基づいて、再開指示画面350を表示させる。ステップS78では、動作再開指示ボタン365が操作されたか否かを動作再開部326が確認する。
【0182】
ステップS78において動作再開指示ボタン365が操作されていないと判定した場合、データ管理装置300はステップS81を実行する。ステップS81では、再シミュレーション指示ボタン366が操作されたか否かを再開シミュレータ322が確認する。
【0183】
ステップS81において再シミュレーション指示ボタン366が操作されていないと判定した場合、データ管理装置300はステップS82を実行する。ステップS82では、再生指示ボタン364が操作されたか否かを再開動画再生部324が確認する。
【0184】
ステップS82において再生指示ボタン364が操作されていないと判定した場合、データ管理装置300は処理をステップS78に戻す。以後、データ管理装置300は、動作再開指示ボタン365、再シミュレーション指示ボタン366、及び再生指示ボタン364のいずれかが操作されるのを待機する。
【0185】
ステップS82において再生指示ボタン364が操作されたと判定した場合、データ管理装置300はステップS83を実行する。ステップS83では、再開動画再生部324が、モード選択部361、再開時点指定部362、及び終了時点指定部363への入力に基づいて、1以上のバーチャルローカル機器2vの動作の動画を動画ウィンドウ351に表示させる。
【0186】
ステップS81において再シミュレーション指示ボタン366が操作されたと判定した場合、データ管理装置300は処理をステップS71に戻す。これにより、シミュレーション条件指定画面370が再度表示される。
【0187】
ステップS78において動作再開指示ボタン365が操作されたと判定した場合、データ管理装置300はステップS84を実行する。ステップS84では、動作再開部326が、モード選択部361で選択された再生モードにて、再開時点指定部362で指定された再開時点以降、終了時点指定部363で指定された終了時点以前の動作指令に基づいて、1以上のローカル機器2の少なくとも一部の動作の再開指令を出力する。以上で再開シミュレーション手順が完了する。
【0188】
(上位コントローラによる動作の再開手順)
図26に示すように、上位コントローラ200は、ステップS91,S92,S93,S94,S95,S96を順に実行する。ステップS91では、指令出力部216が、動作の再開指令を待機する。ステップS92では、指令出力部216が、再開対象の1以上のローカル機器2のローカルコントローラ100に、中断したタスクの再開指令を出力する。中断したタスクの再開指令を取得したローカルコントローラ100は、管轄ローカル機器2に中断したタスクを再開させる。
【0189】
ステップS93では、プロセス格納部214が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部215が記憶するリアル環境情報とに基づいて、指令出力部216が次タスクの実行指令を出力する。ステップS94では、環境更新部218が、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、環境センサ5の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。
【0190】
ステップS95では、進捗更新部217が、ステップS14において取得されたステータス情報が含むタスクの完了通知に応じて、プロセス格納部214の進捗情報を更新する。ステータス情報がタスクの完了通知を含んでいない場合、進捗情報は変更されない。ステップS96では、指令出力部216が、再開指令により指定された終了時点までの動作が完了したか否かを確認する。
【0191】
ステップS96において終了時点までの動作が完了していないと判定した場合、上位コントローラ200は処理をステップS93に戻す。以後、上記終了時点に到達するまで、動作を再開した1以上のローカル機器2の動作が継続される。ステップS96において終了時点までの動作が完了したと判定した場合、動作の再開手順が完了する。
【0192】
〔本実施形態の効果〕
以上に説明したように、制御システム3は、リアル空間において1以上のロボット2B,2Cを動作プログラムに基づいて動作させるコントローラ6と、バーチャル空間において、1以上のロボットにそれぞれ対応する1以上のバーチャルロボットを動作プログラムに基づいて動作させるバーチャルコントローラ7と、コントローラ6による1以上のロボット2B,2Cの動作を中断させる動作中断部219と、1以上のロボット2B,2Cの動作が中断したリアル空間の状態を、バーチャル空間に再現させる中断状態再現部321と、中断状態再現部321がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラ7により動作プログラムに基づいて1以上のバーチャルロボット2Bv,2Cvの動作を再開させる再開シミュレータ322と、を備える。
【0193】
1以上のロボットの動作が中断した後も、1以上のロボットは動作できる状態である場合、動作中断の必要性がなくなった時点で1以上のロボットの動作を直ちに再開させ、システムのダウンタイムを最小限に留めることが望ましい。しかしながら、1以上のロボットの動作が中断する際には、1以上のロボットの周辺環境に想定外の変化が生じている可能性がある。
【0194】
これに対し、本制御システム3によれば、1以上のロボット2B,2Cの動作が中断したリアル空間の状態をバーチャル空間に再現させた上で、そのバーチャル空間において1以上のバーチャルロボット2Bv,2Cvの動作を再開させることで、リアル空間において1以上のロボット2B,2Cの動作を再開させた場合のシミュレーションを容易に行うことができる。これにより、1以上のロボット2B,2Cの動作を再開させた場合に生じる事象を、実際の動作再開に先立って迅速に把握することができる。従って、システムの停止時における迅速な対処に有効である。
【0195】
制御システム3は、リアル空間の状態を表すリアル環境情報を格納する環境情報格納部215と、1以上のロボット2B,2Cの動作に応じて環境情報格納部215に格納されたリアル環境情報を更新する環境更新部218と、を更に備え、中断状態再現部321は、環境情報格納部215に格納されたリアル環境情報に基づいて、リアル空間の状態を、バーチャル空間に再現させてもよい。この場合、1以上のロボット2B,2Cの動作中に、環境情報格納部215のリアル環境情報をリアルタイムに更新しておくことで、1以上のロボット2B,2Cの動作が中断したリアル空間の状態を迅速にバーチャル空間に再現させることができる。
【0196】
制御システム3は、予め定められた評価条件に基づいて、再開シミュレータ322が再開させた1以上のバーチャルロボット2Bv,2Cvの動作を評価する再開評価部323を更に備えていてもよい。この場合、評価結果に基づくことで、1以上のロボット2B,2Cの動作を再開させた場合に生じる事象をより的確にユーザに把握させることができる。従って、システムの停止時における迅速な対処に更に有効である。
【0197】
制御システム3は、再開シミュレータ322が再開させた1以上のバーチャルロボット2Bv,2Cvの動作の動画を表示させる再開動画再生部324を更に備えていてもよい。この場合、1以上のバーチャルロボット2Bv,2Cvの動作の動画表示によって、1以上のロボット2B,2Cの動作を再開させた場合に生じる事象をより的確にユーザに把握させることができる。従って、システムの停止時における迅速な対処に更に有効である。
【0198】
1以上のロボット2B,2Cは複数のロボット2B,2Cを含み、1以上のバーチャルロボット2Bv,2Cvは複数のロボットに2B,2Cそれぞれ対応する複数のバーチャルロボット2Bv,2Cvを含み、動作中断部219は、複数のロボット2B,2Cのいずれかの異常を検知した場合に複数のロボット2B,2Cの動作を中断させ、再開シミュレータ322は、動作を中断した複数のロボット2B,2Cの動作可否情報を複数のロボット2B,2Cごとにコントローラ6から取得し、動作不可である1以上のロボット2B,2Cに対応する1以上のバーチャルロボット2Bv,2Cvを停止させた状態で、動作可である1以上のロボット2B,2Cに対応する1以上のバーチャルロボット2Bv,2Cvの動作を再開させ、再開評価部323は、動作不可である1以上のロボット2B,2Cに対応する1以上のバーチャルロボット2Bv,2Cvと、動作可である1以上のロボット2B,2Cに対応する1以上のバーチャルロボット2Bv,2Cvとの衝突の有無を評価してもよい。この場合、動作を再開させられないロボット2B,2Cも存在し得ることも踏まえた柔軟なシミュレーションを行うことができる。従って、システムの停止時における迅速な対処に更に有効である。
【0199】
制御システム3は、再開評価部323による評価結果に基づいて、動作プログラムに基づく1以上のロボット2B,2Cの動作の少なくとも一部をコントローラ6に再開させる動作再開部326を更に備えていてもよい。この場合、再開評価部323による評価結果に基づくことで、1以上のロボット2B,2Cの動作を適切に再開させることができる。
【0200】
制御システム3は、再開評価部323による評価結果と、再開指示入力部360とを含む再開指示画面350を表示させる再開指示取得部325を更に備え、動作再開部326は、再開指示画面350における再開指示入力部360への操作に基づいて、動作プログラムに基づく1以上のロボット2B,2Cの動作をコントローラ6に再開させてもよい。この場合、再開評価部323による評価結果と、当該評価結果に基づくユーザ判断とに基づくことで、1以上のロボット2B,2Cの動作をより適切に再開させることができる。
【0201】
動作プログラムは時系列の複数の動作指令を含み、動作プログラムに基づく1以上のロボット2B,2Cの動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて1以上のロボット2B,2Cの少なくとも一部を動作させる第1モードの再開と、動作の中断時点より前の動作指令に基づいて1以上のロボット2B,2Cの少なくとも一部を動作させる第2モードの再開とを含み、再開シミュレータ322は、第1モード及び第2モードを含む複数の再開モードごとに、バーチャルコントローラ7により動作プログラムに基づいて1以上のバーチャルロボット2Bv,2Cvの動作を再開させ、再開評価部323は、複数の再開モードごとに1以上のバーチャルロボット2Bv,2Cvの動作を評価し、再開指示取得部325は、再開評価部323による複数の再開モードごとの評価結果と、複数の再開モードのいずれかを選択可能な再開指示入力部360とを含む再開指示画面350を表示させ、動作再開部326は、再開指示入力部360において選択された再開モードにて、動作プログラムに基づく1以上のロボット2B,2Cの動作をコントローラ6に再開させてもよい。この場合、複数の再開モードのそれぞれに対するシミュレーション結果に基づいて、複数の再開モードのいずれかの適切な選択を促すことができる。従って、1以上のロボット2B,2Cの動作をより適切に再開させることができる。
【0202】
動作プログラムは時系列の複数の動作指令を含み、動作プログラムに基づく1以上のロボット2B,2Cの動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて1以上のロボット2B,2Cの少なくとも一部を動作させる第1モードの再開と、動作の中断時点より前の動作指令に基づいて1以上のロボット2B,2Cの少なくとも一部を動作させる第2モードの再開とを含み、制御システム3は、第1モード及び第2モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面370を表示させるシミュレーション条件取得部327を更に備え、再開シミュレータ322は、シミュレーション条件指定画面370において選択された再開モードにて、バーチャルコントローラ7により1以上のバーチャルロボット2Bv,2Cvの動作を再開させてもよい。この場合も、再開モードごとのシミュレーション結果に基づいて、複数の再開モードのいずれかの適切な選択を促すことができる。また、ユーザによるモード選択の後に、選択された再開モードのシミュレーションを行うことで、シミュレーション結果をより迅速に提示することができる。
【0203】
動作プログラムは時系列の複数の動作指令を含み、再開シミュレータ322は、動作の中断時点以降の動作指令に基づいて、バーチャルコントローラ7により1以上のバーチャルロボット2Bv,2Cvの動作を再開させてもよい。この場合、シミュレーションを容易に実行することができる。
【0204】
制御システム3は、動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面370を表示させるシミュレーション条件取得部327を更に備え、再開シミュレータ322は、指定されたシミュレーション開始時点以降の動作指令に基づいて、バーチャルコントローラ7により1以上のバーチャルロボット2Bv,2Cvの動作を再開させてもよい。この場合、ユーザが動作再開時点の調節を望む場合にも対応した柔軟なシミュレーションを行うことができる。
【0205】
制御システム3は、動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面370を表示させるシミュレーション条件取得部327を更に備え、再開シミュレータ322は、指定されたシミュレーション終了時点以前の動作指令に基づいて、バーチャルコントローラ7により1以上のバーチャルロボット2Bv,2Cvの動作を再開させてもよい。この場合、ユーザが再開後の動作終了時点の調節を望む場合にも対応した柔軟なシミュレーションを行うことができる。
【0206】
再開評価部323は、1以上のバーチャルロボット2Bv,2Cvの動作に基づいて、動作プログラムに基づく1以上のロボット2B,2Cの動作を再開した後における動作可能期間を1以上のロボット2B,2Cごとに算出し、再開指示取得部325は、1以上のロボット2B,2Cごとの動作可能期間と、再開時点を指定可能な再開指示入力部360とを含む再開指示画面を表示させ、動作再開部326は、指定された再開時点以降の動作指令に基づいて、コントローラ6により1以上のロボット2B,2Cの動作の少なくとも一部を再開させてもよい。この場合、動作可能期間と、再開時点を指定可能な再開指示入力部とを提示することで、再開時点の適切な入力を促すことができる。
【0207】
再開評価部323は、1以上のバーチャルロボット2Bv,2Cvの動作に基づいて、動作プログラムに基づく1以上のロボット2B,2Cの動作を再開した後における動作可能期間を1以上のロボット2B,2Cごとに算出し、再開指示取得部325は、1以上のロボット2B,2Cごとの動作可能期間と、終了時点を指定可能な再開指示入力部360とを含む再開指示画面350を表示させ、動作再開部326は、指定された終了時点以前の動作指令に基づいて、コントローラ6により1以上のロボット2B,2Cの動作の少なくとも一部を再開させてもよい。この場合、動作可能期間と、終了時点を指定可能な再開指示入力部360とを提示することで、終了点の適切な入力を促すことができる。
【0208】
制御システム3は、1以上のロボット2B,2Cの他の機械を制御する第2コントローラが、1以上のロボット2B,2Cの動作の中断後に他の機械をどのように動作させるかを示す周辺挙動情報を記憶する周辺情報記憶部328を更に備え、再開評価部323は、周辺挙動情報に更に基づいて、1以上のバーチャルロボット2Bv、2Cvの動作を評価してもよい。この場合、他の機械の動作も踏まえたより適切なシミュレーションが可能となる。
【0209】
制御システム3は、リアル空間の状態を検出する環境センサ5を更に備え、中断状態再現部321は、環境センサ5による検出結果に基づいて、1以上のロボット2B,2Cの動作が中断したリアル空間の状態をバーチャル空間に再現させてもよい。この場合、リアル空間をより高い精度でバーチャル空間に再現させることで、より適切なシミュレーションが可能となる。
【0210】
中断状態再現部321は、コントローラ6が保持する1以上のロボット2B,2Cの状態情報に更に基づいて、1以上のロボット2B,2Cの動作が中断したリアル空間の状態をバーチャル空間に再現させてもよい。この場合、リアル空間をより高い精度でバーチャル空間に再現させることで、より適切なシミュレーションが可能となる。
【0211】
動作中断部219は、動作プログラムに基づき1以上のロボット2B,2Cが動作している最中におけるリアル空間の状態と、動作プログラムに基づき1以上のバーチャルロボット2Bv,2Cvが動作している最中におけるバーチャル空間の状態とに差異が生じた場合に、コントローラ6による1以上のロボット2B,2Cの動作を中断させてもよい。この場合、リアル空間のリアル環境情報と、バーチャル空間のバーチャル環境情報との比較によって、リアル空間における異常発生に対して1以上のロボット2B,2Cの動作を迅速に中断させることができる。
【0212】
制御システム3は、バーチャルコントローラ7により、動作プログラムに基づいて1以上のバーチャルロボット2Bv,2Cvを動作させることと、1以上のバーチャルロボット2Bv,2Cvの動作中におけるバーチャル空間の状態とに基づいて動作プログラムを修正することと、を繰り返すプログラム生成部332を更に備え、コントローラ6は、プログラム生成部332により修正された動作プログラムに基づいて1以上のロボット2B,2Cを動作させてもよい。この場合、バーチャルロボット2Bv,2Cv及びバーチャルコントローラ7によるシミュレーションを、動作プログラムの修正にも有効活用することができる。
【0213】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【0214】
1…生産システム(ロボットシステム)、2B,2C,10…ロボット、2Bv,2Cv…バーチャルロボット、3…制御システム、5…環境センサ、6…コントローラ、7…バーチャルコントローラ、215…環境情報格納部、218…環境更新部、219…動作中断部、321…中断状態再現部、322…再開シミュレータ、323…再開評価部、324…再開動画再生部、325…再開指示取得部、326…動作再開部、327…シミュレーション条件取得部、328…周辺情報記憶部、332…プログラム生成部、350…再開指示画面、360…再開指示入力部、370…シミュレーション条件指定画面。