mirror of https://github.com/commaai/openpilot.git
VW: Additional PQ / long control prep (#25427)
* VW: Longitudinal support prep
* minimize diffs
* make common button events function
* update refs
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 1f0a435763
This commit is contained in:
parent
3f420d31e8
commit
7560dd6973
|
@ -71,7 +71,6 @@ class CarController:
|
|||
hud_alert = 0
|
||||
if hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw):
|
||||
hud_alert = self.CCP.LDW_MESSAGES["laneAssistTakeOver"]
|
||||
|
||||
can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, CANBUS.pt, CS.ldw_stock_values, CC.enabled,
|
||||
CS.out.steeringPressed, hud_alert, hud_control))
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@ from cereal import car
|
|||
from common.conversions import Conversions as CV
|
||||
from selfdrive.car.interfaces import CarStateBase
|
||||
from opendbc.can.parser import CANParser
|
||||
from selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocation, TransmissionType, GearShifter, CarControllerParams
|
||||
from selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocation, TransmissionType, GearShifter, \
|
||||
CarControllerParams
|
||||
|
||||
|
||||
class CarState(CarStateBase):
|
||||
|
@ -12,6 +13,20 @@ class CarState(CarStateBase):
|
|||
self.CCP = CarControllerParams(CP)
|
||||
self.button_states = {button.event_type: False for button in self.CCP.BUTTONS}
|
||||
|
||||
def create_button_events(self, pt_cp, buttons):
|
||||
button_events = []
|
||||
|
||||
for button in buttons:
|
||||
state = pt_cp.vl[button.can_addr][button.can_msg] in button.values
|
||||
if self.button_states[button.event_type] != state:
|
||||
event = car.CarState.ButtonEvent.new_message()
|
||||
event.type = button.event_type
|
||||
event.pressed = state
|
||||
button_events.append(event)
|
||||
self.button_states[button.event_type] = state
|
||||
|
||||
return button_events
|
||||
|
||||
def update(self, pt_cp, cam_cp, ext_cp, trans_type):
|
||||
ret = car.CarState.new_message()
|
||||
# Update vehicle speed and acceleration from ABS wheel speeds.
|
||||
|
@ -112,17 +127,8 @@ class CarState(CarStateBase):
|
|||
# Update button states for turn signals and ACC controls, capture all ACC button state/config for passthrough
|
||||
ret.leftBlinker = bool(pt_cp.vl["Blinkmodi_02"]["Comfort_Signal_Left"])
|
||||
ret.rightBlinker = bool(pt_cp.vl["Blinkmodi_02"]["Comfort_Signal_Right"])
|
||||
ret.buttonEvents = self.create_button_events(pt_cp, self.CCP.BUTTONS)
|
||||
self.gra_stock_values = pt_cp.vl["GRA_ACC_01"]
|
||||
buttonEvents = []
|
||||
for button in self.CCP.BUTTONS:
|
||||
state = pt_cp.vl[button.can_addr][button.can_msg] in button.values
|
||||
if self.button_states[button.event_type] != state:
|
||||
event = car.CarState.ButtonEvent.new_message()
|
||||
event.type = button.event_type
|
||||
event.pressed = state
|
||||
buttonEvents.append(event)
|
||||
self.button_states[button.event_type] = state
|
||||
ret.buttonEvents = buttonEvents
|
||||
|
||||
# Additional safety checks performed in CarInterface.
|
||||
ret.espDisabled = pt_cp.vl["ESP_21"]["ESP_Tastung_passiv"] != 0
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
from cereal import car
|
||||
from selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter
|
||||
from selfdrive.car import STD_CARGO_KG, scale_rot_inertia, scale_tire_stiffness, gen_empty_fingerprint, get_safety_config
|
||||
from selfdrive.car import STD_CARGO_KG, create_button_enable_events, scale_rot_inertia, scale_tire_stiffness, \
|
||||
gen_empty_fingerprint, get_safety_config
|
||||
from selfdrive.car.interfaces import CarInterfaceBase
|
||||
from selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter
|
||||
|
||||
|
||||
EventName = car.CarEvent.EventName
|
||||
|
||||
|
@ -52,6 +54,13 @@ class CarInterface(CarInterfaceBase):
|
|||
ret.lateralTuning.pid.kpV = [0.6]
|
||||
ret.lateralTuning.pid.kiV = [0.2]
|
||||
|
||||
# Global longitudinal tuning defaults, can be overridden per-vehicle
|
||||
|
||||
ret.pcmCruise = not ret.openpilotLongitudinalControl
|
||||
ret.longitudinalActuatorDelayUpperBound = 0.5 # s
|
||||
ret.longitudinalTuning.kpV = [0.1]
|
||||
ret.longitudinalTuning.kiV = [0.0]
|
||||
|
||||
# Per-chassis tuning values, override tuning defaults here if desired
|
||||
|
||||
if candidate == CAR.ARTEON_MK1:
|
||||
|
@ -160,7 +169,8 @@ class CarInterface(CarInterfaceBase):
|
|||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType)
|
||||
|
||||
events = self.create_common_events(ret, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic])
|
||||
events = self.create_common_events(ret, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic],
|
||||
pcm_enable=not self.CS.CP.openpilotLongitudinalControl)
|
||||
|
||||
# Low speed steer alert hysteresis logic
|
||||
if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.):
|
||||
|
@ -170,6 +180,13 @@ class CarInterface(CarInterfaceBase):
|
|||
if self.low_speed_alert:
|
||||
events.add(EventName.belowSteerSpeed)
|
||||
|
||||
if self.CS.CP.openpilotLongitudinalControl:
|
||||
if ret.vEgo < self.CP.minEnableSpeed + 2.:
|
||||
events.add(EventName.belowEngageSpeed)
|
||||
if c.enabled and ret.vEgo < self.CP.minEnableSpeed:
|
||||
events.add(EventName.speedTooLow)
|
||||
|
||||
events.events.extend(create_button_enable_events(ret.buttonEvents, pcm_cruise=self.CP.pcmCruise))
|
||||
ret.events = events.to_msg()
|
||||
|
||||
return ret
|
||||
|
|
|
@ -26,9 +26,9 @@ class CarControllerParams:
|
|||
self.STEER_MAX = 300 # Max heading control assist torque 3.00 Nm
|
||||
self.STEER_DRIVER_MULTIPLIER = 3 # weight driver torque heavily
|
||||
self.STEER_DRIVER_FACTOR = 1 # from dbc
|
||||
|
||||
|
||||
can_define = CANDefine(DBC[CP.carFingerprint]["pt"])
|
||||
|
||||
|
||||
if True: # pylint: disable=using-constant-test
|
||||
self.LDW_STEP = 10 # LDW_02 message frequency 10Hz
|
||||
self.STEER_DRIVER_ALLOWANCE = 80 # Driver intervention threshold 0.8 Nm
|
||||
|
|
|
@ -1 +1 @@
|
|||
3c89454df9cf2f25a5759d523a8c595e69865505
|
||||
60aa8580527e513fe25100a348ee4c5971717960
|
Loading…
Reference in New Issue