可扩展性高,四足机器人斯坦福Pupper的小弟来了!
这周给大家带来的是一个非常详细的有关四足机器人的设计和组装的项目。
话不多说,进入正文。
## 正文
在构建这个项目的时候,主要目标是让系统尽可能的强大,这样在实验各种行走和奔跑姿态的时候,可以不用一直担心硬件会出现故障,并可以尝试复杂的姿态和动作。
第二个目标是能利用现成的爱好部件和3D打印技术,使四足机器人的成本相对较低,实现快速原型设计。
这两个目标结合在一起,可以为进行各种实验提供一个强大的基础,让人们针对更具体的要求,如导航、避障和动态运动来开发四足机器人。
## 1、概述和设计流程
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603849216031-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603849235592-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603849244323-image.png)
这个四足机器人是在Fusion 360 3D建模软件中设计的。我首先将伺服电机导入到设计中,并围绕它们构建了腿部和身体。我为伺服电机设计了支架,它提供了一个与伺服电机轴截然相反的第二个支点。在电机的两端都有双轴,给设计提供了结构上的稳定性,并消除了腿部承受一定负荷时可能出现的任何偏斜。链接的设计是为了固定一个轴承,而支架则用螺栓来固定轴。一旦使用螺母将链接安装到轴上,轴承将在伺服电机轴的另一侧提供一个平滑而坚固的支点。
在设计四足机器人时,另一个目标是尽可能保持模型的紧凑,以最大限度地利用伺服电机提供的扭矩。链节的尺寸是为了实现大范围的运动,同时尽量减少总长度。做得太短会使支架发生碰撞,减小运动范围,做得太长又会对执行器施加不必要的扭矩。最后,我设计了机器人的主体,Arduino和其他电子元件将安装在上面。我还在顶板上留下了额外的安装点,使项目可以扩展,以便进一步改进。可以添加传感器,如距离传感器,摄像头或其他驱动机制,如机器人抓手。
注:这些部件包含在以下步骤之一。
## 2、所需材料
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852662190-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852674173-image.png)
以下是制作你自己的Arduino供电四足机器人所需的所有组件和部件清单。
### 电子元器件
- Arduino Uno x 1
- Towerpro MG995 伺服电机 x 12
- Arduino传感器扩展板(我推荐V5版本,但我的是V4版本)
- 跳线(10根)
- MPU6050 IMU(可选)
- 超声波传感器(可选)
### 硬件
- 滚珠轴承(8x19x7mm,12个)
- M4螺母和螺栓
- 3D打印机的耗材
- 亚克力板(4mm)
### 工具
- 3D打印机
- 激光切割机
本项目最主要的成本是12台伺服电机。建议使用中档到高档的版本,而不是使用便宜的塑料版本,因为它们往往很容易损坏。不包括工具,这个项目的总成本大约是60美元。(国内会便宜一些)
## 3、数字化制作的零件
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852729191-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852717700-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852738939-image.png)
这个项目所需的部件必须是定制设计的,因此我们使用了数字制造部件和CAD的力量来构建它们。
除了一些用4mm亚克力激光切割的部件外,大部分部件都是3D打印的。打印件的填充率为40%,壁厚2层(0.8mm),喷嘴为0.4mm,0.1mm的层高,使用PLA耗材。
一些部件确实需要支撑,因为它们具有复杂的形状与悬空,然而,支撑很容易获得,并且可以使用一些刀具移除。
你可以选择你所选择的耗材的颜色。在文末可以找到完整的零件列表和STLs来打印你自己的版本和激光切割零件的2D设计。
注:从这里开始,将使用以下列表中的名称来称呼这些部件。
### 3D打印部件
- 臀部伺服支架 x 2
- 臀部伺服支架镜x2
- 膝部伺服支架 x 2
- 膝关节伺服支架镜 x 2
- 轴承座 x 2
- 轴承座镜x2
- 腿部x4
- 伺服喇叭链接 x 4
- 轴承连杆x4
- Arduino支架 x 1
- 距离传感器支架 x 1
- L型支架x4
- 轴承套x4
- 伺服喇叭垫片x24
### 激光切割部件
- 伺服支架面板 x 2
- 顶板x1
除去各种垫片,总共有30个零件需要3D打印,总共有33个数字化制作的零件。
总打印时间约为30小时。
## 4、准备连接件
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850546602-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850554026-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852790485-image.png)
你可以在一开始就设置一些零件来开始组装,这样会使最后的组装过程更加容易管理。
可以从链接开始。制作轴承连接件时,轻轻打磨轴承孔的内表面,然后将轴承推入两端的孔中。确保将轴承推入,直到一侧平齐。要建立伺服角链接,抓取两个圆形伺服角和附带的螺丝。将角放在3D打印上,并将两个孔对齐,接下来将角从3D打印一侧的螺丝拧到3D打印上。可能需要使用一些3D打印的伺服喇叭垫片,因为提供的螺丝有点长,在伺服电机体旋转的时候会和它相交。一旦链接建成,你就可以开始设置各种支架和托架了。
两种类型的所有4个链接都要重复这样做。
## 5、准备伺服支架
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850700394-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850707362-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850714486-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850726165-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603850806480-image.png)
要安装膝部伺服支架,只需将一个4mm的螺栓穿过孔,并用螺母固定。这将作为电机的辅助轴。从臀部伺服支架上,将两个螺栓从两个孔中穿过,再用两个螺母固定。接下来,抓住另一个圆形的伺服喇叭,用喇叭附带的两个螺丝将其固定在支架略微隆起的部分。
再次建议使用伺服喇叭垫片,这样螺丝就不会突出到伺服的间隙中。最后,抓住轴承座部分,将一个轴承推入孔中。你可能需要轻轻打磨内表面,以保证良好的配合。接下来,将一个轴承推入轴承向,轴承座件弯曲。
参考上面所附的图片,同时建造支架。其余的支架也重复这个过程。镜面的也是类似的,只是所有的东西都是镜面的。
## 6、组装腿部
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850865310-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850878570-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850891043-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850899662-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850911119-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850923325-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603850932965-image.png)
一旦所有的链接和支架组装,你可以开始建立机器人的四条腿。首先将伺服系统连接到使用4 x M4螺栓和螺母的支架。确保对准伺服轴与另一侧的突出的螺栓。
接下来,使用伺服喇叭连接片将臀部伺服与膝部伺服连接起来。先不要用螺丝将喇叭固定在伺服电机轴上,因为以后我们可能需要调整位置。在另一侧,用螺母将包含两个轴承的轴承链接片安装到突出的螺栓上。
其余的三条腿重复这个过程,四足的4条腿就做好了!
## 7、组装机身
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851161190-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851170626-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851180893-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851190059-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851210637-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851218691-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851231307-image.png)
接下来,我们可以重点打造机器人的机身。机身内有4个伺服电机,使腿部有3度自由度。首先使用4个M4螺栓和螺母将舵机固定在激光切割的舵机支架面板上。
注意:确保伺服电机的连接,如上图所示,轴在工件的外侧。其余三台伺服电机也要重复这个过程,记住方向。
接下来,用两个M4螺母和螺栓将L型支架连接在面板两侧。这一块可以让我们将伺服支架面板牢固地固定在顶板上。重复这个过程,再装上两个L型支架和第二个伺服支架面板,固定第二组伺服电机。
一旦L型支架就位,使用更多的M4螺母和螺栓将伺服支架面板固定到顶板上。从外侧的一组螺母和螺栓开始(朝前和朝后)。中央的螺母和螺栓也是压住arduino支架片。使用四个螺母和螺栓将arduino支架从顶部固定到顶板上,并对准螺栓,使其也穿过L支撑孔。参照上面所附的图片进行说明。最后将四个螺母滑入伺服支架板上的插槽,用螺栓将伺服支架板固定到顶板上。
## 8、全身组装
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852985091-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603853004913-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603853019716-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851569873-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851583682-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851607395-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851595646-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603851625516-image.png)
一旦腿和机身组装完成,你就可以开始完成组装过程了。使用连接到臀部伺服支架的伺服角将四条腿安装到四个伺服系统上。最后,使用轴承座件来支撑臀部支架的对面轴。将轴穿过轴承,用螺栓将其固定。使用两个M4螺母和螺栓将轴承座固定在顶板上。
至此,四足机器人的硬件组装就完成了。
## 9、接线和电路
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851836376-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851846403-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851855445-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851867349-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851882699-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851893265-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851904454-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851914442-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851924730-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603851933780-image.png)
我决定使用为伺服电机提供连接的传感器扩展板。我建议你使用传感器扩展板v5,因为它具有板载外部电源端口。然而,我使用的那个没有这个选项。
仔细观察传感器扩展板,我注意到传感器扩展板从Arduino的板载5V引脚取电(当涉及到高功率伺服电机时,这是一个可怕的想法,因为有可能损坏Arduino)。
这个问题的解决方法是将传感器扩展板上的5v引脚弯开,这样它就不会连接到Arduino的5v引脚。这样,我们现在可以通过5v引脚提供外部电源,而不会损坏Arduino。
12个伺服电机的信号引脚的连接情况如下表所示。
注:Hip1Servo指的是连接在机身上的伺服电机。Hip2Servo指的是连接在腿上的伺服电机。
#### 腿1(左前方)
- Hip1Servo >> 2
- Hip2Servo >> 3
- KneeServo >> 4
#### 腿2(右前方)
- Hip1Servo >> 5
- Hip2Servo >> 6
- KneeServo >> 7
#### 腿3(后左)
- Hip1Servo >> 8
- Hip2Servo >> 9
- KneeServo >> 10
#### 腿4(右后方)
- Hip1Servo >> 11
- Hip2Servo >> 12
- KneeServo >> 13
## 10、初始化设置
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603852118739-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603852125629-image.png)
在开始对复杂的步态和其他动作进行编程之前,我们需要设置每个伺服的零点。这为机器人提供了一个参考点,它用来执行各种运动。
为了避免对机器人造成损害,你可以把伺服喇叭的链接去掉。接下来,上传下面所附的代码。这段代码将每个舵机置于90度。一旦伺服角达到90度的位置,你就可以重新连接链接,使腿部完全伸直,连接到身体的伺服角垂直于四足的顶板。
此时,由于伺服角的设计,有些连接处可能还是不能完全直。解决这个问题的方法是调整代码第4行找到的zeroPositions数组。每一个数字都代表相应伺服的零点位置(顺序与你将伺服连接到Arduino的顺序相同)。稍微调整一下这些数值,直到腿完全直。
注意:以下是我使用的值,虽然这些值可能不适合你。
int zeroPositions = {93, 102, 85, 83, 90, 85, 92, 82, 85, 90, 85, 90};
代码参考下载见文末。
## 11、运动学小知识
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603852150245-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603852162293-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-28/1603852172650-image.png)
为了使四足机器人执行有用的动作,如奔跑、行走和其他运动,伺服系统需要以运动路径的形式进行编程。运动路径是指终端效应器(本例中的脚)沿途移动的路径。有两种方法可以实现这一点。
一种方法是以蛮力的方式输入各种电机的关节角。这种方法可能会很耗时,很繁琐,而且也充满了错误,因为判断是纯视觉的。相反,有一种更聪明的方法可以达到理想的效果。
第二种方法围绕着输入末端效应器的坐标,而不是所有的关节角。这就是所谓的逆运动学。用户输入坐标和关节角调整,将终端效应器定位在指定坐标上。这种方法可以看作是一个黑匣子,它把坐标作为输入,输出关节角。对于这个黑匣子的三角方程是如何制定的,有兴趣的朋友可以看上图。对于不感兴趣的朋友,方程已经编好了,可以用pos函数来使用,pos函数以x,y,z,也就是末端效应器的笛卡尔位置作为输入,输出三个与电机对应的角度。
包含这些函数的程序可以在下一步中找到。
## 12、编程
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603853202623-image.png)
一旦布线和初始化完成,你就可以对机器人进行编程,并生成很酷的运动路径,让机器人执行有趣的任务。在你继续之前,将附件代码中的第4行改为你在初始化步骤中设置的值。上传程序后,机器人应该开始行走了。如果你注意到有些关节是反向的,你可以简单地改变第5行中的方向数组中相应的方向值(如果是1就变成-1,如果是-1就变成1)。
代码参考下载见文末。
## 13、完工!上路测试!
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852297600-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852311660-image.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/MdnicePic/2020-10-28/1603852333097-image.png)
四足机器人可以迈出5到2厘米长的步子。在保持步态平衡的同时,速度也可以变化。
这款四足机器人提供了一个强大的平台,可以尝试各种其他的步态和其他目标,如跳跃或完成任务。我建议你可以尝试改变腿部的运动路径,创造自己的步态,发现各种步态对机器人性能的影响。
我还在机器人的顶部留下了多个安装点,用于安装额外的传感器,如用于避障任务的测距传感器,或用于在不平坦的地形上进行动态步态的IMU。我们也可以尝试在机器人的顶部安装一个额外的抓手臂,因为机器人非常稳定和坚固,不会轻易翻倒。
希望你喜欢这个项目,并激发你建立自己的四足机器人。
一起享受造物的乐趣吧!
好教程!顶一下!! 弥月 发表于 2020-11-4 10:17
好教程!顶一下!!
谢谢支持{:5_153:} 详细,真好教程 牛逼!牛逼!!! RRoy 发表于 2020-10-29 17:19
好教程 RRoy 发表于 2020-10-29 17:19
需求合作私聊15253274918微信 感谢分享 身边没有3D打印机,能直接买您的散件吗 吼吼吼吼 发表于 2021-3-23 21:45
身边没有3D打印机,能直接买您的散件吗
没有散件,可以去某宝找打印 好教程,很详细,想法很不错 看完之后对我复制Nybble更有帮助!{:6_202:} {:6_215:}。。。 厉害厉害{:6_215:} 很有创意 这个底部的文件下载之后是空文件夹,那个程序看得也不是太清楚,可以重发一下吗?谢谢 好教程,感谢分享 厉害厉害 不错不错!
页:
[1]