![创客玩智能硬件创意制作](https://wfqqreader-1252317822.image.myqcloud.com/cover/9/26212009/b_26212009.jpg)
03 技术宅教你自制全向麦克纳姆轮战车
让我们来想象一个场景(见图3.1):你深夜开车回家,在小区里转了一圈又一圈,好不容易找到一个车位,但是发现前面的车乱停,剩下的空间正好只能停放你的车,连一点空隙都不给你,你说怎么办?
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a269.jpg?sign=1738880408-df1GGiyN9AGmpAD4hTUx51RBKtuAKon7-0-e4ce3af9c04ce9aadf76538e541aa27a)
视频演示二维码
眼睁睁地看着一个车位就是停不进,是不是很不爽?是不是很恼火?于是,新的组合开始了,你有没有想过,当横行霸道的螃蟹遇到了汽车,会发生什么?
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a272.jpg?sign=1738880408-P9NCtImoSnQf5zboQEGzOOfQqjG1FDPK-0-a4e33de14d1bb28d33c4793fe46b8080)
这就是神奇的麦克纳姆轮,请感受一波神奇的操作:横向入库(见图3.2)。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a270.jpg?sign=1738880408-ofvV4sG1cq6DjHrLNmJRlWGchRbWnolC-0-7fd83ba43b1d9c00d3dca2677f3bcc0f)
图3.1 制作初衷
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a271.jpg?sign=1738880408-vQTLsmj3cEhc64ptxszJDkU2vJgqBQgA-0-660f1aaa7028c446aeda640487b43108)
图3.2 设计目标
麦克纳姆轮具有神奇的全向行动能力,受到很多机器人爱好者青睐,例如RoboMaster机甲大师比赛中,一些机器人采用的就是麦克纳姆轮(见图3.3)。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a273.jpg?sign=1738880408-W5i3N3Q0qwfrpgMiYy031qddF70ZerQe-0-3b41a973b9fb74ee0da321179f5f5941)
图3.3 其他运用了麦克纳姆轮的机器人
但麦克纳姆轮动辄几百元的价格,让热爱它的小伙伴们望而却步。那是否麦克纳姆轮就与我们普通创客爱好者无缘了呢?当然不是,本教程就教你自制麦克纳姆轮,并用麦克纳姆轮与其他材料制作出一辆麦克纳姆轮战车。只要你身边有3D打印机和激光切割机(可选),就跟我一起制作出一辆全向小车吧!
3.1 自制麦克纳姆轮
制作麦克纳姆轮所需材料与工具见表3.1。
表3.1 制作麦克纳姆轮所需材料与工具
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a523.jpg?sign=1738880408-naQZOlDbtAWXReuUawGxUODckEZUVyYv-0-7afe45e1e2620a972e2657b3e9eb23fb)
1 将麦克纳姆轮模型用3D打印机打印出来,每个轮子由1个大轮与9个从动轮组成。左旋与右旋模型各打印两个,从动轮左右通用,打印4×9=36个。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a274.jpg?sign=1738880408-S1SfZURLWEJ90L2xPTOPtmoJF7ydCGB5-0-7c92380605b6123ff7a7f8d521f2385e)
2 将热缩管裁剪至适当长度套在小从动轮上,用镊子夹住,使用热风枪加热热缩管,使热缩管受热缩紧,最后使用美工刀将边缘多余的热缩管割掉,每个小从动轮都如此加工。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a275.jpg?sign=1738880408-L47K3UAwvz61rspBiTADWruscHigYBYy-0-2d9e93f7c6b5e55e7090dd5b531796f0)
3 用大头针穿过从动轮并固定在大轮上,确保足够顺滑即可。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a276.jpg?sign=1738880408-8qu03m2AQwpDbBMjfpABYpIBp1bLhQQb-0-19008148f531217d6d2d93bad986f018)
4 重复上述步骤,麦克纳姆轮就制作完成啦!
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a277.jpg?sign=1738880408-zIw1PnRhsnJDh757j7XRSlPRmBa41l8I-0-0bd1008c7b0b6c17ebe40ebe16ef1bf4)
表3.2 电路部分所需材料
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a524.jpg?sign=1738880408-HB3yin1GmFI1a34FDhItmC9mWa2dmd0j-0-44955fae9154481541fba3083feabee0)
3.2 电路部分
接下来就要开始制作战车的电路部分了。在制作控制电路之前,我们先来进行一步简单的操作:在战车底盘上安装电机。用塑料销钉和电机固定座将4个N20减速电机分别固定在激光切割好的木板底盘上,将麦克纳姆轮安装在电机轴上,如图3.4所示,底盘就制作完成啦。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a278.jpg?sign=1738880408-4cfGpbycGgG0z1xwQDf9ZvaubtlEfgL8-0-5d78eb38d12f5486321de458bb170947)
图3.4 制作麦克纳姆轮战车底盘
电路部分所需材料见表3.2,材料实物如图3.5所示。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a279.jpg?sign=1738880408-zcrMF0LgmkQb4phR4gtEKrsATWqhSfhA-0-402674f24d189bda7fa8968b0f25ce01)
图3.5 电路部分实物
接下来我将进行麦克纳姆轮战车控制电路部分的制作。
1 首先将电机与电机驱动板之间焊接好导线,并将各电机信号线以及电源线用杜邦线母头引出待用。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a280.jpg?sign=1738880408-9BtwSZdCQpQfkLFX7VKUQ89SSLG1w0SC-0-dc40d876a38a42276c396e8f88071ba0)
2 准备好前挡板、电池仓挡板以及固定件。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a281.jpg?sign=1738880408-25J7xTw6JWtXsPhYEhV2fmGFics4SDxU-0-bf03168e3db3e4c0372f9be4565602cd)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a282.jpg?sign=1738880408-IevBMPWmlAFPkCYPp1K7jL1cfX9Y8srV-0-e3fa9988094bbc5799a1a75e6486e974)
3 安装好电池仓与前挡板。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a283.jpg?sign=1738880408-qkSvs5Cl49fMKnWP2gLPhwtq5oXmYQQ2-0-2c3432ee9ce12b253df438ad7845b91f)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a284.jpg?sign=1738880408-AULhBPcDu3o4FNuIkyFDfjuxla73tUGk-0-e47db8c7b918a165f9f0027125de3bb9)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a285.jpg?sign=1738880408-OJcDoL44VUbfZNnHcZaB090GM4sVOvej-0-fb18247f263bd738ae9f3c1268a35a75)
4 将Arduino核心控制板Athena固定好后,将底板引出信号线与电源线接好。共8根信号线控制4个电机的正反转。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a286.jpg?sign=1738880408-DwHj5mBZUbTMdXskqKLKnD7KdfrouKIR-0-9d9eda898e0cfd6b5404a97cafaaf55f)
5 将超声波模块和固定座固定好后装在小车上。适当移动电池与零件位置,将小车重心保持在小车中间位置,至此,麦克纳姆轮战车就完成啦!
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a288.jpg?sign=1738880408-z6sx872npvSnpfOlbF022Nz6ps2PQkdH-0-32907b1619cc2304960431230829dc1d)
6 其实它还能换头像呢,我用激光切割出一个酷炫的“麦熊头像”。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a289.jpg?sign=1738880408-SPWpJkkllEKx9ZhV4gRXZ7vlDnyFvGuM-0-c0838ea812820310acfe4a3b251eb4f9)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a287.jpg?sign=1738880408-VIZv3uLdnWSAAEJox225b09SbvhdEL6f-0-68239bcfe7a08af1d606c7630bee82d1)
图3.6 Arduino核心控制板Athena
此小车采用的是捣鼓车间出品的Arduino核心控制板Athena(见图3.6),它自带传感器与蓝牙接口,可以满足大部分项目需求。
无论是Arduino Uno还是Arduino Nano,都只有6个PWM口(编号分别为3、5、6、9、10、11),无法满足控制4个电机,共需要8个接口输出PWM信号的需求。Arduino MEGA2560有8个以上的PWM接口,但体积过大,不适合该项目。我在引脚分配上做出了调整,使用4个PWM接口与4个数字口就可以实现4个电机的调速,我们知道PWM就是数字口的占空比,当引脚为低电平输出PWM信号时,可以调节速度数值为0~255,该数值为255时电机转速最快;反之,当引脚为高电平输出PWM信号时,调节速度数值也是0~255,数值为255时电机停止,PWM输出0时电机转速最快。这样,只需要在程序中调节PWM信号的参数与数字口的输出,就可以控制电机的速度与旋转方向了,调速说明见表3.3。
表3.3 调速说明
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a525.jpg?sign=1738880408-obbw5hQW6f89OuPkswKScp8F6AHuukPv-0-8accb9ea8e441b3a3649c820290a36a3)
注:表中“1”代表高电平,“0”代表低电平,“PWM”代表调制脉宽波。IN1、IN2控制电机A,IN3、IN4控制电机B。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a290.jpg?sign=1738880408-HUBCXJey2B8bSVD1SmS8JLG5gj81Gt8r-0-acc9e983f4ee267b372bb1def82fda97)
图3.7 整个麦克纳姆轮战车电路的连接方式
有了Arduino核心控制板Athena的介绍和PWM调速说明,整个战车的电路就很简单啦,电路连接方式如图3.7所示。
3.3 程序编写
麦克纳姆轮与普通轮子的区别在于麦克纳姆轮旋转时,由于存在斜向的从动轮,会同时产生一个斜向的力,当我们控制轮子旋转的速度与方向时,将斜向的力增强或抵消,就可实现小车的全向移动,完成横方移、斜方向移动等普通小车无法完成的高难度动作,如图3.8所示。
麦克纳姆轮战车采用手机App遥控的方式来进行操作,手机端控制采用的是现成的“可控Ctrl”App,手机与战车之间通过蓝牙通信,手机端通过摇杆控制小车的全向移动。
麦克纳姆轮战车下位机端的编程思路是:摇杆通过蓝牙返回Joy_x与Joy_y两个变量,最大为1,最小为-1,两坐标遍历半径为1的圆内。程序中有8个方向移动的子程序,程序思路是摇杆活动半径大于0.5以后,开始判断属于哪个范围内,并执行相对应的子程序。最开始采用的是判断坐标范围,发现效果并不理想,最终采用通过计算tan值判断该点所在象限,从而判断该点所在的区域,这样的方法在内圆内不作执行指令,方便操作。另外可以将整周的圆八等分,算法简洁可靠。摇杆部分算法如下,完整程序请从本书下载平台(见目录)下载。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a291.jpg?sign=1738880408-KKmrtNCsNGyqdDJSBBZMGnzj8Sajax2g-0-dcf6345f74c33b2e4710bede2599bceb)
图3.8 麦克纳姆轮全向移动原理解析
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/029.jpg?sign=1738880408-nKHUuOT2R0CSNGFIeJTq2nXexP2RIved-0-f754d41d0d2d368397e435b2efad5256)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/029-2.jpg?sign=1738880408-tqvExb5uWutBocuocsua5t8Sq4qjN5H8-0-cf0dda3fcf50fa1810132e609fa0e415)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/030.jpg?sign=1738880408-LHsGUHtYUyrFZXdorXwLdM93u4HJ7Pz4-0-32f8cf703acf59ac0751e1daa14cb6fa)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/030-2.jpg?sign=1738880408-AYpHr2oPEp2tRflG8o2ADFURXDjDIhIe-0-08c6e5cbd6bf45531e4c72c3669cd049)
至此,完整的麦克纳姆轮战车就制作完成啦!