大家好,我是專注分享職業(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ù)處理和控制邏輯。
電機(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;
}
通過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)注,也歡迎圍觀我的朋友圈感悟方法論分享~