博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++指针引发的巨大谜题
阅读量:5260 次
发布时间:2019-06-14

本文共 643 字,大约阅读时间需要 2 分钟。

背景

最近写了一个包,使用ndt算法拼接点云,构建三维壁面环境的点云地图。

设计一个lidar类,表征激光雷达。可以获取点云数据并存储到容器 std::vector<PointCloudPtr> 。

设计一个RegistrationWithNDTandGICP类,表征基于ndt_icp的slam方案。该类中有一个lidar类的成员,该成员可以获取点云数据,然后计算激光里程计,拼接地图。

创建一个lidar的对象,lidar;创建一个RegistrationWithNDTandGICP类的对象,ndt;

 

问题描述

lidar获取点云后,以指针(shared_ptr)的形式存放在容器中,之后ndt从容器中逐个取出点云指针,计算里程计。

在lidar中,每次把点云指针存入容器之前,将点云的部分点坐标数据打印出来;

在ndt中,每次把点云指针从容器中取出后,将点云的部分点坐标数据打印出来;

对比发现,点的坐标数据发生了变化!

进一步检查。

在lidar中,每次把点云指针存入容器之前,输出点云的大小和指针地址;

在lidar中,每次把点云指针从容器中取出后,输出点云的大小和指针地址;

对比发现,上述两个变量的值完全一样!

 

解决方案

把容器改为 std::vector<PointCloudType> 类型,该错误立即消失。

 

具体错误原因不详!期待高手或前辈指点!

 

转载于:https://www.cnblogs.com/gdut-gordon/p/10952475.html

你可能感兴趣的文章
用原生JS获取非行间样式
查看>>
toolbox类
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
爬虫学习笔记(一)初识爬虫
查看>>
生成随机数的模板
查看>>
SpringMVC文件上传
查看>>
hdu 2093
查看>>
纸上谈兵: 树, 二叉树, 二叉搜索树[转]
查看>>
Mysql 数据库操作
查看>>
SQL表中的自连接定义与用法示例
查看>>
hdu 1032 The 3n + 1 problem
查看>>
static关键字
查看>>
转:linux终端常用快捷键
查看>>
009.栈实现队列
查看>>
A-Softmax的总结及与L-Softmax的对比——SphereFace
查看>>
关于软件盘覆盖住布局
查看>>
Unity3D 控制物体移动、旋转、缩放
查看>>