NAO 机器人自主找球与踢球系统

面向 NAO 人形机器人的感知、决策和运动控制闭环系统。

项目概述

本项目在 NAO 人形机器人 上实现自主找球、接近、对齐和踢球任务。系统形成了一个完整的具身智能闭环:

视觉感知 -> 目标定位 -> 行为规划 -> 人形机器人运动控制

项目集成了实时计算机视觉、有限状态机行为规划、头部主动扫描、行走控制和踢球动作执行。相比静态视觉演示,本项目的核心挑战在于机器人必须不断行动、观察行动结果,并根据新的观测更新决策。

这个项目让我很早就理解到具身智能中的一个基本事实:感知只有能够支持可靠行动时,才真正有意义。

NAO 机器人找球与踢球系统

该图展示了闭环流程:NAO 机器人通过 onboard camera 获取图像,检测并定位球,估计相对位置,使用有限状态机决定行为,然后通过 NAOqi 执行行走、对齐或踢球动作。


项目动机

机器人系统的难点在于感知、决策和控制紧密耦合。一个小的感知误差可能导致错误动作,而错误动作又会改变下一帧观测。因此,本项目关注完整闭环,而不是单独做一个视觉模块。

找球和踢球任务本身相对简单,便于测试,但它包含具身系统的关键组成:

  • 机器人需要检测目标;
  • 需要估计目标相对位置;
  • 目标丢失时需要主动搜索;
  • 接近时需要避免过冲;
  • 踢球前需要完成身体对齐;
  • 执行动作时需要保持稳定。

因此系统采用模块化、可解释的设计,便于在真实硬件上调试。


系统架构

系统作为连续的 perception-action loop 运行:

  1. 从 onboard RGB camera 采集图像;
  2. 在图像中检测球;
  3. 估计球相对机器人的方向和距离;
  4. 更新行为状态;
  5. 执行头部扫描、行走、对齐或踢球动作;
  6. 观察新的环境状态并重复循环。

这使机器人能够自主与环境交互。


感知模块

轻量视觉检测

感知模块使用轻量级传统视觉流程,适合 NAO 的板载计算和实时控制要求。

主要步骤包括:

  • 将 RGB 图像转换到 HSV 颜色空间,提高对光照变化的鲁棒性;
  • 颜色阈值分割球区域;
  • 形态学处理去除噪声;
  • 提取轮廓;
  • 根据面积、圆度和位置过滤候选区域;
  • 对检测到的球中心进行时间平滑。

最终输出包括图像坐标中的球中心位置,以及当前是否可靠看到球的置信信息。

距离估计

距离估计使用简化针孔相机模型。根据图像中球的半径,可以近似估计距离:

[ Z \approx \frac{fR}{r} ]

其中:

  • (f) 是焦距;
  • (R) 是球的真实半径;
  • (r) 是图像中观测到的球半径;
  • (Z) 是估计距离。

图像中的水平偏移用于估计相对朝向。距离和朝向共同支持接近、对齐和踢球决策。


行为规划

系统使用 有限状态机 控制机器人行为。FSM 使系统具有可解释性,并能处理间歇性的感知失败。

主要状态

  • Search:看不到球时主动扫描环境;
  • Track:通过头部和身体调整,让球保持在图像中心附近;
  • Approach:朝球移动,同时修正朝向;
  • Alignment:踢球前调整身体位置;
  • Kick:执行踢球动作;
  • Recovery:接近过程中丢失球时停止或重新搜索。

状态转移

状态转移由以下信号触发:

  • 球是否可见;
  • 估计距离;
  • 图像水平偏移;
  • 检测置信度;
  • 行走或踢球动作是否完成。

FSM 避免了过早踢球、丢失目标时继续前进、以及在搜索和接近状态之间频繁震荡等问题。


运动控制

行走控制

行走控制通过 NAOqi API 实现,包括 setWalkTargetVelocity。系统根据球的位置调整前进速度和角速度。

朝向修正采用简单比例控制:

[ \omega = k_\theta \cdot \Delta x ]

其中 (\Delta x) 是球中心和图像中心之间的水平偏差。

头部控制

机器人通过 head yaw 主动扫描环境。当看不到球时,机器人在一定角度范围内移动头部;当检测到球时,头部跟踪球,使其尽量保持在图像中心。

这种主动感知机制提升了目标丢失后的恢复能力。

踢球控制

踢球动作使用预定义关节轨迹实现,协调髋关节、膝关节和踝关节动作,以在保持平衡的同时完成踢球。

只有当 FSM 确认以下条件时才执行踢球:

  • 球足够近;
  • 球与踢球腿基本对齐;
  • 机器人身体姿态稳定。

技术栈

硬件

  • NAO 人形机器人;
  • onboard RGB camera;
  • IMU 和关节编码器。

软件

  • NAOqi framework;
  • Python / C++ API。

计算机视觉

  • HSV 分割;
  • 形态学过滤;
  • 轮廓检测;
  • 几何距离估计。

算法

  • 有限状态机;
  • 比例朝向控制;
  • 主动视觉搜索;
  • 人形机器人行走与踢球控制。

项目结果

系统实现了:

  • 实时检测和跟踪球;
  • 目标不可见时主动搜索;
  • 朝球接近并修正身体朝向;
  • 踢球前完成对齐;
  • 执行稳定踢球动作。

关键收获

  • 搭建了完整的 具身智能闭环系统,连接感知、决策和控制。
  • 在真实机器人硬件上设计并实现了 FSM 行为规划。
  • 理解了感知不确定性如何影响运动决策。
  • 获得了调试闭环机器人行为的实践经验。

该项目提供了我对 闭环智能系统 的早期实践经验,并影响了我后来对 自动驾驶、具身感知和多智能体感知系统 的研究兴趣。