転がり運動のモデル化について
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Hiroumi Mita
2019 年 12 月 23 日
この場合の代数ループとは
Revolute Jointの出力qが、Prismatic jointの入力pになっているからです。
Revolute JointとPrismatic jointの間には遅れがありません。
Revolute Jointの計算をするのに、Prismatic jointの情報が必要ですが、Prismatic jointの情報は
Revolute Jointの情報から計算されます。
このように、自分自身の現在の情報を計算をするのに自分自身の現在の情報を
遅れなく使う場合が代数ループとなります。
簡単な対処法は、添付のように、Memory blockなどを置き、過去の情報から計算するようにモデルを変えます。
このとき、Memory Blockは、入力の1ステップ前の値を出すの代数ループエラーは回避されます。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で ダイナミクス についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!