@@ -38,16 +38,18 @@ def get_mjcf_body(link: Link, parent_link: Link = None) -> Element:
38
38
"""
39
39
body_ele = Element ("body" )
40
40
body_name : str = link .get_name ()
41
- if parent_link == None :
41
+ if parent_link is None :
42
42
# a root of a body tree
43
- pose = math_op .matrix3d_2_euler_xyz (link .pose )
43
+ # pose = math_op.matrix3d_2_euler_xyz(link.pose)
44
+ pose = math_op .matrix3d_2_pose (link .pose )
44
45
pos_attr = "{} {} {}" .format (pose [0 ], pose [1 ], pose [2 ])
45
46
euler_attr = "{} {} {}" .format (pose [3 ], pose [4 ], pose [5 ])
46
47
else :
47
48
parent_frame : adsk .core .Matrix3D = parent_link .pose # parent_frame w.r.t world_frame
48
49
child_frame : adsk .core .Matrix3D = link .pose # child_frame w.r.t world_frame
49
50
parent_T_child : adsk .core .Matrix3D = math_op .coordinate_transform (parent_frame , child_frame )
50
- pose = math_op .matrix3d_2_euler_xyz (parent_T_child )
51
+ # pose = math_op.matrix3d_2_euler_xyz(parent_T_child)
52
+ pose = math_op .matrix3d_2_pose (parent_T_child )
51
53
pos_attr = "{} {} {}" .format (pose [0 ], pose [1 ], pose [2 ])
52
54
euler_attr = "{} {} {}" .format (pose [3 ], pose [4 ], pose [5 ])
53
55
@@ -184,8 +186,9 @@ def get_mjcf(root_comp: adsk.fusion.Component, robot_name: str, dir: str) -> Ele
184
186
# Here we use an extrinsic X-Y-Z rotation
185
187
# compiler_ele = ET.SubElement(root, "compiler",
186
188
# {"angle": "radian", "meshdir": (dir + "/meshes"), "eulerseq":"XYZ"})
189
+ # Rotation matrix to euler in "xyz" seems have problem, use "XYZ" at temporary
187
190
compiler_ele = ET .SubElement (root , "compiler" ,
188
- {"angle" : "radian" })
191
+ {"angle" : "radian" , "eulerseq" : "XYZ" })
189
192
190
193
# add asset subelement of mujoco
191
194
asset_ele = ET .SubElement (root , "asset" )
0 commit comments