首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FCL的碰撞检测遵循ROS wiki的API,使用shere和octree对象

使用FCL的碰撞检测遵循ROS wiki的API,使用shere和octree对象
EN

Stack Overflow用户
提问于 2015-02-11 12:06:11
回答 1查看 1.2K关注 0票数 0

我只想使用FCL库进行碰撞检测。

我的第一个目标是机器人,我想用球体的形状来指定它,其次,用八叉树来描述世界上的障碍物。

我试着按照指令来创建这个检测代码。

如何从ROS中的API中填充以下信息?

代码语言:javascript
复制
// set mesh triangles and vertice indices
std::vector<Vec3f> vertices;  
std::vector<Triangle> triangles;
// code to set the vertices and triangles
 ...
// BVHModel is a template class for mesh geometry, for default OBBRSS     template is used
typedef BVHModel<OBBRSS>* Model;
Model* model = new Model();
// add the mesh data into the BVHModel structure
model->beginModel();
model->addSubModel(vertices, triangles);
model->endModel();

在这个API中,他们使用的是三角形,据我所知,三角形只用于三维网格。我不想使用网格,我想要八叉树和球体作为对象。

  1. 那我该怎么修改呢?
  2. 在此之后,应该使用哪个函数来返回发生碰撞的真或假?
  3. 如果我的数据被更新了呢?我的意思是机器人在移动,我想不断更新机器人和八叉树的位置?我该怎么做呢?
  4. BVH模型的含义是什么?

我寻找了一些例子,发现了下面的东西:

代码语言:javascript
复制
Sphere s1(10);
Box s2(5, 5, 5);
Transform3f transform;
Transform3f identity;
CollisionRequest request;
CollisionResult result;
bool res;
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
std::cout << "res" << res << std::endl;

输出为"res1“

“1”是什么意思?这是否意味着这是一次碰撞?碰撞的物理意义是什么?对象的位置在哪里,为什么没有遵循ROS的API?

很抱歉有这么长的问题,但是我第一次使用FCL,我对它一无所知。

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 09:02:47

首先,这只是一个部分的答案。我不知道FCL,但我一般可以回答问题4,也许其他人会回答其他问题。

4) BVH模型的含义是什么?

BVH是包围卷层次结构的缩写。包围体积是一种几何形状,包括某些模型的点(或三角形)。一个简单的例子是一个边框,但是还有其他的,更复杂的。

BVH是一个包含多个边界卷的树结构:根节点是包围整个模型的BV。然后将模型中的点分解为两个不同的子集。对于这些子集中的每一个,计算新的BV。这些新的BV形成根的子节点。

子节点再次被分割,递归地继续这个过程,直到某个终止条件被完全填充(例如,一个节点中的点数小于某个预定义的限制)。该结构的叶节点包含模型的实际点。

这个BVH有什么好处?

这种结构的目的是减少碰撞检测等任务的计算时间:

假设,我想知道,机器人是否与障碍物相撞。如果我有一个机器人模型的BVH,我首先只检查根边界体积是否与障碍物碰撞。

如果它们不碰撞,我立即完成(如果包围体积不碰撞,封闭的机器人模型也不能碰撞)。

如果他们真的碰撞了,我必须下降到等级,看看孩子的BVs是否与障碍碰撞。如果其中一个碰撞,我必须进一步下去,递归检查它的孩子。但是,如果其中一个没有碰撞,我可以剔除挂在这个节点上的整个子树,从而节省大量的计算。只有当我到达一个叶节点时,我才能看到机器人模型的实际点。

例如,可以在维基百科上找到更多的信息。

--但是,我认为,只有当模型是复杂的网格时,BVH才是有用的,所以我想这里需要一些不同的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28453952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档