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

自动驾驶纵向控制-复现Apollo双pid纵向位置跟踪 复现百度apollo纵向控制 纵向控制...

自动驾驶纵向控制-复现Apollo双pid纵向位置跟踪 复现百度apollo纵向控制 纵向控制已经制作好油门刹车标定表,无需自己做标定。

凌晨三点半的显示器蓝光打在脸上,手指机械地敲着键盘。当我第N次看着测试车在Simulink里画出心电图般的速度曲线时,终于决定扒开Apollo的纵向控制黑盒子——不就是双PID吗?今天咱们就手撕这套经典结构。

先看整体架构,Apollo把纵向控制拆成位置和速度两个闭环。就像驾校教练同时管着方向盘和油门,位置PID负责告诉车该跑多快,速度PID实际踩油门刹车。这个结构妙在能处理不同控制模式的无缝切换,后面细说。

位置PID:导航小姐姐的唠叨

class PositionPID: def __init__(self, kp, ki, kd, max_integral): self.kp = kp # 0.3效果拔群 self.ki = ki # 0.01防止积分暴走 self.error_sum = 0.0 self.last_error = 0.0 def calculate(self, target_pos, current_pos, dt): error = target_pos - current_pos self.error_sum += error * dt self.error_sum = np.clip(self.error_sum, -max_integral, max_integral) d_error = (error - self.last_error) / dt output = self.kp*error + self.ki*self.error_sum + self.kd*d_error self.last_error = error return output

这个PID输出的其实是期望速度。注意max_integral这个参数,实测不加的话在长距离误差时会出现"油门踩穿底盘"的灵异现象。建议取期望最大速度的2倍左右。

自动驾驶纵向控制-复现Apollo双pid纵向位置跟踪 复现百度apollo纵向控制 纵向控制已经制作好油门刹车标定表,无需自己做标定。

速度PID:灵魂脚法控制器

当位置PID给出目标速度后,真正的重头戏来了:

double SpeedController::Update(double target_speed, double current_speed) { double error = target_speed - current_speed; // 动态调整积分系数,低速时加强控制 double adaptive_ki = ki * (1 + 2/(current_speed + 0.1)); // 带滤波的微分项 double d_error = LowPassFilter(error - last_error_, 0.2); double accel_cmd = kp_*error + adaptive_ki*integral_ + kd_*d_error; // 刹车油门模式切换 if (accel_cmd > 0) { return CalculateThrottle(accel_cmd); } else { return CalculateBrake(-accel_cmd); } }

这里有几个精妙设计:

  1. 低速时积分增强,解决蠕动工况的稳态误差
  2. 微分项经过低通滤波,避免速度传感器噪声被放大
  3. 根据加速度指令正负自动切换油门刹车,比单独控制更顺滑

模式切换的舞蹈

最让我头秃的是巡航模式与停车模式的切换逻辑。Apollo用状态机管理,这里简化版:

if target_speed < 0.3: # 进入停车模式 if abs(position_error) < 0.05: execute_full_stop() else: use_position_pid_only() elif current_speed < target_speed * 0.8: # 急加速模式 override_pid_with_wot() # 地板油策略 else: # 正常巡航 enable_speed_feedforward() # 预瞄补偿

注意从停车模式切回时要做积分重置,否则残留的积分项会让车像突然被踹一脚。实测加上reset_integral()后,起步顿挫减少了70%。

当我把这些模块拼装完成,看着测试车在弯道前自动降速入弯,出弯时平稳加速,终于理解了Apollo工程师的良苦用心——好的控制就像呼吸,你感觉不到它的存在,但一旦失调就会窒息。下次试试加入坡度补偿,应该能让长上坡路段不再喘得像老拖拉机...(查看GitHub仓库的兄弟们,记得把标定表路径改对,血的教训!)

http://www.jsqmd.com/news/358953/

相关文章:

  • 26年最新网络机顶盒机顶盒/电视盒子免费刷机固件大全分享
  • 冥想第一千七百八十八天(1788)
  • 磁耦合谐振式无线电能传输系统的探索与实现
  • 提示工程架构师应对AI提示工程国际化与本地化的最佳方案
  • P8377 [PFOI Round1] 暴龙的火锅
  • 基于博途1200 plc的V15软件邮件分拣控制系统
  • simulink 双馈风机稳态模型。 包含最大功率跟踪控制,MPPT,参数可调 (1)转子侧变...
  • P9586 「MXOI Round 2」游戏
  • MATLAB代码:基于数据驱动的模型预测控制电力系统机组组合优化 关键词:数据驱动 模型预测控...
  • UG NX修补: 曲面和实体缝合
  • 美团联动50+茶饮咖啡餐饮品牌送福利!6.9元起+5折神券+88元神券,薅羊毛路径全解析 - Top品牌推荐
  • 11.灌电流与拉电流
  • 覆盖50+知名品牌!美团外卖大额代金券来袭,6.9元起喝遍茶饮咖啡,半价周末+集金卡福利拉满,比其他平台便宜30%-50% - Top品牌推荐
  • 财税合规选购指南:企业/主播/电商必看的科学决策框架 - 速递信息
  • 【claude】800万人围观!Claude Code之父的10条生产力秘诀
  • 实用指南:CSS Grid布局详解
  • 数据背后的温度:招商林屿缦岛203套售罄的情感经济学
  • 麒麟大口茶、益禾堂等12大品牌在哪点更便宜?美团更便宜!6.9元起+半价周末,下单路径一文看懂 - Top品牌推荐
  • day13-Dify工作流-ppt生成-脑图生成-Coze本地部署
  • PyTorch框架——基于深度学习EfficientDeRain神经网络AI去雨滴图像增强系统
  • 美团2026年外卖福利来袭!50+知名品牌配送费减免 - Top品牌推荐
  • 花了一个星期找豆包完成的,华硕RT-AX56U路由器实现ML307A短信转发服务(终极完整版适配有源扩展坞)
  • Honor of Kings (50star) 2026.02.07
  • 探索双闭环 PI 控制的移相全桥变换器
  • Concept Bottleneck Models-概念瓶颈模型用于可解释决策:进展、分类体系 与未来方向综述
  • 提示工程架构师必备:AI提示设计的“迭代优化”方法论,越用越好用!
  • Spring Bean的生命周期
  • 【Docusaurus】Doc只有单页的情况
  • multi function vehicle inverter
  • 企业HR招聘时如何看待CAIE认证,其企业认可度具体如何评估?