规划控制复现:Apollo LQR横向控制(算法原理推导与流程)

news2024/10/21 12:05:08

本文在前文已经搭建好的规划控制验证平台中进行LQR算法的复现:

1.车辆动力学建模

汽车轨迹跟踪误差模型示意图如下:

v_x为车辆横向速度,v_y为车辆纵向速度;ab分别为质心到前、 后轴的距离 ;\varphi 为车辆的横
摆角 ;a_fa_r 分别为车辆前 后轮的侧偏角。并设车辆前后轴侧向合力为 F_{yf}F_{yr},假设轮胎侧偏角较小,则汽车二自由度模型的微分方程为:

由于轮胎的侧偏角 α 很小 , 且车辆的后轴不作为转向轴 ,设前轮和后轮的侧偏刚度分别为C_{\alpha f}
C_{\alpha r}, 前轮转角为 δ f , 则可得车辆动力学模型矩阵形式为 :

2.Frenet坐标系下的误差方程

本节采用两种方式推导Frenet坐标系下的误差模型

2.1 Frenet坐标系与自然坐标系转换

因此,Frenet坐标系到笛卡尔坐标系之间的转换,就是如下过程:

(x,y,v_x,v_y,k_x,a_x,a_y)\rightarrow (s,\dot{s},\ddot{s},d,\dot{d},d')

横向速度可以记作:

则:\dot{d}=v_xsin(\theta _x-\theta _r)

此外,由于:

则对于\dot{s},本文直接给出公式:

2.2 方式一:

由2.1中推导得到的坐标转换公式,由于将章节一中的笛卡尔坐标系中的变量替换为自然坐标系中的变量,记:e_{d}=\dot{d},e_\theta =\varphi -\theta_r,将\dot{d}=v_xsin(\theta _x-\theta _r)展开并忽略路径变化率得到:

对其求导,忽略v_x的变化率得到:

                                                 

带入到章节一中推导得到的动力学方程中有:

2.3 方式二

对于航向偏差有(注意,此处不是航向偏差,为笔误,应当是\varphi -\theta _r):

设车辆行驶在半径为 r 的路径上 , 可求出车辆在目标路径上的理想加速度为 :

Frenet 公式可得汽车的实际侧向加速度为 :

由此可得 :

将结果带入到动力学方程中得到:

写作状态空间方程:

3. 离散轨迹规划的误差计算

由于LQR最终输出的量为:

U=-Ke_{rr}+\delta _f

此处的误差详细计算为:

其中为切向速度,8中的对应关系由2.2中的公式给出。

4.LQR算法中K矩阵的计算

Apllo中采用离线LQR算法查表的方式,先离线计算出不同v_x对应下的K的值,能极大的缩短计算时间:

1.构建i=1,2......5000,共五千个点作为离散的速度输入:

v_x=0.01*i,(i=1,2......5000)

2.构造拉格朗日乘子函数:

3.构造指标函数,计算出最优的控制输入,使得下列性能指标函数达到最小值

4.对指标函数求导求极值,得到:

5.最终得到LQR控制器的控制率,即得到K矩阵:

5. 前馈的计算

为了使轨迹跟踪控制系统更快地响应参考信号和减小稳态误差 , 引入前馈控制

可以看出无论 K   取何值 ,\dot{X}   X 都不可能为 0。 因此引入前馈控制量前轮转角 δ f 使得横
向误差为 0, 控制率可表示为 :

带有前馈的 LQR 控制器最终会导致\dot{X}为 0,X 不为 0,则有:

则计算得到的前馈为:

其中:kr 为路径曲率,

6.最终的控制输出

结合上述求解的过程,可以得到最终输出的横向控制角度为:
\mathbf{ \delta =-Ke_{rr}+\delta _{feedback}}

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

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

相关文章

【C++】哈希表的模拟实现

目录 一、闭散列(开放定址定法) 1、哈希表的结构: 2、哈希表的插入: 3、哈希表的查找: 4、哈希表的删除: 二、开散列(哈希桶) 1、哈希表的结构: 2、构造与析构&a…

若依前后分离版集成积木报表进行token传递

若依分离板集成积木报表就不说了需要的请移步:若依前后分离版集成积木报表-CSDN博客 考虑到前端摸鱼不干活,所以一般都是前后端都干,我这里前后端都搞上,你们直接抄,抄完接着去摸鱼,代码不美观,轻喷 一、…

【JavaEE】【多线程】synchronized和死锁

目录 一、synchronized详解1.1 互斥1.2 可重入 二、死锁2.1 死锁成因2.2 避免死锁 一、synchronized详解 1.1 互斥 synchronized 会起到互斥效果, 某个线程执行到某个对象的 synchronized 中时, 其他线程如果也执行到 同一个对象 synchronized 就会阻塞等待. 语法&#xff1…

AI时代程序员何去何从?提升自我还是被淘汰出局!

AI 在编程界的使用变得越来越普遍了。随着 ChatGPT 的横空出世,各种大语言模型如雨后春笋不断出现。国外如谷歌 Bard、Anthropic 的 Claude,国内如百度文心一言、阿里通义千问、讯飞星火认知大模型、昆仑万维天工大模型等。 想想看,以前得花好…

支持国密算法的数字证书-国密SSL证书详解

在互联网中,数字证书作为标志通讯各方身份信息的数字认证而存在,常见的数字证书大都采用国际算法,比如RSA算法、ECC算法、SHA2算法等。随着我国加强网络安全技术自主可控的大趋势,也出现了支持国密算法的数字证书-国密SSL证书。那…

【网络安全】缓存欺骗问题之查看个人资料接口

未经许可,不得转载。 文章目录 正文正文 目标网站 target.com,查看个人资料页面时,API 端点为/get_user,完整的 URL 是 https://target.com/web-api/v1/get_user?timestamp=123456(其中 timestamp 是一个易受攻击的参数)。 我注意到响应中有一个 cf-cache-status= MISS…

k8s部署Kafka集群超详细讲解

准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka:3.7.1版本,apche版本 Zookeeper:3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…

Docker安装ActiveMQ镜像以及通过Java生产消费activemq示例

拉取镜像 docker pull docker.io/webcenter/activemq 启动容器 docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 docker.io/webcenter/activemq:latest 这样就代表启动成功了 浏览器访问 http://localhost:8162/ admin admin 开启验证 修改配置文件/opt/ac…

关于k8s集群高可用性的探究

1. k8s的高可用的核心是什么? 说到核心、本质 意味着要从物理层来考虑技术 k8s是一个容器编排管理工具,k8s受欢迎的时机 是docker容器受欢迎时,因为太多的docker容器,管理起来是一个大工程 那么刚好k8s是google自己用了十来年…

STM32L031F6P6基于CubeMX的串口通信调试笔记

用CubeMX创建项目 本实例用的PA14、PA13两个引脚,LPUART1。 对串口参数进行设置: 开启串口中断: 时钟源设置成内部高频时钟: 对项目进行设置: 生成代码: 在串口初始化函数中加入 __HAL_UART_ENA…

Asp.net Core MVC 动态路由

动态路由 asp.net core 3.0 就支持了 // 映射关系public class TranslationDatabase{private static Dictionary<string, Dictionary<string, string>> Translations new Dictionary<string, Dictionary<string, string>>{{"en", new Dictio…

《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项

选项式写法 使用 选项式API - 状态选项 - expose 一定要注意&#xff1a; 接下来&#xff0c;进一步看示例说明&#xff1a; 设置 expose 仅显示列出的属性/方法才能被父组件调用&#xff1b;代码第 2 行&#xff0c;父组件可访问属性 a 和 方法 myFunc01&#xff0c;不可访…

Windows server 2022 数据中心版本的安装

安装前的准备工作&#xff1a; 1.准备好VMware虚拟机&#xff08;略&#xff09; 2.准备好镜像 图1-1 准备安装镜像 3.准备好安装的位置&#xff08;F盘2022vm文件夹&#xff09; 图1-2 选择并设定安装位置 4.开始安装 图1-3 开心VMware安装向导 图1-4 插入光盘镜像 图1-5…

视频转文字工具搜集

视频转文字工具是一种能够将视频中的音频内容转化为文字的软件或在线服务。这类工具通常支持多种视频格式和语言&#xff0c;适用于不同的场景和需求。以下是一些推荐的视频转文字工具及其特点&#xff1a; 媒关系&#xff1a;这是一款免费的视频转文字工具&#xff0c;支持多种…

ABAQUS应用11——支座弹簧

文章目录 0、背景1、ABAQUS中几类弹簧的简介2、SPRING1的性质初探 0、背景 1、ABAQUS中几类弹簧的简介 先说参考来源&#xff0c;ABAQUS2016的帮助文档里第4卷&#xff0c;32.1.1节&#xff0c;有三种弹簧&#xff08;SPRING1 、SPRING2 以及SPRINGA&#xff09;。 三种弹簧里…

【AIGC】ChatGPT提示词Prompt高效编写模式:Self-ask Prompt、ReACT与Reflexion

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;自我提问 (Self-ask Prompt)如何工作应用实例优势结论 &#x1f4af;协同思考和动作 (ReACT)如何工作应用实例优势结论 &#x1f4af;失败后自我反思 (Reflexion)如何工作…

oracle数据恢复—文件损坏导致Oracle数据库打开报错的数据恢复案例

oracle数据库故障&分析&#xff1a; 打开oracle数据库时报错&#xff0c;报错信息&#xff1a;“system01.dbf需要更多的恢复来保持一致性&#xff0c;数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有&#xff1a;控制文件损坏、数据文件损坏、数据文件…

FastDFS单节点部署

FastDFS单节点部署 1、FastDFS入门1.1 分布式文件系统1.2 FastDFS 简介1.3 FastDFS 发展历史1.4 FastDFS 整体架构1.5 FastDFS 线上使用者 2、FastDFS 环境搭建2.1 FastDFS 安装2.1.1 安装前的准备2.1.2 安装 libfastcommon库2.1.3 安装 FastDFS 2.2FastDFS 配置2.2.1 去掉/etc…

python爬虫快速入门之---Scrapy 从入门到包吃包住

python爬虫快速入门之—Scrapy 从入门到包吃包住 文章目录 python爬虫快速入门之---Scrapy 从入门到包吃包住一、scrapy简介1.1、scrapy是什么?1.2、Scrapy 的特点1.3、Scrapy 的主要组件1.4、Scrapy 工作流程1.5、scrapy的安装 二、scrapy项目快速入门2.1、scrapy项目快速创建…

Spring Boot框架下JavaWeb在线考试系统的创新实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…