调试SLAM14讲中点云拼接遇到的问题及解决方法

这段时间在学习《视觉SLAM14讲》中的内容。在第5讲中有关于点云拼接的实践,打算自己敲代码实现一遍。在这个过程中出现过一些状况,记录下来,希望能和出现同样问题的朋友一起探讨。

问题1.安装点云库PCL.
网上有各种教程,什么下载下来,cmake,make,然后install之类的啊,但是make的速度实在是有点慢。然后我发现这个博主写的是非常好啊(原文),其实并不需要这么复杂去编译安装。直接输入以下命令就可以了

sudo apt-get install libpcl-dev

这是一编译好的点云库PCL1.7,并且附带了各类依赖的库。install之后,可以在/usr/include/pcl-1.7下,看到pcl的头文件。

问题2.CMakeLists.txt的问题
书中给出了关键几行代码,现在贴出所有代码。

cmake_minimum_required(VERSION 2.6)
project(cloud)
set( CMAKE_BUILD_TYPE Release )
set( CMAKE_CXX_FLAGS "-std=c++11")

#包含opencv库
find_package( OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS})

#包含eigen库
find_package( Eigen3 REQUIRED)
include_directories( ${Eigen3_INCLUDE_DIRS})

#包含pcl库
find_package( PCL REQUIRED COMPONENT common io)
include_directories( ${PCL_INCLUDE_DIRS})
add_definitions( ${PCL_DEFINITIONS})

add_executable(cloud main.cpp)

target_link_libraries( cloud ${OpenCV_LIBS} ${PCL_LIBRARIES})

install(TARGETS cloud RUNTIME DESTINATION bin)

我当时比较傻,忘了link PCL的libraries了,导致无法找到pcl对应的头文件。所以这部分仔细一点就没问题了。

问题3.源码部分
源码部分使用了boost::format来设置图片文件的格式

boost::format fmt( "./%s/%d.%s" ); //图像文件格式
colorImgs.push_back(imread( (fmt%"color"%(i+1)%"png").str() ));
depthImgs.push_back(imread( (fmt%"depth"%(i+1)%"pgm").str(), -1 )); // 使用-1读取原始图像

其中( “./%s/%d.%s”),./ 代表当前目录下 %s和%d就是字符串和int了,在imread的时候,fmt%“color”%(i+1)%"png"的意思就是:当前目录下的color下的第i+1张png图。所以说,从作者博客下下来的RGB图和depth图分别要放在源码那个目录的color和depth文件夹中。如果没有放在这两个文件夹中,在使用boost::format的时候可以写绝对路径,而不用./当前路径下。

你可能感兴趣的:(SLAM)