Simscape multibodyで各リンクの重心座標を取得する方法

自分用メモを兼ねてます.

MATLABのSimscape multibodyは簡単に多リンクモデルのシミュレーションができるツールボックスです.
シミュレーションの際に剛体リンクモデル全体の重心を参考に制御を行いたいときもあると思います.
各リンクの状態はリンクブロックから取得できるので簡単に制御に利用できますが剛体ブロックの情報をつかう重心は別で取得する必要があります.

もちろん自分で計算することもできるとは思いますが…楽したい
そんな時にはInertia Sensorブロックを使用します.

このブロックはSポートから伸びる線につないだ剛体の情報(重心など)を取得してくれます.
この時,Rigid Transformブロックでつないだブロックは1つの剛体とみなしてまとめて情報を取得してくれます.
一方,ピンジョイント等,ジョイントでつないだ剛体は別の剛体とみなして,つないだ側のリンクの情報のみを取得します.

また重心について取得する際にどの座標系で重心を表現した情報を受け取るかを”Measurment Frame”オプションで選ぶことができます.
“Attached”,”World”,”Custom”の3つから選べますが剛体リンクモデルで使用する場合は”World”でワールド座標系の原点からのベクトルとして重心を受け取るのが使いやすいと思います.
“Attached”はセンサーを付けたリンクに固定された座標系からの距離を返してくれますが,剛体リンクを使用する場合は剛体の重心と剛体に固定された座標系との距離は変化しないのでずっと同じ値(例えば0)になったりします.

コメント

タイトルとURLをコピーしました