用于自动驾驶汽车赛车中实时最优轨迹规划的顺序凸规划方法(Matlab代码实现)
👨🎓个人主页
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
🎁完整资源、论文复现、期刊合作、论文辅导及科研仿真定制事宜点击:
👉👉👉本文完整资源下载
💥1 概述
用于自动驾驶汽车赛车中实时最优轨迹规划的顺序凸规划方法研究
自动驾驶汽车赛车中轨迹规划的优化问题具有非线性和非凸性的特点。通常不是解决这些优化问题,而是求解凸近似以实现高更新率。我们提出了一种基于非线性单轨车辆模型和Pacejka的神奇轮胎公式的实时模型预测控制(MPC)轨迹规划器,用于自动驾驶汽车赛车。在制定了一般的非凸轨迹优化问题之后,我们使用顺序凸规划(SCP)形成了凸近似。最先进的技术使用顺序线性化(SL)凸化轨道约束,这是一种放宽约束的方法。松弛优化问题的解在非凸优化问题中不能保证可行。我们提出了顺序凸约束(SCR)作为凸化轨道约束的方法。SCR 保证生成的解决方案在非凸优化问题中是可行的。我们展示了受限优化问题解决方案的递归可行性。MPC在模拟中在霍根海姆赛道的缩放版本上进行评估。结果表明,使用SCR的MPC比使用SL的MPC产生更快的单圈时间,同时仍然具有实时能力。
- Matlab
- 版本:推荐 R2021a,最低 R2019a
- 符号数学工具箱
- 统计和机器学习工具箱(仅用于评估)
- 求解
- 推荐的 IBM ILOG CPLEX 优化工作室 12.10
- 或者,MATLAB通过“符号数学工具箱”
quadprog
一、引言
自动驾驶汽车赛车中的轨迹规划问题因其高度非线性与非凸性而极具挑战性。为了在高更新率下实现有效的轨迹规划,通常的做法是求解凸近似问题。本文提出了一种结合非线性单轨车辆模型和Pacejka轮胎模型的实时模型预测控制(MPC)轨迹规划器,并引入顺序凸规划(SCP)方法来形成凸近似,以应用于自动驾驶汽车赛车。
二、非凸轨迹优化问题
在自动驾驶汽车赛车领域,轨迹规划问题通常涉及多个复杂因素,如车辆动力学、道路约束、障碍物避让等,这些因素共同构成了非线性和非凸的优化问题。传统方法在处理这类问题时往往效率低下,难以满足实时性要求。
三、顺序凸规划(SCP)方法
为了克服非凸优化问题的挑战,本文采用顺序凸规划(SCP)方法。SCP方法通过迭代地求解一系列凸优化子问题来逼近原非凸优化问题的解。在每次迭代中,我们根据当前解对原问题进行凸化,从而得到一个凸优化问题。通过不断迭代,我们可以逐步逼近原问题的最优解。
四、顺序凸约束(SCR)方法
最先进的技术通常使用顺序线性化(SL)方法来凸化轨道约束,但这种方法可能导致生成的解决方案在非凸优化问题中不可行。为了解决这个问题,我们提出了顺序凸约束(SCR)方法。SCR方法通过保持轨道约束的凸性,确保生成的解决方案在非凸优化问题中是可行的。这一改进大大提高了轨迹规划器的实用性和可靠性。
五、递归可行性分析
在SCP框架下,我们证明了受限优化问题解决方案的递归可行性。这意味着在每次迭代中,我们都可以找到一个可行的解决方案,从而保证了整个轨迹规划过程的稳定性和收敛性。
六、模拟实验与结果分析
为了验证SCP方法的有效性,我们在霍根海姆赛道的缩放版本上进行了模拟实验。实验结果表明,使用SCR的MPC轨迹规划器比使用SL的MPC轨迹规划器产生更快的单圈时间,同时仍然保持了实时性能。这一结果充分证明了SCP方法在提高自动驾驶汽车赛车轨迹规划效率方面的优势。
七、结论与展望
本文提出了一种基于顺序凸规划(SCP)的实时轨迹规划方法,用于自动驾驶汽车赛车。通过引入顺序凸约束(SCR)方法,我们确保了生成的解决方案在非凸优化问题中的可行性。模拟实验结果验证了SCP方法的有效性。未来工作将进一步探索SCP方法在其他复杂场景中的应用,并优化算法以提高计算效率。
本文档详细介绍了用于自动驾驶汽车赛车中实时最优轨迹规划的顺序凸规划方法研究,包括非凸轨迹优化问题的提出、顺序凸规划方法的引入、顺序凸约束方法的提出、递归可行性分析以及模拟实验与结果分析等内容。希望本文档能为相关领域的研究人员提供有益的参考和启示。
📚2 运行结果
部分代码:
function cfg_vh = vehicle_ST_Liniger(cfg_vh)
% adapts vehicle to Single Track Model Liniger
cfg_vh.description = [cfg_vh.description '\nwith single-track vehicle model & Liniger params'];
%% from Parameter Study (HockenheimShort, SL & SCR)
cfg_vh.p.Q = 1.5; % or even more?2.6 for maximum aggressive but close to instable; % weight for maximization of position on track
cfg_vh.p.R = diag([90 90]); % 41 for maximum aggrasion: 14.6s. 90: 15.1 % weight for control changes over time
cfg_vh.p.trust_region_size = 1.6; % [m] adds/subtracts to position (SL only)
%% Model
% CAVE: model params should match across controller and simulation model
cfg_vh.model_controller_handle = @model.vehicle.SingleTrack;
cfg_vh.modelParams_controller = model.vehicle.SingleTrack.getParamsLinigerRC_1_43_WithLinigerBounds();
cfg_vh.model_simulation_handle = cfg_vh.model_controller_handle;
cfg_vh.modelParams_simulation = model.vehicle.SingleTrack.getParamsLinigerRC_1_43_WithLinigerBounds();
end
🎉3参考文献
部分理论来源于网络,如有侵权请联系删除。
🌈4 Matlab代码实现
🎁完整资源、论文复现、期刊合作、论文辅导及科研仿真定制事宜点击:
👉👉👉本文完整资源下载
