Source code for genericroboticarm.sila_server.feature_implementations.robotcontroller_impl

# Generated by sila2.code_generator; sila2.__version__: 0.10.4
from __future__ import annotations

import traceback
from typing import TYPE_CHECKING

from sila2.server import MetadataDict, ObservableCommandInstance

from ..generated.robotcontroller import (
    EmergencyStop_Responses,
    MovePlate_Responses,
    MoveToPosition_Responses,
    PickPlate_Responses,
    PlacePlate_Responses,
    Reinitialize_Responses,
    RobotControllerBase,
    SetAcceleration_Responses,
    SetSpeed_Responses,
    Site,
)

if TYPE_CHECKING:
    from ..server import Server


[docs] class RobotControllerImpl(RobotControllerBase): def __init__(self, parent_server: Server) -> None: super().__init__(parent_server=parent_server) self.robot = parent_server.robot
[docs] def Reinitialize(self, *, metadata: MetadataDict) -> Reinitialize_Responses: self.robot.init_connection()
[docs] def PickPlate(self, Site: Site, *, metadata: MetadataDict) -> PickPlate_Responses: self.robot.pick_from_device(*Site)
[docs] def PlacePlate(self, Site: Site, *, metadata: MetadataDict) -> PlacePlate_Responses: self.robot.place_at_device(*Site)
[docs] def SetSpeed(self, Percentage: float, *, metadata: MetadataDict) -> SetSpeed_Responses: self.robot.set_speed(Percentage)
[docs] def SetAcceleration(self, Percentage: float, *, metadata: MetadataDict) -> SetAcceleration_Responses: self.robot.set_acceleration(Percentage)
[docs] def EmergencyStop(self, *, metadata: MetadataDict) -> EmergencyStop_Responses: self.robot.stop_moving()
[docs] def MoveToPosition( self, Position: str, *, metadata: MetadataDict, instance: ObservableCommandInstance ) -> MoveToPosition_Responses: instance.begin_execution() # set execution status from `waiting` to `running` try: self.robot.move_to_position(Position) except Exception as ex: traceback.print_exc() raise ex
[docs] def MovePlate( self, OriginSite: Site, DestinationSite: Site, *, metadata: MetadataDict, instance: ObservableCommandInstance ) -> MovePlate_Responses: instance.begin_execution() # set execution status from `waiting` to `running` print(f"Moving a plate from {OriginSite} to {DestinationSite}") try: self.robot.pick_from_device(*OriginSite) self.robot.place_at_device(*DestinationSite) except Exception as ex: traceback.print_exc() raise ex