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"

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将PX4飞行数据提取到Matlab中,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Matlab软件,并且已经安装了pyulog库。你可以在https://github.com/PX4/pyulog找到pyulog的安装教程。 2. 将存储有PX4飞行数据的存储卡插入读卡器,并将读卡器连接到计算机上。在存储卡中找到以.ulg结尾的日志文件,例如log001.ulg,并将其复制到计算机上。 3. 打开Matlab软件,并在命令窗口中导航到存储日志文件的文件夹。 4. 使用pyulog库中的ulog2csv命令将.ulg文件转换为.csv文件。在Matlab命令窗口中输入以下命令: ``` ulog2csv log001.ulg ``` 5. 执行上述命令后,将在当前文件夹中生成一系列导出的.csv文件,包含了各种飞行数据。 6. 使用Matlab的csvread函数或readmatrix函数来读取感兴趣的.csv文件中的数据。例如,要读取原始加速度计数据,可以使用以下命令: ``` data = csvread('log001_sensor_combined_0.csv', 1, 0); ``` 7. 现在,你可以在Matlab中使用data变量来处理和分析飞行数据了。 请注意,上述步骤中的文件名和变量名可能需要根据你的实际情况进行调整。此外,你还可以根据你的需求选择其他感兴趣的飞行数据进行提取和分析。 #### 引用[.reference_title] - *1* *2* [PX4日志读取并转化为.scv文件、MATLAB显示](https://blog.csdn.net/weixin_41869763/article/details/112617357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值