这次记录一下pybullet中基本仿真环境的搭建,设置重力,启动渲染,导入模型等等
引入库文件
pybullet_data是为了导入模型等等
import pybullet
import pybullet_data
启用服务端
pybullet.GUI打开图形GUI做渲染,需要独显,性能消耗大,pybullet.DIRECT:不打开图形渲染,性能消耗小。
client = pybullet.connect(pybullet.GUI)
添加资源路径
后面加载模型就不用写绝对路径了,如下图是pybullet本地模型库,里面给了一些机器人模型和世界模型。
pybullet.setAdditionalSearchPath(pybullet_data.getDataPath())
配置图形GUI
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 0) # 0 选择不渲染
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_GUI, 0) # 0 不打开控件
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_TINY_RENDERER, 0) # 0 不使用核显渲染
设置重力
pybullet.setGravity(0, 0, -9.8)
设置标准时间
pybullet.setRealTimeSimulation(1)
加载模型
plane.urdf是官方给出的世界模型
planeID = pybullet.loadURDF('plane.urdf')
plane_stadiumId = pybullet.loadSDF("stadium.sdf") # 加载sdf模型文件
mini_cheetah.urdf文件在mini_cheetah文件夹下所以还需要再多写一段,并且设置初始坐标和四元数。
在指定位置(世界空间坐标[X、Y、Z])上放置导入对象base连杆的附体坐标系。
四元数是指定导入对象base连杆的方向(世界空间四元数[X、Y、Z、W])。
robotID = pybullet.loadURDF('mini_cheetah/mini_cheetah.urdf', [0, 0, 1], [0, 0, 0, 1])
实时仿真
while True:
pass
关闭服务端
pybullet.disconnect()
完整的基础环境代码
import time
import pybullet
import pybullet_data
if __name__ == '__main__':
# 服务端打开图形GUI做渲染,需要独显,性能消耗大
# 选择pybullet.DIRECT:不打开图形渲染,性能消耗小
client = pybullet.connect(pybullet.GUI)
# 在环境变量中添加资源路径,后面加载机器人就不用写绝对路径了
pybullet.setAdditionalSearchPath(pybullet_data.getDataPath())
# 配置图形GUI
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 0) # 0 选择不渲染
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_GUI, 0) # 0 不打开控件
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_TINY_RENDERER, 0) # 0 不使用核显渲染
# 设置X,Y,Z轴的重力:
pybullet.setGravity(0, 0, -9.8)
# 设置时间
pybullet.setRealTimeSimulation(1)
# 加载场景模型
planeID = pybullet.loadURDF('plane.urdf')
# 加载机器人模型
robotID = pybullet.loadURDF('mini_cheetah/mini_cheetah.urdf', [0, 0, 1], [0, 0, 0, 1])
# 开始渲染,1为启动
pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 1)
while True:
pass
# 关闭服务端
pybullet.disconnect()