久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

淺談四軸PID調(diào)試心得

 A熊牙天下 2018-03-07

首先例舉第一個例子,,我調(diào)的第一臺四軸飛行器,,十字型四軸飛行器,講下配置:
網(wǎng)上一百多的650機(jī)架,,好贏20A電調(diào),,新西達(dá)2212 1000kV,1045的槳,2200mah電池,。
主控是STM32F103
這是第一個四軸的帖子
http://www./thread-5539270-1-1.html

采用位置式PID控制,,位置式PID公式如下

PID的基本意義我在次就不作闡述了,我只講我的設(shè)計,,我以姿態(tài)角作為被控制對象,,所以
e(k) = 期望-測量 = 給定值-測量姿態(tài)角

對于微分項D,我做了一點改變,標(biāo)準(zhǔn)PID的微分項D=kd*(e(k)-e(k-1)),,我在實踐過程中因為角度的微分就是角速度,,而陀螺儀可以直接測出角速度,
所以我沒有將微分項作為偏差的差而是直接用D=kd*Gyro

實現(xiàn)代碼如下

float pidUpdate(pidsuite* pid, const float measured,float expect,float gyro){ float output; static float lastoutput=0; pid->desired=expect; //獲取期望角度 pid->error = pid->desired - measured; //偏差:期望-測量值 pid->integ += pid->error * IMU_UPDATE_DT; //偏差積分 if (pid->integ > pid->iLimit) //作積分限制 { pid->integ = pid->iLimit; } else if (pid->integ < -pid->iLimit) { pid->integ = -pid->iLimit; } // pid->deriv = (pid->error - pid->prevError) / IMU_UPDATE_DT; //微分 應(yīng)該可用陀螺儀角速度代替 pid->deriv = -gyro; if(fabs(pid->error)>Piddeadband) //pid死區(qū) { pid->outP = pid->kp * pid->error; //方便獨立觀察 pid->outI = pid->ki * pid->integ; pid->outD = pid->kd * pid->deriv; output = (pid->kp * pid->error) + (pid->ki * pid->integ) + (pid->kd * pid->deriv); } else { output=lastoutput; } pid->prevError = pid->error; //更新前一次偏差 lastoutput=output; return output;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

我這么做的原因是因為,,如果使用傳統(tǒng)的D的形式,,在我快速打舵時會產(chǎn)生輸入的設(shè)定值變化頻繁且幅度較大,四軸飛行器會迅速回到新的期望點,,說白了就是非常靈活,,四軸回復(fù)很猛,也許造成系統(tǒng)的振蕩,,對PID參數(shù)要求較高,。如果用角速度代替的話,那怕你打舵非常快,,四軸會較平穩(wěn)的回到新位置,,運動較柔和。對于我這種操作菜鳥來說無疑后面一種會更合適,,所以我選擇了D=kd*Gyro的方式,。

PID控制器我大概就是這么實現(xiàn)的,下面講講我在調(diào)試過程中具體遇到的問題,。首先我將四軸固定在單軸平衡平臺上,,讓飛行器完成單軸平衡,主要觀察姿態(tài)角的
(1)穩(wěn)定性,,能否平衡在期望角度,;
(2)響應(yīng)性,當(dāng)操縱命令改變時,,四軸能否即時的響應(yīng)期望的變化,;
(3)操縱性,由操縱員感受四軸的姿態(tài)是否已與操縱,,會不會產(chǎn)生響應(yīng)過沖,。

我先調(diào)一個軸的平衡再調(diào)另外一個軸,最后調(diào)YAW軸,。
A:開始只調(diào)P,將I,D置0,。由于不知道PID的大致范圍我就隨便給了一組值
:P=1,I=0,D=0觀察現(xiàn)象。一開電機(jī)四軸就開始劇烈左右搖擺,,很明顯P給大了,。然后P從小了往上加。從P=0.1開始試,。調(diào)試的時候我就發(fā)現(xiàn)了一個現(xiàn)象就是我的四軸往一邊歪,,離平衡的0度差了那么一個角度A,P=0.1時A較大,除非油門推到很大否則四周根本起不來,,這是P說明給小了,,我再將P=0.2這時四軸狀況無明顯改善。于是我直接將P加大一點P=0.8,P=0.8時已經(jīng)可以看出在等幅震蕩了,,但是不是在0度的平衡位置,,也是偏離的一個角度B,此時B較小了。之后我再加大P到1四軸震蕩又變大了,,但是到震蕩中心到零度的靜差還是存在。由于此時I=0,所以我決定不管這個靜差,,先把P的臨界震蕩點找到,。P=0.8時可以觀察到比較明顯的等幅震蕩了,P=0.2時四軸又顯得的無力,所以P應(yīng)該在0.2~0.8之間,。臨界震蕩點就是P從為震蕩到,,剛開始震蕩的點。

在這里還應(yīng)注意一點,,當(dāng)P太小時,,四軸在很大傾斜的地方,在重力與P的作用下也會震蕩,,這種震蕩不是等幅的,,也不是對稱的,震蕩波谷的絕對值明顯要比波峰絕對值大而且距離0度會很遠(yuǎn),。這種情況要加以區(qū)分,。

我把P從0.2到0.8開始嘗試,找到一個適合的點,,即剛開是出現(xiàn)震蕩的P值最后我定為0.5,。注:此時還是有靜差。
在以上過程中在一開始我一直想通過P來消除靜差,,但是我發(fā)現(xiàn)我把P加到很大,,已經(jīng)震蕩的很劇烈了,四軸的震蕩中心都不是在0度位置,。所以我只能選擇先選好P,D最后加入I來解決這個問題,。

P=0.5時四軸在他的穩(wěn)定位置震蕩比較小了,但是在外力干擾下很難在穩(wěn)定下來,,抗干擾能力較差,。然后我開始調(diào)D。
在平衡過程中P相當(dāng)于四軸的回復(fù)力,,它要努力時四軸在一個穩(wěn)定的平衡位置,,但這個位置不一定是你的期望點。個人認(rèn)為就是當(dāng)偏差不在變化時,,pid的輸出也沒有變化了,,所以有可能光用P時穩(wěn)定的位置不一定是平衡的期望的位置。而D是阻尼力,,他在四軸有速度的情況下才發(fā)揮作用,,它與速度方向相反始終是抑制運動。所以他可以抑制震蕩,,但是他同樣也可以抑制P的作用,,當(dāng)震動產(chǎn)生時,在震動的中心點四軸震動速度最大,,也是D作用最強(qiáng)的時刻,。

剛開始調(diào)D的時我就范了一個錯誤,。因為我改了D的標(biāo)準(zhǔn)型,而D應(yīng)該是抑制運動的,,但是陀螺儀輸出的數(shù)據(jù)符號導(dǎo)致我這里D變成了增加運動,,所以一開始無論我怎么調(diào)整D,都會激發(fā)震蕩。后來我在參數(shù)前加了個符號就好了,。在這里我提醒要始終注意D是阻尼力,,是其抑制震蕩也就是運動的作用的,它始終期望的是它所作用的對象沒有運動,,至于停在什么位置不是D所關(guān)心的,,那是P,I所關(guān)心的。所以直接用陀螺儀數(shù)據(jù)代替偏差的差得話就得注意下,。修正這個問題后加了D效果就比較明顯了,,四軸在外力的干擾先能明顯的有回復(fù)力且,能快速穩(wěn)定在平衡點了,,調(diào)D就是試,,當(dāng)然D大了也會產(chǎn)生震蕩,但是此時不加D時光P作用時的震蕩就很小,,很明顯就可以看出隨著D的增大,,震蕩減小又增大的過程。最后P=0.4,D=0.15,。

最后定好了P,D后我的四軸還是有靜差,,不能穩(wěn)定在期望的0點。網(wǎng)上有很多四軸只用PD,在這里我決定根據(jù)我的實際情況加入I,。調(diào)I的時候我先把積分限幅去掉,。然后從小往大加,當(dāng)調(diào)平衡時,,隨著油門的變大,,靜差應(yīng)該是越來小的。我將油門推到差不多快要將四軸推離地面的位置,,看I能不能消除靜差,。因為如果油門給小了,靜差較大,,調(diào)出來的I雖然能消除靜差但是I比較大,,在加油門時有可能也會產(chǎn)生超調(diào)震蕩。最后I要再能消除靜差又不產(chǎn)生震蕩,,個人認(rèn)為要近可能小,。最后加上合適的積分限幅。P:0.4,I:0.35,D:0.15,。
別忘了以上調(diào)試過程中每次都需要給予平衡一個干擾,,看看參數(shù)在外界干擾情況下做的如何,,會不會產(chǎn)生超調(diào)震蕩,會不會長時間才能穩(wěn)定,。以上就是我第一臺四軸的PID調(diào)試。

下面我講講我在調(diào)第二個X四軸過程中遇到的問題,。
第二架四軸是我做了用來參加愛板網(wǎng)的ARM-STM32校園比賽的,,因為第一架屬于學(xué)校了財產(chǎn)留在學(xué)校了,手里沒有,,只好再搞一個,。
第二架的配置采用的是飛越的650碳纖機(jī)架,電調(diào)用的是好贏的奔騰40A,電機(jī)同樣是新西達(dá)2212 1000kV,。主控是STM32F407
其實這個機(jī)架和電調(diào)配這個電機(jī)是大才小用了,,但是我的預(yù)算實在不夠了就只好買了個水一點的電機(jī),等以后再升級,。
這次我采用X型四軸,,主要是掛了云臺。PID的設(shè)計與之前講的一樣,,就不多說了直接說調(diào)試中遇到的問題,。

調(diào)試方法還是先調(diào)平衡桿,如圖:

剛開始調(diào)X的時候我以為跟十字的差不多,,于是我只是簡單的把原有PID參數(shù)按照新的程序里面的PWM值域縮放了一下倍數(shù),,但是發(fā)現(xiàn)不行,PID完全沒有起作用,。

具體表現(xiàn)為四軸開機(jī)后直往一邊倒到底,。只好重新開始調(diào)。
還是P=1,I=0,D=0開始,,這組參數(shù)我發(fā)現(xiàn),,開機(jī)后四軸往一邊倒,但是沒有倒下就起不來了,,而是在倒到一個很大的角度,,大概70度左右,電機(jī)力量像是突然加大,,四軸起來,,反向,接著倒向另外一邊,。進(jìn)入失控的大幅震蕩,。
因為一開始就倒,所以是P太小,。于是我開始加大P,但是當(dāng)我把P加到很大時,,四軸還是一開始往一邊倒,,然后電機(jī)力量增大,四軸翻倒向另外一邊,,開始發(fā)散性的震蕩,。此時我覺得開始P比較小的時候是P不足,電機(jī)的慣性的作用下開始震蕩,。到后來是P太大了,,直接進(jìn)入震蕩。我始終沒有觀察到一個等幅震蕩或者說接近小幅震蕩的點,。無論P大P小我的四軸都會進(jìn)入失控的發(fā)散震蕩,。換而言之這個X四軸光靠P根本進(jìn)入不不了一個比較穩(wěn)定的狀態(tài)或者接近穩(wěn)定的狀態(tài)。連相對穩(wěn)定的等幅震蕩都觀察不到就直接進(jìn)入發(fā)散的震蕩,。此時我開始困惑了,。這個情況跟十字的很不一樣。我沒有明顯觀察到網(wǎng)上流傳最通俗的調(diào)節(jié)PID說法的那種情況,,即:逐漸加大P直到開始發(fā)生等幅震蕩,,然后P不變,加入D抑制震蕩,。,。。
我觀察到的是P無論怎么給,,我的四軸都倒向一邊然后開始進(jìn)入發(fā)散的震蕩,,唯一的區(qū)別就是P小一開始倒下的角度大,P越大一開始倒下得角度越小,,進(jìn)入震蕩的越快,。此種情況與前一個四軸的情況截然不同。

當(dāng)我潛入困境時,,以為名叫螃蟹的網(wǎng)友幫助了我,。他告訴我定P要定在把手放開,開始震蕩,,只要左右晃二三次就達(dá)到大晃動幅度,,大晃動幅度大概是45度左右。定下這個P值后然后加入D,而且D有可能比P大,。在這個基礎(chǔ)上我又開始了調(diào)試,。

從頭來調(diào)P,這次我觀察到新現(xiàn)象。我把四軸稍微傾向一邊幾度,,比如說左邊,,當(dāng)P小時,啟動電機(jī)松手后,,四軸向左倒,,如果P大了,,四軸回向右倒。前者是補(bǔ)償不足,,后者是補(bǔ)償過度,。在這個兩個P值得區(qū)間就有我們要找的P,合適的P就是能在平衡位置掙扎左右晃幾下的值。此時我的P=3.0但是光靠P四軸還是站不住,,只能在平衡位置堅持個1,,2s。所以得加入D,嘗試D=1,2,3時沒什么明顯的效果只能觀察到起初的短時平衡跟穩(wěn)定了點,。D=10時可明顯觀察到平衡的時間跟長了,但還是會倒,。當(dāng)D=20,,可明顯觀察到四軸可以基本平衡了,但還是有有小幅震蕩,,一但有干擾還是不能很快恢復(fù)穩(wěn)定了,,D=30時四軸已經(jīng)開始比之前大的等幅震蕩了,而且當(dāng)有外力干擾時四軸也能抵抗住外力維持自身在平衡位置的震蕩狀態(tài),,說明D有起作用但是D大了,。在這種情況下還說明P還是給小了,回復(fù)力不足,。我把D定在25,,再開始調(diào)節(jié)P,把P加大。增強(qiáng)恢復(fù)力,。后面得的調(diào)節(jié)過程中我就是感覺,,P會產(chǎn)生一種震蕩A,這種A震蕩是會發(fā)散的,頻率較低,。D也會產(chǎn)生一種震蕩B,B是等幅的,,頻率較高的。然后P會抑制震蕩B,但會激發(fā)A,D會抑制震蕩A,但會激發(fā)B,。后面的調(diào)節(jié)參數(shù)就是要調(diào)好P后再調(diào)D,定好D再調(diào)節(jié)P,兩個參數(shù)互相扶持的趨近一個最佳點,,想單靠一個參數(shù)一次就接近理想值是辦不到的。當(dāng)然機(jī)體表現(xiàn)出的等幅震蕩時也不一定是D大了,,P不合適同樣也會產(chǎn)生此種情況,。還有調(diào)節(jié)參數(shù)時不要一味只加不減。當(dāng)我P=4,D=50時我就是將P往回減了點才取得了更好的效果,。最后離開平衡桿時P=3.5,D=50,。這次沒有靜差,所以沒有I項,。

最后來總結(jié)幾點:
1.我覺得調(diào)節(jié)PID首先要明白最基本PID三項的意義P是回復(fù)力是系統(tǒng)平衡的主力,,D是阻尼力,,始終是抑制作用,I雖然能使系統(tǒng)回復(fù)但是I大了容易激發(fā)震蕩,,所以I只能是輔助P
2.一般從P開始調(diào)節(jié)時候首先要找到臨界震蕩點,,要學(xué)會辨識系統(tǒng)臨界震蕩點的特點,不同系統(tǒng)臨界狀態(tài)可能不同,,在這一點上用曲線代替肉眼直接觀察效果好的多,。
3.P不一定就比D大,切不可經(jīng)驗主義,,一切遵循實際,,多嘗試可能性
4.調(diào)節(jié)PID最麻煩的就是會產(chǎn)生震蕩,只要參數(shù)不合適都會產(chǎn)生震蕩,,初學(xué)者往往心急不知如何下手,,其實是不同參數(shù)不合適而產(chǎn)生的震蕩都有所區(qū)別,要細(xì)心觀察,,最好是能看PID輸出,,被調(diào)量,設(shè)定值三者的曲線圖,,通過圖來對比特征曲線得出震蕩產(chǎn)生的原因,,關(guān)于曲線特征判別我推薦下面附件中的篇文獻(xiàn)。
5.調(diào)節(jié)參數(shù)是個令人蛋疼的活,,一定要心平氣和,,切莫急躁,多多嘗試,,我覺得一個平靜的心態(tài)是在調(diào)PID時很重要,,能讓你腦子清醒的看清問題。調(diào)參數(shù)很枯燥,,如果 你很煩或者很著急,,調(diào)不出來只會讓你更加煩躁,更迷糊,。還有就是耐心,,多試。參數(shù)選擇剛開始不知道大致范圍時參數(shù)嘗試變化范圍可以大一點,。確定范圍后就要耐心的一點點的加,。
6.以上所言都是針對位置式PID,增量式PID三組參數(shù)所起作用與位置式大相徑庭,不可套用,。
7.多與人交流,,在這里再次感謝指導(dǎo)我的諸多網(wǎng)友
8.調(diào)節(jié)PID最好能看曲線圖,判別特征曲線,又曲線來看特征比直接看物體表現(xiàn)好得多

然后貼上我認(rèn)為對我?guī)椭容^大的兩個PID資料,,一個講PID基本定義,,一個講PID參數(shù)整定

貼上兩個個調(diào)試的視頻:
第一個是十字的,
PID輸入:姿態(tài)角,,角速度,,單位:角度和度每秒;PID輸出PWM寬度:250-500,,P:0.4,I:0.35,D:0.15, 控制周期4ms,PWM頻率125hz
http://v.youku.com/v_show/id_XNjE3NjI3OTY4.html
第二個是X型的,,
PID輸入:姿態(tài)角,角速度,,單位:角度和度每秒,;PID輸出PWM寬度:1000-2000,P:3.5,D:50,控制周期4ms,,PWM頻率125hz
http://v.youku.com/v_show/id_XNjE3MTcyODQw.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多