Skip to content

Commit

Permalink
Remove minSpeedCan (commaai#22991)
Browse files Browse the repository at this point in the history
* Remove minCanSpeed

Remove minCanSpeed

* it actually only goes out to 2.5 seconds, this is okay to remove

* test to see if this preserves behavior

add minSpeedCan

* Revert "test to see if this preserves behavior"

This reverts commit 31b11f0.

* preserve behavior (don't enter stopping as early)

* vEgoStopping needs to be less than or equal to vEgoStarting to avoid state oscillation
  • Loading branch information
sshane authored Dec 14, 2021
1 parent f042962 commit 2799ef5
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 11 deletions.
1 change: 0 additions & 1 deletion selfdrive/car/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ def get_std_params(candidate, fingerprint):
ret.minEnableSpeed = -1. # enable is done by stock ACC, so ignore this
ret.steerRatioRear = 0. # no rear steering, at least on the listed cars aboveA
ret.openpilotLongitudinalControl = False
ret.minSpeedCan = 0.3
ret.startAccel = -0.8
ret.stopAccel = -2.0
ret.startingAccelRate = 3.2 # brake_travel/s while releasing on restart
Expand Down
15 changes: 5 additions & 10 deletions selfdrive/controls/lib/longcontrol.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,17 @@

LongCtrlState = car.CarControl.Actuators.LongControlState

STOPPING_TARGET_SPEED_OFFSET = 0.01

# As per ISO 15622:2018 for all speeds
ACCEL_MIN_ISO = -3.5 # m/s^2
ACCEL_MAX_ISO = 2.0 # m/s^2


def long_control_state_trans(CP, active, long_control_state, v_ego, v_target_future, v_pid,
output_accel, brake_pressed, cruise_standstill, min_speed_can):
def long_control_state_trans(CP, active, long_control_state, v_ego, v_target_future,
output_accel, brake_pressed, cruise_standstill):
"""Update longitudinal control state machine"""
stopping_target_speed = min_speed_can + STOPPING_TARGET_SPEED_OFFSET
stopping_condition = (v_ego < 2.0 and cruise_standstill) or \
(v_ego < CP.vEgoStopping and
((v_pid < stopping_target_speed and v_target_future < stopping_target_speed) or
brake_pressed))
(v_target_future < CP.vEgoStopping or brake_pressed))

starting_condition = v_target_future > CP.vEgoStarting and not cruise_standstill

Expand Down Expand Up @@ -91,8 +87,8 @@ def update(self, active, CS, CP, long_plan, accel_limits):
# Update state machine
output_accel = self.last_output_accel
self.long_control_state = long_control_state_trans(CP, active, self.long_control_state, CS.vEgo,
v_target_future, self.v_pid, output_accel,
CS.brakePressed, CS.cruiseState.standstill, CP.minSpeedCan)
v_target_future, output_accel,
CS.brakePressed, CS.cruiseState.standstill)

if self.long_control_state == LongCtrlState.off or CS.gasPressed:
self.reset(CS.vEgo)
Expand All @@ -119,7 +115,6 @@ def update(self, active, CS, CP, long_plan, accel_limits):
if not CS.standstill or output_accel > CP.stopAccel:
output_accel -= CP.stoppingDecelRate * DT_CTRL
output_accel = clip(output_accel, accel_limits[0], accel_limits[1])

self.reset(CS.vEgo)

# Intention is to move again, release brake fast before handing control to PID
Expand Down

0 comments on commit 2799ef5

Please sign in to comment.