Skip to content

Commit

Permalink
Update friction/collision parameters
Browse files Browse the repository at this point in the history
Signed-off-by: Jorge Perez <jjperez@ekumenlabs.com>
  • Loading branch information
Lobotuerk authored and Blast545 committed Mar 2, 2021
1 parent 7b3604c commit c583765
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
3 changes: 1 addition & 2 deletions bullet/src/Base.hh
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ inline Eigen::Vector3d convert(btVector3 vec)
class Base : public Implements3d<FeatureList<Feature>>
{
public: std::size_t entityCount = 0;
public: std::size_t collisionGroup = 1;
public: std::size_t collisionGroup = 6;

public: inline std::size_t GetNextEntity()
{
Expand Down Expand Up @@ -178,7 +178,6 @@ class Base : public Implements3d<FeatureList<Feature>>
{
const auto id = this->GetNextEntity();
this->collisions[id] = std::make_shared<CollisionInfo>(_collisionInfo);

return this->GenerateIdentity(id, this->collisions.at(id));
}

Expand Down
19 changes: 12 additions & 7 deletions bullet/src/SDFFeatures.cc
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,15 @@ Identity SDFFeatures::ConstructSdfLink(
const auto &world = this->worlds.at(modelInfo->world)->world;

// Models collide with everything except themselves
const int modelCollisionGroup = 1 << this->collisionGroups.at(_modelID);
const int collisionMask = 0xFFFFFFFF & ~modelCollisionGroup;
world->addRigidBody(body, modelCollisionGroup, collisionMask);
// world->addRigidBody(body);

// const int modelCollisionGroup = 1 << this->collisionGroups.at(_modelID);
// const int collisionMask = -1 ^ modelCollisionGroup;
// world->addRigidBody(body, modelCollisionGroup, collisionMask);
world->addRigidBody(body);

// bool isDynamic = !(body->isStaticObject() || body->isKinematicObject());
// int collisionFilterGroup = isDynamic ? 1 << this->collisionGroups.at(_modelID) : int(btBroadphaseProxy::StaticFilter);
// int collisionFilterMask = isDynamic ? int(btBroadphaseProxy::AllFilter) ^ collisionFilterGroup : int(btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);
// world->addRigidBody(body, collisionFilterGroup, collisionFilterMask);
// Generate an identity for it
const auto linkIdentity = this->AddLink({name, body, _modelID, pose, mass,
linkInertiaDiag});
Expand Down Expand Up @@ -180,7 +184,7 @@ Identity SDFFeatures::ConstructSdfCollision(
->GetElement("ode");
const auto mu = odeFriction->Get<btScalar>("mu");
const auto mu2 = odeFriction->Get<btScalar>("mu2");
const auto mu3 = odeFriction->Get<btScalar>("mu3");
// const auto mu3 = odeFriction->Get<btScalar>("mu3");

// Get restitution
// const auto restitution = surfaceElement->GetElement("bounce")
Expand Down Expand Up @@ -208,7 +212,8 @@ Identity SDFFeatures::ConstructSdfCollision(
// TODO(Blast545): Consider different approaches to set frictions
// shape->setMargin(btScalar(0.0001));
body->setFriction(1);
body->setAnisotropicFriction(btVector3(mu, mu2, mu3),
// body->setRollingFriction(0.25);
body->setAnisotropicFriction(btVector3(mu2, mu, 0),
btCollisionObject::CF_ANISOTROPIC_FRICTION);

dynamic_cast<btCompoundShape *>(body->getCollisionShape())
Expand Down

0 comments on commit c583765

Please sign in to comment.