如何为机器人狗添加了一个机械臂
扫描二维码
随时随地手机看文章
在过去的几个月里,一只希沃纳小狗机器人狗一直稳稳地坐在我的办公桌上。它很聪明——能够四处移动、识别面孔,甚至还能响应一些指令。但一个想法一直在我脑海中萦绕:如果它能拥有“双手”来主动与周围环境互动,而不仅仅是观察和移动该怎样呢?这个想法促使我订购了适用于小狗机器人的专用两自由度机械臂扩展套件,从而开启了将它从“移动平台”转变为“移动操作器”的项目。
这远不止是硬件的简单附加功能。我的目标是构建一个完整的智能行为循环:让“小狗板”能够自主找到目标物体,规划前往该物体的路径,精确地抓取它,并最终将其运送到指定位置。这听起来像是物流机器人或家庭助手的简化版本,而“小狗板”采用的开源、基于 ROS 的设计使这个雄心勃勃的想法得以实现。
第1步:硬件集成——构建物理基础
将这个机械臂套件安装起来的过程出乎意料地十分顺利。该套件包含机械臂主体、两个专用伺服电机、所有必需的线缆以及一个与“小狗派”(PuppyPi)的数控铝制背板完美适配的安装支架。关键在于要确保机械臂底座稳固无比,因为任何轻微的晃动都会在夹爪处被放大,从而破坏精度。
我用提供的线缆将机械臂的两个伺服电机连接到了小狗板主板上的预留扩展端口上。根据官方文档,这些端口是预先配置好的,这让我避免了底层驱动程序方面的困扰。在开机之前,我手动将机械臂调整到“零”位置——这是未来所有动作的基准点。
您可以查看“小狗板”教程,以获取完整的代码、视频指南以及其他项目内容。
第 2 步:软件与感知——赋予其“眼睛”和“大脑”
真正的挑战和乐趣始于软件方面。PuppyPi 运行着完整的 Ubuntu 和 ROS 系统,这是我一切工作的基础。我首先安装了官方的 HiWonder 机器人手臂 ROS 包,其中包含了 URDF 模型、基本控制器和示例脚本。
视觉对于手臂确定抓取位置至关重要。我利用“小狗板”内置的广角摄像头编写了一个基于 OpenCV 的视觉节点。为了确保识别的可靠性,我编写程序使其能够检测特定的颜色(一个明亮的红色立方体)。这个节点会持续分析视频流。一旦它识别出目标颜色的斑点,它就会使用相机校准参数计算出该物体相对于“小狗板”主体的三维空间坐标。
接下来是关键环节:坐标转换和运动规划。我创建了一个核心控制节点,该节点订阅由视觉节点发布的坐标信息。接收到这些坐标后,该节点会执行一系列坐标转换,将目标点从“相机坐标系”转换到“机械臂基坐标系”。对于这个具有两个自由度的机械臂,我使用了一个简单的几何模型来进行逆运动学计算,以确定所需的伺服角度,生成了一条平滑的轨迹,并最终通过 ROS 主题向伺服驱动节点发布命令。我还编写了一个简单的夹具控制服务来处理开合动作。
第 3 步:让功能“活”起来——三个逐步演示环节
在硬件和软件都准备就绪之后,我设计并实施了三个逐步复杂的场景,以全面测试该平台的性能。
示例 1:静态视觉抓取。这是基础测试。当“小狗板”保持静止状态时,我将红色立方体放置在它前方的不同位置。启动程序后,它会用“头部”(摄像头)快速扫描,锁定目标,然后机械臂会平稳地在立方体上方移动、下降、抓取并抬起。当夹具稳稳地提起立方体的那一刻,我就知道整个感知控制流程已经正常运行了。
演示 2:自主搜索与运输。这是核心挑战。我让小狗机器人在一间小房间里自由移动,同时持续运行视觉程序。当摄像机在移动过程中发现地板上的红色立方体时,程序会命令小狗机器人调整自身方向,并靠近该物体。到达最佳位置后,小狗机器人会暂停,执行抓取动作,然后规划一条新的路径,将立方体运送到指定的“投放区”。这一过程完美地展示了完整的自主机器人循环:“感知 - 决策 - 执行 - 移动”。
演示 3:简单的人机交互。为了增添趣味性,我利用了 PuppyPi 现有的多模态人工智能功能进行了简单的集成。我扩展了其语音功能,使得当我说“拿起那个红色的立方体”时,语音识别会将指令转换为文本,并通过 ROS 传递给主控制节点,从而触发整个搜索和抓取流程。这是一个初步演示,但有效地展示了高级自然语言指令如何能够转化为复杂的机器人任务。
第 4 步:挑战、调试与优化
没有哪个项目是一帆风顺的。我遇到了几个关键问题:首先,由于小狗电脑停止运行时身体轻微晃动导致抓取精度下降。我的解决办法是在移动后短暂进行稳定暂停,并让视觉系统进行多次快速位置读取以进行平均计算后再进行抓取。其次,在多节点协调中出现了时间问题(例如,夹爪在手臂未处于正确位置时就闭合)。我使用 ROS 的 actionlib 库对任务流程进行了重构,将每个动作(移动、定位、抓取)都设为独立的、可等待的动作,并带有反馈,从而形成了更清晰、更可靠的逻辑。
结论
通过这个项目,PuppyPi 从一个“演示平台”转变为了一款真正的“创新平台”。虽然这个两自由度机械臂设计简单,但它所实现的自主移动操作能力却远超其各个组成部分的总和。这证明了在低成本的桌面级设备上实现复杂机器人应用是可行的。
该项目的结束仅仅意味着更多想法的开始。你可以为夹具添加微型摄像头,以实现精确的“手眼”视觉伺服;可以使用激光雷达地图让机器人记住物品通常存放的位置;甚至可以尝试两个“小狗板”单元协同工作来搬运一个物体。PuppyPi 的开源生态系统和 ROS 支持为所有这些探索提供了坚实的基础。
我认为最令人兴奋的项目并非是使用那种封闭式的产品,而是要将一个开放平台发挥到极致,从而创造出全新的事物。为“小狗板”添加一个扩展臂的过程,正是这样一种探索之旅。我迫不及待地想看到你们用它创造出什么样的成果。
本文编译自hackster.io





