(57)【要約】【課題】仮想ロボット制御装置が第１動作を行うタイミングと、ロボット制御装置が第２動作を行うタイミングとのずれを抑制することができるロボット制御装置を提供すること。【解決手段】仮想空間上における仮想ロボット制御装置の動作のシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御するロボット制御装置であって、前記シミュレーション装置が行うシミュレーションでは、前記仮想ロボット制御装置が所定の第１動作を行う時間と、前記仮想ロボット制御装置に対応する前記ロボット制御装置が前記第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満である、ロボット制御装置。【選択図】図３
2017170593.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間上における仮想ロボット制御装置の動作のシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御するロボット制御装置であって、
前記シミュレーション装置が行うシミュレーションでは、
前記仮想ロボット制御装置が所定の第１動作を行う時間と、前記仮想ロボット制御装置に対応する前記ロボット制御装置が前記第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満である、
ロボット制御装置。
【請求項２】
前記第１動作は、前記シミュレーション装置に接続された周辺機器からの情報の取得であり、前記第２動作は、前記ロボット制御装置に接続された前記周辺機器からの当該情報の取得である、
請求項１に記載のロボット制御装置。
【請求項３】
前記仮想ロボット制御装置は、前記第１動作によって取得した前記周辺機器からの情報に基づいて仮想ロボットを制御する、
請求項２に記載のロボット制御装置。
【請求項４】
前記第１動作は、前記シミュレーション装置に接続された周辺機器への情報の出力であり、前記第２動作は、前記ロボット制御装置に接続された前記周辺機器への当該情報の出力である、
請求項１から３のうちいずれか一項に記載のロボット制御装置。
【請求項５】
前記シミュレーション装置は、取得したクロック数に基づく数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時する、
請求項１から４のうちいずれか一項に記載のロボット制御装置。
【請求項６】
前記所定時間は、１ミリ秒以下である、
請求項５に記載のロボット制御装置。
【請求項７】
前記所定時間は、０．５ミリ秒以下である、
請求項５又は６に記載のロボット制御装置。
【請求項８】
前記所定時間は、０．１ミリ秒以下である、
請求項５から７のうちいずれか一項に記載のロボット制御装置。
【請求項９】
請求項１から８のうちいずれか一項に記載のロボット制御装置によって制御される、
ロボット。
【請求項１０】
仮想空間上における仮想ロボット制御装置の動作のシミュレーションを行うシミュレーション装置であって、
前記仮想ロボット制御装置が所定の動作を行う時間と、前記仮想ロボット制御装置に対応する実ロボット制御装置が前記所定の動作を行う時間との差が、１ミリ秒未満である、
シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット制御装置、ロボット、及びシミュレーション装置に関する。
【背景技術】
【０００２】
ロボットを制御するロボット制御装置の動作を仮想的にシミュレートする技術の研究や開発が行われている。
【０００３】
これに関し、仮想ロボットを軌道に沿って動かすロボットシミュレーション装置であって、仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行い、サンプリング時間が割り込み間隔以下となる範囲でサンプリング時間と割り込み間隔との双方を各別に可変するロボットシミュレーション装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１３５８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなロボットシミュレーション装置では、割り込み間隔が他の割り込み処理によって変化する場合があった。その結果、当該ロボットシミュレーション装置において仮想ロボットに所定の作業を行わせる時間と、現実のロボット制御装置によって現実のロボットに当該作業を行わせる時間との間にずれが生じてしまう場合があった。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、仮想空間上における仮想ロボット制御装置の動作のシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御するロボット制御装置であって、前記シミュレーション装置が行うシミュレーションでは、前記仮想ロボット制御装置が所定の第１動作を行う時間と、前記仮想ロボット制御装置に対応する前記ロボット制御装置が前記第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満である、ロボット制御装置である。
この構成により、ロボット制御装置は、仮想ロボット制御装置が所定の第１動作を行う時間と、ロボット制御装置が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、仮想ロボット制御装置が第１動作を行うタイミングと、ロボット制御装置が第２動作を行うタイミングとのずれを抑制することができる。
【０００７】
また、本発明の他の態様は、ロボット制御装置において、前記第１動作は、前記シミュレーション装置に接続された周辺機器からの情報の取得であり、前記第２動作は、前記ロボット制御装置に接続された前記周辺機器からの当該情報の取得である、構成が用いられてもよい。
この構成により、ロボット制御装置は、仮想ロボット制御装置が第１動作としてシミュレーション装置に接続された周辺機器からの情報の取得を行う時間と、ロボット制御装置が第１動作に対応する第２動作としてロボット制御装置に接続された当該周辺機器からの当該情報の取得を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置に接続された周辺機器からの情報の取得を行う時間と、仮想ロボット制御装置がシミュレーション装置に接続された当該周辺機器からの当該情報の取得を行う時間とのずれを抑制することができる。
【０００８】
また、本発明の他の態様は、ロボット制御装置において、前記仮想ロボット制御装置は、前記第１動作によって取得した前記周辺機器からの情報に基づいて仮想ロボットを制御する、構成が用いられてもよい。
この構成により、ロボット制御装置は、仮想ロボット制御装置が第１動作によって取得した周辺機器からの情報に基づいて仮想ロボットを制御するシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、第２動作によって取得した周辺機器からの情報に基づいてロボットを制御する時間と、仮想ロボット制御装置が第１動作によって取得した当該周辺機器からの当該情報に基づいて仮想ロボットを制御する時間とのずれを抑制することができる。
【０００９】
また、本発明の他の態様は、ロボット制御装置において、前記第１動作は、前記シミュレーション装置に接続された周辺機器への情報の出力であり、前記第２動作は、前記ロボット制御装置に接続された前記周辺機器への当該情報の出力である、構成が用いられてもよい。
この構成により、ロボット制御装置は、仮想ロボット制御装置が第１動作としてシミュレーション装置に接続された周辺機器への情報の出力を行う時間と、ロボット制御装置が第１動作に対応する第２動作としてロボット制御装置に接続された当該周辺機器への当該情報の出力を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置に接続された周辺機器への情報の出力を行う時間と、仮想ロボット制御装置がシミュレーション装置に接続された当該周辺機器への当該情報の出力を行う時間とのずれを抑制することができる。
【００１０】
また、本発明の他の態様は、ロボット制御装置において、前記シミュレーション装置は、取得したクロック数に基づく数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時する、構成が用いられてもよい。
この構成により、ロボット制御装置は、取得したクロック数に基づく数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを抑制することができる。
【００１１】
また、本発明の他の態様は、ロボット制御装置において、前記クロック数に基づく前記数は、前回の処理において取得した前記クロック数と、今回の処理において取得した前記クロック数との差分である、構成が用いられてもよい。
この構成により、ロボット制御装置は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分に基づいて、ロボット制御装置が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを抑制することができる。
【００１２】
また、本発明の他の態様は、ロボット制御装置において、前記所定時間は、１ミリ秒以下である、構成が用いられてもよい。
この構成により、ロボット制御装置は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、１ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを１ミリ秒未満に抑制することができる。
【００１３】
また、本発明の他の態様は、ロボット制御装置において、前記所定時間は、０．５ミリ秒以下である、構成が用いられてもよい。
この構成により、ロボット制御装置は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、０．５ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを０．５ミリ秒未満に抑制することができる。
【００１４】
また、本発明の他の態様は、ロボット制御装置において、前記所定時間は、０．１ミリ秒以下である、構成が用いられてもよい。
この構成により、ロボット制御装置は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、０．１ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、ロボット制御装置が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを０．１ミリ秒未満に抑制することができる。
【００１５】
また、本発明の他の態様は、上記に記載のロボット制御装置に制御される、ロボットである。
この構成により、ロボットは、仮想ロボット制御装置が所定の第１動作を行う時間と、ロボット制御装置が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいて制御される。これにより、ロボットは、ロボット制御装置により所定の動作を行わされるタイミングと、仮想ロボット制御装置により仮想ロボットが当該動作を行わされるタイミングとのずれを抑制することができる。
【００１６】
また、本発明の他の態様は、上記に記載のロボット制御装置に制御される、ロボットである。
この構成により、ロボットは、仮想ロボット制御装置が所定の第１動作を行う時間と、ロボット制御装置が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいて制御される。これにより、ロボットは、ロボット制御装置により所定の動作を行わされるタイミングと、仮想ロボット制御装置により仮想ロボットが当該動作を行わされるタイミングとのずれを抑制することができる。
【００１７】
また、本発明の他の態様は、仮想空間上における仮想ロボット制御装置の動作のシミュレーションを行うシミュレーション装置であって、前記仮想ロボット制御装置が所定の動作を行う時間と、前記仮想ロボット制御装置に対応する実ロボット制御装置が前記所定の動作を行う時間との差が、１ミリ秒未満である、シミュレーション装置である。
この構成により、シミュレーション装置は、仮想ロボット制御装置が所定の動作を行う時間と、前記仮想ロボット制御装置に対応する実ロボット制御装置が前記所定の動作を行う時間との差が、１ミリ秒未満であるシミュレーションを行う。これにより、シミュレーション装置は、第２動作を行うタイミングと、ロボット制御装置が第１動作を行うタイミングとのずれを抑制することができる。
【００１８】
以上により、ロボット制御装置は、仮想ロボット制御装置が所定の第１動作を行う時間と、ロボット制御装置が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置は、第１動作を行うタイミングと、仮想ロボット制御装置が第２動作を行うタイミングとのずれを抑制することができる。
また、ロボットは、仮想ロボット制御装置が所定の第１動作を行う時間と、ロボット制御装置が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいて制御される。これにより、ロボットは、ロボット制御装置により所定の動作を行わされるタイミングと、仮想ロボット制御装置により仮想ロボットが当該動作を行わされるタイミングとのずれを抑制することができる。
また、シミュレーション装置は、仮想ロボット制御装置が所定の動作を行う時間と、前記仮想ロボット制御装置に対応する実ロボット制御装置が前記所定の動作を行う時間との差が、１ミリ秒未満であるシミュレーションを行う。これにより、シミュレーション装置は、仮想ロボット制御装置が第２動作を行うタイミングと、ロボット制御装置が第１動作を行うタイミングとのずれを抑制することができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】シミュレーション装置４０及びロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】シミュレーション装置４０及びロボット制御装置３０の機能構成の一例を示す図である。
【図４】シミュレーション装置４０が経過時間を計時する処理の流れの一例を示すフローチャートである。
【図５】シミュレーション装置４０がシミュレーションを行う処理の流れの一例を示すフローチャートである。
【図６】シミュレーション装置４０のシミュレーション結果をロボット制御装置３０が取得する処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。
【００２１】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、ロボット２０と、周辺装置２５と、ロボット制御装置３０と、シミュレーション装置４０を備える。
【００２２】
ロボット２０は、アームＡと、アームＡを支持する支持台Ｂを備える単腕ロボットである。単腕ロボットは、この一例におけるアームＡのような１本のアーム（腕）を備えるロボットである。なお、ロボット２０は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、２本以上のアーム（例えば、２本以上のアームＡ）を備えるロボットである。なお、複腕ロボットのうち、２本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット２０は、２本のアームを備える双腕ロボットであってもよく、３本以上のアーム（例えば、３本以上のアームＡ）を備える複腕ロボットであってもよい。また、ロボット２０は、スカラロボットや、直角座標ロボット等の他のロボットであってもよい。直角座標ロボットは、例えば、ガントリロボットである。
【００２３】
アームＡは、エンドエフェクターＥと、マニピュレーターＭを備える。
エンドエフェクターＥは、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、エンドエフェクターＥは、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
【００２４】
エンドエフェクターＥは、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、エンドエフェクターＥは、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、エンドエフェクターＥは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２５】
マニピュレーターＭは、６つの関節を備える。また、当該６つの関節のそれぞれは、図示しないアクチュエーターを備える。すなわち、マニピュレーターＭを備えるアームＡは、６軸垂直多関節型のアームである。アームＡは、支持台Ｂと、エンドエフェクターＥと、マニピュレーターＭと、マニピュレーターＭが備える６つの関節それぞれのアクチュエーターとによる連携した動作によって６軸の自由度の動作を行う。なお、アームＡは、５軸以下の自由度で動作する構成であってもよく、７軸以上の自由度で動作する構成であってもよい。
【００２６】
マニピュレーターＭが備える６つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、マニピュレーターＭを動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、マニピュレーターＭが備える６つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２７】
周辺装置２５とシミュレーション装置４０は、ケーブルによって互いに通信可能に接続されている。また、シミュレーション装置４０とロボット制御装置３０は、ケーブルによって互いに通信可能に接続されている。また、ロボット制御装置３０と周辺装置２５は、ケーブルによって互いに通信可能に接続されている。これらのケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、周辺装置２５は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってシミュレーション装置４０と接続される構成であってもよい。また、シミュレーション装置４０は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。また、ロボット制御装置３０は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって周辺装置２５と接続される構成であってもよい。
【００２８】
周辺装置２５は、ロボット制御装置３０との間で情報の送受信を行う装置である。例えば、周辺装置２５は、周辺装置２５が設置された位置における温度を検出する温度センサーや、エンドエフェクターＥに加えられた外力を検出する力センサー等のセンサーである。なお、周辺装置２５は、操作パネルやティーチングペンダント等のロボット制御装置３０との間で情報の送受信を行う装置であれば他の装置であってもよい。以下では、一例として、周辺装置２５が温度センサーである場合について説明する。
【００２９】
周辺装置２５は、周辺装置２５が検出した温度を示す温度情報の取得の要求を示す取得要求情報をロボット制御装置３０から取得する。周辺装置２５は、取得した当該取得要求情報に基づいて当該温度情報をロボット制御装置３０に出力する。また、周辺装置２５は、当該温度要求情報を、シミュレーション装置４０の記憶領域内に仮想的に生成された仮想ロボット制御装置ＶＣから取得する。周辺装置２５は、取得した当該取得要求情報に基づいて当該温度情報を仮想ロボット制御装置ＶＣ、すなわちシミュレーション装置４０に出力する。
【００３０】
シミュレーション装置４０は、例えば、ワークステーションやデスクトップＰＣ（Personal  Computer）、ノートＰＣ、タブレットＰＣ、多機能携帯電話端末（スマートフォン）、通信機能付きの電子書籍リーダー、ＰＤＡ（Personal  Digital  Assistant）等の情報処理装置である。
【００３１】
シミュレーション装置４０は、ユーザーから受け付けた操作に基づいて、仮想空間ＶＳ上における仮想ロボット制御装置ＶＣの動作のシミュレーションを行う。仮想空間ＶＳは、シミュレーション装置４０がシミュレーション装置４０の記憶領域内に生成した仮想的な空間のことである。シミュレーション装置４０は、当該シミュレーションにおいて、仮想空間ＶＳ上における仮想ロボットＶＲを仮想ロボット制御装置ＶＣに制御（動作）させる。仮想ロボットＶＲは、ロボット２０に対応する仮想ロボットである。仮想空間ＶＳ上において動作する仮想ロボット制御装置ＶＣは、ユーザーにより予め入力された動作プログラムに基づいて、仮想ロボットＶＲを動作させる制御信号を生成する。仮想ロボット制御装置ＶＣは、生成した制御信号を仮想ロボットＶＲに出力し、仮想ロボットＶＲに所定の作業を行わせる。
【００３２】
仮想ロボット制御装置ＶＣは、仮想ロボットＶＲに所定の作業を行わせる際、所定の第１動作を行う。第１動作は、この一例において、前述の動作プログラムに基づいて取得要求情報を周辺装置２５に出力し、出力した取得要求情報に対する周辺装置２５からの応答である温度情報を取得する動作である。なお、第１動作は、これに代えて、他の動作であってもよい。また、仮想ロボット制御装置ＶＣは、第１動作によって取得した温度情報に基づいて仮想ロボットＶＲを制御する。例えば、仮想ロボット制御装置ＶＣは、第１動作によって取得した温度情報が示す温度が所定閾値以上であった場合、仮想ロボットＶＲの動作を停止させる。なお、仮想ロボット制御装置ＶＣは、温度情報が示す温度に基づく他の動作を仮想ロボットＶＲに行わせる構成であってもよい。当該取得要求情報は、仮想ロボット制御装置ＶＣが第１動作によって周辺装置２５へ出力する情報の一例である。また、当該温度情報は、仮想ロボット制御装置ＶＣが第１動作によって周辺装置２５から取得する情報の一例である。
【００３３】
ロボット制御装置３０は、この一例において、ロボットコントローラーである。また、ロボット制御装置３０は、仮想ロボット制御装置ＶＣに対応する実ロボット制御装置である。ロボット制御装置３０は、シミュレーション装置４０のシミュレーション結果に基づいてロボット２０を制御する。具体的には、ロボット制御装置３０は、当該シミュレーション結果としてシミュレーション装置４０から取得した動作プログラムに基づいて、ロボット２０を動作させる制御信号を生成する。ロボット制御装置３０は、生成した制御信号をロボット２０に出力し、ロボット２０に所定の作業を行わせる。
【００３４】
ロボット制御装置３０は、ロボット２０に所定の作業を行わせる際、前述の第１動作に対応する第２動作を行う。第２動作は、この一例において、前述の動作プログラムに基づいて取得要求情報を周辺装置２５に出力し、出力した取得要求情報に対する周辺装置２５からの応答である温度情報を取得する動作である。なお、第２動作は、これに代えて、第１動作に対応する動作であれば他の動作であってもよい。また、ロボット制御装置３０は、第２動作によって取得した温度情報に基づいてロボット２０を制御する。例えば、ロボット制御装置３０は、第２動作によって取得した温度情報が示す温度が所定閾値以上であった場合、ロボット２０の動作を停止させる。なお、ロボット制御装置３０は、温度情報が示す温度に基づく他の動作をロボット２０に行わせる構成であってもよい。当該取得要求情報は、ロボット制御装置３０が第２動作によって周辺装置２５へ出力する情報の一例である。また、当該温度情報は、ロボット制御装置３０が第２動作によって周辺装置２５から取得する情報の一例である。
【００３５】
＜シミュレーション装置が行う処理の概要＞
以下、シミュレーション装置４０が行う処理の概要について説明する。
シミュレーション装置４０は、リアルタイムＯＳ（Operating  System）がインストールされたシミュレーション専用の装置ではなく、汎用的なマルチタスク機能を有するＯＳがインストールされた情報処理装置である。このため、シミュレーション装置４０は、所定時間が経過する毎に所定処理を割り込みによって実行させようとしても、所定処理よりも優先度が高い他の処理が先に実行されてしまい、所定時間より長い時間が経過してから所定処理が実行される場合がある。
【００３６】
これに対し、ロボット制御装置３０は、専用のＯＳがインストールされており、所定時間が経過する毎に所定処理を実行する。前述したように、所定時間よりも長い時間が経過してからシミュレーション装置４０が所定処理を実行する場合、シミュレーション装置４０によるシミュレーションにおいて仮想ロボット制御装置ＶＣが第１動作を行う時間と、ロボット制御装置３０が当該第１動作に対応する第２動作を行う時間との間にずれが生じてしまう。その結果、シミュレーション装置４０は、シミュレーションによって仮想ロボット制御装置ＶＣにロボット制御装置３０と同様の動作を行わせることができない場合がある。
【００３７】
そこで、シミュレーション装置４０は、ＣＰＵ４１が備えるカウンターがカウントしたクロック数を当該カウンターから取得する。図１において図示しないＣＰＵ４１については、後述する。クロック数は、ＣＰＵ３１を動作させるクロック信号のパルスの数のことである。シミュレーション装置４０は、取得したクロック数に基づく数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時する。
【００３８】
具体的には、シミュレーション装置４０は、あるタイミングにおいて取得したクロック数（前回の処理において取得したクロック数の一例）と、当該タイミングの次のタイミングにおいて取得したクロック数（今回の処理において取得したクロック数の一例）との差分を、当該所定クロック数によって除算した際の商と余りに基づいて経過時間を計時する。そして、シミュレーション装置４０は、計時した当該経過時間に応じて所定処理を所定時間が経過する毎に実行する。これにより、シミュレーション装置４０は、所定時間が経過する毎に所定処理を実行することができる。以下では、一例として、所定時間が１ミリ秒である場合について説明する。なお、所定時間は、これに代えて、０．５ミリ秒や０．１ミリ秒等の１ミリ秒未満の時間であってもよい。
【００３９】
このような計時方法により、シミュレーション装置４０は、仮想ロボット制御装置ＶＣが前述の第１動作を行う時間と、仮想ロボット制御装置ＶＣに対応する実ロボット制御装置であるロボット制御装置３０が前述の第２動作を行う時間との差が、１ミリ秒未満であるシミュレーションを行う。その結果、シミュレーション装置４０は、仮想ロボット制御装置ＶＣが第１動作を行う時間と、ロボット制御装置３０が第２動作を行う時間とのずれを抑制することができる。
以下では、シミュレーション装置４０が経過時間を計時する処理について詳しく説明する。
【００４０】
＜シミュレーション装置及びロボット制御装置のハードウェア構成＞
以下、図２を参照し、シミュレーション装置４０及びロボット制御装置３０のハードウェア構成について説明する。図２は、シミュレーション装置４０及びロボット制御装置３０のハードウェア構成の一例を示す図である。図２は、シミュレーション装置４０のハードウェア構成（図２における４０番台の符号が付された機能部）と、ロボット制御装置３０のハードウェア構成（図２における３０番台の符号が付された機能部）とを便宜的に重ねて示した図である。
【００４１】
シミュレーション装置４０は、例えば、ＣＰＵ（Central  Processing  Unit）４１と、記憶部４２と、入力受付部４３と、通信部４４と、表示部４５を備える。また、シミュレーション装置４０は、通信部４４を介して周辺装置２５とロボット制御装置３０とのそれぞれと通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。
【００４２】
ＣＰＵ４１は、記憶部４２に格納された各種プログラムを実行する。また、ＣＰＵ４１は、前述の図示しないカウンターを備える。
記憶部４２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部４２は、シミュレーション装置４０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部４２は、シミュレーション装置４０が処理する各種情報や画像、動作プログラムを含む各種のプログラム等を格納する。
【００４３】
入力受付部４３は、例えば、表示部４５と一体に構成されたタッチパネルである。なお、入力受付部４３は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部４４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部４５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００４４】
ロボット制御装置３０は、例えば、ＣＰＵ３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。また、ロボット制御装置３０は、通信部３４を介してロボット２０と周辺装置２５とのそれぞれと通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。
【００４５】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤやＳＳＤ、ＥＥＰＲＯＭ、ＲＯＭ、ＲＡＭ等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報や画像、動作プログラムを含む各種のプログラム等を格納する。
【００４６】
入力受付部３３は、例えば、表示部３５と一体に構成されたタッチパネルである。なお、入力受付部３３は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬディスプレイパネルである。
【００４７】
＜シミュレーション装置及びロボット制御装置の機能構成＞
以下、図３を参照し、シミュレーション装置４０及びロボット制御装置３０の機能構成について説明する。図３は、シミュレーション装置４０及びロボット制御装置３０の機能構成の一例を示す図である。
【００４８】
シミュレーション装置４０は、記憶部４２と、入力受付部４３と、表示部４５と、制御部４６を備える。
【００４９】
制御部４６は、シミュレーション装置４０の全体を制御する。制御部４６は、表示制御部４６１と、シミュレーション部４６３と、クロック数取得部４６５と、計時部４６７を備える。制御部４６が備えるこれらの機能部は、例えば、ＣＰＵ４１が、記憶部４２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００５０】
表示制御部４６１は、ユーザーから受け付けた操作に基づいて各種の画面を生成する。表示制御部４６１は、生成した各種の画面を表示部４５に表示させる。
シミュレーション部４６３は、記憶部４２の記憶領域内に仮想空間ＶＳを生成する。また、シミュレーション部４６３は、生成した仮想空間ＶＳ上に仮想ロボットＶＲ及び仮想ロボット制御装置ＶＣを生成する。シミュレーション装置４０は、ユーザーから受け付けた操作に基づいて、仮想ロボット制御装置ＶＣを動作させ、仮想空間ＶＳ上において仮想ロボットＶＲを動作させる。すなわち、シミュレーション部４６３は、仮想空間ＶＳ上における仮想ロボット制御装置ＶＣの動作のシミュレーションを行う。また、シミュレーション部４６３が仮想ロボット制御装置ＶＣの動作のシミュレーションを行う際、シミュレーション部４６３は、計時部４６７が計時した経過時間に基づいて当該シミュレーションを行う。
クロック数取得部４６５は、ＣＰＵ４１が備えるカウンターからクロック数を取得する。
計時部４６７は、クロック数取得部４６５が取得したクロック数に基づいて経過時間を計時する。
【００５１】
ロボット制御装置３０は、記憶部３２と、入力受付部３３と、表示部３５と、制御部３６を備える。
【００５２】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、通信制御部３６１と、記憶制御部３６３と、ロボット制御部３６５を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩやＡＳＩＣ等のハードウェア機能部であってもよい。
【００５３】
通信制御部３６１は、周辺装置２５に情報を出力する。また、通信制御部３６１は、周辺装置２５から情報を取得する。この一例において、通信制御部３６１は、周辺装置２５に取得要求情報を出力する。また、通信制御部３６１は、出力した取得要求情報に対する周辺装置２５からの応答である温度情報を取得する。
記憶制御部３６３は、シミュレーション部４６３から出力された動作プログラムを示す情報を取得する。記憶制御部３６３は、取得した情報が示す動作プログラムを記憶部３２に記憶させる。
ロボット制御部３６５は、ユーザーから受け付けた操作に応じて、記憶部３２に記憶された動作プログラムに基づいてロボット２０を制御する（動作させる）。
【００５４】
＜シミュレーション装置が経過時間を計時する処理＞
以下、図４を参照し、シミュレーション装置４０が経過時間を計時する処理について説明する。図４は、シミュレーション装置４０が経過時間を計時する処理の流れの一例を示すフローチャートである。なお、図４に示したフローチャートでは、シミュレーション装置４０が、図４に示したフローチャートの処理が開始される前に、すでに記憶部４２の記憶領域内に仮想空間ＶＳを生成し、生成した仮想空間ＶＳ上に仮想ロボットＶＲと仮想ロボット制御装置ＶＣとを生成している場合について説明する。また、以下では、シミュレーション装置４０が、初期値として０が格納された変数であって数を格納可能な３つの変数である第１変数、第２変数、第３変数のそれぞれを予め生成している場合について説明する。
【００５５】
仮想空間ＶＳ上における仮想ロボット制御装置ＶＣの動作を開始させる操作をユーザーから受け付けた後、シミュレーション部４６３は、図示しないＯＳが計時した時刻を取得する。そして、シミュレーション部４６３と、クロック数取得部４６５と、計時部４６７とは、シミュレーション部４６３が取得した当該時刻に基づいて所定時間が経過したとシミュレーション部４６３が判定する毎に、ステップＳ１２０〜ステップＳ２２０の処理を繰り返し行う（ステップＳ１１０）。
【００５６】
ここで、図示しないＯＳが計時した時刻は、割り込み処理によって遅延する場合がある。このため、ステップＳ１２０〜ステップＳ２２０の処理は、必ずしも現実の所定時間が経過する毎に行われるわけではなく、シミュレーション部４６３が当該時刻に基づいて所定時間が経過したと判定する毎に、シミュレーション部４６３と、クロック数取得部４６５と、計時部４６７とによって実行される。なお、所定時間は、前述した通り、この一例において、１ミリ秒である。
【００５７】
ステップＳ１１０において所定時間が経過したとシミュレーション部４６３が判定した後、クロック数取得部４６５は、ＣＰＵ４１が備えるカウンターからクロック数を取得する（ステップＳ１２０）。次に、クロック数取得部４６５は、仮想ロボット制御装置ＶＣの動作を開始させる操作を受け付けてからステップＳ１２０の処理が２回以上実行されたか否かを判定する（ステップＳ１３０）。
【００５８】
仮想ロボット制御装置ＶＣの動作を開始させる操作を受け付けてからステップＳ１２０の処理が２回以上実行されていないと判定した場合（ステップＳ１３０−ＮＯ）、クロック数取得部４６５は、ステップＳ１２０において取得したクロック数を第２変数に格納する（ステップＳ２２０）。そして、シミュレーション部４６３は、ステップＳ１１０に遷移し、再び所定時間が経過するまで待機する。なお、この一例において、クロック数を第２変数に格納することは、第２変数に格納された数をクロック数に変更することを意味する。
【００５９】
一方、仮想ロボット制御装置ＶＣの動作を開始させる操作を受け付けてからステップＳ１２０の処理が２回以上実行されたと判定した場合（ステップＳ１３０−ＹＥＳ）、クロック数取得部４６５は、ステップＳ１２０において取得したクロック数を第１変数に格納する（ステップＳ１４０）。なお、この一例において、クロック数を第１変数に格納することは、第１変数に格納された数をクロック数に変更することを意味する。
【００６０】
ステップＳ１４０の処理が実行された後、計時部４６７は、第１変数に格納された数と第２変数に格納された数との差分を算出する（ステップＳ１５０）。次に、計時部４６７は、ステップＳ１５０において算出した当該差分を第３変数に格納する（ステップＳ１６０）。なお、この一例において、当該差分を第３変数に格納することは、第３変数に格納された数を当該差分に変更することを意味する。
【００６１】
次に、計時部４６７は、第３変数に格納された数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りを算出する（ステップＳ１７０）。この一例において、所定クロック数は、所定時間と、図示しないＣＰＵ４１のクロック周波数とに応じて決まる値である。例えば、所定クロック数は、所定時間が１ミリ秒であり、当該クロック周波数が１ギガヘルツである場合、１０６である。
【００６２】
次に、計時部４６７は、ステップＳ１７０において算出した余りを、第３変数に加算する（ステップＳ１８０）。なお、この一例において、当該余りを第３変数に加算することは、第３変数に格納された数に当該余りを加算した数を改めて第３変数に格納し直すことを意味する。
【００６３】
次に、計時部４６７は、ステップＳ１７０において算出した商が１以上か否かを判定する（ステップＳ１９０）。ステップＳ１７０において算出した商が１以上ではないと計時部４６７が判定した場合（ステップＳ１９０−ＮＯ）、クロック数取得部４６５は、ステップＳ２２０に遷移し、ステップＳ１２０において取得したクロック数を第２変数に格納する。一方、ステップＳ１７０において算出した商が１以上であると計時部４６７が判定した場合（ステップＳ１９０−ＹＥＳ）、シミュレーション部４６３は、仮想ロボット制御装置ＶＣに所定時間が経過したと判定させ、仮想ロボット制御装置ＶＣに所定時間が経過した場合の処理を実行させる（ステップＳ２００）。例えば、仮想ロボット制御装置ＶＣが所定時間が経過する毎に第１動作を行う場合、仮想ロボット制御装置ＶＣは、ステップＳ２００の処理が実行される毎に第１動作を行い、周辺装置２５から温度情報を取得する。
【００６４】
次に、計時部４６７は、ステップＳ１７０において算出した商から１を減算する（ステップＳ２１０）。そして、計時部４６７は、ステップＳ１９０に遷移し、ステップＳ２１０において１を減算した当該商が１以上であるか否かを判定する。
【００６５】
以上のように、シミュレーション装置４０は、シミュレーション部４６３が図示しないＯＳから取得した時刻に基づいて所定時間が経過したとシミュレーション部４６３が判定する毎に、ステップＳ１２０〜ステップＳ２２０の処理を繰り返し行う。これにより、例えば、当該ＯＳから取得した時刻に基づいて所定時間よりも長い時間が経過してから所定時間が経過したとシミュレーション部４６３が判定した場合であっても、シミュレーション装置４０は、次にステップＳ１２０〜ステップＳ２２０の処理が実行される際に第３変数に格納されている前述の余りによって、仮想ロボット制御装置ＶＣに所定時間が経過したと判定させるまでの間隔を補正する。その結果、シミュレーション装置４０は、仮想ロボット制御装置ＶＣが第１動作を行う時間と、ロボット制御装置３０が第２動作を行う時間との差を１ミリ秒未満にする。なお、例えば、所定時間が０．５ミリ秒の場合、シミュレーション装置４０は、当該差を０．５ミリ秒未満にする。また、例えば、所定時間が０．１ミリ秒の場合、シミュレーション装置４０は、当該差を０．１ミリ秒未満にする。すなわち、シミュレーション装置４０は、仮想ロボット制御装置が第１動作を行う時間と、ロボット制御装置が第２動作を行う時間とのずれを抑制することができる。
【００６６】
＜シミュレーション装置がシミュレーションを行う処理＞
以下、図５を参照し、シミュレーション装置４０がシミュレーションを行う処理について説明する。図５は、シミュレーション装置４０がシミュレーションを行う処理の流れの一例を示すフローチャートである。
【００６７】
仮想空間ＶＳ上における仮想ロボット制御装置ＶＣの動作を開始させる操作をユーザーから受け付けた後、シミュレーション部４６３は、図４に示したステップＳ２００の処理が実行されたか否かを判定する。すなわち、シミュレーション部４６３は、仮想ロボット制御装置ＶＣに所定時間が経過するまで待機させる（ステップＳ２５０）。シミュレーション部４６３は、所定時間が経過したと判定した場合（ステップＳ２５０−ＹＥＳ）、仮想ロボット制御装置ＶＣは、記憶部４２に予め記憶された動作プログラムに基づいて、所定時間が経過した分だけ仮想ロボット制御装置ＶＣを動作させる（ステップＳ２６０）。例えば、シミュレーション部４６３は、当該動作プログラムに基づいて、仮想ロボット制御装置ＶＣに第１動作を行わせる。
【００６８】
次に、シミュレーション部４６３は、仮想ロボット制御装置ＶＣに動作プログラムが終了したか否かを判定させる（ステップＳ２７０）。仮想ロボット制御装置ＶＣは、例えば、動作プログラムに記載されたすべてのコマンドを仮想ロボット制御装置ＶＣが実行した場合、動作プログラムが終了したと判定する。動作プログラムが終了していないと仮想ロボット制御装置ＶＣが判定した場合（ステップＳ２７０−ＮＯ）、シミュレーション部４６３は、ステップＳ２５０に遷移し、再び図４に示したステップＳ２００の処理が実行されたか否かを判定する。一方、動作プログラムが終了したと仮想ロボット制御装置ＶＣが判定した場合（ステップＳ２７０−ＹＥＳ）、シミュレーション部４６３は、処理を終了する。
【００６９】
このように、シミュレーション装置４０は、図４に示したフローチャートの処理によって計時された所定時間に基づいて、仮想空間ＶＳ上の仮想ロボット制御装置ＶＣを動作させ、仮想ロボット制御装置ＶＣの動作のシミュレーションを行うことができる。これにより、シミュレーション装置４０は、仮想ロボット制御装置ＶＣが第１動作を行う時間と、ロボット制御装置３０が第２動作を行う時間とのずれを抑制することができる。
【００７０】
＜シミュレーション装置のシミュレーション結果をロボット制御装置が取得する処理＞
以下、図６を参照し、シミュレーション装置４０のシミュレーション結果をロボット制御装置３０が取得する処理について説明する。図６は、シミュレーション装置４０のシミュレーション結果をロボット制御装置３０が取得する処理の流れの一例を示すフローチャートである。なお、図６に示したフローチャートでは、シミュレーション装置４０のシミュレーションがすでに終了している場合について説明する。
【００７１】
ユーザーから受け付けた操作に基づいてシミュレーション装置４０が当該シミュレーションのシミュレーション結果をロボット制御装置３０に出力した後、通信制御部３６１は、当該シミュレーション結果をシミュレーション装置４０から取得する（ステップＳ３１０）。当該シミュレーション結果は、この一例において、シミュレーション装置４０がシミュレーションにおいて仮想ロボット制御装置ＶＣを動作させた動作プログラムを示す情報である。なお、シミュレーション結果は、これに代えて、当該シミュレーションにおいて仮想ロボット制御装置ＶＣに設定された設定値（各種の閾値や力制御パラメーター等）等の他の情報であってもよい。次に、記憶制御部３６３は、ステップＳ３１０において通信制御部３６１が取得したシミュレーション結果を記憶部３２に記憶させる（ステップＳ３２０）。
【００７２】
このように、ロボット制御装置３０は、シミュレーション装置４０のシミュレーション結果を記憶する。これにより、ロボット制御装置３０は、シミュレーション装置４０のシミュレーション結果に基づいてロボット２０を制御することができる。例えば、ロボット制御装置３０が備えるロボット制御部３６５は、ユーザーから受け付けた操作に基づいて、記憶部３２に記憶された当該シミュレーション結果である動作プログラムを読み出す。そして、ロボット制御部３６５は、読み出した当該動作プログラムに基づいてロボット２０を制御する。その結果、ロボット制御装置３０は、仮想ロボット制御装置ＶＣが第１動作を行う時間と、ロボット制御装置３０が第２動作を行う時間とのずれを抑制することができる
【００７３】
以上のように、ロボット制御装置３０は、仮想ロボット制御装置（この一例において、仮想ロボット制御装置ＶＣ）が所定の第１動作を行う時間と、ロボット制御装置３０が第１動作に対応する第２動作を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボット（この一例において、ロボット２０）を制御する。これにより、ロボット制御装置３０は、仮想ロボット制御装置が第１動作を行うタイミングと、ロボット制御装置が第２動作を行うタイミングとのずれを抑制することができる。
【００７４】
また、ロボット制御装置３０は、仮想ロボット制御装置が第１動作としてシミュレーション装置に接続された周辺機器（この一例において、周辺装置２５）からの情報の取得を行う時間と、ロボット制御装置３０が第１動作に対応する第２動作としてロボット制御装置に接続された当該周辺機器からの当該情報の取得を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０に接続された周辺機器からの情報の取得を行う時間と、仮想ロボット制御装置がシミュレーション装置に接続された当該周辺機器からの当該情報の取得を行う時間とのずれを抑制することができる。
【００７５】
また、ロボット制御装置３０は、仮想ロボット制御装置が第１動作によって取得した周辺機器からの情報に基づいて仮想ロボットを制御するシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、第２動作によって取得した周辺機器からの情報に基づいてロボットを制御する時間と、仮想ロボット制御装置が第１動作によって取得した当該周辺機器からの当該情報に基づいて仮想ロボットを制御する時間とのずれを抑制することができる。
【００７６】
また、ロボット制御装置３０は、仮想ロボット制御装置が第１動作としてシミュレーション装置に接続された周辺機器への情報の出力を行う時間と、ロボット制御装置が第１動作に対応する第２動作としてロボット制御装置に接続された当該周辺機器への当該情報の出力を行う時間との差が、１ミリ秒未満となるシミュレーションを行うシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０に接続された周辺機器への情報の出力を行う時間と、仮想ロボット制御装置がシミュレーション装置に接続された当該周辺機器への当該情報の出力を行う時間とのずれを抑制することができる。
【００７７】
また、ロボット制御装置３０は、取得したクロック数に基づく数を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを抑制することができる。
【００７８】
また、ロボット制御装置３０は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、所定時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分に基づいて、ロボット制御装置３０が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを抑制することができる。
【００７９】
また、ロボット制御装置３０は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、１ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを１ミリ秒未満に抑制することができる。
【００８０】
また、ロボット制御装置３０は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、０．５ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれを０．５ミリ秒未満に抑制することができる。
【００８１】
また、ロボット制御装置３０は、前回の処理において取得したクロック数と、今回の処理において取得したクロック数との差分を、０．１ミリ秒以下の時間に対応付けられた所定クロック数によって除算した際の商と余りに基づいて経過時間を計時するシミュレーション装置のシミュレーション結果に基づいてロボットを制御する。これにより、ロボット制御装置３０は、ロボット制御装置３０が計時した経過時間と、シミュレーション装置が計時した経過時間とのずれをより確実に０．１ミリ秒未満に抑制することができる。
【００８２】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【００８３】
また、以上に説明した装置（例えば、シミュレーション装置４０やロボット制御装置３０）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００８４】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【００８５】
１…ロボットシステム、２０…ロボット、２５…周辺装置、３０…ロボット制御装置、４０…シミュレーション装置、３１、４１…ＣＰＵ、３２、４２…記憶部、３３、４３…入力受付部、３４、４４…通信部、３５、４５…表示部、３６、４６…制御部、３６１…通信制御部、３６３…記憶制御部、３６５…ロボット制御部、４６１…表示制御部、４６３…シミュレーション部、４６５…クロック数取得部、４６７…計時部
【図１】
2017170593.tif 000003
【図２】
2017170593.tif 000004
【図３】
2017170593.tif 000005
【図４】
2017170593.tif 000006
【図５】
2017170593.tif 000007
【図６】
2017170593.tif 000008