自动驾驶车辆轨迹跟踪
相对于传统的模型预测控制(MPC),简化的车辆模型通常会导致预测结果不准确,这对车辆的转弯等行为具有负面影响。因此作者提出了一种轨迹规划和跟踪框架:
- 该框架应用人工势场来获得目标轨迹;
- 并利用具有PID反馈的MPC来有效跟踪规划的轨迹;
来自:Trajectory Tracking of Autonomous Vehicle Based on Model Predictive Control With PID Feedback
目录
- 问题描述
- 方法
- 人工势场
- 道路环境势场
- 周边车辆势场
- 驾驶方向势场
- 车辆轨迹规划
- 跟踪控制器设计
- 车辆运动模型
- 模型预测控制的设计
- 反馈控制的设计
- 横向设计轨迹的修正
问题描述
自动驾驶的轨迹规划方法包括人工势场,快速探索随机树等。人工势场结构简单,数学描述清晰,是目前常用的轨迹规划方法。在完成轨迹规划后,由于轨迹会随着周围环境的变化而变化,因此实时跟踪轨迹也是重要的。一般来说,跟踪控制算法分为两类:基于数据的控制和基于模型的控制:
- 数据驱动的控制体系结构简单,没有车辆的动态和运动学模型,但是如果没有合适的参数,控制车辆的运动将出现振动等不稳定情况,此外,这类方法的可扩展性和物理可解释性都很差;
- 基于模型的控制方法根据车辆的运动学模型产生控制值,基于模型的控制器可以减少调优所需的工作量,然而,这些基于模型的控制算法需要高精度的运动或动态车辆模型,这在实际车辆控制中是不可能实现的。通常,真实的自动驾驶车辆采用过于简化的运动学或动力学车辆模型。在车辆通过长曲线时,会出现与车道线的巨大偏差,如图1。
该研究对人工势场和控制方法进行了改进,首先是对势场进行改进,消除了自动驾驶车辆与障碍车辆,道路边缘之间的局部极小值。其次,提出基于动态和跟踪特性的反馈MPC控制方法。MPC代表了车辆的运动特性,PID的反馈可以提高跟踪性能。对于传统的MPC来说,内部模型和真实车辆之间的差距是不可避免的。在这种情况下,PID方法可以减少由近似模型引起的误差,MPC方法可以减少控制器整定和校准的时间和精力。
- 图1:自动驾驶车辆的规划轨迹和实际轨迹之间的误差。
方法
人工势场
势场通常由“碗状”吸引场和“山状”排斥场组成。在这种情况下,前者迫使对象靠近,后者迫使对象朝相反方向移动。该研究采用势场来规划车辆的轨迹。道路运输中势场的类型大致分为两类:道路环境势场和周边车辆势场。
道路环境势场
道路环境势场一般考虑道路边缘和车道线,公式1和公式2表示道路边缘和车道线的势场,公式3为道路环境势场。
其中, A e d g e A_{edge} Aedge和 A l a n e A_{lane} Alane分别为道路边缘和车道线的势场系数,由它们的势场方向和自身车辆的最大横向速度确定。 σ l a n e \sigma_{lane} σlane为车道线势场的衰减系数,该常数反映了 U l a n e U_{lane} Ulane的衰减率,从而保证在车道中间位置处的 U r o a d = 0 U_{road}=0 Uroad=0。如图2所示, D e d g e D_{edge} Dedge为自动驾驶车辆到道路边缘的最短距离, D l a n e D_{lane} Dlane为自动驾驶车辆到道路车道线的最短长度。
- 图2:在道路环境的人工势场建模中使用的自动驾驶车辆距离示意图。
周边车辆势场
- 图3:障碍车辆的人工势场建模示意图。
该研究还考虑了局部车道上前面的障碍车辆,并假设自动驾驶车辆的移动速度比周边车辆快。在这种情况下,障碍车辆的势场建模是在原点固定在车身框架末端中点的坐标系中实现的。如图3所示,在障碍车辆周围,直角梯形区域是障碍车辆的安全区域。注意,靠近道路边缘的一侧比靠近车道线的一侧长。如果障碍车辆在中间车道,将使用传统的等腰三角形场。 S S S是障碍车辆的安全距离。该安全距离由自动驾驶车辆和障碍车辆之间的相对速度 v r e v_{re} vre确定。
其中, K s K_{s} Ks为反应时间的系数, S m i n S_{min} Smin为最小安全距离,当自动驾驶车辆位于图3中的位置 P 1 P1 P1时,纵向和横向势场值如公式5和公式6所示。
其中, d 1 x d1_{x} d1x和 d 1 y d1_{y} d1y为在障碍车辆坐标系的 x x x轴方向和 y y y轴方向上从 d 1 d1 d1除以的距离。 d 1 d1 d1是从 p 1 p1 p1到障碍车辆的安全区域的最短距离值。 λ , σ c a r \lambda,\sigma_{car} λ,σcar是反应衰减率的纵向和横向势场的衰减系数,可以通过人类驾驶行为进行校准。 A l o n g A_{long} Along是纵向势场系数,表示由于前方障碍物车辆造成的最大纵向局部速度。当自动驾驶车辆位于位置 P 2 P2 P2时,纵向势场设置为 A l o n g A_{long} Along,横向势场如公式7所示。
其中 d 2 d2 d2是从 P 2 P2 P2到安全区域的最短距离值。当自动驾驶车辆位于位置 P 3 P3 P3时,纵向势场显示如下。
其中 d 3 d3 d3是从 P 3 P3 P3到安全区域的最短距离值。当自动驾驶车辆处于位置 P 4 P4 P4时,纵向人工势场被设置为 A l o n g A_{long} Along。
驾驶方向势场
为了保持车辆的前进,假设自动驾驶车辆的前进方向有一个势场,该势场可以诱导车辆的前进趋势。如公式9所示,吸引势场 U a t t U_{att} Uatt是设计速度 v d v_d vd的函数,如下所示。
其中 k k k和 τ τ τ是吸引势场系数, k k k为正, τ τ τ为负。
车辆轨迹规划
如上所述,在纵向方向上,有吸引势场 U a t t U_{att} Uatt和纵向障碍势场 U o b , l o n g U_{ob,long} Uob,long。此外,在横向方向上,有道路车道势场 U l a n e U_{lane} Ulane、道路边缘势场 U e d g e U_{edge} Uedge和横向障碍物势场 U o b , l a t e r a l U_{ob,lateral} Uob,lateral。随后,自动驾驶车辆的总纵向 U x U_{x} Ux和横向 U y U_y Uy势场值如式10和式11所示。
基于总势场,开始执行局部轨迹规划,如公式12和公式13所示。位置序列 [ ( x p , t ( 1 ) , y p , t ( 1 ) ) , ( x p , t ( 2 ) , y p , t ( 2 ) ) , . . . , ( x p , t ( N ) , y p , t ( N ) ) ] [(x_{p,t}(1),y_{p,t}(1)),(x_{p,t}(2),y_{p,t}(2)),...,(x_{p,t}(N),y_{p,t}(N))] [(xp,t(1),yp,t(1)),(xp,t(2),yp,t(2)),...,(xp,t(N),yp,t(N))]形成自动驾驶车辆在时刻 t t t的局部规划轨迹。
其中, ( x p , t ( 0 ) , y p , t ( 0 ) ) (x_{p,t}(0),y_{p,t}(0)) (xp,t(0),yp,t(0))为自动驾驶车辆在时刻 t t t的位置。 ( x p , t ( k + 1 ) , y p , t ( k + 1 ) ) (x_{p,t}(k+1),y_{p,t}(k+1)) (xp,t(k+1),yp,t(k+1))为车辆在时刻 ( t + ( k + 1 ) T ) (t+(k+1)T) (t+(k+1)T)上的计划位置。 K y K_{y} Ky和 K x K_{x} Kx是速度因子,确保 K y U y ( k ) K_{y}U_{y}(k) KyUy(k)小于最大横向速度, K x U x ( k ) K_{x}U_{x}(k) KxUx(k)小于最大纵向速度。
跟踪控制器设计
关于横向控制(车轮转向角 σ t σ_t σt),MPC提供前馈控制律,PID应用反馈控制律(PID_lat)。在纵向控制(车辆节气门位置 T k T_k Tk)方面,MPC控制器作为辅助纵向规划器,产生速度分布。此外,自动驾驶车辆通过PID控制器(PID_long)跟踪速度曲线。图4展示了具有PID反馈的MPC控制器的结构。
- 图4:具有PID反馈的MPC控制器的结构。
车辆运动模型
- 图5:车辆运动模型
将纵向、横向和偏航运动的线性运动学模型应用于MPC控制器。如图5所示, x , y x,y x,y为车辆后桥在惯性坐标上的中点位置。其中, ϕ \phi ϕ是车辆的方向。我们定义一个有状态变量的线性系统 X = [ x , y , ϕ ] T X=[x,y,\phi]^{T} X=[x,y,ϕ]T和控制变量 u = [ v , δ ] T u=[v,\delta]^{T} u=[v,δ]T,得到相应的3-DOF车辆动力学模型如下所示。
这些微分方程可以写成下面的紧凑形式。
设计轨迹可定义如下:
其中 χ r χr χr为参考状态, u r u_r ur为参考控制输出。基于对设计点的泰勒级数展开,我们得到近似如下:
结合公式16和17得到:
式中 x r x_r xr、 y r y_r yr、 ϕ r \phi_r ϕr分别为参考 x x x轴位置、参考 y y y轴位置和参考航向角, v r v_r vr和 δ r δ_r δr是参考速度和参考前轮角。对周期为 T T T的公式18中的系统离散化:
为了形成增广模型,选择一个新的状态变量:
其中 m m m和 n n n为状态变量和控制变量的维数。 Δ u ( k ∣ t ) \Delta u(k|t) Δu(k∣t)是控制增量。
模型预测控制的设计
假设 A ‾ k , t = A ‾ t , t , B ‾ k , t = B ‾ t , t \overline{A}_{k,t}=\overline{A}_{t,t},\overline{B}_{k,t}=\overline{B}_{t,t} Ak,t=At,t,Bk,t=Bt,t,基于状态空间 ( A ‾ k , t , B ‾ k , t , C ‾ k , t ) (\overline{A}_{k,t},\overline{B}_{k,t},\overline{C}_{k,t}) (Ak,t,Bk,t,Ck,t),使用未来控制参数集依次计算预测状态变量:
对于协同控制系统中主体车辆的纵向和横向运动控制,我们定义如下的代价函数:
其中第一项与最小化预测输出点与期望轨迹点之间的误差的目标有关,第二项反映了对 Δ U ( t ) \Delta U(t) ΔU(t)大小的考虑。为了找到最优的 Δ U \Delta U ΔU,我们最小化 J J J,它可以表示为:
反馈控制的设计
如图3所示,横向控制由MPC前馈控制器和PID反馈控制器(PID_lat)组成。如前面所分析的,MPC中简化的车辆模型可能会产生误差。在仿真实验中,传统MPC试图跟踪计划轨迹。通过弯道时车辆协调横向误差大部分集中在0.035 ~ 0.082范围内。这种误差是由于MPC中车辆内部模型的不准确造成的。因此,PID_lat控制律足以补偿,引入PID_lat控制律对MPC控制器产生校正,如式32所示。最后,公式33表明,产生最终横向控制值 δ r e a l ( k ) δ_{real}(k) δreal(k)的两个部分是MPC控制值 δ M P C ( k ) δ_{MPC}(k) δMPC(k)和PID_lat控制值 U p i d ( k ) U_{pid}(k) Upid(k)。
横向设计轨迹的修正
纵向跟踪误差可能会发生,特别是在车辆的初始运动阶段。在这种情况下,对于时间 ( t = k ) (t = k) (t=k),最近的设计轨迹点是 ( x p ( k ) , y p ( k ) ) (x_p (k), y_p(k)) (xp(k),yp(k)),而不是前面序列中假定的点 ( x p ( k + 1 ) , y p ( k + 1 ) ) (x_p (k + 1), y_p(k + 1)) (xp(k+1),yp(k+1))。此外,以点 ( x p ( k + 1 ) , y p ( k + 1 ) ) (x_p(k + 1), y_p(k + 1)) (xp(k+1),yp(k+1))为目标的横向控制将导致横向运动的简化,并与设计轨迹相比产生横向误差。
这种扭曲的轨迹可能会导致碰撞风险,如图6所示。在这种情况下,对车辆 ( t = k ) (t = k) (t=k)的控制瞄准其原始目标点 ( x d ( k + 1 ) , y d ( k + 1 ) ) (x_d (k + 1), y_d (k + 1)) (xd(k+1),yd(k+1))可能导致与障碍车辆发生碰撞。为了消除这种简化,可以解耦横向和纵向目标点。对于时间 t = k t = k t=k,纵向目标点 x d ( k + 1 ) x_d (k + 1) xd(k+1)保持不变,横向目标点需要修改。选择最接近前面序列中当前位置的目标点作为修改后的横向目标,用 y d ∗ ( k + 1 ) y^*_d (k + 1) yd∗(k+1)表示。也就是说,控制器中实际使用的目标点为 ( x d ( k + 1 ) , y d ∗ ( k + 1 ) ) (x_d (k + 1),y^*_d (k + 1)) (xd(k+1),yd∗(k+1)),时刻 k k k的目标点为 ( x d ( k + 1 ) , y d ( k ) ) (x_d (k + 1),y_d (k )) (xd(k+1),yd(k))
- 图6:由扭曲的轨迹引起碰撞。
相关文章:

自动驾驶车辆轨迹跟踪
相对于传统的模型预测控制(MPC),简化的车辆模型通常会导致预测结果不准确,这对车辆的转弯等行为具有负面影响。因此作者提出了一种轨迹规划和跟踪框架: 该框架应用人工势场来获得目标轨迹;并利用具有PID反…...

React的useEvent 和 ahooks 的 useMemorizedFn 的深度分析和对比
父组件 const TestParent: React.FC<any> () > {const [State, setState] useState(0);const changeFun useCallback(() > {console.log(useCallback closure 里的 State, State);}, [State]);const changeFun_useEvent useEvent(() > {console.log(useEv…...

基于goframe2.5.4、vue3、tdesign-vue-next开发的全栈前后端分离的管理系统
goframe-admin goframe-admin V1.0.0 平台简介 基于goframe2.5.4、vue3、tdesign-vue-next开发的全栈前后端分离的管理系统。前端采用tdesign-vue-next-starter 、vue3、pinia、tdesign-vue-next。 特征 高生产率:几分钟即可搭建一个后台管理系统认证机制&#x…...

LInux之在同一Tomcat下使用不同的端口号访问不同的项目
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《LInux实战开发》。🎯🎯 …...

梦百合上榜2023鼎革奖数字化转型先锋榜
10月26日,第六届“鼎革奖”数字化转型先锋榜单揭晓,梦百合家居凭借数字化生产的卓越成果——SAP管理平台及供应链项目,入选2023【鼎革奖】数字化转型先锋榜年度供应链转型典范,梦百合家居COO 崔慧明同步入选2023【鼎革奖】数字化转型先锋榜年度首席运营官。 据了解,「鼎革奖」数…...

沉痛悼念科研分公司
今天上班途中,遇到了上家公司的同事王强。他正准备去体检中心体检。几句寒暄之后,得知他是要入职选煤公司了。 我们所在的公司比较大,总公司下设有几十个分、子公司,我和他曾经在一家子公司——科研分公司。现在的科研分公司解散…...
Django的网站项目开发好了,该用何种方案在Centos上部署【答:Gunicorn(uWSGI)+Nginx】
问:用Django开发的网站开发好了,现在要部署上线。 系统为Centos 7.x 现在我安装好Django和相关依赖后,我用命令 python manage.py runserver 127.0.0.1:8010 启动Django 然后安装配置好Nginx,并把用的请求转发到 127.0.0.1:8010 。 请问这样的…...

基于PyTorch的中文情绪分析器设计与开发
收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、相关基础理论2.1 主流深度学习框架2.2 神经网络2.2.1 神经网络基础 二、中文情感分类模型构建3.1 开发环境3.2 数据部分3.3 文本特征提取3.3.1、过滤标点符号3.3.2 中文分词、单词过滤 三 运行结果与分析五 结…...

HT5010 音频转换器工作原理
HT5010是一款低成B的立体声DA转换器,内部集成了内插滤波器、DA转换器和输出模拟滤波等电路。其可支持多种音频数字输入格式,支持24-bit字节。 该HT5010 基于一个多比特位的Δ-Σ调制器,将数字信号转化成两个声道的模拟信号并经过模拟滤波器滤…...
ubuntu18.04如何更新到22.04
将linux系统中的Ubuntu 18.04更新到22.04,按照以下步骤操作: 打开终端并更新系统,使用以下命令: sudo apt update sudo apt upgrade sudo apt dist-upgrade 确保系统是最新的,然后备份数据,以防万一。执…...

嵌入式软件开发:第二部分–七个步骤计划
使用一种工具(仅一种工具)武装自己,您可以在下一个嵌入式项目的质量和交付时间上做出巨大的改进。点击领取嵌入式物联网学习路线 该工具是:绝对承诺对开发代码的方式进行一些小而基本的更改 。 有了改变的意志,今天您…...

什么是IPA,和RPA有啥区别和联系?
∵ IPA中包含了RPA的“PA”,AI的“I” ∴IPARPAAI,等式成立! AI:或人工智能,是一种复杂的计算机技术,旨在模仿人类智能行为和决策的能力。它涵盖了多种技术和方法,包括:机器学习&am…...

内涝积水监测仪怎么样?万宾科技城市内涝积水监测的作用
在城市建设发展过程中,道路基础设施的建设永远都占据着重要一席,因为人们出行一旦受阻便会影响城市进展,也会影响经济发展。在城市之中有隧道,下穿式立交桥等容易存积水的地方,一旦出现恶劣暴雨天气,这些地…...

【java】命令行,包
文件夹情况: HelloWorld.java package com.demo; public class HelloWorld{public static void print(){System.out.println("HelloWorld!");}public static void main(String[] args){print();} } import.java import com.demo.HelloWorld; public cla…...

Generative AI 新世界 | 文生图(Text-to-Image)领域论文解读
在上期文章,我们开始探讨生成式 AI(Generative AI)的另一个进步迅速的领域:文生图(Text-to-Image)领域。概述了 CLIP、OpenCLIP、扩散模型、DALL-E-2 模型、Stable Diffusion 模型等文生图(Text…...
03.从简单的sql开始
从简单的sql开始 一、sql语句的种类二、oracle的工作原理三、oracle数据库常见基础命令 一、sql语句的种类 下面是SQL语句的分类、常用语句、使用方法: 分类语句使用方法解释数据查询SELECTSELECT column1, column2, … FROM table_name WHERE condition;用于从表…...

JS加密/解密之jsjiami在线js加密的效率问题
故事背景 经常有客户反馈,v7加密的效率比v6低,但是安全性更好。这里我给大家科普一下关于jsjiami的优化诀窍。 示例源代码 // 伪代码 while (1) {var name ‘张三’ }优化后 var _name 张三; while (1) {var name _name }优化原理 相信很多朋…...

解决【spring boot】Process finished with exit code 0的问题
文章目录 1. 复现错误2. 分析错误3. 解决问题 1. 复现错误 今天从https://start.spring.io下载配置好的spring boot项目: 启动后却报出如下错误: 即Process finished with exit code 0 2. 分析错误 Process finished with exit code 0翻译成中文进程已完…...

模电学习路径
交流通路实质 列出电路方程1,方程1对时刻t做微分 所得方程1‘ 即为 交流通路 方程1对时刻t做微分:两个不同时刻的方程1相减,并 令两时刻差为 无穷小 微分 改成 差 模电学习路径: 理论 《电路原理》清华大学 于歆杰 朱桂萍 陆文…...

【Linux】配置JDKTomcat开发环境及MySQL安装和后端项目部署
目录 一、jdk安装配置 1. 传入资源 2. 解压 3. 配置 二、Tomcat安装 1. 解压开启 2. 开放端口 三、MySQL安装 1. 解压安装 2. 登入配置 四、后端部署 1. 数据库 2. 导入.war包 3. 修改端口 4.开启访问 一、jdk安装配置 打开虚拟机 Centos 登入账号ÿ…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...