diff --git a/opendbc_repo/opendbc/car/hyundai/carcontroller.py b/opendbc_repo/opendbc/car/hyundai/carcontroller.py index 5aefb8606c..f710b3ede7 100644 --- a/opendbc_repo/opendbc/car/hyundai/carcontroller.py +++ b/opendbc_repo/opendbc/car/hyundai/carcontroller.py @@ -42,7 +42,7 @@ IONIQ_6_RESPONSE_MULTIPLIER = 1.2 IONIQ_6_CANFD_SCC_ACCEL_STEP = (6.0 / 50.0) * IONIQ_6_RESPONSE_MULTIPLIER IONIQ_6_CANFD_SCC_DECEL_STEP = (15.0 / 50.0) * IONIQ_6_RESPONSE_MULTIPLIER EV9_CANFD_SCC_DECEL_STEP = 10.0 / 50.0 -RAY_PEDAL_COMMAND_CAP = 0.45 +RAY_PEDAL_COMMAND_CAP = 0.70 RAY_PEDAL_RATE_UP = 0.02 RAY_PEDAL_RATE_DOWN = 0.06 GENESIS_G90_STOP_HOLD_SPEED_BP = [0.0, 0.03, 0.08, 0.16, 0.3, 0.5, 0.8, 1.2, 2.0, 3.0] @@ -832,8 +832,9 @@ class CarController(CarControllerBase): not CS.out.gasPressed and not CS.out.brakePressed) if pedal_active: pedal_offset = float(np.interp(CS.out.vEgo, [0., 2., 4., 8., 12., 20.], - [0.08, 0.13, 0.18, 0.25, 0.30, 0.32])) - target = float(np.clip(pedal_offset + accel * 0.32, 0.0, RAY_PEDAL_COMMAND_CAP)) + [0.08, 0.13, 0.25, 0.44, 0.63, 0.68])) + pedal_gain = 0.65 if accel < 0.0 else 0.22 + target = float(np.clip(pedal_offset + accel * pedal_gain, 0.0, RAY_PEDAL_COMMAND_CAP)) self._ray_pedal_gas_last = rate_limit( target, self._ray_pedal_gas_last, -RAY_PEDAL_RATE_DOWN, RAY_PEDAL_RATE_UP, ) diff --git a/opendbc_repo/opendbc/car/hyundai/tests/test_ray_pedal.py b/opendbc_repo/opendbc/car/hyundai/tests/test_ray_pedal.py index 25e35f3eb9..a4ea0da8ed 100644 --- a/opendbc_repo/opendbc/car/hyundai/tests/test_ray_pedal.py +++ b/opendbc_repo/opendbc/car/hyundai/tests/test_ray_pedal.py @@ -203,6 +203,14 @@ def test_ray_controller_heartbeats_and_only_actuates_when_ready(speed): assert pedal_msg(0.0, 72)[4] & 0x80 assert pedal_msg(-1.0, 76)[:4] == bytes(4) + CS.out.vEgo = 12.0 + for frame in range(80, 80 + 4 * 40, 4): + pedal_msg(1.5, frame) + assert 0.69 <= controller._ray_pedal_gas_last <= 0.70 + for frame in range(240, 240 + 4 * 12, 4): + dat = pedal_msg(-1.5, frame) + assert dat[:4] == bytes(4) + @pytest.mark.parametrize("candidate", [CAR.KIA_RAY_EV, CAR.HYUNDAI_KONA_EV_NON_SCC]) def test_ray_stock_cruise_cancellation_survives_accelerator_override(candidate): diff --git a/opendbc_repo/opendbc/safety/modes/hyundai.h b/opendbc_repo/opendbc/safety/modes/hyundai.h index aa32ac12ed..e0826819b6 100644 --- a/opendbc_repo/opendbc/safety/modes/hyundai.h +++ b/opendbc_repo/opendbc/safety/modes/hyundai.h @@ -330,7 +330,7 @@ static bool hyundai_tx_hook(const CANPacket_t *msg) { const int expected_track2 = 497 + (2 * ((int)track1 - 264)); if ((msg->data[4] & 0x70U) != 0U || (msg->data[5] != hyundai_ray_pedal_checksum(msg)) || - (enabled && (track1 < 264U || track1 > 435U || track2 < 497U || track2 > 843U || + (enabled && (track1 < 264U || track1 > 530U || track2 < 497U || track2 > 1035U || SAFETY_ABS((int)track2 - expected_track2) > 40)) || (!enabled && ((track1 != 0U) || (track2 != 0U))) || longitudinal_interceptor_checks(msg) || diff --git a/opendbc_repo/opendbc/safety/tests/test_hyundai_ray_pedal.py b/opendbc_repo/opendbc/safety/tests/test_hyundai_ray_pedal.py index 882ee87cc0..1bd36754c7 100644 --- a/opendbc_repo/opendbc/safety/tests/test_hyundai_ray_pedal.py +++ b/opendbc_repo/opendbc/safety/tests/test_hyundai_ray_pedal.py @@ -21,8 +21,8 @@ def test_ray_pedal_tx_isolation_and_limits(param): has_ray_signature = param in (0x9405, 0x9C05) assert tx(0) is has_ray_signature - assert tx(0.45) is has_ray_signature - assert not tx(0.46) + assert tx(0.70) is has_ray_signature + assert not tx(0.71) assert not tx(1.0) if has_ray_signature: