PX4代码解析(1)

您所在的位置:网站首页 arcticcore开源代码详解 PX4代码解析(1)

PX4代码解析(1)

2024-07-17 04:09| 来源: 网络整理| 查看: 265

前言

做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。 目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构

一、代码整体结构

既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V1.11。 在这里插入图片描述刚开始接触PX4源码时,一看这么多目录,当时心态就崩了。但不要紧张,其中有大部分文件夹对我们初学者来说是用不到的,最主要的文件如下表

目录作用src功能源代码,包含所有控制相关的功能代码build编译目标目录,包含程序源代码编译后生成的编译选项,目标文件,中间文件等cmake编译配置文件,存放PX4项目编译相关的配置platforms存放飞控程序运行平台代码msg内部通信接口,用来存放内部通信的消息文件Mavlink外部通信接口,存放mavlink协议所用头文件ROMFSROM文件系统,飞控程序启动相关配置以及不同机型的混合控制文件Tools存放仿真及与其他软件使用的工具脚本

以上便是PX4源码常用目录的作用,下面我先介绍最重要的文件夹src,文件夹会后续在详细讲解。

二、src文件夹解析

src文件夹可谓是PX4项目的精华,其中包含了无人机算法的所有实现,src文件夹中的内容分为以下6个部分 在这里插入图片描述(1).drivers文件夹 包含飞控程序中所有的驱动程序,其文件夹内容如下: 在这里插入图片描述 模块功能从模块命名很容易看出,例如px4io是负责FMU与IO通信;gps就是gps定位模块;这些模块根据命名就可以知道其作用,这里不在过多描述 (2).include文件夹 该文件夹主要包括飞控程序所包含的头文件 (3).lib文件夹 包含很多公共算法函数与数学工具函数,部分模块具体功能如下表

模块名称功能airspeed空速计算mathlib数学函数库matrix矩阵计算battery电源功能controllib控制算法conversion旋转转换EKF扩展卡尔曼滤波rc遥控器协议解析

(4).modules文件夹 包括无人机相关上层应用的控制模块,如导航,规划,地面站通信,命令执行等内容

(5).platforms文件夹 定义与运行平台相关头文件,实现工作队列,多进程,多线程等相关系统特性

(6).systemcmd文件夹 文件夹实现了多个系统命令,飞控采用系统为nuttx,后续会详细介绍

(7).examples文件夹 PX4官方提供的一些学习的例子



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3