简体   繁体   English

使用特征库从旋转矩阵滚动俯仰和偏航

[英]Roll pitch and yaw from Rotation matrix with Eigen Library

I need to extract the roll pitch yaw angles from a rotation matrix and I want to be sure that what I do is correct. 我需要从旋转矩阵中提取滚动俯仰偏航角度,我想确保我所做的是正确的。

    Eigen::Matrix< simFloat, 3, 1> rpy = orientation.toRotationMatrix().eulerAngles(0,1,2);
    const double r = ((double)rpy(0));
    const double p = ((double)rpy(1));
    const double y = ((double)rpy(2));

Is that correct? 那是对的吗? Because I was reading here: http://eigen.tuxfamily.org/dox/group__Geometry__Module.html#gad118fececd448d7485ffea4858775e5a 因为我在这里阅读: http//eigen.tuxfamily.org/dox/group__Geometry__Module.html#gad118fececd448d7485ffea4858775e5a

And I was a bit confused when it says, at the end of the description, in which intervals are defined the angles. 当我在描述的最后说明在哪个区间定义角度时,我有点困惑。

I think this is what you are looking for. 我想这就是你要找的东西。 Depending on how we use m.eulerAngles(0, 1, 2) ; 取决于我们如何使用m.eulerAngles(0, 1, 2) ; Here's the code which get rotx, roty, rotz that is reconstructed with rotx*roty*rotz 这是使用rotx*roty*rotz重建的rotx,roty,rotz的代码

Matrix3f m;

m = AngleAxisf(0.25*M_PI, Vector3f::UnitX())
  * AngleAxisf(0.5*M_PI, Vector3f::UnitY())
  * AngleAxisf(0.33*M_PI, Vector3f::UnitZ());

cout << "original rotation:" << endl;
cout << m << endl << endl;

Vector3f ea = m.eulerAngles(0, 1, 2); 
cout << "to Euler angles:" << endl;
cout << ea << endl << endl;

Matrix3f n;
n = AngleAxisf(ea[0], Vector3f::UnitX())
  * AngleAxisf(ea[1], Vector3f::UnitY())
  * AngleAxisf(ea[2], Vector3f::UnitZ()); 

cout << "recalc original rotation:" << endl;
cout << n << endl;

Thank you for your reference! 谢谢你的参考! I also firstly use Eigen. 我也首先使用Eigen。 It's simply save a lot of work! 它只是节省了大量的工作!

The answer by Shawn Le is correct but I think the line should be Shawn Le的答案是正确的,但我认为这条线应该是

Vector3f ea = m.eulerAngles(2, 1, 0);

Then ea will hold the yaw pitch and roll value in that order. 然后ea将按顺序保持偏航俯仰和滚动值。 ZYX euler angle rotation is equivalent to XYZ fixed axis rotation which is nothing but roll pitch and yaw. ZYX欧拉角旋转相当于XYZ固定轴旋转,这只是滚动俯仰和偏航。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM