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

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏:《linux深造日志》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

⛳️ 粉丝福利活动

  • 参与方式:通过连接报名观看课程,即可免费获取精美周边

  • ⛳️活动链接:《自动驾驶新人之旅》

  • 📆 活动时间长期有效 | 课程姓名填写 鸽芷咕 学号 1111

完成后加博主微信填写问卷领取礼品,也可根据《活动步骤》 完成领取

🔥 注:可以拉取进度条观看,超过%50即可领取百度周边
在这里插入图片描述

⛳️ 文章末尾扫码加入粉丝群,不定期发放粉丝福利,各种专业书籍免费赠送

文章目录

  • ⛳️ 粉丝福利活动
  • 引入
  • 一、 激光雷达在自动驾驶中的角色
  • 二、激光雷达的配置文件
    • 2.1 配置文件
  • 三、激光雷达追踪
    • 3.1 配置文件
  • 四、Apollo激光雷达的应用
    • 4.1 数据融合
    • 4.2 障碍物检测
    • 4.3 实时地图构建
    • 4.4 激光雷达技术的挑战和创新
  • 未来展望

引入

在自动驾驶技术的飞速发展中,感知系统的关键组件之一是激光雷达。百度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_DETECTIONstage_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_BANKstage_config: {stage_type: POINTCLOUD_PREPROCESSORenabled: truepointcloud_preprocessor_config: {filter_naninf_points: falsefilter_nearby_box_points: falsebox_forward_x: 2.0box_backward_x: -2.0box_forward_y: 2.0box_backward_y: -2.0filter_high_z_points: falsez_threshold: 5.0}
}stage_config: {stage_type: POINTCLOUD_DETECTION_PREPROCESSORenabled: trueplugin_config: {plugin_type: POINTCLOUD_DOWN_SAMPLEenabled: truepointcloud_downsample_config: {enable_downsample_pointcloud : trueenable_downsample_beams : truex_min_range : -74.88x_max_range : 74.88y_min_range : -74.88y_max_range : 74.88z_min_range : -2.0z_max_range : 4.0}}pointcloud_detection_preprocessor_config:{}
}stage_config: {stage_type: MAP_MANAGERenabled: truemap_manager_config: {update_pose: falseroi_search_distance: 120.0}
}stage_config: {stage_type: POINT_PILLARS_DETECTIONenabled: truepoint_pillars_detection_config: {}
}stage_config: {stage_type: POINTCLOUD_DETECTION_POSTPROCESSORenabled: trueplugin_config: {plugin_type: POINTCLOUD_GET_OBJECTSenabled: truepointcloud_get_objects_config:{}}
}stage_config: {stage_type: OBJECT_BUILDERenabled: trueobject_builder_config: {}
}stage_config: {stage_type: OBJECT_FILTER_BANKenabled: trueplugin_config: {plugin_type: ROI_BOUNDARY_FILTERenabled: trueroi_boundary_filter_config: {distance_to_boundary_threshold: -1.0confidence_threshold: 0.5cross_roi_threshold: 0.6inside_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_CLASSIFIERstage_config: {stage_type: MLF_ENGINEenabled: trueplugin_config: {plugin_type: MLF_TRACK_OBJECT_MATCHERenabled: truemlf_track_object_matcher_config: {foreground_mathcer_method: "MultiHmBipartiteGraphMatcher"background_matcher_method: "GnnBipartiteGraphMatcher"bound_value: 100max_match_distance: 4.0}}plugin_config: {plugin_type: MLF_TRACKERenabled: truemlf_tracker_config: {filter_name: "MlfShapeFilter"filter_name: "MlfMotionFilter"}}mlf_engine_config: {main_sensor: "velodyne128"use_histogram_for_match: truehistogram_bin_size: 10output_predict_objects: falsereserved_invisible_time: 0.3use_frame_timestamp: true}
}stage_config: {stage_type: FUSED_CLASSIFIERenabled: trueplugin_config: {plugin_type: CCRF_ONESHOT_TYPE_FUSIONenabled: trueccrf_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_FUSIONenabled: trueccrf_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: truetemporal_window: 20.0use_tracked_objects: true}
}

四、Apollo激光雷达的应用

4.1 数据融合

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

在这里插入图片描述

4.2 障碍物检测

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

4.3 实时地图构建

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

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

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

未来展望

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】docker部署conda并激活环境

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、新建dockerfile文件二、使用build创建镜像1.报错:Your shell has not been properly configured to use conda activate.…

快速学习SpringBoot

SpringBoot springboot传统方式构建spring应用程序使用springboot子项目构建起步依赖自动配置其它特性 SpringBoot项目部署Spring项目部署属性配置方式命令行参数方式配置环境变量方式外部配置文件方式 多环境开发-Pofiles多环境开发分组 springboot 传统方式构建spring应用程…

【数据结构】数组实现队列(详细版)

目录 队列的定义 普通顺序队列的劣势——与链队列相比 顺序队列实现方法: 一、动态增长队列 1、初始化队列 2、元素入队 3、判断队列是否为空 4、元素出队 5、获取队首元素 6、获取队尾元素 7、获取队列元素个数 8、销毁队列 总结: 动态增长队列…

whistle+SwitchyOmega前端api代理调试

1、whistle介绍 whistle官网whistle githubwhistle主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器,功能很强大 2、安装教程 官方安装文档 // 全局安装whistle npm install -g whistle// 安装whistle的inspect插件&a…

2024.1.3 关于 Redis 渐进式遍历 和 数据库管理命令

目录 引言 渐进式遍历 SCAN 命令 数据库管理命令 切换数据库 获取数据库 key 个数 删除数据库所有 key 同步删除 SYNC 异步删除 ASYNC 阅读下述文章之前建议点击下方链接熟悉 keys 命令的用法和特点 Redis 全局通用命令 ​​​渐进式遍历 keys * 命令一次性将 Redi…

安全狗入选“2023年福建省信息技术应用创新解决方案”名单

近日,福建省数字福建建设领导小组办公室公布了2023年福建省信息技术应用创新解决方案入选项目评选结果。 作为国内云原生安全领导厂商,安全狗凭借综合且具备突出创新水平的方案入选。 厦门服云信息科技有限公司(品牌名:安全狗&…

栈和队列oj题——232. 用栈实现队列

. 个人主页:晓风飞 专栏:LeetCode刷题|数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 题目要求:实现 MyStack 类:注意:示例:解释:提示: 解题核心概念数据…

LeetCode刷题---矩阵置零

解题思路: 本题要求原地置换元素 对矩阵进行第一轮遍历,使用第一行第一列来充当该行该列是否要置换为0的标记位,如果第一行或第一列本身就含有零元素,我们使用colZero和rowZero变量来对其标记。如果第i行第j列的那个元素为0&#…

how2heap-2.23-02-fastbin_dup_into_stack

fastbin_dup_into_stack和fastbin_dup没啥区别 https://blog.csdn.net/u014679440/article/details/135383465 仅仅是欲修改的位置&#xff0c;在栈中 #include <stdio.h> #include <stdlib.h>int main() {fprintf(stderr, "This file extends on fastbin_du…

leetcode13 罗马数字转整数

题目描述&#xff1a;罗马数字由七种字符组成&#xff0c;分别为 I、V、X、L、C、D 和 M&#xff0c;对应的数值分别为 1、5、10、50、100、500 和 1000。在一般情况下&#xff0c;小的数字位于大的数字右边&#xff0c;但有特殊情况&#xff0c;如 IV 表示 4&#xff0c;IX 表…

单线圈无刷直流电机驱动芯片选型分析,可应用于笔记本,显卡风散热风扇,变频冷却风扇,打印机风扇等产品上

单线圈无刷直流电机的电机驱动器。 GC1298R/S&#xff0c;GC1262E/S&#xff0c;GC1298R/S&#xff0c;GC1262R/S具有高效的直接PWM控制方式&#xff0c;它可以控制无刷直流电机转速。它集成了最低速度限制模式、可调速度斜率控制模式、软启动模式、风扇转速计、锁保护、自动重…

《剑指offer》数学第一题:数值的整数次方

题目描述&#xff1a; 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路&#xff1a; 给定一个浮点数求它的整数次方。要考虑到所有的情况&#xff0c;关于指数&#xff0c;如果是0&#xff0c;则结果是1&#xff1b; 指数是1&#xff0c…

CNN——AlexNet

1.AlexNet概述 论文原文&#xff1a;ImageNet Classification with Deep Convolutional Neural Networks 在LeNet提出后&#xff0c;卷积神经网络在计算机视觉和机器学习领域中很有名气。但卷积神经网络并没有主导这些领域。这是因为虽然LeNet在小数据集上取得了很好的效果&am…

C#: Label、TextBox 鼠标停留时显示提示信息

说明&#xff1a;记录在 Label、TextBox 控件上 鼠标停留时显示提示信息的方法。 1.效果图 2.具体实现步骤 1. 在Form 窗口中先创建 Label 并取名&#xff1a;KEY_label &#xff0c;或 TextBox 取名&#xff1a;KEY_textBox 在 Form1 函数中添加初始化代码&#xff0c;如下&…

ssm基于web的素材网的设计与实现+vue论文

基于web的素材网站的设计与实现 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。传统的素材信息管理模式&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理…

C#中使用 async await TaskCompletionSource<T>实现异步逻辑同步写

Task、async 和 await 是 C# 中用于处理异步编程的关键概念。它们一起构成了异步编程的基础。 Task Task 是表示异步操作的抽象&#xff0c;它属于 System.Threading.Tasks 命名空间。Task 可以表示已经完成的任务、正在运行的任务或者尚未开始的任务。通过 Task&#xff0c;…

你的第一个C/S程序

目录 socket服务端代码客户端代码执行结果 socket socket基础知识 服务端代码 import socket import threading import timeMSG_LENGTH 64 DISCONNECTED !CONNECTION CLOSED connections 0#定义服务器地址 server_ip socket.gethostbyname(socket.gethostname()) server…

【设计模式之美】面向对象分析方法论与实现(二):需求到接口实现的方法论

文章目录 一. 进行面向对象设计1. 划分职责>需要有哪些类2. 定义类及其属性和方法3. 定义类与类之间的交互关系4. 将类组装起来并提供执行入口 二. 如何进行面向对象编程&#xff1f;1. 接口实现2. 辩证思考与灵活应用 【设计模式之美】面向对象分析方法论与实现&#xff08…

教育场景数字化中音视频小程序的发展

教育场景数字化逐步成为刚需 2018年以来&#xff0c;国家对在线教育行业的监管收紧&#xff0c;以及受益于 5G 技术的发展&#xff0c;教育科技逐步走向成熟化和规范化。 教育行业的本质是人与人&#xff08;老师与学生、老师与家长&#xff0c;以及更多角色直接的沟通与互动…

【数据结构和算法】小行星碰撞

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 什么情况会用到栈 2.2 方法一&#xff1a;模拟 栈 三、代码 3.1 方法一&#xff1a;模拟 栈 四…