import numpy as np class Conversions: MPH_TO_KPH = 1.609344 KPH_TO_MPH = 1. / MPH_TO_KPH MS_TO_KPH = 3.6 KPH_TO_MS = 1. / MS_TO_KPH MS_TO_MPH = MS_TO_KPH * KPH_TO_MPH MPH_TO_MS = MPH_TO_KPH * KPH_TO_MS MS_TO_KNOTS = 1.9438 KNOTS_TO_MS = 1. / MS_TO_KNOTS DEG_TO_RAD = np.pi/180. RAD_TO_DEG = 1. / DEG_TO_RAD # Car decode decimal minutes into decimal degrees, can work with numpy arrays as input @staticmethod def dm2d(dm): degs = np.round(dm/100.) mins = dm - degs*100. return degs + mins/60. # Car button codes class CruiseButtons: RES_ACCEL = 4 DECEL_SET = 3 CANCEL = 2 MAIN = 1 # Image params for color cam on acura, calibrated on pre las vegas drive (2016-05-21) class ImageParams: def __init__(self): self.SX_R = 160 # top left corner pixel shift of the visual region considered by the model self.SY_R = 180 # top left corner pixel shift of the visual region considered by the model self.VPX_R = 319 # vanishing point reference, as calibrated in Vegas drive self.VPY_R = 201 # vanishing point reference, as calibrated in Vegas drive self.X = 320 # pixel length of image for model self.Y = 160 # pixel length of image for model self.SX = self.SX_R # current visual region with shift self.SY = self.SY_R # current visual region with shift self.VPX = self.VPX_R # current vanishing point with shift self.VPY = self.VPY_R # current vanishing point with shift def shift(self, shift): def to_int(fl): return int(round(fl)) # shift comes from calibration and says how much to shift the viual region self.SX = self.SX_R + to_int(shift[0]) # current visual region with shift self.SY = self.SY_R + to_int(shift[1]) # current visual region with shift self.VPX = self.VPX_R + to_int(shift[0]) # current vanishing point with shift self.VPY = self.VPY_R + to_int(shift[1]) # current vanishing point with shift class UIParams: lidar_x, lidar_y, lidar_zoom = 384, 960, 6 lidar_car_x, lidar_car_y = lidar_x/2., lidar_y/1.1 car_hwidth = 1.7272/2 * lidar_zoom car_front = 2.6924 * lidar_zoom car_back = 1.8796 * lidar_zoom car_color = 110