PCL智能指針疑雲 <一>

背景算法

最近寫了一個包,使用ndt算法拼接點雲,構建三維壁面環境的點雲地圖。spa

設計一個lidar類,表徵激光雷達。能夠獲取點雲數據並存儲到容器 std::vector<PointCloudPtr> 。設計

設計一個RegistrationWithNDTandGICP類,表徵基於ndt_icp的slam方案。該類中有一個lidar類的成員,該成員能夠獲取點雲數據,而後計算激光里程計,拼接地圖。指針

建立一個lidar的對象,lidar;建立一個RegistrationWithNDTandGICP類的對象,ndt;code

 

問題描述對象

lidar獲取點雲後,以指針(shared_ptr)的形式存放在容器中,以後ndt從容器中逐個取出點雲指針,計算里程計。blog

在lidar中,每次把點雲指針存入容器以前,將點雲的部分點座標數據打印出來;it

在ndt中,每次把點雲指針從容器中取出後,將點雲的部分點座標數據打印出來;io

對比發現,點的座標數據發生了變化!class

進一步檢查。

在lidar中,每次把點雲指針存入容器以前,輸出點雲的大小和指針地址;

在lidar中,每次把點雲指針從容器中取出後,輸出點雲的大小和指針地址;

對比發現,上述兩個變量的值徹底同樣!

 

解決方案

把容器改成 std::vector<PointCloudType> 類型,該錯誤當即消失。

 

具體錯誤緣由不詳!期待高手或前輩指點!

相關文章
相關標籤/搜索