百度Apollo:激光雷达检测技术深度解析

简介: 百度Apollo:激光雷达检测技术深度解析

引入

在自动驾驶技术的飞速发展中,感知系统的关键组件之一是激光雷达。百度Apollo平台作为领先的自动驾驶解决方案之一,其激光雷达检测技术在实现高精度环境感知方面发挥着关键作用。

一、 激光雷达在自动驾驶中的角色

激光雷达(LiDAR)是一种通过发射激光束并测量其返回时间来感知周围环境的传感器。在自动驾驶中,激光雷达的角色不可忽视,因为它提供了高精度的三维空间信息,用于检测障碍物、构建地图以及进行定位。

二、激光雷达的配置文件

激光雷达检测用于 3D 目标检测,它的输入是激光雷达点云,输出为检测到的物体的类型和坐标,具体的实现在lidar_detection_component中。它的流水线配置文件在

  • modules/perception/pipeline/config/lidar_detection_pipeline.pb.txt

一共分为 7 个阶段,其 POINTCLOUD_DETECTION_PREPROCESSORPOINTCLOUD_DETECTION_POSTPROCESSOROBJECT_FILTER_BANK 各包含 1 个

2.1 配置文件

和上图对应,lidar_detection_component组件一共分为 7 个阶段,具体的流水线配置如下。

pipeline_type: LIDAR_DETECTION
stage_type: POINTCLOUD_PREPROCESSOR
stage_type: POINTCLOUD_DETECTION_PREPROCESSOR
stage_type: MAP_MANAGER
stage_type: POINT_PILLARS_DETECTION
stage_type: POINTCLOUD_DETECTION_POSTPROCESSOR
stage_type: OBJECT_BUILDER
stage_type: OBJECT_FILTER_BANK
stage_config: {
  stage_type: POINTCLOUD_PREPROCESSOR
  enabled: true
  pointcloud_preprocessor_config: {
    filter_naninf_points: false
    filter_nearby_box_points: false
    box_forward_x: 2.0
    box_backward_x: -2.0
    box_forward_y: 2.0
    box_backward_y: -2.0
    filter_high_z_points: false
    z_threshold: 5.0
  }
}
stage_config: {
  stage_type: POINTCLOUD_DETECTION_PREPROCESSOR
  enabled: true
  plugin_config: {
    plugin_type: POINTCLOUD_DOWN_SAMPLE
    enabled: true
    pointcloud_downsample_config: {
      enable_downsample_pointcloud : true
      enable_downsample_beams : true
      x_min_range : -74.88
      x_max_range : 74.88
      y_min_range : -74.88
      y_max_range : 74.88
      z_min_range : -2.0
      z_max_range : 4.0
    }
  }
  pointcloud_detection_preprocessor_config:{
  }
}
stage_config: {
  stage_type: MAP_MANAGER
  enabled: true
  map_manager_config: {
    update_pose: false
    roi_search_distance: 120.0
  }
}
stage_config: {
  stage_type: POINT_PILLARS_DETECTION
  enabled: true
  point_pillars_detection_config: {
  }
}
stage_config: {
  stage_type: POINTCLOUD_DETECTION_POSTPROCESSOR
  enabled: true
  plugin_config: {
    plugin_type: POINTCLOUD_GET_OBJECTS
    enabled: true
    pointcloud_get_objects_config:{
    }
  }
}
stage_config: {
  stage_type: OBJECT_BUILDER
  enabled: true
  object_builder_config: {
  }
}
stage_config: {
  stage_type: OBJECT_FILTER_BANK
  enabled: true
  plugin_config: {
    plugin_type: ROI_BOUNDARY_FILTER
    enabled: true
    roi_boundary_filter_config: {
      distance_to_boundary_threshold: -1.0
      confidence_threshold: 0.5
      cross_roi_threshold: 0.6
      inside_threshold: 1.0
    }
  }
  object_filter_bank_config: {
  }
}
lidar_detection_config: {
}

三、激光雷达追踪

激光雷达追踪是一种使用激光雷达(LIDAR)技术来检测、跟踪和预测物体运动的过程。它通常涉及到对激光雷达数据的处理和分析,以确定物体的位置、速度和轨迹。

而在apollo 里面激光雷达跟踪用于追踪上面检测到的 3D 目标对象,它的输入是激光雷达点云检测结果,输出为跟踪到对象的 ID,具体的实现在 lidar_tracking_component 中。

它的流水线配置文件在 modules/perception/pipeline/config/lidar_tracking_pipeline.pb.txt 中,一共分为 2 个阶段,每个阶段各包含 2 个算法插件。

3.1 配置文件

stage_type: MLF_ENGINE
stage_type: FUSED_CLASSIFIER
stage_config: {
  stage_type: MLF_ENGINE
  enabled: true
  plugin_config: {
    plugin_type: MLF_TRACK_OBJECT_MATCHER
    enabled: true
    mlf_track_object_matcher_config: {
      foreground_mathcer_method: "MultiHmBipartiteGraphMatcher"
      background_matcher_method: "GnnBipartiteGraphMatcher"
      bound_value: 100
      max_match_distance: 4.0
    }
  }
  plugin_config: {
    plugin_type: MLF_TRACKER
    enabled: true
    mlf_tracker_config: {
      filter_name: "MlfShapeFilter"
      filter_name: "MlfMotionFilter"
    }
  }
  mlf_engine_config: {
    main_sensor: "velodyne128"
    use_histogram_for_match: true
    histogram_bin_size: 10
    output_predict_objects: false
    reserved_invisible_time: 0.3
    use_frame_timestamp: true
  }
}
stage_config: {
  stage_type: FUSED_CLASSIFIER
  enabled: true
  plugin_config: {
    plugin_type: CCRF_ONESHOT_TYPE_FUSION
    enabled: true
    ccrf_type_fusion_config: {
      classifiers_property_file_path: "./data/perception/lidar/models/fused_classifier/classifiers.property"
      transition_property_file_path: "./data/perception/lidar/models/fused_classifier/transition.property"
      transition_matrix_alpha: 1.8
    }
  }
  plugin_config: {
    plugin_type: CCRF_SEQUENCE_TYPE_FUSION
    enabled: true
    ccrf_type_fusion_config: {
      classifiers_property_file_path: "./data/perception/lidar/models/fused_classifier/classifiers.property"
      transition_property_file_path: "./data/perception/lidar/models/fused_classifier/transition.property"
      transition_matrix_alpha: 1.8
    }
  }
  fused_classifier_config {
    one_shot_fusion_method: "CCRFOneShotTypeFusion"
    sequence_fusion_method: "CCRFSequenceTypeFusion"
    enable_temporal_fusion: true
    temporal_window: 20.0
    use_tracked_objects: true
  }
}

四、Apollo激光雷达的应用

4.1 数据融合

Apollo平台采用多传感器融合的方法,将来自不同传感器的信息整合在一起,以获取更全面、准确的环境感知。激光雷达的数据与摄像头、毫米波雷达等传感器的数据相融合,提高了感知系统的鲁棒性。

4.2 障碍物检测

激光雷达通过测量返回时间来计算物体的距离,并通过旋转来获取物体的方位。这些数据用于高精度的障碍物检测,能够识别车辆、行人、建筑物等。

4.3 实时地图构建

激光雷达还用于实时地图构建,为自动驾驶车辆提供高精度的地图信息。这对于路径规划和决策制定至关重要。

4.4 激光雷达技术的挑战和创新

激光雷达技术在自动驾驶中面临着一些挑战,如对恶劣天气的适应性、点云处理的复杂性等。为了解决这些问题,Apollo平台在激光雷达技术上不断创新,采用先进的信号处理算法和机器学习技术,提高系统的性能。

未来展望

随着技术的不断发展,激光雷达技术在自动驾驶中将继续发挥重要作用。未来,我们可以期待更小型、高分辨率的激光雷达设备,以及更智能、自适应的感知系统。

目录
相关文章
|
20天前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
26 2
|
11天前
|
JSON 前端开发 JavaScript
【JavaScript技术专栏】JavaScript异步编程:Promise、async/await解析
【4月更文挑战第30天】JavaScript中的异步编程通过Promise和async/await来解决回调地狱问题。Promise代表可能完成或拒绝的异步操作,有pending、fulfilled和rejected三种状态。它支持链式调用和Promise.all()、Promise.race()等方法。async/await是ES8引入的语法糖,允许异步代码以同步风格编写,提高可读性和可维护性。两者结合使用能更高效地处理非阻塞操作。
|
14天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
负载均衡 关系型数据库 MySQL
MySQL读写分离技术深度解析
在高并发、大数据量的互联网应用环境中,数据库作为数据存储的核心组件,其性能直接影响着整个系统的运行效率。MySQL作为最常用的开源关系型数据库之一,虽然功能强大,但在处理大量并发读写请求时,单点服务器的性能瓶颈逐渐显现。为了解决这一问题,MySQL读写分离技术应运而生,成为提升数据库性能、实现负载均衡的有效手段。
|
3天前
|
存储 SQL 自然语言处理
RAG技术全解析:打造下一代智能问答系统
一、RAG简介 大型语言模型(LLM)已经取得了显著的成功,尽管它们仍然面临重大的限制,特别是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。 二、RAG架构 2.1 RAG实现过程 RAG在问答系统中的一个典型
35 2
|
4天前
|
机器学习/深度学习 算法 物联网
LISA微调技术解析:比LoRA更低的显存更快的速度
LISA是Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning的简写,由UIUC联合LMFlow团队于近期提出的一项LLM微调技术,可实现把全参训练的显存使用降低到之前的三分之一左右,而使用的技术方法却是非常简单。
|
11天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
11天前
|
NoSQL 大数据 数据处理
MongoDB聚合框架与复杂查询优化:技术深度解析
【4月更文挑战第30天】本文深入探讨了MongoDB的聚合框架和复杂查询优化技术。聚合框架包含$match、$group、$sort和$project阶段,用于数据处理和分析,提供灵活性和高性能。优化查询涉及创建合适索引、使用聚合框架、简化查询语句、限制返回结果数、避免跨分片查询、只查询所需字段及使用$inc操作符。理解这些技术有助于提升MongoDB在大数据和复杂查询场景下的性能。
|
11天前
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
12天前
|
编解码 前端开发 JavaScript
网页设计的艺术与技术:深入解析与代码实践
网页设计的艺术与技术:深入解析与代码实践
18 1

推荐镜像

更多