不同厂家生产的机械臂的关节个数是不相同的,同时抓手也有所不同,所以提前了解机械臂的关节和抓手是一件十分重要的事情。下面以panda机械臂为例,了解一下它的各个关节的情况:
import numpy as np
import pybullet as p
import pybullet_data
p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
p.setGravity(0, 0, -10)
p.loadURDF("plane.urdf")
panda = p.loadURDF("franka_panda/panda.urdf", basePosition=np.array([0., 0., 0.]))
joint_num = p.getNumJoints(panda)
print("panda的关节数量为:", joint_num)
for joint_index in range(joint_num):
joint_info_tuple = p.getJointInfo(panda, joint_index)
print(f"关节序号:{joint_info_tuple[0]},关节名称:{joint_info_tuple[1]},关节类型:{joint_info_tuple[2]}")
p.disconnect()
代码运行的结果为:
panda的关节数量为: 12
关节序号:0,关节名称:b"panda_joint1",关节类型:0
关节序号:1,关节名称:b"panda_joint2",关节类型:0
关节序号:2,关节名称:b"panda_joint3",关节类型:0
关节序号:3,关节名称:b"panda_joint4",关节类型:0
关节序号:4,关节名称:b"panda_joint5",关节类型:0
关节序号:5,关节名称:b"panda_joint6",关节类型:0
关节序号:6,关节名称:b"panda_joint7",关节类型:0
关节序号:7,关节名称:b"panda_joint8",关节类型:4
关节序号:8,关节名称:b"panda_hand_joint",关节类型:4
关节序号:9,关节名称:b"panda_finger_joint1",关节类型:1
关节序号:10,关节名称:b"panda_finger_joint2",关节类型:1
关节序号:11,关节名称:b"panda_grasptarget_hand",关节类型:4
最后,大家要注意两个重点函数:
getNumJoints,获取关节总数
getJointInfo,获取关节信息