IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジーメンス インダストリー ソフトウェア リミテッドの特許一覧

特許7387908多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム
<>
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図1
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図2
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図3-1
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図3-2
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図4
  • 特許-多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-17
(45)【発行日】2023-11-28
(54)【発明の名称】多様なロボットタスクの同時シミュレーションを容易にするための方法およびシステム
(51)【国際特許分類】
   G06F 11/34 20060101AFI20231120BHJP
   G06F 11/36 20060101ALI20231120BHJP
【FI】
G06F11/34 157
G06F11/36 136
【請求項の数】 9
(21)【出願番号】P 2022543642
(86)(22)【出願日】2020-01-20
(65)【公表番号】
(43)【公表日】2023-03-16
(86)【国際出願番号】 IB2020050416
(87)【国際公開番号】W WO2021148839
(87)【国際公開日】2021-07-29
【審査請求日】2022-08-17
(73)【特許権者】
【識別番号】519279937
【氏名又は名称】ジーメンス インダストリー ソフトウェア リミテッド
【氏名又は名称原語表記】Siemens Industry Software Ltd
【住所又は居所原語表記】2 Negev St., 7019900 Airport City, Israel
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】モシェ ハザン
(72)【発明者】
【氏名】ギラード ミルマン
(72)【発明者】
【氏名】イラニット シャヴィット
(72)【発明者】
【氏名】ガル スニール
(72)【発明者】
【氏名】ジル ヴレ
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2000-305803(JP,A)
【文献】米国特許出願公開第2019/0325263(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
仮想環境における複数のロボットの多様なタスクの同時シミュレーションを、データ処理システムによって容易にするための方法であって、
少なくとも1つの仮想ロボットは、1つのロボットモーションタスクおよびロボットロジックタスクのセットを、オペランドセットに基づき、1つの対応するロボットモーションプログラムおよび対応するロボットロジックプログラムのセットを同時に実行することによって、同時にシミュレートするように構成されており、
該方法は、
前記複数のロボットの複数の前記ロボットモーションプログラムおよび複数の前記ロボットロジックプログラムセットの同時実行中、少なくとも1つの所定のロジックプログラムの実行を中断および再開するステップであって、以下のサブステップすなわち、
1)前記所定のロジックプログラムの処理を実行するサブステップと、
2)実行された前記処理において使用されたオペランドのサブセットを収集するサブステップと、
3)収集された前記オペランドのいずれも実行処理中に変更されていなければ、前記所定のロジックプログラムの実行を中断し、収集された前記オペランドのうちの1つが変更されたならば、前記所定のロジックプログラムの実行を再開するするサブステップと、
を繰り返し実施することによって、中断および再開するステップ、
を含む、方法。
【請求項2】
中断されたロジックプログラムの実行を再開するためのトリガは、以下から成るグループすなわち、
・前記サブセットの単一の使用オペランド各々に対する値の変化の単一のイベントと、
・前記サブセットのすべての使用オペランドに対する値の変化の単一のイベントと、
・前記サブセットの使用オペランド各々に対する値の変化を検出するためのチェックと、
・オペランド値の変化を定義するダーティビットにおける変化と、
・前記使用オペランドのサブセットのオペランドのうちの1つの変化を検出するための他の任意の実装と
から成るグループから選択される、請求項1記載の方法。
【請求項3】
サブステップ3)の前記所定のロジックプログラムの実行の中断および再開のサブステップは、
・収集された前記オペランドのサブセットにおけるイベントを登録するステップと、
・前記所定のロジックプログラムをスリープモードに移行させるステップと、
・登録されたオペランドにおいてイベントが発生したならば、前記所定のロジックプログラムを前記スリープモードからウェイクアップさせるステップと、
・登録されたオペランドの前記サブセットを登録解除するステップと、
を含む、
請求項1または2記載の方法。
【請求項4】
プロセッサと、アクセス可能なメモリとを含むデータ処理システムであって、該データ処理システムは、
・複数のロボットの複数のロボットモーションプログラムおよび複数のロボットロジックプログラムセットの同時実行中、少なくとも1つの所定のロジックプログラムの実行を、以下のことすなわち、
1)前記所定のロジックプログラムの処理を実行することと、
2)実行された前記処理において使用されたオペランドのサブセットを収集することと、
3)収集された前記オペランドのいずれも実行処理中に変更されていなければ、前記所定のロジックプログラムの実行を中断し、収集された前記オペランドのうちの1つが変更されたならば、前記所定のロジックプログラムの実行を再開することと、
を繰り返し実施することによって、中断および再開するように構成されている、
データ処理システム。
【請求項5】
中断されたロジックプログラムの実行を再開するためのトリガは、以下から成るグループすなわち、
・前記サブセットの単一の使用オペランド各々に対する値の変化の単一のイベントと、
・前記サブセットのすべての使用オペランドに対する値の変化の単一のイベントと、
・前記サブセットの使用オペランド各々に対する値の変化を検出するためのチェックと、
・オペランド値の変化を定義するダーティビットにおける変化と、
・前記使用オペランドのサブセットのオペランドのうちの1つの変化を検出するための他の任意の実装と、
から成るグループから選択される、請求項4記載のデータ処理システム。
【請求項6】
記所定のロジックプログラムの実行を、以下のことにより中断および再開するように構成されている、すなわち、
・収集された前記オペランドのサブセットにおけるイベントを登録することと、
・前記所定のロジックプログラムをスリープモードに移行させることと、
・登録されたオペランドにおいてイベントが発生したならば、前記所定のロジックプログラムを前記スリープモードからウェイクアップさせることと、
・登録されたオペランドの前記サブセットを登録解除することと、
により中断および再開するように構成されている、
請求項4または5記載のデータ処理システム。
【請求項7】
実行可能な命令によりコーディングされた非一時的コンピュータ可読媒体であって、前記命令によって実行時に1つまたは複数のデータ処理システムは、
複数のロボットの複数のロボットモーションプログラムおよび複数のロボットロジックプログラムセットの同時実行中、少なくとも1つの所定のロジックプログラムの実行を、以下のことすなわち、
1)前記所定のロジックプログラムの処理を実行することと、
2)実行された前記処理において使用されたオペランドのサブセットを収集することと、
3)収集された前記オペランドのいずれも実行処理中に変更されていなければ、前記所定のロジックプログラムの実行を中断し、収集された前記オペランドのうちの1つが変更されたならば、前記所定のロジックプログラムの実行を再開することと、
を繰り返し実施することによって、中断および再開するように構成されている、
非一時的コンピュータ可読媒体。
【請求項8】
中断されたロジックプログラムの実行を再開するためのトリガは、以下から成るグループすなわち、
・前記サブセットの単一の使用オペランド各々に対する値の変化の単一のイベントと、
・前記サブセットのすべての使用オペランドに対する値の変化の単一のイベントと、
・前記サブセットの使用オペランド各々に対する値の変化を検出するためのチェックと、
・オペランド値の変化を定義するダーティビットにおける変化と、
・前記使用オペランドのサブセットのオペランドのうちの1つの変化を検出するための他の任意の実装と、
から成るグループから選択される、請求項7記載の非一時的コンピュータ可読媒体。
【請求項9】
前記所定のロジックプログラムの実行は、以下のことにより中断および再開される、すなわち、
・収集された前記オペランドのサブセットにおけるイベントを登録することと、
・前記所定のロジックプログラムをスリープモードに移行させることと、
・登録されたオペランドにおいてイベントが発生したならば、前記所定のロジックプログラムを前記スリープモードからウェイクアップさせることと、
・登録されたオペランドの前記サブセットを登録解除することと、
により中断および再開される、
請求項7または8記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、全般的には、コンピュータ支援による設計、視覚化および製造(「CAD」)システム、製品ライフサイクル管理(「PLM」)システム、製品データ管理(「PDM」)システム、ならびに製品および他の項目のデータを管理する同等のシステム(これらをまとめて「製品データ管理」システムまたはPDMシステムと称する)に関する。より具体的には、本開示は製造環境シミュレーションに関する。
【0002】
開示の背景
製造設備のロボットセルにおいては、物理的な産業用ロボット各々が、多様なタスクを並列に実行しなければならないことが多い。単一のロボットのこのような多様な並列のタスクは通常、ただ1つのメインロボットモーションタスクといくつかの副次的なロボットロジックタスクとから成る。本明細書で用いられる用語「モーションタスク」とは、典型的にはキネマティックオペレーションセットとロジックオペレーションセットとを含むメインロボットタスクのことを意味する。本明細書で用いられる用語「ロジックタスク」とは、ロジックオペレーションセットを含むがキネマティックオペレーションを含まない副次的なロボットロジックタスクのことを指す。
【0003】
多様な種々のロボットタスクは、物理ロボットが、自身のロボットコントローラのスレッドまたはプロセスにおいて、オペランドセットに基づき相応のロボットプログラムを処理することによって、実行される。このようなロボットプログラムのコードは通常、ロボットプログラミング言語、一般には特定のロボットのベンダーおよびモデルのネイティブ言語で記述される。このようなネイティブロボット言語の例として挙げられるのは、以下に限定されるものではないが、たとえばKuka、ABB,Fanucといったロボットベンダーによってサポートされるネイティブロボット言語である。
【0004】
産業用ロボットのためのシミュレーションソフトウェアアプリケーションは好ましくは、製造現場におけるいくつかの物理的な産業用ロボットによって実施される、すべての種々の多様なタスクのシミュレーションを可能にする要求を満たすのが望ましい。
【0005】
この要求は、生産の最適化および機器の検証を可能にする仮想コミッショニングシステムにとって、特に重要である。
【0006】
多様なロボットタスクのすべてを同時にシミュレートするためには、シミュレーションシステムが、1つの生産セルの複数のロボットコントローラすべてのロボットプログラムをすべて同時に実行する必要がある。
【0007】
今日の生産セルは、ますます多くのロボットを含むようになってきているので、リアルタイムのパフォーマンスを有する完全なロボットセルをシミュレートする能力が重要なものとなる。
【0008】
ロボットシミュレーションは、関与する物理ロボットのすべてのロボットタスクの実行をミラーリングし、可能な限りリアルタイムに近い仮想時間を達成することで実行時間に関して高いパフォーマンスを提供するならば、可能な限りリアリスティックであることが予期される。
【0009】
実際にはたとえば、処理中のPLCコードと同期できるようにし、かつ「タイムアウト」エラーでPLCコードが終了してしまうのを回避するために、高いパフォーマンスの実行時間を有することが重要である。
【0010】
このため、ロボットシミュレーションアプリケーションは、複数のロボットロジックプログラムセットと共に、複数のメインロボットモーションプログラムを同時に高いパフォーマンスで実行することによって、複数のロボットの多様なロボットタスクをリアリスティックにシミュレートしなければならない。
【0011】
数10個のタスクを各々が実行する数10個のロボットを有する複雑な産業用セルについて、この要求が意味するのは、数100個またはそれ以上のロボットプログラムのために高いパフォーマンスでロボットシミュレーションを処理する、ということである。
【0012】
今日、複数のCPU、複数のコンピュータから成るクラスタ、またはスーパーコンピュータにおいて、数100個の並列ロボットプログラムを実行することによって、このような複雑なロボットセルをシミュレートする際に高いパフォーマンスを達成することができる。
【0013】
しかしながら今日の一般的な状況は、産業用のロボットシミュレーションが、たいていはスーパーコンピュータ上ではなく、共通のリソースを有する複数のコンピュータ上で実行される、ということである。
【0014】
したがって複数のロボットを有するセルのために、一般的なコンピュータ上での今日のロボットシミュレーションは典型的には、以下の便宜的な手法のうちの1つまたは複数を用いて実行される。すなわち、
・ロボットモーションプログラムのみを実行する一方、ロボットロジックプログラムを無視する。
・ロボットモーションプログラムを実行する一方、ロボットロジックタスクを、ロジックブロックを使用してそれらのロジックプログラムのネイティブコードを書き換えることによって、手動でモデリングする。
・ロボットモーションプログラムを実行する一方、ロボットロジックタスクを実行可能な外部の仮想ロボットコントローラ(“VRC”)に接続する。
【0015】
残念ながら、一般的なコンピュータ上での目下のロボットシミュレーション技術は以下の欠点すなわち、扱いにくく回避策が必要とされる、シミュレーションエラーが引き起こされる、および/またはリアリスティックな高いパフォーマンスのシミュレーションが提供されない、という欠点を有する。
【0016】
よって、改善された技術が望まれる。
【0017】
開示の概要
開示される様々な実施形態には、仮想環境における複数のロボットの多様なタスクの同時シミュレーションを容易にするための方法、システムおよびコンピュータ可読媒体が含まれる。この場合、少なくとも1つの仮想ロボットは、1つのロボットモーションタスクおよびロボットロジックタスクのセットを、オペランドセットに基づき、1つの対応するロボットモーションプログラムおよび対応するロボットロジックプログラムのセットを同時に実行することによって、同時にシミュレートするように構成されている。方法は、複数のロボットの複数のロボットモーションプログラムおよび複数のロボットロジックプログラムセットの同時実行中、少なくとも1つの所定のロジックプログラムの実行を、以下のことすなわち、この所定のロジックプログラムの処理を実行し、実行された処理において使用されたオペランドのサブセットを収集し、収集されたオペランドのいずれも実行処理中に変更されていなければ、この所定のロジックプログラムの実行を中断し、収集されたオペランドのうちの1つが変更されたならば、この所定のロジックプログラムの実行を再開することを、繰り返し実施することによって、中断および再開するステップを含む。
【0018】
これまでの記載は、以下の詳細な説明を当業者がよりよく理解できるよう、本開示の特徴および技術的な利点をどちらかと言えば大雑把に略述したものである。各請求項の要旨を成す本開示の付加的な特徴および利点については、以下で述べることにする。当業者であれば理解できるように、当業者は開示された着想および特定の実施形態を、本開示と同じ目的を成し遂げるための変更または異なる構造設計のベースとして、ただちに使用することができる。さらに当業者であれば、このような等価の構造が最も広い形態での本開示の着想および範囲から逸脱しないことも十分に理解するであろう。
【0019】
以下の詳細な説明に入る前に、本細書全体を通して用いられるいくつかの用語または表現について、ここで定義しておくのがよいと思われる。用語「を含む」および「を有する」ならびにそれらの派生語は、制限のない包含を意味する。用語「または」は、「および/または」の意味も含む。表現「と関連する」および「それと関連する」ならびにそれらの派生語は、「含む」、「の中に含まれる」、「と相互接続する」、「を含有する」、「の中に含有される」、「に接続する」または「と接続する」、「に結合する」または「と結合する」、「と連携可能である」、「と共働する」、「をはさむ」、「に並置する」、「のすぐ近くにある」、「に結び付けられる」または「と結び付けられる」、「を有する」、「の所有物である」等を意味する場合もある。さらに用語「コントローラ」は、ハードウェアで実装されていようと、ファームウェア、ソフトウェア、またはそれらのうち少なくとも2つの組み合わせで実装されていようと、少なくとも1つのオペレーションを制御する何らかのデバイス、システムまたはそれらの一部分を意味する。ここで留意されたいのは、いずれかの特定のコントローラと関連づけられた機能を、ローカルであろうとリモートであろうと、集中させてもよいし分散させてもよい、という点である。いくつかの用語および表現に対する定義は、本明細書全体にわたって規定されるものであり、当業者であれば理解できるように、このような定義は、大部分の事例ではないにしても数多くの事例において、定義されたこのような用語および表現の以前の使用にも将来の使用にも適用される。いくつかの用語は、幅広い種類の実施形態を含むことができるけれども、添付の特許請求の範囲は、それらの用語を特定の実施形態に明確に限定している場合もある。
【0020】
本開示およびその利点について、いっそう完全に理解するために、添付の図面と併せて以下の説明を参照されたい。なお、図中、対象が同じであれば同じ参照符号が付されている。
【図面の簡単な説明】
【0021】
図1】1つの実施形態を実装可能なデータ処理システムのブロック図を示す図である。
図2】ロボットプログラムビューアの一例のスクリーンショットを示す図である。
図3】ロボットパラメータおよびロボット信号の例示的なビューアのスクリーンショットを示す図である。
図4】開示された実施形態による、1つのロボットの多様なロボットタスクの同時シミュレーションの一例を示すシーケンス図である。
図5】開示された実施形態による、仮想環境における複数のロボットの多様なタスクの同時シミュレーションを容易にするためのフローチャートを示す図である。
【0022】
詳細な説明
本明細書では本開示の基本原理を説明するために、以下で説明する図1図5および種々の実施形態が用いられているが、これらは例示の目的で用いたにすぎず、いかなる点においても本開示の範囲の限定を意図したものではない。当業者であれば理解できるように、本開示の基本原理を、適切に構成された任意の装置において実装することができる。本願の数多くの革新的な着想について、例示的な非限定的実施形態を参照しながら説明する。
【0023】
多様なロボットタスクの同時シミュレーションを容易にするための従来技術は、一般的なコンピュータ上ではパフォーマンスの欠点を有する。本明細書において開示される実施形態は、数多くの技術的利点をもたらすものであり、以下の実施例を含むがそれらに限定されるものではない。
【0024】
実施形態によれば、一般的なコンピュータ上で処理される仮想シミュレーションシステムには、複数のロボットの多様なロボットタスクを許容可能なパフォーマンスで同時にシミュレートする能力が与えられている。
【0025】
実施形態によれば、仮想シミュレーションシステムは、1つの産業用セルにおける複数のロボットの多様なロボットタスクを、リアルタイムに近いパフォーマンスでリアリスティックにシミュレートすることができる。
【0026】
実施形態によれば、仮想シミュレーションシステムは、自身の本来のネイティブコードで記述された多様なロボットプログラムを、許容可能なリアルタイムのパフォーマンスで同時に実行することが容易にされる。
【0027】
実施形態によれば、同時に実行される複数のロボットロジックプログラムのロボットシミュレーションのケースにおいて、CPU時間が節約される。
【0028】
実施形態によれば、リアリスティックな仮想コミッショニングシミュレーションを、たとえばSiemens CorporationのProcess Simulateのようなロボットシミュレーションプラットフォーム上で、それらの本来のネイティブコーディング言語で書かれたロボットプログラムから離れて、処理することができる。
【0029】
実施形態によれば、付加的な外部のVRCコネクションを必要とすることなく、Process Simulateのようなシミュレーションプラットフォーム上で、シミュレーション全体を処理することができるようにすることによって、カプセル化特性がもたらされる。
【0030】
図1には、データ処理システム100のブロック図が示されており、このシステム100において1つの実施形態をたとえば、特に本明細書で説明するプロセスを実行するようにソフトウェアまたは別の手法によって構成されたPDMシステムとして、特に本明細書で説明する相互接続されて通信を行う複数のシステムの各々として、実装可能である。図示されているデータ処理システム100は、レベル2キャッシュ/ブリッジ104に接続されたプロセッサ102を含むことができ、このキャッシュ/ブリッジ104自体は、ローカルシステムバス106に接続されている。ローカルシステムバス106をたとえば、peripheral component interconnect(PCI)アーキテクチャのバスとすることができる。図示されている実施例においてローカルシステムバスには、メインメモリ108およびグラフィックアダプタ110も接続されている。グラフィックアダプタ110を、ディスプレイ111に接続することができる。
【0031】
ローカルエリアネットワーク(LAN)/ワイドエリアネットワーク/ワイヤレス(たとえばWiFi)アダプタ112などのような他の周辺機器も、ローカルシステムバス106に接続することができる。拡張バスインタフェース114によって、ローカルシステムバス106が入出力(I/O)バス116に接続されている。I/Oバス116は、キーボード/マウスアダプタ118、ディスクコントローラ120およびI/Oアダプタ122に接続されている。ディスクコントローラ120を記憶装置126に接続することができ、この記憶装置126を、任意の適切な機械使用可能記憶媒体または機械可読記憶媒体とすることができ、以下に限定されるものではないが、これには、不揮発性で変更不可能にコーディングされたタイプの媒体、たとえばリードオンリメモリ(ROM)または消去可能で電気的にプログラミング可能なリードオンリメモリ(EEPROM)、磁気テープ記憶装置など、およびユーザ記録可能タイプの媒体、たとえばフロッピーディスク、ハードディスクドライブおよびコンパクトディスクリードオンリ記憶装置(CD-ROM)またはディジタル多用途ディスク(DVD)など、さらにその他の公知の光学的、電気的または磁気的な記憶装置が含まれる。
【0032】
図示の実施例では、I/Oバス116にオーディオアダプタ124も接続されており、このオーディオアダプタ124には、サウンド再生のためにスピーカ(図示せず)を接続することができる。キーボード/マウスアダプタ118によって、マウス、トラックボール、トラックポインタ、タッチスクリーンなどのポインティングデバイス(図示せず)のための接続が提供される。
【0033】
当業者であれば理解できるように、図1に図示したハードウェアを特定の実装のために変更することができる。たとえば、光ディスクドライブおよびこれに類するものなど他の周辺機器を、図示されているハードウェアに加えて、またはその代わりに使用することもできる。図示されている実施例は、例示を目的として呈示したものにすぎず、本開示に関して構造上の制限を示唆することを意図したものではない。
【0034】
本開示の1つの実施形態によるデータ処理システムは、グラフィックユーザインタフェースを採用したオペレーティングシステムを含むことができる。オペレーティングシステムによって、多様なディスプレイウィンドウをグラフィックユーザインタフェースに同時に表示させることができ、各ディスプレイウィンドウによって、異なるアプリケーションまたは同じアプリケーションの異なるインスタンスへのインタフェースが提供される。ユーザは、ポインティングデバイスを介して、グラフィックユーザインタフェースにおけるカーソルを操作することができる。カーソルのポジションを変更することができ、かつ/または所望のレスポンスを作動させるために、マウスボタンのクリックなどのイベントを発生させることができる。
【0035】
適切に変更がなされていれば、たとえばWashington州RedmondにあるMicrosoft Corporationの製品であるMicrosoft Windows(登録商標)の1つのバージョンなど、様々な市販のオペレーティングシステムのうちの1つを採用することができる。オペレーティングシステムは、ここで説明される本開示に従って変更または作成される。
【0036】
LAN/WAN/ワイヤレスアダプタ112を(データ処理システム100の一部ではない)ネットワーク130に接続することができ、このネットワークを、当業者に周知のように、インターネットを含むパブリックまたはプライベートの任意のデータ処理システムネットワーク、もしくは複数のネットワークの組み合わせとすることができる。データ処理システム100は、ネットワーク130を介して、同様にデータ処理システム100の一部ではないサーバシステム140と通信することができ、ただしこのサーバシステム140を、たとえば別個のデータ処理システム100として実装することができる。
【0037】
1つの例示的な実施形態において、仮想環境における複数のロボットの多様なタスクの同時シミュレーションを容易にするためのメインアルゴリズムステップについて、以下に示す。
【0038】
例示の目的で前提とするのは、この例示的な実施形態は、30個の複数の産業用ロボットRを備えた1つの産業用セルのシミュレーション状況(図示せず)に関連する、ということであり、ここでロボット各々は、ただ1つのモーションタスクMTと20個のロジックタスクLTi,jのセットとから成る、それぞれ異なるタスクを同時に実行するように構成されており、ただしi=1~30かつj=1~20である。30個のロボットの多様なタスクの同時シミュレーションは、オペランドセットに対し対応する30個のロボットモーションプログラムおよび600個のロボットロジックプログラムを同時に実行することによって実施される。
【0039】
実施形態によれば、ロボットロジックプログラムがシミュレーション全体に対して実質的な影響を及ぼさず、したがって関連する影響条件が発生するまで中断可能であるタイミングを、シミュレーション中に自動判定するためのソフトウェアツールが提供される。ソフトウェアツールによるこの自動判定は、ロボットプログラムの解析およびロボットイベントのシミュレーションに基づく予測であり、この場合、存在するロボット信号、パラメータ、および/または変数に関連する使用オペランドが考慮される。
【0040】
630個の多様なロボットタスクの同時シミュレーションは、対応する630個のロボットプログラムが同時に連続して実行されている間に、1つまたは複数の所定のロジックプログラムの実行を、以下のサブステップを実行して中断および再開することにより、容易にされる。すなわち、
1)所定のロジックプログラムの処理を実行し、
2)実行された処理において使用されたオペランドのサブセットを収集し、
3)収集されたオペランドのいずれも実行処理中に変更されていなければ、所定のロジックプログラムの実行を中断し、収集されたオペランドのうちの1つが変更されたならば、プログラムの実行を再開して、サブステップ4)に進み、
4)サブステップ1)に戻る。
【0041】
図2には、ロボットプログラムビューアの一例のスクリーンショットが示されており、図3には、ロボットパラメータおよびロボット信号のビューアの例のスクリーンショットが示されている。図2および図3のスクリーンショットには、ロボットロジックプログラムおよびモーションプログラムの命令の例、およびロボットプログラムに典型的に含まれているオペランドの例が示されている。実際には各ロボットロジックプログラムを、オペランドに基づくロジック命令のコンテナと見なすことができる。コンピュータプログラミングにおいて、オペランドとは、操作可能な任意のオブジェクトを記述するために使用される用語である。ロボットプログラムにおけるオペランドの例として、以下に限定されるものではないが、ロボット変数、ロボットパラメータおよびロボット信号が挙げられる。ここで留意されたいのは、ロボットRの特定のロボットロジックタスクLTh,kが、たとえいかなるキネマティックオペレーションも含まなくても、この特定のロジックタスクLTh,kの実行は、依然としてロボットRのキネマティックオペレーションに影響を及ぼす可能性がある、ということである。たとえば、このロボットロジックタスクの実行を、人間の動きを追跡するセンサに対する継続的な検査とすることができ、この継続的な検査によれば、特定のセンサ入力に基づいて、検出された人間の存在に起因してロボットの安全停止を起動させることができる。ロボットロジックタスクとロボットモーションタスクとの間のこの相互依存性を、たとえば、特定のロボットロジックプログラム内にオペランドの値を変更する命令を有することによって取得することができ、他方ではこの命令によって、モーションロボットプログラム内でロボットキネマティック命令が実行される。
【0042】
プログラムビューアの例示的なスクリーンショット200を示す図2には、このような相互依存インタラクションの一例が示されている。左側のウィンドウ201には、マーカ初期化のためのロボットロジックプログラム“IN IT_Markers”のコードの一例のロジック命令が示されている。右側のウィンドウ202には、ロジック命令と17行目のキネマティック命令“CALL PRODUCTION START”とを含む、ロボットモーションプログラム“Main”の一例のコード部分が示されている。図2に示されているように、ロジックタスク201は、ロボットモーションタスク202の実行に対する影響203を有しており、これは特に、ロジックプログラム実行中に、オペランドRO[2]が“ON”にセットされ、次いで、ロボットモーションプログラムの実行が“WAIT RO[2]=ON”に進む場合である。
【0043】
ここで留意されたいのは、好都合なことに、種々の多様なロボットタスク間において、相互依存するインタラクションのいくつかの組み合わせを想定することができる、ということである。たとえば、実行中、PLCを介して、ロボットRのロジックタスクLT3,4が、ロボットRのロジックタスクLT7,2に影響を及ぼす可能性があり、他方、この影響は、同じロボットRのモーションタスクMTに影響を及ぼす可能性がある。別の例によれば、実行中、PLCを介して、ロボットRのモーションタスクMTが、ロボットR20のモーションタスクMT20に影響を及ぼす可能性があり、他方、この影響は、PLCを介して、ロボットR18のロジックタスクMT18,2に影響を及ぼす可能性がある。
【0044】
図4を参照した例示的な実施形態において示すように、同じロボットRの多様なロボットタスクMT、LTi,jは、対応する多様なロボットプログラムの同時実行中に、ロボットRのオペランド値の関連する変化を介して互いに相互作用する。
【0045】
ここで留意されたいのは、仮想コミッショニングにおいて、リアルなシミュレーション検証のために、ユーザはロボットを同期させるPLCを接続して、PLCがそれらの信号交換を介してシミュレーション結果全体に影響を与えるようにする、ということである。任意のロボットの各ロボット入力信号はPLCに伝達され、PLCは、自身のPLCコードに従ってロボットへの出力信号を取り戻す。
【0046】
図3には、ロボットパラメータおよびロボット信号の例示的なビューア301、302のスクリーンショット300が示されている。
【0047】
ロボットパラメータビューア301にはロボットパラメータが示されており、これらのロボットパラメータを、ローカルパラメータ、たとえばただ1つの処理中のプログラム内だけに存在するパラメータ、としてもよいし、またはグローバルパラメータ、たとえば同じロボットのそれぞれ異なるロボットプログラムにわたって存在するパラメータ、としてもよい。
【0048】
ロボット信号ビューア302には、PLCを介して複数のロボット間において外部で交換可能な信号データが示されており、これらの信号データを、ロボットの内部での使用のために用いることができる。
【0049】
図4には、開示された実施形態による、1つのロボットの多様なロボットタスクの同時シミュレーションの一例のシーケンス図が示されている。
【0050】
図4のシーケンス図には、1つのロボットモーションタスク411および2つのロボットロジックタスク412、413の、x軸に沿った時間にわたる同時シミュレーションの実施形態の一例が示されている。
【0051】
ロジックタスク412の実線の中にある破線セグメント401が示すのは、対応するタイムインターバルt~tの間、対応するロジックプログラムの実行が、たとえばスリープモードを介して中断され、その後、関連するオペランドにおいて値の変化が発生したときに、たとえばウェイクアップイベント429を介して再開される、ということである。他のロボットタスク412、413については、システムはスリープモードを起動せず、したがって対応する線は実線として示されている。
【0052】
最初に描かれているタイムインターバルにおいては、時間tまではいかなる中断もなく、システムは3つのプログラムすべての実行を同時に処理する。ここで留意されたいのは、描かれた時間フレームすべてに沿って、モーションタスク411のロボットプログラムは、通常のシミュレーションの場合のようにいかなる中断も伴わずに常に実行される一方、実施形態による特定の条件が発生したならば、その後のタイムステージ(図示せず)において、ロジックタスク413のロボットプログラムを中断させることができる、ということである。
【0053】
これらの3つのロボットタスク411、412、413のプログラム実行中、この特定のロボットのロボットプログラムすべてに関連するすべてのオペランドのセットを含むオペランドコンテナ402との交信421~428が行われる。
【0054】
交信の例として挙げられるのは、以下に限定されるものではないが、オペランド値の読み出し、オペランド値の変更、イベント発生に応じたオペランドへの登録および登録解除、オペランド値の変化に応じたアクション、ならびにオペランドコンテナ402内のすべてのオペランドのセットとのその他の交換が挙げられる。2つのロボットロジックタスク412,413について、各プログラムの実行処理中、使用オペランドが収集され、それらが実行処理中に変更されたかがチェックされ、この場合、オペランドは、ロジックプログラム自体によって、同じ特定のロボットの別のプログラムによって、またはたとえばPLCからの信号など外部からの影響によって、変更される可能性がある。
【0055】
タイムインターバルt~tにおいて、タスク411について、プログラムの実行処理中に使用オペランドのサブセットに対する変更が行われていないことが判明し、したがってシステムは、プログラムをスリープモード401に移行させ、使用オペランドのこのサブセットに対する変更の登録428を行い、少なくとも1つのオペランドに対する変更のイベント430に基づき、スリープモードから出て再び処理するためにプログラムのウェイクアップ429を行い、使用オペランドのこのサブセットを登録解除する。
【0056】
本明細書で開示される例示的な実施形態は、1つのロボットモーションタスクおよび同じロボットの2つのロボットロジックタスクに関連するものである。他の実施形態において、複数のロボットのために、より多くのロボットモーションプログラムおよびより多くのロボットロジックタスクを考えることができる。
【0057】
別の例示的な実施形態によれば、アルゴリズムは、以下の例示的なメインステップを含む。すなわち、すべてのモーションおよびロジックプログラムの完全なシミュレーション中(図4にはそれらのうちの3つだけしか示されていない)、所定のロジックプログラム各々について、データ処理システムは、このシミュレーションの実行処理Sに関与する使用オペランドのサブセットOを収集し、オペランド値のいずれに対しても変更が発生していなければ、システムはサブセットOのオペランドのうちの1つの変更を登録し、サブセットOのオペランドの1つを変更するイベント430が生じるまで、この所定のロジックプログラムをスリープモード401に移行させ、その後、システムは、この所定のロジックプログラムをウェイクアップして、サブセットOのオペランドすべてを登録解除する。ある1つのロジックプログラムをスリープ状態に移行できるか、およびいつ実行できるかに関するオペランド条件をチェックするためのステップと、結果として生じる実行すべきアクションとが、完全な同時の連続的なシミュレーションの間、システムによって継続的に反復される。この実施形態の場合、システムは、所定のロジックプログラムを新たなシミュレーションの実行処理Sにおいて再び実行し、この新たなシミュレーションの処理Sに関連する使用オペランドOの新たなサブセットを収集し、その後、必要に応じて、以前に概説したように、スリープおよび/または登録解除/登録のアクション(図示せず)を再び実施する。
【0058】
ここで留意されたいのは、特定のシミュレーションの処理Sにおいて「どの」オペランドサブセットが使用されるのかは、完全なシミュレーションの他の周囲条件にも左右される可能性があることから、同じロジックプログラム各々について、異なるシミュレーションの実行処理S、Sのいずれにおいても、他の使用オペランドサブセットO、Oを収集することができる、ということである。したがって、完全なシミュレーションを実行せずに、ロジックプログラムコードの先験的解析を行うことは、関連する使用オペランドサブセットO,Oに関する適正な情報を特定のシミュレーションの実行処理S,Skごとに提供するためには、不十分であろう。
【0059】
種々の使用オペランドサブセットの決定を明らかにする一例が、以下の表1に示されている。
【表1】
【0060】
表1は、ロジックプログラムおよび収集された種々のオペランドサブセットの一例である。
【0061】
表1は、ロジックプログラムLPPの擬似コードの一例を含むものである。この場合、シミュレーション中、使用オペランドの2つの異なるサブセットが収集される。第1のケースにおいて、“ELSE”条件が満たされているならば、収集された使用オペランドのサブセットは、{DI[20],DI[21],DI[22],RI[1],DO[48]}であり、第2のケースにおいて、“IF”条件が満たされているならば、収集された使用オペランドのサブセットは、{DI[20],DI[21],DI[22],RI[1],DO[48],DI[1],DI[2]}である。
【0062】
実際には、第1のケースのシミュレーションの実行処理中、使用オペランドサブセットは、オペランドDI[3],DI[4],DI[5]を含まず、その理由は、“AND”演算(DI[1] AND DI[2])が“THRUE”の結果を返し、したがって「OR演算」の残りのオペランドDI[3],DI[4],DI[5]を扱う必要がなく、したがってこれらは使用されなかったオペランドである、ということによる。
【0063】
別の例示的な実施形態において、仮想環境における複数のロボットの多様なタスクの同時シミュレーションを容易にするためのメインアルゴリズムステップについて、以下に示す。ここで前提とするのは、複数のロボットが存在し、これらのロボット各々は、1つのロボットモーションプログラムおよびロボットロジックプログラムセットを処理するように構成されている、ということである。
【0064】
完全なシミュレーションの間、システムは、各ロボットモーションタスクのプログラムを通常どおり何ら変更なしに実行する。ロボットロジックタスク各々について、システムは、完全なシミュレーション中、以下のループを連続的に処理することになる。すなわち、
L1)ロボットロジックタスクを1回実行する。
L2)このロボットロジックタスクのシミュレーション中、使用されたすべてのオペランドを収集する。
L3)シミュレーション中、使用されたすべてのオペランドのいずれかが変更されているかをチェックする。
L4)使用されたオペランドが変更されていないならば、
L4.1)項目L2の使用オペランド各々を登録する。
L4.2)ロジックプログラムをスリープモードに移行させる。
L4.3)登録されたオペランドのうちの1つの値の変化に起因して何らかのイベントが発生した場合、ロジックプログラムをウェイクアップする。
L4.4)項目L2のオペランド各々を登録解除する。
L4.5)L1)にジャンプする。
【0065】
実施形態によれば、多量の実行すべき命令を含むロジックプログラムの場合、各シミュレーション実行タイムインターバルにおいて実行される命令の数を、有利には、以下の制約のうちの1つまたは任意の組み合わせを適用することによって、低減することができる。すなわち、
・予め定義された最大命令数を実行する。
・予め定義された最大CPUタイムインターバルを割り当てる。
・実行中の他のロジックプログラムの負荷に基づきダイナミックに平衡調整する。
【0066】
1つの実施形態のアルゴリズムのメインステップを実装するための擬似コードの一例が、以下の表2に示されている。
【表2】
【0067】
表2は、1つの実施形態のアルゴリズムのメインステップの擬似コードである。
【0068】
表2の擬似コードは、例示的な実施形態のアルゴリズムの以下のメインステップに関連するものである。すなわち、ある1つのロジックタスクの使用オペランドを収集し、収集された使用オペランドが変更されているかをチェックし、変更されていないならば、ウェイクアップイベントを呼び出すための使用オペランドのサブセットに登録することによって、このロジックタスクをスリープに設定する。
【0069】
したがって実施形態によれば、有利には以下のような自動ツールが提供され、すなわちこの自動ツールは、自身のオペランドを用いたロボットプログラムの解析と、イベントのロボットシミュレーションとの双方に基づき、シミュレーション中、いつ/どのロボットロジックプログラムが完全なロボットシミュレーション内で実質的な影響を及ぼさないかを判定することができ、これにより、このようなロボットロジックプログラムをスリープに移行させることができ、使用オペランド値の変化が発生したときにだけ、それをウェイクアップさせることができる。
【0070】
中断されたロジックプログラムの実行は、このプログラムの使用オペランドのうちの1つの値の変化が生じたときに復帰させられる。
【0071】
実施形態によれば、使用オペランドのうちの1つにおける値の変化を検出するために、複数の異なる実装オプションを用いることによって、中断されたロジックプログラムの実行をトリガすることができる。例として挙げられるのは、以下に限定されるものではないが、以下の実装オプションのうちの1つまたは複数である。すなわち、
・サブセットの単一の使用オペランド各々に対する単一のイベント。
・サブセットのすべての使用オペランドに対する単一のイベント。
・サブセットのすべてのオペランドを探索して、それらの値のいずれかが変化したかをチェック。
・オペランド値がいつ変更されたのかを表すダーティビットを設け、中断されたロジックタスクの実行を再開するか否かを判定するためのゲートであるダーティビットをオン。
【0072】
実施形態によれば、1つまたは複数のロジックプログラムのコードは、対応する物理ロボットのネイティブ言語で記述される。
【0073】
有利には実施形態を、マルチコア、マルチスレッドおよび/またはマルチプロセスのアーキテクチャにおいて適用することができる。
【0074】
実施形態を、種々のタイプのシステムコンフィギュレーションによって実装することができる。システム構成の例として挙げられるのは、以下に限定されるものではないが、完全なシミュレーションを提供するためにロボットプログラムすべてを実行する単一のシミュレーションモジュールに基づくシステムコンフィギュレーション、および完全なシミュレーションを提供するために互いにインタラクトする2つの別個のシミュレーションモジュールを含むシステムコンフィギュレーションである。2つの別個のシミュレーションモジュールを含むコンフィギュレーションのケースでは、2つの別個のモジュールは、ロボットモーションプログラムすべてをそのままの状態で実行するためのロボットキネマティックシミュレーションモジュールと、実施形態によって教示したような実行中断を伴う最適化された手法で、ロボットロジックタスクすべてを実行するためのロボットロジックシミュレーションモジュールとである。別の実施形態によれば、ハイブリッドコンフィギュレーションを考えることができ、たとえばこの場合、すべてのロジックプログラムのうち選択されたサブセットについてのみ実行の最適化が実施される。
【0075】
図5には、開示された実施形態による、仮想環境における複数のロボットの多様なタスクの同時シミュレーションを容易にするための方法のフローチャート500が示されている。このような方法を、たとえば先に述べた図1のシステム100によって実施することができるけれども、以下のプロセスにおける「システム」を、説明するプロセスを実施するように構成された任意の装置とすることができる。
【0076】
仮想環境において、複数のロボットのうち少なくとも1つのロボットは、1つのロボットモーションタスクおよびロボットロジックタスクのセットを、オペランドセットに基づき、1つの対応するロボットモーションプログラムおよび対応するロボットロジックプログラムのセットを同時に実行することによって、同時にシミュレートするように構成されている。
【0077】
動作段階505において、複数のロボットの複数のロボットモーションプログラムおよび複数のロボットロジックプログラムセットの同時実行中、動作段階510~525のアクションを繰り返し実施することによって、少なくとも1つの所定のロジックプログラムの実行を中断および再開する。
【0078】
動作段階510において、所定のロジックプログラムの処理が実行される。
【0079】
動作段階515において、実行された処理において使用されたオペランドのサブセットが収集される。
【0080】
動作段階520において、収集されたオペランドのうちの1つが実行処理において変更されたのかがチェックされる。
【0081】
動作段階525において、所定のロジックプログラムの実行は、収集されたオペランドのうちの1つが変更されるまで中断される。
【0082】
実施形態によれば、中断されたロジックプログラムの実行を再開するためのトリガを、有利には以下から成るグループから選択することができる。すなわち、
・サブセットの単一の使用オペランド各々に対する値の変化の単一のイベント。
・サブセットのすべての使用オペランドに対する値の変化の単一のイベント。
・サブセットの使用オペランド各々に対する値の変化を検出するためのチェック。
・オペランド値の変化を定義するダーティビットにおける変化。
・使用オペランドサブセットのオペランドのうちの1つの変化を検出するための他の任意の実装。
【0083】
実施形態によれば、所定のロジックプログラムの実行の中断および再開を、好都合なことに、以下のステップによって実施することができる。すなわち、
・収集されたオペランドのサブセットにおけるイベントを登録するステップ。
・所定のロジックプログラムをスリープモードに移行させるステップ。
・登録されたオペランドにおいてイベントが発生したならば、所定のロジックプログラムをスリープモードからウェイクアップさせるステップ。
・登録されたオペランドのサブセットを登録解除するステップ。
【0084】
仮想環境における複数のロボットの多様なタスクの同時シミュレーションを、データ処理システムによって容易にするための方法の1つの実施形態であって、この場合、少なくとも1つの仮想ロボットは、1つのロボットモーションタスクおよびロボットロジックタスクのセットを、オペランドセットに基づき、1つの対応するロボットモーションプログラムおよび対応するロボットロジックプログラムのセットを同時に実行することによって、同時にシミュレートするように構成されており、この実施形態は以下のステップを含む。すなわち、複数のロボットの複数のロボットモーションプログラムおよび複数のロボットロジックプログラムセットの同時実行中、少なくとも1つの所定のロジックプログラムの実行を、以下のサブステップすなわち、
1)所定のロジックプログラムの処理を実行し、
2)実行された処理において使用されたオペランドのサブセットを収集し、
3)収集されたオペランドのいずれも実行処理中に変更されていなければ、所定のロジックプログラムの実行を中断し、収集されたオペランドのうちの1つが変更されたならば、プログラムの実行を再開する
サブステップを繰り返し実施することによって、中断および再開するステップを含む。
【0085】
当然ながら、当業者に自明のとおり、オペレーションシーケンスにより特に指示または要求がなされない限り、上述のプロセスにおけるいくつかのステップを省略してもよいし、同時に実施しても逐次に実施してもよいし、あるいは異なる順序で実施してもよい。
【0086】
当業者に自明のとおり、簡潔かつ明瞭にするために、本開示と共に使用するのに適したすべてのデータ処理システムのあらゆる構造および動作が、本明細書において図示または説明されているわけではない。そうではなく、データ処理システムのうち、本開示に特有のところだけを、または本開示の理解に必要なところだけを図示して説明したにすぎない。データ処理システム100の構造およびオペレーションのその他の部分は、この分野で知られている目下の様々な実装および実施手法のいずれかに準拠させることができる。
【0087】
ここで特に述べておきたいのは、本開示には、完全に機能的なシステムに関連した説明が含まれているけれども、当業者に自明であるとおり、本開示の少なくとも一部分は、機械使用可能媒体、コンピュータ使用可能媒体、またはコンピュータ可読媒体の中に格納された命令として、任意の種類の形態で配布可能なものであり、さらに本開示は、特定のタイプの命令、信号担持媒体または記憶媒体が使用されようとも、配布物を実際に実行するために等しく適用される、ということである。機械使用可能媒体/機械可読媒体、またはコンピュータ使用可能/コンピュータ可読媒体の例として挙げられるのは、リードオンリーメモリ(ROM)など不揮発性で変更不可能にコーディングされたタイプの媒体、または消去可能であり電気的にプログラミング可能なリードオンリメモリ(EEPROM)、ならびにユーザが記録可能なタイプの媒体、たとえばフロッピーディスク、ハードディスクドライブ、およびコンパクトディスクリードオンリメモリ(CD-ROM)、またはディジタル多用途ディスク(DVD)である。
【0088】
これまで本開示の実施例について詳しく説明してきたが、当業者であれば理解できるように、最も広い形態における本開示の着想および範囲を逸脱することなく、本明細書で開示した様々な変更、置き換え、変形ならびに改善を行うことができる。
【0089】
本願の記載内容のいずれも、何らかの特定の部材、ステップまたは機能が特許請求の範囲に含まれなければならない必須の要素である、という趣旨で読まれるべきではなく、特許保護対象は、特許が付与された請求項によってのみ定められるものである。
図1
図2
図3-1】
図3-2】
図4
図5