news 2026/6/23 4:43:35

直接给各位上点轨迹跟踪的干货。这次咱们玩个能自定义参考轨迹的二自由度MPC控制器,重点说说怎么让这铁疙瘩在不同路况下都跟得稳当。先整杯咖啡,咱们边调参边唠

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接给各位上点轨迹跟踪的干货。这次咱们玩个能自定义参考轨迹的二自由度MPC控制器,重点说说怎么让这铁疙瘩在不同路况下都跟得稳当。先整杯咖啡,咱们边调参边唠

可自定义期望轨迹的二自由动力学 MPC 跟踪控制 可以外部导入轨迹 知道x y s 即纵向位置 横向位置 位移量即可 请注意= 要跟踪不同的轨迹,同一参数可能效果不一样 因此需要自己调参数保证控制效果最佳: Q矩阵增大可以保证侧向位置跟踪效果变好, R 矩阵增大可以保证前轮转角曲线效果变好。 同时调整输出值边界的约束 carsim 版本 2019.0

二自由度模型这玩意儿大家都熟吧?横向运动方程写成离散状态空间就是:

% 模型参数 m = 1573; % 质量 Iz = 2873; % 转动惯量 lf = 1.34; % 前轴距 lr = 1.43; % 轮胎侧偏刚度 Ts = 0.1; % 控制周期 A = [1, Ts; -2*(Caf+Car)/(m*vx)*Ts, 1-2*(lf*Caf-lr*Car)/(Iz*vx)*Ts]; B = [0; 2*Caf/(m*vx)*Ts];

重点在状态矩阵里的速度项vx——这货要是没处理好,换条轨迹准翻车。实测发现参考轨迹曲率越大,预测时域得适当缩短,不然求解器直接给你摆烂。

调参这事真得看手感,上周在秋名山实测时发现个邪乎现象:同一组Q、R参数在直道表现完美,到了发夹弯直接推头。后来悟了——Q矩阵里给横向误差的权重得跟着曲率动态变化。举个栗子:

# 动态权重调整示例 curvature = abs(ref_traj['kappa'][current_index]) Q_scale = 1 + 10 * curvature # 曲率越大,横向误差权重越高 Q = np.diag([Q_scale, 0.1]) # 状态权重矩阵 R = np.array([[0.01]]) # 控制量权重

这么整之后,方向盘的修正动作明显更跟脚。不过要注意R矩阵别调太小,上次手贱设成0.001,结果前轮摆角曲线抖得跟帕金森似的。

约束边界这事容易被新手忽略。实测发现输出约束不能只设固定值:

// 根据车速调整前轮转角约束 double delta_max = 0.6 - 0.15 * fabs(current_speed/40); if(delta_max < 0.3) delta_max = 0.3; // 设置MPC约束 mpc.setConstraint(-delta_max, delta_max);

速度越快,允许的最大转角越小,这招对防止高速甩尾贼管用。不过要注意别矫枉过正,有次把delta_max压到0.2,结果在U型弯直接冲出赛道。

最后给个CarSim联调的小技巧:把预测时域内的参考轨迹可视化到CarSim Scene中,效果拔群!具体操作是在Simulink里加个UDP发送模块,把预测轨迹打包发到CarSim的3D显示模块。调试时看着预测轨迹和实际轨迹慢慢重合,那成就感比通关老头环还带劲。

调完参记得做暴力测试——拿正弦波轨迹、阶跃轨迹、蛇形轨迹各跑一遍。别信仿真数据,真车测试时地面附着系数变化能让你参数当场破功。最近发现个玄学规律:Q矩阵权重开三次方后再用,鲁棒性莫名变好,原理还没搞懂,但真的好使。

好了,代码扔Github了,自己去扒拉。记住参数没有银弹,多调多翻车才是正道。下次聊聊怎么把MPC预测域玩出花,保准让你们方向盘的响应比女朋友还贴心(如果有的话)。

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

Jellyfin Android TV客户端音频播放异常问题深度解析

作为一款优秀的开源媒体服务器客户端&#xff0c;Jellyfin Android TV在音频播放方面偶尔会出现一些令人困扰的问题。很多用户反馈在播放音频内容时&#xff0c;会遇到突然中断、音质异常或无法正常播放等情况。今天咱们就来深入分析这个问题的来龙去脉。 【免费下载链接】jell…

作者头像 李华
网站建设 2026/6/23 10:12:59

CTR预测系统构建实战:从FM到DeepFM的推荐算法演进之路

CTR预测系统构建实战&#xff1a;从FM到DeepFM的推荐算法演进之路 【免费下载链接】d2l-en d2l-ai/d2l-en: 是一个基于 Python 的深度学习教程&#xff0c;它使用了 SQLite 数据库存储数据。适合用于学习深度学习&#xff0c;特别是对于需要使用 Python 和 SQLite 数据库的场景…

作者头像 李华
网站建设 2026/6/23 19:53:25

从零玩转RT-Thread(22):定时器底层机制揭秘

由于定时器模拟实现的一些机制&#xff0c;将导致我们在使用时容现某些低级错误。为了更好地理解这些错误&#xff0c;本小节介绍RT-Thread定时器的基本设计原理。 注&#xff1a;本小节只对其设计做比较简单的介绍&#xff0c;目的是更好地掌握API的使用。 定时器是如何被触…

作者头像 李华
网站建设 2026/6/22 21:29:41

B站缓存视频转换完整教程:m4s-converter高效管理本地视频

B站缓存视频转换完整教程&#xff1a;m4s-converter高效管理本地视频 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的情况&#xff1a;精心缓存的B站视频突…

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

解锁企业级后台管理:用Vue.js和Element-UI构建高效前端解决方案

解锁企业级后台管理&#xff1a;用Vue.js和Element-UI构建高效前端解决方案 【免费下载链接】renren-fast-vue 项目地址: https://gitcode.com/gh_mirrors/ren/renren-fast-vue 在当今快速发展的企业数字化浪潮中&#xff0c;一个高效、灵活且易于维护的后台管理系统对…

作者头像 李华