def add_iCub(damping = 2, H_init=None, fixed_base=True): if H_init is None: H_init = lgsm.Displacement() H_init = lgsm.Displacement(H_init) world = desc.scene.createWorld() bodies_data = XDEiCub.get_bodies_data() kin_tree = XDEiCub.get_kinematic_tree(damping) ########## Build physical scene print "add iCub Kinematic Tree" desc.physic.fillKinematicTree(world.scene.physical_scene.nodes.add(), tree=kin_tree, fixed_base=fixed_base, H_init=H_init) print "add iCub Mechanism" desc.physic.addMechanism(world.scene.physical_scene, name="iCub", root_node="waist", trim_nodes=[], bodies=list(bodies_data), segments=list(bodies_data)) phy_root = desc.physic.findInPhysicalScene(world.scene.physical_scene, "waist") def setNodeMomentsOfInertia(node): b_name = node.rigid_body.name MoI = bodies_data[b_name][1] node.rigid_body.moments_of_inertia.extend(MoI) desc.core.visitDepthFirst(setNodeMomentsOfInertia, phy_root) def setNodeMaterial(node): node.rigid_body.contact_material = "material.metal" desc.core.visitDepthFirst(setNodeMaterial, phy_root) return world