      plan_send.lateralPlan.lProb = float(self.LP.lll_prob)
      plan_send.lateralPlan.rProb = float(self.LP.rll_prob)
      plan_send.lateralPlan.dProb = float(self.LP.d_prob)
  
      plan_send.lateralPlan.steeringAngleDeg = float(self.desired_steering_wheel_angle_deg)
      plan_send.lateralPlan.steeringRateDeg = float(self.desired_steering_wheel_angle_rate_deg)
      plan_send.lateralPlan.angleOffsetDeg = float(sm['liveParameters'].angleOffsetAverageDeg)
      plan_send.lateralPlan.mpcSolutionValid = bool(plan_solution_valid)
  
      plan_send.lateralPlan.desire = self.desire
      plan_send.lateralPlan.laneChangeState = self.lane_change_state
      plan_send.lateralPlan.laneChangeDirection = self.lane_change_direction
 
</s> remove     plan_send.valid = sm.all_alive_and_valid(service_list=['carState', 'controlsState', 'liveParameters', 'modelV2'])
 </s> add     plan_send.valid = sm.all_alive_and_valid(service_list=['carState', 'controlsState', 'modelV2']) </s> remove     y_pts = np.interp(v_ego * self.t_idxs[:MPC_N+1], np.linalg.norm(d_path_xyz, axis=1), d_path_xyz[:,1])
    heading_pts = np.interp(v_ego * self.t_idxs[:MPC_N+1], np.linalg.norm(self.path_xyz, axis=1), self.plan_yaw)
 </s> add     y_pts = np.interp(v_ego * self.t_idxs[:MPC_N + 1], np.linalg.norm(d_path_xyz, axis=1), d_path_xyz[:,1])
    heading_pts = np.interp(v_ego * self.t_idxs[:MPC_N + 1], np.linalg.norm(self.path_xyz, axis=1), self.plan_yaw) </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 </s> remove       dat.liveMpc.x = list(self.mpc_solution[0].x)
      dat.liveMpc.y = list(self.mpc_solution[0].y)
      dat.liveMpc.psi = list(self.mpc_solution[0].psi)
      dat.liveMpc.tire_angle = list(self.mpc_solution[0].tire_angle)
      dat.liveMpc.cost = self.mpc_solution[0].cost
 </s> add       dat.liveMpc.x = list(self.mpc_solution.x)
      dat.liveMpc.y = list(self.mpc_solution.y)
      dat.liveMpc.psi = list(self.mpc_solution.psi)
      dat.liveMpc.curvature = list(self.mpc_solution.curvature)
      dat.liveMpc.cost = self.mpc_solution.cost </s> remove     plot_arr[-1, name_to_arr_idx['angle_steers_des']] = sm['carControl'].actuators.steeringAngleDeg
 </s> add     plot_arr[-1, name_to_arr_idx['angle_steers_des']] = sm['controlsState'].steeringAngleDesiredDeg
    plan_send.lateralPlan.curvature = float(self.desired_curvature)
    plan_send.lateralPlan.curvatureRate = float(self.desired_curvature_rate)

      plan_send.lateralPlan.lProb = float(self.LP.lll_prob)
      plan_send.lateralPlan.rProb = float(self.LP.rll_prob)
      plan_send.lateralPlan.dProb = float(self.LP.d_prob)
  
    plan_send.lateralPlan.curvature = float(self.desired_curvature)
    plan_send.lateralPlan.curvatureRate = float(self.desired_curvature_rate)

    plan_send.lateralPlan.curvature = float(self.desired_curvature)
    plan_send.lateralPlan.curvatureRate = float(self.desired_curvature_rate)

    plan_send.lateralPlan.curvature = float(self.desired_curvature)
    plan_send.lateralPlan.curvatureRate = float(self.desired_curvature_rate)

      plan_send.lateralPlan.mpcSolutionValid = bool(plan_solution_valid)
  
      plan_send.lateralPlan.desire = self.desire
      plan_send.lateralPlan.laneChangeState = self.lane_change_state
      plan_send.lateralPlan.laneChangeDirection = self.lane_change_direction
keep keep keep keep replace replace replace keep 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/lib/lateral_planner.py