JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

速度與雅可比矩陣:速度運動學與奇異點

雅可比矩陣把關節運動的快慢與手部運動的快慢聯繫起來,並揭示出手臂失去控制能力的危險位置。

從手部在哪裡,到手部移動得多快

前面的階梯回答的是關於位置的問題:給定關節角度,手部在哪裡?這就是正運動學。但機器人不只是要到達某個位姿——它還得平穩地移動過去、沿直線行進、在接觸前減速,並在行進中保持工具的朝向。這就引出了一個新問題:當各關節以一定速度轉動時,末端執行器正以多快的速度、朝哪個方向運動?回答這個問題正是速度運動學的任務。

連接關節速度與手部速度的橋樑,是一個叫做機械臂雅可比矩陣的矩陣。可以把它想像成一個時刻在變的變速箱:把各關節轉動的速率輸入進去,雅可比矩陣就告訴你手部由此產生的線速度和角速度。因為它處理的是微小的變化——關節輕微擺動帶來手部輕微擺動——所以這整個主題又被稱為微分運動學

這個關係寫出來非常簡潔。如果我們把各關節速度匯集成一個列表 q̇,把手部的六分量速度(三個表示平移,三個表示旋轉)匯集成列表 v,那麼就有 v = J·q̇。雅可比矩陣 J 就是完成這個轉換的矩陣,而關鍵在於:它的數值取決於機器人當前的構型。把手臂彎成新的形狀,就會得到新的 J。

雅可比矩陣是一張局部地圖——以及它為何能驅動逆運動學

更深一層的想法是這樣的。正運動學是一個彎曲、複雜的函數:把某個關節轉動很多,手部就會沿弧線掃過,而不是走直線。但如果你聚焦在機器人當前的位姿上,只問那些微小的運動,那條彎曲的函數看起來就是平的——就像地球上一小塊地方看起來像一張平面地圖。雅可比矩陣正是那張平面地圖:在此時此地對正運動學最好的直線近似。數學家把這叫做線性化。

事實證明,這張局部地圖正是數值逆運動學的引擎。回想一下,逆運動學問的是相反的問題——要讓手部到達期望的位姿,各關節角度應該是多少?當不存在簡潔公式時,數值方法會先猜一個,測量手部偏離多遠,再微調關節以縮小誤差,如此反覆。要知道該往哪個方向微調,它就對雅可比矩陣求逆:如果 v = J·q̇ 告訴你關節運動會產生怎樣的手部運動,那麼 q̇ = J⁻¹·v 就反過來,告訴你要把手部推向期望方向所需的關節運動。

同樣這個被求逆的雅可比矩陣,也讓機器人能在空間中沿路徑運動。你指定每一刻希望手部具有的速度——描出這條線、以這個速率轉動——而 J⁻¹ 會不斷地把這個期望的手部速度翻譯成馬達必須發出的關節速度指令。這正是為什麼速度運動學處於日常運動控制的核心,而不只是抽象理論。

奇異點:地圖坍塌的地方

存在一些特殊的手臂構型,會讓這套優雅的機制失靈。這樣的構型被稱為運動學奇異點,它發生在兩個或更多關節軸線對齊、以致它們的運動部分重疊的時候。在這樣的位姿下,雅可比矩陣會「降秩」——意思是它的各行(直行)不再指向足夠多的獨立方向,無法張成手部運動的全部六個自由度。

在日常中的後果有兩方面。第一,某些手部運動會瞬間變得不可能:有那麼一個方向,無論你怎麼轉動關節都無法把末端執行器推過去,因為它們的任何組合都不會產生那個方向的運動。第二——也是實踐中更危險的——當你要求一個勉強可行的運動時,所需的關節速度會朝無窮大暴漲。手臂為了服從命令,會為了極小的手部移動而以猛烈的速度瘋狂甩動關節。

速度暴漲的原因在於那個逆。在奇異點附近,雅可比矩陣幾乎不可逆,而對一個幾乎奇異的矩陣求逆,會把微小的數放大成巨大的數——就像除以一個接近零的數會得到極大的結果一樣。於是一個平緩、緩慢的手部運動,會被翻譯成可能超出馬達極限、觸發安全停機,或把工具猛地甩離預定路徑的關節指令。

一幅經典圖景:一條完全伸直的手臂處在它任務空間的邊緣。要把手部再往外移是不可能的——它已經夠到極限了——可要讓它再往外挪一絲絲,肘部就得以荒謬的速率伸直。腕部奇異點,即兩個腕軸對齊之處,是另一種常見的禍首;它甚至在手臂只伸展到一半時、在工作空間舒適的中段就會發作。

保持安全:檢測、減速、阻尼

好的運動控制軟體不會等著被奇異點突然襲擊——它會留意奇異點的逼近。一個標準的度量,是雅可比矩陣「離降秩有多近」;一個常用的指標源自可操作性橢球,當手臂接近奇異位姿時它會趨向於零。監測這個數值,能在出問題之前給控制器一個預警。

  1. 盡早檢測。持續地從雅可比矩陣計算一個「接近奇異點」的評分,當它跌破閾值時發出警示。
  2. 減速。隨著評分下降,調低指令中的手部速度,使逆運算要求的關節速度保持在馬達極限之內。
  3. 對逆運算加阻尼。不要用原始的 J⁻¹,而用一個帶阻尼(正則化)的逆,溫和地限制放大效應,用少許路徑精度換取穩定、有界的關節指令。
  4. 繞開規劃。在可能的情況下,規劃路徑,使其從一開始就不會穿過或擦過已知的奇異位姿。

帶阻尼的逆值得細看,因為它是最常用的解決辦法。其思路是加入一個小的緩衝項,表達「偏好適中的關節速度」。遠離奇異點時這個緩衝微不足道,運動很精確;正處奇異點時,它讓指令中的關節速度保持有限,手臂表現良好。你暫時放棄完美的跟蹤,換來的是永遠不會要求馬達去做不可能的事。