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:
probablyanasian
2026-04-18 20:27:58 -07:00
committed by GitHub
parent 5d7155fdda
commit b6432e705d
+15 -9
View File
@@ -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!"