做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。
目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构
既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V1.11。
刚开始接触PX4源码时,一看这么多目录,当时心态就崩了。但不要紧张,其中有大部分文件夹对我们初学者来说是用不到的,最主要的文件如下表
目录 | 作用 |
---|---|
src | 功能源代码,包含所有控制相关的功能代码 |
build | 编译目标目录,包含程序源代码编译后生成的编译选项,目标文件,中间文件等 |
cmake | 编译配置文件,存放PX4项目编译相关的配置 |
platforms | 存放飞控程序运行平台代码 |
msg | 内部通信接口,用来存放内部通信的消息文件 |
Mavlink | 外部通信接口,存放mavlink协议所用头文件 |
ROMFS | ROM文件系统,飞控程序启动相关配置以及不同机型的混合控制文件 |
Tools | 存放仿真及与其他软件使用的工具脚本 |
以上便是PX4源码常用目录的作用,下面我先介绍最重要的文件夹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官方提供的一些学习的例子
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态