活動鏈接:bbs.robomaster.com/thre

1. 在從視覺組轉到電控組時需要注意些什麼方面的知識?

有點寬泛,有機會再回答。

2. 如何快速入門PID?

這個問題太寬泛了,短時間無法詳細的回復,先說幾點吧,首先要對反饋系統有基本的瞭解,然後自己推導一遍PID的公式,最好能結合頻域的知識理解一下。實戰的話,最簡單的先仿照常式搞一個速度環PID的程序,拿上電機然它動起來,實際改變參數,觀察J-Scope曲線的變化,加深理解。

3. PID在調試時要注意什麼?

一定要合理使用調試工具,把需要觀測的數值列印程曲線出來, 可以用J-Link的工具J-Scope,或者串口發送出來用上位機觀察。例如對於串級PID需要列印出多個環節的給定值和、反饋值。然後調試的時候先調內環,保證內環的響應速度能夠基本跟上,再加上外環,同時需要微調內環。一般來說用P、I控制器就夠用了。

4. 如何根據不同環境整來調整PID增益?

PID的魯棒性較好,能夠適應一定範圍的系統模型變化,但是如果負載發生較大變化導致系統模型改變,需要對自適應PID或者其他控制器。具體實戰我也沒有操作過,但是有幾個可以考慮的方向:

  1. 直接對導致系統模型變化的變數進行觀測,例如雲臺的載彈量,然後針對不同情況調出多組PID參數進行切換。
  2. 對系統的模型進行在線辨識,然後調節PID參數。
  3. 使用別的帶有觀測器的控制器。

5. 需要什麼工具嗎?例如示波器之類的。

我們現在接觸的基本上都是通過MCU控制,因此使用單片機的調試工具即可,使用虛擬示波器觀察曲線。如果是涉及到到無法檢測的中間量(例如電壓、運動),可以使用示波器或者其他設備(例如激光運動感測器),這個要根據自己的需求來。

6. PID調節現在比較正統的方法是matlab建模,但是該如何建立一個出色穩定的數學模型呢?

  1. 對模型進行純理論分析
  2. 系統辨識

7. PID位置環的真實值與設定值有沒有必要加入濾波,防止感測器數據突變呢?

這是兩個問題,真實值基本上是來自感測器的觀測值,這個需要根據感測器的特性來決定。

輸出值濾波需要根據系統的特點來決定使用何種濾波器,一般會用到低通濾波器用來減小高頻雜訊,或者帶通濾波器消除某個頻段的震動(例如摩擦輪抖動)。

8. 還有大佬對於matlab的小白你有一些建議嗎?比如說推薦一些書籍,和重點的學習方向。

這個問題也是很寬泛,簡單說下,MATLAB是一個工具,沒必要為了學而學。

先快速入門MATLAB的基本語法,然後根據自己需要的方向具體去研究。附上知乎回答:zhihu.com/question/2642

9. 想問大佬關於底盤速度環PID的一些問題,我調底盤3508或者3510的時候,以電調傳回來的轉速做PID的測量值,調大P的話靜止的時候,因為輪子反饋回來有個0-3的轉速,用jscope看曲線,輸出會振蕩,給積分貌似起的作用不大,用微分底盤就會很抖,比例係數P給小了速度誤差就會很大,不知道大佬有什麼好辦法解決這個問題嗎?PID用的是普通PID。

  1. 加上死區控制,當反饋速度小於某個值的時候不動作
  2. 嘗試自己用電機反饋的角度值來計算速度
  3. 用PI控制器足夠了,積分項影響很大的

10. 想問一下關於PID閉環嵌套的問題呢。如果我加了多個環,比如底盤的電機要加速度環、電流環和速度環,改如何進行嵌套呢?

這就是串級PID,嵌套方式從外到內依次是位置環、速度環、加速度環,位置環計算出來需要的速度,此即速度環的目標值,然後速度環再計算出需要的加速度,依次類推很容易理解的。然後關於計算頻率,內環的計算頻率要大於等於外環。

11. 對於扭矩不大的雲臺電機來說,自己調的時候稍微比例參數給大點雲臺會晃得很厲害,給小點勁又很小,請問有沒有對此種系統合適的調參方式,或者說這種電機根本不適合嗎?

電機的選型是需要根據系統實際負載情況來的,如果選了扭矩偏小的電機是無法達到理想的響應速度的,因為電機扭矩是有上限的,系統的轉動慣量和阻力過大,限制了系統的加速度,這是物理規律無法突破的。

12. 雲臺電機PID在調參數的的時候整體效果較硬,但微小角度左右用不上力,感覺微小角度PID起的作用不大,請問有什麼注意點或者方法嗎?

  1. 首先檢查下是不是存在機械的空程,用手輕微撥動雲臺看能否讀到響應的反饋值變化;
  2. 然後再看控制器是否確實有輸出值但是機械機構沒有相應的動作;
  3. 還有一個可能是內環速度環沒有調好,仔細看速度環是否能夠及時的跟上速度給定值;
  4. 最後嘗試把積分項加大,有助於減小誤差。

13. 微分作用總是體現不出來,可以詳細講解一下微分的使用方法嗎?

微分項是用來增加高頻響應,現實生活中的系統都是帶有低通效應的,因此微分項作用不是很大。個人調試雲臺、底盤的經驗是隻使用PI控制。

14. 在調試yaw軸時因為雲臺一邊裝有pitch軸電機,請問有必要在其對應一邊加上重量差不多的配重嗎,對yaw軸PID參數整定效果影響大嗎?

有必要,否則在底盤啟動和停止的時候容易發生雲臺往一個方向偏轉。

有影響,會增加雲臺轉動慣量導致響應速度變慢(所以推薦大家搞一搞下供彈)。

15. 重心和質量變化比較大的部分的PID參數是否需要增加根據戰場實際情況來調整,還是直接給一個中間值就好,還是說回去拿著柴刀去逼機械的朋友改圖?

涉及到自適應PID,我沒有實踐過,上面有提到思路。進行把彈倉做到中間,減小負載變化。

16. 看曲線的時候一直不知道怎麼纔算是最好的效果,在雙環調試過程中,曲線設定值與真實值響應速度很快而且幾乎沒有超調,但實際效果還是不理想很軟容易撞一下就晃,對於此種情況有什麼更好的調參方法嗎,對於雲臺來說有更科學點看圖法嗎?

好的效果很明顯啊,實際值能儘可能的跟蹤上目標值。經常是需要在響應速度和超調量之間做出取捨,這個看自己系統的情況來判斷。

很容易晃,是不是你在調試的時候沒有加上實際負載,如果是PID的參數比較激進,在負載增大的情況下很容易發生震蕩,建議用實際工況來調試。

看圖就推薦J-Scope,然後吧所有環的給定、反饋值都列印出來,從內到外的調。

17. 多個PID控制器同時作用的時候,怎麼理論分析相互的制約關係。比如一個軌跡跟控制,設計目標是儘可能貼合一條預先設定的軌跡,中間有三個方向的PID控制器,X_controller,Y_controller,Z_controller(yaw),我可以知道三個PID的響應時間,比如角度Z_conctrller響應10度的平均響應時間是50ms,X方向響應100mm的平均響應時間是200ms,Y_controller直觀體現是機器人的切線速度,這個速度大小怎麼跟前面兩者的響應時間做一個理論結合,然後大致得出Y的理論極限?

沒太看懂問題,大概猜了一下是不是想根據系統兩個方向的響應速度來估算剩下一個方向的響應速度上限。聽上去不太可行,以轉動慣量為例,轉軸方向和位置都會影響轉動慣量,所以估算響應速度不靠譜,但是對於質量分佈已知的物體感覺可以分析一下。

18. 怎麼才能結合機器人的動力學模型設計控制器?

先理論分析動力學模型,然後結合系統辨識的方法搞一波,對經典控制理論來說,搞出來個傳遞函數,後面就可以有針對的設計控制器了。

19. 怎樣分析控制元件的參數上限然後知道結合機器人設計參數做出合理選型?怎樣區分是控制器參數設計問題,還是本身已達到控制元件性能上限?

上面有類似的回答。分析負載的模型,查出電機的輸出扭矩範圍,可以推算出加速度過程。

以電機來說,簡單的測試方法就是直接給電機發送最大控制值,然後觀察反饋曲線,可以計算出最大加速度,接著就可以計算出響應速度,看看是否符合自己的需求。

如上圖,給電機發送控制信號(紅線)最大值25000,然後觀察角速度的實際值(粉紅)和時間的關係,即可計算出最大角加速度值。

20. 為什麼不直接拿位置、速度、加速度分別乘 Kp1、Kp2、Kp3 而要用到PID的D項(位置除以dt)?相較於微分出來的結果與直接從感測器拿到數據會有什麼不一樣?是感測器數據不夠平滑還是?有沒有可能使用三個嵌套環然後每個環只調節P?中間會遇到什麼問題?

你的意思是位置微分得到速度,速度微分得到加速度,速度積分得到位置,以此類推,所以用一個控制器就完成串級PID的功能?大膽的想法,建議自己試一下。

21. 對一個機構來說,PID到底可以適應到什麼程度的控制,我能不能理解這幾個參數其實是跟機構的動力學模型是掛鉤的,那動力學模型的自變數是角加速度、角速度、角度得到力矩,那PID如果使用了這三種自變數是不是就代表控制器的模型是貼近了實際的動力學模型,然後如果控制元件參數達標的話效果已經可以很理想?相應的我應該怎麼考慮機器人機構的機械設計,除了了轉軸在質心附近?

PID具有一定的魯棒性,在系統模型不發生很大變化的情況下都可以取得較好的控制效果。

PID控制器從頻率來理解其實就是一個帶阻濾波器,肯定是貼近了實際的動力學模型才能取得控制效果。

結構的要求簡單來說就是牢固穩定,剛度足夠大,沒有異常的振動模態,然後盡量減小轉動慣量,減小負載。

22. 除了PID之外有沒有別的控制器比較適合我們製作的機器人機構使用?如果有你們會推薦我們在哪些機構使用哪些控制器?

PID+濾波器足以適用絕大部分機構了。

23. 物體在垂直面上做轉動控制(雲臺Pitch軸),需不需要把重力的分力考慮添加到控制器當中?或者怎麼把這個力簡化然後設計到控制器當中?或者是可以忽略的?這個可忽略的程度能不能幫忙量化一下?比如雲臺 -30 度 ~ +30度, 重力的分力:T(degree) = mg*cos(degree)*r , T- motor(最大連續轉矩) = 3.0Nm.mg*cos(degree)*r , T- motor(最大連續轉矩) = 3.0Nm。

看實際表現情況吧,可以考慮進去,做成簡單的自適應PID控制器。

信息量不足,無法量化,實在抱歉。

24. 對於移動機器人的底盤而言,可以怎樣考慮把摩擦力這個變數考慮進控制器當中,而達到物理環境更換之後(從家裡到比賽場地)快速調參的目的?而不需要重複之前的調參過程?或者說如果本身控制器設計得好,摩擦作為模型得一個很小變數,是可以忽略的?

理論上來說首先需要能夠觀測出摩擦力,然後針對系統進行建模,然後可以從傳遞函數的角度進行設計控制器。但是實際來說,影響應該不會很大,比賽場地也不會讓大家的車輪有明顯的打滑,這個不用慌。

25. 首先有幸讀了大佬《雲臺傳遞函數分析和應用》這篇文章,不知道有些問題能不能在這裡面提出呢?

1)首先攝像機裝在底盤時,觀測量為x,y坐標,在這種情況下的速度值是用dx/dt直接得到嗎?

2)攝像頭轉移到雲臺之後卡爾曼的輸入量是不是就轉化為了雲臺pitch yaw要動的角度值?這時我們是不是就要求角速度來對跳變的角度進行抑制了?

3)開源的代碼中沒有用到B和U,翻了知乎評論當時也有人問這個問題當時大佬的回答是 系統是純觀測的因此沒用到B和U,這點我不太明白我的想法是U為加速度矩陣,B為dt的矩陣,用於預測下一刻角度值和角速度值?

  1. B、u是目標實際的運動數據,從觀測者角度來說確實是無法獲取的,因此在建模的時候沒有考

26. 想問一下,我用3508電機進行系統辨識,發現3508電機是一個非線性系統,在高頻段時的不能很好的反應系統的特性,該如何解決呢?

現實系統基本上都具有低通特性,因此高頻段響應較差時很正常的現象。

增加微分項,提高高頻段的輸出。

27. 想請教一下你們做辨識的流程是怎樣的?

論壇有詳細的帖子啊老鐵,操作截圖都給出來了bbs.robomaster.com/thre,有具體問題再問。

28. 請問做系統辨識的時候出來的傳遞函數擬合度一直不高是怎麼回事,有哪些因素會影響它呢?

從數據採集和模型選擇兩個角度考慮。傳遞函數需要選擇合適的分子、分母階數。擬合度不需要太過要求,我之前做的結果也是隻有80%左右,足夠看出系統的問題和設計控制器了。

29. 想知道PID的模糊化在電機控制中是不是沒有太大的用處?

能調好當然有用處,我沒研究過相關內容,沒辦法給出靠譜的建議。

30.對於電機負載變化情況有什麼好的方法呢?例如P軸雲臺裝滿彈和不裝彈的時候。

  1. 直接對導致系統模型變化的變數進行觀測,例如雲臺的載彈量,然後針對不同情況調出多組PID參數進行切換。
  2. 對系統的模型進行在線辨識,然後調節PID參數。
  3. 使用別的帶有觀測器的控制器。

31. 您說根據雲臺載彈量不同情況下調出多組PID參數,那麼怎樣能夠感知到雲臺的載彈量呢?

彈倉內加入感測器。根據補彈量和發彈量計算,從裁判系統可以拿到數據。

32. 進行系統辨識,是不是該辨識開環傳遞函數最好?

從設計控制器的角度來說,確實基本上都是針對開環傳遞函數來的,例如MATLAB的sisotool就是需要導入開環傳遞函數。但是其他環節的傳遞函數也是能分析出一些問題的,例如控制器的實際作用效果等。

33. 根據電機的轉動慣量,額定轉矩等電機的參數,而寫出的關於電機的系統傳遞函數,這個方法可行麼?

可行啊,這就是理論分析的過程,但是建議結合實際測試數據驗證一下。還有從實際使用來說還需要加上負載吧,研究電機空載沒什麼意義。

34. 用系統辨識調節串級PID時,是要先把速度環調好,然後再加上速度環對位置環進行系統辨識嗎?

看你要辨識哪個環節咯,系統辨識簡單來說就是根據輸入值和輸出值來推斷中間環節的模型,開環、速度環、位置環都是可以去研究的。

35. 所有電機的PID計算及運行頻率多少比較好?

理論上來說越快越好,現在的單片機運算性能都不是瓶頸了,但是從實際物理系統來說,響應速度和反饋速度都是有限的,因此建議按照電機實際特性來。RM推出的多款電機反饋頻率都是1kHz,因此1kHz的計算頻率就是最佳值。

36. 雙環PID如果內外環頻率一樣大會有什麼影響嗎?

沒影響啊,我就是這麼用的。

37. 我想問一下如何做到在系統偏差較小的時候仍然能有較大的輸出並且還可以不超調的那種?

要看結構的,有的好調有的不好調,不能強求哦。具體來說,可以考慮對PID控制器進行一些修改,自己增加判斷條件。

38. 底盤四個電機反饋值用了濾波會更好嗎?

看你用什麼什麼類型的濾波器了,在不發生較大延遲的情況下,低通一下會讓電機運行的更加平滑。

39. pitch軸需要配重嗎?讓機械重心在軸上。

不建議刻意配重,配置只是能減小雲臺輸出扭矩,但是轉動慣量是絕對被增加了,因此會降低雲臺響應速度。從減小雲臺質量和轉動慣量的角度更加有效。

40. 請問在gyro mode下控制底盤跟隨雲臺的PID應該怎麼實現啊?感覺沒有思路。感覺yaw軸電機在轉,然後底盤也在旋轉,這樣怎麼通過IMU維持雲臺穩定呢?

首先要保證IMU能夠準確的獲取雲臺相對地面的絕對角度,然後PID控制器的目標值和反饋值都是雲臺的絕對角度,不需要關心底盤的旋轉,經過實踐證明是可以控穩的,建議自己去試一下。

41. 傳遞函數能不能通過RM的電機參數直接推導出來?

我記得RM電機說明書裡面的只有母線電流和扭矩的關係圖,而實際發送給電機的控制量是相電流或者轉矩電壓,因此是有差距的。另外電機自身的特性基本上是線性的,沒有太大單獨分析的價值,要帶上負載纔有意義。

42. 撥彈電機在撥動撥盤轉動時,總會存在偏差,這樣存在的問題在待發射口很容易存彈,再就是單發時有時會導致發出去兩顆彈丸的問題,大佬有好的建議嗎?感覺只靠PID不能很好解決這個問題。

建議調試看一下是否電機轉到指定位置了?還是因為機械結構存在鬆動導致電機轉到指定位置但是撥輪沒有到位。PID位置環速度環調好了是可以很好的搞定的。

43. 對於3508,系統辨識時採用什麼的頻率分佈比較合適?

這個我沒跑過,猜測截止頻率會比6623電機高,建議先從低頻一直跑到1kHz,前提是你的感測器和採集方法能支持到,然後看下截止頻率大概在什麼範圍,再確定辨識的頻段。

44. 使用adrc控制器的時候參數較多,請問一下如何快速整定這些參數呢?

這個我們也在研究,之後有研究結果再考慮給大家開源。


推薦閱讀:
相關文章