20、PushBot:搭建与编程全攻略

PushBot:搭建与编程全攻略

1. PushBot 组装步骤

PushBot 的组装接近尾声,以下是从第 19 章中提取的组装关键步骤:
1. 颈部与红外传感器组件安装 :从颈部/红外传感器组件和砖块开始组装,注意砖块的“顶部”(USB 端口所在处)在图片中朝向底部。先将两个小黑色连接器插入砖块顶部,如特定图片所示,部分插入后再完全按入。
2. 人偶颚笼安装 :人偶颚笼底部的长蓝色连接器与砖块底部连接,从侧面将其完全按下。
3. 加固梁组装 :用一个九孔梁和四个短黑色连接器组装加固梁,将其安装在合适位置,有助于固定颈部组件、人偶颚和砖块。
4. 长轴加固 :安装长轴和两个红色轴环来加固整体结构。插入轴后,将轴环尽可能分开以增强强度。虽然没有这些部件机器人也能运行,但它们能使结构更坚固。
5. 大型电机与车轮组件安装 :制作两个大型电机驱动轮组件,它们是镜像对称的。将轴、轴环、轮胎和九孔梁等部件按步骤组装好,然后将电机组件安装到砖块和框架上。
6. 脚轮梁连接 :将支撑脚轮的梁上的双灰色连接器与大型电机连接。
7. 触摸传感器安装与布线 :收集触摸传感器、短蓝色轴销和黑色销,将它们安装到触摸传感器上,然后在砖块上找合适位置安装触摸传感器。最后,将三个电机和三个传感器进行布线,使用 EV3 零售套件中的所有六根电线。具体布线为:中型电机连接到端口 A,大型电机连接到端口 B 和 C,触摸传感器连接到端口 1,颜色传感器连接到端口 2,红外传感器连接到端口 4。

组装流程图

graph LR
    A[颈部与红外传感器组件安装] --> B[人偶颚笼安装]
    B --> C[加固梁组装]
    C --> D[长轴加固]
    D --> E[大型电机与车轮组件安装]
    E --> F[脚轮梁连接]
    F --> G[触摸传感器安装与布线]

2. PushBot 编程思路

为确保 PushBot 程序能正常工作,将编程分为三个部分:
1. 将机器人移动到第一个人偶前的正确位置
2. 将前三个人偶放置到正确位置的编程块
3. **将最后一个人偶推上斜坡并放到玛雅石棺上

2.1 让 PushBot 就位

在 LEGO MINDSTORMS EV3 软件中,点击左上角的 + 标签,双击蓝色程序名称,输入 PushBot。为了有更多工作空间,可点击顶部标签栏最右侧的 EV3 按钮符号(类似八角形停止标志)来最小化右侧的文档工作区域。

使用触摸传感器作为 PushBot 的启动按钮,将其放置在砖块顶部易触及的位置。在程序中放入一个 LOOP 块,等待触摸传感器触发。

2.2 移动到第一个人偶的方法

有两种方法可将 PushBot 移动到第一个人偶前:
1. 基于距离编程 :已知基座和第一个人偶之间的大致距离约为 7 英尺,PushBot 长约 16 英寸,若将其按特定方式放置并指向第一个人偶,需向前移动 5.5 英尺后停止。可使用 MOVE STEERING 块,设置正确的旋转圈数(或度数)来实现。
2. 使用红外传感器 :为避免因测量误差或电池电量低导致电机异常而撞到人偶,使用红外传感器检测人偶并在安全距离处停止。在程序中放入一个 LOOP 块,配置为当红外传感器检测到距离小于 30 厘米(12 英寸)的障碍物时跳出循环。在 LOOP 块内放置一个 MOVE STEERING 块,让电机 B 和 C 旋转。可测试将电机持续时间设置为无限或特定度数/旋转圈数,以确定最安全的接近方式。

测试与调整

将一个水瓶放在距离 PushBot 约 9 英尺处,确保笼颚打开,按下触摸传感器启动。测试发现,将 MOVE STEERING 块的持续时间设置为无限时,机器人停止位置更接近水瓶,同时需将红外传感器的灵敏度提高到 30 厘米或更小。测试后,PushBot 距离水瓶约 3 - 5 英寸。

当 PushBot 到达水瓶位置后,需将其旋转 180 度使笼颚朝向水瓶。具体步骤为:先使用 MOVE STEERING 块让电机 B 和 C 反转一圈后退,然后使用 LARGE MOTOR 块让大型电机 B 向左旋转 90 度,再让大型电机 C 向右旋转 90 度。

后续操作步骤

PushBot 旋转后面对第一个人偶且笼颚打开,后续操作步骤如下:
1. 接近人偶 1
2. 关闭人偶 1 周围的笼子
3. 将人偶 1 向前推到压力板上并停止
4. 打开笼子并返回起始位置
5. 右转,向前移动一小段距离,然后左转
6. PushBot 此时位于人偶 2 前方

由于这些步骤会重复执行,使用一个 LOOP 块让其对前三个人偶各执行一次。

编程操作表格

操作 编程块 设置
等待启动 LOOP 块 触摸传感器触发跳出循环,传感器在端口 1
移动到第一个人偶 MOVE STEERING 块 可设置旋转圈数或持续时间,结合红外传感器检测
旋转 180 度 MOVE STEERING 块、LARGE MOTOR 块 后退、左右旋转特定度数
放置前三个人偶 LOOP 块 执行三次特定操作

3. 定位前三个人偶

在 PushBot 定位并开始将最后一个人偶推上斜坡之前,需要让它停在人偶 3 前面。为实现将人偶 1、2 和 3 推到正确位置的操作,需要在程序中添加一个 LOOP 块。以下是具体步骤:

3.1 接近人偶

首先,放入一个 LOOP 块并将其配置为执行一次(测试后改为三次)。然后,使用另一个 LOOP 块,配置为当红外遥控器触发红外传感器时跳出循环。接着,添加一个 MOVE STEERING 块,将其配置为让大型电机 B 和 C 旋转四分之一圈(0.25),使机器人缓慢向人偶移动。

3.2 关闭笼子

下载程序并测试,使用默认的红外传感器设置(值为 1,对应红外遥控器的左上角按钮)。机器人能完美转向并缓慢接近瓶子,直到按下红外遥控器按钮跳出循环。此时,使用一个 MEDIUM MOTOR 块关闭笼子,最初将其配置为让电机 A 旋转 -65 度,但后来改为以 -30 的负速度运行 0.25 秒。原因是之前设置旋转度数时,电机有时无法完全关闭笼子,导致电机卡顿,程序无法继续运行。更改设置后,能避免这种情况。关闭笼子后,添加另一个 MEDIUM MOTOR 块关闭电机 A 以节省电池电量。

3.3 推动人偶

笼子关闭后,需要让机器人缓慢推动人偶,直到检测到黑色黑曜石岩石地板。使用一个 LOOP 块,配置为当颜色传感器触发时跳出循环。测试颜色传感器在黑色纸上的值为 5,在地板上的值为 89,将颜色传感器设置为值低于 20 时触发。添加一个 MOVE STEERING 块进行推动操作,每次向前推动 2.75 英寸(半圈),并添加一个 0.5 秒的延迟,确保颜色传感器有时间检测黑色纸。

3.4 测试与调整

下载并测试程序,如果一切按计划进行,机器人应接近瓶子,检测到瓶子后停止,后退并旋转,再次接近瓶子直到停止,关闭笼子,然后推动瓶子直到颜色传感器触发。但实际测试中可能会出现问题,例如笼子卡住影响程序运行,可通过将电机 A 运行时间改为 0.25 秒解决。机器人将瓶子推到黑色纸上后可能只在边缘,可在 LOOP 块后添加一个 MOVE STEERING 块,让机器人再前进一圈(5.5 英寸),将人偶推到中心。

3.5 后续移动

完成上述操作后,需要让机器人打开笼子,后退一段合理距离,并进行一些移动使其位于人偶 2 前面。具体步骤如下:
1. 使用 MOVE STEERING 块让机器人前进一圈,将人偶推到中心,然后使用 MEDIUM MOTOR 块打开笼子。
2. 使用 MOVE STEERING 块让机器人后退约 3 英尺(将 3 英尺转换为 36 英寸,除以轮胎周长 5.5 英寸,约为 6.5 圈)。
3. 使用 LARGE MOTOR 块让机器人右转。
4. 使用 MOVE STEERING 块让机器人向西前进约 2 英尺。
5. 使用 LARGE MOTOR 块让机器人左转。

定位操作流程图

graph LR
    A[放入外层 LOOP 块] --> B[放入内层 LOOP 块(红外触发)]
    B --> C[添加 MOVE STEERING 块接近人偶]
    C --> D[下载测试并使用 MEDIUM MOTOR 块关闭笼子]
    D --> E[添加 MEDIUM MOTOR 块关闭电机 A]
    E --> F[添加 LOOP 块(颜色传感器触发)]
    F --> G[添加 MOVE STEERING 块推动人偶]
    G --> H[测试与调整]
    H --> I[添加 MOVE STEERING 块推人偶到中心]
    I --> J[打开笼子并后退]
    J --> K[右转]
    K --> L[前进 2 英尺]
    L --> M[左转]

编程操作表格(续)

操作 编程块 设置
接近人偶 LOOP 块(外层) 执行三次
接近人偶 LOOP 块(内层) 红外传感器触发跳出循环
接近人偶 MOVE STEERING 块 电机 B 和 C 旋转 0.25 圈
关闭笼子 MEDIUM MOTOR 块 -30 速度运行 0.25 秒
关闭电机 MEDIUM MOTOR 块 关闭电机 A
推动人偶 LOOP 块 颜色传感器触发跳出循环
推动人偶 MOVE STEERING 块 每次前进 2.75 英寸,延迟 0.5 秒
推到中心 MOVE STEERING 块 前进一圈(5.5 英寸)
打开笼子 MEDIUM MOTOR 块 打开笼子
后退 MOVE STEERING 块 后退约 6.5 圈
右转 LARGE MOTOR 块 右转
前进 MOVE STEERING 块 前进约 2 英尺
左转 LARGE MOTOR 块 左转

4. 测试与优化

在实际测试中,可能会出现各种问题,需要根据具体情况进行调整。例如,第一次测试时可能会越过第二个人偶约 6 英寸,可通过将大型电机 B 和 C 的旋转持续时间从 6 减少到 4.7 来解决。笼子关闭正常但打开过宽,手臂摩擦轮胎的问题,可将笼子打开时间从 1 秒减少到 0.25 秒。经过第二次测试,若所有三个人偶都能被定位并推到正确位置且不翻倒,则说明设置基本合适。

需要注意的是,不同的电机和传感器灵敏度可能不同,因此测试是必不可少的。通过不断测试和调整,可以提高机器人的性能,同时也能深入了解机器人在不同环境中的工作方式。完成前三个人偶的定位后,下一步就是让 PushBot 推动第四个人偶上斜坡并放到石棺上,这将在后续的编程和测试中进一步实现。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值