diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index ae5db046e1..dfff26d9db 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -41,6 +41,7 @@ class Controls: self.pm = messaging.PubMaster(['carControl', 'controlsState']) self.steer_limited_by_controls = False + self.curvature = 0.0 self.desired_curvature = 0.0 self.pose_calibrator = PoseCalibrator() @@ -73,6 +74,9 @@ class Controls: sr = max(lp.steerRatio, 0.1) self.VM.update_params(x, sr) + steer_angle_without_offset = math.radians(CS.steeringAngleDeg - lp.angleOffsetDeg) + self.curvature = -self.VM.calc_curvature(steer_angle_without_offset, CS.vEgo, lp.roll) + # Update Torque Params if self.CP.lateralTuning.which() == 'torque': torque_params = self.sm['liveTorqueParameters'] @@ -110,7 +114,10 @@ class Controls: actuators.accel = float(self.LoC.update(CC.longActive, CS, long_plan.aTarget, long_plan.shouldStop, pid_accel_limits)) # Steering PID loop and lateral MPC - self.desired_curvature, curvature_limited = clip_curvature(CS.vEgo, self.desired_curvature, model_v2.action.desiredCurvature, lp.roll) + # Reset desired curvature to current to avoid violating the limits on engage + new_desired_curvature = model_v2.action.desiredCurvature if CC.latActive else self.curvature + self.desired_curvature, curvature_limited = clip_curvature(CS.vEgo, self.desired_curvature, new_desired_curvature, lp.roll) + actuators.curvature = self.desired_curvature steer, steeringAngleDeg, lac_log = self.LaC.update(CC.latActive, CS, self.VM, lp, self.steer_limited_by_controls, self.desired_curvature, @@ -175,10 +182,7 @@ class Controls: dat.valid = CS.canValid cs = dat.controlsState - lp = self.sm['liveParameters'] - steer_angle_without_offset = math.radians(CS.steeringAngleDeg - lp.angleOffsetDeg) - cs.curvature = -self.VM.calc_curvature(steer_angle_without_offset, CS.vEgo, lp.roll) - + cs.curvature = self.curvature cs.longitudinalPlanMonoTime = self.sm.logMonoTime['longitudinalPlan'] cs.lateralPlanMonoTime = self.sm.logMonoTime['modelV2'] cs.desiredCurvature = self.desired_curvature diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 20f6d1d069..73b2b61245 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -e239a1683b7f97c9d8dca74c57ebf4ef8bc416cd \ No newline at end of file +1904f49bcc97370a842aeee1f831e9ced5a6cad6 \ No newline at end of file