Pybullet - Gripper 无法抓取对象

问题描述 投票:0回答:0

我正在使用带有 j2n6s300.urdf 文件的 Kinova Jaco 机械臂,我只是想从侧面抓住一个杯子并尽情享受。 然而,夹持器无法拿起杯子。似乎在抓手手指和杯子之间有一个“看不见的”屏障。如果我抬起抓手,杯子就会留在原处。

但是,如果我使用 Franka Panda 机器人运行相同的代码(对关节进行轻微调整),我可以举起杯子。 我的问题是什么?跟urdf文件有关系吗?

这是我的代码:

import os 
import pybullet as pb
import pybullet_data
import math
import time
import pybullet_data as pd 
jaco_path = 'jaco_reza/j2n6s300.urdf'
pb.connect(pb.GUI)
path = pd.getDataPath()

jaco_orientation_euler = [0,math.pi/2,0]
jaco_orientation_quaternion = pb.getQuaternionFromEuler(jaco_orientation_euler)
jacoUid = pb.loadURDF(os.path.join(jaco_path,), useFixedBase=True, basePosition=[-0.63,0,0.46], baseOrientation=jaco_orientation_quaternion)

pos, ori = pb.getBasePositionAndOrientation(jacoUid)
tableUid = pb.loadURDF(os.path.join(pybullet_data.getDataPath(), "table/table.urdf"),basePosition=[0.5,0,-0.66])

mug_orientation_euler = [0,0,-math.pi/2]
mug_orientation_quaternion = pb.getQuaternionFromEuler(mug_orientation_euler)

mugUid = pb.loadURDF(os.path.join(pybullet_data.getDataPath(), "objects/mug.urdf"),basePosition=[0.148,0,-0.035], baseOrientation=mug_orientation_quaternion)

pb.setGravity(0,0,-10)

pb.resetDebugVisualizerCamera(
    cameraDistance=1.5, 
    cameraYaw=0, 
    cameraPitch=-20, 
    cameraTargetPosition=[-0.15,0,0.1])

# #init Jaco Position
rest_poses = [0,0,0,1.5,1.4,1.5,0,1.5,3,0,0.5,0,0.5,0,0.5]
for i in range(15):
     pb.resetJointState(jacoUid,i, rest_poses[i])


fingerAngle = 0.7 

for i in range(180):
    pb.setJointMotorControl2(jacoUid,9,pb.POSITION_CONTROL,targetPosition=fingerAngle,force=2000)
    pb.setJointMotorControl2(jacoUid,11,pb.POSITION_CONTROL,targetPosition=fingerAngle,force=1000)
    pb.setJointMotorControl2(jacoUid,13,pb.POSITION_CONTROL,targetPosition=fingerAngle,force=1000)
    pb.stepSimulation()
    fingerAngle += 0.1 / 100.
    if fingerAngle > 2:
        fingerAngle = 2 #upper limit
    time.sleep(0.02)

for i in range(20):
    print(pb.getJointState(jacoUid,4)[0])
    pb.setJointMotorControl2(jacoUid, 4,
                                        pb.POSITION_CONTROL,
                                        targetPosition=1)
    pb.stepSimulation()

while True:
    pb.configureDebugVisualizer(pb.COV_ENABLE_SINGLE_STEP_RENDERING) 
    pb.stepSimulation()

我试图更改 Kinova 机器人的 .urdf 文件,但它没有用,我觉得我错过了一个重要的步骤。

python robotics pybullet grasp urdf
© www.soinside.com 2019 - 2024. All rights reserved.