当前位置: 首页 > news >正文

探索自适应巡航控制(ACC)的奇妙世界

自适应巡航控制(ACC),上层控制器采用MPC算法,下层控制器采用标定法。 该ACC接入了Carsin中的GPS,在大地坐标系的基础上设计了MPC,可以在此基础上,加入规划层,实现超车等功能。 此外对跟随车辆,切入,切出,三种工况进行了仿真。 最后,配备有详细的说明文档,其中有详细的MPC推导,代码有注释,并与文档中的公式对应。 大致情况见图片。

嘿,各位技术宅们!今天来聊聊超有趣的自适应巡航控制(ACC)。咱们这个 ACC 可不一般,上层控制器用的是 MPC 算法,下层控制器则采用标定法,这种搭配就像给汽车安上了一对智能翅膀。

先说说上层的 MPC 算法。MPC,也就是模型预测控制,它就像是汽车的智慧大脑,能根据各种预测信息提前规划好车辆的行驶状态。比如说,我们在 Carsin 中接入了 GPS,基于大地坐标系来设计 MPC。代码大概像这样(Python 示例):

import numpy as np # 定义一些系统参数 A = np.array([[1, 1], [0, 1]]) # 状态转移矩阵 B = np.array([[0.5], [1]]) # 控制输入矩阵 Q = np.array([[1, 0], [0, 1]]) # 状态权重矩阵 R = np.array([[1]]) # 控制输入权重矩阵 # 预测时域 N = 10 def mpc(state, ref): # 初始化 x_pred = np.zeros((2, N + 1)) u_pred = np.zeros((1, N)) x_pred[:, 0] = state # 滚动优化求解 for k in range(N): # 这里可以添加更复杂的预测模型 x_pred[:, k + 1] = A.dot(x_pred[:, k]) + B.dot(u_pred[:, k]) cost = np.trace((x_pred[:, k + 1] - ref).T.dot(Q).dot(x_pred[:, k + 1] - ref)) + u_pred[:, k].T.dot(R).dot(u_pred[:, k]) # 简单的优化逻辑,实际可能需要更复杂算法 u_pred[:, k] = np.linalg.inv(B.T.dot(Q).dot(B) + R).dot(B.T.dot(Q).dot(ref - A.dot(x_pred[:, k]))) return u_pred[0, 0]

在这段代码里,我们先定义了系统的一些基本矩阵,比如状态转移矩阵A、控制输入矩阵B等,这些矩阵是 MPC 算法的基础。然后在mpc函数里,我们在预测时域N内进行滚动优化,计算每个时刻的控制输入u_pred,目标是最小化状态和参考状态之间的误差,同时考虑控制输入的成本。

而且,咱们还可以在这个基础上加入规划层,实现像超车这样超酷的功能。想象一下,汽车能自己规划路线完成超车,是不是很炫?

自适应巡航控制(ACC),上层控制器采用MPC算法,下层控制器采用标定法。 该ACC接入了Carsin中的GPS,在大地坐标系的基础上设计了MPC,可以在此基础上,加入规划层,实现超车等功能。 此外对跟随车辆,切入,切出,三种工况进行了仿真。 最后,配备有详细的说明文档,其中有详细的MPC推导,代码有注释,并与文档中的公式对应。 大致情况见图片。

再看看下层的标定法。标定法就是给下层控制器设定一些固定的参数,让它根据实际情况做出合适的反应。虽然不像 MPC 那么“聪明”,但它稳定可靠,就像坚实的后盾。

另外,对跟随车辆、切入、切出这三种工况进行了仿真。通过仿真,我们能更好地验证 ACC 在各种复杂情况下的性能。比如说,在跟随车辆工况仿真中,我们可以这样写代码(Matlab 示例):

% 设定初始参数 v_lead = 30; % 前车速度 v_follow = 25; % 跟随车速度 distance = 50; % 初始间距 % 仿真步长和时间 dt = 0.1; T = 10; time = 0:dt:T; for k = 1:length(time) % 这里可以调用上面类似的MPC算法计算跟随车加速度 a_follow = mpc([v_follow; distance], [v_lead; 60]); v_follow = v_follow + a_follow * dt; distance = distance + (v_lead - v_follow) * dt; % 记录数据用于绘图等分析 v_follow_record(k) = v_follow; distance_record(k) = distance; end

这段 Matlab 代码简单模拟了跟随车辆的工况,设定了前车和跟随车的初始速度、间距等参数,在每个仿真步长里,调用类似的 MPC 算法计算跟随车加速度,更新速度和间距,并记录数据以便后续分析。

最后,还配备了详细的说明文档,里面有详细的 MPC 推导过程。代码也都带有注释,和文档里的公式对应得严丝合缝,方便大家学习和理解。

从图片上大致能看到整个系统的架构和一些关键数据,这就像是一幅指引我们探索 ACC 奥秘的地图。希望通过今天的分享,大家对这个超有趣的 ACC 系统有了更深入的了解!欢迎一起交流探讨。

http://www.cnnetsun.cn/news/1314867.html

相关文章:

  • 分布式驱动电动汽车模型:前轮主动转向与直接横摆力矩联合控制开发之路
  • 代码随想录算法训练营第四十天|188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费。
  • 【功能安全】TC3xx芯片EVADC功能安全需求及一些软硬件设计注意事项
  • 英伟达 20 亿美元押注 Nebius 共筑智能体时代超大规模 AI 云平台
  • CLion开发STM32(三)DSP库移植
  • 电脑端AI全攻略:2026年豆包、Gemini、GPT、Claude一键调用,kulaai.cn太省心
  • django基于Spark的温布尔登特色赛赛事数据分析可视化平台
  • 基于微信小程序的车险在线理赔系统[小程序]-计算机毕业设计源码+LW文档
  • BeanFactory与FactoryBean区别详解
  • 吐血推荐! 一键生成论文工具 千笔AI VS 笔捷Ai,专为本科生打造
  • Coursera 6 大 AI 爆款课深度评测!告别理论堆砌,初级开发者也能秒懂选课攻略,简历瞬间加分!
  • 国产AI驱动的超自动化巡检“龙虾”来了
  • 代码随想录 Day6
  • C++绘图:WindowsAPI 最后一代
  • 统计人专属!手把手教你 DIY 专属 VBA 统计插件000→窗体篇
  • 2026 AI风口下,普通人(含程序员/小白)可落地的高薪岗位指南
  • 计科-Linux4-中文件查看命令的详细介绍「整理」
  • PSO粒子群算法优化半主动悬架PID参数控制+被动悬架对比仿真
  • 小程序构建npm时报错应该如何解决
  • Algorithm - Quick Sort(Java)
  • Spring Cloud Circuit Breaker 2.0.0 M1(Milestone 1)是 Spring Cloud 官方在 2022 年初发布的
  • 计算机毕业设计Hadoop农产品价格预测 农产品销量分析 农产品价格分析 农产品可视化 农产品数据分析 农产品爬虫 农产品大数据 大数据毕设
  • Java程序员转行AI大模型:避坑指南+落地路径
  • 2026年C盘空间不足怎么清理临时文件?一键清理工具安全吗?
  • 【实时Linux工业PLC解决方案系列】第三十三篇 - 实时Linux PLC安全PLC功能实现
  • 好写作AI:本科生实验记录变论文初稿的4个神操作,理工科狂喜!
  • Rockstar WebAssembly部署终极指南:5步将摇滚程序带到浏览器
  • 终极无线安全测试指南:Social-Engineer Toolkit的airbase-ng和airmon-ng集成方案
  • Apache Weex移动端文件操作终极指南:快速实现读写本地文件
  • 为什么选择React Native Firebase Starter?10个核心优势深度剖析