| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -12,6 +12,7 @@ from selfdrive.car.interfaces import CarStateBase | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					PREV_BUTTON_SAMPLES = 8 | 
					 | 
					 | 
					 | 
					PREV_BUTTON_SAMPLES = 8 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					CLUSTER_SAMPLE_RATE = 20  # frames | 
					 | 
					 | 
					 | 
					CLUSTER_SAMPLE_RATE = 20  # frames | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					STANDSTILL_THRESHOLD = 12 * 0.03125 * CV.KPH_TO_MS | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class CarState(CarStateBase): | 
					 | 
					 | 
					 | 
					class CarState(CarStateBase): | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -72,7 +73,7 @@ class CarState(CarStateBase): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ) | 
					 | 
					 | 
					 | 
					    ) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. | 
					 | 
					 | 
					 | 
					    ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) | 
					 | 
					 | 
					 | 
					    ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.standstill = ret.vEgoRaw < 0.1 | 
					 | 
					 | 
					 | 
					    ret.standstill = ret.wheelSpeeds.fl <= STANDSTILL_THRESHOLD and ret.wheelSpeeds.rr <= STANDSTILL_THRESHOLD | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.cluster_speed_counter += 1 | 
					 | 
					 | 
					 | 
					    self.cluster_speed_counter += 1 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if self.cluster_speed_counter > CLUSTER_SAMPLE_RATE: | 
					 | 
					 | 
					 | 
					    if self.cluster_speed_counter > CLUSTER_SAMPLE_RATE: | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -191,7 +192,7 @@ class CarState(CarStateBase): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ) | 
					 | 
					 | 
					 | 
					    ) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. | 
					 | 
					 | 
					 | 
					    ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) | 
					 | 
					 | 
					 | 
					    ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.standstill = ret.vEgoRaw < 0.1 | 
					 | 
					 | 
					 | 
					    ret.standstill = ret.wheelSpeeds.fl <= STANDSTILL_THRESHOLD and ret.wheelSpeeds.rr <= STANDSTILL_THRESHOLD | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.steeringRateDeg = cp.vl["STEERING_SENSORS"]["STEERING_RATE"] | 
					 | 
					 | 
					 | 
					    ret.steeringRateDeg = cp.vl["STEERING_SENSORS"]["STEERING_RATE"] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.steeringAngleDeg = cp.vl["STEERING_SENSORS"]["STEERING_ANGLE"] * -1 | 
					 | 
					 | 
					 | 
					    ret.steeringAngleDeg = cp.vl["STEERING_SENSORS"]["STEERING_ANGLE"] * -1 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |