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
  • 阅读 ( 126 )

你可能感兴趣的文章

相关问题

0 条评论

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

3 篇文章

作家榜 »

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