MV-1000:インタラクティブなモデルの構築とシミュレーション
本チュートリアルでは、MotionViewのグラフィカルユーザーインターフェースを介し、トランクの蓋に取り付けられた4つのリンクから成る機構モデルをインタラクティブに作成し、MotionSolveを使ってモデルの動解析を実行し、MotionSolveの結果をアニメーションおよびプロットウィンドウでポスト処理する方法について学習します。
- マルチボディダイナミクス(MBD)
- MBDは、“内部的に結合されたボディのシステムの動力学のスタディ”と定義されます。機構(MBDシステム)は、互いに結合(拘束)され、外力やモーションがかかると特定の動作を行うリンク(ボディ)のセットから成ります。機構のモーションは、その運動学的な挙動により定義されます。動力学的な挙動は、加えられた力およびモーメントの変化率の平衡に起因します。
- MBDモデリング
- 古典的なMBD定式は、剛体モデリングのアプローチを用いて機構をモデル化します。剛体は、変形が無視できないボディとして定義されます。一般的に、MBD問題を解くには、ソルバーは下記の情報を必要とします。
- 剛体の慣性モーメントと位置
- 結合 – タイプ、関係するボディ、位置および向き
- 外力とモーション – 関係するボディ、位置、向きおよび値

- トランクの蓋の機構
- 下の図に示すトランクの蓋は、その開閉のモーション用に4つのリンクから成る機構を用いています。
機構の詳細図を以下に示します:図 2. 車のトランクの蓋の機構
機構内の4つのリンク(ボディ)は、Ground Body、Follower、Coupler、およびInput Linkです。本演習では、Ground Bodyが車のボディ、Input Linkがトランクの蓋のボディを表します。残りの2つのボディ(FollowerとCoupler)は、トランクの蓋の開閉を補助するために使われる機構のパートを形成しています。図 3.
このモデルの構築には、以下のエンティティが必要です:- ポイント
- ボディ
- 拘束条件(ジョイント)
- Graphics
- 入力(MotionまたはForce)
- Output
ポイントの作成
このステップでは、モデルにポイントを作成する方法について学習します。
- 新しいMotionViewセッションを開始します。
-
以下の方法のいずれかで、ポイントを追加します:
- Project BrowserのModel で右クリックし、context menuから を選択します。
図 4.
- Reference Entityツールバーで、
(Points)アイコンを右クリックします。
Add Point or PointPairダイアログが表示されます。注: ボディ、マーカーといったその他のエンティティも、上記の方法のいずれか(Project Browserまたはツールバー)を用いて作成できます。 - Project BrowserのModel で右クリックし、context menuから を選択します。
- LabelにPoint Aと入力します。
-
Variableにp_aと入力します。
図 5.
ラベルでmodeling window内のエンティティが識別できます。一方、変数名はMotionViewがエンティティを識別するために使用されます。注: 任意のエンティティについてAdd "Entity"ダイアログを使用する際、ラベルと編集名のデフォルトを使用することができます。しかし、最良のモデリングを実現するには、エンティティを容易に識別できるように、意味を成すラベルと変数名を与えることが推奨されます。本演習では既定の命名法に従ってください。 -
OKをクリックします。
Pointsパネルが表示されます。Point AがProject BrowserのPointsリスト内でハイライト表示されています。
図 6. Pointsパネル - Propertiesタブ
-
point AのX、Y、Z座標値を入力します。
図 7.
-
複数のポイントを作成します。
-
Point BからPoint Iまでの値を、Point Aの値にパラメータ化します。
-
Standard Viewsツールバーで
(XZ Left Plane View)アイコンをクリックし、左側のビューに変更します。
ボディの作成
このステップでは、機構内の剛体リンクInput Link、Coupler、およびFollowerを作成します。
-
Reference Entityツールバーで、
(Bodies)アイコンを右クリックします。
-
Add Body or BodyPairダイアログで、ラベルをInputLink、変数名をb_inputlinkと指定します。
図 11.
- OKをクリックします。
-
質量および慣性モーメントを入力します。
- Use center of mass coordinate system のチェックボックスを選択します。
-
Originの下の
(Pointコレクター)をクリックします。
コレクターが水色の枠で囲まれ、現在選択についてコレクターがアクティブであることを示します。 -
Point Gを選択します。
注: このポイントの選択方法は、ボディ、ジョイントといった他のエンティティにも適用できます。Ground BodyまたはGlobal Originを選択するには、画面上で全体座標系を表すトライアド
をクリックします。
ヒント: modeling windowからPoint Gを選択することも可能です。マウスの左ボタンを押したまま、Point Gをハイライト表示させます。マウスボタンを放して選択します。図 15.
-
1から7までを繰り返し、残りのリンクを表 2にリストした変数名で作成します。
表 2. ラベル 変数名 Follower b_follower Coupler b_coupler -
各リンクについて、その質量と慣性モーメントを次のとおり指定します:
- Mass= 1
- Ixx、Iyy、Izz= 1000
- Ixy、Ixz、Iyz=0
- ポイントBをFollowerの重心位置、ポイントDをCouplerの重心位置として指定します。
- CMマーカーについては、デフォルトの向き(全体座標系)を保持します。
回転ジョイントの作成
このステップでは、モデルに必要なジョイントを作成する方法について学習します。
-
以下の方法のいずれかで、ジョイントを追加します:
- Project BrowserでModelを右クリックします。context menuから を選択します。
(ジョイント)アイコンを右クリックします。
Add Joint or JointPairダイアログが表示されます。図 16.
- 新しいジョイントのラベルをFollower-Ground、変数名をj_follower_groundと指定します。
- Typeに、ドロップダウンメニューからRevolute Jointを選択します。
-
OKをクリックします。
Jointsパネルが表示されます。追加された新しいジョイントは、Project BrowserのModel Treeでハイライト表示されます。
-
Connectivityタブの下で、
(1つ目のBodyコレクター)をダブルクリックします。
Select a Bodyダイアログが現われます。 -
Model Treeの左側の列からBodiesを、右側の列からFollowerを選択します。
図 17.
-
OKをクリックします。
JointsパネルでFollower Bodyが選択され
、水色の境界は
に移動しています。
-
modeling window内をクリックします。マウスの左ボタンを押したまま、カーソルを全体座標系のXYZ triad
に移動します。
-
modeling windowにGround Bodyが表示されたら、マウスの左ボタンを放します。
図 18.
-
Originの下の
コレクターをダブルクリックします。
Select a Pointダイアログが現われます。 - ジョイントの原点としてPoint Aを選択します。
- OKをクリックします。
- 回転軸を指定するには、Alignment Axisの下で、Pointの横にある下向きの矢印をクリックし、Vectorを選択します。
-
回転ジョイントの回転軸として、Global Yを選択します。
図 19.
-
手順1から14までを繰り返し、残りのポイントC、E、Fの位置に33つの回転ジョイントを作成します。表 3に示すスペックを使用します。
表 3. 回転ジョイントの情報 回転ジョイントラベル 変数名 Body 1 Body 2 Point Vector Follower-Ground j_follower_ground Follower 地面 A Global Y Follower-Coupler j_follower_coupler Follower Coupler C Global Y Coupler-Input j_coupler_input Coupler Input Link E Global Y Input-Ground j_input_ground Input Link 地面 F Global Y
機構へのモーションの適用
このステップでは、機構モデルへモーションを追加する方法について学習します。
-
以下のいずれかの方法で、Add Motion or MotionPairダイアログを開きます:
- Project BrowserのModelで右クリックし、context menuから を選択します。
- Constraintツールバーで、
(Motion)アイコンを右クリックします。
- ラベルをMotion_Expression、変数名をmot_exprと指定します。
-
OKをクリックします。
Motionsパネルが表示されます。新しいモーションがProject Browser内のモデルツリーでハイライト表示されています。
-
Connectivityタブで、
(Jointコレクター)をダブルクリックします。
Select a Jointダイアログが現われます。 -
Model Tree内で、先のステップで作成したPoint Fの位置の回転ジョイント(Input-Ground)を選択します。
図 20.
-
OKをクリックします。
Motionsパネルが表示されます。
図 21.
- PropertiesタブのDefine byの下で、グレイ色の矢印をクリックし、Expressionを選択します。
-
Expression欄内をクリックします。
Expression Builderがアクティブになります。
図 22.
-
ボタンをクリックしてExpression Builderを開き、シングルバッククォーテーションで囲んで式を
`60d*sin(2*0.1*PI*TIME)`
のように入力します。図 23.
この式は、振幅60度、周波数0.1 HzのSIN関数です。この式によって、トランクの蓋は60度の角度まで開き、トータル5秒で元に戻ります。 -
OKをクリックします。
注: この式の作成方法は、フォース、スプリングダンパ、ブッシュなど他のエンティティの非線形プロパティを指定する際に使用できます。
出力の作成
このステップでは、デフォルトのエンティティを使って、2つのボディ間に変位出力を追加します。また、Expressionsに基づき全体フレームに対する入力リンク上の特定ポイントGの変位を記録するため、別の出力を追加します。
-
以下のいずれかの方法で、Add Outputダイアログを開きます:
- Project BrowserのModelで右クリックし、context menuから を選択します。
- General MDLツールバーで、
(Outputs)アイコンをクリックします。
-
新しい出力のラベルをInput Link Displacement、変数名をo_dispと指定します。
図 24.
- OKをクリックします。
-
2つのボディ上の2つのポイント間のDisplacement出力を作成します。
- ラベルがInput Link CM Displacement、変数名がo_cm_dispである出力をもう1つ追加します。
-
全体座標系の原点とInput LinkのCMマーカー間のX変位を計算します。
- OKをクリックします。
-
エラーをチェックするために、ToolsメニューからCheck Modelを選択します。
モデルトポロジーにエラーがある場合はMessage Logに表示されます。
図 27.
重要: 表記されているID番号は、表示されている画像と異なる場合があります。注: DX関数は、Input LinkのCM(重心)マーカーとGlobal FrameのX方向のGlobal Frameを表すマーカーとの間の距離を測ります。この関数のシンタックスや使用法などの詳細については、MotionSolve Reference Guideをご参照ください。式内のシングルバッククォーテーションは、MDL math parserが式を評価するようにするために使用されます。idstringやvalueなどのエンティティのプロパティは、波括弧{}内に置かれている場合に評価され、そうでない場合は普通の文字列とみなされます。MotionViewに取り入れられる様々な評価のフォームや式の詳細については、本チュートリアル末尾のAppendixに含まれるMotionViewでの式の評価の項をご参照ください。
グラフィックプリミティブの追加
このステップでは、グラフィックスを追加して機構を可視化します。

- 暗黙的(デフォルト)グラフィックス
- ポイント、ボディ、ジョイントなどのエンティティを作成する際にMotionViewインターフェースに現れる小さいアイコンは、暗黙的(デフォルト)グラフィックスと呼ばれます。これらは、モデル構築プロセス中のガイド用にのみ提供され、シミュレーションをアニメーション化する際には表示されません。
- 明示的グラフィックス(Explicit Graphics)
- 明示的グラフィックスはテッセレーションのかたちで表され、ソルバーデックに書き出されて、その後、結果内で利用可能となります。明示的グラフィックスには2つのタイプがあります。
- プリミティブグラフィックス
- プリミティブグラフィックスは、モデルをより良く可視化する助けとなり、アニメーション表示内でも見ることができます。MotionViewのプリミティブグラフィックスには、シリンダー、ボックス、球などがあります。
- 外部グラフィックス
- 各種CADフォーマットやHyperMeshファイルをMotionViewにインポートすることが可能です。MotionViewの‘Import CAD or FE using HyperMesh..’ユーティリティは、CADモデルやHyperMeshモデルを、MotionViewにインポート可能なh3dグラフィックフォーマットに変換するために使用できます。また、.g、ADAMS View .shlおよびwavefront.objファイルは直接MotionViewにインポートできます。
MotionViewでは、一般的に使用される一部のモデルエンティティについて、implicitグラフィックスをONとOFFの間で切り替えることが可能です。
-
デフォルトグラフィックスの表示をオンに切り替えるには:
-
自身のモデルに明示的グラフィックスを追加するには、以下のいずれかの方法でAdd Cylinder or CylinderPairを開きます:
- Project BrowserのModelで右クリックし、context menuから を選択します。
- Reference Entityツールバーで、
(Graphics)アイコンを右クリックします。
-
Add Cylinder or CylinderPairダイアログで、ラベルとしてFollower Cylinder、変数名としてgcyl_followerと入力します。
図 30.
注: ダイアログの名称は、グラフィックタイプによって変化します。例えば、Boxグラフィックスタイプが選択されると、ダイアログ名はAdd Box or BoxPairに変わります。 - Typeドロップダウンメニューから、Cylinderを選択します。
- OKをクリックします。
-
Connectivityタブで、Parentの下にある
(Bodyボタン)をダブルクリックします。
-
Select a BodyリストからFollowerを選択し、OKをクリックします。
これで、グラフィックスが親ボディに割り当てられます。
-
シリンダーの原点を選択するために、Originの下の
をクリックします。
- modeling windowのPoint Aを選択します。
-
Directionの下の
をクリックします。
-
にPoint Cを選択します。
図 31.
-
Propertiesタブで、Radius 1:欄に2と入力します。
図 32.
注: シリンダーグラフィックスは、円錐グラフィックスを作成するためにも使用できます。デフォルトでは、Radius 2がRadius 1と同じ値をとるよう、Radius 2欄はRadius 1に対してパラメータ化されています。円錐グラフィックスを作成するには、異なる半径を指定してください。 -
モデル内の残りのボディについて、手順2から12までに従って、他のリンクに適切な明示的グラフィックスを作成します。表 4に示すスペックを使用します。
3つのリンクのすべてにシリンダーグラフィックスが追加されると、モデルは図 33のようになります:
表 4. ラベル 変数名 グラフィックタイプ Body Origin Direction Radius Follow Cylinder gcyl_follower Cylinder Follower Point A Point C 2 Coupler Cylinder gcyl_coupler Cylinder Coupler Point C Point E 2 Input Link Cylinder 1 gcyl_inputlink_1 Cylinder Input Link Point F Point E 2 Input Link Cylinder 2 gcyl_inputlink_2 Cylinder Input Link Point E Point G 2 Input Link Cylinder 3 gcyl_inputlink_3 Cylinder Input Link Point G Point H 2 Input Link Cylinder 4 gcyl_inputlink_4 Cylinder Input Link Point H Point I 2 図 33.
外部グラフィックスの追加とHyperMeshファイルのH3Dファイルへの変換
ここでは、この変換ユーティリティを使ってトランクの蓋のHyperMeshファイルをH3Dフォーマットに変換します。
- ToolsメニューからImport CAD or FE using HyperMeshを選択します。
- Import CAD or FE using HyperMeshダイアログで、Import CAD or Finite Element Model Onlyラジオボタンをアクティブにします。
- Input FileオプションドロップダウンメニューからHyperMeshを選択します。
-
Input Fileの横の
ボタンをクリックし、作業ディレクトリ<working directory>にあるtrunklid.hmを入力ファイルとして選択します。
Output Graphic File欄には自動的に、作業ディレクトリ<working directory>からのtrunklid_graphic.h3dファイルが記入されます。 -
OKをクリックし、インポートプロセスを開始します。
図 34.
Import CAD or FE using HyperMeshユーティリティは、バックグラウンドでHyperMeshを実行し、HyperMeshファイルをH3Dフォーマットに変換します。インポートが完了すると、メッセージログが、"Translating/Importing the file suceeded!"というメッセージと共に現れます。注: H3Dファイルフォーマットはではアプリケーションニュートラルなフォーマットです。H3Dは、グラフィックスや結果ファイルなど、幅広く使用されます。グラフィック情報は一般的にメッシュ化(モザイク化)されたかたちで保管されます。 - Clearrでメッセージログをクリアします。
- 1から6までの手順を繰り返し、trunk.hmファイルをtrunk.h3dに変換します。
H3DオブジェクトをInput LinkとGround Bodyに追加
本ステップでは、トランク蓋のH3DオブジェクトをInput Linkに、トランクのH3DオブジェクトGround Bpdyに結合します。
-
Reference Entityツールバーで、
(Graphics)アイコンをクリックします。
- modeling windowからg_trunklid_graphicを選択します。
-
Connectivityタブで、
(Bodyコレクター)をダブルクリックします。
-
Select a Bodyダイアログで、Input Linkをクリックします。
図 35.
-
OKをクリックします。
これで、Graphicsパネルが表示されます。
図 36.
注: トランクの蓋のグラフィックカラーがInput Linkのボディカラーに変わった点にご注目ください。 -
Project Browserから新たに作成されたg_trunk_graphicを選択し、
をGround Bodyにセットします。
-
Standardツールバーから、Save Modelアイコン
をクリックします。
モデルが新規である場合、モデルの名称を入力するようプロンプトが出されます。そうでない場合、モデルは既存の名称で作業ディレクトリに保存されます。注: 既存のモデルはFileメニューの オプションを使って別のファイルに保存することも可能です。 -
Save As Modelダイアログで作業ディレクトリをブラウズし、ファイル名:にtrunklid_mechanism.mdlと指定します。
図 37.
-
Saveをクリックします。
図 38. トランクの蓋の機構
MotionSolveによるモデルの解析
このステップでは、MotionSolveを使って、シミュレーション時間5秒、ステップサイズ0.01秒で、トランク機構の運動学解析を実行します。
-
General Actionsツールバーで、
(Run)アイコンをクリックします。
-
Model Checkツールバーで、
(Check model)ボタンをクリックし、モデルのエラーをチェックします。
- RunパネルのMainタブで、Simulation typeにTransientを指定します。
-
XMLファイルの名称をtrunklid_mechanism_run.xmlと指定します。
MotionViewは、MotionSolveによって生成されたその他の結果ファイルに、このXMLファイルの基底名(拡張子より前の名前)を使用します。異なる結果ファイルタイプの詳細については、MotionViewユーザーズガイドをご参照ください。
-
Export MDL snapshotチェックボックスを有効にします(まだ選択されていない場合)。
これで、ランが実行されるステージにおけるモデルが保存されます。
-
シミュレーションのEnd timeを5、Print intervalを0.01と指定します。
図 39.
注: 時間単位は、選択した時間単位に基づいています(デフォルトは秒)。Solver UnitsとGravity Data Setsには、Project Browserからアクセスできます。 。図 40.
-
MotionSolveでモデルを解析するには、Runボタンをクリックします。
注: 詳細の情報について、Message Logをチェックします。Runをクリックすると、MotionSolveが起動し、モデルを解析します。Solver Viewウィンドウが現れ、解析の進捗状況がソルバーからのメッセージ(Runログ)と共に表示されます。このログは、ソルバーファイルのベース名に拡張子.logのついたファイルにも書き出されます。
- ソリューションの情報についてウィンドウをチェックし、警告やエラーがないことを確認します。
同じページ上でのアニメーション結果とプロット結果の確認
このステップでは、アニメーションとプロットを同じページ上で確認します。

-
Animate ボタンをクリックします。
別のウィンドウでHyperViewが開き、そこにアニメーションが読み込まれます。
-
ツールバー上の
アイコンをクリックし、アニメーションを開始します。
注: ボタンを再度クリックすると、アニメーションを停止することができます。
- MotionViewウィンドウに戻ります。
-
Plot ボタンをクリックします。
HyperGraphが開き、新しいウィンドウに結果ファイルが読み込まれます。
- X axisデータのTypeはTimeのままとします。
-
Y-axisデータについては、表 5のようにします:
表 5. Y Type Marker Displacement Y Request REQ/70000000 InputLink from Ground Body (Input Link Displacement) Y Component DM (Magnitude) -
Applyをクリックします。
全体座標系の原点に対するPoint Iの変位の絶対値がプロットされます。
図 42. モデル、プロット、およびアニメーションが含まれたセッション
作業をセッションファイルとして保存
このステップでは、作業をセッションファイルとして保存する方法について学習します。
- Fileメニューから を選択します。
- セッションのファイル名をtrunklid_mechanismと指定します。
-
Saveをクリックします。
作業はtrunklid_mechanism.mvwセッションファイルとして保存されました。
Appendix
MotionViewでの式の評価
Math Parser | |
---|---|
MotionViewの式を適切なreal/integer/stringのフィールドとして評価するMotionViewパーサー。 | |
Real | この種のフィールドは、実数、または、評価した結果が実数となるパラメトリックな式を含むことができます。この種のフィールドは、Points、Bodies、Force – Linearに見られます。パラメトリックな式ではなく、評価された式の値のみがソルバーデックに渡される点にご注目ください。 例: p_a.x, b_0.mass |
文字列 | この種のフィールドは、文字列、または、評価した結果が文字列となるパラメトリックな式を含むことができます。この種のフィールドは、Datamember、SolverStringなどの文字列をもったデータセットなどのエンティティに見られます。 Linearフィールドと同様、パラメトリックな式ではなく、評価された式の値のみがソルバーデックに渡される点にご注目ください。 例: b_inputlink.label |
整数 | この種のフィールドは、整数、または、評価した結果が整数となるパラメトリックな式を含むことができます。この種のフィールドは、Datamemberとして整数をもったデータセットなどに見られます。この場合でも、パラメトリックな式ではなく、評価された式の値のみがソルバーデックに渡される点にご注目ください。 |
Templex Parser | |
---|---|
MotionViewの式を評価する以外にmath parserよりも複雑なプログラミングを実行することのできる、アプリケーションに用意された数学プログラム。MotionViewでは以下のタイプのフィールドが、パラメータ化された式を評価するtemplex parserにより評価されます。 | |
Expressions | この種のフィールドは、パラメトリックな式とテキストとのコンビネーションを含み得る点で、上記の3つとは異なります。一般的に、フィールドは、ソルバー関数(またはソルバーによって認識される関数)を定義するために使用されます。この種の式はバッククォーテーション(` ` )に囲まれ、任意のパラメトリックリファレンスは波括弧{}に囲まれて与えられます。バッククォーテーションの存在は、Templexを介して式を渡すことをmath parserに提案します。Templexは波括弧内の式を評価し、その他のテキスト部分は保持します。例えば、式 ` DX({b_inputlink.cm.idstring},{Global_Frame.idstring})` では、TemplexはInput linkボディ (b_ inputlink)のcmのID(文字列)とマーカーGlobal FrameのIDを評価し、“DX”はそのまま保持します。これらのフィールドは、Bushings、Motions、Forcesなどのパネルに、これらのエンティティ内のカーブ入力のExpression、Independent variable、タイプExpressionのOutputsに切り替えられるプロパティと共に用意されています。 |