Source code for sensors.xsens
'''
Import data saved with XSens-sensors, through subclassing "IMU_Base"
'''
'''
Author: Thomas Haslwanter
Version: 0.1
Date: Sept-2017
'''
import numpy as np
import pandas as pd
import abc
import sys
sys.path.append("..")
from imus import IMU_Base
[docs]class XSens(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
'''
# Get the sampling rate from the second line in the file
try:
fh = open(in_file)
fh.readline()
line = fh.readline()
rate = np.float(line.split(':')[1].split('H')[0])
fh.close()
returnValues = [rate]
except FileNotFoundError:
print('{0} does not exist!'.format(in_file))
return -1
# Read the data
data = pd.read_csv(in_file,
sep='\t',
skiprows=4,
index_col=False)
# Extract the columns that you want, by name
paramList=['Acc', 'Gyr', 'Mag']
for param in paramList:
Expression = param + '*'
returnValues.append(data.filter(regex=Expression).values)
self._set_info(*returnValues)
if __name__ == '__main__':
my_sensor = XSens(in_file=r'..\tests\data\data_xsens.txt')
import matplotlib.pyplot as plt
plt.plot(my_sensor.acc)
plt.show()
print('Done')