1,094
社区成员




大神你好,请问
1. ExtractVerticalSurface,请问该方法中的依据是什么呢,为啥可以提取出surface呢
2. diff_cloud_指的是什么呢
这个操作没看懂,筛选<40的点,是选出的原来stacked_cloud_中的点吗(r = 255)?
3. 为甚么会有uncovered的点呢,点不都是来自于点云,只要是点云应该都是被扫描(covered)到才出现的呀,为什么还会有uncovered的呢
是指当前的surface中,未被covered的surface吗?
引入surface,而不用单独的frontier的目的,就是为了牵制vehicle,不让它太贪心,一直朝着frontier走,对吗???
你好,
因为我们开源的代码是给地面机器人使用的,探索的过程中只考虑相对垂直的表面(vertical surface),比如墙上的点。ExtractVerticalSurface这个函数是希望把墙上的点都提取出来,把地上和天花板上的点扔掉。主要的想法是看每个点邻域内其他点的分布。如果一个点的邻域内其他点都和它有一定的高度差,那这个点很有可能就是墙上的点(vertical surface)。 具体实现上用了一个操作点云的小技巧。先把点云的高度(z)存在PointXYZI的intensity里面,然后把z设成0,就得到了一个在xy平面上的扁平化的点云。然后对每一个点用kdtree搜索邻域,如果邻域内点的intensity,也就是z,存在一定高度差,那么它就是墙上的点。值得注意的是,如果这个高度差太大,那它可能是天花板或者地上的点。因为把点云在xy平面上压扁后天花板上的点和地上的点混合在了一起。
diff_cloud指的是一帧点云当中和之前几帧相比有变化的点。这个我们在https://bbs.csdn.net/topics/%E8%BF%99%E7%AF%87%E8%AE%BA%E6%96%87中有提到。
具体关于uncover和covered点的定义我们在https://bbs.csdn.net/topics/%E8%BF%99%E7%AF%87%E8%AE%BA%E6%96%87中有给出。简单来说,但激光雷达扫描到环境中的点之后,我们并不认为这个点被covered了。只有当机器人离它足够近(理论上还需要在一个比较好的观测角度)才认为它被covered了。
是的。我们这个探索算法的主要目的是建立一个完整的高质量的地图,所以我们希望机器人不仅仅只是“看到”了surface,还要把它“看好”。