麦克纳姆轮全向小车运动学解算与电机控制——基于ESP32的DIY底盘实战

2026-11-072
AI 快速预览详细 收起
本文详细介绍了基于ESP32的麦克纳姆轮全向小车的运动学解算与电机控制方法。首先解释了麦克纳姆轮的工作原理,然后给出了四轮布局与符号约定,并提供了关键的逆解公式。接着讲解了如何使用ESP32的LEDC PWM驱动电机,以及如何通过手机摇杆进行遥控。文章还分享了现场调试中的常见问题及其解决方案,如平移歪走、旋转画圆等。最后,通过一个仓库平移搬运小车的实战案例,展示了闭环控制的重要性。

一、全向移动到底"神"在哪

普通两轮差速小车想往侧边走,只能"先转再走"。麦克纳姆轮(Mecanum)靠轮缘斜 45° 的小滚子,让四个普通前进的电机组合出横向平移、斜向走位、原地旋转任意方向,不改变车头朝向。工业 AGV、仓库搬运、舞台小车都用它。但它的门槛不在硬件,而在运动学解算——四个轮子的转速方向和大小怎么组合,才能走出你想要的矢量。

二、四轮布局与符号约定

先统一坐标系,这是所有公式的前提。俯视小车,车头朝 +X(前进),+Y 为车体左侧:

轮位

滚子方向

记号

左前 LF滚子斜向右上(+)v_LF
右前 RF滚子斜向左上(−)v_RF
左后 LB滚子斜向左上(−)v_LB
右后 RB滚子斜向右上(+)v_RB

 

注意 A 型轮与 B 型轮(滚子方向镜像)必须按位置正确装配,装错一个轮子,平移就变成斜着跑。DF创客社区买轮时问清 A/B 型对应轮位。

三、运动学逆解公式(核心)

给定期望的车体速度:X 方向前进 `Vx`、Y 方向横移 `Vy`、原地角速度 `ω`,四个轮子的转速为:

v_LF = Vx - Vy - (L+W)*ω

v_RF = Vx + Vy + (L+W)*ω

v_LB = Vx + Vy - (L+W)*ω

v_RB = Vx - Vy + (L+W)*ω

其中 `L` 是轮轴距的一半、`W` 是轮距的一半(L+W 即轮心到旋转中心的等效杠杆)。这就是"逆解":从整车期望运动反推每个轮子该多快。几个经典模式一眼看懂:

期望动作

Vx

Vy

ω

说明

直行+00四轮同向同速
横移0+0对角轮正转、另两对反转
原地转00+左两轮反转、右两轮正转
斜向前++0只有单侧轮转,另两侧停

 

四、ESP32 驱动与 PWM

ESP32 的 LEDC 可以开 16 路 PWM,直接驱动 4 路 TB6612 或 DRV8833。方向用 GPIO,速度用 PWM 占空比。逆解算出的 v 值有正负,正负代表正反转,绝对值映射到 PWM:

void setMotor(int pwm, int in1, int in2, float v){

  float a = min(abs(v), 255.0);

  ledcWrite(pwm, (int)a);

  if(v >= 0){ digitalWrite(in1,HIGH); digitalWrite(in2,LOW); }

  else      { digitalWrite(in1,LOW);  digitalWrite(in2,HIGH); }

}

void mecanum(float Vx,float Vy,float w){

  float L_W = 0.12;              // (L+W) 单位: 与速度同一量纲系数

  setMotor(0,A1,A2, Vx - Vy - L_W*w); // LF

  setMotor(1,A3,A4, Vx + Vy + L_W*w); // RF

  setMotor(2,B1,B2, Vx + Vy - L_W*w); // LB

  setMotor(3,B3,B4, Vx - Vy + L_W*w); // RB

}

五、遥控链路:手机摇杆 → WiFi → 车体

全向小车的操作复杂,必须靠摇杆映射。典型架构:手机网页(WS/HTTP) 或 App → ESP32 的 WiFi → 解析双轴摇杆 (X,Y) + 旋转旋钮 → 喂给 `mecanum()`。摇杆前后推拉映射 Vx,左右映射 Vy,旋转映射 ω,三个通道可叠加,实现"一边前进一边横滑一边旋转"的漂移走位。建议加 100ms 看门狗:连续没收到遥控包就停车,防止断连飞车。

六、现场调试与踩坑记录

• 平移歪着走:十有八九是 A/B 轮装错位,或某路电机线序反了,逆解正负就错了。逐轮单独给正 PWM,确认每个轮子滚子"该往哪边滑"。

• 原地旋转画圆不走圆心:轮心到旋转中心不一致(装配误差),或四轮转速没校准,需加每轮的转速补偿系数。

• 斜着走打滑:地面太滑或负载太重,滚子横向打滑;麦轮天生效率低(约 60%~70%),别用太轻的电池。

• 摇杆松手不立即停:通信有延迟,务必收到零输入就 `ledcWrite(...,0)` 清零,并加死区。

七、实战案例:仓库平移搬运小车

一辆载重 5kg 麦轮搬运车需要精确横向对位货架。直接横移时总"冲过头",原因是横移方向 Vx=0、全靠对角轮反向产生横移,效率低且惯性大。解决办法:给速度环加编码器反馈(同上一篇的 PID 方法),横移时四轮都进闭环,对位误差从 ±4cm 收到 ±1cm。结论:麦轮做精细对位,闭环是刚需,纯开环平移误差会被效率损失放大。

八、工程要点小结

• 装配前先分清 A/B 型轮与轮位,装错即跑偏。

• 逆解公式里 (L+W) 是杠杆项,与速度量纲要统一。

• PWM 正负映射方向、绝对值映射速度,别忘了反转分支。

• 遥控必加看门狗 + 零输入急停 + 摇杆死区。

• 麦轮效率低、易打滑,精细动作务必上编码器闭环。

九、延伸阅读

• 麦克纳姆轮运动学正逆解推导(社区图文教程)

• ESP32 LEDC PWM 与 WiFi WebSockets 控制例程

• 手机摇杆控制小车(MIT App Inventor / 网页摇杆)

(本文为 DIY 底盘实践整理,公式与系数请结合自己的轮距、轮径标定。欢迎贴出你的麦轮走位视频交流。——爱控电子)

创作许可协议

本项目采用 CC BY(署名) 进行许可。

评论(0)
- 没有更多了 -