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

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

▶ オムロン株式会社の特許一覧

特開2025-11445情報処理システム、情報処理方法およびプログラム
<>
  • 特開-情報処理システム、情報処理方法およびプログラム 図1
  • 特開-情報処理システム、情報処理方法およびプログラム 図2
  • 特開-情報処理システム、情報処理方法およびプログラム 図3
  • 特開-情報処理システム、情報処理方法およびプログラム 図4
  • 特開-情報処理システム、情報処理方法およびプログラム 図5
  • 特開-情報処理システム、情報処理方法およびプログラム 図6
  • 特開-情報処理システム、情報処理方法およびプログラム 図7
  • 特開-情報処理システム、情報処理方法およびプログラム 図8
  • 特開-情報処理システム、情報処理方法およびプログラム 図9
  • 特開-情報処理システム、情報処理方法およびプログラム 図10
  • 特開-情報処理システム、情報処理方法およびプログラム 図11
  • 特開-情報処理システム、情報処理方法およびプログラム 図12
  • 特開-情報処理システム、情報処理方法およびプログラム 図13
  • 特開-情報処理システム、情報処理方法およびプログラム 図14
  • 特開-情報処理システム、情報処理方法およびプログラム 図15
  • 特開-情報処理システム、情報処理方法およびプログラム 図16
  • 特開-情報処理システム、情報処理方法およびプログラム 図17
  • 特開-情報処理システム、情報処理方法およびプログラム 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025011445
(43)【公開日】2025-01-24
(54)【発明の名称】情報処理システム、情報処理方法およびプログラム
(51)【国際特許分類】
   G05B 23/02 20060101AFI20250117BHJP
   G06T 19/00 20110101ALI20250117BHJP
【FI】
G05B23/02 301Z
G06T19/00 A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023113566
(22)【出願日】2023-07-11
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】大貫 はる奈
(72)【発明者】
【氏名】岩村 慎太郎
(72)【発明者】
【氏名】玉嶋 大輔
(72)【発明者】
【氏名】重森 弓束
(72)【発明者】
【氏名】真鍋 美樹子
【テーマコード(参考)】
3C223
5B050
【Fターム(参考)】
3C223AA11
3C223BA03
3C223BB08
3C223BB17
3C223CC02
3C223DD03
3C223EB02
3C223FF13
3C223FF23
3C223GG01
3C223HH07
5B050BA08
5B050BA09
5B050CA07
5B050DA04
5B050EA07
5B050EA19
5B050FA05
(57)【要約】
【課題】生産設備の異常な動作の原因調査を適切に支援可能な情報処理システムを提供する。
【解決手段】情報処理システムは、対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶するデータベースを備える。情報処理システムは、制御装置によって制御されない物体の第1仮想モデルの運動をシミュレートし、対象期間における第1仮想モデルの位置姿勢の第2時系列データをデータベースに格納する。情報処理システムは、第1仮想モデルと制御対象の第2仮想モデルとを含む仮想画像を生成する。仮想画像において、第2時系列データが示す指定時刻の位置姿勢をとるように第1仮想モデルが可視化され、第1時系列データが示す指定時刻の1以上の変数の値に対応する制御対象の状態を有するように第2仮想モデルが可視化される。
【選択図】図1
【特許請求の範囲】
【請求項1】
情報処理システムであって、
対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶する1以上のデータベースと、
前記第1時系列データと、前記対象期間における前記制御装置の制御対象と前記制御装置によって制御されない物体との従属関係と、前記物体の物理特性とに基づいて、前記対象期間における前記物体の第1仮想モデルの運動をシミュレートするシミュレータと、
前記シミュレータによるシミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データを取得し、前記第2時系列データを前記1以上のデータベースに格納するデータ取得モジュールと、
前記第1仮想モデルと前記制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成する第1可視化モジュールとを備え、
前記第1可視化モジュールは、前記仮想画像において、
前記第2時系列データが示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化し、
前記第1時系列データが示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象の状態を有するように前記第2仮想モデルを可視化する、情報処理システム。
【請求項2】
前記物体を撮影することにより得られた動画に基づいて、前記対象期間における前記物体の形状変化を解析する形状解析モジュールを備え、
前記データ取得モジュールは、前記形状解析モジュールによる解析結果から、前記対象期間における前記物体の形状の第3時系列データを取得し、前記第3時系列データを前記1以上のデータベースに格納し、
前記第1可視化モジュールは、前記仮想画像において、前記第3時系列データが示す前記指定時刻の形状を有するように前記第1仮想モデルを可視化する、請求項1に記載の情報処理システム。
【請求項3】
前記シミュレータは、
前記対象期間のうちの第1区間において、前記第1時系列データが示す前記1以上の変数の値に基づいて、前記第2仮想モデルの動作をシミュレートし、前記第2仮想モデルに追従するように前記第1仮想モデルの運動をシミュレートし、
前記対象期間のうち前記第1区間以外の第2区間において、前記物理特性に基づいて、前記第1仮想モデルの運動をシミュレートする、請求項1に記載の情報処理システム。
【請求項4】
前記指定時刻における前記1以上の変数の値が可視化された第1ウィンドウのデータを生成する1以上の第2可視化モジュールと、
前記第1ウィンドウと、前記仮想画像を含む第2ウィンドウとをディスプレイ上に並べて表示させる表示コントローラとをさらに備える、請求項1に記載の情報処理システム。
【請求項5】
前記1以上の第2可視化モジュールは、前記1以上の変数の値の推移を示すグラフを可視化する波形表示モジュールと、前記制御装置における前記制御対象を制御するための制御プログラムの実行状況を可視化するプログラム表示モジュールとの少なくとも1つを含む、請求項4に記載の情報処理システム。
【請求項6】
前記制御対象を撮影することにより得られた動画のうち前記指定時刻におけるフレームを含む第1ウィンドウのデータを生成する動画再生モジュールと、
前記第1ウィンドウと、前記仮想画像を含む第2ウィンドウとをディスプレイ上に並べて表示させる表示コントローラとをさらに備える、請求項1に記載の情報処理システム。
【請求項7】
対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶する1以上のデータベースを用いた情報処理方法であって、
1以上のプロセッサが、前記第1時系列データと、前記対象期間における前記制御装置の制御対象と前記制御装置によって制御されない物体との従属関係と、前記物体の物理特性とに基づいて、前記対象期間における前記物体の第1仮想モデルの運動をシミュレートすることと、
前記1以上のプロセッサが、シミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データを取得し、前記第2時系列データを前記1以上のデータベースに格納することと、
前記1以上のプロセッサが、前記第1仮想モデルと前記制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成することとを備え、
前記仮想画像を生成することは、
前記1以上のプロセッサが、前記仮想画像において、前記第2時系列データが示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化することと、
前記1以上のプロセッサが、前記仮想画像において、前記第1時系列データが示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象の状態を有するように前記第2仮想モデルを可視化することとを含む、情報処理方法。
【請求項8】
対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶する1以上のデータベースを用いた情報処理方法をコンピュータに実行させるプログラムであって、
前記情報処理方法は、
前記第1時系列データと、前記対象期間における前記制御装置の制御対象と前記制御装置によって制御されない物体との従属関係と、前記物体の物理特性とに基づいて、前記対象期間における前記物体の第1仮想モデルの運動をシミュレートすることと、
シミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データを取得し、前記第2時系列データを前記1以上のデータベースに格納することと、
前記第1仮想モデルと前記制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成することとを備え、
前記仮想画像を生成することは、
前記仮想画像において、前記第2時系列データが示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化することと、
前記仮想画像において、前記第1時系列データが示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象の状態を有するように前記第2仮想モデルを可視化することとを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
生産設備の異常な動作の原因調査を支援する装置が開発されている。特開2022-99341号公報(特許文献1)は、稼働部の状態と制御信号の入出力データとを記録したログデータに基づいて、仮想的な制御対象の動作を再現させた動作再現模擬データを生成し、動作再現模擬データを表示部に表示する技術を開示している。特許文献1に開示の技術は、さらに、ワークの初期状態とログデータとに基づいて、指定時刻におけるワークの状態も再現する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2022-99341号公報
【非特許文献】
【0004】
【非特許文献1】"Pixel2Mesh++", [online], [令和5年6月5日検索]、インターネット〈URL:https://github.com/walsvid/Pixel2MeshPlusPlus〉
【非特許文献2】Rana Hanocka, Gal Metzer, Raja Giryes, Daniel Cohen-Or, "Point2Mesh A Self-Prior for Deformable Meshes", [online], [令和5年6月5日検索]、インターネット〈URL:https://ranahanocka.github.io/point2mesh/〉
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示の技術によれば、ワークの状態は、ワークと稼働部とが接触していることを前提として再現される。生産設備に異常が発生した場合、ワークは、稼働部から離れ得る。例えば、ワークは、ロボットハンドから離れて自由落下し得る。特許文献1に開示の技術では、このようなワークの状態は再現されない。
【0006】
物体の自由落下のような物理現象をシミュレートする物理シミュレーションが知られている。しかしながら、物理シミュレーションでは、物体の将来の運動のみがシミュレートされる。すなわち、物理シミュレーションでは、時刻を戻すことができない。そのため、物理シミュレーションを行ないながら異常な動作の原因を調査する場合、ユーザは、再現時刻を戻して、物体の状態を確認できない。
【0007】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、生産設備の異常な動作の原因調査を適切に支援可能な情報処理システム、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
本開示の一例によれば、情報処理システムは、1以上のデータベースと、シミュレータと、データ取得モジュールと、第1可視化モジュールとを備える。1以上のデータベースは、対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶する。シミュレータは、第1時系列データと、対象期間における制御装置の制御対象と制御装置によって制御されない物体との従属関係と、物体の物理特性とに基づいて、対象期間における物体の第1仮想モデルの運動をシミュレートする。データ取得モジュールは、シミュレータによるシミュレーション結果から、対象期間における第1仮想モデルの位置姿勢の第2時系列データを取得し、第2時系列データを1以上のデータベースに格納する。第1可視化モジュールは、第1仮想モデルと制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成する。第1可視化モジュールは、仮想画像において、第2時系列データが示す指定時刻の位置姿勢をとるように第1仮想モデルを可視化し、第1時系列データが示す指定時刻の1以上の変数の値に対応する制御対象の状態を有するように第2仮想モデルを可視化する。
【0009】
この開示によれば、仮想画像において第1仮想モデルが可視化されるときには、シミュレータによって第1仮想モデルの運動がシミュレートされない。そのため、第1可視化モジュールは、時刻が戻されたとしても、仮想画像において、戻された後の時刻の位置姿勢をとるように第1仮想モデルを可視化できる。これにより、ユーザは、時刻を戻したり、進めたりしながら、対象期間における物体の第1仮想モデルおよび制御対象の第2仮想モデルを含む仮想画像を確認できる。その結果、ユーザは、対象期間における生産設備の異常の原因を調査しやすくなる。すなわち、情報処理システムは、生産設備の異常な動作の原因調査を適切に支援できる。
【0010】
上述の開示において、情報処理システムは、物体を撮影することにより得られた動画に基づいて、対象期間における物体の形状変化を解析する形状解析モジュールを備える。データ取得モジュールは、形状解析モジュールによる解析結果から、対象期間における物体の形状の第3時系列データを取得し、第3時系列データを1以上のデータベースに格納する。第1可視化モジュールは、仮想画像において、第3時系列データが示す指定時刻の形状を有するように第1仮想モデルを可視化する。
【0011】
この開示によれば、物体の形状変化に合わせて、仮想画像において第1仮想モデルの形状が変化する。これにより、ユーザは、対象期間における物体の形状変化の様子を把握しやすくなる。
【0012】
上述の開示において、シミュレータは、対象期間のうちの第1区間において、第1時系列データが示す1以上の変数の値に基づいて、第2仮想モデルの動作をシミュレートし、第2仮想モデルに追従するように第1仮想モデルの運動をシミュレートする。シミュレータは、対象期間のうち第1区間以外の第2区間において、物理特性に基づいて、第1仮想モデルの運動をシミュレートする。
【0013】
この開示によれば、第1仮想モデルの運動は、物体と制御対象との従属関係に応じて、適切にシミュレートされる。
【0014】
上述の開示において、情報処理システムは、指定時刻における1以上の変数の値が可視化された第1ウィンドウのデータを生成する1以上の第2可視化モジュールと、第1ウィンドウと、仮想画像を含む第2ウィンドウとをディスプレイ上に並べて表示させる表示コントローラとをさらに備える。
【0015】
例えば、1以上の第2可視化モジュールは、1以上の変数の値の推移を示すグラフを可視化する波形表示モジュールと、制御装置における制御対象を制御するための制御プログラムの実行状況を可視化するプログラム表示モジュールとの少なくとも1つを含む。
【0016】
この開示によれば、ユーザは、仮想画像を含む第2ウィンドウと、1以上の変数の値が可視化された第1ウィンドウとを同時に確認できる。
【0017】
上述の開示において、情報処理システムは、制御対象を撮影することにより得られた動画のうち指定時刻におけるフレームを含む第1ウィンドウのデータを生成する動画再生モジュールと、第1ウィンドウと、仮想画像を含む第2ウィンドウとをディスプレイ上に並べて表示させる表示コントローラとをさらに備える。この開示によれば、ユーザは、仮想画像と実動画とを同時に確認できる。
【0018】
本開示の別の例によれば、情報処理方法は、対象期間における制御装置の制御状態を表す1以上の変数の値の第1時系列データを記憶する1以上のデータベースを用いる。情報処理方法は、1以上のプロセッサが、第1時系列データと、対象期間における制御装置の制御対象と制御装置によって制御されない物体との従属関係と、物体の物理特性とに基づいて、対象期間における物体の第1仮想モデルの運動をシミュレートすることを備える。情報処理方法は、1以上のプロセッサが、シミュレーション結果から、対象期間における第1仮想モデルの位置姿勢の第2時系列データを取得し、第2時系列データを1以上のデータベースに格納することを備える。情報処理方法は、1以上のプロセッサが、第1仮想モデルと制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成することとを備える。仮想画像を生成することは、1以上のプロセッサが、仮想画像において、第2時系列データが示す指定時刻の位置姿勢をとるように第1仮想モデルを可視化することと、1以上のプロセッサが、仮想画像において、第1時系列データが示す指定時刻の1以上の変数の値に対応する制御対象の状態を有するように第2仮想モデルを可視化することとを含む。
【0019】
本開示のさらに別の例によれば、プログラムは、上記の情報処理方法をコンピュータに実行させる。
【0020】
これらの開示によっても、情報処理方法およびプログラムは、生産設備の異常な動作の原因調査を適切に支援できる。
【発明の効果】
【0021】
本開示によれば、情報処理システム、情報処理方法およびプログラムは、生産設備の異常な動作の原因調査を適切に支援できる。
【図面の簡単な説明】
【0022】
図1】実施の形態に係る情報処理システムが適用される製造システムの一例を模式的に例示する図である。
図2】実施の形態に係る製造システムの全体構成の一例を示す模式図である。
図3】実施の形態に従う制御装置のハードウェア構成の一例を示す模式図である。
図4】PCの事前準備処理に関するソフトウェア構成の一例を示すブロック図である。
図5】対応関係情報の一例を示す図である。
図6】初期情報の一例を示す図である。
図7】メッシュの生成方法の一例を説明する図である。
図8】データベースのデータ構造の一例を示す図である。
図9】PCの情報提供処理に関するソフトウェア構成の一例を示すブロック図である。
図10】操作ウィンドウの一例を示す図である。
図11】初回の事前準備処理の流れの一例を示すフローチャートである。
図12】2回目以降の事前準備処理の流れの一例を示すフローチャートである。
図13図10に示す再生ボタンがクリックされたときの情報提供処理の流れの一例を示すフローチャートである。
図14図10に示すコマ戻しボタンまたはコマ送りボタンがクリックされたときの情報提供処理の流れの一例を示すフローチャートである。
図15図13または図14に示すステップS27のサブルーチンの処理の流れの一例を示すフローチャートである。
図16】運用フェーズにおいて表示される画面の一例を示す図である。
図17】運用フェーズにおいて表示される画面の別の例を示す図である。
図18】第1クエリ生成部によって参照される変換テーブルの一例を示す図である。
【発明を実施するための形態】
【0023】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。本明細書において、特に示さない限り、「または」の用語は、「または」の意味に加えて、「および」の意味を包含する。
【0024】
§1 適用例
図1は、実施の形態に係る情報処理システムが適用される製造システムの一例を模式的に例示する図である。図1に示すように、製造システム1は、情報処理システム100と、制御装置200と、制御対象300とを備える。
【0025】
制御装置200は、典型的には、プログラマブルロジックコントローラ(PLC)である。制御装置200は、制御対象300と接続され、予め作成された制御プログラムに従って制御対象300を制御する。
【0026】
制御対象300は、生産設備または生産ラインなど(「フィールド」とも称される。)に対して何らかの物理的な作用を与えるアクチュエータ、フィールドに設置される各種のセンサ、またはフィールドとの間で情報を遣り取りする入出力装置などを含み得る。図1に示す例では、制御対象300は、ロボットを含み、ワーク400に対する加工、搬送などを行なう。ワーク400は、制御装置200によって制御されない物体の一例である。
【0027】
制御装置200は、制御状態を表す1以上の変数の値を保持し、1以上の変数の値を用いた演算を行なうことにより、制御対象300を制御する。1以上の変数は、制御対象300の状態を示す各種の変数と、制御対象300へ出力される各種の変数とを含む。
【0028】
制御装置200は、数100μsecオーダ~数10msecオーダの1以上の制御周期のうちのいずれかの制御周期で、保持している変数の値を更新する。制御周期は、変数の種類に応じて予め設定される。例えば、制御装置200は、一部の変数の値を1msecで更新し、別の一部の変数の値を2msecで更新する。以下、1以上の制御周期のうち最も短い制御周期を「最短制御周期」と称する。
【0029】
制御装置200は、制御対象300に何らかの異常が発生したタイミングを含む対象期間において保持していた1以上の変数の値の第1時系列データ11を生成する。具体的には、制御装置200は、対象期間における最短制御周期ごとの各変数の値を記録することにより第1時系列データ11を生成する。第1時系列データ11は、所定のタイミングにおいて、情報処理システム100に転送される。
【0030】
情報処理システム100は、1以上のコンピュータによって構成される。情報処理システム100は、データベース10と、シミュレータ20と、データ取得モジュール30と、第1可視化モジュール40とを備える。
【0031】
データベース10は、対象期間における制御装置200の制御状態を表す1以上の変数の値の第1時系列データ11を記憶する。
【0032】
シミュレータ20は、仮想空間における第1仮想モデルの運動および第2仮想モデルの動作をシミュレートする。第1仮想モデルは、ワーク400の3次元形状を表すモデルである。第2仮想モデルは、制御対象300の3次元形状を表すモデルである。
【0033】
本実施の形態において、シミュレータ20は、第1時系列データ11と、対象期間における制御対象300とワーク400との従属関係と、ワーク400の物理特性とに基づいて、対象期間におけるワーク400の第1仮想モデルの運動をシミュレートする。ワーク400が制御対象300に従属することは、ワーク400が制御対象300の動作に追従することを意味する。
【0034】
例えば、シミュレータ20は、ワーク400が制御対象300に従属している第1区間において、第1時系列データ11が示す1以上の変数の値に基づいて、第2仮想モデルの動作をシミュレートする。さらに、シミュレータ20は、第2仮想モデルに追従するように第1仮想モデルの運動をシミュレートする。
【0035】
シミュレータ20は、ワーク400が制御対象300に従属していない第2区間において、ワーク400の物理特性に基づいて、第1仮想モデルの運動をシミュレートする。
【0036】
データ取得モジュール30は、シミュレータ20によるシミュレーション結果から、対象期間における第1仮想モデルの位置姿勢の第2時系列データ12を取得し、第2時系列データ12をデータベース10に格納する。
【0037】
第1可視化モジュール40は、ワーク400の第1仮想モデルと制御対象300の第2仮想モデルとが重ねて可視化される仮想画像を生成する。第1可視化モジュール40は、仮想画像において、第2時系列データ12が示す指定時刻の位置姿勢をとるように第1仮想モデルを可視化する。さらに、第1可視化モジュール40は、仮想画像において、第1時系列データ11が示す指定時刻の1以上の変数の値に対応する制御対象300の状態を有するように第2仮想モデルを可視化する。
【0038】
本実施の形態によれば、第1時系列データ11と、対象期間における制御対象300とワーク400との従属関係と、ワーク400の物理特性とに基づいて、対象期間におけるワーク400の第1仮想モデルの運動がシミュレートされる。そのため、ワーク400が制御対象300に従属していない場合であっても、ワーク400の物理特性に基づいて、対象期間におけるワーク400の第1仮想モデルの運動がシミュレートされる。
【0039】
シミュレータ20によるシミュレーションが一旦実施された後に、シミュレーション結果から対象期間における第1仮想モデルの位置姿勢の第2時系列データ12が取得され、第2時系列データ12がデータベース10に格納される。第1可視化モジュール40は、第2時系列データ12に基づいて、仮想画像において第1仮想モデルを可視化する。すなわち、仮想画像において第1仮想モデルが可視化されるときには、シミュレータ20によって第1仮想モデルの運動がシミュレートされない。そのため、第1可視化モジュール40は、時刻が戻されたとしても、仮想画像において、戻された後の時刻の位置姿勢をとるように第1仮想モデルを可視化できる。これにより、ユーザは、時刻を戻したり、進めたりしながら、対象期間におけるワーク400の第1仮想モデルおよび制御対象300の第2仮想モデルを含む仮想画像を確認できる。その結果、ユーザは、対象期間における生産設備の異常の原因を調査しやすくなる。
【0040】
このように、本実施の形態によれば、情報処理システム100は、生産設備の異常な動作の原因調査を適切に支援できる。
【0041】
§2 具体例
<製造システムの全体構成>
図2は、実施の形態に係る製造システムの全体構成の一例を示す模式図である。図2に示されるように、製造システム1は、情報処理システム100を構成するパーソナルコンピュータ(以下、「PC100A」と称する)と、制御装置200と、制御対象300と、1以上のネットワークカメラ500と、記憶媒体700とを備える。PC100A、制御装置200および1以上のネットワークカメラ500は、例えば汎用的なEthernet(登録商標)を用いて互いに通信可能である。なお、PC100Aと制御装置200とは、別の通信手段(例えば、Universal Serial Bus(USB))を用いて互いに通信してもよい。
【0042】
1以上のネットワークカメラ500は、フィールドに設置され、制御対象300の少なくとも一部を撮影する。1以上のネットワークカメラ500の撮影により生成された動画データ14は、PC100Aに転送される。あるいは、動画データ14は、図示しないネットワークストレージに保存されてもよい。動画データ14は、撮影時刻ごとのフレーム(コマ画像)を示す。
【0043】
記憶媒体700は、揮発性記憶媒体、不揮発性記憶媒体、CF(Compact Flash)もしくはSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体を含む。記憶媒体700は、例えばSDメモリカードである。
【0044】
PC100Aは、典型的には、汎用的なアーキテクチャを有しているコンピュータである。図2に示されるように、PC100Aは、CPU(Central Processing Unit)またはMPU(Micro Processing Unit)などのプロセッサ101と、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性の記憶装置で構成されるメモリ102と、ストレージ103と、入力インターフェイス104と、表示コントローラ105と、通信インターフェイス106と、リーダ/ライタ107とを含む。これらの各部は、バスを介して互いにデータ通信が可能なように接続されている。
【0045】
プロセッサ101は、ストレージ103に格納されたプログラムを読み出して、メモリ102に展開する。プロセッサ101は、展開されたプログラムを実行する。
【0046】
ストレージ103は、例えば、HDD(Hard Disc Drive)、SSD(Solid State Drive)、またはフラッシュメモリなどの不揮発性記憶装置で構成される。ストレージ103は、プロセッサ101によって実行されるプログラムと、データベース10とを記憶する。
【0047】
プロセッサ101によって実行されるプログラムは、開発プログラム131と、ビューワープログラム132と、データ再現プログラム133と、シミュレーションプログラム134と、形状解析プログラム135と、データベース構築プログラム136とを含む。
【0048】
開発プログラム131は、主に、制御装置200が使用する制御プログラムの開発を支援するための命令群を含む。開発プログラム131は、ユーザ入力に応じて、制御プログラムによって使用される1以上の変数の各々の名称(以下、「変数名」と称する)を設定する機能を有する。さらに、開発プログラム131は、第1時系列データ11の生成に関する設定機能と、制御装置200による制御プログラムの実行状況をモニタリングする機能(以下、「プログラムモニタ機能」と称する)を提供する。
【0049】
開発プログラム131を用いて開発された制御プログラムは、制御装置200にインストールされる。さらに、開発プログラム131の設定機能を用いて生成されたモニタリング設定データは、制御装置200に転送される。
【0050】
ビューワープログラム132は、各種の情報を可視化してユーザに提供するための命令群を含む。ビューワープログラム132は、1以上の変数の値の推移を示すグラフを表示する機能(以下、「変数グラフ表示機能」と称する)と、動画データ14によって示される動画の再生機能とを提供する。
【0051】
データ再現プログラム133は、過去のデータを再現するための命令群を含む。データ再現プログラム133は、時刻を管理する機能と、再現対象のデータを要求する機能(以下、「データ要求機能」と称する)とを含む。データ要求機能は、クエリを生成する機能と、クエリを用いてデータベース10から取得対象データを取得する機能とを含む。
【0052】
シミュレーションプログラム134は、仮想空間におけるワーク400の第1仮想モデルの運動および制御対象300の第2仮想モデルの動作をシミュレートするための命令群を含む。シミュレーションプログラム134は、第2仮想モデルの動作を再現する機能(以下、「動作再現機能」と称する)、第1仮想モデルのようなオブジェクトを動かすためのスクリプトと、物体の物理現象をシミュレートする物理シミュレーション機能と、データ管理機能と、モデル表示機能とを含む。
【0053】
なお、スクリプトは、例えばC#形式で記述され、スタートメソッドとレンダーメソッドとを含む。スタートメソッドは、スクリプトの実行開始時に1回だけ実行される。レンダーメソッドは、周期的に実行される。
【0054】
形状解析プログラム135は、動画に基づいて、動画に写る物体の形状変化を解析するための命令群を含む。
【0055】
データベース構築プログラム136は、データベース10に各種のデータを格納するための命令群を含む。
【0056】
データベース10は、第1時系列データ11と、第2時系列データ12と、第3時系列データ13と、動画データ14とを記憶する。第1時系列データ11は、制御装置200から転送され、対象期間における制御装置200の制御状態を表す1以上の変数の時刻ごとの値を示す。第2時系列データ12は、シミュレーションプログラム134のスクリプトまたは物理シミュレーション機能の実行に応じて生成され、対象期間における第1仮想モデルの時刻ごとの位置姿勢を示す。第3時系列データ13は、形状解析プログラム135の実行に応じて生成され、対象期間におけるワーク400の時刻ごとの形状を示す。動画データ14は、ネットワークカメラ500の撮影によって生成される。
【0057】
入力インターフェイス104は、プロセッサ101とキーボード、マウス、またはタッチパネルなどの入力装置110との間のデータ伝送を仲介する。表示コントローラ105は、ディスプレイ120と接続され、プロセッサ101によって生成された画面データによって示される画面をディスプレイ120に表示する。通信インターフェイス106は、通信ネットワークを介して制御装置200およびネットワークカメラ500と通信する。リーダ/ライタ107は、プロセッサ101と外部の記憶媒体(例えば記憶媒体700を含み得る)との間のデータ伝送を仲介する。
【0058】
開発プログラム131、ビューワープログラム132、データ再現プログラム133、シミュレーションプログラム134、形状解析プログラム135、およびデータベース構築プログラム136の各々は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。また、開発プログラム131、ビューワープログラム132、データ再現プログラム133、シミュレーションプログラム134、形状解析プログラム135、およびデータベース構築プログラム136によって提供される機能の一部または全部は、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)によって実現されてもよい。
【0059】
<制御装置のハードウェア構成>
図3は、実施の形態に従う制御装置のハードウェア構成の一例を示す模式図である。図3に示されるように、制御装置200は、主たるコンポーネントとして、制御装置200の各部に電力PWを供給する電源回路201と、CPU202と、チップセット204と、メモリ206と、ストレージ208と、USBコントローラ250と、フィールドネットワークコントローラ252と、ネットワークコントローラ254と、タイマ260と、リーダ/ライタ270とを含む。
【0060】
CPU202は、ストレージ208に格納されたプログラムを読出して、メモリ206に展開する。CPU202は、展開されたプログラムを実行する。
【0061】
メモリ206は、DRAMまたはSRAMなどの揮発性記憶装置で構成される。メモリ206は、各種の変数の値を保持する。メモリ206に保持される各種の変数の値は、ストレージ208に格納されるプログラムをCPU202が実行することにより、変数の種類に応じて予め設定された制御周期に従って更新される。
【0062】
各種の変数の実績値は、一定期間だけ、メモリ206のバッファ領域207に蓄積される。
【0063】
ストレージ208は、例えば、HDD、SSDまたはフラッシュメモリなどの不揮発性記憶装置で構成されるが、一部は、揮発性ストレージで構成されてもよい。
【0064】
チップセット204は、CPU202と各コンポーネントとの間のデータの遣り取りを仲介することで、制御装置200全体としての処理を実現する。
【0065】
ストレージ208には、制御装置200の基本的な機能を実現するためのOS(Operating System)212およびスケジューラプログラム213を有するシステムプログラム211が格納される。
【0066】
さらに、ストレージ208は、PC100Aによって作成されたプログラムデータセット214を記憶する。プログラムデータセット214は、制御プログラムと、サンプリング設定データとを含む。
【0067】
制御プログラムは、制御対象300の状態を示す変数の値を収集する処理と、収集された変数の値に基づいた演算を行ない、制御対象300への指令に関する変数の値を生成する処理とを定義する。各種の変数の値は、メモリ206に一時的に保持される。CPU202は、制御プログラムを実行することにより、制御周期ごとに、メモリ206が保持する変数の値を更新する。
【0068】
サンプリング設定データは、第1時系列データ11の生成条件を定義する。第1時系列データ11の生成条件は、サンプリングのトリガ条件、サンプリング対象となる変数、およびサンプリング時間などを示す。
【0069】
トリガ条件は、例えば、制御対象300の異常に関連する特定変数の値が特定値に変化したという条件を含む。CPU202は、トリガ条件が満たされたタイミングを含む対象期間における1以上の変数の値を示す第1時系列データ11をバッファ領域207から読み出し、リーダ/ライタ270を制御して記憶媒体700に第1時系列データ11を書き込む。対象期間は、例えば、トリガ条件が満たされたタイミングの前の第1所定期間と、トリガ条件が満たされたタイミングの後の第2所定期間とを含む。第1所定期間および第2所定期間の長さは、サンプリング設定データによって定義される。
【0070】
USBコントローラ250は、USB接続を介して外部の装置(例えば、PC100A)との間のデータの遣り取りを担当する。
【0071】
フィールドネットワークコントローラ252は、フィールドネットワークに接続するコネクタ252aを有し、制御対象300との間のデータの遣り取りを制御する。フィールドネットワークコントローラ252は、フィールドネットワークから受信する入力データおよび制御装置200からフィールドネットワークに出力される出力データを格納する内部バッファを有する。
【0072】
ネットワークコントローラ254は、上位ネットワークに接続するコネクタ254aを有し、制御装置200と外部の装置(例えば、PC100A、ネットワークカメラ500またはネットワークストレージ)との間のデータの遣り取りを制御する。
【0073】
タイマ260は、時間を計測するクロック回路またはカウンタ回路を含んで構成されるが、このような回路に限定されず、CPU202が実行するソフトウェアモジュールにより構成されてもよい。
【0074】
リーダ/ライタ270は、CPU202と記憶媒体700との間のデータ伝送を仲介する。CPU202は、サンプリング設定データによって示される生成条件に従って生成された第1時系列データ11をバッファ領域207から記憶媒体700にコピーする。記憶媒体700に保存された第1時系列データ11は、所定のタイミングにおいて、ネットワークコントローラ254を介して、PC100Aに転送される。あるいは、ユーザは、記憶媒体700をPC100Aに接続し、第1時系列データ11を記憶媒体700からPC100Aにコピーまたは移動させてもよい。
【0075】
図3には、CPU202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGA)を用いて実装してもよい。あるいは、制御装置200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、マルチコア技術を適用して処理を並列に実行してもよい。または、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0076】
<ソフトウェア構成>
図4図10を参照して、PC100Aが有するソフトウェア構成について説明する。PC100Aは、制御対象300に何らかの異常が発生したタイミングを含む対象期間における1以上の変数の値の第1時系列データ11を制御装置200から取得する。PC100Aは、第1時系列データ11を用いて、対象期間における、制御対象300と制御装置200によって制御されない1以上の物体(ワーク400を含む)との状態を表す情報を提供することにより、ユーザによる生産設備の異常な動作の原因調査を支援する。PC100Aの処理は、事前準備フェーズにおいて実行される事前準備処理と、運用フェーズにおいて実行される情報提供処理とを含む。事前準備フェーズは、運用フェーズの前のフェーズである。ただし、ユーザは、運用フェーズにおいて提供される情報を確認した後に、PC100Aを再度事前準備フェーズに移してもよい。
【0077】
(事前準備処理に関するソフトウェア構成)
図4は、PCの事前準備処理に関するソフトウェア構成の一例を示すブロック図である。図4に示されるように、PC100Aは、事前準備処理に関するソフトウェア構成として、データ再現モジュール16と、動作設定モジュール21と、初期情報設定モジュール22と、動作再現モジュール23と、スクリプト実行モジュール24と、物理シミュレーション実行モジュール25と、データ管理モジュール26と、形状解析モジュール50と、座標取得モジュール31と、形状取得モジュール32とを備える。
【0078】
データ再現モジュール16は、図2に示すプロセッサ101がデータ再現プログラム133を実行することにより実現される。動作設定モジュール21、初期情報設定モジュール22、動作再現モジュール23、スクリプト実行モジュール24、物理シミュレーション実行モジュール25、およびデータ管理モジュール26は、プロセッサ101がシミュレーションプログラム134を実行することにより実現される。形状解析モジュール50は、プロセッサ101が形状解析プログラム135を実行することにより実現される。座標取得モジュール31および形状取得モジュール32は、プロセッサ101がデータベース構築プログラム136を実行することにより実現される。
【0079】
なお、動作設定モジュール21、初期情報設定モジュール22、動作再現モジュール23、スクリプト実行モジュール24、物理シミュレーション実行モジュール25、およびデータ管理モジュール26は、図1に示すシミュレータ20を構成する。座標取得モジュール31および形状取得モジュール32は、図1に示すデータ取得モジュール30を構成する。
【0080】
データ再現モジュール16は、データベース10を用いて、対象期間に含まれる指定時刻のデータを再現する。データ再現モジュール16は、時刻制御モジュール17と、データ要求モジュール18とを含む。
【0081】
時刻制御モジュール17は、対象期間内の時刻を表すカウンタ値を管理する。カウンタ値は、最短制御周期の周期カウンタの値である。このため、カウンタ値は、対象期間の開始時からの経過時間を表すことができる。
【0082】
時刻制御モジュール17は、カウンタ値の更新を行なう。具体的には、時刻制御モジュール17は、初期カウンタ値をカウンタ値として設定した後、規定時間が経過するたびにカウンタ値に1を加算する。事前準備フェーズでは、時刻制御モジュール17は、初期カウンタ値として「0」を使用する。規定時間は、シミュレータ20による処理時間を考慮して予め設定される。時刻制御モジュール17は、規定時間が経過するたびに、カウンタ値を1だけ増やす。
【0083】
データ要求モジュール18は、カウンタ値が表す指定時刻に応じたクエリを生成する。指定時刻は、対象期間の開始時刻から、規定時間とカウンタ値との積だけ経過した時刻である。データ要求モジュール18は、生成したクエリを用いて、データベース10から取得対象のデータを取得する。これにより、対象期間に含まれる指定時刻のデータが再現される。
【0084】
データ要求モジュール18は、第1クエリ生成部18aと、第2クエリ生成部18bとを含む。
【0085】
第1クエリ生成部18aは、指定時刻における各変数の値を要求するクエリを生成する。第1クエリ生成部18aは、生成したクエリを用いて、データベース10に格納された第1時系列データ11から指定時刻における各変数の値を取得する。事前準備フェーズにおいて、第1クエリ生成部18aは、取得した各変数の値を、動作再現モジュール23およびスクリプト実行モジュール24に出力する。各変数の値には、指定時刻が付加される。
【0086】
第2クエリ生成部18bは、動画データ14によって示される複数のフレームのうち指定時刻に対応するフレームを要求するクエリを生成する。第2クエリ生成部18bは、生成したクエリを用いて、データベース10に格納された動画データ14から指定時刻のフレームを取得する。事前準備フェーズにおいて、第2クエリ生成部18bは、取得したフレームを形状解析モジュール50に出力する。フレームには撮影時刻が付加される。
【0087】
なお、動画データ14におけるフレーム間隔は、一般に、最短制御周期よりも長い。そのため、指定時刻に対応するフレームが存在しない場合、第2クエリ生成部18bは、データベース10からフレームを取得しない。指定時刻に対応するフレームとは、指定時刻との時間差が最短制御周期以下である撮影時刻のフレームである。
【0088】
動作設定モジュール21は、制御対象300を構成する各可動部品について、関連する変数と可動部品の動作との対応関係を示す対応関係情報を設定する。動作設定モジュール21は、ユーザ入力に応じて対応関係情報を設定する。
【0089】
図5は、対応関係情報の一例を示す図である。図5に示されるように、対応関係情報21aは、可動部品の名称と、可動部品の動作と関連する変数と、並進動作のベクトル(並進ベクトル)と、回転動作の情報(回転情報)とを示す。並進ベクトルは、変数の値に応じた可動部品の並進動作を定義する。回転情報は、変数の値に応じた可動部品の回転動作を定義する。回転情報は、回転軸を定義する情報または回転量を定義する情報を含む。
【0090】
図4に戻って、初期情報設定モジュール22は、制御対象300の各部品および制御装置200によって制御されない1以上の物体の各々について、対象期間の開始時刻における初期情報を設定する。制御装置200によって制御されない1以上の物体は、ワーク400の他に、例えば、トレーまたは固定台などを含み得る。初期情報設定モジュール22は、ユーザ入力に応じて初期情報を設定する。
【0091】
図6は、初期情報の一例を示す図である。図6に示されるように、初期情報22aは、3つの階層の情報22b,22c,22dを含む。情報22bは、物体を識別するオブジェクト名を示す。情報22cは、外表面のメッシュ形状と、位置姿勢を定義付ける座標とを示す。さらに、情報22cは従属情報を含む。従属情報は、従属先(制御対象300の部品、物体を含む)と、従属先との相対位置関係とを示す。なお、従属先が存在しない場合、従属情報はNullに設定される。情報22dは、物理シミュレーションの対象となり得るか否かを示す物理シミュレーションフラグと、物理特性とを示す。物理特性は、例えば、質量、マテリアル、密度、摩擦係数、ヤング率、ポアソン比、弾性減衰、または減衰スケールを含む。
【0092】
なお、外表面のメッシュ形状は、予めインポートされたCAD(Computer-Aided Design)データから設定されてもよい。また、ワーク400は、対象期間の開始時刻において存在しない場合が有り得る。そのため、ワーク400について、位置姿勢を定義付ける座標は設定されない。後述するように、ワーク400の初期位置姿勢は、スクリプト実行モジュール24によって設定される。
【0093】
以下では、制御装置200によって制御されない1以上の物体がワーク400のみを含む場合について説明する。制御装置200によって制御されない1以上の物体がワーク400以外の物体を含む場合、当該物体について、ワーク400と同様の処理が実行される。
【0094】
図4に戻って、動作再現モジュール23は、第1時系列データ11に基づいて、対象期間における制御対象300の第2仮想モデルの動作をシミュレートする。
【0095】
事前準備フェーズにおいて、動作再現モジュール23は、データ再現モジュール16から、対象期間における時刻ごとの1以上の変数の値を時系列に沿って順に取得する。動作再現モジュール23は、各時刻の1以上の変数の値に基づいて、第2仮想モデルの状態を示すデータ(1)を生成する。データ(1)は、第2仮想モデルの各部分の位置姿勢を示す。以下、対象期間の開始時刻t0から最短制御周期のk倍が経過した時刻tkに対応するデータ(1)は、「第kデータ(1)」と称される。
【0096】
動作再現モジュール23は、時刻tkにおける1以上の変数の値を取得すると、取得した値と対応関係情報21aとに基づいて、時刻tkにおける第2仮想モデルのうち各可動部品に対応する部分の動作をシミュレートする。動作再現モジュール23は、各部分の動作を統合することにより、時刻tkにおける第2仮想モデルの状態を示す第kデータ(1)を生成する。動作再現モジュール23は、第kデータ(1)をデータ管理モジュール26に出力する。データ管理モジュール26は、第kデータ(1)を保持する。
【0097】
スクリプト実行モジュール24は、対象期間における時刻ごとの1以上の変数の値に基づいて、ワーク400に対応する第1仮想モデルを仮想空間上に生成する。第1仮想モデルの生成条件は、スクリプトによって定義される。例えば、スクリプト実行モジュール24は、ワーク400の存在を検知する物体検知センサの検知結果を示す変数の値に基づいて、仮想空間上に第1仮想モデルを生成する。このとき、スクリプト実行モジュール24は、仮想空間において物体検知センサの検知対象領域に対応する位置姿勢を、第1仮想モデルの初期位置姿勢として設定する。また、スクリプト実行モジュール24は、時刻tkにおける1以上の変数の値に基づいて第1仮想モデルを生成した場合、初期情報22aに基づいて、当該第1仮想モデルについての物理シミュレーションフラグを設定する。
【0098】
スクリプト実行モジュール24および物理シミュレーション実行モジュール25は、対象期間におけるワーク400の第1仮想モデルの運動をシミュレートする。スクリプト実行モジュール24および物理シミュレーション実行モジュール25は、対象期間の各時刻における第1仮想モデルの運動をシミュレートすると、第1仮想モデルの位置姿勢を示すデータ(2)を生成する。以下、対象期間における時刻tkに対応するデータ(2)は、「第kデータ(2)」と称される。すなわち、スクリプト実行モジュール24または物理シミュレーション実行モジュール25は、時刻tkにおける第1仮想モデルの位置姿勢を示す第kデータ(2)を生成する。スクリプト実行モジュール24または物理シミュレーション実行モジュール25は、第kデータ(2)をデータ管理モジュール26に出力する。データ管理モジュール26は、第kデータ(2)を保持する。第kデータ(2)には、時刻tkが付加される。
【0099】
事前準備フェーズにおいて、スクリプト実行モジュール24は、データ再現モジュール16から、対象期間における時刻ごとの1以上の変数の値を時系列に沿って順に取得する。スクリプト実行モジュール24は、各時刻における1以上の変数の値に基づいて、第1仮想モデルについて物理シミュレーションフラグを更新する。物理シミュレーションフラグは、データ(2)を生成する主体を決定するために使用される。例えば、スクリプト実行モジュール24は、時刻tk-1に対応する物理シミュレーションフラグが「0」である場合、時刻tkにおいて第1仮想モデルの運動をシミュレートし、第kデータ(2)を生成する。物理シミュレーション実行モジュール25は、時刻tk-1に対応する物理シミュレーションフラグが「1」である場合、時刻tkにおいて第1仮想モデルの運動をシミュレートし、第kデータ(2)を生成する。
【0100】
物理シミュレーションフラグの更新方法は、スクリプトによって定義される。典型的には、スクリプト実行モジュール24は、制御対象300とワーク400との従属関係に応じて、物理シミュレーションフラグを設定する。これにより、スクリプト実行モジュール24は、対象期間のうちワーク400が制御対象300に従属している第1区間において、第1仮想モデルの運動をシミュレートする。物理シミュレーション実行モジュール25は、対象期間のうちワーク400が制御対象300に従属していない第2区間において、第1仮想モデルの運動をシミュレートする。
【0101】
例えば、スクリプト実行モジュール24は、時刻tk-1の物理シミュレーションフラグが「0」であり、かつ、時刻tkにおける1以上の変数の値が予め定められた遮断条件を満たすことに応じて、時刻tkの物理シミュレーションフラグを「1」に更新する。遮断条件は、例えば、変数の値から演算される制御対象300のハンドの2指間の距離が規定値を超えるという条件である。
【0102】
スクリプト実行モジュール24は、時刻tk-1の物理シミュレーションフラグが「0」であり、かつ、遮断条件が満たされないことに応じて、時刻tkの物理シミュレーションフラグを「0」に維持する。
【0103】
スクリプト実行モジュール24は、時刻tk-1の物理シミュレーションフラグが「1」であり、かつ、時刻tkにおける1以上の変数の値が予め定められた従属条件を満たすことに応じて、時刻tkの物理シミュレーションフラグを「0」に更新する。従属条件は、例えば、変数の値から演算される制御対象300のハンドの2指間の中点位置と第k-1データ(2)によって示される第1仮想モデルの位置との差分が規定範囲内であり、かつ、変数の値から演算されるハンドの2指間の距離が規定値以下であるという条件である。
【0104】
スクリプト実行モジュール24は、時刻tk-1の物理シミュレーションフラグが「1」であり、かつ、従属条件が満たされないことに応じて、時刻tkの物理シミュレーションフラグを「1」に維持する。
【0105】
スクリプト実行モジュール24は、時刻tk-1の物理シミュレーションフラグが「0」である場合に、時刻tkにおける第1仮想モデルの状態を示す第kデータ(2)を生成する。具体的には、スクリプト実行モジュール24は、時刻tkにおける1以上の変数の値に基づいて、ワーク400の従属先の部品に対応する第2仮想モデルの部分の動作をシミュレートする。当該シミュレートの方法は、動作再現モジュール23におけるシミュレートの方法と同じである。スクリプト実行モジュール24は、ワーク400の初期情報22aに含まれる従属情報が示す相対位置関係と、従属先の部品に対応する第2仮想モデルの位置姿勢とに基づいて、時刻tkにおける第1仮想モデルの位置姿勢をシミュレートする。
【0106】
なお、スクリプト実行モジュール24は、動作再現モジュール23によって生成された第kデータ(1)と従属情報が示す相対位置関係とに基づいて、時刻tkにおける第1仮想モデルの位置姿勢をシミュレートしてもよい。
【0107】
物理シミュレーション実行モジュール25は、時刻tk-1の物理シミュレーションフラグが「1」である場合に、時刻tkにおける第1仮想モデルの状態を示す第kデータ(2)を生成する。具体的には、物理シミュレーション実行モジュール25は、データ管理モジュール26が保持する第k-1データ(2)とワーク400の物理特性とに基づいて、第kデータ(2)を生成する。物理シミュレーション実行モジュール25は、データ管理モジュール26からワーク400の物理特性を取得する。データ管理モジュール26は、初期情報設定モジュール22からワーク400の物理特性を取得する。
【0108】
例えば、物理シミュレーション実行モジュール25は、第k-1データ(2)によって示される第1仮想モデルの状態が第2仮想モデルおよび周辺物体に対応する仮想モデルに接触していない場合、重力に応じた自由落下しているものと想定して、第1仮想モデルの運動をシミュレートする。
【0109】
データ管理モジュール26は、第2仮想モデルの状態を示すデータ(1)および第1仮想モデルの状態を示すデータ(2)を管理する。データ管理モジュール26は、第kデータ(1)を取得すると、第k-1データ(1)および第kデータ(1)を保持し、第k-2データ(1)を削除する。データ管理モジュール26は、第kデータ(2)を取得すると、第k-1データ(2)および第kデータ(2)を保持し、第k-2データ(2)を削除する。
【0110】
さらに、データ管理モジュール26は、ワーク400の形状を表すデータ(3)を管理する。データ(3)は、形状解析モジュール50によって生成される。
【0111】
形状解析モジュール50は、動画解析モジュール51と、メッシュ生成モジュール52とを含む。
【0112】
事前準備フェーズにおいて、動画解析モジュール51は、データ再現モジュール16から、対象期間における動画データ14のフレームを時系列に沿って順に取得する。動画解析モジュール51は、公知の物体認識技術を用いて、取得したフレームからワーク400の写る領域を抽出する。
【0113】
メッシュ生成モジュール52は、フレームにおけるワーク400の写る領域に基づいて、ワーク400の形状を表すメッシュを生成する。
【0114】
図7は、メッシュの生成方法の一例を説明する図である。図7に示す例では、動画解析モジュール51は、複数のネットワークカメラ500から取得した複数のフレームの各々について、ワーク400の写る領域を抽出する。メッシュ生成モジュール52は、複数のフレームから抽出された領域からメッシュを生成する。例えば、メッシュ生成モジュール52は、ディープラーニングのライブラリであるPixel2Mesh++を用いてメッシュを生成する。Pixel2Mesh++の詳細については、例えば、「"Pixel2Mesh++", [online], [令和5年6月5日検索]、インターネット〈URL:https://github.com/walsvid/Pixel2MeshPlusPlus〉」(非特許文献1)に開示される。
【0115】
あるいは、1以上のネットワークカメラ500が3Dカメラを含む場合、メッシュ生成モジュール52は、3Dカメラから得られる画像に基づいて点群データを生成し、Point2Meshを用いて点群データからメッシュを生成してもよい。Point2Meshの詳細については、例えば、「Rana Hanocka, Gal Metzer, Raja Giryes, Daniel Cohen-Or, "Point2Mesh A Self-Prior for Deformable Meshes", [online], [令和5年6月5日検索]、インターネット〈URL:https://ranahanocka.github.io/point2mesh/〉」(非特許文献2)に開示される。
【0116】
メッシュ生成モジュール52は、生成したメッシュを示すデータ(3)をデータ管理モジュール26に出力する。データ(3)には、フレームの撮影時刻と同じ時刻が付加される。データ管理モジュール26は、時刻が付加されたデータ(3)を保持する。
【0117】
なお、形状解析モジュール50は、有効化指示を受けたときのみ、データ(3)を生成する処理を行なってもよい。例えば、ユーザは、ワーク400が柔軟物であるときに形状解析モジュール50の有効化指示を入力する。ユーザは、ワーク400が柔軟物でないときに形状解析モジュール50の無効化指示を入力する。
【0118】
座標取得モジュール31は、データ管理モジュール26が管理するデータ(2)に基づいて、対象期間における第1仮想モデルの位置姿勢の第2時系列データ12を生成し、第2時系列データ12をデータベース10に格納する。
【0119】
形状取得モジュール32は、データ管理モジュール26が管理するデータ(3)に基づいて、対象期間におけるワーク400の形状の第3時系列データ13を生成し、第3時系列データ13をデータベース10に格納する。
【0120】
図8は、データベースのデータ構造の一例を示す図である。図8に示されるように、データベース10は、時刻ごとに、変数IDと変数の値とを組み合わせを示すデータ片11aと、第1仮想モデルの位置姿勢を定義する座標を示すデータ片12aと、ワーク400の形状(メッシュ)を示すデータ片13aとを含む。データ片11a,12a,13aは、第1時系列データ11,第2時系列データ12および第3時系列データ13をそれぞれ構成する。
【0121】
(情報提供処理に関するソフトウェア構成)
図9は、PCの情報提供処理に関するソフトウェア構成の一例を示すブロック図である。図9に示されるように、PC100Aは、情報提供処理に関するソフトウェア構成として、時刻指定モジュール15と、データ再現モジュール16と、動作設定モジュール21と、初期情報設定モジュール22と、動作再現モジュール23と、モデル生成モジュール41と、モデル表示モジュール42と、波形表示モジュール43と、プログラム表示モジュール44と、動画再生モジュール45とを備える。
【0122】
モデル生成モジュール41およびモデル表示モジュール42は、プロセッサ101がシミュレーションプログラム134を実行することにより実現される。波形表示モジュール43および動画再生モジュール45は、プロセッサ101がビューワープログラム132を実行することにより実現される。プログラム表示モジュール44は、プロセッサ101が開発プログラム131を実行することにより実現される。
【0123】
なお、モデル生成モジュール41およびモデル表示モジュール42は、図1に示す第1可視化モジュール40を構成する。波形表示モジュール43およびプログラム表示モジュール44は、本開示の「第2可視化モジュール」の一例である。
【0124】
時刻指定モジュール15は、操作ウィンドウに対するユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とをデータ再現モジュール16に出力する。
【0125】
図10は、操作ウィンドウの一例を示す図である。図10に示す操作ウィンドウ60は、時刻指定モジュール15によって生成され、図2に示すディスプレイ120に表示される。操作ウィンドウ60は、カーソル61と、入力欄62,66と、再生ボタン63と、コマ戻しボタン64と、コマ送りボタン65とを含む。
【0126】
カーソル61は、対象期間内の時刻を表す。時刻指定モジュール15は、ユーザによるカーソル61の移動操作を受け付け、移動操作に応じてカーソル61の位置を移動させる。さらに、データ再現モジュール16によってカウンタ値が更新されると、時刻指定モジュール15は、カウンタ値に対応する位置にカーソル61を移動させる。
【0127】
入力欄62には、カーソル61の位置に対応するカウンタ値が表示される。カウンタ値は、対象期間における最小制御周期の序数を表す。ユーザは、入力欄62にカウンタ値を入力してもよい。入力欄62にカウンタ値が入力されると、時刻指定モジュール15は、入力されたカウンタ値に対応する位置にカーソル61を移動させる。さらに、データ再現モジュール16によってカウンタ値が更新されると、時刻指定モジュール15は、入力欄62に表示される数値を更新する。
【0128】
入力欄66は、再生速度の入力のために使用される。時刻指定モジュール15は、入力欄66のプルダウンボタンが操作されたことに応じて、複数の再生速度の一覧を表示する。時刻指定モジュール15は、一覧の中からユーザによって選択された再生速度を入力欄66に表示する。なお、図10に示す例では、再生速度は倍率によって表される。そのため、以下では、「再生速度」を「再生倍率」として表記する。
【0129】
再生ボタン63、コマ戻しボタン64およびコマ送りボタン65は、データ再現モジュール16によるデータ再現に関する操作を入力するために利用される。時刻指定モジュール15は、再生ボタン63、コマ戻しボタン64およびコマ送りボタン65のいずれかがクリックされたことに応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値および再生条件をデータ再現モジュール16に出力する。
【0130】
再生ボタン63は、データ再現モジュール16によるデータ再現の開始を指示するために使用される。時刻指定モジュール15は、再生ボタン63がクリックされると、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とをデータ再現モジュール16に出力する。具体的には、時刻指定モジュール15は、カーソル61の位置に対応するカウンタ値を再生開始カウンタ値として設定する。さらに、時刻指定モジュール15は、入力欄66に入力されている再生倍率に従って、再生条件を設定する。これにより、データ再現モジュール16は、後述するように、再生周期ごとのデータを再現する。再生周期は、規定値(例えば50または100)に再生倍率を乗じた時間である。
【0131】
コマ戻しボタン64は、時刻を1制御周期だけ戻すために使用される。時刻指定モジュール15は、コマ戻しボタン64がクリックされると、カーソル61の位置に対応するカウンタ値から1を引いたカウンタ値を再生開始カウンタ値として設定する。さらに、時刻指定モジュール15は、再生倍率「0」を示す再生条件を設定する。
【0132】
コマ送りボタン65は、時刻を1制御周期だけ進めるために使用される。時刻指定モジュール15は、コマ送りボタン65がクリックされると、カーソル61の位置に対応するカウンタ値に1を加えたカウンタ値を再生開始カウンタ値として設定する。さらに、時刻指定モジュール15は、再生倍率「0」を示す再生条件を設定する。
【0133】
図9に戻って、データ再現モジュール16は、運用フェーズに応じた処理を行なう。すなわち、データ再現モジュール16の時刻制御モジュール17は、再生開始カウンタ値を初期カウンタ値として設定し、その後、規定時間が経過するたびにカウンタ値に規定値(例えば50または100)に再生倍率を乗じた値を加算する。規定時間は、最短制御周期に規定値を乗じた時間である。再生条件として再生倍率「×1.0」が設定された場合、時刻制御モジュール17は、規定時間が経過するたびに、カウンタ値に規定値を加算する。再生条件として再生倍率「×2.0」が設定された場合、時刻制御モジュール17は、規定時間が経過するたびに、カウンタ値に規定値の2倍の値を加算する。なお、再生条件として再生倍率「0」が設定された場合、時刻制御モジュール17は、カウント値を更新しない。
【0134】
データ要求モジュール18は、カウンタ値が表す指定時刻に応じたクエリを生成する。運用フェーズにおいて、データ要求モジュール18は、第1クエリ生成部18aおよび第2クエリ生成部18bに加えて、第3クエリ生成部18cを含む。
【0135】
第1クエリ生成部18aおよび第2クエリ生成部18bは、運用フェーズにおいても、事前準備フェーズと同じ処理を行なう。ただし、第1クエリ生成部18aは、運用フェーズにおいて、取得した各変数の値を、動作再現モジュール23、波形表示モジュール43およびプログラム表示モジュール44に出力する。第2クエリ生成部18bは、運用フェーズにおいて、取得したフレームを動画再生モジュール45に出力する。
【0136】
第3クエリ生成部18cは、指定時刻における座標(第1仮想モデルの位置姿勢を定義付ける座標)を要求するクエリを生成する。第3クエリ生成部18cは、生成したクエリを用いて、データベース10に格納された第2時系列データ12から指定時刻の座標を取得する。第3クエリ生成部18cは、取得した座標をモデル生成モジュール41に出力する。
【0137】
さらに、第3クエリ生成部18cは、データベース10に第3時系列データ13が格納されている場合、指定時刻におけるワーク400の形状を示すメッシュを要求するクエリを生成する。第3クエリ生成部18cは、生成したクエリを用いて、データベース10に格納された第3時系列データ13から指定時刻のメッシュを取得する。第3クエリ生成部18cは、取得したメッシュをモデル生成モジュール41に出力する。
【0138】
動作再現モジュール23は、運用フェーズにおいても、事前準備フェーズと同じ処理を行なう。すなわち、動作再現モジュール23は、データ再現モジュール16から受けた1以上の変数の値に基づいて、第2仮想モデルの状態を示すデータ(1)を生成する。さらに、動作再現モジュール23は、生成したデータ(1)によって示される状態となるように、仮想空間上に第2仮想モデルを配置する。
【0139】
モデル生成モジュール41は、データ再現モジュール16から受けた座標によって示される位置姿勢をとるように、仮想空間上に第1仮想モデルを配置する。さらに、モデル生成モジュール41は、データ再現モジュール16からメッシュを受けた場合、第1仮想モデルの外表面を当該メッシュに変更する。
【0140】
モデル表示モジュール42は、仮想空間上の第1仮想モデルおよび第2仮想モデルを可視化した仮想画像を生成する。モデル表示モジュール42は、ユーザ入力に応じて指定された仮想視点から見たときの仮想画像を生成する。モデル表示モジュール42は、仮想画像を含むウィンドウのデータを生成し、当該データを表示コントローラ105に出力する。これにより、仮想画像を含むウィンドウがディスプレイ120に表示される。なお、仮想画像を含むウィンドウは、本開示の「第2ウィンドウ」の一例である。
【0141】
波形表示モジュール43は、データ再現モジュール16から受けた1以上の変数の値に基づいて、対象期間における変数の値の推移を示すグラフを含むウィンドウのデータを生成し、当該データを表示コントローラ105に出力する。これにより、対象期間における変数の値の推移を示すグラフを含むウィンドウがディスプレイ120に表示される。なお、対象期間における変数の値の推移を示すグラフを含むウィンドウは、本開示の「第1ウィンドウ」の一例である。
【0142】
プログラム表示モジュール44は、データ再現モジュール16から受けた1以上の変数の値に基づいて、対象期間における制御プログラムの実行状況を示すウィンドウのデータを生成し、当該データを表示コントローラ105に出力する。これにより、対象期間における制御プログラムの実行状況を示すウィンドウがディスプレイ120に表示される。なお、対象期間における制御プログラムの実行状況を示すウィンドウは、本開示の「第1ウィンドウ」の一例である。
【0143】
動画再生モジュール45は、データ再現モジュール16から受けたフレームに基づいて、対象期間に撮影された動画が再生されるウィンドウのデータを生成する。動画再生モジュール45は、当該データを表示コントローラ105に出力する。これにより、対象期間に撮影された動画が再生されるウィンドウがディスプレイ120に表示される。なお、対象期間に撮影された動画が再生されるウィンドウは、本開示の「第1ウィンドウ」の一例である。
【0144】
なお、波形表示モジュール43、プログラム表示モジュール44および動画再生モジュール45の各々は、有効化指示を受けたときのみ、ウィンドウのデータを出力してもよい。
【0145】
<事前準備処理の流れ>
図11は、初回の事前準備処理の流れの一例を示すフローチャートである。なお、図11に示すフローは、制御対象300を構成する各可動部品の対応関係情報21a(図5参照)、および、制御装置200によって制御されない1以上の物体(ワーク400を含む)の各々についての初期情報22aが設定された後に実行される。図11に示すフローは、例えば、ユーザ入力に応じて実施される。
【0146】
まず、ステップS1において、プロセッサ101は、対象期間の開始時刻t0を指定時刻(以下、「時刻t」と称する)として設定する。具体的には、プロセッサ101は、カウンタ値を0に設定する。
【0147】
次のステップS2において、プロセッサ101は、シミュレーションの初期化処理を行なう。具体的には、プロセッサ101は、シミュレーションプログラム134に含まれるスクリプトの初期化関数を実行する。
【0148】
次のステップS3において、プロセッサ101は、データベース10に格納された第1時系列データ11から、時刻tにおける1以上の変数の値を取得する。さらに、ステップS4において、プロセッサ101は、データベース10に格納された動画データ14から、時刻tに対応するフレームを取得する。
【0149】
仮想空間にワーク400に対応する第1仮想モデルが生成されている場合、次のステップS5~S10が実施される。仮想空間に第1仮想モデルが生成されていない場合、ステップS5~S10は省略される。ステップS5において、プロセッサ101は、物理シミュレーションフラグが「0」であるか否かを判断する。具体的には、プロセッサ101は、時刻tに対応するカウンタ値kよりも1小さいカウンタ値k-1に対応する物理シミュレーションフラグが「0」であるか否かを判断する。
【0150】
物理シミュレーションフラグが「0」である場合(ステップS5でYES)、ステップS6において、プロセッサ101は、スクリプトを実行することにより、制御対象300の第2仮想モデルの動作に追従するように第1仮想モデルの運動をシミュレートする。第2仮想モデルの動作は、ステップS4において取得された1以上の変数の値に基づいて特定される。
【0151】
物理シミュレーションフラグが「1」である場合(ステップS5でNO)、ステップS7において、プロセッサ101は、物理シミュレーションを実行することにより、第1仮想モデルの運動をシミュレートする。
【0152】
ステップS6またはステップS7の後のステップS8において、プロセッサ101は、ステップS4において取得したフレームを解析する。次のステップS9において、プロセッサ101は、フレームの解析結果に基づいて、ワーク400の形状を示すメッシュを生成する。
【0153】
次のステップS10において、プロセッサ101は、ステップS7またはステップS8によってシミュレートされた第1仮想モデルの位置姿勢を定義付ける座標と、ステップS10において生成されたメッシュとをデータベース10に記録する。
【0154】
次のステップS11において、プロセッサ101は、時刻tが対象期間の終了時刻Tより前か否かを判断する。時刻tが終了時刻Tよりも前である場合(ステップS11でYES)、ステップS12において、プロセッサ101は、時刻tを最短制御周期分だけ進める。具体的には、プロセッサ101は、カウンタ値を1だけ進める。ステップS12の後、事前準備処理はステップS3に戻る。時刻tが終了時刻Tよりも前ではない場合(ステップS11でNO)、事前準備処理は終了する。
【0155】
時刻tが終了時刻Tに到達するまでステップS3~S10が繰り返し実行されることにより、対象期間における第1仮想モデルの位置姿勢の第2時系列データ12と、対象期間におけるワーク400の形状の第3時系列データ13とがデータベース10に格納される。
【0156】
なお、形状解析モジュール50が無効化されている場合、ステップS4,S8,S9は省略される。
【0157】
図12は、2回目以降の事前準備処理の流れの一例を示すフローチャートである。例えば、ユーザは、1回目の事前準備フェーズの後に、ワーク400の初期情報22aの修正を希望し得る。ワーク400の物理特性が修正された場合、第1仮想モデルの運動のシミュレーション結果が変化し得る。このような場合に、2回目以降の事前準備処理が実行される。
【0158】
図12に示すフローは、図11に示すフローと比較して、ステップS15を含む点で相違する。ステップS15において、プロセッサ101は、ユーザ入力に応じて、第2時系列データ12の更新の要否を判断する。例えば、ユーザは、物理シミュレーションに影響するパラメータ(例えば、ワーク400の位置、質量、マテリアルなど)を変更した場合、第2時系列データ12の更新が必要である旨を入力する。ユーザは、物理シミュレーションに影響しないパラメータのみを変更した場合、第2時系列データ12の更新が不要である旨を入力する。
【0159】
ステップS15においてYESと判断されると、ステップS1~S12が実行される。ステップS15においてNOと判断されると、事前準備処理は終了する。
【0160】
<情報提供処理の流れ>
図13は、図10に示す再生ボタンがクリックされたときの情報提供処理の流れの一例を示すフローチャートである。まず、ステップS21において、プロセッサ101は、図10に示す操作ウィンドウ60のカーソル61の位置に応じた時刻を指定時刻(以下、「時刻t」と称する)として設定する。
【0161】
次のステップS22において、プロセッサ101は、データベース10に格納された第1時系列データ11から、時刻tにおける1以上の変数の値を取得する。
【0162】
次のステップS23において、プロセッサ101は、仮想空間上において、取得された1以上の変数の値に対応する制御対象300の状態を有するように第2仮想モデルを配置する。
【0163】
次のステップS24において、プロセッサ101は、データベース10に格納された第2時系列データ12から、時刻tにおける座標を取得する。さらに、プロセッサ101は、データベース10に第3時系列データ13が格納されている場合、第3時系列データ13から時刻tにおけるメッシュを取得する。
【0164】
次のステップS25において、プロセッサ101は、仮想空間上において、ステップS24において取得された座標によって定義付けられる位置姿勢をとるように第1仮想モデルを配置する。さらに、プロセッサ101は、ステップS4においてメッシュを取得している場合、第1仮想モデルの外表面を取得したメッシュに変更する。
【0165】
次のステップS26において、プロセッサ101は、仮想空間上の第1仮想モデルおよび第2仮想モデルを可視化した仮想画像を含むウィンドウのデータを表示コントローラ105に出力する。これにより、仮想画像を含むウィンドウがディスプレイ120に表示される。
【0166】
次のステップS27において、プロセッサ101は、他の可視化処理を実行する。ステップS27の詳細については後述する。
【0167】
次のステップS28において、プロセッサ101は、時刻tが対象期間の終了時刻Tより前か否かを判断する。
【0168】
時刻tが終了時刻Tよりも前である場合(ステップS28でYES)、ステップS29において、プロセッサ101は、ステップS21または前回のステップS29から規定時間が経過すると、時刻tを再生周期だけ進める。具体的には、プロセッサ101は、カウンタ値を規定値(例えば50または100)に再生倍率を乗じた値だけ進める。ステップS29の後、情報提供処理はステップS22に戻る。
【0169】
時刻tが終了時刻Tよりも前ではない場合(ステップS28でNO)、情報提供処理は終了する。
【0170】
図13に示すフローが実行されることにより、ディスプレイ120には、対象期間におけるワーク400の運動および制御対象300の動作を模した仮想動画が表示される。
【0171】
図14は、図10に示すコマ戻しボタンまたはコマ送りボタンがクリックされたときの情報提供処理の流れの一例を示すフローチャートである。なお、時刻tが対象期間の開始時刻t0である場合、コマ戻しボタン64の操作が無効にされる。時刻tが対象期間の終了時刻Tである場合、コマ送りボタン65の操作が無効にされる。図14に示すフローは、図13に示すフローと比較して、ステップS28,S29が省略される点で相違する。図14に示すフローが実行されることにより、ユーザは、指定時刻をコマ戻しまたはコマ送りしながら、対象期間内の所望のタイミングの仮想画像を確認することができる。
【0172】
図15は、図13または図14に示すステップS27のサブルーチンの処理の流れの一例を示すフローチャートである。図15に示されるように、ステップS27において、ステップS31,S32の処理と、ステップS33,S34の処理と、ステップS35~S37の処理とが並行して実施される。
【0173】
ステップS31において、プロセッサ101は、プログラム表示機能が有効であるか否かを判断する。プログラム表示機能が有効である場合(ステップS31でYES)、ステップS32において、プロセッサ101は、ステップS22において取得した1以上の変数の値に基づいて、制御プログラムの実行状況を示すウィンドウのデータを表示コントローラ105に出力する。これにより、対象期間における制御プログラムの実行状況を示すウィンドウがディスプレイ120に表示される。プログラム表示機能が無効である場合(ステップS31でNO)、ステップS32が省略される。
【0174】
ステップS33において、プロセッサ101は、波形表示機能が有効であるか否かを判断する。波形表示機能が有効である場合(ステップS33でYES)、ステップS34において、プロセッサ101は、ステップS22において取得した1以上の変数の値に基づいて、1以上の変数の推移を示すグラフを含むウィンドウのデータを表示コントローラ105に出力する。これにより、対象期間における変数の値の推移を示すグラフを含むウィンドウがディスプレイ120に表示される。波形表示機能が無効である場合(ステップS33でNO)、ステップS34が省略される。
【0175】
ステップS35において、プロセッサ101は、動画再生機能が有効であるか否かを判断する。動画再生機能が有効である場合(ステップS35でYES)、ステップS36において、プロセッサ101は、データベース10に格納された動画データ14から、時刻tにおけるフレームを取得する。次のステップS37において、プロセッサ101は、取得したフレームが再生されるウィンドウのデータを表示コントローラ105に出力する。これにより、対象期間に撮影された動画が再生されるウィンドウがディスプレイ120に表示される。動画再生機能が無効である場合(ステップS35でNO)、ステップS36,S37が省略される。
【0176】
<情報提供画面例>
図16は、運用フェーズにおいて表示される画面の一例を示す図である。図17は、運用フェーズにおいて表示される画面の別の例を示す図である。図16に示す画面は、プログラム表示機能および動画再生機能が有効にされたときに表示される。図17に示す画面は、プログラム表示機能、波形表示機能および動画再生機能が有効にされたときに表示される。
【0177】
図16に示されるように、ディスプレイ120には、操作ウィンドウ60と、仮想画像を含むウィンドウ80と、制御プログラムの実行状況を示すウィンドウ82と、動画が再生されるウィンドウ84とが並べて表示される。図17に示されるように、ディスプレイ120には、操作ウィンドウ60と、仮想画像を含むウィンドウ80と、制御プログラムの実行状況を示すウィンドウ82と、動画が再生されるウィンドウ84と、変数の値の推移を示すグラフを含むウィンドウ86とが並べて表示される。ウィンドウ86において、グラフは、指定時刻を表す線L1を含む。
【0178】
図16または図17に示す画面に基づいて、ユーザは、対象期間内のワーク400および制御対象300を模した第1仮想モデルおよび第2仮想モデルが可視化された仮想画像とともに、制御プログラムの実行状況、変数の値の推移、または実動画を確認できる。
【0179】
ウィンドウ80は、仮想画像のスケールまたは仮想視点などを変更するためのアイコン群80aを含む。プロセッサ101は、アイコン群80aへの操作に応じて、仮想画像を更新する。これにより、ユーザは、仮想画像において、実画像では確認できない箇所の状態を確認できる。
【0180】
<変形例>
上記の説明では、情報処理システム100が1つのPC100Aによって構成されるものとした。しかしながら、情報処理システム100は、複数のコンピュータによって構成されてもよい。すなわち、情報処理システム100は、複数のプロセッサを含んでもよい。あるいは、情報処理システム100は、クラウド上の仮想マシン等、汎用的なPC以外のハードウェア環境を含んでもよい。
【0181】
情報処理システム100は、複数のデータベースを備えていてもよい。この場合、第1時系列データ11と第2時系列データ12と第3時系列データ13とは、互いに異なるデータベースに格納されてもよい。
【0182】
第1クエリ生成部18aは、第1時系列データ11から全ての変数の値を取得してもよいし、一部の変数の値を取得してもよい。取得対象の変数は、動作再現モジュール23、波形表示モジュール43およびプログラム表示モジュール44において互いに異なっていてもよい。取得対象の変数は、ユーザによって指定され得る。制御プログラムの開発時において、ユーザ入力に応じて、制御プログラムによって使用される各変数の変数名が設定される。そのため、取得対象の変数は、変数名によって指定される。一方、第1時系列データ11は、各変数について、変数名ではなく変数IDを示す(図8参照)。そのため、第1クエリ生成部18aは、変換テーブルを用いて、取得対象の変数名を変数IDに変換すればよい。
【0183】
図18は、第1クエリ生成部によって参照される変換テーブルの一例を示す図である。図18に示されるように、変換テーブル181は、変数名と変数IDとを対応付ける。変換テーブル181は、第1時系列データ11を構築する前、または、第1時系列データ11を構築するときに生成され得る。
【0184】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0185】
(構成1)
情報処理システム(100,100A)であって、
対象期間における制御装置(200)の制御状態を表す1以上の変数の値の第1時系列データ(11)を記憶する1以上のデータベース(10)と、
前記第1時系列データ(11)と、前記対象期間における前記制御装置(200)の制御対象(300)と前記制御装置(200)によって制御されない物体(400)との従属関係と、前記物体(400)の物理特性とに基づいて、前記対象期間における前記物体(400)の第1仮想モデルの運動をシミュレートするシミュレータ(20,24,25,101)と、
前記シミュレータ(20,24,25)によるシミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データ(12)を取得し、前記第2時系列データ(12)を前記1以上のデータベース(10)に格納するデータ取得モジュール(30,101)と、
前記第1仮想モデルと前記制御対象の第2仮想モデルとが重ねて可視化される仮想画像を生成する第1可視化モジュール(40,101)とを備え、
前記第1可視化モジュール(40,101)は、前記仮想画像において、
前記第2時系列データ(12)が示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化し、
前記第1時系列データ(11)が示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象(300)の状態を有するように前記第2仮想モデルを可視化する、情報処理システム(100,100A)。
【0186】
(構成2)
前記物体(400)を撮影することにより得られた動画に基づいて、前記対象期間における前記物体(400)の形状変化を解析する形状解析モジュール(50,101)を備え、
前記データ取得モジュール(30,101)は、前記形状解析モジュール(50,101)による解析結果から、前記対象期間における前記物体(400)の形状の第3時系列データ(13)を取得し、前記第3時系列データ(13)を前記1以上のデータベース(10)に格納し、
前記第1可視化モジュール(40,101)は、前記仮想画像において、前記第3時系列データ(13)が示す前記指定時刻の形状を有するように前記第1仮想モデルを可視化する、構成1に記載の情報処理システム(100,100A)。
【0187】
(構成3)
前記シミュレータ(20,24,25,101)は、
前記対象期間のうちの第1区間において、前記第1時系列データ(11)が示す前記1以上の変数の値に基づいて、前記第2仮想モデルの動作をシミュレートし、前記第2仮想モデルに追従するように前記第1仮想モデルの運動をシミュレートし、
前記対象期間のうち前記第1区間以外の第2区間において、前記物理特性に基づいて、前記第1仮想モデルの運動をシミュレートする、構成1または2に記載の情報処理システム(100,100A)。
【0188】
(構成4)
前記指定時刻における前記1以上の変数の値が可視化された第1ウィンドウ(82,86)のデータを生成する1以上の第2可視化モジュール(43,44,101)と、
前記第1ウィンドウ(82,86)と、前記仮想画像を含む第2ウィンドウ(80)とをディスプレイ(120)上に並べて表示させる表示コントローラ(105)とをさらに備える、構成1から3のいずれかに記載の情報処理システム(100,100A)。
【0189】
(構成5)
前記1以上の第2可視化モジュール(43,44,101)は、前記1以上の変数の値の推移を示すグラフを可視化する波形表示モジュール(43,101)と、前記制御装置における前記制御対象を制御するための制御プログラムの実行状況を可視化するプログラム表示モジュール(44,101)との少なくとも1つを含む、構成4に記載の情報処理システム(100,100A)。
【0190】
(構成6)
前記制御対象(300)を撮影することにより得られた動画のうち前記指定時刻におけるフレームを含む第1ウィンドウ(84)のデータを生成する動画再生モジュール(45,101)と、
前記第1ウィンドウ(84)と、前記仮想画像を含む第2ウィンドウ(80)とをディスプレイ(120)上に並べて表示させる表示コントローラ(105)とをさらに備える、構成1から3のいずれかに記載の情報処理システム(100,100A)。
【0191】
(構成7)
対象期間における制御装置(200)の制御状態を表す1以上の変数の値の第1時系列データ(11)を記憶する1以上のデータベース(10)を用いた情報処理方法であって、
1以上のプロセッサ(101)が、前記第1時系列データ(11)と、前記対象期間における前記制御装置(200)の制御対象(300)と前記制御装置(200)によって制御されない物体(400)との従属関係と、前記物体(400)の物理特性とに基づいて、前記対象期間における前記物体(400)の第1仮想モデルの運動をシミュレートすること(S6,S7)と、
前記1以上のプロセッサ(101)が、シミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データ(12)を取得し、前記第2時系列データ(12)を前記1以上のデータベース(10)に格納すること(S10)と、
前記1以上のプロセッサ(101)が、前記第1仮想モデルと前記制御対象(300)の第2仮想モデルとが重ねて可視化される仮想画像を生成すること(S22~S26)とを備え、
前記仮想画像を生成すること(S22~S26)は、
前記1以上のプロセッサ(101)が、前記仮想画像において、前記第2時系列データ(12)が示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化すること(S25)と、
前記1以上のプロセッサ(101)が、前記仮想画像において、前記第1時系列データ(11)が示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象(300)の状態を有するように前記第2仮想モデルを可視化すること(S23)とを含む、情報処理方法。
【0192】
(構成8)
対象期間における制御装置(200)の制御状態を表す1以上の変数の値の第1時系列データ(11)を記憶する1以上のデータベース(10)を用いた情報処理方法をコンピュータ(100A)に実行させるプログラム(133,134,136)であって、
前記情報処理方法は、
前記第1時系列データ(11)と、前記対象期間における前記制御装置(200)の制御対象(300)と前記制御装置(200)によって制御されない物体(400)との従属関係と、前記物体(400)の物理特性とに基づいて、前記対象期間における前記物体(400)の第1仮想モデルの運動をシミュレートすること(S6,S7)と、
シミュレーション結果から、前記対象期間における前記第1仮想モデルの位置姿勢の第2時系列データ(12)を取得し、前記第2時系列データ(12)を前記1以上のデータベース(10)に格納すること(S10)と、
前記第1仮想モデルと前記制御対象(300)の第2仮想モデルとが重ねて可視化される仮想画像を生成すること(S22~S26)とを備え、
前記仮想画像を生成すること(S22~S26)は、
前記仮想画像において、前記第2時系列データ(12)が示す指定時刻の位置姿勢をとるように前記第1仮想モデルを可視化すること(S25)と、
前記仮想画像において、前記第1時系列データ(11)が示す前記指定時刻の前記1以上の変数の値に対応する前記制御対象(300)の状態を有するように前記第2仮想モデルを可視化すること(S23)とを含む、プログラム(133,134,136)。
【0193】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0194】
1 製造システム、10 データベース、11 第1時系列データ、11a,12a,13a データ片、12 第2時系列データ、13 第3時系列データ、14 動画データ、15 時刻指定モジュール、16 データ再現モジュール、17 時刻制御モジュール、18 データ要求モジュール、18a 第1クエリ生成部、18b 第2クエリ生成部、18c 第3クエリ生成部、20 シミュレータ、21 動作設定モジュール、21a 対応関係情報、22 初期情報設定モジュール、22a 初期情報、23 動作再現モジュール、24 スクリプト実行モジュール、25 物理シミュレーション実行モジュール、26 データ管理モジュール、30 データ取得モジュール、31 座標取得モジュール、32 形状取得モジュール、40 第1可視化モジュール、41 モデル生成モジュール、42 モデル表示モジュール、43 波形表示モジュール、44 プログラム表示モジュール、45 動画再生モジュール、50 形状解析モジュール、51 動画解析モジュール、52 メッシュ生成モジュール、60 操作ウィンドウ、61 カーソル
62,66 入力欄、63 再生ボタン、64 コマ戻しボタン、65 コマ送りボタン、80,82,84,86 ウィンドウ、80a アイコン群、100 情報処理システム、100A PC、101 プロセッサ、102,206 メモリ、103,208 ストレージ、104 入力インターフェイス、105 表示コントローラ、106 通信インターフェイス、107,270 リーダ/ライタ、110 入力装置、120 ディスプレイ、131 開発プログラム、132 ビューワープログラム、133 データ再現プログラム、134 シミュレーションプログラム、135 形状解析プログラム、136 データベース構築プログラム、181 変換テーブル、200 制御装置、201 電源回路、202 CPU、204 チップセット、207 バッファ領域、211 システムプログラム、213 スケジューラプログラム、214 プログラムデータセット、250 USBコントローラ、252 フィールドネットワークコントローラ、252a,254a コネクタ、254 ネットワークコントローラ、260 タイマ、300 制御対象、400 ワーク、500 ネットワークカメラ、700 記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18