为什么pybullet启动后没有模型图像,啥也没有的问题【每日一个小技巧】

首先,我是使用VMware workstation pro 15搭建的Ubuntu 18.04系统环境。

使用python3.5.6pip3 安装的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下安装pythonpybullet,就能够避免OpenGL的问题正常显示。
在这里插入图片描述

先在这里记录一下这个问题,之后如果能解决再补!

pybullet中创建一个简单的无人机模型主要涉及到以下几个步骤: 1. 导入必要的库:首先,需要导入pybullet和相关的数学库,如numpy。 ```python import pybullet as p import numpy as np ``` 2. 初始化pybullet启动pybullet物理引擎,并设置为GUI模式或非GUI模式,以便创建和管理仿真环境。 ```python p.connect(p.GUI) # 或者使用 p.connect(p.DIRECT) 进行非GUI模式连接 ``` 3. 加载无人机模型:可以从URDF(通用机器人描述格式)或SDF(仿真描述格式)文件加载预定义的无人机模型。URDF文件通常描述了机器人的物理属性和关节。 ```python # 假设有一个名为'drone.urdf'的文件描述了无人机模型 droneId = p.loadURDF("drone.urdf") ``` 4. 设置场景:根据需要设置仿真环境,可以添加地面、障碍物等其他元素。 ```python # 添加地面 planeId = p.loadURDF("plane.urdf") ``` 5. 无人机控制:虽然加载了无人机模型,但是为了使其在仿真中进行飞行,还需要编写控制代码来模拟电机的推力和扭矩,这通常涉及到对无人机的动力学模型进行编程。 ```python # 示例:设定一个简单的控制循环 for _ in range(1000): # 获取当前无人机的位置和方向 pos, orn = p.getBasePositionAndOrientation(droneId) # 控制逻辑(这里仅为示例,需要根据实际动力学模型编写) # 假设我们有一个函数calculate_thrust_and_torque()来计算推力和扭矩 thrust, torque = calculate_thrust_and_torque(pos, orn) # 应用控制到无人机 p.applyExternalForce(droneId, -1, [0, 0, thrust], p.LINK_FRAME, flags=p.WORLD_FRAME) p.applyExternalTorque(droneId, -1, torque, flags=p.LINK_FRAME) # 步进仿真 p.stepSimulation() # 可以设置一个短暂的延迟以减慢仿真速度 p.getCameraImage() ``` 6. 关闭仿真:完成仿真后,关闭pybullet连接。 ```python p.disconnect() ``` 以上代码仅提供了一个创建和控制无人机模型的概览。在实际应用中,需要有详细的URDF模型文件,以及更复杂的控制算法来准确地模拟无人机的行为。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶技者

为技术开源努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值