クォータニオンも行列による回転行列も本質的には「同じもの」です。クォータニオンは「回転軸のベクトル」と回転角度をパラメーターとして与えますが同じ変換を回転行列でも表現できます。
「クォータニオン」「回転行列」といった用語の違いにとらわれすぎてその本質を押さえないでいるとどう取り扱えばよいかが把握できないのではないでしょうか。
これを理解するには例えば
https://qiita.com/kenjihiranabe/items/945232fbde58fab45681
http://www.mss.co.jp/technology/report/pdf/18-07.pdf
のような解析記事を見てその内容を把握するとよいと思います。こうした解説を読むには幾何計算・線形代数の素養が必要ですがそれさえあれば理解はそれほど難しくはないと思います。
微分と積分
高校数学で学ぶ微積分は初等関数を用いた「代数式の変換」として学ぶと思いますが計算機で「計測値」による計算を行う場合は「代数式の変換としての微積分」ではなく「数値計算的に微積分を行う」ことが多いと思います。それを把握するには微積分の「公式」よりは「微積分とは何か」の本質の知識があればよいです。
例えばセンサーで検出する値はある時刻tにおける、関数G(t)の計測値がわかるだけであり数式が得られるわけではないですよね?数式が未知でもG(t)の具体値から「G(t)の変化の度合い」を計算することはできます。その変化の度合いが要するに「微分」ですよね?そして変化の度合いを累積するのが即ち積分です。我々の道具であるデジタル計算機は離散的なデータを数値として扱うアプローチをとりますので理論的な数式がわかってないような問題の場合はもっぱら数値計算に頼るしかありません。
このあたりのデータ処理の手法は数学の知識および数値計算の知識があると取り組みやすいです。質問者さんはその辺りは充分把握しておられるでしょうか?
例えばf(t)=t^2
を例にとりtのインターバルを0.1ごとに計測した値0, 0.01, 0.04, 0.09, ...を用いて数値計算的にf(t)の数値微分とf(t)の数値積分をプログラミングできますか?それがわかればクォータニオンに対しても同様のアプローチで行けると思います。
余談(?)ですが携帯機のジャイロセンサーは「地球の引力」+「人間(など)が携帯機にかける力(加速度)」といった記事を見ました。もしそうならセンサーの検出値を単純に微分したり積分しても携帯機の軌跡とは一致しないように思います。
ある時刻tでセンサーからの検出値G(t)が得られたとして、静止状態でのt0, G(t0)から連続して得られるG(t)を調べながら初期状態での携帯機の姿勢、引力以外に携帯機にかかった力の変化、携帯機の姿勢および位置の変化をトータルで考えないといけないのではないのかなーと思いました。(自分は携帯機のセンサーを使った本件のようなプログラミングに取り組んだことがないので勘違いしているかも知れません。間違ってたらご容赦を)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/30 05:21
2018/06/30 05:25
2018/06/30 05:49 編集
2018/06/30 05:49
2018/06/30 05:59