octomap, slam, 路径规划: 如何协同工作?
作者:互联网
octomap, slam, path planning: how does it all fit together?
原文链接:
OctoMap
OctoMap的优点有几个原因。像你说的,概率的映射过程,允许我们将有一定概率和占传感器测量噪声和离群值。而且非常记忆效率较快(取决于您的需求和数量的点你想要集成在一个步骤)。这是一个多分辨率映射过程,这意味着您可以在地图中看到多个分辨率。通过改变分辨率和测量范围,你也可以得到显著的加速等。
关于OctoMap,需要了解的一个非常重要的事情是它的光线投射(ray casting)。它允许区分未知的、自由的和被占用的体素,这是其他一些映射程序没有的(点云海拔man和多层次表面man)。
需要注意的重要一点是,OctoMap是一个映射过程!因此,为了正确地填充OctoMap,需要提供里程计或SLAM算法。据我所知,目前还没有针对本地化的解决方案,尽管你可能可以编写自己的本地化算法。
我想说,效率主要与OctoMap的分辨率有关。当然,将点数集成到单个测量中也有很大的作用动态障碍是概率发挥作用的地方。基于传感器模型中“hit”和“miss”的概率值,您可以控制在您添加障碍物到您的OctoMap的速度。
所有概率超过0.5的东西都被视为障碍,所以如果你命中的概率很高,动态障碍会相对较快地被添加到地图中——当然这取决于你的传感器测量的一致性。理论上,这是可行的,但在实践中,由于传感器测量不一致,我永远无法得到想要的动作。
当然,octomap不是必需的!还有许多其他的映射程序可以使用。它主要取决于你的需求——速度、内存、稀疏、半密集或密集映射等等。为了映射一个环境并用OctoMap表示它,你需要一些3D信息。
如果你有声纳,你会得到一个点云,可以很容易地把它插入一个八叉树地图。RGBD传感器(Kinect, RealSense, ASUS Xtion)和激光雷达。如果你有一个单目相机,没有办法直接获得三维点的图像。为了从几个RGB图像中创建点云,你必须使用额外的算法。
如果OctoMap变得过于大,您可以直接删除它并重新开始。不过我想这不是你想要的解决方案。也有可能创建一个当地的环境地图,即围绕着无人机的边界框,并忘记该框之外的一切对于OctoMaps。
有一些扩展可以像这样增强其性能此外,一篇关于算法SkiMap的新文章https://www.youtube.com/watch?v=rViy26zHocUhttps://www.youtube.com/watch?v=rViy26zHocU将其自身与OctoMap进行了比较,甚至指出了更好的性能,并与ROS实现一起在线发布。
Path Planning
一般来说,大。路径规划将是一个模块,将采取某种类型的地图,并根据需求集规划路径-最短路径,最安全的路径等。通常,我们会使用OctoMap,基于它创建一个占用网格,并在其上运行路径规划/导航包。因为我没有3D路径规划/导航的经验,所以我先在谷歌上搜索了一些有用的帖子.
SLAM
就像我之前说的。您将需要SLAM或里程计算算法,以正确构建您的OctoMap。工作流程如下:我们有一架配备IMU的无人机。GPS。还有一个单目照相机。它根据传感器信息计算里程(GPS)。IMU和使用RGB相机的视觉里程计),并跟踪其在环境中的位置。同时。因为它知道自己的位置。如果你知道那个位置,并且在那个位置有一个点云,它就可以映射出相对于那个位置的环境。OctoMap映射将很容易地将其插入映射中。
然而。这里需要注意一件事!OctoMap不支持在完成循环闭包时发生的全局优化。地图保持原样!此外,由于里程计中的漂移,地图可以在多个帧之间重叠。因此,你必须有良好的里程计算算法来避免它,或者通过在机器人周围设置一个边界框来遗忘之前访问过的地图部分。
标签:planning,映射,协同工作,octomap,OctoMap,slam,ROS,3D 来源: https://blog.csdn.net/Toky_min/article/details/120308358