Skip to content

Commit 6b54b99

Browse files
Add rotation in nested model test cases
Signed-off-by: Shameek Ganguly <shameek@intrinsic.ai>
1 parent 6e190a7 commit 6b54b99

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

sdformat_mjcf/src/sdformat_mjcf/sdformat_to_mjcf/converters/model.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ def add_model(mjcf_root, model):
4242
model_pose = graph_resolver.resolve_pose(model.semantic_pose())
4343

4444
def convert_node(body, node, link_pose):
45-
# A node may be assigned a scoped name if it belongs to a child model
46-
# for disambiguation. In this case, use the scoped name for the link
47-
# body.
4845
child_body = add_link(body, node.link, node.parent_node.scoped_name,
4946
link_pose, node.scoped_name)
5047

sdformat_mjcf/src/sdformat_mjcf/sdformat_to_mjcf/sdf_kinematics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __init__(self, link, parent=None, joint=FreeJoint()):
5454
# connected to the world link with a free joint.
5555
self.resolved_pose = Pose3d()
5656

57-
# Scoped name assigned for child model links
57+
# The scoped name of the link relative to the kinematic hierarchy root.
5858
self.scoped_name = None
5959

6060
def __repr__(self):
@@ -114,7 +114,7 @@ def __init__(self, model):
114114
child_model_pose = su.graph_resolver.resolve_pose(
115115
child_model.semantic_pose())
116116
for cn in child_kh.world_node.child_nodes:
117-
cn.resolved_pose *= child_model_pose
117+
cn.resolved_pose = child_model_pose * cn.resolved_pose
118118
# Removing the child node from child_kh.world_node is
119119
# unnecessary and dangerous since it affects the iterable.
120120
self.world_node.add_child(cn, cn.joint)

sdformat_mjcf/tests/sdformat_to_mjcf/test_add_model.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,9 @@ def test_nested_model_fixed_joint(self):
208208
</collision>
209209
</link>
210210
<model name="modelB">
211-
<pose>0 1 0 0 0 0</pose>
211+
<pose>0 1 0 0 0 1.5707</pose>
212212
<link name="linkA">
213-
<pose>0 1 0 0 0 0</pose>
213+
<pose>0 1 0 1.5707 0 0</pose>
214214
<collision name="c1">
215215
<geometry>
216216
<sphere><radius>2</radius></sphere>
@@ -244,7 +244,7 @@ def test_nested_model_fixed_joint(self):
244244
_resolveTo="modelB::linkA")
245245
modelB_linkA_expected_pos = su.vec3d_to_list(
246246
sdf_linkA_pose.inverse().pos())
247-
assert_allclose(modelB_linkA_expected_pos, mj_modelB_linkA.pos)
247+
assert_allclose(modelB_linkA_expected_pos, mj_modelB_linkA.pos, atol=1e-10)
248248

249249
def test_nested_model_multi_level(self):
250250
test_model_sdf = """
@@ -289,9 +289,9 @@ def test_nested_model_fixed_joint_with_nested_parent_link(self):
289289
</collision>
290290
</link>
291291
<model name="modelB">
292-
<pose>0 1 0 0 0 0</pose>
292+
<pose>0 1 0 0 0 1.5707</pose>
293293
<link name="linkA">
294-
<pose>0 10 0 0 0 0</pose>
294+
<pose>0 10 0 1.5707 0 0</pose>
295295
<collision name="c2">
296296
<geometry>
297297
<sphere><radius>2</radius></sphere>
@@ -329,14 +329,14 @@ def test_nested_model_fixed_joint_with_nested_parent_link(self):
329329
modelB_linkA_expected_pos = su.vec3d_to_list(
330330
(sdf_modelA.raw_pose() * sdf_modelB_linkA_pose).pos()
331331
)
332-
assert_allclose(modelB_linkA_expected_pos, mj_modelB_linkA.pos)
332+
assert_allclose(modelB_linkA_expected_pos, mj_modelB_linkA.pos, atol=1e-10)
333333

334334
# Verify that the right pos was set for (modelA::)linkA
335335
sdf_linkA = sdf_modelA.link_by_name("linkA")
336336
sdf_linkA_pose = sdf_linkA.semantic_pose().resolve(
337337
_resolveTo="modelB::linkA")
338338
modelA_linkA_expected_pos = su.vec3d_to_list(sdf_linkA_pose.pos())
339-
assert_allclose(modelA_linkA_expected_pos, mj_modelA_linkA.pos)
339+
assert_allclose(modelA_linkA_expected_pos, mj_modelA_linkA.pos, atol=1e-10)
340340

341341

342342
if __name__ == "__main__":

0 commit comments

Comments
 (0)