麦克纳姆轮大概是做智能小车最有意思的轮子了。普通轮子只能前进后退,差速转向还得靠两轮转速差。麦克纳姆轮不一样,四个轮子配合好,小车可以平移、斜走、原地旋转,全向移动不在话下。这篇文章把运动学原理和Arduino实现讲透。

麦克纳姆轮的结构原理
麦克纳姆轮跟普通轮最大的区别是轮面上有一圈斜45度角的辊子。当轮毂转动时,辊子跟地面接触产生的摩擦力可以分解为两个方向的分力:一个沿着车身前后方向,一个沿着车身左右方向。
四个麦克纳姆轮一组使用,两个左旋轮、两个右旋轮,按O型方式安装(左前右后同旋向,右前左后同旋向)。X型安装会导致旋转力矩很小甚至无法旋转,所以一定要用O型。

逆运动学:小车往哪走,轮子怎么转
小车的运动状态用三个量描述:vx(前后速度)、vy(左右速度)、ω(旋转角速度)。逆运动学要解决的问题是:给定vx、vy、ω,四个轮子分别该转多快。
最简单的算法是把三个方向的运动线性叠加。前后运动时四个轮子同速同向;左右平移时1、3号轮和2、4号轮反向旋转;原地旋转时前后两组轮子反向。三个效果叠加起来就是任意方向的运动。

Arduino实现思路
硬件用Arduino Uno或Nano加两个L298N电机驱动板,每个L298N驱动两个麦克纳姆轮。遥控器用两个摇杆:一个控制前后左右平移,一个控制旋转。
核心算法很简单:读摇杆模拟值映射到-255到255(PWM范围),然后根据运动学公式算出四个轮子的PWM值。前左轮=vx+vy+ω,前右轮=vx-vy-ω,后左轮=vx-vy+ω,后右轮=vx+vy-ω。结果限幅在-255到255之间,正值正转负值反转。

常见坑与调试建议
第一个坑是轮子旋向装反。如果小车平移方向不对,大概率是某两个轮子的左旋右旋搞混了。解决方法是逐个测试:单独驱动一个轮子,看辊子方向对不对。
第二个坑是供电不足。四个电机同时启动电流很大,如果用9V方块电池肯定不够。建议用3S锂电池(11.1V)或者12V航模电池,配合BEC给Arduino单独供电。
第三个坑是辊子磨损后打滑。麦克纳姆轮的辊子是着地的关键,磨损后全向移动精度会明显下降。建议买铝合金辊子的版本,比塑料的耐用很多。











线性叠加这个算法确实是最简单的实现方式,FRC比赛里也是这么写的
L298N驱动麦克纳姆轮够不够?感觉电流有点紧张
O型和X型的区别讲得很清楚,之前做小车就是X型安装结果原地转不了,后来改成O型才搞定