HITOMIi23

Untitled

Jan 31st, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. #/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Sun Jan 27 12:02:28 2019
  5.  
  6. @author: hitomii23
  7. """
  8.  
  9. import sys
  10. import lcm
  11. #import time
  12. import serial
  13. from gps import gps_t
  14. import utm
  15.  
  16. class GPS(object):
  17.     def __init__(self, port_name):
  18.         self.port = serial.Serial(port_name, 4800, timeout = 1.)  # 4800-N-8-1
  19.         self.lcm = lcm.LCM()
  20.         self.packet = gps_t()
  21.    
  22.     def readloop(self):
  23.         while True:
  24.             line = self.port.readline()
  25.             try:                                               
  26.                 vals = [x for x in line.split(',')]
  27.                 if vals[0] == "$GPGGA":  
  28.                     print vals
  29.                     self.packet.timestamp = float(vals[1])
  30.                     lat_full = vals[2]
  31.                     lat_degrs = float(lat_full[:2])
  32.                     lat_mins = float(lat_full[2:])
  33.                     mins_1 = lat_mins/60
  34.                     lat = lat_degrs + mins_1
  35.                     lat = round(lat,5)
  36.                     self.packet.latitude = lat
  37.  
  38.                     self.packet.lat_dir = vals[3]
  39.                     if vals[3] == 'S':
  40.                         self.packet.latitude = -self.packet.latitude
  41.                     print self.packet.latitude
  42.  
  43.                     lon_full = vals[4]
  44.                     lon_degrs = float(lon_full[:3])
  45.                     lon_mins = float(lon_full[3:])
  46.                     mins_2 = lon_mins/60
  47.                     lon = lon_degrs + mins_2
  48.                     lon = round(lon,5)
  49.                     self.packet.longitude = lon
  50.  
  51.                     self.packet.long_dir = vals[5]
  52.                     if vals[5] == 'W':
  53.                         self.packet.longitude = - self.packet.longitude
  54.  
  55.                     self.packet.altitude = float(vals[9])
  56.                     print self.packet.longitude   #print self.packet.altitude
  57.                     lat_lon = (self.packet.latitude, self.packet.longitude)
  58.  
  59.                     UTM_latlon = utm.from_latlon(lat_lon[0], lat_lon[1])
  60.  
  61.                     self.packet.utmx = UTM_latlon[0]
  62.                     self.packet.utmy = UTM_latlon[1]
  63.                     self.lcm.publish("GPS", self.packet.encode())
  64.  
  65.             except :
  66.                print 'GPS ERROR (' + line + ')'
  67.                #print e
  68.                #sys.exit(0)                  
  69.  
  70.  
  71. if __name__ =="__main__":
  72.     if len(sys.argv) != 2:
  73.         print "Usage: %s <serial_port>\n" % sys.argv[0]
  74.         sys.exit(0)
  75.     myGPS = GPS(sys.argv[1])
  76.     myGPS.readloop()
Advertisement
Add Comment
Please, Sign In to add comment