diff --git a/field_friend/automations/implements/weeding_implement.py b/field_friend/automations/implements/weeding_implement.py index 09f90b7b..f01ae2c4 100644 --- a/field_friend/automations/implements/weeding_implement.py +++ b/field_friend/automations/implements/weeding_implement.py @@ -26,7 +26,7 @@ def __init__(self, name: str, system: 'System', persistence_key: str = 'weeding rosys.persistence.PersistentModule.__init__(self, persistence_key=f'field_friend.automations.implements.{persistence_key}') - self.relevant_weeds = system.small_weed_category_names + system.big_weed_category_names + self.relevant_weeds = system.plant_locator.weed_category_names self.log = logging.getLogger('field_friend.weeding') self.system = system self.kpi_provider = system.kpi_provider diff --git a/field_friend/automations/implements/weeding_screw.py b/field_friend/automations/implements/weeding_screw.py index 14669b6b..46119dd3 100644 --- a/field_friend/automations/implements/weeding_screw.py +++ b/field_friend/automations/implements/weeding_screw.py @@ -14,7 +14,7 @@ class WeedingScrew(WeedingImplement): def __init__(self, system: 'System') -> None: super().__init__('Weed Screw', system, 'weeding_screw') - self.relevant_weeds = system.small_weed_category_names + system.big_weed_category_names + self.relevant_weeds = system.plant_locator.weed_category_names self.log.info(f'Using relevant weeds: {self.relevant_weeds}') self.weed_screw_depth: float = 0.13 self.max_crop_distance: float = 0.08 diff --git a/field_friend/interface/components/plant_object.py b/field_friend/interface/components/plant_object.py index 3db2265a..eb4be64f 100644 --- a/field_friend/interface/components/plant_object.py +++ b/field_friend/interface/components/plant_object.py @@ -1,18 +1,20 @@ import logging +from typing import TYPE_CHECKING import rosys from nicegui.elements.scene_objects import Group, Sphere -from ...automations import PlantProvider +if TYPE_CHECKING: + from system import System class plant_objects(Group): - def __init__(self, plant_provider: PlantProvider, weed_category_names: list[str]) -> None: + def __init__(self, system: 'System') -> None: super().__init__() - self.plant_provider = plant_provider - self.weed_category_names = weed_category_names + self.plant_provider = system.plant_provider + self.plant_locator = system.plant_locator self.log = logging.getLogger('field_friend.plant_objects') self.update() self.plant_provider.PLANTS_CHANGED.register_ui(self.update) @@ -29,7 +31,7 @@ def update(self) -> None: obj.delete() for id, plant in in_world.items(): if id not in rendered: - if plant.type in self.weed_category_names: + if plant.type in self.plant_locator.weed_category_names: Sphere(0.02).with_name(f'plant_{plant.type}:{id}') \ .material('#ef1208') \ .move(plant.position.x, plant.position.y, 0.02) diff --git a/field_friend/interface/components/robot_scene.py b/field_friend/interface/components/robot_scene.py index 4af25ffa..01b762a6 100644 --- a/field_friend/interface/components/robot_scene.py +++ b/field_friend/interface/components/robot_scene.py @@ -33,8 +33,7 @@ def toggle_lock(): with ui.scene(200, 200, on_click=self.handle_click, grid=False).classes('w-full') as self.scene: field_friend_object(self.system.odometer, self.system.camera_provider, self.system.field_friend) rosys.driving.driver_object(self.system.driver) - plant_objects(self.system.plant_provider, - self.system.big_weed_category_names + self.system.small_weed_category_names) + plant_objects(self.system) visualizer_object(self.system) field_object(self.system.field_provider, self.system.field_navigation.field) self.scene.move_camera(-0.5, -1, 2)