IQ.Pilot Release Commit @ bec7652
This commit is contained in:
71
iqpilot/selfdrive/locationd/test/test_paramsd.py
Normal file
71
iqpilot/selfdrive/locationd/test/test_paramsd.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import random
|
||||
import numpy as np
|
||||
|
||||
from iqpilot.cereal import messaging
|
||||
from iqpilot.selfdrive.locationd.paramsd import retrieve_initial_vehicle_params, migrate_cached_vehicle_params_if_needed
|
||||
from iqpilot.selfdrive.locationd.models.car_kf import CarKalman
|
||||
from iqpilot.selfdrive.locationd.test.test_locationd_scenarios import TEST_ROUTE
|
||||
from iqpilot.selfdrive.test.process_replay.migration import migrate, migrate_carParams
|
||||
from iqpilot.common.params import Params
|
||||
from iqpilot.tools.lib.logreader import LogReader
|
||||
|
||||
|
||||
def get_random_live_parameters(CP):
|
||||
msg = messaging.new_message("vehicleParameters")
|
||||
msg.vehicleParameters.steerRatio = (random.random() + 0.5) * CP.steerRatio
|
||||
msg.vehicleParameters.stiffnessFactor = random.random()
|
||||
msg.vehicleParameters.angleOffsetAverageDeg = random.random()
|
||||
msg.vehicleParameters.debugFilterState.std = [random.random() for _ in range(CarKalman.P_initial.shape[0])]
|
||||
return msg
|
||||
|
||||
|
||||
class TestParamsd:
|
||||
def test_read_saved_params(self):
|
||||
params = Params()
|
||||
|
||||
lr = migrate(LogReader(TEST_ROUTE), [migrate_carParams])
|
||||
CP = next(m for m in lr if m.which() == "carParams").carParams
|
||||
|
||||
msg = get_random_live_parameters(CP)
|
||||
params.put("LiveParametersV2", msg.to_bytes())
|
||||
params.put("CarParamsPrevRoute", CP.as_builder().to_bytes())
|
||||
|
||||
migrate_cached_vehicle_params_if_needed(params) # this is not tested here but should not mess anything up or throw an error
|
||||
sr, sf, offset, p_init = retrieve_initial_vehicle_params(params, CP, replay=True, debug=True)
|
||||
np.testing.assert_allclose(sr, msg.vehicleParameters.steerRatio)
|
||||
np.testing.assert_allclose(sf, msg.vehicleParameters.stiffnessFactor)
|
||||
np.testing.assert_allclose(offset, msg.vehicleParameters.angleOffsetAverageDeg)
|
||||
np.testing.assert_equal(p_init.shape, CarKalman.P_initial.shape)
|
||||
np.testing.assert_allclose(np.diagonal(p_init), msg.vehicleParameters.debugFilterState.std)
|
||||
|
||||
# TODO Remove this test after the support for old format is removed
|
||||
def test_read_saved_params_old_format(self):
|
||||
params = Params()
|
||||
|
||||
lr = migrate(LogReader(TEST_ROUTE), [migrate_carParams])
|
||||
CP = next(m for m in lr if m.which() == "carParams").carParams
|
||||
|
||||
msg = get_random_live_parameters(CP)
|
||||
params.put("LiveParameters", {
|
||||
"steerRatio": msg.vehicleParameters.steerRatio,
|
||||
"stiffnessFactor": msg.vehicleParameters.stiffnessFactor,
|
||||
"angleOffsetAverageDeg": msg.vehicleParameters.angleOffsetAverageDeg,
|
||||
})
|
||||
params.put("CarParamsPrevRoute", CP.as_builder().to_bytes())
|
||||
params.remove("LiveParametersV2")
|
||||
|
||||
migrate_cached_vehicle_params_if_needed(params)
|
||||
sr, sf, offset, _ = retrieve_initial_vehicle_params(params, CP, replay=True, debug=True)
|
||||
np.testing.assert_allclose(sr, msg.vehicleParameters.steerRatio)
|
||||
np.testing.assert_allclose(sf, msg.vehicleParameters.stiffnessFactor)
|
||||
np.testing.assert_allclose(offset, msg.vehicleParameters.angleOffsetAverageDeg)
|
||||
assert params.get("LiveParametersV2") is not None
|
||||
|
||||
def test_read_saved_params_corrupted_old_format(self):
|
||||
params = Params()
|
||||
params.put("LiveParameters", {})
|
||||
params.remove("LiveParametersV2")
|
||||
|
||||
migrate_cached_vehicle_params_if_needed(params)
|
||||
assert params.get("LiveParameters") is None
|
||||
assert params.get("LiveParametersV2") is None
|
||||
Reference in New Issue
Block a user