Skip to content

智能设备自动回充电(调研)

智能扫地机器人(以云鲸、石头、科沃斯等主流品牌为例)的“自动回充”功能是一个多技术融合的典型应用。其执行过程可以分解为触发条件、路径规划与导航、对接执行三个阶段。

一、触发条件

  1. 低电量阈值:这是最常见的原因。当电池电量低于预设值(通常为 15%-20%),机器人会主动中断清扫,启动回充流程。
  2. 任务完成:整个清扫或拖地任务完成后,自动返回充电座。
  3. 手动指令:通过 App 或物理按键发送“回充”指令。
  4. 基站召回:部分高端型号(如带有自动集尘、自动洗拖布功能的基站)在完成特定任务(如集尘、清洗拖布)后,基站会主动发出信号召回机器人。
  5. 寻找基站失败:在开始清扫前,如果机器人发现电量不足,会先寻找基站充电,此时也触发回充流程。

二、路径规划与导航

我们选择的方案是:基于 SLAM 的智能路径规划

简单来说,就是如何找到回去的路?

这是技术的核心,不同品牌和型号的方案有差异,但主流可以分为两大类:

方案 A:基于传感器的传统方案(早期及中端型号常用)

这种方式不依赖精确的地图,更像是一个“寻踪回家”的过程。

  1. 信号探测:充电座本身是一个信号源。它会持续向前方发射红外线(IR)信号无线电(RF)信号,形成一个信号扇区。
  2. 盲区规划:当机器人在信号范围内(通常是以基站为圆心,半径 3-5 米的扇形区域),它会通过机身上的红外接收传感器,像“盲人摸象”一样调整方向,直至对准信号最强的中心线,然后沿直线驶向充电座。
  3. 盲区搜索(核心难点):如果机器人在信号范围外(即“盲区”),它需要依靠其他策略:
    • 沿墙行驶 + 随机碰撞:机器人可能会先移动到房间边缘,然后沿着墙壁行驶,同时探测红外信号。一旦进入信号区,立刻转为上述的信号追踪模式。
    • 基于上次路径的记忆:一些机器人会粗略记录离开充电座时的路径和转弯,尝试反向回溯这段路径。
    • 缺点:效率较低,在复杂环境中可能找不到家,甚至会卡住。

方案 B:基于 SLAM 的智能路径规划(当前主流及高端型号方案)

这是像云鲸 J4、石头 G20、科沃斯 X2 等型号采用的方式,体验非常流畅。

  1. 建图与定位
    • 机器人通过LDS 激光雷达(LiDAR)视觉传感器(VSLAM),在清扫时已经构建了完整的家庭环境地图。
    • 同时,它通过轮子编码器(里程计)惯性测量单元(IMU)激光/视觉数据进行实时定位,始终知道自己在地图中的精确位置(X, Y 坐标和朝向)。
  2. 全局路径规划
    • 当回充触发时,机器人明确知道充电座在地图中的固定坐标(首次发现充电座时就已标记)。
    • 路径规划算法(如 A、D 算法)会计算从当前位置到充电座坐标的最优路径。这条路径会智能地绕开已知的障碍物和禁区,选择最短、最畅通的路线。
  3. 局部避障与微调
    • 在沿规划路径行驶时,机器人的前视传感器3D 结构光双目视觉系统会实时探测路径上突然出现的障碍物(如人脚、宠物、移动的椅子),并进行动态避让,然后重新规划局部路径。

三、对接执行

找到充电座只是第一步,精准对接是最后的关键一步。这个过程通常分为粗对准精对准

  1. 粗对准:通过上述的导航方式,机器人以一定的角度和位置精度驶向充电座。
  2. 精对准与物理导引
    • 充电座前方有两个突出的金属充电触片,其底座通常设计有物理导轨
    • 机器人的底部前方有对应的金属接触点,以及配合导轨的凹槽或斜面
    • 当机器人靠近时,即使有厘米级的偏差,物理导轨也能将机器人的车轮“引导”至正确位置,确保充电触片准确接触。
  3. 信号确认
    • 部分充电座在机器人驶入时,会通过红外信号告诉机器人“微调左/右”。
    • 当机器人检测到充电触片接通、电压稳定后,会停止所有电机,进入充电状态,并向 App 发送“已成功回充”的通知。

四、技术实践

1. 采购设备汇总

  1. 2D 单线激光雷达
  2. 轮式里程计
  3. 惯性测量单元

2. 软件架构

硬件就绪后,你需要软件。ROS 是机器人操作系统的事实标准,它将硬件驱动、SLAM 算法、路径规划等模块化,极大地简化了开发。

  1. 操作系统:在开发板上安装 Ubuntu, 然后安装 ROS(推荐ROS Noetic用于 Ubuntu 20.04,或ROS2 Humble)。
  2. 驱动:安装你采购的传感器(激光雷达、IMU)的 ROS 驱动包。
  3. SLAM 算法包(核心)
    • 激光 SLAM
      • gmapping:经典,适合小范围、线性运动。
      • hector_mapping:对 IMU 和高速运动支持较好,但不优化里程计。
      • cartographer(谷歌出品)强烈推荐。它专门为低成本的传感器(如 RPLIDAR A1)设计,集成了IMU 和里程计进行多传感器融合,能生成非常高质量的 2D 栅格地图,且提供回环检测,消除累积误差。这正是你需要的。
    • 视觉 SLAMORB-SLAM2/3RTAB-Map(支持深度相机)。
  4. 导航算法包move_base。它集成了全局规划器(如global_planner)和局部规划器(如dwa_local_planner),可以接收你建好的地图,并指挥你的小车从 A 点移动到 B 点,实现自动回充的路径规划部分。

3. 代码实现

  1. 硬件集成:将所有传感器牢固安装在小车上,正确接线。
  2. 底层驱动开发
    • 编写/配置电机驱动节点,订阅/cmd_vel(速度指令)话题,并发布/odom(里程计)话题。
    • 配置并启动激光雷达和 IMU 的驱动节点,确保能发布/scan/imu/data话题。
  3. 传感器融合与 SLAM 建图
    • 启动cartographer节点。在 ROS 中,你需要编写一个.lua配置文件,在其中明确声明你使用的传感器源:
      lua
      TRAJECTORY_BUILDER_2D.use_imu_data = true -- 启用IMU
      TRAJECTORY_BUILDER_2D.use_odometry = true -- 启用里程计
    • 使用rosbag记录/scan/imu/odom数据,或者直接遥控小车在办公室内行走。cartographer会实时融合这些数据,构建并优化地图。
    • 建图完成后,使用cartographer的工具将地图保存为.pgm(图像)和.yaml(元数据)文件。
  4. 定位与导航
    • 启动amcl(自适应蒙特卡洛定位)节点,它负责在已知地图中实时定位你的小车。
    • 启动move_base节点,加载你保存的地图。
    • 此时,你可以在 RViz 可视化工具中,给小车指定一个目标点(比如充电座坐标),move_base就会自动规划路径并控制小车到达。