(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-20
(45)【発行日】2023-11-29
(54)【発明の名称】シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20231121BHJP
G05B 19/05 20060101ALI20231121BHJP
【FI】
B25J9/22 A
G05B19/05 Z
(21)【出願番号】P 2019168020
(22)【出願日】2019-09-17
【審査請求日】2022-07-07
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】岩村 慎太郎
【審査官】仁木 学
(56)【参考文献】
【文献】特開2019-081242(JP,A)
【文献】特開2006-099310(JP,A)
【文献】国際公開第2016/193781(WO,A1)
【文献】特開2013-191128(JP,A)
【文献】特開2018-103339(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
機器の挙動を算出するシミュレーション装置であって、
付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出部と、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2の挙動算出部と、
第3の機器に対応する前記仮想空間に配置された第3の対象の挙動を算出する第3の挙動算出部と、
前記仮想空間をビジュアル化した画像を生成する画像生成部を、備え、
前記第2の機器は、前記付属機器を含み、
タイムステップにおいて、
前記第3の挙動算出部が前記第3の機器に対応する前記第3の対象の挙動を算出したあと、前記第1の挙動算出部が
当該算出された前記第3の対象の挙動に応じた動作指令に基づき前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動を算出し
、前記第2の挙動算出部が当該算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動を算出する、シミュレーション装置。
【請求項2】
前記仮想空間における対象の挙動は、前記仮想空間における当該対象の位置を含み、
前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出する、請求項1に記載のシミュレーション装置。
【請求項3】
前記第2の挙動算出部は、前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出する、請求項1に記載のシミュレーション装置。
【請求項4】
前記仮想空間は、ワールド座標系を有し、
前記タイムステップにおいて、前記第1の挙動算出部、前記第2の挙動算出部および前記第3の挙動算出部は、それぞれ、前記第1の対象の挙動のデータ、前記第2の対象の挙動のデータおよび前記第3の対象の挙動のデータを、前記ワールド座標系を介して遣り取りし、
前記挙動のデータは、前記ワールド座標系における対象の位置を含む、請求項1から3のいずれか1項に記載のシミュレーション装置。
【請求項5】
前記第2の挙動算出部は、物理シミュレータを含み、
前記第1の機器は、ロボットを含み、
前記第1の挙動算出部は、前記ロボットにワークを操作させる指令コードを有したロボットプログラムのエミュレーションを実行し、
前記第1の挙動算出部によって算出される前記第1の対象の挙動は、前記仮想空間における前記第1の対象の位置を含み、
前記物理シミュレータは、前記第1の挙動算出部によって算出される前記第1の対象の位置を用いた物理演算に従
い、前記第2の対象の挙動を算出する、請求項
1から4のいずれか1項に記載のシミュレーション装置。
【請求項6】
前記物理シミュレータは、前記第2の対象に対する力の発生を無効化して前記物理演算を実施する、請求項
5に記載のシミュレーション装置。
【請求項7】
前記付属機器に対応の前記第2の対象について算出された挙動は、前記仮想空間における当該第2の対象の位置を含み、
前記第2の挙動算出部は、さらに、
前記第2の対象の前記仮想空間における位置と、当該仮想空間における所定対象の位置とから両者の衝突を検出する、請求項1から
6のいずれか1項に記載のシミュレーション装置。
【請求項8】
コンピュータに機器の挙動を算出する方法を実行させるためのシミュレーションプログラムであって、
付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出ステップと、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2の挙動算出ステップと、
第3の機器に対応する前記仮想空間に配置された第3の対象の挙動を算出する第3の挙動算出ステップと、
前記仮想空間をビジュアル化した画像を生成する画像生成ステップを、備え、
前記第2の機器は、前記付属機器を含み、
タイムステップ
では、
前記第3の挙動算出ステップにおいて前記第3の機器に対応する前記第3の対象の挙動が算出されたあと、前記第1の挙動算出ステップにおいて
当該算出された第3の対象の挙動に応じた動作指令に基づき、前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動が算出
され、前記第2の挙動算出ステップにおいて当該算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動を算出
される、シミュレーションプログラム。
【請求項9】
前記仮想空間における対象の挙動は、前記仮想空間における当該対象の位置を含み、
前記シミュレーションプログラムは、
前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出するステップを、さらに備える、請求項8に記載のシミュレーションプログラム。
【請求項10】
前記第2の挙動算出ステップは、前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出するステップを含む、請求項8に記載のシミュレーションプログラム。
【請求項11】
前記仮想空間は、ワールド座標系を有し、
前記タイムステップにおいて、前記第1の挙動算出ステップ、前記第2の挙動算出ステップおよび第3の挙動算出ステップのそれぞれでは、前記第1の対象の挙動のデータ、前記第2の対象の挙動のデータおよび前記第3の対象の挙動のデータを、前記ワールド座標系を介して遣り取りし、
前記挙動のデータは、前記ワールド座標系における対象の位置を含む、請求項8から10のいずれか1項に記載のシミュレーションプログラム。
【請求項12】
機器の挙動を算出するシミュレーション方法であって、
付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1のステップと、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2のステップと、
第3の機器に対応する前記仮想空間に配置された第3の対象の挙動を算出する第3のステップと、
前記仮想空間をビジュアル化した画像を生成する画像生成ステップを、備え、
前記第2の機器は、前記付属機器を含み、
タイムステップ
では、
前記第3のステップにおいて前記第3の機器に対応する前記第3の対象の挙動が算出されたあと、前記第1のステップにおいて
当該算出された第3の対象の挙動に応じた動作指令に基づき、前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動
が算出
され、前記第2のステップにおいて、
当該算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動
が算出
される、シミュレーション方法。
【請求項13】
前記仮想空間における対象の挙動は、前記仮想空間における当該対象の位置を含み、
前記シミュレーション方法は、
前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出するステップを、さらに備える、請求項12に記載のシミュレーション方法。
【請求項14】
前記第2のステップは、前記仮想空間における前記第3の対象の位置と、前記第3の機器に関連した第4の機器に対応する当該仮想空間に配置された第4の対象の位置とから、両者の衝突を検出するステップを含む、請求項12に記載のシミュレーション方法。
【請求項15】
前記仮想空間は、ワールド座標系を有し、
前記タイムステップにおいて、前記第1のステップ、前記第2のステップおよび前記第3のステップのそれぞれでは、前記第1の対象の挙動のデータ、前記第2の対象の挙動のデータおよび前記第3の対象の挙動のデータを、前記ワールド座標系を介して遣り取りし、
前記挙動のデータは、前記ワールド座標系における対象の位置を含む、請求項12から14のいずれか1項に記載のシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想空間に配置されたロボットの挙動を推定できるシミュレーション装置、シミュレーションプログラムおよびシミュレーション方法に関する。
【背景技術】
【0002】
コンピュータを用いたシミュレーションは様々な技術分野に応用されている。このようなシミュレーションを用いることで、現実の装置が存在しない状態であっても、様々な事前検討が可能となる。このようなシミュレーションをFA(Factory Automation)に利用した例として、例えば、特開2016-042378号公報(特許文献1)は、仮想撮影部に対応する実空間の視覚センサを含めた機械システムの統合シミュレーションを開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【0004】
特許文献1に開示される統合シミュレーションでは、仮想空間における仮想ワークが、実空間のロボットに対応する仮想空間における仮想ロボットによってハンドリングされる。現実には、産業用ロボットの場合は、ロボットアームの先端に装着される付属機器(エンドエフェクタともいう)を、ワークまたは工程に応じた種類の機器に交換することで、ロボットの高い汎用性を実現している。特許文献1は、このようなロボットなどの機器に装着される付属機器を含めたシミュレーションについて何ら開示していない。
【0005】
本開示は、機器と、当該機器に装着される付属機器との挙動をシミュレーションできる構成を提供することである。
【課題を解決するための手段】
【0006】
本開示にかかるシミュレーション装置は、機器の挙動を算出するシミュレーション装置であって、付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出部と、第2の機器に対応する仮想空間における第2の対象の挙動を算出する第2の挙動算出部と、を、備え、第2の機器は、付属機器を含み、所定のタイムステップ毎に、当該タイムステップにおいて、第1の挙動算出部は付属機器が装着された第1の機器に対応する第1の対象の挙動を算出した後に、第2の挙動算出部が当該算出された第1の対象の挙動に基づき第1の機器に装着されている付属機器の挙動を算出する。
【0007】
上述の開示によれば、第1の機器と、これに装着される付属機器の両者の同一仮想空間における挙動を算出して、両者の挙動をシミュレーションできる。また、このシミュレーションは、共通したタイムステップにおいて実行されるので、両者の挙動を、同期をとりながらシミュレーションすることができる。
【0008】
上述の開示において、付属機器は、装着されることにより第1の機器にワークを操作する操作機能を付加する機器を含む。
【0009】
上述の開示によれば、付属機器として、第1の機器のワークの操作機能を提供するような機器について、その挙動をシミュレーションすることができる。
【0010】
上述の開示において、第2の挙動算出部は、物理シミュレータを含む。
上述の開示によれば、第1の挙動算出部に変更を加えずに、物理シミュレータを流用して第2の機器の挙動算出部を提供することができる。
【0011】
上述の開示において、第1の機器は、ロボットを含み、第1の挙動算出部は、ロボットにワークを操作させる指令コードを有したロボットプログラムのエミュレーションを実行する。
【0012】
上述の開示によれば、第1の挙動算出部を、ロボットの挙動を算出するために、当該ロボットを制御するロボットプログラムのエミュレータで実現することができる。
【0013】
上述の開示において、第1の挙動算出部によって算出される第1の対象の挙動は、仮想空間における第1の対象の位置を含み、物理シミュレータは、第1の挙動算出部によって算出される第1の対象の位置を用いた物理演算に従いに基づき、第2の対象の挙動を算出する。
【0014】
上述の開示によれば、第2の対象の挙動を、同一タイムステップにおいて物理シミュレータが物理演算で算出した第1の対象の挙動に基き算出することができる。
【0015】
上述の開示においては、物理シミュレータは、第2の対象に対する力の発生を無効化して物理演算を実施する。
【0016】
上述の開示によれば、物理シミュレータが物理演算により第2の対象の挙動を算出する場合に、当該物理演算では力の成分がゼロとされる。したがって、物理演算で第2の対象の挙動を算出するとしても、力の成分が影響しない値として算出することができる。
【0017】
上述の開示において、付属機器の第2の対象について算出された挙動は、仮想空間における当該第2の対象の位置を含み、第2の挙動算出部は、さらに、第2の対象の仮想空間における位置と、当該仮想空間における所定対象の位置とから両者の衝突を検出する。
【0018】
上述の開示によれば、第2の挙動算出部は、付属機器に対応する対象の、仮想空間における他の所定対象との衝突を検出することができる。
【0019】
上述の開示において、シミュレーション装置は、第3の機器に対応する仮想空間に配置された第3の対象の挙動を算出する第3の挙動算出部を、さらに備え、第3の機器は、第1の機器とデータを遣り取りしながら連携動作し、第1の機器と第3の機器が遣り取りするデータは、生産ラインに備えられる実機から取得する。
【0020】
上述の開示によれば、第1の機器とデータを遣り取りしながら連携動作する第3の機器に対応するオブジェクトの挙動を算出する場合に、このような遣り取りされるデータを、実機から取得することができる。これにより、生産ラインで稼働中の実機と連携させながら、第1の機器または第3の機器の挙動をシミュレーションすることができる。
【0021】
上述の開示において、付属機器は、第1の機器に取り付け可能なケーブルを含む。
上述の開示によれば、第1の機器の装着可能なケーブルに対応するオブジェクトの挙動を含むシミュレーションを実現できる。
【0022】
上述の開示において、仮想空間をビジュアル化した画像を生成する画像生成部を、さらに備える。
【0023】
上述の開示によれば、第1の機器および第2の機器を含むシミュレーション対象の挙動を仮想空間で可視化して再現することができる。
【0024】
本開示の他の局面によれば、コンピュータに機器の挙動を算出する方法を実行させるためのシミュレーションプログラムが提供される。シミュレーションプログラムは、付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出ステップと、第2の機器に対応する仮想空間における第2の対象の挙動を算出する第2の挙動算出ステップと、を、備え、第2の機器は、付属機器を含み、所定のタイムステップ毎に、当該タイムステップでは、第1の挙動算出ステップにおいて付属機器が装着された第1の機器に対応する第1の対象の挙動を算出した後に、第2の挙動算出ステップにおいて当該算出された第1の対象の挙動に基づき第1の機器に装着されている付属機器の挙動を算出する。
【0025】
上述の開示によれば、シミュレーションプログラムが実行されると、第1の機器と、これに装着される付属機器の両者の同一仮想空間における挙動を算出して、両者の挙動を再現(シミュレーション)できる。また、このシミュレーションは、共通したタイムステップにおいて実行されるので、両者の挙動を、同期をとりながらシミュレーションすることができる。
【0026】
本開示のさらなる他の局面によれば、機器の挙動を算出するシミュレーション方法が提供される。シミュレーション方法は、付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1のステップと、第2の機器に対応する仮想空間における第2の対象の挙動を算出する第2のステップと、を、備え、前記第2の機器は、付属機器を含み、所定のタイムステップ毎に、当該タイムステップでは、第1のステップにおいて付属機器が装着された第1の機器に対応する第1の対象の挙動を算出した後に、第2のステップにおいて、第1のステップにおいて算出された第1の対象の挙動に基づき第1の機器に装着されている付属機器の挙動を算出する。
【0027】
上述の開示のシミュレーション方法によれば、第1の機器と、これに装着される付属機器の両者の同一仮想空間における挙動を算出して、両者の挙動を再現(シミュレーション)できる。また、このシミュレーションは、共通したタイムステップにおいて実行されるので、両者の挙動を、同期をとりながらシミュレーションすることができる。
【発明の効果】
【0028】
本開示によれば、第1の機器と、これに装着される付属機器の両者の同一仮想空間においてシミュレーションできる。
【図面の簡単な説明】
【0029】
【
図1】本実施の形態に係るシミュレーション装置1の適用例を示す模式図である。
【
図2】本実施の形態に係るシミュレーションの対象となる機器の外観の一例を制御システムと関連づけて示す図である。
【
図3】本実施の形態にかかる制御システム2のユニット構成の一例を示す模式図である。
【
図4】本実施の形態に係るシミュレーション装置1を実現するためのハードウェア構成の一例を示す模式図である。
【
図5】本実施の形態に係るシミュレーション装置1を実現するための機能構成の一例を示す模式図である。
【
図6】本実施の形態にかかる物理シミュレータ156のシミュレーション対象を説明する図である。
【
図7】本実施の形態にかかるシミュレーション装置1の処理のシーケンスの一例を模式的に示す図である。
【
図8】本実施の形態にかかる表示の一例を示す図である。
【
図9】本実施の形態にかかるシミュレーション装置1と実機の組合せの一例を模式的に示す図である。
【
図10】本実施の形態にかかるロボット30に付属するケーブルのシミュレーションを説明する図である。
【発明を実施するための形態】
【0030】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0031】
本実施の形態に係るシミュレーション装置1は、FAに備えられる複数の機器を制御するシステムの挙動を推定するシミュレーション装置である。複数の機器は、限定されないが、PLC(プログラムブルロジックコントローラ)と協調して動作するロボットと、当該ロボットに装着されてロボットと連動する付属機器を含み得る。このような付属機器は、装着されることによりロボットにワークを操作する操作機能を付加する機器を含む。典型的には、例えばエンドエフェクタとしてロボットのアームに着脱自在のロボットハンドを含む。シミュレーション装置1は、限定されないが、例えば、ロボットハンドがワークを扱う「ピックアンドプレース」を実施するアプリケーションに適用可能である。「ワーク」としては、最終生成物あるいはその一部、または、中間生成物あるいはその一部など、その位置をトラッキング可能なものであれば、どのようなものであってもよい。なお、シミュレーション装置1は、例えば、ロボットハンドによりワークの組み立てを実施するアプリケーションにも適用することができる。
【0032】
「ピックアンドプレース」は、搬送されるワークが所定のトラッキングエリアまで到達すると、トラッキングエリア内のワークをロボットで把持して、所定エリアまで搬送し、所定エリアに配置するという、ロボットによる把持・搬送・配置の一連の動作を表す。
【0033】
ワーク搬送のための搬送部は、典型的にはコンベアであるが、これに限定されない。PLCは、コンベアを駆動するためのアクチュエータを制御する。アクチュエータとして、本実施の形態では、例えばサーボモータを例示する。
【0034】
図1は、本実施の形態に係るシミュレーション装置1の適用例を示す模式図である。
図1を参照して、シミュレーション装置1は、仮想空間および仮想空間に配置されたオブジェクトを規定する仮想空間情報105を含む。仮想空間における各オブジェクトの挙動が算出されることで、仮想空間情報105の内容は適宜更新される。
【0035】
シミュレーション装置1は、ワークの搬送部の仮想空間における挙動を算出するPLCシミュレータ152、当該仮想空間に配置されたロボットの挙動を算出するロボットエミュレータ160、主にロボットに装着されたロボットハンドの挙動を算出する物理シミュレータ156および3D(3-dimensional)ビジュアライザ164を含む。
【0036】
PLCシミュレータ152は、コンベアなど仮想空間におけるワークの搬送に関連する機器に対応する対象(以下、オブジェクトと称する)の挙動を算出するとともに、算出された挙動に応じた動作指令を出力する。ワークの搬送に関する機器として、限定されないが、コンベアの駆動機器を含む。コンベアベルトの搬送面上には、ワークを載置するためのトレイが載置される。これらワークの搬送にかかる機器は、第3の機器に相当し、このようなワークの搬送にかかる機器に対応する仮想空間に配置されたオブジェクトは、第3の対象に相当し、PLCシミュレータ152は、第3の挙動算出部に相当する。
【0037】
ロボットエミュレータ160は、PLCシミュレータ152から出力され上記の動作指令に基づいて、ワークを扱うロボットに対応する仮想空間におけるオブジェクトの挙動を算出する。ロボットは第1の機器に相当し、ロボットに対応のオブジェクトは第1の対象に相当し、ロボットエミュレータ160は第1の挙動算出部に相当する。
【0038】
物理シミュレータ156は、PLCシミュレータ152およびロボットエミュレータ160によって算出された仮想空間におけるオブジェクトの挙動に基づき、ロボットに装着されたロボットハンドに対応する仮想空間におけるオブジェクトの挙動を算出する。ロボットのハンドは第2機器に相当し、ロボットハンドに対応のオブジェクトは第2の対象に相当し、物理シミュレータ156は第2の挙動算出部に相当する。
【0039】
3Dビジュアライザ164は、オブジェクトが配置される仮想空間をビジュアル化(視覚化)した画像を生成する。本実施の形態では、3Dビジュアライザ164は、例えば3次元仮想空間において、各オブジェクトを仮想空間情報105に基づきディスプレイに表示するための画像を生成する。3Dビジュアライザ164は、画像生成部に相当する。
【0040】
シミュレーション装置1は、例えばユーザが設定した所定のタイムステップ毎に、第1の挙動算出部(ロボットエミュレータ160)がロボットに対応の仮想空間に配置されたオブジェクトの挙動を算出し、その後、第2の挙動算出部(物理シミュレータ156)が当該算出されたロボットの挙動に基づき、当該ロボットに装着されるロボットハンドに対応の当該仮想空間におけるオブジェクトの挙動を算出する。これにより、仮想空間におけるロボット自体の挙動と、当該ロボットに装着されるロボットハンドの当該仮想空間における挙動とを推定することができる。また、あるタイムステップにおいて、ロボットに対応の仮想空間におけるオブジェクトの挙動が算出されるとともに、算出された当該挙動に基づきロボットハンドに対応の当該仮想空におけるオブジェクトの挙動が算出される。
【0041】
シミュレーション装置1は、これらのコンポーネントおよびモジュールが互いに連携させることで、現実のシステムが存在しなくても、現実のシステムで、第1の機器と、第1の機器に装着される第2の機器を、ワークを処理したときに生じるであろう各機器の挙動を推定できる。
【0042】
図1によれば、タイムステップにおいて、物理シミュレータ156とロボットエミュレータ160が同期するので、シミュレーションを実行するたびに算出される挙動は同期させることが可能となり、シミュレーションにより正確なタクトタイムの見積もりができる。
【0043】
<B.対象システムの例>
シミュレーション装置1は、生産ラインに備えられる制御システム2が制御する実機である機器の挙動を推定する。このように挙動の推定がなされる対象の機器として、実施の形態では、可動のコンベア230とロボット30を例示するが、対象の機械はこれらに限定されない。ロボッと30は、アームの先端に、コネクタ7を介してロボットハンド210が脱着自在に装着される。ロボットハンド210は、例えば平行ハンド、多指ハンド、多指関節ハンドなどの複数種類を含む。ロボットハンド210の種類は、これに限定されず、例えば吸着式によりワーク232をピックおよびプレースする種類も含み得る。ロボット30には、ワーク232または工程に応じた種類のロボットハンド210が装着される。
【0044】
ロボット30は、コンベア230上のトレイ9に載置されたワーク232をロボットハンド210によりピックし、ピックしたまま所定位置のテーブル55までワーク232を移動させてテーブル55上に置く(プレースする)。ロボットハンド210は、後述するロボットコントローラ310からの制御指令に従い、ワーク232をピックまたはプレースするためのハンドの開閉動作が制御される。
【0045】
制御システム2は、さらに、コンベア230に関連して光電センサ6および開閉可能なストッパ8を備える。光電センサ6は、コンベア230の搬送面上に備えられるトレイ9が所定のワークトラッキングエリアの前に到達したことを検出する。ストッパ8は、トラッキングエリア内に到達したトレイ9を停止(固定)させるように閉動作する。シミュレーション装置1は、これら実機に備えられる機器のシミュレーションを実施する。
【0046】
図2は、本実施の形態に係るシミュレーションの対象となる機器の外観の一例を制御システムと関連づけて示す図である。
図2を参照して、制御システム2は、情報処理装置100、PLC200、ロボット30を制御するロボットコントローラ310およびサーボモータドライバ531,532を含む。情報処理装置100は、たとえば、PC(Personal Computer)、タブレット端末などの端末装置を含む。サーボモータドライバ531,532は、対応するサーボモータ41,42を駆動する。
【0047】
PLC200には、ネットワーク80を介して情報処理装置100が接続されている。ネットワーク80には、有線または無線の任意の通信手段が採用され得る。PLC200および情報処理装置100は、例えばUSB(Universal Serial Bus)に従い通信する。情報処理装置100は、制御システム2の挙動をシミュレーションするシミュレーション環境と、ロボット30および搬送に関連する機械を制御するための制御プログラムを設計する環境などを提供する。制御プログラムは、シミュレーションの結果を用いて設計されてもよい。情報処理装置100上で設計された制御プログラムは、フィールドネットワークを介してPLC200に送られる。
【0048】
PLC200は、設計された制御プログラムを実行し、実行の結果に従ってロボットコントローラ310またはサーボモータドライバ531,532に対してそれぞれ目標値を与えることで、ロボット30およびコンベア230の搬送に関連する機械などを制御する。
【0049】
PLC200には、ロボットコントローラ310およびサーボモータドライバ531,532が接続されている。PLC200、ロボットコントローラ310およびサーボモータドライバ531,532は、フィールドネットワーク22を介してデイジーチェーンで接続されている。フィールドネットワーク22には、たとえば、EtherCAT(登録商標)が採用される。但し、フィールドネットワーク22は、EtherCATに限定されない。
【0050】
同様に、サーボモータドライバ531,532は、コンベア230のサーボモータ41,42を駆動する。サーボモータ41,42の回転軸にはエンコーダ236,238が配置されている。当該エンコーダは、サーボモータ41,42のフィードバック値として、サーボモータの位置(回転角度)、回転速度、累積回転数などをPLC200へ出力する。
【0051】
ロボット30とコンベア230は、相互に連携しながらワーク232を移動させる。なお、ここでは説明を簡単にするために、ワーク232の移動を説明するが、移動に限定されない。例えば、トレイ9に載置されたワーク232のロボット30による加工であってもよい。
【0052】
図2では、ロボット30のドライブ装置の一例として、ロボット30に設けられるサーボモータ1301~1304(以下、「ロボットサーボモータ」とも総称する。)と、ロボットサーボモータを駆動するロボットコントローラ310を例示する。同様に、コンベア230のドライブ装置の一例として、コンベア230に設けられるサーボモータ41,42を駆動するサーボモータドライバ531,532を例示する。ロボット30は駆動されることにより、その挙動は、直交するX軸,Y軸およびZ軸の3次元空間内で変化する。コンベア230は駆動されることにより、その挙動はロボット30と同じ3次元空間内において規定されるが、X軸およびY軸の平面内において規定される。
【0053】
ドライブ装置としては、サーボドライバに限定されることなく、被駆動装置であるモータに応じて、対応するドライブ装置が採用される。たとえば、誘導モータまたは同期モータを駆動する場合には、ドライブ装置として、インバータドライブなどが採用されてもよい。
【0054】
ロボットコントローラ310は、ロボット30のロボットサーボモータを駆動する。各ロボットサーボモータの回転軸にはエンコーダ(図示しない)が配置されている。当該エンコーダは、ロボットサーボモータのフィードバック値として、サーボモータの位置(回転角度)、回転速度、累積回転数などをロボットコントローラ310へ出力する。
【0055】
<C.制御と仮想空間の位置>
図2を参照して、制御システム2におけるロボット30とコンベア230の制御について説明する。ロボット30とコンベア230は、上記に述べたように、複数の駆動軸により移動可能な可動部を有する。これらの各駆動軸は、サーボモータによって駆動される。具体的には、ロボット30は、ロボットサーボモータ(サーボモータ1301~1304)が回転することで駆動される複数のアームを有している。ロボットサーボモータは、それぞれ回転することで、対応する各アームを駆動する。ロボットコントローラ310がロボットサーボモータの駆動を制御することで、各アームが3次元に駆動される。このような各アームの駆動により、ロボット30の挙動が実現される。同様に、コンベア230も、サーボモータ41,42が回転することでコンベア230および搬送面上のトレイ9が移動する。この移動量(移動の速度、向き、距離など)は、サーボモータ41,42の回転量(回転の向き、角度)により決まる。このようなサーボモータ41,42の駆動により、コンベア230およびトレイ9などの機器の挙動が実現される。
【0056】
実施の形態では、ロボット30の各アームは、仮想的な軸が対応付けられ、各軸の位置からロボット30の位置が決まる。制御システム2は、ロボット30の各軸の時系列に変換する目標位置に従い制御し、これにより、各アームの移動の速度および軌道は、目標に従う速度および軌道となるように変化する。
【0057】
ロボット30の目標位置は、例えばPLC200に予め格納されている。ロボットコントローラ310は、PLC200から目標位置を受信し、受信した目標位置に基づき各ロボットサーボモータの回転量を決定し、決定した回転量を指定する指令値を、各ロボットサーボモータに対し出力する。
【0058】
(c1.3次元仮想空間の座標系)
本実施の形態にかかるロボット30の各アームに相当する軸の3次元仮想空間における位置を算出する過程の一例を説明する。本実施の形態では、3次元仮想空間における座標系をロボット30およびPLC200などの各部が共通して備えるワールド座標系を例示する。ワールド座標系における位置を算出する際に、本実施の形態では、サーボモータ1301の回転量をαA、サーボモータ1302の回転量をαB、サーボモータ1303の回転量をαCおよびサーボモータ1304の回転量をαDとして示す。サーボモータ回転量(αA、αB、αC、αD)に対し、所定関数を用いて演算を施すことで、サーボモータ回転量(αA、αB、αC、αD)をxyzの3次元仮想空間における位置に変換することができる。
図2では、例えばワーク232をピックするアームの軸の3次元仮想空間に対応したワールド座標系における位置である3次元座標P(x、y、z)を示すが、他の軸の対応する3次元座標も同様に算出することができる。たがって、各アームの3次元座標P(x、y、z)の時系列の変化によりロボット30の3次元仮想空間における挙動を示すことができる。
【0059】
また、実施の形態では、説明を簡単にするために、ワーク232をピックするアームの軸の3次元座標P(x、y、z)を、後述する3次元仮想空間における「衝突」を検出するためのロボットハンド210に対応したオブジェクトの位置を算出するために用いる。なお、このような「衝突」の検出には、他の軸の3次元座標P(x、y、z)を用いてもよく、または2つ以上の軸の3次元座標P(x、y、z)の組合せを用いてもよい。
【0060】
コンベア230も、ロボット30と同様に、コンベア230の挙動が目標挙動を示すように、コンベア230の移動の速度および軌道は目標位置を示すように時系列に変化する。コンベア230の目標位置は、PLC200に予め格納されている。
【0061】
サーボモータドライバ531,532は、PLC200からの目標位置に基づきサーボモータ41,42の回転量を決定し、決定した回転量を指定する指令値を、サーボモータ41,42に対し出力する。このようなサーボモータ41,42の回転量に対し、所定関数を用いて演算を施すことで、コンベア230についても、ロボット30と同じ3次元仮想空間に対応するワールド座標系における3次元座標Q(x、y、0)に変換することができる。このような3次元座標Q(x、y、0)の時系列の変化によりコンベア230の3次元仮想空間における挙動を示すことができる。本実施の形態では、コンベア230の3次元仮想空間における位置から、コンベア230の搬送面上に載置されたトレイ9の位置と、トレイ9に配置されたワーク232の位置が決まる。
【0062】
なお、ここでは、コンベア230は平面内の挙動を示すことから、3次元座標Qのz軸は値0で固定としているが、他の固定値であってもよい。
【0063】
(c2.時刻同期の制御)
図2を参照して、制御システム2における時刻同期を説明する。制御システム2において、フィールドネットワーク22に接続される複数の機器、すなわちPLC100、ロボットコントローラ310、サーボモータドライバ531,532およびロボットハンド210は、互いに時刻同期されたタイマ90~94をそれぞれ有し、機器の間では、これらタイマに基き動作することで、制御指令を含むデータの送受信タイミングが同期されている。このタイマは、同期してインクリメントまたはデクリメントされるカウンタに相当する。
【0064】
なお、本実施の形態では「タイミング」は何らかの事象が生じる時期、時間または時刻の概念を表す。また、「時刻同期」とはお互いの装置が有するタイマ,時間データ等を同期させることを示す。
【0065】
<D.制御システムの全体構成>
図3は、本実施の形態にかかる制御システム2のユニット構成の一例を示す模式図である。
図3には、
図2の構成を備える制御システム2の全体的な構成が示される。
【0066】
図3を参照して、制御システム2は、PLC200と、PLC200とフィールドネットワーク22を介して接続されるサーボモータドライバ531,532およびリモートIOターミナル5と、ロボットコントローラ310と、フィールドに設けられたIOデバイスである例えば、光電センサ6、ストッパ8が備える近接センサ87およびエンコーダ236、238を含む。
【0067】
PLC200は、主たる演算処理を実行する演算ユニット13、1つ以上のIOユニット14および特殊ユニット17を含む。これらのユニットは、システムバス81を介して、データを互いに遣り取りできるように構成されるとともに、電源ユニット12から電源が供給される。演算ユニット13には、シミュレーション装置1が接続される。
【0068】
IOユニット14は、光電センサ6、ストッパ8の近接センサ87、エンコーダ236,238などを含むIOデバイスから検出値61、71および237および239を収集する。近接サンサ87は、ストッパ8に対するトレイ9が所定距離まで接近したことを非接触で検出する。各IOデバイスからの検出値は、例えばIOユニット14が備えるメモリの対応ビットに設定(書込)される。演算ユニット13は、IOユニット14により収集された値を用いて制御プログラムの演算を実行し、演算結果の値をIOユニット14の対応のビットに設定(書込)する。周辺機器またはIOデバイスは、IOユニット14の各ビットの値を参照して動作する。このように、PLC200は、IOユニット14を介してIOデバイスおよび周辺機器と相互にデータを遣り取りしながら、制御対象であるロボット30またはコンベア230を制御することができる。
【0069】
特殊ユニット17は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
【0070】
フィールドネットワーク22は、ロボットコントローラ310、サーボモータドライバ531,532、およびリモートIOターミナル5が接続されてもよい。いる。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク22でのデータ伝送にかかる処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
【0071】
サーボモータドライバ531,532は、フィールドネットワーク22を介して演算ユニット13と接続されるとともに、演算ユニット13からの指令値に従ってサーボモータ41,42を駆動する。具体的には、サーボモータドライバ531,532は、PLC200からタイマ90に同期した制御周期などの一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。演算ユニット13は、これら指令値を、エンコーダ236,238からの検出値237,239に基き生成する。
【0072】
演算ユニット13は、上記に述べたIOデバイスからの検出値を参照して、所定の制御プログラムを実行することで、ロボット30にピックアンドプレースを実施させる。具体的には、演算ユニット13は、光電センサ6の検出値61および近接センサ87の検出値71からワーク232が、所定のトラッキングエリアに接近したことを検出すると、ピックアンドプレースを実施させるロボットアームのための制御指令211と、ロボットハンド210のための制御指令222を生成し、ロボットコントローラ310を介してロボット30に出力する。制御指令211を生成する際には、上記に述べたIOデバイスからの検出値61,71に加えて、ロボット30の状態値を参照する。
【0073】
<E.ハードウェア構成>
次に、本実施の形態に係るシミュレーション装置1のハードウェア構成の一例について説明する。
【0074】
図4は、本実施の形態に係るシミュレーション装置1を実現するためのハードウェア構成の一例を示す模式図である。シミュレーション装置1は、
図4に示すような情報処理装置100が必要なプログラムを実行することで実現される。
【0075】
情報処理装置100は、主たるコンポーネントとして、オペレーティングシステム(OS:Operating System)および後述するような各種プログラムを実行するプロセッサ102と、プロセッサ102でのプログラム実行に必要なデータを格納するための作業領域を提供する主メモリ104と、キーボードやマウスなどのユーザ操作を受付ける操作ユニット106(操作受付部)と、ディスプレイ109、各種インジケータ、プリンタなどの処理結果を出力する出力ユニット108と、ネットワーク80を含む各種ネットワークに接続されるネットワークインターフェイス110と、光学ドライブ112と、外部装置と通信するローカル通信インターフェイス116と、ストレージ111とを含む。これらのコンポーネントは、内部バス118などを介してデータ通信可能に接続される。
【0076】
情報処理装置100は、光学ドライブ112を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体(例えば、DVD(Digital Versatile Disc)など)を含むコンピュータ読取可能な記録媒体114から、各種プログラムを読取ってストレージ111などにインストールする。
【0077】
情報処理装置100で実行される各種プログラムは、コンピュータ読取可能な記録媒体114を介してインストールされてもよいが、ネットワーク上の図示しないサーバ装置などからネットワークインターフェイス110を介してダウンロードする形でインストールするようにしてもよい。
【0078】
ストレージ111は、例えば、HDD(Hard Disk Drive)またはSSD(Flash Solid State Drive)などで構成され、プロセッサ102で実行されるプログラムを格納する。具体的には、ストレージ111は、本実施の形態に係るシミュレーションを実現するためのシミュレーションプログラムとして、仮想時刻生成プログラム120、中継プログラム121、物理シミュレーションプログラム122と、PLCシミュレーションプログラム126と、ロボットエミュレーションプログラム130と、統合プログラム134を格納する。ストレージ111は、さらに、仮想空間に配置されたオブジェクトを表示する画像を生成する画像処理プログラム136を格納する。
【0079】
仮想時刻生成プログラム120は、シミュレーションのための仮想時刻を生成する。シミュレーション装置1は、仮想時刻に基づき周期でシミュイレーションを実行する。
【0080】
物理シミュレーションプログラム122は、ワーク232の移動に関連して動作する機器に対応するオブジェクトの挙動を算出する。物理シミュレーションプログラム122により対応するオブジェクトの挙動が算出される機器は、例えば、ワーク232の搬送または移動に関連する光電センサ6、コンベア230、トレイ9、ストッパ8およびロボットハンド210を含む。物理シミュレーションプログラム122には、このような機器に対応したオブジェクトの挙動を規定するためのパラメータ、および、ワーク232の重さまたは形状などを規定するパラメータを含む、物理シミュレーションパラメータ124が与えられる。物理シミュレーションパラメータ124の値は、ユーザ操作または統合プログラム134などにより適宜変更されるようにしてもよい。
【0081】
物理シミュレーションパラメータ124として、ワーク232の搬送または移動に関連した機器およびワーク232のCAD(Computer Aided Design)データを用いてもよい。CADデータを用いることで、オブジェクトを用いて現実の機器の挙動をより正確に再現できる。
【0082】
PLCシミュレーションプログラム126は、物理シミュレーションプログラム122により対応のオブジェクトの挙動が算出される機器およびワーク232の位置を算出する。算出された位置は、物理シミュレーションプログラム122に与えられる。PLCシミュレーションプログラム126には、上記の位置を算出するために必要なパラメータを含むPLCパラメータ128が与えられる。
【0083】
ロボットエミュレーションプログラム130は、ロボット30の挙動をオブジェクトによって再現するシミュレータとして機能する。ロボットエミュレーションプログラム130は、物理シミュレーションプログラム122によって算出される結果(オブジェクトの挙動)に基づいて、ロボット30によるワーク232のピックアンドプレースを再現する。ロボットエミュレーションプログラム130には、ロボット30の挙動を対応するオブジェクトで再現するために必要なパラメータを含むロボットパラメータ132が与えられる。
【0084】
中継プログラム121は、物理シミュレーションプログラム122とロボットエミュレーションプログラム130とが互いのデータを遣り取りするための中継機能を提供する。中継プログラム121は、限定されないが、例えばスクリプトの命令で記述されている。
【0085】
統合プログラム134は、物理シミュレーションプログラム122と、PLCシミュレーションプログラム126と、ロボットエミュレーションプログラム130と、中継プログラム121とを互いに連携させるための処理を実行する。具体的には、統合プログラム134は、典型的には主メモリ104上に、仮想空間のオブジェクトの状態を記述する仮想空間情報105を生成および更新する。物理シミュレーションプログラム122、PLCシミュレーションプログラム126、および、ロボットエミュレーションプログラム130は、仮想空間情報105を参照(読出)して各シミュレーションの処理を実行するとともに、その実行結果のうち必要な情報を仮想空間情報105に反映する。統合プログラム134が提供する機能により、ワーク232を搬送する機器と、ピックアンドプレースによりワーク232を移動させるロボット30とを備える制御システム2における、機器の挙動および処理を再現する。
【0086】
画像処理プログラム136は、仮想空間情報105に基づきディスプレイ109に表示するための3Dビジュアライズデータ135が与えられる。3Dビジュアライズデータ135は、軌跡データ252と画像データ253を含む。画像データ253は、シミュレートされる機器に対応のオブジェクトを描画するためのデータを含み、軌跡データ252は、仮想空間情報105の各機器の位置に所定関数を用いて算出された3次元座標P(x,y,z)およびその時系列データを含む。画像処理プログラム136は、このような3Dビジュアライズデータ135を用いて、ワーク232,ワーク232の搬送に関連する機器およびロボット30、ロボット30に装着されたロボットハンド210に対象のオブジェクトの挙動を、3次元仮想空間内で立体的に描画するための画像データを生成し、ディスプレイ109に出力する。これにより、ディスプレイ109には、シミュレーションにより算出された挙動に従いオブジェクトが表示されて、制御システム2の機器の挙動が再現される。することができる。なお、画像データ253は、CADデータなどを含んでもよい。
【0087】
図4には、単一の情報処理装置100でシミュレーション装置1を実現する例を示したが、複数の情報処理装置を連係させてシミュレーション装置1を実現するようにしてもよい。この場合には、シミュレーション装置1を実現するために必要な処理の一部を情報処理装置100で実行させるとともに、残りの処理をネットワーク上のサーバ(クラウド)などで実行するようにしてもよい。
【0088】
図4には、プロセッサ102が1または複数のプログラムを実行することで、シミュレーション装置1が実現される例を示すが、シミュレーション装置1を実現するために必要な処理および機能の一部を、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)などを用いて実装するようにしてもよい。
【0089】
<F.機能構成>
次に、本実施の形態に係るシミュレーション装置1の機能構成の一例について説明する
図5は、本実施の形態に係るシミュレーション装置1を実現するための機能構成の一例を示す模式図である。
図5に示す機能は、典型的には、情報処理装置100のプロセッサ102がプログラム(仮想時刻生成プログラム120、中継プログラム121、物理シミュレーションプログラム122、PLCシミュレーションプログラム126、ロボットエミュレーションプログラム130、統合プログラム134および画像処理プログラム136など)を実行することで実現される。
【0090】
図5を参照して、シミュレーション装置1は、備える機能として、仮想空間情報管理モジュール150と、PLCシミュレータ152と、周期生成モジュール154と、物理シミュレータ156と、中継モジュール158と、ロボットエミュレータ160と、ビジュアライザ164とを含む。
【0091】
仮想空間情報管理モジュール150は、統合プログラム134(
図4)が実行されることで実現され、シミュレーションが実施される仮想空間の各オブジェクトの挙動(位置および姿勢など)の情報を規定する仮想空間情報105を管理する。
【0092】
PLCシミュレータ152は、PLCシミュレーションプログラム126(
図4)が実行されることで実現され、物理シミュレーションパラメータ124に従って、ワーク232の搬送に関連する機器に対応のオブジェクトの挙動を算出する。PLCシミュレータ152により算出される情報は、仮想空間情報105に反映される。
【0093】
PLCシミュレータ152は、ワーク232の搬送にかかる機器の挙動を推定するプログラムであって、PLCプログラムに含まれた複数の命令を含むシミュレーションプログラムに相当する。これら複数の命令は、PLCプログラムに含まれた搬送にかかる機器の挙動を制御するための命令群を含み得る。PLCプログラムは、例えばサイクリック実行型言語(例えば、ラダー言語)で記載されたプログラム言語)で記述される。
【0094】
PLCシミュレータ152のこれら命令は、仮想空間情報105のデータに基づき実行される毎に、例えばコンベア230のサーボモータ41,42を制御するための指令値が生成されて、仮想空間情報105に格納される。このような指令値は共有データ12A(
図1)として示される。
【0095】
ロボットエミュレータ160は、仮想空間に配置されたワーク232を移動させるロボット30の挙動を算出する。より具体的には、ロボットエミュレータ160は、ロボットエミュレーションプログラム130(
図4)が、ロボットパラメータ132に基づき実行されることで実現される。ロボットエミュレータ160により算出されるロボット30の挙動の情報は、仮想空間情報105に反映される。ロボットエミュレータ160は、ロボット30のアームおよびその先端に装着されたロボットハンド210を一体的な剛体とみなしてシミュレーションを実施する。
【0096】
具体的には、ロボットエミュレーションプログラム130は、ロボットコントローラ310のプログラムに含まれる命令群を含む。この命令群は、ロボット30にワーク232を操作させる指令コードを有したロボットプログラムの指令を含む。これら指令は、仮想空間情報105の共有データ12A(PLCシミュレータ152の出力データを含む)に基づき、ロボット30の目標の軌跡を算出し、算出された軌跡に基づき各軸の挙動を示す指令値など算出する命令などを含む。
【0097】
ロボットエミュレータ160の命令が、仮想空間情報105のデータ(PLCシミュレータ152からの出力データを含む)に基づき実行されると、ロボット30の各軸のための指令値が生成されて、仮想空間情報105にデータとして格納される。このような指令値は、共有データ12A(
図1)として示される。
【0098】
このように、PLCシミュレータ152とロボットエミュレータ160により生成される指令値は、ロボット30とコンベア230のワーク232の搬送にかかる機器(コンベア230のサーボモータ41,42など)の推定された挙動を示し得る。また、PLCシミュレータ152とロボットエミュレータ160は、仮想空間情報105の共有データ12Aを介して、それぞれ、他方が算出した指令値に基づき、新たな指令値を算出する。したがって、このように算出される指令値により推定されるサーボモータの挙動により、ロボット30とワーク232の搬送にかかる機器の相互の連携した動作が示され得る。
【0099】
ワーク挙動シミュレータ155は、仮想空間に配置された1または複数のワーク232のオブジェクトの挙動を算出する。具体的には、ワーク挙動シミュレータ155は、物理シミュレーションプログラム122(
図4)が実行されることで実現され、PLCシミュレータ152によるワーク232の搬送機器に対応するオブジェクトの挙動の情報に応じて、仮想空間に配置されるワーク232の挙動を算出して更新する。ワーク挙動シミュレータ155は、ワーク232の挙動を算出するにあたって、ワーク232の位置、姿勢、移動速度、移動方向などを算出する。ワーク232の位置および姿勢は、ユーザなどから任意に設定されるワークパラメータに基づいて算出される。ワーク挙動シミュレータ155により算出されるワーク232の位置および姿勢の情報は、仮想空間情報105に反映される。ワークパラメータは、物理シミュレーションパラメータ124に含めることもできる。
【0100】
物理シミュレータ156は、物理シミュレーションプログラム122(
図4)が実行されることで実現される。物理シミュレータ156は、物理シミュレーションパラメータ124に従い、ワーク232を搬送または移動させるための機器に対応するオブジェクトの挙動(位置、姿勢、移動速度、移動方向など)を算出するとともに、これらオブジェクトどうしの仮想空間における衝突を検出する。衝突の検出結果は、PLCシミュレータ152またはロボットエミュレータ160に出力される。
【0101】
物理シミュレータ156は、仮想空間において算出されたオブジェクトどうしの位置関係に基づき、オブジェクトどうしの衝突の有無を検出する。「衝突」は、例えば、仮想的空間におけるオブジェクトの座標Pと他のオブジェクトの座標Qとの両者の距離とが、例えば閾値以下の距離を含む特定距離であるとことを含む。または、座標Pと次位の座標Pを結ぶ軌跡が、対応の座標Qと次位の座標を結ぶ軌跡と交差したことを含む。閾値は、各オブジェクトのサイズ(幅、高さなど)に基づく値であって、例えば、閾値またはオブジェクトのサイズは物理シミュレーションパラメータ124に含まれ得る。なお、「衝突」を検出するための位置関係は、これらの位置関係に限定されない。
【0102】
図6は、本実施の形態にかかる物理シミュレータ156のシミュレーション対象を説明する図である。物理シミュレータ156が挙動を算出するとともに、衝突を検出するオブジェクトは、
図6に示されるように、光電センサ6、ストッパ8、トレイ9、ロボットハンド210、コンベア230およびワーク232を含む。物理シミュレータ156は、これらオブジェクトの位置、姿勢などの挙動を所定の物理演算に従い算出し、算出された位置などの挙動に基きオブジェクトの衝突を検出する。物理シミュレータ156は、この物理演算に用いるパラメータのうち、オブジェクトの質量のパラメータをゼロに設定して演算を実施する。
【0103】
質量をゼロにセットする意味は次の通りである。すなわち、質量のパラメータがゼロでない場合、物理シミュレータ156は物理演算により各オブジェクトについて、当該オブジェクトの質量に基づく速度、加速度および重力などのオブジェクトに対する力学的作用の成分を算出し、その算出された力学的作用の成分によって、物理シミュレータ156が次のタイムステップにおけるオブジェクトの位置を計算(更新)することになる。その一方で、本実施の形態では、PLCシミュレータ152およびロボットエミュレータ160が各オブジェクトの位置を決定(支配)することになる。したがって、物理シミュレータ156によるオブジェクトの位置の更新成分をゼロ(無効化)するために、物理シミュレータ156の物理演算に用いる各オブジェクトの質量のパラメータをゼロに設定する。
【0104】
物理演算により質量をゼロとして位置(挙動)が算出されたオブジェクトについては速度、加速度、重力などもゼロとなっているから、これらオブジェクトどうしが衝突した場合でも、物理演算では力学的成分(反発などのようなオブジェクトの跳ね返りなどの成分)はゼロ(無効化)と算出されるので、オブジェクトの衝突を、力学的作用が無効化されたオブジェクトの位置に基き検出することができる。
【0105】
ワークトラッキングモジュール162は、ロボットエミュレーションプログラム130が実行されることで実現され、ロボットエミュレータ160からのロボット30の挙動情報に基づいて、仮想空間においてロボット30によりピックアンドプレースされるワーク232をトラッキングする。ワークトラッキングモジュール162によりトラッキングされるワーク232の位置情報(ワーク位置)は、仮想空間情報105に反映される。
【0106】
3Dビジュアライザ164は、仮想空間を視覚化した画像を生成する画像生成部に相当する。3Dビジュアライザ164は、仮想空間情報管理モジュール150が管理する仮想空間情報105に基づいて、仮想空間の各オブジェクト(ワーク232、ワーク232の搬送に関連する機器、ロボット30、ロボットハンド210など)の挙動を視覚化する。
【0107】
周期生成モジュール154は、仮想時刻生成プログラム120が実行されることにより実現される。周期生成モジュール154は、プロセッサ102が有するタイマ(図示せず)の出力に基づき、タイマの出力に同期した信号STを他の各部に出力する。各部は、周期生成モジュール154から信号STが出力される周期(以下、所定のタイムステップという)に同期して処理またはプログラムを実行する。これにより、
図5の各部は、所定のタイムステップ毎に互いに同期して実行される。信号STの周期は、
図3の制御システム2のフィールドネットワーク22の通信周期(以下、「制御周期」ともいう。)に基き決定されてもよい。
【0108】
図5に示すような各機能が互いに連携することで、シミュレーション対象のシステム(例えば、制御システム2)の挙動を高精度に再現できる。
【0109】
<G.シミュレーション>
図7は、本実施の形態にかかるシミュレーション装置1の処理のシーケンスの一例を模式的に示す図である。
図7では、シミュレーション装置1の各部の処理が、周期生成モジュール154、PLCシミュレータ152、ロボットエミュレータ160、中継モジュール158および物理シミュレータ156の各部間で遣り取りされるデータまたは指令と関連付けて示される。これら各部間で遣り取りされるデータは、これら各部間で共有するワールド座標系の座標に対応した位置を含む。また、これら遣り取りされるデータまたは指令は、仮想空間情報105を介して遣り取りされるデータまたは指令を含み得るが、
図7では、説明のために、仮想空間情報105および仮想空間情報管理モジュール150の図示は略されている。
【0110】
図7を参照して、シミュレーション装置1は、物理シミュレーションパラメータ124のうち
図6に示されたワーク232およびワーク232の搬送または移動にかかる機器に対応のオブジェクトの質量パラメータをゼロに設定する(ステップT1)。その後、各部を起動させてステップT2以降の処理を開始する。ステップT2の処理は、周期生成モジュール154が出力する信号STに基づく所定のタイムステップ毎に、繰り返し実行される。3Dビジュアライザ164は、タイムステップよりも長い周期毎に、3D画像をディスプレイ109に描画するための画像を生成する処理(ステップT3)を実施する。これにより、シミュレーション装置1は、例えば、ステップT2の周期処理が複数回繰り返し実行された結果を示す仮想空間情報105および3Dビジュアライズデータ135に基づき、シミュレーション結果を示す3D画像を生成し、ディスプレイ109に表示させることができる。
【0111】
周期生成モジュール154は操作ユニット106を介してユーザから起動指令を受付けると起動されて、信号STの出力を開始する。これにより、ステップT2の周期処理が開始する。さらに、周期処理の開始時に、中継モジュール158は、物理シミュレータ156にオブジェクトの位置(座標)を、初期設定する指令を出力する(ステップS1)。物理シミュレータ156は、当該指令に従い各オブジェクトの位置(座標)を仮想空間情報105が有する初期位置に設定する。
【0112】
周期生成モジュール154は、周期処理(ステップT1)が開始されるとき、サーボモータの駆動の指令Tickを出力する(ステップS3)。PLCシミュレータ152は、周期生成モジュール154からの指令Tickに従いシミュレーションプログラムを実行し、ロボット30を待機させるための指令Tickを生成して出力する(ステップS5)とともに、光電センサ6の入力変数にONを設定する(ステップS9)。これにより、サーボモータ41,42が駆動されてコンベア230が移動し、コンベア230の位置が光電センサ6により検出されるという一連の挙動が算出される。
【0113】
PLCシミュレータ152は、さらに、コンベア230の移動に伴う搬送面上のトレイ9の位置を更新する(ステップS11)。物理シミュレータ156は、当該更新に応答して、衝突検出の演算処理を実施する(ステップS13)。具体的には、物理シミュレータ156は、ステップS1で設定されたトレイ9のオブジェクトの位置に、仮想空間情報105の更新後のトレイ9の位置を上書きして更新するとともに、更新後のトレイ9の位置と光電センサ6の位置に基づき、ワールド座標系における上述した衝突の有無を検出する(ステップS13)。ここでは、物理シミュレータ156は、トレイ9と光電センサ6のオブジェクトどうしの衝突を検出する。物理シミュレータ156は、トレイ9と光電センサ6の衝突を検出した旨を出力する(ステップS15)。
【0114】
PLCシミュレータ152は、物理シミュレータ156から出力された上記の衝突検出に応答して、トレイ9がストッパ8に近づくように、トレイ9の位置を更新(変更)し(ステップS19)、ストッパ8を閉じる(すなわち、ストッパ8の位置を更新する)指令を出力する(ステップS23)。
【0115】
物理シミュレータ156は、ステップS23の指令に応答して、衝突検出の演算処理を実施する(ステップS25)。具体的には、物理シミュレータ156は、ステップS1で設定されたストッパ8とトレイ9のオブジェクトの位置に、それぞれ、仮想空間情報105の更新後の位置を上書きして更新するとともに、更新後のトレイ9の位置とストッパ8の位置とに基づき、ワールド座標系における上述した衝突の有無を検出する(ステップS25)。ここでは、物理シミュレータ156は、トレイ9とストッパ8のオブジェクトどうしの衝突を検出する。物理シミュレータ156は、トレイ9とストッパ8の衝突を検出した旨を出力する(ステップS29)。
【0116】
PLCシミュレータ152は、物理シミュレータ156からの出力(トレイ9がストッパ8に衝突したことの検出)に応答して、ロボット30にワーク232の位置を設定する指令を出力する(ステップS33)。このワーク232の位置は、ステップS19における更新後のトレイ9の位置に基づいた位置を示す。
【0117】
中継モジュール158は、ステップS33でPLCシミュレータ152から出力された指令に応答して、物理シミュレータ156とロボットエミュレータ160との間で、ロボットハンド210でワーク232をピックする挙動を算出するためのデータの遣り取りを中継するための処理を開始する(ステップS35)。
【0118】
具体的には、中継モジュール158は、ロボットハンド210でワーク232をピックする指令を出力する(ステップS39)。ロボットエミュレータ160は、中継モジュール158から出力された当該指令に応答して、ロボットハンド210の位置を、ワーク232の位置に基づき更新する(ステップS43)。
【0119】
物理シミュレータ156は、更新されたロボットハンド210の位置とワーク232の位置とに基づき、衝突検出の演算を実行し(ステップS45)、演算結果に基づき、ロボットハンド210がワーク232に衝突したかを検出する。
【0120】
中継モジュール158は、物理シミュレータ156の出力に基づき、ロボットハンド210がワーク232と衝突したことを判断する(ステップS47)。判断に応答して、中継モジュール158は、仮想空間情報105におけるロボットハンド210とワーク232のオブジェクトの挙動に関連した情報をグルーピング(相互に関連付)する(ステップS49)。中継モジュール158は、その後、ロボットハンド210のハンドが閉じた状態を示す変数をONに設定する(ステップS53)。
【0121】
PLCシミュレータ152は、中継モジュール158がロボットハンド210のハンドの変数をONに設定したことに応じて、プレース場所(テーブル55の位置)まで、ピックしたままでワーク232を移動させることの指令を出力する(ステップS55)。テーブル55の位置は、ロボットエミュレータ160に設定されている。これにより、ステップT2の当該タイムステップにおける処理は終了する。
【0122】
ロボットエミュレータ160は、PLCシミュレータ152からの指令(ステップS55の指令)に応答して、ロボットハンド210とワーク232の位置を更新する指令を物理シミュレータ156に出力する(ステップS57)とともに、プレース完了の通知を中継モジュール158に出力する(ステップS61)。物理シミュレータ156は、ロボットエミュレータ160からの指令(ステップS57)に応答して、物理シミュレータ156が有するロボットハンド210とワーク232の位置を、プレースされた位置に対応するように更新する。
【0123】
その後は、次のタイムステップにおいて、ステップT2の処理が上記に述べた手順と同様に実行される。
【0124】
ステップT3では、3Dビジュアライザ164は、物理シミュレータ156から、物理シミュレータ156が算出したワーク232および各機器(
図5)の位置を取得し(ステップS73)、取得した位置と画像データ253が示す対応するオブジェクトのデータを含む3Dビジュアライズデータ135とに基づき、レンダリング(Render)処理を実施し(ステップS75)、ロボットエミュレータ160が算出したロボット30の挙動が示す位置を仮想空間情報105から取得する(ステップS77)。3Dビジュアライザ164は、レンダリング処理後のオブジェクトのデータとロボット30の位置とから、ディスプレイ109に描画する画像のデータを生成する。
【0125】
図6のシーケンスでは、物理シミュレータ156における衝突検出処理(ステップS13、S25およびS45)それぞれにおいて、衝突が検出されないときは、ステップT2における以下の処理をスキップしてもよい。
【0126】
これにより、シミュレーション装置1は、ロボットハンド210がワーク232と衝突したことが検出される(ステップS45)までのタイムステップをカウントすることにより、シミュレートされたPLCプログラムおよびロボットプログラムにより制御システム2(
図2)を駆動させた場合のタクトタイムを見積りことができる。
【0127】
また、ロボットハンド210の種類毎に、物理シミュレータ156が参照する物理シミュレーションパラメータ124を切り替えることにより、1個の物理シミュレータ156をロボット30に装着される複数種類のロボットハンド210に共用することができる。
【0128】
また、周期生成モジュール154からの信号STに基づき、PLCシミュレータ152、ロボットエミュレータ160、中継モジュール158および物理シミュレータ156を互いに時刻同期させることができるので、シミュレーションを繰り返し実行する場合に、各シミュレーションにおいて同じ衝突検出を再現することができる。
【0129】
また、
図6では、ロボットハンド210およびワーク232の位置は、物理シミュレータ156で算出されたが、これらの位置は、ロボットエミュレータ160で算出してもよい。また、ユーザは、これら位置をロボットエミュレータ160および物理シミュレータ156のいずれで算出するかを指定してもよい。
【0130】
<H.表示例>
図8は、本実施の形態にかかる表示の一例を示す図である。
図8では、例えば、ロボットハンド210がワーク232に衝突が検出された時点で、3Dビジュアライザ164の処理が開始されるケースを示している。
図7を参照して、3Dビジュアライザ164が生成した画像により、ディスプレイ109には領域1092に3D画像が描画される。
図7のディスプレイ109の領域1091には、シミュレーションされているプログラムの一部が表示されている。領域1092の3D画像では、ロボットハンド210がワーク232に衝突1093が検出(
図7のステップS45)された状態が示されている。
【0131】
<I.実機との組合せ>
図9は、本実施の形態にかかるシミュレーション装置1と実機の組合せの一例を模式的に示す図である。
図9によれば、実機に仮想の機器(PLC200またはロボット30)を組合せた場合の当該機器の挙動を算出することができる。具体的には、ロボット30とデータ(共有データ12A)を遣り取りしながら連携動作するPLC200について、シミュレーション装置1は、両者の少なくとも一方のデータの取得経路を、
図2のような生産ラインに備えられる実機とすることができる。
【0132】
図9では、シミュレーション装置1が搭載される情報処理装置100が実機の一例であるPLC200にネットワーク80を介して接続されたシーンが示される。具体的には、FAシステムのネットワーク220には、実機のPLC200は接続されているが、ロボット30は接続されていない。ロボット30の挙動は、実機のPLC200からのデータを用いて情報処理装置100のシミュレーション装置1によって算出される。
【0133】
図9では、シミュレーション装置1は、PLCシミュレータ152を起動せずに(PLCシミュレータ152に代えて)実機の稼働中のPLC200からワーク232の搬送にかかる機器への指令値などを示すデータを受信し、受信したデータを仮想空間情報105(共有データ12A)に設定する。これにより、シミュレーション装置1では、ロボットエミュレータ160と実機のPLC200との間で仮想空間情報105を介したデータの遣り取りをしながら、実機のPLC200と連携して動作するロボット30に対応するオブジェクトの挙動が推定されて、推定された挙動に基き物理シミュレータ156によって衝突が検出される。
【0134】
このようにシミュレーション装置1が実機と組合せられる場合、実機の動作速度にかかる制御周期は、一般的にシミュレーション装置1のタイムステップの周期よりも短いので、シミュレーション装置1はシミュレーションのタイムステップに整合するように実機の制御周期を調整する。
【0135】
なお、
図9では、実機のPLC200とロボットエミュレータ160の組合せであったが、これに限定されず、実機のロボット30とPLCシミュレータ152の組合せであってもよい。
【0136】
<J.ロボット30のケーブルのシミュレーション>
本実施の形態では、ロボット30の動作に伴うケーブルの挙動を算出(再現)するためのケーブルシミュレーションを提供することができる。本実施の形態では、ロボット30に付属するケーブルであってロボット30に装着可能なケーブルとそれに関連する機器の挙動をシミュレーションする。
【0137】
図10では、例えば多関節のロボット30におけるケーブルをガイドするロボットハンド210の位置、ならびびリング351,352および353の位置(ガイド位置ともいう)と、これら隣接するガイド位置どうしを接続するケーブル341,342および343が示される。シミュレーション装置1は、これらケーブルとロボット30の干渉、すなわちケーブルとロボット30(より特定的にはアーム)の衝突を検出する。このようなリング351,352および353ならびにケーブル341,342および343は、ロボット30に装着される付属機器の一例として扱うことができる。
【0138】
具体的には、ロボットエミュレータ160は、ロボット30の挙動を算出する場合に、ロボットハンド210の位置、ならびびリング351,352および353の位置(ガイド位置)を算出する。物理シミュレータ156は、ロボットエミュレータ160が算出したガイド位置を、質量をゼロとした物理演算によりロボットハンド210ならびにリング351,352および353の各位置を算出し、算出した各位置に基き、質量をゼロとしたケーブル341、342および342の挙動(位置、姿勢など)が所定関数を用いて算出される。物理シミュレータ156は、算出されたケーブル341、343および343の位置に基き衝突(他の部材(隣接するケーブルなど))を検出する。
【0139】
このようにシミュレーションによって、ケーブル341,342および343の衝突検出の結果に基き、現実のロボット30が存在しなくても、ケーブル341,342および343の長さ、取り付け位置(ガイド位置)の適否を検出することが可能になる。
【0140】
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
機器の挙動を算出するシミュレーション装置(1)であって、
付属機器(210)が装着された第1の機器(30)に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出部(160)と、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2の挙動算出部(158)と、を、備え、
前記第2の機器は、前記付属機器を含み、
所定のタイムステップ毎(ST)に、当該タイムステップにおいて前記第1の挙動算出部が前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動を算出した後、前記第2の挙動算出部が当該算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動を算出する、シミュレーション装置。
[構成2]
前記付属機器は、装着されることにより前記第1の機器にワークを操作する操作機能を付加する機器を含む、構成1に記載のシミュレーション装置。
[構成3]
前記第2の挙動算出部は、物理シミュレータを含む、構成1または2に記載のシミュレーション装置。
[構成4]
前記第1の機器は、ロボットを含み、
前記第1の挙動算出部は、前記ロボットにワークを操作させる指令コードを有したロボットプログラムのエミュレーションを実行する、構成3に記載のシミュレーション装置。
[構成5]
前記第1の挙動算出部によって算出される前記第1の対象の挙動は、前記仮想空間における前記第1の対象の位置を含み、
前記物理シミュレータは、前記第1の挙動算出部によって算出される前記第1の位置を用いた物理演算に従いに基づき、前記第2の対象の挙動を算出する、構成3または4に記載のシミュレーション装置。
[構成6]
前記物理シミュレータは、前記第2の対象に対する力の発生を無効化して前記物理演算を実施する、構成5に記載のシミュレーション装置。
[構成7]
前記付属機器に対応の第2の対象について算出された挙動は、前記仮想空間における当該第2の対象の位置を含み、
前記第2の挙動算出部は、さらに、
前記付属機器の前記仮想空間における前記第2の対象の位置と、当該仮想空間における所定対象の位置とから両者の衝突(1093)を検出する、構成1から6のいずれか1に記載のシミュレーション装置。
[構成8]
第3の機器(200)に対応する仮想空間に配置された第3の対象の挙動を算出する第3の挙動算出部(152)を、さらに備え、
前記第3の機器は、前記第1の機器とデータを遣り取りしながら連携動作し、
前記第1の機器と前記第3の機器が遣り取りするデータ(12A)は、生産ラインに備えられる実機から取得する、構成1から7のいずれか1に記載のシミュレーション装置。
[請求項9]
前記付属機器は、前記第1の機器に取り付け可能なケーブルを含む、構成1から8のいずれか1に記載のシミュレーション装置。
[構成10]
前記仮想空間をビジュアル化した画像を生成する画像生成部(164)を、さらに備える、構成1から9のいずれか1に記載のシミュレーション装置。
[構成11]
コンピュータ(100)に機器の挙動を算出する方法を実行させるためのシミュレーションプログラムであって、
付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出ステップと、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2の挙動算出ステップと、を、備え、
前記第2の機器は、前記付属機器を含み、
所定のタイムステップ毎に、前記第1の挙動算出ステップでは前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動を算出し、その後、前記第2の挙動算出では当該算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動を算出する、シミュレーションプログラム。
[構成12]
機器の挙動を算出するシミュレーション方法であって、
付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1のステップと、
第2の機器に対応する前記仮想空間における第2の対象の挙動を算出する第2のステップと、を、備え、
前記第2の機器は、前記付属機器を含み、
所定のタイムステップ毎に、前記第1のステップでは前記付属機器が装着された第1の機器に対応する前記第1の対象の挙動を算出し、その後、前記第2のステップでは、前記第1のステップにおいて算出された前記第1の対象の挙動に基づき前記第1の機器に装着されている前記付属機器の挙動を算出する、シミュレーション方法。
【0141】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0142】
1 シミュレーション装置、2 制御システム、6 光電センサ、7 コネクタ、8 ストッパ、9 トレイ、12A 共有データ、13 演算ユニット、30 ロボット、41,42,1301,1302,1303,1304 サーボモータ、87 近接センサ、100 情報処理装置、102 プロセッサ、104 主メモリ、105 仮想空間情報、106 操作ユニット、108 出力ユニット、109 ディスプレイ、111 ストレージ、112 光学ドライブ、120 仮想時刻生成プログラム、121 中継プログラム、122 物理シミュレーションプログラム、124 物理シミュレーションパラメータ、126 シミュレーションプログラム、130 ロボットエミュレーションプログラム、132 ロボットパラメータ、134 統合プログラム、136 画像処理プログラム、150 仮想空間情報管理モジュール、152 PLCシミュレータ、154 周期生成モジュール、155 ワーク挙動シミュレータ、156 物理シミュレータ、158 中継モジュール、160 ロボットエミュレータ、162 ワークトラッキングモジュール、164 3Dビジュアライザ、210 ロボットハンド、230 コンベア、232 ワーク、236,238 エンコーダ、310 ロボットコントローラ、341,342,343 ケーブル、351,352,353 リング、531,532 サーボモータドライバ、1093 衝突。