基于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

相关文章

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我