PCL智能指针疑云 <一>
2024-09-05 18:59:17
背景:
最近写了一个包,使用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> 类型,该错误立即消失。
具体错误原因不详!期待高手或前辈指点!
最新文章
- TypeScript中的枚举类型
- 【转】Linux中xargs的用法
- Cocos2d-x 开发手记
- hadoop2.0安装和配置
- oracle 数据库关闭的的几种方式总结
- HttpServletRequest 报错 myeclipese支持tomcat
- 改善C#公共程序类库质量的10种方法和工具
- Kafka Streams 剖析
- 【smart-transform】取自 Atom 的 babeljs/coffeescript/typescript 智能转 es5 库
- RTC实时时间系统学习笔记(一)---------------UART串口
- 【渗透攻防】深入了解Windows
- CPU监控 解题报告
- less/sass 基础base文件
- 经典排序js实现
- linux学习笔记-文件相关知识
- IdentityServer4目录
- 新加坡金融科技节 | 蚂蚁金服CTO程立:面向全球开放,与合作伙伴共赢
- 2016NOI冬令营day3
- Percona XtraDB Cluster 5.7
- 在多节点上运行分布式Intel Caffe