六足机器人是最炫酷的机器人之一,但是通常价格昂贵。原因之一是它们由多个零部件组成,并且使用18个伺服,而这些都需要由某些微控制器来供电和驱动。在本教程中,我将展示如何通过使用3D打印所有零部件并仅使用12个伺服来构建您自己的Arduino六足机器人,或简称为Ardupod。准备好了吗?那让我们开始吧!
硬件
- • Arduino UNO (或其他可兼容Arduino的开发板)
- • Adafruit 16通道PWM扩展板(或模块;但是,此处强烈建议使用该扩展板,因为它的原型面积很小)
- • 12个带有金属齿轮的微型伺服(MG90S或其他同等规格产品)
- • 4.8V或6V电池(镍氢、锂离子等)
- • 60个M3螺栓+120个螺母和垫圈(仅用于身体,对于其他部件的安装您需要再另外添加)
- • 6个相同的圆珠笔弹簧
- • HC-SR04超声波测距模块(可选)
软件
- • Arduino IDE
- • SolidWorks或其他3D建模软件
- • Github – 您在这里可以找到所有用于打印的 Arduino源代码和3D模型
其他工具
- • 3D 打印机
- • 非常建议使用万用表、烙铁和电钻等其他工具
设计
如上所述,本次所设计的六足机器人仅需要12个伺服来移动六条腿。这意味着每条腿只配有两个伺服,具有两个自由度(DOF)。与通常的每条腿有三个伺服相比,这种方法有几个优点。我们将需要更少的功率以及更少的处理时间来驱动伺服。但是,移除一个伺服也意味着我们牺牲了一个自由度,因此在对机器人进行稳定爬行的编程上会更具有挑战性。
为了弥补缺少一个伺服所带来的缺陷,所有腿部都有一个可以将伺服的角运动转换为腿部线性运动的机械系统。您可以在以下动画演示中看到该机制的工作原理。
正如您在视频中所看到的那样,该机制内含一个弹簧。弹簧的作用是对在打印过程中造成的所有误差进行补偿。另外,弹簧还可以提供更强大的支撑力,从而有助于实现更自然的爬行运动。您可以在任何地方获取弹簧。比如,圆珠笔里的小弹簧就可以用在这里,但是您可能需要稍微修剪一下长度。请确保您所获取的弹簧可以压缩,并且足够支撑机器人的重量。此外,在开始打印零部件之前,请确保弹簧适用于打印好的部件 leg_1和 leg_1_seg_1(详情参见 Github )。
组装
接下来,欢迎进入本文中最难的部分:组装腿部。无论是在构建上还是编程上,这都属于相当高阶的一个项目。我们将假设打算制造这台机器人的人对于使用诸如电钻和烙铁之类的设备具有基本的操作技能。
组装腿部时,请始终记得必须在每两个需要上下移动的塑料件之间放置一个垫圈。您可能需要用电钻调整孔的大小,保证螺栓能够自由旋转。同时,请注意每个螺栓需要两个螺母。
这对于保持整个支撑系统的正常工作十分重要。组装腿部时,请确保不要将底部螺母拧得太紧,并调整至使塑料部件仍可以自由移动。然后,顶部螺母要尽可能拧到最紧。底部螺母保证了所有部件的自由移动,而顶部螺母保证了所有部件的紧固连接。如果您的螺母拧的过松,那么腿部会变得非常不稳定;如果拧的过紧,将会对伺服带来不必要的负载。对腿部的调整可能要经过几次尝试才能完成。这是本教程中最重要的部分,因此请确保正确完成此步骤。
伺服通过一个小小的“三角臂”来固定在适当位置,这种三角臂通常用于将伺服齿轮轴连接到您想要移动的任何物体上。但是,在这种情况下,三角臂的位置将会被固定,以便当伺服运转时,它也会自行移动,从而使腿部移动。
请确保您使用的是金属齿轮伺服,而不是塑料齿轮伺服!在这种应用中如果使用塑料齿轮,不仅强度比金属的低,而且其齿轮也可能会很快就损坏。
伺服支架分为三部分,使其更易于打印。假设零部件是用丙烯晴丁二烯苯乙烯(ABS)打印的,那么可以使用丙酮来稍微溶解ABS,然后将这三部分粘在一起,再使其变干。或者,如果您有条件使用更高质量的3D打印机,也可以一次性打印出整个部件。
六足机器人的剩余部分就没有那么复杂了:机身身体由两块板组成,我们可以在其上安装所需的所有电子设备、电池和传感器。您可以在打印之前设定好用于安装电子设备的孔,也可以在打印之后再钻孔。所有零部件和打印说明均可在 Github上获取。
成功!到这里,您已经完成了机器人的组装,完成了本教程中最困难的部分。如果出现了什么问题,请不要担心,再次进行尝试。如有必要,请尝试对打印件进行微调,然后查看是否有效。
接线
到目前为止,这是最简单的部分了,因为我们将使用 Adafruit PWM扩展板来完成大部分工作。我们把扩展板连接到 Arduino,然后把伺服连接到扩展板。如果您使用的模块无法直接连接到 Arduino,只需要将SDA、SCL以及 V+连接到 Arduino相应引脚即可(详细信息请参见下图)。
您可能已经注意到了,这里有一个放置电容器的位置,但是却没有电容器。不用担心,这是有意为之!当许多伺服同时运转时,电流峰值将达到几安培。电容器将用来消除这些尖峰。您可能需要这种电容器来确保所有伺服的电源稳定。对于这种目的,使用电解电容器是最合适的,但是对电容值的选择更多的是凭借猜测,而不是确切的科学计算。通常来说,电容值越大越好。电容器的电压应略高于电池电压,因此,如果使用6V电池为所有伺服供电,那么6.3V 4700µF应该可以满足需求。
在扩展板上,您还会注意到有一个单独的电源端子。那是因为 Arduino本身无法提供足够的电流来一次运行一个以上或两个以上的伺服,需要将电池连接到此端子以及 Arduino电源输入端(VIN和GND引脚)。
就是这样,基本的接线已经完成!如果需要,您还可以添加更多模块和传感器,例如超声波测距仪。
在本教程中,我将添加一个超声波传感器,以使机器人能够在附近有障碍物的情况下移动。我之所以选择 HC-SR04,是因为它们非常便宜,并且易于与 Arduino一起使用。而且,这种特定传感器的形状类似于眼睛,您可以借此来分辨出机器人在看什么!
我将传感器安装在一个额外的伺服上(有关安装细节请参见图7)。对该传感器进行接线也非常简单,只是请注意不要将VCC引脚直接连接到电池上!如果您使用的是6V电池,这样连接可能会损坏传感器。将VCC引脚连接到 Arduino 5V输出端,并将GND连接到GND。您可以将TRIG和ECHO引脚连接到剩下的任何数字引脚上,但要记得在代码中对它们进行适当设置。我将它们连接到引脚3(TRIG)和引脚2(ECHO)上,因为我想在需要串行端口的情况下保持引脚0和1断开。
结论
现在,您应该已经完成了所有硬件的组装。接通电源之前,强烈建议您对所建立的每个连接进行测试和确认。
希望您到目前为止没有遇到很棘手的问题。如果您对该设计有任何改进的建议,请在 Github上与我交流!请继续关注本项目的第二部分,我们将进入到下一阶段,进一步研究分析逆动力学,并且对这个神奇的 Arduino六角机器人(或者Ardupod )进行编程。
接下来您将看到的是 ArduPod一次伸展所有腿部!