将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 2

2024-05-05 08:52

本文主要是介绍将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

第五章 感知模块

我们俗称自动驾驶要回答几个问题:

  • 定位-“我在哪儿 (where am I)?”
  • 感知-“我周围是什么 (what’s around me)?“
  • 预测-“下一步会发生什么(what will happen next)? “
  • 规划-“我要做什么(What should I do)? “
  • 控制- “怎么做(How to do)?

感知模块相当于自动驾驶车辆的“眼睛”,它跟传感器直接相接,获取大量传感器的数据输入,然后分析处理后得到周围环境的理解,包括障碍物检测,跟踪和距离估计,车道识别和分割,交通标志和红绿灯识别等。由于现在自动驾驶系统都是装载多个多种传感器,所以传感器融合是必要的也是重要的感知部分,甚至一些系统把它单独列出来,独立于感知模块。
本章从5.1车载各种传感器的标定开始,5.2介绍了单目摄像头测距的各种方法,以及5.3单目图像的深度估计算法;接着5.4分析了目前单目摄像头的3-D障碍物检测方法,即3-D目标长方体框在图像的投影而不是2-D矩形框而已;然后5.5对障碍物跟踪方法展开讨论,包括单目标和多目标情形;传感器融合是重要的问题,5.6从数据级和任务级两个层次分析了融合的方法;5.7、5.8和5.9主要讨论车载视觉系统关心的三个问题:车道线检测、交通牌识别和红绿灯识别; 5.10重点讨论视觉摄像头看到的可驾驶区域问题,即语义的道路分割;5.11是基于立体视觉的感知模块分析;由于行人的行为分析需要,人体姿态估计在5.12讨论; 5.13特别提到驾驶员监控系统(DMS)的实现算法;5.14对当前最新的BEV感知系统做深入讨论。

关于BEV的介绍片段:
在这里插入图片描述
第六章 高清地图

“高清地图(HD map)”概念于2010年Mercedes-Benz首次引入,随后于2013年为Bertha Drive 项目做出贡献。在Bertha Drive项目中,Mercedes-Benz S500以完全自主的模式完成了Bertha-Benz Memorial Route,使用高度精确且信息丰富的3D路线图,该路线图后来被一家名为HERE的参与地图公司命名为“高清(HD)实时地图”。
高清地图(HD Map),在自动驾驶领域被看得很重,因为它能提供先验知识,让感知难度降低,同时规划有的放矢。
高清地图不是新的东西,已经有一些地图和自动驾驶公司开始制作和使用HD Map。但是,HD Map的制作和包含的信息以及精度仍然没有统一的共识。
本章6.1首先介绍高清地图的基本类型、层次、格式和制作方法,然后6.2重点讨论语义地图的各种生成方法,6.3强调车道线级别高清地图的制作方法,最后6.4介绍基于深度学习的SLAM方法。

关于高清地图制作的介绍片段:
在这里插入图片描述
第七章 定位模块

就道路上的自动驾驶车辆而言,首先重要的任务之一是将车辆定位在道路上。为此,车辆需要考虑来自多个传感器的信息,并将其与来自道路地图的数据融合。道路定位问题可以归结为三个部分:第一个是车辆当前行驶的道路确定;事实上,全球导航卫星系统还不够精确,无法自行推断出这些信息,因此需要一个滤波步骤;第二个是估计车辆在车道中的位置;最后第三个是评估车辆当前行驶的车道。这里讨论主要限于后两个部分,因为第一个在基于导航地图的定位中已经有成熟的方案,比如地图匹配(车辆位置与地图的路网相匹配)等。
有两种技术适合这个任务。第一种方法取决于高清地图存储的地标精确位置(例如车道标记),系统必须将检测的地标与地图中存储的地标相匹配。第二种技术完全依赖于车载传感器检测视觉地标,例如道路上的所有车道;然而,由于其他车辆的遮挡,有时无法检测到道路上所有车道标记;提取的相关道路级特征送入一个高级融合框架,该框架评估车道数和车辆行驶的车道。本章只限于讨论第一种方法。
基于地图的定位实际上分成两个阶段。在位置识别(place recognition)阶段,将传感器输出与一组地理标记的感兴趣地图区域进行比较,确定车辆在地图中的初始位置。随后,在地图度量定位(map metric localization)阶段,不断将传感器输出与经过的地图当前区域对齐,这样车辆在地图上运动的同时被跟踪。
因此,定位需要感知模块提供数据输入和地图的信息进行匹配;那么类似于感知模块,定位模块也会采用传感器融合的思路,即采用GPS/DGPS(如RTK),IMU,摄像头,激光雷达加高清地图的组合。
GPS定位是经典的方法,但是环境中电磁波的传播会因为天气、大气层,高楼大厦和山丘等因素产生时间误差,并造成估计的距离误差。为了补偿部分误差,提出了差分GPS即DGPS,比如RTK技术。千寻网络背靠中国兵器工业集团和阿里巴巴集团两个大公司,在全国提供这方面的服务。
还有另外两个定位算法:分为里程计法和惯性导航法。里程计( Odometry ) 是一种被广泛应用的方式,通过安装在车轮上的光电编码器(wheel encoder)记录车辆的运动过程从而估计其位置。惯性导航法(IMU)则利用加速度计和陀螺仪实现定位,里程计由于轮子侧滑会带来误差,而惯导的积分累积误差也会带来困扰,里程计和惯性导航的定位精度一般比较差,最好和GPS或者激光雷达/摄像头联合使用实现航位推测(dead reckoning)。
激光雷达点云数据做定位的方法,是要求感知输入的激光雷达点云(有的方法允许反射图)和高清地图的点云匹配,直接ICP计算量太大。大家熟悉的算法,常用的有正态分布变换(NDT,normal distributions transform),还有斯坦福大学的直方图滤波器(histogram filter)和粒子滤波(particle filter)之类。算法要求车载系统有激光雷达传感器,能够实时采集现场点云数据。也有压缩点云数据的快速匹配定位方法,比如TomTom的RoadDNA,Civil Maps的指纹图(Fingerprint Map),定位难度和精度上会有所折衷。
摄像头定位是视觉里程计或者视觉SLAM采用的,以前有不少研究“基于图像的重定位(Image-based Re-localization)”问题,用于SLAM的闭环(loop closure)检测和跟踪失败(tracking failure)恢复等等。SLAM方法包括稀疏法、致密法和半致密法,但在自动驾驶这个场景中,稀疏法是最合适的。不过,单纯靠视觉的特征点来实现定位是不足的,还需要语义目标的辅助,即语义地图。在自动驾驶中,语义地图最实用的是基于车道线的地图。
本章是前一章高清地图的衔接,首先7.1介绍低成本的基于车道线地图的定位技术,然后7.2讨论基于激光雷达的定位算法,接着7.3分析多传感器的融合定位方法,最后7.4介绍基于深度学习的定位方法。

关于深度学习的视觉定位分析片段:

在这里插入图片描述
第八章 规划(包括预测)模块

自动驾驶中的规划模块是确定车辆的动作,它基于输入的感知结果,而结果将送入控制模块确定车辆的实际操作。前面提到感知相当于自动驾驶的“眼睛“,那么规划的作用就相当于”大脑“,是非常重要的模块。
首先,需要确定几个专业词的表述:路线 = route;路径 = path;轨迹 = trajectory。
本章8.1首先介绍基本的规划理论,分三个层次,即路线规划、行为规划和运动规划;8.2讨论驾驶行为建模和预测,主要是基于数据驱动的机器学习方法;8.3扩展到行人行为的建模和预测问题;最后8.4附带讨论如何学习老司机的驾驶技术,是8.2课题的深入。

关于运动规划的讨论片段:

在这里插入图片描述
关于神经规划器的介绍片段:

在这里插入图片描述

关于车辆预测方法的分析片段:

在这里插入图片描述

这篇关于将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961296

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详