plicp 点云迭代最近邻点配准法
输入参数
- 点云A的极坐标集合
- 点云A对应Lidar所在pose
- 点云B的极坐标集合
- 点云B对应Lidar所在pose
Features
- 根据两个点云的弧度关系确定找点的起始位置
- 根据两个点云的弧度关系设置找点的停止条件
- 算出被投影点云的大跳小跳表,根据大跳小跳表来遍历点云
大跳小跳表(假设点云A中间点为a点)
建立大跳小跳表的前提点云的弧度是递增的
理论上来说当点云A的所有点的弧度都一样,那么点云A中长度和b点长度相同的点,距离最近
a点一共有两个大跳表和两个小跳表:
| 序号比a点小的点 | 序号比a点小的点 | 序号比a点大的点 | 序号比a点大的点 | |
|---|---|---|---|---|
| 小跳表1(有序) | 大跳表1(有序) | 小跳表2(有序) | 大跳表2(有序) | |
| 长度比a短 | 长度比a长 | 长度比a短 | 长度比a长 |
前提
- 输入参数点云的极坐标的弧度是有序的(这里的有序不是说弧度是递增或者递减,而是说点是Lidar顺时针或者逆时针扫了一圈出来
- 不同弧度上的任意两点长度越接近,距离越近
- A和C之间区取余角,Lsin(余角)是A点距离CC'这条线最近距离
步骤
- 过滤原始数据的无效点
a. 原始数据中长度为0(或者近似)的点标记为无效
b. 原始数据中长度过长(超出Lidar扫描能里的点)标记为无效
c. 使用滑窗(2cm),每次滑窗内的点合并成一个点(x和y取平均值) - 找出点云A和点云B各自的最小弧度和最大弧度
- 排序点云(原始数据的有序请看前提1),排序结果为弧度递增
- 转换两个点云各自的迪达尔坐标
- 计算两个点云对应Lidar pose的差
- 根据Lidar pose的差,将点云B投影到点云A为C,算出C的笛卡尔坐标
- 建立点云A的大跳小跳表
- 算出点云A每弧度的点数量NumA
- 遍历点云C的每个点X
a. 算出X的极坐标
b. 算出X点弧度和点云A最小弧度的差值,然后乘以NumA,得到的结果cur_idx是遍历点云A的起始点序号
c. 如果保存了X的前一点在点云A最近点的序号last_beat_idx,那么X点就从last_beat_idx+1开始在点云A上找最近点,cur_idx=last_beat_idx+1
d. 从X点的分别向前向后查找最近点,每次遍历都保存目前找到的最近距离dist(根据大跳小跳表遍历)
e. 算出点云A任意一点a和X的弧度差raX,然后用X的长度做斜边,算出和X点弧度相差raX的点的距离best_dist(最近距离),一旦之前存在dist <= best_dist,那么就认为找到了最近点D - 找到最近点D之后,算出点D前一个点D1和后一个点D2分别距离点X的距离,距离更短的点就认为是距离点X第二最近的点

未完
一对多
plicp 点云迭代最近邻点配准法的更多相关文章
- 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...
- 【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)
版权声明:本文由张宁原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/126547001488207964 来源:腾云阁 ht ...
- MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根
MATLAB用二分法.不动点迭代法及Newton迭代(切线)法求非线性方程的根 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 ...
- 【腾讯云的1001种玩法】在腾讯云上创建您的SQL Cluster(5)
版权声明:本文由李斯达 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/97264001482830465 来源:腾云阁 h ...
- 【腾讯云的1001种玩法】腾讯云搭建DiscuzX论坛
版权声明:本文由艾可德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/506828001481866457 来源:腾云阁 h ...
- for循环语句以及迭代法和穷举法
循环语句: 四要素:初始条件,循环条件,状态改变,循环体 for(初始条件;循环条件;状态改变){ //循环体} 案例1:打印等腰直角三角形和菱形 左上三角 static void Main(stri ...
- 【腾讯云的1001种玩法】 Laravel 整合万向优图图片管理能力,打造高效图片处理服务
版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/574549001488234358 来源:腾云阁 h ...
- 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台
版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108597001488193402 来源:腾云阁 h ...
- 作业:for循环,迭代法和穷举法
for()循环 四要素:初始条件,循环条件,状态改变,循环体. 执行过程:初始条件--循环条件--循环体 ...
随机推荐
- Spring常用的注入方式有哪些?
Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 参考链接:Spring常用的三种注入方式
- Spring的@Enable*注解的工作原理
转自:https://blog.csdn.net/chengqiuming/article/details/81586948 一 列举几个@Enable*注解的功能 @EnableAspectJAut ...
- 错误问题之“Apache Log4j 漏洞,在版本为包含2.14以内!”
漏洞概述 Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器. Log4j 1.2 中包含一个 SocketServer 类,该类容易受到不可信数据反序列化的影响,当侦听 ...
- AD中PCB各层的含义
PCB的各层定义及描述: 1. Top Layer(顶层布线层):设计为顶层铜箔走线.如为单面板则没有该层. 2. Bottom Layer(底层布线层):设计为底层铜箔走线. 3. Top/Bott ...
- 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战
最近HTTP-over-QUIC 协议被正式命名为 HTTP/3,协议带来的最大改变是协议底层将采用UDP协议,而不再是TCP协议,这样的好处吗,就是更低时延,更好的拥塞控制,更精确的RTT时间,更高 ...
- 微信小程序开发:python+sanic 实现小程序登录注册
开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...
- ubantu系统之快捷键使用
1. 文件管理器中,目录切换为可以编辑的状态: ctrl + l 2. gedit 搜索 : ctrl + h
- 嵌入式框架iframe
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Android 接入腾讯IM即时通信(详细图文)
原文地址:Android 接入腾讯IM即时通信(详细图文) | Stars-One的杂货小窝 腾讯云IM官网文档上提供了带UI模块和不带UI模块的,本文是基于带UI模块进行了Module封装,可以方便 ...
- win11拖动窗口造成崩溃的问题
问题描述 拖动窗口,随机概率出现 屏幕闪烁 屏幕黑屏 屏幕瞬间分屏 解决方法 windowes11贴吧大神给的方案 1,按下 win键+R 输入 regedit 进入注册表,进入以下路径:计算机\HK ...