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