PX4日志生成及查看

2024-08-31 06:32
文章标签 日志 查看 生成 px4

本文主要是介绍PX4日志生成及查看,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pixhawk的飞行日志由固件中的sd2log模块记录在SD卡的log文件中,目前版本的格式为*.px4log(曾经是*.bin),根据sd2log的设置不同,包含飞行日志的文件夹的名字可能是sess***或者具体日期时间

启动日志

PX4中日志有时不随系统启动,需要在地面站中通过sdlog2命令启动日志记录,参数如下:

sdlog2 {start|stop|status|on|off} [-r ] [-b ] -e -a -t -x 
-r Log rate in Hz, 0 means unlimited rate 
设置记录的频率,0为不限,最好不要用,会占据很多cpu时间 
-b Log buffer size in KiB, default is 8 
设置缓存大小,默认为8KB, 
-e Enable logging by default (if not, can be started by command) 
开机自动开始记录,如果没有自动开始记录,仍然可以通过命令开始 
-a Log only when armed (can be still overriden by command) 
只有arm后才开始记录,可以通过命令更改。 
-t Use date/time for naming log directories and files 
用日期和时间命名日志文件夹和文件 
-x Extended logging 
拓展记录,可以记录更多的数据 
也可以更改SDLOG_RATE进行设置

启动:
sdlog2 start -t -a -r 100

注意,这里仅仅是启动日志记录的程序,还没有开始记录日志,日志记录的开启和关闭用命令sdlog2 on和sdlog2 off来完成,如果希望执行start就开始记录的话,加上-e

关闭:
sdlog2 stop

查看日志

查看日志使用FlightPlot.jar查看,通过这里可以下载,需要安装java环境
windows下直接双击运行
Linux/Mac下输入下面的命令:
java -jar FlightPlot.jar

然后选择对于的日志文件,一般在log/sess**目录下

点击Fields List,点选你想查看的额数据,然后确认。(可以通过ctrl+鼠标进行多个数据的同时点选和显示,但是之后不能单独移除,必须所以一次性点选的一起移除,所以也可以分别点选进行显示。)

日志Field的说明

在Firmware\src\modules\sdlog2\sdlog2_messages.h文件中有对日志姐姐每个Field的定义。下面是比较重要的几个数据:

/* --- ATT - ATTITUDE --- */
#define LOG_ATT_MSG 2
struct log_ATT_s {float q_w; //下面4个是四元数float q_x;float q_y;float q_z;float roll;float pitch;float yaw;float roll_rate;  //下面3个是角速度float pitch_rate;float yaw_rate;
};/* --- ATSP - ATTITUDE SET POINT --- */
#define LOG_ATSP_MSG 3
struct log_ATSP_s {float roll_sp;   //下面4个是期望值float pitch_sp;float yaw_sp;float thrust_sp;float q_w;      //期望的四元数float q_x;float q_y;float q_z;
};/* --- IMU - IMU SENSORS --- */
#define LOG_IMU_MSG 4
#define LOG_IMU1_MSG 22
#define LOG_IMU2_MSG 23
struct log_IMU_s {float acc_x;   //下面一次为加速度、角速度、磁力计的读书,temp不知道float acc_y;float acc_z;float gyro_x;float gyro_y;float gyro_z;float mag_x;float mag_y;float mag_z;float temp_acc;float temp_gyro;float temp_mag;
};

 其他相对比较重要的数据有

/* --- LPOS - LOCAL POSITION 相对位置信息--- */
#define LOG_LPOS_MSG 6
struct log_LPOS_s {float x;    //相对于home的位置信息float y;float z;float ground_dist; //离地高度float ground_dist_rate; //爬升速度float vx;  //3维的速度信息float vy;float vz;int32_t ref_lat;  //相对home的经纬度int32_t ref_lon;float ref_alt;uint8_t pos_flags;uint8_t ground_dist_flags;float eph;float epv;
};
/* --- LPSP - LOCAL POSITION SETPOINT 位置控制的期望值--- */
#define LOG_LPSP_MSG 7
struct log_LPSP_s {float x;float y;float z;float yaw;float vx;float vy;float vz;float acc_x;float acc_y;float acc_z;
};
/* --- ATTC - ATTITUDE CONTROLS (ACTUATOR_0 CONTROLS) 角度控制输出--- */
#define LOG_ATTC_MSG 9
#define LOG_ATC1_MSG 46
struct log_ATTC_s {float roll;float pitch;float yaw;float thrust;
};/* --- STAT - VEHICLE STATE 车辆的状态--- */
#define LOG_STAT_MSG 10
struct log_STAT_s {uint8_t main_state;uint8_t nav_state;uint8_t arming_state;uint8_t failsafe;uint8_t is_rot_wing;
};/* --- RC - RC INPUT CHANNELS 遥控器通道的输入--- */
#define LOG_RC_MSG 11
struct log_RC_s {float channel[12];uint8_t rssi;uint8_t channel_count;uint8_t signal_lost;uint32_t frame_drop;
};/* --- OUT - ACTUATOR OUTPUT PWM制动器的输出--- */
#define LOG_OUT0_MSG 12
struct log_OUT_s {float output[8];
};

生成csv文件

有些时候需要飞机的数据进行仿真或者其他处理,需要得到csv文件,在源代码的目录值下有生成csv文件的工具,在:               Firmware\Tools\sdlog2\下有个sdlog2_dump.py文件,参数为:

使用sdlog2_dump.py脚本可以把日志记录生成csv表格
sdlog2_dump的参数有:
-v 使用普通的调试输出,而不是CSV文件,就在在控制台上打印出来
-e 从错误中恢复,不懂
-d 所需使用的分隔符,默认为','
-n 日志文件中空值的替代符号,比如'null',默认为空''
-m 需要存储的消息类型和指定字段,可以有多个-m,默认存储所有数据
-t 指定时间列的名称(时间列的数值单位为us)

使用下面的命令可以生成csv文件

python sdlog2_dump.py log001.bin -f "export.csv" -t "TIME" -d "," -n ""

如果只想输出指定的数据,比如时间戳、ATT和IMU可以执行下面的命令:

python sdlog2_dump.py log001.bin -f "export.csv"  -m "TIME" -m "ATT" -m "IMU" -m "ATSP" -m "LPOS" -m "LPSP" -m "ATTC" -m "STAT" -m "RC" -m "OUT0" -m "LAND"

这篇关于PX4日志生成及查看的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123151

相关文章

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹