news 2026/6/25 11:13:50

自动驾驶之路径跟踪:Carsim/Simulink 联合仿真与运动学 MPC 算法实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶之路径跟踪:Carsim/Simulink 联合仿真与运动学 MPC 算法实践

自动驾驶,carsim/simulink联合仿真,基于运动学mpc算法的圆形路径跟踪控制,配套视频详细讲解原理和代码。 需要自定义路径跟踪的,可以私或去主页自定义路径跟踪的程序。 carsim2019,matlab2018。

在自动驾驶领域,路径跟踪是核心技术之一。今天就跟大家分享一下基于运动学 MPC(模型预测控制)算法实现圆形路径跟踪控制,并通过 Carsim/Simulink 联合仿真来验证效果,同时还准备了配套视频详细讲解原理和代码,相信会对这块感兴趣的小伙伴们有所帮助。

一、Carsim 和 Simulink 环境

本次使用的是 Carsim2019 和 Matlab2018 版本。Carsim 作为一款专业的车辆动力学仿真软件,能够提供非常精确的车辆模型。而 Simulink 则是 Matlab 中强大的系统建模与仿真工具,两者结合,为自动驾驶算法的验证提供了理想平台。

二、运动学 MPC 算法

运动学 MPC 算法是实现路径跟踪的关键。它通过建立车辆运动学模型,预测车辆未来的状态,并根据预测结果优化控制输入,使得车辆尽可能沿着期望路径行驶。

1. 车辆运动学模型

以简单的自行车模型为例,其运动学方程如下:

\[

\begin{cases}

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

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

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

\end{cases}

\]

其中,\((x, y)\) 是车辆在平面坐标系中的位置,\(\theta\) 是车辆的航向角,\(v\) 是车辆速度,\(L\) 是车辆轴距,\(\delta\) 是前轮转向角。

2. MPC 优化问题

在每个采样时刻 \(k\),MPC 算法需要求解以下优化问题:

\[

\begin{align*}

\min{\Delta \delta{k+i|k}, \Delta v{k+i|k}} & \sum{i = 1}^{Np} (x{k+i|k} - x{ref, k+i})^2 + (y{k+i|k} - y{ref, k+i})^2 + \theta{k+i|k}^2 + \\

& \sum{i = 0}^{Nc - 1} \lambda{\delta} \Delta \delta{k+i|k}^2 + \lambda{v} \Delta v{k+i|k}^2

\end{align*}

\]

约束条件包括车辆运动学模型约束、控制输入约束等。这里 \(Np\) 是预测时域,\(Nc\) 是控制时域,\(\lambda{\delta}\) 和 \(\lambda{v}\) 是权重系数,\((x{ref, k+i}, y{ref, k+i})\) 是期望路径上的参考点。

3. 代码实现示例(Matlab)

% MPC 参数设置 Np = 10; % 预测时域 Nc = 2; % 控制时域 lambda_delta = 0.1; % 转向角权重 lambda_v = 0.01; % 速度权重 % 车辆参数 L = 2.9; % 轴距 % 初始化状态 x = 0; y = 0; theta = 0; v = 5; % 初始位置、航向角和速度 delta = 0; % 初始转向角 % 期望圆形路径参数 r = 10; % 半径 center_x = 0; center_y = 0; % 圆心位置 for k = 1:100 % 仿真步数 % 生成期望路径点 t = k * 0.1; % 时间 x_ref = center_x + r * cos(t); y_ref = center_y + r * sin(t); % 构建 MPC 优化问题 prob = optimproblem('ObjectiveSense','min'); % 控制输入变量 delta_k = optimvar('delta_k', Nc, 1, 'LowerBound', -pi/4, 'UpperBound', pi/4); v_k = optimvar('v_k', Nc, 1, 'LowerBound', 0, 'UpperBound', 10); % 状态变量 x_k = optimvar('x_k', Np + 1, 1); y_k = optimvar('y_k', Np + 1, 1); theta_k = optimvar('theta_k', Np + 1, 1); % 初始状态约束 prob.Constraints.initial_state = [x_k(1) == x; y_k(1) == y; theta_k(1) == theta; v_k(1) == v]; % 运动学模型约束 for i = 1:Np prob.Constraints.dynamics(i) = [ x_k(i + 1) == x_k(i) + v_k(i) * cos(theta_k(i)) * 0.1; y_k(i + 1) == y_k(i) + v_k(i) * sin(theta_k(i)) * 0.1; theta_k(i + 1) == theta_k(i) + (v_k(i) / L) * tan(delta_k(i)) * 0.1 ]; } % 目标函数 obj = sum((x_k(2:end) - x_ref).^2) + sum((y_k(2:end) - y_ref).^2) + sum(theta_k(2:end).^2) +... lambda_delta * sum(delta_k.^2) + lambda_v * sum(v_k.^2); prob.Objective = obj; % 求解优化问题 sol = solve(prob); % 获取控制输入 delta = sol.delta_k(1); v = sol.v_k(1); % 更新车辆状态 x = x + v * cos(theta) * 0.1; y = y + v * sin(theta) * 0.1; theta = theta + (v / L) * tan(delta) * 0.1; % 绘图显示 plot(x_ref, y_ref, 'r--'); hold on; plot(x, y, 'bo'); drawnow; end

这段代码实现了基于运动学 MPC 算法的圆形路径跟踪。首先设置了 MPC 参数和车辆参数,然后在每个仿真步中,生成期望路径点,构建并求解 MPC 优化问题,得到控制输入并更新车辆状态,最后实时绘图显示车辆跟踪路径和期望路径。

三、Carsim/Simulink 联合仿真

在 Simulink 中搭建基于运动学 MPC 算法的路径跟踪控制器模型,并与 Carsim 模型进行联合仿真。具体步骤如下:

  1. 在 Carsim 中设置车辆参数和初始条件,输出车辆状态信息。
  2. 在 Simulink 中构建 MPC 控制器模型,接收 Carsim 输出的车辆状态,计算控制输入(转向角和速度)并反馈给 Carsim。
  3. 连接两者之间的信号,设置仿真参数,运行联合仿真。

四、自定义路径跟踪

如果有小伙伴需要自定义路径跟踪,无论是直线、曲线还是更复杂的轨迹,可以私信我或者去我的主页获取自定义路径跟踪的程序。我们可以一起探讨如何根据不同的路径需求,调整 MPC 算法和相关参数,实现更精准的路径跟踪。

最后,别忘了去看配套视频,里面对整个原理和代码都有详细讲解,相信能让大家对自动驾驶路径跟踪技术有更深入的理解。希望这篇博文对大家在自动驾驶领域的学习和研究有所帮助,欢迎交流讨论!

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

【最新源码】基于Java医院药品管理系统的设计与实现 025

摘 要 随着医疗行业信息化的发展,作为合理用药、管理医院的重要工具之一的医院药品管理系统越来越受到重视,但是现阶段很多医院使用的药品管理系统还存在诸多不尽人意的原因,或者系统功能简单,只是简单的进出入库登记&#xff…

作者头像 李华
网站建设 2026/6/23 22:01:48

Cocos creator如何使用onCollisionEnter或者onTriggerEnter

其实使用和unity基本一样,但是代码写法有点不一样,unity的话只用直接写事件函数 onTriggerEnter或者 onCollisionEnter就好,但是cocos不仅要写,还要在start方法里绑定start() {this.collider this.node.getComponent(Collider…

作者头像 李华
网站建设 2026/6/23 14:20:26

豆包大模型日均tokens使用量超50万亿,比去年同期增长超10倍

12月18日,火山引擎在FORCE原动力大会上正式发布豆包大模型1.8及音视频创作模型Seedance 1.5 pro。权威评测数据显示,豆包大模型在多模态理解、生成能力及Agent能力上,已跻身全球第一梯队。 据火山引擎总裁谭待介绍,截至今年12月&…

作者头像 李华
网站建设 2026/6/25 3:55:31

这才是项目经理「年终总结」的正确打开方式!

2025年已经接近尾声了,年终汇报如期而至。 今天小赛总结了一些写年终总结的关键要点和模板,让你一看就懂,一用就会。 1.先想明白:领导想看什么,你想表达什么?‌‌ 写年终总结之前,先不要着急…

作者头像 李华
网站建设 2026/6/25 2:02:42

这是一份动手学深度学习笔记!(附学习资料)

如果你正在学习深度学习,肯定听说过李沐老师的动手学深度学习,这是公认的经典之作这一期主要是给大家总结这个教程的大纲内容并给大家分享电子pdf、完整的教程视频、配套的课件源码以及学习笔记(如下图)需要的兄弟可以按照这个图的…

作者头像 李华