本文整理汇总了Python中pybullet.getJointInfo方法的典型用法代码示例。如果您正苦于以下问题:Python pybullet.getJointInfo方法的具体用法?Python pybullet.getJointInfo怎么用?Python pybullet.getJointInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pybullet
的用法示例。
在下文中一共展示了pybullet.getJointInfo方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: contactPoints
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def contactPoints(self):
"""Gets all contact points and forces
Returns:
list -- list of entries (link_name, position in m, force in N)
"""
result = []
contacts = p.getContactPoints(bodyA=self.floor, bodyB=self.robot)
for contact in contacts:
link_index = contact[4]
if link_index >= 0:
link_name = (p.getJointInfo(self.robot, link_index)[12]).decode()
else:
link_name = 'base'
result.append((link_name, contact[6], contact[9]))
return result
示例2: enforce_joint_limits
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def enforce_joint_limits(self, body):
# Enforce joint limits
joint_states = p.getJointStates(body, jointIndices=list(range(p.getNumJoints(body, physicsClientId=self.id))), physicsClientId=self.id)
joint_positions = np.array([x[0] for x in joint_states])
lower_limits = []
upper_limits = []
for j in range(p.getNumJoints(body, physicsClientId=self.id)):
joint_info = p.getJointInfo(body, j, physicsClientId=self.id)
joint_name = joint_info[1]
joint_pos = joint_positions[j]
lower_limit = joint_info[8]
upper_limit = joint_info[9]
if lower_limit == 0 and upper_limit == -1:
lower_limit = -1e10
upper_limit = 1e10
lower_limits.append(lower_limit)
upper_limits.append(upper_limit)
# print(joint_name, joint_pos, lower_limit, upper_limit)
if joint_pos < lower_limit:
p.resetJointState(body, jointIndex=j, targetValue=lower_limit, targetVelocity=0, physicsClientId=self.id)
elif joint_pos > upper_limit:
p.resetJointState(body, jointIndex=j, targetValue=upper_limit, targetVelocity=0, physicsClientId=self.id)
lower_limits = np.array(lower_limits)
upper_limits = np.array(upper_limits)
return lower_limits, upper_limits
示例3: enforce_hard_human_joint_limits
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def enforce_hard_human_joint_limits(self):
if not self.human_controllable_joint_indices:
return
# Enforce joint limits. Sometimes, external forces and break the person's hard joint limits.
joint_states = p.getJointStates(self.human, jointIndices=self.human_controllable_joint_indices, physicsClientId=self.id)
joint_positions = np.array([x[0] for x in joint_states])
if self.human_joint_lower_limits is None:
self.human_joint_lower_limits = []
self.human_joint_upper_limits = []
for i, j in enumerate(self.human_controllable_joint_indices):
joint_info = p.getJointInfo(self.human, j, physicsClientId=self.id)
joint_name = joint_info[1]
joint_pos = joint_positions[i]
lower_limit = joint_info[8]
upper_limit = joint_info[9]
self.human_joint_lower_limits.append(lower_limit)
self.human_joint_upper_limits.append(upper_limit)
# print(joint_name, joint_pos, lower_limit, upper_limit)
for i, j in enumerate(self.human_controllable_joint_indices):
if joint_positions[i] < self.human_joint_lower_limits[i]:
p.resetJointState(self.human, jointIndex=j, targetValue=self.human_joint_lower_limits[i], targetVelocity=0, physicsClientId=self.id)
elif joint_positions[i] > self.human_joint_upper_limits[i]:
p.resetJointState(self.human, jointIndex=j, targetValue=self.human_joint_upper_limits[i], targetVelocity=0, physicsClientId=self.id)
示例4: findGraspFrame
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def findGraspFrame(self):
'''
Helper function to look up the grasp frame associated with a robot.
'''
joints = pb.getNumJoints(self.handle)
grasp_idx = None
for i in xrange(joints):
idx, name, jtype, qidx, \
uidx, flags, damping, friction, \
lower, upper, max_force, max_vel, \
link_name = pb.getJointInfo(self.handle, i)
#info = pb.getJointInfo(self.handle, i)
#print(info)
#link_name = info[12]
assert(isinstance(link_name, str))
if link_name == self.grasp_link:
grasp_idx = i
break
return grasp_idx
示例5: setRobot
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def setRobot(self, robot, physicsClientId=None):
self._robot = robot
if physicsClientId != None:
self._physicsClientId = physicsClientId
jointNameToId = {}
joint_id_list = []
joint_pos_list = []
self._joint_number = 0
for i in range(p.getNumJoints(self._robot, physicsClientId=self._physicsClientId)):
jointInfo = p.getJointInfo(self._robot, i, physicsClientId=self._physicsClientId)
if jointInfo[2] == 0:
joint_id_list.append(jointInfo[0])
joint_pos_list.append(p.getJointState(self._robot, jointInfo[0], physicsClientId=self._physicsClientId)[0])
jointNameToId[jointInfo[1].decode('UTF-8')] = jointInfo[0]
self._joint_number += 1
self._joint_id = np.array(joint_id_list, dtype=np.int32)
self._joint_targetPos = np.array(joint_pos_list, dtype=np.float)
self._joint_currentPos = np.array(joint_pos_list, dtype=np.float)
示例6: setRobot
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def setRobot(self, robot, physicsClientId=None):
self._robot = robot
if physicsClientId != None:
self._physicsClientId = physicsClientId
joint_id_list = []
joint_pos_list = []
self._joint_number = 0
for i in range(p.getNumJoints(robot)):
jointInfo = p.getJointInfo(robot, i)
if jointInfo[2] == 0:
joint_id_list.append(jointInfo[0])
joint_pos_list.append(p.getJointState(robot, jointInfo[0])[0])
self._joint_number += 1
print(self._joint_number)
self._joint_id = np.array(joint_id_list, dtype=np.int32)
self._joint_targetPos = np.array(joint_pos_list, dtype=np.float)
self._joint_currentPos = np.array(joint_pos_list, dtype=np.float)
示例7: get_joint_ranges
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def get_joint_ranges(self):
lower_limits, upper_limits, joint_ranges, rest_poses, joint_dumping = [], [], [], [], []
for joint_name in self._joint_name_to_ids.keys():
jointInfo = p.getJointInfo(self.robot_id, self._joint_name_to_ids[joint_name], physicsClientId=self._physics_client_id)
ll, ul = jointInfo[8:10]
jr = ul - ll
# For simplicity, assume resting state == initial state
rp = self.initial_positions[joint_name]
lower_limits.append(ll)
upper_limits.append(ul)
joint_ranges.append(jr)
rest_poses.append(rp)
joint_dumping.append(0.1 if self._joint_name_to_ids[joint_name] in self._joints_to_control else 100.)
return lower_limits, upper_limits, joint_ranges, rest_poses, joint_dumping
示例8: get_joint_ranges
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def get_joint_ranges(self):
lower_limits, upper_limits, joint_ranges, rest_poses = [], [], [], []
for joint_name in self._joint_name_to_ids.keys():
jointInfo = p.getJointInfo(self.robot_id, self._joint_name_to_ids[joint_name], physicsClientId=self._physics_client_id)
ll, ul = jointInfo[8:10]
jr = ul - ll
# For simplicity, assume resting state == initial state
rp = self.initial_positions[joint_name]
lower_limits.append(ll)
upper_limits.append(ul)
joint_ranges.append(jr)
rest_poses.append(rp)
return lower_limits, upper_limits, joint_ranges, rest_poses
示例9: buildJointNameToIdDict
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def buildJointNameToIdDict(self):
nJoints = p.getNumJoints(self.quadruped)
self.jointNameToId = {}
for i in range(nJoints):
jointInfo = p.getJointInfo(self.quadruped, i)
self.jointNameToId[jointInfo[1].decode('UTF-8')] = jointInfo[0]
self.resetPose()
for i in range(100):
p.stepSimulation()
示例10: getMotorJointStates
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def getMotorJointStates(robot):
joint_states = p.getJointStates(robot, range(p.getNumJoints(robot)))
joint_infos = [p.getJointInfo(robot, i) for i in range(p.getNumJoints(robot))]
joint_states = [j for j, i in zip(joint_states, joint_infos) if i[3] > -1]
joint_positions = [state[0] for state in joint_states]
joint_velocities = [state[1] for state in joint_states]
joint_torques = [state[3] for state in joint_states]
return joint_positions, joint_velocities, joint_torques
示例11: multiplyJacobian
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def multiplyJacobian(robot, jacobian, vector):
result = [0.0, 0.0, 0.0]
i = 0
for c in range(len(vector)):
if p.getJointInfo(robot, c)[3] > -1:
for r in range(3):
result[r] += jacobian[r][i] * vector[c]
i += 1
return result
示例12: Step
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def Step(stepIndex):
for objectId in range(objectNum):
record = log[stepIndex*objectNum+objectId]
Id = record[2]
pos = [record[3],record[4],record[5]]
orn = [record[6],record[7],record[8],record[9]]
p.resetBasePositionAndOrientation(Id,pos,orn)
numJoints = p.getNumJoints(Id)
for i in range (numJoints):
jointInfo = p.getJointInfo(Id,i)
qIndex = jointInfo[3]
if qIndex > -1:
p.resetJointState(Id,i,record[qIndex-7+17])
示例13: getMotorJointStates
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def getMotorJointStates(self, robot):
import pybullet as p
joint_states = p.getJointStates(robot, range(p.getNumJoints(robot)))
joint_infos = [p.getJointInfo(robot, i) for i in range(p.getNumJoints(robot))]
joint_states = [j for j, i in zip(joint_states, joint_infos) if i[3] > -1]
joint_positions = [state[0] for state in joint_states]
joint_velocities = [state[1] for state in joint_states]
joint_torques = [state[3] for state in joint_states]
return joint_positions, joint_velocities, joint_torques
示例14: __init__
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def __init__(self):
# initialize robot
self.body = p.loadURDF("../soccer_description/models/soccerbot/model.xacro")
self.state = RobotState()
self.imu = -1
self.imuMeasurements = JointMeasurement()
self.joints = []
self.motors = []
# create a list of joints and find the IMU
for i in range(p.getNumJoints(self.body)):
self.joints.append(i)
jointInfo = p.getJointInfo(self.body, i)
if jointInfo[1].decode('ascii') == "torso_imu":
self.imu = jointInfo[0]
if self.imu == -1:
raise AttributeError("Could not find robot's imu sensor from joint list")
# rearrange joint order to match the order of positions found in the csv files. See:
# https://docs.google.com/spreadsheets/d/1KgIYwm3fNen8yjLEa-FEWq-GnRUnBjyg4z64nZ2uBv8/edit#gid=775054312
self.motors = self.joints[2:14] + self.joints[17:21] + self.joints[14:16] + self.joints[0:2]
# initialize animations
self.getupBackAnimation = Animation("./trajectories/getupback.csv")
self.getupFrontAnimation = Animation("./trajectories/getupfront.csv")
self.readyAnimation = Animation("./trajectories/ready.csv")
self.standingAnimation = Animation("./trajectories/standing.csv")
self.activeAnimation = None
示例15: setup_inverse_kinematics
# 需要导入模块: import pybullet [as 别名]
# 或者: from pybullet import getJointInfo [as 别名]
def setup_inverse_kinematics(self, urdf_path):
"""
This function is responsible for doing any setup for inverse kinematics.
Inverse Kinematics maps end effector (EEF) poses to joint angles that
are necessary to achieve those poses.
"""
# These indices come from the urdf file we're using
self.effector_right = 27
self.effector_left = 45
# Use PyBullet to handle inverse kinematics.
# Set up a connection to the PyBullet simulator.
p.connect(p.DIRECT)
p.resetSimulation()
self.ik_robot = p.loadURDF(urdf_path, (0, 0, 0), useFixedBase=1)
# Relevant joints we care about. Many of the joints are fixed and don't count, so
# we need this second map to use the right ones.
self.actual = [13, 14, 15, 16, 17, 19, 20, 31, 32, 33, 34, 35, 37, 38]
self.num_joints = p.getNumJoints(self.ik_robot)
n = p.getNumJoints(self.ik_robot)
self.rest = []
self.lower = []
self.upper = []
self.ranges = []
for i in range(n):
info = p.getJointInfo(self.ik_robot, i)
# Retrieve lower and upper ranges for each relevant joint
if info[3] > -1:
self.rest.append(p.getJointState(self.ik_robot, i)[0])
self.lower.append(info[8])
self.upper.append(info[9])
self.ranges.append(info[9] - info[8])
# Simulation will update as fast as it can in real time, instead of waiting for
# step commands like in the non-realtime case.
p.setRealTimeSimulation(1)