転がり運動のモデル化について
4 views (last 30 days)
Show older comments
Simscape Multibody を使って物体の転がり運動をモデル化しようとしております.
現在,添付したモデルのように,転がらせたい物体の重心にRevolute Joint を取り付け,Revolute Jointの角度の情報をPrismatic Joint の位置へ反映させて,モデル化しています.
しかしこの場合,以下のような代数ループが発生して,複雑な構造物を扱うモデルの場合に,シミュレーション時間が大変長くなります.
次を含む代数ループが検出されました: Rolling/Solver Configuration/EVAL_KEY/INPUT_2_1_1Rolling/Solver Configuration/EVAL_KEY/OUTPUT_1_0Rolling/Solid radius (algebraic variable)
添付したブロック線図上で信号がどうのような仕組みで代数ループしているのか,よくわかりません.
代数ループを避けて,物体の転がり運動を表現できる方法がありましたら,ご教授ください.
何卒よろしくお願いします.
0 Comments
Accepted Answer
Hiroumi Mita
on 23 Dec 2019
この場合の代数ループとは
Revolute Jointの出力qが、Prismatic jointの入力pになっているからです。
Revolute JointとPrismatic jointの間には遅れがありません。
Revolute Jointの計算をするのに、Prismatic jointの情報が必要ですが、Prismatic jointの情報は
Revolute Jointの情報から計算されます。
このように、自分自身の現在の情報を計算をするのに自分自身の現在の情報を
遅れなく使う場合が代数ループとなります。
簡単な対処法は、添付のように、Memory blockなどを置き、過去の情報から計算するようにモデルを変えます。
このとき、Memory Blockは、入力の1ステップ前の値を出すの代数ループエラーは回避されます。
More Answers (0)
See Also
Categories
Find more on ダイナミクス in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!