當前位置: 華文星空 > 知識

阻抗控制分析雜談

2021-03-09知識

考慮一個二階系統 ma+cv+kx = \tau 。進行反饋控制 \tau_{input} = k_x x ,得到 ma+cv+kx = k_x x ,即 ma+cv+kx = (k_x-k) x ,記為 ma+cv = k_{sys} (x-0)

參考

可知,若 k_{sys} 小於0,則該式右側定義了一個剛度為 k_{sys} ,原點為0的彈簧,右側表達了動態響應,穩態情況下應當趨於零。因此,在該式的控制下,系統終將到達0,如下圖所示(本文所有的彈簧的原始長度均為0)

假設此時出現了一個物體,如下圖所示

在小球趨近0的時候,會碰在物體上,假設物體的剛度為k,得到彈力為 \tau = k_{env}*(x-x_{env}) ,同樣的,根據上面參考的文章,該式定義了一個剛度為 k_{env} ,原點為 x_{env} 的彈簧,如下圖所示

則小球最終將在兩個原點之間平衡,具體位置取決於兩個彈簧的剛度。

繼續考慮二階系統 ma+cv+kx = \tau ,將該式中的tau分解為輸入力和環境外力,得到 ma+cv+kx = \tau_{input} + \tau_{env} ,根據上述描述可以知道,由於有 \tau_{env} 的存在,x無法到達0。為了達到零,有三種方法:

  1. 增大 k_x ,使得上述兩個彈簧的平衡點接近於0。
  2. 輸入力計算中添加積分環節,對x進行積分,如果x不最終達到0,則輸入力會一直增大,不斷將物體向0拉近,最終平衡位置只能在0,否則輸入力會一直增大,不可能穩定
  3. 對環境力進行補償,輸入力矩設定為 \tau_{input} = k_x x- \tau_{env} ,這樣的話系統的整體表達為 ma+cv+kx = k_x x ,最終趨於0。

三種方式各有優劣,這裏暫時不一一列舉。但是需要知道的是,機器人一般都需要有精準的定位能力,因此機器人控制的目標一定是使物體到達0(或者其他設定的目標)

以上三種方法的一個直接結果就是,系統的輸入力矩會非常大,至少要和環境力矩平衡。可以考慮我們給機器人發送指令,要求機器人到達0,但是在機器人和0之間有一堵墻,機器人撞到墻上的情況,機器人無法提供如此大的力矩,損壞或報錯,而且無法到達0.

既然機器人無法到達0,那麽我們就需要對機器人采用不同的控制方式。這裏為了方便描述,我們采用上述的對環境力進行補償的方法來說明問題。

在這種控制方式下,輸入力矩設定為 \tau_{input} = k_x x- \tau_{env} ,外力被完全補償,系統的整體表達為 ma+cv+kx = k_x x 。為了考慮環境外力,我們就需要主動「添加」環境力進來,使得系統整體描述為 ma+cv+kx = k_x x + k_f \tau_{env} , 這樣的話系統的輸入力矩就變為了 \tau_{input} = k_x x + k_f \tau_{env}- \tau_{env} .這種情況下,仍考慮 \tau_{env} = k_{env}*(x-x_{env}) ,得到

ma+cv+kx = k_x x +k_f k_{env}*(x-x_{env}) = k_{sys}x+k_f k_{env}*(x-x_{env}) ,

又回到上面的情況,只是環境剛度得到了修改。

以上便得到了阻抗控制的表達: \tau_{input} = k_x x + k_f \tau_{env}- \tau_{env} 。這是最簡單的表達,亦即剛度控制的表達,可以在該公式中添加其他計畫(如v和a),進行更加豐富的控制,但是總的意義是一致的。

以上討論中,我們預設假設了Ksys,Kenv,Kf*Kenv為負,因此表達為一個彈簧(重力中心)。

當Ksys<0,Kf*Kenv<0時,二者都表現為重力彈簧,系統最終穩定在0和Xenv之間。另一種情況是Ksys>0,Kf*Kenv>0,二者均表現為斥力中心,此時系統仍有可能平衡在0和Xenv之間,但是一旦系統位置位於0和Xenv之外,則所受到的合力將使系統向無限遠移動,而不是二者之間的平衡位置。

當Ksys>0,Kf*Kenv<0時,0處表現為一個斥力中心,Xenv處表現為一個重力中心,則系統最終位於Xenv外,在某些情況下,由於斥力會一直大於重力,則系統趨近於無窮遠。

同樣的,當Ksys<0,Kf*Kenv>0時,則系統最終位於0外,在某些情況下,由於斥力會一直大於重力,則系統趨近於無窮遠。。

取一個理想加速度控制系統,其m=1,c=0,k=0。阻抗控制描述同上描述為 \tau_{input} = k_x x + k_f \tau_{env}- \tau_{env} 。為了讓系統保持穩定,則必須做到Kx<0,Kf>0。

事實上,穩定位置滿足 k_{sys}*x + k_f k_{env}(x-x_{env}) = 0 ,得到 x_{bal} = \frac{k_fk_{env}}{k_{sys}+k_fk_{env}}x_{env} 這裏取 x_{env} = 1 ,橫軸表示Ksys,縱軸表示Kf*Kenv,得到平衡位置如圖所示

取一個理想加速度控制系統,其m=1,c=0,k=-1。環境剛度位k=-1000,如上繪圖,得到

由於Kenv比較大,所以平衡位置基本都是在1左右。當y在0附近時,可能導致Ksys=Kf*Kenv,會引起系統響應的較大變化。

在樓上的試驗台中,為什麽會出現推機器人,但是機器人卻向手沖過來的情況呢?最重要的原因是定義力的方向和定義位置的方向相反!