一个不受束缚的攀爬机器人

木易
转载
发布时间: 2025-06-09 21:04:57 | 阅读数 0收藏数 0评论数 0
封面
我在这个项目中的目标是设计并建造一个小型无绳攀爬机器人,它使用齿轮齿条系统将自己固定在平行表面之间,并使用简单的杠杆机构和棱柱形关节来缓慢前进。

准备工作:

材料:

材料名称
数量
备注
5V Arduino Pro Mini
1
LM2596降压转换器
1
1AHLipl电池 3.7V
2
JST直角连接器
2
面板安装SPDT拨动开关
1
0.1'' 间距分离接头
1
机器人部件
打印下载地址:https://www.thingiverse.com/thing:4607768
M3垫圈
2
杂线
用于进行电气连接

工具:

工具名称
数量
备注
3D打印机
1
非必须
烙铁
1
剥线钳
1
热熔胶枪
1
螺丝刀
1
万用表
1
安装ArduinoIED的计算机
1
USB电缆和VFTDI板
1
LiPo电池充电器
1
1

设计

这段内容简要回顾了我为这个项目所采取的设计方法。如果你想要开始构建机器人,可以跳到第2步!

动机 一个10*10*10cm的铝制通道(如介绍视频中所示)最初启发我建造这个机器人。这是之前项目的剩余材料,某天看着它时,我想知道是否可以设计出能够攀爬它的某种装置。

基于这个愿景,当我开始这个项目时,确立了以下设计约束:

  1. 机器人应主要由3D打印组件构成(以探索我最近购买的Ender 3 Pro)
  2. 机器人应足够轻巧和小巧,能够在攀爬时举起自己的重量
  3. 机器人在电源、控制和执行器方面应该是完全自给自足的(“无系绳”的)

设计概念 我一直喜欢看齿轮工作,因此被激励去研究一种能结合这种机械元素的攀爬方式。齿条(长直齿轮)和小齿轮(传统圆形齿轮)似乎是实现夹紧功能的最简单方法,该功能可以在机器人“拉动”或“推动”自己向上时将其固定在原位。这就是引导我设计顶部和底部齿条齿轮夹具装配的想法。

我最初考虑使用第三组齿条和小齿轮来解决攀爬动作中的“拉/推”部分,但证明用最终设计中表示的基本连杆来完成这一任务更简单也更轻便。

分析 在着手建模这个机器人之前,我分析了两个关键性能要求:

  1. 它能否在攀爬时不滑落而将自己夹紧/固定在原位?
  2. 它能否在攀爬时将自己推/拉上去?

我制作了一个快速的MS Excel表格来进行计算,证明我选择的伺服电机以及设想的几何形状/齿轮比能够完成任务。通过这些检查节省了很多时间,并允许我在无需物理测试的情况下思考各种场景(如果添加一个0.1公斤的盖子会怎样?如果我改变齿轮尺寸会怎样?)。等到开始打印东西时,我已经可以有根据地猜测它会按预期工作。

迭代 当然,分析必须得到实际结果的支持,而事情很少能第一次就如计划般顺利!这是我开发此机器人经历的大约4个主要迭代过程的一个粗略快照:

  1. 测试齿条和小齿轮夹紧机制本身——它可以“夹紧”并保持原位吗?
  2. 结果:是的,它可以!但是两个偏移的齿条齿轮导致机器人稍微扭转……这在攀爬过程中会成为一个问题吗?
  3. 后续步骤:建模整个攀爬机制以查看其表现如何。
  4. 测试一对齿条和小齿轮机制以及拉/推连杆,在“系绳”条件下(电池、控制器和其他组件未安装到机器人上)——它可以攀爬吗?
  5. 结果:是的,它可以!但是偏移的齿条齿轮造成的扭曲看起来是个问题。机器人前进几步然后就会滑出来。如果我们加快运动速度,它表现得更好!
  6. 后续步骤:加固框架,扩大齿条齿轮夹具上的“脚”区域,并建模带有内置电池和控制器的机器人来测试无系绳设计。
  7. 测试无系绳设计——在携带电池和控制器的情况下,它可以攀爬吗?
  8. 结果:是的,它可以!而且我们所做的更改似乎使攀爬能力更加一致。情况看起来很有希望。
  9. 后续步骤:清理电缆布线,添加开关。尝试用绿色打印,因为也许它想成为一只青蛙?
  10. 测试(希望是)最终设计——如果我们用绿色PLA打印,它还能继续攀爬吗?
  11. 结果:不幸的是,不。我选择的光亮绿色PLA太滑了,甚至不能很好地爬行,更不用说攀爬了。
  12. 后续步骤:尝试几种几何修改以改善攀爬能力(没有运气!),最终切换回哑光黑色PLA(有效!)。

反思与未来工作 完成这个项目非常有趣,再次强调了在我处理具有如此多变量的项目时,仔细观察和有意改进的重要性。当然也有因为沮丧而暂时离开这个项目一两周的时候,但让ItsyBitsy攀爬的挑战总是把我带回来。如果我愿意在这个项目上投入更多的时间,我会专注于:

  1. 在Fusion 360中重新建模整个装配体以便于分享
  2. 进一步改进齿条齿轮的“脚”,可能通过实施柔性结构或类似惠普尔树的机制!
  3. 重新分配组件以降低重心(CG),使其更好地与攀爬力对齐(目前重心较高且偏移,因此除非机器人的“背部”靠墙,否则在攀爬时容易倾斜)
  4. 改进代码以消除对delay()函数的依赖
  5. 添加感应/指示(灯光、声音等)

谢谢阅读!接下来是构建机器人!

2

电子元件

  1. 确保您的每节 LiPo 电池都已充电。
  2. 根据第一张图片中的通用原理图焊接电子元件。一些关键点:
  3. 焊接母 JST 连接器,使其串联。[我们这样做是因为我们希望增加两节电池的电压,这样我们就能看到 Arduino 和降压转换器的输入端总共有 ~7.4V。
  4. 如图所示,在降压转换器的输出附近焊接 3 个 3 针公头。[这些旨在与伺服电机连接,并允许我们轻松断开电机,而无需拆焊引线。
  5. 将 1 个 6 针公头焊接到 Arduino 中,以便使用 FTDI 板进行编程,如图所示。
  6. 电线长度大致如下。
  7. JST 连接器 <> Buck 转换器和 Arduino:65mm (2.5”)
  8. Arduino <> 3 个 3 针公接头 - 伺服驱动信号:65 毫米(2.5 英寸)
  9. 降压转换器 <> 3 个 3 针公接头 - 电源和接地:25mm (1”)
  10. 将降压转换器输出调整为 5V。[我们这样做是因为舵机的额定电压最大为 6V,因此我们不想为它们提供完整的电池电压。
  11. 将已充电的电池连接到电路,并确保开关“打开”以允许电流流过降压转换器。
  12. 将万用表设置为读取直流电压,并将引线放在降压转换器的输出端子上。
  13. 用螺丝刀轻轻地调整电位器上的螺丝,直到万用表上的输出电压读数为 5V。有关此调整的示例,请参阅 1:50 标记处的此视频
3

初步机械组装

以下步骤详细介绍了机器人的机械装配。在适用的情况下,命名的 3D 打印部件名称以斜体列出。我已经尽我所能根据每张照片所涉及的步骤来标记每张照片。

  1. 收集您的打印组件(移除任何打印支撑)并插入热熔胶枪。确保胶枪位于安全位置(如废纸板上),以避免将胶水烧伤/滴落到任何东西上。
  2. 分离的 U 形夹插入底框并用少许热胶固定。
  3. 电机驱动臂的“短”侧插入分离的 U 形夹中,并检查臂是否可以旋转。
  4. 底部框架的四个约束孔中分别涂抹少许热胶,然后将两个齿条齿轮夹放在底部框架上,以便在每个齿条齿轮槽中可以看到两个约束孔。在胶水凝固之前,通过将导板的销钉轻轻压入约束孔中,用导板固定每个齿条齿轮。
  5. 执行相同的过程,使用一点热胶和剩余的两个导板将剩余的两个齿条齿轮夹组装到顶部框架上。
  6. 将两节 LiPo 电池插入顶部框架,将电缆穿过开口。
  7. 使用一滴热胶将 Arduino 和降压转换器安装到 Top Frame 上。将拨动开关安装到顶部框架上并拧紧螺母以将其固定到位。
  8. 使用几滴热胶将 JST 连接器固定到顶部框架的侧面。
  9. 找到您的伺服系统并确认每个伺服系统都有两个安装螺钉(这些螺钉的尖端是扁平的)。使用螺丝刀将其中两个舵机(我们称之为“顶部”和“中”舵机)安装到顶部框架上,将一个(“Bot”舵机)安装到指定位置的底部框架上。
  10. 电机杠杆臂安装到电机驱动臂上,并检查每个臂是否仍可以旋转。将 Bottom Frame 滑到 Top Frame 上。
  11. 如图所示,将伺服电机电线布线穿过三个布线点。将伺服电机连接到降压转换器输出端的三组接头。将电池连接到 JST 连接器。确认所有电线都没有被挤压或扭结。
4

设置执行器位置

以下步骤详细说明了确保机械致动器组件(正齿轮电动机杠杆臂)安装在伺服系统上正确位置的程序。我们将使用一些代码,利用 Arduino <Servo> 库将舵机定位在 “扩展” 方向,然后在舵机保持此位置时安装组件。

[注意]确认“Top, Mid, Bot”伺服线已连接到其每个驱动引脚(分别为 9、10 和 11)的相应 3 针接头。如果您决定使用不同的引脚来驱动您的伺服器,请修改以下代码以反映您选择的引脚。

将以下内容粘贴到您的 Arduino IDE 中,然后继续阅读以下内容以继续进行机械组装:

// ItsyBitsy Extend Calibration by blimblarp

#include <Servo.h>

Servo TopServo;
Servo MidServo;
Servo BotServo;

const byte TopExt = 0;
const byte MidExt = 80;
const byte BotExt = 0;

void setup() {
//Attach all of the servos to their respective PWM pins
TopServo.attach(9);
MidServo.attach(10);
BotServo.attach(11);
}

void loop() {
//Extend all servos for setting position
TopServo.write(TopExt);
MidServo.write(MidExt);
BotServo.write(BotExt);
}
  1. 确保拨动开关处于打开状态,以便 Arduino、降压转换器和伺服系统从电池获得电力。将 FTDI 编程板插入 Arduino 上的 6 针接头并上传代码。上传代码后,您应该会看到/听到伺服系统被驱动并保持在某个位置。
  2. 找到伺服系统随附的尖头螺纹紧固件(每个一个)。如图所示,伸出齿条齿轮夹并将正齿轮轻轻压在底部框架伺服(“Bot”伺服)驱动轴上。
  3. 使用一个 M3 垫圈和指定的紧固件将正齿轮固定到驱动轴上。如图所示,对 Top Frame 伺服器(“Top”伺服器)重复此装配过程。
  4. 电机杠杆臂轻轻按到另一个 Top Frame 伺服器(“Mid”伺服器)的驱动轴上,大约在所示位置。使用剩余的尖头螺纹紧固件将电机杠杆臂固定到驱动轴上 - 不需要 M3 垫圈。

此时,您可以将拨动开关拨到 OFF 并准备进行最后一步!

5

最终编程、测试和故障排除

此步骤分享了让 ItsyBitsy 动起来的代码!

此代码使用延迟来逐步执行 ItsyBitsy 的动作 - 它可以进行改进,以便可以在主循环中有效地执行其他操作(轮询传感器、闪烁的 LED 等),但我保持了简单,并且对于此概念验证而言,它是次优的。

// ItsyBitsy Move! by blimblarp

#include <Servo.h>

Servo TopServo;
Servo MidServo;
Servo BotServo;

const byte TopExt = 0;
const byte TopRet = 40;
const byte MidExt = 80;
const byte MidRet = 0;
const byte BotExt = 0;
const byte BotRet = 40;
const int DelayPeriod = 70;

void setup() {
//Attach all of the servos to their respective PWM pins
TopServo.attach(9);
MidServo.attach(10);
BotServo.attach(11);

//Start with all servos retracted
TopServo.write(TopRet);
MidServo.write(MidRet);
BotServo.write(BotRet);
}

void loop() {

//Clamp with the bottom servo to prepare for the move upward
BotServo.write(BotExt);
delay(DelayPeriod);

//Retract the top servo to prepare for the move upward
TopServo.write(TopRet);
delay(DelayPeriod);

//Extend the middle servo to stretch upward
MidServo.write(MidExt);
delay(DelayPeriod);

//Clamp with the top servo to prepare for the pull up
TopServo.write(TopExt);
delay(DelayPeriod);

//Unclamp the bottom servo to allow the move upward
BotServo.write(BotRet);
delay(DelayPeriod);

//Retract the middle servo to perform the pull
MidServo.write(MidRet);
delay(DelayPeriod);
}

上传代码后,您应该会看到如以下视频所示的动作:观看地址

攀爬、爬行、跳舞等等!

一旦您确认它按预期移动,就把保护头套套在Arduino和Buck转换器上,让您的机器人在世界上放松一下吧!ItsyBitsy 可以爬行、攀爬(缓慢)、跳舞并提供其他形式的娱乐。一块长而相对较直的木头/金属,与墙壁/踢脚板相距 ~10cm,是不错的平行表面,可以测试您的机器人的攀爬和爬行技能,只需注意这些齿轮中的手指被夹住!

感谢您的阅读,我希望您能和您的新机器人朋友一起玩得开心!欢迎并感谢您的反馈。

故障 排除

  1. ItsyBitsy 在尝试攀爬时遇到攀爬困难/滑倒:
  2. 确保在调用 TopServo.write(TopExt) 时,顶部齿条齿轮完全伸出,对于 BotServo 也是如此。如果需要,您可以调整代码中的值以更改伸出/缩回位置。
  3. 如果您将 “0” 写入伺服器,但仍然没有获得足够的扩展,您可以拆卸正齿轮并重复前面的组装步骤。
  4. 尝试加快或减慢攀岩动作,看看这是否能提高攀岩性能。这是通过更改 “DelayPeriod” 的值来完成的。
  5. 尝试攀爬摩擦力较高的表面或在齿条齿轮夹表面添加高摩擦材料(橡皮筋、胶棒滑动等)。不同的细丝具有不同的摩擦系数 - 我使用哑光黑色 PLA 运气最好,而使用光亮的 PLA 时遇到困难。
  6. 一个或多个 servos 发出“呜呜声”并且没有按预期移动:
  7. 通过注释掉上述代码中其他舵机的命令,单独测试每个舵机的运动。如果只有一个不移动,则可能是卡住了(尝试在断电的情况下用手移动),或者您可能正在向舵机写入超出机器人物理范围的值。
  8. 检查是否有任何热胶或碎屑进入轴承表面并导致高摩擦或卡住。
  9. 如果所有伺服系统都移动缓慢或卡住,则电池可能只需要充电。
  10. 我能听到/感觉到伺服器在旋转,但相关的正齿轮/电机杠杆臂没有移动:
  11. 打印的组件可能会在电机驱动轴上滑动,因此请确保用手拧紧紧固螺钉。如果需要,您可以移除打印的组件并涂抹少许热胶,然后再重新安装。
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载