|
|
|
# functions common among cars
|
|
|
|
from common.numpy_fast import clip
|
|
|
|
|
|
|
|
|
|
|
|
def dbc_dict(pt_dbc, radar_dbc, chassis_dbc=None):
|
|
|
|
return {'pt': pt_dbc, 'radar': radar_dbc, 'chassis': chassis_dbc}
|
|
|
|
|
|
|
|
|
|
|
|
def apply_std_steer_torque_limits(apply_torque, apply_torque_last, driver_torque, LIMITS):
|
|
|
|
|
|
|
|
# limits due to driver torque
|
|
|
|
driver_max_torque = LIMITS.STEER_MAX + (LIMITS.STEER_DRIVER_ALLOWANCE + driver_torque * LIMITS.STEER_DRIVER_FACTOR) * LIMITS.STEER_DRIVER_MULTIPLIER
|
|
|
|
driver_min_torque = -LIMITS.STEER_MAX + (-LIMITS.STEER_DRIVER_ALLOWANCE + driver_torque * LIMITS.STEER_DRIVER_FACTOR) * LIMITS.STEER_DRIVER_MULTIPLIER
|
|
|
|
max_steer_allowed = max(min(LIMITS.STEER_MAX, driver_max_torque), 0)
|
|
|
|
min_steer_allowed = min(max(-LIMITS.STEER_MAX, driver_min_torque), 0)
|
|
|
|
apply_torque = clip(apply_torque, min_steer_allowed, max_steer_allowed)
|
|
|
|
|
|
|
|
# slow rate if steer torque increases in magnitude
|
|
|
|
if apply_torque_last > 0:
|
|
|
|
apply_torque = clip(apply_torque, max(apply_torque_last - LIMITS.STEER_DELTA_DOWN, -LIMITS.STEER_DELTA_UP),
|
|
|
|
apply_torque_last + LIMITS.STEER_DELTA_UP)
|
|
|
|
else:
|
|
|
|
apply_torque = clip(apply_torque, apply_torque_last - LIMITS.STEER_DELTA_UP,
|
|
|
|
min(apply_torque_last + LIMITS.STEER_DELTA_DOWN, LIMITS.STEER_DELTA_UP))
|
|
|
|
|
|
|
|
return int(round(apply_torque))
|
|
|
|
|
|
|
|
|
|
|
|
def apply_toyota_steer_torque_limits(apply_torque, apply_torque_last, motor_torque, LIMITS):
|
|
|
|
|
|
|
|
# limits due to comparison of commanded torque VS motor reported torque
|
|
|
|
max_lim = min(max(motor_torque + LIMITS.STEER_ERROR_MAX, LIMITS.STEER_ERROR_MAX), LIMITS.STEER_MAX)
|
|
|
|
min_lim = max(min(motor_torque - LIMITS.STEER_ERROR_MAX, -LIMITS.STEER_ERROR_MAX), -LIMITS.STEER_MAX)
|
|
|
|
|
|
|
|
apply_torque = clip(apply_torque, min_lim, max_lim)
|
|
|
|
|
|
|
|
# slow rate if steer torque increases in magnitude
|
|
|
|
if apply_torque_last > 0:
|
|
|
|
apply_torque = clip(apply_torque,
|
|
|
|
max(apply_torque_last - LIMITS.STEER_DELTA_DOWN, -LIMITS.STEER_DELTA_UP),
|
|
|
|
apply_torque_last + LIMITS.STEER_DELTA_UP)
|
|
|
|
else:
|
|
|
|
apply_torque = clip(apply_torque,
|
|
|
|
apply_torque_last - LIMITS.STEER_DELTA_UP,
|
|
|
|
min(apply_torque_last + LIMITS.STEER_DELTA_DOWN, LIMITS.STEER_DELTA_UP))
|
|
|
|
|
|
|
|
return int(round(apply_torque))
|