Skip to content

Latest commit

 

History

History
34 lines (23 loc) · 1.92 KB

File metadata and controls

34 lines (23 loc) · 1.92 KB

开发笔记

已知问题与改进方向

问题 说明 改进方向
插值时间固定 0.3 s 对小速度变化(如 0.05→0)也走完整 S 曲线,可能显得"迟钝" 动态插值时间:根据速度差 |Δv| 自适应调整 accel_time
无紧急制动 k 停止也是 0.3 s 减速,不是立即归零 单独增加"急停"逻辑,绕过 S 曲线直接归零
键盘无并发 不支持同时按 wa(对角前进),因为 read(1) 只读单字符 改用 select + 多键位状态机
循环频率不稳 spin_once + select 的组合实际周期可能有抖动 引入定时器锁相,或改用 MultiThreadedExecutor

设计思考

为什么不用 Nav2?

本项目目的是从零理解导航闭环,而非调用现成框架。A* 规划器、PI 控制器、差速模型全部手写,便于理解数据流与控制逻辑。后续如需生产级导航,可平滑迁移至 Nav2。

PI 而非 PID?

差速底盘航向控制中,微分项对噪声敏感(Gazebo 里程计有抖动),且角速度本身已是"速度"概念,微分意义不大。PI 足够消除稳态误差,同时避免高频噪声放大。

S 曲线 vs 梯形速度规划?

梯形规划加速度突变,在仿真中会导致轮速指令跳变,Gazebo 关节约束下易产生滑移。五次多项式 S 曲线起点/终点加速度为 0,力矩连续,更适合仿真环境。

参数调参记录

参数 初始值 最终值 调整原因
kp 1.5 2.5 初始响应太慢,转向迟钝
ki 0.5 0.3 积分过高导致航点附近振荡
integral_separation_threshold 0.1 rad 0.2 rad 阈值过小,积分频繁启停
position_tolerance 0.1 m 0.15 m 容差过小导致在航点附近反复调整
accel_time 0.5 s 0.3 s 加速太慢,键盘手感迟滞