since parent collision is always disabled by default for self-collision, we add a new flag
URDF_USE_SELF_COLLISION_INCLUDE_PARENT, to force self-collision between direct parent/child (not recommended in general)
This commit is contained in:
@@ -599,10 +599,11 @@ void ConvertURDF2BulletInternal(
|
|||||||
|
|
||||||
if (mbLinkIndex>=0) //???? double-check +/- 1
|
if (mbLinkIndex>=0) //???? double-check +/- 1
|
||||||
{
|
{
|
||||||
|
|
||||||
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_collider=col;
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_collider=col;
|
||||||
if (flags&CUF_USE_SELF_COLLISION_EXCLUDE_PARENT)
|
if (flags&CUF_USE_SELF_COLLISION_INCLUDE_PARENT)
|
||||||
{
|
{
|
||||||
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_flags |= BT_MULTIBODYLINKFLAGS_DISABLE_PARENT_COLLISION;
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_flags &= ~BT_MULTIBODYLINKFLAGS_DISABLE_PARENT_COLLISION;
|
||||||
}
|
}
|
||||||
if (flags&CUF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS)
|
if (flags&CUF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ enum ConvertURDFFlags {
|
|||||||
CUF_ENABLE_CACHED_GRAPHICS_SHAPES = 1024,
|
CUF_ENABLE_CACHED_GRAPHICS_SHAPES = 1024,
|
||||||
CUF_ENABLE_SLEEPING=2048,
|
CUF_ENABLE_SLEEPING=2048,
|
||||||
CUF_INITIALIZE_SAT_FEATURES=4096,
|
CUF_INITIALIZE_SAT_FEATURES=4096,
|
||||||
|
CUF_USE_SELF_COLLISION_INCLUDE_PARENT = 8192,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UrdfVisualShapeCache
|
struct UrdfVisualShapeCache
|
||||||
|
|||||||
@@ -830,6 +830,7 @@ enum eURDF_Flags
|
|||||||
URDF_ENABLE_CACHED_GRAPHICS_SHAPES=1024,
|
URDF_ENABLE_CACHED_GRAPHICS_SHAPES=1024,
|
||||||
URDF_ENABLE_SLEEPING=2048,
|
URDF_ENABLE_SLEEPING=2048,
|
||||||
URDF_INITIALIZE_SAT_FEATURES = 4096,
|
URDF_INITIALIZE_SAT_FEATURES = 4096,
|
||||||
|
URDF_USE_SELF_COLLISION_INCLUDE_PARENT = 8192,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eUrdfGeomTypes //sync with UrdfParser UrdfGeomTypes
|
enum eUrdfGeomTypes //sync with UrdfParser UrdfGeomTypes
|
||||||
|
|||||||
@@ -9760,6 +9760,8 @@ initpybullet(void)
|
|||||||
|
|
||||||
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION", URDF_USE_SELF_COLLISION);
|
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION", URDF_USE_SELF_COLLISION);
|
||||||
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION_EXCLUDE_PARENT", URDF_USE_SELF_COLLISION_EXCLUDE_PARENT);
|
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION_EXCLUDE_PARENT", URDF_USE_SELF_COLLISION_EXCLUDE_PARENT);
|
||||||
|
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION_INCLUDE_PARENT", URDF_USE_SELF_COLLISION_INCLUDE_PARENT);
|
||||||
|
|
||||||
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS", URDF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS);
|
PyModule_AddIntConstant(m, "URDF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS", URDF_USE_SELF_COLLISION_EXCLUDE_ALL_PARENTS);
|
||||||
|
|
||||||
PyModule_AddIntConstant(m, "VISUAL_SHAPE_DATA_TEXTURE_UNIQUE_IDS", eVISUAL_SHAPE_DATA_TEXTURE_UNIQUE_IDS);
|
PyModule_AddIntConstant(m, "VISUAL_SHAPE_DATA_TEXTURE_UNIQUE_IDS", eVISUAL_SHAPE_DATA_TEXTURE_UNIQUE_IDS);
|
||||||
|
|||||||
Reference in New Issue
Block a user