LeGO-LOAM中减小水平方向的退化的代码
时间: 2023-06-18 13:02:33 浏览: 95
在LeGO-LOAM中,为了减小水平方向的退化,可以通过以下代码实现:
```c++
// 减小水平方向的退化
float srx = transform_cur[0].x() * transform_pre[0].x()
+ transform_cur[0].y() * transform_pre[0].y()
+ transform_cur[0].z() * transform_pre[0].z();
float sry = transform_cur[0].x() * transform_pre[1].x()
+ transform_cur[0].y() * transform_pre[1].y()
+ transform_cur[0].z() * transform_pre[1].z();
float srz = transform_cur[0].x() * transform_pre[2].x()
+ transform_cur[0].y() * transform_pre[2].y()
+ transform_cur[0].z() * transform_pre[2].z();
float tx = transform_cur[0].x() - srx * transform_pre[0].x()
- sry * transform_pre[1].x()
- srz * transform_pre[2].x();
float ty = transform_cur[0].y() - srx * transform_pre[0].y()
- sry * transform_pre[1].y()
- srz * transform_pre[2].y();
float tz = transform_cur[0].z() - srx * transform_pre[0].z()
- sry * transform_pre[1].z()
- srz * transform_pre[2].z();
transform_cur[0].x() = tx;
transform_cur[0].y() = ty;
transform_cur[0].z() = tz;
```
其中,`transform_cur`和`transform_pre`均为Eigen::Matrix4f类型的变量,表示当前点云帧和前一帧之间的变换矩阵。在上述代码中,首先计算出变换矩阵在x、y、z三个方向上的缩放比例系数(即srx、sry、srz),然后通过这些系数对变换矩阵进行调整,以减小水平方向的退化。最后,将调整后的变换矩阵保存在`transform_cur`中。
阅读全文