PX4在Linux环境下的编译(make)
使用VM17虚拟机以及Ubuntu20.04对PX4项目进行编译。
参考了超维空间科技的文章:超维空间科技的文章
后续配置参考了Xtdrone仿真平台的一键配置,更为简单:Xtdrone仿真平台文档
Gazebo配合QGC地面站仿真
Linux-QGC的安装:
QGC官网指导下进行配置,之后下载AppImage文件运行QGC地面站即可。
仿真中:
新建飞行任务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版本中最后无奈我放到了一个差不多的位置。如下:
但是在进行FMU-V2构建烧录代码时也会一直出现bug如下,但是很奇怪使用PX4-SITL构建仿真时便没有错误出现,1.15也是如此:
最后在github工程发表了issues,最终我更换了FMU-V3来构建,这个错误便消除了。最终成功执行了任务。在QGC地面站也可以正常识别。
NewFlightTask分析:
在指导文件中,其让我们修改了MPC_POS_MOD这个参数,很确定的是此参数决定了飞机在手动-Position定点飞行模式时要执行的实际代码中的任务模式。在源工程中有4中,但只能选择一种。
这也在侧面看出PX4的代码很庞大,实际运行只有那么一点。但是要真正简化这个系统也是很麻烦且没必要。
指导文件默认的效果是控制台输出一段文字。然后实际飞机并不会升高。
Manual-Position飞行模式分析
下面以Manual-Position飞行模式为例子对PX4原有的飞行模式进行分析,以便我们写出自己的飞行模式。
但是在飞行模式中,可以看出并没有PID相关的直接控制。在这些控制代码中,更多的是作为一种高级控制。分析摇杆输入等混合输入,来对SetPoint进行赋值,分发给更底层的PID控制机构。
飞行日志分析
可以使用PX4的在线FlightReview。方便快速查看飞行数据。
更详细的可以使用PX4开发的pyulog的Python处理库,可以转为CSV文件,使用Matlab分析。