Version 6 (modified by welberge, 6 years ago) (diff)







<PhysicalHumanoid xmlns:col="">
   <PhysicalRootSegment startJoint="HumanoidRoot" endJoint="l_hip r_hip l_shoulder r_shoulder skullbase" mass="41.543926" position="1.1168412E-6 1.2506841 0.017299622" I="2.4438405 9.874611E-4 -1.2528268E-4 9.874611E-4 0.5218161 -0.14273751 -1.2528268E-4 -0.14273751 2.3856416">
                     <col:half_extents>0.159157 0.1367995 0.1083425
                  -1.1168412E-6 -0.26656365 -0.008797124
 <PhysicalSegment startJoint="l_hip" endJoint="l_knee" mass="8.822567" position="0.091620825 0.7683674 0.0058982586" I="0.53947634 0.0047381283 -5.1481114E-4 0.0047381283 0.02644808 0.013028727 -5.1481114E-4 0.013028727 0.53612715" type="universal" axis1="1.0 0.0 0.0" axis2="0.0 0.0 1.0" loStop1="-2.024582" hiStop1="0.0" loStop2="-0.54105204" hiStop2="0.5235988" loStop3="-0.54105204" hiStop3="0.9250245">

Collisionmodel describes the collision shape of each segment of the body in|Collada.

XML definition


Coordinate systems


joint.addTorque(x,y,z) applies a torque of x on the 1st joint axis (typically its local x axis), y on the 2nd joint axis (typically its local y axis), etc. The torque is applied to the joint that rotates the underlying physical segment. The opposite torque is applied to the physical segment above. So if you add a torque of (10,0,0) on the knee joint, this is transfered to a torque of (10,0,0) on the knee segment and a torque of (-10,0,0) on the hip segment.

joint.getAngle(i) returns the angle around the ith axis of the joint

PhysicalSegment return the rotation/translation of a segment in world coordinates. box.getInertiaTensor() provides the inertiatensor on the center of mass of the segment in world coordinates when it has identity rotation.


ph.getCOM()/getCOMDiff return the Center of Mass / its velocity in world coordinates.