PX4代码解析(1)
前言
做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。
目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构
一、代码整体结构
既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V1.11。
刚开始接触PX4源码时,一看这么多目录,当时心态就崩了。但不要紧张,其中有大部分文件夹对我们初学者来说是用不到的,最主要的文件如下表
目录 | 作用 |
---|---|
src | 功能源代码,包含所有控制相关的功能代码 |
build | 编译目标目录,包含程序源代码编译后生成的编译选项,目标文件,中间文件等 |
cmake | 编译配置文件,存放PX4项目编译相关的配置 |
platforms | 存放飞控程序运行平台代码 |
msg | 内部通信接口,用来存放内部通信的消息文件 |
Mavlink | 外部通信接口,存放mavlink协议所用头文件 |
ROMFS | ROM文件系统,飞控程序启动相关配置以及不同机型的混合控制文件 |
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官方提供的一些学习的例子
PX4代码解析(1)相关推荐
- PX4代码解析(5)
一.前言 我所讨论的PX4代码是基于v1.11版本,该版本与之前的版本有不少不同,其中一个比较大的区别在于新版本大部分用到了C++中模板,使得代码没有以前那么容易理解,因此我在后面介绍PX4的姿态估计 ...
- PX4代码解析(6)
一.前言 上一节介绍了PX4姿态估计调用函数的流程,这一节分享一下我对PX4姿态解算的解读.首先,要理解PX4姿态解算的程序,要先从传感器的特性入手,这里主要介绍的传感器有加速度计,磁力计,陀螺仪. ...
- px4代码解析(3)
前言 在使用PX4飞控时,我们难免要对其进行二次开发,例如修改控制算法,添加新的传感器,这时需要在代码中定义属于自己的消息.本节主要分享一下如何在PX4代码中添加自己的消息 一.消息添加与配置 从代码 ...
- PX4代码解析(4)
一.引言 PX4程序是基于实时操作系统(Real-time operating system, RTOS)的上层应用程序,PX4飞控程序的很多重要模块都是在Nuttx操作系统的调度下运行的.因此,想要 ...
- PX4代码解析(2)
前言 在大致了解PX4代码架构后,我们需要了解PX4的通信机制.在PX4代码架构中,每通信总线主要分为两个部分,一是内部通信总线uORB,即PX4内部进程通信采用的协议,例如PX4内部姿态控制需要获取 ...
- PX4代码解析:振动分析
本篇文章首发于公众号:无人机系统技术.更多无人机技术相关文章请关注此公众号 一.前言 前面的文章主要都是一些理论知识为主,很多读者朋友看了之后可能会有点枯燥,里面很多公式看起来也比较晦涩,今天起给大家 ...
- px4代码jlink调试
之前看了许多介绍px4环境搭建的文章有介绍windows下eclipse和ubuntu下eclipse阅读px4源码的文章,但是没有看到对px4进行代码调试的文章,后来查看px官网发现可以通过visu ...
- PX4代码学习系列博客(6)——offboard模式位置控制代码分析(之前转载过,这是第二次转载了)
我刚刚发现这篇文章去年八月份的时候转载过一次了 https://blog.csdn.net/sinat_16643223/article/details/107874349 转载自:https://b ...
- matrix_multiply代码解析
matrix_multiply代码解析 关于matrix_multiply 程序执行代码里两个矩阵的乘法,并将相乘结果打印在屏幕上. 示例的主要目的是展现怎么实现一个自定义CPU计算任务. 参考:ht ...
最新文章
- 专属程序员的编程日历,终于来了 | 10月书讯
- HBase的安装与使用
- 安装配置JDK和Eclipse的步骤
- REST、SOAP、protocolbuf、thrift、avro
- chrome主题_谷歌Chrome将很快允许用户创建自定义主题
- Laravel源码解析之中间件
- js基本函数和基本方法
- 操作系统大作业模拟实现命令解释器_06 初识shell之系统命令基础
- gitlab ci php 构建,GitLab CI的入门搭建
- 单片机加减法计算器_单片机简易加法计算器程序
- 大型项目编译注意事项
- 邮箱是互联网的个人中心
- FPGA设计之首——Altera FPGA 选型及官网文档阅读
- 使用UIImageView实现加载GIF图片
- 超级计算机summit存储容量,美国Summit超级计算机:采用超过27000块NV计算卡
- centos安装stress安装失败_Linux压力测试工具stress
- 如何做客户分析?客户分析的内容有哪些?
- 9-17每日一题:Leetcode36. 有效的数独
- 棕榈油增仓大涨,铁矿石认购上涨,豆粕09-01季节性正套2022.5.27
- 前端工程化、模块化、组件化