【自动驾驶行业观察】智行者 自动驾驶方案

2023-11-21 15:10

本文主要是介绍【自动驾驶行业观察】智行者 自动驾驶方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

张德兆,清华大学汽车工程系学士、博士。曾任北京智华驭新汽车电子技术开发有限公司(简称「智华」)CTO,总经理,负责前装车道偏离预警系统和前装 360 度全景系统研发、AEB、ACC、LKS 样车开发等多项高难度研发工作。2015 年,创办北京智行者科技有限公司(简称「智行者」),并担任 CEO。

智行者的定位是自动驾驶智能车方案系统提供商,主要聚焦中央决策系统的开发以及系统集成。

以下内容是张德兆在雷锋网硬创公开课上的分享:

我今天介绍的主题是「自动驾驶智能车控制决策系统开发」。我会从 4 个方面去阐述,包括:

  • 概述;
  • 多传感器信息融合;
  • 决策规划;
  • 车辆控制决策算法。

概述

先谈谈我对智能车商业化路径的一个大概思考。

汽车的第一属性是交通和运输工具,但在无人驾驶时代,特别是在物联网时代,汽车将会具备第二个属性:终端和管道。这有可能才是智能车最大的商业变现点。但第二属性需要智能车大量普及之后才能显现。

现阶段智能车可以在一些限定应用场景下实现快速市场化,例如最后一公里的出行、固定路线的作业车、物流配送等等。

智能车涉及的产业链非常长,先不说后续的运营和服务,光是智能车开发本身就涉及环境感知、中央决策、底层执行等多个模块,每一个模块拎出来都可以造就一批伟大的公司。

智行者主要聚焦在中央决策系统的开发以及智能车整个大系统的集成,主要包括三部分工作:多传感器信息融合;决策规划;车辆控制。

如何做多传感器信息融合

智行者对各个传感器本身不进行研发生产,而是找合作方合作供应。但是,现在做雷达的公司只做雷达、做摄像头的公司只做摄像头。对于自动驾驶应用来说,没有一种传感器是完美的,所以我们要做融合,取长补短。

我们的多传感器融合主要包含三个功能模块:采集及预处理,坐标转换、信息融合。

在采集及预处理模块中,我们在 ROS 系统中各个传感器以单独的节点进行,然后进行信号解析、信号处理、信号筛选、误差补偿等工作。

坐标转换实际上就是将多传感器统一到一个坐标系下,这是靠标定相关数据后能在软件中瞬间实现的。

最难的部分在信息融合模块。我们将其分为 4 个步骤:数据关联、时间同步、数据融合、目标生命周期管理。

  • 因为每个传感器误差特性不一样,同一个目标对应不同传感器得到的位置信息可能不一样,所以我们需要先进行数据关联。这一步骤的难点在于需要对不同传感器的误差特性均有充分的了解。
  • 每个传感器信息发送周期不一样,即使按其标称周期进行同步,也会存在固定时漂和随机时漂的问题,所以时间同步这一步骤的关键点在于:了解各传感器的信号周期和时漂。
  • 数据融合步骤可以使用的方法有很多,例如卡尔曼滤波。但实际上,因为每个传感器各自建模的难度较大,我们直接采用粒子滤波的方法,可以不依赖于建模。
  • 目标生命周期管理主要用于在有噪声干扰的情况下保证各帧数据的连贯性。

获取环境数据并确定「我在哪」之后,智能车需要做决策规划。

决策规划

决策规划实际包含三部分:定位、决策、路径规划。定位即我在哪;决策即我该怎么办,跟着走还是绕过去;路径规划即我是从左绕还是从右绕。

实际上,我们是把决策和路径规划放在一个模块里一起做了。我们用基于传统规则的方法、基于安全场的深度学习方法实现决策规划功能。

基于传统规则的方法大家都比较熟悉,其主要是以某一个或某一些固定的变量作为条件切换的判断依据,例如跟车的时候,规定和前车的相对速度或距离小于某一值就不跟了,马上换道。

但实际上人驾驶时一般不会这么干,所以完全基于规则的方法无法让智能车适应人的特性,无法让智能车「正常」的融入整个交通流。

现在深度学习方法可以比较好的解决这个问题,可以让智能车跟人学习,实现智能车的拟人化控制。但是深度学习有一个过程,并且他决策出来的路径会有一个偏差和概率的分布,不能完全避免碰撞和驶出马路等事故的发生,所以我们还得结合传统规则的方法来做:用 rule-based 保障安全,用深度学习实现拟人化决策。

对深度学习方法的应用

作为深度学习的应用公司,我们对深度学习算法本身不做太多研究(深度学习的平台公司会去做开发,我们只做应用),仅把他当做一个工具来使用。我们主要做的事情是针对智能车的应用,为道路数据和驾驶数据选取一个比较合理的表达方式。

实际道路中影响驾驶的因素非常多,如果对所有因素都单独描述作为深度学习神经网络的输入,几乎是无穷无尽的,所以我们将这所有的因素都统一描述成「安全场」,即:只关注车辆对行驶的危险程度。

安全场理论实际多年前由日本学者提出,用于 ADAS 系统。例如:车道保持,就把车道线描述成如下图所示的场,车辆要跨出去必须克服一定的「能量」。前向防追尾也是一样的道理。

针对自动驾驶建立安全场的过程

安全场的原理在于: 在驾驶过程中,任何干扰因素(车辆、行人、道路、交通标志甚至天气)都将直接或间接的影响驾驶动作。如果这些因素以某种能量进行描述的话,那么理想驾驶状态应遵循这些能量的某种平衡。主要包含三个关键点:安全场模型、能量平衡状态模型和工程化实现。

安全场模型我们主要考虑三个分类:

  • 运动要素,即行走的车、行人等;
  • 静态要素:车道线、红绿灯、天气等;
  • 驾驶因素:主要体现目标物体纵横向加速度的变化,例如不断加减速的车辆可能相对会危险一些。

按照上述描述,我们将安全场进行分层,并在实时行驶中提取感兴趣层。对障碍物安全场大小的定义过程中,会考虑速度、方向、行为、类别等因素。

除了障碍物之外,其他安全场包括智能车本身、道路(包含曲率和天气等因素)、交通灯等。

在定义了各交通参与因素安全场基础上,通过深度学习的训练看驾驶员在这个场中的反应从而获取平衡指标。

举个例子,这样一个场景,我们将其描述的安全场如下:

通过驾驶员在该场景中的驾驶操作,我们可以得到一组训练集,输入神经网络单元中进行训练,我们可以输出一个决策规划后的结果。得到一个预期的轨迹之后,我们需要控制车辆的转向和刹车、驱动实现对轨迹的跟踪。

车辆的控制算法

我们原来做 ADAS 时,控制是根据各个状态做来回切换的,存在切换过程平顺性较差等问题。现在我们采用跟决策规划中的安全场一脉相承的方法,把道路中的真实目标和非真实目标都描述成虚拟质点。

其中,真实目标主要是车、行人这些因素;非真实目标包括限速、红灯、停车点、道路曲率、天气等等。基于虚拟质点模型的方法可以使算法模型统一,有效避免了传统控制算法中因目标或控制模式切换产生的车辆加减速度跳变问题。

原来的车辆控制算法,跟车过程和定速巡航过程因为控制状态的改变会存在一个加速度的跳变,影响舒适性。而我们现在采用虚拟质点方法之后,前车加速远离时,我们自然会过渡到一个由限速引起的虚拟质点。

车辆动力学控制的问题

实际上,在自动驾驶处于低速状态时,车辆动力学控制的问题不太明显。但在高速条件下,一定要考虑。车辆动力学问题本质是轮胎和地面的附着问题。

由于轮胎和地面摩擦圆的约束,在车轮的纵向力发生变化时,其侧向力也要随之改变。即智能车的纵向安全性能 (车速控制)和横向轨迹跟踪性能 (转向控制)相互制约:

  • 过于追求纵向跟踪性,大纵向加减速度导致横向对轨迹的跟踪性能差,甚至引起横向失稳;
  • 过于追求横向稳定性裕量,纵向加减速能力受制约,就可能会发生纵向追尾等事故。

所以在上层控制器中就得对车辆的转向和刹车、驱动控制进行协调和补偿。

精彩问答

问题 1:现在决策控制做的较多的是针对高速公路场景,该场景相对城市道路较为简单,一般用摄像头检测的车道线和激光雷达/雷达等检测的障碍物作为轨迹规划系统的输入,比如特斯拉 Mobileye 系统,然而在 urban 这种 unstructured environment 下如何做规划,能量场的模型该怎么应用进来,它的输入输出各是什么?

张德兆:现在做的较多的确实是高速道路,但现在深度学习方法确实能够比较好的帮我们解决城市道路的问题,只要城市道路工况的训练数据足够多。

现在实际上我们做园区内道路的决策规划难度一点不亚于城市道路,因为园区内路小人多,可行驶的空间有限,一定程度上比大马路要难,只不过园区内车速很低,可有更多反应和调整的时间而已。

问题 2:如何训练安全场?安全场相比于其他模型有什么优点?

张德兆:安全场的训练方法和其他是一样的,只不过描述训练数据的方法不一样而已。其他方法可能车、道路、天气这些所有因素都要单独去描述,并各自作为神经网络的输入,而安全场把这所有因素抽象化了,不管物体本身的物理特征是什么,就描述他对行驶的危险程度。

问题 3:图像是透视投影的,点云数据是真实环境的数据体现。在用图像和点云进行融合的时候,如何解决透视投影与真实环境的差别?

张德兆:智行者做激光雷达的点云处理,但不做图像处理,我们只拿做图像模块的合作方输出障碍物、车道线等信息与激光雷达、毫米波雷达进行融合。

问题 4:智行者的解决方案,从环境数据采集,分析,处理融合,决策,到控制车,这个过程下来,时延是多少?用到的处理器的性能又是如何?智行者做控制决策训练的数据量有多少?rule-based 与 learning-based 是怎么结合的?

张德兆:我们低速车是量产方案,用 ARM+MCU 的架构实现;高速车还是用工控机在做;我们的控制周期是 100ms。我们现在有超过 1000 个样本 (不同的驾驶员)超过 100 万公里的训练数据。rule-based 与 learning-based 会有个状态机做结合,且在可能发生危险的工况下 rule-based 的优先权大于 DL。

这篇关于【自动驾驶行业观察】智行者 自动驾驶方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

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

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

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

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

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

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

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

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除