Esempio n. 1
0
    def parameter_value(
        cls, type_defs: TypesDict, scene: CScene, project: CProject, 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, project.orientation(orientation_id).orientation))

        return ret
Esempio n. 2
0
    def parameter_execution_value(
        cls, type_defs: TypesDict, scene: CScene, project: CProject, action_id: str, parameter_id: str
    ) -> List[Pose]:

        ap, action = project.action_point_and_action(action_id)

        if not ap.parent:
            return copy.deepcopy(cls.parameter_value(type_defs, scene, project, action_id, parameter_id))

        parameter = action.parameter(parameter_id)
        ret: List[Pose] = []

        for orientation_id in cls._param_value_list(parameter):
            ret.append(copy.deepcopy(tr.abs_pose_from_ap_orientation(scene, project, orientation_id)))

        return ret
Esempio n. 3
0
    def parameter_value(cls, type_defs: TypesDict, scene: CScene,
                        project: CProject, action_id: str,
                        parameter_id: str) -> ProjectRobotJoints:

        try:
            ap, action = project.action_point_and_action(action_id)
            param = action.parameter(parameter_id)
            joints_id = cls._id_from_value(param.value)

            robot_id, action_method_name = action.parse_type()

            joints = project.joints(joints_id)
        except Arcor2Exception as e:
            raise ParameterPluginException(
                "Failed to get necessary data from project.") from e

        if joints.robot_id != robot_id:
            raise ParameterPluginException("Joints are for different robot.")

        return joints
Esempio n. 4
0
    def parameter_ast(cls, type_defs: TypesDict, scene: CScene,
                      project: CProject, action_id: str,
                      parameter_id: str) -> Attribute:

        ap, action = project.action_point_and_action(action_id)
        joints = project.joints(
            cls._id_from_value(action.parameter(parameter_id).value))

        return Attribute(
            value=Attribute(
                value=Attribute(
                    value=Name(id="aps", ctx=Load()),
                    attr=ap.name,
                    ctx=Load()  # TODO this should not be hardcoded
                ),
                attr="joints",  # TODO this should not be hardcoded
                ctx=Load(),
            ),
            attr=joints.name,
            ctx=Load(),
        )