關於自動化/控制本科學習的思考


由於筆者水平有限,文中難免存在一些不足和錯誤之處,誠請各位批評指正。

本文內容:

0 為什么寫這個主題

1 自動化是學什么的

1.1 控制問題

1.2 從課程設置展開

1.3從機器人學展開

2 理論與實踐的統一

2.1 主觀思考

2.2 實踐過程對理論學習的促進

3 理論基礎與仿真分析

3.1 運動預測的例子

3.2 串級控制的例子

4 總結

0 為什么寫這個主題

在大一第一個學期我就有了些關於理論學習與課外實踐的統一性的思考,由於對自己的思考和結論並不自信,就只跟身邊幾個比較要好的同學交流過。這段時間看了李崇老師的關於自動化/控制的學習經歷和經驗分享,和東北大學action實驗室發布在B站的控制組交流會,很有共鳴,再加上馬上開學大二了,也算給自己不完整的大一做一個總結,故打算寫一寫自己對自動化專業的認識,還有關於理論與實踐統一性的思考,以及理論與仿真在我的實踐中的運用與我的思考

1 自動化是學什么的

我認為認識自動化專業要從本科的課程設置入手。以我的學校哈爾濱工程大學的自動化學院為例,我們學院有五個本科專業,在招生中為自動化類大類招生,包括自動化、探測制導、測控、電氣自動化、機器人五個本科專業。從培養方案來看,專業課程設置可大致總結為:工學基礎&控制理論+專業內容。主要區別就在不同專業有不同的專業內容:自動化是運動控制與過程控制,測控是導航……

1.1 控制問題

在認識自動化專業之前,先舉一個控制問題的例子:空調。

我們用遙控器設置一個溫度,是希望空調可以吹出合適溫度的風來將室內的溫度控制在我們設置的溫度附近。控制室內溫度保持在一定范圍就是控制目標。

在這個控制問題中,室內空氣就構成了一個系統(被控對象)。系統包含輸入和輸出,這里我們可以假設空調交換機的運行功率為輸入,室內的溫度為輸出。

在設計空調的控制工程師眼中,問題是這樣的:通過溫度傳感器測量室內實際溫度,但傳感器的測量值不一定准確,可能需要濾波來消除掉無用信號(噪聲)並保留下有用信號(室內溫度),這就是感知的過程。

得到了室內溫度以后,我們還要結合目標溫度來計算出合適的交換機功率,來控制溫度的變化,而從實際溫度和目標溫度到交換機功率的這個過程,就需要由設計的控制器來計算。

交換機的工作就會引起室內溫度的變換,室內溫度的變化會反過來作用到我們感知得到的室內溫度,進而影響控制器的輸出(新的交換機功率)。經過這樣不斷往復的過程,我們就可以將室內溫度控制在我們想要的范圍內:

image-20200830144504870

1.2 從課程設置展開

在上面說過,自動化學院的課程設置主要包括工學基礎控制理論專業內容,這里主要講工學基礎和控制理論是干什么的。

工學基礎中的力學電學以及計算機程序設計等等則是給我們提供認識系統和改造系統的方法。而本科階段最重要的課程是控制理論,包括自動(經典)控制理論現代控制理論,給我們提供分析系統和設計控制率的理論依據與方法。通俗來講就是,我們通過力學與電學的知識可以對一個系統有一個初步認識或者進行定性甚至定量的建模,本科階段一般是根據物理定律建立系統的微分方程。

而控制理論建立在微分方程的基礎上,提供了分析系統的手段,經典/現代控制理論分別通過傳遞函數與狀態空間的方式來分析系統、得到系統的特性,根據系統的特性和具體控制要求,我們可以通過控制理論得到能滿足我們控制要求的控制算法或者控制率

這樣一來,我們就從理論層面解決了這個控制問題,但這還沒完,我們還需要具備實現控制算法的能力。通常情況下,我們利用編程的手段,通過計算機系統,包括單片機和plc等等數字計算平台來實現我們的控制算法,最后經過實機調試來完成對系統的控制。

上述過程聽起來會有些晦澀,想深入了解這個過程可以從這個網站學習:http://ctms.engin.umich.edu/CTMS/index.php?aux=Home

1.3 從機器人學展開

除了從課程設置的角度展開,我們也可以從機器人學展開來認識自動化專業,因為機器人行業的各個環節都能見到自動化人的身影。

機器人可粗略分為感知、決策、控制三方面。

以自動駕駛為例,感知是最上游的環節,包括通過高精地圖與IMU融合獲取位置、速度等信息,通過激光雷達與攝像頭融合識別周圍環境中的車輛行人等障礙物等。有了感知得到的環境信息后,決策部分將決定車輛以怎樣的行為應對當前環境,是出現突發情況需要急剎車,還是路況良好可以提速,還是前方車道修路需要變道。當決策環節給出實際決策結果后,就由控制部分來控制電機轉速、方向盤轉角等來實現決策給出的任務。

對於感知、決策和控制三方面,自動化專業或者控制科學與工程學科都有對應的課程與學科,具體細節不再展開。

2 理論與實踐的統一

這里的理論指的是在學校課內學到的理論知識,實踐指的是在學校課程以外動手做一些課外作品,可以是在實驗室中跟大家一起做比賽,也可以是自己做平衡車、無人機這樣可以應用各種算法的作品。

發展基礎科學、工程學科的重要目的都是提高或創造生產力,只有生產力的擴大才能把蛋糕越做越大。對於每一個個體來說,將自己所學最終轉換成生產力才是實現價值的重要途徑。研究更好的控制算法(科研)、將學到的內容應用到實際設備或生產中(工程)、將學問傳給更多人(教學)都是將知識轉換成生產力的途徑,只是不同的方法有不同的時間周期和特點。

我們當中大多數人畢業以后都會去做工程師,在高校做科研和教學的畢竟是少數,因此這里從工程角度展開來論述,理論與實踐的統一性對本科學習的意義。

2.1 主觀思考

從這里往下就是很主觀的內容了,如果認為我的思考和結論有問題,誠請批評指正。

主要結論如下:理論基礎決定發展上限,而實踐能力決定能否將所學理論轉換為生產力。此外,實踐過程對理論學習有極大的促進作用:

  1. 理論基礎決定發展上限這個可以說是所有人的共識,這里不再展開。
  2. 實踐能力意味着將所學理論轉換為生產力能力,這點不用過多論證也能得到大多數人的認同。盡管如此,這點仍然被很多人忽略。通俗來講就是,學了理論知識,要會用,用在實際生產生活中。控制工程師的工作就是把控制問題解決,解決控制問題既需要理論支撐也需要足夠的實踐能力,由此可以看出理論與實踐是辯證統一的。理解理論與實踐的統一性與實踐能力的重要性對自動化專業的本科學習有至關重要的意義。除此之外,良好的實踐能力也有利於就業和升學,這里就不過多展開。
  3. 實踐過程對理論學習有極大的促進作用,這點我在大一一年的RoboMaster備賽中感觸頗多。

2.2 實踐過程對理論學習的促進

在實踐過程中,我們會遇到各種各樣的問題,很多問題都可以通過學校課程的理論知識來分析和解決。帶着問題去學習相應的理論知識會有極強的動力,學習的過程會很高效很過癮。並且用所學理論解決實際工程問題比解決課后習題要更有成就感。

舉個簡單的例子,在RoboMaster比賽的雲台控制中,需要陀螺儀測量雲台的轉動角速度,測量的角速度會作為控制器輸入的一部分信息。但控制器中的微分環節對信號的質量要求較高,因為微分過程會放大信號高頻噪聲的幅值(考慮sin(100t)這個函數,幅值為±1,經過求導后得到100cos(100t),幅值擴大了100倍)。為了避免高頻噪聲影響系統的穩定性,我們需要通過低通濾波器(只有低頻率的部分可以通過即低通)來濾去高頻噪聲。但濾波器存在相位滯后,會影響信號的實時性,簡單來說就是信號經過低通濾波器后會比原始信號滯后一點點,就像這樣(左右圖為MATLAB和單片機平台的加速度計濾波效果對比):

image-20200831142030365

信號的滯后就會影響控制結果的滯后,這樣帶來的直觀感受就是雲台不“跟手”了。RoboMaster對操作手來說就是一個射擊游戲,雲台不“跟手”,就像是用顯卡不好的電腦玩游戲那樣,感覺操作起來黏黏糊糊不夠干脆利落,這顯然會影響操作手的發揮。因此,濾波器的設計需要在濾波程度和實時性之間找到一個平衡。借着設計濾波器這個契機,我淺顯的學習了一下數字信號處理的內容,包括沖激響應、幅頻響應和相頻響應等,也正是沖激響應這個概念讓我有了學習控制理論的想法這個后面再說。

了解了幅頻響應和相頻響應,就能直觀的對比濾波器的特性。通過MATLAB的filter designer可以方便的設計並分析濾波器,這樣一來,就能根據實際需求把握恰當的濾波器的濾波效果和滯后程度:

image-20200830153115943

再后來偶然在論壇上看到了一篇官方發布的雲台系統辨識方法的博客,感覺很牛,但是看不懂啊!這又是拉普拉斯變換又是傳遞函數的這我不懂啊。后來看到了一個從沖激響應出發的經典控制理論的系列,從拉普拉斯變換到傳遞函數再到一階系統二階系統再到伯德圖等等內容都講的非常直觀明了。我也習慣把學到的內容寫到我的博客里:https://www.cnblogs.com/HongxiWong/。經典控制理論入門以后,我慢慢發現PID的參數整定也可以從嚴謹理論的角度進行分析,不再是一味的看着串口打印的階躍響應圖像來憑感覺調參,這是我把第一次把經典控制理論用在做比賽中。

3 理論基礎與仿真分析

第一次聽說建模和仿真,是大一剛開學不久,聽一個做智能車的學長講的,意思是建模可以用來定性分析實際系統,進一步可以通過仿真來驗證算法思路的可行性,但想要定量分析出實機上好用的參數比較困難。當時覺得特神秘,我不懂也沒好意思問。后來疫情在家不能返校,也沒有設備和機器人了,所幸做就做了些仿真分析,這才開始慢慢理解理論與仿真在實際開發中的作用。

3.1 運動預測的例子

同樣是舉一個簡單的例子,關於Robmaster機器人的輔助瞄准運動預測。輔助瞄准這東西就是用計算機視覺識別和定位敵方裝甲板,然后根據視覺識別的結果自動調整雲台姿態實現輔助瞄准,通俗來說就是射擊游戲里的自瞄掛。過程大概是這樣的:視覺算法得到敵方裝甲板位置→雲台調整姿態瞄准敵人→開槍→子彈飛行一段時間擊中裝甲板。雲台一般為雙軸雲台(可以上下左右運動,不能滾動):

image-20200831160805107

但實際比賽中目標是在不斷運動的,如果槍口始終對准敵方裝甲板的話,等子彈飛過去,敵人就不再原來的位置了,再加上視覺識別和控制器均存在一定的滯后。因此,面對遠距離的目標,是有必要通過一定的算法來估計我們與敵人的相對運動趨勢,進而預測敵人在一段時間后的位置,從而在瞄准中加入提前量。

我的思路是這樣:根據視覺識別的結果與雲台的坐標變換矩陣得到敵方裝甲板的相對位置,根據位置的歷史信息估計其xyz三個方向的速度與加速度分量,后通過子彈動力學模型計算子彈飛行時間,根據時間和速度與加速度信息估計子彈到達后的裝甲板位置,最后將新的位置轉換為姿態角輸入雲台姿態控制環節實現提前瞄准。

這個過程不需要很多高級的理論,但一定的理論基礎能帶來巨大的便利:計算相對位置需要慣性導航中的方向余弦矩陣、有了矩陣后還需要理解線性變換的概念,了解矩陣是線性變換的一種表示。高中都學過位置、速度與加速度的關系,因此根據位置信息估計速度與加速度其實就是一個提取信號微分的過程。一般方法就是直接兩次位置相減然后除間隔時間,但這種方法會放大信號中的高頻噪聲,導致計算出的速度和加速度與真實值相差甚遠。微小的高頻噪聲(圖中難以分辨)經過微分以后會產生顯著噪聲:

image-20200831190455547

因此我們需要一種可以消除高頻噪聲的微分方法,經過查閱資料,了解到這么幾種方法:

  1. 韓老師提出的TD(微分跟蹤器),TD配合過渡過程在ADRC中發揮着重要作用;

  2. 狀態觀測器,可以假設系統是積分串聯的,也就是說將信號本身及其微分作為狀態,根據所需要的帶寬配置極點即可。

  3. 卡爾曼濾波器,雖然卡爾曼濾波器與龍貝格觀測器具有相同的狀態方程,但由於卡爾曼濾波器可以考慮到信號的噪聲特性,因此很多場合下要優於龍貝格觀測器。image-20200831191736353

  4. 最小二乘法,用y=kx+b擬合信號,即為信號微分。其實早在高中數學課上老師就講過最小二乘法,當時只知道用來作題,沒想到還能用在做比賽中。

    image-20200901145223263

最后我決定試一試卡爾曼濾波器和最小二乘法,但是身邊沒有機器人沒法測試啊,這時就可以利用仿真分析來對比驗證了。為了避免平台不同造成的差異,這次我並沒有用MATLAB,而是直接在F411上搭建仿真環境。

我發現卡爾曼濾波器和最小二乘法的效果相差並不大,因為這兩種算法都屬於典型的無偏估計。考慮到卡爾曼濾波的設計要同時調整QR兩個矩陣的多個參數,而最小二乘法只需要確定樣本數量一個參數,最終還是決定用最小二乘法估計目標的速度和加速度。但最小二乘法的缺點也比較明顯:算法計算量會隨着樣本數的增加而增加,因此選擇算法也需要考慮計算平台的計算能力。

有了位置、速度和加速度,我們就可以用中學就學過的運動學公式x = x0 + vt + 0.5at²來預測目標位置了。下面是預測0.15s單軸位置提前量的效果,黑色是實際位置紫色是實際提前位置,紅色是估計速度和加速度的預測結果,綠色是僅估計速度的預測結果。可以看到估計速度和加速度的效果比只估計速度要好一些:

image-20200831154707440

3.2 串級控制的例子

理論與仿真的故事除了這個還有很多,另比較典型的一個例子是關於串級PID優化。在做雲台控制仿真的時候,我對比不同的雲台角度控制策略時發現,常用的角度-速度串級PID的抗擾性能很好但帶寬很低,簡單來說就是反應慢。然后一個大佬跟我講,可以試試改一改內環的期望,把內環期望從外環輸出改成外環輸出與外環期望微分的和,下文稱之為優化后的串級控制,於是我就搭了下面這個四種控制策略的對比仿真:

image-20200831160221017

這個仿真中控制器的目的是令雲台角速度跟隨目標角速度(角速度跟蹤精確的結果就是角度跟蹤必然精確,所以角速度跟蹤准與角度跟蹤准其實是一件事),四種策略從上往下分別是優化后的串級控制、只對角速度進行閉環、只對角度進行閉環、傳統串級控制。並在2s時加入一個持續一秒的擾動,四種策略的角速度(左)與角度(右)跟隨結果如下:

image-20200831161037974

可以看到紅色的單速度環的跟蹤速度在傳統方法中是最好的,但抗擾動的能力很差。而綠色的單角度環控制不僅跟蹤速度比不上單速度環,連抗擾動能力也是所有算法中最差的。至於紫色的傳統的串級控制,這個頻率的信號跟都跟不上,抗擾能力再好也是浮雲。而我們基本看不到藍色的優化串級控制的曲線,這是因為優化串級控制的跟蹤速度和紅色的單速度環幾乎一致,是所有算法中最好的,並且在2~3s的擾動中表現的也最好,要知道優化后的串級控制與傳統的串級控制可是用的同一套參數。

當時看到這個結果以后很震驚,但沒想明白為什么,於是我就推了一下兩種算法的閉環傳遞函數:

image-20200901142916273

image-20200901144816673

image-20200903231137760

image-20200901144905684

發現優化后的串級控制比傳統串級控制器多了一個零點,想必就是這個零點提高了系統帶寬。於是把結果丟到MATLAB里畫了一下兩個閉環系統的Bode圖,發現這個零點讓閉環系統的帶寬提高了整整一個數量級,同時顯著提升了閉環系統的實時性,可以說是非常成功的系統矯正了:

image-20200831191203233 image-20200831162758738

后來我就想如何從直覺上理解這個改動。單純的速度閉環有較快的響應速度,但抗擾能力有限。當加入角度外環形成串級控制后客觀上提高了閉環系統的抗擾性能,但降低了閉環系統的響應速度。故可以讓控制信號中關於速度環的信息直接作為速度環期望的一部分,從而在跟蹤目標信號的過程中一定程度隔離外環,僅用內環跟蹤目標信號,而當擾動出現時串級控制就會開始發揮其康擾動的特性。從內環期望及其分量的變化可以看到,當擾動到來時,橙紅色外環輸出產生明顯變化,黃色總期望值變小以抑制擾動。從控制效果來看,優化后的串級控制在速度跟隨抗擾性能上僅比單速度環有微弱優勢,但角度跟隨上相比單速度環改善頗多。

image-20200906090750716

對外環來說,目標信號經過變換后與控制器輸出共同作用到下一環節,不禁讓人想到前饋控制。由於內環速度要明顯快於外環,如果將速度閉環近似為1,這樣就可以理解為外環的前饋控制了。對於電機位置控制來說,內環到外環就僅僅是一個簡單的積分,因此設計前饋控制環節只需要對外環期望進行微分即可。從這個角度來看,這樣的思路也可以應用於其他的串級控制系統中,只要內環速度快於外環並且明確內外環控制量之間的關系,就可以設計比較精確的前饋補償環節。

4 總結

自動化對有明確目標的人是個很不錯的專業,盡早明確自己的目標是至關重要的。明確目標后就可以盡快找一些項目鍛煉自己的實踐能力,平衡車和四軸無人機都是不錯的選擇。

除了自己搞也可以加入學校的各種本科生實驗室,有一群志同道合的同學一起會進步的更快。參加各類比賽也是檢驗、提升自己的好方法。不過像電賽這樣短周期的比賽,更多的是檢驗自己,而技術上的收獲有限。

追求長足的進步,還是應當參加像飛思卡爾智能車、水下機器人大賽、RoboMaster、Robocon這樣的長周期比賽。這類比賽的備賽中有足夠長的時間鑽研,結合課堂所學,把已有的東西做的更好。這樣的比賽經歷也會是成為本科生涯中難忘的經歷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM