当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]该项目旨在创建一个开放的,制造商友好的机器人平台,提供实时的,完全在设备上的手部检测和跟踪,所有这些都完全由边缘计算驱动。它在设备内置的神经处理单元上运行Edge Impulse优化的YOLO-Pro对象检测模型,以极低的功耗提供超过60 FPS的低延迟推理。ROS 2作为实时编排主干,清晰地分离感知、控制和驱动节点,这使得系统在手势识别、远程操作或协作机器人等应用程序中具有高度可扩展性。

该项目旨在创建一个开放的,制造商友好的机器人平台,提供实时的,完全在设备上的手部检测和跟踪,所有这些都完全由边缘计算驱动。它在设备内置的神经处理单元上运行Edge Impulse优化的YOLO-Pro对象检测模型,以极低的功耗提供超过60 FPS的低延迟推理。ROS 2作为实时编排主干,清晰地分离感知、控制和驱动节点,这使得系统在手势识别、远程操作或协作机器人等应用程序中具有高度可扩展性。

硬件

我们使用的是带有高通Dragonwing QCM6490 SoC的Rubik Pi 3。Dragonwing QCM6490采用八核高通Kryo CPU,高通Adreno 643 GPU和高通Hexagon 770 DSP,其中包含能够提供12 TOPS的AI加速器。

为了驱动,机器人使用由SparkFun servo pHAT驱动的伺服电机,通过I2C连接为多个伺服器提供方便的控制。

对于平移和倾斜运动,机器人使用两个DFRobot DSS-P05标准伺服电机:一个专用于平移,另一个专用于倾斜。

泛倾斜机构是建立使用DFRobot泛倾斜支架容易和坚固的组装。

我们将使用Elecom 500万像素的网络摄像头。

我们3d打印了一个安装支架,将机器人牢固地固定在底板上,确保机器人运动稳定安全。

完全组装的系统如下所示。

设置《鲁比克Pi 3》

完成后,通过WiFi对设备的SSH访问应该完全启用并可操作。

ROS 2爵士乐安装

按照下面的说明安装必要的软件包。

设置语言环境

设置ROS 2 Apt存储库

安装开发工具

安装ROS 2基础包

由于我们将在无头模式下使用Rubik Pi 3,因此运行以下命令来安装裸机ROS 2基本包,而不使用任何GUI工具。

URDF

一个精确的统一机器人描述格式(URDF)对于保证相机、平移和倾斜帧之间精确可靠的坐标转换至关重要。

机器人模型可以在RViz2中使用Joint State Publisher gui进行可视化和手动验证。启动脚本可以在代码一节中引用的GitHub存储库中获得。

数据采集

我们需要在Edge Impulse工作室注册一个账户然后创建一个新项目。

运行以下命令并按照屏幕上的说明将设备连接到Edge Impulse Studio进行数据收集。

我们捕获了357张不同距离和照明设置的图像,并使用Edge Impulse Studio的数据采集页面中的标签队列标签来标记它们。

脉冲设计

对于模型开发,我们需要创建一个脉冲,一个集成图像处理和机器学习模型的定制管道。导航到“脉冲设计>创建脉冲”页面,选择“添加处理块”,并选择“图像”对图像数据进行预处理和归一化。在同一页面中选择“添加学习块”,选择“目标检测(图像)”。我们使用224x224的图像大小。然后,单击Save Impulse按钮。

特征提取

接下来,进入脉冲>图像页面,设置颜色深度参数为RGB。

点击Save parameters按钮,重定向到另一个页面,我们应该点击Generate Feature按钮。

模型训练

要训练模型,请导航到Impulse > ObjectDetection页面。我们选择的对象检测设置如下所示。

我们在高级训练设置中选择了基本的空间和色彩空间增强。

我们选择了最新的YOLO-Pro型号,它非常适合检测由于与相机距离不同而产生的不同大小的手,并且能够在高通人工智能加速器上高效运行。点击Save & train按钮开始训练。

训练结束后,训练效果如下图所示。量化(int8)模型对训练数据的精度得分为94.4%。

模型试验

要评估模型在测试数据集上的性能,导航到模型测试页面并单击“分类所有”按钮。该模型在未见过的数据集上显示出更高的性能,准确率达到97.1%。

生活分类

我们可以在Impulse > Live分类页面中测试模型推理。

模型部署

由于模型将使用Qualcomm AI Accelerator在Rubik Pi 3上运行推理,因此我们在部署页面上选择了Linux (AARCH64 with Qualcomm QNN)选项。

为模型优化选择Quantized (int8)选项,因为高通AI加速器与float32模型不兼容。

点击Build按钮编译并下载EIM(边缘脉冲模型)二进制文件。

应用程序开发

应用程序构建为分布式ROS 2节点,遵循关注点分离原则。它从相机捕获图像,处理它们,通过PID控制检测和跟踪手。结果通过HTTP流传输以进行实时监控。这种模块化的设计保证了任务的清晰划分,提高了效率和可维护性。每个节点处理一个特定的功能,从图像捕获到平移倾斜驱动,同时无缝集成以实现应用程序的目标。

Edge Impulse Linux SDK for Python

我们利用Edge Impulse Linux SDK进行设备上模型推断,可以通过运行下面列出的命令来安装。

高通AI运行时

Qualcomm AI运行时及其所需的依赖关系可以通过运行下面的命令来安装。

下面是object_detection节点的代码。

下面是hand_tracker节点的代码。

我们采用ros2_control框架提供实时控制,并与机器人的硬件无缝接口。

这是控制器管理器配置文件。

下面是硬件接口代码。硬件接口是用c++编写的,以确保低延迟性能和最高效率。

启动应用程序

执行以下命令设置ROS 2工作空间环境。

下面是启动文件脚本。

执行以下命令启动应用程序。

结论

该项目成功地证明,复杂的实时手部跟踪可以在低成本的开源硬件上实现,而不依赖于云服务或高功率gpu,为机器人领域的无障碍边缘人工智能设定了新的基准。通过将优化后的YOLO-Pro模型、ROS 2模块化和高效的倾斜伺服相结合,该平台为资源受限环境下响应式人机交互提供了坚实的基础。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭