第二章可通行栅格建立(PCA方法)

系列文章目录

这一篇主要讲怎么通过PCA建立栅格可通行栅格,这部分其实有非常多的方法,这也只是当时前期使用的一个简单demo


文章目录

  • 系列文章目录
  • 前言
  • 一、栅格地图
  • 二、RTK定位
    • 1.更新位置
    • 2.将点云读入到栅格地图中
    • 3.对每个栅格进行PCA判断
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

对于做工程来说,一般地面分割使用PCA,生长算法以及RANSAC拟合平面较多,但是ransac的波动较为敏感,生长算法运行时间以及效果难以稳定,最开始就使用PCA进行测试


提示:以下是本篇文章正文内容,下面案例可供参考

一、栅格地图

nav_msgs/OccupancyGrid消息类型来表示栅格地图,地图里面的每个栅格存储一个值,用来表示该区域是被占用、自由还是未知,从而为下游的导航任务提供依据。常用值包括一般来说:
0:自由空间
100:障碍物
-1:未知

这就涉及到主要:
传感器数据采集:获取环境信息以及小车位置。
数据处理:对栅格内的可通行概率进行处理。
地图更新:根据新的数据更新地图。

二、RTK定位

1.更新位置

因为我们使用的utm坐标是一种网格状的坐标信息,并且是全球的,可以忽略整数部分,仅计算小数部分的变化,作为局部地图的中心位置移动信息。同时,为了更好地观察,将点也一并进行移动,即补偿x,y坐标的移动。

代码如下(示例):

        float x_div = -(float)(std::floor(utm_loc.x()) - std::floor(pre_utm_loc.x()));
        float y_div = -(float)(std::floor(utm_loc.y()) - std::floor(pre_utm_loc.y()));
        float z_div = -(float)(std::floor(utm_loc.z()) - std::floor(pre_utm_loc.z()));
        PointType * pt;
        #

你可能感兴趣的:(点云处理与导航,3d,c++)