舵轮底盘与功率控制
算法与嵌入式开发 · 独立完成并开源
用电机速度与力矩构造回归特征,以超级电容或满足条件的裁判系统总功率作为实测标签,在 1000 Hz 控制任务中完成在线辨识、功率分配与能量约束。
- 在线辨识
- 1000 Hz 任务;满足实测标签与死区条件时更新
- 硬件依赖
- 复用电机反馈与系统已有总功率数据,不新增母线采样
- 复用范围
- 麦轮 / 全向轮 / 舵轮 / 轮腿
- 赛季结果
- 全队零超功率扣血
背景
用电机速度与力矩构造回归特征,以超级电容或满足条件的裁判系统总功率作为实测标签,在 1000 Hz 控制任务中完成在线辨识、功率分配与能量约束。
模块复用于麦轮、全向轮、舵轮和轮腿底盘,并公开代码与技术说明;2024 赛季全队没有因底盘超功率触发裁判扣血。
1000 Hz 指 FreeRTOS 功率任务的 1 ms 周期,而不是每个周期都必然更新 RLS;更新还受标签可信度、死区、能源状态和断联条件约束。
个人贡献
- 从电机速度与力矩构造回归特征,并以有效的总功率测量形成 RLS 标签。
- 实现 RLS 参数估计、功率预算分配、允许力矩反解与能量闭环。
- 定义裁判系统、超级电容和单电机异常时的降级路径,隔离无效样本。
- 完成多种底盘适配、实机验证、开源代码整理与技术文档。
- 技术环境
- STM32 · FreeRTOS · 1 kHz 功率控制任务 · Online Power Model · Energy Loop · Swerve Kinematics · Fault Degradation
系统实现
反馈有效性
电机反馈构造回归特征;超级电容测得的底盘总功率,或特定失效条件下可信的裁判总功率,作为标签。
在线模型
功率控制任务以 1 ms 周期运行;只有在标签可信、死区和连接条件满足时,RLS 才更新模型参数。
功率分配
根据速度误差和预测功率分配预算,再反解各轮允许力矩。
能量与降级
裁判缓冲能量或超级电容能量调整总上限;标签可用性、能源状态与断联组合共同决定是否继续辨识。
电机速度 + 力矩构造回归特征
实测底盘总功率超级电容;满足条件时使用裁判数据
RLS · 1 ms task满足标签、死区与连接条件时更新
各电机预测功率需求权重与总预算分配
允许力矩裁判 / 电容能量路径约束总上限
断联条件与实际行为
| 输入状态 | 模型更新 | 功率 / 能量上限 | 输出行为 |
|---|---|---|---|
| 裁判、超级电容与电机反馈有效 | 电机速度 / 力矩构造特征;超级电容底盘总功率作为标签,满足死区时更新 RLS | 裁判功率上限与超级电容能量环共同约束 | 按需求与预测功率分配各电机预算 |
| 裁判失联,超级电容与电机有效 | 超级电容仍提供总功率标签,RLS 可继续满足条件的更新 | 使用本地估算的保守裁判上限,并保留电容能量反馈 | 在计算后的保守总上限内继续分配 |
| 超级电容失联,裁判与电机有效 | 仅当电容被判断为能量耗尽且裁判总功率有效时采用裁判标签;否则停用更新 | 回退到裁判功率 / 缓冲能量路径 | 按较保守上限分配并等待电容恢复 |
| 单电机反馈失联 | 旧实现最多约 1 s 保留最近速度 / 力矩用于功率估计,随后排除;并非立刻当作零功率 | 总上限仍由当前裁判 / 电容状态决定 | 失联电机不继续正常驱动,其余电机在现有预算内工作 |
| 裁判与超级电容均失联 | 没有可信总功率标签,停止在线更新并使用模型估计 | 关闭能量环,按最近等级计算保守上限 | 限制总输出,等待任一测量链路恢复 |
技术决策
不用额外母线采样
- 背景
- 若增加专用电流/电压采样,硬件、标定和跨车部署都会变复杂。
- 选择
- 用已有电机反馈构造模型特征,复用超级电容或裁判系统提供的底盘总功率作为实测标签。
- 完成结果
- 软件模块可以在多种底盘上复用,部署只依赖已有通信反馈。
把“能否更新”写成组合条件
- 背景
- 断联、CRC 错误或陈旧反馈会快速污染在线参数,随后影响全部电机的功率分配。
- 选择
- 把实测标签是否可信、能源状态和断联组合写成显式条件;单电机刚失联时短暂保留最近反馈用于保守功率估计,随后排除。
- 完成结果
- RLS 更新与功率限制不再共享一个含糊的“在线”状态,每种输入组合都有可核对的行为。
调试过程
从“异常数据也能算”到显式降级矩阵
在线辨识在正常数据下收敛良好,但实机通信断开时,旧值和无效反馈仍可能被当作新样本。
现象
- 单电机刚失联时,立刻把旧功率视为零会低估仍在衰减的机械与电气功率。
- 裁判或电容数据不可用时,总功率上限缺少一致语义。
排查
- 逐一断开裁判系统、超级电容和电机,记录模型输入与最终力矩限制。
- 把状态组合写成失效矩阵,检查每条路径是否仍使用陈旧数据。
根因
回归特征、总功率标签和能量上限来自不同设备;若只用一个“连接/断开”判断,便无法表达超级电容仍可测量、裁判数据暂失或电机反馈刚超时等组合。
修复
- 用超级电容总功率作为主要标签;电容失联时,只有在判断电容能量耗尽且裁判功率有效的条件下才改用裁判标签。
- 裁判失联但电容有效时仍可保留实测标签;两者都不可用时停用在线更新并进入保守限制。
- 单电机失联后短暂保留最近速度与力矩反馈用于功率估计,超时后再排除,避免瞬间低估。
- 把异常状态与正常功率分配拆开,避免隐式 fallback。
验证与证据
- 执行断联、恢复、充电和补电实机测试,并观察参数与输出是否连续。
- 在不同底盘与赛季任务中复用,最终全队没有发生超功率扣血。
复盘在线算法的可靠性首先取决于输入语义;先定义哪些数据可信,再谈模型收敛和性能。
验证与证据
- 用 RLS、充电、补电和舵轮实机视频验证模型与能量路径。
- 模块在麦轮、全向轮、舵轮和轮腿底盘复用。
- 2024 赛季全队没有因底盘超功率被裁判系统扣血;这是整套电控、参数和操作共同运行的赛季结果,不单独证明模型精度。
1000 Hz 指 FreeRTOS 功率任务的 1 ms 周期,而不是每个周期都必然更新 RLS;更新还受标签可信度、死区、能源状态和断联条件约束。