网站排名优化建设摄影网站开发背景怎么写
网站排名优化建设,摄影网站开发背景怎么写,网站备案流程教程,网站建设平台哪家好自动驾驶纵向控制-复现Apollo双pid纵向位置跟踪
复现百度apollo纵向控制
纵向控制已经制作好油门刹车标定表#xff0c;无需自己做标定。凌晨三点半的显示器蓝光打在脸上#xff0c;手指机械地敲着键盘。当我第N次看着测试车在Simulink里画出心电图般的速度曲线时#xff0c…自动驾驶纵向控制-复现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); } }这里有几个精妙设计低速时积分增强解决蠕动工况的稳态误差微分项经过低通滤波避免速度传感器噪声被放大根据加速度指令正负自动切换油门刹车比单独控制更顺滑模式切换的舞蹈最让我头秃的是巡航模式与停车模式的切换逻辑。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仓库的兄弟们记得把标定表路径改对血的教训