如何将Eigen::AngleAxisd转换为Eigen::Vector3d旋转向量
Eigen旋转矩阵逆转为旋转向量实现方案
旋转向量的核心定义为单位旋转轴 × 旋转角度(弧度制),你可以直接用AngleAxisd提供的两个成员组合得到目标Eigen::Vector3d对象,实现代码如下:
// 直接将角度与单位轴向量相乘即可 Eigen::Vector3d restored_rot_vec = rotvec2.angle() * rotvec2.axis();
注意事项
- Eigen中
AngleAxisd::angle()返回值为弧度制,和你构造AngleAxisd时传入的角度单位完全匹配,无需额外单位转换。 - 从旋转矩阵构造
AngleAxisd时,Eigen默认返回的角度范围为[0, π],如果原始旋转向量的模长(即旋转角度)超出该范围,转换得到的旋转向量会和原始向量存在2π * 单位轴的偏移,或轴方向取反+角度补至[0, π]区间,二者属于等效旋转表示,实际旋转效果完全一致。
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

