PX4-Autopilot代码解析(2)-系统架构

本文档概述了 PX4 自动驾驶仪的架构,描述了其核心组件、组件之间的交互方式以及总体设计理念。此外,还阐述了 PX4 飞行控制系统的软件结构、通信机制、模块系统和执行流程。

系统概述

PX4 是一款基于模块化和组件架构的无人机飞行控制解决方案。该系统设计为高度便携(支持 Linux、NuttX 和 macOS),并适用于不同类型的飞行器,包括多旋翼飞行器、固定翼飞机、垂直起降飞行器、探测车等。

该架构遵循发布-订阅模式,具有明确定义的模块职责和组件之间的标准化接口。

通信架构

PX4 使用两种主要的通信机制:

  1. uORB(微对象请求代理):用于模块之间的内部通信
  2. MAVLink:用于与地面站、配套计算机等进行外部通信。

uORB消息系统

uORB 是一个发布-订阅消息系统,构成了 PX4 内部模块间通信的主干。它提供了一种异步通信机制,允许模块之间无需直接依赖即可交换数据。

uORB 的主要特点:

  • 基于主题的沟通
  • 异步发布-订阅模式
  • 快速、低开销的本地消息传递
  • 支持多实例主题

消息在目录中定义msg/并在构建时自动生成到 C/C++ 代码中。

MAVLink 模块使用 MAVLink 协议处理外部通信。它在src/modules/mavlink目录中实现,由以下几个组件组成:

MAVLink 模块具有高度可配置性,针对各种用例具有不同的模式(例如,正常模式、板载模式、OSD 模式)。

模块系统

PX4 的结构由一系列独立的模块组成,每个模块负责特定的功能。这些模块作为独立的任务/线程运行,并通过 uORB 进行通信。

主要模块包括:

  1. 指挥官:管理车辆状态、模式和安全检查
  2. 导航器:处理任务执行、RTL、徘徊和其他导航任务
  3. 飞行模式管理器:管理不同的飞行行为(手动、自动等)
  4. EKF2:基于扩展卡尔曼滤波器的主要状态估计器
  5. 控制器:车辆专用控制系统(多旋翼飞行器、固定翼、垂直起降)
  6. 混合器:将控制信号转换为执行器输出
  7. MAVLink:通过 MAVLink 协议进行外部通信

系统初始化和启动

PX4 中的启动过程通过初始化脚本进行管理,该脚本按正确的顺序加载参数、启动驱动程序和启动模块。

初始化序列在启动脚本中定义:

  • NuttX:ROMFS/px4fmu_common/init.d/rcS
  • POSIX(模拟):ROMFS/px4fmu_common/init.d-posix/rcS

启动过程包括:

  1. 参数加载
  2. 系统配置
  3. 传感器初始化
  4. 状态估计器启动
  5. 控制器初始化
  6. 通信系统启动

参数系统

PX4 使用参数系统来持久存储配置值。参数在代码中定义,可以通过地面站或编程进行修改。

参数系统提供:

  • 重启后持久存储
  • 类型检查和值验证
  • 自动参数版本控制
  • 不同车辆类型的默认值

根据硬件平台,参数存储在 SD 卡或闪存上的文件中。

构建系统

PX4 使用 CMake 作为其构建系统,允许它:

  • 为多个平台构建(NuttX、Linux、macOS)
  • 从模板生成必要的文件
  • 为不同的车辆类型和硬件配置构建
  • 处理依赖项和编译选项

构建系统组织如下:

  1. msg/从文件生成消息定义
  2. 创建模块配置
  3. 编译特定于平台的代码
  4. 将所有内容链接到最终的可执行文件中

硬件抽象

PX4 提供硬件抽象层,使软件可跨不同平台移植:

这种分层架构允许 PX4 运行在:

  • 嵌入式微控制器(通过 NuttX RTOS)
  • 台式计算机(通过 POSIX 层)
  • 模拟环境(SITL - 软件在环)

概括

PX4 架构是一个模块化、基于组件的系统,其构建基础如下:

  1. 用于内部通信的中间件层(uORB)
  2. 用于外部接口的 MAVLink 协议
  3. 特定功能的独立模块
  4. 可移植性的平台抽象层
  5. 配置参数系统

这种架构使 PX4 能够支持多种车辆类型、硬件平台和用例,同时保持一致、强大的飞行控制系统。

相关推荐
小O的算法实验室20 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
海砥装备HardAus20 小时前
无人机野外复杂环境电磁干扰分析与整机抗扰设计
无人机·飞控·飞控调试
数据与后端架构提升之路1 天前
系统架构设计师常见高频考点总结之案例题
系统架构
foundbug9991 天前
Matlab基于分布式模型预测控制的多固定翼无人机共识控制
分布式·matlab·无人机
海砥装备HardAus1 天前
无人机姿态融合解算原理与多源数据互补机制
无人机·飞控·卡尔曼滤波·多源数据融合·飞控调试·无人机姿态
easyCesium1 天前
无人机平台-ai及智能体
人工智能·无人机
灵机一物1 天前
灵机一物AI原生电商小程序(已上线)-AI全链路自动化!内容推广系统架构解析(附落地细节)
人工智能·系统架构·自动化·内容推广
2603_954708311 天前
微电网主从控制架构:集中式调度与分布式执行的协同机制
人工智能·分布式·物联网·架构·系统架构·能源
空间机器人1 天前
自动驾驶 ADAS 器件选型:算力只是门票,系统才是生死线
人工智能·机器学习·自动驾驶
九章云极AladdinEdu1 天前
全球主要市场自动驾驶法规政策对比:中国、美国、欧洲的监管路径与准入要求
自动驾驶·数据安全·自动驾驶法规·unece r157·自动驾驶监管·自动驾驶责任认定·自动驾驶监管路径