![创客玩智能硬件创意制作](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=1739305422-ZzBKtZE4MK0mOC9qSGV88gTzU4iJgUGT-0-ed1e561d7b267025fa0383869c4d01b6)
视频演示二维码
眼睁睁地看着一个车位就是停不进,是不是很不爽?是不是很恼火?于是,新的组合开始了,你有没有想过,当横行霸道的螃蟹遇到了汽车,会发生什么?
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a272.jpg?sign=1739305422-iSTN4dLDFf0yYntiFxTU7gwlnoPtJCDk-0-c12a7587a05b08b5ca0adff8ea3987b7)
这就是神奇的麦克纳姆轮,请感受一波神奇的操作:横向入库(见图3.2)。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a270.jpg?sign=1739305422-T6AZqwgE4xLGWrIAP07vnyP9CCTEjeH5-0-973993350594cf070d98b914052a6ebb)
图3.1 制作初衷
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a271.jpg?sign=1739305422-JlSoaSxFs6b7JbCVz6ZL8lnWfcQv0llH-0-51eac887117c9329894e2dcb70563596)
图3.2 设计目标
麦克纳姆轮具有神奇的全向行动能力,受到很多机器人爱好者青睐,例如RoboMaster机甲大师比赛中,一些机器人采用的就是麦克纳姆轮(见图3.3)。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a273.jpg?sign=1739305422-R1mEv0coOVOKRRjAaZoGUTYc1XqrAxr2-0-785f7e948153582ddd71fdb1802d48f8)
图3.3 其他运用了麦克纳姆轮的机器人
但麦克纳姆轮动辄几百元的价格,让热爱它的小伙伴们望而却步。那是否麦克纳姆轮就与我们普通创客爱好者无缘了呢?当然不是,本教程就教你自制麦克纳姆轮,并用麦克纳姆轮与其他材料制作出一辆麦克纳姆轮战车。只要你身边有3D打印机和激光切割机(可选),就跟我一起制作出一辆全向小车吧!
3.1 自制麦克纳姆轮
制作麦克纳姆轮所需材料与工具见表3.1。
表3.1 制作麦克纳姆轮所需材料与工具
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a523.jpg?sign=1739305422-B39D3kEeySH3g9IsdtXYWTk1WucfrmsC-0-486341082a1cefd76c9afe6344342a47)
1 将麦克纳姆轮模型用3D打印机打印出来,每个轮子由1个大轮与9个从动轮组成。左旋与右旋模型各打印两个,从动轮左右通用,打印4×9=36个。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a274.jpg?sign=1739305422-9ADMfp1Kfltv2UYtjkY7HaZ4NPSAiLIB-0-7b18986ef5fba1886a2f6b5ff3cf825c)
2 将热缩管裁剪至适当长度套在小从动轮上,用镊子夹住,使用热风枪加热热缩管,使热缩管受热缩紧,最后使用美工刀将边缘多余的热缩管割掉,每个小从动轮都如此加工。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a275.jpg?sign=1739305422-AZXExpr8BoqBtDMnCLy91In0ZtA3wNX1-0-7b86793e99a82f7ece0f3b5c3e37ec46)
3 用大头针穿过从动轮并固定在大轮上,确保足够顺滑即可。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a276.jpg?sign=1739305422-LaQQsVDdY5qHTwQ59ft1EpYHMh2EQVUn-0-0dd6ac4e6804c3e673e671989ab25688)
4 重复上述步骤,麦克纳姆轮就制作完成啦!
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a277.jpg?sign=1739305422-b2lMXny4jEYnMqpWs78imFX2bxzLXBG4-0-35243b67d7c857655c18a2b4c4d86e6e)
表3.2 电路部分所需材料
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a524.jpg?sign=1739305422-1cRPPheotUCj5C0vGWsSRKTDHS4TqOPw-0-aa80a9f77c592a3c82f508b91966e636)
3.2 电路部分
接下来就要开始制作战车的电路部分了。在制作控制电路之前,我们先来进行一步简单的操作:在战车底盘上安装电机。用塑料销钉和电机固定座将4个N20减速电机分别固定在激光切割好的木板底盘上,将麦克纳姆轮安装在电机轴上,如图3.4所示,底盘就制作完成啦。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a278.jpg?sign=1739305422-1R40NEFRf19F37Zau9mrYD5YXHuvOoqn-0-3011be399f7cef84da20043a084c843b)
图3.4 制作麦克纳姆轮战车底盘
电路部分所需材料见表3.2,材料实物如图3.5所示。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a279.jpg?sign=1739305422-icDxk5Xbm84dfghDp8quJeyTk3uvGXS3-0-9afc36f60937a7f751fce0075959f274)
图3.5 电路部分实物
接下来我将进行麦克纳姆轮战车控制电路部分的制作。
1 首先将电机与电机驱动板之间焊接好导线,并将各电机信号线以及电源线用杜邦线母头引出待用。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a280.jpg?sign=1739305422-3oBDnjmiaZFtyIDO9mvFrelGLfmkTa8F-0-7c32adb97c8b4e2f55ae10fb2d71fb79)
2 准备好前挡板、电池仓挡板以及固定件。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a281.jpg?sign=1739305422-4x1KZbOuV53iNuT3opgWS9dvYtjmWyIf-0-ccd1b2ab8e76fd16f35431ada9a9963c)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a282.jpg?sign=1739305422-rbsnEfTQ8imWbhNya9VHK1JnQhAIORfV-0-b8d53d8deea9da853a13dfa7b537bba8)
3 安装好电池仓与前挡板。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a283.jpg?sign=1739305422-kA7IvYCDfB5nuDFDB67yO9y2TWbRtVXe-0-e678603df13f7ca10f9f4ca3ab2e764d)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a284.jpg?sign=1739305422-1YBqMuTEoGWPpRXVNR5Z841oCLypCbLR-0-289137999e4536fa38a4914f24320194)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a285.jpg?sign=1739305422-c1cjLhIwoH0Cx7cgHCE6JzxKSCjmxYVH-0-093291ef8b2c9103b97655fe748eba01)
4 将Arduino核心控制板Athena固定好后,将底板引出信号线与电源线接好。共8根信号线控制4个电机的正反转。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a286.jpg?sign=1739305422-6RxrTGLZC30WGpi2R0yJbIReNmQYjsie-0-df3d51a6cd260b9d9cf5b9890654506e)
5 将超声波模块和固定座固定好后装在小车上。适当移动电池与零件位置,将小车重心保持在小车中间位置,至此,麦克纳姆轮战车就完成啦!
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a288.jpg?sign=1739305422-7uA9qSsKXCRBgvRFam1tySuITgyR3m0I-0-97f0a33a16ee135a0de00a4520595f6a)
6 其实它还能换头像呢,我用激光切割出一个酷炫的“麦熊头像”。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a289.jpg?sign=1739305422-eJforE7rRnf2ja5ubIxL2uU5rFFz0mdZ-0-63cc8fb80682998fa0328595b4b8f1a0)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a287.jpg?sign=1739305422-pypwmaECP7qDooHMr4yicGx0Btq91lkA-0-24cd05f94afb73634047199ea3e631d9)
图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=1739305422-Zlby2qTCXineH7FyfB05AtnKA3u4Lz8q-0-769d2d788d3925962ad44cf189f46859)
注:表中“1”代表高电平,“0”代表低电平,“PWM”代表调制脉宽波。IN1、IN2控制电机A,IN3、IN4控制电机B。
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/a290.jpg?sign=1739305422-4hiaeHuAheGjFIcwuDVkb1W8iNeta8wt-0-631e611787c7bc5a6745db51dd8ddbf1)
图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=1739305422-YU964H1oMa4wkJo81gXkjN6tC6RB27EE-0-11e4c2e0f420246f36ff9d7c9923ca14)
图3.8 麦克纳姆轮全向移动原理解析
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/029.jpg?sign=1739305422-05RK2aJquGYTil84TAK0yRAb1hXbsG9r-0-1a9073358f0e055dc5f1e836789830d0)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/029-2.jpg?sign=1739305422-k22hfML4S4sUnwObGttHmsGYQ2t4ZTz6-0-e1c5bce9cc6871eda22ded7b4430f8a3)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/030.jpg?sign=1739305422-UfUuLabX3iwROAmqx1W3S3SzIiu9uPrX-0-a057dca20f8924cdb146a3dece76c5f3)
![](https://epubservercos.yuewen.com/EDCAA2/14642183004085406/epubprivate/OEBPS/Images/030-2.jpg?sign=1739305422-7BcWJik8NsblGmdA6450MdPZxiQdj4qm-0-dda78f5357b7053ffb46ca9224403999)
至此,完整的麦克纳姆轮战车就制作完成啦!