Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Nonholonomic Constraint

  • 又称: non-holonomic constraint
  • 类别: Foundations & spatial maths › Kinematics
  • 标签: kinematics, mobile-robots, motion-planning, wheeled-robots, control-theory

一种作用于系统速度、无法积分成构型约束的约束,例如车轮不能侧向滑动,却仍然能够到达任意位置。

定义

非完整约束(nonholonomic constraint)限制系统在每一时刻能够运动的方向,但不限制它最终能够到达哪些构型。完整约束可以写成关于构型本身的方程,例如两点之间的距离固定,它们会从可达构型空间中去掉维度。非完整约束则写在速度上,通常采用 Pfaffian 形式 A(q) q̇ = 0,并且无法积分成这样的方程。经典的例子是纯滚动不打滑的车轮:它的速度必须沿着其朝向,但通过把前进运动和转向结合起来,它可以到达平面上的任意位置和朝向。

轮式移动机器人是最常见的情形。差速驱动机器人或汽车不能瞬时侧向移动,因此侧方停车需要一连串前进和后退的圆弧。其他来源包括轮腿机器人上的可转向轮、球-板滚动,以及自由漂浮空间机器人中的角动量守恒,后者以一种无法积分的方式约束速度。带有这类约束的系统能否到达所有构型,是一个可控性问题,答案通过检验允许运动方向的 Lie 括号是否张成构型空间来给出(Chow 定理)。

非完整约束对规划和控制都有实际影响。构型空间中的直线路径往往不可行,因此规划器使用 Dubins 曲线或 Reeds-Shepp 曲线等转向函数、栅格基元,或包含该约束的轨迹优化。在控制方面,Brockett 1983 年的结果表明,许多非完整系统(包括独轮车)无法用光滑、时不变的状态反馈律镇定到一个点;实用的控制器转而跟踪一条移动的参考轨迹,使用时变或不连续的反馈,或者控制车轮轴前方的一个点。

为何重要

大多数轮式机器人都是非完整的,忽略这一点会产生机器人无法执行的规划,以及在目标附近失效的控制器。这一概念也解释了为什么在需要侧向运动时会选择全向底盘和完整驱动。

主要应用

  • 汽车、差速驱动机器人和牵引挂车的路径规划
  • 轮式移动机器人的轨迹跟踪控制
  • 轮腿机器人的运动优化
  • 狭小空间中的停车与机动
  • 自由漂浮空间机器人的姿态控制

实际应用

一个团队在开发采用差速驱动的室内配送机器人时发现,他们为点机器人编写的全局规划器会在狭窄门口生成带有尖角和侧向台阶的路径。他们把局部规划器改为对符合驱动约束的速度指令(例如前进速度和转向角速度)进行采样,并加入一个最终接近行为:沿着一条曲线驶向充电站,而不是试图在原地修正小的侧向误差。在一台轮腿四足机器人上,全身优化器中也加入了类似的约束:每个车轮的对地速度必须沿着其转向角方向,因此求解器永远不会规划出车轮的侧向打滑。

常见误解

  • 非完整机器人无法到达某些位置 — 它通常能够到达每一个构型,只是不能沿着每一条路径到达
  • 非完整意味着机器人的自由度更少 — 构型空间保持其维数;受限制的只是瞬时速度
  • 任何速度限制都是非完整约束 — 速度和加速度界限是不等式限制,而不是关于方向的不可积等式约束
  • 标准反馈控制可以把类车机器人停在一个点上 — Brockett 条件排除了这类系统的光滑时不变反馈,因此需要其他策略

谁需要了解

  • 移动机器人规划与控制工程师
  • 自动驾驶车辆运动规划团队
  • 轮腿机器人和野外机器人开发人员
  • 学习运动学和控制的机器人专业学生

相关技术

  • Dubins 路径(Dubins Paths)
  • Reeds-Shepp 曲线(Reeds-Shepp Curves)
  • 状态栅格规划器(State Lattice Planners)
  • Pure Pursuit
  • 麦克纳姆轮(Mecanum Wheels)

相关术语

  • Unicycle Model
  • Configuration Space
  • Omnidirectional Drive
  • Kinematics
  • Trajectory Planning
  • Underactuated system

相关项目

  • OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
  • MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
  • Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines
  • DART: C++ physics engine for articulated rigid body dynamics and robotics simulation

视频

  • Holonomic vs. Nonholonomic Constraints for Robots | Fundamentals of Robotics | Lesson 4: Mecharithm - Robotics and Mechatronics
  • Nonholonomic Constraints & Lagrange Multipliers Explained | ESM 5314 Lecture 22: Dr. Shane Ross

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。