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

2023-11-21 17:20

本文主要是介绍PX4-做飞控二次开发需要知道的事情-Cxm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

        废话:

        来了,之前一直在做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的架构以及原生代码功能

谢谢大家!!!!!!!

这篇关于PX4-做飞控二次开发需要知道的事情-Cxm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403849

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

js基础需要注意的点

1 js中单引号和双引号都能创建字符串,但是html的元素属性规定必须用双引号,所以js优先用单引号定义字符串。

[情商-13]:语言的艺术:何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相!

目录 前言: 一、说话的真实程度分级 二、说谎动机分级:善意谎言、中性谎言、恶意谎言 三、小心:所谓真相:只说对自己有利的真相 四、小心:所谓真相:就是别人想让你知道的真相 五、小心:所谓善解人意:就是别人只说你想要听到的话 前言: 何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相! 人与人交流话语中,处处充满了不真实,完全真实的只是其中一小部分,这

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越

Superset二次开发之Select 筛选器源码分析

路径:superset-frontend/src/filters/components/Select  源码文件: 功能点: 作用 交互 功能 index.ts作为模块的入口点,导出其他文件中定义的主要组件和函数。它使其他文件中的导出可以被外部模块使用。 SelectFilterPlugin.tsx 定义主要的插件类 SelectFilterPlugin 和组件 Sele

了解elementUI的底层源码, 进行二次开发

Element UI 是一个基于 Vue.js 的桌面端组件库,广泛用于构建美观、交互友好的用户界面。要深入理解 Element UI 的底层源码并进行二次开发,你需要掌握以下几个关键点: Vue.js 原理 Element UI 是基于 Vue.js 构建的,因此首先需要熟悉 Vue.js 的核心概念和机制,包括: ● 组件系统:Vue.js 的组件化思想,如何定义组件、使用组件、传递属性和事