Exemple #1
0
    def __init__(self, CP):
        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEARBOX"]["GEAR_SHIFTER"]

        self.user_gas, self.user_gas_pressed = 0., 0
        self.brake_switch_prev = 0
        self.brake_switch_ts = 0

        self.cruise_buttons = 0
        self.cruise_setting = 0
        self.v_cruise_pcm_prev = 0
        self.blinker_on = 0

        self.left_blinker_on = 0
        self.right_blinker_on = 0

        self.stopped = 0

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=[[0.0], [0.0]],
                             A=[[1.0, dt], [0.0, 1.0]],
                             C=[[1.0, 0.0]],
                             K=[[0.12287673], [0.29666309]])
        self.v_ego = 0.0
Exemple #2
0
    def __init__(self, CP):
        self.kegman = kegman_conf()
        self.trMode = int(self.kegman.conf['lastTrMode']
                          )  # default to last distance interval on startup
        self.lkMode = True
        self.read_distance_lines_prev = 4
        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEARBOX"]["GEAR_SHIFTER"]

        self.user_gas, self.user_gas_pressed = 0., 0
        self.brake_switch_prev = 0
        self.brake_switch_ts = 0

        self.cruise_buttons = 0
        self.cruise_setting = 0
        self.v_cruise_pcm_prev = 0
        self.blinker_on = 0

        self.left_blinker_on = 0
        self.right_blinker_on = 0

        self.stopped = 0

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=[[0.0], [0.0]],
                             A=[[1.0, dt], [0.0, 1.0]],
                             C=[[1.0, 0.0]],
                             K=[[0.12287673], [0.29666309]])
        self.v_ego = 0.0
Exemple #3
0
    def __init__(self, CP):

        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEAR_PACKET"]['GEAR']
        self.left_blinker_on = 0
        self.right_blinker_on = 0

        # initialize can parser
        self.car_fingerprint = CP.carFingerprint

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=np.matrix([[0.0], [0.0]]),
                             A=np.matrix([[1.0, dt], [0.0, 1.0]]),
                             C=np.matrix([1.0, 0.0]),
                             K=np.matrix([[0.12287673], [0.29666309]]))
        self.v_ego = 0.0

        # Added to support Openpilot Buttons -- https://github.com/rhinodavid/OpenpilotButtons
        # prev_time_gap_button_state [0|1] changes based on ACC Time Gap button presses
        # ex: 0...0...0...[button press]...1...1...1...[button press]...0...0...0
        self.prev_time_gap_button_state = 0
        self.read_distance_lines = 0
        self.time_gap_button_pressed = False
    def __init__(self, CP):
        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        #self.shifter_values = self.can_define.dv["GEARBOX"]["GEAR_SHIFTER"]
        #2018.09.02 DV change the value for Kia soul gear info, link in interface.py
        #self.shifter_PARK = self.can_define.dv["TM_GEAR"]["TM_PARK"]
        # self.shifter_REVERSE = self.can_define.dv["TM_GEAR"]["TM_REVERSE"]
        #self.shifter_NEUTRAL = self.can_define.dv["TM_GEAR"]["TM_NEUTRAL"]
        #self.shifter_DRIVE = self.can_define.dv["TM_GEAR"]["TM_DRIVE"]
        #if self.shifter_PARK == 1:
        #   self.gear_shifter = "park"
        #elif self.shifter_NEUTRAL == 1:
        #    self.gear_shifter = "neutral"
        #elif self.shifter_DRIVE == 1:
        #    self.gear_shifter = "drive"
        #elif self.shifter_REVERSE == 1:
        #   self.gear_shifter = "reverse"
        #else:
        #   self.gear_shifter = "unknown"
        # end of gear parse definition

        self.user_gas, self.user_gas_pressed = 0., 0
        self.brake_switch_prev = 0
        self.brake_switch_ts = 0

        self.cruise_buttons = 0
        self.cruise_setting = 0
        self.v_cruise_pcm_prev = 0
        self.blinker_on = 0

        self.left_blinker_on = 0
        self.right_blinker_on = 0

        self.stopped = 0

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        #self.v_ego_kf = KF1D(x0=[[0.0], [0.0]],
        #                     A=[[1.0, dt], [0.0, 1.0]],
        #                    C=[[1.0, 0.0]],
        #                  K=[[0.12287673], [0.29666309]])
        #
        #hyundai change 2018.09.04
        self.v_ego_kf = KF1D(x0=np.matrix([[0.0], [0.0]]),
                             A=np.matrix([[1.0, dt], [0.0, 1.0]]),
                             C=np.matrix([1.0, 0.0]),
                             K=np.matrix([[0.12287673], [0.29666309]]))

        self.v_ego = 0.0
Exemple #5
0
  def __init__(self, CP):

    self.CP = CP
    self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
    self.shifter_values = self.can_define.dv["GEAR_PACKET"]['GEAR']
    self.left_blinker_on = 0
    self.right_blinker_on = 0

    # initialize can parser
    self.car_fingerprint = CP.carFingerprint

    # vEgo kalman filter
    dt = 0.01
    # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
    # R = 1e3
    self.v_ego_kf = KF1D(x0=np.matrix([[0.0], [0.0]]),
                         A=np.matrix([[1.0, dt], [0.0, 1.0]]),
                         C=np.matrix([1.0, 0.0]),
                         K=np.matrix([[0.12287673], [0.29666309]]))
    self.v_ego = 0.0
Exemple #6
0
    def __init__(self, CP):
        #if (CP.carFingerprint == CAR.MODELS):
        # ALCA PARAMS
        # max REAL delta angle for correction vs actuator
        self.CL_MAX_ANGLE_DELTA_BP = [10., 44.]
        self.CL_MAX_ANGLE_DELTA = [1.8, .3]

        # adjustment factor for merging steer angle to actuator; should be over 4; the higher the smoother
        self.CL_ADJUST_FACTOR_BP = [10., 44.]
        self.CL_ADJUST_FACTOR = [16., 8.]

        # reenrey angle when to let go
        self.CL_REENTRY_ANGLE_BP = [10., 44.]
        self.CL_REENTRY_ANGLE = [5., 5.]

        # a jump in angle above the CL_LANE_DETECT_FACTOR means we crossed the line
        self.CL_LANE_DETECT_BP = [10., 44.]
        self.CL_LANE_DETECT_FACTOR = [1.5, 1.5]

        self.CL_LANE_PASS_BP = [10., 20., 44.]
        self.CL_LANE_PASS_TIME = [40., 10., 3.]

        # change lane delta angles and other params
        self.CL_MAXD_BP = [10., 32., 44.]
        self.CL_MAXD_A = [
            .358, 0.084, 0.042
        ]  #delta angle based on speed; needs fine tune, based on Tesla steer ratio of 16.75

        self.CL_MIN_V = 8.9  # do not turn if speed less than x m/2; 20 mph = 8.9 m/s

        # do not turn if actuator wants more than x deg for going straight; this should be interp based on speed
        self.CL_MAX_A_BP = [10., 44.]
        self.CL_MAX_A = [10., 10.]

        # define limits for angle change every 0.1 s
        # we need to force correction above 10 deg but less than 20
        # anything more means we are going to steep or not enough in a turn
        self.CL_MAX_ACTUATOR_DELTA = 2.
        self.CL_MIN_ACTUATOR_DELTA = 0.
        self.CL_CORRECTION_FACTOR = 1.

        #duration after we cross the line until we release is a factor of speed
        self.CL_TIMEA_BP = [10., 32., 44.]
        self.CL_TIMEA_T = [0.7, 0.30, 0.20]

        #duration to wait (in seconds) with blinkers on before starting to turn
        self.CL_WAIT_BEFORE_START = 1
        #END OF ALCA PARAMS

        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEARBOX"]["GEAR_SHIFTER"]

        self.user_gas, self.user_gas_pressed = 0., 0
        self.brake_switch_prev = 0
        self.brake_switch_ts = 0

        self.cruise_buttons = 0
        self.cruise_setting = 0
        self.v_cruise_pcm_prev = 0
        self.blinker_on = 0

        self.left_blinker_on = 0
        self.right_blinker_on = 0

        self.stopped = 0

        #BB UIEvents
        self.UE = UIEvents(self)

        #BB variable for custom buttons
        self.cstm_btns = UIButtons(self, "Honda", "honda")

        #BB pid holder for ALCA
        self.pid = None

        #BB custom message counter
        self.custom_alert_counter = -1  #set to 100 for 1 second display; carcontroller will take down to zero

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=[[0.0], [0.0]],
                             A=[[1.0, dt], [0.0, 1.0]],
                             C=[[1.0, 0.0]],
                             K=[[0.12287673], [0.29666309]])
        self.v_ego = 0.0
Exemple #7
0
    def __init__(self, CP):
        self.Angle = [0, 5, 10, 15, 20, 25, 30, 35, 60, 100, 180, 270, 500]
        self.Angle_Speed = [
            255, 160, 100, 80, 70, 60, 55, 50, 40, 33, 27, 17, 12
        ]
        #labels for ALCA modes
        self.alcaLabels = ["MadMax", "Normal", "Wifey"]
        self.alcaMode = 0
        #if (CP.carFingerprint == CAR.MODELS):
        # ALCA PARAMS
        # max REAL delta angle for correction vs actuator
        self.CL_MAX_ANGLE_DELTA_BP = [10., 15., 32., 44.]  #[10., 44.]
        self.CL_MAX_ANGLE_DELTA = [2.0, 1.75, 0.96, 0.4]
        # adjustment factor for merging steer angle to actuator; should be over 4; the higher the smoother
        self.CL_ADJUST_FACTOR_BP = [10., 44.]
        self.CL_ADJUST_FACTOR = [16., 8.]
        # reenrey angle when to let go
        self.CL_REENTRY_ANGLE_BP = [10., 44.]
        self.CL_REENTRY_ANGLE = [5., 5.]
        # a jump in angle above the CL_LANE_DETECT_FACTOR means we crossed the line
        self.CL_LANE_DETECT_BP = [10., 44.]
        self.CL_LANE_DETECT_FACTOR = [1.3, 1.3]
        self.CL_LANE_PASS_BP = [10., 20., 44.]
        self.CL_LANE_PASS_TIME = [40., 10., 3.]
        # change lane delta angles and other params
        self.CL_MAXD_BP = [10., 32., 44.]
        self.CL_MAXD_A = [
            .358, 0.084, 0.042
        ]  #delta angle based on speed; needs fine tune, based on Tesla steer ratio of 16.75
        self.CL_MIN_V = 8.9  # do not turn if speed less than x m/2; 20 mph = 8.9 m/s
        # do not turn if actuator wants more than x deg for going straight; this should be interp based on speed
        self.CL_MAX_A_BP = [10., 44.]
        self.CL_MAX_A = [10., 10.]
        # define limits for angle change every 0.1 s
        # we need to force correction above 10 deg but less than 20
        # anything more means we are going to steep or not enough in a turn
        self.CL_MAX_ACTUATOR_DELTA = 2.
        self.CL_MIN_ACTUATOR_DELTA = 0.
        self.CL_CORRECTION_FACTOR = [1.3, 1.2, 1.2]
        self.CL_CORRECTION_FACTOR_BP = [10., 32., 44.]
        #duration after we cross the line until we release is a factor of speed
        self.CL_TIMEA_BP = [10., 32., 44.]
        self.CL_TIMEA_T = [0.7, 0.30, 0.20]
        #duration to wait (in seconds) with blinkers on before starting to turn
        self.CL_WAIT_BEFORE_START = 1
        #END OF ALCA PARAMS

        context = zmq.Context()
        #gps_ext_sock = messaging.sub_sock(context, service_list['gpsLocationExternal'].port, poller)
        self.gps_location = messaging.sub_sock(
            context, service_list['gpsLocationExternal'].port)
        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEAR_PACKET"]['GEAR']
        self.left_blinker_on = 0
        self.right_blinker_on = 0
        self.distance = 999
        self.inaccuracy = 1.01
        self.speedlimit = 25
        self.approachradius = 100
        self.includeradius = 22
        self.blind_spot_on = bool(0)
        self.distance_toggle_prev = 2
        self.read_distance_lines_prev = 3
        self.lane_departure_toggle_on_prev = True
        self.acc_slow_on_prev = False
        #BB UIEvents
        self.UE = UIEvents(self)

        #BB variable for custom buttons
        self.cstm_btns = UIButtons(self, "Toyota", "toyota")

        #BB pid holder for ALCA
        self.pid = None

        #BB custom message counter
        self.custom_alert_counter = 100  #set to 100 for 1 second display; carcontroller will take down to zero
        # initialize can parser
        self.car_fingerprint = CP.carFingerprint

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=np.matrix([[0.0], [0.0]]),
                             A=np.matrix([[1.0, dt], [0.0, 1.0]]),
                             C=np.matrix([1.0, 0.0]),
                             K=np.matrix([[0.12287673], [0.29666309]]))
        self.v_ego = 0.0
Exemple #8
0
    def __init__(self, CP):

        #labels for buttons
        self.btns_init = [["alca","ALC",["MadMax","Normal","Wifey"]], \
                          ["sound","SND",[""]], \
                          ["","",[""]], \
                          ["","",[""]], \
                          ["", "",[""]], \
                          ["", "", [""]]]
        #if (CP.carFingerprint == CAR.MODELS):
        # ALCA PARAMS
        # max REAL delta angle for correction vs actuator
        self.CL_MAX_ANGLE_DELTA_BP = [10., 44.]
        self.CL_MAX_ANGLE_DELTA = [1.8, .3]

        # adjustment factor for merging steer angle to actuator; should be over 4; the higher the smoother
        self.CL_ADJUST_FACTOR_BP = [10., 44.]
        self.CL_ADJUST_FACTOR = [16., 8.]

        # reenrey angle when to let go
        self.CL_REENTRY_ANGLE_BP = [10., 44.]
        self.CL_REENTRY_ANGLE = [5., 5.]

        # a jump in angle above the CL_LANE_DETECT_FACTOR means we crossed the line
        self.CL_LANE_DETECT_BP = [10., 44.]
        self.CL_LANE_DETECT_FACTOR = [1.5, 1.5]

        self.CL_LANE_PASS_BP = [10., 20., 44.]
        self.CL_LANE_PASS_TIME = [40., 10., 3.]

        # change lane delta angles and other params
        self.CL_MAXD_BP = [10., 32., 44.]
        self.CL_MAXD_A = [
            .358, 0.11, 0.072
        ]  # [.358, 0.084, 0.042]#delta angle based on speed; needs fine tune, based on Tesla steer ratio of 16.75

        self.CL_MIN_V = 8.9  # do not turn if speed less than x m/2; 20 mph = 8.9 m/s

        # do not turn if actuator wants more than x deg for going straight; this should be interp based on speed
        self.CL_MAX_A_BP = [10., 44.]
        self.CL_MAX_A = [10., 10.]

        # define limits for angle change every 0.1 s
        # we need to force correction above 10 deg but less than 20
        # anything more means we are going to steep or not enough in a turn
        self.CL_MAX_ACTUATOR_DELTA = 2.
        self.CL_MIN_ACTUATOR_DELTA = 0.
        self.CL_CORRECTION_FACTOR = 1.

        #duration after we cross the line until we release is a factor of speed
        self.CL_TIMEA_BP = [10., 32., 44.]
        self.CL_TIMEA_T = [0.7, 0.50, 0.40]  #tesla parameters

        #duration to wait (in seconds) with blinkers on before starting to turn
        self.CL_WAIT_BEFORE_START = 0.1
        #END OF ALCA PARAMS

        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEAR_PACKET"]['GEAR']
        self.left_blinker_on = 0
        self.right_blinker_on = 0

        #BB UIEvents
        self.UE = UIEvents(self)
        #BB variable for custom buttons
        self.cstm_btns = UIButtons(self, "Toyota", "toyota")
        #BB pid holder for ALCA
        self.pid = None
        #BB custom message counter
        self.custom_alert_counter = -1  #set to 100 for 1 second display; carcontroller will take down to zero

        # initialize can parser
        self.car_fingerprint = CP.carFingerprint

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=np.matrix([[0.0], [0.0]]),
                             A=np.matrix([[1.0, dt], [0.0, 1.0]]),
                             C=np.matrix([1.0, 0.0]),
                             K=np.matrix([[0.12287673], [0.29666309]]))
        self.v_ego = 0.0

        #init variable for safety shutoff
        self.enabled_time = 0
        self.desired_angle = 0.
        self.current_angle = 0.
Exemple #9
0
    def __init__(self, CP):
        self.lkMode = True
        self.gasMode = int(kegman.conf['lastGasMode'])
        self.gasLabels = ["dynamic", "sport", "eco"]
        self.Angle = [0, 5, 10, 15, 20, 25, 30, 35, 60, 100, 180, 270, 500]
        self.Angle_Speed = [
            255, 160, 100, 80, 70, 60, 55, 50, 40, 30, 20, 10, 5
        ]
        self.blind_spot_on = bool(0)
        #labels for ALCA modes
        self.alcaLabels = ["MadMax", "Normal", "Wifey", "off"]
        steerRatio = CP.steerRatio
        self.trLabels = ["0.9", "dyn", "2.7"]
        self.alcaMode = int(kegman.conf['lastALCAMode']
                            )  # default to last ALCA Mode on startup
        if self.alcaMode > 3:
            self.alcaMode = 3
            kegman.save({'lastALCAMode': int(self.alcaMode)
                         })  # write last distance bar setting to file
        self.trMode = int(kegman.conf['lastTrMode']
                          )  # default to last distance interval on startup
        if self.trMode > 2:
            self.trMode = 2
            kegman.save({'lastTrMode': int(self.trMode)
                         })  # write last distance bar setting to file
        #if (CP.carFingerprint == CAR.MODELS):
        # ALCA PARAMS
        # max REAL delta angle for correction vs actuator
        self.CL_MAX_ANGLE_DELTA_BP = [10., 32., 55.]
        self.CL_MAX_ANGLE_DELTA = [
            2.0 * 15.4 / steerRatio, 1. * 15.4 / steerRatio,
            0.5 * 15.4 / steerRatio
        ]
        # adjustment factor for merging steer angle to actuator; should be over 4; the higher the smoother
        self.CL_ADJUST_FACTOR_BP = [10., 44.]
        self.CL_ADJUST_FACTOR = [16., 8.]
        # reenrey angle when to let go
        self.CL_REENTRY_ANGLE_BP = [10., 44.]
        self.CL_REENTRY_ANGLE = [5., 5.]
        # a jump in angle above the CL_LANE_DETECT_FACTOR means we crossed the line
        self.CL_LANE_DETECT_BP = [10., 44.]
        self.CL_LANE_DETECT_FACTOR = [1.5, 2.5]
        self.CL_LANE_PASS_BP = [10., 20., 44.]
        self.CL_LANE_PASS_TIME = [40., 10., 4.]
        # change lane delta angles and other params
        self.CL_MAXD_BP = [10., 32., 44.]
        self.CL_MAXD_A = [
            .358, 0.084, 0.040
        ]  #delta angle based on speed; needs fine tune, based on Tesla steer ratio of 16.75
        self.CL_MIN_V = 8.9  # do not turn if speed less than x m/2; 20 mph = 8.9 m/s
        # do not turn if actuator wants more than x deg for going straight; this should be interp based on speed
        self.CL_MAX_A_BP = [10., 44.]
        self.CL_MAX_A = [10., 10.]
        # define limits for angle change every 0.1 s
        # we need to force correction above 10 deg but less than 20
        # anything more means we are going to steep or not enough in a turn
        self.CL_MAX_ACTUATOR_DELTA = 2.

        self.CL_MIN_ACTUATOR_DELTA = 0.
        self.CL_CORRECTION_FACTOR = [1., 1.1, 1.2]
        self.CL_CORRECTION_FACTOR_BP = [10., 32., 44.]
        #duration after we cross the line until we release is a factor of speed
        self.CL_TIMEA_BP = [10., 32., 44.]
        self.CL_TIMEA_T = [0.7, 0.30, 0.30]
        #duration to wait (in seconds) with blinkers on before starting to turn
        self.CL_WAIT_BEFORE_START = 1
        #END OF ALCA PARAMS

        self.read_distance_lines_prev = 3

        self.CP = CP
        self.can_define = CANDefine(DBC[CP.carFingerprint]['pt'])
        self.shifter_values = self.can_define.dv["GEARBOX"]["GEAR_SHIFTER"]

        self.user_gas, self.user_gas_pressed = 0., 0
        self.brake_switch_prev = 0
        self.brake_switch_ts = 0
        self.lead_distance = 255
        self.hud_lead = 0

        self.cruise_buttons = 0
        self.cruise_setting = 0
        self.v_cruise_pcm_prev = 0
        self.blinker_on = 0

        self.left_blinker_on = 0
        self.right_blinker_on = 0

        self.stopped = 0

        #BB UIEvents
        self.UE = UIEvents(self)

        #BB variable for custom buttons
        self.cstm_btns = UIButtons(self, "Honda", "honda")

        #BB pid holder for ALCA
        self.pid = None

        #BB custom message counter
        self.custom_alert_counter = -1  #set to 100 for 1 second display; carcontroller will take down to zero

        # vEgo kalman filter
        dt = 0.01
        # Q = np.matrix([[10.0, 0.0], [0.0, 100.0]])
        # R = 1e3
        self.v_ego_kf = KF1D(x0=[[0.0], [0.0]],
                             A=[[1.0, dt], [0.0, 1.0]],
                             C=[[1.0, 0.0]],
                             K=[[0.12287673], [0.29666309]])
        self.v_ego = 0.0