1. 案例目的
学习 AI 视觉感知模块的AprilTag识别功能。
2. 使用材料
自行打印合适规格和尺寸的AprilTag标签。
也可以通过网页在线生成合适规格和尺寸的AprilTag标签并打印:ArUco markers generator!
3. 软件平台
或直接打开添加有 AI 视觉感知模组的编程环境:MicroBlocks-AI Camera
4. 算法知识
算法简介
判断图像中是否有Apriltag标签图案,目前支持16H5,25H9,36H11的编码形式,算法运行时需要先指定用哪一种解码方式,不同的编码形式不可以同时检测,但同一种编码可同时检测25个标签。
注意:该算法不可以与其他带*号的算法同时运行
分类标签
apriltag标签为一组已经定义好的黑白方块图案,不同的编码形式使用的方块数量是不同的。每个图案都有一个预定义的分类标签值,识别后会返回该值。
自行打印合适规格和尺寸的AprilTag标签。
也可以通过网页在线生成合适规格和尺寸的AprilTag标签并打印:ArUco markers generator!
配置参数
UI界面中可以设置算法性能和编码形式
算法性能:
根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”
在灵敏模式下识别速度快,帧率高。准确模式下可以检测远处的标签,但速度会降低。默认为均衡性能
编码形式:
当点击按钮时,会循环切换“16H5”,“25H9”,“36H11”三种编码模式,切换后需要重启算法,下次启动时生效
返回结果
识别到标签后会返回其坐标、大小和标签编号
当通过主控读取寄存器时,将会返回以下的数据:
结果 | 含义 |
---|---|
1 | 标签中心x坐标 |
2 | 标签中心y坐标 |
3 | 标签宽度w |
4 | 标签高度h |
5 | 标签编号 |
使用技巧
所识别到的标签宽度和高度具有较稳定的输出,可以利用这一点进行距离判断,标签旋转后不会改变其大小,但倾斜时可能会有影响
当需要识别多个标签时,可以关闭坐标线的显示,看起来比较简洁
标签越大,识别的距离就越远
需要使用到的积木说明
- Sentry2 初始化积木
一个可选参数是 i2c 地址。默认为 96。(0x60)
在使用 Sentry2 前需要先执行初始化积木。通常会放在“当启动时”帽子积木下。
- Sentry2 设置模式积木
需要设置模式为apriltag,即AprilTag检测模式。
- Sentry2 检测结果
使用这个积木前需要确定apriltag算法模式已开启。
这块积木也是用来触发检测的积木,只有先使用这块积木,才能获得检测结果。
返回的结果为当前AprilTag算法识别到的结果数量。
结果的数量会受对应算法的参数设置影响。
- Sentry2 检测对象属性
返回检测对象id的属性,包括色块中心x坐标、色块中心y坐标、色块宽度w、色块高度h以及标签编号。
5. 开始编程
连接设备:通过有线或者无线方式,连接 MicroBlocks IDE 与 CoCube 机器人,并将 AI 视觉感知模块拓展在 CoCube 机器人前方。
载入积木库:如未添加 Sentry2 AI 摄像头库和 CoCube 外接模块库,可先加载CoCube的外接模块库和Sentry2 AI 摄像头库。
摄像头模块初始化:选择启动时先启用外接模块电源,然后等4秒后摄像头模块启动成功再初始化I2C接口,然后再将摄像头的算法模式设置为AprilTag模式。
- 色块识别:循环判断是否有检测到AprilTag色块,当检测到的标签数量为1时,输出该标签的5种属性。你可以实时观察该标签的位置、大小以及标签。
- 编写自己的程序:有了上述的调试代码,不妨自己试试探索更多的功能吧!