關(guān)于自動化/控制本科學習的思考
本文內(nèi)容:
0 為什么寫這個主題
1 自動化是學什么的
1.1 控制問題
1.2 從課程設(shè)置展開
1.3從機器人學展開
2 理論與實踐的統(tǒng)一
2.1 主觀思考
2.2 實踐過程對理論學習的促進
3 理論基礎(chǔ)與仿真分析
3.1 運動預(yù)測的例子
3.2 串級控制的例子
4 總結(jié)
0 為什么寫這個主題
在大一第一個學期我就有了些關(guān)于理論學習與課外實踐的統(tǒng)一性的思考,由于對自己的思考和結(jié)論并不自信,就只跟身邊幾個比較要好的同學交流過。這段時間看了李崇老師的關(guān)于自動化/控制的學習經(jīng)歷和經(jīng)驗分享,和東北大學action實驗室發(fā)布在B站的控制組交流會,很有共鳴,再加上馬上開學大二了,也算給自己不完整的大一做一個總結(jié),故打算寫一寫自己對自動化專業(yè)的認識,還有關(guān)于理論與實踐統(tǒng)一性的思考,以及理論與仿真在我的實踐中的運用與我的思考。
1 自動化是學什么的
我認為認識自動化專業(yè)要從本科的課程設(shè)置入手。以我的學校哈爾濱工程大學的自動化學院為例,我們學院有五個本科專業(yè),在招生中為自動化類大類招生,包括自動化、探測制導、測控、電氣自動化、機器人五個本科專業(yè)。從培養(yǎng)方案來看,專業(yè)課程設(shè)置可大致總結(jié)為:工學基礎(chǔ)&控制理論+專業(yè)內(nèi)容。主要區(qū)別就在不同專業(yè)有不同的專業(yè)內(nèi)容:自動化是運動控制與過程控制,測控是導航……
1.1 控制問題
在認識自動化專業(yè)之前,先舉一個控制問題的例子:空調(diào)。
我們用遙控器設(shè)置一個溫度,是希望空調(diào)可以吹出合適溫度的風來將室內(nèi)的溫度控制在我們設(shè)置的溫度附近??刂剖覂?nèi)溫度保持在一定范圍就是控制目標。
在這個控制問題中,室內(nèi)空氣就構(gòu)成了一個系統(tǒng)(被控對象)。系統(tǒng)包含輸入和輸出,這里我們可以假設(shè)空調(diào)交換機的運行功率為輸入,室內(nèi)的溫度為輸出。
在設(shè)計空調(diào)的控制工程師眼中,問題是這樣的:通過溫度傳感器測量室內(nèi)實際溫度,但傳感器的測量值不一定準確,可能需要濾波來消除掉無用信號(噪聲)并保留下有用信號(室內(nèi)溫度),這就是感知的過程。
得到了室內(nèi)溫度以后,我們還要結(jié)合目標溫度來計算出合適的交換機功率,來控制溫度的變化,而從實際溫度和目標溫度到交換機功率的這個過程,就需要由設(shè)計的控制器來計算。
交換機的工作就會引起室內(nèi)溫度的變換,室內(nèi)溫度的變化會反過來作用到我們感知得到的室內(nèi)溫度,進而影響控制器的輸出(新的交換機功率)。經(jīng)過這樣不斷往復的過程,我們就可以將室內(nèi)溫度控制在我們想要的范圍內(nèi):
1.2 從課程設(shè)置展開
在上面說過,自動化學院的課程設(shè)置主要包括工學基礎(chǔ)、控制理論與專業(yè)內(nèi)容,這里主要講工學基礎(chǔ)和控制理論是干什么的。
工學基礎(chǔ)中的力學和電學以及計算機程序設(shè)計等等則是給我們提供認識系統(tǒng)和改造系統(tǒng)的方法。而本科階段最重要的課程是控制理論,包括自動(經(jīng)典)控制理論與現(xiàn)代控制理論,給我們提供分析系統(tǒng)和設(shè)計控制率的理論依據(jù)與方法。通俗來講就是,我們通過力學與電學的知識可以對一個系統(tǒng)有一個初步認識或者進行定性甚至定量的建模,本科階段一般是根據(jù)物理定律建立系統(tǒng)的微分方程。
而控制理論建立在微分方程的基礎(chǔ)上,提供了分析系統(tǒng)的手段,經(jīng)典/現(xiàn)代控制理論分別通過傳遞函數(shù)與狀態(tài)空間的方式來分析系統(tǒng)、得到系統(tǒng)的特性,根據(jù)系統(tǒng)的特性和具體控制要求,我們可以通過控制理論得到能滿足我們控制要求的控制算法或者控制率。
這樣一來,我們就從理論層面解決了這個控制問題,但這還沒完,我們還需要具備實現(xiàn)控制算法的能力。通常情況下,我們利用編程的手段,通過計算機系統(tǒng),包括單片機和plc等等數(shù)字計算平臺來實現(xiàn)我們的控制算法,最后經(jīng)過實機調(diào)試來完成對系統(tǒng)的控制。
上述過程聽起來會有些晦澀,想深入了解這個過程可以從這個網(wǎng)站學習:lwznjy.com?
1.3 從機器人學展開
除了從課程設(shè)置的角度展開,我們也可以從機器人學展開來認識自動化專業(yè),因為機器人行業(yè)的各個環(huán)節(jié)都能見到自動化人的身影。
機器人可粗略分為感知、決策、控制三方面。
以自動駕駛為例,感知是最上游的環(huán)節(jié),包括通過高精地圖與IMU融合獲取位置、速度等信息,通過激光雷達與攝像頭融合識別周圍環(huán)境中的車輛行人等障礙物等。有了感知得到的環(huán)境信息后,決策部分將決定車輛以怎樣的行為應(yīng)對當前環(huán)境,是出現(xiàn)突發(fā)情況需要急剎車,還是路況良好可以提速,還是前方車道修路需要變道。當決策環(huán)節(jié)給出實際決策結(jié)果后,就由控制部分來控制電機轉(zhuǎn)速、方向盤轉(zhuǎn)角等來實現(xiàn)決策給出的任務(wù)。
對于感知、決策和控制三方面,自動化專業(yè)或者控制科學與工程學科都有對應(yīng)的課程與學科,具體細節(jié)不再展開。
2 理論與實踐的統(tǒng)一
這里的理論指的是在學校課內(nèi)學到的理論知識,實踐指的是在學校課程以外動手做一些課外作品,可以是在實驗室中跟大家一起做比賽,也可以是自己做平衡車、無人機這樣可以應(yīng)用各種算法的作品。
發(fā)展基礎(chǔ)科學、工程學科的重要目的都是提高或創(chuàng)造生產(chǎn)力,只有生產(chǎn)力的擴大才能把蛋糕越做越大。對于每一個個體來說,將自己所學最終轉(zhuǎn)換成生產(chǎn)力才是實現(xiàn)價值的重要途徑。研究更好的控制算法(科研)、將學到的內(nèi)容應(yīng)用到實際設(shè)備或生產(chǎn)中(工程)、將學問傳給更多人(教學)都是將知識轉(zhuǎn)換成生產(chǎn)力的途徑,只是不同的方法有不同的時間周期和特點。
我們當中大多數(shù)人畢業(yè)以后都會去做工程師,在高校做科研和教學的畢竟是少數(shù),因此這里從工程角度展開來論述,理論與實踐的統(tǒng)一性對本科學習的意義。
2.1 主觀思考
從這里往下就是很主觀的內(nèi)容了,如果認為我的思考和結(jié)論有問題,誠請批評指正。
主要結(jié)論如下:理論基礎(chǔ)決定發(fā)展上限,而實踐能力決定能否將所學理論轉(zhuǎn)換為生產(chǎn)力。此外,實踐過程對理論學習有極大的促進作用:
? ? 理論基礎(chǔ)決定發(fā)展上限這個可以說是所有人的共識,這里不再展開。實踐能力意味著將所學理論轉(zhuǎn)換為生產(chǎn)力能力,這點不用過多論證也能得到大多數(shù)人的認同。盡管如此,這點仍然被很多人忽略。通俗來講就是,學了理論知識,要會用,用在實際生產(chǎn)生活中??刂乒こ處煹墓ぷ骶褪前芽刂茊栴}解決,解決控制問題既需要理論支撐也需要足夠的實踐能力,由此可以看出理論與實踐是辯證統(tǒng)一的。理解理論與實踐的統(tǒng)一性與實踐能力的重要性對自動化專業(yè)的本科學習有至關(guān)重要的意義。除此之外,良好的實踐能力也有利于就業(yè)和升學,這里就不過多展開。實踐過程對理論學習有極大的促進作用,這點我在大一一年的RoboMaster備賽中感觸頗多。
2.2 實踐過程對理論學習的促進
在實踐過程中,我們會遇到各種各樣的問題,很多問題都可以通過學校課程的理論知識來分析和解決。帶著問題去學習相應(yīng)的理論知識會有極強的動力,學習的過程會很高效很過癮。并且用所學理論解決實際工程問題比解決課后習題要更有成就感。
舉個簡單的例子,在RoboMaster比賽的云臺控制中,需要陀螺儀測量云臺的轉(zhuǎn)動角速度,測量的角速度會作為控制器輸入的一部分信息。但控制器中的微分環(huán)節(jié)對信號的質(zhì)量要求較高,因為微分過程會放大信號高頻噪聲的幅值(考慮sin(100t)這個函數(shù),幅值為±1,經(jīng)過求導后得到100cos(100t),幅值擴大了100倍)。為了避免高頻噪聲影響系統(tǒng)的穩(wěn)定性,我們需要通過低通濾波器(只有低頻率的部分可以通過即低通)來濾去高頻噪聲。但濾波器存在相位滯后,會影響信號的實時性,簡單來說就是信號經(jīng)過低通濾波器后會比原始信號滯后一點點,就像這樣(左右圖為MATLAB和單片機平臺的加速度計濾波效果對比):
信號的滯后就會影響控制結(jié)果的滯后,這樣帶來的直觀感受就是云臺不“跟手”了。RoboMaster對操作手來說就是一個射擊游戲,云臺不“跟手”,就像是用顯卡不好的電腦玩游戲那樣,感覺操作起來黏黏糊糊不夠干脆利落,這顯然會影響操作手的發(fā)揮。因此,濾波器的設(shè)計需要在濾波程度和實時性之間找到一個平衡。借著設(shè)計濾波器這個契機,我淺顯的學習了一下數(shù)字信號處理的內(nèi)容,包括沖激響應(yīng)、幅頻響應(yīng)和相頻響應(yīng)等,也正是沖激響應(yīng)這個概念讓我有了學習控制理論的想法這個后面再說。
了解了幅頻響應(yīng)和相頻響應(yīng),就能直觀的對比濾波器的特性。通過MATLAB的filter designer可以方便的設(shè)計并分析濾波器,這樣一來,就能根據(jù)實際需求把握恰當?shù)臑V波器的濾波效果和滯后程度:
再后來偶然在論壇上看到了一篇官方發(fā)布的云臺系統(tǒng)辨識方法的博客,感覺很牛,但是看不懂??!這又是拉普拉斯變換又是傳遞函數(shù)的這我不懂啊。后來看到了一個從沖激響應(yīng)出發(fā)的經(jīng)典控制理論的系列,從拉普拉斯變換到傳遞函數(shù)再到一階系統(tǒng)二階系統(tǒng)再到伯德圖等等內(nèi)容都講的非常直觀明了。經(jīng)典控制理論入門以后,我慢慢發(fā)現(xiàn)PID的參數(shù)整定也可以從嚴謹理論的角度進行分析,不再是一味的看著串口打印的階躍響應(yīng)圖像來憑感覺調(diào)參,這是我把第一次把經(jīng)典控制理論用在做比賽中。
3 理論基礎(chǔ)與仿真分析
第一次聽說建模和仿真,是大一剛開學不久,聽一個做智能車的學長講的,意思是建模可以用來定性分析實際系統(tǒng),進一步可以通過仿真來驗證算法思路的可行性,但想要定量分析出實機上好用的參數(shù)比較困難。當時覺得特神秘,我不懂也沒好意思問。后來疫情在家不能返校,也沒有設(shè)備和機器人了,所幸做就做了些仿真分析,這才開始慢慢理解理論與仿真在實際開發(fā)中的作用。
3.1 運動預(yù)測的例子
同樣是舉一個簡單的例子,關(guān)于Robmaster機器人的輔助瞄準運動預(yù)測。輔助瞄準這東西就是用計算機視覺識別和定位敵方裝甲板,然后根據(jù)視覺識別的結(jié)果自動調(diào)整云臺姿態(tài)實現(xiàn)輔助瞄準,通俗來說就是射擊游戲里的自瞄掛。過程大概是這樣的:視覺算法得到敵方裝甲板位置→云臺調(diào)整姿態(tài)瞄準敵人→開槍→子彈飛行一段時間擊中裝甲板。云臺一般為雙軸云臺(可以上下左右運動,不能滾動):
但實際比賽中目標是在不斷運動的,如果槍口始終對準敵方裝甲板的話,等子彈飛過去,敵人就不再原來的位置了,再加上視覺識別和控制器均存在一定的滯后。因此,面對遠距離的目標,是有必要通過一定的算法來估計我們與敵人的相對運動趨勢,進而預(yù)測敵人在一段時間后的位置,從而在瞄準中加入提前量。
我的思路是這樣:根據(jù)視覺識別的結(jié)果與云臺的坐標變換矩陣得到敵方裝甲板的相對位置,根據(jù)位置的歷史信息估計其xyz三個方向的速度與加速度分量,后通過子彈動力學模型計算子彈飛行時間,根據(jù)時間和速度與加速度信息估計子彈到達后的裝甲板位置,最后將新的位置轉(zhuǎn)換為姿態(tài)角輸入云臺姿態(tài)控制環(huán)節(jié)實現(xiàn)提前瞄準。
這個過程不需要很多高級的理論,但一定的理論基礎(chǔ)能帶來巨大的便利:計算相對位置需要慣性導航中的方向余弦矩陣、有了矩陣后還需要理解線性變換的概念,了解矩陣是線性變換的一種表示。高中都學過位置、速度與加速度的關(guān)系,因此根據(jù)位置信息估計速度與加速度其實就是一個提取信號微分的過程。一般方法就是直接兩次位置相減然后除間隔時間,但這種方法會放大信號中的高頻噪聲,導致計算出的速度和加速度與真實值相差甚遠。微小的高頻噪聲(圖中難以分辨)經(jīng)過微分以后會產(chǎn)生顯著噪聲:
因此我們需要一種可以消除高頻噪聲的微分方法,經(jīng)過查閱資料,了解到這么幾種方法:
? ? 韓老師提出的TD(微分跟蹤器),TD配合過渡過程在ADRC中發(fā)揮著重要作用;狀態(tài)觀測器,可以假設(shè)系統(tǒng)是積分串聯(lián)的,也就是說將信號本身及其微分作為狀態(tài),根據(jù)所需要的帶寬配置極點即可??柭鼮V波器,雖然卡爾曼濾波器與龍貝格觀測器具有相同的狀態(tài)方程,但由于卡爾曼濾波器可以考慮到信號的噪聲特性,因此很多場合下要優(yōu)于龍貝格觀測器。
4. 最小二乘法,用y=kx+b擬合信號,即為信號微分。其實早在高中數(shù)學課上老師就講過最小二乘法,當時只知道用來作題,沒想到還能用在做比賽中。
最后我決定試一試卡爾曼濾波器和最小二乘法,但是身邊沒有機器人沒法測試啊,這時就可以利用仿真分析來對比驗證了。為了避免平臺不同造成的差異,這次我并沒有用MATLAB,而是直接在F411上搭建仿真環(huán)境。
我發(fā)現(xiàn)卡爾曼濾波器和最小二乘法的效果相差并不大,因為這兩種算法都屬于典型的無偏估計。考慮到卡爾曼濾波的設(shè)計要同時調(diào)整QR兩個矩陣的多個參數(shù),而最小二乘法只需要確定樣本數(shù)量一個參數(shù),最終還是決定用最小二乘法估計目標的速度和加速度。但最小二乘法的缺點也比較明顯:算法計算量會隨著樣本數(shù)的增加而增加,因此選擇算法也需要考慮計算平臺的計算能力。
有了位置、速度和加速度,我們就可以用中學就學過的運動學公式x = x0 + vt + 0.5at2來預(yù)測目標位置了。下面是預(yù)測0.15s單軸位置提前量的效果,黑色是實際位置紫色是實際提前位置,紅色是估計速度和加速度的預(yù)測結(jié)果,綠色是僅估計速度的預(yù)測結(jié)果??梢钥吹焦烙嬎俣群图铀俣鹊男Ч戎还烙嬎俣纫靡恍?/span>
3.2 串級控制的例子
理論與仿真的故事除了這個還有很多,另比較典型的一個例子是關(guān)于串級PID優(yōu)化。在做云臺控制仿真的時候,我對比不同的云臺角度控制策略時發(fā)現(xiàn),常用的角度-速度串級PID的抗擾性能很好但帶寬很低,簡單來說就是反應(yīng)慢。然后一個大佬跟我講,可以試試改一改內(nèi)環(huán)的期望,把內(nèi)環(huán)期望從外環(huán)輸出改成外環(huán)輸出與外環(huán)期望微分的和,下文稱之為優(yōu)化后的串級控制,于是我就搭了下面這個四種控制策略的對比仿真:
這個仿真中控制器的目的是令云臺角速度跟隨目標角速度(角速度跟蹤精確的結(jié)果就是角度跟蹤必然精確,所以角速度跟蹤準與角度跟蹤準其實是一件事),四種策略從上往下分別是優(yōu)化后的串級控制、只對角速度進行閉環(huán)、只對角度進行閉環(huán)、傳統(tǒng)串級控制。并在2s時加入一個持續(xù)一秒的擾動,四種策略的角速度(左)與角度(右)跟隨結(jié)果如下:
可以看到紅色的單速度環(huán)的跟蹤速度在傳統(tǒng)方法中是最好的,但抗擾動的能力很差。而綠色的單角度環(huán)控制不僅跟蹤速度比不上單速度環(huán),連抗擾動能力也是所有算法中最差的。至于紫色的傳統(tǒng)的串級控制,這個頻率的信號跟都跟不上,抗擾能力再好也是浮云。而我們基本看不到藍色的優(yōu)化串級控制的曲線,這是因為優(yōu)化串級控制的跟蹤速度和紅色的單速度環(huán)幾乎一致,是所有算法中最好的,并且在2~3s的擾動中表現(xiàn)的也最好,要知道優(yōu)化后的串級控制與傳統(tǒng)的串級控制可是用的同一套參數(shù)。
當時看到這個結(jié)果以后很震驚,但沒想明白為什么,于是我就推了一下兩種算法的閉環(huán)傳遞函數(shù):
發(fā)現(xiàn)優(yōu)化后的串級控制比傳統(tǒng)串級控制器多了一個零點,想必就是這個零點提高了系統(tǒng)帶寬。于是把結(jié)果丟到MATLAB里畫了一下兩個閉環(huán)系統(tǒng)的Bode圖,發(fā)現(xiàn)這個零點讓閉環(huán)系統(tǒng)的帶寬提高了整整一個數(shù)量級,同時顯著提升了閉環(huán)系統(tǒng)的實時性,可以說是非常成功的系統(tǒng)矯正了:
4 總結(jié)
自動化對有明確目標的人是個很不錯的專業(yè),盡早明確自己的目標是至關(guān)重要的。明確目標后就可以盡快找一些項目鍛煉自己的實踐能力,平衡車和四軸無人機都是不錯的選擇。
除了自己搞也可以加入學校的各種本科生實驗室,有一群志同道合的同學一起會進步的更快。參加各類比賽也是檢驗、提升自己的好方法。不過像電賽這樣短周期的比賽,更多的是檢驗自己,而技術(shù)上的收獲有限。
追求長足的進步,還是應(yīng)當參加像飛思卡爾智能車、水下機器人大賽、RoboMaster、Robocon這樣的長周期比賽。這類比賽的備賽中有足夠長的時間鉆研,結(jié)合課堂所學,把已有的東西做的更好。這樣的比賽經(jīng)歷也會是成為本科生涯中難忘的經(jīng)歷。