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

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

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.mfbz.cn/a/885209.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《深度学习》OpenCV 指纹验证、识别

目录 一、指纹验证 1、什么是指纹验证 2、步骤 1)图像采集 2)图像预处理 3)特征提取 4)特征匹配 5)相似度比较 6)结果输出 二、案例实现 1、完整代码 2、实现结果 调试模式: 三、…

SpringBoot(Java)实现MQTT连接(本地Mosquitto)通讯调试

1.工作及使用背景 工作中需要跟收集各种硬件或传感器数据用于Web展示及统计计算分析,如电表、流量计、泵、控制器等物联网设备。 目前的思路及解决策略是使用力控或者杰控等组态软件实现数据的转储(也会涉及收费问题),通过组态软件…

Oracle数据恢复—异常断电导致Oracle数据库报错的数据恢复案例

Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxf…

仕考网:事业单位考试选岗小技巧!

事业单位的考试选岗阶段,应该综合考量多个方面,确保选择出更合适的岗位,仕考网为大家分享以下技巧: 1. 岗位性质及工作内容 岗位性质:深入了解岗位是管理类、专业技术类还是工勤技能类,以及相应的职责和要求。 工作…

解决 Macos下 Orbstack docker网络问题

两种解决方法,第一种开代理 参考 —— 但是我这一种没成功,第二种方法是换镜像源 { "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://mirrors.tencent.com&q…

openKylin--安装 .net6.0

编辑profile文件 cd .. //切换到根目录 cd /etc //切换到etc目录 vim profile //b编辑profile文件 1. 按→键移动到文件末尾 2. 按Insert键进入编辑模式 3. 按Enter另起一行开始编辑 export DOTNET_ROOT/home/dotnetexport PATH$PATH:/home/dotnet 可以通过右键--粘贴 的…

【Android 14源码分析】WMS-窗口显示-第二步:relayoutWindow -1

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

一、本文介绍 本文记录的是改进YOLOv11的损失函数,将其替换成Slide Loss,并详细说明了优化原因,注意事项等。Slide Loss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样…

Docker版MKVtoolnix的安装及中文显示

本文是应网友 kkkhi 要求折腾的,只研究了 MKVtoolnix 的安装及中文显示,未涉及到软件的使用; 什么是 MKVtoolnix ? MKVToolnix 是一款功能强大的多媒体处理工具,用于在 Linux、其他 Unix 系统和 Windows 上创建、修改和…

SpringBoot--为什么Controller是串行的?怎样才能并行?

原文网址:SpringBoot--为什么Controller是串行的?怎样才能并行?-CSDN博客 简介 本文介绍SpringBoot为什么Controller是串行的?在什么场景下才能并行执行? 大家都知道,SpringBoot的Controller按理是并行执…

1.2.1 HuggingFists安装说明-Linux安装

Linux版安装说明 下载地址 【GitHub】https://github.com/Datayoo/HuggingFists 【百度网盘】https://pan.baidu.com/s/12-qzxARjzRjYFvF8ddUJQQ?pwd2024 安装说明 环境要求 操作系统:CentOS7 硬件环境:至少4核8G,系统使用Containerd…

IIS HTTPS 网页可能暂时无法连接,或者它已永久性地移动到了新网址 ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY

问题描述:站点突然无法访问,经排查发现,HTTP协议的网址可以继续访问,HTTPS的网址不可以访问。 问题分析:在Windows更新和滚动之后,由于 HTTP/2,当站点启动了 HTTP/2 连接,会出现一个…

通过PHP获取商品详情

在电子商务的浪潮中,数据的重要性不言而喻。商品详情信息对于电商运营者来说尤为宝贵。PHP,作为一种广泛应用的服务器端脚本语言,为我们提供了获取商品详情的便捷途径。 了解API接口文档 开放平台提供了详细的API接口文档。你需要熟悉商品详…

【JavaEE初阶】网络原理

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 ⽹络互连 IP地址 端口号 协议 协议分层 优势 TCP/IP 五层网络模型 数据在网络通信中的整体流程 封装和分用 封装 分用 ⽹络互连 随着时代的发展,越来越需…

若依框架使用教程

1、若依介绍 1.1什么是低代码开发平台&#xff1f; 低代码诞生的目的是将可<font style"color:rgb(51, 51, 51);background-color:rgb(248, 248, 248);">重复性的编程</font>工作通过<font style"color:rgb(51, 51, 51);background-color:rgb(2…

.Net 6.0 监听Windows网络状态切换

上次发了一个文章获取windows网络状态&#xff0c;判断是否可以访问互联网。传送门&#xff1a;获取本机网络状态 这次我们监听网络状态切换&#xff0c;具体代码如下&#xff1a; public class WindowsNetworkHelper {private static Action<bool>? _NetworkStatusCh…

js列表数据时间排序和取唯一值

1.取唯一值[...new Set(array)] const array [1, 2, 3, 2, 4, 5, 3, 5]; // 使用Set去除重复元素 const uniarray [...new Set(array)]; console.log(uniarray); // 输出: [1, 2, 3, 4, 5] 2.排序 var u [1,3,2,5,4]; var uu u.sort(); console.log(uu); var u [1,3…

求组合数专题

求组合数 Ⅰ&#xff08;递推公式&#xff09; 思路 递推法预处理 利用公式 复杂度 直接查询 单次查询复杂度 代码 #include <bits/stdc.h> using namespace std; const int N 2010; const int mod 1e97; int c[N][N]; int get_c(int a, int b) {c[0][0] 1;for(i…

9700万个新岗位涌现,AI失业焦虑背后:超千万人找到了新工作

随着技术的飞速进步&#xff0c;全球就业市场正经历着翻天覆地的变化。 《2023年未来就业报告》预计&#xff0c;未来五年将新增近7000万个工作岗位&#xff0c;同时淘汰8300万个旧岗位。 在中国&#xff0c;城市如武汉和东莞正成为新就业机会的热土&#xff0c;无人驾驶、人…

C++ | Leetcode C++题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; class Solution { public:int minMutation(string start, string end, vector<string>& bank) {int m start.size();int n bank.size();vector<vector<int>> adj(n);int endIndex -1;for (int i 0; i < n; i)…