Objects snapping into equilibrium position

Official Python bindings with a focus on reinforcement learning and robotics.
jparaujo
Posts: 1
Joined: Tue Oct 12, 2021 6:32 pm

Objects snapping into equilibrium position

Post by jparaujo »

The "Hello Bullet World!" example from the Quickstart Guide with the R2D2 URDF runs fine. Changing that to the "objects/mug.urdf" file and keeping the default orientation at first seems to have no impact. However, if the initial orientation of the mug is changed, then it will snap back into the default orientation as if it was being pulled by a magnet (see https://pasteboard.co/CzVYGdu9w6jr.gif; I use the mouse to move slightly the mug; the rest is the Bullet's doing). So far I haven't found any explanation for this in the documentation or the forums. Why does this happen, and how can I disable it?

Here is the code I'm using

Code: Select all

import pybullet as p
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")
startPos = [0,0,1]
startOrientation = [1, 0, 0, 0] # p.getQuaternionFromEuler([0,0,0])
boxId = p.loadURDF("objects/mug.urdf",startPos, startOrientation)
#set the center of mass frame (loadURDF sets base link frame) startPos/Orn
p.resetBasePositionAndOrientation(boxId, startPos, startOrientation)
logID = p.startStateLogging(p.STATE_LOGGING_VIDEO_MP4, "snapping.mp4")
for i in range (2000):
    p.stepSimulation()
    time.sleep(1./240.)
p.stopStateLogging(logID)
cubePos, cubeOrn = p.getBasePositionAndOrientation(boxId)
print(cubePos,cubeOrn)
p.disconnect()