PyBullet运行报错Cannot load URDF file无法加载URDF文件如何解决
PyBullet 无法加载URDF文件报错修复方案
报错根因
你虽然导入了
pybullet_data依赖,但未将其对应的数据目录添加到PyBullet的URDF文件搜索路径中。修改系统配置后,PyBullet的默认搜索路径、当前工作目录发生变动,导致无法定位到内置的plane.urdf文件。
修复步骤
- 给PyBullet添加
pybullet_data的搜索路径,在建立仿真连接后插入一行配置:
p.setAdditionalSearchPath(pybullet_data.getDataPath())
- 同步修复原代码中的其他逻辑问题:
- 原代码未定义
boxId变量,需要提前加载立方体URDF - 原代码
while True为死循环,后续获取物体位姿、断开连接的代码永远不会执行,可根据需求添加终止条件
- 原代码未定义
- 修复后的完整可运行代码如下:
import pybullet as p import time import pybullet_data physicsClient = p.connect(p.GUI) # 新增:添加pybullet内置数据的搜索路径 p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0,0,-9.81) planeId = p.loadURDF("plane.urdf") startPos = [0,0,1] startOrientation = p.getQuaternionFromEuler([0,0,0]) # 新增:加载立方体,定义boxId boxId = p.loadURDF("cube.urdf", startPos, startOrientation) # 这里修改为运行指定步数后停止,避免死循环 for _ in range(1000): p.stepSimulation() time.sleep(1./240.) cubePos, cubeOrn = p.getBasePositionAndOrientation(boxId) print(cubePos,cubeOrn) p.disconnect()
异常排查(如果修改后仍报错)
- 检查
pybullet和pybullet_data安装完整性,执行命令pip install --upgrade pybullet pybullet_data重装依赖 - 验证当前Windows用户对
pybullet_data的安装目录有读取权限,修改系统配置可能误改了目录权限 - 可以手动指定URDF的绝对路径,先执行
print(pybullet_data.getDataPath())打印出数据目录的完整地址,拼接plane.urdf后直接传入loadURDF方法即可,例如:
planeId = p.loadURDF("C:/Users/你的用户名/AppData/Local/Programs/Python/Python3x/Lib/site-packages/pybullet_data/plane.urdf")
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

