Patchwork++论文和代码学习——RNR

1.问题提出

对于给定的原始点云,有时会在实际地面下方观察到一些噪声点,如下图1所示。不幸的是,R-GPF基于假设:在bin内最低部分的点是地面[16]来选择初始种子;因此,这些噪声可以被视为触发相应bin中欠分割问题的初始种子。

图一
图1

        为了解决这个问题,通常通过拒绝z值小于用户定义的阈值Z_{min}的点来过滤掉这些点。这种过滤假设周围地面足够平坦。但是这种去噪方法也引发了一个严重问题,在陡坡环境中去除了一些真正的地面点,如图2(b)和(c)所示。因此,有必要区分实际地面点和噪声点。

图2

2.解决办法

        从图1中可以看出,通过反射在反射表面上,即车辆的引擎盖和车顶,或玻璃上,可以获得虚拟噪声点。而且,入射角度越小,产生的虚拟噪声点的z值越小。所以假定产生的噪声点来源于激光雷达靠下线束的激光。而且噪声点的强度值因为反射会低于正常点。

        基于以上两点,RNR只检查一定数量的底部环,N_{noise},以去除这些噪声点。相应地,RNR拒绝位于这些环中且高度低于去噪高度阈值h_{noise}和强度低于去噪强度阈值I_{noise}的点。因此,RNR有效地去除了噪声点,而实际地面点的损失可以忽略不计。特别地是,h_{noise}由A-GLE自更新。

3.代码

        这里的sensor_height_传感器(也就是雷达)高度如果不方便测量的话,可以使用《车载三维激光雷达外参数的分步自动标定算法》这篇论文中提到的方法进行自动测量,大概就是通过拟合地面的平面方程来自动求得距离地面高度。当然,如果只有一个需要测量的雷达更简单的方法是写一个手动测量雷达外参的节点。这里只是突然想到了顺嘴一提,不必在意。

        node_handle_.param("RNR_ver_angle_thr", RNR_ver_angle_thr_, -15.0);
        node_handle_.param("RNR_intensity_thr", RNR_intensity_thr_, 0.2);
template<typename PointT> inline
void PatchWorkpp<PointT>::reflected_noise_removal(pcl::PointCloud<PointT> &cloud_in, pcl::PointCloud<PointT> &cloud_nonground)
{
    for (int i=0; i<cloud_in.size(); i++)
    {
        double r = sqrt( cloud_in[i].x*cloud_in[i].x + cloud_in[i].y*cloud_in[i].y );
        double z = cloud_in[i].z;
        double ver_angle_in_deg = atan2(z, r)*180/M_PI;

        if ( ver_angle_in_deg < RNR_ver_angle_thr_ && z < -sensor_height_-0.8 && cloud_in[i].intensity < RNR_intensity_thr_)
        {
            cloud_nonground.push_back(cloud_in[i]);
            noise_pc_.push_back(cloud_in[i]);
            noise_idxs_.push(i);
        }
    }

    if (verbose_) cout << "[ RNR ] Num of noises : " << noise_pc_.points.size() << endl;
}

本文难免有错误之处,欢迎大家评论区指正。

本文只做记录本人学习用途,如有侵权,请联系删除。

参考资料:

2022年最新成果——Patchwork++地面分割 - 古月居

https://arxiv.org/pdf/2207.11919

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值