国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

電子工程網(wǎng)

標(biāo)題: 【飛控開發(fā)高級(jí)教程1】瘋殼·開源編隊(duì)無人機(jī)-飛控整機(jī)代碼走讀、編譯與燒寫 [打印本頁]

作者: Linda-x    時(shí)間: 2022-7-27 11:02
標(biāo)題: 【飛控開發(fā)高級(jí)教程1】瘋殼·開源編隊(duì)無人機(jī)-飛控整機(jī)代碼走讀、編譯與燒寫
COCOFLY教程
——瘋殼·無人機(jī)系列
飛控整機(jī)代碼走讀、編譯與燒寫





圖1


一、代碼架構(gòu)
  飛控的整體代碼工程由 8 個(gè)工作組組成,分別是 Ctrl、Driver、VL53L1X、STM32_LIB、USB、USB/Lib、StartUP 以及 Drv_Point,如下圖所示。


圖2
  各個(gè)組的具體的代碼功能如下表所示。


表1

二、代碼走讀

  系統(tǒng)的主函數(shù)部分是整個(gè)代碼的起始運(yùn)行位置,在主函數(shù)內(nèi)主要做兩個(gè)事情:1、初始化外設(shè)及參數(shù),2、輪詢線程。


圖3
  系統(tǒng)的每一個(gè)線程都已經(jīng)分配好了運(yùn)行周期,在不同的線程里執(zhí)行不同的事情,線程的切換通過函數(shù)指針的形式切換,而系統(tǒng)的運(yùn)行時(shí)間由 sysTick 提供即系統(tǒng)的“滴答”時(shí)鐘。各個(gè)線程的入口如下。


圖4
  分別有 1000ms 周期的任務(wù)、50ms 周期的任務(wù)、20ms 周期的任務(wù)、10ms 周期的任務(wù)、6ms 周期的任務(wù)、4ms 周期的任務(wù)、3ms 周期的任務(wù)以及 2ms 周期的任務(wù)。
  整個(gè)飛控可以平穩(wěn)飛行,重點(diǎn)在于控制部分,即工作組“Ctrl”里面的代碼。如下圖所示為“Ctrl”組的代碼框架。


圖5
  其中與遙控器、上位機(jī)的數(shù)據(jù)通信處理包含在 Data_Transfers.c 內(nèi)。里面無非就是對(duì)數(shù)據(jù)包進(jìn)行拆解包、封裝包等。如下圖所示為對(duì)接收到的遙控器數(shù)據(jù)進(jìn)行解包分析的代碼。














  三軸數(shù)據(jù)的獲取處理在 mpu_perpare.c 內(nèi),如下圖所示。




圖15
  PID 控制相關(guān)代碼集中在 Ctrl.c 及 Alt_Ctrl.c 內(nèi),其中 Ctrl.c 負(fù)責(zé)角度環(huán)、角速度環(huán) PID 控制,而 Alt_Ctrl.c 則負(fù)責(zé)高度環(huán)、高度速度環(huán)的 PID 控制。
  IMU.c 和 MotionCal.c 是保證整個(gè)飛控平穩(wěn)飛行的重要一環(huán),這兩個(gè) c 文件主要負(fù)責(zé)飛控的姿態(tài)解算、數(shù)據(jù)融合處理等。


  工作組“USB”以及“USB/Lib”,負(fù)責(zé)通過 STM32 自帶的 USB,虛擬出串口,方便與上位機(jī)進(jìn)行通信。
  此外為了保護(hù)開發(fā)者的勞動(dòng)成果,Player_Flight.lib 還封裝了秘鑰驗(yàn)證激活算法、多機(jī)編隊(duì)控制、水平方向的速度和位置環(huán)的 PID 控制以及 3D 翻滾控制代碼。
  保存、編譯最后把代碼燒寫的飛控主板中,配合遙控器就可以正常使用了。如下圖所示 1 為保存、2 為編譯、3 為下載燒寫。


圖16




如需定制開發(fā),請(qǐng)通過官網(wǎng)“瘋殼”網(wǎng)頁底部的“聯(lián)系我們”進(jìn)行聯(lián)系

文件下載請(qǐng)點(diǎn)擊: 【1】飛控整機(jī)代碼走讀、編譯與燒寫.pdf (1.17 MB)






歡迎光臨 電子工程網(wǎng) (http://www.4huy16.com/) Powered by Discuz! X3.4