基于MPC的自动驾驶泊车控制

2024-04-11 16:20
文章标签 自动 控制 驾驶 mpc 泊车

本文主要是介绍基于MPC的自动驾驶泊车控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于MPC的自动驾驶泊车控制

H. Ye, H. Jiang, S. Ma, B. Tang, and L. Wahab, “Linear model predictive control of automatic parking path tracking with soft constraints,” International Journal of Advanced Robotic Systems, vol. 16, no. 3, p.

image

附赠自动驾驶学习资料和量产经验:链接

核心思想就是先进行几何的规划,得到路径,然后再通过MPC对路径进行traking 用的方法都是常规的方法,用了车辆的运动学。没有什么特别之处。

车辆建模这部分,由于是Parking场景,速度很低,轮子的
摩擦力没有饱和,可以利用了车辆的运动学模型,其实就是阿卡曼约束,用中文来解释一下,就是车辆在运动的时候,可以看成车的每一个轮子都在绕着一个圆心运动。
那么很容易得到,后轴中心的速度就是和车架的方向一致。因此就可以很容易得到运动学模型。
至于最后一行,车辆heading的基本上和车辆的速度以及车辆前轮转角成正比。这个也可以从几何学的关系式看到。

image

image

基于几何的规划方法,下面的这个图中,重要的点有两个,一个是C点,这个点是停车位的某个角点,可以根据几何关系求出来弧线OC对应的曲率半径R1,同时也可以知道C点处的切线角度。其实CB是直线。这两段线用下面的公式描述:

image

而曲线AB 用下面这个公式来表达

image

论文中并没有描述这个线型的特征,或者优势,我觉的这点很成问题,也没说明这个线的来源。

MPC控制

目前通过规划,我们拿到了期望的路径(path) 然后作者构建了车辆的离散化的状态更新方程。
需要注意的是,我们在前面通过Ackerman公式得到了车辆的运动学模型,它是连续非线性的方程。这里需要做线性化和离散化。后面的部分都是常规操作,比如在参考点处展开,离散形式等等。

image

image

这里做了一个小的改变,把车辆的状态扩张了一下,多了一个维度,放进去的是上一帧的控制量。这个改变是为了把控制输入写成增量的形式。

image

最后,可以预测未来n个time steps 的控制输出。

image

注意,这里Y(k)是k个predict horizons的结果,而\delta U 不一定是k个,可能小于K
有了这个Y(k) 之后,带入到下面的目标函数里面:

image

整理一下,写成变量 的二次型的形式(如下面的公式,这个推导有点麻烦,但是都是常规操作,放到论文的appendix里面就好,居然放到正文里面。。。。),就可以丢到优化器里面了。

image

仿真和实验

仿真和实验部分写了一大堆的结果分析,但是对实验条件的描述不够,比如,1. 在文章中,并没有找到关于参考速度是如何得到的,2,没有看到仿真和实验的离散化的步长,这个步长对结果其实影响还是比较大的。
还有PID到底是如何实现的?因为很多时候车辆采用PID算法,会有不同的结构形式,这个影响也会很大,作者需要在这里描述清楚。

这篇关于基于MPC的自动驾驶泊车控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894577

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur