1 前言
PX4官方推出来很多的分析工具,也用了不少,推荐一款界面清晰,交互感好的分析工具-FilghtPlot,官网介绍可以在(Linux,MacOS,Window)使用,实际上我只在windows下使用它,平时实验测试更多在windwos下做。
据官网介绍:
https://docs.px4.io/master/en/log/flight_log_analysis.html
FilghtPlot是一款界面日志分析工具,下载地址
https://github.com/PX4/FlightPlot/releases
![fc4685148c5e140e9fca1dc12b9b426b.png](https://i-blog.csdnimg.cn/blog_migrate/2c0ed62345cdc8faec082771bc3aa727.jpeg)
特点:
l 基于java,跨平台使用
l 界面交互,无需编程知识
l 支持px4之前的日志格式(.ulg,.px4log,.bin)
l 可以保存图片
2 使用
2.1 下载安装
下载简单,安装方便,需要java环境,步骤略。
2.2 日志分析
1. 载入日志,通过open Log数据(也可以通过拖拽日志),并通过Field List (正是px4 里面的msg包)选择想要查看的数据,其次最好将Markers打开,数据点就会标记出来,比较好分析。
![3751f4360a576057b75aaa35a8af611f.png](https://i-blog.csdnimg.cn/blog_migrate/3b3ffc760576049e98769ec2b46cad0f.jpeg)
2. 分析的技巧(以分析rtk数据为例)
![1c060959b0fe330bcfd9d9cceb1d3039.png](https://i-blog.csdnimg.cn/blog_migrate/4bde6f1224acd459b5ad416ff2915937.jpeg)
我是学习ekf2代码的,我讲下平时都是怎么分析日志。
其中我比较关注的是里面的包。
vechile_gps_position GPS数据包,包括了定位的经纬度,固定状态,卫星数等。
vechile_local_position ekf数据融合之后的当地坐标系坐标(NED),航向,水平和垂直精度,及其他信息vechile_global_position ekf数据融合之后的世界坐标系(LLH)代码中可以看到就是将local_position数据转换出来的。
ekf2_innovation ekf数据融合过程中的速度位置航向的残差(新息),残差反应的是观测值与预测值之间的差值,比较能反应滤波的状态以及观测的数据质量。
vehicle_status 无人机的状态包 一般看里面的飞行模式 nav_state。
首先我分析此次rtk测试的数据状态,比如卫星数(vechile_gps_position.sat_used)是否正常,卫星信号被干扰会印象卫星的数目,rtk(vechile_gps_position.fix_type)的状态,4浮点,6固定,查看飞行模式(vehicle_status.nav_state),可以查看测试的操作(推荐录制视频一起分析),用local_posion.z*比例(-1)来观察飞机是否正常起飞,如下图所示。
![6d13fa5be982e1c5b8db6a367aab2b13.png](https://i-blog.csdnimg.cn/blog_migrate/21d3a7dccc6e3e10fa9b3bd09ad97252.jpeg)
通过上图,我们可以看出,卫星信号正常,卫星数据几乎稳定维持在23-24左右,说明卫星信号正常无干扰,rtk状态稳定,通过lp_u曲线可知,无人机一直在升高,最后切换land模式自动降落至地面。
接下来我们看残差信息 我们主要看ekf2_innovation中的heading_innov,vel_pos_innov其分别是航向残差,速度和位置残差。
![c082a76cf4e32a9e197fe8e37bd7b9b2.png](https://i-blog.csdnimg.cn/blog_migrate/de6b5df95262b2af5ba7800894d98c45.jpeg)
我这次的数据都比较好,位置残差都是在0.03米左右,航向在0.07rad左右,我还将rtk固定的状态通过左边的offset偏移6,这是一种技巧,这样可以在图上观察其之间的相互关系,这个方法可以应用在其他数据分析中,比如经纬度的数据都比较大,通过偏移可以将他们的值与fixtype值进行比对。
还可以看local_position的点位精度 eph和epv代表了水平误差和竖直误差如下图所示。
![3f1131e27ea3ca84acdc3174340c4c59.png](https://i-blog.csdnimg.cn/blog_migrate/7f04cbdcca21884d1fd727f7b87d4b94.jpeg)
竖直精度和水平精度都在2cm基本比较好,这也是用了rtk的原因。
由于我这次是数据中没有悬停的数据,其实还可以打开local_position.x或local_position.y来看悬停的时候,查看下悬停的时候点位数据是否异常或者控制是否异常。
3 总结
这个工具能够将所有的msg数据包数据都可以自己选择展示出来,我只是抛砖引玉,本身也是个正在努力学习的小菜鸟,如果讲得不对或者不好,请各位指正并多多海涵。本次数据中用的rtk产品是我们自我研发的,低成本价格,如有需要,可以加交流qq群:903013799联系;如果是研究ekf2的话,其实还有个python工具,{elc_ekf},他会直接生成pdf,但是无法进行交互,那个分析工具我也推荐使用。好的,第一次写文章,各位海涵!