From ff32c3c4a7c2ce5e8eeeaea2db7f25d935c40bb6 Mon Sep 17 00:00:00 2001 From: elkoled Date: Mon, 30 Mar 2026 15:37:37 -0700 Subject: [PATCH] lateral clip target to avoid jerk violation --- opendbc/car/lateral.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opendbc/car/lateral.py b/opendbc/car/lateral.py index 5cc5f86c3..ca21f7d6c 100644 --- a/opendbc/car/lateral.py +++ b/opendbc/car/lateral.py @@ -109,6 +109,10 @@ def apply_steer_angle_limits_vm(apply_angle: float, apply_angle_last: float, v_e """Apply jerk, accel, and safety limit constraints to steering angle.""" v_ego_raw = max(v_ego_raw, 1) + # *** max lateral accel limit (clip target, not output, to avoid jerk violations) *** + max_angle = get_max_angle_vm(v_ego_raw, VM, limits) + apply_angle = float(np.clip(apply_angle, -max_angle, max_angle)) + # *** max lateral jerk limit *** max_angle_delta = get_max_angle_delta_vm(v_ego_raw, VM, limits) @@ -116,10 +120,6 @@ def apply_steer_angle_limits_vm(apply_angle: float, apply_angle_last: float, v_e max_angle_delta = min(max_angle_delta, limits.ANGLE_LIMITS.MAX_ANGLE_RATE) new_apply_angle = rate_limit(apply_angle, apply_angle_last, -max_angle_delta, max_angle_delta) - # *** max lateral accel limit *** - max_angle = get_max_angle_vm(v_ego_raw, VM, limits) - new_apply_angle = np.clip(new_apply_angle, -max_angle, max_angle) - # angle is current angle when inactive if not lat_active: new_apply_angle = steering_angle