赞
踩
Autoware.universe中激光雷达感知部分的主要流程为:
Autoware.universe中激光雷达感知部分的代码相对简单,主要依赖于两部分算法性能,即(1)地面点云是否滤除干净;(2)深度学习算法是否能稳定检测出障碍物信息。这两部分网上有大量的阐述,这里不进行分析。
产生多余检测框的原因
滤除多余检测框的方法
根据障碍物中心点滤除与车辆距离过远的检测框。获取障碍物的中心点,之后判断中心点(只考虑x、y方向)是否在某个取值范围内。Autoware.universe中,默认取 x ∈ [ 0 , 100 ] , y ∈ [ − 50 , 50 ] x\in[0,100],y\in[-50,50] x∈[0,100],y∈[−50,50],即只考虑车前一定范围内的障碍物。核心程序代码如下,参考object_position_filter.cpp
if (
position.x > lower_bound_x_ && position.x < upper_bound_x_ && position.y > lower_bound_y_ &&
position.y < upper_bound_y_) {
output_object_msg.objects.emplace_back(object);
}
滤除与矢量地图中道路过远的检测框。分别从lantlet2地图和检测框中获取所有的道路信息和检测框的顶点信息,之后计算检测框与道路是否相交。如果相交,则保留该检测框;如果不相交,则去除该检测框。核心程序代码如下,参考object_lanelet_filter.cpp
for (const auto & road_lanelet : road_lanelets) {
if (boost::geometry::intersects(convex_hull, road_lanelet.polygon2d().basicPolygon())) {
intersected_lanelets.emplace_back(road_lanelet);
}
}
这两种滤除方法保留下来的检测框为:车前,且距离车道线附近一定距离的障碍物,符合自动驾驶参考的依据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。