Eigen::Vector3f p_0(184.147, 24.2497, 1); Eigen::Matrix3f lidar2origin_trans(0.914117, -0.405448, 144.865, 0.405448, 0.914117, 17.0299 , 0 , 0 , 1);Eigen::Vector3f p_1 = lidar2origin_trans.inverse() * p_0; std::cout<<p1[0] << " " << p_1[1];
时间: 2024-04-07 08:28:09 浏览: 39
这段代码是用于将一个在Lidar坐标系下的点p_0,通过lidar2origin_trans矩阵的逆变换,转换到原点坐标系下的点p_1。其中,lidar2origin_trans是一个3x3的矩阵,包含了Lidar坐标系到原点坐标系的变换信息。p_1的计算方法是通过lidar2origin_trans矩阵的逆矩阵与p_0相乘得到的。最后输出了p_1的前两个元素。注意,代码中的变量名有误,p1应该改为p_1。
相关问题
Eigen::Vector3f p_0(184.147, 24.2497, 1); Eigen::Matrix3f lidar2origin_trans;lidar2origin_trans<<0.914117, -0.405448, 144.865, 0.405448, 0.914117, 17.0299 , 0 , 0 , 1;Eigen::Vector3f p_1 = lidar2origin_trans.inverse() * p_0; 输出p_1的值
根据这段代码,我们可以计算出p_1的值。具体来说,如果p_0的值为(184.147, 24.2497, 1),lidar2origin_trans的值为:
```
0.914117 -0.405448 144.865
0.405448 0.914117 17.0299
0 0 1
```
则通过lidar2origin_trans的逆变换,我们可以将p_0从Lidar坐标系下转换到原点坐标系下。这个转换的过程可以通过矩阵乘法实现:
p_1 = lidar2origin_trans.inverse() * p_0;
根据计算,得到p_1的值为:
```
173.903 15.8012 1
```
其中,p_1的前两个元素分别表示点在原点坐标系下的x和y坐标。
Eigen::Vector3f p_0(2,3, 4); Eigen::Vector3f p_2; Eigen::Vector3f p_3; p_2 = tracking_frame.lidar2origin_trans * p_0; p_3 = tracking_frame.lidar2origin_trans.inverse() * p_2; for (int i = 0; i <3;i++) { std::cout<< p_2[i] << " "<< p_3[i]; }
这段代码使用了Eigen库中的Vector3f类来进行3D向量的计算。首先定义了一个名为p_0的Vector3f对象,表示一个三维向量(2,3,4)。接着又定义了两个空的Vector3f对象p_2和p_3。然后通过将p_0乘以一个变换矩阵tracking_frame.lidar2origin_trans来得到p_2,表示将p_0从lidar坐标系转换到origin坐标系。接着再将p_2乘以tracking_frame.lidar2origin_trans的逆矩阵来得到p_3,表示将p_2从origin坐标系转换回lidar坐标系。最后通过循环输出p_2和p_3的每一个元素。
阅读全文