def value(cls, type_defs: TypesDict, scene: Scene, project: Project, action_id: str, parameter_id: str) \ -> List[Pose]: ret: List[Pose] = [] ap, action = project.action_point_and_action(action_id) parameter = action.parameter(parameter_id) for orientation_id in cls.param_value_list(parameter): ret.append( Pose(ap.position, ap.orientation(orientation_id).orientation)) return ret
def execution_value(cls, type_defs: TypesDict, scene: Scene, project: Project, action_id: str, parameter_id: str) \ -> List[Pose]: ap, action = project.action_point_and_action(action_id) if not ap.parent: return cls.value(type_defs, scene, project, action_id, parameter_id) parameter = action.parameter(parameter_id) ret: List[Pose] = [] copy_of_ap = copy.deepcopy(ap) tr.make_relative_ap_global(scene, project, copy_of_ap) for orientation_id in cls.param_value_list(parameter): ret.append( Pose(ap.position, ap.orientation(orientation_id).orientation)) return ret
def value(cls, type_defs: TypesDict, scene: Scene, project: Project, action_id: str, parameter_id: str) -> \ ProjectRobotJoints: ap, action = project.action_point_and_action(action_id) param = action.parameter(parameter_id) joints_id = cls.param_value(param) robot_id, action_method_name = action.parse_type() robot_type = scene.object_or_service(robot_id) if issubclass(type_defs[robot_type.type], RobotService): for param in action.parameters: if param.id == "robot_id": robot_id = json.loads(param.value) break else: raise ParameterPluginException( f"Parameter {param.id} of action {action.id} depends on" f" 'robot_id' parameter, which could not be found.") return ap.joints_for_robot(robot_id, joints_id)