GitHub项目地址:https://github.com/SuWeipeng/ArduPilotLog
百度网盘下载地址(Windows绿色版)
链接:https://pan.baidu.com/s/1MvkhdvcaOSiD5aA3hdtmhg
提取码:zzbx
ArduPilotLog 是 ardupilot 日志数据绘图软件。为快速展示 Log 日志数据,以便通过分析数据排查程序 bug 或累积经验而设计。
打开方法如下图所示:
点选绘图
“点选绘图”在不明确看哪一种日志数据时使用。
比如:对于飞机的某种奇怪表现,往往不能立刻明确是哪里出了问题,这时怀疑对象泛围大,用点选方式为猜测快速提供依据。
数据分析窗(点选绘图Plus)
“数据分析窗”在小泛围锁定目标数据时使用。
比如:通过点选绘图已初步锁定某种现象与某几类数据表现相关(注:少于10类)
,此时须要精确绘图。
打开“数据分析窗”
“数据分析窗”说明
通过“数据分析窗”绘图
脚本绘图
“脚本绘图”用于反复验证已锁定的目标数据是否合理的情形。
将与当前问题有关的数据锁定后,往往需要多次采集 Log 日志,重复分析以便证实。这时使用脚本绘图比较方便,以免去每次点选、调整比例等麻烦。
加载脚本
脚本语法如下图(也可见 conf/ReadMe.md)
ArduPilotLog 软件架构源于qgroundcontrol,因此编译方法与QGC相同。
起初只是为了学习QGC,QGC功能多、代码构架复杂不是一下就能看懂的。
后来在研究ardupilot的过程中经常要分析Log。使用过MissionPlanner、APM Planner等软件看Log日志,有几个体验一直觉得不爽:
MissionPlanner最难受的是有时看看日志会卡死。
我更关心图线,不是很在意数据,而界面留了一部分展示数据,每次都要手动拉小数据部分。
“看Log日志数据”只是这些软件的“一部分”功能。也就是说每次为了看数据,必须先要打开这些软件,等待其余功能加载完毕,然后点到这个功能,浪费时间。
于上位机的角度讲,QGC的界面划分和操作方式更适合我,却单单缺少查看Log日志数据这个功能。
基于以上原因,就自己写个软件搞定自己的需求吧。
这不是一个完美的软件。
这个软件最初是以学习为目的而写的,没有走太完整的功能设计过程,业余时间想到哪写到哪。若要完美整合已实现的功能,就要重构了。
代码适合想学QGC的朋友们看(看git的开发流程log,都是0起点开始的)。
软件适合正在学习或调试ardupilot的朋友们使用。
由其是 “脚本绘图” 功能,其目的就是给无形的经验累积提供一个容身之所,让经验有形,便于自我反复推敲和与人交流。
代码开发过程中经历了:QGC架构分析、用户体验设计、功能模块拆分与整合等过程,麻雀小可能还有点丑,但五脏全。
跟我一样0起点想学QGC的朋友可能关心这些,在此简单例举。
QGC架构。
QT ui界面开发。
QT QML界面开发。
QT ui 与 QML 整合方法。
QT SQLite 数据库。
QT 界面与后台数据的分离与整合。
QT 信号与槽通信机制。
QT 二进制文件读写。
QT 文本文件读取。
QT 正则表达式使用。
ardupilot 日志文件结构。
qcustomplot 绘图插件。
QGC qCDebug()分类控制显示调试日志的方法。
本软件以快速显示图线为目的,对于三种绘图方式仍不能满足的数据分析需求,则须将数据导入MATLAB(诸如:给数据进行低通滤波、数据作为控制仿真的输入等需求。)
本软件设计的目的之一是:让不同平台能方便的使用Log日志数据。因此引入了SQLite数据库。
数据的存在形式:ardupilot存入SD卡中的 *.bin 二进制格式,转到 SQLite 数据库的 *.db 格式。
MATLAB、Excel等可通过*.db文件获取日志内容。
对数据感兴趣的时候,可通过 SQLite Expert 之类软件直接展示数据内容。MATLAB 读取 SQLite 的脚本已写好,后续整理好会分享。
本软件后续会把作者已知未实现的功能写个 feature list,已知 bug 写个 bug list。对于 feature 和 bug 的划分是软件开发纠分不清的问题,在此作者表示:后续这些只是个 list 而已,很可能不会再加入新 feature 或解决小 bug(致命 bug 除外)。
后续更新会往以下几个方向发展:
分享一些开发过程中的心得。
对某个知识点的剖析。
加入新的 *.conf 绘图脚本(分享ardupilot“有形的”经验)
软件开发经验分享:
1)说说软件架构是什么,为什么重要。
2)说说本软件开发的功能设计、功能模块划分与整合是怎样体现的。
3)说说本软件为提升用户体验感而做了哪些改进。
4)说说当有上位机开发需求的时候,应该怎样入手。
5)其他各种想到的值得分享的东西。
这是一个因学习而生的项目,它未来更大的意义不是从丑小鸭进化成白天鹅,而是为同样0起点的后来人铺上一块前往更高层次的砖。
往期热文(点击文章标题即可直接阅读):