foc-wheel-legged-robot
一个人独立开发的完整轮腿机器人,含机械/FOC驱动/平衡算法/Android遥控APP,支持MATL
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一个人独立开发的完整轮腿机器人,含机械/FOC驱动/平衡算法/Android遥控APP,支持MATL
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个画面:你打开一个 35MB 的 SolidWorks 总装文件,看到一个精巧的轮腿结构——两条腿末端不是普通脚掌,而是嵌入了直径 65mm 轮胎的无刷电机驱动轮子。关节处深沟球轴承与推力轴承并排,4010 电机提供 0.22N·m 堵转扭矩,2804 轮毂电机负责驱动,整机重量不到 1.5kg,却能完成平衡行走、跌落缓冲、加速冲刺——这不是某个实验室的论文成果,而是 GitHub 上任何人都能下载、制造和二次开发的开源项目。
FOC 双轮腿机器人(Skythinker616/foc-wheel-legged-robot)是 GitHub 明星项目榜的常客,以 1640+ stars 证明了一个事实:在中国开发者手中,开源机器人项目可以做到比很多商业产品更精细、更完整、更易于复现。
项目的作者 Skythinker616(网名"天空客")是一个机器人爱好者,他从 2022 年开始独自完成整个项目。项目的起点并不复杂——他想做一个能跑能跳的轮腿机器人,但不想买成品,他想亲手从机械图纸开始,把每一个零件选型、每一行控制代码都理解透彻。
这个项目最终成长为一个涵盖 6 个工程学科的超级全栈项目:机械结构设计、电机驱动固件、运动控制算法、Linux 图传、Android 遥控 APP,以及最重要的——MATLAB 仿真验证体系。

图1:FOC 双轮腿机器人实物外观(来源:项目 README)
开源的第一推动力是作者的 B 站视频。2022 年 8 月,一条名为"FOC双轮腿机器人"的 B 站视频爆火,累计播放量超过百万,引发了大量机器人爱好者关注,很多人开始询问"这个能买吗""有没有全套资料"。作者选择将全部资料开源回应,不仅放出了机械模型和代码,还把所有零部件的淘宝购买链接都贴了出来——这是一个真正意义上的"手把手教你做"项目。
传统足式机器人(液压/伺服关节腿)面临的核心矛盾是:瞬时功率密度有限——当机器人需要快速移动时,腿部惯量成为主要瓶颈,地面冲击也难以吸收。轮式移动机器人虽然速度快、效率高,但在非结构地形下几乎无法使用。
轮腿机器人(Wheel-Legged Robot)应运而生:腿部末端安装主动轮,在平整地面用轮子高速滚动,需要跨越障碍时通过腿关节控制轮子高度和姿态,实现类四足动物的灵活通过能力。MIT 的 Cheetah、四足的 Spot、波士顿动力的 ANYmal 都采用了这一思路。
本项目的独特之处在于:每个车轮由独立的 FOC 无刷电机驱动,关节由另一组 FOC 电机控制,形成了一个高度解耦的力控系统。
无刷电机(BLDC)相比传统舵机和有刷电机,能以极高效率实现精确力矩控制,但控制复杂度也高得多。FOC 通过坐标变换,将三相电流分解为与转子磁场对齐的直轴分量(d轴)和垂直分量(q轴),从而实现对电机力矩的精确独立控制。
作者选择了 SimpleFOC 算法的 HAL 库移植版本——原本 SimpleFOC 是针对 Arduino 平台的,作者将其移植到 STM32F103 的 HAL 生态中,并添加了 CAN 总线通信、Flash 掉电存储等功能。
在 ESP32 主控侧,通过 CAN 总线以 500Hz 频率轮询各电机状态(转角 + 转速),向每个电机发送 q 轴力矩指令,实现了分布式力控架构。
机器人的平衡控制是项目最硬核的部分。作者在 MATLAB/Simulink/Simscape 中构建了完整的物理仿真模型,包含:

图2:Simulink + Simscape Multibody 整机物理仿真(来源:项目 README)
这套流程的价值在于:仿真验证 → 自动代码生成 → 实机部署,极大降低了"写了算法却跑不通"的风险。
总装文件(总装.SLDASM,35MB)包含了 29 个零件的完整装配关系。零件使用 SolidWorks 2019 设计,大部分可 3D 打印,底板使用定制亚克力板。
核心零部件选型(均有淘宝购买链接):
| 零部件 | 型号 | 关键参数 |
|---|---|---|
| 关节电机 | 4010 外转子 BLDC | 12V/0.22N·m/125g/11极对 |
| 轮毂电机 | 2804 外转子 BLDC | 12V/0.04N·m/24g/7极对 |
| 电池 | 3S 800mAh 25C | 57g/20-30min续航 |
| 关节轴承 | 604深沟球 + F8-14M推力轴承 | 内径4mm/8mm |
关节处的轴承配置值得注意:深沟球轴承承受径向力,推力轴承承受轴向力,二者组合确保关节在承受机器人整体重量时仍能灵活旋转。这是工业机器人关节的标准配置。
包含 leg_sim.slx(腿部仿真)和 sys_sim.slx(整机仿真)两个 Simulink 模型。模型的特别之处在于使用了 Simscape Multibody 进行刚体物理仿真——这比纯数学仿真更接近真实物理行为,可以提前发现控制算法在非线性摩擦、关节柔性等实际因素下的表现问题。
两个模型均提供 R2020a 兼容版本(sys_sim_2020a.slx / leg_sim_2020a.slx),覆盖了较老版本 MATLAB 用户。
基于 STM32F103C6T6 + DRV8313 + AS5600 磁编码器的无刷电机驱动板,硬件已开源至立创开源平台。设计上直径仅 30mm,可直接安装在 2804 电机背面,物料成本约 25 元。
软件使用 Keil uVision 5 + STM32CubeMX HAL 库开发,核心是 SimpleFOC 算法的 HAL 移植版本,支持 CAN 总线 ID 设置、自动极对数标定、掉电参数保存等功能。
机器人的"大脑",基于 ESP32-C3,运行 FreeRTOS 多任务系统。主控程序使用 PlatformIO(ESP-IDF + Arduino 框架)开发,包含:
代码组织上,所有模块均在一个 main.cpp 中(作者自嘲"偷懒没分开"),但通过函数名前缀做了清晰的功能分区。
基于 NanoPI Duo2(全志 H3)开发板的图传子系统,使用 ffmpeg 采集 ov5640 摄像头 MJPG 流,通过 ffserver 推流到局域网,实现手机 APP 实时视频显示。
有趣的是图传的"可拔插"设计:图传系统通过蓝牙与主控通信,通过局域网与手机通信。当不需要图传时,手机 APP 可直接蓝牙连接主控——两种模式对主控固件完全透明。
基于 Android Studio 开发,核心创新在于使用 WebView + Canvas 叠加实现摇杆界面:视频流通过 WebView 渲染(直接解码 MJPG),摇杆和滑块控件通过重写 WebView.onDraw() 绘制,两者叠加无需复杂自定义视图。
APP 提供预编译 APK(balancebot.apk,约 2.8MB),用户无需编译即可直接安装使用。

图3:Android 遥控 APP 界面(来源:项目 README)
| 项目 | 参考价格(2022年) |
|---|---|
| 电机(4010×2 + 2804×2) | ~126元 |
| 电池 | 28元 |
| 轴承、螺丝等紧固件 | ~30元 |
| 3D 打印零件(树脂/PLA) | ~80元 |
| STM32驱动板物料 | ~50元 |
| ESP32主控板物料 | ~40元 |
| NanoPI图传(可选) | ~175元 |
| 合计(不含3D打印) | ~354元 |
作者在 README 中坦承,从零开始制作这样一台机器人,需要掌握:SolidWorks 建模、MATLAB 仿真、FOC 电机控制、FreeRTOS 编程、Android 开发——这不是一个周末项目,而是一个可能需要数月的系统性学习过程。
好在文档足够详细。作者为每个子模块都写了中文 README,涵盖硬件原理图说明、软件架构分析、使用步骤和参数标定方法。以 ESP32 主控的 README 为例,仅这一部分就超过 6000 字,还包含了零点偏移和旋转方向参数的测量方法。
项目并非完美,有几个值得注意的局限:
1. 机械强度有限:大部分零件为 3D 打印,长时间高频使用可能出现疲劳。关节轴承处的设计是关键受力点,也是最常见的故障点。
2. 仿真依赖 MATLAB:控制算法在 Simulink 中开发和验证,但 MATLAB/Simulink/Simscape 是商业软件(需要数万/年授权)。虽然作者提供了 R2020a 兼容版本,但非正版用户仍无法直接修改仿真模型。
3. 代码工程组织较为松散:ESP32 主控代码全部集中在一个 main.cpp 中,缺乏模块化拆分,不利于大规模功能扩展。
4. 无自动化测试:没有单元测试或集成测试,实机调试完全依赖串口打印和蓝牙调试工具。
5. 文档时效性问题:作者记录的购买链接来自 2022 年,部分零部件链接可能已失效或涨价,需要自行搜索替代品。
FOC 双轮腿机器人项目的意义远不止于一个"漂亮的 DIY 项目"。它代表了一种新兴的开源硬件模式:不只是一个 GitHub 仓库,而是一套完整的工程方法论——从控制理论(VMC+LQR)到固件开发(FreeRTOS+CAN)到仿真验证(Simulink)到用户交互(Android+蓝牙)的全链路覆盖。
作者 Skythinker616 在 B 站持续更新项目进展,从最初的基本运动到后来的跌落缓冲、加速冲刺,每一步都有视频记录。这种"开发过程透明化"的社区运营方式,让项目在开源后持续吸引关注,形成了良好的技术讨论氛围。
对于 AI 机器人领域而言,这个项目的价值在于:它提供了一套可复现的物理平台——开发者可以在此基础上替换控制算法、添加视觉 SLAM、甚至接入大语言模型做任务规划,而无需从零设计机械结构和电机驱动。
适合谁: 有一定嵌入式开发基础,想系统学习机器人工程全链路的开发者;想从纸面理论走向实机验证的控制理论学习者;以及所有热爱"亲手造一个能动的东西"的技术爱好者。
不适合谁: 追求开箱即用、不愿动手焊接和调试固件的普通用户;没有 MATLAB 正版授权且不愿寻找替代仿真工具的开发者。
项目地址: https://github.com/Skythinker616/foc-wheel-legged-robot