825
技術社區[雲棲]
《仿人機器人原理與實戰》一3.2 動態平衡與仿人機器人設計
本節書摘來異步社區《仿人機器人原理與實戰》一書中的第3章 ,第3.2節,作者布萊恩·伯傑倫(Bryan Bergeron) 托馬斯B. 塔爾博特(Thomas B. Talbot) 王偉 魏洪興 劉斐 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。
3.2 動態平衡與仿人機器人設計
如果仔細研究過中央處理器(CPU),就會對那些熱導管和水冷卻係統非常熟悉,它們是用來防止元器件過熱的。水和其他液體多年來一直用於冷卻大型計算機和其他發熱電子器件。水的比熱容大於空氣,這意味著你沒必要用一打鬆鼠籠大小的吹風機去冷卻發熱的CPU,而隻需要一套非常緊湊的流體係統就足夠了。
假設我們跟同類相處會感覺更加舒服,那麼擁有暖皮膚和接近靜音操作的服務機器人將會比冷冰冰且噪音很大的服務機器人受歡迎得多。所以,除非在電子元器件效率方麵取得重大基礎研究突破,否則你的仿人機器人一定會產生過量的熱量。假設仿人機器人擁有類似於人的外形,你就需要找到將熱量從內部轉移到外部的方法,比如模擬人體熱量傳送機製。
當然,如果你的目標就是簡單地讓仿人機器人身體發熱,那麼最簡單的解決方案是在皮膚或者外骨骼下麵嵌入電加熱毯,具體請看本章後麵的附加項目。你需要理解接下來我們要討論的內容,除此以外,你還將在第4章中再次閱讀有關流體的內容,並可應用本章中學到的經驗。
3.2.1 熱力學模型
如圖3-2所示,仿人機器人、人類或者其他具有核心體溫的任意事物的簡化熱力學模型都是由電容、充電器和幾個電阻組成。分析該模型時,我們可以把溫度視為電壓。依此類推,電容兩端的電壓代表身體的核心體溫,電容值的大小表示身體中熱量的多少。
電容C通過發光二極管(LED)D2放電,將能量以熱和光的形式輻射出去。電阻R代表從中心到四肢的熱阻力。R越大,例如絕熱狀態,通過LED輻射出去的熱量就越少。由於R上的壓降,即從內部到四肢的溫度梯度,D2上的電壓小於電容C兩端的電壓,與四肢的溫度較低類似。對於人類,這種從內部到四肢的溫度梯度值大概是4攝氏度。對於仿人機器人,這個梯度值取決於其構造和熱交換係統的設計。
可調電阻P2是一種表示動態調節電容C向四肢放電率的方式,同時電位計P1允許調節充電率。電源G、二極管D1和電位計P1構成了充電回路,表示身體的新陳代謝。
在平衡位置,從電源G獲得的充電電流等於通過LED燈D2放電的電流。如果因為D2短路(類似於跳進冰水中)、負載突然增加或電源G失效(比如沒吃早飯),那麼通過增大P2,C的放電過程就會限製在最小值(血液從皮膚向器官回流)。相反,如果C過度充電,那麼通過減小P2值,大量能量會送到D2並輻射出去。挑戰在於確定增大或減小P2的時間點和時間長度,這就是為什麼需要控製係統技術。
3.2.2 簡單的負反饋控製
為了更好地掌握控製係統,假設我們有一個具備動態平衡係統的仿人機器人,該係統由一槽液體、把熱量從液體中帶走的熱交換器、把液體從儲槽中抽到輻射器或者熱交換器中再流回儲槽的泵、控製器和溫度探頭等組成,如圖3-3所示。
首先我們通過簡單的開關負反饋環來控製水泵的流速,水泵將水從儲槽(內部)中抽到輻射器(四肢)中,在那裏熱量可以輻射到環境中。我們利用下麵的偽代碼來定義泵的開關控製:
其中,Temperature是儲槽中流體的當前溫度,Setpoint是流體的期望溫度。注意我們已經定義了一個典型的負反饋環,控製對象是溫度,通過控製機製可調節的變量是泵的流速。
從直觀上我們就可以發現,開關控製算法不能為達到目標溫度提供平滑的控製。另一種可選用的方式是改變泵的流速,用偽代碼描述帶泵流速控製的負反饋環如下:
還有一件事情,就是要描述變量Temperature與變量Setpoint之間的差值。這兩者字麵上的差值可用來直接確定泵的流速。另外一種可選方式是,將泵的流速設定為最大流速的百分比。或者將兩者的差值映射為一個非線性函數,當變量Temperature與變量Setpoint之間的差值較大時,其函數值較大,反之函數值較小。
為了進一步掌握負反饋,我們將把開關控製的偽代碼轉化為一個包括真實變量的更規範的方程:
Tempt = Tempt–1 + (Tempt–1–DT < SetPoint)×Inc – R
在這個方程中,DT表示死區,即泵和水響應打開信號所需要的時間。死區考慮了流體的慣性和電子器件的微小延時。溫度增量Inc用來描述由於泵的作用引起的溫度增加的變化量,它是泵的設計值和設定參數的函數。阻值R是一個總項,包括從儲槽到管線和泵的流體的反向流動,還包括泵與輻射器的低效。
注意方程式中第二項是一個邏輯判斷值,要麼是真值(1),要麼是假值(0)。如果邏輯判斷為假,則新的溫度值就是之前的溫度值減去係統阻力的影響。
正如之前所說,簡單的開關控製係統可能導致的問題是設定值出現超調,如圖3-4的曲線所示。從熱水的起始溫度位置,當溫度超過100華氏度時,控製器打開泵。然而,直到水溫冷卻到83華氏度,泵還沒有關閉。從實用的角度來說,如果回路安裝在仿人機器人身上,那麼這種超調是可以接受的,但是,當更好的控製方法近在咫尺的時候,為什麼要滿足於這種落後的控製方法呢?
圖3-4的曲線所描述的內容是,在圖3-2所示的熱力學模型中,熱量可以流進或者流出儲槽。如果達到某個初始溫度後不再加熱,那麼泵停止工作以後,核心體溫會緩慢降低,降低程度與儲槽的絕熱性能有關。當熱量持續進入係統時,控製反應的性質便顯現出來。10分鍾的時間是任意選取的,這取決於係統的性質,時間軸允許我們對各種控製方法進行快速比較。
3.2.3 比例–積分–微分(PID)控製
可以取代簡單開關泵控製方法的是PID控製器,它可能比之前介紹的簡單控製方法更接近設定的溫度值,當然不是100%。PID的三個分量可以有不同的組合形式,以強調不同的分量。例如,比例(P)控製器對某個應用來說就足夠了,而在另外一個控製器上則需要比例-積分(PI)控製器。
1. P控製
下麵逐個討論PID控製器中的分量,最基本的P控製器的方程如下:
Tempt = tempt–1 + (SetPoint +SPC – Tempt–1–DT) × PC
其中,Temp表示溫度,PC表示比例常數,SPC是設定值的修正項。如果沒有SPC,SetPoint的值將永遠都不會達到。可以把SPC理解為一個修正因子,用來補償隻有實際溫度和目標溫度差值的一部分(而不是全部),用於計算當前溫度這一實際情況。
如圖3-5所示,如果采用了恰當的比例常數和設定值修正項,那麼跟簡單的開關控製相比,比例控製經過最初的不穩定期後,能夠提供更加平滑的溫度控製。調節P控製器的工作由調節PC的值和觀察結果的穩定性組成。
上述典型的P控製器響應說明該控製方法存在局限性,即初始響應可能會引起設定的溫度值大幅超調。在這個例子中,還有一個風險就是直到溫度低於設定值6度後比例控製才會再次起作用。注意時間軸是任意的,取決於外界條件和控製器常數。
比例控製的特征是在設定值、設定值修正、死區和比例常數值等因素的某些聯合作用下會引起不穩定性。在特殊情況下,如果比例常數值增加,溫度會出現振蕩趨勢。
2. PI控製
針對單純P控製的不穩定性,PI控製增加了積分項,即期望值和實際值對時間的積分。PI控製方程的基本形式如下:
Tempt = Tempt–1 + (SetPoint – Tempt–1–DT) ×PC
+ Integralt–1 + (Tempt – Integralt–1)×IC
其中,Integral表示SetPoint與當前溫度差值的積分和;IC為積分常數,決定了積分項對當前溫度的貢獻量。注意,在這個方程中,沒有SPC這一設定值修正項了。
比較圖3-6中PI控製和圖3-5中的P控製的響應曲線。即使利用微軟Excel來生成這兩幅圖,采用相同的設定值、設定修正項、死區和比例常數,我們也會發現PI控製引起的超調更小,且能夠更快穩定。雖然圖3-6中10分鍾的時間軸是大概值,但是與本章中其他溫度曲線的時間軸是可比的。
因為積分項反映了實際溫度與期望溫度隨時間的差值,所以在外界溫度相對固定的情況下,PI控製最有用。相反,當環境條件持續變化時,增加積分項的用處就不大了。調節PI控製器的工作包括確定比例常數PC和積分常數IC的最優值,通常比調節P控製器更具有挑戰性。
3. PID控製
與純P控製器類似,PI控製器也會在某些變量疊加時引起不穩定。為了解決不穩定性,可以用微分項(等同於電源中的平滑電容),來抑製變化率。完整的PID控製方程定義為:
Tempt = Tempt–1 + (SetPoint + Tempt–1–DT) × PC + Integralt–1
+ (Tempt – Integralt–1)× IC – (Tempt–1 –Tempt) ×DC
其中,DC是微分常數,決定了係統對二階溫度變化的敏感程度。與比例和積分項不同,微分項可以從之前的溫度值中獲得。如圖3-7所示,變化率逐漸消失。同時可以看出,與之前的控製器不同,相應曲線沒有明顯的超調。
之前的四幅圖片盡管典型,但都是理想化的,常數都選為適合值,以說明最佳響應曲線。也就是說,控製器是調試過的。調節PID控製器的工作包括確定三個常數(比例常數PC、積分常數IC和微分常數DC)的最優值,對一個複雜係統來說,調試工作量可能非常大。幸運的是,我們的係統相對簡單。
盡管PID控製器似乎優於其他簡單的控製器,但是使用PID控製器並不能保證快速達到設定值且不會有超調。如果想要獲得圖3-7所示的曲線,你必須要在調節常數項時足夠機靈。另外一個要求就是處於控製之下的係統必須具有重複性,否則常數項必須反複重新定義。采用相同初始條件有利於確保重複性,比如采用相同的儲槽溫度、儲槽容積、外界溫度、濕度、儲槽和線圈周圍的氣流等。
除了這些基本方程,PID控製器還有更多變化和增強版本,也有專門為運動控製設計的複雜的PID控製算法。雖然理解前麵所說的PID分量的優點和局限性是很關鍵的,但是我們可以避開具體細節的實施而直接采用Arduino標準的PID庫。
最後更新:2017-06-21 11:01:50