VW MQB: Longitudinal prereqs (#23004)

old-commit-hash: 819b7a120a
commatwo_master
Jason Young 4 years ago committed by GitHub
parent 3a6413a103
commit b30ff5fd0c
  1. 3
      selfdrive/car/volkswagen/carcontroller.py
  2. 12
      selfdrive/car/volkswagen/carstate.py
  3. 4
      selfdrive/car/volkswagen/interface.py

@ -86,12 +86,13 @@ class CarController():
# FIXME: this entire section is in desperate need of refactoring # FIXME: this entire section is in desperate need of refactoring
if CS.CP.pcmCruise:
if frame > self.graMsgStartFramePrev + P.GRA_VBP_STEP: if frame > self.graMsgStartFramePrev + P.GRA_VBP_STEP:
if not enabled and CS.out.cruiseState.enabled: if not enabled and CS.out.cruiseState.enabled:
# Cancel ACC if it's engaged with OP disengaged. # Cancel ACC if it's engaged with OP disengaged.
self.graButtonStatesToSend = BUTTON_STATES.copy() self.graButtonStatesToSend = BUTTON_STATES.copy()
self.graButtonStatesToSend["cancel"] = True self.graButtonStatesToSend["cancel"] = True
elif enabled and CS.out.standstill: elif enabled and CS.esp_hold_confirmation:
# Blip the Resume button if we're engaged at standstill. # Blip the Resume button if we're engaged at standstill.
# FIXME: This is a naive implementation, improve with visiond or radar input. # FIXME: This is a naive implementation, improve with visiond or radar input.
self.graButtonStatesToSend = BUTTON_STATES.copy() self.graButtonStatesToSend = BUTTON_STATES.copy()

@ -27,7 +27,7 @@ class CarState(CarStateBase):
ret.vEgoRaw = float(np.mean([ret.wheelSpeeds.fl, ret.wheelSpeeds.fr, ret.wheelSpeeds.rl, ret.wheelSpeeds.rr])) ret.vEgoRaw = float(np.mean([ret.wheelSpeeds.fl, ret.wheelSpeeds.fr, ret.wheelSpeeds.rl, ret.wheelSpeeds.rr]))
ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw)
ret.standstill = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]) ret.standstill = ret.vEgo < 0.1
# Update steering angle, rate, yaw rate, and driver input torque. VW send # Update steering angle, rate, yaw rate, and driver input torque. VW send
# the sign/direction in a separate signal so they must be recombined. # the sign/direction in a separate signal so they must be recombined.
@ -47,6 +47,7 @@ class CarState(CarStateBase):
ret.gasPressed = ret.gas > 0 ret.gasPressed = ret.gas > 0
ret.brake = pt_cp.vl["ESP_05"]["ESP_Bremsdruck"] / 250.0 # FIXME: this is pressure in Bar, not sure what OP expects ret.brake = pt_cp.vl["ESP_05"]["ESP_Bremsdruck"] / 250.0 # FIXME: this is pressure in Bar, not sure what OP expects
ret.brakePressed = bool(pt_cp.vl["ESP_05"]["ESP_Fahrer_bremst"]) ret.brakePressed = bool(pt_cp.vl["ESP_05"]["ESP_Fahrer_bremst"])
self.esp_hold_confirmation = pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]
# Update gear and/or clutch position data. # Update gear and/or clutch position data.
if trans_type == TransmissionType.automatic: if trans_type == TransmissionType.automatic:
@ -94,13 +95,13 @@ class CarState(CarStateBase):
ret.stockAeb = bool(ext_cp.vl["ACC_10"]["ANB_Teilbremsung_Freigabe"]) or bool(ext_cp.vl["ACC_10"]["ANB_Zielbremsung_Freigabe"]) ret.stockAeb = bool(ext_cp.vl["ACC_10"]["ANB_Teilbremsung_Freigabe"]) or bool(ext_cp.vl["ACC_10"]["ANB_Zielbremsung_Freigabe"])
# Update ACC radar status. # Update ACC radar status.
accStatus = pt_cp.vl["TSK_06"]["TSK_Status"] self.tsk_status = pt_cp.vl["TSK_06"]["TSK_Status"]
if accStatus == 2: if self.tsk_status == 2:
# ACC okay and enabled, but not currently engaged # ACC okay and enabled, but not currently engaged
ret.cruiseState.available = True ret.cruiseState.available = True
ret.cruiseState.enabled = False ret.cruiseState.enabled = False
elif accStatus in [3, 4, 5]: elif self.tsk_status in [3, 4, 5]:
# ACC okay and enabled, currently engaged and regulating speed (3) or engaged with driver accelerating (4) or overrun (5) # ACC okay and enabled, currently regulating speed (3) or driver accel override (4) or overrun coast-down (5)
ret.cruiseState.available = True ret.cruiseState.available = True
ret.cruiseState.enabled = True ret.cruiseState.enabled = True
else: else:
@ -110,6 +111,7 @@ class CarState(CarStateBase):
# Update ACC setpoint. When the setpoint is zero or there's an error, the # Update ACC setpoint. When the setpoint is zero or there's an error, the
# radar sends a set-speed of ~90.69 m/s / 203mph. # radar sends a set-speed of ~90.69 m/s / 203mph.
if self.CP.pcmCruise:
ret.cruiseState.speed = ext_cp.vl["ACC_02"]["ACC_Wunschgeschw"] * CV.KPH_TO_MS ret.cruiseState.speed = ext_cp.vl["ACC_02"]["ACC_Wunschgeschw"] * CV.KPH_TO_MS
if ret.cruiseState.speed > 90: if ret.cruiseState.speed > 90:
ret.cruiseState.speed = 0 ret.cruiseState.speed = 0

@ -43,7 +43,7 @@ class CarInterface(CarInterfaceBase):
else: else:
ret.networkLocation = NetworkLocation.fwdCamera ret.networkLocation = NetworkLocation.fwdCamera
# Global tuning defaults, can be overridden per-vehicle # Global lateral tuning defaults, can be overridden per-vehicle
ret.steerActuatorDelay = 0.05 ret.steerActuatorDelay = 0.05
ret.steerRateCost = 1.0 ret.steerRateCost = 1.0
@ -190,6 +190,8 @@ class CarInterface(CarInterfaceBase):
# Vehicle health and operation safety checks # Vehicle health and operation safety checks
if self.CS.parkingBrakeSet: if self.CS.parkingBrakeSet:
events.add(EventName.parkBrake) events.add(EventName.parkBrake)
if self.CS.tsk_status in [6, 7]:
events.add(EventName.accFaulted)
# Low speed steer alert hysteresis logic # Low speed steer alert hysteresis logic
if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.): if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.):

Loading…
Cancel
Save