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

2023-05-16

PX4源码文件目录架构分析

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代码结构

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【PX4-AutoPilot教程-1】PX4源码文件目录架构分析 的相关文章

  • PX4二次开发中查无资料的踩坑总结

    写在前 xff1a 2021年9月下旬开始摸索px4飞控的二次开发 xff0c 从C 43 43 零基础到第一个修改算法后的版本稳定运行 xff0c 大概用了2个月 xff0c 从12月初改用新版本px4源码到现在又过去了约1个月 xff0
  • PX4使用I2C方式添加自定义传感器(1)

    PX4使用I2C方式添加自定义传感器 xff08 1 xff09 前言 毕业设计就是要在PX4上添加一个传感器 xff08 角度传感器 xff09 xff0c 由于板子上的接口数量很少 xff0c 很是宝贵 最后只能选择通过I2C通信方式
  • PX4通过I2C方式添加自定义传感器(2)

    PX4 I2C通信方式传感器驱动分析 xff08 以ets airspeed为例 xff09 1 说明 这篇文章我们就来看看I2C传感器的驱动过程 xff0c 当然里面也有很多东西我不是很理解 xff0c 所以仅谈我领悟的一些东西 我就以e
  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装 xff0c 并可以通过roslaunch启动软件仿真 接下来为无人及添加相机 xff0c 并将图像用python函数读取 xff0c 用于后续操作
  • 基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(1)-飞控

    前言 穿越机F4 F7 H7飞控是一系列采用stm32系列F4xx和F7xx处理器的飞控的统称 xff0c 是目前穿越机爱好者非常喜欢使用的飞控硬件 xff0c 其价格也非常便宜180 xff5e 410 而px4则是一款常见的开源飞控固件
  • PX4代码学习系列博客(5)——在px4中添加自己的模块

    怎么在px4中添加自己的模块 在 px4固件目录结构和代码风格 这一节 xff0c 曾经说过NuttX是一个实时的嵌入式系统 xff0c 上面可以像windows那样运行程序 那既然是应用程序 xff0c 那我们应该也能写一些可以在Nutt
  • px4 avoidance笔记

    最近在用px4官方的avoidance代码跑硬件避障 xff0c 官方介绍了只要生成符合sensor msgs PointCloud2点云信息就能使用 xff0c 因此为了应用长基线双目 xff0c 没有使用realsense的相机 xff
  • 初学PX4之环境搭建

    文章转自 xff1a http www jianshu com p 36dac548106b 前言 前段时间linux崩溃了 xff0c 桌面进去后只有背景 xff0c 折腾好久没搞定 xff0c 为了节省时间索性重装了系统 xff0c 同
  • PX4模块设计之五:自定义MAVLink消息

    PX4模块设计之五 xff1a 自定义MAVLink消息 1 MAVLink Dialects1 1 PX4 Dialects1 2 Paprazzi Dialects1 3 MAVLink XML File Format 2 添加自定义M
  • PX4模块设计之十七:ModuleBase模块

    PX4模块设计之十七 xff1a ModuleBase模块 1 ModuleBase模块介绍2 ModuleBase类介绍3 ModuleBase类功能介绍3 1 模块入口3 2 模块启动3 3 模块停止3 4 状态查询3 5 任务回调3
  • PX4模块设计之十八:Logger模块

    PX4模块设计之十八 xff1a Logger模块 1 Logger模块简介2 模块入口函数2 1 主入口logger main2 2 自定义子命令Logger custom command2 3 日志主题uORB注册 3 重要实现函数3
  • PX4模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • PX4模块设计之三十三:Sensors模块

    PX4模块设计之三十三 xff1a Sensors模块 1 Sensors模块简介2 模块入口函数2 1 主入口sensors main2 2 自定义子命令custom command2 3 模块状态print status 重载 3 Se
  • PX4模块设计之四十六:dataman模块

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • 关于github px4 gps 驱动的开发的总结

    源码编译上边已经写过文章了 遇到的几个问题 1 解决虚拟机不能共享文件夹的问题 一开始虚拟机的更新 vmware tools 是灰色的 xff0c 不能点 xff0c 然后通过关掉虚拟机 xff0c 然后再开启的时候 xff0c 在没有启动
  • px4无人机常识介绍(固件,px4等)

    专业名词解释 aircraft 任何可以飞或者可以携带物品还是搭载旅客的飞行器统称为飞机 航空器 uav 无人驾驶飞机 vehicle 飞行器 airplane plane aero plane 有机翼和一个或多个引擎的飞行器统称为飞机 D
  • PX4软件在环仿真注意点

    注 xff1a 最新内容参考PX4 user guide 点击此处 PX4下载指定版本代码和刷固件的三种方式 点击此处 PX4sitl固件编译方法 点击此处 PX4开发指南 点击此处 PX4无人机仿真 Gazebo 点击此处 px4仿真 知
  • 四、无人机知识笔记(初级:基本运动原理)

    笔记来源于 沈阳无距科技 工业级无人机的中国名片 编程外星人 目录 一 多旋翼直升机 二 基本飞行姿态 三 多旋翼飞行原理 四 反扭力与偏航运动 五 螺旋桨 六 有刷电机和无刷电机 七 电调与PWM信号 八 动力电池 九 遥控器 十 机架设

随机推荐