玩轮式机器人最爽的画面,大概就是小车不拐弯、直接横着滑进工位。麦克纳姆轮就是干这个的:四个轮子上斜着装了一圈小滚子,滚子跟轮轴成45度,转起来能同时往前推和往侧推,四个轮子一配合,前进后退、左右横移、原地旋转、斜着走全都行。原理不难,但真正装起来,卡住新手的第一道坎往往不是代码,是四个轮子的摆放和四块电机的接线。
为什么会有"左右手"两种轮子
麦克纳姆轮分两种镜像型号,滚子朝一个方向的叫A型,朝反方向的叫B型。四轮小车需要两个A型加两个B型,而且位置不能乱放。从上往下看小车,四个轮子的滚子要排成一个X形:左前和右后用同一种,右前和左后用另一种,这样四股侧向力才能合成出你要的整体运动。
轮子摆错是最高发的翻车点。摆错的表现很典型:你下令往前,它原地打转;你下令横移,它却斜着飘。有个很省事的验证办法——断电以后用手推小车横着走,滑得顺就是对的,一推就卡、就原地偏就是错的,赶紧把右前和左后两个轮换一下位。
四颗电机怎么接,电源怎么供
四颗电机的接线最难的部分在驱动板。最省事的路子是两块双通道驱动板,比如两块型号合适的TT电机驱动加I2C扩展,或者直接用L298N两路一板,前轴用一块、后轴用一块。每颗电机要接两路方向控制脚加一路PWM调速,四颗电机一共占用8-10个IO。
真正要警惕的是供电。四颗电机同时启动,峰值电流轻松破3A,这可不是开发板那一路5V能扛的。务必给电机驱动单独拉一路外部电源,地线跟开发板共地,这是命根子。电源线也别太细,粗线压降小,滚子才不会一吃力就没力。
运动学:全向移动说到底是一张表
麦克纳姆轮的逆运动学很简单,把你想让小车去的方向,换算成四颗电机的转速和转向。用X型布局的话,正向运动学可以写成一张四乘三的矩阵:横移、直行、自转三个自由度,分别乘到四颗轮子上。
落到代码上就是一张动作表。前进是四轮一起正转,左横移是左前右后正转、右前左后反转,右转是左轮正转右轮反转。写代码时把每个动作模式定义好,逻辑就清爽了。横移尤其要注意,必须四轮都参与,只动两轮走不出纯横移,会在原地偏。
几处实测才懂的坑
第一个坑是地面。麦克纳姆轮依赖45度小滚子在平整硬地上滚动,铺地毯、碎石、地面不平都锁死滚子,小车要么不走要么乱飘,只能在瓷砖、木地板、水泥这类平整硬地上跑。
第二个坑是电机匹配。四颗电机最好买一套的,转速不一致,横移必歪。想省心就加编码器反馈,用PID把四轮转速拉齐。第三个坑是热和电容,四电机大电流记得在电源端并联电容滤波,防尖峰把开发板重启。
说点实在的
麦克纳姆轮这东西,硬件装对了,代码就是一张表的事。轮子X型摆对、电源共地、电机匹配,三步做完,你的小车就能在桌面上随意滑行了。别一上来就陷进调PID,先把机械和供电这几个物理坑填平,剩下的都是水到渠成。

X型布局那张运动学矩阵讲得清楚,其实代码就是查表,关键还是得硬件先对。地平不平这坑也排了,地毯上真没法跑。
建议新手先别碰PID,把轮位和供电弄稳,小车就能很顺地横着走了,这篇实操性很强。
一直想给小车加横移,看了这篇总算把轮子摆放整明白了,回去就把右前左后换一下。
横移那个坑太真实了,我之前就只动两个轮,结果原地转圈,看了才知道要四轮都参与。
供电这块说到点子上了,四电机峰值电流真不是开发板能扛的,我上次直接烧了块板,共地必须牢记。