找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 6865|回復(fù): 7
收起左側(cè)

分享一套關(guān)于調(diào)四軸PID的帖子

  [復(fù)制鏈接]
ID:200281 發(fā)表于 2017-5-16 17:41 | 顯示全部樓層 |閱讀模式
之前在網(wǎng)上看到的,覺(jué)得不錯(cuò),就拿出來(lái)和大家分享一下


話(huà)不多說(shuō)

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


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

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

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

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

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

最后定好了P,D后我的四軸還是有靜差,不能穩(wěn)定在期望的0點(diǎn)。網(wǎng)上有很多四軸只用PD,在這里我決定根據(jù)我的實(shí)際情況加入I。調(diào)I的時(shí)候我先把積分限幅去掉。然后從小往大加,當(dāng)調(diào)平衡時(shí),隨著油門(mén)的變大,靜差應(yīng)該是越來(lái)小的。我將油門(mén)推到差不多快要將四軸推離地面的位置,看I能不能消除靜差。因?yàn)槿绻烷T(mén)給小了,靜差較大,調(diào)出來(lái)的I雖然能消除靜差但是I比較大,在加油門(mén)時(shí)有可能也會(huì)產(chǎn)生超調(diào)震蕩。最后I要再能消除靜差又不產(chǎn)生震蕩,個(gè)人認(rèn)為要近可能小。最后加上合適的積分限幅。P:0.4,I:0.35,D0.15。
別忘了以上調(diào)試過(guò)程中每次都需要給予平衡一個(gè)干擾,看看參數(shù)在外界干擾情況下做的如何,會(huì)不會(huì)產(chǎn)生超調(diào)震蕩,會(huì)不會(huì)長(zhǎng)時(shí)間才能穩(wěn)定。以上就是我第一臺(tái)四軸的PID調(diào)試。
下面我講講我在調(diào)第二個(gè)X四軸過(guò)程中遇到的問(wèn)題。
第二架四軸是我做了用來(lái)參加愛(ài)板網(wǎng)的ARM-STM32校園比賽的,因?yàn)榈谝患軐儆趯W(xué)校了財(cái)產(chǎn)留在學(xué)校了,手里沒(méi)有,只好再搞一個(gè)。
第二架的配置采用的是飛越的650碳纖機(jī)架,電調(diào)用的是好贏的奔騰40A,電機(jī)同樣是新西達(dá)2212 1000kV。主控是STM32F407
其實(shí)這個(gè)機(jī)架和電調(diào)配這個(gè)電機(jī)是大才小用了,但是我的預(yù)算實(shí)在不夠了就只好買(mǎi)了個(gè)水一點(diǎn)的電機(jī),等以后再升級(jí)。
這次我采用X型四軸,主要是掛了云臺(tái)。PID的設(shè)計(jì)與之前講的一樣,就不多說(shuō)了直接說(shuō)調(diào)試中遇到的問(wèn)題。

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


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

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

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

從頭來(lái)調(diào)P,這次我觀察到新現(xiàn)象。我把四軸稍微傾向一邊幾度,比如說(shuō)左邊,當(dāng)P小時(shí),啟動(dòng)電機(jī)松手后,四軸向左倒,如果P大了,四軸回向右倒。前者是補(bǔ)償不足,后者是補(bǔ)償過(guò)度。在這個(gè)兩個(gè)P值得區(qū)間就有我們要找的P,合適的P就是能在平衡位置掙扎左右晃幾下的值。此時(shí)我的P=3.0但是光靠P四軸還是站不住,只能在平衡位置堅(jiān)持個(gè)1,2s。所以得加入D,嘗試D=1,2,3時(shí)沒(méi)什么明顯的效果只能觀察到起初的短時(shí)平衡跟穩(wěn)定了點(diǎn)。D=10時(shí)可明顯觀察到平衡的時(shí)間跟長(zhǎng)了,但還是會(huì)倒。當(dāng)D=20,可明顯觀察到四軸可以基本平衡了,但還是有有小幅震蕩,一但有干擾還是不能很快恢復(fù)穩(wěn)定了,D=30時(shí)四軸已經(jīng)開(kāi)始比之前大的等幅震蕩了,而且當(dāng)有外力干擾時(shí)四軸也能抵抗住外力維持自身在平衡位置的震蕩狀態(tài),說(shuō)明D有起作用但是D大了。在這種情況下還說(shuō)明P還是給小了,回復(fù)力不足。我把D定在25,再開(kāi)始調(diào)節(jié)P,P加大。增強(qiáng)恢復(fù)力。后面得的調(diào)節(jié)過(guò)程中我就是感覺(jué),P會(huì)產(chǎn)生一種震蕩A,這種A震蕩是會(huì)發(fā)散的,頻率較低。D也會(huì)產(chǎn)生一種震蕩B,B是等幅的,頻率較高的。然后P會(huì)抑制震蕩B,但會(huì)激發(fā)A,D會(huì)抑制震蕩A,但會(huì)激發(fā)B。后面的調(diào)節(jié)參數(shù)就是要調(diào)好P后再調(diào)D,定好D再調(diào)節(jié)P,兩個(gè)參數(shù)互相扶持的趨近一個(gè)最佳點(diǎn),想單靠一個(gè)參數(shù)一次就接近理想值是辦不到的。當(dāng)然機(jī)體表現(xiàn)出的等幅震蕩時(shí)也不一定是D大了,P不合適同樣也會(huì)產(chǎn)生此種情況。還有調(diào)節(jié)參數(shù)時(shí)不要一味只加不減。當(dāng)我P=4,D=50時(shí)我就是將P往回減了點(diǎn)才取得了更好的效果。最后離開(kāi)平衡桿時(shí)P=3.5,D=50。這次沒(méi)有靜差,所以沒(méi)有I項(xiàng)。
最后來(lái)總結(jié)幾點(diǎn):
1.我覺(jué)得調(diào)節(jié)PID首先要明白最基本PID三項(xiàng)的意義P是回復(fù)力是系統(tǒng)平衡的主力,D是阻尼力,始終是抑制作用,I雖然能使系統(tǒng)回復(fù)但是I大了容易激發(fā)震蕩,所以I只能是輔助P
2.一般從P開(kāi)始調(diào)節(jié)時(shí)候首先要找到臨界震蕩點(diǎn),要學(xué)會(huì)辨識(shí)系統(tǒng)臨界震蕩點(diǎn)的特點(diǎn),不同系統(tǒng)臨界狀態(tài)可能不同,在這一點(diǎn)上用曲線(xiàn)代替肉眼直接觀察效果好的多。
3.P不一定就比D大,切不可經(jīng)驗(yàn)主義,一切遵循實(shí)際,多嘗試可能性
4.調(diào)節(jié)PID最麻煩的就是會(huì)產(chǎn)生震蕩,只要參數(shù)不合適都會(huì)產(chǎn)生震蕩,初學(xué)者往往心急不知如何下手,其實(shí)是不同參數(shù)不合適而產(chǎn)生的震蕩都有所區(qū)別,要細(xì)心觀察,最好是能看PID輸出,被調(diào)量,設(shè)定值三者的曲線(xiàn)圖,通過(guò)圖來(lái)對(duì)比特征曲線(xiàn)得出震蕩產(chǎn)生的原因,關(guān)于曲線(xiàn)特征判別我推薦下面附件中的篇文獻(xiàn)。
5.調(diào)節(jié)參數(shù)是個(gè)令人蛋疼的活,一定要心平氣和,切莫急躁,多多嘗試,我覺(jué)得一個(gè)平靜的心態(tài)是在調(diào)PID時(shí)很重要,能讓你腦子清醒的看清問(wèn)題。調(diào)參數(shù)很枯燥,如果你很煩或者很著急,調(diào)不出來(lái)只會(huì)讓你更加煩躁,更迷糊。還有就是耐心,多試。參數(shù)選擇剛開(kāi)始不知道大致范圍時(shí)參數(shù)嘗試變化范圍可以大一點(diǎn)。確定范圍后就要耐心的一點(diǎn)點(diǎn)的加。
6.以上所言都是針對(duì)位置式PID,增量式PID三組參數(shù)所起作用與位置式大相徑庭,不可套用。
7.多與人交流,在這里再次感謝指導(dǎo)我的諸多網(wǎng)友
8.調(diào)節(jié)PID最好能看曲線(xiàn)圖,判別特征曲線(xiàn),又曲線(xiàn)來(lái)看特征比直接看物體表現(xiàn)好得多

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:193254 發(fā)表于 2017-6-2 11:56 | 顯示全部樓層
很詳細(xì),跟我的調(diào)法有點(diǎn)像
回復(fù)

使用道具 舉報(bào)

ID:267230 發(fā)表于 2018-2-3 18:29 | 顯示全部樓層
很詳細(xì),經(jīng)驗(yàn)可以借鑒,謝謝。
回復(fù)

使用道具 舉報(bào)

ID:350791 發(fā)表于 2018-8-3 15:41 | 顯示全部樓層
感謝樓主,很好的資料
回復(fù)

使用道具 舉報(bào)

ID:398465 發(fā)表于 2020-3-18 16:40 | 顯示全部樓層
mark一下
回復(fù)

使用道具 舉報(bào)

ID:728202 發(fā)表于 2020-10-25 21:27 | 顯示全部樓層
正在調(diào)試,收藏了
回復(fù)

使用道具 舉報(bào)

ID:664831 發(fā)表于 2021-11-17 14:11 | 顯示全部樓層
很詳細(xì),先收藏,以后用到了再慢慢看
回復(fù)

使用道具 舉報(bào)

ID:1053052 發(fā)表于 2022-11-20 23:25 | 顯示全部樓層
先收藏 回頭來(lái)看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表