中国开发者开源 ArduPilot日志分析工具 ArduPilotLog | DimianZhan地面站社区

2019 年 4 月 7 日 无人机

                           


GitHub项目地址:https://github.com/SuWeipeng/ArduPilotLog


百度网盘下载地址(Windows绿色版)
链接:https://pan.baidu.com/s/1MvkhdvcaOSiD5aA3hdtmhg
提取码:zzbx


ArduPilotLog 开源说明#


概要#


ArduPilotLog 是 ardupilot 日志数据绘图软件。为快速展示 Log 日志数据,以便通过分析数据排查程序 bug 或累积经验而设计。


打开"*.bin"类型日志#


打开方法如下图所示:


三种绘图方法#


  1. 点选绘图

    “点选绘图”在不明确看哪一种日志数据时使用。
    比如:对于飞机的某种奇怪表现,往往不能立刻明确是哪里出了问题,这时怀疑对象泛围大,用点选方式为猜测快速提供依据。





  1. 数据分析窗(点选绘图Plus)

    “数据分析窗”在小泛围锁定目标数据时使用。
    比如:通过点选绘图已初步锁定某种现象与某几类数据表现相关(注:少于10类),此时须要精确绘图。




打开“数据分析窗”

“数据分析窗”说明

通过“数据分析窗”绘图


  1. 脚本绘图

    “脚本绘图”用于反复验证已锁定的目标数据是否合理的情形。
    将与当前问题有关的数据锁定后,往往需要多次采集 Log 日志,重复分析以便证实。这时使用脚本绘图比较方便,以免去每次点选、调整比例等麻烦。




加载脚本



脚本语法如下图(也可见 conf/ReadMe.md


编译方法#


ArduPilotLog 软件架构源于qgroundcontrol,因此编译方法与QGC相同。


软件的由来#


起初只是为了学习QGC,QGC功能多、代码构架复杂不是一下就能看懂的。

后来在研究ardupilot的过程中经常要分析Log。使用过MissionPlanner、APM Planner等软件看Log日志,有几个体验一直觉得不爽:


  1. MissionPlanner最难受的是有时看看日志会卡死。


  2. 我更关心图线,不是很在意数据,而界面留了一部分展示数据,每次都要手动拉小数据部分。


  3. “看Log日志数据”只是这些软件的“一部分”功能。也就是说每次为了看数据,必须先要打开这些软件,等待其余功能加载完毕,然后点到这个功能,浪费时间。


  4. 于上位机的角度讲,QGC的界面划分和操作方式更适合我,却单单缺少查看Log日志数据这个功能。




基于以上原因,就自己写个软件搞定自己的需求吧。


作者本人对此软件的评价#


  1. 这不是一个完美的软件。


  2. 这个软件最初是以学习为目的而写的,没有走太完整的功能设计过程,业余时间想到哪写到哪。若要完美整合已实现的功能,就要重构了。


  3. 代码适合想学QGC的朋友们看(看git的开发流程log,都是0起点开始的)。


  4. 软件适合正在学习或调试ardupilot的朋友们使用。
    由其是 “脚本绘图” 功能,其目的就是给无形的经验累积提供一个容身之所,让经验有形,便于自我反复推敲和与人交流。


  5. 代码开发过程中经历了:QGC架构分析、用户体验设计、功能模块拆分与整合等过程,麻雀小可能还有点丑,但五脏全。



软件涉及到的知识点#


跟我一样0起点想学QGC的朋友可能关心这些,在此简单例举。

  1. QGC架构。


  2. QT ui界面开发。


  3. QT QML界面开发。


  4. QT ui 与 QML 整合方法。


  5. QT SQLite 数据库。


  6. QT 界面与后台数据的分离与整合。


  7. QT 信号与槽通信机制。


  8. QT 二进制文件读写。


  9. QT 文本文件读取。


  10. QT 正则表达式使用。


  11. ardupilot 日志文件结构。


  12. qcustomplot 绘图插件。


  13. QGC qCDebug()分类控制显示调试日志的方法。



对于更进一步的数据分析#


本软件以快速显示图线为目的,对于三种绘图方式仍不能满足的数据分析需求,则须将数据导入MATLAB(诸如:给数据进行低通滤波、数据作为控制仿真的输入等需求。)


arduplilot日志数据的交换#


本软件设计的目的之一是:让不同平台能方便的使用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 除外)。


后续更新会往以下几个方向发展:


  1. 分享一些开发过程中的心得。


  2. 对某个知识点的剖析。


  3. 加入新的 *.conf 绘图脚本(分享ardupilot“有形的”经验)


  4. 软件开发经验分享:
    1)说说软件架构是什么,为什么重要。
    2)说说本软件开发的功能设计、功能模块划分与整合是怎样体现的。
    3)说说本软件为提升用户体验感而做了哪些改进。
    4)说说当有上位机开发需求的时候,应该怎样入手。
    5)其他各种想到的值得分享的东西。



这是一个因学习而生的项目,它未来更大的意义不是从丑小鸭进化成白天鹅,而是为同样0起点的后来人铺上一块前往更高层次的砖。


往期热文(点击文章标题即可直接阅读)



登录查看更多
9

相关内容

数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用。
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
资源 | 深度学习图像标注工具汇总
人工智能头条
9+阅读 · 2018年6月12日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
Revisiting CycleGAN for semi-supervised segmentation
Arxiv
3+阅读 · 2019年8月30日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关资讯
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
资源 | 深度学习图像标注工具汇总
人工智能头条
9+阅读 · 2018年6月12日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
Top
微信扫码咨询专知VIP会员