std::shared_ptr<NodeData> EnvirePhysics::getCollidableNode(const smurf::Collidable& collidable, const envire::core::FrameId& frame) {
  NodeData * node = new NodeData;
  std::shared_ptr<NodeData> nodePtr(node);
  urdf::Collision collision = collidable.getCollision();
  node->init(collision.name);
  node->fromGeometry(collision.geometry);
  node->density = 0.0;
  node->mass = 0.00001;
  setPos(frame, nodePtr);
  node->movable = true;
  node->c_params.fromSmurfCP(collidable.getContactParams());
  node->groupID = collidable.getGroupId();
  return nodePtr;
}
void EnvirePhysics::itemAdded(const TypedItemAddedEvent<Item<urdf::Collision>>& e)
{
#ifdef DEBUG
  LOG_DEBUG(("[EnvirePhysics::ItemAdded] urdf::Collision item received in frame *** " + e.frame + "***").c_str());
#endif
  urdf::Collision collision = e.item->getData();
  NodeData * node = new NodeData;
  node->init(collision.name);
  node->fromGeometry(collision.geometry);
  node->mass = 0.00001;
  node->density = 0.0;
  std::shared_ptr<NodeData> nodePtr(node);
  setPos(e.frame, nodePtr);
  node->movable = true;
  if (instantiateNode(nodePtr, e.frame))
  {
#ifdef DEBUG    
    LOG_DEBUG(("[EnvirePhysics::ItemAdded] Smurf::Collision - Instantiated and stored the nodeInterface in frame ***" + e.frame +"***").c_str());
#endif
  }
}