Skip to content

Commit e37c33e

Browse files
urdf, sdf: Use sealed XML reflection bits
Clean up tests.
1 parent ccc3098 commit e37c33e

File tree

8 files changed

+277
-286
lines changed

8 files changed

+277
-286
lines changed

src/urdf_parser_py/sdf.py

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
from urdf_parser_py.xml_reflection.basics import *
2-
import urdf_parser_py.xml_reflection as xmlr
1+
from urdf_parser_py import _now_private_property
2+
import urdf_parser_py._xml_reflection as _xmlr
33

4-
# What is the scope of plugins? Model, World, Sensor?
4+
_xmlr.start_namespace('sdf')
55

6-
xmlr.start_namespace('sdf')
76

8-
9-
class Pose(xmlr.Object):
7+
class Pose(_xmlr.Object):
108
def __init__(self, vec=None, extra=None):
119
self.xyz = None
1210
self.rpy = None
@@ -32,37 +30,37 @@ def as_vec(self):
3230
rpy = self.rpy if self.rpy else [0, 0, 0]
3331
return xyz + rpy
3432

35-
def read_xml(self, node):
33+
def _read_xml(self, node):
3634
# Better way to do this? Define type?
37-
vec = get_type('vector6').read_xml(node)
38-
self.load_vec(vec)
35+
vec = _xmlr.get_type('vector6').read_xml_value(node)
36+
self.from_vec(vec)
3937

40-
def write_xml(self, node):
38+
def _write_xml(self, node):
4139
vec = self.as_vec()
42-
get_type('vector6').write_xml(node, vec)
40+
_xmlr.get_type('vector6').write_xml_value(node, vec)
4341

44-
def check_valid(self):
42+
def _check_valid(self):
4543
assert self.xyz is not None or self.rpy is not None
4644

4745

48-
name_attribute = xmlr.Attribute('name', str)
49-
pose_element = xmlr.Element('pose', Pose, False)
46+
_name_attribute = _xmlr.Attribute('name', str)
47+
_pose_element = _xmlr.Element('pose', Pose, required=False)
5048

5149

52-
class Entity(xmlr.Object):
50+
class Entity(_xmlr.Object):
5351
def __init__(self, name=None, pose=None):
5452
self.name = name
5553
self.pose = pose
5654

5755

58-
xmlr.reflect(Entity, params=[
59-
name_attribute,
60-
pose_element
56+
_xmlr.reflect(Entity, params=[
57+
_name_attribute,
58+
_pose_element
6159
])
6260

6361

64-
class Inertia(xmlr.Object):
65-
KEYS = ['ixx', 'ixy', 'ixz', 'iyy', 'iyz', 'izz']
62+
class Inertia(_xmlr.Object):
63+
_KEYS = ['ixx', 'ixy', 'ixz', 'iyy', 'iyz', 'izz']
6664

6765
def __init__(self, ixx=0.0, ixy=0.0, ixz=0.0, iyy=0.0, iyz=0.0, izz=0.0):
6866
self.ixx = ixx
@@ -79,24 +77,21 @@ def to_matrix(self):
7977
[self.ixz, self.iyz, self.izz]]
8078

8179

82-
xmlr.reflect(Inertia,
83-
params=[xmlr.Element(key, float) for key in Inertia.KEYS])
84-
85-
# Pretty much copy-paste... Better method?
86-
# Use multiple inheritance to separate the objects out so they are unique?
80+
_xmlr.reflect(Inertia, tag='inertia',
81+
params=[_xmlr.Element(key, float) for key in Inertia._KEYS])
8782

8883

89-
class Inertial(xmlr.Object):
84+
class Inertial(_xmlr.Object):
9085
def __init__(self, mass=0.0, inertia=None, pose=None):
9186
self.mass = mass
9287
self.inertia = inertia
9388
self.pose = pose
9489

9590

96-
xmlr.reflect(Inertial, params=[
97-
xmlr.Element('mass', float),
98-
xmlr.Element('inertia', Inertia),
99-
pose_element
91+
_xmlr.reflect(Inertial, tag='inertial', params=[
92+
_xmlr.Element('mass', float),
93+
_xmlr.Element('inertia', Inertia),
94+
_pose_element
10095
])
10196

10297

@@ -107,14 +102,21 @@ def __init__(self, name=None, pose=None, inertial=None, kinematic=False):
107102
self.kinematic = kinematic
108103

109104

110-
xmlr.reflect(Link, parent_cls=Entity, params=[
111-
xmlr.Element('inertial', Inertial),
112-
xmlr.Attribute('kinematic', bool, False),
113-
xmlr.AggregateElement('visual', Visual, var='visuals'),
114-
xmlr.AggregateElement('collision', Collision, var='collisions')
105+
_xmlr.reflect(Link, tag='link', parent_cls=Entity, params=[
106+
_xmlr.Element('inertial', Inertial),
107+
_xmlr.Attribute('kinematic', bool, False),
108+
_xmlr.AggregateElement('visual', Visual, var='visuals'),
109+
_xmlr.AggregateElement('collision', Collision, var='collisions')
115110
])
116111

117112

113+
class Joint(Entity):
114+
pass
115+
116+
117+
_xmlr.reflect(Joint, tag='joint', parent_cls=Entity, params=[])
118+
119+
118120
class Model(Entity):
119121
def __init__(self, name=None, pose=None):
120122
Entity.__init__(self, name, pose)
@@ -123,10 +125,10 @@ def __init__(self, name=None, pose=None):
123125
self.plugins = []
124126

125127

126-
xmlr.reflect(Model, parent_cls=Entity, params=[
127-
xmlr.AggregateElement('link', Link, var='links'),
128-
xmlr.AggregateElement('joint', Joint, var='joints'),
129-
xmlr.AggregateElement('plugin', Plugin, var='plugins')
128+
_xmlr.reflect(Model, parent_cls=Entity, params=[
129+
_xmlr.AggregateElement('link', Link, var='links'),
130+
_xmlr.AggregateElement('joint', Joint, var='joints'),
131+
_xmlr.AggregateElement('plugin', Plugin, var='plugins')
130132
])
131133

132-
xmlr.end_namespace('sdf')
134+
_xmlr.end_namespace('sdf')

0 commit comments

Comments
 (0)