pybullet 仿真环境安装(六)

 

目录

pybullet仿真环境介绍

bullet下载

bullet安装

 bullet例程

test.py

常用函数

p.connect

pybullet_data.getDataPath()

p.setGravity

p.loadURDF

p.getQuaternionFromEuler

p.stepSimulation()

time.sleep

p.getBasePositionAndOrientation

p.disconnect()


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()断开与仿真环境的连接

如果不加这个程序就会一直运行


版权声明:本文为weixin_50920579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。