我已经定义了一个旋转矩阵,并希望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()
才能应用我的旋转矩阵。