如何用开源飞控PIXHAWK进行二次开发?

article/2025/10/9 4:15:07
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:我是肉包子
链接:http://www.zhihu.com/question/38874663/answer/84239995
来源:知乎

以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,

如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,


如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;

另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;

第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;

px4原生固件模块列表:

系统命令程序

mavlink –通过串口发送和接收mavlink信息

sdlog2 –保存系统日志/飞行数据到SD卡

tests –测试系统中的测试程序

top –列出当前的进程和CPU负载

uORB – 微对象请求代理器-分发其他应用程序之间的信息

驱动

mkblctrl–blctrl电子模块驱动

esc_calib –ESC的校准工具

fmu –FMU引脚输入输出定义

gpio_led –GPIOLED驱动

gps –GPS接收器驱动

pwm –PWM的更新速率命令

sensors –传感器应用

px4io –px4io驱动

uavcan –uavcan驱动

飞行控制的程序

飞行安全和导航

commander –主要飞行安全状态机

navigator –任务,失效保护和RTL导航仪

估计姿态和位置

attitude_estimator_ekf –基于EKF的姿态估计

ekf_att_pos_estimator –基于EKF的姿态和位置估计

position_estimator_inav–惯性导航的位置估计

multirotor姿态和位置控制器

mc_att_control–multirotor姿态控制器

mc_pos_control –multirotor位置控制器

fixedwing姿态和位置控制器

fw_att_control –固定翼飞机的姿态控制

fw_pos_control_l1 –固定翼位置控制器

垂直起降姿态控制器

vtol_att_control –垂直起降姿态控制器


最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁:

将MAIN_STATE_MANUAL替换成MAIN_STATE_ALTCTL即可。


http://chatgpt.dhexx.cn/article/JAD57sDr.shtml

相关文章

APM和PIX飞控日志分析入门贴

我们在飞行中,经常会碰到各种各样的问题,经常有模友很纳闷,为什么我的飞机会这样那样的问题,为什么我的飞机会炸机,各种问题得不到答案是一件非常不爽的问题,在APM和PIX飞控中,都有记录我们整个…

开源飞控APM与PIXHAWK

一 APM 官网地址:http://ardupilot.org/ APM(ArduPilotMega) 是在2007年由DIY无人机社区(DIY Drones)推出的飞控产品,是当今最为成熟的开源硬件项目。APM基于Arduino的开源平台,对多处硬件做出了…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)1——下载与版本

目录 1.概述 2.下载与版本 3.关于 ArduPilot wquav 1.概述 Misson Planner简称MP,图标为黑底大写白色字体MP加一个绿色固定翼飞机,是可以调试APM或者PIX飞控的地面站软件,可以运行在windows系统和Linux系统(非直接安装&#x…

Pix4飞控常见问题解决方法(二)

一、无法解锁(黄灯闪烁) 无法解锁的原因会有多种,请按照如下步骤进行检查: 1、初始设置是否全部完成 a、机架类型选择是否正确,或者你根本就没有选择? 注意,新版本的飞控固件在默认参数情况下&…

Pix4飞控硬件平台框架(一)

硬件平台简介 本文只是为了让大家简单入门为主,所以我选择的硬件学习平台是Pixhawk系列的mRoPixhawk,兼容原始版本Pixhawk1,基于Pixhawk-project FMUv3开源硬件设计,修正了将原始版本flash限制在1MB这个bug,需要深入学…

Mission Planner中级应用(APM或PIX飞控)3——APM飞控安装双GPS测试 APM双GPS

目录 1.未得到答案和技术指导 2.第一次实验失败 3.完全废掉了解锁功能 4.调整RX/TX位置 5.成功解锁 6.广阔室外的探索 山重水复疑无路,柳暗花明又一村 ——Mission Planner中级应用(APM或PIX飞控)3——APM飞控安装双GPS测试 APM双GPS。…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)4——校准加速度计、指南针、遥控器、设置飞行模式

目录 1.加速度计校准。 2.指南针校准。 3.遥控器校准。 安装完固件后,无人机并不能马上解锁起飞,必须进行校准加速度计、指南针、遥控器,下面就逐一进行校准,该环境使用的是APM2.8、Mission Planner1.3.70地面站软件。 1.加速…

每天读一点儿APM(PIX)代码之三:飞行控制

本期话题以ArduPlane代码为例分析了Ardupilot飞控体系对飞行器的反馈控制过程,并在实例中添加了一个直接易用的固定翼起飞辅助模式,供大家参考。 姿态控制是飞控的核心功能,不论固定翼还是多旋翼,都需要维持飞行器本身的稳定。ArduPilot采用反馈修正的方式进行姿态控制,以…

PixHawk飞控 配置参数

PixHawk飞控 PixHawk是著名飞控厂商3DR推出的新一代独立、开源、高效的飞行控制器,前身为APM飞控,不仅提供了丰富的外设模块和可靠的飞行体验,有能力的爱好者还可在其基础上进行二次开发。第一次使用需要多方查阅资料,摸索前行&a…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)7——多旋翼无人机APM(PIX)飞控ardupilot missionplanner扩展调参、基本调参(PID调参)

目录 1 APM(PIX)飞控ardupilot missionplanner扩展调参、基本调参默认值 2 Copter Home 3 调参各部分的解析示意图 4 在飞行中调roll和pitch(以遥控输入第六通道调参为例) https://ardupilot.org/copter/index.html P ID到底是个什么东西&#xff…

Web自动化测试怎么做呢?好!接下来我们就开始Web网页测试针对性的流程解析啦!!!

前言 测试行业现在70%是以手工测试为主,那么只有20%是自动化测试,剩下的10%是性能测试。 有人可能会说,我现在做手工,我为什么要学自动化呢?我去学性能更好性能的人更少? 其实,性能的要求比自动…

Web自动化测试流程:从入门到精通,帮你成为测试专家

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 摘要: 步骤一:选取测试工具 步骤二:编写测试用例 步骤三:编…

Web测试流程图

Web测试侧重流程图: 项目开发-测试双v模型: 常见问题: 1、给你项目,你会从哪方面着手测试? 【分析需求,明确测试任务,分析测试范围,制定测试计划和测试用例。】 2、冒烟测试过不…

web自动化测试流程的总结及关注点

目录 一、立项后测试需要拿到的文档 二、需求评审 三、用例编写(同时根据开发计划编写测试计划) 四、用例评审 五、测试执行 六、测试报告及操作手册 项目的测试流程大只包含的几个阶段:立项、需求评审、用例评审、测试执行、测试报告文…

Web网页测试全流程解析论Web自动化测试

1、功能测试 web网页测试中的功能测试,主要测试网页中的所有链接、数据库连接、用于在网页中提交或获取用户信息的表单、Cookie 测试等。 (1)查看所有链接: 测试从所有页面到被测特定域的传出链接。 测试所有内部链接。 测试链…

【2023最全教程】Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目…

web-自动化测试流程

1. 自动化测试流程 (1) 需求分析 (2) 挑选适合做自动化测试的功能 (3) 设计测试用例 (4) 搭建自动化测试环境 [可选] (5) 设计自动化测试项目的架构 [可选] (6) 编写代码 (7) 执行测试用例 (8) 生成测试报告并分析结果 2、自动化项目框架自动化框架 ① 顺序&#xf…

功能测试(一)—— web项目环境与测试流程、业务流程测试

目录 目标 一、web项目环境说明 【了解】 ​编辑 1.1 环境的定义 1.2 环境(服务器)的组成 1.3 面试题:你们公司有几套环境? 二、熟悉商城项目 【了解】 2.1 商城项目的核心业务 2.2 商城项目的核心功能模块 三、测试流程的应用 【重点】 3.1 需…

Web测试流程和方法来看这里~

一、测试流程 所有测试的流程大体上是一致的:开始测试前准备-->需求分析-->测试设计(测试计划,测试用例)-->执行测试-->提交BUG-->测试总结。 对于web测试,较之其他软件测试又有所不同,这…

Web自动化测试的详细流程和步骤,一篇足矣

Web自动化测试是软件测试中非常重要的一种测试方法,它通过编写脚本来模拟人工操作网页,从而实现对Web应用程序进行自动化测试的过程。为了保证测试质量和效率,我们需要遵循一定的流程和步骤来完成Web自动化测试。 一、测试环境准备 在进行W…