论文解读 | 基于改进点对特征的点云6D姿态估计
原创 | 文 BFT机器人
01 摘要
点对特征(PPF)方法已被证明是一种有效的杂波和遮挡下的姿态估计方法。
文章的改进方法主要包括:
(1)一种基于奇偶规则求解封闭几何的法向的方法;
(2)通过将体素网格划分为等效角度单元的有效降采样方法;
(3)基于拟合点的验证步骤。在真实杂波数据集上对该方法进行了评估,结果表明该方法在6D姿态估计方面比原PPF方法具有更好的性能和效率。
02 点对特征(PPF)方法是什么?
PPF方法是一种通过提取局部特征和投票匹配的方法对点云中自由曲面三维物体进行姿态估计的方法。
图1 点对特征方法
03 它是如何用于姿态估计的?
该算法的核心思想是从模型和场景的点对中提取由四个值组成的特征向量。这些特征描述了一对中两点之间的相对位置和方向,从而描述了局部视图中对象的表面形状。
总体而言,对象的所有点对所描述的局部特征构成了对象的全局特征。根据该方法的要求,一对中的两点不应该是交换的,即特征是不对称的。
04 改进的方法中的奇偶规则是什么?
本文提出的改进方法包括一种基于奇偶规则求解闭合几何法线方向的方法。奇偶规则是一种基于与曲面相交的边数奇偶性来确定曲面法线方向的方法。
具体来说,它包括计算与垂直于给定点的平面相交的边的数量,并使用此计数来确定法线是指向该点还是远离该点。该方法用于求解闭合几何体的法线方向,以提高6D姿态估计的性能和效率。
05 论文中如何提高6D姿态估计的性能和效率?
基于拟合点的验证步骤是改进的PPF方法中使用的一种方法,用于提高6D姿态估计的性能和效率。该步骤包括使用估计的姿势将模型拟合到场景,然后通过将其与原始点云进行比较来验证拟合。
该方法使用投票方案来确定最佳姿态估计,然后使用迭代最接近点(ICP)算法对其进行细化。这种方法通过减少误报和提高具有遮挡的杂乱场景的准确性来提高性能和效率。
06 论文原理
A. 预处理
1)正态估计
对于重构点云模型或多边形网格数据的输入数据,采用PCA算法计算法线。针对Zhao等人[1]也提到的PCA结果方向模糊的问题,提出了一种基于奇偶规则的光线投射方法,用于检测单位法向量的端点是否位于封闭几何模型内。
为此,检查从z轴方向的每个端点的射线与模型表面相交的次数。如果其中一条与奇数次相交,则根据拓扑学,法线应该在模型内部,应该倒转,如图2所示。对于场景云,所有法线可以直接统一指向视点。
f (i , j)为最外边框起始像素的图像强度。由于像素与点之间的对应关系,可以获得图像中所有分割片段的点云。
图2 射线铸造法的原理和效果。(a)偶数相交的法线(绿色)指向正方向,奇数相交的法线(红色)指向反方向。(b)不含光线投射法的PCA算法正态估计结果。(c)射线投射法PCA算法的正态估计结果。
2)下采样
首先采用RANSAC算法拟合表平面,丢弃平面下(视点对面)的点。然后分别在训练阶段和匹配阶段提出了分割体素网格的两种方法。在训练阶段,遵循Joel等人[2],对每个体素单元采用自下而上的分层聚类方法对法线夹角小于阈值的点进行聚类和平均。为了降低复杂度,考虑过滤掉元素较少的簇。然而,在匹配阶段,迭代和比较的过程可能会影响效率。为此,提出了一种角单元法,将整个球体的实体角平均划分为20个角单元。每个细胞由正二十面体的一个面法线表示(图4a)。对于体素单元中的每个点,比较其法线与20个代表性法线之间的角度,并考虑最小的一个作为它所属的角度单元(图4b)。这样大大降低了体素大小的影响,不再是影响算法效率的重要因素。
图3 一种在体素中对角度单元进行降采样的有效方法。(a) 20个angle cells除以一个正二十面体。每个cell由二十面体的面法线表示。(b)所有方向法线在球面上的投影。一个细胞中法线的投影用相同的颜色表示。
B. 配对及投票
由为了提高匹配效率,丢弃了非区分点对的特征。具体来说,如果点间距离和法线夹角都小于阈值,则对匹配的影响可能很小。设置阈值作为量化步长,可以滤除在量化过程中损失特征为零的对。Hinterstoisser等[3]提出,每个参考点的伴随点应在半径模型直径的球内,可以通过Kd-tree算法高效搜索。
然后,遵循Drost等提出的匹配方法和投票方案。在投票后,采用基于密度的带噪声应用空间聚类(DBSCAN)算法对场景参考点提出的姿态进行聚类,并根据投票的总和对它们进行排序。
C.后处理
聚类后,管道输出一组候选姿势,通过投票评估,前10%被接受为效率的妥协。根据Joel等提出的投影ICP思想,以假设姿态渲染模型点,并应用Z-buffer算法在场景视点下对模型云中的可见点进行裁剪。然后将高效的ICP算法应用于裁剪后的模型。然后,提出了基于拟合点的验证步骤。
使用Kd-tree算法寻找每个模型点最近的场景点,并考虑与最近场景点的距离在阈值内的模型点作为拟合点。如果拟合点占模型总点数的比例低于阈值,则模型被接受。最后,采用非最大抑制(NMS)算法对重叠姿态进行滤波。
D.实验效果
本文提出了一种改进的基于点对特征的点云6D姿态估计方法。该方法提出了一种PCA算法中封闭几何的法向解的方法,并引入了一种通过将体素网格划分为等效角度单元的高效采样方法。
最后,采用ICP的变体、基于拟合点的验证步骤和NMS算法进行细化和验证。实验结果表明,该方法具有较高的效率和鲁棒性,平均召回率为0.87。
图4 论文分割效果
标题:
6D Pose Estimation from Point Cloud Using an Improved Point Pair Features Method[C]
更多精彩内容请关注公众号:BFT机器人
本文为原创文章,版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。
相关文章:

论文解读 | 基于改进点对特征的点云6D姿态估计
原创 | 文 BFT机器人 01 摘要 点对特征(PPF)方法已被证明是一种有效的杂波和遮挡下的姿态估计方法。 文章的改进方法主要包括: (1)一种基于奇偶规则求解封闭几何的法向的方法; (2)通过将体素网格划分为等效角度单元的有效降采样方法; (3)基于拟合点的验证步骤。在真实杂波数据集…...
Shell脚本while循环语句应用
记录:433 场景:Shell脚本while循环语句应用。Shell脚本while循环语句应用。while do done、while : do done、while true do done。 版本:CentOS Linux release 7.9.2009。 1.while常用格式 1.1格式一:while do done while c…...

Kubernetes Dashboard + Ingress 及其 yaml 文件分析
概述 记录部署Dashboard Ingress的具体过程及其 yaml 文件分析 Dashboard Yaml # Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the Li…...

【SpringCloud组件——Nacos】
前置准备: 分别提供订单系统(OrderService)和用户系统(UserService)。订单系统主要负责订单相关信息的处理,用户系统主要负责用户相关信息的处理。 一、服务注册与发现 1.1、在父工程当中引入Nacos依赖 …...
pinia状态管理 用法
Pinia是一个用于vue的状态管理库,类似于vuex,是vue的另一种状态管理工具。 Pinia 是 Vue 的存储库,它允许跨组件/页面共享状态。实际上,Pinia就是Vuex的升级版,官网也说过,为了尊重原作者,所以取名pinia&am…...
Oracle客户端版本安装
一、版本准备 Oracle版本下载官网:Instant Client for Linux x86-64 (64-bit) | Oracle 中国 进入网站下载对应的oracle版本,通常环境所用的包有:basic、sdk、sdkplus三个包。包的类型分为rpm和zip包,均可以下载,当前…...

基于Android studio二手车交易系统app
客户端: 用户注册:通过输入用户名,密码,所在地,联系地址以及电话和电子邮件等信息进行用户信息的注册。 二手车查看:用户注册登录系统后,可以查看二手车的基本信息,通过二手车的品牌…...

【LCD应用编程】绘制点、线、矩形框
之前获取LCD屏幕参数信息时了解到,LCD屏是 FrameBuffer 设备,操作 FrameBuffer 设备 其实就是在读写 /dev/fb0 文件。除此之外,LCD屏上包含多个像素点,绘制点、线、矩形框本质是在修改这些像素点的颜色。 目录 1、定义 lcd_color…...

第八篇、基于Arduino uno,获取MAX30102心率传感器的心率信息——结果导向
0、结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的IR值,第二个值是实时的心跳,第三个值是平均心跳,如果是你想要的,可以接着往下看。 1、外观 说明:MAX30102心率传感器的外观如下…...

【MySQL】MySQL主从同步延迟原因与解决方案
文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题:3.2 MySql数据库从库同步其他问题及解决方案 一、MySQL数据库主从同步延迟产生的原因 MySQL的主从复制都是单线程的操作,…...

学C的第二十二天【深度剖析数据在内存中的存储:1. 数据类型介绍;2. 整型在内存中的存储】
相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期:学C的第二十一天【初阶测评讲解:1. 计算递归了几次;2. 判断 do while 循环执行了几次;3. 求输入的两个数的最小公倍数;4. 将一句话的单词进…...
测试计划模板一
测试计划 修订历史记录 版本 日期 AMD 修订者 说明 1.0 XXXX年XX月XX (A-添加,M-修改,D-删除) 目录 1. 简介.. 4 1. 1目的... 4 1. 2背景... 4...

【利用AI让知识体系化】5种创建型模式
文章目录 创建型模式简介工厂模式抽象工厂模式单例模式建造者模式原型模式 创建型模式 简介 创建型模式,顾名思义,是用来创建对象的模式。在软件开发中,对象的创建往往比一般的编程任务更为复杂,可能涉及到一些琐碎、复杂的过程…...
Unity的UnityStats: 属性详解与实用案例
UnityStats 属性详解 UnityStats 是 Unity 引擎提供的一个用于监测游戏性能的工具,它提供了一系列的属性值,可以帮助开发者解游戏的运行情况,从而进行优化。本文将详细介绍 UnityStats 的每个属性值,并提供多个使用例子帮助开发者…...

TDengine集群搭建
我这里用三台服务器搭建集群 1、如果搭建集群的物理节点上之前安装过TDengine先卸载清空,直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/log/taos rm -rf /etc/taos2、确保集群中所有主机开放端口 6030-6043/tcp,6060/tcp,…...
Android 12.0无源码apk设置默认启动Launcher的相关属性
1.概述 在12.0的系统产品开发中,对于一些产品的需求,需要将一些无源码app的某个MainActivity作为启动Launcher页面的功能实现,由于没有源码,所以需要 利用PMS的安装解析apk的AndroidManifest.xml的时候,在判断是某个Activity的时候,设置Lancher属性来实现某些功能 2.无源…...

js深拷贝和浅拷贝
👉十分钟学会 前端面试题 js 深拷贝与浅拷贝_前端深拷贝和浅拷贝面试题_Mar-30的博客-CSDN博客 目录 背景: 概念:核心是创建新地址 方法: 浅拷贝: Object.assign() 方法:Object.assign(拷贝的对象&am…...

CANopenNode Master 配置
文章目录 CANopenNode 简介CANopenNode 主栈SDO ClientPDO 通讯参数RPDO 通讯参数RPDO 通信参数设置实例TPDO 通讯参数TPDO 通信参数设置实例 PDO 映射参数RPDO 映射参数设置实例TPDO 映射参数设置实例 CANopenNode 简介 CANopenNode 是一个开源的免费的开源 CANopen 协议栈。…...

HW之轻量级内网资产探测漏洞扫描工具
简介 RGPScan是一款支持弱口令爆破的内网资产探测漏洞扫描工具,集成了Xray与Nuclei的Poc 工具定位 内网资产探测、通用漏洞扫描、弱口令爆破、端口转发、内网穿透、SOCK5 主机[IP&域名]存活检测,支持PING/ICMP模式 端口[IP&域名]服务扫描 网…...

算法练习-2:送外卖
n 个小区排成一列,编号为从 0 到 n-1 。一开始,美团外卖员在第0号小区,目标为位于第 n-1 个小区的配送站。 给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] ,在每个小区 i 里你有两种选择: 1) 选择a:向前 a[…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...