基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

具体内容包括:

  1. cpar文件和simulink文件,并有联合仿真步骤的演示操作视频

  2. carsim+simulink联合仿真实实现换道超车,包含换道决策,路径规划和轨迹跟踪,有直道和弯道超车两种。

  3. 包含路径规划算法+mpc轨迹跟踪算法可以适用于弯道道路,弯道车道保持,弯道变道86

  4. carsim内规划轨迹可视化,道路环境可以自定义,资料包里面有视频教学和算法讲解。
    在这里插入图片描述


    以下是一个基于 CarSimSimulink 联合仿真的车辆换道轨迹规划与轨迹跟踪模型的实现。该模型包括以下部分:

  5. 换道轨迹规划:在 Simulink 中生成平滑的换道轨迹。

  6. 轨迹跟踪控制:使用 PID 控制器或 MPC(模型预测控制)实现轨迹跟踪。

  7. CarSim 仿真:通过 CarSim 提供高精度的车辆动力学模型。


1. 系统概述

功能
  • 轨迹规划:生成平滑的换道轨迹(如五次多项式或正弦函数)。
  • 轨迹跟踪:通过控制器使车辆跟随规划的轨迹。
  • 联合仿真:Simulink 生成控制输入,CarSim 模拟车辆动力学行为。
关键技术
  • 轨迹规划:五次多项式插值、正弦函数等。
  • 轨迹跟踪控制:PID 控制器、MPC 控制器等。
  • 联合仿真接口:通过 Simulink-CarSim 接口实现数据交互。

在这里插入图片描述

2. MATLAB/Simulink 实现

主程序文件 (main_trajectory_planning_tracking.m)
clc; clear; close all;

% 初始化参数
dt = 0.01; % 时间步长
T = 10; % 仿真时间
t = 0:dt:T; % 时间向量

% 换道轨迹规划
laneChangeTrajectory = planLaneChangeTrajectory(t);

% 将轨迹传递给 Simulink
simin.time = t';
simin.signals.values = laneChangeTrajectory';
simin.signals.dimensions = [2, 1]; % [横向位置, 纵向位置]

% 设置 Simulink 参数
set_param('VehicleTrajectoryTracking', 'SimulationCommand', 'update');
set_param('VehicleTrajectoryTracking', 'StopTime', num2str(T));

% 运行 Simulink 模型
sim('VehicleTrajectoryTracking');

% 获取仿真结果
simout = out.simout.Data; % 从 Simulink 输出获取轨迹跟踪结果

% 绘图
figure;
plot(laneChangeTrajectory(:, 1), laneChangeTrajectory(:, 2), 'r--', 'LineWidth', 1.5);
hold on;
plot(simout(:, 1), simout(:, 2), 'b-', 'LineWidth', 1.5);
xlabel('纵向位置 (m)');
ylabel('横向位置 (m)');
legend('规划轨迹', '实际轨迹');
title('车辆换道轨迹规划与跟踪');
grid on;

在这里插入图片描述

换道轨迹规划函数 (planLaneChangeTrajectory.m)
function trajectory = planLaneChangeTrajectory(t)
    % 规划换道轨迹
    % 输入: 时间向量 t
    % 输出: 轨迹 [x, y] (纵向位置, 横向位置)
    
    % 参数
    v = 20; % 车速 (m/s)
    laneWidth = 3.5; % 车道宽度 (m)
    T = max(t); % 总时间
    
    % 纵向位置 (匀速行驶)
    x = v * t';
    
    % 横向位置 (五次多项式插值)
    coeffs = [0, 0, 0, 10*laneWidth/T^3, -15*laneWidth/T^4, 6*laneWidth/T^5];
    y = polyval(coeffs, t');
    
    % 轨迹矩阵
    trajectory = [x, y];
end

Simulink 模型 (VehicleTrajectoryTracking.slx)
1. 输入信号
  • 使用 From Workspace 模块加载规划的轨迹数据(simin)。
  • 输入信号格式为 [时间, 横向位置, 纵向位置]
2. 轨迹跟踪控制器
  • PID 控制器
    • 使用两个 PID 控制器分别控制横向和纵向误差。
    • 参数需要根据实际车辆模型进行调整。
  • MPC 控制器(可选):
    • 使用 MATLAB 的 MPC Toolbox 设计模型预测控制器。
    • 需要提供车辆的动力学模型作为预测模型。
3. CarSim 接口
  • 使用 Simscape MultibodyCarSim S-Function 模块与 CarSim 进行联合仿真。
  • 将 Simulink 的控制输入(如方向盘转角、油门、刹车)传递给 CarSim。
  • 从 CarSim 获取车辆状态(如位置、速度、加速度)。

PID 控制器实现 (pidController.m)
function controlInput = pidController(error, errorSum, lastError, Kp, Ki, Kd, dt)
    % PID 控制器
    % 输入:
    %   error: 当前误差
    %   errorSum: 累积误差
    %   lastError: 上一次误差
    %   Kp, Ki, Kd: PID 参数
    %   dt: 时间步长
    % 输出:
    %   controlInput: 控制输入
    
    % 计算 PID 控制输入
    P = Kp * error;
    I = Ki * errorSum * dt;
    D = Kd * (error - lastError) / dt;
    controlInput = P + I + D;
end

3. 功能说明

  1. 换道轨迹规划

    • 使用五次多项式生成平滑的换道轨迹,确保轨迹的连续性和可跟踪性。
  2. 轨迹跟踪控制

    • PID 控制器:简单易实现,适合线性系统。
    • MPC 控制器:考虑多变量约束和未来动态,适合复杂场景。
  3. CarSim 仿真

    • 提供高精度的车辆动力学模型,模拟真实车辆行为。
    • 支持复杂的道路条件和环境干扰。

4. 实验结果

运行上述代码后,程序会生成以下内容:

  1. 规划轨迹
    • 显示理想的换道轨迹。
  2. 实际轨迹
    • 显示车辆在 CarSim 中的实际运动轨迹。
  3. 误差分析
    • 分析横向和纵向误差,评估轨迹跟踪性能。

5. 注意事项

  1. MATLAB 工具箱依赖

    • 需要安装 Simulink、CarSim 接口、Control System Toolbox 和 MPC Toolbox。
  2. 参数调整

    • 根据实际车辆参数和仿真需求调整 PID 或 MPC 控制器的参数。
  3. 扩展功能

    • 可以引入障碍物检测与避障算法,增强换道安全性。
    • 支持多车道换道和复杂道路条件。

希望这段代码能够帮助你完成基于 CarSim 和 Simulink 的车辆换道轨迹规划与轨迹跟踪模型!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值