當前位置:首頁 » 編程軟體 » pixhawk源碼編譯

pixhawk源碼編譯

發布時間: 2022-12-11 00:02:28

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

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

二十一、固定翼舵機抖動

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

  • 數傳電台、圖傳電台的天線是否與舵機信號線挨得太近,我經過大量測試發現,電台天線距離舵機信號太近,特別是二者平行放置時,電台發射出的信號會大量耦合到舵機信號線中,這時通過示波器看舵機信號線上的PWM波,會發現它完全被干擾成了非常雜亂的波形,從而舵機的控制電路會接收到錯誤的控制信息,進而發生舵機抖動的情況。因此,請盡量將圖傳天線、數傳天線和舵機線的距離保持在5cm以上,並且最好二者處於垂直關系(對於鞭狀天線,此時耦合能量最少)。注意,對於電調信號線,這個干擾同樣存在,只不過一般不會被大家注意到,大家布線時同樣要注意這一點;

  • 連接地面站,在MissionPlanner中遙控器校準頁面查看遙控器各個通道的輸入值是否在跳動,如果在跳動,請檢查遙控器接收機連線是否松動、遙控器本身是否損壞;如果飛控收到的遙控器的輸入值沒有跳動,說明問題出在「飛控」->「舵機信號線」->「舵機」這一段:a、檢查飛控各個輸出通道的最大值和最小值是否設置正確,有的模友出現過舵機控制通道最大值設置為1515,最小值設置為1514的情況,此時對飛控來講輸出通道的行程只有1,從而導致程序混亂,飛控輸出信號本身就在不斷跳動,將這個通道設置為正常的1100~1900范圍後舵機不再跳動;b、舵機信號線是否虛接?c、舵機本身壞了?換個舵機試試;

  • 會不會是供電不足導致的?對於較大翼展的飛機,使用了多個較大功率的舵機,同時使用了較小的電源模塊,導致峰值功率不足,電源模塊反復保護重啟?先只保留一個舵機試試? 更換更大的電源模塊試試。

  • 二十二、MissionPlanner全部參數列表注釋消失

    如果遇到以前正常使用的MissionPlanner,有一天連上飛控後全部參數列表中的注釋全部消失了,根據我的經驗,按如下步驟操作可以解決:

    1、在控制面板中卸載MissionPlanner;

    2、刪除「此電腦」 -> 「文檔」 -> 「Mission Planner」文件夾

    3、下載並安裝最新版MissionPlanner,鏈接:http://www.nufeichuiyun.com/?p=62,此博文的第二條。

『貳』 如何進行pixhawk的串口調試

以下所描述的都是針對px4原生固件,此外,由於固件更新過於頻繁,本文描述的是15年7月的固件,主要是舉例,有改動的話,自己再研究研究吧(後面換cmake編譯方式了,改動蠻大)。

既然要做開發,第一步就是搭好開發環境,根據我的經驗,最好是在linux環境下編譯,這樣效率會很快,以前在windows下編譯,經常40分鍾以上,這樣就太影響開發了;
第二步,大概了解下固件的架構,

如果只涉及應用層的開發,那底層的nuttx系統就可以繞過去了,一般,最好先把uorb模塊的機制整明白就好了,從uorb入手,了解每個話題的來源以及作用,整理數據流,清楚每個模塊之間的關系即可,比如,要實現手動模式,哪些模塊互相交互,auto模式,又有哪些模塊起作用,
如果涉及相應演算法的開發,要學會定位到相應的演算法模塊,甚至具體到哪些代碼,比如,你想試驗你的姿態估計演算法,那你就將姿態估計模塊替換掉即可,不過相應的介面仍需要和px4環境一樣,以姿態估計為例,最後要發布你的vehicle_attitude話題,不然無法與其他模塊交互;

另外,不要試圖在代碼中找main函數,那是單片機思維,你只需看啟動腳本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,針對你的具體情況,定位相應的模塊,進行精讀研究,雖然模塊基本是用C++寫的,但是不會C++也沒關系,畢竟又不是讓你寫,本人倒目前為止,也不會C++,配合注釋,看明白就好了,比如,整理下mavlink的控制流程;

px4原生固件模塊列表:
系統命令程序
mavlink –通過串口發送和接收mavlink信息
sdlog2 –保存系統日誌/飛行數據到SD卡
tests –測試系統中的測試程序
top –列出當前的進程和CPU負載
uORB – 微對象請求代理器-分發其他應用程序之間的信息
驅動
mkblctrl–blctrl電子模塊驅動
esc_calib –ESC的校準工具
fmu –FMU引腳輸入輸出定義
gpio_led –GPIOLED驅動
gps –GPS接收器驅動
pwm –PWM的更新速率命令
sensors –感測器應用
px4io –px4io驅動
uavcan –uavcan驅動
飛行控制的程序
飛行安全和導航
commander –主要飛行安全狀態機
navigator –任務,失效保護和RTL導航儀
估計姿態和位置
attitude_estimator_ekf –基於EKF的姿態估計
ekf_att_pos_estimator –基於EKF的姿態和位置估計
position_estimator_inav–慣性導航的位置估計
multirotor姿態和位置控制器
mc_att_control–multirotor姿態控制器
mc_pos_control –multirotor位置控制器
fixedwing姿態和位置控制器
fw_att_control –固定翼飛機的姿態控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿態控制器
vtol_att_control –垂直起降姿態控制器
最後提一句,多看看官網的說明,另外根據本人的經驗來看,由於大框架,代碼人家都寫好了,通常你要加功能,所修改的也就幾行代碼而已,舉例說明,比如px4固件只能在手動模式解鎖,假如我要修改成定高模式解鎖

『叄』 pixhawk 軟體開發用什麼編譯器

pixhawk 軟體開發編譯器:
中文官網推薦的是:兩款推薦的編譯器分別為Sublime Text 3(不受限制的「自由」編譯,可在Windows,Linux和Macintosh系統上運行)和Notepad+ +(免費,開源)。 當然可以使用eclipse。
另外官網提供win、linux、mac下的開發包,使用git管理。

『肆』 如何用開源飛控Pixhawk進行二次開發

以下所描述的都是針對px4原生固件,此外,由於固件更新過於頻繁,本文描述的是15年7月的固件,主要是舉例,有改動的話,自己再研究研究吧(後面換cmake編譯方式了,改動蠻大)。

既然要做開發,第一步就是搭好開發環境,根據我的經驗,最好是在linux環境下編譯,這樣效率會很快,以前在windows下編譯,經常40分鍾以上,這樣就太影響開發了;
第二步,大概了解下固件的架構,

如果只涉及應用層的開發,那底層的nuttx系統就可以繞過去了,一般,最好先把uorb模塊的機制整明白就好了,從uorb入手,了解每個話題的來源以及作用,整理數據流,清楚每個模塊之間的關系即可,比如,要實現手動模式,哪些模塊互相交互,auto模式,又有哪些模塊起作用,
如果涉及相應演算法的開發,要學會定位到相應的演算法模塊,甚至具體到哪些代碼,比如,你想試驗你的姿態估計演算法,那你就將姿態估計模塊替換掉即可,不過相應的介面仍需要和px4環境一樣,以姿態估計為例,最後要發布你的vehicle_attitude話題,不然無法與其他模塊交互;

另外,不要試圖在代碼中找main函數,那是單片機思維,你只需看啟動腳本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,針對你的具體情況,定位相應的模塊,進行精讀研究,雖然模塊基本是用C++寫的,但是不會C++也沒關系,畢竟又不是讓你寫,本人倒目前為止,也不會C++,配合注釋,看明白就好了,比如,整理下mavlink的控制流程;

px4原生固件模塊列表:
系統命令程序
mavlink –通過串口發送和接收mavlink信息
sdlog2 –保存系統日誌/飛行數據到SD卡
tests –測試系統中的測試程序
top –列出當前的進程和CPU負載
uORB – 微對象請求代理器-分發其他應用程序之間的信息
驅動
mkblctrl–blctrl電子模塊驅動
esc_calib –ESC的校準工具
fmu –FMU引腳輸入輸出定義
gpio_led –GPIOLED驅動
gps –GPS接收器驅動
pwm –PWM的更新速率命令
sensors –感測器應用
px4io –px4io驅動
uavcan –uavcan驅動
飛行控制的程序
飛行安全和導航
commander –主要飛行安全狀態機
navigator –任務,失效保護和RTL導航儀
估計姿態和位置
attitude_estimator_ekf –基於EKF的姿態估計
ekf_att_pos_estimator –基於EKF的姿態和位置估計
position_estimator_inav–慣性導航的位置估計
multirotor姿態和位置控制器
mc_att_control–multirotor姿態控制器
mc_pos_control –multirotor位置控制器
fixedwing姿態和位置控制器
fw_att_control –固定翼飛機的姿態控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿態控制器
vtol_att_control –垂直起降姿態控制器
最後提一句,多看看官網的說明,另外根據本人的經驗來看,由於大框架,代碼人家都寫好了,通常你要加功能,所修改的也就幾行代碼而已,舉例說明,比如px4固件只能在手動模式解鎖,假如我要修改成定高模式解鎖

『伍』 如何用eclipse編譯pixhawk飛控

PIXHAWk飛控介紹
http://wenku..com/link?url=_-c2y0ldnBdsweVfOjC5-WPoa

『陸』 如何用開源飛控PIXHAWK進行開發

想快速開發一個飛控,那首先要做的是了解apm的各種參數配置,了解每個參數的影響和起作用的代碼功能塊,用apm適配自己的機型還是需要修改,優化,和裁剪。正如克里斯安德森說希望APM做無人機行業的安卓,但是安卓的性能也只能是差強人意,比無人機行業的IOS大疆創新來說還差很多。
飛控行業或者研究領域應用,例如開發測繪手機app,無人機送快遞等等(傾向於demo性質)...這種應用不需要做一個飛控,首先大概了解飛控的原理,然後只要掌握apm的控制數據協議即可。
發燒級的愛好者或者開發者,迫切的想要了解apm的大部分演算法和邏輯,這個真的需要較長的時間,大致的思路就是:底層驅動-》感測器數據和物理意義-》姿態解算-》PID控制器-》飛行模式切換-》參數調優(包含gps懸停剎車什麼的很細但是影響手感和性能的參數)初學只是去看apm而不是自己動手去做很難搞懂,建議還是自己做飛控,哪怕復制apm部分功能代碼,做飛控的學習順序和讀飛控一樣,但對於apm這樣一個系統工程相對來說模塊更分立。

『柒』 arino如何輸出一個數組如位置坐標(x,y).不是賦值而是輸出。

可以試一下把println(x,y);改成:
print("("); print(x); print(","); print(y); println(")");
把數組拆分輸出

『捌』 編譯pixhawk提示-Wfatal出錯怎麼辦

下載一個eclipse IDE for JAVA Developer軟體
下載一個ADT插件。
打開eclipse開發環境,點擊help----install new software-------add
新建一個android系統環境變數,將SDK文件夾的platform-tools文件夾路徑和tools文件夾路徑添加上去。
在PATH變數中添加你修改的環境變數,篩選你需要編譯的文件。

『玖』 怎麼給pixhawk空板刷bootloader

步驟:

1.編譯最新的bootloader。 從github下載最新的bootloader,make編譯,得到px4io_bl.bin和px4fmu2_bl.bin文件;
2. 打開J-Link,注意最好用高版本的,我的用的是V4.74b。刷F100 MCU時,選擇STM32F100C8.jflash,如下圖:

5. 最後,connect連接,erase chip擦除整塊flash,最後program或者Auto下載bin文件,成功了會有success的提示。
6. 這樣就可以了,之後就可以用mission planner通過USB刷固件。

『拾』 ubuntu 環境下怎樣編譯pixhawk px4源碼

Ubuntu環境下Pixhawk原生固件PX4的編譯
分類:無人機ubuntu代碼編譯Pixhawk
(3946) (6)
Ubuntu下Pixhawk原生固件PX4的編譯這個問題困擾了兩天時間,可能是博主腦力不夠,主要是環境搭建不起來,主要原因應該是路徑的原因,最後在大師傅的幫助下還好成功將路徑搭建好,成功編譯。

下面就跟大家分享一下環境搭建的過程。

1.操作環境

每次寫文章,環境一定要介紹的,不同的環境總會出現不同的問題

我的環境是Windows下面安裝虛擬機,虛擬機跑Ubuntu

Windows:win10 64位

虛擬機:VMware Workstation 12 Pro 12.1.0 build-3272444

Ubuntu:Ubuntu15.10

2.編譯環境搭建

(1)許可權設置

官方提示:

Warning Never ever fix permission problems by using 'sudo'. It will create more permission problems in the process and require a system reinstallation to fix them.
意思是你會遇到許可權問題,不要用sudo解決,那樣會帶來更多問題,但是我沒聽他的,我沒用,最後也是實現了

官方提供指令

[plain] view plain

然後注銷,重新登錄生效

(2)安裝

更新包列表,安裝下面編譯PX4的依賴包。PX4主要支持的系列:

NuttX based hardware: Pixhawk, Pixfalcon
Snapdragon Flight hardware: Snapdragon
Raspberry Pi hardware: Raspberry Pi 2
Host simulation: jMAVSim SITL and Gazebo SITL

注意:安裝Ninja Build System可以比make更快進行編譯。如果安裝了它就會自動選擇使用它進行編譯。

[plain] view plain
卸載模式管理器

[plain] view plain

更新包列表和安裝下面的依賴包。務必安裝指定的版本的包

[plain] view plain

上面代碼中紅色部分大家需要一高警惕,gcc-arm-none-eabi版本導致PX4/Firmware編譯錯誤,現在apt-get安裝的gcc-arm-none-eabi基本上是4.9的版本,但是這個固件需要gcc-arm-none-eabi 4.8de 版本,所以最後安裝好以後,查看你的gcc-arm-none-eabi版本,如果是4.9需要手動安裝4.8的版本,安裝gcc-arm-none-eabi 4.8的版本的方法如下:

[plain] view plain

【Warning】上面紅色的路徑一定要添加正確,不然問題很多,我第一次就輸入錯誤,結果結果開不了機了,反復輸入密碼。博主裝的是Ubuntu 64位系統,而上述arm-none-eabi是直接下載的編譯好的32位,還需要安裝一個東西
[plain] view plain
可以檢查arm-none-eabi 4.8.4是否安裝成功,輸入以下指令:

[plain] view plain
如果出現如上信息,交叉編譯環境搭建就搭建成功了
(3)代碼編譯
根據PX4中文維基官網教程。
安裝Git

[plain] view plain
下載代碼

[plain] view plain
初始化
先進入Firmware文件夾,進而進行初始化、更新子模塊操作,耐心的等待……

[plain] view plain
許可權
編譯時會遇到許可權問題,執行指令

[plain] view plain
-R 是對文件下麵包含的子文件許可權問題,* 是對所有文件的許可權問題
編譯

[plain] view plain
注意到「make」是一個字元命令編譯工具,「px4fmu-v2」是硬體版本,「default」是默認配置,所有的PX4編譯目標遵循這個規則。
最後附一張編譯成功的代碼,如果這樣你還有問題,請給我留言。

[plain] view plain
-- nuttx-px4fmu-v2-default
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc
-- Found pythonInterp: /usr/bin/python (found version "2.7.10")
-- Using C++03
-- Release build type: RelWithDebInfo
-- Adding UAVCAN STM32 platform driver
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lihongwei/Documents/Firmware/build_px4fmu-v2_default
#+@Tools/check_submoles.sh
PX4 CONFIG: px4fmu-v2_default
Scanning dependencies of target git_mavlink
Scanning dependencies of target git_uavcan
Scanning dependencies of target git_gencpp
Scanning dependencies of target git_genmsg
[ 0%] Generating git_init_mavlink_include_mavlink_v1.0.stamp
[ 0%] Generating git_init_src_moles_uavcan_libuavcan.stamp
[ 0%] Generating git_init_Tools_genmsg.stamp
[ 0%] Generating git_init_Tools_gencpp.stamp
[ 0%] Built target git_uavcan
[ 0%] Built target git_mavlink
[ 0%] Built target git_genmsg
[ 0%] Built target git_gencpp

熱點內容
安卓系統怎麼注冊不了ins 發布:2024-05-19 14:01:00 瀏覽:960
買伺服器後怎麼搭建功能 發布:2024-05-19 14:00:03 瀏覽:207
windows文件夾圖標下載 發布:2024-05-19 13:25:44 瀏覽:689
資料庫存儲數據類型 發布:2024-05-19 13:25:28 瀏覽:584
電腦開機密碼忘記了如何解鎖沒有管理員窗口 發布:2024-05-19 13:24:50 瀏覽:277
暢捷支付刷臉機如何設置密碼 發布:2024-05-19 13:03:10 瀏覽:764
java麻將 發布:2024-05-19 13:03:00 瀏覽:433
存儲過程大數據游標 發布:2024-05-19 13:00:50 瀏覽:515
內存存儲價格 發布:2024-05-19 13:00:48 瀏覽:389
隔離期的演算法 發布:2024-05-19 12:55:13 瀏覽:530