enforce message checks in can parser (#20742)
* enforce message checks in can parser * nissan * vw * hkg * subaru * toyota * honda bosch * gm * honda nidec * bump opendbc * not all tss2 have bsm * toyota fixes * honda fixes * vw fix * fix subaru * fix long tests * update refs * crv bsmpull/20748/head
parent
c9a29d6deb
commit
6c7ed8f2e4
19 changed files with 251 additions and 152 deletions
@ -1 +1 @@ |
|||||||
Subproject commit 8e5eb3ba4db9975e3370f3e4f5e60c0e7b73d078 |
Subproject commit 9532238f186a5022235decc22f3eaf91b636cedc |
@ -1 +1 @@ |
|||||||
Subproject commit 774b4c98f6b2ae22f23703521e368918014d74b7 |
Subproject commit df29a0726ba95b185241c1e0b8b1c1e37fc96e76 |
@ -1,70 +1,69 @@ |
|||||||
#!/usr/bin/env python3 |
#!/usr/bin/env python3 |
||||||
import unittest |
import unittest |
||||||
import importlib |
import importlib |
||||||
|
from parameterized import parameterized |
||||||
|
|
||||||
|
from cereal import car |
||||||
from selfdrive.car.fingerprints import all_known_cars |
from selfdrive.car.fingerprints import all_known_cars |
||||||
from selfdrive.car.car_helpers import interfaces |
from selfdrive.car.car_helpers import interfaces |
||||||
from selfdrive.car.fingerprints import _FINGERPRINTS as FINGERPRINTS |
from selfdrive.car.fingerprints import _FINGERPRINTS as FINGERPRINTS |
||||||
|
|
||||||
from cereal import car |
|
||||||
|
|
||||||
|
|
||||||
class TestCarInterfaces(unittest.TestCase): |
class TestCarInterfaces(unittest.TestCase): |
||||||
def test_car_interfaces(self): |
|
||||||
all_cars = all_known_cars() |
|
||||||
|
|
||||||
for car_name in all_cars: |
@parameterized.expand([(car,) for car in all_known_cars()]) |
||||||
print(car_name) |
def test_car_interfaces(self, car_name): |
||||||
fingerprint = FINGERPRINTS[car_name][0] |
print(car_name) |
||||||
|
fingerprint = FINGERPRINTS[car_name][0] |
||||||
|
|
||||||
CarInterface, CarController, CarState = interfaces[car_name] |
CarInterface, CarController, CarState = interfaces[car_name] |
||||||
fingerprints = { |
fingerprints = { |
||||||
0: fingerprint, |
0: fingerprint, |
||||||
1: fingerprint, |
1: fingerprint, |
||||||
2: fingerprint, |
2: fingerprint, |
||||||
} |
} |
||||||
|
|
||||||
car_fw = [] |
car_fw = [] |
||||||
|
|
||||||
car_params = CarInterface.get_params(car_name, fingerprints, car_fw) |
car_params = CarInterface.get_params(car_name, fingerprints, car_fw) |
||||||
car_interface = CarInterface(car_params, CarController, CarState) |
car_interface = CarInterface(car_params, CarController, CarState) |
||||||
assert car_params |
assert car_params |
||||||
assert car_interface |
assert car_interface |
||||||
|
|
||||||
self.assertGreater(car_params.mass, 1) |
self.assertGreater(car_params.mass, 1) |
||||||
self.assertGreater(car_params.steerRateCost, 1e-3) |
self.assertGreater(car_params.steerRateCost, 1e-3) |
||||||
|
|
||||||
if car_params.steerControlType != car.CarParams.SteerControlType.angle: |
if car_params.steerControlType != car.CarParams.SteerControlType.angle: |
||||||
tuning = car_params.lateralTuning.which() |
tuning = car_params.lateralTuning.which() |
||||||
if tuning == 'pid': |
if tuning == 'pid': |
||||||
self.assertTrue(len(car_params.lateralTuning.pid.kpV)) |
self.assertTrue(len(car_params.lateralTuning.pid.kpV)) |
||||||
elif tuning == 'lqr': |
elif tuning == 'lqr': |
||||||
self.assertTrue(len(car_params.lateralTuning.lqr.a)) |
self.assertTrue(len(car_params.lateralTuning.lqr.a)) |
||||||
elif tuning == 'indi': |
elif tuning == 'indi': |
||||||
self.assertTrue(len(car_params.lateralTuning.indi.outerLoopGainV)) |
self.assertTrue(len(car_params.lateralTuning.indi.outerLoopGainV)) |
||||||
|
|
||||||
# Run car interface |
# Run car interface |
||||||
CC = car.CarControl.new_message() |
CC = car.CarControl.new_message() |
||||||
for _ in range(10): |
for _ in range(10): |
||||||
car_interface.update(CC, []) |
car_interface.update(CC, []) |
||||||
car_interface.apply(CC) |
car_interface.apply(CC) |
||||||
car_interface.apply(CC) |
car_interface.apply(CC) |
||||||
|
|
||||||
CC = car.CarControl.new_message() |
CC = car.CarControl.new_message() |
||||||
CC.enabled = True |
CC.enabled = True |
||||||
for _ in range(10): |
for _ in range(10): |
||||||
car_interface.update(CC, []) |
car_interface.update(CC, []) |
||||||
car_interface.apply(CC) |
car_interface.apply(CC) |
||||||
car_interface.apply(CC) |
car_interface.apply(CC) |
||||||
|
|
||||||
# Test radar interface |
# Test radar interface |
||||||
RadarInterface = importlib.import_module('selfdrive.car.%s.radar_interface' % car_params.carName).RadarInterface |
RadarInterface = importlib.import_module('selfdrive.car.%s.radar_interface' % car_params.carName).RadarInterface |
||||||
radar_interface = RadarInterface(car_params) |
radar_interface = RadarInterface(car_params) |
||||||
assert radar_interface |
assert radar_interface |
||||||
|
|
||||||
# Run radar interface once |
# Run radar interface once |
||||||
radar_interface.update([]) |
radar_interface.update([]) |
||||||
if not car_params.radarOffCan and hasattr(radar_interface, '_update') and hasattr(radar_interface, 'trigger_msg'): |
if not car_params.radarOffCan and hasattr(radar_interface, '_update') and hasattr(radar_interface, 'trigger_msg'): |
||||||
radar_interface._update([radar_interface.trigger_msg]) |
radar_interface._update([radar_interface.trigger_msg]) |
||||||
|
|
||||||
if __name__ == "__main__": |
if __name__ == "__main__": |
||||||
unittest.main() |
unittest.main() |
||||||
|
@ -1 +1 @@ |
|||||||
381c4976c45f232f413b37945fbcd43391174089 |
8539d7c0d5186cd2d13e7f031ecb93e64b5ed8ae |
Loading…
Reference in new issue