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

相关文章

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 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直