(57)【要約】【課題】多数の部品が組み合わされて構築された動力学モデルに基づき動力学計算を行う場合に、処理負荷を上げずに精度の高い動力学計算を行う。【解決手段】可動軸で接続された部品３０２，３０４に関して、当該部品３０２，３０４の動きに追従する１乃至複数の固定軸で接続された部品３０３，３０５を合成して、それぞれについて可動軸で接続された１つの部品体を生成する。この部品３０２と部品３０３が合成された部品体及び部品３０４と部品３０５が合成された部品体を用いて動力学計算用モデルを構築し、該動力学計算用モデルに基づき動力学計算を行う。これにより、多数の部品が組み合わされて構築された動力学モデルが用いられても、処理負荷を上げずに精度の高い動力学計算を行うことができる。【選択図】図６
2015148994.tif 000002
【特許請求の範囲】
【請求項１】
部品同士を相対的に可動自在につなぐ可動軸と部品同士を固定してつなぐ固定軸とで、複数の部品が接続されて構成される物体の動作を計算する動力学計算方法であって、
制御部が、可動軸で接続された部品の動きに追従する１乃至複数の固定軸で接続された部品がある場合は、前記可動軸で接続された部品に前記１乃至複数の固定軸で接続された部品を合成して可動軸で接続された１つの部品体を生成し、可動軸で接続された部品の動きに追従する固定軸で接続された部品がない場合は、当該可動軸で接続された部品を可動軸で接続された１つの部品体とする部品体生成手順と、
前記制御部が、前記可動軸で接続された部品体を用いて動力学計算用モデルを構築する構築手順と、
前記制御部が、前記構築した動力学計算用モデルに基づき動力学計算を行う計算手順と、を備える動力学計算方法。
【請求項２】
前記制御部が、前記複数の部品毎に、当該部品の質量情報と当該部品の位置情報と当該部品の接続された軸が可動軸か固定軸かを示す種別情報とを少なくとも含む部品データを取得する取得手順をさらに備え、
前記部品体生成手順は、前記取得した部品データに基づいて、前記可動軸で接続された部品の動きに追従する前記１乃至複数の固定軸で接続された部品の質量情報を、当該可動軸で接続された部品の質量情報に合成する手順を含むことを特徴とする請求項１に記載の動力学計算方法。
【請求項３】
前記複数の部品は、根本方向から葉方向に向けて接続され、
前記部品体生成手順は、前記可動軸で接続された部品より根本方向に位置する前記固定軸で接続された部品の位置情報を、当該可動軸で接続された部品の位置情報に合成する手順を含むことを特徴とする請求項２に記載の動力学計算方法。
【請求項４】
前記制御部が、前記部品データに応じた複数の部品を用いてユーザ設定モデルを構築するモデル構築手順と、
前記制御部が、前記構築したユーザ設定モデルを用いて前記部品データに応じた複数の部品毎に各部品に係る外力を求める外力算出手順とを、さらに備え、
前記計算手順は、前記構築した動力学計算用モデルに基づき動力学計算を行う際に、前記部品体に合成された１乃至複数の固定軸で接続された部品に関し、前記求めた部品毎に係る外力を反映して動力学計算を行うことを特徴とする請求項２又は３に記載の動力学計算方法。
【請求項５】
前記物体は、複数の可動軸を介して複数の部品を動作可能に接続して構成される多軸ロボットであることを特徴とする請求項１乃至４のいずれか一項に記載の動力学計算方法。
【請求項６】
請求項１乃至５のいずれか一項に記載の動力学計算方法をコンピュータに実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機構解析シミュレーション等に用いられる動力学計算方法及びプログラム並びに記録媒体に関する。特に、可動軸で接続された部品及び固定軸で接続された部品で構成される物体の動力学計算に用いて好適な、動力学計算方法及びプログラム並びに記録媒体に関する。
【背景技術】
【０００２】
従来から、動作機構を備えた機械製品の設計時には、事前に製品の動作確認を行うために、コンピュータ等の計算機を利用した機構解析シミュレーションが行われている。機構解析シミュレーションでは、動力学モデル（シミュレーションモデルとも呼ぶ）に基づき順動力学に従った動力学計算を行うことで、製品全体の動きをシミュレーションする。製品の設計者（以下、ユーザと記す）は機構解析シミュレーションを行うことによって、製品の動作だけでなく、製品に含まれる部品同士の干渉及び各部品にかかる力などを解析することができる。
【０００３】
ところで、多数の部品を可動軸や固定軸で接続して構築された多軸ロボットなどでは、各軸へのトルク入力などに従って各部の変位／速度／加速度が変わり、時系列での姿勢が決定される。しかし、実際の多軸ロボットの動きは重力／慣性などの影響を受けることから、ユーザがそれらの影響を受けた動きを予測して製品設計を行うのは難しい。そこで、リンク機構を有する多軸ロボットの動作確認や周辺環境との干渉確認のためにシミュレーションを行う、リンク機構解析装置及びリンク機構間接データ演算装置が提案されている（特許文献１）。この装置では、リンク機構に関して駆動量あるいは駆動力を入力パラメータとして動力学計算を行うことで、全体の動きをシミュレーションする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３３６１００７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンピュータ等を利用してシミュレーションを行う場合、ユーザは事前にコンピュータ上で多数の部品を可動軸や固定軸で接続して、シミュレーションモデルを構築する必要がある。特に多軸ロボットシステムのような、部品の交換、部品の位置変更、部品の組み合わせ変更等が頻繁に行われ得る製品のシミュレーションを行う場合には、再利用性の高いシミュレーションモデルが用いられる。これによれば、多軸ロボットシステムを構成する部品が予め細分化されているので、ユーザは必要に応じて部品の組み合わせを変更するだけで、幾通りものパターンのシミュレーションモデルを簡単に構築することができるので便利である。
【０００６】
しかし、従来では、再利用性をより高めるべく部品を細分化すればするほど、シミュレーションとしての利便性の低下が顕著であった。すなわち、部品を細分化すると、シミュレーションモデル構築のために組み合わせる部品の数は増える。そして、動力学計算は部品数に応じて計算量が増大するという特徴を有する。そのために、多数の部品が組み合わされて構築されたシミュレーションモデルを用いると、動力学計算にかかる処理負荷が増し、結果としてシミュレーション開始から結果出力までに時間を要するので使い勝手がよくなかった。
【０００７】
本発明は上記問題に鑑みてなされ、多数の部品が組み合わされて構築された動力学モデルに基づき動力学計算を行う場合に、処理負荷を上げずに精度の高い動力学計算を行うことのできる動力学計算方法及びプログラム、並びに記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る動力学計算方法は、部品同士を相対的に可動自在につなぐ可動軸と部品同士を固定してつなぐ固定軸とで、複数の部品が接続されて構成される物体の動作を計算する動力学計算方法であって、制御部が、可動軸で接続された部品の動きに追従する１乃至複数の固定軸で接続された部品がある場合は、前記可動軸で接続された部品に前記１乃至複数の固定軸で接続された部品を合成して可動軸で接続された１つの部品体を生成し、可動軸で接続された部品の動きに追従する固定軸で接続された部品がない場合は、当該可動軸で接続された部品を可動軸で接続された１つの部品体とする部品体生成手順と、前記制御部が、前記可動軸で接続された部品体を用いて動力学計算用モデルを構築する構築手順と、前記制御部が、前記構築した動力学計算用モデルに基づき動力学計算を行う計算手順と、を備える。
【発明の効果】
【０００９】
本発明によれば、可動軸で接続された部品に関して、当該部品の動きに追従する１乃至複数の固定軸で接続された部品を合成することで部品体を生成し、この部品体を用いて構築された動力学計算用モデルに基づき動力学計算が行われる。これにより、多数の部品が組み合わされて構築された動力学モデルが用いられても、処理負荷を上げずに精度の高い動力学計算を行うことができるようになる。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る動力学計算方法を適用したシミュレーション処理を実行する装置を示すハード構成ブロック図である。
【図２】部品データ入力画面を示す概略図である。
【図３】本発明に係る動力学計算方法を適用したシミュレーション処理を示すフローチャートである。
【図４】動力学計算用モデル構築処理を示すフローチャートである。
【図５】固定軸接続部品合成処理を示すフローチャートである。
【図６】ユーザ設定モデルの一例を示す概略図である。
【図７】動力学計算用モデルの一例を示す概略図である。
【図８】動力学計算方法の別の実施形態を適用したシミュレーション処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施形態を詳細に説明する。まず、本発明に係る動力学計算方法を適用したシミュレーション処理を実行する装置について、図１を用いて説明する。
【００１２】
＜シミュレーション装置＞
図１に示すシミュレーション装置１０は例えばパーソナルコンピュータを用いて構成されており、そこにおいて、機構解析シミュレーションはコンピュータが所定の制御プログラム（後述する図３乃至図５参照）を実行することにより実施される。勿論、シミュレーション処理はコンピュータソフトウェアプログラムの形態に限られず、例えば、ＤＳＰ（ディジタル・シグナル・プロセッサ）によって処理されるマイクロプログラムの形態でも実施可能である。
【００１３】
図１に示すように、シミュレーション装置１０は、ＣＰＵ１、リードオンリメモリ（ＲＯＭ）２、ランダムアクセスメモリ（ＲＡＭ）３からなるコンピュータによって制御される。ＣＰＵ１は、装置全体の動作を制御する制御部として機能する。このＣＰＵ１に対して、通信バス１Ｄ（例えばデータ及びアドレスバス）を介してＲＯＭ２、ＲＡＭ３、入力装置４、表示装置５、記憶装置６がそれぞれ接続されている。
【００１４】
ＲＯＭ２は、ＣＰＵ１により実行あるいは参照される制御プログラムや各種データ等を格納する。ＲＡＭ３は、ＣＰＵ１が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。入力装置４は装置本体に接続されるマウスやキーボードであって、例えば部品データの入力やＣＰＵ１に対する各種制御命令を指示するための操作子として機能する。表示装置５は液晶表示パネル（ＬＣＤ）やＣＲＴ等から構成されるディスプレイであって、例えば「部品データ入力画面」（後述する図２参照）などの各種画面、あるいはＣＰＵ１の制御状態などを表示する。
【００１５】
記憶装置６は、ＣＰＵ１が実行するシミュレーション処理（図３参照）などの各種制御プログラムの他に、部品データ、部品体データ、ユーザ設定モデル、動力学計算用モデルなどの各種データを記憶する。なお、ＲＯＭ２に制御プログラムが記憶されていない場合、記憶装置６に制御プログラムを記憶させておき、それをＲＡＭ３に読み込むことにより、ＲＯＭ２に制御プログラムを記憶している場合と同様の動作をＣＰＵ１に実行させることができる。また、記憶装置６はハードディスク装置に限られず、着脱自在な様々な形態のコンピュータ読み取り可能な記録媒体を利用する装置などであってよい。
【００１６】
＜部品データ入力画面＞
ユーザは、図１に示した装置でシミュレーション処理（図３参照）を実行することにより、機構解析シミュレーションを行うことができる。シミュレーション処理ではシミュレーションモデルに基づき動力学計算を行うがために、ユーザは予めシミュレーションモデルを構築しておく必要がある（以下、これをユーザ設定モデルと呼ぶ）。ユーザ設定モデルは、ユーザにより登録された部品の組み合わせに応じてその都度異なるモデルが構築される。そこで、ユーザ設定モデル構築のために、ユーザにシミュレーション対象の部品を登録させる「部品データ入力画面」について図２を用いて説明する。図２に示す部品データ入力画面は、登録する部品毎に、部品名称、部品種別、根本部品、部品の質量情報、部品の位置情報をユーザに入力させるための画面である。さらには、各部品の反発係数や摩擦係数などをユーザに入力させるための画面でもある。
【００１７】
「部品名称」は、シミュレーション対象として新たに登録する部品（以下、新規登録部品と記す）を入力する領域である。ユーザは、新規登録部品それぞれに任意に固有の名称を付すことができる。一例として、ベース部品、スライダ部品、フィンガ部品などが部品名称として入力され得る。「部品種別（種別情報）」は、新規登録部品を接続する軸が可動軸であるか固定軸であるかを入力する領域である。ユーザは、新規登録部品が可動軸で接続された部品である場合には「可動軸」、新規登録部品が固定軸で接続された部品である場合には「固定軸」をそれぞれ入力する。「根本部品」は、新規登録部品をつなげる根本部品を入力する領域である。ここでは、新規登録部品に対して根本方向で１つ前に位置する部品（これを便宜的に根本部品と呼んで区別する）が入力される。なお、可動軸としては、回転軸、並進軸、球面軸、自由軸などがある。
【００１８】
「慣性、重量、重心位置（部品の質量情報）」は、新規登録部品の慣性モーメント、重さ、重心位置をそれぞれ入力する領域である。「相対位置（部品の位置情報）」は、新規登録部品と根本部品との相対位置を入力する領域である。相対位置として、新規登録部品が属する部品座標系（例えば世界座標系、ベース部品座標系、スライダ部品座標系、フィンガ部品座標系等）の座標位置と、根本部品が属する部品座標系の座標位置とが入力される。「慣性、重量、重心位置（部品の質量情報）」及び「相対位置（部品の位置情報）」は、動力学計算時に入力パラメータとして用いられる。「反発係数」と「摩擦係数」は、新規登録部品の反発係数と摩擦係数をそれぞれ入力する領域である。後述するが（図８参照）、これら反発係数及び摩擦係数は、部品の反発や摩擦を考慮した動力学計算を行う場合に入力パラメータとして用いられ得る。
【００１９】
上記「部品データ入力画面」から入力された新規登録部品に関する各種情報は、入力された部品毎に部品データとして記憶装置６に記憶される。すなわち、部品データは、部品名称、部品種別（種別情報）、根本部品、部品の質量情報（慣性、重量、重心位置）、部品の位置情報（相対位置）を含み、さらには反発係数や摩擦係数を含んでいてもよい。
【００２０】
なお、本明細書において、可動軸とは部品同士を相対的に回転、並進、球面、自由など可動自在につなぐ軸のことであり、固定軸とは部品同士を相対的に動かないように固定してつなぐ軸のことである。可動軸の一例を挙げると、例えばヒンジジョイント、スライダジョイント、ユニバーサルジョイント等がある。固定軸で接続された部品は、根本方向の可動軸で接続された部品の動きに追従して動作する。また、各部品の位置座標を計算する際に基準とされる座標系（世界座標系）が設定された部品側を根本方向（根本側）と呼び、根本方向と反対側を葉方向（先端側）と呼んでいる。また、葉方向のモデル構造は閉リンクであっても構わない。その際は仮に閉リンクを切断すると、根方向と葉方向が決定される。
【００２１】
＜シミュレーション処理＞
次に、シミュレーションモデルに基づき動力学計算を行うことで物体全体の動きをシミュレーションする処理について説明する。図３は、本発明に係る動力学計算方法を適用したシミュレーション処理を示すフローチャートである。ＣＰＵ１（制御部）は、ＲＯＭ２や記憶装置６等に格納された該当の制御プログラムを読み出して以下の処理を実行する。
【００２２】
まず、ステップＳ１でユーザによる部品登録に応じてユーザ設定モデルを構築する（モデル構築手順）。すなわち、表示装置５に「部品データ入力画面」（図２参照）を表示して、ユーザに対しシミュレーション対象とする部品の登録を促す。表示装置５に「部品データ入力画面」が表示されることで、ユーザは「部品データ入力画面」から必要に応じて組み合わせを変えながら予め細分化された部品を登録できる。そして、ユーザにより登録された部品（より詳しくは部品データ）に従って、公知の方法によってユーザ設定モデルは構築される。つまり、登録された部品はユーザ設定モデルを構成する１つ１つの要素であり、世界座標系を基準に根本方向から葉方向に向かって順番に可動軸もしくは固定軸で接続されていく。構築されたユーザ設定モデルは、部品データと関連付けられて記憶装置６に記憶（保存）される。なお、既に構築済みであるユーザ設定モデル（及び該当する部品データ）を記憶装置６から読み出して利用する場合には、ステップＳ１の処理を実行しなくてよい。
【００２３】
＜ユーザ設定モデル＞
ここで、可動軸を介して部品を動作可能に接続して構成される多軸ロボットに関するユーザ設定モデルの一例を図６に示す。説明を理解しやすくするために、図６では多軸ロボットのアーム先端に装着されるハンド（電動グリッパ）であって、部品３０１〜部品３０５の５つの部品で構成されているものを例に示した。なお、部品３０１〜部品３０５はユーザにより部品データ入力画面から登録された部品であり、各根本部品からの相対位置として各座標系の原点が入力されているものとする。また、シミュレーションモデルにおいては、軸によって接続される各部品が属する部品座標系をもって表す。
【００２４】
図６に示すユーザ設定モデルにおいて、部品３０１は世界座標系３０６に配置された電動グリッパのベース部品であり、世界座標系３０６（具体的には不図示の架台など）に固定軸で接続されている。部品３０１は、世界座標系３０６の原点からベース部品座標系３０１‐１の原点へ相対位置３０１‐２をもって配置されている。相対位置３０１‐２は、部品３０１が属する部品座標系（ベース部品座標系）の座標位置と、当該部品３０１に対して根本方向で１つ前に位置する部品（根本部品）が属する部品座標系の座標位置とから求まる。ただし、部品３０１に関しては根本部品が存在しない。その場合、根本部品の部品座標系の代わりに世界座標系３０６を用いる。部品３０１の重心位置は、重心位置３０１‐３である。
【００２５】
部品３０２は、ベース部品座標系３０１‐１に配置された電動グリッパのスライダ部品であり、ベース部品座標系３０１‐１に並進の可動軸で接続されている。すなわち、部品３０２は、部品３０１に対し図６の左右方向に可動自在となっている。部品３０２は、ベース部品座標系３０１‐１の原点からスライダ部品座標系３０２‐１の原点へ相対位置３０２‐２をもって配置されている。すなわち、相対位置３０２‐２は、部品３０２が属するスライダ部品座標系の座標位置と、当該部品３０２に対して根本方向で１つ前に位置する部品３０１が属するベース部品座標系の座標位置とから求まる。部品３０２の重心位置は、重心位置３０２‐３である。
【００２６】
部品３０３は、スライダ部品座標系３０２‐１に配置された電動グリッパのフィンガ部品であり、スライダ部品座標系３０２‐１に固定軸で接続されている。部品３０３は、スライダ部品座標系３０２‐１の原点からフィンガ部品座標系３０３‐１の原点へ相対位置３０３‐２をもって配置されている。すなわち、相対位置３０３‐２は、部品３０３が属するフィンガ部品座標系の座標位置と、当該部品３０３に対して根本方向で１つ前に位置する部品３０２が属するスライダ部品座標系の座標位置とから求まる。部品３０３の重心位置は、重心位置３０３‐３である。
【００２７】
部品３０４は部品３０２と同様に、ベース部品座標系３０１‐１に配置された電動グリッパのスライダ部品であり、ベース部品座標系３０１‐１に並進の可動軸で接続されている。また、部品３０５は部品３０３と同様に、スライダ部品座標系３０２‐１に配置された電動グリッパのフィンガ部品であり、スライダ部品座標系３０２‐１に固定軸で接続されている。
【００２８】
上述のように、部品３０２と部品３０４は並進の可動軸で部品３０１に接続されたスライダ部品であり、部品３０３と部品３０５はそれぞれ固定軸で部品３０２と部品３０４に接続されたフィンガ部品である。したがって、部品３０２と部品３０４の各可動軸に対してなんらかの入力（トルク入力など）を与えた場合、ユーザ設定モデルの動作としては、部品３０３は部品３０２に追従して動作し、部品３０５は部品３０４に追従して動作する。
【００２９】
図３に示した処理の説明に戻り、ステップＳ２で動力学計算開始命令の取得を行う。動力学計算開始命令は、入力装置４を通じてユーザにより指示される。動力学計算開始命令を取得すると、動力学計算（ステップＳ４）を実行する前に「動力学計算用モデル構築処理」を実行する（ステップＳ３）。詳しくは後述するが（図４参照）、動力学計算モデル構築処理では、ユーザ設定モデルを元に、該ユーザ設定モデルを構成する部品数よりも部品の数を減らした動力学計算用モデルを新たに構築して記憶装置６に記憶する。
【００３０】
動力学計算用モデル構築処理が終了したら、ステップＳ４で、記憶装置６から動力学計算用モデルを取得し、当該動力学計算用モデルに基づき動力学計算を実行する（計算手順）。この動力学計算では、順動力学に従った計算が行われる。動力学計算の実行に伴いシミュレーションが行われて、そのシミュレーション結果は表示装置５に表示される。ユーザは表示装置５に表示されたシミュレーション結果を見て、当該製品（電動グリッパ）の動作や、製品に含まれる部品同士の干渉や各部品にかかる力などを解析することができる。こうして、ユーザはシミュレーションを行うことで、実際に製品を試作等しなくとも設計した製品の動作を机上で検討したり確認したりすることができる。
【００３１】
＜動力学計算用モデル構築処理＞
動力学計算用モデル構築処理（図３のステップＳ３）について、図４を用いて説明する。図４に示すように、まず記憶装置６からユーザ設定モデルを取得する（ステップＳ１１）。ユーザ設定モデルを取得すると、該ユーザ設定モデルを構成する部品のうち、最も根本に近い位置に配置された部品を選択する（ステップＳ１２）。最も根本に近い位置に配置された部品とは、各部品の位置座標を計算する際に基準とされる座標系（世界座標系）が設定された部品であり、図６の例では部品３０１が該当する。そして、ステップＳ１３で、該選択した部品（詳しくは部品データ）を記憶装置６から取得する（取得手順）。
【００３２】
次に、取得した部品が固定軸で接続された部品であるか否かを判定する（ステップＳ１４）。固定軸接続部品であるか否かは、固定軸で根本方向の部品又は世界座標系３０６に接続されているか否かによって判定する。取得した部品が固定軸で根本方向の部品又は世界座標系３０６に接続されていない場合には（ステップＳ１４のＮＯ）、ステップＳ１６の処理へジャンプする。他方、取得した部品が固定軸で根本方向の部品又は世界座標系３０６に接続されている場合には（ステップＳ１４のＹＥＳ）、固定軸接続部品であるとして「固定軸接続部品合成処理」（部品体生成手順）を実行する（ステップＳ１５）。図６に示したユーザ設定モデルの場合、部品３０１は世界座標系３０６に固定軸で接続されている。また、部品３０３と部品３０５は、根本方向の部品３０２と部品３０４にそれぞれ固定軸で接続されている。したがって、取得した部品が部品３０１、部品３０３、部品３０５である場合には、固定軸接続部品合成処理を実行する。他方、部品３０２と部品３０４は並進の可動軸で部品３０１に接続されている。つまり、部品３０２及び部品３０４は、根本方向の部品又は世界座標系３０６に固定軸で接続されていない。したがって、取得した部品が部品３０２及び部品３０４である場合には、固定軸接続部品合成処理を実行しない。
【００３３】
ステップＳ１６で、取得した部品を加えて動力学計算用モデルを構築する（構築手順）。構築した動力学計算用モデルは、記憶装置６に記憶される。この動力学計算用モデルは、取得済みの部品を用いて構築される。ただし、後述する「固定軸接続部品合成処理」（図５参照）の実行に伴い、質量情報及び位置情報が合成された部品である場合には、合成後の質量情報及び位置情報を持つ部品体（詳しくは部品体データ）を用いて動力学計算用モデルを構築する。動力学計算用モデルの構築後、ユーザ設定モデルに含まれる部品のすべてを取得したか否かを判定する（ステップＳ１７）。すべての部品を取得済みでない場合には（ステップＳ１７のＮＯ）、葉方向に向かって次の部品を選択して（ステップＳ１８）、上記したステップＳ１３〜Ｓ１６の処理を繰り返す。他方、すべての部品を取得済みである場合には（ステップＳ１７のＹＥＳ）、本動力学計算用モデル構築処理を終了する。
【００３４】
＜固定軸接続部品合成処理＞
固定軸接続部品合成処理（図４のステップＳ１５）について、図５を用いて説明する。図５に示すように、まず取得した部品に対して根本部品が存在するか否かを判定する（ステップＳ２１）。根本部品が存在する場合には（ステップＳ２１のＹＥＳ）、取得した部品の質量情報を当該根本部品の質量情報に合成する（ステップＳ２２）。つまり、固定軸で接続された部品の質量情報は、当該部品に対して根本方向で１つ前に位置する部品の質量情報に合成される。次に、取得した部品に対して葉方向に部品が存在するか否かを判定する（ステップＳ２３）。葉方向に部品が存在する場合には（ステップＳ２３のＹＥＳ）、取得した部品の位置情報を当該部品に対して葉方向に位置する部品の位置情報に合成する（ステップＳ２４）。
【００３５】
根本方向から葉方向に接続された部品毎に固定軸接続部品合成処理が繰り返されることで、固定軸で接続された部品の質量情報は根本方向に向かって、可動軸で接続された部品の質量情報に合成される。他方、固定軸で接続された部品の位置情報は葉方向に位置する部品の位置情報に合成される。
【００３６】
ここで、部品の質量情報の合成及び部品の位置情報の合成について説明する。部品の質量情報とは、重量・重心位置・慣性モーメントの３つを指す。以下では、部品「Ａ」の質量情報と部品「Ｂ」の質量情報を合成して新たな質量情報を持つ部品体「Ｃ」を生成する場合を例に説明する。
【００３７】
＜質量情報の合成＞
部品同士の重量の合成は、以下に示す数１式で計算する。
【００３８】
【数１】
2015148994.tif 000003
ここで、Ｍは部品の重量を表す。
【００３９】
部品同士の重心位置の合成は、以下に示す数２式で計算する。
【００４０】
【数２】
2015148994.tif 000004
ここで、ＣＯＧは部品の重心位置を表す。
【００４１】
部品同士の慣性モーメントの合成は、平衡軸の定理を利用して計算する。まず、それぞれの部品について重心を通る軸に関する慣性モーメントをＩｇとしたとき、この軸に並行に三次元距離Ｓ＝（ｘ、ｙ、ｚ）だけ離れた位置での慣性モーメントＩは以下に示す数３式で計算することができる。ただし、数３式における「Ｅ」は単位行列である。なお、「Ｔ」は転置行列を表す記号である。
【００４２】
【数３】
2015148994.tif 000005
【００４３】
そして、部品同士の慣性モーメントを合成するには、平衡軸の定理を利用して慣性モーメントの中心軸を合致させ、足し合わせる。部品「Ａ」の慣性モーメントと部品「Ｂ」の慣性モーメントを合成した部品体「Ｃ」の慣性モーメントは、以下に示す数４式で計算する。
【００４４】
【数４】
2015148994.tif 000006
【００４５】
ただし、数４式におけるＳＡＣは、部品「Ａ」の重心から部品体「Ｃ」の重心までの３次元距離であり、ＳＢＣは、部品「Ｂ」の重心から部品体「Ｃ」の重心までの３次元距離である。数４式における「Ｅ」は単位行列である。なお、「Ｔ」は転置行列を表す記号である。
【００４６】
以上のようにして、部品「Ａ」と部品「Ｂ」の質量情報の合成を行うことによって新たな質量情報を持つ部品体「Ｃ」を生成する。
【００４７】
＜位置情報の合成＞
一方、部品の位置情報とは、平衡移動パラメータと回転移動パラメータとを指す。例えば３次元空間での位置情報が回転並進を意味する４×４の同次変換行列で表される場合において、部品「Ａ」の位置情報を部品「Ｂ」の位置情報に合成して部品「Ｂ」の新しい位置情報を計算する式を以下の数５式に示す。
【００４８】
【数５】
2015148994.tif 000007
【００４９】
上記数５式では、各部品の根本方向の部品座標系からの相対位置を表す同時変換行列を「Ｒ」で記している。これを用いて位置情報の合成を行うことで求められる部品「Ｂ」の新しい位置情報が、部品体「Ｃ」の位置情報に該当する。
【００５０】
＜動力学計算用モデル＞
上述の固定軸接続部品合成処理が繰り返し実行されると（ステップＳ１４〜Ｓ１８）、可動軸で接続された部品の動きに追従する１乃至複数の固定軸で接続された部品が合成され、可動軸で接続された部品毎に可動軸で接続された１つの部品体が生成される。そして、これらの部品体により動力学計算用モデルは構築されている。そこで、上述した動力学計算用モデル構築処理によって構築される動力学計算用モデルの一例を図７に示す。図７に示す動力学計算用モデルは、図６に示すユーザ設定モデルを元に構築されたものである。以下、順を追って説明する。ただし、部品３０４と部品３０５についてはそれぞれ部品３０２と部品３０３と同様の処理が行われることから、ここでは説明を省略する。
【００５１】
図６に示すユーザ設定モデルでは、根本方向から葉方向に向かって接続された部品３０１〜部品３０３の部品データが順に取得される。部品３０１は世界座標系３０６に固定軸で接続されていることから、固定軸接続部品合成処理が行われる。部品３０１には根本部品が存在しないことから、質量情報の合成は行われない。他方、部品３０１には葉方向に部品３０２が存在することから、部品３０１の位置情報（３０１‐２）は部品３０２の位置情報（３０２‐２）に合成される。このとき、部品３０２の部品データを元に位置情報が合成後の位置情報（４０１‐１）に書き換えられた第一部品体データが生成される。部品の位置情報は根本部品からの相対位置として登録されているが、位置情報の合成が行われた場合、合成後の位置情報は固定軸接続部品の根本部品（存在しない場合は世界座標系）からの相対位置を持つ。続いて、動力学計算用モデルの構築が行われるが、世界座標系３０６に固定軸で接続された部品３０１は動力学計算の際に計算対象としないので、動力学計算用モデルには含まれない。
【００５２】
部品３０２は可動軸で接続された部品であるので、固定軸接続部品合成処理は行われない。したがって、質量情報の合成及び位置情報の合成は行われない。動力学計算用モデルの構築の際には部品データでなく、部品３０１の位置情報（３０１‐２）が合成された位置情報（４０１‐２）を持つ第一部品体データが用いられる。
【００５３】
部品３０３は固定軸で接続された部品であるので、固定軸接続部品合成処理が行われる。部品３０３の根本部品は部品３０２であることから、部品３０３の質量情報（重心位置３０３‐３）は部品３０２の質量情報（重心位置３０２‐３）に合成される。このとき、既に生成済みの第一部品体データの質量情報が合成後の質量情報（重心位置４０１‐３）に書き換えられて第一部品体データが更新される。なお、部品３０３には葉方向に部品が存在しないことから、位置情報の合成は行われない。動力学計算用モデルの構築の際には、部品３０１の位置情報が合成された位置情報（４０１‐２）及び部品３０３の質量情報が合成された質量情報（重心位置４０１‐３）を持つ第一部品体データが用いられる。こうして新たな位置情報（４０１‐２）と、新たな質量情報（重心位置４０１‐３）とを持つ第一部品体４０１が動力学計算用モデルに生成される。また、第二部品体データが用いられることで、新たな位置情報（４０２‐２）と新たな質量情報（新たな重心位置４０２‐３）とを持つ第二部品体４０２が動力学計算用モデルに生成される。
【００５４】
なお、動力学計算用モデル構築処理において、例えば固定軸接続部品合成処理の実行に伴い合成した部品が一つも存在しないような場合には、ユーザ設定モデルがそのまま動力学計算用モデルとして記憶装置６に記憶される。
【００５５】
シミュレーションモデルに基づき動力学計算を行う場合、モデルを構成する各部品毎に外力や加速度を計算しなければならない。そうであるならば、図６に示すユーザ設定モデルでは、５つの部品３０１〜３０５それぞれに対して動力学計算を行う必要がある。これに対し、図７に示す動力学計算用モデルでは、部品３０２と部品３０３とが合成された第一部品体４０１、部品３０４と部品３０５とが合成された第二部品体４０２の２つの部品それぞれに対して動力学計算を行えばよい。すなわち、シミュレーション対象とする部品の数が５個から２個へ削減される。動力学計算は部品数に応じて計算量が増えていくため、計算対象の部品数は少なければ少ないほどよい。したがって、上述のようにして根本方向の部品との相対位置が変化しない固定軸で接続された部品について事前に可動軸で接続された部品に合成することは、動力学計算の計算量の削減に寄与し、もって処理負荷を減らすことに通ずる。具体的には、図６に示すユーザ設定モデルに基づき動力学計算を行った場合に比べ、図７に示す動力学計算用モデルに基づき動力学計算を行うことで計算量を６０％削減でき、もってシミュレーションにかかる時間を従来に比べて短縮できる。
【００５６】
以上のように、ユーザによって可動軸や固定軸で接続された多数の部品で構成されるユーザ設定モデルが構築されても、動力学計算の際には、可動軸で接続された部品に固定軸で接続された部品が合成されて部品数の削減された動力学計算用モデルが用いられる。部品数の削減された動力学計算用モデルに基づき動力学計算を行うので、シミュレーションにかかる時間を従来に比べて短縮できる。また、ユーザは、部品の交換や位置変更さらには部品の組み合わせ変更が行い易い再利用性の高いシミュレーションモデルを、組み合わせる部品数が多くとも、気兼ねなく使用することができる。つまり、ユーザにとっては精度を高めるために組み合わせる部品の数と、部品数を増やすことに伴うシミュレーションに要する時間とを比較しながらモデルを構築しなくてもよくなるので、動力学計算によるシミュレーションの利便性が高まる。
【００５７】
＜第２実施形態＞
ところで、部品の反発や摩擦が考慮されたシミュレーションを行う場合、部品毎に反発係数や摩擦係数を設定できるとよい。例えば図６に示したユーザ設定モデルの場合、部品３０２、部品３０３、部品３０４、部品３０５に対し、それぞれ異なる反発係数や摩擦係数を設定できる。しかし、図７に示す動力学計算用モデルでは、第一部品体４０１と第二部品体４０２に対してのみしか反発係数や摩擦係数を設定することができない。そこで、合成前の各部品の反発や摩擦を考慮したいような場合には、ユーザ設定モデルで各部品の反発や摩擦を考慮した計算を行い、その後に動力学計算用モデルで動力学計算を行うとよい。そうしたシミュレーション処理の一例を図８に示す。なお、ここでは上述した図３に示したシミュレーション処理と説明の重複する部分について同一の符号を付して説明を省略する。
【００５８】
図８に示すシミュレーション処理と図１に示すシミュレーション処理との違いは、動力学計算用モデル構築処理（図３のステップＳ３）の実行後に、部品毎の外力計算（ステップＳ５０）を行ってから動力学計算（ステップＳ４）を行う点である。すなわち、ステップＳ５０の部品毎の外力計算（外力算出手順）では、記憶装置６からユーザ設定モデルを取得し、該取得したユーザ設定モデルに基づき部品毎に反発力や摩擦力を計算する。そして、動力学計算（ステップＳ４）時には、計算した反発力や摩擦力などの外力を動力学計算の入力パラメータとして動力学計算を行う。このとき、ユーザ設定モデルの各部品に働く反発力や摩擦力は各部品の座標系での位置と方向を持つことから、固定軸で接続された部品に反発力や摩擦力が発生した場合には、固定軸で接続された部品の質量情報が合成された部品体に働く力として処理する。このようにして、接触力を考慮したシミュレーションを行う場合には、接触点に対応したユーザ設定モデルの各部品に設定される反発係数や摩擦係数を用いて接触力を計算し、この接触力を動力学計算用モデルに基づく動力学計算の際に反映させる。
【００５９】
以上のように、部品毎の反発力や摩擦力の計算では部品数の多いユーザ設定モデルをそのまま用い、動力学計算では部品数を削減した動力学計算用モデルを用いるようにした。そして、動力学計算時には、ユーザ設定モデルを用いて求めた反発力や摩擦力などを入力パラメータとして用いることのできるようにした。こうすることで、ユーザは部品の反発や摩擦などが考慮されたより精度の高いシミュレーションを、シミュレーション開始から結果出力までに時間をかけることなく行うことができるので有利である。
【符号の説明】
【００６０】
１…ＣＰＵ（演算部）、２…ＲＯＭ、３…ＲＡＭ、４…入力装置、５…表示装置
６…記憶装置、１０…シミュレーション装置、３０２，３０４…可動軸で接続された部品
３０３，３０５…固定軸で接続された部品、４０１…第一部品体、４０２…第二部品体
【図１】
2015148994.tif 000008
【図２】
2015148994.tif 000009
【図３】
2015148994.tif 000010
【図４】
2015148994.tif 000011
【図５】
2015148994.tif 000012
【図６】
2015148994.tif 000013
【図７】
2015148994.tif 000014
【図８】
2015148994.tif 000015