JP7456249B2 - シミュレーションのためのプログラムおよび装置 - Google Patents

シミュレーションのためのプログラムおよび装置 Download PDF

Info

Publication number
JP7456249B2
JP7456249B2 JP2020071089A JP2020071089A JP7456249B2 JP 7456249 B2 JP7456249 B2 JP 7456249B2 JP 2020071089 A JP2020071089 A JP 2020071089A JP 2020071089 A JP2020071089 A JP 2020071089A JP 7456249 B2 JP7456249 B2 JP 7456249B2
Authority
JP
Japan
Prior art keywords
program
simulation
collision
group
robot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020071089A
Other languages
English (en)
Other versions
JP2021168041A (ja
Inventor
はる奈 大貫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp filed Critical Omron Corp
Priority to JP2020071089A priority Critical patent/JP7456249B2/ja
Priority to CN202180022935.8A priority patent/CN115335811A/zh
Priority to US17/915,005 priority patent/US20230153486A1/en
Priority to EP21785472.8A priority patent/EP4134918A4/en
Priority to PCT/JP2021/007610 priority patent/WO2021205776A1/ja
Publication of JP2021168041A publication Critical patent/JP2021168041A/ja
Application granted granted Critical
Publication of JP7456249B2 publication Critical patent/JP7456249B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • G05B19/4069Simulating machining process on screen
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40317For collision avoidance and detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2008Assembling, disassembling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Mechanical Engineering (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Numerical Control (AREA)
  • Processing Or Creating Images (AREA)
  • Manipulator (AREA)
  • Stored Programmes (AREA)

Description

本開示は、概してシミュレーションプログラムに関し、より特定的には、シミュレーションの実行中に衝突検知の設定を動的に切り替える技術に関する。
近年、コンピュータを用いたシミュレーションは様々な技術分野に応用されている。例えば、シミュレーションは、CAD(Computer Aided Design)ソフトウェアで設計された機械の動作確認、または、これらの機械を含むFA(Factory Automation)のラインの検証作業等にも使用されている。
シミュレーションに関し、例えば、特開2016-042378号公報(特許文献1)は、「制御プログラムにしたがって、仮想空間において機械に対応する仮想機械によって扱われ対象物に対応する仮想対象物のモデルデータに基づいて、仮想機械を動かせるための指令値が計算され、計算された指令値にしたがった仮想機械の動きが計算され、計算された仮想機械の動きによって動かされる仮想対象物の動きが計算され、計算された仮想機械の動きまたは仮想対象物の動きを、仮想的に撮影した場合に得られる仮想空間画像が生成され、生成された仮想空間画像にさらに基づいて、指令値が計算される」シミュレーション装置を開示している([要約]参照)。
特開2016-042378号公報
特許文献1に開示された技術によると、オブジェクト間の衝突検知の設定を動的に変更することができない。したがって、オブジェクト間の衝突検知の設定を動的に変更する技術が必要とされている。
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、オブジェクト間の衝突検知の設定を動的に変更する技術を提供することにある。
本開示の一例では、1以上のプロセッサーに命令を実行させるプログラムが提供される。命令は、第1のオブジェクトおよび第2のオブジェクトが属するグループを決定するステップと、第1のオブジェクトおよび第2のオブジェクトを含むシミュレーションを実行するステップと、シミュレーションの実行中に、第1のオブジェクトと、第2のオブジェクトとの衝突判定を行なうステップと、予め定められた条件を満たすことに基づいて、第1のオブジェクトの属するグループを変更するステップとを含む。衝突判定は、第1のオブジェクトが属するグループと、第2のオブジェクトが属するグループとが異なる場合にのみ実行される。
上記の開示によれば、プログラムは、不要なオブジェクト同士の衝突検知処理の実行を抑制し、プログラムを実行する装置の計算リソースの消費を抑えることができる。
上記の開示において、予め定められた条件は、シミュレーション中における第1のオブジェクトが従属する対象により定義される。
上記の開示によれば、第1のオブジェクトが接触している対象に基づいて、第1のオブジェクトの所属グループを変更することができる。
上記の開示において、命令は、第1のオブジェクトが第2のオブジェクトに接触していない状態から、第1のオブジェクトが第2のオブジェクトに接触した状態に変化したことに基づいて、第1のオブジェクトの従属先を第2のオブジェクトに変更するステップをさらに含む。
上記の開示によれば、プログラムは、第1のオブジェクトおよび第2のオブジェクトの接触状態に基づいて、第1のオブジェクトの所属グループを動的に切り替えることができる。
上記の開示において、命令は、第1のオブジェクトが接触する対象の変化を監視するステップと、第1のオブジェクトが接触する対象の変化を検出するごとに、第1のオブジェクトが触れる対象に基づいて、第1のオブジェクトの属するグループを変更するステップとをさらに含む。
上記の開示によれば、プログラムは、第1のオブジェクトに接触する任意のオブジェクトに基づいて、第1のオブジェクトの所属グループを動的に切り替えることができる。
上記の開示において、命令は、シミュレーションの実行状況をディスプレイに表示するステップをさらに含む。第1のオブジェクトの色は、第1のオブジェクトおよび第2のオブジェクトが同じグループに属する場合、第2のオブジェクトの色と同じであり、第1のオブジェクトおよび第2のオブジェクトが同じグループに属さない場合、第2のオブジェクトの色と異なる。
上記の開示によれば、プログラムは、ユーザーに対して、同一グループに属するオブジェクトを視覚的に理解しやすいように提示できる。
上記の開示において、命令は、第1のオブジェクトの衝突を検知したことに基づいて、第1のオブジェクトまたは第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む。
上記の開示によれば、プログラムは、ユーザーに、オブジェクト同士の衝突の発生を視覚的に理解しやすいように提示できる。
上記の開示において、命令は、第1のオブジェクトと同じグループに属するオブジェクトを第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、衝突判定において、フィルタに含まれるオブジェクトを第1のオブジェクトに対する衝突判定から除外するステップとをさらに含む。
上記の開示によれば、プログラムは、フィルタを参照することにより、不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
上記の開示において、命令は、第1のオブジェクトと第2のオブジェクトとの間に従属関係を設定するステップと、第1のオブジェクトと第2のオブジェクトとの間に従属関係が設定されたことに基づいて、第1のオブジェクトと第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む。
上記の開示によれば、プログラムは、オブジェクトの従属関係に基づいて、オブジェクトをグルーピングすることができる。
上記の開示において、命令は、予め定められた条件を定義するためのテンプレートを提供するステップと、テンプレートごとに、第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む。
上記の開示によれば、プログラムは、ユーザーに、容易にシミュレーションのスクリプトを作成する手段を提供できる。
上記の開示において、第1のオブジェクトに関する処理は、第1のオブジェクトの従属先のオブジェクトの変更処理を含む。
上記の開示によれば、プログラムは、ユーザーに、第1のオブジェクトの所属グループを変更するための設定の入力手段を提供できる。
上記の開示において、第1のオブジェクトに関する処理は、第1のオブジェクトまたは第2のオブジェクトの可視化のオン/オフの切り替え処理を含む。
上記の開示によれば、プログラムは、ユーザーに、オブジェクトの可視化の切り替え設定の入力手段を提供できる。
上記の開示において、命令は、テンプレートに基づいて作成された複数のスクリプトを保存するステップと、複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む。
上記の開示によれば、プログラムは、ユーザーに、複数のスクリプトの実行順序を決定する手段を提供できる。
上記の開示において、命令は、シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む。
上記の開示によれば、プログラムは、エミュレータの動作をシミュレーションに組み込むことができる。
上記の開示において、命令は、第1のオブジェクトと、第2のオブジェクトとの衝突を検知したことに基づいて、第1のオブジェクトに関する情報と、第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む。
上記の開示によれば、プログラムは、ユーザーに、ログ情報を提供できる。
本開示の他の例では、上記のいずれかに記載のプログラムを格納したメモリーと、プログラムを実行するプロセッサーとを含む装置が提供される。
上記の開示によれば、装置は、不要なオブジェクト同士の衝突検知処理の実行を抑制し、プロセッサーの計算リソースの消費を抑えることができる。
ある実施の形態に従うと、オブジェクト間の衝突検知の設定を動的に変更することが可能になる。
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの本開示に関する次の詳細な説明から明らかとなるであろう。
ある実施の形態に従うシミュレーションプログラム100の動作概要の一例を示す図である。 シミュレーションプログラム100を適用可能なライン20の構成の一例を示す図である。 シミュレーションプログラム100を実行するための情報処理装置300の構成の一例を示す図である。 シミュレーションプログラム100のエミュレーション機能の概要の一例を示す図である。 シミュレーションプログラム100の一機能であるビジュアライザー530の表示例を示す図である。 シミュレーションプログラム100の第1のUI(User Interface)600の例を示す図である。 シミュレーションプログラム100の第2のUI700の一例を示す図である。 シミュレーションプログラム100の第3のUI800の一例を示す図である。 シミュレーションプログラム100の第4のUI900の一例を示す図である。 シミュレーションプログラム100の第5のUI1000の一例を示す図である。 シミュレーションプログラム100の第1のモジュール構成の一例を示す図である。 第1のモジュール構成によるシーケンスの一例を示す図である。 シミュレーションプログラム100の第2のモジュール構成の一例を示す図である。 第2のモジュール構成によるシーケンスの前半の一例を示す図である。 第2のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100の第3のモジュール構成の一例を示す図である。 第3のモジュール構成によるシーケンスの前半の一例を示す図である。 第3のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100の第4のモジュール構成の一例を示す図である。 第4のモジュール構成によるシーケンスの前半の一例を示す図である。 第4のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100のフローチャートの一例である。
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<A.適用例>
(A-1.シミュレーションの対象)
図1は、本実施の形態に従うシミュレーションプログラム100の動作概要の一例を示す図である。図1を参照して、シミュレーションプログラム100の適用例について説明する。シミュレーションプログラム100は、工場等に設置されるロボットまたは機械等を含む製造ラインまたは検品ライン等(これらを総称するときは、「ライン」と表すこともある)のシミュレーション機能を提供する。
ラインは、ロボットアーム、ワーク、作業台およびトレー等の複数のオブジェクトを含む。なお、ここでの「ワーク」とは、組み立て作業、検品作業等における作業の対象物を指す。シミュレーションプログラム100は、製造ラインを稼働させたときに、これらのオブジェクトが干渉しないか否か(オブジェクト同士が衝突するか否か)を判定し得る。シミュレーションプログラム100は、PC(Personal Computer)、ワークステーション、サーバー装置、クラウド環境等の情報処理装置によって実行され得る。これ以降の説明において、シミュレーションプログラム100が実行する全ての動作は、シミュレーションプログラム100をインストールされた情報処理装置が実行しているものとする。
図1に示す例では、シミュレーションプログラム100は、ラインについてのシミュレーションを実行している。ラインは、ロボットアーム140と、台座160とを含む。また、トレー170は、台座160の上に設置されている。ロボットアーム140は、トレー170上のワーク150を台座160の所定の位置まで運搬する。なお、図1に示す構成は一例であり、ラインの構成はこれに限られない。ある局面において、ラインは、任意の数のロボットアーム、他の機械、センサー等を含んでいてもよい。また、他の局面において、ラインは、ロボットと人間とが協調作業を行うようにデザインされていてもよい。
(A-2.シーンごとの衝突判定対象の切り替え)
シミュレーションプログラム100は、主に3D(Three-Dimensional)オブジェクトを用いたシミュレーション機能を提供する。3Dオブジェクトを用いたシミュレーションは、多大な計算リソースおよびメモリーを必要とする。仮に、シミュレーションプログラム100をインストールされた情報処理装置が、シミュレーションに含まれる全てのオブジェクトの衝突検知を実行した場合、その計算量は膨大なものとなる。
そこで、シミュレーションプログラム100は、重要な特定のオブジェクトの衝突判定のみを行うことで、情報処理装置の計算リソースを効率よく使用する。さらに、シミュレーションプログラム100は、後述するシーンごとに、衝突判定を行うオブジェクトを切り替える機能を提供する。
シミュレーションプログラム100は、ラインの稼働状態を特定のシーンに分割する。そして、シミュレーションプログラム100は、各シーンでの衝突判定が必要なオブジェクトに対してのみ、衝突判定処理を実行する。ここでの「シーン」は、特定のオブジェクト同士が接触しているか否かによって定義され得る。例えば、図1のシーン110,120,130は、ワーク150が他のどのオブジェクトと接触しているかによって定義される。
シーン110は、ロボットアーム140が、トレー170に設置されたワーク150を把持しようとするシーンである。当該シーン110では、ワーク150は、トレー170と接触していることが想定される。また、ワーク150は、ロボットアーム140および台座160には接触していないことが想定される。
シーン110において、シミュレーションプログラム100は、ワーク150とトレー170との接触判定を実行しない。なぜならば、ワーク150とトレー170とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
逆に、シミュレーションプログラム100は、ワーク150と、ロボットアーム140および台座160との接触判定を実行する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、ワーク150および台座160が接触している場合、ワーク150またはトレー170の配置ミスが疑われる。また、ロボットアーム140が、本来想定していない角度または向きでワーク150に接触した場合、ロボットアーム140の制御プログラムが誤っている可能性が高い。このように、シミュレーションプログラム100は、シーン110で問題となるオブジェクト同士の衝突のみを検出し得る。
シーン120は、シーン110の次のシーンであり、ロボットアーム140が、ワーク150を把持し、ワーク150をトレー170から持ち上げているシーンである。当該シーン120では、ロボットアーム140に把持されているワーク150は、ロボットアーム140に接触していることが想定される。また、ロボットアーム140に把持されているワーク150は、台座160およびトレー170のいずれにも接触しないことが想定される。
シーン120において、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、ロボットアーム140との衝突判定を実行しない、なぜならば、ロボットアーム140に把持されているワーク150と、ロボットアーム140とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
逆に、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、台座160およびトレー170との接触判定を実行する。また、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、台座160に設置されている他のワーク150との衝突判定も実施する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、ロボットアーム140に把持されたワーク150と、トレー170とが接触している場合、ロボットアーム140は、正常にワーク150を持ち上げておらず、ワーク150をトレー170上で引きずっている可能性がある。また、ロボットアーム140に把持されたワーク150と、トレー170に設置されている他のワーク150とが接触した場合、ロボットアーム140は、ワーク150同士をぶつけていることになる。これらの衝突が検知された場合、ロボットアーム140の制御プログラムに誤りがある可能性が高い。
シーン130は、シーン120の次のシーンであり、ロボットアーム140が、ワーク150を台座160の所定の位置に設置したシーンである。当該シーン130では、台座160に設置されたワーク150は、台座160に接触していることが想定される。また、台座160に設置されたワーク150は、ロボットアーム140およびトレー170のいずれにも接触していないことが想定される。
シーン130において、シミュレーションプログラム100は、台座160に設置されたワーク150と、台座160との接触判定を実行しない。なぜならば、台座160に設置されたワーク150と、台座160とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
逆に、シミュレーションプログラム100は、台座160に設置されたワーク150と、ロボットアーム140およびトレー170との接触判定を実行する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、台座160に設置されたワーク150と、トレー170とが接触している場合、ワーク150が正常に台座160の上に設置されていない可能性がある。また、台座160に設置されたワーク150と、ロボットアーム140とが接触している場合、ロボットアーム140の制御プログラムに誤りがある可能性が高い。
(A-3.オブジェクトのグルーピング)
シミュレーションプログラム100は、上記のように、シーンごとに衝突検知を行う対象となるオブジェクトを切り替えるために、オブジェクトをグルーピングして管理する。
シミュレーションプログラム100は、あるシーンにおいて、お互いに接触していることが想定されるオブジェクト同士をグルーピングする。例えば、シーン110において、ワーク150とトレー170とは、接触していることが想定される。そのため、シミュレーションプログラム100は、ワーク150とトレー170とを同一のグループに属するオブジェクトとして管理する。逆に、ワーク150は、ロボットアーム140および台座160とは、接触していないことが予想される。そのため、シミュレーションプログラム100は、ワーク150をロボットアーム140および台座160とは別のグループに属するオブジェクトとして管理する。シーン110の例では、シミュレーションプログラム100は、各オブジェクトをグループA(ワーク150、トレー170)、グループB(ロボットアーム140)、グループC(台座160)のようにグルーピングし得る。
シミュレーションプログラム100は、同一のグループに属するオブジェクト同士の衝突判定を実行せず、異なるグループに属するオブジェクト同士の衝突判定を実行する。例えば、シミュレーションプログラム100は、シーン110において同一グループに属するワーク150およびトレー170の衝突判定を実行しない。逆に、シミュレーションプログラム100は、シーン110において互いに異なるグループに属するワーク150と、ロボットアーム140と、台座160との衝突判定を実行する。
シミュレーションプログラム100は、各オブジェクトが属するグループを定義するための入力機能をユーザーに提供する。なお、シミュレーションプログラム100は、ユーザーからの入力等に基づいて、接触しているオブジェクトでも異なるグループに分類することができる。例えば、シミュレーションプログラム100は、台座160と、台座160上に設置されているトレー170とを異なるグループに分類し得る。
シミュレーションプログラム100は、シーンが切り替わるごとに(特定のオブジェクト同士の接触関係が変わるごとに)、グルーピングを更新する。例えば、シーン110からシーン120への切り替わり時に(ワーク150がロボットアーム140に把持されて持ち上げられた時に)、シミュレーションプログラム100は、ワーク150をグループAからロボットアーム140が属するグループBに移す。当該処理により、シーン120において、ワーク150とロボットアーム140とについての衝突判定は、実行されなくなる。
さらに、シミュレーションプログラム100は、同一のグループに属する各オブジェクト間で従属関係(親子関係)を定義する。例えば、実際にはロボットアーム140は、ロボット本体、ロボットツール(ロボットアームの先端のツール)等の複数のオブジェクトを含み得る。この場合、ロボット本体は親であり、ロボットツールは子になる。他の例として、シーン110におけるワーク150の親は、トレー170である。シミュレーションプログラム100は、これらの各オブジェクトの従属関係を定義することで、複数のオブジェクトをグルーピングする。シミュレーションプログラム100は、シーンごとのオブジェクト同士の従属関係を定義する入力機能をユーザーに定義する。シミュレーションプログラム100は、シーンごとのオブジェクト同士の従属関係に基づいて、グルーピングを更新し得る。
上記のように、シミュレーションプログラム100は、オブジェクトをグルーピングして管理し、同じグループに属するオブジェクト同士の衝突検知処理の実行を抑制する。こうすることで、シミュレーションプログラム100は、シミュレーションに必要な計算リソースを抑制することができる。
さらに、シミュレーションプログラム100は、シーンの切り替わりごとに、グルーピングを更新する処理を実行する。こうすることで、シミュレーションプログラム100は、シーンごとに不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
<B.ハードウェア構成>
図2は、シミュレーションプログラム100を適用可能なライン20の構成の一例を示す図である。ライン20は、上位伝送路220と、下位伝送路230とを含む。上位伝送路220には、統合コントローラー200と、IPC(Industrial Process Control)装置201と、操作パネル202と、管理装置203と、搬送用ロボット204と、センサー205と、LiDAR(Light Detection and Ranging)206と、クラウド環境207と、データベース208と、シミュレーター209とが接続される。
下位伝送路230には、統合コントローラー200と、フィールド装置240A~240J(総称する場合は、「フィールド装置240」と表すこともある)とが接続されている。
統合コントローラー200は、ライン20に接続される各種センサー、ロボットおよびモーター等の各種アクチュエーターを制御する。言い換えれば、統合コントローラー200は、PLC(Programmable Logic Controller)の機能およびロボットコントローラーの機能の両方を備える装置である。ある局面において、ライン20は、統合コントローラー200の代わりに、個別のPLCと、ロボットコントローラーとを備えていてもよい。
IPC装置201は、FA(Factory Automation)等において、システム全体の生産管理や、プロセスを管理する。操作パネル202は、工場のスタッフにより、ライン20の検査や操作に使用される。
管理装置203は、例えば、搬送用ロボット204等を管理および制御する。搬送用ロボット204は、工場内でワークやトレーを搬送する。センサー205は、安全機構として使用され得る。例えば、センサー205は、ロボットまたは工作機械等の付近に人間がいるか否かなどを検出するために使用され得る。LiDAR206は、光センサーを用いて周辺障害物を検出する装置である。LiDAR206は、例えば、搬送用ロボット204等に搭載されて使用され得る。
クラウド環境207は、工場の内部または外部にある複数のサーバーからなる情報処理環境である。データベース208は、統合コントローラー200またはIPC装置201等から送られてくるログデータ等を蓄積する。シミュレーター209は、シミュレーションプログラム100を実行する情報処理装置である。シミュレーター209は、ライン20の一部または全ての構成を含むシミュレーションを実行し得る。管理者は、シミュレーター209を用いてライン20の設計に問題がないことを確認してから、実際にライン20を稼働させることができる。
ある局面において、クラウド環境207、データベース208およびシミュレーター209の全てまたは一部は、工場の敷地外に設けられていてもよい。その場合、クラウド環境207、データベース208およびシミュレーター209の全てまたは一部は、外部ネットワーク、ゲートウェイ装置等(図示せず)を介して、上位伝送路220に接続され得る。
フィールド装置240は、ロボットアーム、スカラー装置、直動機構、またはモーター等の制御装置である。ある局面において、フィールド装置240は、ロボットアーム等に内蔵されていてもよいし、ロボットアーム等の外部に設けられていてもよい。ライン20では、複数のフィールド装置240が協調作業を行なうことにより、製品の製造または検査等を実行し得る。
シミュレーションプログラム100は、例えば、シミュレーションの中で、ライン20を構成するフィールド装置240とワークとの衝突検知、搬送用ロボット204の衝突検知等を行ない得る。シミュレーションプログラム100は、フィールド装置240のプログラムの開発環境と一体型であってもよい。その場合、シミュレーター209は、プログラムのシミュレーション完了後に、当該プログラムをフィールド装置240にインストールし得る。
図3は、シミュレーションプログラム100を実行するための情報処理装置300の構成の一例を示す図である。情報処理装置300は、CPU(Central Processing Unit)301と、1次記憶装置302と、2次記憶装置303と、外部機器インターフェイス304と、入力インターフェイス305と、出力インターフェイス306と、通信インターフェイス307とを含む。
CPU301は、情報処理装置300の各種機能を実現するためのプログラムを実行し得る。CPU301は、例えば、少なくとも1つの集積回路によって構成される。集積回路は、例えば、少なくとも1つのCPU、少なくとも1つのFPGA(Field-Programmable Gate Array)、またはこれらの組み合わせなどによって構成されてもよい。CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100により、図1を参照して説明した処理を実行し得る。
1次記憶装置302は、CPU301によって実行されるプログラムと、CPU301によって参照されるデータとを格納する。ある局面において、1次記憶装置302は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現されてもよい。
2次記憶装置303は、不揮発性メモリーであり、CPU301によって実行されるプログラムおよびCPU301によって参照されるデータを格納してもよい。その場合、CPU301は、2次記憶装置303から1次記憶装置302に読み出されたプログラムを実行し、2次記憶装置303から1次記憶装置302に読み出されたデータを参照する。ある局面において、2次記憶装置303は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現されてもよい。
外部機器インターフェイス304は、プリンター、スキャナーおよび外付けHDDなどの任意の外部機器に接続され得る。ある局面において、外部機器インターフェイス304は、USB(Universal Serial Bus)端子等によって実現されてもよい。
入力インターフェイス305は、キーボード、マウス、タッチパッドまたはゲームパッドなどの任意の入力装置に接続され得る。ある局面において、入力インターフェイス305は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現されてもよい。
出力インターフェイス306は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(electro-luminescence)ディスプレイなどの任意の出力装置に接続され得る。ある局面において、出力インターフェイス306は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子およびHDMI(登録商標)(High-Definition Multimedia Interface)端子等によって実現されてもよい。
通信インターフェイス307は、有線または無線のネットワーク機器と接続される。ある局面において、通信インターフェイス307は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)モジュール等によって実現されてもよい。他の局面において、通信インターフェイス307は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)その他の通信プロトコルを用いてデータを送受信してもよい。
<C.シミュレーションプログラムの詳細>
(C-1.エミュレーション機能)
図4は、シミュレーションプログラム100のエミュレーション機能の概要の一例を示す図である。シミュレーションプログラム100は、シミュレーションの中で一部または全てのオブジェクトをエミュレートする機能を提供する。
シミュレーションプログラム100は、一例として、仮想PLC410と、仮想ロボット420とを生成する。仮想PLC410および仮想ロボット420の各々は、実機のプログラムを実行することができる。そのため、ユーザーは、作成したPLC用プログラムおよびロボット用プログラムの各々を仮想PLC410および仮想ロボット420の各々に実行させることで、実機を用意することなく、各プログラムの動作を検証することができる。
また、シミュレーションプログラム100は、仮想PLC410と、仮想ロボット420との間でやりとりされるデータの受け渡しのための領域であるEtherCat共有メモリー430を提供する。シミュレーションプログラム100は、1次記憶装置302の一部の領域をEtherCat共有メモリー430として確保する。仮想PLC410および仮想ロボット420の各々は、仮想的に独立した装置として動作する。そのため、各装置は、EtherCat共有メモリー430を介して入力データ431および出力データ432の受け渡しを実現する。
一例として、仮想PLC410は、PLC本体411と、PLC本体411に制御されるサーボモーター412その他のアクチュエーターとを含む。また、一例として、仮想ロボット420は、ロボット本体422の制御装置に当たるロボットコントローラー421と、ロボット本体422とを含む。
(C-2.ユーザーインターフェイス)
次に、図5~図10を参照して、シミュレーションプログラム100が提供するユーザーインターフェイスの例について説明する。これらのユーザーインターフェイスは、統合コントローラー200のIDE(Integrated Development Environment)の一部として提供され得る。
図5は、シミュレーションプログラム100の一機能であるビジュアライザー530の表示例を示す図である。図5の例では、シミュレーションプログラム100は、統合コントローラー200のIDE500の一部として提供されている。
IDE500は、ラダーソフトウェア510と、ロボットプログラムソフトウェア520とを含む。ラダーソフトウェア510は、統合コントローラー200のPLC機能のプログラムミングに使用される。ラダーソフトウェア510によって作成されたプログラムは、統合コントローラー200にインストールされて統合コントローラー200により実行されるか、仮想PLC410により実行される。ロボットプログラムソフトウェア520は、統合コントローラー200のロボットコントローラー機能のプログラミングに使用される。ロボットプログラムソフトウェア520によって作成されたプログラムは、統合コントローラー200にインストールされて統合コントローラー200により実行されるか、仮想ロボット420により実行される。
IDE500は、さらにビジュアライザー530の機能を提供する。IDE500は、ユーザーからの入力に基づいて、シミュレーションプログラム100を動作させる。ビジュアライザー530は、ライン20を構成する各オブジェクト(ロボットアーム、ワーク等)のシミュレーションの様子を可視化してディスプレイに表示する。
図6は、シミュレーションプログラム100の第1のUI600の一例を示す図である。第1のUI600は、シミュレーションにおける各シーンの動作を規定するための入力を受け付けて、シーンごとのスクリプトを生成する。
第1のUI600は、エディタ610と、ツールボックス620と、テンプレート630と含む。エディタ610は、ユーザーからのシミュレーションプログラム100のソースコードの記述の入力を受け付ける。
ツールボックス620は、シミュレーションプログラム100のソースコードのテンプレート630を提供する。テンプレート630は、シミュレーションの中で典型的に使用されるシーンのソースコードのひな形である。ユーザーは、テンプレート630を選択して、当該選択したテンプレート630にコードを追記することで、容易に各シーンのシミュレーション内容を定義したスクリプトを作成できる。ある局面において、テンプレート630は、後述する図10のスクリプトの生成に利用されてもよい。
テンプレート630がエディタ610に表示されると、一例として、テンプレート630のシーンを示す条件640が表示される。ユーザーは、シミュレーションが当該条件640に該当したときの処理のコードをテンプレート630に追記することで、特定のシーンのシミュレーション内容を定義できる。一例として、ユーザーは、オブジェクト間の従属関係(あるオブジェクトの従属先)の指定、オブジェクトの表示のオン/オフ、オブジェクトの初期位置等の設定をテンプレート630に追記することができる。ある局面において、エディタ610は、テキスト形式以外にも、フロー形式、ブロック形式その他の任意の入力形式であってもよい。ユーザーは、第1のUI600を用いることで、例えば、図1のシーン110,120,130のそれぞれのシミュレーションの内容を定義したスクリプトを作成し得る。
図7は、シミュレーションプログラム100の第2のUI700の一例を示す図である。第2のUI700は、処理内容が定義されたシーンの実行順書の決定するための入力を受け付ける。
スクリプトリスト710は、第1のUI600等によって作成されたスクリプト等を含むリストである。ユーザーは、スクリプトリスト710からスクリプトを選択して、スクリプトの実行設定720に当該選択したスクリプトを追加し得る。
ユーザーは、上記の第1のUI600および第2のUI700を用いることで、シミュレーションにおけるシーンごとの処理内容をスクリプトとして定義し、さらに、これらのスクリプト(シーン)の実行順序を容易に定義し得る。
図8は、シミュレーションプログラム100の第3のUI800の一例を示す図である。第3のUI800は、各シーンにおける、オブジェクトのグルーピングを設定するための操作を受け付ける。ユーザーは、第3のUI800を用いて、各シーンのグループの設定を行い得る。
図8に示す例では、あるシーン(A)におけるグループ810,820および830が設定されている。グループ810は、トレー170を含む。グループ820は、ロボット(ロボットアーム140の本体)と、ロボットツール(ロボットアーム140の先端のツール)とを含む。グループ830は、台座160を含む。
シミュレーションプログラム100は、ユーザーが第3のUI800を用いて各オブジェクトに設定したグループの情報を衝突フィルタを作成するための「衝突フィルタグループ」として使用する。すなわち、シミュレーションプログラム100は、シーン(A)における衝突検知を実行する際、グループ810,820および830を参照し、同一グループに属するオブジェクト同士(衝突を考慮する必要のないオブジェクト同士)の衝突検知を実行しない。例えば、シミュレーションプログラム100は、シーン(A)において、グループ820に属するロボットと、ロボットツールとの衝突検知を実行しない。
上記のように、シミュレーションプログラム100は、グループの設定を参照することで、衝突を考慮する必要のないオブジェクト同士の衝突検知の実行を抑制する。これにより、シミュレーションプログラム100は、情報処理装置300の計算リソースの消費を抑制し、より高速にシミュレーションを実行することができる。
図9は、シミュレーションプログラム100の第4のUI900の一例を示す図である。第4のUI900は、各シーンにおける、オブジェクトの衝突検知の自動切り替え対象を選択するユーザーの操作を受け付ける。
図9の例では、仮想ワーク(ワーク150)が衝突検知の自動切り替え対象として選択されている。衝突検知の自動切り替え対象として選択されたオブジェクトは、シーンの切り替わりごとに(例えば、他のオブジェクトと衝突するごとに)、所属するグループが切り替わる。ここでの仮想ワークとは、シミュレーション内における仮想的なワークを指す。ラインのシミュレーションを実行する際、ユーザーは、ワークの動作を中心にシミュレーションの設定を作成し得る。
以下に、図1のシーン110~130と、図8のグループと、図9の設定とを参照して、シーンの切り替わりについて説明する。最初に、シーン110において、ワーク150は、トレー170に設置されている。この場合、ワーク150は、トレー170の子として、グループ810に属する。
次に、シーン120において、ロボットアーム140(ロボットツール)がワーク150を把持してトレー170から持ち上げている。この場合、ワーク150は、ロボットツールの子として、グループ820に属する。
最後に、シーン130において、ロボットアーム140がワーク150を台座160に設置し、ロボットアーム140がワーク150を離す。この場合、ワーク150は、台座160の子として、グループ830に属する。
このように、衝突検知の自動切り替え対象として選択されたオブジェクトは、図6および図7で設定されたシーンにおいて、動的に接触したオブジェクトの子になり、当該接触したオブジェクトと同じグループに属する。
図10は、シミュレーションプログラム100の第5のUI1000の一例を示す図である。第5のUI1000は、シーンの切り替え条件、および各シーンにおいて実行されるべき処理の入力を受け付ける。
図10の例では、第1のシーンの条件として、開始時(isStart)が設定されている。また、第1のシーンにおいて実行されるべき処理として、ワーク150の親をトレー170に設定する処理(workpiece.Parent=Tray)が定義されている。
次に、第2のシーンの条件として、ワーク150の親がトレー170であり、かつロボットツールのチャックがワーク150を正常に把持すること(workpiece.Parent==Tray && chuckClose)が設定されている。また、第2のシーンにおいて実行されるべき処理として、ワークピースの親をロボットツール(チャック)に設定する処理(workpiece.Parent=Chuck)が定義されている。
次に、第3のシーンの条件として、ワーク150の親がロボットツール(チャック)であり、かつロボットツールのチャックがワーク150を離したこと(workpiece.Parent==Chuck && chuckOpen)が設定されている。また、第3のシーンにおいて実行されるべき処理として、ワークピースの親を台座160(xyTable)に設定する処理(workpiece.Parent=xyTable)が定義されている。
シミュレーションプログラム100は、シミュレーション中に、各シーンを示す条件が満たされたか否かを判定する。そして、シミュレーションプログラム100は、条件が満たされたと判定した場合、その条件によって定義されるシーンになったと判定する。そし、シミュレーションプログラム100は、当該条件が満たされた場合に実行されるべき処理を実行する。例えば、典型的な処理として、各シーンで、オブジェクトの従属関係の変更処理(親となるオブジェクトの変更処理)が設定されていてもよい。
シミュレーションプログラム100は、第3のUI800でのグループの設定と、第5のUI1000で作成されたスクリプトとに基づいて、オブジェクトのグループの変更処理を実行し得る。シミュレーションプログラム100は、第3のUI800にて、一旦全てのオブジェクトの所属するグループの設定の入力を受け付け得る。次に、シミュレーションプログラム100は、第5のUI1000にて、シーンの切り替わり条件と、各シーンにおけるオブジェクトの従属関係の変更処理の入力を受け付け得る。
シミュレーションプログラム100は、シミュレーション中に、オブジェクトAがオブジェクトBの子になった場合、オブジェクトAを親であるオブジェクトBの属するグループに移動させる。すなわち、第3のUI800で設定されたグループは、各オブジェクトの初期のグループであり、各オブジェクトは、第5のUI1000にて定義されたシーンごとの従属関係の変更処理に基づいてグループ間を移動する。
ある局面において、シミュレーションプログラム100は、第5のUI1000にて、各オブジェクトの初期の従属関係の入力を受け付けてもよい。また、他の局面において、シミュレーションプログラム100は、オブジェクトごとの従属関係と、親オブジェクトおよび子オブジェクト間のオフセットとを設定するためのUIをユーザーに別途提供してもよい。
上記のように第4のUI900および第5のUI1000を用いることで、ユーザーは、シミュレーションプログラム100に、特定のオブジェクトに対する衝突検知の対象を動的に切り替えるための設定を入力し得る。
ある局面において、シミュレーションプログラム100は、さらに、シーンごとに、各オブジェクトを可視化するか否かを設定するUIを提供し得る。当該UIにより、ユーザーは、シミュレーションプログラム100に、ユーザーに視覚的に提示する必要のあるオブジェクトのみをディスプレイに表示するための設定を入力し得る。
次に、図11~図21を参照して、シミュレーションプログラム100のモジュール構成およびモジュール間の通信について説明する。各モジュールは、シミュレーションプログラム100を構成するプログラム部品またはデータである。ある局面において、これらのモジュールの一部または全てはハードウェアにより実現されてもよい。
(C-3.第1のモジュール構成)
図11は、シミュレーションプログラム100の第1のモジュール構成の一例を示す図である。シミュレーションプログラム100は、統合シミュレーション実行部1101と、仮想ワーク動作シーケンス設定部1103と、シミュレーション設定1106と、CADデータベース1107と、3D処理部1108と、衝突フィルタグループ設定部1112と、衝突フィルタグループデータベース1115と、3D形状衝突検知部1116と、衝突検知結果データベース1117とを含む。
統合シミュレーション実行部1101は、仮想時刻生成部1102を含む。仮想ワーク動作シーケンス設定部1103は、仮想ワーク動作スクリプト作成部1104と、仮想ワーク動作スクリプト実行部1105とを含む。3D処理部1108は、3D形状表示部1109と、3D形状解析部1110と、3D形状読取部1111とを含む。衝突フィルタグループ設定部1112は、衝突フィルタグループ設定画面1113と、衝突フィルタグループ設定自動変更部1114とを含む。
統合シミュレーション実行部1101は、各種スクリプトに基づくシミュレーションを実行すると共にシミュレーション全体を管理する。仮想時刻生成部1102は、シミュレーション内での仮想的な時刻を生成する。
仮想ワーク動作シーケンス設定部1103は、ユーザーからのシミュレーションの実行手順の設定(スクリプト)の入力を受け付ける。さらに、仮想ワーク動作シーケンス設定部1103は、シミュレーションの実行手順の設定を解釈および実行する。仮想ワーク動作スクリプト1140は、ユーザーからの仮想ワークに関する動作スクリプトの入力を受け付ける。ある局面において、ユーザーは、例えば、第1のUI600、第2のUI700および第5のUI1000等を用いて、仮想ワークに関する動作スクリプトを作成し得る。仮想ワーク動作スクリプト実行部1105は、ユーザーによって作成された仮想ワークに関する動作スクリプトを解釈して実行する。
シミュレーション設定1106は、各シーンにおけるオブジェクト間の従属関係および表示データ等を格納する。ある局面において、シミュレーション設定1106は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。他の局面において、シミュレーション設定1106に格納されるデータは、例えば、第3のUI800および第4のUI900等を用いて作成され得る。
3D処理部1108は、シミュレーションの実行中の様子をディスプレイに表示する。ある局面において、3D処理部1108は、CADデータの読込みおよびビジュアライザー530の機能を提供する。また、他の局面において、3D処理部1108は、同じグループに属する複数のオブジェクトを同色(グループカラー)にして表示してもよい。また、3D処理部1108は、シーンの切り替わりにおいて、オブジェクト(仮想ワーク等)がグループを移動した場合、当該オブジェクトを移動先のグループカラーに変更して表示してもよい。3D形状表示部1109は、シミュレーションの実行内容を随時ディスプレイに表示する。3D形状解析部1110は、CADデータベース1107に含まれるCADファイルの形状を解析する。3D形状読取部1111は、CADデータベース1107に含まれるCADファイルを読み込む。
衝突フィルタグループ設定部1112は、衝突フィルタグループの設定の入力を受け付けると共に、シミュレーションの実行中に衝突フィルタグループを自動で更新する。個々での衝突フィルタグループとは、図8等において説明したオブジェクトの属するグループである。これらのグループは、同一のグループに属するオブジェクト同士の衝突検知の実行を抑制するためのフィルタとして使用される。
衝突フィルタグループ設定画面1113は、オブジェクトのグループの設定の入力を受け付ける。例えば、衝突フィルタグループ設定画面1113は、第3のUI800を含む。衝突フィルタグループ設定自動変更部1114は、衝突フィルタグループの自動更新の設定の入力を受け付ける。例えば、衝突フィルタグループ設定自動変更部1114は、第4のUI900および第5のUI1000等を含む。
衝突フィルタグループデータベース1115は、衝突フィルタグループ設定部1112にて作成された衝突フィルタグループのデータを格納する。ある局面において、衝突フィルタグループデータベース1115は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
3D形状衝突検知部1116は、シミュレーションの実行中に、オブジェクト同士の衝突を検知する。3D形状衝突検知部1116は、衝突フィルタグループのデータを参照することで、同一のグループに属するオブジェクト同士の衝突検知の実行を抑制する。3D形状衝突検知部1116は、衝突を検知すると、衝突した各オブジェクトの識別情報と衝突検知時刻とを含む衝突検知結果1118(ログ情報)を、衝突検知結果データベース1117に保存する。衝突検知時刻は、仮想時刻生成部1102によって生成された仮想時刻に基づく。ある局面において、衝突検知結果データベース1117は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
なお、第1のUI600~第5のUI1000の各々で作成されたデータは、明確にいずれかのモジュールで使用されるデータである必要はない。ある局面において、第1のUI600~第5のUI1000の各々で作成されたデータの一部または全ては、適宜分解または組み合わせて、各モジュールで使用され得る。
図12は、第1のモジュール構成によるシーケンスの一例を示す図である。図12のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第1のモジュール構成によるシーケンスを実現し得る。
ステップS1205において、仮想時刻生成部1102は、ユーザーからのシミュレーションの開始命令を受け付けて、仮想時刻を生成する。ステップS1210において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、仮想時刻と共に、起動要求を送信する。
ステップS1215において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、演算命令を送信する。ある局面において、統合シミュレーション実行部1101が、ステップS1205~S1215の処理を実行してもよい。
ステップS1220において、仮想ワーク動作スクリプト実行部1105は、仮想ワーク自動実行スクリプトを実行する。仮想ワーク自動実行スクリプトは、例えば、第5のUI1000で作成されたスクリプトを含む。
ステップS1225において、仮想ワーク動作スクリプト実行部1105は、衝突フィルタグループ設定部1112に、演算実行通知を送信する。ある局面において、演算実行通知は、オブジェクトの現在位置等を含み得る。他の局面において、演算実行通知は、現在のシーンを示す情報を含んでいてもよい。
ステップS1230において、衝突フィルタグループ設定部1112は、演算実行通知を受信したことに基づいて、衝突フィルタグループを更新する。例えば、衝突フィルタグループ設定部1112は、シーンの切り替わりに基づいて、仮想ワークの所属するグループを変更する。より具体的には、衝突フィルタグループ設定部1112は、第5のUI1000で設定されたスクリプトに基づいて、シーンの切り替わりごとに、各オブジェクトの所属するグループを変更していく。
ステップS1235において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、衝突検知依頼を送信する。ステップS1240において、3D形状衝突検知部1116は、衝突検知依頼を受信したことに基づいて、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。
ステップS1245において、3D形状衝突検知部1116は、衝突フィルタグループ設定部1112に、衝突フィルタグループの取得要求を送信する。ステップS1250において、衝突フィルタグループ設定部1112は、3D形状衝突検知部1116に、衝突フィルタグループを送信する。
ステップS1255において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、仮想ワークの位置を送信する。ある局面において、ステップS1240およびS1255の通信は、ステップS1245およびS1250の通信とは独立して同時並行的に実行されてもよい。ステップS1260において、3D形状衝突検知部1116は、衝突フィルタグループおよび仮想ワークの位置を受信したことに基づいて、衝突検知処理を実行する。
ステップS1265において、3D形状表示部1109は、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。ステップS1270において、仮想ワーク動作スクリプト実行部1105は、3D形状表示部1109に、仮想ワークの位置を送信する。
ステップS1275において、3D形状表示部1109は、3D形状衝突検知部1116に、衝突状態情報の取得要求を送信する。ステップS1280において、3D形状衝突検知部1116は、3D形状表示部1109に、衝突状態情報を送信する。衝突状態情報は、一例として、オブジェクト同士の衝突が発生した場合における、各オブジェクトの識別情報、衝突の発生時刻等を含む。ステップS1285において、3D形状衝突検知部1116は、画面の表示を更新する。例えば、ステップS1285の処理が発生するたびに、ビジュアライザー530の表示が更新される。
(C-4.第2のモジュール構成)
図13は、シミュレーションプログラム100の第2のモジュール構成の一例を示す図である。第2のモジュール構成は、PLCのエミュレーション機能と、ロボットコントローラーのエミュレーション機能とを備える点で、第1のモジュール構成と異なる。ある局面において、シミュレーションプログラム100は、ユーザーによる設定に基づいて、各機能をシミュレーションで再現するか、エミュレーションで再現するかを切り替えてもよい。
第2のモジュール構成は、第1のモジュール構成に含まれる構成に加えて、PLCエミュレーション部1320と、ロボットコントローラーエミュレーション部1330と、PLC用変数のデータベース1340と、ロボットコントローラー用変数のデータベース1350とを含む。
PLCエミュレーション部1320は、PLCプログラム作成部1321と、PLCプログラム実行部1322とを含む。ロボットコントローラーエミュレーション部1330は、ロボットプログラム作成部1331と、ロボットプログラム実行部1332とを含む。
PLCエミュレーション部1320は、PLCの機能をエミュレートしてその実行結果をPLC用変数のデータベース1340に格納する。PLCエミュレーション部1320は、実機のPLCにインストール可能なプログラムを解釈および実行する。
PLCプログラム作成部1321は、実機のPLCにインストール可能なプログラムの作成機能を提供する。ある局面において、PLCプログラム作成部1321は、ラダーソフトウェア510を含んでいてもよい。その場合、ユーザーは、ラダーソフトウェア510等を介して、PLCプログラム実行部1322に実行させるプログラムを作成し得る。
PLCプログラム実行部1322は、PLCプログラム作成部1321により作成されたプログラムを解釈および実行する。言い換えれば、PLCプログラム実行部1322は、仮想的なPLCである。PLCプログラム実行部1322の動作結果(出力データ等)は、PLC用変数のデータベース1340に格納される。
ロボットコントローラーエミュレーション部1330は、ロボットコントローラー又はロボット本体の機能をエミュレートしてその実行結果をロボットコントローラー用変数のデータベース1350に格納する。ロボットコントローラーエミュレーション部1330は、実機のロボットコントローラーにインストール可能なプログラムを解釈および実行する。
ロボットプログラム作成部1331は、実機のロボットコントローラーにインストール可能なプログラムの作成機能を提供する。ある局面において、ロボットプログラム作成部1331は、ロボットプログラムソフトウェア520を含んでいてもよい。その場合、ユーザーは、ロボットプログラムソフトウェア520等を介して、ロボットプログラム実行部1332に実行させるプログラムを作成し得る。
ロボットプログラム実行部1332は、ロボットプログラム作成部1331により作成されたプログラムを解釈および実行する。言い換えれば、ロボットプログラム実行部1332は、仮想的なロボットコントローラーである。ロボットプログラム実行部1332の動作結果(出力データ等)は、ロボットコントローラー用変数のデータベース1350に格納される。
PLC用変数のデータベース1340は、PLCプログラム実行部1322の動作結果の変数を格納する。当該変数は、PLCのエミュレーション結果をシミュレーションに取り込む際に、3D処理部1108および3D形状衝突検知部1116によって使用され得る。
ロボットコントローラー用変数のデータベース1350は、ロボットプログラム実行部1332の動作結果の変数を格納する。当該変数は、ロボットコントローラーのエミュレーション結果をシミュレーションに取り込む際に、3D処理部1108および3D形状衝突検知部1116によって使用され得る。
ある局面において、PLC用変数のデータベース1340およびロボットコントローラー用変数のデータベース1350は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
図14は、第2のモジュール構成によるシーケンスの前半の一例を示す図である。図15は、第2のモジュール構成によるシーケンスの後半の一例を示す図である。図14および図15のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第2のモジュール構成によるシーケンスを実現し得る。
ステップS1402において、統合シミュレーション実行部1101は、ユーザーからのシミュレーションの開始命令を受け付ける。ステップS1405において、統合シミュレーション実行部1101は、仮想時刻生成部1102に、仮想時刻の生成要求を送信する。ステップS1407において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、起動要求を送信する。仮想ワーク動作スクリプト実行部1105は、起動要求を受信したことに基づいて起動する。
ステップS1410において、仮想時刻生成部1102は、PLCプログラム実行部1322に、起動要求を送信する。ステップS1412において、仮想時刻生成部1102は、ロボットプログラム実行部1332に、起動要求を送信する。ロボットプログラム実行部1332は、当該起動要求を受信したことに基づいて起動する。ある局面において、ステップS1407~S1412までの起動要求は、仮想時刻を含んでいてもよい。
ステップS1415において、仮想時刻生成部1102は、PLCプログラム実行部1322に、演算指令を送信する。PLCプログラム実行部1322は、当該演算指令を受信したことに基づいて予め定められた演算を実行する。ステップS1417において、PLCプログラム実行部1322は、仮想時刻生成部1102に、演算結果を通知する。当該演算結果は、一例として、PLC用変数を含み得る。
ステップS1420において、仮想時刻生成部1102は、ロボットプログラム実行部1332に、演算指令を送信する。PLCプログラム実行部1322は、当該演算指令を受信したことに基づいて予め定められた演算を実行する。ステップS1422において、ロボットプログラム実行部1332は、仮想時刻生成部1102に、演算結果を通知する。当該演算結果は、一例として、ロボットコントローラー用変数を含み得る。
ステップS1425において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、演算指令を送信する。ある局面において、当該演算指令は、ステップS1417の演算結果と、ステップS1422の演算結果とを含んでいてもよい。ステップS1427において、仮想ワーク動作スクリプト実行部1105は、当該演算指令を受信したことに基づいて、仮想ワーク自動実行スクリプトを実行する。仮想ワーク自動実行スクリプトは、例えば、第5のUI1000で作成されたスクリプトを含む。また、図12のシーケンスと異なり、仮想ワーク自動実行スクリプトは、PLCのエミュレーション結果と、ロボットコントローラーのエミュレーション結果とを使用する。
ステップS1430において、仮想ワーク動作スクリプト実行部1105は、衝突フィルタグループ設定部1112に、演算実行通知を送信する。ある局面において、演算実行通知は、オブジェクトの現在位置等を含み得る。他の局面において、演算実行通知は、現在のシーンを示す情報を含んでいてもよい。
ステップS1432において、衝突フィルタグループ設定部1112は、演算実行通知を受信したことに基づいて、衝突フィルタグループを更新する。例えば、衝突フィルタグループ設定部1112は、シーンの切り替わりに基づいて、仮想ワークの所属するグループを変更する。ステップS1435において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、衝突検知依頼を送信する。
ステップS1437において、3D形状衝突検知部1116は、PLCプログラム実行部1322に、PLCが制御する各アクチュエーター(サーボモーター等)の指令値の取得要求を送信する。ここでのPLCが制御する各アクチュエーターの指令値は、エミュレートされたPLCが各アクチュエーターに対して出力した指令値である。ステップS1440において、PLCプログラム実行部1322は、3D形状衝突検知部1116に、PLCが制御する各アクチュエーターの指令値を送信する。
ステップS1442において、3D形状衝突検知部1116は、ロボットプログラム実行部1332に、ロボットの各軸の指令値の取得要求を送信する。ここでのロボットの各軸の指令値は、エミュレートされたロボットコントローラーがロボットを構成する各モーター(各軸)に対して出力した指令値である。ステップS1445において、ロボットプログラム実行部1332は、当該取得要求を受信したことに基づいて、3D形状衝突検知部1116に、ロボットの各軸の指令値を送信する。
ステップS1447において、3D形状衝突検知部1116は、衝突検知依頼を受信したことに基づいて、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。
ステップS1450において、3D形状衝突検知部1116は、衝突フィルタグループ設定部1112に、衝突フィルタグループの取得要求を送信する。ステップS1452において、衝突フィルタグループ設定部1112は、当該取得要求を受信したことに基づいて、3D形状衝突検知部1116に、衝突フィルタグループを送信する。
ステップS1455において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、当該取得要求(ステップS1447)を受信したことに基づいて、仮想ワークの位置を送信する。ある局面において、ステップS1437~S1455の通信は、それぞれ独立して同時並行的に実行されてもよい。
ステップS1457において、3D形状衝突検知部1116は、PLCが制御する各アクチュエーターの指令値と、ロボットの各軸の指令値と、衝突フィルタグループおよび仮想ワークの位置を受信したこととに基づいて、衝突検知処理を実行する。
ステップS1460において、3D形状表示部1109は、PLCプログラム実行部1322に、PLCが制御する各アクチュエーターの指令値の取得要求を送信する。ステップS1462において、PLCプログラム実行部1322は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、PLCが制御する各アクチュエーターの指令値を送信する。
ステップS1465において、3D形状表示部1109は、ロボットプログラム実行部1332に、ロボットの各軸の指令値の取得要求を送信する。ステップS1467において、ロボットプログラム実行部1332は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、ロボットの各軸の指令値を送信する。
ステップS1470において、3D形状表示部1109は、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。ステップS1472において、仮想ワーク動作スクリプト実行部1105は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、仮想ワークの位置を送信する。
ステップS1475において、3D形状表示部1109は、3D形状衝突検知部1116に、衝突状態情報の取得要求を送信する。ステップS1477において、3D形状衝突検知部1116は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、衝突状態情報を送信する。衝突状態情報は、一例として、オブジェクト同士の衝突が発生した場合における、各オブジェクトの識別情報、衝突の発生時刻等を含む。ステップS1480において、3D形状衝突検知部1116は、画面の表示を更新する。例えば、ステップS1480の処理が発生するたびに、ビジュアライザー530の表示が更新される。
(C-5.第3のモジュール構成)
図16は、シミュレーションプログラム100の第3のモジュール構成の一例を示す図である。第3のモジュール構成は、エミュレーション機能としてロボットコントローラーのエミュレーション機能のみを備える点で、上述の各モジュール構成と異なる。
第3のモジュール構成において、シミュレーションプログラム100は、ロボットコントローラーの動作のみをエミュレートする。シミュレーションプログラム100は、ロボットコントローラーの動作のエミュレーションの結果を、シミュレーションに反映する。
図17は、第3のモジュール構成によるシーケンスの前半の一例を示す図である。図18は、第3のモジュール構成によるシーケンスの後半の一例を示す図である。図17および図18のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第3のモジュール構成によるシーケンスを実現し得る。第3のモジュール構成によるシーケンスは、第2のモジュール構成によるシーケンスから、PLCプログラム実行部1322に関する通信処理を除いたものである。なお、第3のモジュール構成によるシーケンスに含まれる全ての処理は、第2のモジュール構成によるシーケンスに含まれている。そのため、これらの処理の説明は繰り返さない。
(C-6.第4のモジュール構成)
図19は、シミュレーションプログラム100の第4のモジュール構成の一例を示す図である。第4のモジュール構成は、エミュレーション機能としてPLCのエミュレーション機能のみを備える点で、上述の各モジュール構成と異なる。
第4のモジュール構成において、シミュレーションプログラム100は、PLCの動作のみをエミュレートする。シミュレーションプログラム100は、PLCの動作のエミュレーションの結果を、シミュレーションに反映する。
図20は、第4のモジュール構成によるシーケンスの前半の一例を示す図である。図21は、第4のモジュール構成によるシーケンスの後半の一例を示す図である。図20および図21のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第4のモジュール構成によるシーケンスを実現し得る。第4のモジュール構成によるシーケンスは、第2のモジュール構成によるシーケンスから、ロボットプログラム実行部1332に関する通信処理を除いたものである。なお、第4のモジュール構成によるシーケンスに含まれる全ての処理は、第2のモジュール構成によるシーケンスに含まれている。そのため、これらの処理の説明は繰り返さない。
(C-7.フローチャート)
図22は、シミュレーションプログラム100のフローチャートの一例である。ある局面において、CPU301は、図22の処理を行うためのプログラム(シミュレーションプログラム100)を2次記憶装置303から1次記憶装置302に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
ステップS2205において、CPU301は、シミュレーションプログラム100を起動する。ステップS2210において、CPU301は、衝突フィルタグループを読み込む。ステップS2215において、CPU301は、ステップS2220以降の処理を繰り返す。ステップS2220において、CPU301は、シミュレーターのサイクル実行を開始する。本ステップにおいて、CPU301は、仮想ワーク動作スクリプトを順次実行する。
ステップS2225において、CPU301は、3D形状の表示状態を更新する。ステップS2230において、CPU301は、仮想ワークの表示座標を更新する。ステップS2225およびS2230にて、ビジュアライザー530の表示が更新される。ステップS2235において、CPU301は、仮想ワークの従属関係の更新処理を実行する。例えば、シーンの切り替わり時において、CPU301は、仮想ワークの従属関係および所属グループを更新する。また、CPU301は、更新後の衝突フィルタグループを参照して、同一のグループに属するオブジェクトの色を同色に変更し得る。
ステップS2240において、CPU301は、ステップS2235にて仮想ワークの従属関係に変更があったか否かを判定する。CPU301は、ステップS2235にて仮想ワークの従属関係に変更があったと判定した場合(ステップS2240にてYES)、制御をステップS2245に移す。そうでない場合(ステップS2240にてNO)、CPU301は、制御をステップS2250に移す。
ステップS2245において、CPU301は、衝突フィルタグループを更新する。例えば、CPU301は、仮想ワークの従属関係と、仮想ワークの属するグループとを更新する。ステップS2250において、CPU301は、更新した衝突フィルタグループを参照して、各オブジェクトの衝突判定を行なう。
ステップS2255において、CPU301は、オブジェクト同士の衝突を検知したか否かを判定する。CPU301は、オブジェクト同士の衝突を検知したと判定した場合(ステップS2255にてYES)、制御をステップS2060に移す。そうでない場合(ステップS2255にてNO)、CPU301は、制御をステップS2015のサイクル実行の先頭に移す。
ステップS2260において、CPU301は、衝突検知の結果をログとして出力する。ユーザーは、当該ログを参照することで、衝突の詳細について知ることができる。ステップS2265において、CPU301は、衝突した3D形状(オブジェクト)の色を変更する。当該処理により、例えば、ビジュアライザー530に表示される衝突したオブジェクトの色が変化し、ユーザーが衝突の発生に気づきやすくなる。
以上説明したように、本実施の形態に従うシミュレーションプログラム100およびシミュレーションプログラム100をインストールされた情報処理装置300は、オブジェクトをグルーピングして管理し、同じグループに属するオブジェクト同士の衝突検知処理の実行を抑制する。こうすることで、シミュレーションプログラム100および情報処理装置300は、シミュレーションに必要な計算リソースを抑制することができる。
さらに、シミュレーションプログラム100および情報処理装置300は、シーンの切り替わりごとに、オブジェクト同士の従属関係およびグルーピングを更新する処理を実行する。こうすることで、シミュレーションプログラム100および情報処理装置300は、シーンごとに動的に不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
<D.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1以上のプロセッサー(301)に命令を実行させるプログラム(100)であって、
前記命令は、
第1のオブジェクト(150)および第2のオブジェクト(140)が属するグループを決定するステップと、
前記第1のオブジェクトおよび前記第2のオブジェクトを含むシミュレーションを実行するステップと、
前記シミュレーションの実行中に、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突判定を行なうステップと、
予め定められた条件を満たすことに基づいて、前記第1のオブジェクトの属するグループを変更するステップとを含み、
前記衝突判定は、前記第1のオブジェクトが属するグループと、前記第2のオブジェクトが属するグループとが異なる場合にのみ実行される、プログラム。
[構成2]
前記予め定められた条件は、前記シミュレーション中における前記第1のオブジェクトが従属する対象により定義される、構成1に記載のプログラム。
[構成3]
前記命令は、前記第1のオブジェクトが前記第2のオブジェクトに接触していない状態から、前記第1のオブジェクトが前記第2のオブジェクトに接触した状態に変化したことに基づいて、前記第1のオブジェクトの従属先を前記第2のオブジェクトに変更するステップをさらに含む、構成2に記載のプログラム。
[構成4]
前記命令は、
前記第1のオブジェクトが接触する対象の変化を監視するステップと、
前記第1のオブジェクトが接触する対象の変化を検出するごとに、前記第1のオブジェクトが触れる対象に基づいて、前記第1のオブジェクトの属するグループを変更するステップとをさらに含む、構成2に記載のプログラム。
[構成5]
前記命令は、前記シミュレーションの実行状況をディスプレイに表示するステップをさらに含み、
前記第1のオブジェクトの色は、
前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属する場合、前記第2のオブジェクトの色と同じであり、
前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属さない場合、前記第2のオブジェクトの色と異なる、構成1~4のいずれかに記載のプログラム。
[構成6]
前記命令は、前記第1のオブジェクトの衝突を検知したことに基づいて、前記第1のオブジェクトまたは前記第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む、構成1~5のいずれかに記載のプログラム。
[構成7]
前記命令は、
前記第1のオブジェクトと同じグループに属するオブジェクトを前記第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、
前記衝突判定において、前記フィルタに含まれるオブジェクトを前記第1のオブジェクトに対する前記衝突判定から除外するステップとをさらに含む、構成1~6のいずれかに記載のプログラム。
[構成8]
前記命令は、
前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係を設定するステップと、
前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係が設定されたことに基づいて、前記第1のオブジェクトと前記第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む、構成1~7のいずれかに記載のプログラム。
[構成9]
前記命令は、
前記予め定められた条件を定義するためのテンプレートを提供するステップと、
前記テンプレートごとに、前記第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む、構成8に記載のプログラム。
[構成10]
前記第1のオブジェクトに関する処理は、前記第1のオブジェクトの従属先のオブジェクトの変更処理を含む、構成9に記載のプログラム。
[構成11]
前記第1のオブジェクトに関する処理は、前記第1のオブジェクトまたは前記第2のオブジェクトの可視化のオン/オフの切り替え処理を含む、構成9または10に記載のプログラム。
[構成12]
前記命令は、
前記テンプレートに基づいて作成された複数のスクリプトを保存するステップと、
前記複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む、構成9~11のいずれかに記載のプログラム。
[構成13]
前記命令は、
前記シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む、構成1~12のいずれかに記載のプログラム。
[構成14]
前記命令は、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突を検知したことに基づいて、前記第1のオブジェクトに関する情報と、前記第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む、構成1~13のいずれかに記載のプログラム。
[構成15]
構成1~14のいずれかに記載のプログラムを格納したメモリー(303)と、
前記プログラムを実行するプロセッサー(301)とを含む、装置。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
20 ライン、100 シミュレーションプログラム、110,120,130 シーン、140 ロボットアーム、150 ワーク、160 台座、170 トレー、200 統合コントローラー、201 IPC装置、202 操作パネル、203 管理装置、204 搬送用ロボット、205 センサー、206 LiDAR、207 クラウド環境、208 データベース、209 シミュレーター、220 上位伝送路、230 下位伝送路、240 フィールド装置、300 情報処理装置、301 CPU、302 1次記憶装置、303 2次記憶装置、304 外部機器インターフェイス、305 入力インターフェイス、306 出力インターフェイス、307 通信インターフェイス、410 仮想PLC、411 PLC本体、412 サーボモーター、420 仮想ロボット、421 ロボットコントローラー、422 ロボット本体、430 EtherCat共有メモリー、431 入力データ、432 出力データ、500 IDE、510 ラダーソフトウェア、520 ロボットプログラムソフトウェア、530 ビジュアライザー、610 エディタ、620 ツールボックス、630 テンプレート、640 条件、710 スクリプトリスト、720 スクリプトの実行設定、1101 統合シミュレーション実行部、1102 仮想時刻生成部、1103 仮想ワーク動作シーケンス設定部、1104 仮想ワーク動作スクリプト作成部、1105 仮想ワーク動作スクリプト実行部、1106 シミュレーション設定、1107 CADデータベース、1108 3D処理部、1109 3D形状表示部、1110 3D形状解析部、1111 3D形状読取部、1112 衝突フィルタグループ設定部、1113 衝突フィルタグループ設定画面、1114 衝突フィルタグループ設定自動変更部、1115 衝突フィルタグループデータベース、1116 3D形状衝突検知部、1117 衝突検知結果データベース、1118 衝突検知結果、1140 仮想ワーク動作スクリプト、1320 PLCエミュレーション部、1321 PLCプログラム作成部、1322 PLCプログラム実行部、1330 ロボットコントローラーエミュレーション部、1331 ロボットプログラム作成部、1332 ロボットプログラム実行部、1340 PLC用変数のデータベース、1350 ロボットコントローラー用変数のデータベース。

Claims (15)

  1. 1以上のプロセッサーに命令を実行させるプログラムであって、
    前記命令は、
    第1のオブジェクトおよび第2のオブジェクトが属するグループを決定するステップと、
    前記第1のオブジェクトおよび前記第2のオブジェクトを含むシミュレーションを実行するステップと、
    前記シミュレーションの実行中に、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突判定を行なうステップと、
    予め定められた条件を満たすことに基づいて、前記第1のオブジェクトの属するグループを変更するステップとを含み、
    前記衝突判定は、前記第1のオブジェクトが属するグループと、前記第2のオブジェクトが属するグループとが異なる場合にのみ実行される、プログラム。
  2. 前記予め定められた条件は、前記シミュレーション中における前記第1のオブジェクトが従属する対象により定義される、請求項1に記載のプログラム。
  3. 前記命令は、前記第1のオブジェクトが前記第2のオブジェクトに接触していない状態から、前記第1のオブジェクトが前記第2のオブジェクトに接触した状態に変化したことに基づいて、前記第1のオブジェクトの従属先を前記第2のオブジェクトに変更するステップをさらに含む、請求項2に記載のプログラム。
  4. 前記命令は、
    前記第1のオブジェクトが接触する対象の変化を監視するステップと、
    前記第1のオブジェクトが接触する対象の変化を検出するごとに、前記第1のオブジェクトが触れる対象に基づいて、前記第1のオブジェクトの属するグループを変更するステップとをさらに含む、請求項2に記載のプログラム。
  5. 前記命令は、前記シミュレーションの実行状況をディスプレイに表示するステップをさらに含み、
    前記第1のオブジェクトの色は、
    前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属する場合、前記第2のオブジェクトの色と同じであり、
    前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属さない場合、前記第2のオブジェクトの色と異なる、請求項1~4のいずれかに記載のプログラム。
  6. 前記命令は、前記第1のオブジェクトの衝突を検知したことに基づいて、前記第1のオブジェクトまたは前記第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む、請求項1~5のいずれかに記載のプログラム。
  7. 前記命令は、
    前記第1のオブジェクトと同じグループに属するオブジェクトを前記第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、
    前記衝突判定において、前記フィルタに含まれるオブジェクトを前記第1のオブジェクトに対する前記衝突判定から除外するステップとをさらに含む、請求項1~6のいずれかに記載のプログラム。
  8. 前記命令は、
    前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係を設定するステップと、
    前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係が設定されたことに基づいて、前記第1のオブジェクトと前記第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む、請求項1~7のいずれかに記載のプログラム。
  9. 前記命令は、
    前記予め定められた条件を定義するためのテンプレートを提供するステップと、
    前記テンプレートごとに、前記第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む、請求項8に記載のプログラム。
  10. 前記第1のオブジェクトに関する処理は、前記第1のオブジェクトの従属先のオブジェクトの変更処理を含む、請求項9に記載のプログラム。
  11. 前記第1のオブジェクトに関する処理は、前記第1のオブジェクトまたは前記第2のオブジェクトの可視化のオン/オフの切り替え処理を含む、請求項9または10に記載のプログラム。
  12. 前記命令は、
    前記テンプレートに基づいて作成された複数のスクリプトを保存するステップと、
    前記複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む、請求項9~11のいずれかに記載のプログラム。
  13. 前記命令は、
    前記シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む、請求項1~12のいずれかに記載のプログラム。
  14. 前記命令は、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突を検知したことに基づいて、前記第1のオブジェクトに関する情報と、前記第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む、請求項1~13のいずれかに記載のプログラム。
  15. 請求項1~14のいずれかに記載のプログラムを格納したメモリーと、
    前記プログラムを実行するプロセッサーとを含む、装置。
JP2020071089A 2020-04-10 2020-04-10 シミュレーションのためのプログラムおよび装置 Active JP7456249B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2020071089A JP7456249B2 (ja) 2020-04-10 2020-04-10 シミュレーションのためのプログラムおよび装置
CN202180022935.8A CN115335811A (zh) 2020-04-10 2021-03-01 用于仿真的程序和装置
US17/915,005 US20230153486A1 (en) 2020-04-10 2021-03-01 Method and device for simulation
EP21785472.8A EP4134918A4 (en) 2020-04-10 2021-03-01 PROGRAM AND DEVICE FOR SIMULATION
PCT/JP2021/007610 WO2021205776A1 (ja) 2020-04-10 2021-03-01 シミュレーションのためのプログラムおよび装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020071089A JP7456249B2 (ja) 2020-04-10 2020-04-10 シミュレーションのためのプログラムおよび装置

Publications (2)

Publication Number Publication Date
JP2021168041A JP2021168041A (ja) 2021-10-21
JP7456249B2 true JP7456249B2 (ja) 2024-03-27

Family

ID=78023231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020071089A Active JP7456249B2 (ja) 2020-04-10 2020-04-10 シミュレーションのためのプログラムおよび装置

Country Status (5)

Country Link
US (1) US20230153486A1 (ja)
EP (1) EP4134918A4 (ja)
JP (1) JP7456249B2 (ja)
CN (1) CN115335811A (ja)
WO (1) WO2021205776A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220055216A1 (en) * 2020-08-20 2022-02-24 Smart Building Tech Co., Ltd. Cloud based computer-implemented system and method for grouping action items on visual programming panel in robot simulator
US11495003B1 (en) * 2020-11-30 2022-11-08 A9.Com, Inc. Placing and manipulating multiple three-dimensional (3D) models using mobile augmented reality
US12008350B2 (en) * 2021-10-22 2024-06-11 EMC IP Holding Company, LLC System and method for fast application initialization with deferred injection
JP2023064893A (ja) * 2021-10-27 2023-05-12 オムロン株式会社 シミュレーションのためのプログラムおよびシステム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012247953A (ja) 2011-05-26 2012-12-13 Sony Computer Entertainment Inc プログラム、情報記憶媒体、情報処理システム及び情報処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3378726B2 (ja) * 1996-05-24 2003-02-17 富士通株式会社 機械装置の設計/製造工程支援装置
JPH10221359A (ja) * 1997-01-31 1998-08-21 Nec Corp 衝突判定装置及び方法
JPH11296571A (ja) * 1998-04-13 1999-10-29 Fujitsu Ltd 干渉チェック装置およびそのプログラム記録媒体
JP6036662B2 (ja) * 2013-11-22 2016-11-30 三菱電機株式会社 ロボットシミュレーション装置、プログラム、記録媒体及び方法
JP5877857B2 (ja) * 2014-03-10 2016-03-08 ファナック株式会社 ワークの取出工程をシミュレーションするロボットシミュレーション装置
JP6052372B2 (ja) 2015-11-12 2016-12-27 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム
JP6438509B2 (ja) * 2017-02-28 2018-12-12 ファナック株式会社 ロボットシステムのシミュレーション装置、シミュレーション方法、およびコンピュータプログラム
JP6846950B2 (ja) * 2017-03-03 2021-03-24 株式会社キーエンス ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012247953A (ja) 2011-05-26 2012-12-13 Sony Computer Entertainment Inc プログラム、情報記憶媒体、情報処理システム及び情報処理方法

Also Published As

Publication number Publication date
JP2021168041A (ja) 2021-10-21
EP4134918A4 (en) 2024-05-01
WO2021205776A1 (ja) 2021-10-14
EP4134918A1 (en) 2023-02-15
US20230153486A1 (en) 2023-05-18
CN115335811A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
JP7456249B2 (ja) シミュレーションのためのプログラムおよび装置
CN112783018B (zh) 工业环境模拟下的机器人数字孪生控制
US9811074B1 (en) Optimization of robot control programs in physics-based simulated environment
US9671777B1 (en) Training robots to execute actions in physics-based virtual environment
US11657527B2 (en) Robotic control based on 3D bounding shape, for an object, generated using edge-depth values for the object
CN105382836A (zh) 示教系统、机器人系统以及示教方法
RU2017114994A (ru) Программирование автоматизации в 3d графическом редакторе с тесно связанной логикой и физическим моделированием
US20140088949A1 (en) Simulation apparatus, simulation method, and simulation program
KR20130049164A (ko) 워크피스의 기계가공의 시뮬레이션
US10761513B2 (en) Information processing device, information processing method, and non-transitory computer-readable recording medium
JP6915441B2 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
US11279023B2 (en) System and method for determining grasping positions for two-handed grasps of industrial objects
CN112784328A (zh) 用于开发自动化系统模型的系统和方法
CN107553496B (zh) 机械臂逆运动学求解方法误差的确定及校正方法和装置
CN104321706A (zh) 模拟装置、模拟方法以及模拟程序
CN114329801A (zh) 统一多个模拟模型
JP2007200082A (ja) 組立性評価方法、そのシステム及びプログラム
Connolly et al. Realistic simulation of robotic grasping tasks: Review and application
WO2021106517A1 (ja) 情報提示装置、情報提示方法、及び情報提示プログラム
JP7074057B2 (ja) 産業用ロボットの作業記述作成装置および産業用ロボットの作業記述作成方法
CN111737830B (zh) 多轴气缸的逻辑块生成方法、系统、装置和存储介质
CN115509171A (zh) 仿真装置、仿真方法以及计算机可读的数据存储介质
JP2022064299A (ja) 生成されたロボットシミュレーションに基づくロボット制御のための技術
JP2023117506A (ja) 多関節ロボットのパスを生成する装置、多関節ロボットのパスを生成する方法および多関節ロボットのパスを生成するプログラム
JP2020074151A (ja) 密結合ロジックおよび物理的シミュレーションを用いた3dグラフィックエディタにおけるオートメーションのプログラミング

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240226

R150 Certificate of patent or registration of utility model

Ref document number: 7456249

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150