[algorithm] 自动驾驶 规划 非线性优化学习系列之1 :车辆横向运动动力学详细解释

写在前面

最近时空联合规划很火,想学习。由于在学校主打学习新能源电力电子方向,转行后也想好好零散的知识体系。计划从车辆运动动力学习,模型预测控制(经典控制目前看主打应用,不会再去深入),非线性优化开始梳理,到最后复现时空联合规划的论文。知识梳理会进行的比较快,实际复现和代码编写会慢慢来完成。

当中如果遇到和实际问题有关的细节知识,作为自己的未来解决方案储备也会强调一下。

目前计划借助的资料有(每本书阅读相关章节):
在这里插入图片描述

车辆动力学及控制第二版

在这里插入图片描述

数值优化
在这里插入图片描述
模型预测控制
在这里插入图片描述
控制之美卷2

其他资料:深蓝学院:机器人中的数值优化

本文是车辆动力学及控制第二版学习的笔记,优先学习2-6章:

主要内容是:车辆侧向简单常用模型

第二章 车辆侧向动力学

车辆侧向运动的运动学模型

在这里插入图片描述
图片来源 Vehicle Dynamics and Control 第二版

这里书上的推导思路复现如下左图
在这里插入图片描述
感觉书上求解目的性不强,这里把为求beta的过程直接利用r相等替换掉未知的r求beta
在这里插入图片描述

此外关于求yawrate的时候我感觉一个小三角形即在知道beta后不需要联立就可以没有必要如书中相加来求,可能是为了简化,可以快速估计,tan近似为线性,而lr+lf 可以直接用轴距而不需要找质心

如果后轮不能转向则有两种思考方式, 那么还是按照左边求法,直接然后忽略后轮转角即可。或者同时由于忽略了后轮转角,角boc就是纯b,同时角obc也是直角,所以通过tan(前轮转角)=ob/ab 求出ob,再用勾股求出oc即为转弯半径。 同时b也可求出了。 有了r的同时我们还有v,所以i也可求出来w了。

对于以上这个模型的假设为:
在这里插入图片描述
在这里插入图片描述

总结:
在这里插入图片描述
图片来源 Vehicle Dynamics and Control 第二版

此外我对这个模型名字有一个疑惑,如果把车视为整个刚体的话,他有三个自由度,为什么叫二自由度模型呢?网上解说是因为横向运动是由纵向和转弯导致的。但是我依然认为如果认真来说 整车为刚体且忽略z向和 pitch roll,这个刚体还剩三个自由度。

答: 我觉得这个自由度和力学里不太一样。按照力学定义必然是三个自由度。但是这里由于该模型研究对象为横向。车辆纵向速度恒定的时候,只关注车辆yawrate和横向速度两个变化量。故称为”二“自由度。

补充 忽略后轮转向和侧偏角时可以进一步简化

见下图左图
在这里插入图片描述
见我的总结

车辆侧向运动的动力学模型

对于高速的应用最好采用动力学模型,因为车轮速度方向不再好假设为车轮朝向。

这里要求一步轮胎侧偏角,其中前轮转角知道 还要多求一步theta vf
在这里插入图片描述
这里如果认为车辆没有后轮转向则有

在这里插入图片描述
图片来源 Vehicle Dynamics and Control 第二版
注意轮胎有两个
在这里插入图片描述

整体推导见我的总结

主要是利用四个方程 :两个轮胎侧向受力模型和横向受力平衡以及转矩平衡。用已知量:车身几何,魔术系数,来表达四个被选取作为车辆运动状态的状态量回头控制量间的关系。即状态转移矩阵和控制输入矩阵。见下图。

结果为
在这里插入图片描述
对于以上这个模型的假设为:车辆自身侧偏移角不大。

如果道路有侧倾

可以在横向受力里带入侧倾公式

在这里插入图片描述
在实际工程中,该角度可以从地图(如果有)或者车道线曲率和速度求得量和总线横向加速度之差获得。但是,试验过不那么准确。或者imu有这个自由度也可以测量。同时当坡度过大的时候,轮胎模型也需要改变,在书的第13章有介绍,但是不是本次学习重点,实际有需要的时候再行学习。

定义误差模型

表述车横向状态的空间状态方程服务目的改为基于横向误差得状态描述的话,需要做如下调整:

定义状态量为从车道中心线到车辆质心的距离,相对车道的车辆方向误差。

该模型要基于三个假设,车速恒定,半径恒定,半径r不是很小,让tan可以线性化。
在这里插入图片描述
在这里插入图片描述
结果为
在这里插入图片描述
结果可以整理为上图。

当所走路线为直线的时候 则认为我期待一个不存在heading的状态(忽略beta侧偏角)那么Pi des 为0.

若考虑坡度则要再横向受力维度加上 sin bank
在这里插入图片描述
书中随后还有提供侧偏角的动力学推导方式,本人实际尚未使用,但原理和之前一样,带入受力和转矩平衡中,以及加入轮胎受力分析,这里要考虑车的速度方向与轴向不一致带来的不同,截图如下(同时还有侧倾角度)在大速度和大弯道下未来可以尝试一下。在MPC建模的时候考虑。
在这里插入图片描述
书中2.7的坐标转化本人理解所讲述意思,但是实际中坐标车辆坐标系和全局坐标系转换另有方法,待未来遇到这种做法再行研究,因为这里的e1 e2 不是一个直观的量,需要量测手段来求
而2.8 我接触的常见道路模型有散点,有三次多项式,有向量。暂时没有接触,且与我复现论文的最终目标关系不大,此两章节省略。

第三章 自动车道保持系统的转向控制

该章节本意在分析使用pid的稳定性和可控性。实际中车辆难以被优化为一个线性时不变系统,同时也不写传递函数,pid一版是在估算前馈后直接调参,虽然有很多工程细节,但是再次收敛于我的目的,不过多研究学习。同时控制我们在使用MPC时候,发现稳定性会比pid好很多。

动力学方程的稳态误差

对于在这里插入图片描述
控制输入为前轮转角 delta,其中把delta是写成状态加控制律的形式,则有
在这里插入图片描述
PI des之前提到是道路弯道有关,如果是直线则不用考虑。
书中研究使用前馈是否可确保弯道行驶的零稳态误差。文中做了拉普拉斯变换以及matlab求解,这里不深入,结果是可以确保稳态横向误差为0但是heading稳态不能保证。
在这里插入图片描述
红框下 我的理解是,稳态过弯道的时候,可以通过前馈来让横向误差为0,但是方向误差会存在。

用几何法来找到稳态转向角的方法见下图
在这里插入图片描述

基于假设半径很大,但是可以有轮胎侧偏角(带入横向动力学),且车辆处于稳态
在这里插入图片描述
则有
在这里插入图片描述
之后较为细节的讨论不做深入。只用PD不开积分足以解决大部分问题。侧倾和死区可以略微开I但是I要比较小做好饱和处理和过点清零工程我见过的简单应用基本到此为止,未来有机会再深入。
一个闭环的pid带前馈的示意图(实际我们用mpc了)
在这里插入图片描述

关于横向的控制总结到此,未来有机会深入学习,也希望大家指正批评!关于离散化空间状态方程可以用欧拉法和龙格库卡等近似,可以见老王或其他笔记,同不过深入,还可见之前总结https://blog.csdn.net/weixin_46479223/article/details/135293785

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

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

相关文章

使用js判断list中是否含有某个字符串,存在则删除,

显示上图中使用了两种方式, 左边的是filter将不等于userCode的元素筛选出来组成一个新的list, userCodeList.filter(item> item!userCode);但是上面这个方法在IE浏览器中不支持, 所以改成了右边的方法,使用splice…

C#,入门教程(22)——函数的基础知识

上一篇: C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识https://blog.csdn.net/beijinghorn/article/details/124140653 一、函数的基本概念 一个软件的结构大体如下: 大厦application: a plaza { --…

01-灵魂一问:智能网联汽车域控SOA如何做?

1. 前言 //TODO 2. SOA?微服务? //TODO 3. 如何设计框架? 3.1 全面SOA SOA平台化,全面解耦操作系统,将操作系统重新分层 3.2 部分SOA 仅仅将部分涉及车辆相关的SOA服务化,比如automotive service …

Java带你快速了解单元测试

一、单元测试 1.1 单元测试快速入门 所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。 我们想想,咱们之前是怎么进行测试的呢? 比如说我们写了一个学生管理系统,有添加学生、修改学生、删除…

MySQL基础(一)

学习数据库的目的: 实现数据持久化到本地。使用完整的管理系统统一管理,可以实现结构化查询,方便管理。 一、数据库概述 数据库(DataBase) 为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘…

成都直播基地应该怎么做?直击西南直播电商行业发展现状

新蓝图已然绘就,新征程击鼓催征。近年,四川电子商务行业的发展势头日益强劲,为助力成都直播产业的多元化发展,由德商产投与无锋科技联袂打造的中国西部大型全域直播产业基地——天府锋巢直播产业基地落户成都市天府新区。该成都直…

HTTP与HTTPS的工作流程

HTTP与HTTPS的工作流程 http知识点回顾1、HTTP访问的过程2、HTTP常见状态码3、HTTP 协议一共五大特点 https的工作流程1、对称加密2、非对称加密3、https工作流程 http知识点回顾 1、HTTP访问的过程 (1)解析url,获取 url 中包含的域名&…

使用ffmpeg转换索尼老DV拍摄的VOB文件为mp4

一些背景故事 最近对象想用 CCD 拍照录像,家里刚好有一台快 20 年前的索尼 DV DCR-DVD653E,就是电池老化充不进去电了。 翻出来之后还感慨了一下:当年没有网购,价格不透明;有些地方也没有官方店,只有一两家…

vivado:关联notepad++

网上好多都要下插件,看了野火视频,直接在vivado里面加路径弄好的 2 3(那个fonts and colors也经常用 改字体) 4 5 以下是我的路径 D:/gongjuruanjian/notepad/Notepad/notepad.exe [file name] -n[line number] 把[file name] -…

【刷题】 leetcode 面试题 01.06 字符串压缩

字符串压缩 字符串压缩思路一(双指针顺畅版)思路二(sprintf函数巧解版) Thanks♪(・ω・)ノ谢谢阅读下一篇文章见!!! 字符串压缩 来看题目: 根据题目…

Python实现中英文互译

使用预训练模型时经常会涉及到中英文互译,总结一下方法 1、translate库 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple translate使用 #中文翻译成英文translator Translator(from_langchinese,to_langenglish)result translator.translate(&…

【QML-Qt Design Studio】

QML编程指南 ■ Qt Design Studio (Qt Quick UI设计工具)■ 安装Qt Design Studio■ ■ Qt Design Studio (Qt Quick UI设计工具) Qt Design Studio是一个用于创建酷炫、优美UI的工具。 简单概括其功能就是让UI设计转换为qml&…

[UI5 常用控件] 01.Text

文章目录 前言1. 普通文本2. 长文本:3. 设置最大显示行数 ( maxLines3 )4. 单行显示 ( wrappingfalse )5. 显示空白符 ( renderWhitespacetrue )6. 使用 - 连接单词:只适用于英文 ( wrappingTypeHyphenated )7. 空白时使用 - 代替 ( emptyIndicatorModeOn )8. JSON数…

数据采集与预处理02 :网络爬虫实战

数据采集与预处理02 :网络爬虫实战 爬虫基本知识 1 HTTP的理解 URL uniform resource locator. 是统一资源定位符,URI identifier是统一资源标识符。几乎所有的URI都是URL。 URL前部一般可以看到是HTTP还是HTTPS, 这是访问资源需要的协议…

【LeetCode: 36. 有效的数独 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

不同知识表示方法与知识图谱

目录 前言1 一阶谓词逻辑1.1 简介1.2 优势1.3 局限性 2 产生式规则2.1 简介2.2 优势2.3 局限性 3 框架系统3.1 简介3.2 优势3.3 局限性 4 描述逻辑4.1 简介4.2 优势4.3 局限性 5 语义网络5.1 简介5.2 优势5.3 局限性 结语 前言 知识表示是人工智能领域中至关重要的一环&#x…

jQuery遍历(其他遍历)

1、.add&#xff08;&#xff09;: 添加元素到匹配的元素集合 例一&#xff1a; <script> $(document).ready(function(){ $("div").add("p").css("background-color","red") }) </script…

达梦数据库Windows安装教程:从准备到完成

目录 博客前言&#xff1a; 一.达梦数据库安装前准备 1.下载 2.进行解压 装载 二.正式安装 选择语言与时区 安装向导 许可证协议 验证 Key 文件 选择安装组件 选择安装目录 安装前小结 数据库安装 数据库安装完成 三.配置实例 选择操作方式 创建数据库模板 选…

51单片机LCD1602调试工具

参考视频&#xff1a;江协科技51单片机 LCD1602头文件代码 #ifndef __LCD1602_H__ #define __LCD1602_H__//用户调用函数&#xff1a; void LCD_Init(); void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char); void LCD_ShowString(unsigned char Line,un…

关于Cortex-M4处理器和核心外设

Cortex-M4处理器是一款专为微控制器市场设计的高性能32位处理器。它为开发人员提供了显著的好处&#xff0c;包括&#xff1a; 出色的处理性能与快速中断相结合增强的系统调试&#xff0c;具有广泛的断点和跟踪功能高效的处理器核心&#xff0c;系统和存储器超低功耗集成睡眠模…