Python pybullet.getBodyInfo() Examples
The following are 11
code examples of pybullet.getBodyInfo().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pybullet
, or try the search function
.
Example #1
Source File: robot_locomotors.py From GtS with MIT License | 5 votes |
def robot_specific_reset(self): WalkerBase.robot_specific_reset(self) humanoidId = -1 numBodies = p.getNumBodies() for i in range (numBodies): bodyInfo = p.getBodyInfo(i) if bodyInfo[1].decode("ascii") == 'humanoid': humanoidId = i ## Spherical radiance/glass shield to protect the robot's camera if self.glass_id is None: glass_id = p.loadMJCF(os.path.join(self.physics_model_dir, "glass.xml"))[0] #print("setting up glass", glass_id, humanoidId) p.changeVisualShape(glass_id, -1, rgbaColor=[0, 0, 0, 0]) cid = p.createConstraint(humanoidId, -1, glass_id,-1,p.JOINT_FIXED,[0,0,0],[0,0,1.4],[0,0,1]) self.motor_names = ["abdomen_z", "abdomen_y", "abdomen_x"] self.motor_power = [100, 100, 100] self.motor_names += ["right_hip_x", "right_hip_z", "right_hip_y", "right_knee"] self.motor_power += [100, 100, 300, 200] self.motor_names += ["left_hip_x", "left_hip_z", "left_hip_y", "left_knee"] self.motor_power += [100, 100, 300, 200] self.motor_names += ["right_shoulder1", "right_shoulder2", "right_elbow"] self.motor_power += [75, 75, 75] self.motor_names += ["left_shoulder1", "left_shoulder2", "left_elbow"] self.motor_power += [75, 75, 75] self.motors = [self.jdict[n] for n in self.motor_names]
Example #2
Source File: env_modalities.py From GtS with MIT License | 5 votes |
def _reset(self): assert(self._robot_introduced) assert(self._scene_introduced) debugmode = 1 if debugmode: print("Episode: steps:{} score:{}".format(self.nframe, self.reward)) body_xyz = self.robot.body_xyz #print("[{}, {}, {}],".format(body_xyz[0], body_xyz[1], body_xyz[2])) print("Episode count: {}".format(self.eps_count)) self.eps_count += 1 self.nframe = 0 self.eps_reward = 0 BaseEnv._reset(self) if not self.ground_ids: self.parts, self.jdict, self.ordered_joints, self.robot_body = self.robot.addToScene( []) self.ground_ids = set(self.scene.scene_obj_list) ## Todo: (hzyjerry) this part is not working, robot_tracking_id = -1 for i in range (p.getNumBodies()): if (p.getBodyInfo(i)[0].decode() == self.robot_body.get_name()): self.robot_tracking_id=i #print(p.getBodyInfo(i)[0].decode()) i = 0 eye_pos, eye_quat = self.get_eye_pos_orientation() pose = [eye_pos, eye_quat] observations = self.render_observations(pose) pos = self.robot._get_scaled_position() orn = self.robot.get_orientation() pos = (pos[0], pos[1], pos[2] + self.tracking_camera['z_offset']) p.resetDebugVisualizerCamera(self.tracking_camera['distance'],self.tracking_camera['yaw'], self.tracking_camera['pitch'],pos) return observations
Example #3
Source File: env_modalities.py From midlevel-reps with MIT License | 5 votes |
def _reset(self): assert(self._robot_introduced) assert(self._scene_introduced) debugmode = 1 if debugmode: print("Episode: steps:{} score:{}".format(self.nframe, self.reward)) body_xyz = self.robot.body_xyz print("[{}, {}, {}],".format(body_xyz[0], body_xyz[1], body_xyz[2])) print("Episode count: {}".format(self.eps_count)) self.eps_count += 1 self.nframe = 0 self.eps_reward = 0 BaseEnv._reset(self) if not self.ground_ids: self.parts, self.jdict, self.ordered_joints, self.robot_body = self.robot.addToScene( []) self.ground_ids = set(self.scene.scene_obj_list) ## Todo: (hzyjerry) this part is not working, robot_tracking_id = -1 for i in range (p.getNumBodies()): if (p.getBodyInfo(i)[0].decode() == self.robot_body.get_name()): self.robot_tracking_id=i #print(p.getBodyInfo(i)[0].decode()) i = 0 eye_pos, eye_quat = self.get_eye_pos_orientation() pose = [eye_pos, eye_quat] observations = self.render_observations(pose) pos = self.robot._get_scaled_position() orn = self.robot.get_orientation() pos = (pos[0], pos[1], pos[2] + self.tracking_camera['z_offset']) p.resetDebugVisualizerCamera(self.tracking_camera['distance'],self.tracking_camera['yaw'], self.tracking_camera['pitch'],pos) return observations
Example #4
Source File: robot_locomotors.py From midlevel-reps with MIT License | 5 votes |
def robot_specific_reset(self): WalkerBase.robot_specific_reset(self) humanoidId = -1 numBodies = p.getNumBodies() for i in range (numBodies): bodyInfo = p.getBodyInfo(i) if bodyInfo[1].decode("ascii") == 'humanoid': humanoidId = i ## Spherical radiance/glass shield to protect the robot's camera if self.glass_id is None: glass_id = p.loadMJCF(os.path.join(self.physics_model_dir, "glass.xml"))[0] #print("setting up glass", glass_id, humanoidId) p.changeVisualShape(glass_id, -1, rgbaColor=[0, 0, 0, 0]) cid = p.createConstraint(humanoidId, -1, glass_id,-1,p.JOINT_FIXED,[0,0,0],[0,0,1.4],[0,0,1]) self.motor_names = ["abdomen_z", "abdomen_y", "abdomen_x"] self.motor_power = [100, 100, 100] self.motor_names += ["right_hip_x", "right_hip_z", "right_hip_y", "right_knee"] self.motor_power += [100, 100, 300, 200] self.motor_names += ["left_hip_x", "left_hip_z", "left_hip_y", "left_knee"] self.motor_power += [100, 100, 300, 200] self.motor_names += ["right_shoulder1", "right_shoulder2", "right_elbow"] self.motor_power += [75, 75, 75] self.motor_names += ["left_shoulder1", "left_shoulder2", "left_elbow"] self.motor_power += [75, 75, 75] self.motors = [self.jdict[n] for n in self.motor_names]
Example #5
Source File: simulation_manager_test.py From qibullet with Apache License 2.0 | 5 votes |
def test_remove_pepper(self): """ Test the @removePepper method """ manager = SimulationManager() client = manager.launchSimulation(gui=False) pepper = manager.spawnPepper(client, spawn_ground_plane=True) manager.removePepper(pepper) with self.assertRaises(pybullet.error): pybullet.getBodyInfo(pepper.getRobotModel()) manager.stopSimulation(client)
Example #6
Source File: simulation_manager_test.py From qibullet with Apache License 2.0 | 5 votes |
def test_remove_nao(self): """ Test the @removeNao method """ manager = SimulationManager() client = manager.launchSimulation(gui=False) nao = manager.spawnNao(client, spawn_ground_plane=True) manager.removeNao(nao) with self.assertRaises(pybullet.error): pybullet.getBodyInfo(nao.getRobotModel()) manager.stopSimulation(client)
Example #7
Source File: simulation_manager_test.py From qibullet with Apache License 2.0 | 5 votes |
def test_remove_romeo(self): """ Test the @removeRomeo method """ manager = SimulationManager() client = manager.launchSimulation(gui=False) romeo = manager.spawnRomeo(client, spawn_ground_plane=True) manager.removeRomeo(romeo) with self.assertRaises(pybullet.error): pybullet.getBodyInfo(romeo.getRobotModel()) manager.stopSimulation(client)
Example #8
Source File: urdfEditor.py From soccer-matlab with BSD 2-Clause "Simplified" License | 4 votes |
def initializeFromBulletBody(self, bodyUid, physicsClientId): self.initialize() #always create a base link baseLink = UrdfLink() baseLinkIndex = -1 self.convertLinkFromMultiBody(bodyUid, baseLinkIndex, baseLink, physicsClientId) baseLink.link_name = p.getBodyInfo(bodyUid, physicsClientId=physicsClientId)[0].decode("utf-8") self.linkNameToIndex[baseLink.link_name]=len(self.urdfLinks) self.urdfLinks.append(baseLink) #optionally create child links and joints for j in range(p.getNumJoints(bodyUid,physicsClientId=physicsClientId)): jointInfo = p.getJointInfo(bodyUid,j,physicsClientId=physicsClientId) urdfLink = UrdfLink() self.convertLinkFromMultiBody(bodyUid, j, urdfLink,physicsClientId) urdfLink.link_name = jointInfo[12].decode("utf-8") self.linkNameToIndex[urdfLink.link_name]=len(self.urdfLinks) self.urdfLinks.append(urdfLink) urdfJoint = UrdfJoint() urdfJoint.link = urdfLink urdfJoint.joint_name = jointInfo[1].decode("utf-8") urdfJoint.joint_type = jointInfo[2] urdfJoint.joint_axis_xyz = jointInfo[13] orgParentIndex = jointInfo[16] if (orgParentIndex<0): urdfJoint.parent_name = baseLink.link_name else: parentJointInfo = p.getJointInfo(bodyUid,orgParentIndex,physicsClientId=physicsClientId) urdfJoint.parent_name = parentJointInfo[12].decode("utf-8") urdfJoint.child_name = urdfLink.link_name #todo, compensate for inertia/link frame offset dynChild = p.getDynamicsInfo(bodyUid,j,physicsClientId=physicsClientId) childInertiaPos = dynChild[3] childInertiaOrn = dynChild[4] parentCom2JointPos=jointInfo[14] parentCom2JointOrn=jointInfo[15] tmpPos,tmpOrn = p.multiplyTransforms(childInertiaPos,childInertiaOrn,parentCom2JointPos,parentCom2JointOrn) tmpPosInv,tmpOrnInv = p.invertTransform(tmpPos,tmpOrn) dynParent = p.getDynamicsInfo(bodyUid,orgParentIndex,physicsClientId=physicsClientId) parentInertiaPos = dynParent[3] parentInertiaOrn = dynParent[4] pos,orn = p.multiplyTransforms(parentInertiaPos,parentInertiaOrn, tmpPosInv, tmpOrnInv) pos,orn_unused=p.multiplyTransforms(parentInertiaPos,parentInertiaOrn, parentCom2JointPos,[0,0,0,1]) urdfJoint.joint_origin_xyz = pos urdfJoint.joint_origin_rpy = p.getEulerFromQuaternion(orn) self.urdfJoints.append(urdfJoint)
Example #9
Source File: robot_bases.py From GtS with MIT License | 4 votes |
def addToScene(self, bodies): if self.parts is not None: parts = self.parts else: parts = {} if self.jdict is not None: joints = self.jdict else: joints = {} if self.ordered_joints is not None: ordered_joints = self.ordered_joints else: ordered_joints = [] dump = 0 for i in range(len(bodies)): if p.getNumJoints(bodies[i]) == 0: part_name, robot_name = p.getBodyInfo(bodies[i], 0) robot_name = robot_name.decode("utf8") part_name = part_name.decode("utf8") parts[part_name] = BodyPart(part_name, bodies, i, -1, self.scale, model_type=self.model_type) for j in range(p.getNumJoints(bodies[i])): p.setJointMotorControl2(bodies[i],j,p.POSITION_CONTROL,positionGain=0.1,velocityGain=0.1,force=0) ## TODO (hzyjerry): the following is diabled due to pybullet update #_,joint_name,joint_type, _,_,_, _,_,_,_, _,_, part_name = p.getJointInfo(bodies[i], j) _,joint_name,joint_type, _,_,_, _,_,_,_, _,_, part_name, _,_,_,_ = p.getJointInfo(bodies[i], j) joint_name = joint_name.decode("utf8") part_name = part_name.decode("utf8") if dump: print("ROBOT PART '%s'" % part_name) if dump: print("ROBOT JOINT '%s'" % joint_name) # limits = %+0.2f..%+0.2f effort=%0.3f speed=%0.3f" % ((joint_name,) + j.limits()) ) parts[part_name] = BodyPart(part_name, bodies, i, j, self.scale, model_type=self.model_type) if part_name == self.robot_name: self.robot_body = parts[part_name] if i == 0 and j == 0 and self.robot_body is None: # if nothing else works, we take this as robot_body parts[self.robot_name] = BodyPart(self.robot_name, bodies, 0, -1, self.scale, model_type=self.model_type) self.robot_body = parts[self.robot_name] if joint_name[:6] == "ignore": Joint(joint_name, bodies, i, j, self.scale).disable_motor() continue if joint_name[:8] != "jointfix" and joint_type != p.JOINT_FIXED: joints[joint_name] = Joint(joint_name, bodies, i, j, self.scale, model_type=self.model_type) ordered_joints.append(joints[joint_name]) joints[joint_name].power_coef = 100.0 debugmode = 0 if debugmode: for j in ordered_joints: print(j, j.power_coef) return parts, joints, ordered_joints, self.robot_body
Example #10
Source File: robot_bases.py From midlevel-reps with MIT License | 4 votes |
def addToScene(self, bodies): if self.parts is not None: parts = self.parts else: parts = {} if self.jdict is not None: joints = self.jdict else: joints = {} if self.ordered_joints is not None: ordered_joints = self.ordered_joints else: ordered_joints = [] dump = 0 for i in range(len(bodies)): if p.getNumJoints(bodies[i]) == 0: part_name, robot_name = p.getBodyInfo(bodies[i], 0) robot_name = robot_name.decode("utf8") part_name = part_name.decode("utf8") parts[part_name] = BodyPart(part_name, bodies, i, -1, self.scale, model_type=self.model_type) for j in range(p.getNumJoints(bodies[i])): p.setJointMotorControl2(bodies[i],j,p.POSITION_CONTROL,positionGain=0.1,velocityGain=0.1,force=0) ## TODO (hzyjerry): the following is diabled due to pybullet update #_,joint_name,joint_type, _,_,_, _,_,_,_, _,_, part_name = p.getJointInfo(bodies[i], j) _,joint_name,joint_type, _,_,_, _,_,_,_, _,_, part_name, _,_,_,_ = p.getJointInfo(bodies[i], j) joint_name = joint_name.decode("utf8") part_name = part_name.decode("utf8") if dump: print("ROBOT PART '%s'" % part_name) if dump: print("ROBOT JOINT '%s'" % joint_name) # limits = %+0.2f..%+0.2f effort=%0.3f speed=%0.3f" % ((joint_name,) + j.limits()) ) parts[part_name] = BodyPart(part_name, bodies, i, j, self.scale, model_type=self.model_type) if part_name == self.robot_name: self.robot_body = parts[part_name] if i == 0 and j == 0 and self.robot_body is None: # if nothing else works, we take this as robot_body parts[self.robot_name] = BodyPart(self.robot_name, bodies, 0, -1, self.scale, model_type=self.model_type) self.robot_body = parts[self.robot_name] if joint_name[:6] == "ignore": Joint(joint_name, bodies, i, j, self.scale).disable_motor() continue if joint_name[:8] != "jointfix" and joint_type != p.JOINT_FIXED: joints[joint_name] = Joint(joint_name, bodies, i, j, self.scale, model_type=self.model_type) ordered_joints.append(joints[joint_name]) joints[joint_name].power_coef = 100.0 debugmode = 0 if debugmode: for j in ordered_joints: print(j, j.power_coef) return parts, joints, ordered_joints, self.robot_body
Example #11
Source File: gym_mujoco_xml_env.py From bullet-gym with MIT License | 4 votes |
def addToScene(self, bodies): if self.parts is not None: parts = self.parts else: parts = {} if self.jdict is not None: joints = self.jdict else: joints = {} if self.ordered_joints is not None: ordered_joints = self.ordered_joints else: ordered_joints = [] dump = 0 for i in range(len(bodies)): if p.getNumJoints(bodies[i]) == 0: part_name, robot_name = p.getBodyInfo(bodies[i], 0) robot_name = robot_name.decode("utf8") part_name = part_name.decode("utf8") parts[part_name] = BodyPart(part_name, bodies, i, -1) for j in range(p.getNumJoints(bodies[i])): _,joint_name,_,_,_,_,_,_,_,_,_,_,part_name = p.getJointInfo(bodies[i], j) joint_name = joint_name.decode("utf8") part_name = part_name.decode("utf8") if dump: print("ROBOT PART '%s'" % part_name) if dump: print("ROBOT JOINT '%s'" % joint_name) # limits = %+0.2f..%+0.2f effort=%0.3f speed=%0.3f" % ((joint_name,) + j.limits()) ) parts[part_name] = BodyPart(part_name, bodies, i, j) if part_name == self.robot_name: self.robot_body = parts[part_name] if i == 0 and j == 0 and self.robot_body is None: # if nothing else works, we take this as robot_body parts[self.robot_name] = BodyPart(self.robot_name, bodies, 0, -1) self.robot_body = parts[self.robot_name] if joint_name[:8] != "jointfix": joints[joint_name] = Joint(joint_name, bodies, i, j) ordered_joints.append(joints[joint_name]) if joint_name[:6] == "ignore": joints[joint_name].disable_motor() continue joints[joint_name].power_coef = 100.0 return parts, joints, ordered_joints, self.robot_body