(57)【要約】【課題】制御対象の一連の動きの推定にかかる時間を変更する。【解決手段】情報処理装置は、第１目標軌跡を移動する第１制御対象を駆動するための機器の挙動を推定する第１エミュレータと、第２目標軌跡を移動する第２制御対象を駆動する機器の挙動を推定する第２エミュレータと備える。視覚化モジュールは、第１指令値および第２指令値を用いて第１制御対象の動きおよび第２制御対象の動きを、３次元仮想空間に視覚化して描画する描画データを生成する。第１および第２エミュレータは、それぞれ、演算指令に従い、第１および第２駆動機器を制御周期毎に制御する第１指令値および第２指令値を演算する。この演算指令は、制御周期ごとの移動量が可変となるような指令値の算出を指示する。【選択図】図１
2019061523.tif 000002
【特許請求の範囲】
【請求項１】
第１目標軌跡を移動する第１制御対象を駆動するための第１駆動機器の挙動を推定する第１エミュレータと、
第２目標軌跡を移動する第２制御対象を駆動するための第２駆動機器の挙動を推定する第２エミュレータと、
前記第１制御対象の動きおよび前記第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データを生成する視覚化モジュールと、を備え、
前記第１エミュレータは、情報処理装置からの演算指令に従い、前記第１駆動機器を制御周期毎に制御する第１指令値を演算し、
前記第２エミュレータは、前記演算指令に従い、前記第２駆動機器を前記制御周期毎に制御する第２指令値を演算し、
前記視覚化モジュールは、前記第１指令値および前記第２指令値を用いて前記描画データを生成し、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理装置。
【請求項２】
前記演算指令は、
前記制御周期ごとの移動量が、予め定められた単位移動量と等しくとなるような指令値の算出を指示する等倍演算指令を含む、請求項１に記載の情報処理装置。
【請求項３】
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量のＮ倍（ただし、Ｎ＞１）となるような指令値の算出を指示するＮ倍演算指令を含む、請求項２に記載の情報処理装置。
【請求項４】
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量の１／Ｎ倍（ただし、Ｎ＞１）となるような指令値の算出を指示する１／Ｎ倍演算指令を含む、請求項２または３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、
前記第１指令値の制御周期間の第１変化量および前記第２指令値の制御周期間の第２変化量を検出し、
前記第１目標軌跡および前記第２目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、前記第１変化量および前記第２変化量の両方が閾値以下である区間において、前記Ｎ倍演算指令を出力する、請求項３に記載の情報処理装置。
【請求項６】
前記描画データは、前記第１制御対象および前記第２制御対象の前記３次元仮想空間における位置を示すデータを含み、
前記情報処理装置は、
前記第１制御対象および前記第２制御対象の前記３次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、前記移動量可変指令を出力する、請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記情報処理装置は、
当該情報処理装置に対するユーザの入力を受付ける受付部を備え、
前記受付部により受付けた入力に従い、前記移動量可変指令を出力する、請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記情報処理装置は、
前記第１指令値の制御周期間の第１変化量および前記第２指令値の制御周期間の第２変化量を検出し、
前記第１変化量または前記第２変化量が変化量閾値を超えるとき、警告を出力する、請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記描画データは、前記第１制御対象および前記第２制御対象の前記３次元仮想空間における位置を示すデータを含み、
前記情報処理装置は、
前記第１制御対象の前記３次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または前記第２制御対象の前記３次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離閾値を超えるとき、警告を出力する、請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
可変の仮想時刻を出力するタイマーをさらに、備え、
前記制御周期は、前記仮想時刻を尺度とする周期を示す、請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１１】
情報処理装置が実施する処理方法であって、
第１目標軌跡を移動する第１制御対象を駆動するための第１駆動機器の挙動を推定するステップと、
第２目標軌跡を移動する第２制御対象を駆動するための第２駆動機器の挙動を推定するステップと、
前記第１制御対象の動きおよび前記第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データを生成するステップと、を備え、
前記第１駆動機器の挙動を推定するステップでは、前記情報処理装置からの演算指令に従い、前記第１駆動機器を制御周期毎に制御する第１指令値を演算し、
前記第２駆動機器の挙動を推定するステップでは、前記演算指令に従い、前記第２駆動機器を前記制御周期毎に制御する第２指令値を演算し、
前記描画データを生成するステップでは、前記第１指令値および前記第２指令値を用いて前記描画データを生成し、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理方法。
【請求項１２】
請求項１１に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、情報処理装置、情報処理方法およびプログラムに関し、特に、制御対象を駆動する駆動機器の挙動を推定する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
ＦＡ（Factory  Automation）分野では、様々な自動制御技術が広く利用されている。このような自動制御技術が適用されるシステムの設計または検討の段階においては、システムの性能を予め評価する必要がある。このようなニーズに関して、評価対象の動きを模擬して得られたデータに基づき当該評価を実施する方法が提案されている。例えば、国際公開第２０１６／１８１４５５号（特許文献１）は、対象の動作のシミュレート結果をファイルに格納し、ファイルから対象の状態をコマ送りして読出し、表示する構成を開示する。
【０００３】
また、特開２０１７−９７４２６号公報（特許文献２）では、システムの挙動を再現するシミュレーション装置を開示する。特許文献２は、段落００７３において、シミュレーション装置は、順次格納されたトレースデータを用いて、システムの挙動を再現するとともに、ユーザ操作に応じて、再現されるシステムの挙動の時間間隔および更新間隔などを適宜変更する構成を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１６／１８１４５５号
【特許文献２】特開２０１７−９７４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
生産ラインに備えられるＦＡに関連した実機の制御プログラムを設計する場合、ユーザは、制御プログラムの実行により制御される機械の一連の動きを検証し、検証結果に基づき制御プログラムを修正する。このような検証は、実機を使うことで容易に確認することができるが、実機を使用できない場合、ユーザは実機の動きを演算により推定するシミュレーションプログラムを実行する。シミュレーションプログラムを実行するとき、ユーザは、一連の動きのうち所定のポイントの動きを確認したい場合、所定ポイントに対応した演算結果が出力されるまで待たなければならず、検証に時間を要していた。したがって、検証に要する時間を可変に調整したいとのニーズがあった。
【０００６】
この点に関し、特許文献１と２は、一旦、シミュレーション結果またはトレースデータを全て格納しておき、表示時にはその格納内容をコマ送り、または表示間隔等を制御して画面に表示する。したがって、特許文献１と特許文献２の方法では、ユーザは、シミュレーション結果またはトレースデータの全ての算出が完了するまで待つ必要があり、上記のニーズに応えることができない。
【０００７】
本発明は、このようなニーズに向けられるものであり、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる環境を提供することを一つの目的としている。
【課題を解決するための手段】
【０００８】
本開示の一例に係る情報処理装置は、第１目標軌跡を移動する第１制御対象を駆動するための第１駆動機器の挙動を推定する第１エミュレータと、第２目標軌跡を移動する第２制御対象を駆動するための第２駆動機器の挙動を推定する第２エミュレータと、第１制御対象の動きおよび第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データを生成する視覚化モジュールと、を備える。第１エミュレータは、情報処理装置からの演算指令に従い、第１駆動機器を制御周期毎に制御する第１指令値を演算し、第２エミュレータは、演算指令に従い、第２駆動機器を制御周期毎に制御する第２指令値を演算し、視覚化モジュールは、第１指令値および第２指令値を用いて描画データを生成し、演算指令は、移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む。
【０００９】
上述の開示によれば、移動量可変指令に従い、第１および第２エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出する。したがって、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【００１０】
上述の開示において、演算指令は、制御周期ごとの移動量が、予め定められた単位移動量と等しくとなるような指令値の算出を指示する等倍演算指令を含む。
【００１１】
上述の開示によれば、制御周期ごとの移動量が、単位移動量で固定するような指令値の算出が可能である。
【００１２】
上述の開示において、移動量可変指令は、制御周期ごとの移動量が、単位移動量のＮ倍（ただし、Ｎ＞１）となるような指令値の算出を指示するＮ倍演算指令を含む。
【００１３】
上述の開示によれば、制御周期ごとの移動量が、単位移動量のＮ倍にするような指令値の算出が可能である。これにより、制御対象の一連の動きを推定する場合に、制御周期毎の移動量を大きくすることができる。したがって、単位移動量の固定にする場合に比較して、一連の動きの推定にかかる時間を短縮することができるとともに、演算回数を低減できて情報処理装置の演算にかかる負荷を軽減できる。
【００１４】
上述の開示において、移動量可変指令は、制御周期ごとの移動量が、単位移動量の１／Ｎ倍（ただし、Ｎ＞１）となるような指令値の算出を指示する１／Ｎ倍演算指令を含む。
【００１５】
上述の開示によれば、制御周期ごとの移動量が、単位移動量の１／Ｎ倍にするような指令値の算出が可能である。これにより、制御対象の一連の動きを推定する場合に、制御周期毎の移動量を少なくすることができて、単位移動量の固定にする場合に比較して、第１制御対象の動きおよび第２制御対象の動きを低速に描画することが可能となる。
【００１６】
上述の開示において、情報処理装置は、第１指令値の制御周期間の第１変化量および第２指令値の制御周期間の第２変化量を検出し、第１目標軌跡および第２目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、第１変化量および第２変化量の両方が閾値以下である区間において、Ｎ倍演算指令を出力する。
【００１７】
上述の開示によれば、Ｎ倍演算指令を、第１制御対象および第２制御対象を移動させるための第１指令値および第２指令値それぞれについて、制御周期間の変化量が両方とも閾値以下である、すなわち両者とも等速に移動すると推定される区間では、Ｎ倍演算指令が出力される。これにより、等速で移動する動きの変化がない期間では、すなわち動きの確認に支障がない期間において、描画における制御周期毎の移動量が大きくすることができる。
【００１８】
上述の開示において、描画データは、第１制御対象および第２制御対象の３次元仮想空間における位置を示すデータを含み、情報処理装置は、第１制御対象および第２制御対象の３次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、移動量可変指令を出力する。
【００１９】
上述の開示によれば、第１制御対象および第２制御対象の３次元仮想空間における相対的な位置関係に従い、移動量可変指令を出力することが可能となる。
【００２０】
上述の開示において、情報処理装置は、当該情報処理装置に対するユーザの入力を受付ける受付部を備え、受付部により受付けた入力に従い、移動量可変指令を出力する。
【００２１】
上述の開示によれば、ユーザは情報処理装置に対する入力により、情報処理装置に移動量可変指令を出力させることができる。
【００２２】
上述の開示において、情報処理装置は、第１指令値の制御周期間の第１変化量および第２指令値の制御周期間の第２変化量を検出し、第１変化量または第２変化量が変化量閾値を超えるとき、警告を出力する。
【００２３】
上述の開示によれば、第１指令値または第２指令値の制御周期間での変化量が、変化量閾値を超えるとき、警告が出力される。これにより、移動量可変指令により算出される指令値が、制御周期毎の移動量の変化を大きくしすぎる可能性があるときは、警告が出力される。
【００２４】
上述の開示において、描画データは、第１制御対象および第２制御対象の３次元仮想空間における位置を示すデータを含み、情報処理装置は、第１制御対象の３次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または第２制御対象の３次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離位置を超えるとき、警告を出力する。
【００２５】
上述の開示によれば、移動量可変指令により算出される指令値が、制御周期毎の移動距離の変化を大きくしすぎる可能性があるときは、警告が出力される。
【００２６】
上述の開示において、情報処理装置は、可変の仮想時刻を出力するタイマーをさらに、備え、制御周期は、仮想時刻を尺度とする周期を示す。
【００２７】
上述の開示によれば、第１エミュレータおよび第２エミュレータの演算の周期に対応して制御周期を、可変にすることができる。
【００２８】
本開示の一例に係る情報処理装置が実施する処理方法は、第１目標軌跡を移動する第１制御対象を駆動するための第１駆動機器の挙動を推定するステップと、第２目標軌跡を移動する第２制御対象を駆動するための第２駆動機器の挙動を推定するステップと、第１制御対象の動きおよび第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データを生成するステップと、を備え、第１駆動機器の挙動を推定するステップでは、情報処理装置からの演算指令に従い、第１駆動機器を制御周期毎に制御する第１指令値を演算し、第２駆動機器の挙動を推定するステップでは、演算指令に従い、第２駆動機器を制御周期毎に制御する第２指令値を演算し、描画データを生成するステップでは、第１指令値および第２指令値を用いて描画データを生成し、演算指令は、移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む。
【００２９】
上述の開示によれば、移動量可変指令に従い、第１および第２エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出する。したがって、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【００３０】
本開示の一例に係るプログラムは、上述した情報処理装置が実施する処理方法を、コンピュータに実行させる。
【００３１】
上述の開示によれば、移動量可変指令に従い、第１および第２エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出するプログラムをコンピュータに実行させることができる。プログラムが実行されると、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【発明の効果】
【００３２】
この開示によれば、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる環境を提供できる。
【図面の簡単な説明】
【００３３】
【図１】本実施の形態に係る情報処理装置１００の適用場面の一例を示す模式図である。
【図２】本実施の形態に係る生産ラインに備えられるオンライン制御システム１の構成例を示す模式図である。
【図３】ロボット３００の各軸の目標位置を説明する図である。
【図４】本実施の形態に係るロボット３００の各アームに相当する軸の３次元仮想空間における位置を算出する過程を模式的に示す図である。
【図５】本実施の形態に係る情報処理装置１００の構成を概略的に示す図である。
【図６】図１のプログラム実行部３１の構成例を示す図である。
【図７】本実施の形態に係る仮想時刻によるエミュレータの同期を説明する図である。
【図８】本実施の形態に係る描画データによる表示画面の一例を示す図である。
【図９】本実施の形態に係る描画データによる表示画面の他の例を示す図である。
【図１０】本実施の形態に係る情報処理装置１００が実施するオフラインシステム２０の処理を説明する図である。
【図１１】本実施の形態に係る情報処理装置１００が実施するオフラインシステム２０の処理を説明する図である。
【図１２】本実施の形態に係る高速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。
【図１３】本実施の形態に係る高速エミュレーションのための指令値演算処理４１の一例を説明する図である。
【図１４】本実施の形態に係る高速エミュレーションにおける警告メッセージの表示の一例を示す図である。
【図１５】本実施の形態に係る間引く部分を指定する方法の一例を説明する図である。
【図１６】本実施の形態に係る間引く部分の他の指定例を説明する図である。
【図１７】本実施の形態に係るエミュレーションのための指令値演算処理４２を説明する図である。
【図１８】本実施の形態に係る低速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。
【図１９】本実施の形態に係る低速エミュレーションのための指令値演算処理４３を説明する図である。
【図２０】本実施の形態に係る低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。
【図２１】本実施の形態に係る高速エミュレーションと低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。
【図２２】本実施の形態に係るエミュレーションの動作モードを指定するためＵＩ（User Interface）画面の一例を示す図である。
【発明を実施するための形態】
【００３４】
以下、図面を参照しつつ、本発明に従う各本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各本実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００３５】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る情報処理装置１００の適用場面の一例を示す模式図である。本実施の形態に係る情報処理装置１００は、任意の第１制御対象および第２制御対象を駆動する各駆動機器（例えば、サーボモータ等のアクチュエータ）の挙動（例えば、モータの回転量（角度、方向を含む）等）を推定し、推定された挙動に従い制御される各制御対象の動きを描画するための描画データ３０１，４０１を生成する。第１制御対象は、第１目標軌跡を移動するよう駆動され、また、第２制御対象は、第２目標軌跡を移動するよう駆動される。第１制御対象は、例えばステージに相当し、第２制御対象は例えばロボットに相当するが、制御対象は、これらに限定されず制御対象となり得る製造装置や設備のうちから適宜選択されてよい。
【００３６】
図１に示すように、情報処理装置１００は、第１制御対象を駆動するための第１駆動機器の挙動を推定する第１エミュレータ（例えば、ＰＬＣ（プログラマブルコントローラ）エミュレータ２６０）と、第２制御対象を駆動するための第２駆動機器の挙動を推定する第２エミュレータ（例えば、ロボットエミュレータ２７０）と、第１制御対象の動きおよび第２制御対象の動きを、同じ仮想空間に視覚化して描画するための描画データ３０１，４０１を生成する視覚化モジュール（例えば、３Ｄ視覚化プログラム３０）と、を備える。
【００３７】
第１エミュレータは、情報処理装置１００からの演算指令２８０に従い、第１駆動機器を制御周期毎に制御する第１指令値Ｖ１を演算する。また、第２エミュレータは、この演算指令２８０に従い、第２駆動機器を上記の制御周期毎に制御する第２指令値Ｖ１を演算する。この演算指令２８０は、上記に述べた第１目標軌跡と第２目標軌跡の移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する指令を含む。視覚化モジュールは、このようにして算出される第１指令値および第２指令値を用いて上記に述べた描画データ３０１，４０１を生成する。
【００３８】
第１エミュレータは、第１駆動機器を実機として制御するプログラム、例えばＰＬＣプログラム３７１の複数の命令を含むエミュレーションプログラムに相当する。第２エミュレータは、第２駆動機器を実機として制御するプログラム、例えばロボットプログラム３８１の複数の命令を含むエミュレーションプログラムに相当する。
【００３９】
このように本実施の形態では、演算指令２８０を用いることにより、制御周期ごとの移動量を固定ではなく可変にすることが可能なる。そのため、第１目標軌跡と第２目標軌跡の移動における第１駆動機器および第２駆動機器の挙動を推定する処理に要する時間を調整する、すなわち短くしてエミュレーションを高速に実施し、または長くしてエミュレーションを低速に実施することが可能となる。
【００４０】
例えば、所要時間を短くするような演算指令２８０の場合は、第１または第２目標軌跡の上の所定ポイントに対応した指令値の演算結果を取得するまでの所要時間を短くすることができて、ユーザは挙動の検証に要する時間を短縮することができる。また、所要時間を長くするような演算指令２８０の場合は、所定ポイントで算出される指令値を用いた描画データによる描画を低速にする（描画周期あたりの移動量を少なくする）ことができて、ユーザは、描画内容から所定ポイントにおける挙動を詳細に確認することができる。
【００４１】
本明細書において、「指令値」は、例えばサーボモータ等のアクチュエータを含む駆動機器に対して、例えば位置、速度、加速度、ジャーク（加加速度）、角度、角速度、角加速度、角加加速度等の数値を指令として表したものである。
【００４２】
以下、本発明のより具体的な応用例として、本実施の形態に係る情報処理装置１００のより詳細な構成および処理について説明する。
【００４３】
＜Ｂ．制御システムの全体構成例＞
本実施の形態に従う情報処理装置１００は、生産ラインに備えられる制御対象である複数の機械を駆動するための駆動機器の挙動を推定する。このような制御対象としては、可動のステージ４００と、ステージ４００上のワークＷを掴み移動させるロボット３００を例示するが、制御対象の機械はこれらに限定されない。これら制御対象の機械が実機として備えられた環境の一例を説明する。
【００４４】
図２は、本実施の形態に係る生産ラインに備えられるオンライン制御システム１の構成例を示す模式図である。図２を参照して、オンライン制御システム１（以下、単に制御システム１という）は、情報処理装置１００、コントローラの一例であるＰＬＣ２００、ロボット３００を制御するロボットコントローラ３１０およびサーボドライバ１３Ｅ，１３Ｆを含む。情報処理装置１００は、たとえば、ＰＣ（Personal  Computer）、タブレット端末などの端末装置を含む。サーボドライバ１３Ｅ，１３Ｆ（以下、「サーボドライバ１３」とも総称する。）は、対応するサーボモータ１４Ｅ，１４Ｆを駆動する。
【００４５】
ＰＬＣ２００には、フィールドネットワークＮＷ１を介して情報処理装置１００が接続されている。フィールドネットワークＮＷ１には、たとえば、ＥｔｈｅｒＮＥＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ１は、ＥｔｈｅｒＮＥＴに限定されず、任意の通信手段が採用され得る。たとえば、コントローラ２００および情報処理装置１００は、信号線で直接接続されてもよい。情報処理装置１００は、ロボット３００およびステージ４００の機械を制御するための制御プログラムを設計する環境を提供する。情報処理装置１００上で設計された制御プログラムは、フィールドネットワークＮＷ１を介してＰＬＣ２００に送られる。
【００４６】
ＰＬＣ２００は、設計された制御プログラムを実行し、実行の結果に従ってロボットコントローラ３１０またはサーボドライバ１３に対してそれぞれ目標値を与えることで、ロボット３００およびステージ４００を含む対象を制御する。
【００４７】
ＰＬＣ２００には、ロボットコントローラ３１０およびサーボドライバ１３が接続されている。ＰＬＣ２００、ロボットコントローラ３１０およびサーボドライバ１３は、フィールドネットワークＮＷ２を介してデイジーチェーンで接続されている。フィールドネットワークＮＷ２には、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ２は、ＥｔｈｅｒＣＡＴに限定されず、任意の通信手段が採用され得る。また、接続態様は、上記のデイジーチェーンに限定されず、ツリー接続またはスター接続のような他の接続態様であってもよい。
【００４８】
ロボット３００とステージ４００は、相互に連携しながらワークＷを移動させる。なお、ここでは説明を簡単にするために、ワークＷの移動を説明するが、移動に限定されない。例えば、ステージ４００上におけるロボット３００によるワークＷの加工であってもよい。
【００４９】
図２では、ロボット３００のドライブ装置の一例として、ロボット３００に設けられるサーボモータ１４Ａ〜１４Ｄ（以下、「サーボモータ１４」とも総称する。）と、サーボモータ１４を駆動するロボットコントローラ３１０を例示する。同様に、ステージ４００のドライブ装置の一例として、ステージ４００に設けられるサーボモータ１４Ｅ，１４Ｆ（以下、「サーボモータ１４」とも総称する。）を駆動するサーボドライバ１３を例示する。ロボット３００は駆動されることにより、その挙動は、直交するＸ軸，Ｙ軸およびＺ軸の３次元空間内で変化する。ステージ４００は駆動されることにより、その挙動はロボット３００と同じ３次元空間内において規定されるが、とりわけＸ軸およびＹ軸の平面内において規定される。
【００５０】
ドライブ装置としては、サーボドライバに限定されることなく、被駆動装置であるモータに応じて、対応するドライブ装置が採用される。たとえば、誘導モータまたは同期モータを駆動する場合には、ドライブ装置として、インバータドライブなどが採用されてもよい。
【００５１】
ロボットコントローラ３１０は、ロボット３００のサーボモータ１４を駆動する。サーボモータ１４の回転軸にはエンコーダ（図示しない）が配置されている。当該エンコーダは、サーボモータ１４のフィードバック値として、サーボモータの位置（回転角度）、回転速度、累積回転数などをロボットコントローラ３１０へ出力する。
【００５２】
同様に、サーボドライバ１３は、ステージ４００のサーボモータ１４を駆動する。サーボモータ１４の回転軸にはエンコーダ（図示しない）が配置されている。当該エンコーダは、サーボモータ１４のフィードバック値として、サーボモータの位置（回転角度）、回転速度、累積回転数などをサーボドライバ１３へ出力する。
【００５３】
＜Ｃ．ロボットとステージの制御＞
制御システム１におけるロボット３００とステージ４００の制御について説明する。ロボット３００とステージ４００は、上記に述べたように、複数の駆動軸により移動可能な可動部を有する。これらの各駆動軸は、サーボモータによって駆動される。具体的には、ロボット３００は、サーボモータ１４（サーボモータ１４Ａ〜１４Ｄ）が回転することで駆動される複数のアームを有している。サーボモータ１４は、それぞれ回転することで、対応する各アームを駆動する。ロボットコントローラ３１０がサーボモータ１４の駆動を制御することで、各アームは３次元に移動する。このような各アームの移動により、ロボット３００の動きが実現される。同様に、ステージ４００も、サーボモータ１４（サーボモータ１４Ｅ，１４Ｆ）が回転することでステージ４００は移動する。このようなロボット３００またはステージ４００の移動量（移動の向き、移動距離）は、サーボモータ１４の回転量（回転の向き、角度）により決まる。
【００５４】
本実施の形態では、ロボット３００の各アームは、仮想的な軸が対応付けられ、各軸の位置からロボット３００の動きが決まる。図３は、ロボット３００の各軸の目標位置を説明する図である。図３を参照して、各軸の目標位置は、ロボット３００の動きが目標となる動作（以下、目標動作ともいう）を示すように、時系列に変化する。具体的には、ロボット３００の各アームは、時系列に変化する図３の目標位置に従い駆動されることにより、各アームの移動の速度および軌跡は、目標に従う速度および軌跡となるように変化する。
【００５５】
図３に示すような、ロボット３００の目標動作を規定するための目標位置は、ＰＬＣ２００に予め格納されている。ロボットコントローラ３１０は、ＰＬＣ２００から目標位置を受信し、受信した目標位置に基づき各サーボモータの回転量を決定し、決定した回転量を指定する指令値を、サーボモータ１４の各サーボモータに対し出力する。なお、目標位置は、ロボットコントローラ３１０のみに格納されてもよい。
【００５６】
図４は、本実施の形態に係るロボット３００の各アームに相当する軸の３次元仮想空間における位置を算出する過程を模式的に示す図である。図４を参照して、サーボモータ１４Ａの回転量をαＡ、サーボモータ１４Ｂの回転量をαＢ、サーボモータ１４Ｃの回転量をαＣおよびサーボモータ１４Ｄの回転量をαＤとして示す。サーボモータ回転量（αＡ、αＢ、αＣ、αＤ）に対し、所定関数を用いて演算を施すことで、サーボモータ回転量（αＡ、αＢ、αＣ、αＤ）を図３に示すｘｙｚの３次元仮想空間における位置に変換することができる。図４では、例えばワークＷをキャッチするアームの軸の３次元仮想空間における位置である３次元座標Ｐ（ｘ、ｙ、ｚ）を示すが、他の軸の対応する３次元座標も同様に算出することができる。したがって、各アームの３次元座標Ｐ（ｘ、ｙ、ｚ）の時系列の変化によりロボット３００の３次元仮想空間における動きを示すことができる。
【００５７】
また、本実施の形態では、説明を簡単にするために、ワークＷをキャッチするアームの軸の３次元座標Ｐ（ｘ、ｙ、ｚ）を、後述する３次元仮想空間における「干渉」を検出するためにも用いる。なお、「干渉」の検出には、他の軸の３次元座標Ｐ（ｘ、ｙ、ｚ）を用いてもよく、または２つ以上の軸の３次元座標Ｐ（ｘ、ｙ、ｚ）の組合せを用いてもよい。
【００５８】
ステージ４００も、ロボット３００と同様に、ステージ４００の動きが目標動作を示すように、ステージ４００の移動の速度および軌跡は目標位置を示すように時系列に変化する。ステージ４００の目標位置は、ＰＬＣ２００に予め格納されている。
【００５９】
サーボドライバ１３は、ＰＬＣ２００からの目標位置に基づき各サーボモータの回転量を決定し、決定した回転量を指定する指令値を、サーボモータ１４の各サーボモータに対し出力する。このような各サーボモータの回転量に対し、所定関数を用いて演算を施すことで、ステージ４００についても、ロボット３００と同じ３次元仮想空間における３次元座標Ｑ（ｘ、ｙ、０）に変換することができる。このような３次元座標Ｑ（ｘ、ｙ、０）の時系列の変化によりステージ４００の３次元仮想空間における動きを示すことができる。
【００６０】
なお、ここでは、ステージ４００は平面内の動きを示すことから、３次元座標Ｑのｚ軸は値０で固定としているが、他の固定値であってもよい。
【００６１】
このような目標位置に従うステージ４００の移動の軌跡は、「第１目標軌跡」の一実施例である。また、目標位置に従うロボット３００の移動の軌跡は、「第２目標軌跡」の一実施例である。
【００６２】
＜Ｄ．情報処理装置１００の構成＞
図５は、本実施の形態に係る情報処理装置１００の構成を概略的に示す図である。図２の制御システム１において、ロボット３００およびステージ４００が実機としてＰＬＣ２００により制御される環境をオンラインとした場合、図５の情報処理装置１００は、制御システム１をオフラインでシミュレーションする。
【００６３】
情報処理装置１００は、ＣＰＵ（Central  Processing  Unit）２とプログラムおよびデータを格納する格納部を備えて、プログラムに従って動作するコンピュータシステムである。格納部は、ＲＯＭ(Read  Only  Memory）３、ＲＡＭ（Random  Access  Memory）４およびＨＤＤ（Hard  Disk  Drive）５を含む。情報処理装置１００は、さらに、通信インタフェース６およびＩ／Ｏ（Input/Output）インタフェース７を含む。また、情報処理装置１００は、キーボード３７およびディスプレイ３８を含む。キーボード３７は、ユーザからの情報処理装置１００に対する指示を含む入力を受付ける。当該入力を受付けるために、情報処理装置１００は、マウス等の他のデバイスを含んでもよい。情報処理装置１００は、外部の記憶媒体９２を脱着自在に装着し、装着された記憶媒体にプログラムおよび／またはデータを読み書きするＲ／Ｗ（リーダライタ）デバイス９３を備える。
【００６４】
通信インタフェース６は、情報処理装置１００がＰＬＣ２００を含む外部の機器と通信するためのインタフェースである。
【００６５】
Ｉ／Ｏインタフェース７は、情報処理装置１００への入力または情報処理装置１００からの出力のインタフェースである。図５に示すように、Ｉ／Ｏインタフェース７は、キーボード３７とディスプレイ３８とに接続され、ユーザがキーボード３７に対して入力した情報を受け付ける。また、情報処理装置１００の処理結果を、ディスプレイ３８へ出力する。ディスプレイ３８は、ＬＣＤ（Liquid  Crystal  Display）または有機ＥＬ（Electro  Luminescence）を含み、情報処理装置１００から出力される映像信号または画像信号に従う映像または画像を表示する。
【００６６】
＜Ｅ．オフラインシステム２０の構成＞
図１を参照して、本実施の形態に係るオフラインシステム２０の構成例を、周辺部と関連づけて説明する。図６は、図１のプログラム実行部３１の構成例を示す図である。オフラインシステム２０は、制御システム１をシミュレーションする。このシミュレーションでは、ロボット３００およびステージ４００の制御プログラムに含まれた複数の命令がエミュレータにより実行されることにより、ロボット３００およびステージ４００を駆動するサーボモータ１４の挙動が推定される。
【００６７】
図１を参照して、情報処理装置１００は、情報処理装置１００の各部を制御する制御部１０、情報処理装置１００に対するユーザの入力を受付ける入力受付部１１、およびオフラインシステム２０を備える。オフラインシステム２０にはディスプレイ３８が接続される。ディスプレイ３８は、表示制御データに従い表示するべきイメージデータを生成し、イメージデータに従いディスプレイ３８を駆動するディスプレイドライバ３９を含む。入力受付部１１は、キーボード３７の操作またはディスプレイ３８で表示されたアイコン等の操作によるユーザ入力を受付ける。制御部１０は、ＣＰＵ２がシミュレーション制御プログラム２１を実行することにより実現される。制御部１０は、入力受付部１１を介し受付けたユーザの指示に従い、オフラインシステム２０を制御する。
【００６８】
オフラインシステム２０は、プログラムおよびデータを含んで構成されて、制御部１０からの指令に従い、ＣＰＵ２がプログラムを実行することにより、オフラインシステム２０が実現される。また、オフラインシステム２０による処理の結果を、ディスプレイ３８に表示する場合は、処理結果は表示制御データに変換されてディスプレイドライバ３９に出力される。ディスプレイドライバ３９は、表示制御データに従うイメージデータに従いディスプレイ３８を駆動する。これにより、ディスプレイ３８の画面には、情報処理装置１００およびオフラインシステム２０の処理の結果を表す画像が表示される。
【００６９】
（Ｅ−１．オフラインシステム２０の構成）
オフラインシステム２０の構成を説明する。オフラインシステム２０の各部を実現するためのプログラムおよびデータは、例えばＲＯＭ３、ＲＡＭ４およびＨＤＤ５等を含む格納部に格納されている。
【００７０】
図１を参照して、オフラインシステム２０は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０を実行する主体であるプログラム実行部３１、および３Ｄ視覚化プログラム３０を含み描画データを生成する描画データ生成部１９を備える。これらは、例えばプログラムモジュールとして提供される。
【００７１】
オフラインシステム２０は、さらに表示制御データを生成する表示制御部１５、仮想時刻を出力するタイマーを含む周期生成部１８、および制御プログラムを編集するプログラム編集部３４を備えてもよい。
【００７２】
表示制御部１５は、描画データ等から表示制御データを生成し、ディスプレイドライバ３９に出力する。ディスプレイドライバ３９は、表示制御部１５からの表示制御データに従いディスプレイ３８を駆動する。これにより、画面に描画データに従う画像が表示される。
【００７３】
周期生成部１８は、仮想時刻を示す信号ＳＴを生成し、生成した信号ＳＴをオフラインシステム２０の各部に出力する。信号ＳＴが示す仮想時刻は可変である。各部は、信号ＳＴが示す仮想時刻を尺度とする周期に同期して動作する。本実施形態では、仮想時刻を尺度とする周期には、上記に述べた制御周期が含まれる。周期生成部１８は、制御部１０からの指示に従い、演算指令２８０を生成し、プログラム実行部３１に出力する演算指令部３６を含む。演算指令部３６が生成する演算指令２８０は、例えば後述する等倍演算指令、Ｎ倍演算指令および１／Ｎ倍演算指令を含む。
【００７４】
また、図１を参照して、オフラインシステム２０は、描画データ生成部１９に関連して軌跡データ２５１，２５２および画像データ２５３，２５４を含む。また、オフラインシステム２０は、プログラム編集部３４に関連して、ロボット３００の制御プログラムであるロボットプログラム３８１、ステージ４００の制御プログラムであるＰＬＣプログラム３７１を含む。ロボットプログラム３８１とＰＬＣプログラム３７１は格納部に格納されている。図１の各部がプログラムで構成される場合、これらをプログラムおよび関連するデータは、例えばＲＯＭ３、ＲＡＭ４およびＨＤＤ５等に格納されている。ＣＰＵ２は、格納されているプログラムを実行する。
【００７５】
（Ｅ−２．プログラム実行部によるエミュレーション）
プログラム実行部３１は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０を実行する主体、すなわち実行エンジンに相当する。図６を参照して、プログラム実行部３１は、ＰＬＣ２００およびサーボドライバ１３の制御プログラムをエミュレートするＰＬＣエミュレータ２６０、ロボットコントローラ３１０の制御プログラムをエミュレートするロボットエミュレータ２７０および共有メモリ１２Ａを含む。ＰＬＣエミュレータ２６０とロボットエミュレータ２７０の間のデータ交換は共有メモリ１２Ａを用いて実現する。共有メモリ１２Ａを介したＰＬＣエミュレータ２６０とロボットエミュレータ２７０の間のデータ交換は、ＰＬＣ２００、サーボドライバ１３およびロボットコントローラ３１０の間のフィールドネットワークＮＷ２のＥｔｈｅｒＣＡＴを介した通信におけるデータ交換に相当する。
【００７６】
ＰＬＣエミュレータ２６０は、ロボット３００およびステージ４００の挙動を推定するプログラムであって、ＰＬＣプログラム３７１およびロボットプログラム３８１に含まれた複数の命令を含むエミュレーションプログラムに相当する。これら複数の命令は、ＰＬＣプログラム３７１に含まれたステージ４００の挙動を制御するためのモーション命令およびモーション演算命令を含む命令群３７１Ａと、ロボットプログラム３８１に含まれたロボット３００の挙動を制御するための複数のロボット命令を含む命令群３８１Ａを含む。命令群３８１Ａおよび命令群３７１Ａは、四則演算命令のような他の命令も含み得る。ＰＬＣプログラム３７１は、例えばサイクリック実行型言語（例えば、ラダー言語）で記載されたプログラムであり、ロボットプログラム３８１は例えば逐次実行型の言語（例えばインタプリタ言語）で記載されたプログラムである。したがって、プログラム実行部３１は、これら異なる言語のプログラムを実行するためのエミュレータ実行エンジンを備えている。
【００７７】
ＰＬＣエミュレータ２６０のこれら命令群３８１Ａおよび３７１Ａの各命令が、共有メモリ１２Ａの入力データ１４４に基づき実行される毎に、サーボモータのための上記に述べた指令値Ｖ１が生成されて、共有メモリ１２Ａに出力データ１４５として格納される。
【００７８】
また、ロボットエミュレータ２７０は、ロボットコントローラ３１０のプログラムに含まれる命令群を含むエミュレーションプログラムに相当する。この命令群は、共有メモリ１２Ａの出力データに基づき、ロボット３００の目標の軌跡を算出するための１以上の軌跡演算命令２７１と、算出された軌跡に基づき各軸の指令値Ｖ２を算出する１以上の機構演算命令２７２を含む。
【００７９】
ロボットエミュレータ２７０の命令群が、共有メモリ１２Ａの出力データ１４５に基づき実行されると、ロボット３００の各軸のための上記に述べた指令値Ｖ２が生成されて、共有メモリ１２Ａに入力データ１４４として格納される。
【００８０】
このように、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０により生成される指令値は、ロボット３００とステージ４００のサーボモータの推定された挙動を示し得る。また、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０は、それぞれ、他方が算出した指令値に基づき、新たな指令値を算出する。したがって、このように算出される指令値により推定されるサーボモータの挙動により、ロボット３００とステージ４００の相互の連携した動作が示され得る。
【００８１】
（Ｅ−３．描画データの生成）
図１を参照して、描画データ生成部１９は、軌跡計算プログラム３０３を含む３Ｄ（3-dimensions）描画データを生成する３Ｄ視覚化プログラム３０を実行する。３Ｄ視覚化プログラム３０は、「視覚化モジュール」の一実施例である。３Ｄ視覚化プログラム３０が実行されると、描画データ生成部１９は、軌跡データ２５１，２５２と、ロボット３００およびステージ４００を表す画像データ２５３および２５４とに基づいて、ロボット３００およびステージ４００のエミュレートされた動きをディスプレイ３８に描画する描画データ３０１，４０１を生成する。ロボット３００およびステージ４００を表す画像データ２５３および２５４は、ＣＡＤ（computer-aided  design）データ等を含む。
【００８２】
軌跡計算プログラム３０３は、図６の共有メモリ１２Ａの入力データ１４４に所定関数を用いて演算を施すことで、３次元座標Ｐ（ｘ，ｙ，ｚ）および３次元座標Ｑ（ｘ，ｙ，０）を算出し、軌跡データ２５１，２５２を取得する。このように軌跡データは、エミュレーションにより推定されたロボット３００，ステージ４００の３次元仮想空間における動きを示す情報を含む。描画データ生成部１９は、算出された軌跡データ２５１とロボット３００の画像データ２５３に従い、ロボット３００の動きを３次元仮想空間内で立体的に描画するための描画データ３０１を生成し、表示制御部１５に出力する。
【００８３】
同様に、軌跡計算プログラム３０３は、軌跡データ２５２に所定関数を用いて演算を施すことで、時系列の３次元座標Ｑ（ｘ，ｙ，０）を算出し、軌跡データ２５２として格納する。このように軌跡データ２５２は、エミュレーションにより推定されたステージ４００の動きを３次元仮想空間内で立体的に描画するため情報である。描画データ生成部１９は、算出された軌跡データ２５２とステージ４００の画像データ２５４に従い、ステージ４００の動きを、ロボット３００と同じ３次元仮想空間内で立体的に描画するための描画データ４０１を生成し、表示制御部１５に出力する。
【００８４】
（Ｅ−４．同期処理）
周期生成部１８は、信号ＳＴを生成する仮想時刻生成プログラム２９を実行する。周期生成部１８は、生成された信号ＳＴを他の各部に出力する。各部は、周期生成部１８から信号ＳＴが出力される周期に同期して処理またはプログラムを実行する。これにより、オフラインシステム２０の各部の処理またはプログラムは、信号ＳＴの周期で、または当該周期に同期して実行される。信号ＳＴの周期は、図１の制御システム１のフィールドネットワークＮＷ２の通信周期に相当する。フィールドネットワークＮＷ２の通信周期は変更可能であり、信号ＳＴの周期は変更後のフィールドネットワークＮＷ２の通信周期に同期するように変更され得る。なお、通信周期は、「制御周期」に同期した周期である。
【００８５】
図７は、本実施の形態に係る仮想時刻によるエミュレータの同期を説明する図である。図７を参照して、周期生成部１８は、ＣＰＵ２が有するタイマー（図示せず）の仮想時刻の出力から、例えば１ｍｓｅｃの周期を有した信号ＳＴを生成し出力する。プログラム実行部３１は、信号ＳＴの共通の周期に従い、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０とに指令値Ｖ１，Ｖ２の計算を開始させる。これにより、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０は信号ＳＴが示す共通の周期に同期して周期的に実行される。計算を開始すると、ＰＬＣエミュレータ２６０は入力データ１４４に基づき指令値Ｖ１を算出し、またロボットエミュレータ２７０は出力データ１４５に基づき指令値Ｖ２を算出する。プログラム実行部３１は、周期毎に、算出された指令値Ｖ１，Ｖ２を共有メモリ１２Ａに出力（書込）する。
【００８６】
これにより、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０の両者において指令値Ｖ１，Ｖ２の演算に要する計算時間にバラツキがあっても、言い換えるとＰＬＣプログラム３７１とロボットプログラム３８１の間で計算時間が異なっても、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０は、それぞれ、算出した指令値Ｖ１，Ｖ２を出力するタイミングを信号ＳＴの周期に合わせることができる。
【００８７】
ここで、本実施の形態では、「制御周期」は信号ＳＴの周期に同期していることから、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０の両者は、各制御周期において、直前の制御周期で算出された指令値Ｖ１，Ｖ２を用いて新たな指令値Ｖ１，Ｖ２を算出することが可能になる。
【００８８】
上記のＰＬＣプログラム３７１とロボットプログラム３８１の間での計算時間のバラツキは、例えばＰＬＣプログラム３７１とロボットプログラム３８１のプログラム言語の種類に基づく。例えば、本実施の形態では、上述したように、ロボットプログラム３８１は逐次実行型の言語で記載されて、ＰＬＣプログラム３７１はサイクリック実行型言語で記載されており、両プログラム間では、１命令の実行完了に要する時間が相違する。本実施の形態では、このような相違を、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の実行周期を、共通の制御周期に同期させることで吸収することが可能となる。
【００８９】
（Ｅ−５．プログラム編集）
本実施の形態では、オフラインシステム２０は、制御プログラムを編集する環境を提供してもよい。具体的には、プログラム編集部３４は、制御プログラムを編集するためにＰＬＣプログラムエディタ３２およびロボットプログラムエディタ３３を含む。ＰＬＣプログラムエディタ３２およびロボットプログラムエディタ３３は、それぞれ、ロボットプログラム３８１およびＰＬＣプログラム３７１を、制御部１０が入力受付部１１を介して受付けたユーザ入力に従い編集（変更、追加、削除など）するエディタプログラムに相当する。
【００９０】
プログラム編集部３４は、格納部からロボットプログラム３８１とＰＬＣプログラム３７１を読出し、読出された各プログラムを、表示制御部１５を介してディスプレイ３８に表示する。ユーザは、ディスプレイ３８に表示された制御プログラムを編集する。例えばユーザは、エミュレーション結果に基づき制御プログラムを編集することにより、制御プログラムをデバッグすることができる。
【００９１】
エミュレーション結果に基づくデバッグをする場合、後述するような高速エミュレーションが実施された場合は、エミュレーション結果に基づくデバッグに要する時間と手間を削減することが可能となる。
【００９２】
＜Ｆ．表示画面の例示＞
図８は、本実施の形態に係る描画データによる表示画面の一例を示す図である。表示制御部１５は、ディスプレイ３８に、描画データ３０１，４０１による画像ＯＢ１，ＯＢ２を表示する。画像ＯＢ１，ＯＢ２は、３次元仮想空間におけるロボット３００およびステージ４００の動きを示す。ロボット３００の動きは、例えば、ステージ４００上のワークを把持して所定位置まで搬送して配置する動きを含む。このようなロボット３００による把持・搬送・配置の一連の動きは、「ピック＆プレース動作」とも称される。本実施の形態では、描画データ３０１，４０１により、「ピック＆プレース動作」の動きと、これに同期したステージ４００の動きとを同一画面において描画することができる。
【００９３】
図９は、本実施の形態に係る描画データによる表示画面の他の例を示す図である。本実施の形態に係るＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、「ピック＆プレース動作」とは異なる動きをするタイプのロボットであっても同様に適用することができる。例えば、図９では、スライダーと、スライダーの直線方向の動きに同期して動くロボットが示される。
【００９４】
＜Ｇ．オフラインシステム２０の全体処理＞
図１０と図１１は、本実施の形態に係る情報処理装置１００が実施するオフラインシステム２０の処理を説明する図である。図１０と図１１では、オフラインシステム２０の処理が、各部間の信号の入出力関係を示すタイミングチャートと関連付けて示される。
【００９５】
図１０を参照して、制御部１０のシミュレーション制御プログラム２１は、入力受付部１１を介してユーザから起動指令を受付けると（ステップＴ１）、起動する。
【００９６】
制御部１０のシミュレーション制御プログラム２１は、周期生成部１８に起動指令を出力する（ステップＴ３）。周期生成部１８は起動指令に従い仮想時刻生成プログラム２９を起動する。仮想時刻生成プログラム２９は起動されると、信号ＳＴの出力を開始するとともに、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０に起動指令を出力する（ステップＴ４，Ｔ５）。
【００９７】
プログラム実行部３１は、起動指令に従いＰＬＣエミュレータ２６０とロボットエミュレータ２７０を起動する。これにより、指令値Ｖ１，Ｖ２を算出する指令値演算処理４０を実施する。指令値演算処理４０は、信号ＳＴが示す仮想時刻を尺度とする制御周期毎に繰返（Loop）し実施される。
【００９８】
指令値演算処理４０が実施されるとき、ユーザは動作モードを指定する操作を行う（ステップＴ６）。動作モードの指定については、図２２で後述する。制御部１０は入力受付部１１を介して受付けたユーザの操作内容に従い、指定された動作モードを示すモード指令ＭＣをプログラム実行部３１に出力する（ステップＴ７）。プログラム実行部３１は、モード指令ＭＣが示す動作モードに従って指令値演算処理４０を実施する。
【００９９】
図１１を参照して、指令値演算処理４０では、まず、制御部１０のシミュレーション制御プログラム２１は、プログラム実行部３１のエミュレータが一時停止しているかを判断する。制御部１０は、プログラム実行部３１のエミュレータの実行が停止していると判断したとき、以降の処理をスキップする。これにより、指令値演算処理４０は終了する。
【０１００】
一方、制御部１０のシミュレーション制御プログラム２１は、プログラム実行部３１によるエミュレータの実行が一時停止していない、すなわち実行中であると判断したとき、まず、周期生成部１８は、仮想時刻生成プログラム２９により、演算指令をプログラム実行部３１に出力する。プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は、演算指令に従い各軸の指令値Ｖ１，Ｖ２を算出し、入力データ１４４として共有メモリ１２Ａに格納する（ステップＳ１）。周期生成部１８の仮想時刻生成プログラム２９は、プログラム実行部３１による演算が完了すると、次の制御周期まで待機する（ステップＳ２）。
【０１０１】
描画更新処理５０では、描画データ生成部１９は３Ｄ視覚化プログラム３０により、描画の更新タイミングであるかを判断する。描画データ生成部１９は、描画の更新タイミングであると判断しないときは、描画更新処理５０をスキップする。これにより、描画更新処理５０は終了する。
【０１０２】
ここで、本実施の形態では、描画更新処理５０を、制御周期のＭ（Ｍ≧２）倍の周期に相当する描画周期毎に実施する。したがって、描画更新処理５０を御周期毎に実施する場合に比較して、情報処理装置１００における描画に関する処理の負荷を軽減することができる。
【０１０３】
描画データ生成部１９は、描画の更新タイミングであると判断したとき、すなわち信号ＳＴに基づき前回の描画時刻から描画周期が経過した判断したとき、ＰＬＣエミュレータ２６０とロボットエミュレータ２７０により算出された各軸の指令値Ｖ１，Ｖ２を取得する（ステップＳ３）。具体的には、描画データ生成部１９は３Ｄ視覚化プログラム３０により、共有メモリ１２Ａを検索し、共有メモリ１２Ａから指令値Ｖ１，Ｖ２を取得する。描画データ生成部１９は、３Ｄ視覚化プログラム３０により、取得した指令値Ｖ１，Ｖ２から軌跡データ２５１，２５２を算出し、算出された軌跡データ２５１，２５２と画像データ２５３，２５４とから描画データ３０１，４０１を生成する。描画データ生成部１９は、ディスプレイ３８の画像を更新するために、表示制御部１５に描画データ３０１，４０１を出力する（ステップＳ４）。
【０１０４】
図１０と図１１では、ディスプレイ３８の画面には、描画周期ごとに、当該描画周期内で算出された各軸の指令値Ｖ１，Ｖ２を用いた描画データ３０１，４０１が表すロボット３００およびステージ４００の動きが描画される。これにより、ユーザは、ディスプレイ３８の画面から、描画周期毎に、ロボット３００とステージ４００の動きの直前の描画周期からの変化量、すなわちロボット３００のアームまたはステージ４００の移動量を視認することができる。
【０１０５】
＜Ｈ．各種の演算指令＞
本実施の形態では、演算指令２８０は、モード指令ＭＣに従う複数種類の指令に分類され得る。演算指令２８０は、例えば、ロボット３００またはステージ４００の１制御周期あたりの移動量が、予め定められた単位移動量と等しくなるような等倍演算指令と、１制御周期あたりの移動量が単位移動量とは異なる移動量となるような可変演算指令とに分類され得る。可変演算指令は、例えば、Ｎ倍（ただし、Ｎ＞１．０）演算指令および１／Ｎ倍（ただし、Ｎ＞１．０）演算指令に分類され得る。
【０１０６】
Ｎ倍演算指令は、例えば１制御周期あたりの移動量が（Ｎ×単位移動量）となるような指令値Ｖ１，Ｖ２の算出を指示する。Ｎ倍演算指令の場合、プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、１回の演算により、移動量が（Ｎ×単位移動量）となるような指令値Ｖ１，Ｖ２を算出する。このように、等倍演算指令によるＮ回の演算で算出された移動量となるような指令値Ｖ１，Ｖ２を、Ｎ倍演算指令の場合、１回の演算で算出する、すなわち（Ｎ−１）回の演算を省略しながら算出することができる。したがって、演算回数が削減されることで、指令値Ｖ１，Ｖ２の算出に係る情報処理装置１００にかかる処理の負荷を軽減できる。また、ディスプレイ３８においてロボット３００とステージ４００の動きを高速に描画することができて、いわゆる動きの早送りが可能となる。
【０１０７】
１／Ｎ倍演算指令は、例えば１制御周期あたりの移動量が（１／Ｎ×単位移動量）となるような指令値Ｖ１，Ｖ２の算出を指示する。１／Ｎ倍演算指令の場合、プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、１回の演算により、移動量が（１／Ｎ×単位移動量）となるような指令値Ｖ１，Ｖ２を算出する。
【０１０８】
例えば、１／Ｎ倍演算指令は、連続する２つの制御周期のうち１番目の制御周期では、移動量が単位移動量となるような指令値Ｖ１，Ｖ２の算出を指示する等倍演算指令と、次の２番目の制御周期では、指令値Ｖ１，Ｖ２の算出を停止するよう指示するsleep指令との組合せを含み得る。これにより、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は、Ｎ個の制御周期のうち１の制御周期だけ演算を実施して指令値Ｖ１，Ｖ２を算出する。したがって、sleep指令により演算を停止することができるので、指令値Ｖ１，Ｖ２の算出に係る情報処理装置１００にかかる処理の負荷を軽減することができる。また、描画周期においては、等倍演算指令の場合に比較して、１／Ｎ倍の遅い速度でロボット３００とステージ４００の動きを描画することができて、ユーザは、ロボット３００またはステージ４００の詳細な動きを確認することができる。
【０１０９】
＜Ｉ．エミュレーション速度の高速化＞
図１２と図１３を参照して、Ｎ倍演算指令の高速エミュレーションを説明する。
【０１１０】
（Ｉ−１．エミュレーションの高速化と描画）
図１２は、本実施の形態に係る高速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。図１２では、説明のために制御周期を１ｍｓｅｃおよび描画周期を４ｍｓｅｃとしているが、制御周期は１ｍｓｅｃに限定されず、また描画周期も４ｍｓｅｃに限定されない。
【０１１１】
図１２は、例えば、制御周期毎に、演算指令２８０が出力される。図１２（Ａ）では、制御周期毎に、周期生成部１８の演算指令部３６は等倍演算指令を出力し、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、等倍演算指令に従い制御周期ごとに指令値Ｖ１，Ｖ２を算出する。３Ｄ視覚化プログラム３０は、描画周期毎に、当該描画周期内で算出された指令値Ｖ１，Ｖ２から描画データ３０１，４０１を生成し、ディスプレイ３８には、ロボット３００とステージ４００の動きが描画される。この場合、ロボット３００の移動の軌跡２１０を、例えば、図１２（Ｂ）のように描画することができる。
【０１１２】
これに対して、図１２（Ｃ）は、制御周期毎に、周期生成部１８の演算指令部３６はＮ倍演算指令を出力するケースを示す。例えばＮ＝２の場合、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、Ｎ倍演算指令に従い、制御周期ごとに、１回の演算の省略ＯＭをしながらＮ倍の単位移動量となるような指令値Ｖ１，Ｖ２を算出する。３Ｄ視覚化プログラム３０は、描画周期毎に、当該描画周期内で算出された指令値Ｖ１，Ｖ２から描画データ３０１，４０１を生成し、ディスプレイ３８には、ロボット３００とステージ４００の動きが描画される。この場合、ロボット３００の移動の軌跡２１１を、例えば、図１２（Ｄ）のように描画することができる。
【０１１３】
Ｎ倍演算指令により算出される指令値から描画される図１２（Ｄ）の軌跡２１１は、等倍演算指令により算出される指令値から描画される図１２（Ｂ）の軌跡２１０に比較して、大まかに描画される軌跡となるが、上記に述べたように高速なエミュレーションが可能である。
【０１１４】
（Ｉ−２．高速エミュレーションの処理）
図１３は、本実施の形態に係る高速エミュレーションのための指令値演算処理４１の一例を説明する図である。図１３の指令値演算処理４１は、図１１の指令値演算処理４０の変形例である。
【０１１５】
図１３を参照して、指令値演算処理４１では、周期生成部１８は、ロボット３００およびステージ４００に関する移動量を単位移動量のＮ倍にするためのパラメータとして、例えば速度，加速度，ジャーク（加加速度）を指定するパラメータ指定指令を、仮想時刻生成プログラム２９を介してプログラム実行部３１に出力し（ステップＳ１０）、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は当該指令を受付ける（ステップＳ１１）。
【０１１６】
周期生成部１８は、仮想時刻生成プログラム２９を介して、Ｎ倍演算指令をプログラム実行部３１に出力する（ステップＳ１２）。プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、Ｎ倍演算指令に従い、ステップＳ１１で指定されたパラメータに対応した各軸の指令値Ｖ１，Ｖ２を算出し（ステップＳ１３）、入力データ１４４として共有メモリ１２Ａに格納する。
【０１１７】
図１３の処理では、プログラム実行部３１は、高速エミュレーションを実施中と判断する時は、後述する警告処理（ステップＳ１４〜ステップＳ１６）を実施してもよい。
【０１１８】
描画更新処理５１では、描画データ生成部１９は、描画の更新タイミングであると判断したとき、描画データ生成部１９は３Ｄ視覚化プログラム３０により、共有メモリ１２Ａの指令値Ｖ１，Ｖ２から軌跡データ２５１，２５２を算出し、算出された軌跡データ２５１，２５２を用いて描画データ３０１，４０１を生成し表示制御部１５に出力する。このとき、警告処理による警告メッセージの表示指令を受信している場合は（ステップＳ１７）、警告メッセージを表示制御部１５に出力する。
【０１１９】
（Ｉ−３．高速エミュレーションの警告処理）
図１３の警告処理（ステップＳ１４〜Ｓ１６）では、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０のそれぞれは、制御周期どうしの指令値Ｖ１の差である変化量ＤＶ１および制御周期どうしの指令値Ｖ２の差である変化量ＤＶ２を検出する。変化量ＤＶ１とＤＶ２をチェック（判断）し、チェック結果に従い警告メッセージを周期生成部１８に通知する。
【０１２０】
具体的には、ＰＬＣエミュレータ２６０は今回の制御周期のＮ倍演算指令により算出された指令値Ｖ１と、直前の制御周期のＮ倍演算指令により算出された指令値Ｖ１との差である変化量ＤＶ１を算出し、例えば（変化量ＤＶ１＞変化量閾値）で示す予め定められた条件が満たされるか否かを判断する（ステップＳ１４）。ＰＬＣエミュレータ２６０は、この条件が満たされると判断したとき、警告メッセージを生成する（ステップＳ１５）。
【０１２１】
同様に、ロボットエミュレータ２７０は、今回の制御周期のＮ倍演算指令により算出された指令値Ｖ２と、直前の制御周期のＮ倍演算指令により算出された指令値Ｖ２との差である変化量ＤＶ２を算出し、（変化量ＤＶ２＞変化量閾値）の予め定められた条件が満たされるか否かを判断する（ステップＳ１４）。ロボットエミュレータ２７０は、この条件が満たされると判断したとき、警告メッセージを生成する（ステップＳ１５）。なお、変化量閾値は、例えば予め設定された値である。
【０１２２】
プログラム実行部３１は、Ｎ倍演算指令に従う演算が終了したとき、演算完了通知を周期生成部１８に出力する。この場合、上記に述べた警告処理により警告メッセージが出力されている場合は、プログラム実行部３１は、警告メッセージを付けた演算完了通知を、周期生成部１８に通知する（ステップＳ１６）。
【０１２３】
周期生成部１８の仮想時刻生成プログラム２９は、プログラム実行部３１からの演算完了通知に、警告メッセージが付加されていると判断したとき、警告メッセージの表示指令を描画データ生成部１９の３Ｄ視覚化プログラム３０に出力する（ステップＳ１７）。描画更新処理５１では、３Ｄ視覚化プログラム３０は、警告メッセージ付きの描画データ３０１，４０１を生成し表示制御部１５に出力する。これにより、ディスプレイ３８では、ロボット３００とステージ４００の動きを表す描画と、警告メッセージの表示とがなされる。
【０１２４】
警告処理に関し本実施の形態の背景を説明する。本実施の形態の高速エミュレーションの場合、Ｎ倍演算指令のＮの値が大きいほど、１制御周期ごとに算出される指令値Ｖ１，Ｖ２に基づき移動量が大きくなるために、ディスプレイ３８の画面では、ロボット３００およびステージ４００の動きの描画が粗くなる傾向にある。描画が粗くなると、例えば、ユーザは、ディスプレイ３８の画面から、ロボット３００またはステージ４００の動きを正確に把握することの支障となる。
【０１２５】
そこで、本実施の形態に係る警告処理では、このような支障を防止するために、上記の変化量ＤＶ１，ＤＶ２に関する条件が満たされると判断されたときは、警告メッセージを出力し、ユーザに対し、エミュレーションの速度が速すぎる可能性を示唆することができる。
【０１２６】
本実施の形態では、警告処理は、描画データ生成部１９ではなく、プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれにより実施される。したがって、例えばＣＰＵ２のスペックによっては、負荷の大きさにより描画データ生成部１９の処理が省略される可能性があるとしても、本実施の形態によれば、制御周期ごとに警告処理を確実に実施することが可能となる。
【０１２７】
なお、警告処理の上記の条件は、指令値Ｖ１，Ｖ２の変化量に基づくものであったが、指令値の変化量に限定されない。例えば、３Ｄ視覚化プログラム３０が算出した３次元座標値Ｐ，Ｑの軌跡データ２５１の位置データからロボット３００のアームの移動距離の制御周期間の変化量またはステージ４００の制御周期間の移動距離の制御周期間の変化量を検出し、これら変化量が、予め定められた距離閾値を超えたとき、警告を出力してもよい。
【０１２８】
また、警告処理は、上記の指令値Ｖ１，Ｖ２の変化量と移動距離の変化量とを組合わせて実施してもよい。
【０１２９】
（Ｉ−４．警告メッセージの表示例）
図１４は、本実施の形態に係る高速エミュレーションにおける警告メッセージの表示の一例を示す図である。図１４（Ａ）は、高速エミュレーションの表示画面の一例であって、図１４（Ｂ）は、警告メッセージ３８２の表示の一例を示す。図１４（Ａ）の画面では、高速エミュレーションを実施中であることを示すメッセージ３８３と時間３８Ｅが表示される。メッセージ３８３は、例えば文字列を示すが、文字列に限定されず、マークであってもよい。時間３８Ｅは、信号ＳＴが示す仮想時刻に基づく時間であって、例えばエミュレーション開始からの経過時間を示す。また、図１４（Ｂ）では、文字列による警告メッセージ３８２であるが、これに限定されない。例えば、警告のマークであってもよく、または音声による警告であってもよい。また、表示と音声が組み合わされてもよい。
【０１３０】
（Ｉ−５．間引く部分の指定の一例）
本実施の形態では、高速エミュレーションを実施時には、図１２（Ｃ）に示すように演算の省略ＯＭがなされる。このような演算の省略ＯＭは、描画におけるロボット３００およびステージ４００の一連の動きの一部を間引くことに相当する。本実施の形態では、この間引く部分を、可変に指定することができる。
【０１３１】
図１５は、本実施の形態に係る間引く部分を指定する方法の一例を説明する図である。図１５（Ａ）はロボット３００の目標位置に従う移動の軌跡２１０の一例を示し、図１５（Ｂ）はステージ４００の目標位置に従う移動の軌跡３１１の一例を示す。
【０１３２】
間引く部分は、例えば軌跡２１０，３１１の上における等速移動の区間（以下、等速区間という）に対応し得る。等速区間を検出するために、本実施の形態では、指令値演算処理４０または指令値演算処理４１においては、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は等速区間の検出処理を実施し、等速区間を検出したとき等速区間通知を周期生成部１８に出力する。周期生成部１８は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれから等速区間通知を受けたとき、Ｎ倍演算指令をプログラム実行部３１に出力する。
【０１３３】
等速区間の検出処理では、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれは、制御周期どうしの指令値Ｖ１の変化量ＤＶ１および指令値Ｖ２の変化量ＤＶ２を検出する。ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれは、第１目標軌跡および第２目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間のうちから、変化量ＤＶ１および変化量ＤＶ２の両方が閾値（例えば、略ゼロ）以下であることを示す条件（これを等速条件という）が、予め定められた時間だけ継続して成立したとき（これを、等速区間という）、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれは、等速区間通知を出力する。
【０１３４】
周期生成部１８は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の両者から等速区間通知を受けると、演算指令をＮ倍演算指令に切替えて、等速通知を受ける間は、Ｎ倍演算指令を出力する。そして、等速区間が検出されなくなると（すなわち、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の少なくとも一方から、等速区間通知を受理しなくなったとき）、周期生成部１８は演算指令を元の等倍演算指令に切替えて、元の等倍演算指令によるエミュレーションに戻る。これにより、等速区間においてのみ、Ｎ倍演算指令に従う高速エミュレーションを実施することができる。
【０１３５】
例えば、図１５（Ａ）のロボット３００の軌跡２１０では、３つの等速区間が検出されるのに対して、図１５（Ｂ）のステージ４００の軌跡３１１においては、１つの等速区間が検出されている。この場合、例えば、ロボット３００の軌跡２１０における２番目の等速区間４１０と、ステージ４００の軌跡３１１における等速区間４１１とは、エミュレーション開始時からの経過時間が共通している。これにより、周期生成部１８は、この共通した等速区間４１０，４１１の時間において、Ｎ倍演算指令が出力し、プログラム実行部３１では動きを間引くような高速エミュレーションが実施される。
【０１３６】
（Ｉ−６．間引く部分の指定の他の例）
図１６は、本実施の形態に係る間引く部分の他の指定例を説明する図である。図１６では、ユーザによる間引く部分の指定を受付けるための画面の表示例が示される。図１６のディスプレイ３８の画面は、エミュレーションによるロボット３００およびステージ４００の動きの描画と、ダイアログボックスとを含む。ダイアログボックスは、エミュレーションの「開始」、「一時停止」、「コマ送り」および「速度変更」のそれぞれを指示するために操作されるアイコン３８Ａ、３８Ｂ、３８Ｃおよび３８Ｄを含む。
【０１３７】
ユーザはアイコン３８Ｄのプルダウンメニューを操作してＮ倍演算指令の「Ｎ」の値を指定する。入力受付部１１は、アイコン３８Ｄを介して受付けた操作内容を制御部１０に出力する。制御部１０は、受付けた操作内容を周期生成部１８に出力する。例えば、ユーザ操作内容が「値＝１．０」を示すとき、周期生成部１８は演算指令として等倍演算指令を出力すると決定し、また「値＞１．０」を示すときＮ倍演算指令を出力すると決定する。また、「値＜１．０」の場合は、１／Ｎ倍演算指令を出力すると決定する。
【０１３８】
これにより、ユーザは、アイコン３８Ｄを操作することにより、エミュレーション速度を変更することができる。例えばエミュレーション開始の３０分経過後から詳細にロボット３００またはステージ４００の動きを確認する場合は、エミュレーション開始時に、ユーザはアイコン３８Ｄを操作して「Ｎ」に１．０を超える値を指定することにより、実際に３０分待たなくとも、ロボット３００またはステージ４００の動きを３０分経過した状態に進めることが可能となる。そして、ユーザは、３０分後の描画がなされたとき、アイコン３８Ｄを操作して「Ｎ」の値を１．０に変更することで、３０分以降においては、等倍演算指令によるエミュレーションによる、詳細な動きを描画させることができる。
【０１３９】
アイコン３８Ｄの操作によるエミュレーション速度の変更を適用するシーンとして、例えばロボット３００のアームの動きと、ステージ４００の動きとの「干渉」の有無をチェックする場合がある。例えば、エミュレーション開始から３０分後の「干渉」をチェックする場合等があるが、適用例はこれに限定されない。
【０１４０】
「干渉」に関しては、例えば、ロボット３００の「ピック＆プレース動作」において、ロボット３００のアームがステージ４００上のワークを把持（ピック）する時と、把持したワークをステージ４００上に配置（プレース）する時に、「干渉」が生じやすい傾向がある。したがって、このようなシーンでは、ユーザは、ピック動作の前またはプレース動作の前までは高速にエミュレーションを実施し、ピック動作のとき、またはプレース動作のときに、エミュレーション速度を遅くするとしてもよい。
【０１４１】
ピックまたはプレースの動作の検出は、例えばパターンマッチングを利用する。予めピックまたはプレース時のロボット３００とステージ４００の座標Ｐ（ｘ，ｙ，ｚ）と座標Ｑ（ｘ，ｙ，ｚ）パターンを格納しておき、エミュレーション時に、検出されると座標Ｐ，Ｑと登録パターンとを照合し、照合結果に基づきピックまたはプレースの動作に該当するか否かを検出する。
【０１４２】
また、高速エミュレーションを実施すべき区間は、例えばロボット３００とステージ４００の３次元仮想空間における相対的な位置関係が予め定められた条件を満たす区間であってもよい。具体的には、周期生成部１８は、軌跡データ２５１が示すロボット３００の座標Ｐ（ｘ，ｙ，ｚ）と、軌跡データ２５２が示すステージ４００の座標Ｑ（ｘ，ｙ，０）とから、両者の位置間の相対的な距離を算出する。周期生成部１８は、（算出された距離＞距離Ａ）を示す予め定められた条件が満たされる区間を、高速エミュレーションを実施すべき区間と判定する。これにより、ロボット３００とステージ４００の両者の相対的な位置関係が、両者は十分に離れた関係を示す区間、すなわち「干渉」が生じる可能性が低いと判断される区間において、高速エミュレーションが実施される。
【０１４３】
また、周期生成部１８は、図１５（Ａ）の等速区間と、（算出された距離＞距離Ａ）の条件が満たされる区間のいずれか一方、または両方において、Ｎ倍演算指令を出力するとしてもよい。
【０１４４】
（Ｉ−７．等速区間における高速エミュレーションの処理）
図１７は、本実施の形態に係るエミュレーションのための指令値演算処理４２を説明する図である。図１８の指令値演算処理４２は、図１３の指令値演算処理４１の変形例であって、等速区間を検出する処理を含む。
【０１４５】
図１７を参照して、指令値演算処理４２では、周期生成部１８は、エミュレーションが実施されている場合、プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０に、等速区間が検出されたか否かを問い合わせる（ステップ４）。
【０１４６】
ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０のそれぞれは等速区間検出処理を実施し（ステップＳ５）、等速区間を検出するか否か（true or false）を出力する（ステップＳ６）。等速区間が検出されたときは、‘true’（すなわち、等速区間通知）が周期生成部１８に出力される（ステップＳ６）。
【０１４７】
周期生成部１８は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０も両者から等速区間通知を受けたとき、図１３のステップＳ１０と同様に、移動量を単位移動量のＮ倍にするためのパラメータを指定するパラメータ指定指令を、仮想時刻生成プログラム２９を介してプログラム実行部３１に出力し（ステップＳ１０ａ）、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は当該指令を受付ける（ステップＳ８）。
【０１４８】
一方、周期生成部１８は、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の両者から等速区間通知を受けていないときは、移動量を単位移動量の等倍にするべきパラメータとして速度，加速度，ジャークを指定するパラメータ指定指令を、仮想時刻生成プログラム２９を介してプログラム実行部３１に出力し（ステップＳ１０ｂ）、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は当該指令を受付ける（ステップＳ８）。
【０１４９】
その後、周期生成部１８は、等速区間通知に従う演算指令（Ｎ倍演算指令および等倍演算指令の一方）をプログラム実行部３１に出力する（ステップＳ１２）。これにより、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、両者が等速区間を検出ししているときは、Ｎ倍演算指令に従い指令値Ｖ１，Ｖ２を算出する（ステップＳ１３）。ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の両者が等速区間を検出していないときは、等倍演算指令に従い指令値Ｖ１，Ｖ２を算出する（ステップＳ１３）。
【０１５０】
図１７の指令値演算処理４２でも、図１３の処理と同様に、警告処理（ステップＳ１４〜ステップＳ１６）が実施されて、警告処理による警告メッセージ３８２の表示（ステップＳ１７）が実施されてもよい。
【０１５１】
描画更新処理５２では、図１３の描画更新処理５１と同様にディスプレイ３８への描画がなされる。具体的には、等速区間では高速エミュレーションが実施されながら算出された指令値Ｖ１，Ｖ２から、描画データ３０１，４０１が生成されて、生成された描画データ３０１，４０１に従いディスプレイ３８に描画がなされる。
【０１５２】
なお、図１７の処理は、高速エミュレーションを等速区間で実施するケースであったが、ユーザがアイコン３８Ｄを操作して指定した区間で実施するケース、または（算出された距離＞距離Ａ）の条件が満たされた区間で実施するケースであっても、図１７の処理を同様に適用することができる。
【０１５３】
＜Ｊ．エミュレーション速度を遅くする＞
図１８は、本実施の形態に係る低速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。図１８では、図１２と同様に、説明のために制御周期を１ｍｓｅｃおよび描画周期を４ｍｓｅｃとしている。図１８（Ａ）と（Ｂ）は、図１２（Ａ）と（Ｂ）で示した等倍演算指令によるエミュレーションを例示する。
【０１５４】
これに対して、図１８（Ｂ）と（Ｄ）は、例えば、１／２倍演算指令が出力される場合を示す。１／２倍演算指令では、１制御周期（例えば、１ｍｓｅｃ）で指令値Ｖ１，Ｖ２の演算を実行し、次の１制御周期ではＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は指令値Ｖ１，Ｖ２の算出を停止する。
【０１５５】
これによって、描画周期毎に、等倍演算指令による２個の制御周期に相当の指令値Ｖ１，Ｖ２に基づく移動量に従う軌跡２１２の描画がなされることで、等倍演算指令の軌跡２１１の描画に比べて、ゆっくりと低速の描画がなされる。したがって、例えば、本来は曲線軌跡を示す描画である場合、等倍演算指令であれば比較的速い描画であるため、ユーザは曲線軌跡を略直線軌跡として視認することになるのに対して、１／Ｎ倍演算指令であれば、ゆっくり曲線軌跡が詳細に描画されることで、ユーザは本来の曲線軌跡を視認することが可能になる。このようなエミュレーション速度の低速化を実施する具体例を、図１９〜図２１を参照して説明する。
【０１５６】
（Ｊ−１．低速エミュレーションの処理）
図１９は、本実施の形態に係る低速エミュレーションのための指令値演算処理４３を説明する図である。図１９の指令値演算処理４３は、図１３の指令値演算処理４１の変形例である。
【０１５７】
図１９を参照して、指令値演算処理４３では、周期生成部１８は、移動量を単位移動量の１／Ｎ倍にするべきパラメータとして速度，加速度，ジャークを指定するパラメータ指定指令を、仮想時刻生成プログラム２９を介してプログラム実行部３１に出力し（ステップＳ１０ａ）、プログラム実行部３１のＰＬＣエミュレータ２６０とロボットエミュレータ２７０は当該指令を受付ける（ステップＳ１１）。
【０１５８】
周期生成部１８は、１／Ｎ倍演算指令をプログラム実行部３１に出力する（ステップＳ１２ａ）。プログラム実行部３１のＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、１／Ｎ倍演算指令に従い演算を実施する（ステップ１３ａ，Ｓ１３ｂ）。ここでは、例えばＮ＝２．０として説明するが、Ｎの値は「２．０」に限定されない。
【０１５９】
プログラム実行部３１は、１／Ｎ倍演算指令を入力した場合、指令を入力してから連続する２つの制御周期ＣＴのうち、１番目の制御周期を演算周期と判断し、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、等倍演算指令と同様に指令値Ｖ１，Ｖ２を算出する（ステップ１３ａ）。プログラム実行部３１は、次の２番目の制御周期ＣＴはsleep指令により指令値の算出を停止すると判断し、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は演算を停止（スキップ）する（ステップ１３ｂ）。したがって、プログラム実行部３１では、２つ制御周期のうち１番目の制御周期においてのみ指令値Ｖ１，Ｖ２が算出される。
【０１６０】
図１９の処理でも、プログラム実行部３１は、演算周期においては、図１３と同様の警告処理（ステップＳ１４ａ，Ｓ１５ａ，Ｓ１６）を実施し、演算周期ではないときは警告処理をスキップして実施しない（ステップ１４ｂ）。
【０１６１】
描画更新処理５３では、図１３の描画更新処理５１と同様に共有メモリ１２Ａの指令値Ｖ１，Ｖ２から算出された軌跡データ２５１，２５２を用いて描画データ３０１，４０１を生成し表示制御部１５に出力する。このとき、警告処理による警告メッセージの表示指令を受信している場合は（ステップＳ１７）、描画データ３０１，４０１とともに警告メッセージが表示制御部１５に出力される。
【０１６２】
（Ｊ−２．低速エミュレーションを実施する区間を指定する方法）
本実施の形態では、ロボット３００およびステージ４００の目標値に従う軌跡において、低速エミュレーションを実施する部分を可変に指定することができる。図２０は、本実施の形態に係る低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。図２０（Ａ）を参照して、低速エミュレーションを実施中のディスプレイ３８の画面では、低速エミュレーションを実施中であることを示すメッセージ３８３が表示されている。
【０１６３】
低速エミュレーションを実施する区間は、高速エミュレーションを実施すべき区間と同様に、例えばロボット３００とステージ４００の３次元仮想空間における相対的な位置関係が予め定められた条件を満たす区間であってもよい。具体的には、周期生成部１８は、軌跡データ２５１が示すロボット３００の座標Ｐ（ｘ，ｙ，ｚ）と、軌跡データ２５２が示すステージ４００の座標Ｑ（ｘ，ｙ，０）とから、両者の距離を算出し、（算出された距離＜距離Ｂ）の条件が満たされたとき、低速エミュレーションを実施する区間と判定する。ここでは、距離Ｂは、例えば「干渉」が生じる可能性がある距離であって、例えば予め設定された値である。
【０１６４】
なお、（算出された距離＜距離Ｂ）の条件が満たされたとき、描画データ生成部１９は表示制御部１５を介して図２０のポリゴン３８４をディスプレイ３８に表示させて、「干渉」の可能性を報知してもよい。
【０１６５】
また、周期生成部１８は、ロボット３００とステージ４００の３次元仮想空間における相対的な位置関係の条件は、例えば、「ピック＆プレース動作」における、「干渉」が生じやすいピックまたはプレースの前後の動作における３次元仮想空間における相対的な位置関係の条件を含んでもよい。例えば、図２０（Ｂ）ではロボット３００の軌跡２１１における部分２１３は、この「ピック＆プレース動作」の部分の一例であり、この部分２１３において低速エミュレーションが実施される。
【０１６６】
また、低速エミュレーションを実施する部分はユーザが指定してもよい。図２０（Ｃ）のディスプレイ３８の画面は、エミュレーションによるロボット３００およびステージ４００の動きの描画と、ダイアログボックスとを含む。ダイアログボックスは、図１６と同様のアイコン３８Ａ、３８Ｂ、３８Ｃおよび３８Ｄを含む。
【０１６７】
ユーザはアイコン３８Ｄのプルダウンメニューを操作して１／Ｎ倍演算指令の「１／Ｎ」の値を指定する。図２０（Ｃ）では、例えば１／Ｎ＝０．５と指定されている。周期生成部１８は、アイコン３８Ｄで１未満の値が設定されたとき、以降は低速エミュレーションを開始すると判定してよい。
【０１６８】
このように低速エミュレーションを、例えば、「ピック＆プレース動作」におけるピックまたはプレースの前後の動作等のように、「干渉」が発生する可能性の高い部分に指定して実施することにより、ユーザは描画された動きから「干渉」の有無、または「干渉」の程度、または干渉の前後の動きを容易に把握することができる。
【０１６９】
＜Ｋ．高速エミュレーションと低速エミュレーションの組合せ＞
本実施の形態では、エミュレーションを、高速エミュレーションと低速エミュレーションの組合せにより実施することが可能である。具体的には、プログラム実行部３１は、高速エミュレーションと低速エミュレーションを切替えながら実施することが可能である。
【０１７０】
図２１は、本実施の形態に係る高速エミュレーションと低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。当該部分の指定の方法は、例えば、ロボット３００およびステージ４００の３次元仮想空間における相対的な位置関係が予め定められた条件を満たすことに基づく指定方法を含む。例えば、座標Ｐ（ｘ，ｙ，ｚ）と座標Ｑ（ｘ，ｙ，０）とから算出されるロボット３００とステージ４００の間の３次元仮想空間における距離に基づく指定の方法を用いることができる。
【０１７１】
図２１（Ａ）のディスプレイ３８の画面では、ユーザはエミュレーションの対象となるロボット３００とステージ４００を指定するとともに、ダイアログボックスにおいて、高速エミュレーションの実施条件（距離＞距離Ａ１）と、低速エミュレーションの実施条件（距離＜距離Ｂ１）とにおける距離Ａ１と距離Ｂ１の値を指定する。
【０１７２】
エミュレーションを実施中に、周期生成部１８は座標Ｐ（ｘ，ｙ，ｚ）と座標Ｑ（ｘ，ｙ，０）から距離を算出し、（算出された距離＞距離Ａ１）の条件が満たされると判定するときは、図２１（Ｂ）のように高速エミュレーションのためのＮ倍演算指令を出力し、算出された距離が（距離Ｂ１≦算出された距離≦距離Ａ１）の条件が満たされると判定するときは、図２１（Ｃ）のように等倍演算指令を出力し、（算出された距離＜距離Ｂ１）の条件が満たされると判定するときは、図２１（Ｄ）または図２１（Ｅ）のように、低速エミュレーションのための１／Ｎ倍演算指令を出力する。
【０１７３】
図２１（Ｄ）は、例えば低速エミュレーションを実施中に「干渉」が検出されたケースを示す。ユーザは、低速エミュレーションの実施中であれば、「干渉」が検出された前後のロボット３００またはステージ４００の動き（例えば、図２１（Ｅ）の動き）を、ゆっくりとした描画により細かに把握することができる。なお、図２１（Ｄ）のように「干渉」が検出されたときは、プログラム実行部３１はＰＬＣエミュレータ２６０およびロボットエミュレータ２７０の実行を停止するとしてもよい。または、「干渉」が検出されたときは、ユーザは、エミュレーションの停止指令を入力し、この停止指令がプログラム実行部３１に与えられるとしてもよい。
【０１７４】
＜Ｌ．エミュレーションのための詳細設定＞
図２２は、本実施の形態に係るエミュレーションの動作モードを指定するためＵＩ（User Interface）画面の一例を示す図である。入力受付部１１は、図２２のディスプレイ３８のＵＩ画面を介したユーザ操作を受付け、受付けた操作内容を制御部１０に出力する。制御部１０は、ユーザの操作内容に基づきエミュレーションのための動作モードを示すモード指令ＭＣを生成し、周期生成部１８に出力する。周期生成部１８は、モード指令ＭＣで設定された動作モードに従う演算指令をプログラム実行部３１に出力する。
【０１７５】
図２２（Ａ）のダイアログボックスには、上記に述べたアイコン３８Ａ〜３８Ｄに、アイコン３８Ｆが追加されている。アイコン３８Ｆは、動作モードを詳細に設定するために操作される。
【０１７６】
ユーザが、アイコン３８Ｆを操作したとき、ディスプレイ３８には、図２２（Ｂ）の画面３８Ｇが表示される。画面３８Ｇは、動作モードの詳細な設定のためのユーザ操作を受付けるための画面の一例である。画面３８Ｇは、例えば、高速エミュレーションの動作モードを設定するための領域Ｇ１、および低速エミュレーションの動作モードを設定するための領域Ｇ２、および領域Ｇ３を含む。領域Ｇ３においては、例えば、高速エミュレーションと低速エミュレーションを組合せて実施する場合に、エミュレーションを切替えるための動作モードを設定することができる。
【０１７７】
領域Ｇ１では、設定可能な動作モードは、例えば高速エミュレーションを等速区間において実施するか否かの設定を含むが、設定可能なモードはこれに限定されない。
【０１７８】
領域Ｇ２では、設定可能な動作モードは、例えば上記に述べた（算出された距離＜距離Ｂ）の条件が満たされたとき低速エミュレートされるべきオブジェクト（例えば、ロボット３００とステージ４００）の組の設定ＰＲ１、および距離Ｂの設定ＰＲ２を含む。また、「ピック＆プレース動作」に関する設定ＰＲ３を含み得る。設定ＰＲ３は、ピックまたはプレースの前後の動作時に低速エミュレーションが実施されるべき部分に対応した移動量を示す。例えば、設定ＰＲ３として、例えば、ロボット３００の軌跡２１１におけるピックまたはプレースを含んだ前後の部分を、軌跡上の移動距離とすることが可能である。
【０１７９】
領域Ｇ３では、設定可能な動作モードは、例えば、高速エミュレーションと低速エミュレーションが組合せて実施されるべきオブジェクト（例えば、ロボット３００とステージ４００）の組の設定ＰＲ４、上記に述べた距離Ａ１と距離Ｂ１の設定ＰＲ２１と設定ＰＲ２２を含む。また、設定可能な動作モードは、例えば、低速エミュレーションの速度および高速エミュレーションの速度、すなわちＮ倍演算指令および１／Ｎ倍演算指令の値「Ｎ」の設定ＰＲ４１およびＰＲ４２を含む。
【０１８０】
これにより、図２２の画面における各種設定内容は、周期生成部１８による演算指令に含まれてプログラム実行部３１に出力される。したがって、ＰＬＣエミュレータ２６０およびロボットエミュレータ２７０は、Ｎ倍演算指令に従い高速エミュレーションを実施するときは、領域Ｇ１の設定に従うエミュレーションを実施し、１／Ｎ倍演算指令に従い低速エミュレーションを実施するときは、領域Ｇ２の設定に従うエミュレーションを実施する。また、高速エミュレーションと低速エミュレーションを組合せて実施するときは、領域Ｇ３の設定に従うエミュレーションを実施する。
【０１８１】
＜Ｍ．コンピュータプログラム＞
図１には、情報処理装置１００のＣＰＵ２がプログラムを実行すること提供される構成を例示したが、これらの提供される構成の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、情報処理装置１００の主要部を、汎用的なアーキテクチャに従うハードウェアを用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【０１８２】
また、情報処理装置１００は、ＣＰＵ２のようなプロセッサを複数個備えてもよい。この場合は、図１に示す各部は、複数のプロセッサにより実行することが可能である。また、ＣＰＵ２が複数のコアを含む場合は、図１に示す各部は、ＣＰＵ２内の複数のコアにより実行することが可能である。
【０１８３】
オフラインシステム２０は、ＣＰＵ２、ＲＯＭ３、ＲＡＭ４等を含み、情報処理に応じて各構成要素の制御を行う。各構成要素のプログラムを記憶する記憶部は、例えば、ＨＤＤ５、ソリッドステートドライブ等の補助記憶装置でありプログラム実行部３１で実行されるＰＬＣエミュレータ２６０およびロボットエミュレータ２７０、仮想時刻生成プログラム２９、３Ｄ視覚化プログラム３０、シミュレーション制御プログラム２１等を記憶する。
【０１８４】
記憶媒体９２は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。情報処理装置１００のＣＰＵ２は、この記憶媒体９２から、上記に述べたプログラムを取得してもよい。
【０１８５】
＜Ｎ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
情報処理装置（１００）であって、
第１目標軌跡を移動する第１制御対象（４００）を駆動するための第１駆動機器（１４）の挙動を推定する第１エミュレータ（２６０）と、
第２目標軌跡を移動する第２制御対象（３００）を駆動するための第２駆動機器（１４）の挙動を推定する第２エミュレータ（２７０）と、
前記第１制御対象の動きおよび前記第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データ（３０１：４０１）を生成する視覚化モジュール（３０）と、を備え、
前記第１エミュレータは、前記情報処理装置からの演算指令（２８０）に従い、前記第１駆動機器を制御周期毎に制御する第１指令値（Ｖ１）を演算し、
前記第２エミュレータは、前記演算指令に従い、前記第２駆動機器を前記制御周期毎に制御する第２指令値（Ｖ２）を演算し、
前記視覚化モジュールは、前記第１指令値および前記第２指令値を用いて前記描画データを生成し、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理装置。
［構成２］
前記演算指令は、
前記制御周期ごとの移動量が、予め定められた単位移動量と等しくとなるような指令値の算出を指示する等倍演算指令を含む、構成１に記載の情報処理装置。
［構成３］
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量のＮ倍（ただし、Ｎ＞１）となるような指令値の算出を指示するＮ倍演算指令を含む、構成２に記載の情報処理装置。
［構成４］
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量の１／Ｎ倍（ただし、Ｎ＞１）となるような指令値の算出を指示する１／Ｎ倍演算指令を含む、構成２または３に記載の情報処理装置。
［構成５］
前記情報処理装置は、
前記第１指令値の制御周期間の第１変化量（ＤＶ１）および前記第２指令値の制御周期間の第２変化量（ＤＶ２）を検出し、
前記第１目標軌跡および前記第２目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、前記第１変化量および前記第２変化量の両方が閾値以下である区間（４１０；４１１）において、前記Ｎ倍演算指令を出力する、構成３に記載の情報処理装置。
［構成６］
前記描画データは、前記第１制御対象および前記第２制御対象の前記３次元仮想空間における位置を示すデータ（２５１；２５２）を含み、
前記情報処理装置は、
前記第１制御対象および前記第２制御対象の前記３次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、前記移動量可変指令を出力する、構成１から５のいずれかに記載の情報処理装置。
［構成７］
前記情報処理装置は、
当該情報処理装置に対するユーザの入力を受付ける受付部（１１）を備え、
前記受付部により受付けた入力に従い、前記移動量可変指令を出力する、構成１から６のいずれかに記載の情報処理装置。
［構成８］
前記情報処理装置は、
前記第１指令値の制御周期間の第１変化量（ＤＶ１）および前記第２指令値の制御周期間の第２変化量（ＤＶ２）を検出し、
前記第１変化量または前記第２変化量が変化量閾値を超えるとき、警告（３８２）を出力する、構成１から７のいずれかに記載の情報処理装置。
［構成９］
前記描画データは、前記第１制御対象および前記第２制御対象の前記３次元仮想空間における位置を示すデータ（２５１；２５２）を含み、
前記情報処理装置は、
前記第１制御対象の前記３次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または前記第２制御対象の前記３次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離位置を超えるとき、警告（３８２）を出力する、構成１から８のいずれかに記載の情報処理装置。
［構成１０］
可変の仮想時刻を出力するタイマー（１８）をさらに、備え、
前記制御周期は、前記仮想時刻を尺度とする周期を示す、構成１から９のいずれかに記載の情報処理装置。
［構成１１］
情報処理装置が実施する処理方法であって、
第１目標軌跡を移動する第１制御対象（４００）を駆動するための第１駆動機器（１４）の挙動を推定するステップ（４０；４１；４２；４３）と、
第２目標軌跡を移動する第２制御対象を駆動するための第２駆動機器の挙動を推定するステップ（４０；４１；４２；４３）と、
前記第１制御対象の動きおよび前記第２制御対象の動きを、同じ３次元仮想空間に視覚化して描画する描画データを生成するステップ（５０；５１；５２；５３）と、を備え、
前記第１駆動機器の挙動を推定するステップでは、前記情報処理装置からの演算指令に従い、前記第１駆動機器を制御周期毎に制御する第１指令値を演算し（Ｓ１；Ｓ１３；Ｓ１３ａ）、
前記第２駆動機器の挙動を推定するステップでは、前記演算指令に従い、前記第２駆動機器を前記制御周期毎に制御する第２指令値を演算し（Ｓ１；Ｓ１３；Ｓ１３ａ）、
前記描画データを生成するステップでは、前記第１指令値および前記第２指令値を用いて前記描画データを生成し（Ｓ４）、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理方法。
［構成１２］
構成１１に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【０１８６】
＜Ｏ．利点＞
以上のように、本実施の形態によれば、エミュレーションにおいては、演算指令として、等倍演算指令、Ｎ倍演算指令および１／Ｎ倍演算指令のいずれかによる指令値Ｖ１，Ｖ２の算出が可能である。Ｎ倍演算指令の場合は、等倍演算指令によるＮ回の演算で算出された移動量となるような指令値Ｖ１，Ｖ２を、１回の演算で算出する、すなわち（Ｎ−１）回の演算を省略できる。したがって、演算回数が削減されることで、エミュレーションを実施する場合の情報処理装置１００にかかる処理の負荷を軽減できる。また、ディスプレイ３８においてロボット３００とステージ４００の動きを高速に描画することができて、いわゆる動きの早送りが可能となる。
【０１８７】
１／Ｎ倍演算指令の場合は、例えば、等倍演算指令とsleep指令との組合せを含み得る。これにより、Ｎ個の制御周期のうち１の制御周期だけ演算を実施して、他の制御周期は、sleep指令により演算を停止することができるので、指令値Ｖ１，Ｖ２の算出に係る情報処理装置１００にかかる処理の負荷を軽減することができる。また、描画周期においては、等倍演算指令の場合に比較して、１／Ｎ倍の遅い速度でロボット３００とステージ４００の動きを描画することができて、所謂スロー再生のように、ユーザは、ロボット３００またはステージ４００の詳細な動きを確認することができる。
【０１８８】
今回開示された本実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１８９】
１  オンライン制御システム、１１  入力受付部、１２Ａ  共有メモリ、１３，１３Ｅ，１３Ｆ  サーボドライバ、１４，１４Ａ，１４Ｂ，１４Ｃ，１４Ｄ，１４Ｅ，１４Ｆ  サーボモータ、１５  表示制御部、１８  周期生成部、１９  描画データ生成部、２０  オフラインシステム、２１  シミュレーション制御プログラム、２９  仮想時刻生成プログラム、３０  視覚化プログラム、３１  プログラム実行部、３２  プログラムエディタ、３３  ロボットプログラムエディタ、３４  プログラム編集部、３６  演算指令部、３７  キーボード、３８  ディスプレイ、３８Ａ，３８Ｄ，３８Ｆ  アイコン、３８Ｅ  時間、３８Ｇ  画面、３９  ディスプレイドライバ、４０，４１，４２，４３  指令値演算処理、５０，５１，５２，５３  描画更新処理、９２  記憶媒体、１００  情報処理装置、１４４  入力データ、１４５  出力データ、２００  コントローラ、２１０，２１１，２１２，３１１  軌跡、２１３，２３１  部分、２５１，２５２  軌跡データ、２５３，２５４  画像データ、２６０  ＰＬＣエミュレータ、２７０  ロボットエミュレータ、２７１  軌跡演算命令、２７２  機構演算命令、２８０  演算指令、３００  ロボット、３０１，４０１  描画データ、３０３  軌跡計算プログラム、３１０  ロボットコントローラ、３７１  ＰＬＣプログラム、３７１Ａ，３８１Ａ  命令群、３８１  ロボットプログラム、３８２  警告メッセージ、３８３  メッセージ、３８４  ポリゴン、４００  ステージ、４１０，４１１  等速区間、Ｖ１，Ｖ２  指令値。
【図１】
2019061523.tif 000003
【図２】
2019061523.tif 000004
【図３】
2019061523.tif 000005
【図４】
2019061523.tif 000006
【図５】
2019061523.tif 000007
【図６】
2019061523.tif 000008
【図７】
2019061523.tif 000009
【図８】
2019061523.tif 000010
【図９】
2019061523.tif 000011
【図１０】
2019061523.tif 000012
【図１１】
2019061523.tif 000013
【図１２】
2019061523.tif 000014
【図１３】
2019061523.tif 000015
【図１４】
2019061523.tif 000016
【図１５】
2019061523.tif 000017
【図１６】
2019061523.tif 000018
【図１７】
2019061523.tif 000019
【図１８】
2019061523.tif 000020
【図１９】
2019061523.tif 000021
【図２０】
2019061523.tif 000022
【図２１】
2019061523.tif 000023
【図２２】
2019061523.tif 000024