自动驾驶汽车横向控制方法研究综述

news2024/10/1 8:14:13
【摘要】 为实现精确、稳定的横向控制,提高车辆自主行驶的安全性和保障乘坐舒适性,综述了近年来自动驾驶汽车横向控制方法的最新进展,包括经典控制方法和基于深度学习的方法,讨论了各类方法的性能特点及在应用中的优缺点,并针对自动驾驶汽车横向控制方法的发展趋势进行了展望。
关键词:自动驾驶汽车 横向控制 经典控制方法 深度学习 多传感器融合

1 前言

随着计算能力的提高和传感器技术的发展,自动驾驶汽车在实现高精度定位、环境感知和智能决策方面取得了显著进展。然而,为了实现完全自动驾驶,汽车需要在复杂的道路环境和多样化的驾驶任务中表现出高度的自主性和适应性。自动驾驶横向控制作为自动驾驶系统的关键部分,具有提高
驾驶安全性、减轻驾驶员疲劳、提高乘坐舒适性等功能,有助于提高道路通行效率、降低交通事故风险,并在自动泊车、车队协同等方面发挥重要作用。为实现车道保持、车道变更和紧急避障等功
能,横向控制需要克服复杂道路环境、不确定性工况和噪声等挑战。近年来,针对横向控制的研究受到越来越多的关注,在前人的工作基础上,本文对自动驾驶汽车横向控制方法的最新进展进行综述,包括经典控制方法和基于深度学习的方法,并讨论相关方法的优缺点和未来发展趋势。

2 自动驾驶横向控制方法的发展历史

自动驾驶横向控制方法的研究始于 20 世纪 80年代。在早期阶段,研究者主要关注传统的控制方法,如比例- 积分 - 微分( PID )控制 和模糊控制 。这些方法在自动驾驶横向控制中取得了一定的成果,奠定了自动驾驶控制系统的基础 进入 21世纪,随着计算能力的提高和传感器术的发展,自动驾驶横向控制方法开始涉及更复杂的算法。预瞄控制 、滑模控制 和神经网络控制 等方法逐渐成为研究热点。
预瞄控制( Preview Control )常用于自动驾驶系统,其基本思想是通过预测车辆的未来轨迹,确定当前时刻的控制指令。它利用车辆模型和环境信息,通过计算车辆在未来一段时间内的轨迹,来规
划和生成控制指令。这种控制方法可以考虑到车辆动力学和运动约束,提供较好的轨迹跟踪性能。近年来,深度学习[6] 、强化学习 [7] 和模型预测控制(Model Predictive Control MPC [8] 等先进的控制方法在自动驾驶横向控制领域取得了显著进展。这些方法通过大量数据和复杂的算法来实现高度自适应和智能化的横向控制。尤其是深度学习和强化学习方法,可以从大量的驾驶数据中学习控制策略,提高控制性能和泛化能力。与此同时,MPC 在处理系统的不确定性和约束方面具有优势,为自动驾驶横向控制任务提供了更精确的实时解决方案。
随着驾驶场景的多样化发展和交通场景控制难度的提高,研究人员逐渐意识到单一的控制策略很难满足各种驾驶场景的需求。因此,混合控制方法[9] 应运而生。这些方法通常将不同类型的控制算法相结合,以充分发挥各自的优势,如:将模糊控制与神经网络控制相结合,可以提高系统的鲁棒性和自适应性;将深度学习与 MPC 相结合 ,可以实现更精确的实时横向控制;将纯跟踪(Pure Pursuit )算法与斯坦利(Stanley )算法相结合,可大幅提升跟踪平滑性。

3 经典控制方法

经典控制方法在自动驾驶汽车横向控制领域广泛应用。这些方法具有简单、易于实现的优点,但在复杂场景中可能表现出较低的适应性。

3.1 PID控制器

如图 1 所示的 PID 控制器是一种常见的经典控制方法,其中,r 为参考输入或期望值, e 为误差信号,K p 为比例增益, T ds 为导数时间常数, T is 为积分时间常数。该控制器的输出控制信号是误差项的比例、积分和微分 3 个部分加权结果的加和。在自动驾驶汽车横向控制中,PID 控制器可以根据车辆与期望轨迹间的偏差来调整转向盘转角。PID 控制器的主要优点是简单、易于实现,但其性能会受到系统参数变化、非线性和不确定性的影响
针对 PID 控制存在的问题,研究人员提出了多种改进方法,最常见的改进方法为模糊 PID 控制 [14]和自适应 PID 控制 [15] 。其中模糊 PID 控制结合了模糊逻辑控制与传统 PID 控制的优点,能够有效解决非线性和时变问题。模糊PID 控制通过模糊逻辑对PID 参数进行在线调整,以适应系统的动态变化。其不足之处是需要设计合适的模糊控制规则,且计算复杂度较高,可能导致系统响应速度降低。自适应 PID 控制是一种在线调整 PID 参数的方法,它通过实时监测系统的误差和性能来自动调整控制参数,使系统在不同工况下保持良好的控制性能。其不足之处为算法实现相对复杂,可能导致计算负担加重,以及自适应调整可能引入不稳定性,需要仔细设计以确保系统稳定性。

3.2 模糊逻辑控制器

如图 2 所示,模糊逻辑控制器是一种基于模糊集合论和模糊推理的控制方法,可以处理不确定性和模糊性问题。模糊逻辑控制器通过将输入变量(如车辆与期望轨迹的偏差和车速)映射到输出变量(如转向盘转角)来生成控制信号[16] 。模糊逻辑控制器的优点是对系统参数变化和非线性具有较好的鲁棒性,但其性能可能受到规则库设计和推理机制的影响
针对模糊控制存在的问题,研究人员提出了多种改进方法。其中最常见的方法为模糊神经网络控制[18] 和模型预测控制 [19-20] 。其中,模糊神经网络控制结合了模糊控制和神经网络的优点,能够更好地应对非线性和时变问题。模糊神经网络控制通过训练神经网络来自动调整模糊控制规则和参数,以适应系统的动态变化。其缺点为计算复杂度较高,可能导致系统响应速度降低,且需要大量的训练 据和合适的训练方法以实现有效控制。 MPC 是种基于优化的控制策略,它利用系统模型预测未来一段时间内的系统行为,并根据预测结果计算最优控制输入。MPC 可以处理多输入多输出问题,同时考虑系统约束和非线性特性。其缺点是计算复杂度较高,对实时性要求较高的系统可能存在响应速度问题,同时,需要准确的系统模型。

3.3 遗传控制算法

遗传算法( Genetic Algorithm GA )是一种启发式搜索和优化算法,它模拟了自然界中的生物进化过程,可用于自动驾驶横向控制中的参数优化或策略优化,以实现更好的控制结果。
遗传算法可对控制器参数进行优化,通过对不同参数组合的个体进行遗传操作(如选择、交叉和变异),逐代搜索出最优参数组合。除控制器参数外,遗传算法还可用于优化控制策略。例如,在特定的驾驶场景下,可以通过遗传算法搜索最佳的路径规划策略或车道保持策略,以实现更安全和高效的横向控制。
如图 3 所示,遗传算法的基本步骤包括:
a. 初始化种群。随机生成一组初始个体,代表参数或策略的不同组合。
b. 适应度评估。对每个个体应用横向控制算法,并评估其性能,通常使用目标函数或评估指标来度量控制结果的优劣。
c. 选择操作。根据适应度评估结果,选择较优秀的个体作为下一代的父代。
d. 交叉操作。对选定的父代个体进行交叉操作,生成子代个体,将父代的某些特征组合起来。
e. 变异操作。对子代个体进行变异操作,引入随机性,增加种群的多样性。
f. 重复步骤 b~ 步骤 e ,直到满足终止准则,如达到最大迭代次数或达到期望的优化目标。

通过迭代进化的过程,遗传算法能够搜索出较优的控制参数或策略,其优点包括:全局搜索能力强,利用种群的多样性和全局搜索能力,可以在复杂的搜索空间中找到全局最优解;并行性,可以轻松应用并行计算,加速搜索过程;适应性强,适用于不规则、非线性和高度动态的问题;对于大规模问题有效,相对于一些传统优化算法,在处理大规模问题时表现较好。
遗传算法的缺点在于,收敛速度相对较慢、参数选择敏感、不能保证全局最优解,以及对于某些问题,特别是具有明显结构的问题的有效性不如其他优化方法。
针对多目标优化问题,研究者提出了许多改进的多目标遗传算法,如多目标粒子群算法等,也有研究人员尝试将遗传算法与其他优化算法相结合,形成混合算法,以提高性能。针对参数选择敏感的问题,自适应遗传算法的研究受到了关注,可通过动态调整参数来提高算法性能。同时,随着算力的提升,研究者对并行遗传算法的研究也在不断深入。

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

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

相关文章

【初阶数据结构】详解插入排序 希尔排序(内含排序的概念和意义)

文章目录 前言1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用 2. 插入排序2.1 基本思想2.2 插入排序的代码实现2.3 插入排序算法总结 3. 希尔排序3.1 基本思想3.2 希尔排序的代码实现3.3 希尔排序的特征总结 前言 初级数据结构系列已经进入到了排序的部分了。相信大家听到…

计算机毕业设计 服装生产信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

记录|Modbus-TCP产品使用记录【德克威尔】

目录 前言一、德克威尔1.1 实验图1.2 DECOWELL IO Tester 软件1.3 读写设置1.4 C#进行Modbus-TCP读写 更新时间 前言 参考文章: 使用的第二款Modbus-TCP产品。 一、德克威尔 1.1 实验图 1.2 DECOWELL IO Tester 软件 这也是自带模块配置软件的。下图就是德克威尔的…

“Xian”(籼)和“Geng”(粳)米怎么读?

2018年,《自然》上刊登了一篇有关亚洲栽培稻基因组变异的重磅论文。研究成果本身自然引人关注,但更引人关注的是,这篇论文首次提出以“Xian”(籼)和“Geng”(粳)两个汉语农业术语代替Indica和Ja…

yum使用阿里云的镜像源报错 Failed connect to mirrors.aliyuncs.com:80; Connection refused“

报错:Failed connect to mirrors.aliyuncs.com:80; Connection refused",如果单独只是这个报错的话,那么原因是由于非阿里云ECS用户无法解析主机“mirrors.cloud.aliyuncs.com”。如果不单单只是这个报错另外还有其它报错请参考我其它文…

Threejs创建正多边体

上一章节实现了球体的绘制,这节来绘制多面体,包括正多面体,平面中,每条边一样长组成的图形叫正多边形,这里每个面一样,叫正多面体。如上文一样,先要创建出基础的组件,包括场景&#…

C++基础---类和对象(上)

1.类的定义 C程序设计允许程序员使用类(class)定义特定程序中的数据类型。这些数据类型的实例被称为对象 ,这些实例可以包含程序员定义的成员变量、常量、成员函数,以及重载的运算符。语法上,类似C中结构体&#xff0…

【机器学习】任务六:分类算法(支持向量机(SVM)在线性可分与不可分数据中的应用与可视化分析)

目录 1.知识简介 2.SVM 支持向量机模型训练与可视化报告 2.1 导入本项目所需的模块和包 (1)目的 (2)代码实现 (3)代码解释 2.2 随机生成线性可分的数据并可视化 (1)目的 &a…

[数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别

重要说明:防震锤缺陷图片太难找,数据集里面存在大量单一场景图片,请仔细查看图片预览谨慎下载,此外数据集均为小目标检测,如果训练map偏低属于正常现象 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径…

特殊的 BASE64 1

这个一看题目就是base64编码表被改了. 知识点: Base64编码使用一个包含64个字符的字符集,这些字符分别是: 大写字母A-Z小写字母a-z数字0-9特殊字符和/ 这些字符分别对应64个不同的6位二进制数。在补零后形成的8位字节中,实际使用…

c++primier第十二章类和动态内存

本章内容包括: 对类成员使用动态内存分配隐式和显式地复制构造函数隐式和显式地重载赋值操作符在构造函数中使用new所必须完成的工作使用静态类成员 将布局new操作符用于对象使用指向对象的指针实现队列抽象数据类型(ADT) 动态内存和类 复习范例和静态类成员 首…

ASP.NET Zero 多租户介绍

ASP.NET Zero 是一个基于 ASP.NET Core 的应用程序框架,它提供了多租户支持,以下是关于 ASP.NET Zero 多租户的介绍: 一、多租户概念 多租户是一种软件架构模式,允许多个客户(租户)共享同一套软件应用程序…

联邦学习(三只决策和大数据分析)(学习笔记)

联邦学习模型按照数据重叠形式分成了三类,分别是横向联邦学习、纵向联邦学习和联邦迁移学习。 横向联邦学习模型针对特征一致但ID不一致的数据; 纵向联邦学习模型针对ID一致但特征不一致的数据; 联邦迁移学习模型针对ID和特征都不一致的数据。…

Linux网络操作命令与函数全面总结

1. 引言 Linux作为服务器和开发平台,网络操作是其核心功能之一。本文旨在全面总结Linux系统中的网络操作方法,包括命令行工具和编程接口,帮助读者深入理解Linux网络管理的机制。 2. 命令行工具 2.1 ping 命令 ping 命令用于测试网络连接和…

实验OSPF路由协议(课内实验)

实验1:OSPF路由协议 实验目的及要求: 通过实验,能够理解链路状态型路由协议OSPF协议的工作原理,掌握如何实现单区域 OSPFv2配置指令,能够熟练的应用各种OSPF协议相关的配置指令完善网络设计。掌握验证OSPFv2网络连接…

软件开发人员绩效考核方案(参考)

1、产品&运营绩效考核表 2、开发绩效考核表 3、测试绩效考核表 4、CPI指标库 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查…

像AI一样思考

我感觉每个人都应该通过Coze平台 https://www.coze.cn/ 创建一个属于自己的Bot。 为什么要创建Bot? 很多时候我们的思维会受各种因素的影响,如感情、知识盲区、心态等,最终导致我们做的决定缺乏逻辑或者考虑不全面。但AI不一样,…

armbian安装docker

最近又搞了台瑞莎Radxa 3E ,从零开始部署unbuntu环境,发现是真曲折啊,虽然有点前车之鉴了 在Armbian上安装Docker,可以按照以下步骤操作: 1、更新软件包列表: sudo apt-get update 2、安装必要的软件包…

leetcode|刷算法 线段树原理以及模板

线段树出现的题目特征 线段树使用的题目。每次操作都要得到返回结果的。 比如 699. 掉落的方块 - 力扣(LeetCode) 2286. 以组为单位订音乐会的门票 - 力扣(LeetCode) 1845. 座位预约管理系统 - 力扣(LeetCode&#…

【韩顺平Java笔记】第4章:运算符

文章目录 61. 上一章总结62. 算术运算符介绍62.1 运算符介绍62.2 算术运算符介绍62.3 算术运算符一览 63. 算术运算符使用64. 算术运算符练习165. 算术运算符练习266. 67. 算术运算符练习3,468. 关系运算符介绍68.1 关系运算符介绍68.2 关系运算符一览 69. 关系运算符使用70. 逻…