天天看點

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

本節書摘來華章計算機《仿人機器人原理與實戰》一書中的第3章 ,第3.2節,作者布萊恩·伯傑倫(bryan bergeron) 托馬斯b. 塔爾博特(thomas b. talbot) 王偉 魏洪興 劉斐 譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

如果仔細研究過中央處理器(cpu),就會對那些熱導管和水冷卻系統非常熟悉,它們是用來防止元器件過熱的。水和其他液體多年來一直用于冷卻大型計算機和其他發熱電子器件。水的比熱容大于空氣,這意味着你沒必要用一打松鼠籠大小的吹風機去冷卻發熱的cpu,而隻需要一套非常緊湊的流體系統就足夠了。

假設我們跟同類相處會感覺更加舒服,那麼擁有暖皮膚和接近靜音操作的服務機器人将會比冷冰冰且噪音很大的服務機器人受歡迎得多。是以,除非在電子元器件效率方面取得重大基礎研究突破,否則你的仿人機器人一定會産生過量的熱量。假設仿人機器人擁有類似于人的外形,你就需要找到将熱量從内部轉移到外部的方法,比如模拟人體熱量傳送機制。

當然,如果你的目标就是簡單地讓仿人機器人身體發熱,那麼最簡單的解決方案是在皮膚或者外骨骼下面嵌入電加熱毯,具體請看本章後面的附加項目。你需要了解接下來我們要讨論的内容,除此以外,你還将在第4章中再次閱讀有關流體的内容,并可應用本章中學到的經驗。

如圖3-2所示,仿人機器人、人類或者其他具有核心體溫的任意事物的簡化熱力學模型都是由電容、充電器和幾個電阻組成。分析該模型時,我們可以把溫度視為電壓。依此類推,電容兩端的電壓代表身體的核心體溫,電容值的大小表示身體中熱量的多少。

《仿人機器人原理與實戰》一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-3所示。

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

首先我們通過簡單的開關負回報環來控制水泵的流速,水泵将水從儲槽(内部)中抽到輻射器(四肢)中,在那裡熱量可以輻射到環境中。我們利用下面的僞代碼來定義泵的開關控制:

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

其中,temperature是儲槽中流體的目前溫度,setpoint是流體的期望溫度。注意我們已經定義了一個典型的負回報環,控制對象是溫度,通過控制機制可調節的變量是泵的流速。

從直覺上我們就可以發現,開關控制算法不能為達到目标溫度提供平滑的控制。另一種可選用的方式是改變泵的流速,用僞代碼描述帶泵流速控制的負回報環如下:

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

還有一件事情,就是要描述變量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 動态平衡與仿人機器人設計

可以取代簡單開關泵控制方法的是pid控制器,它可能比之前介紹的簡單控制方法更接近設定的溫度值,當然不是100%。pid的三個分量可以有不同的組合形式,以強調不同的分量。例如,比例(p)控制器對某個應用來說就足夠了,而在另外一個控制器上則需要比例-積分(pi)控制器。

p控制

下面逐個讨論pid控制器中的分量,最基本的p控制器的方程如下:

tempt = tempt–1 + (setpoint +spc – tempt–1–dt) × pc

其中,temp表示溫度,pc表示比例常數,spc是設定值的修正項。如果沒有spc,setpoint的值将永遠都不會達到。可以把spc了解為一個修正因子,用來補償隻有實際溫度和目标溫度內插補點的一部分(而不是全部),用于計算目前溫度這一實際情況。

如圖3-5所示,如果采用了恰當的比例常數和設定值修正項,那麼跟簡單的開關控制相比,比例控制經過最初的不穩定期後,能夠提供更加平滑的溫度控制。調節p控制器的工作由調節pc的值和觀察結果的穩定性組成。

上述典型的p控制器響應說明該控制方法存在局限性,即初始響應可能會引起設定的溫度值大幅超調。在這個例子中,還有一個風險就是直到溫度低于設定值6度後比例控制才會再次起作用。注意時間軸是任意的,取決于外界條件和控制器常數。

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

比例控制的特征是在設定值、設定值修正、死區和比例常數值等因素的某些聯合作用下會引起不穩定性。在特殊情況下,如果比例常數值增加,溫度會出現振蕩趨勢。

pi控制

針對單純p控制的不穩定性,pi控制增加了積分項,即期望值和實際值對時間的積分。pi控制方程的基本形式如下:

tempt = tempt–1 + (setpoint – tempt–1–dt) ×pc

其中,integral表示setpoint與目前溫度內插補點的積分和;ic為積分常數,決定了積分項對目前溫度的貢獻量。注意,在這個方程中,沒有spc這一設定值修正項了。

比較圖3-6中pi控制和圖3-5中的p控制的響應曲線。即使利用微軟excel來生成這兩幅圖,采用相同的設定值、設定修正項、死區和比例常數,我們也會發現pi控制引起的超調更小,且能夠更快穩定。雖然圖3-6中10分鐘的時間軸是大概值,但是與本章中其他溫度曲線的時間軸是可比的。

因為積分項反映了實際溫度與期望溫度随時間的內插補點,是以在外界溫度相對固定的情況下,pi控制最有用。相反,當環境條件持續變化時,增加積分項的用處就不大了。調節pi控制器的工作包括确定比例常數pc和積分常數ic的最優值,通常比調節p控制器更具有挑戰性。

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

pid控制

與純p控制器類似,pi控制器也會在某些變量疊加時引起不穩定。為了解決不穩定性,可以用微分項(等同于電源中的平滑電容),來抑制變化率。完整的pid控制方程定義為:

tempt = tempt–1 + (setpoint + tempt–1–dt) × pc + integralt–1

其中,dc是微分常數,決定了系統對二階溫度變化的敏感程度。與比例和積分項不同,微分項可以從之前的溫度值中獲得。如圖3-7所示,變化率逐漸消失。同時可以看出,與之前的控制器不同,相應曲線沒有明顯的超調。

之前的四幅圖檔盡管典型,但都是理想化的,常數都選為适合值,以說明最佳響應曲線。也就是說,控制器是調試過的。調節pid控制器的工作包括确定三個常數(比例常數pc、積分常數ic和微分常數dc)的最優值,對一個複雜系統來說,調試工作量可能非常大。幸運的是,我們的系統相對簡單。

盡管pid控制器似乎優于其他簡單的控制器,但是使用pid控制器并不能保證快速達到設定值且不會有超調。如果想要獲得圖3-7所示的曲線,你必須要在調節常數項時足夠機靈。另外一個要求就是處于控制之下的系統必須具有重複性,否則常數項必須反複重新定義。采用相同初始條件有利于確定重複性,比如采用相同的儲槽溫度、儲槽容積、外界溫度、濕度、儲槽和線圈周圍的氣流等。

《仿人機器人原理與實戰》一3.2 動态平衡與仿人機器人設計

除了這些基本方程,pid控制器還有更多變化和增強版本,也有專門為運動控制設計的複雜的pid控制算法。雖然了解前面所說的pid分量的優點和局限性是很關鍵的,但是我們可以避開具體細節的實施而直接采用arduino标準的pid庫。

繼續閱讀