【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps

【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps

终于一次轮到了讲自己的paper了 hahaha,写个中文的解读放在博客方便大家讨论

  • Title Picture
  • Reference and prenotes

    paper: https://arxiv.org/abs/2307.07260

    code: https://github.com/KTH-RPL/DynamicMap_Benchmark

    b站:地图动态障碍物去除总结 ITSC’23: A Dynamic Points Removal Benchmark in Point Cloud Maps

1. Motivation

主要就是2019年末在公司的时候,做一个教育平台的无人驾驶小车项目的时候 从头开始部署autoware发现,建图中会有我们来来回回走动的 点云,当时其实就想了一种和 ndt slam 直接结合的方式去除,不过比较稚嫩+工程的想法所以后续也没有什么总结,隐约记得:最后还是 人手动去除的障碍物 毕竟也就三幅图 😃

直到 2023年初 来了KTH后 天明又提了这个需求 问我能不能自动去掉Leica动态图,他人手标了KTH的图标了1个月,所以当时就又投入到这个idea的调研了,最后就是这一篇 + 后续两篇方案 的输出,那么开始进入正题

如图是截取KITTI 07的部分地图,因为有semanticKITTI的标注信息 所以我们把动态物体用黄色表示出来了,这个动态物体如果不在建图中去掉 可能会导致:

  1. 定位出现问题,因为有大量不属于静态的点云出现在地图里导致错误的feature
  2. 全局规划 无法规划,如上图 如果直接作为全局规划的global map,那么这一条路可能都不会被选择,有时候还可以绕路解决 但是如果黄色点再多 则直接gg 【不过这一点在自动驾驶中可能不会那么大的影响 因为大部分都会做地图矢量 OpenDrive的形式】
  3. 建筑测量时,导致大量不准确的判断,主要就是用全站仪进行收集时,莱卡虽然内置去除 但是当数量较多时,也无法做到输出干净的地图

Contribution

那么对比之前方案 和 这篇的贡献主要在于:

  1. 现有的方案 没有一个通用的基准测试以便后续研究者能够直接使用 一种格式进行测试 评估,所以我们在此总结了之前的方案,采用统一格式进行整理 删除多余的部分,给出一条更focus在这个任务上的benchmark
  2. 之前的方案大多都是在仿真或KITTI上进行,而且都是64线雷达等,此篇我们同时还标注了 av2 32线大城市数据,semindoor 16线 半室内数据 并开放给大家一起评估使用。【后续随着两篇的出版还会 再开出 128线,莱卡全站仪数据】
  3. 这篇提出基准的同时 也告诉了大家如何分析各个方案的问题并将其改进,比如我们选用了之前方案经常对比的octomap进行演示进行改进

2. Benchmark

基准测试包含四个方案 Removert,ERASOR,原octomap,改进后octomap,那么先整理一下方案 说明一下各自缺点 然后进入到实验给大家对应起各个问题

首先图2,3指示了三个方案各自的问题 【部分问题erasor文章中也进行了探讨 如果感兴趣 可以点进paper查看reference进行阅读】:

  1. raycasting:采用雷达点 都是从中心射出去的性质,判断这条线的穿过部分都是空的点,但是会有:雷达角度 和稀疏雷达 导致的误判断动态点,删除了过多的点
  2. visiting-based:采用可视区域(但是我在总结的时候 一直感觉和raycasting的基本差不多 没啥区别),也就是 <一个激光点的光路穿过了另一个激光点,那么另一个激光点就是动态点 引用> Fig 2. © 可以看到如果超过一定高度的动态障碍物会导致 车顶部的点云无法有效被去除
  3. height-threshold:也就是ERASOR的方案,用地图和当前scan的高度差异来判断,然后去除这个高度下的所有点,Fig 3. 指示了缺点:需要针对传感器高度,场景内出现的高度物体来进行调参,但是也避免不了无法找到一个合适的阈值解决一个场景内所有的高度,如果调高了会误删除很多点,如果调低了会 留下一些动态点

以下为方法总结:

我们的改进主要是针对benchmark和实验发现的问题进行的,在原始的octomap前加入了噪音去除,地面分割,然后octomap会根据每次scan的 给整个空间的每个voxel occupancy value 也就是这个voxel被占据的概率,最后运行完所有,我们根据概率阈值进行筛选动静态

同时需要注意的是 得益于octomap © 方案是唯一的不需要先验原始地图的,也就是后续如果能对时间进行改进 可以做到实时建图,最后直接输出clean map

3. Experiment

我们引入了新的两个数据集:

  • AV2 的一个序列,配置为两个VLP32,上下连起来的中心放置方式 周边建筑物较高
  • semindoor 我们自己在建筑楼下收集的数据,配置为一个VLP16,放在一个在地上的小车上

还有就是评估metric从 voxel-level 换成了 point-level,这样就不会对gt进行任何形式的处理 比如降采样等,也能保证最精准的评估,对标后续建筑领域的测量评估(全站仪)

定性分析 (看图)

首先趁热打铁,刚刚大家读完了 各个方案缺点,正好从实验可视化的角度看一看:

  1. raycasting的问题 在图7的(d) 中得到了非常明显的体现,也就是 地面角度和雷达稀疏性 导致去掉了过多静态点,给地面造成了空洞 空洞的形状也正如雷达的ring

  2. 关于车顶部点云无法去除 在KITTI05的数据中体现较多 因为文章篇幅 原文并没有能展示


    不过随手拖一个Removert的结果图 可大家展示一下 当然大家自己也可以直接pull code或者docker pull来复现出来
  3. height-based 在图6的© 可以看到树木的trunk 很规律的被高度截断,还有图中的其他部分 限于篇幅没有截图所有的,还有图7© 也可以看到一小块墙壁的高度面删除


那么从可视化角度,(note:ERASOR 我调过参,因为对高度阈值需要准确 16线的小车上不同于KITTI av2的也和kitti的高度不一样 所以为了对他们公平,就用了不同的config,其他的基本保持一个参数 比如我们改进后的octomap w GF阈值都是默认的一个

ERASOR和octomap w GF表现是比较好的,考虑下游任务,如果更追求精准度 octomap w GF更好,如果更追求去除的干净程度给部分不依赖 plane feature的localization用 可能ERASOR更好,预告:后续的两篇方法在时间和精度上均能够超过octomap w GF,欢迎大家star repo 以追踪信息

定量分析(看表)

  • SA:静态点的准确率
  • DA:动态点的准确率
  • AA:联合准确率, S A × D A \sqrt{SA \times DA} SA×DA ,因为我可以去掉所有的点 让我的DA 100%,也就是一个点都不去让SA 100%,所以需要一个联合准确率去做最终的判断

从表的信息可以看出经过 benchmark指导 改进后的octomap w GF在大多时候表现还是较为优越的,虽然这并不是我们的最后结果(benchmark 比较站在中立的角度)

Fig 5指示了 没有标出来的动态点都在动态点哪个位置分布上,可以看到 基本都在动态点的周围,也就是说 后续可能经过一个cluster 距离的简单聚类 会再次提升DA的值(这也就是我们benchmark的意义:如何分析 - 分析后如何改进)

表二则是指示了 w GF后我们的速度提升 20-30%,当然还是不如Removert和ERASOR快,但是 在审的两篇方法为主 均在速度上有极大的提升

4. Conclusion

结论就是,这篇benchmark 大概就是给大家进行现有方案的总结,并且实验分析,改进其中一个老方案,给大家看到benchmark paper的意义,也可以说是survey paper(其实主要还是每个方法都有自己的格式 对比的都不开源 所以干脆自己干 搞一个 造福大家 一键生成与复现

最后就是 这个动态去除pipeline + simple ndt slam,可以做到给大家一条龙服务,需要做的就是rosbag record /point_cloud,录下你的雷达数据即可!

  1. rosbag record
  2. 🔥 run simple_ndt_slam
  3. 🔥 run DynamicMap_Benchmark 其中任一方法均可

所有的代码和README均已完善,欢迎大家一起交流,如果有数据集 自己标了gt想要贡献的话 就更好啦!Stay tuned with us (因为后面还有更多方案会加进来哦


赠人点赞 手有余香 😆;正向回馈 才能更好开放记录 hhh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高校教务系统登录页面JS分析——华东交通大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

【LeetCode刷题(数据结构与算法)】:合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 **思路&#xff1a;定义一个头尾指针置为NULL while循环依次比较两个链表的值的大小 遍历链表 比较完数值大小过后连接到tail的尾部 然后各自的链表的节点的next指针指向下一…

电脑开不了机用U盘重装系统Win10教程

如果我们遇到了电脑开不起机的问题&#xff0c;这给我们的正常使用带来了很大的影响。这时候我们可以借助U盘重装系统的方法&#xff0c;轻松应对这一问题。下面小编给大家详细介绍关于用U盘给开不机的电脑重装Win10系统的教程步骤&#xff0c;操作后用户就能正常使用电脑了。 …

龙芯3A3000源码编译安装deepin-ide

安装环境 系统为统信专业版1050 CPU为龙芯3A3000 安装步骤 1.安装所有依赖库 sudo apt-get install git debhelper cmake qt5-qmake qtbase5-dev qttools5-dev qttools5-dev-tools lxqt-build-tools libssl-dev llvm llvm-dev libclang-dev libutf8proc-dev libmicrohttpd-d…

MySQL学习(六)——视图和触发器

文章目录 1. 视图1.1 视图语法1.2 检查选项1.3 视图的更新1.4 视图的作用 2. 触发器2.1 介绍2.2 语法介绍2.3 触发器示例2.3.1 插入数据触发器2.3.2 修改数据触发器2.3.3 删除数据触发器 1. 视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据…

react antd实现upload上传文件前form校验,同时请求带data

最近的需求&#xff0c;两个下拉框是必填项&#xff0c;点击上传按钮&#xff0c;如果有下拉框没选要有提示&#xff0c;如图 如果直接使用antd的Upload组件&#xff0c;一点击文件选择的窗口就打开了&#xff0c;哪怕在Button里再加点击事件&#xff0c;也只是&#xff08;几乎…

震惊!idea专业版如何配置maven国内源手把手教学

目录 1、创建一个maven项目 2、配置maven国内源&#xff08;阿里&#xff09; 3、在等待过程中&#xff0c;设置新项目的maven配置 4、若下载失败&#xff0c;删除repository文件夹内所有文件&#xff0c;多下几次即可 5、为何配置国内源 1、创建一个maven项目 选择以下三…

微信好友消息自动回复,让你轻松应对好友咨询

有许多用微信做业务、做微商的小伙伴&#xff0c;微信有时候消息太多看不过来&#xff0c;漏看消息&#xff0c;或者不知道怎么引导用户&#xff0c;让他们看到你想让他们看到的消息。微信上用户多微信上的信息容易漏掉&#xff0c;怎么能有时效的回复客户呢&#xff1f;此时你…

vue3.0 + element plus upload图片 上传

直接上图吧&#xff1a; 记录一下&#xff0c;方便后续遇到啥问题

【C++杂货铺】一文总结C++中的异常

文章目录 一、C语言传统的处理错误的方式二、C异常三、异常的使用3.1 异常的抛出和捕获3.1.1 异常的抛出和匹配原则3.1.2 在函数调用链中异常栈展开匹配原则 3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异常体系五、C标准库的异常体系六、异常的优缺点6.1 优点6.2 …

WINCC趋势画面模板

加载按钮 Sub OnClick(Byval Item) Dim Chart,tag,ctrl,objTrendWnd,objTimeAxis,objValAxis,objTrendSet ChartScreenItems("组合框2")Chart tagChart.SelTextSet ctrl ScreenItems("控件1")threadSet objTrend…

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…

Python处理PDF——PyMuPDF的安装与使用详解

​​​​​​​ 1、PyMuPDF简介 1. 介绍 在介绍PyMuPDF之前&#xff0c;先来了解一下MuPDF&#xff0c;从命名形式中就可以看出&#xff0c;PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种…

字符串排序程序

字符串排序程序&#xff0c;对一个字符串中的数值进行从小到大的排序 例如排序前给定的字符串为" 20 78 9 -7 88 36 29" 排序后&#xff1a; -7 9 20 29 36 78 88 要求使用包装类对数值类型的字符串转换成整型进行排序。 public class StringSort {public static vo…

..\FreeRTOS\include\FreeRTOS.h(1277): error: #65: expected a “;“出现的这个错误标志解决方法

..\FreeRTOS\include\FreeRTOS.h(1277): error: #65: expected a ";" 近来写软件过程中&#xff0c;当在某一个.C文件中我申明了FreeRTOS.h文件&#xff0c;结果呢编译是出现报错了 经过查找&#xff0c;是因为我在另外一个文件声明了 #include <stdbool.h> …

使用按钮从 SAP 系统内打开 Excel 文件

了解如何通过 SAP 屏幕上创建的按钮打开所需的 Excel 文件。为了演示这一点&#xff0c;将指导您完成以下步骤。 使用 del 命令删除 SAP 上不必要的元素添加一个按钮&#xff0c;单击后打开弹出窗口创建一个函数来选择 excel 文件创建打开所需 excel 文件的函数 定制 登录 S…

Python 框架学习 Django篇 (三) 链接数据库

只要你是做后端开发的&#xff0c;那么就离不开各种数据库&#xff0c;Django框架对各种数据库都非常友好&#xff0c;比如常见的PostgreSQL、MySQL、SQLite、Oracle&#xff0c;django都对他们提供了统一调用api&#xff0c;我们这里主要使用mysql数据库作为演示 一、ORM机制 …

10月20日星期五今日早报简报微语报早读

10月20日星期五&#xff0c;农历九月初六&#xff0c;早报微语早读分享。 1、上海4岁走失女童遗体在宁波市某滩涂被发现&#xff0c;排除刑事案件&#xff1b; 2、中国多个实体和个人被指涉伊朗军工制造将遭美国非法单边制裁&#xff0c;外交部&#xff1a;坚决反对&#xff…

2.3 如何使用FlinkSQL读取写入到JDBC(MySQL)

1、JDBC SQL 连接器 FlinkSQL允许使用 JDBC连接器&#xff0c;向任意类型的关系型数据库读取或者写入数据 添加Maven依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc</artifactId><version>3.1…

【高危安全通告】Oracle 10月月度安全漏洞预警

近日&#xff0c;安全狗应急响应中心关注到Oracle官方发布安全公告&#xff0c;共披露出在Oracle Weblogic中存在的6个高危漏洞。 漏洞描述 CVE-2023-22069&#xff1a;Oracle Weblogic 远程代码执行漏洞 Oracle WebLogic Server存在远程代码执行漏洞&#xff0c;该漏洞的CVS…