xmlr.Attribute('value', "vector")]) class Sphere(xmlr.Object): def __init__(self, center=None, radius=0.0): self.center = center self.radius = radius xmlr.reflect( Sphere, params=[xmlr.Attribute('center', str), xmlr.Attribute('radius', float)]) # Common stuff again link_element = xmlr.Element('link', Link, False) class VirtualJoint(xmlr.Object): TYPES = ['unknown', 'fixed', 'floating', 'planar'] def __init__(self, name=None, child_link=None, parent_frame=None, joint_type=None): self.name = name self.child_link = child_link self.parent_frame = parent_frame self.type = joint_type
name_attribute, xmlr.Attribute('value', float) ]) class Sphere(xmlr.Object): def __init__(self, center = None, radius = 0.0): self.center = center self.radius = radius xmlr.reflect(Sphere, params = [ xmlr.Attribute('center', str), xmlr.Attribute('radius', float) ]) # Common stuff again link_element = xmlr.Element('link', Link, False) class VirtualJoint(xmlr.Object): TYPES = ['unknown', 'fixed', 'floating', 'planar'] def __init__(self, name = None, child_link = None, parent_frame = None, joint_type = None): self.name = name self.child_link = child_link self.parent_frame = parent_frame self.type = joint_type def check_valid(self): assert self.type in self.TYPES, "Invalid joint type: {}".format(self.type) # Aliases @property
return self.xyz @position.setter def position(self, value): self.xyz = value xmlr.reflect(Pose, params=[ xmlr.Attribute('xyz', 'vector3', False, default=[0, 0, 0]), xmlr.Attribute('rpy', 'vector3', False, default=[0, 0, 0]) ]) # Common stuff name_attribute = xmlr.Attribute('name', str) origin_element = xmlr.Element('origin', Pose, False) class Color(xmlr.Object): def __init__(self, *args): # What about named colors? count = len(args) if count == 4 or count == 3: self.rgba = args elif count == 1: self.rgba = args[0] elif count == 0: self.rgba = None if self.rgba is not None: if len(self.rgba) == 3: self.rgba += [1.]
def read_xml(self, node): # Better way to do this? Define type? vec = get_type('vector6').read_xml(node) self.load_vec(vec) def write_xml(self, node): vec = self.as_vec() get_type('vector6').write_xml(node, vec) def check_valid(self): assert self.xyz is not None or self.rpy is not None name_attribute = xmlr.Attribute('name', str) pose_element = xmlr.Element('pose', Pose, False) class Entity(xmlr.Object): def __init__(self, name=None, pose=None): self.name = name self.pose = pose xmlr.reflect(Entity, params=[name_attribute, pose_element]) class Inertia(xmlr.Object): KEYS = ['ixx', 'ixy', 'ixz', 'iyy', 'iyz', 'izz'] def __init__(self, ixx=0.0, ixy=0.0, ixz=0.0, iyy=0.0, iyz=0.0, izz=0.0):
return self.xyz @position.setter def position(self, value): self.xyz = value xmlr.reflect(Pose, params=[ xmlr.Attribute('xyz', 'vector3', False), xmlr.Attribute('rpy', 'vector3', False) ]) # Common stuff name_attribute = xmlr.Attribute('name', str) origin_element = xmlr.Element('origin', Pose, False) class Color(xmlr.Object): def __init__(self, *args): # What about named colors? count = len(args) if count == 4 or count == 3: self.rgba = args elif count == 1: self.rgba = args[0] elif count == 0: self.rgba = None if self.rgba is not None: if len(self.rgba) == 3: self.rgba += [1.]
def read_xml(self, node): # Better way to do this? Define type? vec = get_type("vector6").read_xml(node) self.load_vec(vec) def write_xml(self, node): vec = self.as_vec() get_type("vector6").write_xml(node, vec) def check_valid(self): assert self.xyz is not None or self.rpy is not None name_attribute = xmlr.Attribute("name", str) pose_element = xmlr.Element("pose", Pose, False) class Entity(xmlr.Object): def __init__(self, name=None, pose=None): self.name = name self.pose = pose xmlr.reflect(Entity, params=[name_attribute, pose_element]) class Inertia(xmlr.Object): KEYS = ["ixx", "ixy", "ixz", "iyy", "iyz", "izz"] def __init__(self, ixx=0.0, ixy=0.0, ixz=0.0, iyy=0.0, iyz=0.0, izz=0.0):