1. 程式人生 > >Robotics(1):阻抗控制和導納控制淺析

Robotics(1):阻抗控制和導納控制淺析

===================================
0. 前言
===================================
我儘可能把事情說的通俗一些,所以內容並不會非常嚴謹。而且這個領域的術語很亂,Impedance control, stiffness control, admittance control, compliance control等等詞彙在不同作者手中都有好多不同的意思。所以我只能保證用詞儘可能自洽,閱讀時請勿硬套名詞。

討論實現方法以前一定要先搞清楚動機和目的。因為實踐中經常要做出各種妥協和Hack,如果目的不明確,很容易幹出削足適履、南轅北轍的事情來。下面我先討論動機,然後抽象出一個控制目標,最後再說實現方式。
===================================


1. 完美定位是不夠的
===================================
機器人最傳統、最常用的控制方式就是位置控制了。這裡無需討論任何實現細節,只需設想一個完美的位置控制機器人:它能夠以0誤差來到達指定的位置,或以0誤差跟隨指定的軌跡。
這樣的機器人看起來叼炸天,然而考慮一個簡單的任務——開門

假設這個門是一個理想門:門板圍著固定軸轉動,門板末端的軌跡是一個完美的圓弧。門板重量為0,摩擦力為0,彈性為0。機器人緊緊地抓住門板的末端。


很明顯,由於門板沒有重量也沒有摩擦,機器人甚至無需對門施加任何力,只要沿著圖中的圓弧運動,就可以把門開啟。當一個完美的機器人,遇到一個完美的門,so simple! what could possibly go wrong?

然而,實踐中機器人和門的相對位置幾乎不可能極為精確的確定,如下圖所示。機器人的實際路線與理想的圓弧會有微小的誤差。


但是門的末端不可能偏離圓弧運動,而機器人末端又緊緊的抓住了門。。。於是,要麼門被拽掉,要麼機器臂被扯斷。不給力啊老師!

===================================
2.柔性是環境互動的好朋友
===================================
前述完美機器人解決不了的事情,一根破彈簧就能搞定。。。如下圖,讓機器人通過一個彈簧和門相連。可以想象,機器人開門時,誤差只會導致彈簧伸長,不會把門扯掉了。當然還需要一點摩擦力來避免彈簧無限振盪。)


再舉一例,讓前述完美定位機器人用無限硬的刀在無限硬的桌子上切薄紙
也很難:因為一點點誤差就會導致要麼切不到紙,要麼把刀弄折,要麼把桌子切壞。但是用厚海綿擦桌子就很容易:誤差只會導致海綿變形一點而已。從這些例子中可以看出,當機器人和外物有直接接觸時,一定的柔性是你的好朋友。It’s all about interaction.

*注意下面的方法不是顯式力控制(Explicit Force Control). 顯式力控制是另外好大一灘事,另說吧。
===================================
3.系統控制目標
===================================

但是機器人不能總是有彈簧相助,而且彈簧的剛度(stiffness)不能按需調節,也很難做到各向異性(在不同方向上有不同的剛度)。所以希望能用控制演算法讓機器臂表現出想要的柔性。也就是下圖中虛線框中的系統,實際上是由控制演算法實現的。

最簡單的有彈性、而且不會永久震盪的系統就是Mass-Spring-Damper了。所以不妨把目標定為:讓機器人表現出和下面這樣二階系統相同的性質。

===================================
4.實現目標的不同路線
===================================
用公式描述一下這個系統的表現:
M\ddot{x} + b\dot{x} + kx = F + F_{ext}

注意,這個公式有兩種解讀方式
F =  M\ddot{x} + b\dot{x} + kx - F_{ext}
M\ddot{x} = F + F_{ext} - b\dot{x} - kx
其實這就是胡克定律F = kx的兩種解讀:既可以說彈簧是因為形變而產生力,也可以說彈簧是因為產生力(注意這裡不是外力,是彈簧自己產生的力)而形變。後一種解讀可能直觀上感覺有點奇怪,但數學上兩種說法沒有對錯之分。畢竟胡克定律只是確定了F和x間的線性關係,並沒有因果上的意義。

兩種解讀方式,分別對應兩種實現方法:
1. 測量當前位置和目標位置的差,調整末端產生的力(一般通過調整各關節力矩實現)。這種通常稱為impedance control或stiffness control.
2. 測量末端受到的力,調整末端的速度。這種常稱為admittance control.

(下面一段燒腦預警)
在第一種方法中,可以認為機器人本身是一個Admittance(輸入是力矩,輸出是運動),而控制器是一個Impedance(輸入是位置,輸出是力矩)。在第二種方法中,機器人本身是Impedance (輸入是速度,輸出是對外的力),而控制器是Admittance(輸入是外力,輸出是運動)。其實這是必然的,因為admittance和impedance需要相間出現。

兩種方法各有利弊。
第一種方法與環境接觸時穩定性好,但是無接觸時對位置實際上是開環的,因此對於建模的要求比較高。如果建模誤差大,則位置的精度會受影響。
第二種方法無接觸時位置精度比較高,但是當機器人本身剛性很大又與剛性環境接觸時,系統容易不穩定。

===================================
5.其他選擇
===================================
此外,上面提到的Mass–Spring-Damper系統中有M, b, k三個引數。一般而言,k對任務的影響很大,因此絕大多數柔順控制的演算法都可以調節k,而且一般可為不同的方向設定不同的k值。而M則不同:對於輕型機器臂來說,M在奇異點以外的地方一般不會太大,而且對大部分任務來說也並不本質。因此大部分實現中M是不能調節的(without inertia shaping)。

上面提到的都是在笛卡爾空間中的柔順控制,當然柔順控制也可以定義在關節空間。

一些機器人每個關節上都裝備有力矩感測器(如iiwa),或使用電流來估計電機上帶的力矩。在這些情況下,可以直接實現關節空間的柔順控制。而且外力可以直接作用在機器臂上,而不僅僅限制在末端上。這在拖動示教時很方便,特別是對於7軸冗餘機器人(否則肘部不容易控制)。

因為上述方法不屬於Explicit Force Control,所以並不能直接調整對外界環境施加的力。例如在前述刀切紙的例子裡,如果用Impedance control而且希望精確控制刀對紙面施加的力,那麼需要在impedance control外面再套一層環,通過調節平衡點(可以理解為彈簧的0力點)的位置來控制力的大小。
===================================
6. 總結
===================================
總之,柔順控制根據測量量、反饋量、可調節引數、定義空間等等不同,有很多很多的實現方式。具體選用哪個要根據需求和硬體調節決定。但萬變不離其宗,柔順控制就是讓機器人能夠跟環境和人更平順的互動。

Ott, Christian, Ranjan Mukherjee, and Yoshihiko Nakamura. “Unified impedance and admittance control.” Robotics and Automation (ICRA), 2010 IEEE International Conference on. IEEE, 2010.