我盡可能把事情說的通俗一些,所以內容并不會非常嚴謹。而且這個領域的術語很亂,Impedance control, stiffness control, admittance control, compliance control等等詞匯在不同作者手中都有好多不同的意思。所以我只能保證用詞盡可能自洽,閱讀時請勿硬套名詞。
討論實現(xiàn)方法以前一定要先搞清楚動機和目的。因為實踐中經常要做出各種妥協(xié)和Hack,如果目的不明確,很容易干出削足適履、南轅北轍的事情來。下面我先討論動機,然后抽象出一個控制目標,最后再說實現(xiàn)方式。
===================================
1. 完美定位是不夠的
===================================
機器人最傳統(tǒng)、最常用的控制方式就是位置控制了。這里無需討論任何實現(xiàn)細節(jié),只需設想一個完美的位置控制機器人:它能夠以0誤差來到達指定的位置,或以0誤差跟隨指定的軌跡。
這樣的機器人看起來叼炸天,然而考慮一個簡單的任務——開門。
假設這個門是一個理想門:門板圍著固定軸轉動,門板末端的軌跡是一個完美的圓弧。門板重量為0,摩擦力為0,彈性為0。機器人緊緊地抓住門板的末端。

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

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

但是門的末端不可能偏離圓弧運動,而機器人末端又緊緊的抓住了門。。。于是, 要么門被拽掉,要么機器臂被扯斷。不給力啊老師!
===================================
2.柔性是環(huán)境互動的好朋友
===================================
前述完美機器人解決不了的事情,一根破彈簧就能搞定。。。如下圖,讓機器人通過一個彈簧和門相連??梢韵胂?,機器人開門時,誤差只會導致彈簧伸長,不會把門扯掉了。當然還需要一點摩擦力來避免彈簧無限振蕩。)

再舉一例,讓前述完美定位機器人 用無限硬的刀在無限硬的桌子上切薄紙也很難:因為一點點誤差就會導致要么切不到紙,要么把刀弄折,要么把桌子切壞。但是用厚海綿擦桌子就很容易:誤差只會導致海綿變形一點而已。從這些例子中可以看出, 當機器人和外物有直接接觸時,一定的柔性是你的好朋友。It’s all about interaction.
*注意下面的方法不是顯式力控制(Explicit Force Control). 顯式力控制是另外好大一灘事,另說吧。
===================================
3.系統(tǒng)控制目標
===================================
但是機器人不能總是有彈簧相助,而且彈簧的剛度(stiffness)不能按需調節(jié),也很難做到各向異性(在不同方向上有不同的剛度)。所以希望能用控制算法讓機器臂表現(xiàn)出想要的柔性。也就是下圖中虛線框中的系統(tǒng),實際上是由控制算法實現(xiàn)的。

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

===================================
4.實現(xiàn)目標的不同路線
===================================
用公式描述一下這個系統(tǒng)的表現(xiàn):

注意,這個公式有兩種解讀方式:


其實這就是胡克定律F = kx的兩種解讀:既可以說彈簧是因為形變而產生力,也可以說彈簧是因為產生力(注意這里不是外力,是彈簧自己產生的力)而形變。后一種解讀可能直觀上感覺有點奇怪,但數(shù)學上兩種說法沒有對錯之分。畢竟胡克定律只是確定了F和x間的線性關系,并沒有因果上的意義。
兩種解讀方式,分別對應兩種實現(xiàn)方法:
1. 測量當前位置和目標位置的差,調整末端產生的力(一般通過調整各關節(jié)力矩實現(xiàn))。這種通常稱為impedance control或stiffness control.
2. 測量末端受到的力,調整末端的速度。這種常稱為admittance control.
(下面一段燒腦預警)
在第一種方法中,可以認為機器人本身是一個Admittance(輸入是力矩,輸出是運動),而控制器是一個Impedance(輸入是位置,輸出是力矩)。在第二種方法中,機器人本身是Impedance (輸入是速度,輸出是對外的力),而控制器是Admittance(輸入是外力,輸出是運動)。其實這是必然的,因為admittance和impedance需要相間出現(xiàn)。
兩種方法各有利弊。
第一種方法與環(huán)境接觸時穩(wěn)定性好,但是無接觸時對位置實際上是開環(huán)的,因此對于建模的要求比較高。如果建模誤差大,則位置的精度會受影響。
第二種方法無接觸時位置精度比較高,但是當機器人本身剛性很大又與剛性環(huán)境接觸時,系統(tǒng)容易不穩(wěn)定。

===================================
5.其他選擇
===================================
此外,上面提到的Mass–Spring-Damper系統(tǒng)中有M, b, k三個參數(shù)。一般而言,k對任務的影響很大,因此絕大多數(shù)柔順控制的算法都可以調節(jié)k,而且一般可為不同的方向設定不同的k值。而M則不同:對于輕型機器臂來說,M在奇異點以外的地方一般不會太大,而且對大部分任務來說也并不本質。因此大部分實現(xiàn)中M是不能調節(jié)的(without inertia shaping)。
上面提到的都是在笛卡爾空間中的柔順控制,當然柔順控制也可以定義在關節(jié)空間。
一些機器人每個關節(jié)上都裝備有力矩傳感器(如iiwa),或使用電流來估計電機上帶的力矩。在這些情況下,可以直接實現(xiàn)關節(jié)空間的柔順控制。而且外力可以直接作用在機器臂上,而不僅僅限制在末端上。這在拖動示教時很方便,特別是對于7軸冗余機器人(否則肘部不容易控制)。
因為上述方法不屬于Explicit Force Control,所以并不能直接調整對外界環(huán)境施加的力。例如在前述刀切紙的例子里,如果用Impedance control而且希望精確控制刀對紙面施加的力,那么需要在impedance control外面再套一層環(huán),通過調節(jié)平衡點(可以理解為彈簧的0力點)的位置來控制力的大小。
===================================
6. 總結
===================================
總之,柔順控制根據(jù)測量量、反饋量、可調節(jié)參數(shù)、定義空間等等不同,有很多很多的實現(xiàn)方式。具體選用哪個要根據(jù)需求和硬件調節(jié)決定。但萬變不離其宗,柔順控制就是讓機器人能夠跟環(huán)境和人更平順的交互。