首先,我是使用VMware workstation pro 15搭建的Ubuntu 18.04系统环境。
使用python3.5.6
和 pip3
安装的pybullet
(sudo) pip3 install pybullet
然后运行任意一个示例的时候,环境中没有物理模型,但是程序是在运行的。比如说
import pybullet as p
import time
import pybullet_data
physicsClient = p.connect(p.GUI)#or p.DIRECT for non-graphical version
p.setAdditionalSearchPath(pybullet_data.getDataPath()) #optionally
p.setGravity(0,0,-10)
planeId = p.loadURDF("plane.urdf")
cubeStartPos = [0,0,1]
cubeStartOrientation = p.getQuaternionFromEuler([0,0,0])
boxId = p.loadURDF("r2d2.urdf",cubeStartPos, cubeStartOrientation)
for i in range (10000):
p.stepSimulation()
time.sleep(1./240.)
cubePos, cubeOrn = p.getBasePositionAndOrientation(boxId)
print(cubePos,cubeOrn)
p.disconnect()
找了很久的原因,是因为虚拟机中默认使用OpenGL2
,这样渲染就不够,导致模型画不出来。
根据国外大腿的各种解释,你可以将启动物理引擎代码做个修改
physicsClient = p.connect(p.GUI,"option=opengl2")#or p.DIRECT for non-graphical version
这样就可以勉强使用,但是画质渲染会丢掉很多模型细节。
华北舵狗王分享文章说你可以通过设置虚拟机的3D图形来显示本体,但我还没有测试过:
而我有一个快速的方法,可以让你避开这些坑:
实际上,你使用虚拟机搭建ubuntu系统应该大部分是因为你主机系统是window。如果你只是调试代码,可以直接WINDOWS
下安装python
和 pybullet
,就能够避免OpenGL
的问题正常显示。
先在这里记录一下这个问题,之后如果能解决再补!