
    ni!h                         S SK rS SKr " S S\5      r " S S\5      r " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r	 " S S\5      r
g)    Nc                       \ rS rSrS rSrg)UrdfInertial   c                 H    SU l         / SQU l        / SQU l        / SQU l        g )N         	   r            r      )massinertia_xxyyzz
origin_rpy
origin_xyzselfs    S/home/james-whalen/.local/lib/python3.13/site-packages/pybullet_utils/urdfEditor.py__init__UrdfInertial.__init__   s    DI#DDODO    )r   r   r   r   N__name__
__module____qualname____firstlineno__r   __static_attributes__ r   r   r   r      s     r   r   c                       \ rS rSrS rSrg)UrdfContact   c                 .    SU l         SU l        SU l        g )Nr   r   lateral_frictionrolling_frictionspinning_frictionr   s    r   r   UrdfContact.__init__   s    DDDr   r'   Nr   r"   r   r   r$   r$      s    r   r$   c                       \ rS rSrS rSrg)UrdfLink   c                 L    SU l         [        5       U l        / U l        / U l        g )Ndummy)	link_namer   urdf_inertialurdf_visual_shapesurdf_collision_shapesr   s    r   r   UrdfLink.__init__   s#    DN%D D!#Dr   )r1   r4   r2   r3   Nr   r"   r   r   r-   r-      s    $r   r-   c                       \ rS rSrS rSrg)
UrdfVisual   c                     / SQU l         / SQU l        [        R                  U l        SU l        / SQU l        SU l        SU l        / SQU l	        / SQU l
        S	U l        g )
Nr   r   r   r   
   meshfiler   r   r   )r   r   r   r    )r   r   pGEOM_BOX	geom_typegeom_radiusgeom_extentsgeom_lengthgeom_meshfilenamegeom_meshscalematerial_rgbamaterial_namer   s    r   r   UrdfVisual.__init__!   sS    DODOZZDND!DD'D#D%DDr   )
rB   rC   rD   rE   rA   r@   rG   rF   r   r   Nr   r"   r   r   r7   r7      s    
r   r7   c                       \ rS rSrS rSrg)UrdfCollision.   c                     / SQU l         / SQU l        [        R                  U l        SU l        SU l        / SQU l        SU l        / SQU l	        g )Nr   r   r   r   r   r;   r<   )
r   r   r>   r?   r@   rA   rC   rB   rD   rE   r   s    r   r   UrdfCollision.__init__0   sC    DODOZZDNDD!D'D#Dr   )rB   rC   rD   rE   rA   r@   r   r   Nr   r"   r   r   rJ   rJ   .   s    $r   rJ   c                       \ rS rSrS rSrg)	UrdfJoint;   c                     [        5       U l        SU l        [        R                  U l        SU l        SU l        SU l        SU l	        SU l
        SU l        / SQU l        / SQU l        / SQU l        g )Njoint_dummyr   
parentName	childNamer   )r-   link
joint_namer>   JOINT_REVOLUTE
joint_typejoint_lower_limitjoint_upper_limitjoint_max_forcejoint_max_velocityparent_name
child_namejoint_origin_xyzjoint_origin_rpyjoint_axis_xyzr   s    r   r   UrdfJoint.__init__=   sf    
DI#DO&&DODDDD#D!DO%D%D#Dr   )r_   rb   rZ   r\   r]   rW   ra   r`   rY   r[   rV   r^   Nr   r"   r   r   rO   rO   ;   s    $r   rO   c                       \ rS rSrS rS rS rS rSS jrSS jr	SS jr
S	 rSS
 jrSS jrS/ SQ/ SQ/ SQ/ SQSS4S jr/ SQ/ SQS4S jrS rSrg)
UrdfEditorL   c                 $    U R                  5         g N)
initializer   s    r   r   UrdfEditor.__init__N   s    OOr   c                     / U l         / U l        SU l        0 U l        [        R
                  S[        R                  S[        R                  S0U l        g )Nr=   JOINT_FIXEDrX   JOINT_PRISMATIC)		urdfLinks
urdfJoints	robotNamelinkNameToIndexr>   rl   rX   rm   jointTypeToNamer   s    r   ri   UrdfEditor.initializeQ   sJ    DNDODND--!1  "36Dr   c                    [         R                  " XUS9nUS   UR                  l        US   UR                  l        US   UR                  l        [         R                  " US   5      nXcR                  l        [         R                  " XS9nSnU GHm  n	U	S   U:X  d  M  [        5       n
U	S   U
l
        U	S   [         R                  :X  a
  U	S   U
l        U	S   [         R                  :X  a  U	S   S   U
l        U	S   [         R                  :X  a#  U	S   R!                  S5      U
l        U	S   U
l        U	S   [         R&                  :X  a  U	S   S   U
l        U	S   S   U
l        U	S   [         R*                  :X  a  U	S   S   U
l        U	S   S   U
l        U	S   U
l        [         R                  " U	S	   5      U
l        U	S
   U
l        SR/                  X(5      nXl        UR2                  R5                  U
5        US-   nGMp     [         R6                  " XUS9nU GH\  n	[9        5       nU	S   Ul
        U	S   [         R                  :X  a
  U	S   Ul        U	S   [         R                  :X  a  U	S   S   Ul        U	S   [         R                  :X  a#  U	S   R!                  S5      Ul        U	S   Ul        U	S   [         R&                  :X  a  U	S   S   Ul        U	S   S   Ul        U	S   [         R*                  :X  a  U	S   S   Ul        U	S   S   Ul        [         R:                  " US   US   U	S   U	S	   5      u  pXl        [         R                  " U5      Ul        UR<                  R5                  U5        GM_     g )NphysicsClientIdr   r   r   r   r   utf-8r   r   r	   z	mat_{}_{})r>   getDynamicsInfor2   r   r   r   getEulerFromQuaternionr   getVisualShapeDatar7   r@   r?   rB   GEOM_SPHERErA   	GEOM_MESHdecoderD   rE   GEOM_CYLINDERrC   GEOM_CAPSULErF   formatrG   r3   appendgetCollisionShapeDatarJ   multiplyTransformsr4   )r   bodyUid	linkIndexurdfLinkrv   dynrpyvisualShapesmatIndexv
urdfVisualnamecollisionShapesurdfCollisionposorns                   r   convertLinkFromMultiBody#UrdfEditor.convertLinkFromMultiBodyZ   s.   


G
PC"%a&H,/FH)(+AH%

"
"3q6
*C(+%''QLH
A$)
\
 t
aDAJJ$%aD*
!aDAMM!#$Q47*
 aDAKK)*1W)=*
&&'d*
#aDAOO##$Q47*
 #$Q47*
 aDANN"#$Q47*
 #$Q47*
  !!
 ! 8 81 >
#$Q4
 !!)6#' ##**:6a</ 2 --gRabO#om !!m
A$!**
%&qT"
A$!--
$%aDG!
A$!++
*+A$++g*>''(t$
A$!//
!$%aDG!$%aDG!
A$!..
 $%aDG!$%aDG!$$SVCFtQqTgc!$!"!9!9#!>m$$++M:) r   c                 r   U R                  5         [        5       nSnU R                  XX25        [        R                  " XS9S   R                  S5      Ul        [        R                  " XS9S   R                  S5      U l        [        U R                  5      U R                  UR                  '   U R                  R                  U5        [        [        R                  " XS95       GHJ  n[        R                  " XUS9n[        5       nU R                  XXr5        US   R                  S5      Ul        [        U R                  5      U R                  UR                  '   U R                  R                  U5        [        5       nXxl        US   R                  S5      Ul        US   Ul        US   Ul        US	   Ul        US
   Ul        US   Ul        US   Ul        US   n	U	S:  a  UR                  Ul        O.[        R                  " XUS9n
U
S   R                  S5      Ul        UR                  Ul        [        R4                  " XUS9nUS   nUS   nUS   nUS   n[        R6                  " XUU5      u  nn[        R8                  " UU5      u  nn[        R4                  " XUS9nUS   nUS   n[        R6                  " UUUU5      u  nn[        R6                  " UUU/ SQ5      u  nnUUl        [        R<                  " U5      Ul        U R@                  R                  U5        GMM     g )NrS   ru   r   rw   r      r   r
   r   r:            r   r   r%      r   r   r   r   )!ri   r-   r   r>   getBodyInfor}   r1   rp   lenrn   rq   r   rangegetNumJointsgetJointInforO   rV   rW   rY   rZ   r[   r\   r]   rb   r^   r_   rx   r   invertTransformr`   ry   ra   ro   )r   r   rv   baseLinkbaseLinkIndexj	jointInfor   	urdfJointorgParentIndexparentJointInfodynChildchildInertiaPoschildInertiaOrnparentCom2JointPosparentCom2JointOrntmpPostmpOrn	tmpPosInv	tmpOrnInv	dynParentparentInertiaPosparentInertiaOrnr   r   
orn_unuseds                             r   initializeFromBulletBody#UrdfEditor.initializeFromBulletBody   s   OO zHM!!'(TwPQRSZZ[bcH]]7LQOVVW^_DN/24>>/BD++,NN(# 1>>'KL.._Mih
##GJ$R=//8h14T^^1Dd8--.
nnH%+in&q\009i&q\i$-aLi!$-aLi!"+B-i%.r]i"!*2i }n
1
 ( 2 2	..Rab / 3 : :7 C	%//i ""7Oh o o$R=$R=++ON`,>@nff..vv>i##G_]i"1"1%%&68H)U^_hc3,,-=?O-?Ooc: $'i #$#;#;C#@i 
ooY'] Mr   c           
         UR                  S5        SR                  UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   US9nUR                  U5        SR                  UR                  US9nUR                  U5        SR                  UR
                  S   UR
                  S   UR
                  S   US9nUR                  U5        UR                  S	5        g )
Nz		<inertial>
a			<origin rpy="{:.{prec}f} {:.{prec}f} {:.{prec}f}" xyz="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
r   r   r   precz			<mass value="{:.{prec}f}"/>
z\			<inertia ixx="{:.{prec}f}" ixy="0" ixz="0" iyy="{:.{prec}f}" iyz="0" izz="{:.{prec}f}"/>
z		</inertial>
)writer   r   r   r   r   )r   fileurdfInertial	precisionstrs        r   writeInertialUrdfEditor.writeInertial   s   JJ!"
u
|
|A|66q9,:Q:QRS:TA|66q9,:Q:QRS:T[d } fC 	JJsO
1
8
89J9JQZ
8
[CJJsO
x

"""	 @ 3C 	JJsOJJ"#r   c           
      t   UR                   [        R                  :X  a  g UR                  S5        SR	                  UR
                  S   UR
                  S   UR
                  S   UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                  S5        UR                   [        R                  :X  aJ  SR	                  UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                   [        R                  :X  a+  S	R	                  UR                  US9nUR                  U5        UR                   [        R                  :X  aU  S
R	                  UR                  UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                   [        R                  :X  a6  SR	                  UR                  UR                  US9nUR                  U5        UR                   [        R                  :X  a6  SR	                  UR                  UR                  US9nUR                  U5        UR                  S5        SR	                  UR                   5      nUR                  U5        SR	                  UR"                  S   UR"                  S   UR"                  S   UR"                  S   US9nUR                  U5        UR                  S5        UR                  S5        g )Nz		<visual>
r   r   r   r   r   			<geometry>
6				<box size="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
#				<sphere radius="{:.{prec}f}"/>
F				<mesh filename="{}" scale="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
:				<cylinder length="{:.{prec}f}" radius="{:.{prec}f}"/>
9				<capsule length="{:.{prec}f}" radius="{:.{prec}f}"/>
			</geometry>
z			<material name="{}">
zE				<color rgba="{:.{prec}f} {:.{prec}f} {:.{prec}f} {:.{prec}f}" />
r   z			</material>
z		</visual>
)r@   r>   r   r   r   r   r   r?   rB   r{   rA   r|   rD   rE   r~   rC   rG   rF   )r   r   r   r   r   s        r   writeVisualShapeUrdfEditor.writeVisualShape   s   q~~-JJ 
q
x
x1j33A6z7L7LQ7O1j33A6z7L7LQ7OV_ y aC 	JJsOJJ#$qzz)KRRS]SjSjklSmq!*"9"9!"<9 S Nc
jjoq}},8??
@V@V @ c
jjoq{{*]dd"":#<#<Q#?
@Y@YZ[@\]g]v]vwx]y e c jjoq.QXXz55I Y Gc
jjoq~~-PWWz55I X Gc
jjoJJ$%
*
1
1*2J2J
KCJJsO
V
]
]^h^v^vwx^ya !9!9!!<Z=U=UVW=X^g ^ iCJJsOJJ$%JJ !r   c           
         UR                  S5        SR                  UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                  S5        UR                  [
        R                  :X  aJ  SR                  UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                  [
        R                  :X  a+  S	R                  UR                  US9nUR                  U5        UR                  [
        R                  :X  aU  S
R                  UR                  UR                  S   UR                  S   UR                  S   US9nUR                  U5        UR                  [
        R                  :X  a6  SR                  UR                  UR                  US9nUR                  U5        UR                  [
        R                  :X  a6  SR                  UR                  UR                  US9nUR                  U5        UR                  S5        UR                  S5        g )Nz		<collision>
r   r   r   r   r   r   r   r   r   r   r   r   z		</collision>
)r   r   r   r   r@   r>   r?   rB   r{   rA   r|   rD   rE   r~   rC   r   )r   r   r   r   r   s        r   writeCollisionShapeUrdfEditor.writeCollisionShape  sL   JJ"#
q
x
xa !9!9!!<]=U=UVW=Xa !9!9!!<]=U=UVW=X_h y jC 	JJsOJJ#$!**,KRRS`SmSmnoSp!!!$]%?%?%B S Tc
jjo!--/8??@Y@Y @ c
jjo!++-]dder  fE  fE##A&}'C'CA'F}GcGcdeGflu e wc
jjo!//1QXX  -";";) Y Mc
jjo!..0PWW  -";";) X Mc
jjoJJ$%JJ#$r   c                    UR                  S5        UR                  UR                  5        UR                  S5        U R                  XR                  5        SnUR                   H%  nUR
                  [        R                  :X  d  M#  SnM'     U(       a+  U(       d$  UR                   H  nU R                  X5        M     UR                   H  nU R                  X5        M     UR                  S5        g )Nz	<link name="">
FTz		</link>
)r   r1   r   r2   r3   r@   r>   r   r   r4   r   )r   r   r   saveVisualshasCapsulesr   cs          r   	writeLinkUrdfEditor.writeLink*  s    JJ !JJx!!"JJwt334K((
++
' ) 	K**!d& +++
t' ,JJ}r   c           
         SnUR                   [        R                  :X  a  UR                  UR                  :  a  SnOSnUR                   [        R
                  :X  a  SnUR                   [        R                  :X  a  SnSR                  UR                  U5      nUR                  U5        SR                  UR                  5      nUR                  U5        SR                  UR                  5      nUR                  U5        US:X  d  US:X  aR  UR                  nUR                  nUR                  nUR                  n	S	R                  XXyUS
9nUR                  U5        UR                  S5        SR                  UR                  S   UR                  S   UR                  S   US
9nSR                  UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   UR                  S   US
9nUR                  U5        SR                  UR                   S   UR                   S   UR                   S   US
9nUR                  U5        UR                  S5        g )Ninvalid
continuousrevolutefixed	prismaticz	<joint name="{}" type="{}">
z		<parent link="{}"/>
z		<child link="{}"/>
z_		<limit effort="{:.{prec}f}" lower="{:.{prec}f}" upper="{:.{prec}f}" velocity="{:.{prec}f}"/>
r   z.		<dynamics damping="1.0" friction="0.0001"/>
z6		<origin xyz="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
r   r   r   z`		<origin rpy="{:.{prec}f} {:.{prec}f} {:.{prec}f}" xyz="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
z4		<axis xyz="{:.{prec}f} {:.{prec}f} {:.{prec}f}"/>
z
	</joint>
)rY   r>   rX   r[   rZ   rl   rm   r   rW   r   r^   r_   r\   r]   r`   ra   rb   )
r   r   r   r   jointTypeStrr   
lowerLimit
upperLimitmaxForcemaxVelocitys
             r   
writeJointUrdfEditor.writeJoint;  sg   Lq///		$	$y'B'B	B#!q}},lq000 l
/
6
6y7K7K\
ZCJJsO
'
.
.y/D/D
ECJJsO
&
-
-i.B.B
CCJJsO{"lj&@..j..j**h00kpww

i x Ic
jjoJJFG
G
N
NyOiOijkOl"9#=#=a#@y O RC
s
z
z  |E  |V  |V  WX  |Y"9#=#=a#@""9#=#=a#@y { RC
 	JJsO
E
L
LYMeMefgMha !9!9!!<9 M NCJJsOJJ~r   c                    [        US5      nUR                  S5        UR                  S5        UR                  U R                  5        UR                  S5        U R                   H  nU R	                  X4U5        M     U R
                   H  nU R                  X55        M     UR                  S5        UR                  5         g )Nwz<?xml version="0.0" ?>
z<robot name="r   z	</robot>
)openr   rp   rn   r   ro   r   close)r   fileNamer   r   rV   joints         r   saveUrdfUrdfEditor.saveUrdfe  s    #DJJ+,JJ JJt~~JJw
nnT-  
ood" ! 	JJ|JJLr   r   r   r   r   c	                    [        U R                  5      n	[        U R                  5      n
UR                   HJ  n[        U R                  5      U R                  UR                  '   U R                  R                  U5        ML     UR                   H  nU R                  R                  U5        M      [        R                  " U5      n[        R                  " X]5      u  p[        R                  " U R                  U	   R                  R                  [        R                  " U R                  U	   R                  R                  5      UUUS9u  nnUU R                  U	   R                  l        [        R                  " U5      U R                  U	   R                  l        U R                  U	   R                   Hh  n[        R                  " UR                  [        R                  " UR                  5      X5      u  nnUUl        [        R                  " U5      Ul        Mj     U R                  U	   R                   Hh  n[        R                  " UR                  [        R                  " UR                  5      X5      u  nnUUl        [        R                  " U5      Ul        Mj     U R                  U	   nU R                  U   n[!        5       nUUl        SUl        [        R&                  Ul        SUl        SUl        UR                  Ul        UR                  Ul        X<l        XLl        / SQUl        U R                  R9                  X5        U$ )Nru   joint_dummy1r   rS   )r   r   r   )r   rn   ro   rq   r1   r   r>   getQuaternionFromEulerr   r   r2   r   r   ry   r3   r4   rO   rV   rW   rX   rY   rZ   r[   r^   r_   r`   ra   rb   insert)r   childEditorparentLinkIndexjointPivotXYZInParentjointPivotRPYInParentjointPivotXYZInChildjointPivotRPYInChildparentPhysicsClientIdchildPhysicsClientIdchildLinkIndexinsertJointIndexrV   r   jointPivotQuatInChildinvJointPivotXYZInChildinvJointPivotQuatInChildr   r   r   r   	childLink
parentLinks                         r   joinUrdfUrdfEditor.joinUrdfx  s    (N4??+ %%-0-@d4>>*
nnD! & ''
ooU# ( 445IJ898I8I955
 ##DNN>$B$P$P$[$[$%$<$<(,~(F(T(T(_(_%a$;$<4IKHC ?BDNN>"00;>?>V>VWZ>[DNN>"00;^^N+>>%%allA4L4LQ\\4Z&=Yhc3al--c2al	 ? ^^N+AA%%allA4L4LQ\\4Z&=Yhc3al--c2al	 B ~.I0JKEEJ%E''EE E",,E **E22$E 	OO+3Lr   r   c                    [        U R                  5      S:X  a  gU R                  S   nUR                  R                  nSn/ n/ n/ n	/ n
/ n/ n/ n/ nUR                   GH  nUR
                  nUR                  U5        U	R                  SUR                  S   -  SUR                  S   -  SUR                  S   -  /5        UR                  UR                  5        U
R                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        [        R                  " UR                  5      nUR                  U5        GM      [        U5      (       a  [        R                   " UUU	U
UUUUUS9	nUR"                  nU Vs/ s H  oR
                  PM     nnU VVs/ s H"  oR                   Vs/ s H  nUS-  PM
     snPM$     nnnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR$                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H#  n[        R                  " UR                  5      PM%     nnSn[        U5      (       a  [        R&                  " UUUUUUUUUUS9
n/ n/ n/ n / n!/ n"/ n#/ n$/ n%/ n&/ n'U R(                   GHZ  n(U(R*                  n)U)R                  R                  n*Sn+Sn,/ SQn-/ SQn./ SQn// SQn0U R,                  U(R.                     n1U(R0                  n2U(R2                  n3/ n4/ n5/ n6/ n
/ n/ n7/ n8/ n9U)R                   GH  nUR
                  nU4R                  U5        U6R                  SUR                  S   -  SUR                  S   -  SUR                  S   -  /5        U5R                  UR                  5        U
R                  UR                  5        UR                  UR                  5        U7R                  UR                  5        U8R                  UR                  5        U9R                  [        R                  " UR                  5      5        GM     [        U45      (       a  [        R                   " U4U5U6U
UU7U8U9US9	n+U)R"                  nSn,U Vs/ s H  oR
                  PM     nnU VVs/ s H"  oR                   Vs/ s H  nUS-  PM
     snPM$     nnnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H  oR$                  PM     nnU Vs/ s H  oR                  PM     nnU Vs/ s H#  n[        R                  " UR                  5      PM%     nn[        U5      (       a)  [5        S	U5        [        R&                  " UUUUUUUUUUS9
n,UR                  U*5        UR                  U+5        U R                  U,5        U!R                  U(R6                  5        U"R                  [        R                  " U(R8                  5      5        U#R                  U)R                  R                  5        U$R                  [        R                  " U)R                  R                  5      5        U%R                  U15        U&R                  U(R0                  5        U'R                  U(R2                  5        GM]     [        R:                  " U40 S
U_SU_SU_SU_SUR                  R                  _S[        R                  " UR                  R                  5      _SU_SU_SU _SU!_SU"_SU#_SU$_SU%_SU&_SU'_SU_6n:U:$ s  snf s  snf s  snnf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snnf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nr   rS   g      ?r   r   )	
shapeTypesradiihalfExtentslengths	fileNames
meshScalescollisionFramePositionscollisionFrameOrientationsrv   )
r  r  r  r  r  r  
rgbaColorsvisualFramePositionsvisualFrameOrientationsrv   r   z
fileNames=baseCollisionShapeIndexbaseVisualShapeIndexbasePositionbaseOrientationbaseInertialFramePositionbaseInertialFrameOrientation
linkMasseslinkCollisionShapeIndiceslinkVisualShapeIndiceslinkPositionslinkOrientationslinkInertialFramePositionslinkInertialFrameOrientationslinkParentIndiceslinkJointTypeslinkJointAxisrv   )r   rn   r2   r   r4   r@   r   rB   rA   rC   rD   rE   r   r>   r   r   createCollisionShapeArrayr3   rF   createVisualShapeArrayro   rV   rq   r^   rY   rb   printr`   ra   createMultiBody);r   r  r  rv   basebaseMassr  baseShapeTypeArraybaseRadiusArraybaseHalfExtentsArraylengthsArrayfileNameArraymeshScaleArraybasePositionsArraybaseOrientationsArrayr   	shapeTyper   urdfVisualsr  extr  r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rV   linkMasslinkCollisionShapeIndexlinkVisualShapeIndexlinkPositionlinkOrientationlinkInertialFramePositionlinkInertialFrameOrientationlinkParentIndexlinkJointTypelinkJointAxlinkShapeTypeArraylinkRadiusArraylinkHalfExtentsArraylinkMeshScaleArraylinkPositionsArraylinkOrientationsArrayobUids;                                                              r   r   UrdfEditor.createMultiBody  s
   
 	DNNq 
 >>!D !!&&H OLMN''++i	*!!""C!..*;$;S1>>RSCT=T
UWQ]]+!--(1../A,,--$$Q\\2c""3' ( 	 ! ; ;'*!#"4%:)	!+ ))K'23{!++{J3BMN+Q8#C#I8+KN$/0Kq]]KE0&12k}}kG2.9:k$$kI:,78Kq""KJ8+67;a//;J72=>+QLL+>OZ[{!q77E{[J 55!3"9)
+ J "M!#$&!NMZZd##((h "l!o"+%.",,U->->?o&&m((kolm ))!KK	!!),##1>>!$$cANN1,=&=sQ^^TUEV?VW	Yq}}-AMM*Q001!!!"2"23!!!,,/$$Q%=%=all%KL *  
!
!"#"="=)!, #)$6'<+	#- ++k)45AKKj5DOPKq>>:>CcCi>:KkP&12k}}ke2(341g40;<1&&i<.9:k$$kj:-89[OO[j94?@KqllK@Q\ ]Q\A!9!9!,,!GQ\ ]
j//lI& 77!#!!!5$;+
 - !&&'>?##$895112a66u7M7MNO ''(:(:(E(EF#**1+C+CDDVDVDaDa+bc/E,,-5//0c !d h (6(?S( !( '	(
 "&!3!3!>!>( %&$<$<T=O=O=Z=Z$[( ( ";( 5( #( )( #=( &C( +( %(  #!(" '#(E$ Le 48N02:87>[j 6:P24<:9@ ]s   <`
`+`:``#`>`$`)4`.`3**`8
`=&a9aaa1aa'aa!a&8*a+`ac                     g rh   r"   r   s    r   __del__UrdfEditor.__del__  s    r   )rr   rq   rp   ro   rn   N)r   )T)r   r   r   r    r   ri   r   r   r   r   r   r   r   r   r   r   rA  r!   r"   r   r   re   re   L   sm    69;v;(z$)"V%<"(T*  !%.%.$-$-%&$%EP $-&2&'GR	r   re   )pybulletr>   timeobjectr   r$   r-   r7   rJ   rO   re   r"   r   r   <module>rF     sa      6  & $v $ 
$F 
$$ $"}	 }	r   