diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 6ec39cdae..523df2f84 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -19,6 +19,7 @@ from openpilot.selfdrive.controls.lib.latcontrol_torque import LatControlTorque from openpilot.selfdrive.controls.lib.longcontrol import LongControl from openpilot.selfdrive.locationd.helpers import PoseCalibrator, Pose from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import get_T_FOLLOW +from selfdrive.controls.lib.disturbance_controller import DisturbanceController State = log.SelfdriveState.OpenpilotState LaneChangeState = log.LaneChangeState @@ -48,9 +49,12 @@ class Controls: self.steer_limited_by_controls = False self.curvature = 0.0 + self.curvature_3dof = 0.0 self.desired_curvature = 0.0 self.roll = 0.0 + self.disturbance_controller = DisturbanceController() + self.pose_calibrator = PoseCalibrator() self.calibrated_pose: Pose | None = None @@ -83,6 +87,8 @@ class Controls: steer_angle_without_offset = math.radians(CS.steeringAngleDeg - lp.angleOffsetDeg) self.curvature = -self.VM.calc_curvature(steer_angle_without_offset, CS.vEgo, 0) + self.curvature_3dof = -VM.calc_curvature_3dof(self.calibrated_pose.acceleration.y, self.calibrated_pose.acceleration.x, self.calibrated_pose.angular_velocity.yaw, + CS.vEgo, steer_angle_without_offset, 0) # Update Torque Params if self.CP.lateralTuning.which() == 'torque': @@ -132,6 +138,8 @@ class Controls: # Steering PID loop and lateral MPC # 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 + current_disturbance = self.disturbance_controller.compute_disturbance(new_desired_curvature, self.curvature_3dof) + new_desired_curvature = new_desired_curvature - current_disturbance self.desired_curvature, curvature_limited = clip_curvature(CS.vEgo, self.desired_curvature, new_desired_curvature, lp.roll) actuators.curvature = self.desired_curvature