本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线 , 链接如下: https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983
无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284
一、不同类别的载具分不同的文件夹
- ArduCopter——多旋翼
- ArduPlane——固定翼
- APMrover2——无人车
- ArduSub——潜水艇
- AntennaTracker——跟踪天线
二、不同载具有各自的顶层源文件
- 各自的顶层文件
- 对于多旋翼固件,Copter-4.0.0之后的固件代码,顶层文件改为了“ArduCopter/Copter.cpp”,而之前的代码,顶层文件为“ArduCopter/ArduCopter.cpp”,二者只是名字变化了,内容变化不大(APM代码结构在不断优化,以后会越来越统一);
- 对于固定翼固件,顶层文件一直都是“ArduPlane/ArduPlane.cpp”;
- 对于无人车固件,Rover-4.0.0之后的固件代码,顶层文件改为了“APMrover2/Rover.cpp”,而之前的代码,顶层文件为“APMrover2/APMrover2.cpp”;
- 各自的模式
- 各自的独有参数
- 各自的通信逻辑
- 各自的控制逻辑
三、不同载具公用相同的底层文件
- 相同的驱动文件,比如:
- libraries/AP_Camera,相机控制
- libraries/AP_Baro,这里面包含了气压高度计的驱动
- libraries/AP_GPS,GPS驱动,负责解析各种型号的GPS发送过来的数据帧
- libraries/DataFlash,日志管理
- libraries/AP_RAMTRON,FRAM芯片驱动,飞控的参数、航线都是存储在这个芯片中的,但是注意这个驱动是最底层的芯片读写驱动,更高层的参数读写、航线读写不在这里
- libraries/AP_Notify,飞控状态指示器驱动,包含了RGB LED驱动、蜂鸣器驱动。其中RGBLed.cpp里面是控制RGB LED在不同状态下闪烁颜色的代码
- libraries/AP_InertialSensor,这里面包含了所有IMU芯片的驱动(老版源代码里可能没有这个文件夹)。其中AP_InertialSensor_Invensense.cpp中包含了MPU6000、MPU9250、ICM20608、ICM20602、ICM20601、ICM20789、ICM20689的驱动;AP_InertialSensor_Invensensev2.cpp中包含了ICM20948、 ICM20648、ICM20649的驱动;AP_InertialSensor_Invensensev3.cpp中包含了ICM-40609、ICM-42688、ICM-42605、ICM-40605 – EOL、IIM-42652、ICM-42670的驱动
- 2024年3月14日更新:此处会不断更新,方便大家研究程序时快速定位目标代码的位置
- 相同的姿态解算算法
- 相同的位置解算算法
- 相同的PID控制算法(但是部分代码会根据载具类型进行区分)
四、第三方子模块相同
- Mavlink
- UAVCAN
- ChibiOS
无人机调试,飞控硬件定制,固件修改,log日志分析,飞控驱动添加
请QQ联系:3500985284
微信公众号:“怒飞垂云”,扫描下图添加
