一起做RGB-D SLAM (5)学习心得
程序员文章站
2024-02-26 17:02:34
...
在运行示例代码时出现了如下错误:
error: ‘transformPointCloud’ is not a member of ‘pcl’
pcl::transformPointCloud(*original, *output, T.matrix());
^
/home/exbot/catkin_ws/src/slam/src/slamBase.cpp:178:8: error: ‘VoxelGrid’ in namespace ‘pcl’ does not name a type
static pcl::VoxelGrid<PointT> voxel;
^
/home/exbot/catkin_ws/src/slam/src/slamBase.cpp:181:1: error: ‘voxel’ was not declared in this scope
voxel.setLeafSize(gridsize, gridsize, gridsize);
^
make[2]: *** [src/CMakeFiles/slambase.dir/slamBase.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/slambase.dir/all] Error 2
make: *** [all] Error 2
出现该错误的原因是没有添加相应的头文件,只需在slamBase.h中增加下列头文件即可:
#include <pcl/common/transforms.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/filters/voxel_grid.h>
在编译的过程中出现了如下错误:
../../lib/libslambase.a(slamBase.cpp.o):(.rodata._ZTVN3pcl9VoxelGridINS_12PointXYZRGBAEEE[_ZTVN3pcl9VoxelGridINS_12PointXYZRGBAEEE]+0x48):对‘pcl::VoxelGrid<pcl::PointXYZRGBA>::applyFilter(pcl::PointCloud<pcl::PointXYZRGBA>&)’未定义的引用
collect2: error: ld returned 1 exit status
make[2]: *** [../bin/visualOdometry] 错误 1
make[1]: *** [src/CMakeFiles/visualOdometry.dir/all] 错误 2
make: *** [all] 错误 2
解决方案:找了很久我还是不知道为什么会出现这个错误,但是我把include目录下的slamBase.h、slam目录下的parameters.txt、src目录下的slamBase.cpp和visualOdometry.cpp替换为一起做RGB-D SLAM (5)源代码中相应的内容时,编译就成功了。
注:需要修改一下data的目录,修改为 /home/exbot/catkin_ws/src/slam/data即可(其中用户名替换为自己的用户名)。
最后附上最终运行结果: