PX4原生固件源码分析(挖坑)--1、代码结构

写在开头

最近开始学习PX4源码,并进行二次开发,苦于网上缺少有关PX4源码的分析,于是在这开个坑,记录自己学习PX4的过程,以此自勉,笔者第一次写博客,若有不足之处,还请多包涵。

硬件、固件版本

硬件:雷迅V5+飞控

源码版本:v1.11(PX4固件源码在20年有一次很大的改动)

编译固件命令:make px4_fmu-v5(默认编译的是default固件)

参考链接:PX4 飞控源码系统框架介绍 - 徐景祥 - 博客园 (cnblogs.com)

代码结构

PX4源码文件如下图:(笔者会根据个人理解说明,出错之处敬请指出)

1、boards文件夹

boards文件夹中是各版本固件的编译脚本,比如笔者用的v5固件,路径为Firmware\boards\px4\fmu-v5

其中default.cmake文件就是总的编译脚本,之后若是添加新的模块,也要在这个文件中写入模块名称。

2、build文件夹

执行make px4_fmu-v5命令编译后生成的文件,见保存在build文件夹下,如下图所示:

px4_fmu-v5_default是编译v5固件生成的。

px4_sitl_default是只是make px4_sitl_default进行gazebo仿真编译生成的。

3、mavlink文件夹

包含了mavlink协议所用的文件,包括基本的msg内容,以及通过mavlink代码生成工具生成的h文件。mavlink分为1.0和2.0两个版本,现PX4用的就是2.0版本的mavlink协议,主要是负责和QGC地面站进行通信。

4、msg文件夹

包含了uORB所用的所用msg的内容,在PX4各进程之间传递的就是这些msg。同时我们也可以参照其格式定义自己的msg,这会在后面给出具体方法。

5、ROMFS文件夹

ROM file_system 的简写,内部的 px4fmu_common 文件夹中的 init.d 是关于 px4 系统初始上电启动的启动脚本,即一系列的启动过程和系统配置。其中较为重要的部分在如下目录下:Firmware\ROMFS\px4fmu_common\init.d

如文件rcS、rc.logging、rc.mc_apps、rc.sensors等

rcS:最先启动的脚本,负责挂载SD卡、启动uORB、配置系统参数等。

rc.logging:日志配置和启动代码。

rc.sensors:sensors驱动启动代码。

rc.mc_apps:启动上层应用(src/modules中的模块均在此启动),如 attitude_estimate 、 attitude_control 、position_estimate 和 position_control 等。

6、src文件夹

这是较为重要的一个文件夹:

drivers:pixhawk 硬件系统中使用的所有的 sensor 的驱动代码。也包含了 STM32 主控MCU 的 io 输出控制(PX4IO)和 pwm 的驱动。

examples:官方给出的简单例程,引导开发者进行二次开发。

lib:标准库,有矩阵运算、PID等

modules:各上层应用,有 attitude_estimate 、 attitude_control 、position_estimate 和 position_control等,之后自定义的应用也应也在这个文件夹中。具体介绍如下:

        attitude_estimator_q:基于mahony 的互补滤波算法的姿态解算

        ekf2:基于扩展卡尔曼滤波的姿态和位置解算

        local_position_estimator:LPE算法实现位置解算

        logger:读写log日志文件

        mc_att_control:姿态控制

        mc_pos_control:位置控制

        uORB:进程间的通信机制

        sensors:各sensors的初始化代码

总结

关于px4整体代码结构就写到这里,若是以后有新的理解会及时补充。

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值