本项目旨在将开源电机控制库 Simple-FOC 移植至 RT-Thread 实时操作系统平台,探索一种更工程化、更具扩展性的电机控制实现路径。
为什么要做这个项目?
目前我仍处于电机控制领域的学习阶段,但希望通过系统性的实践,逐步深入理解并掌握电机控制算法体系。我的目标不仅是“会用”,而是能够做到:
-
使用 MATLAB 等工具进行算法建模与仿真
-
实现电机参数自动标定与内参识别
-
掌握无感控制及各类观测器算法,例如:
- 龙伯格观测器
- 滑模观测器
- 磁链观测器
-
理解并应用弱磁控制等进阶策略
与此同时,我也希望将整个学习过程完整记录下来,把每一个关键知识点进行整理与分享,让这条学习路径对更多人更友好、更可复现。
我的技术栈主要集中在嵌入式软件方向,拥有六到七年的开发经验,对 MCU、RTOS 以及各类驱动移植与系统适配工作较为熟悉。
在此前的技术积累中,我接触到 Simple-FOC——一个基于 Arduino 生态、上手简单的 FOC 控制库。因此,我选择以它作为切入点:
- 先通过移植让电机“跑起来”
- 再逐步拆解各个模块,深入理解其实现原理
需要说明的是,Simple-FOC 本身定位为“轻量级入门库”,在高阶控制能力上仍有不足。因此,本项目更多承担的是一个“入门引导”的角色,相当于“师傅领进门”,后续的深入还需要进一步扩展和重构。
将 Simple-FOC 移植到 RT-Thread,主要基于以下几点考虑:
RT-Thread 提供了统一的设备模型(rt_device_t),使得底层硬件适配更加清晰、简洁,有利于跨平台移植与复用。
相比 Arduino,RT-Thread 更贴近真实工程环境,适合构建结构清晰、可维护性高的嵌入式系统。
在嵌入式开发的职业路径中,通常会经历:
单片机开发 → RTOS → Linux
很多开发者在从 MCU 转向 Linux 时,会遇到明显的“断层”——Linux 内核庞大复杂,难以下手。
而 RT-Thread 正好处于一个非常关键的“承上启下”位置:
- 驱动模型与 Linux 有较高相似性
- 代码规模适中,可完整阅读与理解
- 有助于建立系统级开发思维
因此,通过 RT-Thread,不仅可以完成电机控制项目实践,也能够为后续深入 Linux 打下基础。
本项目的目标,并不仅仅是提供一套“可运行”的源码。
在完成移植后,项目本身已经具备实际可用性。基于 RT-Thread 的设备模型与驱动框架,这套方案也具备良好的可迁移性——在更换 MCU 平台时,只需围绕 rt_device_t 进行适配,即可较为平滑地完成移植。
但相比“给你一个结果”,我更希望分享的是完成这个结果的过程与方法。
对于刚入门的嵌入式软件工程师来说,最大的门槛往往不是代码本身,而是:
- 不知道从哪里开始
- 不清楚如何拆解一个复杂项目
- 面对不同平台时缺乏迁移思路
因此,本项目会尽量还原完整的移植路径,而不仅仅是最终代码,重点包括:
- 如何阅读一个开源项目(如 Simple-FOC)
- 如何识别平台相关与平台无关代码
- 如何逐层替换底层接口(GPIO / PWM / ADC / 定时器)
- 如何在 RTOS 环境下重构原有逻辑(如任务、时序、调度)
- 如何逐步验证每一个功能模块,而不是一次性“全量跑通”
我希望通过这个项目,构建一条对新手友好的成长路径:
跑通 Demo → 理解模块 → 拆解系统 → 重构架构 → 自主设计
从“能用”走向“理解”,再走向“掌控”。
当你真正掌握这套方法之后:
- 换 MCU,不再慌
- 换 RTOS,不再怕
- 换项目,也有清晰切入点
最终,这个项目的价值不在于:
“你是否用了这套代码”
而在于:
“你是否学会了如何自己做一遍”
如果你正在嵌入式这条路上探索,希望这个项目不仅能帮你点亮第一个电机,也能帮你建立属于自己的工程方法论。
如果你:
- 对电机控制算法感兴趣
- 正在寻找一条清晰的学习路径
- 或者也想从嵌入式迈向更高阶的系统开发
欢迎 Fork / Star 本项目,一起交流、共同进步 🚀