从 Eigen::Isometry2d 获取旋转角度

Getting rotation angle from Eigen::Isometry2d

我正在使用 Eigen 库,特别是 2d 等轴测图来表示 2D 世界中对象的姿势。

如您所知,这包含三个组成部分:xy 位置以及角度 theta 旋转。

提取位置分量很简单:

Eigen::Isometry2d t;
double x = t.translation().x();
double y = t.translation().y();

对于旋转,可以使用如下公式:

double theta = atan2(t(1, 0), t(0, 0));

这个已经测试过了,可以正常使用,但是一直写有点不方便。因此,我的问题是,是否有人知道通过调用 Eigen 方法获得 theta 的更好方法。

您可以从变换的线性部分构造一个 Rotation2Dd 对象(如果您更喜欢标量,请使用 .angle() 提取角度):

double theta = Eigen::Rotation2Dd(t.linear()).angle();