目录

1、日志数据下载

2、日志工具使用

3、四元数转欧拉角使用

4、FFT数据分析

5、常用日志数据


PX4飞控使用中,非常重要的一个技能就是要会进行日志分析,我将为大家详细讲解PX4基础的日志使用方法,学会了如下基础技能,日志使用就算完全入门了。

1、日志数据下载

      日志数据下载有两种方式,第一种就是直接用读卡器读取飞控的TF存储卡,里面的“log”文件夹存有日志数据,数据命名也是按照日期进行命名的,这种方式下载日志比较简单,不再赘述。

      还有第二种方式就是使用地面站下载日志,这里以QGC地面站为例,详细讲述使用QGC如何下载日志:

      首先,QGC地面站需要与飞控连接(可以是通过遥控器的无线连接,也可以是USB直接连接飞控),推荐使用USB连接飞控,下载日志速度更快。

      飞控连接电脑QGC以后,点击左上角图标,弹出的功能界面中选择“Analyze Tools”;

      然后进入“日志下载”,选择右侧的“刷新”;

      然后就可以勾选你想要下载的日志,点击下载即可下载到电脑本地;

      PX4默认的日志文件为ulg格式,并且默认的日志记录开始时间为无人机解锁的时间,日志结束时间为无人机锁定的时间,如果你想改成上电开始记录或者下电才结束记录,可以通过QGC参数设置界面修改SDLOG_MODE参数(关于参数设置详细内容,我后续再单独出一篇文章描述),如果要上电后就开始记录日志,需要设置成from boot until shutdown:

注:

      如果你想看当前MAVLink实时的通讯数据内容,可以在选择“Analyze Tools”后的界面中选择“MAVLink检测”,看到当前实时的消息内容:

2、日志工具使用

      当你完成了ulg日志下载,此时需要借助日志分析工具进行日志分析了,我这里主要讲两个日志分析工具,一个是在线日志分析工具“Flight Review”,另一个是离线日志分析工具“PlotJuggler”,两个都算是目前我觉得最好用的日志分析工具。

(1) Flight Review

       “Flight Review”是一个在线分析工具,需要我们电脑联网,然后输入网址“https://log.px4.io”即可打开使用,在界面中加载日志文件,输入日志名称(可随便命名),然后输入邮箱即可:

      然后等待1min左右,即可看见如下日志内容,里面还有很多其他功能大家可以在右上角的功能选项中去使用,这里只讲基础使用就不再赘述:

(2)PlotJuggler

      PlotJuggler是功能非常强大的日志分析工具,需要进行下载安装,下载地址
https://github.com/facontidavide/PlotJuggler

      完成下载安装后,打开PlotJuggler,在Data中加载你需要分析的日志:

      然后可以在日志搜索框中输入你需要加载的数据,选中后拖动到右侧的图形坐标界面:

      右侧图形坐标界面可以选择“+”增加显示界面,也可以在界面中选择增加下侧或右侧平行框显示不同数据内容,当然多个数据也可以拖动到同一个界面中显示:

      至此,你就可以在PlotJuggler中查看你的日志数据内容了,其他界面调整以及数据查看方式调整等功能不在这儿赘述了,大家多去尝试点不同的功能,既可以学会了;常用的日志数据内容有哪些,请看第五节常用日志数据。

3、四元数转欧拉角使用

      上面讲解了PlotJuggler的基础使用,本章节扩展一下,说一说如果想在PlotJuggler中将四元数转化为欧拉角,如何使用。

      首先,还是打开PlotJuggler工具,然后在最上方的工具栏中选择“Tools”-“Quaternion to RPY”:

      然后在日志数据中找到姿态数据“vehicle_attitude”,分别将q00、q01、q02、q03拖动到右侧的W、X、Y、Z中,点击右侧“Save”:

      完成上述操作后即可在左下角显示生成的数据,将数据拖动到右边的显示框就可以显示曲线:

      如果想把期望姿态添加进来进行对比,只需要按照上述步骤找到期望姿态数据,转化一次即可,注意:同一个日志第二次转化的时候,OutPut名称不能一样,得改一下,例如前面使用的名称是att,那么这个名称需要修改下。

4、FFT数据分析

      前面讲述了关于使用PlotJuggler进行日志数据分析以及四元数转化欧拉角功能,那么接下来还有一个功能有必要和大家提一下,就是进行FFT滤波数据分析:

      多提一点,为何要进行滤波数据分析,无人机在飞行时会有震动,无人机产生震动的原因:桨叶损坏、动平衡差、电机桨座不垂直,电机动平衡差、机架刚性不足、部件松动。

降低震动的方法:
软件滤波:调低通滤波或者陷波滤波器参数
硬件减震:调减震球的软度或者加配重

      其功能是可以用于分析滤波参数的振动,帮助我们设置低通滤波或者陷波滤波器参数,进行震动过滤,降低对传感器姿态识别的影响。
      使用方法和日志分析类似,加载日志后,点击Tools->Fast Fourier Transform;

      然后加载传感器数据“sensor_combined”,这里以角速度为例,将三个角速度拖动到右侧上方的“FFT Toolbox”中,点击右侧“Calculate”:

      完成上述操作生成了频率数据后,点击下方的“Save Curve”即可得到左下角的数据:

      将获得的三轴频率数据拖动到右侧的图形显示坐标界面中,观察频率变化:

      看陀螺仪数据的FFT频谱图,以上图为例,加速度对应的调参数为:IMU_GYRO_CUTOFF,在40HZ以后的噪声比较多,可以设置IMU_GYRO_CUTOFF为40。

5、常用日志数据

      到此,基本的PX4日志分析及相关工具使用就讲解结束了,为了方便大家快速上手练习,我整理了一些常用的PX4日志数据,如下:

序号 类别 消息 参数 内容
1 传感器数据 sensor_gyro x,y,z 陀螺仪数据,三轴角速度(rad/s)
2 sensor_accel x,y,z 加速度计数据,三轴加速度(m/s²)
3 sensor_mag x,y,z 罗盘数据,三轴磁场强度(Gauss)
4 sensor_baro   气压计数据
5 distance_sensor current distance 当前测距值(cm)
6 sensor_gps   GPS数据
7 控制指令 rc_channels   遥控器输入
8 navigator_mission_item   航点任务指令
9 vehicle_command   地面站/nsh等终端发送的控制指令
10 输出指令 actuator_outputs output.00~03 飞控输出的控制信号,电调4个PWM 输出值
11 飞行状态信息 vehicle_local_position x,y,z,vx,vy,vz 位置与速度信息
12 vehicle_attitude   飞行姿态数据
13 vehicle_status nav_state 飞行状态数据,包括解锁、起飞、失控等状态数据;当前飞行模式(如定点=2,返航=5)
14 vehicle_angular_velocity xyz.00-03 实际角速度信息
15 commander_state   飞行模式
16 控制期望信息 vehicle_local_position_setpoint x,y,z,vx,vy,vz 位置与速度控制指令
17 vehicle_attitude_setpoint   姿态控制指令
18 vehicle_rates_setpoint   角速率控制指令
19 EKF信息 _parameters   EKF相关参数
20 硬件情况 cpuload   CPU负载率
21 电源监控 battery_status current_a 电池电流(A)
22 battery_status voltage_v 电池电压(V)
23 遥控器指令 input_rc values.00~03 4个遥控器通道原始信号(PWM 值)
24 故障诊断 estimator_status filter_fault_flags 位掩码表示 EKF 内部故障
25 滤波及数据融合状态 estimator_status_flags innovation_fault_status_changes 传感器数据拒绝融合统计得次数
26 estimator_status_flags control_status_changes 滤波器控制状态(cs)变化的数目
27 estimator_status_flags fault status changes 滤波器故障状态变化次数(fs)
28 estimator_status solution status flags 位掩码表示哪个滤波器的运动状态输出对飞行控制使用是有效的。
29 sensor_combined gyro_rad.00-02 融合后的角速度数据
30 sensor_combined accelerometer_m_s2.00 融合后的线速度数据
31 事件记录 estimator_event_flags * event_changes 信息事件变化次数

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐