当前位置: 首页 > news >正文

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…...

类模板函数模板

准备看个项目找实习&#xff0c;边看边学&#xff0c;一看到处都是template 和typename&#xff0c;好几年前学的C都忘记光了&#xff0c;在这里先做个笔记复习一下。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] 的 递推需要考虑两种情况&#xff1a; &#xff08;1&#xff09;word1[i - 1] word2[j - 1] 相当于不考虑word1[i]和…...

系统检测维护工具Wsycheck使用(18)

实验目的 &#xff08;1&#xff09;学习Wsycheck的基本功能&#xff1b; &#xff08;2&#xff09;掌握Wsycheck的基本使用方法&#xff1b; 预备知识 windows操作系统的基本知识如&#xff1a;进程、网络、服务和文件等的了解。 Wsycheck是一款强大的系统检测维护工具,进程和…...

111 ok

全部 答对 答错 单选题 1.在与团队一起召开开工会议之后&#xff0c;项目经理分配工作活动&#xff0c;由于与其职能经理分配的任务发生冲突&#xff0c;一位团队成员拒绝开始工作&#xff0c;项目经理首先应该做什么&#xff1f; A请项目发起人帮助与职能经理进行谈判 B签发…...

Python API教程:API入门

什么是API&#xff1f; 一个API&#xff0c;或被称为应用程序接口&#xff0c;是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。 本文就集中焦点在此话题中。 当我们想从一个API中接收数据&#xff0c;我们需要开始请求。请求可以包含整个Web。例如&am…...

SpringMVC学习笔记

文章目录一、SpringMVC简介1、MVC与三层架构1.1 M1.2 V1.3 C1.4 MVC模式的工作流程1.5 三层架构2、什么是SpringMVC3、SpringMVC的特点二、搭建项目框架1、web项目结构2、创建maven工程&#xff0c;配置pom.xmla>添加web模块b> pom.xml中设置打包方式&#xff1a;warc>…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...