Replies: 1 comment 1 reply
-
This conversation may help explain the use of performCollisionDetection: #2900 As I understood, the reason you need to call it (or the benefit of it being added) is the simulation step is what is needed normally to update contact points, and just updating the bounding box doesn't solve it. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I am trying to use PyBullet for performing motion planning research.
Essentially I would like to disable actual physical collisions that occur during simulation (since this can bump collision objects out of place) to test a variety of robot configurations for collision free validity. However, I have an issue in that I cannot seem to get robot object collision detection queries to work well.
Questions:
I've read in the documentation that getClosestPoints or getContactPoints should be called after calling p.performCollisionDetection. Is it even necessary to call p.performCollisionDetection at all if I use p.resetJointState to a test configuration and then call getClosestPoints()?"
Does anyone have advice on how to perform collision queries for arbitrary arrangements of the robot and with static simulation objects?
Will using the p.setCollisionFilterGroupMask disable simulated collisions? Will it completely disable any form of collision detection? I don't want to disable collision detection but I do want to disable collisions actually having physical consequences to my environment.
Here is the gist of how I am performing collision validity queries. Please note that some of the functions/objects are wrappers around PyBullet core functions such that I've created a little bit of a higher-level interface for my purposes:
I first create a Python Context Manager to disable self collisions of the robot and between the robot and any simulation objects so that when I reset the robot joint state, the arm does not slam into objects in the environment and displace them from their validity position for planning.
I then perform self collision and robot object collisions with the following functions:
I have wrapper function called get_closest_points that adapts to the types of sim id's / links passed in as arguments:
The above function is then used for self-collision checking via the following function:
And within a robot-object collision checking function:
Beta Was this translation helpful? Give feedback.
All reactions