构建手控机器人
扫描二维码
随时随地手机看文章
该项目旨在创建一个开放的,制造商友好的机器人平台,提供实时的,完全在设备上的手部检测和跟踪,所有这些都完全由边缘计算驱动。它在设备内置的神经处理单元上运行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





