Я хочу управлять процедурно сгенерированным роботом. Рассмотрим следующий код:
import time
import pybullet as p
import pybullet_data
import sys
physicsClient = p.connect(p.GUI)
p.setPhysicsEngineParameter(enableFileCaching=0)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
p.resetSimulation()
p.setGravity(0, 0, -10)
planeId = p.loadURDF("plane.urdf")
robot = p.loadURDF(sys.argv[1], [0, 0, 2])
p.setRealTimeSimulation(1)
for t in range(200000):
p.getKeyboardEvents()
p.resetSimulation()
p.setGravity(0, 0, -10)
planeId = p.loadURDF("plane.urdf")
robot = p.loadURDF(sys.argv[1], [0, 0, 2])
p.setRealTimeSimulation(0)
for t in range(200000):
p.stepSimulation()
time.sleep(1. / 240.)
p.disconnect()
Если этот код сохранен в test.py
, вы можете запустить
python test.py <filename>
, где <filename>
- файл URDF.
Первая половина проходит нормально. Вторая половина, мой файл URDF сходит с ума и улетает. Примеры файлов URDF с таким поведением: ссылка на файл URDF ссылка на файл URDF Если вы сохраните файлы URDF по этим ссылкам и запустите тестовый файл, вы увидите причудливое поведение.
Я также пробовал этот код, используя некоторые примеры файлов URDF, предоставленных pybullet, например, их файлы URDF для кубов и гуманоидов, и они, кажется, работают нормально. Должна быть некоторая проблема в обработке физики моих файлов URDF, но я не уверен, почему они должны отличаться.