Pybullet 学习笔记(一)

安装

pip install pybullet

加载第一个模型

大致顺序如下:

导入相关库 -- 添加物理引擎 -- 添加资源路径 -- 设置重力 -- 加载模型 -- 显示/不显示可视化 -- 断开连接

导入相关库

import pybullet as p
import pybullet_data as pda  # 只用来添加资源路径
import time # 用来显示GUI

添加物理引擎

# 连接GUI
cli = p.connect(p.GUI)
# 1代表显示GUI界面,0代表不显示
p.configureDebugVisualizer(p.COV_ENABLE_GUI, 1)

添加资源路径

# 添加资源路径,之后加载就不用绝对路径了
p.setAdditionalSearchPath(pda.getDataPath())

设置重力

p.setGravity(0, 0, 0)  # 未指明则默认第一个物理引擎(本例中GUI)

加载模型

sceneID = p.loadURDF('plane.urdf')  # 加载场景

# 设置机器人参数-位置和姿态
startPos = [0, 0, 0.5]
startOrientation = p.getQuaternionFromEuler([0, 0, 0])

# 加载机器人
robotID = p.loadURDF('r2d2.urdf', startPos, startOrientation)  

显示/不显示可视化

while (True):
    p.stepSimulation()
    time.sleep(0.05)

断开连接

p.disconnect()

结果如下:

Pybullet 学习笔记(一)_第1张图片

 完整代码:

import pybullet as p
import time
import pybullet_data

# 连接物理引擎
physicsCilent = p.connect(p.GUI)

# 渲染逻辑
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 0) # 感觉渲染与否差不多
p.configureDebugVisualizer(p.COV_ENABLE_GUI, 1)
# p.configureDebugVisualizer(p.COV_ENABLE_TINY_RENDERER, 1)

# 添加资源路径,为了方便之后不用写绝对路径
p.setAdditionalSearchPath(pybullet_data.getDataPath())

# 设置环境重力加速度,即对所有的物体都会产生这个重力
p.setGravity(0, 0, -10)

# 加载URDF模型,此处是加载蓝白相间的陆地,可以改形状,到时候找找,plane为场景
planeId = p.loadURDF("plane.urdf")

# 加载机器人,并设置加载的机器人的位姿
startPos = [0, 1, 0] # 原点位置
startOrientation = p.getQuaternionFromEuler([0, 0, 0]) # 整体旋转的姿态
boxId = p.loadURDF("r2d2.urdf", startPos, startOrientation)
# boxId = p.loadURDF("r2d2.urdf", [0, 0, 0], [0, 0, 0, 2])

# 按照位置和朝向重置机器人的位姿,由于我们之前已经初始化了机器人,所以此处加不加这句话没什么影响
# p.resetBasePositionAndOrientation(boxId, startPos, startOrientation)
# p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 1)

# 直接实时仿真,需要p.setRealTimeSimulation(1)
p.setRealTimeSimulation(1)
while True:
    # 设置仿真环境每隔0.05s执行一步(不要pass和p.setRealTimeSimulation(1))
    # p.stepSimulation()
    # time.sleep(0.05)
    pass

# 断开连接
p.disconnect()

你可能感兴趣的:(学习)