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を使えばよい