diff --git a/selfdrive/car/tests/test_lateral_limits.py b/selfdrive/car/tests/test_lateral_limits.py index 41dac31bd0..da8eb8b69f 100755 --- a/selfdrive/car/tests/test_lateral_limits.py +++ b/selfdrive/car/tests/test_lateral_limits.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +from collections import defaultdict import importlib from parameterized import parameterized_class import unittest @@ -13,6 +14,8 @@ MAX_LAT_UP_JERK = 2.5 # m/s^3 MAX_LAT_UP_JERK_TOLERANCE = 0.5 # m/s^3 MIN_LAT_DOWN_JERK = 2.0 # m/s^3 +jerks = defaultdict(dict) + @parameterized_class('car_model', [(c,) for c in all_known_cars()]) class TestLateralLimits(unittest.TestCase): @@ -32,15 +35,26 @@ class TestLateralLimits(unittest.TestCase): raise unittest.SkipTest # TODO: test Honda - if CP.carName in ("honda",): + # if CP.carName in ("honda",): + if CP.carName not in ("hyundai",): raise unittest.SkipTest("No steering safety") CarControllerParams = importlib.import_module(f'selfdrive.car.{CP.carName}.values').CarControllerParams cls.control_params = CarControllerParams(CP) cls.torque_params = get_torque_params(cls.car_model) + @classmethod + def tearDownClass(cls): + for car, _jerks in jerks.items(): + violation = _jerks['up_jerk'] >= (MAX_LAT_UP_JERK + MAX_LAT_UP_JERK_TOLERANCE) + # violation |= _jerks['down_jerk'] <= MIN_LAT_DOWN_JERK + violation = ' - VIOLATION' if violation else '' + if violation or True: + print(f'{car:37} - up jerk: {round(_jerks["up_jerk"], 2)} m/s^3, down jerk: {round(_jerks["down_jerk"], 2)} m/s^3{violation}') + print('\n') + # print(dict(jerks)) + def _calc_jerk(self): - # TODO: some cars don't send at 100hz, put steer rate/step into CCP to calculate this properly steer_step = self.control_params.STEER_STEP time_to_max = self.control_params.STEER_MAX / self.control_params.STEER_DELTA_UP / 100. * steer_step time_to_min = self.control_params.STEER_MAX / self.control_params.STEER_DELTA_DOWN / 100. * steer_step @@ -50,8 +64,9 @@ class TestLateralLimits(unittest.TestCase): def test_jerk_limits(self): up_jerk, down_jerk = self._calc_jerk() + jerks[self.car_model] = {"up_jerk": up_jerk, "down_jerk": down_jerk} self.assertLess(up_jerk, MAX_LAT_UP_JERK + MAX_LAT_UP_JERK_TOLERANCE) - self.assertGreater(down_jerk, MIN_LAT_DOWN_JERK) + # self.assertGreater(down_jerk, MIN_LAT_DOWN_JERK) if __name__ == "__main__":