如何让机械臂拾取立方体并放入容器
通过真实演示训练 LeRobot 的策略,并部署到 Dragonwing IQ-9075 NPU 上,实现自主抓取与放置任务。
本项目完整记录了利用 Hugging Face 的 LeRobot 框架,通过模仿学习方式教会一款经济型机械臂拾取立方体并放入容器的全过程。内容涵盖构建机器人AI系统从零到一的实际操作,包括数据采集、训练有效策略,提供了一条从简单操作任务到训练完成且可运行模型的结构化、可重复路径。随后项目转向部署阶段,将训练好的策略适配至专用边缘设备上的实时推理,并直接集成到 LeRobot 自有的工具链中,而非绕过其原有架构。这一方法实现了边缘AI技术在现实机器人中的应用优势:完全在设备端运行,实现快速、低延迟的控制,无需依赖外部计算资源,同时保持 LeRobot 全部工作流程的完整性与熟悉性。
硬件
我们将使用搭载专用Hexagon NPU的高通Dragonwing IQ-9075 EVK,直接在设备上运行AI工作负载。该设备作为本项目边缘部署的目标,可实时运行训练好的策略。
我们将采用由Seeed Studio制造的SO-ARM101 Pro组装套件。这是一款低成本、开源的机械臂套件,专为LeRobot生态系统设计,包含用于远程操作的主臂和执行预录或预测动作的从动臂。由于该组装套件出厂时已预先配置好伺服电机ID,因此可以轻松开始收集演示数据,并在最小的硬件设置下运行训练好的策略。
SO-ARM101 Pro组装套件包含一个腕部摄像头和两个伺服驱动板。
本项目需要另一台摄像头,因此我们选择了Seeed Studio X10 USB摄像头(1080p)。
术语
在进入操作指南之前,先了解本项目中使用的一些术语会有所帮助。
模仿学习是一种机器学习方法,模型通过观察人类的示范来学习执行任务,而不是通过显式的编程或试错训练。在本项目中,机械臂通过观看人手动操控它完成任务的重复示例,来学习抓取和放置立方体。
策略(policy)就是经过训练的模型本身:根据机器人当前的摄像头图像和关节位置,它预测下一步应采取何种动作。此处采用的是“基于Transformer的动作分块”(ACT)这一特定策略架构。
远程操作是指由人类直接控制机械臂,通常使用一个主臂将动作镜像传递到被记录的从动臂上。这是用于训练的演示数据收集方式。
运行(rollout)是指使用训练好的策略实时控制机器人,通过实时的摄像头和传感器输入,在执行过程中动态决定每一步动作,而不是回放预先录制好的固定动作序列。
一集是指机器人从开始到结束执行特定任务的完整连续录制,例如拾起一个立方体并放入容器中。
设置 SO-101 手臂
我们将使用 uv 进行环境管理。运行以下命令以安装 uv 并设置虚拟环境:
运行以下命令直接从源码构建并安装 LeRobot:
要获得串口访问权限,需将当前用户添加到 dialout 组。
视频解码功能需要安装 ffmpeg 软件包。
校准
在LeRobot中校准SO-101机械臂,是为了让主臂和从动臂就某个关节位置的含义达成一致,从而使远程操作、记录的数据集和训练好的策略共享相同的坐标系。使用lerobot-find-port找到每只机械臂的串口,然后分别运行一次lerobot-calibrate命令,分别用于从动臂和主臂。该脚本包含两个步骤:首先,手动将机械臂移动到其运动范围的中间位置并按回车键,以记录归零偏移量;接着,对每个关节的旋转进行完整范围扫描,并再次按回车键,以记录每个关节的最小值和最大值。结果将保存为JSON文件,文件名由您选择的--robot.id=作为键,存放在LeRobot的校准缓存目录下,因此在后续的远程操作、数据记录和部署命令中重复使用相同的ID,否则系统会提示您重新校准。
当两臂均完成校准时,使用每只机械臂的端口以及校准时使用的相同ID,运行lerobot-teleoperate命令。然后手动移动主臂:如果从动臂与主臂各关节一一对应,则校准正确,机械臂行为符合预期。
摄像头设置
在装置上安装了两台摄像头:一台固定在跟随臂的腕部,用于在接近和抓取过程中对夹具和物体进行特写拍摄;另一台固定摄像头则位于工作区正上方,提供稳定、俯视视角的完整场景画面。将摄像头置于工作区上方还能避免在大多数接近过程中手臂遮挡自身视野。必须确保两个摄像头的安装位置在整个录制过程中保持固定且一致,以保证模型能从所见内容可靠地学习到正确的动作映射。
数据集录制
在领导者臂和跟随者臂完成标定并完成摄像头定位后,即可开始录制演示片段。通过lerobot-record命令连接机器人和摄像头,系统将执行一系列演示,其中领导者臂通过远程操作完成拾取与放置任务,同时跟随者臂的动作及摄像头帧图像被记录到磁盘中。在录制过程中,display_data 标志会通过 Rerun(一种可视化和数据记录工具)实时传输摄像头画面和机器人关节状态的视图,便于在开始完整的数据采集前确认摄像头画幅是否正确以及机械臂是否按预期进行跟踪。
下方的 GIF 显示了实际录制过程中 Rerun 可视化效果。训练和推理均使用这些摄像头帧和关节位置作为模型输入。
训练策略
我们采用 ACT(基于 Transformer 的动作分块)作为该任务的策略架构,因为它非常适合拾取与放置任务所需的短而精确的操作序列。与传统方法在每个时间步预测单个动作不同,ACT 会从当前的摄像头图像和关节状态中一次性预测出一段较短的未来动作序列,从而生成更平滑、时间一致性更强的动作,并减少因策略每次仅响应一步而导致的累积误差。它还能有效利用相对较少的人类演示数据进行训练,因此对于这类数据集(由几十个而非数千个录制的场景组成)来说,是一种实用的选择。
演示数据在IQ-9075 EVK上录制后,传输至MacBook Pro(Apple M4 Max),在该设备上进行实际的策略训练。M4 Max统一的内存和MPS后端提供了更快的训练吞吐量。我们只需在MacBook Pro上安装LeRobot训练包即可。
下面的lerobot-train命令会从本地路径加载已录制的数据集,使用Mac的MPS设备训练ACT策略,并将训练进度记录到Weights & Biases,同时每10,000步保存一次检查点。训练共运行100,000步,批量大小为8,最终生成的策略和检查点将写入指定的输出目录,而不是上传至Hugging Face Hub。
训练策略耗时略超11小时。以下是L1损失的可视化结果:
为NPU编译与优化
一旦模型训练完成,就需要将其从标准的PyTorch检查点转换为Dragonwing IQ-9075的Hexagon NPU可执行的格式,因为PyTorch本身无法直接在NPU上运行。这一过程通过高通AI Hub实现,它会将模型进行编译,在真实硬件上进行性能分析,并验证其输出结果。
运行以下命令以安装 Qualcomm AI Hub SDK 并使用您的 API 令牌进行身份验证:
我们实现了一个 Python 脚本,该脚本封装了训练好的 ACT 策略,仅暴露其推理路径,将其追踪为静态计算图,并将该图发送至 Qualcomm AI Hub,以便在 IQ-9075 的 Hexagon NPU 上编译。随后,脚本在真实硬件上对编译后的模型进行性能分析,获取实际的延迟和内存数据,执行验证推理以确认输出结果正确,最后下载编译后的模型文件,准备部署到电路板上。以下是完整的脚本。
运行以下命令以执行脚本。使用 --checkpoint 指定您训练好的策略目录。
在 NPU 上进行推理
LeRobot 的 ACT 策略通常在 CPU、NVIDIA CUDA、Apple MPS 或 Intel XPU 上运行。您可以使用 lerobot-rollout 这一专用于策略部署的 CLI 工具,将这些训练好的策略部署到真实硬件上。但这些工具均不支持 Qualcomm 的 Hexagon NPU,且编译后的模型已不再适配 LeRobot 自有的 ACTPolicy 类,因此 lerobot-rollout 无法运行该模型。
我们构建了一个自定义策略,将高通AI Hub编译后的ACT模型作为第一类策略类型集成到lerobot-rollout中,重用了LeRobot现有的命令行接口、策略、机器人连接、摄像头捕获和归一化流水线,而非绕过这些组件。该自定义策略是一个小型可安装的Python包,通过LeRobot自身的插件系统进行集成:一个配置类注册了新的策略类型“act_htp”,而一个策略类则封装了编译后的模型,使用与所有LeRobot策略完全相同的select_action()接口。在内部,它通过高通QNN代理将模型加载到Hexagon NPU上,并在后台线程中预先计算每个新的动作块,从而确保推理不会阻塞机器人的控制循环。
要使用此包,请先安装所需依赖:
从当前工作目录安装该包时,请执行以下命令:
更新训练检查点目录中的config.json文件,将“type”字段从“act”改为“act_htp”。这确保lerobot-rollout会将执行路由至该策略,而不是默认的PyTorch ACTPolicy。将下载并优化后的模型文件复制到同一检查点目录中。
运行此命令以在 IQ-9075 的 Hexagon 张量处理器(NPU)上交互式部署并执行策略。
结论
该项目从远程操作演示到实时设备端推理,全程采用单一的操控任务,将每个阶段都视为真正的工程问题,而非一系列默认命令。相机位置、数据覆盖范围以及训练配置均根据训练后策略在机器人上的实际表现进行了重新审视和调整,而不仅仅是依据损失曲线的建议。部署工作更进一步,不仅实现了模型运行,还为Hexagon NPU构建了合适的LeRobot策略插件。这项工作仍有很大的发展空间。该策略若能使用更大、更多样化的数据集,涵盖更多物体位置、光照条件和容器摆放情况,将会更加受益。
本文编译自hackster.io





