麦克纳姆轮全向移动入门:运动学解算与Arduino实现

2026-10-23 15:58:25 21阅读

麦克纳姆轮大概是做智能小车最有意思的轮子了。普通轮子只能前进后退,差速转向还得靠两轮转速差。麦克纳姆轮不一样,四个轮子配合好,小车可以平移、斜走、原地旋转,全向移动不在话下。这篇文章把运动学原理和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之间,正值正转负值反转。

麦克纳姆轮小车 Arduino 与 L298N 接线示意

常见坑与调试建议

第一个坑是轮子旋向装反。如果小车平移方向不对,大概率是某两个轮子的左旋右旋搞混了。解决方法是逐个测试:单独驱动一个轮子,看辊子方向对不对。

第二个坑是供电不足。四个电机同时启动电流很大,如果用9V方块电池肯定不够。建议用3S锂电池(11.1V)或者12V航模电池,配合BEC给Arduino单独供电。

第三个坑是辊子磨损后打滑。麦克纳姆轮的辊子是着地的关键,磨损后全向移动精度会明显下降。建议买铝合金辊子的版本,比塑料的耐用很多。


作者:开源复现员
链接:https://www.aiddithome.com/p/3e59db5b0ee9a.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论

线性叠加这个算法确实是最简单的实现方式,FRC比赛里也是这么写的

下班才有空
2楼 · 1天前

L298N驱动麦克纳姆轮够不够?感觉电流有点紧张

拆开看看再说
3楼 · 1天前

O型和X型的区别讲得很清楚,之前做小车就是X型安装结果原地转不了,后来改成O型才搞定