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

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版