大家好,我是專注分享職業(yè)規(guī)劃/技術科普/智能生活有關原創(chuàng)文章的allen康哥。
經常有同學給我留言說如何開始學習四軸無人機,我自己在校期間也是做無人車和四軸出身的,當然我的推動手段是靠比賽,這確實是個好方法,不過這不是今天的主題,感興趣的話之后專門在寫。文末有提供的參考資源鏈接,歡迎自取。
首先是基礎知識的積累
下邊幾個原則上是必備的技能,但是初學也不必過分糾結先大致入個門就可以,不要因為細節(jié)放棄大目標。
C語言編程:熟悉基礎概念,結構體、指針和中斷處理這種就可以。
數學基礎:PID控制算法、四元數姿態(tài)解算,比較難理解,先泛泛了解。
第二步是了解四軸硬件組成
四軸因為要考慮重點和載荷的問題,和小車還不一樣,小車可以自己隨便DIY就可以,四軸的學習我建議一開始開始參考成熟的套件最好,這個某寶很多,基本都可以。后邊熟悉了可以找些免費的開源硬件資源自己打板焊接下,順便還學習了硬件,成就感爆棚!
四軸的硬件組成主要有以下部分:
單片機(MCU):如STM32F411,負責數據處理和控制邏輯。
遙控器和接收機:遙控器也可以基于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占空比(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)文章的知識博主。歡迎關注,也歡迎圍觀我的朋友圈感悟方法論分享~