【PX4-AutoPilot教程-源码】PX4源码文件目录架构分析

本文详细解析了PX4源代码的目录结构,涉及boards、build、cmake、Documentation等关键文件夹的功能,以及drivers、modules中的核心模块,为理解和开发提供指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PX4源代码的结构复杂,这是源代码的总目录结构(以v1.13.0为例):

Firmware
├─boards
├─build
├─cmake
├─Documentation
├─integrationtests
├─launch
├─msg
├─platforms
├─posix-configs
├─ROMFS
├─src
├─test
├─test_data
├─Tools
└─validation

在这里插入图片描述

boards文件夹

boards文件夹中是各个品牌、版本的飞控板的编译脚本,其中px4文件夹装的是pixhawk的原生固件的编译脚本。

在这里插入图片描述

进入px4文件夹,内部是pixhawk的不同版本,我使用的是pixhawk v2.4.8版本对应fmu-v2文件夹。

在这里插入图片描述

进入fmu-v2文件夹,这里的所有px4board文件就是编译脚本,不同的编译脚本对应不同的编译命令,也会生成不同的编译文件。

比如default.px4board对应make px4_fmu-v2_default命令,fixedwing.px4board对应make px4_fmu-v2_fixedwing命令,multicopter.px4board对应make px4_fmu-v2_multicopter命令,rover.px4board对应make px4_fmu-v2_rover命令。

extras文件夹中是飞控板两个芯片的BootLoader文件,分别是px4_fmu-v2_bootloader.bin和px4_io-v2_default.bin二进制文件。

在这里插入图片描述

编译脚本用来设置哪些驱动文件、功能模块要被编译进固件中,通过增减里面的路径进行配置。

build文件夹

build文件夹是编译目标目录,只有经过至少一次编译才会生成此文件夹,内部存放的是源码经过编译生成的编译选项、中间文件、目标文件等。编译不同版本的固件会生成不同的文件夹。

在这里插入图片描述

比如px4_fmu-v2_default就是make px4_fmu-v2_default命令编译生成的,用于飞控板的。

px4_sitl_default就是make px4_sitl_default命令编译生成的,用于jMAVSim仿真或gazebo仿真。

cmake文件夹

cmake文件夹是cmake编译工具的相关文件,在开发中这个文件夹中的文件不需要修改。

在这里插入图片描述

Documentation文件夹

开发者文档目录,包括代码说明等。

launch文件夹

launch文件夹是仿真环境用到的文件,在gazebo中生成世界,配置ros节点等。

在这里插入图片描述

msg文件夹

msg文件夹是存放uORB消息主题的地方,实现PX4各进程之间通信就是用这些message。我们可以在这个文件夹内定义自己的message。

在这里插入图片描述

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 等。

在这里插入图片描述

platforms文件夹

系统平台实现的文件,包括PX4采用的Nuttx操作系统的源代码。

在这里插入图片描述

src文件夹

src是源代码目录,是PX4的核心,非常重要。

在这里插入图片描述

drivers文件夹

pixhawk 硬件系统中使用的所有传感器的驱动代码,包括陀螺仪、加速度计、磁力计、气压计、GPS、光流等,也包括pwm输出、px4io控制、不同遥控器通信协议等功能的驱动。

在这里插入图片描述

examples文件夹

examples文件夹是官方给出的简单例程,帮助新手开发者入门进行二次开发。

在这里插入图片描述

include文件夹

include文件夹是其他代码需要用到的头文件和库。

在这里插入图片描述

lib文件夹

标准库,有矩阵运算、PID控制、传感器校准等。

在这里插入图片描述

modules文件夹

modules文件夹是功能模块文件夹,也是二次开发主要的文件夹,包括姿态解算,姿态控制,位置估计,位置控制,指令控制,落地检测,传感器初始化等。

attitude_estimator_q:使用 mahony 互补滤波算法实现姿态结算。

commander:整个系统的过程实现,包括起飞前各传感器的校准、安全开关是否使能、飞行模式切换、pixhawk硬件上指示灯颜色定义等。

ekf2:使用扩展卡尔曼滤波器算法实现姿态和位置结算。

fw_att_control:固定翼飞机的姿态控制。

fw_pos_control_l1:固定翼飞机的位置控制器。

land_detector:使用land飞行模式降落的落地监测部分。

local_position_estimator:LPE 算法实现位置解算。

logger:关于 log 日志的读写函数。

mavlink:和地面站通信的通信协议。

mc_att_control:姿态控制的算法实现,主要就是姿态的内外环 PID 控制,外环角度控制、内环角速度控制。

mc_pos_control:位置控制的算法实现,主要就是位置的内外环 PID 控制,外环速度控制、内环加速度控制。

navigator:任务,失效保护和RTL导航仪。

sensors:关于各种传感器的相关函数。

vtol_att_control:垂直起降姿态控制器。

在这里插入图片描述

systemcmds文件夹

systemcmds文件夹是系统指令文件夹,都是飞控终端支持的命令的源码,如top命令,reboot命令等。

在这里插入图片描述

templates文件夹

templates文件夹中是存放功能模块的代码模板,可以用于参考。

在这里插入图片描述

Tools文件夹

Tools文件夹下是一些工具,比如下载工具、仿真环境等。

在这里插入图片描述


参考资料:

PX4原生固件源码分析(挖坑)–1、代码结构_梦里见莯的博客-CSDN博客_px4源码分析

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

Px4源码框架结构图_csshuke的博客-CSDN博客

PX4代码阅读笔记(一)——代码结构_星光2020的博客-CSDN博客_px4代码结构

<think>好的,我需要帮助用户找到PX4项目的源码下载链接或者仓库地址。根据用户提供的参考引用,首先看看引用中提到的信息。 引用[1]提到了一个Pixhawk/PX4飞控硬件资源的仓库,地址是https://gitcode.com/open-source-toolkit/9c7b3。不过这可能主要是硬件相关的资源,比如原理图和PCB文件,不一定包含源码。 引用[2]指出PX4源码(v1.13.3)上传到了个人GitHub仓库,并且参考了PX4官网的环境配置指南。这里可能需要确认PX4的官方源码仓库在哪里。通常,PX4的官方源码托管在GitHub上,用户提到的官网可能指向正确的地址。 引用[3]讨论的是PX4源码中的uORB模块,说明源码确实存在于某个仓库中,可能用户提供的引用[2]中的个人仓库可能有部分源码,但更权威的来源应该是官方仓库。 我需要验证PX4的官方源码仓库地址。根据PX4官网,官方源码仓库应该在GitHub的PX4/PX4-Autopilot下。因此,正确的下载链接应该是https://github.com/PX4/PX4-Autopilot。用户提到的引用[2]中的个人仓库可能是一个分叉或者备份,但建议用户优先使用官方仓库以确保获取最新和稳定的代码。 此外,用户可能需要使用Git进行克隆,或者下载特定版本的源码。例如,使用命令`git clone https://github.com/PX4/PX4-Autopilot.git`来克隆仓库。如果需要特定版本,可以查看tags或者releases。 总结,用户需要PX4源码的官方仓库地址,应该是GitHub上的PX4/PX4-Autopilot。同时,提醒用户参考官方文档进行环境配置和版本管理。</think>根据PX4开源项目官方资料,PX4源码的获取方式如下: ### 一、官方源码仓库 PX4自动驾驶系统源码的**主仓库**位于GitHub平台: $$git clone https://github.com/PX4/PX4-Autopilot.git$$[^2] 该仓库包含完整的飞控算法、驱动程序和模块化架构代码,支持通过Git进行版本管理和分支切换。 ### 二、版本控制操作 若需回退到特定版本(如v1.13.3),可执行: ```bash cd PX4-Autopilot git checkout v1.13.3 ``` 所有发布版本在仓库的Tags中均可查[^2]。 ### 三、硬件相关资源 硬件开发文档和PCB设计文件存放在独立仓库: $$https://gitcode.com/open-source-toolkit/9c7b3$$[^1] 该仓库包含Pixhawk飞控的电路原理图、PCB布局等硬件工程文件。 ### 四、核心模块示例 以uORB通信模块为例,其注册函数接口定义在: ```cpp // 路径:src/modules/uORB/uORBManager.hpp int16_t register_handler(IChannelRxHandler* handler); ``` 这是实现模块间异步通信的关键机制[^3]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后厂村路练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值