(57)【要約】【課題】シミュレーション結果を再生するために機構の位置及び姿勢を計算しなおす際に、計算量を少なくし、任意の時点におけるシミュレーション結果の表示を高速に行えるようにする。【解決手段】シミュレーション再生表示装置が、ハイブリッドモデルシミュレータ５６と、アセンブリモデル記憶手段６１と、幾何拘束の処理を行う幾何拘束処理手段６２と、部品の移動を検出する移動監視手段６３と、ハイブリッドモデルシミュレータ５６から幾何拘束処理手段６２へのサイクル時間ごとに入力されるデータと移動監視手段６３の検出結果とを記憶する変数値時間履歴記憶手段５７と、入力された再生表示を行う所望のシミュレーション時刻及びシミュレーション実行後に表示されている現在表示時間を参照して幾何拘束処理手段６２を起動する中間位置を算出する中間位置決定手段６６とを備え、表示手段７３が再計算されたシミュレーション結果を表示する。【選択図】図３
2009104388.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーション再生表示装置であって、
前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルデータを予め読み込み、シミュレーション実行中に前記制御プログラムからの制御コマンドをサイクル時間ごとに読み込みながら、ダイナミクスシミュレーションを実行するハイブリッドモデルシミュレータと、
機構モデルデータを予め読み込み、前記機構に含まれる複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルのデータを記憶するアセンブリモデル記憶手段と、
前記アセンブリモデル記憶手段を参照して幾何拘束の処理を行う幾何拘束処理手段と、
前記幾何拘束処理手段を参照して前記部品の移動を検出する移動監視手段と、
前記ハイブリッドモデルシミュレータから前記幾何拘束処理手段への前記サイクル時間ごとに入力されるデータと、前記移動監視手段の検出結果とを記憶する変数値時間履歴記憶手段と、
シミュレーション実行後に入力された再生表示を行う所望のシミュレーション時刻、及びシミュレーション実行後に表示されている現在表示時間を参照して、前記幾何拘束処理手段を起動する中間位置を算出する中間位置決定手段と、を備え、
前記幾何拘束処理手段がこの中間位置決定手段の算出結果に基づき起動され、表示装置が再計算されたシミュレーション結果を表示することを特徴とするシミュレーション再生表示装置。
【請求項２】
前記中間位置決定手段は、部品の位置及び姿勢について２つ以上の解が存在するかどうかをシミュレーション中に算出し、前記変数値時間履歴記憶手段は、算出の結果得られた２つ以上の解が存在するかどうかのフラグを記憶することを特徴とする請求項１記載のシミュレーション再生表示装置。
【請求項３】
前記中間位置決定手段は、前記部品のうち１つ以上が位置及び姿勢の解を収束計算により計算する必要がある場合と、前記部品のすべてが位置及び姿勢の解の計算を代数方程式を解くことで得る場合とで、中間的な位置を求める方法を切り替えることを特徴とする請求項１記載のシミュレーション再生表示装置。
【請求項４】
機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーション再生表示方法であって、
前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルを用いてシミュレーションを行うハイブリッドモデルシミュレーション部によるダイナミクスシミュレーションと、複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルを用いてシミュレーションを行うキネマティクスシミュレーション部によるキネマティクスシミュレーションとをすべてのサイクル時間について実行するステップと、
入力された再生表示を行う所望のシミュレーション時刻を読込むステップと、
前記ダイナミクスシミュレーション及び前記キネマティクスシミュレーションの実行後に表示されている現在時間を取込むステップと、
前記所望のシミュレーション時刻及び前記現在時間に基づいて、幾何拘束処理を行う中間位置を算出するステップと、
前記キネマティクスシミュレーション部が前記中間位置においてキネマティクスシミュレーションを実行するステップと、
表示装置が、前記再生表示を行う所望のシミュレーション時刻でのシミュレーション結果を表示するステップとを備えたことを特徴とするシミュレーション再生表示方法。
【請求項５】
機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーションプログラムであって、
前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルを用いてシミュレーションを行うハイブリッドモデルシミュレーション部によるダイナミクスシミュレーションと、複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルを用いてシミュレーションを行うキネマティクスシミュレーション部によるキネマティクスシミュレーションとをすべてのサイクル時間について実行する手順と、
入力された再生表示を行う所望のシミュレーション時刻を読込む手順と、
前記ダイナミクスシミュレーション及び前記キネマティクスシミュレーションの実行後に表示されている現在時間を取込む手順と、
前記所望のシミュレーション時刻及び前記現在時間に基づいて、幾何拘束処理を行う中間位置を算出する手順と、
前記キネマティクスシミュレーション部が前記中間位置においてキネマティクスシミュレーションを実行する手順と、
表示装置が、前記再生表示を行う所望のシミュレーション時刻でのシミュレーション結果を表示する手順とをコンピュータに実行させることを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メカトロ機器の制御プログラムを制御対象である機械の実機を用いずシミュレータを用いて検証するためのシミュレーションシステムにおいて、制御プログラムと制御対象のシミュレータとを連携させてシミュレーションを実行した後に、シミュレーション中の状況を再生表示する装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータ支援設計（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ（以下、ＣＡＤと云う））システムを用いて、２次元形状または３次元形状の複数の部品のアセンブリモデルを作成する方法が知られている。この従来のアセンブリモデル作成方法は、複数の部品の形状データをＣＡＤシステムを用いて入力するとともに、形状特徴と呼ばれるこれら部品の部分形状の間に、平行、直角、一致、距離、角度、同心などの幾何学的な拘束関係を入力し、これらの形状データ（部分形状）および拘束関係に基づいて部品間の位置関係をコンピュータソフトウェアによって自動的に算出し、アセンブリのモデルを作成するものである。さらに、これに、機構解析を行う目的で、自由度をもつ部分を例えば関節として入力し、機構パラメータ（例えば関節角）の変化により、機構の運動などのシミュレーションを行う方法が知られている。
【０００３】
また、実際のロボットを現場に用意することなく、ロボットの動作をコンピュータのシミュレーションによって定義したり、生産ラインにおいてロボットやベルトコンベアの位置関係を検討したりするためのソフトウェアとして、ロボットのオフラインプログラミングシステムが知られている。
【０００４】
また、メカトロ機器を対象として、制御プログラムを制御対象である機械の実機を用いずシミュレータを用いて検証するためのシミュレーションシステムが知られている。このシミュレータは、制御プログラムと制御対象のシミュレータとを連携させてシミュレーションを実行した後に、シミュレーション中の状況を再生表示する。当初想定される挙動と異なる結果が得られた場合には、制御プログラムの間違いなどが疑われ、プログラムのデバッグを行う必要が出てくる。このデバッグやプログラムの修正の過程において、任意の時間におけるシミュレーションの状況を再生して表示することは、問題の原因を特定する際に非常に有効である。制御プログラムから送られたコマンドの内容やそのコマンドが送られたタイミングなどは、そのデータ量の関係からすべて記憶しておくことができるが、制御対象の機構に関しては、大量の部品が存在し、それらの部品が互いに複雑に関連して動いているため、部品の位置及び姿勢の演算結果の履歴をすべてシミュレータが記憶することは、現実的ではない。3次元空間内における部品の位置及び姿勢を特定するためには、通常４×４の行列が必要であり、位置及び姿勢のデータを細かな制御サイクル時間に合わせてすべての部品についての履歴を記憶しておくことはできない。そこで、制御プログラムから送られたコマンド列（例えば、モータに対する位置の指令値など）を利用して、再生したい時間における機構の状態を、再生時に再度計算し、表示することが行われている。
【０００５】
従来、機構解析や障害物回避動作計画に用いることが可能なアセンブリモデルを作成する技術が知られている（特許文献１参照）。ハイブリッドモデルを用いたシミュレーションに関しては、複雑な機構系をハイブリッドモデルを用いて簡便かつ正確にモデル化し、該機構系を制御する制御ソフトウェアとの連携シミュレーションに適用したシミュレーション方法が知られている（特許文献２参照）。また、制御ソフトウェアの試験やデバッグのためにハイブリッドモデリング言語を利用する手法が提案されている（非特許文献１参照）。メカの完成前に実装ボードをマッサージチェアの動作まで含めて検証する手法も提案されている（非特許文献２参照）。
【特許文献１】特許第３６４３５０４号明細書
【特許文献２】特開２００４−１７８３００号公報
【非特許文献１】「Use of Hybrid Models for Testing and Debugging Control Software for Electromechanical Systems」、IEEE/ASME Trans. Mechatronics, Vol.10, No.3, June 2005, pp.275-284
【非特許文献２】近藤浩一、星野享、本橋聖一：「シミュレーションによるメカトロニクス機器ファームウェア開発の革新」、東芝レビュー、Vol.60, No.1, 2005
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、シミュレーション結果を再生表示する際には、任意の時間をランダムに選択して表示することを求められるため、例えばモータの軸の回転角度が決まっても、その軸につながるリンク機構は複数の姿勢をとる可能性がある場合など、系を記述する方程式の複数の解のうちどれを選択するかを決定することができないことがある。例えば、手首とこの手首に対して回転の自由度を有するハンドとを持つロボットが静止している棒に向かって近づき、このハンドがこの棒を掴む例題を考える。ハンドが棒を掴む状態は、ハンドが棒に対して接近する方向からその掌を棒に向けながらこの棒を掴む状態と、ハンドが棒の位置を通り過ぎて通り過ぎた方向からその掌を回して棒を掴む状態との２種類がある。この場合、シミュレータが方程式を解くと、２種類の状態についての各解を得ることはできるが、２つの解のうちのいずれかを選択すべきかを判断することができない。
【０００７】
また、シミュレータは、機構を構成する複数の部品について各々、初期位置、シミュレーション終了時の位置及び前回再生表示を行った状態を記憶している。シミュレーションを実行している際には、シミュレータが細かな時間間隔で機構の状態を計算しなおしているので、前回行ったシミュレーションで得られた機構の状態と近い状態の解を選択することによって正しい計算結果を得ることができるが、再生表示の際には、このような判断基準が存在しない。このような問題を解決するために、実際に表示したい時点における状態をシミュレータが演算してからこの状態に一度に移るのではなく、シミュレータが各時点における演算結果の時刻履歴を順番に追って機構を動作させて、最終的に表示したい時点における機構の状況（3次元空間における位置関係）を得る手法が考えられる。時刻履歴を追う際に、シミュレーション実行の時間間隔をいくつかの間隔おきにスキップすることで、シミュレータの処理を軽減することが可能であると考えられるが、この手法を用いても、依然として大きな計算量を要するという課題がある。
【０００８】
そこで、本発明は、上記の課題に鑑み、シミュレーションの再生のために機構の位置及び姿勢を計算しなおす際に、計算量を少なくでき、効率的に処理を行え、任意の時点におけるシミュレーション結果の表示を高速に行うことが可能なシミュレーション再生表示装置及びシミュレーション再生表示方法並びにシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
このため、本発明の一態様によれば、機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーション再生表示装置であって、前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルデータを予め読み込み、シミュレーション実行中に前記制御プログラムからの制御コマンドをサイクル時間ごとに読み込みながら、ダイナミクスシミュレーションを実行するハイブリッドモデルシミュレータと、機構モデルデータを予め読み込み、前記機構に含まれる複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルのデータを記憶するアセンブリモデル記憶手段と、前記アセンブリモデル記憶手段を参照して幾何拘束の処理を行う幾何拘束処理手段と、前記幾何拘束処理手段を参照して前記部品の移動を検出する移動監視手段と、前記ハイブリッドモデルシミュレータから前記幾何拘束処理手段への前記サイクル時間ごとに入力されるデータと、前記移動監視手段の検出結果とを記憶する変数値時間履歴記憶手段と、シミュレーション実行後に入力された再生表示を行う所望のシミュレーション時刻、及びシミュレーション実行後に表示されている現在表示時間を参照して、前記幾何拘束処理手段を起動する中間位置を算出する中間位置決定手段と、を備え、前記幾何拘束処理手段がこの中間位置決定手段の算出結果に基づき起動され、表示装置が再計算されたシミュレーション結果を表示することを特徴とするシミュレーション再生表示装置が提供される。
【００１０】
また、本発明の別の一態様によれば、機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーション再生表示方法であって、前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルを用いてシミュレーションを行うハイブリッドモデルシミュレーション部によるダイナミクスシミュレーションと、複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルを用いてシミュレーションを行うキネマティクスシミュレーション部によるキネマティクスシミュレーションとをすべてのサイクル時間について実行するステップと、入力された再生表示を行う所望のシミュレーション時刻を読込むステップと、前記ダイナミクスシミュレーション及び前記キネマティクスシミュレーションの実行後に表示されている現在時間を取込むステップと、前記所望のシミュレーション時刻及び前記現在時間に基づいて、幾何拘束処理を行う中間位置を算出するステップと、前記キネマティクスシミュレーション部が前記中間位置においてキネマティクスシミュレーションを実行するステップと、表示装置が、前記再生表示を行う所望のシミュレーション時刻でのシミュレーション結果を表示するステップとを備えたことを特徴とするシミュレーション再生表示方法が提供される。
【００１１】
また、本発明の別の一態様によれば、機器を制御対象とする制御プログラムを、制御対象のシミュレータを用いてシミュレーションすることにより、この制御プログラムの検証を行うシミュレーションプログラムであって、前記機器を構成する機構に含まれる可動構成要素の動きを記述するハイブリッドモデルを用いてシミュレーションを行うハイブリッドモデルシミュレーション部によるダイナミクスシミュレーションと、複数の部品の形状及びこれらの部品相互間の拘束関係によって表されるアセンブリモデルを用いてシミュレーションを行うキネマティクスシミュレーション部によるキネマティクスシミュレーションとをすべてのサイクル時間について実行する手順と、入力された再生表示を行う所望のシミュレーション時刻を読込む手順と、前記ダイナミクスシミュレーション及び前記キネマティクスシミュレーションの実行後に表示されている現在時間を取込む手順と、前記所望のシミュレーション時刻及び前記現在時間に基づいて、幾何拘束処理を行う中間位置を算出する手順と、前記キネマティクスシミュレーション部が前記中間位置においてキネマティクスシミュレーションを実行する手順と、表示装置が、前記再生表示を行う所望のシミュレーション時刻でのシミュレーション結果を表示する手順とをコンピュータに実行させることを特徴とするシミュレーションプログラムが提供される。
【発明の効果】
【００１２】
本発明によれば、制御プログラムを、機器の実機の代わりにシミュレータを用いて検証する際に、シミュレーションの実行後に、任意の時点におけるシミュレーションの結果の表示を高速に行えるようになる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態に係るシミュレーション再生表示装置及びシミュレーション再生表示方法並びにシミュレーションプログラムについて、図１乃至図２７を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１４】
本発明の実施の形態に係るシミュレーション再生表示装置は、機械の実機を制御対象とする制御プログラムを、実機の代わりにシミュレータを用いてシミュレーションすることによって、この制御プログラムを検証するものである。図１は本実施形態に係るシミュレーション再生表示装置が使用されるシミュレーションシステムの具体的な態様を示す図である。このシミュレーションシステムは、操作指令を入力するためのリモコン５０と、実機を模擬し実機の動作を３次元グラフィックスにより再生表示する制御対象シミュレータ５１と、これらのリモコン５０及び制御対象シミュレータ５１の間の信号のインターフェースを行う制御ボード５２とを備えている。
【００１５】
この実例はマッサージチェアの制御ソフトを、開発及び検証の対象としており、その詳細については、「シミュレーションによるメカトロニクス機器ファームウェア開発の革新」（東芝レビュー、vol.60, no.1, 2005）に述べられている。制御ソフト技術者は制御ボード５２に、機械の実機を制御するソフトウェア（ファームウェアと呼ぶこともある）を記憶したＲＯＭを搭載して、この制御ボード５２を、制御対象であるマッサージチェアに接続する代わりに、本発明による制御対象シミュレータ５１に接続する。この例では、リモコン５０の操作にもとづいて制御ボード５２上のソフトが動作し、このソフトウェアから制御対象シミュレータ５１にコマンドが送られる。制御対象の動きは、制御対象シミュレータ５１の表示装置にコンピュータグラフィックスを用いて表示される。
【００１６】
図２は制御プログラムを制御対象である機械の実機を用いずシミュレータを用いて検証するためのシミュレーションシステムの全体構成図である。このシミュレーションシステムは、制御対象の機構のシミュレーションを行う機構シミュレータ５３と、機構制御ソフトウェアが実装された機構制御ソフトウェアシミュレータ５４とを備えている。機構シミュレータ５３は本実施形態に係るシミュレーション再生表示装置であり、上記の制御対象シミュレータ５１に搭載される。機構制御ソフトウェアは制御ボード５２に実装される。機構シミュレータ５３は、ある時間における３次元空間での機構の位置及び姿勢を計算し、アセンブリモデルを表示装置に表示するものであり、例えばモータの軸の回転角度が所定角度であるときに機構はどのような姿勢をとっているかなどを検証するために用いられる。機構制御ソフトウェアシミュレータ５４は、シミュレーションの対象である機構の構成要素である例えばモータや、ソレノイドなどのアクチュエータへの動作コマンドを制御信号５５として機構シミュレータ５３に対して与える。動作コマンドとは、スタート、ストップの指令や、モータ軸の回転速度の値のパラメータを指す。
【００１７】
機構シミュレータ５３は、モータなどの動特性を表現するための機能を有し、経過時間と、モータ軸の回転角やモータ軸の回転速度などとの関係を表現してシミュレーションを行うハイブリッドモデルシミュレーション部（ハイブリッドモデルシミュレータ）５６と、シミュレーション結果として時間ステップごとにハイブリッドモデルシミュレーション部５６から入力される可動構成要素のデータ、及び部品の移動の有無の履歴を記憶する変数値時間履歴記憶手段（変数値時間履歴記憶部）５７と、ハイブリッドモデルシミュレーション部５６から送られるモータの軸の回転角度などのデータから各部品の位置及び姿勢を計算するキネマティクスシミュレーション部（機構シミュレーション部）５８とを備えている。ハイブリッドモデルシミュレーション部５６は、機構のハイブリッドモデルを記述したソースプログラム５９、及び制御信号５５に含まれるコマンドやパラメータに基づきサイクル時間ごとにダイナミクスシミュレーションを実行し、モータ軸の回転角といった可動構成要素の位置又は姿勢に関するデータを機構制御ソフトウェアシミュレータ５４の機構制御ソフトウェアへ送るようにされている。
【００１８】
一例として、このハイブリッドモデルシミュレーション部５６は、ソースプログラム５９を構文解析して、連続系方程式の記述と、イベントに伴う状態遷移の制御情報の記述とをシミュレーションの実行前に予め全て抽出してこれらを分離する。ハイブリッドモデルシミュレーション部５６は、分離したうちの状態遷移の制御情報の記述に基づき、条件式とこの条件式が成り立つ場合に成立する連続系方程式のＩＤ、及びこれに応じて無効になる連続系方程式のＩＤとを関連付けて、これらの条件式やＩＤを、図示しないテーブルに記憶する。ハイブリッドモデルシミュレーション部５６は、分離したうちの連続系方程式の記述の構文解析結果に基づき、この記述をシミュレーション実行可能なデータ構造に変換し、変換したデータ構造を内部データとして記憶しておく。ハイブリッドモデルシミュレーション部５６は、制御信号５５を受信すると、テーブルを参照して連続系方程式の切り替えの要否を判断し、必要に応じて連続系方程式を切り替える。ハイブリッドモデルシミュレーション部５６は、内部データを演算対象として数値積分を実行する。このハイブリッドモデルシミュレーションの詳細については後述する。
【００１９】
これに応じてハイブリッドモデルシミュレーション部５６はシミュレーション動作し、モータ軸の回転角などを算出する。その結果は、キネマティクスシミュレーション部５８に送られて、このキネマティクスシミュレーション部５８において、算出された回転角の値に基づき、機構の3次元空間内における部品の位置関係が計算され、必要であれば、部品の位置関係が画面に表示される。ハイブリッドモデルシミュレーション部５６からキネマティクスシミュレーション部５８へ送られた回転角の値は、シミュレーション後に再生表示したり、データ値をチェックしたりする目的で、変数値時間履歴記憶手段５７に記憶される。
【００２０】
制御対象の機構の関節部には、アーム間のなす角度を検知する角度センサが取り付けられる。キネマティクスシミュレーション部５８は、光ビームを３次元形状として予め定義しておくことによって、このビームの形状と他の立体との幾何学的な干渉のチェックを行うフォトセンサの機能をも有する。各時間ステップにおいて、キネマティクスシミュレーション部５８は、求まったモータ軸の回転角度などから機構の位置及び姿勢を計算することにより、機構シミュレータ５３側では、例えばロボットのアームがフォトセンサの光ビームを遮っていないかどうかなどの判定を行えるようにされている。つまり、３次元空間において複雑形状を有する機構物体が運動するような場合に、関節に取り付けられた角度センサが検知する角度や、フォトセンサによる干渉の有無などの状態をハイブリッドモデルシミュレーション部５６が効率的に計算できるようになっている。これらの角度や状態といった情報は機構制御ソフトウェアシミュレータ５４に送られる。
【００２１】
これらの機構シミュレータ５３と機構制御ソフトウェアシミュレータ５４とが連携して動作することにより、機構制御ソフトウェアシミュレータ５４は、機構シミュレータ５３との間で実機の機構と授受するデータと同じデータを適正なタイミングで擬似的にやりとりすることが可能にされており、実機が存在しない状況におけるソフトウェアの検証作業などを実現できるようになっている。
【００２２】
なお、機構シミュレータ５３及び機構制御ソフトウェアシミュレータ５４の機能は一般的なコンピュータを用いて構成することができる。このコンピュータは、基本的なハードウェア構成として、図示しない中央演算ユニット（ＣＰＵ）、メモリ、外部記録装置、通信インターフェース（Ｉ／Ｆ）、および表示装置やキーボード、マウス等の入力装置を備えており、また、これらのハードウェアを制御するためのオペレーティングシステム（ＯＳ）を実装している。また、この機構シミュレータ５３は、このようなオペレーティングシステム上で動作するアプリケーションソフトウェアとして実装することができる。
【００２３】
図３は本実施形態に係るシミュレーション再生表示装置の内部構造をより細かく示す図である。制御対象である機構は、部品の中の軸の円柱面やすべり面の平面などの部分形状と、それらの部品形状の間の同軸や一致という幾何学的な拘束関係とが定義されることにより、部品の集合体であるアセンブリとしてモデル化される。アセンブリモデルの表現および作成の方法の詳細について、まず説明する。
【００２４】
本実施形態に係るシミュレーション再生表示装置におけるアセンブリモデルの表現および作成の方法については、その一例が特許第3643504号明細書「アセンブリモデル作成方法およびアセンブリモデル作成処理プログラムを記録した記録媒体」に記述されているが、本実施形態に係るシミュレーション再生表示装置の説明に必要な考え方について簡略に説明する。図４は幾何拘束条件を説明するための図である。図４に示す部品１、２、３からなるアセンブリモデルを作成する場合を例にとって説明する。図４に示される部品１、２、３の各形状を、例えばコンピュータの入力装置を用いてファイルより読込み、記憶装置に記憶する。このとき、読込まれた各部品は表示装置によって例えば図４に示すように画面表示される。
【００２５】
次に部品の部分形状間の関係について入力すべき関係がある場合には部分形状とその関係を、上記入力装置を用いて入力し、上記記憶装置に格納する。例えば図４に示す部品１、２、３からアセンブリモデルを作成するために、部品１と部品２とに関して部品１の部分形状である平面４と部品２の部分形状である平面６とが一致し、かつ部品１の部分形状である円筒面５と部品２の部分形状である円筒面７とが同軸であるという関係を入力する。同様に部品２と部品３とに関しては、部品２の部分形状である平面８と部品３の部分形状である平面１０とが一致するという関係、および部品２の部分形状である平面９と部品３の部分形状である平面１１とが一致するという関係を入力する。
【００２６】
このように入力された関係が記憶装置においてどのように記憶されるかをグラフ形式で模式的に示した例を図５に示す。図５は、アセンブリモデルを作成する際に各部品の部分形状と、これらの部分形状の間に定義された拘束関係とが記憶装置に記憶されたときの様子を示す模式図である。図５から分かるように記憶装置においては、部品１、２、３の情報および部分形状の情報の他に、平面同士の一致関係１２、１４、１５および同筒同士の同軸関係１３がデータとして存在している。
【００２７】
次に、記憶装置に格納された情報に基づいて、幾何拘束処理手段６２は、部品１、２、３の相対的位置関係を算出する。この相対的位置関係を算出する機能は、一般にソフトウェアとして提供されており、例えば英国Ｄ−Ｃｕｂｅｄ社の３Ｄ−ＤＣＭはそのようなソフトウェアの一例である。以下、このようなソフトウェアを幾何拘束処理ライブラリともいう。具体的には、各部品には、部品特有のローカル座標系が設定されており、このローカル座標系と、アセンブリモデルを作成すべき空間に固定されたワールド座標系との間の変換マトリクスという形で上記相対的位置関係が表現される。すなわち、図５に示されている部品間の関係１２、１３、１４、１５から、部品１の位置と部品２および部品３の各位置とを表現する変換マトリクスが上記幾何拘束処理ライブラリによって自動的に計算される。図３の幾何拘束処理手段６２は、幾何拘束処理ライブラリを用いて実現することができる。
【００２８】
ここでは、幾何拘束処理ライブラリの処理内容を2次元の簡単な例でさらに詳しく説明する。図６は幾何拘束を計算機内部で代数方程式として2次元モデルで表現する方法を説明するための図である。図６に示すように、ワールド座標系２４で示される領域に、部品２５と部品２６とが存在する。今、部品２５の部分形状である直線２７と部品２６の部分形状である直線２８とを一致関係２９により一致させて、部品２５の位置と部品２６の位置とを計算することを考える。まず直線２７は部品２５のローカル座標系において、
【数１】
2009104388.tif 000003
【００２９】
と表現されている。また直線２８は部品２６のローカル座標系において、
【数２】
2009104388.tif 000004
【００３０】
という方程式で表現されている。部品２５の位置を示すワールド座標系から部品２５のローカル座標系への変換マトリックスは、
【数３】
2009104388.tif 000005
【００３１】
であり、ワールド座標系から部品２６への変換マトリックスは、
【数４】
2009104388.tif 000006
【００３２】
であるとする。このとき、直線２７のワールド座標系における方程式を、
【数５】
2009104388.tif 000007
【００３３】
とし、直線２８のワールド座標系における方程式を、
【数６】
2009104388.tif 000008
【００３４】
とすると、これらの関係は以下のような連立方程式
【数７】
2009104388.tif 000009
【数８】
2009104388.tif 000010
【数９】
2009104388.tif 000011
【数１０】
2009104388.tif 000012
【００３５】
で表される。
【００３６】
一方、２つの直線が一致する条件は、
・一方の直線上の一点が他方の直線上にある
・方向ベクトルが平行（外積が０）
の２つの幾何学的条件と等価である。これをワールド座標系において表現すると、
【数１１】
2009104388.tif 000013
【００３７】
となる。この条件を加えて方程式を解けば、直線２７と直線２８とが一致する条件を満たす部品２５および部品２６の位置が算出できる。方程式を解く都合からsinθとcosθとをそれぞれｓとｃとおくと、以下のような連立方程式になる。すなわち、
【数１２】
2009104388.tif 000014
【数１３】
2009104388.tif 000015
【数１４】
2009104388.tif 000016
【数１５】
2009104388.tif 000017
【数１６】
2009104388.tif 000018
【数１７】
2009104388.tif 000019
【００３８】
という２次の連立方程式になる。これらの式には、１２の独立な式があり、直線２７と直線２８のローカル座標系における直線の方程式を表す８つの定数x1,y1,x2,y2,a1,b1,a2,b2が含まれる。変数は１６あり、このうち求めたいのは部品２５と部品２６の位置を示すパラメータc1,s1,c2,s2,α1,β1,α2,β2である。これらの値を求めるには、上記２次連立方程式から８つの定数x1,y1,x2,y2,a1,b1,a2,b2と、部品２５と部品２６の位置を示すパラメータc1,s1,c2,s2,α1,β1,α2,β2以外の変数を消去し、c1,s1,c2,s2,α1,β1,α2,β2の値を求めれば良い。このように変数を消去する方法としては、多項式イデアル(Polynomial ideal)のグレブナー基底(Groebner basis)を求めるブッフバーガーアルゴリズム(Buchberger algorithm)が知られているので、この方法を用いて不要な変数を消去してからc1,s1,c2,s2,α1,β1,α2,β2の値を求めてもよいし、上記２次連立方程式の定数を代入して直接解いてもよい。いずれにしても、式の数よりも変数の数が４多いことから、式として４自由度があることが分る。この式はワールド座標系において定義されており、今注目しているのが２つの部品の相対位置関係であることに注意すれば、どちらか一方の部品の位置を固定しても構わないので、例えば部品２５を固定するとして、c1,α1,β1を定数とすると、式の数よりも変数が１つ多いことになり、相対的な自由度は１あることが分る。部品２６の位置を算出するには、c2,s2,α2,β2の値の内１つを定数として決めて（現在の値に固定して）、他の値を求めればよい。また一般に、もし拘束条件を実現できないような状況（例えば２つの直線が平行でかつ垂直である）で拘束条件が定義されている場合、連立方程式には解が存在しないので、実現できない拘束条件が与えられたことを検知可能である。このように、幾何拘束処理ライブラリは、与えられた拘束関係を代数的な式として表現しなおして、処理を行なう。
【００３９】
再び図５に戻り、説明を進める。上述の各部品の部分形状の間で定義された一致関係、すなわち部分形状間の拘束関係をすべて満足するように算出された部品間の相対的位置関係（アセンブリモデル）の一例を図７に示す。図７は自由度を説明するための図である。この図７に示す相対的位置関係は、自動的に計算された部品の変換マトリクスを、部品の形状データに作用させて得られた部品の位置を示している。
【００４０】
この図７からも分かるように、上述のようにして求められたアセンブリモデルは、部品間の相対的位置関係を完全に決定するだけの拘束関係を一般的に有しているとは限らない。例えば、部品１と部品２との間で相対的な回転１６を行っても、また、部品２と部品３との間で相対的に平行移動１７を行っても、依然として図５に示す関係はすべて保たれている。すなわち図７に示すアセンブリモデルは、回転自由度１６と、並進自由度１７とを有している。
【００４１】
一方機構解析などの分野においては機構の自由度を規定するパラメータにより運動を記述する。すなわち図７の例においては、回転自由度１６に対応する回転角と並進自由度１７に対応する平行移動距離との２つのパラメータが機構の自由度に対応する。
【００４２】
図８は自由度が存在する範囲内で新たに規定される幾何拘束条件を説明するための図である。符号１８、１９は円筒面の中心軸と直交する方向ベクトルを表す直線である。これら直線１８，１９は円筒面に剛体接続されていると考える。同筒同士が同軸という拘束関係があれば上記直線１８，１９同士の角度を新たな拘束関係として付加することにより、この角度が回転自由度のパラメータとなる。従って、このような直線１８，１９は円筒の形状ないしは位置姿勢を表す要素であるので、本実施形態に係るシミュレーション再生表示装置においては部分形状であると定義する。
【００４３】
また図８において符号２０，２１は、部品２，３上の頂点である。これらの頂点２０，２１は平面同士が一致するという拘束関係が既に定義されている平面の部分形状ではないが、平面上の幾何要素であり、幾何学的ないしは位相的に関係している。このため部品２の平面８と部品３の平面１０とが一致している拘束関係の下で、各々の平面上の同一直線上の頂点２０，２１間の距離を新たな拘束関係として付加することにより、この距離が並進自由度のパラメータとなる。
【００４４】
図５に示すアセンブリモデルに、図８に示す直線１８，１９のなす角度、頂点２０，２１間の距離を新たな拘束関係２２，２３として付加したときに記憶装置に記憶されている様子を図９に示す。図９は、各部品の部分形状と、これらの部分形状の間の拘束関係と、関節など駆動部を定義するために導入された拘束関係とが記憶装置に記憶されたときの様子を示す図である。図５に示すように部品間に自由度が存在している場合、これらの部品の間に新たな拘束関係を追加することができる。
【００４５】
機構解析を行う際には、図８に示す直線１８，１９のなす角度、頂点２０，２１間の距離をモータなどのアクチュエータに対応させることにより、アクチュエータパラメータ（モータ軸の回転角度など）の変化から機構の動きを求めるような簡単な機構解析は、以下のようにそのまま実行することも可能である。すなわち、以上のステップで決定された機構パラメータに対するある時刻における値が与えられると、幾何拘束処理ライブラリによって個々の部品の３次元ないしは２次元空間における位置及び姿勢が決定され、これらの位置及び姿勢を時刻の刻み幅にあわせて順次変化させることで、機構としての動きをシミュレーションとして確認するなどの作業を行うことが可能になる。図２ないしは図３において、ハイブリッドモデルシミュレーション部５６から幾何拘束処理手段６２に送られる値は、このようなモータの角度などである。
【００４６】
また、２つの回転軸が歯車で結合されているような場合には、上記図８に示す直線１８，１９のなす角度のような角度パラメータ同士の関係を、歯車の歯数比を係数とする一次式として表現すればよい。すなわち、歯車のような機構も多項式で表現できるため、幾何拘束処理ライブラリが、与えられた拘束関係を代数的な式として表現しなおして扱う方法と同じ方法で統一的に処理、演算を行うことが可能である。具体的には、歯数比を係数とする一次式を連立方程式に加えればよく、歯車を加えることで、全体として自由度が１つ減少することも、立体間の自由度を計算したときに用いた手法と全く同じ手法を用いて算出できる。
【００４７】
上記のようなアセンブリモデルの作成方法により、制御対象シミュレータ５１は、例えば製造装置の搬送機構やロボットの機構のモデルを表現し、その幾何学的な動きをシミュレーションすることが可能になる。図３における機構モデルデータ６０はこのようなアセンブリモデルの作成方法により作成されたデータである。
【００４８】
上記の説明を踏まえて、再度、図３の構成について説明する。なお、図３に示すもののうち、図２で説明した符号と同じ符号を有する要素はそれらと同じ要素を表す。キネマティクスシミュレーション部５８は、アセンブリモデルのデータを記憶するアセンブリモデル記憶手段６１と、モータ軸の回転角など時間ステップごとに変化する可動構成要素のデータ及びアセンブリモデルのデータを用いて部品の幾何拘束条件を算出する幾何拘束処理手段６２と、この幾何拘束条件を参照して部品の移動の有無を検出する移動監視手段６３と、移動監視手段６３による監視を行う部品IDを記憶する移動監視対象部品データベース６４と、部品及び立体の間の干渉のチェックを行う干渉チェック手段６５とを備えている。
【００４９】
また、機構シミュレータ５３は、シミュレーション実行後に入力された再生表示したいシミュレーションの時刻と、すでに表示されている現在表示時間とを参照して、幾何拘束処理手段６２を付加的に起動しなければならない中間位置を算出する再生表示用中間位置決定手段（中間位置決定手段）６６と、シミュレーション内容を表示する表示装置６７と、シミュレーション実行後における現在表示時間を記憶する現在表示時間記憶手段６８と、所望のシミュレーション表示時刻を再生表示用中間位置決定手段６６へ入力するための入力装置６９とを有する。
【００５０】
幾何拘束処理手段６２は再生表示用中間位置決定手段６６の算出結果に基づき起動され、表示装置６７が再計算されたシミュレーション結果を表示する。再生表示用中間位置決定手段６６は、表示が行われた後、再生表示時間を現在表示時間として現在表示時間記憶手段６８に書込む。
【００５１】
機構モデルデータ６０はシミュレーション開始前に読み込まれ、アセンブリモデル記憶手段６１には制御対象の機構モデルについての機構モデルデータが記憶される。幾何拘束処理手段６２は、ハイブリッドモデルシミュレーション部５６から送られるモータ軸の回転角などに基づき、アセンブリモデルで記述されるモデル内の部品の位置及び姿勢を算出する。部品の形状モデルは、幾何拘束処理手段６２により算出された部品の位置及び姿勢の情報に基づいて移動処理が行われて、必要であれば、フォトセンサのOn/Offチェックのような処理に対応して干渉チェック手段６５が起動される。この干渉チェック手段６５はセンサの状態をデータとして機構制御ソフトウェアシミュレータ５４に送信する。
【００５２】
幾何拘束処理手段６２は、ハイブリッドモデルシミュレーション部５６から起動されるたびに部品の位置及び姿勢を計算する。幾何拘束処理手段６２は、その計算の際に、1ステップ前の状態に対して部品が移動しているか否かをチェックすることができる。ハイブリッドモデルシミュレーション部５６から多数回に亘って、部品の位置及び姿勢の計算を要求されていたとしても、その間に部品が移動していなければ、シミュレーション実行後に再生表示をする際には、これらの時間区間においては何も変化がなかったものとして同一視してよい。そこで本実施形態に係るシミュレーション再生表示装置においては、移動監視手段６３が、幾何拘束処理手段６２から部品の移動の有無の情報を得て、移動の有無をチェックするようにしている。しかし、シミュレーションの再生表示の際には、必ずしもすべての部品の細かな動きをチェックする必要はなく、作業において参照することが有り得ないことが分かっている部品について移動の有無を記憶する必要がない。そこで、本実施形態に係るシミュレーション再生表示装置は、シミュレーション実行前に移動監視部品データファイル７０を読み込み、監視の必要な部品のID番号を移動監視対象部品ＤＢ（移動監視対象部品データベース）６４に記憶しておき、ここに登録してある部品のみについて移動の有無を幾何拘束処理手段６２がチェックするようにしている。
【００５３】
また、幾何拘束処理手段６２は機構の関係を上記の通り代数連立方程式として扱うため、幾何拘束処理手段６２がハイブリッドモデルシミュレーション部５６から起動された状況において、それぞれの部品に関連する変数について、代数連立方程式の解がただ1つであるのか、複数の解があるのかを調べることができるようにされている。例えば、幾何拘束処理ライブラリである英国Ｄ−Ｃｕｂｅｄ社の３Ｄ−ＤＣＭは、部品ごとに位置及び姿勢の各解がいくつあるかを問い合わせることができるようになっている。部品に関する変数についての解がすべてただ1つであれば、シミュレーション再生時にまったく異なる事前の状況から計算を行っても、必ずユニークな解が求まるので、前後の状況との連続性ないしは近似度を元に部品の位置関係を求める必要がなくなる。よって、移動監視手段６３が、幾何拘束処理手段６２から部品の位置及び姿勢が複数ありうるのかどうかの情報を得るように構成されている。移動監視手段６３が変数値時間履歴記憶手段５７に移動の有無を表すデータを記憶する際には、移動監視手段６３で得られた部品の移動の有無の情報と、位置及び姿勢が複数ありうる部品があるかどうかについての情報とが合わせて記憶される。これらの情報は共に移動の有無を示すだけのデータであるので、記憶容量としては極めて小さい。
【００５４】
さて、上記のように部品の位置及び姿勢が複数ありうる場合について、機構の実例としてピストンの往復運動と同様な運動を行う機構を用いてより具体的に説明する。図１０は、それぞれが複数の位置及び姿勢をとりうる４つの部品からなる機構の第１の時点における状態を示す図である。図１０に示す機構は、円盤による回転運動を、ガイドレールに装着されたスライダの往復直線運動に変換するものである。この機構は、回転運動を行う円盤３１と、水平に設けられたガイド用のレール３４と、このレール３４における第１の位置と第２の位置との間を往復直線運動可能となるようにこのレール３４に装着されたスライダ３３と、円盤３１による回転運動をスライダ３３の直線運動に変換するロッド３２とを備えている。また、図１０の状態から、円盤３１が回転した後の状態を図１１及び図１２に示す。図１１はこの機構の第２の時点における状態を示す図であり、図１２は同機構の第３の時点における状態を示す図である。
【００５５】
円盤３１の中心軸には図示しないモータの軸が嵌入されており、この軸は機構制御ソフトウェアシミュレータ５４からの制御コマンドに従って駆動される。円盤３１はロッド３２の一端部とピンを介して連結されており、さらにロッド３２の他端部はスライダ３３とピンを介して連結されている。スライダ３３はレール３４上を摺動自在にされており、レール３４に沿って動くことができる。ピンの連結は、部分形状と、幾何拘束としては円筒どうしの同軸、及びスライダ部分の直線の一致として表現される。具体的には、ピンの外周面と、ロッド３２の他端部に形成された貫通穴の内壁と、スライダ３３に形成された貫通穴の内壁とがそれぞれ同軸であることにより、円筒どうしの同軸が表現されている。スライダ部分は、レール３４に沿った直線とスライダ３３上の直線とが一致していることによって表現される。
【００５６】
図１０の状態からモータが駆動されて、図１０上の矢印の方向に円盤３１が回転したとすると、この円盤３１が少し回転した後には、図１１のような状態になることが期待される。しかし、ピン連結の関係と、レール３４及びスライダ３３間の関係とからだけによって判断すると、図１２のような位置も、この機構の挙動を記述する連続系方程式の解としては正しい。シミュレーション時には、このような動きが細かな時間ステップを刻みながら実行されている。それぞれの時点における円盤３１、ロッド３２あるいはスライダ３３といった各部品の位置に関しては、1つ前のステップに近いものが選ばれるので、時間経過とともにステップが刻まれていく場合、図１２のような状態が求まることはない。しかし、図１０の状態から図１２の状態に一度に変化させた場合、例えばロッド３２の長手方向中心線とレール３４とのなす角度については、図１０の状態と図１２の状態との間でのこの角度の差異は、図１０の状態と図１１の状態との間でのこの角度の差異に比べて近い。このことから、図１２の状態が連続系方程式の解として選ばれる可能性がある。上述のように機構は代数方程式に変換されて内部表現されており、機構の状態を表す解はこの方程式を解いて得られるため、方程式の解の値が近いからと言って、それが実際の機構において人間の直感において近いものとは限らないことがある。このように、2つ以上の位置及び姿勢がある場合（この場合は、ロッド３２およびスライダ３３について2つ以上解があることが幾何拘束処理手段６２によって特定される）には、図１０の状態を再生した後に、系が図１１の状態に移動する際には、図１０の位置と図１２の位置との２つの間の中間的な位置を数点経由してから図１１の状態を求めることで、図１２のような誤った解が得られることを避けることができる。
【００５７】
図１３は収束計算を要する機構のある時点における状態を示す図であり、同図にはカム３５とフォロワー３６とからなる機構の例が示されている。カム３５の中心から偏心して位置する偏心軸にはモータの軸が軸挿されており、機構制御ソフトウェアシミュレータ５４からの制御コマンド５５に従ってこのモータが駆動される。カム輪郭３７はB-spline曲面である自由曲面として表現されており、フォロワー３６の先端点がこのカム輪郭３７上に存在するように幾何拘束が表現されている。フォロワー３６はガイド３８に把持されており、フォロワー３６が上下にのみ動くようにフォロワー３６の移動が規制されている。カム偏心軸が回転すると、カム輪郭３７も移動し、それに追随する形でフォロワー３６が移動する。しかしカム輪郭３７は自由曲面として表現されているため、幾何拘束処理手段６２内部において代数方程式として表現することができず、フォロワー３６の位置は収束計算によって求めることになる。
【００５８】
収束計算を行う場合には、初期値をどのようにとるかで得られる解が異なる。シミュレーション時には、このような動きは細かな時間ステップを刻みながら実行されており、それぞれの時点における収束計算の初期値は、1つ前のステップの値が用いられるので、誤った結果が得られることはなく、例えば図１４のような結果が得られる。しかし、図１３の状態から急に図１４の状態のように大きく変化した場合には、図１５に示す状態のように誤った結果が計算されてしまう危険がある。このように収束計算によって部品の位置計算を行う場合には、代数方程式を分析して、機構を記述する方程式の解が複数あるかどうかを予め判定することはできない。本実施形態に係るシミュレーション再生表示装置は、このようなカム３５のような部品がある場合には、部品が移動した場合、その移動の度合いに応じて適切に移動の開始位置から移動が終了する位置までの間の中間的な位置を数点経由し、これらの中間的な位置についての計算を行ってから図１４の状態を求めるようにしている。そのため、カム３５のように軌跡についての収束計算が必要な部品については、移動監視対象部品DB６４に登録しておくことが望ましい。ユーザにとっては、どの部品がこのような収束計算が必要であるかは必ずしも明らかではないため、このような部品のリストを表示装置６７の画面上に表示し、ユーザに必要な部品を選択させて、選択された部品を移動監視対象部品DB６４に登録する方式とすることが望ましい。ただし、収束計算が必要なこのような場合でも、初期値を異なる多数の値に設定して解を求めるなどしてすべての解を求め、この解を求める計算によって解の個数が２つ以上であるかどうかを判断することも可能である。このような処理を行えば、図１０のピストンの往復運動と同様の運動を行う機構についての計算と同様に扱うこともできる。
【００５９】
なお、収束計算によって位置計算をしなければならない部品は、必ずしもカム３５とフォロワー３６のみではない。図１６は図１３のフォロワー３６にさらにリンク３９が連係された機構の状態を示す図である。このリンク３９は、ピンが摺動自在に挿通される長穴を一端部に有し、この一端部はフォロワー３８の上端部にピンを介して連結されている。リンク３９の他端部は別のピンによって空間上の一点に揺動自在に軸止めされており、この右側のピンとリンク３９の軸穴とによって軸部４０が形成されている。
【００６０】
カム偏心軸４１の回転角度が決まると順次カム３５、フォロワー３６及びリンク３９の各部品の位置が決まるが、その関係を図示したものが、図１７である。図１７は部品の位置が決定される順序を説明するための図である。モータ軸の回転角度（すなわちカム偏心軸４１の回転角度）が決まると、モータ軸に直接つながった部品（カム）３５の位置が決まる。部品３５の位置が決まると収束計算によって部品（フォロワー）３６の位置がきまり、その後に部品（リンク）３９の位置が決まる。部品３６の位置を計算するのに収束計算が必要であるので、その結果が必要な部品３９の位置が決まるためにも、部品３６の位置を計算する収束計算が必要である。このように部品の位置が決まる順序を図１７のようにたどることにより部品３９は位置を決めるために収束計算が必要な部品であることをシミュレーション再生表示装置はわかる。このような分析は、幾何拘束処理手段６２で行われ、後述する図１９のフローチャートの判断処理ステップＳ３において、部品３９のような部品は、収束計算が必要な部品として判断される。なお、図１８のように部品３５と部品３６とがピンで連結されている場合は、部品３５の位置が決まると部品３６の位置が決まるが、この場合は図１０〜図１２について説明した場合のように代数方程式を解くことにより位置を得る計算が可能であるので、部品３６も部品３９の収束計算が必要な部品ではない。
【００６１】
次に、上述の構成の本実施形態に係るシミュレーション再生表示装置が再生表示を行う際の処理手順について述べる。図２に示す変数値時間履歴記憶手段５７には、シミュレーションの際のすべてのタイムステップにおけるハイブリッドモデルシミュレーション部５６から機構（キネマティクス）シミュレーション部５８への入力値および部品の移動の有無が記憶されている。
【００６２】
変数値時間履歴記憶手段５７には２種類のフラグが記憶される。１つ目のフラグは収束計算で解が求まる部品であるか否かを表すフラグである。２つ目のフラグは解が2つ以上あるかどうかを表すフラグである。２つ目のフラグは、収束計算によらずに解が求まる部品であり且つ移動監視対象部品DB６４に登録されている部品について、上記情報に加えてシミュレーション実行時において、シミュレーションの際のすべてのタイムステップごとに解が2つ以上あるかどうかを算出した結果得られる。
【００６３】
シミュレーション再生を行う際には、図３に示す表示装置６７には、前回再生表示された状態が表示されている。これを再生表示前の状態とすると、この状態に対応するシミュレーション時間が現在表示時間記憶手段６８に記憶されている。再生表示はユーザが入力装置６９から再生表示したいシミュレーション時間の形式で指定する。この入力されたデータは、再生表示用中間位置決定手段６６に送られて、再生表示時間と現在表示時間記憶手段６８のデータとを参照して、現在表示時間から再生表示時間に移動する際に中間位置を計算させるべきかどうかを再生表示用中間位置決定手段６６が判定する。中間位置を計算させることが必要であると再生表示用中間位置決定手段６６が判定した場合には、再生表示用中間位置決定手段６６は、幾何拘束処理手段６２を起動して、中間位置に相当するアセンブリの位置及び姿勢を計算し、位置及び姿勢の結果をアセンブリモデル記憶手段６１に記憶する。再生表示用中間位置決定手段６６は、必要な回数の中間位置を幾何拘束処理手段６２に計算させた後には、再生表示時間に対応する変数値によって幾何拘束処理手段６２を起動し、アセンブリの位置及び姿勢を計算し、更にアセンブリモデル記憶手段６１を起動して表示装置６７に3次元CG表示させる。この表示装置６７が表示を行ったときに、再生表示時間は現在表示時間の値として現在表示時間記憶手段６８に記憶される。
【００６４】
図１９は、上記再生表示用中間位置決定手段６６が中間位置を計算させるべきかどうかを判定する処理を示すフローチャートである。ステップＳ１で再生表示時間が読み込まれる。判定ステップＳ２で、再生表示用中間位置決定手段６６は再生表示時間と現在表示時間の間にユーザが着目している部品についての移動はあるかどうかを判定し、移動がないと判断すると、ｎルートを通り、ステップＳ８の処理の後、そのまま表示をすればよい。この表示処理は、ユーザが着目していない部品については移動がある可能性があるので、一応幾何拘束処理手段６２を起動しておいた方がよい。ステップＳ２で移動があると判定された場合、ｙルートを通り、判定ステップＳ３において、収束計算を要する部品の有無が判定される。ステップＳ３において、カムのように収束計算が必要なものがあると再生表示用中間位置決定手段６６が判定した場合、ｙルートを通り、再生表示用中間位置決定手段６６は再生表示時間と現在表示時間との間を予め決められた間隔で中間位置を設定する（ステップＳ６）。ステップＳ７で中間位置へ移動してシミュレーションが行われる。
【００６５】
ステップＳ３において、収束計算を要する部品がないと判断された場合、ｎルートを通り、判定を行うステップＳ４に進む。この場合には、再生表示用中間位置決定手段６６は、再生表示時間において、部品の位置及び姿勢に複数の解があるかどうかを判定し、この部品に複数の解があると判定した場合には、ｙルートを通り、ステップＳ５において再生表示用中間位置決定手段６６は再生表示時間と現在表示時間との間での複数の解がある範囲の計算を行い、ステップＳ６にて、この範囲について予め決められた間隔で中間位置を設定する。ステップＳ４にて、部品が複数の解を持たないと判定された場合、ｎルートを通り、ステップＳ８の処理が行われる。
【００６６】
なお、上記のシミュレーション再生表示装置は、シミュレーション実行時に、シミュレーションの際のすべてのタイムステップごとに解が2つ以上あるかどうかを算出して、タイムステップ毎の解の有無の結果を表すフラグを変数値時間履歴記憶手段５７に記憶するように構成されているが、本実施形態に係るシミュレーション再生表示装置は、再生表示を行う際、幾何拘束処理手段６２を起動してこの幾何拘束処理手段６２を用いて解が2つ以上あるかどうかの判定を行うようにしてもよい。
【００６７】
以上は、ロボットなどのアセンブリモデルの表現およびシミュレーションについての説明であった。以下では、次にモータなどの特性表現について説明する。モータなどアクチュエータなどのモデル化では、加速や減速など時間軸上でどのような挙動をするかかが重要であり、ダイナミクスの表現が必要となる。
【００６８】
本実施形態に係るシミュレーション再生表示装置は、ハイブリッドモデリング言語により、系を常微分連立方程式として表現する方法をとる。ハイブリッドモデリング言語の具体的な細かな仕様および基本的な考え方については、発明者の論文「Use of hybrid models for testing and debugging control software for electromechanical systems」（IEEE/ASME Trans. Mechatronics, vol.10, no.3, pp.275-284）に詳しく述べられている。
【００６９】
単純なDCモータモデルの例と、その動作結果の例とを図２０に示す。
【００７０】
x1'' = b1 ( a1 - x1' )
b1 = 6.0
a1 = 3.0  …（１）
a1 = -3.0  …（２）
a1 = 0.0  …（３）
x1がモータ回転角、b1は立ち上がりの急峻さを規定するパラメータ、a1が定常回転速度を表す。ａ1にかかわる３つの式（１）、（２）、（３）については、モータが正転モード、逆転モード、停止モードのいずれであるかによって切り替えられる。
【００７１】
回転速度が上がるに伴って、コイルに逆起電力が生じ、この逆起電力によってモータへの電流が減るため、加速が鈍って定速で回転すると考えて系がモデル化されており、上記のような微分方程式が得られている。
【００７２】
このようなハイブリッドシステムを記述する言語として他に知られているものとして、米国Xerox社のPalo Alto 研究所で研究され、発展研究が米国NASA Ames研究所で行われているHCC(Hybrid Concurrent Constraint Programming)という言語がある。これは制約処理プログラミング（コンストレイントプログラミング）と呼ばれる技術の一種であり、モデルを表現する微分方程式や代数方程式を制約と考え、これら方程式をそのまま順不同で記述する。これに状態遷移を制御するプログラムを付加してモデルを完成させる。方程式をそのまま制約として羅列してプログラムとすることができる点は便利ではある。しかし、これは一種のプログラミング言語であり、複雑なモデルを記述することができるが、コンストレイントプログラミングの理解が必要となり、プログラム言語として難解なため、プログラム作成能力習得が難しい。
【００７３】
MathWorks社のMatlab（登録商標）製品群は制御技術者などを中心によく使われているソフトウェアツールであり、ハイブリッドモデルで表現されるモデルを等価的に記述することが可能である。しかし、例えば微分方程式をそのまま連続系の記述とすることはできず、微分方程式の内容を分析して積分要素などの要素を組み合わせたブロック線図として定義しなおす必要がある。
【００７４】
以下では、本実施形態に係るシミュレーション再生表示装置によってハイブリッドモデルがどのように入力され、結果が出力されうるかを具体的な例題で説明する。まず図２１から図２５で、簡単な例題を説明する。これらの図２１から図２５に示す要素のうち上述した符号と同じ符号を有する要素はそれらと同じものを表す。
【００７５】
図２１に示される機械装置は、バルブ４２、バネ４３、及びピストン４４からなる空気圧式のアクチュエータ機構のモデルである。エアシリンダの側面には、エアシリンダの内部と外部とを連通する通気穴が左右２箇所に形成されている。エアシリンダ本体に設けられたバルブ４２は、圧縮空気を左通気路と右通気路とに切り替えて吸気させる構造を有し、外部からの指令により、位置を、空気の流れを右側（以下Rightとよぶ）ないし左側（以下Leftとよぶ）に変更することができる。図２１ではバルブ４２はRightの状態であるので、ピストン４４には左向きの力がかかっている。この状態を示す運動方程式は次式
-F = m x’’
で表される（図２１ではピストン４４の下方に示されている。）。図２２はさらにピストン４４が左方に移動し、ピストン４４の先端に装着された圧力板がバネ４３に当接した状態を示している。この状態においては、バネ４３による反力が発生するため、運動方程式は図２２のように変化する。
【００７６】
図２３はバルブ４２の位置を、Leftにした状態で、空気の流れの向きが変わり、運動方程式がさらに変化する。図２４は、ピストン４４が移動し、バネ４３からの反力がなくなった状態であり、運動方程式がさらに変化している。
【００７７】
図２５は、以上の状態変化とそれぞれの状態に対応する運動方程式とを状態遷移図として表現したものである。ハイブリッドモデルはこの図２５に示されるように、状態遷移と、各状態の記述とが微分方程式や代数方程式で表現されるものを指す。
【００７８】
図２６は、このような状態遷移図として入力されたデータがどのようにモデルの記述に出力されるかを分かりやすく説明するために、図２５の例をさらに簡略化したものである。ここでは２つの状態と、これらの状態の間の状態遷移とを考える。図２７は図２６のモデルの内容をHCCで記述した例である。図２７の（i）、（ii）、（v）はこの機械装置の初期状態やバルブ操作のタイミングなど運転条件を記述しており、（iii）及び（iv）が図２６の状態遷移を表現している。HCCでは、運動方程式はそのまま書くことができる。また、それぞれの状態へ遷移する条件を最初の always ifの次に、またそれぞれの状態から遷移していく条件を最後の watching の後に記述すればよい。
【００７９】
ハイブリッドコンストレイントプログラミング言語では、プログラムの記述の順序（図２７の（i）〜（v）の順序）にそって実行されるわけではない。個別のプログラム記述のうち、シミュレーションを実行する時間軸にそって、成立するものを探索して実行するため、（i）〜（v）の順序は関係がない。たとえば、シミュレーションを開始した時点では、（i）及び（v）のみ有効である。開始時点でイベントRightが（i）により発生するため、（iv）の前提条件であるRightが有効となり（iv）の運動方程式２が有効になり、図２６の左側の状態としてシミュレーションが実行される。時間が５０となると（ii）が有効となり、イベントLeftが発生し、（iv）の遷移条件（watching  以下）が有効となり、（iv）の運動方程式が無効となる。代わって（iii）の前提条件が有効となり、運動方程式１が有効となる。
【００８０】
上記のように図２におけるハイブリッドモデルシミュレーション部５６を実現することにより、制御対象の機構のシミュレーションを行う機構シミュレータ５３を実現することができる。
【００８１】
以上説明したように、本実施形態に係るシミュレーション再生表示装置及びシミュレーション再生表示方法によれば、メカトロ機器を対象として、制御プログラムを制御対象である機械の実機を用いずシミュレータを用いて検証する際に、シミュレーションの実行後に、任意の時点における制御対象の状況を、計算量を少なくし効率的に処理を行うことが可能となり、シミュレーション結果を高速に表示することができるようになる。
【００８２】
シミュレーションを実行した後、シミュレーション中の状況をシミュレータが再生表示する場合、シミュレータは、実行結果をトレースすること、メカ動作を３次元表示させたり再現実行させること、あるいはタイミングチャートを生成することなどを行う。ユーザは画面上に表示される任意の時点を選択して、選択した時点における空間内でのアセンブリの位置や姿勢を検証する。本実施形態に係るシミュレーション再生表示装置によれば、方程式によって解の個数が１つであるのか、あるいは２以上であるのかを即座に判定し、１個であると判定した場合、ユーザによって選択された時点に飛んで、その時点における機構の位置及び姿勢を計算して表示できるようになる。また、解の個数が複数である時間領域については、このシミュレーション再生表示装置は、再計算すべき時間の範囲を挿入し、この時間の範囲内の各時点で再計算を行うことによって、誤った位置の機構あるいは誤った姿勢の機構を再計算した結果として出力することがなくなる。これによって、機構の正しい位置及び姿勢を再生表示することができ、かつ再計算の高速化が行えるようになる。
【００８３】
１回のシミュレーションでは、サンプルする時刻の点数は数千から数万である。解の個数が１個である場合、本実施形態に係るシミュレーション再生表示装置によれば、ユーザにより選択された時点に飛んでその時点についてシミュレーションを行って結果を再生表示できるようになる。また、解の個数が複数である場合、このシミュレーション再生表示装置によれば、各時点における演算結果の時刻履歴を順番に追って機構を動作させたり、あるいは、シミュレーションを実行する時間間隔をいくつかスキップして機構を動作させるといった処理を行わずに、膨大な数の時点の中から選択された時点について再生表示を行えるようになる。従って、機構の位置及び姿勢を計算しなおす際に、計算量を少なくでき、効率的に処理を行えるようになる。また、任意の時点におけるシミュレーション結果の表示を高速に行うことができるようになる。
【００８４】
尚、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。図１０から図１２では機構を構成する全ての部品が画面上に表示されていたが、本実施形態に係るシミュレーション再生表示装置はこれらの部品のうちのいずれかの部品を非表示にすることもできる。例えばある部品の位置や姿勢を確認する際に、その部品の前に別の部品が位置しているため、後ろ側にある部品についての前方からの視線が遮られることがある。このシミュレーション再生表示装置は、収束計算に不要な部品を画面上から隠蔽する機能をも付け加えることができる。ロッド３２、スライダ３３及びレール３４を非表示にする操作をユーザが行うことにより、モータ軸の回転角だけで位置が決まる円盤３１についてのみ検証を行えるようになる。
【００８５】
また、本実施形態に係るシミュレーション再生表示方法をコンピュータに実行させるためのシミュレーションプログラムを保存しておくこともできる。コンピュータが、このプログラムを読出すことにより、このコンピュータは本実施形態に係るシミュレーション再生表示装置として機能する。本実施形態に係るシミュレーションプログラムを、ハードディスクやコンピュータが読取り可能な各種の記憶媒体に保存することによって、このシミュレーションプログラムの保存、運搬、販売等を容易に行える。
【００８６】
また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００８７】
【図１】発明の一実施形態に係るシミュレーション再生表示装置が使用されるシミュレーションシステムの具体的な態様を示す図である。
【図２】制御プログラムをシミュレータを用いて検証するためのシミュレーションシステムの全体構成図である。
【図３】本発明の一実施形態に係るシミュレーション再生表示装置の内部構造を詳細に示す図である。
【図４】幾何拘束条件を説明するための図である。
【図５】アセンブリモデルを作成する際に各部品の部分形状と、これらの部分形状の間に定義された拘束関係とが記憶装置に記憶されたときの様子を示す模式図である。
【図６】幾何拘束を計算機内部で代数方程式として2次元モデルで表現する方法を説明するための図である。
【図７】自由度を説明するための図である。
【図８】自由度が存在する範囲内で新たに規定される幾何拘束条件を説明するための図である。
【図９】各部品の部分形状と、これらの部分形状の間の拘束関係と、関節など駆動部を定義するために導入された拘束関係とが記憶装置に記憶されたときの様子を示す模式図である。
【図１０】それぞれが複数の位置及び姿勢をとりうる複数の部品からなる機構の第１の時点における状態を示す図である。
【図１１】それぞれが複数の位置及び姿勢をとりうる複数の部品からなる機構の第２の時点における状態を示す図である。
【図１２】それぞれが複数の位置及び姿勢をとりうる複数の部品からなる機構の第３の時点における状態を示す図である。
【図１３】収束計算を要する機構の第１の時点における状態を示す図である。
【図１４】収束計算を要する機構の第２の時点における状態を示す図である。
【図１５】収束計算を要する機構の第３の時点における状態を示す図である。
【図１６】図１３のフォロワーにリンクが連係された機構の状態の第１の例を示す図である。
【図１７】部品の位置が決定される順序を説明するための図である。
【図１８】図１３のフォロワーにリンクが連係された状態の第２の例を示す図である。
【図１９】再生表示用中間位置決定手段が中間位置を計算させるべきかどうかを判定する処理を示すフローチャートである。
【図２０】ハイブリッドモデルで表現されたDCモータモデルのシミュレーション結果の一例を示す図である。
【図２１】ピストンアクチュエータの第１の状態とそれに対応する微分方程式を説明する図である。
【図２２】ピストンアクチュエータの第２の状態とそれに対応する微分方程式を説明する図である。
【図２３】ピストンアクチュエータの第３の状態とそれに対応する微分方程式を説明する図である。
【図２４】ピストンアクチュエータの第４の状態とそれに対応する微分方程式を説明する図である。
【図２５】ピストンアクチュエータの状態遷移を説明する図である。
【図２６】図２５のピストンアクチュエータの状態遷移図を簡略化して示す図である。
【図２７】図２６に対応するハイブリッド制約プログラミング言語のプログラム例を示す図である。
【符号の説明】
【００８８】
１，２，３，２５，２６…部品、４，６，８〜１１…平面、５，７…円筒面、１２〜１５…関係、１６，１７，２２，２３…拘束関係、１８，１９…直線、２０，２１…頂点、２４…ワールド座標系、２７，２８…直線、２９…一致関係、３１…円盤、３２…ロッド、３３…スライダ、３４…レール、３５…カム、３６…フォロワー、３７…カム輪郭、３８…ガイド、３９…リンク、４０…軸部、４１…カム偏心軸、４２…バルブ、４３…バネ、４４…ピストン、５０…リモコン、５１…制御ボード、５２…制御対象シミュレータ（シミュレーション再生表示装置）、５３…機構シミュレータ、５４…機構制御ソフトウェアシミュレータ、５５…制御信号、５６…ハイブリッドモデルシミュレーション部、５７…変数値時間履歴記憶手段、５８…キネマティクスシミュレーション部、５９…ソースプログラム、６０…機構モデルデータ、６１…アセンブリモデル記憶手段、６２…幾何拘束処理手段、６３…移動監視手段、６４…移動監視対象部品データベース、６５…干渉チェック手段、６６…再生表示用中間位置決定手段、６７…表示装置、６８…現在表示時間記憶手段、６９…入力装置、７０…移動監視部品データファイル。
【図１】
2009104388.tif 000020
【図２】
2009104388.tif 000021
【図３】
2009104388.tif 000022
【図４】
2009104388.tif 000023
【図５】
2009104388.tif 000024
【図６】
2009104388.tif 000025
【図７】
2009104388.tif 000026
【図８】
2009104388.tif 000027
【図９】
2009104388.tif 000028
【図１０】
2009104388.tif 000029
【図１１】
2009104388.tif 000030
【図１２】
2009104388.tif 000031
【図１３】
2009104388.tif 000032
【図１４】
2009104388.tif 000033
【図１５】
2009104388.tif 000034
【図１６】
2009104388.tif 000035
【図１７】
2009104388.tif 000036
【図１８】
2009104388.tif 000037
【図１９】
2009104388.tif 000038
【図２０】
2009104388.tif 000039
【図２１】
2009104388.tif 000040
【図２２】
2009104388.tif 000041
【図２３】
2009104388.tif 000042
【図２４】
2009104388.tif 000043
【図２５】
2009104388.tif 000044
【図２６】
2009104388.tif 000045
【図２７】
2009104388.tif 000046