当前位置:网站首页>PX4-做飞控二次开发需要知道的事情-Cxm
PX4-做飞控二次开发需要知道的事情-Cxm
2022-08-08 18:41:00 【CHENxiaomingming】
前言:
废话:
来了,之前一直在做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
5-进阶功能-室外指点飞行 — P系列无人机-wiki 1.0 文档
PX4的作用
简单的介绍一下PX4,就是国外开源的一个飞控项目,其硬件平台使用的是PIXHAWK,PX4不仅仅是多旋翼无人机甚至固定翼,无人车等,其实个人觉得PX4真正强大的是他整个项目蕴含的潜力,因整个项目的系统架构,又支持各种各样的协议所以学习PX4不仅仅是飞控,可以说PX4满足我在嵌入式中的开发大部分的需求,如果是想要好看的UI就另说了。
记录方式
我会继续在博客更新学习经过和历程,通过APM的反馈我发现大家都不是很爱看那种源码分析,更加喜欢一些实用的功能添加,搬过来直接可以用那种,所以之后的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的架构以及原生代码功能
谢谢大家!!!!!!!
边栏推荐
- Laravel 5.8 Notes
- 重读GPDB 和 TiDB 论文引发的 HTAP 数据库再思考
- Rethinking HTAP database caused by rereading GPDB and TiDB papers
- Azure Neural TTS continues to be updated to help enterprises develop small language markets
- 数据库学习之库的操作
- Advanced CAD practice (2)
- Oracle--表
- 为啥程序员下班后只关显示器从不关电脑?看看各大网站的答案~
- 21天学习挑战赛——机器学习03
- Style Design Principles in Open Office XML Format
猜你喜欢
uniapp parent component uses prop to pass asynchronous data to child components
SSH协议抓包-工具Wireshark
荧光探针/近红外荧光/荧光纳米/水凝胶/纳米水凝胶pH荧光探针的研究
APICloud AVM 封装日期和时间选择组件
vue项目打包后的网页缓存问题
Learn about layered architecture & SOA architecture together
ptorch
制造企业为什么要部署数字化工厂系统
How to add F4 Value Help trial version to the input parameters of the report in the ABAP report
精彩来袭!鲲鹏开发者创享日·长沙站来啦
随机推荐
Excuse me, during the mongoshake synchronization process in the shake database, src_mongo hangs up, will the synchronization service not exit?
面经刺客 | 关于——字节飞书基础架构产品 日常实习面经
Fortinet new cloud native protection products launched amazon cloud platform of science and technology
轻量全景查看器 pannellum初探
hdu1042 N! (large number)
HCIP第十三天作业——综合实验
The history of cartoon rendering
期货开户哪家公司好,要正规安全的
搭建DG导致归档日志量变多问题排查
Geometric g6 will carry harmonyos system, a comprehensive upgrade competitiveness of products
架构设计基本原则
5 IPOs, Internet home improvement is not as simple as Tubatu thinks
CAD进阶练习(二)
Vue program of web cache problem after packaging
A Preliminary Study on Pannellum, a Lightweight Panorama Viewer
启牛商学院开户是安全的吗?开户靠谱吗?
内核实战教程第1期|数据库系统概述,带你走近 OceanBase 研发环境!
Leetcode 23.合并K个升序链表 链表归并合并
量子力学奇妙之旅-铁磁性来由/双态系统
请问在MAXCOMPUTE SQL 里有没有函数判断string 是否为数字?