自主类人机器人采用Edge Impulse YOLO-Pro模型在Particle Tachyon上与Qualcomm AI加速器进行球检测和踢
扫描二维码
随时随地手机看文章
该项目展示了一个自主的类人机器人,利用粒子速子和高通人工智能加速器来检测和踢球,使用边缘脉冲训练的YOLO-Pro模型。机器人利用ROS 2实现感知、决策和运动控制的无缝集成。YOLO-Pro模型可实现高精度的实时球检测,并针对高通AI加速器的边缘部署进行了优化。该系统处理视觉输入,规划轨迹,并自动执行精确的踢脚动作。这种创新的设置展示了嵌入式人工智能、边缘计算和机器人技术在动态、现实世界任务中的协同作用。
硬件
我们正在使用高通Dragonwing QCM6490 SoC的粒子速子。Dragonwing QCM6490采用八核高通Kryo CPU,高通Adreno 643 GPU和高通Hexagon 770 DSP,其中包含能够提供12 TOPS的AI加速器。
我们选择了一个HiWonder的AiNex双足人形机器人,配有24个串行总线伺服器,头部安装了一个640x480分辨率的USB摄像头。它带有一个预装的树莓派4,我们将换掉粒子速子。
我们选择使用带有高通AI加速器的粒子速子进行快速推理,以便在需要快速响应时间的动态环境中检测球。粒子速子与树莓派4的外形相同,但用5G天线取代了USB和LAN连接器。用粒子速子交换现有的树莓派4很简单。我们可以把机器人的背板拆下来,把机器人控制器帽和树莓派4拧下来。
安装粒子速子使用4 x十六进制僵局。
将机器人控制器的帽子固定在粒子速子的40针头上,用螺丝固定。
机器人控制器连接到24个串行总线伺服器,并从11.1 V, 3500 mAh的LiPo电池向粒子速子(通过40针头上的5V电源引脚)和伺服器供电。我们在连接5G、USB网络摄像头和运行人工智能加速器的情况下,评估了粒子速子的用电量。功耗一般保持在800mA以下,偶尔峰值达到1.2A。
设置粒子速子
完成后,通过WiFi对设备的SSH访问应该完全启用并可操作。我们选择Headless模式安装是因为该设备将部署在行走的人形机器人上,不需要桌面界面。
Qualcomm AI Engine直接SDK安装
要使用为Qualcomm AI Accelerator编译的QNN模型执行推理,请按照我在提供的链接中提供的其他项目中概述的所需软件包的安装说明进行操作。
人形机器人设置
HiWonder AiNex驱动程序和SDK依赖于ROS 1 Noetic,该公司已于2025年5月31日停产。它的Kinematics库是在Ubuntu 20.04上为Python 3.8构建的,由于Ubuntu 22.04或24.04的Python版本更新,因此与Ubuntu 22.04或24.04不兼容。然而,粒子速子本身支持Ubuntu 20.04。虽然ROS 2 Humble和Jazzy不能在Ubuntu 20.04上通过APT安装,但ROS 2 Humble可以从源代码编译。因此,运行Ubuntu 20.04的粒子速子是使用ROS 2 Humble和AiNex运动学库的最佳选择。此外,由于RPI。GPIO库不支持Particle Tachyon,它可以用Adafruit Blinka代替,它使用libgpiod来实现GPIO功能,并且与Particle Tachyon兼容。我们完全重写并将所有提供的代码从ROS 1移植到ROS 2。
ROS 2简易安装
按照下面的说明安装从源代码构建ROS 2所需的基本包。
设置语言环境
设置ROS 2 Apt存储库
安装开发工具和ROS工具
获取ROS 2源代码并安装依赖项
从源代码构建ROS 2 Humble
如果由于缺少Ubuntu软件包而导致构建过程失败,请检查日志以识别丢失的软件包,使用apt安装它,然后使用以下命令恢复构建过程。
我们省略了RViz2和它的依赖,因为与高通图形驱动程序冲突,我们不需要它在无头模式。
数据采集
我们需要在Edge Impulse工作室注册一个账户然后创建一个新项目。我们将使用安装在机器人头上的网络摄像头来捕捉球的图像。
运行以下命令并按照屏幕上的说明将设备连接到Edge Impulse Studio进行数据收集。
我们捕获了232张不同距离和照明设置的图像,并使用Edge Impulse Studio的数据采集页面中的标签队列选项卡标记它们。
我们收集了多个由相机运动、头顶照明和反射表面引起的运动模糊和明亮照明条件的样本,以提高模型的准确性并防止遗漏检测。
脉冲设计
对于模型开发,我们需要创建一个脉冲,一个集成图像处理和机器学习模型的定制管道。导航到“脉冲设计>创建脉冲”页面,选择“添加处理块”,并选择“图像”对图像数据进行预处理和归一化。在同一页面中选择“添加学习块”,选择“目标检测(图像)”。我们使用320x320的图像大小。然后,单击Save Impulse按钮。
特征提取
接下来,进入脉冲设计>图像页面,将颜色深度参数设置为RGB,然后点击保存参数按钮,这将重定向到另一个页面,我们应该点击生成功能按钮。通常需要几分钟来完成特征生成。
我们可以在Feature Explorer中看到生成特征的2D可视化。
模型训练
要训练模型,请导航到Impulse Design > ObjectDetection页面。我们选择的对象检测设置如下所示。
我们在高级训练设置中选择了基本的空间和色彩空间增强。
我们选择了最新的YOLO-Pro型号,它非常适合检测由于与相机距离不同而大小不同的球,并且能够在高通AI加速器上高效运行。点击Save & train按钮开始训练。
注:YOLO-Pro目前正在积极开发中。边缘脉冲不保证准确性,也不鼓励在生产中使用这种模式。
训练结束后,训练效果如下图所示。该模型在训练数据上获得了98.7%的精度分数。
模型试验
要评估模型在测试数据集上的性能,导航到模型测试页面并单击“分类所有”按钮。该模型在未见过的数据集上显示出更高的性能,准确率达到100%。
模型部署
由于模型将使用高通AI加速器在粒子速子上运行推断,我们在部署页面上选择了Linux(带有高通QNN的AARCH64)选项。
为模型优化选择Quantized (int8)选项,因为高通AI加速器与float32模型不兼容。
点击Build按钮编译并下载EIM(边缘脉冲模型)二进制文件。
应用程序开发
应用程序构建为分布式ROS 2节点,遵循关注点分离原则。它从相机捕获图像,处理它们以检测球,并使用推理来跟踪和接近球,并精确地控制步态。结果通过HTTP流传输以进行实时监控。这种模块化的设计保证了任务的清晰划分,提高了效率和可维护性。每个节点处理一个特定的功能,从图像捕获到运动控制,同时无缝集成以实现应用程序的目标。
下面是object_detection节点的代码。
下面是find_and_kick_ball节点的代码。
find_and_kick_ball节点的功能可以通过下面所示的流程图来理解。
完整的项目代码可以在代码部分列出的GitHub存储库中找到。将代码复制或克隆到ws_ainex_robot目录并构建它。
启动应用程序
执行以下命令设置ROS 2工作空间环境。
下面是启动文件代码。
执行以下命令启动应用程序。
我们可以在/edge_impulse/detections主题上监视检测结果。
ROS 2节点
以下是应用程序中使用的ROS 2节点的简要说明:
•/camera/rectify_color:使用校准数据校正原始相机图像。
•/find_and_kick_ball:订阅检测主题,决定是否接近,并启动踢球动作。
•/controller_node:运行一个50 Hz的控制回路,通过低级串行伺服驱动器来管理机器人的运动和步态。
•/object_detection:使用边缘脉冲模型检测校正图像流中的球。
•/image_bbox_node:订阅校正后的图像和检测结果,绘制边界框,并将注释后的图像流式传输。
节点图的示意图如下所示。
当web_video_server节点启动时,可以通过web浏览器查看320x320像素图像的第一人称视图(First-Person View, FPV)。
结论
该项目展示了将Edge Impulse的人工智能功能与Particle Tachyon的高效处理与高通芯片相结合的强大功能,以实现实时、自主的机器人任务。ROS 2提供了低延迟通信,增强了机器人平台之间的互操作性,并通过可重用组件简化了开发。未来的增强功能可能包括多球跟踪或自适应学习,以提高在动态环境中的准确性。
本文编译自hackster.io





