Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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)