예제 #1
0
def get_triangle_centers_from_urdf(urdfilename, linkName, skinFrameName,
                                   trianglesNumbersList):
    iDynTree.init_numpy_helpers()
    mdlLoader = iDynTree.ModelLoader()
    mdlLoader.loadModelFromFile(urdfilename)
    kinDyn = iDynTree.KinDynComputations()
    kinDyn.loadRobotModel(mdlLoader.model())

    # The results is returned by this function already in the frame used by the skin
    centersAndNormals = {}
    centersAndNormals['centers'] = {}
    centersAndNormals['normals'] = {}

    for triangleNumber in trianglesNumbersList:
        # Get center in link frame
        triangleFrameName = linkName + "_skin_" + str(triangleNumber)
        skinFrame_H_triangleFrameName = kinDyn.getRelativeTransform(
            skinFrameName, triangleFrameName)
        triangleCenter_wrt_skinFrame = skinFrame_H_triangleFrameName.getPosition(
        )
        skinFrame_R_triangleFrame = skinFrame_H_triangleFrameName.getRotation(
        ).toNumPy()
        centersAndNormals['centers'][
            triangleNumber] = triangleCenter_wrt_skinFrame.toNumPy()
        centersAndNormals['normals'][
            triangleNumber] = skinFrame_R_triangleFrame[:, 2]

    return centersAndNormals
예제 #2
0
    def get_model_loader(model_file: str, considered_joints: List[str] = None):

        # Find the urdf file
        urdf_file = resource_finder.find_resource(file_name=model_file)

        # Get the file extension
        folder, model_file = os.path.split(urdf_file)
        model_name, extension = os.path.splitext(model_file)

        if extension == ".sdf":
            raise RuntimeError(
                "SDF models are not currently supported by iDynTree")

        # Create the model loader
        mdl_loader = idt.ModelLoader()

        # Load the urdf model
        if considered_joints is None:
            ok_load = mdl_loader.loadModelFromFile(urdf_file)
        else:
            ok_load = mdl_loader.loadReducedModelFromFile(
                urdf_file, considered_joints)

        if not ok_load:
            raise RuntimeError(f"Failed to load model from file '{urdf_file}'")

        return mdl_loader
예제 #3
0
    def _get_model_loader(
        urdf: str, joint_serialization: List[str] = None
    ) -> idt.ModelLoader:

        # Get the model loader
        model_loader = idt.ModelLoader()

        if not os.path.exists(urdf):
            raise FileNotFoundError(urdf)

        # Load the model
        if joint_serialization:
            ok_load = model_loader.loadReducedModelFromFile(urdf, joint_serialization)
        else:
            ok_load = model_loader.loadModelFromFile(urdf)

        if not ok_load:
            raise RuntimeError("Failed to load model")

        # Due to some SWIG internal, returning the model contained by the loader
        # does not work as expected
        return model_loader