news 2026/10/10 12:44:27

自动驾驶横纵向控制仿真分享:从零开始的探索之旅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶横纵向控制仿真分享:从零开始的探索之旅

自动驾驶横纵向控制,纵向采用pid控制,横向采用mpc控制,根据的是车辆二自由度车辆动力学模型,得到各矩阵之后在S函数里面进行编写,纵向参考百度Apollo纵向双环PID控制算法,横向参考百度Apollo中mpc控制算法编写,规划的轨迹为五次多项式函数形式。 控制效果:车辆侧向位移和纵向位移跟踪效果很好,纵向车速跟随也较好,但有一定的误差。 Matlab/Simulink版本:2021a Carsim版本:2019.0 有完整的仿真演示运行视频,小白也能学会。 提供参考资料

最近在学习自动驾驶的控制算法,终于完成了横纵向控制的仿真,感觉整个过程挺有成就感的,想和大家分享一下我的学习心得和实现过程。

一、控制算法的选择与实现

纵向控制:PID控制

纵向控制我参考了百度Apollo的双环PID控制算法,这个算法在Apollo的开源代码中用得比较多,实现起来相对直观。PID控制的核心在于调节三个参数:比例系数(P)、积分系数(I)和微分系数(D)。通过调节这三个参数,可以实现对车速的有效控制。

% 纵向PID控制算法实现 function [throttle, brake] = longitudinalPID(current_speed, target_speed, dt) % PID参数 Kp = 0.5; Ki = 0.1; Kd = 0.2; % 计算误差 error = target_speed - current_speed; integral = integral + error * dt; derivative = (error - last_error) / dt; % 计算控制量 output = Kp * error + Ki * integral + Kd * derivative; % 分配油门和刹车 if output > 0 throttle = output; brake = 0; else throttle = 0; brake = -output; end % 更新last_error last_error = error; end
横向控制:MPC控制

横向控制我选择了模型预测控制(MPC),这个算法在Apollo中也有应用,主要通过预测未来的轨迹来优化当前的控制输入。MPC的核心在于建立车辆的动力学模型,并通过求解优化问题来得到最优控制量。

% MPC控制算法实现 function [steering] = mpcControl(state, reference, dt, T) % 状态变量:[x, y, yaw, v] % 参考轨迹:五次多项式 % 优化问题求解 % 这里省略优化问题的具体实现,具体可以参考Apollo的MPC实现 % 优化目标:最小化与参考轨迹的偏差 % 约束条件:方向盘转角限制、加速度限制等 % 优化求解 [steering] = optimizeControl(state, reference, dt, T); end

二、车辆动力学模型

我选择了二自由度车辆动力学模型,这个模型可以较好地描述车辆的运动特性,同时又不至于过于复杂。模型主要包括纵向运动学和侧向动力学两部分。

% 车辆动力学模型 function [next_state] = vehicleDynamics(state, control, dt) % 状态变量:[x, y, yaw, v] % 控制量:[throttle, brake, steering] % 计算加速度 acceleration = (throttle - brake) * engine_torque / vehicle_mass; % 更新纵向速度 next_state.v = state.v + acceleration * dt; % 计算侧向加速度 lateral_acceleration = next_state.v * tan(steering) / wheelbase; % 更新 yaw 角速度 yaw_rate = lateral_acceleration / state.v; % 更新位置 next_state.x = state.x + state.v * cos(state.yaw) * dt; next_state.y = state.y + state.v * sin(state.yaw) * dt; % 更新 yaw 角 next_state.yaw = state.yaw + yaw_rate * dt; end

三、仿真效果与分析

经过多次仿真测试,控制效果总体上还是比较令人满意的。车辆能够很好地跟踪给定的参考轨迹,侧向位移和纵向位移的跟踪误差都控制在较小的范围内,纵向车速也能够较好地跟随目标速度。

不过也有一些需要改进的地方,比如在高速工况下,纵向速度的跟踪误差会稍微大一些,这可能和PID的参数设置有关,也可能是因为MPC的预测时间窗口设置得不够合理。

四、工具与资源

  • Matlab/Simulink版本:2021a
  • Carsim版本:2019.0
  • 参考资料:
    1. 百度Apollo开源代码
    2. 《车辆动力学与控制》
    3. MPC控制算法相关论文

五、仿真视频演示

为了让各位更直观地了解控制效果,我已经录制了完整的仿真演示视频,相信即使是刚接触自动驾驶控制的小白也能通过视频快速上手。

总的来说,这次的仿真经历让我对自动驾驶的控制算法有了更深入的理解,也让我意识到理论与实践结合的重要性。希望这篇分享对你有所帮助,如果有任何问题,欢迎随时交流!

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

为什么90%的企业都在用Open-AutoGLM做客户信息归档?真相曝光

第一章:为什么90%的企业选择Open-AutoGLM进行客户信息归档在数字化转型加速的背景下,企业对客户信息管理的需求日益增长。Open-AutoGLM 作为一款开源、智能驱动的客户信息归档系统,凭借其高度自动化与强大的语义理解能力,成为行业…

作者头像 李华
网站建设 2026/10/10 18:49:07

Open-AutoGLM实时跟进系统搭建全流程(含源码级避坑指南)

第一章:Open-AutoGLM实时跟进系统概述Open-AutoGLM 是一个基于大语言模型(LLM)的自动化任务跟进与执行系统,专为高时效性、多源信息整合场景设计。该系统通过实时监听外部事件流,动态调用 GLM 模型进行语义理解与决策生…

作者头像 李华
网站建设 2026/10/10 15:24:59

【AI驱动销售革命】:Open-AutoGLM如何实现线索筛选效率提升10倍

第一章:AI驱动销售革命的背景与Open-AutoGLM的诞生在数字化转型浪潮席卷全球的今天,人工智能正以前所未有的速度重塑商业生态,尤其在销售领域,传统依赖人工经验的客户洞察与转化策略已难以满足高并发、个性化的市场需求。企业亟需…

作者头像 李华
网站建设 2026/10/11 0:59:06

告别加班写年报!Open-AutoGLM自动写作系统实测效果曝光(附对比数据)

第一章:告别重复劳动——Open-AutoGLM开启年报自动化新时代在金融与企业服务领域,年报生成是一项高频率、高复杂度的任务。传统方式依赖人工整理数据、撰写分析、排版输出,不仅耗时耗力,还容易出错。Open-AutoGLM 的出现彻底改变了…

作者头像 李华
网站建设 2026/10/11 0:10:34

Open-AutoGLM数据同步实战指南(从配置到监控全链路拆解)

第一章:Open-AutoGLM数据同步实战概述Open-AutoGLM 是一个面向大语言模型训练数据自动化构建与同步的开源框架,专注于实现多源异构数据的高效采集、清洗与标准化输出。其核心设计目标是支持从公开数据集、API 接口、数据库及网页爬虫等多种渠道获取原始文…

作者头像 李华
网站建设 2026/10/11 0:02:19

【Open-AutoGLM邮件分类实战】:手把手教你构建企业级智能筛选系统

第一章:Open-AutoGLM邮件分类实战概述Open-AutoGLM 是一个基于开源大语言模型的自动化文本处理框架,专为高精度邮件分类任务设计。它结合了自然语言理解与轻量化推理引擎,能够在不依赖商业API的前提下完成多类别邮件智能归类。该系统适用于企…

作者头像 李华