在某自动驾驶公司工作时利用闲暇时间写的分析车辆日志数据的程序,主要绘制平台中心下发的任务和车辆自动行驶中实际行驶中的三维路径图和偏差折线图,同时绘制自动驾驶系统与车辆控制系统之间的指令与反馈折线图,再结合网络、路况和天气等环境情况分析车辆自动行驶的运行状态,提高了分析数据的效率。

Ⅰ.使用说明

·简单路径查看

  1. 点击“加载ccu_log”或“加载lpx”选择车辆日志文件或任务文件。(注:log为日志文件,lpx为任务文件)
  2. 待文件全部加载完毕后在下方“已加载文件信息”处选择要查看的车辆实际路径或任务路径。其中左侧为日志文件,右侧为任务文件。如下图。

        lpx的任务路径会直接绘制,日志路径在“Choose”下拉栏里可以选择高亮显示,另外lpx的任务路径可以先在“Choose”下拉栏选中文件后通过左侧的两个按钮决定此任务路径的显示与否。如下图。

·分析日志※

        日志文件加载成功后先点击左上角的分析日志,待全部加载完成后点击分析日志等待分析束。

·独立窗口自动绘图

        点击左上角[独立窗口自动绘图]将创建一个独立matlab绘图窗口,有丰富的工具栏可对图像进行注释。绘图效果如下。

·路径查看窗口

        通过下侧红框内的开关可以控制对应的信息提示与部分状态乱段在图中的显示与否。
注:

  • [横向误差信息]和[感知信息]中的分析参数需要在点击[分析日志]之前设置。
  • [日志航向]取日志内的“gps速度”和“航向”进行正北与正东方向上的分解,然后用quiver函数进行绘制。
  • [日志速向]取日志内的“惯导北向速度”和“惯导东向速度”,同样用quiver函数进行绘制。
  • [路径航向]取任务路径lpx文件内的“速度”和“航向”进行正北与正东方向上的分解,用quiver函数进行绘制。

·自定义窗口

        ①组为正常的日志文件,②组可以选择其他文件。
①:可以绘制各类偏差情况并用不同颜色在路径图上标出。绿色为偏差小于value1值的;棕色为大于等于value1值小于value2的;红色为大于等于value2值的。同时绘制一个所选选项与横向偏差综合分析的折线图。如下图。

②:可以选择带有经纬度的数据文件把想要查看的数据情况表现在经纬度图上,先把经纬度、所要查看分析的数据在数据文件中的列号和所要查看的行号填好,下方的valueX值与前面相同,用浅绿色浅蓝色浅黄色深黄色深橙色深红色表示所查看分析的数据由轻到重的情况。如下图。

        注意:若数据文件有表头和列头,其不会显示在“自定义log数据”中,可以从“log数据”与“自定义log数据”看出。“自定义log数据”中未显示真正的首行和首列,但是在数列号与行号时也占一列或一行,不能按照“自定义log数据”表为准(为什么会这样呢?懒得搞了。),要以原数据文件为准

·其他分析窗口

左侧—综合分析

  • [整体绘图]会将开关在“on”的那些绘制在同一个窗口。
  • 单独绘图]则该项独自一个窗口绘图。
  • 选项框内说明:每个框内默认两项。
  • [项目] :项目表源自日志表头,从这里选择绘制的数据。
  • [L|R] :选择左侧或右侧为该项在图中的纵轴。
  • [Visible] :决定该项在图窗内的显示与否。
  • 注:先点击绘图,再点击[Visible]使其再图窗中可见,顺序不能错。

右侧—关联图

        此处引用了书《MATLAB程序设计——重新定义科学计算工具学习方法》中7.4节软件设计实战中的设计思路与部分代码。

  • 二次曲线拟合图
            将任意两种能力或技能进行数据对比,可视化两者的分布关系,并对两者进行二次曲线的拟合,以明确提炼因素之间的影响。 ——《MATLAB程序设计——重新定义科学计算工具学习方法》
            书中用polyfit函数计算拟合,并用fplot函数对拟合结果进行绘制。但在将app打包为.exe程序时matlab软件报警fplot函数无法打包,故改用polyfit函数与polyval函数完成二项式拟合计算,再用plot函数完成绘图。
  • 散点图
            本例中计算散点尺寸的意义是,将散点图中每个点的尺寸可以直观表示该数据出现的频数,并且出现越多颜色就越深(这是因为后面使用MarkerEdgeAlpha属性设置了透明度),使得可视化效果非常强烈,富有科技感,这是一种高级的散点图,应用于坐标为整数导致较多重合点出现时,称为“热力散点图”。

示例

·其他功能

查点

        在上侧①、②处输入经度(横轴)与维度(纵轴)后点击[查点],将在经纬度点位上标注一个带十字的紫色圆点(如右图),若不点[清除],可多次查点,点击[清除]将删去所有“查点”。

标记

        点击[标记]后可在左侧二维图中用鼠标左键标注橘红色点,鼠标中键清除标记点,鼠标右键退出标记。注意,再次点击[标记]会清除上一次标记的所有点。

测距

  • 步骤:点击[测距];在左侧二维图内用鼠标左键选取第一个点,紧接着同样选取第二个点;鼠标右键退出测距。
  • 两组数为鼠标左键选取的两个点的经纬度,上面的是第一组,下面的是第二组。左侧为经度,右侧为维度。结果单位为“m(米)”。
  • 可多次测量。在选取完第一组的第二个点后可再次测量新的一组,操作相同。
  • 在选完第一个点后若不按下鼠标左键可拖动鼠标测得第一个点到鼠标位置的实时距离。
  • 鼠标中键可清除这次测量中前几组在图中的线条。
  • 再次点击[测量]会清除上一次测量在图中的线条。
  • 测距算法:由于之前写的代码中角度转弧度制没注意到没写完整,”360“也错写成了”306“,而且没写注释,思路已经看不懂了......现在改用Haversine公式计算大圆距离。新版经纬度计算距离代码放在了这里
  • 注:鼠标拖动太快会出现测量错误。如下图,第二次是我在快速拖动鼠标情况下测得的数据,结果与第一次相去甚远。

Ⅱ.更新与下载

1.后续更新

       没有意外的话不打算再更新了,后续如果接触python的话,会练手把这个改成用python程序。

2.下载

  • 下载:
    Log_Analysis-win(百度云提取码:xhk1)
  • 说明:
    • 手上没有Ubuntu系统,所以没做Ubuntu版的程序。
    • 环境包:无内置环境的需要去matlab官网下载环境包进行安装,因为我使用的Matlab版本为R2020a(9.8)版本,故环境包也下载R2020a(9.8)版本的。此点在readme文件中也有说明。