HKG Low Speed Turn Enhancer for EV6/CAN-FD vehicles

This commit is contained in:
Rick Lan
2024-06-19 21:10:38 +08:00
parent f463191213
commit 93d4719bb1
3 changed files with 19 additions and 1 deletions
+1
View File
@@ -228,6 +228,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"dp_toyota_auto_unlock", PERSISTENT},
{"dp_device_disable_onroad_uploads", PERSISTENT},
{"dp_toyota_zss", PERSISTENT},
{"dp_hkg_canfd_low_speed_turn_enhancer", PERSISTENT},
};
} // namespace
+17 -1
View File
@@ -9,6 +9,10 @@ from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus
from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, Buttons, CarControllerParams, CANFD_CAR, CAR
from openpilot.selfdrive.car.interfaces import CarControllerBase
# dp
from dp_ext.selfdrive.car.hyundai.taco_car_controller_params import TacoCarControllerParams
from openpilot.common.params import Params
VisualAlert = car.CarControl.HUDControl.VisualAlert
LongCtrlState = car.CarControl.Actuators.LongControlState
@@ -47,7 +51,11 @@ class CarController(CarControllerBase):
def __init__(self, dbc_name, CP, VM):
self.CP = CP
self.CAN = CanBus(CP)
self.params = CarControllerParams(CP)
self.dp_hkg_canfd_low_speed_turn_enhancer = Params().get_bool("dp_hkg_canfd_low_speed_turn_enhancer")
if self.dp_hkg_canfd_low_speed_turn_enhancer:
self.params = TacoCarControllerParams(CP)
else:
self.params = CarControllerParams(CP)
self.packer = CANPacker(dbc_name)
self.angle_limit_counter = 0
self.frame = 0
@@ -61,10 +69,18 @@ class CarController(CarControllerBase):
actuators = CC.actuators
hud_control = CC.hudControl
# dp
if self.dp_hkg_canfd_low_speed_turn_enhancer:
self.params.update(CS.out.vEgoRaw)
# steering torque
new_steer = int(round(actuators.steer * self.params.STEER_MAX))
apply_steer = apply_driver_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorque, self.params)
# dp
if self.dp_hkg_canfd_low_speed_turn_enhancer:
apply_steer = clip(apply_steer, -self.params.STEER_MAX, self.params.STEER_MAX)
# >90 degree steering fault prevention
self.angle_limit_counter, apply_steer_req = common_fault_avoidance(abs(CS.out.steeringAngleDeg) >= MAX_ANGLE, CC.latActive,
self.angle_limit_counter, MAX_ANGLE_FRAMES,
+1
View File
@@ -60,6 +60,7 @@ def manager_init() -> None:
("dp_toyota_auto_unlock", "0"),
("dp_device_disable_onroad_uploads", "0"),
("dp_toyota_zss", "0"),
("dp_hkg_canfd_low_speed_turn_enhancer", "0"),
]
if not PC:
default_params.append(("LastUpdateTime", datetime.datetime.now(datetime.UTC).replace(tzinfo=None).isoformat().encode('utf8')))