Pixhawk---sdlog2应用具体解释

sdlog2 app

??该应用的用途是记录飞控飞行日志到SD卡中,日志文件格式与APM二进制文件兼容,可是sdlog2使用强制性的消息时间写时间戳。

使用方式

??每次sdlog2应用開始记录日志的时候。它会在SD卡日志目录log中创建一个新的目录。假设-t參数选项被设置了。并且GPS时间戳是可获得的,目录的名称就是基于当前日期。如log/2015-07-24,否则的话就是被命名为sessXXX(XXX代表一个序列号)。

目录中的文件命名也大同小异,假设-t选项已设置,文件名称为log/2015-07-24/11_43_52.bin,否则的话就被命名为log.XXX.bin(XXX也为序列号)。

??不管sdlog2应用是否已经启动了、系统已经被配置好了,还是mavlink命令。日志的记录都取决于sdlog2应用所设置的选项。选项说明例如以下:

usage: sdlog2 {start|stop|status|on|off} [-r <log rate>] [-b <buffer size>] -e -a -t -x
    -r      Log rate in Hz, 0 means unlimited rate
    -b      Log buffer size in KiB, default is 8
    -e      Enable logging by default (if not, can be started by command)
    -a      Log only when armed (can be still overriden by command)
    -t      Use date/time for naming log directories and files
    -x      Extended logging

日志记录的性能取决于所使用的SD的读写速度。使用较好的SD卡能够有效的避免跳过写入/读取数据。当sdlog2应用在全速率的时候(即没有-r选项)。可能会导致CPU负荷,但对飞行没有负面影响。

可是假设没有满足全速率要求,则可能会记录会跳过信息。

日志记录开启

??在正常情况下,随着飞控的配置好,日志记录就启动了。且仅仅有激活飞行的数据才是所须要的数据。要启动手动日志记录。在控制台上执行以下的命令:

sdlog2 stop
sdlog2 start -t -r 200 -e -b 16

??停止记录:

sdlog2 stop

分析日志

FlightPlot工具(—推荐使用)
Fields List

FlightPlot Analysis

??查看和分析日志。能够使用__FlightPlot__GUI工具(提供了可执行的jar包),下载下来并安装好Java后双击就能够执行了。无需转换日志文件,就能够读取由sdlog2应用产生的二进制日志文件。并通过图形方式显示。详细的使用方法见链接。

??FlightPlot支持的日志文件:

  • PX4 autopilot log(.bin generated by sdlog2)
  • APM binary logs (.bin files stored on SD card) (added in v.0.2.6)
  • 支持mavlink日志
Pymavlink工具

??还能够使用包括在Pymavlink软件中的mavgraph工具来绘制日志图像。Pymavlink提供了很多命令行和可视化的工具用于分析数据和制图。它支持mavlink日志(APM或PX4的均可)。

Matlab(转换logs成CVS)工具

??读取二进制文件。并将其转换成CVS文件,能够使用Python或者Matlab脚本文件来实现。分析数据是通过选用不同的參数选项来查看的,详细的使用方法就不介绍了(都是命令式的。有点麻烦)。

logconv.m:自己主动转换日志文件,并图形显示飞行的数据。
sdlog2_dump.py:Python脚本,将二进制形式的日志文件转换成CVS格式的文件。

可能遇到的故障

??为避免在IO带重负载的关键应用中。在侦听消息和写日志到SD卡上有一个缓冲区。假设在某些时候这个缓冲区溢出了。那么一些日志记录就会被跳过了。

跳过的记录数据能够通过控制台使用sdlog2应用检測出来。这个也会在关闭日志文件的时候打印出来。只是需加-a选项。由上可知,假设跳过的记录不为零,那么就须要添加这个缓冲区的大小了,以下的命令就是将默认的8KB缓冲区改为16KB:

sdlog2 start -t -r 100 -e -b 16

负载測试

??測试SD的传输速率,启动sdlog2应用应配置成记录日志速率为200Hz。32KB的缓冲区,并加上-e选项:

首先停止应用:
sdlog2 stop
sdlog2 start -t -r 200 -e -b 32
执行perf命令查看诱导sdlog2负荷:
(NOTE: 性能计数器仅仅在记录时存在)
perf
或者执行执行top命令:
top
停止应用,清理文件系统:
sdlog2 stop
时间: 2024-10-09 00:01:40

Pixhawk---sdlog2应用具体解释的相关文章

pixhawk 整体架构的认识

此篇blog的目的是对px4工程有一个整体认识,对各个信号的流向有个了解,以及控制算法采用的控制框架. PX4自动驾驶仪软件可分为三大部分:实时操作系统.中间件和飞行控制栈. 1.NuttX实时操作系统 提供POSIX-style的用户操作环境(如printf(), pthreads,/dev/ttyS1,open(),write(),poll(),ioctl()),进行底层的任务调度. 2.PX4中间件 PX4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理(micro object

Pixhawk之姿态控制篇(1)_源码算法分析(超级有料)

一.开篇 姿态控制篇终于来了.来了.来了~~~ 心情爽不爽?愉悦不愉悦?开心不开心? 喜欢的话就请我吃顿饭吧,哈哈. 其实这篇blog一周前就应该写的,可惜被上一篇blog霸占了.但是也不算晚,整理了很多算法基础知识,使得本篇blog更充实.一人之力总是有限的,难免有不足之处,大家见谅,有写的不好的地方劳烦指正.看到标题了吧,属于连载篇,所以后续还会有相关问题的补充的. 二.版权声明 博主:summer 声明:喝水不忘挖井人,转载请注明出处. 原文地址:http://blog.csdn.net/

Pixhawk之姿态解算篇(1)_入门篇(DCM Nomalize)

一.开篇 慢慢的.慢慢的.慢慢的就快要到飞控的主要部分了,飞控飞控就是所谓的飞行控制呗,一个是姿态解算一个是姿态控制,解算是解算,控制是控制,各自负责各自的任务.我也不懂.还在学习中~~~~ 近期看姿态预计部分看的太累了,明显发现基础知识太薄弱,什么欧拉角.DCM.四元数.gyro误差.矫正.正交化等各个概念.然后就是各种转换公式.接下来结合代码介绍一些主要的东西.太深入的还不了解~~~ 一定要多看论文啊,英文版的论文(也没有中文的.国人的悲哀啊).尽管看着头疼,看是看完了以后就会发现很多不了解

[UVA]Pixhawk之姿态解算篇(3)_源码姿态解算算法分析

一.开篇 终于到ardupilot源代码的姿态解算了,有了前期关于mahony姿态解算算法的基础以后,理解源代码的姿态解算算法就快多了,所有的东西都在脑海中初步有了一个框架:首先要做什么,然后再做什么,再然后捏~~~反正容易上手的. 2016.04.04日晚,别人都在嗨,而我却在实验室苦逼的工作着,今晚最大的收获就是发现了"新大陆"-----"北航可靠飞行控制研究组",其喜悦之情绝不亚于哥伦布发现新大陆.他们才是专业的啊,看看他们毕业生的去向,不是研究所就是出国深造

pixhawk position_estimator_inav.cpp思路整理及数据流

写在前面: 这篇blog主要参考pixhawk的高度解算算法解读,并且加以扩展,扩展到其他传感器,其实里面处理好多只是记录了流程,至于里面实际物理意义并不是很清楚,也希望大牛能够指导一下. 概述: 整个算法的核心思想是由地理坐标系下的加速度通过积分,来获得速度.位置信息:经过2次修正产生可利用的信息,第一次是利用传感器计算修正系数产生加速度的偏差修正加速度,第二次是利用修正系数修正位置:最后可利用速度经过加速度修正,可利用的位置经过了加速度和位置修正.加速度的修正过程是由机体测量的加速度通过减去

pixhawk make文件分析

由于笔者没学过Linux等系统,对make文件所知甚少,本节分析可能有大量错误,只提供参考,随着技术积累,以后会回过头改正错误的地方,也非常欢迎提出指导意见. 其中分析大多数参考网上解释,加上自己的理解,对make源码逐行阅读并做了相关注释和分析. 统一规定:红字是注释分析:代码部分左边是程序,右边是注释. 下面开始分析 首先打开ardupilot/Arducopter/makefile include ../mk/apm.mk 引用其他mk所以去看看apm.mk是什么 # find the m

[pixhawk笔记]2-飞行模式

本文翻译自px4官方开发文档:https://dev.px4.io/en/concept/flight_modes.html  ,有不对之处,敬请指正. pixhawk的飞行模式如下: MANUAL(手动模式) 固定翼/车/船 MANUAL(手动模式):飞手控制输入直接到输出混控器 STABILIZED(增稳模式):飞手控制作为俯仰和滚转角度指令和手动的偏航指令(角度or速率?) 多轴 ACRO(特技模式):飞手输入直接到滚转.俯仰和偏航速率指令,油门直接到输出混控器 RATTITUDE(觉得是

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式.非常多小伙伴都问我.为什么不把我制作的插件放到Github上,让大家共享一下. 我仅仅能说.大哥啊,这个插件是我在公司研发的时候制作的,商业机密.不能开源啊. 刚好.近期逛

使用TCP时序图解释BBR拥塞控制算法的几个细节

周六,由于要赶一个月底的Deadline,因此选择了在家VPN加班,大半夜就爬起来跑用例,抓数据...自然也就没有时间写文章和外出耍了...不过利用周日的午夜时间(不要问我为什么可以连续24小时不睡觉,因为我觉得吃饭睡觉是负担),我决定把工作上的事情先放下,还是要把每周至少一文补上,这已经成了习惯.由于上周实在太忙乱,所以自然根本没有更多的时间去思考一些"与工作无关且深入"的东西,我指的与工作无关并非意味着与IT,与互联网无关,只是意味着不是目前我在做的.比如在两年前,VPN,PKI这