(57)【特許請求の範囲】
【請求項１】
コンピュータに、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための複数の動力伝達部、および前記複数の動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを取得し、
取得した前記モデルに含まれる前記第１の動力部のデータ、および、該モデルに含まれる前記複数の動力伝達部のデータのうち動力伝達方向の最下流側に位置する動力伝達部のデータに基づいて、前記第１の動力部および前記複数の動力伝達部が組み合わされた単一の新たな第２の動力部のモデルを生成する
処理を実行させることを特徴とするモデル変換プログラム。
【請求項２】
コンピュータに、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための複数の動力伝達部、および前記複数の動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルに含まれる前記第１の動力部のデータ、および、該モデルに含まれる前記複数の動力伝達部のデータのうち動力伝達方向の最下流側に位置する動力伝達部のデータに基づいて、前記第１の動力部および前記複数の動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成し、
生成されたモデルを用いて前記装置の動作のシミュレーションを行う
処理を実行させることを特徴とするシミュレーションプログラム。
【請求項３】
前記モデルを生成する処理は、前記第１の動力部が有する歯車の回転速度および歯数、ならびに、前記動力伝達方向の最下流側に位置する動力伝達部が有する歯車の歯数に基づいて、新たな歯車の回転速度を算出し、算出した新たな歯車の回転速度を動力データとして有する前記新たな第２の動力部のモデルを生成する
ことを特徴とする請求項１記載のモデル変換プログラム。
【請求項４】
前記モデルを生成する処理は、前記第１の動力部が有する歯車の回転速度および歯数、ならびに、前記動力伝達方向の最下流側に位置する動力伝達部が有する歯車の歯数に基づいて、新たな歯車の回転速度を算出し、算出した新たな歯車の回転速度を動力データとして有する前記新たな第２の動力部のモデルを生成し、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する
ことを特徴とする請求項２記載のシミュレーションプログラム。
【請求項５】
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための複数の動力伝達部、および前記複数の動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを記憶する記憶部と、
前記モデルに含まれる前記第１の動力部のデータ、および、該モデルに含まれる前記複数の動力伝達部のデータのうち動力伝達方向の最下流側に位置する動力伝達部のデータに基づいて、前記第１の動力部および前記複数の動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する生成部と、
前記生成部により生成されたモデルを用いて前記装置の動作のシミュレーションを行うシミュレーション部と
を有することを特徴とするシミュレーション装置。
【請求項６】
コンピュータが実行するモデル変換方法であって、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための複数の動力伝達部、および前記複数の動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを取得し、
取得した前記モデルに含まれる前記第１の動力部のデータ、および、該モデルに含まれる前記複数の動力伝達部のデータのうち動力伝達方向の最下流側に位置する動力伝達部のデータに基づいて、前記第１の動力部および前記複数の動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する
ことを特徴とするモデル変換方法。
【請求項７】
コンピュータが実行するシミュレーション方法であって、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための複数の動力伝達部、および前記複数の動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルに含まれる前記第１の動力部のデータ、および、該モデルに含まれる前記複数の動力伝達部のデータのうち動力伝達方向の最下流側に位置する動力伝達部のデータに基づいて、前記第１の動力部および前記複数の動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成し、
生成されたモデルを用いて前記装置の動作のシミュレーションを行う
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル変換プログラム、シミュレーションプログラム、シミュレーション装置、モデル変換方法およびシミュレーション方法に関する。
【背景技術】
【０００２】
従来、駆動機構を備える装置の動作のシミュレーションを行うシミュレーション装置が存在する。このようなシミュレーション装置は、駆動機構を備える装置の構造を正確にモデル化し、精度の高いシミュレーションを行う。
【０００３】
また、シミュレーション対象の装置の一例としては、動力部、動力伝達部および駆動部を備える装置が挙げられる。かかる装置では、動力部から動力伝達部へと動力が伝わり、動力伝達部から駆動部へと動力が伝わり、駆動部が駆動する。なお、動力部の一例としては、モータが挙げられる。また、動力伝達部の一例としては、歯車が挙げられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−９２６４０号公報
【特許文献２】特開平７−１７５５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来の技術では、精度の高いシミュレーションを行う際に、多くの時間を要するという問題がある。
【０００６】
具体例を挙げて説明すると、近年、駆動機構を備える装置の高性能化および多機能化が進んでいる。そこで、従来のシミュレーション装置で、このような駆動機構を備える装置の構造を正確にモデル化する場合には、モデル化対象の装置の構造が複雑であるため、モデル化に多くの時間を要することとなる。
【０００７】
また、従来のシミュレーション装置で、上記のような駆動機構を備える装置の動作のシミュレーションを行う場合には、モデル化された装置の構造が複雑であるため、シミュレーションにも多くの時間を要することとなる。
【０００８】
よって、上記の従来の技術では、短い時間で精度の高いシミュレーションを行うことができない。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、より短い時間で精度の高いシミュレーションを行うことができるモデル変換プログラム、シミュレーションプログラム、シミュレーション装置、モデル変換方法およびシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するモデル変換プログラムは、一つの態様において、シミュレーション対象の装置のモデルを取得する処理をコンピュータに実行させる。かかる装置は、動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置である。本願の開示するモデル変換プログラムは、一つの態様において、コンピュータに、取得した前記モデルに基づいて、次のような処理を実行させる。すなわち、本願の開示するモデル変換プログラムは、第１の動力部および動力伝達部が組み合わされた単一の新たな第２の動力部のモデルを生成する処理をコンピュータに実行させる。
【００１１】
また、本願の開示するシミュレーションプログラムは、一つの態様において、第１の動力部、動力伝達部、駆動部を備えたシミュレーション対象の装置のモデルに基づいて、次のような処理をコンピュータに実行させる。すなわち、本願の開示するシミュレーションプログラムは、前記第１の動力部および前記動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する処理をコンピュータに実行させる。第１の動力部は、動力を発生する。動力伝達部は、前記第１の動力部により発生された動力を伝達するためのものである。駆動部は、前記動力伝達部により伝達された動力に応じて駆動する。本願の開示するシミュレーションプログラムは、一つの態様において、生成されたモデルを用いて前記装置の動作のシミュレーションを行う処理をコンピュータに実行させる。
【発明の効果】
【００１２】
本願の開示するモデル変換プログラムの一つの態様、および本願の開示するシミュレーションプログラムの一つの態様によれば、より短い時間で精度の高いシミュレーションを行うことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係るシミュレーション装置の構成を示す図である。
【図２Ａ】図２Ａは、管理テーブルの一例を示す図である。
【図２Ｂ】図２Ｂは、動力部データに含まれる各種データの一例を説明するための図である。
【図２Ｃ】図２Ｃは、動力伝達部データに含まれる各種データの一例を説明するための図である。
【図２Ｄ】図２Ｄは、駆動部データに含まれる各種データの一例を説明するための図である。
【図３】図３は、ノードデータに含まれる各種データの一例を説明するための図である。
【図４】図４は、親ノードと子ノードとの関係にある各ノードのノードデータの一例を説明するための図である。
【図５】図５は、生成部により生成されるツリーの一例を示す図である。
【図６】図６は、図５の例において、新モデルデータを生成した場合の一例を示す図である。
【図７Ａ】図７Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。
【図７Ｂ】図７Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。
【図８Ａ】図８Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。
【図８Ｂ】図８Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。
【図９Ａ】図９Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。
【図９Ｂ】図９Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。
【図１０Ａ】図１０Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。
【図１０Ｂ】図１０Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。
【図１１】図１１は、シミュレーション部による動作のシミュレーションの一例を説明するための図である。
【図１２】図１２は、実施例１に係るシミュレーション処理の手順を示すフローチャートである。
【図１３】図１３は、実施例１に係るツリー生成処理の手順を示すフローチャートである。
【図１４】図１４は、実施例１に係るモデル生成処理の手順を示すフローチャートである。
【図１５】図１５は、シミュレーションプログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するモデル変換プログラム、シミュレーションプログラム、シミュレーション装置を図面に基づいて詳細に説明する。また、以下に、本願の開示するモデル変換方法およびシミュレーション方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１５】
［シミュレーション装置の構成］
実施例１に係るシミュレーション装置について説明する。図１は、実施例１に係るシミュレーション装置の構成を示す図である。本実施例に係るシミュレーション装置１０は、動力を発生する動力部、動力部により発生された動力を伝達するための動力伝達部、および動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを取得する。そして、本実施例に係るシミュレーション装置１０は、取得したモデルに基づいて、動力部および動力伝達部が組み合わされた単一の新たな動力部のモデルを生成する。また、本実施例に係るシミュレーション装置１０は、取得したモデルに基づいて、動力部および動力伝達部を新たな動力部とし、この新たな動力部が駆動部に動力を与えて駆動部を駆動させるようなモデルを生成する。
【００１６】
図１に示すように、シミュレーション装置１０は、入力部１１と、出力部１２と、記憶部１３と、制御部１４とを有する。
【００１７】
入力部１１は、各種情報を制御部１４に入力する。例えば、入力部１１は、ユーザから、後述のシミュレーション処理を実行する指示を受け付けて、受け付けた指示を制御部１４に入力する。入力部１１は、例えば、マウスやキーボードなどの操作受付デバイスである。なお、入力部１１は、ユーザの指示を受け付けて、後述のモデルデータ１３ａを外部の装置から取得し、取得したモデルデータ１３ａを制御部１４に入力することもできる。
【００１８】
出力部１２は、各種の情報を出力する。出力部１２のデバイスの一例としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスや、音声を出力する音声出力デバイスなどが挙げられる。例えば、出力部１２が表示デバイスである場合には、出力部１２は、後述のシミュレーション部１４ｃから送信されたシミュレーション結果を表示する。また、出力部１２が音声デバイスである場合には、出力部１２は、シミュレーション部１４ｃから送信されたシミュレーション結果を音声で出力する。
【００１９】
記憶部１３は、各種情報を記憶する。例えば、記憶部１３は、モデルデータ１３ａを記憶する。また、記憶部１３には、ノードデータ１３ｂおよび新モデルデータ１３ｃが後述の生成部１４ｂにより格納される。
【００２０】
モデルデータ１３ａは、動力を発生する動力部、動力部により発生された動力を伝達するための動力伝達部、および動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルのデータである。
【００２１】
モデルデータ１３ａのデータ構造の一例としては、動力部データ配列、動力伝達部データ配列および駆動部データ配列を含むデータ構造が挙げられる。動力部データ配列には、動力部のデータが、各動力部ごとに登録される。動力伝達部データ配列には、動力伝達部のデータが、各動力伝達部ごとに登録される。駆動部データ配列には、駆動部のデータが、各駆動部ごとに登録される。これらの動力部データ配列、動力伝達部データ配列および駆動部データ配列は、シミュレーションに用いる各種データを管理するための一つのテーブルに登録されてもよいし、それぞれ独立して記憶部１３に記憶されてもよい。以下の説明では、このようなテーブルを「管理テーブル」と略記する。また、以下の説明では、動力部のデータを「動力部データ」と略記する。また、以下の説明では、動力伝達部のデータを「動力伝達部データ」と略記する。また、以下の説明では、駆動部のデータを「駆動部データ」と略記する。
【００２２】
管理テーブルの一例について説明する。図２Ａは、管理テーブルの一例を示す図である。図２Ａの例では、管理テーブル１５は、動力部データ配列１５ａ、動力伝達部データ配列１５ｂ、および駆動部データ配列１５ｃを有する。
【００２３】
動力部データ配列１５ａには、動力部データが各動力部ごとに登録される。図２Ａの例は、動力部データ配列１５ａに、ｌ個の動力部データが登録されたことを示す。なお、以下の説明では、動力部データ配列［ｉ］は、動力部データ配列１５ａに登録されたｉ番目の動力部データを指す。
【００２４】
動力伝達部データ配列１５ｂには、動力伝達部データが各動力伝達部ごとに登録される。図２Ａの例は、動力伝達部データ配列１５ｂに、ｍ個の動力伝達部データが登録されたことを示す。なお、以下の説明では、動力伝達部データ配列［ｉ］は、動力伝達部データ配列１５ｂに登録されたｉ番目の動力伝達部データを指す。
【００２５】
駆動部データ配列１５ｃには、駆動部データが各駆動部ごとに登録される。図２Ａの例は、駆動部データ配列１５ｃに、ｎ個の駆動部データが登録されたことを示す。なお、以下の説明では、駆動部データ配列［ｉ］は、駆動部データ配列１５ｃに登録されたｉ番目の駆動部データを指す。
【００２６】
次に、動力部データの一例について説明する。動力部の一例としては、モータが挙げられる。動力部としてモータを採用した場合には、動力部データに含まれる各種データの一例としては、「名前」、「位置」、「形状」、「歯車の歯数」、「回転方向」、「作用種別」、「回転速度」、「動力部ツリーリンク」などが挙げられる。
【００２７】
「名前」には、各モータに付与されたＩＤ（Identification）が含まれる。また、「位置」には、シミュレーションにおけるＸＹＺの直交座標系の三次元空間上のモータが存在する座標が含まれる。また、「形状」には、モータを模式的に表す場合の外観の形が含まれる。かかる形の一例としては、四角形、円などが挙げられる。「歯車の歯数」には、モータに直接取り付けられた歯車の歯数が含まれる。「回転方向」には、歯車の回転する方向が含まれる。「作用種別」には、与える動力の作用の種別が含まれる。動力の作用の種別としては、例えば、歯車が回転することで動力が回転方向に作用する合には、「作用種別」は「回転」であり、歯車がスライドすることで動力がスライドして作用する場合には、「作用種別」は「スライド」である。「回転速度」には、歯車の回転する速度が含まれる。「動力部ツリーリンク」には、後述する動力部のノードデータのアドレスを示すポインタが含まれる。
【００２８】
図２Ｂは、動力部データに含まれる各種データの一例を説明するための図である。図２Ｂの例は、動力部データ１６に、「名前」、「位置」、「形状」、「歯車の歯数」、「回転方向」、「作用種別」、「回転速度」、「動力部ツリーリンク」が含まれることを示す。
【００２９】
図２Ｂの動力部データ１６の例は、動力部の「名前」が「ＡＡ」であり、「位置」が「（Ｘ１，Ｙ１，Ｚ１）」であり、「形状」が「四角形」であり、「歯車の歯数」が「Ｎ」であることを示す。また、図２Ｂの動力部データ１６の例は、「回転方向」が「Ｘ軸と平行な軸周りをＺ軸の正からＹ軸の正、Ｙ軸の正からＺ軸の負、Ｚ軸の負からＹ軸の負、Ｙ軸の負からＺ軸の正へと回転する方向」であることを示す。また、図２Ｂの動力部データ１６の例は、「作用種別」が「回転」であり、「回転速度」が「Ｓ１［ｒｐｓ］」であり、「動力部ツリーリンク」に登録された動力部のノードデータのアドレスを示すポインタが「Ｐｔ１」であることを示す。
【００３０】
次に、動力伝達部データの一例について説明する。動力伝達部の一例としては、歯車やベルトが挙げられる。動力伝達部として歯車を採用した場合には、動力伝達部データに含まれる各種データの一例としては、「名前」、「位置」、「形状」、「歯車の歯数」、「回転方向」、「作用種別」、「作用元名」などが挙げられる。
【００３１】
「名前」には、各歯車に付与されたＩＤが含まれる。また、「位置」には、シミュレーションにおけるＸＹＺの直交座標系の三次元空間上の歯車が存在する座標が含まれる。また、「形状」には、歯車を模式的に表す場合の外観の形が含まれる。かかる形の一例としては、円などが挙げられる。「歯車の歯数」には、歯車の歯数が含まれる。「回転方向」には、歯車の回転する方向が含まれる。「作用種別」には、与える動力の作用の種別が含まれる。動力の作用の種別としては、例えば、歯車が回転することで動力が回転方向に作用する合には、「作用種別」は「回転」であり、歯車がスライドすることで動力がスライドして作用する場合には、「作用種別」は「スライド」である。「作用元名」には、動力伝達部データ１６に対応する歯車に動力を与えたノードの「名前」が含まれる。ここで、歯車に動力を与えたノードとしては、例えば、他の歯車などの動力伝達部や、モータなどの動力部が挙げられる。
【００３２】
図２Ｃは、動力伝達部データに含まれる各種データの一例を説明するための図である。図２Ｃの例は、動力伝達部データ１７に、「名前」、「位置」、「形状」、「歯車の歯数」、「回転方向」、「作用種別」、「作用元名」が含まれることを示す。
【００３３】
図２Ｃの動力伝達部データ１７の例は、動力伝達部の「名前」が「ＢＢ」であり、「位置」が「（Ｘ２，Ｙ２，Ｚ２）」であり、「形状」が「四角形」であり、「歯車の歯数」が「Ｍ」であることを示す。また、図２Ｃの動力伝達部データ１７の例は、「回転方向」が「Ｘ軸と平行な軸周りをＺ軸の正からＹ軸の負、Ｙ軸の負からＺ軸の負、Ｚ軸の負からＹ軸の正、Ｙ軸の正からＺ軸の正へと回転する方向」であることを示す。また、図２Ｃの動力伝達部データ１７の例は、「作用種別」が「回転」であり、「作用元名」に登録された、歯車に動力を与えたノードの「名前」が「ＡＢ」であることを示す。
【００３４】
次に、駆動部データの一例について説明する。駆動部データに含まれる各種データの一例としては、「名前」、「位置」、「形状」、「作用元名」などが挙げられる。
【００３５】
「名前」には、各駆動部に付与されたＩＤが含まれる。また、「位置」には、シミュレーションにおけるＸＹＺの直交座標系の三次元空間上の駆動部が存在する座標が含まれる。また、「形状」には、駆動部を模式的に表す場合の外観の形が含まれる。かかる形の一例としては、四角形、円などが挙げられる。「作用元名」には、駆動部に動力を与えたノードの「名前」が含まれる。ここで、駆動部に動力を与えたノードとしては、例えば、歯車などの動力伝達部や、モータなどの動力部が挙げられる。
【００３６】
図２Ｄは、駆動部データに含まれる各種データの一例を説明するための図である。図２Ｄの例は、駆動部データ１８に、「名前」、「位置」、「形状」、「作用元名」が含まれることを示す。
【００３７】
図２Ｄの駆動部データ１８の例は、駆動部の「名前」が「ＣＣ」であり、「位置」が「（Ｘ３，Ｙ３，Ｚ３）」であり、「形状」が「四角形」であることを示す。また、図２Ｄの駆動部データ１８の例は、「作用元名」に登録された、駆動部に動力を与えたノードの「名前」が「ＢＣ」であることを示す。
【００３８】
図１の説明に戻り、ノードデータ１３ｂは、動力部、動力伝達部および駆動部のそれぞれのノードに関するデータであり、動力伝達についてのノードの接続関係を示すデータである。ノードデータ１３ｂは、ノードごとに、後述の生成部１４ｂによって生成され、記憶部１３に格納される。
【００３９】
例えば、ノードデータ１３ｂは、親ノードのノードデータ１３ｂが記憶された記憶部１３のアドレスを示すポインタを含む。ここで、親ノードとは、あるノードに対して、動力伝達方向の上流側に位置し、このノードと動力伝達についての接続関係を有するノードを指す。例えば、２つの歯車が噛み合っている場合には、この２つの歯車は、動力伝達についての接続関係を有するといえる。また、２つの歯車のうち、動力伝達方向の上流側に位置する歯車のノードは、下流側に位置する歯車のノードに対して、親ノードであるといえる。
【００４０】
また、ノードデータ１３ｂは、同一階層ノードのノードデータ１３ｂが記憶された記憶部１３のアドレスを示すポインタを含む。ここで、同一階層ノードとは、自身を子ノードとした場合に、共通の親ノードを有する他の子ノードを指す。
【００４１】
また、ノードデータ１３ｂは、子ノードのノードデータ１３ｂが記憶された記憶部１３のアドレスを示すポインタを含む。ここで、子ノードとは、あるノードに対して、動力伝達方向の下流側に位置し、このノードと動力伝達についての接続関係を有するノードを指す。例えば、噛み合っている２つの歯車のうち、動力伝達方向の下流側に位置する歯車のノードは、上流側に位置する歯車のノードに対して、子ノードであるといえる。
【００４２】
また、ノードデータ１３ｂは、ノードのデータが登録された配列の要素のアドレスを示すポインタを含む。例えば、ノードデータ１３ｂは、ノードが動力部であり、この動力部の動力部データ１６が、動力部データ配列１５ａのｉ番目の配列［ｉ］に登録されている場合には、動力部データ配列［ｉ］が記憶された記憶部１３のアドレスを示すポインタを含む。また、ノードデータ１３ｂは、ノードが動力伝達部であり、この動力伝達部の動力伝達部データ１７が、動力伝達部データ配列１５ｂのｉ番目の配列［ｉ］に登録されている場合には、動力伝達部データ配列［ｉ］が記憶された記憶部１３のアドレスを示すポインタを含む。また、ノードデータ１３ｂは、ノードが駆動部であり、この駆動部の駆動部データ１８が、駆動部データ配列１５ｃのｉ番目の配列［ｉ］に登録されている場合には、駆動部データ配列［ｉ］が記憶された記憶部１３のアドレスを示すポインタを含む。
【００４３】
図３は、ノードデータに含まれる各種データの一例を説明するための図である。図３の例は、ノードデータ１３ｂに、「親ノードへのリンク」、「同一階層ノードへのリンク」、「子ノードへのリンク」、「データへのリンク」が含まれることを示す。
【００４４】
図３のノードデータ１３ｂの例は、ノードデータ１３ｂに対応するノードに対する親ノードのノードデータ１３ｂのポインタが「Ｐｔ６」であり、同一階層ノードのノードデータ１３ｂのポインタが「Ｐｔ７」であることを示す。また、図３のノードデータ１３ｂの例は、ノードデータ１３ｂに対応するノードに対する子ノードのノードデータ１３ｂのポインタが「Ｐｔ８」であることを示す。また、図３のノードデータ１３ｂの例は、ノードデータ１３ｂに対応するノードのデータが登録された配列の要素のポインタが「Ｐｔ９」であることを示す。
【００４５】
図４は、親ノードと子ノードとの関係にある各ノードのノードデータの一例を説明するための図である。図４に示す例では、２つのノードデータ１３ａ＿１、１３ａ＿２のそれぞれに対応する２つのノードのうち、ノードデータ１３ａ＿１に対応するノードが、ノードデータ１３ａ＿２に対応するノードの親ノードとなる。一方で、図４に示す例では、ノードデータ１３ａ＿２に対応するノードが、ノードデータ１３ａ＿１に対応するノードの子ノードとなる。
【００４６】
図４のノードデータ１３ａ＿１の例は、ノードデータ１３ａ＿１に対応するノードに対する子ノードのノードデータ１３ａ＿２のポインタが「Ｐｔ１１」であることを示す。また、図４のノードデータ１３ａ＿２の例は、ノードデータ１３ａ＿２に対応するノードに対する親ノードのノードデータ１３ａ＿１のポインタが「Ｐｔ１２」であることを示す。したがって、ノードデータ１３ａ＿１、１３ａ＿２の登録内容から、ノードデータ１３ａ＿１、１３ａ＿２のそれぞれに対応する２つのノードが親ノード、子ノードの関係にあることが把握される。
【００４７】
このように、ノードデータ１３ｂには、動力伝達についてのノードの接続関係を示すデータが含まれている。そのため、各ノードデータ１３ｂは、生成部１４ｂによりノード全体の接続関係を把握する際に用いられる。
【００４８】
図１の説明に戻り、新モデルデータ１３ｃは、上記のモデルデータ１３ａを用いてシミュレーションを行う場合よりも、より短い時間で精度の高いシミュレーションを行うためのモデルである。新モデルデータ１３ｃは、生成部１４ｂにより生成される。新モデルデータ１３ｃについては後述するが、新モデルデータ１３ｃは、モデルデータ１３ａに含まれる動力部および動力伝達部を新たな動力部とし、新たな動力部が駆動部に動力を与えて駆動部を駆動させるようなモデルのデータである。
【００４９】
記憶部１３は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１３は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００５０】
制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１４は、図１に示すように、取得部１４ａと、生成部１４ｂと、シミュレーション部１４ｃとを有する。なお、以下の説明では、動力部のノードを根ノード、駆動部のノードを葉ノードと称する場合がある。
【００５１】
取得部１４ａは、モデルデータを取得する。例えば、取得部１４ａは、記憶部１３からモデルデータ１３ａを取得する。なお、取得部１４ａは、入力部１１から入力されたモデルデータ１３ａを取得することもできる。
【００５２】
生成部１４ｂは、モデルデータから、シミュレーションの時間がより短くなる新たなモデルデータを生成する。
【００５３】
例えば、生成部１４ｂは、まず、取得部１４ａにより取得されたモデルデータ１３ａに含まれる動力部データ１６、動力伝達部データ１７、駆動部データ１８から、動力部、動力伝達部および駆動部の全ノードの動力伝達についての接続関係を解析する。
【００５４】
具体例を挙げて説明すると、生成部１４ｂは、まず、未選択の動力部データ１６を動力部データ配列１５ａの要素の中から一つ選択する。そして、生成部１４ｂは、選択した動力部データ１６の「動力部ツリーリンク」に、選択した動力部データ１６の「名前」が示す動力部のノードデータ１３ｂのポインタを登録する。また、生成部１４ｂは、かかるノードデータ１３ｂの「データへのリンク」に、選択した動力部データ１６のポインタを登録する。これにより、選択した動力部データ１６と、対応するノードデータ１３ｂとでリンクが張られることになる。
【００５５】
そして、生成部１４ｂは、選択した動力部データ１６に含まれる名前と作用元名が一致する動力伝達部データ１７および駆動部データ１８を全て抽出する。これにより、生成部１４ｂは、選択した動力部データ１６に対応する動力部と、抽出した動力伝達部データ１７および駆動部データ１８に対応する各ノードとが、それぞれ、親ノードと子ノードとの関係にあることを抽出する。
【００５６】
そして、生成部１４ｂは、親ノードのノードデータ１３ｂの「子ノードへのリンク」に、子ノードのノードデータ１３ｂのポインタを登録する。また、生成部１４ｂは、子ノードのノードデータ１３ｂの「親ノードへのリンク」に、親ノードのノードデータ１３ｂポインタを登録する。これにより、親ノードのノードデータ１３ｂと子ノードのノードデータ１３ｂとの間でリンクが張られたことになる。
【００５７】
また、動力伝達部データ１７および駆動部データ１８のノードを複数抽出した場合には、これらのノードは互いに同一階層ノードであるため、生成部１４ｂは、これらのノードのノードデータ１３ｂに同一階層ノードのノードデータ１３ｂのポインタを登録する。これにより、同一階層ノードのノードデータ１３ｂ間でリンクが張られたことになる。
【００５８】
また、生成部１４ｂは、親ノードおよび子ノードのそれぞれのノードデータ１３ｂの「データへのリンク」に、対応するノードのデータ、例えば、動力部データ１６、動力伝達部データ１７、駆動部データ１８のいずれかのデータを登録する。これにより、各ノードと、各データとの間でリンクが張られたことになる。
【００５９】
続いて、生成部１４ｂは、子ノードの中から未選択の子ノードを、処理対象のノードである処理ノードとして選択し、選択した処理ノードが駆動部となるまで、処理ノードに対して、上記の処理を繰り返し行う。これにより、選択された動力部データ１６に対応する動力部から、処理ノードとして選択された駆動部までの間に存在する動力伝達部の接続関係を示す情報が、対応する動力伝達部のノードデータ１３ｂに登録される。
【００６０】
選択した処理ノードが駆動部であり、かつ、選択した処理ノードに同一階層ノードが存在し、その同一階層ノードが未選択である場合には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、この未選択の同一階層ノードを処理ノードとして選択し、選択した処理ノードが駆動部となるまで、上記の処理を繰り返し行う。これにより、選択された動力部データ１６に対応する動力部から、処理ノードとして新たに選択された駆動部までの間に存在する動力伝達部の接続関係を示す情報が、対応する動力伝達部のノードデータ１３ｂに登録される。
【００６１】
また、選択した処理ノードが駆動部であり、かつ、選択した処理ノードに同一階層ノードが存在しないかまたは選択した処理ノードの同一階層ノードが全て選択済みである場合には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、処理ノードの親ノードが根ノードであるか否かを判定する。処理ノードの親ノードが根ノードでない場合には、生成部１４ｂは、処理ノードの親ノードを新たな処理ノードとして選択する。
【００６２】
そして、選択した処理ノードに同一階層ノードが存在し、その同一階層ノードが未選択である場合には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、この未選択の同一階層ノードを処理ノードとして選択し、選択した処理ノードが駆動部となるまで、上記の処理を繰り返し行う。これにより、選択された動力部データ１６に対応する動力部から、処理ノードとして新たに選択された駆動部までの間に存在する動力伝達部の接続関係を示す情報が、対応する動力伝達部のノードデータ１３ｂに登録される。
【００６３】
ここで、生成部１４ｂが、処理ノードの親ノードが根ノードであると判定した場合には、次のような状態となる。すなわち、選択された動力部データ１６に対応する動力部と、かかる動力部が発生する動力によって駆動される全ての駆動部との間に存在する全ての動力伝達部の接続関係を示す情報が、生成部１４ｂにより、対応する動力伝達部のノードデータ１３ｂに登録される。
【００６４】
そこで、生成部１４ｂは、未選択の動力部に対しても同様の処理を行うために、未選択の動力部データ１６を動力部データ配列１５ａの要素の中から一つ選択し、上記と同様の処理を行う。生成部１４ｂは、かかる処理を全ての動力部データ１６を選択するまで繰り返し行う。これにより、全ての動力部の各々と、動力部の各々が発生する動力によって駆動される全ての駆動部との間に存在する全ての動力伝達部の接続関係を示す情報が、生成部１４ｂにより、全ての動力伝達部のノードデータ１３ｂに登録される。
【００６５】
このようにして、生成部１４ｂは、ノードデータ１３ｂに接続関係を示す情報を登録することで、動力部、動力伝達部、駆動部の接続関係を示すツリーを生成する。
【００６６】
図５は、生成部により生成されるツリーの一例を示す図である。図５は、ツリー７０を示す。図５の例は、生成部１４ｂにより、動力部データ配列１５ａの要素の中から、動力部データ配列［ｉ］の要素の動力部３０の動力部データ１６が選択されたことを示す。
【００６７】
図５の例では、動力部３０と、動力伝達部３１との関係において、動力部３０が親ノードであり、動力伝達部３１は子ノードである。図５の例では、生成部１４ｂは、動力部３０のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３１のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３１のノードデータ１３ｂの「親ノードへのリンク」に、動力部３０のノードデータ１３ｂのポインタを登録する。
【００６８】
また、図５の例では、動力部３０と、動力伝達部３２との関係において、動力部３０が親ノードであり、動力伝達部３２は子ノードである。図５の例では、生成部１４ｂは、動力部３０のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３２のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３２のノードデータ１３ｂの「親ノードへのリンク」に、動力部３０のノードデータ１３ｂのポインタを登録する。
【００６９】
また、図５の例では、動力伝達部３１と、動力伝達部３２とが互いに同一階層ノードである。図５の例では、生成部１４ｂは、動力伝達部３１のノードデータ１３ｂの「同一階層ノードへのリンク」に、動力伝達部３２のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３２のノードデータ１３ｂの「同一階層ノードへのリンク」に、動力伝達部３１のノードデータ１３ｂのポインタを登録する。
【００７０】
また、図５の例では、動力伝達部３１と動力伝達部３３との関係において、動力伝達部３１が親ノードであり、動力伝達部３３は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３１のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３３のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３３のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３１のノードデータ１３ｂのポインタを登録する。
【００７１】
また、図５の例では、動力伝達部３１と動力伝達部３４との関係において、動力伝達部３１が親ノードであり、動力伝達部３４が子ノードである。図５の例では、生成部１４ｂは、動力伝達部３１のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３４のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３４のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３１のノードデータ１３ｂのポインタを登録する。
【００７２】
また、図５の例では、動力伝達部３３と、動力伝達部３４とが互いに同一階層ノードである。図５の例では、生成部１４ｂは、動力伝達部３３のノードデータ１３ｂの「同一階層ノードへのリンク」に、動力伝達部３４のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３４のノードデータ１３ｂの「同一階層ノードへのリンク」に、動力伝達部３３のノードデータ１３ｂのポインタを登録する。
【００７３】
また、図５の例では、動力伝達部３３と動力伝達部３６との関係において、動力伝達部３３が親ノードであり、動力伝達部３６は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３３のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３６のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３６のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３３のノードデータ１３ｂのポインタを登録する。
【００７４】
また、図５の例では、動力伝達部３６と駆動部３７との関係において、動力伝達部３６が親ノードであり、駆動部３７は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３６のノードデータ１３ｂの「子ノードへのリンク」に、駆動部３７のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、駆動部３７のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３６のノードデータ１３ｂのポインタを登録する。
【００７５】
また、図５の例では、動力伝達部３４と駆動部３８との関係において、動力伝達部３４が親ノードであり、駆動部３８は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３４のノードデータ１３ｂの「子ノードへのリンク」に、駆動部３８のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、駆動部３８のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３４のノードデータ１３ｂのポインタを登録する。
【００７６】
また、図５の例では、動力伝達部３２と動力伝達部３５との関係において、動力伝達部３２が親ノードであり、動力伝達部３５は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３２のノードデータ１３ｂの「子ノードへのリンク」に、動力伝達部３５のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、動力伝達部３５のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３２のノードデータ１３ｂのポインタを登録する。
【００７７】
また、図５の例では、動力伝達部３５と駆動部３９との関係において、動力伝達部３５が親ノードであり、駆動部３９は子ノードである。図５の例では、生成部１４ｂは、動力伝達部３５のノードデータ１３ｂの「子ノードへのリンク」に、駆動部３９のノードデータ１３ｂのポインタを登録する。また、図５の例では、生成部１４ｂは、駆動部３９のノードデータ１３ｂの「親ノードへのリンク」に、動力伝達部３５のノードデータ１３ｂのポインタを登録する。
【００７８】
また、図５の例では、動力部３０は根ノードである。また、図５の例では、動力伝達部３１〜３６は、内部ノードである。また、図５の例では、駆動部３７〜３９は、葉ノードである。
【００７９】
次に、生成部１４ｂが、全てのノードのノードデータ１３ａおよびモデルデータ１３ａに基づいて、モデルデータ１３ａを用いた場合より、精度の高さはそのままでシミュレーションの時間が短くなる新たなモデルデータを生成する処理について説明する。具体例を挙げて説明すると、生成部１４ｂは、この処理において、未選択の動力部データ１６を動力部データ配列１５ａの要素の中から一つ選択する。そして、生成部１４ｂは、選択した動力部データ１６の「動力部ツリーリンク」に登録されたポインタが示すノードデータ１３ｂを取得する。
【００８０】
そして、生成部１４ｂは、取得したノードデータ１３ｂに対応する動力部により発生された動力によって駆動する全ての駆動部のノードデータ１３ｂを、葉ノードのノードデータとして抽出する。生成部１４ｂは、各ノードデータ１３ｂの情報を用いて、接続関係を有するノードを探索することで、葉ノードのノードデータを抽出することができる。
【００８１】
そして、生成部１４ｂは、未選択の葉ノードを、処理対象の葉ノードである処理葉ノードとして一つ選択する。そして、生成部１４ｂは、選択した処理葉ノードの親ノードが動力伝達部であるか否かを判定する。選択した処理葉ノードの親ノードが動力伝達部でない場合には、新たなモデルを生成しないため、生成部１４ｂは、未選択の葉ノードを、処理葉ノードとして一つ選択する上記の処理を行い、以降の処理を同様に行う。なお、選択した処理葉ノードの親ノードが動力伝達部でない場合は、選択した処理葉ノードの親ノードが動力部である場合である。
【００８２】
一方、選択した処理葉ノードの親ノードが動力伝達部である場合には、生成部１４ｂは、処理葉ノードの親ノードを処理ノードとして選択する。そして、生成部１４ｂは、処理ノードのノードデータ１３ｂを、先入れ後出し方式のスタックへ入れる。
【００８３】
続いて、生成部１４ｂは、処理ノードの親ノードが動力伝達部であるか否かを判定する。処理ノードの親ノードが動力伝達部である場合には、生成部１４ｂは、処理ノードの親ノードを新たな処理ノードとして選択し、処理ノードのノードデータ１３ｂを、後入れ先出し方式のスタックへ入れる上記の処理を行い、以降の処理を同様に行う。
【００８４】
一方、処理ノードの親ノードが動力伝達部でない場合には、生成部１４ｂは、選択した動力部データ１６に対応する動力部から、選択した葉ノードの駆動部までのパス上に存在する動力伝達部のノードデータ１３ｂをスタックから取得する。ここで、取得したノードデータ１３ｂの順番は、動力伝達方向の最も下流側に位置する動力伝達部のノードデータ１３ｂが先頭であり、以降は、動力伝達方向の下流側から上流側までの動力伝達部の位置に対応する順番となっている。なお、処理ノードの親ノードが動力伝達部でない場合は、処理ノードの親ノードが動力部である場合である。
【００８５】
そして、生成部１４ｂは、取得したノードデータ１３ｂと、選択した根ノードの動力部とを新しい一つの動力部のモデルとした場合に、この新モデルに付与するＩＤを生成する。
【００８６】
続いて、生成部１４ｂは、取得したノードデータ１３ｂおよびモデルデータ１３ａに基づいて、次のような処理を行う。すなわち、生成部１４ｂは、取得したノードデータ１３ｂに対応する各動力伝達部と、選択した根ノードの動力部とを新しい動力部とした場合に、新しい動力部が駆動部に動力を与えて駆動部を駆動させるような新モデルを生成する。
【００８７】
例えば、生成部１４ｂは、動力部がモータであり、動力伝達部が歯車である場合には、新しい動力部の新モデルとして、これらのモータと歯車とを一つにしたモータのモデルを生成する。このような場合、生成部１４ｂは、取得したノードデータ１３ｂおよびモデルデータ１３ａに基づいて、新モデルのモータの回転速度を以下の式（１）により算出する。
回転速度＝動力部データ１６に含まれる回転速度×動力部データ１６に含まれる歯車の            歯数／駆動部に直接つながる動力伝達部の歯車の歯数・・・式（１）
【００８８】
また、生成部１４ｂは、取得したノードデータ１３ｂおよびモデルデータ１３ａに基づいて、次のような処理を行う。すなわち、生成部１４ｂは、取得したノードデータ１３ｂに対応する動力伝達部の数が奇数の場合には、新モデルのモータの回転方向を、動力部データ１６のモータの回転方向の逆方向として算出する。また、生成部１４ｂは、取得したノードデータ１３ｂに対応する動力伝達部の数が偶数の場合には、新モデルのモータの回転方向を、動力部データ１６のモータの回転方向として算出する。これは、動力伝達部の歯車の数が奇数の場合には、駆動部に直接つながる歯車の回転方向は、モータの回転方向と逆方向となり、動力伝達部の歯車の数が偶数の場合には、駆動部に直接つながる歯車の回転方向は、モータの回転方向と同一方向となるからである。
【００８９】
また、生成部１４ｂは、取得したノードデータ１３ｂおよびモデルデータ１３ａに基づいて、新モデルのモータの回転軸を、駆動部に直接つながる歯車の回転軸として算出する。生成部１４ｂは、駆動部に直接つながる歯車の回転軸を、スタックに最初に入れられたノードデータ１３ｂの「データへのリンク」に登録されたポインタが示す動力伝達部データ１７に含まれる「回転方向」から取得する。
【００９０】
そして、生成部１４ｂは、駆動部に直接つながる歯車の形状を、新モデルのモータの形状として算出する。また、生成部１４ｂは、駆動部に直接つながる歯車の位置を、新モデルのモータの位置として算出する。生成部１４ｂは、駆動部に直接つながる歯車の形状、位置を、スタックに最初に入れられたノードデータ１３ｂの「データへのリンク」に登録されたポインタが示す動力伝達部データ１７に含まれる「形状」、「位置」から取得する。
【００９１】
その後、生成部１４ｂは、新モデルのモータのＩＤ、回転速度、回転方向、回転軸、形状、位置などを含むデータを新モデルデータ１３ｃとして生成する。新モデルデータ１３ｃは、動力部および動力伝達部を一つの動力部としたモデルであり、従来のモデルデータ１３ａよりもデータ構造が簡易であるため、シミュレーションの処理時間を短くさせることが可能である。また、新モデルデータ１３ｃは、高い精度で算出された回転速度、回転方向、回転軸などのシミュレーション時に重要なパラメータを含んでいる。この結果、新モデルデータ１３ｃを用いたシミュレーションでは、より短い時間で精度の高いシミュレーションを行うことができる。続いて、生成部１４ｂは、生成した新モデルデータ１３ｃを記憶部１３に格納する。
【００９２】
そして、生成部１４ｂは、未選択の葉ノードを、処理葉ノードとして一つ選択する上記の処理を行い、以降の処理を同様に行う。
【００９３】
また、抽出した全ての葉ノードを処理葉ノードとして選択済みである場合には、生成部１４ｂは、未選択の動力部データ１６を動力部データ配列１５ａの要素の中から一つ選択する上記の処理を再び行い、以降の処理を同様に行う。生成部１４ｂは、このような処理を、全ての動力部データ１６が選択済みとなるまで繰り返し行う。
【００９４】
図６は、図５の例において、新モデルデータを生成した場合の一例を示す図である。図６の例では、シミュレーション対象を、図５の例において存在していた動力部３０、動力伝達部３１〜３６に代えて、新モデルデータ１３ｃの新動力部４０、４１、４２としたことを示す。
【００９５】
図６の例では、動力部３０および動力伝達部３１、３３、３６が、一つの簡易な動力部４０にされたことを示す。また、図６の例では、動力部３０および動力伝達部３１、３４が、一つの簡易な動力部４１にされたことを示す。また、図６の例では、動力部３０および動力伝達部３２、３５が、一つの簡易な動力部４２にされたことを示す。
【００９６】
図７Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。また、図７Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。図７Ａの例は、ロボットの腕７０に設けられた動力部であるモータ７１と、動力伝達部である平行軸歯車７２と、駆動部であるロボットの腕７３とが、シミュレーション対象であることを示す。一方、図７Ａの例において、生成部１４ｂは、モータ７１と平行軸歯車７２とを一つのモータとするモデルデータを新モデルデータ１３ｃとして生成する。この結果、図７Ｂの例に示すように、モータ７１および平行軸歯車７２に代えて、新モデルデータ１３ｃが示すモータ７４がシミュレーション対象となる。
【００９７】
なお、図７Ｂの例では、生成部１４ｂは、モータ７４の回転速度を、下記の式（２）によって算出する。
モータ７４の回転速度＝モータ７１の回転速度×モータ７１の歯車の歯数／平行軸歯車                        ７２の歯数・・・式（２）
【００９８】
また、図７Ｂの例では、生成部１４ｂは、モータ７１の回転方向と逆方向を、モータ７４の回転方向として算出する。
【００９９】
また、図７Ｂの例では、生成部１４ｂは、平行軸歯車７２の回転軸を、モータ７４の回転軸として算出する。
【０１００】
図８Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。また、図８Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。図８Ａの例は、ロボットの腕７５に設けられた動力部であるモータ７６と、動力伝達部である交差軸歯車７７と、駆動部であるロボットの腕７８とが、シミュレーション対象であることを示す。一方、図８Ａの例において、生成部１４ｂは、モータ７６と交差軸歯車７７とを一つのモータとするモデルデータを新モデルデータ１３ｃとして生成する。この結果、図８Ｂの例が示すように、モータ７６および交差軸歯車７７に代えて、新モデルデータ１３ｃが示すモータ７９がシミュレーション対象となる。
【０１０１】
なお、図８Ｂの例では、生成部１４ｂは、モータ７９の回転速度を、下記の式（３）によって算出する。
モータ７９の回転速度＝モータ７６の回転速度×モータ７６の歯車の歯数／交差軸歯車                        ７７の歯数・・・式（３）
【０１０２】
また、図８Ｂの例では、生成部１４ｂは、モータ７６の回転方向と逆方向を、モータ７９の回転方向として算出する。
【０１０３】
また、図８Ｂの例では、生成部１４ｂは、交差軸歯車７７の回転軸を、モータ７９の回転軸として算出する。
【０１０４】
図９Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。また、図９Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。図９Ａの例は、ロボットの腕８０に設けられた動力部であるモータ８１と、動力伝達部である平行軸歯車８２と、平行軸歯車８３と、駆動部であるロボットの腕８４とが、シミュレーション対象であることを示す。一方、図９Ａの例において、生成部１４ｂは、モータ８１と平行軸歯車８２と平行軸歯車８３とを一つのモータとするモデルデータを新モデルデータ１３ｃとして生成する。この結果、図９Ｂの例が示すように、モータ８１、平行軸歯車８２および平行軸歯車８３に代えて、新モデルデータ１３ｃが示すモータ８５がシミュレーション対象となる。
【０１０５】
なお、図９Ｂの例では、生成部１４ｂは、モータ８５の回転速度を、下記の式（４）によって算出する。
モータ８５の回転速度＝モータ８１の回転速度×モータ８１の歯車の歯数／平行軸歯車                        ８３の歯数・・・式（４）
【０１０６】
また、図９Ｂの例では、生成部１４ｂは、モータ８１の回転方向を、モータ８５の回転方向として算出する。
【０１０７】
また、図９Ｂの例では、生成部１４ｂは、平行軸歯車８３の回転軸を、モータ８５の回転軸として算出する。
【０１０８】
図１０Ａは、生成部による新モデル生成前のシミュレーション対象の一例を示す図である。また、図１０Ｂは、生成部による新モデル生成後のシミュレーション対象の一例を示す図である。図１０Ａの例は、ロボットの腕９０に設けられた動力部であるモータ９１と、動力伝達部である平行軸歯車９２と、平行軸歯車９３と、駆動部であるロボットの腕９４とが、シミュレーション対象であることを示す。また、図１０Ａの例は、平行軸歯車９５と、平行軸歯車９６と、ロボットの腕９７とが、シミュレーション対象であることを示す。一方、図１０Ａの例では、生成部１４ｂは、モータ９１と平行軸歯車９２と平行軸歯車９３とを一つのモータとするモデルデータ、およびモータ９１と平行軸歯車９５と平行軸歯車９６とを一つのモータとするモデルデータを新モデルデータ１３ｃとして生成する。この結果、図１０Ｂの例が示すように、モータ９１、平行軸歯車９２および平行軸歯車９３に代えて、新モデルデータ１３ｃが示すモータ９８がシミュレーション対象となる。また、図１０Ｂの例が示すように、モータ９１、平行軸歯車９５および平行軸歯車９６に代えて、新モデルデータ１３ｃが示すモータ９９がシミュレーション対象となる。なお、各モータ９８、９９の回転速度、回転方向、回転軸などは、上記の例と同様に算出することができる。
【０１０９】
図１の説明に戻り、シミュレーション部１４ｃは、生成部１４ｂにより生成された新モデルデータ１３ｃを用いてシミュレーションを行う。シミュレーション部１４ｃは、モデルデータ１３ａと比較して、簡易なモデルであり、精度の高いパラメータを有する新モデルデータ１３ｃを用いて、装置の動作のシミュレーションを行うので、より短い時間で精度の高いシミュレーションを行うことができる。
【０１１０】
図１１は、シミュレーション部による動作のシミュレーションの一例を説明するための図である。図１１の例では、新モデルデータ１３ｃの新動力部であるモータ５０は、台座５１に接続されており、移動はしないが、回転動作が可能である。
【０１１１】
また、図１１の例では、モータ５０に駆動部５２の一端が接続されており、駆動部５２は、モータ５０の回転に伴い移動する。また、図１１の例では、駆動部５２の他端に、新モデルデータ１３ｃの新動力部であるモータ５３が接続されている。モータ５３に駆動部５４の一端が接続されており、駆動部５４は、モータ５３の回転に伴い移動する。
【０１１２】
例えば、シミュレーション部１４ｃは、所定の時刻からの各時間のモータ５０、５３の回転角度を計算するとともに、各時間のモータ５０、５３の回転角度に応じた駆動部５２、５４の位置を計算し、計算結果に応じたシミュレーション結果を出力部１２に送信する。これにより、出力部１２からシミュレーション結果が表示されたり、音声出力される。
【０１１３】
図１１の例では、シミュレーション部１４ｃは、時刻０におけるモータ５０、５３の位置Ｐ５０＿０、Ｐ５３＿０を計算する。また、図１１の例では、シミュレーション部１４ｃは、時刻０における駆動部５２、５４の位置Ｐ５２＿０、Ｐ５４＿０を計算する。
【０１１４】
そして、図１１の例では、シミュレーション部１４ｃは、時刻０におけるモータ５０、５３、駆動部５２、５４の各位置に、モータ５０、５３、駆動部５２、５４の各形状が出力部１２の表示デバイスに表示されるように、次のような処理を行う。すなわち、シミュレーション部１４ｃは、各形状および各位置を出力部１２に送信する。
【０１１５】
そして、図１１の例では、シミュレーション部１４ｃは、時刻０から所定時間Ｔ経過後の時刻Ｔにおけるモータ５０、５３の回転角度を計算する。シミュレーション部１４ｃは、例えば、モータ５０の回転速度Ｗ５０と所定時間Ｔとから、Ｗ５０と所定時間Ｔとの積（Ｗ５０×Ｔ）を、時刻０から時刻Ｔまでのモータ５０の回転角度Ｗ１として計算する。
【０１１６】
そして、図１１の例では、シミュレーション部１４ｃは、時刻０の駆動部５２の位置から、モータ５０を中心として角度Ｗ１だけ回転させた駆動部５２の位置Ｐ５２＿Ｔを計算する。
【０１１７】
また、図１１の例では、シミュレーション部１４ｃは、例えば、モータ５３の回転速度Ｗ５３と所定時間Ｔとから、Ｗ５３と所定時間Ｔとの積（Ｗ５３×Ｔ）を、時刻０から時刻Ｔまでのモータ５３の回転角度Ｗ２として計算する。
【０１１８】
また、図１１の例では、シミュレーション部１４ｃは、時刻０のモータ５３の位置から、モータ５０を中心として角度Ｗ１だけ回転させたモータ５３の位置Ｐ５３＿Ｔを、時刻Ｔにおけるモータ５３の位置として計算する。
【０１１９】
また、図１１の例では、シミュレーション部１４ｃは、時刻０の駆動部５４の位置から、モータ５０を中心として角度Ｗ１だけ回転させた駆動部５４の位置Ｐ５４＿Ｔ１を計算する。そして、図１１の例では、シミュレーション部１４ｃは、駆動部５４の位置Ｐ５４＿Ｔ１から、モータ５３の位置Ｐ５３＿Ｔを中心として角度Ｗ２だけ回転させた駆動部５４の位置Ｐ５４＿Ｔを、時刻Ｔにおける駆動部５４の位置として計算する。
【０１２０】
そして、図１１の例では、シミュレーション部１４ｃは、時刻Ｔにおけるモータ５０、５３、駆動部５２、５４の各位置に、モータ５０、５３、駆動部５２、５４の各形状が出力部１２の表示デバイスに表示されるように、次のような処理を行う。すなわち、シミュレーション部１４ｃは、各形状および各位置などのシミュレーション結果を出力部１２に送信する。
【０１２１】
シミュレーション部１４ｃは、上記のようなシミュレーションにおける計算を各時刻ごとに繰り返し行い、シミュレーション結果を出力部１２に送信する。
【０１２２】
制御部１４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【０１２３】
［処理の流れ］
次に、本実施例に係るシミュレーション装置１０の処理の流れを説明する。図１２は、実施例１に係るシミュレーション処理の手順を示すフローチャートである。このシミュレーション処理は、入力部１１からシミュレーション処理を実行する指示が制御部１４に入力された場合に実行される。
【０１２４】
図１２に示すように、取得部１４ａは、モデルデータ１３ａを取得する（ステップＳ１０１）。
【０１２５】
生成部１４ｂは、後述のツリー生成処理を実行する（ステップＳ１０２）。生成部１４ｂは、後述のモデル生成処理を実行する（ステップＳ１０３）。そして、シミュレーション部１４ｃは、新モデルデータ１３ｃを用いてシミュレーションを行い（ステップＳ１０４）、処理を終了する。
【０１２６】
図１３は、実施例１に係るツリー生成処理の手順を示すフローチャートである。
【０１２７】
図１３に示すように、生成部１４ｂは、変数ｉの値を１に設定する（ステップＳ２０１）。生成部１４ｂは、動力部データ配列［ｉ］の要素が示す動力部データ１６を選択し、選択した動力部データ１６と、対応するノードデータ１３ｂとでリンクを張る（ステップＳ２０２）。具体例を挙げると、生成部１４ｂは、選択した動力部データ１６の「動力部ツリーリンク」に、選択した動力部データ１６の「名前」が示す動力部のノードデータ１３ｂのポインタを登録する。また、生成部１４ｂは、かかるノードデータ１３ｂの「データへのリンク」に、選択した動力部データ１６のポインタを登録する。
【０１２８】
生成部１４ｂは、選択した動力部データ１６に含まれる名前と、作用元名が一致する動力伝達部データ１７および駆動部データ１８を全て抽出することで、子ノードを抽出する（ステップＳ２０３）。
【０１２９】
生成部１４ｂは、親ノードのノードデータ１３ｂの「子ノードへのリンク」に、子ノードのノードデータ１３ｂのポインタを登録する。また、生成部１４ｂは、子ノードのノードデータ１３ｂの「親ノードへのリンク」に、親ノードのノードデータ１３ｂポインタを登録する（ステップＳ２０４）。
【０１３０】
生成部１４ｂは、抽出された子ノードのノードデータ１３ｂに、同一階層ノードのノードデータ１３ｂのポインタを登録する（ステップＳ２０５）。そして、生成部１４ｂは、子ノードの中から未選択の子ノードを、処理対象のノードである処理ノードとして選択する（ステップＳ２０６）。
【０１３１】
生成部１４ｂは、選択した処理ノードが、駆動部であるか否かを判定する（ステップＳ２０７）。選択した処理ノードが駆動部でない場合（ステップＳ２０７否定）には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、選択した処理ノードの動力伝達部データ１７に含まれる名前と、作用元名が一致する動力伝達部データ１７および駆動部データ１８を全て抽出することで、子ノードを抽出し（ステップＳ２０８）、ステップＳ２０４に戻る。
【０１３２】
選択した処理ノードが駆動部である場合（ステップＳ２０７肯定）には、生成部１４ｂは、選択した処理ノードに同一階層ノードが存在し、その同一階層ノードが未選択であるか否かを判定する（ステップＳ２０９）。同一階層ノードが未選択である場合（ステップＳ２０９肯定）には、生成部１４ｂは、未選択の同一階層ノードを処理ノードとして選択し（ステップＳ２１０）、ステップＳ２０７に戻る。
【０１３３】
一方、同一階層ノードが未選択でない場合（ステップＳ２０９否定）には、生成部１４ｂは、処理ノードの親ノードが根ノードであるか否かを判定する（ステップＳ２１１）。処理ノードの親ノードが根ノードでない場合（ステップＳ２１１否定）には、生成部１４ｂは、処理ノードの親ノードを新たな処理ノードとして選択し（ステップＳ２１２）、ステップＳ２０９へ戻る。
【０１３４】
一方、処理ノードの親ノードが根ノードである場合（ステップＳ２１１肯定）には、生成部１４ｂは、変数ｉの値を一つインクリメントする（ステップＳ２１３）。そして、生成部１４ｂは、変数ｉの値が、動力部データ配列１５ａの要素数ｌ以下であるか否かを判定する（ステップＳ２１４）。変数ｉの値が、動力部データ配列１５ａの要素数ｌ以下である場合（ステップＳ２１４肯定）には、ステップＳ２０２へ戻る。一方、変数ｉの値が、動力部データ配列１５ａの要素数ｌ以下でない場合（ステップＳ２１４否定）には、処理結果を制御部１４の内部メモリに格納し、リターンする。
【０１３５】
図１４は、実施例１に係るモデル生成処理の手順を示すフローチャートである。
【０１３６】
図１４に示すように、生成部１４ｂは、変数ｊの値を１に設定する（ステップＳ３０１）。生成部１４ｂは、動力部データ配列［ｊ］の要素の動力部データ１６を選択する（ステップＳ３０２）。
【０１３７】
生成部１４ｂは、選択した動力部データ１６の「動力部ツリーリンク」に登録されたポインタが示すノードデータ１３ｂを取得する。そして、生成部１４ｂは、取得したノードデータ１３ｂに対応する動力部により発生された動力によって駆動する全ての駆動部のノードデータを葉ノードのノードデータとして抽出する（ステップＳ３０３）。
【０１３８】
生成部１４ｂは、抽出した全ての葉ノードを処理葉ノードとして選択したか否かを判定する（ステップＳ３０４）。抽出した全ての葉ノードを、処理葉ノードとして選択していない場合（ステップＳ３０４否定）には、生成部１４ｂは、未選択の葉ノードを、処理対象の葉ノードである処理葉ノードとして一つ選択する（ステップＳ３０５）。
【０１３９】
そして、生成部１４ｂは、選択した処理葉ノードの親ノードが動力伝達部であるか否かを判定する（ステップＳ３０６）。選択した処理葉ノードの親ノードが動力伝達部でない場合（ステップＳ３０６否定）には、ステップＳ３０４に戻る。
【０１４０】
一方、選択した処理葉ノードの親ノードが動力伝達部である場合（ステップＳ３０６肯定）には、生成部１４ｂは、処理葉ノードの親ノードを処理ノードとして選択する（ステップＳ３０７）。そして、生成部１４ｂは、処理ノードのノードデータ１３ｂを、後入れ先出し方式のスタックへ入れる（ステップＳ３０８）。
【０１４１】
続いて、生成部１４ｂは、処理ノードの親ノードが動力伝達部であるか否かを判定する（ステップＳ３０９）。処理ノードの親ノードが動力伝達部である場合（ステップＳ３０９肯定）には、生成部１４ｂは、処理ノードの親ノードを新たな処理ノードとして選択し（ステップＳ３１０）、ステップＳ３０８へ戻る。
【０１４２】
一方、処理ノードの親ノードが動力伝達部でない場合（ステップＳ３０９否定）には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、選択した動力部データ１６に対応する動力部から、選択した葉ノードの駆動部までのパス上に存在する動力伝達部のノードデータ１３ｂをスタックから取得する（ステップＳ３１１）。
【０１４３】
そして、生成部１４ｂは、取得したノードデータ１３ｂと、選択した根ノードの動力部とを新しい動力部のモデルとした場合に、この新モデルに付与するＩＤを生成する（ステップＳ３１２）。
【０１４４】
続いて、生成部１４ｂは、新モデルのモータの回転速度、回転方向、回転軸、形状、位置などを算出する（ステップＳ３１３）。生成部１４ｂは、新モデルのモータのＩＤ、回転速度、回転方向、回転軸、形状、位置などを含むデータを新モデルデータ１３ｃとして生成し、生成した新モデルデータ１３ｃを記憶部１３に格納し（ステップＳ３１４）、ステップＳ３０４へ戻る。
【０１４５】
一方、抽出した全ての葉ノードを、処理葉ノードとして選択した場合（ステップＳ３０４肯定）には、生成部１４ｂは、変数ｊの値を一つインクリメントする（ステップＳ３１５）。そして、生成部１４ｂは、変数ｊの値が、動力部データ配列１５ａの要素数ｌ以下であるか否かを判定する（ステップＳ３１６）。変数ｊの値が、動力部データ配列１５ａの要素数ｌ以下である場合（ステップＳ３１６肯定）には、ステップＳ３０２へ戻る。一方、変数ｊの値が、動力部データ配列１５ａの要素数ｌ以下でない場合（ステップＳ３１６否定）には、処理結果を制御部１４の内部メモリに格納し、リターンする。
【０１４６】
［実施例１の効果］
上述してきたように、本実施例に係るシミュレーション装置１０は、動力部、動力伝達部、および駆動部を備えたシミュレーション対象の装置のモデルデータ１３ａに基づいて、次のような処理を行う。すなわち、本実施例に係るシミュレーション装置１０は、この動力部および動力伝達部を新たな動力部とし、新たな動力部が駆動部に動力を与えて駆動部を駆動させるような新モデルデータ１３ｃを生成する。この際に、本実施例に係るシミュレーション装置１０は、モデルデータ１３ａに基づいて、動力部および動力伝達部が組み合わされた単一の新たな動力部のモデルを生成する。そして、本実施例に係るシミュレーション装置１０は、生成された新モデルデータ１３ｃを用いて装置の動作のシミュレーションを行う。このように、本実施例によれば、モデルデータ１３ａと比較して、簡易で精度の高いパラメータを有するモデルである新モデルデータ１３ｃを用いて、装置の動作のシミュレーションを行うので、より短い時間で精度の高いシミュレーションを行うことができる。
【０１４７】
また、本実施例に係るシミュレーション装置１０は、駆動部に関する駆動部データ、動力伝達方向の最上流側に位置する動力伝達部の動力伝達部データ、および動力伝達方向の最下流側に位置する動力伝達部の動力伝達部データに基づいて、次のような処理を行う。すなわち、本実施例に係るシミュレーション装置１０は、回転速度、回転方向、回転軸、形状、位置などの新たな駆動部の駆動部データを算出する。したがって、本実施例によれば、全ての動力伝達部データを用いて、新たな駆動部の駆動部データを算出する場合と比較して、より少ない情報量で、新たな駆動部の駆動部データを算出することができる。
【０１４８】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１４９】
［モデル変換装置］
上記の実施例１では、シミュレーションを行うシミュレーション部１４ｃを有する場合について例示したが、開示の装置はこれに限定されない。例えば、開示の装置は、シミュレーション部１４ｃを省略することができる。この場合、開示の装置は、例えば、新モデルデータ１３ｃを生成するモデル変換装置として機能する。
【０１５０】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、既に、同一階層ノード間でリンクが張られている場合には、図１３に示すステップＳ２０５の処理を省略することもできる。
【０１５１】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。例えば、図１４に示すステップＳ３１２の処理と、ステップＳ３１３の処理との順番を入れ替えることもできる。
【０１５２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す取得部１４ａと生成部１４ｂとが統合されてもよい。
【実施例２】
【０１５３】
［シミュレーションプログラム］
また、上記の実施例で説明したシミュレーション装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１５を用いて、上記の実施例で説明したシミュレーション装置と同様の機能を有するシミュレーションプログラムを実行するコンピュータの一例を説明する。図１５は、シミュレーションプログラムを実行するコンピュータを示す図である。
【０１５４】
図１５に示すように、実施例２におけるコンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０とを有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【０１５５】
ＲＯＭ３２０には、上記の実施例１で示す取得部１４ａと、生成部１４ｂと、シミュレーション部１４ｃと同様の機能を発揮するシミュレーションプログラム３２０ａが予め記憶される。なお、シミュレーションプログラム３２０ａについては、適宜分離しても良い。例えば、取得部１４ａと、生成部１４ｂと同様の機能を発揮するモデル変換プログラムと、シミュレーション部１４ｃと同様の機能を発揮するプログラムとに分離しても良い。
【０１５６】
そして、ＣＰＵ３１０が、シミュレーションプログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【０１５７】
そして、ＨＤＤ３３０には、モデルデータ３３０ａ、ノードデータ３３０ｂ、新モデルデータ３３０ｃが設けられる。これらモデルデータ３３０ａ、ノードデータ３３０ｂ、新モデルデータ３３０ｃのそれぞれは、図１に示したモデルデータ１３ａ、ノードデータ１３ｂ、新モデルデータ１３ｃのそれぞれに対応する。
【０１５８】
そして、ＣＰＵ３１０は、モデルデータ３３０ａと、ノードデータ３３０ｂと、新モデルデータ３３０ｃとを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納されたモデルデータ３４０ａと、ノードデータ３４０ｂと、新モデルデータ３４０ｃとを用いて、シミュレーションプログラム３２０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。
【０１５９】
なお、上記したシミュレーションプログラム３２０ａについては、必ずしも最初からＲＯＭ３２０に記憶させておく必要はない。
【０１６０】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（FD）、ＣＤ（Compact  Disk）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disk）ディスクなどの「可搬用の物理媒体」にプログラムを記憶させておく。また、コンピュータ３００に挿入される光磁気ディスク、ＩＣ（Integrated  Circuit）カードなどの「可搬用の物理媒体」にプログラムを記憶させておいてもよい。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。  
【０１６１】
さらには、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）などを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。また、ＷＡＮ（Wide  Area  Network）を介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておき、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１６２】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【０１６３】
（付記１）コンピュータに、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを取得し、
取得した前記モデルに基づいて、前記第１の動力部および前記動力伝達部が組み合わされた単一の新たな第２の動力部のモデルを生成する
処理を実行させることを特徴とするモデル変換プログラム。
【０１６４】
（付記２）コンピュータに、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルに基づいて、前記第１の動力部および前記動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成し、
生成されたモデルを用いて前記装置の動作のシミュレーションを行う
処理を実行させることを特徴とするシミュレーションプログラム。
【０１６５】
（付記３）前記モデルを生成する処理は、前記駆動部に関するデータ、動力伝達方向の最上流側に位置する前記動力伝達部に関するデータ、および前記動力伝達方向の最下流側に位置する動力伝達部に関するデータに基づいて、前記第２の動力部に関するデータを含むモデルを生成する
ことを特徴とする付記１記載のモデル変換プログラム。
【０１６６】
（付記４）前記モデルを生成する処理は、前記駆動部に関するデータ、動力伝達方向の最上流側に位置する前記動力伝達部に関するデータ、および前記動力伝達方向の最下流側に位置する動力伝達部に関するデータに基づいて、前記第２の動力部に関するデータを含むモデルを生成する
ことを特徴とする付記２記載のシミュレーションプログラム。
【０１６７】
（付記５）動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを記憶する記憶部と、
前記モデルに基づいて、前記第１の動力部および前記動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する生成部と、
前記生成部により生成されたモデルを用いて前記装置の動作のシミュレーションを行うシミュレーション部と
を有することを特徴とするシミュレーション装置。
【０１６８】
（付記６）前記生成部は、前記駆動部に関するデータ、動力伝達方向の最上流側に位置する前記動力伝達部に関するデータ、および前記動力伝達方向の最下流側に位置する動力伝達部に関するデータに基づいて、前記第２の動力部に関するデータを含むモデルを生成する
付記５記載のシミュレーション装置。
【０１６９】
（付記７）コンピュータが実行するモデル変換方法であって、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルを取得し、
取得した前記モデルに基づいて、前記第１の動力部および前記動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成する
ことを特徴とするモデル変換方法。
【０１７０】
（付記８）コンピュータが実行するシミュレーション方法であって、
動力を発生する第１の動力部、前記第１の動力部により発生された動力を伝達するための動力伝達部、および前記動力伝達部により伝達された動力に応じて駆動する駆動部を備えたシミュレーション対象の装置のモデルに基づいて、前記第１の動力部および前記動力伝達部を第２の動力部とし、該第２の動力部が前記駆動部に動力を与えて前記駆動部を駆動させるようなモデルを生成し、
生成されたモデルを用いて前記装置の動作のシミュレーションを行う
ことを特徴とするシミュレーション方法。
【０１７１】
（付記９）前記モデルを生成する方法は、前記駆動部に関するデータ、動力伝達方向の最上流側に位置する前記動力伝達部に関するデータ、および前記動力伝達方向の最下流側に位置する動力伝達部に関するデータに基づいて、前記第２の動力部に関するデータを含むモデルを生成する
ことを特徴とする付記７記載のモデル変換方法。
【０１７２】
（付記１０）前記モデルを生成する方法は、前記駆動部に関するデータ、動力伝達方向の最上流側に位置する前記動力伝達部に関するデータ、および前記動力伝達方向の最下流側に位置する動力伝達部に関するデータに基づいて、前記第２の動力部に関するデータを含むモデルを生成する
ことを特徴とする付記８記載のシミュレーション方法。
【符号の説明】
【０１７３】
１０      シミュレーション装置
１１      入力部
１２      出力部
１３      記憶部
１３ａ    モデルデータ
１３ｂ    ノードデータ
１３ｃ    新モデルデータ
１４      制御部
１４ａ    取得部
１４ｂ    生成部
１４ｃ    シミュレーション部
【図１】
0005552037.tif 000002
【図２Ａ】
0005552037.tif 000003
【図２Ｂ】
0005552037.tif 000004
【図２Ｃ】
0005552037.tif 000005
【図２Ｄ】
0005552037.tif 000006
【図３】
0005552037.tif 000007
【図４】
0005552037.tif 000008
【図５】
0005552037.tif 000009
【図６】
0005552037.tif 000010
【図７Ａ】
0005552037.tif 000011
【図７Ｂ】
0005552037.tif 000012
【図８Ａ】
0005552037.tif 000013
【図８Ｂ】
0005552037.tif 000014
【図９Ａ】
0005552037.tif 000015
【図９Ｂ】
0005552037.tif 000016
【図１０Ａ】
0005552037.tif 000017
【図１０Ｂ】
0005552037.tif 000018
【図１１】
0005552037.tif 000019
【図１２】
0005552037.tif 000020
【図１３】
0005552037.tif 000021
【図１４】
0005552037.tif 000022
【図１５】
0005552037.tif 000023