pybullet入门

一、pybullet是什么

pybullet是一个易于使用的python模块,它基于bullet物理sdk进行物理仿真、机器人技术和深度强化学习。使用pybullet,您可以从urdf、sdf和其他文件格式加载铰接体。pybullet提供正向动力学仿真、反向动力学计算、正向和反向运动学以及碰撞检测和光线相交查询。除了物理模拟,pybullet还支持渲染,包括cpu渲染器和opengl可视化,以及对虚拟现实耳机的支持,官方的中文网址网址,英文网址网址

同时文章Part 1.3 - 熟悉PyBullet中也有介绍。

二、安装

安装就是直接

pip install pybullet

中间遇到过问题,见我的博文pycharm使用之前建立的python解释器建立项目时遇到问题The current inotify(7) watch limit is too low. More details.

实践

import pybullet as p
from time import sleep

#链接到物理引擎,并开启GUI显示
physicsClient = p.connect(p.GUI)
#设置重力
p.setGravity(0, 0, -10)
#loadURDF将返回唯一的ID,这里导入的是地面的urdf
planeId = p.loadURDF("plane.urdf")
#立方体的初始位置
cubeStartPos = [0, 0, 1]
#立方体初始姿态
cubeStartOrientation = p.getQuaternionFromEuler([0, 0, 0])
#这里的立方体指的就是机器人,这里将位姿提前定义
boxId = p.loadURDF("r2d2.urdf", cubeStartPos, cubeStartOrientation)
#定义机器人以后,通过p.getBasePositionAndOrientation获取机器人后续的位姿
cubePos, cubeOrn = p.getBasePositionAndOrientation(boxId)
#使用非实时仿真     ps:实时仿真多用于需要实时动态交互的系统
useRealTimeSimulation = 0

if (useRealTimeSimulation):
  p.setRealTimeSimulation(1)

while 1:
  if (useRealTimeSimulation):
    #如果实时仿真,需要再设置重力,并设置仿真间隔
    p.setGravity(0, 0, -10)
    sleep(0.01)  # Time in seconds.
  else:
    #非实时仿真的话,就直接运行
    p.stepSimulation()

出现的问题:
1、实际运行发现:这样的话会找不到urdf文件,通过

p.setAdditionalSearchPath(pybullet_data.getDataPath())

解决问题。原因来自参考文献一中解释的,调用这个
2、由于实时仿真和非实时仿真差距极大,最后在github中的例子发现的,就是在非实时仿真中每次进行sleep(1./240)

github地址:https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/examples
在此鸣谢大佬---参考文献1作者

pybullet_data:主要存放一些数据文件,例如模型的urdf/sdf,以及一些stl文件  文中提到的加载URDF就是从这个文件夹中加载的,这个文件夹的位置可以通过
import pybullet_data
datapath=pybullet_data.getDataPath()
print(datapath)得到。
pybullet_envs:存放一些已经搭建好的仿真环境,例如minitaur,deep_mimic(模仿学习),以及一些经典的强化学习场景
pybullet_robots:存放3个机器人的一些简单搭建仿真环境(基本用不了,只能看看)
pybullet_utils:pybullet的工具

其他

1、pybullet默认会缓存一部分内容,可以使用p.setPhysicsEngineParameter(enableFileCaching = 0)禁用文件缓存。
2、LoadURDF函数可以通过设置模型放置的位置,姿态以及是否强制静态连接等;
3、物理引擎,就是一组可以仿真真实世界运动规律的代码,pybullet本身就自带引擎了,只是用了python封装了一下。

参考文献

1、Part 1.3 - 熟悉PyBullet
2、【pybullet教程1】hello world
3、【pybullet教程】设置重力&加载模型

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值