目录
p.getBasePositionAndOrientation
pybullet仿真环境介绍
聚焦于仿真到现实的变换
是一个很方便的python包

pybullet提供了一个前向仿真
以及逆运动学、碰撞检测等一些功能
还有图像渲染
本质上就是一个python库
bullet下载
下载的话直接在github上搜索bullet

里面有很多例程
也可以直接解压之前的资料
bullet3-master

bullet安装

打开anaconda
打开对应环境

输入命令
pip install pybullet或者是这个命令
pip install -U --user -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pybullet
注意这里building wheel的时候会比较慢
所以耐心等待即可

bullet例程
这个路径下有quickstart

这里介绍了可以使用的函数等
test.py
打开这个编码文件
以下代码是在上面的quickstartguide里

运行

界面的左方显示三个窗口分别是相机rgb、深度图像、还有合成的相机分割mask
如果不使用pybulet的渲染功能这三个窗口只有会三个斜线下来
整个环境包括一个地面,一个加载进来的机器人模型
可以通过鼠标和键盘来进行一些简单的交互操作
ctrl+左键是转动视图
ctrl+滚轴中间键是平移视图
按住物体可以拖动物体
(也可以设置物体不可被拖动)
常用函数

首先是导入三个库
pybullet_data里存储了一些常用的超参数
比如

这里调用了pybullet_data里的默认路径
p.connect
连接仿真环境

参数可选p.DIRECT不会显示可视化界面
p.GUI会显示可视化界面
pybullet_data.getDataPath()
后续使用模型的时候会到这个默认的路径下进行搜索(在没有指定路径的情况下)

这里可以打印出来看一下路径是哪

并且注释掉后面的代码
可以看到 这就是pybullet的安装路径
可以看到有很多模型
打开duck

可以看到是一个黄色的小鸭子

并且提供了常见的机器人
解开注释继续往下看
p.setGravity
设置重力

p.loadURDF
加载urdf模型
planeId = p.loadURDF("plane.urdf")这里没有指定路径
所以会到指定的路径下找这个plane.urdf文件
可以看到在这个路径下

用vscode打开
可以看到就是一个urdf文件

urdf实际上就是一个描述文件
描述物理模型是什么样
boxId = p.loadURDF("r2d2.urdf", cubeStartPos, cubeStartOrientation)r2d2.urdf同理p.loadURDF上面的函数是可以指定模型的默认位置以及朝向在哪
不指定就默认都是0
boxId = p.loadURDF("r2d2.urdf", cubeStartPos, cubeStartOrientation)p.getQuaternionFromEuler
朝向是通过欧拉角转换四元数来实现的
cubeStartOrientation = p.getQuaternionFromEuler([0,0,0])欧拉角就是围绕xyz三个轴的旋转角度都是0
然后循环1w次

p.stepSimulation()
p.stepSimulation()该函数是向前移动x步(后面在抓取中会有详细说明)
time.sleep
time.sleep(1./240.)这是延时一点
这里补充说明一下boxid是加载进去的模型生成的唯一id
boxId = p.loadURDF("r2d2.urdf", cubeStartPos, cubeStartOrientation)然后
p.getBasePositionAndOrientation
运用这个函数
实时返回该模型的即时的状态信息(速度、位置等)
获取之后打印出来
p.disconnect()
p.disconnect()断开与仿真环境的连接如果不加这个程序就会一直运行