zl程序教程

您现在的位置是:首页 >  后端

当前栏目

用于自动驾驶汽车赛车中实时最优轨迹规划的顺序凸规划方法(Matlab代码实现)

2023-09-14 09:05:20 时间

 👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

自动驾驶汽车赛车中轨迹规划的优化问题具有非线性和非凸性的特点。通常不是解决这些优化问题,而是求解凸近似以实现高更新率。我们提出了一种基于非线性单轨车辆模型和Pacejka的神奇轮胎公式的实时模型预测控制(MPC)轨迹规划器,用于自动驾驶汽车赛车。在制定了一般的非凸轨迹优化问题之后,我们使用顺序凸规划(SCP)形成了凸近似。最先进的技术使用顺序线性化(SL)凸化轨道约束,这是一种放宽约束的方法。松弛优化问题的解在非凸优化问题中不能保证可行。我们提出了顺序凸约束(SCR)作为凸化轨道约束的方法。SCR 保证生成的解决方案在非凸优化问题中是可行的。我们展示了受限优化问题解决方案的递归可行性。MPC在模拟中在霍根海姆赛道的缩放版本上进行评估。结果表明,使用SCR的MPC比使用SL的MPC产生更快的单圈时间,同时仍然具有实时能力。

  • Matlab
    • 版本:推荐 R2021a,最低 R2019a
    • 符号数学工具箱
    • 统计和机器学习工具箱(仅用于评估)
  • 求解
    • 推荐的 IBM ILOG CPLEX 优化工作室 12.10
    • 或者,MATLAB通过“符号数学工具箱”quadprog

📚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 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] P. Scheffe, T. Henneken, M. Kloock, B. Alrifaee. "Sequential Convex Programming Methods for Real-time Optimal Trajectory Planning in Autonomous Vehicle Racing"