|
|
|
@ -5,41 +5,40 @@ from selfdrive.car import dbc_dict |
|
|
|
|
Ecu = car.CarParams.Ecu |
|
|
|
|
|
|
|
|
|
class CarControllerParams(): |
|
|
|
|
def __init__(self): |
|
|
|
|
self.STEER_MAX = 300 |
|
|
|
|
self.STEER_STEP = 2 # how often we update the steer cmd |
|
|
|
|
self.STEER_DELTA_UP = 7 # ~0.75s time to peak torque (255/50hz/0.75s) |
|
|
|
|
self.STEER_DELTA_DOWN = 17 # ~0.3s from peak torque to zero |
|
|
|
|
self.MIN_STEER_SPEED = 3. |
|
|
|
|
self.STEER_DRIVER_ALLOWANCE = 50 # allowed driver torque before start limiting |
|
|
|
|
self.STEER_DRIVER_MULTIPLIER = 4 # weight driver torque heavily |
|
|
|
|
self.STEER_DRIVER_FACTOR = 100 # from dbc |
|
|
|
|
self.NEAR_STOP_BRAKE_PHASE = 0.5 # m/s, more aggressive braking near full stop |
|
|
|
|
STEER_MAX = 300 # Safety limit, not LKA max. Trucks use 600. |
|
|
|
|
STEER_STEP = 2 # control frames per command |
|
|
|
|
STEER_DELTA_UP = 7 |
|
|
|
|
STEER_DELTA_DOWN = 17 |
|
|
|
|
MIN_STEER_SPEED = 3. # m/s |
|
|
|
|
STEER_DRIVER_ALLOWANCE = 50 |
|
|
|
|
STEER_DRIVER_MULTIPLIER = 4 |
|
|
|
|
STEER_DRIVER_FACTOR = 100 |
|
|
|
|
NEAR_STOP_BRAKE_PHASE = 0.5 # m/s |
|
|
|
|
|
|
|
|
|
# Takes case of "Service Adaptive Cruise" and "Service Front Camera" |
|
|
|
|
# dashboard messages. |
|
|
|
|
self.ADAS_KEEPALIVE_STEP = 100 |
|
|
|
|
self.CAMERA_KEEPALIVE_STEP = 100 |
|
|
|
|
# Heartbeat for dash "Service Adaptive Cruise" and "Service Front Camera" |
|
|
|
|
ADAS_KEEPALIVE_STEP = 100 |
|
|
|
|
CAMERA_KEEPALIVE_STEP = 100 |
|
|
|
|
|
|
|
|
|
# pedal lookups, only for Volt |
|
|
|
|
MAX_GAS = 3072 # Only a safety limit |
|
|
|
|
ZERO_GAS = 2048 |
|
|
|
|
MAX_BRAKE = 350 # Should be around 3.5m/s^2, including regen |
|
|
|
|
# Volt gasbrake lookups |
|
|
|
|
MAX_GAS = 3072 # Safety limit, not ACC max. Stock ACC >4096 from standstill. |
|
|
|
|
ZERO_GAS = 2048 # Coasting |
|
|
|
|
MAX_BRAKE = 350 # ~ -3.5 m/s^2 with regen |
|
|
|
|
|
|
|
|
|
self.ACCEL_MAX = 2.0 # m/s^2 |
|
|
|
|
# Allow small margin below -3.5 m/s^2 from ISO 15622:2018 since we |
|
|
|
|
# perform the closed loop control, and might need some |
|
|
|
|
# to apply some more braking if we're on a downhill slope. |
|
|
|
|
# Our controller should still keep the 2 second average above |
|
|
|
|
# -3.5 m/s^2 as per planner limits |
|
|
|
|
ACCEL_MAX = 2. # m/s^2 |
|
|
|
|
ACCEL_MIN = -4. # m/s^2 |
|
|
|
|
|
|
|
|
|
# Allow small margin below -3.5 m/s^2 from ISO 15622:2018 since we |
|
|
|
|
# perform the closed loop control, and might need some |
|
|
|
|
# to apply some more braking if we're on a downhill slope. |
|
|
|
|
# Our controller should still keep the 2 second average above |
|
|
|
|
# -3.5 m/s^2 as per planner limits |
|
|
|
|
self.ACCEL_MIN = -4.0 # m/s^2 |
|
|
|
|
MAX_ACC_REGEN = 1404 # Max ACC regen is slightly less than max paddle regen |
|
|
|
|
GAS_LOOKUP_BP = [-1., 0., ACCEL_MAX] |
|
|
|
|
GAS_LOOKUP_V = [MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] |
|
|
|
|
BRAKE_LOOKUP_BP = [ACCEL_MIN, -1.] |
|
|
|
|
BRAKE_LOOKUP_V = [MAX_BRAKE, 0.] |
|
|
|
|
|
|
|
|
|
self.MAX_ACC_REGEN = 1404 # ACC Regen braking is slightly less powerful than max regen paddle |
|
|
|
|
self.GAS_LOOKUP_BP = [-1.0, 0., self.ACCEL_MAX] |
|
|
|
|
self.GAS_LOOKUP_V = [self.MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] |
|
|
|
|
self.BRAKE_LOOKUP_BP = [self.ACCEL_MIN, -1.0] |
|
|
|
|
self.BRAKE_LOOKUP_V = [MAX_BRAKE, 0] |
|
|
|
|
STEER_THRESHOLD = 1.0 |
|
|
|
|
|
|
|
|
|
class CAR: |
|
|
|
|
HOLDEN_ASTRA = "HOLDEN ASTRA RS-V BK 2017" |
|
|
|
@ -109,8 +108,6 @@ FINGERPRINTS = { |
|
|
|
|
}], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
STEER_THRESHOLD = 1.0 |
|
|
|
|
|
|
|
|
|
DBC = { |
|
|
|
|
CAR.HOLDEN_ASTRA: dbc_dict('gm_global_a_powertrain', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis'), |
|
|
|
|
CAR.VOLT: dbc_dict('gm_global_a_powertrain', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis'), |
|
|
|
|