Eigen::Transform 中的 rotate() 不会转换我的旋转矩阵



我已经定义了一个旋转矩阵,并希望Eigen::Transform执行旋转。出于某种原因,尽管我正在旋转它,但它仍然设置为标识。

//Definig my rotation matrix
Eigen::Matrix3f roll_rotation_matrix( 3, 3 );
roll_rotation_matrix << 1, 0, 0, 0, 0, 1, 0, -1, 0;
//Print
display("PRINT ROLL ROTATION: ")
display(roll_rotation_matrix)
// Perform rotation along X 
display("BEFORE: ")
display(roll_input_stamped_transform.transform.rotation())
//Rotate the rotation matrix
roll_input_stamped_transform.transform.rotate( roll_rotation_matrix );
roll_input_stamped_transform.transform.rotation = roll_rotation_matrix;
//Print
display(" AFTER: ")
display(roll_input_stamped_transform.transform.rotation());

我在这里的输出如下: 打印辊旋转: 1 0 0 0 0 1 0 -1 0

BEFORE: 
1 0 0
0 1 0
0 0 1
AFTER: 
1 0 0
0 1 0
0 0 1

当我打印roll_rotation_matrix时,我可以看到我的矩阵不是身份。但是,即使在应用 rotate(( 之后,旋转矩阵似乎仍然处于同一状态。 你们知道我在这里会发生什么吗?

解决了问题。 我必须设置roll_input_stamped_transform.transform.setIdentity()才能应用我的旋转矩阵。

最新更新