输入参数

  • 点云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长

前提

  1. 输入参数点云的极坐标的弧度是有序的(这里的有序不是说弧度是递增或者递减,而是说点是Lidar顺时针或者逆时针扫了一圈出来
  2. 不同弧度上的任意两点长度越接近,距离越近
  3. A和C之间区取余角,Lsin(余角)是A点距离CC'这条线最近距离

步骤

  1. 过滤原始数据的无效点

    a. 原始数据中长度为0(或者近似)的点标记为无效

    b. 原始数据中长度过长(超出Lidar扫描能里的点)标记为无效

    c. 使用滑窗(2cm),每次滑窗内的点合并成一个点(x和y取平均值)
  2. 找出点云A和点云B各自的最小弧度和最大弧度
  3. 排序点云(原始数据的有序请看前提1),排序结果为弧度递增
  4. 转换两个点云各自的迪达尔坐标
  5. 计算两个点云对应Lidar pose的差
  6. 根据Lidar pose的差,将点云B投影到点云A为C,算出C的笛卡尔坐标
  7. 建立点云A的大跳小跳表
  8. 算出点云A每弧度的点数量NumA
  9. 遍历点云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
  10. 找到最近点D之后,算出点D前一个点D1和后一个点D2分别距离点X的距离,距离更短的点就认为是距离点X第二最近的点

未完

一对多

最新文章

  1. iOS 开发之使用safari对webview进行调试
  2. MySQL服务器安装配置-非安装版、windows版
  3. sql(转自http://www.imooc.com/article/2325)
  4. sql条件中比较性能优化
  5. 玩转PowerShell第三节——【SCOM Maintenance Mode】-技术&amp;分享
  6. Angular数据双向绑定
  7. Jquery异步提交$.ajax的使用
  8. [转]Golang- import 导入包的语法
  9. [Everyday Mathematic]20150212 求 $(\cos x+2)(\sin x+1)$ 的最大值
  10. C语言中将数字转换为字符串的方法
  11. C#插入排序详解
  12. MyEclipse 搭建webservice (axis1.4)
  13. JS实现快排
  14. hancher57公众号突破3000人
  15. window下安装mysqldb模块(虚拟环境)
  16. android中include标签使用详解
  17. python爬虫requests 下载图片
  18. Bootstrap3 栅格系统-实例:多余的列(column)将另起一行排列
  19. Web API之基于H5客户端分段上传大文件
  20. 关于python 的http 日常操作

热门文章

  1. NO Oracle database,JUST USE Oracle client。远程导入导出dmp
  2. JavaScript中call如何使用?
  3. 面试问题之C++语言:面向对象的五个原则
  4. Zookeeper Watcher 机制 -- 数据变更通知 ?
  5. 记录md的偏好设置
  6. Vue报错之&quot; [Vue warn]: Unknown custom element: &lt;wzwzihello&gt; - did you register the component correctly? For recursive components, make sure to provide the &quot;name&quot; option.&quot;
  7. ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/run/mysqld/mysqld.sock&#39; (2 &quot;No such file or directory&quot;)
  8. 数字电路的多路复用(MUX)
  9. 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战
  10. video标签学习使用