2022年MathorCup数学建模C题自动泊车问题解题全过程文档加程序
2022年第十二届MathorCup高校数学建模
C题 自动泊车问题
原题再现
自动泊车是自动驾驶技术中落地最多的场景之一,自动泊车指在停车场内实现汽车的自动泊车入位过程,在停车空间有限的大城市,是一个比较实用的功能,减少了驾驶员将车辆驶入狭小空间的难度。图 1 为 ApolloD-Kit 车辆在开放露天停车位进行泊车的测试场景,无人车泊入路边一个平行停车位。

本研究以无人乘用车为例,实现在停车场中进行自动泊车的功能。无人车为阿克曼结构的乘用车,如图 2 所示,前轮转向后轮驱动;车身可以看作一个矩形,长4.9m,宽1.8m;车子轴距2.8m,轮间距为1.7m;最大油门加速度为3.0 m/s!,极限最大减速度为−6.0 m/s!,加加速度不超过20.0 m/s"为宜;方向盘最大转角470°,方向盘与前轮转角的传动比为16: 1(方向盘转动16°,前轮转动1°),方向盘最大转速为400°/s。

图 3 为某停车场平面图,无人车从初始位置出发,假设以初速度为零开始行驶,将车停在停车场中某一个车位上。停车位上如果没有其他车辆占用,或车位没有被锁,则无人车可停入。停车位有三种类型,分别为垂直停车位(停车方向垂直路面)、平行停车位(停车方向与路面平行)和倾斜停车位。图中用黄色斜线标识的为停车场中部分围墙,白色斜线区域为禁行区域,车辆不能与其产生冲突或碰撞,黄色横线区域为减速带。停车位中的箭头指示为车辆泊车完成后的车头朝向。地面上箭头指示了车辆应该行驶的方向,泊车过程中的倒车方向不予约束。在黄色减速带前后 5m,车辆行驶速度不超过10km/h。

无人车驶到指定位置(如入口处),如何识别出停车场中的最优目标停车位,以及根据目标车位,如何快速到达并进行安全泊车是自动泊车过程的核心问题。泊车过程在保证安全的情况下,时间应尽可能短,前进车速不超过 20km/h,倒车车速不超过 10km/h,在减速带前后 5m 范围车速不超过 10km/h,轨迹和速度都尽可能平滑(满足最大加速度,最大减速度的约束,并最好满足最大加加速度的约束)。这里轨迹指的是车身中某一特定点的轨迹,即控制点;控制点是事先选定的,通常位于无人车车身对称轴(车身可以近似认为是左右轴对称的)上的一点,在行驶时,控制点的位置会与轨迹点相重合,控制点处的速度方向将与轨迹点的方向角一致,本研究假设控制点位于后轴中心上。请你们的参赛队,研究解决以下问题:
问题 1: 请根据给出的无人车模型的参数,计算车辆最小转弯半径。如果限制车辆最大加加速度为20 m/s",无人车沿直线行驶时,最短需要多少距离能加速到最大限制速度20km/h?当车速为20km/h时,无人车如果需要转弯,从沿直线行驶状态开始转弯,路径上的曲率相对路径长度的变化率大小有何限制?
问题 2:如图 4 所示,无人车初始位置为车库入口,请建立无人车泊车的数学模型,并给出从初始位置到指定停车位的泊车轨迹,轨迹应包括每时刻无人车的行驶路径长度、车辆朝向、速度、加速度、加加速度、角速度、角加速度等,并给出可视化轨迹图。在这个过程中标注红色禁停的停车位都已经被占用,泊车过程中无人车不能与其发生冲突或碰撞。分别考虑三种不同的车位情况,10 号垂直停车位、82 号平行泊车位、31 号倾斜停车位(倾斜角为45°)。

问题 3:无人车在如图 5 所示的初始位置上,请你们根据当前停车位的状况,建立泊车模型,计算出最优停车位,给出从当前位置到停车位的轨迹;标注红色禁停的停车位都已经被占用,泊车过程中无人车不能与其发生冲突或碰撞。在这个过程中,试建立通用模型,并考虑算法怎样设计能适应车库中任意停车位被占用的状况,并考虑这个过程算法复杂性。

问题 4:以图 5 为初始状态,假设在当前状态下每小时内从入口进入和从出口离开停车场的车辆均为 30 辆,因车辆的进入和离开,导致停车位会被随机占用或释放。请你们为无人车建立泊车模型,并给出从当前位置到最优停车位的行驶轨迹的仿真结果。
整体求解过程概述(摘要)
自动泊车系统可以通过车辆周身搭载的传感器测量车身与周围环境之间的距离和角度,收集传感器数据计算出操作流程,同时调整方向盘的转动实现停车入位。因此,自动泊车技术是比较实用的一项功能,自动泊车技术有助于解决人口密集城区的一些停车和交通问题,驾驶者不用再担心因技术不过关而泊不好车。
本文针对自动泊车问题,主要通过建立 A**模型,应用拟合算法及微分方程参数估计实现三种不同泊车位置下小车行驶路径轨迹的拟合,及对最小的转弯半径和曲率变化率的相关求解。
针对问题一,我们根据题目中的方向盘最大转角,最大转速等数据来确定控制点位置,计算出前轮的最大转角;通过相关公式可求出最小转弯半径,再通过假设无人车做匀加速直线运动列不等式关系组可求最短路径;最后,通过拟合算法分三部分来讨论曲率相对路径长度的变化率。
针对问题二,以车库入口为无人车初始位置,基于 A*算法,可以获得无人车从起点到终点的几何路径轨迹;再通过曲线差值法来求出轨迹规划进而求解出位置,速度,加速度及加加速度;最后,再求出角速度及角加速度。
针对问题三,我们建立了基于蚁群算法的泊车模型。根据停车位的空闲状况,首先规划了合适的泊车轨迹,建立出相应的泊车模型,得到泊车过程中所需的路程及时间。我们以汽车在倒车过程中的旋转角度来辅助我们判断 3 种不同的倒车情况,并以此计算三类情况下所需要的倒车时长,并通过系统的将无人车在直线弯道倒车入库各环节的时间汇总,在已知空余车位的情况下寻求最优解,从而得到整体的停车规划路线,然后对模型进行优化。
针对问题四,我们依据前三问所求得的数据,建立基于蚁群算法的动态泊车模型。由于车辆的进入和离开,导致停车位会被随机占用或释放,在问题一和问题二中我们可以知道最小转弯半径,曲率变化,各个时刻位置速度等相关参数,根据无人车选择不同的停车位,当可用停车位数量不变情况下,建立数学模型,建立无人车泊车轨迹规划模型,得出无人车泊车策略,并进行仿真实验。
模型假设:
为了便于考虑问题,我们在不影响模型的准确性的前提下,作出下面的几项假设:
(1)假设在加速阶段,无人车做匀加速运动,在减速阶段,无人车做匀减速运动;
(2)假设所有转弯过程车做匀速运动且运动轨迹均为圆弧;
(3)假设轮胎与地面的摩擦消耗的时间忽略不计;并且忽略无人车在垂直地面的方向上的运动;
(4)假设无人车不受转向系统相关的影响,直接用前轮转角作为输入;
(5)忽略车辆受到的空气阻力;车辆与地面保持良好的滚动摩擦;
(6)假设蚁群算法中只考虑信息素浓度对蚂蚁选择路径的影响。
问题分析:
针对问题一
本题主要研究根据给出的无人车模型的数据,计算车辆最小转弯半径,加速到最大限制速度的行驶距离,以及转弯时路径上曲率相对路径长度的变化率大小限制条件。首先,我们根据题目中无人车轴距,轮间距,方向盘最大转角,最大转速等已知数据来确定控制点位置,进一步计算出前轮的最大转角;通过相关公式可求出最小转弯半径,再通过假设无人车做匀加速直线运动列不等式关系组可求最短路径;最后,通过拟合算法分三部分讨论曲率相对路径长度的变化率的影响。
针对问题二
本题主要研究了平行泊车系统的路径规划方法,首先根据车辆参数计算出理论可行泊车起始区域;然后分析对比了多种平行泊车路径规划方法的优缺点,最终选取了曲率连续且易于车辆跟踪的等速偏移和正弦曲线的叠加曲线作为此次泊车路径,以车库入口为无人车初始位置,针对车位尺寸较小情况规划了泊车姿态调整,讨论了泊车过程出现障碍物时的路径选取;最后进行了路径仿真分析,验证了路径的可行性。基于 A*算法,可以获得无人车从起点到终点的几何路径;再通过曲线差值法轨迹规划和 Lingo 软件编写程序来求解位置,速度,加速度和加加速度;最后再求角速度和角加速度。
针对问题三
本题主要研究了题目需要需要根据停车位现有的状况,建立相应的泊车模型,基于蚁群算法,计算出较优停车位,并得出从当前位置到停车位的轨迹。得到泊车过程中所需时间,首先需要得到整个行驶过程中所需要经过的路段及路段对应的时间,同时需要汽车在倒车过程中的倒车时长,我们以汽车在倒车过程中的旋转角度来确定在不同的倒车情形下,所需要的倒车时长,并通过系统的将无人车在直线弯道倒车入库各环节的时间汇总,在已知空余车位的情况下寻求最优解,从而得到整体的停车规划路线。
针对问题四
本题主要研究了每小时内从入口进入和出口离开停车场的车辆均为 30 辆情况下无人车到最优停车位的行驶轨迹,由于车辆的进入和离开,导致停车位会被随机占用或释放,在问题一和问题二中我们可以知道最小转弯半径,曲率变化,各个时刻位置速度等相关参数,根据无人车选择不同的停车位,当可用停车位数量不变情况下,建立数学模型,建立无人车泊车轨迹规划模型,得出无人车泊车策略。现有的基于对路径规划问题的相关的算法研究主要包含 Dijkstra 算法、遗传算法、D** 算法、A** 算法以及粒子群算法等。我们针对实际的停车场环境,进行相关的道路规划,首先对实际的停车场的基本环境进行建模,根据无人车车辆的运动学模型,基于蚁群算法进行路径规划,采用垂直泊车、平行泊车、倾斜泊车三种路径规划方法进行泊车,基本做出车辆安全无碰的泊车入位。
模型的建立与求解整体论文缩略图


全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:(代码和文档not free)
The actual procedure is shown in the screenshot
clc
clearmdl_puma560%调出puma560 DH模型作为实验对象
t=[0:0.05:2];%轨迹,步长0.05T1 = transl(0.4,0.2,0)*trotx(pi);%位移*旋转,创建齐次变换
T2 = transl(0.4,-0.2,0)*trotx(pi/2);q1 = p560.ikine6s(T1);
q2 = p560.ikine6s(T2);qq=jtraj(q1,q2,t);%根据各节点,生成轨迹
Tqq=p560.fkine(qq);qT=p560.jtraj(T1,T2,t);%根据节点矩阵,生成轨迹
Tqt=p560.fkine(qT);%笛卡尔运动
%笛卡尔空间中直线运动,生成从SE3空间两点间直线的一系列中间位置,结果表达为4*4齐次换矩阵
Ts=ctraj(T1,T2,length(t));
qs=p560.ikine6s(Ts);figure(1)%绘制各关节角度
for i=1:6subplot(2,3,i)plot(t, qq(:,i))hold on;plot(t, qT(:,i))plot(t, qs(:,i)) legend('空间-根据各节点规划','节点空间-根据位姿规划','笛卡尔空间')hold off;
endfigure(2)
pq=transl(Tqq);%提取旋转矩阵中的位移部分
pT=transl(Tqt);
ps=transl(Ts);
%依次是 '节点空间-根据各节点规划','节点空间-根据节点规划','笛卡尔空间'
subplot(3,1,1)
plot3(pq(:,1),pq(:,2),pq(:,3))
subplot(3,1,2)
plot3(pT(:,1),pT(:,2),pT(:,3))
subplot(3,1,3)
plot3(ps(:,1),ps(:,2),ps(:,3))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:
2022年MathorCup数学建模C题自动泊车问题解题全过程文档加程序
2022年第十二届MathorCup高校数学建模 C题 自动泊车问题 原题再现 自动泊车是自动驾驶技术中落地最多的场景之一,自动泊车指在停车场内实现汽车的自动泊车入位过程,在停车空间有限的大城市,是一个比较实用的功能,减少了驾驶员将…...
【需求响应】基于数据驱动的需求响应优化及预测研究(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
Bellman-ford和SPFA算法
目录 一、前言 二、Bellman-ford算法 1、算法思想 2、算法复杂度 3、判断负圈 4、出差(2022第十三届国赛,lanqiaoOJ题号2194) 三、SPFA算法:改进的Bellman-Ford 1、随机数据下的最短路问题(lanqiaoOJ题号1366&…...
假如你知道这样的MySQL
数据库三范式是什么? 第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系 统都满足第一范式数据库表中的字段都是单一属性的,不可再分)第二范式(2NF)是在第一范式(1NF)的…...
SpringBoot笔记(一)入门使用
一、为什么用SpringBootSpringBoot优点创建独立Spring应用内嵌web服务器自动starter依赖,简化构建配置自动配置Spring以及第三方功能提供生产级别的监控、健康检查及外部化配置无代码生成、无需编写XMLSpringBoot缺点人称版本帝,迭代快,需要时…...
C++20 协程体验
1 介绍协程是比线程更加轻量级并发编程方式,CPU资源在用户态进行切换,CPU切换信息在用户态保存。协程完成异步的调用流程,并对用户展示出同步的使用方式。协程的调度由应用层决定,所以不同的实现会有不同的调度方式,调度策略比较灵…...
这三个小事你做HIGG FEM时要知道
【这三个小事你做HIGG FEM时要知道】1.为什么做了Higg FEM 自评后要做验证?「自评 验证」Higg FEM 是一个持续改善的框架方法,来帮助工厂实现持续的环保改善,是一个最基本的要求,如果工厂期望得到一个更加客观的评价,…...
.net6 wpf程序一个内存不断增长问题的解决方法
一个.net6的应用程序,底层不断采集数据。使用wpf制作了一个简单的界面显示数据接收的情况。程序中引用了 Material Design UI框架。当程序长时间运行时发现内存在不断增长。一个星期后工作集占用内存达到1GB。使用dotnet-dump工具收集内存使用情况,并且分…...
NICEGUI---ROS开发之中常用的GUI工具
0. 简介 对于ROS来说,如果不具备一定知识的人员来使用这些我们写的算法,如果说没有交互,这会让用户使用困难,所以我们需要使用GUI来完成友善的数据交互,传统的GUI方法一般有PYQT这类GUI方法,但是这类GUI工…...
高盐废水除钙镁的技术解析
高盐废水指含有机物和至少总溶解固体(totaldissolvedsolids,tds)的质量分数大于3.5%的废水,具有水量大,无机盐离子k、na、ca2、mg2、cl-、so42-等含量高,水质水量变化大,成分复杂,难生化降解等特…...
回文日期门牌制作
题目: 题目描述 如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。 给定一个 8 位数的日期,请…...
基于半车悬架的轴距预瞄与轴间预瞄仿真对比
目录 前言 1. 半车悬架模型 2.轴距预瞄(单点预瞄)和轴间预瞄(两点预瞄)原理与仿真分析 2.1轴距预瞄(单点预瞄) 2.1.1预瞄原理 2.2.轴间预瞄(两点预瞄) 2.2.1预瞄原理 2.3仿真分析 3.总结 前言 对于悬架而言,四个车轮实际的输入信息是受到前后延时以及左右相…...
Linux开发 安装JDK8、p4
前面的笔记: Linux 学习笔记1 安装linux详细教程_linux系统 setting_O丶ne丨柒夜的博客-CSDN博客 Linux 学习笔记2 常用命令_O丶ne丨柒夜的博客-CSDN博客 Linux 学习笔记3 权限管理 定时任务 网络配置_O丶ne丨柒夜的博客-CSDN博客 安装配置 安装配置JDK8 Java …...
基于 x86 SoC 的车辆智能驾驶舱和ADAS设计(一)
随着汽车成为软件定义的自动化领域的中心,英特尔致力于提供从汽车到云的可扩展安 全解决方案来加快从高级驾驶员辅助系统(ADAS)到全自动汽车为自动驾驶提供技术支持。 2016 年 3 月,英特尔斥资 153 亿美元收购了以色列高级辅助驾驶系统企业 Mobileye。20…...
类模板函数模板
准备看个项目找实习,边看边学,一看到处都是template 和typename,好几年前学的C都忘记光了,在这里先做个笔记复习一下。template <class T> T abs(T x) {if(x < 0) return -x;return x; } int main() {int x 1;cout <…...
Leetcode DAY 56: 两个字符串的删除操作 and 编辑距离
583. 两个字符串的删除操作 1 、 dp[i][j] 表示 让以word1[i - 1]为结尾的字符串 和 以word2[i - 2]为结尾的字符串 相等需要删除的最少次数 1、dp[i][j] 的 递推需要考虑两种情况: (1)word1[i - 1] word2[j - 1] 相当于不考虑word1[i]和…...
系统检测维护工具Wsycheck使用(18)
实验目的 (1)学习Wsycheck的基本功能; (2)掌握Wsycheck的基本使用方法; 预备知识 windows操作系统的基本知识如:进程、网络、服务和文件等的了解。 Wsycheck是一款强大的系统检测维护工具,进程和…...
111 ok
全部 答对 答错 单选题 1.在与团队一起召开开工会议之后,项目经理分配工作活动,由于与其职能经理分配的任务发生冲突,一位团队成员拒绝开始工作,项目经理首先应该做什么? A请项目发起人帮助与职能经理进行谈判 B签发…...
Python API教程:API入门
什么是API? 一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。 本文就集中焦点在此话题中。 当我们想从一个API中接收数据,我们需要开始请求。请求可以包含整个Web。例如&am…...
SpringMVC学习笔记
文章目录一、SpringMVC简介1、MVC与三层架构1.1 M1.2 V1.3 C1.4 MVC模式的工作流程1.5 三层架构2、什么是SpringMVC3、SpringMVC的特点二、搭建项目框架1、web项目结构2、创建maven工程,配置pom.xmla>添加web模块b> pom.xml中设置打包方式:warc>…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
