def __init__(self, canbus, car_fingerprint): self.pedal_steady = 0. self.start_time = 0. self.steer_idx = 0 self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.lka_icon_status_last = (False, False) # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.canbus = canbus self.params = CarControllerParams(car_fingerprint) self.packer_pt = CANPacker(DBC[car_fingerprint]['pt']) self.packer_ch = CANPacker(DBC[car_fingerprint]['chassis'])
def __init__(self, dbc_name=None, car_fingerprint="MIEV", enable_camera=1, enable_dsu=1, enable_apg=1): self.braking = False # redundant safety check with the board self.controls_allowed = True self.last_steer = 0 self.last_angle = 0 self.accel_steady = 0. self.car_fingerprint = car_fingerprint self.alert_active = False self.last_standstill = False self.standstill_req = False self.angle_control = False self.steer_angle_enabled = False self.last_fault_frame = -200 self.fake_ecus = set() #if enable_camera: self.fake_ecus.add(ECU.CAM) if enable_dsu: self.fake_ecus.add(ECU.DSU) #if enable_apg: self.fake_ecus.add(ECU.APGS) self.packer = CANPacker(dbc_name) self.client = Client()
def __init__(self, dbc_name, enable_camera=True): self.params = Params() self.braking = False self.brake_steady = 0. self.brake_last = 0. self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.epas_disabled = True self.last_angle = 0. self.last_accel = 0. self.ALCA = ALCAController(self,True,True) # Enabled and SteerByAngle both True self.ACC = ACCController() self.PCC = PCCController(self) self.HSO = HSOController(self) self.GYRO = GYROController() self.sent_DAS_bootID = False context = zmq.Context() self.poller = zmq.Poller() self.speedlimit = messaging.sub_sock(context, service_list['liveMapData'].port, conflate=True, poller=self.poller) self.speedlimit_ms = 0 self.speedlimit_valid = False self.speedlimit_units = 0 self.opState = 0 # 0-disabled, 1-enabled, 2-disabling, 3-unavailable, 5-warning self.accPitch = 0. self.accRoll = 0. self.accYaw = 0. self.magPitch = 0. self.magRoll = 0. self.magYaw = 0. self.gyroPitch = 0. self.gyroRoll = 0. self.gyroYaw = 0. self.set_speed_limit_active = False self.speed_limit_offset = 0.
def __init__(self, dbc_name, car_fingerprint, enable_camera, enable_dsu, enable_apg): self.braking = False # redundant safety check with the board self.controls_allowed = True self.last_steer = 0 self.last_angle = 0 self.accel_steady = 0. self.car_fingerprint = car_fingerprint self.alert_active = False self.last_standstill = False self.standstill_req = False self.angle_control = False self.steer_angle_enabled = False self.ipas_reset_counter = 0 self.last_fault_frame = -200 self.fake_ecus = set() if enable_camera: self.fake_ecus.add(ECU.CAM) if enable_dsu: self.fake_ecus.add(ECU.DSU) if enable_apg: self.fake_ecus.add(ECU.APGS) self.ALCA = ALCAController( self, True, False) # Enabled True and SteerByAngle only False self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, car_fingerprint, enable_camera): self.apply_steer_last = 0 self.turning_signal_timer = 0 self.car_fingerprint = car_fingerprint self.lkas11_cnt = 0 self.mdps12_cnt = 0 self.cnt = 0 self.last_resume_cnt = 0 self.map_speed = 0 self.enable_camera = enable_camera # True when camera present, and we need to replace all the camera messages # otherwise we forward the camera msgs and we just replace the lkas cmd signals self.camera_disconnected = False self.packer = CANPacker(dbc_name) context = zmq.Context() self.params = Params() self.map_data_sock = messaging.sub_sock( context, service_list['liveMapData'].port, conflate=True) self.speed_conv = 3.6 self.speed_adjusted = False self.checksum = "NONE" self.checksum_learn_cnt = 0 self.en_cnt = 0 self.apply_steer_ang = 0.0 self.en_spas = 3 self.mdps11_stat_last = 0 self.lkas = False self.spas_present = True # TODO Make Automatic self.ALCA = ALCAController( self, True, False) # Enabled True and SteerByAngle only False
def test_hud(self): packer = CANPacker('chrysler_pacifica_2017_hybrid') self.assertEqual( [0x2a6, 0, '0100010100000000'.decode('hex'), 0], chryslercan.create_lkas_hud( packer, 'park', False, False, 1, 0)) self.assertEqual( [0x2a6, 0, '0100010000000000'.decode('hex'), 0], chryslercan.create_lkas_hud( packer, 'park', False, False, 5*4, 0)) self.assertEqual( [0x2a6, 0, '0100010000000000'.decode('hex'), 0], chryslercan.create_lkas_hud( packer, 'park', False, False, 99999, 0)) self.assertEqual( [0x2a6, 0, '0200060000000000'.decode('hex'), 0], chryslercan.create_lkas_hud( packer, 'drive', True, False, 99999, 0)) self.assertEqual( [0x2a6, 0, '0264060000000000'.decode('hex'), 0], chryslercan.create_lkas_hud( packer, 'drive', True, False, 99999, 0x64))
def __init__(self, dbc_name, car_fingerprint): self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.lkas11_cnt = 0 self.clu11_cnt = 0 self.mdps12_cnt = 0 self.cnt = 0 self.last_resume_cnt = 0 self.map_speed = 0 self.map_data_sock = messaging.sub_sock(service_list['liveMapData'].port) self.params = Params() self.speed_conv = 3.6 self.speed_offset = 1.03 # Multiplier for cruise speed vs speed limit TODO: Add to UI self.speed_enable = True # Enable Auto Speed Set TODO: Add to UI self.speed_adjusted = False self.checksum = "NONE" self.checksum_learn_cnt = 0 self.turning_signal_timer = 0 self.camera_disconnected = False self.checksum_found = False self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, car_fingerprint, enable_camera, enable_dsu, enable_apg): self.braking = False # redundant safety check with the board self.controls_allowed = True self.last_steer = 0 self.last_angle = 0 self.accel_steady = 0. self.car_fingerprint = car_fingerprint self.alert_active = False self.last_standstill = False self.standstill_req = False self.angle_control = False self.steer_angle_enabled = False self.ipas_reset_counter = 0 self.last_fault_frame = -200 self.fake_ecus = set() if enable_camera: self.fake_ecus.add(ECU.CAM) if enable_dsu: self.fake_ecus.add(ECU.DSU) if enable_apg: self.fake_ecus.add(ECU.APGS) self.packer = CANPacker(dbc_name) # Openpilot Buttons -- https://github.com/rhinodavid/OpenpilotButtons # used to rate limit sending of ACC Time Gap advance commands self.last_acc_advance_time = 0.
def __init__(self, dbc_name, enable_camera=True): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.new_radar_config = False
def test_hud(self): packer = CANPacker('chrysler_pacifica_2017_hybrid') self.assertEqual([0x2a6, 0, '0000010100000000'.decode('hex'), 0], chryslercan.create_lkas_hud(packer, 'park', False, False, CAR.PACIFICA_2017_HYBRID, 1)) self.assertEqual([0x2a6, 0, '0000010000000000'.decode('hex'), 0], chryslercan.create_lkas_hud(packer, 'park', False, False, CAR.PACIFICA_2017_HYBRID, 5 * 4)) self.assertEqual([0x2a6, 0, '0000000000000000'.decode('hex'), 0], chryslercan.create_lkas_hud(packer, 'park', False, False, CAR.PACIFICA_2017_HYBRID, 99999)) self.assertEqual([0x2a6, 0, '0200060000000000'.decode('hex'), 0], chryslercan.create_lkas_hud(packer, 'drive', True, False, CAR.PACIFICA_2017_HYBRID, 99999)) self.assertEqual([0x2a6, 0, '0264060000000000'.decode('hex'), 0], chryslercan.create_lkas_hud(packer, 'drive', True, False, CAR.PACIFICA_2018, 99999))
def __init__(self, dbc_name, car_fingerprint, enable_camera, enable_dsu, enable_apg): self.braking = False # redundant safety check with the board self.controls_allowed = True self.last_steer = 0 self.last_angle = 0 self.send_new_status = False # indicates we want to send 2a6 when we can. self.prev_2a6 = -9999 # long time ago. self.ccframe = 0 self.accel_steady = 0. self.car_fingerprint = car_fingerprint self.alert_active = False self.last_standstill = False self.standstill_req = False self.angle_control = False self.steer_angle_enabled = False self.ipas_reset_counter = 0 self.fake_ecus = set() if enable_camera: self.fake_ecus.add(ECU.CAM) #if enable_dsu: self.fake_ecus.add(ECU.DSU) #if enable_apg: self.fake_ecus.add(ECU.APGS) self.packer = CANPacker(dbc_name) logging.basicConfig( level=logging.DEBUG, filename="/tmp/chrylog", filemode="a+", format="%(asctime)-15s %(levelname)-8s %(message)s")
def __init__(self, canbus, car_fingerprint): self.pedal_steady = 0. self.start_time = sec_since_boot() self.chime = 0 self.lkas_active = False self.inhibit_steer_for = 0 self.steer_idx = 0 self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.canbus = canbus self.params = CarControllerParams(car_fingerprint) self.packer_pt = CANPacker(DBC[car_fingerprint]['pt']) self.packer_ch = CANPacker(DBC[car_fingerprint]['chassis'])
def __init__(self, dbc_name): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.apply_brake_last = 0 self.last_pump_ts = 0. self.packer = CANPacker(dbc_name) self.new_radar_config = False
def __init__(self, dbc_name, enable_camera=True): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.new_radar_config = False self.ALCA = ALCAController(self,True,False) # Enabled True and SteerByAngle only False
def __init__(self, dbc_name, enable_camera, vehicle_model): self.packer = CANPacker(dbc_name) self.enable_camera = enable_camera self.enabled_last = False self.main_on_last = False self.vehicle_model = vehicle_model self.generic_toggle_last = 0 self.steer_alert_last = False self.lkas_action = 0
def __init__(self, dbc_name): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.apply_brake_last = 0 self.last_pump_on_state = False self.packer = CANPacker(dbc_name) self.new_radar_config = False self.prev_lead_distance = 0.0
def __init__(self, canbus, car_fingerprint, allow_controls): self.pedal_steady = 0. self.start_time = sec_since_boot() self.chime = 0 self.steer_idx = 0 self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.allow_controls = allow_controls self.lka_icon_status_last = (False, False) self.ALCA = ALCAController( self, True, False) # Enabled True and SteerByAngle only False # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.canbus = canbus self.params = CarControllerParams(car_fingerprint) self.packer_pt = CANPacker(DBC[car_fingerprint]['pt']) self.packer_ch = CANPacker(DBC[car_fingerprint]['chassis'])
def __init__(self, dbc_name, car_fingerprint): self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.lkas11_cnt = 0 self.cnt = 0 self.last_resume_cnt = 0 # True when giraffe switch 2 is low and we need to replace all the camera messages # otherwise we forward the camera msgs and we just replace the lkas cmd signals self.camera_disconnected = False self.packer = CANPacker(dbc_name)
def test_subaru(self): # Subuaru is little endian CP = SubaruInterface.get_params(SUBARU_CAR.IMPREZA) signals = [ ("Counter", "ES_LKAS", 0), ("LKAS_Output", "ES_LKAS", 0), ("LKAS_Request", "ES_LKAS", 0), ("SET_1", "ES_LKAS", 0), ] checks = [] parser = CANParser(SUBARU_DBC[CP.carFingerprint]['pt'], signals, checks, 0) packer = CANPacker(SUBARU_DBC[CP.carFingerprint]['pt']) idx = 0 for steer in range(0, 255): for active in [1, 0]: values = { "Counter": idx, "LKAS_Output": steer, "LKAS_Request": active, "SET_1": 1 } msgs = packer.make_can_msg("ES_LKAS", 0, values) bts = can_list_to_can_capnp([msgs]) parser.update_string(bts) self.assertAlmostEqual(parser.vl["ES_LKAS"]["LKAS_Output"], steer) self.assertAlmostEqual(parser.vl["ES_LKAS"]["LKAS_Request"], active) self.assertAlmostEqual(parser.vl["ES_LKAS"]["SET_1"], 1) self.assertAlmostEqual(parser.vl["ES_LKAS"]["Counter"], idx % 16) idx += 1
def test_command(self): packer = CANPacker('chrysler_pacifica_2017_hybrid') self.assertEqual( [0x292, 0, '140000001086'.decode('hex'), 0], chryslercan.create_lkas_command( packer, 0, True, 1)) self.assertEqual( [0x292, 0, '040000008083'.decode('hex'), 0], chryslercan.create_lkas_command( packer, 0, False, 8))
def __init__(self, car_fingerprint): self.lkas_active = False self.steer_idx = 0 self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.es_distance_cnt = -1 self.es_lkas_cnt = -1 # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.params = CarControllerParams(car_fingerprint) self.packer = CANPacker(DBC[car_fingerprint]['pt'])
def __init__(self, dbc_name): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.apply_brake_last = 0 self.last_pump_ts = 0. self.packer = CANPacker(dbc_name) self.new_radar_config = False self.prev_lead_distance = 0.0 self.stopped_lead_distance = 0.0 self.lead_distance_counter = 1 self.lead_distance_counter_prev = 1 self.rough_lead_speed = 0.0
def __init__(self, dbc_name, enable_camera=True): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.epas_disabled = True self.last_angle = 0. self.last_accel = 0. self.ALCA = ALCAController(self, True, True) # Enabled and SteerByAngle both True self.ACC = ACCController() self.PCC = PCCController(self) self.HSO = HSOController(self)
def __init__(self, canbus, car_fingerprint): self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint # Setup detection helper. Routes commands to an appropriate CAN bus number. self.canbus = canbus self.packer_gw = CANPacker(DBC[car_fingerprint]['pt']) self.hcaSameTorqueCount = 0 self.hcaEnabledFrameCount = 0 self.graButtonStatesToSend = None self.graMsgSentCount = 0 self.graMsgStartFramePrev = 0 self.graMsgBusCounterPrev = 0
def __init__(self, dbc_name, enable_camera=True): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.apply_brake_last = 0 self.last_pump_ts = 0 self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.new_radar_config = False #self.params = Params() self.is_metric = Params().get("IsMetric") == "1" if self.is_metric: self.speed_units = 2 else: self.speed_units = 3
def test_civic(self): CP = HondaInterface.get_params(HONDA_CAR.CIVIC) signals = [ ("STEER_TORQUE", "STEERING_CONTROL", 0), ("STEER_TORQUE_REQUEST", "STEERING_CONTROL", 0), ] checks = [] parser = CANParser(HONDA_DBC[CP.carFingerprint]['pt'], signals, checks, 0) packer = CANPacker(HONDA_DBC[CP.carFingerprint]['pt']) idx = 0 for steer in range(0, 255): for active in [1, 0]: values = { "STEER_TORQUE": steer, "STEER_TORQUE_REQUEST": active, } msgs = packer.make_can_msg("STEERING_CONTROL", 0, values, idx) bts = can_list_to_can_capnp([msgs]) parser.update_string(bts) self.assertAlmostEqual( parser.vl["STEERING_CONTROL"]["STEER_TORQUE"], steer) self.assertAlmostEqual( parser.vl["STEERING_CONTROL"]["STEER_TORQUE_REQUEST"], active) self.assertAlmostEqual( parser.vl["STEERING_CONTROL"]["COUNTER"], idx % 4) idx += 1
def __init__(self, dbc_name, car_fingerprint, enable_camera): self.braking = False self.controls_allowed = True self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.angle_control = False self.idx = 0 self.lkas_request = 0 self.lanes = 0 self.steer_angle_enabled = False self.ipas_reset_counter = 0 self.turning_inhibit = 0 self.hide_lkas_fault = 180 print self.car_fingerprint self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, car_fingerprint, enable_camera): self.braking = False # redundant safety check with the board self.controls_allowed = True self.apply_steer_last = 0 self.ccframe = 0 self.prev_frame = -1 self.car_fingerprint = car_fingerprint self.alert_active = False self.send_chime = False self.fake_ecus = set() if enable_camera: self.fake_ecus.add(ECU.CAM) self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, car_fingerprint, enable_camera=True): self.braking = False self.brake_steady = 0. self.brake_last = 0. self.enable_camera = enable_camera self.packer = CANPacker(dbc_name) self.new_radar_config = False self.car_fingerprint = car_fingerprint #2018.09.06 12:06AM borrow from subaru carcontroller.py # 2018.09.06 12:09AM borrow from subaru carcontroller.py # Setup detection helper. Routes commands to # an appropriate CAN bus number. #self.canbus = canbus self.params = SteerLimitParams( car_fingerprint ) #2018.09.05 define steering paramater limt #TODO to use in code
def __init__(self, car_fingerprint): self.start_time = sec_since_boot() self.lkas_active = False self.steer_idx = 0 self.apply_steer_last = 0 self.car_fingerprint = car_fingerprint self.es_distance_cnt = -1 self.es_lkas_cnt = -1 self.counter = 0 self.ALCA = ALCAController(self,True,False) # Enabled True and SteerByAngle only False # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.params = CarControllerParams(car_fingerprint) print(DBC) self.packer = CANPacker(DBC[car_fingerprint]['pt'])