|
|
|
@ -85,6 +85,7 @@ class CarController: |
|
|
|
|
if self.CP.openpilotLongitudinalControl: |
|
|
|
|
# Gas/regen, brakes, and UI commands - all at 25Hz |
|
|
|
|
if self.frame % 4 == 0: |
|
|
|
|
stopping = actuators.longControlState == LongCtrlState.stopping |
|
|
|
|
if not CC.longActive: |
|
|
|
|
# ASCM sends max regen when not enabled |
|
|
|
|
self.apply_gas = self.params.INACTIVE_REGEN |
|
|
|
@ -92,6 +93,10 @@ class CarController: |
|
|
|
|
else: |
|
|
|
|
self.apply_gas = int(round(interp(actuators.accel, self.params.GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) |
|
|
|
|
self.apply_brake = int(round(interp(actuators.accel, self.params.BRAKE_LOOKUP_BP, self.params.BRAKE_LOOKUP_V))) |
|
|
|
|
# Don't allow any gas above inactive regen while stopping |
|
|
|
|
# FIXME: brakes aren't applied immediately when enabling at a stop |
|
|
|
|
if stopping: |
|
|
|
|
self.apply_gas = self.params.INACTIVE_REGEN |
|
|
|
|
|
|
|
|
|
idx = (self.frame // 4) % 4 |
|
|
|
|
|
|
|
|
@ -101,7 +106,7 @@ class CarController: |
|
|
|
|
# GM Camera exceptions |
|
|
|
|
# TODO: can we always check the longControlState? |
|
|
|
|
if self.CP.networkLocation == NetworkLocation.fwdCamera: |
|
|
|
|
at_full_stop = at_full_stop and actuators.longControlState == LongCtrlState.stopping |
|
|
|
|
at_full_stop = at_full_stop and stopping |
|
|
|
|
friction_brake_bus = CanBus.POWERTRAIN |
|
|
|
|
|
|
|
|
|
# GasRegenCmdActive needs to be 1 to avoid cruise faults. It describes the ACC state, not actuation |
|
|
|
|