代码已经上传至github:lidar_perception
https://github.com/hehern/lidar_perception
如果对你有帮助,请在github上帮忙点个star,谢谢!
代码包含:
1.点云坐标转换: 可以使用urdf实时tf发布,或者使用静态tf变换,实现雷达坐标系到车辆坐标系的坐标转换,车辆坐标系为前左天坐标系;
2.点云裁剪: 使用矩形框对点云进行裁剪,参数在param文件中;
3.滤地面: 使用K半径内点z坐标方差进行非地面点估计,建立kdtree查找k近邻时加速,可同时实现孤立点滤除;
4.聚类: 代码中包含三种聚类方式,区域增长聚类 欧几里得聚类 以及投影成俯视二值图的dbscan聚类;
5.minbox: 带有方向的boundingbox, 方法及代码是从apollo3.0中单独抠出来使用的;
6.hm-tracker: 匈牙利匹配跟踪.这段代码也是从apollo3.0中抠出来的;
7.状态估计: EKF,这块也是从apollo3.0中抠出来的,去掉了车道线方向的预判信息,但是这个模型更适合车辆,不是很适合行人,所以图中行人的轨迹不是很顺滑,还需要进一步修改.
结果展示:
不足之处:
1.没有动态障碍物和静态障碍物区分模块,原本我使用的时候是在固定路线上使用的,采用了路点路线对点云进行了二次滤波,也就是在我行驶路线上的点才进入聚类子程序( 这段代码删除了,不在上传的分支中), 但该方式依赖于定位结果,最好还是再加上动静态区分模块;
2.跟踪模块用的匈牙利匹配,但这种方法依赖于检测结果,后续我会再上传一个在点云上采用kcf跟踪的方法;
3.状态估计部分需要对模型进行优化.