首先,我是使用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的问题正常显示。
先在这里记录一下这个问题,之后如果能解决再补!