In [1]:
%load_ext autoreload
%autoreload 2
%pylab inline
In [2]:
import px4tools.ulog
import pandas
import os
import pickle
import scipy.interpolate
import px4tools.version
In [3]:
pandas.__version__
Out[3]:
In [4]:
px4tools.version.git_revision
Out[4]:
In [5]:
d_gyro = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='sensor_gyro',
processing_func=lambda x: x['sensor_gyro_0'].resample('1 s').agg('mean'),
save_path='./logs/01-09-17-sitl-gyro_0.ulg',
force_processing=False)
px4tools.ulog.noise_analysis_sensor(d_gyro, 'sensor_gyro_0')
Out[5]:
In [6]:
d_accel = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='sensor_accel',
processing_func=lambda x: x['sensor_accel_0'].resample('100 ms').agg('mean'),
save_path='./logs/01-09-17-sitl-accel_0.ulg',
force_processing=False)
px4tools.ulog.noise_analysis_sensor(d_accel, 'sensor_accel_0')
Out[6]:
In [7]:
d_mag = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='sensor_mag',
processing_func=lambda x: x['sensor_mag_0'].resample('100 ms').agg('mean'),
save_path='./logs/01-09-17-sitl-mag_0.ulg',
force_processing=False)
In [8]:
B_b = np.array([
d_mag.t_sensor_mag_0__f_x.ffill(), d_mag.t_sensor_mag_0__f_y.ffill(), d_mag.t_sensor_mag_0__f_z.ffill()]).T
B_b_mean = B_b.mean(axis=0)
B_b_mean[2] = 0
B_b[:,2] = 0
mag_heading_error = pandas.Series(
np.arcsin(np.cross(B_b_mean, B_b)[:,2]/np.linalg.norm(B_b, axis=1)/np.linalg.norm(B_b_mean)),
d_mag.index, name='heading error')
mag_heading_error.plot()
ylabel('heading error, rad')
Out[8]:
In [9]:
res_mag = px4tools.plot_allan_std_dev(mag_heading_error)
legend()
title('Magnetic Heading Allan Variance')
res_mag
Out[9]:
In [10]:
px4tools.plot_autocorrelation(mag_heading_error)
Out[10]:
In [11]:
d_baro = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='sensor_baro',
processing_func=lambda x: x['sensor_baro_0'].resample('100 ms').agg('mean'),
save_path='./logs/01-09-17-sitl-baro_0.pkl',
force_processing=False)
res = px4tools.ulog.plot_allan_std_dev(d_baro.t_sensor_baro_0__f_altitude)
figure()
tau = px4tools.ulog.plot_autocorrelation(d_baro.t_sensor_baro_0__f_altitude)
res, tau
Out[11]:
In [12]:
d_baro_f = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='sensor_baro',
processing_func=lambda x: x['sensor_baro_0'],
save_path='./logs/01-09-17-sitl-baro_0_full.pkl',
force_processing=False)
res = px4tools.ulog.plot_allan_std_dev(d_baro_f.t_sensor_baro_0__f_pressure)
figure()
tau = px4tools.ulog.plot_autocorrelation(d_baro_f.t_sensor_baro_0__f_pressure)
res, tau
Out[12]:
In [13]:
d_gps = px4tools.ulog.cached_log_processing(
log='/home/jgoppert/.ros/rootfs/fs/microsd/log/2017-01-09/11_39_44.ulg',
msg_filter='vehicle_gps_position',
processing_func=lambda x: x['vehicle_gps_position_0'],
save_path='./logs/01-09-17-sitl-gps.pkl',
force_processing=False)