Skip to content

Commit 8d6a17a

Browse files
committed
Merge pull request #96 from diydrones/Issue94-v3.3-IMU-lines-fail-Resilience-Check
Issue94-v3.3 IMU datalines fail resilience check
2 parents 5f851e7 + 2c1a054 commit 8d6a17a

File tree

7 files changed

+152
-98
lines changed

7 files changed

+152
-98
lines changed

AMP Log Analiser x1.v12.suo

10.5 KB
Binary file not shown.

AMP Log Analiser x1/AMP Log Analiser x1.vbproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@
147147
<Compile Include="Classes\modGPS_Checks.vb" />
148148
<Compile Include="Classes\modGPS_Functions.vb" />
149149
<Compile Include="Classes\modIMU_Checks.vb" />
150+
<Compile Include="Classes\modIMU_Checks_v3_1_v3_2.vb" />
151+
<Compile Include="Classes\modIMU_Checks_v3_3.vb" />
150152
<Compile Include="Classes\modMainReadFile.vb" />
151153
<Compile Include="Classes\modMODE_MainAnalysis.vb" />
152154
<Compile Include="Classes\modMODE_Checks_v3_3.vb" />

AMP Log Analiser x1/Classes/modIMU_Checks.vb

Lines changed: 82 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,87 @@
11
Module modIMU_Checks
2-
Public Sub IMU_Checks()
2+
3+
Public Sub IMU_MainAnalysis()
4+
35
If frmMainForm.chkboxVibrations.Checked = True Then
4-
If DataArray(0) = "IMU" Then
5-
'An IMU value should have only 7 pieces of numeric data!
6-
If ReadFileResilienceCheck(7) = True Then
7-
'Debug.Print("IMU Data Detected...")
8-
Log_IMU_TimeMS = Val(DataArray(1))
9-
Log_IMU_GyrX = Val(DataArray(2))
10-
Log_IMU_GyrY = Val(DataArray(3))
11-
Log_IMU_GyrZ = Val(DataArray(4))
12-
Log_IMU_AccX = Val(DataArray(5))
13-
Log_IMU_AccY = Val(DataArray(6))
14-
Log_IMU_AccZ = Val(DataArray(7))
15-
16-
'Debug.Print("DataArray(7) = " & DataArray(7))
17-
18-
'Are we in flight and either hovering or flying very slow above 3 meters? (Log_GPS_Spd in m/s)
19-
Dim TempAlt As Single = 0
20-
'set the Vibration variables based on the form Vibration Variables.
21-
Dim intVibrationSpeed As Integer
22-
Dim intVibrationAltitude As Integer
23-
If IsNumeric(frmMainForm.txtVibrationSpeed.Text) = True Then
24-
intVibrationSpeed = Val(frmMainForm.txtVibrationSpeed.Text)
25-
Else
26-
intVibrationSpeed = 1
27-
End If
28-
If IsNumeric(frmMainForm.txtVibrationAltitude.Text) = True Then
29-
intVibrationAltitude = Val(frmMainForm.txtVibrationAltitude.Text)
30-
Else
31-
intVibrationAltitude = 3
32-
End If
33-
34-
If CTUN_Logging = True Then TempAlt = Log_CTUN_BarAlt Else TempAlt = Log_GPS_Calculated_Alt
35-
If Log_GPS_Spd < intVibrationSpeed And Log_In_Flight = frmMainForm.chkboxVibrationInFlight.Checked And TempAlt > intVibrationAltitude Then
36-
If IMU_Vibration_Start_DL = 0 Then IMU_Vibration_Start_DL = DataLine
37-
38-
'Capture the Min and Max values from the IMU data if we are currently in slow flight, filter by increasing by half only each time.
39-
If Log_IMU_AccX < Log_IMU_Min_AccX Then Log_IMU_Min_AccX = Log_IMU_Min_AccX - ((Log_IMU_Min_AccX - Log_IMU_AccX) / 2)
40-
If Log_IMU_AccX > Log_IMU_Max_AccX Then Log_IMU_Max_AccX = Log_IMU_Max_AccX + ((Log_IMU_AccX - Log_IMU_Max_AccX) / 2)
41-
If Log_IMU_AccY < Log_IMU_Min_AccY Then Log_IMU_Min_AccY = Log_IMU_Min_AccY - ((Log_IMU_Min_AccY - Log_IMU_AccY) / 2)
42-
If Log_IMU_AccY > Log_IMU_Max_AccY Then Log_IMU_Max_AccY = Log_IMU_Max_AccY + ((Log_IMU_AccY - Log_IMU_Max_AccY) / 2)
43-
If Log_IMU_AccZ < Log_IMU_Min_AccZ Then Log_IMU_Min_AccZ = Log_IMU_Min_AccZ - ((Log_IMU_Min_AccZ - Log_IMU_AccZ) / 2)
44-
If Log_IMU_AccZ > Log_IMU_Max_AccZ Then Log_IMU_Max_AccZ = Log_IMU_Max_AccZ + ((Log_IMU_AccZ - Log_IMU_Max_AccZ) / 2)
45-
If Log_GPS_Spd < log_IMU_Min_Spd Then log_IMU_Min_Spd = log_IMU_Min_Spd - ((log_IMU_Min_Spd - Log_GPS_Spd) / 2)
46-
If Log_GPS_Spd > log_IMU_Max_Spd Then log_IMU_Max_Spd = log_IMU_Max_Spd + ((Log_GPS_Spd - log_IMU_Max_Spd) / 2)
47-
If TempAlt < log_IMU_Min_Alt Then log_IMU_Min_Alt = TempAlt
48-
If TempAlt > log_IMU_Max_Alt Then log_IMU_Max_Alt = TempAlt
49-
50-
'Debug.Print("GPS Spd: " & Log_GPS_Spd & " Max AccX: " & Log_IMU_Max_AccX & " Max AccY: " & Log_IMU_Max_AccY & " Max AccZ: " & Log_IMU_Max_AccZ)
51-
'Debug.Print("CTUN Alt: " & Log_CTUN_BarAlt & " Min AccX: " & Log_IMU_Min_AccX & " Min AccY: " & Log_IMU_Min_AccY & " Min AccZ: " & Log_IMU_Min_AccZ)
52-
53-
'Collect the data for the slow flight averages.
54-
Log_IMU_Sum_AccX = Log_IMU_Sum_AccX + Log_IMU_AccX
55-
Log_IMU_Sum_AccY = Log_IMU_Sum_AccY + Log_IMU_AccY
56-
Log_IMU_Sum_AccZ = Log_IMU_Sum_AccZ + Log_IMU_AccZ
57-
log_IMU_Sum_Spd = log_IMU_Sum_Spd + Log_GPS_Spd
58-
log_IMU_Sum_Alt = log_IMU_Sum_Alt + TempAlt
59-
60-
61-
'### NEW CODE to send data directly to chart ####
62-
frmMainForm.chartVibrations.Series("AccX").Points.AddY(Log_IMU_AccX)
63-
frmMainForm.chartVibrations.Series("AccY").Points.AddY(Log_IMU_AccY)
64-
frmMainForm.chartVibrations.Series("AccZ").Points.AddY(Log_IMU_AccZ)
65-
frmMainForm.chartVibrations.Series("Altitude").Points.AddY(TempAlt) 'Log_CTUN_BarAlt
66-
frmMainForm.chartVibrations.Series("Speed").Points.AddY(Log_GPS_Spd)
67-
68-
' 'Add the Marker Lines
69-
frmMainForm.chartVibrations.Series("XYHighLine").Points.AddY(3)
70-
frmMainForm.chartVibrations.Series("XYLowLine").Points.AddY(-3)
71-
frmMainForm.chartVibrations.Series("ZHighLine").Points.AddY(-5)
72-
frmMainForm.chartVibrations.Series("ZLowLine").Points.AddY(-15)
73-
74-
Log_IMU_DLs_for_Slow_FLight = Log_IMU_DLs_for_Slow_FLight + 1
75-
IMU_Vibration_End_DL = DataLine
76-
77-
78-
IMU_Vibration_Check = True
79-
Else
80-
81-
'### NEW CODE to send data directly to chart ####
82-
frmMainForm.chartVibrations.Series("AccX").Points.AddY(0)
83-
frmMainForm.chartVibrations.Series("AccY").Points.AddY(0)
84-
frmMainForm.chartVibrations.Series("AccZ").Points.AddY(0)
85-
frmMainForm.chartVibrations.Series("Altitude").Points.AddY(TempAlt) 'Log_CTUN_BarAlt
86-
frmMainForm.chartVibrations.Series("Speed").Points.AddY(Log_GPS_Spd)
87-
88-
' 'Add the Marker Lines
89-
frmMainForm.chartVibrations.Series("XYHighLine").Points.AddY(3)
90-
frmMainForm.chartVibrations.Series("XYLowLine").Points.AddY(-3)
91-
frmMainForm.chartVibrations.Series("ZHighLine").Points.AddY(-5)
92-
frmMainForm.chartVibrations.Series("ZLowLine").Points.AddY(-15)
93-
94-
Log_IMU_DLs_for_Slow_FLight = Log_IMU_DLs_for_Slow_FLight + 1
95-
IMU_Vibration_End_DL = DataLine
96-
97-
End If
98-
End If
6+
'Are we in flight and either hovering or flying very slow above 3 meters? (Log_GPS_Spd in m/s)
7+
Dim TempAlt As Single = 0
8+
'set the Vibration variables based on the form Vibration Variables.
9+
Dim intVibrationSpeed As Integer
10+
Dim intVibrationAltitude As Integer
11+
If IsNumeric(frmMainForm.txtVibrationSpeed.Text) = True Then
12+
intVibrationSpeed = Val(frmMainForm.txtVibrationSpeed.Text)
13+
Else
14+
intVibrationSpeed = 1
15+
End If
16+
If IsNumeric(frmMainForm.txtVibrationAltitude.Text) = True Then
17+
intVibrationAltitude = Val(frmMainForm.txtVibrationAltitude.Text)
18+
Else
19+
intVibrationAltitude = 3
20+
End If
21+
22+
If CTUN_Logging = True Then TempAlt = Log_CTUN_BarAlt Else TempAlt = Log_GPS_Calculated_Alt
23+
If Log_GPS_Spd < intVibrationSpeed And Log_In_Flight = frmMainForm.chkboxVibrationInFlight.Checked And TempAlt > intVibrationAltitude Then
24+
If IMU_Vibration_Start_DL = 0 Then IMU_Vibration_Start_DL = DataLine
25+
26+
'Capture the Min and Max values from the IMU data if we are currently in slow flight, filter by increasing by half only each time.
27+
If Log_IMU_AccX < Log_IMU_Min_AccX Then Log_IMU_Min_AccX = Log_IMU_Min_AccX - ((Log_IMU_Min_AccX - Log_IMU_AccX) / 2)
28+
If Log_IMU_AccX > Log_IMU_Max_AccX Then Log_IMU_Max_AccX = Log_IMU_Max_AccX + ((Log_IMU_AccX - Log_IMU_Max_AccX) / 2)
29+
If Log_IMU_AccY < Log_IMU_Min_AccY Then Log_IMU_Min_AccY = Log_IMU_Min_AccY - ((Log_IMU_Min_AccY - Log_IMU_AccY) / 2)
30+
If Log_IMU_AccY > Log_IMU_Max_AccY Then Log_IMU_Max_AccY = Log_IMU_Max_AccY + ((Log_IMU_AccY - Log_IMU_Max_AccY) / 2)
31+
If Log_IMU_AccZ < Log_IMU_Min_AccZ Then Log_IMU_Min_AccZ = Log_IMU_Min_AccZ - ((Log_IMU_Min_AccZ - Log_IMU_AccZ) / 2)
32+
If Log_IMU_AccZ > Log_IMU_Max_AccZ Then Log_IMU_Max_AccZ = Log_IMU_Max_AccZ + ((Log_IMU_AccZ - Log_IMU_Max_AccZ) / 2)
33+
If Log_GPS_Spd < log_IMU_Min_Spd Then log_IMU_Min_Spd = log_IMU_Min_Spd - ((log_IMU_Min_Spd - Log_GPS_Spd) / 2)
34+
If Log_GPS_Spd > log_IMU_Max_Spd Then log_IMU_Max_Spd = log_IMU_Max_Spd + ((Log_GPS_Spd - log_IMU_Max_Spd) / 2)
35+
If TempAlt < log_IMU_Min_Alt Then log_IMU_Min_Alt = TempAlt
36+
If TempAlt > log_IMU_Max_Alt Then log_IMU_Max_Alt = TempAlt
37+
38+
'Debug.Print("GPS Spd: " & Log_GPS_Spd & " Max AccX: " & Log_IMU_Max_AccX & " Max AccY: " & Log_IMU_Max_AccY & " Max AccZ: " & Log_IMU_Max_AccZ)
39+
'Debug.Print("CTUN Alt: " & Log_CTUN_BarAlt & " Min AccX: " & Log_IMU_Min_AccX & " Min AccY: " & Log_IMU_Min_AccY & " Min AccZ: " & Log_IMU_Min_AccZ)
40+
41+
'Collect the data for the slow flight averages.
42+
Log_IMU_Sum_AccX = Log_IMU_Sum_AccX + Log_IMU_AccX
43+
Log_IMU_Sum_AccY = Log_IMU_Sum_AccY + Log_IMU_AccY
44+
Log_IMU_Sum_AccZ = Log_IMU_Sum_AccZ + Log_IMU_AccZ
45+
log_IMU_Sum_Spd = log_IMU_Sum_Spd + Log_GPS_Spd
46+
log_IMU_Sum_Alt = log_IMU_Sum_Alt + TempAlt
47+
48+
49+
'### NEW CODE to send data directly to chart ####
50+
frmMainForm.chartVibrations.Series("AccX").Points.AddY(Log_IMU_AccX)
51+
frmMainForm.chartVibrations.Series("AccY").Points.AddY(Log_IMU_AccY)
52+
frmMainForm.chartVibrations.Series("AccZ").Points.AddY(Log_IMU_AccZ)
53+
frmMainForm.chartVibrations.Series("Altitude").Points.AddY(TempAlt) 'Log_CTUN_BarAlt
54+
frmMainForm.chartVibrations.Series("Speed").Points.AddY(Log_GPS_Spd)
55+
56+
' 'Add the Marker Lines
57+
frmMainForm.chartVibrations.Series("XYHighLine").Points.AddY(3)
58+
frmMainForm.chartVibrations.Series("XYLowLine").Points.AddY(-3)
59+
frmMainForm.chartVibrations.Series("ZHighLine").Points.AddY(-5)
60+
frmMainForm.chartVibrations.Series("ZLowLine").Points.AddY(-15)
61+
62+
Log_IMU_DLs_for_Slow_FLight = Log_IMU_DLs_for_Slow_FLight + 1
63+
IMU_Vibration_End_DL = DataLine
64+
65+
66+
IMU_Vibration_Check = True
67+
Else
68+
69+
'### NEW CODE to send data directly to chart ####
70+
frmMainForm.chartVibrations.Series("AccX").Points.AddY(0)
71+
frmMainForm.chartVibrations.Series("AccY").Points.AddY(0)
72+
frmMainForm.chartVibrations.Series("AccZ").Points.AddY(0)
73+
frmMainForm.chartVibrations.Series("Altitude").Points.AddY(TempAlt) 'Log_CTUN_BarAlt
74+
frmMainForm.chartVibrations.Series("Speed").Points.AddY(Log_GPS_Spd)
75+
76+
' 'Add the Marker Lines
77+
frmMainForm.chartVibrations.Series("XYHighLine").Points.AddY(3)
78+
frmMainForm.chartVibrations.Series("XYLowLine").Points.AddY(-3)
79+
frmMainForm.chartVibrations.Series("ZHighLine").Points.AddY(-5)
80+
frmMainForm.chartVibrations.Series("ZLowLine").Points.AddY(-15)
81+
82+
Log_IMU_DLs_for_Slow_FLight = Log_IMU_DLs_for_Slow_FLight + 1
83+
IMU_Vibration_End_DL = DataLine
84+
9985
End If
10086
End If
10187

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Module modIMU_Checks_v3_1_v3_2
2+
3+
Public Sub IMU_Checks_v3_1_v3_2()
4+
5+
'This part only check the correct data structure of the data line
6+
'and prepares the variables ready for the MainAnalysis which
7+
'is called directly after by this code.
8+
9+
' THIS CODE MUST ONLY BE CALLED AFTER THE DATA LINE HAS BEEN VALIDATED AS THE CORRECT TYPE !!!
10+
11+
'An IMU value should have only 7 pieces of numeric data!
12+
13+
'FMT, 131, 31, IMU, Iffffff, TimeMS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ
14+
15+
If ReadFileResilienceCheck(7) = True Then
16+
'Debug.Print("IMU Data Detected...")
17+
Log_IMU_TimeMS = Val(DataArray(1))
18+
Log_IMU_GyrX = Val(DataArray(2))
19+
Log_IMU_GyrY = Val(DataArray(3))
20+
Log_IMU_GyrZ = Val(DataArray(4))
21+
Log_IMU_AccX = Val(DataArray(5))
22+
Log_IMU_AccY = Val(DataArray(6))
23+
Log_IMU_AccZ = Val(DataArray(7))
24+
Call IMU_MainAnalysis()
25+
End If
26+
27+
End Sub
28+
29+
End Module
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Module modIMU_Checks_v3_3
2+
3+
Public Sub IMU_Checks_v3_3()
4+
5+
'This part only check the correct data structure of the data line
6+
'and prepares the variables ready for the MainAnalysis which
7+
'is called directly after by this code.
8+
9+
' THIS CODE MUST ONLY BE CALLED AFTER THE DATA LINE HAS BEEN VALIDATED AS THE CORRECT TYPE !!!
10+
11+
' v3.2 FMT, 131, 31, IMU, Iffffff, TimeMS, GyrX, GyrY, GyrZ, AccX, AccY, AccZ
12+
' v3.3 FMT, 131, 43, IMU, IffffffIIf, TimeMS, GyrX, GyrY, GyrZ, AccX, AccY, AccZ, ErrG, ErrA, Temp
13+
14+
'An IMU value should have only 10 pieces of numeric data!
15+
16+
If ReadFileResilienceCheck(10) = True Then
17+
'Debug.Print("IMU Data Detected...")
18+
Log_IMU_TimeMS = Val(DataArray(1))
19+
Log_IMU_GyrX = Val(DataArray(2))
20+
Log_IMU_GyrY = Val(DataArray(3))
21+
Log_IMU_GyrZ = Val(DataArray(4))
22+
Log_IMU_AccX = Val(DataArray(5))
23+
Log_IMU_AccY = Val(DataArray(6))
24+
Log_IMU_AccZ = Val(DataArray(7))
25+
Call IMU_MainAnalysis()
26+
End If
27+
28+
End Sub
29+
30+
End Module

AMP Log Analiser x1/Classes/modMainReadFile.vb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,14 @@ Module modMainReadFile
160160
Call GPS_Checks()
161161

162162
'IMU Checks - Vibration
163-
Call IMU_Checks()
163+
If DataArray(0) = "IMU" Then
164+
If ReadFileVersion = 3.1 Or ReadFileVersion = 3.2 Then
165+
Call IMU_Checks_v3_1_v3_2()
166+
Else
167+
Call IMU_Checks_v3_3()
168+
End If
169+
End If
170+
164171

165172
'NTUN Checks, Navigation Data - MUST CALL BEFORE ATT due to Charting Data
166173
If DataArray(0) = "NTUN" Then

AMP Log Analiser x1/obj/Debug/AMP Log Analiser x1.vbproj.FileListAbsolute.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\bin\De
7070
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\bin\Debug\Microsoft.WindowsAPICodePack.Shell.pdb
7171
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\bin\Debug\Microsoft.WindowsAPICodePack.Shell.xml
7272
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\bin\Debug\Microsoft.WindowsAPICodePack.ShellExtensions.pdb
73+
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\AMP Log Analiser x1.vbprojResolveAssemblyReference.cache
7374
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APMLogFileAnaliser.frmMainForm.resources
7475
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APMLogFileAnaliser.frmUpdate.resources
7576
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APMLogFileAnaliser.frmParameters.resources
@@ -82,4 +83,3 @@ C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\De
8283
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APM Log File Analiser.exe
8384
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APM Log File Analiser.xml
8485
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\APM Log File Analiser.pdb
85-
C:\Users\Kevin\Documents\GitHub\APM_Log_File_Analyzer\AMP Log Analiser x1\obj\Debug\AMP Log Analiser x1.vbprojResolveAssemblyReference.cache

0 commit comments

Comments
 (0)