当前位置: 首页 > news >正文

论文解读 | 基于改进点对特征的点云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[…...

八股总结(六):Android基础:四大组件与UI控件

文章目录 Activity一个APP的启动过程基本概念总图zygote是什么?有什么作用?SystemServer是什么?有什么用,与zygote的关系是什么?为什么称为服务端对象?APP、AMS、zygote是三个独立的进程,他们之…...

【P46】JMeter 响应断言(Response Assertion)

文章目录 一、响应断言(Response Assertion) 参数说明二、准备工作三、测试计划设计3.1、包括3.2、匹配3.3、相等3.4、字符串3.5、字符串3.6、或者 一、响应断言(Response Assertion) 参数说明 可以对 Jmeter 取样器的响应消息进…...

19-02 基于业务量级的架构技术选型演进

从零开始——单服务应用 单体应用技术选型 (GitHub、Gitee…)搜索是否有线程的产品用最熟悉的技术,最快的速度上线如果有经费:考虑商业化解决方案 个人小程序怎么做技术选型的 搜索是否有快速搭建下程序的软件技术选型 后端技…...

Server - 高性能的 PyTorch 训练环境配置 (PyTorch3D 和 FairScale)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130863537 PyTorch3D 是基于 PyTorch 的 3D 数据深度学习库,提供了高效、模块化和可微分的组件,以简化 3D 深度学…...

小猫踩球-第14届蓝桥杯省赛Scratch中级组真题第2题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第137讲。 小猫踩球,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第2题&#xf…...

嵌入式开发从入门到精通之第二十一节:三轴加速度传感器(BMA250E)

目录 1、工作模式 2、中断支持的模式 2.1 新数据的产生 2.2 任何斜率的变化的监测...

代码随想录算法训练营第三十六天|435. 无重叠区间 763.划分字母区间 56. 合并区间

目录 LeeCode 435. 无重叠区间 LeeCode 763.划分字母区间 LeeCode 56. 合并区间 LeeCode 435. 无重叠区间 435. 无重叠区间 - 力扣(LeetCode) 思路1:按照右边界排序,从左向右记录非交叉区间的个数。最后用区间总数减去非交叉…...

shell 脚本

Shell概述 shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核 脚本入门 脚本格式 脚本以#!/bin/bash开头(指定解析器) helloworld # 创建脚本 [linuxlocalhost datas]$ cat helloworld.sh #!/bin/bas…...

Linux :: 【基础指令篇 :: 用户管理(补充):(4)】::用户切换

前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C 入门到入土!!!学习合集Linux 从命令到网络再到内核!学习合集 目录索引&am…...

打印机无法扫描的原因及解决方法

在家庭和办公环境中,打印机已成为不可或缺的设备。它不仅可以打印文件,还可以扫描文档并将它们转换为数字数据。但有时,打印机可能无法扫描文档或图片。以下是可能导致这些问题的原因和解决方法。 出现打印机无法扫描的原因: 1.…...