大家好,我是专注分享职业规划/技术科普/智能生活有关原创文章的allen康哥。
经常有同学给我留言说如何开始学习四轴无人机,我自己在校期间也是做无人车和四轴出身的,当然我的推动手段是靠比赛,这确实是个好方法,不过这不是今天的主题,感兴趣的话之后专门在写。文末有提供的参考资源链接,欢迎自取。
首先是基础知识的积累
下边几个原则上是必备的技能,但是初学也不必过分纠结先大致入个门就可以,不要因为细节放弃大目标。
C语言编程:熟悉基础概念,结构体、指针和中断处理这种就可以。
数学基础:PID控制算法、四元数姿态解算,比较难理解,先泛泛了解。
第二步是了解四轴硬件组成
四轴因为要考虑重点和载荷的问题,和小车还不一样,小车可以自己随便DIY就可以,四轴的学习我建议一开始开始参考成熟的套件最好,这个某宝很多,基本都可以。后边熟悉了可以找些免费的开源硬件资源自己打板焊接下,顺便还学习了硬件,成就感爆棚!
四轴的硬件组成主要有以下部分:
单片机(MCU):如STM32F411,负责数据处理和控制逻辑。
遥控器和接收机:遥控器也可以基于STM32制作,无线连接使用2.4G比较常见。
电池和电源管理:2S-4S锂电池(7.4V-14.8V),需配低噪声稳压模块(如LM2596)。
第三步软件开发环境搭建
到了这一步是难住大部分同学的门槛,其实对于初学者直接先看成熟的源码学习是个不错的路径,不过今天主要是分解下学习步骤,所以一步步分解下。
IDE:STM32CubeIDE(免费,集成HAL库)
烧录工具:ST-Link V2
代码管理:Git(非常推荐学习下,源代码管理神器)
第四步软件算法学习
这步还是一样,初学可以直接看成熟的项目拆解学习,不过本文还是说下主要的算法。
传感器数据读取(MPU6050)
使用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);
}
第五步调试工具及手段
做电子类项目开发,一定要会调试,不然基本等于没入门!
串口调试:使用串口调试工具查看传感器打印数据,也可以用匿名调试工具这种集成的四轴专业工具。
示波器:必备工具,可以检查PWM信号波形,协议时序报文等,如果财力有效,可以买些低速率的开源硬件,也能先撑着用。
最后是一些可以借鉴参考的项目资源:
Crazepony微型四轴
定位:面向大学生和创客的开源平台,主控采用STM32F103,支持二次开发。
资源:提供原理图、飞控源码(含PID调参示例)及3D打印模型文件
http://www.crazepony.com/
匿名飞控(ANOFly)
功能:基于STM32F4的飞控系统,集成MPU6050姿态解算、PID控制算法,支持匿名上位机实时数据监控。
亮点:提供完整的Matlab仿真模型,便于调试姿态融合算法。
应用:适合研究四元数解算和传感器滤波技术
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(第一视角飞行)。
学习资源:官方文档详细,社区活跃(Betaflight Discord群组)。
PX4 Autopilot
GitHub地址:https://github.com/PX4/PX4-Autopilot
特点:由Dronecode基金会维护,支持多旋翼、固定翼等多种无人机类型。
提供完整的自主飞行功能(路径规划、避障、RTK定位)。
兼容硬件:Pixhawk系列飞控(如Pixhawk 4, Cube Orange)。
适用场景:科研、农业测绘、物流运输。
亮点:与ROS(机器人操作系统)深度集成,适合开发复杂应用。
ArduPilot(这是我第一份工作参考学习的资料)
GitHub地址:https://github.com/ArduPilot/ardupilot
特点:历史悠久的开源飞控,支持超过200种飞行平台。
功能涵盖自动起飞、航线飞行、自动返航等。
硬件兼容性广(从STM32到Linux单板机)。
适用场景:教育、农业、航拍。
工具链:Mission Planner(地面站软件)提供可视化控制。
MicroDrone(空心杯四轴)
教程链接:https://github.com/MicroDrone/MicroDrone
特点:使用Arduino Nano和空心杯电机,成本低于100元。
提供从焊接、调参到飞行的完整教程。
硬件清单:
电机:8520空心杯
传感器:MPU6050
遥控:NRF24L01模块
关于作者:我是Allen,持续更新职业规划/技术科普/智能生活有关原创文章的知识博主。欢迎关注,也欢迎围观我的朋友圈感悟方法论分享~
5256