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

從零開始學習四軸無人機開發(fā)詳解(文末附詳細資源鏈接)

7小時前
275
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

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

首先是基礎知識的積累

下邊幾個原則上是必備的技能,但是初學也不必過分糾結先大致入個門就可以,不要因為細節(jié)放棄大目標。

C語言編程:熟悉基礎概念,結構體、指針和中斷處理這種就可以。

電路基礎:能讀懂原理圖,使用萬用表測量電壓/電流。

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

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

四軸因為要考慮重點和載荷的問題,和小車還不一樣,小車可以自己隨便DIY就可以,四軸的學習我建議一開始開始參考成熟的套件最好,這個某寶很多,基本都可以。后邊熟悉了可以找些免費的開源硬件資源自己打板焊接下,順便還學習了硬件,成就感爆棚!

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

單片機MCU):如STM32F411,負責數據處理和控制邏輯。

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

電機和電調:常用的比如720空心杯電機。

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

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

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

到了這一步是難住大部分同學的門檻,其實對于初學者直接先看成熟的源碼學習是個不錯的路徑,不過今天主要是分解下學習步驟,所以一步步分解下。

IDE:STM32CubeIDE(免費,集成HAL庫)

燒錄工具:ST-Link V2

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

第四步軟件算法學習

這步還是一樣,初學可以直接看成熟的項目拆解學習,不過本文還是說下主要的算法。

傳感器數據讀?。∕PU6050)

使用I2C協議讀取原始數據,并進行校準和濾波:

// 示例:讀取陀螺儀數據
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控制器實現

實現比例-積分-微分控制算法:

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;
}

 

電機控制

通過PWM信號調節(jié)電機轉速

// 設置電機PWM占空比(0-1000對應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);
}

第五步調試工具及手段

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

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

示波器:必備工具,可以檢查PWM信號波形,協議時序報文等,如果財力有效,可以買些低速率的開源硬件,也能先撐著用。

最后是一些可以借鑒參考的項目資源:

Crazepony微型四軸

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

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

http://www.crazepony.com/

匿名飛控(ANOFly)

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

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

應用:適合研究四元數解算和傳感器濾波技術

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

正點原子ATK-MiniFly系列

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

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

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

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

國外的一些開源項目:

Betaflight

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

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

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

內置黑匣子(數據記錄)和OSD(屏幕顯示)功能。

適用場景:競速、穿越機、FPV(第一視角飛行)。

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

PX4 Autopilot

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

特點:由Dronecode基金會維護,支持多旋翼、固定翼等多種無人機類型。

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

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

適用場景:科研、農業(yè)測繪、物流運輸。

亮點:與ROS(機器人操作系統)深度集成,適合開發(fā)復雜應用。

 

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

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

特點:歷史悠久的開源飛控,支持超過200種飛行平臺。

功能涵蓋自動起飛、航線飛行、自動返航等。

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

適用場景:教育、農業(yè)、航拍。

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

 

MicroDrone(空心杯四軸)

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

特點:使用Arduino Nano和空心杯電機,成本低于100元。

提供從焊接、調參到飛行的完整教程。

硬件清單:

電機:8520空心杯

傳感器:MPU6050

遙控:NRF24L01模塊

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

相關推薦