flightdata 0.2.4__tar.gz → 0.2.6__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 (39) hide show
  1. flightdata-0.2.6/PKG-INFO +30 -0
  2. flightdata-0.2.6/README.md +15 -0
  3. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/base/collection.py +7 -4
  4. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/base/table.py +11 -10
  5. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/flight/flight.py +1 -2
  6. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/origin.py +17 -18
  7. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/state.py +4 -4
  8. flightdata-0.2.6/flightdata.egg-info/PKG-INFO +30 -0
  9. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata.egg-info/SOURCES.txt +2 -0
  10. flightdata-0.2.6/flightdata.egg-info/requires.txt +5 -0
  11. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata.egg-info/top_level.txt +1 -0
  12. flightdata-0.2.6/scripts/collect_logs.py +28 -0
  13. flightdata-0.2.6/scripts/flightline.py +55 -0
  14. {flightdata-0.2.4 → flightdata-0.2.6}/setup.cfg +10 -2
  15. flightdata-0.2.4/PKG-INFO +0 -171
  16. flightdata-0.2.4/README.md +0 -158
  17. flightdata-0.2.4/flightdata.egg-info/PKG-INFO +0 -171
  18. flightdata-0.2.4/flightdata.egg-info/requires.txt +0 -3
  19. {flightdata-0.2.4 → flightdata-0.2.6}/LICENSE +0 -0
  20. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/__init__.py +0 -0
  21. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/base/__init__.py +0 -0
  22. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/base/constructs.py +0 -0
  23. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/base/numpy_encoder.py +0 -0
  24. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/coefficients.py +0 -0
  25. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/environment/__init__.py +0 -0
  26. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/environment/environment.py +0 -0
  27. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/environment/wind.py +0 -0
  28. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/flight/__init__.py +0 -0
  29. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/flight/ardupilot.py +0 -0
  30. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/flight/fields.py +0 -0
  31. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/flow.py +0 -0
  32. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/model/__init__.py +0 -0
  33. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/model/aerodynamic.py +0 -0
  34. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata/model/thrust.py +0 -0
  35. {flightdata-0.2.4 → flightdata-0.2.6}/flightdata.egg-info/dependency_links.txt +0 -0
  36. {flightdata-0.2.4 → flightdata-0.2.6}/setup.py +0 -0
  37. {flightdata-0.2.4 → flightdata-0.2.6}/test/test_fields.py +0 -0
  38. {flightdata-0.2.4 → flightdata-0.2.6}/test/test_flight.py +0 -0
  39. {flightdata-0.2.4 → flightdata-0.2.6}/test/test_origin.py +0 -0
@@ -0,0 +1,30 @@
1
+ Metadata-Version: 2.1
2
+ Name: flightdata
3
+ Version: 0.2.6
4
+ Summary: Module for handling UAV flight log data
5
+ Home-page: https://github.com/PyFlightCoach/FlightData
6
+ Author: Thomas David
7
+ Author-email: thomasdavid0@gmail.com
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: numpy
11
+ Requires-Dist: pandas
12
+ Requires-Dist: simplejson
13
+ Requires-Dist: pfc-geometry>=0.2.4
14
+ Requires-Dist: ardupilot-log-reader>=0.2.1
15
+
16
+ ## FlightData
17
+ This repo is contains a set of datastructures and tools for handling flight log data.
18
+
19
+ ### Flight
20
+ The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
21
+
22
+
23
+ ### Table
24
+ The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
25
+
26
+ ### State
27
+ The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
28
+
29
+
30
+ Further documentation will be provided here: https://pfcdocumentation.readthedocs.io/pyflightcoach/flightdata.html
@@ -0,0 +1,15 @@
1
+ ## FlightData
2
+ This repo is contains a set of datastructures and tools for handling flight log data.
3
+
4
+ ### Flight
5
+ The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
6
+
7
+
8
+ ### Table
9
+ The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
10
+
11
+ ### State
12
+ The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
13
+
14
+
15
+ Further documentation will be provided here: https://pfcdocumentation.readthedocs.io/pyflightcoach/flightdata.html
@@ -1,5 +1,4 @@
1
- from typing import Dict, List, Union, Any, Self, TypeVar, Iterable
2
- import numpy as np
1
+ from typing import Union, Any, Self, TypeVar, Iterable
3
2
  import pandas as pd
4
3
 
5
4
 
@@ -45,7 +44,7 @@ class Collection:
45
44
  for v in self.data.values():
46
45
  yield v
47
46
 
48
- def to_list(self) -> List[T]:
47
+ def to_list(self) -> list[T]:
49
48
  return list(self.data.values())
50
49
 
51
50
  def to_dicts(self, *args, **kwargs) -> list[dict[str, Any]]:
@@ -99,4 +98,8 @@ class Collection:
99
98
  return str(pd.Series({k: repr(v) for k, v in self.data.items()}))
100
99
 
101
100
  def __len__(self) -> int:
102
- return len(self.data)
101
+ return len(self.data)
102
+
103
+ @property
104
+ def uids(self) -> list[str]:
105
+ return list(self.data.keys())
@@ -3,7 +3,7 @@ import numpy as np
3
3
  import pandas as pd
4
4
  import numpy.typing as npt
5
5
  from geometry import Base, Time
6
- from typing import Union, Self, Tuple
6
+ from typing import Self, Tuple
7
7
  from .constructs import SVar, Constructs
8
8
  from numbers import Number
9
9
  from time import time
@@ -22,7 +22,7 @@ class Table:
22
22
  if len(data) < min_len:
23
23
  raise Exception(f"State constructor length check failed, data length = {len(data)}, min_len = {min_len}")
24
24
  self.base_cols = [c for c in data.columns if c in self.constructs.cols()]
25
- self.label_cols = [c for c in data.columns if not c in self.constructs.cols()]
25
+ self.label_cols = [c for c in data.columns if c not in self.constructs.cols()]
26
26
 
27
27
  self.data = data
28
28
 
@@ -45,7 +45,7 @@ class Table:
45
45
  raise ValueError("nan values in data")
46
46
 
47
47
 
48
- def __getattr__(self, name: str) -> Union[pd.DataFrame, Base]:
48
+ def __getattr__(self, name: str) -> npt.NDArray | Base:
49
49
  if name in self.data.columns:
50
50
  return self.data[name].to_numpy()
51
51
  elif name in self.constructs.data.keys():
@@ -73,7 +73,7 @@ class Table:
73
73
  @property
74
74
  def duration(self):
75
75
  return self.data.index[-1] - self.data.index[0]
76
-
76
+
77
77
  def __getitem__(self, sli):
78
78
  if isinstance(sli, Number):
79
79
  if sli<0:
@@ -119,7 +119,7 @@ class Table:
119
119
  yield self[ind]
120
120
 
121
121
  @classmethod
122
- def from_constructs(cls, *args,**kwargs):
122
+ def from_constructs(cls, *args,**kwargs) -> Self:
123
123
  kwargs = dict(
124
124
  **{list(cls.constructs.data.keys())[i]: arg for i, arg in enumerate(args)},
125
125
  **kwargs
@@ -130,7 +130,7 @@ class Table:
130
130
  x.to_pandas(
131
131
  columns=cls.constructs[key].keys,
132
132
  index=kwargs["time"].t
133
- ) for key, x in kwargs.items() if not x is None
133
+ ) for key, x in kwargs.items() if x is not None
134
134
  ],
135
135
  axis=1
136
136
  )
@@ -200,9 +200,10 @@ class Table:
200
200
  return 0
201
201
 
202
202
  def unique_labels(self, cols = None) -> pd.DataFrame:
203
- '''TODO Fix This'''
204
203
  if cols is None:
205
204
  cols = self.label_cols
205
+ elif isinstance(cols, str):
206
+ cols = [cols]
206
207
  return self.data.loc[:, cols].reset_index(drop=True).drop_duplicates().reset_index(drop=True)
207
208
 
208
209
  def shift_labels(self, col, elname, offset, allow_label_loss=True) -> Self:
@@ -254,7 +255,7 @@ class Table:
254
255
  @classmethod
255
256
  def shift_multi(Cls, steps: int, tb1: Self, tb2: Self, min_len=2) -> Tuple(Self, Self):
256
257
  '''Take datapoints off the start of tb2 and add to the end tb1'''
257
- if (steps>0 and len(tb2)-min_len<steps) or (steps<0 and len(tb1)-2<min_len):
258
+ if (steps>0 and len(tb2)-min_len<steps) or (steps<0 and min_len - len(tb1) > steps):
258
259
  raise ValueError(f'Cannot Squash a Table to less than {min_len} datapoints')
259
260
  dfj = Cls.stack([tb1, tb2], overlap=0).data
260
261
  return Cls(dfj.iloc[:len(tb1)+steps, :]), \
@@ -280,7 +281,7 @@ class Table:
280
281
  res = res.shift_label_ratio(ratio, min_len, **lab)
281
282
  return res
282
283
 
283
- def get_label_id(self, **kwargs) -> Union[int, float]:
284
+ def get_label_id(self, **kwargs) -> int | float:
284
285
  dfo = self.unique_labels()
285
286
  for k, v in kwargs.items():
286
287
  dfo = dfo.loc[dfo[k] == v, :]
@@ -317,7 +318,7 @@ class Table:
317
318
  labs = np.array(self.single_labels())
318
319
  return self.__class__(self.data[labs == lab])
319
320
 
320
- def split_labels(self, cols=None) -> dict[str, Self]:
321
+ def split_labels(self, cols:list[str]|str = None) -> dict[str, Self]:
321
322
  '''Split into multiple tables based on the labels'''
322
323
  res = {}
323
324
  for label in self.unique_labels(cols).iterrows():
@@ -122,8 +122,7 @@ class Flight:
122
122
 
123
123
  @staticmethod
124
124
  def from_json(file: str) -> Self:
125
- with open(file, 'r') as f:
126
- return Flight.from_dict(load(f))
125
+ return Flight.from_dict(load(open(file, 'r')))
127
126
 
128
127
  @staticmethod
129
128
  def build_cols(**kwargs):
@@ -91,25 +91,24 @@ class Origin(object):
91
91
  np.arctan2(direction.y[0], direction.x[0])
92
92
  )
93
93
 
94
- def to_f3a_zone(self):
94
+ def to_f3a_zone(self, file: str):
95
95
 
96
96
  centre = self.pilot_position.offset(
97
97
  100 * g.Point(np.cos(self.heading), np.sin(self.heading), 0.0)
98
98
  )
99
99
 
100
- oformat = lambda val: "{}".format(val)
101
-
102
- return "\n".join([
103
- "Emailed box data for F3A Zone Pro - please DON'T modify!",
104
- self.name,
105
- oformat(self.pilot_position.lat[0]),
106
- oformat(self.pilot_position.long[0]),
107
- oformat(centre.lat[0]),
108
- oformat(centre.long[0]),
109
- "120"
110
- ])
111
-
112
-
100
+ with open(file, 'w') as f:
101
+ for line in [
102
+ "Emailed box data for F3A Zone Pro - please DON'T modify!",
103
+ self.name,
104
+ self.pilot_position.lat[0],
105
+ self.pilot_position.long[0],
106
+ centre.lat[0],
107
+ centre.long[0],
108
+ self.pilot_position.alt[0]
109
+ ]:
110
+ print(line, file=f)
111
+
113
112
  @staticmethod
114
113
  def from_f3a_zone(file_path: str):
115
114
  if hasattr(file_path, "read"):
@@ -119,16 +118,16 @@ class Origin(object):
119
118
  lines = f.read().splitlines()
120
119
  return Origin.from_points(
121
120
  lines[1],
122
- g.GPS(float(lines[2]), float(lines[3]), 0),
123
- g.GPS(float(lines[4]), float(lines[5]), 0)
121
+ g.GPS(float(lines[2]), float(lines[3]), float(lines[6])),
122
+ g.GPS(float(lines[4]), float(lines[5]), float(lines[6]))
124
123
  )
125
124
 
126
125
  @staticmethod
127
126
  def from_fcjson_parmameters(data: dict):
128
127
  return Origin.from_points(
129
128
  "FCJ_box",
130
- g.GPS(float(data['pilotLat']), float(data['pilotLng']), 0),
131
- g.GPS(float(data['centerLat']), float(data['centerLng']), 0)
129
+ g.GPS(float(data['pilotLat']), float(data['pilotLng']), float(data['pilotAlt'])),
130
+ g.GPS(float(data['centerLat']), float(data['centerLng']), float(data['centerAlt']))
132
131
  )
133
132
 
134
133
 
@@ -28,10 +28,10 @@ class State(Table):
28
28
  return g.Transformation(-self.pos, self.att.inverse())
29
29
 
30
30
  @staticmethod
31
- def from_transform(transform: g.Transformation=None, **kwargs):
31
+ def from_transform(transform: g.Transformation=None, **kwargs) -> State:
32
32
  if transform is None:
33
33
  transform = g.Transformation()
34
- if not "time" in kwargs:
34
+ if "time" not in kwargs:
35
35
  kwargs["time"] = g.Time.from_t(np.linspace(0, State._construct_freq*len(transform), len(transform)))
36
36
  return State.from_constructs(pos=transform.p, att=transform.q, **kwargs)
37
37
 
@@ -63,8 +63,8 @@ class State(Table):
63
63
  att = st.att.body_rotate(rvel * time.t)
64
64
  pos = g.Point.concatenate([
65
65
  g.P0(),
66
- (att.transform_point(vel)).cumsum()[:-1]
67
- ]) * time.dt + st.pos
66
+ (att.transform_point(vel) * time.dt).cumsum()[:-1]
67
+ ]) + st.pos
68
68
  return State.from_constructs(time,pos, att, vel, rvel)
69
69
 
70
70
 
@@ -0,0 +1,30 @@
1
+ Metadata-Version: 2.1
2
+ Name: flightdata
3
+ Version: 0.2.6
4
+ Summary: Module for handling UAV flight log data
5
+ Home-page: https://github.com/PyFlightCoach/FlightData
6
+ Author: Thomas David
7
+ Author-email: thomasdavid0@gmail.com
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: numpy
11
+ Requires-Dist: pandas
12
+ Requires-Dist: simplejson
13
+ Requires-Dist: pfc-geometry>=0.2.4
14
+ Requires-Dist: ardupilot-log-reader>=0.2.1
15
+
16
+ ## FlightData
17
+ This repo is contains a set of datastructures and tools for handling flight log data.
18
+
19
+ ### Flight
20
+ The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
21
+
22
+
23
+ ### Table
24
+ The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
25
+
26
+ ### State
27
+ The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
28
+
29
+
30
+ Further documentation will be provided here: https://pfcdocumentation.readthedocs.io/pyflightcoach/flightdata.html
@@ -27,6 +27,8 @@ flightdata/flight/flight.py
27
27
  flightdata/model/__init__.py
28
28
  flightdata/model/aerodynamic.py
29
29
  flightdata/model/thrust.py
30
+ scripts/collect_logs.py
31
+ scripts/flightline.py
30
32
  test/test_fields.py
31
33
  test/test_flight.py
32
34
  test/test_origin.py
@@ -0,0 +1,5 @@
1
+ numpy
2
+ pandas
3
+ simplejson
4
+ pfc-geometry>=0.2.4
5
+ ardupilot-log-reader>=0.2.1
@@ -0,0 +1,28 @@
1
+ from pathlib import Path
2
+ import os
3
+ from datetime import datetime
4
+ import shutil
5
+ import argparse
6
+
7
+ parser = argparse.ArgumentParser(description='A tool to collect logs from a memory card')
8
+ parser.add_argument('-f', '--folder', default='/media/', help='folder to get logs from, defaults to /media/')
9
+ parser.add_argument('-t', '--target', default='', help='folder to save logs in if not current')
10
+ parser.add_argument('-s', '--subfolder', default=True, action=argparse.BooleanOptionalAction, help='Create subfolder for logs, defaults to True')
11
+
12
+ args = parser.parse_args()
13
+
14
+ source_folder = Path(args.folder)
15
+ target_folder = Path(args.target)
16
+
17
+ all_logs = sorted(list(source_folder.rglob('*.BIN')))
18
+
19
+ for file in all_logs:
20
+
21
+ date = datetime.fromtimestamp(os.path.getmtime(file))
22
+ folder = Path(date.strftime('%Y_%m_%d'))
23
+ folder.mkdir(exist_ok=True)
24
+
25
+ if not (folder / file.name).exists():
26
+ print(f'copying {file} to {folder / file.name}')
27
+ shutil.copyfile(file, folder / file.name )
28
+
@@ -0,0 +1,55 @@
1
+ from flightdata import Flight, Origin
2
+ from geometry import GPS
3
+ from pathlib import Path
4
+ import numpy as np
5
+ import argparse
6
+
7
+
8
+ def box_from_log(log: Flight, channel: int):
9
+ c6on = Flight(log.data.loc[log.data[f'rcin_c{channel}']>=1500])
10
+ groups = np.cumsum(c6on.time_flight.diff() >=1)
11
+ return Origin.from_points("new", GPS(c6on.gps[groups==0])[-1], GPS(c6on.gps[groups==1])[-1])
12
+
13
+ def box_from_logs(pilot: Flight, centre: Flight):
14
+ return Origin.from_points("new", GPS(*pilot.gps.iloc[-1]), GPS(*centre.gps.iloc[-1]))
15
+
16
+
17
+ if __name__ == "__main__":
18
+ parser = argparse.ArgumentParser(description='A tool for creating a flightline .f3a file from bin logs')
19
+
20
+ parser.add_argument('-l', '--logdir', default='', help='folder to look for logs in')
21
+ parser.add_argument('-p', '--pilot', default=None, help='flight log bin file to use, None for first')
22
+ parser.add_argument('-c', '--centre', default=None, help='centre position bin file to use if input==None')
23
+ parser.add_argument('-i', '--input', default=6, help='channel used to indicate pilot or centre postions (pwm>=1500), None for two files')
24
+
25
+ args = parser.parse_args()
26
+
27
+ print(args)
28
+
29
+ logs = sorted(list(Path(args.logdir).glob("*.BIN")))
30
+ logids = [int(log.stem) for log in logs]
31
+
32
+ if args.pilot in logs:
33
+ plog = args.pilot
34
+ elif args.pilot is None:
35
+ plog=logs[0]
36
+ elif args.pilot.isdigit():
37
+ plog = logs[logids.index(int(args.pilot))]
38
+
39
+ print(f'Pilot position log: {plog}')
40
+
41
+ if args.centre in logs:
42
+ clog = args.centre
43
+ elif args.centre is None:
44
+ clog=None
45
+ elif args.centre.isdigit():
46
+ clog = logs[logids.index(int(args.centre))]
47
+
48
+ print(f'Centre position log: {clog}')
49
+
50
+ if args.centre:
51
+ box = box_from_logs(Flight.from_log(plog), Flight.from_log(clog))
52
+ else:
53
+ box = box_from_log(Flight.from_log(plog), args.input)
54
+
55
+ box.to_f3a_zone(Path(args.logdir) / f'box_{plog.stem}.f3a')
@@ -5,14 +5,22 @@ author_email = thomasdavid0@gmail.com
5
5
  description = Module for handling UAV flight log data
6
6
  long_description = file: README.md
7
7
  long_description_content_type = text/markdown
8
- version = 0.2.4
8
+ version = 0.2.6
9
9
  url = https://github.com/PyFlightCoach/FlightData
10
10
 
11
11
  [options]
12
+ package_dir =
13
+ flightdata = flightdata
14
+ scripts = scripts
15
+ scripts =
16
+ scripts/collect_logs.py
17
+ scripts/flightline.py
12
18
  install_requires =
13
19
  numpy
14
20
  pandas
15
- pfc-geometry
21
+ simplejson
22
+ pfc-geometry >=0.2.4
23
+ ardupilot-log-reader >=0.2.1
16
24
 
17
25
  [egg_info]
18
26
  tag_build =
flightdata-0.2.4/PKG-INFO DELETED
@@ -1,171 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: flightdata
3
- Version: 0.2.4
4
- Summary: Module for handling UAV flight log data
5
- Home-page: https://github.com/PyFlightCoach/FlightData
6
- Author: Thomas David
7
- Author-email: thomasdavid0@gmail.com
8
- Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
- Requires-Dist: numpy
11
- Requires-Dist: pandas
12
- Requires-Dist: pfc-geometry
13
-
14
- ## FlightData
15
- This repo is contains a set of datastructures and tools for handling flight log data.
16
-
17
- ### Flight
18
- The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
19
-
20
-
21
- ### Table
22
- The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
23
-
24
- ### State
25
- The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
26
-
27
-
28
-
29
- ### Ardupilot DataFlash log Parameters:
30
-
31
- for reference (pulled from ardupilot github https://github.com/dronekit/ardupilot-releases/blob/master/libraries/DataFlash/DataFlash.h):
32
-
33
- LOG_BASE_STRUCTURES:
34
-
35
- FMT Type,Length,Name,Format,Columns
36
-
37
- PARM TimeUS,Name,Value
38
-
39
- GPS TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
40
-
41
- GPS2 TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
42
-
43
- GPA TimeUS,VDop,HAcc,VAcc,SAcc
44
-
45
- GPA2 TimeUS,VDop,HAcc,VAcc,SAcc
46
-
47
- IMU TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
48
-
49
- MSG TimeUS
50
-
51
- RCIN TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14
52
-
53
- RCOU TimeUS,Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8,Ch9,Ch10,Ch11,Ch12
54
-
55
- RSSI TimeUS,RXRSSI
56
-
57
- BARO TimeUS,Alt,Press,Temp,CRt
58
-
59
- POWR TimeUS,Vcc,VServo,Flags
60
-
61
- CMD TimeUS,CTot,CNum,CId,Prm1,Prm2,Prm3,Prm4,Lat,Lng,Alt
62
-
63
- RAD TimeUS,RSSI,RemRSSI,TxBuf,Noise,RemNoise,RxErrors,Fixed
64
-
65
- CAM TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,Roll,Pitch,Yaw
66
-
67
- ARSP TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset
68
-
69
- CURR TimeUS,Throttle,Volt,Curr,Vcc,CurrTot,Volt2
70
-
71
- ATT TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw
72
-
73
- MAG TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
74
-
75
- MODE TimeUS,Mode,ModeNum
76
-
77
- RFND TimeUS,Dist1,Dist2,Dist3,Dist4
78
-
79
- IMU2 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt, AcHlt
80
-
81
- IMU3 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
82
-
83
- AHR2 TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
84
-
85
- POS TimeUS,Lat,Lng,Alt,RelAlt
86
-
87
- SIM TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
88
-
89
- EKF1 TimeUS,Roll,Pitch,Yaw,VN,VE,VD,PN,PE,PD,GX,GY,GZ
90
-
91
- EKF2 TimeUS,Ratio,AZ1bias,AZ2bias,VWN,VWE,MN,ME,MD,MX,MY,MZ
92
-
93
- EKF3 TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IVT
94
-
95
- EKF4 TimeUS,SV,SP,SH,SMX,SMY,SMZ,SVT,OFN,EFE,FS,TS,SS
96
-
97
- TERR TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded
98
-
99
- UBX1 TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt
100
-
101
- UBX2 TimeUS,Instance,ofsI,magI,ofsQ,magQ
102
-
103
- UBX3 TimeUS,Instance,hAcc,vAcc,sAcc
104
-
105
- GRAW TimeUS,WkMS,Week,numSV,sv,cpMes,prMes,doMes,mesQI,cno,lli
106
-
107
- GRXH TimeUS,rcvTime,week,leapS,numMeas,recStat
108
-
109
- GRXS TimeUS,prMes,cpMes,doMes,gnss,sv,freq,lock,cno,prD,cpD,doD,trk
110
-
111
- SBFE TimeUS,TOW,WN,Mode,Err,Lat,Long,Height,Undul,Vn,Ve,Vu,COG
112
-
113
- ESC1 TimeUS,RPM,Volt,Curr,Temp
114
-
115
- ESC2 TimeUS,RPM,Volt,Curr,Temp
116
-
117
- ESC3 TimeUS,RPM,Volt,Curr,Temp
118
-
119
- ESC4 TimeUS,RPM,Volt,Curr,Temp
120
-
121
- ESC5 TimeUS,RPM,Volt,Curr,Temp
122
-
123
- ESC6 TimeUS,RPM,Volt,Curr,Temp
124
-
125
- ESC7 TimeUS,RPM,Volt,Curr,Temp
126
-
127
- ESC8 TimeUS,RPM,Volt,Curr,Temp
128
-
129
- EKF5 TimeUS,normInnov,FIX,FIY,AFI,HAGL,offset,RI,meaRng,errHAGL
130
-
131
- MAG2 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
132
-
133
- MAG3 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
134
-
135
- ACC1 TimeUS,SampleUS,AccX,AccY,AccZ
136
-
137
- ACC2 TimeUS,SampleUS,AccX,AccY,AccZ
138
-
139
- ACC3 TimeUS,SampleUS,AccX,AccY,AccZ
140
-
141
- GYR1 TimeUS,SampleUS,GyrX,GyrY,GyrZ
142
-
143
- GYR2 TimeUS,SampleUS,GyrX,GyrY,GyrZ
144
-
145
- GYR3 TimeUS,SampleUS,GyrX,GyrY,GyrZ
146
-
147
- PIDR TimeUS,Des,P,I,D,FF,AFF
148
-
149
- PIDP TimeUS,Des,P,I,D,FF,AFF
150
-
151
- PIDY TimeUS,Des,P,I,D,FF,AFF
152
-
153
- PIDA TimeUS,Des,P,I,D,FF,AFF
154
-
155
- PIDS TimeUS,Des,P,I,D,FF,AFF
156
-
157
- BAR2 TimeUS,Alt,Press,Temp,CRt
158
-
159
- BAR3 TimeUS,Alt,Press,Temp,CRt
160
-
161
- VIBE TimeUS,VibeX,VibeY,VibeZ,Clip0,Clip1,Clip2
162
-
163
- IMT TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
164
-
165
- IMT2 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
166
-
167
- IMT3 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
168
-
169
- ORGN TimeUS,Type,Lat,Lng,Alt
170
-
171
- RPM TimeUS,rpm1,rpm2
@@ -1,158 +0,0 @@
1
- ## FlightData
2
- This repo is contains a set of datastructures and tools for handling flight log data.
3
-
4
- ### Flight
5
- The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
6
-
7
-
8
- ### Table
9
- The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
10
-
11
- ### State
12
- The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
13
-
14
-
15
-
16
- ### Ardupilot DataFlash log Parameters:
17
-
18
- for reference (pulled from ardupilot github https://github.com/dronekit/ardupilot-releases/blob/master/libraries/DataFlash/DataFlash.h):
19
-
20
- LOG_BASE_STRUCTURES:
21
-
22
- FMT Type,Length,Name,Format,Columns
23
-
24
- PARM TimeUS,Name,Value
25
-
26
- GPS TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
27
-
28
- GPS2 TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
29
-
30
- GPA TimeUS,VDop,HAcc,VAcc,SAcc
31
-
32
- GPA2 TimeUS,VDop,HAcc,VAcc,SAcc
33
-
34
- IMU TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
35
-
36
- MSG TimeUS
37
-
38
- RCIN TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14
39
-
40
- RCOU TimeUS,Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8,Ch9,Ch10,Ch11,Ch12
41
-
42
- RSSI TimeUS,RXRSSI
43
-
44
- BARO TimeUS,Alt,Press,Temp,CRt
45
-
46
- POWR TimeUS,Vcc,VServo,Flags
47
-
48
- CMD TimeUS,CTot,CNum,CId,Prm1,Prm2,Prm3,Prm4,Lat,Lng,Alt
49
-
50
- RAD TimeUS,RSSI,RemRSSI,TxBuf,Noise,RemNoise,RxErrors,Fixed
51
-
52
- CAM TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,Roll,Pitch,Yaw
53
-
54
- ARSP TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset
55
-
56
- CURR TimeUS,Throttle,Volt,Curr,Vcc,CurrTot,Volt2
57
-
58
- ATT TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw
59
-
60
- MAG TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
61
-
62
- MODE TimeUS,Mode,ModeNum
63
-
64
- RFND TimeUS,Dist1,Dist2,Dist3,Dist4
65
-
66
- IMU2 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt, AcHlt
67
-
68
- IMU3 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
69
-
70
- AHR2 TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
71
-
72
- POS TimeUS,Lat,Lng,Alt,RelAlt
73
-
74
- SIM TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
75
-
76
- EKF1 TimeUS,Roll,Pitch,Yaw,VN,VE,VD,PN,PE,PD,GX,GY,GZ
77
-
78
- EKF2 TimeUS,Ratio,AZ1bias,AZ2bias,VWN,VWE,MN,ME,MD,MX,MY,MZ
79
-
80
- EKF3 TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IVT
81
-
82
- EKF4 TimeUS,SV,SP,SH,SMX,SMY,SMZ,SVT,OFN,EFE,FS,TS,SS
83
-
84
- TERR TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded
85
-
86
- UBX1 TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt
87
-
88
- UBX2 TimeUS,Instance,ofsI,magI,ofsQ,magQ
89
-
90
- UBX3 TimeUS,Instance,hAcc,vAcc,sAcc
91
-
92
- GRAW TimeUS,WkMS,Week,numSV,sv,cpMes,prMes,doMes,mesQI,cno,lli
93
-
94
- GRXH TimeUS,rcvTime,week,leapS,numMeas,recStat
95
-
96
- GRXS TimeUS,prMes,cpMes,doMes,gnss,sv,freq,lock,cno,prD,cpD,doD,trk
97
-
98
- SBFE TimeUS,TOW,WN,Mode,Err,Lat,Long,Height,Undul,Vn,Ve,Vu,COG
99
-
100
- ESC1 TimeUS,RPM,Volt,Curr,Temp
101
-
102
- ESC2 TimeUS,RPM,Volt,Curr,Temp
103
-
104
- ESC3 TimeUS,RPM,Volt,Curr,Temp
105
-
106
- ESC4 TimeUS,RPM,Volt,Curr,Temp
107
-
108
- ESC5 TimeUS,RPM,Volt,Curr,Temp
109
-
110
- ESC6 TimeUS,RPM,Volt,Curr,Temp
111
-
112
- ESC7 TimeUS,RPM,Volt,Curr,Temp
113
-
114
- ESC8 TimeUS,RPM,Volt,Curr,Temp
115
-
116
- EKF5 TimeUS,normInnov,FIX,FIY,AFI,HAGL,offset,RI,meaRng,errHAGL
117
-
118
- MAG2 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
119
-
120
- MAG3 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
121
-
122
- ACC1 TimeUS,SampleUS,AccX,AccY,AccZ
123
-
124
- ACC2 TimeUS,SampleUS,AccX,AccY,AccZ
125
-
126
- ACC3 TimeUS,SampleUS,AccX,AccY,AccZ
127
-
128
- GYR1 TimeUS,SampleUS,GyrX,GyrY,GyrZ
129
-
130
- GYR2 TimeUS,SampleUS,GyrX,GyrY,GyrZ
131
-
132
- GYR3 TimeUS,SampleUS,GyrX,GyrY,GyrZ
133
-
134
- PIDR TimeUS,Des,P,I,D,FF,AFF
135
-
136
- PIDP TimeUS,Des,P,I,D,FF,AFF
137
-
138
- PIDY TimeUS,Des,P,I,D,FF,AFF
139
-
140
- PIDA TimeUS,Des,P,I,D,FF,AFF
141
-
142
- PIDS TimeUS,Des,P,I,D,FF,AFF
143
-
144
- BAR2 TimeUS,Alt,Press,Temp,CRt
145
-
146
- BAR3 TimeUS,Alt,Press,Temp,CRt
147
-
148
- VIBE TimeUS,VibeX,VibeY,VibeZ,Clip0,Clip1,Clip2
149
-
150
- IMT TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
151
-
152
- IMT2 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
153
-
154
- IMT3 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
155
-
156
- ORGN TimeUS,Type,Lat,Lng,Alt
157
-
158
- RPM TimeUS,rpm1,rpm2
@@ -1,171 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: flightdata
3
- Version: 0.2.4
4
- Summary: Module for handling UAV flight log data
5
- Home-page: https://github.com/PyFlightCoach/FlightData
6
- Author: Thomas David
7
- Author-email: thomasdavid0@gmail.com
8
- Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
- Requires-Dist: numpy
11
- Requires-Dist: pandas
12
- Requires-Dist: pfc-geometry
13
-
14
- ## FlightData
15
- This repo is contains a set of datastructures and tools for handling flight log data.
16
-
17
- ### Flight
18
- The Flight object represents the data logged by a flight controller. The class wraps a pandas dataframe which is indexed on a single time axis. Where data is logged at different rates for different sensors it is mapped to the closest time index. Attribute access provides individual columns or sets of columns in the groups defined in Fields. Item access subsets the data in the time axis.
19
-
20
-
21
- ### Table
22
- The Table is the base type for most of the datastructures. It allows attribute access to individual columns. Attribute access is also available to return basic entities subclassed from the base type in the pfc-geometry package. For example in the state object table.x provides the x position, table.pos provides a Point representing the xyz position. columns that are not represented by geometric base types are considered to be labels for the data.
23
-
24
- ### State
25
- The State object is a table representing the position and orientation of the aircraft along with their derivatives, it can be constructed from a Flight or from scratch by extrapolating in lines or around arcs. Many tools are provided to manipulate the data. The position and attitude are in a reference frame (with Z up), the derivatives move with the aircraft in either the body, wind, stability or track (like the wind axis but with no wind) frame.
26
-
27
-
28
-
29
- ### Ardupilot DataFlash log Parameters:
30
-
31
- for reference (pulled from ardupilot github https://github.com/dronekit/ardupilot-releases/blob/master/libraries/DataFlash/DataFlash.h):
32
-
33
- LOG_BASE_STRUCTURES:
34
-
35
- FMT Type,Length,Name,Format,Columns
36
-
37
- PARM TimeUS,Name,Value
38
-
39
- GPS TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
40
-
41
- GPS2 TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U
42
-
43
- GPA TimeUS,VDop,HAcc,VAcc,SAcc
44
-
45
- GPA2 TimeUS,VDop,HAcc,VAcc,SAcc
46
-
47
- IMU TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
48
-
49
- MSG TimeUS
50
-
51
- RCIN TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14
52
-
53
- RCOU TimeUS,Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8,Ch9,Ch10,Ch11,Ch12
54
-
55
- RSSI TimeUS,RXRSSI
56
-
57
- BARO TimeUS,Alt,Press,Temp,CRt
58
-
59
- POWR TimeUS,Vcc,VServo,Flags
60
-
61
- CMD TimeUS,CTot,CNum,CId,Prm1,Prm2,Prm3,Prm4,Lat,Lng,Alt
62
-
63
- RAD TimeUS,RSSI,RemRSSI,TxBuf,Noise,RemNoise,RxErrors,Fixed
64
-
65
- CAM TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,Roll,Pitch,Yaw
66
-
67
- ARSP TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset
68
-
69
- CURR TimeUS,Throttle,Volt,Curr,Vcc,CurrTot,Volt2
70
-
71
- ATT TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw
72
-
73
- MAG TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
74
-
75
- MODE TimeUS,Mode,ModeNum
76
-
77
- RFND TimeUS,Dist1,Dist2,Dist3,Dist4
78
-
79
- IMU2 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt, AcHlt
80
-
81
- IMU3 TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt
82
-
83
- AHR2 TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
84
-
85
- POS TimeUS,Lat,Lng,Alt,RelAlt
86
-
87
- SIM TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng
88
-
89
- EKF1 TimeUS,Roll,Pitch,Yaw,VN,VE,VD,PN,PE,PD,GX,GY,GZ
90
-
91
- EKF2 TimeUS,Ratio,AZ1bias,AZ2bias,VWN,VWE,MN,ME,MD,MX,MY,MZ
92
-
93
- EKF3 TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IVT
94
-
95
- EKF4 TimeUS,SV,SP,SH,SMX,SMY,SMZ,SVT,OFN,EFE,FS,TS,SS
96
-
97
- TERR TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded
98
-
99
- UBX1 TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt
100
-
101
- UBX2 TimeUS,Instance,ofsI,magI,ofsQ,magQ
102
-
103
- UBX3 TimeUS,Instance,hAcc,vAcc,sAcc
104
-
105
- GRAW TimeUS,WkMS,Week,numSV,sv,cpMes,prMes,doMes,mesQI,cno,lli
106
-
107
- GRXH TimeUS,rcvTime,week,leapS,numMeas,recStat
108
-
109
- GRXS TimeUS,prMes,cpMes,doMes,gnss,sv,freq,lock,cno,prD,cpD,doD,trk
110
-
111
- SBFE TimeUS,TOW,WN,Mode,Err,Lat,Long,Height,Undul,Vn,Ve,Vu,COG
112
-
113
- ESC1 TimeUS,RPM,Volt,Curr,Temp
114
-
115
- ESC2 TimeUS,RPM,Volt,Curr,Temp
116
-
117
- ESC3 TimeUS,RPM,Volt,Curr,Temp
118
-
119
- ESC4 TimeUS,RPM,Volt,Curr,Temp
120
-
121
- ESC5 TimeUS,RPM,Volt,Curr,Temp
122
-
123
- ESC6 TimeUS,RPM,Volt,Curr,Temp
124
-
125
- ESC7 TimeUS,RPM,Volt,Curr,Temp
126
-
127
- ESC8 TimeUS,RPM,Volt,Curr,Temp
128
-
129
- EKF5 TimeUS,normInnov,FIX,FIY,AFI,HAGL,offset,RI,meaRng,errHAGL
130
-
131
- MAG2 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
132
-
133
- MAG3 TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health
134
-
135
- ACC1 TimeUS,SampleUS,AccX,AccY,AccZ
136
-
137
- ACC2 TimeUS,SampleUS,AccX,AccY,AccZ
138
-
139
- ACC3 TimeUS,SampleUS,AccX,AccY,AccZ
140
-
141
- GYR1 TimeUS,SampleUS,GyrX,GyrY,GyrZ
142
-
143
- GYR2 TimeUS,SampleUS,GyrX,GyrY,GyrZ
144
-
145
- GYR3 TimeUS,SampleUS,GyrX,GyrY,GyrZ
146
-
147
- PIDR TimeUS,Des,P,I,D,FF,AFF
148
-
149
- PIDP TimeUS,Des,P,I,D,FF,AFF
150
-
151
- PIDY TimeUS,Des,P,I,D,FF,AFF
152
-
153
- PIDA TimeUS,Des,P,I,D,FF,AFF
154
-
155
- PIDS TimeUS,Des,P,I,D,FF,AFF
156
-
157
- BAR2 TimeUS,Alt,Press,Temp,CRt
158
-
159
- BAR3 TimeUS,Alt,Press,Temp,CRt
160
-
161
- VIBE TimeUS,VibeX,VibeY,VibeZ,Clip0,Clip1,Clip2
162
-
163
- IMT TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
164
-
165
- IMT2 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
166
-
167
- IMT3 TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ
168
-
169
- ORGN TimeUS,Type,Lat,Lng,Alt
170
-
171
- RPM TimeUS,rpm1,rpm2
@@ -1,3 +0,0 @@
1
- numpy
2
- pandas
3
- pfc-geometry
File without changes
File without changes