设计一个带眼睛、耳朵和大脑桌面机械臂
你在网上看到的大多数“AI机器人”演示,其实都是把所有数据悄悄发送到某个云端GPU。这些机器人看起来很炫酷,但只要拔掉网线,它们就会彻底崩溃。我想知道:一个小小的桌面机械臂,真的能理解语音指令、看清桌面上的东西并抓取物品吗?而且完全不需要连接网络?
剧透:是的。而且所有内容都装在一台 MacBook Air 上。
这篇文章是对该演示的总结。我不会用代码淹没你——最后我会附上代码仓库链接,如果你想要自己动手搭建的话。在这里,我想向你展示可能实现的功能以及各个部分是如何组合在一起的。
它做什么
你说,机器人选择。以下是一段典型的对话:
把绿色的立方体递给我。
手臂扫描着桌面,从众多彩色方块中找到了绿色的立方体,将吸嘴轻轻压在上面,然后把它拾起,再带到我伸手的地方——轻轻地放进了我的掌心。
它还理解其他一些内容:
•把蓝色的立方体放进纸板盒里。
•把信用卡交给我。
•“等等!”(动作进行中——手臂停在原地。)
所有操作都在笔记本电脑上完成,无需网络。Mac从不寻求帮助。
三个模型
这个项目中的“AI”并非一个模型,而是三个模型,每个都专注于自己最擅长的任务,并通过一个小的Python脚本相互交流。这三个模型均在本地运行,使用的是苹果的MPS(M系列内置的GPU)。
Mac:
1. 耳朵 — Nemotron-ASR(约1 GB)
NVIDIA 提供的流式语音转文字模型。它通过 MacBook 内置麦克风进行录音,并将你的声音实时转换为文字。我使用的是 mlx-audio 库,该库基于苹果硅芯片实现。
优化。
2.Brain — Qwen3-1.7B(约4 GB)
阿里巴巴推出的一款小型语言模型。它读取转录文本,决定机器人应执行的操作,并输出一个简短的JSON计划,例如:{"action":"pick_and_place", "source":"a green cube", "target":"a
“人类手”}。整个推理过程大约需要一秒。运行在苹果的MLX框架上——与苹果智能在你的Mac上本地运行的方式相同。
3. 眼睛 — OWLv2(约600 MB)
谷歌的开放词汇物体检测器。与传统仅了解固定类别的检测器(如“狗”、“汽车”)不同,OWLv2 可以根据文本描述来识别你所描述的内容。因此当 Qwen 说“找到
“绿色立方体”,OWLv2 实际上是在寻找一个绿色的立方体——无需特殊训练。
总内存:约6GB。Mac 可轻松运行,还有足够的空间容纳其他操作系统。
硬件(出人意料的小)
•mycobot 280 M5 — 6轴机械臂,可达280毫米,约400美元,由Elephant Robotics制造。
•吸水泵套件——作为mycobot的配件提供。两根电线控制泵和空气阀。
•USB摄像头——安装在工作区上方的龙门架上,直视下方。没什么特别的,一个30美元的摄像头就足够了。
•MacBook Air M4 — 全部运行,无需外接显卡。
•彩色立方体、一个纸箱、一张信用卡——随机演示用的物品。
就这样。没有深度传感器,没有激光雷达,也没有NVIDIA盒子在桌下嗡嗡作响。
单个命令如何在系统中流动
让我来带你了解当你说“给我拿那个绿色的立方体”时会发生什么。
步骤1 — 音频转文字(约500毫秒)。
后台线程始终处于监听状态。当它检测到语音(即你的声音高于房间的噪音水平)时,会捕捉音频,发送给Nemotron,然后收到回复:“把绿色立方体交给我。”
步骤2 — 文本转计划(约1秒)。
转录任务被发送给Qwen3,附带一个简短的提示说明其职责(“将机器人指令转换为JSON”)。Qwen回复:
{"action": "pick_and_place"}
“来源”:“一个绿色的立方体”
目标:“一个人的手”
步骤3 — 找到立方体(约100毫秒)。
相机拍摄的图像帧连同查询“一个绿色立方体”一起发送到OWLv2。OWLv2返回一个包含绿色立方体的边界框及其置信度分数。
步骤4 — 相机像素 → 机器人坐标。
通过已校准的相机与机器人的相对位置(初始时完成一次校准),脚本将立方体的像素位置转换为机器人坐标系中的实际毫米级XY坐标。
系统。
步骤5 — 移动手臂。
脚本使用逆运动学求解器(开源库 ikpy)计算关节角度,通过 USB 串口将数据发送至 mycobot,随后机械臂上升至立方体上方,下降,泵随即启动。
步骤6 — 拿到你手中。
OWLv2 现在开始寻找“人手”。它会在画面中找到你的手掌,脚本计算出其位置,随后手臂将立方体带到那里。在移动过程中,系统会持续检测——如果你移动手部,手臂就会随之跟踪。当你静止不动两秒后,泵体会释放,立方体便会落入你的手中。
总时长,从语音到交付:约8秒。
让我感到意外的是有些事情和我来之前的想法并不一样。
模型虽然规模小,但功能强大。Qwen3-1.7B 并不是目前最大的大语言模型,但在将机器人指令解析为结构化 JSON 的能力上已经足够。OWLv2 同样如此——它不像针对特定对象进行微调的检测器那样准确,但能够通过修改一个字符串(如“一个绿色立方体”→“一张信用卡”→“一根香蕉”)来改变目标,这种能力极为强大。
最难的部分并不是人工智能,而是校准。要知道摄像头的确切位置、机器人关节认为自己所在的位置,以及泵嘴在手腕下方悬挂的精确长度……这些毫米级的精度至关重要。我经过了三轮触控校准(手动将机器人的泵移动到标记点上的已知位置),才使抓取的准确性变得可靠。
语音控制需要防护栏。语音活动检测能够识别咳嗽声、风扇噪音,甚至在不戴耳机时,系统会自动确认脚本的提示音。大约有200行代码用于过滤:如“忽略短语表达”,“剔除常见填充词”,“始终允许停止指令通过”,“如果大语言模型解析错误,则拒绝移动手臂”。
整个系统在电池供电下实时运行。在我 MacBook Air 上,摄像头正在直播,三个模型都已加载,手臂接收指令时,笔记本电脑的功耗大约为 15 到 20 瓦。你甚至可以把它插在咖啡店的普通电源插座上使用。
我接下来要尝试的是什么
现在基本循环已经可以运行了,我想探索几个方向:
更大的LLM,更细致的指令。尝试使用Qwen3-7B或Llama 3.1-8B以获得更丰富的推理能力。“按颜色对这些立方体进行排序”或“先将最重的放入盒子中。”
面向端到端任务的视觉语言模型。用像 Qwen2.5-VL 这样的单一视觉语言模型替代 Qwen 和 OWLv2,减少人工拼接工作。
立体摄像头用于深度测量。目前我采用一种简化方法:假设物体位于桌面上(或双手处于已知高度)。如果再加一个摄像头,我就能计算出真实的三维位置。
打造一些真正能让人在现实中感到惊喜的东西。
三个要点:
1. 本地AI现在是现实的。一台5岁大的笔记本电脑就能运行出2020年需要服务器才能完成的程序栈。
2. 构建模型,而不是训练一个。语音转文本 + 大语言模型 + 视觉检测器的组合,胜过尝试训练一个自定义的东西。它们各自在自己的领域表现优异。
3. 声音 + 视觉 + 机器人,比其中任何一项单独存在都更有趣。这一点很难用文字表达——当你说出一句话,而现实世界中某个物体作出反应时,那种感觉完全不同。
本文编译自hackster.io





