def __init__(self, dbc_name, CP, VM): self.start_time = 0. self.apply_steer_last = 0 self.lka_icon_status_last = (False, False) self.steer_rate_limited = False self.fcw_count = 0 self.params = CarControllerParams() self.packer_pt = CANPacker(DBC[CP.carFingerprint]['pt']) self.packer_obj = CANPacker(DBC[CP.carFingerprint]['radar']) self.packer_ch = CANPacker(DBC[CP.carFingerprint]['chassis']) self.debug_logging = False self.debug_log_time_step = 0.333 self.last_debug_log_t = 0. if self.debug_logging: with open("/data/openpilot/coast_debug.csv", "w") as f: f.write(",".join([ "t", "long plan", "d (m/s)", "v", "vEgo", "v_cruise", "v (mph)", "vEgo (mph)", "v_cruise (mph)", "ttc", "coast gas lockout", "coast brake lockout", "gas in", "brake in", "one-pedal", "coasting enabled", "no f brakes", "gas out", "brake out" ]) + "\n")
def __init__(self, dbc_name, CP, VM): self.CP = CP self.last_angle = 0 self.long_control_counter = 0 self.packer = CANPacker(dbc_name) self.pt_packer = CANPacker(DBC[CP.carFingerprint]['pt']) self.tesla_can = TeslaCAN(self.packer, self.pt_packer)
def __init__(self, dbc_name, CP, VM): self.start_time = 0. self.apply_steer_last = 0 self.lka_icon_status_last = (False, False) self.steer_rate_limited = False self.params = CarControllerParams() self.packer_pt = CANPacker(DBC[CP.carFingerprint]['pt']) self.packer_obj = CANPacker(DBC[CP.carFingerprint]['radar']) self.packer_ch = CANPacker(DBC[CP.carFingerprint]['chassis'])
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.packer_pt = CANPacker(DBC[CP.carFingerprint]['pt']) self.acc_bus = CANBUS.pt if CP.networkLocation == NWL.fwdCamera else CANBUS.cam if CP.safetyModel == car.CarParams.SafetyModel.volkswagen: self.create_steering_control = volkswagencan.create_mqb_steering_control self.create_acc_buttons_control = volkswagencan.create_mqb_acc_buttons_control self.create_hud_control = volkswagencan.create_mqb_hud_control elif CP.safetyModel == car.CarParams.SafetyModel.volkswagenPq: self.create_steering_control = volkswagencan.create_pq_steering_control self.create_acc_buttons_control = volkswagencan.create_pq_acc_buttons_control self.create_hud_control = volkswagencan.create_pq_hud_control self.hcaSameTorqueCount = 0 self.hcaEnabledFrameCount = 0 self.graButtonStatesToSend = None self.graMsgSentCount = 0 self.graMsgStartFramePrev = 0 self.graMsgBusCounterPrev = 0 self.steer_rate_limited = False # dp self.last_blinker_on = False self.blinker_end_frame = 0.
def __init__(self, dbc_name, car_fingerprint): self.packer = CANPacker(dbc_name) self.car_fingerprint = car_fingerprint self.accel_steady = 0 self.apply_steer_last = 0 self.steer_rate_limited = False self.lkas11_cnt = 0 self.scc12_cnt = 0 self.resume_cnt = 0 self.last_resume_frame = 0 self.last_lead_distance = 0 self.turning_signal_timer = 0 self.lkas_button = 1 self.lkas_button_last = 0 self.longcontrol = 0 #TODO: make auto self.cnt = 0 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
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.es_distance_cnt = -1 self.es_accel_cnt = -1 self.es_lkas_cnt = -1 self.fake_button_prev = 0 self.steer_rate_limited = False self.throttle_cnt = -1 self.packer = CANPacker(DBC[CP.carFingerprint]['pt']) #self.params = CarControllerParams #SUBARU STOP AND GO flags and vars self.prev_cruise_state = -1 self.cruise_state_change_time = -1 self.sng_throttle_tap_cnt = 0 self.sng_resume_acc = False self.sng_has_recorded_distance = False self.sng_distance_threshold = CarControllerParams.SNG_DISTANCE_LIMIT #SUBARU STOP AND GO - Pre-Global only self.prev_close_distance = -1 #SUBARU NON-EPB self.brake_pedal_cnt = -1 self.prev_standstill = False self.standstill_transition_timestamp = -1 self.sng_send_fake_speed = False
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.apply_steer_last = 0 self.steer_rate_limited = False self.lkas11_cnt = 0 self.scc12_cnt = -1 self.resume_cnt = 0 self.last_lead_distance = 0 self.resume_wait_timer = 0 self.turning_signal_timer = 0 self.longcontrol = CP.openpilotLongitudinalControl self.scc_live = not CP.radarOffCan self.turning_indicator_alert = False param = Params() self.mad_mode_enabled = param.get_bool('MadModeEnabled') self.ldws_opt = param.get_bool('IsLdwsCar') self.stock_navi_decel_enabled = param.get_bool('StockNaviDecelEnabled') self.keep_steering_turn_signals = param.get_bool( 'KeepSteeringTurnSignals') self.warning_over_speed_limit = param.get_bool('WarningOverSpeedLimit') # gas_factor, brake_factor # Adjust it in the range of 0.7 to 1.3 self.scc_smoother = SccSmoother() self.last_blinker_frame = 0
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) self.steer_rate_limited = 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 test_civic(self): dbc_file = "honda_civic_touring_2016_can_generated" signals = [ ("STEER_TORQUE", "STEERING_CONTROL", 0), ("STEER_TORQUE_REQUEST", "STEERING_CONTROL", 0), ] checks = [("STEERING_CONTROL", 50)] parser = CANParser(dbc_file, signals, checks, 0) packer = CANPacker(dbc_file) idx = 0 for steer in range(-256, 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, CP, VM): self.last_steer = 0 self.accel_steady = 0. self.alert_active = False self.last_standstill = False self.standstill_req = False self.last_fault_frame = -200 self.steer_rate_limited = False self.fake_ecus = set() if CP.enableCamera: self.fake_ecus.add(Ecu.fwdCamera) if CP.enableDsu: self.fake_ecus.add(Ecu.dsu) self.packer = CANPacker(dbc_name) # dp self.dragon_enable_steering_on_signal = False self.dragon_lat_ctrl = True self.dragon_lane_departure_warning = True self.dragon_toyota_sng_mod = False self.dp_last_modified = None self.last_blinker_on = False self.blinker_end_frame = 0 self.dragon_blinker_off_timer = 0.
def __init__(self, dbc_name, CP, VM): self.last_steer = 0 self.accel_steady = 0. self.alert_active = False self.last_standstill = False self.standstill_req = False self.standstill_hack = opParams().get('standstill_hack') self.steer_rate_limited = False self.fake_ecus = set() if CP.enableCamera: self.fake_ecus.add(Ecu.fwdCamera) if CP.enableDsu: self.fake_ecus.add(Ecu.dsu) self.packer = CANPacker(dbc_name) self.lead_v = 100 self.lead_a = 0 self.lead_d = 250 self.sm = messaging.SubMaster(['radarState', 'controlsState']) #self.sm = messaging.SubMaster(['radarState']) self.LCS = ""
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.accel_steady = 0 self.apply_steer_last = 0 self.steer_rate_limited = False self.lkas11_cnt = 0 self.scc12_cnt = 0 self.resume_cnt = 0 self.last_lead_distance = 0 self.resume_wait_timer = 0 self.lanechange_manual_timer = 0 self.emergency_manual_timer = 0 self.driver_steering_torque_above_timer = 0 self.mode_change_timer = 0 self.params = Params() self.mode_change_switch = int(self.params.get('CruiseStatemodeSelInit')) self.opkr_variablecruise = int(self.params.get('OpkrVariableCruise')) self.opkr_autoresume = int(self.params.get('OpkrAutoResume')) self.steer_mode = "" self.mdps_status = "" self.lkas_switch = "" self.timer1 = tm.CTime1000("time") self.SC = Spdctrl() self.model_speed = 0 self.model_sum = 0 self.dRel = 0 self.yRel = 0 self.vRel = 0 self.cruise_gap = 0.0 self.cruise_gap_prev = 0 self.cruise_gap_set_init = 0 self.cruise_gap_switch_timer = 0 self.lkas_button_on = True self.longcontrol = CP.openpilotLongitudinalControl self.scc_live = not CP.radarOffCan if CP.lateralTuning.which() == 'pid': self.str_log2 = 'TUNE={:0.2f}/{:0.3f}/{:0.5f}'.format(CP.lateralTuning.pid.kpV[1], CP.lateralTuning.pid.kiV[1], CP.lateralTuning.pid.kf) elif CP.lateralTuning.which() == 'indi': self.str_log2 = 'TUNE={:03.1f}/{:03.1f}/{:03.1f}/{:03.1f}'.format(CP.lateralTuning.indi.innerLoopGain, CP.lateralTuning.indi.outerLoopGain, CP.lateralTuning.indi.timeConstant, CP.lateralTuning.indi.actuatorEffectiveness) elif CP.lateralTuning.which() == 'lqr': self.str_log2 = 'TUNE={:04.0f}/{:05.3f}/{:06.4f}'.format(CP.lateralTuning.lqr.scale, CP.lateralTuning.lqr.ki, CP.lateralTuning.lqr.dcGain) if CP.spasEnabled: self.en_cnt = 0 self.apply_steer_ang = 0.0 self.en_spas = 3 self.mdps11_stat_last = 0 self.spas_always = False
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.car_fingerprint = CP.carFingerprint self.cp_oplongcontrol = CP.openpilotLongitudinalControl self.packer = CANPacker(dbc_name) self.accel_steady = 0 self.accel_lim_prev = 0. self.accel_lim = 0. self.steer_rate_limited = False self.p = SteerLimitParams(CP) self.usestockscc = True self.lead_visible = False self.lead_debounce = 0 self.gapsettingdance = 2 self.gapcount = 0 self.current_veh_speed = 0 self.lfainFingerprint = CP.lfaAvailable self.vdiff = 0 self.resumebuttoncnt = 0 self.lastresumeframe = 0 self.fca11supcnt = self.fca11inc = self.fca11alivecnt = self.fca11cnt13 = self.scc11cnt = self.scc12cnt = 0 self.counter_init = False self.fca11maxcnt = 0xD self.radarDisableActivated = False self.radarDisableResetTimer = 0 self.radarDisableOverlapTimer = 0 self.sendaccmode = not CP.radarDisablePossible self.enabled = False self.sm = messaging.SubMaster(['controlsState']) self.lanechange_manual_timer = 0 self.emergency_manual_timer = 0 self.driver_steering_torque_above_timer = 0
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.lkas_max_torque = 0 self.last_angle = 0 self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.prev_frame = -1 self.lkas_frame = -1 self.prev_lkas_counter = -1 self.hud_count = 0 self.car_fingerprint = CP.carFingerprint self.torq_enabled = False self.steer_rate_limited = False self.last_button_counter = -1 self.button_frame = -1 self.packer = CANPacker(dbc_name) self.params = Params() self.cachedParams = CachedParams() self.opParams = opParams() self.auto_resume = self.params.get_bool('jvePilot.settings.autoResume') self.minAccSetting = V_CRUISE_MIN_MS if self.params.get_bool( "IsMetric") else V_CRUISE_MIN_IMPERIAL_MS self.round_to_unit = CV.MS_TO_KPH if self.params.get_bool( "IsMetric") else CV.MS_TO_MPH self.autoFollowDistanceLock = None self.moving_fast = False self.min_steer_check = self.opParams.get("steer.checkMinimum")
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.apply_steer_last = 0 self.accel = 0 self.lkas11_cnt = 0 self.scc12_cnt = -1 self.resume_cnt = 0 self.last_lead_distance = 0 self.resume_wait_timer = 0 self.turning_signal_timer = 0 self.longcontrol = CP.openpilotLongitudinalControl self.scc_live = not CP.radarOffCan self.turning_indicator_alert = False param = Params() self.mad_mode_enabled = param.get_bool('MadModeEnabled') self.ldws_opt = param.get_bool('IsLdwsCar') self.stock_navi_decel_enabled = param.get_bool('StockNaviDecelEnabled') self.keep_steering_turn_signals = param.get_bool( 'KeepSteeringTurnSignals') self.haptic_feedback_speed_camera = param.get_bool( 'HapticFeedbackWhenSpeedCamera') self.scc_smoother = SccSmoother() self.last_blinker_frame = 0 self.prev_active_cam = False self.active_cam_timer = 0
def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.steer_rate_limited = False # resume self.resume_cnt = 0 self.last_resume_frame = 0 self.last_lead_distance = 0 self.lkas11_cnt = 0 # hud self.hud_timer_left = 0 self.hud_timer_right = 0 self.enable_time = 0 self.steer_torque_over_timer = 0 self.steer_torque_ratio = 1 self.timer1 = tm.CTime1000("time") self.SC = SpdctrlSlow() self.model_speed = 0 self.model_sum = 0
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.car_fingerprint = CP.carFingerprint self.cp_oplongcontrol = CP.openpilotLongitudinalControl self.packer = CANPacker(dbc_name) self.accel_steady = 0 self.steer_rate_limited = False self.usestockscc = True self.lead_visible = False self.lead_debounce = 0 self.apply_accel_last = 0 self.gapsettingdance = 2 self.gapcount = 0 self.current_veh_speed = 0 self.lfainFingerprint = CP.lfaAvailable self.vdiff = 0 self.resumebuttoncnt = 0 self.lastresumeframe = 0 self.scc12cnt = 0 self.smartspeed = 20. self.recordsetspeed = 20. self.setspeed = 0. self.button_cnt = 0 self.last_button_frame = 0 self.stopcontrolupdate = False self.last_button_frame = 0 self.button_set_stop = self.button_res_stop = 0 self.sm = messaging.SubMaster(['radarState'])
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.steer_rate_limited = False self.fake_ecus = set() if enable_camera: self.fake_ecus.add(Ecu.fwdCamera) if enable_dsu: self.fake_ecus.add(Ecu.dsu) if enable_apg: self.fake_ecus.add(Ecu.apgs) self.packer = CANPacker(dbc_name)
def test_parser_can_valid(self): signals = [ ("COUNTER", "CAN_FD_MESSAGE"), ] checks = [ ("CAN_FD_MESSAGE", 10), ] packer = CANPacker(TEST_DBC) parser = CANParser(TEST_DBC, signals, checks, 0) # shouldn't be valid initially self.assertFalse(parser.can_valid) # not valid until the message is seen for _ in range(100): dat = can_list_to_can_capnp([]) parser.update_string(dat) self.assertFalse(parser.can_valid) # valid once seen for i in range(1, 100): t = int(0.01 * i * 1e9) msg = packer.make_can_msg("CAN_FD_MESSAGE", 0, {}) dat = can_list_to_can_capnp([ msg, ], logMonoTime=t) parser.update_string(dat) self.assertTrue(parser.can_valid)
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.accel_steady = 0 self.apply_steer_last = 0 self.steer_rate_limited = False self.lkas11_cnt = 0 self.scc12_cnt = -1 self.resume_cnt = 0 self.last_lead_distance = 0 self.resume_wait_timer = 0 self.turning_signal_timer = 0 self.longcontrol = CP.openpilotLongitudinalControl self.scc_live = not CP.radarOffCan self.mad_mode_enabled = Params().get_bool('MadModeEnabled') self.ldws_opt = Params().get_bool('IsLdwsCar') self.stock_navi_decel_enabled = Params().get_bool( 'StockNaviDecelEnabled') # gas_factor, brake_factor # Adjust it in the range of 0.7 to 1.3 self.scc_smoother = SccSmoother()
def __init__(self, dbc_name, CP, VM): self.car_fingerprint = CP.carFingerprint self.packer = CANPacker(dbc_name) self.accel_steady = 0 self.apply_steer_last = 0 self.steer_rate_limited = False self.lkas11_cnt = 0 self.scc12_cnt = 0 self.resume_cnt = 0 self.last_lead_distance = 0 self.resume_wait_timer = 0 self.turning_signal_timer = 0 self.longcontrol = CP.openpilotLongitudinalControl self.scc_live = not CP.radarOffCan if CP.spasEnabled: self.en_cnt = 0 self.apply_steer_ang = 0.0 self.en_spas = 3 self.mdps11_stat_last = 0 self.spas_always = False self.scc_smoother = SccSmoother(accel_gain=1.0, decel_gain=1.0, curvature_gain=0.8)
def test_honda_checksum(self): """Test checksums for Honda standard and extended CAN ids""" dbc_file = "honda_accord_2018_can_generated" signals = [ ("CHECKSUM", "LKAS_HUD"), ("CHECKSUM", "LKAS_HUD_A"), ] checks = [("LKAS_HUD", 0), ("LKAS_HUD_A", 0)] parser = CANParser(dbc_file, signals, checks, 0) packer = CANPacker(dbc_file) values = { 'SET_ME_X41': 0x41, 'STEERING_REQUIRED': 1, 'SOLID_LANES': 1, 'BEEP': 0, } # known correct checksums according to the above values checksum_std = [11, 10, 9, 8] checksum_ext = [4, 3, 2, 1] for std, ext in zip(checksum_std, checksum_ext): msgs = [ packer.make_can_msg("LKAS_HUD", 0, values), packer.make_can_msg("LKAS_HUD_A", 0, values), ] can_strings = [can_list_to_can_capnp(msgs), ] parser.update_strings(can_strings) self.assertEqual(parser.vl['LKAS_HUD']['CHECKSUM'], std) self.assertEqual(parser.vl['LKAS_HUD_A']['CHECKSUM'], ext)
def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 self.packer = CANPacker(dbc_name) self.steer_rate_limited = False self.brake_counter = 0 self.frame = 0
def __init__(self, dbc_name, CP, VW): # state self.acc_enabled_prev = 0 # steering related self.angle_request_prev = 0 # Direction change statemachine self.UNBLOCKED = 0 self.BLOCKED = 1 self.BLOCK_LEN = CCP.BLOCK_LEN # Block steer direction change for x samples self.dir_state = 0 self.block_steering = 0 self.steer_direction_bf_block = 0 self.des_steer_direction_prev = 0 # SteerCommand self.SteerCommand = SteerCommand self.trq_fifo = deque([]) self.fault_frame = -200 # Diag self.doDTCRequests = True # Turn on and off DTC requests self.checkPN = False # Check partnumbers self.clearDtcs = False # Set false to stop sending diagnostic requests self.timeout = 0 # Set to 0 as init self.diagRequest = { "byte0": 0x03, "byte1": 0x19, "byte2": 0x02, "byte3": 0x02, } self.flowControl = { "byte0": 0x30, "byte1": 0x00, "byte2": 0x00, "byte3": 0x00, } self.clearDTC = { "byte0": 0x04, "byte1": 0x14, "byte2": 0xFF, "byte3": 0xFF, "byte4": 0xFF, } # Part number self.cnt = 0 # Init at 0 always self.sndNxtFrame = 0 # Init at low value self.dictKeys = ["byte"+str(x) for x in range(8)] startdid = 0xf1a1 # Start with this DID (Data IDentifier, read UDS Spec for more info) self.dids = [x for x in range(startdid, startdid+9)] # Setup detection helper. Routes commands to # an appropriate CAN bus number. self.CP = CP self.packer = CANPacker(DBC[CP.carFingerprint]['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
def __init__(self, dbc_name, CP, VM): self.last_steer = 0 self.alert_active = False self.last_standstill = False self.standstill_req = False self.steer_rate_limited = False self.packer = CANPacker(dbc_name)
def __init__(self, dbc_name, CP, VM): self.apply_steer_last = 0 self.car_fingerprint = CP.carFingerprint self.lkas11_cnt = 0 self.cnt = 0 self.last_resume_cnt = 0 self.packer = CANPacker(dbc_name) self.steer_rate_limited = False
def __init__(self, dbc_name, CP, VM): self.packer = CANPacker(dbc_name) self.enabled_last = False self.main_on_last = False self.vehicle_model = VM self.generic_toggle_last = 0 self.steer_alert_last = False self.lkas_action = 0
def __init__(self, dbc_name, CP, VM): self.p = CarControllerParams(CP) self.packer = CANPacker(dbc_name) self.apply_steer_last = 0 self.car_fingerprint = CP.carFingerprint self.steer_rate_limited = False self.last_resume_frame = 0