机器人搭建与模拟库使用指南
1. 推物机器人的搭建
推物机器人能够借助直流电机沿着轨道前后移动,利用摄像头寻找带有匹配二维码的物体,一旦找到,就可以通过连接在舵机上的机械臂将物品从台子上推下。以下是搭建该机器人的具体步骤:
1.
完成移动机器人配置
:先完成移动机器人的配置,然后将 Pibow 外壳从机器人底盘上拆卸下来。
2.
安装云台套件
:
- 裁剪一块纸板,将其固定在底盘上,再使用胶水或双面泡沫胶带把云台套件(Pan - Tilt Kit)安装到纸板上。也可以用短尺子代替纸板。
- 要把云台套件安装在树莓派没有端口的那一侧,这样安装摄像头和舵机就不会挡住端口。
3.
安装摄像头
:
- 像之前一样,通过对齐魔术贴方块,将 Pibow 外壳重新安装到机器人底盘上。
- 在 Pibow 外壳侧面粘贴一些魔术贴方块,以便将摄像头安装到机器人侧面。
- 把摄像头安装到机器人侧面,安装后摄像头外壳会放置在机器人底盘上,摄像头的排线从顶部引出,这会使拍摄的视频上下颠倒,但可以在软件中通过翻转图像来解决。
4.
制作舵机臂
:
- 使用云台套件的倾斜舵机作为推动物体的舵机,利用套件上的安装支架的侧片和插槽来固定一个机械臂,以扩大舵机的作用范围。
- 可以用铅笔作为机械臂,将橡皮擦一端朝下,用两个扎带固定铅笔,一个扎带在侧片上方,一个在下方,确保扎带拧紧。
以下是搭建流程的 mermaid 流程图:
graph LR
A[完成移动机器人配置] --> B[拆卸 Pibow 外壳]
B --> C[裁剪纸板并安装云台套件]
C --> D[重新安装 Pibow 外壳]
D --> E[粘贴魔术贴方块]
E --> F[安装摄像头]
F --> G[制作舵机臂]
2. 推物机器人轨道的创建
推物机器人需要在轨道上前后移动,我们可以用两根棍子或杆子来创建轨道,并在轨道两端放置书籍以固定轨道。具体步骤如下:
1.
放置轨道材料
:取两根棍子或杆子,将它们平行放置在桌子上。
2.
调整轨道间距
:让两根棍子之间的距离尽可能靠近,刚好能贴合机器人的轮胎。同时,将机器人要推的物品沿着桌子边缘放置,使二维码朝向机器人。
3.
固定轨道
:在轨道两端放置一些书籍,确保轨道在机器人移动时不会移位。
4.
设置标记
:在轨道起点放置起始标记,在轨道末端放置结束标记。
3. 零食盒的设置
零食盒可以是任何带有所需二维码的容器或包装,二维码应贴在容器正面,尺寸建议为宽和高均为 6 厘米,以便摄像头能轻松读取。二维码要面向机器人,测试表明摄像头与二维码之间保持 8 厘米的距离效果较好。
4. 模拟 CRICKIT 库的安装与使用
模拟 Adafruit Python CRICKIT 库在测试软件时非常有用,它能让我们在没有机器人硬件的情况下运行代码,还能在非树莓派的 Linux 系统上执行代码,提供更好的编码体验。
4.1 安装模拟库
将以下脚本保存为
adafruit_crickit.py
文件:
#!/usr/bin/env python3
import os
from unittest.mock import Mock, PropertyMock
from functools import partial
DEBUG = bool(os.environ.get('ROBO_DEBUG'))
PROP_VALUES = {'touch_1.value': True}
def print_msg(msg):
if DEBUG:
print('MOCK_CRICKIT:', msg)
def prop_access(name, *args):
action = 'set' if args else 'get'
if action == 'set':
PROP_VALUES[name] = args[0]
val = PROP_VALUES.get(name)
print_msg(f'{action} crickit.{name}: {val!r}')
return val
def pixel_fill(val):
print_msg(f'call crickit.onboard_pixel.fill({val!r})')
def add_property(name):
parent, child = name.split('.')
property_mock = PropertyMock(side_effect=partial(prop_access, name))
setattr(type(getattr(crickit, parent)), child, property_mock)
crickit = Mock()
crickit.onboard_pixel.fill = Mock(side_effect=pixel_fill)
names = [
'onboard_pixel.brightness', 'touch_1.value', 'dc_motor_1.throttle',
'dc_motor_2.throttle', 'servo_1.angle', 'servo_2.angle',
'servo_1.actuation_range', 'servo_2.actuation_range']
for name in names:
add_property(name)
def demo():
print('starting mock_crickit demo...')
crickit.onboard_pixel.brightness = 0.01
crickit.onboard_pixel.fill(0xFF0000)
crickit.touch_1.value
crickit.dc_motor_1.throttle = 1
crickit.dc_motor_2.throttle = -1
crickit.servo_1.angle = 70
crickit.servo_1.angle
crickit.servo_2.angle = 90
crickit.servo_2.angle
crickit.servo_1.actuation_range = 142
crickit.servo_2.actuation_range = 180
if __name__ == "__main__":
demo()
4.2 运行模拟库示例
设置环境变量并运行脚本:
$ export ROBO_DEBUG=1
$ ./adafruit_crickit.py
输出示例:
starting mock_crickit demo...
MOCK_CRICKIT: set crickit.onboard_pixel.brightness: 0.01
MOCK_CRICKIT: call crickit.onboard_pixel.fill(16711680)
MOCK_CRICKIT: get crickit.touch_1.value: True
MOCK_CRICKIT: set crickit.dc_motor_1.throttle: 1
MOCK_CRICKIT: set crickit.dc_motor_2.throttle: -1
MOCK_CRICKIT: set crickit.servo_1.angle: 70
MOCK_CRICKIT: get crickit.servo_1.angle: 70
MOCK_CRICKIT: set crickit.servo_2.angle: 90
MOCK_CRICKIT: get crickit.servo_2.angle: 90
MOCK_CRICKIT: set crickit.servo_1.actuation_range: 142
MOCK_CRICKIT: set crickit.servo_2.actuation_range: 180
4.3 安装到 Python 虚拟环境
可以将模拟库安装到任意 Python 虚拟环境中,代码和安装程序可在 GitHub(https://github.com/marwano/robo)上找到。在包含
setup.py
脚本的目录下运行以下命令:
(main) robo@robopi:/tmp$ cd mock_crickit
(main) robo@robopi:/tmp/mock_crickit$ pip install .
安装完成后,运行
pip list
可以查看已安装的包:
(main) robo@robopi:/tmp/mock_crickit$ pip list
Package Version
------------ -------
mock-crickit 1.0
pip 23.1.2
setuptools 59.6.0
4.4 验证模拟库功能
使用以下命令调用
demo
函数来验证库是否正常工作:
(main) robo@robopi:~$ python -m adafruit_crickit
通过使用这个模拟库,项目可以在多种硬件上运行,例如 Linux 系统的笔记本电脑或台式机可以使用附录中提到的操纵杆硬件,任何标准网络摄像头都可以替代树莓派摄像头模块,且无需修改代码,就能实现人脸和二维码检测的计算机视觉功能。
以下是模拟库安装与使用的步骤表格:
| 步骤 | 操作 | 命令示例 |
| ---- | ---- | ---- |
| 1 | 保存脚本 | 将代码保存为
adafruit_crickit.py
|
| 2 | 运行示例 |
export ROBO_DEBUG=1; ./adafruit_crickit.py
|
| 3 | 安装到虚拟环境 |
cd mock_crickit; pip install .
|
| 4 | 查看安装包 |
pip list
|
| 5 | 验证功能 |
python -m adafruit_crickit
|
5. 相关代码与功能索引
在整个机器人搭建与模拟库使用的过程中,涉及到了众多的代码和功能,下面对一些关键的代码和功能进行索引说明。
| 代码/功能 | 说明 |
|---|---|
backward function
| 控制机器人向后移动的函数 |
forward function
| 控制机器人向前移动的函数 |
detect_face function
| 用于人脸检测的函数 |
decode_qr function
| 用于二维码解码的函数 |
call_api function
| 调用 API 的函数 |
call_robot function
| 调用机器人相关操作的函数 |
以下是部分代码功能的 mermaid 流程图,展示了人脸检测和二维码解码的大致流程:
graph LR
A[开始] --> B[读取图像]
B --> C{是否为人脸检测}
C -- 是 --> D[调用 detect_face function]
D --> E[标记人脸]
E --> F[输出结果]
C -- 否 --> G{是否为二维码解码}
G -- 是 --> H[调用 decode_qr function]
H --> I[获取解码数据]
I --> F
G -- 否 --> J[其他操作]
J --> F
6. 硬件相关信息
在搭建机器人的过程中,硬件的选择和配置至关重要。以下是一些硬件的相关信息:
| 硬件名称 | 说明 |
|---|---|
| Adafruit CRICKIT HAT | 用于树莓派的扩展板,可控制电机、舵机等 |
| Anker PowerCore Select 10000 电源银行 | 为机器人提供电源 |
| 电机和底盘套件 | 构成机器人的移动基础 |
| 操纵杆控制器 | 用于手动控制机器人 |
7. 常见问题与解决方法
在机器人搭建和模拟库使用过程中,可能会遇到一些常见问题,下面为大家列举并给出解决方法。
| 问题 | 解决方法 |
|---|---|
| 摄像头拍摄的视频上下颠倒 | 在软件中通过翻转图像来解决,例如在视频捕获时进行图像翻转操作 |
| 模拟库安装失败 |
检查网络连接,确保在包含
setup.py
脚本的目录下运行
pip install .
命令,也可以查看 GitHub 上的项目说明获取更多帮助
|
| 机器人移动异常 | 检查电机连接是否正常,检查代码中控制电机的参数是否正确 |
8. 总结
通过以上的步骤和说明,我们完成了推物机器人的搭建、轨道的创建、零食盒的设置,并且学会了如何安装和使用模拟 CRICKIT 库。在搭建过程中,我们需要注意硬件的安装和连接,确保各个部件正常工作。在使用模拟库时,要按照正确的步骤进行安装和验证,以便在没有实际机器人硬件的情况下也能进行代码的测试和开发。
整个过程涉及到了机器人控制、计算机视觉、软件模拟等多个领域的知识和技术,希望大家能够通过这些内容,更好地理解和掌握机器人搭建和开发的相关技能。同时,在实际操作中遇到问题时,可以参考前面提到的常见问题解决方法,或者进一步查阅相关资料进行解决。
以下是整个机器人搭建与模拟库使用的整体步骤列表:
1. 推物机器人的搭建
- 完成移动机器人配置
- 安装云台套件
- 安装摄像头
- 制作舵机臂
2. 推物机器人轨道的创建
- 放置轨道材料
- 调整轨道间距
- 固定轨道
- 设置标记
3. 零食盒的设置
- 准备带二维码的容器
- 调整二维码尺寸和朝向
4. 模拟 CRICKIT 库的安装与使用
- 保存脚本
- 运行示例
- 安装到虚拟环境
- 查看安装包
- 验证功能
通过遵循这些步骤,你可以顺利地完成机器人的搭建和模拟库的使用,开启机器人开发的新旅程。
超级会员免费看
1588

被折叠的 条评论
为什么被折叠?



