From deb028af850281a5d265cb65b0f68b50a8f176f3 Mon Sep 17 00:00:00 2001 From: Cal Wing <20716204+calw20@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:33:08 +1000 Subject: [PATCH] Create some more graphs --- main.py | 167 +++++++++++++++++++++++++++++++++++++++++++++++++-- makeGraph.py | 3 +- 2 files changed, 163 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index cee38b4..7f891b9 100644 --- a/main.py +++ b/main.py @@ -182,11 +182,11 @@ INIT_FLIGHT_PRAMS = { } def generateGraphs(missionData, mission): - pBar = tqdm(total=4) + pBar = tqdm(total=6) graphData = { "figTitle": f"Mission {mission} Flight Characteristics", "figTitleFontSize": 16, - "figSize": (15,20), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "figSize": (8,12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 "yLabel": "Time [s]", "plotDim": (3,1), "grid": True, @@ -223,7 +223,7 @@ def generateGraphs(missionData, mission): graphData = { "figTitle": f"Mission {mission} Flight Position", "figTitleFontSize": 16, - "figSize": (15,15), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "figSize": (8, 12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 "yLabel": "Time [s]", "plotDim": (3,1), "grid": True, @@ -259,10 +259,77 @@ def generateGraphs(missionData, mission): makeGraph(graphData, False, False, figSavePath=f"./images/m{mission}_flight_pos.png") pBar.update(1) + graphData = { + "figTitle": f"Mission {mission} Flight Position", + "figTitleFontSize": 16, + "figSize": (10, 12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "yLabel": "Time [s]", + "plotDim": (3,2), + "grid": True, + "subPlots":[ + { + "title": "North Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[0]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[0]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "UAV Flight Path", + "xLabel": "Noth Position [m]", + "yLabel": "East Position [m]", + "zLabel": "Down Position [m]", + "plots": [ + {"x":missionData[0][NED_POSITION_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[1]], "z":missionData[0][NED_POSITION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + {"x":missionData[1][NED_POSITION_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[1]], "z":missionData[1][NED_POSITION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + { + "title": "East Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[1]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[1]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "UAV Flight Path - Low Grade Data", + "xLabel": "Noth Position [m]", + "yLabel": "East Position [m]", + "zLabel": "Down Position [m]", + "plots": [ + {"x":missionData[0][NED_POSITION_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[1]], "z":missionData[0][NED_POSITION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + #{"x":missionData[1][NED_POSITION_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[1]], "z":missionData[1][NED_POSITION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + { + "title": "Down Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "UAV Flight Path - High Grade Data", + "xLabel": "Noth Position [m]", + "yLabel": "East Position [m]", + "zLabel": "Down Position [m]", + "plots": [ + #{"x":missionData[0][NED_POSITION_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[1]], "z":missionData[0][NED_POSITION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + {"x":missionData[1][NED_POSITION_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[1]], "z":missionData[1][NED_POSITION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + ] + } + makeGraph(graphData, False, False, figSavePath=f"./images/m{mission}_flight_pos_3d.png") + pBar.update(1) + graphData = { "figTitle": f"Mission {mission} Flight Velocity", "figTitleFontSize": 16, - "figSize": (15,15), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "figSize": (8, 12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 "yLabel": "Time [s]", "plotDim": (3,1), "grid": True, @@ -299,9 +366,9 @@ def generateGraphs(missionData, mission): graphData = { "figTitle": f"Mission {mission} Flight Acceleration", "figTitleFontSize": 16, - "figSize": (15,15), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "figSize": (8, 12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 "yLabel": "Time [s]", - "plotDim": (3,1), + "plotDim": (3,3), "grid": True, "subPlots":[ { @@ -333,6 +400,94 @@ def generateGraphs(missionData, mission): makeGraph(graphData, False, False, figSavePath=f"./images/m{mission}_flight_accell.png") pBar.update(1) + graphData = { + "figTitle": f"Mission {mission} Flight Characteristics", + "figTitleFontSize": 16, + "figSize": (8, 12), #Yay America, this is in inches :/ # Note: cm = 1/2.54 + "yLabel": "Time [s]", + "plotDim": (3,1), + "grid": True, + "subPlots":[ + { + "title": "North Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[0]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[0]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "North Velocity", + "yLabel": "Velocity [m/s]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_VELOCITY_HEADER[0]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_VELOCITY_HEADER[0]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "North Acceleration", + "yLabel": "Acceleration [m/s$^2$]", + "plots": [ + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_ACCELERATION_HEADER[0]], "label":"Low Grade Data", "colour":"uq:purple"}, + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_ACCELERATION_HEADER[0]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + { + "title": "East Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[1]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[1]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "East Velocity", + "yLabel": "Velocity [m/s]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_VELOCITY_HEADER[1]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_VELOCITY_HEADER[1]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "East Acceleration", + "yLabel": "Acceleration [m/s$^2$]", + "plots": [ + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_ACCELERATION_HEADER[1]], "label":"Low Grade Data", "colour":"uq:purple"}, + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_ACCELERATION_HEADER[1]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + { + "title": "Down Position", + "yLabel": "Position [m]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_POSITION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_POSITION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "Down Velocity", + "yLabel": "Velocity [m/s]", + "plots": [ + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_VELOCITY_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_VELOCITY_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + ] + }, + { + "title": "Down Acceleration", + "yLabel": "Acceleration [m/s$^2$]", + "plots": [ + {"x":missionData[0][IMU_TIME_HEADER[0]], "y":missionData[0][NED_ACCELERATION_HEADER[2]], "label":"Low Grade Data", "colour":"uq:purple"}, + {"x":missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][NED_ACCELERATION_HEADER[2]], "label":"High Grade Data", "colour":"uq:blue"}, + ] + }, + ] + } + if TRUTH_N_POS_HEADER[1] in missionData[1].columns: + graphData["subPlots"][0]["plots"].insert(0, {"x": missionData[1][IMU_TIME_HEADER[0]], "y":missionData[1][TRUTH_N_POS_HEADER[1]], "label":"True Position", "colour":"uq:red"}) + makeGraph(graphData, False, False, figSavePath=f"./images/m{mission}_flight_accell.png") + pBar.update(1) + + TRUTH_NPOS_DELTA_HEADER = ["Calculated vs True Position Delta [m]", "Calculated vs True Position Error [%]"] def doTruthComparison(missionData, truthData): for i, mData in enumerate(missionData): diff --git a/makeGraph.py b/makeGraph.py index 79b1c8d..d712caa 100644 --- a/makeGraph.py +++ b/makeGraph.py @@ -306,7 +306,7 @@ def makeGraph(graphData, showPlot=True, doProgramBlock=True, figSavePath=None, h ax = ax2 if "type" not in pData or pData["type"] == "plot": - currentLine = ax.plot(xData, yData, label=getSafeValue("label"), color=getSafeColour, **optArgs) + currentLine = ax.plot(xData, yData, getSafeValue("z"), label=getSafeValue("label"), color=getSafeColour, **optArgs) currentLine = currentLine[0] currentLineColour = currentLine.get_color() @@ -442,6 +442,7 @@ def makeGraph(graphData, showPlot=True, doProgramBlock=True, figSavePath=None, h ax = ax1 if "xLabel" in axGraphData: ax.set_xlabel(axGraphData["xLabel"]) # Add an x-label to the axes. if "yLabel" in axGraphData: ax.set_ylabel(axGraphData["yLabel"]) # Add an y-label to the axes. + if "zLabel" in axGraphData: ax2.set_zlabel(axGraphData["zLabel"]) # Add a y2-label to the axes. if "y2Label" in axGraphData: ax2.set_ylabel(axGraphData["y2Label"]) # Add a y2-label to the axes. if "title" in axGraphData: ax.set_title(axGraphData["title"]) # Add an title to the axes. if "axis" in axGraphData: ax.axis(axGraphData["axis"]) # Set the axis type