四軸飛行討論飛控算法_第1頁
四軸飛行討論飛控算法_第2頁
四軸飛行討論飛控算法_第3頁
四軸飛行討論飛控算法_第4頁
四軸飛行討論飛控算法_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

qidian|我的|設(shè)置|消息|提醒|退出積分:53 |用戶組:會員導(dǎo) 首 全部帖匯 技術(shù)帖匯 非技術(shù)匯 電子郵 紅酒批發(fā) 快捷導(dǎo)返回列 熱搜:凈化器雕刻機(jī)郵購模具 四軸飛行討論:飛控算法討返回列查看:68306回復(fù):

/5 下 于2009570:47:34|只看該作 樓電梯直 飛幣發(fā)消

我個人覺得如果先解決程序算法問題是關(guān)鍵!知道了飛控控制原型,那樣選現(xiàn)在什么都沒弄明白,絕大多數(shù)人(真正看過源碼,寫過算法的人就不說了)都是 的憑感覺選開個算法討論帖吧!相信現(xiàn)在很多高手都已經(jīng)把源碼消化的差不多了!說說的感想,整個程序的框架等等個人想法~應(yīng)該改名了~感謝各位大蝦!現(xiàn)在柳暗花明了#在這里快速回復(fù)收藏

公益:使用360產(chǎn)品將會被ID。周槍斃萬次也無法彌補(bǔ)372犯下的罪行于2009570:49:37|只看該作 2支積

飛幣高級會發(fā)消

公益:新時,務(wù)必起個能說明帖子內(nèi)容的清晰標(biāo)題,否則將會被ID(點(diǎn)擊查看詳細(xì)說明于2009570:55:35|只看該作 3按照我現(xiàn)在對MK的代碼的理解,我的四軸穩(wěn)定性已經(jīng)達(dá)到LAA的程度了,對MK的這部分代碼我也差不多明白了。其實(shí)選型,般都可以做到這種程度,就有幾點(diǎn)要注意。個是姿態(tài)控制MCU的處理速度,MK的可是工作在500Hz,我 前是 前的版本最大是400Hz,UAVPNG的是000Hz,所

個強(qiáng)大的處理器還是需要的。有必要的話需要多處理器協(xié)同工作飛積中飛積中級會發(fā)消另外就是電調(diào),用I2C電調(diào)才能做出好效果。至于馬達(dá)槳,850KV的和000KV的看不出差別,0英寸GWS3葉槳不但能飛好,而且至比9英寸的還好其它部分沒有什么特殊的,甚至機(jī)架重心不對稱都沒關(guān)至于傳感器,最最低檔的 03也足夠了,配合便宜的ADXL330也可以達(dá)到好效果公: 不得使用宣傳Q群。有討論請 里進(jìn)行。違者 于2009572:30:35|只看該作4支持0積飛會員發(fā)消 公 招聘帖子需要繳費(fèi),有需要可以聯(lián) 工作人:379于2009573:34:9|只看該作 5看了很久的貼了,發(fā)現(xiàn)能說在點(diǎn)子的少之又少2積新手發(fā)消20飛對搞的這個開發(fā)能夠脫離玩具層,取得完全成功持極其悲觀態(tài)度 公 只能發(fā)在 區(qū),否則ID于2009573:47:2|只看該作 6to不知你對MK的加速度感測與陀螺感測整合以及控制的coupling修正有深入了解 2積新手發(fā)消80飛可不可以稍下因?yàn)槲易龅胶竺孢€是覺得這兩個東本與的,如雕刻機(jī)PCB空氣凈化器于2009574:07:52|只看該作 7【5樓】前我參考K的算法已經(jīng)取得比較好的效果了。0 中級會發(fā)消

樓主

于2009574:52:05|只看該作 8我 貼出來吧~也不能算很好!只是其中個版本,可以說是后續(xù)版本的雛形吧大蝦們盡管拍磚~俺拋磚引玉會發(fā)消

OG//==============AD測量平均值if(MessanzahlNick)(MesswertNick=AccumulateNick/MessanzahlNick);if(MessanzahlRoll)(MesswertRoll=AccumulateRoll/MessanzahlRoll);if(MessanzahlGier)(MesswertGier=AccumulateGier/MessanzahlGier); ick)Mitwert ick=((long)Mitwert ick*7+((ACCAMPLIFY*(long)accumulate ick))/8L;if(messanzahlAccRoll)MitwertAccRoll=((long)MitwertAccRoll*7+((ACCAMPLIFY*(long)accumulateAccRoll)/messanzahlAccRoll))/8L;if(messanzahlAccHoch)MitwertAccHoch=((long)MitwertAccHoch*7+((long)accumulateAccHoch)/messanzahlAccHoch)/8L;AccumulateNick=0;MessanzahlNick=AccumulateRoll=0;MessanzahlRoll=AccumulateGier=0;MessanzahlGier=0; ick=0;messanzahl accumulateAccHoch=0;messanzahlAccHoch=//============AD里直接積分IntegralGier=MessIntegralIntegralGier2MessIntegralGier2;//待修改測試IntegralNick=MessIntegralNick;IntegralRoll=MessIntegralRoll;IntegralNick2=MessIntegralNick2;IntegralRoll2=MessOG if(MesswertNick>200)MesswertNick+=4*(MesswertNickelseif(MesswertNick<200)MesswertNick+=4*(MesswertNick+if(MesswertRoll>200)MesswertRoll+=4*(MesswertRollelseif(MesswertRoll<200)MesswertRoll+=4*(MesswertRoll+GRN//陀螺儀漂移補(bǔ)#defineDRIFTFAKTOR //漂移因if(ZaehlMessungen>=000/DRIFTFAKTOR)//AD轉(zhuǎn)換次數(shù)次數(shù)大于333次,約{IntegralFehlerNickIntegralNick2IntegralNick;//?這里是0么?//積分偏差I(lǐng)ntegralFehlerRollIntegralRoll2IntegralRoll;//待修改ZaehlMessungen=0;//轉(zhuǎn)換次if(IntegralFehlerNick>500/DRIFTFAKTOR)AdNeutralNick++;if(IntegralFehlerNick<500/DRIFTFAKTOR)AdNeutralNick;if(IntegralFehlerRoll>500/DRIFTFAKTOR)AdNeutralRoll++;if(IntegralFehlerRoll<500/DRIFTFAKTOR)AdNeutralRoll;if(MessIntegralGier2>500/DRIFTFAKTOR)AdNeutralGier;if(MessIntegralGier2<500/DRIFTFAKTOR)AdNeutralGier++;OGMessIntegralNick2=IntegralNick;//?MessIntegralRoll2=IntegralRoll;MessIntegralGier2=IntegralGier;OG}#defineGyroAccFaktor26tmplong=(long)(IntegralNick/GyroAccFaktor(long)Mittmplong2=(long)(IntegralRoll/

ick)/6;#defineAUSGLEICH500//補(bǔ)償參if(tmplong>AUSGLEICH)tmplong=AUSGLEICH;if(tmplong<AUSGLEICH)tmplong=AUSGLEICH;if(tmplong2>AUSGLEICH)tmplong2=AUSGLEICH;if(tmplong2<AUSGLEICH)tmplong2=OGMessIntegralRoll=tmpOG 于2009572:37:24|只看該作 9首先我們使用V07hCodeRedesignkillagreg的代碼,這個代碼基本都是英文變量名和注釋,看起來容易些。所有里。這個代碼可以在MK的CVS中免費(fèi)下到,位于branches錄下。

的姿態(tài)控制都在fcc文積中級會

MK的融合代碼主要做了3件事 件是即時融合,就是實(shí)時地根據(jù)加速度計(jì)的數(shù)值反推出陀螺儀積分應(yīng)有的數(shù)值,然后根據(jù)當(dāng)前的陀螺儀積分進(jìn)行調(diào)整第二件是長期融合,在代碼里它用05秒的時間 加速度計(jì)的數(shù)據(jù),然后到05秒時對這些數(shù)據(jù)進(jìn)行平均,依此來得到個相對穩(wěn)定的加速度計(jì)數(shù)值。根據(jù)這個數(shù)值來相對準(zhǔn)確地知道四軸這05秒的姿態(tài),然后再修整調(diào)整量,做到自動穩(wěn)定到平衡位置。發(fā)消

第三件是根據(jù)調(diào)整量的大小,決定是否需要修改陀螺儀中立點(diǎn)。這部分我前還搞不太明白,所以先暫且不提。有前2部分已經(jīng)可以做到讓四軸下面結(jié)合代碼來詳細(xì)解說首先是即時融合的代碼,位于fcc的890行開始if( Nick&& Roll)//ifnot inany{if(FCParamKalmanK=){//determinethedeviationofgyrointegralfromaveragedaccelerationtmplong=(int32t)(IntegralNick/ParamSetGyroAccFactor(int32t)Mean tmplong=(tmplong*FCParamKalmanK)/(32*6);tmplong2=(int32t)(IntegralRoll/ParamSetGyroAccFactor(int32t)MeanAccRoll);tmplong2=(tmplong2*FCParamKalmanK)/(32*6);if((MaxStickNick>64)||(MaxStickRoll>64))//reduceeffectduringstick{tmplong/=2;tmplong2/=}if(abs(PPMin[ParamSetChannelAssignment[CHYAW]])>25)//reducefurtherifyawstickis{tmplong/=3;tmplong2/=}}{

//limitcorrectionif(tmplong>(int32t)FCParamKalmanMaxFusion)tmplong=(int32t)FCParamKalmanMaxFusion;if(tmplong<(int32t)FCParamKalmanMaxFusion)tmplong=(int32t)FCParamKalmanMaxFusion;if(tmplong2>(int32t)FCParamKalmanMaxFusion)tmplong2=(int32t)FCParamKalmanMaxFusion;if(tmplong2<(int32t)FCParamKalmanMaxFusion)tmplong2=(int32t)FCParamKalmanMaxFusion;//determinethedeviationofgyrointegralfromaveragedaccelerationtmplong=(int32t)(IntegralNick/ParamSetGyroAccFactor(int32t)Mean tmplong/=6;tmplong2=(int32t)(IntegralRoll/ParamSetGyroAccFactor(int32t)Meantmplong2/=if((MaxStickNick>64)||(MaxStickRoll>64))//reduceeffectduringstick{tmplong/=3;tmplong2/=}if(abs(PPMin[ParamSetChannelAssignment[CHYAW]])>25)//reducefurtherifyawstickis{tmplong/=3;tmplong2/=}#defineBALANCE//limitcorrectionif(tmplong>BALANCE)tmplong=BALANCE;if(tmplong<BALANCE)tmplong=BALANCE;if(tmplong2>BALANCE)tmplong2=BALANCE;if(tmplong2<BALANCE)tmplong2=BALANCE;}//correctcurrentReadingIntegralGyroNick=tmplong;ReadingIntegralGyroRoll=tmp}重點(diǎn)地部分是

//determinethedeviationofgyrointegralfromaveragedaccelerationtmplong=(int32t)(IntegralNick/ParamSetGyroAccFactor(int32t)Mean tmplong/=6;tmplong2=(int32t)(IntegralRoll/ParamSetGyroAccFactor(int32t)MeanAccRoll);tmplong2/=6;if((MaxStickNick>64)||(MaxStickRoll>64))//reduceeffectduringstick{tmplong/=3;tmplong2/=}if(abs(PPMin[ParamSetChannelAssignment[CHYAW]])>25)//reducefurtherifyawstickis{tmplong/=3;tmplong2/=}#defineBALANCE//limitcorrectionif(tmplong>BALANCE)tmplong=BALANCE;if(tmplong<BALANCE)tmplong=BALANCE;if(tmplong2>BALANCE)tmplong2=BALANCE;if(tmplong2<BALANCE)tmplong2=BALANCE;}//correctcurrentReadingIntegralGyroNick=tmplong;ReadingIntegralGyroRoll=tmp首先,MK根據(jù)ntegNck變量(這個變量是當(dāng)前陀螺儀的積分值),利用PmSetGyoAcccto(這個是個設(shè)置值,用來標(biāo)定加速度計(jì)變化,陀螺儀積分應(yīng)該變化多少),得出在前的陀螺儀積分下,對應(yīng)的加速度計(jì)的偏差量應(yīng)該是多少。然后用這個值減去現(xiàn)在的加速度計(jì)數(shù)值,得到的就是當(dāng)前從加速度計(jì)角度“看到”的陀螺儀積分偏差。下面的/6用來對這個值進(jìn)行衰減。在下面如果有 操作(MaxStickNick>64)那么還要更進(jìn)步衰減,甚至Z軸有操作也要再衰減。最后對這個偏差值進(jìn)行限幅,避免絕對值超過BALANCE的大小。剩下的就只要把修正值修正到陀螺儀積分里就完成了,ReadingIntegralGyroNick就是陀螺儀的積分??雌饋磉@個代碼比較容易理解,不過這里有兩點(diǎn)需要注意的儀積分呢?2者似乎是風(fēng)馬牛不相及。不過這里這2者還是有關(guān)系的,PmSetGyoAccctoK這么做可以將調(diào)整量縮小。二是這個調(diào)整量很小,本來加速度計(jì)的變化量就很小了,又除了6,甚至還要再除3。最后還能剩多少???實(shí)際情況是剩的確實(shí)不多,我的四軸數(shù)據(jù)測量后,這個調(diào)整值般也就是3左右,沒有看到超過5的。而陀螺儀積分隨便就幾百去了,這點(diǎn)根本不算什么。這么說起來,大家可能對這個調(diào)整量的效率產(chǎn)生疑問。確實(shí),這個調(diào)整量是很慢。我在我的四軸實(shí)際測量過,按照400Hz的陀螺儀積分頻率,那么大家肯定又有疑問了,這么慢的調(diào)整速度,怎么能實(shí)現(xiàn)穩(wěn)定呢?這就是MK的高明之處。俗話說“四兩撥千斤”,用在這里還是很合適的。 的50Hz,也不是00Hz,而是高達(dá)500Hz??梢栽趍ainc里查找變量UpdateMotor,可以看到注釋“resetFlag,isenabledevery2msbyisroftimer0”,沒有錯,就是2ms觸發(fā)次。在Timer0c的ISR(TIMER0OVFvect)里,還可以看到注釋“every2ndrun(976Hz/2=488Hz)”,這就是它的執(zhí)行頻率。心細(xì)的人肯定又會繼續(xù)產(chǎn)生疑問,為什么要這么快?有必要這么快嗎?000KV的馬達(dá),3S電池,分鐘最多也就是2000轉(zhuǎn),換算成秒秒最多也就轉(zhuǎn)200圈。500Hz的調(diào)整頻率難道轉(zhuǎn)025圈就換個轉(zhuǎn)速嗎?實(shí)際情況是這樣的首先大家都明白機(jī)械振動對于四軸姿態(tài)調(diào)整的干擾,如果完全沒有機(jī)械振動,那么想讓四軸飛穩(wěn)會比現(xiàn)在簡單很多倍。但既然不可能完全避免,那么我們就必須想辦法來克服它。于是就有我以前采用的移動平均或類似的算法。但這些算法都有個缺點(diǎn),如果想要狀態(tài)準(zhǔn)確,不可避免地就會造成響應(yīng)速度低。反過來響應(yīng)速度高則抗效果就不會好。這是對,對讓人頭大的。MK也有這個問題,于是他們想到了個非常巧妙的解決方法。既然馬達(dá)轉(zhuǎn)速不可能無限快,那么完全可以通過提高控制頻率來應(yīng)對。與其過濾,不如加快速度跟 ,將引起的錯誤數(shù)據(jù)也當(dāng)作正確的來處理,反正到馬達(dá)端會被消除的,因?yàn)闄C(jī)械大都是往復(fù)的。而既然明白了加快調(diào)整的原因,那么對于弱化加速度計(jì)的調(diào)整量也就不難理解了。加速度計(jì)對于 實(shí)在太敏感了,對于基本沒做處理(實(shí)際是加速度計(jì)的數(shù)據(jù)只有個移動期為2的移動平均,就是保留個歷史數(shù)據(jù)然后和新數(shù)據(jù)相加除2)的加速度計(jì)數(shù)據(jù),如果調(diào)整量大了,勢必造成陀螺儀積分變化非常大,個顯而易見的結(jié)果就是引起四軸振蕩。實(shí)際測試也是如此。雖 面說了這么多 大家還是不完全明白有了這部分代碼后能做到什么。下面就來說說這段代碼的效果有了這些代碼后,設(shè)置好合適的I,關(guān)掉P,拿起四軸,讓個軸傾斜,你會在傾斜的同時感覺到這個軸的馬達(dá)轉(zhuǎn)速快速提升,和你的傾斜動作完正確的融合結(jié)果是四軸的每個軸都可以直保持這種“反抗精神”。不管你傾斜多久,不管你傾斜角度有多大都不會“放棄”。而且當(dāng)你基本回到平 如果融合有問題,有可能馬達(dá)反 會兒就放棄了,然后按照當(dāng)前的傾斜位置作為新的平衡位置。或 震蕩,造成四軸晃動為了引出下面的算法,現(xiàn)在請你將四軸小幅度傾斜試驗(yàn)的結(jié)果,是不是在小幅度的時候,馬達(dá)基本沒有加速的動作?原因并不是你代碼弄錯了,而是這種平衡策略的天生缺陷。由于這種平衡需要通過陀螺儀積分也就是絕對傾斜角度來調(diào)整馬達(dá)轉(zhuǎn)速,總有個情if(MeasurementCounter>=BALANCENUMBER)//averagingnumberhas{staticint6tcnt=staticint8tlastnp,lastnn,lastrp,lastrstaticint32tMeanIntegralNickold,MeanIntegralRoll//ifnot inanydirection(thisshouldbealwaisthe//becausetheMeasurementcounterisresetto0ifloo inanydirectionisactive)if(Loo Nick&&Loo Roll&&FunnelCourse){//CalculatemeanvalueofthegyrointegralsMeanIntegralNick/=BALANCENUMBER;MeanIntegralRoll/=BALANCE//Calculatemeanoftheaccelerationick=(ParamSetGyroAccFactor* ick)/BALANCENUMBER;IntegralAccRoll=(ParamSetGyroAccFactor*IntegralAccRoll)/BALANCE//Nick//CalculatedeviationoftheaveragedgyrointegralandtheaveragedaccelerationintegralIntegralErrorNick=(int32t)(MeanIntegralNick(int32t) CorrectionNick=IntegralErrorNick/ParamSetGyroAccTrim;AttitudeCorrectionNick=CorrectionNick/BALANCE//Roll//CalculatedeviationoftheaveragedgyrointegralandtheaveragedaccelerationintegralIntegralErrorRoll=(int32t)(MeanIntegralRoll(int32t)IntegralAccRoll);CorrectionRoll=IntegralErrorRoll/ParamSetGyroAccTrim;AttitudeCorrectionRoll=CorrectionRoll/BALANCENUMBER;if(((MaxStickNick>64)||(MaxStickRoll>64)||(abs(PPMin[ParamSetChannelAssignment[CHYAW]])>25))&&(FCParamKalmanK==)){AttitudeCorrectionNick/=AttitudeCorrectionRoll/=}部分

MeanIntegralNick/=BALANCENUMBER;MeanIntegralRoll/=BALANCENUMBER;//Calculatemeanoftheaccelerationick=(ParamSetGyroAccFactor* ick)/BALANCENUMBER;IntegralAccRoll=(ParamSetGyroAccFactor*IntegralAccRoll)/BALANCE//Nick//CalculatedeviationoftheaveragedgyrointegralandtheaveragedaccelerationintegralIntegralErrorNick=(int32t)(MeanIntegralNick(int32t) CorrectionNick=IntegralErrorNick/ParamSetGyroAccTrim;AttitudeCorrectionNick=CorrectionNick/BALANCE//Roll//CalculatedeviationoftheaveragedgyrointegralandtheaveragedaccelerationintegralIntegralErrorRoll=(int32t)(MeanIntegralRoll(int32t)IntegralAccRoll);CorrectionRoll=IntegralErrorRoll/ParamSetGyroAccTrim;AttitudeCorrectionRoll=CorrectionRoll/BALANCENUMBER;if(((MaxStickNick>64)||(MaxStickRoll>64)||(abs(PPMin[ParamSetChannelAssignment[CHYAW]])>25))&&(FCParamKalmanK==)){AttitudeCorrectionNick/=AttitudeCorrectionRoll/=} ick是加速度計(jì)的積分總合,是經(jīng)過BALANCENUMBER次姿態(tài)調(diào)整累加下來的。ParamSetGyroAccFactor依舊是那個關(guān)鍵的系數(shù)。代碼首先將陀螺儀積分求平均,得到個平均值。同樣對加速度計(jì)的積分也進(jìn)行了這樣的處理,只是代碼里K的陀螺儀積分后再求得平均。于是下面就是2個陀螺儀積分的對比了,和面的算法有些不同。在下面的代碼就更好懂了,先求出這2個積分的差異,然后利用ParamSetGyroAccTrim縮小,最后再除以BALANCENUMBER,小到點(diǎn)點(diǎn)的地 操作情況下再度進(jìn)行衰減。在我的四軸,這個調(diào)整量基本小于0,有時候甚至都是0000XXX的級別。為什么要這么???原因就是變量AttitudeCorrectionNick的應(yīng)用是每次積分都用到了(fcc的37行, ReadingIntegralGyroNick+=ReadingGyroNickAttitudeCorrectionNick;),所以如果大了,那么下子就大幅度改變了陀螺儀積分,引起麻煩這里有個隱含的疑問,既然edngntegGyoNck每次都有進(jìn)行過調(diào)整,那么和第種算不會呢?實(shí)際情況不會。因?yàn)榈诜N調(diào)整雖然調(diào)整量比第二種大很多倍,而且調(diào)整速度也非??欤铀俣扔?jì)的數(shù)據(jù)雖然長期看來確實(shí)可以反映出四軸的姿態(tài),而在/500秒看來基本可以算是隨機(jī)的。所以有很大情況這2種調(diào)整量不會互相覆蓋。從圖表角度看,隨著四軸的傾斜,陀螺儀積分也隨之水漲船高,轉(zhuǎn)速自然就去了。有了這2部分代碼以后,四軸基本可以自己做到自主懸停了

于2009572:39:09|只看該作 0ourdev440208rar(文件大小:2 ;(原文件名:V07 ;killagreg 積

飛中級會發(fā)消

于2009572:43:27|只看該作 【5樓】積

控。所以控制部分我前還沒有太過仔細(xì)看。中級會發(fā)消 樓主 于2009572:48:57|只看該作 2強(qiáng)頂!cnmusic,你讓我有 了!贊個天天關(guān)注中 積 飛會發(fā)消 于2009572:5 |只看該作 3【樓】wygood我是軟件出身的,而且自己實(shí)際做過,自然能有積

飛中級會發(fā)消 于20095722:52:33|只看該作 4【8樓】積

語驚醒夢中人啊,諸多的困惑和不解迎刃而開,沿著你的思路往下走,暗花明,天高云淡,思路豁然開朗。cnmusic辛苦了,金牌會發(fā)消 于20095723:34:36|只看該作 5【8樓】cnmusiccnmusic必是位高人。能自我介紹下嗎?謝謝4 2 積 飛發(fā)消

于20095809:09:35|只看該作 6 老本行是軟件開發(fā),用VisualC++的積

接觸四軸純粹是好玩。本來只想做個平衡儀來把我很早以前買的華科爾4#直升機(jī)飛起來,但是當(dāng)初經(jīng)驗(yàn)不足,于是就先從LAMA開始做起。不我從去年0月開始做四軸,直做到現(xiàn)中級會發(fā)消 于2009580:35:26|只看該作 7sinacomcn/b/2086 積

飛幣

這是我的四軸的,和MK的還有些差距,但現(xiàn)在已經(jīng)是我在控制四軸,而不是四軸控制我了400Hz的調(diào)整速度就是比500Hz的慢些,代碼還需要提高中級會發(fā)消 樓主 于2009583:0:24|只看該作飛得非常牛了很穩(wěn)定~不過飛行時似乎還有點(diǎn)顫抖

20 積 飛幣

會發(fā)消 于2009584:2:44|只看該作 2是的,還有些細(xì)節(jié)需要不斷優(yōu)化積

飛幣中級會發(fā)消 樓主 于2009584:44:34|只看該作請問cnmusic,F(xiàn)CC的273行處的代碼,我沒看明白計(jì)算原理~是Yaw對Nick和Roll的補(bǔ)

22 飛幣發(fā)消

//Couplingif(LooNick&&LooRoll&&(ParamSetGlobalConfig&CFGAXISCOUPLING{tmpl=(ReadingGyroYaw*ReadingIntegralGyroNick)/2048L;tmpl*=FCParamYawPosFeedback;tmpl/=tmpl2=(ReadingGyroYaw*ReadingIntegralGyroRoll)/2048L;tmpl2*=FCParamYawPosFeedback;tmpl2/=if(labs(tmpl)>28||labs(tmpl2)>28)FunnelCourse=}elsetmpl=tmpl2=

于2009584:47:50|只看該作 23to cnmusic獨(dú)立研究四軸很久了,是不多的幾個堅(jiān)持獨(dú)立

】加之為專積

飛金牌會發(fā)消積

于2009585:008|只看該作【2樓】wygood這部分我還沒有認(rèn)真研究呢,我覺得MK的代碼,有個問題就是有些基本沒效果的東西也在代碼里。你提到的這部分代碼,我現(xiàn)在也是頭霧水呢

24中級會發(fā)消

樓主

于2009585:06:57|只看該作

25to【22樓】fengmatrix和【 我也這樣認(rèn)為~他幫很多人走出了迷霧 積 飛會發(fā)消

于2009589:06:45|只看該作towygoodcoupling這部份是在解決四軸耦合問題的代你試著想看看當(dāng)要yaw時又同時要rollpitch這四顆馬達(dá)的輸出值是互相影響如果沒有這段代碼然可以靠調(diào)整PID去克服是通常不給會產(chǎn)生些微繞圓震蕩才是不過這倒是影響不大只是能提高穩(wěn)定性因?yàn)榇a里只在不做動作時才給予修正

26 積 飛新手發(fā)消 樓主 于2009589:23:56|只看該作 27to【25樓】 積 飛幣

雖然現(xiàn)在達(dá)不到用的級別,但是以后定會用到的!謝謝解答會發(fā)消 于20095822:46:5|只看該作剛才看完了MK mikrokopterde/ucwiki/Abspielen?id=

28積

飛幣

看到里面那個人把個照相機(jī)掛到四軸后,四軸依舊可以保持自動平衡,忽然明白MK調(diào)整代碼的“第三件是根據(jù)調(diào)整量的大小,決定是否需要MK的真是厲害,居然可以讓四軸在天空里玩360度空翻,太牛了中級會發(fā)消 于2009598:36:53|只看該作【】看進(jìn)來我推薦【cnmusic】為四軸分壇的新版理由是他獨(dú)立研讀了MK的控制代碼,并在自己的四軸實(shí)現(xiàn)之,我與之討論四軸控制年有余深覺他既有DIY動手能力,又有四軸開發(fā)經(jīng)驗(yàn),并且樂于與人交流,是四 版主的不二人選【】斟

29積

飛幣金牌會發(fā)消 樓主 于2009599:37:40|只看該作to【28樓】fengmatrix"我與之討論四軸控制年有余

30 積 飛幣

什么時候開始的?挺羨 的!有個知己來談?wù)?!我都是個人干!哎……無奈會發(fā)消 于20095202:24:6|只看該作 3經(jīng)過和fengmtx的討論,我認(rèn)為我的四軸晃動原因并不是積分 加速度計(jì)太緊密或別的原因,而是四軸自身重量不平衡,造成依靠重力法穩(wěn)定保持在平衡位置。使得四軸必須頻繁糾正姿態(tài),所以引起晃動。積

飛 三種算法了中級會發(fā)消發(fā)消

于200952023:9:55|只看該作說得不錯,cnmusic極熱心的,我也向他請教過幾

32積

飛金牌會發(fā)消

于200952023:28:8|只看該作【28樓】fengmatrix 】看進(jìn)來支持!我另發(fā)新帖通知吧。

334 2 積 飛發(fā)消

于20095 7:46:37|只看該作看起來MK的第三種算法并不能解決我的問題,也不能

里的掛重物改變重心后依

34積

今天在我的四軸試驗(yàn)了下,發(fā)現(xiàn)個很關(guān)鍵的問題 如果陀螺儀中立點(diǎn)沒有變化,為了能夠自動補(bǔ)充重心改變引起的不平衡,而手動調(diào)了中立點(diǎn),最大的問題是這樣積分就會下子變化很大,是根本無法繼續(xù)做到平衡的??雌饋砦业膯栴}還需要自己想辦法,下 版的MK的源代碼,沒有找到能做到那個效果的部分中級會發(fā)消樓主

于200952228:49|只看該作

35【33樓】陀螺儀的平衡中點(diǎn)和四軸的重心不對稱沒多大關(guān)系吧!我覺得應(yīng)該是在電機(jī)控制 塊吧!還在看 積 飛

是不是積分參數(shù)設(shè)置過大會發(fā)消于2009522發(fā)消于20095225:4:8|只看該作于20095222:6:54|只看該作36【34樓】wygood就可以讓四軸改變姿態(tài),也有可能讓四軸自動從傾斜狀態(tài)回到水平。 積 0飛但我沒有注意到的是如果中立點(diǎn)變了,那么每次的積分也會隨之水漲船高,造成新的問題。所以這條路走不通中級會發(fā)消于20095222:24:52|只看該作 37前我在查的地方有幾個機(jī)架配重不對稱,前是容易左右晃動,所以我檢查了下左右的配重。除了發(fā)現(xiàn)多了個銅柱外沒有什么太大差2姿態(tài)控制頻率致性不夠。由于加入了SD卡,所以那個文件系統(tǒng)時不時地要寫下SD,這樣就會造成延遲。引起頻率變化從425Hz到470Hz都有。也許這個會引起積分變化,引起晃動。這個是重點(diǎn)懷疑的。 0 P參數(shù)過大。這個也會引,因?yàn)檫^大的P會把陀螺也放大,引起機(jī)。這個我前幾天試飛只用P后已經(jīng)調(diào)整到個比較合 積 飛的參數(shù)了中級會發(fā)消 積 0飛 樓主于200952209:527|只看該作38據(jù)我的觀測,使用德國的源代碼飛行在重心嚴(yán)重失衡時(如在其中個電機(jī)下掛個重物),也能很平穩(wěn)平穩(wěn)說明在飛控源代碼里,肯定有識別重心并校正電機(jī)轉(zhuǎn)速的代碼!前還在尋找會 發(fā)消于20095223:59:36|只看該作39據(jù)我的觀測,使用德國的源代碼飛行在重心嚴(yán)重失衡時(如在其中個電機(jī)下掛個重物),也能很平穩(wěn)平穩(wěn)說明在飛控源代碼里,肯定有識別重心并校正電機(jī)轉(zhuǎn)速的代碼!前還在尋找 這個同意 0積飛中級會我(用做飛控板再搭配電調(diào))小角度抵抗力很弱是大角度還可以計(jì)頂多只有%

40所以我的四軸室內(nèi)飛行幾乎跟MK樣穩(wěn)定可以放手但是在外面受風(fēng)吹他就會有小震蕩甚至抖動…所以我還在克服另外你的姿態(tài)估測法跟MK樣都是AD直就拿去做計(jì)算?我是采取較正統(tǒng)方式gyro先積分成deg然后加速規(guī)與重力求傾角單位也是同單位后再去做MK那種修正算法不過因?yàn)閱挝徊煌切┫禂?shù)因子就只能 猜了不知道你對這有何看法或是有特別求出那些參數(shù)的方 積 飛新手發(fā)消

于20095225:24:49|只看該作 4不 了,,不知為啥,cnmusic能重新傳下嗎?或發(fā)到我的郵箱jinglinxu@26com謝 積 飛游發(fā)消

于200952220:03:0|只看該作【38樓】前我也在尋找,不知道哪部分代碼在高速姿態(tài)調(diào)整下可以起到這個作

42積中級會

【39樓】前我還在增加積分量,現(xiàn)在的積分量已經(jīng)很大了,反抗力感覺不比MK的弱。用I2C電調(diào),就可以積分很大而不會引起振蕩。我的標(biāo)就是要達(dá)姿態(tài)算法K和我都是直接拿AD現(xiàn)在覺得簡單的就是好的,既然直接計(jì)算K都可以做好,為什么我做不好?發(fā)消

【40樓】什么不 了積

于200952220:07:26|只看該作【40樓】應(yīng)該是那個V07hCodeRedesignkillagregrar點(diǎn)擊此 ourdev446983rar(文件大小:86K)(原文件名:V07hCodeRedesignkillagreg

43中級會發(fā)消

200952220:7:59|只看該作者

44積

我把四個馬達(dá)都換掉了,以前用的850KV的馬達(dá)有個槳夾被次倒扣給撞彎了,然后只要高轉(zhuǎn)速就會非常抖,抖到手根本拿不住。而另外2個馬達(dá)就沒這個問題。由于槳夾沒有單賣的,只好把4個馬達(dá)全都換了?,F(xiàn)在也是新西達(dá)222000KV的馬達(dá)了。經(jīng)過這個調(diào)整后,現(xiàn)在水平方向已經(jīng)比較平穩(wěn)了,以前的晃動被消除了。不過前后又開始晃動,真是按下葫蘆瓢又起。不過這回的抖動我知道因 重心配比不平衡,由于我這個四軸并不是完全對稱的機(jī)架,以前手工設(shè)置的馬達(dá)調(diào)整量不完全正確,所以四軸自己拉平后撤掉調(diào)整量就中級會發(fā)消

又歪了,于是就開始晃動現(xiàn)在的姿態(tài)調(diào)整頻率已經(jīng)穩(wěn)定到500H,這是拿示波器量過確認(rèn)的。我把SD卡部分的代碼放到了mn里,這樣就不用擔(dān)心姿態(tài)調(diào)整中斷被打擾了。給我的感覺現(xiàn)在有可能到000H的調(diào)整速度呢。 200952222:50:6|只看該作者槳夾沒有單賣?自己做的機(jī)架

45積

飛幣金牌會發(fā)消 于200952308:08:27|只看該作【44樓】只和馬達(dá)起賣,套要¥00多,貴死

46積

飛幣中級會發(fā)消 于20095233:6:46|只看該作toPCB是自己重做嗎

47 積 飛幣游發(fā)消 于20095233:48:06|只看該作【46樓】全部自己重新設(shè)計(jì)的,沒有采用MK的

48積

飛幣中級會發(fā)消 于20095234:07:42|只看該作 49兼用MK代碼嗎,,,發(fā)個圖來學(xué)習(xí)下 積 飛游發(fā)消積

于20095235:25:02|只看該作【48樓】00%不兼容 ourdevcn/bbs/bbscontentjsp?bbs &bbspageno=&bbsid=025這里有圖今天繼續(xù)有所收獲

50中級會發(fā)消

本來是根據(jù)MK的四軸來調(diào)整我的四軸參數(shù)的,我發(fā)現(xiàn)K的四軸在傾斜45度后馬達(dá)轉(zhuǎn)速加倍,于是我就用這個來調(diào)整我的參數(shù),可確發(fā)現(xiàn)了這個問題。(原文件名:(原文件名:3陀螺儀積分和加速度配合的很好可這時為什么呢?忽 到以前看到單沒有引起注意的個參數(shù):ACCAMPLIFY在MK的融合算法的即時融合里,我注意到他用加速度計(jì)去補(bǔ)償陀螺儀的積分,這2種風(fēng)馬牛不相及的東西居然可以放 起,這ACCAMPLIFY起到了關(guān)鍵的作用。它將加速度計(jì)的數(shù)據(jù)放大,做到和積分差不多,然后才能用來補(bǔ)償。而我犯的錯誤就是直接拿原始的加速度重新設(shè)置的放大倍數(shù)為3的ACCAMPLIFY參數(shù)后,四軸地積分曲線終于正常了,不再會衰減了(原文件名:2 于200952323:34:26|只看該作 5頂CNM,支 積 飛會發(fā)消

于200952409:0:44|只看該作在我調(diào)整數(shù)據(jù) (原文 后,懸停的時候左右前后都不晃了。不過現(xiàn)在對水平位置鎖定還有問題,開始往后飄了。另外方向操作后還會晃晃,估計(jì)是積分過大的問題。

52 中級會發(fā)消

于20095244:24:59|只看該作to

53 積 飛

呵呵我就是遇到這我的姿態(tài)P(就是MK里的積分I我用正統(tǒng)PID寫法分兩層姿態(tài)部分用了PID內(nèi)層的rate部分用P所以跟MK不太樣因?yàn)镸K用了不是很正統(tǒng)的PID寫算是他自己的變形)調(diào)太大雖然反抗力很強(qiáng)不過只要受到點(diǎn)擾動或是打了個動作回復(fù)時就會震蕩雖然是收斂但是就是會振好幾次才穩(wěn)定所以只好把值調(diào)小調(diào)小反抗力就差了點(diǎn)不過我倒是可以自己穩(wěn)定回水平室內(nèi)飛行幾乎不用碰 只需要偶爾動下油門讓高度在個水平(我沒新手發(fā)消

于20095246:32:8|只看該作

54

mikrokopter Abspielen?id= 里的那個掛相機(jī)的動作,終于明白了為什么MK的可以做到這種 積中級會

我的四軸現(xiàn)在也可以在重心變化的時候保持穩(wěn)定了,原因很簡單,就是因?yàn)樵趻熘匚锖螅妮S起飛,勢必往重的方向傾斜,這就產(chǎn)生了個這個方向的角速度??梢越撬俣瓤梢员煌勇輧x檢測到并由PID處理。由于處 殊的代碼就可以做到,實(shí)在是很巧妙的 就 個相當(dāng)大的I參數(shù),大到可以產(chǎn)生足夠的拉力把重物拉起來 發(fā)消

【52樓】這個效果如果減小積分的話就會做不到。我的那個方向操作后的晃動除了減小不過我前直想搞定漂移的問題,所以先不去管它了。積

于20095247:24:33|只看該作今天還把陀螺儀溫飄的修正代碼加了,不過在試飛的時候并沒有出現(xiàn)過調(diào)整動作//deviationofgyronickintegral(IntegralNickiscorrectedbyaveragedaccsensor)IntegralErrorNick=IntegralNick2IntegralNick;ReadingIntegralGyroNick2=IntegralErrorNick;cnt=;//+labs(IntegralErrorNick)/4096;

55中級會發(fā)消

CorrectionNick=if((labs(MeanIntegralNickoldMeanIntegralNick)<MOVEMENTLIMIT)||(FCParamKalmanMaxDrift>3*{if(IntegralErrorNick>ERRORLIMIT{if(lastn{cnt+=labs(IntegralErrorNick)/ERRORLIMIT2;CorrectionNick=IntegralErrorNick/8;if(CorrectionNick>5000)CorrectionNick=5000;AttitudeCorrectionNick+=CorrectionNick/BALANCE}elselastnp=}elselastnp=if(IntegralErrorNick<ERRORLIMIT{if(lastn{cnt+=Nick)/CorrectionNick=IntegralErrorNick/8;if(CorrectionNick<5000)CorrectionNick=5000;AttitudeCorrectionNick+=CorrectionNick/BALANCE}elselastnn=}elselastnn=}{cnt=passHeading=}if(cnt> p)cnt= if(cnt*6>FCParamKalmanMaxDrift)cnt=FCParamKalmanMaxDrift///correctGyroif(IntegralErrorNick>ERRORLIMIT)AdNeutralNick+=cnt;if(IntegralErrorNick<ERRORLIMIT)AdNeutralNick=cnt; ;(原文件名: 通過這個圖可以很明確地看出來,如果不進(jìn)行溫飄調(diào)整,到后來陀螺儀會越偏越大,直到超過加速度計(jì)的調(diào)整在實(shí)際測試中,如果讓馬達(dá)轉(zhuǎn)2分鐘,在沒有0點(diǎn)調(diào)整代碼的情況下,會明顯感覺四軸開始慢慢地向邊歪,而程序則將這個歪的位置認(rèn)為是平看到這個圖,我們大概也可以明白如何進(jìn)行0如果這個差異過大,那么說明我們需要動下0點(diǎn)了。MK的流程也差不多是這樣,只是他寫的比較復(fù)雜。//deviationofgyronickintegral(IntegralNickiscorrectedbyaveragedaccsensor)IntegralErrorNick=IntegralNick2IntegralNick;ReadingIntegralGyroNick2=這部分,就是計(jì)算陀螺儀原始數(shù)據(jù)積分和調(diào)整后積分的差異的。IntegralNick2,ReadingIntegralGyroNick2是陀螺儀原始數(shù)據(jù)積分,IntegralNick是經(jīng)過加速度計(jì)調(diào)整后的積分,IntegralErrorNick就是他們的差異。第行求出差異,第二行將這個差異從陀螺儀的原始積分里去掉,ReadingIntegralGyroNick2這個是真正在AD部分用的陀螺儀原始數(shù)據(jù)積分。這個去掉的動作很重要,否則的話旦積分差異超過限,就會直調(diào)整下去。下面的部分就是根據(jù)這個差異進(jìn)行判斷,其實(shí)很多時候代碼執(zhí)行起來是這樣cnt=//correctGyroif(IntegralErrorNick>ERRORLIMIT)AdNeutralNick+=cnt;if(IntegralErrorNick<ERRORLIMIT)AdNeutralNick=cnt;關(guān)鍵部分就是if(IntegralErrorNick>ERRORLIMIT)AdNeutralNick+=cnt;if(IntegralErrorNick<ERRORLIMIT)AdNeutralNick=其中ERRORLIMIT是(BALANCENUMBER*4),意思是如果我們每次進(jìn)行積分,2個數(shù)據(jù)差異都有4,那么說明我們確實(shí)應(yīng)該調(diào)整下中立點(diǎn)代碼簡化成面的形式就容易理解多了,就是看下差異,如果超過ERRORLIMIT那么就對陀螺儀中立點(diǎn)增加,如果小于ERRORLIMIT,那么就減。而這個差異是執(zhí)行了BALANCENUMBER次計(jì)算后的,也就是積分要在05秒內(nèi)差出這么多才可以。條件還是很嚴(yán)格的不過MK還多想了些,還想到了如果在這05秒內(nèi)下子差出(BALANCENUMBER*6)的情況:cnt=;//+labs(IntegralErrorNick4096;CorrectionNick=if((labs(MeanIntegralNickoldMeanIntegralNick)<MOVEMENTLIMIT)||(FCParamKalmanMaxDrift>3*{if(IntegralErrorNick>ERRORLIMIT{if(lastn{cnt+=labs(IntegralErrorNick)/ERRORLIMIT2;CorrectionNick=IntegralErrorNick/8;if(CorrectionNick>5000)CorrectionNick=5000;AttitudeCorrectionNick+=CorrectionNick/BALANCE}elselastnp=}elselastnp=if(IntegralErrorNick<ERRORLIMIT{if(lastn{cnt+=labs(IntegralErrorNick)/ERRORLIMIT2;CorrectionNick=IntegralErrorNick/8;if(CorrectionNick<5000)CorrectionNick=5000;AttitudeCorrectionNick+=CorrectionNick/BALANCE}elselastnn=}elselastnn=}首先,如 次的陀螺儀積分平均值和這次的差異不大,那么去判斷是否需要調(diào)整中立點(diǎn)。具體為什么,不知道,有待后續(xù)研究下面就是判斷的流程,如果積分差異超過ERRORLIMIT2,也就是(BALANCENUMBER*6),且出現(xiàn)了2次(lastnp標(biāo)志位),那么我們根然后根據(jù)差異算出AttitudeCorrectionNick的調(diào)整量不過我比較懷疑有多大幾率陀螺儀0點(diǎn)會下子飄很多,般情況下都是慢慢飄的,所以我懷疑這部分復(fù)雜邏輯在實(shí)際飛行時有沒有起到很多的

2009525:28:27|只看該

56能否

看看呢 積 飛會發(fā)消積

于200952622:3:52|只看該作【55樓】看6樓剛才又仔細(xì)看了看MK的控制部分的代碼,因?yàn)閺奈屹I的四軸的實(shí)際動作來看,我以前的理解有

57中級會發(fā)消

仔細(xì)研究了以后,發(fā)現(xiàn)幾個以前的理解錯誤 Nick Roll指的是四軸飛3D時在空中翻跟頭時用的變量,而不是般的方向控制所以當(dāng)有方向操作時,雖然四軸會傾斜,但也不能 傾斜,還是會被積分限制住。而不像我以前的算法,被積分給拉回平衡位置這和我以前的理解不大樣,讓我更佩服K了。

于20095274:2:6|只看該作有看頭

58積

飛中級會發(fā)消 于200952900:00:24|只看該作 59樓主,我是指您修正后的,可以掛重物 積 飛幣會發(fā)消 于20095294:44:0|只看該作【58樓】還沒拍攝,正在調(diào)新板子呢

60積

飛幣中級會發(fā)消 于2009 7:56:53|只看該作 6今天繼續(xù)試飛,換了德國的EPP045槳,確 小多了積中級會

今天對平衡算法又有些新的理解那個長期,即時的陀螺儀積分和加速度計(jì)的融合,都是針對下次PI的,而不是當(dāng)前的這次。我以前都以為是針對當(dāng)前的呢,結(jié)果相當(dāng)于把 對于那個長期融合,看起來MK基本沒發(fā)揮作用。首先是這個調(diào)整量非常小,我按照MK的參數(shù)運(yùn)算后得到的幾乎沒有超過的,最大也不05。在MK的代碼里他用了整數(shù),所以我分析這部分代碼和沒有差不多。另外我把我的代碼里的這部分調(diào)整去掉后,得到的效果和MK的非常接近了。離平衡位置的調(diào)整“死區(qū)”非常小,而加這部分代碼后情況就變糟糕了。發(fā)消

明天繼續(xù)試飛,還是要拿實(shí)踐來檢驗(yàn)的 于20096209:27:3|只看該作to【60樓】看到你對德國四軸程序的分析和講解,簡直就是透徹到底。讓我這個菜鳥來說受益匪淺呀!。呵呵!辛苦了。。。。

62 飛幣

樓主,我也試過更改了下飛控的程序。。。發(fā)現(xiàn)了個不解的問題如:我現(xiàn)在仿的德國四軸,用的加速度是MMA726。。。和原版的不同。。。所以為了達(dá)到波形重合的效果,更改了ACCAMPLIFY的賦值,進(jìn)行了德國源代碼的編譯。。值由原來的2改到了8,結(jié)果波形的重合性非常的理想。但結(jié)果我試飛感覺也不是非常明顯的改善。于是把值改成了8,結(jié)果波形重合性就很差了。結(jié)果試飛。本以為理論是很差的???但結(jié)果感結(jié)論:是不是波形重合的好壞,直接影響四軸飛行的重要 呢?還請樓主分析下。。發(fā)消 于20096 :20:03|只看該作【6樓】gl5那個加速度計(jì)的數(shù)值,不是越大越好的

63積

飛幣

很重要的點(diǎn)就是MK用加速度計(jì)來修正陀螺儀,雖然有進(jìn)行除6衰減,但如果你的加速度計(jì)放大倍數(shù)太大的話,這樣衰減下來也是不夠小。這天中級會的衰減倍數(shù)我 把那個除 低,變成48,結(jié)果基本沒法飛了天中級會的衰減倍數(shù)發(fā)消

相比波形是否重合,調(diào)整量的大小更關(guān)鍵些。如果波形重合不好,至多是不會自動回到平衡位置,不會會的很穩(wěn),很準(zhǔn),會有些偏差。而如果 掉。

于2009626:55:56|只看該作TO【62樓】

64非常感謝你詳細(xì)的分析。。。但確實(shí)我通過試驗(yàn)證明了,波形的重合性的好壞,感覺對四軸并不是影響很大呀@@覺不出來??? 積 飛

按照你說的方法,今晚再去測試下。。。哦!今天DAC的片子到了,估計(jì)要升級下飛控了。感覺下用DATKS高級會發(fā)消

于2009644:39:32|只看該作

65 sinacomcn/b/2 積

周圍有23級風(fēng)。看起來還可以飛更高,但飛高了太小了我都沒法操作了中級會發(fā)消

20096420:32:38|只看該剛剛從外面飛回來。。。呵呵!不是真的飛機(jī)。。

66個字“爽”。。。兩個字“具爽”。。。。。第次在開闊地飛行,沒有任何的約束。。。。飛的很高!。。。 ^*)嘻嘻……今天沒有帶 機(jī)呀。。??床? 了 發(fā)消

GL56四軸《飛后感》,的卻在寬闊的地方飛行。。。飛的就是爽。。你可以升到0M左右的地方,放 任它飛去 2,高空中(在沒有大風(fēng)的情況下)飛行的穩(wěn)定還算行3,低空飛行不怎么理想。。老是高度不穩(wěn)定;會飄。。(大概在~3m的高度,時時下,需要不??刂坪糜烷T4,電池的飛行能力估計(jì)也就是5~20左右。(還是間接飛行的5,機(jī)機(jī)爬升的速度超級快!加大油門。。嗖。。下飛的總結(jié):需繼續(xù)改善。。。做到更好!軟件方面還得請CNMUSIC幫忙于20096423:07:6|只看該作問個問題,4軸下降時,是怎么控制的?是不是隨風(fēng)飄下來的如果遇到風(fēng)大,是不是會被風(fēng)越吹越高

67 積 飛會發(fā)消

20096500:7:8|只看該作者

68積

飛高級會發(fā)消

于2009662::52|只看該作To不知道你可否解釋 ogc里面MK抓取AD值要累加好幾次ATMEGA644應(yīng)該是0bitAD所以照理說AD值應(yīng)該為0~不過似乎FCc里面的gyro與加速度的AD值都有乘個倍數(shù)可以詳細(xì)說明這部分嗎另外再想請問個…MK是不是 訊號的值域轉(zhuǎn)換成跟傳感器的值域樣

69 積 飛新手發(fā)消

于2009665:04:46|只看該作【68樓】AD反復(fù)取值都是為了求平均來過濾掉干擾和振動。邊的注釋寫的很清楚

70積

fcc里的加速度數(shù)值乘倍數(shù)是為了能讓加速度計(jì)和陀螺儀積分大小差不多,達(dá)到【49樓】的MK界面里的那個效果,這個和AD的數(shù)據(jù)范圍無關(guān)。以為在飄,就沒法進(jìn)行糾正了。關(guān)于中立點(diǎn)修正部分再詳細(xì)的看【54樓】。中級會發(fā)消

對于加速度計(jì)融合進(jìn)陀螺儀,定是以陀螺儀積分為主,而加速度計(jì)的修正量為輔。每次的調(diào)整量都是很小的,這樣才能避免機(jī)械振動把陀螺儀積分套。這個融合速度,有個ParamSetGyroAccFactor來決定。MK代碼中還有寫死的個/6。如果不把加速計(jì)放大,光靠ParamSetGyroAccFactor,就會變成【49樓】第個圖的樣子,積分會自己變小,這樣子飛起來就會自己晃動。原因就是陀螺儀積分和加速度計(jì)數(shù)值不匹配,總是積分大,加速度計(jì)小,于是就會直衰減。而放大后就沒有這個問題了,【5樓】的第個圖至于有沒有 轉(zhuǎn)換相同的大小,我認(rèn)為有轉(zhuǎn)。只不過這部分和姿態(tài)關(guān)系不是很緊密,所以我沒有過多地去研究

樓主

于20096809:30:4|只看該作 7偶到現(xiàn)在看來,算法并不非常復(fù)雜(歸功于樓主的講解)~偶覺得meg8好像都可以勝任控制器了~當(dāng)然需要除去很多不必要的元素~現(xiàn)在實(shí)現(xiàn)基本懸停(會左右下漂移)編寫出來的代碼HEX大小8K不到 積 飛會發(fā)消 于20096 :37:07|只看該作 72 積 飛

呵呵我做的四軸終于可以像MK樣側(cè)邊掛重物了我有試掛顆電池跟瓶裝半滿水的寶特瓶只掛邊我沒有照MK的寫法而是自己用正統(tǒng)的PID寫法分200Hz控制內(nèi)層ratecontrol外層anglecontrol…參數(shù)還蠻好調(diào)整的rate那部份用了PD,angle那部份用了不過我覺得我問題還是在姿態(tài)估測那里 所以前起飛會稍微傾斜個小角度然后才慢慢自我恢復(fù)新手發(fā)消

于2009683:5:09|只看該作 73其實(shí)掛重物的邏輯并不想想象中的那么復(fù)雜,只要I夠大都可以做到。不過我的四軸前會在這種不平衡的時候產(chǎn)生小幅度的晃動,但晃動角度 積

要是像達(dá)到那 里那么穩(wěn),恐怕還要下些功夫。至少機(jī)架剛性要足夠, 要小姿態(tài)平衡算法有很多種,MK只是其中 種。我花時間研究它是因?yàn)榭此男Ч容^好,至少比我自拍腦袋想的要好中級會發(fā)消于2009683:8:32|只看該【70樓】wygood

74積

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論