有一阵子一直在玩 ESP32-C3,从小屏幕到四足机器人,这次搞了个大家伙——Monogo,一只 8 自由度(8-DOF)的四足机器狗 🐕。
它不像玩具一样只是简单回放舵机角度,而是基于逆运动学(Inverse Kinematics, IK)数学模型,结合 MPU6050 姿态传感器实现了实时的动态自平衡。成本可控,全部开源。
✨ 核心特性
- 纯数学逆运动学引擎 📐:通过输入空间坐标 (X, Y) 精准控制足端轨迹,而非死板的舵机角度回放
- 双轴自平衡 ⚖️:融合 MPU6050 传感器,实时进行 Roll(左右横滚)和 Pitch(前后俯仰)补偿
- 平滑 Trot 步态 🏃:基于正弦曲线生成的对角步态,支持 1.0Hz~2.0Hz 稳定行走
- 异步非阻塞架构 ⚡:全时钟周期无
delay()卡死,保障 100Hz 级别的高速姿态刷新率 - 大功率动力架构 🔋:专为 8 颗 MG996R 优化的 3S 锂电 + XL4016 降压强力供电方案
- ESP-NOW 无线遥控 📡:双 ESP32-C3 方案,搭配摇杆实现低延迟遥控(开发中)
🛠️ 硬件清单(BOM)
| 组件类别 | 具体型号 | 数量 |
|---|---|---|
| 主控 | ESP32-C3(WeAct Studio Core) | 1 |
| 舵机驱动 | PCA9685(16通道 12-bit) | 1 |
| 姿态传感器 | MPU6050 或 MPU6500 | 1 |
| 执行器 | MG996R 180度模拟舵机 | 8 |
| 电池组 | 18650 动力电池(3S串联) | 3 |
| 电池保护 | 3S 20A 锂电池 BMS 保护板 | 1 |
| 降压模块 | XL4016(8A 或 12A) | 1 |
| 稳压电容 | 2200µF - 4700µF 电解电容 | 1 |
| 机身结构 | 3D 打印件 + 连杆机构 | 1 套 |
大腿直驱,小腿通过连杆驱动,结构简洁可靠。
🔌 核心接线
⚠️ 关键警告:PCA9685 的 V+(绿色接线柱)和侧边排针的 VCC 是两条完全独立的供电线路!千万不要把 5V/6V 接入 VCC,否则会瞬间烧毁 ESP32 和 MPU 传感器!
动力系统
3S 电池包 → BMS 保护板 → XL4016 降压模块(输出调至 5.0V ~ 6.0V)
- XL4016 OUT+ → PCA9685 绿色接线柱 V+
- XL4016 OUT- → PCA9685 绿色接线柱 GND
- 2200µF 大电容并联锁在绿色接线柱上(长脚 V+,短脚 GND)
- 从 XL4016 引出一根 5V/6V 正极接到 ESP32-C3 的
5V引脚为其供电
逻辑与通讯
所有 GND 必须共地。ESP32-C3 的 3.3V 给 PCA9685 的 VCC 和 MPU6050 的 VCC 供电。
| 信号 | ESP32-C3 | PCA9685 | MPU6050 |
|---|---|---|---|
| I2C SDA | GPIO 8 | SDA | SDA |
| I2C SCL | GPIO 9 | SCL | SCL |
舵机通道分配
| 腿部 | 大腿(Thigh) | 小腿(Shin) |
|---|---|---|
| 左前(LF) | CH 0 | CH 1 |
| 右前(RF) | CH 2 | CH 3 |
| 左后(LB) | CH 4 | CH 5 |
| 右后(RB) | CH 6 | CH 7 |
🧮 逆运动学原理
核心思路很简单:给定足端在空间中的坐标 (X, Y),通过几何关系反算出大腿和小腿的角度。
D = sqrt(X² + Y²)
cos(β) = (L1² + L2² - D²) / (2 × L1 × L2)
β = 180° - arccos(cos(β))
α = arctan(-X, Y) + arccos((L1² + D² - L2²) / (2 × L1 × D))
其中 L1、L2 是大腿和小腿的物理长度。计算出 α(大腿角)和 β(小腿角)后,加上每条腿的基准偏移值,输出到对应舵机即可。
四条腿独立运算,配合正弦曲线生成 Trot 对角步态,实现流畅行走。
🎮 串口控制指令
程序运行后,串口监视器(115200 波特率)发送以下指令:
| 按键 | 动作 | 说明 |
|---|---|---|
| W | 前进 | 触发 1.0Hz Trot 步态 |
| S | 后退 | 逆向 Trot 步态 |
| M | 原地踏步 | 验证对角线协同与重心稳定 |
| U | 站立 | 回到标准站立高度,激活自平衡 |
| P | 趴下 | 降低至贴地防卫姿态 |
| X | 紧急停止 | 停止所有步态,进入 IDLE |
使用 ESP-NOW 无线遥控的方案也已在开发计划中,将来用第二个 ESP32-C3 配摇杆实现无线控制。
📄 开源许可证
MIT License。欢迎任何人 Fork、修改并用于自己的机器人项目。
📁 项目地址
🪐 GitHub: https://github.com/guitarliu/Monogo
如果这只 Monogo 让你觉得有趣,给它一颗 ⭐️ Star 就是最好的鼓励 🫶。
