Source code for sensors.yei
'''
Import data saved with yei-sensors, through subclassing "IMU_Base"
'''
'''
Author: Thomas Haslwanter
Date: Sept-2017
'''
import numpy as np
import pandas as pd
import re
import abc
# To ensure that the relative path works
import os
import sys
parent_dir = os.path.abspath(os.path.join( os.path.dirname(__file__), '..' ))
if parent_dir not in sys.path:
sys.path.insert(0, parent_dir)
from imus import IMU_Base
[docs]class YEI(IMU_Base):
"""Concrete class based on abstract base class IMU_Base """
[docs] def get_data(self, in_file, in_data=None):
'''Get the sampling rate, as well as the recorded data,
and assign them to the corresponding attributes of "self".
Parameters
----------
in_file : string
Filename of the data-file
in_data : not used here
Assigns
-------
- rate : rate
- acc : acceleration
- omega : angular_velocity
- mag : mag_field_direction
'''
data = pd.read_csv(in_file)
# Generate a simple list of column names
newColumns = []
pattern = re.compile('.*%(\w+)\((\w+)\)')
for name in data.columns:
newColumns.append(pattern.match(name).groups()[1])
data.columns = newColumns
# Calculate rate (ChipTime is in microsec)
start = data.ChipTimeUS[0] * 1e-6 # microseconds to seconds
stop = data.ChipTimeUS.values[-1] * 1e-6 # pandas can't count backwards
rate = len(data) / (stop-start)
# Extract the columns that you want, and pass them on
in_data = {'rate':rate,
'acc': data.filter(regex='Accel').values,
'omega': data.filter(regex='Gyro').values,
'mag': data.filter(regex='Compass').values}
self._set_data(in_data)
if __name__ == '__main__':
my_sensor = YEI(in_file=r'..\tests\data\data_yei.txt')
import matplotlib.pyplot as plt
plt.plot(my_sensor.acc)
plt.show()
print('Done')