复杂环境中轮式铰接车辆的精确轨迹优化研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章下载


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

文献来源:

摘要

轨迹规划指的是在考虑某些特定约束的同时,规划一条连接初始和最终状态的时间相关路径。这对于自主驾驶铰接式车辆而言是一个至关重要的方面。本文中,轨迹规划被表述为一个包含运动学微分方程、机械/环境约束、边界条件及优化目标的动态优化问题。现有解决此类动态优化问题的数值方法普遍忽视了相邻离散网格点间约束的满足,导致规划的运动在实际执行时失败。为了弥补这一局限性,提出了“微网格”概念,确保了相邻粗略网格点间约束的满足。基于精确的惩罚函数,大规模约束成功融入优化标准中,从而将动态优化问题转换为仅对决策变量有简单界限的静态问题。仿真结果验证了我们提出的方法不仅能提供精确的结果,还能统一处理各种优化目标。

铰接式车辆是指其结构中具有永久或半永久性枢轴关节的车辆[1]。广义上讲,任何牵引拖车的车辆均可视为铰接式。与相同长度的刚体车辆相比,铰接式车辆转弯时具有显著更小的转弯半径[2]。此外,铰接结构有助于车辆在崎岖地形上保持接触。这两项优点促使铰接式车辆在巴士、有轨电车、火车、卡车以及机器人地面清洁器等多个领域得到应用[3]。本研究聚焦于铰接式轮式车辆的轨迹生成问题。轨迹生成涉及在考虑一些预定义要求的同时,规划一条连接初始状态和期望最终状态的时间相关路径[4,5]。Viale等人[6]提出了一种实用的多步骤轨迹规划器,首先计算几何路径,然后生成平滑轨迹。尽管初步几何路径(由直线段和圆弧组成)的计算自动化且快速,但该方法整体上不善于直接且精确地处理复杂情景,特别是涉及时间依赖性约束和不规则障碍物布置的方案。其他基于几何的方法或先路径后轨迹方法(例如[7-11])也存在此局限性。Wang和Cartmell[12]采用函数拟合方法直接计算时间相关剖面。遗憾的是,他们的研究未考虑避障问题。Zare等人[13]开发了一种基于模糊逻辑的方法,其中使用三个独立的模糊控制器分别进行前进操作、目标接近和避障。然而,他们的工作并未精确描述运动学模型和环境。更重要的是,基于模糊逻辑的方法通常用于确定可行而非最优或优化的轨迹。

除了上述轨迹规划器之外,先前的研究还将轨迹生成的部分内容与轨迹跟踪结合起来。例如,首先规划路径,然后直接进行轨迹跟踪。轨迹跟踪涉及闭环执行,因此广泛采用了控制理论。在文献中,由于控制稳定性问题,特别关注了倒车动作[14-17]。与倒车相关的知名问题之一是折刀效应[jackknifing][18]。详细文章见第4部分。

📚2 运行结果

部分代码:

bound_v = 3; % Bound of the linear velocity (m/sec)
bound_phy = 0.714; % Bound of the steering angle (rad)
FE = 5; % Number of finite periods
MMG = 200; % Number of minute mesh grids on each finite period
banBL = 6; % Defines the length of the box for the terminal inside-box condition
banBW = 1.5; % Defines the width of the box for the terminal inside-box condition (the box centers at the origin (0,0))

% Generate upper and lower bounds for all the decision variables
ub = zeros(1,(6*FE+3));
ub(1,1:(3*FE)) = bound_v;
ub(1,(3*FE+1)) = 0;
ub(1,(3*FE+2):(6*FE+2)) = bound_phy;
lb = -ub;
ub(end) = 40;
lb(end) = 15;
ub(1,1) = 0;
lb(1,1) = 0;

% Gsol stands for the current best solution that is availble
global Gsol
load currentbest.mat
V = Gsol;

tf = V(end);
temp = length(V) - 1;
v_origin = V(1:(temp./2));
phy_origin = V(((temp./2)+1):temp);

v1 = optvariable_filter(preprocessingoptvariale(v_origin));
phy = optvariable_filter(preprocessingoptvariale(phy_origin));
v1 = generate_control(v1,tf);
phy = generate_control(phy,tf);
v1(find(v1 > bound_v)) = bound_v;
v1(find(v1 < -1*bound_v)) = -1*bound_v;
phy(find(phy > bound_phy)) = bound_phy;
phy(find(phy < -1*bound_phy)) = -1*bound_phy;
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值