元高専生のロボット作り

元高専生のロボット作り

主にプログラミング, 電子系について書きます。たまに機械系もやります。メモ代わりの記事ばっか書きます

EigenのAngleAxisと同じmatlabコマンド

Eigenを使用したコードをmatlabに移植することになりました。
AngleAxisを使用していて、これは任意の軸を中心とした回転を回転行列として出してくれます。

matlabで回転行列を求めるコマンドはいろいろあって、どれを使えばいいのか。

3 次元回転ベクトルから回転行列への変換 - MATLAB rotationVectorToMatrix - MathWorks 日本
軸角度の回転を回転行列に変換 - MATLAB axang2rotm - MathWorks 日本
オイラー角の回転行列への変換 - MATLAB eul2rotm - MathWorks 日本


ソースコードをたどるのは面倒

ここにAngleAxisの例があるので、同じ出力になればオッケーということで
https://eigen.tuxfamily.org/dox/classEigen_1_1AngleAxis.html

コード

以下を実行すると同じ出力になることがわかる
Robotics System Toolboxをインストールする必要がある。(500MBくらい)

axangX = [1 0 0 0.25*pi];
rotmX = axang2rotm(axangX);
axangY = [0 1 0 0.5*pi];
rotmY = axang2rotm(axangY);
axangZ = [0 0 1 0.33*pi];
rotmZ = axang2rotm(axangZ);
rotmX*rotmY*rotmZ


出力

ans =

    0.0000   -0.0000    1.0000
    0.9686   -0.2487   -0.0000
    0.2487    0.9686    0.0000


結果

axang2rotmを使えばよい