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

问题描述 投票:0回答:1

我已经定义了旋转矩阵,并希望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 00 0 10 -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()之后,旋转矩阵似乎仍然是相同的。你们对我可能在这里发生什么有任何线索吗?

matrix rotation transform eigen
1个回答
0
投票

找出问题。我必须设置roll_input_stamped_transform.transform.setIdentity()才能应用旋转矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.