patchwork++源码学习(1)—Reflected Noise Removal (RNR )

本文分析了PathWork++在激光雷达中去除反射噪声(RNR)的实现方法,探讨了其在实际场景中的局限性,包括对地面平整度的假设以及强度和角度阈值的选择。作者还提供了源码链接供读者参考。
摘要由CSDN通过智能技术生成

前言

工作中需要用到去地面算法,调研发现pathwork++去地面效果比较好,但是在实际使用中依然无法解决遇到的问题,这里进行源码不同模块的理解,提升自己算法思维和算法开发能力。

1 Reflected Noise Removal (RNR )反射噪声去除

在激光雷达进行感知时,存在地面的异常噪点,RNR的原理论文中的表述如图1,认为在地面以下存在虚假的噪点,原理不进行赘述,直接分析实现函数。
RNR原理图图片描述

图1 RNR原理图

2 RNR实现函数

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_ &&    // RNR_ver_angle_thr_ RNR垂直角度阈值,-20.0
            z < -sensor_height_ - 0.8 &&                // sensor_height_传感器相对地面安装高度,
            cloud_in[i].intensity < RNR_intensity_thr_) // RNR_intensity_thr_ RNR强度过滤阈值, 0.2
        {
            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;
}

3 理解与测试

个人理解

  1. 传感器在车辆顶部安装,如果为2米,则-2.8米以下的点云才有可能被视为噪点,实际场景对应于好几层的高楼,在地面上的倒影
  2. 强度过滤需要根据不同传感器的特性考虑,测试用的livox和ouster等的强度规律不同,
  3. 角度阈值主要考虑远处的障碍物,比如要实现60米的感知,则地面以下60×tan(20°)= 21.8米的点才会过滤

实际使用感受

测试场景为井下的巷道,采用多种激光点云数据融合,存在较多的上下坡,且地面不平整

  1. 这种方法近似假设了地面是相对平整的,对于非常低的噪点才有用,如果相对高度低于-2.8米,则完全无效。
  2. 采用较小的映射阈值时,在下坡时,会把一定的地面点过滤掉,并不是过滤掉噪点
  3. 这里的噪点并没有考虑对应的地面以上的映射,在一定范围内是否有实际的真实点

4 源码链接

码云链接

码云gitee](https://gitee.com/zhong----zheng/patchwork-plusplus)

git clone 下载

git clone git@gitee.com:zhong----zheng/patchwork-plusplus.git
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值