ブロックを積みながら(180) Scilab/Xcos、剛体の回転に摩擦力を追加

Joseph Halfmoon

前々回は剛体の回転モデル、前回は摩擦力のモデルを練習しました。今回は前2回のモデルを結合し、摩擦のある中を回転する剛体のモデルとしたいと思います。結構「簡素」なモデルのつもりなんだけれども、出来たXcos(Scicos)フローはかなりメンドイです。後でサブブロック化して整理せんとこの先の追加ができんよ。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

    Scilab 2024.0.0

モデルと結合、その想定

前々回「ブロックを積みながら(178) Scilab/Xcos、剛体の回転、回転エネルギーも表示」慣性モーメントMOIを持つ剛体に対してScilab上で「計算した」トルク波形を与えて剛体を回転させたところをアニメーション表示するものでした。トルク、角速度、回転エネルギーなどをグラフ表示。

一方、前回「ブロックを積みながら(179) Scilab/Xcos、摩擦力、動き始めと止まるところメンド」では、物体とそれを置いた面の間の静止摩擦係数、動摩擦係数、物体質量と重力加速度からもとまる摩擦力に対して、押す力Fの波形をScilab上から与えて物体の動きをグラフにしました。

今回は以下の想定で上記2つの結果を結合したモデルとしました。

    1. 物体はある回転軸の周りに回転できる「剛体」、質量M[kg]、所定の回転軸を中心とする回転モーメントはM*r2 で与えられるものとする。r はモデル上の物体の半径r [m]
    2. 物体は平面上に置かれており、物体には重力加速度 g [m/s2]がかかっている。
    3. 物体、平面間の静止摩擦係数は mus、動摩擦係数は mud とする。
    4. 物体に対して駆動力F [N](Scilab本体からインポート)がかかるが、Fが摩擦力を越えなければ物体は回転しない。摩擦力を越えると、そのトルクにより角速度ω [rad/s] になる回転を始める。駆動力が0になると摩擦力が物体の回転速度を減じ、そのうち物体の回転は停止する。

さて、上記想定にて作成のXcos(Scicos)フローが以下に。上半分は前々回のフローを若干改造したもの。下半分が前回のフローを若干改造したもの。Rotation_Friction_Flow

シミュレーション設定

まず、Scilab上で定義した力Fの波形が以下に。これは前回利用の波形と同じです。

F.time = (0:10)';
F.values = [0; 0.2; 2; 2; 0.2; 0; 0; 0; 0; 0; 0];

また、フローのコンテキスト設定にて定義した各定数が以下に。Rotation_Friction_Context

そしてシミュレーションのパラメータ。Rotation_Friction_Parameter

今回も実時間スケールが2倍としてあるので、実時間で10秒のシミュレーションを20秒かけてスローモーション表示することになります。ただし、アニメーションの回転は「棒が回るばかりのぜんぜんスペクタキュラーじゃないもの」なので省略っす。

シミュレーション結果

シミュレーション結果のグラフが以下に。Rotation_Friction_Graph

まあ予定通りか。大丈夫か?

ブロックを積みながら(179) Scilab/Xcos、摩擦力、動き始めと止まるところメンド へ戻る

ブロックを積みながら(181) Scilab/Xcos、摩擦力計算をSuper Block化 へ進む