MoveIt Servo 是 MoveIt 中用于实时伺服控制的上层框架,面向遥操作、视觉伺服和闭环位姿跟踪等需要连续流式命令的场景。

它不是“另一个 IK 算法”。它可以在内部使用逆雅可比或 MoveIt Kinematics Plugin 求解关节命令,但它真正提供的是一套实时 servo policy:输入解释、安全缩放、状态报告、平滑和与 MoveIt 场景状态的集成。

核心问题

传统轨迹规划更像“给一个目标,先规划,再执行”。实时 servo 要解决的是“命令每个周期都在变化,机器人如何连续、可控、安全地跟随”:

  • 操作者通过手柄或 VR 设备给末端速度或目标位姿。
  • 视觉系统根据目标偏差持续给修正命令。
  • 上层闭环控制不断调整末端目标,希望机器人边执行边修正。

MoveIt Servo 接收的命令类型包括单独关节 jog/速度、末端速度 Twist 和末端目标 Pose。不同输入都可用于机器人遥操作视觉伺服闭环位姿控制,并会被转换为可执行的关节侧输出,再经过限幅与安全策略处理。

核心机制

一条典型 Servo 链路可以理解为:

  1. 读取当前 MoveIt RobotState 和外部命令。
  2. 根据命令类型使用逆雅可比或 IK plugin 得到关节速度/位置更新。
  3. 基于 MoveIt PlanningScene碰撞检查
  4. 奇异点检查关节限位 enforcement 和速度缩放。
  5. 可选地执行运动平滑
  6. 发布 joint command 和 servo status。

这个流程说明 MoveIt Servo 的核心价值不只是“把 Pose 变成关节角”,而是把实时命令包在一套可观测、可限幅、可降速或停机的控制策略里。

工程用途

MoveIt Servo 适合需要高频小步跟随的场景:

和“Pinocchio + DLS”相比,MoveIt Servo 更像完整 servo 层;Pinocchio + DLS 更像“数学后端 + 一个数值 IK 求解策略”。

边界与常见坑

  • MoveIt Servo 的安全能力依赖准确的 URDF、SRDF、PlanningScene、碰撞几何和当前 robot state;场景状态过期时,检查结果也会失真。
  • 碰撞检查和平滑等能力可以通过参数关闭,但关闭后不能再假设 Servo 会自动兜底这些风险。
  • 使用 Pose command 时,内部求解可能走逆雅可比,也可能走机器人配置中的 IK plugin;不要把具体求解路径误认为固定算法。
  • Servo 是局部实时跟随,不等价于全局路径规划;复杂障碍物绕行、长距离移动和任务级约束仍可能需要 MoveIt 规划层。

相关术语