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 以瀏覽我們的開源機器人專案。