基于动态车辆模型的百度Apollo LQR和MPC横向控制算法分析(Matlab代码实现)

news2024/11/20 4:53:29

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

Apollo 是由百度发起的一个高效、灵活的基于自动驾驶的测试和研发的平台。Apollo 的主要逻辑为局部规划 +轨道跟踪。在局部规划时,由低精度模型 + 长周期规划组成。在跟踪控制层面上是有高精度模型 + 短周期规划组

成。本文主要是对于 Apollo 控制算法中的 MPC(模型预测控制)和 LQR(线性二次调节器)这两种路径跟踪控制器进行分析与比较。

MPC(模型预测控制)是一种先进的过程控制方法,在满足一定约束条件的前提下,用于实现控制的过程。他的实现依赖于过程的动态线性模型。在控制时域内,MPC 将主要对当前时刻进行优化,但同时也会考虑未来时刻,求

取当前时刻的最优解,然后反复优化,从而实现在整个时域内的优化求解。

LQR(线性二次调节器)是现代控制理论中发展十分成熟的一种状态空间设计方法。LQR 算法可得到状态线性反馈的最优控制规律,易于形成闭环最优控制。LQR 的最优设计是指设计出的状态反馈器 K 要使二次型目标函数J 取最小值,而 K 有权矩阵 Q 与 R 唯一决定,在汽车不同的速度下,Q 与 R 的不同会对算法的效果有着重要的影响,所以 Q,R 的选值十分重要。

MPC 的研究对象是以现代控制理论中的以状态空间方程的形式给出的线性系统。对于 MPC 控制器,他的研究对象既可以是线性系统,也可以是非线性系统。LQR 的研究对象是以状态空间方程形式给出的线性系统。然而由于对效率和时耗的考虑,通常会将非线性系统线性化进行计算。

在 Apollo 算法中,LQR 和 MPC 都选用单车动力学模型作为研究对象。单车系统为非线性系统,但 LQR 和MPC 控制器的目的是为了求最优控制解,在优化过程中都会将其线性化,所以也可以说 Apollo 中研究的对象都为线性系统。

📚2 运行结果

主函数部分代码:

clc; clear; close all;
rng('default');
​
% Ankush Chakrabarty (chakank@me.com)
​
%% Control surface regression
​
% Loading controller samples (within feasible region)
load('samples_for_ENMPC.mat', 'Xf', 'Uf', 'svm')
;​
S = @(x,y) [1, x, y, x*y, (2*x^2-1)*y, (2*y^2-1)*x,...
            (4*x^3 - 3*x), (4*y^3 - 3*y)];
​
for k = 1:size(Xf,1)
    G(k,:) = S(Xf(k,1), Xf(k,2));
end
​
c = G\Uf;
fprintf('\nDisplaying coefficients of the controller...\n');
disp(table(c));
​
fprintf('\nDisplaying basis functions...\n');
disp(S);
​
%% Testing closed-loop control
T = 10;      % time of simulation
load('dataset.mat', 'MPC')
;​
% Choosing an initial state that is feasible
start_feasible = 0;
while start_feasible == 0
    x0 = MPC.Xlb + rand(2,1)*(MPC.Xub - MPC.Xlb);
    start_feasible = predict(svm, x0(:).') > 0.1;
end
​
% Running Simulink file
fprintf('\nRunning Simulink file...')
;figure(1);
sim('simulation_ENMPC.slx');
tx = xhist.Time.';
x = xhist.Data.';
​
%% Plotting
subplot(2,1,1)
;plot(tx, x([1,2],:).', 'linewidth', 2);
h = legend('x_1', 'x_2');
set(h, 'orientation', 'horizontal');
set(gca, 'fontsize', 20);
xlabel('t');
ylabel('x(t)');
hold on
subplot(2,1,2)
;tu = uhist.Time;
u = squeeze(uhist.Data);
plot(tu, u, 'linewidth', 2);
set(h, 'orientation', 'horizontal');
set(gca, 'fontsize', 20);
xlabel('t');
ylabel('u(t)');
hold on
​

🎉3 参考文献

[1]曹松景. MIMO-OFDM系统中信道估计方法的研究[D]. 重庆大学.

部分理论引用网络文献,若有侵权联系博主删除。

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

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

相关文章

4.1 插值概念与基础理论

学习目标: 学习插值的基础理论可以从以下几个方面入手: 理解插值的概念:插值是指根据已知数据点的函数值,构造出经过这些点的函数,用于在已知数据点之间估计函数值。可以将其看做是一种函数逼近的方法。 掌握插值多项…

【Linux】MySQL高可用之Mysql读写分离实践

一、MySQL读写分离原理 读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。 二、读写分离实践 绝大多数的企业的…

居家办公远程控制电脑怎么操作

居家办公或者混合办公,正成为一种新的流行趋势。如何更好地居家办公,实现更高的工作效率和更舒适办公体验,我们总结出如下建议。 无论您是每周远程工作几天还是全职工作,无论是出于选择还是因为健康状况或天气事件,都…

部署YUM仓库及NFS共享服务

一、YUM仓库服务 1)YUM概述 YUM(Yellow dog Updater Modified) 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将…

Kaggle往期赛 | 多目标推荐系统大赛baseline

来源:深度之眼 作者:比赛教研部 编辑:学姐 Kaggle OTTO – Multi-Objective Recommender System多目标推荐系统大赛 赛题分析baseline 1、赛题链接 https://www.kaggle.com/competitions/otto-recommender-system/overview 2、赛题描述 本…

聚观早报 |字节与Meta争夺VR开发者;苹果设备无故要求输入ID密码

今日要闻:字节与Meta争夺VR应用开发者;苹果设备无故要求输入ID密码;余承东称25年是智能电动汽车分水岭;小鹏回应G6售价及配置信息曝光;亚马逊将在爱尔兰裁员200人 字节与Meta争夺VR应用开发者 4 月 14 日消息&#xf…

运筹说 第89期|网络计划-网络计划的优化

通过画网络图并计算时间参数,我们已得到了一个初步的网络计划,而网络计划技术的核心却在于从工期、成本、资源等方面对这个初步方案做进一步的改善和调整,以求得最佳效果,这一过程,就是网络计划的优化。接下来让我们跟…

家用洗地机到底好不好用?国产性价比高的品牌

洗地机作为一种高效、节能、环保、卫生的清洁设备,不仅能够提升清洁效率,还能有效减少清洁成本,更重要的是,它可以帮助我们创造一个更加健康和舒适的生活环境。而且除菌方面大部分都是采用电解水的除菌方式,更加环保和…

【我的创作纪念日—5周年】

序言 用心生活,用力向上,微笑前行,就是对生活最好的回馈。 机缘 最开始写文章,没想那么多,主要是记录一下,就随便写了下,后来认识了一些写文章的小伙伴,在和他们的沟通中越来越体会到…

PACS/RIS影像管理系统源码,采用VC++编程语言,提供三维图像后处理和算法

PACS/RIS影像管理系统源码 医学影像管理(PACS/RIS)系统是一套完整的提供DICOM标准遵从、高效的实现医学影像归档存储、通讯和诊断处理功能的医学影像信息管理系统,其基于DICOM/HL7标准的开放性架构和模块化的结构体系,确保了系统…

自动驾驶就是在扯?比亚迪你凭什么?

比亚迪“炮轰”自动驾驶 上周,在比亚迪2022年财报交流会上,有投资人问比亚迪在自动驾驶方面的发展进度和规划,比亚迪集团董事长王传福直言:“无人驾驶那都是扯淡,弄个虚头巴脑的东西那都是忽悠,它就是一场皇…

【超算/先进计算学习】日报4

目录 今日已完成任务列表遇到的问题及解决方案任务完成详细笔记高性能算法计算机算法的特征及内涵科学计算算法的主要分类高性能算法与传统算法的异同稀疏矩阵向量乘法 SpMV 与稀疏矩阵存储结构常见的稀疏矩阵传统存储与其SpMV算法不同的稀疏矩阵传统存储结构存储效率与稀疏度针…

Linux进程概念及状态

Linux进程概念及进程状态 目录 Linux进程概念及进程状态引入1、什么是进程1.1 描述进程1.2 task_struct组织进程1.3 proc目录 2、进程标识符3、查看进程4、bash进程5、初始fork6、进程状态6.1 操作系统层面6.2 Linux内核源代码RSDX 6.3 僵尸进程6.4 孤儿进程关于kill指令 引入 …

nssctf web 入门(9)

[SWPUCTF 2021 新生赛]sql [SWPUCTF 2021 新生赛]sql 可以猜测做了过滤 这里可以bp跑一下看过滤了哪些 尝试发现过滤了空格/**/在sql中代表注释符在mysql中这个可以用来代表空格 发现--被过滤 #也不行我们试下url编码的#也就是%23 成功了 3个字段 得到库名test_db 这里提示非…

一篇文章让你彻底学会--防抖(并且自己可以手写)

Hi,有的小伙伴们在面试的时候会被要求手写防抖函数,很多都被难着了吧,宝贝,那你你没有理解防抖函数。 今天,就让我带你攻克它! 1.防抖 防抖:单位时间内,频繁触发事件,只执行最后一次。 人话:说…

嵌入式Linux(1):make menuconfig图形化界面

文章目录 搜索功能配置驱动状态退出和make menuconfig有关的三个文件make menuconfig会读取哪个目录下的Kconfig文件?为什么要复制成.config而不复制成其他的文件呢?在默认的deconfig上面通过make menuconfig来改配置,然后保存怎么和Makefile…

门店智能经营平台能解决哪些问题?应该如何选购?

现在很多实体店都开始借助第三方软件或系统,来为自家门店搭建门店智能经营平台,来智能管理自家门店的商品和库存,提高门店运营效率。 一、使用门店智能经营平台能解决哪些难题? 1、实现数据化决策 通过门店智能经营平台&#xff…

VUE3的使用

文章目录 一、Vue3基础语法1、Vue开发准备2、Vue的模板语法3、条件渲染4、列表渲染5、事件处理6、表单输入绑定 二、Components组件1、组件基础2、组件交互3、自定义事件的组件交互4、组件生命周期5、引入第三方组件 三、网络请求及路由配置1、Axios网络请求2、Axios网络请求封…

【Python_Matplotlib学习笔记(一)】pyplot模块的基本用法

pyplot模块的基本用法 前言 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形(来自:百度百科)。pyplot 模块是 Matplotlib 模块提供的快速绘图模块,它模仿了 MA…

H12-831最新解析25题

401、(判断)isis silent命令用来配置IS-IS接口为抑制状态,即抑制该接口接收和发送IS-IS报文,但此接口所在网段的路由可以被发布出去。 A.TRUE B.FALSE 答案:A 解析:isis silent命令为设置静默接口,配置了之后该接口…