carsim+simulink联合仿真实现变道 包含路径规划算法+mpc轨迹跟踪算法 带规划轨迹可视化 可以适用于弯道道路,弯道车道保持,弯道变道 Carsim2020.0

最近在研究车辆在弯道场景下的变道模拟,利用 Carsim 2020.0 和 Simulink 联合仿真,实现了一套包含路径规划算法与 MPC 轨迹跟踪算法,还能把规划轨迹可视化的系统,今天就来跟大家分享一下。

一、整体思路

在弯道场景下进行变道,我们需要先通过路径规划算法确定车辆变道的期望路径,然后利用 MPC 轨迹跟踪算法让车辆尽可能地沿着这条规划好的路径行驶。同时,通过 Carsim 提供的高精度车辆动力学模型和 Simulink 的控制算法搭建能力,实现两者的联合仿真,并且可视化整个规划轨迹,便于分析和验证。

二、路径规划算法

路径规划算法是确定车辆从当前位置到目标位置(比如从一条车道变到另一条车道)的轨迹。这里我们以一种简单的基于几何的路径规划算法为例。

% 假设车辆当前位置和目标位置已知
current_x = 0;
current_y = 0;
target_x = 100;
target_y = 5; % 这里假设目标位置是 x 方向 100 米处,y 方向偏移 5 米,代表变道目标

% 生成一条简单的曲线作为规划路径
num_points = 100;
t = linspace(0, 1, num_points);
planned_x = current_x + (target_x - current_x) * t;
planned_y = current_y + (target_y - current_y) * t.^2; % 这里用二次函数生成一条平滑曲线

% 这里只是简单示例,实际应用中可能需要考虑更多因素,比如车辆动力学限制、道路边界等

在这段代码中,我们假设了车辆当前位置和目标位置,然后利用 linspace 函数生成了一组时间序列 t,通过对 xy 坐标进行不同的计算,得到了一条二次曲线作为规划路径。y 坐标使用 t.^2 是为了让曲线更平滑,符合车辆变道的实际情况。实际应用中,肯定需要考虑更多因素,比如车辆的动力学限制、道路的边界条件等等。

三、MPC 轨迹跟踪算法

MPC(Model Predictive Control,模型预测控制)是一种先进的控制策略,在车辆轨迹跟踪中表现出色。它通过预测车辆未来的状态,并在每个控制周期内优化控制输入,使车辆尽可能地跟踪规划路径。

在 Simulink 中搭建 MPC 模块,需要先确定车辆的动力学模型。假设我们使用一个简单的自行车模型来描述车辆动力学:

\[

\begin{align*}

\dot{x} &= v \cos(\theta)\\

\dot{y} &= v \sin(\theta)\\

\dot{\theta} &= \frac{v}{L} \tan(\delta)\\

\dot{v} &= a

\end{align*}

\]

其中,\((x, y)\) 是车辆位置,\(\theta\) 是车辆航向角,\(v\) 是车速,\(L\) 是车辆轴距,\(\delta\) 是前轮转向角,\(a\) 是车辆加速度。

在 Simulink 中实现 MPC 时,关键步骤如下:

  1. 预测模型:根据上述车辆动力学模型,预测车辆未来几个时间步的状态。
  2. 目标函数:定义一个目标函数,衡量车辆预测状态与规划路径的偏差,同时考虑控制输入的变化率(比如转向角变化不能太剧烈)。
  3. 约束条件:添加一些约束条件,比如转向角的物理限制、车速限制等。

下面是一段简单的 Matlab 代码来初始化 MPC 参数:

% MPC 参数设置
N = 10; % 预测时域
Ts = 0.1; % 采样时间
Q = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]; % 状态权重矩阵
R = [0.1; 0.1]; % 控制输入权重矩阵
umin = [-0.3; -5]; % 控制输入下限
umax = [0.3; 5]; % 控制输入上限

这里设置了预测时域 N,采样时间 Ts,状态权重矩阵 Q 和控制输入权重矩阵 R,以及控制输入的上下限 uminumax。这些参数的调整对于 MPC 的性能至关重要,需要根据实际情况进行反复试验和优化。

四、Carsim 与 Simulink 联合仿真

  1. 在 Carsim 中设置车辆模型:打开 Carsim 2020.0,选择合适的车辆模型,并设置车辆参数,如质量、轴距、轮胎特性等。这些参数将直接影响车辆在仿真中的动力学表现。
  2. Simulink 接口设置:在 Carsim 中生成 Simulink 接口文件,将车辆模型导入到 Simulink 中。同时,在 Simulink 中搭建路径规划模块、MPC 轨迹跟踪模块,并将它们与 Carsim 车辆模型连接起来。
  3. 仿真运行:设置好仿真参数后,运行联合仿真。在仿真过程中,路径规划模块生成期望路径,MPC 模块根据车辆当前状态和期望路径计算控制输入(如转向角和加速度),并将这些控制信号发送给 Carsim 车辆模型,车辆模型根据接收到的控制信号进行动力学响应。

五、规划轨迹可视化

为了直观地观察车辆的变道过程和规划轨迹的跟踪效果,我们可以利用 Matlab 的绘图功能进行可视化。

% 假设在仿真过程中记录了车辆实际行驶的位置 (actual_x, actual_y)
figure;
plot(planned_x, planned_y, 'b--', 'DisplayName', 'Planned Path');
hold on;
plot(actual_x, actual_y, 'r', 'DisplayName', 'Actual Path');
legend;
xlabel('X Position (m)');
ylabel('Y Position (m)');
title('Path Planning and Tracking Visualization');

这段代码使用 plot 函数分别绘制规划路径和实际行驶路径,蓝色虚线表示规划路径,红色实线表示实际路径。通过这个可视化,我们可以很清楚地看到车辆是否按照规划路径行驶,以及两者之间的偏差情况。

通过 Carsim 和 Simulink 的联合仿真,结合路径规划算法和 MPC 轨迹跟踪算法,我们成功实现了弯道场景下的车辆变道模拟,并且通过可视化功能对规划轨迹进行了有效的分析和验证。希望这篇博文能对正在研究类似问题的小伙伴们有所帮助,大家一起交流学习呀!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐