关节限位Joint Limits)是对机器人各关节位置、速度、加速度或力矩范围的约束,用于保证运动命令在机械、驱动器和控制器可接受范围内。

它是 IK、规划和实时 servo 的基础安全边界。一个目标位姿在几何上可达,不代表对应关节解一定满足限位。

核心问题

关节限位回答的是:

  • 每个关节能转到哪里,不能越过哪里?
  • 当前速度或目标速度是否超过执行器能力?
  • 轨迹加速度或 jerk 是否过大?
  • 接近边界时应该缩放、停止还是重新求解?

在实时控制中,限位不仅是最终输出检查,也会影响 IK 解的选择和 servo 的降速策略。

核心机制

限位来源可能包括:

  • URDF 中的 hard position/velocity/effort limit。
  • MoveIt 配置中的 joint_limits.yaml,可能比 URDF 更保守。
  • 控制器或驱动器内部限制。
  • 机械结构、线缆、工具或任务定义带来的额外软限制。

MoveIt Servo 会在实时命令处理中执行 joint position / velocity limit enforcement,接近或越界时可缩放或停止输出。

工程用途

  • 防止 IK 解把关节推到机械边界。
  • 限制遥操作中单步关节速度和位置跳变。
  • 为规划器筛选可执行状态和轨迹。
  • 在 baseline 和日志中解释“为什么命令被截断或停止”。

边界与常见坑

  • URDF 限位不一定等于真实硬件安全限位;实机校准和结构版本变化后需要复核。
  • 位置限位、速度限位、加速度限位和 effort 限位是不同概念,不能只检查一种。
  • 后端 IK 满足位置限位,不代表相邻周期速度和加速度也满足。
  • 限位裁剪会改变末端运动效果,必须记录和反馈,否则操作者会感觉机器人“不听话”。

相关术语