news 2026/10/15 17:46:01

基于Prescan、CarSim和Simulink的弯道超车避撞联合仿真

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Prescan、CarSim和Simulink的弯道超车避撞联合仿真

prescan,carsim,simulink三软件联合仿真,实现弯道超车,避撞前方机动车,使用frent坐标系下五次多项式规划加模型预测控制,有横向轨迹跟踪对比图,仿真图。 可包调试运行。 需要安装软件版本为,matlab2020b以上,carsim2020.0,prescan8.5。

在自动驾驶领域,车辆的路径规划与避撞控制是关键技术。今天咱就来聊聊如何通过Prescan、CarSim和Simulink三软件联合仿真,实现弯道超车并避撞前方机动车,这里用到了Frent坐标系下五次多项式规划加模型预测控制,最后还有横向轨迹跟踪对比图和仿真图呈现哦,而且包调试运行。不过在开始前,得确保安装软件版本为matlab2020b以上,carsim2020.0,prescan8.5 。

一、整体思路

  1. Frent坐标系下五次多项式规划:在复杂的弯道场景中,传统笛卡尔坐标系不太方便描述车辆轨迹。Frent坐标系则以道路中心线为参考,能更灵活地规划路径。五次多项式因其具有足够的自由度,可以很好地满足起始点和终点的位置、速度及加速度等边界条件。

下面是简单示意如何构建五次多项式路径规划的代码(这里用Python示意,实际在项目中可能用Matlab语言结合相关库实现):

import numpy as np import matplotlib.pyplot as plt # 定义起始点和终点条件 start_s = 0 start_d = 0 start_d_dot = 0 start_d_ddot = 0 end_s = 100 end_d = 5 end_d_dot = 0 end_d_ddot = 0 # 构建五次多项式系数矩阵 A = np.array([ [1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0], [1, end_s, end_s**2, end_s**3, end_s**4, end_s**5], [0, 1, 2*end_s, 3*end_s**2, 4*end_s**3, 5*end_s**4], [0, 0, 2, 6*end_s, 12*end_s**2, 20*end_s**3] ]) b = np.array([start_d, start_d_dot, start_d_ddot, end_d, end_d_dot, end_d_ddot]) # 求解系数 coefficients = np.linalg.solve(A, b) # 生成路径点 s_vals = np.linspace(start_s, end_s, 100) d_vals = np.polyval(coefficients, s_vals) plt.plot(s_vals, d_vals) plt.xlabel('s (along the reference line)') plt.ylabel('d (lateral distance)') plt.title('五次多项式路径规划示例') plt.show()

代码分析:这段代码首先定义了起始点和终点在Frent坐标系下的位置、速度和加速度信息。然后构建了一个系数矩阵A和条件向量b,通过np.linalg.solve求解出五次多项式的系数。最后,在一定范围内生成路径点并绘制出路径。

  1. 模型预测控制(MPC):规划好路径后,得让车辆能沿着规划的轨迹行驶,这就用到MPC。MPC通过建立车辆的动力学模型,预测车辆未来的状态,并根据预测结果和目标轨迹不断优化控制输入(如方向盘转角、油门、刹车等)。

在Matlab中利用MPC工具箱实现简单的车辆横向控制的代码片段如下(简化示意):

% 车辆参数 L = 2.8; % 轴距 Ts = 0.1; % 采样时间 % 离散化车辆动力学模型 A = [1 Ts 0 0; 0 1 0 0; 0 0 1 Ts; 0 0 0 1]; B = [0; Ts/L; 0; 1/L]; C = [1 0 0 0; 0 0 1 0]; sys = ss(A, B, C, 0, Ts); % 定义MPC控制器 mpcObj = mpc(sys); mpcObj.MV(1).RateMin = -0.1; mpcObj.MV(1).RateMax = 0.1; mpcObj.MV(1).Min = -0.5; mpcObj.MV(1).Max = 0.5; mpcObj.OV(1).SoftMax = 1; mpcObj.OV(1).SoftMaxPenalty = 100;

代码分析:这里先定义了车辆的基本参数,如轴距L和采样时间Ts。接着离散化车辆动力学模型,得到状态空间矩阵A、B、C。然后利用这些信息创建MPC控制器对象mpcObj,并对控制输入(这里是方向盘转角相关量)设置了变化率限制、上下限等约束,对输出变量设置了软约束和惩罚系数。

二、三软件联合仿真设置

  1. Prescan:主要用于搭建场景,比如设置弯道、前方机动车等元素。在Prescan中创建一个包含弯道的道路场景,并放置目标车辆和前方障碍物车辆。同时,配置车辆的传感器,例如毫米波雷达,用于检测前方车辆的位置和速度等信息。
  2. CarSim:提供精确的车辆动力学模型。将Prescan中车辆的相关参数传递给CarSim,CarSim根据输入的控制信号(如方向盘转角、油门、刹车)计算车辆的实际运动状态,如位置、速度、加速度等,并将这些信息反馈给Prescan和Simulink。
  3. Simulink:作为控制算法实现的平台。将前面提到的Frent坐标系下五次多项式规划和MPC控制算法在Simulink中搭建模型。接收来自Prescan的传感器信息和CarSim的车辆状态信息,经过算法处理后输出控制信号给CarSim。

三、仿真结果

  1. 横向轨迹跟踪对比图:可以清晰看到规划轨迹与实际车辆行驶轨迹的对比。在理想情况下,实际轨迹应紧密跟随规划轨迹。如果存在偏差,可分析是算法参数问题还是车辆动力学模型与实际差异导致的。通过对比图能直观评估控制算法的跟踪性能。
  2. 仿真图:展示整个弯道超车避撞过程的动态画面。从车辆接近弯道、开始超车,到成功避开前方机动车的全过程,能更全面地观察车辆的运动状态和周围环境的变化。

总之,通过Prescan、CarSim和Simulink的联合仿真,结合Frent坐标系下五次多项式规划和模型预测控制,我们能够有效实现弯道超车并避撞前方机动车的功能,为自动驾驶技术的研究提供了有力的验证手段。而且包调试运行,大家可以放心上手实践。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 17:02:47

基于Springboot的社区共享充电宝租赁管理系统

社区共享充电宝租赁管理系统课题背景随着移动互联网的快速发展和智能终端的普及,手机、平板等电子设备已成为人们日常生活中不可或缺的工具。然而,电池续航问题始终是制约用户体验的关键因素之一。在公共场所,用户常常面临设备电量不足的困扰…

作者头像 李华
网站建设 2026/10/11 2:56:45

App测试时常用的adb命令

adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具,可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作&#xff0…

作者头像 李华
网站建设 2026/10/14 3:18:47

必看!青年拔尖人才支持计划项目优化申报策略与重要注意事项

一、青年拔尖人才支持计划项目优化申报策略善用多重渠道:除单位推荐外,留意是否开放“专家举荐”或“个人自荐”渠道。主动沟通:与本单位负责推荐的部门(如学院科研办、学校人事处)保持积极沟通,确保信息同…

作者头像 李华
网站建设 2026/10/15 8:20:19

实邦电子能成为电子产品开发的优质推荐供应商吗?

实邦电子:电子产品开发的优质推荐供应商在竞争激烈的电子产品开发领域,上海实邦电子科技有限公司以其卓越的表现,有足够的实力成为优质推荐供应商。接下来,我们从多个方面来深入了解实邦电子。公司简介:十六载砥砺前行…

作者头像 李华
网站建设 2026/10/13 8:31:15

俄罗斯发动大规模空袭,袭击引发多处火灾!

当地时间21日,乌克兰敖德萨州州长奥列格基佩尔通报称,过去一天,俄罗斯对敖德萨州南部地区的交通、港口和工业基础设施发动大规模空袭。 袭击引发多处火灾,造成财产损失,但未造成人员伤亡。 当天,乌克兰总…

作者头像 李华
网站建设 2026/10/13 14:20:50

python + requests实现的接口自动化测试

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 框架详细教程前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和…

作者头像 李华