PX4-做飞控二次开发需要知道的事情-Cxm

2023-05-16

前言:

        废话:

        来了,之前一直在做APM飞控的开发,发现除了企业用APM,在比赛方面还是PX4居多一点,加上最近也有这个需求所以又重拾了PX4。这两个飞控最大的区别应该就是系统了吧,PX4学习起来还是比较简单的,比较系统和模块化。在重拾PX4之前,自己又尝试自己移植NUTTX系统发现如果想要做到PX4这种,要写很多的编译链和脚本十分麻烦,索性我就直接使用PX4了,这也是为什么我重拾PX4的原因。

        关于环境搭建的问题

        阿木实验室、科学上网、百度等资源很多大多数都是网络问题,如果这些都做了还是不能成功编译的话!!!!!评论留言!!!!!!

        学习路线

        发现很多学习这个飞控的都和我一样都是在校生,如果是想只是想在应用层添加功能的话就只需要从 数电模点+51+STM32+LINUX就基本可以做PX4的开发了,如果是想优化飞控或者是想在控制层面深耕的话除了前面的还要 ****+NUTTX+mavlink+各种协议+线代+控制论等,如果我有幸深耕必毫无保留的分享过程。

        学习资源

        除了学习路线之外还有很多同学问那里找的资源啊,是不是花钱买课了,我有21年有买过阿木的PX4开发中级的课但是内容不多基本都在说一些基础的所以我后面都没买过课了,基本学习资源都来源与阿木+官方+百度+群里+CSDN。最好最新的资源当然都是从官方那里来的贴一下官方的链接还有阿木文档的链接都是很不错的资源。

https://github.com/PX4/PX4-Autopilot

PX4 User GuidePX4 User Guide

5-进阶功能-室外指点飞行 — P系列无人机-wiki 1.0 文档

        PX4的作用

        简单的介绍一下PX4,就是国外开源的一个飞控项目,其硬件平台使用的是PIXHAWK,PX4不仅仅是多旋翼无人机甚至固定翼,无人车等,其实个人觉得PX4真正强大的是他整个项目蕴含的潜力,因整个项目的系统架构,又支持各种各样的协议所以学习PX4不仅仅是飞控,可以说PX4满足我在嵌入式中的开发大部分的需求,如果是想要好看的UI就另说了。

        记录方式

        我会继续在博客更新学习经过和历程,通过APM的反馈我发现大家都不是很爱看那种源码分析,更加喜欢一些实用的功能添加,搬过来直接可以用那种,所以之后的PX4文章,我会用项目式的方式来记录希望能帮到大家,这一篇主要是简单的介绍一下我们需要用到的那些协议和知识,以后就不说了。


目录

前言:

PX4的系统和编译

PX4的通信协议

PX4的进程

 总结


PX4的系统和编译

        PX4采用的系统是NUTTX,系统官方链接,简单来说就是8位到64位一个嵌入式的系统,优点就是支持的内容多(硬件和各种协议)。这个了解一下就可以因为px4没用使用muttx的原生功能添加的方式放在apps里面,至于编译过程细心的同学肯定发现了Makefile这个文件,这个就是编译脚本这个是linux环境下的编译脚本,作用是编译,可以控制谁先编译谁后编译,用啥编译,要编译那些等。

        除了Makefile还有CMakeLists.txt

        可以吧CMAKE理解成辅助编译的配置文件,我们可以配置我们要编译的内容和大小等,看案例,可以看见就两个文件

 DMODULE 下的名字,MAIN 主函数的命令,SRCS 源码

PX4的通信协议

        PX4和地面站的通信协议是mavlink而内部通信协议是uorb协议 malink就是控制飞控的,而uorb则是系统之间数据通信的协议,这些东西同平台很有多我就不细说了会在之后的项目里面直接贴出来这个也很好理解

        uorb协议大致使用方法就是:

        1.创建 .msg 结构体文件
        2.添加进CMakeLists.txt 注册

        看图可知msg通信其实就是数据消息转发,uarb分为注册,发布,订阅,在msg里面添加了内容后PX4会自动给你编译同名头文件存放于uORB/topics/中 例如我在这里面放了一个 wasd.msg的文件就会自动生成一个wasd.h的头文件并且 可以给我们的源码调用如#include <uORB/topics/wasd.h>所以我们可以吧这个msg看我们保存数据转发数据的一个头文件。

        第二步就是添加进我们总的CMake文件中注册在外面msg文件夹中和.msg文件藏在一起看图二仿照图三格式添加就可以了

         

PX4的进程

        调用任务调度库,然后分配资源

可见官方给的案例

1module是进程名

2是默认调度

3是优先级

4是栈大小

5是入口函数

 总结

        搭建好编译环境之后,将编译过程和通信协议,以及进程的添加就可以开始我们的初步开发了,这篇我没用详细的解释这些内容感兴趣可以同平台搜索,下一步就是我们一边开发功能一边掌握px4的架构以及原生代码功能

谢谢大家!!!!!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4-做飞控二次开发需要知道的事情-Cxm 的相关文章

  • ROS入门与实践--3(工作空间和功能包的创建及HelloWorld简单实现)

    ROS入门与实践 3 1 工作空间和功能包1 1 工作空间定义1 2 工作空间的创建1 3 功能包的创建 2 通过指令及编辑器实现HelloWorld2 1 HelloWorld实现 C 43 43 版本 2 1 1 功能包下新建并编辑cp
  • 两种随机数生成方法——反函数法和舍选法

    两种随机数生成方法 反函数法和舍选法 我们知道 xff0c 对于均匀分布的随机数 xff0c 我们可以使用随机数生成器类似的方法生成均匀分布的随机数 包括线性同余发生器 xff0c FSR发生器等 对于非均匀分布的随机数 xff0c 对于连
  • 奥比中光Orbbec Astra Pro RGBD 3D视觉传感器在ROS(indigo和kinetic)使用说明 rgb depth同时显示

    Orbbec Astra Pro传感器在ROS xff08 indigo和kinetic xff09 使用说明 rgb depth同时显示 这款摄像头使用uvc输入彩色信息 xff0c 需要libuvc和libuvc ros这样才能在ROS
  • 【BUG解决】sudo apt-get update 报错 E: The repository ‘http://xxx Release‘ does not have a Release file.

    BUG描述 前两天在虚拟机Vmware中安装了Ubuntu18 04操作系统 xff0c 因为需要安装其他工具 所以想着执行命令 sudo apt get update 更新一下系统 xff0c 以便进行安装 结果出现 E The repo
  • python isinstance(), stack,判断list, dict, tuple为空

    Problem Nikola likes to categorize everything in sight One time Stephan gave him a label maker for his birthday and the
  • 路径跟踪算法之PID路径跟踪与PP跟踪

    路径跟踪算法之PID路径跟踪与PP跟踪 1路径跟踪原理2 常见的路径跟踪算法2 1 Pure puresuit pp 纯跟踪2 2 PID 跟踪 1路径跟踪原理 在运用好的路径规划算法 xff0c 规划好一条从起点到目标点最优的路径后 xf
  • 深入详解PID三项的作用与特性(抛开公式,以常识认识PID)

    深入探讨PID三项作用与特性 xff08 纯以常识方式对PID进行数学理论分析 xff09 1 经典PID的理解 xff08 抛弃公式 xff0c 以常识认识PID xff09 源文献 PID指的就是比例 积分 微分三项的结合 xff0c
  • ADRC自抗扰控制,有手就行

    ADRC自抗扰控制 xff0c 有手就行 关于ADRC的优点本人不会赘述 xff0c 毕竟作为一个ADRC算法都推导不出来的应用工程师 xff0c 最希望看到的就是有手就行的操作方法 ARC的缺点就显而易见 xff0c 就是参数多 xff0
  • nuScenes数据集详细介绍

    本文为博主原创文章 xff0c 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 xff0c 地址为 https blog csdn net suiyingy article details 12401771
  • fegin调用的时候数据格式转换为linkedhashmap

    在spring cloud项目开发中 xff0c 使用fegin进行远程调用 1 接口服务方返回类型为Map String Object 类型 2 接口调用方返回值类型也是Map String Object 3 通过fegin调用之后返回的
  • 一个字符串截取函数c语言

    刚开始学习c语言 xff0c 标准库中总是有很多函数没有 xff0c string h中的字符串处理函数好像不是很多 xff0c 在做栈的例子用需要用到一个字符串按位置截取的函数 xff0c 就自己写一个 xff0c 超简单 char su
  • RAF_DB数据集分类_3

    混淆矩阵 这里ECANet太长了 xff0c 我这里直接利用resnet代替一下 xff0c 你可以直接替换 xff0c 然后把权重对应好即可 xff0c 这只是一个简单的混淆矩阵生成 xff0c 没有太多美化 span class tok
  • docker镜像的创建

    目录 基于现有镜像创建 首先启动一个镜像 xff0c 在容器里做修改 然后将修改后的容器提交为新的镜像 xff0c 需要使用该容器的ID号创建新镜像 基于本地模板创建 导入镜像 基于Dockerfile创建 联合文件系统 xff08 Uni
  • ROS源码分析--子话题-catkin

    catkin简介 catkin简介 packagexml 格式1格式2 CMakeListtxtmeta package典型ROS应用添加自定义message文件 修改packagexml修改CMakeListtxt find packag
  • vnc安装和开机自启设置

    一 安装VNC 键入以下命令以在 Ubuntu 服务器上安装 TigerVNC xff1a sudo apt install tigervnc standalone server tigervnc common 现在安装了 VNC 服务器
  • 【Linux】线程安全篇Ⅰ

    文章目录 0 概述1 线程不安全举例1 1 前提知识铺垫1 2 场景模拟1 3 代码模拟 2 互斥2 1 什么是互斥2 2 互斥锁的原理 amp amp 特性2 3 互斥锁的计数器如何保证原子性2 4 互斥锁的接口2 4 1 初始化接口2
  • PX4/APM/飞控的学习笔记前言-Cxm

    开始了 开始了 终于有时间可以学习飞控了 此文章是用来当目录 我会持续更新我的学习之旅 希望能对各位有所帮助 如果有错误的地方还请各位前辈指点 此帖持续更新后续内容 其实从21年的一月就开始学习飞控一开始是从PX4开始学习 但是因为对liu
  • kubernetes 中文版

    这个文档非常好用 xff0c 建议收藏 无水印版 https pan baidu com s 1LSI46GBENd90Z06FnuaKmw lukb
  • SimpleBGC三轴云台用户手册

    SimpleBGC三轴云台用户手册 V1 00 硬件平台 xff1a STorM BGC V1 31 软件框架 xff1a SimpleBGC V1 00 本方案是采用俄版STorM BGC硬件平台 xff0c 软件采用SimpleBGC架
  • typedef和define有什么区别

    typedef和define都是替一个对象取一个别名 xff0c 以此增强程序的可读性 xff0c 区别如下 xff1a xff08 1 xff09 原理不同 define是C语言中定义的语法 xff0c 是预处理指令 xff0c 在预处理

随机推荐

  • 接口返回报错 resource notfound,plrase check path

    1 报错原因 post请求的content type application x www form urlencoded 但是请求体中设置的是json数据 34 date 34 34 2022 01 01 34 34 inclTransfe
  • Java中枚举的线程安全性及序列化问题

    一 枚举是如何保证线程安全的 要想看源码 xff0c 首先得有一个类吧 xff0c 那么枚举类型到底是什么类呢 xff1f 是enum吗 xff1f 答案很明显不是 xff0c enum就和class一样 xff0c 只是一个关键字 xff
  • Vscode配置Git

    vscode安装git 首先我们要确保我们下载了vscode和git xff0c 接下来就是给vscode配置git的步骤 xff1a 配置git环境变量 xff08 path值为git安装位置的cmd文件夹 xff09 xff0c 如图
  • SLAM-6视觉里程计里面特征点计算的缺点所做的改进

    缺点的改进方法 xff1a 由于之前的视觉里程计要计算关键点和描述子 xff0c 花费大量的时间 xff0c 有两种办法可以避免 1 只计算关键点 xff0c 通过光流法追踪关键点的运动 xff0c 可以得到同一个关键点在不同时刻图片的位置
  • SLAM8-后端的其他方法,BA与图优化,Pose Graph优化的理论与公式详解、因子图优化

    1 BA方法 Bundle Adjustment翻译过来是 光束调整 xff0c 意思是每个特征反射的光束 xff0c 通过调整它们的空间位置和相机姿态 xff0c 使它们都汇聚到相机光心 xff0c 这个过程叫BA 假定世界坐标系下的点p
  • 【动手学深度学习】 2预备知识

    李沫 动手学习深度学习 课程学习 需要预备的知识原因重点线性代数处理表格数据矩阵运算微积分决定以何种方式调整参数 损失函数 xff08 loss function xff09 衡量 模型有多糟糕 这个问题的分数 梯度 xff08 gradi
  • JDK源码之-java.lang.Object

    JDK源码之 java lang Object public final native Class lt gt getClass public native int hashCode public boolean equals Object
  • Apm飞控学习笔记之-电机解锁和故障保护-Cxm

    前言 CSDN https mp csdn net mp blog creation editor 122115245 这边说的解锁是指的非自动解锁和地面站解锁 常规解锁流程 61 安全开关 gt 内八解锁 这一篇会介绍整个解锁流程以及飞控
  • https://gns3.com/community/discussion/gns3-doesn-t-work-on-vmware-play

    swered Question GNS3 doesn t work on VMWARE player 15 Hi guys today I try to install GNS3 on new VMWARE player 15 with V
  • 基于stm32的数控线性稳压电源,恒压恒流电源资料

    基于stm32的数控线性稳压电源 xff0c 恒压恒流电源资料 极具学习和设计参考价值 xff0c 已验证 xff0c 可做实物 xff0c 送资料 xff0c 此价格仅为资料 xff0c 资料包括源程序 xff0c 原理图 xff0c p
  • Docker安装Elasticsearch的遇到的那些坑

    1 根据百度到的一篇文章 https segmentfault com a 1190000004376504 下载其最新镜像 hangxin1940 docker elasticsearch cn v2 1 0 使用 docker run
  • Spring boot + Spring Security + Thymeleaf 认证失败返回错误信息

    Spring boot 43 Spring Security 43 Thymeleaf 认证失败返回错误信息 Spring boot以其众多友谊的特性 xff0c 如零配置 微服务等 xff0c 吸引了很多的粉丝 而其与Spring Sec
  • Java经典面试题(其三)——JVM原理和调优

    Java经典面试题 xff08 其三 xff09 JVM原理和调优 一 什么是JVM JVM是Java Virtual Machine xff08 Java虚拟机 xff09 的缩写 xff0c JVM是一种用于计算设备的规范 xff0c
  • Spring Boot Starter的面试题

    Spring Boot Starter的面试题 1 常见的starter会包几个方面的内容 xff1f 分别是什么 xff1f span class hljs comment 常见的starter会包括下面四个方面的内容 span span
  • 个人经历:谈一谈的程序员求职途径

    个人经历 xff1a 谈一谈的程序员求职途径 互联网招聘网站的确是五花八门 xff0c 种类繁多 xff0c 在投递简历 xff0c 接听面试电话的过程中 xff0c 要擦亮眼睛 xff0c 慎重选择和沟通 我是去年跳槽的 xff0c 下面
  • JVM调优再学习

    JVM调优再学习 堆大小设置 JVM中最大堆大小有三方面限制 xff1a 相关操作系统的数据模型 xff08 32 bit还是64 bit xff09 限制 xff1b 系统的可用虚拟内存限制 xff1b 系统的可用物理内存限制 32位系统
  • Dubbo源码学习基础

    dubbo源码学习基础 Dubbo源码学习基础Java RMI 基本概念在 Dubbo 中使用注解自定义容错策略正确加载MyFilter类Dubbo可扩展机制实战Dubbo的SPI机制自定义一个LoadBalance扩展Dubbo 外部化配
  • DXP软件使用快捷键

    1 PCB 设计快捷键 xff08 单次按键 xff09 单次按键是指按下该键并放开 1 01 在 PCB 电气层之间切换 xff08 小键盘上的 xff09 在交互布线的过程中 xff0c 按此键则换层并自动添加过孔 这很常用 1 02
  • 将一个字节数据进行高低位镜像对调的实现函数

    unsigned char swap unsigned char pData unsigned char value 61 0 tmp 61 0 unsigned char ii jj for ii 61 0x80 jj 61 0 ii 6
  • PX4-做飞控二次开发需要知道的事情-Cxm

    前言 废话 来了 之前一直在做APM飞控的开发 发现除了企业用APM 在比赛方面还是PX4居多一点 加上最近也有这个需求所以又重拾了PX4 这两个飞控最大的区别应该就是系统了吧 PX4学习起来还是比较简单的 比较系统和模块化 在重拾PX4之