Autoware.universe中激光雷达感知部分简述,一看就懂,不懂请打我

整体把握

Autoware.universe中激光雷达感知部分的主要流程为:

  1. 将原始点云数据输入地面滤波器和深度学习检测算法,分别得到地面滤波后的点云points_no_ground和Object检测框(该检测框内包含中心点、位姿、形状、类别)
  2. 将points_no_ground和Object检测框进行匹配。如果匹配成功,则输出Object检测框;如果匹配失败,则舍弃Object检测框
    • 匹配算法的示意图如下面第二幅图所示

整体流程

在这里插入图片描述

各部分阐述

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);
          }
        }
      
    • 这两种滤除方法保留下来的检测框为:车前,且距离车道线附近一定距离的障碍物,符合自动驾驶参考的依据

总结

  • 该部分想要输出最终的障碍物信息,必须points_no_ground和深度学习的检测框能够匹配
  • 存在两个要求:(1)地面点云滤波效果要好;(2)深度学习要尽可能的检测出场景内所有障碍物。换句话说,要想提升该部分感知性能,需要从这两方面入手。
    (2)深度学习要尽可能的检测出场景内所有障碍物。换句话说,要想提升该部分感知性能,需要从这两方面入手。
  • 深度学习的输入为原始点云,这就使得该类算法的推理时间大幅增加,所以如果想替换Autoware.universe中深度学习算法(centerPoint),还应该考虑算法耗时问题。推荐对要替换的深度学习算法进行tensorRT加速。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值