Featured image of post PX4在Ubuntu下的二次开发以及可视化仿真PX4-2进阶

PX4在Ubuntu下的二次开发以及可视化仿真PX4-2进阶

PX4的二次开发记录,以及在PX4基础上的仿真记录。最终实现自己的飞行任务实现特定功能。

PX4在Linux环境下的编译(make)

使用VM17虚拟机以及Ubuntu20.04对PX4项目进行编译。
参考了超维空间科技的文章:超维空间科技的文章
后续配置参考了Xtdrone仿真平台的一键配置,更为简单:Xtdrone仿真平台文档

Gazebo配合QGC地面站仿真

Linux-QGC的安装:

QGC官网指导下进行配置,之后下载AppImage文件运行QGC地面站即可。
仿真中:
PX4工程文件1

新建飞行任务AntiWindTask

按照PX4官方指导文档新建自己的一个飞行任务 官方新建任务指导

最终参考了1.14版本的指导文件,一开始看的main指导文件去配置了XTdrone自动配置的1.13的PX4工程,发现在moduls文件下根本没有飞行任务配置。。。接着去使用1.15的PX4工程,但是在CMakeList文件中有所不同,在每一个版本中都有不同之处。1.15版本也会有bug存在。
最后使用1.14版本,参考了1.14的指导文档,依然是CmakeList那里不对,文档中的放置位置在官方代码1.14.4版本中根本就没有。

1.14.4版本中最后无奈我放到了一个差不多的位置。如下:
Error

但是在进行FMU-V2构建烧录代码时也会一直出现bug如下,但是很奇怪使用PX4-SITL构建仿真时便没有错误出现,1.15也是如此:
1

最后在github工程发表了issues,最终我更换了FMU-V3来构建,这个错误便消除了。最终成功执行了任务。在QGC地面站也可以正常识别。
AntiWind

NewFlightTask分析:

在指导文件中,其让我们修改了MPC_POS_MOD这个参数,很确定的是此参数决定了飞机在手动-Position定点飞行模式时要执行的实际代码中的任务模式。在源工程中有4中,但只能选择一种。
这也在侧面看出PX4的代码很庞大,实际运行只有那么一点。但是要真正简化这个系统也是很麻烦且没必要。
指导文件默认的效果是控制台输出一段文字。然后实际飞机并不会升高。
飞行模式最初仿真效果

Manual-Position飞行模式分析

下面以Manual-Position飞行模式为例子对PX4原有的飞行模式进行分析,以便我们写出自己的飞行模式。
但是在飞行模式中,可以看出并没有PID相关的直接控制。在这些控制代码中,更多的是作为一种高级控制。分析摇杆输入等混合输入,来对SetPoint进行赋值,分发给更底层的PID控制机构。

飞行日志分析

可以使用PX4的在线FlightReview。方便快速查看飞行数据。
更详细的可以使用PX4开发的pyulog的Python处理库,可以转为CSV文件,使用Matlab分析。

Licensed MIT OR GPL3.0 WHATEVERS ON GITHUB_PAGE SHOW YOU