前言
最近在手动计算world坐标系到camera坐标系的欧拉角时,发现基于该欧拉角进行坐标转换,结果一直不对。但是之前直接在mujoco中读取欧拉角用于坐标转换时,一直没有出过问题,所以猜测是旋转轴用错了。
问题分析
一般沿xyz轴顺序旋转的欧拉角的三个值分别为
[
R
o
l
l
,
P
i
t
c
h
,
Y
a
w
]
[Roll,Pitch,Yaw]
[Roll,Pitch,Yaw],因为沿x轴旋转后,新坐标轴会变,所以在第二次沿y轴旋转时,就出现了一个问题:是沿原来的y轴旋转,还是沿变化后的y轴旋转
。
我印象里一直是沿变化后的坐标轴旋转
,在手动计算欧拉角时,也是这么算的,但是结果出错了。所以为了验证mujoco里的四元数在转成欧拉角时,到底是按照哪个轴转,在mujoco中手动控制机械臂末端运动,先沿world的y轴旋转90度,再沿world的z轴旋转90度,分别计算这两次旋转后的末端四元数转成的欧拉角,发现分别是
[
0
,
90
,
0
]
[0,90,0]
[0,90,0]和
[
0
,
90
,
90
]
[0,90,90]
[0,90,90],所以验证了欧拉角是沿原来的坐标轴旋转
。
问题是,我为啥会有沿变化后的坐标轴旋转的印象…。