flightdata 0.2.17__tar.gz → 0.2.18__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. {flightdata-0.2.17/flightdata.egg-info → flightdata-0.2.18}/PKG-INFO +3 -3
  2. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flight/fields.py +7 -1
  3. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flight/flight.py +25 -8
  4. flightdata-0.2.18/flightdata/state.py +650 -0
  5. {flightdata-0.2.17 → flightdata-0.2.18/flightdata.egg-info}/PKG-INFO +3 -3
  6. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata.egg-info/requires.txt +2 -2
  7. {flightdata-0.2.17 → flightdata-0.2.18}/requirements-dev.txt +1 -1
  8. flightdata-0.2.18/requirements.txt +5 -0
  9. flightdata-0.2.17/flightdata/state.py +0 -538
  10. flightdata-0.2.17/requirements.txt +0 -5
  11. {flightdata-0.2.17 → flightdata-0.2.18}/.github/workflows/publish_pypi.yml +0 -0
  12. {flightdata-0.2.17 → flightdata-0.2.18}/.gitignore +0 -0
  13. {flightdata-0.2.17 → flightdata-0.2.18}/.vscode/launch.json +0 -0
  14. {flightdata-0.2.17 → flightdata-0.2.18}/.vscode/settings.json +0 -0
  15. {flightdata-0.2.17 → flightdata-0.2.18}/LICENSE +0 -0
  16. {flightdata-0.2.17 → flightdata-0.2.18}/README.md +0 -0
  17. {flightdata-0.2.17 → flightdata-0.2.18}/examples/__init__.py +0 -0
  18. {flightdata-0.2.17 → flightdata-0.2.18}/examples/data/__init__.py +0 -0
  19. {flightdata-0.2.17 → flightdata-0.2.18}/examples/data/manual_F3A_F23_22_04_28_00000231.json +0 -0
  20. {flightdata-0.2.17 → flightdata-0.2.18}/examples/data/manual_F3A_P23_22_05_31_00000350.json +0 -0
  21. {flightdata-0.2.17 → flightdata-0.2.18}/examples/data/manual_F3A_P23_23_08_11_00000094.json +0 -0
  22. {flightdata-0.2.17 → flightdata-0.2.18}/examples/flight_dynamics/00000150.json +0 -0
  23. {flightdata-0.2.17 → flightdata-0.2.18}/examples/flight_dynamics/__init__.py +0 -0
  24. {flightdata-0.2.17 → flightdata-0.2.18}/examples/flight_dynamics/box.f3a +0 -0
  25. {flightdata-0.2.17 → flightdata-0.2.18}/examples/flight_dynamics/param_id.py +0 -0
  26. {flightdata-0.2.17 → flightdata-0.2.18}/examples/state_analysis/__init__.py +0 -0
  27. {flightdata-0.2.17 → flightdata-0.2.18}/examples/state_analysis/axes.py +0 -0
  28. {flightdata-0.2.17 → flightdata-0.2.18}/examples/state_analysis/state_fill_plot.py +0 -0
  29. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/__init__.py +0 -0
  30. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/__init__.py +0 -0
  31. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/collection.py +0 -0
  32. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/constructs.py +0 -0
  33. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/labeling.py +0 -0
  34. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/numpy_encoder.py +0 -0
  35. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/base/table.py +0 -0
  36. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/coefficients.py +0 -0
  37. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/environment/__init__.py +0 -0
  38. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/environment/environment.py +0 -0
  39. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/environment/wind.py +0 -0
  40. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flight/__init__.py +0 -0
  41. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flight/ardupilot.py +0 -0
  42. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flight/parameters.py +0 -0
  43. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/flow.py +0 -0
  44. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/model/__init__.py +0 -0
  45. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/model/aerodynamic.py +0 -0
  46. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/model/thrust.py +0 -0
  47. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/origin.py +0 -0
  48. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/scripts/collect_logs.py +0 -0
  49. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata/scripts/flightline.py +0 -0
  50. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata.egg-info/SOURCES.txt +0 -0
  51. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata.egg-info/dependency_links.txt +0 -0
  52. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata.egg-info/entry_points.txt +0 -0
  53. {flightdata-0.2.17 → flightdata-0.2.18}/flightdata.egg-info/top_level.txt +0 -0
  54. {flightdata-0.2.17 → flightdata-0.2.18}/pyproject.toml +0 -0
  55. {flightdata-0.2.17 → flightdata-0.2.18}/setup.cfg +0 -0
  56. {flightdata-0.2.17 → flightdata-0.2.18}/test/EmailedBox.f3a +0 -0
  57. {flightdata-0.2.17 → flightdata-0.2.18}/test/__init__.py +0 -0
  58. {flightdata-0.2.17 → flightdata-0.2.18}/test/base/__init__.py +0 -0
  59. {flightdata-0.2.17 → flightdata-0.2.18}/test/base/test_base_constructs.py +0 -0
  60. {flightdata-0.2.17 → flightdata-0.2.18}/test/base/test_table.py +0 -0
  61. {flightdata-0.2.17 → flightdata-0.2.18}/test/conftest.py +0 -0
  62. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/make_inputs.py +0 -0
  63. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/manual_F3A_P23.json +0 -0
  64. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/p23.BIN +0 -0
  65. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/p23.json +0 -0
  66. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/p23_box.f3a +0 -0
  67. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/p23_fc.json +0 -0
  68. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/p23_flight.json +0 -0
  69. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/vtol_hover.bin +0 -0
  70. {flightdata-0.2.17 → flightdata-0.2.18}/test/data/vtol_hover.json +0 -0
  71. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_environment/__init__.py +0 -0
  72. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_environment/test_environment.py +0 -0
  73. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_environment/test_environment_wind.py +0 -0
  74. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_fields.py +0 -0
  75. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_flight.py +0 -0
  76. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_model/__init__.py +0 -0
  77. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_model/test_model_coefficients.py +0 -0
  78. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_model/test_model_flow.py +0 -0
  79. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_origin.py +0 -0
  80. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_state/__init__.py +0 -0
  81. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_state/test_state.py +0 -0
  82. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_state/test_state_builders.py +0 -0
  83. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_state/test_state_conversions.py +0 -0
  84. {flightdata-0.2.17 → flightdata-0.2.18}/test/test_state/test_state_measurements.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flightdata
3
- Version: 0.2.17
3
+ Version: 0.2.18
4
4
  Summary: Module for handling UAV flight log data
5
5
  Author-email: Thomas David <thomasdavid0@gmail.com>
6
6
  License: GNU GPL v3
@@ -11,13 +11,13 @@ License-File: LICENSE
11
11
  Requires-Dist: numpy
12
12
  Requires-Dist: pandas
13
13
  Requires-Dist: simplejson
14
- Requires-Dist: pfc-geometry>=0.2.8
14
+ Requires-Dist: pfc-geometry>=0.2.10
15
15
  Requires-Dist: json_stream
16
16
  Provides-Extra: dev
17
17
  Requires-Dist: numpy; extra == "dev"
18
18
  Requires-Dist: pandas; extra == "dev"
19
19
  Requires-Dist: simplejson; extra == "dev"
20
- Requires-Dist: pfc-geometry>=0.2.8; extra == "dev"
20
+ Requires-Dist: pfc-geometry>=0.2.9; extra == "dev"
21
21
  Requires-Dist: ardupilot-log-reader>=0.3.3; extra == "dev"
22
22
  Requires-Dist: pytest; extra == "dev"
23
23
 
@@ -57,7 +57,8 @@ class Fields:
57
57
  #raise AttributeError(f'Field {name} not found')
58
58
 
59
59
  def get_fields(self, names: list[str]) -> list[Field]:
60
- _l = lambda v: [v] if isinstance(v, Field) else v
60
+ def _l(v):
61
+ return [v] if isinstance(v, Field) else v
61
62
  return list(chain(*[_l(getattr(self, n)) for n in names]))
62
63
 
63
64
  def get_cols(self, names: list[str]) -> list[str]:
@@ -80,6 +81,11 @@ fields = Fields([
80
81
  Field('gps_latitude', 'latitude, degrees'),
81
82
  Field('gps_longitude', 'longitude, degrees'),
82
83
  Field('gps_altitude', 'altitude, meters'),
84
+ Field('gps_satellites', 'number of satellites'),
85
+ Field('gps_hdop', 'number precision'),
86
+ Field('pos_latitude', 'latitude, degrees'),
87
+ Field('pos_longitude', 'longitude, degrees'),
88
+ Field('pos_altitude', 'altitude, meters'),
83
89
  Field('attitude_roll', 'roll angle, radians'),
84
90
  Field('attitude_pitch', 'pitch angle, radians'),
85
91
  Field('attitude_yaw', 'yaw angle, radians'),
@@ -309,7 +309,7 @@ class Flight:
309
309
  def from_log(
310
310
  log: str,
311
311
  extra_types: list[str] = None,
312
- ppsource: str = "pos",
312
+ ppsource: str = "pos",
313
313
  imu_instance=0,
314
314
  **kwargs,
315
315
  ) -> Flight:
@@ -318,12 +318,17 @@ class Flight:
318
318
  """
319
319
  from ardupilot_log_reader.reader import Ardupilot
320
320
 
321
- extra_types = [] if extra_types is None else extra_types
322
-
323
321
  parser = log
324
322
  if not isinstance(log, Ardupilot):
325
323
  parser = Ardupilot.parse(
326
- str(log), types=list(set(Flight.ardupilot_types + extra_types))
324
+ str(log),
325
+ types=list(
326
+ set(
327
+ Flight.ardupilot_types + []
328
+ if extra_types is None
329
+ else extra_types
330
+ )
331
+ ),
327
332
  )
328
333
 
329
334
  params = Flight.build_cols(
@@ -364,9 +369,9 @@ class Flight:
364
369
  dfs.append(
365
370
  Flight.build_cols(
366
371
  time_actual=parser.POS.timestamp,
367
- gps_latitude=parser.POS.Lat,
368
- gps_longitude=parser.POS.Lng,
369
- gps_altitude=parser.POS.Alt,
372
+ pos_latitude=parser.POS.Lat,
373
+ pos_longitude=parser.POS.Lng,
374
+ pos_altitude=parser.POS.Alt,
370
375
  )
371
376
  )
372
377
  else:
@@ -387,7 +392,7 @@ class Flight:
387
392
  ),
388
393
  "C",
389
394
  )
390
-
395
+
391
396
  if ekf2 is not None:
392
397
  dfs = dfs + Flight.parse_instances(
393
398
  ekf2,
@@ -454,6 +459,18 @@ class Flight:
454
459
  )
455
460
  )
456
461
 
462
+ if "GPS" in parser.dfs:
463
+ dfs.append(
464
+ Flight.build_cols(
465
+ time_actual=parser.GPS.timestamp,
466
+ gps_latitude=parser.GPS.Lat,
467
+ gps_longitude=parser.GPS.Lng,
468
+ gps_altitude=parser.GPS.Alt,
469
+ gps_satellites=parser.GPS.NSats,
470
+ gps_hdop=parser.GPS.HDop,
471
+ )
472
+ )
473
+
457
474
  if "MAG" in parser.dfs:
458
475
  dfs.append(
459
476
  Flight.build_cols(