Skip to content

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

处理霍尔传感器的中断信号

方向环

Released under the MIT License.