1. 程式人生 > >PCL點雲處理BUG記錄及分析

PCL點雲處理BUG記錄及分析

1) PCL_ROS 其實引用了PCL庫,不要隨意編譯PCL庫,可能導致PCL-ROS不能使用!

2) PCL自動安裝的時候與C11不相容,如果想使用C11,需要自己編譯PCL庫,並在PCL編譯之前的CMakelist.txt中加入C11的編譯項!

不過編譯的過程中PCL-ROS也混亂了,所以我選擇了放棄C11!手動哭臉!

3) Realsense點雲原始資料點雲太多,640*480左右個點,其中有一些噪點,嚴重影響了精度,使用StatisticalOutlierRemoval進行移除。

但是速度太慢,基本1Hz的速度(還算快的),所以我之前先使用VoxelGrid對其進行降取樣,降到了1700+個點,最後的速率達到15hz以上,滿足了要求。效果見圖!



4)報錯:Assertion`px!=0'failed

這是因為指標沒有初始化。一定要改成如下:

boost::shared_ptr<pclPointCloudXYZ> pCloud( new pcl::PointCloud<pcl::PointXYZ> );

5)報錯:
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
這是因為程序的互斥鎖導致資源衝突,肯定是在某個變數正在寫入的時候被讀取了。

在我的程式碼裡是因為一個全域性變數在callback函式裡被改寫,在main_loop被讀取了,所以要加入一個互斥鎖,並在main_loop讀取的時候做一個本地複製。

bool depth_lock = false;
Mat depth_cur(depth.rows,depth.cols,depth.type(),cv::Scalar(0));
depth.copyTo(depth_cur);

6)報錯:C++11和pcl/registration/下的幾個庫不相容,程式段錯誤

解決方法:將debug模式改成release模式

-DCMAKE_BUILD_TYPE=Debug

改成

-DCMAKE_BUILD_TYPE=Release


相關推薦

PCL處理BUG記錄分析

1) PCL_ROS 其實引用了PCL庫,不要隨意編譯PCL庫,可能導致PCL-ROS不能使用! 2) PCL自動安裝的時候與C11不相容,如果想使用C11,需要自己編譯PCL庫,並在PCL編譯之前的CMakelist.txt中加入C11的編譯項! 不過編譯的過程中PCL

PCL處理視覺化——法向顯示錯誤“no override found for vtk actor”解決方法

一、環境 Win10 X64 VS2015 PCL1.8.0AllinOne 二、程式碼 #include "stdafx.h" #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #inc

pcl處理之pca演算法

2018年11月08日 19:10:20 weixin_41825780 閱讀數:2 標籤: pcl

ROS PCL 處理學習之二 Downsampling a PointCloud using a VoxelGrid filter

mkdir test2 cd test2 touch voxel_grid.cpp gedit voxel_grid.cpp #include <iostream> #include <pcl/io/pcd_io.h> #include <

Ubuntu16.04下PCL庫的安裝使用demo

必備元件安裝PCL點雲庫安裝sudo apt install libpcl-dev注意:如果在Ubuntu14.04下安裝的是libpcl-all,一般情況下在Ubuntu的軟體倉庫裡首選帶dev字尾的和什麼字尾都不帶的庫版本。這裡安裝的是PCL1.7版本最終安裝到的路

PCL—關鍵點檢測(rangeImage)低層次處理

數據結構 關系 n-1 -a 平面 邊緣提取 bubuko 數據 方式 博客轉載自:http://www.cnblogs.com/ironstark/p/5046479.html 關鍵點又稱為感興趣的點,是低層次視覺通往高層次視覺的捷徑,抑或是高層次感知對低層次處理手段的妥

pcl:三維模型obj格式轉成pcl常用處理格式.pcd+matlab:.ply.pcd+其他.stl,.obj,.ply等三維格式互相轉化方法

①程式碼: #include <pcl/io/io.h> #include <pcl/io/pcd_io.h> #include <pcl/io/obj_io.h>

PCL庫介紹專案配置

關於PCL點雲庫,大家百度的時候可以找到很多相關的介紹,反正一堆專業性概念,相關的技術層面以及一些強大的應用敘述云云,不過關於這些小編實在不感冒,能先把這個工具好好用起來再說吧。關於PCL相關的論壇及專業問題討論,大家需要的可以在中國PCL線上論壇中進行討論與學習資源的下載

PCL庫學習&VS2010(X64)》Part 22 鐳射雷達資料處理相關演算法庫收集

2.Point Cloud Library (PCL) 是一個獨立的大型的處理二維/三維影象和點雲資料的開源工程,由Willow Garage公司開發,起初只是以PR2機器人在3D資料感知演算法處理上速度更快為目標,後來才漸漸發展為一個獨立的函式庫。PCL包含了許多先進演算法,比如濾波,特徵估計,表面重建,

CT三維重建三維視覺化資料:opengl+VTK+PCL

自己做過邊緣輪廓三維重建方面的工作,今天看到一篇CT三維重建的介紹性質的文章挺感興趣的,附錄一下: CT三維重建主要有六種基本後處理方法 多層面重建(MPR) 最大密度投影(MIP) 表面陰影遮蓋(SSD) 容積漫遊技術(VRT)

PCL分割(最小割算法)

number 作用 早就 有效 好的 介紹 不同的 優勢 bsp 1.點雲分割的精度   在之前的兩個章節裏介紹了基於采樣一致的點雲分割和基於臨近搜索的點雲分割算法。基於采樣一致的點雲分割算法顯然是意識流的,它只能割出大概的點雲(可能是杯子的一部分,但杯把兒肯定沒分割出來)

處理中的一些後續問題。

一些事 才會 class 識別 空格 div 距離 出現 問題 1.在對點雲處理的步驟中,對深度沒有值的地方,對點的處理方法大部分是均為0。某些時候會出現問題,需要對這部分進行操作。(設置一個最遠的值,為了可以去掉障礙物,去不掉原因可能是 在障礙物所在的地方,在設置的最遠

PCL庫:ICP演算法

轉自:https://www.cnblogs.com/21207-iHome/p/6034462.html  ICP(Iterative Closest Point迭代最近點)演算法是一種點集對點集配準方法。在VTK、PCL、MRPT、MeshLab等C++庫或軟體中都有實現,可以參見維基百科中

WIN10環境VS2015+PCL庫安裝

新專案需要進行點雲資料處理,在WIN10環境安裝了VS2015和PCL1.8點雲庫,原先嚐試編譯原始碼安裝,過程中出現許多問題,間隔好久都難以解決。之後使用安裝包安裝,親測可用。 安裝過程主要包括:一、

PCL曲面重建(1)

實驗結果     (3)無序點雲的快速三角化 使用貪婪投影三角化演算法對有向點雲進行三角化, 具體方法是: (1)先將有向點雲投影到某一區域性二維座標平面內 (2)在座標平面內進行平面內的三角化 (3)根據平面內三位點的拓撲連線關係獲得一個三角網格曲面模型.

PCL庫】Win10+VS2015+PCL1.8.1配置

最近需要用到點雲庫,所以需要配置PCL,看了網上寫的一些教程,寫的都還可以,但是都有一些問題,所以本人在參考其他博主教程的基礎上加以改進儘量將配置過程講的仔細一點,本人也是從小白過來的,所以理解萬歲,當然也要感謝下列博主的經驗,站在巨人的肩膀上令我少走很多彎路,廢話不多說。

PCL統計濾波

對每個點的鄰域進行一個統計分析,並修剪掉一些不符合一定標準的點,稀疏離群點移除方法基於在輸入資料中對點到臨近點的距離分佈的計算,對每一個點,計算它到它的所有臨近點的平均距離,假設得到的結果是一個高斯分佈

pcl的濾波與特徵學習筆記

參考連結: 點雲資料時不可避免的存在噪聲,或者離群點(離主體點雲即被測物體點雲較遠的離散點)。 濾波是點雲資料處理流程中的第一步,往往對後續處理管道影響很大,只有在濾波預處理中將噪聲點、離群點、孔洞、資料壓縮等按照後續處理定製,才能夠更好的進行配準、特徵提取、曲面

概念與處理

點雲概念 點雲與三維影象的關係:三維影象是一種特殊的資訊表達形式,其特徵是表達的空間中三個維度的資料,表現形式包括:深度圖(以灰度表達物體與相機的距離),幾何模型(由CAD軟體建立),點雲模型(所有逆向工程裝置都將物體取樣成點雲)。和二維影象相比,三維影象藉助第三個維度的資訊,可以實現天

ros/pcl 分割——分離地面

程式碼  #include <ros/ros.h> // PCL specific includes #include <sensor_msgs/PointCloud2.h> #include <pcl_conversions/pcl_conv