sends tree structure of frames and tools to clients

This commit is contained in:
2024-08-27 11:26:05 +02:00
parent e24126b64f
commit 9af3d992d4
4 changed files with 79 additions and 66 deletions

View File

@@ -17,6 +17,9 @@ ROBOT_JOINT_MOTORS = ["j1" , "j2", "j3", "j4", "j5", "j6"]
ROBOT_CARTESIAN_MOTORS = ["x" , "y", "z", "rx", "ry", "rz"]
ROBOT_SPHERICAL_MOTORS = ["r" , "gamma", "delta"]
FRAME_HIRARCHY = ["world.f_SwissFELCoord.f_ESBWorld.f_linearAxis." + k for k in ["f_direct.", "f_2mRad.", "f_4mRad.", "f_6mRad.", "f_8mRad.",]]
FRAME_HIRARCHY += ["t_flange.t_Adapter." + k for k in ["t_JF01T03det.t_JF01T03.", "t_JF07T32det.t_JF07T32."]]
run("devices/RobotTCP")
override_remote_safety = False
@@ -40,7 +43,15 @@ class RobotBernina(RobotTCP):
}
self.remote_allowed_recorded = AdjustableFS(name="remote_allowed", default_value = default_remote_allowed_recorded)
self.remote_allowed_deltas = AdjustableFS(name="remote_allowed_deltas", default_value = default_remote_allowed_deltas)
def get_frame_tree(self, frame):
"""frame can be a string of a tool or a frame"""
for f in FRAME_HIRARCHY:
if frame in f:
return f.split("." + frame + ".")[0]+"." + frame
return frame
def set_override_remote_safety(self, value):
self.override_remote_safety = bool(value)

View File

@@ -777,9 +777,9 @@ class RobotTCP(TcpDevice, Stoppable):
"task": self.current_task,
"mode": self.working_mode,
"status": self.status,
"frame": self.frame(),
"frame": self.get_frame_tree(self.frame()),
"frame_coordinates": self.frame_trsf,
"tool": self.tool(),
"tool": self.get_frame_tree(self.tool()),
"tool_coordinates": self.tool_trsf,
"cartesian_motors_enabled": self.cartesian_motors_enabled,
"spherical_motors_enabled": self.spherical_motors_enabled,
@@ -814,9 +814,9 @@ class RobotTCP(TcpDevice, Stoppable):
self.getLogger().info(ev)
self.on_event(ev)
self.setCache({
"pos": self.get_current_point_cached() if self.state==State.Ready else None #TODO: make it calculated in robot by polling funtion
}, None)
#self.setCache({
# "pos": self.get_current_point_cached() if self.state==State.Ready else None #TODO: make it calculated in robot by polling funtion
# }, None)
pos = self.cartesian_pos.copy()
pos.update(self.spherical_pos)
pos.update(self.joint_pos)

View File

@@ -2,7 +2,8 @@ from json import load, dump
from os import path
import os
BASEPATH = "C:/dev/pshell/config/bernina_robot/adjustables_fs/"
#BASEPATH = "C:/dev/pshell/config/bernina_robot/adjustables_fs/"
BASEPATH = "/sf/bernina/config/src/python/bernina_robot/adjustables_fs/"
class AdjustableFS:
def __init__(self, name=None, default_value=None, file_path=None):
@@ -31,4 +32,4 @@ class AdjustableFS:
return self.get_current_value()
def __repr__(self):
return "Current value of {} at: ".format(self.name) + str(self.get_current_value())
return "Current value of {} at: ".format(self.name) + str(self.get_current_value())