PX4代码解析(1)

 2023-09-18 阅读 26 评论 0

摘要:前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。 目前打算

前言

做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遥控器协议解析

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

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

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

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/75848.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息