Pybullet导入URDF文件——并创建约束

导入URDF文件 pybullet.loadURDF(path,position,orientation,flags=0):向物理服务器发送信息,加载URDF文件;返回创建模型的ID  path:URDF文件路径position:世界坐标系X、Y、Z三维坐标orie...

导入URDF文件

pybullet.loadURDF(path,position,orientation,flags=0):向物理服务器发送信息,加载URDF文件;返回创建模型的ID

  1.  path:URDF文件路径
  2. position:世界坐标系X、Y、Z三维坐标
  3. orientatio:四元数
  4. useFixedBase:True or False,是否**使Base连杆保持固定**;注意不是使其整体不动的意思,使其整体不动,需要createConstraint创建约束
  5. flags:某些标志

创建约束

pybullet.createConstraint(parentBodyUniqueId, parentLinkIndex, childBodyUniqueId, childLinkIndex, jointType, jointAxis, parentFramePosition, childFramePosition):对两个连杆的关节进行约束

各参数意义(

可参考:https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.fq749wu22x4c

  1. parentBodyUniqueId:父实体索引,loadURDF得到
  2. parentLinkIndex:父实体的连杆索引,getNumJoints得到其关节数量,然后利用getLinkState依次输出各关节信息
  3. childBodyUniqueId:子实体索引
  4. childLinkIndex:子实体的连杆索引
  5. jointType:关节的约束类型,如固定等(JOINT_PRISMATIC, JOINT_FIXED, JOINT_POINT2POINT, JOINT_GEAR
  6. jointAxis:在子连杆坐标系表示的关节轴
  7. parentFramePosition:关节坐标系相对于父实体质心坐标系的位置(如果父实体为地面,那么则为子实体质心坐标系)
  8. childFramePosition:关节坐标系相对于子实体质心坐标系的位置(getJointInfo函数返回的第15个值)
  9. 其他参数省略(非必选参数)


创建一个约束:

floor_id = p.loadURDF('plane.urdf')

box_id = p.loadURDF(fileName='cube_no_rotation.urdf',basePosition=[2,2,0],baseOrientation=p.getQuaternionFromEuler([0, 0, 0]),useFixedBase=True)

p.createConstraint(floor_id, -1, box_id, 0, p.JOINT_FIXED, [0, 0, 0], [2, 2, 0], [0, 0, 0])  # 添加约束


注:有时候URDF文件并非只有一个关节,只固定一个还是会使其运动,所以需要尽可能得使多个关节固定,才能保证最后加载的物体不会移动。

  • 发表于 2023-07-05 22:28
  • 阅读 ( 711 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
郝肇铁
郝肇铁

3 篇文章

作家榜 »

  1. Panda-admin 37 文章
  2. 解弘艺 17 文章
  3. 高曾谊 16 文章
  4. 旺仔牛奶opo 15 文章
  5. 胡中天 14 文章
  6. LH 14 文章
  7. 罗柏荣 13 文章
  8. 林晨 12 文章