tadded position plotting - flytrexlog - read, manipulate, and plot flytrex logger data
(HTM) git clone git://src.adamsgaard.dk/flytrexlog
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 7b8316db1357a064a8cf36a0572626444ea74463
(DIR) parent ad248b5fa743cb400d401688004385d2e467b932
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Fri, 6 Jun 2014 08:40:38 +0200
added position plotting
Diffstat:
M flytrex_20140601.py | 1 +
M flytrexlog.py | 45 +++++++++++++++++++++++++++----
2 files changed, 41 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/flytrex_20140601.py b/flytrex_20140601.py
t@@ -2,3 +2,4 @@
import flytrexlog
flight = flytrexlog.csvfile('flytrex_quadcopter_mission_20140601.csv')
+flight.plot_position()
(DIR) diff --git a/flytrexlog.py b/flytrexlog.py
t@@ -1,6 +1,7 @@
#!/usr/bin/env python
import csv
import numpy
+import matplotlib.pyplot as plt
class csvfile:
def __init__(self, filename):
t@@ -9,8 +10,8 @@ class csvfile:
def read_csv(self, filename):
log = numpy.genfromtxt(filename, delimiter=',')
- f_to_m = 0.3048 # factor to convert from feet to meter
- mph_to_ms = 0.447 # miles/hour to meter/second
+ f_to_m = 0.3048 # factor to convert from feet to meter
+ mph_to_ms = 0.447 # miles/hour to meter/second
self.latitude = log[1:,0]
self.longitude = log[1:,1]
self.altitude = log[1:,2]*f_to_m
t@@ -22,11 +23,45 @@ class csvfile:
self.max_speed = log[1:,8]*mph_to_ms
self.max_distance = log[1:,9]*f_to_m
self.time = log[1:,10]/1000.0 # ms to s
- self.datetime_utc = log[1:,11]
- self.datetime = log[1:,12]
+ self.datetime_utc = log[1:,11] # ERROR: Not parsed correctly
+ self.datetime = log[1:,12] # ERROR: Not parsed correctly
self.sattelites = log[1:,13]
self.pressure = log[1:,14]
- self.temperature = (log[1:,15] - 32.0)/1.8 # Fahrenheit to Celcius
+ self.temperature = (log[1:,15] - 32.0)/1.8 # F to C
+ def plot_position(self):
+ '''
+ Plot the GPS coordinates from the log through time.
+ '''
+ f, axarr = plt.subplots(3, sharex=True)
+ axarr[0].plot(self.time, self.latitude)
+ axarr[0].set_ylabel('Latitude, $\phi$, [$^\circ$]')
+ axarr[0].grid()
+ axarr[0].set_title(self.filename)
+
+ axarr[1].plot(self.time, self.longitude)
+ axarr[1].set_ylabel('Longitude, $\lambda$, [$^\circ$]')
+ axarr[1].grid()
+
+ axarr[2].plot(self.time, self.altitude)
+ axarr[2].set_xlabel('Time [s]')
+ axarr[2].set_ylabel('Altitude [m]')
+ axarr[2].grid()
+
+ #f.subplots_adjust(hspace=0.0)
+ plt.show()
+
+ def utm_coordinate(self, datetime, format='local'):
+ '''
+ Determines the GPS coordinate at a specified time. If no
+ recorded value is available at the specified time, linear
+ interpolation will approximate the coordinate.
+
+ :param datetime: The timestamp for which the approximate
+ location is required
+ :type datetime: str
+ :param format: Format of the timestamp. Can be 'local' or 'utc'
+ :type format: str
+ '''