|  |  | @ -142,7 +142,6 @@ class Controls: | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.logged_comm_issue = None |  |  |  |     self.logged_comm_issue = None | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.not_running_prev = None |  |  |  |     self.not_running_prev = None | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.steer_limited = False |  |  |  |     self.steer_limited = False | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.last_actuators = car.CarControl.Actuators.new_message() |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.desired_curvature = 0.0 |  |  |  |     self.desired_curvature = 0.0 | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.experimental_mode = False |  |  |  |     self.experimental_mode = False | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.personality = self.read_personality_param() |  |  |  |     self.personality = self.read_personality_param() | 
			
		
	
	
		
		
			
				
					|  |  | @ -620,7 +619,7 @@ class Controls: | 
			
		
	
		
		
			
				
					
					|  |  |  |         undershooting = abs(lac_log.desiredLateralAccel) / abs(1e-3 + lac_log.actualLateralAccel) > 1.2 |  |  |  |         undershooting = abs(lac_log.desiredLateralAccel) / abs(1e-3 + lac_log.actualLateralAccel) > 1.2 | 
			
		
	
		
		
			
				
					
					|  |  |  |         turning = abs(lac_log.desiredLateralAccel) > 1.0 |  |  |  |         turning = abs(lac_log.desiredLateralAccel) > 1.0 | 
			
		
	
		
		
			
				
					
					|  |  |  |         good_speed = CS.vEgo > 5 |  |  |  |         good_speed = CS.vEgo > 5 | 
			
		
	
		
		
			
				
					
					|  |  |  |         max_torque = abs(self.last_actuators.steer) > 0.99 |  |  |  |         max_torque = abs(self.sm['carOutput'].actuatorsOutput.steer) > 0.99 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         if undershooting and turning and good_speed and max_torque: |  |  |  |         if undershooting and turning and good_speed and max_torque: | 
			
		
	
		
		
			
				
					
					|  |  |  |           lac_log.active and self.events.add(EventName.steerSaturated) |  |  |  |           lac_log.active and self.events.add(EventName.steerSaturated) | 
			
		
	
		
		
			
				
					
					|  |  |  |       elif lac_log.saturated: |  |  |  |       elif lac_log.saturated: | 
			
		
	
	
		
		
			
				
					|  |  | @ -661,8 +660,6 @@ class Controls: | 
			
		
	
		
		
			
				
					
					|  |  |  |   def publish_logs(self, CS, start_time, CC, lac_log): |  |  |  |   def publish_logs(self, CS, start_time, CC, lac_log): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """Send actuators and hud commands to the car, send controlsstate and MPC logging""" |  |  |  |     """Send actuators and hud commands to the car, send controlsstate and MPC logging""" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     CO = self.sm['carOutput'] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     # Orientation and angle rates can be useful for carcontroller |  |  |  |     # Orientation and angle rates can be useful for carcontroller | 
			
		
	
		
		
			
				
					
					|  |  |  |     # Only calibrated (car) frame is relevant for the carcontroller |  |  |  |     # Only calibrated (car) frame is relevant for the carcontroller | 
			
		
	
		
		
			
				
					
					|  |  |  |     orientation_value = list(self.sm['liveLocationKalman'].calibratedOrientationNED.value) |  |  |  |     orientation_value = list(self.sm['liveLocationKalman'].calibratedOrientationNED.value) | 
			
		
	
	
		
		
			
				
					|  |  | @ -727,7 +724,7 @@ class Controls: | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if not self.CP.passive and self.initialized: |  |  |  |     if not self.CP.passive and self.initialized: | 
			
		
	
		
		
			
				
					
					|  |  |  |       self.card.controls_update(CC) |  |  |  |       self.card.controls_update(CC) | 
			
		
	
		
		
			
				
					
					|  |  |  |       self.last_actuators = CO.actuatorsOutput |  |  |  |       CO = self.sm['carOutput'] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       if self.CP.steerControlType == car.CarParams.SteerControlType.angle: |  |  |  |       if self.CP.steerControlType == car.CarParams.SteerControlType.angle: | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ |  |  |  |         self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ | 
			
		
	
		
		
			
				
					
					|  |  |  |                              STEER_ANGLE_SATURATION_THRESHOLD |  |  |  |                              STEER_ANGLE_SATURATION_THRESHOLD | 
			
		
	
	
		
		
			
				
					|  |  | 
 |