diff --git a/guiTools/spiri_sdk_guitools/sim_drone.py b/guiTools/spiri_sdk_guitools/sim_drone.py index bb643d8..b586eb9 100644 --- a/guiTools/spiri_sdk_guitools/sim_drone.py +++ b/guiTools/spiri_sdk_guitools/sim_drone.py @@ -13,6 +13,7 @@ import aiodocker import asyncio from spiri_sdk_guitools.video_button import EnableStreamingButton from collections import defaultdict +import importlib.util docker_client = docker.from_env() @@ -81,8 +82,17 @@ robot_types = {} class Robot: def __init_subclass__(self): + #Register sub-classes as plugins robot_types[self.robot_type] = self +for file in Path("/robots").glob("**/robot_plugins.py"): + logger.info(f"Loading plugin {file}") + spec = importlib.util.spec_from_file_location("robot_plugins", file) + plugin = importlib.util.module_from_spec(spec) + spec.loader.exec_module(plugin) + logger.info(f"Loaded plugin {file}") + + class Spirimu(Robot): robot_type = "spiri_mu"