-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata_process.m
750 lines (699 loc) · 40.2 KB
/
data_process.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
%Data Processing and Plotting
clc
clear
tic
directory1 = 'S:\Thesis_fig\presentation\TII_Oct21_cyberattacks\ICMP';
file1 = dir(fullfile(directory1, '*cpuload_0.csv'));
file2 = dir(fullfile(directory1, '*ekf2_timestamps_0.csv'));
file3 = dir(fullfile(directory1, '*estimator_innovation_test_ratios_0.csv'));
file4 = dir(fullfile(directory1, '*estimator_innovation_variances_0.csv'));
file5 = dir(fullfile(directory1, '*estimator_innovations_0.csv'));
file6 = dir(fullfile(directory1, '*estimator_sensor_bias_0.csv'));
file7 = dir(fullfile(directory1, '*estimator_status_0.csv'));
file8 = dir(fullfile(directory1, '*rate_ctrl_status_0.csv'));
file9 = dir(fullfile(directory1, '*telemetry_status_1.csv'));
file10 = dir(fullfile(directory1, '*vehicle_imu_status_0.csv'));
file11 = dir(fullfile(directory1, '*vehicle_local_position_0.csv'));
file12 = dir(fullfile(directory1, '*vehicle_local_position_setpoint_0.csv'));
file13 = dir(fullfile(directory1, '*vehicle_attitude_setpoint_0.csv'));
file14 = dir(fullfile(directory1, '*vehicle_rates_setpoint_0.csv'));
files1 = struct2cell(file1);
files2 = struct2cell(file2);
files3 = struct2cell(file3);
files4 = struct2cell(file4);
files5 = struct2cell(file5);
files6 = struct2cell(file6);
files7 = struct2cell(file7);
files8 = struct2cell(file8);
files9 = struct2cell(file9);
files10 = struct2cell(file10);
files11 = struct2cell(file11);
files12 = struct2cell(file12);
files13 = struct2cell(file13);
files14 = struct2cell(file14);
cpuload = readtable(strcat(files1{2, 1},'\',files1{1, 1}), 'PreserveVariableNames', true);
ekf2_timestamps = readtable(strcat(files2{2, 1},'\',files2{1, 1}), 'PreserveVariableNames', true);
estimator_innovation_test_ratios = readtable(strcat(files3{2, 1},'\',files3{1, 1}), 'PreserveVariableNames', true);
estimator_innovation_variances = readtable(strcat(files4{2, 1},'\',files4{1, 1}), 'PreserveVariableNames', true);
estimator_innovations = readtable(strcat(files5{2, 1},'\',files5{1, 1}), 'PreserveVariableNames', true);
estimator_sensor_bias = readtable(strcat(files6{2, 1},'\',files6{1, 1}), 'PreserveVariableNames', true);
estimator_status = readtable(strcat(files7{2, 1},'\',files7{1, 1}), 'PreserveVariableNames', true);
rate_ctrl_status = readtable(strcat(files8{2, 1},'\',files8{1, 1}), 'PreserveVariableNames', true);
telemetry_status = readtable(strcat(files9{2, 1},'\',files9{1, 1}), 'PreserveVariableNames', true);
vehicle_imu_status = readtable(strcat(files10{2, 1},'\',files10{1, 1}), 'PreserveVariableNames', true);
vehicle_local_position = readtable(strcat(files11{2, 1},'\',files11{1, 1}), 'PreserveVariableNames', true);
vehicle_local_position_setpoint = readtable(strcat(files12{2, 1},'\',files12{1, 1}), 'PreserveVariableNames', true);
vehicle_attitude_setpoint = readtable(strcat(files13{2, 1},'\',files13{1, 1}), 'PreserveVariableNames', true);
vehicle_rates_setpoint = readtable(strcat(files14{2, 1},'\',files14{1, 1}), 'PreserveVariableNames', true);
basetime = min([cpuload.timestamp(1), ekf2_timestamps.timestamp(1), estimator_innovation_test_ratios.timestamp(1),...
estimator_innovation_variances.timestamp(1), estimator_innovations.timestamp(1), estimator_sensor_bias.timestamp(1),...
estimator_status.timestamp(1), rate_ctrl_status.timestamp(1), telemetry_status.timestamp(1), vehicle_imu_status.timestamp(1),...
vehicle_local_position.timestamp(1), vehicle_local_position_setpoint.timestamp(1), vehicle_attitude_setpoint.timestamp(1),...
vehicle_rates_setpoint.timestamp(1)]);
cpuload.timestamp = 10^-6.*(cpuload.timestamp - basetime);
ekf2_timestamps.timestamp = 10^-6.*(ekf2_timestamps.timestamp - basetime);
estimator_innovation_test_ratios.timestamp = 10^-6.*(estimator_innovation_test_ratios.timestamp - basetime);
estimator_innovation_variances.timestamp = 10^-6.*(estimator_innovation_variances.timestamp - basetime);
estimator_innovations.timestamp = 10^-6.*(estimator_innovations.timestamp - basetime);
estimator_sensor_bias.timestamp = 10^-6.*(estimator_sensor_bias.timestamp - basetime);
estimator_status.timestamp = 10^-6.*(estimator_status.timestamp - basetime);
rate_ctrl_status.timestamp = 10^-6.*(rate_ctrl_status.timestamp - basetime);
telemetry_status.timestamp = 10^-6.*(telemetry_status.timestamp - basetime);
vehicle_imu_status.timestamp = 10^-6.*(vehicle_imu_status.timestamp - basetime);
vehicle_local_position.timestamp = 10^-6.*(vehicle_local_position.timestamp - basetime);
vehicle_local_position_setpoint.timestamp = 10^-6.*(vehicle_local_position_setpoint.timestamp - basetime);
vehicle_attitude_setpoint.timestamp = 10^-6.*(vehicle_attitude_setpoint.timestamp - basetime);
vehicle_rates_setpoint.timestamp = 10^-6.*(vehicle_rates_setpoint.timestamp - basetime);
%%
data = [];
index = 8;
indexa1 = height(cpuload)-10;
for i = indexa1:-1:index
check = cpuload.timestamp(i);
t1 = cpuload(i-7:i, :);
for j = 1:height(ekf2_timestamps)
if ekf2_timestamps.timestamp(j)> check
t2 = ekf2_timestamps(j-8:j-1,2:end);
break
end
end
for j = 1:height(estimator_innovation_test_ratios)
if estimator_innovation_test_ratios.timestamp(j)> check
t3 = estimator_innovation_test_ratios(j-8:j-1,2:end);
break
end
end
for j = 1:height(estimator_innovation_variances)
if estimator_innovation_variances.timestamp(j)> check
t4 = estimator_innovation_variances(j-8:j-1,2:end);
break
end
end
for j = 1:height(estimator_innovations)
if estimator_innovations.timestamp(j)> check
t5 = estimator_innovations(j-8:j-1,2:end);
break
end
end
for j = 1:height(estimator_sensor_bias)
if estimator_sensor_bias.timestamp(j)> check
t6 = estimator_sensor_bias(j-8:j-1,2:end);
break
end
end
for j = 1:height(estimator_status)
if estimator_status.timestamp(j)> check
t7 = estimator_status(j-8:j-1,2:end);
break
end
end
for j = 1:height(rate_ctrl_status)
if rate_ctrl_status.timestamp(j)> check
t8 = rate_ctrl_status(j-8:j-1,2:end);
break
end
end
for j = 1:height(telemetry_status)
if telemetry_status.timestamp(j)> check
t9 = telemetry_status(j-8:j-1,2:end);
break
end
end
for j = 1:height(vehicle_imu_status)
if vehicle_imu_status.timestamp(j)> check
t10 = vehicle_imu_status(j-8:j-1,2:end);
break
end
end
for j = 1:height(vehicle_local_position)
if vehicle_local_position.timestamp(j)> check
t11 = vehicle_local_position(j-8:j-1,2:end);
break
end
end
for j = 1:height(vehicle_local_position_setpoint)
if vehicle_local_position_setpoint.timestamp(j)> check
t12 = vehicle_local_position_setpoint(j-8:j-1,2:end);
break
end
end
for j = 1:height(vehicle_attitude_setpoint)
if vehicle_attitude_setpoint.timestamp(j)> check
t13 = vehicle_attitude_setpoint(j-8:j-1,2:end);
break
end
end
for j = 1:height(vehicle_rates_setpoint)
if vehicle_rates_setpoint.timestamp(j)> check
t14 = vehicle_rates_setpoint(j-8:j-1,2:end);
break
end
end
t1.Properties.VariableNames = {'timestamp' 'load_cpuload_0' 'ram_usage_cpuload_0'};
t2.Properties.VariableNames = {'airspeed_timestamp_rel_ekf2_timestamps_0' 'distance_sensor_timestamp_rel_ekf2_timestamps_0' ...
'optical_flow_timestamp_rel_ekf2_timestamps_0' 'vehicle_air_data_timestamp_rel_ekf2_timestamps_0' ...
'vehicle_magnetometer_timestamp_rel_ekf2_timestamps_0' 'visual_odometry_timestamp_rel_ekf2_timestamps_0'};
t3.Properties.VariableNames = {'gps_hvel[0]_estimator_innovation_test_ratios_0'...
'gps_hvel[1]_estimator_innovation_test_ratios_0'...
'gps_vvel_estimator_innovation_test_ratios_0'...
'gps_hpos[0]_estimator_innovation_test_ratios_0'...
'gps_hpos[1]_estimator_innovation_test_ratios_0'...
'gps_vpos_estimator_innovation_test_ratios_0'...
'ev_hvel[0]_estimator_innovation_test_ratios_0'...
'ev_hvel[1]_estimator_innovation_test_ratios_0'...
'ev_vvel_estimator_innovation_test_ratios_0'...
'ev_hpos[0]_estimator_innovation_test_ratios_0'...
'ev_hpos[1]_estimator_innovation_test_ratios_0'...
'ev_vpos_estimator_innovation_test_ratios_0'...
'fake_hvel[0]_estimator_innovation_test_ratios_0'...
'fake_hvel[1]_estimator_innovation_test_ratios_0'...
'fake_vvel_estimator_innovation_test_ratios_0'...
'fake_hpos[0]_estimator_innovation_test_ratios_0'...
'fake_hpos[1]_estimator_innovation_test_ratios_0'...
'fake_vpos_estimator_innovation_test_ratios_0'...
'rng_vpos_estimator_innovation_test_ratios_0'...
'baro_vpos_estimator_innovation_test_ratios_0'...
'aux_hvel[0]_estimator_innovation_test_ratios_0'...
'aux_hvel[1]_estimator_innovation_test_ratios_0'...
'aux_vvel_estimator_innovation_test_ratios_0'...
'flow[0]_estimator_innovation_test_ratios_0'...
'flow[1]_estimator_innovation_test_ratios_0'...
'heading_estimator_innovation_test_ratios_0'...
'mag_field[0]_estimator_innovation_test_ratios_0'...
'mag_field[1]_estimator_innovation_test_ratios_0'...
'mag_field[2]_estimator_innovation_test_ratios_0'...
'drag[0]_estimator_innovation_test_ratios_0'...
'drag[1]_estimator_innovation_test_ratios_0'...
'airspeed_estimator_innovation_test_ratios_0'...
'beta_estimator_innovation_test_ratios_0'...
'hagl_estimator_innovation_test_ratios_0'};
t4.Properties.VariableNames = {'gps_hvel[0]_estimator_innovation_variances_0'...
'gps_hvel[1]_estimator_innovation_variances_0'...
'gps_vvel_estimator_innovation_variances_0'...
'gps_hpos[0]_estimator_innovation_variances_0'...
'gps_hpos[1]_estimator_innovation_variances_0'...
'gps_vpos_estimator_innovation_variances_0'...
'ev_hvel[0]_estimator_innovation_variances_0'...
'ev_hvel[1]_estimator_innovation_variances_0'...
'ev_vvel_estimator_innovation_variances_0'...
'ev_hpos[0]_estimator_innovation_variances_0'...
'ev_hpos[1]_estimator_innovation_variances_0'...
'ev_vpos_estimator_innovation_variances_0'...
'fake_hvel[0]_estimator_innovation_variances_0'...
'fake_hvel[1]_estimator_innovation_variances_0'...
'fake_vvel_estimator_innovation_variances_0'...
'fake_hpos[0]_estimator_innovation_variances_0'...
'fake_hpos[1]_estimator_innovation_variances_0'...
'fake_vpos_estimator_innovation_variances_0'...
'rng_vpos_estimator_innovation_variances_0'...
'baro_vpos_estimator_innovation_variances_0'...
'aux_hvel[0]_estimator_innovation_variances_0'...
'aux_hvel[1]_estimator_innovation_variances_0'...
'aux_vvel_estimator_innovation_variances_0'...
'flow[0]_estimator_innovation_variances_0'...
'flow[1]_estimator_innovation_variances_0'...
'heading_estimator_innovation_variances_0'...
'mag_field[0]_estimator_innovation_variances_0'...
'mag_field[1]_estimator_innovation_variances_0'...
'mag_field[2]_estimator_innovation_variances_0'...
'drag[0]_estimator_innovation_variances_0'...
'drag[1]_estimator_innovation_variances_0'...
'airspeed_estimator_innovation_variances_0'...
'beta_estimator_innovation_variances_0'...
'hagl_estimator_innovation_variances_0'};
t5.Properties.VariableNames = {'gps_hvel[0]_estimator_innovations_0'...
'gps_hvel[1]_estimator_innovations_0'...
'gps_vvel_estimator_innovations_0'...
'gps_hpos[0]_estimator_innovations_0'...
'gps_hpos[1]_estimator_innovations_0'...
'gps_vpos_estimator_innovations_0'...
'ev_hvel[0]_estimator_innovations_0'...
'ev_hvel[1]_estimator_innovations_0'...
'ev_vvel_estimator_innovations_0'...
'ev_hpos[0]_estimator_innovations_0'...
'ev_hpos[1]_estimator_innovations_0'...
'ev_vpos_estimator_innovations_0'...
'fake_hvel[0]_estimator_innovations_0'...
'fake_hvel[1]_estimator_innovations_0'...
'fake_vvel_estimator_innovations_0'...
'fake_hpos[0]_estimator_innovations_0'...
'fake_hpos[1]_estimator_innovations_0'...
'fake_vpos_estimator_innovations_0'...
'rng_vpos_estimator_innovations_0'...
'baro_vpos_estimator_innovations_0'...
'aux_hvel[0]_estimator_innovations_0'...
'aux_hvel[1]_estimator_innovations_0'...
'aux_vvel_estimator_innovations_0'...
'flow[0]_estimator_innovations_0'...
'flow[1]_estimator_innovations_0'...
'heading_estimator_innovations_0'...
'mag_field[0]_estimator_innovations_0'...
'mag_field[1]_estimator_innovations_0'...
'mag_field[2]_estimator_innovations_0'...
'drag[0]_estimator_innovations_0'...
'drag[1]_estimator_innovations_0'...
'airspeed_estimator_innovations_0'...
'beta_estimator_innovations_0'...
'hagl_estimator_innovations_0'};
t6.Properties.VariableNames = {'gyro_device_id_estimator_sensor_bias_0'...
'gyro_bias[0]_estimator_sensor_bias_0'...
'gyro_bias[1]_estimator_sensor_bias_0'...
'gyro_bias[2]_estimator_sensor_bias_0'...
'accel_device_id_estimator_sensor_bias_0'...
'accel_bias[0]_estimator_sensor_bias_0'...
'accel_bias[1]_estimator_sensor_bias_0'...
'accel_bias[2]_estimator_sensor_bias_0'...
'mag_device_id_estimator_sensor_bias_0'...
'mag_bias[0]_estimator_sensor_bias_0'...
'mag_bias[1]_estimator_sensor_bias_0'...
'mag_bias[2]_estimator_sensor_bias_0'};
t7.Properties.VariableNames = {'states[0]_estimator_status_0'...
'states[1]_estimator_status_0'...
'states[2]_estimator_status_0'...
'states[3]_estimator_status_0'...
'states[4]_estimator_status_0'...
'states[5]_estimator_status_0'...
'states[6]_estimator_status_0'...
'states[7]_estimator_status_0'...
'states[8]_estimator_status_0'...
'states[9]_estimator_status_0'...
'states[10]_estimator_status_0'...
'states[11]_estimator_status_0'...
'states[12]_estimator_status_0'...
'states[13]_estimator_status_0'...
'states[14]_estimator_status_0'...
'states[15]_estimator_status_0'...
'states[16]_estimator_status_0'...
'states[17]_estimator_status_0'...
'states[18]_estimator_status_0'...
'states[19]_estimator_status_0'...
'states[20]_estimator_status_0'...
'states[21]_estimator_status_0'...
'states[22]_estimator_status_0'...
'states[23]_estimator_status_0'...
'vibe[0]_estimator_status_0'...
'vibe[1]_estimator_status_0'...
'vibe[2]_estimator_status_0'...
'covariances[0]_estimator_status_0'...
'covariances[1]_estimator_status_0'...
'covariances[2]_estimator_status_0'...
'covariances[3]_estimator_status_0'...
'covariances[4]_estimator_status_0'...
'covariances[5]_estimator_status_0'...
'covariances[6]_estimator_status_0'...
'covariances[7]_estimator_status_0'...
'covariances[8]_estimator_status_0'...
'covariances[9]_estimator_status_0'...
'covariances[10]_estimator_status_0'...
'covariances[11]_estimator_status_0'...
'covariances[12]_estimator_status_0'...
'covariances[13]_estimator_status_0'...
'covariances[14]_estimator_status_0'...
'covariances[15]_estimator_status_0'...
'covariances[16]_estimator_status_0'...
'covariances[17]_estimator_status_0'...
'covariances[18]_estimator_status_0'...
'covariances[19]_estimator_status_0'...
'covariances[20]_estimator_status_0'...
'covariances[21]_estimator_status_0'...
'covariances[22]_estimator_status_0'...
'covariances[23]_estimator_status_0'...
'output_tracking_error[0]_estimator_status_0'...
'output_tracking_error[1]_estimator_status_0'...
'output_tracking_error[2]_estimator_status_0'...
'control_mode_flags_estimator_status_0'...
'pos_horiz_accuracy_estimator_status_0'...
'pos_vert_accuracy_estimator_status_0'...
'mag_test_ratio_estimator_status_0'...
'vel_test_ratio_estimator_status_0'...
'pos_test_ratio_estimator_status_0'...
'hgt_test_ratio_estimator_status_0'...
'tas_test_ratio_estimator_status_0'...
'hagl_test_ratio_estimator_status_0'...
'beta_test_ratio_estimator_status_0'...
'time_slip_estimator_status_0'...
'gps_check_fail_flags_estimator_status_0'...
'filter_fault_flags_estimator_status_0'...
'innovation_check_flags_estimator_status_0'...
'solution_status_flags_estimator_status_0'...
'n_states_estimator_status_0'...
'pre_flt_fail_innov_heading_estimator_status_0'...
'pre_flt_fail_innov_vel_horiz_estimator_status_0'...
'pre_flt_fail_innov_vel_vert_estimator_status_0'...
'pre_flt_fail_innov_height_estimator_status_0'...
'pre_flt_fail_mag_field_disturbed_estimator_status_0'...
'health_flags_estimator_status_0'...
'timeout_flags_estimator_status_0'};
t8.Properties.VariableNames = {'rollspeed_integ_rate_ctrl_status_0'...
'pitchspeed_integ_rate_ctrl_status_0'...
'yawspeed_integ_rate_ctrl_status_0'...
'additional_integ1_rate_ctrl_status_0'};
t9.Properties.VariableNames = {'data_rate_telemetry_status_0'...
'rate_multiplier_telemetry_status_0'...
'rate_rx_telemetry_status_0'...
'rate_tx_telemetry_status_0'...
'rate_txerr_telemetry_status_0'...
'type_telemetry_status_0'...
'mode_telemetry_status_0'...
'flow_control_telemetry_status_0'...
'forwarding_telemetry_status_0'...
'mavlink_v2_telemetry_status_0'...
'ftp_telemetry_status_0'...
'streams_telemetry_status_0'...
'_padding0[0]_telemetry_status_0'...
'_padding0[1]_telemetry_status_0'...
'_padding0[2]_telemetry_status_0'...
'_padding0[3]_telemetry_status_0'...
'_padding0[4]_telemetry_status_0'...
'heartbeats[0].timestamp_telemetry_status_0'...
'heartbeats[0].system_id_telemetry_status_0'...
'heartbeats[0].component_id_telemetry_status_0'...
'heartbeats[0].type_telemetry_status_0'...
'heartbeats[0].state_telemetry_status_0'...
'heartbeats[0]._padding0[0]_telemetry_status_0'...
'heartbeats[0]._padding0[1]_telemetry_status_0'...
'heartbeats[0]._padding0[2]_telemetry_status_0'...
'heartbeats[0]._padding0[3]_telemetry_status_0'...
'heartbeats[1].timestamp_telemetry_status_0'...
'heartbeats[1].system_id_telemetry_status_0'...
'heartbeats[1].component_id_telemetry_status_0'...
'heartbeats[1].type_telemetry_status_0'...
'heartbeats[1].state_telemetry_status_0'...
'heartbeats[1]._padding0[0]_telemetry_status_0'...
'heartbeats[1]._padding0[1]_telemetry_status_0'...
'heartbeats[1]._padding0[2]_telemetry_status_0'...
'heartbeats[1]._padding0[3]_telemetry_status_0'...
'heartbeats[2].timestamp_telemetry_status_0'...
'heartbeats[2].system_id_telemetry_status_0'...
'heartbeats[2].component_id_telemetry_status_0'...
'heartbeats[2].type_telemetry_status_0'...
'heartbeats[2].state_telemetry_status_0'...
'heartbeats[2]._padding0[0]_telemetry_status_0'...
'heartbeats[2]._padding0[1]_telemetry_status_0'...
'heartbeats[2]._padding0[2]_telemetry_status_0'...
'heartbeats[2]._padding0[3]_telemetry_status_0'...
'heartbeats[3].timestamp_telemetry_status_0'...
'heartbeats[3].system_id_telemetry_status_0'...
'heartbeats[3].component_id_telemetry_status_0'...
'heartbeats[3].type_telemetry_status_0'...
'heartbeats[3].state_telemetry_status_0'...
'heartbeats[3]._padding0[0]_telemetry_status_0'...
'heartbeats[3]._padding0[1]_telemetry_status_0'...
'heartbeats[3]._padding0[2]_telemetry_status_0'...
'heartbeats[3]._padding0[3]_telemetry_status_0'};
t10.Properties.VariableNames = {'accel_device_id_vehicle_imu_status_0'...
'gyro_device_id_vehicle_imu_status_0'...
'accel_clipping[0]_vehicle_imu_status_0'...
'accel_clipping[1]_vehicle_imu_status_0'...
'accel_clipping[2]_vehicle_imu_status_0'...
'accel_error_count_vehicle_imu_status_0'...
'gyro_error_count_vehicle_imu_status_0'...
'accel_vibration_metric_vehicle_imu_status_0'...
'gyro_vibration_metric_vehicle_imu_status_0'...
'gyro_coning_vibration_vehicle_imu_status_0'...
'accel_rate_hz_vehicle_imu_status_0'...
'gyro_rate_hz_vehicle_imu_status_0'};
t11.Properties.VariableNames = {'ref_timestamp_vehicle_local_position_0'...
'ref_lat_vehicle_local_position_0'...
'ref_lon_vehicle_local_position_0'...
'x_vehicle_local_position_0'...
'y_vehicle_local_position_0'...
'z_vehicle_local_position_0'...
'delta_xy[0]_vehicle_local_position_0'...
'delta_xy[1]_vehicle_local_position_0'...
'delta_z_vehicle_local_position_0'...
'vx_vehicle_local_position_0'...
'vy_vehicle_local_position_0'...
'vz_vehicle_local_position_0'...
'z_deriv_vehicle_local_position_0'...
'delta_vxy[0]_vehicle_local_position_0'...
'delta_vxy[1]_vehicle_local_position_0'...
'delta_vz_vehicle_local_position_0'...
'ax_vehicle_local_position_0'...
'ay_vehicle_local_position_0'...
'az_vehicle_local_position_0'...
'heading_vehicle_local_position_0'...
'delta_heading_vehicle_local_position_0'...
'ref_alt_vehicle_local_position_0'...
'dist_bottom_vehicle_local_position_0'...
'eph_vehicle_local_position_0'...
'epv_vehicle_local_position_0'...
'evh_vehicle_local_position_0'...
'evv_vehicle_local_position_0'...
'vxy_max_vehicle_local_position_0'...
'vz_max_vehicle_local_position_0'...
'hagl_min_vehicle_local_position_0'...
'hagl_max_vehicle_local_position_0'...
'xy_valid_vehicle_local_position_0'...
'z_valid_vehicle_local_position_0'...
'v_xy_valid_vehicle_local_position_0'...
'v_z_valid_vehicle_local_position_0'...
'xy_reset_counter_vehicle_local_position_0'...
'z_reset_counter_vehicle_local_position_0'...
'vxy_reset_counter_vehicle_local_position_0'...
'vz_reset_counter_vehicle_local_position_0'...
'heading_reset_counter_vehicle_local_position_0'...
'xy_global_vehicle_local_position_0'...
'z_global_vehicle_local_position_0'...
'dist_bottom_valid_vehicle_local_position_0'};
t12.Properties.VariableNames = {'x_vehicle_local_position_setpoint_0'...
'y_vehicle_local_position_setpoint_0'...
'z_vehicle_local_position_setpoint_0'...
'yaw_vehicle_local_position_setpoint_0'...
'yawspeed_vehicle_local_position_setpoint_0'...
'vx_vehicle_local_position_setpoint_0'...
'vy_vehicle_local_position_setpoint_0'...
'vz_vehicle_local_position_setpoint_0'...
'acceleration[0]_vehicle_local_position_setpoint_0'...
'acceleration[1]_vehicle_local_position_setpoint_0'...
'acceleration[2]_vehicle_local_position_setpoint_0'...
'jerk[0]_vehicle_local_position_setpoint_0'...
'jerk[1]_vehicle_local_position_setpoint_0'...
'jerk[2]_vehicle_local_position_setpoint_0'...
'thrust[0]_vehicle_local_position_setpoint_0'...
'thrust[1]_vehicle_local_position_setpoint_0'...
'thrust[2]_vehicle_local_position_setpoint_0'};
t13.Properties.VariableNames = {'roll_body_vehicle_attitude_setpoint_0'...
'pitch_body_vehicle_attitude_setpoint_0'...
'yaw_body_vehicle_attitude_setpoint_0'...
'yaw_sp_move_rate_vehicle_attitude_setpoint_0'...
'q_d[0]_vehicle_attitude_setpoint_0'...
'q_d[1]_vehicle_attitude_setpoint_0'...
'q_d[2]_vehicle_attitude_setpoint_0'...
'q_d[3]_vehicle_attitude_setpoint_0'...
'thrust_body[0]_vehicle_attitude_setpoint_0'...
'thrust_body[1]_vehicle_attitude_setpoint_0'...
'thrust_body[2]_vehicle_attitude_setpoint_0'...
'roll_reset_integral_vehicle_attitude_setpoint_0'...
'pitch_reset_integral_vehicle_attitude_setpoint_0'...
'yaw_reset_integral_vehicle_attitude_setpoint_0'...
'fw_control_yaw_vehicle_attitude_setpoint_0'...
'apply_flaps_vehicle_attitude_setpoint_0'};
t14.Properties.VariableNames = {'roll_vehicle_rates_setpoint_0'...
'pitch_vehicle_rates_setpoint_0'...
'yaw_vehicle_rates_setpoint_0'...
'thrust_body[0]_vehicle_rates_setpoint_0'...
'thrust_body[1]_vehicle_rates_setpoint_0'...
'thrust_body[2]_vehicle_rates_setpoint_0'};
data = [t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14; data];
end
data(:,[22:27, 32, 56:61, 66, 90:95, 100, 297:300]) = [];
% data.timestamp = [];
data.('rng_vpos_estimator_innovation_test_ratios_0') = [];
data.('airspeed_timestamp_rel_ekf2_timestamps_0') = [];
data.('covariances[16]_estimator_status_0') = [];
data.('covariances[17]_estimator_status_0') = [];
data.('covariances[18]_estimator_status_0') = [];
data.('covariances[19]_estimator_status_0') = [];
data.('covariances[20]_estimator_status_0') = [];
data.('covariances[21]_estimator_status_0') = [];
data.('states[16]_estimator_status_0') = [];
data.('states[17]_estimator_status_0') = [];
data.('states[18]_estimator_status_0') = [];
data.('states[19]_estimator_status_0') = [];
data.('states[20]_estimator_status_0') = [];
data.('states[21]_estimator_status_0') = [];
data.('distance_sensor_timestamp_rel_ekf2_timestamps_0') = [];
data.('optical_flow_timestamp_rel_ekf2_timestamps_0') = [];
data.('gps_hvel[0]_estimator_innovation_test_ratios_0') = [];
data.('gps_hvel[1]_estimator_innovation_test_ratios_0') = [];
data.('gps_vvel_estimator_innovation_test_ratios_0') = [];
data.('gps_hpos[0]_estimator_innovation_test_ratios_0') = [];
data.('gps_hpos[1]_estimator_innovation_test_ratios_0') = [];
data.('gps_vpos_estimator_innovation_test_ratios_0') = [];
data.('mag_field[0]_estimator_innovation_test_ratios_0') = [];
data.('mag_field[1]_estimator_innovation_test_ratios_0') = [];
data.('mag_field[2]_estimator_innovation_test_ratios_0') = [];
data.('drag[0]_estimator_innovation_test_ratios_0') = [];
data.('drag[1]_estimator_innovation_test_ratios_0') = [];
data.('airspeed_estimator_innovation_test_ratios_0') = [];
data.('beta_estimator_innovation_test_ratios_0') = [];
data.('hagl_estimator_innovation_test_ratios_0') = [];
data.('gps_hvel[0]_estimator_innovation_variances_0') = [];
data.('gps_hvel[1]_estimator_innovation_variances_0') = [];
data.('gps_vvel_estimator_innovation_variances_0') = [];
data.('gps_hpos[0]_estimator_innovation_variances_0') = [];
data.('gps_hpos[1]_estimator_innovation_variances_0') = [];
data.('gps_vpos_estimator_innovation_variances_0') = [];
data.('mag_field[0]_estimator_innovation_variances_0') = [];
data.('mag_field[1]_estimator_innovation_variances_0') = [];
data.('mag_field[2]_estimator_innovation_variances_0') = [];
data.('drag[0]_estimator_innovation_variances_0') = [];
data.('drag[1]_estimator_innovation_variances_0') = [];
data.('airspeed_estimator_innovation_variances_0') = [];
data.('beta_estimator_innovation_variances_0') = [];
data.('hagl_estimator_innovation_variances_0') = [];
data.('gps_hvel[0]_estimator_innovations_0') = [];
data.('gps_hvel[1]_estimator_innovations_0') = [];
data.('gps_vvel_estimator_innovations_0') = [];
data.('gps_hpos[0]_estimator_innovations_0') = [];
data.('gps_hpos[1]_estimator_innovations_0') = [];
data.('gps_vpos_estimator_innovations_0') = [];
data.('mag_field[0]_estimator_innovations_0') = [];
data.('mag_field[1]_estimator_innovations_0') = [];
data.('mag_field[2]_estimator_innovations_0') = [];
data.('drag[0]_estimator_innovations_0') = [];
data.('drag[1]_estimator_innovations_0') = [];
data.('airspeed_estimator_innovations_0') = [];
data.('beta_estimator_innovations_0') = [];
data.('hagl_estimator_innovations_0') = [];
data.('gyro_device_id_estimator_sensor_bias_0') = [];
data.('accel_device_id_estimator_sensor_bias_0') = [];
data.('mag_device_id_estimator_sensor_bias_0') = [];
data.('mag_bias[0]_estimator_sensor_bias_0') = [];
data.('mag_bias[1]_estimator_sensor_bias_0') = [];
data.('mag_bias[2]_estimator_sensor_bias_0') = [];
data.('states[22]_estimator_status_0') = [];
data.('states[23]_estimator_status_0') = [];
data.('covariances[22]_estimator_status_0') = [];
data.('covariances[23]_estimator_status_0') = [];
data.('control_mode_flags_estimator_status_0') = [];
data.('vel_test_ratio_estimator_status_0') = [];
data.('hgt_test_ratio_estimator_status_0') = [];
data.('tas_test_ratio_estimator_status_0') = [];
data.('hagl_test_ratio_estimator_status_0') = [];
data.('beta_test_ratio_estimator_status_0') = [];
data.('time_slip_estimator_status_0') = [];
data.('gps_check_fail_flags_estimator_status_0') = [];
data.('filter_fault_flags_estimator_status_0') = [];
data.('innovation_check_flags_estimator_status_0') = [];
data.('solution_status_flags_estimator_status_0') = [];
data.('n_states_estimator_status_0') = [];
data.('pre_flt_fail_innov_heading_estimator_status_0') = [];
data.('pre_flt_fail_innov_vel_horiz_estimator_status_0') = [];
data.('pre_flt_fail_innov_vel_vert_estimator_status_0') = [];
data.('pre_flt_fail_innov_height_estimator_status_0') = [];
data.('pre_flt_fail_mag_field_disturbed_estimator_status_0') = [];
data.('health_flags_estimator_status_0') = [];
data.('timeout_flags_estimator_status_0') = [];
data.('data_rate_telemetry_status_0') = [];
data.('rate_txerr_telemetry_status_0') = [];
data.('type_telemetry_status_0') = [];
data.('mode_telemetry_status_0') = [];
data.('flow_control_telemetry_status_0') = [];
data.('forwarding_telemetry_status_0') = [];
data.('mavlink_v2_telemetry_status_0') = [];
data.('ftp_telemetry_status_0') = [];
data.('streams_telemetry_status_0') = [];
data.('_padding0[0]_telemetry_status_0') = [];
data.('_padding0[1]_telemetry_status_0') = [];
data.('_padding0[2]_telemetry_status_0') = [];
data.('_padding0[3]_telemetry_status_0') = [];
data.('_padding0[4]_telemetry_status_0') = [];
data.('heartbeats[0].timestamp_telemetry_status_0') = [];
data.('heartbeats[0].system_id_telemetry_status_0') = [];
data.('heartbeats[0].component_id_telemetry_status_0') = [];
data.('heartbeats[0].type_telemetry_status_0') = [];
data.('heartbeats[0].state_telemetry_status_0') = [];
data.('heartbeats[0]._padding0[0]_telemetry_status_0') = [];
data.('heartbeats[0]._padding0[1]_telemetry_status_0') = [];
data.('heartbeats[0]._padding0[2]_telemetry_status_0') = [];
data.('heartbeats[0]._padding0[3]_telemetry_status_0') = [];
data.('heartbeats[1].timestamp_telemetry_status_0') = [];
data.('heartbeats[1].system_id_telemetry_status_0') = [];
data.('heartbeats[1].component_id_telemetry_status_0') = [];
data.('heartbeats[1].type_telemetry_status_0') = [];
data.('heartbeats[1].state_telemetry_status_0') = [];
data.('heartbeats[1]._padding0[0]_telemetry_status_0') = [];
data.('heartbeats[1]._padding0[1]_telemetry_status_0') = [];
data.('heartbeats[1]._padding0[2]_telemetry_status_0') = [];
data.('heartbeats[1]._padding0[3]_telemetry_status_0') = [];
data.('heartbeats[2].timestamp_telemetry_status_0') = [];
data.('heartbeats[2].system_id_telemetry_status_0') = [];
data.('heartbeats[2].component_id_telemetry_status_0') = [];
data.('heartbeats[2].type_telemetry_status_0') = [];
data.('heartbeats[2].state_telemetry_status_0') = [];
data.('heartbeats[2]._padding0[0]_telemetry_status_0') = [];
data.('heartbeats[2]._padding0[1]_telemetry_status_0') = [];
data.('heartbeats[2]._padding0[2]_telemetry_status_0') = [];
data.('heartbeats[2]._padding0[3]_telemetry_status_0') = [];
data.('heartbeats[3].timestamp_telemetry_status_0') = [];
data.('heartbeats[3].system_id_telemetry_status_0') = [];
data.('heartbeats[3].component_id_telemetry_status_0') = [];
data.('heartbeats[3].type_telemetry_status_0') = [];
data.('heartbeats[3].state_telemetry_status_0') = [];
data.('heartbeats[3]._padding0[0]_telemetry_status_0') = [];
data.('heartbeats[3]._padding0[1]_telemetry_status_0') = [];
data.('heartbeats[3]._padding0[2]_telemetry_status_0') = [];
data.('heartbeats[3]._padding0[3]_telemetry_status_0') = [];
data.('accel_device_id_vehicle_imu_status_0') = [];
data.('gyro_device_id_vehicle_imu_status_0') = [];
data.('accel_clipping[0]_vehicle_imu_status_0') = [];
data.('accel_clipping[1]_vehicle_imu_status_0') = [];
data.('accel_clipping[2]_vehicle_imu_status_0') = [];
data.('accel_error_count_vehicle_imu_status_0') = [];
data.('gyro_error_count_vehicle_imu_status_0') = [];
data.('accel_rate_hz_vehicle_imu_status_0') = [];
data.('gyro_rate_hz_vehicle_imu_status_0') = [];
data.('ref_timestamp_vehicle_local_position_0') = [];
data.('ref_lat_vehicle_local_position_0') = [];
data.('ref_lon_vehicle_local_position_0') = [];
data.('delta_xy[0]_vehicle_local_position_0') = [];
data.('delta_xy[1]_vehicle_local_position_0') = [];
data.('delta_z_vehicle_local_position_0') = [];
data.('delta_vxy[0]_vehicle_local_position_0') = [];
data.('delta_vxy[1]_vehicle_local_position_0') = [];
data.('delta_vz_vehicle_local_position_0') = [];
data.('delta_heading_vehicle_local_position_0') = [];
data.('ref_alt_vehicle_local_position_0') = [];
data.('xy_valid_vehicle_local_position_0') = [];
data.('z_valid_vehicle_local_position_0') = [];
data.('v_xy_valid_vehicle_local_position_0') = [];
data.('v_z_valid_vehicle_local_position_0') = [];
data.('xy_reset_counter_vehicle_local_position_0') = [];
data.('z_reset_counter_vehicle_local_position_0') = [];
data.('vxy_reset_counter_vehicle_local_position_0') = [];
data.('vz_reset_counter_vehicle_local_position_0') = [];
data.('heading_reset_counter_vehicle_local_position_0') = [];
data.('xy_global_vehicle_local_position_0') = [];
data.('z_global_vehicle_local_position_0') = [];
data.('dist_bottom_valid_vehicle_local_position_0') = [];
data.('yawspeed_vehicle_local_position_setpoint_0') = [];
data.('jerk[0]_vehicle_local_position_setpoint_0') = [];
data.('jerk[1]_vehicle_local_position_setpoint_0') = [];
data.('jerk[2]_vehicle_local_position_setpoint_0') = [];
data.('yaw_sp_move_rate_vehicle_attitude_setpoint_0') = [];
data.('thrust_body[0]_vehicle_attitude_setpoint_0') = [];
data.('thrust_body[1]_vehicle_attitude_setpoint_0') = [];
data.('roll_reset_integral_vehicle_attitude_setpoint_0') = [];
data.('pitch_reset_integral_vehicle_attitude_setpoint_0') = [];
data.('yaw_reset_integral_vehicle_attitude_setpoint_0') = [];
data.('fw_control_yaw_vehicle_attitude_setpoint_0') = [];
data.('apply_flaps_vehicle_attitude_setpoint_0') = [];
data.('thrust_body[0]_vehicle_rates_setpoint_0') = [];
data.('thrust_body[1]_vehicle_rates_setpoint_0') = [];
data.('aux_hvel[0]_estimator_innovations_0') = [];
data.('aux_hvel[1]_estimator_innovations_0') = [];
data.('flow[0]_estimator_innovations_0') = [];
data.('flow[1]_estimator_innovations_0') = [];
data.('rng_vpos_estimator_innovations_0') = [];
data.('aux_hvel[0]_estimator_innovation_variances_0') = [];
data.('aux_hvel[1]_estimator_innovation_variances_0') = [];
data.('flow[0]_estimator_innovation_variances_0') = [];
data.('flow[1]_estimator_innovation_variances_0') = [];
data.('rng_vpos_estimator_innovation_variances_0') = [];
data.('aux_hvel[0]_estimator_innovation_test_ratios_0') = [];
data.('aux_hvel[1]_estimator_innovation_test_ratios_0') = [];
data.('flow[0]_estimator_innovation_test_ratios_0') = [];
writetable(data, 'combine.csv')
time = toc