Apollo9.0 PNC源码学习之Control模块(三)—— 基于双环PID的纵向控制

本文深入解析Apollo9.0的纵向控制器,包括PID控制、误差计算、车辆标定表和模块输入输出,帮助理解车辆纵向控制逻辑。

本文将对Apollo的纵向控制器进行讲解,看完本文,你将会对百度Apollo的纵向控制有更深的理解
前面文章:
Apollo9.0 PNC源码学习之Control模块(一)
Apollo9.0 PNC源码学习之Control模块(二)

1 纵向控制器简介

control-controller-lon-based-pid-controller 插件包是基于 PID 控制器进行车辆纵向控制计算的控制器实现车辆纵向控制是在 Frenet 坐标系下,沿着道路参考线切线的方向,控制车辆的位置、速度、加速度按照规划轨迹线的参考位置、参考速度行驶

在这里插入图片描述control-controller-lon-based-pid-controller 插件主要包含LonController的实现文件, LonController 是继承 ControlTask 的子类

### Apollo 9.0 中 MPC 控制实现方法 #### MPC 控制简介 模型预测控制 (Model Predictive Control, MPC) 是一种先进的过程控制策略,广泛应用于自动驾驶领域。MPC 的核心思想在于利用系统的动态模型对未来一段时间内的行为进行预测,并在此基础上优化未来的输入序列以满足特定的目标函数和约束条件。 在 Apollo 自动驾驶平台中,MPC 被用于路径跟踪任务,在此过程中,车辆不仅需要遵循给定的参考轨迹,还需要考虑诸如物理极限、安全距离等因素[^1]。 #### MPC 控制器的主要组成部分 - **状态空间模型**:定义了描述车辆运动学特性的方程组; - **成本函数**:衡量当前时刻到未来若干采样周期内实际轨迹偏离理想轨迹的程度以及控制努力大小; - **求解器**:采用数值优化技术来寻找最优解,使得整个时间段上的累积代价最小化; - **反馈机制**:实时调整参数并重新计算最佳控制指令,从而适应环境变化或测量噪声的影响。 对于 Apollo 平台而言,具体实现了如下特性: - 使用非线性 MPC 来处理复杂的动力学响应问题; - 支持多目标优化,比如同时兼顾舒适性和安全性; - 提供灵活配置选项以便针对不同场景微调性能表现。 #### 关键文件结构说明 涉及 MPC 控制的关键代码位于 `modules/control` 下面的不同子目录里,主要包括但不限于以下几个方面: - **config 文件夹**:存放各种预设好的控制器参数设定表单,这些表格可以被用来快速切换不同的工作模式或是实验新的设计方案。 - **controller/mpc_controller/** :这是主要负责执行 MPC 计算的地方,包含了初始化设置、迭代更新逻辑等功能模块。 - **optimizer/** : 此处集中管理着一系列高效的数学运算库,它们共同协作完成对大规模稀疏矩阵的操作,进而加速在线最优化进程。 ```cpp // modules/control/controller/mpc_controller/mpc_controller.cc void MpcController::ComputeControlCommand(const common::TrajectoryPoint& planning_point, const vehicle_state::VehicleState& vehicle_state, control_command* cmd){ // ...省略部分代码... } ``` 上述 C++ 函数展示了如何接收来自上层规划模块传来的目标点位信息及传感器获取到的实际运行状况作为输入变量,经过内部复杂运算之后输出相应的转向角、油门开度等操作命令传递给底层执行机构去驱动汽车动作[^2]。 #### 数据流与接口交互 在整个控制系统架构里面,MPC 组件与其他组件之间存在着紧密的数据交换关系。通常情况下,会从前端感知系统那里获得关于周围障碍物分布的信息;从中控单元得到最新的导航路线指示;而自身则需定期汇报自身的健康监测报告给监控中心。此外,还可能涉及到 CAN 总线上与其他 ECU 协同工作的通信协议细节等问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值