基于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语言结合相关库实现):

python 复制代码
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工具箱实现简单的车辆横向控制的代码片段如下(简化示意):

matlab 复制代码
% 车辆参数
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。接着离散化车辆动力学模型,得到状态空间矩阵 ABC。然后利用这些信息创建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坐标系下五次多项式规划和模型预测控制,我们能够有效实现弯道超车并避撞前方机动车的功能,为自动驾驶技术的研究提供了有力的验证手段。而且包调试运行,大家可以放心上手实践。

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

相关推荐
Chary20162 天前
opengl 着色器
opengl·着色器
ct97814 天前
Cesium高级特效与着色器开发全指南
前端·gis·cesium·着色器
vQAvXEsg19 天前
三菱FX5U四轴控制系统实战手记
着色器
梵尔纳多1 个月前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
Mars-xq1 个月前
godot 毛玻璃效果着色器shader
游戏引擎·godot·着色器
UTwelve1 个月前
【UE】材质与半透明 - 01.将半透明作为后期材质
ue5·材质·着色器
二狗哈2 个月前
Cesium快速入门29:CMZL数据格式加载
3d·状态模式·webgl·cesium·着色器·地图可视化
二狗哈2 个月前
Cesium快速入门27:GeoJson自定义样式
前端·cesium·着色器
二狗哈2 个月前
Cesium快速入门24:Appearance编写着色器修改外观
3d·webgl·cesium·着色器·地图可视化