四旋翼的控制流程:控制中心單片機(jī)通過(guò)IMU陀螺儀加速度計(jì)(MPU6050等等)獲取四旋翼的角度(俯仰、橫滾和偏航)的相對(duì)基準(zhǔn)角度變化、然后濾波(卡爾曼濾波等等)處理獲得方向余弦矩陣和四元數(shù)得到歐拉角、使用PID控制或者PI,PD控制(P比例I積分D微分)將系統(tǒng)反饋值和期望值進(jìn)行比較、并根據(jù)偏差不斷修復(fù)、直至達(dá)到期望的預(yù)定值。
通過(guò)PID自動(dòng)控制算法處理、輸出期望的PWM波給四個(gè)電調(diào)、控制四個(gè)無(wú)刷電機(jī)的轉(zhuǎn)速、從而得到一個(gè)期望的力控制四旋翼的前后左右上下飛行。
PID算法的含義:對(duì)四軸而言,PID算法是用來(lái)計(jì)算馬達(dá)的動(dòng)力大小,來(lái)抵消誤差的。P的作用是加快系統(tǒng)達(dá)到預(yù)期的速度;I的作用是消除凈差;D有阻尼的作用、就是阻止系統(tǒng)突變。
1、P直接和誤差關(guān)聯(lián),比如四軸傾斜X度,P的調(diào)控效果=P*X個(gè)單位的力量。PID算法中,P是最主要最基本的參數(shù)。
2、I則和誤差的積分有關(guān)。舉個(gè)例子,如果寫(xiě)一個(gè)P控,控制一個(gè)電爐加熱到400度,當(dāng)前溫度是室溫,那剛開(kāi)始誤差=(設(shè)定溫度-當(dāng)前溫度)很大,電爐就嘩嘩的加熱上去了,但是到了390度,誤差才10度了,加熱功率變小了,可是呢,由于這個(gè)電爐會(huì)散熱,結(jié)果單純用P控,溫度怎么也上不到400度。這時(shí),I控就可以幫助適當(dāng)調(diào)大一些功率,直到正好400度。那怎么實(shí)現(xiàn)的呢,用誤差積分乘以I,如果老是溫度不到400度,誤差的積分就會(huì)越來(lái)越大,I調(diào)控的效果=I*誤差的積分,也就越來(lái)越大。
3、D和誤差糾正的速度有關(guān),D和P相比,就像汽車(chē)避震里的油壓阻尼和彈簧,汽車(chē)彈簧碰到一個(gè)減速帶,就會(huì)受壓,反彈,此時(shí)如果沒(méi)有阻尼,車(chē)子就會(huì)不停的上下振動(dòng)。而油壓阻尼則防止彈簧不停振動(dòng)。因此D值越大,意味著阻尼越大,四軸不容易因?yàn)镻而振動(dòng),但P的效果就會(huì)變差。D調(diào)控的效果=D*誤差的微分。
4、把三個(gè)數(shù)值的調(diào)控效果加起來(lái),就是總的調(diào)控效果