転がり運動のモデル化について

5 次查看(过去 30 天)
yuki watanabe
yuki watanabe 2019-12-3
Simscape Multibody を使って物体の転がり運動をモデル化しようとしております.
現在,添付したモデルのように,転がらせたい物体の重心にRevolute Joint を取り付け,Revolute Jointの角度の情報をPrismatic Joint の位置へ反映させて,モデル化しています.
しかしこの場合,以下のような代数ループが発生して,複雑な構造物を扱うモデルの場合に,シミュレーション時間が大変長くなります.
添付したブロック線図上で信号がどうのような仕組みで代数ループしているのか,よくわかりません.
代数ループを避けて,物体の転がり運動を表現できる方法がありましたら,ご教授ください.
何卒よろしくお願いします.

采纳的回答

Hiroumi Mita
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ステップ前の値を出すの代数ループエラーは回避されます。desc.png
  1 个评论
yuki watanabe
yuki watanabe 2020-1-15
编辑:yuki watanabe 2020-1-15
Hiroumi Mita 様へ
返信が遅くなり大変申し訳ありません.
ご指摘頂いた通り,Memory Blockを組み込みましたらエラーが出ずに済みました…
返信して頂き,ありがとうございます.
watanabe
追伸
不躾で大変恐縮なのですが,物体の転がりを表現するのに上の書き込みで添付した方法ではなく,ラック&ピニオン ブロックなどを用いて表現するのとでは差異はあったりするのでしょうか.
watanabe

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!