Motor
上层决策 -> 前馈控制器 -> 传感器 -> 反馈控制器(PID) -> 最终控制量
前馈控制器
控制电压 (U) ≈ kS + kV * ω (目标转速)
kS (Static Friction Gain) 用来克服电机的静摩擦和启动阻力。
kV (Velocity Gain) 表示电机转速每增加一个单位(如 1 RPM),需要增加多少控制电压(占空比)来克服动摩擦和反电动势。它代表了电机的“速度-电压”斜率。
kA (Acceleration Gain)
线性拟合,l
前馈控制
对于一个已知的转弯半径 R 和目标速度 V,理论上所需的左右轮速度是可以通过运动学模型直接计算出来的(开环控制)。这个计算值可以作为前馈量直接输出给电机,而PID只负责纠正因为地面摩擦、电池电压变化等带来的误差。这样能大大减轻PID的负担,提高响应速度和稳定性。
V_left = (2 * V * R - V * W) / (2 * R)
(W为轮距)
V_right = (2 * V * R + V * W) / (2 * R)
ω = dφ / dt (角速度是转向角度对时间的变化率)
给定目标转向角度 φ 和时间 t。如,在2秒内,以0.5 m/s的速度向右转向90度(π/2 弧度)。
ω = Δφ / Δt = (π/2) / 2 = π/4 rad/s
代入运动学公式:
V_left = 0.5 - (π/4 * L)/2, V_right = 0.5 + (π/4 * L)/2
反馈控制(PID)
- 增量式PID (Positional PID)
反馈量是控制量的变化量,只存储并计算最近两到三次的误差。
- 位置式PID (Incremental PID)
反馈量是控制量的绝对大小,存储并累加所有历史误差 ∑e(j)。
积分饱和,当从自动挡切换成手动挡时,
Vision
Cascaded Control
速度环
motor.py motor_left.py motor_right.py
处理霍尔传感器的中断信号