关节重置

创建时间:2024-12-03 更新时间:2024-12-03 阅读次数:1334 次

在操作机械臂进行训练的时候,经常会用到关节重置从而开启下一轮的训练,通常使用resetJointState函数来实现。具体实现过程如下所示:

# 定义各个活动关节的初始化角度
jointPositions=[0.98, 0.458, 0.31, -2.24, -0.30, 2.66, 2.32, 0.02, 0.02]


#加载机械臂
orn=[-0.707107, 0.0, 0.0, 0.707107]#p.getQuaternionFromEuler([-math.pi/2,math.pi/2,0])
eul = self.bullet_client.getEulerFromQuaternion([-0.5, -0.5, -0.5, 0.5])
self.panda = self.bullet_client.loadURDF("franka_panda/panda.urdf", np.array([0,0,0])+self.offset, orn, useFixedBase=True, flags=flags)

## 重置每个活动关节
index = 0
for j in range(self.bullet_client.getNumJoints(self.panda)):
  self.bullet_client.changeDynamics(self.panda, j, linearDamping=0, angularDamping=0)
  info = self.bullet_client.getJointInfo(self.panda, j)

  jointName = info[1]
  jointType = info[2]
  if (jointType == self.bullet_client.JOINT_PRISMATIC):
    self.bullet_client.resetJointState(self.panda, j, jointPositions[index]) 
    index=index+1
  if (jointType == self.bullet_client.JOINT_REVOLUTE):
    self.bullet_client.resetJointState(self.panda, j, jointPositions[index]) 
    index=index+1
本教程共28节,当前为第21节!
本教程最新修订时间为:2025-12-16 08:17:09