谁还没用过这个飞控开源神器!再也不用熬夜分析日志
在无人机研发和调试中,飞控日志是解读飞行行为的 “黑匣子”。传统分析方法如 Excel 表格筛选或基础绘图工具,往往让工程师陷入海量数据定位难、多参数关联分析弱、动态过程还原差的困境。而PlotJuggler作为一款开源的时间序列分析工具,可大幅提升飞控日志的解析效率,助力精准诊断与优化飞行性能。
飞控日志分析三大难题
数据堆里找问题,费时又费力
单次飞行日志包含数百个 uORB 主题(如姿态、电机输出、传感器噪声),传统方法需逐项筛选,耗时长达数小时。
典型场景:无人机发生空中姿态突变,工程师需从海量参数中定位异常变量(最终发现是 IMU 温度)。
只看单个曲线图,找不到问题根源
Excel 或 MATLAB 静态曲线无法呈现参数动态耦合关系。
典型场景:飞行器震动超标,仅凭单一加速度曲线无法判断是结构干扰还是控制参数导致。
多系统互相影响,查问题要拼全线索
- 典型场景:故障如果由跨系统交互问题引发(如电源波动→控制器响应延迟→姿态发散),需同步分析电气、控制、运动三组数据。
PX4官方推荐有多款日志分析工具,PlotJuggler相较其它分析工具,优势较为明显:
直观的拖放界面。
在多个绘图、选项卡或窗口中排列数据。
所有 uORB 主题都会显示出来,并且可以绘制成图表。
整理数据后,将其保存到 “Layout” 文件中并多次重新加载。
使用自定义 “数据转换” 在 PlotJuggler 中处理您的数据。
PlotJuggler主要功能介绍
多窗口数据同屏,告别来回切换
通过水平 / 垂直分屏技术,实现多参数同步动态观测:
实战价值:通过将分析界面分割为三个独立视图,分别显示飞行姿态数据(X/Y/Z 轴加速度),并在右侧叠加垂向速度曲线,中下部引入电池电流参数。当无人机起飞时,电流激增与加速度 / 速度曲线的同步波动在时间轴上精确对应,这种多维度时序数据关联分析可快速定位异常工况。单一参数视角易导致误判,而多视图联动能完整呈现 “动力输出→运动响应“ 的因果链条,显著提升故障诊断效率。
绘制二维运动轨迹
通过Ctrl + 右键拖拽生成 XY 散点图,将时间序列转换为空间轨迹:
实战价值:PlotJuggler 支持通过 Ctrl + 右键拖拽实现双参数散点图分析(如选择 vehicle_local_position 的 x 与 y 坐标),在 XY 平面映射飞行器轨迹投影。右侧视图同步显示 vx/vy 水平速度分量与 vz 垂向速度的时序曲线,配合右下角的实时回放控制条(可调节 0.1-10 倍速),可动态观察位姿变化与速度矢量的时空耦合关系。当飞行器沿 X 轴加速时,vx 曲线呈现正相位增长;转向 Y 轴运动时,vy 分量同步响应变化。这种 “轨迹 - 速度” 联合分析模式,可快速诊断定位漂移、速度积分异常等典型飞控问题,与传统单维度分析效率相比有显著提升。
FFT变换
内置快速傅里叶变换功能,一键生成振动频谱:
a、启动 FFT 工具 加载日志文件后,点击顶部菜单栏Tools -> Fast Fourier Transform
b、数据加载与分析 将目标传感器数据拖入右上角Input区域(如陀螺仪sensor_combined/gyro_rad.00)点击Calculate生成频域曲线
c、结果保存与观察点击Save Curve保存 FFT 曲线(如gyro_rad.00_FFT) 关闭 FFT 窗口,将生成的 FFT 曲线拖至右侧显示区,放大 Y 轴观察频谱幅值。
实战价值:无人机出现高频震动,通过 FFT 分析发现震动频率,可设置截止频率后直接观察滤波效果,无需导出数据。
绘制姿态跟随曲线
转化步骤:
a. 数据定位
在左侧「时间序列列表」中搜索 vehicle_attitude 主题
展开四元数数组 q[4]
b. 数学变换执行
在工具栏「Tools」中点击调用 Quaternion to RPY三角函数
拖放四元数得值,q[0],q[1],q[2,]q[3]分别对应W,X,Y,Z
点击save
c. 可视化验证
- 在右侧Custom Series:下选择roll,pitch,yaw拖入右侧视图中进行显
技术原理:四元数 (q0,q1,q2,q3) 到滚转角的转换公式为: roll = atan2(2*(q0*q1 + q2*q3), 1 - 2*(q1² + q2²))PlotJuggler 通过内置函数库自动完成该计算,避免用户手动编码。
实战价值: 通过对比曲线可直观评估控制回路的动态特性:
响应速度: 实际曲线滞后期望曲线的时长反映比例增益(P)是否充足
超调抑制: 实际曲线超过期望值的幅度指示微分项(D)阻尼效果
稳态误差: 两曲线在稳定阶段的偏差反映积分项(I)补偿能力
调试原则: 控制跟不上就调大p,震荡厉害就调小p,振幅差不多就可以加一点d,有静差就加i
经典案例
FFT分析震动并调参
)
通过对比无人机悬停日志的 FFT 频率图谱发现:当陀螺仪角速度和角加速度截止频率参数(IMU_GYRO_CUTOFF/IMU_DGYRO_CUTOFF)设置为 75Hz/50Hz 时,频谱分析显示存在显著 25Hz 机体振动(左图);将该参数调整为 35Hz/25Hz 后,右图显示该频段振动基本消除,飞行稳定性也有较大得提升。
高度异常
本案例分析了无人机高度控制异常问题。日志数据显示:a、第一个框图中曲线代表通过气压计得高度数据b、第二个框图中曲线是定高雷达传感器得到的高度数据c、第三个框图中曲线无人机经过融合后得高度数据d、第四个框图中曲线是gps高度数据e、第五个框图中曲线无人机主要高度来源得切换标志位数据异常发生时间段(红色框出部分),明显看出气压高度和gps高度趋势一致,但是定高雷达输出的的高度相反,由于参数启用了EKF2_RNG_AID,导致高度融合一直在气压计高和定高雷达之间切换,定高雷达数据又是有问题的,导致融合高度也错误。最后,导致高度不可控制。
资源下载
软件安装:
https://github.com/facontidavide/PlotJuggler/releases
注意:
Windows11 系统下, PlotJuggler 可能无法运行,请安装v2.8.4版本
参考网址:
https://docs.px4.io/main/en/log/plotjuggler\_log\_analysis.html
常用参数含义:
以下是一些常用日志数据介绍,未展开的消息介绍,建议结合 PX4 官方 uORB主题文档进行学习(参考:https://docs.px4.io/v1.13/en/msg\_docs/)
**如果您有感兴趣的技术话题,请告诉我们!关注阿木实验室,更多技术干货不断更新!
开发遇到棘手难题可以上阿木官方论坛:
bbs.amovlab.com**
有工程师亲自解答10000+无人机开发者和你共同进步!