feat(FOC): 添加角度同步Uq前馈补偿和速度环优化

- 实现update_angle_sync_uq_feedforward函数,支持mode2和mode3的角度同步  Uq前馈补偿,按物理360°查表学习负载/阻力差异
- 实现get_mode3_velocity_p函数,mode3低速时降低速度环P参数减少抖动
- 在velocity_control和angle_control_with_velocity_limit中集成Uq前馈补偿
- 优化normalizeAngle360函数,大角度时先扣整圈数避免while循环过多
- 调整配置参数,降低DEFAULT_vel_loop_p并添加详细的Uq前馈补偿配置
- 更新电源电压参数使用本周期采样值,避免电压滞后影响
This commit is contained in:
cbb
2026-05-24 04:56:33 +08:00
parent e646544f7f
commit b71fba2016
9 changed files with 172 additions and 568 deletions
+6 -2
View File
@@ -96,10 +96,14 @@ class angle_sensor {
};
/**
* @brief 快速角度归一化到 [0, 360)
* 用 while 减法替代 fmodf,在角度变化量很小时(电机控制场景)
* 通常只需 0~1 次减法,远快于 fmodf 的 ~30-50 周期开销。
* 小角度保留 while 快路径;大角度先一次性扣掉整圈数,避免累计角很大时 while 循环过多。
* 不依赖 fmodf,减少嵌入式数学库开销和链接风险。
*/
inline float normalizeAngle360(float angle) {
if (angle >= 720.0f || angle <= -360.0f) {
int turns = (int)(angle / 360.0f);
angle -= (float)turns * 360.0f;
}
while (angle >= 360.0f) angle -= 360.0f;
while (angle < 0.0f) angle += 360.0f;
return angle;