| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -172,7 +172,6 @@ class Controls: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.last_actuators = car.CarControl.Actuators.new_message() | 
					 | 
					 | 
					 | 
					    self.last_actuators = car.CarControl.Actuators.new_message() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.steer_limited = False | 
					 | 
					 | 
					 | 
					    self.steer_limited = False | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.desired_curvature = 0.0 | 
					 | 
					 | 
					 | 
					    self.desired_curvature = 0.0 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.desired_curvature_rate = 0.0 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.experimental_mode = False | 
					 | 
					 | 
					 | 
					    self.experimental_mode = False | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.v_cruise_helper = VCruiseHelper(self.CP) | 
					 | 
					 | 
					 | 
					    self.v_cruise_helper = VCruiseHelper(self.CP) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.recalibrating_seen = False | 
					 | 
					 | 
					 | 
					    self.recalibrating_seen = False | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -611,13 +610,10 @@ class Controls: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      actuators.accel = self.LoC.update(CC.longActive, CS, long_plan, pid_accel_limits, t_since_plan) | 
					 | 
					 | 
					 | 
					      actuators.accel = self.LoC.update(CC.longActive, CS, long_plan, pid_accel_limits, t_since_plan) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      # Steering PID loop and lateral MPC | 
					 | 
					 | 
					 | 
					      # Steering PID loop and lateral MPC | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      self.desired_curvature, self.desired_curvature_rate = get_lag_adjusted_curvature(self.CP, CS.vEgo, | 
					 | 
					 | 
					 | 
					      self.desired_curvature = get_lag_adjusted_curvature(self.CP, CS.vEgo, lat_plan.psis, lat_plan.curvatures) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                                                       lat_plan.psis, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                                                       lat_plan.curvatures, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                                                       lat_plan.curvatureRates) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      actuators.steer, actuators.steeringAngleDeg, lac_log = self.LaC.update(CC.latActive, CS, self.VM, lp, | 
					 | 
					 | 
					 | 
					      actuators.steer, actuators.steeringAngleDeg, lac_log = self.LaC.update(CC.latActive, CS, self.VM, lp, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                                             self.steer_limited, self.desired_curvature, | 
					 | 
					 | 
					 | 
					                                                                             self.steer_limited, self.desired_curvature, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                                             self.desired_curvature_rate, self.sm['liveLocationKalman']) | 
					 | 
					 | 
					 | 
					                                                                             self.sm['liveLocationKalman']) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      actuators.curvature = self.desired_curvature | 
					 | 
					 | 
					 | 
					      actuators.curvature = self.desired_curvature | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else: | 
					 | 
					 | 
					 | 
					    else: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      lac_log = log.ControlsState.LateralDebugState.new_message() | 
					 | 
					 | 
					 | 
					      lac_log = log.ControlsState.LateralDebugState.new_message() | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -787,7 +783,6 @@ class Controls: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.active = self.active | 
					 | 
					 | 
					 | 
					    controlsState.active = self.active | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.curvature = curvature | 
					 | 
					 | 
					 | 
					    controlsState.curvature = curvature | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.desiredCurvature = self.desired_curvature | 
					 | 
					 | 
					 | 
					    controlsState.desiredCurvature = self.desired_curvature | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.desiredCurvatureRate = self.desired_curvature_rate | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.state = self.state | 
					 | 
					 | 
					 | 
					    controlsState.state = self.state | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.engageable = not self.events.contains(ET.NO_ENTRY) | 
					 | 
					 | 
					 | 
					    controlsState.engageable = not self.events.contains(ET.NO_ENTRY) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    controlsState.longControlState = self.LoC.long_control_state | 
					 | 
					 | 
					 | 
					    controlsState.longControlState = self.LoC.long_control_state | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |