欢迎访问我的个人博客: http://zengzeyu.com
前言
激光雷达扫描得到的点云含有大部分地面点,这对后续障碍物点云的分类、识别和跟踪带来麻烦,所以需要首先滤波滤掉。传统的基于几何特征的滤波是最基本最简单的方法,目前本文尝试的有如下几种:
- 水平面校准
- 法向量
- 栅格高度差
- 栅格最低高度以上0.2米
- 绝对高度
- 平均高度
以上方法基于假设是地面点云所构成的地面为平面,而不是弧面,当然对于有倾斜角度的地面也是可以先通过水平面校准然后再进行后处理来达到目标。下面将针对以上几种方法,通过实验结果比对各自方法优劣。
激光雷达地面点云分割方法
1. 水平面校准
水平面校准顾名思义就是通过找到地面点所在平面,然后进行校准点云的方法。通过此步可将数据采集阶段,采集到的地面点云相对于激光雷达 z 轴不平行校准为与之平行。目的是为后续处理提供更易于处理的点云。
方法过程:
- 分割出大致地面点
- 找到地点所在平面
- 通过变换矩阵校准平面
1. 分割出大致地面点
这一步可使用栅格高度差、绝对高度、法向量等方法来进行分割,目的只需要找到大部分地面点即可,不用进行精确的分割。本文通过法向量进行分割找到地面点。
2. 找到地点所在平面
通过PCL自带函数进行处理。
bool estimateGroundPlane(PointCloudXYZI::Ptr &in_cloud, PointCloudXYZI::Ptr &out_cloud,
visualization_msgs::MarkerPtr &plane_marker, const float in_distance_thre)
{
//plane segmentation
pcl::SACSegmentation<pcl::PointXYZI>