import os from openpilot.system.hardware import TICI from openpilot.selfdrive.modeld.runners.runmodel_pyx import RunModel, Runtime assert Runtime USE_THNEED = int(os.getenv('USE_THNEED', str(int(TICI)))) USE_SNPE = int(os.getenv('USE_SNPE', str(int(TICI)))) class ModelRunner(RunModel): THNEED = 'THNEED' SNPE = 'SNPE' ONNX = 'ONNX' def __new__(cls, paths, *args, **kwargs): if ModelRunner.THNEED in paths and USE_THNEED: from openpilot.selfdrive.modeld.runners.thneedmodel_pyx import ThneedModel as Runner runner_type = ModelRunner.THNEED elif ModelRunner.SNPE in paths and USE_SNPE: from openpilot.selfdrive.modeld.runners.snpemodel_pyx import SNPEModel as Runner runner_type = ModelRunner.SNPE elif ModelRunner.ONNX in paths: from openpilot.selfdrive.modeld.runners.onnxmodel_pyx import ONNXModel as Runner runner_type = ModelRunner.ONNX else: raise Exception("Couldn't select a model runner, make sure to pass at least one valid model path") return Runner(str(paths[runner_type]), *args, **kwargs)