From bea2f6e65a80798f3f524154204995ed15eb7af5 Mon Sep 17 00:00:00 2001 From: Chuyuan Fu Date: Mon, 11 Mar 2019 13:12:49 -0700 Subject: [PATCH] Turn off self-collision for FixJointBoxes example --- examples/BulletRobotics/FixJointBoxes.cpp | 1 + .../b3RobotSimulatorClientAPI_NoDirect.cpp | 22 +++++++++++++++++++ .../b3RobotSimulatorClientAPI_NoDirect.h | 2 ++ 3 files changed, 25 insertions(+) diff --git a/examples/BulletRobotics/FixJointBoxes.cpp b/examples/BulletRobotics/FixJointBoxes.cpp index 8034600f3..a5a89e329 100644 --- a/examples/BulletRobotics/FixJointBoxes.cpp +++ b/examples/BulletRobotics/FixJointBoxes.cpp @@ -75,6 +75,7 @@ public: if (i > 0) { m_robotSim.createConstraint(cubeIds[i], -1, cubeIds[i - 1], -1, &jointInfo); + m_robotSim.setCollisionFilterGroupMask(cubeIds[i], -1, 0, 0); } m_robotSim.loadURDF("plane.urdf"); diff --git a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp index 284430847..9efed7f7e 100644 --- a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp +++ b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp @@ -2417,3 +2417,25 @@ void b3RobotSimulatorClientAPI_NoDirect::setAdditionalSearchPath(const std::stri statusHandle = b3SubmitClientCommandAndWaitStatus(sm, commandHandle); } } + +void b3RobotSimulatorClientAPI_NoDirect::setCollisionFilterGroupMask(int bodyUniqueIdA, int linkIndexA, int collisionFilterGroup, int collisionFilterMask) +{ + int physicsClientId = 0; + b3PhysicsClientHandle sm = m_data->m_physicsClientHandle; + if (sm == 0) + { + b3Warning("Not connected"); + return; + } + + b3SharedMemoryCommandHandle commandHandle; + b3SharedMemoryStatusHandle statusHandle; + int statusType; + + commandHandle = b3CollisionFilterCommandInit(sm); + b3SetCollisionFilterGroupMask(commandHandle, bodyUniqueIdA, linkIndexA, collisionFilterGroup, collisionFilterMask); + + statusHandle = b3SubmitClientCommandAndWaitStatus(sm, commandHandle); + statusType = b3GetStatusType(statusHandle); +} + diff --git a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h index cca09d974..297c7e203 100644 --- a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h +++ b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h @@ -664,6 +664,8 @@ public: return SHARED_MEMORY_MAGIC_NUMBER; } void setAdditionalSearchPath(const std::string &path); + + void setCollisionFilterGroupMask(int bodyUniqueIdA, int linkIndexA, int collisionFilterGroup, int collisionFilterMask); }; #endif //B3_ROBOT_SIMULATOR_CLIENT_API_NO_DIRECT_H