|  |  | @ -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 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |