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

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

Accepted Answer

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

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!