lkas
parent
2c5f9fc3b1
commit
5f0e080a6a
2
cereal
2
cereal
|
@ -1 +1 @@
|
||||||
Subproject commit 279311d0bde60e814a697da22c55c6abe8a3b03c
|
Subproject commit 28d458a9af49b38bd0a9052f09fbe927324320fb
|
|
@ -1 +1 @@
|
||||||
Subproject commit 94066cb2b4ad5f2bcb8e33ce02fe15a73a00aace
|
Subproject commit dec99a0f77328f7a9f104020d98d7227345d1288
|
2
panda
2
panda
|
@ -1 +1 @@
|
||||||
Subproject commit 234e436e93f4dbd084fd912fe9b10d504ca9882e
|
Subproject commit c2af3c95660c8f129ec7a487bc456b3450b5537e
|
|
@ -49,11 +49,9 @@ class CarController():
|
||||||
def update(self, c, enabled, CS, frame, actuators, pcm_cancel_cmd, visual_alert, hud_speed,
|
def update(self, c, enabled, CS, frame, actuators, pcm_cancel_cmd, visual_alert, hud_speed,
|
||||||
left_lane, right_lane, left_lane_depart, right_lane_depart):
|
left_lane, right_lane, left_lane_depart, right_lane_depart):
|
||||||
|
|
||||||
if self.CP.carFingerprint == CAR.KIA_EV6:
|
|
||||||
return actuators.copy(), []
|
|
||||||
|
|
||||||
# Steering Torque
|
# Steering Torque
|
||||||
new_steer = int(round(actuators.steer * self.p.STEER_MAX))
|
#new_steer = int(round(actuators.steer * self.p.STEER_MAX))
|
||||||
|
new_steer = int(round(actuators.steer * 150))
|
||||||
apply_steer = apply_std_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorque, self.p)
|
apply_steer = apply_std_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorque, self.p)
|
||||||
self.steer_rate_limited = new_steer != apply_steer
|
self.steer_rate_limited = new_steer != apply_steer
|
||||||
|
|
||||||
|
@ -69,6 +67,27 @@ class CarController():
|
||||||
process_hud_alert(enabled, self.CP.carFingerprint, visual_alert,
|
process_hud_alert(enabled, self.CP.carFingerprint, visual_alert,
|
||||||
left_lane, right_lane, left_lane_depart, right_lane_depart)
|
left_lane, right_lane, left_lane_depart, right_lane_depart)
|
||||||
|
|
||||||
|
|
||||||
|
if self.CP.carFingerprint == CAR.KIA_EV6:
|
||||||
|
ret = []
|
||||||
|
|
||||||
|
# steering control
|
||||||
|
values = {
|
||||||
|
"LDW_STATUS": 3,
|
||||||
|
"TORQUE_REQUEST": apply_steer,
|
||||||
|
"NEW_SIGNAL_1": 6,
|
||||||
|
"STEER_REQ": 1 if lkas_active else 0,
|
||||||
|
"STEER_REQ_2": 1 if lkas_active else 0,
|
||||||
|
"STEER_REQ_3": 1 if lkas_active else 0,
|
||||||
|
}
|
||||||
|
ret.append(self.packer.make_can_msg("LKAS", 4, values, frame % 255))
|
||||||
|
|
||||||
|
new_actuators = actuators.copy()
|
||||||
|
new_actuators.steer = apply_steer / self.p.STEER_MAX
|
||||||
|
|
||||||
|
return new_actuators, ret
|
||||||
|
|
||||||
|
|
||||||
can_sends = []
|
can_sends = []
|
||||||
|
|
||||||
# tester present - w/ no response (keeps radar disabled)
|
# tester present - w/ no response (keeps radar disabled)
|
||||||
|
|
|
@ -47,7 +47,7 @@ def get_can_parser_ev6(CP):
|
||||||
("DOORS_SEATBELTS", 0),
|
("DOORS_SEATBELTS", 0),
|
||||||
]
|
]
|
||||||
|
|
||||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 4)
|
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 5)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -227,6 +227,12 @@ class CarInterface(CarInterfaceBase):
|
||||||
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.noOutput),
|
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.noOutput),
|
||||||
get_safety_config(car.CarParams.SafetyModel.allOutput, 1)]
|
get_safety_config(car.CarParams.SafetyModel.allOutput, 1)]
|
||||||
|
|
||||||
|
ret.lateralTuning.pid.kf = 0.00005
|
||||||
|
tire_stiffness_factor = 0.65
|
||||||
|
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
|
||||||
|
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
|
||||||
|
|
||||||
|
|
||||||
# Genesis
|
# Genesis
|
||||||
elif candidate == CAR.GENESIS_G70:
|
elif candidate == CAR.GENESIS_G70:
|
||||||
ret.lateralTuning.init('indi')
|
ret.lateralTuning.init('indi')
|
||||||
|
|
|
@ -257,8 +257,8 @@ class Controls:
|
||||||
else:
|
else:
|
||||||
safety_mismatch = pandaState.safetyModel not in IGNORED_SAFETY_MODES
|
safety_mismatch = pandaState.safetyModel not in IGNORED_SAFETY_MODES
|
||||||
|
|
||||||
if safety_mismatch or self.mismatch_counter >= 200:
|
#if safety_mismatch or self.mismatch_counter >= 200:
|
||||||
self.events.add(EventName.controlsMismatch)
|
# self.events.add(EventName.controlsMismatch)
|
||||||
|
|
||||||
if log.PandaState.FaultType.relayMalfunction in pandaState.faults:
|
if log.PandaState.FaultType.relayMalfunction in pandaState.faults:
|
||||||
self.events.add(EventName.relayMalfunction)
|
self.events.add(EventName.relayMalfunction)
|
||||||
|
|
|
@ -109,11 +109,6 @@ def main() -> NoReturn:
|
||||||
cloudlog.info(f"Resetting panda {panda.get_usb_serial()}")
|
cloudlog.info(f"Resetting panda {panda.get_usb_serial()}")
|
||||||
panda.reset()
|
panda.reset()
|
||||||
|
|
||||||
if panda.has_canfd():
|
|
||||||
for bus in range(3):
|
|
||||||
panda.set_can_speed_kbps(bus, 500)
|
|
||||||
panda.set_can_data_speed_kbps(bus, 2000)
|
|
||||||
|
|
||||||
# sort pandas to have deterministic order
|
# sort pandas to have deterministic order
|
||||||
pandas.sort(key=cmp_to_key(panda_sort_cmp))
|
pandas.sort(key=cmp_to_key(panda_sort_cmp))
|
||||||
panda_serials = list(map(lambda p: p.get_usb_serial(), pandas))
|
panda_serials = list(map(lambda p: p.get_usb_serial(), pandas))
|
||||||
|
|
Loading…
Reference in New Issue