我自己在校期间也是做无人车和四轴出身的,当然我的推动手段是靠比赛,这确实是个好方法,不过这不是今天的主题,感兴趣的话之后专门在写。PS:文末有提供的参考资源链接,欢迎自取。
首先是基础知识的积累下边几个原则上是必备的技能,但是初学也不必过分纠结先大致入个门就可以,不要因为细节放弃大目标。
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模块
我能提供:(8年资深工程师+职业规划师)??【一年陪跑咨询】:10000/年??【1v1咨询】:500/小时??《嵌入式工程师练级之路》专栏?:365元/10合1专栏
关于作者:你好,我是Allen康哥,CSDN嵌入式领域博客专家,知乎嵌入式领域优质答主,嵌入式技术垂直领域粉丝15万+。现任世界500强外企高级软件开发工程师,有多年国企和外企嵌入式行业工作经验,擅长嵌入式行业学习规划,单片机和嵌入式Linux学习规划,嵌入式硬件转软件学习规划,简历及offer咨询,报考/考研咨询等,欢迎留言交流!