mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-08-05 08:16:03 +08:00
Fix LSM6DS3 sensors test (#37855)
* fix temperature test + add std dev test for temp * loosen gyro limit, no axis on temp mean * whitespace fix * add std_max to all sensors/tests
This commit is contained in:
@@ -30,16 +30,16 @@ SENSOR_CONFIGURATIONS: list[set] = {
|
||||
}.get(HARDWARE.get_device_type(), [])
|
||||
|
||||
Sensor = log.SensorEventData.SensorSource
|
||||
SensorConfig = namedtuple('SensorConfig', ['type', 'sanity_min', 'sanity_max'])
|
||||
SensorConfig = namedtuple('SensorConfig', ['type', 'sanity_min', 'sanity_max', 'std_max'])
|
||||
ALL_SENSORS = {
|
||||
Sensor.lsm6ds3trc: {
|
||||
SensorConfig("acceleration", 5, 15),
|
||||
SensorConfig("gyroUncalibrated", 0, .2),
|
||||
SensorConfig("temperature", 10, 40), # set for max range of our office
|
||||
SensorConfig("acceleration", 5, 15, 5),
|
||||
SensorConfig("gyroUncalibrated", 0, .15, 0.5),
|
||||
SensorConfig("temperature", 10, 40, 0.5), # set for max range of our office
|
||||
},
|
||||
|
||||
Sensor.mmc5603nj: {
|
||||
SensorConfig("magneticUncalibrated", 0, 300),
|
||||
SensorConfig("magneticUncalibrated", 0, 300, 10),
|
||||
}
|
||||
}
|
||||
ALL_SENSORS[Sensor.lsm6ds3] = ALL_SENSORS[Sensor.lsm6ds3trc]
|
||||
@@ -198,9 +198,16 @@ class TestSensord:
|
||||
continue
|
||||
|
||||
key = (sensor, s.type)
|
||||
mean_norm = np.mean(np.linalg.norm(sensor_values[key], axis=1))
|
||||
err_msg = f"Sensor '{sensor} {s.type}' failed sanity checks {mean_norm} is not between {s.sanity_min} and {s.sanity_max}"
|
||||
assert s.sanity_min <= mean_norm <= s.sanity_max, err_msg
|
||||
if s.type == 'temperature':
|
||||
measurement_stat = np.mean(sensor_values[key])
|
||||
else:
|
||||
measurement_stat = np.mean(np.linalg.norm(sensor_values[key], axis=1))
|
||||
err_msg = f"Sensor '{sensor} {s.type}' failed sanity checks {measurement_stat} is not between {s.sanity_min} and {s.sanity_max}"
|
||||
assert s.sanity_min <= measurement_stat <= s.sanity_max, err_msg
|
||||
|
||||
std_dev = np.std(sensor_values[key], axis=0)
|
||||
err_msg = f"Sensor '{sensor} {s.type}' failed std dev test {std_dev} is not under {s.std_max}"
|
||||
assert np.all(std_dev <= s.std_max), err_msg
|
||||
|
||||
def test_sensor_verify_no_interrupts_after_stop(self):
|
||||
managed_processes["sensord"].start()
|
||||
@@ -222,4 +229,3 @@ class TestSensord:
|
||||
time.sleep(1)
|
||||
state_two = get_irq_count(self.sensord_irq)
|
||||
assert state_one == state_two, "Interrupts received after sensord stop!"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user