Source code for brom_drake.file_manipulation.urdf.shapes.shape_definition
from dataclasses import dataclass
from enum import IntEnum
import numpy as np
from typing import Union
import xml.etree.ElementTree as ET
[docs]
class ShapeEnum(IntEnum):
"""
*Description*
The different simple shapes that can be created.
"""
kBox = 1
kSphere = 2
kCylinder = 3
kCapsule = 4
# Shape Definition Can be any one of these
[docs]
@dataclass
class ShapeDefinition:
"""
*Description*
Base class for defining a shape as per URDF specifications.
"""
[docs]
def add_geometry_to_element(self, target_element: ET.Element) -> ET.Element:
"""
*Description*
Adds the shape geometry as a sub-element to the given target element.
This method must be implemented in subclasses.
*Parameters*
target_element: xml.etree.ElementTree.Element
The target XML element to which the shape geometry will be added.
*Returns*
xml.etree.ElementTree.Element
The element `target_element` with the shape geometry added as a sub-element.
"""
raise NotImplementedError("This method must be implemented in the subclass.")
@property
def type(self) -> ShapeEnum:
"""
*Description*
Returns the ShapeEnum type corresponding to the shape.
This method must be implemented in subclasses.
*Returns*
ShapeEnum
The ShapeEnum type for the shape.
"""
raise NotImplementedError("This method must be implemented in the subclass.")