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

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

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

特許7087316情報処理装置、情報処理方法およびプログラム
<>
  • 特許-情報処理装置、情報処理方法およびプログラム 図1
  • 特許-情報処理装置、情報処理方法およびプログラム 図2
  • 特許-情報処理装置、情報処理方法およびプログラム 図3
  • 特許-情報処理装置、情報処理方法およびプログラム 図4
  • 特許-情報処理装置、情報処理方法およびプログラム 図5
  • 特許-情報処理装置、情報処理方法およびプログラム 図6
  • 特許-情報処理装置、情報処理方法およびプログラム 図7
  • 特許-情報処理装置、情報処理方法およびプログラム 図8
  • 特許-情報処理装置、情報処理方法およびプログラム 図9
  • 特許-情報処理装置、情報処理方法およびプログラム 図10
  • 特許-情報処理装置、情報処理方法およびプログラム 図11
  • 特許-情報処理装置、情報処理方法およびプログラム 図12
  • 特許-情報処理装置、情報処理方法およびプログラム 図13
  • 特許-情報処理装置、情報処理方法およびプログラム 図14
  • 特許-情報処理装置、情報処理方法およびプログラム 図15
  • 特許-情報処理装置、情報処理方法およびプログラム 図16
  • 特許-情報処理装置、情報処理方法およびプログラム 図17
  • 特許-情報処理装置、情報処理方法およびプログラム 図18
  • 特許-情報処理装置、情報処理方法およびプログラム 図19
  • 特許-情報処理装置、情報処理方法およびプログラム 図20
  • 特許-情報処理装置、情報処理方法およびプログラム 図21
  • 特許-情報処理装置、情報処理方法およびプログラム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-13
(45)【発行日】2022-06-21
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
   G05B 19/4069 20060101AFI20220614BHJP
【FI】
G05B19/4069
【請求項の数】 10
(21)【出願番号】P 2017186026
(22)【出願日】2017-09-27
(65)【公開番号】P2019061523
(43)【公開日】2019-04-18
【審査請求日】2020-03-04
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】島川 はる奈
(72)【発明者】
【氏名】大谷 拓
【審査官】神山 貴行
(56)【参考文献】
【文献】特開2015-079491(JP,A)
【文献】特開2010-140359(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/18-19/416
G05B 19/42-19/46
(57)【特許請求の範囲】
【請求項1】
第1指令値に従って、第1目標軌跡を移動する第1制御対象を駆動する第1駆動機器の挙動を推定する第1エミュレータと、
第2指令値に従って、第2目標軌跡を移動する第2制御対象を駆動する第2駆動機器の挙動を推定する第2エミュレータと、
前記第1エミュレータおよび前記第2エミュレータ間で共有される第1データおよび第2データを格納する記憶装置と、
前記第1制御対象の動きおよび前記第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データを生成する視覚化モジュールと、を備え、
前記第1エミュレータは、情報処理装置からの演算指令に従い、制御周期毎に、(i)第1制御プログラムを実行することにより、前記記憶装置の前記第1データを入力として前記第1駆動機器を制御する前記第1指令値を演算するとともに、(ii)当該第1指令値で前記記憶装置の前記第2データを更新し、
前記第2エミュレータは、前記演算指令に従い、前記制御周期毎に、(i)第2制御プログラムを実行することにより、前記記憶装置の前記第2データを入力として前記第2駆動機器を制御する第2指令値を演算するとともに、(ii)当該第2指令値で前記記憶装置の前記第1データを更新し、
前記視覚化モジュールは、前記第1指令値および前記第2指令値を用いて前記描画データを生成し、
前記演算指令は、前記制御周期ごとの移動量が、予め定められた単位移動量と等しくなるような指令値の算出を指示する等倍演算指令と移動量可変指令を含み
前記移動量可変指令は、前記制御周期ごとの移動量が、前記単位移動量のN倍(ただし、N>1)となるような指令値の算出を指示するN倍演算指令を含む、情報処理装置。
【請求項2】
前記移動量可変指令は、さらに、
前記制御周期ごとの移動量が、前記単位移動量の1/N倍(ただし、N>1)となるような指令値の算出を指示する1/N倍演算指令を含む、請求項に記載の情報処理装置。
【請求項3】
前記情報処理装置は、
前記第1指令値の制御周期間の第1変化量および前記第2指令値の制御周期間の第2変化量を検出し、
前記第1目標軌跡および前記第2目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、前記第1変化量および前記第2変化量の両方が閾値以下である区間において、前記N倍演算指令を出力する、請求項1または2に記載の情報処理装置。
【請求項4】
前記描画データは、前記第1制御対象および前記第2制御対象の前記3次元仮想空間における位置を示すデータを含み、
前記情報処理装置は、
前記第1制御対象および前記第2制御対象の前記3次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、前記移動量可変指令を出力する、請求項1からのいずれか1項に記載の情報処理装置。
【請求項5】
前記情報処理装置は、
当該情報処理装置に対するユーザの入力を受付ける受付部を備え、
前記受付部により受付けた入力に従い、前記移動量可変指令を出力する、請求項1からのいずれか1項に記載の情報処理装置。
【請求項6】
前記情報処理装置は、
前記第1指令値の制御周期間の第1変化量および前記第2指令値の制御周期間の第2変化量を検出し、
前記第1変化量または前記第2変化量が変化量閾値を超えるとき、警告を出力する、請求項1からのいずれか1項に記載の情報処理装置。
【請求項7】
前記描画データは、前記第1制御対象および前記第2制御対象の前記3次元仮想空間における位置を示すデータを含み、
前記情報処理装置は、
前記第1制御対象の前記3次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または前記第2制御対象の前記3次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離閾値を超えるとき、警告を出力する、請求項1からのいずれか1項に記載の情報処理装置。
【請求項8】
可変の仮想時刻を出力するタイマーをさらに、備え、
前記制御周期は、前記仮想時刻を尺度とする周期を示す、請求項1からのいずれか1項に記載の情報処理装置。
【請求項9】
情報処理装置が実施する処理方法であって、
第1指令値に従って、第1目標軌跡を移動する第1制御対象を駆動するための第1駆動機器の挙動を推定するステップと、
第2指令値に従って、第2目標軌跡を移動する第2制御対象を駆動するための第2駆動機器の挙動を推定するステップと、
前記第1制御対象の動きおよび前記第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データを生成するステップと、を備え、
前記情報処理装置は、第1データおよび第2データを格納する記憶装置を有し、
前記第1駆動機器の挙動を推定するステップでは、前記情報処理装置からの演算指令に従い、制御周期毎に、(i)第1制御プログラムを実行することにより、前記記憶装置の前記第1データを入力として前記第1駆動機器を制御する前記第1指令値を演算するとともに、(ii)当該第1指令値で前記記憶装置の前記第2データを更新し、
前記第2駆動機器の挙動を推定するステップでは、前記演算指令に従い、前記制御周期毎に、(i)第2制御プログラムを実行することにより、前記記憶装置の前記第2データを入力として前記第2駆動機器を制御する前記第2指令値を演算するとともに、(ii)当該第2指令値で前記記憶装置の前記第1データを更新し、
前記描画データを生成するステップでは、前記第1指令値および前記第2指令値を用いて前記描画データを生成し、
前記演算指令は、前記制御周期ごとの移動量が、予め定められた単位移動量と等しくなるような指令値の算出を指示する等倍演算指令と移動量可変指令を含み
前記移動量可変指令は、前記制御周期ごとの移動量が、前記単位移動量のN倍(ただし、N>1)となるような指令値の算出を指示するN倍演算指令を含む、情報処理方法。
【請求項10】
請求項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、情報処理装置、情報処理方法およびプログラムに関し、特に、制御対象を駆動する駆動機器の挙動を推定する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
FA(Factory Automation)分野では、様々な自動制御技術が広く利用されている。このような自動制御技術が適用されるシステムの設計または検討の段階においては、システムの性能を予め評価する必要がある。このようなニーズに関して、評価対象の動きを模擬して得られたデータに基づき当該評価を実施する方法が提案されている。例えば、国際公開第2016/181455号(特許文献1)は、対象の動作のシミュレート結果をファイルに格納し、ファイルから対象の状態をコマ送りして読出し、表示する構成を開示する。
【0003】
また、特開2017-97426号公報(特許文献2)では、システムの挙動を再現するシミュレーション装置を開示する。特許文献2は、段落0073において、シミュレーション装置は、順次格納されたトレースデータを用いて、システムの挙動を再現するとともに、ユーザ操作に応じて、再現されるシステムの挙動の時間間隔および更新間隔などを適宜変更する構成を開示する。
【先行技術文献】
【特許文献】
【0004】
【文献】国際公開第2016/181455号
【文献】特開2017-97426号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
生産ラインに備えられるFAに関連した実機の制御プログラムを設計する場合、ユーザは、制御プログラムの実行により制御される機械の一連の動きを検証し、検証結果に基づき制御プログラムを修正する。このような検証は、実機を使うことで容易に確認することができるが、実機を使用できない場合、ユーザは実機の動きを演算により推定するシミュレーションプログラムを実行する。シミュレーションプログラムを実行するとき、ユーザは、一連の動きのうち所定のポイントの動きを確認したい場合、所定ポイントに対応した演算結果が出力されるまで待たなければならず、検証に時間を要していた。したがって、検証に要する時間を可変に調整したいとのニーズがあった。
【0006】
この点に関し、特許文献1と2は、一旦、シミュレーション結果またはトレースデータを全て格納しておき、表示時にはその格納内容をコマ送り、または表示間隔等を制御して画面に表示する。したがって、特許文献1と特許文献2の方法では、ユーザは、シミュレーション結果またはトレースデータの全ての算出が完了するまで待つ必要があり、上記のニーズに応えることができない。
【0007】
本発明は、このようなニーズに向けられるものであり、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる環境を提供することを一つの目的としている。
【課題を解決するための手段】
【0008】
本開示の一例に係る情報処理装置は、第1目標軌跡を移動する第1制御対象を駆動するための第1駆動機器の挙動を推定する第1エミュレータと、第2目標軌跡を移動する第2制御対象を駆動するための第2駆動機器の挙動を推定する第2エミュレータと、第1制御対象の動きおよび第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データを生成する視覚化モジュールと、を備える。第1エミュレータは、情報処理装置からの演算指令に従い、第1駆動機器を制御周期毎に制御する第1指令値を演算し、第2エミュレータは、演算指令に従い、第2駆動機器を制御周期毎に制御する第2指令値を演算し、視覚化モジュールは、第1指令値および第2指令値を用いて描画データを生成し、演算指令は、移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む。
【0009】
上述の開示によれば、移動量可変指令に従い、第1および第2エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出する。したがって、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【0010】
上述の開示において、演算指令は、制御周期ごとの移動量が、予め定められた単位移動量と等しくとなるような指令値の算出を指示する等倍演算指令を含む。
【0011】
上述の開示によれば、制御周期ごとの移動量が、単位移動量で固定するような指令値の算出が可能である。
【0012】
上述の開示において、移動量可変指令は、制御周期ごとの移動量が、単位移動量のN倍(ただし、N>1)となるような指令値の算出を指示するN倍演算指令を含む。
【0013】
上述の開示によれば、制御周期ごとの移動量が、単位移動量のN倍にするような指令値の算出が可能である。これにより、制御対象の一連の動きを推定する場合に、制御周期毎の移動量を大きくすることができる。したがって、単位移動量の固定にする場合に比較して、一連の動きの推定にかかる時間を短縮することができるとともに、演算回数を低減できて情報処理装置の演算にかかる負荷を軽減できる。
【0014】
上述の開示において、移動量可変指令は、制御周期ごとの移動量が、単位移動量の1/N倍(ただし、N>1)となるような指令値の算出を指示する1/N倍演算指令を含む。
【0015】
上述の開示によれば、制御周期ごとの移動量が、単位移動量の1/N倍にするような指令値の算出が可能である。これにより、制御対象の一連の動きを推定する場合に、制御周期毎の移動量を少なくすることができて、単位移動量の固定にする場合に比較して、第1制御対象の動きおよび第2制御対象の動きを低速に描画することが可能となる。
【0016】
上述の開示において、情報処理装置は、第1指令値の制御周期間の第1変化量および第2指令値の制御周期間の第2変化量を検出し、第1目標軌跡および第2目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、第1変化量および第2変化量の両方が閾値以下である区間において、N倍演算指令を出力する。
【0017】
上述の開示によれば、N倍演算指令を、第1制御対象および第2制御対象を移動させるための第1指令値および第2指令値それぞれについて、制御周期間の変化量が両方とも閾値以下である、すなわち両者とも等速に移動すると推定される区間では、N倍演算指令が出力される。これにより、等速で移動する動きの変化がない期間では、すなわち動きの確認に支障がない期間において、描画における制御周期毎の移動量が大きくすることができる。
【0018】
上述の開示において、描画データは、第1制御対象および第2制御対象の3次元仮想空間における位置を示すデータを含み、情報処理装置は、第1制御対象および第2制御対象の3次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、移動量可変指令を出力する。
【0019】
上述の開示によれば、第1制御対象および第2制御対象の3次元仮想空間における相対的な位置関係に従い、移動量可変指令を出力することが可能となる。
【0020】
上述の開示において、情報処理装置は、当該情報処理装置に対するユーザの入力を受付ける受付部を備え、受付部により受付けた入力に従い、移動量可変指令を出力する。
【0021】
上述の開示によれば、ユーザは情報処理装置に対する入力により、情報処理装置に移動量可変指令を出力させることができる。
【0022】
上述の開示において、情報処理装置は、第1指令値の制御周期間の第1変化量および第2指令値の制御周期間の第2変化量を検出し、第1変化量または第2変化量が変化量閾値を超えるとき、警告を出力する。
【0023】
上述の開示によれば、第1指令値または第2指令値の制御周期間での変化量が、変化量閾値を超えるとき、警告が出力される。これにより、移動量可変指令により算出される指令値が、制御周期毎の移動量の変化を大きくしすぎる可能性があるときは、警告が出力される。
【0024】
上述の開示において、描画データは、第1制御対象および第2制御対象の3次元仮想空間における位置を示すデータを含み、情報処理装置は、第1制御対象の3次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または第2制御対象の3次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離位置を超えるとき、警告を出力する。
【0025】
上述の開示によれば、移動量可変指令により算出される指令値が、制御周期毎の移動距離の変化を大きくしすぎる可能性があるときは、警告が出力される。
【0026】
上述の開示において、情報処理装置は、可変の仮想時刻を出力するタイマーをさらに、備え、制御周期は、仮想時刻を尺度とする周期を示す。
【0027】
上述の開示によれば、第1エミュレータおよび第2エミュレータの演算の周期に対応して制御周期を、可変にすることができる。
【0028】
本開示の一例に係る情報処理装置が実施する処理方法は、第1目標軌跡を移動する第1制御対象を駆動するための第1駆動機器の挙動を推定するステップと、第2目標軌跡を移動する第2制御対象を駆動するための第2駆動機器の挙動を推定するステップと、第1制御対象の動きおよび第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データを生成するステップと、を備え、第1駆動機器の挙動を推定するステップでは、情報処理装置からの演算指令に従い、第1駆動機器を制御周期毎に制御する第1指令値を演算し、第2駆動機器の挙動を推定するステップでは、演算指令に従い、第2駆動機器を制御周期毎に制御する第2指令値を演算し、描画データを生成するステップでは、第1指令値および第2指令値を用いて描画データを生成し、演算指令は、移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む。
【0029】
上述の開示によれば、移動量可変指令に従い、第1および第2エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出する。したがって、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【0030】
本開示の一例に係るプログラムは、上述した情報処理装置が実施する処理方法を、コンピュータに実行させる。
【0031】
上述の開示によれば、移動量可変指令に従い、第1および第2エミュレータは、制御周期ごとの制御対象の移動量が可変となるような指令値を算出するプログラムをコンピュータに実行させることができる。プログラムが実行されると、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる。
【発明の効果】
【0032】
この開示によれば、制御対象の一連の動きを推定する場合に、一連の動きの推定にかかる時間を変更することができる環境を提供できる。
【図面の簡単な説明】
【0033】
図1】本実施の形態に係る情報処理装置100の適用場面の一例を示す模式図である。
図2】本実施の形態に係る生産ラインに備えられるオンライン制御システム1の構成例を示す模式図である。
図3】ロボット300の各軸の目標位置を説明する図である。
図4】本実施の形態に係るロボット300の各アームに相当する軸の3次元仮想空間における位置を算出する過程を模式的に示す図である。
図5】本実施の形態に係る情報処理装置100の構成を概略的に示す図である。
図6図1のプログラム実行部31の構成例を示す図である。
図7】本実施の形態に係る仮想時刻によるエミュレータの同期を説明する図である。
図8】本実施の形態に係る描画データによる表示画面の一例を示す図である。
図9】本実施の形態に係る描画データによる表示画面の他の例を示す図である。
図10】本実施の形態に係る情報処理装置100が実施するオフラインシステム20の処理を説明する図である。
図11】本実施の形態に係る情報処理装置100が実施するオフラインシステム20の処理を説明する図である。
図12】本実施の形態に係る高速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。
図13】本実施の形態に係る高速エミュレーションのための指令値演算処理41の一例を説明する図である。
図14】本実施の形態に係る高速エミュレーションにおける警告メッセージの表示の一例を示す図である。
図15】本実施の形態に係る間引く部分を指定する方法の一例を説明する図である。
図16】本実施の形態に係る間引く部分の他の指定例を説明する図である。
図17】本実施の形態に係るエミュレーションのための指令値演算処理42を説明する図である。
図18】本実施の形態に係る低速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。
図19】本実施の形態に係る低速エミュレーションのための指令値演算処理43を説明する図である。
図20】本実施の形態に係る低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。
図21】本実施の形態に係る高速エミュレーションと低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。
図22】本実施の形態に係るエミュレーションの動作モードを指定するためUI(User Interface)画面の一例を示す図である。
【発明を実施するための形態】
【0034】
以下、図面を参照しつつ、本発明に従う各本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各本実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【0035】
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る情報処理装置100の適用場面の一例を示す模式図である。本実施の形態に係る情報処理装置100は、任意の第1制御対象および第2制御対象を駆動する各駆動機器(例えば、サーボモータ等のアクチュエータ)の挙動(例えば、モータの回転量(角度、方向を含む)等)を推定し、推定された挙動に従い制御される各制御対象の動きを描画するための描画データ301,401を生成する。第1制御対象は、第1目標軌跡を移動するよう駆動され、また、第2制御対象は、第2目標軌跡を移動するよう駆動される。第1制御対象は、例えばステージに相当し、第2制御対象は例えばロボットに相当するが、制御対象は、これらに限定されず制御対象となり得る製造装置や設備のうちから適宜選択されてよい。
【0036】
図1に示すように、情報処理装置100は、第1制御対象を駆動するための第1駆動機器の挙動を推定する第1エミュレータ(例えば、PLC(プログラマブルコントローラ)エミュレータ260)と、第2制御対象を駆動するための第2駆動機器の挙動を推定する第2エミュレータ(例えば、ロボットエミュレータ270)と、第1制御対象の動きおよび第2制御対象の動きを、同じ仮想空間に視覚化して描画するための描画データ301,401を生成する視覚化モジュール(例えば、3D視覚化プログラム30)と、を備える。
【0037】
第1エミュレータは、情報処理装置100からの演算指令280に従い、第1駆動機器を制御周期毎に制御する第1指令値V1を演算する。また、第2エミュレータは、この演算指令280に従い、第2駆動機器を上記の制御周期毎に制御する第2指令値V1を演算する。この演算指令280は、上記に述べた第1目標軌跡と第2目標軌跡の移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する指令を含む。視覚化モジュールは、このようにして算出される第1指令値および第2指令値を用いて上記に述べた描画データ301,401を生成する。
【0038】
第1エミュレータは、第1駆動機器を実機として制御するプログラム、例えばPLCプログラム371の複数の命令を含むエミュレーションプログラムに相当する。第2エミュレータは、第2駆動機器を実機として制御するプログラム、例えばロボットプログラム381の複数の命令を含むエミュレーションプログラムに相当する。
【0039】
このように本実施の形態では、演算指令280を用いることにより、制御周期ごとの移動量を固定ではなく可変にすることが可能なる。そのため、第1目標軌跡と第2目標軌跡の移動における第1駆動機器および第2駆動機器の挙動を推定する処理に要する時間を調整する、すなわち短くしてエミュレーションを高速に実施し、または長くしてエミュレーションを低速に実施することが可能となる。
【0040】
例えば、所要時間を短くするような演算指令280の場合は、第1または第2目標軌跡の上の所定ポイントに対応した指令値の演算結果を取得するまでの所要時間を短くすることができて、ユーザは挙動の検証に要する時間を短縮することができる。また、所要時間を長くするような演算指令280の場合は、所定ポイントで算出される指令値を用いた描画データによる描画を低速にする(描画周期あたりの移動量を少なくする)ことができて、ユーザは、描画内容から所定ポイントにおける挙動を詳細に確認することができる。
【0041】
本明細書において、「指令値」は、例えばサーボモータ等のアクチュエータを含む駆動機器に対して、例えば位置、速度、加速度、ジャーク(加加速度)、角度、角速度、角加速度、角加加速度等の数値を指令として表したものである。
【0042】
以下、本発明のより具体的な応用例として、本実施の形態に係る情報処理装置100のより詳細な構成および処理について説明する。
【0043】
<B.制御システムの全体構成例>
本実施の形態に従う情報処理装置100は、生産ラインに備えられる制御対象である複数の機械を駆動するための駆動機器の挙動を推定する。このような制御対象としては、可動のステージ400と、ステージ400上のワークWを掴み移動させるロボット300を例示するが、制御対象の機械はこれらに限定されない。これら制御対象の機械が実機として備えられた環境の一例を説明する。
【0044】
図2は、本実施の形態に係る生産ラインに備えられるオンライン制御システム1の構成例を示す模式図である。図2を参照して、オンライン制御システム1(以下、単に制御システム1という)は、情報処理装置100、コントローラの一例であるPLC200、ロボット300を制御するロボットコントローラ310およびサーボドライバ13E,13Fを含む。情報処理装置100は、たとえば、PC(Personal Computer)、タブレット端末などの端末装置を含む。サーボドライバ13E,13F(以下、「サーボドライバ13」とも総称する。)は、対応するサーボモータ14E,14Fを駆動する。
【0045】
PLC200には、フィールドネットワークNW1を介して情報処理装置100が接続されている。フィールドネットワークNW1には、たとえば、EtherNET(登録商標)が採用される。但し、フィールドネットワークNW1は、EtherNETに限定されず、任意の通信手段が採用され得る。たとえば、コントローラ200および情報処理装置100は、信号線で直接接続されてもよい。情報処理装置100は、ロボット300およびステージ400の機械を制御するための制御プログラムを設計する環境を提供する。情報処理装置100上で設計された制御プログラムは、フィールドネットワークNW1を介してPLC200に送られる。
【0046】
PLC200は、設計された制御プログラムを実行し、実行の結果に従ってロボットコントローラ310またはサーボドライバ13に対してそれぞれ目標値を与えることで、ロボット300およびステージ400を含む対象を制御する。
【0047】
PLC200には、ロボットコントローラ310およびサーボドライバ13が接続されている。PLC200、ロボットコントローラ310およびサーボドライバ13は、フィールドネットワークNW2を介してデイジーチェーンで接続されている。フィールドネットワークNW2には、たとえば、EtherCAT(登録商標)が採用される。但し、フィールドネットワークNW2は、EtherCATに限定されず、任意の通信手段が採用され得る。また、接続態様は、上記のデイジーチェーンに限定されず、ツリー接続またはスター接続のような他の接続態様であってもよい。
【0048】
ロボット300とステージ400は、相互に連携しながらワークWを移動させる。なお、ここでは説明を簡単にするために、ワークWの移動を説明するが、移動に限定されない。例えば、ステージ400上におけるロボット300によるワークWの加工であってもよい。
【0049】
図2では、ロボット300のドライブ装置の一例として、ロボット300に設けられるサーボモータ14A~14D(以下、「サーボモータ14」とも総称する。)と、サーボモータ14を駆動するロボットコントローラ310を例示する。同様に、ステージ400のドライブ装置の一例として、ステージ400に設けられるサーボモータ14E,14F(以下、「サーボモータ14」とも総称する。)を駆動するサーボドライバ13を例示する。ロボット300は駆動されることにより、その挙動は、直交するX軸,Y軸およびZ軸の3次元空間内で変化する。ステージ400は駆動されることにより、その挙動はロボット300と同じ3次元空間内において規定されるが、とりわけX軸およびY軸の平面内において規定される。
【0050】
ドライブ装置としては、サーボドライバに限定されることなく、被駆動装置であるモータに応じて、対応するドライブ装置が採用される。たとえば、誘導モータまたは同期モータを駆動する場合には、ドライブ装置として、インバータドライブなどが採用されてもよい。
【0051】
ロボットコントローラ310は、ロボット300のサーボモータ14を駆動する。サーボモータ14の回転軸にはエンコーダ(図示しない)が配置されている。当該エンコーダは、サーボモータ14のフィードバック値として、サーボモータの位置(回転角度)、回転速度、累積回転数などをロボットコントローラ310へ出力する。
【0052】
同様に、サーボドライバ13は、ステージ400のサーボモータ14を駆動する。サーボモータ14の回転軸にはエンコーダ(図示しない)が配置されている。当該エンコーダは、サーボモータ14のフィードバック値として、サーボモータの位置(回転角度)、回転速度、累積回転数などをサーボドライバ13へ出力する。
【0053】
<C.ロボットとステージの制御>
制御システム1におけるロボット300とステージ400の制御について説明する。ロボット300とステージ400は、上記に述べたように、複数の駆動軸により移動可能な可動部を有する。これらの各駆動軸は、サーボモータによって駆動される。具体的には、ロボット300は、サーボモータ14(サーボモータ14A~14D)が回転することで駆動される複数のアームを有している。サーボモータ14は、それぞれ回転することで、対応する各アームを駆動する。ロボットコントローラ310がサーボモータ14の駆動を制御することで、各アームは3次元に移動する。このような各アームの移動により、ロボット300の動きが実現される。同様に、ステージ400も、サーボモータ14(サーボモータ14E,14F)が回転することでステージ400は移動する。このようなロボット300またはステージ400の移動量(移動の向き、移動距離)は、サーボモータ14の回転量(回転の向き、角度)により決まる。
【0054】
本実施の形態では、ロボット300の各アームは、仮想的な軸が対応付けられ、各軸の位置からロボット300の動きが決まる。図3は、ロボット300の各軸の目標位置を説明する図である。図3を参照して、各軸の目標位置は、ロボット300の動きが目標となる動作(以下、目標動作ともいう)を示すように、時系列に変化する。具体的には、ロボット300の各アームは、時系列に変化する図3の目標位置に従い駆動されることにより、各アームの移動の速度および軌跡は、目標に従う速度および軌跡となるように変化する。
【0055】
図3に示すような、ロボット300の目標動作を規定するための目標位置は、PLC200に予め格納されている。ロボットコントローラ310は、PLC200から目標位置を受信し、受信した目標位置に基づき各サーボモータの回転量を決定し、決定した回転量を指定する指令値を、サーボモータ14の各サーボモータに対し出力する。なお、目標位置は、ロボットコントローラ310のみに格納されてもよい。
【0056】
図4は、本実施の形態に係るロボット300の各アームに相当する軸の3次元仮想空間における位置を算出する過程を模式的に示す図である。図4を参照して、サーボモータ14Aの回転量をαA、サーボモータ14Bの回転量をαB、サーボモータ14Cの回転量をαCおよびサーボモータ14Dの回転量をαDとして示す。サーボモータ回転量(αA、αB、αC、αD)に対し、所定関数を用いて演算を施すことで、サーボモータ回転量(αA、αB、αC、αD)を図3に示すxyzの3次元仮想空間における位置に変換することができる。図4では、例えばワークWをキャッチするアームの軸の3次元仮想空間における位置である3次元座標P(x、y、z)を示すが、他の軸の対応する3次元座標も同様に算出することができる。したがって、各アームの3次元座標P(x、y、z)の時系列の変化によりロボット300の3次元仮想空間における動きを示すことができる。
【0057】
また、本実施の形態では、説明を簡単にするために、ワークWをキャッチするアームの軸の3次元座標P(x、y、z)を、後述する3次元仮想空間における「干渉」を検出するためにも用いる。なお、「干渉」の検出には、他の軸の3次元座標P(x、y、z)を用いてもよく、または2つ以上の軸の3次元座標P(x、y、z)の組合せを用いてもよい。
【0058】
ステージ400も、ロボット300と同様に、ステージ400の動きが目標動作を示すように、ステージ400の移動の速度および軌跡は目標位置を示すように時系列に変化する。ステージ400の目標位置は、PLC200に予め格納されている。
【0059】
サーボドライバ13は、PLC200からの目標位置に基づき各サーボモータの回転量を決定し、決定した回転量を指定する指令値を、サーボモータ14の各サーボモータに対し出力する。このような各サーボモータの回転量に対し、所定関数を用いて演算を施すことで、ステージ400についても、ロボット300と同じ3次元仮想空間における3次元座標Q(x、y、0)に変換することができる。このような3次元座標Q(x、y、0)の時系列の変化によりステージ400の3次元仮想空間における動きを示すことができる。
【0060】
なお、ここでは、ステージ400は平面内の動きを示すことから、3次元座標Qのz軸は値0で固定としているが、他の固定値であってもよい。
【0061】
このような目標位置に従うステージ400の移動の軌跡は、「第1目標軌跡」の一実施例である。また、目標位置に従うロボット300の移動の軌跡は、「第2目標軌跡」の一実施例である。
【0062】
<D.情報処理装置100の構成>
図5は、本実施の形態に係る情報処理装置100の構成を概略的に示す図である。図2の制御システム1において、ロボット300およびステージ400が実機としてPLC200により制御される環境をオンラインとした場合、図5の情報処理装置100は、制御システム1をオフラインでシミュレーションする。
【0063】
情報処理装置100は、CPU(Central Processing Unit)2とプログラムおよびデータを格納する格納部を備えて、プログラムに従って動作するコンピュータシステムである。格納部は、ROM(Read Only Memory)3、RAM(Random Access Memory)4およびHDD(Hard Disk Drive)5を含む。情報処理装置100は、さらに、通信インタフェース6およびI/O(Input/Output)インタフェース7を含む。また、情報処理装置100は、キーボード37およびディスプレイ38を含む。キーボード37は、ユーザからの情報処理装置100に対する指示を含む入力を受付ける。当該入力を受付けるために、情報処理装置100は、マウス等の他のデバイスを含んでもよい。情報処理装置100は、外部の記憶媒体92を脱着自在に装着し、装着された記憶媒体にプログラムおよび/またはデータを読み書きするR/W(リーダライタ)デバイス93を備える。
【0064】
通信インタフェース6は、情報処理装置100がPLC200を含む外部の機器と通信するためのインタフェースである。
【0065】
I/Oインタフェース7は、情報処理装置100への入力または情報処理装置100からの出力のインタフェースである。図5に示すように、I/Oインタフェース7は、キーボード37とディスプレイ38とに接続され、ユーザがキーボード37に対して入力した情報を受け付ける。また、情報処理装置100の処理結果を、ディスプレイ38へ出力する。ディスプレイ38は、LCD(Liquid Crystal Display)または有機EL(Electro Luminescence)を含み、情報処理装置100から出力される映像信号または画像信号に従う映像または画像を表示する。
【0066】
<E.オフラインシステム20の構成>
図1を参照して、本実施の形態に係るオフラインシステム20の構成例を、周辺部と関連づけて説明する。図6は、図1のプログラム実行部31の構成例を示す図である。オフラインシステム20は、制御システム1をシミュレーションする。このシミュレーションでは、ロボット300およびステージ400の制御プログラムに含まれた複数の命令がエミュレータにより実行されることにより、ロボット300およびステージ400を駆動するサーボモータ14の挙動が推定される。
【0067】
図1を参照して、情報処理装置100は、情報処理装置100の各部を制御する制御部10、情報処理装置100に対するユーザの入力を受付ける入力受付部11、およびオフラインシステム20を備える。オフラインシステム20にはディスプレイ38が接続される。ディスプレイ38は、表示制御データに従い表示するべきイメージデータを生成し、イメージデータに従いディスプレイ38を駆動するディスプレイドライバ39を含む。入力受付部11は、キーボード37の操作またはディスプレイ38で表示されたアイコン等の操作によるユーザ入力を受付ける。制御部10は、CPU2がシミュレーション制御プログラム21を実行することにより実現される。制御部10は、入力受付部11を介し受付けたユーザの指示に従い、オフラインシステム20を制御する。
【0068】
オフラインシステム20は、プログラムおよびデータを含んで構成されて、制御部10からの指令に従い、CPU2がプログラムを実行することにより、オフラインシステム20が実現される。また、オフラインシステム20による処理の結果を、ディスプレイ38に表示する場合は、処理結果は表示制御データに変換されてディスプレイドライバ39に出力される。ディスプレイドライバ39は、表示制御データに従うイメージデータに従いディスプレイ38を駆動する。これにより、ディスプレイ38の画面には、情報処理装置100およびオフラインシステム20の処理の結果を表す画像が表示される。
【0069】
(E-1.オフラインシステム20の構成)
オフラインシステム20の構成を説明する。オフラインシステム20の各部を実現するためのプログラムおよびデータは、例えばROM3、RAM4およびHDD5等を含む格納部に格納されている。
【0070】
図1を参照して、オフラインシステム20は、PLCエミュレータ260およびロボットエミュレータ270を実行する主体であるプログラム実行部31、および3D視覚化プログラム30を含み描画データを生成する描画データ生成部19を備える。これらは、例えばプログラムモジュールとして提供される。
【0071】
オフラインシステム20は、さらに表示制御データを生成する表示制御部15、仮想時刻を出力するタイマーを含む周期生成部18、および制御プログラムを編集するプログラム編集部34を備えてもよい。
【0072】
表示制御部15は、描画データ等から表示制御データを生成し、ディスプレイドライバ39に出力する。ディスプレイドライバ39は、表示制御部15からの表示制御データに従いディスプレイ38を駆動する。これにより、画面に描画データに従う画像が表示される。
【0073】
周期生成部18は、仮想時刻を示す信号STを生成し、生成した信号STをオフラインシステム20の各部に出力する。信号STが示す仮想時刻は可変である。各部は、信号STが示す仮想時刻を尺度とする周期に同期して動作する。本実施形態では、仮想時刻を尺度とする周期には、上記に述べた制御周期が含まれる。周期生成部18は、制御部10からの指示に従い、演算指令280を生成し、プログラム実行部31に出力する演算指令部36を含む。演算指令部36が生成する演算指令280は、例えば後述する等倍演算指令、N倍演算指令および1/N倍演算指令を含む。
【0074】
また、図1を参照して、オフラインシステム20は、描画データ生成部19に関連して軌跡データ251,252および画像データ253,254を含む。また、オフラインシステム20は、プログラム編集部34に関連して、ロボット300の制御プログラムであるロボットプログラム381、ステージ400の制御プログラムであるPLCプログラム371を含む。ロボットプログラム381とPLCプログラム371は格納部に格納されている。図1の各部がプログラムで構成される場合、これらをプログラムおよび関連するデータは、例えばROM3、RAM4およびHDD5等に格納されている。CPU2は、格納されているプログラムを実行する。
【0075】
(E-2.プログラム実行部によるエミュレーション)
プログラム実行部31は、PLCエミュレータ260およびロボットエミュレータ270を実行する主体、すなわち実行エンジンに相当する。図6を参照して、プログラム実行部31は、PLC200およびサーボドライバ13の制御プログラムをエミュレートするPLCエミュレータ260、ロボットコントローラ310の制御プログラムをエミュレートするロボットエミュレータ270および共有メモリ12Aを含む。PLCエミュレータ260とロボットエミュレータ270の間のデータ交換は共有メモリ12Aを用いて実現する。共有メモリ12Aを介したPLCエミュレータ260とロボットエミュレータ270の間のデータ交換は、PLC200、サーボドライバ13およびロボットコントローラ310の間のフィールドネットワークNW2のEtherCATを介した通信におけるデータ交換に相当する。
【0076】
PLCエミュレータ260は、ロボット300およびステージ400の挙動を推定するプログラムであって、PLCプログラム371およびロボットプログラム381に含まれた複数の命令を含むエミュレーションプログラムに相当する。これら複数の命令は、PLCプログラム371に含まれたステージ400の挙動を制御するためのモーション命令およびモーション演算命令を含む命令群371Aと、ロボットプログラム381に含まれたロボット300の挙動を制御するための複数のロボット命令を含む命令群381Aを含む。命令群381Aおよび命令群371Aは、四則演算命令のような他の命令も含み得る。PLCプログラム371は、例えばサイクリック実行型言語(例えば、ラダー言語)で記載されたプログラムであり、ロボットプログラム381は例えば逐次実行型の言語(例えばインタプリタ言語)で記載されたプログラムである。したがって、プログラム実行部31は、これら異なる言語のプログラムを実行するためのエミュレータ実行エンジンを備えている。
【0077】
PLCエミュレータ260のこれら命令群381Aおよび371Aの各命令が、共有メモリ12Aの入力データ144に基づき実行される毎に、サーボモータのための上記に述べた指令値V1が生成されて、共有メモリ12Aに出力データ145として格納される。
【0078】
また、ロボットエミュレータ270は、ロボットコントローラ310のプログラムに含まれる命令群を含むエミュレーションプログラムに相当する。この命令群は、共有メモリ12Aの出力データに基づき、ロボット300の目標の軌跡を算出するための1以上の軌跡演算命令271と、算出された軌跡に基づき各軸の指令値V2を算出する1以上の機構演算命令272を含む。
【0079】
ロボットエミュレータ270の命令群が、共有メモリ12Aの出力データ145に基づき実行されると、ロボット300の各軸のための上記に述べた指令値V2が生成されて、共有メモリ12Aに入力データ144として格納される。
【0080】
このように、PLCエミュレータ260とロボットエミュレータ270により生成される指令値は、ロボット300とステージ400のサーボモータの推定された挙動を示し得る。また、PLCエミュレータ260とロボットエミュレータ270は、それぞれ、他方が算出した指令値に基づき、新たな指令値を算出する。したがって、このように算出される指令値により推定されるサーボモータの挙動により、ロボット300とステージ400の相互の連携した動作が示され得る。
【0081】
(E-3.描画データの生成)
図1を参照して、描画データ生成部19は、軌跡計算プログラム303を含む3D(3-dimensions)描画データを生成する3D視覚化プログラム30を実行する。3D視覚化プログラム30は、「視覚化モジュール」の一実施例である。3D視覚化プログラム30が実行されると、描画データ生成部19は、軌跡データ251,252と、ロボット300およびステージ400を表す画像データ253および254とに基づいて、ロボット300およびステージ400のエミュレートされた動きをディスプレイ38に描画する描画データ301,401を生成する。ロボット300およびステージ400を表す画像データ253および254は、CAD(computer-aided design)データ等を含む。
【0082】
軌跡計算プログラム303は、図6の共有メモリ12Aの入力データ144に所定関数を用いて演算を施すことで、3次元座標P(x,y,z)および3次元座標Q(x,y,0)を算出し、軌跡データ251,252を取得する。このように軌跡データは、エミュレーションにより推定されたロボット300,ステージ400の3次元仮想空間における動きを示す情報を含む。描画データ生成部19は、算出された軌跡データ251とロボット300の画像データ253に従い、ロボット300の動きを3次元仮想空間内で立体的に描画するための描画データ301を生成し、表示制御部15に出力する。
【0083】
同様に、軌跡計算プログラム303は、軌跡データ252に所定関数を用いて演算を施すことで、時系列の3次元座標Q(x,y,0)を算出し、軌跡データ252として格納する。このように軌跡データ252は、エミュレーションにより推定されたステージ400の動きを3次元仮想空間内で立体的に描画するため情報である。描画データ生成部19は、算出された軌跡データ252とステージ400の画像データ254に従い、ステージ400の動きを、ロボット300と同じ3次元仮想空間内で立体的に描画するための描画データ401を生成し、表示制御部15に出力する。
【0084】
(E-4.同期処理)
周期生成部18は、信号STを生成する仮想時刻生成プログラム29を実行する。周期生成部18は、生成された信号STを他の各部に出力する。各部は、周期生成部18から信号STが出力される周期に同期して処理またはプログラムを実行する。これにより、オフラインシステム20の各部の処理またはプログラムは、信号STの周期で、または当該周期に同期して実行される。信号STの周期は、図1の制御システム1のフィールドネットワークNW2の通信周期に相当する。フィールドネットワークNW2の通信周期は変更可能であり、信号STの周期は変更後のフィールドネットワークNW2の通信周期に同期するように変更され得る。なお、通信周期は、「制御周期」に同期した周期である。
【0085】
図7は、本実施の形態に係る仮想時刻によるエミュレータの同期を説明する図である。図7を参照して、周期生成部18は、CPU2が有するタイマー(図示せず)の仮想時刻の出力から、例えば1msecの周期を有した信号STを生成し出力する。プログラム実行部31は、信号STの共通の周期に従い、PLCエミュレータ260とロボットエミュレータ270とに指令値V1,V2の計算を開始させる。これにより、PLCエミュレータ260とロボットエミュレータ270は信号STが示す共通の周期に同期して周期的に実行される。計算を開始すると、PLCエミュレータ260は入力データ144に基づき指令値V1を算出し、またロボットエミュレータ270は出力データ145に基づき指令値V2を算出する。プログラム実行部31は、周期毎に、算出された指令値V1,V2を共有メモリ12Aに出力(書込)する。
【0086】
これにより、PLCエミュレータ260とロボットエミュレータ270の両者において指令値V1,V2の演算に要する計算時間にバラツキがあっても、言い換えるとPLCプログラム371とロボットプログラム381の間で計算時間が異なっても、PLCエミュレータ260とロボットエミュレータ270は、それぞれ、算出した指令値V1,V2を出力するタイミングを信号STの周期に合わせることができる。
【0087】
ここで、本実施の形態では、「制御周期」は信号STの周期に同期していることから、PLCエミュレータ260とロボットエミュレータ270の両者は、各制御周期において、直前の制御周期で算出された指令値V1,V2を用いて新たな指令値V1,V2を算出することが可能になる。
【0088】
上記のPLCプログラム371とロボットプログラム381の間での計算時間のバラツキは、例えばPLCプログラム371とロボットプログラム381のプログラム言語の種類に基づく。例えば、本実施の形態では、上述したように、ロボットプログラム381は逐次実行型の言語で記載されて、PLCプログラム371はサイクリック実行型言語で記載されており、両プログラム間では、1命令の実行完了に要する時間が相違する。本実施の形態では、このような相違を、PLCエミュレータ260およびロボットエミュレータ270の実行周期を、共通の制御周期に同期させることで吸収することが可能となる。
【0089】
(E-5.プログラム編集)
本実施の形態では、オフラインシステム20は、制御プログラムを編集する環境を提供してもよい。具体的には、プログラム編集部34は、制御プログラムを編集するためにPLCプログラムエディタ32およびロボットプログラムエディタ33を含む。PLCプログラムエディタ32およびロボットプログラムエディタ33は、それぞれ、ロボットプログラム381およびPLCプログラム371を、制御部10が入力受付部11を介して受付けたユーザ入力に従い編集(変更、追加、削除など)するエディタプログラムに相当する。
【0090】
プログラム編集部34は、格納部からロボットプログラム381とPLCプログラム371を読出し、読出された各プログラムを、表示制御部15を介してディスプレイ38に表示する。ユーザは、ディスプレイ38に表示された制御プログラムを編集する。例えばユーザは、エミュレーション結果に基づき制御プログラムを編集することにより、制御プログラムをデバッグすることができる。
【0091】
エミュレーション結果に基づくデバッグをする場合、後述するような高速エミュレーションが実施された場合は、エミュレーション結果に基づくデバッグに要する時間と手間を削減することが可能となる。
【0092】
<F.表示画面の例示>
図8は、本実施の形態に係る描画データによる表示画面の一例を示す図である。表示制御部15は、ディスプレイ38に、描画データ301,401による画像OB1,OB2を表示する。画像OB1,OB2は、3次元仮想空間におけるロボット300およびステージ400の動きを示す。ロボット300の動きは、例えば、ステージ400上のワークを把持して所定位置まで搬送して配置する動きを含む。このようなロボット300による把持・搬送・配置の一連の動きは、「ピック&プレース動作」とも称される。本実施の形態では、描画データ301,401により、「ピック&プレース動作」の動きと、これに同期したステージ400の動きとを同一画面において描画することができる。
【0093】
図9は、本実施の形態に係る描画データによる表示画面の他の例を示す図である。本実施の形態に係るPLCエミュレータ260およびロボットエミュレータ270は、「ピック&プレース動作」とは異なる動きをするタイプのロボットであっても同様に適用することができる。例えば、図9では、スライダーと、スライダーの直線方向の動きに同期して動くロボットが示される。
【0094】
<G.オフラインシステム20の全体処理>
図10図11は、本実施の形態に係る情報処理装置100が実施するオフラインシステム20の処理を説明する図である。図10図11では、オフラインシステム20の処理が、各部間の信号の入出力関係を示すタイミングチャートと関連付けて示される。
【0095】
図10を参照して、制御部10のシミュレーション制御プログラム21は、入力受付部11を介してユーザから起動指令を受付けると(ステップT1)、起動する。
【0096】
制御部10のシミュレーション制御プログラム21は、周期生成部18に起動指令を出力する(ステップT3)。周期生成部18は起動指令に従い仮想時刻生成プログラム29を起動する。仮想時刻生成プログラム29は起動されると、信号STの出力を開始するとともに、PLCエミュレータ260とロボットエミュレータ270に起動指令を出力する(ステップT4,T5)。
【0097】
プログラム実行部31は、起動指令に従いPLCエミュレータ260とロボットエミュレータ270を起動する。これにより、指令値V1,V2を算出する指令値演算処理40を実施する。指令値演算処理40は、信号STが示す仮想時刻を尺度とする制御周期毎に繰返(Loop)し実施される。
【0098】
指令値演算処理40が実施されるとき、ユーザは動作モードを指定する操作を行う(ステップT6)。動作モードの指定については、図22で後述する。制御部10は入力受付部11を介して受付けたユーザの操作内容に従い、指定された動作モードを示すモード指令MCをプログラム実行部31に出力する(ステップT7)。プログラム実行部31は、モード指令MCが示す動作モードに従って指令値演算処理40を実施する。
【0099】
図11を参照して、指令値演算処理40では、まず、制御部10のシミュレーション制御プログラム21は、プログラム実行部31のエミュレータが一時停止しているかを判断する。制御部10は、プログラム実行部31のエミュレータの実行が停止していると判断したとき、以降の処理をスキップする。これにより、指令値演算処理40は終了する。
【0100】
一方、制御部10のシミュレーション制御プログラム21は、プログラム実行部31によるエミュレータの実行が一時停止していない、すなわち実行中であると判断したとき、まず、周期生成部18は、仮想時刻生成プログラム29により、演算指令をプログラム実行部31に出力する。プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は、演算指令に従い各軸の指令値V1,V2を算出し、入力データ144として共有メモリ12Aに格納する(ステップS1)。周期生成部18の仮想時刻生成プログラム29は、プログラム実行部31による演算が完了すると、次の制御周期まで待機する(ステップS2)。
【0101】
描画更新処理50では、描画データ生成部19は3D視覚化プログラム30により、描画の更新タイミングであるかを判断する。描画データ生成部19は、描画の更新タイミングであると判断しないときは、描画更新処理50をスキップする。これにより、描画更新処理50は終了する。
【0102】
ここで、本実施の形態では、描画更新処理50を、制御周期のM(M≧2)倍の周期に相当する描画周期毎に実施する。したがって、描画更新処理50を御周期毎に実施する場合に比較して、情報処理装置100における描画に関する処理の負荷を軽減することができる。
【0103】
描画データ生成部19は、描画の更新タイミングであると判断したとき、すなわち信号STに基づき前回の描画時刻から描画周期が経過した判断したとき、PLCエミュレータ260とロボットエミュレータ270により算出された各軸の指令値V1,V2を取得する(ステップS3)。具体的には、描画データ生成部19は3D視覚化プログラム30により、共有メモリ12Aを検索し、共有メモリ12Aから指令値V1,V2を取得する。描画データ生成部19は、3D視覚化プログラム30により、取得した指令値V1,V2から軌跡データ251,252を算出し、算出された軌跡データ251,252と画像データ253,254とから描画データ301,401を生成する。描画データ生成部19は、ディスプレイ38の画像を更新するために、表示制御部15に描画データ301,401を出力する(ステップS4)。
【0104】
図10図11では、ディスプレイ38の画面には、描画周期ごとに、当該描画周期内で算出された各軸の指令値V1,V2を用いた描画データ301,401が表すロボット300およびステージ400の動きが描画される。これにより、ユーザは、ディスプレイ38の画面から、描画周期毎に、ロボット300とステージ400の動きの直前の描画周期からの変化量、すなわちロボット300のアームまたはステージ400の移動量を視認することができる。
【0105】
<H.各種の演算指令>
本実施の形態では、演算指令280は、モード指令MCに従う複数種類の指令に分類され得る。演算指令280は、例えば、ロボット300またはステージ400の1制御周期あたりの移動量が、予め定められた単位移動量と等しくなるような等倍演算指令と、1制御周期あたりの移動量が単位移動量とは異なる移動量となるような可変演算指令とに分類され得る。可変演算指令は、例えば、N倍(ただし、N>1.0)演算指令および1/N倍(ただし、N>1.0)演算指令に分類され得る。
【0106】
N倍演算指令は、例えば1制御周期あたりの移動量が(N×単位移動量)となるような指令値V1,V2の算出を指示する。N倍演算指令の場合、プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270は、1回の演算により、移動量が(N×単位移動量)となるような指令値V1,V2を算出する。このように、等倍演算指令によるN回の演算で算出された移動量となるような指令値V1,V2を、N倍演算指令の場合、1回の演算で算出する、すなわち(N-1)回の演算を省略しながら算出することができる。したがって、演算回数が削減されることで、指令値V1,V2の算出に係る情報処理装置100にかかる処理の負荷を軽減できる。また、ディスプレイ38においてロボット300とステージ400の動きを高速に描画することができて、いわゆる動きの早送りが可能となる。
【0107】
1/N倍演算指令は、例えば1制御周期あたりの移動量が(1/N×単位移動量)となるような指令値V1,V2の算出を指示する。1/N倍演算指令の場合、プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270は、1回の演算により、移動量が(1/N×単位移動量)となるような指令値V1,V2を算出する。
【0108】
例えば、1/N倍演算指令は、連続する2つの制御周期のうち1番目の制御周期では、移動量が単位移動量となるような指令値V1,V2の算出を指示する等倍演算指令と、次の2番目の制御周期では、指令値V1,V2の算出を停止するよう指示するsleep指令との組合せを含み得る。これにより、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は、N個の制御周期のうち1の制御周期だけ演算を実施して指令値V1,V2を算出する。したがって、sleep指令により演算を停止することができるので、指令値V1,V2の算出に係る情報処理装置100にかかる処理の負荷を軽減することができる。また、描画周期においては、等倍演算指令の場合に比較して、1/N倍の遅い速度でロボット300とステージ400の動きを描画することができて、ユーザは、ロボット300またはステージ400の詳細な動きを確認することができる。
【0109】
<I.エミュレーション速度の高速化>
図12図13を参照して、N倍演算指令の高速エミュレーションを説明する。
【0110】
(I-1.エミュレーションの高速化と描画)
図12は、本実施の形態に係る高速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。図12では、説明のために制御周期を1msecおよび描画周期を4msecとしているが、制御周期は1msecに限定されず、また描画周期も4msecに限定されない。
【0111】
図12は、例えば、制御周期毎に、演算指令280が出力される。図12(A)では、制御周期毎に、周期生成部18の演算指令部36は等倍演算指令を出力し、PLCエミュレータ260およびロボットエミュレータ270は、等倍演算指令に従い制御周期ごとに指令値V1,V2を算出する。3D視覚化プログラム30は、描画周期毎に、当該描画周期内で算出された指令値V1,V2から描画データ301,401を生成し、ディスプレイ38には、ロボット300とステージ400の動きが描画される。この場合、ロボット300の移動の軌跡210を、例えば、図12(B)のように描画することができる。
【0112】
これに対して、図12(C)は、制御周期毎に、周期生成部18の演算指令部36はN倍演算指令を出力するケースを示す。例えばN=2の場合、PLCエミュレータ260およびロボットエミュレータ270は、N倍演算指令に従い、制御周期ごとに、1回の演算の省略OMをしながらN倍の単位移動量となるような指令値V1,V2を算出する。3D視覚化プログラム30は、描画周期毎に、当該描画周期内で算出された指令値V1,V2から描画データ301,401を生成し、ディスプレイ38には、ロボット300とステージ400の動きが描画される。この場合、ロボット300の移動の軌跡211を、例えば、図12(D)のように描画することができる。
【0113】
N倍演算指令により算出される指令値から描画される図12(D)の軌跡211は、等倍演算指令により算出される指令値から描画される図12(B)の軌跡210に比較して、大まかに描画される軌跡となるが、上記に述べたように高速なエミュレーションが可能である。
【0114】
(I-2.高速エミュレーションの処理)
図13は、本実施の形態に係る高速エミュレーションのための指令値演算処理41の一例を説明する図である。図13の指令値演算処理41は、図11の指令値演算処理40の変形例である。
【0115】
図13を参照して、指令値演算処理41では、周期生成部18は、ロボット300およびステージ400に関する移動量を単位移動量のN倍にするためのパラメータとして、例えば速度,加速度,ジャーク(加加速度)を指定するパラメータ指定指令を、仮想時刻生成プログラム29を介してプログラム実行部31に出力し(ステップS10)、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は当該指令を受付ける(ステップS11)。
【0116】
周期生成部18は、仮想時刻生成プログラム29を介して、N倍演算指令をプログラム実行部31に出力する(ステップS12)。プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270は、N倍演算指令に従い、ステップS11で指定されたパラメータに対応した各軸の指令値V1,V2を算出し(ステップS13)、入力データ144として共有メモリ12Aに格納する。
【0117】
図13の処理では、プログラム実行部31は、高速エミュレーションを実施中と判断する時は、後述する警告処理(ステップS14~ステップS16)を実施してもよい。
【0118】
描画更新処理51では、描画データ生成部19は、描画の更新タイミングであると判断したとき、描画データ生成部19は3D視覚化プログラム30により、共有メモリ12Aの指令値V1,V2から軌跡データ251,252を算出し、算出された軌跡データ251,252を用いて描画データ301,401を生成し表示制御部15に出力する。このとき、警告処理による警告メッセージの表示指令を受信している場合は(ステップS17)、警告メッセージを表示制御部15に出力する。
【0119】
(I-3.高速エミュレーションの警告処理)
図13の警告処理(ステップS14~S16)では、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270のそれぞれは、制御周期どうしの指令値V1の差である変化量DV1および制御周期どうしの指令値V2の差である変化量DV2を検出する。変化量DV1とDV2をチェック(判断)し、チェック結果に従い警告メッセージを周期生成部18に通知する。
【0120】
具体的には、PLCエミュレータ260は今回の制御周期のN倍演算指令により算出された指令値V1と、直前の制御周期のN倍演算指令により算出された指令値V1との差である変化量DV1を算出し、例えば(変化量DV1>変化量閾値)で示す予め定められた条件が満たされるか否かを判断する(ステップS14)。PLCエミュレータ260は、この条件が満たされると判断したとき、警告メッセージを生成する(ステップS15)。
【0121】
同様に、ロボットエミュレータ270は、今回の制御周期のN倍演算指令により算出された指令値V2と、直前の制御周期のN倍演算指令により算出された指令値V2との差である変化量DV2を算出し、(変化量DV2>変化量閾値)の予め定められた条件が満たされるか否かを判断する(ステップS14)。ロボットエミュレータ270は、この条件が満たされると判断したとき、警告メッセージを生成する(ステップS15)。なお、変化量閾値は、例えば予め設定された値である。
【0122】
プログラム実行部31は、N倍演算指令に従う演算が終了したとき、演算完了通知を周期生成部18に出力する。この場合、上記に述べた警告処理により警告メッセージが出力されている場合は、プログラム実行部31は、警告メッセージを付けた演算完了通知を、周期生成部18に通知する(ステップS16)。
【0123】
周期生成部18の仮想時刻生成プログラム29は、プログラム実行部31からの演算完了通知に、警告メッセージが付加されていると判断したとき、警告メッセージの表示指令を描画データ生成部19の3D視覚化プログラム30に出力する(ステップS17)。描画更新処理51では、3D視覚化プログラム30は、警告メッセージ付きの描画データ301,401を生成し表示制御部15に出力する。これにより、ディスプレイ38では、ロボット300とステージ400の動きを表す描画と、警告メッセージの表示とがなされる。
【0124】
警告処理に関し本実施の形態の背景を説明する。本実施の形態の高速エミュレーションの場合、N倍演算指令のNの値が大きいほど、1制御周期ごとに算出される指令値V1,V2に基づき移動量が大きくなるために、ディスプレイ38の画面では、ロボット300およびステージ400の動きの描画が粗くなる傾向にある。描画が粗くなると、例えば、ユーザは、ディスプレイ38の画面から、ロボット300またはステージ400の動きを正確に把握することの支障となる。
【0125】
そこで、本実施の形態に係る警告処理では、このような支障を防止するために、上記の変化量DV1,DV2に関する条件が満たされると判断されたときは、警告メッセージを出力し、ユーザに対し、エミュレーションの速度が速すぎる可能性を示唆することができる。
【0126】
本実施の形態では、警告処理は、描画データ生成部19ではなく、プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270のそれぞれにより実施される。したがって、例えばCPU2のスペックによっては、負荷の大きさにより描画データ生成部19の処理が省略される可能性があるとしても、本実施の形態によれば、制御周期ごとに警告処理を確実に実施することが可能となる。
【0127】
なお、警告処理の上記の条件は、指令値V1,V2の変化量に基づくものであったが、指令値の変化量に限定されない。例えば、3D視覚化プログラム30が算出した3次元座標値P,Qの軌跡データ251の位置データからロボット300のアームの移動距離の制御周期間の変化量またはステージ400の制御周期間の移動距離の制御周期間の変化量を検出し、これら変化量が、予め定められた距離閾値を超えたとき、警告を出力してもよい。
【0128】
また、警告処理は、上記の指令値V1,V2の変化量と移動距離の変化量とを組合わせて実施してもよい。
【0129】
(I-4.警告メッセージの表示例)
図14は、本実施の形態に係る高速エミュレーションにおける警告メッセージの表示の一例を示す図である。図14(A)は、高速エミュレーションの表示画面の一例であって、図14(B)は、警告メッセージ382の表示の一例を示す。図14(A)の画面では、高速エミュレーションを実施中であることを示すメッセージ383と時間38Eが表示される。メッセージ383は、例えば文字列を示すが、文字列に限定されず、マークであってもよい。時間38Eは、信号STが示す仮想時刻に基づく時間であって、例えばエミュレーション開始からの経過時間を示す。また、図14(B)では、文字列による警告メッセージ382であるが、これに限定されない。例えば、警告のマークであってもよく、または音声による警告であってもよい。また、表示と音声が組み合わされてもよい。
【0130】
(I-5.間引く部分の指定の一例)
本実施の形態では、高速エミュレーションを実施時には、図12(C)に示すように演算の省略OMがなされる。このような演算の省略OMは、描画におけるロボット300およびステージ400の一連の動きの一部を間引くことに相当する。本実施の形態では、この間引く部分を、可変に指定することができる。
【0131】
図15は、本実施の形態に係る間引く部分を指定する方法の一例を説明する図である。図15(A)はロボット300の目標位置に従う移動の軌跡210の一例を示し、図15(B)はステージ400の目標位置に従う移動の軌跡311の一例を示す。
【0132】
間引く部分は、例えば軌跡210,311の上における等速移動の区間(以下、等速区間という)に対応し得る。等速区間を検出するために、本実施の形態では、指令値演算処理40または指令値演算処理41においては、PLCエミュレータ260およびロボットエミュレータ270は等速区間の検出処理を実施し、等速区間を検出したとき等速区間通知を周期生成部18に出力する。周期生成部18は、PLCエミュレータ260およびロボットエミュレータ270のそれぞれから等速区間通知を受けたとき、N倍演算指令をプログラム実行部31に出力する。
【0133】
等速区間の検出処理では、PLCエミュレータ260およびロボットエミュレータ270のそれぞれは、制御周期どうしの指令値V1の変化量DV1および指令値V2の変化量DV2を検出する。PLCエミュレータ260およびロボットエミュレータ270のそれぞれは、第1目標軌跡および第2目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間のうちから、変化量DV1および変化量DV2の両方が閾値(例えば、略ゼロ)以下であることを示す条件(これを等速条件という)が、予め定められた時間だけ継続して成立したとき(これを、等速区間という)、PLCエミュレータ260およびロボットエミュレータ270のそれぞれは、等速区間通知を出力する。
【0134】
周期生成部18は、PLCエミュレータ260およびロボットエミュレータ270の両者から等速区間通知を受けると、演算指令をN倍演算指令に切替えて、等速通知を受ける間は、N倍演算指令を出力する。そして、等速区間が検出されなくなると(すなわち、PLCエミュレータ260およびロボットエミュレータ270の少なくとも一方から、等速区間通知を受理しなくなったとき)、周期生成部18は演算指令を元の等倍演算指令に切替えて、元の等倍演算指令によるエミュレーションに戻る。これにより、等速区間においてのみ、N倍演算指令に従う高速エミュレーションを実施することができる。
【0135】
例えば、図15(A)のロボット300の軌跡210では、3つの等速区間が検出されるのに対して、図15(B)のステージ400の軌跡311においては、1つの等速区間が検出されている。この場合、例えば、ロボット300の軌跡210における2番目の等速区間410と、ステージ400の軌跡311における等速区間411とは、エミュレーション開始時からの経過時間が共通している。これにより、周期生成部18は、この共通した等速区間410,411の時間において、N倍演算指令が出力し、プログラム実行部31では動きを間引くような高速エミュレーションが実施される。
【0136】
(I-6.間引く部分の指定の他の例)
図16は、本実施の形態に係る間引く部分の他の指定例を説明する図である。図16では、ユーザによる間引く部分の指定を受付けるための画面の表示例が示される。図16のディスプレイ38の画面は、エミュレーションによるロボット300およびステージ400の動きの描画と、ダイアログボックスとを含む。ダイアログボックスは、エミュレーションの「開始」、「一時停止」、「コマ送り」および「速度変更」のそれぞれを指示するために操作されるアイコン38A、38B、38Cおよび38Dを含む。
【0137】
ユーザはアイコン38Dのプルダウンメニューを操作してN倍演算指令の「N」の値を指定する。入力受付部11は、アイコン38Dを介して受付けた操作内容を制御部10に出力する。制御部10は、受付けた操作内容を周期生成部18に出力する。例えば、ユーザ操作内容が「値=1.0」を示すとき、周期生成部18は演算指令として等倍演算指令を出力すると決定し、また「値>1.0」を示すときN倍演算指令を出力すると決定する。また、「値<1.0」の場合は、1/N倍演算指令を出力すると決定する。
【0138】
これにより、ユーザは、アイコン38Dを操作することにより、エミュレーション速度を変更することができる。例えばエミュレーション開始の30分経過後から詳細にロボット300またはステージ400の動きを確認する場合は、エミュレーション開始時に、ユーザはアイコン38Dを操作して「N」に1.0を超える値を指定することにより、実際に30分待たなくとも、ロボット300またはステージ400の動きを30分経過した状態に進めることが可能となる。そして、ユーザは、30分後の描画がなされたとき、アイコン38Dを操作して「N」の値を1.0に変更することで、30分以降においては、等倍演算指令によるエミュレーションによる、詳細な動きを描画させることができる。
【0139】
アイコン38Dの操作によるエミュレーション速度の変更を適用するシーンとして、例えばロボット300のアームの動きと、ステージ400の動きとの「干渉」の有無をチェックする場合がある。例えば、エミュレーション開始から30分後の「干渉」をチェックする場合等があるが、適用例はこれに限定されない。
【0140】
「干渉」に関しては、例えば、ロボット300の「ピック&プレース動作」において、ロボット300のアームがステージ400上のワークを把持(ピック)する時と、把持したワークをステージ400上に配置(プレース)する時に、「干渉」が生じやすい傾向がある。したがって、このようなシーンでは、ユーザは、ピック動作の前またはプレース動作の前までは高速にエミュレーションを実施し、ピック動作のとき、またはプレース動作のときに、エミュレーション速度を遅くするとしてもよい。
【0141】
ピックまたはプレースの動作の検出は、例えばパターンマッチングを利用する。予めピックまたはプレース時のロボット300とステージ400の座標P(x,y,z)と座標Q(x,y,z)パターンを格納しておき、エミュレーション時に、検出されると座標P,Qと登録パターンとを照合し、照合結果に基づきピックまたはプレースの動作に該当するか否かを検出する。
【0142】
また、高速エミュレーションを実施すべき区間は、例えばロボット300とステージ400の3次元仮想空間における相対的な位置関係が予め定められた条件を満たす区間であってもよい。具体的には、周期生成部18は、軌跡データ251が示すロボット300の座標P(x,y,z)と、軌跡データ252が示すステージ400の座標Q(x,y,0)とから、両者の位置間の相対的な距離を算出する。周期生成部18は、(算出された距離>距離A)を示す予め定められた条件が満たされる区間を、高速エミュレーションを実施すべき区間と判定する。これにより、ロボット300とステージ400の両者の相対的な位置関係が、両者は十分に離れた関係を示す区間、すなわち「干渉」が生じる可能性が低いと判断される区間において、高速エミュレーションが実施される。
【0143】
また、周期生成部18は、図15(A)の等速区間と、(算出された距離>距離A)の条件が満たされる区間のいずれか一方、または両方において、N倍演算指令を出力するとしてもよい。
【0144】
(I-7.等速区間における高速エミュレーションの処理)
図17は、本実施の形態に係るエミュレーションのための指令値演算処理42を説明する図である。図18の指令値演算処理42は、図13の指令値演算処理41の変形例であって、等速区間を検出する処理を含む。
【0145】
図17を参照して、指令値演算処理42では、周期生成部18は、エミュレーションが実施されている場合、プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270に、等速区間が検出されたか否かを問い合わせる(ステップ4)。
【0146】
PLCエミュレータ260およびロボットエミュレータ270のそれぞれは等速区間検出処理を実施し(ステップS5)、等速区間を検出するか否か(true or false)を出力する(ステップS6)。等速区間が検出されたときは、‘true’(すなわち、等速区間通知)が周期生成部18に出力される(ステップS6)。
【0147】
周期生成部18は、PLCエミュレータ260およびロボットエミュレータ270も両者から等速区間通知を受けたとき、図13のステップS10と同様に、移動量を単位移動量のN倍にするためのパラメータを指定するパラメータ指定指令を、仮想時刻生成プログラム29を介してプログラム実行部31に出力し(ステップS10a)、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は当該指令を受付ける(ステップS8)。
【0148】
一方、周期生成部18は、PLCエミュレータ260およびロボットエミュレータ270の両者から等速区間通知を受けていないときは、移動量を単位移動量の等倍にするべきパラメータとして速度,加速度,ジャークを指定するパラメータ指定指令を、仮想時刻生成プログラム29を介してプログラム実行部31に出力し(ステップS10b)、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は当該指令を受付ける(ステップS8)。
【0149】
その後、周期生成部18は、等速区間通知に従う演算指令(N倍演算指令および等倍演算指令の一方)をプログラム実行部31に出力する(ステップS12)。これにより、PLCエミュレータ260およびロボットエミュレータ270は、両者が等速区間を検出ししているときは、N倍演算指令に従い指令値V1,V2を算出する(ステップS13)。PLCエミュレータ260およびロボットエミュレータ270の両者が等速区間を検出していないときは、等倍演算指令に従い指令値V1,V2を算出する(ステップS13)。
【0150】
図17の指令値演算処理42でも、図13の処理と同様に、警告処理(ステップS14~ステップS16)が実施されて、警告処理による警告メッセージ382の表示(ステップS17)が実施されてもよい。
【0151】
描画更新処理52では、図13の描画更新処理51と同様にディスプレイ38への描画がなされる。具体的には、等速区間では高速エミュレーションが実施されながら算出された指令値V1,V2から、描画データ301,401が生成されて、生成された描画データ301,401に従いディスプレイ38に描画がなされる。
【0152】
なお、図17の処理は、高速エミュレーションを等速区間で実施するケースであったが、ユーザがアイコン38Dを操作して指定した区間で実施するケース、または(算出された距離>距離A)の条件が満たされた区間で実施するケースであっても、図17の処理を同様に適用することができる。
【0153】
<J.エミュレーション速度を遅くする>
図18は、本実施の形態に係る低速エミュレーションの速度の変化を描画される軌跡と関連づけて説明する図である。図18では、図12と同様に、説明のために制御周期を1msecおよび描画周期を4msecとしている。図18(A)と(B)は、図12(A)と(B)で示した等倍演算指令によるエミュレーションを例示する。
【0154】
これに対して、図18(B)と(D)は、例えば、1/2倍演算指令が出力される場合を示す。1/2倍演算指令では、1制御周期(例えば、1msec)で指令値V1,V2の演算を実行し、次の1制御周期ではPLCエミュレータ260およびロボットエミュレータ270は指令値V1,V2の算出を停止する。
【0155】
これによって、描画周期毎に、等倍演算指令による2個の制御周期に相当の指令値V1,V2に基づく移動量に従う軌跡212の描画がなされることで、等倍演算指令の軌跡211の描画に比べて、ゆっくりと低速の描画がなされる。したがって、例えば、本来は曲線軌跡を示す描画である場合、等倍演算指令であれば比較的速い描画であるため、ユーザは曲線軌跡を略直線軌跡として視認することになるのに対して、1/N倍演算指令であれば、ゆっくり曲線軌跡が詳細に描画されることで、ユーザは本来の曲線軌跡を視認することが可能になる。このようなエミュレーション速度の低速化を実施する具体例を、図19図21を参照して説明する。
【0156】
(J-1.低速エミュレーションの処理)
図19は、本実施の形態に係る低速エミュレーションのための指令値演算処理43を説明する図である。図19の指令値演算処理43は、図13の指令値演算処理41の変形例である。
【0157】
図19を参照して、指令値演算処理43では、周期生成部18は、移動量を単位移動量の1/N倍にするべきパラメータとして速度,加速度,ジャークを指定するパラメータ指定指令を、仮想時刻生成プログラム29を介してプログラム実行部31に出力し(ステップS10a)、プログラム実行部31のPLCエミュレータ260とロボットエミュレータ270は当該指令を受付ける(ステップS11)。
【0158】
周期生成部18は、1/N倍演算指令をプログラム実行部31に出力する(ステップS12a)。プログラム実行部31のPLCエミュレータ260およびロボットエミュレータ270は、1/N倍演算指令に従い演算を実施する(ステップ13a,S13b)。ここでは、例えばN=2.0として説明するが、Nの値は「2.0」に限定されない。
【0159】
プログラム実行部31は、1/N倍演算指令を入力した場合、指令を入力してから連続する2つの制御周期CTのうち、1番目の制御周期を演算周期と判断し、PLCエミュレータ260およびロボットエミュレータ270は、等倍演算指令と同様に指令値V1,V2を算出する(ステップ13a)。プログラム実行部31は、次の2番目の制御周期CTはsleep指令により指令値の算出を停止すると判断し、PLCエミュレータ260およびロボットエミュレータ270は演算を停止(スキップ)する(ステップ13b)。したがって、プログラム実行部31では、2つ制御周期のうち1番目の制御周期においてのみ指令値V1,V2が算出される。
【0160】
図19の処理でも、プログラム実行部31は、演算周期においては、図13と同様の警告処理(ステップS14a,S15a,S16)を実施し、演算周期ではないときは警告処理をスキップして実施しない(ステップ14b)。
【0161】
描画更新処理53では、図13の描画更新処理51と同様に共有メモリ12Aの指令値V1,V2から算出された軌跡データ251,252を用いて描画データ301,401を生成し表示制御部15に出力する。このとき、警告処理による警告メッセージの表示指令を受信している場合は(ステップS17)、描画データ301,401とともに警告メッセージが表示制御部15に出力される。
【0162】
(J-2.低速エミュレーションを実施する区間を指定する方法)
本実施の形態では、ロボット300およびステージ400の目標値に従う軌跡において、低速エミュレーションを実施する部分を可変に指定することができる。図20は、本実施の形態に係る低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。図20(A)を参照して、低速エミュレーションを実施中のディスプレイ38の画面では、低速エミュレーションを実施中であることを示すメッセージ383が表示されている。
【0163】
低速エミュレーションを実施する区間は、高速エミュレーションを実施すべき区間と同様に、例えばロボット300とステージ400の3次元仮想空間における相対的な位置関係が予め定められた条件を満たす区間であってもよい。具体的には、周期生成部18は、軌跡データ251が示すロボット300の座標P(x,y,z)と、軌跡データ252が示すステージ400の座標Q(x,y,0)とから、両者の距離を算出し、(算出された距離<距離B)の条件が満たされたとき、低速エミュレーションを実施する区間と判定する。ここでは、距離Bは、例えば「干渉」が生じる可能性がある距離であって、例えば予め設定された値である。
【0164】
なお、(算出された距離<距離B)の条件が満たされたとき、描画データ生成部19は表示制御部15を介して図20のポリゴン384をディスプレイ38に表示させて、「干渉」の可能性を報知してもよい。
【0165】
また、周期生成部18は、ロボット300とステージ400の3次元仮想空間における相対的な位置関係の条件は、例えば、「ピック&プレース動作」における、「干渉」が生じやすいピックまたはプレースの前後の動作における3次元仮想空間における相対的な位置関係の条件を含んでもよい。例えば、図20(B)ではロボット300の軌跡211における部分213は、この「ピック&プレース動作」の部分の一例であり、この部分213において低速エミュレーションが実施される。
【0166】
また、低速エミュレーションを実施する部分はユーザが指定してもよい。図20(C)のディスプレイ38の画面は、エミュレーションによるロボット300およびステージ400の動きの描画と、ダイアログボックスとを含む。ダイアログボックスは、図16と同様のアイコン38A、38B、38Cおよび38Dを含む。
【0167】
ユーザはアイコン38Dのプルダウンメニューを操作して1/N倍演算指令の「1/N」の値を指定する。図20(C)では、例えば1/N=0.5と指定されている。周期生成部18は、アイコン38Dで1未満の値が設定されたとき、以降は低速エミュレーションを開始すると判定してよい。
【0168】
このように低速エミュレーションを、例えば、「ピック&プレース動作」におけるピックまたはプレースの前後の動作等のように、「干渉」が発生する可能性の高い部分に指定して実施することにより、ユーザは描画された動きから「干渉」の有無、または「干渉」の程度、または干渉の前後の動きを容易に把握することができる。
【0169】
<K.高速エミュレーションと低速エミュレーションの組合せ>
本実施の形態では、エミュレーションを、高速エミュレーションと低速エミュレーションの組合せにより実施することが可能である。具体的には、プログラム実行部31は、高速エミュレーションと低速エミュレーションを切替えながら実施することが可能である。
【0170】
図21は、本実施の形態に係る高速エミュレーションと低速エミュレーションを実施する部分を指定する方法の一例を説明する図である。当該部分の指定の方法は、例えば、ロボット300およびステージ400の3次元仮想空間における相対的な位置関係が予め定められた条件を満たすことに基づく指定方法を含む。例えば、座標P(x,y,z)と座標Q(x,y,0)とから算出されるロボット300とステージ400の間の3次元仮想空間における距離に基づく指定の方法を用いることができる。
【0171】
図21(A)のディスプレイ38の画面では、ユーザはエミュレーションの対象となるロボット300とステージ400を指定するとともに、ダイアログボックスにおいて、高速エミュレーションの実施条件(距離>距離A1)と、低速エミュレーションの実施条件(距離<距離B1)とにおける距離A1と距離B1の値を指定する。
【0172】
エミュレーションを実施中に、周期生成部18は座標P(x,y,z)と座標Q(x,y,0)から距離を算出し、(算出された距離>距離A1)の条件が満たされると判定するときは、図21(B)のように高速エミュレーションのためのN倍演算指令を出力し、算出された距離が(距離B1≦算出された距離≦距離A1)の条件が満たされると判定するときは、図21(C)のように等倍演算指令を出力し、(算出された距離<距離B1)の条件が満たされると判定するときは、図21(D)または図21(E)のように、低速エミュレーションのための1/N倍演算指令を出力する。
【0173】
図21(D)は、例えば低速エミュレーションを実施中に「干渉」が検出されたケースを示す。ユーザは、低速エミュレーションの実施中であれば、「干渉」が検出された前後のロボット300またはステージ400の動き(例えば、図21(E)の動き)を、ゆっくりとした描画により細かに把握することができる。なお、図21(D)のように「干渉」が検出されたときは、プログラム実行部31はPLCエミュレータ260およびロボットエミュレータ270の実行を停止するとしてもよい。または、「干渉」が検出されたときは、ユーザは、エミュレーションの停止指令を入力し、この停止指令がプログラム実行部31に与えられるとしてもよい。
【0174】
<L.エミュレーションのための詳細設定>
図22は、本実施の形態に係るエミュレーションの動作モードを指定するためUI(User Interface)画面の一例を示す図である。入力受付部11は、図22のディスプレイ38のUI画面を介したユーザ操作を受付け、受付けた操作内容を制御部10に出力する。制御部10は、ユーザの操作内容に基づきエミュレーションのための動作モードを示すモード指令MCを生成し、周期生成部18に出力する。周期生成部18は、モード指令MCで設定された動作モードに従う演算指令をプログラム実行部31に出力する。
【0175】
図22(A)のダイアログボックスには、上記に述べたアイコン38A~38Dに、アイコン38Fが追加されている。アイコン38Fは、動作モードを詳細に設定するために操作される。
【0176】
ユーザが、アイコン38Fを操作したとき、ディスプレイ38には、図22(B)の画面38Gが表示される。画面38Gは、動作モードの詳細な設定のためのユーザ操作を受付けるための画面の一例である。画面38Gは、例えば、高速エミュレーションの動作モードを設定するための領域G1、および低速エミュレーションの動作モードを設定するための領域G2、および領域G3を含む。領域G3においては、例えば、高速エミュレーションと低速エミュレーションを組合せて実施する場合に、エミュレーションを切替えるための動作モードを設定することができる。
【0177】
領域G1では、設定可能な動作モードは、例えば高速エミュレーションを等速区間において実施するか否かの設定を含むが、設定可能なモードはこれに限定されない。
【0178】
領域G2では、設定可能な動作モードは、例えば上記に述べた(算出された距離<距離B)の条件が満たされたとき低速エミュレートされるべきオブジェクト(例えば、ロボット300とステージ400)の組の設定PR1、および距離Bの設定PR2を含む。また、「ピック&プレース動作」に関する設定PR3を含み得る。設定PR3は、ピックまたはプレースの前後の動作時に低速エミュレーションが実施されるべき部分に対応した移動量を示す。例えば、設定PR3として、例えば、ロボット300の軌跡211におけるピックまたはプレースを含んだ前後の部分を、軌跡上の移動距離とすることが可能である。
【0179】
領域G3では、設定可能な動作モードは、例えば、高速エミュレーションと低速エミュレーションが組合せて実施されるべきオブジェクト(例えば、ロボット300とステージ400)の組の設定PR4、上記に述べた距離A1と距離B1の設定PR21と設定PR22を含む。また、設定可能な動作モードは、例えば、低速エミュレーションの速度および高速エミュレーションの速度、すなわちN倍演算指令および1/N倍演算指令の値「N」の設定PR41およびPR42を含む。
【0180】
これにより、図22の画面における各種設定内容は、周期生成部18による演算指令に含まれてプログラム実行部31に出力される。したがって、PLCエミュレータ260およびロボットエミュレータ270は、N倍演算指令に従い高速エミュレーションを実施するときは、領域G1の設定に従うエミュレーションを実施し、1/N倍演算指令に従い低速エミュレーションを実施するときは、領域G2の設定に従うエミュレーションを実施する。また、高速エミュレーションと低速エミュレーションを組合せて実施するときは、領域G3の設定に従うエミュレーションを実施する。
【0181】
<M.コンピュータプログラム>
図1には、情報処理装置100のCPU2がプログラムを実行すること提供される構成を例示したが、これらの提供される構成の一部または全部を、専用のハードウェア回路(たとえば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、情報処理装置100の主要部を、汎用的なアーキテクチャに従うハードウェアを用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0182】
また、情報処理装置100は、CPU2のようなプロセッサを複数個備えてもよい。この場合は、図1に示す各部は、複数のプロセッサにより実行することが可能である。また、CPU2が複数のコアを含む場合は、図1に示す各部は、CPU2内の複数のコアにより実行することが可能である。
【0183】
オフラインシステム20は、CPU2、ROM3、RAM4等を含み、情報処理に応じて各構成要素の制御を行う。各構成要素のプログラムを記憶する記憶部は、例えば、HDD5、ソリッドステートドライブ等の補助記憶装置でありプログラム実行部31で実行されるPLCエミュレータ260およびロボットエミュレータ270、仮想時刻生成プログラム29、3D視覚化プログラム30、シミュレーション制御プログラム21等を記憶する。
【0184】
記憶媒体92は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。情報処理装置100のCPU2は、この記憶媒体92から、上記に述べたプログラムを取得してもよい。
【0185】
<N.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
情報処理装置(100)であって、
第1目標軌跡を移動する第1制御対象(400)を駆動するための第1駆動機器(14)の挙動を推定する第1エミュレータ(260)と、
第2目標軌跡を移動する第2制御対象(300)を駆動するための第2駆動機器(14)の挙動を推定する第2エミュレータ(270)と、
前記第1制御対象の動きおよび前記第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データ(301:401)を生成する視覚化モジュール(30)と、を備え、
前記第1エミュレータは、前記情報処理装置からの演算指令(280)に従い、前記第1駆動機器を制御周期毎に制御する第1指令値(V1)を演算し、
前記第2エミュレータは、前記演算指令に従い、前記第2駆動機器を前記制御周期毎に制御する第2指令値(V2)を演算し、
前記視覚化モジュールは、前記第1指令値および前記第2指令値を用いて前記描画データを生成し、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理装置。
[構成2]
前記演算指令は、
前記制御周期ごとの移動量が、予め定められた単位移動量と等しくとなるような指令値の算出を指示する等倍演算指令を含む、構成1に記載の情報処理装置。
[構成3]
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量のN倍(ただし、N>1)となるような指令値の算出を指示するN倍演算指令を含む、構成2に記載の情報処理装置。
[構成4]
前記移動量可変指令は、
前記制御周期ごとの移動量が、前記単位移動量の1/N倍(ただし、N>1)となるような指令値の算出を指示する1/N倍演算指令を含む、構成2または3に記載の情報処理装置。
[構成5]
前記情報処理装置は、
前記第1指令値の制御周期間の第1変化量(DV1)および前記第2指令値の制御周期間の第2変化量(DV2)を検出し、
前記第1目標軌跡および前記第2目標軌跡におけるエミュレーション開始時からの共通した経過時間に対応した区間であって、前記第1変化量および前記第2変化量の両方が閾値以下である区間(410;411)において、前記N倍演算指令を出力する、構成3に記載の情報処理装置。
[構成6]
前記描画データは、前記第1制御対象および前記第2制御対象の前記3次元仮想空間における位置を示すデータ(251;252)を含み、
前記情報処理装置は、
前記第1制御対象および前記第2制御対象の前記3次元仮想空間における相対的な位置関係が予め定められた条件を満たすとき、前記移動量可変指令を出力する、構成1から5のいずれかに記載の情報処理装置。
[構成7]
前記情報処理装置は、
当該情報処理装置に対するユーザの入力を受付ける受付部(11)を備え、
前記受付部により受付けた入力に従い、前記移動量可変指令を出力する、構成1から6のいずれかに記載の情報処理装置。
[構成8]
前記情報処理装置は、
前記第1指令値の制御周期間の第1変化量(DV1)および前記第2指令値の制御周期間の第2変化量(DV2)を検出し、
前記第1変化量または前記第2変化量が変化量閾値を超えるとき、警告(382)を出力する、構成1から7のいずれかに記載の情報処理装置。
[構成9]
前記描画データは、前記第1制御対象および前記第2制御対象の前記3次元仮想空間における位置を示すデータ(251;252)を含み、
前記情報処理装置は、
前記第1制御対象の前記3次元仮想空間における位置に基づく移動距離の制御周期間の変化量、または前記第2制御対象の前記3次元仮想空間における位置に基づく移動距離の制御周期間の変化量が距離位置を超えるとき、警告(382)を出力する、構成1から8のいずれかに記載の情報処理装置。
[構成10]
可変の仮想時刻を出力するタイマー(18)をさらに、備え、
前記制御周期は、前記仮想時刻を尺度とする周期を示す、構成1から9のいずれかに記載の情報処理装置。
[構成11]
情報処理装置が実施する処理方法であって、
第1目標軌跡を移動する第1制御対象(400)を駆動するための第1駆動機器(14)の挙動を推定するステップ(40;41;42;43)と、
第2目標軌跡を移動する第2制御対象を駆動するための第2駆動機器の挙動を推定するステップ(40;41;42;43)と、
前記第1制御対象の動きおよび前記第2制御対象の動きを、同じ3次元仮想空間に視覚化して描画する描画データを生成するステップ(50;51;52;53)と、を備え、
前記第1駆動機器の挙動を推定するステップでは、前記情報処理装置からの演算指令に従い、前記第1駆動機器を制御周期毎に制御する第1指令値を演算し(S1;S13;S13a)、
前記第2駆動機器の挙動を推定するステップでは、前記演算指令に従い、前記第2駆動機器を前記制御周期毎に制御する第2指令値を演算し(S1;S13;S13a)、
前記描画データを生成するステップでは、前記第1指令値および前記第2指令値を用いて前記描画データを生成し(S4)、
前記演算指令は、前記移動における制御周期ごとの移動量が可変となるような指令値の算出を指示する移動量可変指令を含む、情報処理方法。
[構成12]
構成11に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【0186】
<O.利点>
以上のように、本実施の形態によれば、エミュレーションにおいては、演算指令として、等倍演算指令、N倍演算指令および1/N倍演算指令のいずれかによる指令値V1,V2の算出が可能である。N倍演算指令の場合は、等倍演算指令によるN回の演算で算出された移動量となるような指令値V1,V2を、1回の演算で算出する、すなわち(N-1)回の演算を省略できる。したがって、演算回数が削減されることで、エミュレーションを実施する場合の情報処理装置100にかかる処理の負荷を軽減できる。また、ディスプレイ38においてロボット300とステージ400の動きを高速に描画することができて、いわゆる動きの早送りが可能となる。
【0187】
1/N倍演算指令の場合は、例えば、等倍演算指令とsleep指令との組合せを含み得る。これにより、N個の制御周期のうち1の制御周期だけ演算を実施して、他の制御周期は、sleep指令により演算を停止することができるので、指令値V1,V2の算出に係る情報処理装置100にかかる処理の負荷を軽減することができる。また、描画周期においては、等倍演算指令の場合に比較して、1/N倍の遅い速度でロボット300とステージ400の動きを描画することができて、所謂スロー再生のように、ユーザは、ロボット300またはステージ400の詳細な動きを確認することができる。
【0188】
今回開示された本実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0189】
1 オンライン制御システム、11 入力受付部、12A 共有メモリ、13,13E,13F サーボドライバ、14,14A,14B,14C,14D,14E,14F サーボモータ、15 表示制御部、18 周期生成部、19 描画データ生成部、20 オフラインシステム、21 シミュレーション制御プログラム、29 仮想時刻生成プログラム、30 視覚化プログラム、31 プログラム実行部、32 プログラムエディタ、33 ロボットプログラムエディタ、34 プログラム編集部、36 演算指令部、37 キーボード、38 ディスプレイ、38A,38D,38F アイコン、38E 時間、38G 画面、39 ディスプレイドライバ、40,41,42,43 指令値演算処理、50,51,52,53 描画更新処理、92 記憶媒体、100 情報処理装置、144 入力データ、145 出力データ、200 コントローラ、210,211,212,311 軌跡、213,231 部分、251,252 軌跡データ、253,254 画像データ、260 PLCエミュレータ、270 ロボットエミュレータ、271 軌跡演算命令、272 機構演算命令、280 演算指令、300 ロボット、301,401 描画データ、303 軌跡計算プログラム、310 ロボットコントローラ、371 PLCプログラム、371A,381A 命令群、381 ロボットプログラム、382 警告メッセージ、383 メッセージ、384 ポリゴン、400 ステージ、410,411 等速区間、V1,V2 指令値。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22