simscape multibodyにおける角度検出方法
Show older comments
matlabのsimscape multibody のライブラリにあるtransform sensorに関する質問です。
シミュレーション中の物体のロール角、ピッチ角、ヨー角をそれぞれ個別に調べようと思いました。そこで、transform sensorによって調べようと思ったところtransform sensorのrotationの中のangleが1種類しかありません。
ロール角、ピッチ角、ヨー角の三種類を調べるにはどのようにすればよいのでしょうか?
Answers (3)
Toshinobu Shintai
on 9 Oct 2020
0 votes
3次元の回転姿勢の情報を出力させたい場合は、「Quaternion」または「Transform」にチェックを入れてください。それぞれクオータニオン(4要素のベクトル)、回転行列(3x3の行列)が出力されます。
ロール角、ピッチ角、ヨー角というのは、3次元の回転を正確に表す表現ではありません。ただし、クオータニオンまたは回転行列からロール角、ピッチ角、ヨー角を求めることはできます。「Coordinate Transformation Conversion」ブロックを用いて変換できます。
Okamoto Sakumi
on 9 Oct 2020
0 votes
1 Comment
Toshinobu Shintai
on 9 Oct 2020
説明が不足しておりまして申し訳ありません。「Coordinate Transformation Conversion」ブロックを使うには、Robotics System Toolbox, Navigation Toolbox, ROS Toolboxのどれかをインストールする必要があります。
ちなみに、変換するブロックを自作する場合は、添付ファイルをご参照ください。
私が以前に作成した、クオータニオンの回転状態を把握するライブスクリプトです。クオータニオンからロールピッチヨー角へ変換する計算式も記載しています。ライブスクリプトはR2019aで作成しています。
Okamoto Sakumi
on 9 Oct 2020
0 votes
8 Comments
Toshinobu Shintai
on 9 Oct 2020
クオータニオン値を入れます。クオータニオンが何か、ご存じないようですので、以下のリンク先を確認していただけますでしょうか。
リンク先に書かれている、a+bi+cj+dk のa, b, c, dの四つを入力します。ライブスクリプト中では、aがq0, bがq1, cがq2, dがq3です。
好きな数字を入れてよいですが、3次元の姿勢を表すクオータニオンは、必ず大きさ1のクオータニオンになります。
Okamoto Sakumi
on 10 Oct 2020
Okamoto Sakumi
on 10 Oct 2020
Toshinobu Shintai
on 10 Oct 2020
Edited: Toshinobu Shintai
on 10 Oct 2020
まずはドキュメント(Help)を読んでいただけましたでしょうか。確かに、ドキュメントもかなり分かりにくいので、説明させていただきます。
以下のようにブロックパラメータを設定すると、ロール角、ピッチ角、ヨー角の順番でベクトル化された数値が出力されます。XYZがそれぞれロールピッチヨーに相当することになります。

軸角度の設定をした場合、x, y, z ,thetaの4変数が出力されますが、このときの[x, y, z]は回転軸ベクトルを表し、thetaはその軸の周りに回転させた回転角を表します。
Okamoto Sakumi
on 10 Oct 2020
Toshinobu Shintai
on 12 Oct 2020
信号線は三つの要素を含むベクトルでであるため、要素ごとに線を分離したい場合は「demux」ブロックを使うことができます。
信号を分離しなくても、ベクトルをログして要素ごとにグラフ化することはできます。その場合、シミュレーションデータインスペクターを使うのをお勧めします。
Okamoto Sakumi
on 12 Oct 2020
Toshinobu Shintai
on 15 Oct 2020
返事が遅れまして申し訳ないです。
別種の質問であれば、新規に質問を立て直してください。
Categories
Find more on ダイナミクス in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



