    def state_control(self, CS):
      """Given the state, this function returns an actuators packet"""
  
      lat_plan = self.sm['lateralPlan']
      long_plan = self.sm['longitudinalPlan']
  
      actuators = car.CarControl.Actuators.new_message()
 
</s> remove     psi = interp(delay, self.t_idxs[:MPC_N+1], self.mpc_solution.psi)
 </s> add     psi = interp(delay, self.t_idxs[:MPC_N + 1], self.mpc_solution.psi) </s> remove     self.cur_state.curvature = interp(DT_MDL, self.t_idxs[:MPC_N+1], self.mpc_solution.curvature)
 </s> add     self.cur_state.curvature = interp(DT_MDL, self.t_idxs[:MPC_N + 1], self.mpc_solution.curvature) </s> remove   def update(self, sm, CP, VM):
 </s> add   def update(self, sm, CP): </s> remove   def update(self, sm, CP, VM, PP):
 </s> add   def update(self, sm, CP): </s> remove     self.angle_steers_des = 0.0
    self.angle_steers_des_mpc = 0.0
    self.angle_steers_des_time = 0.0
 </s> add     self.desired_curvature = 0.0
    self.desired_curvature_rate = 0.0
    # Update VehicleModel
    params = self.sm['liveParameters']
    x = max(params.stiffnessFactor, 0.1)
    sr = max(params.steerRatio, 0.1)
    self.VM.update_params(x, sr)

    def state_control(self, CS):
      """Given the state, this function returns an actuators packet"""
  
    # Update VehicleModel
    params = self.sm['liveParameters']
    x = max(params.stiffnessFactor, 0.1)
    sr = max(params.steerRatio, 0.1)
    self.VM.update_params(x, sr)

      lat_plan = self.sm['lateralPlan']
      long_plan = self.sm['longitudinalPlan']
  
      actuators = car.CarControl.Actuators.new_message()
keep keep add keep keep keep keep
 LateralPlanner should only compute curvature (#20289)

* get curvature from planner

* no need to check active

* remove that

* remove self

* liveParams not needed

* cast

* fix test bug

* fixes

* fix ui.py

* fix radians

* update refs

* update refs

* bump cereal

* bump cereal

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> 
selfdrive/controls/controlsd.py