導航:首頁 > 源碼編譯 > apm固件編譯到單片機

apm固件編譯到單片機

發布時間:2024-10-06 10:10:17

A. gps定位軲轆離地就不好使了

一、無法解鎖(黃燈閃爍)

無法解鎖的原因會有多種,請按照如下步驟進行檢查:

1、初始設置是否全部完成

a、機架類型選擇是否正確,或者你根本就沒有選擇?

注意,新版本的飛控固件在默認參數情況下,需要先在mission planner中設置好機架類型後才會有各個控制通道的輸出。

b、加速度計校準(如果沒有校準或者上次校準不成功,解鎖時姿態窗口會提示);

c、指南針校準(如果沒有校準或者上次校準不成功,解鎖時姿態窗口會提示);

d、遙控器校準(並且各個通道的正反向正確);

e、飛行模式設置(注意,在PosHold、Loiter模式下,如果GPS沒有定位或者定位不佳,是無法解鎖的)

f、電調校準(你確定你校準成功了嗎?)

2、是否連接了「安全開關」,並解鎖。

pixhawk飛控硬體引入了「安全開關」這個外設,飛控默認是使能安全開關的,這就需要你在使用遙控器解鎖前先長按安全開關,進行初步解鎖,然後再通過遙控器解鎖。如果你不想用安全開關,在全部參數列表中將「BRD_SAFETYENABLE」設為「0」即可。(注意,有些參數是立即生效,有的參數是重啟生效,建議為穩妥起見,進行一次重新上電操作)

3、會不會是飛控已經解鎖了,但是電調並沒有工作。

a、會不會是你只給飛控供電了,而沒有給電調供電?

b、會不會電調信號線斷了?或者信號線插反了?

c、會不會是電調沒有校準?

4、會不會打開了地理圍欄功能,並且飛機處於地理圍欄之外?

二、電台連接緩慢,或者有很大概率連接失敗

APM最新版固件很少出現這個問題了,之前的固件與某些電台聯合使用的時候會出現這個問題。

原因:全部參數列表中「BRD_SER1_RTSCTS」和「BRD_SER2_RTSCTS」默認是「2」,即「auto 自動」。這個兩個參數控制著飛控連接電台的串口是否開啟流控制(串口協議里的概念)。0表示不用,1表示用,2表示自動檢測。自動檢測的原理是飛控初始化的時候先默認是使用,然後收發一些數試試,如果不行,就認為不用,以前的固件這里好像有點bug,導致有時就連不上地面站了。將這兩個參數設為0即可。

三、懸停掉高(或者叫定高不好,上下浮動)

定高不好,可能是由以下兩個原因造成的:

1、機架震動大,飛控減震沒有做到位,導致飛控Z軸加速度出現較大奇異值,從而導致飛控在某些時刻對自身速度、加速度的估計出現錯誤,明明飛機沒有向上走,但是飛控認為飛機在快速向上走,於是控制飛機猛收油門,從而飛機猛地向下掉一下。這類問題導致的定高問題更像是飛機在向上或者向下抽動。

2、氣壓計受自身螺旋槳氣流影響導致高度估計問題。大家一般會在氣壓計上加一塊海綿,但其實對於大飛機這個是不夠的,最好再增加2層遮擋物:一、飛控加外殼,外殼透氣孔盡量小一點,如果飛控外殼四面透風就意義不大了;二、將飛控裝在機身內部,並且盡量使得機身封閉(一般很難做到完全封閉,從而不影響氣壓計檢測外界氣壓值),這個可能比第一條還關鍵。

3、如果是緩慢的高度變化,並且變化范圍在0.5m以內,那麼,可以認為是正常的,因為飛控對自身高度的估計主要來源於氣壓高度計,而氣壓隨著氣溫會緩慢變化,再加上飛控旋翼氣流影響以及各種測量雜訊,飛控對自己的高度的估計會緩慢變化,從而導致高度控制出現漂移。如果想提高定高效果,只能考慮添加「相對高度計」,如超聲波、毫米波雷達、激光測距儀等。

四、定點定不住

定點定不住,可能是由如下原因造成的:

1、確認自己已經成功切到PosHold或者Loiter模式!(你以為你切了,實際上沒切,或者由於GPS、磁羅盤等問題飛控拒絕切到定點模式)一定要通過地面站看模式,反復確認;

2、GPS信號差,如果有嚴重遮擋,GPS定位會出現較大幅度的漂移,進而導致定點定不住;

3、遙控器有偏移值。要麼你沒有校準遙控器,要麼不小心撥動了遙控器微調,要麼溫度變化導致遙控器自己行程飄了,導致搖桿處於中位時飛控收到的是向一邊打桿的控制指令……

4、磁航向不正。磁羅盤沒有校準,或者磁羅盤歪了,或者磁羅盤受到干擾,導致飛控對機頭方向的估計與實際航向不一致,進而導致位置控制時出現刷鍋飛行的情況(飛機機頭指向不變,飛行軌跡呈現刷鍋的感覺)。

五、刷哪種固件?PX4固件?APM固件?

首先應該明白PixHawk、PX4固件、APM固件三者的關系:

PixHawk指的是飛控硬體,相比之前大多數開源飛控使用的AVR單片機,Pixhawk飛控在硬體性能上有了很大的提升,它採用的STM32F427VIT6作為主控,32位,主頻168MHz,可以說是相當的牛逼。

PX4固件和APM固件指的是軟體,它們都是運行在PixHawk硬體之上的,是兩種不同飛控程序。對於刷哪個固件,請看下面的對比:

1、PX4固件的源代碼結構明了,對於學習飛控程序的人來說,可能入手更快一點;相比之下,APM代碼略微有點復雜;但是,請注意,這里的復雜是相對而言的,根據我個人的經驗來看,APM的代碼比我見過的所有自己寫的代碼(自己寫的、項目用的、實驗室遺留的)相比,編寫規范、命名規則、實現方法都要好非常多。 對於只是使用飛控,而不研究代碼的人來講,PX4固件在這一點上沒有優勢。

2、APM固件歷史悠久,功能更加完善,漏洞更少,飛行更穩定(這里的穩定指的是不會因為程序漏洞導致莫名其妙地摔機);相比之下,PX4固件有點薄弱,有很多坑需要填。 對於一個無人機來講,能穩定可靠地飛行是第一位的,如果不能穩定可靠地飛行,其餘優勢都是扯淡。

因此,對於只用飛控不改程序的人,我推薦刷APM固件;而對於需要改程序的人,我也推薦APM固件,但是如果是公司用戶,請考慮一下APM固件和PX4固件開源協議的區別,酌情考慮(關於這一點,請注意:不要敝帚自珍,一個無人機公司的競爭優勢是全方位的,既然用了開源飛控,即使你加上了自己特有的功能,在飛控代碼上也不會比別人強太多。那些不會改飛控代碼的競爭對手給他程序他也用不了,那些會改代碼的公司也不屑於抄你)。

上述論述可能有失公允,畢竟,我是用APM的人 🙂

2019年08月09日更新:

有不少同學還在用APM2.x這款硬體(以AVR單片機作為主控),這種硬體已經被淘汰,最新版固件已經不再支持這款硬體。APM2.0硬體最高支持的固件版本如下:多旋翼:3.2.1,固定翼:3.3.0,無人車:2.5.1。

六、起飛瞬間飛機轉頭

新裝的飛機第一次試飛時起飛瞬間機頭向一個方向旋轉,趕緊收油門。這時候,應該按照如下步驟進行檢查:

1、檢查槳是不是裝錯了,各個機臂上「正反槳」嚴格按照官網指示圖進行檢查;如果沒有問題,看下一步。

2、把槳卸掉,解鎖,檢查各個電機轉向,注意,是嚴格按照官方電機轉向進行檢查,並且注意電機的1、2、3、4可不是按照順時針排布的;如果沒有問題,看下一步。

3、連上地面站,看看飛機的俯仰、橫滾、偏航有沒有反的。

4、如果至此都沒有問題,那麼,我可以告訴你,有一部分飛機在調參不好、機架剛性不好、動力不好的情況下,會出現起飛瞬間機頭偏轉的問題,離地後機頭就不再偏轉了,並且這還跟起飛瞬間推油門是否果斷相關。 這時,如果你是個老手,膽子還很大,試飛場地很寬廣並沒有圍觀人群,那麼大膽起飛吧,飛高1米看看,但是時刻准備收油門。 但是如果你是個新手,或者膽子跟我一樣小,或者飛行場地不理想,那麼就老老實實綁飛吧,把四條腿綁在地上,留出5cm左右的自由空間,解鎖飛行,看看飛機俯仰、橫滾、偏航的反應,沒問題後再正常飛。

七、地面站失控保護(GCS Failsafe)

地面站失控保護,顧名思義,當地面站跟飛機失去連接後觸發失控保護。但是如果你以為在MissionPlanner中的設置里直接點上地面站失控保護就行了的話,那你就想簡單了,你會發現自動模式下,即使把地面電台拔掉了,飛機也不會返航。這是為什麼呢?這是因為這個失控保護的是為「使用游戲手柄控制飛機飛行時」設置的(參考官方文檔:鏈接)。

是的,當你使用一個微軟的游戲手柄連接地面站電腦後,通過簡單設置,地面站軟體可以把游戲手柄的控制量通過地面電台轉發給飛機,這個控制量會覆蓋遙控器的控制信號,從而導致飛機只接受游戲手柄和地面站軟體的控制。這時,如果地面站與飛機失聯了,飛機就處於完全無控狀態了(即使遙控器有信號也白搭),因此這時飛控程序中加了地面站失控保護功能。其觸發條件如下:

1、開啟了游戲手柄控制飛機功能,並且在使用中;

2、處於自動模式中;

3、地面站已經有5秒鍾沒有跟飛機通信了;

4、飛控參數中FS_GCS_ENABLE設置為1。

由此可知,如果你想實現超視距飛行中電台斷了飛機自動返航,只能改飛控代碼。不過,好在這個地方沒有那麼復雜,比較好改,自己改改就行。

八、綠燈快閃

綠燈慢閃表示GPS已定位,並且沒有別的故障,飛控允許解鎖;那麼綠燈快閃是什麼意思呢?官網的解釋是:GPS is using SBAS(so should have better position estimate)。這個的意思是綠燈快閃情況下,GPS使用了」星基增強系統」的信號,這時GPS定位會更好,因此,在綠燈快閃的情況下,定點會定的更好一點。

九、推油門飛機起不來

有時你會遇到即使把油門推倒頂,飛機都沒法離地的情況,根據我多年踩坑經驗,有如下幾種可能:

1、電池沒電了,並且是徹底沒電了,並且是你以為還有電,甚是是滿電,但是就是沒電了! 不要相信自己的記性,不要以為昨晚剛充滿的幾塊電池,怎麼可能沒電,問題是偏偏幾塊充滿的電池放在那裡,你隨手拿了一塊沒有充電的或者乾脆已經壞掉的電池!你唯一可以相信的只有BB響(又稱電顯)!

2、四個槳的轉向反了,推油門風是向上吹的,飛機穩穩地趴在地上。

3、電調沒有進行行程校準!導致遙控器給的是滿油門,飛控給的也是滿油門,可偏偏電調認為你給的是20%油門。注意,新裝的飛機,一定要進行電調行程校準,並且注意,是先校準遙控器,後校準電調。(現在不少FOC電調是固定油門的,那麼就需要修改遙控器和飛控的行程去適應電調了)

十、起飛瞬間側翻

新飛機裝好後,各種校準完成後,第一次飛行,飛機側翻(向前翻、向後翻、向左翻、向後翻)。請按照如下步驟檢測飛機:

1、檢查各個電調與飛控連接的線序是否正確,以四軸為例,右前為1號電機,左後為2號電機,左前為3號電機,右後為4號電機,注意可不是順時針的1、2、3、4;

2、有條件的話,先將飛機綁在地上(簡稱「綁飛」),然後進行下面所述測試;

2、解鎖飛機,不要推油門,在怠速下檢查所有電機的轉向是否有反的;

3、如果電機轉向無誤,檢查螺旋槳是否有裝反的(順時針轉的電機上裝了逆時針轉動的槳,甚至是一個螺旋槳的上下都反了);

4、重新校準一下電調的行程試試,如果電調的行程不同,可能導致某些電機先啟動;

5、如果還不行,看看飛控是不是裝反了,上下顛倒、或者航向轉了特定角度,或者參數中設置了飛控的旋轉。

十一、舵面輸出反向

對於固定翼飛機或者無人船,可能會遇到如下問題:遙控器各個通道設置正確,從地面站上看飛控接收的各個通道的方向也正確,但是某些舵面輸出是反向的。這種問題往往是由於舵機實際運動方向與受控方向相反導致的。解決方法如下:

比如反向的舵機連接的是飛控的CH1,那麼在全部參數列表中,搜索RC1_REVERSED,將這個值設置為1,即可。

注意,這種問題不能通過在遙控器上設置反向來解決。以方向舵為例,我們需要的運作模式是:遙控器方向搖桿向左打,飛機航向就向左轉,其中的控制指令流程是:遙控器搖桿向左打—>飛控收到航向需要向左轉的指令—>飛控通過一系列PID運算得出舵機控制PWM值—>舵機收到該PWM值—>舵機轉到對應的角度—>舵面在舵機連桿的拉動下轉動,由於不同飛機舵機和舵面的安裝方式不同,會導致實際舵面運動方向與我們需要的方向相反,因此需要在飛控輸出PMW信號時進行反向。如果在遙控器里設置了反向,在手動控制模式下可能輸出是對的,但是在定點模式或者自動模式下,飛控收到的控制指令將是反的,從而在進行PID控制時是反的,最終就亂掉了。

十二、飛控不啟動

有時候,同一個飛控,之前用的好好的,突然有一天上電後飛控沒法完全啟動,上電後幾個小的LED也是亮的,但是RGB LED不閃爍,用USB連接電腦,設備管理器中也能看到飛控的串口,但是用地面站連不上飛控。遇到這種問題,在確定飛控硬體徹底壞了的之前,嘗試一下如下步驟,可能就解決了:

1、移除所有外設連接線(GPS、遙控器接收機、數傳電台、電調信號線、外置電源模塊線等),使用USB連接飛控,看看飛控是否啟動正常,是否能連上地面站,如果能,說明可能是哪個外設有問題,如果不能,下一步;

2、刷最新的固件試試,如果不行,下一步;

3、將SD卡重新格式化一下(windows默認格式),重新插入飛控,上電試一下,這一步大多數情況下就能解決問題,如果還不行,下一步;

4、更換一個SD,重新上電試試,如果還不行,我也沒辦法了,遠程只能幫你到這個地方,不行的話把飛控寄給我看看吧,或者返廠吧。

十三、飛控自動鎖定時間太長或者太短

飛機落地後,過一段時間會自動鎖定,如果你感覺等待時間太長,或者太短,請調節DISARM_DELAY參數,單位是秒,這個參數決定了等待多長時間後自動鎖定。

十四、遙控器無法校準

在遙控器校準頁面,發現各個通道的值都為0,動遙控器的各個搖桿都沒反應。遇到這種情況,請按照如下步驟檢查:

1、檢查遙控器接收機上的燈是不是亮的,如果沒有亮,應該是接收機沒有供上電;

2、檢查遙控器接收機是不是亮的綠燈,對於大部分接收機,上電後如果沒有接收到遙控器信號,會亮紅燈,否則才會亮綠燈。如果是紅燈,嘗試跟遙控器重新對頻;

3、確保你的接收機是跟你手裡的遙控器對的頻,我遇到過我的接收機跟屋子裡另外一個遙控器對上頻的情況,而那個遙控器也開著機。

4、如果使用的是接收機的SBUS介面,確保插對口了。如果用的是Futaba的7008SB,注意要插的是底下橫著的sbus2介面;

5、確保飛控端插的是RC IN介面。對於原版Pixhawk,上面的sbus字樣的介面是飛控sbus信號輸出的,不是插那個;

6、檢查接收機線的兩端有沒有插反,會不會「地」和「信號」反了;

7、還不行,換根接收機連接線試試;

8、還不行,重刷最新固件試試;

9、還不行,可能就是飛控壞了。

十五、機頭方向和飛控前向不一致

有時候,受限於機體結構,我們安裝飛控時無法做到飛控方向與飛機方向一致,比如飛控前向朝後安裝,甚至是飛控底部朝上安裝,這個都是沒有問題的,只需要修改AHRS_ORIENTATION這個參數就行了,該參數默認為0,表示不旋轉,我們可以根據全部參數列表中的注釋按需要進行修改。

這個參數起作用的原理是在原始感測器數據到來後進行一次旋轉,然後再參與姿態解算,這個旋轉的工作量很小,因此不用擔心這種操作會增加飛控負擔導致飛機出問題。

十六、日誌不正常

有時候,飛控會不記錄日誌,在MissionPlanner的姿態窗口顯示「Bad logging」,這種情況下,請按照如下步驟進行嘗試:

1、重新插拔SD卡(SD接觸不良,重新插拔試試);

2、將SD卡使用讀卡器用電腦重新格式化一下,格式為FAT32,其餘參數默認;

3、如果還不行,換一張SD卡試試;

4、如果還不行,重刷最新版固件試試;

5、如果還不行,恐怕只能懷疑飛控硬體問題了,SD卡座虛焊? 主控CPU虛焊? 不過,概率很小。

十七、無法刷固件

使用MissionPlanner給飛控刷固件的流程是這樣的:

1、在飛控與地面站沒有連接的情況下(注意,刷固件時,通過USB將飛控與電腦相連,但是不要點擊地面站的連接按鈕),切換到MissionPlanner的「初始設置」頁面,然後點擊「安裝固件」按鈕,這時,會彈出一個小窗口,提示正在獲取固件版本,注意,這時地面站是在連接官方伺服器,獲取最新的穩定版固件的版本號,如果電腦沒有聯網,就會提示錯誤;

2、選擇你的飛機類型(固定翼、四軸、六軸、X8等),這時MissionPlanner就會從官網網站上下載對應的固件,這時如果網路不好,就有可能下載一半斷掉;

3、MissionPlanner從網上將固件下載到電腦上後,開始查找與電腦連接的飛控,找到後,發送重新啟動命令,飛控自動重啟,飛控重啟後首先進入BootLoader,然後BootLoader在MissionPlanner的控制下先擦除飛控,然後開始燒寫新的固件,最後提示「請在音樂播放完後拔掉飛控」,這指的是原版飛控連接有蜂鳴器的情況下,會有提示音,提示音結束後表示固件升級才是真正完成,如果你的飛控沒有蜂鳴器,彈出這個窗口後等待30秒就可以拔掉USB了;如果彈出個小窗口,提示「請拔掉飛控,然後點擊OK」,那麼說明MissionPlanner沒有找到飛控,這時需要先拔掉USB,然後點擊小窗口上的OK,之後立即插入USB,這樣大概率情況下地面站就能識別到飛控並開始刷固件。

綜上所述,如果遇到無法刷固件的情況,請按照如下步驟檢查:

1、電腦是否可以聯網;由於APM伺服器在國外,因此有時即使電腦能聯網,也可能會下載失敗;

2、很多時候,刷固件失敗的原因是MissionPlanner無法讓飛控自動重啟,從而無法進入BootLoader中,進而超時後報錯,而正常情況下,飛控上電後第一步就是進入BootLoader,然後再跳轉到正常飛控代碼,利用這一點,我們可以按照如下步驟刷固件:先不要插飛控的USB,直接在MissionPlanner中點擊對應固件的圖標,等到MissionPlanner下載好固件後,由於掃描不到飛控,會彈出「請拔下控制板,點擊OK後再插入」的窗口,直接點擊「OK」,這時MissionPlanner開始不斷掃描新插入的USB設備,然後此時再插入飛控的USB,一般情況下就會出現擦除、燒寫步驟,百試不爽;

3、平常刷固件的時候,MissionPlanner會「偶爾」甚至「經常」出現無響應的情況,感覺整個界面掛了,這時盡量不要動它,80%的情況是圖形界面掛了,但是刷固件的進程還是在正常運行著的,耐心等待1分鍾後就會彈出刷寫成功的提示窗口,並且整個界面恢復正常;

3、檢查MissionPlanner是否為最新版本。我多次遇到過舊版MissionPlanner無法下載固件的問題,更換為官網最新版本的MissionPlanner後問題解決,注意下載MissionPlanner請到官網下載,很多時候從論壇中找到的MissionPlanner可能已經是很舊的版本了,我的另一個博客中有官網下載鏈接:http://www.nufeichuiyun.com/?p=62

4、USB線是否損壞,可以換一條USB線試試;

5、電腦是否連接的有藍牙串口,我們用藍牙電台連接電腦後,即使已經斷開,電腦中依然有2個虛擬串口,這兩個串口的存在會導致MissionPlanner刷固件時無法正常識別到飛控,從而導致刷固件失敗,請在windows的藍牙設置里,將藍牙電台刪除掉(從而設備管理器中2個虛擬串口會消失),然後再刷固件。

5、飛控BootLoader是否損壞,如果已經損壞,需要重刷BootLoader。不過這個概率很小,我還沒有遇到過,這種情況只是有存在的可能而已。

十八、無法安裝驅動、地面站打不開

有時候,如果你遇到安裝MissionPlanner時無法成功安裝驅動,並且打開MissionPlanner時閃退或報錯,那麼大概率你的系統是Ghost版的Win7,這個系統為了精簡空間,刪除了一些普通用戶用不到的系統文件,而這些文件恰好是地面站軟體需要用到的(好坑),因此,推薦使用原版的Win7或者Win10,32位版本和64位版本都行。網上可以找到補上這些缺失文件的方法,但是還是建議安裝原版純凈系統,天知道Ghost系統還刪了別的什麼東西,又加了什麼不可告人的東西。

十九、提示「Bad AHRS」

如果地面站提示Bad AHRS,說明姿態解算有問題,大部分情況下,重新校準加速度後就可以解決這個問題。

二十、插上數傳電台後滑鼠亂跑

有時候,我們會遇到插上數傳電台後電腦滑鼠開始不受控制地亂跑的情況,這種情況出現的原理如下:

1、飛機先上電,飛控和天空端數傳電台開始工作,默認情況下飛控開始通過數傳電台下發心跳幀,1秒鍾一次;

2、然後,插入地面電台,地面電台上電後立即收到了天空端發過來的數據,並開始轉發給電腦;

3、在地面電台剛插入時,電腦開始識別地面電台並載入驅動,這時地面電台又在不斷發送數據給電腦,從而電腦把地面電台識別成了一個「串口軌跡球」或者「串口滑鼠」,進而開始利用地面電台發送過來的數據控制滑鼠移動。

基於上述原理,解決方法很簡單:先插地面電台,然後再飛機上電。

二十一、固定翼舵機抖動

如果你在調試固定翼的時候,出現舵機奇怪抖動現象,那麼請按照如下步驟一步步檢測:

B. 四軸飛行器需要哪些單片機知識

卡爾曼濾波(或互補濾波),四元數,計算機系統結構,C語言,單片機(I2C(感測器通信),串口(調試調參),定時器(PWM輸入輸出)),可以在了解了以後去借鑒一些開源項目例如MWC和海盜飛控(APM太過復雜不建議看)。另外去各大論壇和群裡面潛水也是非常有必要的。單片機有幾個推薦,現在的開源飛控大部分是AVR(MWC,海盜),8位單片機,需要很強的優化代碼的功力才能駕馭。推薦Cortex-M0、Cortex-M3 ARM的控制器性能比較強大,比較適合自己寫代碼,還有強大的官方庫函數支持,祝你成功。

閱讀全文

與apm固件編譯到單片機相關的資料

熱點內容
手機系統編譯語言 瀏覽:422
華為手機nfc加密卡怎麼復制 瀏覽:19
androidjni開發流程 瀏覽:881
如何解除vivo應用加密鎖 瀏覽:732
菜單創建文件夾方法 瀏覽:376
o型密封圈壓縮率 瀏覽:452
lpilinux認證 瀏覽:205
編譯文法原理是什麼 瀏覽:16
python基礎教程源代碼 瀏覽:521
編程兩個圈是什麼 瀏覽:433
程序員掉頭發怎麼辦 瀏覽:317
csgo電腦命令 瀏覽:590
pop和smtp伺服器地址 瀏覽:524
使用境外伺服器有什麼好處和弊端 瀏覽:314
如何教育孩子有禮貌的app 瀏覽:46
如何下載得力app 瀏覽:900
安卓如何切換分屏 瀏覽:529
python遞歸刪除文件夾 瀏覽:823
程序員那麼可愛被安排婚禮 瀏覽:654
農業銀行app如何查看自己卡號 瀏覽:158