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