I am fairly new to this but am trying to make my own open AI gym environment. For this I would like to be able to run my simulation without rendering, so as to speed up the training process.
I have no issues running the programme without rendering but the collisions detection stops working when the window is not rendered. When the render function (within my code) is run the collision detection works fine.
Is it possible to make the collision detection work without the render?
I used loadPrcFileData("", “window-type none” ) to prevent a window opening. A snippet of my code is below:
class Collision(DirectObject):
def __init__(self):
self.basenode = render.attachNewNode('base node')
self.PayloadNode = self.basenode.attachNewNode('Payload')
self.PayloadNode.setHpr(self.rad_2_deg(payload[0]), self.rad_2_deg(payload[1]), self.rad_2_deg(payload[2]))
self.PayloadNode.setPos(payload[3], payload[4], pay0load[5]
self.eenode = self.link3node.attachNewNode("End Effector")
self.eenode.setZ(np.amax(l[3]))
self.eenode.setHpr(self.rad_2_deg(state[9]), 0, 0)
def contact(self, base_dim, links, payload_size):
self.collhandevent = CollisionHandlerEvent()
self.collhandqueue = CollisionHandlerQueue()
trav = CollisionTraverser('traverser')
base.cTrav = trav
colliderNode1 = CollisionNode("payload")
position = LPoint3f(0,0,0)
colliderNode1.addSolid(CollisionBox(position, payload_size[0]/2, payload_size[1]/2, payload_size[2]/2))
payload_collision = self.PayloadNode.attachNewNode(colliderNode1)
colliderNode2 = CollisionNode("gripper")
colliderNode2.addSolid(CollisionSphere(0,0,0.15,0.05))
end_effector_collision = self.eenode.attachNewNode(colliderNode2)
end_effector_collision.show()
self.collhandevent.addInPattern("payload-into-gripper")
trav.addCollider(payload_collision, self.collhandevent)
self.accept("payload-into-gripper", self.collide)
def collide(self, event):
print(1)
self.done = True
There is a full node path between the base node and link3node. If I run the same code without window-type none, the collisions are detected.
Any help at all would be greatly appreciated!
Thanks so much