• 正文
    • 首先是基礎(chǔ)知識(shí)的積累
    • 第二步是了解四軸硬件組成
    • 第三步軟件開發(fā)環(huán)境搭建
    • 第四步軟件算法學(xué)習(xí)
    • 第五步調(diào)試工具及手段
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

從零開始學(xué)習(xí)四軸無人機(jī)開發(fā)詳解(文末附詳細(xì)資源鏈接)

05/01 11:25
567
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是專注分享職業(yè)規(guī)劃/技術(shù)科普/智能生活有關(guān)原創(chuàng)文章的allen康哥。

經(jīng)常有同學(xué)給我留言說如何開始學(xué)習(xí)四軸無人機(jī),我自己在校期間也是做無人車和四軸出身的,當(dāng)然我的推動(dòng)手段是靠比賽,這確實(shí)是個(gè)好方法,不過這不是今天的主題,感興趣的話之后專門在寫。文末有提供的參考資源鏈接,歡迎自取。

首先是基礎(chǔ)知識(shí)的積累

下邊幾個(gè)原則上是必備的技能,但是初學(xué)也不必過分糾結(jié)先大致入個(gè)門就可以,不要因?yàn)榧?xì)節(jié)放棄大目標(biāo)。

C語言編程:熟悉基礎(chǔ)概念,結(jié)構(gòu)體、指針和中斷處理這種就可以。

電路基礎(chǔ):能讀懂原理圖,使用萬用表測(cè)量電壓/電流

數(shù)學(xué)基礎(chǔ):PID控制算法、四元數(shù)姿態(tài)解算,比較難理解,先泛泛了解。

第二步是了解四軸硬件組成

四軸因?yàn)橐紤]重點(diǎn)和載荷的問題,和小車還不一樣,小車可以自己隨便DIY就可以,四軸的學(xué)習(xí)我建議一開始開始參考成熟的套件最好,這個(gè)某寶很多,基本都可以。后邊熟悉了可以找些免費(fèi)的開源硬件資源自己打板焊接下,順便還學(xué)習(xí)了硬件,成就感爆棚!

四軸的硬件組成主要有以下部分:

單片機(jī)MCU):如STM32F411,負(fù)責(zé)數(shù)據(jù)處理和控制邏輯。

傳感器MPU6050(陀螺儀+加速度計(jì))。

電機(jī)和電調(diào):常用的比如720空心杯電機(jī)。

遙控器接收機(jī):遙控器也可以基于STM32制作,無線連接使用2.4G比較常見。

電池電源管理:2S-4S鋰電池(7.4V-14.8V),需配低噪聲穩(wěn)壓模塊(如LM2596)。

第三步軟件開發(fā)環(huán)境搭建

到了這一步是難住大部分同學(xué)的門檻,其實(shí)對(duì)于初學(xué)者直接先看成熟的源碼學(xué)習(xí)是個(gè)不錯(cuò)的路徑,不過今天主要是分解下學(xué)習(xí)步驟,所以一步步分解下。

IDE:STM32CubeIDE(免費(fèi),集成HAL庫(kù))

燒錄工具:ST-Link V2

代碼管理:Git(非常推薦學(xué)習(xí)下,源代碼管理神器)

第四步軟件算法學(xué)習(xí)

這步還是一樣,初學(xué)可以直接看成熟的項(xiàng)目拆解學(xué)習(xí),不過本文還是說下主要的算法。

傳感器數(shù)據(jù)讀?。∕PU6050)

使用I2C協(xié)議讀取原始數(shù)據(jù),并進(jìn)行校準(zhǔn)和濾波:

// 示例:讀取陀螺儀數(shù)據(jù)
void?MPU6050_ReadGyro(int16_t?*gx,?int16_t?*gy,?int16_t?*gz)?{
? ??uint8_t?buf[6];
? ? HAL_I2C_Mem_Read(&hi2c1, MPU6050_ADDR, GYRO_XOUT_H_REG,?1, buf,?6,?100);
? ? *gx = (buf[0] <<?8) | buf[1];
? ? *gy = (buf[2] <<?8) | buf[3];
? ? *gz = (buf[4] <<?8) | buf[5];
}

 

PID控制器實(shí)現(xiàn)

實(shí)現(xiàn)比例-積分-微分控制算法:

typedef?struct?{
? ??float?Kp, Ki, Kd;
? ??float?integral;
? ??float?prev_error;
} PID;

float?PID_Update(PID *pid,?float?error,?float?dt)?{
? ? pid->integral += error * dt;
? ??float?derivative = (error - pid->prev_error) / dt;
? ? pid->prev_error = error;
? ??return?pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative;
}

 

電機(jī)控制

通過PWM信號(hào)調(diào)節(jié)電機(jī)轉(zhuǎn)速

// 設(shè)置電機(jī)PWM占空比(0-1000對(duì)應(yīng)0%-100%)
void?Motor_SetSpeed(uint8_t?motor_id,?uint16_t?duty)?{
? ? TIM_OC_InitTypeDef pwm_config = {0};
? ? pwm_config.Pulse = duty;
? ? pwm_config.OCMode = TIM_OCMODE_PWM1;
? ? HAL_TIM_PWM_ConfigChannel(&htim3, &pwm_config, motor_id);
? ? HAL_TIM_PWM_Start(&htim3, motor_id);
}

第五步調(diào)試工具及手段

做電子類項(xiàng)目開發(fā),一定要會(huì)調(diào)試,不然基本等于沒入門!

串口調(diào)試:使用串口調(diào)試工具查看傳感器打印數(shù)據(jù),也可以用匿名調(diào)試工具這種集成的四軸專業(yè)工具。

示波器:必備工具,可以檢查PWM信號(hào)波形,協(xié)議時(shí)序報(bào)文等,如果財(cái)力有效,可以買些低速率的開源硬件,也能先撐著用。

最后是一些可以借鑒參考的項(xiàng)目資源:

Crazepony微型四軸

定位:面向大學(xué)生和創(chuàng)客的開源平臺(tái),主控采用STM32F103,支持二次開發(fā)。

資源:提供原理圖、飛控源碼(含PID調(diào)參示例)及3D打印模型文件

http://www.crazepony.com/

匿名飛控(ANOFly)

功能:基于STM32F4的飛控系統(tǒng),集成MPU6050姿態(tài)解算、PID控制算法,支持匿名上位機(jī)實(shí)時(shí)數(shù)據(jù)監(jiān)控。

亮點(diǎn):提供完整的Matlab仿真模型,便于調(diào)試姿態(tài)融合算法。

應(yīng)用:適合研究四元數(shù)解算和傳感器濾波技術(shù)

https://www.anotc.com/wiki/welcome

正點(diǎn)原子ATK-MiniFly系列

特點(diǎn):完整開源硬件(原理圖、PCB)和軟件(FreeRTOS實(shí)時(shí)系統(tǒng)),支持光流定高、手機(jī)APP遙控、4D空翻等特性。

硬件配置:STM32F4主控 + MPU9250/BMP280傳感器 + NRF24L01通信模塊,成本控制在300元以內(nèi)。

學(xué)習(xí)資源:提供用戶手冊(cè)、固件源碼(V1.0-V1.4)、常見問題解答

http://www.openedv.com/docs/fouraxis-fly/minifly.html

國(guó)外的一些開源項(xiàng)目:

Betaflight

GitHub地址:https://github.com/betaflight/betaflight

特點(diǎn):專注于競(jìng)速無人機(jī)的高性能飛控,支持STM32系列MCU(如F4/F7)。

提供豐富的調(diào)參接口(PID、濾波器、電機(jī)映射等)。

內(nèi)置黑匣子(數(shù)據(jù)記錄)和OSD(屏幕顯示)功能。

適用場(chǎng)景:競(jìng)速、穿越機(jī)、FPV(第一視角飛行)。

學(xué)習(xí)資源:官方文檔詳細(xì),社區(qū)活躍(Betaflight Discord群組)。

PX4 Autopilot

GitHub地址:https://github.com/PX4/PX4-Autopilot

特點(diǎn):由Dronecode基金會(huì)維護(hù),支持多旋翼、固定翼等多種無人機(jī)類型。

提供完整的自主飛行功能(路徑規(guī)劃、避障、RTK定位)。

兼容硬件:Pixhawk系列飛控(如Pixhawk 4, Cube Orange)。

適用場(chǎng)景:科研、農(nóng)業(yè)測(cè)繪、物流運(yùn)輸。

亮點(diǎn):與ROS(機(jī)器人操作系統(tǒng))深度集成,適合開發(fā)復(fù)雜應(yīng)用。

 

ArduPilot(這是我第一份工作參考學(xué)習(xí)的資料)

GitHub地址:https://github.com/ArduPilot/ardupilot

特點(diǎn):歷史悠久的開源飛控,支持超過200種飛行平臺(tái)。

功能涵蓋自動(dòng)起飛、航線飛行、自動(dòng)返航等。

硬件兼容性廣(從STM32到Linux單板機(jī))。

適用場(chǎng)景:教育、農(nóng)業(yè)、航拍。

工具鏈:Mission Planner(地面站軟件)提供可視化控制。

 

MicroDrone(空心杯四軸)

教程鏈接:https://github.com/MicroDrone/MicroDrone

特點(diǎn):使用Arduino Nano和空心杯電機(jī),成本低于100元。

提供從焊接、調(diào)參到飛行的完整教程。

硬件清單:

電機(jī):8520空心杯

傳感器:MPU6050

遙控:NRF24L01模塊

關(guān)于作者:我是Allen,持續(xù)更新職業(yè)規(guī)劃/技術(shù)科普/智能生活有關(guān)原創(chuàng)文章的知識(shí)博主。歡迎關(guān)注,也歡迎圍觀我的朋友圈感悟方法論分享~

相關(guān)推薦