1. 案例目的

为 CoCube 机器人编程,在过程中了解图像视觉中的人工智能技术。完成颜色识别与交通路牌卡片识别并自动做出相应动作的功能,最后实现智慧交通创意沙盘。

2. 使用材料

个人电脑 或 平板 CoCube机器人 + AI 视觉感知模块 交通路牌卡片 × 5 路牌积木组装

使用AI视觉感知模块——"Sengo1 AI摄像头"或"Sengo2 AI摄像头",如图标注所示,圆孔摄像头识别图像,可通过黑色杆状按钮手动切换算法模式,也可通过Microblocks控制调节。

3. 软件平台

MicroBlocks-CoCube

4. 基础知识

需要使用到的积木说明

  1. Sengo 1 初始化积木

在使用 摄像头前需要先执行初始化积木。通常会放在"当启动时"帽子积木下。

  1. Sengo1 设置模式积木

内置算法包括"颜色识别" "色块检测" "球类检测" "线条检测" "卡片识别" "人脸识别" "二维码识别"。

本案例中选择"卡片识别"和"颜色识别"算法来作为AI摄像头使用原理讲解。

  1. Sengo1 颜色读取

通过读取颜色可以初步识别颜色的类型,返回"red"、"black"等,通过获取颜色的RGB可以进行更精准的颜色记录与复现。

  1. Sengo1 颜色识别区域调整

颜色识别区域是一个矩形区域,可以通过该积木调整颜色检测区域的大小,x和y控制矩形左上角顶点的位置,宽度和高度则控制矩形大小,一般控制该区域位于屏幕中心,为了识别颜色区域更细致可以将矩形大小调低。

可以注意到检测区域的边框颜色会随着识别的颜色变化而变化,右图则是通过区域调整积木扩大了检测区域。

  1. Sengo1 卡片结果读取

返回交通卡片的识别结果

返回检测对象id的属性

包括中心x坐标、中心y坐标、宽度w、高度h

对于"Sengo 1"的识别目前仅限于5张交通卡片,分别为:"Forward"、"Turn around"、"Left"、"Right"、"Park",对应识别结果分别为"forward"、"back"、"left"、"right"、"park"。

如图所示,使用过程中,将积木按照该方式进行组装并将卡牌粘贴到乐高积木上,即可获得交通指示牌。

5. 开始编程

  1. 连接设备:通过有线或者无线方式,连接 MicroBlocks IDE 与 CoCube 机器人,并将 AI 视觉感知模块拓展在 CoCube 机器人前方。

  2. 载入积木库:添加机器人积木库中的"CoCube Sengo1"或者"CoCube Sengo2",具体库的选择依据摄像头硬件型号,两者使用上无明显区别,Sengo2具备更多的功能,以下案例教程以Sengo1库演示。

  1. 颜色识别:针对颜色识别算法进行了与TFT显示功能的结合应用。具体实现方式是,当摄像头实时捕捉到外部环境中的某一颜色后,提取其中的RGB分量信息,并将该数值传递给TFT显示屏,根据获取到的RGB分量动态调整显示效果,使得预设的"王"字能够随识别到的颜色变化而改变其显示颜色。

  1. 摄像头模块初始化:将"Sengo1 初始化"绑定在"当启动时"下并将算法设置为"卡片识别",为了后续识别方便,可通过广播设置并行程序,并自定义命令积木"camera"。

  1. 交通卡片识别:在程序中设置条件判断,将摄像头识别到的不同卡片信息与预先设定的运动行为进行一一对应的绑定。当摄像头识别出某一特定卡片时,即可触发驱动cocube执行相应的动作。

使用技巧

我们可以发现卡片识别算法可以检测到远距离的卡片,但此时并不是用户所期望的反应位置,此时可以通过判断"卡片宽度"来排除那些远距离的卡片,比如只有当卡片宽度>阈值时,才会触发接下来的动作行为

  1. 识别距离调整:通过在camera积木块最前方增加对卡片宽度的判断,来实现对识别距离的精准把控。

调整前后对比:

提问:为什么不使用这个积木组合来表明Sengo1读取到了卡片的情况呢?

6. 挑战一下

尝试通过我们的卡牌与积木实现一个小范围的智慧交通沙盘,模拟无人驾驶的过程。

参考代码:案例 智慧交通 Sengo1版

案例 智慧交通 Sengo2版

CC-BY-SA

© 来自 CoCube 2024-2026.

This work is licensed under a CC-BY-SA 4.0 license.